[
  {
    "path": ".gitignore",
    "content": "﻿## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore\n\n# User-specific files\n*.rsuser\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Mono auto generated files\nmono_crash.*\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\n[Ww][Ii][Nn]32/\n[Aa][Rr][Mm]/\n[Aa][Rr][Mm]64/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n[Ll]ogs/\n\n# Visual Studio 2015/2017 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUnit\n*.VisualState.xml\nTestResult.xml\nnunit-*.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n# ASP.NET Scaffolding\nScaffoldingReadMe.txt\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_h.h\n*.ilk\n*.meta\n*.obj\n*.iobj\n*.pch\n*.pdb\n*.ipdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*_wpftmp.csproj\n*.log\n*.tlog\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# Visual Studio Trace Files\n*.e2e\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover/*\n!.axoCover/settings.json\n\n# Coverlet is a free, cross platform Code Coverage Tool\ncoverage*.json\ncoverage*.xml\ncoverage*.info\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# Note: Comment the next line if you want to checkin your web deploy settings,\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# NuGet Symbol Packages\n*.snupkg\n# The packages folder can be ignored because of Package Restore\n**/[Pp]ackages/*\n# except build/, which is used as an MSBuild target.\n!**/[Pp]ackages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/[Pp]ackages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n*.appx\n*.appxbundle\n*.appxupload\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!?*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Including strong name files can present a security risk\n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\n#*.snk\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\nServiceFabricBackup/\n*.rptproj.bak\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n*.rptproj.rsuser\n*- [Bb]ackup.rdl\n*- [Bb]ackup ([0-9]).rdl\n*- [Bb]ackup ([0-9][0-9]).rdl\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio 6 auto-generated project file (contains which files were open etc.)\n*.vbp\n\n# Visual Studio 6 workspace and project file (working project files containing files to include in project)\n*.dsw\n*.dsp\n\n# Visual Studio 6 technical files\n*.ncb\n*.aps\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# CodeRush personal settings\n.cr/personal\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Tabs Studio\n*.tss\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n# OpenCover UI analysis results\nOpenCover/\n\n# Azure Stream Analytics local run output\nASALocalRun/\n\n# MSBuild Binary and Structured Log\n*.binlog\n\n# NVidia Nsight GPU debugger configuration file\n*.nvuser\n\n# MFractors (Xamarin productivity tool) working folder\n.mfractor/\n\n# Local History for Visual Studio\n.localhistory/\n\n# Visual Studio History (VSHistory) files\n.vshistory/\n\n# BeatPulse healthcheck temp database\nhealthchecksdb\n\n# Backup folder for Package Reference Convert tool in Visual Studio 2017\nMigrationBackup/\n\n# Ionide (cross platform F# VS Code tools) working folder\n.ionide/\n\n# Fody - auto-generated XML schema\nFodyWeavers.xsd\n\n# VS Code files for those working on multiple tools\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n*.code-workspace\n\n# Local History for Visual Studio Code\n.history/\n\n# Windows Installer files from build outputs\n*.cab\n*.msi\n*.msix\n*.msm\n*.msp\n\n# JetBrains Rider\n*.sln.iml"
  },
  {
    "path": "README.md",
    "content": "# RunGroops\n\nRungroops is an online platform for runners. This platform will help you to find clubs, schedule events, and meet other runners in your area. \n\n<kbd>![image](https://user-images.githubusercontent.com/65626254/173340999-a994fe15-b182-4692-8708-e74321ea55ac.png)</kbd>\n\n\n## 🏃 Getting Started\n[Youtube video on how to get database setup](https://www.youtube.com/watch?v=af_tK9LUiX0)\n\n1. Go into directory where you plan on keeping project and run.\n\n```bash\n  git fork https://github.com/teddysmithdev/RunGroop.git\n```\n\n2. Create a local database. (If you are unsure how to do this, watch my Youtube video )\n\n\n3. Add connection string to app settings.json. It will look something like this:\n```bash\n  Data Source=DESKTOP-EI2TOGP\\\\SQLEXPRESS;Initial Catalog=RunGroops;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False\n```\n4. Register for a [Cloudinary Account](https://cloudinary.com/users/register/free) (%100 free) and add Cloudname, ApiKey, and Api secret to appsettings.json.\n"
  },
  {
    "path": "RunGroopWebApp/ClaimsPrincipalExtensions.cs",
    "content": "﻿using System.Security.Claims;\n\nnamespace RunGroopWebApp\n{\n    public static class ClaimsPrincipalExtensions\n    {\n        public static string GetUserId(this ClaimsPrincipal user)\n        {\n            return user.FindFirst(ClaimTypes.NameIdentifier).Value;\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Controllers/AccountController.cs",
    "content": "﻿using Microsoft.AspNetCore.Identity;\nusing Microsoft.AspNetCore.Mvc;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.ViewModels;\n\nnamespace RunGroopWebApp.Controllers\n{\n    public class AccountController : Controller\n    {\n        private readonly UserManager<AppUser> _userManager;\n        private readonly SignInManager<AppUser> _signInManager;\n        private readonly ApplicationDbContext _context;\n        private readonly ILocationService _locationService;\n\n        public AccountController(UserManager<AppUser> userManager, \n            SignInManager<AppUser> signInManager, \n            ApplicationDbContext context,\n            ILocationService locationService)\n        {\n            _context = context;\n            _locationService = locationService;\n            _signInManager = signInManager;\n            _userManager = userManager;\n        }\n\n        [HttpGet]\n        public IActionResult Login()\n        {\n            var response = new LoginViewModel();\n            return View(response);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Login(LoginViewModel loginViewModel)\n        {\n            if (!ModelState.IsValid) return View(loginViewModel);\n\n            var user = await _userManager.FindByEmailAsync(loginViewModel.EmailAddress);\n\n            if (user != null)\n            {\n                //User is found, check password\n                var passwordCheck = await _userManager.CheckPasswordAsync(user, loginViewModel.Password);\n                if (passwordCheck)\n                {\n                    //Password correct, sign in\n                    var result = await _signInManager.PasswordSignInAsync(user, loginViewModel.Password, false, false);\n                    if (result.Succeeded)\n                    {\n                        return RedirectToAction(\"Index\", \"Race\");\n                    }\n                }\n                //Password is incorrect\n                TempData[\"Error\"] = \"Wrong credentials. Please try again\";\n                return View(loginViewModel);\n            }\n            //User not found\n            TempData[\"Error\"] = \"Wrong credentials. Please try again\";\n            return View(loginViewModel);\n        }\n\n        [HttpGet]\n        public IActionResult Register()\n        {\n            var response = new RegisterViewModel();\n            return View(response);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Register(RegisterViewModel registerViewModel)\n        {\n            if (!ModelState.IsValid) return View(registerViewModel);\n\n            var user = await _userManager.FindByEmailAsync(registerViewModel.EmailAddress);\n            if (user != null)\n            {\n                TempData[\"Error\"] = \"This email address is already in use\";\n                return View(registerViewModel);\n            }\n\n            var newUser = new AppUser()\n            {\n                Email = registerViewModel.EmailAddress,\n                UserName = registerViewModel.EmailAddress\n            };\n            var newUserResponse = await _userManager.CreateAsync(newUser, registerViewModel.Password);\n\n            if (newUserResponse.Succeeded)\n                await _userManager.AddToRoleAsync(newUser, UserRoles.User);\n\n            return RedirectToAction(\"Index\", \"Race\");\n        }\n\n        [HttpGet]\n        public async Task<IActionResult> Logout()\n        {\n            await _signInManager.SignOutAsync();\n            return RedirectToAction(\"Index\", \"Race\");\n        }\n\n        [HttpGet]\n        [Route(\"Account/Welcome\")]\n        public async Task<IActionResult> Welcome(int page = 0)\n        {\n            if(page == 0)\n            {\n                return View();\n            }\n            return View();\n            \n        }\n\n        [HttpGet]\n        public async Task<IActionResult> GetLocation(string location)\n        {\n            if(location == null)\n            {\n                return Json(\"Not found\");\n            }\n            var locationResult = await _locationService.GetLocationSearch(location);\n            return Json(locationResult);\n        }\n\n\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Controllers/ClubController.cs",
    "content": "﻿using Microsoft.AspNetCore.Mvc;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Helpers;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.ViewModels;\n\nnamespace RunGroopWebApp.Controllers\n{\n    public class ClubController : Controller\n    {\n        private readonly IClubRepository _clubRepository;\n        private readonly IPhotoService _photoService;\n\n        public ClubController(IClubRepository clubRepository, IPhotoService photoService)\n        {\n            _clubRepository = clubRepository;\n            _photoService = photoService;\n        }\n\n        [HttpGet]\n        [Route(\"RunningClubs\")]\n        public async Task<IActionResult> Index(int category = -1, int page = 1, int pageSize = 6)\n        {\n            if (page < 1 || pageSize < 1)\n            {\n                return NotFound();\n            }\n\n            // if category is -1 (All) dont filter else filter by selected category\n            var clubs = category switch\n            {\n                -1 => await _clubRepository.GetSliceAsync((page - 1) * pageSize, pageSize),\n                _ => await _clubRepository.GetClubsByCategoryAndSliceAsync((ClubCategory)category, (page - 1) * pageSize, pageSize),\n            };\n\n            var count = category switch\n            {\n                -1 => await _clubRepository.GetCountAsync(),\n                _ => await _clubRepository.GetCountByCategoryAsync((ClubCategory)category),\n            };\n\n            var clubViewModel = new IndexClubViewModel\n            {\n                Clubs = clubs,\n                Page = page,\n                PageSize = pageSize,\n                TotalClubs = count,\n                TotalPages = (int)Math.Ceiling(count / (double)pageSize),\n                Category = category,\n            };\n\n            return View(clubViewModel);\n        }\n\n        [HttpGet]\n        [Route(\"RunningClubs/{state}\")]\n        public async Task<IActionResult> ListClubsByState(string state)\n        {\n            var clubs = await _clubRepository.GetClubsByState(StateConverter.GetStateByName(state).ToString());\n            var clubVM = new ListClubByStateViewModel()\n            {\n                Clubs = clubs\n            };\n            if (clubs.Count() == 0)\n            {\n                clubVM.NoClubWarning = true;\n            }\n            else\n            {\n                clubVM.State = state;\n            }\n            return View(clubVM);\n        }\n\n        [HttpGet]\n        [Route(\"RunningClubs/{city}/{state}\")]\n        public async Task<IActionResult> ListClubsByCity(string city, string state)\n        {\n            var clubs = await _clubRepository.GetClubByCity(city);\n            var clubVM = new ListClubByCityViewModel()\n            {\n                Clubs = clubs\n            };\n            if (clubs.Count() == 0)\n            {\n                clubVM.NoClubWarning = true;\n            }\n            else\n            {\n                clubVM.State = state;\n                clubVM.City = city;\n            }\n            return View(clubVM);\n        }\n\n        [HttpGet]\n        [Route(\"club/{runningClub}/{id}\")]\n        public async Task<IActionResult> DetailClub(int id, string runningClub)\n        {\n            var club = await _clubRepository.GetByIdAsync(id);\n\n            return club == null ? NotFound() : View(club);\n        }\n\n        [HttpGet]\n        [Route(\"RunningClubs/State\")]\n        public async Task<IActionResult> RunningClubsByStateDirectory()\n        {\n            var states = await _clubRepository.GetAllStates();\n            var clubVM = new RunningClubByState()\n            {\n                States = states\n            };\n\n            return states == null ? NotFound() : View(clubVM);\n        }\n\n        [HttpGet]\n        [Route(\"RunningClubs/State/City\")]\n        public async Task<IActionResult> RunningClubsByStateForCityDirectory()\n        {\n            var states = await _clubRepository.GetAllStates();\n            var clubVM = new RunningClubByState()\n            {\n                States = states\n            };\n\n            return states == null ? NotFound() : View(clubVM);\n        }\n\n        [HttpGet]\n        [Route(\"RunningClubs/{state}/City\")]\n        public async Task<IActionResult> RunningClubsByCityDirectory(string state)\n        {\n            var cities = await _clubRepository.GetAllCitiesByState(StateConverter.GetStateByName(state).ToString());\n            var clubVM = new RunningClubByCity()\n            {\n                Cities = cities\n            };\n\n            return cities == null ? NotFound() : View(clubVM);\n        }\n\n        [HttpGet]\n        public IActionResult Create()\n        {\n            var curUserId = HttpContext.User.GetUserId();\n            var createClubViewModel = new CreateClubViewModel { AppUserId = curUserId };\n            return View(createClubViewModel);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Create(CreateClubViewModel clubVM)\n        {\n            if (ModelState.IsValid)\n            {\n                var result = await _photoService.AddPhotoAsync(clubVM.Image);\n\n                var club = new Club\n                {\n                    Title = clubVM.Title,\n                    Description = clubVM.Description,\n                    Image = result.Url.ToString(),\n                    ClubCategory = clubVM.ClubCategory,\n                    AppUserId = clubVM.AppUserId,\n                    Address = new Address\n                    {\n                        Street = clubVM.Address.Street,\n                        City = clubVM.Address.City,\n                        State = clubVM.Address.State,\n                    }\n                };\n                _clubRepository.Add(club);\n                return RedirectToAction(\"Index\");\n            }\n            else\n            {\n                ModelState.AddModelError(\"\", \"Photo upload failed\");\n            }\n\n            return View(clubVM);\n        }\n\n        [HttpGet]\n        public async Task<IActionResult> Edit(int id)\n        {\n            var club = await _clubRepository.GetByIdAsync(id);\n            if (club == null) return View(\"Error\");\n            var clubVM = new EditClubViewModel\n            {\n                Title = club.Title,\n                Description = club.Description,\n                AddressId = club.AddressId,\n                Address = club.Address,\n                URL = club.Image,\n                ClubCategory = club.ClubCategory\n            };\n            return View(clubVM);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Edit(int id, EditClubViewModel clubVM)\n        {\n            if (!ModelState.IsValid)\n            {\n                ModelState.AddModelError(\"\", \"Failed to edit club\");\n                return View(\"Edit\", clubVM);\n            }\n\n            var userClub = await _clubRepository.GetByIdAsyncNoTracking(id);\n\n            if (userClub == null)\n            {\n                return View(\"Error\");\n            }\n\n            var photoResult = await _photoService.AddPhotoAsync(clubVM.Image);\n\n            if (photoResult.Error != null)\n            {\n                ModelState.AddModelError(\"Image\", \"Photo upload failed\");\n                return View(clubVM);\n            }\n\n            if (!string.IsNullOrEmpty(userClub.Image))\n            {\n                _ = _photoService.DeletePhotoAsync(userClub.Image);\n            }\n\n            var club = new Club\n            {\n                Id = id,\n                Title = clubVM.Title,\n                Description = clubVM.Description,\n                Image = photoResult.Url.ToString(),\n                AddressId = clubVM.AddressId,\n                Address = clubVM.Address,\n            };\n\n            _clubRepository.Update(club);\n\n            return RedirectToAction(\"Index\");\n        }\n\n        [HttpGet]\n        public async Task<IActionResult> Delete(int id)\n        {\n            var clubDetails = await _clubRepository.GetByIdAsync(id);\n            if (clubDetails == null) return View(\"Error\");\n            return View(clubDetails);\n        }\n\n        [HttpPost, ActionName(\"Delete\")]\n        public async Task<IActionResult> DeleteClub(int id)\n        {\n            var clubDetails = await _clubRepository.GetByIdAsync(id);\n\n            if (clubDetails == null)\n            {\n                return View(\"Error\");\n            }\n\n            if (!string.IsNullOrEmpty(clubDetails.Image))\n            {\n                _ = _photoService.DeletePhotoAsync(clubDetails.Image);\n            }\n\n            _clubRepository.Delete(clubDetails);\n            return RedirectToAction(\"Index\");\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Controllers/DashboardController.cs",
    "content": "﻿using CloudinaryDotNet.Actions;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.ViewModels;\n\nnamespace RunGroopWebApp.Controllers\n{\n    [Authorize]\n    public class DashboardController : Controller\n    {\n        private readonly IDashboardRepository _dashboardRespository;\n        private readonly IPhotoService _photoService;\n\n        public DashboardController(IDashboardRepository dashboardRespository, IPhotoService photoService)\n        {\n            _dashboardRespository = dashboardRespository;\n            _photoService = photoService;\n        }\n\n        public async Task<IActionResult> Index()\n        {\n            var userRaces = await _dashboardRespository.GetAllUserRaces();\n            var userClubs = await _dashboardRespository.GetAllUserClubs();\n            var dashboardViewModel = new DashboardViewModel()\n            {\n                Races = userRaces,\n                Clubs = userClubs\n            };\n            return View(dashboardViewModel);\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Controllers/HomeController.cs",
    "content": "﻿using Microsoft.AspNetCore.Identity;\nusing Microsoft.AspNetCore.Mvc;\nusing Newtonsoft.Json;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Helpers;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.ViewModels;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Net;\n\nnamespace RunGroopWebApp.Controllers\n{\n    public class HomeController : Controller\n    {\n        private readonly ILogger<HomeController> _logger;\n        private readonly IClubRepository _clubRepository;\n        private readonly UserManager<AppUser> _userManager;\n        private readonly SignInManager<AppUser> _signInManager;\n        private readonly ILocationService _locationService;\n        private readonly IConfiguration _config;\n\n        public HomeController(ILogger<HomeController> logger, IClubRepository clubRepository,\n            UserManager<AppUser> userManager, SignInManager<AppUser> signInManager, ILocationService locationService, IConfiguration config)\n        {\n            _logger = logger;\n            _clubRepository = clubRepository;\n            _userManager = userManager;\n            _signInManager = signInManager;\n            _locationService = locationService;\n            _config = config;\n        }\n\n        public async Task<IActionResult> Index()\n        {\n            var ipInfo = new IPInfo();\n            var homeViewModel = new HomeViewModel();\n            try\n            {\n                string url = \"https://ipinfo.io?token=\" + _config.GetValue<string>(\"IPInfoToken\");\n                var info = new WebClient().DownloadString(url);\n                ipInfo = JsonConvert.DeserializeObject<IPInfo>(info);\n                RegionInfo myRI1 = new RegionInfo(ipInfo.Country);\n                ipInfo.Country = myRI1.EnglishName;\n                homeViewModel.City = ipInfo.City;\n                homeViewModel.State = ipInfo.Region;\n                if (homeViewModel.City != null)\n                {\n                    homeViewModel.Clubs = await _clubRepository.GetClubByCity(homeViewModel.City);\n                }\n                return View(homeViewModel);\n            }\n            catch (Exception)\n            {\n                homeViewModel.Clubs = null;\n            }\n\n            return View(homeViewModel);\n        }\n\n        public IActionResult Register() \n        {\n            var response = new HomeUserCreateViewModel();\n            return View(response);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Index(HomeViewModel homeVM)\n        {\n            var createVM = homeVM.Register;\n\n            if (!ModelState.IsValid) return View(homeVM);\n\n            var user = await _userManager.FindByEmailAsync(createVM.Email);\n            if (user != null)\n            {\n                ModelState.AddModelError(\"Register.Email\", \"This email address is already in use\");\n                return View(homeVM);\n            }\n\n            var userLocation = await _locationService.GetCityByZipCode(createVM.ZipCode ?? 0);\n\n            if (userLocation == null)\n            {\n                ModelState.AddModelError(\"Register.ZipCode\", \"Could not find zip code!\");\n                return View(homeVM);\n            }\n\n            var newUser = new AppUser\n            {\n                UserName = createVM.UserName,\n                Email = createVM.Email,\n                Address = new Address()\n                {\n                    State = userLocation.StateCode,\n                    City = userLocation.CityName,\n                    ZipCode = createVM.ZipCode ?? 0,\n                }\n            };\n\n            var newUserResponse = await _userManager.CreateAsync(newUser, createVM.Password);\n\n            if (newUserResponse.Succeeded)\n            {\n                await _signInManager.SignInAsync(newUser, isPersistent: false);\n                await _userManager.AddToRoleAsync(newUser, UserRoles.User);\n            }\n            return RedirectToAction(\"Index\", \"Club\");\n        }\n\n        public IActionResult Privacy()\n        {\n            return View();\n        }\n\n        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]\n        public IActionResult Error()\n        {\n            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Controllers/RaceController.cs",
    "content": "﻿using Microsoft.AspNetCore.Mvc;\nusing Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.ViewModels;\n\nnamespace RunGroopWebApp.Controllers\n{\n    public class RaceController : Controller\n    {\n        private readonly IRaceRepository _raceRepository;\n        private readonly IPhotoService _photoService;\n        private readonly IHttpContextAccessor _httpContextAccessor;\n\n        public RaceController(IRaceRepository raceRepository, IPhotoService photoService, IHttpContextAccessor httpContextAccessor)\n        {\n            _raceRepository = raceRepository;\n            _photoService = photoService;\n            _httpContextAccessor = httpContextAccessor;\n        }\n\n\n        [HttpGet]\n        public async Task<IActionResult> Index(int category = -1, int page = 1, int pageSize = 6)\n        {\n            if (page < 1 || pageSize < 1)\n            {\n                return NotFound();\n            }\n\n            // if category is -1 (All) dont filter else filter by selected category\n            var races = category switch\n            {\n                -1 => await _raceRepository.GetSliceAsync((page - 1) * pageSize, pageSize),\n                _ => await _raceRepository.GetRacesByCategoryAndSliceAsync((RaceCategory)category, (page - 1) * pageSize, pageSize),\n            };\n\n            var count = category switch\n            {\n                -1 => await _raceRepository.GetCountAsync(),\n                _ => await _raceRepository.GetCountByCategoryAsync((RaceCategory)category),\n            };\n\n            var viewModel = new IndexRaceViewModel\n            {\n                Races = races,\n                Page = page,\n                PageSize = pageSize,\n                TotalRaces = count,\n                TotalPages = (int)Math.Ceiling(count / (double)pageSize),\n                Category = category,\n            };\n\n            return View(viewModel);\n        }\n\n        [HttpGet]\n        [Route(\"event/{runningRace}/{id}\")]\n        public async Task<IActionResult> DetailRace(int id, string runningRace)\n        {\n            var race = await _raceRepository.GetByIdAsync(id);\n            return race == null ? NotFound() : View(race);\n        }\n\n        [HttpGet]\n        public IActionResult Create()\n        {\n            var curUserID = _httpContextAccessor.HttpContext?.User.GetUserId();\n            var createRaceViewModel = new CreateRaceViewModel { AppUserId = curUserID };\n            return View(createRaceViewModel);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Create(CreateRaceViewModel raceVM)\n        {\n            if (ModelState.IsValid)\n            {\n                var result = await _photoService.AddPhotoAsync(raceVM.Image);\n\n                var race = new Race\n                {\n                    Title = raceVM.Title,\n                    Description = raceVM.Description,\n                    Image = result.Url.ToString(),\n                    AppUserId = raceVM.AppUserId,\n                    RaceCategory = raceVM.RaceCategory,\n                    Address = new Address\n                    {\n                        Street = raceVM.Address.Street,\n                        City = raceVM.Address.City,\n                        State = raceVM.Address.State,\n                    }\n                };\n                _raceRepository.Add(race);\n                return RedirectToAction(\"Index\");\n            }\n            else\n            {\n                ModelState.AddModelError(\"\", \"Photo upload failed\");\n            }\n\n            return View(raceVM);\n        }\n\n        [HttpGet]\n        public async Task<IActionResult> Edit(int id)\n        {\n            var race = await _raceRepository.GetByIdAsync(id);\n            if (race == null) return View(\"Error\");\n            var raceVM = new EditRaceViewModel\n            {\n                Title = race.Title,\n                Description = race.Description,\n                AddressId = race.AddressId,\n                Address = race.Address,\n                URL = race.Image,\n                RaceCategory = race.RaceCategory\n            };\n            return View(raceVM);\n        }\n\n        [HttpPost]\n        public async Task<IActionResult> Edit(int id, EditRaceViewModel raceVM)\n        {\n            if (!ModelState.IsValid)\n            {\n                ModelState.AddModelError(\"\", \"Failed to edit club\");\n                return View(raceVM);\n            }\n\n            var userRace = await _raceRepository.GetByIdAsyncNoTracking(id);\n\n            if (userRace == null)\n            {\n                return View(\"Error\");\n            }\n\n            var photoResult = await _photoService.AddPhotoAsync(raceVM.Image);\n\n            if (photoResult.Error != null)\n            {\n                ModelState.AddModelError(\"Image\", \"Photo upload failed\");\n                return View(raceVM);\n            }\n\n            if (!string.IsNullOrEmpty(userRace.Image))\n            {\n                _ = _photoService.DeletePhotoAsync(userRace.Image);\n            }\n\n            var race = new Race\n            {\n                Id = id,\n                Title = raceVM.Title,\n                Description = raceVM.Description,\n                Image = photoResult.Url.ToString(),\n                AddressId = raceVM.AddressId,\n                Address = raceVM.Address,\n            };\n\n            _raceRepository.Update(race);\n\n            return RedirectToAction(\"Index\");\n        }\n\n        [HttpGet]\n        public async Task<IActionResult> Delete(int id)\n        {\n            var clubDetails = await _raceRepository.GetByIdAsync(id);\n            if (clubDetails == null) return View(\"Error\");\n            return View(clubDetails);\n        }\n\n        [HttpPost, ActionName(\"Delete\")]\n        public async Task<IActionResult> DeleteClub(int id)\n        {\n            var raceDetails = await _raceRepository.GetByIdAsync(id);\n\n            if (raceDetails == null)\n            {\n                return View(\"Error\");\n            }\n\n            if (!string.IsNullOrEmpty(raceDetails.Image))\n            {\n                _ = _photoService.DeletePhotoAsync(raceDetails.Image);\n            }\n\n            _raceRepository.Delete(raceDetails);\n            return RedirectToAction(\"Index\");\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Controllers/UserController.cs",
    "content": "﻿using Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.AspNetCore.Mvc;\nusing RunGroopWebApp.ViewModels;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Controllers\n{\n    public class UserController : Controller\n    {\n        private readonly IUserRepository _userRepository;\n        private readonly UserManager<AppUser> _userManager;\n        private readonly IPhotoService _photoService;\n\n        public UserController(IUserRepository userRepository, UserManager<AppUser> userManager, IPhotoService photoService)\n        {\n            _userRepository = userRepository;\n            _userManager = userManager;\n            _photoService = photoService;\n        }\n\n        [HttpGet(\"users\")]\n        public async Task<IActionResult> Index()\n        {\n            var users = await _userRepository.GetAllUsers();\n            List<UserViewModel> result = new List<UserViewModel>();\n            foreach (var user in users)\n            {\n                var userViewModel = new UserViewModel()\n                {\n                    Id = user.Id,\n                    Pace = user.Pace,\n                    City = user.City,\n                    State = user.State,\n                    Mileage = user.Mileage,\n                    UserName = user.UserName,\n                    ProfileImageUrl = user.ProfileImageUrl ?? \"/img/avatar-male-4.jpg\",\n                };\n                result.Add(userViewModel);\n            }\n            return View(result);\n        }\n\n        [HttpGet]\n        public async Task<IActionResult> Detail(string id)\n        {\n            var user = await _userRepository.GetUserById(id);\n            if (user == null)\n            {\n                return RedirectToAction(\"Index\", \"Users\");\n            }\n\n            var userDetailViewModel = new UserDetailViewModel()\n            {\n                Id = user.Id,\n                Pace = user.Pace,\n                City = user.City,\n                State = user.State,\n                Mileage = user.Mileage,\n                UserName = user.UserName,\n                ProfileImageUrl = user.ProfileImageUrl ?? \"/img/avatar-male-4.jpg\",\n            };\n            return View(userDetailViewModel);\n        }\n\n        [HttpGet]\n        [Authorize]\n        public async Task<IActionResult> EditProfile()\n        {\n            var user = await _userManager.GetUserAsync(User);\n\n            if (user == null)\n            {\n                return View(\"Error\");\n            }\n\n            var editMV = new EditProfileViewModel()\n            {\n                City = user.City,\n                State = user.State,\n                Pace = user.Pace,\n                Mileage = user.Mileage,\n                ProfileImageUrl = user.ProfileImageUrl,\n            };\n            return View(editMV);\n        }\n\n        [HttpPost]\n        [Authorize]\n        public async Task<IActionResult> EditProfile(EditProfileViewModel editVM)\n        {\n            if (!ModelState.IsValid)\n            {\n                ModelState.AddModelError(\"\", \"Failed to edit profile\");\n                return View(\"EditProfile\", editVM);\n            }\n\n            var user = await _userManager.GetUserAsync(User);\n\n            if (user == null)\n            {\n                return View(\"Error\");\n            }\n\n            if (editVM.Image != null) // only update profile image\n            {\n                var photoResult = await _photoService.AddPhotoAsync(editVM.Image);\n\n                if (photoResult.Error != null)\n                {\n                    ModelState.AddModelError(\"Image\", \"Failed to upload image\");\n                    return View(\"EditProfile\", editVM);\n                }\n\n                if (!string.IsNullOrEmpty(user.ProfileImageUrl))\n                {\n                    _ = _photoService.DeletePhotoAsync(user.ProfileImageUrl);\n                }\n\n                user.ProfileImageUrl = photoResult.Url.ToString();\n                editVM.ProfileImageUrl = user.ProfileImageUrl;\n\n                await _userManager.UpdateAsync(user);\n\n                return View(editVM);\n            }\n\n            user.City = editVM.City;\n            user.State = editVM.State;\n            user.Pace = editVM.Pace;\n            user.Mileage = editVM.Mileage;\n\n            await _userManager.UpdateAsync(user);\n\n            return RedirectToAction(\"Detail\", \"User\", new { user.Id });\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Data/ApplicationDbContext.cs",
    "content": "﻿using Microsoft.AspNetCore.Identity.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Data\n{\n    public class ApplicationDbContext : IdentityDbContext<AppUser>\n    {\n        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)\n        {\n\n        }\n        public DbSet<Race> Races { get; set; }\n        public DbSet<Club> Clubs { get; set; }\n        public DbSet<Address> Addresses { get; set; }\n        public DbSet<State> States { get; set; }\n        public DbSet<City> Cities { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Data/Enum/ClubCategory.cs",
    "content": "﻿namespace RunGroopWebApp.Data.Enum\n{\n    public enum ClubCategory\n    {\n        RoadRunner,\n        Womens,\n        City,\n        Trail,\n        Endurance\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Data/Enum/RaceCategory.cs",
    "content": "﻿namespace RunGroopWebApp.Data.Enum\n{\n    public enum RaceCategory\n    {\n        Marathon,\n        Ultra,\n        FiveK,\n        TenK,\n        HalfMarathon\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Data/Seed.cs",
    "content": "﻿using Microsoft.AspNetCore.Identity;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Data\n{\n    public class Seed\n    {\n        public static void SeedData(IApplicationBuilder applicationBuilder)\n        {\n            using (var serviceScope = applicationBuilder.ApplicationServices.CreateScope())\n            {\n                var context = serviceScope.ServiceProvider.GetService<ApplicationDbContext>();\n\n                context.Database.EnsureCreated();\n\n                if (!context.Clubs.Any())\n                {\n                    context.Clubs.AddRange(new List<Club>()\n                    {\n                        new Club()\n                        {\n                            Title = \"Running Club 1\",\n                            Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                            Description = \"This is the description of the first cinema\",\n                            ClubCategory = ClubCategory.City,\n                            Address = new Address()\n                            {\n                                Street = \"123 Main St\",\n                                City = \"Charlotte\",\n                                State = \"NC\"\n                            }\n                         },\n                        new Club()\n                        {\n                            Title = \"Running Club 2\",\n                            Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                            Description = \"This is the description of the first cinema\",\n                            ClubCategory = ClubCategory.Endurance,\n                            Address = new Address()\n                            {\n                                Street = \"123 Main St\",\n                                City = \"Charlotte\",\n                                State = \"NC\"\n                            }\n                        },\n                        new Club()\n                        {\n                            Title = \"Running Club 3\",\n                            Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                            Description = \"This is the description of the first club\",\n                            ClubCategory = ClubCategory.Trail,\n                            Address = new Address()\n                            {\n                                Street = \"123 Main St\",\n                                City = \"Charlotte\",\n                                State = \"NC\"\n                            }\n                        },\n                        new Club()\n                        {\n                            Title = \"Running Club 3\",\n                            Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                            Description = \"This is the description of the first club\",\n                            ClubCategory = ClubCategory.City,\n                            Address = new Address()\n                            {\n                                Street = \"123 Main St\",\n                                City = \"Michigan\",\n                                State = \"NC\"\n                            }\n                        }\n                    });\n                    context.SaveChanges();\n                }\n                //Races\n                if (!context.Races.Any())\n                {\n                    context.Races.AddRange(new List<Race>()\n                    {\n                        new Race()\n                        {\n                            Title = \"Running Race 1\",\n                            Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                            Description = \"This is the description of the first race\",\n                            RaceCategory = RaceCategory.Marathon,\n                            Address = new Address()\n                            {\n                                Street = \"123 Main St\",\n                                City = \"Charlotte\",\n                                State = \"NC\"\n                            }\n                        },\n                        new Race()\n                        {\n                            Title = \"Running Race 2\",\n                            Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                            Description = \"This is the description of the first race\",\n                            RaceCategory = RaceCategory.Ultra,\n                            AddressId = 5,\n                            Address = new Address()\n                            {\n                                Street = \"123 Main St\",\n                                City = \"Charlotte\",\n                                State = \"NC\"\n                            }\n                        }\n                    });\n                    context.SaveChanges();\n                }\n            }\n        }\n\n        public static async Task SeedUsersAndRolesAsync(IApplicationBuilder applicationBuilder)\n        {\n            using (var serviceScope = applicationBuilder.ApplicationServices.CreateScope())\n            {\n                //Roles\n                var roleManager = serviceScope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();\n\n                if (!await roleManager.RoleExistsAsync(UserRoles.Admin))\n                    await roleManager.CreateAsync(new IdentityRole(UserRoles.Admin));\n                if (!await roleManager.RoleExistsAsync(UserRoles.User))\n                    await roleManager.CreateAsync(new IdentityRole(UserRoles.User));\n\n                //Users\n                var userManager = serviceScope.ServiceProvider.GetRequiredService<UserManager<AppUser>>();\n                string adminUserEmail = \"teddysmithdeveloper@gmail.com\";\n\n                var adminUser = await userManager.FindByEmailAsync(adminUserEmail);\n                if (adminUser == null)\n                {\n                    var newAdminUser = new AppUser()\n                    {\n                        UserName = \"teddysmithdev\",\n                        Email = adminUserEmail,\n                        EmailConfirmed = true,\n                        Address = new Address()\n                        {\n                            Street = \"123 Main St\",\n                            City = \"Charlotte\",\n                            State = \"NC\"\n                        }\n                    };\n                    await userManager.CreateAsync(newAdminUser, \"Coding@1234?\");\n                    await userManager.AddToRoleAsync(newAdminUser, UserRoles.Admin);\n                }\n\n                string appUserEmail = \"user@etickets.com\";\n\n                var appUser = await userManager.FindByEmailAsync(appUserEmail);\n                if (appUser == null)\n                {\n                    var newAppUser = new AppUser()\n                    {\n                        UserName = \"app-user\",\n                        Email = appUserEmail,\n                        EmailConfirmed = true,\n                        Address = new Address()\n                        {\n                            Street = \"123 Main St\",\n                            City = \"Charlotte\",\n                            State = \"NC\"\n                        }\n                    };\n                    await userManager.CreateAsync(newAppUser, \"Coding@1234?\");\n                    await userManager.AddToRoleAsync(newAppUser, UserRoles.User);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Data/UserRoles.cs",
    "content": "﻿namespace RunGroopWebApp.Data\n{\n    public static class UserRoles\n    {\n        public const string Admin = \"admin\";\n        public const string User = \"user\";\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Extensions/NumberExtensions.cs",
    "content": "﻿namespace RunGroopWebApp.Extensions\n{\n    public static class NumberExtensions\n    {\n        public static bool IsNumericType(this object o)\n        {\n            switch (Type.GetTypeCode(o.GetType()))\n            {\n                case TypeCode.Byte:\n                case TypeCode.SByte:\n                case TypeCode.UInt16:\n                case TypeCode.UInt32:\n                case TypeCode.UInt64:\n                case TypeCode.Int16:\n                case TypeCode.Int32:\n                case TypeCode.Int64:\n                case TypeCode.Decimal:\n                case TypeCode.Double:\n                case TypeCode.Single:\n                    return true;\n                default:\n                    return false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Extensions/StringExtensions.cs",
    "content": "﻿using System.Text.RegularExpressions;\n\nnamespace RunGroopWebApp.Extensions\n{\n    public static class StringExtensions\n    {\n        public static string FirstCharToUpper(this string input) =>\n            input switch\n            {\n                null => throw new ArgumentNullException(nameof(input)),\n                \"\" => throw new ArgumentException($\"{nameof(input)} cannot be empty\", nameof(input)),\n                _ => string.Concat(input[0].ToString().ToUpper(), input.AsSpan(1))\n            };\n\n        public static string GenerateSlug(this string phrase)\n        {\n            string str = phrase.RemoveAccent().ToLower();\n            // invalid chars           \n            str = Regex.Replace(str, @\"[^a-z0-9\\s-]\", \"\");\n            // convert multiple spaces into one space   \n            str = Regex.Replace(str, @\"\\s+\", \" \").Trim();\n            // cut and trim \n            str = str.Substring(0, str.Length <= 45 ? str.Length : 45).Trim();\n            str = Regex.Replace(str, @\"\\s\", \"-\"); // hyphens   \n            return str;\n        }\n\n        public static string RemoveAccent(this string txt)\n        {\n            byte[] bytes = System.Text.Encoding.GetEncoding(\"Cyrillic\").GetBytes(txt);\n            return System.Text.Encoding.ASCII.GetString(bytes);\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Helpers/CloudinarySettings.cs",
    "content": "﻿namespace RunGroopWebApp.Helpers\n{\n    public class CloudinarySettings\n    {\n        public string CloudName { get; set; }\n        public string ApiKey { get; set; }\n        public string ApiSecret { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Helpers/IPInfo.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace RunGroopWebApp.Helpers\n{\n    public class IPInfo\n    {\n        [JsonProperty(\"ip\")]\n        public string Ip { get; set; }\n        [JsonProperty(\"hostname\")]\n        public string Hostname { get; set; }\n        [JsonProperty(\"city\")]\n        public string City { get; set; }\n\n        [JsonProperty(\"region\")]\n        public string Region { get; set; }\n        [JsonProperty(\"country\")]\n        public string Country { get; set; }\n\n        [JsonProperty(\"loc\")]\n        public string Location { get; set; }\n        [JsonProperty(\"org\")]\n        public string Org { get; set; }\n        [JsonProperty(\"postal\")]\n        public string Postal { get; set; }\n        [JsonProperty(\"timezone\")]\n        public string Timezone { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Helpers/Location.cs",
    "content": "﻿namespace RunGroopWebApp.Helpers\n{\n    public class Location\n    {\n        public string City { get; set; }\n        public string State { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Helpers/StateConverter.cs",
    "content": "﻿namespace RunGroopWebApp.Helpers\n{\n    public static class StateConverter\n    {\n        public static string GetState(State state)\n        {\n            switch (state)\n            {\n                case State.AL:\n                    return \"ALABAMA\";\n\n                case State.AK:\n                    return \"ALASKA\";\n\n                case State.AS:\n                    return \"AMERICAN SAMOA\";\n\n                case State.AZ:\n                    return \"ARIZONA\";\n\n                case State.AR:\n                    return \"ARKANSAS\";\n\n                case State.CA:\n                    return \"CALIFORNIA\";\n\n                case State.CO:\n                    return \"COLORADO\";\n\n                case State.CT:\n                    return \"CONNECTICUT\";\n\n                case State.DE:\n                    return \"DELAWARE\";\n\n                case State.DC:\n                    return \"DISTRICT OF COLUMBIA\";\n\n                case State.FM:\n                    return \"FEDERATED STATES OF MICRONESIA\";\n\n                case State.FL:\n                    return \"FLORIDA\";\n\n                case State.GA:\n                    return \"GEORGIA\";\n\n                case State.GU:\n                    return \"GUAM\";\n\n                case State.HI:\n                    return \"HAWAII\";\n\n                case State.ID:\n                    return \"IDAHO\";\n\n                case State.IL:\n                    return \"ILLINOIS\";\n\n                case State.IN:\n                    return \"INDIANA\";\n\n                case State.IA:\n                    return \"IOWA\";\n\n                case State.KS:\n                    return \"KANSAS\";\n\n                case State.KY:\n                    return \"KENTUCKY\";\n\n                case State.LA:\n                    return \"LOUISIANA\";\n\n                case State.ME:\n                    return \"MAINE\";\n\n                case State.MH:\n                    return \"MARSHALL ISLANDS\";\n\n                case State.MD:\n                    return \"MARYLAND\";\n\n                case State.MA:\n                    return \"MASSACHUSETTS\";\n\n                case State.MI:\n                    return \"MICHIGAN\";\n\n                case State.MN:\n                    return \"MINNESOTA\";\n\n                case State.MS:\n                    return \"MISSISSIPPI\";\n\n                case State.MO:\n                    return \"MISSOURI\";\n\n                case State.MT:\n                    return \"MONTANA\";\n\n                case State.NE:\n                    return \"NEBRASKA\";\n\n                case State.NV:\n                    return \"NEVADA\";\n\n                case State.NH:\n                    return \"NEW HAMPSHIRE\";\n\n                case State.NJ:\n                    return \"NEW JERSEY\";\n\n                case State.NM:\n                    return \"NEW MEXICO\";\n\n                case State.NY:\n                    return \"NEW YORK\";\n\n                case State.NC:\n                    return \"NORTH CAROLINA\";\n\n                case State.ND:\n                    return \"NORTH DAKOTA\";\n\n                case State.MP:\n                    return \"NORTHERN MARIANA ISLANDS\";\n\n                case State.OH:\n                    return \"OHIO\";\n\n                case State.OK:\n                    return \"OKLAHOMA\";\n\n                case State.OR:\n                    return \"OREGON\";\n\n                case State.PW:\n                    return \"PALAU\";\n\n                case State.PA:\n                    return \"PENNSYLVANIA\";\n\n                case State.PR:\n                    return \"PUERTO RICO\";\n\n                case State.RI:\n                    return \"RHODE ISLAND\";\n\n                case State.SC:\n                    return \"SOUTH CAROLINA\";\n\n                case State.SD:\n                    return \"SOUTH DAKOTA\";\n\n                case State.TN:\n                    return \"TENNESSEE\";\n\n                case State.TX:\n                    return \"TEXAS\";\n\n                case State.UT:\n                    return \"UTAH\";\n\n                case State.VT:\n                    return \"VERMONT\";\n\n                case State.VI:\n                    return \"VIRGIN ISLANDS\";\n\n                case State.VA:\n                    return \"VIRGINIA\";\n\n                case State.WA:\n                    return \"WASHINGTON\";\n\n                case State.WV:\n                    return \"WEST VIRGINIA\";\n\n                case State.WI:\n                    return \"WISCONSIN\";\n\n                case State.WY:\n                    return \"WYOMING\";\n            }\n\n            throw new Exception(\"Not Available\");\n        }\n\n        public static State GetStateByName(string name)\n        {\n            switch (name.ToUpper())\n            {\n                case \"ALABAMA\":\n                    return State.AL;\n\n                case \"ALASKA\":\n                    return State.AK;\n\n                case \"AMERICAN SAMOA\":\n                    return State.AS;\n\n                case \"ARIZONA\":\n                    return State.AZ;\n\n                case \"ARKANSAS\":\n                    return State.AR;\n\n                case \"CALIFORNIA\":\n                    return State.CA;\n\n                case \"COLORADO\":\n                    return State.CO;\n\n                case \"CONNECTICUT\":\n                    return State.CT;\n\n                case \"DELAWARE\":\n                    return State.DE;\n\n                case \"DISTRICT OF COLUMBIA\":\n                    return State.DC;\n\n                case \"FEDERATED STATES OF MICRONESIA\":\n                    return State.FM;\n\n                case \"FLORIDA\":\n                    return State.FL;\n\n                case \"GEORGIA\":\n                    return State.GA;\n\n                case \"GUAM\":\n                    return State.GU;\n\n                case \"HAWAII\":\n                    return State.HI;\n\n                case \"IDAHO\":\n                    return State.ID;\n\n                case \"ILLINOIS\":\n                    return State.IL;\n\n                case \"INDIANA\":\n                    return State.IN;\n\n                case \"IOWA\":\n                    return State.IA;\n\n                case \"KANSAS\":\n                    return State.KS;\n\n                case \"KENTUCKY\":\n                    return State.KY;\n\n                case \"LOUISIANA\":\n                    return State.LA;\n\n                case \"MAINE\":\n                    return State.ME;\n\n                case \"MARSHALL ISLANDS\":\n                    return State.MH;\n\n                case \"MARYLAND\":\n                    return State.MD;\n\n                case \"MASSACHUSETTS\":\n                    return State.MA;\n\n                case \"MICHIGAN\":\n                    return State.MI;\n\n                case \"MINNESOTA\":\n                    return State.MN;\n\n                case \"MISSISSIPPI\":\n                    return State.MS;\n\n                case \"MISSOURI\":\n                    return State.MO;\n\n                case \"MONTANA\":\n                    return State.MT;\n\n                case \"NEBRASKA\":\n                    return State.NE;\n\n                case \"NEVADA\":\n                    return State.NV;\n\n                case \"NEW HAMPSHIRE\":\n                    return State.NH;\n\n                case \"NEW JERSEY\":\n                    return State.NJ;\n\n                case \"NEW MEXICO\":\n                    return State.NM;\n\n                case \"NEW YORK\":\n                    return State.NY;\n\n                case \"NORTH CAROLINA\":\n                    return State.NC;\n\n                case \"NORTH DAKOTA\":\n                    return State.ND;\n\n                case \"NORTHERN MARIANA ISLANDS\":\n                    return State.MP;\n\n                case \"OHIO\":\n                    return State.OH;\n\n                case \"OKLAHOMA\":\n                    return State.OK;\n\n                case \"OREGON\":\n                    return State.OR;\n\n                case \"PALAU\":\n                    return State.PW;\n\n                case \"PENNSYLVANIA\":\n                    return State.PA;\n\n                case \"PUERTO RICO\":\n                    return State.PR;\n\n                case \"RHODE ISLAND\":\n                    return State.RI;\n\n                case \"SOUTH CAROLINA\":\n                    return State.SC;\n\n                case \"SOUTH DAKOTA\":\n                    return State.SD;\n\n                case \"TENNESSEE\":\n                    return State.TN;\n\n                case \"TEXAS\":\n                    return State.TX;\n\n                case \"UTAH\":\n                    return State.UT;\n\n                case \"VERMONT\":\n                    return State.VT;\n\n                case \"VIRGIN ISLANDS\":\n                    return State.VI;\n\n                case \"VIRGINIA\":\n                    return State.VA;\n\n                case \"WASHINGTON\":\n                    return State.WA;\n\n                case \"WEST VIRGINIA\":\n                    return State.WV;\n\n                case \"WISCONSIN\":\n                    return State.WI;\n\n                case \"WYOMING\":\n                    return State.WY;\n            }\n\n            throw new Exception(\"Not Available\");\n        }\n\n        public enum State\n        {\n            AL,\n            AK,\n            AS,\n            AZ,\n            AR,\n            CA,\n            CO,\n            CT,\n            DE,\n            DC,\n            FM,\n            FL,\n            GA,\n            GU,\n            HI,\n            ID,\n            IL,\n            IN,\n            IA,\n            KS,\n            KY,\n            LA,\n            ME,\n            MH,\n            MD,\n            MA,\n            MI,\n            MN,\n            MS,\n            MO,\n            MT,\n            NE,\n            NV,\n            NH,\n            NJ,\n            NM,\n            NY,\n            NC,\n            ND,\n            MP,\n            OH,\n            OK,\n            OR,\n            PW,\n            PA,\n            PR,\n            RI,\n            SC,\n            SD,\n            TN,\n            TX,\n            UT,\n            VT,\n            VI,\n            VA,\n            WA,\n            WV,\n            WI,\n            WY\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Interfaces/IClubRepository.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Interfaces\n{\n    public interface IClubRepository\n    {\n        Task<IEnumerable<Club>> GetAll();\n\n        Task<IEnumerable<Club>> GetSliceAsync(int offset, int size);\n\n        Task<IEnumerable<Club>> GetClubsByState(string state);\n\n        Task<IEnumerable<Club>> GetClubsByCategoryAndSliceAsync(ClubCategory category, int offset, int size);\n\n        Task<List<State>> GetAllStates();\n\n        Task<List<City>> GetAllCitiesByState(string state);\n\n        Task<Club?> GetByIdAsync(int id);\n\n        Task<Club?> GetByIdAsyncNoTracking(int id);\n\n        Task<IEnumerable<Club>> GetClubByCity(string city);\n\n        Task<int> GetCountAsync();\n\n        Task<int> GetCountByCategoryAsync(ClubCategory category);\n\n        bool Add(Club club);\n\n        bool Update(Club club);\n\n        bool Delete(Club club);\n\n        bool Save();\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Interfaces/IDashboardRepository.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Interfaces\n{\n    public interface IDashboardRepository\n    {\n        Task<List<Race>> GetAllUserRaces();\n        Task<List<Club>> GetAllUserClubs();\n        Task<AppUser> GetUserById(string id);\n        Task<AppUser> GetByIdNoTracking(string id);\n        bool Update(AppUser user);\n        bool Save();\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Interfaces/ILocationService.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Interfaces\n{\n    public interface ILocationService\n    {\n        Task<List<City>> GetLocationSearch(string location);\n        Task<City> GetCityByZipCode(int zipCode);\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Interfaces/IPhotoService.cs",
    "content": "﻿using CloudinaryDotNet.Actions;\n\nnamespace RunGroopWebApp.Interfaces\n{\n    public interface IPhotoService\n    {\n        Task<ImageUploadResult> AddPhotoAsync(IFormFile file);\n\n        Task<DeletionResult> DeletePhotoAsync(string publicUrl);\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Interfaces/IRaceRepository.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Interfaces\n{\n    public interface IRaceRepository\n    {\n        Task<int> GetCountAsync();\n\n        Task<int> GetCountByCategoryAsync(RaceCategory category);\n\n        Task<Race?> GetByIdAsync(int id);\n\n        Task<Race?> GetByIdAsyncNoTracking(int id);\n\n        Task<IEnumerable<Race>> GetAll();\n\n        Task<IEnumerable<Race>> GetAllRacesByCity(string city);\n\n        Task<IEnumerable<Race>> GetSliceAsync(int offset, int size);\n\n        Task<IEnumerable<Race>> GetRacesByCategoryAndSliceAsync(RaceCategory category, int offset, int size);\n\n        bool Add(Race race);\n\n        bool Update(Race race);\n\n        bool Delete(Race race);\n\n        bool Save();\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Interfaces/IUserRepository.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Interfaces\n{\n    public interface IUserRepository\n    {\n        Task<IEnumerable<AppUser>> GetAllUsers();\n        Task<AppUser> GetUserById(string id);\n        bool Add(AppUser user);\n        bool Update(AppUser user);\n        bool Delete(AppUser user);\n        bool Save();\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Migrations/20220215112438_InitialCreate.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\nusing RunGroopWebApp.Data;\n\n#nullable disable\n\nnamespace RunGroopWebApp.Migrations\n{\n    [DbContext(typeof(ApplicationDbContext))]\n    [Migration(\"20220215112438_InitialCreate\")]\n    partial class InitialCreate\n    {\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"6.0.2\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Street\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.AppUser\", b =>\n                {\n                    b.Property<string>(\"Id\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<int?>(\"AddressId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<int?>(\"Mileage\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<int?>(\"Pace\")\n                        .HasColumnType(\"int\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"AddressId\");\n\n                    b.ToTable(\"AppUser\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Club\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<int>(\"AddressId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"AppUserId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<int>(\"ClubCategory\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Image\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Title\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"AddressId\");\n\n                    b.HasIndex(\"AppUserId\");\n\n                    b.ToTable(\"Clubs\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Race\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<int>(\"AddressId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"AppUserId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Image\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"RaceCategory\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Title\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"AddressId\");\n\n                    b.HasIndex(\"AppUserId\");\n\n                    b.ToTable(\"Races\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.AppUser\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Club\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", \"AppUser\")\n                        .WithMany(\"Clubs\")\n                        .HasForeignKey(\"AppUserId\");\n\n                    b.Navigation(\"Address\");\n\n                    b.Navigation(\"AppUser\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Race\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", \"AppUser\")\n                        .WithMany(\"Races\")\n                        .HasForeignKey(\"AppUserId\");\n\n                    b.Navigation(\"Address\");\n\n                    b.Navigation(\"AppUser\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.AppUser\", b =>\n                {\n                    b.Navigation(\"Clubs\");\n\n                    b.Navigation(\"Races\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Migrations/20220215112438_InitialCreate.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace RunGroopWebApp.Migrations\n{\n    public partial class InitialCreate : Migration\n    {\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.CreateTable(\n                name: \"Addresses\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    Street = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    City = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    State = table.Column<string>(type: \"nvarchar(max)\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Addresses\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AppUser\",\n                columns: table => new\n                {\n                    Id = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    Pace = table.Column<int>(type: \"int\", nullable: true),\n                    Mileage = table.Column<int>(type: \"int\", nullable: true),\n                    AddressId = table.Column<int>(type: \"int\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AppUser\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_AppUser_Addresses_AddressId\",\n                        column: x => x.AddressId,\n                        principalTable: \"Addresses\",\n                        principalColumn: \"Id\");\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"Clubs\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    Title = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Description = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Image = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    AddressId = table.Column<int>(type: \"int\", nullable: false),\n                    ClubCategory = table.Column<int>(type: \"int\", nullable: false),\n                    AppUserId = table.Column<string>(type: \"nvarchar(450)\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Clubs\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_Clubs_Addresses_AddressId\",\n                        column: x => x.AddressId,\n                        principalTable: \"Addresses\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                    table.ForeignKey(\n                        name: \"FK_Clubs_AppUser_AppUserId\",\n                        column: x => x.AppUserId,\n                        principalTable: \"AppUser\",\n                        principalColumn: \"Id\");\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"Races\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    Title = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Description = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Image = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    AddressId = table.Column<int>(type: \"int\", nullable: false),\n                    RaceCategory = table.Column<int>(type: \"int\", nullable: false),\n                    AppUserId = table.Column<string>(type: \"nvarchar(450)\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Races\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_Races_Addresses_AddressId\",\n                        column: x => x.AddressId,\n                        principalTable: \"Addresses\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                    table.ForeignKey(\n                        name: \"FK_Races_AppUser_AppUserId\",\n                        column: x => x.AppUserId,\n                        principalTable: \"AppUser\",\n                        principalColumn: \"Id\");\n                });\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_AppUser_AddressId\",\n                table: \"AppUser\",\n                column: \"AddressId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_Clubs_AddressId\",\n                table: \"Clubs\",\n                column: \"AddressId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_Clubs_AppUserId\",\n                table: \"Clubs\",\n                column: \"AppUserId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_Races_AddressId\",\n                table: \"Races\",\n                column: \"AddressId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_Races_AppUserId\",\n                table: \"Races\",\n                column: \"AppUserId\");\n        }\n\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropTable(\n                name: \"Clubs\");\n\n            migrationBuilder.DropTable(\n                name: \"Races\");\n\n            migrationBuilder.DropTable(\n                name: \"AppUser\");\n\n            migrationBuilder.DropTable(\n                name: \"Addresses\");\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Migrations/ApplicationDbContextModelSnapshot.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\nusing RunGroopWebApp.Data;\n\n#nullable disable\n\nnamespace RunGroopWebApp.Migrations\n{\n    [DbContext(typeof(ApplicationDbContext))]\n    partial class ApplicationDbContextModelSnapshot : ModelSnapshot\n    {\n        protected override void BuildModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"6.0.2\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityRole\", b =>\n                {\n                    b.Property<string>(\"Id\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"ConcurrencyStamp\")\n                        .IsConcurrencyToken()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .HasMaxLength(256)\n                        .HasColumnType(\"nvarchar(256)\");\n\n                    b.Property<string>(\"NormalizedName\")\n                        .HasMaxLength(256)\n                        .HasColumnType(\"nvarchar(256)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"NormalizedName\")\n                        .IsUnique()\n                        .HasDatabaseName(\"RoleNameIndex\")\n                        .HasFilter(\"[NormalizedName] IS NOT NULL\");\n\n                    b.ToTable(\"AspNetRoles\", (string)null);\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<string>(\"ClaimType\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"ClaimValue\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"RoleId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"RoleId\");\n\n                    b.ToTable(\"AspNetRoleClaims\", (string)null);\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserClaim<string>\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<string>(\"ClaimType\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"ClaimValue\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"UserId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"UserId\");\n\n                    b.ToTable(\"AspNetUserClaims\", (string)null);\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserLogin<string>\", b =>\n                {\n                    b.Property<string>(\"LoginProvider\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"ProviderKey\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"ProviderDisplayName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"UserId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.HasKey(\"LoginProvider\", \"ProviderKey\");\n\n                    b.HasIndex(\"UserId\");\n\n                    b.ToTable(\"AspNetUserLogins\", (string)null);\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserRole<string>\", b =>\n                {\n                    b.Property<string>(\"UserId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"RoleId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.HasKey(\"UserId\", \"RoleId\");\n\n                    b.HasIndex(\"RoleId\");\n\n                    b.ToTable(\"AspNetUserRoles\", (string)null);\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserToken<string>\", b =>\n                {\n                    b.Property<string>(\"UserId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"LoginProvider\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"Name\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"Value\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"UserId\", \"LoginProvider\", \"Name\");\n\n                    b.ToTable(\"AspNetUserTokens\", (string)null);\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Street\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.AppUser\", b =>\n                {\n                    b.Property<string>(\"Id\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<int>(\"AccessFailedCount\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<int?>(\"AddressId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"City\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"ConcurrencyStamp\")\n                        .IsConcurrencyToken()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Email\")\n                        .HasMaxLength(256)\n                        .HasColumnType(\"nvarchar(256)\");\n\n                    b.Property<bool>(\"EmailConfirmed\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\n\n                    b.Property<int?>(\"Mileage\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"NormalizedEmail\")\n                        .HasMaxLength(256)\n                        .HasColumnType(\"nvarchar(256)\");\n\n                    b.Property<string>(\"NormalizedUserName\")\n                        .HasMaxLength(256)\n                        .HasColumnType(\"nvarchar(256)\");\n\n                    b.Property<int?>(\"Pace\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"PasswordHash\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PhoneNumber\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"PhoneNumberConfirmed\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<string>(\"ProfileImageUrl\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"SecurityStamp\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"TwoFactorEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<string>(\"UserName\")\n                        .HasMaxLength(256)\n                        .HasColumnType(\"nvarchar(256)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"AddressId\");\n\n                    b.HasIndex(\"NormalizedEmail\")\n                        .HasDatabaseName(\"EmailIndex\");\n\n                    b.HasIndex(\"NormalizedUserName\")\n                        .IsUnique()\n                        .HasDatabaseName(\"UserNameIndex\")\n                        .HasFilter(\"[NormalizedUserName] IS NOT NULL\");\n\n                    b.ToTable(\"AspNetUsers\", (string)null);\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.City\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<string>(\"CityName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"County\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<float>(\"Latitude\")\n                        .HasColumnType(\"real\");\n\n                    b.Property<float>(\"Longitude\")\n                        .HasColumnType(\"real\");\n\n                    b.Property<string>(\"StateCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"Zip\")\n                        .HasColumnType(\"int\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Cities\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Club\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<int>(\"AddressId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"AppUserId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<int>(\"ClubCategory\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Image\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Title\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"AddressId\");\n\n                    b.HasIndex(\"AppUserId\");\n\n                    b.ToTable(\"Clubs\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Race\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<int>(\"AddressId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"AppUserId\")\n                        .HasColumnType(\"nvarchar(450)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Image\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"RaceCategory\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Title\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"AddressId\");\n\n                    b.HasIndex(\"AppUserId\");\n\n                    b.ToTable(\"Races\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.State\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"), 1L, 1);\n\n                    b.Property<string>(\"StateCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"StateName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"States\");\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>\", b =>\n                {\n                    b.HasOne(\"Microsoft.AspNetCore.Identity.IdentityRole\", null)\n                        .WithMany()\n                        .HasForeignKey(\"RoleId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserClaim<string>\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserLogin<string>\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserRole<string>\", b =>\n                {\n                    b.HasOne(\"Microsoft.AspNetCore.Identity.IdentityRole\", null)\n                        .WithMany()\n                        .HasForeignKey(\"RoleId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Microsoft.AspNetCore.Identity.IdentityUserToken<string>\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.AppUser\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Club\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", \"AppUser\")\n                        .WithMany(\"Clubs\")\n                        .HasForeignKey(\"AppUserId\");\n\n                    b.Navigation(\"Address\");\n\n                    b.Navigation(\"AppUser\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.Race\", b =>\n                {\n                    b.HasOne(\"RunGroopWebApp.Models.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.HasOne(\"RunGroopWebApp.Models.AppUser\", \"AppUser\")\n                        .WithMany(\"Races\")\n                        .HasForeignKey(\"AppUserId\");\n\n                    b.Navigation(\"Address\");\n\n                    b.Navigation(\"AppUser\");\n                });\n\n            modelBuilder.Entity(\"RunGroopWebApp.Models.AppUser\", b =>\n                {\n                    b.Navigation(\"Clubs\");\n\n                    b.Navigation(\"Races\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Models/Address.cs",
    "content": "﻿using System.ComponentModel.DataAnnotations;\n\nnamespace RunGroopWebApp.Models\n{\n    public class Address\n    {\n        [Key]\n        public int Id { get; set; }\n        public string Street { get; set; }\n        public string City { get; set; }\n        public string State { get; set; }\n        public int ZipCode  { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Models/AppUser.cs",
    "content": "﻿using Microsoft.AspNetCore.Identity;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace RunGroopWebApp.Models\n{\n    public class AppUser : IdentityUser\n    {\n        public int? Pace { get; set; }\n        public int? Mileage { get; set; }\n        public string? ProfileImageUrl { get; set; }\n        public string? City { get; set; }\n        public string? State { get; set; }\n        [ForeignKey(\"Address\")]\n        public int? AddressId { get; set; }\n        public Address? Address { get; set; }\n        public ICollection<Club> Clubs { get; set; }\n        public ICollection<Race> Races { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Models/City.cs",
    "content": "﻿namespace RunGroopWebApp.Models\n{\n    public class City\n    {\n        public int Id { get; set; }\n        public string CityName { get; set; }\n        public string StateCode { get; set; }\n        public int Zip { get; set; }\n        public double Latitude { get; set; }\n        public double Longitude { get; set; }\n        public string County { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Models/Club.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace RunGroopWebApp.Models\n{\n    public class Club\n    {\n        [Key]\n        public int Id { get; set; }\n        public string? Title { get; set; }\n        public string? Description { get; set; }\n        public string? Image { get; set; }\n        [ForeignKey(\"Address\")]\n        public int? AddressId { get; set; }\n        public Address? Address { get; set; }\n        public ClubCategory ClubCategory { get; set; }\n        [ForeignKey(\"AppUser\")]\n        public string? AppUserId { get; set; }\n        public AppUser? AppUser { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Models/ErrorViewModel.cs",
    "content": "namespace RunGroopWebApp.Models\n{\n    public class ErrorViewModel\n    {\n        public string? RequestId { get; set; }\n\n        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Models/Race.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace RunGroopWebApp.Models\n{\n    public class Race\n    {\n        [Key]\n        public int Id { get; set; }\n        public string Title { get; set; }\n        public string Description { get; set; }\n        public string? Image { get; set; }\n        public DateTime? StartTime { get; set; }\n        public int? EntryFee { get; set; }\n        public string? Website { get; set; }\n        public string? Twitter { get; set; }\n        public string? Facebook { get; set; }\n        public string? Contact { get; set; }\n        [ForeignKey(\"Address\")]\n        public int AddressId { get; set; }\n        public Address Address { get; set; }\n        public RaceCategory RaceCategory { get; set; }\n        [ForeignKey(\"AppUser\")]\n        public string? AppUserId { get; set; }\n        public AppUser? AppUser { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Models/State.cs",
    "content": "﻿namespace RunGroopWebApp.Models\n{\n    public class State\n    {\n        public int Id { get; set; }\n        public string StateName { get; set; }\n        public string StateCode { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Program.cs",
    "content": "using Microsoft.AspNetCore.Authentication.Cookies;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Helpers;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.Repository;\nusing RunGroopWebApp.Services;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// Add services to the container.\nbuilder.Services.AddControllersWithViews();\nbuilder.Services.AddScoped<IClubRepository, ClubRepository>();\nbuilder.Services.AddScoped<IRaceRepository, RaceRepository>();\nbuilder.Services.AddScoped<IDashboardRepository, DashboardRepository>();\nbuilder.Services.AddScoped<IUserRepository, UserRepository>();\nbuilder.Services.AddScoped<ILocationService, LocationService>();\nbuilder.Services.AddScoped<IPhotoService, PhotoService>();\nbuilder.Services.Configure<CloudinarySettings>(builder.Configuration.GetSection(\"CloudinarySettings\"));\nbuilder.Services.AddDbContext<ApplicationDbContext>(options =>\n{\n    options.UseSqlServer(builder.Configuration.GetConnectionString(\"DefaultConnection\"));\n});\nbuilder.Services.AddIdentity<AppUser, IdentityRole>()\n    .AddEntityFrameworkStores<ApplicationDbContext>();\nbuilder.Services.AddMemoryCache();\nbuilder.Services.AddSession();\nbuilder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)\n       .AddCookie();\n\nvar app = builder.Build();\n\nif (args.Length == 1 && args[0].ToLower() == \"seeddata\")\n{\n    await Seed.SeedUsersAndRolesAsync(app);\n    //Seed.SeedData(app);\n}\n\n\n// Configure the HTTP request pipeline.\nif (!app.Environment.IsDevelopment())\n{\n    app.UseExceptionHandler(\"/Home/Error\");\n    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.\n    app.UseHsts();\n}\n\napp.UseHttpsRedirection();\napp.UseStaticFiles();\n\napp.UseRouting();\napp.UseAuthentication();\napp.UseAuthorization();\n\napp.MapControllerRoute(\n    name: \"default\",\n    pattern: \"{controller=Home}/{action=Index}/{id?}\");\n\napp.Run();\n"
  },
  {
    "path": "RunGroopWebApp/Properties/launchSettings.json",
    "content": "﻿{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      \"applicationUrl\": \"http://localhost:42985\",\n      \"sslPort\": 44364\n    }\n  },\n  \"profiles\": {\n    \"RunGroopWebApp\": {\n      \"commandName\": \"Project\",\n      \"dotnetRunMessages\": true,\n      \"launchBrowser\": true,\n      \"applicationUrl\": \"https://localhost:7195;http://localhost:5195\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    },\n    \"IIS Express\": {\n      \"commandName\": \"IISExpress\",\n      \"launchBrowser\": true,\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Repository/ClubRepository.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Repository\n{\n    public class ClubRepository : IClubRepository\n    {\n        private readonly ApplicationDbContext _context;\n\n        public ClubRepository(ApplicationDbContext context)\n        {\n            _context = context;\n        }\n\n        public bool Add(Club club)\n        {\n            _context.Add(club);\n            return Save();\n        }\n\n        public bool Delete(Club club)\n        {\n            _context.Remove(club);\n            return Save();\n        }\n\n        public async Task<IEnumerable<Club>> GetAll()\n        {\n            return await _context.Clubs.ToListAsync();\n        }\n\n        public async Task<List<State>> GetAllStates()\n        {\n            return await _context.States.ToListAsync();\n        }\n\n        public async Task<IEnumerable<Club>> GetSliceAsync(int offset, int size)\n        {\n            return await _context.Clubs.Include(i => i.Address).Skip(offset).Take(size).ToListAsync();\n        }\n\n        public async Task<IEnumerable<Club>> GetClubsByCategoryAndSliceAsync(ClubCategory category, int offset, int size)\n        {\n            return await _context.Clubs\n                .Include(i => i.Address)\n                .Where(c => c.ClubCategory == category)\n                .Skip(offset)\n                .Take(size)\n                .ToListAsync();\n        }\n\n        public async Task<int> GetCountByCategoryAsync(ClubCategory category)\n        {\n            return await _context.Clubs.CountAsync(c => c.ClubCategory == category);\n        }\n\n        public async Task<Club?> GetByIdAsync(int id)\n        {\n            return await _context.Clubs.Include(i => i.Address).FirstOrDefaultAsync(i => i.Id == id);\n        }\n\n        public async Task<Club?> GetByIdAsyncNoTracking(int id)\n        {\n            return await _context.Clubs.Include(i => i.Address).AsNoTracking().FirstOrDefaultAsync(i => i.Id == id);\n        }\n\n        public async Task<IEnumerable<Club>> GetClubByCity(string city)\n        {\n            return await _context.Clubs.Where(c => c.Address.City.Contains(city)).Distinct().ToListAsync();\n        }\n\n        public bool Save()\n        {\n            var saved = _context.SaveChanges();\n            return saved > 0;\n        }\n\n        public bool Update(Club club)\n        {\n            _context.Update(club);\n            return Save();\n        }\n\n        public async Task<int> GetCountAsync()\n        {\n            return await _context.Clubs.CountAsync();\n        }\n\n        public async Task<IEnumerable<Club>> GetClubsByState(string state)\n        {\n            return await _context.Clubs.Where(c => c.Address.State.Contains(state)).ToListAsync();\n        }\n\n        public async Task<List<City>> GetAllCitiesByState(string state)\n        {\n            return await _context.Cities.Where(c => c.StateCode.Contains(state)).ToListAsync();\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Repository/DashboardRepository.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Repository\n{\n    public class DashboardRepository : IDashboardRepository\n    {\n        private readonly ApplicationDbContext _context;\n        private readonly IHttpContextAccessor _httpContextAccessor;\n\n        public DashboardRepository(ApplicationDbContext context, IHttpContextAccessor httpContextAccessor)\n        {\n            _context = context;\n            _httpContextAccessor = httpContextAccessor;\n        }\n        public async Task<List<Club>> GetAllUserClubs()\n        {\n            var curUser = _httpContextAccessor.HttpContext?.User.GetUserId();\n            var userClubs = _context.Clubs.Where(r => r.AppUser.Id == curUser);\n            return userClubs.ToList();\n        }\n\n        public async Task<List<Race>> GetAllUserRaces()\n        {\n            var curUser = _httpContextAccessor.HttpContext?.User.GetUserId();\n            var userRaces = _context.Races.Where(r => r.AppUser.Id == curUser);\n            return userRaces.ToList();\n        }\n        public async Task<AppUser> GetUserById(string id)\n        {\n            return await _context.Users.FindAsync(id);\n        }\n\n        public async Task<AppUser> GetByIdNoTracking(string id)\n        {\n            return await _context.Users.Where(u => u.Id == id).AsNoTracking().FirstOrDefaultAsync();\n        }\n\n        public bool Update(AppUser user)\n        {\n            _context.Users.Update(user);\n            return Save();\n        }\n\n        public bool Save()\n        {\n            var saved = _context.SaveChanges();\n            return saved > 0 ? true : false;\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Repository/RaceRepository.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Repository\n{\n    public class RaceRepository : IRaceRepository\n    {\n        private readonly ApplicationDbContext _context;\n\n        public RaceRepository(ApplicationDbContext context)\n        {\n            _context = context;\n        }\n\n        public bool Add(Race race)\n        {\n            _context.Add(race);\n            return Save();\n        }\n\n        public bool Delete(Race race)\n        {\n            _context.Remove(race);\n            return Save();\n        }\n\n        public async Task<IEnumerable<Race>> GetAll()\n        {\n            return await _context.Races.ToListAsync();\n        }\n\n        public async Task<IEnumerable<Race>> GetAllRacesByCity(string city)\n        {\n            return await _context.Races.Where(c => c.Address.City.Contains(city)).ToListAsync();\n        }\n\n        public async Task<Race?> GetByIdAsync(int id)\n        {\n            return await _context.Races.Include(i => i.Address).FirstOrDefaultAsync(x => x.Id == id);\n        }\n\n        public async Task<Race?> GetByIdAsyncNoTracking(int id)\n        {\n            return await _context.Races.Include(i => i.Address).AsNoTracking().FirstOrDefaultAsync();\n        }\n\n        public async Task<int> GetCountAsync()\n        {\n            return await _context.Races.CountAsync();\n        }\n\n        public async Task<int> GetCountByCategoryAsync(RaceCategory category)\n        {\n            return await _context.Races.CountAsync(r => r.RaceCategory == category);\n        }\n\n        public async Task<IEnumerable<Race>> GetSliceAsync(int offset, int size)\n        {\n            return await _context.Races.Include(a => a.Address).Skip(offset).Take(size).ToListAsync();\n        }\n\n        public async Task<IEnumerable<Race>> GetRacesByCategoryAndSliceAsync(RaceCategory category, int offset, int size)\n        {\n            return await _context.Races\n                .Where(r => r.RaceCategory == category)\n                .Include(a => a.Address)\n                .Skip(offset)\n                .Take(size)\n                .ToListAsync();\n        }\n\n        public bool Save()\n        {\n            var saved = _context.SaveChanges();\n            return saved > 0;\n        }\n\n        public bool Update(Race race)\n        {\n            _context.Update(race);\n            return Save();\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/Repository/UserRepository.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Repository\n{\n    public class UserRepository : IUserRepository\n    {\n        private readonly ApplicationDbContext _context;\n\n        public UserRepository(ApplicationDbContext context)\n        {\n            _context = context;\n        }\n\n        public bool Add(AppUser user)\n        {\n            throw new NotImplementedException();\n        }\n\n        public bool Delete(AppUser user)\n        {\n            throw new NotImplementedException();\n        }\n\n        public async Task<IEnumerable<AppUser>> GetAllUsers()\n        {\n            return await _context.Users.ToListAsync();\n        }\n\n        public async Task<AppUser> GetUserById(string id)\n        {\n            return await _context.Users.FindAsync(id);\n        }\n\n        public bool Save()\n        {\n            var saved = _context.SaveChanges();\n            return saved > 0 ? true : false;\n        }\n\n        public bool Update(AppUser user)\n        {\n            _context.Update(user);\n            return Save();\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/RunGroopWebApp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>net6.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <ImplicitUsings>enable</ImplicitUsings>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"CloudinaryDotNet\" Version=\"1.17.0\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.Identity.EntityFrameworkCore\" Version=\"6.0.2\" />\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore\" Version=\"6.0.2\" />\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.SqlServer\" Version=\"6.0.2\" />\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.Tools\" Version=\"6.0.2\">\n      <PrivateAssets>all</PrivateAssets>\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n    </PackageReference>\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "RunGroopWebApp/Services/LocationService.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Extensions;\nusing RunGroopWebApp.Helpers;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.Services\n{\n    public class LocationService : ILocationService\n    {\n        private readonly ApplicationDbContext _context;\n\n        public LocationService(ApplicationDbContext context)\n        {\n            _context = context;\n        }\n\n        public async Task<City> GetCityByZipCode(int zipCode)\n        {\n            return await _context.Cities.FirstOrDefaultAsync(x => x.Zip == zipCode);\n        }\n        public async Task<List<City>> GetLocationSearch(string location)\n        {\n            List<City> result;\n            if(location.Length > 0 && char.IsDigit(location[0]))\n            {\n                return await _context.Cities.Where(x => x.Zip.ToString().StartsWith(location)).Take(4).Distinct().ToListAsync();\n            }\n            else if (location.Length > 0)\n            {\n                result = await _context.Cities.Where(x => x.CityName == location).Take(10).ToListAsync();\n            }\n            result = await _context.Cities.Where(x => x.StateCode == location).Take(10).ToListAsync();\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Services/PhotoService.cs",
    "content": "﻿using CloudinaryDotNet;\nusing CloudinaryDotNet.Actions;\nusing Microsoft.Extensions.Options;\nusing RunGroopWebApp.Helpers;\nusing RunGroopWebApp.Interfaces;\n\nnamespace RunGroopWebApp.Services\n{\n    public class PhotoService : IPhotoService\n    {\n        private readonly Cloudinary _cloundinary;\n\n        public PhotoService(IOptions<CloudinarySettings> config)\n        {\n            var acc = new Account(\n                config.Value.CloudName,\n                config.Value.ApiKey,\n                config.Value.ApiSecret\n                );\n            _cloundinary = new Cloudinary(acc);\n        }\n\n        public async Task<ImageUploadResult> AddPhotoAsync(IFormFile file)\n        {\n            var uploadResult = new ImageUploadResult();\n            if (file.Length > 0)\n            {\n                using var stream = file.OpenReadStream();\n                var uploadParams = new ImageUploadParams\n                {\n                    File = new FileDescription(file.FileName, stream),\n                    Transformation = new Transformation().Height(500).Width(500).Crop(\"fill\").Gravity(\"face\")\n                };\n                uploadResult = await _cloundinary.UploadAsync(uploadParams);\n            }\n            return uploadResult;\n        }\n\n        public async Task<DeletionResult> DeletePhotoAsync(string publicUrl)\n        {\n            var publicId = publicUrl.Split('/').Last().Split('.')[0];\n            var deleteParams = new DeletionParams(publicId);\n            return await _cloundinary.DestroyAsync(deleteParams);\n        }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/CreateClubViewModel.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class CreateClubViewModel\n    {\n        public int Id { get; set; }\n        public string Title { get; set; }\n        public string Description { get; set; }\n        public Address Address { get; set; }\n        public IFormFile Image { get; set; }\n        public ClubCategory ClubCategory { get; set; }\n        public string AppUserId { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/CreateRaceViewModel.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class CreateRaceViewModel\n    {\n        public int Id { get; set; }\n        public string Title { get; set; }\n        public string Description { get; set; }\n        public Address Address { get; set; }\n        public IFormFile Image { get; set; }\n        public RaceCategory RaceCategory { get; set; }\n        public string AppUserId { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/DashboardViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class DashboardViewModel\n    {\n        public List<Race> Races { get; set; }\n        public List<Club> Clubs { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/EditClubViewModel.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class EditClubViewModel\n    {\n        public int Id{ get; set; }\n        public string Title { get; set; }\n        public string Description { get; set; }\n        public IFormFile Image { get; set; }\n        public string? URL { get; set; }\n        public int? AddressId { get; set; }\n        public Address? Address { get; set; }\n        public ClubCategory ClubCategory { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/EditProfileViewModel.cs",
    "content": "﻿namespace RunGroopWebApp.ViewModels\n{\n    public class EditProfileViewModel\n    {\n        public int? Pace { get; set; }\n        public int? Mileage { get; set; }\n        public string? ProfileImageUrl { get; set; }\n        public string? City { get; set; }\n        public string? State { get; set; }\n        public IFormFile? Image { get; set; }\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/EditRaceViewModel.cs",
    "content": "﻿using RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class EditRaceViewModel\n    {\n        public int Id { get; set; }\n        public string Title { get; set; }\n        public string Description { get; set; }\n        public IFormFile Image { get; set; }\n        public string? URL { get; set; }\n        public int AddressId { get; set; }\n        public Address Address { get; set; }\n        public RaceCategory RaceCategory { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/HomeUserCreateViewModel.cs",
    "content": "﻿using System.ComponentModel.DataAnnotations;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class HomeUserCreateViewModel\n    {\n        public string UserName { get; set; }\n        public string Email { get; set; }\n        [DataType(DataType.Password)]\n        public string Password { get; set; }\n        [Required]\n        public int? ZipCode { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/HomeViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class HomeViewModel\n    {\n        public IEnumerable<Club>? Clubs { get; set; }\n        public string? City { get; set; }\n        public string? State { get; set; }\n        public HomeUserCreateViewModel Register { get; set; } = new HomeUserCreateViewModel();\n    }\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/IndexClubViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels;\n\npublic class IndexClubViewModel\n{\n    public IEnumerable<Club> Clubs { get; set; }\n    public int PageSize { get; set; }\n    public int Page { get; set; }\n    public int TotalPages { get; set; }\n    public int TotalClubs { get; set; }\n    public int Category { get; set; }\n    public bool HasPreviousPage => Page > 1;\n\n    public bool HasNextPage => Page < TotalPages;\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/IndexRaceViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels;\n\npublic class IndexRaceViewModel\n{\n    public IEnumerable<Race> Races { get; set; }\n    public int PageSize { get; set; }\n    public int Page { get; set; }\n    public int TotalPages { get; set; }\n    public int TotalRaces { get; set; }\n    public int Category { get; set; }\n    public bool HasPreviousPage => Page > 1;\n    public bool HasNextPage => Page < TotalPages;\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/ListClubByCityViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class ListClubByCityViewModel\n    {\n        public IEnumerable<Club> Clubs { get; set; }\n        public bool NoClubWarning { get; set; } = false;\n        public string City { get; set; }\n        public string State { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/ListClubByStateViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class ListClubByStateViewModel\n    {\n        public IEnumerable<Club> Clubs { get; set; }\n        public bool NoClubWarning { get; set; } = false;\n        public string State { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/LoginViewModel.cs",
    "content": "﻿using System.ComponentModel.DataAnnotations;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class LoginViewModel\n    {\n        [Display(Name = \"Email Address\")]\n        [Required(ErrorMessage = \"Email address is required\")]\n        public string EmailAddress { get; set; }\n        [Required]\n        [DataType(DataType.Password)]\n        public string Password { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/RegisterViewModel.cs",
    "content": "﻿using System.ComponentModel.DataAnnotations;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class RegisterViewModel\n    {\n        [Display(Name = \"Email address\")]\n        [Required(ErrorMessage = \"Email address is required\")]\n        public string EmailAddress { get; set; }\n        [Required]\n        [DataType(DataType.Password)]\n        public string Password { get; set; }\n        [Display(Name = \"Confirm password\")]\n        [Required(ErrorMessage = \"Confirm password is required\")]\n        [DataType(DataType.Password)]\n        [Compare(\"Password\", ErrorMessage = \"Password do not match\")]\n        public string ConfirmPassword { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/RunningClubByCity.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class RunningClubByCity\n    {\n        public List<City> Cities { get; set; } = null;\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/RunningClubByState.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels\n{\n    public class RunningClubByState\n    {\n        public List<State> States { get; set; } = null;\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/ViewModels/UserDetailViewModel.cs",
    "content": "﻿using RunGroopWebApp.Models;\n\nnamespace RunGroopWebApp.ViewModels;\n\npublic class UserDetailViewModel\n{\n    public string Id { get; set; }\n    public string UserName { get; set; }\n    public int? Pace { get; set; }\n    public int? Mileage { get; set; }\n    public string? City { get; set; }\n    public string? State { get; set; }\n    public string ProfileImageUrl { get; set; }\n\n    public string Location => (City, State) switch\n    {\n        (string city, string state) => $\"{city}, {state}\",\n        (string city, null) => city,\n        (null, string state) => state,\n        (null, null) => \"\",\n    };\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/UserViewModel.cs",
    "content": "﻿namespace RunGroopWebApp.ViewModels;\n\npublic class UserViewModel\n{\n    public string Id { get; set; }\n    public string UserName { get; set; }\n    public int? Pace { get; set; }\n    public int? Mileage { get; set; }\n    public string? City { get; set; }\n    public string? State { get; set; }\n    public string ProfileImageUrl { get; set; }\n\n    public string Location => (City, State) switch\n    {\n        (string city, string state) => $\"{city}, {state}\",\n        (string city, null) => city,\n        (null, string state) => state,\n        (null, null) => \"\",\n    };\n}"
  },
  {
    "path": "RunGroopWebApp/ViewModels/WelcomeViewModel.cs",
    "content": "﻿namespace RunGroopWebApp.ViewModels\n{\n    public class WelcomeViewModel\n    {\n        public int? Pace { get; set; }\n        public int? Mileage { get; set; }\n        public string? ProfileImageUrl { get; set; }\n        public string? City { get; set; }\n        public string? State { get; set; }\n        public IFormFile? Image { get; set; }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp/Views/Account/Login.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model LoginViewModel\n\n@{\n    ViewData[\"Title\"] = \"Login\";\n}\n<div class=\"row\">\n    <div class=\"col-md-6 offset-3\">\n        <p>\n            <h4>Log in to your account</h4>\n        </p>\n        @if(TempData[\"Error\"] != null)\n        {\n            <div class=\"col-md-12 alert alert-danger\">\n                <span><b>Sorry!</b> - @TempData[\"Error\"]</span>\n            </div>\n        }\n        <div class=\"row\">\n            <div class=\"col-md-8 offset-2\">\n                <form asp-action=\"Login\">\n                    <div asp-validation-summary=\"ModelOnly\" class=\"text-danger\"></div>\n                    <div class=\"form-group\">\n                        <label asp-for=\"EmailAddress\" class=\"control-label\"></label>\n                        <input asp-for=\"EmailAddress\" class=\"form-control\">\n                        <span asp-validation-for=\"EmailAddress\" class=\"text-danger\"></span>\n                    </div>\n                    <div class=\"form-group\">\n                        <label asp-for=\"Password\" class=\"control-label\"></label>\n                        <input asp-for=\"Password\" class=\"form-control\" />\n                        <span asp-validation-for=\"Password\" class=\"text-danger\"></span>\n                    </div>\n                    <div class=\"form-group\">\n                        <input class=\"btn btn-outline-success float right\" type=\"submit\" value=\"Log in\" />\n                        <a class=\"btn btn-outline-secondary\" asp-controller=\"Club\" asp-action=\"Index\">Cancel</a>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Account/Register.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model RegisterViewModel\n\n@{\n    ViewData[\"Title\"] = \"Sign up\";\n}\n\n<div class=\"row\">\n    <div class=\"col-md-6 offset-3\">\n        <p>\n        <h4>Sign up for a new account</h4>\n        </p>\n\n        @if (TempData[\"Error\"] != null)\n        {\n            <div class=\"col-md-12 alert alert-danger\">\n                <span><b>Sorry!</b> - @TempData[\"Error\"] </span>\n            </div>\n        }\n\n        <div class=\"row\">\n            <div class=\"col-md-8 offset-2\">\n                <form asp-action=\"Register\">\n                    <div asp-validation-summary=\"ModelOnly\" class=\"text-danger\"></div>\n\n                    <div class=\"form-group\">\n                        <label asp-for=\"EmailAddress\" class=\"control-label\"></label>\n                        <input asp-for=\"EmailAddress\" class=\"form-control\" />\n                        <span asp-validation-for=\"EmailAddress\" class=\"text-danger\"></span>\n                    </div>\n                    <div class=\"form-group\">\n                        <label asp-for=\"Password\" class=\"control-label\"></label>\n                        <input asp-for=\"Password\" class=\"form-control\" />\n                        <span asp-validation-for=\"Password\" class=\"text-danger\"></span>\n                    </div>\n                    <div class=\"form-group\">\n                        <label asp-for=\"ConfirmPassword\" class=\"control-label\"></label>\n                        <input asp-for=\"ConfirmPassword\" class=\"form-control\" />\n                        <span asp-validation-for=\"ConfirmPassword\" class=\"text-danger\"></span>\n                    </div>\n\n                    <div class=\"form-group\">\n                        <input class=\"btn btn-outline-success float-right\" type=\"submit\" value=\"Sign up\" />\n                        <a class=\"btn btn-outline-secondary\" asp-controller=\"Race\" asp-action=\"Index\">Cancel</a>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "RunGroopWebApp/Views/Account/Welcome.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model WelcomeViewModel\n@*\n    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860\n*@\n@{\n\n}\n     <section>\n        <div class=\"container\">\n          <form class=\"row justify-content-around\">\n            <!--end of col-->\n            <div class=\"col col-lg-9 tab-content\">\n              <div id=\"first\">\n                <div class=\"row align-items-center mb-5\">\n                  <div class=\"col-12 col-md-7\">\n                    <h6 class=\"title-decorative\">Step One</h6>\n                    <h3 class=\"h1\">Upload A Picture</h3>\n                    <span class=\"lead\">Let's begin by uploading a picture. Users that upload pictures run more!</span>\n                  </div>\n                  <!--end of col-->\n                   <div class=\"media flex-wrap mb-0 align-items-center\">\n                                @*<img alt=\"Image\" src=\"@imageU\" class=\"avatar avatar-lg mb-3 mb-md-0\" />*@\n                                <div class=\"media-body\">\n                                    <form asp-action=\"EditProfile\" enctype=\"multipart/form-data\">\n                                        <label asp-for=\"Image\" class=\"custom-file mb-2\" for=\"file2\">\n                                            <input asp-for=\"Image\" type=\"file\" id=\"file2\" class=\"custom-file-input height-0\" oninput=\"submitProfileImage();\" />\n                                            <span class=\"btn btn-primary\"><i class=\"icon-upload-to-cloud\">&nbsp;</i>Upload</span>\n                                            <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n                                            <button id=\"submit-image-button\" type=\"submit\" hidden></button>\n                                        </label>\n                                        <div>\n                                            <small>For best results, use an image at least 256px by 256px in either .jpg or .png format</small>\n                                        </div>\n                                    </form>\n                                </div>\n                            </div>\n                  <!--end of col-->\n               </div>\n               </div>\n              </div>\n            </form>\n          </div>\n      </section>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Club/Create.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@using RunGroopWebApp.ViewModels\n@model CreateClubViewModel\n@*\n    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860\n*@\n@{\n}\n\n <div class=\"navbar-container\">\n    </div>\n    <div class=\"main-container\">\n      <section class=\"space-sm\">\n        <div class=\"container\">\n          <div class=\"row mb-5\">\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n          <div class=\"row flex-md-row card card-md\">\n            <div class=\"card-body bg-secondary\">\n              <div class=\"text-center mb-5\">\n                <h1 class=\"h2 mb-2\">Create your own running club</h1>\n                <span>Bring together runners in your community</span>\n              </div>\n              <div class=\"row justify-content-center\">\n                <div class=\"col-6 col-lg-5\">\n                  <form method=\"post\" asp-action=\"Create\" enctype=\"multipart/form-data\">\n                   <input type=\"hidden\" id=\"AppUserId\" name=\"AppUserId\" asp-for=\"AppUserId\" />\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Title\" class=\"form-control form-control-lg\" placeholder=\"Title\" />\n                        <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n                      </div>\n                      <div class=\"col\">                        \n                        <select asp-for=\"ClubCategory\" asp-items=\"@Html.GetEnumSelectList<ClubCategory>()\" class=\"form-control form-control-lg\">\n                                <option>--Select--</option>\n                        </select>\n                        <span asp-validation-for=\"ClubCategory\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                       \n                        <input asp-for=\"Description\" class=\"form-control form-control-lg\" placeholder=\"Description\" />\n                        <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n                      </div>\n                    </div> \n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Address.Street\" class=\"form-control form-control-lg\" placeholder=\"Street\" />\n                        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Address.City\" class=\"form-control form-control-lg\" placeholder=\"City\" />\n                        <span asp-validation-for=\"Address.City\" class=\"text-danger\"></span>\n                      </div>\n                      <div class=\"col\">                        \n                        <input asp-for=\"Address.State\" class=\"form-control form-control-lg\" placeholder=\"State\" />\n                        <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Image\" type=\"file\" class=\"form-control form-control-lg\" placeholder=\"Image\" />\n                        <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">\n                        <button class=\"btn btn-block btn-success btn-lg\" type=\"submit\">Create Account</button>\n                      </div>\n                    </div>\n                  </form>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <!--end of container-->\n      </section>\n      <!--end of section-->\n    </div>\n\n"
  },
  {
    "path": "RunGroopWebApp/Views/Club/Delete.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@model Club\n\n<h1>Are you sure you want to delete this club?</h1>\n\n<form method=\"post\" asp-action=\"Delete\" enctype=\"multipart/form-data\">\n    <input type=\"hidden\" value=\"AddressId\" id=\"AddressId\" />\n    <div class=\"form-group\">\n        <label asp-for=\"Title\">Title</label>\n        <input asp-for=\"Title\" class=\"form-control\" placeholder=\"Title\">\n        <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Description\">Description</label>\n        <input asp-for=\"Description\" class=\"form-control\" placeholder=\"Description\">\n        <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"ClubCategory\">Club Category</label>\n        <select asp-for=\"ClubCategory\" asp-items=\"@Html.GetEnumSelectList<ClubCategory>()\" class=\"form-control\">\n            <option selected=\"selected\" value=\"\">--Select--</option>\n        </select>\n        <span asp-validation-for=\"ClubCategory\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.Street\">Street</label>\n        <input asp-for=\"Address.Street\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.City\">City</label>\n        <input asp-for=\"Address.City\" class=\"form-control\" placeholder=\"City\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.State\">State</label>\n        <input asp-for=\"Address.State\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Image\">Image</label>\n        <input asp-for=\"Image\" type=\"file\" class=\"form-control\" placeholder=\"Image\">\n        <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n\n    </div>\n    </form>\n    <div class=\"form-group\">\n        <form action=\"Delete\" method=\"post\">\n            <input type=\"hidden\" asp-for=\"Id\" />\n            <input type=\"submit\" value=\"Confirm\" class=\"btn btn-danger float-right mt-3\" />\n        </form>\n     </div>\n\n"
  },
  {
    "path": "RunGroopWebApp/Views/Club/DetailClub.cshtml",
    "content": "﻿@model Club\n@*\n    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860\n*@\n@{\n}\n\n  <div class=\"main-container\">\n      <nav aria-label=\"breadcrumb\" role=\"navigation\" class=\"bg-primary text-white\">\n        <div class=\"container\">\n          <div class=\"row justify-content-center\">\n            <div class=\"col\">\n              <ol class=\"breadcrumb\">\n                <li class=\"breadcrumb-item\"><a href=\"index.html\">Home</a>\n                </li>\n                <li class=\"breadcrumb-item\"><a href=\"pages-app.html\">Find</a>\n                </li>\n\n                <li class=\"breadcrumb-item active\" aria-current=\"page\">Runnings Clubs in @Model.Address.City, @Model.Address.State</li>\n              </ol>\n            </div>\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </nav>\n      <section class=\"bg-white space-sm\">\n        <div class=\"container\">\n          <div class=\"row\">\n            <div class=\"col-lg-7 mb-4 mb-sm-0\">\n              <img alt=\"Image\" src=\"@Model.Image\" class=\"rounded img-fluid\" />\n            </div>\n            <!--end of col-->\n            <div class=\"col-lg-4 d-flex flex-column justify-content-between mr-auto ml-auto\">\n              <div>\n                <h1 class=\"mb-2\">@Model.Title</h1>\n                <h2 class=\"lead mb-3\">@Model.Address.City, @Model.Address.State</h2>\n                <div>\n                  <span class=\"badge badge-secondary mr-3\">@Model.ClubCategory</span>\n                </div>\n                <div>\n                  <ul class=\"list-inline text-small d-inline-block mb-3\">\n                    <li class=\"list-inline-item\"><i class=\"icon-thumbs-up\"></i> 214</li>\n                    <li class=\"list-inline-item\"><i class=\"icon-message\"></i> 6</li>\n                  </ul>\n                </div>\n              </div>\n              <div>\n                <div class=\"btn-group mb-2\">\n                  <button type=\"button\" class=\"btn btn-success btn-lg\">Join Club</button>\n                  <button type=\"button\" class=\"btn btn-success dropdown-toggle dropdown-toggle-split dropdown-toggle-no-arrow\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                    <i class=\"icon-dots-three-horizontal\"></i>\n                    <span class=\"sr-only\">Toggle Dropdown</span>\n                  </button>\n                  <div class=\"dropdown-menu dropdown-menu-right dropdown-menu-sm\">\n                    <a class=\"dropdown-item\" href=\"#\">Action</a>\n                    <a class=\"dropdown-item\" href=\"#\">Another action</a>\n                    <a class=\"dropdown-item\" href=\"#\">Something else here</a>\n                    <div class=\"dropdown-divider\"></div>\n                    <a class=\"dropdown-item\" href=\"#\">Separated link</a>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </section>\n      <!--end of section-->\n      <section class=\"space-sm\">\n        <div class=\"container\">\n          <div class=\"row justify-content-between\">\n            <div class=\"col-12 col-md-8 col-lg-7\">\n              <h5 class=\"mb-4\">Overview</h5>\n              <article>\n                @Model.Description\n              </article>\n              <hr>\n              <h5 class=\"mb-4\">Discussion</h5>\n              <div class=\"card\">\n                <div class=\"card-header bg-secondary d-flex justify-content-between\">\n                  <button class=\"btn btn-secondary\" type=\"button\" data-target=\"#comment-reply\" data-toggle=\"collapse\" aria-expanded=\"false\" aria-controls=\"comment-reply\">Post a reply</button>\n                  <form class=\"d-flex align-items-center\">\n                    <span class=\"mr-2 text-muted text-small text-nowrap\">Sort by:</span>\n                    <select class=\"custom-select\">\n                      <option value=\"alpha\">Alphabetical</option>\n                      <option value=\"old-new\" selected>Newest</option>\n                      <option value=\"new-old\">Popular</option>\n                      <option value=\"recent\">Recently Updated</option>\n                    </select>\n                  </form>\n                </div>\n                <div class=\"collapse\" id=\"comment-reply\">\n                  <form class=\"card-body\">\n                    <div class=\"form-group\">\n                      <textarea class=\"form-control from-control-lg\" id=\"comment-reply-text\" name=\"comment-reply\" rows=\"4\" placeholder=\"Type your reply here\"></textarea>\n                    </div>\n                    <div class=\"mb-2\">\n                      <div class=\"custom-control custom-checkbox\">\n                        <input type=\"checkbox\" class=\"custom-control-input\" name=\"notify-reply\" id=\"check-notify\">\n                        <label class=\"custom-control-label text-small\" for=\"check-notify\">Notify me when someone replies</label>\n                      </div>\n                    </div>\n                    <div class=\"d-flex align-items-center\">\n                      <button type=\"submit\" class=\"btn btn-success mr-3\">Submit reply</button>\n                      <a href=\"#comment-reply\" class=\"text-small text-muted\" data-toggle=\"collapse\" aria-expanded=\"true\" aria-controls=\"comment-reply\">Cancel</a>\n                    </div>\n                  </form>\n                </div>\n                <ul class=\"list-group list-group-flush list-group-comments\">\n\n@*                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-female-2.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Kelly Fraiser</span>\n                          <span class=\"text-muted\">Making awesome products</span>\n                        </div>\n                        <p>\n                          Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>&nbsp;(2)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>\n\n                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-male-6.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Tim Lester</span>\n                          <span class=\"text-muted\">Interface Designer </span>\n                        </div>\n                        <p>\n                          Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>\n                            </button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-female-5.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Carly Pemberton</span>\n                          <span class=\"text-muted\">Freelance Product Engineer</span>\n                        </div>\n                        <p>\n                          Omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>(4)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/graphic-product-paydar-thumb.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Luke Carol</span>\n                          <span class=\"text-muted\">Product Designer</span>\n                        </div>\n                        <p>\n                          Adipisci velit, sed quia non numquam eius modi tempora\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>\n                            </button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>\n\n                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-male-3.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Pip Thompson</span>\n                          <span class=\"text-muted\">Development at Kin</span>\n                        </div>\n                        <p>\n                          Natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>&nbsp;(1)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>\n\n                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-male-1.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Daniel Cameron</span>\n                          <span class=\"text-muted\">Industrial Designer at Kin</span>\n                        </div>\n                        <p>\n                          Nam HTML tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>&nbsp;(1)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>*@\n\n                </ul>\n              </div>\n\n            </div>\n            <!--end of col-->\n            <div class=\"col-12 col-md-4\">\n@*              <div class=\"card card-borderless bg-secondary\">\n                <a class=\"card-body\" href=\"#\">\n                  <div class=\"d-flex justify-content-between mb-3\">\n                    <img alt=\"Image\" src=\"assets/img/logo-w-gradient.svg\" />\n                    <span class=\"title-decorative\">Sponsor</span>\n                  </div>\n                  <span class=\"h6\">A robust suite of styled elements and pages for Bootstrap 4</span>\n                </a>\n              </div>*@\n              <!-- end card -->\n              <div class=\"card\">\n                <ul class=\"list-group list-group-flush\">\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-text-document mr-1\"></i> Created</div>\n                      <span>17/11/2017</span>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-edit mr-1\"></i> Last updated</div>\n                      <span>23/12/2017</span>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-thumbs-up mr-1\"></i> Owner</div>\n                      <span>214</span>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-share mr-1\"></i> Shares</div>\n                      <span>52</span>\n                    </div>\n                  </li>\n                </ul>\n              </div>\n             @* <div class=\"card\">\n                <div class=\"card-header d-flex justify-content-between\">\n                  <div>\n                    <span class=\"h6\">Contributors</span>\n                  </div>\n                  <a href=\"#\">View all &rsaquo;</a>\n                </div>\n                <div class=\"card-body\">\n                  <ul class=\"list-unstyled list-spacing-sm\">\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-male-1.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Daniel Cameron</span>\n                          <span class=\"text-muted\">Product Designer</span>\n                        </div>\n                      </a>\n                    </li>\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-female-1.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Caitlyn Halsy</span>\n                          <span class=\"text-muted\">Marketing Professional</span>\n                        </div>\n                      </a>\n                    </li>\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-male-2.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Toby Marsh</span>\n                          <span class=\"text-muted\">Developer</span>\n                        </div>\n                      </a>\n                    </li>\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-female-2.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Lucille Freebody</span>\n                          <span class=\"text-muted\">Graphic Designer</span>\n                        </div>\n                      </a>\n                    </li>\n\n                  </ul>\n                </div>\n              </div>*@\n              <!-- end card -->\n              @*<div class=\"card\">\n                <div class=\"card-header d-flex justify-content-between\">\n                  <div>\n                    <span class=\"h6\">Related Products</span>\n                  </div>\n                  <a href=\"#\">View all &rsaquo;</a>\n                </div>\n                <div class=\"card-body\">\n                  <ul class=\"list-unstyled list-spacing-sm\">\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-bench-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">Bench</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Productivity</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 373</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 62</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-kin-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">Kin</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Lifestyle</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 84</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 21</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-paydar-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">Paydar</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Productivity</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 253</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 19</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-pipeline-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">pipeline.js</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Development</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 84</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 25</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                  </ul>\n                </div>\n              </div>*@\n              <!-- end card -->\n            </div>\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </section>"
  },
  {
    "path": "RunGroopWebApp/Views/Club/Edit.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@using RunGroopWebApp.ViewModels\n@model EditClubViewModel\n\n\n<form method=\"post\" asp-action=\"Edit\" enctype=\"multipart/form-data\">\n    <input type=\"hidden\" value=\"AddressId\" id=\"AddressId\" />\n    <div class=\"form-group\">\n        <label asp-for=\"Title\">Title</label>\n        <input asp-for=\"Title\" class=\"form-control\" placeholder=\"Title\">\n        <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Description\">Description</label>\n        <input asp-for=\"Description\" class=\"form-control\" placeholder=\"Description\">\n        <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"ClubCategory\">Club Category</label>\n        <select asp-for=\"ClubCategory\" asp-items=\"@Html.GetEnumSelectList<ClubCategory>()\" class=\"form-control\">\n            <option selected=\"selected\" value=\"\">--Select--</option>\n        </select>\n        <span asp-validation-for=\"ClubCategory\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.Street\">Street</label>\n        <input asp-for=\"Address.Street\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.City\">City</label>\n        <input asp-for=\"Address.City\" class=\"form-control\" placeholder=\"City\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.State\">State</label>\n        <input asp-for=\"Address.State\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Image\">Image</label>\n        <input asp-for=\"Image\" type=\"file\" class=\"form-control\" placeholder=\"Image\">\n        <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n\n    </div>\n    <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n</form>"
  },
  {
    "path": "RunGroopWebApp/Views/Club/Index.cshtml",
    "content": "@using RunGroopWebApp.Data.Enum\n@using RunGroopWebApp.Extensions\n@using RunGroopWebApp.ViewModels\n@model IndexClubViewModel\n\n@{\n    bool isAuthenticated = User.Identity?.IsAuthenticated == true;\n\n    int resultStart = ((Model.Page - 1) * Model.PageSize) + 1;\n    int resultEnd = Math.Min(resultStart + Model.PageSize - 1, Model.TotalClubs);\n\n    bool isValidPage = resultStart <= Model.TotalClubs;\n\n    var prevDisabled = !Model.HasPreviousPage ? \"disabled\" : \"\";\n    var nextDisabled = !Model.HasNextPage ? \"disabled\" : \"\";\n}\n\n\n<section class=\"space-sm flush-with-above\">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col text-center\">\n                <p>Club Categories</p>\n                <div class=\"mb-3\">\n                    <a type=\"button\" class=\"btn btn-secondary mb-1\" asp-action=\"Index\" asp-route-page=\"1\" asp-route-category=\"-1\">All</a>\n                    @foreach (var category in Html.GetEnumSelectList<ClubCategory>())\n                    {\n                        <a type=\"button\" class=\"btn btn-secondary mb-1\" asp-action=\"Index\" asp-route-page=\"1\" asp-route-category=\"@category.Value\">@category.Text</a>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"container\">\n        <div class=\"d-flex justify-content-between align-items-center mb-4\">\n            <div>\n                @if (isValidPage)\n                {\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @prevDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page - 1)\" asp-route-category=\"@Model.Category\">\n                        Prev\n                    </a>\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @nextDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page + 1)\" asp-route-category=\"@Model.Category\">\n                        Next\n                    </a>\n                    <span class=\"text-muted text-small\">Results @resultStart - @resultEnd of @Model.TotalClubs</span>\n                }\n            </div>\n        </div>\n        <ul class=\"row feature-list feature-list-sm\">\n            @foreach (var club in Model.Clubs)\n            {\n                <li class=\"col-12 col-md-6 col-lg-4\">\n                    <div class=\"card\">\n                        <a type=\"button\" asp-controller=\"Club\" asp-action=\"DetailClub\" asp-route-runningClub=\"@club.Title.GenerateSlug()\" asp-route-id=\"@club.Id\">\n                            @if(@club.Image != null)\n                            {\n                                <img class=\"card-img-top\" src=\"@club.Image\" alt=\"Card image cap\">   \n                            }\n                            else\n                            {\n                                <img class=\"card-img-top\" src=\"/img/rungroopclub.png\" alt=\"Card image cap\">   \n                            }\n                            \n                        </a>\n                        <div class=\"card-body\">\n                            <h4 class=\"card-title\">@club.Title</h4>\n                            <p class=\"card-text\">@club.Description</p>\n                            <p class=\"card-text\">@club.Address.City, @club.Address.State</p>\n                        </div>\n                        <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                            <div>\n                                <small>@club.ClubCategory</small>\n                            </div>\n                            @if (isAuthenticated && User.IsInRole(\"admin\"))\n                            {\n                                <div>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-info\" asp-controller=\"Club\" asp-action=\"Edit\" asp-route-id=\"@club.Id\">\n                                        Edit\n                                    </a>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-danger\" asp-controller=\"Club\" asp-action=\"Delete\" asp-route-id=\"@club.Id\">\n                                        Delete\n                                    </a>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </li>\n            }\n        </ul>\n        <div class=\"d-flex justify-content-between align-items-center mb-4\">\n            <div>\n                @if (isValidPage)\n                {\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @prevDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page - 1)\" asp-route-category=\"@Model.Category\">\n                        Prev\n                    </a>\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @nextDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page + 1)\" asp-route-category=\"@Model.Category\">\n                        Next\n                    </a>\n                    <span class=\"text-muted text-small\">Results @resultStart - @resultEnd of @Model.TotalClubs</span>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Club/ListClubsByCity.cshtml",
    "content": "﻿@using Microsoft.AspNetCore.Identity\n@inject SignInManager<AppUser> SignInManager\n\n@using RunGroopWebApp.ViewModels\n@model ListClubByCityViewModel\n\n\n<section class=\"space-sm flush-with-above\">\n    <div class=\"container\">\n        @if (Model.NoClubWarning == true)\n        {\n            <h1 class=\"fw-light\">\n                There are no running clubs in your area! <a asp-area=\"\" asp-controller=\"Account\"\n                                                        asp-action=\"Login\">Login</a> and create one!\n            </h1>\n        }\n        else\n        {\n            <h1>Running Clubs in @Model.City, @Model.State</h1>\n        }\n        <ul class=\"row feature-list feature-list-sm\">\n            @foreach (var club in Model.Clubs)\n            {\n                <li class=\"col-12 col-md-6 col-lg-4\">\n                    <div class=\"card\">\n                        <a type=\"button\" asp-controller=\"Club\" asp-action=\"Detail\" asp-route-id=\"@club.Id\">\n                            <img class=\"card-img-top\" src=\"@club.Image\" alt=\"Card image cap\">\n                        </a>\n                        <div class=\"card-body\">\n                            <h4 class=\"card-title\">@club.Title</h4>\n                            <p class=\"card-text\">@club.Description</p>\n                        </div>\n                        <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                            <div>\n                                <small>@club.ClubCategory</small>\n                            </div>\n                            @if (SignInManager.IsSignedIn(User) && User.IsInRole(\"admin\"))\n                            {\n                                <div>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-info\" asp-controller=\"Club\" asp-action=\"Edit\" asp-route-id=\"@club.Id\">\n                                        Edit\n                                    </a>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-danger\" asp-controller=\"Club\" asp-action=\"Delete\" asp-route-id=\"@club.Id\">\n                                        Delete\n                                    </a>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </li>\n            }\n        </ul>\n    </div>\n</section>"
  },
  {
    "path": "RunGroopWebApp/Views/Club/ListClubsByState.cshtml",
    "content": "﻿@using Microsoft.AspNetCore.Identity\n@inject SignInManager<AppUser> SignInManager\n\n@using RunGroopWebApp.ViewModels\n@model ListClubByStateViewModel\n\n<section class=\"space-sm flush-with-above\">\n    <div class=\"container\">\n        @if (Model.NoClubWarning == true)\n        {\n            <h1 class=\"fw-light\">\n                There are no running clubs in your area! <a asp-area=\"\" asp-controller=\"Account\"\n                                                        asp-action=\"Login\">Login</a> and create one!\n            </h1>\n        }\n        else\n        {\n            <h1>Running Clubs in @Model.State</h1>\n        }\n        <ul class=\"row feature-list feature-list-sm\">\n            @foreach (var club in Model.Clubs)\n            {\n                <li class=\"col-12 col-md-6 col-lg-4\">\n                    <div class=\"card\">\n                        <a type=\"button\" asp-controller=\"Club\" asp-action=\"Detail\" asp-route-id=\"@club.Id\">\n                            <img class=\"card-img-top\" src=\"@club.Image\" alt=\"Card image cap\">\n                        </a>\n                        <div class=\"card-body\">\n                            <h4 class=\"card-title\">@club.Title</h4>\n                            <p class=\"card-text\">@club.Description</p>\n                        </div>\n                        <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                            <div>\n                                <small>@club.ClubCategory</small>\n                            </div>\n                            @if (SignInManager.IsSignedIn(User) && User.IsInRole(\"admin\"))\n                            {\n                                <div>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-info\" asp-controller=\"Club\" asp-action=\"Edit\" asp-route-id=\"@club.Id\">\n                                        Edit\n                                    </a>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-danger\" asp-controller=\"Club\" asp-action=\"Delete\" asp-route-id=\"@club.Id\">\n                                        Delete\n                                    </a>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </li>\n            }\n        </ul>\n    </div>\n</section>"
  },
  {
    "path": "RunGroopWebApp/Views/Club/RunningClubsByCityDirectory.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model RunningClubByCity\n\n@{\n    var cities = Model.Cities.DistinctBy(city => city.CityName);\n}\n\n<section class=\"container\">\n    <h1>Find running clubs in your city</h1>\n    <div class=\"row\">\n        <form class=\"card card-sm\">\n            <div class=\"card-body row no-gutters align-items-center\">\n                <div class=\"col-auto\">\n                    <i class=\"icon-magnifying-glass h4 text-body\"></i>\n                </div>\n                <!--end of col-->\n                <div class=\"col\">\n                    <input class=\"form-control form-control-sm form-control-borderless\" type=\"search\" placeholder=\"Search your city\" oninput=\"filterList(this.value);\">\n                </div>\n            </div>\n        </form>\n        <!--end of col-->\n    </div>\n    <ul class=\"list-unstyled\">\n        @foreach (var val in cities)\n        {\n            <li class=\"li-item\">\n                <a asp-controller=\"Club\" asp-action=\"ListClubsByCity\" asp-route-state=\"@val.StateCode\" asp-route-city=\"@val.CityName\">@val.CityName</a>\n            </li>\n        }\n    </ul>\n</section>\n\n<script type=\"text/javascript\">\n    const elements = [...document.getElementsByClassName(\"li-item\")]\n        .map(elem => ({elem, text: elem.querySelector(\"a\").innerText.toUpperCase()}));\n\n    function filterList(search) {\n        const term = search.toUpperCase();\n\n        for (const {elem, text} of elements) {\n            elem.style.display = text.includes(term) ? \"\" : \"none\";\n        }\n    }\n</script>"
  },
  {
    "path": "RunGroopWebApp/Views/Club/RunningClubsByStateDirectory.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model RunningClubByState\n\n\n<section class=\"container\">\n    <h1>Find running clubs in your state</h1>\n    <div class=\"row\">\n        <form class=\"card card-sm\">\n            <div class=\"card-body row no-gutters align-items-center\">\n                <div class=\"col-auto\">\n                    <i class=\"icon-magnifying-glass h4 text-body\"></i>\n                </div>\n                <!--end of col-->\n                <div class=\"col\">\n                    <input class=\"form-control form-control-sm form-control-borderless\" type=\"search\" placeholder=\"Search your state\" oninput=\"filterList(this.value);\">\n                </div>\n            </div>\n        </form>\n        <!--end of col-->\n    </div>\n    <ul class=\"list-unstyled\">\n        @foreach (var val in Model.States)\n        {\n            <li class=\"li-item\">\n                <a asp-controller=\"Club\" asp-action=\"ListClubsByState\" asp-route-state=\"@val.StateName\">@val.StateName</a>\n            </li>\n        }\n    </ul>\n</section>\n\n\n<script type=\"text/javascript\">\n    const elements = [...document.getElementsByClassName(\"li-item\")]\n        .map(elem => ({elem, text: elem.querySelector(\"a\").innerText.toUpperCase()}));\n\n    function filterList(search) {\n        const term = search.toUpperCase();\n\n        for (const {elem, text} of elements) {\n            elem.style.display = text.includes(term) ? \"\" : \"none\";\n        }\n    }\n</script>"
  },
  {
    "path": "RunGroopWebApp/Views/Club/RunningClubsByStateForCityDirectory.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model RunningClubByState\n\n\n\n\n<section class=\"container\">\n    <h1>Select your state</h1>\n    <div class=\"row\">\n        <form class=\"card card-sm\">\n            <div class=\"card-body row no-gutters align-items-center\">\n                <div class=\"col-auto\">\n                    <i class=\"icon-magnifying-glass h4 text-body\"></i>\n                </div>\n                <!--end of col-->\n                <div class=\"col\">\n                    <input class=\"form-control form-control-sm form-control-borderless\" type=\"search\" placeholder=\"Search your state\" oninput=\"filterState(this.value);\">\n                </div>\n            </div>\n        </form>\n        <!--end of col-->\n    </div>\n    <div class=\"row\">\n        <ul class=\"list-unstyled\">\n            @foreach (var val in Model.States)\n            {\n                <li class=\"li-item\">\n                    <a class=\"state-link\" asp-controller=\"Club\" asp-action=\"RunningClubsByCityDirectory\" asp-route-state=\"@val.StateName\">@val.StateName</a>\n                </li>\n            }\n        </ul>\n    </div>\n</section>\n\n<script type=\"text/javascript\">\n    const elements = [...document.getElementsByClassName(\"li-item\")]\n        .map(elem => ({elem, text: elem.querySelector(\"a\").innerText.toUpperCase()}));\n\n    function filterState(search) {\n        const term = search.toUpperCase();\n\n        for (const {elem, text} of elements) {\n            elem.style.display = text.includes(term) ? \"\" : \"none\";\n        }\n    }\n</script>\n\n\n"
  },
  {
    "path": "RunGroopWebApp/Views/Dashboard/Index.cshtml",
    "content": "﻿@using Microsoft.AspNetCore.Identity\n@inject SignInManager<AppUser> SignInManager\n\n@model RunGroopWebApp.ViewModels.DashboardViewModel\n\n<h1 class=\"display-4 fw-normal\">User Dashboard</h1>\n<a type=\"button\" class=\"btn btn-primary\" asp-area=\"\" asp-controller=\"Club\" asp-action=\"Create\">Create Club</a>\n<a type=\"button\" class=\"btn btn-primary\" asp-area=\"\" asp-controller=\"Race\" asp-action=\"Create\">Create Race</a>\n<a type=\"button\" class=\"btn btn-primary\" asp-area=\"\" asp-controller=\"Dashboard\" asp-action=\"EditUserProfile\">Edit User Profile</a>\n<div class=\"album py-5 bg-light\">\n    <div class=\"container\">\n        <h2 class=\"display-4 fw-normal\">Your races</h2>\n        <div class=\"row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3\">\n\n            @foreach (var item in Model.Races)\n            {\n                <div class=\"col-md-4\">\n                    <div class=\"card mb-4 box-shadow\">\n                        <img class=\"card-img-top\" src=\"@item.Image\" width=\"100%\" height=\"225\" alt=\"Card image cap\">\n                        <div class=\"card-body\">\n                            <p class=\"card-text\">@item.Title</p>\n                            <p class=\"card-text\">@item.Description</p>\n                            <div class=\"d-flex justify-content-between align-items-center\">\n                                <div class=\"btn-group\">\n                                    <a type=\"btn btn-success\" asp-controller=\"Club\" asp-action=\"Detail\" asp-route-id=\"@item.Id\"\n                                   class=\"btn btn-sm btn-outline-secondary\">View</a>\n                                    @if (SignInManager.IsSignedIn(User))\n                                    {\n                                        <a asp-controller=\"Race\" asp-action=\"Edit\" asp-route-id=\"@item.Id\" class=\"btn btn-sm btn-outline-secondary\">Edit</a>\n                                        <a asp-controller=\"Race\" asp-action=\"Delete\" asp-route-id=\"@item.Id\" class=\"btn btn-sm btn-outline-secondary\">Delete</a>\n                                    }\n                                </div>\n                                <small class=\"text-muted\">@item.RaceCategory</small>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            }\n        </div>\n        <h2 class=\"display-4 fw-normal\">Your Clubs</h2>\n        <div class=\"row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3\">\n            @foreach (var item in Model.Clubs)\n            {\n                <div class=\"col-md-4\">\n                    <div class=\"card mb-4 box-shadow\">\n                        <img class=\"card-img-top\" src=\"@item.Image\" width=\"100%\" height=\"225\" alt=\"Card image cap\">\n                        <div class=\"card-body\">\n                            <p class=\"card-text\">@item.Title</p>\n                            <p class=\"card-text\">@item.Description</p>\n                            <div class=\"d-flex justify-content-between align-items-center\">\n                                <div class=\"btn-group\">\n                                    <a type=\"btn btn-success\" asp-controller=\"Club\" asp-action=\"Detail\" asp-route-id=\"@item.Id\"\n                                   class=\"btn btn-sm btn-outline-secondary\">View</a>\n                                    @if (SignInManager.IsSignedIn(User))\n                                    {\n                                        <a asp-controller=\"Club\" asp-action=\"Edit\" asp-route-id=\"@item.Id\" class=\"btn btn-sm btn-outline-secondary\">Edit</a>\n                                        <a asp-controller=\"Club\" asp-action=\"Delete\" asp-route-id=\"@item.Id\" class=\"btn btn-sm btn-outline-secondary\">Delete</a>\n                                    }\n                                </div>\n                                <small class=\"text-muted\">@item.ClubCategory</small>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            }\n        </div>\n\n    </div>\n</div>"
  },
  {
    "path": "RunGroopWebApp/Views/Home/Index.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model HomeViewModel\n@{\n    ViewData[\"Title\"] = \"Home Page\";\n}\n\n<section class=\"bg-dark space-lg\" data-jarallax data-speed=\"0.2\">\n    <img alt=\"Image\" src=\"/img/photo-road.jpg\" class=\"bg-image position-absolute opacity-20\" />\n    <div class=\"container\">\n        <div class=\"row align-items-center justify-content-between\">\n            <div class=\"col-12 col-md-6 col-lg-5 section-intro\">\n                <h1 class=\"display-3\">Find a running group</h1>\n                <span class=\"lead\">\n                    A community of devoted runners, passionate about running and life. Ready to find your accountability partner?\n                </span>\n            </div>\n            <!--end of col-->\n            <div class=\"col-12 col-md-6 col-lg-5\">\n                <div class=\"card\">\n                    <div class=\"card-body\">\n                        <form asp-action=\"Index\">\n                            <div class=\"form-group\">\n                                <label asp-for=\"Register.UserName\">Username</label>\n                                <input asp-for=\"Register.UserName\" type=\"text\" class=\"form-control form-control-lg\" placeholder=\"Pick a username\">\n                                <span asp-validation-for=\"Register.UserName\" class=\"text-danger\"></span>\n                            </div>\n                            <div class=\"form-group\">\n                                <label asp-for=\"Register.Email\">Email address</label>\n                                <input asp-for=\"Register.Email\" type=\"email\" class=\"form-control form-control-lg\" placeholder=\"Enter email\">\n                                <span asp-validation-for=\"Register.Email\" class=\"text-danger\"></span>\n                                <small id=\"emailHelp\" class=\"form-text\">We'll never share your email with anyone else.</small>\n                            </div>\n                            <div class=\"form-group\">\n                                <label asp-for=\"Register.Password\">Password</label>\n                                <input asp-for=\"Register.Password\" type=\"password\" class=\"form-control form-control-lg\" placeholder=\"Password\">\n                                <span asp-validation-for=\"Register.Password\" class=\"text-danger\"></span>\n                            </div>\n                            <div class=\"form-group\">\n                                <label asp-for=\"Register.ZipCode\">Zip Code</label>\n                                <input asp-for=\"Register.ZipCode\" type=\"text\" list=\"datlistOptions\" id=\"registerLocation\" class=\"form-control form-control-lg\" placeholder=\"&#xf041\">\n                                <div id=\"datalistOptions\">\n                                    \n                                </div>\n                                <span asp-validation-for=\"Register.ZipCode\" class=\"text-danger\"></span>\n\n                            </div>\n@*                            <div class=\"mb-3\">\n                                <div class=\"custom-control custom-checkbox\">\n                                    <input type=\"checkbox\" class=\"custom-control-input\" value=\"agree\" name=\"agree-terms\" id=\"check-agree\">\n                                    <label class=\"custom-control-label text-small\" for=\"check-agree\">\n                                        I agree to the <a href=\"#\">Terms &amp; Conditions</a>\n                                    </label>\n                                </div>\n                            </div>*@\n                            <button type=\"submit\" class=\"btn btn-lg btn-success btn-block\">Sign up for RunGroop</button>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <!--end of row-->\n    </div>\n    <!--end of container-->\n</section>\n<!--end of section-->\n<section>\n    <div class=\"container\">\n        @if (Model.Clubs == null)\n        {\n            <h1 class=\"fw-light\">\n                There are no running clubs in your area! <a asp-area=\"\" asp-controller=\"Account\"\n                                                        asp-action=\"Login\">Login</a> and create one!\n            </h1>\n        }\n        else\n        {\n            <div class=\"row justify-content-between mb-5\">\n                <div class=\"col-auto\">\n                    <h3>Running clubs near @Model.City, @Model.State</h3>\n                </div>\n                <!--end of col-->\n            <div class=\"col-auto\">\n              <a href=\"#\" class=\"btn btn-outline-primary\">View all</a>\n            </div>\n            <!--end of col-->\n          </div>\n              <ul class=\"row feature-list feature-list-sm\">\n                @foreach (var item in Model.Clubs)\n                {\n                <li class=\"col-12 col-md-6 col-lg-4\">\n                  <div class=\"card\">\n                    <a href=\"#\">\n                      <img class=\"card-img-top\" src=\"@item.Image\" alt=\"Card image cap\">\n                    </a>\n                    <div class=\"card-body\">\n                      <a href=\"#\">\n                        <h4 class=\"card-title\">@item.Title</h4>\n                        <p class=\"card-text text-body\">@item.Description</p>\n                      </a>\n                    </div>\n                    <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                      <div class=\"text-small\">\n                        <ul class=\"list-inline\">\n                          <li class=\"list-inline-item\"><i class=\"icon-heart\"></i> 221</li>\n                          <li class=\"list-inline-item\"><i class=\"icon-message\"></i> 14</li>\n                        </ul>\n                      </div>\n                      <div class=\"dropup\">\n                        <a type=\"btn btn-success\" asp-controller=\"Race\" asp-action=\"Detail\" asp-route-id=\"@item.Id\"\n                                    class=\"btn btn-sm btn-outline-secondary\">View</a>\n                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"SidekickButton\">\n                          <a class=\"dropdown-item\" href=\"#\">Save</a>\n                          <a class=\"dropdown-item\" href=\"#\">Share</a>\n                          <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                          <div class=\"dropdown-divider\"></div>\n                          <a class=\"dropdown-item\" href=\"#\">Report</a>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </li>\n                }\n            </ul>\n        }\n        <!--end of row-->\n    </div>\n    <!--end of container-->\n</section>"
  },
  {
    "path": "RunGroopWebApp/Views/Home/Privacy.cshtml",
    "content": "﻿@{\n    ViewData[\"Title\"] = \"Privacy Policy\";\n}\n<h1>@ViewData[\"Title\"]</h1>\n\n<p>Use this page to detail your site's privacy policy.</p>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Home/Register.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model HomeUserCreateViewModel\n\n@{\n    ViewData[\"Title\"] = \"Register Page\";\n}\n\n      <section class=\"bg-dark space-lg\" data-jarallax data-speed=\"0.2\">\n        <img alt=\"Image\" src=\"/img/photo-road.jpg\" class=\"bg-image position-absolute opacity-20\" />\n        <div class=\"container\">\n          <div class=\"row align-items-center justify-content-between\">\n            <div class=\"col-12 col-md-6 col-lg-5 section-intro\">\n              <h1 class=\"display-3\">Find a running group</h1>\n              <span class=\"lead\">\n                A community of devoted runners, passionate about running and life. Ready to find your accountability partner?\n              </span>\n            </div>\n            <!--end of col-->\n            <div class=\"col-12 col-md-6 col-lg-5\">\n              <div class=\"card\">\n                <div class=\"card-body\">\n\n                @if (TempData[\"Error\"] != null)\n                {\n                    <div class=\"col-md-12 alert alert-danger\">\n                        <span><b>Sorry!</b> - @TempData[\"Error\"] </span>\n                    </div>\n                }\n\n                  <form asp-action=\"Register\">\n                   <div asp-validation-summary=\"ModelOnly\" class=\"text-danger\"></div>\n                    <div class=\"form-group\">\n                      <label asp-for=\"UserName\">Username</label>\n                      <input asp-for=\"UserName\" class=\"form-control form-control-lg\" placeholder=\"Pick a username\">\n                      <span asp-validation-for=\"UserName\" class=\"text-danger\"></span>\n                    </div>\n                    <div class=\"form-group\">\n                      <label asp-for=\"Email\">Email address</label>\n                      <input asp-for=\"Email\" class=\"form-control form-control-lg\" placeholder=\"Enter email\">\n                      <span asp-validation-for=\"Email\" class=\"text-danger\"></span>\n                      <small id=\"emailHelp\" class=\"form-text\">We'll never share your email with anyone else.</small>\n                    </div>\n                    <div class=\"form-group\">\n                      <label asp-for=\"Password\">Password</label>\n                      <input asp-for=\"Password\" class=\"form-control form-control-lg\" placeholder=\"Password\">\n                      <span asp-validation-for=\"Password\" class=\"text-danger\"></span>\n                    </div>\n                    <div class=\"mb-3\">\n                      <div class=\"custom-control custom-checkbox\">\n                        <input type=\"checkbox\" class=\"custom-control-input\" value=\"agree\" name=\"agree-terms\" id=\"check-agree\">\n                        <label class=\"custom-control-label text-small\" for=\"check-agree\">I agree to the <a href=\"#\">Terms &amp; Conditions</a>\n                        </label>\n                      </div>\n                    </div>\n                    <button type=\"submit\" class=\"btn btn-lg btn-success btn-block\">Sign up for RunGroops</button>\n                  </form>\n                </div>\n              </div>\n            </div>\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </section>\n      <!--end of section-->\n      "
  },
  {
    "path": "RunGroopWebApp/Views/Race/Create.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@using RunGroopWebApp.ViewModels\n@model CreateRaceViewModel\n\n\n <div class=\"navbar-container\">\n    </div>\n    <div class=\"main-container\">\n      <section class=\"space-sm\">\n        <div class=\"container\">\n          <div class=\"row mb-5\">\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n          <div class=\"row flex-md-row card card-md\">\n            <div class=\"card-body bg-secondary\">\n              <div class=\"text-center mb-5\">\n                <h1 class=\"h2 mb-2\">Create your own race</h1>\n                <span>Challenge the runners in your community</span>\n              </div>\n              <div class=\"row justify-content-center\">\n                <div class=\"col-6 col-lg-5\">\n                  <form method=\"post\" asp-action=\"Create\" enctype=\"multipart/form-data\">\n                   <input type=\"hidden\" id=\"AppUserId\" name=\"AppUserId\" asp-for=\"AppUserId\" />\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                       \n                        <input asp-for=\"Title\" class=\"form-control form-control-lg\" placeholder=\"Title\" />\n                        <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Description\" class=\"form-control form-control-lg\" placeholder=\"Description\" />\n                        <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n                      </div>\n                    </div> \n\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                         <select asp-for=\"RaceCategory\" asp-items=\"@Html.GetEnumSelectList<RaceCategory>()\" class=\"form-control\">\n                                    <option>--Select--</option>\n                         </select>\n                         <span asp-validation-for=\"RaceCategory\" class=\"text-danger\"></span>\n                      </div>\n                    </div> \n\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                      \n                        <input asp-for=\"Address.Street\" class=\"form-control form-control-lg\" placeholder=\"Street\" />\n                        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Address.City\" class=\"form-control form-control-lg\" placeholder=\"City\" />\n                        <span asp-validation-for=\"Address.City\" class=\"text-danger\"></span>\n                      </div>\n                      <div class=\"col\">\n                        <input asp-for=\"Address.State\" class=\"form-control form-control-lg\" placeholder=\"State\" />\n                        <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">                        \n                        <input asp-for=\"Image\" type=\"file\" class=\"form-control form-control-lg\" placeholder=\"Image\" />\n                        <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n                      </div>\n                    </div>\n                    <div class=\"form-row form-group\">\n                      <div class=\"col\">\n                        <button class=\"btn btn-block btn-success btn-lg\" type=\"submit\">Create Account</button>\n                      </div>\n                    </div>\n                  </form>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <!--end of container-->\n      </section>\n      <!--end of section-->\n    </div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@*\n<form method=\"post\" asp-action=\"Create\" enctype=\"multipart/form-data\">\n    <input type=\"hidden\" id=\"AppUserId\" name=\"AppUserId\" asp-for=\"AppUserId\" />\n  <div class=\"form-group\">\n    <label asp-for=\"Title\">Title</label>\n    <input asp-for=\"Title\" class=\"form-control\" placeholder=\"Title\">\n    <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n  </div>\n  <div class=\"form-group\">\n    <label asp-for=\"Description\">Description</label>\n    <input asp-for=\"Description\" class=\"form-control\" placeholder=\"Description\">\n    <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n  </div>\n  <div class=\"form-group\">\n    <label asp-for=\"RaceCategory\">Race Category</label>\n    <select asp-for=\"RaceCategory\" asp-items=\"@Html.GetEnumSelectList<RaceCategory>()\" class=\"form-control\">\n             <option>--Select--</option>\n    </select>\n    <span asp-validation-for=\"RaceCategory\" class=\"text-danger\"></span>\n  </div>\n  <div class=\"form-group\">\n    <label asp-for=\"Address.Street\">Street</label>\n    <input asp-for=\"Address.Street\" class=\"form-control\" placeholder=\"Street\">\n    <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n  </div>\n  <div class=\"form-group\">\n    <label asp-for=\"Address.City\">City</label>\n    <input asp-for=\"Address.City\" class=\"form-control\" placeholder=\"Street\">\n    <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n  </div>\n    <div class=\"form-group\">\n    <label asp-for=\"Address.State\">State</label>\n    <input asp-for=\"Address.State\" class=\"form-control\" placeholder=\"Street\">\n    <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n  </div>\n    <div class=\"form-group\">\n    <label asp-for=\"Image\">Image</label>\n    <input asp-for=\"Image\" type=\"file\" class=\"form-control\" placeholder=\"Image\">\n    <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n  </div>\n  <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n</form>\n*@"
  },
  {
    "path": "RunGroopWebApp/Views/Race/Delete.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@model Race\n\n<h1>Are you sure you want to delete this race?</h1>\n\n<form method=\"post\" asp-action=\"Delete\" enctype=\"multipart/form-data\">\n    <input type=\"hidden\" value=\"AddressId\" id=\"AddressId\" />\n    <div class=\"form-group\">\n        <label asp-for=\"Title\">Title</label>\n        <input asp-for=\"Title\" class=\"form-control\" placeholder=\"Title\">\n        <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Description\">Description</label>\n        <input asp-for=\"Description\" class=\"form-control\" placeholder=\"Description\">\n        <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"RaceCategory\">Club Category</label>\n        <select asp-for=\"RaceCategory\" asp-items=\"@Html.GetEnumSelectList<RaceCategory>()\" class=\"form-control\">\n            <option selected=\"selected\" value=\"\">--Select--</option>\n        </select>\n        <span asp-validation-for=\"RaceCategory\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.Street\">Street</label>\n        <input asp-for=\"Address.Street\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.City\">City</label>\n        <input asp-for=\"Address.City\" class=\"form-control\" placeholder=\"City\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.State\">State</label>\n        <input asp-for=\"Address.State\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Image\">Image</label>\n        <input asp-for=\"Image\" type=\"file\" class=\"form-control\" placeholder=\"Image\">\n        <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n\n    </div>\n    </form>\n    <div class=\"form-group\">\n        <form action=\"Delete\" method=\"post\">\n            <input type=\"hidden\" asp-for=\"Id\" />\n            <input type=\"submit\" value=\"Confirm\" class=\"btn btn-danger float-right mt-3\" />\n        </form>\n     </div>\n\n"
  },
  {
    "path": "RunGroopWebApp/Views/Race/DetailRace.cshtml",
    "content": "﻿@model Race\n@*\n    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860\n*@\n@{\n}\n\n <div class=\"main-container\">\n      <nav aria-label=\"breadcrumb\" role=\"navigation\" class=\"bg-primary text-white\">\n        <div class=\"container\">\n          <div class=\"row justify-content-center\">\n            <div class=\"col\">\n              <ol class=\"breadcrumb\">\n                <li class=\"breadcrumb-item\"><a href=\"index.html\">Home</a>\n                </li>\n                <li class=\"breadcrumb-item\"><a href=\"pages-app.html\">Find</a>\n                </li>\n\n                <li class=\"breadcrumb-item active\" aria-current=\"page\">Runnings Clubs in @Model.Address.City, @Model.Address.State</li>\n              </ol>\n            </div>\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </nav>\n      <section class=\"bg-white space-sm\">\n        <div class=\"container\">\n          <div class=\"row\">\n            <div class=\"col-lg-7 mb-4 mb-sm-0\">\n              <img alt=\"Image\" src=\"@Model.Image\" class=\"rounded img-fluid\" />\n            </div>\n            <!--end of col-->\n            <div class=\"col-lg-4 d-flex flex-column justify-content-between mr-auto ml-auto\">\n              <div>\n                <h1 class=\"mb-2\">@Model.Title</h1>\n                <h2 class=\"lead mb-3\">@Model.Address.City, @Model.Address.State</h2>\n                <div>\n                  <span class=\"badge badge-secondary mr-3\">@Model.RaceCategory</span>\n                </div>\n                <div>\n                  <ul class=\"list-inline text-small d-inline-block mb-3\">\n                    <li class=\"list-inline-item\"><i class=\"icon-thumbs-up\"></i> 214</li>\n                    <li class=\"list-inline-item\"><i class=\"icon-message\"></i> 6</li>\n                  </ul>\n                </div>\n              </div>\n              <div>\n                <div class=\"btn-group mb-2\">\n                  <button type=\"button\" class=\"btn btn-success btn-lg\">Join Club</button>\n                  <button type=\"button\" class=\"btn btn-success dropdown-toggle dropdown-toggle-split dropdown-toggle-no-arrow\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                    <i class=\"icon-dots-three-horizontal\"></i>\n                    <span class=\"sr-only\">Toggle Dropdown</span>\n                  </button>\n                  <div class=\"dropdown-menu dropdown-menu-right dropdown-menu-sm\">\n                    <a class=\"dropdown-item\" href=\"#\">Action</a>\n                    <a class=\"dropdown-item\" href=\"#\">Another action</a>\n                    <a class=\"dropdown-item\" href=\"#\">Something else here</a>\n                    <div class=\"dropdown-divider\"></div>\n                    <a class=\"dropdown-item\" href=\"#\">Separated link</a>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </section>\n      <!--end of section-->\n      <section class=\"space-sm\">\n        <div class=\"container\">\n          <div class=\"row justify-content-between\">\n            <div class=\"col-12 col-md-8 col-lg-7\">\n              <h5 class=\"mb-4\">Overview</h5>\n              <article>\n                @Model.Description\n              </article>\n              <hr>\n              <h5 class=\"mb-4\">Discussion</h5>\n              <div class=\"card\">\n                <div class=\"card-header bg-secondary d-flex justify-content-between\">\n                  <button class=\"btn btn-secondary\" type=\"button\" data-target=\"#comment-reply\" data-toggle=\"collapse\" aria-expanded=\"false\" aria-controls=\"comment-reply\">Post a reply</button>\n                  <form class=\"d-flex align-items-center\">\n                    <span class=\"mr-2 text-muted text-small text-nowrap\">Sort by:</span>\n                    <select class=\"custom-select\">\n                      <option value=\"alpha\">Alphabetical</option>\n                      <option value=\"old-new\" selected>Newest</option>\n                      <option value=\"new-old\">Popular</option>\n                      <option value=\"recent\">Recently Updated</option>\n                    </select>\n                  </form>\n                </div>\n                <div class=\"collapse\" id=\"comment-reply\">\n                  <form class=\"card-body\">\n                    <div class=\"form-group\">\n                      <textarea class=\"form-control from-control-lg\" id=\"comment-reply-text\" name=\"comment-reply\" rows=\"4\" placeholder=\"Type your reply here\"></textarea>\n                    </div>\n                    <div class=\"mb-2\">\n                      <div class=\"custom-control custom-checkbox\">\n                        <input type=\"checkbox\" class=\"custom-control-input\" name=\"notify-reply\" id=\"check-notify\">\n                        <label class=\"custom-control-label text-small\" for=\"check-notify\">Notify me when someone replies</label>\n                      </div>\n                    </div>\n                    <div class=\"d-flex align-items-center\">\n                      <button type=\"submit\" class=\"btn btn-success mr-3\">Submit reply</button>\n                      <a href=\"#comment-reply\" class=\"text-small text-muted\" data-toggle=\"collapse\" aria-expanded=\"true\" aria-controls=\"comment-reply\">Cancel</a>\n                    </div>\n                  </form>\n                </div>\n                <ul class=\"list-group list-group-flush list-group-comments\">\n\n@*                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-female-2.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Kelly Fraiser</span>\n                          <span class=\"text-muted\">Making awesome products</span>\n                        </div>\n                        <p>\n                          Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>&nbsp;(2)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>\n\n                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-male-6.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Tim Lester</span>\n                          <span class=\"text-muted\">Interface Designer </span>\n                        </div>\n                        <p>\n                          Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>\n                            </button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-female-5.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Carly Pemberton</span>\n                          <span class=\"text-muted\">Freelance Product Engineer</span>\n                        </div>\n                        <p>\n                          Omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>(4)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/graphic-product-paydar-thumb.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Luke Carol</span>\n                          <span class=\"text-muted\">Product Designer</span>\n                        </div>\n                        <p>\n                          Adipisci velit, sed quia non numquam eius modi tempora\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>\n                            </button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>\n\n                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-male-3.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Pip Thompson</span>\n                          <span class=\"text-muted\">Development at Kin</span>\n                        </div>\n                        <p>\n                          Natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>&nbsp;(1)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>\n\n                  <li class=\"list-group-item py-4\">\n                    <div class=\"media\">\n                      <img alt=\"Image\" src=\"assets/img/avatar-male-1.jpg\" class=\"avatar avatar-sm\" />\n                      <div class=\"media-body\">\n                        <div class=\"mb-2\">\n                          <span class=\"h6 mb-0\">Daniel Cameron</span>\n                          <span class=\"text-muted\">Industrial Designer at Kin</span>\n                        </div>\n                        <p>\n                          Nam HTML tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est\n                        </p>\n                        <div class=\"d-flex align-items-center\">\n                          <div class=\"mr-2\">\n                            <button class=\"btn btn-sm btn-outline-primary\">Reply</button>\n                            <button class=\"btn btn-sm btn-outline-primary\"><i class=\"icon-thumbs-up\"></i>&nbsp;(1)</button>\n                          </div>\n                          <small class=\"text-muted\">1st Dec 2017 • 10:15am</small>\n                        </div>\n                      </div>\n                    </div>\n\n                  </li>*@\n\n                </ul>\n              </div>\n\n            </div>\n            <!--end of col-->\n            <div class=\"col-12 col-md-4\">\n@*              <div class=\"card card-borderless bg-secondary\">\n                <a class=\"card-body\" href=\"#\">\n                  <div class=\"d-flex justify-content-between mb-3\">\n                    <img alt=\"Image\" src=\"assets/img/logo-w-gradient.svg\" />\n                    <span class=\"title-decorative\">Sponsor</span>\n                  </div>\n                  <span class=\"h6\">A robust suite of styled elements and pages for Bootstrap 4</span>\n                </a>\n              </div>*@\n              <!-- end card -->\n              <div class=\"card\">\n                <ul class=\"list-group list-group-flush\">\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-text-document mr-1\"></i> Created</div>\n                      <span>17/11/2017</span>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-edit mr-1\"></i> Last updated</div>\n                      <span>23/12/2017</span>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-thumbs-up mr-1\"></i> Owner</div>\n                      <span>214</span>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item\">\n                    <div class=\"d-flex justify-content-between\">\n                      <div><i class=\"icon-share mr-1\"></i> Shares</div>\n                      <span>52</span>\n                    </div>\n                  </li>\n                </ul>\n              </div>\n             @* <div class=\"card\">\n                <div class=\"card-header d-flex justify-content-between\">\n                  <div>\n                    <span class=\"h6\">Contributors</span>\n                  </div>\n                  <a href=\"#\">View all &rsaquo;</a>\n                </div>\n                <div class=\"card-body\">\n                  <ul class=\"list-unstyled list-spacing-sm\">\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-male-1.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Daniel Cameron</span>\n                          <span class=\"text-muted\">Product Designer</span>\n                        </div>\n                      </a>\n                    </li>\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-female-1.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Caitlyn Halsy</span>\n                          <span class=\"text-muted\">Marketing Professional</span>\n                        </div>\n                      </a>\n                    </li>\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-male-2.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Toby Marsh</span>\n                          <span class=\"text-muted\">Developer</span>\n                        </div>\n                      </a>\n                    </li>\n\n                    <li>\n                      <a class=\"media\" href=\"#\">\n                        <img alt=\"Image\" src=\"assets/img/avatar-female-2.jpg\" class=\"avatar avatar-sm mr-3\" />\n                        <div class=\"media-body\">\n                          <span class=\"h6 mb-0\">Lucille Freebody</span>\n                          <span class=\"text-muted\">Graphic Designer</span>\n                        </div>\n                      </a>\n                    </li>\n\n                  </ul>\n                </div>\n              </div>*@\n              <!-- end card -->\n              @*<div class=\"card\">\n                <div class=\"card-header d-flex justify-content-between\">\n                  <div>\n                    <span class=\"h6\">Related Products</span>\n                  </div>\n                  <a href=\"#\">View all &rsaquo;</a>\n                </div>\n                <div class=\"card-body\">\n                  <ul class=\"list-unstyled list-spacing-sm\">\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-bench-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">Bench</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Productivity</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 373</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 62</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-kin-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">Kin</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Lifestyle</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 84</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 21</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-paydar-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">Paydar</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Productivity</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 253</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 19</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                    <li>\n                      <div class=\"media\">\n                        <a href=\"#\">\n                          <img alt=\"Image\" src=\"assets/img/graphic-product-pipeline-thumb.jpg\" class=\"avatar avatar-square rounded mr-3\" />\n                        </a>\n                        <div class=\"media-body\">\n                          <a href=\"#\">\n                            <span class=\"h6\">pipeline.js</span>\n                          </a>\n                          <span class=\"badge badge-secondary\">Development</span>\n                          <div class=\"text-muted\">\n                            <ul class=\"list-inline\">\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-heart\"></i> 84</small>\n                              </li>\n                              <li class=\"list-inline-item\">\n                                <small><i class=\"icon-message\"></i> 25</small>\n                              </li>\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n\n                  </ul>\n                </div>\n              </div>*@\n              <!-- end card -->\n            </div>\n            <!--end of col-->\n          </div>\n          <!--end of row-->\n        </div>\n        <!--end of container-->\n      </section>"
  },
  {
    "path": "RunGroopWebApp/Views/Race/Edit.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@using RunGroopWebApp.ViewModels\n@model EditRaceViewModel\n\n\n<form method=\"post\" asp-action=\"Edit\" enctype=\"multipart/form-data\">\n    <input type=\"hidden\" value=\"AddressId\" id=\"AddressId\" />\n    <div class=\"form-group\">\n        <label asp-for=\"Title\">Title</label>\n        <input asp-for=\"Title\" class=\"form-control\" placeholder=\"Title\">\n        <span asp-validation-for=\"Title\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Description\">Description</label>\n        <input asp-for=\"Description\" class=\"form-control\" placeholder=\"Description\">\n        <span asp-validation-for=\"Description\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"RaceCategory\">Club Category</label>\n        <select asp-for=\"RaceCategory\" asp-items=\"@Html.GetEnumSelectList<RaceCategory>()\" class=\"form-control\">\n            <option selected=\"selected\" value=\"\">--Select--</option>\n        </select>\n        <span asp-validation-for=\"RaceCategory\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.Street\">Street</label>\n        <input asp-for=\"Address.Street\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.City\">City</label>\n        <input asp-for=\"Address.City\" class=\"form-control\" placeholder=\"City\">\n        <span asp-validation-for=\"Address.Street\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Address.State\">State</label>\n        <input asp-for=\"Address.State\" class=\"form-control\" placeholder=\"Street\">\n        <span asp-validation-for=\"Address.State\" class=\"text-danger\"></span>\n    </div>\n    <div class=\"form-group\">\n        <label asp-for=\"Image\">Image</label>\n        <input asp-for=\"Image\" type=\"file\" class=\"form-control\" placeholder=\"Image\">\n        <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n\n    </div>\n    <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n</form>"
  },
  {
    "path": "RunGroopWebApp/Views/Race/Index.cshtml",
    "content": "﻿@using RunGroopWebApp.Data.Enum\n@using RunGroopWebApp.Extensions\n@using RunGroopWebApp.ViewModels\n@model IndexRaceViewModel\n\n@{\n    bool isAuthenticated = User.Identity?.IsAuthenticated == true;\n\n    int resultStart = ((Model.Page - 1) * Model.PageSize) + 1;\n    int resultEnd = Math.Min(resultStart + Model.PageSize - 1, Model.TotalRaces);\n\n    bool isValidPage = resultStart <= Model.TotalRaces;\n\n    var prevDisabled = !Model.HasPreviousPage ? \"disabled\" : \"\";\n    var nextDisabled = !Model.HasNextPage ? \"disabled\" : \"\";\n}\n\n\n<section class=\"space-sm flush-with-above\">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col text-center\">\n                <p>Races Categories</p>\n                <div class=\"mb-3\">\n                    <a type=\"button\" class=\"btn btn-secondary mb-1\"\n                       asp-action=\"Index\" asp-route-page=\"1\" asp-route-category=\"-1\">All</a>\n                    @foreach (var category in Html.GetEnumSelectList<RaceCategory>())\n                    {\n                        <a type=\"button\" class=\"btn btn-secondary mb-1\"\n                       asp-action=\"Index\" asp-route-page=\"1\" asp-route-category=\"@category.Value\">@category.Text</a>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"container\">\n        <div class=\"d-flex justify-content-between align-items-center mb-4\">\n            <div>\n                @if (isValidPage)\n                {\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @prevDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page - 1)\" asp-route-category=\"@Model.Category\">\n                        Prev\n                    </a>\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @nextDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page + 1)\" asp-route-category=\"@Model.Category\">\n                        Next\n                    </a>\n                    <span class=\"text-muted text-small\">Results @resultStart - @resultEnd of @Model.TotalRaces</span>\n                }\n            </div>\n        </div>\n        <ul class=\"row feature-list feature-list-sm\">\n            @foreach (var race in Model.Races)\n            {\n                <li class=\"col-12 col-md-6 col-lg-4\">\n                    <div class=\"card\">\n                        <a type=\"button\" asp-controller=\"Race\" asp-action=\"DetailRace\" asp-route-runningRace=\"@race.Title.GenerateSlug()\" asp-route-id=\"@race.Id\">\n                            @if(race.Image == null)\n                            {\n                                <img class=\"card-img-top\" src=\"/img/racesEvent.png\" alt=\"Card image cap\"> \n                            }\n                            else\n                            {\n                               <img class=\"card-img-top\" src=\"@race.Image\" alt=\"Card image cap\"> \n                            }\n                            \n                        </a>\n                        <div class=\"card-body\">\n                            <h4 class=\"card-title\">@race.Title</h4>\n                            <p class=\"card-text\">@race.Address.City, @race.Address.State</p>\n                        </div>\n                        <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                            <div>\n                                <small>@race.RaceCategory</small>\n                            </div>\n                            @if (isAuthenticated && User.IsInRole(\"admin\"))\n                            {\n                                <div>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-info\" asp-controller=\"Race\" asp-action=\"Edit\" asp-route-id=\"@race.Id\">\n                                        Edit\n                                    </a>\n                                    <a type=\"button\" class=\"btn btn-sm btn-outline-danger\" asp-controller=\"Race\" asp-action=\"Delete\" asp-route-id=\"@race.Id\">\n                                        Delete\n                                    </a>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </li>\n            }\n        </ul>\n        <div class=\"d-flex justify-content-between align-items-center mb-4\">\n            <div>\n                @if (isValidPage)\n                {\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @prevDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page - 1)\" asp-route-category=\"@Model.Category\">\n                        Prev\n                    </a>\n                    <a type=\"button\" class=\"btn btn-sm btn-outline-primary @nextDisabled\"\n                   asp-action=\"Index\" asp-route-page=\"@(Model.Page + 1)\" asp-route-category=\"@Model.Category\">\n                        Next\n                    </a>\n                    <span class=\"text-muted text-small\">Results @resultStart - @resultEnd of @Model.TotalRaces</span>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Shared/Error.cshtml",
    "content": "﻿@model ErrorViewModel\n@{\n    ViewData[\"Title\"] = \"Error\";\n}\n\n<h1 class=\"text-danger\">Error.</h1>\n<h2 class=\"text-danger\">An error occurred while processing your request.</h2>\n\n@if (Model?.ShowRequestId ?? false)\n{\n    <p>\n        <strong>Request ID:</strong> <code>@Model?.RequestId</code>\n    </p>\n}\n\n<h3>Development Mode</h3>\n<p>\n    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.\n</p>\n<p>\n    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>\n    It can result in displaying sensitive information from exceptions to end users.\n    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>\n    and restarting the app.\n</p>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Shared/_Layout.cshtml",
    "content": "﻿@using Microsoft.AspNetCore.Identity\n\n@inject SignInManager<AppUser> SignInManager\n@inject UserManager<AppUser> UserManager\n\n@{\n    var currentUser = await UserManager.GetUserAsync(User);\n}\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>@ViewData[\"Title\"] - RunGroopWebApp</title>\n    <link rel=\"stylesheet\" href=\"~/css/theme.css\" asp-append-version=\"true\" />\n    <link rel=\"stylesheet\" href=\"~/css/custom.css\" asp-append-version=\"true\" />\n    <link rel=\"stylesheet\" href=\"~/css/entypo.css\" asp-append-version=\"true\" />\n    <link rel=\"stylesheet\" href=\"~/css/socicon.css\" asp-append-version=\"true\" />\n    <link rel=\"stylesheet\" href=\"~/RunGroopWebApp.styles.css\" asp-append-version=\"true\" />\n    <script src=\"https://kit.fontawesome.com/8aa18c8793.js\" crossorigin=\"anonymous\"></script>\n</head>\n<body>\n    <div class=\"navbar-container\">\n        <div class=\"bg-light navbar-light\" data-sticky=\"top\">\n            <div class=\"container\">\n                <nav class=\"navbar navbar-expand-lg\">\n                    <a class=\"navbar-brand\" asp-controller=\"Home\" asp-action=\"Index\" id=\"logo-text\">RunGroop</a>\n                    <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarNav\" aria-controls=\"navbarNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n                        <i class=\"icon-menu h4\"></i>\n                    </button>\n                    <div class=\"collapse navbar-collapse justify-content-between\" id=\"navbarNav\">\n                        <ul class=\"navbar-nav\">\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" asp-area=\"\" asp-controller=\"Home\" asp-action=\"Index\">Home</a>\n                            </li>\n                            @if (SignInManager.IsSignedIn(User))\n                            {\n                                <li class=\"nav-item\">\n                                    <a class=\"nav-link\" asp-area=\"\" asp-controller=\"user\" asp-action=\"Index\">Find Runners</a>\n                                </li>\n                            }\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" asp-area=\"\" asp-controller=\"Club\" asp-action=\"Index\">Find Clubs</a>\n                            </li>\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" asp-area=\"\" asp-controller=\"Race\" asp-action=\"Index\">Find Races</a>\n                            </li>\n                            <li class=\"nav-item\">\n                                <a href=\"/blog\" class=\"nav-link\">Blog</a>\n                            </li>\n                        </ul>\n                        @if (SignInManager.IsSignedIn(User))\n                        {\n                            <ul class=\"navbar-nav\">\n                                <li class=\"nav-item dropdown\">\n                                    <a class=\"nav-link dropdown-toggle p-lg-0\" href=\"#\" id=\"dropdown01\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                        @if (!string.IsNullOrEmpty(currentUser.ProfileImageUrl))\n                                        {\n                                            <img alt=\"Image\" src=\"@currentUser.ProfileImageUrl\" class=\"avatar avatar-xs\">\n                                        }\n                                        else\n                                        {\n                                            <img alt=\"Image\" src=\"/img/avatar-male-4.jpg\" class=\"avatar avatar-xs\">\n                                        }\n                                    </a>\n                                    <div class=\"dropdown-menu\" aria-labelledby=\"pagesDropdown\">\n                                        <a class=\"dropdown-item\" asp-controller=\"User\" asp-action=\"Detail\" asp-route-id=\"@currentUser.Id\">\n                                            <span class=\"h6 mb-0\">View Profile</span>\n                                        </a>\n\n                                        <a class=\"dropdown-item\" asp-controller=\"User\" asp-action=\"EditProfile\">\n                                            <span class=\"h6 mb-0\">Edit Profile</span>\n                                        </a>\n\n                                        <a class=\"dropdown-item\" asp-area=\"\" asp-controller=\"Club\" asp-action=\"Create\">\n                                            <span class=\"h6 mb-0\">Create Club</span>\n                                        </a>\n                                        <a class=\"dropdown-item\" asp-area=\"\" asp-controller=\"Race\" asp-action=\"Create\">\n                                            <span class=\"h6 mb-0\">Create Race</span>\n                                        </a>\n                                        <a class=\"dropdown-item\" asp-area=\"\" asp-controller=\"Dashboard\" asp-action=\"Index\">\n                                            <span class=\"h6 mb-0\">Dashboard</span>\n                                        </a>\n                                        <a class=\"dropdown-item\" asp-area=\"\" asp-controller=\"Account\" asp-action=\"Logout\">\n                                            <span su class=\"h6 mb-0\">Logout</span>\n                                        </a>\n                                    </div>\n                                </li>\n                            </ul>\n                        }\n                        else\n                        {\n                            <ul class=\"navbar-nav\">\n                                <li class=\"nav-item\">\n                                    <a asp-area=\"\" asp-controller=\"Account\" asp-action=\"Register\">Sign up</a>\n                                    <span>&nbsp;or&nbsp;</span>\n                                    <a asp-area=\"\" asp-controller=\"Account\" asp-action=\"Login\">Sign in</a>\n                                </li>\n                            </ul>\n                        }\n\n                    </div>\n                    <!--end nav collapse-->\n                </nav>\n            </div>\n            <!--end of container-->\n        </div>\n    </div>\n    <div class=\"main-container\">\n        <main role=\"main\" class=\"pb-3\">\n            @RenderBody()\n        </main>\n    </div>\n\n    <footer class=\"bg-gray text-light footer-long\">\n        <div class=\"container\">\n            <div class=\"row\">\n                <div class=\"col-12 col-md-3\">\n                    <a class=\"navbar-brand\" asp-area=\"\" asp-controller=\"Home\" asp-action=\"Index\" id=\"logo-text\">RunGroop</a>\n                    <p class=\"text-muted\">\n                        &copy; 2022 RunGroop\n                        <br />\n                        <br />\n                    </p>\n                </div>\n                <!--end of col-->\n                <div class=\"col-12 col-md-9\">\n                    <span class=\"h5\">The world's first online platform for runners</span>\n                    <div class=\"row no-gutters\">\n                        <div class=\"col-6 col-lg-3\">\n                            <h6>Navigate</h6>\n                            <ul class=\"list-unstyled\">\n                                <li>\n                                    <a asp-area=\"\" asp-controller=\"Home\"\n                                       asp-action=\"Index\">Home</a>\n                                </li>\n                                <li>\n                                    <a asp-area=\"\" asp-controller=\"Users\"\n                                       asp-action=\"Index\">Find Runners Near You</a>\n                                </li>\n                                <li>\n                                    <a asp-area=\"\" asp-controller=\"Club\"\n                                       asp-action=\"Index\">Find Running Clubs Near You</a>\n                                </li>\n                                <li>\n                                    <a asp-area=\"\" asp-controller=\"Race\"\n                                       asp-action=\"Index\">Find Running Races Near You</a>\n                                </li>\n                            </ul>\n                        </div>\n                        <!--end of col-->\n                        <div class=\"col-6 col-lg-3\">\n                            <h6>Club Directory</h6>\n                            <ul class=\"list-unstyled\">\n                                <li>\n                                    <a asp-area=\"\" asp-controller=\"Club\"\n                                       asp-action=\"RunningClubsByStateDirectory\">Find Running Clubs By State</a>\n                                </li>\n                                <li>\n                                    <a asp-area=\"\" asp-controller=\"Club\"\n                                       asp-action=\"RunningClubsByStateForCityDirectory\">Find Running Clubs By City</a>\n                                </li>\n                            </ul>\n                        </div>\n                        <!--end of col-->\n                        <div class=\"col-6 col-lg-3\">\n                            <h6>Race Directory</h6>\n                            <ul class=\"list-unstyled\">\n                                <li>\n                                    <a href=\"#\">Find Running Races By City</a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">Find Running Races By State</a>\n                                </li>\n                            </ul>\n                        </div>\n                        <!--end of col-->\n                        <div class=\"col-6 col-lg-3\">\n                            <h6>Social</h6>\n                            <ul class=\"list-unstyled\">\n                                <li>\n                                    <a href=\"https://www.youtube.com/channel/UCU_Pr6r85LeSe62S65BLV2g\">Youtube</a>\n                                </li>\n                                <li>\n                                    <a href=\"https://www.facebook.com/RunGroop-101353239237822\">Facebook</a>\n                                </li>\n                                <li>\n                                    <a href=\"https://twitter.com/rungroop\">Twitter</a>\n                                </li>\n                                <li>\n                                    <a href=\"/blog\">Blog</a>\n                                </li>\n                            </ul>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <!--end of row-->\n                </div>\n                <!--end of col-->\n            </div>\n            <!--end of row-->\n        </div>\n        <!--end of container-->\n    </footer>\n    </div>\n    <script src=\"~/js/jquery.min.js\"></script>\n    <script src=\"~/js/bootstrap.js\"></script>\n    <script src=\"~/js/theme.js\"></script>\n    <script src=\"~/js/custom.js\"></script>\n    @await RenderSectionAsync(\"Scripts\", required: false)\n</body>\n</html>\n"
  },
  {
    "path": "RunGroopWebApp/Views/Shared/_Layout.cshtml.css",
    "content": "﻿/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification\nfor details on configuring this project to bundle and minify static web assets. */\n\na.navbar-brand {\n  white-space: normal;\n  text-align: center;\n  word-break: break-all;\n}\n\na {\n  color: #0077cc;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #1b6ec2;\n  border-color: #1861ac;\n}\n\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #1b6ec2;\n  border-color: #1861ac;\n}\n\n.border-top {\n  border-top: 1px solid #e5e5e5;\n}\n.border-bottom {\n  border-bottom: 1px solid #e5e5e5;\n}\n\n.box-shadow {\n  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);\n}\n\nbutton.accept-policy {\n  font-size: 1rem;\n  line-height: inherit;\n}\n\n.footer {\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  white-space: nowrap;\n  line-height: 60px;\n}\n"
  },
  {
    "path": "RunGroopWebApp/Views/Shared/_ValidationScriptsPartial.cshtml",
    "content": "﻿<script src=\"~/lib/jquery-validation/dist/jquery.validate.min.js\"></script>\n<script src=\"~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js\"></script>\n"
  },
  {
    "path": "RunGroopWebApp/Views/User/Detail.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model UserDetailViewModel\n\n\n<div class=\"main-container\">\n    <nav aria-label=\"breadcrumb\" role=\"navigation\" class=\"bg-primary text-white\">\n        <div class=\"container\">\n            <div class=\"row justify-content-center\">\n                <div class=\"col\">\n                    <ol class=\"breadcrumb\">\n                        <li class=\"breadcrumb-item\">\n                            <a href=\"#\">Home</a>\n                        </li>\n                        <li class=\"breadcrumb-item\">\n                            <a href=\"#\">Runners</a>\n                        </li>\n\n                        <li class=\"breadcrumb-item active\" aria-current=\"page\">Profile</li>\n                    </ol>\n                </div>\n                <!--end of col-->\n            </div>\n            <!--end of row-->\n        </div>\n        <!--end of container-->\n    </nav>\n    <section class=\"bg-white\">\n        <div class=\"container\">\n            <div class=\"row justify-content-center\">\n                <div class=\"col-12 col-md-8\">\n                    <div class=\"media\">\n                        <img alt=\"Image\" src=\"@Model.ProfileImageUrl\" class=\"mr-md-5 avatar avatar-xlg\">\n                        <div class=\"media-body\">\n                            <div class=\"mb-3\">\n                                <h1 class=\"h2 mb-2\">@Model.UserName</h1>\n                                <span class=\"text-muted\"><i class=\"icon-location\"></i>@Model.Location</span>\n                            </div>\n                            <p class=\"text-muted\">Pace: @Model.Pace</p>\n                            <p class=\"text-muted\">Mileage: @Model.Mileage</p>\n                            <p>\n                                Bit of a go-getter me, creating lovely things that help others. You'll most often find me out back in the hammock, listening to tunes and bending pixels to my will.\n                            </p>\n                            <div>\n                                <button class=\"btn btn-outline-primary\" data-toggle=\"button\"><i class=\"icon-add-user\"></i> Follow</button>\n                                <button class=\"btn btn-outline-primary\">\n                                    <i class=\"icon-mail\"></i>\n                                </button>\n                                <div class=\"dropdown d-inline-block\">\n                                    <button class=\"btn btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                        <i class=\"icon-dots-three-horizontal\"></i>\n                                    </button>\n                                    <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"dropdownMenuButton\" x-placement=\"bottom-start\" style=\"position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 36px, 0px);\">\n                                        <a class=\"dropdown-item\" href=\"#\">Add to group</a>\n                                        <a class=\"dropdown-item\" href=\"#\">Share Profile</a>\n                                        <div class=\"dropdown-divider\"></div>\n                                        <a class=\"dropdown-item\" href=\"#\">Block</a>\n                                        <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!--end of col-->\n            </div>\n            <!--end of row-->\n        </div>\n        <!--end of container-->\n    </section>\n    <!--end of section-->\n    <section class=\"flush-with-above space-0\">\n        <div class=\"bg-white\">\n            <div class=\"container\">\n                <div class=\"row\">\n                    <div class=\"col\">\n                        <ul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link active\" id=\"races-tab\" data-toggle=\"tab\" href=\"#races\" role=\"tab\" aria-controls=\"races\" aria-selected=\"true\">Races</a>\n                            </li>\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" id=\"groups-tab\" data-toggle=\"tab\" href=\"#clubs\" role=\"tab\" aria-controls=\"clubs\" aria-selected=\"false\">Clubs</a>\n                            </li>\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" id=\"followers-tab\" data-toggle=\"tab\" href=\"#followers\" role=\"tab\" aria-controls=\"followers\" aria-selected=\"false\">Followers</a>\n                            </li>\n                        </ul>\n                    </div>\n                    <!--end of col-->\n                </div>\n                <!--end of row-->\n            </div>\n            <!--end of container-->\n        </div>\n    </section>\n    <section class=\"flush-with-above\">\n        <div class=\"tab-content\">\n            <div class=\"tab-pane fade active show\" id=\"races\" role=\"tabpanel\" aria-labelledby=\"races-tab\">\n                <div class=\"container\">\n                    <ul class=\"row feature-list feature-list-sm\">\n\n                        <li class=\"col-12 col-md-6 col-lg-4\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-product-bench.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\">\n                                        <h4 class=\"card-title\">Bench</h4>\n                                        <p class=\"card-text text-body\">Accounting for creative people</p>\n                                    </a>\n                                </div>\n                                <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                                    <div class=\"text-small\">\n                                        <ul class=\"list-inline\">\n                                            <li class=\"list-inline-item\"><i class=\"icon-heart mr-1\"></i> 373</li>\n                                            <li class=\"list-inline-item\"><i class=\"icon-message mr-1\"></i> 62</li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"dropup\">\n                                        <button class=\"btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"BenchButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                            <i class=\"icon-dots-three-horizontal\"></i>\n                                        </button>\n                                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"BenchButton\">\n                                            <a class=\"dropdown-item\" href=\"#\">Save</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Share</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                                            <div class=\"dropdown-divider\"></div>\n                                            <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </li>\n                        <!--end of col-->\n\n                        <li class=\"col-12 col-md-6 col-lg-4\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-product-kin.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\">\n                                        <h4 class=\"card-title\">Kin</h4>\n                                        <p class=\"card-text text-body\">The digital fashion assistant</p>\n                                    </a>\n                                </div>\n                                <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                                    <div class=\"text-small\">\n                                        <ul class=\"list-inline\">\n                                            <li class=\"list-inline-item\"><i class=\"icon-heart mr-1\"></i> 84</li>\n                                            <li class=\"list-inline-item\"><i class=\"icon-message mr-1\"></i> 21</li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"dropup\">\n                                        <button class=\"btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"KinButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                            <i class=\"icon-dots-three-horizontal\"></i>\n                                        </button>\n                                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"KinButton\">\n                                            <a class=\"dropdown-item\" href=\"#\">Save</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Share</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                                            <div class=\"dropdown-divider\"></div>\n                                            <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </li>\n                        <!--end of col-->\n\n                        <li class=\"col-12 col-md-6 col-lg-4\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-product-paydar.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\">\n                                        <h4 class=\"card-title\">Paydar</h4>\n                                        <p class=\"card-text text-body\">Location based touch payments</p>\n                                    </a>\n                                </div>\n                                <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                                    <div class=\"text-small\">\n                                        <ul class=\"list-inline\">\n                                            <li class=\"list-inline-item\"><i class=\"icon-heart mr-1\"></i> 253</li>\n                                            <li class=\"list-inline-item\"><i class=\"icon-message mr-1\"></i> 19</li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"dropup\">\n                                        <button class=\"btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"PaydarButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                            <i class=\"icon-dots-three-horizontal\"></i>\n                                        </button>\n                                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"PaydarButton\">\n                                            <a class=\"dropdown-item\" href=\"#\">Save</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Share</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                                            <div class=\"dropdown-divider\"></div>\n                                            <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </li>\n                        <!--end of col-->\n\n                        <li class=\"col-12 col-md-6 col-lg-4\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-product-pipeline.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\">\n                                        <h4 class=\"card-title\">pipeline.js</h4>\n                                        <p class=\"card-text text-body\">Snappy UI interaction library with flexible API</p>\n                                    </a>\n                                </div>\n                                <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                                    <div class=\"text-small\">\n                                        <ul class=\"list-inline\">\n                                            <li class=\"list-inline-item\"><i class=\"icon-heart mr-1\"></i> 84</li>\n                                            <li class=\"list-inline-item\"><i class=\"icon-message mr-1\"></i> 25</li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"dropup\">\n                                        <button class=\"btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"pipeline.jsButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                            <i class=\"icon-dots-three-horizontal\"></i>\n                                        </button>\n                                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"pipeline.jsButton\">\n                                            <a class=\"dropdown-item\" href=\"#\">Save</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Share</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                                            <div class=\"dropdown-divider\"></div>\n                                            <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </li>\n                        <!--end of col-->\n\n                        <li class=\"col-12 col-md-6 col-lg-4\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-product-pitstop.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\">\n                                        <h4 class=\"card-title\">Pitstop</h4>\n                                        <p class=\"card-text text-body\">Browser-based project management</p>\n                                    </a>\n                                </div>\n                                <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                                    <div class=\"text-small\">\n                                        <ul class=\"list-inline\">\n                                            <li class=\"list-inline-item\"><i class=\"icon-heart mr-1\"></i> 90</li>\n                                            <li class=\"list-inline-item\"><i class=\"icon-message mr-1\"></i> 34</li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"dropup\">\n                                        <button class=\"btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"PitstopButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                            <i class=\"icon-dots-three-horizontal\"></i>\n                                        </button>\n                                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"PitstopButton\">\n                                            <a class=\"dropdown-item\" href=\"#\">Save</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Share</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                                            <div class=\"dropdown-divider\"></div>\n                                            <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </li>\n                        <!--end of col-->\n\n                        <li class=\"col-12 col-md-6 col-lg-4\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-product-sidekick.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\">\n                                        <h4 class=\"card-title\">Sidekick</h4>\n                                        <p class=\"card-text text-body\">Holistic fitness tracking</p>\n                                    </a>\n                                </div>\n                                <div class=\"card-footer card-footer-borderless d-flex justify-content-between\">\n                                    <div class=\"text-small\">\n                                        <ul class=\"list-inline\">\n                                            <li class=\"list-inline-item\"><i class=\"icon-heart mr-1\"></i> 221</li>\n                                            <li class=\"list-inline-item\"><i class=\"icon-message mr-1\"></i> 14</li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"dropup\">\n                                        <button class=\"btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-no-arrow\" type=\"button\" id=\"SidekickButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                            <i class=\"icon-dots-three-horizontal\"></i>\n                                        </button>\n                                        <div class=\"dropdown-menu dropdown-menu-sm\" aria-labelledby=\"SidekickButton\">\n                                            <a class=\"dropdown-item\" href=\"#\">Save</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Share</a>\n                                            <a class=\"dropdown-item\" href=\"#\">Comment</a>\n                                            <div class=\"dropdown-divider\"></div>\n                                            <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </li>\n                        <!--end of col-->\n\n                    </ul>\n                    <!--end of row-->\n                </div>\n                <!--end of container-->\n            </div>\n\n            <div class=\"tab-pane fade\" id=\"clubs\" role=\"tabpanel\" aria-labelledby=\"groups-tab\">\n                <div class=\"container\">\n                    <div class=\"row\">\n\n                        <div class=\"col-12 col-md-6 col-lg-4 d-flex\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-group-1.png\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\" class=\"d-block mb-2\">\n                                        <h4>Pitstop</h4>\n                                    </a>\n                                    <span>A lightweight javascript library for scrolling</span>\n                                </div>\n                                <ul class=\"list-group list-group-flush\">\n                                    <li class=\"list-group-item\"><i class=\"icon-users\">&nbsp;</i> 18 members</li>\n                                    <li class=\"list-group-item\"><i class=\"icon-folder\">&nbsp;</i> 12 projects</li>\n                                </ul>\n                                <div class=\"card-footer d-flex align-items-center\">\n                                    <div>\n                                        <ul class=\"list-inline list-spacing-sm\">\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-male-5.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-female-4.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-male-5.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-female-4.jpg\">\n                                            </li>\n\n                                        </ul>\n                                    </div>\n                                    <span class=\"text-small ml-2\">+ 14 more</span>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div class=\"col-12 col-md-6 col-lg-4 d-flex\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/graphic-group-2.png\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\" class=\"d-block mb-2\">\n                                        <h4>Bench</h4>\n                                    </a>\n                                    <span>Account management for financial professionals</span>\n                                </div>\n                                <ul class=\"list-group list-group-flush\">\n                                    <li class=\"list-group-item\"><i class=\"icon-users\">&nbsp;</i> 9 members</li>\n                                    <li class=\"list-group-item\"><i class=\"icon-folder\">&nbsp;</i> 6 projects</li>\n                                </ul>\n                                <div class=\"card-footer d-flex align-items-center\">\n                                    <div>\n                                        <ul class=\"list-inline list-spacing-sm\">\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-male-5.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-female-5.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-male-4.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-female-5.jpg\">\n                                            </li>\n\n                                        </ul>\n                                    </div>\n                                    <span class=\"text-small ml-2\">+ 5 more</span>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div class=\"col-12 col-md-6 col-lg-4 d-flex\">\n                            <div class=\"card\">\n                                <a href=\"#\">\n                                    <img class=\"card-img-top\" src=\"/img/photo-group-3.jpg\" alt=\"Card image cap\">\n                                </a>\n                                <div class=\"card-body\">\n                                    <a href=\"#\" class=\"d-block mb-2\">\n                                        <h4>Seattle</h4>\n                                    </a>\n                                    <span>Creative folk hailing from The Windy City</span>\n                                </div>\n                                <ul class=\"list-group list-group-flush\">\n                                    <li class=\"list-group-item\"><i class=\"icon-users\">&nbsp;</i> 42 members</li>\n                                    <li class=\"list-group-item\"><i class=\"icon-folder\">&nbsp;</i> 7 projects</li>\n                                </ul>\n                                <div class=\"card-footer d-flex align-items-center\">\n                                    <div>\n                                        <ul class=\"list-inline list-spacing-sm\">\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-male-4.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-female-2.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-male-4.jpg\">\n                                            </li>\n\n                                            <li class=\"list-inline-item\">\n                                                <img alt=\"Group member\" class=\"avatar avatar-xs\" src=\"/img/avatar-female-5.jpg\">\n                                            </li>\n\n                                        </ul>\n                                    </div>\n                                    <span class=\"text-small ml-2\">+ 38 more</span>\n                                </div>\n                            </div>\n                        </div>\n\n                    </div>\n                    <!--end of row-->\n                </div>\n                <!--end of container-->\n            </div>\n\n            <div class=\"tab-pane fade\" id=\"followers\" role=\"tabpanel\" aria-labelledby=\"followers-tab\">\n                <div class=\"container\">\n                    <div class=\"row\">\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Daniel Cameron\" src=\"/img/avatar-male-1.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Daniel Cameron</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> San Francisco, USA</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">196 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">186 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">cameronman</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Caitlyn Halsy\" src=\"/img/avatar-female-1.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Caitlyn Halsy</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Melbourne, AU</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">199 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">189 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">chalsy</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Toby Marsh\" src=\"/img/avatar-male-2.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Toby Marsh</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Denver, USA</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">6 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">-4 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">marshisonline</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Lucille Freebody\" src=\"/img/avatar-female-2.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Lucille Freebody</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Bathwick, UK</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">8 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">-2 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">lfreebody</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Brenton Harvey\" src=\"/img/avatar-male-3.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Brenton Harvey</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Dublin, IR</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">10 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">0 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">harveytravel</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Tabatha Firth\" src=\"/img/avatar-female-3.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Tabatha Firth</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Sydney, AU</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">13 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">3 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">onthetab</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Ramon Hernandez\" src=\"/img/avatar-male-4.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Ramon Hernandez</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Mexico City, ME</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">15 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">5 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">hernandezzz</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Roberta Kissinger\" src=\"/img/avatar-female-4.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Roberta Kissinger</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Rotterdam, NL</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">18 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">8 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">bench-roberta</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Franc Bijon\" src=\"/img/avatar-male-5.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Franc Bijon</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Paris, FR</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">20 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">10 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">bijondesign</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Kate Worthington\" src=\"/img/avatar-female-5.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Kate Worthington</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Los Angeles, USA</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">22 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">12 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">kwmarketing</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Kenny Smith\" src=\"/img/avatar-male-6.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Kenny Smith</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Berlin, GER</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">24 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">14 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">anotherksmith</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                        <div class=\"col-12 col-md-6\">\n                            <div class=\"card\">\n                                <div class=\"card-body\">\n                                    <div class=\"media\">\n                                        <a href=\"#\" class=\"mr-3\">\n                                            <img alt=\"Christina Hersinger\" src=\"/img/avatar-female-6.jpg\" class=\"avatar\">\n                                        </a>\n                                        <div class=\"media-body\">\n                                            <div>\n                                                <a href=\"#\" class=\"h5 m-0\">\n                                                    <h5>Christina Hersinger</h5>\n                                                </a>\n                                                <small class=\"text-muted\"><i class=\"icon-location\"></i> Frankfurt, GER</small>\n                                            </div>\n                                            <ul class=\"list-inline\">\n\n                                                <li class=\"list-inline-item text-small\">27 Followers</li>\n\n                                                <li class=\"list-inline-item text-small\">17 Following</li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"card-footer d-flex justify-content-between align-items-center\">\n                                    <a class=\"text-small\" href=\"#\">chersinger</a>\n                                    <button class=\"btn btn-outline-primary\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Follow\">\n                                        <i class=\"icon-add-user\"></i>\n                                    </button>\n                                </div>\n                            </div>\n                            <!-- end card -->\n                        </div>\n\n                    </div>\n                    <!--end of row-->\n                </div>\n                <!--end of container-->\n            </div>\n\n        </div>\n    </section>\n    <!--end of section-->\n    <footer class=\"footer-short\">\n        <div class=\"container\">\n            <hr>\n            <nav class=\"row justify-content-between align-items-center\">\n                <div class=\"col-auto\">\n                    <ul class=\"list-inline\">\n                        <li class=\"list-inline-item\">\n                            <a href=\"#\">\n                                <img alt=\"Image\" src=\"/img/logo-gray.svg\">\n                            </a>\n                        </li>\n                        <li class=\"list-inline-item\">\n                            <a href=\"#\">Overview</a>\n                        </li>\n                        <li class=\"list-inline-item\">\n                            <a href=\"#\">Documentation</a>\n                        </li>\n                        <li class=\"list-inline-item\">\n                            <a href=\"#\">Changelog</a>\n                        </li>\n                    </ul>\n                </div>\n                <!--end of col-->\n                <div class=\"col-auto text-sm-right\">\n                    <ul class=\"list-inline\">\n                        <li class=\"list-inline-item\">\n                            <a href=\"#\"><i class=\"socicon-twitter\"></i></a>\n                        </li>\n                        <li class=\"list-inline-item\">\n                            <a href=\"#\"><i class=\"socicon-facebook\"></i></a>\n                        </li>\n                    </ul>\n                </div>\n                <!--end of col-->\n            </nav>\n            <!--end of row-->\n            <div class=\"row\">\n                <div class=\"col\">\n                    <small>© 2019 Medium Rare All Rights Reserved</small>\n                </div>\n                <!--end of col-->\n            </div>\n            <!--end of row-->\n        </div>\n        <!--end of container-->\n    </footer>\n</div>"
  },
  {
    "path": "RunGroopWebApp/Views/User/EditProfile.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model EditProfileViewModel\n\n<div class=\"main-container\">\n    <section class=\"bg-white space-sm pb-4\">\n        <div class=\"container\">\n            <div class=\"row justify-content-between align-items-center\">\n                <div class=\"col-auto\">\n                    <h1 class=\"h2\">Account Settings</h1>\n                </div>\n                <!--end of col-->\n                <!--end of col-->\n            </div>\n            <!--end of row-->\n        </div>\n        <!--end of container-->\n    </section>\n    <!--end of section-->\n    <section class=\"flush-with-above space-0\">\n        <div class=\"bg-white\">\n            <div class=\"container\">\n                <div class=\"row\">\n                    <div class=\"col\">\n                        <ul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link active\"\n                                   id=\"overview-tab\"\n                                   data-toggle=\"tab\"\n                                   href=\"#profile\"\n                                   role=\"tab\"\n                                   aria-selected=\"true\">Profile</a>\n                            </li>\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\"\n                                   id=\"security-tab\"\n                                   data-toggle=\"tab\"\n                                   href=\"#security\"\n                                   role=\"tab\"\n                                   aria-selected=\"false\">Security</a>\n                            </li>\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\"\n                                   id=\"notifications-tab\"\n                                   data-toggle=\"tab\"\n                                   href=\"#notifications\"\n                                   role=\"tab\"\n                                   aria-selected=\"false\">Notifications</a>\n                            </li>\n                        </ul>\n                    </div>\n                    <!--end of col-->\n                </div>\n                <!--end of row-->\n            </div>\n            <!--end of container-->\n        </div>\n    </section>\n    <section class=\"flush-with-above height-80 d-block\">\n        <div class=\"tab-content\">\n            <div class=\"tab-pane fade show active\" id=\"profile\" role=\"tabpanel\">\n                <div class=\"container\">\n                    <div class=\"row\">\n                        <div class=\"col-12\">\n                            <div class=\"media flex-wrap mb-0 align-items-center\">\n                                @{\n                                    var imageUrl = string.IsNullOrEmpty(Model.ProfileImageUrl)\n                                    ? \"/img/avatar-male-3.jpg\"\n                                    : Model.ProfileImageUrl;\n                                }\n                                <img alt=\"Image\" src=\"@imageUrl\" class=\"avatar avatar-lg mb-3 mb-md-0\" />\n                                <div class=\"media-body\">\n                                    <form asp-action=\"EditProfile\" enctype=\"multipart/form-data\">\n                                        <label asp-for=\"Image\" class=\"custom-file mb-2\" for=\"file2\">\n                                            <input asp-for=\"Image\" type=\"file\" id=\"file2\" class=\"custom-file-input height-0\" oninput=\"submitProfileImage();\" />\n                                            <span class=\"btn btn-primary\"><i class=\"icon-upload-to-cloud\">&nbsp;</i>Upload</span>\n                                            <span asp-validation-for=\"Image\" class=\"text-danger\"></span>\n                                            <button id=\"submit-image-button\" type=\"submit\" hidden></button>\n                                        </label>\n                                        <div>\n                                            <small>For best results, use an image at least 256px by 256px in either .jpg or .png format</small>\n                                        </div>\n\n                                        <input asp-for=\"City\" hidden />\n                                        <input asp-for=\"State\" hidden />\n                                        <input asp-for=\"Pace\" hidden />\n                                        <input asp-for=\"Mileage\" hidden />\n\n                                    </form>\n                                </div>\n                            </div>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <!--end of row-->\n                    <hr />\n                    <div class=\"row mb-4\">\n                        <div class=\"col\">\n                            <h5>Profile Information</h5>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <!--end of row-->\n                    <div class=\"row\">\n                        <!--end of col-->\n                        <div class=\"col-12 col-md-8 order-md-1\">\n                            <form asp-action=\"EditProfile\" method=\"post\" class=\"row\">\n                                <div class=\"col-6\">\n                                    <div class=\"form-group\">\n                                        <label asp-for=\"City\">City:</label>\n                                        <input asp-for=\"City\" type=\"text\" class=\"form-control form-control-lg\" />\n                                        <span asp-validation-for=\"City\" class=\"text-danger\"></span>\n                                    </div>\n                                </div>\n                                <div class=\"col-6\">\n                                    <div class=\"form-group\">\n                                        <label asp-for=\"State\">State:</label>\n                                        <input asp-for=\"State\" type=\"text\" class=\"form-control form-control-lg\" />\n                                        <span asp-validation-for=\"State\" class=\"text-danger\"></span>\n                                    </div>\n                                </div>\n                                <div class=\"col-6\">\n                                    <div class=\"form-group\">\n                                        <label asp-for=\"Pace\">Pace:</label>\n                                        <input asp-for=\"Pace\" type=\"text\" class=\"form-control form-control-lg\" />\n                                        <span asp-validation-for=\"Pace\" class=\"text-danger\"></span>\n                                    </div>\n                                </div>\n                                <div class=\"col-6\">\n                                    <div class=\"form-group\">\n                                        <label asp-for=\"Mileage\">Mileage:</label>\n                                        <input asp-for=\"Mileage\" type=\"text\" class=\"form-control form-control-lg\" />\n                                        <span asp-validation-for=\"Mileage\" class=\"text-danger\"></span>\n                                    </div>\n                                </div>\n                                <div class=\"col-12\">\n                                    <div class=\"form-group\">\n                                        <label for=\"about-me\">About me:</label>\n                                        <textarea class=\"form-control form-control-lg\"\n                                                  name=\"profileBio\"\n                                                  rows=\"4\"\n                                                  id=\"about-me\"></textarea>\n                                    </div>\n                                </div>\n                                <div class=\"col-12\">\n                                    <div class=\"form-group\">\n                                        <button class=\"btn btn-primary\" type=\"submit\">Save changes</button>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <!--end of row-->\n                </div>\n                <!--end of container-->\n            </div>\n            <!--end of tab pane-->\n            <div class=\"tab-pane fade\" id=\"security\" role=\"tabpanel\">\n                <div class=\"container\"></div>\n                <!--end of container-->\n            </div>\n            <!--end of tab pane-->\n            <div class=\"tab-pane fade\" id=\"notifications\" role=\"tabpanel\">\n                <div class=\"container\">\n                    <div class=\"row\">\n                        <div class=\"col-12\">\n                            <div class=\"alert alert-info text-small mb-0\" role=\"alert\">\n                                <i class=\"icon-shield\"></i>\n                                <span>\n                                    We will never distribute your email address to third parties. Read about email communication in\n                                    our privacy policy.\n                                </span>\n                                <a href=\"#\">View privacy policy &rsaquo;</a>\n                            </div>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <hr />\n                    <div class=\"row\">\n                        <div class=\"col-12\">\n                            <form>\n                                <h5 class=\"mb-4\">Notification Preferences</h5>\n                                <div>\n                                    <div class=\"custom-control custom-checkbox\">\n                                        <input type=\"checkbox\"\n                                               class=\"custom-control-input\"\n                                               name=\"notify-mention\"\n                                               checked\n                                               id=\"notify-mention\" />\n                                        <label class=\"custom-control-label\" for=\"notify-mention\">Someone mentions me</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-checkbox\">\n                                        <input type=\"checkbox\"\n                                               class=\"custom-control-input\"\n                                               name=\"notify-request\"\n                                               checked\n                                               id=\"notify-follow\" />\n                                        <label class=\"custom-control-label\" for=\"notify-follow\">Someone follows me</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-checkbox\">\n                                        <input type=\"checkbox\"\n                                               class=\"custom-control-input\"\n                                               name=\"notify-share\"\n                                               checked\n                                               id=\"notify-share\" />\n                                        <label class=\"custom-control-label\" for=\"notify-share\">Someone shares my activty</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-checkbox\">\n                                        <input type=\"checkbox\"\n                                               class=\"custom-control-input\"\n                                               name=\"notify-message\"\n                                               checked\n                                               id=\"notify-message\" />\n                                        <label class=\"custom-control-label\" for=\"notify-message\">Someone messages me</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-checkbox\">\n                                        <input type=\"checkbox\"\n                                               class=\"custom-control-input\"\n                                               name=\"notify-adds\"\n                                               checked\n                                               id=\"notify-adds\" />\n                                        <label class=\"custom-control-label\" for=\"notify-adds\">Someone adds me to a project</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-checkbox\">\n                                        <input type=\"checkbox\" class=\"custom-control-input\" name=\"notify-sales\" id=\"notify-sales\" />\n                                        <label class=\"custom-control-label\" for=\"notify-sales\">Sales and promotions</label>\n                                    </div>\n                                </div>\n                                <button type=\"submit\" class=\"btn btn-secondary mt-4\" disabled>Update preferences</button>\n                            </form>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <!--end of row-->\n                    <hr />\n                    <div class=\"row\">\n                        <div class=\"col-12\">\n                            <form>\n                                <h5>Notification Frequency</h5>\n                                <div>\n                                    <div class=\"custom-control custom-radio\">\n                                        <input id=\"notify-daily\"\n                                               type=\"radio\"\n                                               class=\"custom-control-input\"\n                                               value=\"notify-daily\"\n                                               name=\"notify-frequency\" />\n                                        <label class=\"custom-control-label\" for=\"notify-daily\">Daily</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-radio\">\n                                        <input id=\"notify-weekly\"\n                                               type=\"radio\"\n                                               class=\"custom-control-input\"\n                                               value=\"notify-weekly\"\n                                               name=\"notify-frequency\"\n                                               checked />\n                                        <label class=\"custom-control-label\" for=\"notify-weekly\">Weekly</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-radio\">\n                                        <input id=\"notify-monthly\"\n                                               type=\"radio\"\n                                               class=\"custom-control-input\"\n                                               value=\"notify-monthly\"\n                                               name=\"notify-frequency\" />\n                                        <label class=\"custom-control-label\" for=\"notify-monthly\">Monthly</label>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div class=\"custom-control custom-radio\">\n                                        <input id=\"notify-never\"\n                                               type=\"radio\"\n                                               class=\"custom-control-input\"\n                                               value=\"notify-never\"\n                                               name=\"notify-frequency\" />\n                                        <label class=\"custom-control-label\" for=\"notify-never\">Never</label>\n                                    </div>\n                                </div>\n                                <button type=\"submit\" class=\"btn btn-secondary mt-4\" disabled>Update frequency</button>\n                            </form>\n                        </div>\n                        <!--end of col-->\n                    </div>\n                    <!--end of row-->\n                </div>\n                <!--end of container-->\n            </div>\n        </div>\n        <!--end of tabs content-->\n    </section>\n    <!--end of section-->\n</div>\n\n\n<script type=\"text/javascript\">\n    function submitProfileImage() {\n        document.getElementById(\"submit-image-button\").click();\n    }\n</script>"
  },
  {
    "path": "RunGroopWebApp/Views/User/Index.cshtml",
    "content": "﻿@using RunGroopWebApp.ViewModels\n@model List<UserViewModel>\n\n<section class=\"flush-with-above\">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col\">\n                <table class=\"table table-hover align-items-center table-borderless\">\n                    <tbody>\n                        @foreach (var user in Model)\n                        {\n                            <tr class=\"bg-white\">\n                                <th scope=\"row\">\n                                    <div class=\"media align-items-center\">\n                                        <img alt=\"Image profile avatar\" src=\"@user.ProfileImageUrl\" class=\"avatar\">\n                                        <div class=\"media-body\">\n                                            <span class=\"h6 mb-0\">@user.UserName</span>\n                                        </div>\n                                    </div>\n                                </th>\n                                <td>\n                                    <a class=\"btn btn-outline-primary\" asp-controller=\"User\" asp-action=\"Detail\" asp-route-id=\"@user.Id\">\n                                        View Profile\n                                    </a>\n                                </td>\n\n                                @{\n                                    var mileage = user.Mileage == null ? \"?\" : user.Mileage.ToString();\n                                    var pace = user.Pace == null ? \"?\" : user.Mileage.ToString();\n                                }\n                                <td>@mileage mile at @pace mph</td>\n                                <td><i class=\"icon-location\"></i> @user.Location</td>\n                            </tr>\n                            <tr class=\"table-divider\">\n                                <th></th>\n                                <td></td>\n                            </tr>\n                        }\n                    </tbody>\n                </table>\n            </div>\n            <!--end of col-->\n        </div>\n        <!--end of row-->\n    </div>\n    <!--end of container-->\n</section>\n"
  },
  {
    "path": "RunGroopWebApp/Views/_ViewImports.cshtml",
    "content": "﻿@using RunGroopWebApp\n@using RunGroopWebApp.Models\n@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers\n"
  },
  {
    "path": "RunGroopWebApp/Views/_ViewStart.cshtml",
    "content": "﻿@{\n    Layout = \"_Layout\";\n}\n"
  },
  {
    "path": "RunGroopWebApp/appsettings.Development.json",
    "content": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "RunGroopWebApp/appsettings.json",
    "content": "{\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Data Source=DESKTOP-EI2TOGP\\\\SQLEXPRESS;Initial Catalog=RunGroops;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False\"\n  },\n  \"CloudinarySettings\": {\n    \"CloudName\": \"\",\n    \"ApiKey\": \"\",\n    \"ApiSecret\": \"\"\n  },\n  \"IPInfoToken\": \"63d5ada815b74c\",\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/css/custom.css",
    "content": "@import url('https://fonts.googleapis.com/css2?family=Jua&display=swap');\n\n#logo-text {\n    font-family: \"Jua\", sans-serif;\n    font-size: 2rem;\n    color: #02B875;\n}\n\n#logo-green {\n    font-family: \"Jua\", sans-serif;\n    font-size: 2rem;\n}\n\ninput[id=\"registerLocation\"]::placeholder {\n    font-family: Roboto, 'Font Awesome\\ 5 Pro', sans-serif;\n    font-weight: 600;\n}  \n\n\n#datalistOptions {\n    border: 1px #ccc;\n    padding: 3px;\n    list-style-type: none;\n}\n\n#datalistOptions ul {\n    list-style-type: none;\n    padding: 0;\n    margin: 0;\n}\n\n#datalistOptions ul li {\n    padding: 5px 0;\n    list-style-type: none;\n}\n\n#datalistOptions ul li:hover {\n    background: #ffffff;\n    list-style-type: none;\n}"
  },
  {
    "path": "RunGroopWebApp/wwwroot/css/entypo.css",
    "content": "@font-face {\n  font-family: 'entypo';\n  src: url('../fonts/entypo.eot?79395234');\n  src: url('../fonts/entypo.eot?79395234#iefix') format('embedded-opentype'),\n       url('../fonts/entypo.woff2?79395234') format('woff2'),\n       url('../fonts/entypo.woff?79395234') format('woff'),\n       url('../fonts/entypo.ttf?79395234') format('truetype'),\n       url('../fonts/entypo.svg?79395234#entypo') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */\n/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */\n/*\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n  @font-face {\n    font-family: 'entypo';\n    src: url('../fonts/entypo.svg?79395234#entypo') format('svg');\n  }\n}\n*/\n \n [class^=\"icon-\"]:before, [class*=\" icon-\"]:before {\n  font-family: \"entypo\";\n  font-style: normal;\n  font-weight: normal;\n  speak: none;\n \n  display: inline-block;\n  text-decoration: inherit;\n  width: 1em;\n  /*margin-right: .2em;*/\n  text-align: center;\n  /* opacity: .8; */\n \n  /* For safety - reset parent styles, that can break glyph codes*/\n  font-variant: normal;\n  text-transform: none;\n \n  /* fix buttons height, for twitter bootstrap */\n  line-height: 1em;\n \n  /* Animation center compensation - margins should be symmetric */\n  /* remove if not needed */\n  /*margin-left: .2em;*/\n \n  /* you can be more comfortable with increased icons size */\n  /* font-size: 120%; */\n \n  /* Font smoothing. That was taken from TWBS */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n \n  /* Uncomment for 3D effect */\n  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */\n}\n \n.icon-add-to-list:before { content: '\\e800'; } /* '' */\n.icon-add-user:before { content: '\\e801'; } /* '' */\n.icon-address:before { content: '\\e802'; } /* '' */\n.icon-adjust:before { content: '\\e803'; } /* '' */\n.icon-air:before { content: '\\e804'; } /* '' */\n.icon-aircraft-landing:before { content: '\\e805'; } /* '' */\n.icon-aircraft-take-off:before { content: '\\e806'; } /* '' */\n.icon-aircraft:before { content: '\\e807'; } /* '' */\n.icon-align-bottom:before { content: '\\e808'; } /* '' */\n.icon-align-horizontal-middle:before { content: '\\e809'; } /* '' */\n.icon-align-left:before { content: '\\e80a'; } /* '' */\n.icon-align-right:before { content: '\\e80b'; } /* '' */\n.icon-align-top:before { content: '\\e80c'; } /* '' */\n.icon-align-vertical-middle:before { content: '\\e80d'; } /* '' */\n.icon-archive:before { content: '\\e80e'; } /* '' */\n.icon-area-graph:before { content: '\\e80f'; } /* '' */\n.icon-arrow-bold-down:before { content: '\\e810'; } /* '' */\n.icon-arrow-bold-left:before { content: '\\e811'; } /* '' */\n.icon-arrow-bold-right:before { content: '\\e812'; } /* '' */\n.icon-arrow-bold-up:before { content: '\\e813'; } /* '' */\n.icon-arrow-down:before { content: '\\e814'; } /* '' */\n.icon-arrow-left:before { content: '\\e815'; } /* '' */\n.icon-arrow-long-down:before { content: '\\e816'; } /* '' */\n.icon-arrow-long-left:before { content: '\\e817'; } /* '' */\n.icon-arrow-long-right:before { content: '\\e818'; } /* '' */\n.icon-arrow-long-up:before { content: '\\e819'; } /* '' */\n.icon-arrow-right:before { content: '\\e81a'; } /* '' */\n.icon-arrow-up:before { content: '\\e81b'; } /* '' */\n.icon-arrow-with-circle-down:before { content: '\\e81c'; } /* '' */\n.icon-arrow-with-circle-left:before { content: '\\e81d'; } /* '' */\n.icon-arrow-with-circle-right:before { content: '\\e81e'; } /* '' */\n.icon-arrow-with-circle-up:before { content: '\\e81f'; } /* '' */\n.icon-attachment:before { content: '\\e820'; } /* '' */\n.icon-awareness-ribbon:before { content: '\\e821'; } /* '' */\n.icon-back-in-time:before { content: '\\e822'; } /* '' */\n.icon-back:before { content: '\\e823'; } /* '' */\n.icon-bar-graph:before { content: '\\e824'; } /* '' */\n.icon-battery:before { content: '\\e825'; } /* '' */\n.icon-beamed-note:before { content: '\\e826'; } /* '' */\n.icon-bell:before { content: '\\e827'; } /* '' */\n.icon-blackboard:before { content: '\\e828'; } /* '' */\n.icon-block:before { content: '\\e829'; } /* '' */\n.icon-book:before { content: '\\e82a'; } /* '' */\n.icon-bookmark:before { content: '\\e82b'; } /* '' */\n.icon-bookmarks:before { content: '\\e82c'; } /* '' */\n.icon-bowl:before { content: '\\e82d'; } /* '' */\n.icon-box:before { content: '\\e82e'; } /* '' */\n.icon-briefcase:before { content: '\\e82f'; } /* '' */\n.icon-browser:before { content: '\\e830'; } /* '' */\n.icon-brush:before { content: '\\e831'; } /* '' */\n.icon-bucket:before { content: '\\e832'; } /* '' */\n.icon-bug:before { content: '\\e833'; } /* '' */\n.icon-cake:before { content: '\\e834'; } /* '' */\n.icon-calculator:before { content: '\\e835'; } /* '' */\n.icon-calendar:before { content: '\\e836'; } /* '' */\n.icon-camera:before { content: '\\e837'; } /* '' */\n.icon-ccw:before { content: '\\e838'; } /* '' */\n.icon-chat:before { content: '\\e839'; } /* '' */\n.icon-check:before { content: '\\e83a'; } /* '' */\n.icon-chevron-down:before { content: '\\e83b'; } /* '' */\n.icon-chevron-left:before { content: '\\e83c'; } /* '' */\n.icon-chevron-right:before { content: '\\e83d'; } /* '' */\n.icon-chevron-small-down:before { content: '\\e83e'; } /* '' */\n.icon-chevron-small-left:before { content: '\\e83f'; } /* '' */\n.icon-chevron-small-right:before { content: '\\e840'; } /* '' */\n.icon-chevron-small-up:before { content: '\\e841'; } /* '' */\n.icon-chevron-thin-down:before { content: '\\e842'; } /* '' */\n.icon-chevron-thin-left:before { content: '\\e843'; } /* '' */\n.icon-chevron-thin-right:before { content: '\\e844'; } /* '' */\n.icon-chevron-thin-up:before { content: '\\e845'; } /* '' */\n.icon-chevron-up:before { content: '\\e846'; } /* '' */\n.icon-chevron-with-circle-down:before { content: '\\e847'; } /* '' */\n.icon-chevron-with-circle-left:before { content: '\\e848'; } /* '' */\n.icon-chevron-with-circle-right:before { content: '\\e849'; } /* '' */\n.icon-chevron-with-circle-up:before { content: '\\e84a'; } /* '' */\n.icon-circle-with-cross:before { content: '\\e84b'; } /* '' */\n.icon-circle-with-minus:before { content: '\\e84c'; } /* '' */\n.icon-circle-with-plus:before { content: '\\e84d'; } /* '' */\n.icon-circle:before { content: '\\e84e'; } /* '' */\n.icon-circular-graph:before { content: '\\e84f'; } /* '' */\n.icon-clapperboard:before { content: '\\e850'; } /* '' */\n.icon-classic-computer:before { content: '\\e851'; } /* '' */\n.icon-clipboard:before { content: '\\e852'; } /* '' */\n.icon-clock:before { content: '\\e853'; } /* '' */\n.icon-cloud:before { content: '\\e854'; } /* '' */\n.icon-code:before { content: '\\e855'; } /* '' */\n.icon-cog:before { content: '\\e856'; } /* '' */\n.icon-colours:before { content: '\\e857'; } /* '' */\n.icon-compass:before { content: '\\e858'; } /* '' */\n.icon-controller-fast-backward:before { content: '\\e859'; } /* '' */\n.icon-controller-fast-forward:before { content: '\\e85a'; } /* '' */\n.icon-controller-jump-to-start:before { content: '\\e85b'; } /* '' */\n.icon-controller-next:before { content: '\\e85c'; } /* '' */\n.icon-controller-paus:before { content: '\\e85d'; } /* '' */\n.icon-controller-play:before { content: '\\e85e'; } /* '' */\n.icon-controller-record:before { content: '\\e85f'; } /* '' */\n.icon-controller-stop:before { content: '\\e860'; } /* '' */\n.icon-controller-volume:before { content: '\\e861'; } /* '' */\n.icon-copy:before { content: '\\e862'; } /* '' */\n.icon-creative-commons-attribution:before { content: '\\e863'; } /* '' */\n.icon-creative-commons-noderivs:before { content: '\\e864'; } /* '' */\n.icon-creative-commons-noncommercial-eu:before { content: '\\e865'; } /* '' */\n.icon-creative-commons-noncommercial-us:before { content: '\\e866'; } /* '' */\n.icon-creative-commons-public-domain:before { content: '\\e867'; } /* '' */\n.icon-creative-commons-remix:before { content: '\\e868'; } /* '' */\n.icon-creative-commons-share:before { content: '\\e869'; } /* '' */\n.icon-creative-commons-sharealike:before { content: '\\e86a'; } /* '' */\n.icon-creative-commons:before { content: '\\e86b'; } /* '' */\n.icon-credit-card:before { content: '\\e86c'; } /* '' */\n.icon-credit:before { content: '\\e86d'; } /* '' */\n.icon-crop:before { content: '\\e86e'; } /* '' */\n.icon-cross:before { content: '\\e86f'; } /* '' */\n.icon-cup:before { content: '\\e870'; } /* '' */\n.icon-cw:before { content: '\\e871'; } /* '' */\n.icon-cycle:before { content: '\\e872'; } /* '' */\n.icon-database:before { content: '\\e873'; } /* '' */\n.icon-dial-pad:before { content: '\\e874'; } /* '' */\n.icon-direction:before { content: '\\e875'; } /* '' */\n.icon-document-landscape:before { content: '\\e876'; } /* '' */\n.icon-document:before { content: '\\e877'; } /* '' */\n.icon-documents:before { content: '\\e878'; } /* '' */\n.icon-dot-single:before { content: '\\e879'; } /* '' */\n.icon-dots-three-horizontal:before { content: '\\e87a'; } /* '' */\n.icon-dots-three-vertical:before { content: '\\e87b'; } /* '' */\n.icon-dots-two-horizontal:before { content: '\\e87c'; } /* '' */\n.icon-dots-two-vertical:before { content: '\\e87d'; } /* '' */\n.icon-download:before { content: '\\e87e'; } /* '' */\n.icon-drink:before { content: '\\e87f'; } /* '' */\n.icon-drive:before { content: '\\e880'; } /* '' */\n.icon-drop:before { content: '\\e881'; } /* '' */\n.icon-edit:before { content: '\\e882'; } /* '' */\n.icon-email:before { content: '\\e883'; } /* '' */\n.icon-emoji-flirt:before { content: '\\e884'; } /* '' */\n.icon-emoji-happy:before { content: '\\e885'; } /* '' */\n.icon-emoji-neutral:before { content: '\\e886'; } /* '' */\n.icon-emoji-sad:before { content: '\\e887'; } /* '' */\n.icon-erase:before { content: '\\e888'; } /* '' */\n.icon-eraser:before { content: '\\e889'; } /* '' */\n.icon-export:before { content: '\\e88a'; } /* '' */\n.icon-eye-with-line:before { content: '\\e88b'; } /* '' */\n.icon-eye:before { content: '\\e88c'; } /* '' */\n.icon-feather:before { content: '\\e88d'; } /* '' */\n.icon-fingerprint:before { content: '\\e88e'; } /* '' */\n.icon-flag:before { content: '\\e88f'; } /* '' */\n.icon-flash:before { content: '\\e890'; } /* '' */\n.icon-flashlight:before { content: '\\e891'; } /* '' */\n.icon-flat-brush:before { content: '\\e892'; } /* '' */\n.icon-flow-branch:before { content: '\\e893'; } /* '' */\n.icon-flow-cascade:before { content: '\\e894'; } /* '' */\n.icon-flow-line:before { content: '\\e895'; } /* '' */\n.icon-flow-parallel:before { content: '\\e896'; } /* '' */\n.icon-flow-tree:before { content: '\\e897'; } /* '' */\n.icon-flower:before { content: '\\e898'; } /* '' */\n.icon-folder-images:before { content: '\\e899'; } /* '' */\n.icon-folder-music:before { content: '\\e89a'; } /* '' */\n.icon-folder-video:before { content: '\\e89b'; } /* '' */\n.icon-folder:before { content: '\\e89c'; } /* '' */\n.icon-forward:before { content: '\\e89d'; } /* '' */\n.icon-funnel:before { content: '\\e89e'; } /* '' */\n.icon-game-controller:before { content: '\\e89f'; } /* '' */\n.icon-gauge:before { content: '\\e8a0'; } /* '' */\n.icon-globe:before { content: '\\e8a1'; } /* '' */\n.icon-graduation-cap:before { content: '\\e8a2'; } /* '' */\n.icon-grid:before { content: '\\e8a3'; } /* '' */\n.icon-hair-cross:before { content: '\\e8a4'; } /* '' */\n.icon-hand:before { content: '\\e8a5'; } /* '' */\n.icon-heart-outlined:before { content: '\\e8a6'; } /* '' */\n.icon-heart:before { content: '\\e8a7'; } /* '' */\n.icon-help-with-circle:before { content: '\\e8a8'; } /* '' */\n.icon-help:before { content: '\\e8a9'; } /* '' */\n.icon-home:before { content: '\\e8aa'; } /* '' */\n.icon-hour-glass:before { content: '\\e8ab'; } /* '' */\n.icon-image-inverted:before { content: '\\e8ac'; } /* '' */\n.icon-image:before { content: '\\e8ad'; } /* '' */\n.icon-images:before { content: '\\e8ae'; } /* '' */\n.icon-inbox:before { content: '\\e8af'; } /* '' */\n.icon-infinity:before { content: '\\e8b0'; } /* '' */\n.icon-info-with-circle:before { content: '\\e8b1'; } /* '' */\n.icon-info:before { content: '\\e8b2'; } /* '' */\n.icon-install:before { content: '\\e8b3'; } /* '' */\n.icon-key:before { content: '\\e8b4'; } /* '' */\n.icon-keyboard:before { content: '\\e8b5'; } /* '' */\n.icon-lab-flask:before { content: '\\e8b6'; } /* '' */\n.icon-landline:before { content: '\\e8b7'; } /* '' */\n.icon-language:before { content: '\\e8b8'; } /* '' */\n.icon-laptop:before { content: '\\e8b9'; } /* '' */\n.icon-layers:before { content: '\\e8ba'; } /* '' */\n.icon-leaf:before { content: '\\e8bb'; } /* '' */\n.icon-level-down:before { content: '\\e8bc'; } /* '' */\n.icon-level-up:before { content: '\\e8bd'; } /* '' */\n.icon-lifebuoy:before { content: '\\e8be'; } /* '' */\n.icon-light-bulb:before { content: '\\e8bf'; } /* '' */\n.icon-light-down:before { content: '\\e8c0'; } /* '' */\n.icon-light-up:before { content: '\\e8c1'; } /* '' */\n.icon-line-graph:before { content: '\\e8c2'; } /* '' */\n.icon-link:before { content: '\\e8c3'; } /* '' */\n.icon-list:before { content: '\\e8c4'; } /* '' */\n.icon-location-pin:before { content: '\\e8c5'; } /* '' */\n.icon-location:before { content: '\\e8c6'; } /* '' */\n.icon-lock-open:before { content: '\\e8c7'; } /* '' */\n.icon-lock:before { content: '\\e8c8'; } /* '' */\n.icon-log-out:before { content: '\\e8c9'; } /* '' */\n.icon-login:before { content: '\\e8ca'; } /* '' */\n.icon-loop:before { content: '\\e8cb'; } /* '' */\n.icon-magnet:before { content: '\\e8cc'; } /* '' */\n.icon-magnifying-glass:before { content: '\\e8cd'; } /* '' */\n.icon-mail:before { content: '\\e8ce'; } /* '' */\n.icon-man:before { content: '\\e8cf'; } /* '' */\n.icon-map:before { content: '\\e8d0'; } /* '' */\n.icon-mask:before { content: '\\e8d1'; } /* '' */\n.icon-medal:before { content: '\\e8d2'; } /* '' */\n.icon-megaphone:before { content: '\\e8d3'; } /* '' */\n.icon-menu:before { content: '\\e8d4'; } /* '' */\n.icon-merge:before { content: '\\e8d5'; } /* '' */\n.icon-message:before { content: '\\e8d6'; } /* '' */\n.icon-mic:before { content: '\\e8d7'; } /* '' */\n.icon-minus:before { content: '\\e8d8'; } /* '' */\n.icon-mobile:before { content: '\\e8d9'; } /* '' */\n.icon-modern-mic:before { content: '\\e8da'; } /* '' */\n.icon-moon:before { content: '\\e8db'; } /* '' */\n.icon-mouse-pointer:before { content: '\\e8dc'; } /* '' */\n.icon-mouse:before { content: '\\e8dd'; } /* '' */\n.icon-music:before { content: '\\e8de'; } /* '' */\n.icon-network:before { content: '\\e8df'; } /* '' */\n.icon-new-message:before { content: '\\e8e0'; } /* '' */\n.icon-new:before { content: '\\e8e1'; } /* '' */\n.icon-news:before { content: '\\e8e2'; } /* '' */\n.icon-newsletter:before { content: '\\e8e3'; } /* '' */\n.icon-note:before { content: '\\e8e4'; } /* '' */\n.icon-notification:before { content: '\\e8e5'; } /* '' */\n.icon-notifications-off:before { content: '\\e8e6'; } /* '' */\n.icon-old-mobile:before { content: '\\e8e7'; } /* '' */\n.icon-old-phone:before { content: '\\e8e8'; } /* '' */\n.icon-open-book:before { content: '\\e8e9'; } /* '' */\n.icon-palette:before { content: '\\e8ea'; } /* '' */\n.icon-paper-plane:before { content: '\\e8eb'; } /* '' */\n.icon-pencil:before { content: '\\e8ec'; } /* '' */\n.icon-phone:before { content: '\\e8ed'; } /* '' */\n.icon-pie-chart:before { content: '\\e8ee'; } /* '' */\n.icon-pin:before { content: '\\e8ef'; } /* '' */\n.icon-plus:before { content: '\\e8f0'; } /* '' */\n.icon-popup:before { content: '\\e8f1'; } /* '' */\n.icon-power-plug:before { content: '\\e8f2'; } /* '' */\n.icon-price-ribbon:before { content: '\\e8f3'; } /* '' */\n.icon-price-tag:before { content: '\\e8f4'; } /* '' */\n.icon-print:before { content: '\\e8f5'; } /* '' */\n.icon-progress-empty:before { content: '\\e8f6'; } /* '' */\n.icon-progress-full:before { content: '\\e8f7'; } /* '' */\n.icon-progress-one:before { content: '\\e8f8'; } /* '' */\n.icon-progress-two:before { content: '\\e8f9'; } /* '' */\n.icon-publish:before { content: '\\e8fa'; } /* '' */\n.icon-quote:before { content: '\\e8fb'; } /* '' */\n.icon-radio:before { content: '\\e8fc'; } /* '' */\n.icon-remove-user:before { content: '\\e8fd'; } /* '' */\n.icon-reply-all:before { content: '\\e8fe'; } /* '' */\n.icon-reply:before { content: '\\e8ff'; } /* '' */\n.icon-resize-100%:before { content: '\\e900'; } /* '' */\n.icon-resize-full-screen:before { content: '\\e901'; } /* '' */\n.icon-retweet:before { content: '\\e902'; } /* '' */\n.icon-rocket:before { content: '\\e903'; } /* '' */\n.icon-round-brush:before { content: '\\e904'; } /* '' */\n.icon-rss:before { content: '\\e905'; } /* '' */\n.icon-ruler:before { content: '\\e906'; } /* '' */\n.icon-save:before { content: '\\e907'; } /* '' */\n.icon-scissors:before { content: '\\e908'; } /* '' */\n.icon-select-arrows:before { content: '\\e909'; } /* '' */\n.icon-share-alternative:before { content: '\\e90a'; } /* '' */\n.icon-share:before { content: '\\e90b'; } /* '' */\n.icon-shareable:before { content: '\\e90c'; } /* '' */\n.icon-shield:before { content: '\\e90d'; } /* '' */\n.icon-shop:before { content: '\\e90e'; } /* '' */\n.icon-shopping-bag:before { content: '\\e90f'; } /* '' */\n.icon-shopping-basket:before { content: '\\e910'; } /* '' */\n.icon-shopping-cart:before { content: '\\e911'; } /* '' */\n.icon-shuffle:before { content: '\\e912'; } /* '' */\n.icon-signal:before { content: '\\e913'; } /* '' */\n.icon-sound-mix:before { content: '\\e914'; } /* '' */\n.icon-sound-mute:before { content: '\\e915'; } /* '' */\n.icon-sound:before { content: '\\e916'; } /* '' */\n.icon-sports-club:before { content: '\\e917'; } /* '' */\n.icon-spreadsheet:before { content: '\\e918'; } /* '' */\n.icon-squared-cross:before { content: '\\e919'; } /* '' */\n.icon-squared-minus:before { content: '\\e91a'; } /* '' */\n.icon-squared-plus:before { content: '\\e91b'; } /* '' */\n.icon-star-outlined:before { content: '\\e91c'; } /* '' */\n.icon-star:before { content: '\\e91d'; } /* '' */\n.icon-stopwatch:before { content: '\\e91e'; } /* '' */\n.icon-suitcase:before { content: '\\e91f'; } /* '' */\n.icon-swap:before { content: '\\e920'; } /* '' */\n.icon-sweden:before { content: '\\e921'; } /* '' */\n.icon-switch:before { content: '\\e922'; } /* '' */\n.icon-tablet-mobile-combo:before { content: '\\e923'; } /* '' */\n.icon-tablet:before { content: '\\e924'; } /* '' */\n.icon-tag:before { content: '\\e925'; } /* '' */\n.icon-text-document-inverted:before { content: '\\e926'; } /* '' */\n.icon-text-document:before { content: '\\e927'; } /* '' */\n.icon-text:before { content: '\\e928'; } /* '' */\n.icon-thermometer:before { content: '\\e929'; } /* '' */\n.icon-thumbs-down:before { content: '\\e92a'; } /* '' */\n.icon-thumbs-up:before { content: '\\e92b'; } /* '' */\n.icon-thunder-cloud:before { content: '\\e92c'; } /* '' */\n.icon-ticket:before { content: '\\e92d'; } /* '' */\n.icon-time-slot:before { content: '\\e92e'; } /* '' */\n.icon-tools:before { content: '\\e92f'; } /* '' */\n.icon-traffic-cone:before { content: '\\e930'; } /* '' */\n.icon-trash:before { content: '\\e931'; } /* '' */\n.icon-tree:before { content: '\\e932'; } /* '' */\n.icon-triangle-down:before { content: '\\e933'; } /* '' */\n.icon-triangle-left:before { content: '\\e934'; } /* '' */\n.icon-triangle-right:before { content: '\\e935'; } /* '' */\n.icon-triangle-up:before { content: '\\e936'; } /* '' */\n.icon-trophy:before { content: '\\e937'; } /* '' */\n.icon-tv:before { content: '\\e938'; } /* '' */\n.icon-typing:before { content: '\\e939'; } /* '' */\n.icon-uninstall:before { content: '\\e93a'; } /* '' */\n.icon-unread:before { content: '\\e93b'; } /* '' */\n.icon-untag:before { content: '\\e93c'; } /* '' */\n.icon-upload-to-cloud:before { content: '\\e93d'; } /* '' */\n.icon-upload:before { content: '\\e93e'; } /* '' */\n.icon-user:before { content: '\\e93f'; } /* '' */\n.icon-users:before { content: '\\e940'; } /* '' */\n.icon-v-card:before { content: '\\e941'; } /* '' */\n.icon-video-camera:before { content: '\\e942'; } /* '' */\n.icon-video:before { content: '\\e943'; } /* '' */\n.icon-vinyl:before { content: '\\e944'; } /* '' */\n.icon-voicemail:before { content: '\\e945'; } /* '' */\n.icon-wallet:before { content: '\\e946'; } /* '' */\n.icon-warning:before { content: '\\e947'; } /* '' */\n.icon-water:before { content: '\\e948'; } /* '' */\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/css/socicon.css",
    "content": "@charset \"UTF-8\";\n\n@font-face {\n  font-family: \"socicon\";\n  src:url(\"../fonts/socicon.eot\");\n  src:url(\"../fonts/socicon.eot?#iefix\") format(\"embedded-opentype\"),\n    url(\"../fonts/socicon.woff\") format(\"woff\"),\n    url(\"../fonts/socicon.ttf\") format(\"truetype\"),\n    url(\"../fonts/socicon.svg#socicon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n\n}\n\n[data-icon]:before {\n  font-family: \"socicon\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n[class^=\"socicon-\"]:before,\n[class*=\" socicon-\"]:before {\n  font-family: \"socicon\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.socicon-modelmayhem:before {\n  content: \"\\e000\";\n}\n.socicon-mixcloud:before {\n  content: \"\\e001\";\n}\n.socicon-drupal:before {\n  content: \"\\e002\";\n}\n.socicon-swarm:before {\n  content: \"\\e003\";\n}\n.socicon-istock:before {\n  content: \"\\e004\";\n}\n.socicon-yammer:before {\n  content: \"\\e005\";\n}\n.socicon-ello:before {\n  content: \"\\e006\";\n}\n.socicon-stackoverflow:before {\n  content: \"\\e007\";\n}\n.socicon-persona:before {\n  content: \"\\e008\";\n}\n.socicon-triplej:before {\n  content: \"\\e009\";\n}\n.socicon-houzz:before {\n  content: \"\\e00a\";\n}\n.socicon-rss:before {\n  content: \"\\e00b\";\n}\n.socicon-paypal:before {\n  content: \"\\e00c\";\n}\n.socicon-odnoklassniki:before {\n  content: \"\\e00d\";\n}\n.socicon-airbnb:before {\n  content: \"\\e00e\";\n}\n.socicon-periscope:before {\n  content: \"\\e00f\";\n}\n.socicon-outlook:before {\n  content: \"\\e010\";\n}\n.socicon-coderwall:before {\n  content: \"\\e011\";\n}\n.socicon-tripadvisor:before {\n  content: \"\\e012\";\n}\n.socicon-appnet:before {\n  content: \"\\e013\";\n}\n.socicon-goodreads:before {\n  content: \"\\e014\";\n}\n.socicon-tripit:before {\n  content: \"\\e015\";\n}\n.socicon-lanyrd:before {\n  content: \"\\e016\";\n}\n.socicon-slideshare:before {\n  content: \"\\e017\";\n}\n.socicon-buffer:before {\n  content: \"\\e018\";\n}\n.socicon-disqus:before {\n  content: \"\\e019\";\n}\n.socicon-vkontakte:before {\n  content: \"\\e01a\";\n}\n.socicon-whatsapp:before {\n  content: \"\\e01b\";\n}\n.socicon-patreon:before {\n  content: \"\\e01c\";\n}\n.socicon-storehouse:before {\n  content: \"\\e01d\";\n}\n.socicon-pocket:before {\n  content: \"\\e01e\";\n}\n.socicon-mail:before {\n  content: \"\\e01f\";\n}\n.socicon-blogger:before {\n  content: \"\\e020\";\n}\n.socicon-technorati:before {\n  content: \"\\e021\";\n}\n.socicon-reddit:before {\n  content: \"\\e022\";\n}\n.socicon-dribbble:before {\n  content: \"\\e023\";\n}\n.socicon-stumbleupon:before {\n  content: \"\\e024\";\n}\n.socicon-digg:before {\n  content: \"\\e025\";\n}\n.socicon-envato:before {\n  content: \"\\e026\";\n}\n.socicon-behance:before {\n  content: \"\\e027\";\n}\n.socicon-delicious:before {\n  content: \"\\e028\";\n}\n.socicon-deviantart:before {\n  content: \"\\e029\";\n}\n.socicon-forrst:before {\n  content: \"\\e02a\";\n}\n.socicon-play:before {\n  content: \"\\e02b\";\n}\n.socicon-zerply:before {\n  content: \"\\e02c\";\n}\n.socicon-wikipedia:before {\n  content: \"\\e02d\";\n}\n.socicon-apple:before {\n  content: \"\\e02e\";\n}\n.socicon-flattr:before {\n  content: \"\\e02f\";\n}\n.socicon-github:before {\n  content: \"\\e030\";\n}\n.socicon-renren:before {\n  content: \"\\e031\";\n}\n.socicon-friendfeed:before {\n  content: \"\\e032\";\n}\n.socicon-newsvine:before {\n  content: \"\\e033\";\n}\n.socicon-identica:before {\n  content: \"\\e034\";\n}\n.socicon-bebo:before {\n  content: \"\\e035\";\n}\n.socicon-zynga:before {\n  content: \"\\e036\";\n}\n.socicon-steam:before {\n  content: \"\\e037\";\n}\n.socicon-xbox:before {\n  content: \"\\e038\";\n}\n.socicon-windows:before {\n  content: \"\\e039\";\n}\n.socicon-qq:before {\n  content: \"\\e03a\";\n}\n.socicon-douban:before {\n  content: \"\\e03b\";\n}\n.socicon-meetup:before {\n  content: \"\\e03c\";\n}\n.socicon-playstation:before {\n  content: \"\\e03d\";\n}\n.socicon-android:before {\n  content: \"\\e03e\";\n}\n.socicon-snapchat:before {\n  content: \"\\e03f\";\n}\n.socicon-twitter:before {\n  content: \"\\e040\";\n}\n.socicon-facebook:before {\n  content: \"\\e041\";\n}\n.socicon-googleplus:before {\n  content: \"\\e042\";\n}\n.socicon-pinterest:before {\n  content: \"\\e043\";\n}\n.socicon-foursquare:before {\n  content: \"\\e044\";\n}\n.socicon-yahoo:before {\n  content: \"\\e045\";\n}\n.socicon-skype:before {\n  content: \"\\e046\";\n}\n.socicon-yelp:before {\n  content: \"\\e047\";\n}\n.socicon-feedburner:before {\n  content: \"\\e048\";\n}\n.socicon-linkedin:before {\n  content: \"\\e049\";\n}\n.socicon-viadeo:before {\n  content: \"\\e04a\";\n}\n.socicon-xing:before {\n  content: \"\\e04b\";\n}\n.socicon-myspace:before {\n  content: \"\\e04c\";\n}\n.socicon-soundcloud:before {\n  content: \"\\e04d\";\n}\n.socicon-spotify:before {\n  content: \"\\e04e\";\n}\n.socicon-grooveshark:before {\n  content: \"\\e04f\";\n}\n.socicon-lastfm:before {\n  content: \"\\e050\";\n}\n.socicon-youtube:before {\n  content: \"\\e051\";\n}\n.socicon-vimeo:before {\n  content: \"\\e052\";\n}\n.socicon-dailymotion:before {\n  content: \"\\e053\";\n}\n.socicon-vine:before {\n  content: \"\\e054\";\n}\n.socicon-flickr:before {\n  content: \"\\e055\";\n}\n.socicon-500px:before {\n  content: \"\\e056\";\n}\n.socicon-wordpress:before {\n  content: \"\\e058\";\n}\n.socicon-tumblr:before {\n  content: \"\\e059\";\n}\n.socicon-twitch:before {\n  content: \"\\e05a\";\n}\n.socicon-8tracks:before {\n  content: \"\\e05b\";\n}\n.socicon-amazon:before {\n  content: \"\\e05c\";\n}\n.socicon-icq:before {\n  content: \"\\e05d\";\n}\n.socicon-smugmug:before {\n  content: \"\\e05e\";\n}\n.socicon-ravelry:before {\n  content: \"\\e05f\";\n}\n.socicon-weibo:before {\n  content: \"\\e060\";\n}\n.socicon-baidu:before {\n  content: \"\\e061\";\n}\n.socicon-angellist:before {\n  content: \"\\e062\";\n}\n.socicon-ebay:before {\n  content: \"\\e063\";\n}\n.socicon-imdb:before {\n  content: \"\\e064\";\n}\n.socicon-stayfriends:before {\n  content: \"\\e065\";\n}\n.socicon-residentadvisor:before {\n  content: \"\\e066\";\n}\n.socicon-google:before {\n  content: \"\\e067\";\n}\n.socicon-yandex:before {\n  content: \"\\e068\";\n}\n.socicon-sharethis:before {\n  content: \"\\e069\";\n}\n.socicon-bandcamp:before {\n  content: \"\\e06a\";\n}\n.socicon-itunes:before {\n  content: \"\\e06b\";\n}\n.socicon-deezer:before {\n  content: \"\\e06c\";\n}\n.socicon-telegram:before {\n  content: \"\\e06e\";\n}\n.socicon-openid:before {\n  content: \"\\e06f\";\n}\n.socicon-amplement:before {\n  content: \"\\e070\";\n}\n.socicon-viber:before {\n  content: \"\\e071\";\n}\n.socicon-zomato:before {\n  content: \"\\e072\";\n}\n.socicon-draugiem:before {\n  content: \"\\e074\";\n}\n.socicon-endomodo:before {\n  content: \"\\e075\";\n}\n.socicon-filmweb:before {\n  content: \"\\e076\";\n}\n.socicon-stackexchange:before {\n  content: \"\\e077\";\n}\n.socicon-wykop:before {\n  content: \"\\e078\";\n}\n.socicon-teamspeak:before {\n  content: \"\\e079\";\n}\n.socicon-teamviewer:before {\n  content: \"\\e07a\";\n}\n.socicon-ventrilo:before {\n  content: \"\\e07b\";\n}\n.socicon-younow:before {\n  content: \"\\e07c\";\n}\n.socicon-raidcall:before {\n  content: \"\\e07d\";\n}\n.socicon-mumble:before {\n  content: \"\\e07e\";\n}\n.socicon-medium:before {\n  content: \"\\e06d\";\n}\n.socicon-bebee:before {\n  content: \"\\e07f\";\n}\n.socicon-hitbox:before {\n  content: \"\\e080\";\n}\n.socicon-reverbnation:before {\n  content: \"\\e081\";\n}\n.socicon-formulr:before {\n  content: \"\\e082\";\n}\n.socicon-instagram:before {\n  content: \"\\e057\";\n}\n.socicon-battlenet:before {\n  content: \"\\e083\";\n}\n.socicon-chrome:before {\n  content: \"\\e084\";\n}\n.socicon-discord:before {\n  content: \"\\e086\";\n}\n.socicon-issuu:before {\n  content: \"\\e087\";\n}\n.socicon-macos:before {\n  content: \"\\e088\";\n}\n.socicon-firefox:before {\n  content: \"\\e089\";\n}\n.socicon-opera:before {\n  content: \"\\e08d\";\n}\n.socicon-keybase:before {\n  content: \"\\e090\";\n}\n.socicon-alliance:before {\n  content: \"\\e091\";\n}\n.socicon-livejournal:before {\n  content: \"\\e092\";\n}\n.socicon-googlephotos:before {\n  content: \"\\e093\";\n}\n.socicon-horde:before {\n  content: \"\\e094\";\n}\n.socicon-etsy:before {\n  content: \"\\e095\";\n}\n.socicon-zapier:before {\n  content: \"\\e096\";\n}\n.socicon-google-scholar:before {\n  content: \"\\e097\";\n}\n.socicon-researchgate:before {\n  content: \"\\e098\";\n}\n.socicon-wechat:before {\n  content: \"\\e099\";\n}\n.socicon-strava:before {\n  content: \"\\e09a\";\n}\n.socicon-line:before {\n  content: \"\\e09b\";\n}\n.socicon-lyft:before {\n  content: \"\\e09c\";\n}\n.socicon-uber:before {\n  content: \"\\e09d\";\n}\n.socicon-songkick:before {\n  content: \"\\e09e\";\n}\n.socicon-viewbug:before {\n  content: \"\\e09f\";\n}\n.socicon-googlegroups:before {\n  content: \"\\e0a0\";\n}\n.socicon-quora:before {\n  content: \"\\e073\";\n}\n.socicon-diablo:before {\n  content: \"\\e085\";\n}\n.socicon-blizzard:before {\n  content: \"\\e0a1\";\n}\n.socicon-hearthstone:before {\n  content: \"\\e08b\";\n}\n.socicon-heroes:before {\n  content: \"\\e08a\";\n}\n.socicon-overwatch:before {\n  content: \"\\e08c\";\n}\n.socicon-warcraft:before {\n  content: \"\\e08e\";\n}\n.socicon-starcraft:before {\n  content: \"\\e08f\";\n}\n.socicon-beam:before {\n  content: \"\\e0a2\";\n}\n.socicon-curse:before {\n  content: \"\\e0a3\";\n}\n.socicon-player:before {\n  content: \"\\e0a4\";\n}\n.socicon-streamjar:before {\n  content: \"\\e0a5\";\n}\n.socicon-nintendo:before {\n  content: \"\\e0a6\";\n}\n.socicon-hellocoton:before {\n  content: \"\\e0a7\";\n}\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/css/theme.css",
    "content": "/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n  --blue: #4582EC;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #d9534f;\n  --orange: #fd7e14;\n  --yellow: #f0ad4e;\n  --green: #02B875;\n  --teal: #20c997;\n  --cyan: #17a2b8;\n  --white: #fff;\n  --gray: #6c757d;\n  --gray-dark: #343a40;\n  --primary: #4582EC;\n  --secondary: #6c757d;\n  --success: #02B875;\n  --info: #17a2b8;\n  --warning: #f0ad4e;\n  --danger: #d9534f;\n  --light: #f8f9fa;\n  --dark: #212529;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: \"Rubik\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; }\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box; }\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block; }\n\nbody {\n  margin: 0;\n  font-family: \"Rubik\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  text-align: left;\n  background-color: #f8f9fa; }\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important; }\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible; }\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 1.5rem; }\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n          text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n  -webkit-text-decoration-skip-ink: none;\n          text-decoration-skip-ink: none; }\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit; }\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0; }\n\ndt {\n  font-weight: 700; }\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; }\n\nblockquote {\n  margin: 0 0 1rem; }\n\nb,\nstrong {\n  font-weight: bolder; }\n\nsmall {\n  font-size: 80%; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsub {\n  bottom: -.25em; }\n\nsup {\n  top: -.5em; }\n\na {\n  color: #4582EC;\n  text-decoration: none;\n  background-color: transparent; }\n  a:hover {\n    color: #1559cf;\n    text-decoration: none; }\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none; }\n  a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n    color: inherit;\n    text-decoration: none; }\n  a:not([href]):not([tabindex]):focus {\n    outline: 0; }\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em; }\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto; }\n\nfigure {\n  margin: 0 0 1rem; }\n\nimg {\n  vertical-align: middle;\n  border-style: none; }\n\nsvg {\n  overflow: hidden;\n  vertical-align: middle; }\n\ntable {\n  border-collapse: collapse; }\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #6c757d;\n  text-align: left;\n  caption-side: bottom; }\n\nth {\n  text-align: inherit; }\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem; }\n\nbutton {\n  border-radius: 0; }\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color; }\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit; }\n\nbutton,\ninput {\n  overflow: visible; }\n\nbutton,\nselect {\n  text-transform: none; }\n\nselect {\n  word-wrap: normal; }\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; }\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n  cursor: pointer; }\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none; }\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  box-sizing: border-box;\n  padding: 0; }\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox; }\n\ntextarea {\n  overflow: auto;\n  resize: vertical; }\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0; }\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal; }\n\nprogress {\n  vertical-align: baseline; }\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto; }\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none; }\n\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none; }\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button; }\n\noutput {\n  display: inline-block; }\n\nsummary {\n  display: list-item;\n  cursor: pointer; }\n\ntemplate {\n  display: none; }\n\n[hidden] {\n  display: none !important; }\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 1.5rem;\n  font-family: inherit;\n  font-weight: 400;\n  line-height: 1.1;\n  color: #343a40; }\n\nh1, .h1 {\n  font-size: 2.5rem; }\n\nh2, .h2 {\n  font-size: 2rem; }\n\nh3, .h3 {\n  font-size: 1.75rem; }\n\nh4, .h4 {\n  font-size: 1.5rem; }\n\nh5, .h5 {\n  font-size: 1.25rem; }\n\nh6, .h6 {\n  font-size: 1rem; }\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300; }\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.1; }\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.1; }\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.1; }\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.1; }\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid #e9ecef; }\n\nsmall,\n.small {\n  font-size: 0.75rem;\n  font-weight: 400; }\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3; }\n\n.list-unstyled, .feature-list {\n  padding-left: 0;\n  list-style: none; }\n\n.list-inline {\n  padding-left: 0;\n  list-style: none; }\n\n.list-inline-item {\n  display: inline-block; }\n  .list-inline-item:not(:last-child) {\n    margin-right: 6px; }\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\n.blockquote {\n  margin-bottom: 1.5rem;\n  font-size: 1.25rem; }\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #6c757d; }\n  .blockquote-footer::before {\n    content: \"\\2014\\00A0\"; }\n\n.img-fluid {\n  max-width: 100%;\n  height: auto; }\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto; }\n\n.figure {\n  display: inline-block; }\n\n.figure-img {\n  margin-bottom: 0.75rem;\n  line-height: 1; }\n\n.figure-caption {\n  font-size: 0.75rem;\n  color: #6c757d; }\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word; }\n  a > code {\n    color: inherit; }\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem; }\n  kbd kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: 700; }\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529; }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\n.container {\n  width: 100%;\n  padding-right: 12px;\n  padding-left: 12px;\n  margin-right: auto;\n  margin-left: auto; }\n  @media (min-width: 576px) {\n    .container {\n      max-width: 540px; } }\n  @media (min-width: 768px) {\n    .container {\n      max-width: 720px; } }\n  @media (min-width: 992px) {\n    .container {\n      max-width: 960px; } }\n  @media (min-width: 1200px) {\n    .container {\n      max-width: 1140px; } }\n\n.container-fluid {\n  width: 100%;\n  padding-right: 12px;\n  padding-left: 12px;\n  margin-right: auto;\n  margin-left: auto; }\n\n.row {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -12px;\n  margin-left: -12px; }\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0; }\n  .no-gutters > .col,\n  .no-gutters > [class*=\"col-\"] {\n    padding-right: 0;\n    padding-left: 0; }\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  padding-right: 12px;\n  padding-left: 12px; }\n\n.col {\n  flex-basis: 0;\n  flex-grow: 1;\n  max-width: 100%; }\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n  max-width: 100%; }\n\n.col-1 {\n  flex: 0 0 8.33333%;\n  max-width: 8.33333%; }\n\n.col-2 {\n  flex: 0 0 16.66667%;\n  max-width: 16.66667%; }\n\n.col-3 {\n  flex: 0 0 25%;\n  max-width: 25%; }\n\n.col-4 {\n  flex: 0 0 33.33333%;\n  max-width: 33.33333%; }\n\n.col-5 {\n  flex: 0 0 41.66667%;\n  max-width: 41.66667%; }\n\n.col-6 {\n  flex: 0 0 50%;\n  max-width: 50%; }\n\n.col-7 {\n  flex: 0 0 58.33333%;\n  max-width: 58.33333%; }\n\n.col-8 {\n  flex: 0 0 66.66667%;\n  max-width: 66.66667%; }\n\n.col-9 {\n  flex: 0 0 75%;\n  max-width: 75%; }\n\n.col-10 {\n  flex: 0 0 83.33333%;\n  max-width: 83.33333%; }\n\n.col-11 {\n  flex: 0 0 91.66667%;\n  max-width: 91.66667%; }\n\n.col-12 {\n  flex: 0 0 100%;\n  max-width: 100%; }\n\n.order-first {\n  order: -1; }\n\n.order-last {\n  order: 13; }\n\n.order-0 {\n  order: 0; }\n\n.order-1 {\n  order: 1; }\n\n.order-2 {\n  order: 2; }\n\n.order-3 {\n  order: 3; }\n\n.order-4 {\n  order: 4; }\n\n.order-5 {\n  order: 5; }\n\n.order-6 {\n  order: 6; }\n\n.order-7 {\n  order: 7; }\n\n.order-8 {\n  order: 8; }\n\n.order-9 {\n  order: 9; }\n\n.order-10 {\n  order: 10; }\n\n.order-11 {\n  order: 11; }\n\n.order-12 {\n  order: 12; }\n\n.offset-1 {\n  margin-left: 8.33333%; }\n\n.offset-2 {\n  margin-left: 16.66667%; }\n\n.offset-3 {\n  margin-left: 25%; }\n\n.offset-4 {\n  margin-left: 33.33333%; }\n\n.offset-5 {\n  margin-left: 41.66667%; }\n\n.offset-6 {\n  margin-left: 50%; }\n\n.offset-7 {\n  margin-left: 58.33333%; }\n\n.offset-8 {\n  margin-left: 66.66667%; }\n\n.offset-9 {\n  margin-left: 75%; }\n\n.offset-10 {\n  margin-left: 83.33333%; }\n\n.offset-11 {\n  margin-left: 91.66667%; }\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%; }\n  .col-sm-1 {\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-sm-2 {\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-sm-3 {\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-sm-4 {\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-sm-5 {\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-sm-6 {\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-sm-7 {\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-sm-8 {\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-sm-9 {\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-sm-10 {\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-sm-11 {\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-sm-12 {\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-sm-first {\n    order: -1; }\n  .order-sm-last {\n    order: 13; }\n  .order-sm-0 {\n    order: 0; }\n  .order-sm-1 {\n    order: 1; }\n  .order-sm-2 {\n    order: 2; }\n  .order-sm-3 {\n    order: 3; }\n  .order-sm-4 {\n    order: 4; }\n  .order-sm-5 {\n    order: 5; }\n  .order-sm-6 {\n    order: 6; }\n  .order-sm-7 {\n    order: 7; }\n  .order-sm-8 {\n    order: 8; }\n  .order-sm-9 {\n    order: 9; }\n  .order-sm-10 {\n    order: 10; }\n  .order-sm-11 {\n    order: 11; }\n  .order-sm-12 {\n    order: 12; }\n  .offset-sm-0 {\n    margin-left: 0; }\n  .offset-sm-1 {\n    margin-left: 8.33333%; }\n  .offset-sm-2 {\n    margin-left: 16.66667%; }\n  .offset-sm-3 {\n    margin-left: 25%; }\n  .offset-sm-4 {\n    margin-left: 33.33333%; }\n  .offset-sm-5 {\n    margin-left: 41.66667%; }\n  .offset-sm-6 {\n    margin-left: 50%; }\n  .offset-sm-7 {\n    margin-left: 58.33333%; }\n  .offset-sm-8 {\n    margin-left: 66.66667%; }\n  .offset-sm-9 {\n    margin-left: 75%; }\n  .offset-sm-10 {\n    margin-left: 83.33333%; }\n  .offset-sm-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 768px) {\n  .col-md {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%; }\n  .col-md-1 {\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-md-2 {\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-md-3 {\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-md-4 {\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-md-5 {\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-md-6 {\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-md-7 {\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-md-8 {\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-md-9 {\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-md-10 {\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-md-11 {\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-md-12 {\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-md-first {\n    order: -1; }\n  .order-md-last {\n    order: 13; }\n  .order-md-0 {\n    order: 0; }\n  .order-md-1 {\n    order: 1; }\n  .order-md-2 {\n    order: 2; }\n  .order-md-3 {\n    order: 3; }\n  .order-md-4 {\n    order: 4; }\n  .order-md-5 {\n    order: 5; }\n  .order-md-6 {\n    order: 6; }\n  .order-md-7 {\n    order: 7; }\n  .order-md-8 {\n    order: 8; }\n  .order-md-9 {\n    order: 9; }\n  .order-md-10 {\n    order: 10; }\n  .order-md-11 {\n    order: 11; }\n  .order-md-12 {\n    order: 12; }\n  .offset-md-0 {\n    margin-left: 0; }\n  .offset-md-1 {\n    margin-left: 8.33333%; }\n  .offset-md-2 {\n    margin-left: 16.66667%; }\n  .offset-md-3 {\n    margin-left: 25%; }\n  .offset-md-4 {\n    margin-left: 33.33333%; }\n  .offset-md-5 {\n    margin-left: 41.66667%; }\n  .offset-md-6 {\n    margin-left: 50%; }\n  .offset-md-7 {\n    margin-left: 58.33333%; }\n  .offset-md-8 {\n    margin-left: 66.66667%; }\n  .offset-md-9 {\n    margin-left: 75%; }\n  .offset-md-10 {\n    margin-left: 83.33333%; }\n  .offset-md-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 992px) {\n  .col-lg {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%; }\n  .col-lg-1 {\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-lg-2 {\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-lg-3 {\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-lg-4 {\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-lg-5 {\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-lg-6 {\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-lg-7 {\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-lg-8 {\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-lg-9 {\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-lg-10 {\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-lg-11 {\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-lg-12 {\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-lg-first {\n    order: -1; }\n  .order-lg-last {\n    order: 13; }\n  .order-lg-0 {\n    order: 0; }\n  .order-lg-1 {\n    order: 1; }\n  .order-lg-2 {\n    order: 2; }\n  .order-lg-3 {\n    order: 3; }\n  .order-lg-4 {\n    order: 4; }\n  .order-lg-5 {\n    order: 5; }\n  .order-lg-6 {\n    order: 6; }\n  .order-lg-7 {\n    order: 7; }\n  .order-lg-8 {\n    order: 8; }\n  .order-lg-9 {\n    order: 9; }\n  .order-lg-10 {\n    order: 10; }\n  .order-lg-11 {\n    order: 11; }\n  .order-lg-12 {\n    order: 12; }\n  .offset-lg-0 {\n    margin-left: 0; }\n  .offset-lg-1 {\n    margin-left: 8.33333%; }\n  .offset-lg-2 {\n    margin-left: 16.66667%; }\n  .offset-lg-3 {\n    margin-left: 25%; }\n  .offset-lg-4 {\n    margin-left: 33.33333%; }\n  .offset-lg-5 {\n    margin-left: 41.66667%; }\n  .offset-lg-6 {\n    margin-left: 50%; }\n  .offset-lg-7 {\n    margin-left: 58.33333%; }\n  .offset-lg-8 {\n    margin-left: 66.66667%; }\n  .offset-lg-9 {\n    margin-left: 75%; }\n  .offset-lg-10 {\n    margin-left: 83.33333%; }\n  .offset-lg-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 1200px) {\n  .col-xl {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%; }\n  .col-xl-1 {\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-xl-2 {\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-xl-3 {\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-xl-4 {\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-xl-5 {\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-xl-6 {\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-xl-7 {\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-xl-8 {\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-xl-9 {\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-xl-10 {\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-xl-11 {\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-xl-12 {\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-xl-first {\n    order: -1; }\n  .order-xl-last {\n    order: 13; }\n  .order-xl-0 {\n    order: 0; }\n  .order-xl-1 {\n    order: 1; }\n  .order-xl-2 {\n    order: 2; }\n  .order-xl-3 {\n    order: 3; }\n  .order-xl-4 {\n    order: 4; }\n  .order-xl-5 {\n    order: 5; }\n  .order-xl-6 {\n    order: 6; }\n  .order-xl-7 {\n    order: 7; }\n  .order-xl-8 {\n    order: 8; }\n  .order-xl-9 {\n    order: 9; }\n  .order-xl-10 {\n    order: 10; }\n  .order-xl-11 {\n    order: 11; }\n  .order-xl-12 {\n    order: 12; }\n  .offset-xl-0 {\n    margin-left: 0; }\n  .offset-xl-1 {\n    margin-left: 8.33333%; }\n  .offset-xl-2 {\n    margin-left: 16.66667%; }\n  .offset-xl-3 {\n    margin-left: 25%; }\n  .offset-xl-4 {\n    margin-left: 33.33333%; }\n  .offset-xl-5 {\n    margin-left: 41.66667%; }\n  .offset-xl-6 {\n    margin-left: 50%; }\n  .offset-xl-7 {\n    margin-left: 58.33333%; }\n  .offset-xl-8 {\n    margin-left: 66.66667%; }\n  .offset-xl-9 {\n    margin-left: 75%; }\n  .offset-xl-10 {\n    margin-left: 83.33333%; }\n  .offset-xl-11 {\n    margin-left: 91.66667%; } }\n\n.table {\n  width: 100%;\n  margin-bottom: 1.5rem;\n  color: #212529;\n  background-color: transparent; }\n  .table th,\n  .table td {\n    padding: 0.75rem;\n    vertical-align: top;\n    border-top: 1px solid #dee2e6; }\n  .table thead th {\n    vertical-align: bottom;\n    border-bottom: 2px solid #dee2e6; }\n  .table tbody + tbody {\n    border-top: 2px solid #dee2e6; }\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem; }\n\n.table-bordered {\n  border: 1px solid #dee2e6; }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6; }\n  .table-bordered thead th,\n  .table-bordered thead td {\n    border-bottom-width: 2px; }\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n  border: 0; }\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(0, 0, 0, 0.05); }\n\n.table-hover tbody tr:hover {\n  color: #212529;\n  background-color: #e9ecef; }\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #cbdcfa; }\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n  border-color: #9ebef5; }\n\n.table-hover .table-primary:hover {\n  background-color: #b4ccf8; }\n  .table-hover .table-primary:hover > td,\n  .table-hover .table-primary:hover > th {\n    background-color: #b4ccf8; }\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #d6d8db; }\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n  border-color: #b3b7bb; }\n\n.table-hover .table-secondary:hover {\n  background-color: #c8cbcf; }\n  .table-hover .table-secondary:hover > td,\n  .table-hover .table-secondary:hover > th {\n    background-color: #c8cbcf; }\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #b8ebd8; }\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n  border-color: #7bdab7; }\n\n.table-hover .table-success:hover {\n  background-color: #a4e5cd; }\n  .table-hover .table-success:hover > td,\n  .table-hover .table-success:hover > th {\n    background-color: #a4e5cd; }\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #bee5eb; }\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n  border-color: #86cfda; }\n\n.table-hover .table-info:hover {\n  background-color: #abdde5; }\n  .table-hover .table-info:hover > td,\n  .table-hover .table-info:hover > th {\n    background-color: #abdde5; }\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #fbe8cd; }\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n  border-color: #f7d4a3; }\n\n.table-hover .table-warning:hover {\n  background-color: #f9ddb5; }\n  .table-hover .table-warning:hover > td,\n  .table-hover .table-warning:hover > th {\n    background-color: #f9ddb5; }\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f4cfce; }\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n  border-color: #eba6a3; }\n\n.table-hover .table-danger:hover {\n  background-color: #efbbb9; }\n  .table-hover .table-danger:hover > td,\n  .table-hover .table-danger:hover > th {\n    background-color: #efbbb9; }\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fdfdfe; }\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n  border-color: #fbfcfc; }\n\n.table-hover .table-light:hover {\n  background-color: #ececf6; }\n  .table-hover .table-light:hover > td,\n  .table-hover .table-light:hover > th {\n    background-color: #ececf6; }\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #c1c2c3; }\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n  border-color: #8c8e90; }\n\n.table-hover .table-dark:hover {\n  background-color: #b4b5b6; }\n  .table-hover .table-dark:hover > td,\n  .table-hover .table-dark:hover > th {\n    background-color: #b4b5b6; }\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075); }\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075); }\n  .table-hover .table-active:hover > td,\n  .table-hover .table-active:hover > th {\n    background-color: rgba(0, 0, 0, 0.075); }\n\n.table .thead-dark th {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #454d55; }\n\n.table .thead-light th {\n  color: #495057;\n  background-color: #e9ecef;\n  border-color: #dee2e6; }\n\n.table-dark {\n  color: #fff;\n  background-color: #343a40; }\n  .table-dark th,\n  .table-dark td,\n  .table-dark thead th {\n    border-color: #454d55; }\n  .table-dark.table-bordered {\n    border: 0; }\n  .table-dark.table-striped tbody tr:nth-of-type(odd) {\n    background-color: rgba(255, 255, 255, 0.05); }\n  .table-dark.table-hover tbody tr:hover {\n    color: #fff;\n    background-color: rgba(255, 255, 255, 0.075); }\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch; }\n    .table-responsive-sm > .table-bordered {\n      border: 0; } }\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch; }\n    .table-responsive-md > .table-bordered {\n      border: 0; } }\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch; }\n    .table-responsive-lg > .table-bordered {\n      border: 0; } }\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch; }\n    .table-responsive-xl > .table-bordered {\n      border: 0; } }\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch; }\n  .table-responsive > .table-bordered {\n    border: 0; }\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: calc(1.5em + 0.75rem + 2px);\n  padding: 0.3125rem 1rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none; } }\n  .form-control::-ms-expand {\n    background-color: transparent;\n    border: 0; }\n  .form-control:focus {\n    color: #495057;\n    background-color: #fff;\n    border-color: #b9d0f8;\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n  .form-control::-webkit-input-placeholder {\n    color: #adb5bd;\n    opacity: 1; }\n  .form-control::-moz-placeholder {\n    color: #adb5bd;\n    opacity: 1; }\n  .form-control:-ms-input-placeholder {\n    color: #adb5bd;\n    opacity: 1; }\n  .form-control::placeholder {\n    color: #adb5bd;\n    opacity: 1; }\n  .form-control:disabled, .form-control[readonly] {\n    background-color: #e9ecef;\n    opacity: 1; }\n\nselect.form-control:focus::-ms-value {\n  color: #495057;\n  background-color: #fff; }\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%; }\n\n.col-form-label {\n  padding-top: calc(0.3125rem + 1px);\n  padding-bottom: calc(0.3125rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5; }\n\n.col-form-label-lg {\n  padding-top: calc(0.6875rem + 1px);\n  padding-bottom: calc(0.6875rem + 1px);\n  font-size: 1.25rem;\n  line-height: 1.5; }\n\n.col-form-label-sm {\n  padding-top: calc(0.125rem + 1px);\n  padding-bottom: calc(0.125rem + 1px);\n  font-size: 0.875rem;\n  line-height: 1.5rem; }\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0; }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-right: 0;\n    padding-left: 0; }\n\n.form-control-sm {\n  height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.125rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5rem;\n  border-radius: 0.2rem; }\n\n.form-control-lg {\n  height: calc(1.5em + 1rem + 2px);\n  padding: 0.6875rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem; }\n\nselect.form-control[size], select.form-control[multiple] {\n  height: auto; }\n\ntextarea.form-control {\n  height: auto; }\n\n.form-group {\n  margin-bottom: 1rem; }\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem; }\n\n.form-row {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px; }\n  .form-row > .col,\n  .form-row > [class*=\"col-\"] {\n    padding-right: 5px;\n    padding-left: 5px; }\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem; }\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem; }\n  .form-check-input:disabled ~ .form-check-label {\n    color: #6c757d; }\n\n.form-check-label {\n  margin-bottom: 0; }\n\n.form-check-inline {\n  display: inline-flex;\n  align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem; }\n  .form-check-inline .form-check-input {\n    position: static;\n    margin-top: 0;\n    margin-right: 0.3125rem;\n    margin-left: 0; }\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #28a745; }\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: .1rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  color: #fff;\n  background-color: rgba(40, 167, 69, 0.9);\n  border-radius: 0.25rem; }\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #28a745;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' 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\");\n  background-repeat: no-repeat;\n  background-position: center right calc(0.375em + 0.1875rem);\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); }\n  .was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n    border-color: #28a745;\n    box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n  .was-validated .form-control:valid ~ .valid-feedback,\n  .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n  .form-control.is-valid ~ .valid-tooltip {\n    display: block; }\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); }\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n  border-color: #28a745;\n  padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n  background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' 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\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); }\n  .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n    border-color: #28a745;\n    box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n  .was-validated .custom-select:valid ~ .valid-feedback,\n  .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,\n  .custom-select.is-valid ~ .valid-tooltip {\n    display: block; }\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #28a745; }\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #28a745; }\n  .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n    border-color: #28a745; }\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  border-color: #34ce57;\n  background-color: #34ce57; }\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n  border-color: #28a745; }\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #28a745; }\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  border-color: #28a745;\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #dc3545; }\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: .1rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem; }\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: center right calc(0.375em + 0.1875rem);\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); }\n  .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n    border-color: #dc3545;\n    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n  .was-validated .form-control:invalid ~ .invalid-feedback,\n  .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n  .form-control.is-invalid ~ .invalid-tooltip {\n    display: block; }\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); }\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n  background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); }\n  .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n    border-color: #dc3545;\n    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n  .was-validated .custom-select:invalid ~ .invalid-feedback,\n  .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,\n  .custom-select.is-invalid ~ .invalid-tooltip {\n    display: block; }\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545; }\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #dc3545; }\n  .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n    border-color: #dc3545; }\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  border-color: #e4606d;\n  background-color: #e4606d; }\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n  border-color: #dc3545; }\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #dc3545; }\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n\n.form-inline {\n  display: flex;\n  flex-flow: row wrap;\n  align-items: center; }\n  .form-inline .form-check {\n    width: 100%; }\n  @media (min-width: 576px) {\n    .form-inline label {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      margin-bottom: 0; }\n    .form-inline .form-group {\n      display: flex;\n      flex: 0 0 auto;\n      flex-flow: row wrap;\n      align-items: center;\n      margin-bottom: 0; }\n    .form-inline .form-control {\n      display: inline-block;\n      width: auto;\n      vertical-align: middle; }\n    .form-inline .form-control-plaintext {\n      display: inline-block; }\n    .form-inline .input-group,\n    .form-inline .custom-select {\n      width: auto; }\n    .form-inline .form-check {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: auto;\n      padding-left: 0; }\n    .form-inline .form-check-input {\n      position: relative;\n      flex-shrink: 0;\n      margin-top: 0;\n      margin-right: 0.25rem;\n      margin-left: 0; }\n    .form-inline .custom-control {\n      align-items: center;\n      justify-content: center; }\n    .form-inline .custom-control-label {\n      margin-bottom: 0; } }\n\n.btn {\n  display: inline-block;\n  font-weight: 500;\n  color: #495057;\n  text-align: center;\n  vertical-align: middle;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.3125rem 1rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }\n  @media (prefers-reduced-motion: reduce) {\n    .btn {\n      transition: none; } }\n  .btn:hover {\n    color: #495057;\n    text-decoration: none; }\n  .btn:focus, .btn.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n  .btn.disabled, .btn:disabled {\n    opacity: 0.65; }\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none; }\n\n.btn-primary {\n  color: #fff;\n  background-color: #4582EC;\n  border-color: #4582EC; }\n  .btn-primary:hover {\n    color: #fff;\n    background-color: #226be8;\n    border-color: #1863e6; }\n  .btn-primary:focus, .btn-primary.focus {\n    box-shadow: 0 0 0 0.2rem rgba(97, 149, 239, 0.5); }\n  .btn-primary.disabled, .btn-primary:disabled {\n    color: #fff;\n    background-color: #4582EC;\n    border-color: #4582EC; }\n  .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n  .show > .btn-primary.dropdown-toggle {\n    color: #fff;\n    background-color: #1863e6;\n    border-color: #165edb; }\n    .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-primary.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(97, 149, 239, 0.5); }\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d; }\n  .btn-secondary:hover {\n    color: #fff;\n    background-color: #5a6268;\n    border-color: #545b62; }\n  .btn-secondary:focus, .btn-secondary.focus {\n    box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); }\n  .btn-secondary.disabled, .btn-secondary:disabled {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d; }\n  .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n  .show > .btn-secondary.dropdown-toggle {\n    color: #fff;\n    background-color: #545b62;\n    border-color: #4e555b; }\n    .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-secondary.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); }\n\n.btn-success {\n  color: #fff;\n  background-color: #02B875;\n  border-color: #02B875; }\n  .btn-success:hover {\n    color: #fff;\n    background-color: #02925d;\n    border-color: #018655; }\n  .btn-success:focus, .btn-success.focus {\n    box-shadow: 0 0 0 0.2rem rgba(40, 195, 138, 0.5); }\n  .btn-success.disabled, .btn-success:disabled {\n    color: #fff;\n    background-color: #02B875;\n    border-color: #02B875; }\n  .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n  .show > .btn-success.dropdown-toggle {\n    color: #fff;\n    background-color: #018655;\n    border-color: #01794d; }\n    .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-success.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(40, 195, 138, 0.5); }\n\n.btn-info {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8; }\n  .btn-info:hover {\n    color: #fff;\n    background-color: #138496;\n    border-color: #117a8b; }\n  .btn-info:focus, .btn-info.focus {\n    box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); }\n  .btn-info.disabled, .btn-info:disabled {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8; }\n  .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n  .show > .btn-info.dropdown-toggle {\n    color: #fff;\n    background-color: #117a8b;\n    border-color: #10707f; }\n    .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-info.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); }\n\n.btn-warning {\n  color: #212529;\n  background-color: #f0ad4e;\n  border-color: #f0ad4e; }\n  .btn-warning:hover {\n    color: #212529;\n    background-color: #ed9d2b;\n    border-color: #ec971f; }\n  .btn-warning:focus, .btn-warning.focus {\n    box-shadow: 0 0 0 0.2rem rgba(209, 153, 72, 0.5); }\n  .btn-warning.disabled, .btn-warning:disabled {\n    color: #212529;\n    background-color: #f0ad4e;\n    border-color: #f0ad4e; }\n  .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n  .show > .btn-warning.dropdown-toggle {\n    color: #212529;\n    background-color: #ec971f;\n    border-color: #ea9214; }\n    .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-warning.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(209, 153, 72, 0.5); }\n\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d9534f; }\n  .btn-danger:hover {\n    color: #fff;\n    background-color: #d23430;\n    border-color: #c9302c; }\n  .btn-danger:focus, .btn-danger.focus {\n    box-shadow: 0 0 0 0.2rem rgba(223, 109, 105, 0.5); }\n  .btn-danger.disabled, .btn-danger:disabled {\n    color: #fff;\n    background-color: #d9534f;\n    border-color: #d9534f; }\n  .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n  .show > .btn-danger.dropdown-toggle {\n    color: #fff;\n    background-color: #c9302c;\n    border-color: #bf2e29; }\n    .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-danger.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(223, 109, 105, 0.5); }\n\n.btn-light {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa; }\n  .btn-light:hover {\n    color: #212529;\n    background-color: #e2e6ea;\n    border-color: #dae0e5; }\n  .btn-light:focus, .btn-light.focus {\n    box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); }\n  .btn-light.disabled, .btn-light:disabled {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa; }\n  .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n  .show > .btn-light.dropdown-toggle {\n    color: #212529;\n    background-color: #dae0e5;\n    border-color: #d3d9df; }\n    .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-light.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); }\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529; }\n  .btn-dark:hover {\n    color: #fff;\n    background-color: #101214;\n    border-color: #0a0c0d; }\n  .btn-dark:focus, .btn-dark.focus {\n    box-shadow: 0 0 0 0.2rem rgba(66, 70, 73, 0.5); }\n  .btn-dark.disabled, .btn-dark:disabled {\n    color: #fff;\n    background-color: #212529;\n    border-color: #212529; }\n  .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n  .show > .btn-dark.dropdown-toggle {\n    color: #fff;\n    background-color: #0a0c0d;\n    border-color: #050506; }\n    .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-dark.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(66, 70, 73, 0.5); }\n\n.btn-outline-primary {\n  color: #4582EC;\n  border-color: #4582EC; }\n  .btn-outline-primary:hover {\n    color: #fff;\n    background-color: #4582EC;\n    border-color: #4582EC; }\n  .btn-outline-primary:focus, .btn-outline-primary.focus {\n    box-shadow: 0 0 0 0.2rem rgba(69, 130, 236, 0.5); }\n  .btn-outline-primary.disabled, .btn-outline-primary:disabled {\n    color: #4582EC;\n    background-color: transparent; }\n  .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-primary.dropdown-toggle {\n    color: #fff;\n    background-color: #4582EC;\n    border-color: #4582EC; }\n    .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-primary.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(69, 130, 236, 0.5); }\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d; }\n  .btn-outline-secondary:hover {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d; }\n  .btn-outline-secondary:focus, .btn-outline-secondary.focus {\n    box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n  .btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n    color: #6c757d;\n    background-color: transparent; }\n  .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-secondary.dropdown-toggle {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d; }\n    .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-secondary.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n\n.btn-outline-success {\n  color: #02B875;\n  border-color: #02B875; }\n  .btn-outline-success:hover {\n    color: #fff;\n    background-color: #02B875;\n    border-color: #02B875; }\n  .btn-outline-success:focus, .btn-outline-success.focus {\n    box-shadow: 0 0 0 0.2rem rgba(2, 184, 117, 0.5); }\n  .btn-outline-success.disabled, .btn-outline-success:disabled {\n    color: #02B875;\n    background-color: transparent; }\n  .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-success.dropdown-toggle {\n    color: #fff;\n    background-color: #02B875;\n    border-color: #02B875; }\n    .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-success.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(2, 184, 117, 0.5); }\n\n.btn-outline-info {\n  color: #17a2b8;\n  border-color: #17a2b8; }\n  .btn-outline-info:hover {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8; }\n  .btn-outline-info:focus, .btn-outline-info.focus {\n    box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n  .btn-outline-info.disabled, .btn-outline-info:disabled {\n    color: #17a2b8;\n    background-color: transparent; }\n  .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-info.dropdown-toggle {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8; }\n    .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-info.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n\n.btn-outline-warning {\n  color: #f0ad4e;\n  border-color: #f0ad4e; }\n  .btn-outline-warning:hover {\n    color: #212529;\n    background-color: #f0ad4e;\n    border-color: #f0ad4e; }\n  .btn-outline-warning:focus, .btn-outline-warning.focus {\n    box-shadow: 0 0 0 0.2rem rgba(240, 173, 78, 0.5); }\n  .btn-outline-warning.disabled, .btn-outline-warning:disabled {\n    color: #f0ad4e;\n    background-color: transparent; }\n  .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-warning.dropdown-toggle {\n    color: #212529;\n    background-color: #f0ad4e;\n    border-color: #f0ad4e; }\n    .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-warning.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(240, 173, 78, 0.5); }\n\n.btn-outline-danger {\n  color: #d9534f;\n  border-color: #d9534f; }\n  .btn-outline-danger:hover {\n    color: #fff;\n    background-color: #d9534f;\n    border-color: #d9534f; }\n  .btn-outline-danger:focus, .btn-outline-danger.focus {\n    box-shadow: 0 0 0 0.2rem rgba(217, 83, 79, 0.5); }\n  .btn-outline-danger.disabled, .btn-outline-danger:disabled {\n    color: #d9534f;\n    background-color: transparent; }\n  .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-danger.dropdown-toggle {\n    color: #fff;\n    background-color: #d9534f;\n    border-color: #d9534f; }\n    .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-danger.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(217, 83, 79, 0.5); }\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa; }\n  .btn-outline-light:hover {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa; }\n  .btn-outline-light:focus, .btn-outline-light.focus {\n    box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n  .btn-outline-light.disabled, .btn-outline-light:disabled {\n    color: #f8f9fa;\n    background-color: transparent; }\n  .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-light.dropdown-toggle {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa; }\n    .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-light.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529; }\n  .btn-outline-dark:hover {\n    color: #fff;\n    background-color: #212529;\n    border-color: #212529; }\n  .btn-outline-dark:focus, .btn-outline-dark.focus {\n    box-shadow: 0 0 0 0.2rem rgba(33, 37, 41, 0.5); }\n  .btn-outline-dark.disabled, .btn-outline-dark:disabled {\n    color: #212529;\n    background-color: transparent; }\n  .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-dark.dropdown-toggle {\n    color: #fff;\n    background-color: #212529;\n    border-color: #212529; }\n    .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-dark.dropdown-toggle:focus {\n      box-shadow: 0 0 0 0.2rem rgba(33, 37, 41, 0.5); }\n\n.btn-link {\n  font-weight: 400;\n  color: #4582EC;\n  text-decoration: none; }\n  .btn-link:hover {\n    color: #1559cf;\n    text-decoration: none; }\n  .btn-link:focus, .btn-link.focus {\n    text-decoration: none;\n    box-shadow: none; }\n  .btn-link:disabled, .btn-link.disabled {\n    color: #adb5bd;\n    pointer-events: none; }\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.6875rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.25rem; }\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.125rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5rem;\n  border-radius: 0.25rem; }\n\n.btn-block {\n  display: block;\n  width: 100%; }\n  .btn-block + .btn-block {\n    margin-top: 0.5rem; }\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%; }\n\n.fade {\n  transition: opacity 0.15s linear; }\n  @media (prefers-reduced-motion: reduce) {\n    .fade {\n      transition: none; } }\n  .fade:not(.show) {\n    opacity: 0; }\n\n.collapse:not(.show) {\n  display: none; }\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease; }\n  @media (prefers-reduced-motion: reduce) {\n    .collapsing {\n      transition: none; } }\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n  position: relative; }\n\n.dropdown-toggle {\n  white-space: nowrap; }\n  .dropdown-toggle::after {\n    display: inline-block;\n    margin-left: 0.255em;\n    vertical-align: 0.255em;\n    content: \"\";\n    border-top: 0.25em solid;\n    border-right: 0.25em solid transparent;\n    border-bottom: 0;\n    border-left: 0.25em solid transparent; }\n  .dropdown-toggle:empty::after {\n    margin-left: 0; }\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #e9ecef;\n  border-radius: 0.25rem; }\n\n.dropdown-menu-left {\n  right: auto;\n  left: 0; }\n\n.dropdown-menu-right {\n  right: 0;\n  left: auto; }\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-left {\n    right: auto;\n    left: 0; }\n  .dropdown-menu-sm-right {\n    right: 0;\n    left: auto; } }\n\n@media (min-width: 768px) {\n  .dropdown-menu-md-left {\n    right: auto;\n    left: 0; }\n  .dropdown-menu-md-right {\n    right: 0;\n    left: auto; } }\n\n@media (min-width: 992px) {\n  .dropdown-menu-lg-left {\n    right: auto;\n    left: 0; }\n  .dropdown-menu-lg-right {\n    right: 0;\n    left: auto; } }\n\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-left {\n    right: auto;\n    left: 0; }\n  .dropdown-menu-xl-right {\n    right: 0;\n    left: auto; } }\n\n.dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem; }\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.25em solid transparent;\n  border-bottom: 0.25em solid;\n  border-left: 0.25em solid transparent; }\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropright .dropdown-menu {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem; }\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.25em solid transparent;\n  border-right: 0;\n  border-bottom: 0.25em solid transparent;\n  border-left: 0.25em solid; }\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0; }\n\n.dropleft .dropdown-menu {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem; }\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\"; }\n\n.dropleft .dropdown-toggle::after {\n  display: none; }\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.25em solid transparent;\n  border-right: 0.25em solid;\n  border-bottom: 0.25em solid transparent; }\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0; }\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n  right: auto;\n  bottom: auto; }\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #e9ecef; }\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 1.5rem;\n  clear: both;\n  font-weight: 400;\n  color: #495057;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0; }\n  .dropdown-item:hover, .dropdown-item:focus {\n    color: #343a40;\n    text-decoration: none;\n    background-color: #f8f9fa; }\n  .dropdown-item.active, .dropdown-item:active {\n    color: #fff;\n    text-decoration: none;\n    background-color: #4582EC; }\n  .dropdown-item.disabled, .dropdown-item:disabled {\n    color: #6c757d;\n    pointer-events: none;\n    background-color: transparent; }\n\n.dropdown-menu.show {\n  display: block; }\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1.5rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: inherit;\n  white-space: nowrap; }\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.375rem 1.5rem;\n  color: #495057; }\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle; }\n  .btn-group > .btn,\n  .btn-group-vertical > .btn {\n    position: relative;\n    flex: 1 1 auto; }\n    .btn-group > .btn:hover,\n    .btn-group-vertical > .btn:hover {\n      z-index: 1; }\n    .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n    .btn-group-vertical > .btn:focus,\n    .btn-group-vertical > .btn:active,\n    .btn-group-vertical > .btn.active {\n      z-index: 1; }\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start; }\n  .btn-toolbar .input-group {\n    width: auto; }\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px; }\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0; }\n\n.dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem; }\n  .dropdown-toggle-split::after,\n  .dropup .dropdown-toggle-split::after,\n  .dropright .dropdown-toggle-split::after {\n    margin-left: 0; }\n  .dropleft .dropdown-toggle-split::before {\n    margin-right: 0; }\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem; }\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 1.125rem;\n  padding-left: 1.125rem; }\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center; }\n  .btn-group-vertical > .btn,\n  .btn-group-vertical > .btn-group {\n    width: 100%; }\n  .btn-group-vertical > .btn:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: -1px; }\n  .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n  .btn-group-vertical > .btn-group:not(:last-child) > .btn {\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0; }\n  .btn-group-vertical > .btn:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > .btn {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0; }\n  .btn-group-toggle > .btn input[type=\"radio\"],\n  .btn-group-toggle > .btn input[type=\"checkbox\"],\n  .btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n  .btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none; }\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%; }\n  .input-group > .form-control,\n  .input-group > .form-control-plaintext,\n  .input-group > .custom-select,\n  .input-group > .custom-file {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    margin-bottom: 0; }\n    .input-group > .form-control + .form-control,\n    .input-group > .form-control + .custom-select,\n    .input-group > .form-control + .custom-file,\n    .input-group > .form-control-plaintext + .form-control,\n    .input-group > .form-control-plaintext + .custom-select,\n    .input-group > .form-control-plaintext + .custom-file,\n    .input-group > .custom-select + .form-control,\n    .input-group > .custom-select + .custom-select,\n    .input-group > .custom-select + .custom-file,\n    .input-group > .custom-file + .form-control,\n    .input-group > .custom-file + .custom-select,\n    .input-group > .custom-file + .custom-file {\n      margin-left: -1px; }\n  .input-group > .form-control:focus,\n  .input-group > .custom-select:focus,\n  .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n    z-index: 3; }\n  .input-group > .custom-file .custom-file-input:focus {\n    z-index: 4; }\n  .input-group > .form-control:not(:last-child),\n  .input-group > .custom-select:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0; }\n  .input-group > .form-control:not(:first-child),\n  .input-group > .custom-select:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0; }\n  .input-group > .custom-file {\n    display: flex;\n    align-items: center; }\n    .input-group > .custom-file:not(:last-child) .custom-file-label,\n    .input-group > .custom-file:not(:last-child) .custom-file-label::after {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0; }\n    .input-group > .custom-file:not(:first-child) .custom-file-label {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0; }\n\n.input-group-prepend,\n.input-group-append {\n  display: flex; }\n  .input-group-prepend .btn,\n  .input-group-append .btn {\n    position: relative;\n    z-index: 2; }\n    .input-group-prepend .btn:focus,\n    .input-group-append .btn:focus {\n      z-index: 3; }\n  .input-group-prepend .btn + .btn,\n  .input-group-prepend .btn + .input-group-text,\n  .input-group-prepend .input-group-text + .input-group-text,\n  .input-group-prepend .input-group-text + .btn,\n  .input-group-append .btn + .btn,\n  .input-group-append .btn + .input-group-text,\n  .input-group-append .input-group-text + .input-group-text,\n  .input-group-append .input-group-text + .btn {\n    margin-left: -1px; }\n\n.input-group-prepend {\n  margin-right: -1px; }\n\n.input-group-append {\n  margin-left: -1px; }\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.3125rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem; }\n  .input-group-text input[type=\"radio\"],\n  .input-group-text input[type=\"checkbox\"] {\n    margin-top: 0; }\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n  height: calc(1.5em + 1rem + 2px); }\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.6875rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem; }\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n  height: calc(1.5em + 0.5rem + 2px); }\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.125rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5rem;\n  border-radius: 0.2rem; }\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n  padding-right: 1.75rem; }\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0; }\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem; }\n\n.custom-control-inline {\n  display: inline-flex;\n  margin-right: 1rem; }\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0; }\n  .custom-control-input:checked ~ .custom-control-label::before {\n    color: #fff;\n    border-color: #007bff;\n    background-color: #4582EC; }\n  .custom-control-input:focus ~ .custom-control-label::before {\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n  .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n    border-color: #80bdff; }\n  .custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n    color: #fff;\n    background-color: #e7effd;\n    border-color: #b3d7ff; }\n  .custom-control-input:disabled ~ .custom-control-label {\n    color: #6c757d; }\n    .custom-control-input:disabled ~ .custom-control-label::before {\n      background-color: #e9ecef; }\n\n.custom-control-label {\n  position: relative;\n  margin-bottom: 0;\n  vertical-align: top; }\n  .custom-control-label::before {\n    position: absolute;\n    top: 0.25rem;\n    left: -1.5rem;\n    display: block;\n    width: 1rem;\n    height: 1rem;\n    pointer-events: none;\n    content: \"\";\n    background-color: #fff;\n    border: #adb5bd solid 1px; }\n  .custom-control-label::after {\n    position: absolute;\n    top: 0.25rem;\n    left: -1.5rem;\n    display: block;\n    width: 1rem;\n    height: 1rem;\n    content: \"\";\n    background: no-repeat 50% / 50% 50%; }\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem; }\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\"); }\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  border-color: #007bff;\n  background-color: #4582EC; }\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\"); }\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5); }\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5); }\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%; }\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  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\"); }\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5); }\n\n.custom-switch {\n  padding-left: 3.5rem; }\n  .custom-switch .custom-control-label::before {\n    left: -3.5rem;\n    width: 3rem;\n    pointer-events: all;\n    border-radius: 100rem; }\n  .custom-switch .custom-control-label::after {\n    top: calc(0.25rem + 2px);\n    left: calc(-3.5rem + 2px);\n    width: 1rem;\n    height: 1rem;\n    background-color: #adb5bd;\n    border-radius: 100rem;\n    transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }\n    @media (prefers-reduced-motion: reduce) {\n      .custom-switch .custom-control-label::after {\n        transition: none; } }\n  .custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n    background-color: #fff;\n    transform: translateX(2rem); }\n  .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n    background-color: rgba(0, 123, 255, 0.5); }\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(1.5em + 0.75rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  vertical-align: middle;\n  background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n  background-color: #fff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none; }\n  .custom-select:focus {\n    border-color: #80bdff;\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n    .custom-select:focus::-ms-value {\n      color: #495057;\n      background-color: #fff; }\n  .custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n    height: auto;\n    padding-right: 0.75rem;\n    background-image: none; }\n  .custom-select:disabled {\n    color: #6c757d;\n    background-color: #e9ecef; }\n  .custom-select::-ms-expand {\n    display: none; }\n\n.custom-select-sm {\n  height: calc(1.5em + 0.5rem + 2px);\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 0.875rem; }\n\n.custom-select-lg {\n  height: calc(1.5em + 1rem + 2px);\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 1.25rem; }\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(1.5em + 0.75rem + 2px);\n  margin-bottom: 0; }\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(1.5em + 0.75rem + 2px);\n  margin: 0;\n  opacity: 0; }\n  .custom-file-input:focus ~ .custom-file-label {\n    border-color: #80bdff;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n  .custom-file-input:disabled ~ .custom-file-label {\n    background-color: #e9ecef; }\n  .custom-file-input:lang(en) ~ .custom-file-label::after {\n    content: \"Browse\"; }\n  .custom-file-input ~ .custom-file-label[data-browse]::after {\n    content: attr(data-browse); }\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(1.5em + 0.75rem + 2px);\n  padding: 0.375rem 0.75rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #fff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem; }\n  .custom-file-label::after {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 3;\n    display: block;\n    height: calc(1.5em + 0.75rem);\n    padding: 0.375rem 0.75rem;\n    line-height: 1.5;\n    color: #495057;\n    content: \"Browse\";\n    background-color: #e9ecef;\n    border-left: inherit;\n    border-radius: 0 0.25rem 0.25rem 0; }\n\n.custom-range {\n  width: 100%;\n  height: calc(1rem + 0.4rem);\n  padding: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none; }\n  .custom-range:focus {\n    outline: none; }\n    .custom-range:focus::-webkit-slider-thumb {\n      box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n    .custom-range:focus::-moz-range-thumb {\n      box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n    .custom-range:focus::-ms-thumb {\n      box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n  .custom-range::-moz-focus-outer {\n    border: 0; }\n  .custom-range::-webkit-slider-thumb {\n    width: 1rem;\n    height: 1rem;\n    margin-top: -0.25rem;\n    background-color: #007bff;\n    border: 0;\n    border-radius: 1rem;\n    transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n    -webkit-appearance: none;\n            appearance: none; }\n    @media (prefers-reduced-motion: reduce) {\n      .custom-range::-webkit-slider-thumb {\n        transition: none; } }\n    .custom-range::-webkit-slider-thumb:active {\n      background-color: #b3d7ff; }\n  .custom-range::-webkit-slider-runnable-track {\n    width: 100%;\n    height: 0.5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: #dee2e6;\n    border-color: transparent;\n    border-radius: 1rem; }\n  .custom-range::-moz-range-thumb {\n    width: 1rem;\n    height: 1rem;\n    background-color: #007bff;\n    border: 0;\n    border-radius: 1rem;\n    transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n    -moz-appearance: none;\n         appearance: none; }\n    @media (prefers-reduced-motion: reduce) {\n      .custom-range::-moz-range-thumb {\n        transition: none; } }\n    .custom-range::-moz-range-thumb:active {\n      background-color: #b3d7ff; }\n  .custom-range::-moz-range-track {\n    width: 100%;\n    height: 0.5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: #dee2e6;\n    border-color: transparent;\n    border-radius: 1rem; }\n  .custom-range::-ms-thumb {\n    width: 1rem;\n    height: 1rem;\n    margin-top: 0;\n    margin-right: 0.2rem;\n    margin-left: 0.2rem;\n    background-color: #007bff;\n    border: 0;\n    border-radius: 1rem;\n    transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n    appearance: none; }\n    @media (prefers-reduced-motion: reduce) {\n      .custom-range::-ms-thumb {\n        transition: none; } }\n    .custom-range::-ms-thumb:active {\n      background-color: #b3d7ff; }\n  .custom-range::-ms-track {\n    width: 100%;\n    height: 0.5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: transparent;\n    border-color: transparent;\n    border-width: 0.5rem; }\n  .custom-range::-ms-fill-lower {\n    background-color: #dee2e6;\n    border-radius: 1rem; }\n  .custom-range::-ms-fill-upper {\n    margin-right: 15px;\n    background-color: #dee2e6;\n    border-radius: 1rem; }\n  .custom-range:disabled::-webkit-slider-thumb {\n    background-color: #adb5bd; }\n  .custom-range:disabled::-webkit-slider-runnable-track {\n    cursor: default; }\n  .custom-range:disabled::-moz-range-thumb {\n    background-color: #adb5bd; }\n  .custom-range:disabled::-moz-range-track {\n    cursor: default; }\n  .custom-range:disabled::-ms-thumb {\n    background-color: #adb5bd; }\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }\n  @media (prefers-reduced-motion: reduce) {\n    .custom-control-label::before,\n    .custom-file-label,\n    .custom-select {\n      transition: none; } }\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none; }\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem; }\n  .nav-link:hover, .nav-link:focus {\n    text-decoration: none; }\n  .nav-link.disabled {\n    color: #6c757d;\n    pointer-events: none;\n    cursor: default; }\n\n.nav-tabs {\n  border-bottom: 0 solid transparent; }\n  .nav-tabs .nav-item {\n    margin-bottom: 0; }\n  .nav-tabs .nav-link {\n    border: 0 solid transparent;\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n    .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n      border-color: transparent; }\n    .nav-tabs .nav-link.disabled {\n      color: #6c757d;\n      background-color: transparent;\n      border-color: transparent; }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: #4582EC;\n    background-color: transparent;\n    border-color: transparent; }\n  .nav-tabs .dropdown-menu {\n    margin-top: 0;\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem; }\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #4582EC; }\n\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center; }\n\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center; }\n\n.tab-content > .tab-pane {\n  display: none; }\n\n.tab-content > .active {\n  display: block; }\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding: 0.75rem 1.5rem; }\n  .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between; }\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1.5rem;\n  font-size: 1.25rem;\n  line-height: inherit;\n  white-space: nowrap; }\n  .navbar-brand:hover, .navbar-brand:focus {\n    text-decoration: none; }\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none; }\n  .navbar-nav .nav-link {\n    padding-right: 0;\n    padding-left: 0; }\n  .navbar-nav .dropdown-menu {\n    position: static;\n    float: none; }\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem; }\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center; }\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem; }\n  .navbar-toggler:hover, .navbar-toggler:focus {\n    text-decoration: none; }\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%; }\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-flow: row nowrap;\n    justify-content: flex-start; }\n    .navbar-expand-sm .navbar-nav {\n      flex-direction: row; }\n      .navbar-expand-sm .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-sm .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-sm > .container,\n    .navbar-expand-sm > .container-fluid {\n      flex-wrap: nowrap; }\n    .navbar-expand-sm .navbar-collapse {\n      display: flex !important;\n      flex-basis: auto; }\n    .navbar-expand-sm .navbar-toggler {\n      display: none; } }\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-flow: row nowrap;\n    justify-content: flex-start; }\n    .navbar-expand-md .navbar-nav {\n      flex-direction: row; }\n      .navbar-expand-md .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-md .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-md > .container,\n    .navbar-expand-md > .container-fluid {\n      flex-wrap: nowrap; }\n    .navbar-expand-md .navbar-collapse {\n      display: flex !important;\n      flex-basis: auto; }\n    .navbar-expand-md .navbar-toggler {\n      display: none; } }\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-flow: row nowrap;\n    justify-content: flex-start; }\n    .navbar-expand-lg .navbar-nav {\n      flex-direction: row; }\n      .navbar-expand-lg .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-lg .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-lg > .container,\n    .navbar-expand-lg > .container-fluid {\n      flex-wrap: nowrap; }\n    .navbar-expand-lg .navbar-collapse {\n      display: flex !important;\n      flex-basis: auto; }\n    .navbar-expand-lg .navbar-toggler {\n      display: none; } }\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-flow: row nowrap;\n    justify-content: flex-start; }\n    .navbar-expand-xl .navbar-nav {\n      flex-direction: row; }\n      .navbar-expand-xl .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-xl .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-xl > .container,\n    .navbar-expand-xl > .container-fluid {\n      flex-wrap: nowrap; }\n    .navbar-expand-xl .navbar-collapse {\n      display: flex !important;\n      flex-basis: auto; }\n    .navbar-expand-xl .navbar-toggler {\n      display: none; } }\n\n.navbar-expand {\n  flex-flow: row nowrap;\n  justify-content: flex-start; }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; }\n  .navbar-expand .navbar-nav {\n    flex-direction: row; }\n    .navbar-expand .navbar-nav .dropdown-menu {\n      position: absolute; }\n    .navbar-expand .navbar-nav .nav-link {\n      padding-right: 0.5rem;\n      padding-left: 0.5rem; }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap; }\n  .navbar-expand .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto; }\n  .navbar-expand .navbar-toggler {\n    display: none; }\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9); }\n  .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n    color: rgba(0, 0, 0, 0.9); }\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(52, 58, 64, 0.5); }\n  .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n    color: rgba(52, 58, 64, 0.75); }\n  .navbar-light .navbar-nav .nav-link.disabled {\n    color: rgba(52, 58, 64, 0.3); }\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: #343a40; }\n\n.navbar-light .navbar-toggler {\n  color: rgba(52, 58, 64, 0.5);\n  border-color: rgba(52, 58, 64, 0.3); }\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"); }\n\n.navbar-light .navbar-text {\n  color: rgba(52, 58, 64, 0.5); }\n  .navbar-light .navbar-text a {\n    color: #343a40; }\n    .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n      color: #343a40; }\n\n.navbar-dark .navbar-brand {\n  color: #fff; }\n  .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n    color: #fff; }\n\n.navbar-dark .navbar-nav .nav-link {\n  color: #fff; }\n  .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n    color: rgba(255, 255, 255, 0.75); }\n  .navbar-dark .navbar-nav .nav-link.disabled {\n    color: rgba(255, 255, 255, 0.25); }\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff; }\n\n.navbar-dark .navbar-toggler {\n  color: #fff;\n  border-color: rgba(255, 255, 255, 0.1); }\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"); }\n\n.navbar-dark .navbar-text {\n  color: #fff; }\n  .navbar-dark .navbar-text a {\n    color: #fff; }\n    .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n      color: #fff; }\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid #e9ecef;\n  border-radius: 0.25rem; }\n  .card > hr {\n    margin-right: 0;\n    margin-left: 0; }\n  .card > .list-group:first-child .list-group-item:first-child {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem; }\n  .card > .list-group:last-child .list-group-item:last-child {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem; }\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1.5rem; }\n\n.card-title {\n  margin-bottom: 0.75rem; }\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0; }\n\n.card-text:last-child {\n  margin-bottom: 0; }\n\n.card-link:hover {\n  text-decoration: none; }\n\n.card-link + .card-link {\n  margin-left: 1.5rem; }\n\n.card-header {\n  padding: 0.75rem 1.5rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid #e9ecef; }\n  .card-header:first-child {\n    border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; }\n  .card-header + .list-group .list-group-item:first-child {\n    border-top: 0; }\n\n.card-footer {\n  padding: 0.75rem 1.5rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid #e9ecef; }\n  .card-footer:last-child {\n    border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); }\n\n.card-header-tabs {\n  margin-right: -0.75rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.75rem;\n  border-bottom: 0; }\n\n.card-header-pills {\n  margin-right: -0.75rem;\n  margin-left: -0.75rem; }\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem; }\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px); }\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px); }\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px); }\n\n.card-deck {\n  display: flex;\n  flex-direction: column; }\n  .card-deck .card {\n    margin-bottom: 15px; }\n  @media (min-width: 576px) {\n    .card-deck {\n      flex-flow: row wrap;\n      margin-right: -15px;\n      margin-left: -15px; }\n      .card-deck .card {\n        display: flex;\n        flex: 1 0 0%;\n        flex-direction: column;\n        margin-right: 15px;\n        margin-bottom: 0;\n        margin-left: 15px; } }\n\n.card-group {\n  display: flex;\n  flex-direction: column; }\n  .card-group > .card {\n    margin-bottom: 15px; }\n  @media (min-width: 576px) {\n    .card-group {\n      flex-flow: row wrap; }\n      .card-group > .card {\n        flex: 1 0 0%;\n        margin-bottom: 0; }\n        .card-group > .card + .card {\n          margin-left: 0;\n          border-left: 0; }\n        .card-group > .card:not(:last-child) {\n          border-top-right-radius: 0;\n          border-bottom-right-radius: 0; }\n          .card-group > .card:not(:last-child) .card-img-top,\n          .card-group > .card:not(:last-child) .card-header {\n            border-top-right-radius: 0; }\n          .card-group > .card:not(:last-child) .card-img-bottom,\n          .card-group > .card:not(:last-child) .card-footer {\n            border-bottom-right-radius: 0; }\n        .card-group > .card:not(:first-child) {\n          border-top-left-radius: 0;\n          border-bottom-left-radius: 0; }\n          .card-group > .card:not(:first-child) .card-img-top,\n          .card-group > .card:not(:first-child) .card-header {\n            border-top-left-radius: 0; }\n          .card-group > .card:not(:first-child) .card-img-bottom,\n          .card-group > .card:not(:first-child) .card-footer {\n            border-bottom-left-radius: 0; } }\n\n.card-columns .card {\n  margin-bottom: 0.75rem; }\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n       -moz-column-count: 3;\n            column-count: 3;\n    -webkit-column-gap: 1.25rem;\n       -moz-column-gap: 1.25rem;\n            column-gap: 1.25rem;\n    orphans: 1;\n    widows: 1; }\n    .card-columns .card {\n      display: inline-block;\n      width: 100%; } }\n\n.accordion > .card {\n  overflow: hidden; }\n  .accordion > .card:not(:first-of-type) .card-header:first-child {\n    border-radius: 0; }\n  .accordion > .card:not(:first-of-type):not(:last-of-type) {\n    border-bottom: 0;\n    border-radius: 0; }\n  .accordion > .card:first-of-type {\n    border-bottom: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0; }\n  .accordion > .card:last-of-type {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n  .accordion > .card .card-header {\n    margin-bottom: -1px; }\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 1rem 0;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: transparent;\n  border-radius: 0.25rem; }\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem; }\n  .breadcrumb-item + .breadcrumb-item::before {\n    display: inline-block;\n    padding-right: 0.5rem;\n    color: #ced4da;\n    content: \"/\"; }\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline; }\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none; }\n\n.breadcrumb-item.active {\n  color: #adb5bd; }\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem; }\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.325rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #007bff;\n  background-color: transparent;\n  border: 1px solid #dee2e6; }\n  .page-link:hover {\n    z-index: 2;\n    color: #0056b3;\n    text-decoration: none;\n    background-color: #e9ecef;\n    border-color: #dee2e6; }\n  .page-link:focus {\n    z-index: 2;\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem; }\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem; }\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #4582EC;\n  border-color: #4582EC; }\n\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #fff;\n  border-color: #dee2e6; }\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5; }\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem; }\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem; }\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5; }\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem; }\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem; }\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 500;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }\n  @media (prefers-reduced-motion: reduce) {\n    .badge {\n      transition: none; } }\n  a.badge:hover, a.badge:focus {\n    text-decoration: none; }\n  .badge:empty {\n    display: none; }\n\n.btn .badge {\n  position: relative;\n  top: -1px; }\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem; }\n\n.badge-primary {\n  color: #fff;\n  background-color: #4582EC; }\n  a.badge-primary:hover, a.badge-primary:focus {\n    color: #fff;\n    background-color: #1863e6; }\n  a.badge-primary:focus, a.badge-primary.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(69, 130, 236, 0.5); }\n\n.badge-secondary {\n  color: #fff;\n  background-color: #6c757d; }\n  a.badge-secondary:hover, a.badge-secondary:focus {\n    color: #fff;\n    background-color: #545b62; }\n  a.badge-secondary:focus, a.badge-secondary.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n\n.badge-success {\n  color: #fff;\n  background-color: #02B875; }\n  a.badge-success:hover, a.badge-success:focus {\n    color: #fff;\n    background-color: #018655; }\n  a.badge-success:focus, a.badge-success.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(2, 184, 117, 0.5); }\n\n.badge-info {\n  color: #fff;\n  background-color: #17a2b8; }\n  a.badge-info:hover, a.badge-info:focus {\n    color: #fff;\n    background-color: #117a8b; }\n  a.badge-info:focus, a.badge-info.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n\n.badge-warning {\n  color: #212529;\n  background-color: #f0ad4e; }\n  a.badge-warning:hover, a.badge-warning:focus {\n    color: #212529;\n    background-color: #ec971f; }\n  a.badge-warning:focus, a.badge-warning.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(240, 173, 78, 0.5); }\n\n.badge-danger {\n  color: #fff;\n  background-color: #d9534f; }\n  a.badge-danger:hover, a.badge-danger:focus {\n    color: #fff;\n    background-color: #c9302c; }\n  a.badge-danger:focus, a.badge-danger.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(217, 83, 79, 0.5); }\n\n.badge-light {\n  color: #212529;\n  background-color: #f8f9fa; }\n  a.badge-light:hover, a.badge-light:focus {\n    color: #212529;\n    background-color: #dae0e5; }\n  a.badge-light:focus, a.badge-light.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n\n.badge-dark {\n  color: #fff;\n  background-color: #212529; }\n  a.badge-dark:hover, a.badge-dark:focus {\n    color: #fff;\n    background-color: #0a0c0d; }\n  a.badge-dark:focus, a.badge-dark.focus {\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(33, 37, 41, 0.5); }\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #e9ecef;\n  border-radius: 0.3rem; }\n  @media (min-width: 576px) {\n    .jumbotron {\n      padding: 4rem 2rem; } }\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0; }\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem; }\n\n.alert-heading {\n  color: inherit; }\n\n.alert-link {\n  font-weight: 700; }\n\n.alert-dismissible {\n  padding-right: 4rem; }\n  .alert-dismissible .close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: 0.75rem 1.25rem;\n    color: inherit; }\n\n.alert-primary {\n  color: #24447b;\n  background-color: #dae6fb;\n  border-color: #cbdcfa; }\n  .alert-primary hr {\n    border-top-color: #b4ccf8; }\n  .alert-primary .alert-link {\n    color: #182e54; }\n\n.alert-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db; }\n  .alert-secondary hr {\n    border-top-color: #c8cbcf; }\n  .alert-secondary .alert-link {\n    color: #202326; }\n\n.alert-success {\n  color: #01603d;\n  background-color: #ccf1e3;\n  border-color: #b8ebd8; }\n  .alert-success hr {\n    border-top-color: #a4e5cd; }\n  .alert-success .alert-link {\n    color: #002e1d; }\n\n.alert-info {\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb; }\n  .alert-info hr {\n    border-top-color: #abdde5; }\n  .alert-info .alert-link {\n    color: #062c33; }\n\n.alert-warning {\n  color: #7d5a29;\n  background-color: #fcefdc;\n  border-color: #fbe8cd; }\n  .alert-warning hr {\n    border-top-color: #f9ddb5; }\n  .alert-warning .alert-link {\n    color: #573e1c; }\n\n.alert-danger {\n  color: #712b29;\n  background-color: #f7dddc;\n  border-color: #f4cfce; }\n  .alert-danger hr {\n    border-top-color: #efbbb9; }\n  .alert-danger .alert-link {\n    color: #4c1d1b; }\n\n.alert-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe; }\n  .alert-light hr {\n    border-top-color: #ececf6; }\n  .alert-light .alert-link {\n    color: #686868; }\n\n.alert-dark {\n  color: #111315;\n  background-color: #d3d3d4;\n  border-color: #c1c2c3; }\n  .alert-dark hr {\n    border-top-color: #b4b5b6; }\n  .alert-dark .alert-link {\n    color: black; }\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0; }\n  to {\n    background-position: 0 0; } }\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0; }\n  to {\n    background-position: 0 0; } }\n\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem; }\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #4582EC;\n  transition: width 0.6s ease; }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none; } }\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem; }\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n          animation: progress-bar-stripes 1s linear infinite; }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      -webkit-animation: none;\n              animation: none; } }\n\n.media {\n  display: flex;\n  align-items: flex-start; }\n\n.media-body {\n  flex: 1; }\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0; }\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit; }\n  .list-group-item-action:hover, .list-group-item-action:focus {\n    z-index: 1;\n    color: #495057;\n    text-decoration: none;\n    background-color: #f8f9fa; }\n  .list-group-item-action:active {\n    color: #212529;\n    background-color: #e9ecef; }\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125); }\n  .list-group-item:first-child {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem; }\n  .list-group-item:last-child {\n    margin-bottom: 0;\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem; }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: #6c757d;\n    pointer-events: none;\n    background-color: #fff; }\n  .list-group-item.active {\n    z-index: 2;\n    color: #fff;\n    background-color: #4582EC;\n    border-color: #007bff; }\n\n.list-group-horizontal {\n  flex-direction: row; }\n  .list-group-horizontal .list-group-item {\n    margin-right: -1px;\n    margin-bottom: 0; }\n    .list-group-horizontal .list-group-item:first-child {\n      border-top-left-radius: 0.25rem;\n      border-bottom-left-radius: 0.25rem;\n      border-top-right-radius: 0; }\n    .list-group-horizontal .list-group-item:last-child {\n      margin-right: 0;\n      border-top-right-radius: 0.25rem;\n      border-bottom-right-radius: 0.25rem;\n      border-bottom-left-radius: 0; }\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row; }\n    .list-group-horizontal-sm .list-group-item {\n      margin-right: -1px;\n      margin-bottom: 0; }\n      .list-group-horizontal-sm .list-group-item:first-child {\n        border-top-left-radius: 0.25rem;\n        border-bottom-left-radius: 0.25rem;\n        border-top-right-radius: 0; }\n      .list-group-horizontal-sm .list-group-item:last-child {\n        margin-right: 0;\n        border-top-right-radius: 0.25rem;\n        border-bottom-right-radius: 0.25rem;\n        border-bottom-left-radius: 0; } }\n\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row; }\n    .list-group-horizontal-md .list-group-item {\n      margin-right: -1px;\n      margin-bottom: 0; }\n      .list-group-horizontal-md .list-group-item:first-child {\n        border-top-left-radius: 0.25rem;\n        border-bottom-left-radius: 0.25rem;\n        border-top-right-radius: 0; }\n      .list-group-horizontal-md .list-group-item:last-child {\n        margin-right: 0;\n        border-top-right-radius: 0.25rem;\n        border-bottom-right-radius: 0.25rem;\n        border-bottom-left-radius: 0; } }\n\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row; }\n    .list-group-horizontal-lg .list-group-item {\n      margin-right: -1px;\n      margin-bottom: 0; }\n      .list-group-horizontal-lg .list-group-item:first-child {\n        border-top-left-radius: 0.25rem;\n        border-bottom-left-radius: 0.25rem;\n        border-top-right-radius: 0; }\n      .list-group-horizontal-lg .list-group-item:last-child {\n        margin-right: 0;\n        border-top-right-radius: 0.25rem;\n        border-bottom-right-radius: 0.25rem;\n        border-bottom-left-radius: 0; } }\n\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row; }\n    .list-group-horizontal-xl .list-group-item {\n      margin-right: -1px;\n      margin-bottom: 0; }\n      .list-group-horizontal-xl .list-group-item:first-child {\n        border-top-left-radius: 0.25rem;\n        border-bottom-left-radius: 0.25rem;\n        border-top-right-radius: 0; }\n      .list-group-horizontal-xl .list-group-item:last-child {\n        margin-right: 0;\n        border-top-right-radius: 0.25rem;\n        border-bottom-right-radius: 0.25rem;\n        border-bottom-left-radius: 0; } }\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0; }\n  .list-group-flush .list-group-item:last-child {\n    margin-bottom: -1px; }\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0; }\n\n.list-group-flush:last-child .list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom: 0; }\n\n.list-group-item-primary {\n  color: #24447b;\n  background-color: #cbdcfa; }\n  .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n    color: #24447b;\n    background-color: #b4ccf8; }\n  .list-group-item-primary.list-group-item-action.active {\n    color: #fff;\n    background-color: #24447b;\n    border-color: #24447b; }\n\n.list-group-item-secondary {\n  color: #383d41;\n  background-color: #d6d8db; }\n  .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n    color: #383d41;\n    background-color: #c8cbcf; }\n  .list-group-item-secondary.list-group-item-action.active {\n    color: #fff;\n    background-color: #383d41;\n    border-color: #383d41; }\n\n.list-group-item-success {\n  color: #01603d;\n  background-color: #b8ebd8; }\n  .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n    color: #01603d;\n    background-color: #a4e5cd; }\n  .list-group-item-success.list-group-item-action.active {\n    color: #fff;\n    background-color: #01603d;\n    border-color: #01603d; }\n\n.list-group-item-info {\n  color: #0c5460;\n  background-color: #bee5eb; }\n  .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n    color: #0c5460;\n    background-color: #abdde5; }\n  .list-group-item-info.list-group-item-action.active {\n    color: #fff;\n    background-color: #0c5460;\n    border-color: #0c5460; }\n\n.list-group-item-warning {\n  color: #7d5a29;\n  background-color: #fbe8cd; }\n  .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n    color: #7d5a29;\n    background-color: #f9ddb5; }\n  .list-group-item-warning.list-group-item-action.active {\n    color: #fff;\n    background-color: #7d5a29;\n    border-color: #7d5a29; }\n\n.list-group-item-danger {\n  color: #712b29;\n  background-color: #f4cfce; }\n  .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n    color: #712b29;\n    background-color: #efbbb9; }\n  .list-group-item-danger.list-group-item-action.active {\n    color: #fff;\n    background-color: #712b29;\n    border-color: #712b29; }\n\n.list-group-item-light {\n  color: #818182;\n  background-color: #fdfdfe; }\n  .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n    color: #818182;\n    background-color: #ececf6; }\n  .list-group-item-light.list-group-item-action.active {\n    color: #fff;\n    background-color: #818182;\n    border-color: #818182; }\n\n.list-group-item-dark {\n  color: #111315;\n  background-color: #c1c2c3; }\n  .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n    color: #111315;\n    background-color: #b4b5b6; }\n  .list-group-item-dark.list-group-item-action.active {\n    color: #fff;\n    background-color: #111315;\n    border-color: #111315; }\n\n.close {\n  float: right;\n  font-size: 1.5rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: .5; }\n  .close:hover {\n    color: #000;\n    text-decoration: none; }\n  .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n    opacity: .75; }\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none; }\n\na.close.disabled {\n  pointer-events: none; }\n\n.toast {\n  max-width: 350px;\n  overflow: hidden;\n  font-size: 0.875rem;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n  -webkit-backdrop-filter: blur(10px);\n          backdrop-filter: blur(10px);\n  opacity: 0;\n  border-radius: 0.25rem; }\n  .toast:not(:last-child) {\n    margin-bottom: 0.75rem; }\n  .toast.showing {\n    opacity: 1; }\n  .toast.show {\n    display: block;\n    opacity: 1; }\n  .toast.hide {\n    display: none; }\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.25rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05); }\n\n.toast-body {\n  padding: 0.75rem; }\n\n.modal-open {\n  overflow: hidden; }\n  .modal-open .modal {\n    overflow-x: hidden;\n    overflow-y: auto; }\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  outline: 0; }\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none; }\n  .modal.fade .modal-dialog {\n    transition: transform 0.3s ease-out;\n    transform: translate(0, -50px); }\n    @media (prefers-reduced-motion: reduce) {\n      .modal.fade .modal-dialog {\n        transition: none; } }\n  .modal.show .modal-dialog {\n    transform: none; }\n\n.modal-dialog-scrollable {\n  display: flex;\n  max-height: calc(100% - 1rem); }\n  .modal-dialog-scrollable .modal-content {\n    max-height: calc(100vh - 1rem);\n    overflow: hidden; }\n  .modal-dialog-scrollable .modal-header,\n  .modal-dialog-scrollable .modal-footer {\n    flex-shrink: 0; }\n  .modal-dialog-scrollable .modal-body {\n    overflow-y: auto; }\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem); }\n  .modal-dialog-centered::before {\n    display: block;\n    height: calc(100vh - 1rem);\n    content: \"\"; }\n  .modal-dialog-centered.modal-dialog-scrollable {\n    flex-direction: column;\n    justify-content: center;\n    height: 100%; }\n    .modal-dialog-centered.modal-dialog-scrollable .modal-content {\n      max-height: none; }\n    .modal-dialog-centered.modal-dialog-scrollable::before {\n      content: none; }\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0; }\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000; }\n  .modal-backdrop.fade {\n    opacity: 0; }\n  .modal-backdrop.show {\n    opacity: 0.5; }\n\n.modal-header {\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem; }\n  .modal-header .close {\n    padding: 1rem 1rem;\n    margin: -1rem -1rem -1rem auto; }\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5; }\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem; }\n\n.modal-footer {\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-right-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem; }\n  .modal-footer > :not(:first-child) {\n    margin-left: .25rem; }\n  .modal-footer > :not(:last-child) {\n    margin-right: .25rem; }\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll; }\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto; }\n  .modal-dialog-scrollable {\n    max-height: calc(100% - 3.5rem); }\n    .modal-dialog-scrollable .modal-content {\n      max-height: calc(100vh - 3.5rem); }\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem); }\n    .modal-dialog-centered::before {\n      height: calc(100vh - 3.5rem); }\n  .modal-sm {\n    max-width: 300px; } }\n\n@media (min-width: 992px) {\n  .modal-lg,\n  .modal-xl {\n    max-width: 800px; } }\n\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px; } }\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: \"Rubik\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0; }\n  .tooltip.show {\n    opacity: 0.9; }\n  .tooltip .arrow {\n    position: absolute;\n    display: block;\n    width: 4px;\n    height: 4px; }\n    .tooltip .arrow::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid; }\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 4px 0; }\n  .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n    bottom: 0; }\n    .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n      top: 0;\n      border-width: 4px 2px 0;\n      border-top-color: #343a40; }\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 4px; }\n  .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n    left: 0;\n    width: 4px;\n    height: 4px; }\n    .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n      right: 0;\n      border-width: 2px 4px 2px 0;\n      border-right-color: #343a40; }\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 4px 0; }\n  .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n    top: 0; }\n    .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n      bottom: 0;\n      border-width: 0 2px 4px;\n      border-bottom-color: #343a40; }\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 4px; }\n  .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n    right: 0;\n    width: 4px;\n    height: 4px; }\n    .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n      left: 0;\n      border-width: 2px 0 2px 4px;\n      border-left-color: #343a40; }\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 2px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #343a40;\n  border-radius: 0.25rem; }\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: \"Rubik\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem; }\n  .popover .arrow {\n    position: absolute;\n    display: block;\n    width: 1rem;\n    height: 0.5rem;\n    margin: 0 0.3rem; }\n    .popover .arrow::before, .popover .arrow::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid; }\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem; }\n  .bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n    bottom: calc((0.5rem + 1px) * -1); }\n    .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n      bottom: 0;\n      border-width: 0.5rem 0.5rem 0;\n      border-top-color: rgba(0, 0, 0, 0.25); }\n    .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n      bottom: 1px;\n      border-width: 0.5rem 0.5rem 0;\n      border-top-color: #fff; }\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem; }\n  .bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n    left: calc((0.5rem + 1px) * -1);\n    width: 0.5rem;\n    height: 1rem;\n    margin: 0.3rem 0; }\n    .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n      left: 0;\n      border-width: 0.5rem 0.5rem 0.5rem 0;\n      border-right-color: rgba(0, 0, 0, 0.25); }\n    .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n      left: 1px;\n      border-width: 0.5rem 0.5rem 0.5rem 0;\n      border-right-color: #fff; }\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem; }\n  .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n    top: calc((0.5rem + 1px) * -1); }\n    .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n      top: 0;\n      border-width: 0 0.5rem 0.5rem 0.5rem;\n      border-bottom-color: rgba(0, 0, 0, 0.25); }\n    .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n      top: 1px;\n      border-width: 0 0.5rem 0.5rem 0.5rem;\n      border-bottom-color: #fff; }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: 1rem;\n    margin-left: -0.5rem;\n    content: \"\";\n    border-bottom: 1px solid #f7f7f7; }\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem; }\n  .bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n    right: calc((0.5rem + 1px) * -1);\n    width: 0.5rem;\n    height: 1rem;\n    margin: 0.3rem 0; }\n    .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n      right: 0;\n      border-width: 0.5rem 0 0.5rem 0.5rem;\n      border-left-color: rgba(0, 0, 0, 0.25); }\n    .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n      right: 1px;\n      border-width: 0.5rem 0 0.5rem 0.5rem;\n      border-left-color: #fff; }\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  color: #343a40;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px); }\n  .popover-header:empty {\n    display: none; }\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #212529; }\n\n.carousel {\n  position: relative; }\n\n.carousel.pointer-event {\n  touch-action: pan-y; }\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden; }\n  .carousel-inner::after {\n    display: block;\n    clear: both;\n    content: \"\"; }\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out; }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-item {\n      transition: none; } }\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block; }\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n  transform: translateX(100%); }\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n  transform: translateX(-100%); }\n\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none; }\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n  z-index: 1;\n  opacity: 1; }\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n  z-index: 0;\n  opacity: 0;\n  transition: 0s 0.6s opacity; }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .active.carousel-item-left,\n    .carousel-fade .active.carousel-item-right {\n      transition: none; } }\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5;\n  transition: opacity 0.15s ease; }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-control-prev,\n    .carousel-control-next {\n      transition: none; } }\n  .carousel-control-prev:hover, .carousel-control-prev:focus,\n  .carousel-control-next:hover,\n  .carousel-control-next:focus {\n    color: #fff;\n    text-decoration: none;\n    outline: 0;\n    opacity: 0.9; }\n\n.carousel-control-prev {\n  left: 0; }\n\n.carousel-control-next {\n  right: 0; }\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: no-repeat 50% / 100% 100%; }\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\"); }\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\"); }\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 15;\n  display: flex;\n  justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none; }\n  .carousel-indicators li {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: 30px;\n    height: 3px;\n    margin-right: 3px;\n    margin-left: 3px;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: #fff;\n    background-clip: padding-box;\n    border-top: 10px solid transparent;\n    border-bottom: 10px solid transparent;\n    opacity: .5;\n    transition: opacity 0.6s ease; }\n    @media (prefers-reduced-motion: reduce) {\n      .carousel-indicators li {\n        transition: none; } }\n  .carousel-indicators .active {\n    opacity: 1; }\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center; }\n\n@-webkit-keyframes spinner-border {\n  to {\n    transform: rotate(360deg); } }\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg); } }\n\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: text-bottom;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  -webkit-animation: spinner-border .75s linear infinite;\n          animation: spinner-border .75s linear infinite; }\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em; }\n\n@-webkit-keyframes spinner-grow {\n  0% {\n    transform: scale(0); }\n  50% {\n    opacity: 1; } }\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0); }\n  50% {\n    opacity: 1; } }\n\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: text-bottom;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  -webkit-animation: spinner-grow .75s linear infinite;\n          animation: spinner-grow .75s linear infinite; }\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem; }\n\n.align-baseline {\n  vertical-align: baseline !important; }\n\n.align-top {\n  vertical-align: top !important; }\n\n.align-middle {\n  vertical-align: middle !important; }\n\n.align-bottom {\n  vertical-align: bottom !important; }\n\n.align-text-bottom {\n  vertical-align: text-bottom !important; }\n\n.align-text-top {\n  vertical-align: text-top !important; }\n\n.bg-primary {\n  background-color: #4582EC !important; }\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #1863e6 !important; }\n\n.bg-secondary {\n  background-color: #6c757d !important; }\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #545b62 !important; }\n\n.bg-success {\n  background-color: #02B875 !important; }\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #018655 !important; }\n\n.bg-info {\n  background-color: #17a2b8 !important; }\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #117a8b !important; }\n\n.bg-warning {\n  background-color: #f0ad4e !important; }\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #ec971f !important; }\n\n.bg-danger {\n  background-color: #d9534f !important; }\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #c9302c !important; }\n\n.bg-light {\n  background-color: #f8f9fa !important; }\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #dae0e5 !important; }\n\n.bg-dark {\n  background-color: #212529 !important; }\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #0a0c0d !important; }\n\n.bg-white {\n  background-color: #fff !important; }\n\n.bg-transparent {\n  background-color: transparent !important; }\n\n.border {\n  border: 1px solid #dee2e6 !important; }\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important; }\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important; }\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important; }\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important; }\n\n.border-0 {\n  border: 0 !important; }\n\n.border-top-0 {\n  border-top: 0 !important; }\n\n.border-right-0 {\n  border-right: 0 !important; }\n\n.border-bottom-0 {\n  border-bottom: 0 !important; }\n\n.border-left-0 {\n  border-left: 0 !important; }\n\n.border-primary {\n  border-color: #4582EC !important; }\n\n.border-secondary {\n  border-color: #6c757d !important; }\n\n.border-success {\n  border-color: #02B875 !important; }\n\n.border-info {\n  border-color: #17a2b8 !important; }\n\n.border-warning {\n  border-color: #f0ad4e !important; }\n\n.border-danger {\n  border-color: #d9534f !important; }\n\n.border-light {\n  border-color: #f8f9fa !important; }\n\n.border-dark {\n  border-color: #212529 !important; }\n\n.border-white {\n  border-color: #fff !important; }\n\n.rounded-sm {\n  border-radius: 0.2rem !important; }\n\n.rounded {\n  border-radius: 0.25rem !important; }\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important; }\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important; }\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important; }\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important; }\n\n.rounded-lg {\n  border-radius: 0.3rem !important; }\n\n.rounded-circle {\n  border-radius: 50% !important; }\n\n.rounded-pill {\n  border-radius: 50rem !important; }\n\n.rounded-0 {\n  border-radius: 0 !important; }\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\"; }\n\n.d-none {\n  display: none !important; }\n\n.d-inline {\n  display: inline !important; }\n\n.d-inline-block {\n  display: inline-block !important; }\n\n.d-block {\n  display: block !important; }\n\n.d-table {\n  display: table !important; }\n\n.d-table-row {\n  display: table-row !important; }\n\n.d-table-cell {\n  display: table-cell !important; }\n\n.d-flex {\n  display: flex !important; }\n\n.d-inline-flex {\n  display: inline-flex !important; }\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important; }\n  .d-sm-inline {\n    display: inline !important; }\n  .d-sm-inline-block {\n    display: inline-block !important; }\n  .d-sm-block {\n    display: block !important; }\n  .d-sm-table {\n    display: table !important; }\n  .d-sm-table-row {\n    display: table-row !important; }\n  .d-sm-table-cell {\n    display: table-cell !important; }\n  .d-sm-flex {\n    display: flex !important; }\n  .d-sm-inline-flex {\n    display: inline-flex !important; } }\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important; }\n  .d-md-inline {\n    display: inline !important; }\n  .d-md-inline-block {\n    display: inline-block !important; }\n  .d-md-block {\n    display: block !important; }\n  .d-md-table {\n    display: table !important; }\n  .d-md-table-row {\n    display: table-row !important; }\n  .d-md-table-cell {\n    display: table-cell !important; }\n  .d-md-flex {\n    display: flex !important; }\n  .d-md-inline-flex {\n    display: inline-flex !important; } }\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important; }\n  .d-lg-inline {\n    display: inline !important; }\n  .d-lg-inline-block {\n    display: inline-block !important; }\n  .d-lg-block {\n    display: block !important; }\n  .d-lg-table {\n    display: table !important; }\n  .d-lg-table-row {\n    display: table-row !important; }\n  .d-lg-table-cell {\n    display: table-cell !important; }\n  .d-lg-flex {\n    display: flex !important; }\n  .d-lg-inline-flex {\n    display: inline-flex !important; } }\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important; }\n  .d-xl-inline {\n    display: inline !important; }\n  .d-xl-inline-block {\n    display: inline-block !important; }\n  .d-xl-block {\n    display: block !important; }\n  .d-xl-table {\n    display: table !important; }\n  .d-xl-table-row {\n    display: table-row !important; }\n  .d-xl-table-cell {\n    display: table-cell !important; }\n  .d-xl-flex {\n    display: flex !important; }\n  .d-xl-inline-flex {\n    display: inline-flex !important; } }\n\n@media print {\n  .d-print-none {\n    display: none !important; }\n  .d-print-inline {\n    display: inline !important; }\n  .d-print-inline-block {\n    display: inline-block !important; }\n  .d-print-block {\n    display: block !important; }\n  .d-print-table {\n    display: table !important; }\n  .d-print-table-row {\n    display: table-row !important; }\n  .d-print-table-cell {\n    display: table-cell !important; }\n  .d-print-flex {\n    display: flex !important; }\n  .d-print-inline-flex {\n    display: inline-flex !important; } }\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden; }\n  .embed-responsive::before {\n    display: block;\n    content: \"\"; }\n  .embed-responsive .embed-responsive-item,\n  .embed-responsive iframe,\n  .embed-responsive embed,\n  .embed-responsive object,\n  .embed-responsive video {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: 0; }\n\n.embed-responsive-21by9::before {\n  padding-top: 42.85714%; }\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%; }\n\n.embed-responsive-4by3::before {\n  padding-top: 75%; }\n\n.embed-responsive-1by1::before {\n  padding-top: 100%; }\n\n.embed-responsive-21by9::before {\n  padding-top: 42.85714%; }\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%; }\n\n.embed-responsive-3by4::before {\n  padding-top: 133.33333%; }\n\n.embed-responsive-1by1::before {\n  padding-top: 100%; }\n\n.embed-responsive-21by9::before {\n  padding-top: 42.85714%; }\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%; }\n\n.embed-responsive-3by4::before {\n  padding-top: 133.33333%; }\n\n.embed-responsive-1by1::before {\n  padding-top: 100%; }\n\n.embed-responsive-21by9::before {\n  padding-top: 42.85714%; }\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%; }\n\n.embed-responsive-4by3::before {\n  padding-top: 75%; }\n\n.embed-responsive-1by1::before {\n  padding-top: 100%; }\n\n.flex-row {\n  flex-direction: row !important; }\n\n.flex-column {\n  flex-direction: column !important; }\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important; }\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important; }\n\n.flex-wrap {\n  flex-wrap: wrap !important; }\n\n.flex-nowrap {\n  flex-wrap: nowrap !important; }\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important; }\n\n.flex-fill {\n  flex: 1 1 auto !important; }\n\n.flex-grow-0 {\n  flex-grow: 0 !important; }\n\n.flex-grow-1 {\n  flex-grow: 1 !important; }\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important; }\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important; }\n\n.justify-content-start {\n  justify-content: flex-start !important; }\n\n.justify-content-end {\n  justify-content: flex-end !important; }\n\n.justify-content-center {\n  justify-content: center !important; }\n\n.justify-content-between {\n  justify-content: space-between !important; }\n\n.justify-content-around {\n  justify-content: space-around !important; }\n\n.align-items-start {\n  align-items: flex-start !important; }\n\n.align-items-end {\n  align-items: flex-end !important; }\n\n.align-items-center {\n  align-items: center !important; }\n\n.align-items-baseline {\n  align-items: baseline !important; }\n\n.align-items-stretch {\n  align-items: stretch !important; }\n\n.align-content-start {\n  align-content: flex-start !important; }\n\n.align-content-end {\n  align-content: flex-end !important; }\n\n.align-content-center {\n  align-content: center !important; }\n\n.align-content-between {\n  align-content: space-between !important; }\n\n.align-content-around {\n  align-content: space-around !important; }\n\n.align-content-stretch {\n  align-content: stretch !important; }\n\n.align-self-auto {\n  align-self: auto !important; }\n\n.align-self-start {\n  align-self: flex-start !important; }\n\n.align-self-end {\n  align-self: flex-end !important; }\n\n.align-self-center {\n  align-self: center !important; }\n\n.align-self-baseline {\n  align-self: baseline !important; }\n\n.align-self-stretch {\n  align-self: stretch !important; }\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    flex-direction: row !important; }\n  .flex-sm-column {\n    flex-direction: column !important; }\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important; }\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important; }\n  .flex-sm-wrap {\n    flex-wrap: wrap !important; }\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important; }\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important; }\n  .flex-sm-fill {\n    flex: 1 1 auto !important; }\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important; }\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important; }\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important; }\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important; }\n  .justify-content-sm-start {\n    justify-content: flex-start !important; }\n  .justify-content-sm-end {\n    justify-content: flex-end !important; }\n  .justify-content-sm-center {\n    justify-content: center !important; }\n  .justify-content-sm-between {\n    justify-content: space-between !important; }\n  .justify-content-sm-around {\n    justify-content: space-around !important; }\n  .align-items-sm-start {\n    align-items: flex-start !important; }\n  .align-items-sm-end {\n    align-items: flex-end !important; }\n  .align-items-sm-center {\n    align-items: center !important; }\n  .align-items-sm-baseline {\n    align-items: baseline !important; }\n  .align-items-sm-stretch {\n    align-items: stretch !important; }\n  .align-content-sm-start {\n    align-content: flex-start !important; }\n  .align-content-sm-end {\n    align-content: flex-end !important; }\n  .align-content-sm-center {\n    align-content: center !important; }\n  .align-content-sm-between {\n    align-content: space-between !important; }\n  .align-content-sm-around {\n    align-content: space-around !important; }\n  .align-content-sm-stretch {\n    align-content: stretch !important; }\n  .align-self-sm-auto {\n    align-self: auto !important; }\n  .align-self-sm-start {\n    align-self: flex-start !important; }\n  .align-self-sm-end {\n    align-self: flex-end !important; }\n  .align-self-sm-center {\n    align-self: center !important; }\n  .align-self-sm-baseline {\n    align-self: baseline !important; }\n  .align-self-sm-stretch {\n    align-self: stretch !important; } }\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    flex-direction: row !important; }\n  .flex-md-column {\n    flex-direction: column !important; }\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important; }\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important; }\n  .flex-md-wrap {\n    flex-wrap: wrap !important; }\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important; }\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important; }\n  .flex-md-fill {\n    flex: 1 1 auto !important; }\n  .flex-md-grow-0 {\n    flex-grow: 0 !important; }\n  .flex-md-grow-1 {\n    flex-grow: 1 !important; }\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important; }\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important; }\n  .justify-content-md-start {\n    justify-content: flex-start !important; }\n  .justify-content-md-end {\n    justify-content: flex-end !important; }\n  .justify-content-md-center {\n    justify-content: center !important; }\n  .justify-content-md-between {\n    justify-content: space-between !important; }\n  .justify-content-md-around {\n    justify-content: space-around !important; }\n  .align-items-md-start {\n    align-items: flex-start !important; }\n  .align-items-md-end {\n    align-items: flex-end !important; }\n  .align-items-md-center {\n    align-items: center !important; }\n  .align-items-md-baseline {\n    align-items: baseline !important; }\n  .align-items-md-stretch {\n    align-items: stretch !important; }\n  .align-content-md-start {\n    align-content: flex-start !important; }\n  .align-content-md-end {\n    align-content: flex-end !important; }\n  .align-content-md-center {\n    align-content: center !important; }\n  .align-content-md-between {\n    align-content: space-between !important; }\n  .align-content-md-around {\n    align-content: space-around !important; }\n  .align-content-md-stretch {\n    align-content: stretch !important; }\n  .align-self-md-auto {\n    align-self: auto !important; }\n  .align-self-md-start {\n    align-self: flex-start !important; }\n  .align-self-md-end {\n    align-self: flex-end !important; }\n  .align-self-md-center {\n    align-self: center !important; }\n  .align-self-md-baseline {\n    align-self: baseline !important; }\n  .align-self-md-stretch {\n    align-self: stretch !important; } }\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    flex-direction: row !important; }\n  .flex-lg-column {\n    flex-direction: column !important; }\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important; }\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important; }\n  .flex-lg-wrap {\n    flex-wrap: wrap !important; }\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important; }\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important; }\n  .flex-lg-fill {\n    flex: 1 1 auto !important; }\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important; }\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important; }\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important; }\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important; }\n  .justify-content-lg-start {\n    justify-content: flex-start !important; }\n  .justify-content-lg-end {\n    justify-content: flex-end !important; }\n  .justify-content-lg-center {\n    justify-content: center !important; }\n  .justify-content-lg-between {\n    justify-content: space-between !important; }\n  .justify-content-lg-around {\n    justify-content: space-around !important; }\n  .align-items-lg-start {\n    align-items: flex-start !important; }\n  .align-items-lg-end {\n    align-items: flex-end !important; }\n  .align-items-lg-center {\n    align-items: center !important; }\n  .align-items-lg-baseline {\n    align-items: baseline !important; }\n  .align-items-lg-stretch {\n    align-items: stretch !important; }\n  .align-content-lg-start {\n    align-content: flex-start !important; }\n  .align-content-lg-end {\n    align-content: flex-end !important; }\n  .align-content-lg-center {\n    align-content: center !important; }\n  .align-content-lg-between {\n    align-content: space-between !important; }\n  .align-content-lg-around {\n    align-content: space-around !important; }\n  .align-content-lg-stretch {\n    align-content: stretch !important; }\n  .align-self-lg-auto {\n    align-self: auto !important; }\n  .align-self-lg-start {\n    align-self: flex-start !important; }\n  .align-self-lg-end {\n    align-self: flex-end !important; }\n  .align-self-lg-center {\n    align-self: center !important; }\n  .align-self-lg-baseline {\n    align-self: baseline !important; }\n  .align-self-lg-stretch {\n    align-self: stretch !important; } }\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    flex-direction: row !important; }\n  .flex-xl-column {\n    flex-direction: column !important; }\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important; }\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important; }\n  .flex-xl-wrap {\n    flex-wrap: wrap !important; }\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important; }\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important; }\n  .flex-xl-fill {\n    flex: 1 1 auto !important; }\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important; }\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important; }\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important; }\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important; }\n  .justify-content-xl-start {\n    justify-content: flex-start !important; }\n  .justify-content-xl-end {\n    justify-content: flex-end !important; }\n  .justify-content-xl-center {\n    justify-content: center !important; }\n  .justify-content-xl-between {\n    justify-content: space-between !important; }\n  .justify-content-xl-around {\n    justify-content: space-around !important; }\n  .align-items-xl-start {\n    align-items: flex-start !important; }\n  .align-items-xl-end {\n    align-items: flex-end !important; }\n  .align-items-xl-center {\n    align-items: center !important; }\n  .align-items-xl-baseline {\n    align-items: baseline !important; }\n  .align-items-xl-stretch {\n    align-items: stretch !important; }\n  .align-content-xl-start {\n    align-content: flex-start !important; }\n  .align-content-xl-end {\n    align-content: flex-end !important; }\n  .align-content-xl-center {\n    align-content: center !important; }\n  .align-content-xl-between {\n    align-content: space-between !important; }\n  .align-content-xl-around {\n    align-content: space-around !important; }\n  .align-content-xl-stretch {\n    align-content: stretch !important; }\n  .align-self-xl-auto {\n    align-self: auto !important; }\n  .align-self-xl-start {\n    align-self: flex-start !important; }\n  .align-self-xl-end {\n    align-self: flex-end !important; }\n  .align-self-xl-center {\n    align-self: center !important; }\n  .align-self-xl-baseline {\n    align-self: baseline !important; }\n  .align-self-xl-stretch {\n    align-self: stretch !important; } }\n\n.float-left {\n  float: left !important; }\n\n.float-right {\n  float: right !important; }\n\n.float-none {\n  float: none !important; }\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important; }\n  .float-sm-right {\n    float: right !important; }\n  .float-sm-none {\n    float: none !important; } }\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important; }\n  .float-md-right {\n    float: right !important; }\n  .float-md-none {\n    float: none !important; } }\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important; }\n  .float-lg-right {\n    float: right !important; }\n  .float-lg-none {\n    float: none !important; } }\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important; }\n  .float-xl-right {\n    float: right !important; }\n  .float-xl-none {\n    float: none !important; } }\n\n.overflow-auto {\n  overflow: auto !important; }\n\n.overflow-hidden {\n  overflow: hidden !important; }\n\n.position-static {\n  position: static !important; }\n\n.position-relative {\n  position: relative !important; }\n\n.position-absolute {\n  position: absolute !important; }\n\n.position-fixed {\n  position: fixed !important; }\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important; }\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030; }\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030; }\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020; } }\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal; }\n\n.shadow-sm {\n  box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.1) !important; }\n\n.shadow {\n  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1) !important; }\n\n.shadow-lg {\n  box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.1) !important; }\n\n.shadow-none {\n  box-shadow: none !important; }\n\n.w-25 {\n  width: 25% !important; }\n\n.w-50 {\n  width: 50% !important; }\n\n.w-75 {\n  width: 75% !important; }\n\n.w-100 {\n  width: 100% !important; }\n\n.w-auto {\n  width: auto !important; }\n\n.w-15 {\n  width: 15% !important; }\n\n.h-25 {\n  height: 25% !important; }\n\n.h-50 {\n  height: 50% !important; }\n\n.h-75 {\n  height: 75% !important; }\n\n.h-100 {\n  height: 100% !important; }\n\n.h-auto {\n  height: auto !important; }\n\n.h-15 {\n  height: 15% !important; }\n\n.mw-100 {\n  max-width: 100% !important; }\n\n.mh-100 {\n  max-height: 100% !important; }\n\n.min-vw-100 {\n  min-width: 100vw !important; }\n\n.min-vh-100 {\n  min-height: 100vh !important; }\n\n.vw-100 {\n  width: 100vw !important; }\n\n.vh-100 {\n  height: 100vh !important; }\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  pointer-events: auto;\n  content: \"\";\n  background-color: rgba(0, 0, 0, 0); }\n\n.m-0 {\n  margin: 0 !important; }\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important; }\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important; }\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important; }\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important; }\n\n.m-1 {\n  margin: 0.375rem !important; }\n\n.mt-1,\n.my-1 {\n  margin-top: 0.375rem !important; }\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.375rem !important; }\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.375rem !important; }\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.375rem !important; }\n\n.m-2 {\n  margin: 0.75rem !important; }\n\n.mt-2,\n.my-2 {\n  margin-top: 0.75rem !important; }\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.75rem !important; }\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.75rem !important; }\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.75rem !important; }\n\n.m-3 {\n  margin: 1.5rem !important; }\n\n.mt-3,\n.my-3 {\n  margin-top: 1.5rem !important; }\n\n.mr-3,\n.mx-3 {\n  margin-right: 1.5rem !important; }\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1.5rem !important; }\n\n.ml-3,\n.mx-3 {\n  margin-left: 1.5rem !important; }\n\n.m-4 {\n  margin: 2.25rem !important; }\n\n.mt-4,\n.my-4 {\n  margin-top: 2.25rem !important; }\n\n.mr-4,\n.mx-4 {\n  margin-right: 2.25rem !important; }\n\n.mb-4,\n.my-4 {\n  margin-bottom: 2.25rem !important; }\n\n.ml-4,\n.mx-4 {\n  margin-left: 2.25rem !important; }\n\n.m-5 {\n  margin: 4.5rem !important; }\n\n.mt-5,\n.my-5 {\n  margin-top: 4.5rem !important; }\n\n.mr-5,\n.mx-5 {\n  margin-right: 4.5rem !important; }\n\n.mb-5,\n.my-5 {\n  margin-bottom: 4.5rem !important; }\n\n.ml-5,\n.mx-5 {\n  margin-left: 4.5rem !important; }\n\n.p-0 {\n  padding: 0 !important; }\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important; }\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important; }\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important; }\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important; }\n\n.p-1 {\n  padding: 0.375rem !important; }\n\n.pt-1,\n.py-1 {\n  padding-top: 0.375rem !important; }\n\n.pr-1,\n.px-1 {\n  padding-right: 0.375rem !important; }\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.375rem !important; }\n\n.pl-1,\n.px-1 {\n  padding-left: 0.375rem !important; }\n\n.p-2 {\n  padding: 0.75rem !important; }\n\n.pt-2,\n.py-2 {\n  padding-top: 0.75rem !important; }\n\n.pr-2,\n.px-2 {\n  padding-right: 0.75rem !important; }\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.75rem !important; }\n\n.pl-2,\n.px-2 {\n  padding-left: 0.75rem !important; }\n\n.p-3 {\n  padding: 1.5rem !important; }\n\n.pt-3,\n.py-3 {\n  padding-top: 1.5rem !important; }\n\n.pr-3,\n.px-3 {\n  padding-right: 1.5rem !important; }\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1.5rem !important; }\n\n.pl-3,\n.px-3 {\n  padding-left: 1.5rem !important; }\n\n.p-4 {\n  padding: 2.25rem !important; }\n\n.pt-4,\n.py-4 {\n  padding-top: 2.25rem !important; }\n\n.pr-4,\n.px-4 {\n  padding-right: 2.25rem !important; }\n\n.pb-4,\n.py-4 {\n  padding-bottom: 2.25rem !important; }\n\n.pl-4,\n.px-4 {\n  padding-left: 2.25rem !important; }\n\n.p-5 {\n  padding: 4.5rem !important; }\n\n.pt-5,\n.py-5 {\n  padding-top: 4.5rem !important; }\n\n.pr-5,\n.px-5 {\n  padding-right: 4.5rem !important; }\n\n.pb-5,\n.py-5 {\n  padding-bottom: 4.5rem !important; }\n\n.pl-5,\n.px-5 {\n  padding-left: 4.5rem !important; }\n\n.m-n1 {\n  margin: -0.375rem !important; }\n\n.mt-n1,\n.my-n1 {\n  margin-top: -0.375rem !important; }\n\n.mr-n1,\n.mx-n1 {\n  margin-right: -0.375rem !important; }\n\n.mb-n1,\n.my-n1 {\n  margin-bottom: -0.375rem !important; }\n\n.ml-n1,\n.mx-n1 {\n  margin-left: -0.375rem !important; }\n\n.m-n2 {\n  margin: -0.75rem !important; }\n\n.mt-n2,\n.my-n2 {\n  margin-top: -0.75rem !important; }\n\n.mr-n2,\n.mx-n2 {\n  margin-right: -0.75rem !important; }\n\n.mb-n2,\n.my-n2 {\n  margin-bottom: -0.75rem !important; }\n\n.ml-n2,\n.mx-n2 {\n  margin-left: -0.75rem !important; }\n\n.m-n3 {\n  margin: -1.5rem !important; }\n\n.mt-n3,\n.my-n3 {\n  margin-top: -1.5rem !important; }\n\n.mr-n3,\n.mx-n3 {\n  margin-right: -1.5rem !important; }\n\n.mb-n3,\n.my-n3 {\n  margin-bottom: -1.5rem !important; }\n\n.ml-n3,\n.mx-n3 {\n  margin-left: -1.5rem !important; }\n\n.m-n4 {\n  margin: -2.25rem !important; }\n\n.mt-n4,\n.my-n4 {\n  margin-top: -2.25rem !important; }\n\n.mr-n4,\n.mx-n4 {\n  margin-right: -2.25rem !important; }\n\n.mb-n4,\n.my-n4 {\n  margin-bottom: -2.25rem !important; }\n\n.ml-n4,\n.mx-n4 {\n  margin-left: -2.25rem !important; }\n\n.m-n5 {\n  margin: -4.5rem !important; }\n\n.mt-n5,\n.my-n5 {\n  margin-top: -4.5rem !important; }\n\n.mr-n5,\n.mx-n5 {\n  margin-right: -4.5rem !important; }\n\n.mb-n5,\n.my-n5 {\n  margin-bottom: -4.5rem !important; }\n\n.ml-n5,\n.mx-n5 {\n  margin-left: -4.5rem !important; }\n\n.m-auto {\n  margin: auto !important; }\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important; }\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important; }\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important; }\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important; }\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important; }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important; }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important; }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important; }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important; }\n  .m-sm-1 {\n    margin: 0.375rem !important; }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.375rem !important; }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.375rem !important; }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.375rem !important; }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.375rem !important; }\n  .m-sm-2 {\n    margin: 0.75rem !important; }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.75rem !important; }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.75rem !important; }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.75rem !important; }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.75rem !important; }\n  .m-sm-3 {\n    margin: 1.5rem !important; }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1.5rem !important; }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1.5rem !important; }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1.5rem !important; }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1.5rem !important; }\n  .m-sm-4 {\n    margin: 2.25rem !important; }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 2.25rem !important; }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 2.25rem !important; }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 2.25rem !important; }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 2.25rem !important; }\n  .m-sm-5 {\n    margin: 4.5rem !important; }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 4.5rem !important; }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 4.5rem !important; }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 4.5rem !important; }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 4.5rem !important; }\n  .p-sm-0 {\n    padding: 0 !important; }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important; }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important; }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important; }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important; }\n  .p-sm-1 {\n    padding: 0.375rem !important; }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.375rem !important; }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.375rem !important; }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.375rem !important; }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.375rem !important; }\n  .p-sm-2 {\n    padding: 0.75rem !important; }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.75rem !important; }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.75rem !important; }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.75rem !important; }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.75rem !important; }\n  .p-sm-3 {\n    padding: 1.5rem !important; }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1.5rem !important; }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1.5rem !important; }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1.5rem !important; }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1.5rem !important; }\n  .p-sm-4 {\n    padding: 2.25rem !important; }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 2.25rem !important; }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 2.25rem !important; }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 2.25rem !important; }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 2.25rem !important; }\n  .p-sm-5 {\n    padding: 4.5rem !important; }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 4.5rem !important; }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 4.5rem !important; }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 4.5rem !important; }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 4.5rem !important; }\n  .m-sm-n1 {\n    margin: -0.375rem !important; }\n  .mt-sm-n1,\n  .my-sm-n1 {\n    margin-top: -0.375rem !important; }\n  .mr-sm-n1,\n  .mx-sm-n1 {\n    margin-right: -0.375rem !important; }\n  .mb-sm-n1,\n  .my-sm-n1 {\n    margin-bottom: -0.375rem !important; }\n  .ml-sm-n1,\n  .mx-sm-n1 {\n    margin-left: -0.375rem !important; }\n  .m-sm-n2 {\n    margin: -0.75rem !important; }\n  .mt-sm-n2,\n  .my-sm-n2 {\n    margin-top: -0.75rem !important; }\n  .mr-sm-n2,\n  .mx-sm-n2 {\n    margin-right: -0.75rem !important; }\n  .mb-sm-n2,\n  .my-sm-n2 {\n    margin-bottom: -0.75rem !important; }\n  .ml-sm-n2,\n  .mx-sm-n2 {\n    margin-left: -0.75rem !important; }\n  .m-sm-n3 {\n    margin: -1.5rem !important; }\n  .mt-sm-n3,\n  .my-sm-n3 {\n    margin-top: -1.5rem !important; }\n  .mr-sm-n3,\n  .mx-sm-n3 {\n    margin-right: -1.5rem !important; }\n  .mb-sm-n3,\n  .my-sm-n3 {\n    margin-bottom: -1.5rem !important; }\n  .ml-sm-n3,\n  .mx-sm-n3 {\n    margin-left: -1.5rem !important; }\n  .m-sm-n4 {\n    margin: -2.25rem !important; }\n  .mt-sm-n4,\n  .my-sm-n4 {\n    margin-top: -2.25rem !important; }\n  .mr-sm-n4,\n  .mx-sm-n4 {\n    margin-right: -2.25rem !important; }\n  .mb-sm-n4,\n  .my-sm-n4 {\n    margin-bottom: -2.25rem !important; }\n  .ml-sm-n4,\n  .mx-sm-n4 {\n    margin-left: -2.25rem !important; }\n  .m-sm-n5 {\n    margin: -4.5rem !important; }\n  .mt-sm-n5,\n  .my-sm-n5 {\n    margin-top: -4.5rem !important; }\n  .mr-sm-n5,\n  .mx-sm-n5 {\n    margin-right: -4.5rem !important; }\n  .mb-sm-n5,\n  .my-sm-n5 {\n    margin-bottom: -4.5rem !important; }\n  .ml-sm-n5,\n  .mx-sm-n5 {\n    margin-left: -4.5rem !important; }\n  .m-sm-auto {\n    margin: auto !important; }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important; }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important; }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important; }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important; }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important; }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important; }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important; }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important; }\n  .m-md-1 {\n    margin: 0.375rem !important; }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.375rem !important; }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.375rem !important; }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.375rem !important; }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.375rem !important; }\n  .m-md-2 {\n    margin: 0.75rem !important; }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.75rem !important; }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.75rem !important; }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.75rem !important; }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.75rem !important; }\n  .m-md-3 {\n    margin: 1.5rem !important; }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1.5rem !important; }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1.5rem !important; }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1.5rem !important; }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1.5rem !important; }\n  .m-md-4 {\n    margin: 2.25rem !important; }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 2.25rem !important; }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 2.25rem !important; }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 2.25rem !important; }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 2.25rem !important; }\n  .m-md-5 {\n    margin: 4.5rem !important; }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 4.5rem !important; }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 4.5rem !important; }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 4.5rem !important; }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 4.5rem !important; }\n  .p-md-0 {\n    padding: 0 !important; }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important; }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important; }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important; }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important; }\n  .p-md-1 {\n    padding: 0.375rem !important; }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.375rem !important; }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.375rem !important; }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.375rem !important; }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.375rem !important; }\n  .p-md-2 {\n    padding: 0.75rem !important; }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.75rem !important; }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.75rem !important; }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.75rem !important; }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.75rem !important; }\n  .p-md-3 {\n    padding: 1.5rem !important; }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1.5rem !important; }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1.5rem !important; }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1.5rem !important; }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1.5rem !important; }\n  .p-md-4 {\n    padding: 2.25rem !important; }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 2.25rem !important; }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 2.25rem !important; }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 2.25rem !important; }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 2.25rem !important; }\n  .p-md-5 {\n    padding: 4.5rem !important; }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 4.5rem !important; }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 4.5rem !important; }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 4.5rem !important; }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 4.5rem !important; }\n  .m-md-n1 {\n    margin: -0.375rem !important; }\n  .mt-md-n1,\n  .my-md-n1 {\n    margin-top: -0.375rem !important; }\n  .mr-md-n1,\n  .mx-md-n1 {\n    margin-right: -0.375rem !important; }\n  .mb-md-n1,\n  .my-md-n1 {\n    margin-bottom: -0.375rem !important; }\n  .ml-md-n1,\n  .mx-md-n1 {\n    margin-left: -0.375rem !important; }\n  .m-md-n2 {\n    margin: -0.75rem !important; }\n  .mt-md-n2,\n  .my-md-n2 {\n    margin-top: -0.75rem !important; }\n  .mr-md-n2,\n  .mx-md-n2 {\n    margin-right: -0.75rem !important; }\n  .mb-md-n2,\n  .my-md-n2 {\n    margin-bottom: -0.75rem !important; }\n  .ml-md-n2,\n  .mx-md-n2 {\n    margin-left: -0.75rem !important; }\n  .m-md-n3 {\n    margin: -1.5rem !important; }\n  .mt-md-n3,\n  .my-md-n3 {\n    margin-top: -1.5rem !important; }\n  .mr-md-n3,\n  .mx-md-n3 {\n    margin-right: -1.5rem !important; }\n  .mb-md-n3,\n  .my-md-n3 {\n    margin-bottom: -1.5rem !important; }\n  .ml-md-n3,\n  .mx-md-n3 {\n    margin-left: -1.5rem !important; }\n  .m-md-n4 {\n    margin: -2.25rem !important; }\n  .mt-md-n4,\n  .my-md-n4 {\n    margin-top: -2.25rem !important; }\n  .mr-md-n4,\n  .mx-md-n4 {\n    margin-right: -2.25rem !important; }\n  .mb-md-n4,\n  .my-md-n4 {\n    margin-bottom: -2.25rem !important; }\n  .ml-md-n4,\n  .mx-md-n4 {\n    margin-left: -2.25rem !important; }\n  .m-md-n5 {\n    margin: -4.5rem !important; }\n  .mt-md-n5,\n  .my-md-n5 {\n    margin-top: -4.5rem !important; }\n  .mr-md-n5,\n  .mx-md-n5 {\n    margin-right: -4.5rem !important; }\n  .mb-md-n5,\n  .my-md-n5 {\n    margin-bottom: -4.5rem !important; }\n  .ml-md-n5,\n  .mx-md-n5 {\n    margin-left: -4.5rem !important; }\n  .m-md-auto {\n    margin: auto !important; }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important; }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important; }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important; }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important; }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important; }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important; }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important; }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important; }\n  .m-lg-1 {\n    margin: 0.375rem !important; }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.375rem !important; }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.375rem !important; }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.375rem !important; }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.375rem !important; }\n  .m-lg-2 {\n    margin: 0.75rem !important; }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.75rem !important; }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.75rem !important; }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.75rem !important; }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.75rem !important; }\n  .m-lg-3 {\n    margin: 1.5rem !important; }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1.5rem !important; }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1.5rem !important; }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1.5rem !important; }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1.5rem !important; }\n  .m-lg-4 {\n    margin: 2.25rem !important; }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 2.25rem !important; }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 2.25rem !important; }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 2.25rem !important; }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 2.25rem !important; }\n  .m-lg-5 {\n    margin: 4.5rem !important; }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 4.5rem !important; }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 4.5rem !important; }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 4.5rem !important; }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 4.5rem !important; }\n  .p-lg-0 {\n    padding: 0 !important; }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important; }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important; }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important; }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important; }\n  .p-lg-1 {\n    padding: 0.375rem !important; }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.375rem !important; }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.375rem !important; }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.375rem !important; }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.375rem !important; }\n  .p-lg-2 {\n    padding: 0.75rem !important; }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.75rem !important; }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.75rem !important; }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.75rem !important; }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.75rem !important; }\n  .p-lg-3 {\n    padding: 1.5rem !important; }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1.5rem !important; }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1.5rem !important; }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1.5rem !important; }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1.5rem !important; }\n  .p-lg-4 {\n    padding: 2.25rem !important; }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 2.25rem !important; }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 2.25rem !important; }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 2.25rem !important; }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 2.25rem !important; }\n  .p-lg-5 {\n    padding: 4.5rem !important; }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 4.5rem !important; }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 4.5rem !important; }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 4.5rem !important; }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 4.5rem !important; }\n  .m-lg-n1 {\n    margin: -0.375rem !important; }\n  .mt-lg-n1,\n  .my-lg-n1 {\n    margin-top: -0.375rem !important; }\n  .mr-lg-n1,\n  .mx-lg-n1 {\n    margin-right: -0.375rem !important; }\n  .mb-lg-n1,\n  .my-lg-n1 {\n    margin-bottom: -0.375rem !important; }\n  .ml-lg-n1,\n  .mx-lg-n1 {\n    margin-left: -0.375rem !important; }\n  .m-lg-n2 {\n    margin: -0.75rem !important; }\n  .mt-lg-n2,\n  .my-lg-n2 {\n    margin-top: -0.75rem !important; }\n  .mr-lg-n2,\n  .mx-lg-n2 {\n    margin-right: -0.75rem !important; }\n  .mb-lg-n2,\n  .my-lg-n2 {\n    margin-bottom: -0.75rem !important; }\n  .ml-lg-n2,\n  .mx-lg-n2 {\n    margin-left: -0.75rem !important; }\n  .m-lg-n3 {\n    margin: -1.5rem !important; }\n  .mt-lg-n3,\n  .my-lg-n3 {\n    margin-top: -1.5rem !important; }\n  .mr-lg-n3,\n  .mx-lg-n3 {\n    margin-right: -1.5rem !important; }\n  .mb-lg-n3,\n  .my-lg-n3 {\n    margin-bottom: -1.5rem !important; }\n  .ml-lg-n3,\n  .mx-lg-n3 {\n    margin-left: -1.5rem !important; }\n  .m-lg-n4 {\n    margin: -2.25rem !important; }\n  .mt-lg-n4,\n  .my-lg-n4 {\n    margin-top: -2.25rem !important; }\n  .mr-lg-n4,\n  .mx-lg-n4 {\n    margin-right: -2.25rem !important; }\n  .mb-lg-n4,\n  .my-lg-n4 {\n    margin-bottom: -2.25rem !important; }\n  .ml-lg-n4,\n  .mx-lg-n4 {\n    margin-left: -2.25rem !important; }\n  .m-lg-n5 {\n    margin: -4.5rem !important; }\n  .mt-lg-n5,\n  .my-lg-n5 {\n    margin-top: -4.5rem !important; }\n  .mr-lg-n5,\n  .mx-lg-n5 {\n    margin-right: -4.5rem !important; }\n  .mb-lg-n5,\n  .my-lg-n5 {\n    margin-bottom: -4.5rem !important; }\n  .ml-lg-n5,\n  .mx-lg-n5 {\n    margin-left: -4.5rem !important; }\n  .m-lg-auto {\n    margin: auto !important; }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important; }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important; }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important; }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important; }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important; }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important; }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important; }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important; }\n  .m-xl-1 {\n    margin: 0.375rem !important; }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.375rem !important; }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.375rem !important; }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.375rem !important; }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.375rem !important; }\n  .m-xl-2 {\n    margin: 0.75rem !important; }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.75rem !important; }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.75rem !important; }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.75rem !important; }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.75rem !important; }\n  .m-xl-3 {\n    margin: 1.5rem !important; }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1.5rem !important; }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1.5rem !important; }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1.5rem !important; }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1.5rem !important; }\n  .m-xl-4 {\n    margin: 2.25rem !important; }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 2.25rem !important; }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 2.25rem !important; }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 2.25rem !important; }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 2.25rem !important; }\n  .m-xl-5 {\n    margin: 4.5rem !important; }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 4.5rem !important; }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 4.5rem !important; }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 4.5rem !important; }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 4.5rem !important; }\n  .p-xl-0 {\n    padding: 0 !important; }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important; }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important; }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important; }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important; }\n  .p-xl-1 {\n    padding: 0.375rem !important; }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.375rem !important; }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.375rem !important; }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.375rem !important; }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.375rem !important; }\n  .p-xl-2 {\n    padding: 0.75rem !important; }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.75rem !important; }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.75rem !important; }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.75rem !important; }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.75rem !important; }\n  .p-xl-3 {\n    padding: 1.5rem !important; }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1.5rem !important; }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1.5rem !important; }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1.5rem !important; }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1.5rem !important; }\n  .p-xl-4 {\n    padding: 2.25rem !important; }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 2.25rem !important; }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 2.25rem !important; }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 2.25rem !important; }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 2.25rem !important; }\n  .p-xl-5 {\n    padding: 4.5rem !important; }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 4.5rem !important; }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 4.5rem !important; }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 4.5rem !important; }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 4.5rem !important; }\n  .m-xl-n1 {\n    margin: -0.375rem !important; }\n  .mt-xl-n1,\n  .my-xl-n1 {\n    margin-top: -0.375rem !important; }\n  .mr-xl-n1,\n  .mx-xl-n1 {\n    margin-right: -0.375rem !important; }\n  .mb-xl-n1,\n  .my-xl-n1 {\n    margin-bottom: -0.375rem !important; }\n  .ml-xl-n1,\n  .mx-xl-n1 {\n    margin-left: -0.375rem !important; }\n  .m-xl-n2 {\n    margin: -0.75rem !important; }\n  .mt-xl-n2,\n  .my-xl-n2 {\n    margin-top: -0.75rem !important; }\n  .mr-xl-n2,\n  .mx-xl-n2 {\n    margin-right: -0.75rem !important; }\n  .mb-xl-n2,\n  .my-xl-n2 {\n    margin-bottom: -0.75rem !important; }\n  .ml-xl-n2,\n  .mx-xl-n2 {\n    margin-left: -0.75rem !important; }\n  .m-xl-n3 {\n    margin: -1.5rem !important; }\n  .mt-xl-n3,\n  .my-xl-n3 {\n    margin-top: -1.5rem !important; }\n  .mr-xl-n3,\n  .mx-xl-n3 {\n    margin-right: -1.5rem !important; }\n  .mb-xl-n3,\n  .my-xl-n3 {\n    margin-bottom: -1.5rem !important; }\n  .ml-xl-n3,\n  .mx-xl-n3 {\n    margin-left: -1.5rem !important; }\n  .m-xl-n4 {\n    margin: -2.25rem !important; }\n  .mt-xl-n4,\n  .my-xl-n4 {\n    margin-top: -2.25rem !important; }\n  .mr-xl-n4,\n  .mx-xl-n4 {\n    margin-right: -2.25rem !important; }\n  .mb-xl-n4,\n  .my-xl-n4 {\n    margin-bottom: -2.25rem !important; }\n  .ml-xl-n4,\n  .mx-xl-n4 {\n    margin-left: -2.25rem !important; }\n  .m-xl-n5 {\n    margin: -4.5rem !important; }\n  .mt-xl-n5,\n  .my-xl-n5 {\n    margin-top: -4.5rem !important; }\n  .mr-xl-n5,\n  .mx-xl-n5 {\n    margin-right: -4.5rem !important; }\n  .mb-xl-n5,\n  .my-xl-n5 {\n    margin-bottom: -4.5rem !important; }\n  .ml-xl-n5,\n  .mx-xl-n5 {\n    margin-left: -4.5rem !important; }\n  .m-xl-auto {\n    margin: auto !important; }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important; }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important; }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important; }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important; } }\n\n.text-monospace {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important; }\n\n.text-justify {\n  text-align: justify !important; }\n\n.text-wrap {\n  white-space: normal !important; }\n\n.text-nowrap {\n  white-space: nowrap !important; }\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap; }\n\n.text-left {\n  text-align: left !important; }\n\n.text-right {\n  text-align: right !important; }\n\n.text-center {\n  text-align: center !important; }\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important; }\n  .text-sm-right {\n    text-align: right !important; }\n  .text-sm-center {\n    text-align: center !important; } }\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important; }\n  .text-md-right {\n    text-align: right !important; }\n  .text-md-center {\n    text-align: center !important; } }\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important; }\n  .text-lg-right {\n    text-align: right !important; }\n  .text-lg-center {\n    text-align: center !important; } }\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important; }\n  .text-xl-right {\n    text-align: right !important; }\n  .text-xl-center {\n    text-align: center !important; } }\n\n.text-lowercase {\n  text-transform: lowercase !important; }\n\n.text-uppercase {\n  text-transform: uppercase !important; }\n\n.text-capitalize {\n  text-transform: capitalize !important; }\n\n.font-weight-light {\n  font-weight: 300 !important; }\n\n.font-weight-lighter {\n  font-weight: lighter !important; }\n\n.font-weight-normal {\n  font-weight: 400 !important; }\n\n.font-weight-bold {\n  font-weight: 500 !important; }\n\n.font-weight-bolder {\n  font-weight: bolder !important; }\n\n.font-italic {\n  font-style: italic !important; }\n\n.text-white {\n  color: #fff !important; }\n\n.text-primary {\n  color: #4582EC !important; }\n\na.text-primary:hover, a.text-primary:focus {\n  color: #1559cf !important; }\n\n.text-secondary {\n  color: #6c757d !important; }\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #494f54 !important; }\n\n.text-success {\n  color: #02B875 !important; }\n\na.text-success:hover, a.text-success:focus {\n  color: #016c45 !important; }\n\n.text-info {\n  color: #17a2b8 !important; }\n\na.text-info:hover, a.text-info:focus {\n  color: #0f6674 !important; }\n\n.text-warning {\n  color: #f0ad4e !important; }\n\na.text-warning:hover, a.text-warning:focus {\n  color: #df8a13 !important; }\n\n.text-danger {\n  color: #d9534f !important; }\n\na.text-danger:hover, a.text-danger:focus {\n  color: #b52b27 !important; }\n\n.text-light {\n  color: #f8f9fa !important; }\n\na.text-light:hover, a.text-light:focus {\n  color: #cbd3da !important; }\n\n.text-dark {\n  color: #212529 !important; }\n\na.text-dark:hover, a.text-dark:focus {\n  color: black !important; }\n\n.text-body {\n  color: #495057 !important; }\n\n.text-muted {\n  color: #6c757d !important; }\n\n.text-black-50 {\n  color: rgba(0, 0, 0, 0.5) !important; }\n\n.text-white-50 {\n  color: rgba(255, 255, 255, 0.5) !important; }\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0; }\n\n.text-decoration-none {\n  text-decoration: none !important; }\n\n.text-break {\n  word-break: break-word !important;\n  overflow-wrap: break-word !important; }\n\n.text-reset {\n  color: inherit !important; }\n\n.visible {\n  visibility: visible !important; }\n\n.invisible {\n  visibility: hidden !important; }\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    box-shadow: none !important; }\n  a:not(.btn) {\n    text-decoration: underline; }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\"; }\n  pre {\n    white-space: pre-wrap !important; }\n  pre,\n  blockquote {\n    border: 1px solid #adb5bd;\n    page-break-inside: avoid; }\n  thead {\n    display: table-header-group; }\n  tr,\n  img {\n    page-break-inside: avoid; }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n  h2,\n  h3 {\n    page-break-after: avoid; }\n  @page {\n    size: a3; }\n  body {\n    min-width: 992px !important; }\n  .container {\n    min-width: 992px !important; }\n  .navbar {\n    display: none; }\n  .badge {\n    border: 1px solid #000; }\n  .table {\n    border-collapse: collapse !important; }\n    .table td,\n    .table th {\n      background-color: #fff !important; }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6 !important; }\n  .table-dark {\n    color: inherit; }\n    .table-dark th,\n    .table-dark td,\n    .table-dark thead th,\n    .table-dark tbody + tbody {\n      border-color: #dee2e6; }\n  .table .thead-dark th {\n    color: inherit;\n    border-color: #dee2e6; } }\n\nsection {\n  position: relative; }\n\n.bg-image {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 0; }\n  .bg-image + .card-body {\n    position: relative;\n    z-index: 1; }\n\nimg.bg-image {\n  object-fit: cover; }\n\n.btn-link {\n  font-weight: 500; }\n\n.btn-warning {\n  color: #fff; }\n\n.btn-outline-primary:not(:hover):not([aria-expanded=\"true\"]):not([aria-pressed=\"true\"]), .btn-outline-secondary:not(:hover):not([aria-expanded=\"true\"]):not([aria-pressed=\"true\"]) {\n  border-color: #ced4da; }\n\n.btn-sm, .btn-group-sm > .btn {\n  font-size: 0.75rem; }\n\n.btn-lg, .btn-group-lg > .btn {\n  font-size: 1rem; }\n\n.btn.disabled, .btn:disabled {\n  opacity: .35; }\n\n.btn-light {\n  color: #4582EC; }\n  .btn-light:hover {\n    color: #4582EC; }\n\n[class*='btn-outline'].active, [class*='btn-outline']:active {\n  color: #fff !important; }\n\nbutton.btn-outline-primary[aria-expanded=\"true\"], button.btn-outline-primary:active {\n  color: #fff !important; }\n\n.bg-gradient .btn-light {\n  background: rgba(255, 255, 255, 0.3);\n  border-color: rgba(255, 255, 255, 0);\n  color: #fff; }\n  .bg-gradient .btn-light:hover {\n    background: #fff;\n    color: #4582EC; }\n\n.card {\n  margin-bottom: 1.5rem; }\n\na.card {\n  color: #495057; }\n  a.card[data-toggle=\"tab\"]:hover {\n    transform: none !important; }\n\n.card.row {\n  margin-left: 0;\n  margin-right: 0; }\n  .card.row > [class*='col']:not(.card-body) {\n    padding-left: 0;\n    padding-right: 0; }\n\n@media (min-width: 768px) {\n  .card.row > [class*='col']:not(.card-body):nth-child(2):last-child {\n    border-left: 1px solid #dee2e6; } }\n\n.bg-dark .card:not(.bg-dark), .bg-gradient .card:not(.bg-dark) {\n  color: #495057; }\n  .bg-dark .card:not(.bg-dark) h1, .bg-dark .card:not(.bg-dark) h2, .bg-dark .card:not(.bg-dark) h3, .bg-dark .card:not(.bg-dark) h4, .bg-dark .card:not(.bg-dark) h5, .bg-dark .card:not(.bg-dark) h6, .bg-dark .card:not(.bg-dark) .h1, .bg-dark .card:not(.bg-dark) .h2, .bg-dark .card:not(.bg-dark) .h3, .bg-dark .card:not(.bg-dark) .h4, .bg-dark .card:not(.bg-dark) .h5, .bg-dark .card:not(.bg-dark) .h6, .bg-dark .card:not(.bg-dark) .display-1, .bg-dark .card:not(.bg-dark) .display-2, .bg-dark .card:not(.bg-dark) .display-3, .bg-dark .card:not(.bg-dark) .display-4, .bg-gradient .card:not(.bg-dark) h1, .bg-gradient .card:not(.bg-dark) h2, .bg-gradient .card:not(.bg-dark) h3, .bg-gradient .card:not(.bg-dark) h4, .bg-gradient .card:not(.bg-dark) h5, .bg-gradient .card:not(.bg-dark) h6, .bg-gradient .card:not(.bg-dark) .h1, .bg-gradient .card:not(.bg-dark) .h2, .bg-gradient .card:not(.bg-dark) .h3, .bg-gradient .card:not(.bg-dark) .h4, .bg-gradient .card:not(.bg-dark) .h5, .bg-gradient .card:not(.bg-dark) .h6, .bg-gradient .card:not(.bg-dark) .display-1, .bg-gradient .card:not(.bg-dark) .display-2, .bg-gradient .card:not(.bg-dark) .display-3, .bg-gradient .card:not(.bg-dark) .display-4 {\n    color: #343a40; }\n\n.card > .bg-image {\n  border-radius: 0.25rem; }\n\n@media (max-width: 575.98px) {\n  .card {\n    margin-bottom: 0.75rem; } }\n\n.card-header {\n  padding: 1.125rem 1.5rem; }\n  .card-header h6, .card-header .h6 {\n    margin: 0;\n    display: inline-block; }\n\n.card-header, .card-footer {\n  background: none; }\n\n.card > .list-group > .list-group-item:not(:first-child) {\n  border-top: 1px solid #e9ecef; }\n\n.card > .list-group > .list-group-item > .media:only-child {\n  padding: 0.375rem 0; }\n\n.card > .list-group > a.list-group-item {\n  color: #495057;\n  background: #fff;\n  transition: background-color .2s ease; }\n  .card > .list-group > a.list-group-item:hover {\n    background-color: #f8f9fa; }\n\n.card > .list-group + .card-footer {\n  border-top: none; }\n\n.card-header + .list-group-flush > .list-group-item:first-child {\n  border-top: none; }\n\nh5.card-title {\n  line-height: 1.5rem; }\n\n@media (min-width: 768px) {\n  .card-body[class*='col-']:nth-child(2) {\n    border-radius: 0 0.25rem 0.25rem 0; } }\n\n.card-body.overflow-auto {\n  max-height: 500px;\n  max-width: 100%; }\n\n@media (max-width: 991.98px) {\n  .card.flex-row .col-auto {\n    max-width: 100%; } }\n\n.card-sm .card-header, .card-sm .card-footer {\n  padding: 0.75rem 1.5rem; }\n\n.card-sm .card-body {\n  padding: 0.75rem 1.5rem; }\n\n.card-sm .card-img-overlay {\n  padding: 1rem; }\n\n@media (min-width: 992px) {\n  .card-lg .card-header, .card-lg .card-footer {\n    padding: 1rem 2.25rem; }\n  .card-lg .card-body {\n    padding: 2.25rem; } }\n\n@media (min-width: 576px) {\n  p + .card {\n    margin-top: 2.25rem; } }\n\n.card-borderless {\n  border: none; }\n\n.card-header-borderless {\n  border-bottom: none;\n  padding-bottom: 0 !important; }\n\n.card-footer-borderless {\n  border-top: none;\n  padding-top: 0 !important; }\n\na.card {\n  box-shadow: 0px 0px 0px rgba(0, 0, 0, 0);\n  transition: transform .2s ease, box-shadow .2s ease; }\n  a.card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.08); }\n\n.card iframe {\n  border: none;\n  outline: none; }\n\n.tab-content:not([class*='col']) {\n  padding-left: 0; }\n\n.card[data-toggle=\"tab\"] {\n  cursor: pointer;\n  transition: background-color .35s ease, border-color .35s ease; }\n  .card[data-toggle=\"tab\"]:not([aria-selected=\"true\"]) {\n    background-color: transparent;\n    border-color: transparent; }\n    .card[data-toggle=\"tab\"]:not([aria-selected=\"true\"]):hover {\n      background-color: #f2f4f6; }\n\n.nav-cards > li {\n  width: 100%; }\n\n.card .form-group label {\n  color: #343a40 !important; }\n\n.card .form-group small {\n  color: #495057; }\n\n.card-profile-large .card-header {\n  position: relative;\n  overflow: hidden;\n  height: 10.5rem; }\n  .card-profile-large .card-header *:not(.bg-image) {\n    position: relative; }\n\n.card-profile-large .card-body {\n  margin-top: -4.5rem;\n  position: relative;\n  z-index: 2; }\n  .card-profile-large .card-body .avatar {\n    border: 2px solid #fff; }\n\n.bg-dark h1, .bg-dark h2, .bg-dark h3, .bg-dark h4, .bg-dark h5, .bg-dark h6, .bg-dark .h1, .bg-dark .h2, .bg-dark .h3, .bg-dark .h4, .bg-dark .h5, .bg-dark .h6, .bg-dark .display-1, .bg-dark .display-2, .bg-dark .display-3, .bg-dark .display-4, .text-light h1, .text-light h2, .text-light h3, .text-light h4, .text-light h5, .text-light h6, .text-light .h1, .text-light .h2, .text-light .h3, .text-light .h4, .text-light .h5, .text-light .h6, .text-light .display-1, .text-light .display-2, .text-light .display-3, .text-light .display-4, .bg-gray h1, .bg-gray h2, .bg-gray h3, .bg-gray h4, .bg-gray h5, .bg-gray h6, .bg-gray .h1, .bg-gray .h2, .bg-gray .h3, .bg-gray .h4, .bg-gray .h5, .bg-gray .h6, .bg-gray .display-1, .bg-gray .display-2, .bg-gray .display-3, .bg-gray .display-4, .text-white h1, .text-white h2, .text-white h3, .text-white h4, .text-white h5, .text-white h6, .text-white .h1, .text-white .h2, .text-white .h3, .text-white .h4, .text-white .h5, .text-white .h6, .text-white .display-1, .text-white .display-2, .text-white .display-3, .text-white .display-4, .bg-gradient h1, .bg-gradient h2, .bg-gradient h3, .bg-gradient h4, .bg-gradient h5, .bg-gradient h6, .bg-gradient .h1, .bg-gradient .h2, .bg-gradient .h3, .bg-gradient .h4, .bg-gradient .h5, .bg-gradient .h6, .bg-gradient .display-1, .bg-gradient .display-2, .bg-gradient .display-3, .bg-gradient .display-4 {\n  color: #fff; }\n\n.bg-dark, .bg-gray {\n  color: #ced4da; }\n  .bg-dark .title-decorative, .bg-gray .title-decorative {\n    color: #495057; }\n  .bg-dark .text-muted, .bg-gray .text-muted {\n    color: #495057 !important; }\n\n.bg-gradient {\n  color: #fff; }\n\n.bg-gray {\n  background: #343a40; }\n  .bg-gray .text-muted {\n    color: #6c757d !important; }\n\n.bg-secondary {\n  background: #e9ecef !important; }\n\n.text-light .text-muted {\n  color: rgba(255, 255, 255, 0.75) !important; }\n\n.text-light .title-decorative {\n  color: #fff; }\n\n.text-light a {\n  color: #adb5bd;\n  transition: color .2s ease; }\n  .text-light a:hover {\n    color: #fff; }\n\na.text-white {\n  font-weight: 500;\n  transition: opacity .2s ease; }\n  a.text-white:hover {\n    opacity: .75; }\n\n.text-body {\n  color: #495057 !important; }\n\n.bg-dark .form-group label {\n  color: #fff; }\n\n.bg-dark .form-group small {\n  color: #6c757d; }\n\n.text-white .form-group small {\n  color: #fff; }\n\n.bg-gradient {\n  background: linear-gradient(135deg, #6f42c1 0%, #4582EC 100%); }\n\n.text-blue {\n  color: #4582EC !important; }\n\n.text-indigo {\n  color: #6610f2 !important; }\n\n.text-purple {\n  color: #6f42c1 !important; }\n\n.text-pink {\n  color: #e83e8c !important; }\n\n.text-red {\n  color: #d9534f !important; }\n\n.text-orange {\n  color: #fd7e14 !important; }\n\n.text-yellow {\n  color: #f0ad4e !important; }\n\n.text-green {\n  color: #02B875 !important; }\n\n.text-teal {\n  color: #20c997 !important; }\n\n.text-cyan {\n  color: #17a2b8 !important; }\n\n.text-white {\n  color: #fff !important; }\n\n.text-gray {\n  color: #6c757d !important; }\n\n.text-gray-dark {\n  color: #343a40 !important; }\n\n.footer-long {\n  font-size: .875rem;\n  padding: 4.5rem 0 7.5rem 0; }\n  .footer-long .h5 {\n    margin-bottom: 3rem; }\n\n@media (max-width: 991.98px) {\n  .footer-long {\n    padding: 3rem 0; } }\n\n@media (max-width: 575.98px) {\n  .footer-long .h5 {\n    margin-top: 1.5rem;\n    margin-bottom: 1.5rem; } }\n\n.footer-short {\n  padding-bottom: 1.5rem; }\n  .footer-short hr {\n    margin: 0; }\n  .footer-short nav {\n    padding-top: 1.5rem;\n    margin-bottom: 0.75rem; }\n  .footer-short small {\n    color: #adb5bd; }\n  .footer-short .list-inline-item a {\n    color: #adb5bd;\n    transition: color .2s ease; }\n    .footer-short .list-inline-item a:hover {\n      color: #495057; }\n\nul:last-child, dl:last-child, ol:last-child {\n  margin-bottom: 0; }\n\n.list-inline > .list-inline-item:not(:last-child) {\n  margin-right: 0.75rem; }\n\n.list-inline.list-inline-large > .list-inline-item:not(:last-child) {\n  margin-right: 3rem; }\n\n@media (max-width: 767.98px) {\n  .list-inline.list-inline-large > .list-inline-item:not(:last-child) {\n    margin-right: 1.5rem; } }\n\n.list-spacing-sm > li:not(:last-child) {\n  margin-bottom: 0.75rem; }\n\n.list-inline.list-spacing-sm > .list-inline-item {\n  margin-bottom: 0;\n  margin-right: 0.25rem; }\n\n.list-links > li > a {\n  color: #343a40;\n  transition: opacity .2s ease; }\n  .list-links > li > a:not(:hover) {\n    opacity: .5; }\n\n.bg-dark .list-links > li > a {\n  color: #fff; }\n\n@media (max-width: 767.98px) {\n  [class*='col'] > .media:only-child {\n    margin-bottom: 1.5rem; } }\n\n.nav-link {\n  transition: color .35s ease; }\n  .nav-link:focus {\n    outline: none; }\n\n.container > .navbar {\n  padding-left: 0;\n  padding-right: 0; }\n\n.navbar .row {\n  width: 100%; }\n\n.navbar.bg-dark .navbar-nav .nav-item > a:not(.nav-link) {\n  font-weight: 500;\n  color: #fff; }\n\n.navbar-dark .nav-item > * {\n  color: #fff; }\n\n.navbar-dark .nav-item > a:not(.nav-link) {\n  font-weight: 500; }\n\n.navbar-nav.nav-fill {\n  flex-grow: 1; }\n\n.navbar-dark .navbar-toggler i {\n  color: #fff; }\n\n@media (max-width: 767.98px) {\n  .navbar .form-inline:not(:last-child) {\n    margin-bottom: 0.75rem; } }\n\n.navbar-container .position-absolute, .navbar-container .position-fixed {\n  z-index: 1020;\n  width: 100%;\n  top: 0; }\n\n@media (max-width: 1199.98px) {\n  .navbar-container .position-absolute {\n    position: relative !important; }\n    .navbar-container .position-absolute.navbar-dark {\n      background: #212529; } }\n\n@media (min-width: 992px) {\n  .container-fluid {\n    padding-left: 3rem;\n    padding-right: 3rem; } }\n\nsection {\n  padding: 3rem 0; }\n\n@media (min-width: 576px) {\n  section {\n    padding: 4.5rem 0; } }\n\n.space-0 {\n  padding: 0; }\n\n.space-xxs {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem; }\n\n.space-xs {\n  padding-top: 1.5rem;\n  padding-bottom: 1.5rem; }\n\n.space-sm {\n  padding-top: 3rem;\n  padding-bottom: 3rem; }\n\n@media (min-width: 992px) {\n  .space-lg {\n    padding-top: 7.5rem;\n    padding-bottom: 7.5rem; }\n  .space-xlg {\n    padding-top: 10.5rem;\n    padding-bottom: 10.5rem; } }\n\n@media (max-width: 1199.98px) {\n  .space-lg {\n    padding-top: 3rem;\n    padding-bottom: 3rem; }\n  .space-xlg {\n    padding-top: 4.5rem;\n    padding-bottom: 4.5rem; } }\n\n@media (max-width: 1199.98px) {\n  .main-container > section.space-xlg:first-child {\n    padding-top: 7.5rem; } }\n\nsection:not([class*='bg-']) + section:not([class*='bg-']) {\n  border-top: 1px solid #e9ecef; }\n\nsection.bg-dark + section.bg-dark {\n  border-top: 1px solid #343a40; }\n\n@media (max-width: 575.98px) {\n  .mb-5 {\n    margin-bottom: 1.5rem !important; } }\n\nsection + section.flush-with-above {\n  border-top: none !important;\n  padding-top: 0; }\n\n[class*='mt--'], [class*='mb--'] {\n  position: relative;\n  z-index: 2; }\n\n@media (min-width: 992px) {\n  .mt--8 {\n    margin-top: -8rem; }\n  .mb--8 {\n    margin-bottom: -8rem; } }\n\nbody {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  text-rendering: optimizeLegibility; }\n\n@media (max-width: 991.98px) {\n  html {\n    font-size: 0.875rem; } }\n\nh1, .h1 {\n  font-weight: 300;\n  line-height: 3rem; }\n\nh2, .h2 {\n  line-height: 2.5rem; }\n\nh3, .h3 {\n  line-height: 2.25rem; }\n\nh4, .h4 {\n  line-height: 1.875rem;\n  margin-bottom: 3rem; }\n\nh5, .h5 {\n  line-height: 1.875rem;\n  margin-bottom: 0.75rem; }\n\nh6, .h6 {\n  line-height: 1.5rem;\n  margin-bottom: 0.75rem; }\n\nh1:last-child, .h1:last-child, h2:last-child, .h2:last-child, h3:last-child, .h3:last-child, h4:last-child, .h4:last-child, h5:last-child, .h5:last-child, h6:last-child, .h6:last-child {\n  margin-bottom: 0; }\n\n@media (max-width: 575.98px) {\n  h1, .h1 {\n    font-size: 2rem;\n    line-height: 2.5rem; }\n  h2, .h2 {\n    font-size: 1.75rem;\n    line-height: 2.25rem; } }\n\n.h1, .h2, .h3, .h4, .h5, .h6, .display-1, .display-2, .display-3, .display-4 {\n  display: block; }\n\n.display-1, .display-2, .display-3, .display-4 {\n  margin-bottom: 1.5rem;\n  color: #343a40; }\n\n.display-1 {\n  line-height: 6rem; }\n\n.display-2 {\n  line-height: 6rem; }\n\n.display-3 {\n  line-height: 4.5rem; }\n\n.display-4 {\n  line-height: 4rem; }\n\n@media (max-width: 575.98px) {\n  .display-1 {\n    font-size: 5.5rem; }\n  .display-2 {\n    font-size: 4.5rem;\n    line-height: 4.5rem; }\n  .display-3 {\n    font-size: 3.5rem;\n    line-height: 4rem; }\n  .display-4 {\n    font-size: 2.5rem;\n    line-height: 3rem; } }\n\nhr {\n  margin: 2.25rem 0; }\n\n@media (max-width: 767.98px) {\n  hr {\n    margin: 1.5rem 0; } }\n\nhr.short {\n  width: 3rem;\n  margin: 1.5rem 0; }\n\n.blockquote {\n  text-align: center; }\n  .blockquote .h4 {\n    line-height: 2.25rem; }\n\nabbr[title] {\n  -webkit-text-decoration: underline dotted; }\n\np:last-child {\n  margin-bottom: 0; }\n\n.text-small, h6 + p, h6 + p + a, h6 + span, .h6 + span {\n  font-size: 0.875rem; }\n\n.lead {\n  margin-bottom: 1.5rem;\n  line-height: 1.875rem;\n  display: block;\n  font-weight: 400; }\n\n@media (max-width: 575.98px) {\n  .lead {\n    font-size: 1.125rem;\n    line-height: 1.75rem; } }\n\nsmall {\n  line-height: 1.5;\n  display: inline-block; }\n\nh6 + small, .h6 + small, h5 + small, .h5 + small {\n  position: relative;\n  bottom: .25rem; }\n\ndt {\n  font-weight: 500; }\n\n.opacity-0 {\n  opacity: 0; }\n\n.opacity-10 {\n  opacity: 0.1; }\n\n.opacity-20 {\n  opacity: 0.2; }\n\n.opacity-30 {\n  opacity: 0.3; }\n\n.opacity-40 {\n  opacity: 0.4; }\n\n.opacity-50 {\n  opacity: 0.5; }\n\n.opacity-60 {\n  opacity: 0.6; }\n\n.opacity-70 {\n  opacity: 0.7; }\n\n.opacity-80 {\n  opacity: 0.8; }\n\n.opacity-90 {\n  opacity: 0.9; }\n\n[class*='height-'] {\n  display: flex; }\n  [class*='height-'] > .container {\n    align-self: center; }\n\n.height-10 {\n  min-height: 10vh; }\n\n.height-20 {\n  min-height: 20vh; }\n\n.height-30 {\n  min-height: 30vh; }\n\n.height-40 {\n  min-height: 40vh; }\n\n.height-50 {\n  min-height: 50vh; }\n\n.height-60 {\n  min-height: 60vh; }\n\n.height-70 {\n  min-height: 70vh; }\n\n.height-80 {\n  min-height: 80vh; }\n\n.height-90 {\n  min-height: 90vh; }\n\n.height-100 {\n  min-height: 100vh; }\n\n.height-0 {\n  height: 0; }\n\n.position-absolute {\n  position: absolute !important; }\n\n.position-relative {\n  position: relative;\n  z-index: 1; }\n\n.position-static {\n  position: static; }\n\n.position-fixed {\n  position: fixed !important; }\n  .position-fixed.sticky {\n    top: 0; }\n  .position-fixed.sticky-bottom {\n    position: absolute !important;\n    bottom: 0;\n    top: auto !important; }\n\n.blend-mode-overlay {\n  mix-blend-mode: overlay; }\n\n.box-shadow {\n  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1); }\n\nimg[src*='png'].shadow, img[src*='svg'].shadow {\n  -webkit-filter: drop-shadow(0px 10px 20px rgba(0, 0, 0, 0.1));\n          filter: drop-shadow(0px 10px 20px rgba(0, 0, 0, 0.1));\n  box-shadow: none !important; }\n\n.overflow-hidden {\n  overflow: hidden; }\n\n.overflow-visible {\n  overflow: visible; }\n\n.overflow-auto {\n  overflow: auto; }\n\n[data-aos][data-aos][data-aos-duration=\"50\"], body[data-aos-duration=\"50\"] [data-aos] {\n  transition-duration: 50ms; }\n\n[data-aos][data-aos][data-aos-delay=\"50\"], body[data-aos-delay=\"50\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"50\"].aos-animate, body[data-aos-delay=\"50\"] [data-aos].aos-animate {\n  transition-delay: 50ms; }\n\n[data-aos][data-aos][data-aos-duration=\"100\"], body[data-aos-duration=\"100\"] [data-aos] {\n  transition-duration: .1s; }\n\n[data-aos][data-aos][data-aos-delay=\"100\"], body[data-aos-delay=\"100\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"100\"].aos-animate, body[data-aos-delay=\"100\"] [data-aos].aos-animate {\n  transition-delay: .1s; }\n\n[data-aos][data-aos][data-aos-duration=\"150\"], body[data-aos-duration=\"150\"] [data-aos] {\n  transition-duration: .15s; }\n\n[data-aos][data-aos][data-aos-delay=\"150\"], body[data-aos-delay=\"150\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"150\"].aos-animate, body[data-aos-delay=\"150\"] [data-aos].aos-animate {\n  transition-delay: .15s; }\n\n[data-aos][data-aos][data-aos-duration=\"200\"], body[data-aos-duration=\"200\"] [data-aos] {\n  transition-duration: .2s; }\n\n[data-aos][data-aos][data-aos-delay=\"200\"], body[data-aos-delay=\"200\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"200\"].aos-animate, body[data-aos-delay=\"200\"] [data-aos].aos-animate {\n  transition-delay: .2s; }\n\n[data-aos][data-aos][data-aos-duration=\"250\"], body[data-aos-duration=\"250\"] [data-aos] {\n  transition-duration: .25s; }\n\n[data-aos][data-aos][data-aos-delay=\"250\"], body[data-aos-delay=\"250\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"250\"].aos-animate, body[data-aos-delay=\"250\"] [data-aos].aos-animate {\n  transition-delay: .25s; }\n\n[data-aos][data-aos][data-aos-duration=\"300\"], body[data-aos-duration=\"300\"] [data-aos] {\n  transition-duration: .3s; }\n\n[data-aos][data-aos][data-aos-delay=\"300\"], body[data-aos-delay=\"300\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"300\"].aos-animate, body[data-aos-delay=\"300\"] [data-aos].aos-animate {\n  transition-delay: .3s; }\n\n[data-aos][data-aos][data-aos-duration=\"350\"], body[data-aos-duration=\"350\"] [data-aos] {\n  transition-duration: .35s; }\n\n[data-aos][data-aos][data-aos-delay=\"350\"], body[data-aos-delay=\"350\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"350\"].aos-animate, body[data-aos-delay=\"350\"] [data-aos].aos-animate {\n  transition-delay: .35s; }\n\n[data-aos][data-aos][data-aos-duration=\"400\"], body[data-aos-duration=\"400\"] [data-aos] {\n  transition-duration: .4s; }\n\n[data-aos][data-aos][data-aos-delay=\"400\"], body[data-aos-delay=\"400\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"400\"].aos-animate, body[data-aos-delay=\"400\"] [data-aos].aos-animate {\n  transition-delay: .4s; }\n\n[data-aos][data-aos][data-aos-duration=\"450\"], body[data-aos-duration=\"450\"] [data-aos] {\n  transition-duration: .45s; }\n\n[data-aos][data-aos][data-aos-delay=\"450\"], body[data-aos-delay=\"450\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"450\"].aos-animate, body[data-aos-delay=\"450\"] [data-aos].aos-animate {\n  transition-delay: .45s; }\n\n[data-aos][data-aos][data-aos-duration=\"500\"], body[data-aos-duration=\"500\"] [data-aos] {\n  transition-duration: .5s; }\n\n[data-aos][data-aos][data-aos-delay=\"500\"], body[data-aos-delay=\"500\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"500\"].aos-animate, body[data-aos-delay=\"500\"] [data-aos].aos-animate {\n  transition-delay: .5s; }\n\n[data-aos][data-aos][data-aos-duration=\"550\"], body[data-aos-duration=\"550\"] [data-aos] {\n  transition-duration: .55s; }\n\n[data-aos][data-aos][data-aos-delay=\"550\"], body[data-aos-delay=\"550\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"550\"].aos-animate, body[data-aos-delay=\"550\"] [data-aos].aos-animate {\n  transition-delay: .55s; }\n\n[data-aos][data-aos][data-aos-duration=\"600\"], body[data-aos-duration=\"600\"] [data-aos] {\n  transition-duration: .6s; }\n\n[data-aos][data-aos][data-aos-delay=\"600\"], body[data-aos-delay=\"600\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"600\"].aos-animate, body[data-aos-delay=\"600\"] [data-aos].aos-animate {\n  transition-delay: .6s; }\n\n[data-aos][data-aos][data-aos-duration=\"650\"], body[data-aos-duration=\"650\"] [data-aos] {\n  transition-duration: .65s; }\n\n[data-aos][data-aos][data-aos-delay=\"650\"], body[data-aos-delay=\"650\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"650\"].aos-animate, body[data-aos-delay=\"650\"] [data-aos].aos-animate {\n  transition-delay: .65s; }\n\n[data-aos][data-aos][data-aos-duration=\"700\"], body[data-aos-duration=\"700\"] [data-aos] {\n  transition-duration: .7s; }\n\n[data-aos][data-aos][data-aos-delay=\"700\"], body[data-aos-delay=\"700\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"700\"].aos-animate, body[data-aos-delay=\"700\"] [data-aos].aos-animate {\n  transition-delay: .7s; }\n\n[data-aos][data-aos][data-aos-duration=\"750\"], body[data-aos-duration=\"750\"] [data-aos] {\n  transition-duration: .75s; }\n\n[data-aos][data-aos][data-aos-delay=\"750\"], body[data-aos-delay=\"750\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"750\"].aos-animate, body[data-aos-delay=\"750\"] [data-aos].aos-animate {\n  transition-delay: .75s; }\n\n[data-aos][data-aos][data-aos-duration=\"800\"], body[data-aos-duration=\"800\"] [data-aos] {\n  transition-duration: .8s; }\n\n[data-aos][data-aos][data-aos-delay=\"800\"], body[data-aos-delay=\"800\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"800\"].aos-animate, body[data-aos-delay=\"800\"] [data-aos].aos-animate {\n  transition-delay: .8s; }\n\n[data-aos][data-aos][data-aos-duration=\"850\"], body[data-aos-duration=\"850\"] [data-aos] {\n  transition-duration: .85s; }\n\n[data-aos][data-aos][data-aos-delay=\"850\"], body[data-aos-delay=\"850\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"850\"].aos-animate, body[data-aos-delay=\"850\"] [data-aos].aos-animate {\n  transition-delay: .85s; }\n\n[data-aos][data-aos][data-aos-duration=\"900\"], body[data-aos-duration=\"900\"] [data-aos] {\n  transition-duration: .9s; }\n\n[data-aos][data-aos][data-aos-delay=\"900\"], body[data-aos-delay=\"900\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"900\"].aos-animate, body[data-aos-delay=\"900\"] [data-aos].aos-animate {\n  transition-delay: .9s; }\n\n[data-aos][data-aos][data-aos-duration=\"950\"], body[data-aos-duration=\"950\"] [data-aos] {\n  transition-duration: .95s; }\n\n[data-aos][data-aos][data-aos-delay=\"950\"], body[data-aos-delay=\"950\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"950\"].aos-animate, body[data-aos-delay=\"950\"] [data-aos].aos-animate {\n  transition-delay: .95s; }\n\n[data-aos][data-aos][data-aos-duration=\"1000\"], body[data-aos-duration=\"1000\"] [data-aos] {\n  transition-duration: 1s; }\n\n[data-aos][data-aos][data-aos-delay=\"1000\"], body[data-aos-delay=\"1000\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1000\"].aos-animate, body[data-aos-delay=\"1000\"] [data-aos].aos-animate {\n  transition-delay: 1s; }\n\n[data-aos][data-aos][data-aos-duration=\"1050\"], body[data-aos-duration=\"1050\"] [data-aos] {\n  transition-duration: 1.05s; }\n\n[data-aos][data-aos][data-aos-delay=\"1050\"], body[data-aos-delay=\"1050\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1050\"].aos-animate, body[data-aos-delay=\"1050\"] [data-aos].aos-animate {\n  transition-delay: 1.05s; }\n\n[data-aos][data-aos][data-aos-duration=\"1100\"], body[data-aos-duration=\"1100\"] [data-aos] {\n  transition-duration: 1.1s; }\n\n[data-aos][data-aos][data-aos-delay=\"1100\"], body[data-aos-delay=\"1100\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1100\"].aos-animate, body[data-aos-delay=\"1100\"] [data-aos].aos-animate {\n  transition-delay: 1.1s; }\n\n[data-aos][data-aos][data-aos-duration=\"1150\"], body[data-aos-duration=\"1150\"] [data-aos] {\n  transition-duration: 1.15s; }\n\n[data-aos][data-aos][data-aos-delay=\"1150\"], body[data-aos-delay=\"1150\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1150\"].aos-animate, body[data-aos-delay=\"1150\"] [data-aos].aos-animate {\n  transition-delay: 1.15s; }\n\n[data-aos][data-aos][data-aos-duration=\"1200\"], body[data-aos-duration=\"1200\"] [data-aos] {\n  transition-duration: 1.2s; }\n\n[data-aos][data-aos][data-aos-delay=\"1200\"], body[data-aos-delay=\"1200\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1200\"].aos-animate, body[data-aos-delay=\"1200\"] [data-aos].aos-animate {\n  transition-delay: 1.2s; }\n\n[data-aos][data-aos][data-aos-duration=\"1250\"], body[data-aos-duration=\"1250\"] [data-aos] {\n  transition-duration: 1.25s; }\n\n[data-aos][data-aos][data-aos-delay=\"1250\"], body[data-aos-delay=\"1250\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1250\"].aos-animate, body[data-aos-delay=\"1250\"] [data-aos].aos-animate {\n  transition-delay: 1.25s; }\n\n[data-aos][data-aos][data-aos-duration=\"1300\"], body[data-aos-duration=\"1300\"] [data-aos] {\n  transition-duration: 1.3s; }\n\n[data-aos][data-aos][data-aos-delay=\"1300\"], body[data-aos-delay=\"1300\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1300\"].aos-animate, body[data-aos-delay=\"1300\"] [data-aos].aos-animate {\n  transition-delay: 1.3s; }\n\n[data-aos][data-aos][data-aos-duration=\"1350\"], body[data-aos-duration=\"1350\"] [data-aos] {\n  transition-duration: 1.35s; }\n\n[data-aos][data-aos][data-aos-delay=\"1350\"], body[data-aos-delay=\"1350\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1350\"].aos-animate, body[data-aos-delay=\"1350\"] [data-aos].aos-animate {\n  transition-delay: 1.35s; }\n\n[data-aos][data-aos][data-aos-duration=\"1400\"], body[data-aos-duration=\"1400\"] [data-aos] {\n  transition-duration: 1.4s; }\n\n[data-aos][data-aos][data-aos-delay=\"1400\"], body[data-aos-delay=\"1400\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1400\"].aos-animate, body[data-aos-delay=\"1400\"] [data-aos].aos-animate {\n  transition-delay: 1.4s; }\n\n[data-aos][data-aos][data-aos-duration=\"1450\"], body[data-aos-duration=\"1450\"] [data-aos] {\n  transition-duration: 1.45s; }\n\n[data-aos][data-aos][data-aos-delay=\"1450\"], body[data-aos-delay=\"1450\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1450\"].aos-animate, body[data-aos-delay=\"1450\"] [data-aos].aos-animate {\n  transition-delay: 1.45s; }\n\n[data-aos][data-aos][data-aos-duration=\"1500\"], body[data-aos-duration=\"1500\"] [data-aos] {\n  transition-duration: 1.5s; }\n\n[data-aos][data-aos][data-aos-delay=\"1500\"], body[data-aos-delay=\"1500\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1500\"].aos-animate, body[data-aos-delay=\"1500\"] [data-aos].aos-animate {\n  transition-delay: 1.5s; }\n\n[data-aos][data-aos][data-aos-duration=\"1550\"], body[data-aos-duration=\"1550\"] [data-aos] {\n  transition-duration: 1.55s; }\n\n[data-aos][data-aos][data-aos-delay=\"1550\"], body[data-aos-delay=\"1550\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1550\"].aos-animate, body[data-aos-delay=\"1550\"] [data-aos].aos-animate {\n  transition-delay: 1.55s; }\n\n[data-aos][data-aos][data-aos-duration=\"1600\"], body[data-aos-duration=\"1600\"] [data-aos] {\n  transition-duration: 1.6s; }\n\n[data-aos][data-aos][data-aos-delay=\"1600\"], body[data-aos-delay=\"1600\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1600\"].aos-animate, body[data-aos-delay=\"1600\"] [data-aos].aos-animate {\n  transition-delay: 1.6s; }\n\n[data-aos][data-aos][data-aos-duration=\"1650\"], body[data-aos-duration=\"1650\"] [data-aos] {\n  transition-duration: 1.65s; }\n\n[data-aos][data-aos][data-aos-delay=\"1650\"], body[data-aos-delay=\"1650\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1650\"].aos-animate, body[data-aos-delay=\"1650\"] [data-aos].aos-animate {\n  transition-delay: 1.65s; }\n\n[data-aos][data-aos][data-aos-duration=\"1700\"], body[data-aos-duration=\"1700\"] [data-aos] {\n  transition-duration: 1.7s; }\n\n[data-aos][data-aos][data-aos-delay=\"1700\"], body[data-aos-delay=\"1700\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1700\"].aos-animate, body[data-aos-delay=\"1700\"] [data-aos].aos-animate {\n  transition-delay: 1.7s; }\n\n[data-aos][data-aos][data-aos-duration=\"1750\"], body[data-aos-duration=\"1750\"] [data-aos] {\n  transition-duration: 1.75s; }\n\n[data-aos][data-aos][data-aos-delay=\"1750\"], body[data-aos-delay=\"1750\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1750\"].aos-animate, body[data-aos-delay=\"1750\"] [data-aos].aos-animate {\n  transition-delay: 1.75s; }\n\n[data-aos][data-aos][data-aos-duration=\"1800\"], body[data-aos-duration=\"1800\"] [data-aos] {\n  transition-duration: 1.8s; }\n\n[data-aos][data-aos][data-aos-delay=\"1800\"], body[data-aos-delay=\"1800\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1800\"].aos-animate, body[data-aos-delay=\"1800\"] [data-aos].aos-animate {\n  transition-delay: 1.8s; }\n\n[data-aos][data-aos][data-aos-duration=\"1850\"], body[data-aos-duration=\"1850\"] [data-aos] {\n  transition-duration: 1.85s; }\n\n[data-aos][data-aos][data-aos-delay=\"1850\"], body[data-aos-delay=\"1850\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1850\"].aos-animate, body[data-aos-delay=\"1850\"] [data-aos].aos-animate {\n  transition-delay: 1.85s; }\n\n[data-aos][data-aos][data-aos-duration=\"1900\"], body[data-aos-duration=\"1900\"] [data-aos] {\n  transition-duration: 1.9s; }\n\n[data-aos][data-aos][data-aos-delay=\"1900\"], body[data-aos-delay=\"1900\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1900\"].aos-animate, body[data-aos-delay=\"1900\"] [data-aos].aos-animate {\n  transition-delay: 1.9s; }\n\n[data-aos][data-aos][data-aos-duration=\"1950\"], body[data-aos-duration=\"1950\"] [data-aos] {\n  transition-duration: 1.95s; }\n\n[data-aos][data-aos][data-aos-delay=\"1950\"], body[data-aos-delay=\"1950\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"1950\"].aos-animate, body[data-aos-delay=\"1950\"] [data-aos].aos-animate {\n  transition-delay: 1.95s; }\n\n[data-aos][data-aos][data-aos-duration=\"2000\"], body[data-aos-duration=\"2000\"] [data-aos] {\n  transition-duration: 2s; }\n\n[data-aos][data-aos][data-aos-delay=\"2000\"], body[data-aos-delay=\"2000\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2000\"].aos-animate, body[data-aos-delay=\"2000\"] [data-aos].aos-animate {\n  transition-delay: 2s; }\n\n[data-aos][data-aos][data-aos-duration=\"2050\"], body[data-aos-duration=\"2050\"] [data-aos] {\n  transition-duration: 2.05s; }\n\n[data-aos][data-aos][data-aos-delay=\"2050\"], body[data-aos-delay=\"2050\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2050\"].aos-animate, body[data-aos-delay=\"2050\"] [data-aos].aos-animate {\n  transition-delay: 2.05s; }\n\n[data-aos][data-aos][data-aos-duration=\"2100\"], body[data-aos-duration=\"2100\"] [data-aos] {\n  transition-duration: 2.1s; }\n\n[data-aos][data-aos][data-aos-delay=\"2100\"], body[data-aos-delay=\"2100\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2100\"].aos-animate, body[data-aos-delay=\"2100\"] [data-aos].aos-animate {\n  transition-delay: 2.1s; }\n\n[data-aos][data-aos][data-aos-duration=\"2150\"], body[data-aos-duration=\"2150\"] [data-aos] {\n  transition-duration: 2.15s; }\n\n[data-aos][data-aos][data-aos-delay=\"2150\"], body[data-aos-delay=\"2150\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2150\"].aos-animate, body[data-aos-delay=\"2150\"] [data-aos].aos-animate {\n  transition-delay: 2.15s; }\n\n[data-aos][data-aos][data-aos-duration=\"2200\"], body[data-aos-duration=\"2200\"] [data-aos] {\n  transition-duration: 2.2s; }\n\n[data-aos][data-aos][data-aos-delay=\"2200\"], body[data-aos-delay=\"2200\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2200\"].aos-animate, body[data-aos-delay=\"2200\"] [data-aos].aos-animate {\n  transition-delay: 2.2s; }\n\n[data-aos][data-aos][data-aos-duration=\"2250\"], body[data-aos-duration=\"2250\"] [data-aos] {\n  transition-duration: 2.25s; }\n\n[data-aos][data-aos][data-aos-delay=\"2250\"], body[data-aos-delay=\"2250\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2250\"].aos-animate, body[data-aos-delay=\"2250\"] [data-aos].aos-animate {\n  transition-delay: 2.25s; }\n\n[data-aos][data-aos][data-aos-duration=\"2300\"], body[data-aos-duration=\"2300\"] [data-aos] {\n  transition-duration: 2.3s; }\n\n[data-aos][data-aos][data-aos-delay=\"2300\"], body[data-aos-delay=\"2300\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2300\"].aos-animate, body[data-aos-delay=\"2300\"] [data-aos].aos-animate {\n  transition-delay: 2.3s; }\n\n[data-aos][data-aos][data-aos-duration=\"2350\"], body[data-aos-duration=\"2350\"] [data-aos] {\n  transition-duration: 2.35s; }\n\n[data-aos][data-aos][data-aos-delay=\"2350\"], body[data-aos-delay=\"2350\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2350\"].aos-animate, body[data-aos-delay=\"2350\"] [data-aos].aos-animate {\n  transition-delay: 2.35s; }\n\n[data-aos][data-aos][data-aos-duration=\"2400\"], body[data-aos-duration=\"2400\"] [data-aos] {\n  transition-duration: 2.4s; }\n\n[data-aos][data-aos][data-aos-delay=\"2400\"], body[data-aos-delay=\"2400\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2400\"].aos-animate, body[data-aos-delay=\"2400\"] [data-aos].aos-animate {\n  transition-delay: 2.4s; }\n\n[data-aos][data-aos][data-aos-duration=\"2450\"], body[data-aos-duration=\"2450\"] [data-aos] {\n  transition-duration: 2.45s; }\n\n[data-aos][data-aos][data-aos-delay=\"2450\"], body[data-aos-delay=\"2450\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2450\"].aos-animate, body[data-aos-delay=\"2450\"] [data-aos].aos-animate {\n  transition-delay: 2.45s; }\n\n[data-aos][data-aos][data-aos-duration=\"2500\"], body[data-aos-duration=\"2500\"] [data-aos] {\n  transition-duration: 2.5s; }\n\n[data-aos][data-aos][data-aos-delay=\"2500\"], body[data-aos-delay=\"2500\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2500\"].aos-animate, body[data-aos-delay=\"2500\"] [data-aos].aos-animate {\n  transition-delay: 2.5s; }\n\n[data-aos][data-aos][data-aos-duration=\"2550\"], body[data-aos-duration=\"2550\"] [data-aos] {\n  transition-duration: 2.55s; }\n\n[data-aos][data-aos][data-aos-delay=\"2550\"], body[data-aos-delay=\"2550\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2550\"].aos-animate, body[data-aos-delay=\"2550\"] [data-aos].aos-animate {\n  transition-delay: 2.55s; }\n\n[data-aos][data-aos][data-aos-duration=\"2600\"], body[data-aos-duration=\"2600\"] [data-aos] {\n  transition-duration: 2.6s; }\n\n[data-aos][data-aos][data-aos-delay=\"2600\"], body[data-aos-delay=\"2600\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2600\"].aos-animate, body[data-aos-delay=\"2600\"] [data-aos].aos-animate {\n  transition-delay: 2.6s; }\n\n[data-aos][data-aos][data-aos-duration=\"2650\"], body[data-aos-duration=\"2650\"] [data-aos] {\n  transition-duration: 2.65s; }\n\n[data-aos][data-aos][data-aos-delay=\"2650\"], body[data-aos-delay=\"2650\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2650\"].aos-animate, body[data-aos-delay=\"2650\"] [data-aos].aos-animate {\n  transition-delay: 2.65s; }\n\n[data-aos][data-aos][data-aos-duration=\"2700\"], body[data-aos-duration=\"2700\"] [data-aos] {\n  transition-duration: 2.7s; }\n\n[data-aos][data-aos][data-aos-delay=\"2700\"], body[data-aos-delay=\"2700\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2700\"].aos-animate, body[data-aos-delay=\"2700\"] [data-aos].aos-animate {\n  transition-delay: 2.7s; }\n\n[data-aos][data-aos][data-aos-duration=\"2750\"], body[data-aos-duration=\"2750\"] [data-aos] {\n  transition-duration: 2.75s; }\n\n[data-aos][data-aos][data-aos-delay=\"2750\"], body[data-aos-delay=\"2750\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2750\"].aos-animate, body[data-aos-delay=\"2750\"] [data-aos].aos-animate {\n  transition-delay: 2.75s; }\n\n[data-aos][data-aos][data-aos-duration=\"2800\"], body[data-aos-duration=\"2800\"] [data-aos] {\n  transition-duration: 2.8s; }\n\n[data-aos][data-aos][data-aos-delay=\"2800\"], body[data-aos-delay=\"2800\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2800\"].aos-animate, body[data-aos-delay=\"2800\"] [data-aos].aos-animate {\n  transition-delay: 2.8s; }\n\n[data-aos][data-aos][data-aos-duration=\"2850\"], body[data-aos-duration=\"2850\"] [data-aos] {\n  transition-duration: 2.85s; }\n\n[data-aos][data-aos][data-aos-delay=\"2850\"], body[data-aos-delay=\"2850\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2850\"].aos-animate, body[data-aos-delay=\"2850\"] [data-aos].aos-animate {\n  transition-delay: 2.85s; }\n\n[data-aos][data-aos][data-aos-duration=\"2900\"], body[data-aos-duration=\"2900\"] [data-aos] {\n  transition-duration: 2.9s; }\n\n[data-aos][data-aos][data-aos-delay=\"2900\"], body[data-aos-delay=\"2900\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2900\"].aos-animate, body[data-aos-delay=\"2900\"] [data-aos].aos-animate {\n  transition-delay: 2.9s; }\n\n[data-aos][data-aos][data-aos-duration=\"2950\"], body[data-aos-duration=\"2950\"] [data-aos] {\n  transition-duration: 2.95s; }\n\n[data-aos][data-aos][data-aos-delay=\"2950\"], body[data-aos-delay=\"2950\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"2950\"].aos-animate, body[data-aos-delay=\"2950\"] [data-aos].aos-animate {\n  transition-delay: 2.95s; }\n\n[data-aos][data-aos][data-aos-duration=\"3000\"], body[data-aos-duration=\"3000\"] [data-aos] {\n  transition-duration: 3s; }\n\n[data-aos][data-aos][data-aos-delay=\"3000\"], body[data-aos-delay=\"3000\"] [data-aos] {\n  transition-delay: 0; }\n\n[data-aos][data-aos][data-aos-delay=\"3000\"].aos-animate, body[data-aos-delay=\"3000\"] [data-aos].aos-animate {\n  transition-delay: 3s; }\n\n[data-aos][data-aos][data-aos-easing=linear], body[data-aos-easing=linear] [data-aos] {\n  transition-timing-function: cubic-bezier(0.25, 0.25, 0.75, 0.75); }\n\n[data-aos][data-aos][data-aos-easing=ease], body[data-aos-easing=ease] [data-aos] {\n  transition-timing-function: ease; }\n\n[data-aos][data-aos][data-aos-easing=ease-in], body[data-aos-easing=ease-in] [data-aos] {\n  transition-timing-function: ease-in; }\n\n[data-aos][data-aos][data-aos-easing=ease-out], body[data-aos-easing=ease-out] [data-aos] {\n  transition-timing-function: ease-out; }\n\n[data-aos][data-aos][data-aos-easing=ease-in-out], body[data-aos-easing=ease-in-out] [data-aos] {\n  transition-timing-function: ease-in-out; }\n\n[data-aos][data-aos][data-aos-easing=ease-in-back], body[data-aos-easing=ease-in-back] [data-aos] {\n  transition-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045); }\n\n[data-aos][data-aos][data-aos-easing=ease-out-back], body[data-aos-easing=ease-out-back] [data-aos] {\n  transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-out-back], body[data-aos-easing=ease-in-out-back] [data-aos] {\n  transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-sine], body[data-aos-easing=ease-in-sine] [data-aos] {\n  transition-timing-function: cubic-bezier(0.47, 0, 0.745, 0.715); }\n\n[data-aos][data-aos][data-aos-easing=ease-out-sine], body[data-aos-easing=ease-out-sine] [data-aos] {\n  transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-out-sine], body[data-aos-easing=ease-in-out-sine] [data-aos] {\n  transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-quad], body[data-aos-easing=ease-in-quad] [data-aos] {\n  transition-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); }\n\n[data-aos][data-aos][data-aos-easing=ease-out-quad], body[data-aos-easing=ease-out-quad] [data-aos] {\n  transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-out-quad], body[data-aos-easing=ease-in-out-quad] [data-aos] {\n  transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-cubic], body[data-aos-easing=ease-in-cubic] [data-aos] {\n  transition-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); }\n\n[data-aos][data-aos][data-aos-easing=ease-out-cubic], body[data-aos-easing=ease-out-cubic] [data-aos] {\n  transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-out-cubic], body[data-aos-easing=ease-in-out-cubic] [data-aos] {\n  transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-quart], body[data-aos-easing=ease-in-quart] [data-aos] {\n  transition-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); }\n\n[data-aos][data-aos][data-aos-easing=ease-out-quart], body[data-aos-easing=ease-out-quart] [data-aos] {\n  transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); }\n\n[data-aos][data-aos][data-aos-easing=ease-in-out-quart], body[data-aos-easing=ease-in-out-quart] [data-aos] {\n  transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); }\n\n[data-aos^=fade][data-aos^=fade] {\n  opacity: 0;\n  transition-property: opacity,transform; }\n\n[data-aos^=fade][data-aos^=fade].aos-animate {\n  opacity: 1;\n  transform: translateZ(0); }\n\n[data-aos=fade-up] {\n  transform: translate3d(0, 100px, 0); }\n\n[data-aos=fade-down] {\n  transform: translate3d(0, -100px, 0); }\n\n[data-aos=fade-right] {\n  transform: translate3d(-100px, 0, 0); }\n\n[data-aos=fade-left] {\n  transform: translate3d(100px, 0, 0); }\n\n[data-aos=fade-up-right] {\n  transform: translate3d(-100px, 100px, 0); }\n\n[data-aos=fade-up-left] {\n  transform: translate3d(100px, 100px, 0); }\n\n[data-aos=fade-down-right] {\n  transform: translate3d(-100px, -100px, 0); }\n\n[data-aos=fade-down-left] {\n  transform: translate3d(100px, -100px, 0); }\n\n[data-aos^=zoom][data-aos^=zoom] {\n  opacity: 0;\n  transition-property: opacity,transform; }\n\n[data-aos^=zoom][data-aos^=zoom].aos-animate {\n  opacity: 1;\n  transform: translateZ(0) scale(1); }\n\n[data-aos=zoom-in] {\n  transform: scale(0.6); }\n\n[data-aos=zoom-in-up] {\n  transform: translate3d(0, 100px, 0) scale(0.6); }\n\n[data-aos=zoom-in-down] {\n  transform: translate3d(0, -100px, 0) scale(0.6); }\n\n[data-aos=zoom-in-right] {\n  transform: translate3d(-100px, 0, 0) scale(0.6); }\n\n[data-aos=zoom-in-left] {\n  transform: translate3d(100px, 0, 0) scale(0.6); }\n\n[data-aos=zoom-out] {\n  transform: scale(1.2); }\n\n[data-aos=zoom-out-up] {\n  transform: translate3d(0, 100px, 0) scale(1.2); }\n\n[data-aos=zoom-out-down] {\n  transform: translate3d(0, -100px, 0) scale(1.2); }\n\n[data-aos=zoom-out-right] {\n  transform: translate3d(-100px, 0, 0) scale(1.2); }\n\n[data-aos=zoom-out-left] {\n  transform: translate3d(100px, 0, 0) scale(1.2); }\n\n[data-aos^=slide][data-aos^=slide] {\n  transition-property: transform; }\n\n[data-aos^=slide][data-aos^=slide].aos-animate {\n  transform: translateZ(0); }\n\n[data-aos=slide-up] {\n  transform: translate3d(0, 100%, 0); }\n\n[data-aos=slide-down] {\n  transform: translate3d(0, -100%, 0); }\n\n[data-aos=slide-right] {\n  transform: translate3d(-100%, 0, 0); }\n\n[data-aos=slide-left] {\n  transform: translate3d(100%, 0, 0); }\n\n[data-aos^=flip][data-aos^=flip] {\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  transition-property: transform; }\n\n[data-aos=flip-left] {\n  transform: perspective(2500px) rotateY(-100deg); }\n\n[data-aos=flip-left].aos-animate {\n  transform: perspective(2500px) rotateY(0); }\n\n[data-aos=flip-right] {\n  transform: perspective(2500px) rotateY(100deg); }\n\n[data-aos=flip-right].aos-animate {\n  transform: perspective(2500px) rotateY(0); }\n\n[data-aos=flip-up] {\n  transform: perspective(2500px) rotateX(-100deg); }\n\n[data-aos=flip-up].aos-animate {\n  transform: perspective(2500px) rotateX(0); }\n\n[data-aos=flip-down] {\n  transform: perspective(2500px) rotateX(100deg); }\n\n[data-aos=flip-down].aos-animate {\n  transform: perspective(2500px) rotateX(0); }\n\n.accordion:not(:first-child) {\n  margin-top: 3rem; }\n\n.accordion:not(:last-child) {\n  margin-bottom: 1.5rem; }\n\n.accordion-item {\n  padding: 0.75rem 0; }\n  .accordion-item > [data-toggle=\"collapse\"] {\n    transition: margin .35s ease, opacity .35s ease;\n    cursor: pointer;\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: space-between; }\n    .accordion-item > [data-toggle=\"collapse\"] > * {\n      margin-bottom: 0; }\n    .accordion-item > [data-toggle=\"collapse\"]:hover {\n      text-decoration: none; }\n    .accordion-item > [data-toggle=\"collapse\"] i {\n      transition: transform .35s ease; }\n    .accordion-item > [data-toggle=\"collapse\"][aria-expanded=\"true\"] {\n      margin-bottom: 0.75rem; }\n      .accordion-item > [data-toggle=\"collapse\"][aria-expanded=\"true\"] i {\n        transform: rotate(90deg); }\n    .accordion-item > [data-toggle=\"collapse\"][aria-expanded=\"false\"] {\n      opacity: .5; }\n      .accordion-item > [data-toggle=\"collapse\"][aria-expanded=\"false\"]:hover {\n        opacity: 1; }\n  .accordion-item:not(:first-child) {\n    border-top: 1px solid #e9ecef; }\n\n.bg-dark .accordion-item:not(:first-child) {\n  border-top: 1px solid #343a40; }\n\narticle p + p, article p + ul, article ul + p {\n  margin-top: 1.5rem; }\n\narticle h4, article h5 {\n  margin-bottom: 1.5rem; }\n  article h4:not(:first-child), article h5:not(:first-child) {\n    margin-top: 3rem; }\n\narticle .blockquote {\n  margin: 3rem 0; }\n  article .blockquote .h4 {\n    margin-bottom: 1rem; }\n  article .blockquote:first-child {\n    margin-top: 0; }\n\narticle figure {\n  margin: 3rem 0; }\n  article figure:first-child {\n    margin-top: 0; }\n\narticle h5 + figure {\n  margin-top: 0; }\n\narticle ul {\n  padding-left: 3rem;\n  margin-bottom: 1.5rem; }\n  article ul > li {\n    margin-bottom: .5rem; }\n\narticle + article {\n  margin-top: 3rem; }\n\narticle pre + p {\n  margin-top: 2.25rem; }\n\n@media (max-width: 575.98px) {\n  article figure {\n    margin: 1.5rem 0; }\n  article h4:not(:last-child), article h5:not(:last-child) {\n    margin-top: 1.5rem; } }\n\n.avatar {\n  border-radius: 50%;\n  width: 4.5rem;\n  height: 4.5rem; }\n  .avatar.avatar-xs {\n    width: 2.25rem;\n    height: 2.25rem; }\n  .avatar.avatar-sm {\n    width: 3rem;\n    height: 3rem; }\n  .avatar.avatar-lg {\n    width: 7.5rem;\n    height: 7.5rem; }\n  .avatar.avatar-xlg {\n    width: 12rem;\n    height: 12rem; }\n  .avatar.avatar-square {\n    border-radius: 0.125rem; }\n\n.media > .avatar:first-child {\n  margin-right: 1.5rem; }\n  .media > .avatar:first-child.avatar-xs, .media > .avatar:first-child.avatar-sm {\n    margin-right: 0.75rem; }\n\n.avatar + .avatar {\n  margin-left: 0.75rem; }\n\n.avatar + .badge {\n  position: relative;\n  margin-left: -.75rem; }\n\n.avatar-lg + .avatar-lg {\n  margin-left: 3rem; }\n\n@media (max-width: 767.98px) {\n  .avatar.avatar-xlg {\n    width: 7.5rem;\n    height: 7.5rem; } }\n\n.badge {\n  vertical-align: middle; }\n\n.badge-warning {\n  color: #fff; }\n\n.badge-indicator {\n  width: 8px;\n  height: 8px;\n  border-radius: 50%;\n  padding: 0;\n  position: relative;\n  bottom: 2px; }\n  .badge-indicator:empty {\n    display: inline-block; }\n\n.blog-post-author .media-body > * {\n  display: block; }\n\n.blog-post-author .media-body small:nth-child(1) {\n  color: #343a40; }\n  .blog-post-author .media-body small:nth-child(1) + small {\n    color: #6c757d; }\n\n.blog-post-author .media-body .h6 {\n  margin-bottom: 0; }\n\n.lead + .blog-post-author {\n  margin-top: 3rem; }\n\n.breadcrumb {\n  font-size: .875em; }\n  .breadcrumb:last-child {\n    margin-bottom: 0; }\n\n.breadcrumb-item + .breadcrumb-item:before {\n  content: '>';\n  font-weight: 600;\n  font-size: 11px;\n  transform: scaleX(0.7);\n  bottom: 1px;\n  position: relative; }\n\nnav[aria-label=\"breadcrumb\"].position-absolute {\n  width: 100%;\n  z-index: 2; }\n  nav[aria-label=\"breadcrumb\"].position-absolute a {\n    color: #fff; }\n\n.bg-dark .breadcrumb-item a, .text-light .breadcrumb-item a, .text-white .breadcrumb-item a {\n  color: #fff;\n  font-weight: 500; }\n  .bg-dark .breadcrumb-item a:hover, .text-light .breadcrumb-item a:hover, .text-white .breadcrumb-item a:hover {\n    opacity: .75; }\n\n.bg-dark .breadcrumb-item + .breadcrumb-item:before, .text-light .breadcrumb-item + .breadcrumb-item:before, .text-white .breadcrumb-item + .breadcrumb-item:before {\n  color: #fff; }\n\n.text-white .breadcrumb-item {\n  color: rgba(255, 255, 255, 0.75); }\n\n.case-study {\n  display: block;\n  transition: transform .2s ease; }\n  .case-study img:not(.bg-image) {\n    max-height: 3rem;\n    margin-bottom: 3rem; }\n  .case-study .h2 {\n    max-width: 640px; }\n  .case-study .bg-image {\n    transition: opacity .2s ease; }\n  .case-study:hover {\n    transform: scale(1.01); }\n    .case-study:hover .bg-image {\n      opacity: .3; }\n  .case-study > .card {\n    margin-bottom: 0; }\n\n@media (min-width: 768px) {\n  .case-study .card-body {\n    padding-bottom: 12rem; } }\n\n@media (max-width: 767.98px) {\n  .case-study img:not(.bg-image) {\n    margin-bottom: 1.5rem; } }\n\n.decorative-divider {\n  display: block;\n  position: relative;\n  z-index: 0;\n  height: 6rem;\n  width: 100%; }\n\nsection > .decorative-divider:first-child {\n  bottom: 1px; }\n\n@media (max-width: 991.98px) {\n  .decorative-divider {\n    height: 3rem; } }\n\n@media (max-width: 767.98px) {\n  .decorative-divider {\n    display: none; } }\n\n.dropdown-menu {\n  box-shadow: 0px 0px 0px rgba(0, 0, 0, 0);\n  transition: box-shadow .35s ease 5s; }\n  .dropdown-menu.show {\n    box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.1); }\n\n.dropdown-item {\n  transition: background-color .2s ease, color .2s ease; }\n  .dropdown-item.active > *, .dropdown-item.active > .text-muted, .dropdown-item:active > *, .dropdown-item:active > .text-muted {\n    color: #fff !important; }\n\n.dropdown h1, .dropdown h2, .dropdown h3, .dropdown h4, .dropdown h5, .dropdown .h1, .dropdown .h2, .dropdown .h3, .dropdown .h4, .dropdown .h5, .dropdown .h6 {\n  color: #343a40; }\n\n.dropdown .text-muted {\n  color: #6c757d !important; }\n\n.dropdown .title-decorative {\n  color: #adb5bd;\n  margin: 0;\n  font-size: .75rem;\n  letter-spacing: .75px; }\n\n.navbar .dropdown-menu {\n  position: absolute !important; }\n\n.dropdown-menu-sm {\n  padding: .25rem 0; }\n  .dropdown-menu-sm .dropdown-item, .dropdown-menu-sm .dropdown-header {\n    padding: .25rem 1rem; }\n  .dropdown-menu-sm .dropdown-divider {\n    margin: .5rem 0; }\n\n.dropdown-toggle-no-arrow:after {\n  display: none !important; }\n\n@-webkit-keyframes showDropdown {\n  0% {\n    opacity: 0;\n    transform: translateY(5px); }\n  100% {\n    opacity: 1;\n    transform: translateY(0); } }\n\n@keyframes showDropdown {\n  0% {\n    opacity: 0;\n    transform: translateY(5px); }\n  100% {\n    opacity: 1;\n    transform: translateY(0); } }\n\n.navbar .dropdown-menu.show {\n  -webkit-animation: showDropdown .35s ease forwards;\n          animation: showDropdown .35s ease forwards; }\n\n@media (min-width: 768px) {\n  .dropdown-menu span.dropdown-item {\n    cursor: pointer; }\n    .dropdown-menu span.dropdown-item[aria-expanded=\"true\"] {\n      color: #fff;\n      background: #4582EC; }\n    .dropdown-menu span.dropdown-item + .dropdown-menu {\n      top: -3rem !important;\n      left: 100% !important; }\n      .dropdown-menu span.dropdown-item + .dropdown-menu.dropdown-menu-right {\n        left: auto !important;\n        right: 100% !important; } }\n\n.feature-list {\n  margin-bottom: 0; }\n  .feature-list > li {\n    margin-bottom: 3rem; }\n  .feature-list.feature-list-sm > li {\n    margin-bottom: 1.5rem; }\n  .feature-list:not(:last-child):not(.row) {\n    margin-bottom: 1.5rem; }\n  .feature-list > li[class*='col'] {\n    display: flex;\n    flex-direction: column; }\n    .feature-list > li[class*='col'] .card {\n      flex-grow: 1; }\n\n@media (min-width: 576px) {\n  .feature-list.feature-list-lg > li {\n    margin-bottom: 4.5rem; } }\n\n@media (min-width: 992px) {\n  .feature-list.feature-list-xlg > li {\n    margin-bottom: 7.5rem; }\n    .feature-list.feature-list-xlg > li:last-child {\n      margin-bottom: 0; } }\n\n@media (max-width: 767.98px) {\n  .feature-list > li {\n    margin-bottom: 1.5rem; }\n    .feature-list > li .img-fluid {\n      margin-bottom: 1.5rem; } }\n\n.feature-list > li > .card:only-child {\n  margin-bottom: 0; }\n\n.flatpickr-calendar {\n  background: transparent;\n  opacity: 0;\n  display: none;\n  text-align: center;\n  visibility: hidden;\n  padding: 0;\n  -webkit-animation: none;\n  animation: none;\n  direction: ltr;\n  border: 0;\n  font-size: 14px;\n  line-height: 24px;\n  border-radius: 5px;\n  position: absolute;\n  width: 307.875px;\n  box-sizing: border-box;\n  touch-action: manipulation;\n  background: #fff;\n  box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08); }\n\n.flatpickr-calendar.open, .flatpickr-calendar.inline {\n  opacity: 1;\n  max-height: 640px;\n  visibility: visible; }\n\n.flatpickr-calendar.open {\n  display: inline-block;\n  z-index: 99999; }\n\n.flatpickr-calendar.animate.open {\n  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\n  animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1); }\n\n.flatpickr-calendar.inline {\n  display: block;\n  position: relative;\n  top: 2px; }\n\n.flatpickr-calendar.static {\n  position: absolute;\n  top: calc(100% + 2px); }\n\n.flatpickr-calendar.static.open {\n  z-index: 999;\n  display: block; }\n\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {\n  box-shadow: none !important; }\n\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {\n  box-shadow: -2px 0 0 #e6e6e6,5px 0 0 #e6e6e6; }\n\n.flatpickr-calendar .hasWeeks .dayContainer, .flatpickr-calendar .hasTime .dayContainer {\n  border-bottom: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0; }\n\n.flatpickr-calendar .hasWeeks .dayContainer {\n  border-left: 0; }\n\n.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {\n  height: 40px;\n  border-top: 1px solid #e6e6e6; }\n\n.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {\n  height: auto; }\n\n.flatpickr-calendar:before, .flatpickr-calendar:after {\n  position: absolute;\n  display: block;\n  pointer-events: none;\n  border: solid transparent;\n  content: '';\n  height: 0;\n  width: 0;\n  left: 22px; }\n\n.flatpickr-calendar.rightMost:before, .flatpickr-calendar.rightMost:after {\n  left: auto;\n  right: 22px; }\n\n.flatpickr-calendar:before {\n  border-width: 5px;\n  margin: 0 -5px; }\n\n.flatpickr-calendar:after {\n  border-width: 4px;\n  margin: 0 -4px; }\n\n.flatpickr-calendar.arrowTop:before, .flatpickr-calendar.arrowTop:after {\n  bottom: 100%; }\n\n.flatpickr-calendar.arrowTop:before {\n  border-bottom-color: #e6e6e6; }\n\n.flatpickr-calendar.arrowTop:after {\n  border-bottom-color: #fff; }\n\n.flatpickr-calendar.arrowBottom:before, .flatpickr-calendar.arrowBottom:after {\n  top: 100%; }\n\n.flatpickr-calendar.arrowBottom:before {\n  border-top-color: #e6e6e6; }\n\n.flatpickr-calendar.arrowBottom:after {\n  border-top-color: #fff; }\n\n.flatpickr-calendar:focus {\n  outline: 0; }\n\n.flatpickr-wrapper {\n  position: relative;\n  display: inline-block; }\n\n.flatpickr-months {\n  display: flex; }\n\n.flatpickr-months .flatpickr-month {\n  background: transparent;\n  color: rgba(0, 0, 0, 0.9);\n  fill: rgba(0, 0, 0, 0.9);\n  height: 28px;\n  line-height: 1;\n  text-align: center;\n  position: relative;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  overflow: hidden;\n  flex: 1; }\n\n.flatpickr-months .flatpickr-prev-month, .flatpickr-months .flatpickr-next-month {\n  text-decoration: none;\n  cursor: pointer;\n  position: absolute;\n  top: 0;\n  line-height: 16px;\n  height: 28px;\n  padding: 10px;\n  z-index: 3;\n  color: rgba(0, 0, 0, 0.9);\n  fill: rgba(0, 0, 0, 0.9); }\n\n.flatpickr-months .flatpickr-prev-month.disabled, .flatpickr-months .flatpickr-next-month.disabled {\n  display: none; }\n\n.flatpickr-months .flatpickr-prev-month i, .flatpickr-months .flatpickr-next-month i {\n  position: relative; }\n\n.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month, .flatpickr-months .flatpickr-next-month.flatpickr-prev-month {\n  /*\n      /*rtl:begin:ignore*/\n  left: 0;\n  /*\n      /*rtl:end:ignore*/ }\n\n/*\n      /*rtl:begin:ignore*/\n/*\n      /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month, .flatpickr-months .flatpickr-next-month.flatpickr-next-month {\n  /*\n      /*rtl:begin:ignore*/\n  right: 0;\n  /*\n      /*rtl:end:ignore*/ }\n\n/*\n      /*rtl:begin:ignore*/\n/*\n      /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover, .flatpickr-months .flatpickr-next-month:hover {\n  color: #959ea9; }\n\n.flatpickr-months .flatpickr-prev-month:hover svg, .flatpickr-months .flatpickr-next-month:hover svg {\n  fill: #f64747; }\n\n.flatpickr-months .flatpickr-prev-month svg, .flatpickr-months .flatpickr-next-month svg {\n  width: 14px;\n  height: 14px; }\n\n.flatpickr-months .flatpickr-prev-month svg path, .flatpickr-months .flatpickr-next-month svg path {\n  transition: fill .1s;\n  fill: inherit; }\n\n.numInputWrapper {\n  position: relative;\n  height: auto; }\n\n.numInputWrapper input, .numInputWrapper span {\n  display: inline-block; }\n\n.numInputWrapper input {\n  width: 100%; }\n\n.numInputWrapper input::-ms-clear {\n  display: none; }\n\n.numInputWrapper input::-webkit-outer-spin-button, .numInputWrapper input::-webkit-inner-spin-button {\n  margin: 0;\n  -webkit-appearance: none; }\n\n.numInputWrapper span {\n  position: absolute;\n  right: 0;\n  width: 14px;\n  padding: 0 4px 0 2px;\n  height: 50%;\n  line-height: 50%;\n  opacity: 0;\n  cursor: pointer;\n  border: 1px solid rgba(57, 57, 57, 0.15);\n  box-sizing: border-box; }\n\n.numInputWrapper span:hover {\n  background: rgba(0, 0, 0, 0.1); }\n\n.numInputWrapper span:active {\n  background: rgba(0, 0, 0, 0.2); }\n\n.numInputWrapper span:after {\n  display: block;\n  content: \"\";\n  position: absolute; }\n\n.numInputWrapper span.arrowUp {\n  top: 0;\n  border-bottom: 0; }\n\n.numInputWrapper span.arrowUp:after {\n  border-left: 4px solid transparent;\n  border-right: 4px solid transparent;\n  border-bottom: 4px solid rgba(57, 57, 57, 0.6);\n  top: 26%; }\n\n.numInputWrapper span.arrowDown {\n  top: 50%; }\n\n.numInputWrapper span.arrowDown:after {\n  border-left: 4px solid transparent;\n  border-right: 4px solid transparent;\n  border-top: 4px solid rgba(57, 57, 57, 0.6);\n  top: 40%; }\n\n.numInputWrapper span svg {\n  width: inherit;\n  height: auto; }\n\n.numInputWrapper span svg path {\n  fill: rgba(0, 0, 0, 0.5); }\n\n.numInputWrapper:hover {\n  background: rgba(0, 0, 0, 0.05); }\n\n.numInputWrapper:hover span {\n  opacity: 1; }\n\n.flatpickr-current-month {\n  font-size: 135%;\n  line-height: inherit;\n  font-weight: 300;\n  color: inherit;\n  position: absolute;\n  width: 75%;\n  left: 12.5%;\n  padding: 6.16px 0 0 0;\n  line-height: 1;\n  height: 28px;\n  display: inline-block;\n  text-align: center;\n  transform: translate3d(0, 0, 0); }\n\n.flatpickr-current-month span.cur-month {\n  font-family: inherit;\n  font-weight: 700;\n  color: inherit;\n  display: inline-block;\n  margin-left: .5ch;\n  padding: 0; }\n\n.flatpickr-current-month span.cur-month:hover {\n  background: rgba(0, 0, 0, 0.05); }\n\n.flatpickr-current-month .numInputWrapper {\n  width: 6ch;\n  width: 7ch\\0;\n  display: inline-block; }\n\n.flatpickr-current-month .numInputWrapper span.arrowUp:after {\n  border-bottom-color: rgba(0, 0, 0, 0.9); }\n\n.flatpickr-current-month .numInputWrapper span.arrowDown:after {\n  border-top-color: rgba(0, 0, 0, 0.9); }\n\n.flatpickr-current-month input.cur-year {\n  background: transparent;\n  box-sizing: border-box;\n  color: inherit;\n  cursor: text;\n  padding: 0 0 0 .5ch;\n  margin: 0;\n  display: inline-block;\n  font-size: inherit;\n  font-family: inherit;\n  font-weight: 300;\n  line-height: inherit;\n  height: auto;\n  border: 0;\n  border-radius: 0;\n  vertical-align: initial;\n  -webkit-appearance: textfield;\n  -moz-appearance: textfield;\n  appearance: textfield; }\n\n.flatpickr-current-month input.cur-year:focus {\n  outline: 0; }\n\n.flatpickr-current-month input.cur-year[disabled], .flatpickr-current-month input.cur-year[disabled]:hover {\n  font-size: 100%;\n  color: rgba(0, 0, 0, 0.5);\n  background: transparent;\n  pointer-events: none; }\n\n.flatpickr-weekdays {\n  background: transparent;\n  text-align: center;\n  overflow: hidden;\n  width: 100%;\n  display: flex;\n  align-items: center;\n  height: 28px; }\n\n.flatpickr-weekdays .flatpickr-weekdaycontainer {\n  display: flex;\n  flex: 1; }\n\nspan.flatpickr-weekday {\n  cursor: default;\n  font-size: 90%;\n  background: transparent;\n  color: rgba(0, 0, 0, 0.54);\n  line-height: 1;\n  margin: 0;\n  text-align: center;\n  display: block;\n  flex: 1;\n  font-weight: bolder; }\n\n.dayContainer, .flatpickr-weeks {\n  padding: 1px 0 0 0; }\n\n.flatpickr-days {\n  position: relative;\n  overflow: hidden;\n  display: flex;\n  align-items: flex-start;\n  width: 307.875px; }\n\n.flatpickr-days:focus {\n  outline: 0; }\n\n.dayContainer {\n  padding: 0;\n  outline: 0;\n  text-align: left;\n  width: 307.875px;\n  min-width: 307.875px;\n  max-width: 307.875px;\n  box-sizing: border-box;\n  display: inline-block;\n  display: flex;\n  flex-wrap: wrap;\n  -ms-flex-wrap: wrap;\n  justify-content: space-around;\n  transform: translate3d(0, 0, 0);\n  opacity: 1; }\n\n.dayContainer + .dayContainer {\n  box-shadow: -1px 0 0 #e6e6e6; }\n\n.flatpickr-day {\n  background: none;\n  border: 1px solid transparent;\n  border-radius: 150px;\n  box-sizing: border-box;\n  color: #393939;\n  cursor: pointer;\n  font-weight: 400;\n  width: 14.2857143%;\n  flex-basis: 14.2857143%;\n  max-width: 39px;\n  height: 39px;\n  line-height: 39px;\n  margin: 0;\n  display: inline-block;\n  position: relative;\n  justify-content: center;\n  text-align: center; }\n\n.flatpickr-day.inRange, .flatpickr-day.prevMonthDay.inRange, .flatpickr-day.nextMonthDay.inRange, .flatpickr-day.today.inRange, .flatpickr-day.prevMonthDay.today.inRange, .flatpickr-day.nextMonthDay.today.inRange, .flatpickr-day:hover, .flatpickr-day.prevMonthDay:hover, .flatpickr-day.nextMonthDay:hover, .flatpickr-day:focus, .flatpickr-day.prevMonthDay:focus, .flatpickr-day.nextMonthDay:focus {\n  cursor: pointer;\n  outline: 0;\n  background: #e6e6e6;\n  border-color: #e6e6e6; }\n\n.flatpickr-day.today {\n  border-color: #959ea9; }\n\n.flatpickr-day.today:hover, .flatpickr-day.today:focus {\n  border-color: #959ea9;\n  background: #959ea9;\n  color: #fff; }\n\n.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {\n  background: #569ff7;\n  box-shadow: none;\n  color: #fff;\n  border-color: #569ff7; }\n\n.flatpickr-day.selected.startRange, .flatpickr-day.startRange.startRange, .flatpickr-day.endRange.startRange {\n  border-radius: 50px 0 0 50px; }\n\n.flatpickr-day.selected.endRange, .flatpickr-day.startRange.endRange, .flatpickr-day.endRange.endRange {\n  border-radius: 0 50px 50px 0; }\n\n.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {\n  box-shadow: -10px 0 0 #569ff7; }\n\n.flatpickr-day.selected.startRange.endRange, .flatpickr-day.startRange.startRange.endRange, .flatpickr-day.endRange.startRange.endRange {\n  border-radius: 50px; }\n\n.flatpickr-day.inRange {\n  border-radius: 0;\n  box-shadow: -5px 0 0 #e6e6e6,5px 0 0 #e6e6e6; }\n\n.flatpickr-day.disabled, .flatpickr-day.disabled:hover, .flatpickr-day.prevMonthDay, .flatpickr-day.nextMonthDay, .flatpickr-day.notAllowed, .flatpickr-day.notAllowed.prevMonthDay, .flatpickr-day.notAllowed.nextMonthDay {\n  color: rgba(57, 57, 57, 0.3);\n  background: transparent;\n  border-color: transparent;\n  cursor: default; }\n\n.flatpickr-day.disabled, .flatpickr-day.disabled:hover {\n  cursor: not-allowed;\n  color: rgba(57, 57, 57, 0.1); }\n\n.flatpickr-day.week.selected {\n  border-radius: 0;\n  box-shadow: -5px 0 0 #569ff7,5px 0 0 #569ff7; }\n\n.flatpickr-day.hidden {\n  visibility: hidden; }\n\n.rangeMode .flatpickr-day {\n  margin-top: 1px; }\n\n.flatpickr-weekwrapper {\n  display: inline-block;\n  float: left; }\n\n.flatpickr-weekwrapper .flatpickr-weeks {\n  padding: 0 12px;\n  box-shadow: 1px 0 0 #e6e6e6; }\n\n.flatpickr-weekwrapper .flatpickr-weekday {\n  float: none;\n  width: 100%;\n  line-height: 28px; }\n\n.flatpickr-weekwrapper span.flatpickr-day, .flatpickr-weekwrapper span.flatpickr-day:hover {\n  display: block;\n  width: 100%;\n  max-width: none;\n  color: rgba(57, 57, 57, 0.3);\n  background: transparent;\n  cursor: default;\n  border: none; }\n\n.flatpickr-innerContainer {\n  display: block;\n  display: flex;\n  box-sizing: border-box;\n  overflow: hidden; }\n\n.flatpickr-rContainer {\n  display: inline-block;\n  padding: 0;\n  box-sizing: border-box; }\n\n.flatpickr-time {\n  text-align: center;\n  outline: 0;\n  display: block;\n  height: 0;\n  line-height: 40px;\n  max-height: 40px;\n  box-sizing: border-box;\n  overflow: hidden;\n  display: flex; }\n\n.flatpickr-time:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\n.flatpickr-time .numInputWrapper {\n  flex: 1;\n  width: 40%;\n  height: 40px;\n  float: left; }\n\n.flatpickr-time .numInputWrapper span.arrowUp:after {\n  border-bottom-color: #393939; }\n\n.flatpickr-time .numInputWrapper span.arrowDown:after {\n  border-top-color: #393939; }\n\n.flatpickr-time.hasSeconds .numInputWrapper {\n  width: 26%; }\n\n.flatpickr-time.time24hr .numInputWrapper {\n  width: 49%; }\n\n.flatpickr-time input {\n  background: transparent;\n  box-shadow: none;\n  border: 0;\n  border-radius: 0;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n  height: inherit;\n  line-height: inherit;\n  color: #393939;\n  font-size: 14px;\n  position: relative;\n  box-sizing: border-box;\n  -webkit-appearance: textfield;\n  -moz-appearance: textfield;\n  appearance: textfield; }\n\n.flatpickr-time input.flatpickr-hour {\n  font-weight: bold; }\n\n.flatpickr-time input.flatpickr-minute, .flatpickr-time input.flatpickr-second {\n  font-weight: 400; }\n\n.flatpickr-time input:focus {\n  outline: 0;\n  border: 0; }\n\n.flatpickr-time .flatpickr-time-separator, .flatpickr-time .flatpickr-am-pm {\n  height: inherit;\n  display: inline-block;\n  float: left;\n  line-height: inherit;\n  color: #393939;\n  font-weight: bold;\n  width: 2%;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  align-self: center; }\n\n.flatpickr-time .flatpickr-am-pm {\n  outline: 0;\n  width: 18%;\n  cursor: pointer;\n  text-align: center;\n  font-weight: 400; }\n\n.flatpickr-time input:hover, .flatpickr-time .flatpickr-am-pm:hover, .flatpickr-time input:focus, .flatpickr-time .flatpickr-am-pm:focus {\n  background: #eee; }\n\n.flatpickr-input[readonly] {\n  cursor: pointer; }\n\n@-webkit-keyframes fpFadeInDown {\n  from {\n    opacity: 0;\n    transform: translate3d(0, -20px, 0); }\n  to {\n    opacity: 1;\n    transform: translate3d(0, 0, 0); } }\n\n@keyframes fpFadeInDown {\n  from {\n    opacity: 0;\n    transform: translate3d(0, -20px, 0); }\n  to {\n    opacity: 1;\n    transform: translate3d(0, 0, 0); } }\n\n.flatpickr-months {\n  margin: 0.75rem 0; }\n  .flatpickr-months .flatpickr-month, .flatpickr-months .flatpickr-next-month, .flatpickr-months .flatpickr-prev-month {\n    height: auto;\n    position: relative; }\n    .flatpickr-months .flatpickr-month:hover svg, .flatpickr-months .flatpickr-next-month:hover svg, .flatpickr-months .flatpickr-prev-month:hover svg {\n      fill: #4582EC; }\n  .flatpickr-months .flatpickr-month {\n    color: #495057; }\n\n.flatpickr-current-month span.cur-month {\n  font-weight: 500; }\n  .flatpickr-current-month span.cur-month:hover {\n    background: rgba(69, 130, 236, 0.15); }\n\n.numInputWrapper:hover {\n  background: rgba(69, 130, 236, 0.15); }\n\n.flatpickr-day {\n  border-radius: 0.25rem;\n  font-weight: 500;\n  color: #495057; }\n  .flatpickr-day.today {\n    border-color: #4582EC; }\n    .flatpickr-day.today:hover {\n      background: #4582EC;\n      border-color: #4582EC; }\n  .flatpickr-day:hover {\n    background: rgba(69, 130, 236, 0.1);\n    border-color: rgba(0, 0, 0, 0); }\n\nspan.flatpickr-weekday {\n  color: #495057;\n  font-weight: 500; }\n\n.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {\n  background: #4582EC;\n  border-color: #4582EC; }\n\n.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {\n  box-shadow: -10px 0 0 #4582EC; }\n\n.flatpickr-day.selected.startRange, .flatpickr-day.startRange.startRange, .flatpickr-day.endRange.startRange {\n  border-radius: 0.25rem 0 0 0.25rem; }\n\n.flatpickr-day.selected.endRange, .flatpickr-day.startRange.endRange, .flatpickr-day.endRange.endRange {\n  border-radius: 0 0.25rem 0.25rem 0; }\n\n/*! Flickity v2.0.10\nhttp://flickity.metafizzy.co\n---------------------------------------------- */\n.flickity-enabled {\n  position: relative; }\n\n.flickity-enabled:focus {\n  outline: 0; }\n\n.flickity-viewport {\n  overflow: hidden;\n  position: relative;\n  height: 100%; }\n\n.flickity-slider {\n  position: absolute;\n  width: 100%;\n  height: 100%; }\n\n.flickity-enabled.is-draggable {\n  -webkit-tap-highlight-color: transparent;\n  tap-highlight-color: transparent;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none; }\n\n.flickity-enabled.is-draggable .flickity-viewport {\n  cursor: move;\n  cursor: -webkit-grab;\n  cursor: grab; }\n\n.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down {\n  cursor: -webkit-grabbing;\n  cursor: grabbing; }\n\n.flickity-prev-next-button {\n  position: absolute;\n  top: 50%;\n  width: 44px;\n  height: 44px;\n  border: none;\n  border-radius: 50%;\n  background: #fff;\n  background: rgba(255, 255, 255, 0.75);\n  cursor: pointer;\n  transform: translateY(-50%); }\n\n.flickity-prev-next-button:hover {\n  background: #fff; }\n\n.flickity-prev-next-button:focus {\n  outline: 0;\n  box-shadow: 0 0 0 5px #09f; }\n\n.flickity-prev-next-button:active {\n  opacity: .6; }\n\n.flickity-prev-next-button.previous {\n  left: 10px; }\n\n.flickity-prev-next-button.next {\n  right: 10px; }\n\n.flickity-rtl .flickity-prev-next-button.previous {\n  left: auto;\n  right: 10px; }\n\n.flickity-rtl .flickity-prev-next-button.next {\n  right: auto;\n  left: 10px; }\n\n.flickity-prev-next-button:disabled {\n  opacity: .3;\n  cursor: auto; }\n\n.flickity-prev-next-button svg {\n  position: absolute;\n  left: 20%;\n  top: 20%;\n  width: 60%;\n  height: 60%; }\n\n.flickity-prev-next-button .arrow {\n  fill: #333; }\n\n.flickity-page-dots {\n  position: absolute;\n  width: 100%;\n  bottom: -25px;\n  padding: 0;\n  margin: 0;\n  list-style: none;\n  text-align: center;\n  line-height: 1; }\n\n.flickity-rtl .flickity-page-dots {\n  direction: rtl; }\n\n.flickity-page-dots .dot {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 0 8px;\n  background: #333;\n  border-radius: 50%;\n  opacity: .25;\n  cursor: pointer; }\n\n.flickity-page-dots .dot.is-selected {\n  opacity: 1; }\n\n.carousel-cell[class*='col'] {\n  padding: 0 0.75rem; }\n  .carousel-cell[class*='col'] > * {\n    transition: opacity .35s ease, transform .35s ease; }\n  .carousel-cell[class*='col']:not(.is-selected) > * {\n    opacity: .2; }\n\n.bg-dark .flickity-page-dots .dot {\n  background: #6c757d; }\n\n.bg-gradient .flickity-page-dots .dot {\n  background: #fff; }\n\n.flickity-prev-next-button {\n  border-radius: 0.25rem;\n  height: 3rem;\n  width: 3rem; }\n  .flickity-prev-next-button svg {\n    display: none; }\n  .flickity-prev-next-button:after {\n    color: #343a40;\n    display: inline-block;\n    width: 0;\n    height: 0;\n    vertical-align: 0.2125em;\n    content: \"\";\n    border-top: 0.25em solid;\n    border-right: 0.25em solid transparent;\n    border-bottom: 0;\n    border-left: 0.25em solid transparent;\n    border-radius: 2px;\n    transform: rotate(90deg) scale(1.5); }\n  .flickity-prev-next-button.next:after {\n    transform: rotate(-90deg) scale(1.5); }\n\n.main-carousel > .carousel-cell {\n  height: 0;\n  display: none; }\n\n.overflow-visible {\n  z-index: 0; }\n  .overflow-visible .flickity-viewport {\n    overflow: visible; }\n  .overflow-visible .carousel-cell[class*='col']:not(.is-selected) > * {\n    opacity: .05;\n    pointer-events: none;\n    transform: scale(0.9); }\n\n.bg-dark .carousel-cell .card {\n  border-color: #212529;\n  background-color: #212529; }\n  .bg-dark .carousel-cell .card .card-img-top {\n    background-color: #212529; }\n  .bg-dark .carousel-cell .card .card-footer, .bg-dark .carousel-cell .card .card-body, .bg-dark .carousel-cell .card .card-header {\n    background: #f8f9fa; }\n\n.form-group label {\n  color: #343a40;\n  font-size: 0.875em; }\n\n.form-group small {\n  color: #495057; }\n\n.form-check-label {\n  font-size: 0.75rem;\n  color: #495057; }\n\n.form-check {\n  margin-bottom: 1rem; }\n\n.form-control-lg {\n  font-size: 1rem; }\n\n.form-control, .form-control-lg {\n  padding-left: 0.75rem; }\n\n.custom-select {\n  -webkit-appearance: none;\n  -moz-appearance: none; }\n\n.input-group-lg .input-group-prepend > .btn {\n  padding-top: 0;\n  padding-bottom: 0; }\n\n.input-group-lg .input-group-prepend > .input-group-text {\n  padding: 0 1rem; }\n\n.custom-control {\n  margin-bottom: .5rem; }\n  .custom-control.custom-checkbox .custom-control-label:before {\n    top: .125rem; }\n  .custom-control.custom-checkbox .custom-control-label:after {\n    top: 0.125rem; }\n\n.custom-control-input ~ .custom-control-indicator {\n  transition: box-shadow .2s ease; }\n\n.custom-control.custom-switch .custom-control-label:before {\n  top: 0;\n  height: 1.5rem; }\n\n.custom-control.custom-switch .custom-control-label:after {\n  background: #dee2e6;\n  top: .25rem;\n  transform: translateX(2px); }\n\n.custom-control.custom-switch .custom-control-input:checked ~ .custom-control-label:after {\n  transform: translateX(1.65rem); }\n\n.custom-control.btn {\n  vertical-align: middle; }\n  .custom-control.btn .custom-control-indicator {\n    position: relative;\n    width: auto;\n    height: auto;\n    padding: 0;\n    background: none;\n    top: 0;\n    border: none; }\n\nlabel.text-small {\n  font-size: 0.75rem; }\n\n.form-control-dark {\n  background: #343a40;\n  border-color: #343a40;\n  color: #fff; }\n  .form-control-dark:active, .form-control-dark:focus {\n    background: #343a40;\n    border-color: #495057;\n    color: #fff; }\n\n.form-control-borderless {\n  border: none; }\n  .form-control-borderless:hover, .form-control-borderless:active, .form-control-borderless:focus {\n    border: none;\n    outline: none;\n    box-shadow: none; }\n\n.image-gallery img {\n  max-width: 100%; }\n\narticle .image-gallery {\n  margin: 4.5rem 0; }\n\n.jarallax {\n  position: relative;\n  z-index: 0; }\n\n.jarallax > .jarallax-img {\n  position: absolute;\n  object-fit: cover;\n  /* support for plugin https://github.com/bfred-it/object-fit-images */\n  font-family: 'object-fit: cover;';\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: -1; }\n\n.list-group-item {\n  border: 1px solid #e9ecef; }\n\n.list-group-comments .media + .media {\n  padding: 0.75rem 0 0.75rem 1.5rem; }\n\n@media (min-width: 768px) {\n  .list-group-comments .media:first-child:not(:last-child) {\n    margin-bottom: 1.5rem; }\n  .list-group-comments .media + .media {\n    margin-left: 3.75rem;\n    border-left: 4px solid #e9ecef; }\n    .list-group-comments .media + .media:last-child {\n      margin-bottom: 0.75rem; } }\n\n@media (max-width: 767.98px) {\n  .list-group-comments .media:nth-child(2) {\n    margin-top: 0.75rem; } }\n\na.list-group-item.disabled {\n  opacity: .5; }\n\n.list-group-lg .list-group-item {\n  padding: 1rem 1.25rem; }\n\n.list-group-item-action.active h6, .list-group-item-action.active .text-muted {\n  color: #fff !important; }\n\n@media (max-width: 991.98px) {\n  .list-group-chat {\n    border-radius: 0.25rem 0.25rem 0 0;\n    overflow-x: scroll;\n    flex-direction: row;\n    border-bottom: 1px solid #dee2e6; } }\n\n.logo {\n  height: 2.25rem;\n  width: auto; }\n  .logo.logo-lg {\n    height: 3rem; }\n  .logo.logo-sm {\n    height: 1.125rem; }\n\n.modal.fade .modal-dialog {\n  transform: none;\n  transition: opacity .2s ease-out;\n  opacity: 0; }\n\n.modal.show .modal-dialog {\n  opacity: 1; }\n\n.modal-content iframe {\n  background: #000; }\n\n.modal-center-viewport {\n  display: flex;\n  align-items: center;\n  margin: 0 auto;\n  height: 100vh;\n  justify-content: center;\n  pointer-events: none; }\n  .modal-center-viewport .modal-content {\n    width: 100%;\n    pointer-events: all; }\n\n.modal-header-borderless {\n  border-bottom: none;\n  padding-bottom: 0; }\n\n.modal-footer-borderless {\n  border-top: none;\n  padding-top: 0; }\n\n.nav-tabs .nav-item .nav-link {\n  padding: 0.75rem;\n  transition: color .35s ease, border-color .35s ease;\n  border-bottom: 2px solid rgba(255, 255, 255, 0); }\n  .nav-tabs .nav-item .nav-link:not(.active) {\n    color: #adb5bd; }\n    .nav-tabs .nav-item .nav-link:not(.active):hover {\n      color: #343a40; }\n  .nav-tabs .nav-item .nav-link.active {\n    border-color: #4582EC; }\n\nsection > .tab-content {\n  padding: 3rem 0; }\n\n@media (max-width: 767.98px) {\n  section > .tab-content {\n    padding: 1.5rem 0; } }\n\nnav.flex-md-column .nav-link {\n  padding: .25rem 0;\n  color: #495057;\n  transition: opacity .2s ease; }\n  nav.flex-md-column .nav-link:not(.active):hover {\n    opacity: .5; }\n  nav.flex-md-column .nav-link.active {\n    color: #4582EC; }\n\n@media (max-width: 991.98px) {\n  nav.flex-md-column .nav-link {\n    padding-right: 0.75rem; } }\n\n.card.pricing {\n  text-align: center; }\n  .card.pricing .display-3, .card.pricing .h6 {\n    margin: 1.5rem 0; }\n  .card.pricing .card-body {\n    height: 100%; }\n  .card.pricing ul {\n    margin-bottom: 1.5rem; }\n\n@media (max-width: 575.98px) {\n  .card.pricing .display-3, .card.pricing .h6 {\n    margin: 0.75rem 0; } }\n\n.table.pricing {\n  margin-bottom: 1.5rem;\n  background: #fff; }\n  .table.pricing th, .table.pricing tr, .table.pricing td {\n    font-weight: 400; }\n  .table.pricing thead th {\n    text-align: center;\n    border-bottom-width: 1px; }\n  .table.pricing tbody th {\n    text-align: right; }\n  .table.pricing tbody td {\n    text-align: center; }\n  .table.pricing tbody > tr:first-child {\n    background: #f8f9fa; }\n    .table.pricing tbody > tr:first-child th {\n      vertical-align: middle; }\n    .table.pricing tbody > tr:first-child td {\n      padding: 1.5rem; }\n  .table.pricing tbody .display-4 {\n    margin-bottom: 0; }\n\n@media (min-width: 768px) {\n  .table.pricing {\n    display: table; } }\n\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n  color: black;\n  background: none;\n  text-shadow: 0 1px white;\n  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n  font-size: 1em;\n  text-align: left;\n  white-space: pre;\n  word-spacing: normal;\n  word-break: normal;\n  word-wrap: normal;\n  line-height: 1.5;\n  -moz-tab-size: 4;\n  tab-size: 4;\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none; }\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n  text-shadow: none;\n  background: #b3d4fc; }\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n  text-shadow: none;\n  background: #b3d4fc; }\n\n@media print {\n  code[class*=\"language-\"],\n  pre[class*=\"language-\"] {\n    text-shadow: none; } }\n\n/* Code blocks */\npre[class*=\"language-\"] {\n  padding: 1em;\n  margin: .5em 0;\n  overflow: auto; }\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n  background: #f5f2f0; }\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n  padding: .1em;\n  border-radius: .3em;\n  white-space: normal; }\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: slategray; }\n\n.token.punctuation {\n  color: #999; }\n\n.namespace {\n  opacity: .7; }\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #905; }\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #690; }\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  color: #9a6e3a;\n  background: rgba(255, 255, 255, 0.5); }\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  color: #07a; }\n\n.token.function,\n.token.class-name {\n  color: #DD4A68; }\n\n.token.regex,\n.token.important,\n.token.variable {\n  color: #e90; }\n\n.token.important,\n.token.bold {\n  font-weight: bold; }\n\n.token.italic {\n  font-style: italic; }\n\n.token.entity {\n  cursor: help; }\n\n/**\n * okaidia theme for JavaScript, CSS and HTML\n * Loosely based on Monokai textmate theme by http://www.monokai.nl/\n * @author ocodia\n */\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n  color: #f8f8f2;\n  background: none;\n  text-shadow: 0 1px rgba(0, 0, 0, 0.3);\n  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n  font-size: 1em;\n  text-align: left;\n  white-space: pre;\n  word-spacing: normal;\n  word-break: normal;\n  word-wrap: normal;\n  line-height: 1.5;\n  -moz-tab-size: 4;\n  tab-size: 4;\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none; }\n\n/* Code blocks */\npre[class*=\"language-\"] {\n  padding: 1em;\n  margin: .5em 0;\n  overflow: auto;\n  border-radius: 0.3em; }\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n  background: #272822; }\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n  padding: .1em;\n  border-radius: .3em;\n  white-space: normal; }\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: slategray; }\n\n.token.punctuation {\n  color: #f8f8f2; }\n\n.namespace {\n  opacity: .7; }\n\n.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #f92672; }\n\n.token.boolean,\n.token.number {\n  color: #ae81ff; }\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #a6e22e; }\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable {\n  color: #f8f8f2; }\n\n.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name {\n  color: #e6db74; }\n\n.token.keyword {\n  color: #66d9ef; }\n\n.token.regex,\n.token.important {\n  color: #fd971f; }\n\n.token.important,\n.token.bold {\n  font-weight: bold; }\n\n.token.italic {\n  font-style: italic; }\n\n.token.entity {\n  cursor: help; }\n\n.progress {\n  border-radius: 100rem; }\n\n.progress-sm {\n  height: .5rem; }\n\n.fullwidth-split {\n  padding: 0; }\n  .fullwidth-split .container-fluid {\n    padding-left: 0;\n    padding-right: 0; }\n\n.fullwidth-split-text {\n  display: flex;\n  justify-content: center;\n  padding: 6rem 0; }\n\n@media (max-width: 575.98px) {\n  .fullwidth-split-text {\n    padding: 3rem 0; }\n  .fullwidth-split-image .bg-image {\n    position: relative; } }\n\n.step-circle {\n  display: inline-block;\n  width: 3rem;\n  height: 3rem;\n  line-height: 3rem;\n  border-radius: 50% !important;\n  background: #ced4da;\n  color: #fff;\n  text-align: center;\n  font-size: 1.75rem;\n  transition: background-color .35s ease;\n  padding: 0 !important;\n  border-bottom: none !important; }\n  .step-circle.active {\n    background: #4582EC; }\n  .step-circle.step-circle-sm {\n    width: 2.25rem;\n    height: 2.25rem;\n    line-height: 2.25rem;\n    font-size: 1rem;\n    font-weight: 500; }\n  .step-circle.step-circle-lg {\n    width: 6rem;\n    height: 6rem;\n    line-height: 6rem; }\n\n.active .step-circle {\n  background: #4582EC; }\n\n[data-toggle=\"tab\"].card .step-circle {\n  transition: background-color .35s ease, transform .2s ease; }\n\n[data-toggle=\"tab\"].card:hover .step-circle {\n  transform: scale(0.9); }\n\n[data-sticky] {\n  transition: padding-top .35s ease; }\n\n.main-container [data-sticky].position-fixed {\n  padding-top: 1.5rem; }\n\n.navbar-container [data-sticky=\"top\"].position-absolute {\n  transition: background-color .35s ease; }\n  .navbar-container [data-sticky=\"top\"].position-absolute.position-fixed {\n    background: #212529; }\n\n.thumbnail {\n  display: inline-block;\n  text-align: center;\n  border-radius: 0.125rem;\n  width: 4.5rem; }\n  .thumbnail.thumbnail-sm {\n    width: 3rem; }\n  .thumbnail + span {\n    display: inline-block;\n    margin-left: 0.75rem; }\n\nthead tr th {\n  font-weight: 400;\n  color: #343a40; }\n\ntbody tr th {\n  font-weight: 400; }\n\n.table thead th {\n  border-bottom-width: 1px; }\n\n.table.align-items-center th, .table.align-items-center td {\n  vertical-align: middle; }\n\n.table-hover tr {\n  transition: background-color .2s ease; }\n\n.table-borderless tr.bg-white > th, .table-borderless tr.bg-white > td {\n  padding: 1rem;\n  position: relative; }\n  .table-borderless tr.bg-white > th:after, .table-borderless tr.bg-white > td:after {\n    content: '';\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    border-top: 1px solid #dee2e6;\n    border-bottom: 1px solid #dee2e6;\n    left: 0;\n    top: 0;\n    pointer-events: none; }\n\n.table-borderless tr.bg-white > th {\n  border-radius: 0.25rem 0 0 0.25rem; }\n  .table-borderless tr.bg-white > th:after {\n    border-radius: 0.25rem 0 0 0.25rem;\n    border-left: 1px solid #dee2e6; }\n\n.table-borderless tr.bg-white > td:last-child {\n  border-radius: 0 0.25rem 0.25rem 0; }\n  .table-borderless tr.bg-white > td:last-child:after {\n    border-radius: 0 0.25rem 0.25rem 0;\n    border-right: 1px solid #dee2e6; }\n\n.table-hover tr.bg-white:hover {\n  background-color: #e9ecef !important; }\n\ntr.table-divider {\n  height: 0.75rem;\n  pointer-events: none; }\n  tr.table-divider th, tr.table-divider td {\n    padding: 0 !important; }\n\n.section-intro {\n  margin-bottom: 1.5rem; }\n\n@media (min-width: 576px) {\n  .section-intro {\n    margin-bottom: 3rem; } }\n\n.row.align-items-center .section-intro {\n  margin-bottom: 0; }\n\n@media (max-width: 767.98px) {\n  .row.align-items-center .section-intro {\n    margin-bottom: 1.5rem; } }\n\n.section-outro {\n  margin-top: 1.5rem; }\n\n@media (min-width: 576px) {\n  .section-outro {\n    margin-top: 3rem; } }\n\n.title-decorative {\n  font-size: 0.875rem;\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  color: #adb5bd;\n  margin-bottom: 0.75rem;\n  display: block;\n  font-weight: 500; }\n  .title-decorative:last-child {\n    margin-bottom: 0; }\n\n@media (min-width: 576px) {\n  .title-decorative {\n    margin-bottom: 1.5rem; } }\n\n.embed-responsive {\n  background: #000; }\n\n@-webkit-keyframes fadeOut {\n  0% {\n    opacity: 1; }\n  100% {\n    opacity: 0;\n    transform: scale(1.5); } }\n\n@keyframes fadeOut {\n  0% {\n    opacity: 1; }\n  100% {\n    opacity: 0;\n    transform: scale(1.5); } }\n\n.video-cover {\n  background: #000;\n  position: relative;\n  overflow: hidden; }\n  .video-cover .bg-image {\n    z-index: 1;\n    transition: opacity 0.35s ease; }\n  .video-cover .video-play-icon {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    z-index: 2;\n    margin-top: -36px;\n    margin-left: -36px;\n    margin-bottom: 0 !important; }\n  .video-cover iframe {\n    background: #000;\n    transition: opacity 0.35s ease 0.35s;\n    opacity: 0; }\n  .video-cover.video-cover-playing .bg-image {\n    opacity: 0;\n    pointer-events: none; }\n  .video-cover.video-cover-playing .video-play-icon {\n    -webkit-animation: fadeOut .35s ease forwards;\n            animation: fadeOut .35s ease forwards;\n    pointer-events: none; }\n  .video-cover.video-cover-playing iframe {\n    opacity: 1; }\n  .video-cover:not(:last-child) {\n    margin-bottom: 1.5rem; }\n\n.media > .video-cover:first-child {\n  margin-bottom: 0;\n  margin-right: 1.5rem; }\n\n.video-play-icon {\n  position: relative;\n  margin: 0 auto;\n  cursor: pointer;\n  width: 72px;\n  height: 72px;\n  line-height: 72px;\n  border-radius: 50%;\n  background: #fff;\n  text-align: center;\n  font-size: 2rem;\n  transition: transform .2s ease; }\n  .video-play-icon:not(:last-child) {\n    margin-bottom: 1.5rem; }\n  .video-play-icon i {\n    color: #343a40; }\n    .video-play-icon i:before {\n      margin-right: 0; }\n  .video-play-icon:hover {\n    transform: scale(0.9); }\n\n.video-cover-touch .bg-image, .video-cover-touch .video-play-icon {\n  display: none; }\n\n.video-cover-touch iframe {\n  opacity: 1; }\n\n@media (max-width: 575.98px) {\n  .fullwidth-split-image .bg-image + .video-play-icon {\n    position: absolute;\n    z-index: 2;\n    top: 50%;\n    left: 50%;\n    transform: translateX(-50%) translateY(-50%); } }\n\n.wizard .step-anchor {\n  position: relative;\n  z-index: 1;\n  margin-bottom: 1.5rem; }\n  .wizard .step-anchor .step-circle {\n    color: #fff !important;\n    position: relative;\n    transition: none; }\n    .wizard .step-anchor .step-circle:before {\n      content: '';\n      display: block;\n      position: absolute;\n      border: 2px solid #4582EC;\n      width: 130%;\n      height: 130%;\n      border-radius: 50%;\n      left: -15%;\n      top: -15%;\n      opacity: 0;\n      transition: opacity .35s ease, transform .35s ease;\n      z-index: -1;\n      background: #f8f9fa;\n      transform: scale(1.25); }\n  .wizard .step-anchor > li {\n    position: relative; }\n    .wizard .step-anchor > li:after, .wizard .step-anchor > li:before {\n      content: '';\n      position: absolute;\n      left: 0;\n      top: 50%;\n      height: 2px;\n      background: #ced4da;\n      width: 50%;\n      z-index: -2;\n      transition: background-color .35s ease; }\n    .wizard .step-anchor > li:after {\n      left: 50%; }\n    .wizard .step-anchor > li:first-child:before {\n      display: none; }\n    .wizard .step-anchor > li:last-child:after {\n      display: none; }\n    .wizard .step-anchor > li.active .step-circle, .wizard .step-anchor > li.done .step-circle {\n      background-color: #4582EC; }\n    .wizard .step-anchor > li.active:after, .wizard .step-anchor > li.active:before {\n      background: #4582EC; }\n    .wizard .step-anchor > li.active .step-circle:before {\n      opacity: 1;\n      transform: scale(1); }\n    .wizard .step-anchor > li.done:after, .wizard .step-anchor > li.done:before {\n      background: #4582EC; }\n    .wizard .step-anchor > li:not(.done) {\n      cursor: default; }\n      .wizard .step-anchor > li:not(.done) a {\n        cursor: default; }\n\n.wizard .step-content {\n  display: none; }\n\n.wizard .sw-toolbar {\n  margin-top: 1.5rem;\n  padding: 0; }\n\n.wizard .tab-content:not([style]) {\n  opacity: 0; }\n\n.card .sw-theme-default > .step-anchor .step-circle:before {\n  background: #fff; }\n\n@media (max-width: 991.98px) {\n  .wizard .step-anchor.flex-md-column {\n    padding: 0 12px; } }\n\n@media (min-width: 768px) {\n  .wizard .step-anchor.flex-md-column > li {\n    text-align: center; }\n    .wizard .step-anchor.flex-md-column > li > a {\n      display: inline-block; }\n    .wizard .step-anchor.flex-md-column > li:before {\n      display: none; }\n    .wizard .step-anchor.flex-md-column > li:after {\n      position: relative;\n      top: 0;\n      width: 2px;\n      height: 50px;\n      display: block;\n      margin-bottom: -7px; }\n    .wizard .step-anchor.flex-md-column > li:last-child:after {\n      display: none; } }\n\n@media (min-width: 768px) {\n  .sw-theme-default > .step-anchor {\n    margin-bottom: 3rem; } }\n\nimg[data-action=\"zoom\"] {\n  cursor: zoom-in; }\n\n.zoom-img,\n.zoom-img-wrap {\n  position: relative;\n  z-index: 666;\n  transition: all 300ms; }\n\nimg.zoom-img {\n  cursor: zoom-out; }\n\n.zoom-overlay {\n  cursor: zoom-out;\n  z-index: 420;\n  background: #fff;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  filter: \"alpha(opacity=0)\";\n  opacity: 0;\n  transition: opacity 300ms; }\n\n.zoom-overlay-open .zoom-overlay {\n  filter: \"alpha(opacity=100)\";\n  opacity: 1; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2Nzcy96b29tLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQjtDQUNqQjtBQUNEOztFQUVFLG1CQUFtQjtFQUNuQixhQUFhO0VBQ2Isc0JBQXNCO0NBQ3ZCO0FBQ0Q7RUFDRSxpQkFBaUI7Q0FDbEI7QUFDRDtFQUNFLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixPQUFPO0VBQ1AsUUFBUTtFQUNSLFNBQVM7RUFDVCxVQUFVO0VBQ1YsMkJBQTJCO0VBQzNCLFdBQVc7RUFDWCwrQkFBK0I7Q0FDaEM7QUFDRDtFQUNFLDZCQUE2QjtFQUM3QixXQUFXO0NBQ1oiLCJmaWxlIjoiem9vbS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJpbWdbZGF0YS1hY3Rpb249XCJ6b29tXCJdIHtcbiAgY3Vyc29yOiB6b29tLWluO1xufVxuLnpvb20taW1nLFxuLnpvb20taW1nLXdyYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDY2NjtcbiAgdHJhbnNpdGlvbjogYWxsIDMwMG1zO1xufVxuaW1nLnpvb20taW1nIHtcbiAgY3Vyc29yOiB6b29tLW91dDtcbn1cbi56b29tLW92ZXJsYXkge1xuICBjdXJzb3I6IHpvb20tb3V0O1xuICB6LWluZGV4OiA0MjA7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBmaWx0ZXI6IFwiYWxwaGEob3BhY2l0eT0wKVwiO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiAgICAgIG9wYWNpdHkgMzAwbXM7XG59XG4uem9vbS1vdmVybGF5LW9wZW4gLnpvb20tb3ZlcmxheSB7XG4gIGZpbHRlcjogXCJhbHBoYShvcGFjaXR5PTEwMClcIjtcbiAgb3BhY2l0eTogMTtcbn1cbiJdfQ== */\n\n/*# sourceMappingURL=theme.css.map */\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/aos.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),s=o(c),f=n(8),d=o(f),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,startEvent:\"DOMContentLoaded\",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n      aos: MutationObserver is not supported on this browser,\\n      code mutations observing has been disabled.\\n      You may have to call \"refreshHard()\" by yourself.\\n    '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;t<e.length;t+=1){if(o=e[t],o.dataset&&o.dataset.aos)return!0;if(i=o.children&&n(o.children))return!0}return!1}function o(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function i(){return!!o()}function r(e,t){var n=window.document,i=o(),r=new i(a);u=t,r.observe(n.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function a(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),o=Array.prototype.slice.call(e.removedNodes),i=t.concat(o);if(n(i))return u()})}Object.defineProperty(t,\"__esModule\",{value:!0});var u=function(){};t.default={isSupported:i,ready:r}},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(){return navigator.userAgent||navigator.vendor||window.opera||\"\"}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,u=/(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,c=/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,s=function(){function e(){n(this,e)}return i(e,[{key:\"phone\",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:\"mobile\",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:\"tablet\",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new s},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute(\"data-aos-once\");t>e.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/bootstrap.js",
    "content": "/*!\n  * Bootstrap v4.3.1\n  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n  */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports,require(\"jquery\"),require(\"popper.js\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"jquery\",\"popper.js\"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){\"use strict\";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);\"function\"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}g=g&&g.hasOwnProperty(\"default\")?g.default:g,u=u&&u.hasOwnProperty(\"default\")?u.default:u;var e=\"transitionend\";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:\"bsTransitionEnd\",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute(\"data-target\");if(!e||\"#\"===e){var n=t.getAttribute(\"href\");e=n&&\"#\"!==n?n.trim():\"\"}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css(\"transition-duration\"),n=g(t).css(\"transition-delay\"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(\",\")[0],n=n.split(\",\")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?\"element\":(a=r,{}.toString.call(a).match(/\\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option \"'+i+'\" provided type \"'+s+'\" but expected type \"'+o+'\".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if(\"function\"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o=\"alert\",r=\"bs.alert\",a=\".\"+r,c=g.fn[o],h={CLOSE:\"close\"+a,CLOSED:\"closed\"+a,CLICK_DATA_API:\"click\"+a+\".data-api\"},f=\"alert\",d=\"fade\",m=\"show\",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest(\".\"+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),\"close\"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}}]),i}();g(document).on(h.CLICK_DATA_API,'[data-dismiss=\"alert\"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v=\"button\",E=\"bs.button\",y=\".\"+E,C=\".data-api\",T=g.fn[v],S=\"active\",b=\"btn\",I=\"focus\",D='[data-toggle^=\"button\"]',w='[data-toggle=\"buttons\"]',A='input:not([type=\"hidden\"])',N=\".active\",O=\".btn\",k={CLICK_DATA_API:\"click\"+y+C,FOCUS_BLUR_DATA_API:\"focus\"+y+C+\" blur\"+y+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if(\"radio\"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute(\"disabled\")||n.hasAttribute(\"disabled\")||i.classList.contains(\"disabled\")||n.classList.contains(\"disabled\"))return;i.checked=!this._element.classList.contains(S),g(i).trigger(\"change\")}i.focus(),e=!1}}e&&this._element.setAttribute(\"aria-pressed\",!this._element.classList.contains(S)),t&&g(this._element).toggleClass(S)},t.dispose=function(){g.removeData(this._element,E),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(E);t||(t=new n(this),g(this).data(E,t)),\"toggle\"===e&&t[e]()})},s(n,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}}]),n}();g(document).on(k.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;g(e).hasClass(b)||(e=g(e).closest(O)),P._jQueryInterface.call(g(e),\"toggle\")}).on(k.FOCUS_BLUR_DATA_API,D,function(t){var e=g(t.target).closest(O)[0];g(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),g.fn[v]=P._jQueryInterface,g.fn[v].Constructor=P,g.fn[v].noConflict=function(){return g.fn[v]=T,P._jQueryInterface};var L=\"carousel\",j=\"bs.carousel\",H=\".\"+j,R=\".data-api\",x=g.fn[L],F={interval:5e3,keyboard:!0,slide:!1,pause:\"hover\",wrap:!0,touch:!0},U={interval:\"(number|boolean)\",keyboard:\"boolean\",slide:\"(boolean|string)\",pause:\"(string|boolean)\",wrap:\"boolean\",touch:\"boolean\"},W=\"next\",q=\"prev\",M=\"left\",K=\"right\",Q={SLIDE:\"slide\"+H,SLID:\"slid\"+H,KEYDOWN:\"keydown\"+H,MOUSEENTER:\"mouseenter\"+H,MOUSELEAVE:\"mouseleave\"+H,TOUCHSTART:\"touchstart\"+H,TOUCHMOVE:\"touchmove\"+H,TOUCHEND:\"touchend\"+H,POINTERDOWN:\"pointerdown\"+H,POINTERUP:\"pointerup\"+H,DRAG_START:\"dragstart\"+H,LOAD_DATA_API:\"load\"+H+R,CLICK_DATA_API:\"click\"+H+R},B=\"carousel\",V=\"active\",Y=\"slide\",z=\"carousel-item-right\",X=\"carousel-item-left\",$=\"carousel-item-next\",G=\"carousel-item-prev\",J=\"pointer-event\",Z=\".active\",tt=\".active.carousel-item\",et=\".carousel-item\",nt=\".carousel-item img\",it=\".carousel-item-next, .carousel-item-prev\",ot=\".carousel-indicators\",rt=\"[data-slide], [data-slide-to]\",st='[data-ride=\"carousel\"]',at={TOUCH:\"touch\",PEN:\"pen\"},lt=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(ot),this._touchSupported=\"ontouchstart\"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(W)},t.nextWhenVisible=function(){!document.hidden&&g(this._element).is(\":visible\")&&\"hidden\"!==g(this._element).css(\"visibility\")&&this.next()},t.prev=function(){this._isSliding||this._slide(q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(it)&&(_.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(tt);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?W:q;this._slide(i,this._items[t])}},t.dispose=function(){g(this._element).off(H),g.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},F,t),_.typeCheckConfig(L,t,U),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&g(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),\"hover\"===this._config.pause&&g(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),\"hover\"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};g(this._element.querySelectorAll(nt)).on(Q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(g(this._element).on(Q.POINTERDOWN,function(t){return e(t)}),g(this._element).on(Q.POINTERUP,function(t){return i(t)}),this._element.classList.add(J)):(g(this._element).on(Q.TOUCHSTART,function(t){return e(t)}),g(this._element).on(Q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),g(this._element).on(Q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(et)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===W,i=t===q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===q?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(tt)),o=g.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return g(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(Z));g(e).removeClass(V);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&g(n).addClass(V)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(tt),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===W?(n=X,i=$,M):(n=z,i=G,K),l&&g(l).hasClass(V))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=g.Event(Q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(g(this._element).hasClass(Y)){g(l).addClass(i),_.reflow(l),g(s).addClass(n),g(l).addClass(n);var f=parseInt(l.getAttribute(\"data-interval\"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=_.getTransitionDurationFromElement(s);g(s).one(_.TRANSITION_END,function(){g(l).removeClass(n+\" \"+i).addClass(V),g(s).removeClass(V+\" \"+i+\" \"+n),r._isSliding=!1,setTimeout(function(){return g(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else g(s).removeClass(V),g(l).addClass(V),this._isSliding=!1,g(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=g(this).data(j),e=l({},F,g(this).data());\"object\"==typeof i&&(e=l({},e,i));var n=\"string\"==typeof i?i:e.slide;if(t||(t=new r(this,e),g(this).data(j,t)),\"number\"==typeof i)t.to(i);else if(\"string\"==typeof n){if(void 0===t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=_.getSelectorFromElement(this);if(e){var n=g(e)[0];if(n&&g(n).hasClass(B)){var i=l({},g(n).data(),g(this).data()),o=this.getAttribute(\"data-slide-to\");o&&(i.interval=!1),r._jQueryInterface.call(g(n),i),o&&g(n).data(j).to(o),t.preventDefault()}}},s(r,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return F}}]),r}();g(document).on(Q.CLICK_DATA_API,rt,lt._dataApiClickHandler),g(window).on(Q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(st)),e=0,n=t.length;e<n;e++){var i=g(t[e]);lt._jQueryInterface.call(i,i.data())}}),g.fn[L]=lt._jQueryInterface,g.fn[L].Constructor=lt,g.fn[L].noConflict=function(){return g.fn[L]=x,lt._jQueryInterface};var ct=\"collapse\",ht=\"bs.collapse\",ut=\".\"+ht,ft=g.fn[ct],dt={toggle:!0,parent:\"\"},gt={toggle:\"boolean\",parent:\"(string|element)\"},_t={SHOW:\"show\"+ut,SHOWN:\"shown\"+ut,HIDE:\"hide\"+ut,HIDDEN:\"hidden\"+ut,CLICK_DATA_API:\"click\"+ut+\".data-api\"},mt=\"show\",pt=\"collapse\",vt=\"collapsing\",Et=\"collapsed\",yt=\"width\",Ct=\"height\",Tt=\".show, .collapsing\",St='[data-toggle=\"collapse\"]',bt=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle=\"collapse\"][href=\"#'+e.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+e.id+'\"]'));for(var n=[].slice.call(document.querySelectorAll(St)),i=0,o=n.length;i<o;i++){var r=n[i],s=_.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){g(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!g(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Tt)).filter(function(t){return\"string\"==typeof n._config.parent?t.getAttribute(\"data-parent\")===n._config.parent:t.classList.contains(pt)})).length&&(t=null),!(t&&(e=g(t).not(this._selector).data(ht))&&e._isTransitioning))){var i=g.Event(_t.SHOW);if(g(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(g(t).not(this._selector),\"hide\"),e||g(t).data(ht,null));var o=this._getDimension();g(this._element).removeClass(pt).addClass(vt),this._element.style[o]=0,this._triggerArray.length&&g(this._triggerArray).removeClass(Et).attr(\"aria-expanded\",!0),this.setTransitioning(!0);var r=\"scroll\"+(o[0].toUpperCase()+o.slice(1)),s=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){g(n._element).removeClass(vt).addClass(pt).addClass(mt),n._element.style[o]=\"\",n.setTransitioning(!1),g(n._element).trigger(_t.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+\"px\"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&g(this._element).hasClass(mt)){var e=g.Event(_t.HIDE);if(g(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+\"px\",_.reflow(this._element),g(this._element).addClass(vt).removeClass(pt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=_.getSelectorFromElement(r);if(null!==s)g([].slice.call(document.querySelectorAll(s))).hasClass(mt)||g(r).addClass(Et).attr(\"aria-expanded\",!1)}this.setTransitioning(!0);this._element.style[n]=\"\";var a=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){t.setTransitioning(!1),g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){g.removeData(this._element,ht),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},dt,t)).toggle=Boolean(t.toggle),_.typeCheckConfig(ct,t,gt),t},t._getDimension=function(){return g(this._element).hasClass(yt)?yt:Ct},t._getParent=function(){var t,n=this;_.isElement(this._config.parent)?(t=this._config.parent,void 0!==this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle=\"collapse\"][data-parent=\"'+this._config.parent+'\"]',i=[].slice.call(t.querySelectorAll(e));return g(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=g(t).hasClass(mt);e.length&&g(e).toggleClass(Et,!n).attr(\"aria-expanded\",n)},a._getTargetFromElement=function(t){var e=_.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=g(this),e=t.data(ht),n=l({},dt,t.data(),\"object\"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ht,e)),\"string\"==typeof i){if(void 0===e[i])throw new TypeError('No method named \"'+i+'\"');e[i]()}})},s(a,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return dt}}]),a}();g(document).on(_t.CLICK_DATA_API,St,function(t){\"A\"===t.currentTarget.tagName&&t.preventDefault();var n=g(this),e=_.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));g(i).each(function(){var t=g(this),e=t.data(ht)?\"toggle\":n.data();bt._jQueryInterface.call(t,e)})}),g.fn[ct]=bt._jQueryInterface,g.fn[ct].Constructor=bt,g.fn[ct].noConflict=function(){return g.fn[ct]=ft,bt._jQueryInterface};var It=\"dropdown\",Dt=\"bs.dropdown\",wt=\".\"+Dt,At=\".data-api\",Nt=g.fn[It],Ot=new RegExp(\"38|40|27\"),kt={HIDE:\"hide\"+wt,HIDDEN:\"hidden\"+wt,SHOW:\"show\"+wt,SHOWN:\"shown\"+wt,CLICK:\"click\"+wt,CLICK_DATA_API:\"click\"+wt+At,KEYDOWN_DATA_API:\"keydown\"+wt+At,KEYUP_DATA_API:\"keyup\"+wt+At},Pt=\"disabled\",Lt=\"show\",jt=\"dropup\",Ht=\"dropright\",Rt=\"dropleft\",xt=\"dropdown-menu-right\",Ft=\"position-static\",Ut='[data-toggle=\"dropdown\"]',Wt=\".dropdown form\",qt=\".dropdown-menu\",Mt=\".navbar-nav\",Kt=\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",Qt=\"top-start\",Bt=\"top-end\",Vt=\"bottom-start\",Yt=\"bottom-end\",zt=\"right-start\",Xt=\"left-start\",$t={offset:0,flip:!0,boundary:\"scrollParent\",reference:\"toggle\",display:\"dynamic\"},Gt={offset:\"(number|string|function)\",flip:\"boolean\",boundary:\"(string|element)\",reference:\"(string|element)\",display:\"string\"},Jt=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)){var t=c._getParentFromElement(this._element),e=g(this._menu).hasClass(Lt);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=g.Event(kt.SHOW,n);if(g(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if(void 0===u)throw new TypeError(\"Bootstrap's dropdowns require Popper.js (https://popper.js.org/)\");var o=this._element;\"parent\"===this._config.reference?o=t:_.isElement(this._config.reference)&&(o=this._config.reference,void 0!==this._config.reference.jquery&&(o=this._config.reference[0])),\"scrollParent\"!==this._config.boundary&&g(t).addClass(Ft),this._popper=new u(o,this._menu,this._getPopperConfig())}\"ontouchstart\"in document.documentElement&&0===g(t).closest(Mt).length&&g(document.body).children().on(\"mouseover\",null,g.noop),this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),g(this._menu).toggleClass(Lt),g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||g(this._element).hasClass(Pt)||g(this._menu).hasClass(Lt))){var t={relatedTarget:this._element},e=g.Event(kt.SHOW,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)&&g(this._menu).hasClass(Lt)){var t={relatedTarget:this._element},e=g.Event(kt.HIDE,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN,t)))}},t.dispose=function(){g.removeData(this._element,Dt),g(this._element).off(wt),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;g(this._element).on(kt.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,g(this._element).data(),t),_.typeCheckConfig(It,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(qt))}return this._menu},t._getPlacement=function(){var t=g(this._element.parentNode),e=Vt;return t.hasClass(jt)?(e=Qt,g(this._menu).hasClass(xt)&&(e=Bt)):t.hasClass(Ht)?e=zt:t.hasClass(Rt)?e=Xt:g(this._menu).hasClass(xt)&&(e=Yt),e},t._detectNavbar=function(){return 0<g(this._element).closest(\".navbar\").length},t._getOffset=function(){var e=this,t={};return\"function\"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return\"static\"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(Dt);if(t||(t=new c(this,\"object\"==typeof e?e:null),g(this).data(Dt,t)),\"string\"==typeof e){if(void 0===t[e])throw new TypeError('No method named \"'+e+'\"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&(\"keyup\"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(Ut)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=g(e[n]).data(Dt),s={relatedTarget:e[n]};if(t&&\"click\"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(g(o).hasClass(Lt)&&!(t&&(\"click\"===t.type&&/input|textarea/i.test(t.target.tagName)||\"keyup\"===t.type&&9===t.which)&&g.contains(o,t.target))){var l=g.Event(kt.HIDE,s);g(o).trigger(l),l.isDefaultPrevented()||(\"ontouchstart\"in document.documentElement&&g(document.body).children().off(\"mouseover\",null,g.noop),e[n].setAttribute(\"aria-expanded\",\"false\"),g(a).removeClass(Lt),g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=_.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||g(t.target).closest(qt).length)):Ot.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!g(this).hasClass(Pt))){var e=c._getParentFromElement(this),n=g(e).hasClass(Lt);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(Kt));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(Ut);g(r).trigger(\"focus\")}g(this).trigger(\"click\")}}},s(c,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return $t}},{key:\"DefaultType\",get:function(){return Gt}}]),c}();g(document).on(kt.KEYDOWN_DATA_API,Ut,Jt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API,qt,Jt._dataApiKeydownHandler).on(kt.CLICK_DATA_API+\" \"+kt.KEYUP_DATA_API,Jt._clearMenus).on(kt.CLICK_DATA_API,Ut,function(t){t.preventDefault(),t.stopPropagation(),Jt._jQueryInterface.call(g(this),\"toggle\")}).on(kt.CLICK_DATA_API,Wt,function(t){t.stopPropagation()}),g.fn[It]=Jt._jQueryInterface,g.fn[It].Constructor=Jt,g.fn[It].noConflict=function(){return g.fn[It]=Nt,Jt._jQueryInterface};var Zt=\"modal\",te=\"bs.modal\",ee=\".\"+te,ne=g.fn[Zt],ie={backdrop:!0,keyboard:!0,focus:!0,show:!0},oe={backdrop:\"(boolean|string)\",keyboard:\"boolean\",focus:\"boolean\",show:\"boolean\"},re={HIDE:\"hide\"+ee,HIDDEN:\"hidden\"+ee,SHOW:\"show\"+ee,SHOWN:\"shown\"+ee,FOCUSIN:\"focusin\"+ee,RESIZE:\"resize\"+ee,CLICK_DISMISS:\"click.dismiss\"+ee,KEYDOWN_DISMISS:\"keydown.dismiss\"+ee,MOUSEUP_DISMISS:\"mouseup.dismiss\"+ee,MOUSEDOWN_DISMISS:\"mousedown.dismiss\"+ee,CLICK_DATA_API:\"click\"+ee+\".data-api\"},se=\"modal-dialog-scrollable\",ae=\"modal-scrollbar-measure\",le=\"modal-backdrop\",ce=\"modal-open\",he=\"fade\",ue=\"show\",fe=\".modal-dialog\",de=\".modal-body\",ge='[data-toggle=\"modal\"]',_e='[data-dismiss=\"modal\"]',me=\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",pe=\".sticky-top\",ve=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(fe),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){g(this._element).hasClass(he)&&(this._isTransitioning=!0);var n=g.Event(re.SHOW,{relatedTarget:t});g(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),g(this._element).on(re.CLICK_DISMISS,_e,function(t){return e.hide(t)}),g(this._dialog).on(re.MOUSEDOWN_DISMISS,function(){g(e._element).one(re.MOUSEUP_DISMISS,function(t){g(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=g.Event(re.HIDE);if(g(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=g(this._element).hasClass(he);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),g(document).off(re.FOCUSIN),g(this._element).removeClass(ue),g(this._element).off(re.CLICK_DISMISS),g(this._dialog).off(re.MOUSEDOWN_DISMISS),i){var o=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return g(t).off(ee)}),g(document).off(re.FOCUSIN),g.removeData(this._element,te),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},ie,t),_.typeCheckConfig(Zt,t,oe),t},t._showElement=function(t){var e=this,n=g(this._element).hasClass(he);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),g(this._dialog).hasClass(se)?this._dialog.querySelector(de).scrollTop=0:this._element.scrollTop=0,n&&_.reflow(this._element),g(this._element).addClass(ue),this._config.focus&&this._enforceFocus();var i=g.Event(re.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,g(e._element).trigger(i)};if(n){var r=_.getTransitionDurationFromElement(this._dialog);g(this._dialog).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;g(document).off(re.FOCUSIN).on(re.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===g(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?g(this._element).on(re.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||g(this._element).off(re.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?g(window).on(re.RESIZE,function(t){return e.handleUpdate(t)}):g(window).off(re.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._isTransitioning=!1,this._showBackdrop(function(){g(document.body).removeClass(ce),t._resetAdjustments(),t._resetScrollbar(),g(t._element).trigger(re.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(g(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=g(this._element).hasClass(he)?he:\"\";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement(\"div\"),this._backdrop.className=le,n&&this._backdrop.classList.add(n),g(this._backdrop).appendTo(document.body),g(this._element).on(re.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&(\"static\"===e._config.backdrop?e._element.focus():e.hide())}),n&&_.reflow(this._backdrop),g(this._backdrop).addClass(ue),!t)return;if(!n)return void t();var i=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){g(this._backdrop).removeClass(ue);var o=function(){e._removeBackdrop(),t&&t()};if(g(this._element).hasClass(he)){var r=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},t._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(me)),e=[].slice.call(document.querySelectorAll(pe));g(t).each(function(t,e){var n=e.style.paddingRight,i=g(e).css(\"padding-right\");g(e).data(\"padding-right\",n).css(\"padding-right\",parseFloat(i)+o._scrollbarWidth+\"px\")}),g(e).each(function(t,e){var n=e.style.marginRight,i=g(e).css(\"margin-right\");g(e).data(\"margin-right\",n).css(\"margin-right\",parseFloat(i)-o._scrollbarWidth+\"px\")});var n=document.body.style.paddingRight,i=g(document.body).css(\"padding-right\");g(document.body).data(\"padding-right\",n).css(\"padding-right\",parseFloat(i)+this._scrollbarWidth+\"px\")}g(document.body).addClass(ce)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(me));g(t).each(function(t,e){var n=g(e).data(\"padding-right\");g(e).removeData(\"padding-right\"),e.style.paddingRight=n||\"\"});var e=[].slice.call(document.querySelectorAll(\"\"+pe));g(e).each(function(t,e){var n=g(e).data(\"margin-right\");void 0!==n&&g(e).css(\"margin-right\",n).removeData(\"margin-right\")});var n=g(document.body).data(\"padding-right\");g(document.body).removeData(\"padding-right\"),document.body.style.paddingRight=n||\"\"},t._getScrollbarWidth=function(){var t=document.createElement(\"div\");t.className=ae,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=g(this).data(te),e=l({},ie,g(this).data(),\"object\"==typeof n&&n?n:{});if(t||(t=new o(this,e),g(this).data(te,t)),\"string\"==typeof n){if(void 0===t[n])throw new TypeError('No method named \"'+n+'\"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return ie}}]),o}();g(document).on(re.CLICK_DATA_API,ge,function(t){var e,n=this,i=_.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=g(e).data(te)?\"toggle\":l({},g(e).data(),g(this).data());\"A\"!==this.tagName&&\"AREA\"!==this.tagName||t.preventDefault();var r=g(e).one(re.SHOW,function(t){t.isDefaultPrevented()||r.one(re.HIDDEN,function(){g(n).is(\":visible\")&&n.focus()})});ve._jQueryInterface.call(g(e),o,this)}),g.fn[Zt]=ve._jQueryInterface,g.fn[Zt].Constructor=ve,g.fn[Zt].noConflict=function(){return g.fn[Zt]=ne,ve._jQueryInterface};var Ee=[\"background\",\"cite\",\"href\",\"itemtype\",\"longdesc\",\"poster\",\"src\",\"xlink:href\"],ye={\"*\":[\"class\",\"dir\",\"id\",\"lang\",\"role\",/^aria-[\\w-]*$/i],a:[\"target\",\"href\",\"title\",\"rel\"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[\"src\",\"alt\",\"title\",\"width\",\"height\"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Ce=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Te=/^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Se(t,s,e){if(0===t.length)return t;if(e&&\"function\"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,\"text/html\"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll(\"*\")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),\"continue\";var o=[].slice.call(n.attributes),r=[].concat(s[\"*\"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===Ee.indexOf(n)||Boolean(t.nodeValue.match(Ce)||t.nodeValue.match(Te));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var be=\"tooltip\",Ie=\"bs.tooltip\",De=\".\"+Ie,we=g.fn[be],Ae=\"bs-tooltip\",Ne=new RegExp(\"(^|\\\\s)\"+Ae+\"\\\\S+\",\"g\"),Oe=[\"sanitize\",\"whiteList\",\"sanitizeFn\"],ke={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(number|string|function)\",container:\"(string|element|boolean)\",fallbackPlacement:\"(string|array)\",boundary:\"(string|element)\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",whiteList:\"object\"},Pe={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\"},Le={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,selector:!1,placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\",sanitize:!0,sanitizeFn:null,whiteList:ye},je=\"show\",He=\"out\",Re={HIDE:\"hide\"+De,HIDDEN:\"hidden\"+De,SHOW:\"show\"+De,SHOWN:\"shown\"+De,INSERTED:\"inserted\"+De,CLICK:\"click\"+De,FOCUSIN:\"focusin\"+De,FOCUSOUT:\"focusout\"+De,MOUSEENTER:\"mouseenter\"+De,MOUSELEAVE:\"mouseleave\"+De},xe=\"fade\",Fe=\"show\",Ue=\".tooltip-inner\",We=\".arrow\",qe=\"hover\",Me=\"focus\",Ke=\"click\",Qe=\"manual\",Be=function(){function i(t,e){if(void 0===u)throw new TypeError(\"Bootstrap's tooltips require Popper.js (https://popper.js.org/)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(\".modal\").off(\"hide.bs.modal\"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if(\"none\"===g(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute(\"id\",r),this.element.setAttribute(\"aria-describedby\",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s=\"function\"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),\"ontouchstart\"in document.documentElement&&g(document.body).children().on(\"mouseover\",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute(\"aria-describedby\"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),\"ontouchstart\"in document.documentElement&&g(document.body).children().off(\"mouseover\",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=\"\"}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+\"-\"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+\" \"+Fe)},t.setElementContent=function(t,e){\"object\"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute(\"data-original-title\");return t||(t=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return\"function\"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(\" \").forEach(function(t){if(\"click\"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(\".modal\").on(\"hide.bs.modal\",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==t)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusin\"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusout\"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),\"number\"==typeof(t=l({},this.constructor.Default,e,\"object\"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr(\"class\").match(Ne);null!==e&&e.length&&t.removeClass(e.join(\"\"))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute(\"x-placement\")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e=\"object\"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),\"string\"==typeof n)){if(void 0===t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return Le}},{key:\"NAME\",get:function(){return be}},{key:\"DATA_KEY\",get:function(){return Ie}},{key:\"Event\",get:function(){return Re}},{key:\"EVENT_KEY\",get:function(){return De}},{key:\"DefaultType\",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve=\"popover\",Ye=\"bs.popover\",ze=\".\"+Ye,Xe=g.fn[Ve],$e=\"bs-popover\",Ge=new RegExp(\"(^|\\\\s)\"+$e+\"\\\\S+\",\"g\"),Je=l({},Be.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'}),Ze=l({},Be.DefaultType,{content:\"(string|element|function)\"}),tn=\"fade\",en=\"show\",nn=\".popover-header\",on=\".popover-body\",rn={HIDE:\"hide\"+ze,HIDDEN:\"hidden\"+ze,SHOW:\"show\"+ze,SHOWN:\"shown\"+ze,INSERTED:\"inserted\"+ze,CLICK:\"click\"+ze,FOCUSIN:\"focusin\"+ze,FOCUSOUT:\"focusout\"+ze,MOUSEENTER:\"mouseenter\"+ze,MOUSELEAVE:\"mouseleave\"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+\"-\"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();\"function\"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+\" \"+en)},o._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr(\"class\").match(Ge);null!==e&&0<e.length&&t.removeClass(e.join(\"\"))},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ye),e=\"object\"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ye,t)),\"string\"==typeof n)){if(void 0===t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return Je}},{key:\"NAME\",get:function(){return Ve}},{key:\"DATA_KEY\",get:function(){return Ye}},{key:\"Event\",get:function(){return rn}},{key:\"EVENT_KEY\",get:function(){return ze}},{key:\"DefaultType\",get:function(){return Ze}}]),i}(Be);g.fn[Ve]=sn._jQueryInterface,g.fn[Ve].Constructor=sn,g.fn[Ve].noConflict=function(){return g.fn[Ve]=Xe,sn._jQueryInterface};var an=\"scrollspy\",ln=\"bs.scrollspy\",cn=\".\"+ln,hn=g.fn[an],un={offset:10,method:\"auto\",target:\"\"},fn={offset:\"number\",method:\"string\",target:\"(string|element)\"},dn={ACTIVATE:\"activate\"+cn,SCROLL:\"scroll\"+cn,LOAD_DATA_API:\"load\"+cn+\".data-api\"},gn=\"dropdown-item\",_n=\"active\",mn='[data-spy=\"scroll\"]',pn=\".nav, .list-group\",vn=\".nav-link\",En=\".nav-item\",yn=\".list-group-item\",Cn=\".dropdown\",Tn=\".dropdown-item\",Sn=\".dropdown-toggle\",bn=\"offset\",In=\"position\",Dn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement=\"BODY\"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+\" \"+vn+\",\"+this._config.target+\" \"+yn+\",\"+this._config.target+\" \"+Tn,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,g(this._scrollElement).on(dn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bn:In,o=\"auto\"===this._config.method?t:this._config.method,r=o===In?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=_.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[g(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){g.removeData(this._element,ln),g(this._scrollElement).off(cn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if(\"string\"!=typeof(t=l({},un,\"object\"==typeof t&&t?t:{})).target){var e=g(t.target).attr(\"id\");e||(e=_.getUID(an),g(t.target).attr(\"id\",e)),t.target=\"#\"+e}return _.typeCheckConfig(an,t,fn),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(\",\").map(function(t){return t+'[data-target=\"'+e+'\"],'+t+'[href=\"'+e+'\"]'}),n=g([].slice.call(document.querySelectorAll(t.join(\",\"))));n.hasClass(gn)?(n.closest(Cn).find(Sn).addClass(_n),n.addClass(_n)):(n.addClass(_n),n.parents(pn).prev(vn+\", \"+yn).addClass(_n),n.parents(pn).prev(En).children(vn).addClass(_n)),g(this._scrollElement).trigger(dn.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(_n)}).forEach(function(t){return t.classList.remove(_n)})},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(ln);if(t||(t=new n(this,\"object\"==typeof e&&e),g(this).data(ln,t)),\"string\"==typeof e){if(void 0===t[e])throw new TypeError('No method named \"'+e+'\"');t[e]()}})},s(n,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return un}}]),n}();g(window).on(dn.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(mn)),e=t.length;e--;){var n=g(t[e]);Dn._jQueryInterface.call(n,n.data())}}),g.fn[an]=Dn._jQueryInterface,g.fn[an].Constructor=Dn,g.fn[an].noConflict=function(){return g.fn[an]=hn,Dn._jQueryInterface};var wn=\"bs.tab\",An=\".\"+wn,Nn=g.fn.tab,On={HIDE:\"hide\"+An,HIDDEN:\"hidden\"+An,SHOW:\"show\"+An,SHOWN:\"shown\"+An,CLICK_DATA_API:\"click\"+An+\".data-api\"},kn=\"dropdown-menu\",Pn=\"active\",Ln=\"disabled\",jn=\"fade\",Hn=\"show\",Rn=\".dropdown\",xn=\".nav, .list-group\",Fn=\".active\",Un=\"> li > .active\",Wn='[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',qn=\".dropdown-toggle\",Mn=\"> .dropdown-menu .active\",Kn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(Pn)||g(this._element).hasClass(Ln))){var t,i,e=g(this._element).closest(xn)[0],o=_.getSelectorFromElement(this._element);if(e){var r=\"UL\"===e.nodeName||\"OL\"===e.nodeName?Un:Fn;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(On.HIDE,{relatedTarget:this._element}),a=g.Event(On.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(On.HIDDEN,{relatedTarget:n._element}),e=g.Event(On.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,wn),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||\"UL\"!==e.nodeName&&\"OL\"!==e.nodeName?g(e).children(Fn):g(e).find(Un))[0],r=n&&o&&g(o).hasClass(jn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(Hn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(Pn);var i=g(e.parentNode).find(Mn)[0];i&&g(i).removeClass(Pn),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!1)}if(g(t).addClass(Pn),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),_.reflow(t),t.classList.contains(jn)&&t.classList.add(Hn),t.parentNode&&g(t.parentNode).hasClass(kn)){var o=g(t).closest(Rn)[0];if(o){var r=[].slice.call(o.querySelectorAll(qn));g(r).addClass(Pn)}t.setAttribute(\"aria-expanded\",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(wn);if(e||(e=new i(this),t.data(wn,e)),\"string\"==typeof n){if(void 0===e[n])throw new TypeError('No method named \"'+n+'\"');e[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}}]),i}();g(document).on(On.CLICK_DATA_API,Wn,function(t){t.preventDefault(),Kn._jQueryInterface.call(g(this),\"show\")}),g.fn.tab=Kn._jQueryInterface,g.fn.tab.Constructor=Kn,g.fn.tab.noConflict=function(){return g.fn.tab=Nn,Kn._jQueryInterface};var Qn=\"toast\",Bn=\"bs.toast\",Vn=\".\"+Bn,Yn=g.fn[Qn],zn={CLICK_DISMISS:\"click.dismiss\"+Vn,HIDE:\"hide\"+Vn,HIDDEN:\"hidden\"+Vn,SHOW:\"show\"+Vn,SHOWN:\"shown\"+Vn},Xn=\"fade\",$n=\"hide\",Gn=\"show\",Jn=\"showing\",Zn={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},ti={animation:!0,autohide:!0,delay:500},ei='[data-dismiss=\"toast\"]',ni=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(zn.SHOW),this._config.animation&&this._element.classList.add(Xn);var e=function(){t._element.classList.remove(Jn),t._element.classList.add(Gn),g(t._element).trigger(zn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove($n),this._element.classList.add(Jn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Gn)&&(g(this._element).trigger(zn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Gn)&&this._element.classList.remove(Gn),g(this._element).off(zn.CLICK_DISMISS),g.removeData(this._element,Bn),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},ti,g(this._element).data(),\"object\"==typeof t&&t?t:{}),_.typeCheckConfig(Qn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(zn.CLICK_DISMISS,ei,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add($n),g(t._element).trigger(zn.HIDDEN)};if(this._element.classList.remove(Gn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Bn);if(e||(e=new i(this,\"object\"==typeof n&&n),t.data(Bn,e)),\"string\"==typeof n){if(void 0===e[n])throw new TypeError('No method named \"'+n+'\"');e[n](this)}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"DefaultType\",get:function(){return Zn}},{key:\"Default\",get:function(){return ti}}]),i}();g.fn[Qn]=ni._jQueryInterface,g.fn[Qn].Constructor=ni,g.fn[Qn].noConflict=function(){return g.fn[Qn]=Yn,ni._jQueryInterface},function(){if(void 0===g)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var t=g.fn.jquery.split(\" \")[0].split(\".\");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")}(),t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Jt,t.Modal=ve,t.Popover=sn,t.Scrollspy=Dn,t.Tab=Kn,t.Toast=ni,t.Tooltip=Be,t.Util=_,Object.defineProperty(t,\"__esModule\",{value:!0})});\n//# sourceMappingURL=bootstrap.js.map\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/custom.js",
    "content": "﻿const search = document.getElementById(\"registerLocation\");\nconst matchList = document.getElementById(\"datalistOptions\");\n\nconst searchLocation = async searchText => {\n    const res = await fetch('account/getlocation?'\n        + new URLSearchParams({\n            location: searchText\n    }));\n    const locationData = await res.json();\n\n    console.log(locationData);\n    let matches = locationData.filter(state => {\n        const regex = new RegExp(`^${searchText}`, 'gi');\n        return String(state.zip).match(regex) || String(state.cityName).match(regex)\n    });\n    if (searchText.length === 0) {\n        matches = [];\n    }\n    outPutHtml(matches);\n}\n\nconst outPutHtml = matches => {\n    if (matches.length > 0) {\n        const html = matches.map(match =>\n            `<li id=\"registerValues\" value=\"${match.stateCode}\">${match.cityName}, ${match.stateCode}</li>`)\n            .join(\"\");\n        matchList.innerHTML = html;\n    }\n}\n\n\nsearch.addEventListener('input', () => {\n    searchLocation(search.value);\n})\n\n\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/flickity.pkgd.js",
    "content": "/*!\n * Flickity PACKAGED v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /* globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\n      return factory( window, jQuery );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('jquery')\n    );\n  } else {\n    // browser global\n    window.jQueryBridget = factory(\n      window,\n      window.jQuery\n    );\n  }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n  function( message ) {\n    console.error( message );\n  };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n  $ = $ || jQuery || window.jQuery;\n  if ( !$ ) {\n    return;\n  }\n\n  // add option method -> $().plugin('option', {...})\n  if ( !PluginClass.prototype.option ) {\n    // option setter\n    PluginClass.prototype.option = function( opts ) {\n      // bail out if not an object\n      if ( !$.isPlainObject( opts ) ){\n        return;\n      }\n      this.options = $.extend( true, this.options, opts );\n    };\n  }\n\n  // make jQuery plugin\n  $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n    if ( typeof arg0 == 'string' ) {\n      // method call $().plugin( 'methodName', { options } )\n      // shift arguments by 1\n      var args = arraySlice.call( arguments, 1 );\n      return methodCall( this, arg0, args );\n    }\n    // just $().plugin({ options })\n    plainCall( this, arg0 );\n    return this;\n  };\n\n  // $().plugin('methodName')\n  function methodCall( $elems, methodName, args ) {\n    var returnValue;\n    var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n    $elems.each( function( i, elem ) {\n      // get instance\n      var instance = $.data( elem, namespace );\n      if ( !instance ) {\n        logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n          pluginMethodStr );\n        return;\n      }\n\n      var method = instance[ methodName ];\n      if ( !method || methodName.charAt(0) == '_' ) {\n        logError( pluginMethodStr + ' is not a valid method' );\n        return;\n      }\n\n      // apply method, get return value\n      var value = method.apply( instance, args );\n      // set return value if value is returned, use only first value\n      returnValue = returnValue === undefined ? value : returnValue;\n    });\n\n    return returnValue !== undefined ? returnValue : $elems;\n  }\n\n  function plainCall( $elems, options ) {\n    $elems.each( function( i, elem ) {\n      var instance = $.data( elem, namespace );\n      if ( instance ) {\n        // set options & init\n        instance.option( options );\n        instance._init();\n      } else {\n        // initialize new instance\n        instance = new PluginClass( elem, options );\n        $.data( elem, namespace, instance );\n      }\n    });\n  }\n\n  updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n  if ( !$ || ( $ && $.bridget ) ) {\n    return;\n  }\n  $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// -----  ----- //\n\nreturn jQueryBridget;\n\n}));\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, window */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD - RequireJS\n    define( 'ev-emitter/ev-emitter',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory();\n  } else {\n    // Browser globals\n    global.EvEmitter = factory();\n  }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // set events hash\n  var events = this._events = this._events || {};\n  // set listeners array\n  var listeners = events[ eventName ] = events[ eventName ] || [];\n  // only add once\n  if ( listeners.indexOf( listener ) == -1 ) {\n    listeners.push( listener );\n  }\n\n  return this;\n};\n\nproto.once = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // add event\n  this.on( eventName, listener );\n  // set once flag\n  // set onceEvents hash\n  var onceEvents = this._onceEvents = this._onceEvents || {};\n  // set onceListeners object\n  var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n  // set flag\n  onceListeners[ listener ] = true;\n\n  return this;\n};\n\nproto.off = function( eventName, listener ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  var index = listeners.indexOf( listener );\n  if ( index != -1 ) {\n    listeners.splice( index, 1 );\n  }\n\n  return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  // copy over to avoid interference if .off() in listener\n  listeners = listeners.slice(0);\n  args = args || [];\n  // once stuff\n  var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n  for ( var i=0; i < listeners.length; i++ ) {\n    var listener = listeners[i]\n    var isOnce = onceListeners && onceListeners[ listener ];\n    if ( isOnce ) {\n      // remove listener\n      // remove before trigger to prevent recursion\n      this.off( eventName, listener );\n      // unset once flag\n      delete onceListeners[ listener ];\n    }\n    // trigger listener\n    listener.apply( this, args );\n  }\n\n  return this;\n};\n\nproto.allOff = function() {\n  delete this._events;\n  delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n  /* jshint strict: false */ /* globals define, module */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'get-size/get-size',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.getSize = factory();\n  }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n  var num = parseFloat( value );\n  // not a percent like '100%', and a number\n  var isValid = value.indexOf('%') == -1 && !isNaN( num );\n  return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n  function( message ) {\n    console.error( message );\n  };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n  'paddingLeft',\n  'paddingRight',\n  'paddingTop',\n  'paddingBottom',\n  'marginLeft',\n  'marginRight',\n  'marginTop',\n  'marginBottom',\n  'borderLeftWidth',\n  'borderRightWidth',\n  'borderTopWidth',\n  'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n  var size = {\n    width: 0,\n    height: 0,\n    innerWidth: 0,\n    innerHeight: 0,\n    outerWidth: 0,\n    outerHeight: 0\n  };\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    size[ measurement ] = 0;\n  }\n  return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    logError( 'Style returned ' + style +\n      '. Are you running this code in a hidden iframe on Firefox? ' +\n      'See https://bit.ly/getsizebug1' );\n  }\n  return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n  // setup once\n  if ( isSetup ) {\n    return;\n  }\n  isSetup = true;\n\n  // -------------------------- box sizing -------------------------- //\n\n  /**\n   * Chrome & Safari measure the outer-width on style.width on border-box elems\n   * IE11 & Firefox<29 measures the inner-width\n   */\n  var div = document.createElement('div');\n  div.style.width = '200px';\n  div.style.padding = '1px 2px 3px 4px';\n  div.style.borderStyle = 'solid';\n  div.style.borderWidth = '1px 2px 3px 4px';\n  div.style.boxSizing = 'border-box';\n\n  var body = document.body || document.documentElement;\n  body.appendChild( div );\n  var style = getStyle( div );\n  // round value for browser zoom. desandro/masonry#928\n  isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n  getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n  body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n  setup();\n\n  // use querySeletor if elem is string\n  if ( typeof elem == 'string' ) {\n    elem = document.querySelector( elem );\n  }\n\n  // do not proceed on non-objects\n  if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n    return;\n  }\n\n  var style = getStyle( elem );\n\n  // if hidden, everything is 0\n  if ( style.display == 'none' ) {\n    return getZeroSize();\n  }\n\n  var size = {};\n  size.width = elem.offsetWidth;\n  size.height = elem.offsetHeight;\n\n  var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n  // get all measurements\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    var value = style[ measurement ];\n    var num = parseFloat( value );\n    // any 'auto', 'medium' value will be 0\n    size[ measurement ] = !isNaN( num ) ? num : 0;\n  }\n\n  var paddingWidth = size.paddingLeft + size.paddingRight;\n  var paddingHeight = size.paddingTop + size.paddingBottom;\n  var marginWidth = size.marginLeft + size.marginRight;\n  var marginHeight = size.marginTop + size.marginBottom;\n  var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n  var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n  var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n  // overwrite width and height if we can get it from style\n  var styleWidth = getStyleSize( style.width );\n  if ( styleWidth !== false ) {\n    size.width = styleWidth +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n  }\n\n  var styleHeight = getStyleSize( style.height );\n  if ( styleHeight !== false ) {\n    size.height = styleHeight +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n  }\n\n  size.innerWidth = size.width - ( paddingWidth + borderWidth );\n  size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n  size.outerWidth = size.width + marginWidth;\n  size.outerHeight = size.height + marginHeight;\n\n  return size;\n}\n\nreturn getSize;\n\n});\n\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  /*global define: false, module: false */\n  'use strict';\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'desandro-matches-selector/matches-selector',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.matchesSelector = factory();\n  }\n\n}( window, function factory() {\n  'use strict';\n\n  var matchesMethod = ( function() {\n    var ElemProto = window.Element.prototype;\n    // check for the standard method name first\n    if ( ElemProto.matches ) {\n      return 'matches';\n    }\n    // check un-prefixed\n    if ( ElemProto.matchesSelector ) {\n      return 'matchesSelector';\n    }\n    // check vendor prefixes\n    var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n    for ( var i=0; i < prefixes.length; i++ ) {\n      var prefix = prefixes[i];\n      var method = prefix + 'MatchesSelector';\n      if ( ElemProto[ method ] ) {\n        return method;\n      }\n    }\n  })();\n\n  return function matchesSelector( elem, selector ) {\n    return elem[ matchesMethod ]( selector );\n  };\n\n}));\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'fizzy-ui-utils/utils',[\n      'desandro-matches-selector/matches-selector'\n    ], function( matchesSelector ) {\n      return factory( window, matchesSelector );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('desandro-matches-selector')\n    );\n  } else {\n    // browser global\n    window.fizzyUIUtils = factory(\n      window,\n      window.matchesSelector\n    );\n  }\n\n}( window, function factory( window, matchesSelector ) {\n\n\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n  return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n  // return empty array if undefined or null. #6\n  if ( obj === null || obj === undefined ) {\n    return [];\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n  var index = ary.indexOf( obj );\n  if ( index != -1 ) {\n    ary.splice( index, 1 );\n  }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n  while ( elem.parentNode && elem != document.body ) {\n    elem = elem.parentNode;\n    if ( matchesSelector( elem, selector ) ) {\n      return elem;\n    }\n  }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n  if ( typeof elem == 'string' ) {\n    return document.querySelector( elem );\n  }\n  return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n  // make array of elems\n  elems = utils.makeArray( elems );\n  var ffElems = [];\n\n  elems.forEach( function( elem ) {\n    // check that elem is an actual element\n    if ( !( elem instanceof HTMLElement ) ) {\n      return;\n    }\n    // add elem if no selector\n    if ( !selector ) {\n      ffElems.push( elem );\n      return;\n    }\n    // filter & find items if we have a selector\n    // filter\n    if ( matchesSelector( elem, selector ) ) {\n      ffElems.push( elem );\n    }\n    // find children\n    var childElems = elem.querySelectorAll( selector );\n    // concat childElems to filterFound array\n    for ( var i=0; i < childElems.length; i++ ) {\n      ffElems.push( childElems[i] );\n    }\n  });\n\n  return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n  threshold = threshold || 100;\n  // original method\n  var method = _class.prototype[ methodName ];\n  var timeoutName = methodName + 'Timeout';\n\n  _class.prototype[ methodName ] = function() {\n    var timeout = this[ timeoutName ];\n    clearTimeout( timeout );\n\n    var args = arguments;\n    var _this = this;\n    this[ timeoutName ] = setTimeout( function() {\n      method.apply( _this, args );\n      delete _this[ timeoutName ];\n    }, threshold );\n  };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n  var readyState = document.readyState;\n  if ( readyState == 'complete' || readyState == 'interactive' ) {\n    // do async to allow for other scripts to run. metafizzy/flickity#441\n    setTimeout( callback );\n  } else {\n    document.addEventListener( 'DOMContentLoaded', callback );\n  }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n  return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n    return $1 + '-' + $2;\n  }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n  utils.docReady( function() {\n    var dashedNamespace = utils.toDashed( namespace );\n    var dataAttr = 'data-' + dashedNamespace;\n    var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n    var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n    var elems = utils.makeArray( dataAttrElems )\n      .concat( utils.makeArray( jsDashElems ) );\n    var dataOptionsAttr = dataAttr + '-options';\n    var jQuery = window.jQuery;\n\n    elems.forEach( function( elem ) {\n      var attr = elem.getAttribute( dataAttr ) ||\n        elem.getAttribute( dataOptionsAttr );\n      var options;\n      try {\n        options = attr && JSON.parse( attr );\n      } catch ( error ) {\n        // log error, do not initialize\n        if ( console ) {\n          console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n          ': ' + error );\n        }\n        return;\n      }\n      // initialize\n      var instance = new WidgetClass( elem, options );\n      // make available via $().data('namespace')\n      if ( jQuery ) {\n        jQuery.data( elem, namespace, instance );\n      }\n    });\n\n  });\n};\n\n// -----  ----- //\n\nreturn utils;\n\n}));\n\n// Flickity.Cell\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/cell',[\n      'get-size/get-size'\n    ], function( getSize ) {\n      return factory( window, getSize );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('get-size')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Cell = factory(\n      window,\n      window.getSize\n    );\n  }\n\n}( window, function factory( window, getSize ) {\n\n\n\nfunction Cell( elem, parent ) {\n  this.element = elem;\n  this.parent = parent;\n\n  this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n  this.element.style.position = 'absolute';\n  this.element.setAttribute( 'aria-hidden', 'true' );\n  this.x = 0;\n  this.shift = 0;\n};\n\nproto.destroy = function() {\n  // reset style\n  this.unselect();\n  this.element.style.position = '';\n  var side = this.parent.originSide;\n  this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n  this.x = x;\n  this.updateTarget();\n  this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n  var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n  this.target = this.x + this.size[ marginProperty ] +\n    this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n  // render position of cell with in slider\n  var side = this.parent.originSide;\n  this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n  this.element.classList.add('is-selected');\n  this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n  this.element.classList.remove('is-selected');\n  this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n  this.shift = shift;\n  this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n  this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n\n// slide\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/slide',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Slide = factory();\n  }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n  this.parent = parent;\n  this.isOriginLeft = parent.originSide == 'left';\n  this.cells = [];\n  this.outerWidth = 0;\n  this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n  this.cells.push( cell );\n  this.outerWidth += cell.size.outerWidth;\n  this.height = Math.max( cell.size.outerHeight, this.height );\n  // first cell stuff\n  if ( this.cells.length == 1 ) {\n    this.x = cell.x; // x comes from first cell\n    var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n    this.firstMargin = cell.size[ beginMargin ];\n  }\n};\n\nproto.updateTarget = function() {\n  var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n  var lastCell = this.getLastCell();\n  var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n  var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n  this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n  this.cells.forEach( function( cell ) {\n    cell.select();\n  });\n};\n\nproto.unselect = function() {\n  this.cells.forEach( function( cell ) {\n    cell.unselect();\n  });\n};\n\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  });\n};\n\nreturn Slide;\n\n}));\n\n// animate\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/animate',[\n      'fizzy-ui-utils/utils'\n    ], function( utils ) {\n      return factory( window, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.animatePrototype = factory(\n      window,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, utils ) {\n\n\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n  if ( this.isAnimating ) {\n    return;\n  }\n\n  this.isAnimating = true;\n  this.restingFrames = 0;\n  this.animate();\n};\n\nproto.animate = function() {\n  this.applyDragForce();\n  this.applySelectedAttraction();\n\n  var previousX = this.x;\n\n  this.integratePhysics();\n  this.positionSlider();\n  this.settle( previousX );\n  // animate next frame\n  if ( this.isAnimating ) {\n    var _this = this;\n    requestAnimationFrame( function animateFrame() {\n      _this.animate();\n    });\n  }\n};\n\nproto.positionSlider = function() {\n  var x = this.x;\n  // wrap position around\n  if ( this.options.wrapAround && this.cells.length > 1 ) {\n    x = utils.modulo( x, this.slideableWidth );\n    x = x - this.slideableWidth;\n    this.shiftWrapCells( x );\n  }\n\n  this.setTranslateX( x, this.isAnimating );\n  this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n  x += this.cursorPosition;\n  // reverse if right-to-left and using transform\n  x = this.options.rightToLeft ? -x : x;\n  var translateX = this.getPositionValue( x );\n  // use 3D tranforms for hardware acceleration on iOS\n  // but use 2D when settled, for better font-rendering\n  this.slider.style.transform = is3d ?\n    'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n  var firstSlide = this.slides[0];\n  if ( !firstSlide ) {\n    return;\n  }\n  var positionX = -this.x - firstSlide.target;\n  var progress = positionX / this.slidesWidth;\n  this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n  if ( !this.cells.length ) {\n    return;\n  }\n  this.x = -this.selectedSlide.target;\n  this.velocity = 0; // stop wobble\n  this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n  if ( this.options.percentPosition ) {\n    // percent position, round to 2 digits, like 12.34%\n    return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n  } else {\n    // pixel positioning\n    return Math.round( position ) + 'px';\n  }\n};\n\nproto.settle = function( previousX ) {\n  // keep track of frames where x hasn't moved\n  if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n    this.restingFrames++;\n  }\n  // stop animating if resting for 3 or more frames\n  if ( this.restingFrames > 2 ) {\n    this.isAnimating = false;\n    delete this.isFreeScrolling;\n    // render position with translateX when settled\n    this.positionSlider();\n    this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n  }\n};\n\nproto.shiftWrapCells = function( x ) {\n  // shift before cells\n  var beforeGap = this.cursorPosition + x;\n  this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n  // shift after cells\n  var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n  this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n  for ( var i=0; i < cells.length; i++ ) {\n    var cell = cells[i];\n    var cellShift = gap > 0 ? shift : 0;\n    cell.wrapShift( cellShift );\n    gap -= cell.size.outerWidth;\n  }\n};\n\nproto._unshiftCells = function( cells ) {\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  for ( var i=0; i < cells.length; i++ ) {\n    cells[i].wrapShift( 0 );\n  }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n  this.x += this.velocity;\n  this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n  this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n  return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n  // my thanks to Steven Wittens, who simplified this math greatly\n  return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n  if ( !this.isDraggable || !this.isPointerDown ) {\n    return;\n  }\n  // change the position to drag position by applying force\n  var dragVelocity = this.dragX - this.x;\n  var dragForce = dragVelocity - this.velocity;\n  this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n  // do not attract if pointer down or no slides\n  var dragDown = this.isDraggable && this.isPointerDown;\n  if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n    return;\n  }\n  var distance = this.selectedSlide.target * -1 - this.x;\n  var force = distance * this.options.selectedAttraction;\n  this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n\n// Flickity main\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/flickity',[\n      'ev-emitter/ev-emitter',\n      'get-size/get-size',\n      'fizzy-ui-utils/utils',\n      './cell',\n      './slide',\n      './animate'\n    ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n      return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter'),\n      require('get-size'),\n      require('fizzy-ui-utils'),\n      require('./cell'),\n      require('./slide'),\n      require('./animate')\n    );\n  } else {\n    // browser global\n    var _Flickity = window.Flickity;\n\n    window.Flickity = factory(\n      window,\n      window.EvEmitter,\n      window.getSize,\n      window.fizzyUIUtils,\n      _Flickity.Cell,\n      _Flickity.Slide,\n      _Flickity.animatePrototype\n    );\n  }\n\n}( window, function factory( window, EvEmitter, getSize,\n  utils, Cell, Slide, animatePrototype ) {\n\n\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n  elems = utils.makeArray( elems );\n  while ( elems.length ) {\n    toElem.appendChild( elems.shift() );\n  }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n  var queryElement = utils.getQueryElement( element );\n  if ( !queryElement ) {\n    if ( console ) {\n      console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n    }\n    return;\n  }\n  this.element = queryElement;\n  // do not initialize twice on same element\n  if ( this.element.flickityGUID ) {\n    var instance = instances[ this.element.flickityGUID ];\n    instance.option( options );\n    return instance;\n  }\n\n  // add jQuery\n  if ( jQuery ) {\n    this.$element = jQuery( this.element );\n  }\n  // options\n  this.options = utils.extend( {}, this.constructor.defaults );\n  this.option( options );\n\n  // kick things off\n  this._create();\n}\n\nFlickity.defaults = {\n  accessibility: true,\n  // adaptiveHeight: false,\n  cellAlign: 'center',\n  // cellSelector: undefined,\n  // contain: false,\n  freeScrollFriction: 0.075, // friction when free-scrolling\n  friction: 0.28, // friction when selecting\n  namespaceJQueryEvents: true,\n  // initialIndex: 0,\n  percentPosition: true,\n  resize: true,\n  selectedAttraction: 0.025,\n  setGallerySize: true\n  // watchCSS: false,\n  // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n  // add id for Flickity.data\n  var id = this.guid = ++GUID;\n  this.element.flickityGUID = id; // expando\n  instances[ id ] = this; // associate via id\n  // initial properties\n  this.selectedIndex = 0;\n  // how many frames slider has been in same position\n  this.restingFrames = 0;\n  // initial physics properties\n  this.x = 0;\n  this.velocity = 0;\n  this.originSide = this.options.rightToLeft ? 'right' : 'left';\n  // create viewport & slider\n  this.viewport = document.createElement('div');\n  this.viewport.className = 'flickity-viewport';\n  this._createSlider();\n\n  if ( this.options.resize || this.options.watchCSS ) {\n    window.addEventListener( 'resize', this );\n  }\n\n  // add listeners from on option\n  for ( var eventName in this.options.on ) {\n    var listener = this.options.on[ eventName ];\n    this.on( eventName, listener );\n  }\n\n  Flickity.createMethods.forEach( function( method ) {\n    this[ method ]();\n  }, this );\n\n  if ( this.options.watchCSS ) {\n    this.watchCSS();\n  } else {\n    this.activate();\n  }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n  utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n  if ( this.isActive ) {\n    return;\n  }\n  this.isActive = true;\n  this.element.classList.add('flickity-enabled');\n  if ( this.options.rightToLeft ) {\n    this.element.classList.add('flickity-rtl');\n  }\n\n  this.getSize();\n  // move initial cell elements so they can be loaded as cells\n  var cellElems = this._filterFindCellElements( this.element.children );\n  moveElements( cellElems, this.slider );\n  this.viewport.appendChild( this.slider );\n  this.element.appendChild( this.viewport );\n  // get cells from children\n  this.reloadCells();\n\n  if ( this.options.accessibility ) {\n    // allow element to focusable\n    this.element.tabIndex = 0;\n    // listen for key presses\n    this.element.addEventListener( 'keydown', this );\n  }\n\n  this.emitEvent('activate');\n  this.selectInitialIndex();\n  // flag for initial activation, for using initialIndex\n  this.isInitActivated = true;\n  // ready event. #493\n  this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n  // slider element does all the positioning\n  var slider = document.createElement('div');\n  slider.className = 'flickity-slider';\n  slider.style[ this.originSide ] = 0;\n  this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n  return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n  // collection of item elements\n  this.cells = this._makeCells( this.slider.children );\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n  var cellElems = this._filterFindCellElements( elems );\n\n  // create new Flickity for collection\n  var cells = cellElems.map( function( cellElem ) {\n    return new Cell( cellElem, this );\n  }, this );\n\n  return cells;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n  return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n  // size all cells\n  this._sizeCells( this.cells );\n  // position all cells\n  this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n  index = index || 0;\n  // also measure maxCellHeight\n  // start 0 if positioning all cells\n  this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n  var cellX = 0;\n  // get cellX\n  if ( index > 0 ) {\n    var startCell = this.cells[ index - 1 ];\n    cellX = startCell.x + startCell.size.outerWidth;\n  }\n  var len = this.cells.length;\n  for ( var i=index; i < len; i++ ) {\n    var cell = this.cells[i];\n    cell.setPosition( cellX );\n    cellX += cell.size.outerWidth;\n    this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n  }\n  // keep track of cellX for wrap-around\n  this.slideableWidth = cellX;\n  // slides\n  this.updateSlides();\n  // contain slides target\n  this._containSlides();\n  // update slidesWidth\n  this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function( cells ) {\n  cells.forEach( function( cell ) {\n    cell.getSize();\n  });\n};\n\n// --------------------------  -------------------------- //\n\nproto.updateSlides = function() {\n  this.slides = [];\n  if ( !this.cells.length ) {\n    return;\n  }\n\n  var slide = new Slide( this );\n  this.slides.push( slide );\n  var isOriginLeft = this.originSide == 'left';\n  var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n  var canCellFit = this._getCanCellFit();\n\n  this.cells.forEach( function( cell, i ) {\n    // just add cell if first cell in slide\n    if ( !slide.cells.length ) {\n      slide.addCell( cell );\n      return;\n    }\n\n    var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n      ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n    if ( canCellFit.call( this, i, slideWidth ) ) {\n      slide.addCell( cell );\n    } else {\n      // doesn't fit, new slide\n      slide.updateTarget();\n\n      slide = new Slide( this );\n      this.slides.push( slide );\n      slide.addCell( cell );\n    }\n  }, this );\n  // last slide\n  slide.updateTarget();\n  // update .selectedSlide\n  this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n  var groupCells = this.options.groupCells;\n  if ( !groupCells ) {\n    return function() {\n      return false;\n    };\n  } else if ( typeof groupCells == 'number' ) {\n    // group by number. 3 -> [0,1,2], [3,4,5], ...\n    var number = parseInt( groupCells, 10 );\n    return function( i ) {\n      return ( i % number ) !== 0;\n    };\n  }\n  // default, group by width of slide\n  // parse '75%\n  var percentMatch = typeof groupCells == 'string' &&\n    groupCells.match(/^(\\d+)%$/);\n  var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n  return function( i, slideWidth ) {\n    return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n  };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n  this.positionCells();\n  this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n  this.setCellAlign();\n  this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n  // cell align, then based on origin side\n  center: {\n    left: 0.5,\n    right: 0.5\n  },\n  left: {\n    left: 0,\n    right: 1\n  },\n  right: {\n    right: 0,\n    left: 1\n  }\n};\n\nproto.setCellAlign = function() {\n  var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n  this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n  if ( this.options.setGallerySize ) {\n    var height = this.options.adaptiveHeight && this.selectedSlide ?\n      this.selectedSlide.height : this.maxCellHeight;\n    this.viewport.style.height = height + 'px';\n  }\n};\n\nproto._getWrapShiftCells = function() {\n  // only for wrap-around\n  if ( !this.options.wrapAround ) {\n    return;\n  }\n  // unshift previous cells\n  this._unshiftCells( this.beforeShiftCells );\n  this._unshiftCells( this.afterShiftCells );\n  // get before cells\n  // initial gap\n  var gapX = this.cursorPosition;\n  var cellIndex = this.cells.length - 1;\n  this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n  // get after cells\n  // ending gap between last cell and end of gallery viewport\n  gapX = this.size.innerWidth - this.cursorPosition;\n  // start cloning at first cell, working forwards\n  this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n  // keep adding cells until the cover the initial gap\n  var cells = [];\n  while ( gapX > 0 ) {\n    var cell = this.cells[ cellIndex ];\n    if ( !cell ) {\n      break;\n    }\n    cells.push( cell );\n    cellIndex += increment;\n    gapX -= cell.size.outerWidth;\n  }\n  return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n  if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n    return;\n  }\n  var isRightToLeft = this.options.rightToLeft;\n  var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n  var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n  var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n  // content is less than gallery size\n  var isContentSmaller = contentWidth < this.size.innerWidth;\n  // bounds\n  var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n  var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n  // contain each cell target\n  this.slides.forEach( function( slide ) {\n    if ( isContentSmaller ) {\n      // all cells fit inside gallery\n      slide.target = contentWidth * this.cellAlign;\n    } else {\n      // contain to bounds\n      slide.target = Math.max( slide.target, beginBound );\n      slide.target = Math.min( slide.target, endBound );\n    }\n  }, this );\n};\n\n// -----  ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n  var emitArgs = event ? [ event ].concat( args ) : args;\n  this.emitEvent( type, emitArgs );\n\n  if ( jQuery && this.$element ) {\n    // default trigger with type if no event\n    type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n    var $event = type;\n    if ( event ) {\n      // create jQuery event\n      var jQEvent = jQuery.Event( event );\n      jQEvent.type = type;\n      $event = jQEvent;\n    }\n    this.$element.trigger( $event, args );\n  }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n  if ( !this.isActive ) {\n    return;\n  }\n  index = parseInt( index, 10 );\n  this._wrapSelect( index );\n\n  if ( this.options.wrapAround || isWrap ) {\n    index = utils.modulo( index, this.slides.length );\n  }\n  // bail if invalid index\n  if ( !this.slides[ index ] ) {\n    return;\n  }\n  var prevIndex = this.selectedIndex;\n  this.selectedIndex = index;\n  this.updateSelectedSlide();\n  if ( isInstant ) {\n    this.positionSliderAtSelected();\n  } else {\n    this.startAnimation();\n  }\n  if ( this.options.adaptiveHeight ) {\n    this.setGallerySize();\n  }\n  // events\n  this.dispatchEvent( 'select', null, [ index ] );\n  // change event if new index\n  if ( index != prevIndex ) {\n    this.dispatchEvent( 'change', null, [ index ] );\n  }\n  // old v1 event name, remove in v3\n  this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n  var len = this.slides.length;\n  var isWrapping = this.options.wrapAround && len > 1;\n  if ( !isWrapping ) {\n    return index;\n  }\n  var wrapIndex = utils.modulo( index, len );\n  // go to shortest\n  var delta = Math.abs( wrapIndex - this.selectedIndex );\n  var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n  var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n  if ( !this.isDragSelect && backWrapDelta < delta ) {\n    index += len;\n  } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n    index -= len;\n  }\n  // wrap position so slider is within normal area\n  if ( index < 0 ) {\n    this.x -= this.slideableWidth;\n  } else if ( index >= len ) {\n    this.x += this.slideableWidth;\n  }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n  var slide = this.slides[ this.selectedIndex ];\n  // selectedIndex could be outside of slides, if triggered before resize()\n  if ( !slide ) {\n    return;\n  }\n  // unselect previous selected slide\n  this.unselectSelectedSlide();\n  // update new selected slide\n  this.selectedSlide = slide;\n  slide.select();\n  this.selectedCells = slide.cells;\n  this.selectedElements = slide.getCellElements();\n  // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n  // Remove in v3?\n  this.selectedCell = slide.cells[0];\n  this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n  if ( this.selectedSlide ) {\n    this.selectedSlide.unselect();\n  }\n};\n\nproto.selectInitialIndex = function() {\n  var initialIndex = this.options.initialIndex;\n  // already activated, select previous selectedIndex\n  if ( this.isInitActivated ) {\n    this.select( this.selectedIndex, false, true );\n    return;\n  }\n  // select with selector string\n  if ( initialIndex && typeof initialIndex == 'string' ) {\n    var cell = this.queryCell( initialIndex );\n    if ( cell ) {\n      this.selectCell( initialIndex, false, true );\n      return;\n    }\n  }\n\n  var index = 0;\n  // select with number\n  if ( initialIndex && this.slides[ initialIndex ] ) {\n    index = initialIndex;\n  }\n  // select instantly\n  this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n  // get cell\n  var cell = this.queryCell( value );\n  if ( !cell ) {\n    return;\n  }\n\n  var index = this.getCellSlideIndex( cell );\n  this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n  // get index of slides that has cell\n  for ( var i=0; i < this.slides.length; i++ ) {\n    var slide = this.slides[i];\n    var index = slide.cells.indexOf( cell );\n    if ( index != -1 ) {\n      return i;\n    }\n  }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.getCell = function( elem ) {\n  // loop through cells to get the one that matches\n  for ( var i=0; i < this.cells.length; i++ ) {\n    var cell = this.cells[i];\n    if ( cell.element == elem ) {\n      return cell;\n    }\n  }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n  elems = utils.makeArray( elems );\n  var cells = [];\n  elems.forEach( function( elem ) {\n    var cell = this.getCell( elem );\n    if ( cell ) {\n      cells.push( cell );\n    }\n  }, this );\n  return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function( elem ) {\n  // first check if elem is cell\n  var cell = this.getCell( elem );\n  if ( cell ) {\n    return cell;\n  }\n  // try to get parent cell elem\n  elem = utils.getParent( elem, '.flickity-slider > *' );\n  return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n  if ( !adjCount ) {\n    return this.selectedSlide.getCellElements();\n  }\n  index = index === undefined ? this.selectedIndex : index;\n\n  var len = this.slides.length;\n  if ( 1 + ( adjCount * 2 ) >= len ) {\n    return this.getCellElements();\n  }\n\n  var cellElems = [];\n  for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n    var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n    var slide = this.slides[ slideIndex ];\n    if ( slide ) {\n      cellElems = cellElems.concat( slide.getCellElements() );\n    }\n  }\n  return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n  if ( typeof selector == 'number' ) {\n    // use number as index\n    return this.cells[ selector ];\n  }\n  if ( typeof selector == 'string' ) {\n    // do not select invalid selectors from hash: #123, #/. #791\n    if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n      return;\n    }\n    // use string as selector, get element\n    selector = this.element.querySelector( selector );\n  }\n  // get cell from element\n  return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n  this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n  // HACK iOS does not allow touch events to bubble up?!\n  if ( event.type != 'touchstart' ) {\n    event.preventDefault();\n  }\n  this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n  this.watchCSS();\n  this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.getSize();\n  // wrap values\n  if ( this.options.wrapAround ) {\n    this.x = utils.modulo( this.x, this.slideableWidth );\n  }\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  this.emitEvent('resize');\n  // update selected index for group slides, instant\n  // TODO: position can be lost between groups of various numbers\n  var selectedElement = this.selectedElements && this.selectedElements[0];\n  this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n  var watchOption = this.options.watchCSS;\n  if ( !watchOption ) {\n    return;\n  }\n\n  var afterContent = getComputedStyle( this.element, ':after' ).content;\n  // activate if :after { content: 'flickity' }\n  if ( afterContent.indexOf('flickity') != -1 ) {\n    this.activate();\n  } else {\n    this.deactivate();\n  }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n  // only work if element is in focus\n  var isNotFocused = document.activeElement && document.activeElement != this.element;\n  if ( !this.options.accessibility ||isNotFocused ) {\n    return;\n  }\n\n  var handler = Flickity.keyboardHandlers[ event.keyCode ];\n  if ( handler ) {\n    handler.call( this );\n  }\n};\n\nFlickity.keyboardHandlers = {\n  // left arrow\n  37: function() {\n    var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n    this.uiChange();\n    this[ leftMethod ]();\n  },\n  // right arrow\n  39: function() {\n    var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n    this.uiChange();\n    this[ rightMethod ]();\n  },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n  // TODO remove scrollTo once focus options gets more support\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n  var prevScrollY = window.pageYOffset;\n  this.element.focus({ preventScroll: true });\n  // hack to fix scroll jump after focus, #76\n  if ( window.pageYOffset != prevScrollY ) {\n    window.scrollTo( window.pageXOffset, prevScrollY );\n  }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.element.classList.remove('flickity-enabled');\n  this.element.classList.remove('flickity-rtl');\n  this.unselectSelectedSlide();\n  // destroy cells\n  this.cells.forEach( function( cell ) {\n    cell.destroy();\n  });\n  this.element.removeChild( this.viewport );\n  // move child elements back into element\n  moveElements( this.slider.children, this.element );\n  if ( this.options.accessibility ) {\n    this.element.removeAttribute('tabIndex');\n    this.element.removeEventListener( 'keydown', this );\n  }\n  // set flags\n  this.isActive = false;\n  this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n  this.deactivate();\n  window.removeEventListener( 'resize', this );\n  this.allOff();\n  this.emitEvent('destroy');\n  if ( jQuery && this.$element ) {\n    jQuery.removeData( this.element, 'flickity' );\n  }\n  delete this.element.flickityGUID;\n  delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var id = elem && elem.flickityGUID;\n  return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n  jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n  jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n}));\n\n/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /*global define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'unipointer/unipointer',[\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.Unipointer = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n}( window, function factory( window, EvEmitter ) {\n\n\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n  // default to mouse events\n  var startEvent = 'mousedown';\n  if ( window.PointerEvent ) {\n    // Pointer Events\n    startEvent = 'pointerdown';\n  } else if ( 'ontouchstart' in window ) {\n    // Touch Events. iOS Safari\n    startEvent = 'touchstart';\n  }\n  elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n  for ( var i=0; i < touches.length; i++ ) {\n    var touch = touches[i];\n    if ( touch.identifier == this.pointerIdentifier ) {\n      return touch;\n    }\n  }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n  // dismiss clicks from right or middle buttons\n  var button = event.button;\n  if ( button && ( button !== 0 && button !== 1 ) ) {\n    return;\n  }\n  this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n  this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n  this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n  // dismiss right click and other pointers\n  // button = 0 is okay, 1-4 not\n  if ( event.button || this.isPointerDown ) {\n    return;\n  }\n\n  this.isPointerDown = true;\n  // save pointer identifier to match up touch events\n  this.pointerIdentifier = pointer.pointerId !== undefined ?\n    // pointerId for pointer events, touch.indentifier for touch events\n    pointer.pointerId : pointer.identifier;\n\n  this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n  mousedown: [ 'mousemove', 'mouseup' ],\n  touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n  pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n  if ( !event ) {\n    return;\n  }\n  // get proper events to match start event\n  var events = postStartEvents[ event.type ];\n  // bind events to node\n  events.forEach( function( eventName ) {\n    window.addEventListener( eventName, this );\n  }, this );\n  // save these arguments\n  this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n  // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n  if ( !this._boundPointerEvents ) {\n    return;\n  }\n  this._boundPointerEvents.forEach( function( eventName ) {\n    window.removeEventListener( eventName, this );\n  }, this );\n\n  delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n  this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerMove( event, event );\n  }\n};\n\nproto.ontouchmove = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerMove( event, touch );\n  }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n  this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n  this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n  this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerUp( event, event );\n  }\n};\n\nproto.ontouchend = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerUp( event, touch );\n  }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n  this._pointerReset();\n  this._unbindPostStartEvents();\n  this.pointerDone();\n};\n\nproto._pointerReset = function() {\n  // reset properties\n  this.isPointerDown = false;\n  delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerCancel( event, event );\n  }\n};\n\nproto.ontouchcancel = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerCancel( event, touch );\n  }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n  this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// -----  ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n  return {\n    x: pointer.pageX,\n    y: pointer.pageY\n  };\n};\n\n// -----  ----- //\n\nreturn Unipointer;\n\n}));\n\n/*!\n * Unidragger v2.3.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'unidragger/unidragger',[\n      'unipointer/unipointer'\n    ], function( Unipointer ) {\n      return factory( window, Unipointer );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('unipointer')\n    );\n  } else {\n    // browser global\n    window.Unidragger = factory(\n      window,\n      window.Unipointer\n    );\n  }\n\n}( window, function factory( window, Unipointer ) {\n\n\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n  this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n  this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  // bind each handle\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n  var touchAction = isAdd ? this._touchActionValue : '';\n  for ( var i=0; i < this.handles.length; i++ ) {\n    var handle = this.handles[i];\n    this._bindStartEvent( handle, isAdd );\n    handle[ bindMethod ]( 'click', this );\n    // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n    if ( window.PointerEvent ) {\n      handle.style.touchAction = touchAction;\n    }\n  }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n  // track start event position\n  this.pointerDownPointer = pointer;\n\n  event.preventDefault();\n  this.pointerDownBlur();\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n  TEXTAREA: true,\n  INPUT: true,\n  SELECT: true,\n  OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n  radio: true,\n  checkbox: true,\n  button: true,\n  submit: true,\n  image: true,\n  file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n  var isCursorNode = cursorNodes[ event.target.nodeName ];\n  var isClickType = clickTypes[ event.target.type ];\n  var isOkay = !isCursorNode || isClickType;\n  if ( !isOkay ) {\n    this._pointerReset();\n  }\n  return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n  var focused = document.activeElement;\n  // do not blur body for IE10, metafizzy/flickity#117\n  var canBlur = focused && focused.blur && focused != document.body;\n  if ( canBlur ) {\n    focused.blur();\n  }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n  var moveVector = {\n    x: pointer.pageX - this.pointerDownPointer.pageX,\n    y: pointer.pageY - this.pointerDownPointer.pageY\n  };\n  // start drag if pointer has moved far enough to start drag\n  if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n    this._dragStart( event, pointer );\n  }\n  return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n  if ( this.isDragging ) {\n    this._dragEnd( event, pointer );\n  } else {\n    // pointer didn't move enough for drag to start\n    this._staticClick( event, pointer );\n  }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n  this.isDragging = true;\n  // prevent clicks\n  this.isPreventingClicks = true;\n  this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n  this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n  // do not drag if not dragging yet\n  if ( !this.isDragging ) {\n    return;\n  }\n\n  this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  event.preventDefault();\n  this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n  // set flags\n  this.isDragging = false;\n  // re-enable clicking async\n  setTimeout( function() {\n    delete this.isPreventingClicks;\n  }.bind( this ) );\n\n  this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n  if ( this.isPreventingClicks ) {\n    event.preventDefault();\n  }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n  // ignore emulated mouse up clicks\n  if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n    return;\n  }\n\n  this.staticClick( event, pointer );\n\n  // set flag for emulated clicks 300ms after touchend\n  if ( event.type != 'mouseup' ) {\n    this.isIgnoringMouseUp = true;\n    // reset flag after 300ms\n    setTimeout( function() {\n      delete this.isIgnoringMouseUp;\n    }.bind( this ), 400 );\n  }\n};\n\nproto.staticClick = function( event, pointer ) {\n  this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// -----  ----- //\n\nreturn Unidragger;\n\n}));\n\n// drag\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/drag',[\n      './flickity',\n      'unidragger/unidragger',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unidragger, utils ) {\n      return factory( window, Flickity, Unidragger, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unidragger'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window,\n      window.Flickity,\n      window.Unidragger,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n  draggable: '>1',\n  dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// --------------------------  -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n  this.on( 'activate', this.onActivateDrag );\n  this.on( 'uiChange', this._uiChangeDrag );\n  this.on( 'deactivate', this.onDeactivateDrag );\n  this.on( 'cellChange', this.updateDraggable );\n  // TODO updateDraggable on resize? if groupCells & slides change\n  // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n  // #457, RubaXa/Sortable#973\n  if ( isTouch && !isTouchmoveScrollCanceled ) {\n    window.addEventListener( 'touchmove', function() {});\n    isTouchmoveScrollCanceled = true;\n  }\n};\n\nproto.onActivateDrag = function() {\n  this.handles = [ this.viewport ];\n  this.bindHandles();\n  this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n  this.unbindHandles();\n  this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n  // disable dragging if less than 2 slides. #278\n  if ( this.options.draggable == '>1' ) {\n    this.isDraggable = this.slides.length > 1;\n  } else {\n    this.isDraggable = this.options.draggable;\n  }\n  if ( this.isDraggable ) {\n    this.element.classList.add('is-draggable');\n  } else {\n    this.element.classList.remove('is-draggable');\n  }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n  this.options.draggable = true;\n  this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n  this.options.draggable = false;\n  this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n  delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    this._pointerDownDefault( event, pointer );\n    return;\n  }\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n\n  this._pointerDownPreventDefault( event );\n  this.pointerDownFocus( event );\n  // blur\n  if ( document.activeElement != this.element ) {\n    // do not blur if already focused\n    this.pointerDownBlur();\n  }\n\n  // stop if it was moving\n  this.dragX = this.x;\n  this.viewport.classList.add('is-pointer-down');\n  // track scrolling\n  this.pointerDownScroll = getScrollPosition();\n  window.addEventListener( 'scroll', this );\n\n  this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n  // track start event position\n  // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n  this.pointerDownPointer = {\n    pageX: pointer.pageX,\n    pageY: pointer.pageY,\n  };\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n  INPUT: true,\n  TEXTAREA: true,\n  SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isFocusNode ) {\n    this.focus();\n  }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n  var isTouchStart = event.type == 'touchstart';\n  var isTouchPointer = event.pointerType == 'touch';\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n    event.preventDefault();\n  }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n  delete this.isTouchScrolling;\n  this.viewport.classList.remove('is-pointer-down');\n  this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n  window.removeEventListener( 'scroll', this );\n  delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  this.dragStartPosition = this.x;\n  this.startAnimation();\n  window.removeEventListener( 'scroll', this );\n  this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  event.preventDefault();\n\n  this.previousDragX = this.dragX;\n  // reverse if right-to-left\n  var direction = this.options.rightToLeft ? -1 : 1;\n  if ( this.options.wrapAround ) {\n    // wrap around move. #589\n    moveVector.x = moveVector.x % this.slideableWidth;\n  }\n  var dragX = this.dragStartPosition + moveVector.x * direction;\n\n  if ( !this.options.wrapAround && this.slides.length ) {\n    // slow drag\n    var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n    dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n    var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n    dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n  }\n\n  this.dragX = dragX;\n\n  this.dragMoveTime = new Date();\n  this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  if ( this.options.freeScroll ) {\n    this.isFreeScrolling = true;\n  }\n  // set selectedIndex based on where flick will end up\n  var index = this.dragEndRestingSelect();\n\n  if ( this.options.freeScroll && !this.options.wrapAround ) {\n    // if free-scroll & not wrap around\n    // do not free-scroll if going outside of bounding slides\n    // so bounding slides can attract slider, and keep it in bounds\n    var restingX = this.getRestingPosition();\n    this.isFreeScrolling = -restingX > this.slides[0].target &&\n      -restingX < this.getLastSlide().target;\n  } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n    // boost selection if selected index has not changed\n    index += this.dragEndBoostSelect();\n  }\n  delete this.previousDragX;\n  // apply selection\n  // TODO refactor this, selecting here feels weird\n  // HACK, set flag so dragging stays in correct direction\n  this.isDragSelect = this.options.wrapAround;\n  this.select( index );\n  delete this.isDragSelect;\n  this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n  var restingX = this.getRestingPosition();\n  // how far away from selected slide\n  var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n  // get closet resting going up and going down\n  var positiveResting = this._getClosestResting( restingX, distance, 1 );\n  var negativeResting = this._getClosestResting( restingX, distance, -1 );\n  // use closer resting for wrap-around\n  var index = positiveResting.distance < negativeResting.distance ?\n    positiveResting.index : negativeResting.index;\n  return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n  var index = this.selectedIndex;\n  var minDistance = Infinity;\n  var condition = this.options.contain && !this.options.wrapAround ?\n    // if contain, keep going if distance is equal to minDistance\n    function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n  while ( condition( distance, minDistance ) ) {\n    // measure distance to next cell\n    index += increment;\n    minDistance = distance;\n    distance = this.getSlideDistance( -restingX, index );\n    if ( distance === null ) {\n      break;\n    }\n    distance = Math.abs( distance );\n  }\n  return {\n    distance: minDistance,\n    // selected was previous index\n    index: index - increment\n  };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n  var len = this.slides.length;\n  // wrap around if at least 2 slides\n  var isWrapAround = this.options.wrapAround && len > 1;\n  var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n  var slide = this.slides[ slideIndex ];\n  if ( !slide ) {\n    return null;\n  }\n  // add distance for wrap-around slides\n  var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n  return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n  // do not boost if no previousDragX or dragMoveTime\n  if ( this.previousDragX === undefined || !this.dragMoveTime ||\n    // or if drag was held for 100 ms\n    new Date() - this.dragMoveTime > 100 ) {\n    return 0;\n  }\n\n  var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n  var delta = this.previousDragX - this.dragX;\n  if ( distance > 0 && delta > 0 ) {\n    // boost to next if moving towards the right, and positive velocity\n    return 1;\n  } else if ( distance < 0 && delta < 0 ) {\n    // boost to previous if moving towards the left, and negative velocity\n    return -1;\n  }\n  return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n  // get clickedCell, if cell was clicked\n  var clickedCell = this.getParentCell( event.target );\n  var cellElem = clickedCell && clickedCell.element;\n  var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n  this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n  var scroll = getScrollPosition();\n  var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n  var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n  // cancel click/tap if scroll is too much\n  if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n    this._pointerDone();\n  }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n}\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n// prev/next buttons\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/prev-next-button',[\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unipointer'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.Unipointer,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n  this.direction = direction;\n  this.parent = parent;\n  this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n  // properties\n  this.isEnabled = true;\n  this.isPrevious = this.direction == -1;\n  var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n  this.isLeft = this.direction == leftDirection;\n\n  var element = this.element = document.createElement('button');\n  element.className = 'flickity-button flickity-prev-next-button';\n  element.className += this.isPrevious ? ' previous' : ' next';\n  // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n  element.setAttribute( 'type', 'button' );\n  // init as disabled\n  this.disable();\n\n  element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n  // create arrow\n  var svg = this.createSVG();\n  element.appendChild( svg );\n  // events\n  this.parent.on( 'select', this.update.bind( this ) );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n  this.bindStartEvent( this.element );\n  this.element.addEventListener( 'click', this );\n  // add to DOM\n  this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n  // remove from DOM\n  this.parent.element.removeChild( this.element );\n  // click events\n  this.unbindStartEvent( this.element );\n  this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n  var svg = document.createElementNS( svgURI, 'svg');\n  svg.setAttribute( 'class', 'flickity-button-icon' );\n  svg.setAttribute( 'viewBox', '0 0 100 100' );\n  var path = document.createElementNS( svgURI, 'path');\n  var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n  path.setAttribute( 'd', pathMovements );\n  path.setAttribute( 'class', 'arrow' );\n  // rotate arrow\n  if ( !this.isLeft ) {\n    path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n  }\n  svg.appendChild( path );\n  return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n  // use shape as movement if string\n  if ( typeof shape == 'string' ) {\n    return shape;\n  }\n  // create movement string\n  return 'M ' + shape.x0 + ',50' +\n    ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n    ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n    ' L ' + shape.x3 + ',50 ' +\n    ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n    ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n    ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.parent.uiChange();\n  var method = this.isPrevious ? 'previous' : 'next';\n  this.parent[ method ]();\n};\n\n// -----  ----- //\n\nPrevNextButton.prototype.enable = function() {\n  if ( this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = false;\n  this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = true;\n  this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n  // index of first or last slide, if previous or next\n  var slides = this.parent.slides;\n  // enable is wrapAround and at least 2 slides\n  if ( this.parent.options.wrapAround && slides.length > 1 ) {\n    this.enable();\n    return;\n  }\n  var lastIndex = slides.length ? slides.length - 1 : 0;\n  var boundIndex = this.isPrevious ? 0 : lastIndex;\n  var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n  this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  prevNextButtons: true,\n  arrowShape: {\n    x0: 10,\n    x1: 60, y1: 50,\n    x2: 70, y2: 40,\n    x3: 30\n  }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n  if ( !this.options.prevNextButtons ) {\n    return;\n  }\n\n  this.prevButton = new PrevNextButton( -1, this );\n  this.nextButton = new PrevNextButton( 1, this );\n\n  this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n  this.prevButton.activate();\n  this.nextButton.activate();\n  this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n  this.prevButton.deactivate();\n  this.nextButton.deactivate();\n  this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// --------------------------  -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n\n// page dots\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/page-dots',[\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unipointer'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.Unipointer,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n\n\nfunction PageDots( parent ) {\n  this.parent = parent;\n  this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n  // create holder element\n  this.holder = document.createElement('ol');\n  this.holder.className = 'flickity-page-dots';\n  // create dots, array of elements\n  this.dots = [];\n  // events\n  this.handleClick = this.onClick.bind( this );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n  this.setDots();\n  this.holder.addEventListener( 'click', this.handleClick );\n  this.bindStartEvent( this.holder );\n  // add to DOM\n  this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n  this.holder.removeEventListener( 'click', this.handleClick );\n  this.unbindStartEvent( this.holder );\n  // remove from DOM\n  this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n  // get difference between number of slides and number of dots\n  var delta = this.parent.slides.length - this.dots.length;\n  if ( delta > 0 ) {\n    this.addDots( delta );\n  } else if ( delta < 0 ) {\n    this.removeDots( -delta );\n  }\n};\n\nPageDots.prototype.addDots = function( count ) {\n  var fragment = document.createDocumentFragment();\n  var newDots = [];\n  var length = this.dots.length;\n  var max = length + count;\n\n  for ( var i = length; i < max; i++ ) {\n    var dot = document.createElement('li');\n    dot.className = 'dot';\n    dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n    fragment.appendChild( dot );\n    newDots.push( dot );\n  }\n\n  this.holder.appendChild( fragment );\n  this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n  // remove from this.dots collection\n  var removeDots = this.dots.splice( this.dots.length - count, count );\n  // remove from DOM\n  removeDots.forEach( function( dot ) {\n    this.holder.removeChild( dot );\n  }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n  // remove selected class on previous\n  if ( this.selectedDot ) {\n    this.selectedDot.className = 'dot';\n    this.selectedDot.removeAttribute('aria-current');\n  }\n  // don't proceed if no dots\n  if ( !this.dots.length ) {\n    return;\n  }\n  this.selectedDot = this.dots[ this.parent.selectedIndex ];\n  this.selectedDot.className = 'dot is-selected';\n  this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n  var target = event.target;\n  // only care about dot clicks\n  if ( target.nodeName != 'LI' ) {\n    return;\n  }\n\n  this.parent.uiChange();\n  var index = this.dots.indexOf( target );\n  this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n  if ( !this.options.pageDots ) {\n    return;\n  }\n  this.pageDots = new PageDots( this );\n  // events\n  this.on( 'activate', this.activatePageDots );\n  this.on( 'select', this.updateSelectedPageDots );\n  this.on( 'cellChange', this.updatePageDots );\n  this.on( 'resize', this.updatePageDots );\n  this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n  this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n  this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n  this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n  this.pageDots.deactivate();\n};\n\n// -----  ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n\n// player & autoPlay\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/player',[\n      'ev-emitter/ev-emitter',\n      'fizzy-ui-utils/utils',\n      './flickity'\n    ], function( EvEmitter, utils, Flickity ) {\n      return factory( EvEmitter, utils, Flickity );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('ev-emitter'),\n      require('fizzy-ui-utils'),\n      require('./flickity')\n    );\n  } else {\n    // browser global\n    factory(\n      window.EvEmitter,\n      window.fizzyUIUtils,\n      window.Flickity\n    );\n  }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n  this.parent = parent;\n  this.state = 'stopped';\n  // visibility change event handler\n  this.onVisibilityChange = this.visibilityChange.bind( this );\n  this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n  if ( this.state == 'playing' ) {\n    return;\n  }\n  // do not play if page is hidden, start playing when page is visible\n  var isPageHidden = document.hidden;\n  if ( isPageHidden ) {\n    document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n    return;\n  }\n\n  this.state = 'playing';\n  // listen to visibility change\n  document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n  // start ticking\n  this.tick();\n};\n\nPlayer.prototype.tick = function() {\n  // do not tick if not playing\n  if ( this.state != 'playing' ) {\n    return;\n  }\n\n  var time = this.parent.options.autoPlay;\n  // default to 3 seconds\n  time = typeof time == 'number' ? time : 3000;\n  var _this = this;\n  // HACK: reset ticks if stopped and started within interval\n  this.clear();\n  this.timeout = setTimeout( function() {\n    _this.parent.next( true );\n    _this.tick();\n  }, time );\n};\n\nPlayer.prototype.stop = function() {\n  this.state = 'stopped';\n  this.clear();\n  // remove visibility change event\n  document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n  clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n  if ( this.state == 'playing' ) {\n    this.state = 'paused';\n    this.clear();\n  }\n};\n\nPlayer.prototype.unpause = function() {\n  // re-start play if paused\n  if ( this.state == 'paused' ) {\n    this.play();\n  }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n  var isPageHidden = document.hidden;\n  this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n  this.play();\n  document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n  this.player = new Player( this );\n\n  this.on( 'activate', this.activatePlayer );\n  this.on( 'uiChange', this.stopPlayer );\n  this.on( 'pointerDown', this.stopPlayer );\n  this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n  if ( !this.options.autoPlay ) {\n    return;\n  }\n  this.player.play();\n  this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n  this.player.play();\n};\n\nproto.stopPlayer = function() {\n  this.player.stop();\n};\n\nproto.pausePlayer = function() {\n  this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n  this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n  this.player.stop();\n  this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n  if ( !this.options.pauseAutoPlayOnHover ) {\n    return;\n  }\n  this.player.pause();\n  this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n  this.player.unpause();\n  this.element.removeEventListener( 'mouseleave', this );\n};\n\n// -----  ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n\n// add, remove cell\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/add-remove-cell',[\n      './flickity',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n\n\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n  var fragment = document.createDocumentFragment();\n  cells.forEach( function( cell ) {\n    fragment.appendChild( cell.element );\n  });\n  return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n  var cells = this._makeCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  var len = this.cells.length;\n  // default to append\n  index = index === undefined ? len : index;\n  // add cells with document fragment\n  var fragment = getCellsFragment( cells );\n  // append to slider\n  var isAppend = index == len;\n  if ( isAppend ) {\n    this.slider.appendChild( fragment );\n  } else {\n    var insertCellElement = this.cells[ index ].element;\n    this.slider.insertBefore( fragment, insertCellElement );\n  }\n  // add to this.cells\n  if ( index === 0 ) {\n    // prepend, add to start\n    this.cells = cells.concat( this.cells );\n  } else if ( isAppend ) {\n    // append, add to end\n    this.cells = this.cells.concat( cells );\n  } else {\n    // insert in this.cells\n    var endCells = this.cells.splice( index, len - index );\n    this.cells = this.cells.concat( cells ).concat( endCells );\n  }\n\n  this._sizeCells( cells );\n  this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n  this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n  this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n  var cells = this.getCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n\n  var minCellIndex = this.cells.length - 1;\n  // remove cells from collection & DOM\n  cells.forEach( function( cell ) {\n    cell.remove();\n    var index = this.cells.indexOf( cell );\n    minCellIndex = Math.min( index, minCellIndex );\n    utils.removeFrom( this.cells, cell );\n  }, this );\n\n  this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n  var cell = this.getCell( elem );\n  if ( !cell ) {\n    return;\n  }\n  cell.getSize();\n\n  var index = this.cells.indexOf( cell );\n  this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n  var prevSelectedElem = this.selectedElement;\n  this._positionCells( changedCellIndex );\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  // update selectedIndex\n  // try to maintain position & select previous selected element\n  var cell = this.getCell( prevSelectedElem );\n  if ( cell ) {\n    this.selectedIndex = this.getCellSlideIndex( cell );\n  }\n  this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n  this.emitEvent( 'cellChange', [ changedCellIndex ] );\n  // position slider\n  this.select( this.selectedIndex );\n  // do not position slider after lazy load\n  if ( isPositioningSlider ) {\n    this.positionSliderAtSelected();\n  }\n};\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n// lazyload\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/lazyload',[\n      './flickity',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n  this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n  var lazyLoad = this.options.lazyLoad;\n  if ( !lazyLoad ) {\n    return;\n  }\n  // get adjacent cells, use lazyLoad option for adjacent count\n  var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n  var cellElems = this.getAdjacentCellElements( adjCount );\n  // get lazy images in those cells\n  var lazyImages = [];\n  cellElems.forEach( function( cellElem ) {\n    var lazyCellImages = getCellLazyImages( cellElem );\n    lazyImages = lazyImages.concat( lazyCellImages );\n  });\n  // load lazy images\n  lazyImages.forEach( function( img ) {\n    new LazyLoader( img, this );\n  }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n  // check if cell element is lazy image\n  if ( cellElem.nodeName == 'IMG' ) {\n    var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n    var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n    var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n    if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n      return [ cellElem ];\n    }\n  }\n  // select lazy images in cell\n  var lazySelector = 'img[data-flickity-lazyload], ' +\n    'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n  var imgs = cellElem.querySelectorAll( lazySelector );\n  return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n  this.img = img;\n  this.flickity = flickity;\n  this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  // get src & srcset\n  var src = this.img.getAttribute('data-flickity-lazyload') ||\n    this.img.getAttribute('data-flickity-lazyload-src');\n  var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n  // set src & serset\n  this.img.src = src;\n  if ( srcset ) {\n    this.img.setAttribute( 'srcset', srcset );\n  }\n  // remove attr\n  this.img.removeAttribute('data-flickity-lazyload');\n  this.img.removeAttribute('data-flickity-lazyload-src');\n  this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n  this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n  this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n  // unbind events\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n\n  var cell = this.flickity.getParentCell( this.img );\n  var cellElem = cell && cell.element;\n  this.flickity.cellSizeChange( cellElem );\n\n  this.img.classList.add( className );\n  this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// -----  ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n\n/*!\n * Flickity v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/index',[\n      './flickity',\n      './drag',\n      './prev-next-button',\n      './page-dots',\n      './player',\n      './add-remove-cell',\n      './lazyload'\n    ], factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('./flickity'),\n      require('./drag'),\n      require('./prev-next-button'),\n      require('./page-dots'),\n      require('./player'),\n      require('./add-remove-cell'),\n      require('./lazyload')\n    );\n  }\n\n})( window, function factory( Flickity ) {\n  /*jshint strict: false*/\n  return Flickity;\n});\n\n/*!\n * Flickity asNavFor v2.0.1\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity-as-nav-for/as-nav-for',[\n      'flickity/js/index',\n      'fizzy-ui-utils/utils'\n    ], factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( Flickity, utils ) {\n\n\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n  this.on( 'activate', this.activateAsNavFor );\n  this.on( 'deactivate', this.deactivateAsNavFor );\n  this.on( 'destroy', this.destroyAsNavFor );\n\n  var asNavForOption = this.options.asNavFor;\n  if ( !asNavForOption ) {\n    return;\n  }\n  // HACK do async, give time for other flickity to be initalized\n  var _this = this;\n  setTimeout( function initNavCompanion() {\n    _this.setNavCompanion( asNavForOption );\n  });\n};\n\nproto.setNavCompanion = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var companion = Flickity.data( elem );\n  // stop if no companion or companion is self\n  if ( !companion || companion == this ) {\n    return;\n  }\n\n  this.navCompanion = companion;\n  // companion select\n  var _this = this;\n  this.onNavCompanionSelect = function() {\n    _this.navCompanionSelect();\n  };\n  companion.on( 'select', this.onNavCompanionSelect );\n  // click\n  this.on( 'staticClick', this.onNavStaticClick );\n\n  this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n  if ( !this.navCompanion ) {\n    return;\n  }\n  // select slide that matches first cell of slide\n  var selectedCell = this.navCompanion.selectedCells[0];\n  var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n  var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\n  var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n    this.navCompanion.cellAlign ) );\n  this.selectCell( selectIndex, false, isInstant );\n  // set nav selected class\n  this.removeNavSelectedElements();\n  // stop if companion has more cells than this one\n  if ( selectIndex >= this.cells.length ) {\n    return;\n  }\n\n  var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n  this.navSelectedElements = selectedCells.map( function( cell ) {\n    return cell.element;\n  });\n  this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n  return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n  this.navSelectedElements.forEach( function( navElem ) {\n    navElem.classList[ method ]('is-nav-selected');\n  });\n};\n\nproto.activateAsNavFor = function() {\n  this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n  if ( !this.navSelectedElements ) {\n    return;\n  }\n  this.changeNavSelectedClass('remove');\n  delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n  if ( typeof cellIndex == 'number' ) {\n    this.navCompanion.selectCell( cellIndex );\n  }\n};\n\nproto.deactivateAsNavFor = function() {\n  this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n  if ( !this.navCompanion ) {\n    return;\n  }\n  this.navCompanion.off( 'select', this.onNavCompanionSelect );\n  this.off( 'staticClick', this.onNavStaticClick );\n  delete this.navCompanion;\n};\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n  // universal module definition\n\n  /*global define: false, module: false, require: false */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'imagesloaded/imagesloaded',[\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.imagesLoaded = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// --------------------------  factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n  // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n  if ( !( this instanceof ImagesLoaded ) ) {\n    return new ImagesLoaded( elem, options, onAlways );\n  }\n  // use elem as selector string\n  var queryElem = elem;\n  if ( typeof elem == 'string' ) {\n    queryElem = document.querySelectorAll( elem );\n  }\n  // bail if bad element\n  if ( !queryElem ) {\n    console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n    return;\n  }\n\n  this.elements = makeArray( queryElem );\n  this.options = extend( {}, this.options );\n  // shift arguments if no options set\n  if ( typeof options == 'function' ) {\n    onAlways = options;\n  } else {\n    extend( this.options, options );\n  }\n\n  if ( onAlways ) {\n    this.on( 'always', onAlways );\n  }\n\n  this.getImages();\n\n  if ( $ ) {\n    // add jQuery Deferred object\n    this.jqDeferred = new $.Deferred();\n  }\n\n  // HACK check async to allow time to bind listeners\n  setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n  this.images = [];\n\n  // filter & find items if we have an item selector\n  this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n  // filter siblings\n  if ( elem.nodeName == 'IMG' ) {\n    this.addImage( elem );\n  }\n  // get background image on element\n  if ( this.options.background === true ) {\n    this.addElementBackgroundImages( elem );\n  }\n\n  // find children\n  // no non-element nodes, #143\n  var nodeType = elem.nodeType;\n  if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n    return;\n  }\n  var childImgs = elem.querySelectorAll('img');\n  // concat childElems to filterFound array\n  for ( var i=0; i < childImgs.length; i++ ) {\n    var img = childImgs[i];\n    this.addImage( img );\n  }\n\n  // get child background images\n  if ( typeof this.options.background == 'string' ) {\n    var children = elem.querySelectorAll( this.options.background );\n    for ( i=0; i < children.length; i++ ) {\n      var child = children[i];\n      this.addElementBackgroundImages( child );\n    }\n  }\n};\n\nvar elementNodeTypes = {\n  1: true,\n  9: true,\n  11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n    return;\n  }\n  // get url inside url(\"...\")\n  var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n  var matches = reURL.exec( style.backgroundImage );\n  while ( matches !== null ) {\n    var url = matches && matches[2];\n    if ( url ) {\n      this.addBackground( url, elem );\n    }\n    matches = reURL.exec( style.backgroundImage );\n  }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n  var loadingImage = new LoadingImage( img );\n  this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n  var background = new Background( url, elem );\n  this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n  var _this = this;\n  this.progressedCount = 0;\n  this.hasAnyBroken = false;\n  // complete if no images\n  if ( !this.images.length ) {\n    this.complete();\n    return;\n  }\n\n  function onProgress( image, elem, message ) {\n    // HACK - Chrome triggers event before object properties have changed. #83\n    setTimeout( function() {\n      _this.progress( image, elem, message );\n    });\n  }\n\n  this.images.forEach( function( loadingImage ) {\n    loadingImage.once( 'progress', onProgress );\n    loadingImage.check();\n  });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n  this.progressedCount++;\n  this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n  // progress event\n  this.emitEvent( 'progress', [ this, image, elem ] );\n  if ( this.jqDeferred && this.jqDeferred.notify ) {\n    this.jqDeferred.notify( this, image );\n  }\n  // check if completed\n  if ( this.progressedCount == this.images.length ) {\n    this.complete();\n  }\n\n  if ( this.options.debug && console ) {\n    console.log( 'progress: ' + message, image, elem );\n  }\n};\n\nImagesLoaded.prototype.complete = function() {\n  var eventName = this.hasAnyBroken ? 'fail' : 'done';\n  this.isComplete = true;\n  this.emitEvent( eventName, [ this ] );\n  this.emitEvent( 'always', [ this ] );\n  if ( this.jqDeferred ) {\n    var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n    this.jqDeferred[ jqMethod ]( this );\n  }\n};\n\n// --------------------------  -------------------------- //\n\nfunction LoadingImage( img ) {\n  this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n  // If complete is true and browser supports natural sizes,\n  // try to check for image status manually.\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    // report based on naturalWidth\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    return;\n  }\n\n  // If none of the checks above matched, simulate loading on detached element.\n  this.proxyImage = new Image();\n  this.proxyImage.addEventListener( 'load', this );\n  this.proxyImage.addEventListener( 'error', this );\n  // bind to image as well for Firefox. #191\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n  // check for non-zero, non-undefined naturalWidth\n  // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n  return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\nLoadingImage.prototype.onload = function() {\n  this.confirm( true, 'onload' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n  this.confirm( false, 'onerror' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n  this.proxyImage.removeEventListener( 'load', this );\n  this.proxyImage.removeEventListener( 'error', this );\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n  this.url = url;\n  this.element = element;\n  this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.img.src = this.url;\n  // check if image is already complete\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    this.unbindEvents();\n  }\n};\n\nBackground.prototype.unbindEvents = function() {\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n  jQuery = jQuery || window.jQuery;\n  if ( !jQuery ) {\n    return;\n  }\n  // set local variable\n  $ = jQuery;\n  // $().imagesLoaded()\n  $.fn.imagesLoaded = function( options, callback ) {\n    var instance = new ImagesLoaded( this, options, callback );\n    return instance.jqDeferred.promise( $(this) );\n  };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// --------------------------  -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'flickity/js/index',\n      'imagesloaded/imagesloaded'\n    ], function( Flickity, imagesLoaded ) {\n      return factory( window, Flickity, imagesLoaded );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('flickity'),\n      require('imagesloaded')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window,\n      window.Flickity,\n      window.imagesLoaded\n    );\n  }\n\n}( window, function factory( window, Flickity, imagesLoaded ) {\n'use strict';\n\nFlickity.createMethods.push('_createImagesLoaded');\n\nvar proto = Flickity.prototype;\n\nproto._createImagesLoaded = function() {\n  this.on( 'activate', this.imagesLoaded );\n};\n\nproto.imagesLoaded = function() {\n  if ( !this.options.imagesLoaded ) {\n    return;\n  }\n  var _this = this;\n  function onImagesLoadedProgress( instance, image ) {\n    var cell = _this.getParentCell( image.img );\n    _this.cellSizeChange( cell && cell.element );\n    if ( !_this.options.freeScroll ) {\n      _this.positionSliderAtSelected();\n    }\n  }\n  imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n}));\n\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/prism.js",
    "content": "\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function (_self){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t}\n\t\t},\n\n\t\ttype: function (o) {\n\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t},\n\n\t\tobjId: function (obj) {\n\t\t\tif (!obj['__id']) {\n\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t}\n\t\t\treturn obj['__id'];\n\t\t},\n\n\t\t// Deep clone a language definition (e.g. to extend it)\n\t\tclone: function deepClone(o, visited) {\n\t\t\tvar clone, id, type = _.util.type(o);\n\t\t\tvisited = visited || {};\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'Object':\n\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t}\n\t\t\t\t\tclone = {};\n\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tcase 'Array':\n\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t}\n\t\t\t\t\tclone = [];\n\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\to.forEach(function (v, i) {\n\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn o;\n\t\t\t}\n\t\t}\n\t},\n\n\tlanguages: {\n\t\textend: function (id, redef) {\n\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\tfor (var key in redef) {\n\t\t\t\tlang[key] = redef[key];\n\t\t\t}\n\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Insert a token before another token in a language literal\n\t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n\t\t * we cannot just provide an object, we need an object and a key.\n\t\t * @param inside The key (or language id) of the parent\n\t\t * @param before The key to insert before.\n\t\t * @param insert Object with the key/value pairs to insert\n\t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n\t\t */\n\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\troot = root || _.languages;\n\t\t\tvar grammar = root[inside];\n\t\t\tvar ret = {};\n\n\t\t\tfor (var token in grammar) {\n\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar old = root[inside];\n\t\t\troot[inside] = ret;\n\n\t\t\t// Update references in other language definitions\n\t\t\t_.languages.DFS(_.languages, function(key, value) {\n\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\tthis[key] = ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn ret;\n\t\t},\n\n\t\t// Traverse a language definition with Depth First Search\n\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\tvisited = visited || {};\n\n\t\t\tvar objId = _.util.objId;\n\n\t\t\tfor (var i in o) {\n\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\tvar property = o[i],\n\t\t\t\t\t    propertyType = _.util.type(property);\n\n\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t}\n\t\t\t\t\telse if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplugins: {},\n\n\thighlightAll: function(async, callback) {\n\t\t_.highlightAllUnder(document, async, callback);\n\t},\n\n\thighlightAllUnder: function(container, async, callback) {\n\t\tvar env = {\n\t\t\tcallback: callback,\n\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t};\n\n\t\t_.hooks.run(\"before-highlightall\", env);\n\n\t\tvar elements = env.elements || container.querySelectorAll(env.selector);\n\n\t\tfor (var i=0, element; element = elements[i++];) {\n\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t}\n\t},\n\n\thighlightElement: function(element, async, callback) {\n\t\t// Find language\n\t\tvar language, grammar, parent = element;\n\n\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tlanguage = (parent.className.match(lang) || [,''])[1].toLowerCase();\n\t\t\tgrammar = _.languages[language];\n\t\t}\n\n\t\t// Set language on the element, if not present\n\t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n\t\tif (element.parentNode) {\n\t\t\t// Set language on the parent, for styling\n\t\t\tparent = element.parentNode;\n\n\t\t\tif (/pre/i.test(parent.nodeName)) {\n\t\t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\t\t\t}\n\t\t}\n\n\t\tvar code = element.textContent;\n\n\t\tvar env = {\n\t\t\telement: element,\n\t\t\tlanguage: language,\n\t\t\tgrammar: grammar,\n\t\t\tcode: code\n\t\t};\n\n\t\tvar insertHighlightedCode = function (highlightedCode) {\n\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t_.hooks.run('complete', env);\n\t\t\tcallback && callback.call(env.element);\n\t\t}\n\n\t\t_.hooks.run('before-sanity-check', env);\n\n\t\tif (!env.code) {\n\t\t\t_.hooks.run('complete', env);\n\t\t\treturn;\n\t\t}\n\n\t\t_.hooks.run('before-highlight', env);\n\n\t\tif (!env.grammar) {\n\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\treturn;\n\t\t}\n\n\t\tif (async && _self.Worker) {\n\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\tworker.onmessage = function(evt) {\n\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t};\n\n\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\tlanguage: env.language,\n\t\t\t\tcode: env.code,\n\t\t\t\timmediateClose: true\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t}\n\t},\n\n\thighlight: function (text, grammar, language) {\n\t\tvar env = {\n\t\t\tcode: text,\n\t\t\tgrammar: grammar,\n\t\t\tlanguage: language\n\t\t};\n\t\t_.hooks.run('before-tokenize', env);\n\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t_.hooks.run('after-tokenize', env);\n\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t},\n\n\tmatchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) {\n\t\tfor (var token in grammar) {\n\t\t\tif(!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token == target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = (_.util.type(patterns) === \"Array\") ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tvar pattern = patterns[j],\n\t\t\t\t\tinside = pattern.inside,\n\t\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\t\tgreedy = !!pattern.greedy,\n\t\t\t\t\tlookbehindLength = 0,\n\t\t\t\t\talias = pattern.alias;\n\n\t\t\t\tif (greedy && !pattern.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n\t\t\t\t\tpattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n\t\t\t\t}\n\n\t\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\t\t// Don’t cache length as it changes during the loop\n\t\t\t\tfor (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n\n\t\t\t\t\tvar str = strarr[i];\n\n\t\t\t\t\tif (strarr.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tvar match = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t    to = match.index + match[0].length,\n\t\t\t\t\t\t    k = i,\n\t\t\t\t\t\t    p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (strarr[i] instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t\t\tdelNum = 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1] ? match[1].length : 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t    match = match[0].slice(lookbehindLength),\n\t\t\t\t\t    to = from + match.length,\n\t\t\t\t\t    before = str.slice(0, from),\n\t\t\t\t\t    after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t},\n\n\tToken: Token\n};\n\n_self.Prism = _;\n\nfunction Token(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n}\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (Array.isArray(o)) {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = Array.isArray(o.alias) ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _;\n\n})(_self);\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': /<!--[\\s\\S]*?-->/,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': /<!DOCTYPE[\\s\\S]+?>/i,\n\t'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, tagName), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-]+?[\\s\\S]*?(?:;|(?=\\s*\\{))/i,\n\t\t\tinside: {\n\t\t\t\t'rule': /@[\\w-]+/\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': RegExp('url\\\\((?:' + string.source + '|.*?)\\\\)', 'i'),\n\t\t'selector': RegExp('[^{}\\\\s](?:[^{};\"\\']|' + string.source + ')*?(?=\\\\s*\\\\{)'),\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t\t'important': /!important\\b/i,\n\t\t'function': /[-a-z0-9]+(?=\\()/i,\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\n\t\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t\t'style-attr': {\n\t\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'attr-name': {\n\t\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\t\tinside: markup.tag.inside\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t\t'attr-value': {\n\t\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\talias: 'language-css'\n\t\t\t}\n\t\t}, markup.tag);\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t'number': /\\b(?:(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\\d+n|NaN|Infinity)\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\${[^}]+}|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\${[^}]+}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\${|}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\t/**\n\t * @param {Element} [container=document]\n\t */\n\tself.Prism.fileHighlight = function(container) {\n\t\tcontainer = container || document;\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(container.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t// ignore if already loaded\n\t\t\tif (pre.hasAttribute('data-src-loaded')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// load current\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t// mark as loaded\n\t\t\t\t\t\tpre.setAttribute('data-src-loaded', '');\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t\tif (Prism.plugins.toolbar) {\n\t\t\tPrism.plugins.toolbar.registerButton('download-file', function (env) {\n\t\t\t\tvar pre = env.element.parentNode;\n\t\t\t\tif (!pre || !/pre/i.test(pre.nodeName) || !pre.hasAttribute('data-src') || !pre.hasAttribute('data-download-link')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\t\t\t\tvar a = document.createElement('a');\n\t\t\t\ta.textContent = pre.getAttribute('data-download-link-label') || 'Download';\n\t\t\t\ta.setAttribute('download', '');\n\t\t\t\ta.href = src;\n\t\t\t\treturn a;\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', function () {\n\t\t// execute inside handler, for dropping Event as argument\n\t\tself.Prism.fileHighlight();\n\t});\n\n})();\n"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/scrollMonitor.js",
    "content": "!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"scrollMonitor\",[],e):\"object\"==typeof exports?exports.scrollMonitor=e():t.scrollMonitor=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var s=i[o]={exports:{},id:o,loaded:!1};return t[o].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var i={};return e.m=t,e.c=i,e.p=\"\",e(0)}([function(t,e,i){\"use strict\";var o=i(1),s=o.isInBrowser,n=i(2),r=new n(s?document.body:null);r.setStateFromDOM(null),r.listenToDOM(),s&&(window.scrollMonitor=r),t.exports=r},function(t,e){\"use strict\";e.VISIBILITYCHANGE=\"visibilityChange\",e.ENTERVIEWPORT=\"enterViewport\",e.FULLYENTERVIEWPORT=\"fullyEnterViewport\",e.EXITVIEWPORT=\"exitViewport\",e.PARTIALLYEXITVIEWPORT=\"partiallyExitViewport\",e.LOCATIONCHANGE=\"locationChange\",e.STATECHANGE=\"stateChange\",e.eventTypes=[e.VISIBILITYCHANGE,e.ENTERVIEWPORT,e.FULLYENTERVIEWPORT,e.EXITVIEWPORT,e.PARTIALLYEXITVIEWPORT,e.LOCATIONCHANGE,e.STATECHANGE],e.isOnServer=\"undefined\"==typeof window,e.isInBrowser=!e.isOnServer,e.defaultOffsets={top:0,bottom:0}},function(t,e,i){\"use strict\";function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function s(t){return c?0:t===document.body?window.innerHeight||document.documentElement.clientHeight:t.clientHeight}function n(t){return c?0:t===document.body?Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight):t.scrollHeight}function r(t){return c?0:t===document.body?window.pageYOffset||document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop}var h=i(1),c=h.isOnServer,a=h.isInBrowser,l=h.eventTypes,p=i(3),u=!1;if(a)try{var w=Object.defineProperty({},\"passive\",{get:function(){u=!0}});window.addEventListener(\"test\",null,w)}catch(t){}var d=!!u&&{capture:!1,passive:!0},f=function(){function t(e,i){function h(){if(a.viewportTop=r(e),a.viewportBottom=a.viewportTop+a.viewportHeight,a.documentHeight=n(e),a.documentHeight!==p){for(u=a.watchers.length;u--;)a.watchers[u].recalculateLocation();p=a.documentHeight}}function c(){for(w=a.watchers.length;w--;)a.watchers[w].update();for(w=a.watchers.length;w--;)a.watchers[w].triggerCallbacks()}o(this,t);var a=this;this.item=e,this.watchers=[],this.viewportTop=null,this.viewportBottom=null,this.documentHeight=n(e),this.viewportHeight=s(e),this.DOMListener=function(){t.prototype.DOMListener.apply(a,arguments)},this.eventTypes=l,i&&(this.containerWatcher=i.create(e));var p,u,w;this.update=function(){h(),c()},this.recalculateLocations=function(){this.documentHeight=0,this.update()}}return t.prototype.listenToDOM=function(){a&&(window.addEventListener?(this.item===document.body?window.addEventListener(\"scroll\",this.DOMListener,d):this.item.addEventListener(\"scroll\",this.DOMListener,d),window.addEventListener(\"resize\",this.DOMListener)):(this.item===document.body?window.attachEvent(\"onscroll\",this.DOMListener):this.item.attachEvent(\"onscroll\",this.DOMListener),window.attachEvent(\"onresize\",this.DOMListener)),this.destroy=function(){window.addEventListener?(this.item===document.body?(window.removeEventListener(\"scroll\",this.DOMListener,d),this.containerWatcher.destroy()):this.item.removeEventListener(\"scroll\",this.DOMListener,d),window.removeEventListener(\"resize\",this.DOMListener)):(this.item===document.body?(window.detachEvent(\"onscroll\",this.DOMListener),this.containerWatcher.destroy()):this.item.detachEvent(\"onscroll\",this.DOMListener),window.detachEvent(\"onresize\",this.DOMListener))})},t.prototype.destroy=function(){},t.prototype.DOMListener=function(t){this.setStateFromDOM(t)},t.prototype.setStateFromDOM=function(t){var e=r(this.item),i=s(this.item),o=n(this.item);this.setState(e,i,o,t)},t.prototype.setState=function(t,e,i,o){var s=e!==this.viewportHeight||i!==this.contentHeight;if(this.latestEvent=o,this.viewportTop=t,this.viewportHeight=e,this.viewportBottom=t+e,this.contentHeight=i,s)for(var n=this.watchers.length;n--;)this.watchers[n].recalculateLocation();this.updateAndTriggerWatchers(o)},t.prototype.updateAndTriggerWatchers=function(t){for(var e=this.watchers.length;e--;)this.watchers[e].update();for(e=this.watchers.length;e--;)this.watchers[e].triggerCallbacks(t)},t.prototype.createCustomContainer=function(){return new t},t.prototype.createContainer=function(e){\"string\"==typeof e?e=document.querySelector(e):e&&e.length>0&&(e=e[0]);var i=new t(e,this);return i.setStateFromDOM(),i.listenToDOM(),i},t.prototype.create=function(t,e){\"string\"==typeof t?t=document.querySelector(t):t&&t.length>0&&(t=t[0]);var i=new p(this,t,e);return this.watchers.push(i),i},t.prototype.beget=function(t,e){return this.create(t,e)},t}();t.exports=f},function(t,e,i){\"use strict\";function o(t,e,i){function o(t,e){if(0!==t.length)for(E=t.length;E--;)y=t[E],y.callback.call(s,e,s),y.isOne&&t.splice(E,1)}var s=this;this.watchItem=e,this.container=t,i?i===+i?this.offsets={top:i,bottom:i}:this.offsets={top:i.top||w.top,bottom:i.bottom||w.bottom}:this.offsets=w,this.callbacks={};for(var d=0,f=u.length;d<f;d++)s.callbacks[u[d]]=[];this.locked=!1;var m,v,b,I,E,y;this.triggerCallbacks=function(t){switch(this.isInViewport&&!m&&o(this.callbacks[r],t),this.isFullyInViewport&&!v&&o(this.callbacks[h],t),this.isAboveViewport!==b&&this.isBelowViewport!==I&&(o(this.callbacks[n],t),v||this.isFullyInViewport||(o(this.callbacks[h],t),o(this.callbacks[a],t)),m||this.isInViewport||(o(this.callbacks[r],t),o(this.callbacks[c],t))),!this.isFullyInViewport&&v&&o(this.callbacks[a],t),!this.isInViewport&&m&&o(this.callbacks[c],t),this.isInViewport!==m&&o(this.callbacks[n],t),!0){case m!==this.isInViewport:case v!==this.isFullyInViewport:case b!==this.isAboveViewport:case I!==this.isBelowViewport:o(this.callbacks[p],t)}m=this.isInViewport,v=this.isFullyInViewport,b=this.isAboveViewport,I=this.isBelowViewport},this.recalculateLocation=function(){if(!this.locked){var t=this.top,e=this.bottom;if(this.watchItem.nodeName){var i=this.watchItem.style.display;\"none\"===i&&(this.watchItem.style.display=\"\");for(var s=0,n=this.container;n.containerWatcher;)s+=n.containerWatcher.top-n.containerWatcher.container.viewportTop,n=n.containerWatcher.container;var r=this.watchItem.getBoundingClientRect();this.top=r.top+this.container.viewportTop-s,this.bottom=r.bottom+this.container.viewportTop-s,\"none\"===i&&(this.watchItem.style.display=i)}else this.watchItem===+this.watchItem?this.watchItem>0?this.top=this.bottom=this.watchItem:this.top=this.bottom=this.container.documentHeight-this.watchItem:(this.top=this.watchItem.top,this.bottom=this.watchItem.bottom);this.top-=this.offsets.top,this.bottom+=this.offsets.bottom,this.height=this.bottom-this.top,void 0===t&&void 0===e||this.top===t&&this.bottom===e||o(this.callbacks[l],null)}},this.recalculateLocation(),this.update(),m=this.isInViewport,v=this.isFullyInViewport,b=this.isAboveViewport,I=this.isBelowViewport}var s=i(1),n=s.VISIBILITYCHANGE,r=s.ENTERVIEWPORT,h=s.FULLYENTERVIEWPORT,c=s.EXITVIEWPORT,a=s.PARTIALLYEXITVIEWPORT,l=s.LOCATIONCHANGE,p=s.STATECHANGE,u=s.eventTypes,w=s.defaultOffsets;o.prototype={on:function(t,e,i){switch(!0){case t===n&&!this.isInViewport&&this.isAboveViewport:case t===r&&this.isInViewport:case t===h&&this.isFullyInViewport:case t===c&&this.isAboveViewport&&!this.isInViewport:case t===a&&this.isInViewport&&this.isAboveViewport:if(e.call(this,this.container.latestEvent,this),i)return}if(!this.callbacks[t])throw new Error(\"Tried to add a scroll monitor listener of type \"+t+\". Your options are: \"+u.join(\", \"));this.callbacks[t].push({callback:e,isOne:i||!1})},off:function(t,e){if(!this.callbacks[t])throw new Error(\"Tried to remove a scroll monitor listener of type \"+t+\". Your options are: \"+u.join(\", \"));for(var i,o=0;i=this.callbacks[t][o];o++)if(i.callback===e){this.callbacks[t].splice(o,1);break}},one:function(t,e){this.on(t,e,!0)},recalculateSize:function(){this.height=this.watchItem.offsetHeight+this.offsets.top+this.offsets.bottom,this.bottom=this.top+this.height},update:function(){this.isAboveViewport=this.top<this.container.viewportTop,this.isBelowViewport=this.bottom>this.container.viewportBottom,this.isInViewport=this.top<this.container.viewportBottom&&this.bottom>this.container.viewportTop,this.isFullyInViewport=this.top>=this.container.viewportTop&&this.bottom<=this.container.viewportBottom||this.isAboveViewport&&this.isBelowViewport},destroy:function(){var t=this.container.watchers.indexOf(this),e=this;this.container.watchers.splice(t,1);for(var i=0,o=u.length;i<o;i++)e.callbacks[u[i]].length=0},lock:function(){this.locked=!0},unlock:function(){this.locked=!1}};for(var d=function(t){return function(e,i){this.on.call(this,t,e,i)}},f=0,m=u.length;f<m;f++){var v=u[f];o.prototype[v]=d(v)}t.exports=o}])});\n//# sourceMappingURL=scrollMonitor.js.map"
  },
  {
    "path": "RunGroopWebApp/wwwroot/js/theme.js",
    "content": "/*!\n  * Wingman Bootstrap Theme\n  * Copyright 2018-2019 Medium Rare (undefined)\n  */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports,require(\"aos\"),require(\"jquery\"),require(\"flatpickr\"),require(\"jarallax\"),require(\"prismjs\"),require(\"smooth-scroll\"),require(\"scrollmonitor\"),require(\"smartwizard\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"aos\",\"jquery\",\"flatpickr\",\"jarallax\",\"prismjs\",\"smooth-scroll\",\"scrollmonitor\",\"smartwizard\"],e):e((t=t||self).theme={},t.AOS,t.jQuery,t.flatpickr,t.jarallax,t.Prism,t.SmoothScroll,t.scrollMonitor)}(this,function(t,e,i,s,r,a,o,g){\"use strict\";var n;function c(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function b(t,e,i){return e&&c(t.prototype,e),i&&c(t,i),t}e=e&&e.hasOwnProperty(\"default\")?e.default:e,i=i&&i.hasOwnProperty(\"default\")?i.default:i,s=s&&s.hasOwnProperty(\"default\")?s.default:s,r=r&&r.hasOwnProperty(\"default\")?r.default:r,a=a&&a.hasOwnProperty(\"default\")?a.default:a,o=o&&o.hasOwnProperty(\"default\")?o.default:o,g=g&&g.hasOwnProperty(\"default\")?g.default:g,e.init({once:!0}),n=i,\"objectFit\"in document.documentElement.style==0&&n(\".bg-image\").each(function(){var t=n(this),e=t.attr(\"src\"),i=t.get(0).classList;t.before(n('<div class=\"'+i+'\" style=\"background: url('+e+'); background-size: cover; background-position: 50% 50%;\"></div>')),t.remove()});var l,u=function(r){if(void 0===s)throw new Error(\"mrFlatpickr requires flatpickr.js (https://github.com/flatpickr/flatpickr)\");var t=\"mrFlatpickr\",a=\"mr.flatpickr\",e=r.fn[t],i={LOAD_DATA_API:\"load.mr.flatpickr.data-api\"},o=\"[data-flatpickr]\",n=function(){function i(t){this.element=t,this.initflatpickr()}return i.prototype.initflatpickr=function(){var t=r(this.element).data();this.instance=s(this.element,t)},i.jQueryInterface=function(){return this.each(function(){var t=r(this),e=t.data(a);e||(e=new i(this),t.data(a,e))})},b(i,null,[{key:\"VERSION\",get:function(){return\"1.0.0\"}}]),i}();return r(window).on(i.LOAD_DATA_API,function(){for(var t=r.makeArray(r(o)),e=t.length;e--;){var i=r(t[e]);n.jQueryInterface.call(i,i.data())}}),r.fn[t]=n.jQueryInterface,r.fn[t].Constructor=n,r.fn[t].noConflict=function(){return r.fn[t]=e,n.jQueryInterface},n}(i);l=i,\"function\"==typeof r&&(l(\".alert-dismissible\").on(\"closed.bs.alert\",function(){r(document.querySelectorAll(\"[data-jarallax]\"),\"onScroll\")}),l(document).on(\"resized.mr.overlayNav\",function(){r(document.querySelectorAll(\"[data-jarallax]\"),\"onResize\")}),r(document.querySelectorAll(\"[data-jarallax]\"),{disableParallax:/iPad|iPhone|iPod|Android/,disableVideo:/iPad|iPhone|iPod|Android/})),a.highlightAll();var h,d=new o(\"a[data-smooth-scroll]\",{offset:i(\"body\").attr(\"data-smooth-scroll-offset\")||0}),f=function(s){if(void 0===g)throw new Error(\"mrSticky requires scrollMonitor.js (https://github.com/stutrek/scrollMonitor)\");var t=\"mrSticky\",r=\"mr.sticky\",e=s.fn[t],c=\"position-fixed\",l=\"sticky-bottom\",a=\"sticky-viewport-bottom\",o=\"scrolled\",n=\"min-height\",u=\"max-width\",h=\"top\",d={LOAD_DATA_API:\"load.mr.sticky.data-api\",WINDOW_RESIZE:\"resize\",ALERT_CLOSED:\"closed.bs.alert\"},f=\"below-nav\",v=\"bottom\",m=\"sticky\",p=\"[data-sticky]\",y='body > div.navbar-container [data-sticky=\"top\"]',k=\".alert-dismissible\",w=function(){function i(t){var e=s(t),i=e.data(m),r=e.closest(\"section\")||null;this.element=t,this.stickBelowNav=i===f,this.stickBottom=i===v,this.stickyUntil=r,this.updateNavProperties(),this.isNavElement=e.is(this.navElement),this.initWatcher(e),this.updateCss(),this.setResizeEvent(),this.onWatcherChange(e),this.ticking=!1}var t=i.prototype;return t.initWatcher=function(t){var e=this,i=s(t),r=!this.isNavElement,a=this.stickBelowNav&&this.navIsSticky&&r?{top:this.navHeight}:0;a=this.stickBottom&&r?{bottom:-i.outerHeight}:a;var o=g.create(t,a);o.lock();var n=null!==this.stickyUntil?g.create(this.stickyUntil,{bottom:-(o.height+a.top)}):null;this.watcher=o,this.untilWatcher=n,this.navHeight=this.navHeight,this.isNavElement&&0===o.top&&!this.navIsAbsolute&&i.addClass(c),o.stateChange(function(){e.onWatcherChange(i)}),null!==n&&(n.exitViewport(function(){i.addClass(l)}),n.enterViewport(function(){i.removeClass(l)}))},t.onWatcherChange=function(t){t.toggleClass(c,this.watcher.isAboveViewport||!this.navIsAbsolute&&!this.stickBottom&&this.isNavElement&&0===this.watcher.top),t.toggleClass(o,this.watcher.isAboveViewport&&this.isNavElement&&!this.stickBottom),t.toggleClass(a,(this.watcher.isFullyInViewport||this.watcher.isAboveViewport)&&this.stickBottom),this.stickBottom||t.css(h,this.watcher.isAboveViewport&&this.navIsSticky&&this.stickBelowNav?this.navHeight:0)},t.setResizeEvent=function(){var t=this;s(k).on(d.ALERT_CLOSED,function(){t.onResize()}),s(window).on(d.WINDOW_RESIZE,function(){t.onResize()})},t.onResize=function(){var t=this;this.ticking||(window.requestAnimationFrame(function(){t.updateCss(),t.isNavElement&&(t.watcher.unlock(),t.watcher.recalculateLocation(),t.watcher.lock()),t.ticking=!1}),this.ticking=!0)},t.updateCss=function(){var t=s(this.element);t.css(u,t.parent().width()),this.updateNavProperties();var e=t.outerHeight(),i=!this.isNavElement;(!this.navIsAbsolute&&this.isNavElement||i)&&t.parent().css(n,e),this.navIsSticky&&i&&t.css(n,e)},t.updateNavProperties=function(){var t=this.navElement||s(y).first();this.navElement=t,this.navHeight=t.outerHeight(),this.navIsAbsolute=\"absolute\"===t.css(\"position\"),this.navIsSticky=0<t.length},i.jQueryInterface=function(){return this.each(function(){var t=s(this),e=t.data(r);e||(e=new i(this),t.data(r,e))})},b(i,null,[{key:\"VERSION\",get:function(){return\"1.2.0\"}}]),i}();return s(window).on(d.LOAD_DATA_API,function(){for(var t=s.makeArray(s(p)),e=t.length;e--;){var i=s(t[e]);w.jQueryInterface.call(i,i.data())}}),s.fn[t]=w.jQueryInterface,s.fn[t].Constructor=w,s.fn[t].noConflict=function(){return s.fn[t]=e,w.jQueryInterface},w}(i),v=((h=i)('[data-toggle=\"tooltip\"]').tooltip(),h(\".toast\").toast(),{activateIframeSrc:function(t){var e=h(t);e.attr(\"data-src\")&&e.attr(\"src\",e.attr(\"data-src\"))},idleIframeSrc:function(t){var e=h(t);e.attr(\"data-src\",e.attr(\"src\")).attr(\"src\",\"\")}});i(document).ready(function(){i(\".video-cover .video-play-icon\").on(\"click touchstart\",function(){var t=i(this).closest(\".video-cover\").find(\"iframe\");v.activateIframeSrc(t),i(this).parent(\".video-cover\").addClass(\"video-cover-playing\")}),!0===\"ontouchstart\"in document.documentElement&&i(\".video-cover\").each(function(){i(this).addClass(\"video-cover-touch\");var t=i(this).closest(\".video-cover\").find(\"iframe\");v.activateIframeSrc(t)}),i(\".modal\").on(\"shown.bs.modal\",function(){var t=i(this);if(t.find(\"iframe[data-src]\").length){var e=t.find(\"iframe[data-src]\");v.activateIframeSrc(e)}}),i(\".modal\").on(\"hidden.bs.modal\",function(){var t=i(this);if(t.find(\"iframe[src]\").length){var e=t.find(\"iframe[data-src]\");v.idleIframeSrc(e)}}),i('[data-toggle=\"tooltip\"]').tooltip()}),i(document).ready(function(){i(\".wizard\").smartWizard({transitionEffect:\"fade\",showStepURLhash:!1,toolbarSettings:{toolbarPosition:\"none\"}})}),function(){if(\"undefined\"==typeof $)throw new TypeError(\"Medium Rare JavaScript requires jQuery. jQuery must be included before theme.js.\")}(),t.mrFlatpickr=u,t.mrSmoothScroll=d,t.mrSticky=f,t.mrUtil=v,Object.defineProperty(t,\"__esModule\",{value:!0})});\n//# sourceMappingURL=theme.js.map\n"
  },
  {
    "path": "RunGroopWebApp.Scraper/Data/ScraperDBContext.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace RunGroopWebApp.Scraper.Data\n{\n    public class ScraperDBContext : DbContext\n    {\n        public DbSet<Race> Races { get; set; }\n        public DbSet<Club> Clubs { get; set; }\n        public DbSet<Address> Addresses { get; set; }\n        public DbSet<State> States { get; set; }\n        public DbSet<City> Cities { get; set; }\n\n        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n        {\n            optionsBuilder.UseSqlServer(\"Data Source=DESKTOP-EI2TOGP\\\\SQLEXPRESS;Initial Catalog=RunGroops;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False\");\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Scraper/Extensions/DateTimeExtension.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace RunGroopWebApp.Scraper.Extensions\n{\n    public static class DateTimeExtension\n    {\n        public static DateTime? ToDate(this string dateTimeStr, params string[] dateFmt)\n        {\n            // example: var dt = \"2011-03-21 13:26\".ToDate(new string[]{\"yyyy-MM-dd HH:mm\", \n            //                                                  \"M/d/yyyy h:mm:ss tt\"});\n            // or simpler: \n            // var dt = \"2011-03-21 13:26\".ToDate(\"yyyy-MM-dd HH:mm\", \"M/d/yyyy h:mm:ss tt\");\n            const DateTimeStyles style = DateTimeStyles.AllowWhiteSpaces;\n            if (dateFmt == null)\n            {\n                var dateInfo = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat;\n                dateFmt = dateInfo.GetAllDateTimePatterns();\n            }\n            var result = DateTime.TryParseExact(dateTimeStr, dateFmt, CultureInfo.InvariantCulture,\n                           style, out var dt) ? dt : null as DateTime?;\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Scraper/Interfaces/IAtraScraper.cs",
    "content": "﻿using OpenQA.Selenium;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace RunGroopWebApp.Scraper.Interfaces\n{\n    internal interface IAtraScraper\n    {\n        IReadOnlyCollection<IWebElement> GetElements();\n        void IterateOverRaceElements();\n        void Run();\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Scraper/Program.cs",
    "content": "﻿// See https://aka.ms/new-console-template for more information\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\nusing OpenQA.Selenium;\nusing OpenQA.Selenium.Chrome;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Repository;\nusing RunGroopWebApp.Scraper.Interfaces;\nusing RunGroopWebApp.Scraper.Services;\n\n\n\nMeetupScraper scraper = new MeetupScraper();\nscraper.Run();\n\n//AtraScraper scraper = new AtraScraper();\n\n\n//scraper.Run();"
  },
  {
    "path": "RunGroopWebApp.Scraper/RunGroopWebApp.Scraper.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net6.0</TargetFramework>\n    <ImplicitUsings>enable</ImplicitUsings>\n    <Nullable>enable</Nullable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"GraphQL.Client\" Version=\"4.0.2\" />\n    <PackageReference Include=\"GraphQL.Client.Serializer.Newtonsoft\" Version=\"4.0.2\" />\n    <PackageReference Include=\"GraphQL.NewtonsoftJson\" Version=\"5.1.1\" />\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.1\" />\n    <PackageReference Include=\"Selenium.WebDriver\" Version=\"4.1.0\" />\n    <PackageReference Include=\"Selenium.WebDriver.ChromeDriver\" Version=\"100.0.4896.6000\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\RunGroopWebApp\\RunGroopWebApp.csproj\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "RunGroopWebApp.Scraper/Services/AtraScraper.cs",
    "content": "﻿using OpenQA.Selenium;\nusing OpenQA.Selenium.Chrome;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.Repository;\nusing RunGroopWebApp.Scraper.Data;\nusing RunGroopWebApp.Scraper.Extensions;\nusing RunGroopWebApp.Scraper.Interfaces;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace RunGroopWebApp.Scraper.Services\n{\n    public class AtraScraper : IAtraScraper\n    {\n        private IRaceRepository _raceRepo;\n        private IWebDriver _driver;\n        public AtraScraper()\n        {\n            _driver = new ChromeDriver();\n        }\n\n        public void Run()\n        {\n            IterateOverRaceElements();\n        }\n\n        public IReadOnlyCollection<IWebElement> GetElements()\n        {\n            return _driver.FindElements(By.CssSelector(\"span[itemprop='name']\"));\n        }\n\n        public void IterateOverRaceElements()\n        {\n            _driver.Navigate().GoToUrl(\"https://trailrunner.com/race-calendar/\");\n            var pageNumbers = _driver.FindElements(By.CssSelector(\"a[class='page-numbers']\"));\n            for (int i = 0; i < pageNumbers.Count; i++)\n            {\n                    if(i >= 1)\n                    {\n                        pageNumbers = _driver.FindElements(By.CssSelector(\"a[class='page-numbers']\"));\n                        pageNumbers.ElementAt(i).Click();\n                    }\n                    var pageElements = GetElements();\n                    for (int j = 0; j < pageElements.Count; j++)\n                    {\n                        try\n                        {\n                            pageElements = _driver.FindElements(By.CssSelector(\"span[itemprop='name']\"));\n                            var element = pageElements.ElementAt(j);\n                            element.Click();\n                            var race = new Race()\n                            {\n                                Title = _driver.FindElement(By.CssSelector(\"h1[class='event-title']\")).Text ?? \"\",\n                                Description = _driver.FindElement(By.CssSelector(\"div[class='content-desc']\")).Text.Replace(\"Description:\", \"\") ?? \"\",\n                                StartTime = _driver.FindElement(By.CssSelector(\"meta[itemprop='startDate']\")).GetAttribute(\"content\").ToDate() ?? DateTime.MinValue,\n                                EntryFee = int.Parse(_driver.FindElement(By.CssSelector(\"span[itemprop='price']\")).Text),\n                                Website = _driver.FindElement(By.LinkText(\"Visit Event Website\")).GetAttribute(\"href\") ?? \"\",\n                                Twitter = _driver.FindElement(By.LinkText(\"Event Twitter feed\")).GetAttribute(\"href\") ?? \"\",\n                                Facebook = _driver.FindElement(By.LinkText(\"Event Facebook page\")).GetAttribute(\"href\") ?? \"\",\n                                Contact = _driver.FindElement(By.LinkText(\"Contact Race Director\")).GetAttribute(\"href\") ?? \"\",\n                                Address = new Address()\n                                {\n                                    City = _driver.FindElement(By.CssSelector(\"span[itemprop='addressLocality']\")).Text ?? \"\",\n                                    State = _driver.FindElement(By.CssSelector(\"span[itemprop='addressRegion']\")).Text ?? \"\",\n                                    Street = _driver.FindElement(By.CssSelector(\"div[itemprop='address']\")).Text ?? \"\",\n                                },\n                                RaceCategory = RaceCategory.Ultra\n                            };\n                            using (var context = new ScraperDBContext())\n                            {\n                                if (!context.Races.Any(r => r.Title == race.Title))\n                                {\n                                    context.Races.Add(race);\n                                    context.SaveChanges();\n                                }\n                            }\n                            _driver.Navigate().Back();\n                        }\n                        catch (Exception ex)\n                        {\n                            Console.Error.WriteLine(ex.Message);\n                            _driver.Navigate().Back();\n                        }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Scraper/Services/MeetupScraper.cs",
    "content": "﻿using OpenQA.Selenium;\nusing OpenQA.Selenium.Chrome;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Extensions;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.Scraper.Data;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace RunGroopWebApp.Scraper.Services\n{\n    public class MeetupScraper\n    {\n        private IWebDriver _driver;\n        public MeetupScraper()\n        {\n            _driver = new ChromeDriver();\n        }\n\n        public void Run()\n        {\n            GetListOfCityAndState();\n        }\n\n        public void GetListOfCityAndState()\n        {\n            int batchSize = 100;\n            int currentBatch = 0;\n            bool done = false;\n            while(!done)\n            using (var context = new ScraperDBContext())\n            {\n               var cities = context.Cities.OrderBy(x => x.Id).Skip(currentBatch++ * batchSize).Take(batchSize).ToList();\n                foreach(var city in cities)\n                {\n                    IterateOverRunningClubs(city.StateCode.ToLower(), city.CityName.ToLower());\n                    if(city.Id == 40000)\n                    {\n                       done = true;\n                    }\n                }\n            }\n        }\n\n\n        public void IterateOverRunningClubs(string state, string city)\n        {\n            try\n            {\n                _driver.Navigate().GoToUrl($\"https://www.meetup.com/find/?suggested=true&source=GROUPS&keywords=running%20club&location=us--{state}--{city}\");\n                //System.Threading.Thread.Sleep(1000);\n                var pageElements = _driver.FindElements(By.CssSelector(\"h3[data-testid='group-card-title']\"));\n                for (int i = 0; i < pageElements.Count; i++)\n                {\n                    try\n                    {\n                        pageElements = _driver.FindElements(By.CssSelector(\"h3[data-testid='group-card-title']\"));\n                        var element = pageElements.ElementAt(i);\n                        var placeholder = element.Text;\n                        var placeholder2 = element.Text.Contains(\"run\", System.StringComparison.CurrentCultureIgnoreCase);\n                        if (element.Text.Contains(\"run\", System.StringComparison.CurrentCultureIgnoreCase))\n                        {\n                            element.Click();\n                            var club = new Club()\n                            {\n                                Title = _driver.FindElement(By.CssSelector(\"a[class='groupHomeHeader-groupNameLink']\")).Text ?? \"\",\n                                Description = _driver.FindElement(By.CssSelector(\"p[class='group-description _groupDescription-module_description__3qvYh margin--bottom']\")).Text ?? \"\",\n                                Address = new Address()\n                                {\n                                    State = state.ToUpper(),\n                                    City = city.FirstCharToUpper()\n                                },\n                                ClubCategory = ClubCategory.City\n                            };\n                            using (var context = new ScraperDBContext())\n                            {\n                                if (!context.Clubs.Any(c => c.Title == club.Title))\n                                {\n                                    context.Clubs.Add(club);\n                                    context.SaveChanges();\n                                }\n                            }\n                            _driver.Navigate().Back();\n                        }\n\n                    }\n                    catch (Exception ex)\n                    {\n                        Console.Error.WriteLine(ex.Message);\n                        _driver.Navigate().Back();\n                    }\n                }\n            }\n            catch (Exception ex)\n            {\n                Console.Error.WriteLine(ex.Message);\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Tests/Controller/ClubControllerTests.cs",
    "content": "﻿using FakeItEasy;\nusing FluentAssertions;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing RunGroopWebApp.Controllers;\nusing RunGroopWebApp.Interfaces;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.Services;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace RunGroopWebApp.Tests.Controller\n{\n    public class ClubControllerTests\n    {\n        private ClubController _clubController;\n        private IClubRepository _clubRepository;\n        private IPhotoService _photoService;\n        private IHttpContextAccessor _httpContextAccessor;\n        public ClubControllerTests()\n        {\n            //Dependencies\n            _clubRepository = A.Fake<IClubRepository>();\n            _photoService = A.Fake<IPhotoService>();\n            _httpContextAccessor = A.Fake<HttpContextAccessor>();\n\n            //SUT\n            _clubController = new ClubController(_clubRepository, _photoService);\n        }\n\n        [Fact]\n        public void ClubController_Index_ReturnsSuccess()\n        {\n            //Arrange - What do i need to bring in?\n            var clubs = A.Fake<IEnumerable<Club>>();\n            A.CallTo(() => _clubRepository.GetAll()).Returns(clubs);\n            //Act\n            var result = _clubController.Index();\n            //Assert - Object check actions\n            result.Should().BeOfType<Task<IActionResult>>();\n        }\n\n        [Fact]\n        public void ClubController_Detail_ReturnsSuccess()\n        {\n            //Arrange\n            var id = 1;\n            var club = A.Fake<Club>();\n            A.CallTo(() => _clubRepository.GetByIdAsync(id)).Returns(club);\n            //Act\n            var result = _clubController.DetailClub(id, \"RunningClub\");\n            //Assert\n            result.Should().BeOfType<Task<IActionResult>>();\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Tests/Repository/ClubRepositoryTests.cs",
    "content": "﻿using FluentAssertions;\nusing Microsoft.EntityFrameworkCore;\nusing RunGroopWebApp.Data;\nusing RunGroopWebApp.Data.Enum;\nusing RunGroopWebApp.Models;\nusing RunGroopWebApp.Repository;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace RunGroopWebApp.Tests.Repository\n{\n    public class ClubRepositoryTests\n    {\n        private async Task<ApplicationDbContext> GetDbContext()\n        {\n            var options = new DbContextOptionsBuilder<ApplicationDbContext>()\n                .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())\n                .Options;\n            var databaseContext = new ApplicationDbContext(options);\n            databaseContext.Database.EnsureCreated();\n            if(await databaseContext.Clubs.CountAsync() < 0)\n            {\n                for (int i = 0; i < 10; i++)\n                {\n                    databaseContext.Clubs.Add(\n                      new Club()\n                      {\n                          Title = \"Running Club 1\",\n                          Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                          Description = \"This is the description of the first cinema\",\n                          ClubCategory = ClubCategory.City,\n                          Address = new Address()\n                          {\n                              Street = \"123 Main St\",\n                              City = \"Charlotte\",\n                              State = \"NC\"\n                          }\n                      });\n                    await databaseContext.SaveChangesAsync();\n                }\n            }\n            return databaseContext;\n        }\n\n        [Fact]\n        public async void ClubRepository_Add_ReturnsBool()\n        {\n            //Arrange\n            var club = new Club()\n            {\n                Title = \"Running Club 1\",\n                Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                Description = \"This is the description of the first cinema\",\n                ClubCategory = ClubCategory.City,\n                Address = new Address()\n                {\n                    Street = \"123 Main St\",\n                    City = \"Charlotte\",\n                    State = \"NC\"\n                }\n            };\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            var result = clubRepository.Add(club);\n\n            //Assert\n            result.Should().BeTrue();\n        }\n\n        [Fact]\n        public async void ClubRepository_GetByIdAsync_ReturnsClub()\n        {\n            //Arrange\n            var id = 1;\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            var result = clubRepository.GetByIdAsync(id);\n\n            //Assert\n            result.Should().NotBeNull();\n            result.Should().BeOfType<Task<Club>>();\n        }\n\n        [Fact]\n        public async void ClubRepository_GetAll_ReturnsList()\n        {\n            //Arrange\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            var result = await clubRepository.GetAll();\n\n            //Assert\n            result.Should().NotBeNull();\n            result.Should().BeOfType<List<Club>>();\n        }\n\n        [Fact]\n        public async void ClubRepository_SuccessfulDelete_ReturnsTrue()\n        {\n            //Arrange\n            var club = new Club()\n            {\n                Title = \"Running Club 1\",\n                Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                Description = \"This is the description of the first cinema\",\n                ClubCategory = ClubCategory.City,\n                Address = new Address()\n                {\n                    Street = \"123 Main St\",\n                    City = \"Charlotte\",\n                    State = \"NC\"\n                }\n            };\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            clubRepository.Add(club);\n            var result = clubRepository.Delete(club);\n            var count = await clubRepository.GetCountAsync();\n\n            //Assert\n            result.Should().BeTrue();\n            count.Should().Be(0);\n        }\n\n        [Fact]\n        public async void ClubRepository_GetCountAsync_ReturnsInt()\n        {\n            //Arrange\n            var club = new Club()\n            {\n                Title = \"Running Club 1\",\n                Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                Description = \"This is the description of the first cinema\",\n                ClubCategory = ClubCategory.City,\n                Address = new Address()\n                {\n                    Street = \"123 Main St\",\n                    City = \"Charlotte\",\n                    State = \"NC\"\n                }\n            };\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            clubRepository.Add(club);\n            var result = await clubRepository.GetCountAsync();\n\n            //Assert\n            result.Should().Be(1);\n        }\n\n        [Fact]\n        public async void ClubRepository_GetAllStates_ReturnsList()\n        {\n            //Arrange\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            var result = await clubRepository.GetAllStates();\n\n            //Assert\n            result.Should().NotBeNull();\n            result.Should().BeOfType<List<State>>();\n        }\n\n        [Fact]\n        public async void ClubRepository_GetClubsByState_ReturnsList()\n        {\n            //Arrange\n            var state = \"NC\";\n            var club = new Club()\n            {\n                Title = \"Running Club 1\",\n                Image = \"https://www.eatthis.com/wp-content/uploads/sites/4/2020/05/running.jpg?quality=82&strip=1&resize=640%2C360\",\n                Description = \"This is the description of the first cinema\",\n                ClubCategory = ClubCategory.City,\n                Address = new Address()\n                {\n                    Street = \"123 Main St\",\n                    City = \"Charlotte\",\n                    State = \"NC\"\n                }\n            };\n            var dbContext = await GetDbContext();\n            var clubRepository = new ClubRepository(dbContext);\n\n            //Act\n            clubRepository.Add(club);\n            var result = await clubRepository.GetClubsByState(state);\n\n            //Assert\n            result.Should().NotBeNull();\n            result.Should().BeOfType<List<Club>>();\n            result.First().Title.Should().Be(\"Running Club 1\");\n        }\n    }\n}\n"
  },
  {
    "path": "RunGroopWebApp.Tests/RunGroopWebApp.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6.0</TargetFramework>\n    <Nullable>enable</Nullable>\n\n    <IsPackable>false</IsPackable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"FakeItEasy\" Version=\"7.3.1\" />\n    <PackageReference Include=\"FluentAssertions\" Version=\"6.6.0\" />\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.InMemory\" Version=\"6.0.3\" />\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"16.11.0\" />\n    <PackageReference Include=\"xunit\" Version=\"2.4.1\" />\n    <PackageReference Include=\"xunit.runner.visualstudio\" Version=\"2.4.3\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n    <PackageReference Include=\"coverlet.collector\" Version=\"3.1.0\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\RunGroopWebApp\\RunGroopWebApp.csproj\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "RunGroopWebApp.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.31919.166\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"RunGroopWebApp\", \"RunGroopWebApp\\RunGroopWebApp.csproj\", \"{4E3B4BC1-B408-4BF8-AE2D-C484FE2A8D0F}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"RunGroopWebApp.Tests\", \"RunGroopWebApp.Tests\\RunGroopWebApp.Tests.csproj\", \"{28D349D8-816F-4C7F-A2A7-24FB714C2DE9}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"RunGroopWebApp.Scraper\", \"RunGroopWebApp.Scraper\\RunGroopWebApp.Scraper.csproj\", \"{BB5B8E0E-FDD9-4BC5-89DD-31CEC8EFFC2E}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{4E3B4BC1-B408-4BF8-AE2D-C484FE2A8D0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{4E3B4BC1-B408-4BF8-AE2D-C484FE2A8D0F}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{4E3B4BC1-B408-4BF8-AE2D-C484FE2A8D0F}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{4E3B4BC1-B408-4BF8-AE2D-C484FE2A8D0F}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{28D349D8-816F-4C7F-A2A7-24FB714C2DE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{28D349D8-816F-4C7F-A2A7-24FB714C2DE9}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{28D349D8-816F-4C7F-A2A7-24FB714C2DE9}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{28D349D8-816F-4C7F-A2A7-24FB714C2DE9}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{BB5B8E0E-FDD9-4BC5-89DD-31CEC8EFFC2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{BB5B8E0E-FDD9-4BC5-89DD-31CEC8EFFC2E}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{BB5B8E0E-FDD9-4BC5-89DD-31CEC8EFFC2E}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{BB5B8E0E-FDD9-4BC5-89DD-31CEC8EFFC2E}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tSolutionGuid = {A7AA8F1C-EF85-48FB-A90F-4CCF1E395757}\n\tEndGlobalSection\nEndGlobal\n"
  }
]