[
  {
    "path": ".github/workflows/main_skinet-course.yml",
    "content": "# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy\r\n# More GitHub Actions for Azure: https://github.com/Azure/actions\r\n\r\nname: Build and deploy ASP.Net Core app to Azure Web App - skinet-course\r\n\r\non:\r\n  push:\r\n    branches:\r\n      - main\r\n  workflow_dispatch:\r\n\r\njobs:\r\n  build:\r\n    runs-on: windows-latest\r\n    permissions:\r\n      contents: read #This is required for actions/checkout\r\n\r\n    steps:\r\n      - uses: actions/checkout@v4\r\n\r\n      - name: Set up node.js\r\n        uses: actions/setup-node@v4\r\n        with:\r\n          node-version: '22'\r\n\r\n      - name: Install Angular client\r\n        run: npm install -g @angular/cli@20\r\n      \r\n      - name: Install deps and build angular app\r\n        run: |\r\n          cd client\r\n          npm install\r\n          ng build\r\n\r\n      - name: Set up .NET Core\r\n        uses: actions/setup-dotnet@v4\r\n        with:\r\n          dotnet-version: 'v9.0'\r\n\r\n      - name: Build with dotnet\r\n        run: dotnet build --configuration Release\r\n\r\n      - name: dotnet publish\r\n        run: dotnet publish -c Release -o \"${{env.DOTNET_ROOT}}/myapp\"\r\n\r\n      - name: Upload artifact for deployment job\r\n        uses: actions/upload-artifact@v4\r\n        with:\r\n          name: .net-app\r\n          path: ${{env.DOTNET_ROOT}}/myapp\r\n\r\n  deploy:\r\n    runs-on: windows-latest\r\n    needs: build\r\n    permissions:\r\n      id-token: write #This is required for requesting the JWT\r\n      contents: read #This is required for actions/checkout\r\n\r\n    steps:\r\n      - name: Download artifact from build job\r\n        uses: actions/download-artifact@v4\r\n        with:\r\n          name: .net-app\r\n      \r\n      - name: Login to Azure\r\n        uses: azure/login@v2\r\n        with:\r\n          client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_899DD360FDD245A2841AB15CAB3E113A }}\r\n          tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_1D06ADE227714143858D5F22F17E74DF }}\r\n          subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_01C41D2F298348719BF81F3CAAFDF7D1 }}\r\n\r\n      - name: Deploy to Azure Web App\r\n        id: deploy-to-webapp\r\n        uses: azure/webapps-deploy@v3\r\n        with:\r\n          app-name: 'skinet-course'\r\n          slot-name: 'Production'\r\n          package: .\r\n          "
  },
  {
    "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 `dotnet new gitignore`\n\n# dotenv files\n.env\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\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n# Tye\n.tye/\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\n.idea/\n\n##\n## Visual studio for Mac\n##\n\n\n# globs\nMakefile.in\n*.userprefs\n*.usertasks\nconfig.make\nconfig.status\naclocal.m4\ninstall-sh\nautom4te.cache/\n*.tar.gz\ntarballs/\ntest-results/\n\n# Mac bundle stuff\n*.dmg\n*.app\n\n# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore\n# General\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore\n# Windows thumbnail cache files\nThumbs.db\nehthumbs.db\nehthumbs_vista.db\n\n# Dump file\n*.stackdump\n\n# Folder config file\n[Dd]esktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msix\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n# Vim temporary swap files\n*.swp\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{}"
  },
  {
    "path": "API/API.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>net9.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <ImplicitUsings>enable</ImplicitUsings>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Infrastructure\\Infrastructure.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.Design\" Version=\"9.0.6\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "API/API.http",
    "content": "@API_HostAddress = http://localhost:5132\n\nGET {{API_HostAddress}}/weatherforecast/\nAccept: application/json\n\n###\n"
  },
  {
    "path": "API/Controllers/AccountController.cs",
    "content": "using System.Security.Claims;\nusing API.DTOs;\nusing API.Extensions;\nusing Core.Entities;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class AccountController(SignInManager<AppUser> signInManager) : BaseApiController\n{\n    [HttpPost(\"register\")]\n    public async Task<ActionResult> Register(RegisterDto registerDto)\n    {\n        var user = new AppUser\n        {\n            FirstName = registerDto.FirstName,\n            LastName = registerDto.LastName,\n            Email = registerDto.Email,\n            UserName = registerDto.Email\n        };\n\n        var result = await signInManager.UserManager.CreateAsync(user, registerDto.Password);\n\n        if (!result.Succeeded)\n        {\n            foreach (var error in result.Errors)\n            {\n                ModelState.AddModelError(error.Code, error.Description);\n            }\n\n            return ValidationProblem();\n        }\n\n        return Ok();\n    }\n\n    [Authorize]\n    [HttpPost(\"logout\")]\n    public async Task<ActionResult> Logout()\n    {\n        await signInManager.SignOutAsync();\n        return NoContent();\n    }\n\n    [HttpGet(\"user-info\")]\n    public async Task<ActionResult> GetUserInfo()\n    {\n        if (User.Identity?.IsAuthenticated == false) return NoContent();\n\n        var user = await signInManager.UserManager.GetUserByEmailWithAddress(User);\n\n        return Ok(new\n        {\n            user.FirstName,\n            user.LastName,\n            user.Email,\n            Address = user.Address?.ToDto(),\n            Roles = User.FindFirstValue(ClaimTypes.Role)\n        });\n    }\n\n    [HttpGet(\"auth-status\")]\n    public ActionResult GetAuthState()\n    {\n        return Ok(new\n        {\n            IsAuthenticated = User.Identity?.IsAuthenticated ?? false\n        });\n    }\n    \n    [Authorize]\n    [HttpPost(\"address\")]\n    public async Task<ActionResult<Address>> CreateOrUpdateAddress(AddressDto addressDto)\n    {\n        var user = await signInManager.UserManager.GetUserByEmailWithAddress(User);\n\n        if (user.Address == null)\n        {\n            user.Address = addressDto.ToEntity();\n        }\n        else\n        {\n            user.Address.UpdateFromDto(addressDto);\n        }\n\n        var result = await signInManager.UserManager.UpdateAsync(user);\n\n        if (!result.Succeeded) return BadRequest(\"Problem updating user address\");\n\n        return Ok(user.Address.ToDto());\n    }\n}"
  },
  {
    "path": "API/Controllers/AdminController.cs",
    "content": "using System;\nusing API.DTOs;\nusing API.Extensions;\nusing Core.Entities.OrderAggregate;\nusing Core.Interfaces;\nusing Core.Specifications;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\n[Authorize(Roles = \"Admin\")]\npublic class AdminController(IUnitOfWork unit, IPaymentService paymentService) : BaseApiController\n{\n    [HttpGet(\"orders\")]\n    public async Task<ActionResult<IReadOnlyList<OrderDto>>> GetOrders([FromQuery] OrderSpecParams specParams)\n    {\n        var spec = new OrderSpecification(specParams);\n\n        return await CreatePagedResult(unit.Repository<Order>(),\n            spec, specParams.PageIndex, specParams.PageSize, o => o.ToDto());\n    }\n\n    [HttpGet(\"orders/{id:int}\")]\n    public async Task<ActionResult<OrderDto>> GetOrderById(int id)\n    {\n        var spec = new OrderSpecification(id);\n\n        var order = await unit.Repository<Order>().GetEntityWithSpec(spec);\n\n        if (order == null) return BadRequest(\"No order with that Id\");\n\n        return order.ToDto();\n    }\n\n    [HttpPost(\"orders/refund/{id:int}\")]\n    public async Task<ActionResult<OrderDto>> RefundOrder(int id)\n    {\n        var spec = new OrderSpecification(id);\n\n        var order = await unit.Repository<Order>().GetEntityWithSpec(spec);\n\n        if (order == null) return BadRequest(\"No order with that Id\");\n\n        if (order.Status == OrderStatus.Pending)\n            return BadRequest(\"Payment not received for this order\");\n\n        var result = await paymentService.RefundPayment(order.PaymentIntentId);\n\n        if (result == \"succeeded\")\n        {\n            order.Status = OrderStatus.Refunded;\n\n            await unit.Complete();\n\n            return order.ToDto();\n        }\n\n        return BadRequest(\"Problem refunding order\");\n    }\n}\n"
  },
  {
    "path": "API/Controllers/BaseApiController.cs",
    "content": "using System;\nusing API.RequestHelpers;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\n[ApiController]\n[Route(\"api/[controller]\")]\npublic class BaseApiController : ControllerBase\n{\n    protected async Task<ActionResult> CreatePagedResult<T>(IGenericRepository<T> repository,\n        ISpecification<T> specification, int pageIndex, int pageSize) where T : BaseEntity\n    {\n        var items = await repository.ListAsync(specification);\n        var totalItems = await repository.CountAsync(specification);\n        var pagination = new Pagination<T>(pageIndex, pageSize, totalItems, items);\n        return Ok(pagination);\n    }\n\n    protected async Task<ActionResult> CreatePagedResult<T, TDto>(IGenericRepository<T> repo,\n        ISpecification<T> spec, int pageIndex, int pageSize, Func<T, TDto> toDto)\n            where T : BaseEntity, IDtoConvertible\n            where TDto: class\n    {\n        var items = await repo.ListAsync(spec);\n        var count = await repo.CountAsync(spec);\n\n        var dtoItems = items.Select(toDto).ToList();\n\n        var pagination = new Pagination<TDto>(pageIndex, pageSize, count, dtoItems);\n\n        return Ok(pagination);\n    }\n}"
  },
  {
    "path": "API/Controllers/BuggyController.cs",
    "content": "using System.Security.Claims;\nusing API.DTOs;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class BuggyController : BaseApiController\n{\n    [HttpGet(\"unauthorized\")]\n    public IActionResult GetUnauthorized()\n    {\n        return Unauthorized();\n    }\n\n    [HttpGet(\"badrequest\")]\n    public IActionResult GetBadRequest()\n    {\n        return BadRequest(\"This is not a good request\");\n    }\n\n    [HttpGet(\"notfound\")]\n    public IActionResult GetNotFound()\n    {\n        return NotFound();\n    }\n\n    [HttpGet(\"internalerror\")]\n    public IActionResult GetInternalError()\n    {\n        throw new Exception(\"This is a test exception\");\n    }\n\n    [HttpPost(\"validationerror\")]\n    public IActionResult GetValidationError(CreateProductDto product)\n    {\n        return Ok();\n    }\n\n    [Authorize]\n    [HttpGet(\"secret\")]\n    public IActionResult GetSecret()\n    {\n        var name = User.FindFirst(ClaimTypes.Name)?.Value;\n        var id = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;\n\n        return Ok(\"Hello \" + name + \" with the id of \" + id);\n    }\n\n    [Authorize(Roles = \"Admin\")]\n    [HttpGet(\"admin-secret\")]\n    public IActionResult GetAdminSecret()\n    {\n        var name = User.FindFirst(ClaimTypes.Name)?.Value;\n        var id = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;\n        var isAdmin = User.IsInRole(\"Admin\");\n        var roles = User.FindFirstValue(ClaimTypes.Role);\n\n        return Ok(new\n        {\n            name,\n            id,\n            isAdmin,\n            roles\n        });\n    }\n}"
  },
  {
    "path": "API/Controllers/CartController.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class CartController(ICartService cartService) : BaseApiController\n{\n    [HttpGet]\n    public async Task<ActionResult<ShoppingCart>> GetCartById(string id)\n    {\n        var cart = await cartService.GetCartAsync(id);\n\n        return Ok(cart ?? new ShoppingCart{Id = id});\n    }\n    \n    [HttpPost]\n    public async Task<ActionResult<ShoppingCart>> UpdateCart(ShoppingCart cart)\n    {\n        var updatedCart = await cartService.SetCartAsync(cart);\n\n        return Ok(updatedCart);\n    }\n    \n    [HttpDelete]\n    public async Task DeleteCart(string id)\n    {\n        await cartService.DeleteCartAsync(id);\n    }\n}"
  },
  {
    "path": "API/Controllers/CouponsController.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class CouponsController(ICouponService couponService) : BaseApiController\n{\n    [HttpGet(\"{code}\")]\n    public async Task<ActionResult<AppCoupon>> ValidateCoupon(string code)\n    {\n        var coupon = await couponService.GetCouponFromPromoCode(code);\n\n        if (coupon == null) return BadRequest(\"Invalid voucher code\");\n\n        return coupon;\n    }\n}"
  },
  {
    "path": "API/Controllers/FallbackController.cs",
    "content": "using System;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class FallbackController : Controller\n{\n    public IActionResult Index()\n    {\n        return PhysicalFile(Path.Combine(Directory.GetCurrentDirectory(), \"wwwroot\",\n            \"index.html\"), \"text/HTML\");\n    }\n}\n"
  },
  {
    "path": "API/Controllers/OrdersController.cs",
    "content": "using System;\nusing API.DTOs;\nusing API.Extensions;\nusing Core.Entities;\nusing Core.Entities.OrderAggregate;\nusing Core.Interfaces;\nusing Core.Specifications;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\n[Authorize]\npublic class OrdersController(ICartService cartService, IUnitOfWork unit) : BaseApiController\n{\n    [HttpPost]\n    public async Task<ActionResult<Order>> CreateOrder(CreateOrderDto orderDto)\n    {\n        var email = User.GetEmail();\n\n        var cart = await cartService.GetCartAsync(orderDto.CartId);\n\n        if (cart == null) return BadRequest(\"Cart not found\");\n\n        if (cart.PaymentIntentId == null) return BadRequest(\"No payment intent for this order\");\n\n        var items = new List<OrderItem>();\n\n        foreach (var item in cart.Items)\n        {\n            var productItem = await unit.Repository<Product>().GetByIdAsync(item.ProductId);\n\n            if (productItem == null) return BadRequest(\"Problem with the order\");\n\n            var itemOrdered = new ProductItemOrdered\n            {\n                ProductId = item.ProductId,\n                ProductName = item.ProductName,\n                PictureUrl = item.PictureUrl\n            };\n\n            var orderItem = new OrderItem\n            {\n                ItemOrdered = itemOrdered,\n                Price = productItem.Price,\n                Quantity = item.Quantity\n            };\n            items.Add(orderItem);\n        }\n\n        var deliveryMethod = await unit.Repository<DeliveryMethod>().GetByIdAsync(orderDto.DeliveryMethodId);\n\n        if (deliveryMethod == null) return BadRequest(\"No delivery method selected\");\n\n        var order = new Order\n        {\n            OrderItems = items,\n            DeliveryMethod = deliveryMethod,\n            ShippingAddress = orderDto.ShippingAddress,\n            Subtotal = items.Sum(x => x.Price * x.Quantity),\n            Discount = orderDto.Discount,\n            PaymentSummary = orderDto.PaymentSummary,\n            PaymentIntentId = cart.PaymentIntentId,\n            BuyerEmail = email\n        };\n\n        unit.Repository<Order>().Add(order);\n\n        if (await unit.Complete())\n        {\n            return order;\n        }\n\n        return BadRequest(\"Problem creating order\");\n    }\n\n    [HttpGet]\n    public async Task<ActionResult<IReadOnlyList<OrderDto>>> GetOrdersForUser()\n    {\n        var spec = new OrderSpecification(User.GetEmail());\n\n        var orders = await unit.Repository<Order>().ListAsync(spec);\n\n        var ordersToReturn = orders.Select(o => o.ToDto()).ToList();\n\n        return Ok(ordersToReturn);\n    }\n\n    [HttpGet(\"{id:int}\")]\n    public async Task<ActionResult<OrderDto>> GetOrderById(int id)\n    {\n        var spec = new OrderSpecification(User.GetEmail(), id);\n\n        var order = await unit.Repository<Order>().GetEntityWithSpec(spec);\n\n        if (order == null) return NotFound();\n\n        return order.ToDto();\n    }\n}\n"
  },
  {
    "path": "API/Controllers/PaymentsController.cs",
    "content": "using System;\nusing API.Extensions;\nusing API.SignalR;\nusing Core.Entities;\nusing Core.Entities.OrderAggregate;\nusing Core.Interfaces;\nusing Core.Specifications;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.SignalR;\nusing Stripe;\n\nnamespace API.Controllers;\n\npublic class PaymentsController(IPaymentService paymentService,\n    IUnitOfWork unit,\n    IHubContext<NotificationHub> hubContext,\n    ILogger<PaymentsController> logger,\n    IConfiguration config) : BaseApiController\n{\n    private readonly string _whSecret = config[\"StripeSettings:WhSecret\"]!;\n\n    [Authorize]\n    [HttpPost(\"{cartId}\")]\n    public async Task<ActionResult> CreateOrUpdatePaymentIntent(string cartId)\n    {\n        var cart = await paymentService.CreateOrUpdatePaymentIntent(cartId);\n\n        if (cart == null) return BadRequest(\"Problem with your cart on the API\");\n\n        return Ok(cart);\n    }\n\n    [HttpGet(\"delivery-methods\")]\n    public async Task<ActionResult<IReadOnlyList<DeliveryMethod>>> GetDeliveryMethods()\n    {\n        return Ok(await unit.Repository<DeliveryMethod>().ListAllAsync());\n    }\n\n    [HttpPost(\"webhook\")]\n    public async Task<IActionResult> StripeWebhook()\n    {\n        var json = await new StreamReader(Request.Body).ReadToEndAsync();\n\n        try\n        {\n            var stripeEvent = ConstructStripeEvent(json);\n\n            if (stripeEvent.Data.Object is not PaymentIntent intent)\n            {\n                return BadRequest(\"Invalid event data.\");\n            }\n\n            await HandlePaymentIntentSucceeded(intent);\n\n            return Ok();\n        }\n        catch (StripeException ex)\n        {\n            logger.LogError(ex, \"Stripe webhook error\");\n            return StatusCode(StatusCodes.Status500InternalServerError, \"Webhook error\");\n        }\n        catch (Exception ex)\n        {\n            logger.LogError(ex, \"An unexpected error occurred\");\n            return StatusCode(StatusCodes.Status500InternalServerError, \"An unexpected error occurred\");\n        }\n    }\n\n    private Event ConstructStripeEvent(string json)\n    {\n        try\n        {\n            return EventUtility.ConstructEvent(json, Request.Headers[\"Stripe-Signature\"], _whSecret);\n        }\n        catch (Exception ex)\n        {\n            logger.LogError(ex, \"Failed to construct Stripe event\");\n            throw new StripeException(\"Invalid signature\");\n        }\n    }\n\n    private async Task HandlePaymentIntentSucceeded(PaymentIntent intent)\n    {\n        if (intent.Status == \"succeeded\")\n        {\n            var spec = new OrderSpecification(intent.Id, true);\n\n            var order = await unit.Repository<Order>().GetEntityWithSpec(spec)\n                        ?? throw new Exception(\"Order not found\");\n\n            var orderTotalInCents = (long)Math.Round(order.GetTotal() * 100,\n            MidpointRounding.AwayFromZero);\n\n            if (orderTotalInCents != intent.Amount)\n            {\n                order.Status = OrderStatus.PaymentMismatch;\n            }\n            else\n            {\n                order.Status = OrderStatus.PaymentReceived;\n            }\n\n            await unit.Complete();\n\n            var connectionId = NotificationHub.GetConnectionIdByEmail(order.BuyerEmail);\n\n            if (!string.IsNullOrEmpty(connectionId))\n            {\n                await hubContext.Clients.Client(connectionId).SendAsync(\"OrderCompleteNotification\",\n                    order.ToDto());\n            }\n        }\n    }\n}"
  },
  {
    "path": "API/Controllers/ProductsController.cs",
    "content": "using API.RequestHelpers;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Core.Specifications;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class ProductsController(IUnitOfWork unit) : BaseApiController\n{\n    [Cached(100000)]\n    [HttpGet]\n    public async Task<ActionResult<IReadOnlyList<Product>>> GetProducts([FromQuery]ProductSpecParams productParams)\n    {\n        var spec = new ProductSpecification(productParams);\n\n        return await CreatePagedResult(unit.Repository<Product>(), spec,\n            productParams.PageIndex, productParams.PageSize);\n    }\n\n    [Cached(100000)]\n    [HttpGet(\"{id}\")]\n    public async Task<ActionResult<Product>> GetProduct(int id)\n    {\n        var product = await unit.Repository<Product>().GetByIdAsync(id);\n\n        if (product == null) return NotFound();\n\n        return product;\n    }\n\n    [InvalidateCache(\"api/products|\")]\n    [Authorize(Roles = \"Admin\")]\n    [HttpPost]\n    public async Task<ActionResult<Product>> CreateProduct(Product product)\n    {\n        unit.Repository<Product>().Add(product);\n\n        if (await unit.Complete())\n        {\n            return CreatedAtAction(\"GetProduct\", new { id = product.Id }, product);\n        };\n\n        return BadRequest(\"Problem creating product\");\n    }\n\n    [InvalidateCache(\"api/products|\")]\n    [Authorize(Roles = \"Admin\")]\n    [HttpPut(\"{id}\")]\n    public async Task<IActionResult> UpdateProduct(int id, Product product)\n    {\n        if (id != product.Id || !ProductExists(id)) return BadRequest(\"Cannot update this product\");\n\n        unit.Repository<Product>().Update(product);\n\n        if (await unit.Complete())\n        {\n            return NoContent();\n        };\n\n        return BadRequest(\"Problem updating the product\");\n    }\n\n    [InvalidateCache(\"api/products|\")]\n    [Authorize(Roles = \"Admin\")]\n    [HttpDelete(\"{id}\")]\n    public async Task<IActionResult> DeleteProduct(int id)\n    {\n        var product = await unit.Repository<Product>().GetByIdAsync(id);\n\n        if (product == null) return NotFound();\n\n        unit.Repository<Product>().Remove(product);\n\n        if (await unit.Complete())\n        {\n            return NoContent();\n        };\n\n        return BadRequest(\"Problem deleting the product\");\n    }\n\n    [Cached(100000)]\n    [HttpGet(\"brands\")]\n    public async Task<ActionResult<IReadOnlyList<string>>> GetBrands()\n    {\n        var spec = new BrandListSpecification();\n\n        return Ok(await unit.Repository<Product>().ListAsync(spec));\n    }\n    \n    [Cached(100000)]\n    [HttpGet(\"types\")]\n    public async Task<ActionResult<IReadOnlyList<string>>> GetTypes()\n    {\n        var spec = new TypeListSpecification();\n\n        return Ok(await unit.Repository<Product>().ListAsync(spec));\n    }\n    \n    private bool ProductExists(int id)\n    {\n        return unit.Repository<Product>().Exists(id);\n    }\n}\n"
  },
  {
    "path": "API/Controllers/WeatherForecastController.cs",
    "content": "using Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\n[ApiController]\n[Route(\"[controller]\")]\npublic class WeatherForecastController : ControllerBase\n{\n    private static readonly string[] Summaries = new[]\n    {\n        \"Freezing\", \"Bracing\", \"Chilly\", \"Cool\", \"Mild\", \"Warm\", \"Balmy\", \"Hot\", \"Sweltering\", \"Scorching\"\n    };\n\n    private readonly ILogger<WeatherForecastController> _logger;\n\n    public WeatherForecastController(ILogger<WeatherForecastController> logger)\n    {\n        _logger = logger;\n    }\n\n    [HttpGet(Name = \"GetWeatherForecast\")]\n    public IEnumerable<WeatherForecast> Get()\n    {\n        return Enumerable.Range(1, 5).Select(index => new WeatherForecast\n        {\n            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),\n            TemperatureC = Random.Shared.Next(-20, 55),\n            Summary = Summaries[Random.Shared.Next(Summaries.Length)]\n        })\n        .ToArray();\n    }\n}\n"
  },
  {
    "path": "API/DTOs/AddressDto.cs",
    "content": "using System;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace API.DTOs;\n\npublic class AddressDto\n{\n    [Required] public string Line1 { get; set; } = string.Empty;\n    public string? Line2 { get; set; }\n    [Required] public string City { get; set; } = string.Empty;\n    [Required] public string State { get; set; } = string.Empty;\n    [Required] public string PostalCode { get; set; } = string.Empty;\n    [Required] public string Country { get; set; } = string.Empty;\n}\n"
  },
  {
    "path": "API/DTOs/CreateOrderDto.cs",
    "content": "using System;\nusing System.ComponentModel.DataAnnotations;\nusing Core.Entities.OrderAggregate;\n\nnamespace API.DTOs;\n\npublic class CreateOrderDto\n{\n    [Required]\n    public string CartId { get; set; } = string.Empty;\n\n    [Required]\n    public int DeliveryMethodId { get; set; }\n\n    [Required]\n    public ShippingAddress ShippingAddress { get; set; } = null!;\n\n    [Required]\n    public PaymentSummary PaymentSummary { get; set; } = null!;\n    public decimal Discount { get; set; }\n}\n"
  },
  {
    "path": "API/DTOs/CreateProductDto.cs",
    "content": "using System;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace API.DTOs;\n\npublic class CreateProductDto\n{\n    [Required] public string Name { get; set; } = string.Empty;\n\n    [Required] public string Description { get; set; } = string.Empty;\n    \n    [Range(0.01, double.MaxValue, ErrorMessage = \"Price must be greater than 0\")]\n    [Required] public decimal Price { get; set; }\n    \n    [Required] public string PictureUrl { get; set; } = string.Empty;\n    [Required] public string Type { get; set; } = string.Empty;\n    [Required] public string Brand { get; set; } = string.Empty;\n    \n    [Range(1, int.MaxValue, ErrorMessage = \"QuantityInStock must be at least 1\")]\n    [Required] public int QuantityInStock { get; set; }\n}\n"
  },
  {
    "path": "API/DTOs/OrderDto.cs",
    "content": "using System;\nusing Core.Entities.OrderAggregate;\n\nnamespace API.DTOs;\n\npublic class OrderDto\n{\n    public int Id { get; set; }\n    public DateTime OrderDate { get; set; }\n    public required string BuyerEmail { get; set; }\n    public required ShippingAddress ShippingAddress { get; set; }\n    public required string DeliveryMethod { get; set; }\n    public required PaymentSummary PaymentSummary { get; set; }\n    public decimal ShippingPrice { get; set; }\n    public required List<OrderItemDto> OrderItems { get; set; }\n    public decimal Subtotal { get; set; }\n    public decimal Discount { get; set; }\n    public required string Status { get; set; }\n    public decimal Total { get; set; }\n    public required string PaymentIntentId { get; set; }\n}\n"
  },
  {
    "path": "API/DTOs/OrderItemDto.cs",
    "content": "using System;\n\nnamespace API.DTOs;\n\npublic class OrderItemDto\n{\n    public int ProductId { get; set; }\n    public required string ProductName { get; set; }\n    public required string PictureUrl { get; set; }\n    public decimal Price { get; set; }\n    public int Quantity { get; set; }\n}\n"
  },
  {
    "path": "API/DTOs/RegisterDto.cs",
    "content": "using System;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace API.DTOs;\n\npublic class RegisterDto\n{\n    [Required] public string FirstName { get; set; } = string.Empty;\n    [Required] public string LastName { get; set; } = string.Empty;\n    [Required] public string Email { get; set; } = string.Empty;\n    [Required] public string Password { get; set; } = string.Empty;\n}\n"
  },
  {
    "path": "API/Errors/ApiErrorResponse.cs",
    "content": "using System;\n\nnamespace API.Errors;\n\npublic class ApiErrorResponse(int statusCode, string message, string? details)\n{\n    public int StatusCode { get; set; } = statusCode;\n    public string Message { get; set; } = message;\n    public string? Details { get; set; } = details;\n}"
  },
  {
    "path": "API/Extensions/AddressMappingExtensions.cs",
    "content": "using System;\nusing API.DTOs;\nusing Core.Entities;\n\nnamespace API.Extensions;\n\npublic static class AddressMappingExtensions\n{\n    public static AddressDto? ToDto(this Address? address)\n    {\n        if (address == null) return null;\n\n        return new AddressDto\n        {\n            Line1 = address.Line1,\n            Line2 = address.Line2,\n            City = address.City,\n            State = address.State,\n            Country = address.Country,\n            PostalCode = address.PostalCode\n        };\n    }\n\n    public static Address ToEntity(this AddressDto addressDto)\n    {\n        if (addressDto == null) throw new ArgumentNullException(nameof(addressDto));\n\n        return new Address\n        {\n            Line1 = addressDto.Line1,\n            Line2 = addressDto.Line2,\n            City = addressDto.City,\n            State = addressDto.State,\n            Country = addressDto.Country,\n            PostalCode = addressDto.PostalCode\n        };\n    }\n\n    public static void UpdateFromDto(this Address address, AddressDto addressDto)\n    {\n        if (addressDto == null) throw new ArgumentNullException(nameof(addressDto));\n        if (address == null) throw new ArgumentNullException(nameof(address));\n\n        address.Line1 = addressDto.Line1;\n        address.Line2 = addressDto.Line2;\n        address.City = addressDto.City;\n        address.State = addressDto.State;\n        address.Country = addressDto.Country;\n        address.PostalCode = addressDto.PostalCode;\n    }\n}\n"
  },
  {
    "path": "API/Extensions/ClaimsPrincipalExtensions.cs",
    "content": "using System;\nusing System.Security.Authentication;\nusing System.Security.Claims;\nusing Core.Entities;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace API.Extensions;\n\npublic static class ClaimsPrincipleExtensions\n{\n    public static async Task<AppUser> GetUserByEmail(this UserManager<AppUser> userManager, ClaimsPrincipal user)\n    {\n        var userToReturn = await userManager.Users.FirstOrDefaultAsync(x =>\n            x.Email == user.GetEmail());\n\n        if (userToReturn == null) throw new AuthenticationException(\"User not found\");\n\n        return userToReturn;\n    }\n\n    public static async Task<AppUser> GetUserByEmailWithAddress(this UserManager<AppUser> userManager, ClaimsPrincipal user)\n    {\n        var userToReturn = await userManager.Users\n            .Include(x => x.Address)\n            .FirstOrDefaultAsync(x => x.Email == user.GetEmail());\n\n        if (userToReturn == null) throw new AuthenticationException(\"User not found\");\n\n        return userToReturn;\n    }\n\n    public static string GetEmail(this ClaimsPrincipal user)\n    {\n        var email = user.FindFirstValue(ClaimTypes.Email)\n            ?? throw new AuthenticationException(\"Email claim not found\");\n        return email;\n    }\n}"
  },
  {
    "path": "API/Extensions/OrderMappingExtensions.cs",
    "content": "using System;\nusing API.DTOs;\nusing Core.Entities.OrderAggregate;\n\nnamespace API.Extensions;\n\npublic static class OrderMappingExtensions\n{\n    public static OrderDto ToDto(this Order order)\n    {\n        return new OrderDto\n        {\n            Id = order.Id,\n            BuyerEmail = order.BuyerEmail,\n            OrderDate = order.OrderDate,\n            ShippingAddress = order.ShippingAddress,\n            PaymentSummary = order.PaymentSummary,\n            DeliveryMethod = order.DeliveryMethod.Description,\n            ShippingPrice = order.DeliveryMethod.Price,\n            OrderItems = order.OrderItems.Select(x => x.ToDto()).ToList(),\n            Subtotal = order.Subtotal,\n            Discount = order.Discount,\n            Status = order.Status.ToString(),\n            PaymentIntentId = order.PaymentIntentId,\n            Total = order.GetTotal()\n        };\n    }\n\n    public static OrderItemDto ToDto(this OrderItem orderItem)\n    {\n        return new OrderItemDto\n        {\n            ProductId = orderItem.ItemOrdered.ProductId,\n            ProductName = orderItem.ItemOrdered.ProductName,\n            PictureUrl = orderItem.ItemOrdered.PictureUrl,\n            Price = orderItem.Price,\n            Quantity = orderItem.Quantity\n        };\n    }\n}"
  },
  {
    "path": "API/Middleware/ExceptionMiddleware.cs",
    "content": "using System;\nusing System.Net;\nusing System.Text.Json;\nusing API.Errors;\n\nnamespace API.Middleware;\n\npublic class ExceptionMiddleware(IHostEnvironment env, RequestDelegate next)\n{\n    public async Task InvokeAsync(HttpContext context)\n    {\n        try\n        {\n            await next(context);\n        }\n        catch (Exception e)\n        {\n            await HandleExceptionAsync(context, e, env);\n        }\n    }\n\n    private static Task HandleExceptionAsync(HttpContext context, Exception e, IHostEnvironment env)\n    {\n        context.Response.ContentType = \"application/json\";\n        context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;\n\n        var response = env.IsDevelopment()\n            ? new ApiErrorResponse(context.Response.StatusCode, e.Message, e.StackTrace)\n            : new ApiErrorResponse(context.Response.StatusCode, e.Message, \"Internal Server error\");\n\n        var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };\n\n        var json = JsonSerializer.Serialize(response, options);\n\n        return context.Response.WriteAsync(json);\n    }\n}"
  },
  {
    "path": "API/Program.cs",
    "content": "using API.Middleware;\nusing API.SignalR;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Infrastructure.Data;\nusing Infrastructure.Services;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.EntityFrameworkCore;\nusing StackExchange.Redis;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// Add services to the container.\n\nbuilder.Services.AddControllers();\nbuilder.Services.AddDbContext<StoreContext>(opt =>\n{\n    opt.UseSqlServer(builder.Configuration.GetConnectionString(\"DefaultConnection\"));\n});\nbuilder.Services.AddScoped<IProductRepository, ProductRepository>();\nbuilder.Services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>));\nbuilder.Services.AddScoped<IUnitOfWork, UnitOfWork>();\nbuilder.Services.AddScoped<IPaymentService, PaymentService>();\nbuilder.Services.AddScoped<ICouponService, CouponService>();\nbuilder.Services.AddCors();\nbuilder.Services.AddSingleton<IConnectionMultiplexer>(config =>\n{\n    var connectionString = builder.Configuration.GetConnectionString(\"Redis\")\n        ?? throw new Exception(\"Cannot get redis connection string\");\n    var configuation = ConfigurationOptions.Parse(connectionString, true);\n    return ConnectionMultiplexer.Connect(configuation);\n});\nbuilder.Services.AddSingleton<ICartService, CartService>();\nbuilder.Services.AddSingleton<IResponseCacheService, ResponseCacheService>();\n\nbuilder.Services.AddAuthorization();\nbuilder.Services.AddIdentityApiEndpoints<AppUser>()\n    .AddRoles<IdentityRole>()\n    .AddEntityFrameworkStores<StoreContext>();\nbuilder.Services.AddSignalR();\n\nvar app = builder.Build();\n\n// Configure the HTTP request pipeline.\napp.UseMiddleware<ExceptionMiddleware>();\n\napp.UseCors(x => x\n    .AllowAnyHeader()\n    .AllowAnyMethod()\n    .AllowCredentials()\n    .WithOrigins(\"http://localhost:4200\", \"https://localhost:4200\"));\n\napp.UseAuthentication();\napp.UseAuthorization();\n\napp.UseDefaultFiles();\napp.UseStaticFiles();\n\napp.MapControllers();\napp.MapGroup(\"api\").MapIdentityApi<AppUser>();\napp.MapHub<NotificationHub>(\"/hub/notifications\");\napp.MapFallbackToController(\"Index\", \"Fallback\");\n\ntry\n{\n    using var scope = app.Services.CreateScope();\n    var services = scope.ServiceProvider;\n    var context = services.GetRequiredService<StoreContext>();\n    var userManager = services.GetRequiredService<UserManager<AppUser>>();\n    await context.Database.MigrateAsync();\n    await StoreContextSeed.SeedAsync(context, userManager);\n}\ncatch (Exception e)\n{\n    Console.WriteLine(e);\n    throw;\n}\n\napp.Run();\n"
  },
  {
    "path": "API/Properties/launchSettings.json",
    "content": "﻿{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"https\": {\n      \"commandName\": \"Project\",\n      \"dotnetRunMessages\": true,\n      \"launchBrowser\": false,\n      \"applicationUrl\": \"https://localhost:5001\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "API/RequestHelpers/CachedAttribute.cs",
    "content": "using System;\nusing System.Text;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\n\nnamespace API.RequestHelpers;\n\n[AttributeUsage(AttributeTargets.All)]\npublic class CachedAttribute(int timeToLiveSeconds) : Attribute, IAsyncActionFilter\n{\n    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)\n    {\n        var cacheService = context.HttpContext.RequestServices\n            .GetRequiredService<IResponseCacheService>();\n\n        var cacheKey = GenerateCacheKeyFromRequest(context.HttpContext.Request);\n\n        var cachedResponse = await cacheService.GetCachedResponseAsync(cacheKey);\n\n        if (!string.IsNullOrEmpty(cachedResponse))\n        {\n            var contentResult = new ContentResult\n            {\n                Content = cachedResponse,\n                ContentType = \"application/json\",\n                StatusCode = 200\n            };\n\n            context.Result = contentResult;\n\n            return;\n        }\n\n        var executedContext = await next(); // move to controller\n\n        if (executedContext.Result is OkObjectResult okObjectResult)\n        {\n            if (okObjectResult.Value != null)\n            {\n                await cacheService.CacheResponseAsync(cacheKey, okObjectResult.Value,\n                    TimeSpan.FromSeconds(timeToLiveSeconds));\n            }\n        }\n    }\n\n    private static string GenerateCacheKeyFromRequest(HttpRequest request)\n    {\n        var keyBuilder = new StringBuilder();\n\n        keyBuilder.Append($\"{request.Path}\");\n\n        foreach (var (key, value) in request.Query.OrderBy(x => x.Key))\n        {\n            keyBuilder.Append($\"|{key}-{value}\");\n        }\n\n        return keyBuilder.ToString();\n    }\n}"
  },
  {
    "path": "API/RequestHelpers/InvalidateCacheAttribute.cs",
    "content": "using System;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc.Filters;\n\nnamespace API.RequestHelpers;\n\n[AttributeUsage(AttributeTargets.Method)]\npublic class InvalidateCacheAttribute(string pattern) : Attribute, IAsyncActionFilter\n{\n    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)\n    {\n        var resultContext = await next();\n\n        if (resultContext.Exception == null || resultContext.ExceptionHandled)\n        {\n            var cacheService = context.HttpContext.RequestServices\n                .GetRequiredService<IResponseCacheService>();\n\n            await cacheService.RemoveCacheByPattern(pattern);\n        }\n    }\n}"
  },
  {
    "path": "API/RequestHelpers/Pagination.cs",
    "content": "using System;\n\nnamespace API.RequestHelpers;\n\npublic class Pagination<T>(int pageIndex, int pageSize, int count, IReadOnlyList<T> data)\n    where T : class\n{\n    public int PageIndex { get; set; } = pageIndex;\n    public int PageSize { get; set; } = pageSize;\n    public int Count { get; set; } = count;\n    public IReadOnlyList<T> Data { get; set; } = data;\n}"
  },
  {
    "path": "API/SignalR/NotificationHub.cs",
    "content": "using System;\nusing System.Collections.Concurrent;\nusing API.Extensions;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.SignalR;\n\nnamespace API.SignalR;\n\n[Authorize]\npublic class NotificationHub : Hub\n{\n    private static readonly ConcurrentDictionary<string, string> UserConnections = new();\n\n    public override Task OnConnectedAsync()\n    {\n        var email = Context.User?.GetEmail();\n\n        if (!string.IsNullOrEmpty(email))\n            UserConnections[email] = Context.ConnectionId;\n\n        return base.OnConnectedAsync();\n    }\n\n    public override Task OnDisconnectedAsync(Exception? exception)\n    {\n        var email = Context.User?.GetEmail();\n\n        if (!string.IsNullOrEmpty(email))\n            UserConnections.TryRemove(email, out _);\n\n        return base.OnDisconnectedAsync(exception);\n    }\n\n    public static string? GetConnectionIdByEmail(string email)\n    {\n        UserConnections.TryGetValue(email, out var connectionId);\n\n        return connectionId;\n    }\n}\n"
  },
  {
    "path": "API/WeatherForecast.cs",
    "content": "namespace API;\n\npublic class WeatherForecast\n{\n    public DateOnly Date { get; set; }\n\n    public int TemperatureC { get; set; }\n\n    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);\n\n    public string? Summary { get; set; }\n}\n"
  },
  {
    "path": "API/appsettings.Development.json",
    "content": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Information\"\n    }\n  },\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Server=localhost,1433;Database=skinet;User Id=SA;Password=Password@1;TrustServerCertificate=True\",\n    \"Redis\": \"localhost\"\n  }\n}"
  },
  {
    "path": "API/wwwroot/3rdpartylicenses.txt",
    "content": "\n--------------------------------------------------------------------------------\nPackage: @angular/material\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2025 Google LLC.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @angular/cdk\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2025 Google LLC.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: nanoid\nLicense: \"MIT\"\n\nThe MIT License (MIT)\n\nCopyright 2017 Andrey Sitnik <andrey@sitnik.ru>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @stripe/stripe-js\nLicense: \"MIT\"\n\nMIT License\n\nCopyright (c) 2017 Stripe\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @angular/forms\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2010-2025 Google LLC. https://angular.dev/license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @angular/core\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2010-2025 Google LLC. https://angular.dev/license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: rxjs\nLicense: \"Apache-2.0\"\n\n                               Apache License\n                         Version 2.0, January 2004\n                      http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n    \"License\" shall mean the terms and conditions for use, reproduction,\n    and distribution as defined by Sections 1 through 9 of this document.\n\n    \"Licensor\" shall mean the copyright owner or entity authorized by\n    the copyright owner that is granting the License.\n\n    \"Legal Entity\" shall mean the union of the acting entity and all\n    other entities that control, are controlled by, or are under common\n    control with that entity. For the purposes of this definition,\n    \"control\" means (i) the power, direct or indirect, to cause the\n    direction or management of such entity, whether by contract or\n    otherwise, or (ii) ownership of fifty percent (50%) or more of the\n    outstanding shares, or (iii) beneficial ownership of such entity.\n\n    \"You\" (or \"Your\") shall mean an individual or Legal Entity\n    exercising permissions granted by this License.\n\n    \"Source\" form shall mean the preferred form for making modifications,\n    including but not limited to software source code, documentation\n    source, and configuration files.\n\n    \"Object\" form shall mean any form resulting from mechanical\n    transformation or translation of a Source form, including but\n    not limited to compiled object code, generated documentation,\n    and conversions to other media types.\n\n    \"Work\" shall mean the work of authorship, whether in Source or\n    Object form, made available under the License, as indicated by a\n    copyright notice that is included in or attached to the work\n    (an example is provided in the Appendix below).\n\n    \"Derivative Works\" shall mean any work, whether in Source or Object\n    form, that is based on (or derived from) the Work and for which the\n    editorial revisions, annotations, elaborations, or other modifications\n    represent, as a whole, an original work of authorship. For the purposes\n    of this License, Derivative Works shall not include works that remain\n    separable from, or merely link (or bind by name) to the interfaces of,\n    the Work and Derivative Works thereof.\n\n    \"Contribution\" shall mean any work of authorship, including\n    the original version of the Work and any modifications or additions\n    to that Work or Derivative Works thereof, that is intentionally\n    submitted to Licensor for inclusion in the Work by the copyright owner\n    or by an individual or Legal Entity authorized to submit on behalf of\n    the copyright owner. For the purposes of this definition, \"submitted\"\n    means any form of electronic, verbal, or written communication sent\n    to the Licensor or its representatives, including but not limited to\n    communication on electronic mailing lists, source code control systems,\n    and issue tracking systems that are managed by, or on behalf of, the\n    Licensor for the purpose of discussing and improving the Work, but\n    excluding communication that is conspicuously marked or otherwise\n    designated in writing by the copyright owner as \"Not a Contribution.\"\n\n    \"Contributor\" shall mean Licensor and any individual or Legal Entity\n    on behalf of whom a Contribution has been received by Licensor and\n    subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n    this License, each Contributor hereby grants to You a perpetual,\n    worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n    copyright license to reproduce, prepare Derivative Works of,\n    publicly display, publicly perform, sublicense, and distribute the\n    Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n    this License, each Contributor hereby grants to You a perpetual,\n    worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n    (except as stated in this section) patent license to make, have made,\n    use, offer to sell, sell, import, and otherwise transfer the Work,\n    where such license applies only to those patent claims licensable\n    by such Contributor that are necessarily infringed by their\n    Contribution(s) alone or by combination of their Contribution(s)\n    with the Work to which such Contribution(s) was submitted. If You\n    institute patent litigation against any entity (including a\n    cross-claim or counterclaim in a lawsuit) alleging that the Work\n    or a Contribution incorporated within the Work constitutes direct\n    or contributory patent infringement, then any patent licenses\n    granted to You under this License for that Work shall terminate\n    as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n    Work or Derivative Works thereof in any medium, with or without\n    modifications, and in Source or Object form, provided that You\n    meet the following conditions:\n\n    (a) You must give any other recipients of the Work or\n        Derivative Works a copy of this License; and\n\n    (b) You must cause any modified files to carry prominent notices\n        stating that You changed the files; and\n\n    (c) You must retain, in the Source form of any Derivative Works\n        that You distribute, all copyright, patent, trademark, and\n        attribution notices from the Source form of the Work,\n        excluding those notices that do not pertain to any part of\n        the Derivative Works; and\n\n    (d) If the Work includes a \"NOTICE\" text file as part of its\n        distribution, then any Derivative Works that You distribute must\n        include a readable copy of the attribution notices contained\n        within such NOTICE file, excluding those notices that do not\n        pertain to any part of the Derivative Works, in at least one\n        of the following places: within a NOTICE text file distributed\n        as part of the Derivative Works; within the Source form or\n        documentation, if provided along with the Derivative Works; or,\n        within a display generated by the Derivative Works, if and\n        wherever such third-party notices normally appear. The contents\n        of the NOTICE file are for informational purposes only and\n        do not modify the License. You may add Your own attribution\n        notices within Derivative Works that You distribute, alongside\n        or as an addendum to the NOTICE text from the Work, provided\n        that such additional attribution notices cannot be construed\n        as modifying the License.\n\n    You may add Your own copyright statement to Your modifications and\n    may provide additional or different license terms and conditions\n    for use, reproduction, or distribution of Your modifications, or\n    for any such Derivative Works as a whole, provided Your use,\n    reproduction, and distribution of the Work otherwise complies with\n    the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n    any Contribution intentionally submitted for inclusion in the Work\n    by You to the Licensor shall be under the terms and conditions of\n    this License, without any additional terms or conditions.\n    Notwithstanding the above, nothing herein shall supersede or modify\n    the terms of any separate license agreement you may have executed\n    with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n    names, trademarks, service marks, or product names of the Licensor,\n    except as required for reasonable and customary use in describing the\n    origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n    agreed to in writing, Licensor provides the Work (and each\n    Contributor provides its Contributions) on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n    implied, including, without limitation, any warranties or conditions\n    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n    PARTICULAR PURPOSE. You are solely responsible for determining the\n    appropriateness of using or redistributing the Work and assume any\n    risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n    whether in tort (including negligence), contract, or otherwise,\n    unless required by applicable law (such as deliberate and grossly\n    negligent acts) or agreed to in writing, shall any Contributor be\n    liable to You for damages, including any direct, indirect, special,\n    incidental, or consequential damages of any character arising as a\n    result of this License or out of the use or inability to use the\n    Work (including but not limited to damages for loss of goodwill,\n    work stoppage, computer failure or malfunction, or any and all\n    other commercial damages or losses), even if such Contributor\n    has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n    the Work or Derivative Works thereof, You may choose to offer,\n    and charge a fee for, acceptance of support, warranty, indemnity,\n    or other liability obligations and/or rights consistent with this\n    License. However, in accepting such obligations, You may act only\n    on Your own behalf and on Your sole responsibility, not on behalf\n    of any other Contributor, and only if You agree to indemnify,\n    defend, and hold each Contributor harmless for any liability\n    incurred by, or claims asserted against, such Contributor by reason\n    of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n    To apply the Apache License to your work, attach the following\n    boilerplate notice, with the fields enclosed by brackets \"[]\"\n    replaced with your own identifying information. (Don't include\n    the brackets!)  The text should be enclosed in the appropriate\n    comment syntax for the file format. We also recommend that a\n    file or class name and description of purpose be included on the\n    same \"printed page\" as the copyright notice for easier\n    identification within third-party archives.\n\n Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n \n\n--------------------------------------------------------------------------------\nPackage: tslib\nLicense: \"0BSD\"\n\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n--------------------------------------------------------------------------------\nPackage: @angular/common\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2010-2025 Google LLC. https://angular.dev/license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @angular/platform-browser\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2010-2025 Google LLC. https://angular.dev/license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @angular/router\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2010-2025 Google LLC. https://angular.dev/license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\nPackage: @microsoft/signalr\nLicense: \"MIT\"\n\n\n--------------------------------------------------------------------------------\nPackage: zone.js\nLicense: \"MIT\"\n\nThe MIT License\n\nCopyright (c) 2010-2025 Google LLC. https://angular.dev/license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n--------------------------------------------------------------------------------\n"
  },
  {
    "path": "API/wwwroot/chunk-6SXQ2FRE.js",
    "content": "import{f as t,g as m}from\"./chunk-SP3SSILU.js\";import\"./chunk-MIKQGBUF.js\";import\"./chunk-HJYZM75B.js\";import{a as o}from\"./chunk-NEILRAN2.js\";import\"./chunk-YYNGFOZ2.js\";import\"./chunk-76XFCVV7.js\";var i=[{path:\"admin\",component:t,canActivate:[o,m]}];export{i as adminRoutes};\n"
  },
  {
    "path": "API/wwwroot/chunk-76XFCVV7.js",
    "content": "var TD=Object.defineProperty,SD=Object.defineProperties;var MD=Object.getOwnPropertyDescriptors;var am=Object.getOwnPropertySymbols;var xD=Object.prototype.hasOwnProperty,RD=Object.prototype.propertyIsEnumerable;var cm=(e,t,n)=>t in e?TD(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||={})xD.call(t,n)&&cm(e,n,t[n]);if(am)for(var n of am(t))RD.call(t,n)&&cm(e,n,t[n]);return e},U=(e,t)=>SD(e,MD(t));var $r=(e=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(e,{get:(t,n)=>(typeof require<\"u\"?require:t)[n]}):e)(function(e){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});var F=(e,t,n)=>new Promise((r,o)=>{var i=c=>{try{a(n.next(c))}catch(l){o(l)}},s=c=>{try{a(n.throw(c))}catch(l){o(l)}},a=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,s);a((n=n.apply(e,t)).next())});var vu;function yu(){return vu}function en(e){let t=vu;return vu=e,t}var AD=Symbol(\"NotFound\"),Hs=class extends Error{name=\"\\u0275NotFound\";constructor(t){super(t)}};function zr(e){return e===AD||e?.name===\"\\u0275NotFound\"}function qs(e,t){return Object.is(e,t)}var ye=null,$s=!1,bu=1,ND=null,be=Symbol(\"SIGNAL\");function M(e){let t=ye;return ye=e,t}function Zs(){return ye}var Dn={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:\"unknown\",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Jn(e){if($s)throw new Error(\"\");if(ye===null)return;ye.consumerOnSignalRead(e);let t=ye.nextProducerIndex++;if(Qs(ye),t<ye.producerNode.length&&ye.producerNode[t]!==e&&Jo(ye)){let n=ye.producerNode[t];Ks(n,ye.producerIndexOfThis[t])}ye.producerNode[t]!==e&&(ye.producerNode[t]=e,ye.producerIndexOfThis[t]=Jo(ye)?um(e,ye,t):0),ye.producerLastReadVersion[t]=e.version}function lm(){bu++}function Ys(e){if(!(Jo(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===bu)){if(!e.producerMustRecompute(e)&&!er(e)){Gs(e);return}e.producerRecomputeValue(e),Gs(e)}}function _u(e){if(e.liveConsumerNode===void 0)return;let t=$s;$s=!0;try{for(let n of e.liveConsumerNode)n.dirty||OD(n)}finally{$s=t}}function Eu(){return ye?.consumerAllowSignalWrites!==!1}function OD(e){e.dirty=!0,_u(e),e.consumerMarkedDirty?.(e)}function Gs(e){e.dirty=!1,e.lastCleanEpoch=bu}function tn(e){return e&&(e.nextProducerIndex=0),M(e)}function wn(e,t){if(M(t),!(!e||e.producerNode===void 0||e.producerIndexOfThis===void 0||e.producerLastReadVersion===void 0)){if(Jo(e))for(let n=e.nextProducerIndex;n<e.producerNode.length;n++)Ks(e.producerNode[n],e.producerIndexOfThis[n]);for(;e.producerNode.length>e.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function er(e){Qs(e);for(let t=0;t<e.producerNode.length;t++){let n=e.producerNode[t],r=e.producerLastReadVersion[t];if(r!==n.version||(Ys(n),r!==n.version))return!0}return!1}function Wr(e){if(Qs(e),Jo(e))for(let t=0;t<e.producerNode.length;t++)Ks(e.producerNode[t],e.producerIndexOfThis[t]);e.producerNode.length=e.producerLastReadVersion.length=e.producerIndexOfThis.length=0,e.liveConsumerNode&&(e.liveConsumerNode.length=e.liveConsumerIndexOfThis.length=0)}function um(e,t,n){if(dm(e),e.liveConsumerNode.length===0&&fm(e))for(let r=0;r<e.producerNode.length;r++)e.producerIndexOfThis[r]=um(e.producerNode[r],e,r);return e.liveConsumerIndexOfThis.push(n),e.liveConsumerNode.push(t)-1}function Ks(e,t){if(dm(e),e.liveConsumerNode.length===1&&fm(e))for(let r=0;r<e.producerNode.length;r++)Ks(e.producerNode[r],e.producerIndexOfThis[r]);let n=e.liveConsumerNode.length-1;if(e.liveConsumerNode[t]=e.liveConsumerNode[n],e.liveConsumerIndexOfThis[t]=e.liveConsumerIndexOfThis[n],e.liveConsumerNode.length--,e.liveConsumerIndexOfThis.length--,t<e.liveConsumerNode.length){let r=e.liveConsumerIndexOfThis[t],o=e.liveConsumerNode[t];Qs(o),o.producerIndexOfThis[r]=t}}function Jo(e){return e.consumerIsAlwaysLive||(e?.liveConsumerNode?.length??0)>0}function Qs(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function dm(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}function fm(e){return e.producerNode!==void 0}function Xs(e){ND?.(e)}function ei(e,t){let n=Object.create(kD);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(Ys(n),Jn(n),n.value===Xo)throw n.error;return n.value};return r[be]=n,Xs(n),r}var zs=Symbol(\"UNSET\"),Ws=Symbol(\"COMPUTING\"),Xo=Symbol(\"ERRORED\"),kD=U(v({},Dn),{value:zs,dirty:!0,error:null,equal:qs,kind:\"computed\",producerMustRecompute(e){return e.value===zs||e.value===Ws},producerRecomputeValue(e){if(e.value===Ws)throw new Error(\"\");let t=e.value;e.value=Ws;let n=tn(e),r,o=!1;try{r=e.computation(),M(null),o=t!==zs&&t!==Xo&&r!==Xo&&e.equal(t,r)}catch(i){r=Xo,e.error=i}finally{wn(e,n)}if(o){e.value=t;return}e.value=r,e.version++}});function PD(){throw new Error}var hm=PD;function pm(e){hm(e)}function Du(e){hm=e}var FD=null;function wu(e,t){let n=Object.create(ti);n.value=e,t!==void 0&&(n.equal=t);let r=()=>mm(n);return r[be]=n,Xs(n),[r,s=>Gr(n,s),s=>Iu(n,s)]}function mm(e){return Jn(e),e.value}function Gr(e,t){Eu()||pm(e),e.equal(e.value,t)||(e.value=t,LD(e))}function Iu(e,t){Eu()||pm(e),Gr(e,t(e.value))}var ti=U(v({},Dn),{equal:qs,value:void 0,kind:\"signal\"});function LD(e){e.version++,lm(),_u(e),FD?.(e)}function k(e){return typeof e==\"function\"}function qr(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var Js=qr(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription:\n${n.map((r,o)=>`${o+1}) ${r.toString()}`).join(`\n  `)}`:\"\",this.name=\"UnsubscriptionError\",this.errors=n});function tr(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var ie=class e{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let i of n)i.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(k(r))try{r()}catch(i){t=i instanceof Js?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{gm(i)}catch(s){t=t??[],s instanceof Js?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Js(t)}}add(t){var n;if(t&&t!==this)if(this.closed)gm(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&tr(n,t)}remove(t){let{_finalizers:n}=this;n&&tr(n,t),t instanceof e&&t._removeParent(this)}};ie.EMPTY=(()=>{let e=new ie;return e.closed=!0,e})();var Cu=ie.EMPTY;function ea(e){return e instanceof ie||e&&\"closed\"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function gm(e){k(e)?e():e.unsubscribe()}var mt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Zr={setTimeout(e,t,...n){let{delegate:r}=Zr;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=Zr;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function ta(e){Zr.setTimeout(()=>{let{onUnhandledError:t}=mt;if(t)t(e);else throw e})}function nr(){}var vm=Tu(\"C\",void 0,void 0);function ym(e){return Tu(\"E\",void 0,e)}function bm(e){return Tu(\"N\",e,void 0)}function Tu(e,t,n){return{kind:e,value:t,error:n}}var rr=null;function Yr(e){if(mt.useDeprecatedSynchronousErrorHandling){let t=!rr;if(t&&(rr={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=rr;if(rr=null,n)throw r}}else e()}function _m(e){mt.useDeprecatedSynchronousErrorHandling&&rr&&(rr.errorThrown=!0,rr.error=e)}var or=class extends ie{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,ea(t)&&t.add(this)):this.destination=UD}static create(t,n,r){return new gt(t,n,r)}next(t){this.isStopped?Mu(bm(t),this):this._next(t)}error(t){this.isStopped?Mu(ym(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Mu(vm,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},jD=Function.prototype.bind;function Su(e,t){return jD.call(e,t)}var xu=class{constructor(t){this.partialObserver=t}next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){na(r)}}error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){na(r)}else na(t)}complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){na(n)}}},gt=class extends or{constructor(t,n,r){super();let o;if(k(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&mt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Su(t.next,i),error:t.error&&Su(t.error,i),complete:t.complete&&Su(t.complete,i)}):o=t}this.destination=new xu(o)}};function na(e){mt.useDeprecatedSynchronousErrorHandling?_m(e):ta(e)}function BD(e){throw e}function Mu(e,t){let{onStoppedNotification:n}=mt;n&&Zr.setTimeout(()=>n(e,t))}var UD={closed:!0,next:nr,error:BD,complete:nr};var Kr=typeof Symbol==\"function\"&&Symbol.observable||\"@@observable\";function Ae(e){return e}function Ru(...e){return Au(e)}function Au(e){return e.length===0?Ae:e.length===1?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}var P=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){let r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){let i=HD(n)?n:new gt(n,r,o);return Yr(()=>{let{operator:s,source:a}=this;i.add(s?s.call(i,a):a?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return r=Em(r),new r((o,i)=>{let s=new gt({next:a=>{try{n(a)}catch(c){i(c),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(n)}[Kr](){return this}pipe(...n){return Au(n)(this)}toPromise(n){return n=Em(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function Em(e){var t;return(t=e??mt.Promise)!==null&&t!==void 0?t:Promise}function VD(e){return e&&k(e.next)&&k(e.error)&&k(e.complete)}function HD(e){return e&&e instanceof or||VD(e)&&ea(e)}function Nu(e){return k(e?.lift)}function R(e){return t=>{if(Nu(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError(\"Unable to lift unknown Observable type\")}}function x(e,t,n,r,o){return new Ou(e,t,n,r,o)}var Ou=class extends or{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(c){t.error(c)}}:super._next,this._error=o?function(a){try{o(a)}catch(c){t.error(c)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:n}=this;super.unsubscribe(),!n&&((t=this.onFinalize)===null||t===void 0||t.call(this))}}};function Qr(){return R((e,t)=>{let n=null;e._refCount++;let r=x(t,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount){n=null;return}let o=e._connection,i=n;n=null,o&&(!i||o===i)&&o.unsubscribe(),t.unsubscribe()});e.subscribe(r),r.closed||(n=e.connect())})}var Xr=class extends P{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subject=null,this._refCount=0,this._connection=null,Nu(t)&&(this.lift=t.lift)}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){let t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:t}=this;this._subject=this._connection=null,t?.unsubscribe()}connect(){let t=this._connection;if(!t){t=this._connection=new ie;let n=this.getSubject();t.add(this.source.subscribe(x(n,void 0,()=>{this._teardown(),n.complete()},r=>{this._teardown(),n.error(r)},()=>this._teardown()))),t.closed&&(this._connection=null,t=ie.EMPTY)}return t}refCount(){return Qr()(this)}};var Dm=qr(e=>function(){e(this),this.name=\"ObjectUnsubscribedError\",this.message=\"object unsubscribed\"});var V=(()=>{class e extends P{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){let r=new ra(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new Dm}next(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(n)}})}error(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;let{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return((n=this.observers)===null||n===void 0?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return r||o?Cu:(this.currentObservers=null,i.push(n),new ie(()=>{this.currentObservers=null,tr(i,n)}))}_checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=this;r?n.error(o):i&&n.complete()}asObservable(){let n=new P;return n.source=this,n}}return e.create=(t,n)=>new ra(t,n),e})(),ra=class extends V{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next)===null||r===void 0||r.call(n,t)}error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.error)===null||r===void 0||r.call(n,t)}complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)}_subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&r!==void 0?r:Cu}};var _e=class extends V{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}};var ni={now(){return(ni.delegate||Date).now()},delegate:void 0};var ri=class extends V{constructor(t=1/0,n=1/0,r=ni){super(),this._bufferSize=t,this._windowTime=n,this._timestampProvider=r,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=n===1/0,this._bufferSize=Math.max(1,t),this._windowTime=Math.max(1,n)}next(t){let{isStopped:n,_buffer:r,_infiniteTimeWindow:o,_timestampProvider:i,_windowTime:s}=this;n||(r.push(t),!o&&r.push(i.now()+s)),this._trimBuffer(),super.next(t)}_subscribe(t){this._throwIfClosed(),this._trimBuffer();let n=this._innerSubscribe(t),{_infiniteTimeWindow:r,_buffer:o}=this,i=o.slice();for(let s=0;s<i.length&&!t.closed;s+=r?1:2)t.next(i[s]);return this._checkFinalizedStatuses(t),n}_trimBuffer(){let{_bufferSize:t,_timestampProvider:n,_buffer:r,_infiniteTimeWindow:o}=this,i=(o?1:2)*t;if(t<1/0&&i<r.length&&r.splice(0,r.length-i),!o){let s=n.now(),a=0;for(let c=1;c<r.length&&r[c]<=s;c+=2)a=c;a&&r.splice(0,a+1)}}};var oa=class extends ie{constructor(t,n){super()}schedule(t,n=0){return this}};var oi={setInterval(e,t,...n){let{delegate:r}=oi;return r?.setInterval?r.setInterval(e,t,...n):setInterval(e,t,...n)},clearInterval(e){let{delegate:t}=oi;return(t?.clearInterval||clearInterval)(e)},delegate:void 0};var ia=class extends oa{constructor(t,n){super(t,n),this.scheduler=t,this.work=n,this.pending=!1}schedule(t,n=0){var r;if(this.closed)return this;this.state=t;let o=this.id,i=this.scheduler;return o!=null&&(this.id=this.recycleAsyncId(i,o,n)),this.pending=!0,this.delay=n,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(i,this.id,n),this}requestAsyncId(t,n,r=0){return oi.setInterval(t.flush.bind(t,this),r)}recycleAsyncId(t,n,r=0){if(r!=null&&this.delay===r&&this.pending===!1)return n;n!=null&&oi.clearInterval(n)}execute(t,n){if(this.closed)return new Error(\"executing a cancelled action\");this.pending=!1;let r=this._execute(t,n);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,n){let r=!1,o;try{this.work(t)}catch(i){r=!0,o=i||new Error(\"Scheduled action threw falsy error\")}if(r)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){let{id:t,scheduler:n}=this,{actions:r}=n;this.work=this.state=this.scheduler=null,this.pending=!1,tr(r,this),t!=null&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,super.unsubscribe()}}};var Jr=class e{constructor(t,n=e.now){this.schedulerActionCtor=t,this.now=n}schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r,n)}};Jr.now=ni.now;var sa=class extends Jr{constructor(t,n=Jr.now){super(t,n),this.actions=[],this._active=!1}flush(t){let{actions:n}=this;if(this._active){n.push(t);return}let r;this._active=!0;do if(r=t.execute(t.state,t.delay))break;while(t=n.shift());if(this._active=!1,r){for(;t=n.shift();)t.unsubscribe();throw r}}};var ir=new sa(ia),wm=ir;var Ne=new P(e=>e.complete());function aa(e){return e&&k(e.schedule)}function ku(e){return e[e.length-1]}function ca(e){return k(ku(e))?e.pop():void 0}function Ot(e){return aa(ku(e))?e.pop():void 0}function Im(e,t){return typeof ku(e)==\"number\"?e.pop():t}function Tm(e,t,n,r){function o(i){return i instanceof n?i:new n(function(s){s(i)})}return new(n||(n=Promise))(function(i,s){function a(u){try{l(r.next(u))}catch(d){s(d)}}function c(u){try{l(r.throw(u))}catch(d){s(d)}}function l(u){u.done?i(u.value):o(u.value).then(a,c)}l((r=r.apply(e,t||[])).next())})}function Cm(e){var t=typeof Symbol==\"function\"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==\"number\")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function sr(e){return this instanceof sr?(this.v=e,this):new sr(e)}function Sm(e,t,n){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var r=n.apply(e,t||[]),o,i=[];return o=Object.create((typeof AsyncIterator==\"function\"?AsyncIterator:Object).prototype),a(\"next\"),a(\"throw\"),a(\"return\",s),o[Symbol.asyncIterator]=function(){return this},o;function s(f){return function(g){return Promise.resolve(g).then(f,d)}}function a(f,g){r[f]&&(o[f]=function(y){return new Promise(function(D,w){i.push([f,y,D,w])>1||c(f,y)})},g&&(o[f]=g(o[f])))}function c(f,g){try{l(r[f](g))}catch(y){p(i[0][3],y)}}function l(f){f.value instanceof sr?Promise.resolve(f.value.v).then(u,d):p(i[0][2],f)}function u(f){c(\"next\",f)}function d(f){c(\"throw\",f)}function p(f,g){f(g),i.shift(),i.length&&c(i[0][0],i[0][1])}}function Mm(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Cm==\"function\"?Cm(e):e[Symbol.iterator](),n={},r(\"next\"),r(\"throw\"),r(\"return\"),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},s)}}var la=e=>e&&typeof e.length==\"number\"&&typeof e!=\"function\";function ua(e){return k(e?.then)}function da(e){return k(e[Kr])}function fa(e){return Symbol.asyncIterator&&k(e?.[Symbol.asyncIterator])}function ha(e){return new TypeError(`You provided ${e!==null&&typeof e==\"object\"?\"an invalid object\":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function $D(){return typeof Symbol!=\"function\"||!Symbol.iterator?\"@@iterator\":Symbol.iterator}var pa=$D();function ma(e){return k(e?.[pa])}function ga(e){return Sm(this,arguments,function*(){let n=e.getReader();try{for(;;){let{value:r,done:o}=yield sr(n.read());if(o)return yield sr(void 0);yield yield sr(r)}}finally{n.releaseLock()}})}function va(e){return k(e?.getReader)}function z(e){if(e instanceof P)return e;if(e!=null){if(da(e))return zD(e);if(la(e))return WD(e);if(ua(e))return GD(e);if(fa(e))return xm(e);if(ma(e))return qD(e);if(va(e))return ZD(e)}throw ha(e)}function zD(e){return new P(t=>{let n=e[Kr]();if(k(n.subscribe))return n.subscribe(t);throw new TypeError(\"Provided object does not correctly implement Symbol.observable\")})}function WD(e){return new P(t=>{for(let n=0;n<e.length&&!t.closed;n++)t.next(e[n]);t.complete()})}function GD(e){return new P(t=>{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,ta)})}function qD(e){return new P(t=>{for(let n of e)if(t.next(n),t.closed)return;t.complete()})}function xm(e){return new P(t=>{YD(e,t).catch(n=>t.error(n))})}function ZD(e){return xm(ga(e))}function YD(e,t){var n,r,o,i;return Tm(this,void 0,void 0,function*(){try{for(n=Mm(e);r=yield n.next(),!r.done;){let s=r.value;if(t.next(s),t.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})}function We(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function ya(e,t=0){return R((n,r)=>{n.subscribe(x(r,o=>We(r,e,()=>r.next(o),t),()=>We(r,e,()=>r.complete(),t),o=>We(r,e,()=>r.error(o),t)))})}function ba(e,t=0){return R((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function Rm(e,t){return z(e).pipe(ba(t),ya(t))}function Am(e,t){return z(e).pipe(ba(t),ya(t))}function Nm(e,t){return new P(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function Om(e,t){return new P(n=>{let r;return We(n,t,()=>{r=e[pa](),We(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){n.error(s);return}i?n.complete():n.next(o)},0,!0)}),()=>k(r?.return)&&r.return()})}function _a(e,t){if(!e)throw new Error(\"Iterable cannot be null\");return new P(n=>{We(n,t,()=>{let r=e[Symbol.asyncIterator]();We(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function km(e,t){return _a(ga(e),t)}function Pm(e,t){if(e!=null){if(da(e))return Rm(e,t);if(la(e))return Nm(e,t);if(ua(e))return Am(e,t);if(fa(e))return _a(e,t);if(ma(e))return Om(e,t);if(va(e))return km(e,t)}throw ha(e)}function ne(e,t){return t?Pm(e,t):z(e)}function C(...e){let t=Ot(e);return ne(e,t)}function eo(e,t){let n=k(e)?e:()=>e,r=o=>o.error(n());return new P(t?o=>t.schedule(r,0,o):r)}function Pu(e){return!!e&&(e instanceof P||k(e.lift)&&k(e.subscribe))}var Xe=qr(e=>function(){e(this),this.name=\"EmptyError\",this.message=\"no elements in sequence\"});function KD(e,t){let n=typeof t==\"object\";return new Promise((r,o)=>{let i=!1,s;e.subscribe({next:a=>{s=a,i=!0},error:o,complete:()=>{i?r(s):n?r(t.defaultValue):o(new Xe)}})})}function QD(e,t){let n=typeof t==\"object\";return new Promise((r,o)=>{let i=new gt({next:s=>{r(s),i.unsubscribe()},error:o,complete:()=>{n?r(t.defaultValue):o(new Xe)}});e.subscribe(i)})}function Fm(e){return e instanceof Date&&!isNaN(e)}function T(e,t){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>{r.next(e.call(t,i,o++))}))})}var{isArray:XD}=Array;function JD(e,t){return XD(t)?e(...t):e(t)}function Ea(e){return T(t=>JD(e,t))}var{isArray:ew}=Array,{getPrototypeOf:tw,prototype:nw,keys:rw}=Object;function Da(e){if(e.length===1){let t=e[0];if(ew(t))return{args:t,keys:null};if(ow(t)){let n=rw(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}function ow(e){return e&&typeof e==\"object\"&&tw(e)===nw}function wa(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}function to(...e){let t=Ot(e),n=ca(e),{args:r,keys:o}=Da(e);if(r.length===0)return ne([],t);let i=new P(iw(r,t,o?s=>wa(o,s):Ae));return n?i.pipe(Ea(n)):i}function iw(e,t,n=Ae){return r=>{Lm(t,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let c=0;c<o;c++)Lm(t,()=>{let l=ne(e[c],t),u=!1;l.subscribe(x(r,d=>{i[c]=d,u||(u=!0,a--),a||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function Lm(e,t,n){e?We(n,e,t):t()}function jm(e,t,n,r,o,i,s,a){let c=[],l=0,u=0,d=!1,p=()=>{d&&!c.length&&!l&&t.complete()},f=y=>l<r?g(y):c.push(y),g=y=>{i&&t.next(y),l++;let D=!1;z(n(y,u++)).subscribe(x(t,w=>{o?.(w),i?f(w):t.next(w)},()=>{D=!0},void 0,()=>{if(D)try{for(l--;c.length&&l<r;){let w=c.shift();s?We(t,s,()=>g(w)):g(w)}p()}catch(w){t.error(w)}}))};return e.subscribe(x(t,f,()=>{d=!0,p()})),()=>{a?.()}}function le(e,t,n=1/0){return k(t)?le((r,o)=>T((i,s)=>t(r,i,o,s))(z(e(r,o))),n):(typeof t==\"number\"&&(n=t),R((r,o)=>jm(r,o,e,n)))}function In(e=1/0){return le(Ae,e)}function Bm(){return In(1)}function kt(...e){return Bm()(ne(e,Ot(e)))}function ii(e){return new P(t=>{z(e()).subscribe(t)})}function sw(...e){let t=ca(e),{args:n,keys:r}=Da(e),o=new P(i=>{let{length:s}=n;if(!s){i.complete();return}let a=new Array(s),c=s,l=s;for(let u=0;u<s;u++){let d=!1;z(n[u]).subscribe(x(i,p=>{d||(d=!0,l--),a[u]=p},()=>c--,void 0,()=>{(!c||!d)&&(l||i.next(r?wa(r,a):a),i.complete())}))}});return t?o.pipe(Ea(t)):o}function si(e=0,t,n=wm){let r=-1;return t!=null&&(aa(t)?n=t:r=t),new P(o=>{let i=Fm(e)?+e-n.now():e;i<0&&(i=0);let s=0;return n.schedule(function(){o.closed||(o.next(s++),0<=r?this.schedule(void 0,r):o.complete())},i)})}function aw(...e){let t=Ot(e),n=Im(e,1/0),r=e;return r.length?r.length===1?z(r[0]):In(n)(ne(r,t)):Ne}function fe(e,t){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>e.call(t,i,o++)&&r.next(i)))})}function Um(e){return R((t,n)=>{let r=!1,o=null,i=null,s=!1,a=()=>{if(i?.unsubscribe(),i=null,r){r=!1;let l=o;o=null,n.next(l)}s&&n.complete()},c=()=>{i=null,s&&n.complete()};t.subscribe(x(n,l=>{r=!0,o=l,i||z(e(l)).subscribe(i=x(n,a,c))},()=>{s=!0,(!r||!i||i.closed)&&n.complete()}))})}function cw(e,t=ir){return Um(()=>si(e,t))}function Pt(e){return R((t,n)=>{let r=null,o=!1,i;r=t.subscribe(x(n,void 0,void 0,s=>{i=z(e(s,Pt(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function Vm(e,t,n,r,o){return(i,s)=>{let a=n,c=t,l=0;i.subscribe(x(s,u=>{let d=l++;c=a?e(c,u,d):(a=!0,u),r&&s.next(c)},o&&(()=>{a&&s.next(c),s.complete()})))}}function nn(e,t){return k(t)?le(e,t,1):le(e,1)}function ar(e,t=ir){return R((n,r)=>{let o=null,i=null,s=null,a=()=>{if(o){o.unsubscribe(),o=null;let l=i;i=null,r.next(l)}};function c(){let l=s+e,u=t.now();if(u<l){o=this.schedule(void 0,l-u),r.add(o);return}a()}n.subscribe(x(r,l=>{i=l,s=t.now(),o||(o=t.schedule(c,e),r.add(o))},()=>{a(),r.complete()},void 0,()=>{i=o=null}))})}function Cn(e){return R((t,n)=>{let r=!1;t.subscribe(x(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function Ge(e){return e<=0?()=>Ne:R((t,n)=>{let r=0;t.subscribe(x(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function Hm(){return R((e,t)=>{e.subscribe(x(t,nr))})}function $m(e){return T(()=>e)}function Fu(e,t){return t?n=>kt(t.pipe(Ge(1),Hm()),n.pipe(Fu(e))):le((n,r)=>z(e(n,r)).pipe(Ge(1),$m(n)))}function lw(e,t=ir){let n=si(e,t);return Fu(()=>n)}function Lu(e,t=Ae){return e=e??uw,R((n,r)=>{let o,i=!0;n.subscribe(x(r,s=>{let a=t(s);(i||!e(o,a))&&(i=!1,o=a,r.next(s))}))})}function uw(e,t){return e===t}function Ia(e=dw){return R((t,n)=>{let r=!1;t.subscribe(x(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function dw(){return new Xe}function Tn(e){return R((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}function rn(e,t){let n=arguments.length>=2;return r=>r.pipe(e?fe((o,i)=>e(o,i,r)):Ae,Ge(1),n?Cn(t):Ia(()=>new Xe))}function no(e){return e<=0?()=>Ne:R((t,n)=>{let r=[];t.subscribe(x(n,o=>{r.push(o),e<r.length&&r.shift()},()=>{for(let o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function ju(e,t){let n=arguments.length>=2;return r=>r.pipe(e?fe((o,i)=>e(o,i,r)):Ae,no(1),n?Cn(t):Ia(()=>new Xe))}function fw(){return R((e,t)=>{let n,r=!1;e.subscribe(x(t,o=>{let i=n;n=o,r&&t.next([i,o]),r=!0}))})}function Bu(e,t){return R(Vm(e,t,arguments.length>=2,!0))}function Vu(e={}){let{connector:t=()=>new V,resetOnError:n=!0,resetOnComplete:r=!0,resetOnRefCountZero:o=!0}=e;return i=>{let s,a,c,l=0,u=!1,d=!1,p=()=>{a?.unsubscribe(),a=void 0},f=()=>{p(),s=c=void 0,u=d=!1},g=()=>{let y=s;f(),y?.unsubscribe()};return R((y,D)=>{l++,!d&&!u&&p();let w=c=c??t();D.add(()=>{l--,l===0&&!d&&!u&&(a=Uu(g,o))}),w.subscribe(D),!s&&l>0&&(s=new gt({next:K=>w.next(K),error:K=>{d=!0,p(),a=Uu(f,n,K),w.error(K)},complete:()=>{u=!0,p(),a=Uu(f,r),w.complete()}}),z(y).subscribe(s))})(i)}}function Uu(e,t,...n){if(t===!0){e();return}if(t===!1)return;let r=new gt({next:()=>{r.unsubscribe(),e()}});return z(t(...n)).subscribe(r)}function hw(e,t,n){let r,o=!1;return e&&typeof e==\"object\"?{bufferSize:r=1/0,windowTime:t=1/0,refCount:o=!1,scheduler:n}=e:r=e??1/0,Vu({connector:()=>new ri(r,t,n),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}function ai(e){return fe((t,n)=>e<=n)}function ci(...e){let t=Ot(e);return R((n,r)=>{(t?kt(e,n,t):kt(e,n)).subscribe(r)})}function qe(e,t){return R((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();n.subscribe(x(r,c=>{o?.unsubscribe();let l=0,u=i++;z(e(c,u)).subscribe(o=x(r,d=>r.next(t?t(c,d,u,l++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function Sn(e){return R((t,n)=>{z(e).subscribe(x(n,()=>n.complete(),nr)),!n.closed&&t.subscribe(n)})}function pw(e,t=!1){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>{let s=e(i,o++);(s||t)&&r.next(i),!s&&r.complete()}))})}function re(e,t,n){let r=k(e)||t||n?{next:e,error:t,complete:n}:e;return r?R((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(x(i,c=>{var l;(l=r.next)===null||l===void 0||l.call(r,c),i.next(c)},()=>{var c;a=!1,(c=r.complete)===null||c===void 0||c.call(r),i.complete()},c=>{var l;a=!1,(l=r.error)===null||l===void 0||l.call(r,c),i.error(c)},()=>{var c,l;a&&((c=r.unsubscribe)===null||c===void 0||c.call(r)),(l=r.finalize)===null||l===void 0||l.call(r)}))}):Ae}function zm(e){let t=M(null);try{return e()}finally{M(t)}}var xa=\"https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss\",_=class extends Error{code;constructor(t,n){super(fr(t,n)),this.code=t}};function mw(e){return`NG0${Math.abs(e)}`}function fr(e,t){return`${mw(e)}${t?\": \"+t:\"\"}`}var ct=globalThis;function se(e){for(let t in e)if(e[t]===se)return t;throw Error(\"\")}function Zm(e,t){for(let n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function Ze(e){if(typeof e==\"string\")return e;if(Array.isArray(e))return`[${e.map(Ze).join(\", \")}]`;if(e==null)return\"\"+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return\"\"+n;let r=n.indexOf(`\n`);return r>=0?n.slice(0,r):n}function Ra(e,t){return e?t?`${e} ${t}`:e:t||\"\"}var gw=se({__forward_ref__:se});function Aa(e){return e.__forward_ref__=Aa,e.toString=function(){return Ze(this())},e}function Re(e){return Ju(e)?e():e}function Ju(e){return typeof e==\"function\"&&e.hasOwnProperty(gw)&&e.__forward_ref__===Aa}function Ym(e,t,n,r){throw new Error(`ASSERTION ERROR: ${e}`+(r==null?\"\":` [Expected=> ${n} ${r} ${t} <=Actual]`))}function b(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function De(e){return{providers:e.providers||[],imports:e.imports||[]}}function hi(e){return vw(e,Na)}function ed(e){return hi(e)!==null}function vw(e,t){return e.hasOwnProperty(t)&&e[t]||null}function yw(e){let t=e?.[Na]??null;return t||null}function $u(e){return e&&e.hasOwnProperty(Ta)?e[Ta]:null}var Na=se({\\u0275prov:se}),Ta=se({\\u0275inj:se}),E=class{_desc;ngMetadataName=\"InjectionToken\";\\u0275prov;constructor(t,n){this._desc=t,this.\\u0275prov=void 0,typeof n==\"number\"?this.__NG_ELEMENT_ID__=n:n!==void 0&&(this.\\u0275prov=b({token:this,providedIn:n.providedIn||\"root\",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function td(e){return e&&!!e.\\u0275providers}var nd=se({\\u0275cmp:se}),rd=se({\\u0275dir:se}),od=se({\\u0275pipe:se}),id=se({\\u0275mod:se}),ui=se({\\u0275fac:se}),hr=se({__NG_ELEMENT_ID__:se}),Wm=se({__NG_ENV_ID__:se});function Rn(e){return typeof e==\"string\"?e:e==null?\"\":String(e)}function Km(e){return typeof e==\"function\"?e.name||e.toString():typeof e==\"object\"&&e!=null&&typeof e.type==\"function\"?e.type.name||e.type.toString():Rn(e)}function sd(e,t){throw new _(-200,e)}function Oa(e,t){throw new _(-201,!1)}var zu;function Qm(){return zu}function Fe(e){let t=zu;return zu=e,t}function ad(e,t,n){let r=hi(e);if(r&&r.providedIn==\"root\")return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Oa(e,\"Injector\")}var bw={},cr=bw,Wu=\"__NG_DI_FLAG__\",Gu=class{injector;constructor(t){this.injector=t}retrieve(t,n){let r=lr(n)||0;try{return this.injector.get(t,r&8?null:cr,r)}catch(o){if(zr(o))return o;throw o}}},Sa=\"ngTempTokenPath\",_w=\"ngTokenPath\",Ew=/\\n/gm,Dw=\"\\u0275\",Gm=\"__source\";function ww(e,t=0){let n=yu();if(n===void 0)throw new _(-203,!1);if(n===null)return ad(e,void 0,t);{let r=Iw(t),o=n.retrieve(e,r);if(zr(o)){if(r.optional)return null;throw o}return o}}function S(e,t=0){return(Qm()||ww)(Re(e),t)}function h(e,t){return S(e,lr(t))}function lr(e){return typeof e>\"u\"||typeof e==\"number\"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Iw(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function qu(e){let t=[];for(let n=0;n<e.length;n++){let r=Re(e[n]);if(Array.isArray(r)){if(r.length===0)throw new _(900,!1);let o,i=0;for(let s=0;s<r.length;s++){let a=r[s],c=Cw(a);typeof c==\"number\"?c===-1?o=a.token:i|=c:o=a}t.push(S(o,i))}else t.push(S(r))}return t}function cd(e,t){return e[Wu]=t,e.prototype[Wu]=t,e}function Cw(e){return e[Wu]}function Tw(e,t,n,r){let o=e[Sa];throw t[Gm]&&o.unshift(t[Gm]),e.message=Sw(`\n`+e.message,o,n,r),e[_w]=o,e[Sa]=null,e}function Sw(e,t,n,r=null){e=e&&e.charAt(0)===`\n`&&e.charAt(1)==Dw?e.slice(2):e;let o=Ze(t);if(Array.isArray(t))o=t.map(Ze).join(\" -> \");else if(typeof t==\"object\"){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+\":\"+(typeof a==\"string\"?JSON.stringify(a):Ze(a)))}o=`{${i.join(\", \")}}`}return`${n}${r?\"(\"+r+\")\":\"\"}[${o}]: ${e.replace(Ew,`\n  `)}`}function Mn(e,t){let n=e.hasOwnProperty(ui);return n?e[ui]:null}function Xm(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let o=e[r],i=t[r];if(n&&(o=n(o),i=n(i)),i!==o)return!1}return!0}function Jm(e){return e.flat(Number.POSITIVE_INFINITY)}function ka(e,t){e.forEach(n=>Array.isArray(n)?ka(n,t):t(n))}function ld(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function pi(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function eg(e,t){let n=[];for(let r=0;r<e;r++)n.push(t);return n}function tg(e,t,n,r){let o=e.length;if(o==t)e.push(n,r);else if(o===1)e.push(r,e[0]),e[0]=n;else{for(o--,e.push(e[o-1],e[o]);o>t;){let i=o-2;e[o]=e[i],o--}e[t]=n,e[t+1]=r}}function Pa(e,t,n){let r=oo(e,t);return r>=0?e[r|1]=n:(r=~r,tg(e,r,t,n)),r}function Fa(e,t){let n=oo(e,t);if(n>=0)return e[n|1]}function oo(e,t){return Mw(e,t,1)}function Mw(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s=e[i<<n];if(t===s)return i<<n;s>t?o=i:r=i+1}return~(o<<n)}var An={},Oe=[],Ft=new E(\"\"),ud=new E(\"\",-1),dd=new E(\"\"),di=class{get(t,n=cr){if(n===cr)throw new Hs(`NullInjectorError: No provider for ${Ze(t)}!`);return n}};function fd(e){return e[id]||null}function sn(e){return e[nd]||null}function hd(e){return e[rd]||null}function ng(e){return e[od]||null}function vt(e){return{\\u0275providers:e}}function rg(e){return vt([{provide:Ft,multi:!0,useValue:e}])}function og(...e){return{\\u0275providers:pd(!0,e),\\u0275fromNgModule:!0}}function pd(e,...t){let n=[],r=new Set,o,i=s=>{n.push(s)};return ka(t,s=>{let a=s;Ma(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&ig(o,i),n}function ig(e,t){for(let n=0;n<e.length;n++){let{ngModule:r,providers:o}=e[n];md(o,i=>{t(i,r)})}}function Ma(e,t,n,r){if(e=Re(e),!e)return!1;let o=null,i=$u(e),s=!i&&sn(e);if(!i&&!s){let c=e.ngModule;if(i=$u(c),i)o=c;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let c=typeof s.dependencies==\"function\"?s.dependencies():s.dependencies;for(let l of c)Ma(l,t,n,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let l;try{ka(i.imports,u=>{Ma(u,t,n,r)&&(l||=[],l.push(u))})}finally{}l!==void 0&&ig(l,t)}if(!a){let l=Mn(o)||(()=>new o);t({provide:o,useFactory:l,deps:Oe},o),t({provide:dd,useValue:o,multi:!0},o),t({provide:Ft,useValue:()=>S(o),multi:!0},o)}let c=i.providers;if(c!=null&&!a){let l=e;md(c,u=>{t(u,l)})}}else return!1;return o!==e&&e.providers!==void 0}function md(e,t){for(let n of e)td(n)&&(n=n.\\u0275providers),Array.isArray(n)?md(n,t):t(n)}var xw=se({provide:String,useValue:se});function sg(e){return e!==null&&typeof e==\"object\"&&xw in e}function Rw(e){return!!(e&&e.useExisting)}function Aw(e){return!!(e&&e.useFactory)}function ur(e){return typeof e==\"function\"}function ag(e){return!!e.useClass}var mi=new E(\"\"),Ca={},qm={},Hu;function io(){return Hu===void 0&&(Hu=new di),Hu}var ue=class{},dr=class extends ue{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,Yu(t,s=>this.processProvider(s)),this.records.set(ud,ro(void 0,this)),o.has(\"environment\")&&this.records.set(ue,ro(void 0,this));let i=this.records.get(mi);i!=null&&typeof i.value==\"string\"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(dd,Oe,{self:!0}))}retrieve(t,n){let r=lr(n)||0;try{return this.get(t,cr,r)}catch(o){if(zr(o))return o;throw o}}destroy(){li(this),this._destroyed=!0;let t=M(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let n=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),M(t)}}onDestroy(t){return li(this),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){li(this);let n=en(this),r=Fe(void 0),o;try{return t()}finally{en(n),Fe(r)}}get(t,n=cr,r){if(li(this),t.hasOwnProperty(Wm))return t[Wm](this);let o=lr(r),i,s=en(this),a=Fe(void 0);try{if(!(o&4)){let l=this.records.get(t);if(l===void 0){let u=Fw(t)&&hi(t);u&&this.injectableDefInScope(u)?l=ro(Zu(t),Ca):l=null,this.records.set(t,l)}if(l!=null)return this.hydrate(t,l)}let c=o&2?io():this.parent;return n=o&8&&n===cr?null:n,c.get(t,n)}catch(c){if(zr(c)){if((c[Sa]=c[Sa]||[]).unshift(Ze(t)),s)throw c;return Tw(c,t,\"R3InjectorError\",this.source)}else throw c}finally{Fe(a),en(s)}}resolveInjectorInitializers(){let t=M(null),n=en(this),r=Fe(void 0),o;try{let i=this.get(Ft,Oe,{self:!0});for(let s of i)s()}finally{en(n),Fe(r),M(t)}}toString(){let t=[],n=this.records;for(let r of n.keys())t.push(Ze(r));return`R3Injector[${t.join(\", \")}]`}processProvider(t){t=Re(t);let n=ur(t)?t:Re(t&&t.provide),r=Ow(t);if(!ur(t)&&t.multi===!0){let o=this.records.get(n);o||(o=ro(void 0,Ca,!0),o.factory=()=>qu(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){let r=M(null);try{return n.value===qm?sd(Ze(t)):n.value===Ca&&(n.value=qm,n.value=n.factory()),typeof n.value==\"object\"&&n.value&&Pw(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{M(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;let n=Re(t.providedIn);return typeof n==\"string\"?n===\"any\"||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._onDestroyHooks.splice(n,1)}};function Zu(e){let t=hi(e),n=t!==null?t.factory:Mn(e);if(n!==null)return n;if(e instanceof E)throw new _(204,!1);if(e instanceof Function)return Nw(e);throw new _(204,!1)}function Nw(e){if(e.length>0)throw new _(204,!1);let n=yw(e);return n!==null?()=>n.factory(e):()=>new e}function Ow(e){if(sg(e))return ro(void 0,e.useValue);{let t=gd(e);return ro(t,Ca)}}function gd(e,t,n){let r;if(ur(e)){let o=Re(e);return Mn(o)||Zu(o)}else if(sg(e))r=()=>Re(e.useValue);else if(Aw(e))r=()=>e.useFactory(...qu(e.deps||[]));else if(Rw(e))r=()=>S(Re(e.useExisting));else{let o=Re(e&&(e.useClass||e.provide));if(kw(e))r=()=>new o(...qu(e.deps));else return Mn(o)||Zu(o)}return r}function li(e){if(e.destroyed)throw new _(205,!1)}function ro(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function kw(e){return!!e.deps}function Pw(e){return e!==null&&typeof e==\"object\"&&typeof e.ngOnDestroy==\"function\"}function Fw(e){return typeof e==\"function\"||typeof e==\"object\"&&e.ngMetadataName===\"InjectionToken\"}function Yu(e,t){for(let n of e)Array.isArray(n)?Yu(n,t):n&&td(n)?Yu(n.\\u0275providers,t):t(n)}function Le(e,t){let n;e instanceof dr?(li(e),n=e):n=new Gu(e);let r,o=en(n),i=Fe(void 0);try{return t()}finally{en(o),Fe(i)}}function cg(){return Qm()!==void 0||yu()!=null}var yt=0,N=1,A=2,Ee=3,lt=4,je=5,pr=6,so=7,he=8,mr=9,Lt=10,Q=11,ao=12,vd=13,gr=14,Be=15,Nn=16,vr=17,jt=18,gi=19,yd=20,on=21,La=22,an=23,et=24,yr=25,pe=26,lg=1,bd=6,On=7,vi=8,br=9,Ce=10;function Bt(e){return Array.isArray(e)&&typeof e[lg]==\"object\"}function bt(e){return Array.isArray(e)&&e[lg]===!0}function ja(e){return(e.flags&4)!==0}function kn(e){return e.componentOffset>-1}function yi(e){return(e.flags&1)===1}function Ut(e){return!!e.template}function co(e){return(e[A]&512)!==0}function _r(e){return(e[A]&256)===256}var _d=\"svg\",ug=\"math\";function ut(e){for(;Array.isArray(e);)e=e[yt];return e}function Ed(e,t){return ut(t[e])}function _t(e,t){return ut(t[e.index])}function bi(e,t){return e.data[t]}function Ba(e,t){return e[t]}function Dd(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function dt(e,t){let n=t[e];return Bt(n)?n:n[yt]}function dg(e){return(e[A]&4)===4}function Ua(e){return(e[A]&128)===128}function fg(e){return bt(e[Ee])}function Et(e,t){return t==null?null:e[t]}function wd(e){e[vr]=0}function Id(e){e[A]&1024||(e[A]|=1024,Ua(e)&&Pn(e))}function hg(e,t){for(;e>0;)t=t[gr],e--;return t}function _i(e){return!!(e[A]&9216||e[et]?.dirty)}function Va(e){e[Lt].changeDetectionScheduler?.notify(8),e[A]&64&&(e[A]|=1024),_i(e)&&Pn(e)}function Pn(e){e[Lt].changeDetectionScheduler?.notify(0);let t=xn(e);for(;t!==null&&!(t[A]&8192||(t[A]|=8192,!Ua(t)));)t=xn(t)}function Cd(e,t){if(_r(e))throw new _(911,!1);e[on]===null&&(e[on]=[]),e[on].push(t)}function pg(e,t){if(e[on]===null)return;let n=e[on].indexOf(t);n!==-1&&e[on].splice(n,1)}function xn(e){let t=e[Ee];return bt(t)?t[Ee]:t}function Td(e){return e[so]??=[]}function Sd(e){return e.cleanup??=[]}function mg(e,t,n,r){let o=Td(t);o.push(n),e.firstCreatePass&&Sd(e).push(r,o.length-1)}var L={lFrame:Ng(null),bindingsEnabled:!0,skipHydrationRootTNode:null},Ei=function(e){return e[e.Off=0]=\"Off\",e[e.Exhaustive=1]=\"Exhaustive\",e[e.OnlyDirtyViews=2]=\"OnlyDirtyViews\",e}(Ei||{}),Lw=0,Ku=!1;function gg(){return L.lFrame.elementDepthCount}function vg(){L.lFrame.elementDepthCount++}function yg(){L.lFrame.elementDepthCount--}function Ha(){return L.bindingsEnabled}function Md(){return L.skipHydrationRootTNode!==null}function bg(e){return L.skipHydrationRootTNode===e}function _g(){L.skipHydrationRootTNode=null}function I(){return L.lFrame.lView}function X(){return L.lFrame.tView}function Eg(e){return L.lFrame.contextLView=e,e[he]}function Dg(e){return L.lFrame.contextLView=null,e}function Te(){let e=xd();for(;e!==null&&e.type===64;)e=e.parent;return e}function xd(){return L.lFrame.currentTNode}function wg(){let e=L.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Fn(e,t){let n=L.lFrame;n.currentTNode=e,n.isParent=t}function $a(){return L.lFrame.isParent}function za(){L.lFrame.isParent=!1}function Ig(){return L.lFrame.contextLView}function Rd(e){Ym(\"Must never be called in production mode\"),Lw=e}function Ad(){return Ku}function lo(e){let t=Ku;return Ku=e,t}function uo(){let e=L.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Cg(){return L.lFrame.bindingIndex}function Tg(e){return L.lFrame.bindingIndex=e}function cn(){return L.lFrame.bindingIndex++}function Wa(e){let t=L.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function Sg(){return L.lFrame.inI18n}function Mg(e,t){let n=L.lFrame;n.bindingIndex=n.bindingRootIndex=e,Ga(t)}function xg(){return L.lFrame.currentDirectiveIndex}function Ga(e){L.lFrame.currentDirectiveIndex=e}function Rg(e){let t=L.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function qa(){return L.lFrame.currentQueryIndex}function Di(e){L.lFrame.currentQueryIndex=e}function jw(e){let t=e[N];return t.type===2?t.declTNode:t.type===1?e[je]:null}function Nd(e,t,n){if(n&4){let o=t,i=e;for(;o=o.parent,o===null&&!(n&1);)if(o=jw(i),o===null||(i=i[gr],o.type&10))break;if(o===null)return!1;t=o,e=i}let r=L.lFrame=Ag();return r.currentTNode=t,r.lView=e,!0}function Za(e){let t=Ag(),n=e[N];L.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Ag(){let e=L.lFrame,t=e===null?null:e.child;return t===null?Ng(e):t}function Ng(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function Og(){let e=L.lFrame;return L.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var Od=Og;function Ya(){let e=Og();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function kg(e){return(L.lFrame.contextLView=hg(e,L.lFrame.contextLView))[he]}function Vt(){return L.lFrame.selectedIndex}function Ln(e){L.lFrame.selectedIndex=e}function wi(){let e=L.lFrame;return bi(e.tView,e.selectedIndex)}function Pg(){L.lFrame.currentNamespace=_d}function Fg(){Bw()}function Bw(){L.lFrame.currentNamespace=null}function Lg(){return L.lFrame.currentNamespace}var jg=!0;function Ii(){return jg}function Ci(e){jg=e}function Qu(e,t=null,n=null,r){let o=kd(e,t,n,r);return o.resolveInjectorInitializers(),o}function kd(e,t=null,n=null,r,o=new Set){let i=[n||Oe,og(e)];return r=r||(typeof e==\"object\"?void 0:Ze(e)),new dr(i,t||io(),r||null,o)}var ae=class e{static THROW_IF_NOT_FOUND=cr;static NULL=new di;static create(t,n){if(Array.isArray(t))return Qu({name:\"\"},n,t,\"\");{let r=t.name??\"\";return Qu({name:r},t.parent,t.providers,r)}}static \\u0275prov=b({token:e,providedIn:\"any\",factory:()=>S(ud)});static __NG_ELEMENT_ID__=-1},H=new E(\"\"),tt=(()=>{class e{static __NG_ELEMENT_ID__=Uw;static __NG_ENV_ID__=n=>n}return e})(),fi=class extends tt{_lView;constructor(t){super(),this._lView=t}get destroyed(){return _r(this._lView)}onDestroy(t){let n=this._lView;return Cd(n,t),()=>pg(n,t)}};function Uw(){return new fi(I())}var Je=class{_console=console;handleError(t){this._console.error(\"ERROR\",t)}},Ue=new E(\"\",{providedIn:\"root\",factory:()=>{let e=h(ue),t;return n=>{e.destroyed&&!t?setTimeout(()=>{throw n}):(t??=e.get(Je),t.handleError(n))}}}),Bg={provide:Ft,useValue:()=>void h(Je),multi:!0},Vw=new E(\"\",{providedIn:\"root\",factory:()=>{let e=h(H).defaultView;if(!e)return;let t=h(Ue),n=i=>{t(i.reason),i.preventDefault()},r=i=>{i.error?t(i.error):t(new Error(i.message,{cause:i})),i.preventDefault()},o=()=>{e.addEventListener(\"unhandledrejection\",n),e.addEventListener(\"error\",r)};typeof Zone<\"u\"?Zone.root.run(o):o(),h(tt).onDestroy(()=>{e.removeEventListener(\"error\",r),e.removeEventListener(\"unhandledrejection\",n)})}});function Hw(){return vt([rg(()=>void h(Vw))])}function fo(e){return typeof e==\"function\"&&e[be]!==void 0}function Ve(e,t){let[n,r,o]=wu(e,t?.equal),i=n,s=i[be];return i.set=r,i.update=o,i.asReadonly=Pd.bind(i),i}function Pd(){let e=this[be];if(e.readonlyFn===void 0){let t=()=>this();t[be]=e,e.readonlyFn=t}return e.readonlyFn}function Fd(e){return fo(e)&&typeof e.set==\"function\"}var at=class{},ho=new E(\"\",{providedIn:\"root\",factory:()=>!1});var Ld=new E(\"\"),jd=new E(\"\");var Er=(()=>{class e{view;node;constructor(n,r){this.view=n,this.node=r}static __NG_ELEMENT_ID__=$w}return e})();function $w(){return new Er(I(),Te())}var ln=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new _e(!1);get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new P(n=>{n.next(!1),n.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}has(n){return this.pendingTasks.has(n)}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \\u0275prov=b({token:e,providedIn:\"root\",factory:()=>new e})}return e})(),Ti=(()=>{class e{internalPendingTasks=h(ln);scheduler=h(at);errorHandler=h(Ue);add(){let n=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(n)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(n))}}run(n){let r=this.add();n().catch(this.errorHandler).finally(r)}static \\u0275prov=b({token:e,providedIn:\"root\",factory:()=>new e})}return e})();function Dr(...e){}var Si=(()=>{class e{static \\u0275prov=b({token:e,providedIn:\"root\",factory:()=>new Xu})}return e})(),Xu=class{dirtyEffectCount=0;queues=new Map;add(t){this.enqueue(t),this.schedule(t)}schedule(t){t.dirty&&this.dirtyEffectCount++}remove(t){let n=t.zone,r=this.queues.get(n);r.has(t)&&(r.delete(t),t.dirty&&this.dirtyEffectCount--)}enqueue(t){let n=t.zone;this.queues.has(n)||this.queues.set(n,new Set);let r=this.queues.get(n);r.has(t)||r.add(t)}flush(){for(;this.dirtyEffectCount>0;){let t=!1;for(let[n,r]of this.queues)n===null?t||=this.flushQueue(r):t||=n.run(()=>this.flushQueue(r));t||(this.dirtyEffectCount=0)}}flushQueue(t){let n=!1;for(let r of t)r.dirty&&(this.dirtyEffectCount--,n=!0,r.run());return n}};function Eo(e){return{toString:e}.toString()}var Ka=\"__parameters__\";function Yw(e){return function(...n){if(e){let r=e(...n);for(let o in r)this[o]=r[o]}}}function bv(e,t,n){return Eo(()=>{let r=Yw(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;let s=new o(...i);return a.annotation=s,a;function a(c,l,u){let d=c.hasOwnProperty(Ka)?c[Ka]:Object.defineProperty(c,Ka,{value:[]})[Ka];for(;d.length<=u;)d.push(null);return(d[u]=d[u]||[]).push(s),c}}return o.prototype.ngMetadataName=e,o.annotationCls=o,o})}var Lf=cd(bv(\"Optional\"),8);var _v=cd(bv(\"SkipSelf\"),4);function Kw(e){return typeof e==\"function\"}var ic=class{previousValue;currentValue;firstChange;constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}};function Ev(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}var fn=(()=>{let e=()=>Dv;return e.ngInherit=!0,e})();function Dv(e){return e.type.prototype.ngOnChanges&&(e.setInput=Xw),Qw}function Qw(){let e=Iv(this),t=e?.current;if(t){let n=e.previous;if(n===An)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function Xw(e,t,n,r,o){let i=this.declaredInputs[r],s=Iv(e)||Jw(e,{previous:An,current:null}),a=s.current||(s.current={}),c=s.previous,l=c[i];a[i]=new ic(l&&l.currentValue,n,c===An),Ev(e,t,o,n)}var wv=\"__ngSimpleChanges__\";function Iv(e){return e[wv]||null}function Jw(e,t){return e[wv]=t}var Ug=[];var W=function(e,t=null,n){for(let r=0;r<Ug.length;r++){let o=Ug[r];o(e,t,n)}};function eI(e,t,n){let{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){let s=Dv(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}function jf(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n<r;n++){let i=e.data[n].type.prototype,{ngAfterContentInit:s,ngAfterContentChecked:a,ngAfterViewInit:c,ngAfterViewChecked:l,ngOnDestroy:u}=i;s&&(e.contentHooks??=[]).push(-n,s),a&&((e.contentHooks??=[]).push(n,a),(e.contentCheckHooks??=[]).push(n,a)),c&&(e.viewHooks??=[]).push(-n,c),l&&((e.viewHooks??=[]).push(n,l),(e.viewCheckHooks??=[]).push(n,l)),u!=null&&(e.destroyHooks??=[]).push(n,u)}}function tc(e,t,n){Cv(e,t,3,n)}function nc(e,t,n,r){(e[A]&3)===n&&Cv(e,t,n,r)}function Bd(e,t){let n=e[A];(n&3)===t&&(n&=16383,n+=1,e[A]=n)}function Cv(e,t,n,r){let o=r!==void 0?e[vr]&65535:0,i=r??-1,s=t.length-1,a=0;for(let c=o;c<s;c++)if(typeof t[c+1]==\"number\"){if(a=t[c],r!=null&&a>=r)break}else t[c]<0&&(e[vr]+=65536),(a<i||i==-1)&&(tI(e,n,t,c),e[vr]=(e[vr]&4294901760)+c+2),c++}function Vg(e,t){W(4,e,t);let n=M(null);try{t.call(e)}finally{M(n),W(5,e,t)}}function tI(e,t,n,r){let o=n[r]<0,i=n[r+1],s=o?-n[r]:n[r],a=e[s];o?e[A]>>14<e[vr]>>16&&(e[A]&3)===t&&(e[A]+=16384,Vg(a,i)):Vg(a,i)}var mo=-1,Cr=class{factory;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(t,n,r){this.factory=t,this.canSeeViewProviders=n,this.injectImpl=r}};function nI(e){return(e.flags&8)!==0}function rI(e){return(e.flags&16)!==0}function oI(e,t,n){let r=0;for(;r<n.length;){let o=n[r];if(typeof o==\"number\"){if(o!==0)break;r++;let i=n[r++],s=n[r++],a=n[r++];e.setAttribute(t,s,a,i)}else{let i=o,s=n[++r];iI(i)?e.setProperty(t,i,s):e.setAttribute(t,i,s),r++}}return r}function Tv(e){return e===3||e===4||e===6}function iI(e){return e.charCodeAt(0)===64}function go(e,t){if(!(t===null||t.length===0))if(e===null||e.length===0)e=t.slice();else{let n=-1;for(let r=0;r<t.length;r++){let o=t[r];typeof o==\"number\"?n=o:n===0||(n===-1||n===2?Hg(e,n,o,null,t[++r]):Hg(e,n,o,null,null))}}return e}function Hg(e,t,n,r,o){let i=0,s=e.length;if(t===-1)s=-1;else for(;i<e.length;){let a=e[i++];if(typeof a==\"number\"){if(a===t){s=-1;break}else if(a>t){s=i-1;break}}}for(;i<e.length;){let a=e[i];if(typeof a==\"number\")break;if(a===n){o!==null&&(e[i+1]=o);return}i++,o!==null&&i++}s!==-1&&(e.splice(s,0,t),i=s+1),e.splice(i++,0,n),o!==null&&e.splice(i++,0,o)}function Sv(e){return e!==mo}function sc(e){return e&32767}function sI(e){return e>>16}function ac(e,t){let n=sI(e),r=t;for(;n>0;)r=r[gr],n--;return r}var Qd=!0;function cc(e){let t=Qd;return Qd=e,t}var aI=256,Mv=aI-1,xv=5,cI=0,Ht={};function lI(e,t,n){let r;typeof n==\"string\"?r=n.charCodeAt(0)||0:n.hasOwnProperty(hr)&&(r=n[hr]),r==null&&(r=n[hr]=cI++);let o=r&Mv,i=1<<o;t.data[e+(o>>xv)]|=i}function lc(e,t){let n=Rv(e,t);if(n!==-1)return n;let r=t[N];r.firstCreatePass&&(e.injectorIndex=t.length,Ud(r.data,e),Ud(t,null),Ud(r.blueprint,null));let o=Bf(e,t),i=e.injectorIndex;if(Sv(o)){let s=sc(o),a=ac(o,t),c=a[N].data;for(let l=0;l<8;l++)t[i+l]=a[s+l]|c[s+l]}return t[i+8]=o,i}function Ud(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Rv(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function Bf(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;o!==null;){if(r=Pv(o),r===null)return mo;if(n++,o=o[gr],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return mo}function Xd(e,t,n){lI(e,t,n)}function uI(e,t){if(t===\"class\")return e.classes;if(t===\"style\")return e.styles;let n=e.attrs;if(n){let r=n.length,o=0;for(;o<r;){let i=n[o];if(Tv(i))break;if(i===0)o=o+2;else if(typeof i==\"number\")for(o++;o<r&&typeof n[o]==\"string\";)o++;else{if(i===t)return n[o+1];o=o+2}}}return null}function Av(e,t,n){if(n&8||e!==void 0)return e;Oa(t,\"NodeInjector\")}function Nv(e,t,n,r){if(n&8&&r===void 0&&(r=null),(n&3)===0){let o=e[mr],i=Fe(void 0);try{return o?o.get(t,r,n&8):ad(t,r,n&8)}finally{Fe(i)}}return Av(r,t,n)}function Ov(e,t,n,r=0,o){if(e!==null){if(t[A]&2048&&!(r&2)){let s=pI(e,t,n,r,Ht);if(s!==Ht)return s}let i=kv(e,t,n,r,Ht);if(i!==Ht)return i}return Nv(t,n,r,o)}function kv(e,t,n,r,o){let i=fI(n);if(typeof i==\"function\"){if(!Nd(t,e,r))return r&1?Av(o,n,r):Nv(t,n,r,o);try{let s;if(s=i(r),s==null&&!(r&8))Oa(n);else return s}finally{Od()}}else if(typeof i==\"number\"){let s=null,a=Rv(e,t),c=mo,l=r&1?t[Be][je]:null;for((a===-1||r&4)&&(c=a===-1?Bf(e,t):t[a+8],c===mo||!zg(r,!1)?a=-1:(s=t[N],a=sc(c),t=ac(c,t)));a!==-1;){let u=t[N];if($g(i,a,u.data)){let d=dI(a,t,n,s,r,l);if(d!==Ht)return d}c=t[a+8],c!==mo&&zg(r,t[N].data[a+8]===l)&&$g(i,a,t)?(s=u,a=sc(c),t=ac(c,t)):a=-1}}return o}function dI(e,t,n,r,o,i){let s=t[N],a=s.data[e+8],c=r==null?kn(a)&&Qd:r!=s&&(a.type&3)!==0,l=o&1&&i===a,u=rc(a,s,n,c,l);return u!==null?Ri(t,s,u,a):Ht}function rc(e,t,n,r,o){let i=e.providerIndexes,s=t.data,a=i&1048575,c=e.directiveStart,l=e.directiveEnd,u=i>>20,d=r?a:a+u,p=o?a+u:l;for(let f=d;f<p;f++){let g=s[f];if(f<c&&n===g||f>=c&&g.type===n)return f}if(o){let f=s[c];if(f&&Ut(f)&&f.type===n)return c}return null}function Ri(e,t,n,r){let o=e[n],i=t.data;if(o instanceof Cr){let s=o;s.resolving&&sd(Km(i[n]));let a=cc(s.canSeeViewProviders);s.resolving=!0;let c=i[n].type||i[n],l,u=s.injectImpl?Fe(s.injectImpl):null,d=Nd(e,r,0);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&eI(n,i[n],t)}finally{u!==null&&Fe(u),cc(a),s.resolving=!1,Od()}}return o}function fI(e){if(typeof e==\"string\")return e.charCodeAt(0)||0;let t=e.hasOwnProperty(hr)?e[hr]:void 0;return typeof t==\"number\"?t>=0?t&Mv:hI:t}function $g(e,t,n){let r=1<<e;return!!(n[t+(e>>xv)]&r)}function zg(e,t){return!(e&2)&&!(e&1&&t)}var Ir=class{_tNode;_lView;constructor(t,n){this._tNode=t,this._lView=n}get(t,n,r){return Ov(this._tNode,this._lView,t,lr(r),n)}};function hI(){return new Ir(Te(),I())}function wc(e){return Eo(()=>{let t=e.prototype.constructor,n=t[ui]||Jd(t),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[ui]||Jd(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Jd(e){return Ju(e)?()=>{let t=Jd(Re(e));return t&&t()}:Mn(e)}function pI(e,t,n,r,o){let i=e,s=t;for(;i!==null&&s!==null&&s[A]&2048&&!co(s);){let a=kv(i,s,n,r|2,Ht);if(a!==Ht)return a;let c=i.parent;if(!c){let l=s[yd];if(l){let u=l.get(n,Ht,r);if(u!==Ht)return u}c=Pv(s),s=s[gr]}i=c}return o}function Pv(e){let t=e[N],n=t.type;return n===2?t.declTNode:n===1?e[je]:null}function Fi(e){return uI(Te(),e)}function mI(){return Do(Te(),I())}function Do(e,t){return new me(_t(e,t))}var me=(()=>{class e{nativeElement;constructor(n){this.nativeElement=n}static __NG_ELEMENT_ID__=mI}return e})();function Fv(e){return e instanceof me?e.nativeElement:e}function gI(){return this._results[Symbol.iterator]()}var Tr=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new V}constructor(t=!1){this._emitDistinctChangesOnly=t}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;let r=Jm(t);(this._changesDetected=!Xm(this._results,r,n))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(t){this._onDirty=t}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=gI};function Lv(e){return(e.flags&128)===128}var Uf=function(e){return e[e.OnPush=0]=\"OnPush\",e[e.Default=1]=\"Default\",e}(Uf||{}),jv=new Map,vI=0;function yI(){return vI++}function bI(e){jv.set(e[gi],e)}function ef(e){jv.delete(e[gi])}var Wg=\"__ngContext__\";function wo(e,t){Bt(t)?(e[Wg]=t[gi],bI(t)):e[Wg]=t}function Bv(e){return Vv(e[ao])}function Uv(e){return Vv(e[lt])}function Vv(e){for(;e!==null&&!bt(e);)e=e[lt];return e}var tf;function Vf(e){tf=e}function Hv(){if(tf!==void 0)return tf;if(typeof document<\"u\")return document;throw new _(210,!1)}var Bn=new E(\"\",{providedIn:\"root\",factory:()=>_I}),_I=\"ng\",Ic=new E(\"\"),Un=new E(\"\",{providedIn:\"platform\",factory:()=>\"unknown\"});var Hf=new E(\"\"),Io=new E(\"\",{providedIn:\"root\",factory:()=>Hv().body?.querySelector(\"[ngCspNonce]\")?.getAttribute(\"ngCspNonce\")||null});var EI=\"h\",DI=\"b\";var $v=\"r\";var zv=\"di\";var Wv=!1,Gv=new E(\"\",{providedIn:\"root\",factory:()=>Wv});var wI=(e,t,n,r)=>{};function II(e,t,n,r){wI(e,t,n,r)}var CI=()=>null;function qv(e,t,n=!1){return CI(e,t,n)}function Zv(e,t){let n=e.contentQueries;if(n!==null){let r=M(null);try{for(let o=0;o<n.length;o+=2){let i=n[o],s=n[o+1];if(s!==-1){let a=e.data[s];Di(i),a.contentQueries(2,t[s],s)}}}finally{M(r)}}}function nf(e,t,n){Di(0);let r=M(null);try{t(e,n)}finally{M(r)}}function $f(e,t,n){if(ja(t)){let r=M(null);try{let o=t.directiveStart,i=t.directiveEnd;for(let s=o;s<i;s++){let a=e.data[s];if(a.contentQueries){let c=n[s];a.contentQueries(1,c,s)}}}finally{M(r)}}}var un=function(e){return e[e.Emulated=0]=\"Emulated\",e[e.None=2]=\"None\",e[e.ShadowDom=3]=\"ShadowDom\",e}(un||{}),Qa;function TI(){if(Qa===void 0&&(Qa=null,ct.trustedTypes))try{Qa=ct.trustedTypes.createPolicy(\"angular\",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Qa}function Cc(e){return TI()?.createHTML(e)||e}var Xa;function SI(){if(Xa===void 0&&(Xa=null,ct.trustedTypes))try{Xa=ct.trustedTypes.createPolicy(\"angular#unsafe-bypass\",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Xa}function Gg(e){return SI()?.createScriptURL(e)||e}var dn=class{changingThisBreaksApplicationSecurity;constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${xa})`}},rf=class extends dn{getTypeName(){return\"HTML\"}},of=class extends dn{getTypeName(){return\"Style\"}},sf=class extends dn{getTypeName(){return\"Script\"}},af=class extends dn{getTypeName(){return\"URL\"}},cf=class extends dn{getTypeName(){return\"ResourceURL\"}};function Ct(e){return e instanceof dn?e.changingThisBreaksApplicationSecurity:e}function hn(e,t){let n=Yv(e);if(n!=null&&n!==t){if(n===\"ResourceURL\"&&t===\"URL\")return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${xa})`)}return n===t}function Yv(e){return e instanceof dn&&e.getTypeName()||null}function zf(e){return new rf(e)}function Wf(e){return new of(e)}function Gf(e){return new sf(e)}function qf(e){return new af(e)}function Zf(e){return new cf(e)}function MI(e){let t=new uf(e);return xI()?new lf(t):t}var lf=class{inertDocumentHelper;constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=\"<body><remove></remove>\"+t;try{let n=new window.DOMParser().parseFromString(Cc(t),\"text/html\").body;return n===null?this.inertDocumentHelper.getInertBodyElement(t):(n.firstChild?.remove(),n)}catch{return null}}},uf=class{defaultDoc;inertDocument;constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument(\"sanitization-inert\")}getInertBodyElement(t){let n=this.inertDocument.createElement(\"template\");return n.innerHTML=Cc(t),n}};function xI(){try{return!!new window.DOMParser().parseFromString(Cc(\"\"),\"text/html\")}catch{return!1}}var RI=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\\/?#]*(?:[\\/?#]|$))/i;function Li(e){return e=String(e),e.match(RI)?e:\"unsafe:\"+e}function pn(e){let t={};for(let n of e.split(\",\"))t[n]=!0;return t}function ji(...e){let t={};for(let n of e)for(let r in n)n.hasOwnProperty(r)&&(t[r]=!0);return t}var Kv=pn(\"area,br,col,hr,img,wbr\"),Qv=pn(\"colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr\"),Xv=pn(\"rp,rt\"),AI=ji(Xv,Qv),NI=ji(Qv,pn(\"address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul\")),OI=ji(Xv,pn(\"a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video\")),qg=ji(Kv,NI,OI,AI),Jv=pn(\"background,cite,href,itemtype,longdesc,poster,src,xlink:href\"),kI=pn(\"abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width\"),PI=pn(\"aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext\"),FI=ji(Jv,kI,PI),LI=pn(\"script,style,template\"),df=class{sanitizedSomething=!1;buf=[];sanitizeChildren(t){let n=t.firstChild,r=!0,o=[];for(;n;){if(n.nodeType===Node.ELEMENT_NODE?r=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,r&&n.firstChild){o.push(n),n=UI(n);continue}for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let i=BI(n);if(i){n=i;break}n=o.pop()}}return this.buf.join(\"\")}startElement(t){let n=Zg(t).toLowerCase();if(!qg.hasOwnProperty(n))return this.sanitizedSomething=!0,!LI.hasOwnProperty(n);this.buf.push(\"<\"),this.buf.push(n);let r=t.attributes;for(let o=0;o<r.length;o++){let i=r.item(o),s=i.name,a=s.toLowerCase();if(!FI.hasOwnProperty(a)){this.sanitizedSomething=!0;continue}let c=i.value;Jv[a]&&(c=Li(c)),this.buf.push(\" \",s,'=\"',Yg(c),'\"')}return this.buf.push(\">\"),!0}endElement(t){let n=Zg(t).toLowerCase();qg.hasOwnProperty(n)&&!Kv.hasOwnProperty(n)&&(this.buf.push(\"</\"),this.buf.push(n),this.buf.push(\">\"))}chars(t){this.buf.push(Yg(t))}};function jI(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function BI(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw ey(t);return t}function UI(e){let t=e.firstChild;if(t&&jI(e,t))throw ey(t);return t}function Zg(e){let t=e.nodeName;return typeof t==\"string\"?t:\"FORM\"}function ey(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var VI=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,HI=/([^\\#-~ |!])/g;function Yg(e){return e.replace(/&/g,\"&amp;\").replace(VI,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return\"&#\"+((n-55296)*1024+(r-56320)+65536)+\";\"}).replace(HI,function(t){return\"&#\"+t.charCodeAt(0)+\";\"}).replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")}var Ja;function Yf(e,t){let n=null;try{Ja=Ja||MI(e);let r=t?String(t):\"\";n=Ja.getInertBodyElement(r);let o=5,i=r;do{if(o===0)throw new Error(\"Failed to sanitize html because the input is unstable\");o--,r=i,i=n.innerHTML,n=Ja.getInertBodyElement(r)}while(r!==i);let a=new df().sanitizeChildren(Kg(n)||n);return Cc(a)}finally{if(n){let r=Kg(n)||n;for(;r.firstChild;)r.firstChild.remove()}}}function Kg(e){return\"content\"in e&&$I(e)?e.content:null}function $I(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName===\"TEMPLATE\"}var Tt=function(e){return e[e.NONE=0]=\"NONE\",e[e.HTML=1]=\"HTML\",e[e.STYLE=2]=\"STYLE\",e[e.SCRIPT=3]=\"SCRIPT\",e[e.URL=4]=\"URL\",e[e.RESOURCE_URL=5]=\"RESOURCE_URL\",e}(Tt||{});function ty(e){let t=ry();return t?t.sanitize(Tt.URL,e)||\"\":hn(e,\"URL\")?Ct(e):Li(Rn(e))}function ny(e){let t=ry();if(t)return Gg(t.sanitize(Tt.RESOURCE_URL,e)||\"\");if(hn(e,\"ResourceURL\"))return Gg(Ct(e));throw new _(904,!1)}function zI(e,t){return t===\"src\"&&(e===\"embed\"||e===\"frame\"||e===\"iframe\"||e===\"media\"||e===\"script\")||t===\"href\"&&(e===\"base\"||e===\"link\")?ny:ty}function Kf(e,t,n){return zI(t,n)(e)}function ry(){let e=I();return e&&e[Lt].sanitizer}var WI=/^>|^->|<!--|-->|--!>|<!-$/g,GI=/(<|>)/g,qI=\"\\u200B$1\\u200B\";function ZI(e){return e.replace(WI,t=>t.replace(GI,qI))}function oy(e){return e instanceof Function?e():e}function YI(e,t,n){let r=e.length;for(;;){let o=e.indexOf(t,n);if(o===-1)return o;if(o===0||e.charCodeAt(o-1)<=32){let i=t.length;if(o+i===r||e.charCodeAt(o+i)<=32)return o}n=o+1}}var iy=\"ng-template\";function KI(e,t,n,r){let o=0;if(r){for(;o<t.length&&typeof t[o]==\"string\";o+=2)if(t[o]===\"class\"&&YI(t[o+1].toLowerCase(),n,0)!==-1)return!0}else if(Qf(e))return!1;if(o=t.indexOf(1,o),o>-1){let i;for(;++o<t.length&&typeof(i=t[o])==\"string\";)if(i.toLowerCase()===n)return!0}return!1}function Qf(e){return e.type===4&&e.value!==iy}function QI(e,t,n){let r=e.type===4&&!n?iy:e.value;return t===r}function XI(e,t,n){let r=4,o=e.attrs,i=o!==null?tC(o):0,s=!1;for(let a=0;a<t.length;a++){let c=t[a];if(typeof c==\"number\"){if(!s&&!Dt(r)&&!Dt(c))return!1;if(s&&Dt(c))continue;s=!1,r=c|r&1;continue}if(!s)if(r&4){if(r=2|r&1,c!==\"\"&&!QI(e,c,n)||c===\"\"&&t.length===1){if(Dt(r))return!1;s=!0}}else if(r&8){if(o===null||!KI(e,o,c,n)){if(Dt(r))return!1;s=!0}}else{let l=t[++a],u=JI(c,o,Qf(e),n);if(u===-1){if(Dt(r))return!1;s=!0;continue}if(l!==\"\"){let d;if(u>i?d=\"\":d=o[u+1].toLowerCase(),r&2&&l!==d){if(Dt(r))return!1;s=!0}}}}return Dt(r)||s}function Dt(e){return(e&1)===0}function JI(e,t,n,r){if(t===null)return-1;let o=0;if(r||!n){let i=!1;for(;o<t.length;){let s=t[o];if(s===e)return o;if(s===3||s===6)i=!0;else if(s===1||s===2){let a=t[++o];for(;typeof a==\"string\";)a=t[++o];continue}else{if(s===4)break;if(s===0){o+=4;continue}}o+=i?1:2}return-1}else return nC(t,e)}function sy(e,t,n=!1){for(let r=0;r<t.length;r++)if(XI(e,t[r],n))return!0;return!1}function eC(e){let t=e.attrs;if(t!=null){let n=t.indexOf(5);if((n&1)===0)return t[n+1]}return null}function tC(e){for(let t=0;t<e.length;t++){let n=e[t];if(Tv(n))return t}return e.length}function nC(e,t){let n=e.indexOf(4);if(n>-1)for(n++;n<e.length;){let r=e[n];if(typeof r==\"number\")return-1;if(r===t)return n;n++}return-1}function rC(e,t){e:for(let n=0;n<t.length;n++){let r=t[n];if(e.length===r.length){for(let o=0;o<e.length;o++)if(e[o]!==r[o])continue e;return!0}}return!1}function Qg(e,t){return e?\":not(\"+t.trim()+\")\":t}function oC(e){let t=e[0],n=1,r=2,o=\"\",i=!1;for(;n<e.length;){let s=e[n];if(typeof s==\"string\")if(r&2){let a=e[++n];o+=\"[\"+s+(a.length>0?'=\"'+a+'\"':\"\")+\"]\"}else r&8?o+=\".\"+s:r&4&&(o+=\" \"+s);else o!==\"\"&&!Dt(s)&&(t+=Qg(i,o),o=\"\"),r=s,i=i||!Dt(r);n++}return o!==\"\"&&(t+=Qg(i,o)),t}function iC(e){return e.map(oC).join(\",\")}function sC(e){let t=[],n=[],r=1,o=2;for(;r<e.length;){let i=e[r];if(typeof i==\"string\")o===2?i!==\"\"&&t.push(i,e[++r]):o===8&&n.push(i);else{if(!Dt(o))break;o=i}r++}return n.length&&t.push(1,...n),t}var ke={};function aC(e,t){return e.createText(t)}function cC(e,t,n){e.setValue(t,n)}function lC(e,t){return e.createComment(ZI(t))}function ay(e,t,n){return e.createElement(t,n)}function uc(e,t,n,r,o){e.insertBefore(t,n,r,o)}function cy(e,t,n){e.appendChild(t,n)}function Xg(e,t,n,r,o){r!==null?uc(e,t,n,r,o):cy(e,t,n)}function ly(e,t,n){e.removeChild(null,t,n)}function uC(e,t,n){e.setAttribute(t,\"style\",n)}function dC(e,t,n){n===\"\"?e.removeAttribute(t,\"class\"):e.setAttribute(t,\"class\",n)}function uy(e,t,n){let{mergedAttrs:r,classes:o,styles:i}=n;r!==null&&oI(e,t,r),o!==null&&dC(e,t,o),i!==null&&uC(e,t,i)}function Xf(e,t,n,r,o,i,s,a,c,l,u){let d=pe+r,p=d+o,f=fC(d,p),g=typeof l==\"function\"?l():l;return f[N]={type:e,blueprint:f,template:n,queries:null,viewQuery:a,declTNode:t,data:f.slice().fill(null,d),bindingStartIndex:d,expandoStartIndex:p,hostBindingOpCodes:null,firstCreatePass:!0,firstUpdatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:typeof i==\"function\"?i():i,pipeRegistry:typeof s==\"function\"?s():s,firstChild:null,schemas:c,consts:g,incompleteFirstPass:!1,ssrId:u}}function fC(e,t){let n=[];for(let r=0;r<t;r++)n.push(r<e?null:ke);return n}function hC(e){let t=e.tView;return t===null||t.incompleteFirstPass?e.tView=Xf(1,null,e.template,e.decls,e.vars,e.directiveDefs,e.pipeDefs,e.viewQuery,e.schemas,e.consts,e.id):t}function Jf(e,t,n,r,o,i,s,a,c,l,u){let d=t.blueprint.slice();return d[yt]=o,d[A]=r|4|128|8|64|1024,(l!==null||e&&e[A]&2048)&&(d[A]|=2048),wd(d),d[Ee]=d[gr]=e,d[he]=n,d[Lt]=s||e&&e[Lt],d[Q]=a||e&&e[Q],d[mr]=c||e&&e[mr]||null,d[je]=i,d[gi]=yI(),d[pr]=u,d[yd]=l,d[Be]=t.type==2?e[Be]:d,d}function pC(e,t,n){let r=_t(t,e),o=hC(n),i=e[Lt].rendererFactory,s=eh(e,Jf(e,o,null,dy(n),r,t,null,i.createRenderer(r,n),null,null,null));return e[t.index]=s}function dy(e){let t=16;return e.signals?t=4096:e.onPush&&(t=64),t}function fy(e,t,n,r){if(n===0)return-1;let o=t.length;for(let i=0;i<n;i++)t.push(r),e.blueprint.push(r),e.data.push(null);return o}function eh(e,t){return e[ao]?e[vd][lt]=t:e[ao]=t,e[vd]=t,t}function mC(e=1){hy(X(),I(),Vt()+e,!1)}function hy(e,t,n,r){if(!r)if((t[A]&3)===3){let i=e.preOrderCheckHooks;i!==null&&tc(t,i,n)}else{let i=e.preOrderHooks;i!==null&&nc(t,i,0,n)}Ln(n)}var Tc=function(e){return e[e.None=0]=\"None\",e[e.SignalBased=1]=\"SignalBased\",e[e.HasDecoratorInputTransform=2]=\"HasDecoratorInputTransform\",e}(Tc||{});function ff(e,t,n,r){let o=M(null);try{let[i,s,a]=e.inputs[n],c=null;(s&Tc.SignalBased)!==0&&(c=t[i][be]),c!==null&&c.transformFn!==void 0?r=c.transformFn(r):a!==null&&(r=a.call(t,r)),e.setInput!==null?e.setInput(t,c,r,n,i):Ev(t,c,i,r)}finally{M(o)}}function py(e,t,n,r,o){let i=Vt(),s=r&2;try{Ln(-1),s&&t.length>pe&&hy(e,t,pe,!1),W(s?2:0,o,n),n(r,o)}finally{Ln(i),W(s?3:1,o,n)}}function Sc(e,t,n){EC(e,t,n),(n.flags&64)===64&&DC(e,t,n)}function th(e,t,n=_t){let r=t.localNames;if(r!==null){let o=t.index+1;for(let i=0;i<r.length;i+=2){let s=r[i+1],a=s===-1?n(t,e):e[s];e[o++]=a}}}function gC(e,t,n,r){let i=r.get(Gv,Wv)||n===un.ShadowDom,s=e.selectRootElement(t,i);return vC(s),s}function vC(e){yC(e)}var yC=()=>null;function bC(e){return e===\"class\"?\"className\":e===\"for\"?\"htmlFor\":e===\"formaction\"?\"formAction\":e===\"innerHtml\"?\"innerHTML\":e===\"readonly\"?\"readOnly\":e===\"tabindex\"?\"tabIndex\":e}function my(e,t,n,r,o,i){let s=t[N];if(rh(e,s,t,n,r)){kn(e)&&_C(t,e.index);return}gy(e,t,n,r,o,i)}function gy(e,t,n,r,o,i){if(e.type&3){let s=_t(e,t);n=bC(n),r=i!=null?i(r,e.value||\"\",n):r,o.setProperty(s,n,r)}else e.type&12}function _C(e,t){let n=dt(t,e);n[A]&16||(n[A]|=64)}function EC(e,t,n){let r=n.directiveStart,o=n.directiveEnd;kn(n)&&pC(t,n,e.data[r+n.componentOffset]),e.firstCreatePass||lc(n,t);let i=n.initialInputs;for(let s=r;s<o;s++){let a=e.data[s],c=Ri(t,e,s,n);if(wo(c,t),i!==null&&TC(t,s-r,c,a,n,i),Ut(a)){let l=dt(n.index,t);l[he]=Ri(t,e,s,n)}}}function DC(e,t,n){let r=n.directiveStart,o=n.directiveEnd,i=n.index,s=xg();try{Ln(i);for(let a=r;a<o;a++){let c=e.data[a],l=t[a];Ga(a),(c.hostBindings!==null||c.hostVars!==0||c.hostAttrs!==null)&&wC(c,l)}}finally{Ln(-1),Ga(s)}}function wC(e,t){e.hostBindings!==null&&e.hostBindings(1,t)}function nh(e,t){let n=e.directiveRegistry,r=null;if(n)for(let o=0;o<n.length;o++){let i=n[o];sy(t,i.selectors,!1)&&(r??=[],Ut(i)?r.unshift(i):r.push(i))}return r}function IC(e,t,n,r,o,i){let s=_t(e,t);CC(t[Q],s,i,e.value,n,r,o)}function CC(e,t,n,r,o,i,s){if(i==null)e.removeAttribute(t,o,n);else{let a=s==null?Rn(i):s(i,r||\"\",o);e.setAttribute(t,o,a,n)}}function TC(e,t,n,r,o,i){let s=i[t];if(s!==null)for(let a=0;a<s.length;a+=2){let c=s[a],l=s[a+1];ff(r,n,c,l)}}function SC(e,t){let n=e[mr];if(!n)return;n.get(Ue,null)?.(t)}function rh(e,t,n,r,o){let i=e.inputs?.[r],s=e.hostDirectiveInputs?.[r],a=!1;if(s)for(let c=0;c<s.length;c+=2){let l=s[c],u=s[c+1],d=t.data[l];ff(d,n[l],u,o),a=!0}if(i)for(let c of i){let l=n[c],u=t.data[c];ff(u,l,r,o),a=!0}return a}function MC(e,t){let n=dt(t,e),r=n[N];xC(r,n);let o=n[yt];o!==null&&n[pr]===null&&(n[pr]=qv(o,n[mr])),W(18),oh(r,n,n[he]),W(19,n[he])}function xC(e,t){for(let n=t.length;n<e.blueprint.length;n++)t.push(e.blueprint[n])}function oh(e,t,n){Za(t);try{let r=e.viewQuery;r!==null&&nf(1,r,n);let o=e.template;o!==null&&py(e,t,o,1,n),e.firstCreatePass&&(e.firstCreatePass=!1),t[jt]?.finishViewCreation(e),e.staticContentQueries&&Zv(e,t),e.staticViewQueries&&nf(2,e.viewQuery,n);let i=e.components;i!==null&&RC(t,i)}catch(r){throw e.firstCreatePass&&(e.incompleteFirstPass=!0,e.firstCreatePass=!1),r}finally{t[A]&=-5,Ya()}}function RC(e,t){for(let n=0;n<t.length;n++)MC(e,t[n])}function Bi(e,t,n,r){let o=M(null);try{let i=t.tView,a=e[A]&4096?4096:16,c=Jf(e,i,n,a,null,t,null,null,r?.injector??null,r?.embeddedViewInjector??null,r?.dehydratedView??null),l=e[t.index];c[Nn]=l;let u=e[jt];return u!==null&&(c[jt]=u.createEmbeddedView(i)),oh(i,c,n),c}finally{M(o)}}function vo(e,t){return!t||t.firstChild===null||Lv(e)}var Jg=!1,AC=new E(\"\"),NC;function ih(e,t){return NC(e,t)}var $t=function(e){return e[e.Important=1]=\"Important\",e[e.DashCase=2]=\"DashCase\",e}($t||{});function Mc(e){return(e.flags&32)===32}function po(e,t,n,r,o){if(r!=null){let i,s=!1;bt(r)?i=r:Bt(r)&&(s=!0,r=r[yt]);let a=ut(r);e===0&&n!==null?o==null?cy(t,n,a):uc(t,n,a,o||null,!0):e===1&&n!==null?uc(t,n,a,o||null,!0):e===2?ly(t,a,s):e===3&&t.destroyNode(a),i!=null&&HC(t,e,i,n,o)}}function OC(e,t){vy(e,t),t[yt]=null,t[je]=null}function kC(e,t,n,r,o,i){r[yt]=o,r[je]=t,Ac(e,r,n,1,o,i)}function vy(e,t){t[Lt].changeDetectionScheduler?.notify(9),Ac(e,t,t[Q],2,null,null)}function PC(e){let t=e[ao];if(!t)return Vd(e[N],e);for(;t;){let n=null;if(Bt(t))n=t[ao];else{let r=t[Ce];r&&(n=r)}if(!n){for(;t&&!t[lt]&&t!==e;)Bt(t)&&Vd(t[N],t),t=t[Ee];t===null&&(t=e),Bt(t)&&Vd(t[N],t),n=t&&t[lt]}t=n}}function sh(e,t){let n=e[br],r=n.indexOf(t);n.splice(r,1)}function xc(e,t){if(_r(t))return;let n=t[Q];n.destroyNode&&Ac(e,t,n,3,null,null),PC(t)}function Vd(e,t){if(_r(t))return;let n=M(null);try{t[A]&=-129,t[A]|=256,t[et]&&Wr(t[et]),LC(e,t),FC(e,t),t[N].type===1&&t[Q].destroy();let r=t[Nn];if(r!==null&&bt(t[Ee])){r!==t[Ee]&&sh(r,t);let o=t[jt];o!==null&&o.detachView(e)}ef(t)}finally{M(n)}}function FC(e,t){let n=e.cleanup,r=t[so];if(n!==null)for(let s=0;s<n.length-1;s+=2)if(typeof n[s]==\"string\"){let a=n[s+3];a>=0?r[a]():r[-a].unsubscribe(),s+=2}else{let a=r[n[s+1]];n[s].call(a)}r!==null&&(t[so]=null);let o=t[on];if(o!==null){t[on]=null;for(let s=0;s<o.length;s++){let a=o[s];a()}}let i=t[an];if(i!==null){t[an]=null;for(let s of i)s.destroy()}}function LC(e,t){let n;if(e!=null&&(n=e.destroyHooks)!=null)for(let r=0;r<n.length;r+=2){let o=t[n[r]];if(!(o instanceof Cr)){let i=n[r+1];if(Array.isArray(i))for(let s=0;s<i.length;s+=2){let a=o[i[s]],c=i[s+1];W(4,a,c);try{c.call(a)}finally{W(5,a,c)}}else{W(4,o,i);try{i.call(o)}finally{W(5,o,i)}}}}}function yy(e,t,n){return jC(e,t.parent,n)}function jC(e,t,n){let r=t;for(;r!==null&&r.type&168;)t=r,r=t.parent;if(r===null)return n[yt];if(kn(r)){let{encapsulation:o}=e.data[r.directiveStart+r.componentOffset];if(o===un.None||o===un.Emulated)return null}return _t(r,n)}function by(e,t,n){return UC(e,t,n)}function BC(e,t,n){return e.type&40?_t(e,n):null}var UC=BC,ev;function Rc(e,t,n,r){let o=yy(e,r,t),i=t[Q],s=r.parent||t[je],a=by(s,r,t);if(o!=null)if(Array.isArray(n))for(let c=0;c<n.length;c++)Xg(i,o,n[c],a,!1);else Xg(i,o,n,a,!1);ev!==void 0&&ev(i,r,t,n,o)}function Mi(e,t){if(t!==null){let n=t.type;if(n&3)return _t(t,e);if(n&4)return hf(-1,e[t.index]);if(n&8){let r=t.child;if(r!==null)return Mi(e,r);{let o=e[t.index];return bt(o)?hf(-1,o):ut(o)}}else{if(n&128)return Mi(e,t.next);if(n&32)return ih(t,e)()||ut(e[t.index]);{let r=_y(e,t);if(r!==null){if(Array.isArray(r))return r[0];let o=xn(e[Be]);return Mi(o,r)}else return Mi(e,t.next)}}}return null}function _y(e,t){if(t!==null){let r=e[Be][je],o=t.projection;return r.projection[o]}return null}function hf(e,t){let n=Ce+e+1;if(n<t.length){let r=t[n],o=r[N].firstChild;if(o!==null)return Mi(r,o)}return t[On]}function ah(e,t,n,r,o,i,s){for(;n!=null;){if(n.type===128){n=n.next;continue}let a=r[n.index],c=n.type;if(s&&t===0&&(a&&wo(ut(a),r),n.flags|=2),!Mc(n))if(c&8)ah(e,t,n.child,r,o,i,!1),po(t,e,o,a,i);else if(c&32){let l=ih(n,r),u;for(;u=l();)po(t,e,o,u,i);po(t,e,o,a,i)}else c&16?Ey(e,t,r,n,o,i):po(t,e,o,a,i);n=s?n.projectionNext:n.next}}function Ac(e,t,n,r,o,i){ah(n,r,e.firstChild,t,o,i,!1)}function VC(e,t,n){let r=t[Q],o=yy(e,n,t),i=n.parent||t[je],s=by(i,n,t);Ey(r,0,t,n,o,s)}function Ey(e,t,n,r,o,i){let s=n[Be],c=s[je].projection[r.projection];if(Array.isArray(c))for(let l=0;l<c.length;l++){let u=c[l];po(t,e,o,u,i)}else{let l=c,u=s[Ee];Lv(r)&&(l.flags|=128),ah(e,t,l,u,o,i,!0)}}function HC(e,t,n,r,o){let i=n[On],s=ut(n);i!==s&&po(t,e,r,i,o);for(let a=Ce;a<n.length;a++){let c=n[a];Ac(c[N],c,e,t,r,i)}}function $C(e,t,n,r,o){if(t)o?e.addClass(n,r):e.removeClass(n,r);else{let i=r.indexOf(\"-\")===-1?void 0:$t.DashCase;o==null?e.removeStyle(n,r,i):(typeof o==\"string\"&&o.endsWith(\"!important\")&&(o=o.slice(0,-10),i|=$t.Important),e.setStyle(n,r,o,i))}}function Ai(e,t,n,r,o=!1){for(;n!==null;){if(n.type===128){n=o?n.projectionNext:n.next;continue}let i=t[n.index];i!==null&&r.push(ut(i)),bt(i)&&Dy(i,r);let s=n.type;if(s&8)Ai(e,t,n.child,r);else if(s&32){let a=ih(n,t),c;for(;c=a();)r.push(c)}else if(s&16){let a=_y(t,n);if(Array.isArray(a))r.push(...a);else{let c=xn(t[Be]);Ai(c[N],c,a,r,!0)}}n=o?n.projectionNext:n.next}return r}function Dy(e,t){for(let n=Ce;n<e.length;n++){let r=e[n],o=r[N].firstChild;o!==null&&Ai(r[N],r,o,t)}e[On]!==e[yt]&&t.push(e[On])}function wy(e){if(e[yr]!==null){for(let t of e[yr])t.impl.addSequence(t);e[yr].length=0}}var Iy=[];function zC(e){return e[et]??WC(e)}function WC(e){let t=Iy.pop()??Object.create(qC);return t.lView=e,t}function GC(e){e.lView[et]!==e&&(e.lView=null,Iy.push(e))}var qC=U(v({},Dn),{consumerIsAlwaysLive:!0,kind:\"template\",consumerMarkedDirty:e=>{Pn(e.lView)},consumerOnSignalRead(){this.lView[et]=this}});function ZC(e){let t=e[et]??Object.create(YC);return t.lView=e,t}var YC=U(v({},Dn),{consumerIsAlwaysLive:!0,kind:\"template\",consumerMarkedDirty:e=>{let t=xn(e.lView);for(;t&&!Cy(t[N]);)t=xn(t);t&&Id(t)},consumerOnSignalRead(){this.lView[et]=this}});function Cy(e){return e.type!==2}function Ty(e){if(e[an]===null)return;let t=!0;for(;t;){let n=!1;for(let r of e[an])r.dirty&&(n=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()));t=n&&!!(e[A]&8192)}}var KC=100;function ch(e,t=0){let r=e[Lt].rendererFactory,o=!1;o||r.begin?.();try{QC(e,t)}finally{o||r.end?.()}}function QC(e,t){let n=Ad();try{lo(!0),pf(e,t);let r=0;for(;_i(e);){if(r===KC)throw new _(103,!1);r++,pf(e,1)}}finally{lo(n)}}function Sy(e,t){Rd(t?Ei.Exhaustive:Ei.OnlyDirtyViews);try{ch(e)}finally{Rd(Ei.Off)}}function XC(e,t,n,r){if(_r(t))return;let o=t[A],i=!1,s=!1;Za(t);let a=!0,c=null,l=null;i||(Cy(e)?(l=zC(t),c=tn(l)):Zs()===null?(a=!1,l=ZC(t),c=tn(l)):t[et]&&(Wr(t[et]),t[et]=null));try{wd(t),Tg(e.bindingStartIndex),n!==null&&py(e,t,n,2,r);let u=(o&3)===3;if(!i)if(u){let f=e.preOrderCheckHooks;f!==null&&tc(t,f,null)}else{let f=e.preOrderHooks;f!==null&&nc(t,f,0,null),Bd(t,0)}if(s||JC(t),Ty(t),My(t,0),e.contentQueries!==null&&Zv(e,t),!i)if(u){let f=e.contentCheckHooks;f!==null&&tc(t,f)}else{let f=e.contentHooks;f!==null&&nc(t,f,1),Bd(t,1)}tT(e,t);let d=e.components;d!==null&&Ry(t,d,0);let p=e.viewQuery;if(p!==null&&nf(2,p,r),!i)if(u){let f=e.viewCheckHooks;f!==null&&tc(t,f)}else{let f=e.viewHooks;f!==null&&nc(t,f,2),Bd(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[La]){for(let f of t[La])f();t[La]=null}i||(wy(t),t[A]&=-73)}catch(u){throw i||Pn(t),u}finally{l!==null&&(wn(l,c),a&&GC(l)),Ya()}}function My(e,t){for(let n=Bv(e);n!==null;n=Uv(n))for(let r=Ce;r<n.length;r++){let o=n[r];xy(o,t)}}function JC(e){for(let t=Bv(e);t!==null;t=Uv(t)){if(!(t[A]&2))continue;let n=t[br];for(let r=0;r<n.length;r++){let o=n[r];Id(o)}}}function eT(e,t,n){W(18);let r=dt(t,e);xy(r,n),W(19,r[he])}function xy(e,t){Ua(e)&&pf(e,t)}function pf(e,t){let r=e[N],o=e[A],i=e[et],s=!!(t===0&&o&16);if(s||=!!(o&64&&t===0),s||=!!(o&1024),s||=!!(i?.dirty&&er(i)),s||=!1,i&&(i.dirty=!1),e[A]&=-9217,s)XC(r,e,r.template,e[he]);else if(o&8192){let a=M(null);try{Ty(e),My(e,1);let c=r.components;c!==null&&Ry(e,c,1),wy(e)}finally{M(a)}}}function Ry(e,t,n){for(let r=0;r<t.length;r++)eT(e,t[r],n)}function tT(e,t){let n=e.hostBindingOpCodes;if(n!==null)try{for(let r=0;r<n.length;r++){let o=n[r];if(o<0)Ln(~o);else{let i=o,s=n[++r],a=n[++r];Mg(s,i);let c=t[i];W(24,c),a(2,c),W(25,c)}}}finally{Ln(-1)}}function lh(e,t){let n=Ad()?64:1088;for(e[Lt].changeDetectionScheduler?.notify(t);e;){e[A]|=n;let r=xn(e);if(co(e)&&!r)return e;e=r}return null}function Ay(e,t,n,r){return[e,!0,0,t,null,r,null,n,null,null]}function Ny(e,t){let n=Ce+t;if(n<e.length)return e[n]}function Ui(e,t,n,r=!0){let o=t[N];if(nT(o,t,e,n),r){let s=hf(n,e),a=t[Q],c=a.parentNode(e[On]);c!==null&&kC(o,e[je],a,t,c,s)}let i=t[pr];i!==null&&i.firstChild!==null&&(i.firstChild=null)}function Oy(e,t){let n=Ni(e,t);return n!==void 0&&xc(n[N],n),n}function Ni(e,t){if(e.length<=Ce)return;let n=Ce+t,r=e[n];if(r){let o=r[Nn];o!==null&&o!==e&&sh(o,r),t>0&&(e[n-1][lt]=r[lt]);let i=pi(e,Ce+t);OC(r[N],r);let s=i[jt];s!==null&&s.detachView(i[N]),r[Ee]=null,r[lt]=null,r[A]&=-129}return r}function nT(e,t,n,r){let o=Ce+r,i=n.length;r>0&&(n[o-1][lt]=t),r<i-Ce?(t[lt]=n[o],ld(n,Ce+r,t)):(n.push(t),t[lt]=null),t[Ee]=n;let s=t[Nn];s!==null&&n!==s&&ky(s,t);let a=t[jt];a!==null&&a.insertView(e),Va(t),t[A]|=128}function ky(e,t){let n=e[br],r=t[Ee];if(Bt(r))e[A]|=2;else{let o=r[Ee][Be];t[Be]!==o&&(e[A]|=2)}n===null?e[br]=[t]:n.push(t)}var jn=class{_lView;_cdRefInjectingView;_appRef=null;_attachedToViewContainer=!1;exhaustive;get rootNodes(){let t=this._lView,n=t[N];return Ai(n,t,n.firstChild,[])}constructor(t,n){this._lView=t,this._cdRefInjectingView=n}get context(){return this._lView[he]}set context(t){this._lView[he]=t}get destroyed(){return _r(this._lView)}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){let t=this._lView[Ee];if(bt(t)){let n=t[vi],r=n?n.indexOf(this):-1;r>-1&&(Ni(t,r),pi(n,r))}this._attachedToViewContainer=!1}xc(this._lView[N],this._lView)}onDestroy(t){Cd(this._lView,t)}markForCheck(){lh(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[A]&=-129}reattach(){Va(this._lView),this._lView[A]|=128}detectChanges(){this._lView[A]|=1024,ch(this._lView)}checkNoChanges(){return;try{this.exhaustive??=this._lView[mr].get(AC,Jg)}catch{this.exhaustive=Jg}}attachToViewContainerRef(){if(this._appRef)throw new _(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let t=co(this._lView),n=this._lView[Nn];n!==null&&!t&&sh(n,this._lView),vy(this._lView[N],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new _(902,!1);this._appRef=t;let n=co(this._lView),r=this._lView[Nn];r!==null&&!n&&ky(r,this._lView),Va(this._lView)}};var yo=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=rT;constructor(n,r,o){this._declarationLView=n,this._declarationTContainer=r,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}createEmbeddedViewImpl(n,r,o){let i=Bi(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:r,dehydratedView:o});return new jn(i)}}return e})();function rT(){return Nc(Te(),I())}function Nc(e,t){return e.type&4?new yo(t,e,Do(e,t)):null}function Vi(e,t,n,r,o){let i=e.data[t];if(i===null)i=oT(e,t,n,r,o),Sg()&&(i.flags|=32);else if(i.type&64){i.type=n,i.value=r,i.attrs=o;let s=wg();i.injectorIndex=s===null?-1:s.injectorIndex}return Fn(i,!0),i}function oT(e,t,n,r,o){let i=xd(),s=$a(),a=s?i:i&&i.parent,c=e.data[t]=sT(e,a,n,t,r,o);return iT(e,c,i,s),c}function iT(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function sT(e,t,n,r,o,i){let s=t?t.injectorIndex:-1,a=0;return Md()&&(a|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:i,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}var EU=new RegExp(`^(\\\\d+)*(${DI}|${EI})*(.*)`);function aT(e){let t=e[bd]??[],r=e[Ee][Q],o=[];for(let i of t)i.data[zv]!==void 0?o.push(i):cT(i,r);e[bd]=o}function cT(e,t){let n=0,r=e.firstChild;if(r){let o=e.data[$v];for(;n<o;){let i=r.nextSibling;ly(t,r,!1),r=i,n++}}}var lT=()=>null,uT=()=>null;function dc(e,t){return lT(e,t)}function Py(e,t,n){return uT(e,t,n)}var Fy=class{},Oc=class{},mf=class{resolveComponentFactory(t){throw new _(917,!1)}},Hi=class{static NULL=new mf},It=class{},Vn=(()=>{class e{destroyNode=null;static __NG_ELEMENT_ID__=()=>dT()}return e})();function dT(){let e=I(),t=Te(),n=dt(t.index,e);return(Bt(n)?n:e)[Q]}var Ly=(()=>{class e{static \\u0275prov=b({token:e,providedIn:\"root\",factory:()=>null})}return e})();var oc={},gf=class{injector;parentInjector;constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){let o=this.injector.get(t,oc,r);return o!==oc||n===oc?o:this.parentInjector.get(t,n,r)}};function vf(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(t!==null)for(let s=0;s<t.length;s++){let a=t[s];if(typeof a==\"number\")i=a;else if(i==1)o=Ra(o,a);else if(i==2){let c=a,l=t[++s];r=Ra(r,c+\": \"+l+\";\")}}n?e.styles=r:e.stylesWithoutHost=r,n?e.classes=o:e.classesWithoutHost=o}function oe(e,t=0){let n=I();if(n===null)return S(e,t);let r=Te();return Ov(r,n,Re(e),t)}function uh(e,t,n,r,o){let i=r===null?null:{\"\":-1},s=o(e,n);if(s!==null){let a=s,c=null,l=null;for(let u of s)if(u.resolveHostDirectives!==null){[a,c,l]=u.resolveHostDirectives(s);break}pT(e,t,n,a,i,c,l)}i!==null&&r!==null&&fT(n,r,i)}function fT(e,t,n){let r=e.localNames=[];for(let o=0;o<t.length;o+=2){let i=n[t[o+1]];if(i==null)throw new _(-301,!1);r.push(t[o],i)}}function hT(e,t,n){t.componentOffset=n,(e.components??=[]).push(t.index)}function pT(e,t,n,r,o,i,s){let a=r.length,c=!1;for(let p=0;p<a;p++){let f=r[p];!c&&Ut(f)&&(c=!0,hT(e,n,p)),Xd(lc(n,t),e,f.type)}_T(n,e.data.length,a);for(let p=0;p<a;p++){let f=r[p];f.providersResolver&&f.providersResolver(f)}let l=!1,u=!1,d=fy(e,t,a,null);a>0&&(n.directiveToIndex=new Map);for(let p=0;p<a;p++){let f=r[p];if(n.mergedAttrs=go(n.mergedAttrs,f.hostAttrs),gT(e,n,t,d,f),bT(d,f,o),s!==null&&s.has(f)){let[y,D]=s.get(f);n.directiveToIndex.set(f.type,[d,y+n.directiveStart,D+n.directiveStart])}else(i===null||!i.has(f))&&n.directiveToIndex.set(f.type,d);f.contentQueries!==null&&(n.flags|=4),(f.hostBindings!==null||f.hostAttrs!==null||f.hostVars!==0)&&(n.flags|=64);let g=f.type.prototype;!l&&(g.ngOnChanges||g.ngOnInit||g.ngDoCheck)&&((e.preOrderHooks??=[]).push(n.index),l=!0),!u&&(g.ngOnChanges||g.ngDoCheck)&&((e.preOrderCheckHooks??=[]).push(n.index),u=!0),d++}mT(e,n,i)}function mT(e,t,n){for(let r=t.directiveStart;r<t.directiveEnd;r++){let o=e.data[r];if(n===null||!n.has(o))tv(0,t,o,r),tv(1,t,o,r),rv(t,r,!1);else{let i=n.get(o);nv(0,t,i,r),nv(1,t,i,r),rv(t,r,!0)}}}function tv(e,t,n,r){let o=e===0?n.inputs:n.outputs;for(let i in o)if(o.hasOwnProperty(i)){let s;e===0?s=t.inputs??={}:s=t.outputs??={},s[i]??=[],s[i].push(r),jy(t,i)}}function nv(e,t,n,r){let o=e===0?n.inputs:n.outputs;for(let i in o)if(o.hasOwnProperty(i)){let s=o[i],a;e===0?a=t.hostDirectiveInputs??={}:a=t.hostDirectiveOutputs??={},a[s]??=[],a[s].push(r,i),jy(t,s)}}function jy(e,t){t===\"class\"?e.flags|=8:t===\"style\"&&(e.flags|=16)}function rv(e,t,n){let{attrs:r,inputs:o,hostDirectiveInputs:i}=e;if(r===null||!n&&o===null||n&&i===null||Qf(e)){e.initialInputs??=[],e.initialInputs.push(null);return}let s=null,a=0;for(;a<r.length;){let c=r[a];if(c===0){a+=4;continue}else if(c===5){a+=2;continue}else if(typeof c==\"number\")break;if(!n&&o.hasOwnProperty(c)){let l=o[c];for(let u of l)if(u===t){s??=[],s.push(c,r[a+1]);break}}else if(n&&i.hasOwnProperty(c)){let l=i[c];for(let u=0;u<l.length;u+=2)if(l[u]===t){s??=[],s.push(l[u+1],r[a+1]);break}}a+=2}e.initialInputs??=[],e.initialInputs.push(s)}function gT(e,t,n,r,o){e.data[r]=o;let i=o.factory||(o.factory=Mn(o.type,!0)),s=new Cr(i,Ut(o),oe);e.blueprint[r]=s,n[r]=s,vT(e,t,r,fy(e,n,o.hostVars,ke),o)}function vT(e,t,n,r,o){let i=o.hostBindings;if(i){let s=e.hostBindingOpCodes;s===null&&(s=e.hostBindingOpCodes=[]);let a=~t.index;yT(s)!=a&&s.push(a),s.push(n,r,i)}}function yT(e){let t=e.length;for(;t>0;){let n=e[--t];if(typeof n==\"number\"&&n<0)return n}return 0}function bT(e,t,n){if(n){if(t.exportAs)for(let r=0;r<t.exportAs.length;r++)n[t.exportAs[r]]=e;Ut(t)&&(n[\"\"]=e)}}function _T(e,t,n){e.flags|=1,e.directiveStart=t,e.directiveEnd=t+n,e.providerIndexes=t}function By(e,t,n,r,o,i,s,a){let c=t.consts,l=Et(c,s),u=Vi(t,e,2,r,l);return i&&uh(t,n,u,Et(c,a),o),u.mergedAttrs=go(u.mergedAttrs,u.attrs),u.attrs!==null&&vf(u,u.attrs,!1),u.mergedAttrs!==null&&vf(u,u.mergedAttrs,!0),t.queries!==null&&t.queries.elementStart(t,u),u}function Uy(e,t){jf(e,t),ja(t)&&e.queries.elementEnd(t)}function dh(e){return Hy(e)?Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e:!1}function Vy(e,t){if(Array.isArray(e))for(let n=0;n<e.length;n++)t(e[n]);else{let n=e[Symbol.iterator](),r;for(;!(r=n.next()).done;)t(r.value)}}function Hy(e){return e!==null&&(typeof e==\"function\"||typeof e==\"object\")}function kc(e,t,n){return e[t]=n}function ET(e,t){return e[t]}function Ye(e,t,n){if(n===ke)return!1;let r=e[t];return Object.is(r,n)?!1:(e[t]=n,!0)}function fh(e,t,n,r){let o=Ye(e,t,n);return Ye(e,t+1,r)||o}function DT(e,t,n,r,o){let i=fh(e,t,n,r);return Ye(e,t+2,o)||i}function Hd(e,t,n){return function r(o){let i=kn(e)?dt(e.index,t):t;lh(i,5);let s=t[he],a=ov(t,s,n,o),c=r.__ngNextListenerFn__;for(;c;)a=ov(t,s,c,o)&&a,c=c.__ngNextListenerFn__;return a}}function ov(e,t,n,r){let o=M(null);try{return W(6,t,n),n(r)!==!1}catch(i){return SC(e,i),!1}finally{W(7,t,n),M(o)}}function wT(e,t,n,r,o,i,s,a){let c=yi(e),l=!1,u=null;if(!r&&c&&(u=IT(t,n,i,e.index)),u!==null){let d=u.__ngLastListenerFn__||u;d.__ngNextListenerFn__=s,u.__ngLastListenerFn__=s,l=!0}else{let d=_t(e,n),p=r?r(d):d;II(n,p,i,a);let f=o.listen(p,i,a),g=r?y=>r(ut(y[e.index])):e.index;$y(g,t,n,i,a,f,!1)}return l}function IT(e,t,n,r){let o=e.cleanup;if(o!=null)for(let i=0;i<o.length-1;i+=2){let s=o[i];if(s===n&&o[i+1]===r){let a=t[so],c=o[i+2];return a&&a.length>c?a[c]:null}typeof s==\"string\"&&(i+=2)}return null}function $y(e,t,n,r,o,i,s){let a=t.firstCreatePass?Sd(t):null,c=Td(n),l=c.length;c.push(o,i),a&&a.push(r,e,l,(l+1)*(s?-1:1))}function iv(e,t,n,r,o,i){let s=t[n],a=t[N],l=a.data[n].outputs[r],d=s[l].subscribe(i);$y(e.index,a,t,o,i,d,!0)}var yf=Symbol(\"BINDING\");var fc=class extends Hi{ngModule;constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){let n=sn(t);return new Sr(n,this.ngModule)}};function CT(e){return Object.keys(e).map(t=>{let[n,r,o]=e[t],i={propName:n,templateName:t,isSignal:(r&Tc.SignalBased)!==0};return o&&(i.transform=o),i})}function TT(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function ST(e,t,n){let r=t instanceof ue?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new gf(n,r):n}function MT(e){let t=e.get(It,null);if(t===null)throw new _(407,!1);let n=e.get(Ly,null),r=e.get(at,null);return{rendererFactory:t,sanitizer:n,changeDetectionScheduler:r,ngReflect:!1}}function xT(e,t){let n=(e.selectors[0][0]||\"div\").toLowerCase();return ay(t,n,n===\"svg\"?_d:n===\"math\"?ug:null)}var Sr=class extends Oc{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=CT(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=TT(this.componentDef.outputs),this.cachedOutputs}constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=iC(t.selectors),this.ngContentSelectors=t.ngContentSelectors??[],this.isBoundToModule=!!n}create(t,n,r,o,i,s){W(22);let a=M(null);try{let c=this.componentDef,l=RT(r,c,s,i),u=ST(c,o||this.ngModule,t),d=MT(u),p=d.rendererFactory.createRenderer(null,c),f=r?gC(p,r,c.encapsulation,u):xT(c,p),g=s?.some(sv)||i?.some(w=>typeof w!=\"function\"&&w.bindings.some(sv)),y=Jf(null,l,null,512|dy(c),null,null,d,p,u,null,qv(f,u,!0));y[pe]=f,Za(y);let D=null;try{let w=By(pe,l,y,\"#host\",()=>l.directiveRegistry,!0,0);f&&(uy(p,f,w),wo(f,y)),Sc(l,y,w),$f(l,w,y),Uy(l,w),n!==void 0&&NT(w,this.ngContentSelectors,n),D=dt(w.index,y),y[he]=D[he],oh(l,y,null)}catch(w){throw D!==null&&ef(D),ef(y),w}finally{W(23),Ya()}return new hc(this.componentType,y,!!g)}finally{M(a)}}};function RT(e,t,n,r){let o=e?[\"ng-version\",\"20.0.5\"]:sC(t.selectors[0]),i=null,s=null,a=0;if(n)for(let u of n)a+=u[yf].requiredVars,u.create&&(u.targetIdx=0,(i??=[]).push(u)),u.update&&(u.targetIdx=0,(s??=[]).push(u));if(r)for(let u=0;u<r.length;u++){let d=r[u];if(typeof d!=\"function\")for(let p of d.bindings){a+=p[yf].requiredVars;let f=u+1;p.create&&(p.targetIdx=f,(i??=[]).push(p)),p.update&&(p.targetIdx=f,(s??=[]).push(p))}}let c=[t];if(r)for(let u of r){let d=typeof u==\"function\"?u:u.type,p=hd(d);c.push(p)}return Xf(0,null,AT(i,s),1,a,c,null,null,null,[o],null)}function AT(e,t){return!e&&!t?null:n=>{if(n&1&&e)for(let r of e)r.create();if(n&2&&t)for(let r of t)r.update()}}function sv(e){let t=e[yf].kind;return t===\"input\"||t===\"twoWay\"}var hc=class extends Fy{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(t,n,r){super(),this._rootLView=n,this._hasInputBindings=r,this._tNode=bi(n[N],pe),this.location=Do(this._tNode,n),this.instance=dt(this._tNode.index,n)[he],this.hostView=this.changeDetectorRef=new jn(n,void 0),this.componentType=t}setInput(t,n){this._hasInputBindings;let r=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(t)&&Object.is(this.previousInputValues.get(t),n))return;let o=this._rootLView,i=rh(r,o[N],o,t,n);this.previousInputValues.set(t,n);let s=dt(r.index,o);lh(s,1)}get injector(){return new Ir(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(t){this.hostView.onDestroy(t)}};function NT(e,t,n){let r=e.projection=[];for(let o=0;o<t.length;o++){let i=n[o];r.push(i!=null&&i.length?Array.from(i):null)}}var Hn=(()=>{class e{static __NG_ELEMENT_ID__=OT}return e})();function OT(){let e=Te();return Wy(e,I())}var kT=Hn,zy=class extends kT{_lContainer;_hostTNode;_hostLView;constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Do(this._hostTNode,this._hostLView)}get injector(){return new Ir(this._hostTNode,this._hostLView)}get parentInjector(){let t=Bf(this._hostTNode,this._hostLView);if(Sv(t)){let n=ac(t,this._hostLView),r=sc(t),o=n[N].data[r+8];return new Ir(o,n)}else return new Ir(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=av(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-Ce}createEmbeddedView(t,n,r){let o,i;typeof r==\"number\"?o=r:r!=null&&(o=r.index,i=r.injector);let s=dc(this._lContainer,t.ssrId),a=t.createEmbeddedViewImpl(n||{},i,s);return this.insertImpl(a,o,vo(this._hostTNode,s)),a}createComponent(t,n,r,o,i,s,a){let c=t&&!Kw(t),l;if(c)l=n;else{let D=n||{};l=D.index,r=D.injector,o=D.projectableNodes,i=D.environmentInjector||D.ngModuleRef,s=D.directives,a=D.bindings}let u=c?t:new Sr(sn(t)),d=r||this.parentInjector;if(!i&&u.ngModule==null){let w=(c?d:this.parentInjector).get(ue,null);w&&(i=w)}let p=sn(u.componentType??{}),f=dc(this._lContainer,p?.id??null),g=f?.firstChild??null,y=u.create(d,o,g,i,s,a);return this.insertImpl(y.hostView,l,vo(this._hostTNode,f)),y}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let o=t._lView;if(fg(o)){let a=this.indexOf(t);if(a!==-1)this.detach(a);else{let c=o[Ee],l=new zy(c,c[je],c[Ee]);l.detach(l.indexOf(t))}}let i=this._adjustIndex(n),s=this._lContainer;return Ui(s,o,i,r),t.attachToViewContainerRef(),ld($d(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=av(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=Ni(this._lContainer,n);r&&(pi($d(this._lContainer),n),xc(r[N],r))}detach(t){let n=this._adjustIndex(t,-1),r=Ni(this._lContainer,n);return r&&pi($d(this._lContainer),n)!=null?new jn(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function av(e){return e[vi]}function $d(e){return e[vi]||(e[vi]=[])}function Wy(e,t){let n,r=t[e.index];return bt(r)?n=r:(n=Ay(r,t,null,e),t[e.index]=n,eh(t,n)),FT(n,t,e,r),new zy(n,e,t)}function PT(e,t){let n=e[Q],r=n.createComment(\"\"),o=_t(t,e),i=n.parentNode(o);return uc(n,i,r,n.nextSibling(o),!1),r}var FT=BT,LT=()=>!1;function jT(e,t,n){return LT(e,t,n)}function BT(e,t,n,r){if(e[On])return;let o;n.type&8?o=ut(r):o=PT(t,n),e[On]=o}var bf=class e{queryList;matches=null;constructor(t){this.queryList=t}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},_f=class e{queries;constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,o=[];for(let i=0;i<r;i++){let s=n.getByIndex(i),a=this.queries[s.indexInDeclarationView];o.push(a.clone())}return new e(o)}return null}insertView(t){this.dirtyQueriesWithMatches(t)}detachView(t){this.dirtyQueriesWithMatches(t)}finishViewCreation(t){this.dirtyQueriesWithMatches(t)}dirtyQueriesWithMatches(t){for(let n=0;n<this.queries.length;n++)ph(t,n).matches!==null&&this.queries[n].setDirty()}},pc=class{flags;read;predicate;constructor(t,n,r=null){this.flags=n,this.read=r,typeof t==\"string\"?this.predicate=zT(t):this.predicate=t}},Ef=class e{queries;constructor(t=[]){this.queries=t}elementStart(t,n){for(let r=0;r<this.queries.length;r++)this.queries[r].elementStart(t,n)}elementEnd(t){for(let n=0;n<this.queries.length;n++)this.queries[n].elementEnd(t)}embeddedTView(t){let n=null;for(let r=0;r<this.length;r++){let o=n!==null?n.length:0,i=this.getByIndex(r).embeddedTView(t,o);i&&(i.indexInDeclarationView=r,n!==null?n.push(i):n=[i])}return n!==null?new e(n):null}template(t,n){for(let r=0;r<this.queries.length;r++)this.queries[r].template(t,n)}getByIndex(t){return this.queries[t]}get length(){return this.queries.length}track(t){this.queries.push(t)}},Df=class e{metadata;matches=null;indexInDeclarationView=-1;crossesNgTemplate=!1;_declarationNodeIndex;_appliesToNextNode=!0;constructor(t,n=-1){this.metadata=t,this._declarationNodeIndex=n}elementStart(t,n){this.isApplyingToNode(n)&&this.matchTNode(t,n)}elementEnd(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}template(t,n){this.elementStart(t,n)}embeddedTView(t,n){return this.isApplyingToNode(t)?(this.crossesNgTemplate=!0,this.addMatch(-t.index,n),new e(this.metadata)):null}isApplyingToNode(t){if(this._appliesToNextNode&&(this.metadata.flags&1)!==1){let n=this._declarationNodeIndex,r=t.parent;for(;r!==null&&r.type&8&&r.index!==n;)r=r.parent;return n===(r!==null?r.index:-1)}return this._appliesToNextNode}matchTNode(t,n){let r=this.metadata.predicate;if(Array.isArray(r))for(let o=0;o<r.length;o++){let i=r[o];this.matchTNodeWithReadOption(t,n,UT(n,i)),this.matchTNodeWithReadOption(t,n,rc(n,t,i,!1,!1))}else r===yo?n.type&4&&this.matchTNodeWithReadOption(t,n,-1):this.matchTNodeWithReadOption(t,n,rc(n,t,r,!1,!1))}matchTNodeWithReadOption(t,n,r){if(r!==null){let o=this.metadata.read;if(o!==null)if(o===me||o===Hn||o===yo&&n.type&4)this.addMatch(n.index,-2);else{let i=rc(n,t,o,!1,!1);i!==null&&this.addMatch(n.index,i)}else this.addMatch(n.index,r)}}addMatch(t,n){this.matches===null?this.matches=[t,n]:this.matches.push(t,n)}};function UT(e,t){let n=e.localNames;if(n!==null){for(let r=0;r<n.length;r+=2)if(n[r]===t)return n[r+1]}return null}function VT(e,t){return e.type&11?Do(e,t):e.type&4?Nc(e,t):null}function HT(e,t,n,r){return n===-1?VT(t,e):n===-2?$T(e,t,r):Ri(e,e[N],n,t)}function $T(e,t,n){if(n===me)return Do(t,e);if(n===yo)return Nc(t,e);if(n===Hn)return Wy(t,e)}function Gy(e,t,n,r){let o=t[jt].queries[r];if(o.matches===null){let i=e.data,s=n.matches,a=[];for(let c=0;s!==null&&c<s.length;c+=2){let l=s[c];if(l<0)a.push(null);else{let u=i[l];a.push(HT(t,u,s[c+1],n.metadata.read))}}o.matches=a}return o.matches}function wf(e,t,n,r){let o=e.queries.getByIndex(n),i=o.matches;if(i!==null){let s=Gy(e,t,o,n);for(let a=0;a<i.length;a+=2){let c=i[a];if(c>0)r.push(s[a/2]);else{let l=i[a+1],u=t[-c];for(let d=Ce;d<u.length;d++){let p=u[d];p[Nn]===p[Ee]&&wf(p[N],p,l,r)}if(u[br]!==null){let d=u[br];for(let p=0;p<d.length;p++){let f=d[p];wf(f[N],f,l,r)}}}}}return r}function hh(e,t){return e[jt].queries[t].queryList}function qy(e,t,n){let r=new Tr((n&4)===4);return mg(e,t,r,r.destroy),(t[jt]??=new _f).queries.push(new bf(r))-1}function Zy(e,t,n){let r=X();return r.firstCreatePass&&(Ky(r,new pc(e,t,n),-1),(t&2)===2&&(r.staticViewQueries=!0)),qy(r,I(),t)}function Yy(e,t,n,r){let o=X();if(o.firstCreatePass){let i=Te();Ky(o,new pc(t,n,r),i.index),WT(o,e),(n&2)===2&&(o.staticContentQueries=!0)}return qy(o,I(),n)}function zT(e){return e.split(\",\").map(t=>t.trim())}function Ky(e,t,n){e.queries===null&&(e.queries=new Ef),e.queries.track(new Df(t,n))}function WT(e,t){let n=e.contentQueries||(e.contentQueries=[]),r=n.length?n[n.length-1]:-1;t!==r&&n.push(e.queries.length-1,t)}function ph(e,t){return e.queries.getByIndex(t)}function Qy(e,t){let n=e[N],r=ph(n,t);return r.crossesNgTemplate?wf(n,e,t,[]):Gy(n,e,r,t)}function Xy(e,t,n){let r,o=ei(()=>{r._dirtyCounter();let i=GT(r,e);if(t&&i===void 0)throw new _(-951,!1);return i});return r=o[be],r._dirtyCounter=Ve(0),r._flatValue=void 0,o}function mh(e){return Xy(!0,!1,e)}function gh(e){return Xy(!0,!0,e)}function Jy(e,t){let n=e[be];n._lView=I(),n._queryIndex=t,n._queryList=hh(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(r=>r+1))}function GT(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[A]&4)return t?void 0:Oe;let o=hh(n,r),i=Qy(n,r);return o.reset(i,Fv),t?o.first:o._changesDetected||e._flatValue===void 0?e._flatValue=o.toArray():e._flatValue}var cv=new Set;function mn(e){cv.has(e)||(cv.add(e),performance?.mark?.(\"mark_feature_usage\",{detail:{feature:e}}))}var Mr=class{},Pc=class{};var mc=class extends Mr{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new fc(this);constructor(t,n,r,o=!0){super(),this.ngModuleType=t,this._parent=n;let i=fd(t);this._bootstrapComponents=oy(i.bootstrap),this._r3Injector=kd(t,n,[{provide:Mr,useValue:this},{provide:Hi,useValue:this.componentFactoryResolver},...r],Ze(t),new Set([\"environment\"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){let t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}},gc=class extends Pc{moduleType;constructor(t){super(),this.moduleType=t}create(t){return new mc(this.moduleType,t,[])}};var Oi=class extends Mr{injector;componentFactoryResolver=new fc(this);instance=null;constructor(t){super();let n=new dr([...t.providers,{provide:Mr,useValue:this},{provide:Hi,useValue:this.componentFactoryResolver}],t.parent||io(),t.debugName,new Set([\"environment\"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}};function $i(e,t,n=null){return new Oi({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var qT=(()=>{class e{_injector;cachedInjectors=new Map;constructor(n){this._injector=n}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=pd(!1,n.type),o=r.length>0?$i([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static \\u0275prov=b({token:e,providedIn:\"environment\",factory:()=>new e(S(ue))})}return e})();function nt(e){return Eo(()=>{let t=eb(e),n=U(v({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===Uf.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?o=>o.get(qT).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||un.Emulated,styles:e.styles||Oe,_:null,schemas:e.schemas||null,tView:null,id:\"\"});t.standalone&&mn(\"NgStandalone\"),tb(n);let r=e.dependencies;return n.directiveDefs=lv(r,!1),n.pipeDefs=lv(r,!0),n.id=XT(n),n})}function ZT(e){return sn(e)||hd(e)}function YT(e){return e!==null}function Se(e){return Eo(()=>({type:e.type,bootstrap:e.bootstrap||Oe,declarations:e.declarations||Oe,imports:e.imports||Oe,exports:e.exports||Oe,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function KT(e,t){if(e==null)return An;let n={};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r],i,s,a,c;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i,c=o[3]||null):(i=o,s=o,a=Tc.None,c=null),n[i]=[r,a,c],t[i]=s}return n}function QT(e){if(e==null)return An;let t={};for(let n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function we(e){return Eo(()=>{let t=eb(e);return tb(t),t})}function Fc(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function eb(e){let t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||An,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Oe,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,inputs:KT(e.inputs,t),outputs:QT(e.outputs),debugInfo:null}}function tb(e){e.features?.forEach(t=>t(e))}function lv(e,t){if(!e)return null;let n=t?ng:ZT;return()=>(typeof e==\"function\"?e():e).map(r=>n(r)).filter(YT)}function XT(e){let t=0,n=typeof e.consts==\"function\"?\"\":e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let i of r.join(\"|\"))t=Math.imul(31,t)+i.charCodeAt(0)<<0;return t+=2147483648,\"c\"+t}function JT(e){return Object.getPrototypeOf(e.prototype).constructor}function Co(e){let t=JT(e.type),n=!0,r=[e];for(;t;){let o;if(Ut(e))o=t.\\u0275cmp||t.\\u0275dir;else{if(t.\\u0275cmp)throw new _(903,!1);o=t.\\u0275dir}if(o){if(n){r.push(o);let s=e;s.inputs=zd(e.inputs),s.declaredInputs=zd(e.declaredInputs),s.outputs=zd(e.outputs);let a=o.hostBindings;a&&oS(e,a);let c=o.viewQuery,l=o.contentQueries;if(c&&nS(e,c),l&&rS(e,l),eS(e,o),Zm(e.outputs,o.outputs),Ut(o)&&o.data.animation){let u=e.data;u.animation=(u.animation||[]).concat(o.data.animation)}}let i=o.features;if(i)for(let s=0;s<i.length;s++){let a=i[s];a&&a.ngInherit&&a(e),a===Co&&(n=!1)}}t=Object.getPrototypeOf(t)}tS(r)}function eS(e,t){for(let n in t.inputs){if(!t.inputs.hasOwnProperty(n)||e.inputs.hasOwnProperty(n))continue;let r=t.inputs[n];r!==void 0&&(e.inputs[n]=r,e.declaredInputs[n]=t.declaredInputs[n])}}function tS(e){let t=0,n=null;for(let r=e.length-1;r>=0;r--){let o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=go(o.hostAttrs,n=go(n,o.hostAttrs))}}function zd(e){return e===An?{}:e===Oe?[]:e}function nS(e,t){let n=e.viewQuery;n?e.viewQuery=(r,o)=>{t(r,o),n(r,o)}:e.viewQuery=t}function rS(e,t){let n=e.contentQueries;n?e.contentQueries=(r,o,i)=>{t(r,o,i),n(r,o,i)}:e.contentQueries=t}function oS(e,t){let n=e.hostBindings;n?e.hostBindings=(r,o)=>{t(r,o),n(r,o)}:e.hostBindings=t}function iS(e,t,n,r,o,i,s,a,c){let l=t.consts,u=Vi(t,e,4,s||null,a||null);Ha()&&uh(t,n,u,Et(l,c),nh),u.mergedAttrs=go(u.mergedAttrs,u.attrs),jf(t,u);let d=u.tView=Xf(2,u,r,o,i,t.directiveRegistry,t.pipeRegistry,null,t.schemas,l,null);return t.queries!==null&&(t.queries.template(t,u),d.queries=t.queries.embeddedTView(u)),u}function bo(e,t,n,r,o,i,s,a,c,l,u){let d=n+pe,p=t.firstCreatePass?iS(d,t,e,r,o,i,s,a,l):t.data[d];c&&(p.flags|=c),Fn(p,!1);let f=sS(t,e,p,n);Ii()&&Rc(t,e,f,p),wo(f,e);let g=Ay(f,e,f,p);return e[d]=g,eh(e,g),jT(g,p,e),yi(p)&&Sc(t,e,p),l!=null&&th(e,p,u),p}function nb(e,t,n,r,o,i,s,a){let c=I(),l=X(),u=Et(l.consts,i);return bo(c,l,e,t,n,r,o,u,void 0,s,a),nb}var sS=aS;function aS(e,t,n,r){return Ci(!0),t[Q].createComment(\"\")}var Lc=function(e){return e[e.CHANGE_DETECTION=0]=\"CHANGE_DETECTION\",e[e.AFTER_NEXT_RENDER=1]=\"AFTER_NEXT_RENDER\",e}(Lc||{}),$n=new E(\"\"),rb=!1,If=class extends V{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(t=!1){super(),this.__isAsync=t,cg()&&(this.destroyRef=h(tt,{optional:!0})??void 0,this.pendingTasks=h(ln,{optional:!0})??void 0)}emit(t){let n=M(null);try{super.next(t)}finally{M(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&typeof t==\"object\"){let c=t;o=c.next?.bind(c),i=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));let a=super.subscribe({next:o,error:i,complete:s});return t instanceof ie&&t.add(a),a}wrapInTimeout(t){return n=>{let r=this.pendingTasks?.add();setTimeout(()=>{try{t(n)}finally{r!==void 0&&this.pendingTasks?.remove(r)}})}}},de=If;function ob(e){let t,n;function r(){e=Dr;try{n!==void 0&&typeof cancelAnimationFrame==\"function\"&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==\"function\"&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function uv(e){return queueMicrotask(()=>e()),()=>{e=Dr}}var vh=\"isAngularZone\",vc=vh+\"_ID\",cS=0,B=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new de(!1);onMicrotaskEmpty=new de(!1);onStable=new de(!1);onError=new de(!1);constructor(t){let{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=rb}=t;if(typeof Zone>\"u\")throw new _(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,dS(s)}static isInAngularZone(){return typeof Zone<\"u\"&&Zone.current.get(vh)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new _(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new _(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){let i=this._inner,s=i.scheduleEventTask(\"NgZoneEvent: \"+o,t,lS,Dr,Dr);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}},lS={};function yh(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function uS(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){ob(()=>{e.callbackScheduled=!1,Cf(e),e.isCheckStableRunning=!0,yh(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Cf(e)}function dS(e){let t=()=>{uS(e)},n=cS++;e._inner=e._inner.fork({name:\"angular\",properties:{[vh]:!0,[vc]:n,[vc+n]:!0},onInvokeTask:(r,o,i,s,a,c)=>{if(fS(c))return r.invokeTask(i,s,a,c);try{return dv(e),r.invokeTask(i,s,a,c)}finally{(e.shouldCoalesceEventChangeDetection&&s.type===\"eventTask\"||e.shouldCoalesceRunChangeDetection)&&t(),fv(e)}},onInvoke:(r,o,i,s,a,c,l)=>{try{return dv(e),r.invoke(i,s,a,c,l)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!hS(c)&&t(),fv(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&(s.change==\"microTask\"?(e._hasPendingMicrotasks=s.microTask,Cf(e),yh(e)):s.change==\"macroTask\"&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function Cf(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function dv(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function fv(e){e._nesting--,yh(e)}var yc=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new de;onMicrotaskEmpty=new de;onStable=new de;onError=new de;run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}};function fS(e){return ib(e,\"__ignore_ng_zone__\")}function hS(e){return ib(e,\"__scheduler_tick__\")}function ib(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var jc=(()=>{class e{impl=null;execute(){this.impl?.execute()}static \\u0275prov=b({token:e,providedIn:\"root\",factory:()=>new e})}return e})(),bh=[0,1,2,3],_h=(()=>{class e{ngZone=h(B);scheduler=h(at);errorHandler=h(Je,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){h($n,{optional:!0})}execute(){let n=this.sequences.size>0;n&&W(16),this.executing=!0;for(let r of bh)for(let o of this.sequences)if(!(o.erroredOrDestroyed||!o.hooks[r]))try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let i=o.hooks[r];return i(o.pipelinedValue)},o.snapshot))}catch(i){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(i)}this.executing=!1;for(let r of this.sequences)r.afterRun(),r.once&&(this.sequences.delete(r),r.destroy());for(let r of this.deferredRegistrations)this.sequences.add(r);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),n&&W(17)}register(n){let{view:r}=n;r!==void 0?((r[yr]??=[]).push(n),Pn(r),r[A]|=8192):this.executing?this.deferredRegistrations.add(n):this.addSequence(n)}addSequence(n){this.sequences.add(n),this.scheduler.notify(7)}unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestroyed=!0,n.pipelinedValue=void 0,n.once=!0):(this.sequences.delete(n),this.deferredRegistrations.delete(n))}maybeTrace(n,r){return r?r.run(Lc.AFTER_NEXT_RENDER,n):n()}static \\u0275prov=b({token:e,providedIn:\"root\",factory:()=>new e})}return e})(),ki=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(t,n,r,o,i,s=null){this.impl=t,this.hooks=n,this.view=r,this.once=o,this.snapshot=s,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let t=this.view?.[yr];t&&(this.view[yr]=t.filter(n=>n!==this))}};function Bc(e,t){let n=t?.injector??h(ae);return mn(\"NgAfterNextRender\"),mS(e,n,t,!0)}function pS(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function mS(e,t,n,r){let o=t.get(jc);o.impl??=t.get(_h);let i=t.get($n,null,{optional:!0}),s=n?.manualCleanup!==!0?t.get(tt):null,a=t.get(Er,null,{optional:!0}),c=new ki(o.impl,pS(e),a?.view,r,s,i?.snapshot(null));return o.impl.register(c),c}var Uc=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"platform\"})}return e})();var Eh=new E(\"\");function To(e){return!!e&&typeof e.then==\"function\"}function Dh(e){return!!e&&typeof e.subscribe==\"function\"}var wh=new E(\"\");function sb(e){return vt([{provide:wh,multi:!0,useValue:e}])}var Ih=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r});appInits=h(wh,{optional:!0})??[];injector=h(ae);constructor(){}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let i=Le(this.injector,o);if(To(i))n.push(i);else if(Dh(i)){let s=new Promise((a,c)=>{i.subscribe({complete:a,error:c})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),Vc=new E(\"\");function ab(){Du(()=>{let e=\"\";throw new _(600,e)})}function cb(e){return e.isBoundToModule}var gS=10;var zt=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=h(Ue);afterRenderManager=h(jc);zonelessEnabled=h(ho);rootEffectScheduler=h(Si);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new V;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=h(ln);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(T(n=>!n))}constructor(){h($n,{optional:!0})}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{n.unsubscribe()})}_injector=h(ue);_rendererFactory=null;get injector(){return this._injector}bootstrap(n,r){return this.bootstrapImpl(n,r)}bootstrapImpl(n,r,o=ae.NULL){return this._injector.get(B).run(()=>{W(10);let s=n instanceof Oc;if(!this._injector.get(Ih).done){let g=\"\";throw new _(405,g)}let c;s?c=n:c=this._injector.get(Hi).resolveComponentFactory(n),this.componentTypes.push(c.componentType);let l=cb(c)?void 0:this._injector.get(Mr),u=r||c.selector,d=c.create(o,[],u,l),p=d.location.nativeElement,f=d.injector.get(Eh,null);return f?.registerApplication(p),d.onDestroy(()=>{this.detachView(d.hostView),xi(this.components,d),f?.unregisterApplication(p)}),this._loadComponent(d),W(11,d),d})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){W(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(Lc.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw new _(101,!1);let n=M(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,M(n),this.afterTick.next(),W(13)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(It,null,{optional:!0}));let n=0;for(;this.dirtyFlags!==0&&n++<gS;)W(14),this.synchronizeOnce(),W(15)}synchronizeOnce(){this.dirtyFlags&16&&(this.dirtyFlags&=-17,this.rootEffectScheduler.flush());let n=!1;if(this.dirtyFlags&7){let r=!!(this.dirtyFlags&1);this.dirtyFlags&=-8,this.dirtyFlags|=8;for(let{_lView:o}of this.allViews){if(!r&&!_i(o))continue;let i=r&&!this.zonelessEnabled?0:1;ch(o,i),n=!0}if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),this.dirtyFlags&23)return}n||(this._rendererFactory?.begin?.(),this._rendererFactory?.end?.()),this.dirtyFlags&8&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){if(this.allViews.some(({_lView:n})=>_i(n))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;xi(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(n),this._injector.get(Vc,[]).forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>xi(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new _(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function xi(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function Rr(e,t,n,r){let o=I(),i=cn();if(Ye(o,i,t)){let s=X(),a=wi();IC(a,o,e,t,n,r)}return Rr}var Tf=class{destroy(t){}updateValue(t,n){}swap(t,n){let r=Math.min(t,n),o=Math.max(t,n),i=this.detach(o);if(o-r>1){let s=this.detach(r);this.attach(r,i),this.attach(o,s)}else this.attach(r,i)}move(t,n){this.attach(n,this.detach(t))}};function Wd(e,t,n,r,o){return e===n&&Object.is(t,r)?1:Object.is(o(e,t),o(n,r))?-1:0}function vS(e,t,n){let r,o,i=0,s=e.length-1,a=void 0;if(Array.isArray(t)){let c=t.length-1;for(;i<=s&&i<=c;){let l=e.at(i),u=t[i],d=Wd(i,l,i,u,n);if(d!==0){d<0&&e.updateValue(i,u),i++;continue}let p=e.at(s),f=t[c],g=Wd(s,p,c,f,n);if(g!==0){g<0&&e.updateValue(s,f),s--,c--;continue}let y=n(i,l),D=n(s,p),w=n(i,u);if(Object.is(w,D)){let K=n(c,f);Object.is(K,y)?(e.swap(i,s),e.updateValue(s,f),c--,s--):e.move(s,i),e.updateValue(i,u),i++;continue}if(r??=new bc,o??=pv(e,i,s,n),Sf(e,r,i,w))e.updateValue(i,u),i++,s++;else if(o.has(w))r.set(y,e.detach(i)),s--;else{let K=e.create(i,t[i]);e.attach(i,K),i++,s++}}for(;i<=c;)hv(e,r,n,i,t[i]),i++}else if(t!=null){let c=t[Symbol.iterator](),l=c.next();for(;!l.done&&i<=s;){let u=e.at(i),d=l.value,p=Wd(i,u,i,d,n);if(p!==0)p<0&&e.updateValue(i,d),i++,l=c.next();else{r??=new bc,o??=pv(e,i,s,n);let f=n(i,d);if(Sf(e,r,i,f))e.updateValue(i,d),i++,s++,l=c.next();else if(!o.has(f))e.attach(i,e.create(i,d)),i++,s++,l=c.next();else{let g=n(i,u);r.set(g,e.detach(i)),s--}}}for(;!l.done;)hv(e,r,n,e.length,l.value),l=c.next()}for(;i<=s;)e.destroy(e.detach(s--));r?.forEach(c=>{e.destroy(c)})}function Sf(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function hv(e,t,n,r,o){if(Sf(e,t,r,n(r,o)))e.updateValue(r,o);else{let i=e.create(r,o);e.attach(r,i)}}function pv(e,t,n,r){let o=new Set;for(let i=t;i<=n;i++)o.add(r(i,e.at(i)));return o}var bc=class{kvMap=new Map;_vMap=void 0;has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;let n=this.kvMap.get(t);return this._vMap!==void 0&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let r=this.kvMap.get(t);this._vMap===void 0&&(this._vMap=new Map);let o=this._vMap;for(;o.has(r);)r=o.get(r);o.set(r,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,r]of this.kvMap)if(t(r,n),this._vMap!==void 0){let o=this._vMap;for(;o.has(r);)r=o.get(r),t(r,n)}}};function yS(e,t,n,r,o,i,s,a){mn(\"NgControlFlow\");let c=I(),l=X(),u=Et(l.consts,i);return bo(c,l,e,t,n,r,o,u,256,s,a),Ch}function Ch(e,t,n,r,o,i,s,a){mn(\"NgControlFlow\");let c=I(),l=X(),u=Et(l.consts,i);return bo(c,l,e,t,n,r,o,u,512,s,a),Ch}function bS(e,t){mn(\"NgControlFlow\");let n=I(),r=cn(),o=n[r]!==ke?n[r]:-1,i=o!==-1?_c(n,pe+o):void 0,s=0;if(Ye(n,r,e)){let a=M(null);try{if(i!==void 0&&Oy(i,s),e!==-1){let c=pe+e,l=_c(n,c),u=Af(n[N],c),d=Py(l,u,n),p=Bi(n,u,t,{dehydratedView:d});Ui(l,p,s,vo(u,d))}}finally{M(a)}}else if(i!==void 0){let a=Ny(i,s);a!==void 0&&(a[he]=t)}}var Mf=class{lContainer;$implicit;$index;constructor(t,n,r){this.lContainer=t,this.$implicit=n,this.$index=r}get $count(){return this.lContainer.length-Ce}};function _S(e){return e}function ES(e,t){return t}var xf=class{hasEmptyBlock;trackByFn;liveCollection;constructor(t,n,r){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=r}};function DS(e,t,n,r,o,i,s,a,c,l,u,d,p){mn(\"NgControlFlow\");let f=I(),g=X(),y=c!==void 0,D=I(),w=a?s.bind(D[Be][he]):s,K=new xf(y,w);D[pe+e]=K,bo(f,g,e+1,t,n,r,o,Et(g.consts,i),256),y&&bo(f,g,e+2,c,l,u,d,Et(g.consts,p),512)}var Rf=class extends Tf{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(t,n,r){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=r}get length(){return this.lContainer.length-Ce}at(t){return this.getLView(t)[he].$implicit}attach(t,n){let r=n[pr];this.needsIndexUpdate||=t!==this.length,Ui(this.lContainer,n,t,vo(this.templateTNode,r))}detach(t){return this.needsIndexUpdate||=t!==this.length-1,IS(this.lContainer,t)}create(t,n){let r=dc(this.lContainer,this.templateTNode.tView.ssrId),o=Bi(this.hostLView,this.templateTNode,new Mf(this.lContainer,n,t),{dehydratedView:r});return this.operationsCounter?.recordCreate(),o}destroy(t){xc(t[N],t),this.operationsCounter?.recordDestroy()}updateValue(t,n){this.getLView(t)[he].$implicit=n}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t<this.length;t++)this.getLView(t)[he].$index=t}getLView(t){return CS(this.lContainer,t)}};function wS(e){let t=M(null),n=Vt();try{let r=I(),o=r[N],i=r[n],s=n+1,a=_c(r,s);if(i.liveCollection===void 0){let l=Af(o,s);i.liveCollection=new Rf(a,r,l)}else i.liveCollection.reset();let c=i.liveCollection;if(vS(c,e,i.trackByFn),c.updateIndexes(),i.hasEmptyBlock){let l=cn(),u=c.length===0;if(Ye(r,l,u)){let d=n+2,p=_c(r,d);if(u){let f=Af(o,d),g=Py(p,f,r),y=Bi(r,f,void 0,{dehydratedView:g});Ui(p,y,0,vo(f,g))}else o.firstUpdatePass&&aT(p),Oy(p,0)}}}finally{M(t)}}function _c(e,t){return e[t]}function IS(e,t){return Ni(e,t)}function CS(e,t){return Ny(e,t)}function Af(e,t){return bi(e,t)}function lb(e,t,n){let r=I(),o=cn();if(Ye(r,o,t)){let i=X(),s=wi();my(s,r,e,t,r[Q],n)}return lb}function Nf(e,t,n,r,o){rh(t,e,n,o?\"class\":\"style\",r)}function zi(e,t,n,r){let o=I(),i=X(),s=pe+e,a=o[Q],c=i.firstCreatePass?By(s,i,o,t,nh,Ha(),n,r):i.data[s],l=TS(i,o,c,a,t,e);o[s]=l;let u=yi(c);return Fn(c,!0),uy(a,l,c),!Mc(c)&&Ii()&&Rc(i,o,l,c),(gg()===0||u)&&wo(l,o),vg(),u&&(Sc(i,o,c),$f(i,c,o)),r!==null&&th(o,c),zi}function Wi(){let e=Te();$a()?za():(e=e.parent,Fn(e,!1));let t=e;bg(t)&&_g(),yg();let n=X();return n.firstCreatePass&&Uy(n,t),t.classesWithoutHost!=null&&nI(t)&&Nf(n,t,I(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&rI(t)&&Nf(n,t,I(),t.stylesWithoutHost,!1),Wi}function Wt(e,t,n,r){return zi(e,t,n,r),Wi(),Wt}var TS=(e,t,n,r,o,i)=>(Ci(!0),ay(r,o,Lg()));function SS(e,t,n,r,o){let i=t.consts,s=Et(i,r),a=Vi(t,e,8,\"ng-container\",s);s!==null&&vf(a,s,!0);let c=Et(i,o);return Ha()&&uh(t,n,a,c,nh),a.mergedAttrs=go(a.mergedAttrs,a.attrs),t.queries!==null&&t.queries.elementStart(t,a),a}function Th(e,t,n){let r=I(),o=X(),i=e+pe,s=o.firstCreatePass?SS(i,o,r,t,n):o.data[i];Fn(s,!0);let a=MS(o,r,s,e);return r[i]=a,Ii()&&Rc(o,r,a,s),wo(a,r),yi(s)&&(Sc(o,r,s),$f(o,s,r)),n!=null&&th(r,s),Th}function Sh(){let e=Te(),t=X();return $a()?za():(e=e.parent,Fn(e,!1)),t.firstCreatePass&&(jf(t,e),ja(e)&&t.queries.elementEnd(e)),Sh}function ub(e,t,n){return Th(e,t,n),Sh(),ub}var MS=(e,t,n,r)=>(Ci(!0),lC(t[Q],\"\"));function xS(){return I()}function db(e,t,n){let r=I(),o=cn();if(Ye(r,o,t)){let i=X(),s=wi();gy(s,r,e,t,r[Q],n)}return db}var wr=void 0;function RS(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\\.?/,\"\").length;return t===1&&n===0?1:5}var AS=[\"en\",[[\"a\",\"p\"],[\"AM\",\"PM\"],wr],[[\"AM\",\"PM\"],wr,wr],[[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]],wr,[[\"J\",\"F\",\"M\",\"A\",\"M\",\"J\",\"J\",\"A\",\"S\",\"O\",\"N\",\"D\"],[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]],wr,[[\"B\",\"A\"],[\"BC\",\"AD\"],[\"Before Christ\",\"Anno Domini\"]],0,[6,0],[\"M/d/yy\",\"MMM d, y\",\"MMMM d, y\",\"EEEE, MMMM d, y\"],[\"h:mm a\",\"h:mm:ss a\",\"h:mm:ss a z\",\"h:mm:ss a zzzz\"],[\"{1}, {0}\",wr,\"{1} 'at' {0}\",wr],[\".\",\",\",\";\",\"%\",\"+\",\"-\",\"E\",\"\\xD7\",\"\\u2030\",\"\\u221E\",\"NaN\",\":\"],[\"#,##0.###\",\"#,##0%\",\"\\xA4#,##0.00\",\"#E0\"],\"USD\",\"$\",\"US Dollar\",{},\"ltr\",RS],Gd={};function He(e){let t=NS(e),n=mv(t);if(n)return n;let r=t.split(\"-\")[0];if(n=mv(r),n)return n;if(r===\"en\")return AS;throw new _(701,!1)}function mv(e){return e in Gd||(Gd[e]=ct.ng&&ct.ng.common&&ct.ng.common.locales&&ct.ng.common.locales[e]),Gd[e]}var ce=function(e){return e[e.LocaleId=0]=\"LocaleId\",e[e.DayPeriodsFormat=1]=\"DayPeriodsFormat\",e[e.DayPeriodsStandalone=2]=\"DayPeriodsStandalone\",e[e.DaysFormat=3]=\"DaysFormat\",e[e.DaysStandalone=4]=\"DaysStandalone\",e[e.MonthsFormat=5]=\"MonthsFormat\",e[e.MonthsStandalone=6]=\"MonthsStandalone\",e[e.Eras=7]=\"Eras\",e[e.FirstDayOfWeek=8]=\"FirstDayOfWeek\",e[e.WeekendRange=9]=\"WeekendRange\",e[e.DateFormat=10]=\"DateFormat\",e[e.TimeFormat=11]=\"TimeFormat\",e[e.DateTimeFormat=12]=\"DateTimeFormat\",e[e.NumberSymbols=13]=\"NumberSymbols\",e[e.NumberFormats=14]=\"NumberFormats\",e[e.CurrencyCode=15]=\"CurrencyCode\",e[e.CurrencySymbol=16]=\"CurrencySymbol\",e[e.CurrencyName=17]=\"CurrencyName\",e[e.Currencies=18]=\"Currencies\",e[e.Directionality=19]=\"Directionality\",e[e.PluralCase=20]=\"PluralCase\",e[e.ExtraData=21]=\"ExtraData\",e}(ce||{});function NS(e){return e.toLowerCase().replace(/_/g,\"-\")}var Gi=\"en-US\",OS=\"USD\";var kS=Gi;function fb(e){typeof e==\"string\"&&(kS=e.toLowerCase().replace(/_/g,\"-\"))}function Hc(e,t,n){let r=I(),o=X(),i=Te();return hb(o,r,r[Q],i,e,t,n),Hc}function hb(e,t,n,r,o,i,s){let a=!0,c=null;if((r.type&3||s)&&(c??=Hd(r,t,i),wT(r,e,t,s,n,o,i,c)&&(a=!1)),a){let l=r.outputs?.[o],u=r.hostDirectiveOutputs?.[o];if(u&&u.length)for(let d=0;d<u.length;d+=2){let p=u[d],f=u[d+1];c??=Hd(r,t,i),iv(r,t,p,f,o,c)}if(l&&l.length)for(let d of l)c??=Hd(r,t,i),iv(r,t,d,o,o,c)}}function PS(e=1){return kg(e)}function FS(e,t){let n=null,r=eC(e);for(let o=0;o<t.length;o++){let i=t[o];if(i===\"*\"){n=o;continue}if(r===null?sy(e,i,!0):rC(r,i))return o}return n}function qi(e){let t=I()[Be][je];if(!t.projection){let n=e?e.length:1,r=t.projection=eg(n,null),o=r.slice(),i=t.child;for(;i!==null;){if(i.type!==128){let s=e?FS(i,e):0;s!==null&&(o[s]?o[s].projectionNext=i:r[s]=i,o[s]=i)}i=i.next}}}function Ar(e,t=0,n,r,o,i){let s=I(),a=X(),c=r?e+1:null;c!==null&&bo(s,a,c,r,o,i,null,n);let l=Vi(a,pe+e,16,null,n||null);l.projection===null&&(l.projection=t),za();let d=!s[pr]||Md();s[Be][je].projection[l.projection]===null&&c!==null?LS(s,a,c):d&&!Mc(l)&&VC(a,s,l)}function LS(e,t,n){let r=pe+n,o=t.data[r],i=e[r],s=dc(i,o.tView.ssrId),a=Bi(e,o,void 0,{dehydratedView:s});Ui(i,a,0,vo(o,s))}function Mh(e,t,n,r){Yy(e,t,n,r)}function jS(e,t,n){Zy(e,t,n)}function xh(e){let t=I(),n=X(),r=qa();Di(r+1);let o=ph(n,r);if(e.dirty&&dg(t)===((o.metadata.flags&2)===2)){if(o.matches===null)e.reset([]);else{let i=Qy(t,r);e.reset(i,Fv),e.notifyOnChanges()}return!0}return!1}function Rh(){return hh(I(),qa())}function BS(e,t,n,r,o){Jy(t,Yy(e,n,r,o))}function US(e,t,n,r){Jy(e,Zy(t,n,r))}function VS(e=1){Di(qa()+e)}function HS(e){let t=Ig();return Ba(t,pe+e)}function ec(e,t){return e<<17|t<<2}function xr(e){return e>>17&32767}function $S(e){return(e&2)==2}function zS(e,t){return e&131071|t<<17}function Of(e){return e|2}function _o(e){return(e&131068)>>2}function qd(e,t){return e&-131069|t<<2}function WS(e){return(e&1)===1}function kf(e){return e|1}function GS(e,t,n,r,o,i){let s=i?t.classBindings:t.styleBindings,a=xr(s),c=_o(s);e[r]=n;let l=!1,u;if(Array.isArray(n)){let d=n;u=d[1],(u===null||oo(d,u)>0)&&(l=!0)}else u=n;if(o)if(c!==0){let p=xr(e[a+1]);e[r+1]=ec(p,a),p!==0&&(e[p+1]=qd(e[p+1],r)),e[a+1]=zS(e[a+1],r)}else e[r+1]=ec(a,0),a!==0&&(e[a+1]=qd(e[a+1],r)),a=r;else e[r+1]=ec(c,0),a===0?a=r:e[c+1]=qd(e[c+1],r),c=r;l&&(e[r+1]=Of(e[r+1])),gv(e,u,r,!0),gv(e,u,r,!1),qS(t,u,e,r,i),s=ec(a,c),i?t.classBindings=s:t.styleBindings=s}function qS(e,t,n,r,o){let i=o?e.residualClasses:e.residualStyles;i!=null&&typeof t==\"string\"&&oo(i,t)>=0&&(n[r+1]=kf(n[r+1]))}function gv(e,t,n,r){let o=e[n+1],i=t===null,s=r?xr(o):_o(o),a=!1;for(;s!==0&&(a===!1||i);){let c=e[s],l=e[s+1];ZS(c,t)&&(a=!0,e[s+1]=r?kf(l):Of(l)),s=r?xr(l):_o(l)}a&&(e[n+1]=r?Of(o):kf(o))}function ZS(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==\"string\"?oo(e,t)>=0:!1}var wt={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function YS(e){return e.substring(wt.key,wt.keyEnd)}function KS(e){return QS(e),pb(e,mb(e,0,wt.textEnd))}function pb(e,t){let n=wt.textEnd;return n===t?-1:(t=wt.keyEnd=XS(e,wt.key=t,n),mb(e,t,n))}function QS(e){wt.key=0,wt.keyEnd=0,wt.value=0,wt.valueEnd=0,wt.textEnd=e.length}function mb(e,t,n){for(;t<n&&e.charCodeAt(t)<=32;)t++;return t}function XS(e,t,n){for(;t<n&&e.charCodeAt(t)>32;)t++;return t}function gb(e,t,n){return vb(e,t,n,!1),gb}function zn(e,t){return vb(e,t,null,!0),zn}function Ah(e){eM(sM,JS,e,!0)}function JS(e,t){for(let n=KS(t);n>=0;n=pb(t,n))Pa(e,YS(t),!0)}function vb(e,t,n,r){let o=I(),i=X(),s=Wa(2);if(i.firstUpdatePass&&bb(i,e,s,r),t!==ke&&Ye(o,s,t)){let a=i.data[Vt()];_b(i,a,o,o[Q],e,o[s+1]=cM(t,n),r,s)}}function eM(e,t,n,r){let o=X(),i=Wa(2);o.firstUpdatePass&&bb(o,null,i,r);let s=I();if(n!==ke&&Ye(s,i,n)){let a=o.data[Vt()];if(Eb(a,r)&&!yb(o,i)){let c=r?a.classesWithoutHost:a.stylesWithoutHost;c!==null&&(n=Ra(c,n||\"\")),Nf(o,a,s,n,r)}else aM(o,a,s,s[Q],s[i+1],s[i+1]=iM(e,t,n),r,i)}}function yb(e,t){return t>=e.expandoStartIndex}function bb(e,t,n,r){let o=e.data;if(o[n+1]===null){let i=o[Vt()],s=yb(e,n);Eb(i,r)&&t===null&&!s&&(t=!1),t=tM(o,i,t,r),GS(o,i,t,n,s,r)}}function tM(e,t,n,r){let o=Rg(e),i=r?t.residualClasses:t.residualStyles;if(o===null)(r?t.classBindings:t.styleBindings)===0&&(n=Zd(null,e,t,n,r),n=Pi(n,t.attrs,r),i=null);else{let s=t.directiveStylingLast;if(s===-1||e[s]!==o)if(n=Zd(o,e,t,n,r),i===null){let c=nM(e,t,r);c!==void 0&&Array.isArray(c)&&(c=Zd(null,e,t,c[1],r),c=Pi(c,t.attrs,r),rM(e,t,r,c))}else i=oM(e,t,r)}return i!==void 0&&(r?t.residualClasses=i:t.residualStyles=i),n}function nM(e,t,n){let r=n?t.classBindings:t.styleBindings;if(_o(r)!==0)return e[xr(r)]}function rM(e,t,n,r){let o=n?t.classBindings:t.styleBindings;e[xr(o)]=r}function oM(e,t,n){let r,o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i<o;i++){let s=e[i].hostAttrs;r=Pi(r,s,n)}return Pi(r,t.attrs,n)}function Zd(e,t,n,r,o){let i=null,s=n.directiveEnd,a=n.directiveStylingLast;for(a===-1?a=n.directiveStart:a++;a<s&&(i=t[a],r=Pi(r,i.hostAttrs,o),i!==e);)a++;return e!==null&&(n.directiveStylingLast=a),r}function Pi(e,t,n){let r=n?1:2,o=-1;if(t!==null)for(let i=0;i<t.length;i++){let s=t[i];typeof s==\"number\"?o=s:o===r&&(Array.isArray(e)||(e=e===void 0?[]:[\"\",e]),Pa(e,s,n?!0:t[++i]))}return e===void 0?null:e}function iM(e,t,n){if(n==null||n===\"\")return Oe;let r=[],o=Ct(n);if(Array.isArray(o))for(let i=0;i<o.length;i++)e(r,o[i],!0);else if(typeof o==\"object\")for(let i in o)o.hasOwnProperty(i)&&e(r,i,o[i]);else typeof o==\"string\"&&t(r,o);return r}function sM(e,t,n){let r=String(t);r!==\"\"&&!r.includes(\" \")&&Pa(e,r,n)}function aM(e,t,n,r,o,i,s,a){o===ke&&(o=Oe);let c=0,l=0,u=0<o.length?o[0]:null,d=0<i.length?i[0]:null;for(;u!==null||d!==null;){let p=c<o.length?o[c+1]:void 0,f=l<i.length?i[l+1]:void 0,g=null,y;u===d?(c+=2,l+=2,p!==f&&(g=d,y=f)):d===null||u!==null&&u<d?(c+=2,g=u):(l+=2,g=d,y=f),g!==null&&_b(e,t,n,r,g,y,s,a),u=c<o.length?o[c]:null,d=l<i.length?i[l]:null}}function _b(e,t,n,r,o,i,s,a){if(!(t.type&3))return;let c=e.data,l=c[a+1],u=WS(l)?vv(c,t,n,o,_o(l),s):void 0;if(!Ec(u)){Ec(i)||$S(l)&&(i=vv(c,null,n,o,a,s));let d=Ed(Vt(),n);$C(r,s,d,o,i)}}function vv(e,t,n,r,o,i){let s=t===null,a;for(;o>0;){let c=e[o],l=Array.isArray(c),u=l?c[1]:c,d=u===null,p=n[o+1];p===ke&&(p=d?Oe:void 0);let f=d?Fa(p,r):u===r?p:void 0;if(l&&!Ec(f)&&(f=Fa(c,r)),Ec(f)&&(a=f,s))return a;let g=e[o+1];o=s?xr(g):_o(g)}if(t!==null){let c=i?t.residualClasses:t.residualStyles;c!=null&&(a=Fa(c,r))}return a}function Ec(e){return e!==void 0}function cM(e,t){return e==null||e===\"\"||(typeof t==\"string\"?e=e+t:typeof e==\"object\"&&(e=Ze(Ct(e)))),e}function Eb(e,t){return(e.flags&(t?8:16))!==0}function lM(e,t=\"\"){let n=I(),r=X(),o=e+pe,i=r.firstCreatePass?Vi(r,o,1,t,null):r.data[o],s=uM(r,n,i,t,e);n[o]=s,Ii()&&Rc(r,n,s,i),Fn(i,!1)}var uM=(e,t,n,r,o)=>(Ci(!0),aC(t[Q],r));function Db(e,t,n,r=\"\"){return Ye(e,cn(),n)?t+Rn(n)+r:ke}function dM(e,t,n,r,o,i=\"\"){let s=Cg(),a=fh(e,s,n,o);return Wa(2),a?t+Rn(n)+r+Rn(o)+i:ke}function wb(e){return Nh(\"\",e),wb}function Nh(e,t,n){let r=I(),o=Db(r,e,t,n);return o!==ke&&Cb(r,Vt(),o),Nh}function Ib(e,t,n,r,o){let i=I(),s=dM(i,e,t,n,r,o);return s!==ke&&Cb(i,Vt(),s),Ib}function Cb(e,t,n){let r=Ed(t,e);cC(e[Q],r,n)}function Tb(e,t,n){Fd(t)&&(t=t());let r=I(),o=cn();if(Ye(r,o,t)){let i=X(),s=wi();my(s,r,e,t,r[Q],n)}return Tb}function fM(e,t){let n=Fd(e);return n&&e.set(t),n}function Sb(e,t){let n=I(),r=X(),o=Te();return hb(r,n,n[Q],o,e,t),Sb}function hM(e){return Ye(I(),cn(),e)?Rn(e):ke}function pM(e,t,n=\"\"){return Db(I(),e,t,n)}function mM(e,t,n){let r=X();if(r.firstCreatePass){let o=Ut(e);Pf(n,r.data,r.blueprint,o,!0),Pf(t,r.data,r.blueprint,o,!1)}}function Pf(e,t,n,r,o){if(e=Re(e),Array.isArray(e))for(let i=0;i<e.length;i++)Pf(e[i],t,n,r,o);else{let i=X(),s=I(),a=Te(),c=ur(e)?e:Re(e.provide),l=gd(e),u=a.providerIndexes&1048575,d=a.directiveStart,p=a.providerIndexes>>20;if(ur(e)||!e.multi){let f=new Cr(l,o,oe),g=Kd(c,t,o?u:u+p,d);g===-1?(Xd(lc(a,s),i,c),Yd(i,e,t.length),t.push(c),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(f),s.push(f)):(n[g]=f,s[g]=f)}else{let f=Kd(c,t,u+p,d),g=Kd(c,t,u,u+p),y=f>=0&&n[f],D=g>=0&&n[g];if(o&&!D||!o&&!y){Xd(lc(a,s),i,c);let w=yM(o?vM:gM,n.length,o,r,l);!o&&D&&(n[g].providerFactory=w),Yd(i,e,t.length,0),t.push(c),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(w),s.push(w)}else{let w=Mb(n[o?g:f],l,!o&&r);Yd(i,e,f>-1?f:g,w)}!o&&r&&D&&n[g].componentProviders++}}}function Yd(e,t,n,r){let o=ur(t),i=ag(t);if(o||i){let c=(i?Re(t.useClass):t).prototype.ngOnDestroy;if(c){let l=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){let u=l.indexOf(n);u===-1?l.push(n,[r,c]):l[u+1].push(r,c)}else l.push(n,c)}}}function Mb(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function Kd(e,t,n,r){for(let o=n;o<r;o++)if(t[o]===e)return o;return-1}function gM(e,t,n,r){return Ff(this.multi,[])}function vM(e,t,n,r){let o=this.multi,i;if(this.providerFactory){let s=this.providerFactory.componentProviders,a=Ri(n,n[N],this.providerFactory.index,r);i=a.slice(0,s),Ff(o,i);for(let c=s;c<a.length;c++)i.push(a[c])}else i=[],Ff(o,i);return i}function Ff(e,t){for(let n=0;n<e.length;n++){let r=e[n];t.push(r())}return t}function yM(e,t,n,r,o){let i=new Cr(e,n,oe);return i.multi=[],i.index=t,i.componentProviders=0,Mb(i,o,r&&!n),i}function xb(e,t=[]){return n=>{n.providersResolver=(r,o)=>mM(r,o?o(e):e,t)}}function bM(e,t,n){let r=uo()+e,o=I();return o[r]===ke?kc(o,r,n?t.call(n):t()):ET(o,r)}function _M(e,t,n,r){return Rb(I(),uo(),e,t,n,r)}function EM(e,t,n,r,o,i){return wM(I(),uo(),e,t,n,r,o,i)}function Oh(e,t){let n=e[t];return n===ke?void 0:n}function Rb(e,t,n,r,o,i){let s=t+n;return Ye(e,s,o)?kc(e,s+1,i?r.call(i,o):r(o)):Oh(e,s+1)}function DM(e,t,n,r,o,i,s){let a=t+n;return fh(e,a,o,i)?kc(e,a+2,s?r.call(s,o,i):r(o,i)):Oh(e,a+2)}function wM(e,t,n,r,o,i,s,a){let c=t+n;return DT(e,c,o,i,s)?kc(e,c+3,a?r.call(a,o,i,s):r(o,i,s)):Oh(e,c+3)}function IM(e,t){let n=X(),r,o=e+pe;n.firstCreatePass?(r=CM(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks??=[]).push(o,r.onDestroy)):r=n.data[o];let i=r.factory||(r.factory=Mn(r.type,!0)),s,a=Fe(oe);try{let c=cc(!1),l=i();return cc(c),Dd(n,I(),o,l),l}finally{Fe(a)}}function CM(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function TM(e,t,n){let r=e+pe,o=I(),i=Ba(o,r);return Ab(o,r)?Rb(o,uo(),t,i.transform,n,i):i.transform(n)}function SM(e,t,n,r){let o=e+pe,i=I(),s=Ba(i,o);return Ab(i,o)?DM(i,uo(),t,s.transform,n,r,s):s.transform(n,r)}function Ab(e,t){return e[N].data[t].pure}function MM(e,t){return Nc(e,t)}var Dc=class{ngModuleFactory;componentFactories;constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}},kh=(()=>{class e{compileModuleSync(n){return new gc(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o=fd(n),i=oy(o.declarations).reduce((s,a)=>{let c=sn(a);return c&&s.push(new Sr(c)),s},[]);return new Dc(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var xM=(()=>{class e{zone=h(B);changeDetectionScheduler=h(at);applicationRef=h(zt);applicationErrorHandler=h(Ue);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(n){this.applicationErrorHandler(n)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),Nb=new E(\"\",{factory:()=>!1});function Ph({ngZoneFactory:e,ignoreChangesOutsideZone:t,scheduleInRootZone:n}){return e??=()=>new B(U(v({},Fh()),{scheduleInRootZone:n})),[{provide:B,useFactory:e},{provide:Ft,multi:!0,useFactory:()=>{let r=h(xM,{optional:!0});return()=>r.initialize()}},{provide:Ft,multi:!0,useFactory:()=>{let r=h(AM);return()=>{r.initialize()}}},t===!0?{provide:Ld,useValue:!0}:[],{provide:jd,useValue:n??rb},{provide:Ue,useFactory:()=>{let r=h(B),o=h(ue),i;return s=>{r.runOutsideAngular(()=>{o.destroyed&&!i?setTimeout(()=>{throw s}):(i??=o.get(Je),i.handleError(s))})}}}]}function RM(e){let t=e?.ignoreChangesOutsideZone,n=e?.scheduleInRootZone,r=Ph({ngZoneFactory:()=>{let o=Fh(e);return o.scheduleInRootZone=n,o.shouldCoalesceEventChangeDetection&&mn(\"NgZone_CoalesceEvent\"),new B(o)},ignoreChangesOutsideZone:t,scheduleInRootZone:n});return vt([{provide:Nb,useValue:!0},{provide:ho,useValue:!1},r])}function Fh(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}var AM=(()=>{class e{subscription=new ie;initialized=!1;zone=h(B);pendingTasks=h(ln);initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{B.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{B.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var Ob=(()=>{class e{applicationErrorHandler=h(Ue);appRef=h(zt);taskService=h(ln);ngZone=h(B);zonelessEnabled=h(ho);tracing=h($n,{optional:!0});disableScheduling=h(Ld,{optional:!0})??!1;zoneIsDefined=typeof Zone<\"u\"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new ie;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(vc):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(h(jd,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof yc||!this.zoneIsDefined)}notify(n){if(!this.zonelessEnabled&&n===5)return;let r=!1;switch(n){case 0:{this.appRef.dirtyFlags|=2;break}case 3:case 2:case 4:case 5:case 1:{this.appRef.dirtyFlags|=4;break}case 6:{this.appRef.dirtyFlags|=2,r=!0;break}case 12:{this.appRef.dirtyFlags|=16,r=!0;break}case 13:{this.appRef.dirtyFlags|=2,r=!0;break}case 11:{r=!0;break}case 9:case 8:case 7:case 10:default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick(r))return;let o=this.useMicrotaskScheduler?uv:ob;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>o(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>o(()=>this.tick()))}shouldScheduleTick(n){return!(this.disableScheduling&&!n||this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(vc+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let n=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){this.taskService.remove(n),this.applicationErrorHandler(r)}finally{this.cleanup()}this.useMicrotaskScheduler=!0,uv(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(n)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function NM(){return typeof $localize<\"u\"&&$localize.locale||Gi}var So=new E(\"\",{providedIn:\"root\",factory:()=>h(So,{optional:!0,skipSelf:!0})||NM()}),Lh=new E(\"\",{providedIn:\"root\",factory:()=>OS});var $c=class{destroyed=!1;listeners=null;errorHandler=h(Je,{optional:!0});destroyRef=h(tt);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(t){if(this.destroyed)throw new _(953,!1);return(this.listeners??=[]).push(t),{unsubscribe:()=>{let n=this.listeners?.indexOf(t);n!==void 0&&n!==-1&&this.listeners?.splice(n,1)}}}emit(t){if(this.destroyed){console.warn(fr(953,!1));return}if(this.listeners===null)return;let n=M(null);try{for(let r of this.listeners)try{r(t)}catch(o){this.errorHandler?.handleError(o)}}finally{M(n)}}};function zc(e){return zm(e)}function Bh(e,t){return ei(e,t?.equal)}var jh=class{[be];constructor(t){this[be]=t}destroy(){this[be].destroy()}};function Uh(e,t){let n=t?.injector??h(ae),r=t?.manualCleanup!==!0?n.get(tt):null,o,i=n.get(Er,null,{optional:!0}),s=n.get(at);return i!==null?(o=PM(i.view,s,e),r instanceof fi&&r._lView===i.view&&(r=null)):o=FM(e,n.get(Si),s),o.injector=n,r!==null&&(o.onDestroyFn=r.onDestroy(()=>o.destroy())),new jh(o)}var kb=U(v({},Dn),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,hasRun:!1,cleanupFns:void 0,zone:null,kind:\"effect\",onDestroyFn:Dr,run(){if(this.dirty=!1,this.hasRun&&!er(this))return;this.hasRun=!0;let e=r=>(this.cleanupFns??=[]).push(r),t=tn(this),n=lo(!1);try{this.maybeCleanup(),this.fn(e)}finally{lo(n),wn(this,t)}},maybeCleanup(){if(!this.cleanupFns?.length)return;let e=M(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],M(e)}}}),OM=U(v({},kb),{consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){Wr(this),this.onDestroyFn(),this.maybeCleanup(),this.scheduler.remove(this)}}),kM=U(v({},kb),{consumerMarkedDirty(){this.view[A]|=8192,Pn(this.view),this.notifier.notify(13)},destroy(){Wr(this),this.onDestroyFn(),this.maybeCleanup(),this.view[an]?.delete(this)}});function PM(e,t,n){let r=Object.create(kM);return r.view=e,r.zone=typeof Zone<\"u\"?Zone.current:null,r.notifier=t,r.fn=n,e[an]??=new Set,e[an].add(r),r.consumerMarkedDirty(r),r}function FM(e,t,n){let r=Object.create(OM);return r.fn=e,r.scheduler=t,r.notifier=n,r.zone=typeof Zone<\"u\"?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}var Ub=Symbol(\"InputSignalNode#UNSET\"),qM=U(v({},ti),{transformFn:void 0,applyValueToInputSignal(e,t){Gr(e,t)}});function Vb(e,t){let n=Object.create(qM);n.value=e,n.transformFn=t?.transform;function r(){if(Jn(n),n.value===Ub){let o=null;throw new _(-950,o)}return n.value}return r[be]=n,r}var Gc=class{attributeName;constructor(t){this.attributeName=t}__NG_ELEMENT_ID__=()=>Fi(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}},ZM=new E(\"\");ZM.__NG_ELEMENT_ID__=e=>{let t=Te();if(t===null)throw new _(204,!1);if(t.type&2)return t.value;if(e&8)return null;throw new _(204,!1)};function Jz(e){return new $c}function Pb(e,t){return Vb(e,t)}function YM(e){return Vb(Ub,e)}var Hb=(Pb.required=YM,Pb);function Fb(e,t){return mh(t)}function KM(e,t){return gh(t)}var e8=(Fb.required=KM,Fb);function Lb(e,t){return mh(t)}function QM(e,t){return gh(t)}var t8=(Lb.required=QM,Lb);var Hh=new E(\"\"),XM=new E(\"\");function Zi(e){return!e.moduleRef}function JM(e){let t=Zi(e)?e.r3Injector:e.moduleRef.injector,n=t.get(B);return n.run(()=>{Zi(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Ue),o;if(n.runOutsideAngular(()=>{o=n.onError.subscribe({next:r})}),Zi(e)){let i=()=>t.destroy(),s=e.platformInjector.get(Hh);s.add(i),t.onDestroy(()=>{o.unsubscribe(),s.delete(i)})}else{let i=()=>e.moduleRef.destroy(),s=e.platformInjector.get(Hh);s.add(i),e.moduleRef.onDestroy(()=>{xi(e.allPlatformModules,e.moduleRef),o.unsubscribe(),s.delete(i)})}return t0(r,n,()=>{let i=t.get(Ih);return i.runInitializers(),i.donePromise.then(()=>{let s=t.get(So,Gi);if(fb(s||Gi),!t.get(XM,!0))return Zi(e)?t.get(zt):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Zi(e)){let c=t.get(zt);return e.rootComponent!==void 0&&c.bootstrap(e.rootComponent),c}else return e0?.(e.moduleRef,e.allPlatformModules),e.moduleRef})})})}var e0;function t0(e,t,n){try{let r=n();return To(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e(r)),r}}var Wc=null;function n0(e=[],t){return ae.create({name:t,providers:[{provide:mi,useValue:\"platform\"},{provide:Hh,useValue:new Set([()=>Wc=null])},...e]})}function r0(e=[]){if(Wc)return Wc;let t=n0(e);return Wc=t,ab(),o0(t),t}function o0(e){let t=e.get(Ic,null);Le(e,()=>{t?.forEach(n=>n())})}var Yi=(()=>{class e{static __NG_ELEMENT_ID__=i0}return e})();function i0(e){return s0(Te(),I(),(e&16)===16)}function s0(e,t,n){if(kn(e)&&!n){let r=dt(e.index,t);return new jn(r,r)}else if(e.type&175){let r=t[Be];return new jn(r,t)}return null}var $h=class{constructor(){}supports(t){return dh(t)}create(t){return new zh(t)}},a0=(e,t)=>t,zh=class{length=0;collection;_linkedRecords=null;_unlinkedRecords=null;_previousItHead=null;_itHead=null;_itTail=null;_additionsHead=null;_additionsTail=null;_movesHead=null;_movesTail=null;_removalsHead=null;_removalsTail=null;_identityChangesHead=null;_identityChangesTail=null;_trackByFn;constructor(t){this._trackByFn=t||a0}forEachItem(t){let n;for(n=this._itHead;n!==null;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,r=this._removalsHead,o=0,i=null;for(;n||r;){let s=!r||n&&n.currentIndex<jb(r,o,i)?n:r,a=jb(s,o,i),c=s.currentIndex;if(s===r)o--,r=r._nextRemoved;else if(n=n._next,s.previousIndex==null)o++;else{i||(i=[]);let l=a-o,u=c-o;if(l!=u){for(let p=0;p<l;p++){let f=p<i.length?i[p]:i[p]=0,g=f+p;u<=g&&g<l&&(i[p]=f+1)}let d=s.previousIndex;i[d]=u-l}}a!==c&&t(s,a,c)}}forEachPreviousItem(t){let n;for(n=this._previousItHead;n!==null;n=n._nextPrevious)t(n)}forEachAddedItem(t){let n;for(n=this._additionsHead;n!==null;n=n._nextAdded)t(n)}forEachMovedItem(t){let n;for(n=this._movesHead;n!==null;n=n._nextMoved)t(n)}forEachRemovedItem(t){let n;for(n=this._removalsHead;n!==null;n=n._nextRemoved)t(n)}forEachIdentityChange(t){let n;for(n=this._identityChangesHead;n!==null;n=n._nextIdentityChange)t(n)}diff(t){if(t==null&&(t=[]),!dh(t))throw new _(900,!1);return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let n=this._itHead,r=!1,o,i,s;if(Array.isArray(t)){this.length=t.length;for(let a=0;a<this.length;a++)i=t[a],s=this._trackByFn(a,i),n===null||!Object.is(n.trackById,s)?(n=this._mismatch(n,i,s,a),r=!0):(r&&(n=this._verifyReinsertion(n,i,s,a)),Object.is(n.item,i)||this._addIdentityChange(n,i)),n=n._next}else o=0,Vy(t,a=>{s=this._trackByFn(o,a),n===null||!Object.is(n.trackById,s)?(n=this._mismatch(n,a,s,o),r=!0):(r&&(n=this._verifyReinsertion(n,a,s,o)),Object.is(n.item,a)||this._addIdentityChange(n,a)),n=n._next,o++}),this.length=o;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;t!==null;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;t!==null;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;t!==null;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,r,o){let i;return t===null?i=this._itTail:(i=t._prev,this._remove(t)),t=this._unlinkedRecords===null?null:this._unlinkedRecords.get(r,null),t!==null?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,i,o)):(t=this._linkedRecords===null?null:this._linkedRecords.get(r,o),t!==null?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,i,o)):t=this._addAfter(new Wh(n,r),i,o)),t}_verifyReinsertion(t,n,r,o){let i=this._unlinkedRecords===null?null:this._unlinkedRecords.get(r,null);return i!==null?t=this._reinsertAfter(i,t._prev,o):t.currentIndex!=o&&(t.currentIndex=o,this._addToMoves(t,o)),t}_truncate(t){for(;t!==null;){let n=t._next;this._addToRemovals(this._unlink(t)),t=n}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,r){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(t);let o=t._prevRemoved,i=t._nextRemoved;return o===null?this._removalsHead=i:o._nextRemoved=i,i===null?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(t,n,r),this._addToMoves(t,r),t}_moveAfter(t,n,r){return this._unlink(t),this._insertAfter(t,n,r),this._addToMoves(t,r),t}_addAfter(t,n,r){return this._insertAfter(t,n,r),this._additionsTail===null?this._additionsTail=this._additionsHead=t:this._additionsTail=this._additionsTail._nextAdded=t,t}_insertAfter(t,n,r){let o=n===null?this._itHead:n._next;return t._next=o,t._prev=n,o===null?this._itTail=t:o._prev=t,n===null?this._itHead=t:n._next=t,this._linkedRecords===null&&(this._linkedRecords=new qc),this._linkedRecords.put(t),t.currentIndex=r,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){this._linkedRecords!==null&&this._linkedRecords.remove(t);let n=t._prev,r=t._next;return n===null?this._itHead=r:n._next=r,r===null?this._itTail=n:r._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail===null?this._movesTail=this._movesHead=t:this._movesTail=this._movesTail._nextMoved=t),t}_addToRemovals(t){return this._unlinkedRecords===null&&(this._unlinkedRecords=new qc),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=t:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=t,t}},Wh=class{item;trackById;currentIndex=null;previousIndex=null;_nextPrevious=null;_prev=null;_next=null;_prevDup=null;_nextDup=null;_prevRemoved=null;_nextRemoved=null;_nextAdded=null;_nextMoved=null;_nextIdentityChange=null;constructor(t,n){this.item=t,this.trackById=n}},Gh=class{_head=null;_tail=null;add(t){this._head===null?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let r;for(r=this._head;r!==null;r=r._nextDup)if((n===null||n<=r.currentIndex)&&Object.is(r.trackById,t))return r;return null}remove(t){let n=t._prevDup,r=t._nextDup;return n===null?this._head=r:n._nextDup=r,r===null?this._tail=n:r._prevDup=n,this._head===null}},qc=class{map=new Map;put(t){let n=t.trackById,r=this.map.get(n);r||(r=new Gh,this.map.set(n,r)),r.add(t)}get(t,n){let r=t,o=this.map.get(r);return o?o.get(t,n):null}remove(t){let n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function jb(e,t,n){let r=e.previousIndex;if(r===null)return r;let o=0;return n&&r<n.length&&(o=n[r]),r+t+o}function Bb(){return new $b([new $h])}var $b=(()=>{class e{factories;static \\u0275prov=b({token:e,providedIn:\"root\",factory:Bb});constructor(n){this.factories=n}static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Bb()),deps:[[e,new _v,new Lf]]}}find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return r;throw new _(901,!1)}}return e})();function zb(e){W(8);try{let{rootComponent:t,appProviders:n,platformProviders:r}=e,o=r0(r),i=[Ph({}),{provide:at,useExisting:Ob},Bg,...n||[]],s=new Oi({providers:i,parent:o,debugName:\"\",runEnvironmentInitializers:!1});return JM({r3Injector:s.injector,platformInjector:o,rootComponent:t})}catch(t){return Promise.reject(t)}finally{W(9)}}function ft(e){return typeof e==\"boolean\"?e:e!=null&&e!==\"false\"}function Wb(e,t=NaN){return!isNaN(parseFloat(e))&&!isNaN(Number(e))?Number(e):t}var Vh=Symbol(\"NOT_SET\"),Gb=new Set,c0=U(v({},ti),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:Vh,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase<this.phase)return;this.sequence.erroredOrDestroyed=!0}this.sequence.scheduler.notify(7)},phaseFn(e){if(this.sequence.lastPhase=this.phase,!this.dirty)return this.signal;if(this.dirty=!1,this.value!==Vh&&!er(this))return this.signal;try{for(let o of this.cleanup??Gb)o()}finally{this.cleanup?.clear()}let t=[];e!==void 0&&t.push(e),t.push(this.registerCleanupFn);let n=tn(this),r;try{r=this.userFn.apply(null,t)}finally{wn(this,n)}return(this.value===Vh||!this.equal(this.value,r))&&(this.value=r,this.version++),this.signal}}),qh=class extends ki{scheduler;lastPhase=null;nodes=[void 0,void 0,void 0,void 0];constructor(t,n,r,o,i,s=null){super(t,[void 0,void 0,void 0,void 0],r,!1,i,s),this.scheduler=o;for(let a of bh){let c=n[a];if(c===void 0)continue;let l=Object.create(c0);l.sequence=this,l.phase=a,l.userFn=c,l.dirty=!0,l.signal=()=>(Jn(l),l.value),l.signal[be]=l,l.registerCleanupFn=u=>(l.cleanup??=new Set).add(u),this.nodes[a]=l,this.hooks[a]=u=>l.phaseFn(u)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){super.destroy();for(let t of this.nodes)for(let n of t?.cleanup??Gb)n()}};function n8(e,t){let n=t?.injector??h(ae),r=n.get(at),o=n.get(jc),i=n.get($n,null,{optional:!0});o.impl??=n.get(_h);let s=e;typeof s==\"function\"&&(s={mixedReadWrite:e});let a=n.get(Er,null,{optional:!0}),c=new qh(o.impl,[s.earlyRead,s.write,s.mixedReadWrite,s.read],a?.view,r,n.get(tt),i?.snapshot(null));return o.impl.register(c),c}function qb(e,t){let n=sn(e),r=t.elementInjector||io();return new Sr(n).create(r,t.projectableNodes,t.hostElement,t.environmentInjector,t.directives,t.bindings)}var Kb=null;function gn(){return Kb}function Zh(e){Kb??=e}var Ki=class{},Yh=(()=>{class e{historyGo(n){throw new Error(\"\")}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>h(Qb),providedIn:\"platform\"})}return e})();var Qb=(()=>{class e extends Yh{_location;_history;_doc=h(H);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return gn().getBaseHref(this._doc)}onPopState(n){let r=gn().getGlobalEventTarget(this._doc,\"window\");return r.addEventListener(\"popstate\",n,!1),()=>r.removeEventListener(\"popstate\",n)}onHashChange(n){let r=gn().getGlobalEventTarget(this._doc,\"window\");return r.addEventListener(\"hashchange\",n,!1),()=>r.removeEventListener(\"hashchange\",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>new e,providedIn:\"platform\"})}return e})();function Xb(e,t){return e?t?e.endsWith(\"/\")?t.startsWith(\"/\")?e+t.slice(1):e+t:t.startsWith(\"/\")?e+t:`${e}/${t}`:e:t}function Zb(e){let t=e.search(/#|\\?|$/);return e[t-1]===\"/\"?e.slice(0,t-1)+e.slice(t):e}function Wn(e){return e&&e[0]!==\"?\"?`?${e}`:e}var Mo=(()=>{class e{historyGo(n){throw new Error(\"\")}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>h(e_),providedIn:\"root\"})}return e})(),Jb=new E(\"\"),e_=(()=>{class e extends Mo{_platformLocation;_baseHref;_removeListenerFns=[];constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??h(H).location?.origin??\"\"}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return Xb(this._baseHref,n)}path(n=!1){let r=this._platformLocation.pathname+Wn(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static \\u0275fac=function(r){return new(r||e)(S(Yh),S(Jb,8))};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),xo=(()=>{class e{_subject=new V;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(n){this._locationStrategy=n;let r=this._locationStrategy.getBaseHref();this._basePath=d0(Zb(Yb(r))),this._locationStrategy.onPopState(o=>{this._subject.next({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=\"\"){return this.path()==this.normalize(n+Wn(r))}normalize(n){return e.stripTrailingSlash(u0(this._basePath,Yb(n)))}prepareExternalUrl(n){return n&&n[0]!==\"/\"&&(n=\"/\"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r=\"\",o=null){this._locationStrategy.pushState(o,\"\",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Wn(r)),o)}replaceState(n,r=\"\",o=null){this._locationStrategy.replaceState(o,\"\",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Wn(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n=\"\",r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void 0,complete:o??void 0})}static normalizeQueryParams=Wn;static joinWithSlash=Xb;static stripTrailingSlash=Zb;static \\u0275fac=function(r){return new(r||e)(S(Mo))};static \\u0275prov=b({token:e,factory:()=>l0(),providedIn:\"root\"})}return e})();function l0(){return new xo(S(Mo))}function u0(e,t){if(!e||!t.startsWith(e))return t;let n=t.substring(e.length);return n===\"\"||[\"/\",\";\",\"?\",\"#\"].includes(n[0])?n:t}function Yb(e){return e.replace(/\\/index.html$/,\"\")}function d0(e){if(new RegExp(\"^(https?:)?//\").test(e)){let[,n]=e.split(/\\/\\/[^\\/]+/);return n}return e}var i_={ADP:[void 0,void 0,0],AFN:[void 0,\"\\u060B\",0],ALL:[void 0,void 0,0],AMD:[void 0,\"\\u058F\",2],AOA:[void 0,\"Kz\"],ARS:[void 0,\"$\"],AUD:[\"A$\",\"$\"],AZN:[void 0,\"\\u20BC\"],BAM:[void 0,\"KM\"],BBD:[void 0,\"$\"],BDT:[void 0,\"\\u09F3\"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,\"$\"],BND:[void 0,\"$\"],BOB:[void 0,\"Bs\"],BRL:[\"R$\"],BSD:[void 0,\"$\"],BWP:[void 0,\"P\"],BYN:[void 0,void 0,2],BYR:[void 0,void 0,0],BZD:[void 0,\"$\"],CAD:[\"CA$\",\"$\",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,\"$\",0],CNY:[\"CN\\xA5\",\"\\xA5\"],COP:[void 0,\"$\",2],CRC:[void 0,\"\\u20A1\",2],CUC:[void 0,\"$\"],CUP:[void 0,\"$\"],CZK:[void 0,\"K\\u010D\",2],DJF:[void 0,void 0,0],DKK:[void 0,\"kr\",2],DOP:[void 0,\"$\"],EGP:[void 0,\"E\\xA3\"],ESP:[void 0,\"\\u20A7\",0],EUR:[\"\\u20AC\"],FJD:[void 0,\"$\"],FKP:[void 0,\"\\xA3\"],GBP:[\"\\xA3\"],GEL:[void 0,\"\\u20BE\"],GHS:[void 0,\"GH\\u20B5\"],GIP:[void 0,\"\\xA3\"],GNF:[void 0,\"FG\",0],GTQ:[void 0,\"Q\"],GYD:[void 0,\"$\",2],HKD:[\"HK$\",\"$\"],HNL:[void 0,\"L\"],HRK:[void 0,\"kn\"],HUF:[void 0,\"Ft\",2],IDR:[void 0,\"Rp\",2],ILS:[\"\\u20AA\"],INR:[\"\\u20B9\"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,\"kr\",0],ITL:[void 0,void 0,0],JMD:[void 0,\"$\"],JOD:[void 0,void 0,3],JPY:[\"\\xA5\",void 0,0],KHR:[void 0,\"\\u17DB\"],KMF:[void 0,\"CF\",0],KPW:[void 0,\"\\u20A9\",0],KRW:[\"\\u20A9\",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,\"$\"],KZT:[void 0,\"\\u20B8\"],LAK:[void 0,\"\\u20AD\",0],LBP:[void 0,\"L\\xA3\",0],LKR:[void 0,\"Rs\"],LRD:[void 0,\"$\"],LTL:[void 0,\"Lt\"],LUF:[void 0,void 0,0],LVL:[void 0,\"Ls\"],LYD:[void 0,void 0,3],MGA:[void 0,\"Ar\",0],MGF:[void 0,void 0,0],MMK:[void 0,\"K\",0],MNT:[void 0,\"\\u20AE\",2],MRO:[void 0,void 0,0],MUR:[void 0,\"Rs\",2],MXN:[\"MX$\",\"$\"],MYR:[void 0,\"RM\"],NAD:[void 0,\"$\"],NGN:[void 0,\"\\u20A6\"],NIO:[void 0,\"C$\"],NOK:[void 0,\"kr\",2],NPR:[void 0,\"Rs\"],NZD:[\"NZ$\",\"$\"],OMR:[void 0,void 0,3],PHP:[\"\\u20B1\"],PKR:[void 0,\"Rs\",2],PLN:[void 0,\"z\\u0142\"],PYG:[void 0,\"\\u20B2\",0],RON:[void 0,\"lei\"],RSD:[void 0,void 0,0],RUB:[void 0,\"\\u20BD\"],RWF:[void 0,\"RF\",0],SBD:[void 0,\"$\"],SEK:[void 0,\"kr\",2],SGD:[void 0,\"$\"],SHP:[void 0,\"\\xA3\"],SLE:[void 0,void 0,2],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,\"$\"],SSP:[void 0,\"\\xA3\"],STD:[void 0,void 0,0],STN:[void 0,\"Db\"],SYP:[void 0,\"\\xA3\",0],THB:[void 0,\"\\u0E3F\"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,\"T$\"],TRL:[void 0,void 0,0],TRY:[void 0,\"\\u20BA\"],TTD:[void 0,\"$\"],TWD:[\"NT$\",\"$\",2],TZS:[void 0,void 0,2],UAH:[void 0,\"\\u20B4\"],UGX:[void 0,void 0,0],USD:[\"$\"],UYI:[void 0,void 0,0],UYU:[void 0,\"$\"],UYW:[void 0,void 0,4],UZS:[void 0,void 0,2],VEF:[void 0,\"Bs\",2],VND:[\"\\u20AB\",void 0,0],VUV:[void 0,void 0,0],XAF:[\"FCFA\",void 0,0],XCD:[\"EC$\",\"$\"],XOF:[\"F\\u202FCFA\",void 0,0],XPF:[\"CFPF\",void 0,0],XXX:[\"\\xA4\"],YER:[void 0,void 0,0],ZAR:[void 0,\"R\"],ZMK:[void 0,void 0,0],ZMW:[void 0,\"ZK\"],ZWD:[void 0,void 0,0]},np=function(e){return e[e.Decimal=0]=\"Decimal\",e[e.Percent=1]=\"Percent\",e[e.Currency=2]=\"Currency\",e[e.Scientific=3]=\"Scientific\",e}(np||{});var Pe=function(e){return e[e.Format=0]=\"Format\",e[e.Standalone=1]=\"Standalone\",e}(Pe||{}),q=function(e){return e[e.Narrow=0]=\"Narrow\",e[e.Abbreviated=1]=\"Abbreviated\",e[e.Wide=2]=\"Wide\",e[e.Short=3]=\"Short\",e}(q||{}),Ke=function(e){return e[e.Short=0]=\"Short\",e[e.Medium=1]=\"Medium\",e[e.Long=2]=\"Long\",e[e.Full=3]=\"Full\",e}(Ke||{}),Qe={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function s_(e){return He(e)[ce.LocaleId]}function a_(e,t,n){let r=He(e),o=[r[ce.DayPeriodsFormat],r[ce.DayPeriodsStandalone]],i=ht(o,t);return ht(i,n)}function c_(e,t,n){let r=He(e),o=[r[ce.DaysFormat],r[ce.DaysStandalone]],i=ht(o,t);return ht(i,n)}function l_(e,t,n){let r=He(e),o=[r[ce.MonthsFormat],r[ce.MonthsStandalone]],i=ht(o,t);return ht(i,n)}function u_(e,t){let r=He(e)[ce.Eras];return ht(r,t)}function Qi(e,t){let n=He(e);return ht(n[ce.DateFormat],t)}function Xi(e,t){let n=He(e);return ht(n[ce.TimeFormat],t)}function Ji(e,t){let r=He(e)[ce.DateTimeFormat];return ht(r,t)}function Gt(e,t){let n=He(e),r=n[ce.NumberSymbols][t];if(typeof r>\"u\"){if(t===Qe.CurrencyDecimal)return n[ce.NumberSymbols][Qe.Decimal];if(t===Qe.CurrencyGroup)return n[ce.NumberSymbols][Qe.Group]}return r}function d_(e,t){return He(e)[ce.NumberFormats][t]}function f0(e){return He(e)[ce.Currencies]}function f_(e){if(!e[ce.ExtraData])throw new _(2303,!1)}function h_(e){let t=He(e);return f_(t),(t[ce.ExtraData][2]||[]).map(r=>typeof r==\"string\"?Kh(r):[Kh(r[0]),Kh(r[1])])}function p_(e,t,n){let r=He(e);f_(r);let o=[r[ce.ExtraData][0],r[ce.ExtraData][1]],i=ht(o,t)||[];return ht(i,n)||[]}function ht(e,t){for(let n=t;n>-1;n--)if(typeof e[n]<\"u\")return e[n];throw new _(2304,!1)}function Kh(e){let[t,n]=e.split(\":\");return{hours:+t,minutes:+n}}function m_(e,t,n=\"en\"){let r=f0(n)[e]||i_[e]||[],o=r[1];return t===\"narrow\"&&typeof o==\"string\"?o:r[0]||e}var h0=2;function g_(e){let t,n=i_[e];return n&&(t=n[2]),typeof t==\"number\"?t:h0}var p0=/^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/,Zc={},m0=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;function v_(e,t,n,r){let o=I0(e);t=vn(n,t)||t;let s=[],a;for(;t;)if(a=m0.exec(t),a){s=s.concat(a.slice(1));let u=s.pop();if(!u)break;t=u}else{s.push(t);break}let c=o.getTimezoneOffset();r&&(c=b_(r,c),o=w0(o,r));let l=\"\";return s.forEach(u=>{let d=E0(u);l+=d?d(o,n,c):u===\"''\"?\"'\":u.replace(/(^'|'$)/g,\"\").replace(/''/g,\"'\")}),l}function Jc(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function vn(e,t){let n=s_(e);if(Zc[n]??={},Zc[n][t])return Zc[n][t];let r=\"\";switch(t){case\"shortDate\":r=Qi(e,Ke.Short);break;case\"mediumDate\":r=Qi(e,Ke.Medium);break;case\"longDate\":r=Qi(e,Ke.Long);break;case\"fullDate\":r=Qi(e,Ke.Full);break;case\"shortTime\":r=Xi(e,Ke.Short);break;case\"mediumTime\":r=Xi(e,Ke.Medium);break;case\"longTime\":r=Xi(e,Ke.Long);break;case\"fullTime\":r=Xi(e,Ke.Full);break;case\"short\":let o=vn(e,\"shortTime\"),i=vn(e,\"shortDate\");r=Yc(Ji(e,Ke.Short),[o,i]);break;case\"medium\":let s=vn(e,\"mediumTime\"),a=vn(e,\"mediumDate\");r=Yc(Ji(e,Ke.Medium),[s,a]);break;case\"long\":let c=vn(e,\"longTime\"),l=vn(e,\"longDate\");r=Yc(Ji(e,Ke.Long),[c,l]);break;case\"full\":let u=vn(e,\"fullTime\"),d=vn(e,\"fullDate\");r=Yc(Ji(e,Ke.Full),[u,d]);break}return r&&(Zc[n][t]=r),r}function Yc(e,t){return t&&(e=e.replace(/\\{([^}]+)}/g,function(n,r){return t!=null&&r in t?t[r]:n})),e}function St(e,t,n=\"-\",r,o){let i=\"\";(e<0||o&&e<=0)&&(o?e=-e+1:(e=-e,i=n));let s=String(e);for(;s.length<t;)s=\"0\"+s;return r&&(s=s.slice(s.length-t)),i+s}function g0(e,t){return St(e,3).substring(0,t)}function ge(e,t,n=0,r=!1,o=!1){return function(i,s){let a=v0(e,i);if((n>0||a>-n)&&(a+=n),e===3)a===0&&n===-12&&(a=12);else if(e===6)return g0(a,t);let c=Gt(s,Qe.MinusSign);return St(a,t,c,r,o)}}function v0(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new _(2301,!1)}}function J(e,t,n=Pe.Format,r=!1){return function(o,i){return y0(o,i,e,t,n,r)}}function y0(e,t,n,r,o,i){switch(n){case 2:return l_(t,o,r)[e.getMonth()];case 1:return c_(t,o,r)[e.getDay()];case 0:let s=e.getHours(),a=e.getMinutes();if(i){let l=h_(t),u=p_(t,o,r),d=l.findIndex(p=>{if(Array.isArray(p)){let[f,g]=p,y=s>=f.hours&&a>=f.minutes,D=s<g.hours||s===g.hours&&a<g.minutes;if(f.hours<g.hours){if(y&&D)return!0}else if(y||D)return!0}else if(p.hours===s&&p.minutes===a)return!0;return!1});if(d!==-1)return u[d]}return a_(t,o,r)[s<12?0:1];case 3:return u_(t,r)[e.getFullYear()<=0?0:1];default:let c=n;throw new _(2302,!1)}}function Kc(e){return function(t,n,r){let o=-1*r,i=Gt(n,Qe.MinusSign),s=o>0?Math.floor(o/60):Math.ceil(o/60);switch(e){case 0:return(o>=0?\"+\":\"\")+St(s,2,i)+St(Math.abs(o%60),2,i);case 1:return\"GMT\"+(o>=0?\"+\":\"\")+St(s,1,i);case 2:return\"GMT\"+(o>=0?\"+\":\"\")+St(s,2,i)+\":\"+St(Math.abs(o%60),2,i);case 3:return r===0?\"Z\":(o>=0?\"+\":\"\")+St(s,2,i)+\":\"+St(Math.abs(o%60),2,i);default:throw new _(2302,!1)}}}var b0=0,Xc=4;function _0(e){let t=Jc(e,b0,1).getDay();return Jc(e,0,1+(t<=Xc?Xc:Xc+7)-t)}function y_(e){let t=e.getDay(),n=t===0?-3:Xc-t;return Jc(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Qh(e,t=!1){return function(n,r){let o;if(t){let i=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,s=n.getDate();o=1+Math.floor((s+i)/7)}else{let i=y_(n),s=_0(i.getFullYear()),a=i.getTime()-s.getTime();o=1+Math.round(a/6048e5)}return St(o,e,Gt(r,Qe.MinusSign))}}function Qc(e,t=!1){return function(n,r){let i=y_(n).getFullYear();return St(i,e,Gt(r,Qe.MinusSign),t)}}var Xh={};function E0(e){if(Xh[e])return Xh[e];let t;switch(e){case\"G\":case\"GG\":case\"GGG\":t=J(3,q.Abbreviated);break;case\"GGGG\":t=J(3,q.Wide);break;case\"GGGGG\":t=J(3,q.Narrow);break;case\"y\":t=ge(0,1,0,!1,!0);break;case\"yy\":t=ge(0,2,0,!0,!0);break;case\"yyy\":t=ge(0,3,0,!1,!0);break;case\"yyyy\":t=ge(0,4,0,!1,!0);break;case\"Y\":t=Qc(1);break;case\"YY\":t=Qc(2,!0);break;case\"YYY\":t=Qc(3);break;case\"YYYY\":t=Qc(4);break;case\"M\":case\"L\":t=ge(1,1,1);break;case\"MM\":case\"LL\":t=ge(1,2,1);break;case\"MMM\":t=J(2,q.Abbreviated);break;case\"MMMM\":t=J(2,q.Wide);break;case\"MMMMM\":t=J(2,q.Narrow);break;case\"LLL\":t=J(2,q.Abbreviated,Pe.Standalone);break;case\"LLLL\":t=J(2,q.Wide,Pe.Standalone);break;case\"LLLLL\":t=J(2,q.Narrow,Pe.Standalone);break;case\"w\":t=Qh(1);break;case\"ww\":t=Qh(2);break;case\"W\":t=Qh(1,!0);break;case\"d\":t=ge(2,1);break;case\"dd\":t=ge(2,2);break;case\"c\":case\"cc\":t=ge(7,1);break;case\"ccc\":t=J(1,q.Abbreviated,Pe.Standalone);break;case\"cccc\":t=J(1,q.Wide,Pe.Standalone);break;case\"ccccc\":t=J(1,q.Narrow,Pe.Standalone);break;case\"cccccc\":t=J(1,q.Short,Pe.Standalone);break;case\"E\":case\"EE\":case\"EEE\":t=J(1,q.Abbreviated);break;case\"EEEE\":t=J(1,q.Wide);break;case\"EEEEE\":t=J(1,q.Narrow);break;case\"EEEEEE\":t=J(1,q.Short);break;case\"a\":case\"aa\":case\"aaa\":t=J(0,q.Abbreviated);break;case\"aaaa\":t=J(0,q.Wide);break;case\"aaaaa\":t=J(0,q.Narrow);break;case\"b\":case\"bb\":case\"bbb\":t=J(0,q.Abbreviated,Pe.Standalone,!0);break;case\"bbbb\":t=J(0,q.Wide,Pe.Standalone,!0);break;case\"bbbbb\":t=J(0,q.Narrow,Pe.Standalone,!0);break;case\"B\":case\"BB\":case\"BBB\":t=J(0,q.Abbreviated,Pe.Format,!0);break;case\"BBBB\":t=J(0,q.Wide,Pe.Format,!0);break;case\"BBBBB\":t=J(0,q.Narrow,Pe.Format,!0);break;case\"h\":t=ge(3,1,-12);break;case\"hh\":t=ge(3,2,-12);break;case\"H\":t=ge(3,1);break;case\"HH\":t=ge(3,2);break;case\"m\":t=ge(4,1);break;case\"mm\":t=ge(4,2);break;case\"s\":t=ge(5,1);break;case\"ss\":t=ge(5,2);break;case\"S\":t=ge(6,1);break;case\"SS\":t=ge(6,2);break;case\"SSS\":t=ge(6,3);break;case\"Z\":case\"ZZ\":case\"ZZZ\":t=Kc(0);break;case\"ZZZZZ\":t=Kc(3);break;case\"O\":case\"OO\":case\"OOO\":case\"z\":case\"zz\":case\"zzz\":t=Kc(1);break;case\"OOOO\":case\"ZZZZ\":case\"zzzz\":t=Kc(2);break;default:return null}return Xh[e]=t,t}function b_(e,t){e=e.replace(/:/g,\"\");let n=Date.parse(\"Jan 01, 1970 00:00:00 \"+e)/6e4;return isNaN(n)?t:n}function D0(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function w0(e,t,n){let o=e.getTimezoneOffset(),i=b_(t,o);return D0(e,-1*(i-o))}function I0(e){if(t_(e))return e;if(typeof e==\"number\"&&!isNaN(e))return new Date(e);if(typeof e==\"string\"){if(e=e.trim(),/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(e)){let[o,i=1,s=1]=e.split(\"-\").map(a=>+a);return Jc(o,i-1,s)}let n=parseFloat(e);if(!isNaN(e-n))return new Date(n);let r;if(r=e.match(p0))return C0(r)}let t=new Date(e);if(!t_(t))throw new _(2302,!1);return t}function C0(e){let t=new Date(0),n=0,r=0,o=e[8]?t.setUTCFullYear:t.setFullYear,i=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),o.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let s=Number(e[4]||0)-n,a=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(\"0.\"+(e[7]||0))*1e3);return i.call(t,s,a,c,l),t}function t_(e){return e instanceof Date&&!isNaN(e.valueOf())}var T0=/^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/,n_=22,el=\".\",es=\"0\",S0=\";\",M0=\",\",Jh=\"#\",r_=\"\\xA4\";function x0(e,t,n,r,o,i,s=!1){let a=\"\",c=!1;if(!isFinite(e))a=Gt(n,Qe.Infinity);else{let l=N0(e);s&&(l=A0(l));let u=t.minInt,d=t.minFrac,p=t.maxFrac;if(i){let K=i.match(T0);if(K===null)throw new _(2306,!1);let te=K[1],Xn=K[3],Vs=K[5];te!=null&&(u=ep(te)),Xn!=null&&(d=ep(Xn)),Vs!=null?p=ep(Vs):Xn!=null&&d>p&&(p=d)}O0(l,d,p);let f=l.digits,g=l.integerLen,y=l.exponent,D=[];for(c=f.every(K=>!K);g<u;g++)f.unshift(0);for(;g<0;g++)f.unshift(0);g>0?D=f.splice(g,f.length):(D=f,f=[0]);let w=[];for(f.length>=t.lgSize&&w.unshift(f.splice(-t.lgSize,f.length).join(\"\"));f.length>t.gSize;)w.unshift(f.splice(-t.gSize,f.length).join(\"\"));f.length&&w.unshift(f.join(\"\")),a=w.join(Gt(n,r)),D.length&&(a+=Gt(n,o)+D.join(\"\")),y&&(a+=Gt(n,Qe.Exponential)+\"+\"+y)}return e<0&&!c?a=t.negPre+a+t.negSuf:a=t.posPre+a+t.posSuf,a}function __(e,t,n,r,o){let i=d_(t,np.Currency),s=R0(i,Gt(t,Qe.MinusSign));return s.minFrac=g_(r),s.maxFrac=s.minFrac,x0(e,s,t,Qe.CurrencyGroup,Qe.CurrencyDecimal,o).replace(r_,n).replace(r_,\"\").trim()}function R0(e,t=\"-\"){let n={minInt:1,minFrac:0,maxFrac:0,posPre:\"\",posSuf:\"\",negPre:\"\",negSuf:\"\",gSize:0,lgSize:0},r=e.split(S0),o=r[0],i=r[1],s=o.indexOf(el)!==-1?o.split(el):[o.substring(0,o.lastIndexOf(es)+1),o.substring(o.lastIndexOf(es)+1)],a=s[0],c=s[1]||\"\";n.posPre=a.substring(0,a.indexOf(Jh));for(let u=0;u<c.length;u++){let d=c.charAt(u);d===es?n.minFrac=n.maxFrac=u+1:d===Jh?n.maxFrac=u+1:n.posSuf+=d}let l=a.split(M0);if(n.gSize=l[1]?l[1].length:0,n.lgSize=l[2]||l[1]?(l[2]||l[1]).length:0,i){let u=o.length-n.posPre.length-n.posSuf.length,d=i.indexOf(Jh);n.negPre=i.substring(0,d).replace(/'/g,\"\"),n.negSuf=i.slice(d+u).replace(/'/g,\"\")}else n.negPre=t+n.posPre,n.negSuf=n.posSuf;return n}function A0(e){if(e.digits[0]===0)return e;let t=e.digits.length-e.integerLen;return e.exponent?e.exponent+=2:(t===0?e.digits.push(0,0):t===1&&e.digits.push(0),e.integerLen+=2),e}function N0(e){let t=Math.abs(e)+\"\",n=0,r,o,i,s,a;for((o=t.indexOf(el))>-1&&(t=t.replace(el,\"\")),(i=t.search(/e/i))>0?(o<0&&(o=i),o+=+t.slice(i+1),t=t.substring(0,i)):o<0&&(o=t.length),i=0;t.charAt(i)===es;i++);if(i===(a=t.length))r=[0],o=1;else{for(a--;t.charAt(a)===es;)a--;for(o-=i,r=[],s=0;i<=a;i++,s++)r[s]=Number(t.charAt(i))}return o>n_&&(r=r.splice(0,n_-1),n=o-1,o=1),{digits:r,exponent:n,integerLen:o}}function O0(e,t,n){if(t>n)throw new _(2307,!1);let r=e.digits,o=r.length-e.integerLen,i=Math.min(Math.max(t,o),n),s=i+e.integerLen,a=r[s];if(s>0){r.splice(Math.max(e.integerLen,s));for(let d=s;d<r.length;d++)r[d]=0}else{o=Math.max(0,o),e.integerLen=1,r.length=Math.max(1,s=i+1),r[0]=0;for(let d=1;d<s;d++)r[d]=0}if(a>=5)if(s-1<0){for(let d=0;d>s;d--)r.unshift(0),e.integerLen++;r.unshift(1),e.integerLen++}else r[s-1]++;for(;o<Math.max(0,i);o++)r.push(0);let c=i!==0,l=t+e.integerLen,u=r.reduceRight(function(d,p,f,g){return p=p+d,g[f]=p<10?p:p-10,c&&(g[f]===0&&f>=l?g.pop():c=!1),p>=10?1:0},0);u&&(r.unshift(u),e.integerLen++)}function ep(e){let t=parseInt(e);if(isNaN(t))throw new _(2305,!1);return t}var tp=/\\s+/,o_=[],k0=(()=>{class e{_ngEl;_renderer;initialClasses=o_;rawClass;stateMap=new Map;constructor(n,r){this._ngEl=n,this._renderer=r}set klass(n){this.initialClasses=n!=null?n.trim().split(tp):o_}set ngClass(n){this.rawClass=typeof n==\"string\"?n.trim().split(tp):n}ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);let n=this.rawClass;if(Array.isArray(n)||n instanceof Set)for(let r of n)this._updateState(r,!0);else if(n!=null)for(let r of Object.keys(n))this._updateState(r,!!n[r]);this._applyStateDiff()}_updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r&&(o.changed=!0,o.enabled=r),o.touched=!0):this.stateMap.set(n,{enabled:r,changed:!0,touched:!0})}_applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.changed?(this._toggleClass(r,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(r,!1),this.stateMap.delete(r)),o.touched=!1}}_toggleClass(n,r){n=n.trim(),n.length>0&&n.split(tp).forEach(o=>{r?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static \\u0275fac=function(r){return new(r||e)(oe(me),oe(Vn))};static \\u0275dir=we({type:e,selectors:[[\"\",\"ngClass\",\"\"]],inputs:{klass:[0,\"class\",\"klass\"],ngClass:\"ngClass\"}})}return e})();var P0=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;constructor(n){this._viewContainerRef=n}ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContainerRef;if(this._viewRef&&r.remove(r.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let o=this._createContextForwardProxy();this._viewRef=r.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,r,o):!1,get:(n,r,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,r,o)}})}static \\u0275fac=function(r){return new(r||e)(oe(Hn))};static \\u0275dir=we({type:e,selectors:[[\"\",\"ngTemplateOutlet\",\"\"]],inputs:{ngTemplateOutletContext:\"ngTemplateOutletContext\",ngTemplateOutlet:\"ngTemplateOutlet\",ngTemplateOutletInjector:\"ngTemplateOutletInjector\"},features:[fn]})}return e})();function E_(e,t){return new _(2100,!1)}var F0=\"mediumDate\",D_=new E(\"\"),w_=new E(\"\"),L0=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOptions=o}transform(n,r,o,i){if(n==null||n===\"\"||n!==n)return null;try{let s=r??this.defaultOptions?.dateFormat??F0,a=o??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return v_(n,s,i||this.locale,a)}catch(s){throw E_(e,s.message)}}static \\u0275fac=function(r){return new(r||e)(oe(So,16),oe(D_,24),oe(w_,24))};static \\u0275pipe=Fc({name:\"date\",type:e,pure:!0})}return e})();var j0=(()=>{class e{_locale;_defaultCurrencyCode;constructor(n,r=\"USD\"){this._locale=n,this._defaultCurrencyCode=r}transform(n,r=this._defaultCurrencyCode,o=\"symbol\",i,s){if(!B0(n))return null;s||=this._locale,typeof o==\"boolean\"&&(o=o?\"symbol\":\"code\");let a=r||this._defaultCurrencyCode;o!==\"code\"&&(o===\"symbol\"||o===\"symbol-narrow\"?a=m_(a,o===\"symbol\"?\"wide\":\"narrow\",s):a=o);try{let c=U0(n);return __(c,s,a,r,i)}catch(c){throw E_(e,c.message)}}static \\u0275fac=function(r){return new(r||e)(oe(So,16),oe(Lh,16))};static \\u0275pipe=Fc({name:\"currency\",type:e,pure:!0})}return e})();function B0(e){return!(e==null||e===\"\"||e!==e)}function U0(e){if(typeof e==\"string\"&&!isNaN(Number(e)-parseFloat(e)))return Number(e);if(typeof e!=\"number\")throw new _(2309,!1);return e}function ts(e,t){t=encodeURIComponent(t);for(let n of e.split(\";\")){let r=n.indexOf(\"=\"),[o,i]=r==-1?[n,\"\"]:[n.slice(0,r),n.slice(r+1)];if(o.trim()===t)return decodeURIComponent(i)}return null}var Nr=class{};var rp=\"browser\",$0=\"server\";function I_(e){return e===rp}function C_(e){return e===$0}var rl=new E(\"\"),ap=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(n,r){this._zone=r,n.forEach(o=>{o.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListener(n,r,o,i)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(i=>i.supports(n)),!r)throw new _(5101,!1);return this._eventNameToPlugin.set(n,r),r}static \\u0275fac=function(r){return new(r||e)(S(rl),S(B))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})(),ns=class{_doc;constructor(t){this._doc=t}manager},tl=\"ng-app-id\";function T_(e){for(let t of e)t.remove()}function S_(e,t){let n=t.createElement(\"style\");return n.textContent=e,n}function W0(e,t,n,r){let o=e.head?.querySelectorAll(`style[${tl}=\"${t}\"],link[${tl}=\"${t}\"]`);if(o)for(let i of o)i.removeAttribute(tl),i instanceof HTMLLinkElement?r.set(i.href.slice(i.href.lastIndexOf(\"/\")+1),{usage:0,elements:[i]}):i.textContent&&n.set(i.textContent,{usage:0,elements:[i]})}function ip(e,t){let n=t.createElement(\"link\");return n.setAttribute(\"rel\",\"stylesheet\"),n.setAttribute(\"href\",e),n}var cp=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;isServer;constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.isServer=C_(i),W0(n,r,this.inline,this.external),this.hosts.add(n.head)}addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,S_);r?.forEach(o=>this.addUsage(o,this.external,ip))}removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.forEach(o=>this.removeUsage(o,this.external))}addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(n,this.doc)))})}removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(T_(o.elements),r.delete(n)))}ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external])T_(n);this.hosts.clear()}addHost(n){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.push(this.addElement(n,S_(r,this.doc)));for(let[r,{elements:o}]of this.external)o.push(this.addElement(n,ip(r,this.doc)))}removeHost(n){this.hosts.delete(n)}addElement(n,r){return this.nonce&&r.setAttribute(\"nonce\",this.nonce),this.isServer&&r.setAttribute(tl,this.appId),n.appendChild(r)}static \\u0275fac=function(r){return new(r||e)(S(H),S(Bn),S(Io,8),S(Un))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})(),op={svg:\"http://www.w3.org/2000/svg\",xhtml:\"http://www.w3.org/1999/xhtml\",xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\",math:\"http://www.w3.org/1998/Math/MathML\"},lp=/%COMP%/g;var x_=\"%COMP%\",G0=`_nghost-${x_}`,q0=`_ngcontent-${x_}`,Z0=!0,Y0=new E(\"\",{providedIn:\"root\",factory:()=>Z0});function K0(e){return q0.replace(lp,e)}function Q0(e){return G0.replace(lp,e)}function R_(e,t){return t.map(n=>n.replace(lp,e))}var up=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;platformId;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;platformIsServer;constructor(n,r,o,i,s,a,c,l=null,u=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.platformId=a,this.ngZone=c,this.nonce=l,this.tracingService=u,this.platformIsServer=!1,this.defaultRenderer=new rs(n,s,c,this.platformIsServer,this.tracingService)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.getOrCreateRenderer(n,r);return o instanceof nl?o.applyToHost(n):o instanceof os&&o.applyStyles(),o}getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(!i){let s=this.doc,a=this.ngZone,c=this.eventManager,l=this.sharedStylesHost,u=this.removeStylesOnCompDestroy,d=this.platformIsServer,p=this.tracingService;switch(r.encapsulation){case un.Emulated:i=new nl(c,l,r,this.appId,u,s,a,d,p);break;case un.ShadowDom:return new sp(c,l,n,r,s,a,this.nonce,d,p);default:i=new os(c,l,r,u,s,a,d,p);break}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(n){this.rendererByCompId.delete(n)}static \\u0275fac=function(r){return new(r||e)(S(ap),S(cp),S(Bn),S(Y0),S(H),S(Un),S(B),S(Io),S($n,8))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})(),rs=class{eventManager;doc;ngZone;platformIsServer;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(t,n,r,o,i){this.eventManager=t,this.doc=n,this.ngZone=r,this.platformIsServer=o,this.tracingService=i}destroy(){}destroyNode=null;createElement(t,n){return n?this.doc.createElementNS(op[n]||n,t):this.doc.createElement(t)}createComment(t){return this.doc.createComment(t)}createText(t){return this.doc.createTextNode(t)}appendChild(t,n){(M_(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){t&&(M_(t)?t.content:t).insertBefore(n,r)}removeChild(t,n){n.remove()}selectRootElement(t,n){let r=typeof t==\"string\"?this.doc.querySelector(t):t;if(!r)throw new _(-5104,!1);return n||(r.textContent=\"\"),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,o){if(o){n=o+\":\"+n;let i=op[o];i?t.setAttributeNS(i,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){let o=op[r];o?t.removeAttributeNS(o,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,o){o&($t.DashCase|$t.Important)?t.style.setProperty(n,r,o&$t.Important?\"important\":\"\"):t.style[n]=r}removeStyle(t,n,r){r&$t.DashCase?t.style.removeProperty(n):t.style[n]=\"\"}setProperty(t,n,r){t!=null&&(t[n]=r)}setValue(t,n){t.nodeValue=n}listen(t,n,r,o){if(typeof t==\"string\"&&(t=gn().getGlobalEventTarget(this.doc,t),!t))throw new _(5102,!1);let i=this.decoratePreventDefault(r);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(t,n,i)),this.eventManager.addEventListener(t,n,i,o)}decoratePreventDefault(t){return n=>{if(n===\"__ngUnwrap__\")return t;t(n)===!1&&n.preventDefault()}}};function M_(e){return e.tagName===\"TEMPLATE\"&&e.content!==void 0}var sp=class extends rs{sharedStylesHost;hostEl;shadowRoot;constructor(t,n,r,o,i,s,a,c,l){super(t,i,s,c,l),this.sharedStylesHost=n,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:\"open\"}),this.sharedStylesHost.addHost(this.shadowRoot);let u=o.styles;u=R_(o.id,u);for(let p of u){let f=document.createElement(\"style\");a&&f.setAttribute(\"nonce\",a),f.textContent=p,this.shadowRoot.appendChild(f)}let d=o.getExternalStyles?.();if(d)for(let p of d){let f=ip(p,i);a&&f.setAttribute(\"nonce\",a),this.shadowRoot.appendChild(f)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(null,n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},os=class extends rs{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(t,n,r,o,i,s,a,c,l){super(t,i,s,a,c),this.sharedStylesHost=n,this.removeStylesOnCompDestroy=o;let u=r.styles;this.styles=l?R_(l,u):u,this.styleUrls=r.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},nl=class extends os{contentAttr;hostAttr;constructor(t,n,r,o,i,s,a,c,l){let u=o+\"-\"+r.id;super(t,n,r,i,s,a,c,l,u),this.contentAttr=K0(u),this.hostAttr=Q0(u)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,\"\")}createElement(t,n){let r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,\"\"),r}};var ol=class e extends Ki{supportsDOMEvents=!0;static makeCurrent(){Zh(new e)}onAndCancel(t,n,r,o){return t.addEventListener(n,r,o),()=>{t.removeEventListener(n,r,o)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.remove()}createElement(t,n){return n=n||this.getDefaultDocument(),n.createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument(\"fakeTitle\")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return n===\"window\"?window:n===\"document\"?t:n===\"body\"?t.body:null}getBaseHref(t){let n=X0();return n==null?null:J0(n)}resetBaseElement(){is=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return ts(document.cookie,t)}},is=null;function X0(){return is=is||document.head.querySelector(\"base\"),is?is.getAttribute(\"href\"):null}function J0(e){return new URL(e,document.baseURI).pathname}var ex=(()=>{class e{build(){return new XMLHttpRequest}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})(),N_=(()=>{class e extends ns{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.removeEventListener(n,r,o,i)}removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}static \\u0275fac=function(r){return new(r||e)(S(H))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})(),A_=[\"alt\",\"control\",\"meta\",\"shift\"],tx={\"\\b\":\"Backspace\",\"\t\":\"Tab\",\"\\x7F\":\"Delete\",\"\\x1B\":\"Escape\",Del:\"Delete\",Esc:\"Escape\",Left:\"ArrowLeft\",Right:\"ArrowRight\",Up:\"ArrowUp\",Down:\"ArrowDown\",Menu:\"ContextMenu\",Scroll:\"ScrollLock\",Win:\"OS\"},nx={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},O_=(()=>{class e extends ns{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>gn().onAndCancel(n,s.domEventName,a,i))}static parseEventName(n){let r=n.toLowerCase().split(\".\"),o=r.shift();if(r.length===0||!(o===\"keydown\"||o===\"keyup\"))return null;let i=e._normalizeKey(r.pop()),s=\"\",a=r.indexOf(\"code\");if(a>-1&&(r.splice(a,1),s=\"code.\"),A_.forEach(l=>{let u=r.indexOf(l);u>-1&&(r.splice(u,1),s+=l+\".\")}),s+=i,r.length!=0||i.length===0)return null;let c={};return c.domEventName=o,c.fullKey=s,c}static matchEventFullKeyCode(n,r){let o=tx[n.key]||n.key,i=\"\";return r.indexOf(\"code.\")>-1&&(o=n.code,i=\"code.\"),o==null||!o?!1:(o=o.toLowerCase(),o===\" \"?o=\"space\":o===\".\"&&(o=\"dot\"),A_.forEach(s=>{if(s!==o){let a=nx[s];a(n)&&(i+=s+\".\")}}),i+=o,i===r)}static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o.runGuarded(()=>r(i))}}static _normalizeKey(n){return n===\"esc\"?\"escape\":n}static \\u0275fac=function(r){return new(r||e)(S(H))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})();function rx(e,t){return zb(v({rootComponent:e},ox(t)))}function ox(e){return{appProviders:[...lx,...e?.providers??[]],platformProviders:cx}}function ix(){ol.makeCurrent()}function sx(){return new Je}function ax(){return Vf(document),document}var cx=[{provide:Un,useValue:rp},{provide:Ic,useValue:ix,multi:!0},{provide:H,useFactory:ax}];var lx=[{provide:mi,useValue:\"root\"},{provide:Je,useFactory:sx},{provide:rl,useClass:N_,multi:!0,deps:[H]},{provide:rl,useClass:O_,multi:!0,deps:[H]},up,cp,ap,{provide:It,useExisting:up},{provide:Nr,useClass:ex},[]];var Ao=class{},ss=class{},Gn=class e{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(t){t?typeof t==\"string\"?this.lazyInit=()=>{this.headers=new Map,t.split(`\n`).forEach(n=>{let r=n.indexOf(\":\");if(r>0){let o=n.slice(0,r),i=n.slice(r+1).trim();this.addHeaderEntry(o,i)}})}:typeof Headers<\"u\"&&t instanceof Headers?(this.headers=new Map,t.forEach((n,r)=>{this.addHeaderEntry(r,n)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(t).forEach(([n,r])=>{this.setHeaderEntries(n,r)})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();let n=this.headers.get(t.toLowerCase());return n&&n.length>0?n[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,n){return this.clone({name:t,value:n,op:\"a\"})}set(t,n){return this.clone({name:t,value:n,op:\"s\"})}delete(t,n){return this.clone({name:t,value:n,op:\"d\"})}maybeSetNormalizedName(t,n){this.normalizedNames.has(n)||this.normalizedNames.set(n,t)}init(){this.lazyInit&&(this.lazyInit instanceof e?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(n=>{this.headers.set(n,t.headers.get(n)),this.normalizedNames.set(n,t.normalizedNames.get(n))})}clone(t){let n=new e;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof e?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([t]),n}applyUpdate(t){let n=t.name.toLowerCase();switch(t.op){case\"a\":case\"s\":let r=t.value;if(typeof r==\"string\"&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(t.name,n);let o=(t.op===\"a\"?this.headers.get(n):void 0)||[];o.push(...r),this.headers.set(n,o);break;case\"d\":let i=t.value;if(!i)this.headers.delete(n),this.normalizedNames.delete(n);else{let s=this.headers.get(n);if(!s)return;s=s.filter(a=>i.indexOf(a)===-1),s.length===0?(this.headers.delete(n),this.normalizedNames.delete(n)):this.headers.set(n,s)}break}}addHeaderEntry(t,n){let r=t.toLowerCase();this.maybeSetNormalizedName(t,r),this.headers.has(r)?this.headers.get(r).push(n):this.headers.set(r,[n])}setHeaderEntries(t,n){let r=(Array.isArray(n)?n:[n]).map(i=>i.toString()),o=t.toLowerCase();this.headers.set(o,r),this.maybeSetNormalizedName(t,o)}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(n=>t(this.normalizedNames.get(n),this.headers.get(n)))}};var sl=class{encodeKey(t){return k_(t)}encodeValue(t){return k_(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}};function ux(e,t){let n=new Map;return e.length>0&&e.replace(/^\\?/,\"\").split(\"&\").forEach(o=>{let i=o.indexOf(\"=\"),[s,a]=i==-1?[t.decodeKey(o),\"\"]:[t.decodeKey(o.slice(0,i)),t.decodeValue(o.slice(i+1))],c=n.get(s)||[];c.push(a),n.set(s,c)}),n}var dx=/%(\\d[a-f0-9])/gi,fx={40:\"@\",\"3A\":\":\",24:\"$\",\"2C\":\",\",\"3B\":\";\",\"3D\":\"=\",\"3F\":\"?\",\"2F\":\"/\"};function k_(e){return encodeURIComponent(e).replace(dx,(t,n)=>fx[n]??t)}function il(e){return`${e}`}var Mt=class e{map;encoder;updates=null;cloneFrom=null;constructor(t={}){if(this.encoder=t.encoder||new sl,t.fromString){if(t.fromObject)throw new _(2805,!1);this.map=ux(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(n=>{let r=t.fromObject[n],o=Array.isArray(r)?r.map(il):[il(r)];this.map.set(n,o)})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();let n=this.map.get(t);return n?n[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,n){return this.clone({param:t,value:n,op:\"a\"})}appendAll(t){let n=[];return Object.keys(t).forEach(r=>{let o=t[r];Array.isArray(o)?o.forEach(i=>{n.push({param:r,value:i,op:\"a\"})}):n.push({param:r,value:o,op:\"a\"})}),this.clone(n)}set(t,n){return this.clone({param:t,value:n,op:\"s\"})}delete(t,n){return this.clone({param:t,value:n,op:\"d\"})}toString(){return this.init(),this.keys().map(t=>{let n=this.encoder.encodeKey(t);return this.map.get(t).map(r=>n+\"=\"+this.encoder.encodeValue(r)).join(\"&\")}).filter(t=>t!==\"\").join(\"&\")}clone(t){let n=new e({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat(t),n}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case\"a\":case\"s\":let n=(t.op===\"a\"?this.map.get(t.param):void 0)||[];n.push(il(t.value)),this.map.set(t.param,n);break;case\"d\":if(t.value!==void 0){let r=this.map.get(t.param)||[],o=r.indexOf(il(t.value));o!==-1&&r.splice(o,1),r.length>0?this.map.set(t.param,r):this.map.delete(t.param)}else{this.map.delete(t.param);break}}}),this.cloneFrom=this.updates=null)}};var al=class{map=new Map;set(t,n){return this.map.set(t,n),this}get(t){return this.map.has(t)||this.map.set(t,t.defaultValue()),this.map.get(t)}delete(t){return this.map.delete(t),this}has(t){return this.map.has(t)}keys(){return this.map.keys()}};function hx(e){switch(e){case\"DELETE\":case\"GET\":case\"HEAD\":case\"OPTIONS\":case\"JSONP\":return!1;default:return!0}}function P_(e){return typeof ArrayBuffer<\"u\"&&e instanceof ArrayBuffer}function F_(e){return typeof Blob<\"u\"&&e instanceof Blob}function L_(e){return typeof FormData<\"u\"&&e instanceof FormData}function px(e){return typeof URLSearchParams<\"u\"&&e instanceof URLSearchParams}var j_=\"Content-Type\",B_=\"Accept\",U_=\"X-Request-URL\",V_=\"text/plain\",H_=\"application/json\",mx=`${H_}, ${V_}, */*`,Ro=class e{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;keepalive=!1;responseType=\"json\";method;params;urlWithParams;transferCache;constructor(t,n,r,o){this.url=n,this.method=t.toUpperCase();let i;if(hx(this.method)||o?(this.body=r!==void 0?r:null,i=o):i=r,i&&(this.reportProgress=!!i.reportProgress,this.withCredentials=!!i.withCredentials,this.keepalive=!!i.keepalive,i.responseType&&(this.responseType=i.responseType),i.headers&&(this.headers=i.headers),i.context&&(this.context=i.context),i.params&&(this.params=i.params),this.transferCache=i.transferCache),this.headers??=new Gn,this.context??=new al,!this.params)this.params=new Mt,this.urlWithParams=n;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=n;else{let a=n.indexOf(\"?\"),c=a===-1?\"?\":a<n.length-1?\"&\":\"\";this.urlWithParams=n+c+s}}}serializeBody(){return this.body===null?null:typeof this.body==\"string\"||P_(this.body)||F_(this.body)||L_(this.body)||px(this.body)?this.body:this.body instanceof Mt?this.body.toString():typeof this.body==\"object\"||typeof this.body==\"boolean\"||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return this.body===null||L_(this.body)?null:F_(this.body)?this.body.type||null:P_(this.body)?null:typeof this.body==\"string\"?V_:this.body instanceof Mt?\"application/x-www-form-urlencoded;charset=UTF-8\":typeof this.body==\"object\"||typeof this.body==\"number\"||typeof this.body==\"boolean\"?H_:null}clone(t={}){let n=t.method||this.method,r=t.url||this.url,o=t.responseType||this.responseType,i=t.keepalive??this.keepalive,s=t.transferCache??this.transferCache,a=t.body!==void 0?t.body:this.body,c=t.withCredentials??this.withCredentials,l=t.reportProgress??this.reportProgress,u=t.headers||this.headers,d=t.params||this.params,p=t.context??this.context;return t.setHeaders!==void 0&&(u=Object.keys(t.setHeaders).reduce((f,g)=>f.set(g,t.setHeaders[g]),u)),t.setParams&&(d=Object.keys(t.setParams).reduce((f,g)=>f.set(g,t.setParams[g]),d)),new e(n,r,a,{params:d,headers:u,context:p,reportProgress:l,responseType:o,withCredentials:c,transferCache:s,keepalive:i})}},Or=function(e){return e[e.Sent=0]=\"Sent\",e[e.UploadProgress=1]=\"UploadProgress\",e[e.ResponseHeader=2]=\"ResponseHeader\",e[e.DownloadProgress=3]=\"DownloadProgress\",e[e.Response=4]=\"Response\",e[e.User=5]=\"User\",e}(Or||{}),No=class{headers;status;statusText;url;ok;type;constructor(t,n=200,r=\"OK\"){this.headers=t.headers||new Gn,this.status=t.status!==void 0?t.status:n,this.statusText=t.statusText||r,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}},cl=class e extends No{constructor(t={}){super(t)}type=Or.ResponseHeader;clone(t={}){return new e({headers:t.headers||this.headers,status:t.status!==void 0?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}},as=class e extends No{body;constructor(t={}){super(t),this.body=t.body!==void 0?t.body:null}type=Or.Response;clone(t={}){return new e({body:t.body!==void 0?t.body:this.body,headers:t.headers||this.headers,status:t.status!==void 0?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}},cs=class extends No{name=\"HttpErrorResponse\";message;error;ok=!1;constructor(t){super(t,0,\"Unknown Error\"),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${t.url||\"(unknown url)\"}`:this.message=`Http failure response for ${t.url||\"(unknown url)\"}: ${t.status} ${t.statusText}`,this.error=t.error||null}},gx=200,vx=204;function dp(e,t){return{body:t,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials,transferCache:e.transferCache,keepalive:e.keepalive}}var ul=(()=>{class e{handler;constructor(n){this.handler=n}request(n,r,o={}){let i;if(n instanceof Ro)i=n;else{let c;o.headers instanceof Gn?c=o.headers:c=new Gn(o.headers);let l;o.params&&(o.params instanceof Mt?l=o.params:l=new Mt({fromObject:o.params})),i=new Ro(n,r,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:l,reportProgress:o.reportProgress,responseType:o.responseType||\"json\",withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive})}let s=C(i).pipe(nn(c=>this.handler.handle(c)));if(n instanceof Ro||o.observe===\"events\")return s;let a=s.pipe(fe(c=>c instanceof as));switch(o.observe||\"body\"){case\"body\":switch(i.responseType){case\"arraybuffer\":return a.pipe(T(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new _(2806,!1);return c.body}));case\"blob\":return a.pipe(T(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new _(2807,!1);return c.body}));case\"text\":return a.pipe(T(c=>{if(c.body!==null&&typeof c.body!=\"string\")throw new _(2808,!1);return c.body}));case\"json\":default:return a.pipe(T(c=>c.body))}case\"response\":return a;default:throw new _(2809,!1)}}delete(n,r={}){return this.request(\"DELETE\",n,r)}get(n,r={}){return this.request(\"GET\",n,r)}head(n,r={}){return this.request(\"HEAD\",n,r)}jsonp(n,r){return this.request(\"JSONP\",n,{params:new Mt().append(r,\"JSONP_CALLBACK\"),observe:\"body\",responseType:\"json\"})}options(n,r={}){return this.request(\"OPTIONS\",n,r)}patch(n,r,o={}){return this.request(\"PATCH\",n,dp(o,r))}post(n,r,o={}){return this.request(\"POST\",n,dp(o,r))}put(n,r,o={}){return this.request(\"PUT\",n,dp(o,r))}static \\u0275fac=function(r){return new(r||e)(S(Ao))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})();var yx=new E(\"\");function bx(e,t){return t(e)}function _x(e,t,n){return(r,o)=>Le(n,()=>t(r,i=>e(i,o)))}var hp=new E(\"\"),$_=new E(\"\"),z_=new E(\"\",{providedIn:\"root\",factory:()=>!0});var ll=(()=>{class e extends Ao{backend;injector;chain=null;pendingTasks=h(Ti);contributeToStability=h(z_);constructor(n,r){super(),this.backend=n,this.injector=r}handle(n){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(hp),...this.injector.get($_,[])]));this.chain=r.reduceRight((o,i)=>_x(o,i,this.injector),bx)}if(this.contributeToStability){let r=this.pendingTasks.add();return this.chain(n,o=>this.backend.handle(o)).pipe(Tn(r))}else return this.chain(n,r=>this.backend.handle(r))}static \\u0275fac=function(r){return new(r||e)(S(ss),S(ue))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})();var Ex=/^\\)\\]\\}',?\\n/,Dx=RegExp(`^${U_}:`,\"m\");function wx(e){return\"responseURL\"in e&&e.responseURL?e.responseURL:Dx.test(e.getAllResponseHeaders())?e.getResponseHeader(U_):null}var fp=(()=>{class e{xhrFactory;constructor(n){this.xhrFactory=n}handle(n){if(n.method===\"JSONP\")throw new _(-2800,!1);n.keepalive;let r=this.xhrFactory;return(r.\\u0275loadImpl?ne(r.\\u0275loadImpl()):C(null)).pipe(qe(()=>new P(i=>{let s=r.build();if(s.open(n.method,n.urlWithParams),n.withCredentials&&(s.withCredentials=!0),n.headers.forEach((y,D)=>s.setRequestHeader(y,D.join(\",\"))),n.headers.has(B_)||s.setRequestHeader(B_,mx),!n.headers.has(j_)){let y=n.detectContentTypeHeader();y!==null&&s.setRequestHeader(j_,y)}if(n.responseType){let y=n.responseType.toLowerCase();s.responseType=y!==\"json\"?y:\"text\"}let a=n.serializeBody(),c=null,l=()=>{if(c!==null)return c;let y=s.statusText||\"OK\",D=new Gn(s.getAllResponseHeaders()),w=wx(s)||n.url;return c=new cl({headers:D,status:s.status,statusText:y,url:w}),c},u=()=>{let{headers:y,status:D,statusText:w,url:K}=l(),te=null;D!==vx&&(te=typeof s.response>\"u\"?s.responseText:s.response),D===0&&(D=te?gx:0);let Xn=D>=200&&D<300;if(n.responseType===\"json\"&&typeof te==\"string\"){let Vs=te;te=te.replace(Ex,\"\");try{te=te!==\"\"?JSON.parse(te):null}catch(CD){te=Vs,Xn&&(Xn=!1,te={error:CD,text:te})}}Xn?(i.next(new as({body:te,headers:y,status:D,statusText:w,url:K||void 0})),i.complete()):i.error(new cs({error:te,headers:y,status:D,statusText:w,url:K||void 0}))},d=y=>{let{url:D}=l(),w=new cs({error:y,status:s.status||0,statusText:s.statusText||\"Unknown Error\",url:D||void 0});i.error(w)},p=!1,f=y=>{p||(i.next(l()),p=!0);let D={type:Or.DownloadProgress,loaded:y.loaded};y.lengthComputable&&(D.total=y.total),n.responseType===\"text\"&&s.responseText&&(D.partialText=s.responseText),i.next(D)},g=y=>{let D={type:Or.UploadProgress,loaded:y.loaded};y.lengthComputable&&(D.total=y.total),i.next(D)};return s.addEventListener(\"load\",u),s.addEventListener(\"error\",d),s.addEventListener(\"timeout\",d),s.addEventListener(\"abort\",d),n.reportProgress&&(s.addEventListener(\"progress\",f),a!==null&&s.upload&&s.upload.addEventListener(\"progress\",g)),s.send(a),i.next({type:Or.Sent}),()=>{s.removeEventListener(\"error\",d),s.removeEventListener(\"abort\",d),s.removeEventListener(\"load\",u),s.removeEventListener(\"timeout\",d),n.reportProgress&&(s.removeEventListener(\"progress\",f),a!==null&&s.upload&&s.upload.removeEventListener(\"progress\",g)),s.readyState!==s.DONE&&s.abort()}})))}static \\u0275fac=function(r){return new(r||e)(S(Nr))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})(),W_=new E(\"\"),Ix=\"XSRF-TOKEN\",Cx=new E(\"\",{providedIn:\"root\",factory:()=>Ix}),Tx=\"X-XSRF-TOKEN\",Sx=new E(\"\",{providedIn:\"root\",factory:()=>Tx}),ls=class{},Mx=(()=>{class e{doc;cookieName;lastCookieString=\"\";lastToken=null;parseCount=0;constructor(n,r){this.doc=n,this.cookieName=r}getToken(){let n=this.doc.cookie||\"\";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=ts(n,this.cookieName),this.lastCookieString=n),this.lastToken}static \\u0275fac=function(r){return new(r||e)(S(H),S(Cx))};static \\u0275prov=b({token:e,factory:e.\\u0275fac})}return e})();function xx(e,t){let n=e.url.toLowerCase();if(!h(W_)||e.method===\"GET\"||e.method===\"HEAD\"||n.startsWith(\"http://\")||n.startsWith(\"https://\"))return t(e);let r=h(ls).getToken(),o=h(Sx);return r!=null&&!e.headers.has(o)&&(e=e.clone({headers:e.headers.set(o,r)})),t(e)}var pp=function(e){return e[e.Interceptors=0]=\"Interceptors\",e[e.LegacyInterceptors=1]=\"LegacyInterceptors\",e[e.CustomXsrfConfiguration=2]=\"CustomXsrfConfiguration\",e[e.NoXsrfProtection=3]=\"NoXsrfProtection\",e[e.JsonpSupport=4]=\"JsonpSupport\",e[e.RequestsMadeViaParent=5]=\"RequestsMadeViaParent\",e[e.Fetch=6]=\"Fetch\",e}(pp||{});function Rx(e,t){return{\\u0275kind:e,\\u0275providers:t}}function Ax(...e){let t=[ul,fp,ll,{provide:Ao,useExisting:ll},{provide:ss,useFactory:()=>h(yx,{optional:!0})??h(fp)},{provide:hp,useValue:xx,multi:!0},{provide:W_,useValue:!0},{provide:ls,useClass:Mx}];for(let n of e)t.push(...n.\\u0275providers);return vt(t)}function Nx(e){return Rx(pp.Interceptors,e.map(t=>({provide:hp,useValue:t,multi:!0})))}var G_=(()=>{class e{_doc;constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||\"\"}static \\u0275fac=function(r){return new(r||e)(S(H))};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var Ox=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(kx),o},providedIn:\"root\"})}return e})(),kx=(()=>{class e extends Ox{_doc;constructor(n){super(),this._doc=n}sanitize(n,r){if(r==null)return null;switch(n){case Tt.NONE:return r;case Tt.HTML:return hn(r,\"HTML\")?Ct(r):Yf(this._doc,String(r)).toString();case Tt.STYLE:return hn(r,\"Style\")?Ct(r):r;case Tt.SCRIPT:if(hn(r,\"Script\"))return Ct(r);throw new _(5200,!1);case Tt.URL:return hn(r,\"URL\")?Ct(r):Li(String(r));case Tt.RESOURCE_URL:if(hn(r,\"ResourceURL\"))return Ct(r);throw new _(5201,!1);default:throw new _(5202,!1)}}bypassSecurityTrustHtml(n){return zf(n)}bypassSecurityTrustStyle(n){return Wf(n)}bypassSecurityTrustScript(n){return Gf(n)}bypassSecurityTrustUrl(n){return qf(n)}bypassSecurityTrustResourceUrl(n){return Zf(n)}static \\u0275fac=function(r){return new(r||e)(S(H))};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var j=\"primary\",Is=Symbol(\"RouteTitle\"),bp=class{params;constructor(t){this.params=t||{}}has(t){return Object.prototype.hasOwnProperty.call(this.params,t)}get(t){if(this.has(t)){let n=this.params[t];return Array.isArray(n)?n[0]:n}return null}getAll(t){if(this.has(t)){let n=this.params[t];return Array.isArray(n)?n:[n]}return[]}get keys(){return Object.keys(this.params)}};function Fr(e){return new bp(e)}function eE(e,t,n){let r=n.path.split(\"/\");if(r.length>e.length||n.pathMatch===\"full\"&&(t.hasChildren()||r.length<e.length))return null;let o={};for(let i=0;i<r.length;i++){let s=r[i],a=e[i];if(s[0]===\":\")o[s.substring(1)]=a;else if(s!==a.path)return null}return{consumed:e.slice(0,r.length),posParams:o}}function Fx(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;++n)if(!qt(e[n],t[n]))return!1;return!0}function qt(e,t){let n=e?_p(e):void 0,r=t?_p(t):void 0;if(!n||!r||n.length!=r.length)return!1;let o;for(let i=0;i<n.length;i++)if(o=n[i],!tE(e[o],t[o]))return!1;return!0}function _p(e){return[...Object.keys(e),...Object.getOwnPropertySymbols(e)]}function tE(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;let n=[...e].sort(),r=[...t].sort();return n.every((o,i)=>r[i]===o)}else return e===t}function nE(e){return e.length>0?e[e.length-1]:null}function _n(e){return Pu(e)?e:To(e)?ne(Promise.resolve(e)):C(e)}var Lx={exact:oE,subset:iE},rE={exact:jx,subset:Bx,ignored:()=>!0};function q_(e,t,n){return Lx[n.paths](e.root,t.root,n.matrixParams)&&rE[n.queryParams](e.queryParams,t.queryParams)&&!(n.fragment===\"exact\"&&e.fragment!==t.fragment)}function jx(e,t){return qt(e,t)}function oE(e,t,n){if(!kr(e.segments,t.segments)||!hl(e.segments,t.segments,n)||e.numberOfChildren!==t.numberOfChildren)return!1;for(let r in t.children)if(!e.children[r]||!oE(e.children[r],t.children[r],n))return!1;return!0}function Bx(e,t){return Object.keys(t).length<=Object.keys(e).length&&Object.keys(t).every(n=>tE(e[n],t[n]))}function iE(e,t,n){return sE(e,t,t.segments,n)}function sE(e,t,n,r){if(e.segments.length>n.length){let o=e.segments.slice(0,n.length);return!(!kr(o,n)||t.hasChildren()||!hl(o,n,r))}else if(e.segments.length===n.length){if(!kr(e.segments,n)||!hl(e.segments,n,r))return!1;for(let o in t.children)if(!e.children[o]||!iE(e.children[o],t.children[o],r))return!1;return!0}else{let o=n.slice(0,e.segments.length),i=n.slice(e.segments.length);return!kr(e.segments,o)||!hl(e.segments,o,r)||!e.children[j]?!1:sE(e.children[j],t,i,r)}}function hl(e,t,n){return t.every((r,o)=>rE[n](e[o].parameters,r.parameters))}var Yt=class{root;queryParams;fragment;_queryParamMap;constructor(t=new $([],{}),n={},r=null){this.root=t,this.queryParams=n,this.fragment=r}get queryParamMap(){return this._queryParamMap??=Fr(this.queryParams),this._queryParamMap}toString(){return Hx.serialize(this)}},$=class{segments;children;parent=null;constructor(t,n){this.segments=t,this.children=n,Object.values(n).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return pl(this)}},qn=class{path;parameters;_parameterMap;constructor(t,n){this.path=t,this.parameters=n}get parameterMap(){return this._parameterMap??=Fr(this.parameters),this._parameterMap}toString(){return cE(this)}};function Ux(e,t){return kr(e,t)&&e.every((n,r)=>qt(n.parameters,t[r].parameters))}function kr(e,t){return e.length!==t.length?!1:e.every((n,r)=>n.path===t[r].path)}function Vx(e,t){let n=[];return Object.entries(e.children).forEach(([r,o])=>{r===j&&(n=n.concat(t(o,r)))}),Object.entries(e.children).forEach(([r,o])=>{r!==j&&(n=n.concat(t(o,r)))}),n}var Cs=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>new Lr,providedIn:\"root\"})}return e})(),Lr=class{parse(t){let n=new Dp(t);return new Yt(n.parseRootSegment(),n.parseQueryParams(),n.parseFragment())}serialize(t){let n=`/${us(t.root,!0)}`,r=Wx(t.queryParams),o=typeof t.fragment==\"string\"?`#${$x(t.fragment)}`:\"\";return`${n}${r}${o}`}},Hx=new Lr;function pl(e){return e.segments.map(t=>cE(t)).join(\"/\")}function us(e,t){if(!e.hasChildren())return pl(e);if(t){let n=e.children[j]?us(e.children[j],!1):\"\",r=[];return Object.entries(e.children).forEach(([o,i])=>{o!==j&&r.push(`${o}:${us(i,!1)}`)}),r.length>0?`${n}(${r.join(\"//\")})`:n}else{let n=Vx(e,(r,o)=>o===j?[us(e.children[j],!1)]:[`${o}:${us(r,!1)}`]);return Object.keys(e.children).length===1&&e.children[j]!=null?`${pl(e)}/${n[0]}`:`${pl(e)}/(${n.join(\"//\")})`}}function aE(e){return encodeURIComponent(e).replace(/%40/g,\"@\").replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\")}function dl(e){return aE(e).replace(/%3B/gi,\";\")}function $x(e){return encodeURI(e)}function Ep(e){return aE(e).replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\").replace(/%26/gi,\"&\")}function ml(e){return decodeURIComponent(e)}function Z_(e){return ml(e.replace(/\\+/g,\"%20\"))}function cE(e){return`${Ep(e.path)}${zx(e.parameters)}`}function zx(e){return Object.entries(e).map(([t,n])=>`;${Ep(t)}=${Ep(n)}`).join(\"\")}function Wx(e){let t=Object.entries(e).map(([n,r])=>Array.isArray(r)?r.map(o=>`${dl(n)}=${dl(o)}`).join(\"&\"):`${dl(n)}=${dl(r)}`).filter(n=>n);return t.length?`?${t.join(\"&\")}`:\"\"}var Gx=/^[^\\/()?;#]+/;function mp(e){let t=e.match(Gx);return t?t[0]:\"\"}var qx=/^[^\\/()?;=#]+/;function Zx(e){let t=e.match(qx);return t?t[0]:\"\"}var Yx=/^[^=?&#]+/;function Kx(e){let t=e.match(Yx);return t?t[0]:\"\"}var Qx=/^[^&#]+/;function Xx(e){let t=e.match(Qx);return t?t[0]:\"\"}var Dp=class{url;remaining;constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional(\"/\"),this.remaining===\"\"||this.peekStartsWith(\"?\")||this.peekStartsWith(\"#\")?new $([],{}):new $([],this.parseChildren())}parseQueryParams(){let t={};if(this.consumeOptional(\"?\"))do this.parseQueryParam(t);while(this.consumeOptional(\"&\"));return t}parseFragment(){return this.consumeOptional(\"#\")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining===\"\")return{};this.consumeOptional(\"/\");let t=[];for(this.peekStartsWith(\"(\")||t.push(this.parseSegment());this.peekStartsWith(\"/\")&&!this.peekStartsWith(\"//\")&&!this.peekStartsWith(\"/(\");)this.capture(\"/\"),t.push(this.parseSegment());let n={};this.peekStartsWith(\"/(\")&&(this.capture(\"/\"),n=this.parseParens(!0));let r={};return this.peekStartsWith(\"(\")&&(r=this.parseParens(!1)),(t.length>0||Object.keys(n).length>0)&&(r[j]=new $(t,n)),r}parseSegment(){let t=mp(this.remaining);if(t===\"\"&&this.peekStartsWith(\";\"))throw new _(4009,!1);return this.capture(t),new qn(ml(t),this.parseMatrixParams())}parseMatrixParams(){let t={};for(;this.consumeOptional(\";\");)this.parseParam(t);return t}parseParam(t){let n=Zx(this.remaining);if(!n)return;this.capture(n);let r=\"\";if(this.consumeOptional(\"=\")){let o=mp(this.remaining);o&&(r=o,this.capture(r))}t[ml(n)]=ml(r)}parseQueryParam(t){let n=Kx(this.remaining);if(!n)return;this.capture(n);let r=\"\";if(this.consumeOptional(\"=\")){let s=Xx(this.remaining);s&&(r=s,this.capture(r))}let o=Z_(n),i=Z_(r);if(t.hasOwnProperty(o)){let s=t[o];Array.isArray(s)||(s=[s],t[o]=s),s.push(i)}else t[o]=i}parseParens(t){let n={};for(this.capture(\"(\");!this.consumeOptional(\")\")&&this.remaining.length>0;){let r=mp(this.remaining),o=this.remaining[r.length];if(o!==\"/\"&&o!==\")\"&&o!==\";\")throw new _(4010,!1);let i;r.indexOf(\":\")>-1?(i=r.slice(0,r.indexOf(\":\")),this.capture(i),this.capture(\":\")):t&&(i=j);let s=this.parseChildren();n[i]=Object.keys(s).length===1?s[j]:new $([],s),this.consumeOptional(\"//\")}return n}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return this.peekStartsWith(t)?(this.remaining=this.remaining.substring(t.length),!0):!1}capture(t){if(!this.consumeOptional(t))throw new _(4011,!1)}};function lE(e){return e.segments.length>0?new $([],{[j]:e}):e}function uE(e){let t={};for(let[r,o]of Object.entries(e.children)){let i=uE(o);if(r===j&&i.segments.length===0&&i.hasChildren())for(let[s,a]of Object.entries(i.children))t[s]=a;else(i.segments.length>0||i.hasChildren())&&(t[r]=i)}let n=new $(e.segments,t);return Jx(n)}function Jx(e){if(e.numberOfChildren===1&&e.children[j]){let t=e.children[j];return new $(e.segments.concat(t.segments),t.children)}return e}function Zn(e){return e instanceof Yt}function dE(e,t,n=null,r=null){let o=fE(e);return hE(o,t,n,r)}function fE(e){let t;function n(i){let s={};for(let c of i.children){let l=n(c);s[c.outlet]=l}let a=new $(i.url,s);return i===e&&(t=a),a}let r=n(e.root),o=lE(r);return t??o}function hE(e,t,n,r){let o=e;for(;o.parent;)o=o.parent;if(t.length===0)return gp(o,o,o,n,r);let i=eR(t);if(i.toRoot())return gp(o,o,new $([],{}),n,r);let s=tR(i,o,e),a=s.processChildren?fs(s.segmentGroup,s.index,i.commands):mE(s.segmentGroup,s.index,i.commands);return gp(o,s.segmentGroup,a,n,r)}function gl(e){return typeof e==\"object\"&&e!=null&&!e.outlets&&!e.segmentPath}function ms(e){return typeof e==\"object\"&&e!=null&&e.outlets}function gp(e,t,n,r,o){let i={};r&&Object.entries(r).forEach(([c,l])=>{i[c]=Array.isArray(l)?l.map(u=>`${u}`):`${l}`});let s;e===t?s=n:s=pE(e,t,n);let a=lE(uE(s));return new Yt(a,i,o)}function pE(e,t,n){let r={};return Object.entries(e.children).forEach(([o,i])=>{i===t?r[o]=n:r[o]=pE(i,t,n)}),new $(e.segments,r)}var vl=class{isAbsolute;numberOfDoubleDots;commands;constructor(t,n,r){if(this.isAbsolute=t,this.numberOfDoubleDots=n,this.commands=r,t&&r.length>0&&gl(r[0]))throw new _(4003,!1);let o=r.find(ms);if(o&&o!==nE(r))throw new _(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]==\"/\"}};function eR(e){if(typeof e[0]==\"string\"&&e.length===1&&e[0]===\"/\")return new vl(!0,0,e);let t=0,n=!1,r=e.reduce((o,i,s)=>{if(typeof i==\"object\"&&i!=null){if(i.outlets){let a={};return Object.entries(i.outlets).forEach(([c,l])=>{a[c]=typeof l==\"string\"?l.split(\"/\"):l}),[...o,{outlets:a}]}if(i.segmentPath)return[...o,i.segmentPath]}return typeof i!=\"string\"?[...o,i]:s===0?(i.split(\"/\").forEach((a,c)=>{c==0&&a===\".\"||(c==0&&a===\"\"?n=!0:a===\"..\"?t++:a!=\"\"&&o.push(a))}),o):[...o,i]},[]);return new vl(n,t,r)}var Po=class{segmentGroup;processChildren;index;constructor(t,n,r){this.segmentGroup=t,this.processChildren=n,this.index=r}};function tR(e,t,n){if(e.isAbsolute)return new Po(t,!0,0);if(!n)return new Po(t,!1,NaN);if(n.parent===null)return new Po(n,!0,0);let r=gl(e.commands[0])?0:1,o=n.segments.length-1+r;return nR(n,o,e.numberOfDoubleDots)}function nR(e,t,n){let r=e,o=t,i=n;for(;i>o;){if(i-=o,r=r.parent,!r)throw new _(4005,!1);o=r.segments.length}return new Po(r,!1,o-i)}function rR(e){return ms(e[0])?e[0].outlets:{[j]:e}}function mE(e,t,n){if(e??=new $([],{}),e.segments.length===0&&e.hasChildren())return fs(e,t,n);let r=oR(e,t,n),o=n.slice(r.commandIndex);if(r.match&&r.pathIndex<e.segments.length){let i=new $(e.segments.slice(0,r.pathIndex),{});return i.children[j]=new $(e.segments.slice(r.pathIndex),e.children),fs(i,0,o)}else return r.match&&o.length===0?new $(e.segments,{}):r.match&&!e.hasChildren()?wp(e,t,n):r.match?fs(e,0,o):wp(e,t,n)}function fs(e,t,n){if(n.length===0)return new $(e.segments,{});{let r=rR(n),o={};if(Object.keys(r).some(i=>i!==j)&&e.children[j]&&e.numberOfChildren===1&&e.children[j].segments.length===0){let i=fs(e.children[j],t,n);return new $(e.segments,i.children)}return Object.entries(r).forEach(([i,s])=>{typeof s==\"string\"&&(s=[s]),s!==null&&(o[i]=mE(e.children[i],t,s))}),Object.entries(e.children).forEach(([i,s])=>{r[i]===void 0&&(o[i]=s)}),new $(e.segments,o)}}function oR(e,t,n){let r=0,o=t,i={match:!1,pathIndex:0,commandIndex:0};for(;o<e.segments.length;){if(r>=n.length)return i;let s=e.segments[o],a=n[r];if(ms(a))break;let c=`${a}`,l=r<n.length-1?n[r+1]:null;if(o>0&&c===void 0)break;if(c&&l&&typeof l==\"object\"&&l.outlets===void 0){if(!K_(c,l,s))return i;r+=2}else{if(!K_(c,{},s))return i;r++}o++}return{match:!0,pathIndex:o,commandIndex:r}}function wp(e,t,n){let r=e.segments.slice(0,t),o=0;for(;o<n.length;){let i=n[o];if(ms(i)){let c=iR(i.outlets);return new $(r,c)}if(o===0&&gl(n[0])){let c=e.segments[t];r.push(new qn(c.path,Y_(n[0]))),o++;continue}let s=ms(i)?i.outlets[j]:`${i}`,a=o<n.length-1?n[o+1]:null;s&&a&&gl(a)?(r.push(new qn(s,Y_(a))),o+=2):(r.push(new qn(s,{})),o++)}return new $(r,{})}function iR(e){let t={};return Object.entries(e).forEach(([n,r])=>{typeof r==\"string\"&&(r=[r]),r!==null&&(t[n]=wp(new $([],{}),0,r))}),t}function Y_(e){let t={};return Object.entries(e).forEach(([n,r])=>t[n]=`${r}`),t}function K_(e,t,n){return e==n.path&&qt(t,n.parameters)}var hs=\"imperative\",Me=function(e){return e[e.NavigationStart=0]=\"NavigationStart\",e[e.NavigationEnd=1]=\"NavigationEnd\",e[e.NavigationCancel=2]=\"NavigationCancel\",e[e.NavigationError=3]=\"NavigationError\",e[e.RoutesRecognized=4]=\"RoutesRecognized\",e[e.ResolveStart=5]=\"ResolveStart\",e[e.ResolveEnd=6]=\"ResolveEnd\",e[e.GuardsCheckStart=7]=\"GuardsCheckStart\",e[e.GuardsCheckEnd=8]=\"GuardsCheckEnd\",e[e.RouteConfigLoadStart=9]=\"RouteConfigLoadStart\",e[e.RouteConfigLoadEnd=10]=\"RouteConfigLoadEnd\",e[e.ChildActivationStart=11]=\"ChildActivationStart\",e[e.ChildActivationEnd=12]=\"ChildActivationEnd\",e[e.ActivationStart=13]=\"ActivationStart\",e[e.ActivationEnd=14]=\"ActivationEnd\",e[e.Scroll=15]=\"Scroll\",e[e.NavigationSkipped=16]=\"NavigationSkipped\",e}(Me||{}),ot=class{id;url;constructor(t,n){this.id=t,this.url=n}},jr=class extends ot{type=Me.NavigationStart;navigationTrigger;restoredState;constructor(t,n,r=\"imperative\",o=null){super(t,n),this.navigationTrigger=r,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},Rt=class extends ot{urlAfterRedirects;type=Me.NavigationEnd;constructor(t,n,r){super(t,n),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},$e=function(e){return e[e.Redirect=0]=\"Redirect\",e[e.SupersededByNewNavigation=1]=\"SupersededByNewNavigation\",e[e.NoDataFromResolver=2]=\"NoDataFromResolver\",e[e.GuardRejected=3]=\"GuardRejected\",e[e.Aborted=4]=\"Aborted\",e}($e||{}),gs=function(e){return e[e.IgnoredSameUrlNavigation=0]=\"IgnoredSameUrlNavigation\",e[e.IgnoredByUrlHandlingStrategy=1]=\"IgnoredByUrlHandlingStrategy\",e}(gs||{}),Zt=class extends ot{reason;code;type=Me.NavigationCancel;constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},yn=class extends ot{reason;code;type=Me.NavigationSkipped;constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o}},Lo=class extends ot{error;target;type=Me.NavigationError;constructor(t,n,r,o){super(t,n),this.error=r,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},vs=class extends ot{urlAfterRedirects;state;type=Me.RoutesRecognized;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},yl=class extends ot{urlAfterRedirects;state;type=Me.GuardsCheckStart;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},bl=class extends ot{urlAfterRedirects;state;shouldActivate;type=Me.GuardsCheckEnd;constructor(t,n,r,o,i){super(t,n),this.urlAfterRedirects=r,this.state=o,this.shouldActivate=i}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},_l=class extends ot{urlAfterRedirects;state;type=Me.ResolveStart;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},El=class extends ot{urlAfterRedirects;state;type=Me.ResolveEnd;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Dl=class{route;type=Me.RouteConfigLoadStart;constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},wl=class{route;type=Me.RouteConfigLoadEnd;constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},Il=class{snapshot;type=Me.ChildActivationStart;constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||\"\"}')`}},Cl=class{snapshot;type=Me.ChildActivationEnd;constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||\"\"}')`}},Tl=class{snapshot;type=Me.ActivationStart;constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||\"\"}')`}},Sl=class{snapshot;type=Me.ActivationEnd;constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||\"\"}')`}};var ys=class{},jo=class{url;navigationBehaviorOptions;constructor(t,n){this.url=t,this.navigationBehaviorOptions=n}};function sR(e){return!(e instanceof ys)&&!(e instanceof jo)}function aR(e,t){return e.providers&&!e._injector&&(e._injector=$i(e.providers,t,`Route: ${e.path}`)),e._injector??t}function xt(e){return e.outlet||j}function cR(e,t){let n=e.filter(r=>xt(r)===t);return n.push(...e.filter(r=>xt(r)!==t)),n}function Ts(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let t=e.parent;t;t=t.parent){let n=t.routeConfig;if(n?._loadedInjector)return n._loadedInjector;if(n?._injector)return n._injector}return null}var Ml=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return Ts(this.route?.snapshot)??this.rootInjector}constructor(t){this.rootInjector=t,this.children=new Vo(this.rootInjector)}},Vo=(()=>{class e{rootInjector;contexts=new Map;constructor(n){this.rootInjector=n}onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,this.contexts.set(n,o)}onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let r=this.getContext(n);return r||(r=new Ml(this.rootInjector),this.contexts.set(n,r)),r}getContext(n){return this.contexts.get(n)||null}static \\u0275fac=function(r){return new(r||e)(S(ue))};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),xl=class{_root;constructor(t){this._root=t}get root(){return this._root.value}parent(t){let n=this.pathFromRoot(t);return n.length>1?n[n.length-2]:null}children(t){let n=Ip(t,this._root);return n?n.children.map(r=>r.value):[]}firstChild(t){let n=Ip(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){let n=Cp(t,this._root);return n.length<2?[]:n[n.length-2].children.map(o=>o.value).filter(o=>o!==t)}pathFromRoot(t){return Cp(t,this._root).map(n=>n.value)}};function Ip(e,t){if(e===t.value)return t;for(let n of t.children){let r=Ip(e,n);if(r)return r}return null}function Cp(e,t){if(e===t.value)return[t];for(let n of t.children){let r=Cp(e,n);if(r.length)return r.unshift(t),r}return[]}var rt=class{value;children;constructor(t,n){this.value=t,this.children=n}toString(){return`TreeNode(${this.value})`}};function ko(e){let t={};return e&&e.children.forEach(n=>t[n.value.outlet]=n),t}var bs=class extends xl{snapshot;constructor(t,n){super(t),this.snapshot=n,Op(this,t)}toString(){return this.snapshot.toString()}};function gE(e){let t=lR(e),n=new _e([new qn(\"\",{})]),r=new _e({}),o=new _e({}),i=new _e({}),s=new _e(\"\"),a=new bn(n,r,i,s,o,j,e,t.root);return a.snapshot=t.root,new bs(new rt(a,[]),t)}function lR(e){let t={},n={},r={},o=\"\",i=new Pr([],t,r,o,n,j,e,null,{});return new _s(\"\",new rt(i,[]))}var bn=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(t,n,r,o,i,s,a,c){this.urlSubject=t,this.paramsSubject=n,this.queryParamsSubject=r,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(T(l=>l[Is]))??C(void 0),this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(T(t=>Fr(t))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(T(t=>Fr(t))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function Rl(e,t,n=\"emptyOnly\"){let r,{routeConfig:o}=e;return t!==null&&(n===\"always\"||o?.path===\"\"||!t.component&&!t.routeConfig?.loadComponent)?r={params:v(v({},t.params),e.params),data:v(v({},t.data),e.data),resolve:v(v(v(v({},e.data),t.data),o?.data),e._resolvedData)}:r={params:v({},e.params),data:v({},e.data),resolve:v(v({},e.data),e._resolvedData??{})},o&&yE(o)&&(r.resolve[Is]=o.title),r}var Pr=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[Is]}constructor(t,n,r,o,i,s,a,c,l){this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=l}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Fr(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Fr(this.queryParams),this._queryParamMap}toString(){let t=this.url.map(r=>r.toString()).join(\"/\"),n=this.routeConfig?this.routeConfig.path:\"\";return`Route(url:'${t}', path:'${n}')`}},_s=class extends xl{url;constructor(t,n){super(n),this.url=t,Op(this,n)}toString(){return vE(this._root)}};function Op(e,t){t.value._routerState=e,t.children.forEach(n=>Op(e,n))}function vE(e){let t=e.children.length>0?` { ${e.children.map(vE).join(\", \")} } `:\"\";return`${e.value}${t}`}function vp(e){if(e.snapshot){let t=e.snapshot,n=e._futureSnapshot;e.snapshot=n,qt(t.queryParams,n.queryParams)||e.queryParamsSubject.next(n.queryParams),t.fragment!==n.fragment&&e.fragmentSubject.next(n.fragment),qt(t.params,n.params)||e.paramsSubject.next(n.params),Fx(t.url,n.url)||e.urlSubject.next(n.url),qt(t.data,n.data)||e.dataSubject.next(n.data)}else e.snapshot=e._futureSnapshot,e.dataSubject.next(e._futureSnapshot.data)}function Tp(e,t){let n=qt(e.params,t.params)&&Ux(e.url,t.url),r=!e.parent!=!t.parent;return n&&!r&&(!e.parent||Tp(e.parent,t.parent))}function yE(e){return typeof e.title==\"string\"||e.title===null}var bE=new E(\"\"),kp=(()=>{class e{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=j;activateEvents=new de;deactivateEvents=new de;attachEvents=new de;detachEvents=new de;routerOutletData=Hb(void 0);parentContexts=h(Vo);location=h(Hn);changeDetector=h(Yi);inputBinder=h(kl,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new _(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new _(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new _(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,r){this.activated=n,this._activatedRoute=r,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,r){if(this.isActivated)throw new _(4013,!1);this._activatedRoute=n;let o=this.location,s=n.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new Sp(n,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \\u0275fac=function(r){return new(r||e)};static \\u0275dir=we({type:e,selectors:[[\"router-outlet\"]],inputs:{name:\"name\",routerOutletData:[1,\"routerOutletData\"]},outputs:{activateEvents:\"activate\",deactivateEvents:\"deactivate\",attachEvents:\"attach\",detachEvents:\"detach\"},exportAs:[\"outlet\"],features:[fn]})}return e})(),Sp=class{route;childContexts;parent;outletData;constructor(t,n,r,o){this.route=t,this.childContexts=n,this.parent=r,this.outletData=o}get(t,n){return t===bn?this.route:t===Vo?this.childContexts:t===bE?this.outletData:this.parent.get(t,n)}},kl=new E(\"\");var Pp=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275cmp=nt({type:e,selectors:[[\"ng-component\"]],exportAs:[\"emptyRouterOutlet\"],decls:1,vars:0,template:function(r,o){r&1&&Wt(0,\"router-outlet\")},dependencies:[kp],encapsulation:2})}return e})();function Fp(e){let t=e.children&&e.children.map(Fp),n=t?U(v({},e),{children:t}):v({},e);return!n.component&&!n.loadComponent&&(t||n.loadChildren)&&n.outlet&&n.outlet!==j&&(n.component=Pp),n}function uR(e,t,n){let r=Es(e,t._root,n?n._root:void 0);return new bs(r,t)}function Es(e,t,n){if(n&&e.shouldReuseRoute(t.value,n.value.snapshot)){let r=n.value;r._futureSnapshot=t.value;let o=dR(e,t,n);return new rt(r,o)}else{if(e.shouldAttach(t.value)){let i=e.retrieve(t.value);if(i!==null){let s=i.route;return s.value._futureSnapshot=t.value,s.children=t.children.map(a=>Es(e,a)),s}}let r=fR(t.value),o=t.children.map(i=>Es(e,i));return new rt(r,o)}}function dR(e,t,n){return t.children.map(r=>{for(let o of n.children)if(e.shouldReuseRoute(r.value,o.value.snapshot))return Es(e,r,o);return Es(e,r)})}function fR(e){return new bn(new _e(e.url),new _e(e.params),new _e(e.queryParams),new _e(e.fragment),new _e(e.data),e.outlet,e.component,e)}var Bo=class{redirectTo;navigationBehaviorOptions;constructor(t,n){this.redirectTo=t,this.navigationBehaviorOptions=n}},_E=\"ngNavigationCancelingError\";function Al(e,t){let{redirectTo:n,navigationBehaviorOptions:r}=Zn(t)?{redirectTo:t,navigationBehaviorOptions:void 0}:t,o=EE(!1,$e.Redirect);return o.url=n,o.navigationBehaviorOptions=r,o}function EE(e,t){let n=new Error(`NavigationCancelingError: ${e||\"\"}`);return n[_E]=!0,n.cancellationCode=t,n}function hR(e){return DE(e)&&Zn(e.url)}function DE(e){return!!e&&e[_E]}var pR=(e,t,n,r)=>T(o=>(new Mp(t,o.targetRouterState,o.currentRouterState,n,r).activate(e),o)),Mp=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(t,n,r,o,i){this.routeReuseStrategy=t,this.futureState=n,this.currState=r,this.forwardEvent=o,this.inputBindingEnabled=i}activate(t){let n=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(n,r,t),vp(this.futureState.root),this.activateChildRoutes(n,r,t)}deactivateChildRoutes(t,n,r){let o=ko(n);t.children.forEach(i=>{let s=i.value.outlet;this.deactivateRoutes(i,o[s],r),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,r)})}deactivateRoutes(t,n,r){let o=t.value,i=n?n.value:null;if(o===i)if(o.component){let s=r.getContext(o.outlet);s&&this.deactivateChildRoutes(t,n,s.children)}else this.deactivateChildRoutes(t,n,r);else i&&this.deactivateRouteAndItsChildren(n,r)}deactivateRouteAndItsChildren(t,n){t.value.component&&this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,n):this.deactivateRouteAndOutlet(t,n)}detachAndStoreRouteSubtree(t,n){let r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=ko(t);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:s,route:t,contexts:a})}}deactivateRouteAndOutlet(t,n){let r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=ko(t);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(t,n,r){let o=ko(n);t.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],r),this.forwardEvent(new Sl(i.value.snapshot))}),t.children.length&&this.forwardEvent(new Cl(t.value.snapshot))}activateRoutes(t,n,r){let o=t.value,i=n?n.value:null;if(vp(o),o===i)if(o.component){let s=r.getOrCreateContext(o.outlet);this.activateChildRoutes(t,n,s.children)}else this.activateChildRoutes(t,n,r);else if(o.component){let s=r.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){let a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),vp(a.route.value),this.activateChildRoutes(t,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(t,null,s.children)}else this.activateChildRoutes(t,null,r)}},Nl=class{path;route;constructor(t){this.path=t,this.route=this.path[this.path.length-1]}},Fo=class{component;route;constructor(t,n){this.component=t,this.route=n}};function mR(e,t,n){let r=e._root,o=t?t._root:null;return ds(r,o,n,[r.value])}function gR(e){let t=e.routeConfig?e.routeConfig.canActivateChild:null;return!t||t.length===0?null:{node:e,guards:t}}function Ho(e,t){let n=Symbol(),r=t.get(e,n);return r===n?typeof e==\"function\"&&!ed(e)?e:t.get(e):r}function ds(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=ko(t);return e.children.forEach(s=>{vR(s,i[s.value.outlet],n,r.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,a])=>ps(a,n.getContext(s),o)),o}function vR(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=e.value,s=t?t.value:null,a=n?n.getContext(e.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){let c=yR(s,i,i.routeConfig.runGuardsAndResolvers);c?o.canActivateChecks.push(new Nl(r)):(i.data=s.data,i._resolvedData=s._resolvedData),i.component?ds(e,t,a?a.children:null,r,o):ds(e,t,n,r,o),c&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new Fo(a.outlet.component,s))}else s&&ps(t,a,o),o.canActivateChecks.push(new Nl(r)),i.component?ds(e,null,a?a.children:null,r,o):ds(e,null,n,r,o);return o}function yR(e,t,n){if(typeof n==\"function\")return n(e,t);switch(n){case\"pathParamsChange\":return!kr(e.url,t.url);case\"pathParamsOrQueryParamsChange\":return!kr(e.url,t.url)||!qt(e.queryParams,t.queryParams);case\"always\":return!0;case\"paramsOrQueryParamsChange\":return!Tp(e,t)||!qt(e.queryParams,t.queryParams);case\"paramsChange\":default:return!Tp(e,t)}}function ps(e,t,n){let r=ko(e),o=e.value;Object.entries(r).forEach(([i,s])=>{o.component?t?ps(s,t.children.getContext(i),n):ps(s,null,n):ps(s,t,n)}),o.component?t&&t.outlet&&t.outlet.isActivated?n.canDeactivateChecks.push(new Fo(t.outlet.component,o)):n.canDeactivateChecks.push(new Fo(null,o)):n.canDeactivateChecks.push(new Fo(null,o))}function Ss(e){return typeof e==\"function\"}function bR(e){return typeof e==\"boolean\"}function _R(e){return e&&Ss(e.canLoad)}function ER(e){return e&&Ss(e.canActivate)}function DR(e){return e&&Ss(e.canActivateChild)}function wR(e){return e&&Ss(e.canDeactivate)}function IR(e){return e&&Ss(e.canMatch)}function wE(e){return e instanceof Xe||e?.name===\"EmptyError\"}var fl=Symbol(\"INITIAL_VALUE\");function Uo(){return qe(e=>to(e.map(t=>t.pipe(Ge(1),ci(fl)))).pipe(T(t=>{for(let n of t)if(n!==!0){if(n===fl)return fl;if(n===!1||CR(n))return n}return!0}),fe(t=>t!==fl),Ge(1)))}function CR(e){return Zn(e)||e instanceof Bo}function TR(e,t){return le(n=>{let{targetSnapshot:r,currentSnapshot:o,guards:{canActivateChecks:i,canDeactivateChecks:s}}=n;return s.length===0&&i.length===0?C(U(v({},n),{guardsResult:!0})):SR(s,r,o,e).pipe(le(a=>a&&bR(a)?MR(r,i,e,t):C(a)),T(a=>U(v({},n),{guardsResult:a})))})}function SR(e,t,n,r){return ne(e).pipe(le(o=>OR(o.component,o.route,n,t,r)),rn(o=>o!==!0,!0))}function MR(e,t,n,r){return ne(t).pipe(nn(o=>kt(RR(o.route.parent,r),xR(o.route,r),NR(e,o.path,n),AR(e,o.route,n))),rn(o=>o!==!0,!0))}function xR(e,t){return e!==null&&t&&t(new Tl(e)),C(!0)}function RR(e,t){return e!==null&&t&&t(new Il(e)),C(!0)}function AR(e,t,n){let r=t.routeConfig?t.routeConfig.canActivate:null;if(!r||r.length===0)return C(!0);let o=r.map(i=>ii(()=>{let s=Ts(t)??n,a=Ho(i,s),c=ER(a)?a.canActivate(t,e):Le(s,()=>a(t,e));return _n(c).pipe(rn())}));return C(o).pipe(Uo())}function NR(e,t,n){let r=t[t.length-1],i=t.slice(0,t.length-1).reverse().map(s=>gR(s)).filter(s=>s!==null).map(s=>ii(()=>{let a=s.guards.map(c=>{let l=Ts(s.node)??n,u=Ho(c,l),d=DR(u)?u.canActivateChild(r,e):Le(l,()=>u(r,e));return _n(d).pipe(rn())});return C(a).pipe(Uo())}));return C(i).pipe(Uo())}function OR(e,t,n,r,o){let i=t&&t.routeConfig?t.routeConfig.canDeactivate:null;if(!i||i.length===0)return C(!0);let s=i.map(a=>{let c=Ts(t)??o,l=Ho(a,c),u=wR(l)?l.canDeactivate(e,t,n,r):Le(c,()=>l(e,t,n,r));return _n(u).pipe(rn())});return C(s).pipe(Uo())}function kR(e,t,n,r){let o=t.canLoad;if(o===void 0||o.length===0)return C(!0);let i=o.map(s=>{let a=Ho(s,e),c=_R(a)?a.canLoad(t,n):Le(e,()=>a(t,n));return _n(c)});return C(i).pipe(Uo(),IE(r))}function IE(e){return Ru(re(t=>{if(typeof t!=\"boolean\")throw Al(e,t)}),T(t=>t===!0))}function PR(e,t,n,r){let o=t.canMatch;if(!o||o.length===0)return C(!0);let i=o.map(s=>{let a=Ho(s,e),c=IR(a)?a.canMatch(t,n):Le(e,()=>a(t,n));return _n(c)});return C(i).pipe(Uo(),IE(r))}var Ds=class{segmentGroup;constructor(t){this.segmentGroup=t||null}},ws=class extends Error{urlTree;constructor(t){super(),this.urlTree=t}};function Oo(e){return eo(new Ds(e))}function FR(e){return eo(new _(4e3,!1))}function LR(e){return eo(EE(!1,$e.GuardRejected))}var xp=class{urlSerializer;urlTree;constructor(t,n){this.urlSerializer=t,this.urlTree=n}lineralizeSegments(t,n){let r=[],o=n.root;for(;;){if(r=r.concat(o.segments),o.numberOfChildren===0)return C(r);if(o.numberOfChildren>1||!o.children[j])return FR(`${t.redirectTo}`);o=o.children[j]}}applyRedirectCommands(t,n,r,o,i){return jR(n,o,i).pipe(T(s=>{if(s instanceof Yt)throw new ws(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),t,r);if(s[0]===\"/\")throw new ws(a);return a}))}applyRedirectCreateUrlTree(t,n,r,o){let i=this.createSegmentGroup(t,n.root,r,o);return new Yt(i,this.createQueryParams(n.queryParams,this.urlTree.queryParams),n.fragment)}createQueryParams(t,n){let r={};return Object.entries(t).forEach(([o,i])=>{if(typeof i==\"string\"&&i[0]===\":\"){let a=i.substring(1);r[o]=n[a]}else r[o]=i}),r}createSegmentGroup(t,n,r,o){let i=this.createSegments(t,n.segments,r,o),s={};return Object.entries(n.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(t,c,r,o)}),new $(i,s)}createSegments(t,n,r,o){return n.map(i=>i.path[0]===\":\"?this.findPosParam(t,i,o):this.findOrReturn(i,r))}findPosParam(t,n,r){let o=r[n.path.substring(1)];if(!o)throw new _(4001,!1);return o}findOrReturn(t,n){let r=0;for(let o of n){if(o.path===t.path)return n.splice(r),o;r++}return t}};function jR(e,t,n){if(typeof e==\"string\")return C(e);let r=e,{queryParams:o,fragment:i,routeConfig:s,url:a,outlet:c,params:l,data:u,title:d}=t;return _n(Le(n,()=>r({params:l,data:u,queryParams:o,fragment:i,routeConfig:s,url:a,outlet:c,title:d})))}var Rp={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function BR(e,t,n,r,o){let i=CE(e,t,n);return i.matched?(r=aR(t,r),PR(r,t,n,o).pipe(T(s=>s===!0?i:v({},Rp)))):C(i)}function CE(e,t,n){if(t.path===\"**\")return UR(n);if(t.path===\"\")return t.pathMatch===\"full\"&&(e.hasChildren()||n.length>0)?v({},Rp):{matched:!0,consumedSegments:[],remainingSegments:n,parameters:{},positionalParamSegments:{}};let o=(t.matcher||eE)(n,e,t);if(!o)return v({},Rp);let i={};Object.entries(o.posParams??{}).forEach(([a,c])=>{i[a]=c.path});let s=o.consumed.length>0?v(v({},i),o.consumed[o.consumed.length-1].parameters):i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:n.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function UR(e){return{matched:!0,parameters:e.length>0?nE(e).parameters:{},consumedSegments:e,remainingSegments:[],positionalParamSegments:{}}}function Q_(e,t,n,r){return n.length>0&&$R(e,n,r)?{segmentGroup:new $(t,HR(r,new $(n,e.children))),slicedSegments:[]}:n.length===0&&zR(e,n,r)?{segmentGroup:new $(e.segments,VR(e,n,r,e.children)),slicedSegments:n}:{segmentGroup:new $(e.segments,e.children),slicedSegments:n}}function VR(e,t,n,r){let o={};for(let i of n)if(Pl(e,t,i)&&!r[xt(i)]){let s=new $([],{});o[xt(i)]=s}return v(v({},r),o)}function HR(e,t){let n={};n[j]=t;for(let r of e)if(r.path===\"\"&&xt(r)!==j){let o=new $([],{});n[xt(r)]=o}return n}function $R(e,t,n){return n.some(r=>Pl(e,t,r)&&xt(r)!==j)}function zR(e,t,n){return n.some(r=>Pl(e,t,r))}function Pl(e,t,n){return(e.hasChildren()||t.length>0)&&n.pathMatch===\"full\"?!1:n.path===\"\"}function WR(e,t,n){return t.length===0&&!e.children[n]}var Ap=class{};function GR(e,t,n,r,o,i,s=\"emptyOnly\"){return new Np(e,t,n,r,o,s,i).recognize()}var qR=31,Np=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(t,n,r,o,i,s,a){this.injector=t,this.configLoader=n,this.rootComponentType=r,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new xp(this.urlSerializer,this.urlTree)}noMatchError(t){return new _(4002,`'${t.segmentGroup}'`)}recognize(){let t=Q_(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(t).pipe(T(({children:n,rootSnapshot:r})=>{let o=new rt(r,n),i=new _s(\"\",o),s=dE(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),{state:i,tree:s}}))}match(t){let n=new Pr([],Object.freeze({}),Object.freeze(v({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),j,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,t,j,n).pipe(T(r=>({children:r,rootSnapshot:n})),Pt(r=>{if(r instanceof ws)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof Ds?this.noMatchError(r):r}))}processSegmentGroup(t,n,r,o,i){return r.segments.length===0&&r.hasChildren()?this.processChildren(t,n,r,i):this.processSegment(t,n,r,r.segments,o,!0,i).pipe(T(s=>s instanceof rt?[s]:[]))}processChildren(t,n,r,o){let i=[];for(let s of Object.keys(r.children))s===\"primary\"?i.unshift(s):i.push(s);return ne(i).pipe(nn(s=>{let a=r.children[s],c=cR(n,s);return this.processSegmentGroup(t,c,a,s,o)}),Bu((s,a)=>(s.push(...a),s)),Cn(null),ju(),le(s=>{if(s===null)return Oo(r);let a=TE(s);return ZR(a),C(a)}))}processSegment(t,n,r,o,i,s,a){return ne(n).pipe(nn(c=>this.processSegmentAgainstRoute(c._injector??t,n,c,r,o,i,s,a).pipe(Pt(l=>{if(l instanceof Ds)return C(null);throw l}))),rn(c=>!!c),Pt(c=>{if(wE(c))return WR(r,o,i)?C(new Ap):Oo(r);throw c}))}processSegmentAgainstRoute(t,n,r,o,i,s,a,c){return xt(r)!==s&&(s===j||!Pl(o,i,r))?Oo(o):r.redirectTo===void 0?this.matchSegmentAgainstRoute(t,o,r,i,s,c):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(t,o,n,r,i,s,c):Oo(o)}expandSegmentAgainstRouteUsingRedirect(t,n,r,o,i,s,a){let{matched:c,parameters:l,consumedSegments:u,positionalParamSegments:d,remainingSegments:p}=CE(n,o,i);if(!c)return Oo(n);typeof o.redirectTo==\"string\"&&o.redirectTo[0]===\"/\"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>qR&&(this.allowRedirects=!1));let f=new Pr(i,l,Object.freeze(v({},this.urlTree.queryParams)),this.urlTree.fragment,X_(o),xt(o),o.component??o._loadedComponent??null,o,J_(o)),g=Rl(f,a,this.paramsInheritanceStrategy);return f.params=Object.freeze(g.params),f.data=Object.freeze(g.data),this.applyRedirects.applyRedirectCommands(u,o.redirectTo,d,f,t).pipe(qe(D=>this.applyRedirects.lineralizeSegments(o,D)),le(D=>this.processSegment(t,r,n,D.concat(p),s,!1,a)))}matchSegmentAgainstRoute(t,n,r,o,i,s){let a=BR(n,r,o,t,this.urlSerializer);return r.path===\"**\"&&(n.children={}),a.pipe(qe(c=>c.matched?(t=r._injector??t,this.getChildConfig(t,r,o).pipe(qe(({routes:l})=>{let u=r._loadedInjector??t,{parameters:d,consumedSegments:p,remainingSegments:f}=c,g=new Pr(p,d,Object.freeze(v({},this.urlTree.queryParams)),this.urlTree.fragment,X_(r),xt(r),r.component??r._loadedComponent??null,r,J_(r)),y=Rl(g,s,this.paramsInheritanceStrategy);g.params=Object.freeze(y.params),g.data=Object.freeze(y.data);let{segmentGroup:D,slicedSegments:w}=Q_(n,p,f,l);if(w.length===0&&D.hasChildren())return this.processChildren(u,l,D,g).pipe(T(te=>new rt(g,te)));if(l.length===0&&w.length===0)return C(new rt(g,[]));let K=xt(r)===i;return this.processSegment(u,l,D,w,K?j:i,!0,g).pipe(T(te=>new rt(g,te instanceof rt?[te]:[])))}))):Oo(n)))}getChildConfig(t,n,r){return n.children?C({routes:n.children,injector:t}):n.loadChildren?n._loadedRoutes!==void 0?C({routes:n._loadedRoutes,injector:n._loadedInjector}):kR(t,n,r,this.urlSerializer).pipe(le(o=>o?this.configLoader.loadChildren(t,n).pipe(re(i=>{n._loadedRoutes=i.routes,n._loadedInjector=i.injector})):LR(n))):C({routes:[],injector:t})}};function ZR(e){e.sort((t,n)=>t.value.outlet===j?-1:n.value.outlet===j?1:t.value.outlet.localeCompare(n.value.outlet))}function YR(e){let t=e.value.routeConfig;return t&&t.path===\"\"}function TE(e){let t=[],n=new Set;for(let r of e){if(!YR(r)){t.push(r);continue}let o=t.find(i=>r.value.routeConfig===i.value.routeConfig);o!==void 0?(o.children.push(...r.children),n.add(o)):t.push(r)}for(let r of n){let o=TE(r.children);t.push(new rt(r.value,o))}return t.filter(r=>!n.has(r))}function X_(e){return e.data||{}}function J_(e){return e.resolve||{}}function KR(e,t,n,r,o,i){return le(s=>GR(e,t,n,r,s.extractedUrl,o,i).pipe(T(({state:a,tree:c})=>U(v({},s),{targetSnapshot:a,urlAfterRedirects:c}))))}function QR(e,t){return le(n=>{let{targetSnapshot:r,guards:{canActivateChecks:o}}=n;if(!o.length)return C(n);let i=new Set(o.map(c=>c.route)),s=new Set;for(let c of i)if(!s.has(c))for(let l of SE(c))s.add(l);let a=0;return ne(s).pipe(nn(c=>i.has(c)?XR(c,r,e,t):(c.data=Rl(c,c.parent,e).resolve,C(void 0))),re(()=>a++),no(1),le(c=>a===s.size?C(n):Ne))})}function SE(e){let t=e.children.map(n=>SE(n)).flat();return[e,...t]}function XR(e,t,n,r){let o=e.routeConfig,i=e._resolve;return o?.title!==void 0&&!yE(o)&&(i[Is]=o.title),ii(()=>(e.data=Rl(e,e.parent,n).resolve,JR(i,e,t,r).pipe(T(s=>(e._resolvedData=s,e.data=v(v({},e.data),s),null)))))}function JR(e,t,n,r){let o=_p(e);if(o.length===0)return C({});let i={};return ne(o).pipe(le(s=>eA(e[s],t,n,r).pipe(rn(),re(a=>{if(a instanceof Bo)throw Al(new Lr,a);i[s]=a}))),no(1),T(()=>i),Pt(s=>wE(s)?Ne:eo(s)))}function eA(e,t,n,r){let o=Ts(t)??r,i=Ho(e,o),s=i.resolve?i.resolve(t,n):Le(o,()=>i(t,n));return _n(s)}function yp(e){return qe(t=>{let n=e(t);return n?ne(n).pipe(T(()=>t)):C(t)})}var Lp=(()=>{class e{buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(i=>i.outlet===j);return r}getResolvedTitleForRoute(n){return n.data[Is]}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>h(ME),providedIn:\"root\"})}return e})(),ME=(()=>{class e extends Lp{title;constructor(n){super(),this.title=n}updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitle(r)}static \\u0275fac=function(r){return new(r||e)(S(G_))};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),$o=new E(\"\",{providedIn:\"root\",factory:()=>({})}),Ms=new E(\"\"),xE=(()=>{class e{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=h(kh);loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return C(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);let r=_n(n.loadComponent()).pipe(T(AE),re(i=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=i}),Tn(()=>{this.componentLoaders.delete(n)})),o=new Xr(r,()=>new V).pipe(Qr());return this.componentLoaders.set(n,o),o}loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return C({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=RE(r,this.compiler,n,this.onLoadEndListener).pipe(Tn(()=>{this.childrenLoaders.delete(r)})),s=new Xr(i,()=>new V).pipe(Qr());return this.childrenLoaders.set(r,s),s}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function RE(e,t,n,r){return _n(e.loadChildren()).pipe(T(AE),le(o=>o instanceof Pc||Array.isArray(o)?C(o):ne(t.compileModuleAsync(o))),T(o=>{r&&r(e);let i,s,a=!1;return Array.isArray(o)?(s=o,a=!0):(i=o.create(n).injector,s=i.get(Ms,[],{optional:!0,self:!0}).flat()),{routes:s.map(Fp),injector:i}}))}function tA(e){return e&&typeof e==\"object\"&&\"default\"in e}function AE(e){return tA(e)?e.default:e}var Fl=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>h(nA),providedIn:\"root\"})}return e})(),nA=(()=>{class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,r){return n}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),NE=new E(\"\");var OE=new E(\"\"),kE=(()=>{class e{currentNavigation=null;currentTransition=null;lastSuccessfulNavigation=null;events=new V;transitionAbortWithErrorSubject=new V;configLoader=h(xE);environmentInjector=h(ue);destroyRef=h(tt);urlSerializer=h(Cs);rootContexts=h(Vo);location=h(xo);inputBindingEnabled=h(kl,{optional:!0})!==null;titleStrategy=h(Lp);options=h($o,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||\"emptyOnly\";urlHandlingStrategy=h(Fl);createViewTransition=h(NE,{optional:!0});navigationErrorHandler=h(OE,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>C(void 0);rootComponentType=null;destroyed=!1;constructor(){let n=o=>this.events.next(new Dl(o)),r=o=>this.events.next(new wl(o));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=n,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(n){let r=++this.navigationId;this.transitions?.next(U(v({},n),{extractedUrl:this.urlHandlingStrategy.extract(n.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,abortController:new AbortController,id:r}))}setupNavigations(n){return this.transitions=new _e(null),this.transitions.pipe(fe(r=>r!==null),qe(r=>{let o=!1;return C(r).pipe(qe(i=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,\"\",$e.SupersededByNewNavigation),Ne;this.currentTransition=r,this.currentNavigation={id:i.id,initialUrl:i.rawUrl,extractedUrl:i.extractedUrl,targetBrowserUrl:typeof i.extras.browserUrl==\"string\"?this.urlSerializer.parse(i.extras.browserUrl):i.extras.browserUrl,trigger:i.source,extras:i.extras,previousNavigation:this.lastSuccessfulNavigation?U(v({},this.lastSuccessfulNavigation),{previousNavigation:null}):null,abort:()=>i.abortController.abort()};let s=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),a=i.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!s&&a!==\"reload\"){let c=\"\";return this.events.next(new yn(i.id,this.urlSerializer.serialize(i.rawUrl),c,gs.IgnoredSameUrlNavigation)),i.resolve(!1),Ne}if(this.urlHandlingStrategy.shouldProcessUrl(i.rawUrl))return C(i).pipe(qe(c=>(this.events.next(new jr(c.id,this.urlSerializer.serialize(c.extractedUrl),c.source,c.restoredState)),c.id!==this.navigationId?Ne:Promise.resolve(c))),KR(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),re(c=>{r.targetSnapshot=c.targetSnapshot,r.urlAfterRedirects=c.urlAfterRedirects,this.currentNavigation=U(v({},this.currentNavigation),{finalUrl:c.urlAfterRedirects});let l=new vs(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(l)}));if(s&&this.urlHandlingStrategy.shouldProcessUrl(i.currentRawUrl)){let{id:c,extractedUrl:l,source:u,restoredState:d,extras:p}=i,f=new jr(c,this.urlSerializer.serialize(l),u,d);this.events.next(f);let g=gE(this.rootComponentType).snapshot;return this.currentTransition=r=U(v({},i),{targetSnapshot:g,urlAfterRedirects:l,extras:U(v({},p),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=l,C(r)}else{let c=\"\";return this.events.next(new yn(i.id,this.urlSerializer.serialize(i.extractedUrl),c,gs.IgnoredByUrlHandlingStrategy)),i.resolve(!1),Ne}}),re(i=>{let s=new yl(i.id,this.urlSerializer.serialize(i.extractedUrl),this.urlSerializer.serialize(i.urlAfterRedirects),i.targetSnapshot);this.events.next(s)}),T(i=>(this.currentTransition=r=U(v({},i),{guards:mR(i.targetSnapshot,i.currentSnapshot,this.rootContexts)}),r)),TR(this.environmentInjector,i=>this.events.next(i)),re(i=>{if(r.guardsResult=i.guardsResult,i.guardsResult&&typeof i.guardsResult!=\"boolean\")throw Al(this.urlSerializer,i.guardsResult);let s=new bl(i.id,this.urlSerializer.serialize(i.extractedUrl),this.urlSerializer.serialize(i.urlAfterRedirects),i.targetSnapshot,!!i.guardsResult);this.events.next(s)}),fe(i=>i.guardsResult?!0:(this.cancelNavigationTransition(i,\"\",$e.GuardRejected),!1)),yp(i=>{if(i.guards.canActivateChecks.length!==0)return C(i).pipe(re(s=>{let a=new _l(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}),qe(s=>{let a=!1;return C(s).pipe(QR(this.paramsInheritanceStrategy,this.environmentInjector),re({next:()=>a=!0,complete:()=>{a||this.cancelNavigationTransition(s,\"\",$e.NoDataFromResolver)}}))}),re(s=>{let a=new El(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}))}),yp(i=>{let s=a=>{let c=[];a.routeConfig?.loadComponent&&!a.routeConfig._loadedComponent&&c.push(this.configLoader.loadComponent(a.routeConfig).pipe(re(l=>{a.component=l}),T(()=>{})));for(let l of a.children)c.push(...s(l));return c};return to(s(i.targetSnapshot.root)).pipe(Cn(null),Ge(1))}),yp(()=>this.afterPreactivation()),qe(()=>{let{currentSnapshot:i,targetSnapshot:s}=r,a=this.createViewTransition?.(this.environmentInjector,i.root,s.root);return a?ne(a).pipe(T(()=>r)):C(r)}),T(i=>{let s=uR(n.routeReuseStrategy,i.targetSnapshot,i.currentRouterState);return this.currentTransition=r=U(v({},i),{targetRouterState:s}),this.currentNavigation.targetRouterState=s,r}),re(()=>{this.events.next(new ys)}),pR(this.rootContexts,n.routeReuseStrategy,i=>this.events.next(i),this.inputBindingEnabled),Ge(1),Sn(new P(i=>{let s=r.abortController.signal,a=()=>i.next();return s.addEventListener(\"abort\",a),()=>s.removeEventListener(\"abort\",a)}).pipe(fe(()=>!o&&!r.targetRouterState),re(()=>{this.cancelNavigationTransition(r,r.abortController.signal.reason+\"\",$e.Aborted)}))),re({next:i=>{o=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new Rt(i.id,this.urlSerializer.serialize(i.extractedUrl),this.urlSerializer.serialize(i.urlAfterRedirects))),this.titleStrategy?.updateTitle(i.targetRouterState.snapshot),i.resolve(!0)},complete:()=>{o=!0}}),Sn(this.transitionAbortWithErrorSubject.pipe(re(i=>{throw i}))),Tn(()=>{o||this.cancelNavigationTransition(r,\"\",$e.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation=null,this.currentTransition=null)}),Pt(i=>{if(this.destroyed)return r.resolve(!1),Ne;if(o=!0,DE(i))this.events.next(new Zt(r.id,this.urlSerializer.serialize(r.extractedUrl),i.message,i.cancellationCode)),hR(i)?this.events.next(new jo(i.url,i.navigationBehaviorOptions)):r.resolve(!1);else{let s=new Lo(r.id,this.urlSerializer.serialize(r.extractedUrl),i,r.targetSnapshot??void 0);try{let a=Le(this.environmentInjector,()=>this.navigationErrorHandler?.(s));if(a instanceof Bo){let{message:c,cancellationCode:l}=Al(this.urlSerializer,a);this.events.next(new Zt(r.id,this.urlSerializer.serialize(r.extractedUrl),c,l)),this.events.next(new jo(a.redirectTo,a.navigationBehaviorOptions))}else throw this.events.next(s),i}catch(a){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(a)}}return Ne}))}))}cancelNavigationTransition(n,r,o){let i=new Zt(n.id,this.urlSerializer.serialize(n.extractedUrl),r,o);this.events.next(i),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=this.currentNavigation?.targetBrowserUrl??this.currentNavigation?.extractedUrl;return n.toString()!==r?.toString()&&!this.currentNavigation?.extras.skipLocationChange}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function rA(e){return e!==hs}var PE=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>h(oA),providedIn:\"root\"})}return e})(),Ol=class{shouldDetach(t){return!1}store(t,n){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,n){return t.routeConfig===n.routeConfig}},oA=(()=>{class e extends Ol{static \\u0275fac=(()=>{let n;return function(o){return(n||(n=wc(e)))(o||e)}})();static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),FE=(()=>{class e{urlSerializer=h(Cs);options=h($o,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||\"replace\";location=h(xo);urlHandlingStrategy=h(Fl);urlUpdateStrategy=this.options.urlUpdateStrategy||\"deferred\";currentUrlTree=new Yt;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=n!==void 0?this.urlHandlingStrategy.merge(n,r):r,s=o??i;return s instanceof Yt?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,o),this.routerState=n):this.rawUrlTree=o}routerState=gE(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();updateStateMemento(){this.stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n??this.rawUrlTree)}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:()=>h(iA),providedIn:\"root\"})}return e})(),iA=(()=>{class e extends FE{currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!==\"computed\"?this.currentPageId:this.restoredState()?.\\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(r=>{r.type===\"popstate\"&&setTimeout(()=>{n(r.url,r.state,\"popstate\")})})}handleRouterEvent(n,r){n instanceof jr?this.updateStateMemento():n instanceof yn?this.commitTransition(r):n instanceof vs?this.urlUpdateStrategy===\"eager\"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):n instanceof ys?(this.commitTransition(r),this.urlUpdateStrategy===\"deferred\"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):n instanceof Zt&&n.code!==$e.SupersededByNewNavigation&&n.code!==$e.Redirect?this.restoreHistory(r):n instanceof Lo?this.restoreHistory(r,!0):n instanceof Rt&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,{extras:r,id:o}){let{replaceUrl:i,state:s}=r;if(this.location.isCurrentPathEqualTo(n)||i){let a=this.browserPageId,c=v(v({},s),this.generateNgRouterState(o,a));this.location.replaceState(n,\"\",c)}else{let a=v(v({},s),this.generateNgRouterState(o,this.browserPageId+1));this.location.go(n,\"\",a)}}restoreHistory(n,r=!1){if(this.canceledNavigationResolution===\"computed\"){let o=this.browserPageId,i=this.currentPageId-o;i!==0?this.location.historyGo(i):this.getCurrentUrlTree()===n.finalUrl&&i===0&&(this.resetInternalState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution===\"replace\"&&(r&&this.resetInternalState(n),this.resetUrlToCurrentUrlTree())}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),\"\",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,r){return this.canceledNavigationResolution===\"computed\"?{navigationId:n,\\u0275routerPageId:r}:{navigationId:n}}static \\u0275fac=(()=>{let n;return function(o){return(n||(n=wc(e)))(o||e)}})();static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function jp(e,t){e.events.pipe(fe(n=>n instanceof Rt||n instanceof Zt||n instanceof Lo||n instanceof yn),T(n=>n instanceof Rt||n instanceof yn?0:(n instanceof Zt?n.code===$e.Redirect||n.code===$e.SupersededByNewNavigation:!1)?2:1),fe(n=>n!==2),Ge(1)).subscribe(()=>{t()})}var sA={paths:\"exact\",fragment:\"ignored\",matrixParams:\"ignored\",queryParams:\"exact\"},aA={paths:\"subset\",fragment:\"ignored\",matrixParams:\"ignored\",queryParams:\"subset\"},zo=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=h(Uc);stateManager=h(FE);options=h($o,{optional:!0})||{};pendingTasks=h(ln);urlUpdateStrategy=this.options.urlUpdateStrategy||\"deferred\";navigationTransitions=h(kE);urlSerializer=h(Cs);location=h(xo);urlHandlingStrategy=h(Fl);injector=h(ue);_events=new V;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=h(PE);onSameUrlNavigation=this.options.onSameUrlNavigation||\"ignore\";config=h(Ms,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!h(kl,{optional:!0});constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}eventsSubscription=new ie;subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(r=>{try{let o=this.navigationTransitions.currentTransition,i=this.navigationTransitions.currentNavigation;if(o!==null&&i!==null){if(this.stateManager.handleRouterEvent(r,i),r instanceof Zt&&r.code!==$e.Redirect&&r.code!==$e.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof Rt)this.navigated=!0;else if(r instanceof jo){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),c=v({browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||this.urlUpdateStrategy===\"eager\"||rA(o.source)},s);this.scheduleNavigation(a,hs,null,c,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}sR(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),hs,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,r,o)=>{this.navigateToSyncWithBrowser(n,o,r)})}navigateToSyncWithBrowser(n,r,o){let i={replaceUrl:!0},s=o?.navigationId?o:null;if(o){let c=v({},o);delete c.navigationId,delete c.\\u0275routerPageId,Object.keys(c).length!==0&&(i.state=c)}let a=this.parseUrl(n);this.scheduleNavigation(a,r,s,i).catch(c=>{this.injector.get(Ue)(c)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(Fp),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryParamsHandling:a,preserveFragment:c}=r,l=c?this.currentUrlTree.fragment:s,u=null;switch(a??this.options.defaultQueryParamsHandling){case\"merge\":u=v(v({},this.currentUrlTree.queryParams),i);break;case\"preserve\":u=this.currentUrlTree.queryParams;break;default:u=i||null}u!==null&&(u=this.removeEmptyProps(u));let d;try{let p=o?o.snapshot:this.routerState.snapshot.root;d=fE(p)}catch{(typeof n[0]!=\"string\"||n[0][0]!==\"/\")&&(n=[]),d=this.currentUrlTree.root}return hE(d,n,u,l??null)}navigateByUrl(n,r={skipLocationChange:!1}){let o=Zn(n)?n:this.parseUrl(n),i=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(i,hs,null,r)}navigate(n,r={skipLocationChange:!1}){return cA(n),this.navigateByUrl(this.createUrlTree(n,r),r)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.urlSerializer.parse(\"/\")}}isActive(n,r){let o;if(r===!0?o=v({},sA):r===!1?o=v({},aA):o=r,Zn(n))return q_(this.currentUrlTree,n,o);let i=this.parseUrl(n);return q_(this.currentUrlTree,i,o)}removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=null&&(r[o]=i),r),{})}scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(!1);let a,c,l;s?(a=s.resolve,c=s.reject,l=s.promise):l=new Promise((d,p)=>{a=d,c=p});let u=this.pendingTasks.add();return jp(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(u))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:i,resolve:a,reject:c,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(d=>Promise.reject(d))}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function cA(e){for(let t=0;t<e.length;t++)if(e[t]==null)throw new _(4008,!1)}var Ll=(()=>{class e{router;route;tabIndexAttribute;renderer;el;locationStrategy;reactiveHref=Ve(null);get href(){return zc(this.reactiveHref)}set href(n){this.reactiveHref.set(n)}target;queryParams;fragment;queryParamsHandling;state;info;relativeTo;isAnchorElement;subscription;onChanges=new V;applicationErrorHandler=h(Ue);options=h($o,{optional:!0});constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttribute=o,this.renderer=i,this.el=s,this.locationStrategy=a,this.reactiveHref.set(h(new Gc(\"href\"),{optional:!0}));let c=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c===\"a\"||c===\"area\"||!!(typeof customElements==\"object\"&&customElements.get(c)?.observedAttributes?.includes?.(\"href\")),this.isAnchorElement?this.setTabIndexIfNotOnNativeEl(\"0\"):this.subscribeToNavigationEventsIfNecessary()}subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0||!this.isAnchorElement)return;let n=this.preserveFragment,r=o=>o===\"merge\"||o===\"preserve\";n||=r(this.queryParamsHandling),n||=!this.queryParamsHandling&&!r(this.options?.defaultQueryParamsHandling),n&&(this.subscription=this.router.events.subscribe(o=>{o instanceof Rt&&this.updateHref()}))}preserveFragment=!1;skipLocationChange=!1;replaceUrl=!1;setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue(\"tabindex\",n)}ngOnChanges(n){this.isAnchorElement&&(this.updateHref(),this.subscribeToNavigationEventsIfNecessary()),this.onChanges.next(this)}routerLinkInput=null;set routerLink(n){n==null?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(Zn(n)?this.routerLinkInput=n:this.routerLinkInput=Array.isArray(n)?n:[n],this.setTabIndexIfNotOnNativeEl(\"0\"))}onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElement&&(n!==0||r||o||i||s||typeof this.target==\"string\"&&this.target!=\"_self\"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,c)?.catch(l=>{this.applicationErrorHandler(l)}),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let n=this.urlTree;this.reactiveHref.set(n!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n))??\"\":null)}applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r!==null?o.setAttribute(i,n,r):o.removeAttribute(i,n)}get urlTree(){return this.routerLinkInput===null?null:Zn(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static \\u0275fac=function(r){return new(r||e)(oe(zo),oe(bn),Fi(\"tabindex\"),oe(Vn),oe(me),oe(Mo))};static \\u0275dir=we({type:e,selectors:[[\"\",\"routerLink\",\"\"]],hostVars:2,hostBindings:function(r,o){r&1&&Hc(\"click\",function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&Rr(\"href\",o.reactiveHref(),Kf)(\"target\",o.target)},inputs:{target:\"target\",queryParams:\"queryParams\",fragment:\"fragment\",queryParamsHandling:\"queryParamsHandling\",state:\"state\",info:\"info\",relativeTo:\"relativeTo\",preserveFragment:[2,\"preserveFragment\",\"preserveFragment\",ft],skipLocationChange:[2,\"skipLocationChange\",\"skipLocationChange\",ft],replaceUrl:[2,\"replaceUrl\",\"replaceUrl\",ft],routerLink:\"routerLink\"},features:[fn]})}return e})(),uA=(()=>{class e{router;element;renderer;cdr;link;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new de;constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,this.cdr=i,this.link=s,this.routerEventsSubscription=n.events.subscribe(a=>{a instanceof Rt&&this.update()})}ngAfterContentInit(){C(this.links.changes,C(null)).pipe(In()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let n=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=ne(n).pipe(In()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(n){let r=Array.isArray(n)?n:n.split(\" \");this.classes=r.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let n=this.hasActiveLinks();this.classes.forEach(r=>{n?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),n&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,\"aria-current\",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,\"aria-current\"),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){let r=dA(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return o=>{let i=o.urlTree;return i?n.isActive(i,r):!1}}hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}static \\u0275fac=function(r){return new(r||e)(oe(zo),oe(me),oe(Vn),oe(Yi),oe(Ll,8))};static \\u0275dir=we({type:e,selectors:[[\"\",\"routerLinkActive\",\"\"]],contentQueries:function(r,o,i){if(r&1&&Mh(i,Ll,5),r&2){let s;xh(s=Rh())&&(o.links=s)}},inputs:{routerLinkActiveOptions:\"routerLinkActiveOptions\",ariaCurrentWhenActive:\"ariaCurrentWhenActive\",routerLinkActive:\"routerLinkActive\"},outputs:{isActiveChange:\"isActiveChange\"},exportAs:[\"routerLinkActive\"],features:[fn]})}return e})();function dA(e){return!!e.paths}var fA=new E(\"\");function hA(e,...t){return vt([{provide:Ms,multi:!0,useValue:e},[],{provide:bn,useFactory:pA,deps:[zo]},{provide:Vc,multi:!0,useFactory:mA},t.map(n=>n.\\u0275providers)])}function pA(e){return e.routerState.root}function mA(){let e=h(ae);return t=>{let n=e.get(zt);if(t!==n.components[0])return;let r=e.get(zo),o=e.get(gA);e.get(vA)===1&&r.initialNavigation(),e.get(yA,null,{optional:!0})?.setUpPreloading(),e.get(fA,null,{optional:!0})?.init(),r.resetRootComponentType(n.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}var gA=new E(\"\",{factory:()=>new V}),vA=new E(\"\",{providedIn:\"root\",factory:()=>1});var yA=new E(\"\");function xs(e){return e.buttons===0||e.detail===0}function Rs(e){let t=e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0];return!!t&&t.identifier===-1&&(t.radiusX==null||t.radiusX===1)&&(t.radiusY==null||t.radiusY===1)}var Bp;function LE(){if(Bp==null){let e=typeof document<\"u\"?document.head:null;Bp=!!(e&&(e.createShadowRoot||e.attachShadow))}return Bp}function Up(e){if(LE()){let t=e.getRootNode?e.getRootNode():null;if(typeof ShadowRoot<\"u\"&&ShadowRoot&&t instanceof ShadowRoot)return t}return null}function bA(){let e=typeof document<\"u\"&&document?document.activeElement:null;for(;e&&e.shadowRoot;){let t=e.shadowRoot.activeElement;if(t===e)break;e=t}return e}function At(e){return e.composedPath?e.composedPath()[0]:e.target}var Vp;try{Vp=typeof Intl<\"u\"&&Intl.v8BreakIterator}catch{Vp=!1}var ze=(()=>{class e{_platformId=h(Un);isBrowser=this._platformId?I_(this._platformId):typeof document==\"object\"&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!!(window.chrome||Vp)&&typeof CSS<\"u\"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!(\"MSStream\"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var As;function jE(){if(As==null&&typeof window<\"u\")try{window.addEventListener(\"test\",null,Object.defineProperty({},\"passive\",{get:()=>As=!0}))}finally{As=As||!1}return As}function Wo(e){return jE()?e:!!e.capture}function Hp(e,t=0){return BE(e)?Number(e):arguments.length===2?t:0}function BE(e){return!isNaN(parseFloat(e))&&!isNaN(Number(e))}function Kt(e){return e instanceof me?e.nativeElement:e}var UE=new E(\"cdk-input-modality-detector-options\"),VE={ignoreKeys:[18,17,224,91,16]},HE=650,$p={passive:!0,capture:!0},$E=(()=>{class e{_platform=h(ze);_listenerCleanups;modalityDetected;modalityChanged;get mostRecentModality(){return this._modality.value}_mostRecentTarget=null;_modality=new _e(null);_options;_lastTouchMs=0;_onKeydown=n=>{this._options?.ignoreKeys?.some(r=>r===n.keyCode)||(this._modality.next(\"keyboard\"),this._mostRecentTarget=At(n))};_onMousedown=n=>{Date.now()-this._lastTouchMs<HE||(this._modality.next(xs(n)?\"keyboard\":\"mouse\"),this._mostRecentTarget=At(n))};_onTouchstart=n=>{if(Rs(n)){this._modality.next(\"keyboard\");return}this._lastTouchMs=Date.now(),this._modality.next(\"touch\"),this._mostRecentTarget=At(n)};constructor(){let n=h(B),r=h(H),o=h(UE,{optional:!0});if(this._options=v(v({},VE),o),this.modalityDetected=this._modality.pipe(ai(1)),this.modalityChanged=this.modalityDetected.pipe(Lu()),this._platform.isBrowser){let i=h(It).createRenderer(null,null);this._listenerCleanups=n.runOutsideAngular(()=>[i.listen(r,\"keydown\",this._onKeydown,$p),i.listen(r,\"mousedown\",this._onMousedown,$p),i.listen(r,\"touchstart\",this._onTouchstart,$p)])}}ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEach(n=>n())}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),Ns=function(e){return e[e.IMMEDIATE=0]=\"IMMEDIATE\",e[e.EVENTUAL=1]=\"EVENTUAL\",e}(Ns||{}),zE=new E(\"cdk-focus-monitor-default-options\"),jl=Wo({passive:!0,capture:!0}),Bl=(()=>{class e{_ngZone=h(B);_platform=h(ze);_inputModalityDetector=h($E);_origin=null;_lastFocusOrigin;_windowFocused=!1;_windowFocusTimeoutId;_originTimeoutId;_originFromTouchInteraction=!1;_elementInfo=new Map;_monitoredElementCount=0;_rootNodeFocusListenerCount=new Map;_detectionMode;_windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=setTimeout(()=>this._windowFocused=!1)};_document=h(H,{optional:!0});_stopInputModalityDetector=new V;constructor(){let n=h(zE,{optional:!0});this._detectionMode=n?.detectionMode||Ns.IMMEDIATE}_rootNodeFocusAndBlurListener=n=>{let r=At(n);for(let o=r;o;o=o.parentElement)n.type===\"focus\"?this._onFocus(n,o):this._onBlur(n,o)};monitor(n,r=!1){let o=Kt(n);if(!this._platform.isBrowser||o.nodeType!==1)return C();let i=Up(o)||this._getDocument(),s=this._elementInfo.get(o);if(s)return r&&(s.checkChildren=!0),s.subject;let a={checkChildren:r,subject:new V,rootNode:i};return this._elementInfo.set(o,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(n){let r=Kt(n),o=this._elementInfo.get(r);o&&(o.subject.complete(),this._setClasses(r),this._elementInfo.delete(r),this._removeGlobalListeners(o))}focusVia(n,r,o){let i=Kt(n),s=this._getDocument().activeElement;i===s?this._getClosestElementsInfo(i).forEach(([a,c])=>this._originChanged(a,r,c)):(this._setOrigin(r),typeof i.focus==\"function\"&&i.focus(o))}ngOnDestroy(){this._elementInfo.forEach((n,r)=>this.stopMonitoring(r))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(n){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(n)?\"touch\":\"program\":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:n&&this._isLastInteractionFromInputLabel(n)?\"mouse\":\"program\"}_shouldBeAttributedToTouch(n){return this._detectionMode===Ns.EVENTUAL||!!n?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(n,r){n.classList.toggle(\"cdk-focused\",!!r),n.classList.toggle(\"cdk-touch-focused\",r===\"touch\"),n.classList.toggle(\"cdk-keyboard-focused\",r===\"keyboard\"),n.classList.toggle(\"cdk-mouse-focused\",r===\"mouse\"),n.classList.toggle(\"cdk-program-focused\",r===\"program\")}_setOrigin(n,r=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin=n,this._originFromTouchInteraction=n===\"touch\"&&r,this._detectionMode===Ns.IMMEDIATE){clearTimeout(this._originTimeoutId);let o=this._originFromTouchInteraction?HE:1;this._originTimeoutId=setTimeout(()=>this._origin=null,o)}})}_onFocus(n,r){let o=this._elementInfo.get(r),i=At(n);!o||!o.checkChildren&&r!==i||this._originChanged(r,this._getFocusOrigin(i),o)}_onBlur(n,r){let o=this._elementInfo.get(r);!o||o.checkChildren&&n.relatedTarget instanceof Node&&r.contains(n.relatedTarget)||(this._setClasses(r),this._emitOrigin(o,null))}_emitOrigin(n,r){n.subject.observers.length&&this._ngZone.run(()=>n.subject.next(r))}_registerGlobalListeners(n){if(!this._platform.isBrowser)return;let r=n.rootNode,o=this._rootNodeFocusListenerCount.get(r)||0;o||this._ngZone.runOutsideAngular(()=>{r.addEventListener(\"focus\",this._rootNodeFocusAndBlurListener,jl),r.addEventListener(\"blur\",this._rootNodeFocusAndBlurListener,jl)}),this._rootNodeFocusListenerCount.set(r,o+1),++this._monitoredElementCount===1&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener(\"focus\",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(Sn(this._stopInputModalityDetector)).subscribe(i=>{this._setOrigin(i,!0)}))}_removeGlobalListeners(n){let r=n.rootNode;if(this._rootNodeFocusListenerCount.has(r)){let o=this._rootNodeFocusListenerCount.get(r);o>1?this._rootNodeFocusListenerCount.set(r,o-1):(r.removeEventListener(\"focus\",this._rootNodeFocusAndBlurListener,jl),r.removeEventListener(\"blur\",this._rootNodeFocusAndBlurListener,jl),this._rootNodeFocusListenerCount.delete(r))}--this._monitoredElementCount||(this._getWindow().removeEventListener(\"focus\",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(n,r,o){this._setClasses(n,r),this._emitOrigin(o,r),this._lastFocusOrigin=r}_getClosestElementsInfo(n){let r=[];return this._elementInfo.forEach((o,i)=>{(i===n||o.checkChildren&&i.contains(n))&&r.push([i,o])}),r}_isLastInteractionFromInputLabel(n){let{_mostRecentTarget:r,mostRecentModality:o}=this._inputModalityDetector;if(o!==\"mouse\"||!r||r===n||n.nodeName!==\"INPUT\"&&n.nodeName!==\"TEXTAREA\"||n.disabled)return!1;let i=n.labels;if(i){for(let s=0;s<i.length;s++)if(i[s].contains(r))return!0}return!1}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),_A=(()=>{class e{_elementRef=h(me);_focusMonitor=h(Bl);_monitorSubscription;_focusOrigin=null;cdkFocusChange=new de;constructor(){}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){let n=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(n,n.nodeType===1&&n.hasAttribute(\"cdkMonitorSubtreeFocus\")).subscribe(r=>{this._focusOrigin=r,this.cdkFocusChange.emit(r)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}static \\u0275fac=function(r){return new(r||e)};static \\u0275dir=we({type:e,selectors:[[\"\",\"cdkMonitorElementFocus\",\"\"],[\"\",\"cdkMonitorSubtreeFocus\",\"\"]],outputs:{cdkFocusChange:\"cdkFocusChange\"},exportAs:[\"cdkMonitorFocus\"]})}return e})();var Ul=new WeakMap,En=(()=>{class e{_appRef;_injector=h(ae);_environmentInjector=h(ue);load(n){let r=this._appRef=this._appRef||this._injector.get(zt),o=Ul.get(r);o||(o={loaders:new Set,refs:[]},Ul.set(r,o),r.onDestroy(()=>{Ul.get(r)?.refs.forEach(i=>i.destroy()),Ul.delete(r)})),o.loaders.has(n)||(o.loaders.add(n),o.refs.push(qb(n,{environmentInjector:this._environmentInjector})))}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var Vl=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275cmp=nt({type:e,selectors:[[\"ng-component\"]],exportAs:[\"cdkVisuallyHidden\"],decls:0,vars:0,template:function(r,o){},styles:[`.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\n`],encapsulation:2,changeDetection:0})}return e})();function zp(e){return Array.isArray(e)?e:[e]}var WE=new Set,Br,Hl=(()=>{class e{_platform=h(ze);_nonce=h(Io,{optional:!0});_matchMedia;constructor(){this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):DA}matchMedia(n){return(this._platform.WEBKIT||this._platform.BLINK)&&EA(n,this._nonce),this._matchMedia(n)}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function EA(e,t){if(!WE.has(e))try{Br||(Br=document.createElement(\"style\"),t&&Br.setAttribute(\"nonce\",t),Br.setAttribute(\"type\",\"text/css\"),document.head.appendChild(Br)),Br.sheet&&(Br.sheet.insertRule(`@media ${e} {body{ }}`,0),WE.add(e))}catch(n){console.error(n)}}function DA(e){return{matches:e===\"all\"||e===\"\",media:e,addListener:()=>{},removeListener:()=>{}}}var Wp=(()=>{class e{_mediaMatcher=h(Hl);_zone=h(B);_queries=new Map;_destroySubject=new V;constructor(){}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(n){return GE(zp(n)).some(o=>this._registerQuery(o).mql.matches)}observe(n){let o=GE(zp(n)).map(s=>this._registerQuery(s).observable),i=to(o);return i=kt(i.pipe(Ge(1)),i.pipe(ai(1),ar(0))),i.pipe(T(s=>{let a={matches:!1,breakpoints:{}};return s.forEach(({matches:c,query:l})=>{a.matches=a.matches||c,a.breakpoints[l]=c}),a}))}_registerQuery(n){if(this._queries.has(n))return this._queries.get(n);let r=this._mediaMatcher.matchMedia(n),i={observable:new P(s=>{let a=c=>this._zone.run(()=>s.next(c));return r.addListener(a),()=>{r.removeListener(a)}}).pipe(ci(r),T(({matches:s})=>({query:n,matches:s})),Sn(this._destroySubject)),mql:r};return this._queries.set(n,i),i}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function GE(e){return e.map(t=>t.split(\",\")).reduce((t,n)=>t.concat(n)).map(t=>t.trim())}function wA(e){if(e.type===\"characterData\"&&e.target instanceof Comment)return!0;if(e.type===\"childList\"){for(let t=0;t<e.addedNodes.length;t++)if(!(e.addedNodes[t]instanceof Comment))return!1;for(let t=0;t<e.removedNodes.length;t++)if(!(e.removedNodes[t]instanceof Comment))return!1;return!0}return!1}var qE=(()=>{class e{create(n){return typeof MutationObserver>\"u\"?null:new MutationObserver(n)}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),ZE=(()=>{class e{_mutationObserverFactory=h(qE);_observedElements=new Map;_ngZone=h(B);constructor(){}ngOnDestroy(){this._observedElements.forEach((n,r)=>this._cleanupObserver(r))}observe(n){let r=Kt(n);return new P(o=>{let s=this._observeElement(r).pipe(T(a=>a.filter(c=>!wA(c))),fe(a=>!!a.length)).subscribe(a=>{this._ngZone.run(()=>{o.next(a)})});return()=>{s.unsubscribe(),this._unobserveElement(r)}})}_observeElement(n){return this._ngZone.runOutsideAngular(()=>{if(this._observedElements.has(n))this._observedElements.get(n).count++;else{let r=new V,o=this._mutationObserverFactory.create(i=>r.next(i));o&&o.observe(n,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(n,{observer:o,stream:r,count:1})}return this._observedElements.get(n).stream})}_unobserveElement(n){this._observedElements.has(n)&&(this._observedElements.get(n).count--,this._observedElements.get(n).count||this._cleanupObserver(n))}_cleanupObserver(n){if(this._observedElements.has(n)){let{observer:r,stream:o}=this._observedElements.get(n);r&&r.disconnect(),o.complete(),this._observedElements.delete(n)}}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),w4=(()=>{class e{_contentObserver=h(ZE);_elementRef=h(me);event=new de;get disabled(){return this._disabled}set disabled(n){this._disabled=n,this._disabled?this._unsubscribe():this._subscribe()}_disabled=!1;get debounce(){return this._debounce}set debounce(n){this._debounce=Hp(n),this._subscribe()}_debounce;_currentSubscription=null;constructor(){}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();let n=this._contentObserver.observe(this._elementRef);this._currentSubscription=(this.debounce?n.pipe(ar(this.debounce)):n).subscribe(this.event)}_unsubscribe(){this._currentSubscription?.unsubscribe()}static \\u0275fac=function(r){return new(r||e)};static \\u0275dir=we({type:e,selectors:[[\"\",\"cdkObserveContent\",\"\"]],inputs:{disabled:[2,\"cdkObserveContentDisabled\",\"disabled\",ft],debounce:\"debounce\"},outputs:{event:\"cdkObserveContent\"},exportAs:[\"cdkObserveContent\"]})}return e})(),YE=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275mod=Se({type:e});static \\u0275inj=De({providers:[qE]})}return e})();var JE=(()=>{class e{_platform=h(ze);constructor(){}isDisabled(n){return n.hasAttribute(\"disabled\")}isVisible(n){return CA(n)&&getComputedStyle(n).visibility===\"visible\"}isTabbable(n){if(!this._platform.isBrowser)return!1;let r=IA(OA(n));if(r&&(KE(r)===-1||!this.isVisible(r)))return!1;let o=n.nodeName.toLowerCase(),i=KE(n);return n.hasAttribute(\"contenteditable\")?i!==-1:o===\"iframe\"||o===\"object\"||this._platform.WEBKIT&&this._platform.IOS&&!AA(n)?!1:o===\"audio\"?n.hasAttribute(\"controls\")?i!==-1:!1:o===\"video\"?i===-1?!1:i!==null?!0:this._platform.FIREFOX||n.hasAttribute(\"controls\"):n.tabIndex>=0}isFocusable(n,r){return NA(n)&&!this.isDisabled(n)&&(r?.ignoreVisibility||this.isVisible(n))}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function IA(e){try{return e.frameElement}catch{return null}}function CA(e){return!!(e.offsetWidth||e.offsetHeight||typeof e.getClientRects==\"function\"&&e.getClientRects().length)}function TA(e){let t=e.nodeName.toLowerCase();return t===\"input\"||t===\"select\"||t===\"button\"||t===\"textarea\"}function SA(e){return xA(e)&&e.type==\"hidden\"}function MA(e){return RA(e)&&e.hasAttribute(\"href\")}function xA(e){return e.nodeName.toLowerCase()==\"input\"}function RA(e){return e.nodeName.toLowerCase()==\"a\"}function eD(e){if(!e.hasAttribute(\"tabindex\")||e.tabIndex===void 0)return!1;let t=e.getAttribute(\"tabindex\");return!!(t&&!isNaN(parseInt(t,10)))}function KE(e){if(!eD(e))return null;let t=parseInt(e.getAttribute(\"tabindex\")||\"\",10);return isNaN(t)?-1:t}function AA(e){let t=e.nodeName.toLowerCase(),n=t===\"input\"&&e.type;return n===\"text\"||n===\"password\"||t===\"select\"||t===\"textarea\"}function NA(e){return SA(e)?!1:TA(e)||MA(e)||e.hasAttribute(\"contenteditable\")||eD(e)}function OA(e){return e.ownerDocument&&e.ownerDocument.defaultView||window}var $l=class{_element;_checker;_ngZone;_document;_injector;_startAnchor;_endAnchor;_hasAttached=!1;startAnchorListener=()=>this.focusLastTabbableElement();endAnchorListener=()=>this.focusFirstTabbableElement();get enabled(){return this._enabled}set enabled(t){this._enabled=t,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(t,this._startAnchor),this._toggleAnchorTabIndex(t,this._endAnchor))}_enabled=!0;constructor(t,n,r,o,i=!1,s){this._element=t,this._checker=n,this._ngZone=r,this._document=o,this._injector=s,i||this.attachAnchors()}destroy(){let t=this._startAnchor,n=this._endAnchor;t&&(t.removeEventListener(\"focus\",this.startAnchorListener),t.remove()),n&&(n.removeEventListener(\"focus\",this.endAnchorListener),n.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return this._hasAttached?!0:(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener(\"focus\",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener(\"focus\",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(t){return new Promise(n=>{this._executeOnStable(()=>n(this.focusInitialElement(t)))})}focusFirstTabbableElementWhenReady(t){return new Promise(n=>{this._executeOnStable(()=>n(this.focusFirstTabbableElement(t)))})}focusLastTabbableElementWhenReady(t){return new Promise(n=>{this._executeOnStable(()=>n(this.focusLastTabbableElement(t)))})}_getRegionBoundary(t){let n=this._element.querySelectorAll(`[cdk-focus-region-${t}], [cdkFocusRegion${t}], [cdk-focus-${t}]`);return t==\"start\"?n.length?n[0]:this._getFirstTabbableElement(this._element):n.length?n[n.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(t){let n=this._element.querySelector(\"[cdk-focus-initial], [cdkFocusInitial]\");if(n){if(!this._checker.isFocusable(n)){let r=this._getFirstTabbableElement(n);return r?.focus(t),!!r}return n.focus(t),!0}return this.focusFirstTabbableElement(t)}focusFirstTabbableElement(t){let n=this._getRegionBoundary(\"start\");return n&&n.focus(t),!!n}focusLastTabbableElement(t){let n=this._getRegionBoundary(\"end\");return n&&n.focus(t),!!n}hasAttached(){return this._hasAttached}_getFirstTabbableElement(t){if(this._checker.isFocusable(t)&&this._checker.isTabbable(t))return t;let n=t.children;for(let r=0;r<n.length;r++){let o=n[r].nodeType===this._document.ELEMENT_NODE?this._getFirstTabbableElement(n[r]):null;if(o)return o}return null}_getLastTabbableElement(t){if(this._checker.isFocusable(t)&&this._checker.isTabbable(t))return t;let n=t.children;for(let r=n.length-1;r>=0;r--){let o=n[r].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(n[r]):null;if(o)return o}return null}_createAnchor(){let t=this._document.createElement(\"div\");return this._toggleAnchorTabIndex(this._enabled,t),t.classList.add(\"cdk-visually-hidden\"),t.classList.add(\"cdk-focus-trap-anchor\"),t.setAttribute(\"aria-hidden\",\"true\"),t}_toggleAnchorTabIndex(t,n){t?n.setAttribute(\"tabindex\",\"0\"):n.removeAttribute(\"tabindex\")}toggleAnchors(t){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(t,this._startAnchor),this._toggleAnchorTabIndex(t,this._endAnchor))}_executeOnStable(t){this._injector?Bc(t,{injector:this._injector}):setTimeout(t)}},kA=(()=>{class e{_checker=h(JE);_ngZone=h(B);_document=h(H);_injector=h(ae);constructor(){h(En).load(Vl)}create(n,r=!1){return new $l(n,this._checker,this._ngZone,this._document,r,this._injector)}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var tD=new E(\"liveAnnouncerElement\",{providedIn:\"root\",factory:nD});function nD(){return null}var rD=new E(\"LIVE_ANNOUNCER_DEFAULT_OPTIONS\"),PA=0,FA=(()=>{class e{_ngZone=h(B);_defaultOptions=h(rD,{optional:!0});_liveElement;_document=h(H);_previousTimeout;_currentPromise;_currentResolve;constructor(){let n=h(tD,{optional:!0});this._liveElement=n||this._createLiveElement()}announce(n,...r){let o=this._defaultOptions,i,s;return r.length===1&&typeof r[0]==\"number\"?s=r[0]:[i,s]=r,this.clear(),clearTimeout(this._previousTimeout),i||(i=o&&o.politeness?o.politeness:\"polite\"),s==null&&o&&(s=o.duration),this._liveElement.setAttribute(\"aria-live\",i),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(a=>this._currentResolve=a)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=n,typeof s==\"number\"&&(this._previousTimeout=setTimeout(()=>this.clear(),s)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent=\"\")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){let n=\"cdk-live-announcer-element\",r=this._document.getElementsByClassName(n),o=this._document.createElement(\"div\");for(let i=0;i<r.length;i++)r[i].remove();return o.classList.add(n),o.classList.add(\"cdk-visually-hidden\"),o.setAttribute(\"aria-atomic\",\"true\"),o.setAttribute(\"aria-live\",\"polite\"),o.id=`cdk-live-announcer-${PA++}`,this._document.body.appendChild(o),o}_exposeAnnouncerToModals(n){let r=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');for(let o=0;o<r.length;o++){let i=r[o],s=i.getAttribute(\"aria-owns\");s?s.indexOf(n)===-1&&i.setAttribute(\"aria-owns\",s+\" \"+n):i.setAttribute(\"aria-owns\",n)}}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var Yn=function(e){return e[e.NONE=0]=\"NONE\",e[e.BLACK_ON_WHITE=1]=\"BLACK_ON_WHITE\",e[e.WHITE_ON_BLACK=2]=\"WHITE_ON_BLACK\",e}(Yn||{}),QE=\"cdk-high-contrast-black-on-white\",XE=\"cdk-high-contrast-white-on-black\",Gp=\"cdk-high-contrast-active\",zl=(()=>{class e{_platform=h(ze);_hasCheckedHighContrastMode;_document=h(H);_breakpointSubscription;constructor(){this._breakpointSubscription=h(Wp).observe(\"(forced-colors: active)\").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Yn.NONE;let n=this._document.createElement(\"div\");n.style.backgroundColor=\"rgb(1,2,3)\",n.style.position=\"absolute\",this._document.body.appendChild(n);let r=this._document.defaultView||window,o=r&&r.getComputedStyle?r.getComputedStyle(n):null,i=(o&&o.backgroundColor||\"\").replace(/ /g,\"\");switch(n.remove(),i){case\"rgb(0,0,0)\":case\"rgb(45,50,54)\":case\"rgb(32,32,32)\":return Yn.WHITE_ON_BLACK;case\"rgb(255,255,255)\":case\"rgb(255,250,239)\":return Yn.BLACK_ON_WHITE}return Yn.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){let n=this._document.body.classList;n.remove(Gp,QE,XE),this._hasCheckedHighContrastMode=!0;let r=this.getHighContrastMode();r===Yn.BLACK_ON_WHITE?n.add(Gp,QE):r===Yn.WHITE_ON_BLACK&&n.add(Gp,XE)}}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})(),LA=(()=>{class e{constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}static \\u0275fac=function(r){return new(r||e)};static \\u0275mod=Se({type:e});static \\u0275inj=De({imports:[YE]})}return e})();var qp={},jA=(()=>{class e{_appId=h(Bn);getId(n){return this._appId!==\"ng\"&&(n+=this._appId),qp.hasOwnProperty(n)||(qp[n]=0),`${n}${qp[n]++}`}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var BA=200,Wl=class{_letterKeyStream=new V;_items=[];_selectedItemIndex=-1;_pressedLetters=[];_skipPredicateFn;_selectedItem=new V;selectedItem=this._selectedItem;constructor(t,n){let r=typeof n?.debounceInterval==\"number\"?n.debounceInterval:BA;n?.skipPredicate&&(this._skipPredicateFn=n.skipPredicate),this.setItems(t),this._setupKeyHandler(r)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(t){this._selectedItemIndex=t}setItems(t){this._items=t}handleKey(t){let n=t.keyCode;t.key&&t.key.length===1?this._letterKeyStream.next(t.key.toLocaleUpperCase()):(n>=65&&n<=90||n>=48&&n<=57)&&this._letterKeyStream.next(String.fromCharCode(n))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(t){this._letterKeyStream.pipe(re(n=>this._pressedLetters.push(n)),ar(t),fe(()=>this._pressedLetters.length>0),T(()=>this._pressedLetters.join(\"\").toLocaleUpperCase())).subscribe(n=>{for(let r=1;r<this._items.length+1;r++){let o=(this._selectedItemIndex+r)%this._items.length,i=this._items[o];if(!this._skipPredicateFn?.(i)&&i.getLabel?.().toLocaleUpperCase().trim().indexOf(n)===0){this._selectedItem.next(i);break}}this._pressedLetters=[]})}};function oD(e,...t){return t.length?t.some(n=>e[n]):e.altKey||e.shiftKey||e.ctrlKey||e.metaKey}var Go=class{_items;_activeItemIndex=Ve(-1);_activeItem=Ve(null);_wrap=!1;_typeaheadSubscription=ie.EMPTY;_itemChangesSubscription;_vertical=!0;_horizontal;_allowedModifierKeys=[];_homeAndEnd=!1;_pageUpAndDown={enabled:!1,delta:10};_effectRef;_typeahead;_skipPredicateFn=t=>t.disabled;constructor(t,n){this._items=t,t instanceof Tr?this._itemChangesSubscription=t.changes.subscribe(r=>this._itemsChanged(r.toArray())):fo(t)&&(this._effectRef=Uh(()=>this._itemsChanged(t()),{injector:n}))}tabOut=new V;change=new V;skipPredicate(t){return this._skipPredicateFn=t,this}withWrap(t=!0){return this._wrap=t,this}withVerticalOrientation(t=!0){return this._vertical=t,this}withHorizontalOrientation(t){return this._horizontal=t,this}withAllowedModifierKeys(t){return this._allowedModifierKeys=t,this}withTypeAhead(t=200){this._typeaheadSubscription.unsubscribe();let n=this._getItemsArray();return this._typeahead=new Wl(n,{debounceInterval:typeof t==\"number\"?t:void 0,skipPredicate:r=>this._skipPredicateFn(r)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(r=>{this.setActiveItem(r)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(t=!0){return this._homeAndEnd=t,this}withPageUpDown(t=!0,n=10){return this._pageUpAndDown={enabled:t,delta:n},this}setActiveItem(t){let n=this._activeItem();this.updateActiveItem(t),this._activeItem()!==n&&this.change.next(this._activeItemIndex())}onKeydown(t){let n=t.keyCode,o=[\"altKey\",\"ctrlKey\",\"metaKey\",\"shiftKey\"].every(i=>!t[i]||this._allowedModifierKeys.indexOf(i)>-1);switch(n){case 9:this.tabOut.next();return;case 40:if(this._vertical&&o){this.setNextItemActive();break}else return;case 38:if(this._vertical&&o){this.setPreviousItemActive();break}else return;case 39:if(this._horizontal&&o){this._horizontal===\"rtl\"?this.setPreviousItemActive():this.setNextItemActive();break}else return;case 37:if(this._horizontal&&o){this._horizontal===\"rtl\"?this.setNextItemActive():this.setPreviousItemActive();break}else return;case 36:if(this._homeAndEnd&&o){this.setFirstItemActive();break}else return;case 35:if(this._homeAndEnd&&o){this.setLastItemActive();break}else return;case 33:if(this._pageUpAndDown.enabled&&o){let i=this._activeItemIndex()-this._pageUpAndDown.delta;this._setActiveItemByIndex(i>0?i:0,1);break}else return;case 34:if(this._pageUpAndDown.enabled&&o){let i=this._activeItemIndex()+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(i<s?i:s-1,-1);break}else return;default:(o||oD(t,\"shiftKey\"))&&this._typeahead?.handleKey(t);return}this._typeahead?.reset(),t.preventDefault()}get activeItemIndex(){return this._activeItemIndex()}get activeItem(){return this._activeItem()}isTyping(){return!!this._typeahead&&this._typeahead.isTyping()}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._getItemsArray().length-1,-1)}setNextItemActive(){this._activeItemIndex()<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex()<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(t){let n=this._getItemsArray(),r=typeof t==\"number\"?t:n.indexOf(t),o=n[r];this._activeItem.set(o??null),this._activeItemIndex.set(r),this._typeahead?.setCurrentSelectedItemIndex(r)}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._effectRef?.destroy(),this._typeahead?.destroy(),this.tabOut.complete(),this.change.complete()}_setActiveItemByDelta(t){this._wrap?this._setActiveInWrapMode(t):this._setActiveInDefaultMode(t)}_setActiveInWrapMode(t){let n=this._getItemsArray();for(let r=1;r<=n.length;r++){let o=(this._activeItemIndex()+t*r+n.length)%n.length,i=n[o];if(!this._skipPredicateFn(i)){this.setActiveItem(o);return}}}_setActiveInDefaultMode(t){this._setActiveItemByIndex(this._activeItemIndex()+t,t)}_setActiveItemByIndex(t,n){let r=this._getItemsArray();if(r[t]){for(;this._skipPredicateFn(r[t]);)if(t+=n,!r[t])return;this.setActiveItem(t)}}_getItemsArray(){return fo(this._items)?this._items():this._items instanceof Tr?this._items.toArray():this._items}_itemsChanged(t){this._typeahead?.setItems(t);let n=this._activeItem();if(n){let r=t.indexOf(n);r>-1&&r!==this._activeItemIndex()&&(this._activeItemIndex.set(r),this._typeahead?.setCurrentSelectedItemIndex(r))}}};var Zp=class extends Go{setActiveItem(t){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(t),this.activeItem&&this.activeItem.setActiveStyles()}};var Yp=class extends Go{_origin=\"program\";setFocusOrigin(t){return this._origin=t,this}setActiveItem(t){super.setActiveItem(t),this.activeItem&&this.activeItem.focus(this._origin)}};var sD=\" \";function UA(e,t,n){let r=ql(e,t);n=n.trim(),!r.some(o=>o.trim()===n)&&(r.push(n),e.setAttribute(t,r.join(sD)))}function VA(e,t,n){let r=ql(e,t);n=n.trim();let o=r.filter(i=>i!==n);o.length?e.setAttribute(t,o.join(sD)):e.removeAttribute(t)}function ql(e,t){return e.getAttribute(t)?.match(/\\S+/g)??[]}var aD=\"cdk-describedby-message\",Gl=\"cdk-describedby-host\",Qp=0,_q=(()=>{class e{_platform=h(ze);_document=h(H);_messageRegistry=new Map;_messagesContainer=null;_id=`${Qp++}`;constructor(){h(En).load(Vl),this._id=h(Bn)+\"-\"+Qp++}describe(n,r,o){if(!this._canBeDescribed(n,r))return;let i=Kp(r,o);typeof r!=\"string\"?(iD(r,this._id),this._messageRegistry.set(i,{messageElement:r,referenceCount:0})):this._messageRegistry.has(i)||this._createMessageElement(r,o),this._isElementDescribedByMessage(n,i)||this._addMessageReference(n,i)}removeDescription(n,r,o){if(!r||!this._isElementNode(n))return;let i=Kp(r,o);if(this._isElementDescribedByMessage(n,i)&&this._removeMessageReference(n,i),typeof r==\"string\"){let s=this._messageRegistry.get(i);s&&s.referenceCount===0&&this._deleteMessageElement(i)}this._messagesContainer?.childNodes.length===0&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){let n=this._document.querySelectorAll(`[${Gl}=\"${this._id}\"]`);for(let r=0;r<n.length;r++)this._removeCdkDescribedByReferenceIds(n[r]),n[r].removeAttribute(Gl);this._messagesContainer?.remove(),this._messagesContainer=null,this._messageRegistry.clear()}_createMessageElement(n,r){let o=this._document.createElement(\"div\");iD(o,this._id),o.textContent=n,r&&o.setAttribute(\"role\",r),this._createMessagesContainer(),this._messagesContainer.appendChild(o),this._messageRegistry.set(Kp(n,r),{messageElement:o,referenceCount:0})}_deleteMessageElement(n){this._messageRegistry.get(n)?.messageElement?.remove(),this._messageRegistry.delete(n)}_createMessagesContainer(){if(this._messagesContainer)return;let n=\"cdk-describedby-message-container\",r=this._document.querySelectorAll(`.${n}[platform=\"server\"]`);for(let i=0;i<r.length;i++)r[i].remove();let o=this._document.createElement(\"div\");o.style.visibility=\"hidden\",o.classList.add(n),o.classList.add(\"cdk-visually-hidden\"),this._platform.isBrowser||o.setAttribute(\"platform\",\"server\"),this._document.body.appendChild(o),this._messagesContainer=o}_removeCdkDescribedByReferenceIds(n){let r=ql(n,\"aria-describedby\").filter(o=>o.indexOf(aD)!=0);n.setAttribute(\"aria-describedby\",r.join(\" \"))}_addMessageReference(n,r){let o=this._messageRegistry.get(r);UA(n,\"aria-describedby\",o.messageElement.id),n.setAttribute(Gl,this._id),o.referenceCount++}_removeMessageReference(n,r){let o=this._messageRegistry.get(r);o.referenceCount--,VA(n,\"aria-describedby\",o.messageElement.id),n.removeAttribute(Gl)}_isElementDescribedByMessage(n,r){let o=ql(n,\"aria-describedby\"),i=this._messageRegistry.get(r),s=i&&i.messageElement.id;return!!s&&o.indexOf(s)!=-1}_canBeDescribed(n,r){if(!this._isElementNode(n))return!1;if(r&&typeof r==\"object\")return!0;let o=r==null?\"\":`${r}`.trim(),i=n.getAttribute(\"aria-label\");return o?!i||i.trim()!==o:!1}_isElementNode(n){return n.nodeType===this._document.ELEMENT_NODE}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();function Kp(e,t){return typeof e==\"string\"?`${t||\"\"}/${e}`:e}function iD(e,t){e.id||(e.id=`${aD}-${t}-${Qp++}`)}var Os=function(e){return e[e.NORMAL=0]=\"NORMAL\",e[e.NEGATED=1]=\"NEGATED\",e[e.INVERTED=2]=\"INVERTED\",e}(Os||{}),Zl,Ur;function Mq(){if(Ur==null){if(typeof document!=\"object\"||!document||typeof Element!=\"function\"||!Element)return Ur=!1,Ur;if(\"scrollBehavior\"in document.documentElement.style)Ur=!0;else{let e=Element.prototype.scrollTo;e?Ur=!/\\{\\s*\\[native code\\]\\s*\\}/.test(e.toString()):Ur=!1}}return Ur}function xq(){if(typeof document!=\"object\"||!document)return Os.NORMAL;if(Zl==null){let e=document.createElement(\"div\"),t=e.style;e.dir=\"rtl\",t.width=\"1px\",t.overflow=\"auto\",t.visibility=\"hidden\",t.pointerEvents=\"none\",t.position=\"absolute\";let n=document.createElement(\"div\"),r=n.style;r.width=\"2px\",r.height=\"1px\",e.appendChild(n),document.body.appendChild(e),Zl=Os.NORMAL,e.scrollLeft===0&&(e.scrollLeft=1,Zl=e.scrollLeft===0?Os.NEGATED:Os.INVERTED),e.remove()}return Zl}function Aq(){return typeof __karma__<\"u\"&&!!__karma__||typeof jasmine<\"u\"&&!!jasmine||typeof jest<\"u\"&&!!jest||typeof Mocha<\"u\"&&!!Mocha}var qo,cD=[\"color\",\"button\",\"checkbox\",\"date\",\"datetime-local\",\"email\",\"file\",\"hidden\",\"image\",\"month\",\"number\",\"password\",\"radio\",\"range\",\"reset\",\"search\",\"submit\",\"tel\",\"text\",\"time\",\"url\",\"week\"];function Oq(){if(qo)return qo;if(typeof document!=\"object\"||!document)return qo=new Set(cD),qo;let e=document.createElement(\"input\");return qo=new Set(cD.filter(t=>(e.setAttribute(\"type\",t),e.type===t))),qo}var jq={XSmall:\"(max-width: 599.98px)\",Small:\"(min-width: 600px) and (max-width: 959.98px)\",Medium:\"(min-width: 960px) and (max-width: 1279.98px)\",Large:\"(min-width: 1280px) and (max-width: 1919.98px)\",XLarge:\"(min-width: 1920px)\",Handset:\"(max-width: 599.98px) and (orientation: portrait), (max-width: 959.98px) and (orientation: landscape)\",Tablet:\"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), (min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)\",Web:\"(min-width: 840px) and (orientation: portrait), (min-width: 1280px) and (orientation: landscape)\",HandsetPortrait:\"(max-width: 599.98px) and (orientation: portrait)\",TabletPortrait:\"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)\",WebPortrait:\"(min-width: 840px) and (orientation: portrait)\",HandsetLandscape:\"(max-width: 959.98px) and (orientation: landscape)\",TabletLandscape:\"(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)\",WebLandscape:\"(min-width: 1280px) and (orientation: landscape)\"};var HA=new E(\"MATERIAL_ANIMATIONS\");function Zo(){return h(HA,{optional:!0})?.animationsDisabled||h(Hf,{optional:!0})===\"NoopAnimations\"?!0:h(Hl).matchMedia(\"(prefers-reduced-motion)\").matches}function zq(e){return e==null?\"\":typeof e==\"string\"?e:`${e}px`}function Gq(e){return e!=null&&`${e}`!=\"false\"}var pt=function(e){return e[e.FADING_IN=0]=\"FADING_IN\",e[e.VISIBLE=1]=\"VISIBLE\",e[e.FADING_OUT=2]=\"FADING_OUT\",e[e.HIDDEN=3]=\"HIDDEN\",e}(pt||{}),Xp=class{_renderer;element;config;_animationForciblyDisabledThroughCss;state=pt.HIDDEN;constructor(t,n,r,o=!1){this._renderer=t,this.element=n,this.config=r,this._animationForciblyDisabledThroughCss=o}fadeOut(){this._renderer.fadeOutRipple(this)}},lD=Wo({passive:!0,capture:!0}),Jp=class{_events=new Map;addHandler(t,n,r,o){let i=this._events.get(n);if(i){let s=i.get(r);s?s.add(o):i.set(r,new Set([o]))}else this._events.set(n,new Map([[r,new Set([o])]])),t.runOutsideAngular(()=>{document.addEventListener(n,this._delegateEventHandler,lD)})}removeHandler(t,n,r){let o=this._events.get(t);if(!o)return;let i=o.get(n);i&&(i.delete(r),i.size===0&&o.delete(n),o.size===0&&(this._events.delete(t),document.removeEventListener(t,this._delegateEventHandler,lD)))}_delegateEventHandler=t=>{let n=At(t);n&&this._events.get(t.type)?.forEach((r,o)=>{(o===n||o.contains(n))&&r.forEach(i=>i.handleEvent(t))})}},ks={enterDuration:225,exitDuration:150},$A=800,uD=Wo({passive:!0,capture:!0}),dD=[\"mousedown\",\"touchstart\"],fD=[\"mouseup\",\"mouseleave\",\"touchend\",\"touchcancel\"],zA=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275cmp=nt({type:e,selectors:[[\"ng-component\"]],hostAttrs:[\"mat-ripple-style-loader\",\"\"],decls:0,vars:0,template:function(r,o){},styles:[`.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}\n`],encapsulation:2,changeDetection:0})}return e})(),Ps=class e{_target;_ngZone;_platform;_containerElement;_triggerElement;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect;static _eventManager=new Jp;constructor(t,n,r,o,i){this._target=t,this._ngZone=n,this._platform=o,o.isBrowser&&(this._containerElement=Kt(r)),i&&i.get(En).load(zA)}fadeInRipple(t,n,r={}){let o=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),i=v(v({},ks),r.animation);r.centered&&(t=o.left+o.width/2,n=o.top+o.height/2);let s=r.radius||WA(t,n,o),a=t-o.left,c=n-o.top,l=i.enterDuration,u=document.createElement(\"div\");u.classList.add(\"mat-ripple-element\"),u.style.left=`${a-s}px`,u.style.top=`${c-s}px`,u.style.height=`${s*2}px`,u.style.width=`${s*2}px`,r.color!=null&&(u.style.backgroundColor=r.color),u.style.transitionDuration=`${l}ms`,this._containerElement.appendChild(u);let d=window.getComputedStyle(u),p=d.transitionProperty,f=d.transitionDuration,g=p===\"none\"||f===\"0s\"||f===\"0s, 0s\"||o.width===0&&o.height===0,y=new Xp(this,u,r,g);u.style.transform=\"scale3d(1, 1, 1)\",y.state=pt.FADING_IN,r.persistent||(this._mostRecentTransientRipple=y);let D=null;return!g&&(l||i.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let w=()=>{D&&(D.fallbackTimer=null),clearTimeout(te),this._finishRippleTransition(y)},K=()=>this._destroyRipple(y),te=setTimeout(K,l+100);u.addEventListener(\"transitionend\",w),u.addEventListener(\"transitioncancel\",K),D={onTransitionEnd:w,onTransitionCancel:K,fallbackTimer:te}}),this._activeRipples.set(y,D),(g||!l)&&this._finishRippleTransition(y),y}fadeOutRipple(t){if(t.state===pt.FADING_OUT||t.state===pt.HIDDEN)return;let n=t.element,r=v(v({},ks),t.config.animation);n.style.transitionDuration=`${r.exitDuration}ms`,n.style.opacity=\"0\",t.state=pt.FADING_OUT,(t._animationForciblyDisabledThroughCss||!r.exitDuration)&&this._finishRippleTransition(t)}fadeOutAll(){this._getActiveRipples().forEach(t=>t.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(t=>{t.config.persistent||t.fadeOut()})}setupTriggerEvents(t){let n=Kt(t);!this._platform.isBrowser||!n||n===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=n,dD.forEach(r=>{e._eventManager.addHandler(this._ngZone,r,n,this)}))}handleEvent(t){t.type===\"mousedown\"?this._onMousedown(t):t.type===\"touchstart\"?this._onTouchStart(t):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{fD.forEach(n=>{this._triggerElement.addEventListener(n,this,uD)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(t){t.state===pt.FADING_IN?this._startFadeOutTransition(t):t.state===pt.FADING_OUT&&this._destroyRipple(t)}_startFadeOutTransition(t){let n=t===this._mostRecentTransientRipple,{persistent:r}=t.config;t.state=pt.VISIBLE,!r&&(!n||!this._isPointerDown)&&t.fadeOut()}_destroyRipple(t){let n=this._activeRipples.get(t)??null;this._activeRipples.delete(t),this._activeRipples.size||(this._containerRect=null),t===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),t.state=pt.HIDDEN,n!==null&&(t.element.removeEventListener(\"transitionend\",n.onTransitionEnd),t.element.removeEventListener(\"transitioncancel\",n.onTransitionCancel),n.fallbackTimer!==null&&clearTimeout(n.fallbackTimer)),t.element.remove()}_onMousedown(t){let n=xs(t),r=this._lastTouchStartEvent&&Date.now()<this._lastTouchStartEvent+$A;!this._target.rippleDisabled&&!n&&!r&&(this._isPointerDown=!0,this.fadeInRipple(t.clientX,t.clientY,this._target.rippleConfig))}_onTouchStart(t){if(!this._target.rippleDisabled&&!Rs(t)){this._lastTouchStartEvent=Date.now(),this._isPointerDown=!0;let n=t.changedTouches;if(n)for(let r=0;r<n.length;r++)this.fadeInRipple(n[r].clientX,n[r].clientY,this._target.rippleConfig)}}_onPointerUp(){this._isPointerDown&&(this._isPointerDown=!1,this._getActiveRipples().forEach(t=>{let n=t.state===pt.VISIBLE||t.config.terminateOnPointerUp&&t.state===pt.FADING_IN;!t.config.persistent&&n&&t.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let t=this._triggerElement;t&&(dD.forEach(n=>e._eventManager.removeHandler(n,t,this)),this._pointerUpEventsRegistered&&(fD.forEach(n=>t.removeEventListener(n,this,uD)),this._pointerUpEventsRegistered=!1))}};function WA(e,t,n){let r=Math.max(Math.abs(e-n.left),Math.abs(e-n.right)),o=Math.max(Math.abs(t-n.top),Math.abs(t-n.bottom));return Math.sqrt(r*r+o*o)}var em=new E(\"mat-ripple-global-options\"),s5=(()=>{class e{_elementRef=h(me);_animationsDisabled=Zo();color;unbounded;centered;radius=0;animation;get disabled(){return this._disabled}set disabled(n){n&&this.fadeOutAllNonPersistent(),this._disabled=n,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(n){this._trigger=n,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){let n=h(B),r=h(ze),o=h(em,{optional:!0}),i=h(ae);this._globalOptions=o||{},this._rippleRenderer=new Ps(this,n,this._elementRef,r,i)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:v(v(v({},this._globalOptions.animation),this._animationsDisabled?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(n,r=0,o){return typeof n==\"number\"?this._rippleRenderer.fadeInRipple(n,r,v(v({},this.rippleConfig),o)):this._rippleRenderer.fadeInRipple(0,0,v(v({},this.rippleConfig),n))}static \\u0275fac=function(r){return new(r||e)};static \\u0275dir=we({type:e,selectors:[[\"\",\"mat-ripple\",\"\"],[\"\",\"matRipple\",\"\"]],hostAttrs:[1,\"mat-ripple\"],hostVars:2,hostBindings:function(r,o){r&2&&zn(\"mat-ripple-unbounded\",o.unbounded)},inputs:{color:[0,\"matRippleColor\",\"color\"],unbounded:[0,\"matRippleUnbounded\",\"unbounded\"],centered:[0,\"matRippleCentered\",\"centered\"],radius:[0,\"matRippleRadius\",\"radius\"],animation:[0,\"matRippleAnimation\",\"animation\"],disabled:[0,\"matRippleDisabled\",\"disabled\"],trigger:[0,\"matRippleTrigger\",\"trigger\"]},exportAs:[\"matRipple\"]})}return e})();var GA={capture:!0},qA=[\"focus\",\"mousedown\",\"mouseenter\",\"touchstart\"],tm=\"mat-ripple-loader-uninitialized\",nm=\"mat-ripple-loader-class-name\",hD=\"mat-ripple-loader-centered\",Yl=\"mat-ripple-loader-disabled\",pD=(()=>{class e{_document=h(H);_animationsDisabled=Zo();_globalRippleOptions=h(em,{optional:!0});_platform=h(ze);_ngZone=h(B);_injector=h(ae);_eventCleanups;_hosts=new Map;constructor(){let n=h(It).createRenderer(null,null);this._eventCleanups=this._ngZone.runOutsideAngular(()=>qA.map(r=>n.listen(this._document,r,this._onInteraction,GA)))}ngOnDestroy(){let n=this._hosts.keys();for(let r of n)this.destroyRipple(r);this._eventCleanups.forEach(r=>r())}configureRipple(n,r){n.setAttribute(tm,this._globalRippleOptions?.namespace??\"\"),(r.className||!n.hasAttribute(nm))&&n.setAttribute(nm,r.className||\"\"),r.centered&&n.setAttribute(hD,\"\"),r.disabled&&n.setAttribute(Yl,\"\")}setDisabled(n,r){let o=this._hosts.get(n);o?(o.target.rippleDisabled=r,!r&&!o.hasSetUpEvents&&(o.hasSetUpEvents=!0,o.renderer.setupTriggerEvents(n))):r?n.setAttribute(Yl,\"\"):n.removeAttribute(Yl)}_onInteraction=n=>{let r=At(n);if(r instanceof HTMLElement){let o=r.closest(`[${tm}=\"${this._globalRippleOptions?.namespace??\"\"}\"]`);o&&this._createRipple(o)}};_createRipple(n){if(!this._document||this._hosts.has(n))return;n.querySelector(\".mat-ripple\")?.remove();let r=this._document.createElement(\"span\");r.classList.add(\"mat-ripple\",n.getAttribute(nm)),n.append(r);let o=this._globalRippleOptions,i=this._animationsDisabled?0:o?.animation?.enterDuration??ks.enterDuration,s=this._animationsDisabled?0:o?.animation?.exitDuration??ks.exitDuration,a={rippleDisabled:this._animationsDisabled||o?.disabled||n.hasAttribute(Yl),rippleConfig:{centered:n.hasAttribute(hD),terminateOnPointerUp:o?.terminateOnPointerUp,animation:{enterDuration:i,exitDuration:s}}},c=new Ps(a,this._ngZone,r,this._platform,this._injector),l=!a.rippleDisabled;l&&c.setupTriggerEvents(n),this._hosts.set(n,{target:a,renderer:c,hasSetUpEvents:l}),n.removeAttribute(tm)}destroyRipple(n){let r=this._hosts.get(n);r&&(r.renderer._removeTriggerEvents(),this._hosts.delete(n))}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var mD=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275cmp=nt({type:e,selectors:[[\"structural-styles\"]],decls:0,vars:0,template:function(r,o){},styles:[`.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus::before{content:\"\"}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}\n`],encapsulation:2,changeDetection:0})}return e})();var ZA=[\"mat-icon-button\",\"\"],YA=[\"*\"],KA=new E(\"MAT_BUTTON_CONFIG\");function gD(e){return e==null?void 0:Wb(e)}var rm=(()=>{class e{_elementRef=h(me);_ngZone=h(B);_animationsDisabled=Zo();_config=h(KA,{optional:!0});_focusMonitor=h(Bl);_cleanupClick;_renderer=h(Vn);_rippleLoader=h(pD);_isAnchor;_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(n){this._disableRipple=n,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(n){this._disabled=n,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;tabIndex;set _tabindex(n){this.tabIndex=n}constructor(){h(En).load(mD);let n=this._elementRef.nativeElement;this._isAnchor=n.tagName===\"A\",this.disabledInteractive=this._config?.disabledInteractive??!1,this.color=this._config?.color??null,this._rippleLoader?.configureRipple(n,{className:\"mat-mdc-button-ripple\"})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this._isAnchor&&this._setupAsAnchor()}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(n=\"program\",r){n?this._focusMonitor.focusVia(this._elementRef.nativeElement,n,r):this._elementRef.nativeElement.focus(r)}_getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:this._isAnchor?this.disabled||null:this.disabled&&this.disabledInteractive?!0:null}_getDisabledAttribute(){return this.disabledInteractive||!this.disabled?null:!0}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}_getTabIndex(){return this._isAnchor?this.disabled&&!this.disabledInteractive?-1:this.tabIndex:this.tabIndex}_setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,\"click\",n=>{this.disabled&&(n.preventDefault(),n.stopImmediatePropagation())}))}static \\u0275fac=function(r){return new(r||e)};static \\u0275dir=we({type:e,hostAttrs:[1,\"mat-mdc-button-base\"],hostVars:13,hostBindings:function(r,o){r&2&&(Rr(\"disabled\",o._getDisabledAttribute())(\"aria-disabled\",o._getAriaDisabled())(\"tabindex\",o._getTabIndex()),Ah(o.color?\"mat-\"+o.color:\"\"),zn(\"mat-mdc-button-disabled\",o.disabled)(\"mat-mdc-button-disabled-interactive\",o.disabledInteractive)(\"mat-unthemed\",!o.color)(\"_mat-animation-noopable\",o._animationsDisabled))},inputs:{color:\"color\",disableRipple:[2,\"disableRipple\",\"disableRipple\",ft],disabled:[2,\"disabled\",\"disabled\",ft],ariaDisabled:[2,\"aria-disabled\",\"ariaDisabled\",ft],disabledInteractive:[2,\"disabledInteractive\",\"disabledInteractive\",ft],tabIndex:[2,\"tabIndex\",\"tabIndex\",gD],_tabindex:[2,\"tabindex\",\"_tabindex\",gD]}})}return e})(),QA=(()=>{class e extends rm{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \\u0275fac=function(r){return new(r||e)};static \\u0275cmp=nt({type:e,selectors:[[\"button\",\"mat-icon-button\",\"\"],[\"a\",\"mat-icon-button\",\"\"],[\"button\",\"matIconButton\",\"\"],[\"a\",\"matIconButton\",\"\"]],hostAttrs:[1,\"mdc-icon-button\",\"mat-mdc-icon-button\"],exportAs:[\"matButton\",\"matAnchor\"],features:[Co],attrs:ZA,ngContentSelectors:YA,decls:4,vars:0,consts:[[1,\"mat-mdc-button-persistent-ripple\",\"mdc-icon-button__ripple\"],[1,\"mat-focus-indicator\"],[1,\"mat-mdc-button-touch-target\"]],template:function(r,o){r&1&&(qi(),Wt(0,\"span\",0),Ar(1),Wt(2,\"span\",1)(3,\"span\",2))},styles:[`.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\"\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus>.mat-focus-indicator::before{content:\"\";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;display:var(--mat-icon-button-touch-target-display, block);left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n`,`@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n`],encapsulation:2,changeDetection:0})}return e})();var XA=new E(\"cdk-dir-doc\",{providedIn:\"root\",factory:JA});function JA(){return h(H)}var eN=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function vD(e){let t=e?.toLowerCase()||\"\";return t===\"auto\"&&typeof navigator<\"u\"&&navigator?.language?eN.test(navigator.language)?\"rtl\":\"ltr\":t===\"rtl\"?\"rtl\":\"ltr\"}var tN=(()=>{class e{get value(){return this.valueSignal()}valueSignal=Ve(\"ltr\");change=new de;constructor(){let n=h(XA,{optional:!0});if(n){let r=n.body?n.body.dir:null,o=n.documentElement?n.documentElement.dir:null;this.valueSignal.set(vD(r||o||\"ltr\"))}}ngOnDestroy(){this.change.complete()}static \\u0275fac=function(r){return new(r||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})}return e})();var om=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275mod=Se({type:e});static \\u0275inj=De({})}return e})();var Yo=(()=>{class e{constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}static \\u0275fac=function(r){return new(r||e)};static \\u0275mod=Se({type:e});static \\u0275inj=De({imports:[om,om]})}return e})();var yD=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275mod=Se({type:e});static \\u0275inj=De({imports:[Yo,Yo]})}return e})();var nN=[\"matButton\",\"\"],rN=[[[\"\",8,\"material-icons\",3,\"iconPositionEnd\",\"\"],[\"mat-icon\",3,\"iconPositionEnd\",\"\"],[\"\",\"matButtonIcon\",\"\",3,\"iconPositionEnd\",\"\"]],\"*\",[[\"\",\"iconPositionEnd\",\"\",8,\"material-icons\"],[\"mat-icon\",\"iconPositionEnd\",\"\"],[\"\",\"matButtonIcon\",\"\",\"iconPositionEnd\",\"\"]]],oN=[\".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])\",\"*\",\".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]\"];var bD=new Map([[\"text\",[\"mat-mdc-button\"]],[\"filled\",[\"mdc-button--unelevated\",\"mat-mdc-unelevated-button\"]],[\"elevated\",[\"mdc-button--raised\",\"mat-mdc-raised-button\"]],[\"outlined\",[\"mdc-button--outlined\",\"mat-mdc-outlined-button\"]],[\"tonal\",[\"mat-tonal-button\"]]]),$5=(()=>{class e extends rm{get appearance(){return this._appearance}set appearance(n){this.setAppearance(n||this._config?.defaultAppearance||\"text\")}_appearance=null;constructor(){super();let n=iN(this._elementRef.nativeElement);n&&this.setAppearance(n)}setAppearance(n){if(n===this._appearance)return;let r=this._elementRef.nativeElement.classList,o=this._appearance?bD.get(this._appearance):null,i=bD.get(n);o&&r.remove(...o),r.add(...i),this._appearance=n}static \\u0275fac=function(r){return new(r||e)};static \\u0275cmp=nt({type:e,selectors:[[\"button\",\"matButton\",\"\"],[\"a\",\"matButton\",\"\"],[\"button\",\"mat-button\",\"\"],[\"button\",\"mat-raised-button\",\"\"],[\"button\",\"mat-flat-button\",\"\"],[\"button\",\"mat-stroked-button\",\"\"],[\"a\",\"mat-button\",\"\"],[\"a\",\"mat-raised-button\",\"\"],[\"a\",\"mat-flat-button\",\"\"],[\"a\",\"mat-stroked-button\",\"\"]],hostAttrs:[1,\"mdc-button\"],inputs:{appearance:[0,\"matButton\",\"appearance\"]},exportAs:[\"matButton\",\"matAnchor\"],features:[Co],attrs:nN,ngContentSelectors:oN,decls:7,vars:4,consts:[[1,\"mat-mdc-button-persistent-ripple\"],[1,\"mdc-button__label\"],[1,\"mat-focus-indicator\"],[1,\"mat-mdc-button-touch-target\"]],template:function(r,o){r&1&&(qi(rN),Wt(0,\"span\",0),Ar(1),zi(2,\"span\",1),Ar(3,1),Wi(),Ar(4,2),Wt(5,\"span\",2)(6,\"span\",3)),r&2&&zn(\"mdc-button__ripple\",!o._isFab)(\"mdc-fab__ripple\",o._isFab)},styles:[`.mat-mdc-button-base{text-decoration:none}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:\"\";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus>.mat-focus-indicator::before,.mat-mdc-raised-button:focus>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus>.mat-focus-indicator::before,.mat-tonal-button:focus>.mat-focus-indicator::before{content:\"\";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}\n`,`@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n`],encapsulation:2,changeDetection:0})}return e})();function iN(e){return e.hasAttribute(\"mat-raised-button\")?\"elevated\":e.hasAttribute(\"mat-stroked-button\")?\"outlined\":e.hasAttribute(\"mat-flat-button\")?\"filled\":e.hasAttribute(\"mat-button\")?\"text\":null}var z5=(()=>{class e{static \\u0275fac=function(r){return new(r||e)};static \\u0275mod=Se({type:e});static \\u0275inj=De({imports:[Yo,yD,Yo]})}return e})();var Kl={production:!0,baseUrl:\"api/\",hubUrl:\"hub/notifications\",stripePublicKey:\"pk_test_51RfWtp2eeLkqjJn6O3xoMRVY9wkRB9a2UZCvR1EMZPrJhpkjsWpFgC8wjG2HrfCQbd4Jz0Le2E4bB1jXgem7qtn100sWRZt0Sh\"};var it=class extends Error{constructor(t,n){let r=new.target.prototype;super(`${t}: Status code '${n}'`),this.statusCode=n,this.__proto__=r}},Kn=class extends Error{constructor(t=\"A timeout occurred.\"){let n=new.target.prototype;super(t),this.__proto__=n}},xe=class extends Error{constructor(t=\"An abort occurred.\"){let n=new.target.prototype;super(t),this.__proto__=n}},Ql=class extends Error{constructor(t,n){let r=new.target.prototype;super(t),this.transport=n,this.errorType=\"UnsupportedTransportError\",this.__proto__=r}},Xl=class extends Error{constructor(t,n){let r=new.target.prototype;super(t),this.transport=n,this.errorType=\"DisabledTransportError\",this.__proto__=r}},Jl=class extends Error{constructor(t,n){let r=new.target.prototype;super(t),this.transport=n,this.errorType=\"FailedToStartTransportError\",this.__proto__=r}},Fs=class extends Error{constructor(t){let n=new.target.prototype;super(t),this.errorType=\"FailedToNegotiateWithServerError\",this.__proto__=n}},eu=class extends Error{constructor(t,n){let r=new.target.prototype;super(t),this.innerErrors=n,this.__proto__=r}};var Ko=class{constructor(t,n,r){this.statusCode=t,this.statusText=n,this.content=r}},Qt=class{get(t,n){return this.send(U(v({},n),{method:\"GET\",url:t}))}post(t,n){return this.send(U(v({},n),{method:\"POST\",url:t}))}delete(t,n){return this.send(U(v({},n),{method:\"DELETE\",url:t}))}getCookieString(t){return\"\"}};var m=function(e){return e[e.Trace=0]=\"Trace\",e[e.Debug=1]=\"Debug\",e[e.Information=2]=\"Information\",e[e.Warning=3]=\"Warning\",e[e.Error=4]=\"Error\",e[e.Critical=5]=\"Critical\",e[e.None=6]=\"None\",e}(m||{});var Xt=class{constructor(){}log(t,n){}};Xt.instance=new Xt;var sN=\"8.0.7\",Z=class{static isRequired(t,n){if(t==null)throw new Error(`The '${n}' argument is required.`)}static isNotEmpty(t,n){if(!t||t.match(/^\\s*$/))throw new Error(`The '${n}' argument should not be empty.`)}static isIn(t,n,r){if(!(t in n))throw new Error(`Unknown ${r} value: ${t}.`)}},Y=class e{static get isBrowser(){return!e.isNode&&typeof window==\"object\"&&typeof window.document==\"object\"}static get isWebWorker(){return!e.isNode&&typeof self==\"object\"&&\"importScripts\"in self}static get isReactNative(){return!e.isNode&&typeof window==\"object\"&&typeof window.document>\"u\"}static get isNode(){return typeof process<\"u\"&&process.release&&process.release.name===\"node\"}};function Qn(e,t){let n=\"\";return Nt(e)?(n=`Binary data of length ${e.byteLength}`,t&&(n+=`. Content: '${aN(e)}'`)):typeof e==\"string\"&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function aN(e){let t=new Uint8Array(e),n=\"\";return t.forEach(r=>{let o=r<16?\"0\":\"\";n+=`0x${o}${r.toString(16)} `}),n.substr(0,n.length-1)}function Nt(e){return e&&typeof ArrayBuffer<\"u\"&&(e instanceof ArrayBuffer||e.constructor&&e.constructor.name===\"ArrayBuffer\")}function nu(e,t,n,r,o,i){return F(this,null,function*(){let s={},[a,c]=Jt();s[a]=c,e.log(m.Trace,`(${t} transport) sending data. ${Qn(o,i.logMessageContent)}.`);let l=Nt(o)?\"arraybuffer\":\"text\",u=yield n.post(r,{content:o,headers:v(v({},s),i.headers),responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(m.Trace,`(${t} transport) request complete. Response status: ${u.statusCode}.`)})}function _D(e){return e===void 0?new Vr(m.Information):e===null?Xt.instance:e.log!==void 0?e:new Vr(e)}var tu=class{constructor(t,n){this._subject=t,this._observer=n}dispose(){let t=this._subject.observers.indexOf(this._observer);t>-1&&this._subject.observers.splice(t,1),this._subject.observers.length===0&&this._subject.cancelCallback&&this._subject.cancelCallback().catch(n=>{})}},Vr=class{constructor(t){this._minLevel=t,this.out=console}log(t,n){if(t>=this._minLevel){let r=`[${new Date().toISOString()}] ${m[t]}: ${n}`;switch(t){case m.Critical:case m.Error:this.out.error(r);break;case m.Warning:this.out.warn(r);break;case m.Information:this.out.info(r);break;default:this.out.log(r);break}}}};function Jt(){let e=\"X-SignalR-User-Agent\";return Y.isNode&&(e=\"User-Agent\"),[e,cN(sN,lN(),dN(),uN())]}function cN(e,t,n,r){let o=\"Microsoft SignalR/\",i=e.split(\".\");return o+=`${i[0]}.${i[1]}`,o+=` (${e}; `,t&&t!==\"\"?o+=`${t}; `:o+=\"Unknown OS; \",o+=`${n}`,r?o+=`; ${r}`:o+=\"; Unknown Runtime Version\",o+=\")\",o}function lN(){if(Y.isNode)switch(process.platform){case\"win32\":return\"Windows NT\";case\"darwin\":return\"macOS\";case\"linux\":return\"Linux\";default:return process.platform}else return\"\"}function uN(){if(Y.isNode)return process.versions.node}function dN(){return Y.isNode?\"NodeJS\":\"Browser\"}function ru(e){return e.stack?e.stack:e.message?e.message:`${e}`}function ED(){if(typeof globalThis<\"u\")return globalThis;if(typeof self<\"u\")return self;if(typeof window<\"u\")return window;if(typeof global<\"u\")return global;throw new Error(\"could not find global\")}var ou=class extends Qt{constructor(t){if(super(),this._logger=t,typeof fetch>\"u\"||Y.isNode){let n=typeof __webpack_require__==\"function\"?__non_webpack_require__:$r;this._jar=new(n(\"tough-cookie\")).CookieJar,typeof fetch>\"u\"?this._fetchType=n(\"node-fetch\"):this._fetchType=fetch,this._fetchType=n(\"fetch-cookie\")(this._fetchType,this._jar)}else this._fetchType=fetch.bind(ED());if(typeof AbortController>\"u\"){let n=typeof __webpack_require__==\"function\"?__non_webpack_require__:$r;this._abortControllerType=n(\"abort-controller\")}else this._abortControllerType=AbortController}send(t){return F(this,null,function*(){if(t.abortSignal&&t.abortSignal.aborted)throw new xe;if(!t.method)throw new Error(\"No method defined.\");if(!t.url)throw new Error(\"No url defined.\");let n=new this._abortControllerType,r;t.abortSignal&&(t.abortSignal.onabort=()=>{n.abort(),r=new xe});let o=null;if(t.timeout){let c=t.timeout;o=setTimeout(()=>{n.abort(),this._logger.log(m.Warning,\"Timeout from HTTP request.\"),r=new Kn},c)}t.content===\"\"&&(t.content=void 0),t.content&&(t.headers=t.headers||{},Nt(t.content)?t.headers[\"Content-Type\"]=\"application/octet-stream\":t.headers[\"Content-Type\"]=\"text/plain;charset=UTF-8\");let i;try{i=yield this._fetchType(t.url,{body:t.content,cache:\"no-cache\",credentials:t.withCredentials===!0?\"include\":\"same-origin\",headers:v({\"X-Requested-With\":\"XMLHttpRequest\"},t.headers),method:t.method,mode:\"cors\",redirect:\"follow\",signal:n.signal})}catch(c){throw r||(this._logger.log(m.Warning,`Error from HTTP request. ${c}.`),c)}finally{o&&clearTimeout(o),t.abortSignal&&(t.abortSignal.onabort=null)}if(!i.ok){let c=yield DD(i,\"text\");throw new it(c||i.statusText,i.status)}let a=yield DD(i,t.responseType);return new Ko(i.status,i.statusText,a)})}getCookieString(t){let n=\"\";return Y.isNode&&this._jar&&this._jar.getCookies(t,(r,o)=>n=o.join(\"; \")),n}};function DD(e,t){let n;switch(t){case\"arraybuffer\":n=e.arrayBuffer();break;case\"text\":n=e.text();break;case\"blob\":case\"document\":case\"json\":throw new Error(`${t} is not supported.`);default:n=e.text();break}return n}var iu=class extends Qt{constructor(t){super(),this._logger=t}send(t){return t.abortSignal&&t.abortSignal.aborted?Promise.reject(new xe):t.method?t.url?new Promise((n,r)=>{let o=new XMLHttpRequest;o.open(t.method,t.url,!0),o.withCredentials=t.withCredentials===void 0?!0:t.withCredentials,o.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),t.content===\"\"&&(t.content=void 0),t.content&&(Nt(t.content)?o.setRequestHeader(\"Content-Type\",\"application/octet-stream\"):o.setRequestHeader(\"Content-Type\",\"text/plain;charset=UTF-8\"));let i=t.headers;i&&Object.keys(i).forEach(s=>{o.setRequestHeader(s,i[s])}),t.responseType&&(o.responseType=t.responseType),t.abortSignal&&(t.abortSignal.onabort=()=>{o.abort(),r(new xe)}),t.timeout&&(o.timeout=t.timeout),o.onload=()=>{t.abortSignal&&(t.abortSignal.onabort=null),o.status>=200&&o.status<300?n(new Ko(o.status,o.statusText,o.response||o.responseText)):r(new it(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(m.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),r(new it(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(m.Warning,\"Timeout from HTTP request.\"),r(new Kn)},o.send(t.content)}):Promise.reject(new Error(\"No url defined.\")):Promise.reject(new Error(\"No method defined.\"))}};var su=class extends Qt{constructor(t){if(super(),typeof fetch<\"u\"||Y.isNode)this._httpClient=new ou(t);else if(typeof XMLHttpRequest<\"u\")this._httpClient=new iu(t);else throw new Error(\"No usable HttpClient found.\")}send(t){return t.abortSignal&&t.abortSignal.aborted?Promise.reject(new xe):t.method?t.url?this._httpClient.send(t):Promise.reject(new Error(\"No url defined.\")):Promise.reject(new Error(\"No method defined.\"))}getCookieString(t){return this._httpClient.getCookieString(t)}};var st=class e{static write(t){return`${t}${e.RecordSeparator}`}static parse(t){if(t[t.length-1]!==e.RecordSeparator)throw new Error(\"Message is incomplete.\");let n=t.split(e.RecordSeparator);return n.pop(),n}};st.RecordSeparatorCode=30;st.RecordSeparator=String.fromCharCode(st.RecordSeparatorCode);var au=class{writeHandshakeRequest(t){return st.write(JSON.stringify(t))}parseHandshakeResponse(t){let n,r;if(Nt(t)){let a=new Uint8Array(t),c=a.indexOf(st.RecordSeparatorCode);if(c===-1)throw new Error(\"Message is incomplete.\");let l=c+1;n=String.fromCharCode.apply(null,Array.prototype.slice.call(a.slice(0,l))),r=a.byteLength>l?a.slice(l).buffer:null}else{let a=t,c=a.indexOf(st.RecordSeparator);if(c===-1)throw new Error(\"Message is incomplete.\");let l=c+1;n=a.substring(0,l),r=a.length>l?a.substring(l):null}let o=st.parse(n),i=JSON.parse(o[0]);if(i.type)throw new Error(\"Expected a handshake response from the server.\");return[r,i]}};var O=function(e){return e[e.Invocation=1]=\"Invocation\",e[e.StreamItem=2]=\"StreamItem\",e[e.Completion=3]=\"Completion\",e[e.StreamInvocation=4]=\"StreamInvocation\",e[e.CancelInvocation=5]=\"CancelInvocation\",e[e.Ping=6]=\"Ping\",e[e.Close=7]=\"Close\",e[e.Ack=8]=\"Ack\",e[e.Sequence=9]=\"Sequence\",e}(O||{});var cu=class{constructor(){this.observers=[]}next(t){for(let n of this.observers)n.next(t)}error(t){for(let n of this.observers)n.error&&n.error(t)}complete(){for(let t of this.observers)t.complete&&t.complete()}subscribe(t){return this.observers.push(t),new tu(this,t)}};var lu=class{constructor(t,n,r){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=t,this._connection=n,this._bufferSize=r}_send(t){return F(this,null,function*(){let n=this._protocol.writeMessage(t),r=Promise.resolve();if(this._isInvocationMessage(t)){this._totalMessageCount++;let o=()=>{},i=()=>{};Nt(n)?this._bufferedByteCount+=n.byteLength:this._bufferedByteCount+=n.length,this._bufferedByteCount>=this._bufferSize&&(r=new Promise((s,a)=>{o=s,i=a})),this._messages.push(new im(n,this._totalMessageCount,o,i))}try{this._reconnectInProgress||(yield this._connection.send(n))}catch{this._disconnected()}yield r})}_ack(t){let n=-1;for(let r=0;r<this._messages.length;r++){let o=this._messages[r];if(o._id<=t.sequenceId)n=r,Nt(o._message)?this._bufferedByteCount-=o._message.byteLength:this._bufferedByteCount-=o._message.length,o._resolver();else if(this._bufferedByteCount<this._bufferSize)o._resolver();else break}n!==-1&&(this._messages=this._messages.slice(n+1))}_shouldProcessMessage(t){if(this._waitForSequenceMessage)return t.type!==O.Sequence?!1:(this._waitForSequenceMessage=!1,!0);if(!this._isInvocationMessage(t))return!0;let n=this._nextReceivingSequenceId;return this._nextReceivingSequenceId++,n<=this._latestReceivedSequenceId?(n===this._latestReceivedSequenceId&&this._ackTimer(),!1):(this._latestReceivedSequenceId=n,this._ackTimer(),!0)}_resetSequence(t){if(t.sequenceId>this._nextReceivingSequenceId){this._connection.stop(new Error(\"Sequence ID greater than amount of messages we've received.\"));return}this._nextReceivingSequenceId=t.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}_resend(){return F(this,null,function*(){let t=this._messages.length!==0?this._messages[0]._id:this._totalMessageCount+1;yield this._connection.send(this._protocol.writeMessage({type:O.Sequence,sequenceId:t}));let n=this._messages;for(let r of n)yield this._connection.send(r._message);this._reconnectInProgress=!1})}_dispose(t){t??(t=new Error(\"Unable to reconnect to server.\"));for(let n of this._messages)n._rejector(t)}_isInvocationMessage(t){switch(t.type){case O.Invocation:case O.StreamItem:case O.Completion:case O.StreamInvocation:case O.CancelInvocation:return!0;case O.Close:case O.Sequence:case O.Ping:case O.Ack:return!1}}_ackTimer(){this._ackTimerHandle===void 0&&(this._ackTimerHandle=setTimeout(()=>F(this,null,function*(){try{this._reconnectInProgress||(yield this._connection.send(this._protocol.writeMessage({type:O.Ack,sequenceId:this._latestReceivedSequenceId})))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}},im=class{constructor(t,n,r,o){this._message=t,this._id=n,this._resolver=r,this._rejector=o}};var fN=30*1e3,hN=15*1e3,pN=1e5,ee=function(e){return e.Disconnected=\"Disconnected\",e.Connecting=\"Connecting\",e.Connected=\"Connected\",e.Disconnecting=\"Disconnecting\",e.Reconnecting=\"Reconnecting\",e}(ee||{}),Ls=class e{static create(t,n,r,o,i,s,a){return new e(t,n,r,o,i,s,a)}constructor(t,n,r,o,i,s,a){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(m.Warning,\"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\")},Z.isRequired(t,\"connection\"),Z.isRequired(n,\"logger\"),Z.isRequired(r,\"protocol\"),this.serverTimeoutInMilliseconds=i??fN,this.keepAliveIntervalInMilliseconds=s??hN,this._statefulReconnectBufferSize=a??pN,this._logger=n,this._protocol=r,this.connection=t,this._reconnectPolicy=o,this._handshakeProtocol=new au,this.connection.onreceive=c=>this._processIncomingData(c),this.connection.onclose=c=>this._connectionClosed(c),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=ee.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:O.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||\"\"}set baseUrl(t){if(this._connectionState!==ee.Disconnected&&this._connectionState!==ee.Reconnecting)throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");if(!t)throw new Error(\"The HubConnection url must be a valid url.\");this.connection.baseUrl=t}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}_startWithStateTransitions(){return F(this,null,function*(){if(this._connectionState!==ee.Disconnected)return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));this._connectionState=ee.Connecting,this._logger.log(m.Debug,\"Starting HubConnection.\");try{yield this._startInternal(),Y.isBrowser&&window.document.addEventListener(\"freeze\",this._freezeEventListener),this._connectionState=ee.Connected,this._connectionStarted=!0,this._logger.log(m.Debug,\"HubConnection connected successfully.\")}catch(t){return this._connectionState=ee.Disconnected,this._logger.log(m.Debug,`HubConnection failed to start successfully because of error '${t}'.`),Promise.reject(t)}})}_startInternal(){return F(this,null,function*(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;let t=new Promise((n,r)=>{this._handshakeResolver=n,this._handshakeRejecter=r});yield this.connection.start(this._protocol.transferFormat);try{let n=this._protocol.version;this.connection.features.reconnect||(n=1);let r={protocol:this._protocol.name,version:n};if(this._logger.log(m.Debug,\"Sending handshake request.\"),yield this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(r)),this._logger.log(m.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),yield t,this._stopDuringStartError)throw this._stopDuringStartError;(this.connection.features.reconnect||!1)&&(this._messageBuffer=new lu(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||(yield this._sendMessage(this._cachedPingMessage))}catch(n){throw this._logger.log(m.Debug,`Hub handshake failed with error '${n}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),yield this.connection.stop(n),n}})}stop(){return F(this,null,function*(){let t=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),yield this._stopPromise;try{yield t}catch{}})}_stopInternal(t){if(this._connectionState===ee.Disconnected)return this._logger.log(m.Debug,`Call to HubConnection.stop(${t}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===ee.Disconnecting)return this._logger.log(m.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;let n=this._connectionState;return this._connectionState=ee.Disconnecting,this._logger.log(m.Debug,\"Stopping HubConnection.\"),this._reconnectDelayHandle?(this._logger.log(m.Debug,\"Connection stopped during reconnect delay. Done reconnecting.\"),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(n===ee.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=t||new xe(\"The connection was stopped before the hub handshake could complete.\"),this.connection.stop(t))}_sendCloseMessage(){return F(this,null,function*(){try{yield this._sendWithProtocol(this._createCloseMessage())}catch{}})}stream(t,...n){let[r,o]=this._replaceStreamingParams(n),i=this._createStreamInvocation(t,n,o),s,a=new cu;return a.cancelCallback=()=>{let c=this._createCancelInvocation(i.invocationId);return delete this._callbacks[i.invocationId],s.then(()=>this._sendWithProtocol(c))},this._callbacks[i.invocationId]=(c,l)=>{if(l){a.error(l);return}else c&&(c.type===O.Completion?c.error?a.error(new Error(c.error)):a.complete():a.next(c.item))},s=this._sendWithProtocol(i).catch(c=>{a.error(c),delete this._callbacks[i.invocationId]}),this._launchStreams(r,s),a}_sendMessage(t){return this._resetKeepAliveInterval(),this.connection.send(t)}_sendWithProtocol(t){return this._messageBuffer?this._messageBuffer._send(t):this._sendMessage(this._protocol.writeMessage(t))}send(t,...n){let[r,o]=this._replaceStreamingParams(n),i=this._sendWithProtocol(this._createInvocation(t,n,!0,o));return this._launchStreams(r,i),i}invoke(t,...n){let[r,o]=this._replaceStreamingParams(n),i=this._createInvocation(t,n,!1,o);return new Promise((a,c)=>{this._callbacks[i.invocationId]=(u,d)=>{if(d){c(d);return}else u&&(u.type===O.Completion?u.error?c(new Error(u.error)):a(u.result):c(new Error(`Unexpected message type: ${u.type}`)))};let l=this._sendWithProtocol(i).catch(u=>{c(u),delete this._callbacks[i.invocationId]});this._launchStreams(r,l)})}on(t,n){!t||!n||(t=t.toLowerCase(),this._methods[t]||(this._methods[t]=[]),this._methods[t].indexOf(n)===-1&&this._methods[t].push(n))}off(t,n){if(!t)return;t=t.toLowerCase();let r=this._methods[t];if(r)if(n){let o=r.indexOf(n);o!==-1&&(r.splice(o,1),r.length===0&&delete this._methods[t])}else delete this._methods[t]}onclose(t){t&&this._closedCallbacks.push(t)}onreconnecting(t){t&&this._reconnectingCallbacks.push(t)}onreconnected(t){t&&this._reconnectedCallbacks.push(t)}_processIncomingData(t){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(t=this._processHandshakeResponse(t),this._receivedHandshakeResponse=!0),t){let n=this._protocol.parseMessages(t,this._logger);for(let r of n)if(!(this._messageBuffer&&!this._messageBuffer._shouldProcessMessage(r)))switch(r.type){case O.Invocation:this._invokeClientMethod(r).catch(o=>{this._logger.log(m.Error,`Invoke client method threw error: ${ru(o)}`)});break;case O.StreamItem:case O.Completion:{let o=this._callbacks[r.invocationId];if(o){r.type===O.Completion&&delete this._callbacks[r.invocationId];try{o(r)}catch(i){this._logger.log(m.Error,`Stream callback threw error: ${ru(i)}`)}}break}case O.Ping:break;case O.Close:{this._logger.log(m.Information,\"Close message received from server.\");let o=r.error?new Error(\"Server returned an error on close: \"+r.error):void 0;r.allowReconnect===!0?this.connection.stop(o):this._stopPromise=this._stopInternal(o);break}case O.Ack:this._messageBuffer&&this._messageBuffer._ack(r);break;case O.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(r);break;default:this._logger.log(m.Warning,`Invalid message type: ${r.type}.`);break}}this._resetTimeoutPeriod()}_processHandshakeResponse(t){let n,r;try{[r,n]=this._handshakeProtocol.parseHandshakeResponse(t)}catch(o){let i=\"Error parsing handshake response: \"+o;this._logger.log(m.Error,i);let s=new Error(i);throw this._handshakeRejecter(s),s}if(n.error){let o=\"Server returned handshake error: \"+n.error;this._logger.log(m.Error,o);let i=new Error(o);throw this._handshakeRejecter(i),i}else this._logger.log(m.Debug,\"Server handshake complete.\");return this._handshakeResolver(),r}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=new Date().getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if((!this.connection.features||!this.connection.features.inherentKeepAlive)&&(this._timeoutHandle=setTimeout(()=>this.serverTimeout(),this.serverTimeoutInMilliseconds),this._pingServerHandle===void 0)){let t=this._nextKeepAlive-new Date().getTime();t<0&&(t=0),this._pingServerHandle=setTimeout(()=>F(this,null,function*(){if(this._connectionState===ee.Connected)try{yield this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),t)}}serverTimeout(){this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"))}_invokeClientMethod(t){return F(this,null,function*(){let n=t.target.toLowerCase(),r=this._methods[n];if(!r){this._logger.log(m.Warning,`No client method with the name '${n}' found.`),t.invocationId&&(this._logger.log(m.Warning,`No result given for '${n}' method and invocation ID '${t.invocationId}'.`),yield this._sendWithProtocol(this._createCompletionMessage(t.invocationId,\"Client didn't provide a result.\",null)));return}let o=r.slice(),i=!!t.invocationId,s,a,c;for(let l of o)try{let u=s;s=yield l.apply(this,t.arguments),i&&s&&u&&(this._logger.log(m.Error,`Multiple results provided for '${n}'. Sending error to server.`),c=this._createCompletionMessage(t.invocationId,\"Client provided multiple results.\",null)),a=void 0}catch(u){a=u,this._logger.log(m.Error,`A callback for the method '${n}' threw error '${u}'.`)}c?yield this._sendWithProtocol(c):i?(a?c=this._createCompletionMessage(t.invocationId,`${a}`,null):s!==void 0?c=this._createCompletionMessage(t.invocationId,null,s):(this._logger.log(m.Warning,`No result given for '${n}' method and invocation ID '${t.invocationId}'.`),c=this._createCompletionMessage(t.invocationId,\"Client didn't provide a result.\",null)),yield this._sendWithProtocol(c)):s&&this._logger.log(m.Error,`Result given for '${n}' method but server is not expecting a result.`)})}_connectionClosed(t){this._logger.log(m.Debug,`HubConnection.connectionClosed(${t}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||t||new xe(\"The underlying connection was closed before the hub handshake could complete.\"),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(t||new Error(\"Invocation canceled due to the underlying connection being closed.\")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===ee.Disconnecting?this._completeClose(t):this._connectionState===ee.Connected&&this._reconnectPolicy?this._reconnect(t):this._connectionState===ee.Connected&&this._completeClose(t)}_completeClose(t){if(this._connectionStarted){this._connectionState=ee.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(t??new Error(\"Connection closed.\")),this._messageBuffer=void 0),Y.isBrowser&&window.document.removeEventListener(\"freeze\",this._freezeEventListener);try{this._closedCallbacks.forEach(n=>n.apply(this,[t]))}catch(n){this._logger.log(m.Error,`An onclose callback called with error '${t}' threw error '${n}'.`)}}}_reconnect(t){return F(this,null,function*(){let n=Date.now(),r=0,o=t!==void 0?t:new Error(\"Attempting to reconnect due to a unknown error.\"),i=this._getNextRetryDelay(r++,0,o);if(i===null){this._logger.log(m.Debug,\"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\"),this._completeClose(t);return}if(this._connectionState=ee.Reconnecting,t?this._logger.log(m.Information,`Connection reconnecting because of error '${t}'.`):this._logger.log(m.Information,\"Connection reconnecting.\"),this._reconnectingCallbacks.length!==0){try{this._reconnectingCallbacks.forEach(s=>s.apply(this,[t]))}catch(s){this._logger.log(m.Error,`An onreconnecting callback called with error '${t}' threw error '${s}'.`)}if(this._connectionState!==ee.Reconnecting){this._logger.log(m.Debug,\"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");return}}for(;i!==null;){if(this._logger.log(m.Information,`Reconnect attempt number ${r} will start in ${i} ms.`),yield new Promise(s=>{this._reconnectDelayHandle=setTimeout(s,i)}),this._reconnectDelayHandle=void 0,this._connectionState!==ee.Reconnecting){this._logger.log(m.Debug,\"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");return}try{if(yield this._startInternal(),this._connectionState=ee.Connected,this._logger.log(m.Information,\"HubConnection reconnected successfully.\"),this._reconnectedCallbacks.length!==0)try{this._reconnectedCallbacks.forEach(s=>s.apply(this,[this.connection.connectionId]))}catch(s){this._logger.log(m.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${s}'.`)}return}catch(s){if(this._logger.log(m.Information,`Reconnect attempt failed because of error '${s}'.`),this._connectionState!==ee.Reconnecting){this._logger.log(m.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),this._connectionState===ee.Disconnecting&&this._completeClose();return}o=s instanceof Error?s:new Error(s.toString()),i=this._getNextRetryDelay(r++,Date.now()-n,o)}}this._logger.log(m.Information,`Reconnect retries have been exhausted after ${Date.now()-n} ms and ${r} failed attempts. Connection disconnecting.`),this._completeClose()})}_getNextRetryDelay(t,n,r){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:n,previousRetryCount:t,retryReason:r})}catch(o){return this._logger.log(m.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${t}, ${n}) threw error '${o}'.`),null}}_cancelCallbacksWithError(t){let n=this._callbacks;this._callbacks={},Object.keys(n).forEach(r=>{let o=n[r];try{o(null,t)}catch(i){this._logger.log(m.Error,`Stream 'error' callback called with '${t}' threw error: ${ru(i)}`)}})}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(t,n,r,o){if(r)return o.length!==0?{arguments:n,streamIds:o,target:t,type:O.Invocation}:{arguments:n,target:t,type:O.Invocation};{let i=this._invocationId;return this._invocationId++,o.length!==0?{arguments:n,invocationId:i.toString(),streamIds:o,target:t,type:O.Invocation}:{arguments:n,invocationId:i.toString(),target:t,type:O.Invocation}}}_launchStreams(t,n){if(t.length!==0){n||(n=Promise.resolve());for(let r in t)t[r].subscribe({complete:()=>{n=n.then(()=>this._sendWithProtocol(this._createCompletionMessage(r)))},error:o=>{let i;o instanceof Error?i=o.message:o&&o.toString?i=o.toString():i=\"Unknown error\",n=n.then(()=>this._sendWithProtocol(this._createCompletionMessage(r,i)))},next:o=>{n=n.then(()=>this._sendWithProtocol(this._createStreamItemMessage(r,o)))}})}}_replaceStreamingParams(t){let n=[],r=[];for(let o=0;o<t.length;o++){let i=t[o];if(this._isObservable(i)){let s=this._invocationId;this._invocationId++,n[s]=i,r.push(s.toString()),t.splice(o,1)}}return[n,r]}_isObservable(t){return t&&t.subscribe&&typeof t.subscribe==\"function\"}_createStreamInvocation(t,n,r){let o=this._invocationId;return this._invocationId++,r.length!==0?{arguments:n,invocationId:o.toString(),streamIds:r,target:t,type:O.StreamInvocation}:{arguments:n,invocationId:o.toString(),target:t,type:O.StreamInvocation}}_createCancelInvocation(t){return{invocationId:t,type:O.CancelInvocation}}_createStreamItemMessage(t,n){return{invocationId:t,item:n,type:O.StreamItem}}_createCompletionMessage(t,n,r){return n?{error:n,invocationId:t,type:O.Completion}:{invocationId:t,result:r,type:O.Completion}}_createCloseMessage(){return{type:O.Close}}};var mN=[0,2e3,1e4,3e4,null],js=class{constructor(t){this._retryDelays=t!==void 0?[...t,null]:mN}nextRetryDelayInMilliseconds(t){return this._retryDelays[t.previousRetryCount]}};var Hr=(()=>{class e{}return e.Authorization=\"Authorization\",e.Cookie=\"Cookie\",e})();var uu=class extends Qt{constructor(t,n){super(),this._innerClient=t,this._accessTokenFactory=n}send(t){return F(this,null,function*(){let n=!0;this._accessTokenFactory&&(!this._accessToken||t.url&&t.url.indexOf(\"/negotiate?\")>0)&&(n=!1,this._accessToken=yield this._accessTokenFactory()),this._setAuthorizationHeader(t);let r=yield this._innerClient.send(t);return n&&r.statusCode===401&&this._accessTokenFactory?(this._accessToken=yield this._accessTokenFactory(),this._setAuthorizationHeader(t),yield this._innerClient.send(t)):r})}_setAuthorizationHeader(t){t.headers||(t.headers={}),this._accessToken?t.headers[Hr.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&t.headers[Hr.Authorization]&&delete t.headers[Hr.Authorization]}getCookieString(t){return this._innerClient.getCookieString(t)}};var Ie=function(e){return e[e.None=0]=\"None\",e[e.WebSockets=1]=\"WebSockets\",e[e.ServerSentEvents=2]=\"ServerSentEvents\",e[e.LongPolling=4]=\"LongPolling\",e}(Ie||{}),ve=function(e){return e[e.Text=1]=\"Text\",e[e.Binary=2]=\"Binary\",e}(ve||{});var du=class{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}};var Bs=class{get pollAborted(){return this._pollAbort.aborted}constructor(t,n,r){this._httpClient=t,this._logger=n,this._pollAbort=new du,this._options=r,this._running=!1,this.onreceive=null,this.onclose=null}connect(t,n){return F(this,null,function*(){if(Z.isRequired(t,\"url\"),Z.isRequired(n,\"transferFormat\"),Z.isIn(n,ve,\"transferFormat\"),this._url=t,this._logger.log(m.Trace,\"(LongPolling transport) Connecting.\"),n===ve.Binary&&typeof XMLHttpRequest<\"u\"&&typeof new XMLHttpRequest().responseType!=\"string\")throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");let[r,o]=Jt(),i=v({[r]:o},this._options.headers),s={abortSignal:this._pollAbort.signal,headers:i,timeout:1e5,withCredentials:this._options.withCredentials};n===ve.Binary&&(s.responseType=\"arraybuffer\");let a=`${t}&_=${Date.now()}`;this._logger.log(m.Trace,`(LongPolling transport) polling: ${a}.`);let c=yield this._httpClient.get(a,s);c.statusCode!==200?(this._logger.log(m.Error,`(LongPolling transport) Unexpected response code: ${c.statusCode}.`),this._closeError=new it(c.statusText||\"\",c.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)})}_poll(t,n){return F(this,null,function*(){try{for(;this._running;)try{let r=`${t}&_=${Date.now()}`;this._logger.log(m.Trace,`(LongPolling transport) polling: ${r}.`);let o=yield this._httpClient.get(r,n);o.statusCode===204?(this._logger.log(m.Information,\"(LongPolling transport) Poll terminated by server.\"),this._running=!1):o.statusCode!==200?(this._logger.log(m.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new it(o.statusText||\"\",o.statusCode),this._running=!1):o.content?(this._logger.log(m.Trace,`(LongPolling transport) data received. ${Qn(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(m.Trace,\"(LongPolling transport) Poll timed out, reissuing.\")}catch(r){this._running?r instanceof Kn?this._logger.log(m.Trace,\"(LongPolling transport) Poll timed out, reissuing.\"):(this._closeError=r,this._running=!1):this._logger.log(m.Trace,`(LongPolling transport) Poll errored after shutdown: ${r.message}`)}}finally{this._logger.log(m.Trace,\"(LongPolling transport) Polling complete.\"),this.pollAborted||this._raiseOnClose()}})}send(t){return F(this,null,function*(){return this._running?nu(this._logger,\"LongPolling\",this._httpClient,this._url,t,this._options):Promise.reject(new Error(\"Cannot send until the transport is connected\"))})}stop(){return F(this,null,function*(){this._logger.log(m.Trace,\"(LongPolling transport) Stopping polling.\"),this._running=!1,this._pollAbort.abort();try{yield this._receiving,this._logger.log(m.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);let t={},[n,r]=Jt();t[n]=r;let o={headers:v(v({},t),this._options.headers),timeout:this._options.timeout,withCredentials:this._options.withCredentials},i;try{yield this._httpClient.delete(this._url,o)}catch(s){i=s}i?i instanceof it&&(i.statusCode===404?this._logger.log(m.Trace,\"(LongPolling transport) A 404 response was returned from sending a DELETE request.\"):this._logger.log(m.Trace,`(LongPolling transport) Error sending a DELETE request: ${i}`)):this._logger.log(m.Trace,\"(LongPolling transport) DELETE request accepted.\")}finally{this._logger.log(m.Trace,\"(LongPolling transport) Stop finished.\"),this._raiseOnClose()}})}_raiseOnClose(){if(this.onclose){let t=\"(LongPolling transport) Firing onclose event.\";this._closeError&&(t+=\" Error: \"+this._closeError),this._logger.log(m.Trace,t),this.onclose(this._closeError)}}};var fu=class{constructor(t,n,r,o){this._httpClient=t,this._accessToken=n,this._logger=r,this._options=o,this.onreceive=null,this.onclose=null}connect(t,n){return F(this,null,function*(){return Z.isRequired(t,\"url\"),Z.isRequired(n,\"transferFormat\"),Z.isIn(n,ve,\"transferFormat\"),this._logger.log(m.Trace,\"(SSE transport) Connecting.\"),this._url=t,this._accessToken&&(t+=(t.indexOf(\"?\")<0?\"?\":\"&\")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise((r,o)=>{let i=!1;if(n!==ve.Text){o(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));return}let s;if(Y.isBrowser||Y.isWebWorker)s=new this._options.EventSource(t,{withCredentials:this._options.withCredentials});else{let a=this._httpClient.getCookieString(t),c={};c.Cookie=a;let[l,u]=Jt();c[l]=u,s=new this._options.EventSource(t,{withCredentials:this._options.withCredentials,headers:v(v({},c),this._options.headers)})}try{s.onmessage=a=>{if(this.onreceive)try{this._logger.log(m.Trace,`(SSE transport) data received. ${Qn(a.data,this._options.logMessageContent)}.`),this.onreceive(a.data)}catch(c){this._close(c);return}},s.onerror=a=>{i?this._close():o(new Error(\"EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled.\"))},s.onopen=()=>{this._logger.log(m.Information,`SSE connected to ${this._url}`),this._eventSource=s,i=!0,r()}}catch(a){o(a);return}})})}send(t){return F(this,null,function*(){return this._eventSource?nu(this._logger,\"SSE\",this._httpClient,this._url,t,this._options):Promise.reject(new Error(\"Cannot send until the transport is connected\"))})}stop(){return this._close(),Promise.resolve()}_close(t){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(t))}};var hu=class{constructor(t,n,r,o,i,s){this._logger=r,this._accessTokenFactory=n,this._logMessageContent=o,this._webSocketConstructor=i,this._httpClient=t,this.onreceive=null,this.onclose=null,this._headers=s}connect(t,n){return F(this,null,function*(){Z.isRequired(t,\"url\"),Z.isRequired(n,\"transferFormat\"),Z.isIn(n,ve,\"transferFormat\"),this._logger.log(m.Trace,\"(WebSockets transport) Connecting.\");let r;return this._accessTokenFactory&&(r=yield this._accessTokenFactory()),new Promise((o,i)=>{t=t.replace(/^http/,\"ws\");let s,a=this._httpClient.getCookieString(t),c=!1;if(Y.isNode||Y.isReactNative){let l={},[u,d]=Jt();l[u]=d,r&&(l[Hr.Authorization]=`Bearer ${r}`),a&&(l[Hr.Cookie]=a),s=new this._webSocketConstructor(t,void 0,{headers:v(v({},l),this._headers)})}else r&&(t+=(t.indexOf(\"?\")<0?\"?\":\"&\")+`access_token=${encodeURIComponent(r)}`);s||(s=new this._webSocketConstructor(t)),n===ve.Binary&&(s.binaryType=\"arraybuffer\"),s.onopen=l=>{this._logger.log(m.Information,`WebSocket connected to ${t}.`),this._webSocket=s,c=!0,o()},s.onerror=l=>{let u=null;typeof ErrorEvent<\"u\"&&l instanceof ErrorEvent?u=l.error:u=\"There was an error with the transport\",this._logger.log(m.Information,`(WebSockets transport) ${u}.`)},s.onmessage=l=>{if(this._logger.log(m.Trace,`(WebSockets transport) data received. ${Qn(l.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(l.data)}catch(u){this._close(u);return}},s.onclose=l=>{if(c)this._close(l);else{let u=null;typeof ErrorEvent<\"u\"&&l instanceof ErrorEvent?u=l.error:u=\"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.\",i(new Error(u))}}})})}send(t){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(m.Trace,`(WebSockets transport) sending data. ${Qn(t,this._logMessageContent)}.`),this._webSocket.send(t),Promise.resolve()):Promise.reject(\"WebSocket is not in the OPEN state\")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(t){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(m.Trace,\"(WebSockets transport) socket closed.\"),this.onclose&&(this._isCloseEvent(t)&&(t.wasClean===!1||t.code!==1e3)?this.onclose(new Error(`WebSocket closed with status code: ${t.code} (${t.reason||\"no reason given\"}).`)):t instanceof Error?this.onclose(t):this.onclose())}_isCloseEvent(t){return t&&typeof t.wasClean==\"boolean\"&&typeof t.code==\"number\"}};var wD=100,pu=class{constructor(t,n={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Z.isRequired(t,\"url\"),this._logger=_D(n.logger),this.baseUrl=this._resolveUrl(t),n=n||{},n.logMessageContent=n.logMessageContent===void 0?!1:n.logMessageContent,typeof n.withCredentials==\"boolean\"||n.withCredentials===void 0)n.withCredentials=n.withCredentials===void 0?!0:n.withCredentials;else throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");n.timeout=n.timeout===void 0?100*1e3:n.timeout;let r=null,o=null;if(Y.isNode&&typeof $r<\"u\"){let i=typeof __webpack_require__==\"function\"?__non_webpack_require__:$r;r=i(\"ws\"),o=i(\"eventsource\")}!Y.isNode&&typeof WebSocket<\"u\"&&!n.WebSocket?n.WebSocket=WebSocket:Y.isNode&&!n.WebSocket&&r&&(n.WebSocket=r),!Y.isNode&&typeof EventSource<\"u\"&&!n.EventSource?n.EventSource=EventSource:Y.isNode&&!n.EventSource&&typeof o<\"u\"&&(n.EventSource=o),this._httpClient=new uu(n.httpClient||new su(this._logger),n.accessTokenFactory),this._connectionState=\"Disconnected\",this._connectionStarted=!1,this._options=n,this.onreceive=null,this.onclose=null}start(t){return F(this,null,function*(){if(t=t||ve.Binary,Z.isIn(t,ve,\"transferFormat\"),this._logger.log(m.Debug,`Starting connection with transfer format '${ve[t]}'.`),this._connectionState!==\"Disconnected\")return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));if(this._connectionState=\"Connecting\",this._startInternalPromise=this._startInternal(t),yield this._startInternalPromise,this._connectionState===\"Disconnecting\"){let n=\"Failed to start the HttpConnection before stop() was called.\";return this._logger.log(m.Error,n),yield this._stopPromise,Promise.reject(new xe(n))}else if(this._connectionState!==\"Connected\"){let n=\"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";return this._logger.log(m.Error,n),Promise.reject(new xe(n))}this._connectionStarted=!0})}send(t){return this._connectionState!==\"Connected\"?Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\")):(this._sendQueue||(this._sendQueue=new sm(this.transport)),this._sendQueue.send(t))}stop(t){return F(this,null,function*(){if(this._connectionState===\"Disconnected\")return this._logger.log(m.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnected state.`),Promise.resolve();if(this._connectionState===\"Disconnecting\")return this._logger.log(m.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;this._connectionState=\"Disconnecting\",this._stopPromise=new Promise(n=>{this._stopPromiseResolver=n}),yield this._stopInternal(t),yield this._stopPromise})}_stopInternal(t){return F(this,null,function*(){this._stopError=t;try{yield this._startInternalPromise}catch{}if(this.transport){try{yield this.transport.stop()}catch(n){this._logger.log(m.Error,`HttpConnection.transport.stop() threw error '${n}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(m.Debug,\"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\")})}_startInternal(t){return F(this,null,function*(){let n=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation)if(this._options.transport===Ie.WebSockets)this.transport=this._constructTransport(Ie.WebSockets),yield this._startTransport(n,t);else throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");else{let r=null,o=0;do{if(r=yield this._getNegotiationResponse(n),this._connectionState===\"Disconnecting\"||this._connectionState===\"Disconnected\")throw new xe(\"The connection was stopped during negotiation.\");if(r.error)throw new Error(r.error);if(r.ProtocolVersion)throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");if(r.url&&(n=r.url),r.accessToken){let i=r.accessToken;this._accessTokenFactory=()=>i,this._httpClient._accessToken=i,this._httpClient._accessTokenFactory=void 0}o++}while(r.url&&o<wD);if(o===wD&&r.url)throw new Error(\"Negotiate redirection limit exceeded.\");yield this._createTransport(n,this._options.transport,r,t)}this.transport instanceof Bs&&(this.features.inherentKeepAlive=!0),this._connectionState===\"Connecting\"&&(this._logger.log(m.Debug,\"The HttpConnection connected successfully.\"),this._connectionState=\"Connected\")}catch(r){return this._logger.log(m.Error,\"Failed to start the connection: \"+r),this._connectionState=\"Disconnected\",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(r)}})}_getNegotiationResponse(t){return F(this,null,function*(){let n={},[r,o]=Jt();n[r]=o;let i=this._resolveNegotiateUrl(t);this._logger.log(m.Debug,`Sending negotiation request: ${i}.`);try{let s=yield this._httpClient.post(i,{content:\"\",headers:v(v({},n),this._options.headers),timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(s.statusCode!==200)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${s.statusCode}'`));let a=JSON.parse(s.content);return(!a.negotiateVersion||a.negotiateVersion<1)&&(a.connectionToken=a.connectionId),a.useStatefulReconnect&&this._options._useStatefulReconnect!==!0?Promise.reject(new Fs(\"Client didn't negotiate Stateful Reconnect but the server did.\")):a}catch(s){let a=\"Failed to complete negotiation with the server: \"+s;return s instanceof it&&s.statusCode===404&&(a=a+\" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\"),this._logger.log(m.Error,a),Promise.reject(new Fs(a))}})}_createConnectUrl(t,n){return n?t+(t.indexOf(\"?\")===-1?\"?\":\"&\")+`id=${n}`:t}_createTransport(t,n,r,o){return F(this,null,function*(){let i=this._createConnectUrl(t,r.connectionToken);if(this._isITransport(n)){this._logger.log(m.Debug,\"Connection was provided an instance of ITransport, using that directly.\"),this.transport=n,yield this._startTransport(i,o),this.connectionId=r.connectionId;return}let s=[],a=r.availableTransports||[],c=r;for(let l of a){let u=this._resolveTransportOrError(l,n,o,c?.useStatefulReconnect===!0);if(u instanceof Error)s.push(`${l.transport} failed:`),s.push(u);else if(this._isITransport(u)){if(this.transport=u,!c){try{c=yield this._getNegotiationResponse(t)}catch(d){return Promise.reject(d)}i=this._createConnectUrl(t,c.connectionToken)}try{yield this._startTransport(i,o),this.connectionId=c.connectionId;return}catch(d){if(this._logger.log(m.Error,`Failed to start the transport '${l.transport}': ${d}`),c=void 0,s.push(new Jl(`${l.transport} failed: ${d}`,Ie[l.transport])),this._connectionState!==\"Connecting\"){let p=\"Failed to select transport before stop() was called.\";return this._logger.log(m.Debug,p),Promise.reject(new xe(p))}}}}return s.length>0?Promise.reject(new eu(`Unable to connect to the server with any of the available transports. ${s.join(\" \")}`,s)):Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"))})}_constructTransport(t){switch(t){case Ie.WebSockets:if(!this._options.WebSocket)throw new Error(\"'WebSocket' is not supported in your environment.\");return new hu(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case Ie.ServerSentEvents:if(!this._options.EventSource)throw new Error(\"'EventSource' is not supported in your environment.\");return new fu(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case Ie.LongPolling:return new Bs(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${t}.`)}}_startTransport(t,n){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=r=>F(this,null,function*(){let o=!1;if(this.features.reconnect)try{this.features.disconnected(),yield this.transport.connect(t,n),yield this.features.resend()}catch{o=!0}else{this._stopConnection(r);return}o&&this._stopConnection(r)}):this.transport.onclose=r=>this._stopConnection(r),this.transport.connect(t,n)}_resolveTransportOrError(t,n,r,o){let i=Ie[t.transport];if(i==null)return this._logger.log(m.Debug,`Skipping transport '${t.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${t.transport}' because it is not supported by this client.`);if(gN(n,i))if(t.transferFormats.map(a=>ve[a]).indexOf(r)>=0){if(i===Ie.WebSockets&&!this._options.WebSocket||i===Ie.ServerSentEvents&&!this._options.EventSource)return this._logger.log(m.Debug,`Skipping transport '${Ie[i]}' because it is not supported in your environment.'`),new Ql(`'${Ie[i]}' is not supported in your environment.`,i);this._logger.log(m.Debug,`Selecting transport '${Ie[i]}'.`);try{return this.features.reconnect=i===Ie.WebSockets?o:void 0,this._constructTransport(i)}catch(a){return a}}else return this._logger.log(m.Debug,`Skipping transport '${Ie[i]}' because it does not support the requested transfer format '${ve[r]}'.`),new Error(`'${Ie[i]}' does not support ${ve[r]}.`);else return this._logger.log(m.Debug,`Skipping transport '${Ie[i]}' because it was disabled by the client.`),new Xl(`'${Ie[i]}' is disabled by the client.`,i)}_isITransport(t){return t&&typeof t==\"object\"&&\"connect\"in t}_stopConnection(t){if(this._logger.log(m.Debug,`HttpConnection.stopConnection(${t}) called while in state ${this._connectionState}.`),this.transport=void 0,t=this._stopError||t,this._stopError=void 0,this._connectionState===\"Disconnected\"){this._logger.log(m.Debug,`Call to HttpConnection.stopConnection(${t}) was ignored because the connection is already in the disconnected state.`);return}if(this._connectionState===\"Connecting\")throw this._logger.log(m.Warning,`Call to HttpConnection.stopConnection(${t}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${t}) was called while the connection is still in the connecting state.`);if(this._connectionState===\"Disconnecting\"&&this._stopPromiseResolver(),t?this._logger.log(m.Error,`Connection disconnected with error '${t}'.`):this._logger.log(m.Information,\"Connection disconnected.\"),this._sendQueue&&(this._sendQueue.stop().catch(n=>{this._logger.log(m.Error,`TransportSendQueue.stop() threw error '${n}'.`)}),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState=\"Disconnected\",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(t)}catch(n){this._logger.log(m.Error,`HttpConnection.onclose(${t}) threw error '${n}'.`)}}}_resolveUrl(t){if(t.lastIndexOf(\"https://\",0)===0||t.lastIndexOf(\"http://\",0)===0)return t;if(!Y.isBrowser)throw new Error(`Cannot resolve '${t}'.`);let n=window.document.createElement(\"a\");return n.href=t,this._logger.log(m.Information,`Normalizing '${t}' to '${n.href}'.`),n.href}_resolveNegotiateUrl(t){let n=new URL(t);n.pathname.endsWith(\"/\")?n.pathname+=\"negotiate\":n.pathname+=\"/negotiate\";let r=new URLSearchParams(n.searchParams);return r.has(\"negotiateVersion\")||r.append(\"negotiateVersion\",this._negotiateVersion.toString()),r.has(\"useStatefulReconnect\")?r.get(\"useStatefulReconnect\")===\"true\"&&(this._options._useStatefulReconnect=!0):this._options._useStatefulReconnect===!0&&r.append(\"useStatefulReconnect\",\"true\"),n.search=r.toString(),n.toString()}};function gN(e,t){return!e||(t&e)!==0}var sm=class e{constructor(t){this._transport=t,this._buffer=[],this._executing=!0,this._sendBufferedData=new Qo,this._transportResult=new Qo,this._sendLoopPromise=this._sendLoop()}send(t){return this._bufferData(t),this._transportResult||(this._transportResult=new Qo),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(t){if(this._buffer.length&&typeof this._buffer[0]!=typeof t)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof t}`);this._buffer.push(t),this._sendBufferedData.resolve()}_sendLoop(){return F(this,null,function*(){for(;;){if(yield this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject(\"Connection stopped.\");break}this._sendBufferedData=new Qo;let t=this._transportResult;this._transportResult=void 0;let n=typeof this._buffer[0]==\"string\"?this._buffer.join(\"\"):e._concatBuffers(this._buffer);this._buffer.length=0;try{yield this._transport.send(n),t.resolve()}catch(r){t.reject(r)}}})}static _concatBuffers(t){let n=t.map(i=>i.byteLength).reduce((i,s)=>i+s),r=new Uint8Array(n),o=0;for(let i of t)r.set(new Uint8Array(i),o),o+=i.byteLength;return r.buffer}},Qo=class{constructor(){this.promise=new Promise((t,n)=>[this._resolver,this._rejecter]=[t,n])}resolve(){this._resolver()}reject(t){this._rejecter(t)}};var vN=\"json\",mu=class{constructor(){this.name=vN,this.version=2,this.transferFormat=ve.Text}parseMessages(t,n){if(typeof t!=\"string\")throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");if(!t)return[];n===null&&(n=Xt.instance);let r=st.parse(t),o=[];for(let i of r){let s=JSON.parse(i);if(typeof s.type!=\"number\")throw new Error(\"Invalid payload.\");switch(s.type){case O.Invocation:this._isInvocationMessage(s);break;case O.StreamItem:this._isStreamItemMessage(s);break;case O.Completion:this._isCompletionMessage(s);break;case O.Ping:break;case O.Close:break;case O.Ack:this._isAckMessage(s);break;case O.Sequence:this._isSequenceMessage(s);break;default:n.log(m.Information,\"Unknown message type '\"+s.type+\"' ignored.\");continue}o.push(s)}return o}writeMessage(t){return st.write(JSON.stringify(t))}_isInvocationMessage(t){this._assertNotEmptyString(t.target,\"Invalid payload for Invocation message.\"),t.invocationId!==void 0&&this._assertNotEmptyString(t.invocationId,\"Invalid payload for Invocation message.\")}_isStreamItemMessage(t){if(this._assertNotEmptyString(t.invocationId,\"Invalid payload for StreamItem message.\"),t.item===void 0)throw new Error(\"Invalid payload for StreamItem message.\")}_isCompletionMessage(t){if(t.result&&t.error)throw new Error(\"Invalid payload for Completion message.\");!t.result&&t.error&&this._assertNotEmptyString(t.error,\"Invalid payload for Completion message.\"),this._assertNotEmptyString(t.invocationId,\"Invalid payload for Completion message.\")}_isAckMessage(t){if(typeof t.sequenceId!=\"number\")throw new Error(\"Invalid SequenceId for Ack message.\")}_isSequenceMessage(t){if(typeof t.sequenceId!=\"number\")throw new Error(\"Invalid SequenceId for Sequence message.\")}_assertNotEmptyString(t,n){if(typeof t!=\"string\"||t===\"\")throw new Error(n)}};var yN={trace:m.Trace,debug:m.Debug,info:m.Information,information:m.Information,warn:m.Warning,warning:m.Warning,error:m.Error,critical:m.Critical,none:m.None};function bN(e){let t=yN[e.toLowerCase()];if(typeof t<\"u\")return t;throw new Error(`Unknown log level: ${e}`)}var Us=class{configureLogging(t){if(Z.isRequired(t,\"logging\"),_N(t))this.logger=t;else if(typeof t==\"string\"){let n=bN(t);this.logger=new Vr(n)}else this.logger=new Vr(t);return this}withUrl(t,n){return Z.isRequired(t,\"url\"),Z.isNotEmpty(t,\"url\"),this.url=t,typeof n==\"object\"?this.httpConnectionOptions=v(v({},this.httpConnectionOptions),n):this.httpConnectionOptions=U(v({},this.httpConnectionOptions),{transport:n}),this}withHubProtocol(t){return Z.isRequired(t,\"protocol\"),this.protocol=t,this}withAutomaticReconnect(t){if(this.reconnectPolicy)throw new Error(\"A reconnectPolicy has already been set.\");return t?Array.isArray(t)?this.reconnectPolicy=new js(t):this.reconnectPolicy=t:this.reconnectPolicy=new js,this}withServerTimeout(t){return Z.isRequired(t,\"milliseconds\"),this._serverTimeoutInMilliseconds=t,this}withKeepAliveInterval(t){return Z.isRequired(t,\"milliseconds\"),this._keepAliveIntervalInMilliseconds=t,this}withStatefulReconnect(t){return this.httpConnectionOptions===void 0&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=t?.bufferSize,this}build(){let t=this.httpConnectionOptions||{};if(t.logger===void 0&&(t.logger=this.logger),!this.url)throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");let n=new pu(this.url,t);return Ls.create(n,this.logger||Xt.instance,this.protocol||new mu,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}};function _N(e){return e.log!==void 0}var gu=class e{hubUrl=Kl.hubUrl;hubConnection;orderSignal=Ve(null);createHubConnection(){this.hubConnection=new Us().withUrl(this.hubUrl,{withCredentials:!0}).withAutomaticReconnect().build(),this.hubConnection.start().catch(t=>console.log(t)),this.hubConnection.on(\"OrderCompleteNotification\",t=>{this.orderSignal.set(t)})}stopHubConnection(){this.hubConnection?.state===ee.Connected&&this.hubConnection.stop().catch(t=>console.log(t))}static \\u0275fac=function(n){return new(n||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})};var ID=class e{baseUrl=Kl.baseUrl;http=h(ul);signalrService=h(gu);currentUser=Ve(null);isAdmin=Bh(()=>{let t=this.currentUser()?.roles;return Array.isArray(t)?t.includes(\"Admin\"):t===\"Admin\"});login(t){let n=new Mt;return n=n.append(\"useCookies\",!0),this.http.post(this.baseUrl+\"login\",t,{params:n}).pipe(re(r=>{r&&this.signalrService.createHubConnection()}))}register(t){return this.http.post(this.baseUrl+\"account/register\",t)}getUserInfo(){return this.http.get(this.baseUrl+\"account/user-info\").pipe(T(t=>(this.currentUser.set(t),t)))}logout(){return this.http.post(this.baseUrl+\"account/logout\",{}).pipe(re(()=>this.signalrService.stopHubConnection()))}updateAddress(t){return this.http.post(this.baseUrl+\"account/address\",t).pipe(re(()=>{this.currentUser.update(n=>(n&&(n.address=t),n))}))}getAuthState(){return this.http.get(this.baseUrl+\"account/auth-status\")}static \\u0275fac=function(n){return new(n||e)};static \\u0275prov=b({token:e,factory:e.\\u0275fac,providedIn:\"root\"})};export{v as a,U as b,F as c,ie as d,Ae as e,P as f,Xr as g,V as h,_e as i,ri as j,Ne as k,ne as l,C as m,eo as n,Pu as o,KD as p,QD as q,T as r,to as s,ii as t,sw as u,si as v,aw as w,fe as x,cw as y,Pt as z,ar as A,Ge as B,lw as C,Tn as D,fw as E,Vu as F,hw as G,ai as H,ci as I,qe as J,Sn as K,pw as L,re as M,_ as N,Aa as O,b as P,De as Q,E as R,S,h as T,ue as U,Eg as V,Dg as W,Pg as X,Fg as Y,ae as Z,H as _,Je as $,Hw as aa,fo as ba,Ve as ca,Lf as da,_v as ea,fn as fa,wc as ga,me as ha,Tr as ia,Hf as ja,Tt as ka,ty as la,mC as ma,yo as na,It as oa,Vn as pa,oe as qa,Hn as ra,Mr as sa,nt as ta,Se as ua,we as va,Fc as wa,Co as xa,nb as ya,de as za,B as Aa,Bc as Ba,To as Ca,sb as Da,zt as Ea,Rr as Fa,yS as Ga,bS as Ha,_S as Ia,ES as Ja,DS as Ka,wS as La,lb as Ma,zi as Na,Wi as Oa,Wt as Pa,Th as Qa,Sh as Ra,ub as Sa,xS as Ta,db as Ua,Hc as Va,PS as Wa,qi as Xa,Ar as Ya,Mh as Za,jS as _a,xh as $a,Rh as ab,BS as bb,US as cb,VS as db,HS as eb,gb as fb,zn as gb,Ah as hb,lM as ib,wb as jb,Nh as kb,Ib as lb,Tb as mb,fM as nb,Sb as ob,hM as pb,pM as qb,xb as rb,bM as sb,_M as tb,EM as ub,IM as vb,TM as wb,SM as xb,MM as yb,RM as zb,zc as Ab,Bh as Bb,Uh as Cb,Gc as Db,Jz as Eb,Hb as Fb,e8 as Gb,t8 as Hb,Yi as Ib,$b as Jb,ft as Kb,Wb as Lb,n8 as Mb,qb as Nb,gn as Ob,xo as Pb,k0 as Qb,P0 as Rb,L0 as Sb,j0 as Tb,rx as Ub,Mt as Vb,ul as Wb,Ax as Xb,Nx as Yb,Ox as Zb,bn as _b,kp as $b,zo as ac,Ll as bc,uA as cc,hA as dc,Kl as ec,xs as fc,Rs as gc,bA as hc,At as ic,ze as jc,Wo as kc,Hp as lc,BE as mc,Kt as nc,Bl as oc,_A as pc,En as qc,Vl as rc,zp as sc,Wp as tc,w4 as uc,YE as vc,JE as wc,kA as xc,FA as yc,LA as zc,jA as Ac,oD as Bc,Zp as Cc,Yp as Dc,UA as Ec,VA as Fc,_q as Gc,tN as Hc,om as Ic,Yo as Jc,Os as Kc,Mq as Lc,xq as Mc,Aq as Nc,Oq as Oc,jq as Pc,Zo as Qc,zq as Rc,Gq as Sc,Ps as Tc,em as Uc,s5 as Vc,mD as Wc,QA as Xc,yD as Yc,$5 as Zc,z5 as _c,gu as $c,ID as ad};\n"
  },
  {
    "path": "API/wwwroot/chunk-BU6XFQYD.js",
    "content": "import{P as d,T as f,Wb as c,ec as $,wa as a}from\"./chunk-76XFCVV7.js\";var y=class e{baseUrl=$.baseUrl;http=f(c);orderComplete=!1;createOrder(r){return this.http.post(this.baseUrl+\"orders\",r)}getOrdersForUser(){return this.http.get(this.baseUrl+\"orders\")}getOrderDetailed(r){return this.http.get(this.baseUrl+\"orders/\"+r)}static \\u0275fac=function(n){return new(n||e)};static \\u0275prov=d({token:e,factory:e.\\u0275fac,providedIn:\"root\"})};var l=class e{transform(r,...n){if(r&&\"address\"in r&&r.name){let{line1:o,line2:t,city:i,state:s,country:p,postal_code:m}=r?.address;return`${r.name}, ${o}${t?\", \"+t:\"\"}, \n        ${i}, ${s}, ${m}, ${p}`}else if(r&&\"line1\"in r){let{line1:o,line2:t,city:i,state:s,country:p,postalCode:m}=r;return`${r.name}, ${o}${t?\", \"+t:\"\"}, \n        ${i}, ${s}, ${m}, ${p}`}else return\"Unknown address\"}static \\u0275fac=function(n){return new(n||e)};static \\u0275pipe=a({name:\"address\",type:e,pure:!0})};var u=class e{transform(r,...n){if(r&&\"card\"in r){let{brand:o,last4:t,exp_month:i,exp_year:s}=r.card;return`${o.toUpperCase()} **** **** **** ${t}, Exp: ${i}/${s}`}else if(r&&\"last4\"in r){let{brand:o,last4:t,expMonth:i,expYear:s}=r;return`${o.toUpperCase()} **** **** **** ${t}, Exp: ${i}/${s}`}else return\"Unknown payment method\"}static \\u0275fac=function(n){return new(n||e)};static \\u0275pipe=a({name:\"paymentCard\",type:e,pure:!0})};export{y as a,l as b,u as c};\n"
  },
  {
    "path": "API/wwwroot/chunk-HJYZM75B.js",
    "content": "import{i as I}from\"./chunk-YYNGFOZ2.js\";import{$ as p,B as L,D as k,Db as q,F as V,Fa as W,Jc as T,Kb as G,M as v,P as E,Q as U,R,S as _,T as u,Wb as Q,Xa as j,Ya as $,Zb as J,_ as C,d as N,gb as B,h as b,ha as P,hb as Y,ka as g,m,n as x,r as d,ta as z,u as D,ua as H,z as O}from\"./chunk-76XFCVV7.js\";var F;function oe(){if(F===void 0&&(F=null,typeof window<\"u\")){let s=window;s.trustedTypes!==void 0&&(F=s.trustedTypes.createPolicy(\"angular#components\",{createHTML:o=>o}))}return F}function S(s){return oe()?.createHTML(s)||s}function K(s){return Error(`Unable to find icon with the name \"${s}\"`)}function se(){return Error(\"Could not find HttpClient for use with Angular Material icons. Please add provideHttpClient() to your providers.\")}function X(s){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was \"${s}\".`)}function Z(s){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was \"${s}\".`)}var f=class{url;svgText;options;svgElement;constructor(o,e,t){this.url=o,this.svgText=e,this.options=t}},ne=(()=>{class s{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=[\"material-icons\",\"mat-ligature-font\"];constructor(e,t,n,i){this._httpClient=e,this._sanitizer=t,this._errorHandler=i,this._document=n}addSvgIcon(e,t,n){return this.addSvgIconInNamespace(\"\",e,t,n)}addSvgIconLiteral(e,t,n){return this.addSvgIconLiteralInNamespace(\"\",e,t,n)}addSvgIconInNamespace(e,t,n,i){return this._addSvgIconConfig(e,t,new f(n,null,i))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,t,n,i){let r=this._sanitizer.sanitize(g.HTML,n);if(!r)throw Z(n);let a=S(r);return this._addSvgIconConfig(e,t,new f(\"\",a,i))}addSvgIconSet(e,t){return this.addSvgIconSetInNamespace(\"\",e,t)}addSvgIconSetLiteral(e,t){return this.addSvgIconSetLiteralInNamespace(\"\",e,t)}addSvgIconSetInNamespace(e,t,n){return this._addSvgIconSetConfig(e,new f(t,null,n))}addSvgIconSetLiteralInNamespace(e,t,n){let i=this._sanitizer.sanitize(g.HTML,t);if(!i)throw Z(t);let r=S(i);return this._addSvgIconSetConfig(e,new f(\"\",r,n))}registerFontClassAlias(e,t=e){return this._fontCssClassesByAlias.set(e,t),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){let t=this._sanitizer.sanitize(g.RESOURCE_URL,e);if(!t)throw X(e);let n=this._cachedIconsByUrl.get(t);return n?m(w(n)):this._loadSvgIconFromConfig(new f(e,null)).pipe(v(i=>this._cachedIconsByUrl.set(t,i)),d(i=>w(i)))}getNamedSvgIcon(e,t=\"\"){let n=ee(t,e),i=this._svgIconConfigs.get(n);if(i)return this._getSvgFromConfig(i);if(i=this._getIconConfigFromResolvers(t,e),i)return this._svgIconConfigs.set(n,i),this._getSvgFromConfig(i);let r=this._iconSetConfigs.get(t);return r?this._getSvgFromIconSetConfigs(e,r):x(K(n))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?m(w(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(d(t=>w(t)))}_getSvgFromIconSetConfigs(e,t){let n=this._extractIconWithNameFromAnySet(e,t);if(n)return m(n);let i=t.filter(r=>!r.svgText).map(r=>this._loadSvgIconSetFromConfig(r).pipe(O(a=>{let c=`Loading icon set URL: ${this._sanitizer.sanitize(g.RESOURCE_URL,r.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(c)),m(null)})));return D(i).pipe(d(()=>{let r=this._extractIconWithNameFromAnySet(e,t);if(!r)throw K(e);return r}))}_extractIconWithNameFromAnySet(e,t){for(let n=t.length-1;n>=0;n--){let i=t[n];if(i.svgText&&i.svgText.toString().indexOf(e)>-1){let r=this._svgElementFromConfig(i),a=this._extractSvgIconFromSet(r,e,i.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(v(t=>e.svgText=t),d(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?m(null):this._fetchIcon(e).pipe(v(t=>e.svgText=t))}_extractSvgIconFromSet(e,t,n){let i=e.querySelector(`[id=\"${t}\"]`);if(!i)return null;let r=i.cloneNode(!0);if(r.removeAttribute(\"id\"),r.nodeName.toLowerCase()===\"svg\")return this._setSvgAttributes(r,n);if(r.nodeName.toLowerCase()===\"symbol\")return this._setSvgAttributes(this._toSvgElement(r),n);let a=this._svgElementFromString(S(\"<svg></svg>\"));return a.appendChild(r),this._setSvgAttributes(a,n)}_svgElementFromString(e){let t=this._document.createElement(\"DIV\");t.innerHTML=e;let n=t.querySelector(\"svg\");if(!n)throw Error(\"<svg> tag not found\");return n}_toSvgElement(e){let t=this._svgElementFromString(S(\"<svg></svg>\")),n=e.attributes;for(let i=0;i<n.length;i++){let{name:r,value:a}=n[i];r!==\"id\"&&t.setAttribute(r,a)}for(let i=0;i<e.childNodes.length;i++)e.childNodes[i].nodeType===this._document.ELEMENT_NODE&&t.appendChild(e.childNodes[i].cloneNode(!0));return t}_setSvgAttributes(e,t){return e.setAttribute(\"fit\",\"\"),e.setAttribute(\"height\",\"100%\"),e.setAttribute(\"width\",\"100%\"),e.setAttribute(\"preserveAspectRatio\",\"xMidYMid meet\"),e.setAttribute(\"focusable\",\"false\"),t&&t.viewBox&&e.setAttribute(\"viewBox\",t.viewBox),e}_fetchIcon(e){let{url:t,options:n}=e,i=n?.withCredentials??!1;if(!this._httpClient)throw se();if(t==null)throw Error(`Cannot fetch icon from URL \"${t}\".`);let r=this._sanitizer.sanitize(g.RESOURCE_URL,t);if(!r)throw X(t);let a=this._inProgressUrlFetches.get(r);if(a)return a;let l=this._httpClient.get(r,{responseType:\"text\",withCredentials:i}).pipe(d(c=>S(c)),k(()=>this._inProgressUrlFetches.delete(r)),V());return this._inProgressUrlFetches.set(r,l),l}_addSvgIconConfig(e,t,n){return this._svgIconConfigs.set(ee(e,t),n),this}_addSvgIconSetConfig(e,t){let n=this._iconSetConfigs.get(e);return n?n.push(t):this._iconSetConfigs.set(e,[t]),this}_svgElementFromConfig(e){if(!e.svgElement){let t=this._svgElementFromString(e.svgText);this._setSvgAttributes(t,e.options),e.svgElement=t}return e.svgElement}_getIconConfigFromResolvers(e,t){for(let n=0;n<this._resolvers.length;n++){let i=this._resolvers[n](t,e);if(i)return re(i)?new f(i.url,null,i.options):new f(i,null)}}static \\u0275fac=function(t){return new(t||s)(_(Q,8),_(J),_(C,8),_(p))};static \\u0275prov=E({token:s,factory:s.\\u0275fac,providedIn:\"root\"})}return s})();function w(s){return s.cloneNode(!0)}function ee(s,o){return s+\":\"+o}function re(s){return!!(s.url&&s.options)}var ae=[\"*\"],ce=new R(\"MAT_ICON_DEFAULT_OPTIONS\"),le=new R(\"mat-icon-location\",{providedIn:\"root\",factory:he});function he(){let s=u(C),o=s?s.location:null;return{getPathname:()=>o?o.pathname+o.search:\"\"}}var ie=[\"clip-path\",\"color-profile\",\"src\",\"cursor\",\"fill\",\"filter\",\"marker\",\"marker-start\",\"marker-mid\",\"marker-end\",\"mask\",\"stroke\"],fe=ie.map(s=>`[${s}]`).join(\", \"),ue=/^url\\(['\"]?#(.*?)['\"]?\\)$/,Oe=(()=>{class s{_elementRef=u(P);_iconRegistry=u(ne);_location=u(le);_errorHandler=u(p);_defaultColor;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(e){let t=this._cleanupFontValue(e);t!==this._fontSet&&(this._fontSet=t,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(e){let t=this._cleanupFontValue(e);t!==this._fontIcon&&(this._fontIcon=t,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName;_svgNamespace;_previousPath;_elementsWithExternalReferences;_currentIconFetch=N.EMPTY;constructor(){let e=u(new q(\"aria-hidden\"),{optional:!0}),t=u(ce,{optional:!0});t&&(t.color&&(this.color=this._defaultColor=t.color),t.fontSet&&(this.fontSet=t.fontSet)),e||this._elementRef.nativeElement.setAttribute(\"aria-hidden\",\"true\")}_splitIconName(e){if(!e)return[\"\",\"\"];let t=e.split(\":\");switch(t.length){case 1:return[\"\",t[0]];case 2:return t;default:throw Error(`Invalid icon name: \"${e}\"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){let e=this._elementsWithExternalReferences;if(e&&e.size){let t=this._location.getPathname();t!==this._previousPath&&(this._previousPath=t,this._prependPathToReferences(t))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();let t=this._location.getPathname();this._previousPath=t,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(t),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){let e=this._elementRef.nativeElement,t=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();t--;){let n=e.childNodes[t];(n.nodeType!==1||n.nodeName.toLowerCase()===\"svg\")&&n.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;let e=this._elementRef.nativeElement,t=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(n=>n.length>0);this._previousFontSetClass.forEach(n=>e.classList.remove(n)),t.forEach(n=>e.classList.add(n)),this._previousFontSetClass=t,this.fontIcon!==this._previousFontIconClass&&!t.includes(\"mat-ligature-font\")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return typeof e==\"string\"?e.trim().split(\" \")[0]:e}_prependPathToReferences(e){let t=this._elementsWithExternalReferences;t&&t.forEach((n,i)=>{n.forEach(r=>{i.setAttribute(r.name,`url('${e}#${r.value}')`)})})}_cacheChildrenWithExternalReferences(e){let t=e.querySelectorAll(fe),n=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let i=0;i<t.length;i++)ie.forEach(r=>{let a=t[i],l=a.getAttribute(r),c=l?l.match(ue):null;if(c){let h=n.get(a);h||(h=[],n.set(a,h)),h.push({name:r,value:c[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){let[t,n]=this._splitIconName(e);t&&(this._svgNamespace=t),n&&(this._svgName=n),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(n,t).pipe(L(1)).subscribe(i=>this._setSvgElement(i),i=>{let r=`Error retrieving icon ${t}:${n}! ${i.message}`;this._errorHandler.handleError(new Error(r))})}}static \\u0275fac=function(t){return new(t||s)};static \\u0275cmp=z({type:s,selectors:[[\"mat-icon\"]],hostAttrs:[\"role\",\"img\",1,\"mat-icon\",\"notranslate\"],hostVars:10,hostBindings:function(t,n){t&2&&(W(\"data-mat-icon-type\",n._usingFontIcon()?\"font\":\"svg\")(\"data-mat-icon-name\",n._svgName||n.fontIcon)(\"data-mat-icon-namespace\",n._svgNamespace||n.fontSet)(\"fontIcon\",n._usingFontIcon()?n.fontIcon:null),Y(n.color?\"mat-\"+n.color:\"\"),B(\"mat-icon-inline\",n.inline)(\"mat-icon-no-color\",n.color!==\"primary\"&&n.color!==\"accent\"&&n.color!==\"warn\"))},inputs:{color:\"color\",inline:[2,\"inline\",\"inline\",G],svgIcon:\"svgIcon\",fontSet:\"fontSet\",fontIcon:\"fontIcon\"},exportAs:[\"matIcon\"],ngContentSelectors:ae,decls:1,vars:0,template:function(t,n){t&1&&(j(),$(0))},styles:[`mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n`],encapsulation:2,changeDetection:0})}return s})(),Le=(()=>{class s{static \\u0275fac=function(t){return new(t||s)};static \\u0275mod=H({type:s});static \\u0275inj=U({imports:[T,T]})}return s})();var M=class{applyChanges(o,e,t,n,i){o.forEachOperation((r,a,l)=>{let c,h;if(r.previousIndex==null){let y=t(r,a,l);c=e.createEmbeddedView(y.templateRef,y.context,y.index),h=I.INSERTED}else l==null?(e.remove(a),h=I.REMOVED):(c=e.get(a),e.move(c,l),h=I.MOVED);i&&i({context:c?.context,operation:h,record:r})})}detach(){}};var A=class{_multiple;_emitChanges;compareWith;_selection=new Set;_deselectedToEmit=[];_selectedToEmit=[];_selected;get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}changed=new b;constructor(o=!1,e,t=!0,n){this._multiple=o,this._emitChanges=t,this.compareWith=n,e&&e.length&&(o?e.forEach(i=>this._markSelected(i)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...o){this._verifyValueAssignment(o),o.forEach(t=>this._markSelected(t));let e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...o){this._verifyValueAssignment(o),o.forEach(t=>this._unmarkSelected(t));let e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...o){this._verifyValueAssignment(o);let e=this.selected,t=new Set(o.map(i=>this._getConcreteValue(i)));o.forEach(i=>this._markSelected(i)),e.filter(i=>!t.has(this._getConcreteValue(i,t))).forEach(i=>this._unmarkSelected(i));let n=this._hasQueuedChanges();return this._emitChangeEvent(),n}toggle(o){return this.isSelected(o)?this.deselect(o):this.select(o)}clear(o=!0){this._unmarkAll();let e=this._hasQueuedChanges();return o&&this._emitChangeEvent(),e}isSelected(o){return this._selection.has(this._getConcreteValue(o))}isEmpty(){return this._selection.size===0}hasValue(){return!this.isEmpty()}sort(o){this._multiple&&this.selected&&this._selected.sort(o)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(o){o=this._getConcreteValue(o),this.isSelected(o)||(this._multiple||this._unmarkAll(),this.isSelected(o)||this._selection.add(o),this._emitChanges&&this._selectedToEmit.push(o))}_unmarkSelected(o){o=this._getConcreteValue(o),this.isSelected(o)&&(this._selection.delete(o),this._emitChanges&&this._deselectedToEmit.push(o))}_unmarkAll(){this.isEmpty()||this._selection.forEach(o=>this._unmarkSelected(o))}_verifyValueAssignment(o){o.length>1&&this._multiple}_hasQueuedChanges(){return!!(this._deselectedToEmit.length||this._selectedToEmit.length)}_getConcreteValue(o,e){if(this.compareWith){e=e??this._selection;for(let t of e)if(this.compareWith(o,t))return t;return o}else return o}};var me=(()=>{class s{_listeners=[];notify(e,t){for(let n of this._listeners)n(e,t)}listen(e){return this._listeners.push(e),()=>{this._listeners=this._listeners.filter(t=>e!==t)}}ngOnDestroy(){this._listeners=[]}static \\u0275fac=function(t){return new(t||s)};static \\u0275prov=E({token:s,factory:s.\\u0275fac,providedIn:\"root\"})}return s})();export{Oe as a,Le as b,me as c,M as d,A as e};\n"
  },
  {
    "path": "API/wwwroot/chunk-LMQANEB2.js",
    "content": "import{a as V}from\"./chunk-MIKQGBUF.js\";import{a as b,b as q,c as z}from\"./chunk-BU6XFQYD.js\";import{a as O}from\"./chunk-NEILRAN2.js\";import{a as N,d as U}from\"./chunk-PEWDZYDO.js\";import{Ga as w,Ha as B,Ka as x,La as f,Ma as v,Na as e,Oa as t,Pa as R,Sb as S,T as c,Ta as k,Tb as g,V as _,Va as T,W as I,Wa as C,Zc as L,_b as M,ac as j,ad as $,bc as F,ib as i,jb as m,kb as l,la as D,ma as n,pb as P,qb as A,ta as u,vb as o,wb as p,xb as y}from\"./chunk-76XFCVV7.js\";var K=(a,d)=>d.productId;function Q(a,d){if(a&1&&(e(0,\"tr\")(1,\"td\",22)(2,\"div\",23),R(3,\"img\",24),e(4,\"span\"),i(5),t()()(),e(6,\"td\",25),i(7),t(),e(8,\"td\",26),i(9),o(10,\"currency\"),t()()),a&2){let r=d.$implicit;n(3),v(\"src\",P(r.pictureUrl),D),n(2),m(r.productName),n(2),l(\"x\",r.quantity),n(2),l(\"\",p(10,5,r.price),\" \")}}function W(a,d){if(a&1){let r=k();e(0,\"mat-card\",0)(1,\"div\",1)(2,\"div\",2)(3,\"h2\",3),i(4),t(),e(5,\"button\",4),T(\"click\",function(){_(r);let G=C();return I(G.onReturnClick())}),i(6),t()(),e(7,\"div\",5)(8,\"div\",6)(9,\"h4\",7),i(10,\"Billing and delivery information\"),t(),e(11,\"dl\")(12,\"dt\",8),i(13,\"Shipping address\"),t(),e(14,\"dd\",9),i(15),o(16,\"address\"),t()(),e(17,\"dl\")(18,\"dt\",8),i(19,\"Payment info\"),t(),e(20,\"dd\",9),i(21),o(22,\"paymentCard\"),t()()(),e(23,\"div\",6)(24,\"h4\",7),i(25,\"Order details\"),t(),e(26,\"dl\")(27,\"dt\",8),i(28,\"Email address\"),t(),e(29,\"dd\",9),i(30),t()(),e(31,\"dl\")(32,\"dt\",8),i(33,\"Order status\"),t(),e(34,\"dd\",9),i(35),t()(),e(36,\"dl\")(37,\"dt\",8),i(38,\"Order date\"),t(),e(39,\"dd\",9),i(40),o(41,\"date\"),t()()()(),e(42,\"div\",10)(43,\"div\",11)(44,\"table\",12)(45,\"tbody\",13),x(46,Q,11,7,\"tr\",null,K),t()()()(),e(48,\"div\",14)(49,\"p\",15),i(50,\"Order summary\"),t(),e(51,\"div\",16)(52,\"div\",6)(53,\"dl\",17)(54,\"dt\",18),i(55,\"Subtotal\"),t(),e(56,\"dd\",19),i(57),o(58,\"currency\"),t()(),e(59,\"dl\",17)(60,\"dt\",18),i(61,\"Discount\"),t(),e(62,\"dd\",20),i(63),o(64,\"currency\"),t()(),e(65,\"dl\",17)(66,\"dt\",18),i(67,\"Delivery fee\"),t(),e(68,\"dd\",19),i(69),o(70,\"currency\"),t()()(),e(71,\"dl\",21)(72,\"dt\",18),i(73,\"Total\"),t(),e(74,\"dd\",19),i(75),o(76,\"currency\"),t()()()()()()}if(a&2){let r=C();n(4),l(\"Order summary for order #\",r.order.id),n(2),m(r.buttonText),n(9),l(\"\",p(16,11,r.order.shippingAddress),\" \"),n(6),m(p(22,13,r.order.paymentSummary)),n(9),m(r.order.buyerEmail),n(5),m(r.order.status),n(5),m(y(41,15,r.order.orderDate,\"medium\")),n(6),f(r.order.orderItems),n(11),l(\" \",p(58,18,r.order.subtotal),\" \"),n(6),l(\" -\",p(64,20,r.order.discount),\" \"),n(6),l(\" \",p(70,22,r.order.shippingPrice),\" \"),n(6),l(\" \",p(76,24,r.order.total),\" \")}}var h=class a{orderService=c(b);activatedRoute=c(M);accountService=c($);adminService=c(V);router=c(j);order;buttonText=this.accountService.isAdmin()?\"Return to admin\":\"Return to orders\";ngOnInit(){this.loadOrder()}onReturnClick(){this.accountService.isAdmin()?this.router.navigateByUrl(\"/admin\"):this.router.navigateByUrl(\"/orders\")}loadOrder(){let d=this.activatedRoute.snapshot.paramMap.get(\"id\");if(!d)return;(this.accountService.isAdmin()?this.adminService.getOrder(+d):this.orderService.getOrderDetailed(+d)).subscribe({next:s=>this.order=s})}static \\u0275fac=function(r){return new(r||a)};static \\u0275cmp=u({type:a,selectors:[[\"app-order-detailed\"]],decls:1,vars:1,consts:[[1,\"bg-white\",\"py-8\",\"max-w-screen-lg\",\"mx-auto\",\"shadow-md\"],[1,\"px-4\",\"w-full\"],[1,\"flex\",\"justify-between\",\"items-center\",\"align-middle\"],[1,\"text-2xl\",\"text-center\",\"font-semibold\"],[\"mat-stroked-button\",\"\",3,\"click\"],[1,\"mt-8\",\"py-3\",\"border-t\",\"border-gray-200\",\"flex\",\"gap-16\"],[1,\"space-y-2\"],[1,\"text-lg\",\"font-semibold\"],[1,\"font-medium\"],[1,\"mt-1\",\"font-light\"],[1,\"mt-4\"],[1,\"border-y\",\"border-gray-200\"],[1,\"w-full\",\"text-center\"],[1,\"divide-y\",\"divide-gray-200\"],[1,\"space-y-4\",\"rounded-lg\",\"border-t\",\"border-gray-200\",\"p-4\",\"bg-white\"],[1,\"text-xl\",\"font-semibold\"],[1,\"space-y-4\"],[1,\"flex\",\"items-center\",\"justify-between\",\"gap-4\"],[1,\"font-medium\",\"text-gray-500\"],[1,\"font-medium\",\"text-gray-900\"],[1,\"font-medium\",\"text-green-500\"],[1,\"flex\",\"items-center\",\"justify-between\",\"gap-4\",\"border-t\",\"border-gray-200\",\"pt-2\"],[1,\"py-4\"],[1,\"flex\",\"items-center\",\"gap-4\"],[\"alt\",\"product image\",1,\"w-10\",\"h-10\",3,\"src\"],[1,\"p-4\"],[1,\"p-4\",\"text-right\"]],template:function(r,s){r&1&&w(0,W,77,26,\"mat-card\",0),r&2&&B(s.order?0:-1)},dependencies:[U,N,S,L,q,z,g],encapsulation:2})};var X=(a,d)=>d.id;function Y(a,d){if(a&1&&(e(0,\"tr\",10)(1,\"th\",11),i(2),t(),e(3,\"td\"),i(4),o(5,\"date\"),t(),e(6,\"td\"),i(7),o(8,\"currency\"),t(),e(9,\"td\"),i(10),t()()),a&2){let r=d.$implicit;v(\"routerLink\",A(\"/orders/\",r.id)),n(2),l(\"# \",r.id),n(2),m(y(5,6,r.orderDate,\"medium\")),n(3),m(p(8,9,r.total)),n(3),m(r.status)}}var E=class a{orderService=c(b);orders=[];ngOnInit(){this.orderService.getOrdersForUser().subscribe({next:d=>this.orders=d})}static \\u0275fac=function(r){return new(r||a)};static \\u0275cmp=u({type:a,selectors:[[\"app-order\"]],decls:19,vars:0,consts:[[1,\"mx-auto\",\"mt-32\"],[1,\"font-semibold\",\"text-2xl\",\"mb-6\",\"text-center\"],[1,\"flex\",\"flex-col\"],[1,\"w-full\"],[1,\"min-w-full\",\"divide-y\",\"divide-gray-200\",\"cursor-pointer\"],[1,\"bg-gray-50\"],[1,\"uppercase\",\"text-gray-600\",\"text-sm\"],[1,\"text-center\",\"px-6\",\"py-3\"],[1,\"text-left\"],[1,\"bg-white\",\"divide-y\",\"divide-gray-200\"],[1,\"hover:bg-gray-100\",3,\"routerLink\"],[1,\"px-6\",\"py-3\"]],template:function(r,s){r&1&&(e(0,\"div\",0)(1,\"h2\",1),i(2,\"My orders\"),t(),e(3,\"div\",2)(4,\"div\",3)(5,\"table\",4)(6,\"thead\",5)(7,\"tr\",6)(8,\"th\",7),i(9,\"Order\"),t(),e(10,\"th\",8),i(11,\"Date\"),t(),e(12,\"th\",8),i(13,\"Total\"),t(),e(14,\"th\",8),i(15,\"Status\"),t()()(),e(16,\"tbody\",9),x(17,Y,11,11,\"tr\",10,X),t()()()()()),r&2&&(n(17),f(s.orders))},dependencies:[F,g,S],encapsulation:2})};var Ee=[{path:\"\",component:E,canActivate:[O]},{path:\":id\",component:h,canActivate:[O]}];export{Ee as orderRoutes};\n"
  },
  {
    "path": "API/wwwroot/chunk-MIKQGBUF.js",
    "content": "import{P as i,T as n,Vb as a,Wb as p,ec as o}from\"./chunk-76XFCVV7.js\";var s=class e{baseUrl=o.baseUrl;http=n(p);getOrders(r){let t=new a;return r.filter&&r.filter!==\"All\"&&(t=t.append(\"status\",r.filter)),t=t.append(\"pageSize\",r.pageSize),t=t.append(\"pageIndex\",r.pageNumber),this.http.get(this.baseUrl+\"admin/orders\",{params:t})}getOrder(r){return this.http.get(this.baseUrl+\"admin/orders/\"+r)}refundOrder(r){return this.http.post(this.baseUrl+\"admin/orders/refund/\"+r,{})}static \\u0275fac=function(t){return new(t||e)};static \\u0275prov=i({token:e,factory:e.\\u0275fac,providedIn:\"root\"})};export{s as a};\n"
  },
  {
    "path": "API/wwwroot/chunk-NEILRAN2.js",
    "content": "import{T as t,ac as o,ad as u,m as e,r as n}from\"./chunk-76XFCVV7.js\";var A=(m,a)=>{let r=t(u),c=t(o);return r.currentUser()?e(!0):r.getAuthState().pipe(n(i=>i.isAuthenticated?!0:(c.navigate([\"/account/login\"],{queryParams:{returnUrl:a.url}}),!1)))};export{A as a};\n"
  },
  {
    "path": "API/wwwroot/chunk-PEWDZYDO.js",
    "content": "import{Jc as c,Q as n,R as o,T as m,Xa as g,Ya as u,gb as i,ta as s,ua as l,va as d}from\"./chunk-76XFCVV7.js\";var p=[\"*\"];var f=new o(\"MAT_CARD_CONFIG\"),_=(()=>{class t{appearance;constructor(){let e=m(f,{optional:!0});this.appearance=e?.appearance||\"raised\"}static \\u0275fac=function(a){return new(a||t)};static \\u0275cmp=s({type:t,selectors:[[\"mat-card\"]],hostAttrs:[1,\"mat-mdc-card\",\"mdc-card\"],hostVars:8,hostBindings:function(a,r){a&2&&i(\"mat-mdc-card-outlined\",r.appearance===\"outlined\")(\"mdc-card--outlined\",r.appearance===\"outlined\")(\"mat-mdc-card-filled\",r.appearance===\"filled\")(\"mdc-card--filled\",r.appearance===\"filled\")},inputs:{appearance:\"appearance\"},exportAs:[\"matCard\"],ngContentSelectors:p,decls:1,vars:0,template:function(a,r){a&1&&(g(),u(0))},styles:[`.mat-mdc-card{display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-style:solid;border-width:0;background-color:var(--mat-card-elevated-container-color, var(--mat-sys-surface-container-low));border-color:var(--mat-card-elevated-container-color, var(--mat-sys-surface-container-low));border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium));box-shadow:var(--mat-card-elevated-container-elevation, var(--mat-sys-level1))}.mat-mdc-card::after{position:absolute;top:0;left:0;width:100%;height:100%;border:solid 1px rgba(0,0,0,0);content:\"\";display:block;pointer-events:none;box-sizing:border-box;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}.mat-mdc-card-outlined{background-color:var(--mat-card-outlined-container-color, var(--mat-sys-surface));border-radius:var(--mat-card-outlined-container-shape, var(--mat-sys-corner-medium));border-width:var(--mat-card-outlined-outline-width, 1px);border-color:var(--mat-card-outlined-outline-color, var(--mat-sys-outline-variant));box-shadow:var(--mat-card-outlined-container-elevation, var(--mat-sys-level0))}.mat-mdc-card-outlined::after{border:none}.mat-mdc-card-filled{background-color:var(--mat-card-filled-container-color, var(--mat-sys-surface-container-highest));border-radius:var(--mat-card-filled-container-shape, var(--mat-sys-corner-medium));box-shadow:var(--mat-card-filled-container-elevation, var(--mat-sys-level0))}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:\"\"}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mat-mdc-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font, var(--mat-sys-title-large-font));line-height:var(--mat-card-title-text-line-height, var(--mat-sys-title-large-line-height));font-size:var(--mat-card-title-text-size, var(--mat-sys-title-large-size));letter-spacing:var(--mat-card-title-text-tracking, var(--mat-sys-title-large-tracking));font-weight:var(--mat-card-title-text-weight, var(--mat-sys-title-large-weight))}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color, var(--mat-sys-on-surface));font-family:var(--mat-card-subtitle-text-font, var(--mat-sys-title-medium-font));line-height:var(--mat-card-subtitle-text-line-height, var(--mat-sys-title-medium-line-height));font-size:var(--mat-card-subtitle-text-size, var(--mat-sys-title-medium-size));letter-spacing:var(--mat-card-subtitle-text-tracking, var(--mat-sys-title-medium-tracking));font-weight:var(--mat-card-subtitle-text-weight, var(--mat-sys-title-medium-weight))}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}\n`],encapsulation:2,changeDetection:0})}return t})();var F=(()=>{class t{static \\u0275fac=function(a){return new(a||t)};static \\u0275dir=d({type:t,selectors:[[\"mat-card-content\"]],hostAttrs:[1,\"mat-mdc-card-content\"]})}return t})();var j=(()=>{class t{align=\"start\";static \\u0275fac=function(a){return new(a||t)};static \\u0275dir=d({type:t,selectors:[[\"mat-card-actions\"]],hostAttrs:[1,\"mat-mdc-card-actions\",\"mdc-card__actions\"],hostVars:2,hostBindings:function(a,r){a&2&&i(\"mat-mdc-card-actions-align-end\",r.align===\"end\")},inputs:{align:\"align\"},exportAs:[\"matCardActions\"]})}return t})();var S=(()=>{class t{static \\u0275fac=function(a){return new(a||t)};static \\u0275mod=l({type:t});static \\u0275inj=n({imports:[c,c]})}return t})();export{_ as a,F as b,j as c,S as d};\n"
  },
  {
    "path": "API/wwwroot/chunk-SP3SSILU.js",
    "content": "import{a as Ba}from\"./chunk-MIKQGBUF.js\";import{a as da,b as ma,d as It,e as xa}from\"./chunk-HJYZM75B.js\";import{$ as Fa,D as Ta,F as Ra,I as Sa,N as Ma,T as Ia,U as Xt,W as Oa,X as Ea,Y as ot,Z as Aa,_ as Pa,a as at,aa as Na,b as kt,c as ua,d as fa,e as Te,g as _a,h as xt,i as ga,j as nt,k as ba,l as ya,m as Ge,n as Tt,o as va,p as Rt,q as We,r as Ca,s as wa,t as Da,u as ka,v as St,w as Mt,x as Ut,y as Kt,z as Ye}from\"./chunk-YYNGFOZ2.js\";import{$a as u,A as Bi,Aa as xe,Ac as ce,B as ze,Ba as Z,Bc as ie,Cc as ra,Db as et,Dc as sa,Ec as la,Fa as I,Fc as $t,Ga as P,Gc as ca,H as Ni,Ha as F,Hc as de,I as he,Ia as Gi,Ib as $,J as Ze,Ja as Je,Jb as je,Jc as q,K as E,Ka as Pe,Kb as g,La as Fe,Lb as le,Ma as b,Na as c,Oa as d,P as ke,Pa as j,Q as z,Qa as _e,Qb as bt,Qc as ae,R as k,Ra as ge,Sa as J,Sb as qi,Sc as qt,T as s,Ta as Y,Tb as Ui,Ua as ft,V as C,Va as y,Vc as it,W as w,Wa as v,Wc as Ct,X as Oe,Xa as se,Xc as wt,Y as zi,Ya as Q,Yc as ha,Z as L,Za as G,Zc as pa,_ as Ve,_a as A,_c as Dt,a as X,ab as f,ac as Ki,ad as La,b as Mi,ba as Vi,bc as Xi,c as Ii,ca as Ee,d as Se,da as Hi,ea as ji,eb as Le,f as Oi,fa as ye,fb as _t,ga as V,gb as R,h as x,ha as S,hb as He,hc as yt,i as Me,ia as Qi,ib as p,j as Ei,jb as ee,jc as ve,k as Ai,kb as te,kc as Zi,lc as Qe,m as De,ma as m,mc as Ji,na as K,o as Pi,oc as tt,pa as Ae,pc as ea,q as Fi,qb as gt,qc as vt,r as Ie,ra as fe,rb as B,rc as ta,s as ut,sb as Wi,t as Ne,ta as D,ua as H,uc as ia,v as Li,va as _,vb as Wt,w as re,wb as Yi,wc as aa,x as ue,xa as T,xb as $i,xc as na,ya as N,yc as oa,za as M,zc as Yt}from\"./chunk-76XFCVV7.js\";var Hn=[[[\"caption\"]],[[\"colgroup\"],[\"col\"]],\"*\"],jn=[\"caption\",\"colgroup, col\",\"*\"];function Qn(a,o){a&1&&Q(0,2)}function Gn(a,o){a&1&&(c(0,\"thead\",0),J(1,1),d(),c(2,\"tbody\",0),J(3,2)(4,3),d(),c(5,\"tfoot\",0),J(6,4),d())}function Wn(a,o){a&1&&J(0,1)(1,2)(2,3)(3,4)}var pe=new k(\"CDK_TABLE\");var Pt=(()=>{class a{template=s(K);constructor(){}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkCellDef\",\"\"]]})}return a})(),Ft=(()=>{class a{template=s(K);constructor(){}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkHeaderCellDef\",\"\"]]})}return a})(),Ha=(()=>{class a{template=s(K);constructor(){}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkFooterCellDef\",\"\"]]})}return a})(),$e=(()=>{class a{_table=s(pe,{optional:!0});_hasStickyChanged=!1;get name(){return this._name}set name(e){this._setNameInput(e)}_name;get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}_sticky=!1;get stickyEnd(){return this._stickyEnd}set stickyEnd(e){e!==this._stickyEnd&&(this._stickyEnd=e,this._hasStickyChanged=!0)}_stickyEnd=!1;cell;headerCell;footerCell;cssClassFriendlyName;_columnCssClassName;constructor(){}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,\"-\"),this._updateColumnCssClassName())}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkColumnDef\",\"\"]],contentQueries:function(t,i,n){if(t&1&&(G(n,Pt,5),G(n,Ft,5),G(n,Ha,5)),t&2){let r;u(r=f())&&(i.cell=r.first),u(r=f())&&(i.headerCell=r.first),u(r=f())&&(i.footerCell=r.first)}},inputs:{name:[0,\"cdkColumnDef\",\"name\"],sticky:[2,\"sticky\",\"sticky\",g],stickyEnd:[2,\"stickyEnd\",\"stickyEnd\",g]},features:[B([{provide:\"MAT_SORT_HEADER_COLUMN_DEF\",useExisting:a}])]})}return a})(),Et=class{constructor(o,e){e.nativeElement.classList.add(...o._columnCssClassName)}},ja=(()=>{class a extends Et{constructor(){super(s($e),s(S))}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"cdk-header-cell\"],[\"th\",\"cdk-header-cell\",\"\"]],hostAttrs:[\"role\",\"columnheader\",1,\"cdk-header-cell\"],features:[T]})}return a})();var Qa=(()=>{class a extends Et{constructor(){let e=s($e),t=s(S);super(e,t);let i=e._table?._getCellRole();i&&t.nativeElement.setAttribute(\"role\",i)}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"cdk-cell\"],[\"td\",\"cdk-cell\",\"\"]],hostAttrs:[1,\"cdk-cell\"],features:[T]})}return a})();var Jt=(()=>{class a{template=s(K);_differs=s(je);columns;_columnsDiffer;constructor(){}ngOnChanges(e){if(!this._columnsDiffer){let t=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(t).create(),this._columnsDiffer.diff(t)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof rt?e.headerCell.template:this instanceof ei?e.footerCell.template:e.cell.template}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,features:[ye]})}return a})(),rt=(()=>{class a extends Jt{_table=s(pe,{optional:!0});_hasStickyChanged=!1;get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}_sticky=!1;constructor(){super(s(K),s(je))}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkHeaderRowDef\",\"\"]],inputs:{columns:[0,\"cdkHeaderRowDef\",\"columns\"],sticky:[2,\"cdkHeaderRowDefSticky\",\"sticky\",g]},features:[T,ye]})}return a})(),ei=(()=>{class a extends Jt{_table=s(pe,{optional:!0});_hasStickyChanged=!1;get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}_sticky=!1;constructor(){super(s(K),s(je))}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkFooterRowDef\",\"\"]],inputs:{columns:[0,\"cdkFooterRowDef\",\"columns\"],sticky:[2,\"cdkFooterRowDefSticky\",\"sticky\",g]},features:[T,ye]})}return a})(),Lt=(()=>{class a extends Jt{_table=s(pe,{optional:!0});when;constructor(){super(s(K),s(je))}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkRowDef\",\"\"]],inputs:{columns:[0,\"cdkRowDefColumns\",\"columns\"],when:[0,\"cdkRowDefWhen\",\"when\"]},features:[T]})}return a})(),Be=(()=>{class a{_viewContainer=s(fe);cells;context;static mostRecentCellOutlet=null;constructor(){a.mostRecentCellOutlet=this}ngOnDestroy(){a.mostRecentCellOutlet===this&&(a.mostRecentCellOutlet=null)}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"cdkCellOutlet\",\"\"]]})}return a})(),ti=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"cdk-header-row\"],[\"tr\",\"cdk-header-row\",\"\"]],hostAttrs:[\"role\",\"row\",1,\"cdk-header-row\"],decls:1,vars:0,consts:[[\"cdkCellOutlet\",\"\"]],template:function(t,i){t&1&&J(0,0)},dependencies:[Be],encapsulation:2})}return a})();var ii=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"cdk-row\"],[\"tr\",\"cdk-row\",\"\"]],hostAttrs:[\"role\",\"row\",1,\"cdk-row\"],decls:1,vars:0,consts:[[\"cdkCellOutlet\",\"\"]],template:function(t,i){t&1&&J(0,0)},dependencies:[Be],encapsulation:2})}return a})(),Bt=(()=>{class a{templateRef=s(K);_contentClassName=\"cdk-no-data-row\";constructor(){}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"ng-template\",\"cdkNoDataRow\",\"\"]]})}return a})(),za=[\"top\",\"bottom\",\"left\",\"right\"],Zt=class{_isNativeHtmlTable;_stickCellCss;_isBrowser;_needsPositionStickyOnElement;direction;_positionListener;_tableInjector;_elemSizeCache=new WeakMap;_resizeObserver=globalThis?.ResizeObserver?new globalThis.ResizeObserver(o=>this._updateCachedSizes(o)):null;_updatedStickyColumnsParamsToReplay=[];_stickyColumnsReplayTimeout=null;_cachedCellWidths=[];_borderCellCss;_destroyed=!1;constructor(o,e,t=!0,i=!0,n,r,l){this._isNativeHtmlTable=o,this._stickCellCss=e,this._isBrowser=t,this._needsPositionStickyOnElement=i,this.direction=n,this._positionListener=r,this._tableInjector=l,this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(o,e){(e.includes(\"left\")||e.includes(\"right\"))&&this._removeFromStickyColumnReplayQueue(o);let t=[];for(let i of o)i.nodeType===i.ELEMENT_NODE&&t.push(i,...Array.from(i.children));Z({write:()=>{for(let i of t)this._removeStickyStyle(i,e)}},{injector:this._tableInjector})}updateStickyColumns(o,e,t,i=!0,n=!0){if(!o.length||!this._isBrowser||!(e.some(me=>me)||t.some(me=>me))){this._positionListener?.stickyColumnsUpdated({sizes:[]}),this._positionListener?.stickyEndColumnsUpdated({sizes:[]});return}let r=o[0],l=r.children.length,h=this.direction===\"rtl\",O=h?\"right\":\"left\",W=h?\"left\":\"right\",U=e.lastIndexOf(!0),be=t.indexOf(!0),we,Ti,Ri;n&&this._updateStickyColumnReplayQueue({rows:[...o],stickyStartStates:[...e],stickyEndStates:[...t]}),Z({earlyRead:()=>{we=this._getCellWidths(r,i),Ti=this._getStickyStartColumnPositions(we,e),Ri=this._getStickyEndColumnPositions(we,t)},write:()=>{for(let me of o)for(let oe=0;oe<l;oe++){let Si=me.children[oe];e[oe]&&this._addStickyStyle(Si,O,Ti[oe],oe===U),t[oe]&&this._addStickyStyle(Si,W,Ri[oe],oe===be)}this._positionListener&&we.some(me=>!!me)&&(this._positionListener.stickyColumnsUpdated({sizes:U===-1?[]:we.slice(0,U+1).map((me,oe)=>e[oe]?me:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:be===-1?[]:we.slice(be).map((me,oe)=>t[oe+be]?me:null).reverse()}))}},{injector:this._tableInjector})}stickRows(o,e,t){if(!this._isBrowser)return;let i=t===\"bottom\"?o.slice().reverse():o,n=t===\"bottom\"?e.slice().reverse():e,r=[],l=[],h=[];Z({earlyRead:()=>{for(let O=0,W=0;O<i.length;O++){if(!n[O])continue;r[O]=W;let U=i[O];h[O]=this._isNativeHtmlTable?Array.from(U.children):[U];let be=this._retrieveElementSize(U).height;W+=be,l[O]=be}},write:()=>{let O=n.lastIndexOf(!0);for(let W=0;W<i.length;W++){if(!n[W])continue;let U=r[W],be=W===O;for(let we of h[W])this._addStickyStyle(we,t,U,be)}t===\"top\"?this._positionListener?.stickyHeaderRowsUpdated({sizes:l,offsets:r,elements:h}):this._positionListener?.stickyFooterRowsUpdated({sizes:l,offsets:r,elements:h})}},{injector:this._tableInjector})}updateStickyFooterContainer(o,e){this._isNativeHtmlTable&&Z({write:()=>{let t=o.querySelector(\"tfoot\");t&&(e.some(i=>!i)?this._removeStickyStyle(t,[\"bottom\"]):this._addStickyStyle(t,\"bottom\",0,!1))}},{injector:this._tableInjector})}destroy(){this._stickyColumnsReplayTimeout&&clearTimeout(this._stickyColumnsReplayTimeout),this._resizeObserver?.disconnect(),this._destroyed=!0}_removeStickyStyle(o,e){if(!o.classList.contains(this._stickCellCss))return;for(let i of e)o.style[i]=\"\",o.classList.remove(this._borderCellCss[i]);za.some(i=>e.indexOf(i)===-1&&o.style[i])?o.style.zIndex=this._getCalculatedZIndex(o):(o.style.zIndex=\"\",this._needsPositionStickyOnElement&&(o.style.position=\"\"),o.classList.remove(this._stickCellCss))}_addStickyStyle(o,e,t,i){o.classList.add(this._stickCellCss),i&&o.classList.add(this._borderCellCss[e]),o.style[e]=`${t}px`,o.style.zIndex=this._getCalculatedZIndex(o),this._needsPositionStickyOnElement&&(o.style.cssText+=\"position: -webkit-sticky; position: sticky; \")}_getCalculatedZIndex(o){let e={top:100,bottom:10,left:1,right:1},t=0;for(let i of za)o.style[i]&&(t+=e[i]);return t?`${t}`:\"\"}_getCellWidths(o,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;let t=[],i=o.children;for(let n=0;n<i.length;n++){let r=i[n];t.push(this._retrieveElementSize(r).width)}return this._cachedCellWidths=t,t}_getStickyStartColumnPositions(o,e){let t=[],i=0;for(let n=0;n<o.length;n++)e[n]&&(t[n]=i,i+=o[n]);return t}_getStickyEndColumnPositions(o,e){let t=[],i=0;for(let n=o.length;n>0;n--)e[n]&&(t[n]=i,i+=o[n]);return t}_retrieveElementSize(o){let e=this._elemSizeCache.get(o);if(e)return e;let t=o.getBoundingClientRect(),i={width:t.width,height:t.height};return this._resizeObserver&&(this._elemSizeCache.set(o,i),this._resizeObserver.observe(o,{box:\"border-box\"})),i}_updateStickyColumnReplayQueue(o){this._removeFromStickyColumnReplayQueue(o.rows),this._stickyColumnsReplayTimeout||this._updatedStickyColumnsParamsToReplay.push(o)}_removeFromStickyColumnReplayQueue(o){let e=new Set(o);for(let t of this._updatedStickyColumnsParamsToReplay)t.rows=t.rows.filter(i=>!e.has(i));this._updatedStickyColumnsParamsToReplay=this._updatedStickyColumnsParamsToReplay.filter(t=>!!t.rows.length)}_updateCachedSizes(o){let e=!1;for(let t of o){let i=t.borderBoxSize?.length?{width:t.borderBoxSize[0].inlineSize,height:t.borderBoxSize[0].blockSize}:{width:t.contentRect.width,height:t.contentRect.height};i.width!==this._elemSizeCache.get(t.target)?.width&&Yn(t.target)&&(e=!0),this._elemSizeCache.set(t.target,i)}e&&this._updatedStickyColumnsParamsToReplay.length&&(this._stickyColumnsReplayTimeout&&clearTimeout(this._stickyColumnsReplayTimeout),this._stickyColumnsReplayTimeout=setTimeout(()=>{if(!this._destroyed){for(let t of this._updatedStickyColumnsParamsToReplay)this.updateStickyColumns(t.rows,t.stickyStartStates,t.stickyEndStates,!0,!1);this._updatedStickyColumnsParamsToReplay=[],this._stickyColumnsReplayTimeout=null}},0))}};function Yn(a){return[\"cdk-cell\",\"cdk-header-cell\",\"cdk-footer-cell\"].some(o=>a.classList.contains(o))}var At=new k(\"CDK_SPL\");var ai=(()=>{class a{viewContainer=s(fe);elementRef=s(S);constructor(){let e=s(pe);e._rowOutlet=this,e._outletAssigned()}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"rowOutlet\",\"\"]]})}return a})(),ni=(()=>{class a{viewContainer=s(fe);elementRef=s(S);constructor(){let e=s(pe);e._headerRowOutlet=this,e._outletAssigned()}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"headerRowOutlet\",\"\"]]})}return a})(),oi=(()=>{class a{viewContainer=s(fe);elementRef=s(S);constructor(){let e=s(pe);e._footerRowOutlet=this,e._outletAssigned()}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"footerRowOutlet\",\"\"]]})}return a})(),ri=(()=>{class a{viewContainer=s(fe);elementRef=s(S);constructor(){let e=s(pe);e._noDataRowOutlet=this,e._outletAssigned()}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"noDataRowOutlet\",\"\"]]})}return a})(),si=(()=>{class a{_differs=s(je);_changeDetectorRef=s($);_elementRef=s(S);_dir=s(de,{optional:!0});_platform=s(ve);_viewRepeater=s(nt);_viewportRuler=s(Ge);_stickyPositioningListener=s(At,{optional:!0,skipSelf:!0});_document=s(Ve);_data;_onDestroy=new x;_renderRows;_renderChangeSubscription;_columnDefsByName=new Map;_rowDefs;_headerRowDefs;_footerRowDefs;_dataDiffer;_defaultRowDef;_customColumnDefs=new Set;_customRowDefs=new Set;_customHeaderRowDefs=new Set;_customFooterRowDefs=new Set;_customNoDataRow;_headerRowDefChanged=!0;_footerRowDefChanged=!0;_stickyColumnStylesNeedReset=!0;_forceRecalculateCellWidths=!0;_cachedRenderRowsMap=new Map;_isNativeHtmlTable;_stickyStyler;stickyCssClass=\"cdk-table-sticky\";needsPositionStickyOnElement=!0;_isServer;_isShowingNoDataRow=!1;_hasAllOutlets=!1;_hasInitialized=!1;_getCellRole(){if(this._cellRoleInternal===void 0){let e=this._elementRef.nativeElement.getAttribute(\"role\");return e===\"grid\"||e===\"treegrid\"?\"gridcell\":\"cell\"}return this._cellRoleInternal}_cellRoleInternal=void 0;get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}_trackByFn;get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}_dataSource;get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=e,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}_multiTemplateDataRows=!1;get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=e,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}_fixedLayout=!1;contentChanged=new M;viewChange=new Me({start:0,end:Number.MAX_VALUE});_rowOutlet;_headerRowOutlet;_footerRowOutlet;_noDataRowOutlet;_contentColumnDefs;_contentRowDefs;_contentHeaderRowDefs;_contentFooterRowDefs;_noDataRow;_injector=s(L);constructor(){s(new et(\"role\"),{optional:!0})||this._elementRef.nativeElement.setAttribute(\"role\",\"table\"),this._isServer=!this._platform.isBrowser,this._isNativeHtmlTable=this._elementRef.nativeElement.nodeName===\"TABLE\",this._dataDiffer=this._differs.find([]).create((t,i)=>this.trackBy?this.trackBy(i.dataIndex,i.data):i)}ngOnInit(){this._setupStickyStyler(),this._viewportRuler.change().pipe(E(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentInit(){this._hasInitialized=!0}ngAfterContentChecked(){this._canRender()&&this._render()}ngOnDestroy(){this._stickyStyler?.destroy(),[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),xt(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();let e=this._dataDiffer.diff(this._renderRows);if(!e){this._updateNoDataRow(),this.contentChanged.next();return}let t=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,t,(i,n,r)=>this._getEmbeddedViewArgs(i.item,r),i=>i.item.data,i=>{i.operation===ga.INSERTED&&i.context&&this._renderCellTemplateForItem(i.record.item.rowDef,i.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(i=>{let n=t.get(i.currentIndex);n.context.$implicit=i.item.data}),this._updateNoDataRow(),this.contentChanged.next(),this.updateStickyColumnStyles()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){let e=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){let i=Va(this._headerRowOutlet,\"thead\");i&&(i.style.display=e.length?\"\":\"none\")}let t=this._headerRowDefs.map(i=>i.sticky);this._stickyStyler.clearStickyPositioning(e,[\"top\"]),this._stickyStyler.stickRows(e,t,\"top\"),this._headerRowDefs.forEach(i=>i.resetStickyChanged())}updateStickyFooterRowStyles(){let e=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){let i=Va(this._footerRowOutlet,\"tfoot\");i&&(i.style.display=e.length?\"\":\"none\")}let t=this._footerRowDefs.map(i=>i.sticky);this._stickyStyler.clearStickyPositioning(e,[\"bottom\"]),this._stickyStyler.stickRows(e,t,\"bottom\"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,t),this._footerRowDefs.forEach(i=>i.resetStickyChanged())}updateStickyColumnStyles(){let e=this._getRenderedRows(this._headerRowOutlet),t=this._getRenderedRows(this._rowOutlet),i=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...t,...i],[\"left\",\"right\"]),this._stickyColumnStylesNeedReset=!1),e.forEach((n,r)=>{this._addStickyColumnStyles([n],this._headerRowDefs[r])}),this._rowDefs.forEach(n=>{let r=[];for(let l=0;l<t.length;l++)this._renderRows[l].rowDef===n&&r.push(t[l]);this._addStickyColumnStyles(r,n)}),i.forEach((n,r)=>{this._addStickyColumnStyles([n],this._footerRowDefs[r])}),Array.from(this._columnDefsByName.values()).forEach(n=>n.resetStickyChanged())}_outletAssigned(){!this._hasAllOutlets&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasAllOutlets=!0,this._canRender()&&this._render())}_canRender(){return this._hasAllOutlets&&this._hasInitialized}_render(){this._cacheRowDefs(),this._cacheColumnDefs(),!this._headerRowDefs.length&&!this._footerRowDefs.length&&this._rowDefs.length;let t=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||t,this._forceRecalculateCellWidths=t,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){let e=[],t=this._cachedRenderRowsMap;if(this._cachedRenderRowsMap=new Map,!this._data)return e;for(let i=0;i<this._data.length;i++){let n=this._data[i],r=this._getRenderRowsForData(n,i,t.get(n));this._cachedRenderRowsMap.has(n)||this._cachedRenderRowsMap.set(n,new WeakMap);for(let l=0;l<r.length;l++){let h=r[l],O=this._cachedRenderRowsMap.get(h.data);O.has(h.rowDef)?O.get(h.rowDef).push(h):O.set(h.rowDef,[h]),e.push(h)}}return e}_getRenderRowsForData(e,t,i){return this._getRowDefs(e,t).map(r=>{let l=i&&i.has(r)?i.get(r):[];if(l.length){let h=l.shift();return h.dataIndex=t,h}else return{data:e,rowDef:r,dataIndex:t}})}_cacheColumnDefs(){this._columnDefsByName.clear(),Ot(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(t=>{this._columnDefsByName.has(t.name),this._columnDefsByName.set(t.name,t)})}_cacheRowDefs(){this._headerRowDefs=Ot(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=Ot(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=Ot(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);let e=this._rowDefs.filter(t=>!t.when);!this.multiTemplateDataRows&&e.length>1,this._defaultRowDef=e[0]}_renderUpdatedColumns(){let e=(r,l)=>{let h=!!l.getColumnsDiff();return r||h},t=this._rowDefs.reduce(e,!1);t&&this._forceRenderDataRows();let i=this._headerRowDefs.reduce(e,!1);i&&this._forceRenderHeaderRows();let n=this._footerRowDefs.reduce(e,!1);return n&&this._forceRenderFooterRows(),t||i||n}_switchDataSource(e){this._data=[],xt(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;xt(this.dataSource)?e=this.dataSource.connect(this):Pi(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=De(this.dataSource)),this._renderChangeSubscription=e.pipe(E(this._onDestroy)).subscribe(t=>{this._data=t||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,t)=>this._renderRow(this._headerRowOutlet,e,t)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,t)=>this._renderRow(this._footerRowOutlet,e,t)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,t){let i=Array.from(t?.columns||[]).map(l=>{let h=this._columnDefsByName.get(l);return h}),n=i.map(l=>l.sticky),r=i.map(l=>l.stickyEnd);this._stickyStyler.updateStickyColumns(e,n,r,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){let t=[];for(let i=0;i<e.viewContainer.length;i++){let n=e.viewContainer.get(i);t.push(n.rootNodes[0])}return t}_getRowDefs(e,t){if(this._rowDefs.length==1)return[this._rowDefs[0]];let i=[];if(this.multiTemplateDataRows)i=this._rowDefs.filter(n=>!n.when||n.when(t,e));else{let n=this._rowDefs.find(r=>r.when&&r.when(t,e))||this._defaultRowDef;n&&i.push(n)}return i.length,i}_getEmbeddedViewArgs(e,t){let i=e.rowDef,n={$implicit:e.data};return{templateRef:i.template,context:n,index:t}}_renderRow(e,t,i,n={}){let r=e.viewContainer.createEmbeddedView(t.template,n,i);return this._renderCellTemplateForItem(t,n),r}_renderCellTemplateForItem(e,t){for(let i of this._getCellTemplates(e))Be.mostRecentCellOutlet&&Be.mostRecentCellOutlet._viewContainer.createEmbeddedView(i,t);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){let e=this._rowOutlet.viewContainer;for(let t=0,i=e.length;t<i;t++){let r=e.get(t).context;r.count=i,r.first=t===0,r.last=t===i-1,r.even=t%2===0,r.odd=!r.even,this.multiTemplateDataRows?(r.dataIndex=this._renderRows[t].dataIndex,r.renderIndex=t):r.index=this._renderRows[t].dataIndex}}_getCellTemplates(e){return!e||!e.columns?[]:Array.from(e.columns,t=>{let i=this._columnDefsByName.get(t);return e.extractCellTemplate(i)})}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){let e=(t,i)=>t||i.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){let e=this._dir?this._dir.value:\"ltr\";this._stickyStyler=new Zt(this._isNativeHtmlTable,this.stickyCssClass,this._platform.isBrowser,this.needsPositionStickyOnElement,e,this._stickyPositioningListener,this._injector),(this._dir?this._dir.change:De()).pipe(E(this._onDestroy)).subscribe(t=>{this._stickyStyler.direction=t,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(t=>!t._table||t._table===this)}_updateNoDataRow(){let e=this._customNoDataRow||this._noDataRow;if(!e)return;let t=this._rowOutlet.viewContainer.length===0;if(t===this._isShowingNoDataRow)return;let i=this._noDataRowOutlet.viewContainer;if(t){let n=i.createEmbeddedView(e.templateRef),r=n.rootNodes[0];n.rootNodes.length===1&&r?.nodeType===this._document.ELEMENT_NODE&&(r.setAttribute(\"role\",\"row\"),r.classList.add(e._contentClassName))}else i.clear();this._isShowingNoDataRow=t,this._changeDetectorRef.markForCheck()}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"cdk-table\"],[\"table\",\"cdk-table\",\"\"]],contentQueries:function(t,i,n){if(t&1&&(G(n,Bt,5),G(n,$e,5),G(n,Lt,5),G(n,rt,5),G(n,ei,5)),t&2){let r;u(r=f())&&(i._noDataRow=r.first),u(r=f())&&(i._contentColumnDefs=r),u(r=f())&&(i._contentRowDefs=r),u(r=f())&&(i._contentHeaderRowDefs=r),u(r=f())&&(i._contentFooterRowDefs=r)}},hostAttrs:[1,\"cdk-table\"],hostVars:2,hostBindings:function(t,i){t&2&&R(\"cdk-table-fixed-layout\",i.fixedLayout)},inputs:{trackBy:\"trackBy\",dataSource:\"dataSource\",multiTemplateDataRows:[2,\"multiTemplateDataRows\",\"multiTemplateDataRows\",g],fixedLayout:[2,\"fixedLayout\",\"fixedLayout\",g]},outputs:{contentChanged:\"contentChanged\"},exportAs:[\"cdkTable\"],features:[B([{provide:pe,useExisting:a},{provide:nt,useClass:It},{provide:At,useValue:null}])],ngContentSelectors:jn,decls:5,vars:2,consts:[[\"role\",\"rowgroup\"],[\"headerRowOutlet\",\"\"],[\"rowOutlet\",\"\"],[\"noDataRowOutlet\",\"\"],[\"footerRowOutlet\",\"\"]],template:function(t,i){t&1&&(se(Hn),Q(0),Q(1,1),P(2,Qn,1,0),P(3,Gn,7,0)(4,Wn,4,0)),t&2&&(m(2),F(i._isServer?2:-1),m(),F(i._isNativeHtmlTable?3:4))},dependencies:[ni,ai,ri,oi],styles:[`.cdk-table-fixed-layout{table-layout:fixed}\n`],encapsulation:2})}return a})();function Ot(a,o){return a.concat(Array.from(o))}function Va(a,o){let e=o.toUpperCase(),t=a.viewContainer.element.nativeElement;for(;t;){let i=t.nodeType===1?t.nodeName:null;if(i===e)return t;if(i===\"TABLE\")break;t=t.parentNode}return null}var Ga=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({imports:[va]})}return a})();var $n=[[[\"caption\"]],[[\"colgroup\"],[\"col\"]],\"*\"],qn=[\"caption\",\"colgroup, col\",\"*\"];function Un(a,o){a&1&&Q(0,2)}function Kn(a,o){a&1&&(c(0,\"thead\",0),J(1,1),d(),c(2,\"tbody\",2),J(3,3)(4,4),d(),c(5,\"tfoot\",0),J(6,5),d())}function Xn(a,o){a&1&&J(0,1)(1,3)(2,4)(3,5)}var Wa=(()=>{class a extends si{stickyCssClass=\"mat-mdc-table-sticky\";needsPositionStickyOnElement=!1;static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275cmp=D({type:a,selectors:[[\"mat-table\"],[\"table\",\"mat-table\",\"\"]],hostAttrs:[1,\"mat-mdc-table\",\"mdc-data-table__table\"],hostVars:2,hostBindings:function(t,i){t&2&&R(\"mdc-table-fixed-layout\",i.fixedLayout)},exportAs:[\"matTable\"],features:[B([{provide:si,useExisting:a},{provide:pe,useExisting:a},{provide:nt,useClass:It},{provide:At,useValue:null}]),T],ngContentSelectors:qn,decls:5,vars:2,consts:[[\"role\",\"rowgroup\"],[\"headerRowOutlet\",\"\"],[\"role\",\"rowgroup\",1,\"mdc-data-table__content\"],[\"rowOutlet\",\"\"],[\"noDataRowOutlet\",\"\"],[\"footerRowOutlet\",\"\"]],template:function(t,i){t&1&&(se($n),Q(0),Q(1,1),P(2,Un,1,0),P(3,Kn,7,0)(4,Xn,4,0)),t&2&&(m(2),F(i._isServer?2:-1),m(),F(i._isNativeHtmlTable?3:4))},dependencies:[ni,ai,ri,oi],styles:[`.mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:var(--mat-table-header-container-height, 56px)}mat-row{min-height:var(--mat-table-row-item-container-height, 52px)}mat-footer-row{min-height:var(--mat-table-footer-container-height, 52px)}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color, var(--mat-sys-surface))}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell{text-align:right}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-header-headline-font, var(--mat-sys-title-small-font, Roboto, sans-serif));line-height:var(--mat-table-header-headline-line-height, var(--mat-sys-title-small-line-height));font-size:var(--mat-table-header-headline-size, var(--mat-sys-title-small-size, 14px));font-weight:var(--mat-table-header-headline-weight, var(--mat-sys-title-small-weight, 500))}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, var(--mat-sys-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-row-item-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-table-row-item-label-text-size, var(--mat-sys-body-medium-size, 14px));font-weight:var(--mat-table-row-item-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-footer-supporting-text-font, var(--mat-sys-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-footer-supporting-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-table-footer-supporting-text-size, var(--mat-sys-body-medium-size, 14px));font-weight:var(--mat-table-footer-supporting-text-weight, var(--mat-sys-body-medium-weight));letter-spacing:var(--mat-table-footer-supporting-text-tracking, var(--mat-sys-body-medium-tracking))}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking, var(--mat-sys-title-small-tracking));font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mat-mdc-header-cell{text-align:right}.mdc-data-table__row:last-child>.mat-mdc-header-cell{border-bottom:none}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-sys-body-medium-tracking));line-height:inherit}.mdc-data-table__row:last-child>.mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-sys-body-medium-tracking))}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}\n`],encapsulation:2})}return a})(),Ya=(()=>{class a extends Pt{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"matCellDef\",\"\"]],features:[B([{provide:Pt,useExisting:a}]),T]})}return a})(),$a=(()=>{class a extends Ft{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"matHeaderCellDef\",\"\"]],features:[B([{provide:Ft,useExisting:a}]),T]})}return a})();var qa=(()=>{class a extends $e{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"matColumnDef\",\"\"]],inputs:{name:[0,\"matColumnDef\",\"name\"]},features:[B([{provide:$e,useExisting:a},{provide:\"MAT_SORT_HEADER_COLUMN_DEF\",useExisting:a}]),T]})}return a})(),Ua=(()=>{class a extends ja{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"mat-header-cell\"],[\"th\",\"mat-header-cell\",\"\"]],hostAttrs:[\"role\",\"columnheader\",1,\"mat-mdc-header-cell\",\"mdc-data-table__header-cell\"],features:[T]})}return a})();var Ka=(()=>{class a extends Qa{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"mat-cell\"],[\"td\",\"mat-cell\",\"\"]],hostAttrs:[1,\"mat-mdc-cell\",\"mdc-data-table__cell\"],features:[T]})}return a})();var Xa=(()=>{class a extends rt{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"matHeaderRowDef\",\"\"]],inputs:{columns:[0,\"matHeaderRowDef\",\"columns\"],sticky:[2,\"matHeaderRowDefSticky\",\"sticky\",g]},features:[B([{provide:rt,useExisting:a}]),T]})}return a})();var Za=(()=>{class a extends Lt{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"matRowDef\",\"\"]],inputs:{columns:[0,\"matRowDefColumns\",\"columns\"],when:[0,\"matRowDefWhen\",\"when\"]},features:[B([{provide:Lt,useExisting:a}]),T]})}return a})(),Ja=(()=>{class a extends ti{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275cmp=D({type:a,selectors:[[\"mat-header-row\"],[\"tr\",\"mat-header-row\",\"\"]],hostAttrs:[\"role\",\"row\",1,\"mat-mdc-header-row\",\"mdc-data-table__header-row\"],exportAs:[\"matHeaderRow\"],features:[B([{provide:ti,useExisting:a}]),T],decls:1,vars:0,consts:[[\"cdkCellOutlet\",\"\"]],template:function(t,i){t&1&&J(0,0)},dependencies:[Be],encapsulation:2})}return a})();var en=(()=>{class a extends ii{static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275cmp=D({type:a,selectors:[[\"mat-row\"],[\"tr\",\"mat-row\",\"\"]],hostAttrs:[\"role\",\"row\",1,\"mat-mdc-row\",\"mdc-data-table__row\"],exportAs:[\"matRow\"],features:[B([{provide:ii,useExisting:a}]),T],decls:1,vars:0,consts:[[\"cdkCellOutlet\",\"\"]],template:function(t,i){t&1&&J(0,0)},dependencies:[Be],encapsulation:2})}return a})(),tn=(()=>{class a extends Bt{_contentClassName=\"mat-mdc-no-data-row\";static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"ng-template\",\"matNoDataRow\",\"\"]],features:[B([{provide:Bt,useExisting:a}]),T]})}return a})();var an=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({imports:[q,Ga,q]})}return a})(),Zn=9007199254740991,Nt=class extends _a{_data;_renderData=new Me([]);_filter=new Me(\"\");_internalPageChanges=new x;_renderChangesSubscription=null;filteredData;get data(){return this._data.value}set data(o){o=Array.isArray(o)?o:[],this._data.next(o),this._renderChangesSubscription||this._filterData(o)}get filter(){return this._filter.value}set filter(o){this._filter.next(o),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(o){this._sort=o,this._updateChangeSubscription()}_sort;get paginator(){return this._paginator}set paginator(o){this._paginator=o,this._updateChangeSubscription()}_paginator;sortingDataAccessor=(o,e)=>{let t=o[e];if(Ji(t)){let i=Number(t);return i<Zn?i:t}return t};sortData=(o,e)=>{let t=e.active,i=e.direction;return!t||i==\"\"?o:o.sort((n,r)=>{let l=this.sortingDataAccessor(n,t),h=this.sortingDataAccessor(r,t),O=typeof l,W=typeof h;O!==W&&(O===\"number\"&&(l+=\"\"),W===\"number\"&&(h+=\"\"));let U=0;return l!=null&&h!=null?l>h?U=1:l<h&&(U=-1):l!=null?U=1:h!=null&&(U=-1),U*(i==\"asc\"?1:-1)})};filterPredicate=(o,e)=>{let t=e.trim().toLowerCase();return Object.values(o).some(i=>`${i}`.toLowerCase().includes(t))};constructor(o=[]){super(),this._data=new Me(o),this._updateChangeSubscription()}_updateChangeSubscription(){let o=this._sort?re(this._sort.sortChange,this._sort.initialized):De(null),e=this._paginator?re(this._paginator.page,this._internalPageChanges,this._paginator.initialized):De(null),t=this._data,i=ut([t,this._filter]).pipe(Ie(([l])=>this._filterData(l))),n=ut([i,o]).pipe(Ie(([l])=>this._orderData(l))),r=ut([n,e]).pipe(Ie(([l])=>this._pageData(l)));this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=r.subscribe(l=>this._renderData.next(l))}_filterData(o){return this.filteredData=this.filter==null||this.filter===\"\"?o:o.filter(e=>this.filterPredicate(e,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(o){return this.sort?this.sortData(o.slice(),this.sort):o}_pageData(o){if(!this.paginator)return o;let e=this.paginator.pageIndex*this.paginator.pageSize;return o.slice(e,e+this.paginator.pageSize)}_updatePaginator(o){Promise.resolve().then(()=>{let e=this.paginator;if(e&&(e.length=o,e.pageIndex>0)){let t=Math.ceil(e.length/e.pageSize)-1||0,i=Math.min(e.pageIndex,t);i!==e.pageIndex&&(e.pageIndex=i,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=null}};var zt=class{pageNumber=1;pageSize=10;filter=\"\"};var nn=(()=>{class a{_animationsDisabled=ae();state=\"unchecked\";disabled=!1;appearance=\"full\";constructor(){}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-pseudo-checkbox\"]],hostAttrs:[1,\"mat-pseudo-checkbox\"],hostVars:12,hostBindings:function(t,i){t&2&&R(\"mat-pseudo-checkbox-indeterminate\",i.state===\"indeterminate\")(\"mat-pseudo-checkbox-checked\",i.state===\"checked\")(\"mat-pseudo-checkbox-disabled\",i.disabled)(\"mat-pseudo-checkbox-minimal\",i.appearance===\"minimal\")(\"mat-pseudo-checkbox-full\",i.appearance===\"full\")(\"_mat-animation-noopable\",i._animationsDisabled)},inputs:{state:\"state\",disabled:\"disabled\",appearance:\"appearance\"},decls:0,vars:0,template:function(t,i){},styles:[`.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\n`],encapsulation:2,changeDetection:0})}return a})();var eo=[\"text\"],to=[[[\"mat-icon\"]],\"*\"],io=[\"mat-icon\",\"*\"];function ao(a,o){if(a&1&&j(0,\"mat-pseudo-checkbox\",1),a&2){let e=v();b(\"disabled\",e.disabled)(\"state\",e.selected?\"checked\":\"unchecked\")}}function no(a,o){if(a&1&&j(0,\"mat-pseudo-checkbox\",3),a&2){let e=v();b(\"disabled\",e.disabled)}}function oo(a,o){if(a&1&&(c(0,\"span\",4),p(1),d()),a&2){let e=v();m(),te(\"(\",e.group.label,\")\")}}var ci=new k(\"MAT_OPTION_PARENT_COMPONENT\"),di=new k(\"MatOptgroup\");var li=class{source;isUserInput;constructor(o,e=!1){this.source=o,this.isUserInput=e}},Ce=(()=>{class a{_element=s(S);_changeDetectorRef=s($);_parent=s(ci,{optional:!0});group=s(di,{optional:!0});_signalDisableRipple=!1;_selected=!1;_active=!1;_mostRecentViewValue=\"\";get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}value;id=s(ce).getId(\"mat-option-\");get disabled(){return this.group&&this.group.disabled||this._disabled()}set disabled(e){this._disabled.set(e)}_disabled=Ee(!1);get disableRipple(){return this._signalDisableRipple?this._parent.disableRipple():!!this._parent?.disableRipple}get hideSingleSelectionIndicator(){return!!(this._parent&&this._parent.hideSingleSelectionIndicator)}onSelectionChange=new M;_text;_stateChanges=new x;constructor(){let e=s(vt);e.load(Ct),e.load(ta),this._signalDisableRipple=!!this._parent&&Vi(this._parent.disableRipple)}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||\"\").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,t){let i=this._getHostElement();typeof i.focus==\"function\"&&i.focus(t)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(e.keyCode===13||e.keyCode===32)&&!ie(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=this.multiple?!this._selected:!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?\"-1\":\"0\"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){let e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new li(this,e))}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-option\"]],viewQuery:function(t,i){if(t&1&&A(eo,7),t&2){let n;u(n=f())&&(i._text=n.first)}},hostAttrs:[\"role\",\"option\",1,\"mat-mdc-option\",\"mdc-list-item\"],hostVars:11,hostBindings:function(t,i){t&1&&y(\"click\",function(){return i._selectViaInteraction()})(\"keydown\",function(r){return i._handleKeydown(r)}),t&2&&(ft(\"id\",i.id),I(\"aria-selected\",i.selected)(\"aria-disabled\",i.disabled.toString()),R(\"mdc-list-item--selected\",i.selected)(\"mat-mdc-option-multiple\",i.multiple)(\"mat-mdc-option-active\",i.active)(\"mdc-list-item--disabled\",i.disabled))},inputs:{value:\"value\",id:\"id\",disabled:[2,\"disabled\",\"disabled\",g]},outputs:{onSelectionChange:\"onSelectionChange\"},exportAs:[\"matOption\"],ngContentSelectors:io,decls:8,vars:5,consts:[[\"text\",\"\"],[\"aria-hidden\",\"true\",1,\"mat-mdc-option-pseudo-checkbox\",3,\"disabled\",\"state\"],[1,\"mdc-list-item__primary-text\"],[\"state\",\"checked\",\"aria-hidden\",\"true\",\"appearance\",\"minimal\",1,\"mat-mdc-option-pseudo-checkbox\",3,\"disabled\"],[1,\"cdk-visually-hidden\"],[\"aria-hidden\",\"true\",\"mat-ripple\",\"\",1,\"mat-mdc-option-ripple\",\"mat-focus-indicator\",3,\"matRippleTrigger\",\"matRippleDisabled\"]],template:function(t,i){t&1&&(se(to),P(0,ao,1,2,\"mat-pseudo-checkbox\",1),Q(1),c(2,\"span\",2,0),Q(4,1),d(),P(5,no,1,1,\"mat-pseudo-checkbox\",3),P(6,oo,2,1,\"span\",4),j(7,\"div\",5)),t&2&&(F(i.multiple?0:-1),m(5),F(!i.multiple&&i.selected&&!i.hideSingleSelectionIndicator?5:-1),m(),F(i.group&&i.group._inert?6:-1),m(),b(\"matRippleTrigger\",i._getHostElement())(\"matRippleDisabled\",i.disabled||i.disableRipple))},dependencies:[nn,it],styles:[`.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:\"\"}\n`],encapsulation:2,changeDetection:0})}return a})();function on(a,o,e){if(e.length){let t=o.toArray(),i=e.toArray(),n=0;for(let r=0;r<a+1;r++)t[r].group&&t[r].group===i[n]&&n++;return n}return 0}function rn(a,o,e,t){return a<e?a:a+o>e+t?Math.max(0,a-t+o):e}var sn=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({imports:[q]})}return a})();var mi=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({imports:[ha,q,sn,Ce]})}return a})();var co=[\"trigger\"],mo=[\"panel\"],ho=[[[\"mat-select-trigger\"]],\"*\"],po=[\"mat-select-trigger\",\"*\"];function uo(a,o){if(a&1&&(c(0,\"span\",4),p(1),d()),a&2){let e=v();m(),ee(e.placeholder)}}function fo(a,o){a&1&&Q(0)}function _o(a,o){if(a&1&&(c(0,\"span\",11),p(1),d()),a&2){let e=v(2);m(),ee(e.triggerValue)}}function go(a,o){if(a&1&&(c(0,\"span\",5),P(1,fo,1,0)(2,_o,2,1,\"span\",11),d()),a&2){let e=v();m(),F(e.customTrigger?1:2)}}function bo(a,o){if(a&1){let e=Y();c(0,\"div\",12,1),y(\"keydown\",function(i){C(e);let n=v();return w(n._handleKeydown(i))}),Q(2,1),d()}if(a&2){let e=v();He(gt(\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open \",e._getPanelTheme())),R(\"mat-select-panel-animations-enabled\",!e._animationsDisabled),b(\"ngClass\",e.panelClass),I(\"id\",e.id+\"-panel\")(\"aria-multiselectable\",e.multiple)(\"aria-label\",e.ariaLabel||null)(\"aria-labelledby\",e._getPanelAriaLabelledby())}}var hi=new k(\"mat-select-scroll-strategy\",{providedIn:\"root\",factory:()=>{let a=s(L);return()=>We(a)}});function dn(a){let o=s(L);return()=>We(o)}var mn=new k(\"MAT_SELECT_CONFIG\"),hn={provide:hi,deps:[],useFactory:dn},pn=new k(\"MatSelectTrigger\"),Vt=class{source;value;constructor(o,e){this.source=o,this.value=e}},st=(()=>{class a{_viewportRuler=s(Ge);_changeDetectorRef=s($);_elementRef=s(S);_dir=s(de,{optional:!0});_idGenerator=s(ce);_renderer=s(Ae);_parentFormField=s(Ea,{optional:!0});ngControl=s(Ra,{self:!0,optional:!0});_liveAnnouncer=s(oa);_defaultOptions=s(mn,{optional:!0});_animationsDisabled=ae();_initialized=new x;_cleanupDetach;options;optionGroups;customTrigger;_positions=[{originX:\"start\",originY:\"bottom\",overlayX:\"start\",overlayY:\"top\"},{originX:\"end\",originY:\"bottom\",overlayX:\"end\",overlayY:\"top\"},{originX:\"start\",originY:\"top\",overlayX:\"start\",overlayY:\"bottom\",panelClass:\"mat-mdc-select-panel-above\"},{originX:\"end\",originY:\"top\",overlayX:\"end\",overlayY:\"bottom\",panelClass:\"mat-mdc-select-panel-above\"}];_scrollOptionIntoView(e){let t=this.options.toArray()[e];if(t){let i=this.panel.nativeElement,n=on(e,this.options,this.optionGroups),r=t._getHostElement();e===0&&n===1?i.scrollTop=0:i.scrollTop=rn(r.offsetTop,r.offsetHeight,i.scrollTop,i.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new Vt(this,e)}_scrollStrategyFactory=s(hi);_panelOpen=!1;_compareWith=(e,t)=>e===t;_uid=this._idGenerator.getId(\"mat-select-\");_triggerAriaLabelledBy=null;_previousControl;_destroy=new x;_errorStateTracker;stateChanges=new x;disableAutomaticLabeling=!0;userAriaDescribedBy;_selectionModel;_keyManager;_preferredOverlayOrigin;_overlayWidth;_onChange=()=>{};_onTouched=()=>{};_valueId=this._idGenerator.getId(\"mat-select-value-\");_scrollStrategy;_overlayPanelClass=this._defaultOptions?.overlayPanelClass||\"\";get focused(){return this._focused||this._panelOpen}_focused=!1;controlType=\"mat-select\";trigger;panel;_overlayDir;panelClass;disabled=!1;get disableRipple(){return this._disableRipple()}set disableRipple(e){this._disableRipple.set(e)}_disableRipple=Ee(!1);tabIndex=0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}_placeholder;get required(){return this._required??this.ngControl?.control?.hasValidator(Ta.required)??!1}set required(e){this._required=e,this.stateChanges.next()}_required;get multiple(){return this._multiple}set multiple(e){this._selectionModel,this._multiple=e}_multiple=!1;disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1;get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}_value;ariaLabel=\"\";ariaLabelledby;get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}typeaheadDebounceInterval;sortComparator;get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}_id;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<\"u\"?this._defaultOptions.panelWidth:\"auto\";canSelectNullableOptions=this._defaultOptions?.canSelectNullableOptions??!1;optionSelectionChanges=Ne(()=>{let e=this.options;return e?e.changes.pipe(he(e),Ze(()=>re(...e.map(t=>t.onSelectionChange)))):this._initialized.pipe(Ze(()=>this.optionSelectionChanges))});openedChange=new M;_openedStream=this.openedChange.pipe(ue(e=>e),Ie(()=>{}));_closedStream=this.openedChange.pipe(ue(e=>!e),Ie(()=>{}));selectionChange=new M;valueChange=new M;constructor(){let e=s(Aa),t=s(Sa,{optional:!0}),i=s(Ma,{optional:!0}),n=s(new et(\"tabindex\"),{optional:!0});this.ngControl&&(this.ngControl.valueAccessor=this),this._defaultOptions?.typeaheadDebounceInterval!=null&&(this.typeaheadDebounceInterval=this._defaultOptions.typeaheadDebounceInterval),this._errorStateTracker=new Pa(e,this.ngControl,i,t,this.stateChanges),this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=n==null?0:parseInt(n)||0,this.id=this.id}ngOnInit(){this._selectionModel=new xa(this.multiple),this.stateChanges.next(),this._viewportRuler.change().pipe(E(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(E(this._destroy)).subscribe(e=>{e.added.forEach(t=>t.select()),e.removed.forEach(t=>t.deselect())}),this.options.changes.pipe(he(null),E(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){let e=this._getTriggerAriaLabelledby(),t=this.ngControl;if(e!==this._triggerAriaLabelledBy){let i=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?i.setAttribute(\"aria-labelledby\",e):i.removeAttribute(\"aria-labelledby\")}t&&(this._previousControl!==t.control&&(this._previousControl!==void 0&&t.disabled!==null&&t.disabled!==this.disabled&&(this.disabled=t.disabled),this._previousControl=t.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval)}ngOnDestroy(){this._cleanupDetach?.(),this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._cleanupDetach?.(),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._overlayDir.positionChange.pipe(ze(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()}),this._overlayDir.attachOverlay(),this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!0)))}_trackedModal=null;_applyModalPanelOwnership(){let e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');if(!e)return;let t=`${this.id}-panel`;this._trackedModal&&$t(this._trackedModal,\"aria-owns\",t),la(e,\"aria-owns\",t),this._trackedModal=e}_clearFromModal(){if(!this._trackedModal)return;let e=`${this.id}-panel`;$t(this._trackedModal,\"aria-owns\",e),this._trackedModal=null}close(){this._panelOpen&&(this._panelOpen=!1,this._exitAndDetach(),this._keyManager.withHorizontalOrientation(this._isRtl()?\"rtl\":\"ltr\"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!1)))}_exitAndDetach(){if(this._animationsDisabled||!this.panel){this._detachOverlay();return}this._cleanupDetach?.(),this._cleanupDetach=()=>{t(),clearTimeout(i),this._cleanupDetach=void 0};let e=this.panel.nativeElement,t=this._renderer.listen(e,\"animationend\",n=>{n.animationName===\"_mat-select-exit\"&&(this._cleanupDetach?.(),this._detachOverlay())}),i=setTimeout(()=>{this._cleanupDetach?.(),this._detachOverlay()},200);e.classList.add(\"mat-select-panel-exit\")}_detachOverlay(){this._overlayDir.detachOverlay(),this._changeDetectorRef.markForCheck()}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return\"\";if(this._multiple){let e=this._selectionModel.selected.map(t=>t.viewValue);return this._isRtl()&&e.reverse(),e.join(\", \")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return this._dir?this._dir.value===\"rtl\":!1}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){let t=e.keyCode,i=t===40||t===38||t===37||t===39,n=t===13||t===32,r=this._keyManager;if(!r.isTyping()&&n&&!ie(e)||(this.multiple||e.altKey)&&i)e.preventDefault(),this.open();else if(!this.multiple){let l=this.selected;r.onKeydown(e);let h=this.selected;h&&l!==h&&this._liveAnnouncer.announce(h.viewValue,1e4)}}_handleOpenKeydown(e){let t=this._keyManager,i=e.keyCode,n=i===40||i===38,r=t.isTyping();if(n&&e.altKey)e.preventDefault(),this.close();else if(!r&&(i===13||i===32)&&t.activeItem&&!ie(e))e.preventDefault(),t.activeItem._selectViaInteraction();else if(!r&&this._multiple&&i===65&&e.ctrlKey){e.preventDefault();let l=this.options.some(h=>!h.disabled&&!h.selected);this.options.forEach(h=>{h.disabled||(l?h.select():h.deselect())})}else{let l=t.activeItemIndex;t.onKeydown(e),this._multiple&&n&&e.shiftKey&&t.activeItem&&t.activeItemIndex!==l&&t.activeItem._selectViaInteraction()}}_handleOverlayKeydown(e){e.keyCode===27&&!ie(e)&&(e.preventDefault(),this.close())}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:\"\"}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(t=>t.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(t=>this._selectOptionByValue(t)),this._sortValues();else{let t=this._selectOptionByValue(e);t?this._keyManager.updateActiveItem(t):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){let t=this.options.find(i=>{if(this._selectionModel.isSelected(i))return!1;try{return(i.value!=null||this.canSelectNullableOptions)&&this._compareWith(i.value,e)}catch{return!1}});return t&&this._selectionModel.select(t),t}_assignValue(e){return e!==this._value||this._multiple&&Array.isArray(e)?(this.options&&this._setSelectionByValue(e),this._value=e,!0):!1}_skipPredicate=e=>this.panelOpen?!1:e.disabled;_getOverlayWidth(e){return this.panelWidth===\"auto\"?(e instanceof Ut?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:this.panelWidth===null?\"\":this.panelWidth}_syncParentProperties(){if(this.options)for(let e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new ra(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?\"rtl\":\"ltr\").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys([\"shiftKey\"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){let e=re(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(E(e)).subscribe(t=>{this._onSelect(t.source,t.isUserInput),t.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),re(...this.options.map(t=>t._stateChanges)).pipe(E(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,t){let i=this._selectionModel.isSelected(e);!this.canSelectNullableOptions&&e.value==null&&!this._multiple?(e.deselect(),this._selectionModel.clear(),this.value!=null&&this._propagateChanges(e.value)):(i!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),t&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),t&&this.focus())),i!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){let e=this.options.toArray();this._selectionModel.sort((t,i)=>this.sortComparator?this.sortComparator(t,i,e):e.indexOf(t)-e.indexOf(i)),this.stateChanges.next()}}_propagateChanges(e){let t;this.multiple?t=this.selected.map(i=>i.value):t=this.selected?this.selected.value:e,this._value=t,this.valueChange.emit(t),this._onChange(t),this.selectionChange.emit(this._getChangeEvent(t)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let t=0;t<this.options.length;t++)if(!this.options.get(t).disabled){e=t;break}this._keyManager.setActiveItem(e)}else this._keyManager.setActiveItem(this._selectionModel.selected[0])}_canOpen(){return!this._panelOpen&&!this.disabled&&this.options?.length>0&&!!this._overlayDir}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId()||null,t=e?e+\" \":\"\";return this.ariaLabelledby?t+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId()||\"\";return this.ariaLabelledby&&(e+=\" \"+this.ariaLabelledby),e||(e=this._valueId),e}get describedByIds(){return this._elementRef.nativeElement.getAttribute(\"aria-describedby\")?.split(\" \")||[]}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute(\"aria-describedby\",e.join(\" \")):this._elementRef.nativeElement.removeAttribute(\"aria-describedby\")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-select\"]],contentQueries:function(t,i,n){if(t&1&&(G(n,pn,5),G(n,Ce,5),G(n,di,5)),t&2){let r;u(r=f())&&(i.customTrigger=r.first),u(r=f())&&(i.options=r),u(r=f())&&(i.optionGroups=r)}},viewQuery:function(t,i){if(t&1&&(A(co,5),A(mo,5),A(Kt,5)),t&2){let n;u(n=f())&&(i.trigger=n.first),u(n=f())&&(i.panel=n.first),u(n=f())&&(i._overlayDir=n.first)}},hostAttrs:[\"role\",\"combobox\",\"aria-haspopup\",\"listbox\",1,\"mat-mdc-select\"],hostVars:19,hostBindings:function(t,i){t&1&&y(\"keydown\",function(r){return i._handleKeydown(r)})(\"focus\",function(){return i._onFocus()})(\"blur\",function(){return i._onBlur()}),t&2&&(I(\"id\",i.id)(\"tabindex\",i.disabled?-1:i.tabIndex)(\"aria-controls\",i.panelOpen?i.id+\"-panel\":null)(\"aria-expanded\",i.panelOpen)(\"aria-label\",i.ariaLabel||null)(\"aria-required\",i.required.toString())(\"aria-disabled\",i.disabled.toString())(\"aria-invalid\",i.errorState)(\"aria-activedescendant\",i._getAriaActiveDescendant()),R(\"mat-mdc-select-disabled\",i.disabled)(\"mat-mdc-select-invalid\",i.errorState)(\"mat-mdc-select-required\",i.required)(\"mat-mdc-select-empty\",i.empty)(\"mat-mdc-select-multiple\",i.multiple))},inputs:{userAriaDescribedBy:[0,\"aria-describedby\",\"userAriaDescribedBy\"],panelClass:\"panelClass\",disabled:[2,\"disabled\",\"disabled\",g],disableRipple:[2,\"disableRipple\",\"disableRipple\",g],tabIndex:[2,\"tabIndex\",\"tabIndex\",e=>e==null?0:le(e)],hideSingleSelectionIndicator:[2,\"hideSingleSelectionIndicator\",\"hideSingleSelectionIndicator\",g],placeholder:\"placeholder\",required:[2,\"required\",\"required\",g],multiple:[2,\"multiple\",\"multiple\",g],disableOptionCentering:[2,\"disableOptionCentering\",\"disableOptionCentering\",g],compareWith:\"compareWith\",value:\"value\",ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],errorStateMatcher:\"errorStateMatcher\",typeaheadDebounceInterval:[2,\"typeaheadDebounceInterval\",\"typeaheadDebounceInterval\",le],sortComparator:\"sortComparator\",id:\"id\",panelWidth:\"panelWidth\",canSelectNullableOptions:[2,\"canSelectNullableOptions\",\"canSelectNullableOptions\",g]},outputs:{openedChange:\"openedChange\",_openedStream:\"opened\",_closedStream:\"closed\",selectionChange:\"selectionChange\",valueChange:\"valueChange\"},exportAs:[\"matSelect\"],features:[B([{provide:Oa,useExisting:a},{provide:ci,useExisting:a}]),ye],ngContentSelectors:po,decls:11,vars:9,consts:[[\"fallbackOverlayOrigin\",\"cdkOverlayOrigin\",\"trigger\",\"\"],[\"panel\",\"\"],[\"cdk-overlay-origin\",\"\",1,\"mat-mdc-select-trigger\",3,\"click\"],[1,\"mat-mdc-select-value\"],[1,\"mat-mdc-select-placeholder\",\"mat-mdc-select-min-line\"],[1,\"mat-mdc-select-value-text\"],[1,\"mat-mdc-select-arrow-wrapper\"],[1,\"mat-mdc-select-arrow\"],[\"viewBox\",\"0 0 24 24\",\"width\",\"24px\",\"height\",\"24px\",\"focusable\",\"false\",\"aria-hidden\",\"true\"],[\"d\",\"M7 10l5 5 5-5z\"],[\"cdk-connected-overlay\",\"\",\"cdkConnectedOverlayLockPosition\",\"\",\"cdkConnectedOverlayHasBackdrop\",\"\",\"cdkConnectedOverlayBackdropClass\",\"cdk-overlay-transparent-backdrop\",3,\"detach\",\"backdropClick\",\"overlayKeydown\",\"cdkConnectedOverlayDisableClose\",\"cdkConnectedOverlayPanelClass\",\"cdkConnectedOverlayScrollStrategy\",\"cdkConnectedOverlayOrigin\",\"cdkConnectedOverlayPositions\",\"cdkConnectedOverlayWidth\",\"cdkConnectedOverlayFlexibleDimensions\"],[1,\"mat-mdc-select-min-line\"],[\"role\",\"listbox\",\"tabindex\",\"-1\",3,\"keydown\",\"ngClass\"]],template:function(t,i){if(t&1){let n=Y();se(ho),c(0,\"div\",2,0),y(\"click\",function(){return C(n),w(i.open())}),c(3,\"div\",3),P(4,uo,2,1,\"span\",4)(5,go,3,1,\"span\",5),d(),c(6,\"div\",6)(7,\"div\",7),Oe(),c(8,\"svg\",8),j(9,\"path\",9),d()()()(),N(10,bo,3,10,\"ng-template\",10),y(\"detach\",function(){return C(n),w(i.close())})(\"backdropClick\",function(){return C(n),w(i.close())})(\"overlayKeydown\",function(l){return C(n),w(i._handleOverlayKeydown(l))})}if(t&2){let n=Le(1);m(3),I(\"id\",i._valueId),m(),F(i.empty?4:5),m(6),b(\"cdkConnectedOverlayDisableClose\",!0)(\"cdkConnectedOverlayPanelClass\",i._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\",i._scrollStrategy)(\"cdkConnectedOverlayOrigin\",i._preferredOverlayOrigin||n)(\"cdkConnectedOverlayPositions\",i._positions)(\"cdkConnectedOverlayWidth\",i._overlayWidth)(\"cdkConnectedOverlayFlexibleDimensions\",!0)}},dependencies:[Ut,Kt,bt],styles:[`@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\n`],encapsulation:2,changeDetection:0})}return a})();var lt=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({providers:[hn],imports:[Ye,mi,q,Tt,Fa,mi,q]})}return a})();var yo=[\"tooltip\"],pi=20;var ui=new k(\"mat-tooltip-scroll-strategy\",{providedIn:\"root\",factory:()=>{let a=s(L);return()=>We(a,{scrollThrottle:pi})}});function _n(a){let o=s(L);return()=>We(o,{scrollThrottle:pi})}var gn={provide:ui,deps:[],useFactory:_n};function bn(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}var yn=new k(\"mat-tooltip-default-options\",{providedIn:\"root\",factory:bn});var un=\"tooltip-panel\",fn=Zi({passive:!0}),vo=8,Co=8,wo=24,Do=200,ct=(()=>{class a{_elementRef=s(S);_ngZone=s(xe);_platform=s(ve);_ariaDescriber=s(ca);_focusMonitor=s(tt);_dir=s(de);_injector=s(L);_viewContainerRef=s(fe);_animationsDisabled=ae();_defaultOptions=s(yn,{optional:!0});_overlayRef;_tooltipInstance;_overlayPanelClass;_portal;_position=\"below\";_positionAtOrigin=!1;_disabled=!1;_tooltipClass;_viewInitialized=!1;_pointerExitEventsInitialized=!1;_tooltipComponent=vn;_viewportMargin=8;_currentPosition;_cssClassPrefix=\"mat-mdc\";_ariaDescriptionPending;_dirSubscribed=!1;get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=qt(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){let t=qt(e);this._disabled!==t&&(this._disabled=t,t?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Qe(e)}_showDelay;get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Qe(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}_hideDelay;touchGestures=\"auto\";get message(){return this._message}set message(e){let t=this._message;this._message=e!=null?String(e).trim():\"\",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(t)}_message=\"\";get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}_passiveListeners=[];_touchstartTimeout=null;_destroyed=new x;_isDestroyed=!1;constructor(){let e=this._defaultOptions;e&&(this._showDelay=e.showDelay,this._hideDelay=e.hideDelay,e.position&&(this.position=e.position),e.positionAtOrigin&&(this.positionAtOrigin=e.positionAtOrigin),e.touchGestures&&(this.touchGestures=e.touchGestures),e.tooltipClass&&(this.tooltipClass=e.tooltipClass)),this._viewportMargin=vo}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(E(this._destroyed)).subscribe(e=>{e?e===\"keyboard\"&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){let e=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([t,i])=>{e.removeEventListener(t,i,fn)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0,this._ariaDescriber.removeDescription(e,this.message,\"tooltip\"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,t){if(this.disabled||!this.message||this._isTooltipVisible()){this._tooltipInstance?._cancelPendingAnimations();return}let i=this._createOverlay(t);this._detach(),this._portal=this._portal||new at(this._tooltipComponent,this._viewContainerRef);let n=this._tooltipInstance=i.attach(this._portal).instance;n._triggerElement=this._elementRef.nativeElement,n._mouseLeaveHideDelay=this._hideDelay,n.afterHidden().pipe(E(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),n.show(e)}hide(e=this.hideDelay){let t=this._tooltipInstance;t&&(t.isVisible()?t.hide(e):(t._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){let r=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&r._origin instanceof S)return this._overlayRef;this._detach()}let t=this._injector.get(ba).getAncestorScrollContainers(this._elementRef),i=`${this._cssClassPrefix}-${un}`,n=ka(this._injector,this.positionAtOrigin?e||this._elementRef:this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(t);return n.positionChanges.pipe(E(this._destroyed)).subscribe(r=>{this._updateCurrentPositionClass(r.connectionPair),this._tooltipInstance&&r.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=Mt(this._injector,{direction:this._dir,positionStrategy:n,panelClass:this._overlayPanelClass?[...this._overlayPanelClass,i]:i,scrollStrategy:this._injector.get(ui)(),disableAnimations:this._animationsDisabled}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(E(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(E(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(E(this._destroyed)).subscribe(r=>{this._isTooltipVisible()&&r.keyCode===27&&!ie(r)&&(r.preventDefault(),r.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._dirSubscribed||(this._dirSubscribed=!0,this._dir.change.pipe(E(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){let t=e.getConfig().positionStrategy,i=this._getOrigin(),n=this._getOverlayPosition();t.withPositions([this._addOffset(X(X({},i.main),n.main)),this._addOffset(X(X({},i.fallback),n.fallback))])}_addOffset(e){let t=Co,i=!this._dir||this._dir.value==\"ltr\";return e.originY===\"top\"?e.offsetY=-t:e.originY===\"bottom\"?e.offsetY=t:e.originX===\"start\"?e.offsetX=i?-t:t:e.originX===\"end\"&&(e.offsetX=i?t:-t),e}_getOrigin(){let e=!this._dir||this._dir.value==\"ltr\",t=this.position,i;t==\"above\"||t==\"below\"?i={originX:\"center\",originY:t==\"above\"?\"top\":\"bottom\"}:t==\"before\"||t==\"left\"&&e||t==\"right\"&&!e?i={originX:\"start\",originY:\"center\"}:(t==\"after\"||t==\"right\"&&e||t==\"left\"&&!e)&&(i={originX:\"end\",originY:\"center\"});let{x:n,y:r}=this._invertPosition(i.originX,i.originY);return{main:i,fallback:{originX:n,originY:r}}}_getOverlayPosition(){let e=!this._dir||this._dir.value==\"ltr\",t=this.position,i;t==\"above\"?i={overlayX:\"center\",overlayY:\"bottom\"}:t==\"below\"?i={overlayX:\"center\",overlayY:\"top\"}:t==\"before\"||t==\"left\"&&e||t==\"right\"&&!e?i={overlayX:\"end\",overlayY:\"center\"}:(t==\"after\"||t==\"right\"&&e||t==\"left\"&&!e)&&(i={overlayX:\"start\",overlayY:\"center\"});let{x:n,y:r}=this._invertPosition(i.overlayX,i.overlayY);return{main:i,fallback:{overlayX:n,overlayY:r}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),Z(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e,this._tooltipInstance._markForCheck())}_invertPosition(e,t){return this.position===\"above\"||this.position===\"below\"?t===\"top\"?t=\"bottom\":t===\"bottom\"&&(t=\"top\"):e===\"end\"?e=\"start\":e===\"start\"&&(e=\"end\"),{x:e,y:t}}_updateCurrentPositionClass(e){let{overlayY:t,originX:i,originY:n}=e,r;if(t===\"center\"?this._dir&&this._dir.value===\"rtl\"?r=i===\"end\"?\"left\":\"right\":r=i===\"start\"?\"left\":\"right\":r=t===\"bottom\"&&n===\"top\"?\"above\":\"below\",r!==this._currentPosition){let l=this._overlayRef;if(l){let h=`${this._cssClassPrefix}-${un}-`;l.removePanelClass(h+this._currentPosition),l.addPanelClass(h+r)}this._currentPosition=r}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push([\"mouseenter\",e=>{this._setupPointerExitEventsIfNeeded();let t;e.x!==void 0&&e.y!==void 0&&(t=e),this.show(void 0,t)}]):this.touchGestures!==\"off\"&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push([\"touchstart\",e=>{let t=e.targetTouches?.[0],i=t?{x:t.clientX,y:t.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout);let n=500;this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,i)},this._defaultOptions?.touchLongPressShowDelay??n)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;let e=[];if(this._platformSupportsMouseEvents())e.push([\"mouseleave\",t=>{let i=t.relatedTarget;(!i||!this._overlayRef?.overlayElement.contains(i))&&this.hide()}],[\"wheel\",t=>this._wheelListener(t)]);else if(this.touchGestures!==\"off\"){this._disableNativeGesturesIfNecessary();let t=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions?.touchendHideDelay)};e.push([\"touchend\",t],[\"touchcancel\",t])}this._addListeners(e),this._passiveListeners.push(...e)}_addListeners(e){e.forEach(([t,i])=>{this._elementRef.nativeElement.addEventListener(t,i,fn)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(e){if(this._isTooltipVisible()){let t=this._injector.get(Ve).elementFromPoint(e.clientX,e.clientY),i=this._elementRef.nativeElement;t!==i&&!i.contains(t)&&this.hide()}}_disableNativeGesturesIfNecessary(){let e=this.touchGestures;if(e!==\"off\"){let t=this._elementRef.nativeElement,i=t.style;(e===\"on\"||t.nodeName!==\"INPUT\"&&t.nodeName!==\"TEXTAREA\")&&(i.userSelect=i.msUserSelect=i.webkitUserSelect=i.MozUserSelect=\"none\"),(e===\"on\"||!t.draggable)&&(i.webkitUserDrag=\"none\"),i.touchAction=\"none\",i.webkitTapHighlightColor=\"transparent\"}}_syncAriaDescription(e){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,e,\"tooltip\"),this._isDestroyed||Z({write:()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,\"tooltip\")}},{injector:this._injector}))}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"matTooltip\",\"\"]],hostAttrs:[1,\"mat-mdc-tooltip-trigger\"],hostVars:2,hostBindings:function(t,i){t&2&&R(\"mat-mdc-tooltip-disabled\",i.disabled)},inputs:{position:[0,\"matTooltipPosition\",\"position\"],positionAtOrigin:[0,\"matTooltipPositionAtOrigin\",\"positionAtOrigin\"],disabled:[0,\"matTooltipDisabled\",\"disabled\"],showDelay:[0,\"matTooltipShowDelay\",\"showDelay\"],hideDelay:[0,\"matTooltipHideDelay\",\"hideDelay\"],touchGestures:[0,\"matTooltipTouchGestures\",\"touchGestures\"],message:[0,\"matTooltip\",\"message\"],tooltipClass:[0,\"matTooltipClass\",\"tooltipClass\"]},exportAs:[\"matTooltip\"]})}return a})(),vn=(()=>{class a{_changeDetectorRef=s($);_elementRef=s(S);_isMultiline=!1;message;tooltipClass;_showTimeoutId;_hideTimeoutId;_triggerElement;_mouseLeaveHideDelay;_animationsDisabled=ae();_tooltip;_closeOnInteraction=!1;_isVisible=!1;_onHide=new x;_showAnimation=\"mat-mdc-tooltip-show\";_hideAnimation=\"mat-mdc-tooltip-hide\";constructor(){}show(e){this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){let e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>wo&&e.width>=Do}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){let t=this._tooltip.nativeElement,i=this._showAnimation,n=this._hideAnimation;if(t.classList.remove(e?n:i),t.classList.add(e?i:n),this._isVisible!==e&&(this._isVisible=e,this._changeDetectorRef.markForCheck()),e&&!this._animationsDisabled&&typeof getComputedStyle==\"function\"){let r=getComputedStyle(t);(r.getPropertyValue(\"animation-duration\")===\"0s\"||r.getPropertyValue(\"animation-name\")===\"none\")&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(t.classList.add(\"_mat-animation-noopable\"),this._finalizeAnimation(e))}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-tooltip-component\"]],viewQuery:function(t,i){if(t&1&&A(yo,7),t&2){let n;u(n=f())&&(i._tooltip=n.first)}},hostAttrs:[\"aria-hidden\",\"true\"],hostBindings:function(t,i){t&1&&y(\"mouseleave\",function(r){return i._handleMouseLeave(r)})},decls:4,vars:4,consts:[[\"tooltip\",\"\"],[1,\"mdc-tooltip\",\"mat-mdc-tooltip\",3,\"animationend\",\"ngClass\"],[1,\"mat-mdc-tooltip-surface\",\"mdc-tooltip__surface\"]],template:function(t,i){if(t&1){let n=Y();c(0,\"div\",1,0),y(\"animationend\",function(l){return C(n),w(i._handleAnimationEnd(l))}),c(2,\"div\",2),p(3),d()()}t&2&&(R(\"mdc-tooltip--multiline\",i._isMultiline),b(\"ngClass\",i.tooltipClass),m(3),ee(i.message))},dependencies:[bt],styles:[`.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:\"\";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\"\";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n`],encapsulation:2,changeDetection:0})}return a})(),dt=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({providers:[gn],imports:[Yt,Ye,q,q,Tt]})}return a})();function ko(a,o){if(a&1&&(c(0,\"mat-option\",17),p(1),d()),a&2){let e=o.$implicit;b(\"value\",e),m(),te(\" \",e,\" \")}}function xo(a,o){if(a&1){let e=Y();c(0,\"mat-form-field\",14)(1,\"mat-select\",16,0),y(\"selectionChange\",function(i){C(e);let n=v(2);return w(n._changePageSize(i.value))}),Pe(3,ko,2,2,\"mat-option\",17,Je),d(),c(5,\"div\",18),y(\"click\",function(){C(e);let i=Le(2);return w(i.open())}),d()()}if(a&2){let e=v(2);b(\"appearance\",e._formFieldAppearance)(\"color\",e.color),m(),b(\"value\",e.pageSize)(\"disabled\",e.disabled)(\"aria-labelledby\",e._pageSizeLabelId)(\"panelClass\",e.selectConfig.panelClass||\"\")(\"disableOptionCentering\",e.selectConfig.disableOptionCentering),m(2),Fe(e._displayedPageSizeOptions)}}function To(a,o){if(a&1&&(c(0,\"div\",15),p(1),d()),a&2){let e=v(2);m(),ee(e.pageSize)}}function Ro(a,o){if(a&1&&(c(0,\"div\",3)(1,\"div\",13),p(2),d(),P(3,xo,6,7,\"mat-form-field\",14),P(4,To,2,1,\"div\",15),d()),a&2){let e=v();m(),I(\"id\",e._pageSizeLabelId),m(),te(\" \",e._intl.itemsPerPageLabel,\" \"),m(),F(e._displayedPageSizeOptions.length>1?3:-1),m(),F(e._displayedPageSizeOptions.length<=1?4:-1)}}function So(a,o){if(a&1){let e=Y();c(0,\"button\",19),y(\"click\",function(){C(e);let i=v();return w(i._buttonClicked(0,i._previousButtonsDisabled()))}),Oe(),c(1,\"svg\",8),j(2,\"path\",20),d()()}if(a&2){let e=v();b(\"matTooltip\",e._intl.firstPageLabel)(\"matTooltipDisabled\",e._previousButtonsDisabled())(\"disabled\",e._previousButtonsDisabled())(\"tabindex\",e._previousButtonsDisabled()?-1:null),I(\"aria-label\",e._intl.firstPageLabel)}}function Mo(a,o){if(a&1){let e=Y();c(0,\"button\",21),y(\"click\",function(){C(e);let i=v();return w(i._buttonClicked(i.getNumberOfPages()-1,i._nextButtonsDisabled()))}),Oe(),c(1,\"svg\",8),j(2,\"path\",22),d()()}if(a&2){let e=v();b(\"matTooltip\",e._intl.lastPageLabel)(\"matTooltipDisabled\",e._nextButtonsDisabled())(\"disabled\",e._nextButtonsDisabled())(\"tabindex\",e._nextButtonsDisabled()?-1:null),I(\"aria-label\",e._intl.lastPageLabel)}}var Ht=(()=>{class a{changes=new x;itemsPerPageLabel=\"Items per page:\";nextPageLabel=\"Next page\";previousPageLabel=\"Previous page\";firstPageLabel=\"First page\";lastPageLabel=\"Last page\";getRangeLabel=(e,t,i)=>{if(i==0||t==0)return`0 of ${i}`;i=Math.max(i,0);let n=e*t,r=n<i?Math.min(n+t,i):n+t;return`${n+1} \\u2013 ${r} of ${i}`};static \\u0275fac=function(t){return new(t||a)};static \\u0275prov=ke({token:a,factory:a.\\u0275fac,providedIn:\"root\"})}return a})();function Io(a){return a||new Ht}var Oo={provide:Ht,deps:[[new Hi,new ji,Ht]],useFactory:Io},Eo=50;var Ao=new k(\"MAT_PAGINATOR_DEFAULT_OPTIONS\"),fi=(()=>{class a{_intl=s(Ht);_changeDetectorRef=s($);_formFieldAppearance;_pageSizeLabelId=s(ce).getId(\"mat-paginator-page-size-label-\");_intlChanges;_isInitialized=!1;_initializedStream=new Ei(1);color;get pageIndex(){return this._pageIndex}set pageIndex(e){this._pageIndex=Math.max(e||0,0),this._changeDetectorRef.markForCheck()}_pageIndex=0;get length(){return this._length}set length(e){this._length=e||0,this._changeDetectorRef.markForCheck()}_length=0;get pageSize(){return this._pageSize}set pageSize(e){this._pageSize=Math.max(e||0,0),this._updateDisplayedPageSizeOptions()}_pageSize;get pageSizeOptions(){return this._pageSizeOptions}set pageSizeOptions(e){this._pageSizeOptions=(e||[]).map(t=>le(t,0)),this._updateDisplayedPageSizeOptions()}_pageSizeOptions=[];hidePageSize=!1;showFirstLastButtons=!1;selectConfig={};disabled=!1;page=new M;_displayedPageSizeOptions;initialized=this._initializedStream;constructor(){let e=this._intl,t=s(Ao,{optional:!0});if(this._intlChanges=e.changes.subscribe(()=>this._changeDetectorRef.markForCheck()),t){let{pageSize:i,pageSizeOptions:n,hidePageSize:r,showFirstLastButtons:l}=t;i!=null&&(this._pageSize=i),n!=null&&(this._pageSizeOptions=n),r!=null&&(this.hidePageSize=r),l!=null&&(this.showFirstLastButtons=l)}this._formFieldAppearance=t?.formFieldAppearance||\"outline\"}ngOnInit(){this._isInitialized=!0,this._updateDisplayedPageSizeOptions(),this._initializedStream.next()}ngOnDestroy(){this._initializedStream.complete(),this._intlChanges.unsubscribe()}nextPage(){this.hasNextPage()&&this._navigate(this.pageIndex+1)}previousPage(){this.hasPreviousPage()&&this._navigate(this.pageIndex-1)}firstPage(){this.hasPreviousPage()&&this._navigate(0)}lastPage(){this.hasNextPage()&&this._navigate(this.getNumberOfPages()-1)}hasPreviousPage(){return this.pageIndex>=1&&this.pageSize!=0}hasNextPage(){let e=this.getNumberOfPages()-1;return this.pageIndex<e&&this.pageSize!=0}getNumberOfPages(){return this.pageSize?Math.ceil(this.length/this.pageSize):0}_changePageSize(e){let t=this.pageIndex*this.pageSize,i=this.pageIndex;this.pageIndex=Math.floor(t/e)||0,this.pageSize=e,this._emitPageEvent(i)}_nextButtonsDisabled(){return this.disabled||!this.hasNextPage()}_previousButtonsDisabled(){return this.disabled||!this.hasPreviousPage()}_updateDisplayedPageSizeOptions(){this._isInitialized&&(this.pageSize||(this._pageSize=this.pageSizeOptions.length!=0?this.pageSizeOptions[0]:Eo),this._displayedPageSizeOptions=this.pageSizeOptions.slice(),this._displayedPageSizeOptions.indexOf(this.pageSize)===-1&&this._displayedPageSizeOptions.push(this.pageSize),this._displayedPageSizeOptions.sort((e,t)=>e-t),this._changeDetectorRef.markForCheck())}_emitPageEvent(e){this.page.emit({previousPageIndex:e,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length})}_navigate(e){let t=this.pageIndex;e!==t&&(this.pageIndex=e,this._emitPageEvent(t))}_buttonClicked(e,t){t||this._navigate(e)}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-paginator\"]],hostAttrs:[\"role\",\"group\",1,\"mat-mdc-paginator\"],inputs:{color:\"color\",pageIndex:[2,\"pageIndex\",\"pageIndex\",le],length:[2,\"length\",\"length\",le],pageSize:[2,\"pageSize\",\"pageSize\",le],pageSizeOptions:\"pageSizeOptions\",hidePageSize:[2,\"hidePageSize\",\"hidePageSize\",g],showFirstLastButtons:[2,\"showFirstLastButtons\",\"showFirstLastButtons\",g],selectConfig:\"selectConfig\",disabled:[2,\"disabled\",\"disabled\",g]},outputs:{page:\"page\"},exportAs:[\"matPaginator\"],decls:14,vars:14,consts:[[\"selectRef\",\"\"],[1,\"mat-mdc-paginator-outer-container\"],[1,\"mat-mdc-paginator-container\"],[1,\"mat-mdc-paginator-page-size\"],[1,\"mat-mdc-paginator-range-actions\"],[\"aria-live\",\"polite\",1,\"mat-mdc-paginator-range-label\"],[\"matIconButton\",\"\",\"type\",\"button\",\"matTooltipPosition\",\"above\",\"disabledInteractive\",\"\",1,\"mat-mdc-paginator-navigation-first\",3,\"matTooltip\",\"matTooltipDisabled\",\"disabled\",\"tabindex\"],[\"matIconButton\",\"\",\"type\",\"button\",\"matTooltipPosition\",\"above\",\"disabledInteractive\",\"\",1,\"mat-mdc-paginator-navigation-previous\",3,\"click\",\"matTooltip\",\"matTooltipDisabled\",\"disabled\",\"tabindex\"],[\"viewBox\",\"0 0 24 24\",\"focusable\",\"false\",\"aria-hidden\",\"true\",1,\"mat-mdc-paginator-icon\"],[\"d\",\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"],[\"matIconButton\",\"\",\"type\",\"button\",\"matTooltipPosition\",\"above\",\"disabledInteractive\",\"\",1,\"mat-mdc-paginator-navigation-next\",3,\"click\",\"matTooltip\",\"matTooltipDisabled\",\"disabled\",\"tabindex\"],[\"d\",\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"],[\"matIconButton\",\"\",\"type\",\"button\",\"matTooltipPosition\",\"above\",\"disabledInteractive\",\"\",1,\"mat-mdc-paginator-navigation-last\",3,\"matTooltip\",\"matTooltipDisabled\",\"disabled\",\"tabindex\"],[1,\"mat-mdc-paginator-page-size-label\"],[1,\"mat-mdc-paginator-page-size-select\",3,\"appearance\",\"color\"],[1,\"mat-mdc-paginator-page-size-value\"],[\"hideSingleSelectionIndicator\",\"\",3,\"selectionChange\",\"value\",\"disabled\",\"aria-labelledby\",\"panelClass\",\"disableOptionCentering\"],[3,\"value\"],[1,\"mat-mdc-paginator-touch-target\",3,\"click\"],[\"matIconButton\",\"\",\"type\",\"button\",\"matTooltipPosition\",\"above\",\"disabledInteractive\",\"\",1,\"mat-mdc-paginator-navigation-first\",3,\"click\",\"matTooltip\",\"matTooltipDisabled\",\"disabled\",\"tabindex\"],[\"d\",\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"],[\"matIconButton\",\"\",\"type\",\"button\",\"matTooltipPosition\",\"above\",\"disabledInteractive\",\"\",1,\"mat-mdc-paginator-navigation-last\",3,\"click\",\"matTooltip\",\"matTooltipDisabled\",\"disabled\",\"tabindex\"],[\"d\",\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"]],template:function(t,i){t&1&&(c(0,\"div\",1)(1,\"div\",2),P(2,Ro,5,4,\"div\",3),c(3,\"div\",4)(4,\"div\",5),p(5),d(),P(6,So,3,5,\"button\",6),c(7,\"button\",7),y(\"click\",function(){return i._buttonClicked(i.pageIndex-1,i._previousButtonsDisabled())}),Oe(),c(8,\"svg\",8),j(9,\"path\",9),d()(),zi(),c(10,\"button\",10),y(\"click\",function(){return i._buttonClicked(i.pageIndex+1,i._nextButtonsDisabled())}),Oe(),c(11,\"svg\",8),j(12,\"path\",11),d()(),P(13,Mo,3,5,\"button\",12),d()()()),t&2&&(m(2),F(i.hidePageSize?-1:2),m(3),te(\" \",i._intl.getRangeLabel(i.pageIndex,i.pageSize,i.length),\" \"),m(),F(i.showFirstLastButtons?6:-1),m(),b(\"matTooltip\",i._intl.previousPageLabel)(\"matTooltipDisabled\",i._previousButtonsDisabled())(\"disabled\",i._previousButtonsDisabled())(\"tabindex\",i._previousButtonsDisabled()?-1:null),I(\"aria-label\",i._intl.previousPageLabel),m(3),b(\"matTooltip\",i._intl.nextPageLabel)(\"matTooltipDisabled\",i._nextButtonsDisabled())(\"disabled\",i._nextButtonsDisabled())(\"tabindex\",i._nextButtonsDisabled()?-1:null),I(\"aria-label\",i._intl.nextPageLabel),m(3),F(i.showFirstLastButtons?13:-1))},dependencies:[ot,st,Ce,wt,ct],styles:[`.mat-mdc-paginator{display:block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-paginator-container-text-color, var(--mat-sys-on-surface));background-color:var(--mat-paginator-container-background-color, var(--mat-sys-surface));font-family:var(--mat-paginator-container-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-paginator-container-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-paginator-container-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-paginator-container-text-weight, var(--mat-sys-body-small-weight));letter-spacing:var(--mat-paginator-container-text-tracking, var(--mat-sys-body-small-tracking));--mat-form-field-container-height: var(--mat-paginator-form-field-container-height, 40px);--mat-form-field-container-vertical-padding: var(--mat-paginator-form-field-container-vertical-padding, 8px)}.mat-mdc-paginator .mat-mdc-select-value{font-size:var(--mat-paginator-select-trigger-text-size, var(--mat-sys-body-small-size))}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap;width:100%;min-height:var(--mat-paginator-container-size, 56px)}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:84px}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px;fill:var(--mat-paginator-enabled-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon{fill:var(--mat-paginator-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}@media(forced-colors: active){.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon,.mat-mdc-paginator-icon{fill:currentColor}.mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}.mat-mdc-paginator-range-actions .mat-mdc-icon-button[aria-disabled]{color:GrayText}}.mat-mdc-paginator-touch-target{display:var(--mat-paginator-touch-target-display, block);position:absolute;top:50%;left:50%;width:84px;height:48px;background-color:rgba(0,0,0,0);transform:translate(-50%, -50%);cursor:pointer}\n`],encapsulation:2,changeDetection:0})}return a})(),Cn=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({providers:[Oo],imports:[Dt,lt,dt,fi]})}return a})();var vi=[\"*\"];function Lo(a,o){a&1&&Q(0)}var Bo=[\"tabListContainer\"],No=[\"tabList\"],zo=[\"tabListInner\"],Vo=[\"nextPaginator\"],Ho=[\"previousPaginator\"],jo=[\"content\"];function Qo(a,o){}var Go=[\"tabBodyWrapper\"],Wo=[\"tabHeader\"];function Yo(a,o){}function $o(a,o){if(a&1&&N(0,Yo,0,0,\"ng-template\",12),a&2){let e=v().$implicit;b(\"cdkPortalOutlet\",e.templateLabel)}}function qo(a,o){if(a&1&&p(0),a&2){let e=v().$implicit;ee(e.textLabel)}}function Uo(a,o){if(a&1){let e=Y();c(0,\"div\",7,2),y(\"click\",function(){let i=C(e),n=i.$implicit,r=i.$index,l=v(),h=Le(1);return w(l._handleClick(n,h,r))})(\"cdkFocusChange\",function(i){let n=C(e).$index,r=v();return w(r._tabFocusChanged(i,n))}),j(2,\"span\",8)(3,\"div\",9),c(4,\"span\",10)(5,\"span\",11),P(6,$o,1,1,null,12)(7,qo,1,1),d()()()}if(a&2){let e=o.$implicit,t=o.$index,i=Le(1),n=v();He(e.labelClass),R(\"mdc-tab--active\",n.selectedIndex===t),b(\"id\",n._getTabLabelId(e,t))(\"disabled\",e.disabled)(\"fitInkBarToContent\",n.fitInkBarToContent),I(\"tabIndex\",n._getTabIndex(t))(\"aria-posinset\",t+1)(\"aria-setsize\",n._tabs.length)(\"aria-controls\",n._getTabContentId(t))(\"aria-selected\",n.selectedIndex===t)(\"aria-label\",e.ariaLabel||null)(\"aria-labelledby\",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),m(3),b(\"matRippleTrigger\",i)(\"matRippleDisabled\",e.disabled||n.disableRipple),m(3),F(e.templateLabel?6:7)}}function Ko(a,o){a&1&&Q(0)}function Xo(a,o){if(a&1){let e=Y();c(0,\"mat-tab-body\",13),y(\"_onCentered\",function(){C(e);let i=v();return w(i._removeTabBodyWrapperHeight())})(\"_onCentering\",function(i){C(e);let n=v();return w(n._setTabBodyWrapperHeight(i))})(\"_beforeCentering\",function(i){C(e);let n=v();return w(n._bodyCentered(i))}),d()}if(a&2){let e=o.$implicit,t=o.$index,i=v();He(e.bodyClass),b(\"id\",i._getTabContentId(t))(\"content\",e.content)(\"position\",e.position)(\"animationDuration\",i.animationDuration)(\"preserveContent\",i.preserveContent),I(\"tabindex\",i.contentTabIndex!=null&&i.selectedIndex===t?i.contentTabIndex:null)(\"aria-labelledby\",i._getTabLabelId(e,t))(\"aria-hidden\",i.selectedIndex!==t)}}var Zo=new k(\"MatTabContent\"),Jo=(()=>{class a{template=s(K);constructor(){}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"matTabContent\",\"\"]],features:[B([{provide:Zo,useExisting:a}])]})}return a})(),er=new k(\"MatTabLabel\"),xn=new k(\"MAT_TAB\"),tr=(()=>{class a extends fa{_closestTab=s(xn,{optional:!0});static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"mat-tab-label\",\"\"],[\"\",\"matTabLabel\",\"\"]],features:[B([{provide:er,useExisting:a}]),T]})}return a})(),Tn=new k(\"MAT_TAB_GROUP\"),Ci=(()=>{class a{_viewContainerRef=s(fe);_closestTabGroup=s(Tn,{optional:!0});disabled=!1;get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}_templateLabel;_explicitContent=void 0;_implicitContent;textLabel=\"\";ariaLabel;ariaLabelledby;labelClass;bodyClass;id=null;_contentPortal=null;get content(){return this._contentPortal}_stateChanges=new x;position=null;origin=null;isActive=!1;constructor(){s(vt).load(Ct)}ngOnChanges(e){(e.hasOwnProperty(\"textLabel\")||e.hasOwnProperty(\"disabled\"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new kt(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-tab\"]],contentQueries:function(t,i,n){if(t&1&&(G(n,tr,5),G(n,Jo,7,K)),t&2){let r;u(r=f())&&(i.templateLabel=r.first),u(r=f())&&(i._explicitContent=r.first)}},viewQuery:function(t,i){if(t&1&&A(K,7),t&2){let n;u(n=f())&&(i._implicitContent=n.first)}},hostAttrs:[\"hidden\",\"\"],hostVars:1,hostBindings:function(t,i){t&2&&I(\"id\",null)},inputs:{disabled:[2,\"disabled\",\"disabled\",g],textLabel:[0,\"label\",\"textLabel\"],ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],labelClass:\"labelClass\",bodyClass:\"bodyClass\",id:\"id\"},exportAs:[\"matTab\"],features:[B([{provide:xn,useExisting:a}]),ye],ngContentSelectors:vi,decls:1,vars:0,template:function(t,i){t&1&&(se(),N(0,Lo,1,0,\"ng-template\"))},encapsulation:2})}return a})(),_i=\"mdc-tab-indicator--active\",wn=\"mdc-tab-indicator--no-transition\",gi=class{_items;_currentItem;constructor(o){this._items=o}hide(){this._items.forEach(o=>o.deactivateInkBar()),this._currentItem=void 0}alignToElement(o){let e=this._items.find(i=>i.elementRef.nativeElement===o),t=this._currentItem;if(e!==t&&(t?.deactivateInkBar(),e)){let i=t?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(i),this._currentItem=e}}},ir=(()=>{class a{_elementRef=s(S);_inkBarElement;_inkBarContentElement;_fitToContent=!1;get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){let t=this._elementRef.nativeElement;if(!e||!t.getBoundingClientRect||!this._inkBarContentElement){t.classList.add(_i);return}let i=t.getBoundingClientRect(),n=e.width/i.width,r=e.left-i.left;t.classList.add(wn),this._inkBarContentElement.style.setProperty(\"transform\",`translateX(${r}px) scaleX(${n})`),t.getBoundingClientRect(),t.classList.remove(wn),t.classList.add(_i),this._inkBarContentElement.style.setProperty(\"transform\",\"\")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(_i)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){let e=this._elementRef.nativeElement.ownerDocument||document,t=this._inkBarElement=e.createElement(\"span\"),i=this._inkBarContentElement=e.createElement(\"span\");t.className=\"mdc-tab-indicator\",i.className=\"mdc-tab-indicator__content mdc-tab-indicator__content--underline\",t.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){this._inkBarElement;let e=this._fitToContent?this._elementRef.nativeElement.querySelector(\".mdc-tab__content\"):this._elementRef.nativeElement;e.appendChild(this._inkBarElement)}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,inputs:{fitInkBarToContent:[2,\"fitInkBarToContent\",\"fitInkBarToContent\",g]}})}return a})();var Rn=(()=>{class a extends ir{elementRef=s(S);disabled=!1;focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275dir=_({type:a,selectors:[[\"\",\"matTabLabelWrapper\",\"\"]],hostVars:3,hostBindings:function(t,i){t&2&&(I(\"aria-disabled\",!!i.disabled),R(\"mat-mdc-tab-disabled\",i.disabled))},inputs:{disabled:[2,\"disabled\",\"disabled\",g]},features:[T]})}return a})(),Dn={passive:!0},ar=650,nr=100,or=(()=>{class a{_elementRef=s(S);_changeDetectorRef=s($);_viewportRuler=s(Ge);_dir=s(de,{optional:!0});_ngZone=s(xe);_platform=s(ve);_sharedResizeObserver=s(Ia);_injector=s(L);_renderer=s(Ae);_animationsDisabled=ae();_eventCleanups;_scrollDistance=0;_selectedIndexChanged=!1;_destroyed=new x;_showPaginationControls=!1;_disableScrollAfter=!0;_disableScrollBefore=!0;_tabLabelCount;_scrollDistanceChanged;_keyManager;_currentTextContent;_stopScrolling=new x;disablePagination=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){let t=isNaN(e)?0:e;this._selectedIndex!=t&&(this._selectedIndexChanged=!0,this._selectedIndex=t,this._keyManager&&this._keyManager.updateActiveItem(t))}_selectedIndex=0;selectFocusedIndex=new M;indexFocused=new M;constructor(){this._eventCleanups=this._ngZone.runOutsideAngular(()=>[this._renderer.listen(this._elementRef.nativeElement,\"mouseleave\",()=>this._stopInterval())])}ngAfterViewInit(){this._eventCleanups.push(this._renderer.listen(this._previousPaginator.nativeElement,\"touchstart\",()=>this._handlePaginatorPress(\"before\"),Dn),this._renderer.listen(this._nextPaginator.nativeElement,\"touchstart\",()=>this._handlePaginatorPress(\"after\"),Dn))}ngAfterContentInit(){let e=this._dir?this._dir.change:De(\"ltr\"),t=this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(Bi(32),E(this._destroyed)),i=this._viewportRuler.change(150).pipe(E(this._destroyed)),n=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new sa(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(Math.max(this._selectedIndex,0)),Z(n,{injector:this._injector}),re(e,i,t,this._items.changes,this._itemsResized()).pipe(E(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),n()})}),this._keyManager?.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(r=>{this.indexFocused.emit(r),this._setTabFocus(r)})}_itemsResized(){return typeof ResizeObserver!=\"function\"?Ai:this._items.changes.pipe(he(this._items),Ze(e=>new Oi(t=>this._ngZone.runOutsideAngular(()=>{let i=new ResizeObserver(n=>t.next(n));return e.forEach(n=>i.observe(n.elementRef.nativeElement)),()=>{i.disconnect()}}))),Ni(1),ue(e=>e.some(t=>t.contentRect.width>0&&t.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._eventCleanups.forEach(e=>e()),this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!ie(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){let t=this._items.get(this.focusIndex);t&&!t.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager?.onKeydown(e)}}_onContentChanges(){let e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||\"\",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return this._items?!!this._items.toArray()[e]:!0}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();let t=this._tabListContainer.nativeElement;this._getLayoutDirection()==\"ltr\"?t.scrollLeft=0:t.scrollLeft=t.scrollWidth-t.offsetWidth}}_getLayoutDirection(){return this._dir&&this._dir.value===\"rtl\"?\"rtl\":\"ltr\"}_updateTabScrollPosition(){if(this.disablePagination)return;let e=this.scrollDistance,t=this._getLayoutDirection()===\"ltr\"?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(t)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){let t=this._tabListContainer.nativeElement.offsetWidth,i=(e==\"before\"?-1:1)*t/3;return this._scrollTo(this._scrollDistance+i)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;let t=this._items?this._items.toArray()[e]:null;if(!t)return;let i=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:n,offsetWidth:r}=t.elementRef.nativeElement,l,h;this._getLayoutDirection()==\"ltr\"?(l=n,h=l+r):(h=this._tabListInner.nativeElement.offsetWidth-n,l=h-r);let O=this.scrollDistance,W=this.scrollDistance+i;l<O?this.scrollDistance-=O-l:h>W&&(this.scrollDistance+=Math.min(h-W,l-O))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{let e=this._tabListInner.nativeElement.scrollWidth,t=this._elementRef.nativeElement.offsetWidth,i=e-t>=5;i||(this.scrollDistance=0),i!==this._showPaginationControls&&(this._showPaginationControls=i,this._changeDetectorRef.markForCheck())}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=this.scrollDistance==0,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){let e=this._tabListInner.nativeElement.scrollWidth,t=this._tabListContainer.nativeElement.offsetWidth;return e-t||0}_alignInkBarToSelectedTab(){let e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,t=e?e.elementRef.nativeElement:null;t?this._inkBar.alignToElement(t):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,t){t&&t.button!=null&&t.button!==0||(this._stopInterval(),Li(ar,nr).pipe(E(re(this._stopScrolling,this._destroyed))).subscribe(()=>{let{maxScrollDistance:i,distance:n}=this._scrollHeader(e);(n===0||n>=i)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};let t=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(t,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:t,distance:this._scrollDistance}}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,inputs:{disablePagination:[2,\"disablePagination\",\"disablePagination\",g],selectedIndex:[2,\"selectedIndex\",\"selectedIndex\",le]},outputs:{selectFocusedIndex:\"selectFocusedIndex\",indexFocused:\"indexFocused\"}})}return a})(),rr=(()=>{class a extends or{_items;_tabListContainer;_tabList;_tabListInner;_nextPaginator;_previousPaginator;_inkBar;ariaLabel;ariaLabelledby;disableRipple=!1;ngAfterContentInit(){this._inkBar=new gi(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275cmp=D({type:a,selectors:[[\"mat-tab-header\"]],contentQueries:function(t,i,n){if(t&1&&G(n,Rn,4),t&2){let r;u(r=f())&&(i._items=r)}},viewQuery:function(t,i){if(t&1&&(A(Bo,7),A(No,7),A(zo,7),A(Vo,5),A(Ho,5)),t&2){let n;u(n=f())&&(i._tabListContainer=n.first),u(n=f())&&(i._tabList=n.first),u(n=f())&&(i._tabListInner=n.first),u(n=f())&&(i._nextPaginator=n.first),u(n=f())&&(i._previousPaginator=n.first)}},hostAttrs:[1,\"mat-mdc-tab-header\"],hostVars:4,hostBindings:function(t,i){t&2&&R(\"mat-mdc-tab-header-pagination-controls-enabled\",i._showPaginationControls)(\"mat-mdc-tab-header-rtl\",i._getLayoutDirection()==\"rtl\")},inputs:{ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],disableRipple:[2,\"disableRipple\",\"disableRipple\",g]},features:[T],ngContentSelectors:vi,decls:13,vars:10,consts:[[\"previousPaginator\",\"\"],[\"tabListContainer\",\"\"],[\"tabList\",\"\"],[\"tabListInner\",\"\"],[\"nextPaginator\",\"\"],[\"mat-ripple\",\"\",1,\"mat-mdc-tab-header-pagination\",\"mat-mdc-tab-header-pagination-before\",3,\"click\",\"mousedown\",\"touchend\",\"matRippleDisabled\"],[1,\"mat-mdc-tab-header-pagination-chevron\"],[1,\"mat-mdc-tab-label-container\",3,\"keydown\"],[\"role\",\"tablist\",1,\"mat-mdc-tab-list\",3,\"cdkObserveContent\"],[1,\"mat-mdc-tab-labels\"],[\"mat-ripple\",\"\",1,\"mat-mdc-tab-header-pagination\",\"mat-mdc-tab-header-pagination-after\",3,\"mousedown\",\"click\",\"touchend\",\"matRippleDisabled\"]],template:function(t,i){if(t&1){let n=Y();se(),c(0,\"div\",5,0),y(\"click\",function(){return C(n),w(i._handlePaginatorClick(\"before\"))})(\"mousedown\",function(l){return C(n),w(i._handlePaginatorPress(\"before\",l))})(\"touchend\",function(){return C(n),w(i._stopInterval())}),j(2,\"div\",6),d(),c(3,\"div\",7,1),y(\"keydown\",function(l){return C(n),w(i._handleKeydown(l))}),c(5,\"div\",8,2),y(\"cdkObserveContent\",function(){return C(n),w(i._onContentChanges())}),c(7,\"div\",9,3),Q(9),d()()(),c(10,\"div\",10,4),y(\"mousedown\",function(l){return C(n),w(i._handlePaginatorPress(\"after\",l))})(\"click\",function(){return C(n),w(i._handlePaginatorClick(\"after\"))})(\"touchend\",function(){return C(n),w(i._stopInterval())}),j(12,\"div\",6),d()}t&2&&(R(\"mat-mdc-tab-header-pagination-disabled\",i._disableScrollBefore),b(\"matRippleDisabled\",i._disableScrollBefore||i.disableRipple),m(3),R(\"_mat-animation-noopable\",i._animationsDisabled),m(2),I(\"aria-label\",i.ariaLabel||null)(\"aria-labelledby\",i.ariaLabelledby||null),m(5),R(\"mat-mdc-tab-header-pagination-disabled\",i._disableScrollAfter),b(\"matRippleDisabled\",i._disableScrollAfter||i.disableRipple))},dependencies:[it,ia],styles:[`.mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;outline:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-pagination-icon-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-divider-height, 1px);border-bottom-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-divider-height, 1px);border-top-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mat-tab-container-height, 48px)}.mat-mdc-tab::before{margin:5px}@media(forced-colors: active){.mat-mdc-tab[aria-disabled=true]{color:GrayText}}\n`],encapsulation:2})}return a})(),sr=new k(\"MAT_TABS_CONFIG\"),kn=(()=>{class a extends Te{_host=s(bi);_centeringSub=Se.EMPTY;_leavingSub=Se.EMPTY;constructor(){super()}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(he(this._host._isCenterPosition())).subscribe(e=>{this._host._content&&e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static \\u0275fac=function(t){return new(t||a)};static \\u0275dir=_({type:a,selectors:[[\"\",\"matTabBodyHost\",\"\"]],features:[T]})}return a})(),bi=(()=>{class a{_elementRef=s(S);_dir=s(de,{optional:!0});_ngZone=s(xe);_injector=s(L);_renderer=s(Ae);_diAnimationsDisabled=ae();_eventCleanups;_initialized;_fallbackTimer;_positionIndex;_dirChangeSubscription=Se.EMPTY;_position;_previousPosition;_onCentering=new M;_beforeCentering=new M;_afterLeavingCenter=new M;_onCentered=new M(!0);_portalHost;_contentElement;_content;animationDuration=\"500ms\";preserveContent=!1;set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(){if(this._dir){let e=s($);this._dirChangeSubscription=this._dir.change.subscribe(t=>{this._computePositionAnimationState(t),e.markForCheck()})}}ngOnInit(){this._bindTransitionEvents(),this._position===\"center\"&&(this._setActiveClass(!0),Z(()=>this._onCentering.emit(this._elementRef.nativeElement.clientHeight),{injector:this._injector})),this._initialized=!0}ngOnDestroy(){clearTimeout(this._fallbackTimer),this._eventCleanups?.forEach(e=>e()),this._dirChangeSubscription.unsubscribe()}_bindTransitionEvents(){this._ngZone.runOutsideAngular(()=>{let e=this._elementRef.nativeElement,t=i=>{i.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.remove(\"mat-tab-body-animating\"),i.type===\"transitionend\"&&this._transitionDone())};this._eventCleanups=[this._renderer.listen(e,\"transitionstart\",i=>{i.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.add(\"mat-tab-body-animating\"),this._transitionStarted())}),this._renderer.listen(e,\"transitionend\",t),this._renderer.listen(e,\"transitioncancel\",t)]})}_transitionStarted(){clearTimeout(this._fallbackTimer);let e=this._position===\"center\";this._beforeCentering.emit(e),e&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_transitionDone(){this._position===\"center\"?this._onCentered.emit():this._previousPosition===\"center\"&&this._afterLeavingCenter.emit()}_setActiveClass(e){this._elementRef.nativeElement.classList.toggle(\"mat-mdc-tab-body-active\",e)}_getLayoutDirection(){return this._dir&&this._dir.value===\"rtl\"?\"rtl\":\"ltr\"}_isCenterPosition(){return this._positionIndex===0}_computePositionAnimationState(e=this._getLayoutDirection()){this._previousPosition=this._position,this._positionIndex<0?this._position=e==\"ltr\"?\"left\":\"right\":this._positionIndex>0?this._position=e==\"ltr\"?\"right\":\"left\":this._position=\"center\",this._animationsDisabled()?this._simulateTransitionEvents():this._initialized&&(this._position===\"center\"||this._previousPosition===\"center\")&&(clearTimeout(this._fallbackTimer),this._fallbackTimer=this._ngZone.runOutsideAngular(()=>setTimeout(()=>this._simulateTransitionEvents(),100)))}_simulateTransitionEvents(){this._transitionStarted(),Z(()=>this._transitionDone(),{injector:this._injector})}_animationsDisabled(){return this._diAnimationsDisabled||this.animationDuration===\"0ms\"||this.animationDuration===\"0s\"}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-tab-body\"]],viewQuery:function(t,i){if(t&1&&(A(kn,5),A(jo,5)),t&2){let n;u(n=f())&&(i._portalHost=n.first),u(n=f())&&(i._contentElement=n.first)}},hostAttrs:[1,\"mat-mdc-tab-body\"],hostVars:1,hostBindings:function(t,i){t&2&&I(\"inert\",i._position===\"center\"?null:\"\")},inputs:{_content:[0,\"content\",\"_content\"],animationDuration:\"animationDuration\",preserveContent:\"preserveContent\",position:\"position\"},outputs:{_onCentering:\"_onCentering\",_beforeCentering:\"_beforeCentering\",_onCentered:\"_onCentered\"},decls:3,vars:6,consts:[[\"content\",\"\"],[\"cdkScrollable\",\"\",1,\"mat-mdc-tab-body-content\"],[\"matTabBodyHost\",\"\"]],template:function(t,i){t&1&&(c(0,\"div\",1,0),N(2,Qo,0,0,\"ng-template\",2),d()),t&2&&R(\"mat-tab-body-content-left\",i._position===\"left\")(\"mat-tab-body-content-right\",i._position===\"right\")(\"mat-tab-body-content-can-animate\",i._position===\"center\"||i._previousPosition===\"center\")},dependencies:[kn,ya],styles:[`.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto;transform:none;visibility:hidden}.mat-tab-body-animating>.mat-mdc-tab-body-content,.mat-mdc-tab-body-active>.mat-mdc-tab-body-content{visibility:visible}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-tab-body-content-can-animate{transition:transform var(--mat-tab-animation-duration) 1ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable .mat-tab-body-content-can-animate{transition:none}.mat-tab-body-content-left{transform:translate3d(-100%, 0, 0)}.mat-tab-body-content-right{transform:translate3d(100%, 0, 0)}\n`],encapsulation:2})}return a})(),Sn=(()=>{class a{_elementRef=s(S);_changeDetectorRef=s($);_ngZone=s(xe);_tabsSubscription=Se.EMPTY;_tabLabelSubscription=Se.EMPTY;_tabBodySubscription=Se.EMPTY;_diAnimationsDisabled=ae();_allTabs;_tabBodies;_tabBodyWrapper;_tabHeader;_tabs=new Qi;_indexToSelect=0;_lastFocusedTabIndex=null;_tabBodyWrapperHeight=0;color;get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}_fitInkBarToContent=!1;stretchTabs=!0;alignTabs=null;dynamicHeight=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}_selectedIndex=null;headerPosition=\"above\";get animationDuration(){return this._animationDuration}set animationDuration(e){let t=e+\"\";this._animationDuration=/^\\d+$/.test(t)?e+\"ms\":t}_animationDuration;get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}_contentTabIndex;disablePagination=!1;disableRipple=!1;preserveContent=!1;get backgroundColor(){return this._backgroundColor}set backgroundColor(e){let t=this._elementRef.nativeElement.classList;t.remove(\"mat-tabs-with-background\",`mat-background-${this.backgroundColor}`),e&&t.add(\"mat-tabs-with-background\",`mat-background-${e}`),this._backgroundColor=e}_backgroundColor;ariaLabel;ariaLabelledby;selectedIndexChange=new M;focusChange=new M;animationDone=new M;selectedTabChange=new M(!0);_groupId;_isServer=!s(ve).isBrowser;constructor(){let e=s(sr,{optional:!0});this._groupId=s(ce).getId(\"mat-tab-group-\"),this.animationDuration=e&&e.animationDuration?e.animationDuration:\"500ms\",this.disablePagination=e&&e.disablePagination!=null?e.disablePagination:!1,this.dynamicHeight=e&&e.dynamicHeight!=null?e.dynamicHeight:!1,e?.contentTabIndex!=null&&(this.contentTabIndex=e.contentTabIndex),this.preserveContent=!!e?.preserveContent,this.fitInkBarToContent=e&&e.fitInkBarToContent!=null?e.fitInkBarToContent:!1,this.stretchTabs=e&&e.stretchTabs!=null?e.stretchTabs:!0,this.alignTabs=e&&e.alignTabs!=null?e.alignTabs:null}ngAfterContentChecked(){let e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){let t=this._selectedIndex==null;if(!t){this.selectedTabChange.emit(this._createChangeEvent(e));let i=this._tabBodyWrapper.nativeElement;i.style.minHeight=i.clientHeight+\"px\"}Promise.resolve().then(()=>{this._tabs.forEach((i,n)=>i.isActive=n===e),t||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight=\"\")})}this._tabs.forEach((t,i)=>{t.position=i-e,this._selectedIndex!=null&&t.position==0&&!t.origin&&(t.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{let e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){let t=this._tabs.toArray(),i;for(let n=0;n<t.length;n++)if(t[n].isActive){this._indexToSelect=this._selectedIndex=n,this._lastFocusedTabIndex=null,i=t[n];break}!i&&t[e]&&Promise.resolve().then(()=>{t[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}ngAfterViewInit(){this._tabBodySubscription=this._tabBodies.changes.subscribe(()=>this._bodyCentered(!0))}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(he(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(t=>t._closestTabGroup===this||!t._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe(),this._tabBodySubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){let t=this._tabHeader;t&&(t.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){let t=new yi;return t.index=e,this._tabs&&this._tabs.length&&(t.tab=this._tabs.toArray()[e]),t}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=re(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e,t){return e.id||`${this._groupId}-label-${t}`}_getTabContentId(e){return`${this._groupId}-content-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight){this._tabBodyWrapperHeight=e;return}let t=this._tabBodyWrapper.nativeElement;t.style.height=this._tabBodyWrapperHeight+\"px\",this._tabBodyWrapper.nativeElement.offsetHeight&&(t.style.height=e+\"px\")}_removeTabBodyWrapperHeight(){let e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height=\"\",this._ngZone.run(()=>this.animationDone.emit())}_handleClick(e,t,i){t.focusIndex=i,e.disabled||(this.selectedIndex=i)}_getTabIndex(e){let t=this._lastFocusedTabIndex??this.selectedIndex;return e===t?0:-1}_tabFocusChanged(e,t){e&&e!==\"mouse\"&&e!==\"touch\"&&(this._tabHeader.focusIndex=t)}_bodyCentered(e){e&&this._tabBodies?.forEach((t,i)=>t._setActiveClass(i===this._selectedIndex))}_animationsDisabled(){return this._diAnimationsDisabled||this.animationDuration===\"0\"||this.animationDuration===\"0ms\"}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"mat-tab-group\"]],contentQueries:function(t,i,n){if(t&1&&G(n,Ci,5),t&2){let r;u(r=f())&&(i._allTabs=r)}},viewQuery:function(t,i){if(t&1&&(A(Go,5),A(Wo,5),A(bi,5)),t&2){let n;u(n=f())&&(i._tabBodyWrapper=n.first),u(n=f())&&(i._tabHeader=n.first),u(n=f())&&(i._tabBodies=n)}},hostAttrs:[1,\"mat-mdc-tab-group\"],hostVars:11,hostBindings:function(t,i){t&2&&(I(\"mat-align-tabs\",i.alignTabs),He(\"mat-\"+(i.color||\"primary\")),_t(\"--mat-tab-animation-duration\",i.animationDuration),R(\"mat-mdc-tab-group-dynamic-height\",i.dynamicHeight)(\"mat-mdc-tab-group-inverted-header\",i.headerPosition===\"below\")(\"mat-mdc-tab-group-stretch-tabs\",i.stretchTabs))},inputs:{color:\"color\",fitInkBarToContent:[2,\"fitInkBarToContent\",\"fitInkBarToContent\",g],stretchTabs:[2,\"mat-stretch-tabs\",\"stretchTabs\",g],alignTabs:[0,\"mat-align-tabs\",\"alignTabs\"],dynamicHeight:[2,\"dynamicHeight\",\"dynamicHeight\",g],selectedIndex:[2,\"selectedIndex\",\"selectedIndex\",le],headerPosition:\"headerPosition\",animationDuration:\"animationDuration\",contentTabIndex:[2,\"contentTabIndex\",\"contentTabIndex\",le],disablePagination:[2,\"disablePagination\",\"disablePagination\",g],disableRipple:[2,\"disableRipple\",\"disableRipple\",g],preserveContent:[2,\"preserveContent\",\"preserveContent\",g],backgroundColor:\"backgroundColor\",ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"]},outputs:{selectedIndexChange:\"selectedIndexChange\",focusChange:\"focusChange\",animationDone:\"animationDone\",selectedTabChange:\"selectedTabChange\"},exportAs:[\"matTabGroup\"],features:[B([{provide:Tn,useExisting:a}])],ngContentSelectors:vi,decls:9,vars:8,consts:[[\"tabHeader\",\"\"],[\"tabBodyWrapper\",\"\"],[\"tabNode\",\"\"],[3,\"indexFocused\",\"selectFocusedIndex\",\"selectedIndex\",\"disableRipple\",\"disablePagination\",\"aria-label\",\"aria-labelledby\"],[\"role\",\"tab\",\"matTabLabelWrapper\",\"\",\"cdkMonitorElementFocus\",\"\",1,\"mdc-tab\",\"mat-mdc-tab\",\"mat-focus-indicator\",3,\"id\",\"mdc-tab--active\",\"class\",\"disabled\",\"fitInkBarToContent\"],[1,\"mat-mdc-tab-body-wrapper\"],[\"role\",\"tabpanel\",3,\"id\",\"class\",\"content\",\"position\",\"animationDuration\",\"preserveContent\"],[\"role\",\"tab\",\"matTabLabelWrapper\",\"\",\"cdkMonitorElementFocus\",\"\",1,\"mdc-tab\",\"mat-mdc-tab\",\"mat-focus-indicator\",3,\"click\",\"cdkFocusChange\",\"id\",\"disabled\",\"fitInkBarToContent\"],[1,\"mdc-tab__ripple\"],[\"mat-ripple\",\"\",1,\"mat-mdc-tab-ripple\",3,\"matRippleTrigger\",\"matRippleDisabled\"],[1,\"mdc-tab__content\"],[1,\"mdc-tab__text-label\"],[3,\"cdkPortalOutlet\"],[\"role\",\"tabpanel\",3,\"_onCentered\",\"_onCentering\",\"_beforeCentering\",\"id\",\"content\",\"position\",\"animationDuration\",\"preserveContent\"]],template:function(t,i){if(t&1){let n=Y();se(),c(0,\"mat-tab-header\",3,0),y(\"indexFocused\",function(l){return C(n),w(i._focusChanged(l))})(\"selectFocusedIndex\",function(l){return C(n),w(i.selectedIndex=l)}),Pe(2,Uo,8,17,\"div\",4,Je),d(),P(4,Ko,1,0),c(5,\"div\",5,1),Pe(7,Xo,1,10,\"mat-tab-body\",6,Je),d()}t&2&&(b(\"selectedIndex\",i.selectedIndex||0)(\"disableRipple\",i.disableRipple)(\"disablePagination\",i.disablePagination)(\"aria-label\",i.ariaLabel)(\"aria-labelledby\",i.ariaLabelledby),m(2),Fe(i._tabs),m(2),F(i._isServer?4:-1),m(),R(\"_mat-animation-noopable\",i._animationsDisabled()),m(2),Fe(i._tabs))},dependencies:[rr,Rn,ea,it,Te,bi],styles:[`.mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mat-tab-container-height, 48px);font-family:var(--mat-tab-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-tab-active-indicator-height, 2px);border-radius:var(--mat-tab-active-indicator-shape, 0)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-active-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-active-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-focus-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-disabled-ripple-color, var(--mat-sys-on-surface-variant))}.mat-mdc-tab .mdc-tab__ripple::before{content:\"\";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-inactive-label-text-color, var(--mat-sys-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-focus-indicator::before{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}\n`],encapsulation:2})}return a})(),yi=class{index;tab};var Mn=(()=>{class a{static \\u0275fac=function(t){return new(t||a)};static \\u0275mod=H({type:a});static \\u0275inj=z({imports:[q,q]})}return a})();function mr(a,o){}var Re=class{viewContainerRef;injector;id;role=\"dialog\";panelClass=\"\";hasBackdrop=!0;backdropClass=\"\";disableClose=!1;closePredicate;width=\"\";height=\"\";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus=\"first-tabbable\";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;disableAnimations=!1;providers;container;templateContext};var Di=(()=>{class a extends ua{_elementRef=s(S);_focusTrapFactory=s(na);_config;_interactivityChecker=s(aa);_ngZone=s(xe);_focusMonitor=s(tt);_renderer=s(Ae);_platform=s(ve);_document=s(Ve,{optional:!0});_portalOutlet;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_changeDetectorRef=s($);_injector=s(L);_isDestroyed=!1;constructor(){super(),this._config=s(Re,{optional:!0})||new Re,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){let t=this._ariaLabelledByQueue.indexOf(e);t>-1&&(this._ariaLabelledByQueue.splice(t,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();let t=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),t}attachTemplatePortal(e){this._portalOutlet.hasAttached();let t=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),t}attachDomPortal=e=>{this._portalOutlet.hasAttached();let t=this._portalOutlet.attachDomPortal(e);return this._contentAttached(),t};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,t){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let i=()=>{n(),r(),e.removeAttribute(\"tabindex\")},n=this._renderer.listen(e,\"blur\",i),r=this._renderer.listen(e,\"mousedown\",i)})),e.focus(t)}_focusByCssSelector(e,t){let i=this._elementRef.nativeElement.querySelector(e);i&&this._forceFocus(i,t)}_trapFocus(e){this._isDestroyed||Z(()=>{let t=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case\"dialog\":this._containsFocus()||t.focus(e);break;case!0:case\"first-tabbable\":this._focusTrap?.focusInitialElement(e)||this._focusDialogContainer(e);break;case\"first-heading\":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]',e);break;default:this._focusByCssSelector(this._config.autoFocus,e);break}},{injector:this._injector})}_restoreFocus(){let e=this._config.restoreFocus,t=null;if(typeof e==\"string\"?t=this._document.querySelector(e):typeof e==\"boolean\"?t=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(t=e),this._config.restoreFocus&&t&&typeof t.focus==\"function\"){let i=yt(),n=this._elementRef.nativeElement;(!i||i===this._document.body||i===n||n.contains(i))&&(this._focusMonitor?(this._focusMonitor.focusVia(t,this._closeInteractionType),this._closeInteractionType=null):t.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(e){this._elementRef.nativeElement.focus?.(e)}_containsFocus(){let e=this._elementRef.nativeElement,t=yt();return e===t||e.contains(t)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=yt()))}static \\u0275fac=function(t){return new(t||a)};static \\u0275cmp=D({type:a,selectors:[[\"cdk-dialog-container\"]],viewQuery:function(t,i){if(t&1&&A(Te,7),t&2){let n;u(n=f())&&(i._portalOutlet=n.first)}},hostAttrs:[\"tabindex\",\"-1\",1,\"cdk-dialog-container\"],hostVars:6,hostBindings:function(t,i){t&2&&I(\"id\",i._config.id||null)(\"role\",i._config.role)(\"aria-modal\",i._config.ariaModal)(\"aria-labelledby\",i._config.ariaLabel?null:i._ariaLabelledByQueue[0])(\"aria-label\",i._config.ariaLabel)(\"aria-describedby\",i._config.ariaDescribedBy||null)},features:[T],decls:1,vars:0,consts:[[\"cdkPortalOutlet\",\"\"]],template:function(t,i){t&1&&N(0,mr,0,0,\"ng-template\",0)},dependencies:[Te],styles:[`.cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}\n`],encapsulation:2})}return a})(),mt=class{overlayRef;config;componentInstance;componentRef;containerInstance;disableClose;closed=new x;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(o,e){this.overlayRef=o,this.config=e,this.disableClose=e.disableClose,this.backdropClick=o.backdropClick(),this.keydownEvents=o.keydownEvents(),this.outsidePointerEvents=o.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(t=>{t.keyCode===27&&!this.disableClose&&!ie(t)&&(t.preventDefault(),this.close(void 0,{focusOrigin:\"keyboard\"}))}),this.backdropClick.subscribe(()=>{!this.disableClose&&this._canClose()?this.close(void 0,{focusOrigin:\"mouse\"}):this.containerInstance._recaptureFocus?.()}),this._detachSubscription=o.detachments().subscribe(()=>{e.closeOnOverlayDetachments!==!1&&this.close()})}close(o,e){if(this._canClose(o)){let t=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||\"program\",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),t.next(o),t.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(o=\"\",e=\"\"){return this.overlayRef.updateSize({width:o,height:e}),this}addPanelClass(o){return this.overlayRef.addPanelClass(o),this}removePanelClass(o){return this.overlayRef.removePanelClass(o),this}_canClose(o){let e=this.config;return!!this.containerInstance&&(!e.closePredicate||e.closePredicate(o,e,this.componentInstance))}},hr=new k(\"DialogScrollStrategy\",{providedIn:\"root\",factory:()=>{let a=s(L);return()=>Rt(a)}}),pr=new k(\"DialogData\"),ur=new k(\"DefaultDialogConfig\");function fr(a){let o=Ee(a),e=new M;return{valueSignal:o,get value(){return o()},change:e,ngOnDestroy(){e.complete()}}}var In=(()=>{class a{_injector=s(L);_defaultOptions=s(ur,{optional:!0});_parentDialog=s(a,{optional:!0,skipSelf:!0});_overlayContainer=s(wa);_idGenerator=s(ce);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new x;_afterOpenedAtThisLevel=new x;_ariaHiddenElements=new Map;_scrollStrategy=s(hr);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=Ne(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(he(void 0)));constructor(){}open(e,t){let i=this._defaultOptions||new Re;t=X(X({},i),t),t.id=t.id||this._idGenerator.getId(\"cdk-dialog-\"),t.id&&this.getDialogById(t.id);let n=this._getOverlayConfig(t),r=Mt(this._injector,n),l=new mt(r,t),h=this._attachContainer(r,l,t);return l.containerInstance=h,this._attachDialogContent(e,l,h,t),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(l),l.closed.subscribe(()=>this._removeOpenDialog(l,!0)),this.afterOpened.next(l),l}closeAll(){wi(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(t=>t.id===e)}ngOnDestroy(){wi(this._openDialogsAtThisLevel,e=>{e.config.closeOnDestroy===!1&&this._removeOpenDialog(e,!1)}),wi(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){let t=new Ca({positionStrategy:e.positionStrategy||St().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation,disableAnimations:e.disableAnimations});return e.backdropClass&&(t.backdropClass=e.backdropClass),t}_attachContainer(e,t,i){let n=i.injector||i.viewContainerRef?.injector,r=[{provide:Re,useValue:i},{provide:mt,useValue:t},{provide:Da,useValue:e}],l;i.container?typeof i.container==\"function\"?l=i.container:(l=i.container.type,r.push(...i.container.providers(i))):l=Di;let h=new at(l,i.viewContainerRef,L.create({parent:n||this._injector,providers:r}));return e.attach(h).instance}_attachDialogContent(e,t,i,n){if(e instanceof K){let r=this._createInjector(n,t,i,void 0),l={$implicit:n.data,dialogRef:t};n.templateContext&&(l=X(X({},l),typeof n.templateContext==\"function\"?n.templateContext():n.templateContext)),i.attachTemplatePortal(new kt(e,null,l,r))}else{let r=this._createInjector(n,t,i,this._injector),l=i.attachComponentPortal(new at(e,n.viewContainerRef,r));t.componentRef=l,t.componentInstance=l.instance}}_createInjector(e,t,i,n){let r=e.injector||e.viewContainerRef?.injector,l=[{provide:pr,useValue:e.data},{provide:mt,useValue:t}];return e.providers&&(typeof e.providers==\"function\"?l.push(...e.providers(t,e,i)):l.push(...e.providers)),e.direction&&(!r||!r.get(de,null,{optional:!0}))&&l.push({provide:de,useValue:fr(e.direction)}),L.create({parent:r||n,providers:l})}_removeOpenDialog(e,t){let i=this.openDialogs.indexOf(e);i>-1&&(this.openDialogs.splice(i,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((n,r)=>{n?r.setAttribute(\"aria-hidden\",n):r.removeAttribute(\"aria-hidden\")}),this._ariaHiddenElements.clear(),t&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){let e=this._overlayContainer.getContainerElement();if(e.parentElement){let t=e.parentElement.children;for(let i=t.length-1;i>-1;i--){let n=t[i];n!==e&&n.nodeName!==\"SCRIPT\"&&n.nodeName!==\"STYLE\"&&!n.hasAttribute(\"aria-live\")&&(this._ariaHiddenElements.set(n,n.getAttribute(\"aria-hidden\")),n.setAttribute(\"aria-hidden\",\"true\"))}}}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \\u0275fac=function(t){return new(t||a)};static \\u0275prov=ke({token:a,factory:a.\\u0275fac,providedIn:\"root\"})}return a})();function wi(a,o){let e=a.length;for(;e--;)o(a[e])}function _r(a,o){}var pt=class{viewContainerRef;injector;id;role=\"dialog\";panelClass=\"\";hasBackdrop=!0;backdropClass=\"\";disableClose=!1;closePredicate;width=\"\";height=\"\";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus=\"first-tabbable\";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;enterAnimationDuration;exitAnimationDuration},ki=\"mdc-dialog--open\",On=\"mdc-dialog--opening\",En=\"mdc-dialog--closing\",gr=150,br=75,Fn=(()=>{class a extends Di{_animationStateChanged=new M;_animationsEnabled=!ae();_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?Pn(this._config.enterAnimationDuration)??gr:0;_exitAnimationDuration=this._animationsEnabled?Pn(this._config.exitAnimationDuration)??br:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:\"opening\",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(An,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(On,ki)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(ki),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:\"closing\",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(ki),this._animationsEnabled?(this._hostElement.style.setProperty(An,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(En)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:\"closed\",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(On,En)}_waitForAnimationToComplete(e,t){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(t,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame==\"function\"?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:\"opened\",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer)}attachComponentPortal(e){let t=super.attachComponentPortal(e);return t.location.nativeElement.classList.add(\"mat-mdc-dialog-component-host\"),t}static \\u0275fac=(()=>{let e;return function(i){return(e||(e=V(a)))(i||a)}})();static \\u0275cmp=D({type:a,selectors:[[\"mat-dialog-container\"]],hostAttrs:[\"tabindex\",\"-1\",1,\"mat-mdc-dialog-container\",\"mdc-dialog\"],hostVars:10,hostBindings:function(t,i){t&2&&(ft(\"id\",i._config.id),I(\"aria-modal\",i._config.ariaModal)(\"role\",i._config.role)(\"aria-labelledby\",i._config.ariaLabel?null:i._ariaLabelledByQueue[0])(\"aria-label\",i._config.ariaLabel)(\"aria-describedby\",i._config.ariaDescribedBy||null),R(\"_mat-animation-noopable\",!i._animationsEnabled)(\"mat-mdc-dialog-container-with-actions\",i._actionSectionCount>0))},features:[T],decls:3,vars:0,consts:[[1,\"mat-mdc-dialog-inner-container\",\"mdc-dialog__container\"],[1,\"mat-mdc-dialog-surface\",\"mdc-dialog__surface\"],[\"cdkPortalOutlet\",\"\"]],template:function(t,i){t&1&&(c(0,\"div\",0)(1,\"div\",1),N(2,_r,0,0,\"ng-template\",2),d()())},dependencies:[Te],styles:[`.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mat-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mat-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:\"\";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mat-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mat-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mat-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mat-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mat-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mat-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;box-sizing:border-box;min-height:52px;margin:0;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}\n`],encapsulation:2})}return a})(),An=\"--mat-dialog-transition-duration\";function Pn(a){return a==null?null:typeof a==\"number\"?a:a.endsWith(\"ms\")?Qe(a.substring(0,a.length-2)):a.endsWith(\"s\")?Qe(a.substring(0,a.length-1))*1e3:a===\"0\"?0:null}var ht=function(a){return a[a.OPEN=0]=\"OPEN\",a[a.CLOSING=1]=\"CLOSING\",a[a.CLOSED=2]=\"CLOSED\",a}(ht||{}),Xe=class{_ref;_config;_containerInstance;componentInstance;componentRef;disableClose;id;_afterOpened=new x;_beforeClosed=new x;_result;_closeFallbackTimeout;_state=ht.OPEN;_closeInteractionType;constructor(o,e,t){this._ref=o,this._config=e,this._containerInstance=t,this.disableClose=e.disableClose,this.id=o.id,o.addPanelClass(\"mat-mdc-dialog-panel\"),t._animationStateChanged.pipe(ue(i=>i.state===\"opened\"),ze(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),t._animationStateChanged.pipe(ue(i=>i.state===\"closed\"),ze(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),o.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),re(this.backdropClick(),this.keydownEvents().pipe(ue(i=>i.keyCode===27&&!this.disableClose&&!ie(i)))).subscribe(i=>{this.disableClose||(i.preventDefault(),Ln(this,i.type===\"keydown\"?\"keyboard\":\"mouse\"))})}close(o){let e=this._config.closePredicate;e&&!e(o,this._config,this.componentInstance)||(this._result=o,this._containerInstance._animationStateChanged.pipe(ue(t=>t.state===\"closing\"),ze(1)).subscribe(t=>{this._beforeClosed.next(o),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),t.totalTime+100)}),this._state=ht.CLOSING,this._containerInstance._startExitAnimation())}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(o){let e=this._ref.config.positionStrategy;return o&&(o.left||o.right)?o.left?e.left(o.left):e.right(o.right):e.centerHorizontally(),o&&(o.top||o.bottom)?o.top?e.top(o.top):e.bottom(o.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(o=\"\",e=\"\"){return this._ref.updateSize(o,e),this}addPanelClass(o){return this._ref.addPanelClass(o),this}removePanelClass(o){return this._ref.removePanelClass(o),this}getState(){return this._state}_finishDialogClose(){this._state=ht.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function Ln(a,o,e){return a._closeInteractionType=o,a.close(e)}var jt=new k(\"MatMdcDialogData\"),Bn=new k(\"mat-mdc-dialog-default-options\"),Nn=new k(\"mat-mdc-dialog-scroll-strategy\",{providedIn:\"root\",factory:()=>{let a=s(L);return()=>Rt(a)}}),xi=(()=>{class a{_defaultOptions=s(Bn,{optional:!0});_scrollStrategy=s(Nn);_parentDialog=s(a,{optional:!0,skipSelf:!0});_idGenerator=s(ce);_injector=s(L);_dialog=s(In);_animationsDisabled=ae();_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new x;_afterOpenedAtThisLevel=new x;dialogConfigClass=pt;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=Ne(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(he(void 0)));constructor(){this._dialogRefConstructor=Xe,this._dialogContainerType=Fn,this._dialogDataToken=jt}open(e,t){let i;t=X(X({},this._defaultOptions||new pt),t),t.id=t.id||this._idGenerator.getId(\"mat-mdc-dialog-\"),t.scrollStrategy=t.scrollStrategy||this._scrollStrategy();let n=this._dialog.open(e,Mi(X({},t),{positionStrategy:St(this._injector).centerHorizontally().centerVertically(),disableClose:!0,closePredicate:void 0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,disableAnimations:this._animationsDisabled||t.enterAnimationDuration?.toLocaleString()===\"0\"||t.exitAnimationDuration?.toString()===\"0\",container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:t},{provide:Re,useValue:t}]},templateContext:()=>({dialogRef:i}),providers:(r,l,h)=>(i=new this._dialogRefConstructor(r,t,h),i.updatePosition(t?.position),[{provide:this._dialogContainerType,useValue:h},{provide:this._dialogDataToken,useValue:l.data},{provide:this._dialogRefConstructor,useValue:i}])}));return i.componentRef=n.componentRef,i.componentInstance=n.componentInstance,this.openDialogs.push(i),this.afterOpened.next(i),i.afterClosed().subscribe(()=>{let r=this.openDialogs.indexOf(i);r>-1&&(this.openDialogs.splice(r,1),this.openDialogs.length||this._getAfterAllClosed().next())}),i}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(t=>t.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let t=e.length;for(;t--;)e[t].close()}static \\u0275fac=function(t){return new(t||a)};static \\u0275prov=ke({token:a,factory:a.\\u0275fac,providedIn:\"root\"})}return a})();var Qt=class a{dialogRef=s(Xe);data=s(jt);onConfirm(){this.dialogRef.close(!0)}onCancel(){this.dialogRef.close()}static \\u0275fac=function(e){return new(e||a)};static \\u0275cmp=D({type:a,selectors:[[\"app-confirmation-dialog\"]],decls:10,vars:2,consts:[[1,\"p-4\"],[1,\"text-lg\",\"font-semibold\",\"mb-4\"],[1,\"mb-4\"],[1,\"flex\",\"justify-end\",\"space-x-2\"],[\"mat-stroked-button\",\"\",\"color\",\"warn\",3,\"click\"],[\"mat-flat-button\",\"\",3,\"click\"]],template:function(e,t){e&1&&(c(0,\"div\",0)(1,\"h2\",1),p(2),d(),c(3,\"p\",2),p(4),d(),c(5,\"div\",3)(6,\"button\",4),y(\"click\",function(){return t.onCancel()}),p(7,\" Cancel \"),d(),c(8,\"button\",5),y(\"click\",function(){return t.onConfirm()}),p(9,\" Confirm \"),d()()()),e&2&&(m(2),ee(t.data.title),m(2),ee(t.data.message))},dependencies:[pa],encapsulation:2})};var Gt=class a{dialog=s(xi);confirm(o,e){let t=this.dialog.open(Qt,{width:\"400px\",data:{title:o,message:e}});return Fi(t.afterClosed())}static \\u0275fac=function(e){return new(e||a)};static \\u0275prov=ke({token:a,factory:a.\\u0275fac,providedIn:\"root\"})};var vr=()=>[5,10,20];function Cr(a,o){if(a&1&&(c(0,\"mat-option\",5),p(1),d()),a&2){let e=o.$implicit;b(\"value\",e),m(),ee(e)}}function wr(a,o){a&1&&(c(0,\"th\",23),p(1,\" No. \"),d())}function Dr(a,o){if(a&1&&(c(0,\"td\",24),p(1),d()),a&2){let e=o.$implicit;m(),te(\" \",e.id,\" \")}}function kr(a,o){a&1&&(c(0,\"th\",23),p(1,\" Buyer email \"),d())}function xr(a,o){if(a&1&&(c(0,\"td\",24),p(1),d()),a&2){let e=o.$implicit;m(),te(\" \",e.buyerEmail,\" \")}}function Tr(a,o){a&1&&(c(0,\"th\",23),p(1,\" Date \"),d())}function Rr(a,o){if(a&1&&(c(0,\"td\",24),p(1),Wt(2,\"date\"),d()),a&2){let e=o.$implicit;m(),te(\" \",$i(2,1,e.orderDate,\"short\"),\" \")}}function Sr(a,o){a&1&&(c(0,\"th\",23),p(1,\" Total \"),d())}function Mr(a,o){if(a&1&&(c(0,\"td\",24),p(1),Wt(2,\"currency\"),d()),a&2){let e=o.$implicit;m(),te(\" \",Yi(2,1,e.total),\" \")}}function Ir(a,o){a&1&&(c(0,\"th\",23),p(1,\"Status\"),d())}function Or(a,o){if(a&1&&(c(0,\"td\",24),p(1),d()),a&2){let e=o.$implicit;m(),te(\" \",e.status,\" \")}}function Er(a,o){a&1&&(c(0,\"th\",23),p(1,\"Actions\"),d())}function Ar(a,o){if(a&1){let e=Y();c(0,\"td\",24)(1,\"button\",25)(2,\"mat-icon\",26),p(3,\"visibility\"),d()(),c(4,\"button\",27),y(\"click\",function(){let i=C(e).$implicit,n=v();return w(n.openConfirmDialog(i.id))}),c(5,\"mat-icon\",28),p(6,\"undo\"),d()()()}if(a&2){let e=o.$implicit;m(),b(\"routerLink\",gt(\"/orders/\",e.id)),m(3),b(\"disabled\",e.status===\"Refunded\")}}function Pr(a,o){a&1&&(_e(0),c(1,\"div\",6),p(2,\" No orders available for this filter \"),d(),ge())}function Fr(a,o){a&1&&j(0,\"tr\",29)}function Lr(a,o){a&1&&j(0,\"tr\",30)}var zn=class a{adminService=s(Ba);dialogService=s(Gt);displayedColumns=[\"id\",\"buyerEmail\",\"orderDate\",\"total\",\"status\",\"action\"];dataSource=new Nt([]);orderParams=new zt;totalItems=0;statusOptions=[\"All\",\"PaymentReceived\",\"PaymentMismatch\",\"Refunded\",\"Pending\"];ngOnInit(){this.loadOrders()}loadOrders(){this.adminService.getOrders(this.orderParams).subscribe({next:o=>{console.log(\"API Response:\",o),o.data?(this.dataSource.data=o.data,this.totalItems=o.count):console.error(\"Invalid response data\",o)},error:o=>console.error(\"Error fetching orders\",o)})}onPageChange(o){this.orderParams.pageNumber=o.pageIndex+1,this.orderParams.pageSize=o.pageSize,this.loadOrders()}onFilterSelect(o){this.orderParams.filter=o.value,this.orderParams.pageNumber=1,this.loadOrders()}openConfirmDialog(o){return Ii(this,null,function*(){(yield this.dialogService.confirm(\"Confirm refund\",\"Are you sure you want to issue this refund? This cannot be undone\"))&&this.refundOrder(o)})}refundOrder(o){this.adminService.refundOrder(o).subscribe({next:e=>{this.dataSource.data=this.dataSource.data.map(t=>t.id===o?e:t)}})}static \\u0275fac=function(e){return new(e||a)};static \\u0275cmp=D({type:a,selectors:[[\"app-admin\"]],decls:43,vars:7,consts:[[\"label\",\"Orders\"],[1,\"flex\",\"justify-between\",\"items-center\",\"mt-2\",\"max-w-screen-xl\",\"mx-auto\"],[1,\"text-2xl\",\"font-semibold\"],[\"appearance\",\"outline\",1,\"mt-2\"],[3,\"selectionChange\"],[3,\"value\"],[1,\"p-4\"],[1,\"mat-elevation-z8\"],[\"mat-table\",\"\",1,\"bg-white\",3,\"dataSource\"],[\"matColumnDef\",\"id\"],[\"mat-header-cell\",\"\",4,\"matHeaderCellDef\"],[\"mat-cell\",\"\",4,\"matCellDef\"],[\"matColumnDef\",\"buyerEmail\"],[\"matColumnDef\",\"orderDate\"],[\"matColumnDef\",\"total\"],[\"matColumnDef\",\"status\"],[\"matColumnDef\",\"action\"],[4,\"matNoDataRow\"],[\"mat-header-row\",\"\",4,\"matHeaderRowDef\"],[\"mat-row\",\"\",4,\"matRowDef\",\"matRowDefColumns\"],[\"showFirstLastButtons\",\"\",1,\"bg-white\",3,\"page\",\"pageSizeOptions\",\"length\",\"pageSize\"],[\"label\",\"Catalog\"],[\"label\",\"Other\"],[\"mat-header-cell\",\"\"],[\"mat-cell\",\"\"],[\"mat-icon-button\",\"\",\"matTooltip\",\"View\",3,\"routerLink\"],[1,\"text-blue-600\"],[\"mat-icon-button\",\"\",\"matTooltip\",\"Refund\",3,\"click\",\"disabled\"],[1,\"text-red-500\"],[\"mat-header-row\",\"\"],[\"mat-row\",\"\"]],template:function(e,t){e&1&&(c(0,\"div\")(1,\"mat-tab-group\")(2,\"mat-tab\",0)(3,\"div\",1)(4,\"h2\",2),p(5,\"Customer orders\"),d(),c(6,\"mat-form-field\",3)(7,\"mat-label\"),p(8,\"Filter by status\"),d(),c(9,\"mat-select\",4),y(\"selectionChange\",function(n){return t.onFilterSelect(n)}),Pe(10,Cr,2,2,\"mat-option\",5,Gi),d()()(),c(12,\"div\",6)(13,\"div\",7)(14,\"table\",8),_e(15,9),N(16,wr,2,0,\"th\",10)(17,Dr,2,1,\"td\",11),ge(),_e(18,12),N(19,kr,2,0,\"th\",10)(20,xr,2,1,\"td\",11),ge(),_e(21,13),N(22,Tr,2,0,\"th\",10)(23,Rr,3,4,\"td\",11),ge(),_e(24,14),N(25,Sr,2,0,\"th\",10)(26,Mr,3,3,\"td\",11),ge(),_e(27,15),N(28,Ir,2,0,\"th\",10)(29,Or,2,1,\"td\",11),ge(),_e(30,16),N(31,Er,2,0,\"th\",10)(32,Ar,7,3,\"td\",11),ge(),N(33,Pr,3,0,\"ng-container\",17)(34,Fr,1,0,\"tr\",18)(35,Lr,1,0,\"tr\",19),d(),c(36,\"mat-paginator\",20),y(\"page\",function(n){return t.onPageChange(n)}),d()()()(),c(37,\"mat-tab\",21)(38,\"div\",6),p(39,\"Catalog content\"),d()(),c(40,\"mat-tab\",22)(41,\"div\",6),p(42,\"Customer service\"),d()()()()),e&2&&(m(10),Fe(t.statusOptions),m(4),b(\"dataSource\",t.dataSource),m(20),b(\"matHeaderRowDef\",t.displayedColumns),m(),b(\"matRowDefColumns\",t.displayedColumns),m(),b(\"pageSizeOptions\",Wi(6,vr))(\"length\",t.totalItems)(\"pageSize\",t.orderParams.pageSize))},dependencies:[Mn,Ci,Sn,an,Wa,$a,Xa,qa,Ya,Za,Ua,Ka,Ja,en,tn,Cn,fi,Dt,wt,ma,da,dt,ct,qi,Xi,Xt,lt,ot,st,Ce,Ui],encapsulation:2})};var xm=(a,o)=>{let e=s(La),t=s(Ki),i=s(Na);return e.isAdmin()?!0:(i.error(\"Nope\"),t.navigateByUrl(\"/shop\"),!1)};export{Xe as a,jt as b,Bn as c,xi as d,fi as e,zn as f,xm as g};\n"
  },
  {
    "path": "API/wwwroot/chunk-TEKFR3M2.js",
    "content": "import{a as Y}from\"./chunk-HJYZM75B.js\";import{a as le}from\"./chunk-VOFQZSPR.js\";import{B as $,G as ee,H as te,I as re,J as ne,K as ie,R as oe,U as ae,Y as se}from\"./chunk-YYNGFOZ2.js\";import{Bb as D,Ga as L,Ha as A,M as B,Ma as k,Na as a,Oa as s,P as E,Pb as H,T as u,Ta as M,Tb as K,V as x,Va as R,W as I,Wa as G,Wb as P,Zc as Z,ad as ce,bc as Q,c as m,ca as V,ec as b,ib as l,jb as _,kb as F,ma as f,mb as J,nb as z,ob as X,q as d,r as C,ta as W,vb as S,wb as y}from\"./chunk-76XFCVV7.js\";var me=\"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";var de=(i=21)=>{let e=\"\",t=crypto.getRandomValues(new Uint8Array(i|=0));for(;i--;)e+=me[t[i]&63];return e};var U=class{id=de();items=[];deliveryMethodId;paymentIntentId;clientSecret;coupon};var v=class i{baseUrl=b.baseUrl;http=u(P);cart=V(null);itemCount=D(()=>this.cart()?.items.reduce((e,t)=>e+t.quantity,0));selectedDelivery=V(null);totals=D(()=>{let e=this.cart(),t=this.selectedDelivery();if(!e)return null;let r=e.items.reduce((h,p)=>h+p.price*p.quantity,0),n=0;e.coupon&&(console.log(e),e.coupon.amountOff?n=e.coupon.amountOff:e.coupon.percentOff&&(n=r*(e.coupon.percentOff/100)));let o=t?t.price:0,c=r+o-n;return{subtotal:r,shipping:o,discount:n,total:c}});applyDiscount(e){return this.http.get(this.baseUrl+\"coupons/\"+e)}getCart(e){return this.http.get(this.baseUrl+\"cart?id=\"+e).pipe(C(t=>(this.cart.set(t),t)))}setCart(e){return this.http.post(this.baseUrl+\"cart\",e).pipe(B(t=>{this.cart.set(t)}))}addItemToCart(e,t=1){return m(this,null,function*(){let r=this.cart()??this.createCart();this.isProduct(e)&&(e=this.mapProductToCartItem(e)),r.items=this.addOrUpdateItem(r.items,e,t),yield d(this.setCart(r))})}removeItemFromCart(e,t=1){return m(this,null,function*(){let r=this.cart();if(!r)return;let n=r.items.findIndex(o=>o.productId===e);n!==-1&&(r.items[n].quantity>t?r.items[n].quantity-=t:r.items.splice(n,1),r.items.length===0?this.deleteCart():yield d(this.setCart(r)))})}deleteCart(){this.http.delete(this.baseUrl+\"cart?id=\"+this.cart()?.id).subscribe({next:()=>{localStorage.removeItem(\"cart_id\"),this.cart.set(null)}})}addOrUpdateItem(e,t,r){let n=e.findIndex(o=>o.productId===t.productId);return n===-1?(t.quantity=r,e.push(t)):e[n].quantity+=r,e}mapProductToCartItem(e){return{productId:e.id,productName:e.name,price:e.price,quantity:0,pictureUrl:e.pictureUrl,brand:e.brand,type:e.type}}isProduct(e){return e.id!==void 0}createCart(){let e=new U;return localStorage.setItem(\"cart_id\",e.id),e}static \\u0275fac=function(t){return new(t||i)};static \\u0275prov=E({token:i,factory:i.\\u0275fac,providedIn:\"root\"})};var he=\"basil\",we=function(e){return e===3?\"v3\":e},ve=\"https://js.stripe.com\",Ce=\"\".concat(ve,\"/\").concat(he,\"/stripe.js\"),Ee=/^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/,xe=/^https:\\/\\/js\\.stripe\\.com\\/(v3|[a-z]+)\\/stripe\\.js(\\?.*)?$/,ue=\"loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used\",Ie=function(e){return Ee.test(e)||xe.test(e)},_e=function(){for(var e=document.querySelectorAll('script[src^=\"'.concat(ve,'\"]')),t=0;t<e.length;t++){var r=e[t];if(Ie(r.src))return r}return null},fe=function(e){var t=e&&!e.advancedFraudSignals?\"?advancedFraudSignals=false\":\"\",r=document.createElement(\"script\");r.src=\"\".concat(Ce).concat(t);var n=document.head||document.body;if(!n)throw new Error(\"Expected document.body not to be null. Stripe.js requires a <body> element.\");return n.appendChild(r),r},Pe=function(e,t){!e||!e._registerWrapper||e._registerWrapper({name:\"stripe-js\",version:\"7.4.0\",startTime:t})},g=null,j=null,T=null,Ue=function(e){return function(t){e(new Error(\"Failed to load Stripe.js\",{cause:t}))}},je=function(e,t){return function(){window.Stripe?e(window.Stripe):t(new Error(\"Stripe.js not available\"))}},Te=function(e){return g!==null?g:(g=new Promise(function(t,r){if(typeof window>\"u\"||typeof document>\"u\"){t(null);return}if(window.Stripe&&e&&console.warn(ue),window.Stripe){t(window.Stripe);return}try{var n=_e();if(n&&e)console.warn(ue);else if(!n)n=fe(e);else if(n&&T!==null&&j!==null){var o;n.removeEventListener(\"load\",T),n.removeEventListener(\"error\",j),(o=n.parentNode)===null||o===void 0||o.removeChild(n),n=fe(e)}T=je(t,r),j=Ue(r),n.addEventListener(\"load\",T),n.addEventListener(\"error\",j)}catch(c){r(c);return}}),g.catch(function(t){return g=null,Promise.reject(t)}))},Oe=function(e,t,r){if(e===null)return null;var n=t[0],o=n.match(/^pk_test/),c=we(e.version),h=he;o&&c!==h&&console.warn(\"Stripe.js@\".concat(c,\" was loaded on the page, but @stripe/stripe-js@\").concat(\"7.4.0\",\" expected Stripe.js@\").concat(h,\". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning\"));var p=e.apply(void 0,t);return Pe(p,r),p},w,Se=!1,ye=function(){return w||(w=Te(null).catch(function(e){return w=null,Promise.reject(e)}),w)};Promise.resolve().then(function(){return ye()}).catch(function(i){Se||console.warn(i)});var be=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];Se=!0;var n=Date.now();return ye().then(function(o){return Oe(o,t,n)})};var O=class i{baseUrl=b.baseUrl;stripePromise;cartService=u(v);accountService=u(ce);http=u(P);clientSecret;elements;addressElement;paymentElement;constructor(){this.stripePromise=be(b.stripePublicKey)}getStripeInstance(){return this.stripePromise}initializeElements(){return m(this,null,function*(){if(!this.elements){let e=yield this.getStripeInstance();if(e){let t=yield d(this.createOrUpdatePaymentIntent());this.elements=e.elements({clientSecret:t.clientSecret,appearance:{labels:\"floating\"}})}else throw new Error(\"Stripe has not been loaded\")}return this.elements})}createPaymentElement(){return m(this,null,function*(){if(!this.paymentElement){let e=yield this.initializeElements();if(e)this.paymentElement=e.create(\"payment\");else throw new Error(\"Elements instance has not been initialised\")}return this.paymentElement})}createAddressElement(){return m(this,null,function*(){if(!this.addressElement){let e=yield this.initializeElements();if(e){let t=this.accountService.currentUser(),r={};t&&(r.name=t.firstName+\" \"+t.lastName),t?.address&&(r.address={line1:t.address.line1,line2:t.address.line2,city:t.address.city,state:t.address.state,country:t.address.country,postal_code:t.address.postalCode});let n={mode:\"shipping\",defaultValues:r};this.addressElement=e.create(\"address\",n)}else throw new Error(\"Elements instance has not been loaded\")}return this.addressElement})}createConfirmationToken(){return m(this,null,function*(){let e=yield this.getStripeInstance(),t=yield this.initializeElements(),r=yield t.submit();if(r.error)throw new Error(r.error.message);if(e)return yield e.createConfirmationToken({elements:t});throw new Error(\"Stripe not available\")})}confirmPayment(e){return m(this,null,function*(){let t=yield this.getStripeInstance(),n=yield(yield this.initializeElements()).submit();if(n.error)throw new Error(n.error.message);let o=this.cartService.cart()?.clientSecret;if(t&&o)return yield t.confirmPayment({clientSecret:o,confirmParams:{confirmation_token:e.id},redirect:\"if_required\"});throw new Error(\"Unable to load stripe\")})}createOrUpdatePaymentIntent(){let e=this.cartService.cart(),t=!!e?.clientSecret;if(!e)throw new Error(\"Problem with cart\");return this.http.post(this.baseUrl+\"payments/\"+e.id,{}).pipe(C(r=>m(this,null,function*(){return t||(yield d(this.cartService.setCart(r))),r})))}disposeElements(){this.elements=void 0,this.addressElement=void 0,this.paymentElement=void 0}static \\u0275fac=function(t){return new(t||i)};static \\u0275prov=E({token:i,factory:i.\\u0275fac,providedIn:\"root\"})};function Ve(i,e){i&1&&(a(0,\"div\",13)(1,\"button\",21),l(2,\"Checkout\"),s(),a(3,\"button\",22),l(4,\"Continue Shopping\"),s()())}function Le(i,e){if(i&1){let t=M();a(0,\"div\",17)(1,\"span\",23),l(2),s(),a(3,\"button\",24),R(\"click\",function(){x(t);let n=G();return I(n.removeCouponCode())}),a(4,\"mat-icon\",25),l(5,\"delete\"),s()()()}i&2&&(f(2),F(\"\",e.name,\" applied\"))}var ge=class i{cartService=u(v);stripeService=u(O);location=u(H);code;applyCouponCode(){this.code&&this.cartService.applyDiscount(this.code).subscribe({next:e=>m(this,null,function*(){let t=this.cartService.cart();t&&(t.coupon=e,yield d(this.cartService.setCart(t)),this.code=void 0),this.location.path()===\"/checkout\"&&(yield d(this.stripeService.createOrUpdatePaymentIntent()))})})}removeCouponCode(){return m(this,null,function*(){let e=this.cartService.cart();e&&(e.coupon&&(e.coupon=void 0),yield d(this.cartService.setCart(e)),this.location.path()===\"/checkout\"&&(yield d(this.stripeService.createOrUpdatePaymentIntent())))})}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=W({type:i,selectors:[[\"app-order-summary\"]],decls:43,vars:17,consts:[[\"form\",\"ngForm\"],[1,\"mx-auto\",\"max-w-4xl\",\"flex-1\",\"space-y-6\",\"w-full\"],[1,\"space-y-4\",\"rounded-lg\",\"border\",\"border-gray-200\",\"bg-white\",\"p-4\",\"shadow-sm\"],[1,\"text-xl\",\"font-semibold\"],[1,\"space-y-4\"],[1,\"space-y-2\"],[1,\"flex\",\"items-center\",\"justify-between\",\"gap-4\"],[1,\"font-medium\",\"text-gray-500\"],[1,\"font-medium\",\"text-gray-900\"],[1,\"font-medium\",\"text-green-500\"],[1,\"flex\",\"items-center\",\"justify-between\",\"gap-4\",\"border-t\",\"border-gray-200\",\"pt-2\"],[1,\"font-bold\",\"text-gray-900\"],[1,\"font-semibold\",\"text-gray-900\"],[1,\"flex\",\"flex-col\",\"gap-2\"],[1,\"space-y-4\",\"rounded-lg\",\"border\",\"border-gray-200\",\"bg-white\",\"shadow-sm\"],[1,\"space-y-2\",\"flex\",\"flex-col\",\"p-2\",3,\"ngSubmit\"],[1,\"mb-2\",\"block\",\"text-sm\",\"font-medium\"],[1,\"flex\",\"justify-between\",\"items-center\"],[\"appearance\",\"outline\"],[\"name\",\"code\",\"type\",\"text\",\"matInput\",\"\",3,\"ngModelChange\",\"disabled\",\"ngModel\"],[\"type\",\"submit\",\"mat-flat-button\",\"\",3,\"disabled\"],[\"routerLink\",\"/checkout\",\"mat-flat-button\",\"\"],[\"routerLink\",\"/shop\",\"mat-button\",\"\"],[1,\"text-sm\",\"font-semibold\"],[\"mat-icon-button\",\"\",3,\"click\"],[\"color\",\"warn\"]],template:function(t,r){if(t&1){let n=M();a(0,\"div\",1)(1,\"div\",2)(2,\"p\",3),l(3,\"Order summary\"),s(),a(4,\"div\",4)(5,\"div\",5)(6,\"dl\",6)(7,\"dt\",7),l(8,\"Subtotal\"),s(),a(9,\"dd\",8),l(10),S(11,\"currency\"),s()(),a(12,\"dl\",6)(13,\"dt\",7),l(14,\"Discount\"),s(),a(15,\"dd\",9),l(16),S(17,\"currency\"),s()(),a(18,\"dl\",6)(19,\"dt\",7),l(20,\"Delivery fee\"),s(),a(21,\"dd\",8),l(22),S(23,\"currency\"),s()()(),a(24,\"dl\",10)(25,\"dt\",11),l(26,\"Total\"),s(),a(27,\"dd\",12),l(28),S(29,\"currency\"),s()()(),L(30,Ve,5,0,\"div\",13),s(),a(31,\"div\",14)(32,\"form\",15,0),R(\"ngSubmit\",function(){return x(n),I(r.applyCouponCode())}),a(34,\"label\",16),l(35,\"Do you have a voucher code?\"),s(),L(36,Le,6,1,\"div\",17),a(37,\"mat-form-field\",18)(38,\"mat-label\"),l(39,\"Voucher code\"),s(),a(40,\"input\",19),X(\"ngModelChange\",function(c){return x(n),z(r.code,c)||(r.code=c),I(c)}),s()(),a(41,\"button\",20),l(42,\"Apply code\"),s()()()()}if(t&2){let n,o,c,h,p,N,q;f(10),_(y(11,9,(n=r.cartService.totals())==null?null:n.subtotal)),f(6),F(\" -\",y(17,11,(o=r.cartService.totals())==null?null:o.discount)),f(6),_(y(23,13,(c=r.cartService.totals())==null?null:c.shipping)),f(6),_(y(29,15,(h=r.cartService.totals())==null?null:h.total)),f(2),A(r.location.path()!==\"/checkout\"?30:-1),f(6),A((p=(p=r.cartService.cart())==null?null:p.coupon)?36:-1,p),f(4),k(\"disabled\",!!((N=r.cartService.cart())!=null&&N.coupon)),J(\"ngModel\",r.code),f(),k(\"disabled\",!!((q=r.cartService.cart())!=null&&q.coupon))}},dependencies:[se,ae,Z,Q,le,K,oe,ie,$,ee,te,ne,re,Y],encapsulation:2})};export{v as a,O as b,ge as c};\n"
  },
  {
    "path": "API/wwwroot/chunk-VOFQZSPR.js",
    "content": "import{D as P,F as L,I as V,N as B,W as x,X as M,Z as O,_ as z}from\"./chunk-YYNGFOZ2.js\";import{Aa as h,Ac as D,Cb as H,Fa as S,Kb as v,Oc as b,P as I,R as c,Sc as m,T as s,Ua as R,Va as g,ba as F,fa as A,gb as k,h as d,ha as _,jc as u,k as E,nc as y,oa as T,pa as p,qc as N,rb as w,ta as C,va as f}from\"./chunk-76XFCVV7.js\";var $=(()=>{class r{static \\u0275fac=function(t){return new(t||r)};static \\u0275cmp=C({type:r,selectors:[[\"ng-component\"]],hostAttrs:[\"cdk-text-field-style-loader\",\"\"],decls:0,vars:0,template:function(t,i){},styles:[`textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n`],encapsulation:2,changeDetection:0})}return r})(),W={passive:!0},j=(()=>{class r{_platform=s(u);_ngZone=s(h);_renderer=s(T).createRenderer(null,null);_styleLoader=s(N);_monitoredElements=new Map;constructor(){}monitor(e){if(!this._platform.isBrowser)return E;this._styleLoader.load($);let t=y(e),i=this._monitoredElements.get(t);if(i)return i.subject;let n=new d,o=\"cdk-text-field-autofilled\",a=l=>{l.animationName===\"cdk-text-field-autofill-start\"&&!t.classList.contains(o)?(t.classList.add(o),this._ngZone.run(()=>n.next({target:l.target,isAutofilled:!0}))):l.animationName===\"cdk-text-field-autofill-end\"&&t.classList.contains(o)&&(t.classList.remove(o),this._ngZone.run(()=>n.next({target:l.target,isAutofilled:!1})))},U=this._ngZone.runOutsideAngular(()=>(t.classList.add(\"cdk-text-field-autofill-monitored\"),this._renderer.listen(t,\"animationstart\",a,W)));return this._monitoredElements.set(t,{subject:n,unlisten:U}),n}stopMonitoring(e){let t=y(e),i=this._monitoredElements.get(t);i&&(i.unlisten(),i.subject.complete(),t.classList.remove(\"cdk-text-field-autofill-monitored\"),t.classList.remove(\"cdk-text-field-autofilled\"),this._monitoredElements.delete(t))}ngOnDestroy(){this._monitoredElements.forEach((e,t)=>this.stopMonitoring(t))}static \\u0275fac=function(t){return new(t||r)};static \\u0275prov=I({token:r,factory:r.\\u0275fac,providedIn:\"root\"})}return r})();var q=new c(\"MAT_INPUT_VALUE_ACCESSOR\");var Y=[\"button\",\"checkbox\",\"file\",\"hidden\",\"image\",\"radio\",\"range\",\"reset\",\"submit\"],X=new c(\"MAT_INPUT_CONFIG\"),Ke=(()=>{class r{_elementRef=s(_);_platform=s(u);ngControl=s(L,{optional:!0,self:!0});_autofillMonitor=s(j);_ngZone=s(h);_formField=s(M,{optional:!0});_renderer=s(p);_uid=s(D).getId(\"mat-input-\");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder;_errorStateTracker;_config=s(X,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer;_isNativeSelect;_isTextarea;_isInFormField;focused=!1;stateChanges=new d;controlType=\"mat-input\";autofilled=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=m(e),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(e){this._id=e||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(P.required)??!1}set required(e){this._required=m(e)}_required;get type(){return this._type}set type(e){this._type=e||\"text\",this._validateType(),!this._isTextarea&&b().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}_type=\"text\";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=m(e)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}_neverEmptyInputTypes=[\"date\",\"datetime\",\"datetime-local\",\"month\",\"time\",\"week\"].filter(e=>b().has(e));constructor(){let e=s(V,{optional:!0}),t=s(B,{optional:!0}),i=s(O),n=s(q,{optional:!0,self:!0}),o=this._elementRef.nativeElement,a=o.nodeName.toLowerCase();n?F(n.value)?this._signalBasedValueAccessor=n:this._inputValueAccessor=n:this._inputValueAccessor=o,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(o,\"keyup\",this._iOSKeyupListener)}),this._errorStateTracker=new z(i,this.ngControl,t,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=a===\"select\",this._isTextarea=a===\"textarea\",this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=o.multiple?\"mat-native-select-multiple\":\"mat-native-select\"),this._signalBasedValueAccessor&&H(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){let t=this._elementRef.nativeElement;t.type===\"number\"?(t.type=\"text\",t.setSelectionRange(0,0),t.type=\"number\"):t.setSelectionRange(0,0)}this.focused=e,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){let e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){let e=this._getPlaceholder();if(e!==this._previousPlaceholder){let t=this._elementRef.nativeElement;this._previousPlaceholder=e,e?t.setAttribute(\"placeholder\",e):t.removeAttribute(\"placeholder\")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Y.indexOf(this._type)>-1}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let e=this._elementRef.nativeElement,t=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&t&&t.label)}else return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute(\"aria-describedby\")?.split(\" \")||[]}setDescribedByIds(e){let t=this._elementRef.nativeElement;e.length?t.setAttribute(\"aria-describedby\",e.join(\" \")):t.removeAttribute(\"aria-describedby\")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){let e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{let t=e.target;!t.value&&t.selectionStart===0&&t.selectionEnd===0&&(t.setSelectionRange(1,1),t.setSelectionRange(0,0))};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?\"true\":null}static \\u0275fac=function(t){return new(t||r)};static \\u0275dir=f({type:r,selectors:[[\"input\",\"matInput\",\"\"],[\"textarea\",\"matInput\",\"\"],[\"select\",\"matNativeControl\",\"\"],[\"input\",\"matNativeControl\",\"\"],[\"textarea\",\"matNativeControl\",\"\"]],hostAttrs:[1,\"mat-mdc-input-element\"],hostVars:21,hostBindings:function(t,i){t&1&&g(\"focus\",function(){return i._focusChanged(!0)})(\"blur\",function(){return i._focusChanged(!1)})(\"input\",function(){return i._onInput()}),t&2&&(R(\"id\",i.id)(\"disabled\",i.disabled&&!i.disabledInteractive)(\"required\",i.required),S(\"name\",i.name||null)(\"readonly\",i._getReadonlyAttribute())(\"aria-disabled\",i.disabled&&i.disabledInteractive?\"true\":null)(\"aria-invalid\",i.empty&&i.required?null:i.errorState)(\"aria-required\",i.required)(\"id\",i.id),k(\"mat-input-server\",i._isServer)(\"mat-mdc-form-field-textarea-control\",i._isInFormField&&i._isTextarea)(\"mat-mdc-form-field-input-control\",i._isInFormField)(\"mat-mdc-input-disabled-interactive\",i.disabledInteractive)(\"mdc-text-field__input\",i._isInFormField)(\"mat-mdc-native-select-inline\",i._isInlineSelect()))},inputs:{disabled:\"disabled\",id:\"id\",placeholder:\"placeholder\",name:\"name\",required:\"required\",type:\"type\",errorStateMatcher:\"errorStateMatcher\",userAriaDescribedBy:[0,\"aria-describedby\",\"userAriaDescribedBy\"],value:\"value\",readonly:\"readonly\",disabledInteractive:[2,\"disabledInteractive\",\"disabledInteractive\",v]},exportAs:[\"matInput\"],features:[w([{provide:x,useExisting:r}]),A]})}return r})();export{Ke as a};\n"
  },
  {
    "path": "API/wwwroot/chunk-WAIB6SCQ.js",
    "content": "import{a as S}from\"./chunk-PEWDZYDO.js\";import{a as D}from\"./chunk-VOFQZSPR.js\";import{B as F,D as u,F as O,G as d,H as N,K as _,M as J,N as E,O as M,Q as w,S as f,U as I,V as $,Y as R,aa as z}from\"./chunk-YYNGFOZ2.js\";import{Ga as g,Ha as b,Ja as B,Ka as U,La as A,Ma as p,Na as i,Oa as r,Pa as s,T as l,Va as v,Wa as C,Zc as h,_b as k,ac as y,ad as T,ib as m,jb as x,kb as V,ma as a,pb as j,qa as q,ta as c}from\"./chunk-76XFCVV7.js\";var L=class t{fb=l(w);accountService=l(T);router=l(y);activatedRoute=l(k);returnUrl=\"/shop\";constructor(){let o=this.activatedRoute.snapshot.queryParams.returnUrl;o&&(this.returnUrl=o)}loginForm=this.fb.group({email:[\"\"],password:[\"\"]});onSubmit(){this.accountService.login(this.loginForm.value).subscribe({next:()=>{this.accountService.getUserInfo().subscribe(),this.router.navigateByUrl(this.returnUrl)}})}static \\u0275fac=function(e){return new(e||t)};static \\u0275cmp=c({type:t,selectors:[[\"app-login\"]],decls:15,vars:1,consts:[[1,\"max-w-lg\",\"mx-auto\",\"mt-32\",\"p-8\",\"bg-white\"],[3,\"ngSubmit\",\"formGroup\"],[1,\"text-center\",\"mb-6\"],[1,\"text-3xl\",\"font-semibold\",\"text-primary\"],[\"appearance\",\"outline\",1,\"w-full\",\"mb-4\"],[\"matInput\",\"\",\"formControlName\",\"email\",\"type\",\"email\",\"placeholder\",\"name@example.com\"],[\"appearance\",\"outline\",1,\"w-full\",\"mb-6\"],[\"matInput\",\"\",\"formControlName\",\"password\",\"type\",\"password\",\"placeholder\",\"Password\"],[\"mat-flat-button\",\"\",\"type\",\"submit\",\"color\",\"primary\",1,\"w-full\",\"py-2\"]],template:function(e,n){e&1&&(i(0,\"mat-card\",0)(1,\"form\",1),v(\"ngSubmit\",function(){return n.onSubmit()}),i(2,\"div\",2)(3,\"h1\",3),m(4,\"Login\"),r()(),i(5,\"mat-form-field\",4)(6,\"mat-label\"),m(7,\"Email address\"),r(),s(8,\"input\",5),r(),i(9,\"mat-form-field\",6)(10,\"mat-label\"),m(11,\"Password\"),r(),s(12,\"input\",7),r(),i(13,\"button\",8),m(14,\"Sign in\"),r()()()),e&2&&(a(),p(\"formGroup\",n.loginForm))},dependencies:[f,_,F,d,N,E,M,S,R,D,h,I],encapsulation:2})};function X(t,o){if(t&1&&(i(0,\"mat-error\"),m(1),r()),t&2){let e=C();a(),V(\"\",e.label,\" is required\")}}function Y(t,o){t&1&&(i(0,\"mat-error\"),m(1,\"Email is invalid\"),r())}var G=class t{constructor(o){this.controlDir=o;this.controlDir.valueAccessor=this}label=\"\";type=\"text\";writeValue(o){}registerOnChange(o){}registerOnTouched(o){}get control(){return this.controlDir.control}static \\u0275fac=function(e){return new(e||t)(q(O,2))};static \\u0275cmp=c({type:t,selectors:[[\"app-text-input\"]],inputs:{label:\"label\",type:\"type\"},decls:6,vars:7,consts:[[\"appearance\",\"outline\",1,\"w-full\",\"mb-3\"],[\"matInput\",\"\",3,\"formControl\",\"type\",\"placeholder\"]],template:function(e,n){e&1&&(i(0,\"mat-form-field\",0)(1,\"mat-label\"),m(2),r(),s(3,\"input\",1),g(4,X,2,1,\"mat-error\"),g(5,Y,2,0,\"mat-error\"),r()),e&2&&(a(2),x(n.label),a(),p(\"placeholder\",j(n.label))(\"formControl\",n.control)(\"type\",n.type),a(),b(n.control.hasError(\"required\")?4:-1),a(),b(n.control.hasError(\"email\")?5:-1))},dependencies:[R,D,$,I,f,F,d,J],encapsulation:2})};function Z(t,o){if(t&1&&(i(0,\"li\"),m(1),r()),t&2){let e=o.$implicit;a(),x(e)}}function ee(t,o){if(t&1&&(i(0,\"div\",8)(1,\"ul\",10),U(2,Z,2,1,\"li\",null,B),r()()),t&2){let e=C();a(2),A(e.validationErrors)}}var P=class t{fb=l(w);accountService=l(T);router=l(y);snack=l(z);validationErrors=[];registerForm=this.fb.group({firstName:[\"\",u.required],lastName:[\"\",u.required],email:[\"\",[u.required,u.email]],password:[\"\",[u.required]]});onSubmit(){this.accountService.register(this.registerForm.value).subscribe({next:()=>{this.snack.success(\"Registration successful - you can now login!\"),this.router.navigateByUrl(\"/account/login\")},error:o=>this.validationErrors=o})}static \\u0275fac=function(e){return new(e||t)};static \\u0275cmp=c({type:t,selectors:[[\"app-register\"]],decls:12,vars:3,consts:[[1,\"max-w-lg\",\"mx-auto\",\"mt-32\",\"p-8\",\"bg-white\"],[3,\"ngSubmit\",\"formGroup\"],[1,\"text-center\",\"mb-6\"],[1,\"text-3xl\",\"font-semibold\",\"text-primary\"],[\"label\",\"First name\",\"formControlName\",\"firstName\"],[\"label\",\"Last name\",\"formControlName\",\"lastName\"],[\"label\",\"Email address\",\"formControlName\",\"email\"],[\"label\",\"Password\",\"formControlName\",\"password\",\"type\",\"password\"],[1,\"mb-3\",\"p-4\",\"bg-red-100\",\"text-red-500\"],[\"mat-flat-button\",\"\",\"type\",\"submit\",1,\"w-full\",\"py-2\",3,\"disabled\"],[1,\"list-disc\",\"px-3\"]],template:function(e,n){e&1&&(i(0,\"mat-card\",0)(1,\"form\",1),v(\"ngSubmit\",function(){return n.onSubmit()}),i(2,\"div\",2)(3,\"h1\",3),m(4,\"Register\"),r()(),s(5,\"app-text-input\",4)(6,\"app-text-input\",5)(7,\"app-text-input\",6)(8,\"app-text-input\",7),g(9,ee,4,0,\"div\",8),i(10,\"button\",9),m(11,\"Register\"),r()()()),e&2&&(a(),p(\"formGroup\",n.registerForm),a(8),b(n.validationErrors.length>0?9:-1),a(),p(\"disabled\",n.registerForm.invalid))},dependencies:[S,f,_,d,N,E,M,h,G],encapsulation:2})};var Ie=[{path:\"login\",component:L},{path:\"register\",component:P}];export{Ie as accountRoutes};\n"
  },
  {
    "path": "API/wwwroot/chunk-YYNGFOZ2.js",
    "content": "import{$a as w,Aa as x,Ab as ie,Ac as le,Ba as me,Bb as Z,Bc as Hi,Ca as Mi,E as Nt,Ea as Oi,Fa as pe,G as Lt,Ga as R,Gb as Ne,Ha as F,Hb as Vi,Hc as ge,I as zt,Ib as _e,Ic as Le,Jc as $t,K as he,Kb as Q,Kc as Se,L as Ei,Lc as ft,Ma as Ce,Mb as Pi,Mc as De,N as ot,Na as k,Nb as Ii,Nc as Zt,O as X,Oa as C,Ob as Yt,P as y,Pa as q,Pb as Ti,Pc as Wi,Q as V,Qc as ze,R as g,Rb as Bi,Rc as b,Sc as Gi,T as a,Ta as dt,U as st,Ua as Ht,V as at,Va as $,W as lt,Wa as G,Xa as ct,Ya as H,Z as O,Za as we,Zc as Ui,_ as j,_a as I,a as _,ab as S,b as L,bb as Ri,ca as K,cb as Te,d as Y,db as Wt,eb as Gt,f as it,fa as J,g as Ci,ga as ae,gb as T,h as m,ha as D,ib as Be,ic as ht,ja as ki,jb as Fi,jc as U,kb as Ut,l as wi,m as nt,ma as v,na as fe,nc as Ni,oa as ue,pa as ee,qa as u,qc as Xt,r as rt,ra as be,rb as B,sa as jt,sc as qt,ta as te,tc as Li,u as Si,ua as P,va as h,vc as zi,w as Di,x as se,xa as E,y as Bt,ya as xe,yb as Ai,yc as ji,za as M}from\"./chunk-76XFCVV7.js\";var en=(()=>{class n{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty(\"disabled\",e)}static \\u0275fac=function(i){return new(i||n)(u(ee),u(D))};static \\u0275dir=h({type:n})}return n})(),tn=(()=>{class n extends en{static \\u0275fac=(()=>{let e;return function(r){return(e||(e=ae(n)))(r||n)}})();static \\u0275dir=h({type:n,features:[E]})}return n})(),qe=new g(\"\");var ar={provide:qe,useExisting:X(()=>nn),multi:!0};function lr(){let n=Yt()?Yt().getUserAgent():\"\";return/android (\\d+)/.test(n.toLowerCase())}var dr=new g(\"\"),nn=(()=>{class n extends en{_compositionMode;_composing=!1;constructor(e,i,r){super(e,i),this._compositionMode=r,this._compositionMode==null&&(this._compositionMode=!lr())}writeValue(e){let i=e??\"\";this.setProperty(\"value\",i)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \\u0275fac=function(i){return new(i||n)(u(ee),u(D),u(dr,8))};static \\u0275dir=h({type:n,selectors:[[\"input\",\"formControlName\",\"\",3,\"type\",\"checkbox\"],[\"textarea\",\"formControlName\",\"\"],[\"input\",\"formControl\",\"\",3,\"type\",\"checkbox\"],[\"textarea\",\"formControl\",\"\"],[\"input\",\"ngModel\",\"\",3,\"type\",\"checkbox\"],[\"textarea\",\"ngModel\",\"\"],[\"\",\"ngDefaultControl\",\"\"]],hostBindings:function(i,r){i&1&&$(\"input\",function(s){return r._handleInput(s.target.value)})(\"blur\",function(){return r.onTouched()})(\"compositionstart\",function(){return r._compositionStart()})(\"compositionend\",function(s){return r._compositionEnd(s.target.value)})},standalone:!1,features:[B([ar]),E]})}return n})();function ei(n){return n==null||ti(n)===0}function ti(n){return n==null?null:Array.isArray(n)||typeof n==\"string\"?n.length:n instanceof Set?n.size:null}var Re=new g(\"\"),$e=new g(\"\"),cr=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Yi=class{static min(t){return rn(t)}static max(t){return hr(t)}static required(t){return fr(t)}static requiredTrue(t){return ur(t)}static email(t){return mr(t)}static minLength(t){return pr(t)}static maxLength(t){return _r(t)}static pattern(t){return gr(t)}static nullValidator(t){return mt()}static compose(t){return cn(t)}static composeAsync(t){return hn(t)}};function rn(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e<n?{min:{min:n,actual:t.value}}:null}}function hr(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e>n?{max:{max:n,actual:t.value}}:null}}function fr(n){return ei(n.value)?{required:!0}:null}function ur(n){return n.value===!0?null:{required:!0}}function mr(n){return ei(n.value)||cr.test(n.value)?null:{email:!0}}function pr(n){return t=>{let e=t.value?.length??ti(t.value);return e===null||e===0?null:e<n?{minlength:{requiredLength:n,actualLength:e}}:null}}function _r(n){return t=>{let e=t.value?.length??ti(t.value);return e!==null&&e>n?{maxlength:{requiredLength:n,actualLength:e}}:null}}function gr(n){if(!n)return mt;let t,e;return typeof n==\"string\"?(e=\"\",n.charAt(0)!==\"^\"&&(e+=\"^\"),e+=n,n.charAt(n.length-1)!==\"$\"&&(e+=\"$\"),t=new RegExp(e)):(e=n.toString(),t=n),i=>{if(ei(i.value))return null;let r=i.value;return t.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}function mt(n){return null}function on(n){return n!=null}function sn(n){return Mi(n)?wi(n):n}function an(n){let t={};return n.forEach(e=>{t=e!=null?_(_({},t),e):t}),Object.keys(t).length===0?null:t}function ln(n,t){return t.map(e=>e(n))}function vr(n){return!n.validate}function dn(n){return n.map(t=>vr(t)?t:e=>t.validate(e))}function cn(n){if(!n)return null;let t=n.filter(on);return t.length==0?null:function(e){return an(ln(e,t))}}function ii(n){return n!=null?cn(dn(n)):null}function hn(n){if(!n)return null;let t=n.filter(on);return t.length==0?null:function(e){let i=ln(e,t).map(sn);return Si(i).pipe(rt(an))}}function ni(n){return n!=null?hn(dn(n)):null}function Xi(n,t){return n===null?[t]:Array.isArray(n)?[...n,t]:[n,t]}function fn(n){return n._rawValidators}function un(n){return n._rawAsyncValidators}function Qt(n){return n?Array.isArray(n)?n:[n]:[]}function pt(n,t){return Array.isArray(n)?n.includes(t):n===t}function qi(n,t){let e=Qt(t);return Qt(n).forEach(r=>{pt(e,r)||e.push(r)}),e}function $i(n,t){return Qt(t).filter(e=>!pt(n,e))}var _t=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(t){this._rawValidators=t||[],this._composedValidatorFn=ii(this._rawValidators)}_setAsyncValidators(t){this._rawAsyncValidators=t||[],this._composedAsyncValidatorFn=ni(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(t){this._onDestroyCallbacks.push(t)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(t=>t()),this._onDestroyCallbacks=[]}reset(t=void 0){this.control&&this.control.reset(t)}hasError(t,e){return this.control?this.control.hasError(t,e):!1}getError(t,e){return this.control?this.control.getError(t,e):null}},ne=class extends _t{name;get formDirective(){return null}get path(){return null}},re=class extends _t{_parent=null;name=null;valueAccessor=null},gt=class{_cd;constructor(t){this._cd=t}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}},yr={\"[class.ng-untouched]\":\"isUntouched\",\"[class.ng-touched]\":\"isTouched\",\"[class.ng-pristine]\":\"isPristine\",\"[class.ng-dirty]\":\"isDirty\",\"[class.ng-valid]\":\"isValid\",\"[class.ng-invalid]\":\"isInvalid\",\"[class.ng-pending]\":\"isPending\"},as=L(_({},yr),{\"[class.ng-submitted]\":\"isSubmitted\"}),ls=(()=>{class n extends gt{constructor(e){super(e)}static \\u0275fac=function(i){return new(i||n)(u(re,2))};static \\u0275dir=h({type:n,selectors:[[\"\",\"formControlName\",\"\"],[\"\",\"ngModel\",\"\"],[\"\",\"formControl\",\"\"]],hostVars:14,hostBindings:function(i,r){i&2&&T(\"ng-untouched\",r.isUntouched)(\"ng-touched\",r.isTouched)(\"ng-pristine\",r.isPristine)(\"ng-dirty\",r.isDirty)(\"ng-valid\",r.isValid)(\"ng-invalid\",r.isInvalid)(\"ng-pending\",r.isPending)},standalone:!1,features:[E]})}return n})(),ds=(()=>{class n extends gt{constructor(e){super(e)}static \\u0275fac=function(i){return new(i||n)(u(ne,10))};static \\u0275dir=h({type:n,selectors:[[\"\",\"formGroupName\",\"\"],[\"\",\"formArrayName\",\"\"],[\"\",\"ngModelGroup\",\"\"],[\"\",\"formGroup\",\"\"],[\"form\",3,\"ngNoForm\",\"\"],[\"\",\"ngForm\",\"\"]],hostVars:16,hostBindings:function(i,r){i&2&&T(\"ng-untouched\",r.isUntouched)(\"ng-touched\",r.isTouched)(\"ng-pristine\",r.isPristine)(\"ng-dirty\",r.isDirty)(\"ng-valid\",r.isValid)(\"ng-invalid\",r.isInvalid)(\"ng-pending\",r.isPending)(\"ng-submitted\",r.isSubmitted)},standalone:!1,features:[E]})}return n})();var je=\"VALID\",ut=\"INVALID\",Ee=\"PENDING\",He=\"DISABLED\",de=class{},vt=class extends de{value;source;constructor(t,e){super(),this.value=t,this.source=e}},Ge=class extends de{pristine;source;constructor(t,e){super(),this.pristine=t,this.source=e}},Ue=class extends de{touched;source;constructor(t,e){super(),this.touched=t,this.source=e}},ke=class extends de{status;source;constructor(t,e){super(),this.status=t,this.source=e}},yt=class extends de{source;constructor(t){super(),this.source=t}},bt=class extends de{source;constructor(t){super(),this.source=t}};function ri(n){return(St(n)?n.validators:n)||null}function br(n){return Array.isArray(n)?ii(n):n||null}function oi(n,t){return(St(t)?t.asyncValidators:n)||null}function xr(n){return Array.isArray(n)?ni(n):n||null}function St(n){return n!=null&&!Array.isArray(n)&&typeof n==\"object\"}function mn(n,t,e){let i=n.controls;if(!(t?Object.keys(i):i).length)throw new ot(1e3,\"\");if(!i[e])throw new ot(1001,\"\")}function pn(n,t,e){n._forEachChild((i,r)=>{if(e[r]===void 0)throw new ot(1002,\"\")})}var Me=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(t,e){this._assignValidators(t),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(t){this._rawValidators=this._composedValidatorFn=t}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(t){this._rawAsyncValidators=this._composedAsyncValidatorFn=t}get parent(){return this._parent}get status(){return ie(this.statusReactive)}set status(t){ie(()=>this.statusReactive.set(t))}_status=Z(()=>this.statusReactive());statusReactive=K(void 0);get valid(){return this.status===je}get invalid(){return this.status===ut}get pending(){return this.status==Ee}get disabled(){return this.status===He}get enabled(){return this.status!==He}errors;get pristine(){return ie(this.pristineReactive)}set pristine(t){ie(()=>this.pristineReactive.set(t))}_pristine=Z(()=>this.pristineReactive());pristineReactive=K(!0);get dirty(){return!this.pristine}get touched(){return ie(this.touchedReactive)}set touched(t){ie(()=>this.touchedReactive.set(t))}_touched=Z(()=>this.touchedReactive());touchedReactive=K(!1);get untouched(){return!this.touched}_events=new m;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:\"change\"}setValidators(t){this._assignValidators(t)}setAsyncValidators(t){this._assignAsyncValidators(t)}addValidators(t){this.setValidators(qi(t,this._rawValidators))}addAsyncValidators(t){this.setAsyncValidators(qi(t,this._rawAsyncValidators))}removeValidators(t){this.setValidators($i(t,this._rawValidators))}removeAsyncValidators(t){this.setAsyncValidators($i(t,this._rawAsyncValidators))}hasValidator(t){return pt(this._rawValidators,t)}hasAsyncValidator(t){return pt(this._rawAsyncValidators,t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){let e=this.touched===!1;this.touched=!0;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsTouched(L(_({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new Ue(!0,i))}markAllAsDirty(t={}){this.markAsDirty({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(t))}markAllAsTouched(t={}){this.markAsTouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(t))}markAsUntouched(t={}){let e=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:i})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,i),e&&t.emitEvent!==!1&&this._events.next(new Ue(!1,i))}markAsDirty(t={}){let e=this.pristine===!0;this.pristine=!1;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsDirty(L(_({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new Ge(!1,i))}markAsPristine(t={}){let e=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:t.emitEvent})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t,i),e&&t.emitEvent!==!1&&this._events.next(new Ge(!0,i))}markAsPending(t={}){this.status=Ee;let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new ke(this.status,e)),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.markAsPending(L(_({},t),{sourceControl:e}))}disable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=He,this.errors=null,this._forEachChild(r=>{r.disable(L(_({},t),{onlySelf:!0}))}),this._updateValue();let i=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new vt(this.value,i)),this._events.next(new ke(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(L(_({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=je,this._forEachChild(i=>{i.enable(L(_({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(L(_({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(t,e){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine({},e),this._parent._updateTouched({},e))}setParent(t){this._parent=t}getRawValue(){return this.value}updateValueAndValidity(t={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===je||this.status===Ee)&&this._runAsyncValidator(i,t.emitEvent)}let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new vt(this.value,e)),this._events.next(new ke(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(L(_({},t),{sourceControl:e}))}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?He:je}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t,e){if(this.asyncValidator){this.status=Ee,this._hasOwnPendingAsyncValidator={emitEvent:e!==!1,shouldHaveEmitted:t!==!1};let i=sn(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:e,shouldHaveEmitted:t})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let t=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,t}return!1}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(e.emitEvent!==!1,this,e.shouldHaveEmitted)}get(t){let e=t;return e==null||(Array.isArray(e)||(e=e.split(\".\")),e.length===0)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(t,e){let i=e?this.get(e):this;return i&&i.errors?i.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t,e,i){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),(t||i)&&this._events.next(new ke(this.status,e)),this._parent&&this._parent._updateControlsErrors(t,e,i)}_initObservables(){this.valueChanges=new M,this.statusChanges=new M}_calculateStatus(){return this._allControlsDisabled()?He:this.errors?ut:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Ee)?Ee:this._anyControlsHaveStatus(ut)?ut:je}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t,e){let i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,this._parent&&!t.onlySelf&&this._parent._updatePristine(t,e),r&&this._events.next(new Ge(this.pristine,e))}_updateTouched(t={},e){this.touched=this._anyControlsTouched(),this._events.next(new Ue(this.touched,e)),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,e)}_onDisabledChange=[];_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){St(t)&&t.updateOn!=null&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){let e=this._parent&&this._parent.dirty;return!t&&!!e&&!this._parent._anyControlsDirty()}_find(t){return null}_assignValidators(t){this._rawValidators=Array.isArray(t)?t.slice():t,this._composedValidatorFn=br(this._rawValidators)}_assignAsyncValidators(t){this._rawAsyncValidators=Array.isArray(t)?t.slice():t,this._composedAsyncValidatorFn=xr(this._rawAsyncValidators)}},Oe=class extends Me{constructor(t,e,i){super(ri(e),oi(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e,i={}){this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(t,e={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(t,e,i={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){pn(this,!0,t),Object.keys(t).forEach(i=>{mn(this,!0,i),this.controls[i].setValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(Object.keys(t).forEach(i=>{let r=this.controls[i];r&&r.patchValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t={},e={}){this._forEachChild((i,r)=>{i.reset(t?t[r]:null,{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,i)=>(t[i]=e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(e,i)=>i._syncPendingControls()?!0:e);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){Object.keys(this.controls).forEach(e=>{let i=this.controls[e];i&&t(i,e)})}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(let[e,i]of Object.entries(this.controls))if(this.contains(e)&&t(i))return!0;return!1}_reduceValue(){let t={};return this._reduceChildren(t,(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(t,e){let i=t;return this._forEachChild((r,o)=>{i=e(i,r,o)}),i}_allControlsDisabled(){for(let t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(t){return this.controls.hasOwnProperty(t)?this.controls[t]:null}};var Kt=class extends Oe{};var Fe=new g(\"\",{providedIn:\"root\",factory:()=>Dt}),Dt=\"always\";function _n(n,t){return[...t.path,n]}function Xe(n,t,e=Dt){si(n,t),t.valueAccessor.writeValue(n.value),(n.disabled||e===\"always\")&&t.valueAccessor.setDisabledState?.(n.disabled),wr(n,t),Dr(n,t),Sr(n,t),Cr(n,t)}function xt(n,t,e=!0){let i=()=>{};t.valueAccessor&&(t.valueAccessor.registerOnChange(i),t.valueAccessor.registerOnTouched(i)),wt(n,t),n&&(t._invokeOnDestroyCallbacks(),n._registerOnCollectionChange(()=>{}))}function Ct(n,t){n.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(t)})}function Cr(n,t){if(t.valueAccessor.setDisabledState){let e=i=>{t.valueAccessor.setDisabledState(i)};n.registerOnDisabledChange(e),t._registerOnDestroy(()=>{n._unregisterOnDisabledChange(e)})}}function si(n,t){let e=fn(n);t.validator!==null?n.setValidators(Xi(e,t.validator)):typeof e==\"function\"&&n.setValidators([e]);let i=un(n);t.asyncValidator!==null?n.setAsyncValidators(Xi(i,t.asyncValidator)):typeof i==\"function\"&&n.setAsyncValidators([i]);let r=()=>n.updateValueAndValidity();Ct(t._rawValidators,r),Ct(t._rawAsyncValidators,r)}function wt(n,t){let e=!1;if(n!==null){if(t.validator!==null){let r=fn(n);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==t.validator);o.length!==r.length&&(e=!0,n.setValidators(o))}}if(t.asyncValidator!==null){let r=un(n);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==t.asyncValidator);o.length!==r.length&&(e=!0,n.setAsyncValidators(o))}}}let i=()=>{};return Ct(t._rawValidators,i),Ct(t._rawAsyncValidators,i),e}function wr(n,t){t.valueAccessor.registerOnChange(e=>{n._pendingValue=e,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn===\"change\"&&gn(n,t)})}function Sr(n,t){t.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn===\"blur\"&&n._pendingChange&&gn(n,t),n.updateOn!==\"submit\"&&n.markAsTouched()})}function gn(n,t){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function Dr(n,t){let e=(i,r)=>{t.valueAccessor.writeValue(i),r&&t.viewToModelUpdate(i)};n.registerOnChange(e),t._registerOnDestroy(()=>{n._unregisterOnChange(e)})}function vn(n,t){n==null,si(n,t)}function Er(n,t){return wt(n,t)}function ai(n,t){if(!n.hasOwnProperty(\"model\"))return!1;let e=n.model;return e.isFirstChange()?!0:!Object.is(t,e.currentValue)}function kr(n){return Object.getPrototypeOf(n.constructor)===tn}function yn(n,t){n._syncPendingControls(),t.forEach(e=>{let i=e.control;i.updateOn===\"submit\"&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function li(n,t){if(!t)return null;Array.isArray(t);let e,i,r;return t.forEach(o=>{o.constructor===nn?e=o:kr(o)?i=o:r=o}),r||i||e||null}function Mr(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}var Or={provide:ne,useExisting:X(()=>Rr)},We=Promise.resolve(),Rr=(()=>{class n extends ne{callSetDisabledState;get submitted(){return ie(this.submittedReactive)}_submitted=Z(()=>this.submittedReactive());submittedReactive=K(!1);_directives=new Set;form;ngSubmit=new M;options;constructor(e,i,r){super(),this.callSetDisabledState=r,this.form=new Oe({},ii(e),ni(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){We.then(()=>{let i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),Xe(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){We.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){We.then(()=>{let i=this._findContainer(e.path),r=new Oe({});vn(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){We.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){We.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),yn(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new yt(this.control)),e?.target?.method===\"dialog\"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1),this.form._events.next(new bt(this.form))}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \\u0275fac=function(i){return new(i||n)(u(Re,10),u($e,10),u(Fe,8))};static \\u0275dir=h({type:n,selectors:[[\"form\",3,\"ngNoForm\",\"\",3,\"formGroup\",\"\"],[\"ng-form\"],[\"\",\"ngForm\",\"\"]],hostBindings:function(i,r){i&1&&$(\"submit\",function(s){return r.onSubmit(s)})(\"reset\",function(){return r.onReset()})},inputs:{options:[0,\"ngFormOptions\",\"options\"]},outputs:{ngSubmit:\"ngSubmit\"},exportAs:[\"ngForm\"],standalone:!1,features:[B([Or]),E]})}return n})();function Zi(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}function Qi(n){return typeof n==\"object\"&&n!==null&&Object.keys(n).length===2&&\"value\"in n&&\"disabled\"in n}var Ye=class extends Me{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(t=null,e,i){super(ri(e),oi(i,e)),this._applyFormState(t),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),St(e)&&(e.nonNullable||e.initialValueIsDefault)&&(Qi(t)?this.defaultValue=t.value:this.defaultValue=t)}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&e.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,e.emitViewToModelChange!==!1)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=this.defaultValue,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_unregisterOnChange(t){Zi(this._onChange,t)}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_unregisterOnDisabledChange(t){Zi(this._onDisabledChange,t)}_forEachChild(t){}_syncPendingControls(){return this.updateOn===\"submit\"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(t){Qi(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}};var Fr=n=>n instanceof Ye;var Ar={provide:re,useExisting:X(()=>Vr)},Ki=Promise.resolve(),Vr=(()=>{class n extends re{_changeDetectorRef;callSetDisabledState;control=new Ye;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name=\"\";isDisabled;model;options;update=new M;constructor(e,i,r,o,s,l){super(),this._changeDetectorRef=s,this.callSetDisabledState=l,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=li(this,o)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||\"name\"in e){if(this._registered&&(this._checkName(),this.formDirective)){let i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}\"isDisabled\"in e&&this._updateDisabled(e),ai(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Xe(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(e){Ki.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){let i=e.isDisabled.currentValue,r=i!==0&&Q(i);Ki.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?_n(e,this._parent):[e]}static \\u0275fac=function(i){return new(i||n)(u(ne,9),u(Re,10),u($e,10),u(qe,10),u(_e,8),u(Fe,8))};static \\u0275dir=h({type:n,selectors:[[\"\",\"ngModel\",\"\",3,\"formControlName\",\"\",3,\"formControl\",\"\"]],inputs:{name:\"name\",isDisabled:[0,\"disabled\",\"isDisabled\"],model:[0,\"ngModel\",\"model\"],options:[0,\"ngModelOptions\",\"options\"]},outputs:{update:\"ngModelChange\"},exportAs:[\"ngModel\"],standalone:!1,features:[B([Ar]),E,J]})}return n})();var hs=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"form\",3,\"ngNoForm\",\"\",3,\"ngNativeValidate\",\"\"]],hostAttrs:[\"novalidate\",\"\"],standalone:!1})}return n})(),Pr={provide:qe,useExisting:X(()=>Ir),multi:!0},Ir=(()=>{class n extends tn{writeValue(e){let i=e??\"\";this.setProperty(\"value\",i)}registerOnChange(e){this.onChange=i=>{e(i==\"\"?null:parseFloat(i))}}static \\u0275fac=(()=>{let e;return function(r){return(e||(e=ae(n)))(r||n)}})();static \\u0275dir=h({type:n,selectors:[[\"input\",\"type\",\"number\",\"formControlName\",\"\"],[\"input\",\"type\",\"number\",\"formControl\",\"\"],[\"input\",\"type\",\"number\",\"ngModel\",\"\"]],hostBindings:function(i,r){i&1&&$(\"input\",function(s){return r.onChange(s.target.value)})(\"blur\",function(){return r.onTouched()})},standalone:!1,features:[B([Pr]),E]})}return n})();var di=new g(\"\"),Tr={provide:re,useExisting:X(()=>Br)},Br=(()=>{class n extends re{_ngModelWarningConfig;callSetDisabledState;viewModel;form;set isDisabled(e){}model;update=new M;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,o,s){super(),this._ngModelWarningConfig=o,this.callSetDisabledState=s,this._setValidators(e),this._setAsyncValidators(i),this.valueAccessor=li(this,r)}ngOnChanges(e){if(this._isControlChanged(e)){let i=e.form.previousValue;i&&xt(i,this,!1),Xe(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}ai(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&xt(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty(\"form\")}static \\u0275fac=function(i){return new(i||n)(u(Re,10),u($e,10),u(qe,10),u(di,8),u(Fe,8))};static \\u0275dir=h({type:n,selectors:[[\"\",\"formControl\",\"\"]],inputs:{form:[0,\"formControl\",\"form\"],isDisabled:[0,\"disabled\",\"isDisabled\"],model:[0,\"ngModel\",\"model\"]},outputs:{update:\"ngModelChange\"},exportAs:[\"ngForm\"],standalone:!1,features:[B([Tr]),E,J]})}return n})(),Nr={provide:ne,useExisting:X(()=>Lr)},Lr=(()=>{class n extends ne{callSetDisabledState;get submitted(){return ie(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=Z(()=>this._submittedReactive());_submittedReactive=K(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];form=null;ngSubmit=new M;constructor(e,i,r){super(),this.callSetDisabledState=r,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){e.hasOwnProperty(\"form\")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(wt(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){let i=this.form.get(e.path);return Xe(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){xt(e.control||null,e,!1),Mr(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this._submittedReactive.set(!0),yn(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new yt(this.control)),e?.target?.method===\"dialog\"}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1),i?.emitEvent!==!1&&this.form._events.next(new bt(this.form))}_updateDomValue(){this.directives.forEach(e=>{let i=e.control,r=this.form.get(e.path);i!==r&&(xt(i||null,e),Fr(r)&&(Xe(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){let i=this.form.get(e.path);vn(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){let i=this.form.get(e.path);i&&Er(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){si(this.form,this),this._oldForm&&wt(this._oldForm,this)}static \\u0275fac=function(i){return new(i||n)(u(Re,10),u($e,10),u(Fe,8))};static \\u0275dir=h({type:n,selectors:[[\"\",\"formGroup\",\"\"]],hostBindings:function(i,r){i&1&&$(\"submit\",function(s){return r.onSubmit(s)})(\"reset\",function(){return r.onReset()})},inputs:{form:[0,\"formGroup\",\"form\"]},outputs:{ngSubmit:\"ngSubmit\"},exportAs:[\"ngForm\"],standalone:!1,features:[B([Nr]),E,J]})}return n})();var zr={provide:re,useExisting:X(()=>jr)},jr=(()=>{class n extends re{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new M;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,o,s){super(),this._ngModelWarningConfig=s,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=li(this,o)}ngOnChanges(e){this._added||this._setUpControl(),ai(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return _n(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \\u0275fac=function(i){return new(i||n)(u(ne,13),u(Re,10),u($e,10),u(qe,10),u(di,8))};static \\u0275dir=h({type:n,selectors:[[\"\",\"formControlName\",\"\"]],inputs:{name:[0,\"formControlName\",\"name\"],isDisabled:[0,\"disabled\",\"isDisabled\"],model:[0,\"ngModel\",\"model\"]},outputs:{update:\"ngModelChange\"},standalone:!1,features:[B([zr]),E,J]})}return n})();function Hr(n){return typeof n==\"number\"?n:parseFloat(n)}var Wr=(()=>{class n{_validator=mt;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){let i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):mt,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return e!=null}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,features:[J]})}return n})();var Gr={provide:Re,useExisting:X(()=>Ur),multi:!0},Ur=(()=>{class n extends Wr{min;inputName=\"min\";normalizeInput=e=>Hr(e);createValidator=e=>rn(e);static \\u0275fac=(()=>{let e;return function(r){return(e||(e=ae(n)))(r||n)}})();static \\u0275dir=h({type:n,selectors:[[\"input\",\"type\",\"number\",\"min\",\"\",\"formControlName\",\"\"],[\"input\",\"type\",\"number\",\"min\",\"\",\"formControl\",\"\"],[\"input\",\"type\",\"number\",\"min\",\"\",\"ngModel\",\"\"]],hostVars:1,hostBindings:function(i,r){i&2&&pe(\"min\",r._enabled?r.min:null)},inputs:{min:\"min\"},standalone:!1,features:[B([Gr]),E]})}return n})();var bn=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({})}return n})(),Jt=class extends Me{constructor(t,e,i){super(ri(e),oi(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(t){return this.controls[this._adjustIndex(t)]}push(t,e={}){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(t,e,i={}){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(t,e={}){let i=this._adjustIndex(t);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(t,e,i={}){let r=this._adjustIndex(t);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),e&&(this.controls.splice(r,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){pn(this,!1,t),t.forEach((i,r)=>{mn(this,!1,r),this.at(r).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(t.forEach((i,r)=>{this.at(r)&&this.at(r).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t=[],e={}){this._forEachChild((i,r)=>{i.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t.getRawValue())}clear(t={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:t.emitEvent}))}_adjustIndex(t){return t<0?t+this.length:t}_syncPendingControls(){let t=this.controls.reduce((e,i)=>i._syncPendingControls()?!0:e,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){this.controls.forEach((e,i)=>{t(e,i)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_allControlsDisabled(){for(let t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}_find(t){return this.at(t)??null}};function Ji(n){return!!n&&(n.asyncValidators!==void 0||n.validators!==void 0||n.updateOn!==void 0)}var fs=(()=>{class n{useNonNullable=!1;get nonNullable(){let e=new n;return e.useNonNullable=!0,e}group(e,i=null){let r=this._reduceControls(e),o={};return Ji(i)?o=i:i!==null&&(o.validators=i.validator,o.asyncValidators=i.asyncValidator),new Oe(r,o)}record(e,i=null){let r=this._reduceControls(e);return new Kt(r,i)}control(e,i,r){let o={};return this.useNonNullable?(Ji(i)?o=i:(o.validators=i,o.asyncValidators=r),new Ye(e,L(_({},o),{nonNullable:!0}))):new Ye(e,i,r)}array(e,i,r){let o=e.map(s=>this._createControl(s));return new Jt(o,i,r)}_reduceControls(e){let i={};return Object.keys(e).forEach(r=>{i[r]=this._createControl(e[r])}),i}_createControl(e){if(e instanceof Ye)return e;if(e instanceof Me)return e;if(Array.isArray(e)){let i=e[0],r=e.length>1?e[1]:null,o=e.length>2?e[2]:null;return this.control(i,r,o)}else return this.control(e)}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();var us=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:Fe,useValue:e.callSetDisabledState??Dt}]}}static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({imports:[bn]})}return n})(),ms=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:di,useValue:e.warnOnNgModelWithFormControl??\"always\"},{provide:Fe,useValue:e.callSetDisabledState??Dt}]}}static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({imports:[bn]})}return n})();var ci=class{_box;_destroyed=new m;_resizeSubject=new m;_resizeObserver;_elementObservables=new Map;constructor(t){this._box=t,typeof ResizeObserver<\"u\"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(t){return this._elementObservables.has(t)||this._elementObservables.set(t,new it(e=>{let i=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(t,{box:this._box}),()=>{this._resizeObserver?.unobserve(t),i.unsubscribe(),this._elementObservables.delete(t)}}).pipe(se(e=>e.some(i=>i.target===t)),Lt({bufferSize:1,refCount:!0}),he(this._destroyed))),this._elementObservables.get(t)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}},xn=(()=>{class n{_cleanupErrorListener;_observers=new Map;_ngZone=a(x);constructor(){typeof ResizeObserver<\"u\"}ngOnDestroy(){for(let[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(e,i){let r=i?.box||\"content-box\";return this._observers.has(r)||this._observers.set(r,new ci(r)),this._observers.get(r).observe(e)}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();var Yr=[\"notch\"],Xr=[\"matFormFieldNotchedOutline\",\"\"],qr=[\"*\"],Cn=[\"iconPrefixContainer\"],wn=[\"textPrefixContainer\"],Sn=[\"iconSuffixContainer\"],Dn=[\"textSuffixContainer\"],$r=[\"textField\"],Zr=[\"*\",[[\"mat-label\"]],[[\"\",\"matPrefix\",\"\"],[\"\",\"matIconPrefix\",\"\"]],[[\"\",\"matTextPrefix\",\"\"]],[[\"\",\"matTextSuffix\",\"\"]],[[\"\",\"matSuffix\",\"\"],[\"\",\"matIconSuffix\",\"\"]],[[\"mat-error\"],[\"\",\"matError\",\"\"]],[[\"mat-hint\",3,\"align\",\"end\"]],[[\"mat-hint\",\"align\",\"end\"]]],Qr=[\"*\",\"mat-label\",\"[matPrefix], [matIconPrefix]\",\"[matTextPrefix]\",\"[matTextSuffix]\",\"[matSuffix], [matIconSuffix]\",\"mat-error, [matError]\",\"mat-hint:not([align='end'])\",\"mat-hint[align='end']\"];function Kr(n,t){n&1&&q(0,\"span\",20)}function Jr(n,t){if(n&1&&(k(0,\"label\",19),H(1,1),R(2,Kr,1,0,\"span\",20),C()),n&2){let e=G(2);Ce(\"floating\",e._shouldLabelFloat())(\"monitorResize\",e._hasOutline())(\"id\",e._labelId),pe(\"for\",e._control.disableAutomaticLabeling?null:e._control.id),v(2),F(!e.hideRequiredMarker&&e._control.required?2:-1)}}function eo(n,t){if(n&1&&R(0,Jr,3,5,\"label\",19),n&2){let e=G();F(e._hasFloatingLabel()?0:-1)}}function to(n,t){n&1&&q(0,\"div\",7)}function io(n,t){}function no(n,t){if(n&1&&xe(0,io,0,0,\"ng-template\",13),n&2){G(2);let e=Gt(1);Ce(\"ngTemplateOutlet\",e)}}function ro(n,t){if(n&1&&(k(0,\"div\",9),R(1,no,1,1,null,13),C()),n&2){let e=G();Ce(\"matFormFieldNotchedOutlineOpen\",e._shouldLabelFloat()),v(),F(e._forceDisplayInfixLabel()?-1:1)}}function oo(n,t){n&1&&(k(0,\"div\",10,2),H(2,2),C())}function so(n,t){n&1&&(k(0,\"div\",11,3),H(2,3),C())}function ao(n,t){}function lo(n,t){if(n&1&&xe(0,ao,0,0,\"ng-template\",13),n&2){G();let e=Gt(1);Ce(\"ngTemplateOutlet\",e)}}function co(n,t){n&1&&(k(0,\"div\",14,4),H(2,4),C())}function ho(n,t){n&1&&(k(0,\"div\",15,5),H(2,5),C())}function fo(n,t){n&1&&q(0,\"div\",16)}function uo(n,t){n&1&&H(0,6)}function mo(n,t){if(n&1&&(k(0,\"mat-hint\",21),Be(1),C()),n&2){let e=G(2);Ce(\"id\",e._hintLabelId),v(),Fi(e.hintLabel)}}function po(n,t){if(n&1&&(R(0,mo,2,2,\"mat-hint\",21),H(1,7),q(2,\"div\",22),H(3,8)),n&2){let e=G();F(e.hintLabel?0:-1)}}var En=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"mat-label\"]]})}return n})(),Pn=new g(\"MatError\"),js=(()=>{class n{id=a(le).getId(\"mat-mdc-error-\");constructor(){}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"mat-error\"],[\"\",\"matError\",\"\"]],hostAttrs:[1,\"mat-mdc-form-field-error\",\"mat-mdc-form-field-bottom-align\"],hostVars:1,hostBindings:function(i,r){i&2&&Ht(\"id\",r.id)},inputs:{id:\"id\"},features:[B([{provide:Pn,useExisting:n}])]})}return n})(),kn=(()=>{class n{align=\"start\";id=a(le).getId(\"mat-mdc-hint-\");static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"mat-hint\"]],hostAttrs:[1,\"mat-mdc-form-field-hint\",\"mat-mdc-form-field-bottom-align\"],hostVars:4,hostBindings:function(i,r){i&2&&(Ht(\"id\",r.id),pe(\"align\",null),T(\"mat-mdc-form-field-hint-end\",r.align===\"end\"))},inputs:{align:\"align\",id:\"id\"}})}return n})(),_o=new g(\"MatPrefix\");var go=new g(\"MatSuffix\");var In=new g(\"FloatingLabelParent\"),Mn=(()=>{class n{_elementRef=a(D);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=a(xn);_ngZone=a(x);_parent=a(In);_resizeSubscription=new Y;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return vo(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:\"border-box\"}).subscribe(()=>this._handleResize())})}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"label\",\"matFormFieldFloatingLabel\",\"\"]],hostAttrs:[1,\"mdc-floating-label\",\"mat-mdc-floating-label\"],hostVars:2,hostBindings:function(i,r){i&2&&T(\"mdc-floating-label--float-above\",r.floating)},inputs:{floating:\"floating\",monitorResize:\"monitorResize\"}})}return n})();function vo(n){let t=n;if(t.offsetParent!==null)return t.scrollWidth;let e=t.cloneNode(!0);e.style.setProperty(\"position\",\"absolute\"),e.style.setProperty(\"transform\",\"translate(-9999px, -9999px)\"),document.documentElement.appendChild(e);let i=e.scrollWidth;return e.remove(),i}var On=\"mdc-line-ripple--active\",Et=\"mdc-line-ripple--deactivating\",Rn=(()=>{class n{_elementRef=a(D);_cleanupTransitionEnd;constructor(){let e=a(x),i=a(ee);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=i.listen(this._elementRef.nativeElement,\"transitionend\",this._handleTransitionEnd)})}activate(){let e=this._elementRef.nativeElement.classList;e.remove(Et),e.add(On)}deactivate(){this._elementRef.nativeElement.classList.add(Et)}_handleTransitionEnd=e=>{let i=this._elementRef.nativeElement.classList,r=i.contains(Et);e.propertyName===\"opacity\"&&r&&i.remove(On,Et)};ngOnDestroy(){this._cleanupTransitionEnd()}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"div\",\"matFormFieldLineRipple\",\"\"]],hostAttrs:[1,\"mdc-line-ripple\"]})}return n})(),Fn=(()=>{class n{_elementRef=a(D);_ngZone=a(x);open=!1;_notch;ngAfterViewInit(){let e=this._elementRef.nativeElement,i=e.querySelector(\".mdc-floating-label\");i?(e.classList.add(\"mdc-notched-outline--upgraded\"),typeof requestAnimationFrame==\"function\"&&(i.style.transitionDuration=\"0s\",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>i.style.transitionDuration=\"\")}))):e.classList.add(\"mdc-notched-outline--no-label\")}_setNotchWidth(e){let i=this._notch.nativeElement;!this.open||!e?i.style.width=\"\":i.style.width=`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`}_setMaxWidth(e){this._notch.nativeElement.style.setProperty(\"--mat-form-field-notch-max-width\",`calc(100% - ${e}px)`)}static \\u0275fac=function(i){return new(i||n)};static \\u0275cmp=te({type:n,selectors:[[\"div\",\"matFormFieldNotchedOutline\",\"\"]],viewQuery:function(i,r){if(i&1&&I(Yr,5),i&2){let o;w(o=S())&&(r._notch=o.first)}},hostAttrs:[1,\"mdc-notched-outline\"],hostVars:2,hostBindings:function(i,r){i&2&&T(\"mdc-notched-outline--notched\",r.open)},inputs:{open:[0,\"matFormFieldNotchedOutlineOpen\",\"open\"]},attrs:Xr,ngContentSelectors:qr,decls:5,vars:0,consts:[[\"notch\",\"\"],[1,\"mat-mdc-notch-piece\",\"mdc-notched-outline__leading\"],[1,\"mat-mdc-notch-piece\",\"mdc-notched-outline__notch\"],[1,\"mat-mdc-notch-piece\",\"mdc-notched-outline__trailing\"]],template:function(i,r){i&1&&(ct(),q(0,\"div\",1),k(1,\"div\",2,0),H(3),C(),q(4,\"div\",3))},encapsulation:2,changeDetection:0})}return n})(),yo=(()=>{class n{value;stateChanges;id;placeholder;ngControl;focused;empty;shouldLabelFloat;required;disabled;errorState;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n})}return n})();var bo=new g(\"MatFormField\"),xo=new g(\"MAT_FORM_FIELD_DEFAULT_OPTIONS\"),An=\"fill\",Co=\"auto\",Vn=\"fixed\",wo=\"translateY(-50%)\",Tn=(()=>{class n{_elementRef=a(D);_changeDetectorRef=a(_e);_dir=a(ge);_platform=a(U);_idGenerator=a(le);_ngZone=a(x);_defaults=a(xo,{optional:!0});_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=Ne(\"iconPrefixContainer\");_textPrefixContainerSignal=Ne(\"textPrefixContainer\");_iconSuffixContainerSignal=Ne(\"iconSuffixContainer\");_textSuffixContainerSignal=Ne(\"textSuffixContainer\");_prefixSuffixContainers=Z(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>e!==void 0));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=Vi(En);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=Gi(e)}_hideRequiredMarker=!1;color=\"primary\";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||Co}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){let i=e||this._defaults?.appearance||An;this._appearanceSignal.set(i)}_appearanceSignal=K(An);get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||Vn}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||Vn}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}_hintLabel=\"\";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId(\"mat-mdc-form-field-label-\");_hintLabelId=this._idGenerator.getId(\"mat-mdc-hint-\");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}_destroyed=new m;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_animationsDisabled=ze();constructor(){let e=this._defaults;e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),this._syncOutlineLabelOffset()}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add(\"mat-form-field-animations-enabled\")},300)}),this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck()}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=Z(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel=\"always\")}_initializeControl(e){let i=this._control,r=\"mat-mdc-form-field-type-\";e&&this._elementRef.nativeElement.classList.remove(r+e.controlType),i.controlType&&this._elementRef.nativeElement.classList.add(r+i.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=i.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=i.stateChanges.pipe(zt([void 0,void 0]),rt(()=>[i.errorState,i.userAriaDescribedBy]),Nt(),se(([[o,s],[l,d]])=>o!==l||s!==d)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),i.ngControl&&i.ngControl.valueChanges&&(this._valueChanges=i.ngControl.valueChanges.pipe(he(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Di(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){this._control}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||this._isFocused===null)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle(\"mdc-text-field--focused\",this._control.focused)}_outlineLabelOffsetResizeObserver=null;_syncOutlineLabelOffset(){Pi({earlyRead:()=>{if(this._appearanceSignal()!==\"outline\")return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset())});for(let e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:\"border-box\"})}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())})}_shouldAlwaysFloat(){return this.floatLabel===\"always\"}_hasOutline(){return this.appearance===\"outline\"}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=Z(()=>!!this._labelChild());_shouldLabelFloat(){return this._hasFloatingLabel()?this._control.shouldLabelFloat||this._shouldAlwaysFloat():!1}_shouldForward(e){let i=this._control?this._control.ngControl:null;return i&&i[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?\"error\":\"hint\"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){this._hintChildren}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy==\"string\"&&e.push(...this._control.userAriaDescribedBy.split(\" \")),this._getSubscriptMessageType()===\"hint\"){let o=this._hintChildren?this._hintChildren.find(l=>l.align===\"start\"):null,s=this._hintChildren?this._hintChildren.find(l=>l.align===\"end\"):null;o?e.push(o.id):this._hintLabel&&e.push(this._hintLabelId),s&&e.push(s.id)}else this._errorChildren&&e.push(...this._errorChildren.map(o=>o.id));let i=this._control.describedByIds,r;if(i){let o=this._describedByIds||e;r=e.concat(i.filter(s=>s&&!o.includes(s)))}else r=e;this._control.setDescribedByIds(r),this._describedByIds=e}}_getOutlinedLabelOffset(){let e=this._dir.valueSignal();if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return[\"\",null];if(!this._isAttachedToDom())return null;let i=this._iconPrefixContainer?.nativeElement,r=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,s=this._textSuffixContainer?.nativeElement,l=i?.getBoundingClientRect().width??0,d=r?.getBoundingClientRect().width??0,f=o?.getBoundingClientRect().width??0,c=s?.getBoundingClientRect().width??0,p=e===\"rtl\"?\"-1\":\"1\",W=`${l+d}px`,A=`calc(${p} * (${W} + var(--mat-mdc-form-field-label-offset-x, 0px)))`,z=`var(--mat-mdc-form-field-label-transform, ${wo} translateX(${A}))`,tt=l+d+f+c;return[z,tt]}_writeOutlinedLabelStyles(e){if(e!==null){let[i,r]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=i),r!==null&&this._notchedOutline?._setMaxWidth(r)}}_isAttachedToDom(){let e=this._elementRef.nativeElement;if(e.getRootNode){let i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}static \\u0275fac=function(i){return new(i||n)};static \\u0275cmp=te({type:n,selectors:[[\"mat-form-field\"]],contentQueries:function(i,r,o){if(i&1&&(Ri(o,r._labelChild,En,5),we(o,yo,5),we(o,_o,5),we(o,go,5),we(o,Pn,5),we(o,kn,5)),i&2){Wt();let s;w(s=S())&&(r._formFieldControl=s.first),w(s=S())&&(r._prefixChildren=s),w(s=S())&&(r._suffixChildren=s),w(s=S())&&(r._errorChildren=s),w(s=S())&&(r._hintChildren=s)}},viewQuery:function(i,r){if(i&1&&(Te(r._iconPrefixContainerSignal,Cn,5),Te(r._textPrefixContainerSignal,wn,5),Te(r._iconSuffixContainerSignal,Sn,5),Te(r._textSuffixContainerSignal,Dn,5),I($r,5),I(Cn,5),I(wn,5),I(Sn,5),I(Dn,5),I(Mn,5),I(Fn,5),I(Rn,5)),i&2){Wt(4);let o;w(o=S())&&(r._textField=o.first),w(o=S())&&(r._iconPrefixContainer=o.first),w(o=S())&&(r._textPrefixContainer=o.first),w(o=S())&&(r._iconSuffixContainer=o.first),w(o=S())&&(r._textSuffixContainer=o.first),w(o=S())&&(r._floatingLabel=o.first),w(o=S())&&(r._notchedOutline=o.first),w(o=S())&&(r._lineRipple=o.first)}},hostAttrs:[1,\"mat-mdc-form-field\"],hostVars:40,hostBindings:function(i,r){i&2&&T(\"mat-mdc-form-field-label-always-float\",r._shouldAlwaysFloat())(\"mat-mdc-form-field-has-icon-prefix\",r._hasIconPrefix)(\"mat-mdc-form-field-has-icon-suffix\",r._hasIconSuffix)(\"mat-form-field-invalid\",r._control.errorState)(\"mat-form-field-disabled\",r._control.disabled)(\"mat-form-field-autofilled\",r._control.autofilled)(\"mat-form-field-appearance-fill\",r.appearance==\"fill\")(\"mat-form-field-appearance-outline\",r.appearance==\"outline\")(\"mat-form-field-hide-placeholder\",r._hasFloatingLabel()&&!r._shouldLabelFloat())(\"mat-focused\",r._control.focused)(\"mat-primary\",r.color!==\"accent\"&&r.color!==\"warn\")(\"mat-accent\",r.color===\"accent\")(\"mat-warn\",r.color===\"warn\")(\"ng-untouched\",r._shouldForward(\"untouched\"))(\"ng-touched\",r._shouldForward(\"touched\"))(\"ng-pristine\",r._shouldForward(\"pristine\"))(\"ng-dirty\",r._shouldForward(\"dirty\"))(\"ng-valid\",r._shouldForward(\"valid\"))(\"ng-invalid\",r._shouldForward(\"invalid\"))(\"ng-pending\",r._shouldForward(\"pending\"))},inputs:{hideRequiredMarker:\"hideRequiredMarker\",color:\"color\",floatLabel:\"floatLabel\",appearance:\"appearance\",subscriptSizing:\"subscriptSizing\",hintLabel:\"hintLabel\"},exportAs:[\"matFormField\"],features:[B([{provide:bo,useExisting:n},{provide:In,useExisting:n}])],ngContentSelectors:Qr,decls:19,vars:25,consts:[[\"labelTemplate\",\"\"],[\"textField\",\"\"],[\"iconPrefixContainer\",\"\"],[\"textPrefixContainer\",\"\"],[\"textSuffixContainer\",\"\"],[\"iconSuffixContainer\",\"\"],[1,\"mat-mdc-text-field-wrapper\",\"mdc-text-field\",3,\"click\"],[1,\"mat-mdc-form-field-focus-overlay\"],[1,\"mat-mdc-form-field-flex\"],[\"matFormFieldNotchedOutline\",\"\",3,\"matFormFieldNotchedOutlineOpen\"],[1,\"mat-mdc-form-field-icon-prefix\"],[1,\"mat-mdc-form-field-text-prefix\"],[1,\"mat-mdc-form-field-infix\"],[3,\"ngTemplateOutlet\"],[1,\"mat-mdc-form-field-text-suffix\"],[1,\"mat-mdc-form-field-icon-suffix\"],[\"matFormFieldLineRipple\",\"\"],[1,\"mat-mdc-form-field-subscript-wrapper\",\"mat-mdc-form-field-bottom-align\"],[\"aria-atomic\",\"true\",\"aria-live\",\"polite\"],[\"matFormFieldFloatingLabel\",\"\",3,\"floating\",\"monitorResize\",\"id\"],[\"aria-hidden\",\"true\",1,\"mat-mdc-form-field-required-marker\",\"mdc-floating-label--required\"],[3,\"id\"],[1,\"mat-mdc-form-field-hint-spacer\"]],template:function(i,r){if(i&1){let o=dt();ct(Zr),xe(0,eo,1,1,\"ng-template\",null,0,Ai),k(2,\"div\",6,1),$(\"click\",function(l){return at(o),lt(r._control.onContainerClick(l))}),R(4,to,1,0,\"div\",7),k(5,\"div\",8),R(6,ro,2,2,\"div\",9),R(7,oo,3,0,\"div\",10),R(8,so,3,0,\"div\",11),k(9,\"div\",12),R(10,lo,1,1,null,13),H(11),C(),R(12,co,3,0,\"div\",14),R(13,ho,3,0,\"div\",15),C(),R(14,fo,1,0,\"div\",16),C(),k(15,\"div\",17)(16,\"div\",18),R(17,uo,1,0)(18,po,4,1),C()()}if(i&2){let o;v(2),T(\"mdc-text-field--filled\",!r._hasOutline())(\"mdc-text-field--outlined\",r._hasOutline())(\"mdc-text-field--no-label\",!r._hasFloatingLabel())(\"mdc-text-field--disabled\",r._control.disabled)(\"mdc-text-field--invalid\",r._control.errorState),v(2),F(!r._hasOutline()&&!r._control.disabled?4:-1),v(2),F(r._hasOutline()?6:-1),v(),F(r._hasIconPrefix?7:-1),v(),F(r._hasTextPrefix?8:-1),v(2),F(!r._hasOutline()||r._forceDisplayInfixLabel()?10:-1),v(2),F(r._hasTextSuffix?12:-1),v(),F(r._hasIconSuffix?13:-1),v(),F(r._hasOutline()?-1:14),v(),T(\"mat-mdc-form-field-subscript-dynamic-size\",r.subscriptSizing===\"dynamic\");let s=r._getSubscriptMessageType();v(),T(\"mat-mdc-form-field-error-wrapper\",s===\"error\")(\"mat-mdc-form-field-hint-wrapper\",s===\"hint\"),v(),F((o=s)===\"error\"?17:o===\"hint\"?18:-1)}},dependencies:[Mn,Fn,Bi,Rn,kn],styles:[`.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator,.mdc-text-field__input::-webkit-search-cancel-button{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-filled-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-filled-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-outlined-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-outlined-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-filled-error-caret-color, var(--mat-sys-error))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-outlined-error-caret-color, var(--mat-sys-error))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-filled-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-outlined-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mat-form-field-filled-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mat-form-field-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-filled-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-filled-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-filled-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-filled-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mat-form-field-filled-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-filled-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-filled-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-filled-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-outlined-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-outlined-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-outlined-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-outlined-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mat-form-field-outlined-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-outlined-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-outlined-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-outlined-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:\"*\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline));border-width:var(--mat-form-field-outlined-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mat-form-field-outlined-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{max-width:min(100%,calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mat-form-field-filled-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mat-form-field-filled-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\n`],encapsulation:2,changeDetection:0})}return n})();var Ze=class{_attachedHost;attach(t){return this._attachedHost=t,t.attach(this)}detach(){let t=this._attachedHost;t!=null&&(this._attachedHost=null,t.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(t){this._attachedHost=t}},Ae=class extends Ze{component;viewContainerRef;injector;projectableNodes;constructor(t,e,i,r){super(),this.component=t,this.viewContainerRef=e,this.injector=i,this.projectableNodes=r}},ce=class extends Ze{templateRef;viewContainerRef;context;injector;constructor(t,e,i,r){super(),this.templateRef=t,this.viewContainerRef=e,this.context=i,this.injector=r}get origin(){return this.templateRef.elementRef}attach(t,e=this.context){return this.context=e,super.attach(t)}detach(){return this.context=void 0,super.detach()}},hi=class extends Ze{element;constructor(t){super(),this.element=t instanceof D?t.nativeElement:t}},Ve=class{_attachedPortal;_disposeFn;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(t){if(t instanceof Ae)return this._attachedPortal=t,this.attachComponentPortal(t);if(t instanceof ce)return this._attachedPortal=t,this.attachTemplatePortal(t);if(this.attachDomPortal&&t instanceof hi)return this._attachedPortal=t,this.attachDomPortal(t)}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(t){this._disposeFn=t}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}},kt=class extends Ve{outletElement;_appRef;_defaultInjector;constructor(t,e,i){super(),this.outletElement=t,this._appRef=e,this._defaultInjector=i}attachComponentPortal(t){let e;if(t.viewContainerRef){let i=t.injector||t.viewContainerRef.injector,r=i.get(jt,null,{optional:!0})||void 0;e=t.viewContainerRef.createComponent(t.component,{index:t.viewContainerRef.length,injector:i,ngModuleRef:r,projectableNodes:t.projectableNodes||void 0}),this.setDisposeFn(()=>e.destroy())}else{let i=this._appRef,r=t.injector||this._defaultInjector||O.NULL,o=r.get(st,i.injector);e=Ii(t.component,{elementInjector:r,environmentInjector:o,projectableNodes:t.projectableNodes||void 0}),i.attachView(e.hostView),this.setDisposeFn(()=>{i.viewCount>0&&i.detachView(e.hostView),e.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(e)),this._attachedPortal=t,e}attachTemplatePortal(t){let e=t.viewContainerRef,i=e.createEmbeddedView(t.templateRef,t.context,{injector:t.injector});return i.rootNodes.forEach(r=>this.outletElement.appendChild(r)),i.detectChanges(),this.setDisposeFn(()=>{let r=e.indexOf(i);r!==-1&&e.remove(r)}),this._attachedPortal=t,i}attachDomPortal=t=>{let e=t.element;e.parentNode;let i=this.outletElement.ownerDocument.createComment(\"dom-portal\");e.parentNode.insertBefore(i,e),this.outletElement.appendChild(e),this._attachedPortal=t,super.setDisposeFn(()=>{i.parentNode&&i.parentNode.replaceChild(e,i)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(t){return t.hostView.rootNodes[0]}},qs=(()=>{class n extends ce{constructor(){let e=a(fe),i=a(be);super(e,i)}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"cdkPortal\",\"\"]],exportAs:[\"cdkPortal\"],features:[E]})}return n})();var fi=(()=>{class n extends Ve{_moduleRef=a(jt,{optional:!0});_document=a(j);_viewContainerRef=a(be);_isInitialized=!1;_attachedRef;constructor(){super()}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}attached=new M;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);let i=e.viewContainerRef!=null?e.viewContainerRef:this._viewContainerRef,r=i.createComponent(e.component,{index:i.length,injector:e.injector||i.injector,projectableNodes:e.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0});return i!==this._viewContainerRef&&this._getRootNode().appendChild(r.hostView.rootNodes[0]),super.setDisposeFn(()=>r.destroy()),this._attachedPortal=e,this._attachedRef=r,this.attached.emit(r),r}attachTemplatePortal(e){e.setAttachedHost(this);let i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}attachDomPortal=e=>{let i=e.element;i.parentNode;let r=this._document.createComment(\"dom-portal\");e.setAttachedHost(this),i.parentNode.insertBefore(r,i),this._getRootNode().appendChild(i),this._attachedPortal=e,super.setDisposeFn(()=>{r.parentNode&&r.parentNode.replaceChild(i,r)})};_getRootNode(){let e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"cdkPortalOutlet\",\"\"]],inputs:{portal:[0,\"cdkPortalOutlet\",\"portal\"]},outputs:{attached:\"attached\"},exportAs:[\"cdkPortalOutlet\"],features:[E]})}return n})();var ui=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({})}return n})();var Bn=class{};function Qs(n){return n&&typeof n.connect==\"function\"&&!(n instanceof Ci)}var So=function(n){return n[n.REPLACED=0]=\"REPLACED\",n[n.INSERTED=1]=\"INSERTED\",n[n.MOVED=2]=\"MOVED\",n[n.REMOVED=3]=\"REMOVED\",n}(So||{}),ea=new g(\"_ViewRepeater\");var Do=20,Qe=(()=>{class n{_ngZone=a(x);_platform=a(U);_renderer=a(ue).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new m;_scrolledCount=0;scrollContainers=new Map;register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){let i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=Do){return this._platform.isBrowser?new it(i=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen(\"document\",\"scroll\",()=>this._scrolled.next())));let r=e>0?this._scrolled.pipe(Bt(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{r.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):nt()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){let r=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(se(o=>!o||r.indexOf(o)>-1))}getAncestorScrollContainers(e){let i=[];return this.scrollContainers.forEach((r,o)=>{this._scrollableContainsElement(o,e)&&i.push(o)}),i}_scrollableContainsElement(e,i){let r=Ni(i),o=e.getElementRef().nativeElement;do if(r==o)return!0;while(r=r.parentElement);return!1}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})(),Eo=(()=>{class n{elementRef=a(D);scrollDispatcher=a(Qe);ngZone=a(x);dir=a(ge,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new m;_renderer=a(ee);_cleanupScroll;_elementScrolled=new m;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,\"scroll\",e=>this._elementScrolled.next(e))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){let i=this.elementRef.nativeElement,r=this.dir&&this.dir.value==\"rtl\";e.left==null&&(e.left=r?e.end:e.start),e.right==null&&(e.right=r?e.start:e.end),e.bottom!=null&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),r&&De()!=Se.NORMAL?(e.left!=null&&(e.right=i.scrollWidth-i.clientWidth-e.left),De()==Se.INVERTED?e.left=e.right:De()==Se.NEGATED&&(e.left=e.right?-e.right:e.right)):e.right!=null&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){let i=this.elementRef.nativeElement;ft()?i.scrollTo(e):(e.top!=null&&(i.scrollTop=e.top),e.left!=null&&(i.scrollLeft=e.left))}measureScrollOffset(e){let i=\"left\",r=\"right\",o=this.elementRef.nativeElement;if(e==\"top\")return o.scrollTop;if(e==\"bottom\")return o.scrollHeight-o.clientHeight-o.scrollTop;let s=this.dir&&this.dir.value==\"rtl\";return e==\"start\"?e=s?r:i:e==\"end\"&&(e=s?i:r),s&&De()==Se.INVERTED?e==i?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:s&&De()==Se.NEGATED?e==i?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:e==i?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"cdk-scrollable\",\"\"],[\"\",\"cdkScrollable\",\"\"]]})}return n})(),ko=20,Pe=(()=>{class n{_platform=a(U);_listeners;_viewportSize;_change=new m;_document=a(j,{optional:!0});constructor(){let e=a(x),i=a(ue).createRenderer(null,null);e.runOutsideAngular(()=>{if(this._platform.isBrowser){let r=o=>this._change.next(o);this._listeners=[i.listen(\"window\",\"resize\",r),i.listen(\"window\",\"orientationchange\",r)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(e=>e()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){let e=this.getViewportScrollPosition(),{width:i,height:r}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+r,right:e.left+i,height:r,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let e=this._document,i=this._getWindow(),r=e.documentElement,o=r.getBoundingClientRect(),s=-o.top||e.body.scrollTop||i.scrollY||r.scrollTop||0,l=-o.left||e.body.scrollLeft||i.scrollX||r.scrollLeft||0;return{top:s,left:l}}change(e=ko){return e>0?this._change.pipe(Bt(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();var mi=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({})}return n})(),pi=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({imports:[Le,mi,Le,mi]})}return n})();var Nn=ft();function Un(n){return new Mt(n.get(Pe),n.get(j))}var Mt=class{_viewportRuler;_previousHTMLStyles={top:\"\",left:\"\"};_previousScrollPosition;_isEnabled=!1;_document;constructor(t,e){this._viewportRuler=t,this._document=e}attach(){}enable(){if(this._canBeEnabled()){let t=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=t.style.left||\"\",this._previousHTMLStyles.top=t.style.top||\"\",t.style.left=b(-this._previousScrollPosition.left),t.style.top=b(-this._previousScrollPosition.top),t.classList.add(\"cdk-global-scrollblock\"),this._isEnabled=!0}}disable(){if(this._isEnabled){let t=this._document.documentElement,e=this._document.body,i=t.style,r=e.style,o=i.scrollBehavior||\"\",s=r.scrollBehavior||\"\";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,t.classList.remove(\"cdk-global-scrollblock\"),Nn&&(i.scrollBehavior=r.scrollBehavior=\"auto\"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Nn&&(i.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains(\"cdk-global-scrollblock\")||this._isEnabled)return!1;let e=this._document.documentElement,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}};function Yn(n,t){return new Ot(n.get(Qe),n.get(x),n.get(Pe),t)}var Ot=class{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(t,e,i,r){this._scrollDispatcher=t,this._ngZone=e,this._viewportRuler=i,this._config=r}attach(t){this._overlayRef,this._overlayRef=t}enable(){if(this._scrollSubscription)return;let t=this._scrollDispatcher.scrolled(0).pipe(se(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=t.subscribe(()=>{let e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=t.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}};var Ke=class{enable(){}disable(){}attach(){}};function _i(n,t){return t.some(e=>{let i=n.bottom<e.top,r=n.top>e.bottom,o=n.right<e.left,s=n.left>e.right;return i||r||o||s})}function Ln(n,t){return t.some(e=>{let i=n.top<e.top,r=n.bottom>e.bottom,o=n.left<e.left,s=n.right>e.right;return i||r||o||s})}function It(n,t){return new Rt(n.get(Qe),n.get(Pe),n.get(x),t)}var Rt=class{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(t,e,i,r){this._scrollDispatcher=t,this._viewportRuler=e,this._ngZone=i,this._config=r}attach(t){this._overlayRef,this._overlayRef=t}enable(){if(!this._scrollSubscription){let t=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(t).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:r}=this._viewportRuler.getViewportSize();_i(e,[{width:i,height:r,bottom:r,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},Xn=(()=>{class n{_injector=a(O);constructor(){}noop=()=>new Ke;close=e=>Yn(this._injector,e);block=()=>Un(this._injector);reposition=e=>It(this._injector,e);static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})(),ye=class{positionStrategy;scrollStrategy=new Ke;panelClass=\"\";hasBackdrop=!1;backdropClass=\"cdk-overlay-dark-backdrop\";disableAnimations;width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;constructor(t){if(t){let e=Object.keys(t);for(let i of e)t[i]!==void 0&&(this[i]=t[i])}}};var Ft=class{connectionPair;scrollableViewProperties;constructor(t,e){this.connectionPair=t,this.scrollableViewProperties=e}};var qn=(()=>{class n{_attachedOverlays=[];_document=a(j);_isAttached;constructor(){}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){let i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),this._attachedOverlays.length===0&&this.detach()}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})(),$n=(()=>{class n extends qn{_ngZone=a(x);_renderer=a(ue).createRenderer(null,null);_cleanupKeydown;add(e){super.add(e),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen(\"body\",\"keydown\",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=e=>{let i=this._attachedOverlays;for(let r=i.length-1;r>-1;r--)if(i[r]._keydownEvents.observers.length>0){this._ngZone.run(()=>i[r]._keydownEvents.next(e));break}};static \\u0275fac=(()=>{let e;return function(r){return(e||(e=ae(n)))(r||n)}})();static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})(),Zn=(()=>{class n extends qn{_platform=a(U);_ngZone=a(x);_renderer=a(ue).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget;_cleanups;add(e){if(super.add(e),!this._isAttached){let i=this._document.body,r={capture:!0},o=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[o.listen(i,\"pointerdown\",this._pointerDownListener,r),o.listen(i,\"click\",this._clickListener,r),o.listen(i,\"auxclick\",this._clickListener,r),o.listen(i,\"contextmenu\",this._clickListener,r)]),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor=\"pointer\",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){this._isAttached&&(this._cleanups?.forEach(e=>e()),this._cleanups=void 0,this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}_pointerDownListener=e=>{this._pointerDownEventTarget=ht(e)};_clickListener=e=>{let i=ht(e),r=e.type===\"click\"&&this._pointerDownEventTarget?this._pointerDownEventTarget:i;this._pointerDownEventTarget=null;let o=this._attachedOverlays.slice();for(let s=o.length-1;s>-1;s--){let l=o[s];if(l._outsidePointerEvents.observers.length<1||!l.hasAttached())continue;if(zn(l.overlayElement,i)||zn(l.overlayElement,r))break;let d=l._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>d.next(e)):d.next(e)}};static \\u0275fac=(()=>{let e;return function(r){return(e||(e=ae(n)))(r||n)}})();static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();function zn(n,t){let e=typeof ShadowRoot<\"u\"&&ShadowRoot,i=t;for(;i;){if(i===n)return!0;i=e&&i instanceof ShadowRoot?i.host:i.parentNode}return!1}var Qn=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275cmp=te({type:n,selectors:[[\"ng-component\"]],hostAttrs:[\"cdk-overlay-style-loader\",\"\"],decls:0,vars:0,template:function(i,r){},styles:[`.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}\n`],encapsulation:2,changeDetection:0})}return n})(),Kn=(()=>{class n{_platform=a(U);_containerElement;_document=a(j);_styleLoader=a(Xt);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let e=\"cdk-overlay-container\";if(this._platform.isBrowser||Zt()){let r=this._document.querySelectorAll(`.${e}[platform=\"server\"], .${e}[platform=\"test\"]`);for(let o=0;o<r.length;o++)r[o].remove()}let i=this._document.createElement(\"div\");i.classList.add(e),Zt()?i.setAttribute(\"platform\",\"test\"):this._platform.isBrowser||i.setAttribute(\"platform\",\"server\"),this._document.body.appendChild(i),this._containerElement=i}_loadStyles(){this._styleLoader.load(Qn)}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})(),gi=class{_renderer;_ngZone;element;_cleanupClick;_cleanupTransitionEnd;_fallbackTimeout;constructor(t,e,i,r){this._renderer=e,this._ngZone=i,this.element=t.createElement(\"div\"),this.element.classList.add(\"cdk-overlay-backdrop\"),this._cleanupClick=e.listen(this.element,\"click\",r)}detach(){this._ngZone.runOutsideAngular(()=>{let t=this.element;clearTimeout(this._fallbackTimeout),this._cleanupTransitionEnd?.(),this._cleanupTransitionEnd=this._renderer.listen(t,\"transitionend\",this.dispose),this._fallbackTimeout=setTimeout(this.dispose,500),t.style.pointerEvents=\"none\",t.classList.remove(\"cdk-overlay-backdrop-showing\")})}dispose=()=>{clearTimeout(this._fallbackTimeout),this._cleanupClick?.(),this._cleanupTransitionEnd?.(),this._cleanupClick=this._cleanupTransitionEnd=this._fallbackTimeout=void 0,this.element.remove()}},At=class{_portalOutlet;_host;_pane;_config;_ngZone;_keyboardDispatcher;_document;_location;_outsideClickDispatcher;_animationsDisabled;_injector;_renderer;_backdropClick=new m;_attachments=new m;_detachments=new m;_positionStrategy;_scrollStrategy;_locationChanges=Y.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_previousHostParent;_keydownEvents=new m;_outsidePointerEvents=new m;_afterNextRenderRef;constructor(t,e,i,r,o,s,l,d,f,c=!1,p,W){this._portalOutlet=t,this._host=e,this._pane=i,this._config=r,this._ngZone=o,this._keyboardDispatcher=s,this._document=l,this._location=d,this._outsideClickDispatcher=f,this._animationsDisabled=c,this._injector=p,this._renderer=W,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropRef?.element||null}get hostElement(){return this._host}attach(t){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let e=this._portalOutlet.attach(t);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=me(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._completeDetachContent(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof e?.onDestroy==\"function\"&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let t=this._portalOutlet.detach();return this._detachments.next(),this._completeDetachContent(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),t}dispose(){let t=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._backdropRef?.dispose(),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=this._backdropRef=null,t&&this._detachments.next(),this._detachments.complete(),this._completeDetachContent()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(t){t!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=t,this.hasAttached()&&(t.attach(this),this.updatePosition()))}updateSize(t){this._config=_(_({},this._config),t),this._updateElementSize()}setDirection(t){this._config=L(_({},this._config),{direction:t}),this._updateElementDirection()}addPanelClass(t){this._pane&&this._toggleClasses(this._pane,t,!0)}removePanelClass(t){this._pane&&this._toggleClasses(this._pane,t,!1)}getDirection(){let t=this._config.direction;return t?typeof t==\"string\"?t:t.value:\"ltr\"}updateScrollStrategy(t){t!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=t,this.hasAttached()&&(t.attach(this),t.enable()))}_updateElementDirection(){this._host.setAttribute(\"dir\",this.getDirection())}_updateElementSize(){if(!this._pane)return;let t=this._pane.style;t.width=b(this._config.width),t.height=b(this._config.height),t.minWidth=b(this._config.minWidth),t.minHeight=b(this._config.minHeight),t.maxWidth=b(this._config.maxWidth),t.maxHeight=b(this._config.maxHeight)}_togglePointerEvents(t){this._pane.style.pointerEvents=t?\"\":\"none\"}_attachBackdrop(){let t=\"cdk-overlay-backdrop-showing\";this._backdropRef?.dispose(),this._backdropRef=new gi(this._document,this._renderer,this._ngZone,e=>{this._backdropClick.next(e)}),this._animationsDisabled&&this._backdropRef.element.classList.add(\"cdk-overlay-backdrop-noop-animation\"),this._config.backdropClass&&this._toggleClasses(this._backdropRef.element,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropRef.element,this._host),!this._animationsDisabled&&typeof requestAnimationFrame<\"u\"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>this._backdropRef?.element.classList.add(t))}):this._backdropRef.element.classList.add(t)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){this._animationsDisabled?(this._backdropRef?.dispose(),this._backdropRef=null):this._backdropRef?.detach()}_toggleClasses(t,e,i){let r=qt(e||[]).filter(o=>!!o);r.length&&(i?t.classList.add(...r):t.classList.remove(...r))}_detachContentWhenEmpty(){let t=!1;try{this._detachContentAfterRenderRef=me(()=>{t=!0,this._detachContent()},{injector:this._injector})}catch(e){if(t)throw e;this._detachContent()}globalThis.MutationObserver&&this._pane&&(this._detachContentMutationObserver||=new globalThis.MutationObserver(()=>{this._detachContent()}),this._detachContentMutationObserver.observe(this._pane,{childList:!0}))}_detachContent(){(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),this._completeDetachContent())}_completeDetachContent(){this._detachContentAfterRenderRef?.destroy(),this._detachContentAfterRenderRef=void 0,this._detachContentMutationObserver?.disconnect()}_disposeScrollStrategy(){let t=this._scrollStrategy;t?.disable(),t?.detach?.()}},jn=\"cdk-overlay-connected-position-bounding-box\",Mo=/([A-Za-z%]+)$/;function yi(n,t){return new Vt(t,n.get(Pe),n.get(j),n.get(U),n.get(Kn))}var Vt=class{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed;_boundingBox;_lastPosition;_lastScrollVisibility;_positionChanges=new m;_resizeSubscription=Y.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount;positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(t,e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o,this.setOrigin(t)}attach(t){this._overlayRef&&this._overlayRef,this._validatePositions(),t.hostElement.classList.add(jn),this._overlayRef=t,this._boundingBox=t.hostElement,this._pane=t.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let t=this._originRect,e=this._overlayRect,i=this._viewportRect,r=this._containerRect,o=[],s;for(let l of this._preferredPositions){let d=this._getOriginPoint(t,r,l),f=this._getOverlayPoint(d,e,l),c=this._getOverlayFit(f,e,i,l);if(c.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(l,d);return}if(this._canFitWithFlexibleDimensions(c,f,i)){o.push({position:l,origin:d,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(d,l)});continue}(!s||s.overlayFit.visibleArea<c.visibleArea)&&(s={overlayFit:c,overlayPoint:f,originPoint:d,position:l,overlayRect:e})}if(o.length){let l=null,d=-1;for(let f of o){let c=f.boundingBoxRect.width*f.boundingBoxRect.height*(f.position.weight||1);c>d&&(d=c,l=f)}this._isPushed=!1,this._applyPosition(l.position,l.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(s.position,s.originPoint);return}this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&ve(this._boundingBox.style,{top:\"\",left:\"\",right:\"\",bottom:\"\",height:\"\",width:\"\",alignItems:\"\",justifyContent:\"\"}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(jn),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let t=this._lastPosition;if(t){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let e=this._getOriginPoint(this._originRect,this._containerRect,t);this._applyPosition(t,e)}else this.apply()}withScrollableContainers(t){return this._scrollables=t,this}withPositions(t){return this._preferredPositions=t,t.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(t){return this._viewportMargin=t,this}withFlexibleDimensions(t=!0){return this._hasFlexibleDimensions=t,this}withGrowAfterOpen(t=!0){return this._growAfterOpen=t,this}withPush(t=!0){return this._canPush=t,this}withLockedPosition(t=!0){return this._positionLocked=t,this}setOrigin(t){return this._origin=t,this}withDefaultOffsetX(t){return this._offsetX=t,this}withDefaultOffsetY(t){return this._offsetY=t,this}withTransformOriginOn(t){return this._transformOriginSelector=t,this}_getOriginPoint(t,e,i){let r;if(i.originX==\"center\")r=t.left+t.width/2;else{let s=this._isRtl()?t.right:t.left,l=this._isRtl()?t.left:t.right;r=i.originX==\"start\"?s:l}e.left<0&&(r-=e.left);let o;return i.originY==\"center\"?o=t.top+t.height/2:o=i.originY==\"top\"?t.top:t.bottom,e.top<0&&(o-=e.top),{x:r,y:o}}_getOverlayPoint(t,e,i){let r;i.overlayX==\"center\"?r=-e.width/2:i.overlayX===\"start\"?r=this._isRtl()?-e.width:0:r=this._isRtl()?0:-e.width;let o;return i.overlayY==\"center\"?o=-e.height/2:o=i.overlayY==\"top\"?0:-e.height,{x:t.x+r,y:t.y+o}}_getOverlayFit(t,e,i,r){let o=Wn(e),{x:s,y:l}=t,d=this._getOffset(r,\"x\"),f=this._getOffset(r,\"y\");d&&(s+=d),f&&(l+=f);let c=0-s,p=s+o.width-i.width,W=0-l,N=l+o.height-i.height,A=this._subtractOverflows(o.width,c,p),z=this._subtractOverflows(o.height,W,N),tt=A*z;return{visibleArea:tt,isCompletelyWithinViewport:o.width*o.height===tt,fitsInViewportVertically:z===o.height,fitsInViewportHorizontally:A==o.width}}_canFitWithFlexibleDimensions(t,e,i){if(this._hasFlexibleDimensions){let r=i.bottom-e.y,o=i.right-e.x,s=Hn(this._overlayRef.getConfig().minHeight),l=Hn(this._overlayRef.getConfig().minWidth),d=t.fitsInViewportVertically||s!=null&&s<=r,f=t.fitsInViewportHorizontally||l!=null&&l<=o;return d&&f}return!1}_pushOverlayOnScreen(t,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:t.x+this._previousPushAmount.x,y:t.y+this._previousPushAmount.y};let r=Wn(e),o=this._viewportRect,s=Math.max(t.x+r.width-o.width,0),l=Math.max(t.y+r.height-o.height,0),d=Math.max(o.top-i.top-t.y,0),f=Math.max(o.left-i.left-t.x,0),c=0,p=0;return r.width<=o.width?c=f||-s:c=t.x<this._viewportMargin?o.left-i.left-t.x:0,r.height<=o.height?p=d||-l:p=t.y<this._viewportMargin?o.top-i.top-t.y:0,this._previousPushAmount={x:c,y:p},{x:t.x+c,y:t.y+p}}_applyPosition(t,e){if(this._setTransformOrigin(t),this._setOverlayElementStyles(e,t),this._setBoundingBoxStyles(e,t),t.panelClass&&this._addPanelClasses(t.panelClass),this._positionChanges.observers.length){let i=this._getScrollVisibility();if(t!==this._lastPosition||!this._lastScrollVisibility||!Oo(this._lastScrollVisibility,i)){let r=new Ft(t,i);this._positionChanges.next(r)}this._lastScrollVisibility=i}this._lastPosition=t,this._isInitialRender=!1}_setTransformOrigin(t){if(!this._transformOriginSelector)return;let e=this._boundingBox.querySelectorAll(this._transformOriginSelector),i,r=t.overlayY;t.overlayX===\"center\"?i=\"center\":this._isRtl()?i=t.overlayX===\"start\"?\"right\":\"left\":i=t.overlayX===\"start\"?\"left\":\"right\";for(let o=0;o<e.length;o++)e[o].style.transformOrigin=`${i} ${r}`}_calculateBoundingBoxRect(t,e){let i=this._viewportRect,r=this._isRtl(),o,s,l;if(e.overlayY===\"top\")s=t.y,o=i.height-s+this._viewportMargin;else if(e.overlayY===\"bottom\")l=i.height-t.y+this._viewportMargin*2,o=i.height-l+this._viewportMargin;else{let N=Math.min(i.bottom-t.y+i.top,t.y),A=this._lastBoundingBoxSize.height;o=N*2,s=t.y-N,o>A&&!this._isInitialRender&&!this._growAfterOpen&&(s=t.y-A/2)}let d=e.overlayX===\"start\"&&!r||e.overlayX===\"end\"&&r,f=e.overlayX===\"end\"&&!r||e.overlayX===\"start\"&&r,c,p,W;if(f)W=i.width-t.x+this._viewportMargin*2,c=t.x-this._viewportMargin;else if(d)p=t.x,c=i.right-t.x;else{let N=Math.min(i.right-t.x+i.left,t.x),A=this._lastBoundingBoxSize.width;c=N*2,p=t.x-N,c>A&&!this._isInitialRender&&!this._growAfterOpen&&(p=t.x-A/2)}return{top:s,left:p,bottom:l,right:W,width:c,height:o}}_setBoundingBoxStyles(t,e){let i=this._calculateBoundingBoxRect(t,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));let r={};if(this._hasExactPosition())r.top=r.left=\"0\",r.bottom=r.right=r.maxHeight=r.maxWidth=\"\",r.width=r.height=\"100%\";else{let o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=b(i.height),r.top=b(i.top),r.bottom=b(i.bottom),r.width=b(i.width),r.left=b(i.left),r.right=b(i.right),e.overlayX===\"center\"?r.alignItems=\"center\":r.alignItems=e.overlayX===\"end\"?\"flex-end\":\"flex-start\",e.overlayY===\"center\"?r.justifyContent=\"center\":r.justifyContent=e.overlayY===\"bottom\"?\"flex-end\":\"flex-start\",o&&(r.maxHeight=b(o)),s&&(r.maxWidth=b(s))}this._lastBoundingBoxSize=i,ve(this._boundingBox.style,r)}_resetBoundingBoxStyles(){ve(this._boundingBox.style,{top:\"0\",left:\"0\",right:\"0\",bottom:\"0\",height:\"\",width:\"\",alignItems:\"\",justifyContent:\"\"})}_resetOverlayElementStyles(){ve(this._pane.style,{top:\"\",left:\"\",bottom:\"\",right:\"\",position:\"\",transform:\"\"})}_setOverlayElementStyles(t,e){let i={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){let c=this._viewportRuler.getViewportScrollPosition();ve(i,this._getExactOverlayY(e,t,c)),ve(i,this._getExactOverlayX(e,t,c))}else i.position=\"static\";let l=\"\",d=this._getOffset(e,\"x\"),f=this._getOffset(e,\"y\");d&&(l+=`translateX(${d}px) `),f&&(l+=`translateY(${f}px)`),i.transform=l.trim(),s.maxHeight&&(r?i.maxHeight=b(s.maxHeight):o&&(i.maxHeight=\"\")),s.maxWidth&&(r?i.maxWidth=b(s.maxWidth):o&&(i.maxWidth=\"\")),ve(this._pane.style,i)}_getExactOverlayY(t,e,i){let r={top:\"\",bottom:\"\"},o=this._getOverlayPoint(e,this._overlayRect,t);if(this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),t.overlayY===\"bottom\"){let s=this._document.documentElement.clientHeight;r.bottom=`${s-(o.y+this._overlayRect.height)}px`}else r.top=b(o.y);return r}_getExactOverlayX(t,e,i){let r={left:\"\",right:\"\"},o=this._getOverlayPoint(e,this._overlayRect,t);this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i));let s;if(this._isRtl()?s=t.overlayX===\"end\"?\"left\":\"right\":s=t.overlayX===\"end\"?\"right\":\"left\",s===\"right\"){let l=this._document.documentElement.clientWidth;r.right=`${l-(o.x+this._overlayRect.width)}px`}else r.left=b(o.x);return r}_getScrollVisibility(){let t=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Ln(t,i),isOriginOutsideView:_i(t,i),isOverlayClipped:Ln(e,i),isOverlayOutsideView:_i(e,i)}}_subtractOverflows(t,...e){return e.reduce((i,r)=>i-Math.max(r,0),t)}_getNarrowedViewportRect(){let t=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._viewportMargin,left:i.left+this._viewportMargin,right:i.left+t-this._viewportMargin,bottom:i.top+e-this._viewportMargin,width:t-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()===\"rtl\"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(t,e){return e===\"x\"?t.offsetX==null?this._offsetX:t.offsetX:t.offsetY==null?this._offsetY:t.offsetY}_validatePositions(){}_addPanelClasses(t){this._pane&&qt(t).forEach(e=>{e!==\"\"&&this._appliedPanelClasses.indexOf(e)===-1&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(t=>{this._pane.classList.remove(t)}),this._appliedPanelClasses=[])}_getOriginRect(){let t=this._origin;if(t instanceof D)return t.nativeElement.getBoundingClientRect();if(t instanceof Element)return t.getBoundingClientRect();let e=t.width||0,i=t.height||0;return{top:t.y,bottom:t.y+i,left:t.x,right:t.x+e,height:i,width:e}}};function ve(n,t){for(let e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);return n}function Hn(n){if(typeof n!=\"number\"&&n!=null){let[t,e]=n.split(Mo);return!e||e===\"px\"?parseFloat(t):null}return n||null}function Wn(n){return{top:Math.floor(n.top),right:Math.floor(n.right),bottom:Math.floor(n.bottom),left:Math.floor(n.left),width:Math.floor(n.width),height:Math.floor(n.height)}}function Oo(n,t){return n===t?!0:n.isOriginClipped===t.isOriginClipped&&n.isOriginOutsideView===t.isOriginOutsideView&&n.isOverlayClipped===t.isOverlayClipped&&n.isOverlayOutsideView===t.isOverlayOutsideView}var Gn=\"cdk-global-overlay-wrapper\";function Tt(n){return new Pt}var Pt=class{_overlayRef;_cssPosition=\"static\";_topOffset=\"\";_bottomOffset=\"\";_alignItems=\"\";_xPosition=\"\";_xOffset=\"\";_width=\"\";_height=\"\";_isDisposed=!1;attach(t){let e=t.getConfig();this._overlayRef=t,this._width&&!e.width&&t.updateSize({width:this._width}),this._height&&!e.height&&t.updateSize({height:this._height}),t.hostElement.classList.add(Gn),this._isDisposed=!1}top(t=\"\"){return this._bottomOffset=\"\",this._topOffset=t,this._alignItems=\"flex-start\",this}left(t=\"\"){return this._xOffset=t,this._xPosition=\"left\",this}bottom(t=\"\"){return this._topOffset=\"\",this._bottomOffset=t,this._alignItems=\"flex-end\",this}right(t=\"\"){return this._xOffset=t,this._xPosition=\"right\",this}start(t=\"\"){return this._xOffset=t,this._xPosition=\"start\",this}end(t=\"\"){return this._xOffset=t,this._xPosition=\"end\",this}width(t=\"\"){return this._overlayRef?this._overlayRef.updateSize({width:t}):this._width=t,this}height(t=\"\"){return this._overlayRef?this._overlayRef.updateSize({height:t}):this._height=t,this}centerHorizontally(t=\"\"){return this.left(t),this._xPosition=\"center\",this}centerVertically(t=\"\"){return this.top(t),this._alignItems=\"center\",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let t=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:l}=i,d=(r===\"100%\"||r===\"100vw\")&&(!s||s===\"100%\"||s===\"100vw\"),f=(o===\"100%\"||o===\"100vh\")&&(!l||l===\"100%\"||l===\"100vh\"),c=this._xPosition,p=this._xOffset,W=this._overlayRef.getConfig().direction===\"rtl\",N=\"\",A=\"\",z=\"\";d?z=\"flex-start\":c===\"center\"?(z=\"center\",W?A=p:N=p):W?c===\"left\"||c===\"end\"?(z=\"flex-end\",N=p):(c===\"right\"||c===\"start\")&&(z=\"flex-start\",A=p):c===\"left\"||c===\"start\"?(z=\"flex-start\",N=p):(c===\"right\"||c===\"end\")&&(z=\"flex-end\",A=p),t.position=this._cssPosition,t.marginLeft=d?\"0\":N,t.marginTop=f?\"0\":this._topOffset,t.marginBottom=this._bottomOffset,t.marginRight=d?\"0\":A,e.justifyContent=z,e.alignItems=f?\"flex-start\":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let t=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(Gn),i.justifyContent=i.alignItems=t.marginTop=t.marginBottom=t.marginLeft=t.marginRight=t.position=\"\",this._overlayRef=null,this._isDisposed=!0}},Jn=(()=>{class n{_injector=a(O);constructor(){}global(){return Tt()}flexibleConnectedTo(e){return yi(this._injector,e)}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();function Je(n,t){n.get(Xt).load(Qn);let e=n.get(Kn),i=n.get(j),r=n.get(le),o=n.get(Oi),s=n.get(ge),l=i.createElement(\"div\"),d=i.createElement(\"div\");d.id=r.getId(\"cdk-overlay-\"),d.classList.add(\"cdk-overlay-pane\"),l.appendChild(d),e.getContainerElement().appendChild(l);let f=new kt(d,o,n),c=new ye(t),p=n.get(ee,null,{optional:!0})||n.get(ue).createRenderer(null,null);return c.direction=c.direction||s.value,new At(f,l,d,c,n.get(x),n.get($n),i,n.get(Ti),n.get(Zn),t?.disableAnimations??n.get(ki,null,{optional:!0})===\"NoopAnimations\",n.get(st),p)}var er=(()=>{class n{scrollStrategies=a(Xn);_positionBuilder=a(Jn);_injector=a(O);constructor(){}create(e){return Je(this._injector,e)}position(){return this._positionBuilder}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})(),Ro=[{originX:\"start\",originY:\"bottom\",overlayX:\"start\",overlayY:\"top\"},{originX:\"start\",originY:\"top\",overlayX:\"start\",overlayY:\"bottom\"},{originX:\"end\",originY:\"top\",overlayX:\"end\",overlayY:\"bottom\"},{originX:\"end\",originY:\"bottom\",overlayX:\"end\",overlayY:\"top\"}],tr=new g(\"cdk-connected-overlay-scroll-strategy\",{providedIn:\"root\",factory:()=>{let n=a(O);return()=>It(n)}}),vi=(()=>{class n{elementRef=a(D);constructor(){}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"cdk-overlay-origin\",\"\"],[\"\",\"overlay-origin\",\"\"],[\"\",\"cdkOverlayOrigin\",\"\"]],exportAs:[\"cdkOverlayOrigin\"]})}return n})(),Fo=(()=>{class n{_dir=a(ge,{optional:!0});_injector=a(O);_overlayRef;_templatePortal;_backdropSubscription=Y.EMPTY;_attachSubscription=Y.EMPTY;_detachSubscription=Y.EMPTY;_positionSubscription=Y.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=a(tr);_disposeOnNavigation=!1;_ngZone=a(x);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(e){this._disposeOnNavigation=e}backdropClick=new M;positionChange=new M;attach=new M;detach=new M;overlayKeydown=new M;overlayOutsideClick=new M;constructor(){let e=a(fe),i=a(be);this._templatePortal=new ce(e,i),this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:\"ltr\"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef?.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef?.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this.attachOverlay():this.detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=Ro);let e=this._overlayRef=Je(this._injector,this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),i.keyCode===27&&!this.disableClose&&!Hi(i)&&(i.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{let r=this._getOriginElement(),o=ht(i);(!r||r!==o&&!r.contains(o))&&this.overlayOutsideClick.next(i)})}_buildConfig(){let e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new ye({direction:this._dir||\"ltr\",positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||this.width===0)&&(i.width=this.width),(this.height||this.height===0)&&(i.height=this.height),(this.minWidth||this.minWidth===0)&&(i.minWidth=this.minWidth),(this.minHeight||this.minHeight===0)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){let i=this.positions.map(r=>({originX:r.originX,originY:r.originY,overlayX:r.overlayX,overlayY:r.overlayY,offsetX:r.offsetX||this.offsetX,offsetY:r.offsetY||this.offsetY,panelClass:r.panelClass||void 0}));return e.setOrigin(this._getOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){let e=yi(this._injector,this._getOrigin());return this._updatePositionStrategy(e),e}_getOrigin(){return this.origin instanceof vi?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof vi?this.origin.elementRef.nativeElement:this.origin instanceof D?this.origin.nativeElement:typeof Element<\"u\"&&this.origin instanceof Element?this.origin:null}attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(Ei(()=>this.positionChange.observers.length>0)).subscribe(e=>{this._ngZone.run(()=>this.positionChange.emit(e)),this.positionChange.observers.length===0&&this._positionSubscription.unsubscribe()})),this.open=!0}detachOverlay(){this._overlayRef?.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.open=!1}static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"cdk-connected-overlay\",\"\"],[\"\",\"connected-overlay\",\"\"],[\"\",\"cdkConnectedOverlay\",\"\"]],inputs:{origin:[0,\"cdkConnectedOverlayOrigin\",\"origin\"],positions:[0,\"cdkConnectedOverlayPositions\",\"positions\"],positionStrategy:[0,\"cdkConnectedOverlayPositionStrategy\",\"positionStrategy\"],offsetX:[0,\"cdkConnectedOverlayOffsetX\",\"offsetX\"],offsetY:[0,\"cdkConnectedOverlayOffsetY\",\"offsetY\"],width:[0,\"cdkConnectedOverlayWidth\",\"width\"],height:[0,\"cdkConnectedOverlayHeight\",\"height\"],minWidth:[0,\"cdkConnectedOverlayMinWidth\",\"minWidth\"],minHeight:[0,\"cdkConnectedOverlayMinHeight\",\"minHeight\"],backdropClass:[0,\"cdkConnectedOverlayBackdropClass\",\"backdropClass\"],panelClass:[0,\"cdkConnectedOverlayPanelClass\",\"panelClass\"],viewportMargin:[0,\"cdkConnectedOverlayViewportMargin\",\"viewportMargin\"],scrollStrategy:[0,\"cdkConnectedOverlayScrollStrategy\",\"scrollStrategy\"],open:[0,\"cdkConnectedOverlayOpen\",\"open\"],disableClose:[0,\"cdkConnectedOverlayDisableClose\",\"disableClose\"],transformOriginSelector:[0,\"cdkConnectedOverlayTransformOriginOn\",\"transformOriginSelector\"],hasBackdrop:[2,\"cdkConnectedOverlayHasBackdrop\",\"hasBackdrop\",Q],lockPosition:[2,\"cdkConnectedOverlayLockPosition\",\"lockPosition\",Q],flexibleDimensions:[2,\"cdkConnectedOverlayFlexibleDimensions\",\"flexibleDimensions\",Q],growAfterOpen:[2,\"cdkConnectedOverlayGrowAfterOpen\",\"growAfterOpen\",Q],push:[2,\"cdkConnectedOverlayPush\",\"push\",Q],disposeOnNavigation:[2,\"cdkConnectedOverlayDisposeOnNavigation\",\"disposeOnNavigation\",Q]},outputs:{backdropClick:\"backdropClick\",positionChange:\"positionChange\",attach:\"attach\",detach:\"detach\",overlayKeydown:\"overlayKeydown\",overlayOutsideClick:\"overlayOutsideClick\"},exportAs:[\"cdkConnectedOverlay\"],features:[J]})}return n})();function Ao(n){let t=a(O);return()=>It(t)}var Vo={provide:tr,useFactory:Ao},ir=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({providers:[er,Vo],imports:[Le,ui,pi,pi]})}return n})();function Po(n,t){if(n&1){let e=dt();k(0,\"div\",1)(1,\"button\",2),$(\"click\",function(){at(e);let r=G();return lt(r.action())}),Be(2),C()()}if(n&2){let e=G();v(2),Ut(\" \",e.data.action,\" \")}}var Io=[\"label\"];function To(n,t){}var Bo=Math.pow(2,31)-1,et=class{_overlayRef;instance;containerInstance;_afterDismissed=new m;_afterOpened=new m;_onAction=new m;_durationTimeoutId;_dismissedByAction=!1;constructor(t,e){this._overlayRef=e,this.containerInstance=t,t._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(t){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(t,Bo))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},nr=new g(\"MatSnackBarData\"),Ie=class{politeness=\"polite\";announcementMessage=\"\";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition=\"center\";verticalPosition=\"bottom\"},No=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"matSnackBarLabel\",\"\"]],hostAttrs:[1,\"mat-mdc-snack-bar-label\",\"mdc-snackbar__label\"]})}return n})(),Lo=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"matSnackBarActions\",\"\"]],hostAttrs:[1,\"mat-mdc-snack-bar-actions\",\"mdc-snackbar__actions\"]})}return n})(),zo=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275dir=h({type:n,selectors:[[\"\",\"matSnackBarAction\",\"\"]],hostAttrs:[1,\"mat-mdc-snack-bar-action\",\"mdc-snackbar__action\"]})}return n})(),jo=(()=>{class n{snackBarRef=a(et);data=a(nr);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \\u0275fac=function(i){return new(i||n)};static \\u0275cmp=te({type:n,selectors:[[\"simple-snack-bar\"]],hostAttrs:[1,\"mat-mdc-simple-snack-bar\"],exportAs:[\"matSnackBar\"],decls:3,vars:2,consts:[[\"matSnackBarLabel\",\"\"],[\"matSnackBarActions\",\"\"],[\"matButton\",\"\",\"matSnackBarAction\",\"\",3,\"click\"]],template:function(i,r){i&1&&(k(0,\"div\",0),Be(1),C(),R(2,Po,3,1,\"div\",1)),i&2&&(v(),Ut(\" \",r.data.message,`\n`),v(),F(r.hasAction?2:-1))},dependencies:[Ui,No,Lo,zo],styles:[`.mat-mdc-simple-snack-bar{display:flex}\n`],encapsulation:2,changeDetection:0})}return n})(),bi=\"_mat-snack-bar-enter\",xi=\"_mat-snack-bar-exit\",Ho=(()=>{class n extends Ve{_ngZone=a(x);_elementRef=a(D);_changeDetectorRef=a(_e);_platform=a(U);_animationsDisabled=ze();snackBarConfig=a(Ie);_document=a(j);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=a(O);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new m;_onExit=new m;_onEnter=new m;_animationState=\"void\";_live;_label;_role;_liveElementId=a(le).getId(\"mat-snack-bar-container-live-\");constructor(){super();let e=this.snackBarConfig;e.politeness===\"assertive\"&&!e.announcementMessage?this._live=\"assertive\":e.politeness===\"off\"?this._live=\"off\":this._live=\"polite\",this._platform.FIREFOX&&(this._live===\"polite\"&&(this._role=\"status\"),this._live===\"assertive\"&&(this._role=\"alert\"))}attachComponentPortal(e){this._assertNotAttached();let i=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),i}attachTemplatePortal(e){this._assertNotAttached();let i=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),i}attachDomPortal=e=>{this._assertNotAttached();let i=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),i};onAnimationEnd(e){e===xi?this._completeExit():e===bi&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState=\"visible\",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?me(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(bi)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add(\"mat-snack-bar-fallback-visible\"),this.onAnimationEnd(bi)},200)))}exit(){return this._destroyed?nt(void 0):(this._ngZone.run(()=>{this._animationState=\"hidden\",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute(\"mat-exit\",\"\"),clearTimeout(this._announceTimeoutId),this._animationsDisabled?me(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(xi)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(xi),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let e=this._elementRef.nativeElement,i=this.snackBarConfig.panelClass;i&&(Array.isArray(i)?i.forEach(s=>e.classList.add(s)):e.classList.add(i)),this._exposeToModals();let r=this._label.nativeElement,o=\"mdc-snackbar__label\";r.classList.toggle(o,!r.querySelector(`.${o}`))}_exposeToModals(){let e=this._liveElementId,i=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');for(let r=0;r<i.length;r++){let o=i[r],s=o.getAttribute(\"aria-owns\");this._trackedModals.add(o),s?s.indexOf(e)===-1&&o.setAttribute(\"aria-owns\",s+\" \"+e):o.setAttribute(\"aria-owns\",e)}}_clearFromModals(){this._trackedModals.forEach(e=>{let i=e.getAttribute(\"aria-owns\");if(i){let r=i.replace(this._liveElementId,\"\").trim();r.length>0?e.setAttribute(\"aria-owns\",r):e.removeAttribute(\"aria-owns\")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;let e=this._elementRef.nativeElement,i=e.querySelector(\"[aria-hidden]\"),r=e.querySelector(\"[aria-live]\");if(i&&r){let o=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&i.contains(document.activeElement)&&(o=document.activeElement),i.removeAttribute(\"aria-hidden\"),r.appendChild(i),o?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \\u0275fac=function(i){return new(i||n)};static \\u0275cmp=te({type:n,selectors:[[\"mat-snack-bar-container\"]],viewQuery:function(i,r){if(i&1&&(I(fi,7),I(Io,7)),i&2){let o;w(o=S())&&(r._portalOutlet=o.first),w(o=S())&&(r._label=o.first)}},hostAttrs:[1,\"mdc-snackbar\",\"mat-mdc-snack-bar-container\"],hostVars:6,hostBindings:function(i,r){i&1&&$(\"animationend\",function(s){return r.onAnimationEnd(s.animationName)})(\"animationcancel\",function(s){return r.onAnimationEnd(s.animationName)}),i&2&&T(\"mat-snack-bar-container-enter\",r._animationState===\"visible\")(\"mat-snack-bar-container-exit\",r._animationState===\"hidden\")(\"mat-snack-bar-container-animations-enabled\",!r._animationsDisabled)},features:[E],decls:6,vars:3,consts:[[\"label\",\"\"],[1,\"mdc-snackbar__surface\",\"mat-mdc-snackbar-surface\"],[1,\"mat-mdc-snack-bar-label\"],[\"aria-hidden\",\"true\"],[\"cdkPortalOutlet\",\"\"]],template:function(i,r){i&1&&(k(0,\"div\",1)(1,\"div\",2,0)(3,\"div\",3),xe(4,To,0,0,\"ng-template\",4),C(),q(5,\"div\"),C()()),i&2&&(v(5),pe(\"aria-live\",r._live)(\"role\",r._role)(\"id\",r._liveElementId))},dependencies:[fi],styles:[`@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\n`],encapsulation:2})}return n})();function Wo(){return new Ie}var Go=new g(\"mat-snack-bar-default-options\",{providedIn:\"root\",factory:Wo}),rr=(()=>{class n{_live=a(ji);_injector=a(O);_breakpointObserver=a(Li);_parentSnackBar=a(n,{optional:!0,skipSelf:!0});_defaultConfig=a(Go);_animationsDisabled=ze();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=jo;snackBarContainerComponent=Ho;handsetCssClass=\"mat-mdc-snack-bar-handset\";get _openedSnackBarRef(){let e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,i){return this._attach(e,i)}openFromTemplate(e,i){return this._attach(e,i)}open(e,i=\"\",r){let o=_(_({},this._defaultConfig),r);return o.data={message:e,action:i},o.announcementMessage===e&&(o.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,o)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,i){let r=i&&i.viewContainerRef&&i.viewContainerRef.injector,o=O.create({parent:r||this._injector,providers:[{provide:Ie,useValue:i}]}),s=new Ae(this.snackBarContainerComponent,i.viewContainerRef,o),l=e.attach(s);return l.instance.snackBarConfig=i,l.instance}_attach(e,i){let r=_(_(_({},new Ie),this._defaultConfig),i),o=this._createOverlay(r),s=this._attachSnackBarContainer(o,r),l=new et(s,o);if(e instanceof fe){let d=new ce(e,null,{$implicit:r.data,snackBarRef:l});l.instance=s.attachTemplatePortal(d)}else{let d=this._createInjector(r,l),f=new Ae(e,void 0,d),c=s.attachComponentPortal(f);l.instance=c.instance}return this._breakpointObserver.observe(Wi.HandsetPortrait).pipe(he(o.detachments())).subscribe(d=>{o.overlayElement.classList.toggle(this.handsetCssClass,d.matches)}),r.announcementMessage&&s._onAnnounce.subscribe(()=>{this._live.announce(r.announcementMessage,r.politeness)}),this._animateSnackBar(l,r),this._openedSnackBarRef=l,this._openedSnackBarRef}_animateSnackBar(e,i){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),i.announcementMessage&&this._live.clear()}),i.duration&&i.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(i.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){let i=new ye;i.direction=e.direction;let r=Tt(this._injector),o=e.direction===\"rtl\",s=e.horizontalPosition===\"left\"||e.horizontalPosition===\"start\"&&!o||e.horizontalPosition===\"end\"&&o,l=!s&&e.horizontalPosition!==\"center\";return s?r.left(\"0\"):l?r.right(\"0\"):r.centerHorizontally(),e.verticalPosition===\"top\"?r.top(\"0\"):r.bottom(\"0\"),i.positionStrategy=r,i.disableAnimations=this._animationsDisabled,Je(this._injector,i)}_createInjector(e,i){let r=e&&e.viewContainerRef&&e.viewContainerRef.injector;return O.create({parent:r||this._injector,providers:[{provide:et,useValue:i},{provide:nr,useValue:e.data}]})}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();var or=class n{snackbar=a(rr);error(t){this.snackbar.open(t,\"Close\",{duration:5e3,panelClass:[\"snack-error\"]})}success(t){this.snackbar.open(t,\"Close\",{duration:5e3,panelClass:[\"snack-success\"]})}static \\u0275fac=function(e){return new(e||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})};var Wl=(()=>{class n{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}static \\u0275fac=function(i){return new(i||n)};static \\u0275prov=y({token:n,factory:n.\\u0275fac,providedIn:\"root\"})}return n})();var sr=class{_defaultMatcher;ngControl;_parentFormGroup;_parentForm;_stateChanges;errorState=!1;matcher;constructor(t,e,i,r,o){this._defaultMatcher=t,this.ngControl=e,this._parentFormGroup=i,this._parentForm=r,this._stateChanges=o}updateErrorState(){let t=this.errorState,e=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,r=this.ngControl?this.ngControl.control:null,o=i?.isErrorState(r,e)??!1;o!==t&&(this.errorState=o,this._stateChanges.next())}};var ed=(()=>{class n{static \\u0275fac=function(i){return new(i||n)};static \\u0275mod=P({type:n});static \\u0275inj=V({imports:[$t,zi,Tn,$t]})}return n})();export{Ae as a,ce as b,Ve as c,qs as d,fi as e,ui as f,Bn as g,Qs as h,So as i,ea as j,Qe as k,Eo as l,Pe as m,mi as n,pi as o,Un as p,It as q,ye as r,Kn as s,At as t,yi as u,Tt as v,Je as w,vi as x,Fo as y,ir as z,qe as A,nn as B,Re as C,Yi as D,ne as E,re as F,ls as G,ds as H,Rr as I,Vr as J,hs as K,Ir as L,Br as M,Lr as N,jr as O,Ur as P,fs as Q,us as R,ms as S,xn as T,En as U,js as V,yo as W,bo as X,Tn as Y,Wl as Z,sr as _,ed as $,or as aa};\n"
  },
  {
    "path": "API/wwwroot/chunk-Z2NTM2YJ.js",
    "content": "import{a as oe,b as Zt,c as Xt}from\"./chunk-TEKFR3M2.js\";import{a as Bt,b as Nt,c as jt}from\"./chunk-HJYZM75B.js\";import{a as ke,b as Qe,c as Ue}from\"./chunk-BU6XFQYD.js\";import{a as ot}from\"./chunk-NEILRAN2.js\";import\"./chunk-VOFQZSPR.js\";import{A as Ge,C as Qt,E as Ut,Z as He,aa as je,b as qt,e as Gt,f as Ht}from\"./chunk-YYNGFOZ2.js\";import{$a as f,$c as $t,Aa as he,Ac as de,Ba as Ct,Bb as Fe,Bc as Pt,Db as Le,Dc as Ft,Eb as Mt,Fa as g,Ga as M,Ha as D,Hc as Lt,I as ne,Ib as Z,Ic as Vt,J as ft,Ja as ze,Jc as q,K as X,Ka as K,Kb as b,La as J,Lb as N,Ma as m,Na as o,O as Me,Oa as c,P as De,Pa as h,Q as G,Qc as ae,R as U,Rb as Se,Sa as L,Sb as Dt,T as d,Ta as ee,Tb as re,Ua as te,V as y,Va as k,Vc as fe,W as x,Wa as u,Wb as Tt,Wc as ve,X as ye,Xa as V,Y as Te,Ya as B,Yc as Ne,Z as vt,Za as O,Zc as qe,_a as T,ab as v,ac as be,ad as Wt,bc as Ve,c as Q,ca as w,d as _t,da as kt,ea as gt,eb as $,ec as Rt,fa as Re,fb as ue,ga as xe,gb as S,h as Ie,ha as A,hb as ie,hc as At,ia as Ce,ib as l,jb as C,jc as zt,kb as W,la as yt,lb as St,m as we,ma as s,na as pe,oc as Be,pa as Ae,pb as It,q as me,qb as Oe,qc as _e,r as Ee,ra as xt,rb as se,rc as Ot,ta as _,tb as at,ua as H,ub as wt,va as E,vb as R,wb as P,xa as ce,xb as Et,ya as Y,yb as Pe,za as z}from\"./chunk-76XFCVV7.js\";var ui=[\"determinateSpinner\"];function bi(i,a){if(i&1&&(ye(),o(0,\"svg\",11),h(1,\"circle\",12),c()),i&2){let e=u();g(\"viewBox\",e._viewBox()),s(),ue(\"stroke-dasharray\",e._strokeCircumference(),\"px\")(\"stroke-dashoffset\",e._strokeCircumference()/2,\"px\")(\"stroke-width\",e._circleStrokeWidth(),\"%\"),g(\"r\",e._circleRadius())}}var _i=new U(\"mat-progress-spinner-default-options\",{providedIn:\"root\",factory:fi});function fi(){return{diameter:Yt}}var Yt=100,vi=10,$e=(()=>{class i{_elementRef=d(A);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor=\"primary\";_determinateCircle;constructor(){let e=d(_i);this._noopAnimations=ae()&&!!e&&!e._forceAnimations,this.mode=this._elementRef.nativeElement.nodeName.toLowerCase()===\"mat-spinner\"?\"indeterminate\":\"determinate\",e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return this.mode===\"determinate\"?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=Yt;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-vi)/2}_viewBox(){let e=this._circleRadius()*2+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return this.mode===\"determinate\"?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"mat-progress-spinner\"],[\"mat-spinner\"]],viewQuery:function(t,r){if(t&1&&T(ui,5),t&2){let n;f(n=v())&&(r._determinateCircle=n.first)}},hostAttrs:[\"role\",\"progressbar\",\"tabindex\",\"-1\",1,\"mat-mdc-progress-spinner\",\"mdc-circular-progress\"],hostVars:18,hostBindings:function(t,r){t&2&&(g(\"aria-valuemin\",0)(\"aria-valuemax\",100)(\"aria-valuenow\",r.mode===\"determinate\"?r.value:null)(\"mode\",r.mode),ie(\"mat-\"+r.color),ue(\"width\",r.diameter,\"px\")(\"height\",r.diameter,\"px\")(\"--mat-progress-spinner-size\",r.diameter+\"px\")(\"--mat-progress-spinner-active-indicator-width\",r.diameter+\"px\"),S(\"_mat-animation-noopable\",r._noopAnimations)(\"mdc-circular-progress--indeterminate\",r.mode===\"indeterminate\"))},inputs:{color:\"color\",mode:\"mode\",value:[2,\"value\",\"value\",N],diameter:[2,\"diameter\",\"diameter\",N],strokeWidth:[2,\"strokeWidth\",\"strokeWidth\",N]},exportAs:[\"matProgressSpinner\"],decls:14,vars:11,consts:[[\"circle\",\"\"],[\"determinateSpinner\",\"\"],[\"aria-hidden\",\"true\",1,\"mdc-circular-progress__determinate-container\"],[\"xmlns\",\"http://www.w3.org/2000/svg\",\"focusable\",\"false\",1,\"mdc-circular-progress__determinate-circle-graphic\"],[\"cx\",\"50%\",\"cy\",\"50%\",1,\"mdc-circular-progress__determinate-circle\"],[\"aria-hidden\",\"true\",1,\"mdc-circular-progress__indeterminate-container\"],[1,\"mdc-circular-progress__spinner-layer\"],[1,\"mdc-circular-progress__circle-clipper\",\"mdc-circular-progress__circle-left\"],[3,\"ngTemplateOutlet\"],[1,\"mdc-circular-progress__gap-patch\"],[1,\"mdc-circular-progress__circle-clipper\",\"mdc-circular-progress__circle-right\"],[\"xmlns\",\"http://www.w3.org/2000/svg\",\"focusable\",\"false\",1,\"mdc-circular-progress__indeterminate-circle-graphic\"],[\"cx\",\"50%\",\"cy\",\"50%\"]],template:function(t,r){if(t&1&&(Y(0,bi,2,8,\"ng-template\",null,0,Pe),o(2,\"div\",2,1),ye(),o(4,\"svg\",3),h(5,\"circle\",4),c()(),Te(),o(6,\"div\",5)(7,\"div\",6)(8,\"div\",7),L(9,8),c(),o(10,\"div\",9),L(11,8),c(),o(12,\"div\",10),L(13,8),c()()()),t&2){let n=$(1);s(4),g(\"viewBox\",r._viewBox()),s(),ue(\"stroke-dasharray\",r._strokeCircumference(),\"px\")(\"stroke-dashoffset\",r._strokeDashOffset(),\"px\")(\"stroke-width\",r._circleStrokeWidth(),\"%\"),g(\"r\",r._circleRadius()),s(4),m(\"ngTemplateOutlet\",n),s(2),m(\"ngTemplateOutlet\",n),s(2),m(\"ngTemplateOutlet\",n)}},dependencies:[Se],styles:[`.mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n`],encapsulation:2,changeDetection:0})}return i})();var Kt=(()=>{class i{static \\u0275fac=function(t){return new(t||i)};static \\u0275mod=H({type:i});static \\u0275inj=G({imports:[q]})}return i})();function gi(i,a){if(i&1&&(o(0,\"section\",0)(1,\"div\",1)(2,\"h2\",2),l(3,\"Thanks for your fake order!\"),c(),o(4,\"p\",3),l(5,\"Your order \"),o(6,\"span\",4),l(7),c(),l(8,\" will never be processed as this is a fake shop. We will not notify you by email once your order has not been shipped.\"),c(),o(9,\"div\",5)(10,\"dl\",6)(11,\"dt\",7),l(12,\"Date\"),c(),o(13,\"dd\",8),l(14),R(15,\"date\"),c()(),o(16,\"dl\",6)(17,\"dt\",7),l(18,\"Payment method\"),c(),o(19,\"dd\",8),l(20),R(21,\"paymentCard\"),c()(),o(22,\"dl\",6)(23,\"dt\",7),l(24,\"Address\"),c(),o(25,\"dd\",8),l(26),R(27,\"address\"),c()(),o(28,\"dl\",6)(29,\"dt\",7),l(30,\"Amount\"),c(),o(31,\"dd\",8),l(32),R(33,\"currency\"),c()()(),o(34,\"div\",9)(35,\"button\",10),l(36,\"View your order\"),c(),o(37,\"button\",11),l(38,\"Continue shopping\"),c()()()()),i&2){let e=a;s(7),W(\"#\",e.id),s(7),W(\" \",Et(15,7,e.orderDate,\"medium\")),s(6),W(\" \",P(21,10,e.paymentSummary),\" \"),s(6),W(\" \",P(27,12,e.shippingAddress),\" \"),s(6),C(P(33,14,e.total)),s(3),m(\"routerLink\",Oe(\"/orders/\",e.id))}}function yi(i,a){i&1&&(o(0,\"section\",0)(1,\"div\",1)(2,\"h2\",2),l(3,\"Order processing, please wait\"),c(),o(4,\"div\",5)(5,\"div\",12),h(6,\"mat-spinner\",13),o(7,\"p\",14),l(8,\"Loading order...\"),c(),o(9,\"span\"),l(10,\"Your payment has been received, we are creating the order\"),c()()(),o(11,\"div\",9)(12,\"button\",11),l(13,\"Continue shopping\"),c()()()())}var We=class i{signalrService=d($t);orderService=d(ke);ngOnDestroy(){this.orderService.orderComplete=!1,this.signalrService.orderSignal.set(null)}static \\u0275fac=function(e){return new(e||i)};static \\u0275cmp=_({type:i,selectors:[[\"app-checkout-success\"]],decls:2,vars:1,consts:[[1,\"bg-white\",\"py-16\"],[1,\"mx-auto\",\"max-w-2xl\",\"px-4\"],[1,\"font-semibold\",\"text-2xl\",\"mb-2\"],[1,\"text-gray-500\",\"mb-8\"],[1,\"font-medium\"],[1,\"space-y-2\",\"rounded-lg\",\"border\",\"border-gray-100\",\"bg-gray-50\",\"p-6\",\"mb-8\"],[1,\"flex\",\"items-center\",\"justify-between\",\"gap-4\"],[1,\"font-normal\",\"text-gray-500\"],[1,\"font-medium\",\"text-gray-900\",\"text-end\"],[1,\"flex\",\"items-center\",\"space-x-4\"],[\"mat-flat-button\",\"\",3,\"routerLink\"],[\"routerLink\",\"/shop\",\"mat-stroked-button\",\"\"],[1,\"flex\",\"flex-col\",\"justify-center\",\"items-center\"],[\"diameter\",\"30\"],[1,\"text-xl\"]],template:function(e,t){if(e&1&&M(0,gi,39,16,\"section\",0)(1,yi,14,0,\"section\",0),e&2){let r;D((r=t.signalrService.orderSignal())?0:1,r)}},dependencies:[qe,Ve,Kt,$e,Dt,Qe,re,Ue],encapsulation:2})};var xi=[\"*\"];function Ci(i,a){i&1&&B(0)}var ct=(()=>{class i{_elementRef=d(A);constructor(){}focus(){this._elementRef.nativeElement.focus()}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"\",\"cdkStepHeader\",\"\"]],hostAttrs:[\"role\",\"tab\"]})}return i})(),st=(()=>{class i{template=d(pe);constructor(){}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"\",\"cdkStepLabel\",\"\"]]})}return i})();var le={NUMBER:\"number\",EDIT:\"edit\",DONE:\"done\",ERROR:\"error\"},Si=new U(\"STEPPER_GLOBAL_OPTIONS\"),Ze=(()=>{class i{_stepperOptions;_stepper=d(ge);_displayDefaultIndicatorType;stepLabel;_childForms;content;stepControl;get interacted(){return this._interacted()}set interacted(e){this._interacted.set(e)}_interacted=w(!1);interactedStream=new z;label;errorMessage;ariaLabel;ariaLabelledby;get state(){return this._state()}set state(e){this._state.set(e)}_state=w(void 0);get editable(){return this._editable()}set editable(e){this._editable.set(e)}_editable=w(!0);optional=!1;get completed(){let e=this._completedOverride(),t=this._interacted();return e??(t&&(!this.stepControl||this.stepControl.valid))}set completed(e){this._completedOverride.set(e)}_completedOverride=w(null);index=w(-1);isSelected=Fe(()=>this._stepper.selectedIndex===this.index());indicatorType=Fe(()=>{let e=this.isSelected(),t=this.completed,r=this._state()??le.NUMBER,n=this._editable();return this._showError()&&this.hasError&&!e?le.ERROR:this._displayDefaultIndicatorType?!t||e?le.NUMBER:n?le.EDIT:le.DONE:t&&!e?le.DONE:t&&e?r:n&&e?le.EDIT:r});isNavigable=Fe(()=>{let e=this.isSelected();return this.completed||e||!this._stepper.linear});get hasError(){let e=this._customError();return e??this._getDefaultError()}set hasError(e){this._customError.set(e)}_customError=w(null);_getDefaultError(){return this.interacted&&!!this.stepControl?.invalid}constructor(){let e=d(Si,{optional:!0});this._stepperOptions=e||{},this._displayDefaultIndicatorType=this._stepperOptions.displayDefaultIndicatorType!==!1}select(){this._stepper.selected=this}reset(){this._interacted.set(!1),this._completedOverride()!=null&&this._completedOverride.set(!1),this._customError()!=null&&this._customError.set(!1),this.stepControl&&(this._childForms?.forEach(e=>e.resetForm?.()),this.stepControl.reset())}ngOnChanges(){this._stepper._stateChanged()}_markAsInteracted(){this._interacted()||(this._interacted.set(!0),this.interactedStream.emit(this))}_showError(){return this._stepperOptions.showError??this._customError()!=null}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"cdk-step\"]],contentQueries:function(t,r,n){if(t&1&&(O(n,st,5),O(n,Ut,5)),t&2){let p;f(p=v())&&(r.stepLabel=p.first),f(p=v())&&(r._childForms=p)}},viewQuery:function(t,r){if(t&1&&T(pe,7),t&2){let n;f(n=v())&&(r.content=n.first)}},inputs:{stepControl:\"stepControl\",label:\"label\",errorMessage:\"errorMessage\",ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],state:\"state\",editable:[2,\"editable\",\"editable\",b],optional:[2,\"optional\",\"optional\",b],completed:[2,\"completed\",\"completed\",b],hasError:[2,\"hasError\",\"hasError\",b]},outputs:{interactedStream:\"interacted\"},exportAs:[\"cdkStep\"],features:[Re],ngContentSelectors:xi,decls:1,vars:0,template:function(t,r){t&1&&(V(),Y(0,Ci,1,0,\"ng-template\"))},encapsulation:2,changeDetection:0})}return i})(),ge=(()=>{class i{_dir=d(Lt,{optional:!0});_changeDetectorRef=d(Z);_elementRef=d(A);_destroyed=new Ie;_keyManager;_steps;steps=new Ce;_stepHeader;_sortedHeaders=new Ce;linear=!1;get selectedIndex(){return this._selectedIndex()}set selectedIndex(e){this._steps?(this._isValidIndex(e),this.selectedIndex!==e&&(this.selected?._markAsInteracted(),!this._anyControlsInvalidOrPending(e)&&(e>=this.selectedIndex||this.steps.toArray()[e].editable)&&this._updateSelectedItemIndex(e))):this._selectedIndex.set(e)}_selectedIndex=w(0);get selected(){return this.steps?this.steps.toArray()[this.selectedIndex]:void 0}set selected(e){this.selectedIndex=e&&this.steps?this.steps.toArray().indexOf(e):-1}selectionChange=new z;selectedIndexChange=new z;_groupId=d(de).getId(\"cdk-stepper-\");get orientation(){return this._orientation}set orientation(e){this._orientation=e,this._keyManager&&this._keyManager.withVerticalOrientation(e===\"vertical\")}_orientation=\"horizontal\";constructor(){}ngAfterContentInit(){this._steps.changes.pipe(ne(this._steps),X(this._destroyed)).subscribe(e=>{this.steps.reset(e.filter(t=>t._stepper===this)),this.steps.forEach((t,r)=>t.index.set(r)),this.steps.notifyOnChanges()})}ngAfterViewInit(){if(this._stepHeader.changes.pipe(ne(this._stepHeader),X(this._destroyed)).subscribe(e=>{this._sortedHeaders.reset(e.toArray().sort((t,r)=>t._elementRef.nativeElement.compareDocumentPosition(r._elementRef.nativeElement)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1)),this._sortedHeaders.notifyOnChanges()}),this._keyManager=new Ft(this._sortedHeaders).withWrap().withHomeAndEnd().withVerticalOrientation(this._orientation===\"vertical\"),this._keyManager.updateActiveItem(this.selectedIndex),(this._dir?this._dir.change:we()).pipe(ne(this._layoutDirection()),X(this._destroyed)).subscribe(e=>this._keyManager?.withHorizontalOrientation(e)),this._keyManager.updateActiveItem(this.selectedIndex),this.steps.changes.subscribe(()=>{this.selected||this._selectedIndex.set(Math.max(this.selectedIndex-1,0))}),this._isValidIndex(this.selectedIndex)||this._selectedIndex.set(0),this.linear&&this.selectedIndex>0){let e=this.steps.toArray().slice(0,this._selectedIndex());for(let t of e)t._markAsInteracted()}}ngOnDestroy(){this._keyManager?.destroy(),this.steps.destroy(),this._sortedHeaders.destroy(),this._destroyed.next(),this._destroyed.complete()}next(){this.selectedIndex=Math.min(this._selectedIndex()+1,this.steps.length-1)}previous(){this.selectedIndex=Math.max(this._selectedIndex()-1,0)}reset(){this._updateSelectedItemIndex(0),this.steps.forEach(e=>e.reset()),this._stateChanged()}_getStepLabelId(e){return`${this._groupId}-label-${e}`}_getStepContentId(e){return`${this._groupId}-content-${e}`}_stateChanged(){this._changeDetectorRef.markForCheck()}_getAnimationDirection(e){let t=e-this._selectedIndex();return t<0?this._layoutDirection()===\"rtl\"?\"next\":\"previous\":t>0?this._layoutDirection()===\"rtl\"?\"previous\":\"next\":\"current\"}_getFocusIndex(){return this._keyManager?this._keyManager.activeItemIndex:this._selectedIndex()}_updateSelectedItemIndex(e){let t=this.steps.toArray(),r=this._selectedIndex();this.selectionChange.emit({selectedIndex:e,previouslySelectedIndex:r,selectedStep:t[e],previouslySelectedStep:t[r]}),this._keyManager&&(this._containsFocus()?this._keyManager.setActiveItem(e):this._keyManager.updateActiveItem(e)),this._selectedIndex.set(e),this.selectedIndexChange.emit(e),this._stateChanged()}_onKeydown(e){let t=Pt(e),r=e.keyCode,n=this._keyManager;n?.activeItemIndex!=null&&!t&&(r===32||r===13)?(this.selectedIndex=n.activeItemIndex,e.preventDefault()):n?.setFocusOrigin(\"keyboard\").onKeydown(e)}_anyControlsInvalidOrPending(e){return this.linear&&e>=0?this.steps.toArray().slice(0,e).some(t=>{let r=t.stepControl;return(r?r.invalid||r.pending||!t.interacted:!t.completed)&&!t.optional&&!t._completedOverride()}):!1}_layoutDirection(){return this._dir&&this._dir.value===\"rtl\"?\"rtl\":\"ltr\"}_containsFocus(){let e=this._elementRef.nativeElement,t=At();return e===t||e.contains(t)}_isValidIndex(e){return e>-1&&(!this.steps||e<this.steps.length)}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"\",\"cdkStepper\",\"\"]],contentQueries:function(t,r,n){if(t&1&&(O(n,Ze,5),O(n,ct,5)),t&2){let p;f(p=v())&&(r._steps=p),f(p=v())&&(r._stepHeader=p)}},inputs:{linear:[2,\"linear\",\"linear\",b],selectedIndex:[2,\"selectedIndex\",\"selectedIndex\",N],selected:\"selected\",orientation:\"orientation\"},outputs:{selectionChange:\"selectionChange\",selectedIndexChange:\"selectedIndexChange\"},exportAs:[\"cdkStepper\"]})}return i})(),Jt=(()=>{class i{_stepper=d(ge);type=\"submit\";constructor(){}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"button\",\"cdkStepperNext\",\"\"]],hostVars:1,hostBindings:function(t,r){t&1&&k(\"click\",function(){return r._stepper.next()}),t&2&&te(\"type\",r.type)},inputs:{type:\"type\"}})}return i})(),ei=(()=>{class i{_stepper=d(ge);type=\"button\";constructor(){}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"button\",\"cdkStepperPrevious\",\"\"]],hostVars:1,hostBindings:function(t,r){t&1&&k(\"click\",function(){return r._stepper.previous()}),t&2&&te(\"type\",r.type)},inputs:{type:\"type\"}})}return i})(),ti=(()=>{class i{static \\u0275fac=function(t){return new(t||i)};static \\u0275mod=H({type:i});static \\u0275inj=G({imports:[Vt]})}return i})();var Ii=(i,a,e)=>({index:i,active:a,optional:e});function wi(i,a){if(i&1&&L(0,2),i&2){let e=u();m(\"ngTemplateOutlet\",e.iconOverrides[e.state])(\"ngTemplateOutletContext\",wt(2,Ii,e.index,e.active,e.optional))}}function Ei(i,a){if(i&1&&(o(0,\"span\",7),l(1),c()),i&2){let e=u(2);s(),C(e._getDefaultTextForState(e.state))}}function Mi(i,a){if(i&1&&(o(0,\"span\",8),l(1),c()),i&2){let e=u(3);s(),C(e._intl.completedLabel)}}function Di(i,a){if(i&1&&(o(0,\"span\",8),l(1),c()),i&2){let e=u(3);s(),C(e._intl.editableLabel)}}function Ti(i,a){if(i&1&&(M(0,Mi,2,1,\"span\",8)(1,Di,2,1,\"span\",8),o(2,\"mat-icon\",7),l(3),c()),i&2){let e=u(2);D(e.state===\"done\"?0:e.state===\"edit\"?1:-1),s(3),C(e._getDefaultTextForState(e.state))}}function Ri(i,a){if(i&1&&M(0,Ei,2,1,\"span\",7)(1,Ti,4,2),i&2){let e,t=u();D((e=t.state)===\"number\"?0:1)}}function Ai(i,a){i&1&&(o(0,\"div\",4),L(1,9),c()),i&2&&(s(),m(\"ngTemplateOutlet\",a.template))}function zi(i,a){if(i&1&&(o(0,\"div\",4),l(1),c()),i&2){let e=u();s(),C(e.label)}}function Oi(i,a){if(i&1&&(o(0,\"div\",5),l(1),c()),i&2){let e=u();s(),C(e._intl.optionalLabel)}}function Pi(i,a){if(i&1&&(o(0,\"div\",6),l(1),c()),i&2){let e=u();s(),C(e.errorMessage)}}var ii=[\"*\"];function Fi(i,a){}function Li(i,a){if(i&1&&(B(0),Y(1,Fi,0,0,\"ng-template\",0)),i&2){let e=u();s(),m(\"cdkPortalOutlet\",e._portal)}}var Vi=[\"animatedContainer\"],ri=i=>({step:i});function Bi(i,a){i&1&&B(0)}function Ni(i,a){i&1&&h(0,\"div\",7)}function qi(i,a){if(i&1&&(L(0,6),M(1,Ni,1,0,\"div\",7)),i&2){let e=a.$implicit,t=a.$index,r=a.$count;u(2);let n=$(4);m(\"ngTemplateOutlet\",n)(\"ngTemplateOutletContext\",at(3,ri,e)),s(),D(t!==r-1?1:-1)}}function Gi(i,a){if(i&1&&(o(0,\"div\",8,1),L(2,9),c()),i&2){let e=a.$implicit,t=a.$index,r=u(2);ie(\"mat-horizontal-stepper-content-\"+r._getAnimationDirection(t)),m(\"id\",r._getStepContentId(t)),g(\"aria-labelledby\",r._getStepLabelId(t))(\"inert\",r.selectedIndex===t?null:\"\"),s(2),m(\"ngTemplateOutlet\",e.content)}}function Hi(i,a){if(i&1&&(o(0,\"div\",2)(1,\"div\",3),K(2,qi,2,5,null,null,ze),c(),o(4,\"div\",4),K(5,Gi,3,6,\"div\",5,ze),c()()),i&2){let e=u();s(2),J(e.steps),s(3),J(e.steps)}}function ji(i,a){if(i&1&&(o(0,\"div\",10),L(1,6),o(2,\"div\",11,1)(4,\"div\",12)(5,\"div\",13),L(6,9),c()()()()),i&2){let e=a.$implicit,t=a.$index,r=a.$index,n=a.$count,p=u(2),F=$(4);s(),m(\"ngTemplateOutlet\",F)(\"ngTemplateOutletContext\",at(10,ri,e)),s(),S(\"mat-stepper-vertical-line\",r!==n-1)(\"mat-vertical-content-container-active\",p.selectedIndex===t),g(\"inert\",p.selectedIndex===t?null:\"\"),s(2),m(\"id\",p._getStepContentId(t)),g(\"aria-labelledby\",p._getStepLabelId(t)),s(2),m(\"ngTemplateOutlet\",e.content)}}function Qi(i,a){if(i&1&&K(0,ji,7,12,\"div\",10,ze),i&2){let e=u();J(e.steps)}}function Ui(i,a){if(i&1){let e=ee();o(0,\"mat-step-header\",14),k(\"click\",function(){let r=y(e).step;return x(r.select())})(\"keydown\",function(r){y(e);let n=u();return x(n._onKeydown(r))}),c()}if(i&2){let e=a.step,t=u();S(\"mat-horizontal-stepper-header\",t.orientation===\"horizontal\")(\"mat-vertical-stepper-header\",t.orientation===\"vertical\"),m(\"tabIndex\",t._getFocusIndex()===e.index()?0:-1)(\"id\",t._getStepLabelId(e.index()))(\"index\",e.index())(\"state\",e.indicatorType())(\"label\",e.stepLabel||e.label)(\"selected\",e.isSelected())(\"active\",e.isNavigable())(\"optional\",e.optional)(\"errorMessage\",e.errorMessage)(\"iconOverrides\",t._iconOverrides)(\"disableRipple\",t.disableRipple||!e.isNavigable())(\"color\",e.color||t.color),g(\"aria-posinset\",e.index()+1)(\"aria-setsize\",t.steps.length)(\"aria-controls\",t._getStepContentId(e.index()))(\"aria-selected\",e.isSelected())(\"aria-label\",e.ariaLabel||null)(\"aria-labelledby\",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null)(\"aria-disabled\",e.isNavigable()?null:!0)}}var dt=(()=>{class i extends st{static \\u0275fac=(()=>{let e;return function(r){return(e||(e=xe(i)))(r||i)}})();static \\u0275dir=E({type:i,selectors:[[\"\",\"matStepLabel\",\"\"]],features:[ce]})}return i})(),Xe=(()=>{class i{changes=new Ie;optionalLabel=\"Optional\";completedLabel=\"Completed\";editableLabel=\"Editable\";static \\u0275fac=function(t){return new(t||i)};static \\u0275prov=De({token:i,factory:i.\\u0275fac,providedIn:\"root\"})}return i})();function $i(i){return i||new Xe}var Wi={provide:Xe,deps:[[new kt,new gt,Xe]],useFactory:$i},lt=(()=>{class i extends ct{_intl=d(Xe);_focusMonitor=d(Be);_intlSubscription;state;label;errorMessage;iconOverrides;index;selected;active;optional;disableRipple;color;constructor(){super();let e=d(_e);e.load(ve),e.load(Ot);let t=d(Z);this._intlSubscription=this._intl.changes.subscribe(()=>t.markForCheck())}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._intlSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._elementRef)}focus(e,t){e?this._focusMonitor.focusVia(this._elementRef,e,t):this._elementRef.nativeElement.focus(t)}_stringLabel(){return this.label instanceof dt?null:this.label}_templateLabel(){return this.label instanceof dt?this.label:null}_getHostElement(){return this._elementRef.nativeElement}_getDefaultTextForState(e){return e==\"number\"?`${this.index+1}`:e==\"edit\"?\"create\":e==\"error\"?\"warning\":e}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"mat-step-header\"]],hostAttrs:[\"role\",\"tab\",1,\"mat-step-header\"],hostVars:2,hostBindings:function(t,r){t&2&&ie(\"mat-\"+(r.color||\"primary\"))},inputs:{state:\"state\",label:\"label\",errorMessage:\"errorMessage\",iconOverrides:\"iconOverrides\",index:\"index\",selected:\"selected\",active:\"active\",optional:\"optional\",disableRipple:\"disableRipple\",color:\"color\"},features:[ce],decls:10,vars:17,consts:[[\"matRipple\",\"\",1,\"mat-step-header-ripple\",\"mat-focus-indicator\",3,\"matRippleTrigger\",\"matRippleDisabled\"],[1,\"mat-step-icon-content\"],[3,\"ngTemplateOutlet\",\"ngTemplateOutletContext\"],[1,\"mat-step-label\"],[1,\"mat-step-text-label\"],[1,\"mat-step-optional\"],[1,\"mat-step-sub-label-error\"],[\"aria-hidden\",\"true\"],[1,\"cdk-visually-hidden\"],[3,\"ngTemplateOutlet\"]],template:function(t,r){if(t&1&&(h(0,\"div\",0),o(1,\"div\")(2,\"div\",1),M(3,wi,1,6,\"ng-container\",2)(4,Ri,2,1),c()(),o(5,\"div\",3),M(6,Ai,2,1,\"div\",4)(7,zi,2,1,\"div\",4),M(8,Oi,2,1,\"div\",5),M(9,Pi,2,1,\"div\",6),c()),t&2){let n;m(\"matRippleTrigger\",r._getHostElement())(\"matRippleDisabled\",r.disableRipple),s(),ie(Oe(\"mat-step-icon-state-\",r.state,\" mat-step-icon\")),S(\"mat-step-icon-selected\",r.selected),s(2),D(r.iconOverrides&&r.iconOverrides[r.state]?3:4),s(2),S(\"mat-step-label-active\",r.active)(\"mat-step-label-selected\",r.selected)(\"mat-step-label-error\",r.state==\"error\"),s(),D((n=r._templateLabel())?6:r._stringLabel()?7:-1,n),s(2),D(r.optional&&r.state!=\"error\"?8:-1),s(),D(r.state===\"error\"?9:-1)}},dependencies:[fe,Se,Bt],styles:[`.mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-step-header:focus .mat-focus-indicator::before{content:\"\"}.mat-step-header:hover[aria-disabled=true]{cursor:default}.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:var(--mat-stepper-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-inverse-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent));border-radius:var(--mat-stepper-header-hover-state-layer-shape, var(--mat-sys-corner-medium))}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused{background-color:var(--mat-stepper-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-inverse-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));border-radius:var(--mat-stepper-header-focus-state-layer-shape, var(--mat-sys-corner-medium))}@media(hover: none){.mat-step-header:hover{background:none}}@media(forced-colors: active){.mat-step-header{outline:solid 1px}.mat-step-header[aria-selected=true] .mat-step-label{text-decoration:underline}.mat-step-header[aria-disabled=true]{outline-color:GrayText}.mat-step-header[aria-disabled=true] .mat-step-label,.mat-step-header[aria-disabled=true] .mat-step-icon,.mat-step-header[aria-disabled=true] .mat-step-optional{color:GrayText}}.mat-step-optional{font-size:12px;color:var(--mat-stepper-header-optional-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-sub-label-error{font-size:12px;font-weight:normal}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative;color:var(--mat-stepper-header-icon-foreground-color, var(--mat-sys-surface));background-color:var(--mat-stepper-header-icon-background-color, var(--mat-sys-on-surface-variant))}.mat-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error{background-color:var(--mat-stepper-header-error-state-icon-background-color, transparent);color:var(--mat-stepper-header-error-state-icon-foreground-color, var(--mat-sys-error))}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle;font-family:var(--mat-stepper-header-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-stepper-header-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-stepper-header-label-text-weight, var(--mat-sys-title-small-weight));color:var(--mat-stepper-header-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-label.mat-step-label-active{color:var(--mat-stepper-header-selected-state-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-label.mat-step-label-error{color:var(--mat-stepper-header-error-state-label-text-color, var(--mat-sys-error));font-size:var(--mat-stepper-header-error-state-label-text-size, var(--mat-sys-title-small-size))}.mat-step-label.mat-step-label-selected{font-size:var(--mat-stepper-header-selected-state-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-stepper-header-selected-state-label-text-weight, var(--mat-sys-title-small-weight))}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-step-icon-selected{background-color:var(--mat-stepper-header-selected-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-selected-state-icon-foreground-color, var(--mat-sys-on-primary))}.mat-step-icon-state-done{background-color:var(--mat-stepper-header-done-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-done-state-icon-foreground-color, var(--mat-sys-on-primary))}.mat-step-icon-state-edit{background-color:var(--mat-stepper-header-edit-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-edit-state-icon-foreground-color, var(--mat-sys-on-primary))}\n`],encapsulation:2,changeDetection:0})}return i})(),Zi=(()=>{class i{templateRef=d(pe);name;constructor(){}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"ng-template\",\"matStepperIcon\",\"\"]],inputs:{name:[0,\"matStepperIcon\",\"name\"]}})}return i})(),Xi=(()=>{class i{_template=d(pe);constructor(){}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"ng-template\",\"matStepContent\",\"\"]]})}return i})(),mt=(()=>{class i extends Ze{_errorStateMatcher=d(He,{skipSelf:!0});_viewContainerRef=d(xt);_isSelected=_t.EMPTY;stepLabel=void 0;color;_lazyContent;_portal;ngAfterContentInit(){this._isSelected=this._stepper.steps.changes.pipe(ft(()=>this._stepper.selectionChange.pipe(Ee(e=>e.selectedStep===this),ne(this._stepper.selected===this)))).subscribe(e=>{e&&this._lazyContent&&!this._portal&&(this._portal=new qt(this._lazyContent._template,this._viewContainerRef))})}ngOnDestroy(){this._isSelected.unsubscribe()}isErrorState(e,t){let r=this._errorStateMatcher.isErrorState(e,t),n=!!(e&&e.invalid&&this.interacted);return r||n}static \\u0275fac=(()=>{let e;return function(r){return(e||(e=xe(i)))(r||i)}})();static \\u0275cmp=_({type:i,selectors:[[\"mat-step\"]],contentQueries:function(t,r,n){if(t&1&&(O(n,dt,5),O(n,Xi,5)),t&2){let p;f(p=v())&&(r.stepLabel=p.first),f(p=v())&&(r._lazyContent=p.first)}},hostAttrs:[\"hidden\",\"\"],inputs:{color:\"color\"},exportAs:[\"matStep\"],features:[se([{provide:He,useExisting:i},{provide:Ze,useExisting:i}]),ce],ngContentSelectors:ii,decls:1,vars:0,consts:[[3,\"cdkPortalOutlet\"]],template:function(t,r){t&1&&(V(),Y(0,Li,2,1,\"ng-template\"))},dependencies:[Gt],encapsulation:2,changeDetection:0})}return i})(),pt=(()=>{class i extends ge{_ngZone=d(he);_renderer=d(Ae);_animationsDisabled=ae();_cleanupTransition;_isAnimating=w(!1);_stepHeader=void 0;_animatedContainers;_steps=void 0;steps=new Ce;_icons;animationDone=new z;disableRipple;color;labelPosition=\"end\";headerPosition=\"top\";_iconOverrides={};get animationDuration(){return this._animationDuration}set animationDuration(e){this._animationDuration=/^\\d+$/.test(e)?e+\"ms\":e}_animationDuration=\"\";_isServer=!d(zt).isBrowser;constructor(){super();let t=d(A).nativeElement.nodeName.toLowerCase();this.orientation=t===\"mat-vertical-stepper\"?\"vertical\":\"horizontal\"}ngAfterContentInit(){super.ngAfterContentInit(),this._icons.forEach(({name:e,templateRef:t})=>this._iconOverrides[e]=t),this.steps.changes.pipe(X(this._destroyed)).subscribe(()=>this._stateChanged()),this.selectedIndexChange.pipe(X(this._destroyed)).subscribe(()=>{let e=this._getAnimationDuration();e===\"0ms\"||e===\"0s\"?this._onAnimationDone():this._isAnimating.set(!0)}),this._ngZone.runOutsideAngular(()=>{this._animationsDisabled||setTimeout(()=>{this._elementRef.nativeElement.classList.add(\"mat-stepper-animations-enabled\"),this._cleanupTransition=this._renderer.listen(this._elementRef.nativeElement,\"transitionend\",this._handleTransitionend)},200)})}ngAfterViewInit(){if(super.ngAfterViewInit(),typeof queueMicrotask==\"function\"){let e=!1;this._animatedContainers.changes.pipe(ne(null),X(this._destroyed)).subscribe(()=>queueMicrotask(()=>{e||(e=!0,this.animationDone.emit()),this._stateChanged()}))}}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTransition?.()}_getAnimationDuration(){return this._animationsDisabled?\"0ms\":this.animationDuration?this.animationDuration:this.orientation===\"horizontal\"?\"500ms\":\"225ms\"}_handleTransitionend=e=>{let t=e.target;if(!t)return;let r=this.orientation===\"horizontal\"&&e.propertyName===\"transform\"&&t.classList.contains(\"mat-horizontal-stepper-content-current\"),n=this.orientation===\"vertical\"&&e.propertyName===\"grid-template-rows\"&&t.classList.contains(\"mat-vertical-content-container-active\");(r||n)&&this._animatedContainers.find(F=>F.nativeElement===t)&&this._onAnimationDone()};_onAnimationDone(){this._isAnimating.set(!1),this.animationDone.emit()}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"mat-stepper\"],[\"mat-vertical-stepper\"],[\"mat-horizontal-stepper\"],[\"\",\"matStepper\",\"\"]],contentQueries:function(t,r,n){if(t&1&&(O(n,mt,5),O(n,Zi,5)),t&2){let p;f(p=v())&&(r._steps=p),f(p=v())&&(r._icons=p)}},viewQuery:function(t,r){if(t&1&&(T(lt,5),T(Vi,5)),t&2){let n;f(n=v())&&(r._stepHeader=n),f(n=v())&&(r._animatedContainers=n)}},hostAttrs:[\"role\",\"tablist\"],hostVars:15,hostBindings:function(t,r){t&2&&(g(\"aria-orientation\",r.orientation),ue(\"--mat-stepper-animation-duration\",r._getAnimationDuration()),S(\"mat-stepper-horizontal\",r.orientation===\"horizontal\")(\"mat-stepper-vertical\",r.orientation===\"vertical\")(\"mat-stepper-label-position-end\",r.orientation===\"horizontal\"&&r.labelPosition==\"end\")(\"mat-stepper-label-position-bottom\",r.orientation===\"horizontal\"&&r.labelPosition==\"bottom\")(\"mat-stepper-header-position-bottom\",r.headerPosition===\"bottom\")(\"mat-stepper-animating\",r._isAnimating()))},inputs:{disableRipple:\"disableRipple\",color:\"color\",labelPosition:\"labelPosition\",headerPosition:\"headerPosition\",animationDuration:\"animationDuration\"},outputs:{animationDone:\"animationDone\"},exportAs:[\"matStepper\",\"matVerticalStepper\",\"matHorizontalStepper\"],features:[se([{provide:ge,useExisting:i}]),ce],ngContentSelectors:ii,decls:5,vars:2,consts:[[\"stepTemplate\",\"\"],[\"animatedContainer\",\"\"],[1,\"mat-horizontal-stepper-wrapper\"],[1,\"mat-horizontal-stepper-header-container\"],[1,\"mat-horizontal-content-container\"],[\"role\",\"tabpanel\",1,\"mat-horizontal-stepper-content\",3,\"id\",\"class\"],[3,\"ngTemplateOutlet\",\"ngTemplateOutletContext\"],[1,\"mat-stepper-horizontal-line\"],[\"role\",\"tabpanel\",1,\"mat-horizontal-stepper-content\",3,\"id\"],[3,\"ngTemplateOutlet\"],[1,\"mat-step\"],[1,\"mat-vertical-content-container\"],[\"role\",\"tabpanel\",1,\"mat-vertical-stepper-content\",3,\"id\"],[1,\"mat-vertical-content\"],[3,\"click\",\"keydown\",\"tabIndex\",\"id\",\"index\",\"state\",\"label\",\"selected\",\"active\",\"optional\",\"errorMessage\",\"iconOverrides\",\"disableRipple\",\"color\"]],template:function(t,r){if(t&1&&(V(),M(0,Bi,1,0),M(1,Hi,7,0,\"div\",2)(2,Qi,2,0),Y(3,Ui,1,23,\"ng-template\",null,0,Pe)),t&2){let n;D(r._isServer?0:-1),s(),D((n=r.orientation)===\"horizontal\"?1:n===\"vertical\"?2:-1)}},dependencies:[Se,lt],styles:[`.mat-stepper-vertical,.mat-stepper-horizontal{display:block;font-family:var(--mat-stepper-container-text-font, var(--mat-sys-body-medium-font));background:var(--mat-stepper-container-color, var(--mat-sys-surface))}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-header-position-bottom .mat-horizontal-stepper-header-container{order:1}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px;border-top-color:var(--mat-stepper-line-color, var(--mat-sys-outline))}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative;top:calc(calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) + 12px)}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;overflow:hidden;align-items:center;padding:0 24px;height:var(--mat-stepper-header-height, 72px)}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-horizontal-stepper-header::before,.mat-horizontal-stepper-header::after{border-top-color:var(--mat-stepper-line-color, var(--mat-sys-outline))}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{padding:calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) 24px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after{top:calc(calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) + 12px)}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px;padding:calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) 24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-wrapper{display:flex;flex-direction:column}.mat-horizontal-stepper-content{visibility:hidden;overflow:hidden;outline:0;height:0}.mat-stepper-animations-enabled .mat-horizontal-stepper-content{transition:transform var(--mat-stepper-animation-duration, 0) cubic-bezier(0.35, 0, 0.25, 1)}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-previous{transform:translate3d(-100%, 0, 0)}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-next{transform:translate3d(100%, 0, 0)}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-current{visibility:visible;transform:none;height:auto}.mat-stepper-horizontal:not(.mat-stepper-animating) .mat-horizontal-stepper-content.mat-horizontal-stepper-content-current{overflow:visible}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}@media(forced-colors: active){.mat-horizontal-content-container{outline:solid 1px}}.mat-stepper-header-position-bottom .mat-horizontal-content-container{padding:24px 24px 0 24px}.mat-vertical-content-container{display:grid;grid-template-rows:0fr;grid-template-columns:100%;margin-left:36px;border:0;position:relative}.mat-stepper-animations-enabled .mat-vertical-content-container{transition:grid-template-rows var(--mat-stepper-animation-duration, 0) cubic-bezier(0.4, 0, 0.2, 1)}.mat-vertical-content-container.mat-vertical-content-container-active{grid-template-rows:1fr}.mat-step:last-child .mat-vertical-content-container{border:none}@media(forced-colors: active){.mat-vertical-content-container{outline:solid 1px}}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}@supports not (grid-template-rows: 0fr){.mat-vertical-content-container{height:0}.mat-vertical-content-container.mat-vertical-content-container-active{height:auto}}.mat-stepper-vertical-line::before{content:\"\";position:absolute;left:0;border-left-width:1px;border-left-style:solid;border-left-color:var(--mat-stepper-line-color, var(--mat-sys-outline));top:calc(8px - calc((var(--mat-stepper-header-height, 72px) - 24px) / 2));bottom:calc(8px - calc((var(--mat-stepper-header-height, 72px) - 24px) / 2))}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0;visibility:hidden}.mat-stepper-animations-enabled .mat-vertical-stepper-content{transition:visibility var(--mat-stepper-animation-duration, 0) linear}.mat-vertical-content-container-active>.mat-vertical-stepper-content{visibility:visible}.mat-vertical-content{padding:0 24px 24px 24px}\n`],encapsulation:2,changeDetection:0})}return i})(),ai=(()=>{class i extends Jt{static \\u0275fac=(()=>{let e;return function(r){return(e||(e=xe(i)))(r||i)}})();static \\u0275dir=E({type:i,selectors:[[\"button\",\"matStepperNext\",\"\"]],hostAttrs:[1,\"mat-stepper-next\"],hostVars:1,hostBindings:function(t,r){t&2&&te(\"type\",r.type)},features:[ce]})}return i})(),oi=(()=>{class i extends ei{static \\u0275fac=(()=>{let e;return function(r){return(e||(e=xe(i)))(r||i)}})();static \\u0275dir=E({type:i,selectors:[[\"button\",\"matStepperPrevious\",\"\"]],hostAttrs:[1,\"mat-stepper-previous\"],hostVars:1,hostBindings:function(t,r){t&2&&te(\"type\",r.type)},features:[ce]})}return i})(),ni=(()=>{class i{static \\u0275fac=function(t){return new(t||i)};static \\u0275mod=H({type:i});static \\u0275inj=G({providers:[Wi,He],imports:[q,Ht,ti,Nt,Ne,pt,lt,q]})}return i})();var Ki=[\"mat-internal-form-field\",\"\"],Ji=[\"*\"],Ye=(()=>{class i{labelPosition;static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"div\",\"mat-internal-form-field\",\"\"]],hostAttrs:[1,\"mdc-form-field\",\"mat-internal-form-field\"],hostVars:2,hostBindings:function(t,r){t&2&&S(\"mdc-form-field--align-end\",r.labelPosition===\"before\")},inputs:{labelPosition:\"labelPosition\"},attrs:Ki,ngContentSelectors:Ji,decls:1,vars:0,template:function(t,r){t&1&&(V(),B(0))},styles:[`.mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\n`],encapsulation:2,changeDetection:0})}return i})();var er=[\"input\"],tr=[\"label\"],ir=[\"*\"],rr=new U(\"mat-checkbox-default-options\",{providedIn:\"root\",factory:si});function si(){return{color:\"accent\",clickAction:\"check-indeterminate\",disabledInteractive:!1}}var I=function(i){return i[i.Init=0]=\"Init\",i[i.Checked=1]=\"Checked\",i[i.Unchecked=2]=\"Unchecked\",i[i.Indeterminate=3]=\"Indeterminate\",i}(I||{}),ht=class{source;checked},ci=si(),ut=(()=>{class i{_elementRef=d(A);_changeDetectorRef=d(Z);_ngZone=d(he);_animationsDisabled=ae();_options=d(rr,{optional:!0});focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){let t=new ht;return t.source=this,t.checked=e,t}_getAnimationTargetElement(){return this._inputElement?.nativeElement}_animationClasses={uncheckedToChecked:\"mdc-checkbox--anim-unchecked-checked\",uncheckedToIndeterminate:\"mdc-checkbox--anim-unchecked-indeterminate\",checkedToUnchecked:\"mdc-checkbox--anim-checked-unchecked\",checkedToIndeterminate:\"mdc-checkbox--anim-checked-indeterminate\",indeterminateToChecked:\"mdc-checkbox--anim-indeterminate-checked\",indeterminateToUnchecked:\"mdc-checkbox--anim-indeterminate-unchecked\"};ariaLabel=\"\";ariaLabelledby=null;ariaDescribedby;ariaExpanded;ariaControls;ariaOwns;_uniqueId;id;get inputId(){return`${this.id||this._uniqueId}-input`}required;labelPosition=\"after\";name=null;change=new z;indeterminateChange=new z;value;disableRipple;_inputElement;_labelElement;tabIndex;color;disabledInteractive;_onTouched=()=>{};_currentAnimationClass=\"\";_currentCheckState=I.Init;_controlValueAccessorChangeFn=()=>{};_validatorChangeFn=()=>{};constructor(){d(_e).load(ve);let e=d(new Le(\"tabindex\"),{optional:!0});this._options=this._options||ci,this.color=this._options.color||ci.color,this.tabIndex=e==null?0:parseInt(e)||0,this.id=this._uniqueId=d(de).getId(\"mat-mdc-checkbox-\"),this.disabledInteractive=this._options?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this.indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}_checked=!1;get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}_disabled=!1;get indeterminate(){return this._indeterminate()}set indeterminate(e){let t=e!=this._indeterminate();this._indeterminate.set(e),t&&(e?this._transitionCheckState(I.Indeterminate):this._transitionCheckState(this.checked?I.Checked:I.Unchecked),this.indeterminateChange.emit(e)),this._syncIndeterminate(e)}_indeterminate=w(!1);_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&e.value!==!0?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let t=this._currentCheckState,r=this._getAnimationTargetElement();if(!(t===e||!r)&&(this._currentAnimationClass&&r.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(t,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){r.classList.add(this._currentAnimationClass);let n=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{r.classList.remove(n)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){let e=this._options?.clickAction;!this.disabled&&e!==\"noop\"?(this.indeterminate&&e!==\"check\"&&Promise.resolve().then(()=>{this._indeterminate.set(!1),this.indeterminateChange.emit(!1)}),this._checked=!this._checked,this._transitionCheckState(this._checked?I.Checked:I.Unchecked),this._emitChangeEvent()):(this.disabled&&this.disabledInteractive||!this.disabled&&e===\"noop\")&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate)}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,t){if(this._animationsDisabled)return\"\";switch(e){case I.Init:if(t===I.Checked)return this._animationClasses.uncheckedToChecked;if(t==I.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case I.Unchecked:return t===I.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case I.Checked:return t===I.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case I.Indeterminate:return t===I.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return\"\"}_syncIndeterminate(e){let t=this._inputElement;t&&(t.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"mat-checkbox\"]],viewQuery:function(t,r){if(t&1&&(T(er,5),T(tr,5)),t&2){let n;f(n=v())&&(r._inputElement=n.first),f(n=v())&&(r._labelElement=n.first)}},hostAttrs:[1,\"mat-mdc-checkbox\"],hostVars:16,hostBindings:function(t,r){t&2&&(te(\"id\",r.id),g(\"tabindex\",null)(\"aria-label\",null)(\"aria-labelledby\",null),ie(r.color?\"mat-\"+r.color:\"mat-accent\"),S(\"_mat-animation-noopable\",r._animationsDisabled)(\"mdc-checkbox--disabled\",r.disabled)(\"mat-mdc-checkbox-disabled\",r.disabled)(\"mat-mdc-checkbox-checked\",r.checked)(\"mat-mdc-checkbox-disabled-interactive\",r.disabledInteractive))},inputs:{ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],ariaDescribedby:[0,\"aria-describedby\",\"ariaDescribedby\"],ariaExpanded:[2,\"aria-expanded\",\"ariaExpanded\",b],ariaControls:[0,\"aria-controls\",\"ariaControls\"],ariaOwns:[0,\"aria-owns\",\"ariaOwns\"],id:\"id\",required:[2,\"required\",\"required\",b],labelPosition:\"labelPosition\",name:\"name\",value:\"value\",disableRipple:[2,\"disableRipple\",\"disableRipple\",b],tabIndex:[2,\"tabIndex\",\"tabIndex\",e=>e==null?void 0:N(e)],color:\"color\",disabledInteractive:[2,\"disabledInteractive\",\"disabledInteractive\",b],checked:[2,\"checked\",\"checked\",b],disabled:[2,\"disabled\",\"disabled\",b],indeterminate:[2,\"indeterminate\",\"indeterminate\",b]},outputs:{change:\"change\",indeterminateChange:\"indeterminateChange\"},exportAs:[\"matCheckbox\"],features:[se([{provide:Ge,useExisting:Me(()=>i),multi:!0},{provide:Qt,useExisting:i,multi:!0}]),Re],ngContentSelectors:ir,decls:15,vars:23,consts:[[\"checkbox\",\"\"],[\"input\",\"\"],[\"label\",\"\"],[\"mat-internal-form-field\",\"\",3,\"click\",\"labelPosition\"],[1,\"mdc-checkbox\"],[1,\"mat-mdc-checkbox-touch-target\",3,\"click\"],[\"type\",\"checkbox\",1,\"mdc-checkbox__native-control\",3,\"blur\",\"click\",\"change\",\"checked\",\"indeterminate\",\"disabled\",\"id\",\"required\",\"tabIndex\"],[1,\"mdc-checkbox__ripple\"],[1,\"mdc-checkbox__background\"],[\"focusable\",\"false\",\"viewBox\",\"0 0 24 24\",\"aria-hidden\",\"true\",1,\"mdc-checkbox__checkmark\"],[\"fill\",\"none\",\"d\",\"M1.73,12.91 8.1,19.28 22.79,4.59\",1,\"mdc-checkbox__checkmark-path\"],[1,\"mdc-checkbox__mixedmark\"],[\"mat-ripple\",\"\",1,\"mat-mdc-checkbox-ripple\",\"mat-focus-indicator\",3,\"matRippleTrigger\",\"matRippleDisabled\",\"matRippleCentered\"],[1,\"mdc-label\",3,\"for\"]],template:function(t,r){if(t&1){let n=ee();V(),o(0,\"div\",3),k(\"click\",function(F){return y(n),x(r._preventBubblingFromLabel(F))}),o(1,\"div\",4,0)(3,\"div\",5),k(\"click\",function(){return y(n),x(r._onTouchTargetClick())}),c(),o(4,\"input\",6,1),k(\"blur\",function(){return y(n),x(r._onBlur())})(\"click\",function(){return y(n),x(r._onInputClick())})(\"change\",function(F){return y(n),x(r._onInteractionEvent(F))}),c(),h(6,\"div\",7),o(7,\"div\",8),ye(),o(8,\"svg\",9),h(9,\"path\",10),c(),Te(),h(10,\"div\",11),c(),h(11,\"div\",12),c(),o(12,\"label\",13,2),B(14),c()()}if(t&2){let n=$(2);m(\"labelPosition\",r.labelPosition),s(4),S(\"mdc-checkbox--selected\",r.checked),m(\"checked\",r.checked)(\"indeterminate\",r.indeterminate)(\"disabled\",r.disabled&&!r.disabledInteractive)(\"id\",r.inputId)(\"required\",r.required)(\"tabIndex\",r.disabled&&!r.disabledInteractive?-1:r.tabIndex),g(\"aria-label\",r.ariaLabel||null)(\"aria-labelledby\",r.ariaLabelledby)(\"aria-describedby\",r.ariaDescribedby)(\"aria-checked\",r.indeterminate?\"mixed\":null)(\"aria-controls\",r.ariaControls)(\"aria-disabled\",r.disabled&&r.disabledInteractive?!0:null)(\"aria-expanded\",r.ariaExpanded)(\"aria-owns\",r.ariaOwns)(\"name\",r.name)(\"value\",r.value),s(7),m(\"matRippleTrigger\",n)(\"matRippleDisabled\",r.disableRipple||r.disabled)(\"matRippleCentered\",!0),s(),m(\"for\",r.inputId)}},dependencies:[fe,Ye],styles:[`.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover>.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:hover>.mat-mdc-checkbox-ripple>.mat-ripple-element{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover .mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control+.mdc-checkbox__ripple{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}@media(forced-colors: active){.mdc-checkbox--disabled{opacity:.5}}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox .mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox .mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display, block)}.mat-mdc-checkbox .mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-focus-indicator::before{content:\"\"}\n`],encapsulation:2,changeDetection:0})}return i})(),di=(()=>{class i{static \\u0275fac=function(t){return new(t||i)};static \\u0275mod=H({type:i});static \\u0275inj=G({imports:[ut,q,q]})}return i})();var Ke=class i{baseUrl=Rt.baseUrl;http=d(Tt);deliveryMethods=[];getDeliveryMethods(){return this.deliveryMethods.length>0?we(this.deliveryMethods):this.http.get(this.baseUrl+\"payments/delivery-methods\").pipe(Ee(a=>(this.deliveryMethods=a.sort((e,t)=>t.price-e.price),a)))}static \\u0275fac=function(e){return new(e||i)};static \\u0275prov=De({token:i,factory:i.\\u0275fac,providedIn:\"root\"})};var or=[\"input\"],nr=[\"formField\"],cr=[\"*\"],Je=class{source;value;constructor(a,e){this.source=a,this.value=e}},sr={provide:Ge,useExisting:Me(()=>bt),multi:!0},li=new U(\"MatRadioGroup\"),dr=new U(\"mat-radio-default-options\",{providedIn:\"root\",factory:lr});function lr(){return{color:\"accent\",disabledInteractive:!1}}var bt=(()=>{class i{_changeDetector=d(Z);_value=null;_name=d(de).getId(\"mat-radio-group-\");_selected=null;_isInitialized=!1;_labelPosition=\"after\";_disabled=!1;_required=!1;_buttonChanges;_controlValueAccessorChangeFn=()=>{};onTouched=()=>{};change=new z;_radios;color;get name(){return this._name}set name(e){this._name=e,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(e){this._labelPosition=e===\"before\"?\"before\":\"after\",this._markRadiosForCheck()}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(e){this._selected=e,this.value=e?e.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markRadiosForCheck()}get required(){return this._required}set required(e){this._required=e,this._markRadiosForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markRadiosForCheck()}_disabledInteractive=!1;constructor(){}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(e=>e===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(e=>{e.name=this.name,e._markForCheck()})}_updateSelectedRadioFromValue(){let e=this._selected!==null&&this._selected.value===this._value;this._radios&&!e&&(this._selected=null,this._radios.forEach(t=>{t.checked=this.value===t.value,t.checked&&(this._selected=t)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new Je(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(e=>e._markForCheck())}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetector.markForCheck()}static \\u0275fac=function(t){return new(t||i)};static \\u0275dir=E({type:i,selectors:[[\"mat-radio-group\"]],contentQueries:function(t,r,n){if(t&1&&O(n,et,5),t&2){let p;f(p=v())&&(r._radios=p)}},hostAttrs:[\"role\",\"radiogroup\",1,\"mat-mdc-radio-group\"],inputs:{color:\"color\",name:\"name\",labelPosition:\"labelPosition\",value:\"value\",selected:\"selected\",disabled:[2,\"disabled\",\"disabled\",b],required:[2,\"required\",\"required\",b],disabledInteractive:[2,\"disabledInteractive\",\"disabledInteractive\",b]},outputs:{change:\"change\"},exportAs:[\"matRadioGroup\"],features:[se([sr,{provide:li,useExisting:i}])]})}return i})(),et=(()=>{class i{_elementRef=d(A);_changeDetector=d(Z);_focusMonitor=d(Be);_radioDispatcher=d(jt);_defaultOptions=d(dr,{optional:!0});_ngZone=d(he);_renderer=d(Ae);_uniqueId=d(de).getId(\"mat-radio-\");_cleanupClick;id=this._uniqueId;name;ariaLabel;ariaLabelledby;ariaDescribedby;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked!==e&&(this._checked=e,e&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!e&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),e&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this.radioGroup!==null&&(this.checked||(this.checked=this.radioGroup.value===e),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||\"after\"}set labelPosition(e){this._labelPosition=e}_labelPosition;get disabled(){return this._disabled||this.radioGroup!==null&&this.radioGroup.disabled}set disabled(e){this._setDisabled(e)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(e){e!==this._required&&this._changeDetector.markForCheck(),this._required=e}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._defaultOptions&&this._defaultOptions.color||\"accent\"}set color(e){this._color=e}_color;get disabledInteractive(){return this._disabledInteractive||this.radioGroup!==null&&this.radioGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new z;radioGroup;get inputId(){return`${this.id||this._uniqueId}-input`}_checked=!1;_disabled;_required;_value=null;_removeUniqueSelectionListener=()=>{};_previousTabIndex;_inputElement;_rippleTrigger;_noopAnimations=ae();_injector=d(vt);constructor(){d(_e).load(ve);let e=d(li,{optional:!0}),t=d(new Le(\"tabindex\"),{optional:!0});this.radioGroup=e,this._disabledInteractive=this._defaultOptions?.disabledInteractive??!1,t&&(this.tabIndex=N(t,0))}focus(e,t){t?this._focusMonitor.focusVia(this._inputElement,t,e):this._inputElement.nativeElement.focus(e)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((e,t)=>{e!==this.id&&t===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{!e&&this.radioGroup&&this.radioGroup._touch()}),this._ngZone.runOutsideAngular(()=>{this._cleanupClick=this._renderer.listen(this._inputElement.nativeElement,\"click\",this._onInputClick)})}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new Je(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputInteraction(e){if(e.stopPropagation(),!this.checked&&!this.disabled){let t=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),t&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(e){this._onInputInteraction(e),(!this.disabled||this.disabledInteractive)&&this._inputElement?.nativeElement.focus()}_setDisabled(e){this._disabled!==e&&(this._disabled=e,this._changeDetector.markForCheck())}_onInputClick=e=>{this.disabled&&this.disabledInteractive&&e.preventDefault()};_updateTabIndex(){let e=this.radioGroup,t;if(!e||!e.selected||this.disabled?t=this.tabIndex:t=e.selected===this?this.tabIndex:-1,t!==this._previousTabIndex){let r=this._inputElement?.nativeElement;r&&(r.setAttribute(\"tabindex\",t+\"\"),this._previousTabIndex=t,Ct(()=>{queueMicrotask(()=>{e&&e.selected&&e.selected!==this&&document.activeElement===r&&(e.selected?._inputElement.nativeElement.focus(),document.activeElement===r&&this._inputElement.nativeElement.blur())})},{injector:this._injector}))}}static \\u0275fac=function(t){return new(t||i)};static \\u0275cmp=_({type:i,selectors:[[\"mat-radio-button\"]],viewQuery:function(t,r){if(t&1&&(T(or,5),T(nr,7,A)),t&2){let n;f(n=v())&&(r._inputElement=n.first),f(n=v())&&(r._rippleTrigger=n.first)}},hostAttrs:[1,\"mat-mdc-radio-button\"],hostVars:19,hostBindings:function(t,r){t&1&&k(\"focus\",function(){return r._inputElement.nativeElement.focus()}),t&2&&(g(\"id\",r.id)(\"tabindex\",null)(\"aria-label\",null)(\"aria-labelledby\",null)(\"aria-describedby\",null),S(\"mat-primary\",r.color===\"primary\")(\"mat-accent\",r.color===\"accent\")(\"mat-warn\",r.color===\"warn\")(\"mat-mdc-radio-checked\",r.checked)(\"mat-mdc-radio-disabled\",r.disabled)(\"mat-mdc-radio-disabled-interactive\",r.disabledInteractive)(\"_mat-animation-noopable\",r._noopAnimations))},inputs:{id:\"id\",name:\"name\",ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],ariaDescribedby:[0,\"aria-describedby\",\"ariaDescribedby\"],disableRipple:[2,\"disableRipple\",\"disableRipple\",b],tabIndex:[2,\"tabIndex\",\"tabIndex\",e=>e==null?0:N(e)],checked:[2,\"checked\",\"checked\",b],value:\"value\",labelPosition:\"labelPosition\",disabled:[2,\"disabled\",\"disabled\",b],required:[2,\"required\",\"required\",b],color:\"color\",disabledInteractive:[2,\"disabledInteractive\",\"disabledInteractive\",b]},outputs:{change:\"change\"},exportAs:[\"matRadioButton\"],ngContentSelectors:cr,decls:13,vars:17,consts:[[\"formField\",\"\"],[\"input\",\"\"],[\"mat-internal-form-field\",\"\",3,\"labelPosition\"],[1,\"mdc-radio\"],[1,\"mat-mdc-radio-touch-target\",3,\"click\"],[\"type\",\"radio\",\"aria-invalid\",\"false\",1,\"mdc-radio__native-control\",3,\"change\",\"id\",\"checked\",\"disabled\",\"required\"],[1,\"mdc-radio__background\"],[1,\"mdc-radio__outer-circle\"],[1,\"mdc-radio__inner-circle\"],[\"mat-ripple\",\"\",1,\"mat-radio-ripple\",\"mat-focus-indicator\",3,\"matRippleTrigger\",\"matRippleDisabled\",\"matRippleCentered\"],[1,\"mat-ripple-element\",\"mat-radio-persistent-ripple\"],[1,\"mdc-label\",3,\"for\"]],template:function(t,r){if(t&1){let n=ee();V(),o(0,\"div\",2,0)(2,\"div\",3)(3,\"div\",4),k(\"click\",function(F){return y(n),x(r._onTouchTargetClick(F))}),c(),o(4,\"input\",5,1),k(\"change\",function(F){return y(n),x(r._onInputInteraction(F))}),c(),o(6,\"div\",6),h(7,\"div\",7)(8,\"div\",8),c(),o(9,\"div\",9),h(10,\"div\",10),c()(),o(11,\"label\",11),B(12),c()()}t&2&&(m(\"labelPosition\",r.labelPosition),s(2),S(\"mdc-radio--disabled\",r.disabled),s(2),m(\"id\",r.inputId)(\"checked\",r.checked)(\"disabled\",r.disabled&&!r.disabledInteractive)(\"required\",r.required),g(\"name\",r.name)(\"value\",r.value)(\"aria-label\",r.ariaLabel)(\"aria-labelledby\",r.ariaLabelledby)(\"aria-describedby\",r.ariaDescribedby)(\"aria-disabled\",r.disabled&&r.disabledInteractive?\"true\":null),s(5),m(\"matRippleTrigger\",r._rippleTrigger.nativeElement)(\"matRippleDisabled\",r._isRippleDisabled())(\"matRippleCentered\",!0),s(2),m(\"for\",r.inputId))},dependencies:[fe,Ye],styles:[`.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled])~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-hover-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{border-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-pressed-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{border-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-radio-button .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:\"\";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px);top:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2);left:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{border-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled{pointer-events:auto}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color, var(--mat-sys-primary))}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mat-internal-form-field{color:var(--mat-radio-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-radio-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-radio-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-radio-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-radio-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-radio-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple>.mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button .mdc-radio>.mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.cdk-focused .mat-focus-indicator::before{content:\"\"}.mat-mdc-radio-disabled{cursor:default;pointer-events:none}.mat-mdc-radio-disabled.mat-mdc-radio-disabled-interactive{pointer-events:auto}.mat-mdc-radio-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display, block)}[dir=rtl] .mat-mdc-radio-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}\n`],encapsulation:2,changeDetection:0})}return i})(),mi=(()=>{class i{static \\u0275fac=function(t){return new(t||i)};static \\u0275mod=H({type:i});static \\u0275inj=G({imports:[q,Ne,et,q]})}return i})();var pr=(i,a)=>a.id;function hr(i,a){if(i&1&&(o(0,\"label\",2)(1,\"mat-radio-button\",3)(2,\"div\",4)(3,\"strong\"),l(4),R(5,\"currency\"),c(),o(6,\"span\",5),l(7),c()()()()),i&2){let e=a.$implicit,t=u();s(),m(\"value\",e)(\"checked\",t.cartService.selectedDelivery()===e),s(3),St(\"\",e.shortName,\" - \",P(5,5,e.price)),s(3),C(e.description)}}var tt=class i{checkoutService=d(Ke);cartService=d(oe);deliveryComplete=Mt();ngOnInit(){this.checkoutService.getDeliveryMethods().subscribe({next:a=>{if(this.cartService.cart()?.deliveryMethodId){let e=a.find(t=>t.id===this.cartService.cart()?.deliveryMethodId);e&&(this.cartService.selectedDelivery.set(e),this.deliveryComplete.emit(!0))}}})}updateDeliveryMethod(a){return Q(this,null,function*(){this.cartService.selectedDelivery.set(a);let e=this.cartService.cart();e&&(e.deliveryMethodId=a.id,yield me(this.cartService.setCart(e)),this.deliveryComplete.emit(!0))})}static \\u0275fac=function(e){return new(e||i)};static \\u0275cmp=_({type:i,selectors:[[\"app-checkout-delivery\"]],outputs:{deliveryComplete:\"deliveryComplete\"},decls:4,vars:1,consts:[[1,\"w-full\"],[1,\"grid\",\"grid-cols-2\",\"gap-4\",3,\"change\",\"value\"],[1,\"p-3\",\"border\",\"border-gray-200\",\"cursor-pointer\",\"w-full\",\"h-full\",\"hover:bg-purple-100\"],[1,\"w-full\",\"h-full\",3,\"value\",\"checked\"],[1,\"flex\",\"flex-col\",\"w-full\",\"h-full\"],[1,\"text-sm\"]],template:function(e,t){if(e&1&&(o(0,\"div\",0)(1,\"mat-radio-group\",1),k(\"change\",function(n){return t.updateDeliveryMethod(n.value)}),K(2,hr,8,7,\"label\",2,pr),c()()),e&2){let r;s(),m(\"value\",(r=t.cartService.selectedDelivery())==null?null:r.id),s(),J(t.checkoutService.deliveryMethods)}},dependencies:[mi,bt,et,re],encapsulation:2})};var ur=(i,a)=>a.productId;function br(i,a){if(i&1&&(o(0,\"tr\")(1,\"td\",8)(2,\"div\",9),h(3,\"img\",10),o(4,\"span\"),l(5),c()()(),o(6,\"td\",11),l(7),c(),o(8,\"td\",12),l(9),R(10,\"currency\"),c()()),i&2){let e=a.$implicit;s(3),m(\"src\",It(e.pictureUrl),yt),s(2),C(e.productName),s(2),W(\"x\",e.quantity),s(2),C(P(10,5,e.price))}}var it=class i{cartService=d(oe);confirmationToken;static \\u0275fac=function(e){return new(e||i)};static \\u0275cmp=_({type:i,selectors:[[\"app-checkout-review\"]],inputs:{confirmationToken:\"confirmationToken\"},decls:22,vars:6,consts:[[1,\"mt-4\",\"w-full\"],[1,\"text-lg\",\"font-semibold\"],[1,\"font-medium\"],[1,\"mt-1\",\"text-gray-500\",\"flex\"],[1,\"mt-6\",\"mx-auto\"],[1,\"border-b\",\"border-gray-200\"],[1,\"w-full\",\"text-center\"],[1,\"divide-y\",\"divide-gray-200\"],[1,\"py-4\"],[1,\"flex\",\"items-center\",\"gap-4\"],[\"alt\",\"product image\",1,\"w-10\",\"h-10\",3,\"src\"],[1,\"p-4\"],[1,\"p-4\",\"text-right\"]],template:function(e,t){if(e&1&&(o(0,\"div\",0)(1,\"h4\",1),l(2,\"Billing and delivery information\"),c(),o(3,\"dl\")(4,\"dt\",2),l(5,\"Shipping address\"),c(),o(6,\"dd\",3)(7,\"span\"),l(8),R(9,\"address\"),c()(),o(10,\"dt\",2),l(11,\"Payment details\"),c(),o(12,\"dd\",3)(13,\"span\"),l(14),R(15,\"paymentCard\"),c()()()(),o(16,\"div\",4)(17,\"div\",5)(18,\"table\",6)(19,\"tbody\",7),K(20,br,11,7,\"tr\",null,ur),c()()()()),e&2){let r;s(8),C(P(9,2,t.confirmationToken==null?null:t.confirmationToken.shipping)),s(6),C(P(15,4,t.confirmationToken==null?null:t.confirmationToken.payment_method_preview)),s(6),J((r=t.cartService.cart())==null?null:r.items)}},dependencies:[re,Qe,Ue],encapsulation:2})};function _r(i,a){i&1&&h(0,\"mat-spinner\",21)}function fr(i,a){if(i&1&&(o(0,\"span\"),l(1),R(2,\"currency\"),c()),i&2){let e,t=u();s(),W(\"Pay \",P(2,1,(e=t.cartService.totals())==null?null:e.total))}}var rt=class i{stripeService=d(Zt);accountService=d(Wt);snackbar=d(je);router=d(be);orderService=d(ke);cartService=d(oe);addressElement;paymentElement;saveAddress=!1;completionStatus=w({address:!1,card:!1,delivery:!1});confirmationToken;loading=!1;ngOnInit(){return Q(this,null,function*(){try{this.addressElement=yield this.stripeService.createAddressElement(),this.addressElement.mount(\"#address-element\"),this.addressElement.on(\"change\",this.handleAddressChange),this.paymentElement=yield this.stripeService.createPaymentElement(),this.paymentElement.mount(\"#payment-element\"),this.paymentElement.on(\"change\",this.handlePaymentChange)}catch(a){this.snackbar.error(a.message)}})}handleAddressChange=a=>{this.completionStatus.update(e=>(e.address=a.complete,e))};handlePaymentChange=a=>{this.completionStatus.update(e=>(e.card=a.complete,e))};handleDeliveryChange(a){this.completionStatus.update(e=>(e.delivery=a,e))}getConfirmationToken(){return Q(this,null,function*(){try{if(Object.values(this.completionStatus()).every(a=>a===!0)){let a=yield this.stripeService.createConfirmationToken();if(a.error)throw new Error(a.error.message);this.confirmationToken=a.confirmationToken,console.log(this.confirmationToken)}}catch(a){this.snackbar.error(a.message)}})}onStepChange(a){return Q(this,null,function*(){if(a.selectedIndex===1&&this.saveAddress){let e=yield this.getAddressFromStripeAddress();e&&me(this.accountService.updateAddress(e))}a.selectedIndex===2&&(yield me(this.stripeService.createOrUpdatePaymentIntent())),a.selectedIndex===3&&(yield this.getConfirmationToken())})}confirmPayment(a){return Q(this,null,function*(){this.loading=!0;try{if(this.confirmationToken){let e=yield this.stripeService.confirmPayment(this.confirmationToken);if(e.paymentIntent?.status===\"succeeded\"){let t=yield this.createOrderModel();if(yield me(this.orderService.createOrder(t)))this.orderService.orderComplete=!0,this.cartService.deleteCart(),this.cartService.selectedDelivery.set(null),this.router.navigateByUrl(\"/checkout/success\");else throw new Error(\"Order creation failed\")}else throw e.error?new Error(e.error.message):new Error(\"Something went wrong\")}}catch(e){this.snackbar.error(e.message||\"Something went wrong\"),a.previous()}finally{this.loading=!1}})}createOrderModel(){return Q(this,null,function*(){let a=this.cartService.cart(),e=yield this.getAddressFromStripeAddress(),t=this.confirmationToken?.payment_method_preview.card;if(!a?.id||!a.deliveryMethodId||!t||!e)throw new Error(\"Problem creating order\");return{cartId:a.id,paymentSummary:{last4:+t.last4,brand:t.brand,expMonth:t.exp_month,expYear:t.exp_year},deliveryMethodId:a.deliveryMethodId,shippingAddress:e,discount:this.cartService.totals()?.discount}})}getAddressFromStripeAddress(){return Q(this,null,function*(){let a=yield this.addressElement?.getValue(),e=a?.value.address;return e?{name:a.value.name,line1:e.line1,line2:e?.line2||void 0,city:e.city,state:e.state,country:e.country,postalCode:e.postal_code}:null})}onSaveAddressCheckboxChange(a){this.saveAddress=a.checked}ngOnDestroy(){this.stripeService.disposeElements()}static \\u0275fac=function(e){return new(e||i)};static \\u0275cmp=_({type:i,selectors:[[\"app-checkout\"]],decls:38,vars:11,consts:[[\"stepper\",\"\"],[1,\"flex\",\"mt-32\",\"gap-6\"],[1,\"w-3/4\"],[1,\"bg-white\",\"border\",\"border-gray-200\",\"shadow-sm\",3,\"selectionChange\",\"linear\"],[\"label\",\"Address\",3,\"completed\"],[\"id\",\"address-element\"],[1,\"flex\",\"justify-end\",\"mt-1\"],[3,\"change\",\"checked\"],[1,\"flex\",\"justify-between\",\"mt-6\"],[\"routerLink\",\"/shop\",\"mat-stroked-button\",\"\",1,\"z-0\"],[\"matStepperNext\",\"\",\"mat-flat-button\",\"\",1,\"z-0\",3,\"disabled\"],[\"label\",\"Shipping\",3,\"completed\"],[3,\"deliveryComplete\"],[\"matStepperPrevious\",\"\",\"mat-stroked-button\",\"\"],[\"matStepperNext\",\"\",\"mat-flat-button\",\"\",3,\"disabled\"],[\"label\",\"Payment\",3,\"completed\"],[\"id\",\"payment-element\"],[\"label\",\"Confirmation\"],[3,\"confirmationToken\"],[\"matStepperPrevious\",\"\",\"mat-stroked-button\",\"\",1,\"z-0\"],[\"mat-flat-button\",\"\",1,\"z-0\",3,\"click\",\"disabled\"],[\"diameter\",\"20\"],[1,\"w-1/4\"]],template:function(e,t){if(e&1){let r=ee();o(0,\"div\",1)(1,\"div\",2)(2,\"mat-stepper\",3,0),k(\"selectionChange\",function(p){return y(r),x(t.onStepChange(p))}),o(4,\"mat-step\",4),h(5,\"div\",5),o(6,\"div\",6)(7,\"mat-checkbox\",7),k(\"change\",function(p){return y(r),x(t.onSaveAddressCheckboxChange(p))}),l(8,\"Save as default address\"),c()(),o(9,\"div\",8)(10,\"button\",9),l(11,\"Continue shopping\"),c(),o(12,\"button\",10),l(13,\"Next\"),c()()(),o(14,\"mat-step\",11)(15,\"app-checkout-delivery\",12),k(\"deliveryComplete\",function(p){return y(r),x(t.handleDeliveryChange(p))}),c(),o(16,\"div\",8)(17,\"button\",13),l(18,\"Back\"),c(),o(19,\"button\",14),l(20,\"Next\"),c()()(),o(21,\"mat-step\",15),h(22,\"div\",16),o(23,\"div\",8)(24,\"button\",13),l(25,\"Back\"),c(),o(26,\"button\",14),l(27,\"Next\"),c()()(),o(28,\"mat-step\",17),h(29,\"app-checkout-review\",18),o(30,\"div\",8)(31,\"button\",19),l(32,\"Back\"),c(),o(33,\"button\",20),k(\"click\",function(){y(r);let p=$(3);return x(t.confirmPayment(p))}),M(34,_r,1,0,\"mat-spinner\",21)(35,fr,3,3,\"span\"),c()()()()(),o(36,\"div\",22),h(37,\"app-order-summary\"),c()()}e&2&&(s(2),m(\"linear\",!0),s(2),m(\"completed\",t.completionStatus().address),s(3),m(\"checked\",t.saveAddress),s(5),m(\"disabled\",!t.completionStatus().address),s(2),m(\"completed\",t.completionStatus().delivery),s(5),m(\"disabled\",!t.completionStatus().delivery),s(2),m(\"completed\",t.completionStatus().card),s(5),m(\"disabled\",!t.completionStatus().card),s(3),m(\"confirmationToken\",t.confirmationToken),s(4),m(\"disabled\",!t.confirmationToken||t.loading),s(),D(t.loading?34:35))},dependencies:[Xt,ni,mt,pt,ai,oi,qe,Ve,di,ut,tt,it,re,$e],encapsulation:2})};var pi=(i,a)=>{let e=d(oe),t=d(be),r=d(je);return!e.cart()||e.cart()?.items.length===0?(r.error(\"Your cart is empty\"),t.navigateByUrl(\"/cart\"),!1):!0};var hi=(i,a)=>{let e=d(ke),t=d(be);return e.orderComplete?!0:(t.navigateByUrl(\"/shop\"),!1)};var Dn=[{path:\"\",component:rt,canActivate:[ot,pi]},{path:\"success\",component:We,canActivate:[ot,hi]}];export{Dn as checkoutRoutes};\n"
  },
  {
    "path": "API/wwwroot/index.html",
    "content": "<!doctype html>\n<html lang=\"en\" data-beasties-container>\n<head><link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n  <meta charset=\"utf-8\">\n  <title>Skinet</title>\n  <base href=\"/\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\">\n  <style>@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v48/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style>\n  <style>@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v143/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');}.material-icons{font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>\n<style>html{--mat-sys-background:#faf9fd;--mat-sys-error:#ba1a1a;--mat-sys-error-container:#ffdad6;--mat-sys-inverse-on-surface:#f2f0f4;--mat-sys-inverse-primary:#abc7ff;--mat-sys-inverse-surface:#2f3033;--mat-sys-on-background:#1a1b1f;--mat-sys-on-error:#ffffff;--mat-sys-on-error-container:#93000a;--mat-sys-on-primary:#ffffff;--mat-sys-on-primary-container:#00458f;--mat-sys-on-primary-fixed:#001b3f;--mat-sys-on-primary-fixed-variant:#00458f;--mat-sys-on-secondary:#ffffff;--mat-sys-on-secondary-container:#3e4759;--mat-sys-on-secondary-fixed:#131c2b;--mat-sys-on-secondary-fixed-variant:#3e4759;--mat-sys-on-surface:#1a1b1f;--mat-sys-on-surface-variant:#44474e;--mat-sys-on-tertiary:#ffffff;--mat-sys-on-tertiary-container:#0000ef;--mat-sys-on-tertiary-fixed:#00006e;--mat-sys-on-tertiary-fixed-variant:#0000ef;--mat-sys-outline:#74777f;--mat-sys-outline-variant:#c4c6d0;--mat-sys-primary:#005cbb;--mat-sys-primary-container:#d7e3ff;--mat-sys-primary-fixed:#d7e3ff;--mat-sys-primary-fixed-dim:#abc7ff;--mat-sys-scrim:#000000;--mat-sys-secondary:#565e71;--mat-sys-secondary-container:#dae2f9;--mat-sys-secondary-fixed:#dae2f9;--mat-sys-secondary-fixed-dim:#bec6dc;--mat-sys-shadow:#000000;--mat-sys-surface:#faf9fd;--mat-sys-surface-bright:#faf9fd;--mat-sys-surface-container:#efedf0;--mat-sys-surface-container-high:#e9e7eb;--mat-sys-surface-container-highest:#e3e2e6;--mat-sys-surface-container-low:#f4f3f6;--mat-sys-surface-container-lowest:#ffffff;--mat-sys-surface-dim:#dbd9dd;--mat-sys-surface-tint:#005cbb;--mat-sys-surface-variant:#e0e2ec;--mat-sys-tertiary:#343dff;--mat-sys-tertiary-container:#e0e0ff;--mat-sys-tertiary-fixed:#e0e0ff;--mat-sys-tertiary-fixed-dim:#bec2ff;--mat-sys-neutral-variant20:#2d3038;--mat-sys-neutral10:#1a1b1f;--mat-sys-level0:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2:0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large:400 1rem / 1.5rem Roboto;--mat-sys-body-large-font:Roboto;--mat-sys-body-large-line-height:1.5rem;--mat-sys-body-large-size:1rem;--mat-sys-body-large-tracking:.031rem;--mat-sys-body-large-weight:400;--mat-sys-body-medium:400 .875rem / 1.25rem Roboto;--mat-sys-body-medium-font:Roboto;--mat-sys-body-medium-line-height:1.25rem;--mat-sys-body-medium-size:.875rem;--mat-sys-body-medium-tracking:.016rem;--mat-sys-body-medium-weight:400;--mat-sys-body-small:400 .75rem / 1rem Roboto;--mat-sys-body-small-font:Roboto;--mat-sys-body-small-line-height:1rem;--mat-sys-body-small-size:.75rem;--mat-sys-body-small-tracking:.025rem;--mat-sys-body-small-weight:400;--mat-sys-display-large:400 3.562rem / 4rem Roboto;--mat-sys-display-large-font:Roboto;--mat-sys-display-large-line-height:4rem;--mat-sys-display-large-size:3.562rem;--mat-sys-display-large-tracking:-.016rem;--mat-sys-display-large-weight:400;--mat-sys-display-medium:400 2.812rem / 3.25rem Roboto;--mat-sys-display-medium-font:Roboto;--mat-sys-display-medium-line-height:3.25rem;--mat-sys-display-medium-size:2.812rem;--mat-sys-display-medium-tracking:0;--mat-sys-display-medium-weight:400;--mat-sys-display-small:400 2.25rem / 2.75rem Roboto;--mat-sys-display-small-font:Roboto;--mat-sys-display-small-line-height:2.75rem;--mat-sys-display-small-size:2.25rem;--mat-sys-display-small-tracking:0;--mat-sys-display-small-weight:400;--mat-sys-headline-large:400 2rem / 2.5rem Roboto;--mat-sys-headline-large-font:Roboto;--mat-sys-headline-large-line-height:2.5rem;--mat-sys-headline-large-size:2rem;--mat-sys-headline-large-tracking:0;--mat-sys-headline-large-weight:400;--mat-sys-headline-medium:400 1.75rem / 2.25rem Roboto;--mat-sys-headline-medium-font:Roboto;--mat-sys-headline-medium-line-height:2.25rem;--mat-sys-headline-medium-size:1.75rem;--mat-sys-headline-medium-tracking:0;--mat-sys-headline-medium-weight:400;--mat-sys-headline-small:400 1.5rem / 2rem Roboto;--mat-sys-headline-small-font:Roboto;--mat-sys-headline-small-line-height:2rem;--mat-sys-headline-small-size:1.5rem;--mat-sys-headline-small-tracking:0;--mat-sys-headline-small-weight:400;--mat-sys-label-large:500 .875rem / 1.25rem Roboto;--mat-sys-label-large-font:Roboto;--mat-sys-label-large-line-height:1.25rem;--mat-sys-label-large-size:.875rem;--mat-sys-label-large-tracking:.006rem;--mat-sys-label-large-weight:500;--mat-sys-label-large-weight-prominent:700;--mat-sys-label-medium:500 .75rem / 1rem Roboto;--mat-sys-label-medium-font:Roboto;--mat-sys-label-medium-line-height:1rem;--mat-sys-label-medium-size:.75rem;--mat-sys-label-medium-tracking:.031rem;--mat-sys-label-medium-weight:500;--mat-sys-label-medium-weight-prominent:700;--mat-sys-label-small:500 .688rem / 1rem Roboto;--mat-sys-label-small-font:Roboto;--mat-sys-label-small-line-height:1rem;--mat-sys-label-small-size:.688rem;--mat-sys-label-small-tracking:.031rem;--mat-sys-label-small-weight:500;--mat-sys-title-large:400 1.375rem / 1.75rem Roboto;--mat-sys-title-large-font:Roboto;--mat-sys-title-large-line-height:1.75rem;--mat-sys-title-large-size:1.375rem;--mat-sys-title-large-tracking:0;--mat-sys-title-large-weight:400;--mat-sys-title-medium:500 1rem / 1.5rem Roboto;--mat-sys-title-medium-font:Roboto;--mat-sys-title-medium-line-height:1.5rem;--mat-sys-title-medium-size:1rem;--mat-sys-title-medium-tracking:.009rem;--mat-sys-title-medium-weight:500;--mat-sys-title-small:500 .875rem / 1.25rem Roboto;--mat-sys-title-small-font:Roboto;--mat-sys-title-small-line-height:1.25rem;--mat-sys-title-small-size:.875rem;--mat-sys-title-small-tracking:.006rem;--mat-sys-title-small-weight:500;--mat-sys-corner-extra-large:28px;--mat-sys-corner-extra-large-top:28px 28px 0 0;--mat-sys-corner-extra-small:4px;--mat-sys-corner-extra-small-top:4px 4px 0 0;--mat-sys-corner-full:9999px;--mat-sys-corner-large:16px;--mat-sys-corner-large-end:0 16px 16px 0;--mat-sys-corner-large-start:16px 0 0 16px;--mat-sys-corner-large-top:16px 16px 0 0;--mat-sys-corner-medium:12px;--mat-sys-corner-none:0;--mat-sys-corner-small:8px;--mat-sys-dragged-state-layer-opacity:.16;--mat-sys-focus-state-layer-opacity:.12;--mat-sys-hover-state-layer-opacity:.08;--mat-sys-pressed-state-layer-opacity:.12}@layer properties;@layer theme,base,components,utilities;@layer theme{:root{--font-sans:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-700:oklch(49.6% .265 301.924);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-4xl:56rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--radius-lg:.5rem;--radius-2xl:1rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;margin:0;padding:0;border:0 solid}html{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}img{display:block;vertical-align:middle}img{max-width:100%;height:auto}}@layer utilities{.flex{display:flex!important}.h-screen{height:100vh!important}.flex-col{flex-direction:column!important}.items-center{align-items:center!important}.justify-center{justify-content:center!important}.align-middle{vertical-align:middle!important}}@layer base{}@property --tw-space-y-reverse{syntax:\"*\";inherits:false;initial-value:0;}@property --tw-space-x-reverse{syntax:\"*\";inherits:false;initial-value:0;}@property --tw-divide-y-reverse{syntax:\"*\";inherits:false;initial-value:0;}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid;}@property --tw-gradient-position{syntax:\"*\";inherits:false;}@property --tw-gradient-from{syntax:\"<color>\";inherits:false;initial-value:#0000;}@property --tw-gradient-via{syntax:\"<color>\";inherits:false;initial-value:#0000;}@property --tw-gradient-to{syntax:\"<color>\";inherits:false;initial-value:#0000;}@property --tw-gradient-stops{syntax:\"*\";inherits:false;}@property --tw-gradient-via-stops{syntax:\"*\";inherits:false;}@property --tw-gradient-from-position{syntax:\"<length-percentage>\";inherits:false;initial-value:0%;}@property --tw-gradient-via-position{syntax:\"<length-percentage>\";inherits:false;initial-value:50%;}@property --tw-gradient-to-position{syntax:\"<length-percentage>\";inherits:false;initial-value:100%;}@property --tw-font-weight{syntax:\"*\";inherits:false;}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000;}@property --tw-shadow-color{syntax:\"*\";inherits:false;}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%;}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000;}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false;}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%;}@property --tw-ring-color{syntax:\"*\";inherits:false;}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000;}@property --tw-inset-ring-color{syntax:\"*\";inherits:false;}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000;}@property --tw-ring-inset{syntax:\"*\";inherits:false;}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0px;}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff;}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000;}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid;}@property --tw-blur{syntax:\"*\";inherits:false;}@property --tw-brightness{syntax:\"*\";inherits:false;}@property --tw-contrast{syntax:\"*\";inherits:false;}@property --tw-grayscale{syntax:\"*\";inherits:false;}@property --tw-hue-rotate{syntax:\"*\";inherits:false;}@property --tw-invert{syntax:\"*\";inherits:false;}@property --tw-opacity{syntax:\"*\";inherits:false;}@property --tw-saturate{syntax:\"*\";inherits:false;}@property --tw-sepia{syntax:\"*\";inherits:false;}@property --tw-drop-shadow{syntax:\"*\";inherits:false;}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false;}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%;}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}:root{--mat-button-filled-container-shape:6px;--mat-button-outlined-container-shape:6px;--mat-badge-background-color:blue}</style><link rel=\"stylesheet\" href=\"styles-COVWXBF4.css\" media=\"print\" onload=\"this.media='all'\"><noscript><link rel=\"stylesheet\" href=\"styles-COVWXBF4.css\"></noscript></head>\n<body>\n  <div id=\"initial-splash\">\n    <div class=\"flex items-center justify-center h-screen\">\n      <div class=\"flex-col items-center align-middle\">\n        <img src=\"../images/logo.png\" alt=\"logo\">\n      </div>\n    </div>\n  </div>\n  <app-root></app-root>\n<link rel=\"modulepreload\" href=\"chunk-SP3SSILU.js\"><link rel=\"modulepreload\" href=\"chunk-MIKQGBUF.js\"><link rel=\"modulepreload\" href=\"chunk-TEKFR3M2.js\"><link rel=\"modulepreload\" href=\"chunk-HJYZM75B.js\"><link rel=\"modulepreload\" href=\"chunk-NEILRAN2.js\"><link rel=\"modulepreload\" href=\"chunk-PEWDZYDO.js\"><link rel=\"modulepreload\" href=\"chunk-VOFQZSPR.js\"><link rel=\"modulepreload\" href=\"chunk-YYNGFOZ2.js\"><link rel=\"modulepreload\" href=\"chunk-76XFCVV7.js\"><script src=\"polyfills-B6TNHZQ6.js\" type=\"module\"></script><script src=\"main-627RABRE.js\" type=\"module\"></script></body>\n</html>\n"
  },
  {
    "path": "API/wwwroot/main-627RABRE.js",
    "content": "import{a as Ri,b as Oi,c as Fi,d as zi,e as Xi,f as Ki,g as Ji}from\"./chunk-SP3SSILU.js\";import\"./chunk-MIKQGBUF.js\";import{a as O,c as Wi}from\"./chunk-TEKFR3M2.js\";import{a as T,e as Ie}from\"./chunk-HJYZM75B.js\";import{a as Zi}from\"./chunk-NEILRAN2.js\";import{a as Zt,b as Ci,c as Mi}from\"./chunk-PEWDZYDO.js\";import{a as Gi}from\"./chunk-VOFQZSPR.js\";import{A as Bi,B as $t,G as bt,H as Ni,I as ji,J as vt,K as Vi,L as Hi,P as Ui,R as xt,U as qi,Y as Qi,aa as $i,b as Ti,q as Di,r as Ai,u as Li,w as Pi}from\"./chunk-YYNGFOZ2.js\";import{$a as L,$b as di,$c as Yi,Aa as Q,Ac as Gt,B as Ue,Ba as Je,Bc as Yt,C as qe,Cb as ni,D as Qe,Da as ti,Dc as Wt,Eb as ai,Fa as E,Fb as ut,Ga as v,Gc as ki,Ha as x,Hc as wi,I as Ft,Ia as Ht,Ib as X,J as ke,Ja as we,K as St,Ka as j,Kb as G,La as V,Lb as Me,M as Xe,Ma as h,Na as r,O as Ge,Oa as o,P as st,Pa as g,Qc as Y,R as z,Rb as ri,Sc as R,T as s,Ta as w,Tb as gt,Tc as Si,Ub as oi,Uc as Ii,V as f,Va as _,Vb as si,Vc as Ei,W as b,Wa as p,Wb as Xt,Wc as Kt,X as zt,Xa as lt,Xb as mi,Y as Ye,Ya as B,Yb as ci,Z as mt,Za as H,Zc as k,_ as It,_a as Ut,_b as li,a as ye,aa as We,ab as P,ac as K,ad as yt,b as Oe,bc as U,c as Fe,ca as Bt,cc as pi,d as at,dc as hi,e as ze,eb as N,ec as _t,fa as Ze,fb as Ce,fc as ui,ga as Nt,gb as M,gc as gi,h as rt,ha as D,hb as qt,hc as _i,ia as Ke,ib as c,jb as C,jc as fi,kb as S,la as ct,lc as bi,m as Mt,ma as l,mb as et,n as Be,na as jt,nb as it,ob as nt,oc as Se,p as Ne,pa as W,pb as Z,qa as $e,qb as dt,qc as ft,ra as Vt,rb as Tt,rc as vi,sb as ei,ta as u,u as je,uc as xi,va as I,vb as pt,w as ot,wb as ht,wc as yi,x as Ve,xa as Et,ya as A,yb as Qt,z as He,za as q,zb as ii}from\"./chunk-76XFCVV7.js\";var Jt=class n{static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-home\"]],decls:8,vars:0,consts:[[1,\"max-w-screen-2xl\",\"mx-auto\",\"px-4\",\"mt-32\"],[1,\"flex\",\"flex-col\",\"items-center\",\"py-16\",\"justify-center\",\"mt-20\",\"rounded-2xl\",\"shadow-xl\",\"relative\"],[\"src\",\"../images/hero1.jpg\",\"alt\",\"ski resort image\",1,\"absolute\",\"inset-0\",\"w-full\",\"h-full\",\"object-cover\",\"rounded-2xl\"],[1,\"flex\",\"flex-col\",\"p-8\",\"rounded-2xl\",\"items-center\",\"relative\"],[1,\"my-6\",\"font-extrabold\",\"text-white\",\"text-6xl\"],[\"routerLink\",\"/shop\",1,\"bg-gradient-to-r\",\"from-blue-600\",\"to-cyan-500\",\"font-semibold\",\"text-2xl\",\"text-white\",\"rounded-2xl\",\"px-8\",\"py-4\",\"border-2\",\"border-transparent\",\"mt-8\"]],template:function(t,e){t&1&&(r(0,\"div\",0)(1,\"div\",1),g(2,\"img\",2),r(3,\"div\",3)(4,\"h1\",4),c(5,\" Welcome to SkiNet! \"),o(),r(6,\"button\",5),c(7,\" Go to shop \"),o()()()())},dependencies:[U],encapsulation:2})};var $=class n{baseUrl=_t.baseUrl;http=s(Xt);types=[];brands=[];getProducts(a){let t=new si;return a.brands.length>0&&(t=t.append(\"brands\",a.brands.join(\",\"))),a.types.length>0&&(t=t.append(\"types\",a.types.join(\",\"))),a.sort&&(t=t.append(\"sort\",a.sort)),a.search&&(t=t.append(\"search\",a.search)),t=t.append(\"pageSize\",a.pageSize),t=t.append(\"pageIndex\",a.pageNumber),this.http.get(this.baseUrl+\"products\",{params:t})}getProduct(a){return this.http.get(this.baseUrl+\"products/\"+a)}getBrands(){if(!(this.brands.length>0))return this.http.get(this.baseUrl+\"products/brands\").subscribe({next:a=>this.brands=a})}getTypes(){if(!(this.types.length>0))return this.http.get(this.baseUrl+\"products/types\").subscribe({next:a=>this.types=a})}static \\u0275fac=function(t){return new(t||n)};static \\u0275prov=st({token:n,factory:n.\\u0275fac,providedIn:\"root\"})};function bn(n,a){if(n&1){let t=w();r(0,\"mat-card\",0),g(1,\"img\",1),r(2,\"mat-card-content\",2)(3,\"h2\",3),c(4),o(),r(5,\"p\",4),c(6),pt(7,\"currency\"),o()(),r(8,\"mat-card-actions\",5),_(\"click\",function(i){return f(t),b(i.stopPropagation())}),r(9,\"button\",6),_(\"click\",function(){f(t);let i=p();return b(i.cartService.addItemToCart(i.product))}),r(10,\"mat-icon\"),c(11,\"add_shopping_cart\"),o(),c(12,\" Add to cart \"),o()()()}if(n&2){let t=p();h(\"routerLink\",dt(\"/shop/\",t.product.id)),l(),h(\"src\",Z(t.product.pictureUrl),ct)(\"alt\",dt(\"image of \",t.product.name)),l(3),C(t.product.name),l(2),C(ht(7,8,t.product.price))}}var te=class n{product;cartService=s(O);static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-product-item\"]],inputs:{product:\"product\"},decls:1,vars:1,consts:[[\"appearance\",\"raised\",1,\"product-card\",3,\"routerLink\"],[1,\"rounded-t-lg\",3,\"src\",\"alt\"],[1,\"mt-2\"],[1,\"text-sm\",\"font-semibold\",\"uppercase\"],[1,\"font-light\"],[3,\"click\"],[\"mat-stroked-button\",\"\",1,\"w-full\",3,\"click\"]],template:function(t,e){t&1&&v(0,bn,13,10,\"mat-card\",0),t&2&&x(e.product?0:-1)},dependencies:[Zt,Ci,Mi,T,gt,k,U],styles:[\".product-card[_ngcontent-%COMP%]{transition:transform .2s,box-shadow .2s}.product-card[_ngcontent-%COMP%]:hover{transform:translateY(-10px);box-shadow:0 4px 8px #0003;cursor:pointer}\"]})};var kt=(()=>{class n{get vertical(){return this._vertical}set vertical(t){this._vertical=R(t)}_vertical=!1;get inset(){return this._inset}set inset(t){this._inset=R(t)}_inset=!1;static \\u0275fac=function(e){return new(e||n)};static \\u0275cmp=u({type:n,selectors:[[\"mat-divider\"]],hostAttrs:[\"role\",\"separator\",1,\"mat-divider\"],hostVars:7,hostBindings:function(e,i){e&2&&(E(\"aria-orientation\",i.vertical?\"vertical\":\"horizontal\"),M(\"mat-divider-vertical\",i.vertical)(\"mat-divider-horizontal\",!i.vertical)(\"mat-divider-inset\",i.inset))},inputs:{vertical:\"vertical\",inset:\"inset\"},decls:0,vars:0,template:function(e,i){},styles:[`.mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color, var(--mat-sys-outline));border-top-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color, var(--mat-sys-outline));border-right-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\n`],encapsulation:2,changeDetection:0})}return n})();var xn=[\"*\"],yn=`.mdc-list{margin:0;padding:8px 0;list-style-type:none}.mdc-list:focus{outline:none}.mdc-list-item{display:flex;position:relative;justify-content:flex-start;overflow:hidden;padding:0;align-items:stretch;cursor:pointer;padding-left:16px;padding-right:16px;background-color:var(--mat-list-list-item-container-color, transparent);border-radius:var(--mat-list-list-item-container-shape, var(--mat-sys-corner-none))}.mdc-list-item.mdc-list-item--selected{background-color:var(--mat-list-list-item-selected-container-color)}.mdc-list-item:focus{outline:0}.mdc-list-item.mdc-list-item--disabled{cursor:auto}.mdc-list-item.mdc-list-item--with-one-line{height:var(--mat-list-list-item-one-line-container-height, 48px)}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__start{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines{height:var(--mat-list-list-item-two-line-container-height, 64px)}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-three-lines{height:var(--mat-list-list-item-three-line-container-height, 88px)}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--selected::before,.mdc-list-item.mdc-list-item--selected:focus::before,.mdc-list-item:not(.mdc-list-item--selected):focus::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;content:\"\";pointer-events:none}a.mdc-list-item{color:inherit;text-decoration:none}.mdc-list-item__start{fill:currentColor;flex-shrink:0;pointer-events:none}.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mat-list-list-item-leading-icon-color, var(--mat-sys-on-surface-variant));width:var(--mat-list-list-item-leading-icon-size, 24px);height:var(--mat-list-list-item-leading-icon-size, 24px);margin-left:16px;margin-right:32px}[dir=rtl] .mdc-list-item--with-leading-icon .mdc-list-item__start{margin-left:32px;margin-right:16px}.mdc-list-item--with-leading-icon:hover .mdc-list-item__start{color:var(--mat-list-list-item-hover-leading-icon-color)}.mdc-list-item--with-leading-avatar .mdc-list-item__start{width:var(--mat-list-list-item-leading-avatar-size, 40px);height:var(--mat-list-list-item-leading-avatar-size, 40px);margin-left:16px;margin-right:16px;border-radius:50%}.mdc-list-item--with-leading-avatar .mdc-list-item__start,[dir=rtl] .mdc-list-item--with-leading-avatar .mdc-list-item__start{margin-left:16px;margin-right:16px;border-radius:50%}.mdc-list-item__end{flex-shrink:0;pointer-events:none}.mdc-list-item--with-trailing-meta .mdc-list-item__end{font-family:var(--mat-list-list-item-trailing-supporting-text-font, var(--mat-sys-label-small-font));line-height:var(--mat-list-list-item-trailing-supporting-text-line-height, var(--mat-sys-label-small-line-height));font-size:var(--mat-list-list-item-trailing-supporting-text-size, var(--mat-sys-label-small-size));font-weight:var(--mat-list-list-item-trailing-supporting-text-weight, var(--mat-sys-label-small-weight));letter-spacing:var(--mat-list-list-item-trailing-supporting-text-tracking, var(--mat-sys-label-small-tracking))}.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mat-list-list-item-trailing-icon-color, var(--mat-sys-on-surface-variant));width:var(--mat-list-list-item-trailing-icon-size, 24px);height:var(--mat-list-list-item-trailing-icon-size, 24px)}.mdc-list-item--with-trailing-icon:hover .mdc-list-item__end{color:var(--mat-list-list-item-hover-trailing-icon-color)}.mdc-list-item.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mat-list-list-item-trailing-supporting-text-color, var(--mat-sys-on-surface-variant))}.mdc-list-item--selected.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mat-list-list-item-selected-trailing-icon-color, var(--mat-sys-primary))}.mdc-list-item__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;align-self:center;flex:1;pointer-events:none}.mdc-list-item--with-two-lines .mdc-list-item__content,.mdc-list-item--with-three-lines .mdc-list-item__content{align-self:stretch}.mdc-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:var(--mat-list-list-item-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-list-list-item-label-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-list-list-item-label-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-list-list-item-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-list-list-item-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-list-list-item-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-list-item:hover .mdc-list-item__primary-text{color:var(--mat-list-list-item-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-list-item:focus .mdc-list-item__primary-text{color:var(--mat-list-list-item-focus-label-text-color, var(--mat-sys-on-surface))}.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item__secondary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;color:var(--mat-list-list-item-supporting-text-color, var(--mat-sys-on-surface-variant));font-family:var(--mat-list-list-item-supporting-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-list-list-item-supporting-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-list-list-item-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-list-list-item-supporting-text-weight, var(--mat-sys-body-medium-weight));letter-spacing:var(--mat-list-list-item-supporting-text-tracking, var(--mat-sys-body-medium-tracking))}.mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:\"\";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__secondary-text{white-space:normal;line-height:20px}.mdc-list-item--with-overline .mdc-list-item__secondary-text{white-space:nowrap;line-height:auto}.mdc-list-item--with-leading-radio.mdc-list-item,.mdc-list-item--with-leading-checkbox.mdc-list-item,.mdc-list-item--with-leading-icon.mdc-list-item,.mdc-list-item--with-leading-avatar.mdc-list-item{padding-left:0;padding-right:16px}[dir=rtl] .mdc-list-item--with-leading-radio.mdc-list-item,[dir=rtl] .mdc-list-item--with-leading-checkbox.mdc-list-item,[dir=rtl] .mdc-list-item--with-leading-icon.mdc-list-item,[dir=rtl] .mdc-list-item--with-leading-avatar.mdc-list-item{padding-left:16px;padding-right:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before,.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before,.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before,.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mdc-list-item--with-trailing-icon.mdc-list-item,[dir=rtl] .mdc-list-item--with-trailing-icon.mdc-list-item{padding-left:0;padding-right:0}.mdc-list-item--with-trailing-icon .mdc-list-item__end{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-meta.mdc-list-item{padding-left:16px;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-meta.mdc-list-item{padding-left:0;padding-right:16px}.mdc-list-item--with-trailing-meta .mdc-list-item__end{-webkit-user-select:none;user-select:none;margin-left:28px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-meta .mdc-list-item__end{margin-left:16px;margin-right:28px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end,.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{display:block;line-height:normal;align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end::before,.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:\"\";vertical-align:0}.mdc-list-item--with-leading-radio .mdc-list-item__start,.mdc-list-item--with-leading-checkbox .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-radio .mdc-list-item__start,[dir=rtl] .mdc-list-item--with-leading-checkbox .mdc-list-item__start{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__start,.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-radio.mdc-list-item,.mdc-list-item--with-trailing-checkbox.mdc-list-item{padding-left:16px;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item,[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item{padding-left:0;padding-right:16px}.mdc-list-item--with-trailing-radio.mdc-list-item--with-leading-icon,.mdc-list-item--with-trailing-radio.mdc-list-item--with-leading-avatar,.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-leading-icon,.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-leading-avatar{padding-left:0}[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item--with-leading-icon,[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item--with-leading-avatar,[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item--with-leading-icon,[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item--with-leading-avatar{padding-right:0}.mdc-list-item--with-trailing-radio .mdc-list-item__end,.mdc-list-item--with-trailing-checkbox .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-radio .mdc-list-item__end,[dir=rtl] .mdc-list-item--with-trailing-checkbox .mdc-list-item__end{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-radio.mdc-list-item--with-three-lines .mdc-list-item__end,.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-group__subheader{margin:.75rem 16px}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text{opacity:var(--mat-list-list-item-disabled-label-text-opacity, 0.3)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mat-list-list-item-disabled-leading-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-list-list-item-disabled-leading-icon-opacity, 0.38)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mat-list-list-item-disabled-trailing-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-list-list-item-disabled-trailing-icon-opacity, 0.38)}.mat-mdc-list-item.mat-mdc-list-item-both-leading-and-trailing,[dir=rtl] .mat-mdc-list-item.mat-mdc-list-item-both-leading-and-trailing{padding-left:0;padding-right:0}.mdc-list-item.mdc-list-item--disabled .mdc-list-item__primary-text{color:var(--mat-list-list-item-disabled-label-text-color, var(--mat-sys-on-surface))}.mdc-list-item:hover::before{background-color:var(--mat-list-list-item-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-list-list-item-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-list-item.mdc-list-item--disabled::before{background-color:var(--mat-list-list-item-disabled-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-list-list-item-disabled-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-list-item:focus::before{background-color:var(--mat-list-list-item-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-list-list-item-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-list-item--disabled .mdc-radio,.mdc-list-item--disabled .mdc-checkbox{opacity:var(--mat-list-list-item-disabled-label-text-opacity, 0.3)}.mdc-list-item--with-leading-avatar .mat-mdc-list-item-avatar{border-radius:var(--mat-list-list-item-leading-avatar-shape, var(--mat-sys-corner-full));background-color:var(--mat-list-list-item-leading-avatar-color, var(--mat-sys-primary-container))}.mat-mdc-list-item-icon{font-size:var(--mat-list-list-item-leading-icon-size, 24px)}@media(forced-colors: active){a.mdc-list-item--activated::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}a.mdc-list-item--activated [dir=rtl]::after{right:auto;left:16px}}.mat-mdc-list-base{display:block}.mat-mdc-list-base .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item__end,.mat-mdc-list-base .mdc-list-item__content{pointer-events:auto}.mat-mdc-list-item,.mat-mdc-list-option{width:100%;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-list-item:not(.mat-mdc-list-item-interactive),.mat-mdc-list-option:not(.mat-mdc-list-item-interactive){cursor:default}.mat-mdc-list-item .mat-divider-inset,.mat-mdc-list-option .mat-divider-inset{position:absolute;left:0;right:0;bottom:0}.mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,.mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-left:72px}[dir=rtl] .mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,[dir=rtl] .mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-right:72px}.mat-mdc-list-item-interactive::before{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";opacity:0;pointer-events:none;border-radius:inherit}.mat-mdc-list-item>.mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-list-item:focus>.mat-focus-indicator::before{content:\"\"}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-line.mdc-list-item__secondary-text{white-space:nowrap;line-height:normal}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-unscoped-content.mdc-list-item__secondary-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);text-align:start}mat-action-list button::-moz-focus-inner{border:0}.mdc-list-item--with-leading-icon .mdc-list-item__start{margin-inline-start:var(--mat-list-list-item-leading-icon-start-space, 16px);margin-inline-end:var(--mat-list-list-item-leading-icon-end-space, 16px)}.mat-mdc-nav-list .mat-mdc-list-item{border-radius:var(--mat-list-active-indicator-shape, var(--mat-sys-corner-full));--mat-focus-indicator-border-radius: var(--mat-list-active-indicator-shape, var(--mat-sys-corner-full))}.mat-mdc-nav-list .mat-mdc-list-item.mdc-list-item--activated{background-color:var(--mat-list-active-indicator-color, var(--mat-sys-secondary-container))}\n`,kn=[\"unscopedContent\"];var wn=[[[\"\",\"matListItemTitle\",\"\"]],[[\"\",\"matListItemLine\",\"\"]],\"*\",[[\"mat-divider\"]],[[\"\",\"matListItemAvatar\",\"\"],[\"\",\"matListItemIcon\",\"\"]]],Cn=[\"[matListItemTitle]\",\"[matListItemLine]\",\"*\",\"mat-divider\",\"[matListItemAvatar],[matListItemIcon]\"];function Mn(n,a){n&1&&B(0,4)}function Sn(n,a){if(n&1&&(r(0,\"div\",11),g(1,\"input\",12),r(2,\"div\",13),zt(),r(3,\"svg\",14),g(4,\"path\",15),o(),Ye(),g(5,\"div\",16),o()()),n&2){let t=p();M(\"mdc-checkbox--disabled\",t.disabled),l(),h(\"checked\",t.selected)(\"disabled\",t.disabled)}}function In(n,a){if(n&1&&(r(0,\"div\",17),g(1,\"input\",18),r(2,\"div\",19),g(3,\"div\",20)(4,\"div\",21),o()()),n&2){let t=p();M(\"mdc-radio--disabled\",t.disabled),l(),h(\"checked\",t.selected)(\"disabled\",t.disabled)}}function En(n,a){}function Tn(n,a){if(n&1&&(r(0,\"span\",4),A(1,En,0,0,\"ng-template\",6),o()),n&2){p();let t=N(3);l(),h(\"ngTemplateOutlet\",t)}}function Dn(n,a){}function An(n,a){if(n&1&&(r(0,\"span\",5),A(1,Dn,0,0,\"ng-template\",6),o()),n&2){p();let t=N(5);l(),h(\"ngTemplateOutlet\",t)}}function Ln(n,a){}function Pn(n,a){if(n&1&&A(0,Ln,0,0,\"ng-template\",6),n&2){p();let t=N(1);h(\"ngTemplateOutlet\",t)}}function Rn(n,a){}function On(n,a){if(n&1&&(r(0,\"span\",9),A(1,Rn,0,0,\"ng-template\",6),o()),n&2){p();let t=N(3);l(),h(\"ngTemplateOutlet\",t)}}function Fn(n,a){}function zn(n,a){if(n&1&&(r(0,\"span\",9),A(1,Fn,0,0,\"ng-template\",6),o()),n&2){p();let t=N(5);l(),h(\"ngTemplateOutlet\",t)}}function Bn(n,a){}function Nn(n,a){if(n&1&&A(0,Bn,0,0,\"ng-template\",6),n&2){p();let t=N(1);h(\"ngTemplateOutlet\",t)}}var en=new z(\"ListOption\"),jn=(()=>{class n{_elementRef=s(D);constructor(){}static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,selectors:[[\"\",\"matListItemTitle\",\"\"]],hostAttrs:[1,\"mat-mdc-list-item-title\",\"mdc-list-item__primary-text\"]})}return n})(),Vn=(()=>{class n{_elementRef=s(D);constructor(){}static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,selectors:[[\"\",\"matListItemLine\",\"\"]],hostAttrs:[1,\"mat-mdc-list-item-line\",\"mdc-list-item__secondary-text\"]})}return n})();var nn=(()=>{class n{_listOption=s(en,{optional:!0});constructor(){}_isAlignedAtStart(){return!this._listOption||this._listOption?._getTogglePosition()===\"after\"}static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,hostVars:4,hostBindings:function(e,i){e&2&&M(\"mdc-list-item__start\",i._isAlignedAtStart())(\"mdc-list-item__end\",!i._isAlignedAtStart())}})}return n})(),Hn=(()=>{class n extends nn{static \\u0275fac=(()=>{let t;return function(i){return(t||(t=Nt(n)))(i||n)}})();static \\u0275dir=I({type:n,selectors:[[\"\",\"matListItemAvatar\",\"\"]],hostAttrs:[1,\"mat-mdc-list-item-avatar\"],features:[Et]})}return n})(),Un=(()=>{class n extends nn{static \\u0275fac=(()=>{let t;return function(i){return(t||(t=Nt(n)))(i||n)}})();static \\u0275dir=I({type:n,selectors:[[\"\",\"matListItemIcon\",\"\"]],hostAttrs:[1,\"mat-mdc-list-item-icon\"],features:[Et]})}return n})(),qn=new z(\"MAT_LIST_CONFIG\"),Ee=(()=>{class n{_isNonInteractive=!0;get disableRipple(){return this._disableRipple}set disableRipple(t){this._disableRipple=R(t)}_disableRipple=!1;get disabled(){return this._disabled()}set disabled(t){this._disabled.set(R(t))}_disabled=Bt(!1);_defaultOptions=s(qn,{optional:!0});static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,hostVars:1,hostBindings:function(e,i){e&2&&E(\"aria-disabled\",i.disabled)},inputs:{disableRipple:\"disableRipple\",disabled:\"disabled\"}})}return n})(),tn=(()=>{class n{_elementRef=s(D);_ngZone=s(Q);_listBase=s(Ee,{optional:!0});_platform=s(fi);_hostElement;_isButtonElement;_noopAnimations=Y();_avatars;_icons;set lines(t){this._explicitLines=bi(t,null),this._updateItemLines(!1)}_explicitLines=null;get disableRipple(){return this.disabled||this._disableRipple||this._noopAnimations||!!this._listBase?.disableRipple}set disableRipple(t){this._disableRipple=R(t)}_disableRipple=!1;get disabled(){return this._disabled()||!!this._listBase?.disabled}set disabled(t){this._disabled.set(R(t))}_disabled=Bt(!1);_subscriptions=new at;_rippleRenderer=null;_hasUnscopedTextContent=!1;rippleConfig;get rippleDisabled(){return this.disableRipple||!!this.rippleConfig.disabled}constructor(){s(ft).load(Kt);let t=s(Ii,{optional:!0});this.rippleConfig=t||{},this._hostElement=this._elementRef.nativeElement,this._isButtonElement=this._hostElement.nodeName.toLowerCase()===\"button\",this._listBase&&!this._listBase._isNonInteractive&&this._initInteractiveListItem(),this._isButtonElement&&!this._hostElement.hasAttribute(\"type\")&&this._hostElement.setAttribute(\"type\",\"button\")}ngAfterViewInit(){this._monitorProjectedLinesAndTitle(),this._updateItemLines(!0)}ngOnDestroy(){this._subscriptions.unsubscribe(),this._rippleRenderer!==null&&this._rippleRenderer._removeTriggerEvents()}_hasIconOrAvatar(){return!!(this._avatars.length||this._icons.length)}_initInteractiveListItem(){this._hostElement.classList.add(\"mat-mdc-list-item-interactive\"),this._rippleRenderer=new Si(this,this._ngZone,this._hostElement,this._platform,s(mt)),this._rippleRenderer.setupTriggerEvents(this._hostElement)}_monitorProjectedLinesAndTitle(){this._ngZone.runOutsideAngular(()=>{this._subscriptions.add(ot(this._lines.changes,this._titles.changes).subscribe(()=>this._updateItemLines(!1)))})}_updateItemLines(t){if(!this._lines||!this._titles||!this._unscopedContent)return;t&&this._checkDomForUnscopedTextContent();let e=this._explicitLines??this._inferLinesFromContent(),i=this._unscopedContent.nativeElement;if(this._hostElement.classList.toggle(\"mat-mdc-list-item-single-line\",e<=1),this._hostElement.classList.toggle(\"mdc-list-item--with-one-line\",e<=1),this._hostElement.classList.toggle(\"mdc-list-item--with-two-lines\",e===2),this._hostElement.classList.toggle(\"mdc-list-item--with-three-lines\",e===3),this._hasUnscopedTextContent){let m=this._titles.length===0&&e===1;i.classList.toggle(\"mdc-list-item__primary-text\",m),i.classList.toggle(\"mdc-list-item__secondary-text\",!m)}else i.classList.remove(\"mdc-list-item__primary-text\"),i.classList.remove(\"mdc-list-item__secondary-text\")}_inferLinesFromContent(){let t=this._titles.length+this._lines.length;return this._hasUnscopedTextContent&&(t+=1),t}_checkDomForUnscopedTextContent(){this._hasUnscopedTextContent=Array.from(this._unscopedContent.nativeElement.childNodes).filter(t=>t.nodeType!==t.COMMENT_NODE).some(t=>!!(t.textContent&&t.textContent.trim()))}static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,contentQueries:function(e,i,m){if(e&1&&(H(m,Hn,4),H(m,Un,4)),e&2){let d;L(d=P())&&(i._avatars=d),L(d=P())&&(i._icons=d)}},hostVars:4,hostBindings:function(e,i){e&2&&(E(\"aria-disabled\",i.disabled)(\"disabled\",i._isButtonElement&&i.disabled||null),M(\"mdc-list-item--disabled\",i.disabled))},inputs:{lines:\"lines\",disableRipple:\"disableRipple\",disabled:\"disabled\"}})}return n})();var an=new z(\"SelectionList\"),Dt=(()=>{class n extends tn{_selectionList=s(an);_changeDetectorRef=s(X);_lines;_titles;_unscopedContent;selectedChange=new q;togglePosition=\"after\";get checkboxPosition(){return this.togglePosition}set checkboxPosition(t){this.togglePosition=t}get color(){return this._color||this._selectionList.color}set color(t){this._color=t}_color;get value(){return this._value}set value(t){this.selected&&t!==this.value&&this._inputsInitialized&&(this.selected=!1),this._value=t}_value;get selected(){return this._selectionList.selectedOptions.isSelected(this)}set selected(t){let e=R(t);e!==this._selected&&(this._setSelected(e),(e||this._selectionList.multiple)&&this._selectionList._reportValueChange())}_selected=!1;_inputsInitialized=!1;ngOnInit(){let t=this._selectionList;t._value&&t._value.some(i=>t.compareWith(this._value,i))&&this._setSelected(!0);let e=this._selected;Promise.resolve().then(()=>{(this._selected||e)&&(this.selected=!0,this._changeDetectorRef.markForCheck())}),this._inputsInitialized=!0}ngOnDestroy(){super.ngOnDestroy(),this.selected&&Promise.resolve().then(()=>{this.selected=!1})}toggle(){this.selected=!this.selected}focus(){this._hostElement.focus()}getLabel(){return(this._titles?.get(0)?._elementRef.nativeElement||this._unscopedContent?.nativeElement)?.textContent||\"\"}_hasCheckboxAt(t){return this._selectionList.multiple&&this._getTogglePosition()===t}_hasRadioAt(t){return!this._selectionList.multiple&&this._getTogglePosition()===t&&!this._selectionList.hideSingleSelectionIndicator}_hasIconsOrAvatarsAt(t){return this._hasProjected(\"icons\",t)||this._hasProjected(\"avatars\",t)}_hasProjected(t,e){return this._getTogglePosition()!==e&&(t===\"avatars\"?this._avatars.length!==0:this._icons.length!==0)}_handleBlur(){this._selectionList._onTouched()}_getTogglePosition(){return this.togglePosition||\"after\"}_setSelected(t){return t===this._selected?!1:(this._selected=t,t?this._selectionList.selectedOptions.select(this):this._selectionList.selectedOptions.deselect(this),this.selectedChange.emit(t),this._changeDetectorRef.markForCheck(),!0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_toggleOnInteraction(){this.disabled||(this._selectionList.multiple?(this.selected=!this.selected,this._selectionList._emitChangeEvent([this])):this.selected||(this.selected=!0,this._selectionList._emitChangeEvent([this])))}_setTabindex(t){this._hostElement.setAttribute(\"tabindex\",t+\"\")}_hasBothLeadingAndTrailing(){let t=this._hasProjected(\"avatars\",\"before\")||this._hasProjected(\"icons\",\"before\")||this._hasCheckboxAt(\"before\")||this._hasRadioAt(\"before\"),e=this._hasProjected(\"icons\",\"after\")||this._hasProjected(\"avatars\",\"after\")||this._hasCheckboxAt(\"after\")||this._hasRadioAt(\"after\");return t&&e}static \\u0275fac=(()=>{let t;return function(i){return(t||(t=Nt(n)))(i||n)}})();static \\u0275cmp=u({type:n,selectors:[[\"mat-list-option\"]],contentQueries:function(e,i,m){if(e&1&&(H(m,Vn,5),H(m,jn,5)),e&2){let d;L(d=P())&&(i._lines=d),L(d=P())&&(i._titles=d)}},viewQuery:function(e,i){if(e&1&&Ut(kn,5),e&2){let m;L(m=P())&&(i._unscopedContent=m.first)}},hostAttrs:[\"role\",\"option\",1,\"mat-mdc-list-item\",\"mat-mdc-list-option\",\"mdc-list-item\"],hostVars:27,hostBindings:function(e,i){e&1&&_(\"blur\",function(){return i._handleBlur()})(\"click\",function(){return i._toggleOnInteraction()}),e&2&&(E(\"aria-selected\",i.selected),M(\"mdc-list-item--selected\",i.selected&&!i._selectionList.multiple&&i._selectionList.hideSingleSelectionIndicator)(\"mdc-list-item--with-leading-avatar\",i._hasProjected(\"avatars\",\"before\"))(\"mdc-list-item--with-leading-icon\",i._hasProjected(\"icons\",\"before\"))(\"mdc-list-item--with-trailing-icon\",i._hasProjected(\"icons\",\"after\"))(\"mat-mdc-list-option-with-trailing-avatar\",i._hasProjected(\"avatars\",\"after\"))(\"mdc-list-item--with-leading-checkbox\",i._hasCheckboxAt(\"before\"))(\"mdc-list-item--with-trailing-checkbox\",i._hasCheckboxAt(\"after\"))(\"mdc-list-item--with-leading-radio\",i._hasRadioAt(\"before\"))(\"mdc-list-item--with-trailing-radio\",i._hasRadioAt(\"after\"))(\"mat-mdc-list-item-both-leading-and-trailing\",i._hasBothLeadingAndTrailing())(\"mat-accent\",i.color!==\"primary\"&&i.color!==\"warn\")(\"mat-warn\",i.color===\"warn\")(\"_mat-animation-noopable\",i._noopAnimations))},inputs:{togglePosition:\"togglePosition\",checkboxPosition:\"checkboxPosition\",color:\"color\",value:\"value\",selected:\"selected\"},outputs:{selectedChange:\"selectedChange\"},exportAs:[\"matListOption\"],features:[Tt([{provide:tn,useExisting:n},{provide:en,useExisting:n}]),Et],ngContentSelectors:Cn,decls:20,vars:4,consts:[[\"icons\",\"\"],[\"checkbox\",\"\"],[\"radio\",\"\"],[\"unscopedContent\",\"\"],[1,\"mdc-list-item__start\",\"mat-mdc-list-option-checkbox-before\"],[1,\"mdc-list-item__start\",\"mat-mdc-list-option-radio-before\"],[3,\"ngTemplateOutlet\"],[1,\"mdc-list-item__content\"],[1,\"mat-mdc-list-item-unscoped-content\",3,\"cdkObserveContent\"],[1,\"mdc-list-item__end\"],[1,\"mat-focus-indicator\"],[1,\"mdc-checkbox\"],[\"type\",\"checkbox\",1,\"mdc-checkbox__native-control\",3,\"checked\",\"disabled\"],[1,\"mdc-checkbox__background\"],[\"viewBox\",\"0 0 24 24\",\"aria-hidden\",\"true\",1,\"mdc-checkbox__checkmark\"],[\"fill\",\"none\",\"d\",\"M1.73,12.91 8.1,19.28 22.79,4.59\",1,\"mdc-checkbox__checkmark-path\"],[1,\"mdc-checkbox__mixedmark\"],[1,\"mdc-radio\"],[\"type\",\"radio\",1,\"mdc-radio__native-control\",3,\"checked\",\"disabled\"],[1,\"mdc-radio__background\"],[1,\"mdc-radio__outer-circle\"],[1,\"mdc-radio__inner-circle\"]],template:function(e,i){if(e&1){let m=w();lt(wn),A(0,Mn,1,0,\"ng-template\",null,0,Qt)(2,Sn,6,4,\"ng-template\",null,1,Qt)(4,In,5,4,\"ng-template\",null,2,Qt),v(6,Tn,2,1,\"span\",4)(7,An,2,1,\"span\",5),v(8,Pn,1,1,null,6),r(9,\"span\",7),B(10),B(11,1),r(12,\"span\",8,3),_(\"cdkObserveContent\",function(){return f(m),b(i._updateItemLines(!0))}),B(14,2),o()(),v(15,On,2,1,\"span\",9)(16,zn,2,1,\"span\",9),v(17,Nn,1,1,null,6),B(18,3),g(19,\"div\",10)}e&2&&(l(6),x(i._hasCheckboxAt(\"before\")?6:i._hasRadioAt(\"before\")?7:-1),l(2),x(i._hasIconsOrAvatarsAt(\"before\")?8:-1),l(7),x(i._hasCheckboxAt(\"after\")?15:i._hasRadioAt(\"after\")?16:-1),l(2),x(i._hasIconsOrAvatarsAt(\"after\")?17:-1))},dependencies:[ri,xi],styles:[`.mat-mdc-list-option-with-trailing-avatar.mdc-list-item,[dir=rtl] .mat-mdc-list-option-with-trailing-avatar.mdc-list-item{padding-left:0;padding-right:0}.mat-mdc-list-option-with-trailing-avatar .mdc-list-item__end{margin-left:16px;margin-right:16px;width:40px;height:40px}.mat-mdc-list-option-with-trailing-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mat-mdc-list-option-with-trailing-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:\"\";vertical-align:0}.mat-mdc-list-option-with-trailing-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:\"\";vertical-align:-20px}.mat-mdc-list-option-with-trailing-avatar .mdc-list-item__end{border-radius:50%}.mat-mdc-list-option .mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mat-mdc-list-option .mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mat-mdc-list-option .mdc-checkbox--disabled{cursor:default;pointer-events:none}@media(forced-colors: active){.mat-mdc-list-option .mdc-checkbox--disabled{opacity:.5}}.mat-mdc-list-option .mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mat-mdc-list-option .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-list-option .mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-list-option .mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mat-mdc-list-option .mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mat-mdc-list-option .mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mat-mdc-list-option .mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mat-mdc-list-option .mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mat-mdc-list-option .mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mat-mdc-list-option .mdc-checkbox__checkmark{color:CanvasText}}.mat-mdc-list-option .mdc-checkbox--disabled .mdc-checkbox__checkmark,.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mat-mdc-list-option .mdc-checkbox--disabled .mdc-checkbox__checkmark,.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:CanvasText}}.mat-mdc-list-option .mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mat-mdc-list-option .mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mat-mdc-list-option .mdc-checkbox__mixedmark{margin:0 1px}}.mat-mdc-list-option .mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mat-mdc-list-option .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-mdc-list-option .mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mat-mdc-list-option .mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mat-mdc-list-option .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mat-mdc-list-option .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-list-option .mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-list-option .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mat-mdc-list-option .mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mat-mdc-list-option .mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-mdc-list-option .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-list-option .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-list-option .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-list-option .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-list-option .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:\"\";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px);top:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2);left:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-list-option .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-list-option .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-list-option .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px)}.mat-mdc-list-option .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-list-option .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-list-option .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-list-option .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-list-option .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-list-option .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-list-option .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-list-option .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-list-option .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-list-option .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-list-option .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-list-option .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-list-option .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{border-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-list-option .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-list-option._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-list-option._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-list-option._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__start>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-list-option._mat-animation-noopable>.mdc-list-item__end>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-list-option .mdc-checkbox__native-control,.mat-mdc-list-option .mdc-radio__native-control{display:none}@media(forced-colors: active){.mat-mdc-list-option.mdc-list-item--selected::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.mat-mdc-list-option.mdc-list-item--selected [dir=rtl]::after{right:auto;left:16px}}\n`],encapsulation:2,changeDetection:0})}return n})();var Qn={provide:Bi,useExisting:Ge(()=>At),multi:!0},Te=class{source;options;constructor(a,t){this.source=a,this.options=t}},At=(()=>{class n extends Ee{_element=s(D);_ngZone=s(Q);_renderer=s(W);_initialized=!1;_keyManager;_listenerCleanups;_destroyed=new rt;_isDestroyed;_onChange=t=>{};_items;selectionChange=new q;color=\"accent\";compareWith=(t,e)=>t===e;get multiple(){return this._multiple}set multiple(t){let e=R(t);e!==this._multiple&&(this._multiple=e,this.selectedOptions=new Ie(this._multiple,this.selectedOptions.selected))}_multiple=!0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(t){this._hideSingleSelectionIndicator=R(t)}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;selectedOptions=new Ie(this._multiple);_value;_onTouched=()=>{};_changeDetectorRef=s(X);constructor(){super(),this._isNonInteractive=!1}ngAfterViewInit(){this._initialized=!0,this._setupRovingTabindex(),this._ngZone.runOutsideAngular(()=>{this._listenerCleanups=[this._renderer.listen(this._element.nativeElement,\"focusin\",this._handleFocusin),this._renderer.listen(this._element.nativeElement,\"focusout\",this._handleFocusout)]}),this._value&&this._setOptionsFromValues(this._value),this._watchForSelectionChange()}ngOnChanges(t){let e=t.disabled,i=t.disableRipple,m=t.hideSingleSelectionIndicator;(i&&!i.firstChange||e&&!e.firstChange||m&&!m.firstChange)&&this._markOptionsForCheck()}ngOnDestroy(){this._keyManager?.destroy(),this._listenerCleanups?.forEach(t=>t()),this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0}focus(t){this._element.nativeElement.focus(t)}selectAll(){return this._setAllOptionsSelected(!0)}deselectAll(){return this._setAllOptionsSelected(!1)}_reportValueChange(){if(this.options&&!this._isDestroyed){let t=this._getSelectedOptionValues();this._onChange(t),this._value=t}}_emitChangeEvent(t){this.selectionChange.emit(new Te(this,t))}writeValue(t){this._value=t,this.options&&this._setOptionsFromValues(t||[])}setDisabledState(t){this.disabled=t,this._changeDetectorRef.markForCheck(),this._markOptionsForCheck()}get disabled(){return this._selectionListDisabled()}set disabled(t){this._selectionListDisabled.set(R(t)),this._selectionListDisabled()&&this._keyManager?.setActiveItem(-1)}_selectionListDisabled=Bt(!1);registerOnChange(t){this._onChange=t}registerOnTouched(t){this._onTouched=t}_watchForSelectionChange(){this.selectedOptions.changed.pipe(St(this._destroyed)).subscribe(t=>{for(let e of t.added)e.selected=!0;for(let e of t.removed)e.selected=!1;this._containsFocus()||this._resetActiveOption()})}_setOptionsFromValues(t){this.options.forEach(e=>e._setSelected(!1)),t.forEach(e=>{let i=this.options.find(m=>m.selected?!1:this.compareWith(m.value,e));i&&i._setSelected(!0)})}_getSelectedOptionValues(){return this.options.filter(t=>t.selected).map(t=>t.value)}_markOptionsForCheck(){this.options&&this.options.forEach(t=>t._markForCheck())}_setAllOptionsSelected(t,e){let i=[];return this.options.forEach(m=>{(!e||!m.disabled)&&m._setSelected(t)&&i.push(m)}),i.length&&this._reportValueChange(),i}get options(){return this._items}_handleKeydown(t){let e=this._keyManager.activeItem;if((t.keyCode===13||t.keyCode===32)&&!this._keyManager.isTyping()&&e&&!e.disabled)t.preventDefault(),e._toggleOnInteraction();else if(t.keyCode===65&&this.multiple&&!this._keyManager.isTyping()&&Yt(t,\"ctrlKey\",\"metaKey\")){let i=this.options.some(m=>!m.disabled&&!m.selected);t.preventDefault(),this._emitChangeEvent(this._setAllOptionsSelected(i,!0))}else this._keyManager.onKeydown(t)}_handleFocusout=()=>{setTimeout(()=>{this._containsFocus()||this._resetActiveOption()})};_handleFocusin=t=>{if(this.disabled)return;let e=this._items.toArray().findIndex(i=>i._elementRef.nativeElement.contains(t.target));e>-1?this._setActiveOption(e):this._resetActiveOption()};_setupRovingTabindex(){this._keyManager=new Wt(this._items).withHomeAndEnd().withTypeAhead().withWrap().skipPredicate(()=>this.disabled),this._resetActiveOption(),this._keyManager.change.subscribe(t=>this._setActiveOption(t)),this._items.changes.pipe(St(this._destroyed)).subscribe(()=>{let t=this._keyManager.activeItem;(!t||this._items.toArray().indexOf(t)===-1)&&this._resetActiveOption()})}_setActiveOption(t){this._items.forEach((e,i)=>e._setTabindex(i===t?0:-1)),this._keyManager.updateActiveItem(t)}_resetActiveOption(){if(this.disabled){this._setActiveOption(-1);return}let t=this._items.find(e=>e.selected&&!e.disabled)||this._items.first;this._setActiveOption(t?this._items.toArray().indexOf(t):-1)}_containsFocus(){let t=_i();return t&&this._element.nativeElement.contains(t)}static \\u0275fac=function(e){return new(e||n)};static \\u0275cmp=u({type:n,selectors:[[\"mat-selection-list\"]],contentQueries:function(e,i,m){if(e&1&&H(m,Dt,5),e&2){let d;L(d=P())&&(i._items=d)}},hostAttrs:[\"role\",\"listbox\",1,\"mat-mdc-selection-list\",\"mat-mdc-list-base\",\"mdc-list\"],hostVars:1,hostBindings:function(e,i){e&1&&_(\"keydown\",function(d){return i._handleKeydown(d)}),e&2&&E(\"aria-multiselectable\",i.multiple)},inputs:{color:\"color\",compareWith:\"compareWith\",multiple:\"multiple\",hideSingleSelectionIndicator:\"hideSingleSelectionIndicator\",disabled:\"disabled\"},outputs:{selectionChange:\"selectionChange\"},exportAs:[\"matSelectionList\"],features:[Tt([Qn,{provide:Ee,useExisting:n},{provide:an,useExisting:n}]),Et,Ze],ngContentSelectors:xn,decls:1,vars:0,template:function(e,i){e&1&&(lt(),B(0))},styles:[yn],encapsulation:2,changeDetection:0})}return n})();function Xn(n,a){if(n&1&&(r(0,\"mat-list-option\",5),c(1),o()),n&2){let t=a.$implicit;h(\"value\",t),l(),C(t)}}function Gn(n,a){if(n&1&&(r(0,\"mat-list-option\",5),c(1),o()),n&2){let t=a.$implicit;h(\"value\",t),l(),C(t)}}var ne=class n{dialogRef=s(Ri);data=s(Oi);shopService=s($);selectedBrands=this.data.selectedBrands;selectedTypes=this.data.selectedTypes;applyFilters(){this.dialogRef.close({selectedBrands:this.selectedBrands,selectedTypes:this.selectedTypes})}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-filters-dialog\"]],decls:20,vars:4,consts:[[1,\"text-3xl\",\"text-center\",\"pt-6\",\"mb-3\"],[1,\"flex\",\"p-4\"],[1,\"w-1/2\"],[1,\"font-semibold\",\"text-xl\",\"text-primary\"],[3,\"ngModelChange\",\"ngModel\",\"multiple\"],[3,\"value\"],[1,\"flex\",\"justify-end\",\"p-4\"],[\"mat-flat-button\",\"\",3,\"click\"]],template:function(t,e){t&1&&(r(0,\"div\")(1,\"h3\",0),c(2,\"Filters\"),o(),g(3,\"mat-divider\"),r(4,\"div\",1)(5,\"div\",2)(6,\"h4\",3),c(7,\"Brands\"),o(),r(8,\"mat-selection-list\",4),nt(\"ngModelChange\",function(m){return it(e.selectedBrands,m)||(e.selectedBrands=m),m}),j(9,Xn,2,2,\"mat-list-option\",5,we),o()(),r(11,\"div\",2)(12,\"h4\",3),c(13,\"Types\"),o(),r(14,\"mat-selection-list\",4),nt(\"ngModelChange\",function(m){return it(e.selectedTypes,m)||(e.selectedTypes=m),m}),j(15,Gn,2,2,\"mat-list-option\",5,we),o()()(),r(17,\"div\",6)(18,\"button\",7),_(\"click\",function(){return e.applyFilters()}),c(19,\"Apply Filters\"),o()()()),t&2&&(l(8),et(\"ngModel\",e.selectedBrands),h(\"multiple\",!0),l(),V(e.shopService.brands),l(5),et(\"ngModel\",e.selectedTypes),h(\"multiple\",!0),l(),V(e.shopService.types))},dependencies:[kt,At,Dt,k,xt,bt,vt],encapsulation:2})};var Kn=[\"mat-menu-item\",\"\"],$n=[[[\"mat-icon\"],[\"\",\"matMenuItemIcon\",\"\"]],\"*\"],Jn=[\"mat-icon, [matMenuItemIcon]\",\"*\"];function ta(n,a){n&1&&(zt(),r(0,\"svg\",2),g(1,\"polygon\",3),o())}var ea=[\"*\"];function ia(n,a){if(n&1){let t=w();r(0,\"div\",0),_(\"click\",function(){f(t);let i=p();return b(i.closed.emit(\"click\"))})(\"animationstart\",function(i){f(t);let m=p();return b(m._onAnimationStart(i.animationName))})(\"animationend\",function(i){f(t);let m=p();return b(m._onAnimationDone(i.animationName))})(\"animationcancel\",function(i){f(t);let m=p();return b(m._onAnimationDone(i.animationName))}),r(1,\"div\",1),B(2),o()()}if(n&2){let t=p();qt(t._classList),M(\"mat-menu-panel-animations-disabled\",t._animationsDisabled)(\"mat-menu-panel-exit-animation\",t._panelAnimationState===\"void\")(\"mat-menu-panel-animating\",t._isAnimating),h(\"id\",t.panelId),E(\"aria-label\",t.ariaLabel||null)(\"aria-labelledby\",t.ariaLabelledby||null)(\"aria-describedby\",t.ariaDescribedby||null)}}var Pe=new z(\"MAT_MENU_PANEL\"),Pt=(()=>{class n{_elementRef=s(D);_document=s(It);_focusMonitor=s(Se);_parentMenu=s(Pe,{optional:!0});_changeDetectorRef=s(X);role=\"menuitem\";disabled=!1;disableRipple=!1;_hovered=new rt;_focused=new rt;_highlighted=!1;_triggersSubmenu=!1;constructor(){s(ft).load(Kt),this._parentMenu?.addItem?.(this)}focus(t,e){this._focusMonitor&&t?this._focusMonitor.focusVia(this._getHostElement(),t,e):this._getHostElement().focus(e),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?\"-1\":\"0\"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(t){this.disabled&&(t.preventDefault(),t.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){let t=this._elementRef.nativeElement.cloneNode(!0),e=t.querySelectorAll(\"mat-icon, .material-icons\");for(let i=0;i<e.length;i++)e[i].remove();return t.textContent?.trim()||\"\"}_setHighlighted(t){this._highlighted=t,this._changeDetectorRef.markForCheck()}_setTriggersSubmenu(t){this._triggersSubmenu=t,this._changeDetectorRef.markForCheck()}_hasFocus(){return this._document&&this._document.activeElement===this._getHostElement()}static \\u0275fac=function(e){return new(e||n)};static \\u0275cmp=u({type:n,selectors:[[\"\",\"mat-menu-item\",\"\"]],hostAttrs:[1,\"mat-mdc-menu-item\",\"mat-focus-indicator\"],hostVars:8,hostBindings:function(e,i){e&1&&_(\"click\",function(d){return i._checkDisabled(d)})(\"mouseenter\",function(){return i._handleMouseEnter()}),e&2&&(E(\"role\",i.role)(\"tabindex\",i._getTabIndex())(\"aria-disabled\",i.disabled)(\"disabled\",i.disabled||null),M(\"mat-mdc-menu-item-highlighted\",i._highlighted)(\"mat-mdc-menu-item-submenu-trigger\",i._triggersSubmenu))},inputs:{role:\"role\",disabled:[2,\"disabled\",\"disabled\",G],disableRipple:[2,\"disableRipple\",\"disableRipple\",G]},exportAs:[\"matMenuItem\"],attrs:Kn,ngContentSelectors:Jn,decls:5,vars:3,consts:[[1,\"mat-mdc-menu-item-text\"],[\"matRipple\",\"\",1,\"mat-mdc-menu-ripple\",3,\"matRippleDisabled\",\"matRippleTrigger\"],[\"viewBox\",\"0 0 5 10\",\"focusable\",\"false\",\"aria-hidden\",\"true\",1,\"mat-mdc-menu-submenu-icon\"],[\"points\",\"0,0 5,5 0,10\"]],template:function(e,i){e&1&&(lt($n),B(0),r(1,\"span\",0),B(2,1),o(),g(3,\"div\",1),v(4,ta,2,0,\":svg:svg\",2)),e&2&&(l(3),h(\"matRippleDisabled\",i.disableRipple||i.disabled)(\"matRippleTrigger\",i._getHostElement()),l(),x(i._triggersSubmenu?4:-1))},dependencies:[Ei],encapsulation:2,changeDetection:0})}return n})();var na=new z(\"MatMenuContent\");var aa=new z(\"mat-menu-default-options\",{providedIn:\"root\",factory:ra});function ra(){return{overlapTrigger:!1,xPosition:\"after\",yPosition:\"below\",backdropClass:\"cdk-overlay-transparent-backdrop\"}}var Le=\"_mat-menu-enter\",ae=\"_mat-menu-exit\",J=(()=>{class n{_elementRef=s(D);_changeDetectorRef=s(X);_injector=s(mt);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled=Y();_allItems;_directDescendantItems=new Ke;_classList={};_panelAnimationState=\"void\";_animationDone=new rt;_isAnimating=!1;parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(t){this._xPosition=t,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(t){this._yPosition=t,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger;hasBackdrop;set panelClass(t){let e=this._previousPanelClass,i=ye({},this._classList);e&&e.length&&e.split(\" \").forEach(m=>{i[m]=!1}),this._previousPanelClass=t,t&&t.length&&(t.split(\" \").forEach(m=>{i[m]=!0}),this._elementRef.nativeElement.className=\"\"),this._classList=i}_previousPanelClass;get classList(){return this.panelClass}set classList(t){this.panelClass=t}closed=new q;close=this.closed;panelId=s(Gt).getId(\"mat-menu-panel-\");constructor(){let t=s(aa);this.overlayPanelClass=t.overlayPanelClass||\"\",this._xPosition=t.xPosition,this._yPosition=t.yPosition,this.backdropClass=t.backdropClass,this.overlapTrigger=t.overlapTrigger,this.hasBackdrop=t.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new Wt(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit(\"tab\")),this._directDescendantItems.changes.pipe(Ft(this._directDescendantItems),ke(t=>ot(...t.map(e=>e._focused)))).subscribe(t=>this._keyManager.updateActiveItem(t)),this._directDescendantItems.changes.subscribe(t=>{let e=this._keyManager;if(this._panelAnimationState===\"enter\"&&e.activeItem?._hasFocus()){let i=t.toArray(),m=Math.max(0,Math.min(i.length-1,e.activeItemIndex||0));i[m]&&!i[m].disabled?e.setActiveItem(m):e.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe(Ft(this._directDescendantItems),ke(e=>ot(...e.map(i=>i._hovered))))}addItem(t){}removeItem(t){}_handleKeydown(t){let e=t.keyCode,i=this._keyManager;switch(e){case 27:Yt(t)||(t.preventDefault(),this.closed.emit(\"keydown\"));break;case 37:this.parentMenu&&this.direction===\"ltr\"&&this.closed.emit(\"keydown\");break;case 39:this.parentMenu&&this.direction===\"rtl\"&&this.closed.emit(\"keydown\");break;default:(e===38||e===40)&&i.setFocusOrigin(\"keyboard\"),i.onKeydown(t);return}}focusFirstItem(t=\"program\"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=Je(()=>{let e=this._resolvePanel();if(!e||!e.contains(document.activeElement)){let i=this._keyManager;i.setFocusOrigin(t).setFirstItemActive(),!i.activeItem&&e&&e.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(t){}setPositionClasses(t=this.xPosition,e=this.yPosition){this._classList=Oe(ye({},this._classList),{\"mat-menu-before\":t===\"before\",\"mat-menu-after\":t===\"after\",\"mat-menu-above\":e===\"above\",\"mat-menu-below\":e===\"below\"}),this._changeDetectorRef.markForCheck()}_onAnimationDone(t){let e=t===ae;(e||t===Le)&&(e&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(e?\"void\":\"enter\"),this._isAnimating=!1)}_onAnimationStart(t){(t===Le||t===ae)&&(this._isAnimating=!0)}_setIsOpen(t){if(this._panelAnimationState=t?\"enter\":\"void\",t){if(this._keyManager.activeItemIndex===0){let e=this._resolvePanel();e&&(e.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(ae),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(t?Le:ae)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe(Ft(this._allItems)).subscribe(t=>{this._directDescendantItems.reset(t.filter(e=>e._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let t=null;return this._directDescendantItems.length&&(t=this._directDescendantItems.first._getHostElement().closest('[role=\"menu\"]')),t}static \\u0275fac=function(e){return new(e||n)};static \\u0275cmp=u({type:n,selectors:[[\"mat-menu\"]],contentQueries:function(e,i,m){if(e&1&&(H(m,na,5),H(m,Pt,5),H(m,Pt,4)),e&2){let d;L(d=P())&&(i.lazyContent=d.first),L(d=P())&&(i._allItems=d),L(d=P())&&(i.items=d)}},viewQuery:function(e,i){if(e&1&&Ut(jt,5),e&2){let m;L(m=P())&&(i.templateRef=m.first)}},hostVars:3,hostBindings:function(e,i){e&2&&E(\"aria-label\",null)(\"aria-labelledby\",null)(\"aria-describedby\",null)},inputs:{backdropClass:\"backdropClass\",ariaLabel:[0,\"aria-label\",\"ariaLabel\"],ariaLabelledby:[0,\"aria-labelledby\",\"ariaLabelledby\"],ariaDescribedby:[0,\"aria-describedby\",\"ariaDescribedby\"],xPosition:\"xPosition\",yPosition:\"yPosition\",overlapTrigger:[2,\"overlapTrigger\",\"overlapTrigger\",G],hasBackdrop:[2,\"hasBackdrop\",\"hasBackdrop\",t=>t==null?null:G(t)],panelClass:[0,\"class\",\"panelClass\"],classList:\"classList\"},outputs:{closed:\"closed\",close:\"close\"},exportAs:[\"matMenu\"],features:[Tt([{provide:Pe,useExisting:n}])],ngContentSelectors:ea,decls:1,vars:0,consts:[[\"tabindex\",\"-1\",\"role\",\"menu\",1,\"mat-mdc-menu-panel\",3,\"click\",\"animationstart\",\"animationend\",\"animationcancel\",\"id\"],[1,\"mat-mdc-menu-content\"]],template:function(e,i){e&1&&(lt(),A(0,ia,3,12,\"ng-template\"))},styles:[`mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n`],encapsulation:2,changeDetection:0})}return n})(),oa=new z(\"mat-menu-scroll-strategy\",{providedIn:\"root\",factory:()=>{let n=s(mt);return()=>Di(n)}});var Lt=new WeakMap,re=(()=>{class n{_element=s(D);_viewContainerRef=s(Vt);_menuItemInstance=s(Pt,{optional:!0,self:!0});_dir=s(wi,{optional:!0});_focusMonitor=s(Se);_ngZone=s(Q);_injector=s(mt);_scrollStrategy=s(oa);_changeDetectorRef=s(X);_animationsDisabled=Y();_cleanupTouchstart;_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=at.EMPTY;_hoverSubscription=at.EMPTY;_menuCloseSubscription=at.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_openedBy=void 0;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(t){this.menu=t}get menu(){return this._menu}set menu(t){t!==this._menu&&(this._menu=t,this._menuCloseSubscription.unsubscribe(),t&&(this._parentMaterialMenu,this._menuCloseSubscription=t.close.subscribe(e=>{this._destroyMenu(e),(e===\"click\"||e===\"tab\")&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(e)})),this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()))}_menu;menuData;restoreFocus=!0;menuOpened=new q;onMenuOpen=this.menuOpened;menuClosed=new q;onMenuClose=this.menuClosed;constructor(){let t=s(Pe,{optional:!0}),e=s(W);this._parentMaterialMenu=t instanceof J?t:void 0,this._cleanupTouchstart=e.listen(this._element.nativeElement,\"touchstart\",i=>{gi(i)||(this._openedBy=\"touch\")},{passive:!0})}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this.menu&&this._ownsMenu(this.menu)&&Lt.delete(this.menu),this._cleanupTouchstart(),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&this._dir.value===\"rtl\"?\"rtl\":\"ltr\"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){let t=this.menu;if(this._menuOpen||!t)return;this._pendingRemoval?.unsubscribe();let e=Lt.get(t);Lt.set(t,this),e&&e!==this&&e.closeMenu();let i=this._createOverlay(t),m=i.getConfig(),d=m.positionStrategy;this._setPosition(t,d),m.hasBackdrop=t.hasBackdrop==null?!this.triggersSubmenu():t.hasBackdrop,i.hasAttached()||(i.attach(this._getPortal(t)),t.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),t.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,t.direction=this.dir,t.focusFirstItem(this._openedBy||\"program\"),this._setIsMenuOpen(!0),t instanceof J&&(t._setIsOpen(!0),t._directDescendantItems.changes.pipe(St(t.close)).subscribe(()=>{d.withLockedPosition(!1).reapplyLastPosition(),d.withLockedPosition(!0)}))}closeMenu(){this.menu?.close.emit()}focus(t,e){this._focusMonitor&&t?this._focusMonitor.focusVia(this._element,t,e):this._element.nativeElement.focus(e)}updatePosition(){this._overlayRef?.updatePosition()}_destroyMenu(t){let e=this._overlayRef,i=this._menu;!e||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),i instanceof J&&this._ownsMenu(i)?(this._pendingRemoval=i._animationDone.pipe(Ue(1)).subscribe(()=>{e.detach(),i.lazyContent?.detach()}),i._setIsOpen(!1)):(e.detach(),i?.lazyContent?.detach()),i&&this._ownsMenu(i)&&Lt.delete(i),this.restoreFocus&&(t===\"keydown\"||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(t){t!==this._menuOpen&&(this._menuOpen=t,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(t),this._changeDetectorRef.markForCheck())}_createOverlay(t){if(!this._overlayRef){let e=this._getOverlayConfig(t);this._subscribeToPositions(t,e.positionStrategy),this._overlayRef=Pi(this._injector,e),this._overlayRef.keydownEvents().subscribe(i=>{this.menu instanceof J&&this.menu._handleKeydown(i)})}return this._overlayRef}_getOverlayConfig(t){return new Ai({positionStrategy:Li(this._injector,this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(\".mat-menu-panel, .mat-mdc-menu-panel\"),backdropClass:t.backdropClass||\"cdk-overlay-transparent-backdrop\",panelClass:t.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||\"ltr\",disableAnimations:this._animationsDisabled})}_subscribeToPositions(t,e){t.setPositionClasses&&e.positionChanges.subscribe(i=>{this._ngZone.run(()=>{let m=i.connectionPair.overlayX===\"start\"?\"after\":\"before\",d=i.connectionPair.overlayY===\"top\"?\"below\":\"above\";t.setPositionClasses(m,d)})})}_setPosition(t,e){let[i,m]=t.xPosition===\"before\"?[\"end\",\"start\"]:[\"start\",\"end\"],[d,Ot]=t.yPosition===\"above\"?[\"bottom\",\"top\"]:[\"top\",\"bottom\"],[fe,be]=[d,Ot],[ve,xe]=[i,m],Ct=0;if(this.triggersSubmenu()){if(xe=i=t.xPosition===\"before\"?\"start\":\"end\",m=ve=i===\"end\"?\"start\":\"end\",this._parentMaterialMenu){if(this._parentInnerPadding==null){let Re=this._parentMaterialMenu.items.first;this._parentInnerPadding=Re?Re._getHostElement().offsetTop:0}Ct=d===\"bottom\"?this._parentInnerPadding:-this._parentInnerPadding}}else t.overlapTrigger||(fe=d===\"top\"?\"bottom\":\"top\",be=Ot===\"top\"?\"bottom\":\"top\");e.withPositions([{originX:i,originY:fe,overlayX:ve,overlayY:d,offsetY:Ct},{originX:m,originY:fe,overlayX:xe,overlayY:d,offsetY:Ct},{originX:i,originY:be,overlayX:ve,overlayY:Ot,offsetY:-Ct},{originX:m,originY:be,overlayX:xe,overlayY:Ot,offsetY:-Ct}])}_menuClosingActions(){let t=this._overlayRef.backdropClick(),e=this._overlayRef.detachments(),i=this._parentMaterialMenu?this._parentMaterialMenu.closed:Mt(),m=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Ve(d=>this._menuOpen&&d!==this._menuItemInstance)):Mt();return ot(t,i,m,e)}_handleMousedown(t){ui(t)||(this._openedBy=t.button===0?\"mouse\":void 0,this.triggersSubmenu()&&t.preventDefault())}_handleKeydown(t){let e=t.keyCode;(e===13||e===32)&&(this._openedBy=\"keyboard\"),this.triggersSubmenu()&&(e===39&&this.dir===\"ltr\"||e===37&&this.dir===\"rtl\")&&(this._openedBy=\"keyboard\",this.openMenu())}_handleClick(t){this.triggersSubmenu()?(t.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(t=>{t===this._menuItemInstance&&!t.disabled&&(this._openedBy=\"mouse\",this.openMenu())}))}_getPortal(t){return(!this._portal||this._portal.templateRef!==t.templateRef)&&(this._portal=new Ti(t.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(t){return Lt.get(t)===this}static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,selectors:[[\"\",\"mat-menu-trigger-for\",\"\"],[\"\",\"matMenuTriggerFor\",\"\"]],hostAttrs:[1,\"mat-mdc-menu-trigger\"],hostVars:3,hostBindings:function(e,i){e&1&&_(\"click\",function(d){return i._handleClick(d)})(\"mousedown\",function(d){return i._handleMousedown(d)})(\"keydown\",function(d){return i._handleKeydown(d)}),e&2&&E(\"aria-haspopup\",i.menu?\"menu\":null)(\"aria-expanded\",i.menuOpen)(\"aria-controls\",i.menuOpen?i.menu==null?null:i.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,\"mat-menu-trigger-for\",\"_deprecatedMatMenuTriggerFor\"],menu:[0,\"matMenuTriggerFor\",\"menu\"],menuData:[0,\"matMenuTriggerData\",\"menuData\"],restoreFocus:[0,\"matMenuTriggerRestoreFocus\",\"restoreFocus\"]},outputs:{menuOpened:\"menuOpened\",onMenuOpen:\"onMenuOpen\",menuClosed:\"menuClosed\",onMenuClose:\"onMenuClose\"},exportAs:[\"matMenuTrigger\"]})}return n})();var mn={transformMenu:{type:7,name:\"transformMenu\",definitions:[{type:0,name:\"void\",styles:{type:6,styles:{opacity:0,transform:\"scale(0.8)\"},offset:null}},{type:1,expr:\"void => enter\",animation:{type:4,styles:{type:6,styles:{opacity:1,transform:\"scale(1)\"},offset:null},timings:\"120ms cubic-bezier(0, 0, 0.2, 1)\"},options:null},{type:1,expr:\"* => void\",animation:{type:4,styles:{type:6,styles:{opacity:0},offset:null},timings:\"100ms 25ms linear\"},options:null}],options:{}},fadeInItems:{type:7,name:\"fadeInItems\",definitions:[{type:0,name:\"showing\",styles:{type:6,styles:{opacity:1},offset:null}},{type:1,expr:\"void => *\",animation:[{type:6,styles:{opacity:0},offset:null},{type:4,styles:null,timings:\"400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)\"}],options:null}],options:{}}},to=mn.fadeInItems,eo=mn.transformMenu;var Rt=class{brands=[];types=[];sort=\"name\";pageNumber=1;pageSize=10;search=\"\"};var tt=class n{loading=!1;busyRequestCount=0;busy(){this.busyRequestCount++,this.loading=!0}idle(){this.busyRequestCount--,this.busyRequestCount<=0&&(this.busyRequestCount=0,this.loading=!1)}static \\u0275fac=function(t){return new(t||n)};static \\u0275prov=st({token:n,factory:n.\\u0275fac,providedIn:\"root\"})};function sa(n,a){if(n&1){let t=w();r(0,\"div\",0)(1,\"div\",1)(2,\"mat-icon\",2),c(3),o(),r(4,\"p\",3),c(5),o(),r(6,\"button\",4),_(\"click\",function(){f(t);let i=p();return b(i.onAction())}),c(7),o()()()}if(n&2){let t=p();l(3),C(t.icon()),l(2),S(\" \",t.message(),\" \"),l(2),C(t.actionText())}}var wt=class n{busyService=s(tt);message=ut.required();icon=ut.required();actionText=ut.required();action=ai();onAction(){this.action.emit()}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-empty-state\"]],inputs:{message:[1,\"message\"],icon:[1,\"icon\"],actionText:[1,\"actionText\"]},outputs:{action:\"action\"},decls:1,vars:1,consts:[[1,\"max-w-screen-xl\",\"mx-auto\",\"mt-32\",\"px-10\",\"py-4\",\"bg-white\",\"rounded-lg\",\"shadow-md\",\"w-full\"],[1,\"flex\",\"flex-col\",\"items-center\",\"justify-center\",\"py-12\",\"w-full\"],[1,\"icon-display\",\"mb-8\"],[1,\"text-gray-600\",\"text-lg\",\"font-semibold\",\"mb-4\"],[\"mat-flat-button\",\"\",3,\"click\"]],template:function(t,e){t&1&&v(0,sa,8,3,\"div\",0),t&2&&x(e.busyService.busyRequestCount===0?0:-1)},dependencies:[T,k],styles:[\".icon-display[_ngcontent-%COMP%]{transform:scale(3)}\"]})};var ma=(n,a)=>a.id;function ca(n,a){if(n&1&&g(0,\"app-product-item\",15),n&2){let t=a.$implicit;h(\"product\",t)}}function la(n,a){if(n&1&&(r(0,\"mat-list-option\",17),c(1),o()),n&2){let t=a.$implicit,e=p(2);h(\"value\",t.value)(\"selected\",e.shopParams.sort===t.value),l(),S(\"\",t.name,\" \")}}function da(n,a){if(n&1){let t=w();r(0,\"div\",4)(1,\"div\",5)(2,\"mat-paginator\",6),_(\"page\",function(i){f(t);let m=p();return b(m.handlePageEvent(i))}),o(),r(3,\"form\",7,0),_(\"ngSubmit\",function(){f(t);let i=p();return b(i.onSearchChange())}),r(5,\"input\",8),nt(\"ngModelChange\",function(i){f(t);let m=p();return it(m.shopParams.search,i)||(m.shopParams.search=i),b(i)}),o(),r(6,\"button\",9)(7,\"mat-icon\",10),c(8,\"search\"),o()()(),r(9,\"div\",11)(10,\"button\",12),_(\"click\",function(){f(t);let i=p();return b(i.openFiltersDialog())}),r(11,\"mat-icon\"),c(12,\"filter_list\"),o(),c(13,\" Filters \"),o(),r(14,\"button\",13)(15,\"mat-icon\"),c(16,\"swap_vert\"),o(),c(17,\" Sort \"),o()()(),r(18,\"div\",14),j(19,ca,1,1,\"app-product-item\",15,ma),o()(),r(21,\"mat-menu\",null,1)(23,\"mat-selection-list\",16,2),_(\"selectionChange\",function(i){f(t);let m=p();return b(m.onSortChange(i))}),j(25,la,2,3,\"mat-list-option\",17,Ht),o()()}if(n&2){let t=N(22),e=p();l(2),h(\"length\",e.products.count)(\"pageSize\",e.shopParams.pageSize)(\"showFirstLastButtons\",!0)(\"pageSizeOptions\",e.pageSizeOptions)(\"pageIndex\",e.shopParams.pageNumber-1),l(3),et(\"ngModel\",e.shopParams.search),l(9),h(\"matMenuTriggerFor\",t),l(5),V(e.products.data),l(4),h(\"multiple\",!1),l(2),V(e.sortOptions)}}function pa(n,a){if(n&1){let t=w();r(0,\"app-empty-state\",18),_(\"action\",function(){f(t);let i=p();return b(i.resetFilters())}),o()}}var oe=class n{shopService=s($);dialogService=s(zi);products;sortOptions=[{name:\"Alphabetical\",value:\"name\"},{name:\"Price: Low-High\",value:\"priceAsc\"},{name:\"Price: High-Low\",value:\"priceDesc\"}];shopParams=new Rt;pageSizeOptions=[5,10,15,20];pageEvent;ngOnInit(){this.initialiseShop()}initialiseShop(){this.shopService.getTypes(),this.shopService.getBrands(),this.getProducts()}resetFilters(){this.shopParams=new Rt,this.getProducts()}onSearchChange(){this.shopParams.pageNumber=1,this.shopService.getProducts(this.shopParams).subscribe({next:a=>this.products=a,error:a=>console.error(a)})}getProducts(){this.shopService.getProducts(this.shopParams).subscribe({next:a=>this.products=a,error:a=>console.error(a)})}onSortChange(a){this.shopParams.pageNumber=1;let t=a.options[0];t&&(this.shopParams.sort=t.value,this.getProducts())}openFiltersDialog(){this.dialogService.open(ne,{minWidth:\"500px\",data:{selectedBrands:this.shopParams.brands,selectedTypes:this.shopParams.types}}).afterClosed().subscribe({next:t=>{t&&(this.shopParams.pageNumber=1,this.shopParams.types=t.selectedTypes,this.shopParams.brands=t.selectedBrands,this.getProducts())}})}handlePageEvent(a){this.shopParams.pageNumber=a.pageIndex+1,this.shopParams.pageSize=a.pageSize,this.getProducts()}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-shop\"]],decls:2,vars:1,consts:[[\"searchForm\",\"ngForm\"],[\"sortMenu\",\"matMenu\"],[\"sortList\",\"\"],[\"message\",\"No products match this filter\",\"icon\",\"filter_alt_off\",\"actionText\",\"Reset filters\"],[1,\"flex\",\"flex-col\",\"gap-3\"],[1,\"flex\",\"justify-between\"],[\"aria-label\",\"select page\",1,\"bg-white\",3,\"page\",\"length\",\"pageSize\",\"showFirstLastButtons\",\"pageSizeOptions\",\"pageIndex\"],[1,\"relative\",\"flex\",\"items-center\",\"w-full\",\"max-w-md\",\"mx-4\",3,\"ngSubmit\"],[\"type\",\"search\",\"placeholder\",\"Search\",\"name\",\"search\",1,\"block\",\"w-full\",\"p-4\",\"text-sm\",\"text-gray-900\",\"border\",\"border-gray-300\",\"rounded-lg\",\"bg-gray-50\",\"focus:border-blue-500\",\"focus:ring-blue-500\",3,\"ngModelChange\",\"ngModel\"],[\"mat-icon-button\",\"\",\"type\",\"submit\",1,\"absolute\",\"inset-y-0\",\"right-8\",\"top-2\",\"flex\",\"items-center\",\"pl-3\"],[1,\"text-gray-500\"],[1,\"flex\",\"gap-3\"],[\"mat-stroked-button\",\"\",1,\"match-input-height\",3,\"click\"],[\"mat-stroked-button\",\"\",1,\"match-input-height\",3,\"matMenuTriggerFor\"],[1,\"grid\",\"grid-cols-5\",\"gap-4\"],[3,\"product\"],[3,\"selectionChange\",\"multiple\"],[3,\"value\",\"selected\"],[\"message\",\"No products match this filter\",\"icon\",\"filter_alt_off\",\"actionText\",\"Reset filters\",3,\"action\"]],template:function(t,e){t&1&&v(0,da,27,8)(1,pa,1,0,\"app-empty-state\",3),t&2&&x(e.products&&e.products.count>0?0:1)},dependencies:[te,k,T,J,At,Dt,re,Xi,xt,Vi,$t,bt,Ni,vt,ji,wt],encapsulation:2})};function ha(n,a){if(n&1){let t=w();r(0,\"section\",0)(1,\"div\",1)(2,\"div\",2)(3,\"div\",3),g(4,\"img\",4),o(),r(5,\"div\",5)(6,\"h1\",6),c(7),o(),r(8,\"p\"),c(9),o(),r(10,\"div\",7)(11,\"p\",8),c(12),pt(13,\"currency\"),o()(),r(14,\"div\",9)(15,\"button\",10),_(\"click\",function(){f(t);let i=p();return b(i.updateCart())}),r(16,\"mat-icon\"),c(17,\"shopping_cart\"),o(),c(18),o(),r(19,\"mat-form-field\",11)(20,\"mat-label\"),c(21,\"Quantity\"),o(),r(22,\"input\",12),nt(\"ngModelChange\",function(i){f(t);let m=p();return it(m.quantity,i)||(m.quantity=i),b(i)}),o()()(),g(23,\"mat-divider\",13),r(24,\"p\",14),c(25),o()()()()()}if(n&2){let t=p();l(4),h(\"src\",Z(t.product.pictureUrl),ct),l(3),S(\" \",t.product.name,\" \"),l(2),S(\"You have \",t.quantityInCart,\" of this item in your cart\"),l(3),S(\" \",ht(13,9,t.product.price),\" \"),l(3),h(\"disabled\",t.quantity===t.quantityInCart),l(3),S(\" \",t.getButtonText(),\" \"),l(4),et(\"ngModel\",t.quantity),l(3),S(\" \",t.product.description,\" \")}}var se=class n{shopService=s($);cartService=s(O);activatedRoute=s(li);product;quantityInCart=0;quantity=1;ngOnInit(){this.loadProduct()}loadProduct(){let a=this.activatedRoute.snapshot.paramMap.get(\"id\");a&&this.shopService.getProduct(+a).subscribe({next:t=>{this.product=t,this.updateQuantityInBasket()},error:t=>console.log(t)})}updateCart(){if(this.product)if(this.quantity>this.quantityInCart){let a=this.quantity-this.quantityInCart;this.quantityInCart+=a,this.cartService.addItemToCart(this.product,a)}else{let a=this.quantityInCart-this.quantity;this.quantityInCart-=a,this.cartService.removeItemFromCart(this.product.id,a)}}updateQuantityInBasket(){this.quantityInCart=this.cartService.cart()?.items.find(a=>a.productId===this.product?.id)?.quantity||0,this.quantity=this.quantityInCart||1}getButtonText(){return this.quantityInCart>0?\"Update Cart\":\"Add to Cart\"}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-product-details\"]],decls:1,vars:1,consts:[[1,\"py-8\"],[1,\"max-w-screen-2xl\",\"px-4\",\"mx-auto\"],[1,\"grid\",\"grid-cols-2\",\"gap-8\"],[1,\"max-w-xl\",\"mx-auto\"],[\"alt\",\"product image\",1,\"w-full\",3,\"src\"],[1,\"mt-6\",\"sm:mt-8\",\"lg:mt-0\"],[1,\"text-2xl\",\"font-semibold\",\"text-gray-900\"],[1,\"mt-4\",\"items-center\",\"gap-4\",\"flex\"],[1,\"text-3xl\",\"font-extrabold\",\"text-gray-900\"],[1,\"flex\",\"gap-4\",\"mt-6\"],[\"mat-flat-button\",\"\",1,\"match-input-height\",3,\"click\",\"disabled\"],[\"appearance\",\"outline\",1,\"flex\",\"flex-row\"],[\"matInput\",\"\",\"min\",\"0\",\"type\",\"number\",\"type\",\"number\",3,\"ngModelChange\",\"ngModel\"],[1,\"my-6\"],[1,\"mt-6\",\"text-gray-500\"]],template:function(t,e){t&1&&v(0,ha,26,11,\"section\",0),t&2&&x(e.product?0:-1)},dependencies:[T,Qi,kt,qi,gt,k,Gi,xt,$t,Hi,bt,Ui,vt],encapsulation:2})};function ua(n,a){if(n&1&&(r(0,\"li\",4),c(1),o()),n&2){let t=a.$implicit;l(),C(t)}}function ga(n,a){if(n&1&&(r(0,\"div\",2)(1,\"ul\",3),j(2,ua,2,1,\"li\",4,Ht),o()()),n&2){let t=p();l(2),V(t.validationErrors)}}var me=class n{http=s(Xt);baseUrl=_t.baseUrl;validationErrors;get404Error(){this.http.get(this.baseUrl+\"buggy/notfound\").subscribe({next:a=>console.log(a),error:a=>console.log(a)})}get400Error(){this.http.get(this.baseUrl+\"buggy/badrequest\").subscribe({next:a=>console.log(a),error:a=>console.log(a)})}get500Error(){this.http.get(this.baseUrl+\"buggy/internalerror\").subscribe({next:a=>console.log(a),error:a=>console.log(a)})}get401Error(){this.http.get(this.baseUrl+\"buggy/unauthorized\").subscribe({next:a=>console.log(a),error:a=>console.log(a)})}get400ValidationError(){this.http.post(this.baseUrl+\"buggy/validationerror\",{}).subscribe({next:a=>console.log(a),error:a=>this.validationErrors=a})}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-test-error\"]],decls:12,vars:1,consts:[[1,\"mt-5\",\"flex\",\"justify-center\",\"gap-4\"],[\"mat-stroked-button\",\"\",3,\"click\"],[1,\"mx-auto\",\"max-w-lg\",\"mt-5\",\"bg-red-100\"],[1,\"space-y-2\",\"p-2\"],[1,\"text-red-800\"]],template:function(t,e){t&1&&(r(0,\"div\",0)(1,\"button\",1),_(\"click\",function(){return e.get500Error()}),c(2,\"Test 500 error\"),o(),r(3,\"button\",1),_(\"click\",function(){return e.get404Error()}),c(4,\"Test 404 error\"),o(),r(5,\"button\",1),_(\"click\",function(){return e.get400Error()}),c(6,\"Test 400 error\"),o(),r(7,\"button\",1),_(\"click\",function(){return e.get401Error()}),c(8,\"Test 401 error\"),o(),r(9,\"button\",1),_(\"click\",function(){return e.get400ValidationError()}),c(10,\"Test 400 validation error\"),o()(),v(11,ga,4,0,\"div\",2)),t&2&&(l(11),x(e.validationErrors?11:-1))},dependencies:[k],encapsulation:2})};function _a(n,a){if(n&1&&(r(0,\"h5\",2),c(1),o(),r(2,\"p\",3),c(3,\"This error comes from the server, not Angular\"),o(),r(4,\"p\",4),c(5,\"What to do next?\"),o(),r(6,\"ol\",5)(7,\"li\",6),c(8,\"Check the network tab in Chrome Dev Tools\"),o(),r(9,\"li\"),c(10,\"Reproduce the error in Postman. If same error, don't troubleshoot Angular code!\"),o()(),r(11,\"h5\",7),c(12,\"Stack trace\"),o(),r(13,\"mat-card\",8)(14,\"code\",9),c(15),o()()),n&2){let t=p();l(),S(\"Error: \",t.error.message),l(14),C(t.error.details)}}var ce=class n{constructor(a){this.router=a;let t=this.router.getCurrentNavigation();this.error=t?.extras.state?.error}error;static \\u0275fac=function(t){return new(t||n)($e(K))};static \\u0275cmp=u({type:n,selectors:[[\"app-server-error\"]],decls:4,vars:1,consts:[[1,\"container\",\"mt-5\",\"p-4\",\"bg-gray-100\",\"rounded\",\"shadow-lg\"],[1,\"text-2xl\",\"font-semibold\",\"mb-4\"],[1,\"text-red-600\",\"text-lg\",\"mb-2\"],[1,\"font-bold\",\"mb-2\"],[1,\"mb-2\"],[1,\"list-decimal\",\"ml-5\",\"mb-4\"],[1,\"mb-1\"],[1,\"text-lg\",\"font-semibold\",\"mb-2\"],[1,\"p-4\",\"bg-white\"],[1,\"block\",\"whitespace-pre-wrap\"]],template:function(t,e){t&1&&(r(0,\"div\",0)(1,\"h4\",1),c(2,\"Internal Server error\"),o(),v(3,_a,16,2),o()),t&2&&(l(3),x(e.error?3:-1))},dependencies:[Zt],encapsulation:2})};var le=class n{static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-not-found\"]],decls:10,vars:0,consts:[[1,\"flex\",\"items-center\",\"justify-center\",\"min-h-96\",\"bg-gray-100\"],[1,\"text-center\"],[1,\"text-purple-700\",\"icon-display\"],[1,\"text-4xl\",\"font-bold\",\"text-gray-800\",\"mt-4\"],[1,\"text-lg\",\"text-gray-600\",\"mt-2\"],[\"routerLink\",\"/shop\",\"mat-flat-button\",\"\",1,\"mt-4\"]],template:function(t,e){t&1&&(r(0,\"div\",0)(1,\"div\",1)(2,\"mat-icon\",2),c(3,\"error_outline\"),o(),r(4,\"h1\",3),c(5,\"404\"),o(),r(6,\"p\",4),c(7,\"Page Not Found\"),o(),r(8,\"button\",5),c(9,\"Back to shop\"),o()()())},dependencies:[T,U,k],styles:[\".icon-display[_ngcontent-%COMP%]{transform:scale(3)}\"]})};var de=class n{cartService=s(O);item=ut.required();incrementQuantity(){this.cartService.addItemToCart(this.item())}decrementQuantity(){this.cartService.removeItemFromCart(this.item().productId,1)}removeItemFromCart(){this.cartService.removeItemFromCart(this.item().productId,this.item().quantity)}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-cart-item\"]],inputs:{item:[1,\"item\"]},decls:27,vars:11,consts:[[1,\"rounded-lg\",\"border\",\"border-gray-200\",\"bg-white\",\"p-4\",\"shadow-sm\",\"mb-4\"],[1,\"flex\",\"items-center\",\"justify-between\",\"gap-6\"],[1,\"shrink\",\"order-1\",3,\"routerLink\"],[\"alt\",\"product image\",1,\"h-20\",\"w-20\",3,\"src\"],[1,\"flex\",\"items-center\",\"justify-between\",\"order-3\"],[1,\"flex\",\"items-center\",\"align-middle\",\"gap-3\"],[\"mat-icon-button\",\"\"],[1,\"text-red-600\",3,\"click\"],[1,\"font-semibold\",\"text-xl\",\"mb-1\"],[\"mat-icon-button\",\"\",3,\"click\"],[1,\"text-green-600\"],[1,\"text-end\",\"order-4\",\"w-32\"],[1,\"font-bold\",\"text-xl\",\"text-gray-900\"],[1,\"w-full\",\"flex\",\"flex-col\",\"flex-1\",\"space-y-4\",\"order-2\",\"max-w-md\"],[1,\"font-medium\",3,\"routerLink\"],[1,\"flex\",\"items-center\",\"gap-4\"],[\"mat-button\",\"\",1,\"text-red-700\",\"flex\",\"gap-2\",\"items-center\",3,\"click\"]],template:function(t,e){t&1&&(r(0,\"div\",0)(1,\"div\",1)(2,\"a\",2),g(3,\"img\",3),o(),r(4,\"div\",4)(5,\"div\",5)(6,\"button\",6)(7,\"mat-icon\",7),_(\"click\",function(){return e.decrementQuantity()}),c(8,\"remove\"),o()(),r(9,\"div\",8),c(10),o(),r(11,\"button\",9),_(\"click\",function(){return e.incrementQuantity()}),r(12,\"mat-icon\",10),c(13,\"add\"),o()()(),r(14,\"div\",11)(15,\"p\",12),c(16),pt(17,\"currency\"),o()()(),r(18,\"div\",13)(19,\"a\",14),c(20),o(),r(21,\"div\",15)(22,\"button\",16),_(\"click\",function(){return e.removeItemFromCart()}),r(23,\"mat-icon\"),c(24,\"delete\"),o(),r(25,\"span\"),c(26,\"Delete\"),o()()()()()()),t&2&&(l(2),h(\"routerLink\",dt(\"/shop/\",e.item().productId)),l(),h(\"src\",Z(e.item().pictureUrl),ct),l(7),S(\" \",e.item().quantity),l(6),C(ht(17,9,e.item().price)),l(3),h(\"routerLink\",dt(\"/shop/\",e.item().productId)),l(),S(\" \",e.item().productName,\" \"))},dependencies:[U,T,gt,k],encapsulation:2})};var fa=(n,a)=>a.productId;function ba(n,a){if(n&1&&g(0,\"app-cart-item\",3),n&2){let t=a.$implicit;h(\"item\",t)}}function va(n,a){if(n&1&&(r(0,\"div\",0)(1,\"div\",2),j(2,ba,1,1,\"app-cart-item\",3,fa),o(),r(4,\"div\",4),g(5,\"app-order-summary\"),o()()),n&2){let t,e=p();l(2),V((t=e.cartService.cart())==null?null:t.items)}}function xa(n,a){if(n&1){let t=w();r(0,\"app-empty-state\",5),_(\"action\",function(){f(t);let i=p();return b(i.onAction())}),o()}}var pe=class n{router=s(K);cartService=s(O);onAction(){this.router.navigateByUrl(\"/shop\")}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-cart\"]],decls:3,vars:1,consts:[[1,\"flex\",\"w-full\",\"items-start\",\"gap-6\",\"mt-32\"],[\"message\",\"Your shopping cart is empty\",\"icon\",\"remove_shopping_cart\",\"actionText\",\"Go to shop\"],[1,\"w-3/4\"],[3,\"item\"],[1,\"w-1/4\"],[\"message\",\"Your shopping cart is empty\",\"icon\",\"remove_shopping_cart\",\"actionText\",\"Go to shop\",3,\"action\"]],template:function(t,e){if(t&1&&(r(0,\"section\"),v(1,va,6,0,\"div\",0)(2,xa,1,0,\"app-empty-state\",1),o()),t&2){let i;l(),x(((i=e.cartService.cart())==null||i.items==null?null:i.items.length)>0?1:2)}},dependencies:[de,Wi,wt],encapsulation:2})};var cn=[{path:\"\",component:Jt},{path:\"shop\",component:oe},{path:\"shop/:id\",component:se},{path:\"admin\",loadChildren:()=>import(\"./chunk-6SXQ2FRE.js\").then(n=>n.adminRoutes)},{path:\"orders\",loadChildren:()=>import(\"./chunk-LMQANEB2.js\").then(n=>n.orderRoutes)},{path:\"checkout\",loadChildren:()=>import(\"./chunk-Z2NTM2YJ.js\").then(n=>n.checkoutRoutes)},{path:\"account\",loadChildren:()=>import(\"./chunk-WAIB6SCQ.js\").then(n=>n.accountRoutes)},{path:\"cart\",component:pe},{path:\"test-error\",component:me},{path:\"server-error\",component:ce},{path:\"admin\",component:Ki,canActivate:[Zi,Ji]},{path:\"not-found\",component:le},{path:\"**\",redirectTo:\"not-found\",pathMatch:\"full\"}];var ln=(n,a)=>{let t=s(K),e=s($i);return a(n).pipe(He(i=>{if(i.status===400)if(i.error.errors){let m=[];for(let d in i.error.errors)i.error.errors[d]&&m.push(i.error.errors[d]);throw m.flat()}else e.error(i.error.title||i.error);if(i.status===401&&e.error(i.error.title||i.error),i.status===403&&e.error(\"Forbidden\"),i.status===404&&t.navigateByUrl(\"/not-found\"),i.status===500){let m={state:{error:i.error}};t.navigateByUrl(\"/server-error\",m)}return Be(()=>i)}))};var dn=(n,a)=>{let t=s(tt);return t.busy(),a(n).pipe(_t.production?ze:qe(500),Qe(()=>t.idle()))};var he=class n{cartService=s(O);accountService=s(yt);signalrService=s(Yi);init(){let a=localStorage.getItem(\"cart_id\"),t=a?this.cartService.getCart(a):Mt(null);return je({cart:t,user:this.accountService.getUserInfo().pipe(Xe(e=>{e&&this.signalrService.createHubConnection()}))})}static \\u0275fac=function(t){return new(t||n)};static \\u0275prov=st({token:n,factory:n.\\u0275fac,providedIn:\"root\"})};var pn=(n,a)=>{let t=n.clone({withCredentials:!0});return a(t)};var hn={providers:[We(),ii({eventCoalescing:!0}),hi(cn),mi(ci([ln,dn,pn])),ti(()=>Fe(null,null,function*(){let n=s(he);return Ne(n.init()).finally(()=>{let a=document.getElementById(\"initial-splash\");a&&a.remove()})})),{provide:Fi,useValue:{autoFocus:\"dialog\",restoreFocus:!0}}]};var un=\"mat-badge-content\",ya=(()=>{class n{static \\u0275fac=function(e){return new(e||n)};static \\u0275cmp=u({type:n,selectors:[[\"ng-component\"]],decls:0,vars:0,template:function(e,i){},styles:[`.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;pointer-events:none;background-color:var(--mat-badge-background-color, var(--mat-sys-error));color:var(--mat-badge-text-color, var(--mat-sys-on-error));font-family:var(--mat-badge-text-font, var(--mat-sys-label-small-font));font-weight:var(--mat-badge-text-weight, var(--mat-sys-label-small-weight));border-radius:var(--mat-badge-container-shape, var(--mat-sys-corner-full))}.mat-badge-above .mat-badge-content{bottom:100%}.mat-badge-below .mat-badge-content{top:100%}.mat-badge-before .mat-badge-content{right:100%}[dir=rtl] .mat-badge-before .mat-badge-content{right:auto;left:100%}.mat-badge-after .mat-badge-content{left:100%}[dir=rtl] .mat-badge-after .mat-badge-content{left:auto;right:100%}@media(forced-colors: active){.mat-badge-content{outline:solid 1px;border-radius:0}}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color, color-mix(in srgb, var(--mat-sys-error) 38%, transparent));color:var(--mat-badge-disabled-state-text-color, var(--mat-sys-on-error))}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:var(--mat-badge-legacy-small-size-container-size, unset);height:var(--mat-badge-legacy-small-size-container-size, unset);min-width:var(--mat-badge-small-size-container-size, 6px);min-height:var(--mat-badge-small-size-container-size, 6px);line-height:var(--mat-badge-small-size-line-height, 6px);padding:var(--mat-badge-small-size-container-padding, 0);font-size:var(--mat-badge-small-size-text-size, 0);margin:var(--mat-badge-small-size-container-offset, -6px 0)}.mat-badge-small.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-small-size-container-overlap-offset, -6px)}.mat-badge-medium .mat-badge-content{width:var(--mat-badge-legacy-container-size, unset);height:var(--mat-badge-legacy-container-size, unset);min-width:var(--mat-badge-container-size, 16px);min-height:var(--mat-badge-container-size, 16px);line-height:var(--mat-badge-line-height, 16px);padding:var(--mat-badge-container-padding, 0 4px);font-size:var(--mat-badge-text-size, var(--mat-sys-label-small-size));margin:var(--mat-badge-container-offset, -12px 0)}.mat-badge-medium.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-container-overlap-offset, -12px)}.mat-badge-large .mat-badge-content{width:var(--mat-badge-legacy-large-size-container-size, unset);height:var(--mat-badge-legacy-large-size-container-size, unset);min-width:var(--mat-badge-large-size-container-size, 16px);min-height:var(--mat-badge-large-size-container-size, 16px);line-height:var(--mat-badge-large-size-line-height, 16px);padding:var(--mat-badge-large-size-container-padding, 0 4px);font-size:var(--mat-badge-large-size-text-size, var(--mat-sys-label-small-size));margin:var(--mat-badge-large-size-container-offset, -12px 0)}.mat-badge-large.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-large-size-container-overlap-offset, -12px)}\n`],encapsulation:2,changeDetection:0})}return n})(),gn=(()=>{class n{_ngZone=s(Q);_elementRef=s(D);_ariaDescriber=s(ki);_renderer=s(W);_animationsDisabled=Y();_idGenerator=s(Gt);get color(){return this._color}set color(t){this._setColor(t),this._color=t}_color=\"primary\";overlap=!0;disabled;position=\"above after\";get content(){return this._content}set content(t){this._updateRenderedContent(t)}_content;get description(){return this._description}set description(t){this._updateDescription(t)}_description;size=\"medium\";hidden;_badgeElement;_inlineBadgeDescription;_isInitialized=!1;_interactivityChecker=s(yi);_document=s(It);constructor(){let t=s(ft);t.load(ya),t.load(vi)}isAbove(){return this.position.indexOf(\"below\")===-1}isAfter(){return this.position.indexOf(\"before\")===-1}getBadgeElement(){return this._badgeElement}ngOnInit(){this._clearExistingBadges(),this.content&&!this._badgeElement&&(this._badgeElement=this._createBadgeElement(),this._updateRenderedContent(this.content)),this._isInitialized=!0}ngOnDestroy(){this._renderer.destroyNode&&(this._renderer.destroyNode(this._badgeElement),this._inlineBadgeDescription?.remove()),this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this.description)}_isHostInteractive(){return this._interactivityChecker.isFocusable(this._elementRef.nativeElement,{ignoreVisibility:!0})}_createBadgeElement(){let t=this._renderer.createElement(\"span\"),e=\"mat-badge-active\";return t.setAttribute(\"id\",this._idGenerator.getId(\"mat-badge-content-\")),t.setAttribute(\"aria-hidden\",\"true\"),t.classList.add(un),this._animationsDisabled&&t.classList.add(\"_mat-animation-noopable\"),this._elementRef.nativeElement.appendChild(t),typeof requestAnimationFrame==\"function\"&&!this._animationsDisabled?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{t.classList.add(e)})}):t.classList.add(e),t}_updateRenderedContent(t){let e=`${t??\"\"}`.trim();this._isInitialized&&e&&!this._badgeElement&&(this._badgeElement=this._createBadgeElement()),this._badgeElement&&(this._badgeElement.textContent=e),this._content=e}_updateDescription(t){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this.description),(!t||this._isHostInteractive())&&this._removeInlineDescription(),this._description=t,this._isHostInteractive()?this._ariaDescriber.describe(this._elementRef.nativeElement,t):this._updateInlineDescription()}_updateInlineDescription(){this._inlineBadgeDescription||(this._inlineBadgeDescription=this._document.createElement(\"span\"),this._inlineBadgeDescription.classList.add(\"cdk-visually-hidden\")),this._inlineBadgeDescription.textContent=this.description,this._badgeElement?.appendChild(this._inlineBadgeDescription)}_removeInlineDescription(){this._inlineBadgeDescription?.remove(),this._inlineBadgeDescription=void 0}_setColor(t){let e=this._elementRef.nativeElement.classList;e.remove(`mat-badge-${this._color}`),t&&e.add(`mat-badge-${t}`)}_clearExistingBadges(){let t=this._elementRef.nativeElement.querySelectorAll(`:scope > .${un}`);for(let e of Array.from(t))e!==this._badgeElement&&e.remove()}static \\u0275fac=function(e){return new(e||n)};static \\u0275dir=I({type:n,selectors:[[\"\",\"matBadge\",\"\"]],hostAttrs:[1,\"mat-badge\"],hostVars:20,hostBindings:function(e,i){e&2&&M(\"mat-badge-overlap\",i.overlap)(\"mat-badge-above\",i.isAbove())(\"mat-badge-below\",!i.isAbove())(\"mat-badge-before\",!i.isAfter())(\"mat-badge-after\",i.isAfter())(\"mat-badge-small\",i.size===\"small\")(\"mat-badge-medium\",i.size===\"medium\")(\"mat-badge-large\",i.size===\"large\")(\"mat-badge-hidden\",i.hidden||!i.content)(\"mat-badge-disabled\",i.disabled)},inputs:{color:[0,\"matBadgeColor\",\"color\"],overlap:[2,\"matBadgeOverlap\",\"overlap\",G],disabled:[2,\"matBadgeDisabled\",\"disabled\",G],position:[0,\"matBadgePosition\",\"position\"],content:[0,\"matBadge\",\"content\"],description:[0,\"matBadgeDescription\",\"description\"],size:[0,\"matBadgeSize\",\"size\"],hidden:[2,\"matBadgeHidden\",\"hidden\",G]}})}return n})();function ka(n,a){n&1&&g(0,\"div\",2)}var wa=new z(\"MAT_PROGRESS_BAR_DEFAULT_OPTIONS\");var fn=(()=>{class n{_elementRef=s(D);_ngZone=s(Q);_changeDetectorRef=s(X);_renderer=s(W);_cleanupTransitionEnd;constructor(){let t=s(wa,{optional:!0});t&&(t.color&&(this.color=this._defaultColor=t.color),this.mode=t.mode||this.mode)}_isNoopAnimation=Y();get color(){return this._color||this._defaultColor}set color(t){this._color=t}_color;_defaultColor=\"primary\";get value(){return this._value}set value(t){this._value=_n(t||0),this._changeDetectorRef.markForCheck()}_value=0;get bufferValue(){return this._bufferValue||0}set bufferValue(t){this._bufferValue=_n(t||0),this._changeDetectorRef.markForCheck()}_bufferValue=0;animationEnd=new q;get mode(){return this._mode}set mode(t){this._mode=t,this._changeDetectorRef.markForCheck()}_mode=\"determinate\";ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{this._cleanupTransitionEnd=this._renderer.listen(this._elementRef.nativeElement,\"transitionend\",this._transitionendHandler)})}ngOnDestroy(){this._cleanupTransitionEnd?.()}_getPrimaryBarTransform(){return`scaleX(${this._isIndeterminate()?1:this.value/100})`}_getBufferBarFlexBasis(){return`${this.mode===\"buffer\"?this.bufferValue:100}%`}_isIndeterminate(){return this.mode===\"indeterminate\"||this.mode===\"query\"}_transitionendHandler=t=>{this.animationEnd.observers.length===0||!t.target||!t.target.classList.contains(\"mdc-linear-progress__primary-bar\")||(this.mode===\"determinate\"||this.mode===\"buffer\")&&this._ngZone.run(()=>this.animationEnd.next({value:this.value}))};static \\u0275fac=function(e){return new(e||n)};static \\u0275cmp=u({type:n,selectors:[[\"mat-progress-bar\"]],hostAttrs:[\"role\",\"progressbar\",\"aria-valuemin\",\"0\",\"aria-valuemax\",\"100\",\"tabindex\",\"-1\",1,\"mat-mdc-progress-bar\",\"mdc-linear-progress\"],hostVars:10,hostBindings:function(e,i){e&2&&(E(\"aria-valuenow\",i._isIndeterminate()?null:i.value)(\"mode\",i.mode),qt(\"mat-\"+i.color),M(\"_mat-animation-noopable\",i._isNoopAnimation)(\"mdc-linear-progress--animation-ready\",!i._isNoopAnimation)(\"mdc-linear-progress--indeterminate\",i._isIndeterminate()))},inputs:{color:\"color\",value:[2,\"value\",\"value\",Me],bufferValue:[2,\"bufferValue\",\"bufferValue\",Me],mode:\"mode\"},outputs:{animationEnd:\"animationEnd\"},exportAs:[\"matProgressBar\"],decls:7,vars:5,consts:[[\"aria-hidden\",\"true\",1,\"mdc-linear-progress__buffer\"],[1,\"mdc-linear-progress__buffer-bar\"],[1,\"mdc-linear-progress__buffer-dots\"],[\"aria-hidden\",\"true\",1,\"mdc-linear-progress__bar\",\"mdc-linear-progress__primary-bar\"],[1,\"mdc-linear-progress__bar-inner\"],[\"aria-hidden\",\"true\",1,\"mdc-linear-progress__bar\",\"mdc-linear-progress__secondary-bar\"]],template:function(e,i){e&1&&(r(0,\"div\",0),g(1,\"div\",1),v(2,ka,1,0,\"div\",2),o(),r(3,\"div\",3),g(4,\"span\",4),o(),r(5,\"div\",5),g(6,\"span\",4),o()),e&2&&(l(),Ce(\"flex-basis\",i._getBufferBarFlexBasis()),l(),x(i.mode===\"buffer\"?2:-1),l(),Ce(\"transform\",i._getPrimaryBarTransform()))},styles:[`.mat-mdc-progress-bar{display:block;text-align:start}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:max(var(--mat-progress-bar-track-height, 4px),var(--mat-progress-bar-active-indicator-height, 4px))}@media(forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:var(--mat-progress-bar-active-indicator-height, 4px)}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}[dir=rtl] .mdc-linear-progress__bar{right:0;transform-origin:center right}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid;border-color:var(--mat-progress-bar-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-progress-bar-active-indicator-height, 4px)}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden;height:var(--mat-progress-bar-track-height, 4px);border-radius:var(--mat-progress-bar-track-shape, var(--mat-sys-corner-none))}.mdc-linear-progress__buffer-dots{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\");background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear;background-color:var(--mat-progress-bar-track-color, var(--mat-sys-surface-variant))}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}[dir=rtl] .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);background-color:var(--mat-progress-bar-track-color, var(--mat-sys-surface-variant))}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mat-progress-bar-track-height, 4px) * -2.5))}}@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}\n`],encapsulation:2,changeDetection:0})}return n})();function _n(n,a=0,t=100){return Math.max(a,Math.min(t,n))}var ue=class n{accountService=s(yt);viewContainerRef=s(Vt);templateRef=s(jt);constructor(){ni(()=>{this.accountService.isAdmin()?this.viewContainerRef.createEmbeddedView(this.templateRef):this.viewContainerRef.clear()})}static \\u0275fac=function(t){return new(t||n)};static \\u0275dir=I({type:n,selectors:[[\"\",\"appIsAdmin\",\"\"]]})};var Ca=()=>({exact:!0});function Ma(n,a){n&1&&(r(0,\"a\",13),c(1,\"Admin\"),o())}function Sa(n,a){if(n&1){let t=w();r(0,\"div\",11)(1,\"button\",14)(2,\"mat-icon\"),c(3,\"arrow_drop_down\"),o(),r(4,\"span\"),c(5),o()(),r(6,\"mat-menu\",15,0)(8,\"button\",16)(9,\"mat-icon\"),c(10,\"shopping_cart\"),o(),c(11,\" My cart \"),o(),r(12,\"button\",17)(13,\"mat-icon\"),c(14,\"history\"),o(),c(15,\" View Orders \"),o(),g(16,\"mat-divider\"),r(17,\"button\",18),_(\"click\",function(){f(t);let i=p();return b(i.logout())}),r(18,\"mat-icon\"),c(19,\"logout\"),o(),c(20,\" Logout\"),o()()()}if(n&2){let t,e=N(7),i=p();l(),h(\"matMenuTriggerFor\",e),l(4),C((t=i.accountService.currentUser())==null?null:t.email)}}function Ia(n,a){n&1&&(r(0,\"button\",19),c(1,\"Login\"),o(),r(2,\"button\",20),c(3,\"Register\"),o())}function Ea(n,a){n&1&&g(0,\"mat-progress-bar\",12)}var ge=class n{busyService=s(tt);cartService=s(O);accountService=s(yt);router=s(K);logout(){this.accountService.logout().subscribe({next:()=>{this.accountService.currentUser.set(null),this.router.navigateByUrl(\"/\")}})}static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-header\"]],decls:18,vars:6,consts:[[\"menu\",\"matMenu\"],[1,\"shadow-md\",\"max-h-20\",\"p-3\",\"w-full\",\"fixed\",\"top-0\",\"bg-white\",\"z-50\"],[1,\"flex\",\"align-middle\",\"items-center\",\"justify-between\",\"max-w-screen-2xl\",\"mx-auto\"],[\"routerLink\",\"/\",\"src\",\"/images/logo.png\",\"alt\",\"app logo\",1,\"max-h-16\"],[1,\"flex\",\"gap-3\",\"my-2\",\"uppercase\",\"text-2xl\"],[\"routerLink\",\"/\",\"routerLinkActive\",\"active\",3,\"routerLinkActiveOptions\"],[\"routerLink\",\"/shop\",\"routerLinkActive\",\"active\"],[\"routerLink\",\"/test-error\",\"routerLinkActive\",\"active\"],[\"routerLink\",\"/admin\",\"routerLinkActive\",\"active\",4,\"appIsAdmin\"],[1,\"flex\",\"gap-3\",\"align-middle\"],[\"routerLink\",\"/cart\",\"routerLinkActive\",\"active\",\"matBadgeSize\",\"large\",1,\"custom-badge\",\"mt-2\",\"mr-2\",3,\"matBadge\"],[1,\"px-6\"],[\"mode\",\"indeterminate\",1,\"fixed\",\"top-20\",\"z-50\"],[\"routerLink\",\"/admin\",\"routerLinkActive\",\"active\"],[\"mat-button\",\"\",3,\"matMenuTriggerFor\"],[1,\"px-3\"],[\"mat-menu-item\",\"\",\"routerLink\",\"/cart\"],[\"mat-menu-item\",\"\",\"routerLink\",\"/orders\"],[\"mat-menu-item\",\"\",3,\"click\"],[\"mat-stroked-button\",\"\",\"routerLink\",\"/account/login\"],[\"mat-stroked-button\",\"\",\"routerLink\",\"/account/register\"]],template:function(t,e){t&1&&(r(0,\"header\",1)(1,\"div\",2),g(2,\"img\",3),r(3,\"nav\",4)(4,\"a\",5),c(5,\"Home\"),o(),r(6,\"a\",6),c(7,\"Shop\"),o(),r(8,\"a\",7),c(9,\"Errors\"),o(),A(10,Ma,2,0,\"a\",8),o(),r(11,\"div\",9)(12,\"a\",10)(13,\"mat-icon\"),c(14,\"shopping_cart\"),o()(),v(15,Sa,21,2,\"div\",11)(16,Ia,4,0),o()()(),v(17,Ea,1,0,\"mat-progress-bar\",12)),t&2&&(l(4),h(\"routerLinkActiveOptions\",ei(5,Ca)),l(8),h(\"matBadge\",Z(e.cartService.itemCount())),l(3),x(e.accountService.currentUser()?15:16),l(2),x(e.busyService.loading?17:-1))},dependencies:[T,k,gn,U,pi,fn,re,J,kt,Pt,ue],styles:[\".custom-badge[_ngcontent-%COMP%]   .mat-badge-content[_ngcontent-%COMP%]{width:24px;height:24px;font-size:14px;line-height:24px}.custom-badge[_ngcontent-%COMP%]   mat-icon[_ngcontent-%COMP%]{font-size:32px;width:32px;height:32px}a.active[_ngcontent-%COMP%]{color:#7d00fa}\"]})};var _e=class n{title=\"Skinet\";static \\u0275fac=function(t){return new(t||n)};static \\u0275cmp=u({type:n,selectors:[[\"app-root\"]],decls:3,vars:0,consts:[[1,\"container\",\"mt-24\"]],template:function(t,e){t&1&&(g(0,\"app-header\"),r(1,\"div\",0),g(2,\"router-outlet\"),o())},dependencies:[ge,di],encapsulation:2})};oi(_e,hn).catch(n=>console.error(n));\n"
  },
  {
    "path": "API/wwwroot/polyfills-B6TNHZQ6.js",
    "content": "var ce=globalThis;function te(t){return(ce.__Zone_symbol_prefix||\"__zone_symbol__\")+t}function ht(){let t=ce.performance;function n(I){t&&t.mark&&t.mark(I)}function a(I,s){t&&t.measure&&t.measure(I,s)}n(\"Zone\");class e{static __symbol__=te;static assertZonePatched(){if(ce.Promise!==S.ZoneAwarePromise)throw new Error(\"Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)\")}static get root(){let s=e.current;for(;s.parent;)s=s.parent;return s}static get current(){return b.zone}static get currentTask(){return D}static __load_patch(s,i,r=!1){if(S.hasOwnProperty(s)){let E=ce[te(\"forceDuplicateZoneCheck\")]===!0;if(!r&&E)throw Error(\"Already loaded patch: \"+s)}else if(!ce[\"__Zone_disable_\"+s]){let E=\"Zone:\"+s;n(E),S[s]=i(ce,e,R),a(E,E)}}get parent(){return this._parent}get name(){return this._name}_parent;_name;_properties;_zoneDelegate;constructor(s,i){this._parent=s,this._name=i?i.name||\"unnamed\":\"<root>\",this._properties=i&&i.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,i)}get(s){let i=this.getZoneWith(s);if(i)return i._properties[s]}getZoneWith(s){let i=this;for(;i;){if(i._properties.hasOwnProperty(s))return i;i=i._parent}return null}fork(s){if(!s)throw new Error(\"ZoneSpec required!\");return this._zoneDelegate.fork(this,s)}wrap(s,i){if(typeof s!=\"function\")throw new Error(\"Expecting function got: \"+s);let r=this._zoneDelegate.intercept(this,s,i),E=this;return function(){return E.runGuarded(r,this,arguments,i)}}run(s,i,r,E){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,s,i,r,E)}finally{b=b.parent}}runGuarded(s,i=null,r,E){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,s,i,r,E)}catch(x){if(this._zoneDelegate.handleError(this,x))throw x}}finally{b=b.parent}}runTask(s,i,r){if(s.zone!=this)throw new Error(\"A task can only be run in the zone of creation! (Creation: \"+(s.zone||J).name+\"; Execution: \"+this.name+\")\");let E=s,{type:x,data:{isPeriodic:ee=!1,isRefreshable:M=!1}={}}=s;if(s.state===q&&(x===U||x===k))return;let he=s.state!=A;he&&E._transitionTo(A,d);let _e=D;D=E,b={parent:b,zone:this};try{x==k&&s.data&&!ee&&!M&&(s.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,E,i,r)}catch(Q){if(this._zoneDelegate.handleError(this,Q))throw Q}}finally{let Q=s.state;if(Q!==q&&Q!==X)if(x==U||ee||M&&Q===p)he&&E._transitionTo(d,A,p);else{let Te=E._zoneDelegates;this._updateTaskCount(E,-1),he&&E._transitionTo(q,A,q),M&&(E._zoneDelegates=Te)}b=b.parent,D=_e}}scheduleTask(s){if(s.zone&&s.zone!==this){let r=this;for(;r;){if(r===s.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${s.zone.name}`);r=r.parent}}s._transitionTo(p,q);let i=[];s._zoneDelegates=i,s._zone=this;try{s=this._zoneDelegate.scheduleTask(this,s)}catch(r){throw s._transitionTo(X,p,q),this._zoneDelegate.handleError(this,r),r}return s._zoneDelegates===i&&this._updateTaskCount(s,1),s.state==p&&s._transitionTo(d,p),s}scheduleMicroTask(s,i,r,E){return this.scheduleTask(new g(F,s,i,r,E,void 0))}scheduleMacroTask(s,i,r,E,x){return this.scheduleTask(new g(k,s,i,r,E,x))}scheduleEventTask(s,i,r,E,x){return this.scheduleTask(new g(U,s,i,r,E,x))}cancelTask(s){if(s.zone!=this)throw new Error(\"A task can only be cancelled in the zone of creation! (Creation: \"+(s.zone||J).name+\"; Execution: \"+this.name+\")\");if(!(s.state!==d&&s.state!==A)){s._transitionTo(V,d,A);try{this._zoneDelegate.cancelTask(this,s)}catch(i){throw s._transitionTo(X,V),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(s,-1),s._transitionTo(q,V),s.runCount=-1,s}}_updateTaskCount(s,i){let r=s._zoneDelegates;i==-1&&(s._zoneDelegates=null);for(let E=0;E<r.length;E++)r[E]._updateTaskCount(s.type,i)}}let c={name:\"\",onHasTask:(I,s,i,r)=>I.hasTask(i,r),onScheduleTask:(I,s,i,r)=>I.scheduleTask(i,r),onInvokeTask:(I,s,i,r,E,x)=>I.invokeTask(i,r,E,x),onCancelTask:(I,s,i,r)=>I.cancelTask(i,r)};class f{get zone(){return this._zone}_zone;_taskCounts={microTask:0,macroTask:0,eventTask:0};_parentDelegate;_forkDlgt;_forkZS;_forkCurrZone;_interceptDlgt;_interceptZS;_interceptCurrZone;_invokeDlgt;_invokeZS;_invokeCurrZone;_handleErrorDlgt;_handleErrorZS;_handleErrorCurrZone;_scheduleTaskDlgt;_scheduleTaskZS;_scheduleTaskCurrZone;_invokeTaskDlgt;_invokeTaskZS;_invokeTaskCurrZone;_cancelTaskDlgt;_cancelTaskZS;_cancelTaskCurrZone;_hasTaskDlgt;_hasTaskDlgtOwner;_hasTaskZS;_hasTaskCurrZone;constructor(s,i,r){this._zone=s,this._parentDelegate=i,this._forkZS=r&&(r&&r.onFork?r:i._forkZS),this._forkDlgt=r&&(r.onFork?i:i._forkDlgt),this._forkCurrZone=r&&(r.onFork?this._zone:i._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:i._interceptZS),this._interceptDlgt=r&&(r.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:i._invokeZS),this._invokeDlgt=r&&(r.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:i._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:i._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:i._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:i._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let E=r&&r.onHasTask,x=i&&i._hasTaskZS;(E||x)&&(this._hasTaskZS=E?r:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,r.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),r.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),r.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=i,this._cancelTaskCurrZone=this._zone))}fork(s,i){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,s,i):new e(s,i)}intercept(s,i,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,s,i,r):i}invoke(s,i,r,E,x){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,s,i,r,E,x):i.apply(r,E)}handleError(s,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,s,i):!0}scheduleTask(s,i){let r=i;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,s,i),r||(r=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==F)z(i);else throw new Error(\"Task is missing scheduleFn.\");return r}invokeTask(s,i,r,E){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,s,i,r,E):i.callback.apply(r,E)}cancelTask(s,i){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,s,i);else{if(!i.cancelFn)throw Error(\"Task is not cancelable\");r=i.cancelFn(i)}return r}hasTask(s,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,s,i)}catch(r){this.handleError(s,r)}}_updateTaskCount(s,i){let r=this._taskCounts,E=r[s],x=r[s]=E+i;if(x<0)throw new Error(\"More tasks executed then were scheduled.\");if(E==0||x==0){let ee={microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:s};this.hasTask(this._zone,ee)}}}class g{type;source;invoke;callback;data;scheduleFn;cancelFn;_zone=null;runCount=0;_zoneDelegates=null;_state=\"notScheduled\";constructor(s,i,r,E,x,ee){if(this.type=s,this.source=i,this.data=E,this.scheduleFn=x,this.cancelFn=ee,!r)throw new Error(\"callback is not defined\");this.callback=r;let M=this;s===U&&E&&E.useG?this.invoke=g.invokeTask:this.invoke=function(){return g.invokeTask.call(ce,M,this,arguments)}}static invokeTask(s,i,r){s||(s=this),K++;try{return s.runCount++,s.zone.runTask(s,i,r)}finally{K==1&&$(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(q,p)}_transitionTo(s,i,r){if(this._state===i||this._state===r)this._state=s,s==q&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${s}', expecting state '${i}'${r?\" or '\"+r+\"'\":\"\"}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<\"u\"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let T=te(\"setTimeout\"),y=te(\"Promise\"),w=te(\"then\"),_=[],P=!1,L;function H(I){if(L||ce[y]&&(L=ce[y].resolve(0)),L){let s=L[w];s||(s=L.then),s.call(L,I)}else ce[T](I,0)}function z(I){K===0&&_.length===0&&H($),I&&_.push(I)}function $(){if(!P){for(P=!0;_.length;){let I=_;_=[];for(let s=0;s<I.length;s++){let i=I[s];try{i.zone.runTask(i,null,null)}catch(r){R.onUnhandledError(r)}}}R.microtaskDrainDone(),P=!1}}let J={name:\"NO ZONE\"},q=\"notScheduled\",p=\"scheduling\",d=\"scheduled\",A=\"running\",V=\"canceling\",X=\"unknown\",F=\"microTask\",k=\"macroTask\",U=\"eventTask\",S={},R={symbol:te,currentZoneFrame:()=>b,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:z,showUncaughtError:()=>!e[te(\"ignoreConsoleErrorUncaughtError\")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:H},b={parent:null,zone:new e(null,null)},D=null,K=0;function W(){}return a(\"Zone\",\"Zone\"),e}function dt(){let t=globalThis,n=t[te(\"forceDuplicateZoneCheck\")]===!0;if(t.Zone&&(n||typeof t.Zone.__symbol__!=\"function\"))throw new Error(\"Zone already loaded.\");return t.Zone??=ht(),t.Zone}var pe=Object.getOwnPropertyDescriptor,Me=Object.defineProperty,Ae=Object.getPrototypeOf,_t=Object.create,Tt=Array.prototype.slice,je=\"addEventListener\",He=\"removeEventListener\",Ne=te(je),Ze=te(He),ae=\"true\",le=\"false\",ve=te(\"\");function Ve(t,n){return Zone.current.wrap(t,n)}function xe(t,n,a,e,c){return Zone.current.scheduleMacroTask(t,n,a,e,c)}var j=te,we=typeof window<\"u\",be=we?window:void 0,Y=we&&be||globalThis,Et=\"removeAttribute\";function Fe(t,n){for(let a=t.length-1;a>=0;a--)typeof t[a]==\"function\"&&(t[a]=Ve(t[a],n+\"_\"+a));return t}function gt(t,n){let a=t.constructor.name;for(let e=0;e<n.length;e++){let c=n[e],f=t[c];if(f){let g=pe(t,c);if(!et(g))continue;t[c]=(T=>{let y=function(){return T.apply(this,Fe(arguments,a+\".\"+c))};return fe(y,T),y})(f)}}}function et(t){return t?t.writable===!1?!1:!(typeof t.get==\"function\"&&typeof t.set>\"u\"):!0}var tt=typeof WorkerGlobalScope<\"u\"&&self instanceof WorkerGlobalScope,De=!(\"nw\"in Y)&&typeof Y.process<\"u\"&&Y.process.toString()===\"[object process]\",Ge=!De&&!tt&&!!(we&&be.HTMLElement),nt=typeof Y.process<\"u\"&&Y.process.toString()===\"[object process]\"&&!tt&&!!(we&&be.HTMLElement),Ce={},kt=j(\"enable_beforeunload\"),Xe=function(t){if(t=t||Y.event,!t)return;let n=Ce[t.type];n||(n=Ce[t.type]=j(\"ON_PROPERTY\"+t.type));let a=this||t.target||Y,e=a[n],c;if(Ge&&a===be&&t.type===\"error\"){let f=t;c=e&&e.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&t.preventDefault()}else c=e&&e.apply(this,arguments),t.type===\"beforeunload\"&&Y[kt]&&typeof c==\"string\"?t.returnValue=c:c!=null&&!c&&t.preventDefault();return c};function Ye(t,n,a){let e=pe(t,n);if(!e&&a&&pe(a,n)&&(e={enumerable:!0,configurable:!0}),!e||!e.configurable)return;let c=j(\"on\"+n+\"patched\");if(t.hasOwnProperty(c)&&t[c])return;delete e.writable,delete e.value;let f=e.get,g=e.set,T=n.slice(2),y=Ce[T];y||(y=Ce[T]=j(\"ON_PROPERTY\"+T)),e.set=function(w){let _=this;if(!_&&t===Y&&(_=Y),!_)return;typeof _[y]==\"function\"&&_.removeEventListener(T,Xe),g?.call(_,null),_[y]=w,typeof w==\"function\"&&_.addEventListener(T,Xe,!1)},e.get=function(){let w=this;if(!w&&t===Y&&(w=Y),!w)return null;let _=w[y];if(_)return _;if(f){let P=f.call(this);if(P)return e.set.call(this,P),typeof w[Et]==\"function\"&&w.removeAttribute(n),P}return null},Me(t,n,e),t[c]=!0}function rt(t,n,a){if(n)for(let e=0;e<n.length;e++)Ye(t,\"on\"+n[e],a);else{let e=[];for(let c in t)c.slice(0,2)==\"on\"&&e.push(c);for(let c=0;c<e.length;c++)Ye(t,e[c],a)}}var oe=j(\"originalInstance\");function ye(t){let n=Y[t];if(!n)return;Y[j(t)]=n,Y[t]=function(){let c=Fe(arguments,t);switch(c.length){case 0:this[oe]=new n;break;case 1:this[oe]=new n(c[0]);break;case 2:this[oe]=new n(c[0],c[1]);break;case 3:this[oe]=new n(c[0],c[1],c[2]);break;case 4:this[oe]=new n(c[0],c[1],c[2],c[3]);break;default:throw new Error(\"Arg list too long.\")}},fe(Y[t],n);let a=new n(function(){}),e;for(e in a)t===\"XMLHttpRequest\"&&e===\"responseBlob\"||function(c){typeof a[c]==\"function\"?Y[t].prototype[c]=function(){return this[oe][c].apply(this[oe],arguments)}:Me(Y[t].prototype,c,{set:function(f){typeof f==\"function\"?(this[oe][c]=Ve(f,t+\".\"+c),fe(this[oe][c],f)):this[oe][c]=f},get:function(){return this[oe][c]}})}(e);for(e in n)e!==\"prototype\"&&n.hasOwnProperty(e)&&(Y[t][e]=n[e])}function ue(t,n,a){let e=t;for(;e&&!e.hasOwnProperty(n);)e=Ae(e);!e&&t[n]&&(e=t);let c=j(n),f=null;if(e&&(!(f=e[c])||!e.hasOwnProperty(c))){f=e[c]=e[n];let g=e&&pe(e,n);if(et(g)){let T=a(f,c,n);e[n]=function(){return T(this,arguments)},fe(e[n],f)}}return f}function mt(t,n,a){let e=null;function c(f){let g=f.data;return g.args[g.cbIdx]=function(){f.invoke.apply(this,arguments)},e.apply(g.target,g.args),f}e=ue(t,n,f=>function(g,T){let y=a(g,T);return y.cbIdx>=0&&typeof T[y.cbIdx]==\"function\"?xe(y.name,T[y.cbIdx],y,c):f.apply(g,T)})}function fe(t,n){t[j(\"OriginalDelegate\")]=n}var $e=!1,Le=!1;function yt(){if($e)return Le;$e=!0;try{let t=be.navigator.userAgent;(t.indexOf(\"MSIE \")!==-1||t.indexOf(\"Trident/\")!==-1||t.indexOf(\"Edge/\")!==-1)&&(Le=!0)}catch{}return Le}function Je(t){return typeof t==\"function\"}function Ke(t){return typeof t==\"number\"}var pt={useG:!0},ne={},ot={},st=new RegExp(\"^\"+ve+\"(\\\\w+)(true|false)$\"),it=j(\"propagationStopped\");function ct(t,n){let a=(n?n(t):t)+le,e=(n?n(t):t)+ae,c=ve+a,f=ve+e;ne[t]={},ne[t][le]=c,ne[t][ae]=f}function vt(t,n,a,e){let c=e&&e.add||je,f=e&&e.rm||He,g=e&&e.listeners||\"eventListeners\",T=e&&e.rmAll||\"removeAllListeners\",y=j(c),w=\".\"+c+\":\",_=\"prependListener\",P=\".\"+_+\":\",L=function(p,d,A){if(p.isRemoved)return;let V=p.callback;typeof V==\"object\"&&V.handleEvent&&(p.callback=k=>V.handleEvent(k),p.originalDelegate=V);let X;try{p.invoke(p,d,[A])}catch(k){X=k}let F=p.options;if(F&&typeof F==\"object\"&&F.once){let k=p.originalDelegate?p.originalDelegate:p.callback;d[f].call(d,A.type,k,F)}return X};function H(p,d,A){if(d=d||t.event,!d)return;let V=p||d.target||t,X=V[ne[d.type][A?ae:le]];if(X){let F=[];if(X.length===1){let k=L(X[0],V,d);k&&F.push(k)}else{let k=X.slice();for(let U=0;U<k.length&&!(d&&d[it]===!0);U++){let S=L(k[U],V,d);S&&F.push(S)}}if(F.length===1)throw F[0];for(let k=0;k<F.length;k++){let U=F[k];n.nativeScheduleMicroTask(()=>{throw U})}}}let z=function(p){return H(this,p,!1)},$=function(p){return H(this,p,!0)};function J(p,d){if(!p)return!1;let A=!0;d&&d.useG!==void 0&&(A=d.useG);let V=d&&d.vh,X=!0;d&&d.chkDup!==void 0&&(X=d.chkDup);let F=!1;d&&d.rt!==void 0&&(F=d.rt);let k=p;for(;k&&!k.hasOwnProperty(c);)k=Ae(k);if(!k&&p[c]&&(k=p),!k||k[y])return!1;let U=d&&d.eventNameToString,S={},R=k[y]=k[c],b=k[j(f)]=k[f],D=k[j(g)]=k[g],K=k[j(T)]=k[T],W;d&&d.prepend&&(W=k[j(d.prepend)]=k[d.prepend]);function I(o,u){return u?typeof o==\"boolean\"?{capture:o,passive:!0}:o?typeof o==\"object\"&&o.passive!==!1?{...o,passive:!0}:o:{passive:!0}:o}let s=function(o){if(!S.isExisting)return R.call(S.target,S.eventName,S.capture?$:z,S.options)},i=function(o){if(!o.isRemoved){let u=ne[o.eventName],v;u&&(v=u[o.capture?ae:le]);let C=v&&o.target[v];if(C){for(let m=0;m<C.length;m++)if(C[m]===o){C.splice(m,1),o.isRemoved=!0,o.removeAbortListener&&(o.removeAbortListener(),o.removeAbortListener=null),C.length===0&&(o.allRemoved=!0,o.target[v]=null);break}}}if(o.allRemoved)return b.call(o.target,o.eventName,o.capture?$:z,o.options)},r=function(o){return R.call(S.target,S.eventName,o.invoke,S.options)},E=function(o){return W.call(S.target,S.eventName,o.invoke,S.options)},x=function(o){return b.call(o.target,o.eventName,o.invoke,o.options)},ee=A?s:r,M=A?i:x,he=function(o,u){let v=typeof u;return v===\"function\"&&o.callback===u||v===\"object\"&&o.originalDelegate===u},_e=d?.diff||he,Q=Zone[j(\"UNPATCHED_EVENTS\")],Te=t[j(\"PASSIVE_EVENTS\")];function h(o){if(typeof o==\"object\"&&o!==null){let u={...o};return o.signal&&(u.signal=o.signal),u}return o}let l=function(o,u,v,C,m=!1,O=!1){return function(){let N=this||t,Z=arguments[0];d&&d.transferEventName&&(Z=d.transferEventName(Z));let G=arguments[1];if(!G)return o.apply(this,arguments);if(De&&Z===\"uncaughtException\")return o.apply(this,arguments);let B=!1;if(typeof G!=\"function\"){if(!G.handleEvent)return o.apply(this,arguments);B=!0}if(V&&!V(o,G,N,arguments))return;let de=!!Te&&Te.indexOf(Z)!==-1,se=h(I(arguments[2],de)),Ee=se?.signal;if(Ee?.aborted)return;if(Q){for(let ie=0;ie<Q.length;ie++)if(Z===Q[ie])return de?o.call(N,Z,G,se):o.apply(this,arguments)}let Se=se?typeof se==\"boolean\"?!0:se.capture:!1,Be=se&&typeof se==\"object\"?se.once:!1,ft=Zone.current,Oe=ne[Z];Oe||(ct(Z,U),Oe=ne[Z]);let ze=Oe[Se?ae:le],ge=N[ze],Ue=!1;if(ge){if(Ue=!0,X){for(let ie=0;ie<ge.length;ie++)if(_e(ge[ie],G))return}}else ge=N[ze]=[];let Pe,We=N.constructor.name,qe=ot[We];qe&&(Pe=qe[Z]),Pe||(Pe=We+u+(U?U(Z):Z)),S.options=se,Be&&(S.options.once=!1),S.target=N,S.capture=Se,S.eventName=Z,S.isExisting=Ue;let me=A?pt:void 0;me&&(me.taskData=S),Ee&&(S.options.signal=void 0);let re=ft.scheduleEventTask(Pe,G,me,v,C);if(Ee){S.options.signal=Ee;let ie=()=>re.zone.cancelTask(re);o.call(Ee,\"abort\",ie,{once:!0}),re.removeAbortListener=()=>Ee.removeEventListener(\"abort\",ie)}if(S.target=null,me&&(me.taskData=null),Be&&(S.options.once=!0),typeof re.options!=\"boolean\"&&(re.options=se),re.target=N,re.capture=Se,re.eventName=Z,B&&(re.originalDelegate=G),O?ge.unshift(re):ge.push(re),m)return N}};return k[c]=l(R,w,ee,M,F),W&&(k[_]=l(W,P,E,M,F,!0)),k[f]=function(){let o=this||t,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=arguments[2],C=v?typeof v==\"boolean\"?!0:v.capture:!1,m=arguments[1];if(!m)return b.apply(this,arguments);if(V&&!V(b,m,o,arguments))return;let O=ne[u],N;O&&(N=O[C?ae:le]);let Z=N&&o[N];if(Z)for(let G=0;G<Z.length;G++){let B=Z[G];if(_e(B,m)){if(Z.splice(G,1),B.isRemoved=!0,Z.length===0&&(B.allRemoved=!0,o[N]=null,!C&&typeof u==\"string\")){let de=ve+\"ON_PROPERTY\"+u;o[de]=null}return B.zone.cancelTask(B),F?o:void 0}}return b.apply(this,arguments)},k[g]=function(){let o=this||t,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=[],C=at(o,U?U(u):u);for(let m=0;m<C.length;m++){let O=C[m],N=O.originalDelegate?O.originalDelegate:O.callback;v.push(N)}return v},k[T]=function(){let o=this||t,u=arguments[0];if(u){d&&d.transferEventName&&(u=d.transferEventName(u));let v=ne[u];if(v){let C=v[le],m=v[ae],O=o[C],N=o[m];if(O){let Z=O.slice();for(let G=0;G<Z.length;G++){let B=Z[G],de=B.originalDelegate?B.originalDelegate:B.callback;this[f].call(this,u,de,B.options)}}if(N){let Z=N.slice();for(let G=0;G<Z.length;G++){let B=Z[G],de=B.originalDelegate?B.originalDelegate:B.callback;this[f].call(this,u,de,B.options)}}}}else{let v=Object.keys(o);for(let C=0;C<v.length;C++){let m=v[C],O=st.exec(m),N=O&&O[1];N&&N!==\"removeListener\"&&this[T].call(this,N)}this[T].call(this,\"removeListener\")}if(F)return this},fe(k[c],R),fe(k[f],b),K&&fe(k[T],K),D&&fe(k[g],D),!0}let q=[];for(let p=0;p<a.length;p++)q[p]=J(a[p],e);return q}function at(t,n){if(!n){let f=[];for(let g in t){let T=st.exec(g),y=T&&T[1];if(y&&(!n||y===n)){let w=t[g];if(w)for(let _=0;_<w.length;_++)f.push(w[_])}}return f}let a=ne[n];a||(ct(n),a=ne[n]);let e=t[a[le]],c=t[a[ae]];return e?c?e.concat(c):e.slice():c?c.slice():[]}function bt(t,n){let a=t.Event;a&&a.prototype&&n.patchMethod(a.prototype,\"stopImmediatePropagation\",e=>function(c,f){c[it]=!0,e&&e.apply(c,f)})}function Pt(t,n){n.patchMethod(t,\"queueMicrotask\",a=>function(e,c){Zone.current.scheduleMicroTask(\"queueMicrotask\",c[0])})}var Re=j(\"zoneTask\");function ke(t,n,a,e){let c=null,f=null;n+=e,a+=e;let g={};function T(w){let _=w.data;_.args[0]=function(){return w.invoke.apply(this,arguments)};let P=c.apply(t,_.args);return Ke(P)?_.handleId=P:(_.handle=P,_.isRefreshable=Je(P.refresh)),w}function y(w){let{handle:_,handleId:P}=w.data;return f.call(t,_??P)}c=ue(t,n,w=>function(_,P){if(Je(P[0])){let L={isRefreshable:!1,isPeriodic:e===\"Interval\",delay:e===\"Timeout\"||e===\"Interval\"?P[1]||0:void 0,args:P},H=P[0];P[0]=function(){try{return H.apply(this,arguments)}finally{let{handle:A,handleId:V,isPeriodic:X,isRefreshable:F}=L;!X&&!F&&(V?delete g[V]:A&&(A[Re]=null))}};let z=xe(n,P[0],L,T,y);if(!z)return z;let{handleId:$,handle:J,isRefreshable:q,isPeriodic:p}=z.data;if($)g[$]=z;else if(J&&(J[Re]=z,q&&!p)){let d=J.refresh;J.refresh=function(){let{zone:A,state:V}=z;return V===\"notScheduled\"?(z._state=\"scheduled\",A._updateTaskCount(z,1)):V===\"running\"&&(z._state=\"scheduling\"),d.call(this)}}return J??$??z}else return w.apply(t,P)}),f=ue(t,a,w=>function(_,P){let L=P[0],H;Ke(L)?(H=g[L],delete g[L]):(H=L?.[Re],H?L[Re]=null:H=L),H?.type?H.cancelFn&&H.zone.cancelTask(H):w.apply(t,P)})}function Rt(t,n){let{isBrowser:a,isMix:e}=n.getGlobalObjects();if(!a&&!e||!t.customElements||!(\"customElements\"in t))return;let c=[\"connectedCallback\",\"disconnectedCallback\",\"adoptedCallback\",\"attributeChangedCallback\",\"formAssociatedCallback\",\"formDisabledCallback\",\"formResetCallback\",\"formStateRestoreCallback\"];n.patchCallbacks(n,t.customElements,\"customElements\",\"define\",c)}function Ct(t,n){if(Zone[n.symbol(\"patchEventTarget\")])return;let{eventNames:a,zoneSymbolEventNames:e,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:g}=n.getGlobalObjects();for(let y=0;y<a.length;y++){let w=a[y],_=w+f,P=w+c,L=g+_,H=g+P;e[w]={},e[w][f]=L,e[w][c]=H}let T=t.EventTarget;if(!(!T||!T.prototype))return n.patchEventTarget(t,n,[T&&T.prototype]),!0}function wt(t,n){n.patchEventPrototype(t,n)}function lt(t,n,a){if(!a||a.length===0)return n;let e=a.filter(f=>f.target===t);if(e.length===0)return n;let c=e[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function Qe(t,n,a,e){if(!t)return;let c=lt(t,n,a);rt(t,c,e)}function Ie(t){return Object.getOwnPropertyNames(t).filter(n=>n.startsWith(\"on\")&&n.length>2).map(n=>n.substring(2))}function Dt(t,n){if(De&&!nt||Zone[t.symbol(\"patchEvents\")])return;let a=n.__Zone_ignore_on_properties,e=[];if(Ge){let c=window;e=e.concat([\"Document\",\"SVGElement\",\"Element\",\"HTMLElement\",\"HTMLBodyElement\",\"HTMLMediaElement\",\"HTMLFrameSetElement\",\"HTMLFrameElement\",\"HTMLIFrameElement\",\"HTMLMarqueeElement\",\"Worker\"]);let f=[];Qe(c,Ie(c),a&&a.concat(f),Ae(c))}e=e.concat([\"XMLHttpRequest\",\"XMLHttpRequestEventTarget\",\"IDBIndex\",\"IDBRequest\",\"IDBOpenDBRequest\",\"IDBDatabase\",\"IDBTransaction\",\"IDBCursor\",\"WebSocket\"]);for(let c=0;c<e.length;c++){let f=n[e[c]];f?.prototype&&Qe(f.prototype,Ie(f.prototype),a)}}function St(t){t.__load_patch(\"legacy\",n=>{let a=n[t.__symbol__(\"legacyPatch\")];a&&a()}),t.__load_patch(\"timers\",n=>{let a=\"set\",e=\"clear\";ke(n,a,e,\"Timeout\"),ke(n,a,e,\"Interval\"),ke(n,a,e,\"Immediate\")}),t.__load_patch(\"requestAnimationFrame\",n=>{ke(n,\"request\",\"cancel\",\"AnimationFrame\"),ke(n,\"mozRequest\",\"mozCancel\",\"AnimationFrame\"),ke(n,\"webkitRequest\",\"webkitCancel\",\"AnimationFrame\")}),t.__load_patch(\"blocking\",(n,a)=>{let e=[\"alert\",\"prompt\",\"confirm\"];for(let c=0;c<e.length;c++){let f=e[c];ue(n,f,(g,T,y)=>function(w,_){return a.current.run(g,n,_,y)})}}),t.__load_patch(\"EventTarget\",(n,a,e)=>{wt(n,e),Ct(n,e);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&e.patchEventTarget(n,e,[c.prototype])}),t.__load_patch(\"MutationObserver\",(n,a,e)=>{ye(\"MutationObserver\"),ye(\"WebKitMutationObserver\")}),t.__load_patch(\"IntersectionObserver\",(n,a,e)=>{ye(\"IntersectionObserver\")}),t.__load_patch(\"FileReader\",(n,a,e)=>{ye(\"FileReader\")}),t.__load_patch(\"on_property\",(n,a,e)=>{Dt(e,n)}),t.__load_patch(\"customElements\",(n,a,e)=>{Rt(n,e)}),t.__load_patch(\"XHR\",(n,a)=>{w(n);let e=j(\"xhrTask\"),c=j(\"xhrSync\"),f=j(\"xhrListener\"),g=j(\"xhrScheduled\"),T=j(\"xhrURL\"),y=j(\"xhrErrorBeforeScheduled\");function w(_){let P=_.XMLHttpRequest;if(!P)return;let L=P.prototype;function H(R){return R[e]}let z=L[Ne],$=L[Ze];if(!z){let R=_.XMLHttpRequestEventTarget;if(R){let b=R.prototype;z=b[Ne],$=b[Ze]}}let J=\"readystatechange\",q=\"scheduled\";function p(R){let b=R.data,D=b.target;D[g]=!1,D[y]=!1;let K=D[f];z||(z=D[Ne],$=D[Ze]),K&&$.call(D,J,K);let W=D[f]=()=>{if(D.readyState===D.DONE)if(!b.aborted&&D[g]&&R.state===q){let s=D[a.__symbol__(\"loadfalse\")];if(D.status!==0&&s&&s.length>0){let i=R.invoke;R.invoke=function(){let r=D[a.__symbol__(\"loadfalse\")];for(let E=0;E<r.length;E++)r[E]===R&&r.splice(E,1);!b.aborted&&R.state===q&&i.call(R)},s.push(R)}else R.invoke()}else!b.aborted&&D[g]===!1&&(D[y]=!0)};return z.call(D,J,W),D[e]||(D[e]=R),U.apply(D,b.args),D[g]=!0,R}function d(){}function A(R){let b=R.data;return b.aborted=!0,S.apply(b.target,b.args)}let V=ue(L,\"open\",()=>function(R,b){return R[c]=b[2]==!1,R[T]=b[1],V.apply(R,b)}),X=\"XMLHttpRequest.send\",F=j(\"fetchTaskAborting\"),k=j(\"fetchTaskScheduling\"),U=ue(L,\"send\",()=>function(R,b){if(a.current[k]===!0||R[c])return U.apply(R,b);{let D={target:R,url:R[T],isPeriodic:!1,args:b,aborted:!1},K=xe(X,d,D,p,A);R&&R[y]===!0&&!D.aborted&&K.state===q&&K.invoke()}}),S=ue(L,\"abort\",()=>function(R,b){let D=H(R);if(D&&typeof D.type==\"string\"){if(D.cancelFn==null||D.data&&D.data.aborted)return;D.zone.cancelTask(D)}else if(a.current[F]===!0)return S.apply(R,b)})}}),t.__load_patch(\"geolocation\",n=>{n.navigator&&n.navigator.geolocation&&gt(n.navigator.geolocation,[\"getCurrentPosition\",\"watchPosition\"])}),t.__load_patch(\"PromiseRejectionEvent\",(n,a)=>{function e(c){return function(f){at(n,c).forEach(T=>{let y=n.PromiseRejectionEvent;if(y){let w=new y(c,{promise:f.promise,reason:f.rejection});T.invoke(w)}})}}n.PromiseRejectionEvent&&(a[j(\"unhandledPromiseRejectionHandler\")]=e(\"unhandledrejection\"),a[j(\"rejectionHandledHandler\")]=e(\"rejectionhandled\"))}),t.__load_patch(\"queueMicrotask\",(n,a,e)=>{Pt(n,e)})}function Ot(t){t.__load_patch(\"ZoneAwarePromise\",(n,a,e)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function g(h){if(h&&h.toString===Object.prototype.toString){let l=h.constructor&&h.constructor.name;return(l||\"\")+\": \"+JSON.stringify(h)}return h?h.toString():Object.prototype.toString.call(h)}let T=e.symbol,y=[],w=n[T(\"DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION\")]!==!1,_=T(\"Promise\"),P=T(\"then\"),L=\"__creationTrace__\";e.onUnhandledError=h=>{if(e.showUncaughtError()){let l=h&&h.rejection;l?console.error(\"Unhandled Promise rejection:\",l instanceof Error?l.message:l,\"; Zone:\",h.zone.name,\"; Task:\",h.task&&h.task.source,\"; Value:\",l,l instanceof Error?l.stack:void 0):console.error(h)}},e.microtaskDrainDone=()=>{for(;y.length;){let h=y.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){z(l)}}};let H=T(\"unhandledPromiseRejectionHandler\");function z(h){e.onUnhandledError(h);try{let l=a[H];typeof l==\"function\"&&l.call(this,h)}catch{}}function $(h){return h&&typeof h.then==\"function\"}function J(h){return h}function q(h){return M.reject(h)}let p=T(\"state\"),d=T(\"value\"),A=T(\"finally\"),V=T(\"parentPromiseValue\"),X=T(\"parentPromiseState\"),F=\"Promise.then\",k=null,U=!0,S=!1,R=0;function b(h,l){return o=>{try{I(h,l,o)}catch(u){I(h,!1,u)}}}let D=function(){let h=!1;return function(o){return function(){h||(h=!0,o.apply(null,arguments))}}},K=\"Promise resolved with itself\",W=T(\"currentTaskTrace\");function I(h,l,o){let u=D();if(h===o)throw new TypeError(K);if(h[p]===k){let v=null;try{(typeof o==\"object\"||typeof o==\"function\")&&(v=o&&o.then)}catch(C){return u(()=>{I(h,!1,C)})(),h}if(l!==S&&o instanceof M&&o.hasOwnProperty(p)&&o.hasOwnProperty(d)&&o[p]!==k)i(o),I(h,o[p],o[d]);else if(l!==S&&typeof v==\"function\")try{v.call(o,u(b(h,l)),u(b(h,!1)))}catch(C){u(()=>{I(h,!1,C)})()}else{h[p]=l;let C=h[d];if(h[d]=o,h[A]===A&&l===U&&(h[p]=h[X],h[d]=h[V]),l===S&&o instanceof Error){let m=a.currentTask&&a.currentTask.data&&a.currentTask.data[L];m&&f(o,W,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m<C.length;)r(h,C[m++],C[m++],C[m++],C[m++]);if(C.length==0&&l==S){h[p]=R;let m=o;try{throw new Error(\"Uncaught (in promise): \"+g(o)+(o&&o.stack?`\n`+o.stack:\"\"))}catch(O){m=O}w&&(m.throwOriginal=!0),m.rejection=o,m.promise=h,m.zone=a.current,m.task=a.currentTask,y.push(m),e.scheduleMicroTask()}}}return h}let s=T(\"rejectionHandledHandler\");function i(h){if(h[p]===R){try{let l=a[s];l&&typeof l==\"function\"&&l.call(this,{rejection:h[d],promise:h})}catch{}h[p]=S;for(let l=0;l<y.length;l++)h===y[l].promise&&y.splice(l,1)}}function r(h,l,o,u,v){i(h);let C=h[p],m=C?typeof u==\"function\"?u:J:typeof v==\"function\"?v:q;l.scheduleMicroTask(F,()=>{try{let O=h[d],N=!!o&&A===o[A];N&&(o[V]=O,o[X]=C);let Z=l.run(m,void 0,N&&m!==q&&m!==J?[]:[O]);I(o,!0,Z)}catch(O){I(o,!1,O)}},o)}let E=\"function ZoneAwarePromise() { [native code] }\",x=function(){},ee=n.AggregateError;class M{static toString(){return E}static resolve(l){return l instanceof M?l:I(new this(null),U,l)}static reject(l){return I(new this(null),S,l)}static withResolvers(){let l={};return l.promise=new M((o,u)=>{l.resolve=o,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!=\"function\")return Promise.reject(new ee([],\"All promises were rejected\"));let o=[],u=0;try{for(let m of l)u++,o.push(M.resolve(m))}catch{return Promise.reject(new ee([],\"All promises were rejected\"))}if(u===0)return Promise.reject(new ee([],\"All promises were rejected\"));let v=!1,C=[];return new M((m,O)=>{for(let N=0;N<o.length;N++)o[N].then(Z=>{v||(v=!0,m(Z))},Z=>{C.push(Z),u--,u===0&&(v=!0,O(new ee(C,\"All promises were rejected\")))})})}static race(l){let o,u,v=new this((O,N)=>{o=O,u=N});function C(O){o(O)}function m(O){u(O)}for(let O of l)$(O)||(O=this.resolve(O)),O.then(C,m);return v}static all(l){return M.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof M?this:M).allWithCallback(l,{thenCallback:u=>({status:\"fulfilled\",value:u}),errorCallback:u=>({status:\"rejected\",reason:u})})}static allWithCallback(l,o){let u,v,C=new this((Z,G)=>{u=Z,v=G}),m=2,O=0,N=[];for(let Z of l){$(Z)||(Z=this.resolve(Z));let G=O;try{Z.then(B=>{N[G]=o?o.thenCallback(B):B,m--,m===0&&u(N)},B=>{o?(N[G]=o.errorCallback(B),m--,m===0&&u(N)):v(B)})}catch(B){v(B)}m++,O++}return m-=2,m===0&&u(N),C}constructor(l){let o=this;if(!(o instanceof M))throw new Error(\"Must be an instanceof Promise.\");o[p]=k,o[d]=[];try{let u=D();l&&l(u(b(o,U)),u(b(o,S)))}catch(u){I(o,!1,u)}}get[Symbol.toStringTag](){return\"Promise\"}get[Symbol.species](){return M}then(l,o){let u=this.constructor?.[Symbol.species];(!u||typeof u!=\"function\")&&(u=this.constructor||M);let v=new u(x),C=a.current;return this[p]==k?this[d].push(C,v,l,o):r(this,C,v,l,o),v}catch(l){return this.then(null,l)}finally(l){let o=this.constructor?.[Symbol.species];(!o||typeof o!=\"function\")&&(o=M);let u=new o(x);u[A]=A;let v=a.current;return this[p]==k?this[d].push(v,u,l,l):r(this,v,u,l,l),u}}M.resolve=M.resolve,M.reject=M.reject,M.race=M.race,M.all=M.all;let he=n[_]=n.Promise;n.Promise=M;let _e=T(\"thenPatched\");function Q(h){let l=h.prototype,o=c(l,\"then\");if(o&&(o.writable===!1||!o.configurable))return;let u=l.then;l[P]=u,h.prototype.then=function(v,C){return new M((O,N)=>{u.call(this,O,N)}).then(v,C)},h[_e]=!0}e.patchThen=Q;function Te(h){return function(l,o){let u=h.apply(l,o);if(u instanceof M)return u;let v=u.constructor;return v[_e]||Q(v),u}}return he&&(Q(he),ue(n,\"fetch\",h=>Te(h))),Promise[a.__symbol__(\"uncaughtPromiseErrors\")]=y,M})}function Nt(t){t.__load_patch(\"toString\",n=>{let a=Function.prototype.toString,e=j(\"OriginalDelegate\"),c=j(\"Promise\"),f=j(\"Error\"),g=function(){if(typeof this==\"function\"){let _=this[e];if(_)return typeof _==\"function\"?a.call(_):Object.prototype.toString.call(_);if(this===Promise){let P=n[c];if(P)return a.call(P)}if(this===Error){let P=n[f];if(P)return a.call(P)}}return a.call(this)};g[e]=a,Function.prototype.toString=g;let T=Object.prototype.toString,y=\"[object Promise]\";Object.prototype.toString=function(){return typeof Promise==\"function\"&&this instanceof Promise?y:T.call(this)}})}function Zt(t,n,a,e,c){let f=Zone.__symbol__(e);if(n[f])return;let g=n[f]=n[e];n[e]=function(T,y,w){return y&&y.prototype&&c.forEach(function(_){let P=`${a}.${e}::`+_,L=y.prototype;try{if(L.hasOwnProperty(_)){let H=t.ObjectGetOwnPropertyDescriptor(L,_);H&&H.value?(H.value=t.wrapWithCurrentZone(H.value,P),t._redefineProperty(y.prototype,_,H)):L[_]&&(L[_]=t.wrapWithCurrentZone(L[_],P))}else L[_]&&(L[_]=t.wrapWithCurrentZone(L[_],P))}catch{}}),g.call(n,T,y,w)},t.attachOriginToPatched(n[e],g)}function Lt(t){t.__load_patch(\"util\",(n,a,e)=>{let c=Ie(n);e.patchOnProperties=rt,e.patchMethod=ue,e.bindArguments=Fe,e.patchMacroTask=mt;let f=a.__symbol__(\"BLACK_LISTED_EVENTS\"),g=a.__symbol__(\"UNPATCHED_EVENTS\");n[g]&&(n[f]=n[g]),n[f]&&(a[f]=a[g]=n[f]),e.patchEventPrototype=bt,e.patchEventTarget=vt,e.isIEOrEdge=yt,e.ObjectDefineProperty=Me,e.ObjectGetOwnPropertyDescriptor=pe,e.ObjectCreate=_t,e.ArraySlice=Tt,e.patchClass=ye,e.wrapWithCurrentZone=Ve,e.filterProperties=lt,e.attachOriginToPatched=fe,e._redefineProperty=Object.defineProperty,e.patchCallbacks=Zt,e.getGlobalObjects=()=>({globalSources:ot,zoneSymbolEventNames:ne,eventNames:c,isBrowser:Ge,isMix:nt,isNode:De,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:ve,ADD_EVENT_LISTENER_STR:je,REMOVE_EVENT_LISTENER_STR:He})})}function It(t){Ot(t),Nt(t),Lt(t)}var ut=dt();It(ut);St(ut);\n"
  },
  {
    "path": "API/wwwroot/prerendered-routes.json",
    "content": "{\n  \"routes\": {}\n}"
  },
  {
    "path": "API/wwwroot/styles-COVWXBF4.css",
    "content": "html{--mat-sys-background: #faf9fd;--mat-sys-error: #ba1a1a;--mat-sys-error-container: #ffdad6;--mat-sys-inverse-on-surface: #f2f0f4;--mat-sys-inverse-primary: #abc7ff;--mat-sys-inverse-surface: #2f3033;--mat-sys-on-background: #1a1b1f;--mat-sys-on-error: #ffffff;--mat-sys-on-error-container: #93000a;--mat-sys-on-primary: #ffffff;--mat-sys-on-primary-container: #00458f;--mat-sys-on-primary-fixed: #001b3f;--mat-sys-on-primary-fixed-variant: #00458f;--mat-sys-on-secondary: #ffffff;--mat-sys-on-secondary-container: #3e4759;--mat-sys-on-secondary-fixed: #131c2b;--mat-sys-on-secondary-fixed-variant: #3e4759;--mat-sys-on-surface: #1a1b1f;--mat-sys-on-surface-variant: #44474e;--mat-sys-on-tertiary: #ffffff;--mat-sys-on-tertiary-container: #0000ef;--mat-sys-on-tertiary-fixed: #00006e;--mat-sys-on-tertiary-fixed-variant: #0000ef;--mat-sys-outline: #74777f;--mat-sys-outline-variant: #c4c6d0;--mat-sys-primary: #005cbb;--mat-sys-primary-container: #d7e3ff;--mat-sys-primary-fixed: #d7e3ff;--mat-sys-primary-fixed-dim: #abc7ff;--mat-sys-scrim: #000000;--mat-sys-secondary: #565e71;--mat-sys-secondary-container: #dae2f9;--mat-sys-secondary-fixed: #dae2f9;--mat-sys-secondary-fixed-dim: #bec6dc;--mat-sys-shadow: #000000;--mat-sys-surface: #faf9fd;--mat-sys-surface-bright: #faf9fd;--mat-sys-surface-container: #efedf0;--mat-sys-surface-container-high: #e9e7eb;--mat-sys-surface-container-highest: #e3e2e6;--mat-sys-surface-container-low: #f4f3f6;--mat-sys-surface-container-lowest: #ffffff;--mat-sys-surface-dim: #dbd9dd;--mat-sys-surface-tint: #005cbb;--mat-sys-surface-variant: #e0e2ec;--mat-sys-tertiary: #343dff;--mat-sys-tertiary-container: #e0e0ff;--mat-sys-tertiary-fixed: #e0e0ff;--mat-sys-tertiary-fixed-dim: #bec2ff;--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Roboto;--mat-sys-body-large-font: Roboto;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Roboto;--mat-sys-body-medium-font: Roboto;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Roboto;--mat-sys-body-small-font: Roboto;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Roboto;--mat-sys-display-large-font: Roboto;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Roboto;--mat-sys-display-medium-font: Roboto;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Roboto;--mat-sys-display-small-font: Roboto;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Roboto;--mat-sys-headline-large-font: Roboto;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Roboto;--mat-sys-headline-medium-font: Roboto;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Roboto;--mat-sys-headline-small-font: Roboto;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Roboto;--mat-sys-label-large-font: Roboto;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Roboto;--mat-sys-label-medium-font: Roboto;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Roboto;--mat-sys-label-small-font: Roboto;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Roboto;--mat-sys-title-large-font: Roboto;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Roboto;--mat-sys-title-medium-font: Roboto;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Roboto;--mat-sys-title-small-font: Roboto;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-red-100: oklch(93.6% .032 17.717);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-cyan-500: oklch(71.5% .143 215.221);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-purple-100: oklch(94.6% .033 307.174);--color-purple-700: oklch(49.6% .265 301.924);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-white: #fff;--spacing: .25rem;--breakpoint-lg: 64rem;--breakpoint-xl: 80rem;--breakpoint-2xl: 96rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-4xl: 56rem;--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--text-6xl: 3.75rem;--text-6xl--line-height: 1;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--radius-lg: .5rem;--radius-2xl: 1rem;--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.absolute{position:absolute!important}.fixed{position:fixed!important}.relative{position:relative!important}.inset-0{inset:calc(var(--spacing) * 0)!important}.inset-y-0{inset-block:calc(var(--spacing) * 0)!important}.top-0{top:calc(var(--spacing) * 0)!important}.top-2{top:calc(var(--spacing) * 2)!important}.top-20{top:calc(var(--spacing) * 20)!important}.right-8{right:calc(var(--spacing) * 8)!important}.z-0{z-index:0!important}.z-50{z-index:50!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.container{width:100%!important}@media (width >= 40rem){.container{max-width:40rem!important}}@media (width >= 48rem){.container{max-width:48rem!important}}@media (width >= 64rem){.container{max-width:64rem!important}}@media (width >= 80rem){.container{max-width:80rem!important}}@media (width >= 96rem){.container{max-width:96rem!important}}.mx-4{margin-inline:calc(var(--spacing) * 4)!important}.mx-auto{margin-inline:auto!important}.my-2{margin-block:calc(var(--spacing) * 2)!important}.my-6{margin-block:calc(var(--spacing) * 6)!important}.mt-1{margin-top:calc(var(--spacing) * 1)!important}.mt-2{margin-top:calc(var(--spacing) * 2)!important}.mt-4{margin-top:calc(var(--spacing) * 4)!important}.mt-5{margin-top:calc(var(--spacing) * 5)!important}.mt-6{margin-top:calc(var(--spacing) * 6)!important}.mt-8{margin-top:calc(var(--spacing) * 8)!important}.mt-20{margin-top:calc(var(--spacing) * 20)!important}.mt-24{margin-top:calc(var(--spacing) * 24)!important}.mt-32{margin-top:calc(var(--spacing) * 32)!important}.mr-2{margin-right:calc(var(--spacing) * 2)!important}.mb-1{margin-bottom:calc(var(--spacing) * 1)!important}.mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.mb-3{margin-bottom:calc(var(--spacing) * 3)!important}.mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.mb-6{margin-bottom:calc(var(--spacing) * 6)!important}.mb-8{margin-bottom:calc(var(--spacing) * 8)!important}.ml-5{margin-left:calc(var(--spacing) * 5)!important}.block{display:block!important}.flex{display:flex!important}.grid{display:grid!important}.h-10{height:calc(var(--spacing) * 10)!important}.h-20{height:calc(var(--spacing) * 20)!important}.h-full{height:100%!important}.h-screen{height:100vh!important}.max-h-16{max-height:calc(var(--spacing) * 16)!important}.max-h-20{max-height:calc(var(--spacing) * 20)!important}.min-h-96{min-height:calc(var(--spacing) * 96)!important}.w-1\\/2{width:50%!important}.w-1\\/4{width:25%!important}.w-3\\/4{width:75%!important}.w-10{width:calc(var(--spacing) * 10)!important}.w-20{width:calc(var(--spacing) * 20)!important}.w-32{width:calc(var(--spacing) * 32)!important}.w-full{width:100%!important}.max-w-2xl{max-width:var(--container-2xl)!important}.max-w-4xl{max-width:var(--container-4xl)!important}.max-w-lg{max-width:var(--container-lg)!important}.max-w-md{max-width:var(--container-md)!important}.max-w-screen-2xl{max-width:var(--breakpoint-2xl)!important}.max-w-screen-lg{max-width:var(--breakpoint-lg)!important}.max-w-screen-xl{max-width:var(--breakpoint-xl)!important}.max-w-xl{max-width:var(--container-xl)!important}.min-w-full{min-width:100%!important}.flex-1{flex:1!important}.shrink{flex-shrink:1!important}.cursor-pointer{cursor:pointer!important}.list-decimal{list-style-type:decimal!important}.list-disc{list-style-type:disc!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))!important}.flex-col{flex-direction:column!important}.flex-row{flex-direction:row!important}.items-center{align-items:center!important}.items-start{align-items:flex-start!important}.justify-between{justify-content:space-between!important}.justify-center{justify-content:center!important}.justify-end{justify-content:flex-end!important}.gap-2{gap:calc(var(--spacing) * 2)!important}.gap-3{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)!important}.gap-6{gap:calc(var(--spacing) * 6)!important}.gap-8{gap:calc(var(--spacing) * 8)!important}.gap-16{gap:calc(var(--spacing) * 16)!important}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0 !important;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse))!important;margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))!important}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0 !important;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse))!important;margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))!important}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0 !important;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse))!important;margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))!important}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse: 0 !important;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse))!important;margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))!important}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse: 0 !important;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse))!important;margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))!important}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse: 0 !important;border-bottom-style:var(--tw-border-style)!important;border-top-style:var(--tw-border-style)!important;border-top-width:calc(1px * var(--tw-divide-y-reverse))!important;border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))!important}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)!important}.rounded{border-radius:.25rem!important}.rounded-2xl{border-radius:var(--radius-2xl)!important}.rounded-lg{border-radius:var(--radius-lg)!important}.rounded-t-lg{border-top-left-radius:var(--radius-lg)!important;border-top-right-radius:var(--radius-lg)!important}.border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border-y{border-block-style:var(--tw-border-style)!important;border-block-width:1px!important}.border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-gray-100{border-color:var(--color-gray-100)!important}.border-gray-200{border-color:var(--color-gray-200)!important}.border-gray-300{border-color:var(--color-gray-300)!important}.border-transparent{border-color:transparent!important}.bg-gray-50{background-color:var(--color-gray-50)!important}.bg-gray-100{background-color:var(--color-gray-100)!important}.bg-red-100{background-color:var(--color-red-100)!important}.bg-white{background-color:var(--color-white)!important}.bg-gradient-to-r{--tw-gradient-position: to right in oklab !important;background-image:linear-gradient(var(--tw-gradient-stops))!important}.from-blue-600{--tw-gradient-from: var(--color-blue-600) !important;--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)) !important}.to-cyan-500{--tw-gradient-to: var(--color-cyan-500) !important;--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)) !important}.object-cover{object-fit:cover!important}.p-2{padding:calc(var(--spacing) * 2)!important}.p-3{padding:calc(var(--spacing) * 3)!important}.p-4{padding:calc(var(--spacing) * 4)!important}.p-6{padding:calc(var(--spacing) * 6)!important}.p-8{padding:calc(var(--spacing) * 8)!important}.px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-4{padding-inline:calc(var(--spacing) * 4)!important}.px-6{padding-inline:calc(var(--spacing) * 6)!important}.px-8{padding-inline:calc(var(--spacing) * 8)!important}.px-10{padding-inline:calc(var(--spacing) * 10)!important}.py-2{padding-block:calc(var(--spacing) * 2)!important}.py-3{padding-block:calc(var(--spacing) * 3)!important}.py-4{padding-block:calc(var(--spacing) * 4)!important}.py-8{padding-block:calc(var(--spacing) * 8)!important}.py-12{padding-block:calc(var(--spacing) * 12)!important}.py-16{padding-block:calc(var(--spacing) * 16)!important}.pt-2{padding-top:calc(var(--spacing) * 2)!important}.pt-6{padding-top:calc(var(--spacing) * 6)!important}.pl-3{padding-left:calc(var(--spacing) * 3)!important}.text-center{text-align:center!important}.text-end{text-align:end!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.align-middle{vertical-align:middle!important}.text-2xl{font-size:var(--text-2xl)!important;line-height:var(--tw-leading, var(--text-2xl--line-height))!important}.text-3xl{font-size:var(--text-3xl)!important;line-height:var(--tw-leading, var(--text-3xl--line-height))!important}.text-4xl{font-size:var(--text-4xl)!important;line-height:var(--tw-leading, var(--text-4xl--line-height))!important}.text-6xl{font-size:var(--text-6xl)!important;line-height:var(--tw-leading, var(--text-6xl--line-height))!important}.text-lg{font-size:var(--text-lg)!important;line-height:var(--tw-leading, var(--text-lg--line-height))!important}.text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading, var(--text-sm--line-height))!important}.text-xl{font-size:var(--text-xl)!important;line-height:var(--tw-leading, var(--text-xl--line-height))!important}.font-bold{--tw-font-weight: var(--font-weight-bold) !important;font-weight:var(--font-weight-bold)!important}.font-extrabold{--tw-font-weight: var(--font-weight-extrabold) !important;font-weight:var(--font-weight-extrabold)!important}.font-light{--tw-font-weight: var(--font-weight-light) !important;font-weight:var(--font-weight-light)!important}.font-medium{--tw-font-weight: var(--font-weight-medium) !important;font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight: var(--font-weight-normal) !important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight: var(--font-weight-semibold) !important;font-weight:var(--font-weight-semibold)!important}.whitespace-pre-wrap{white-space:pre-wrap!important}.text-blue-600{color:var(--color-blue-600)!important}.text-gray-500{color:var(--color-gray-500)!important}.text-gray-600{color:var(--color-gray-600)!important}.text-gray-800{color:var(--color-gray-800)!important}.text-gray-900{color:var(--color-gray-900)!important}.text-green-500{color:var(--color-green-500)!important}.text-green-600{color:var(--color-green-600)!important}.text-purple-700{color:var(--color-purple-700)!important}.text-red-500{color:var(--color-red-500)!important}.text-red-600{color:var(--color-red-600)!important}.text-red-700{color:var(--color-red-700)!important}.text-red-800{color:var(--color-red-800)!important}.text-white{color:var(--color-white)!important}.uppercase{text-transform:uppercase!important}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1)) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1)) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1)) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.outline{outline-style:var(--tw-outline-style)!important;outline-width:1px!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}@media (hover: hover){.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)!important}}@media (hover: hover){.hover\\:bg-purple-100:hover{background-color:var(--color-purple-100)!important}}.focus\\:border-blue-500:focus{border-color:var(--color-blue-500)!important}.focus\\:ring-blue-500:focus{--tw-ring-color: var(--color-blue-500) !important}@media (width >= 40rem){.sm\\:mt-8{margin-top:calc(var(--spacing) * 8)!important}}@media (width >= 64rem){.lg\\:mt-0{margin-top:calc(var(--spacing) * 0)!important}}}.container{margin-inline:auto!important;max-width:var(--breakpoint-2xl)!important}.text-primary{color:var(--color-blue-700)!important}@layer base{button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}}@property --tw-space-y-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: \"*\"; inherits: false;}@property --tw-gradient-from{syntax: \"<color>\"; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: \"<color>\"; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: \"<color>\"; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: \"*\"; inherits: false;}@property --tw-gradient-via-stops{syntax: \"*\"; inherits: false;}@property --tw-gradient-from-position{syntax: \"<length-percentage>\"; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: \"<length-percentage>\"; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: \"<length-percentage>\"; inherits: false; initial-value: 100%;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: \"*\"; inherits: false;}@property --tw-brightness{syntax: \"*\"; inherits: false;}@property --tw-contrast{syntax: \"*\"; inherits: false;}@property --tw-grayscale{syntax: \"*\"; inherits: false;}@property --tw-hue-rotate{syntax: \"*\"; inherits: false;}@property --tw-invert{syntax: \"*\"; inherits: false;}@property --tw-opacity{syntax: \"*\"; inherits: false;}@property --tw-saturate{syntax: \"*\"; inherits: false;}@property --tw-sepia{syntax: \"*\"; inherits: false;}@property --tw-drop-shadow{syntax: \"*\"; inherits: false;}@property --tw-drop-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial}}}:root{--mat-button-filled-container-shape: 6px;--mat-button-outlined-container-shape: 6px;--mat-badge-background-color: blue}.match-input-height{height:var(--mat-form-field-container-height)!important}.mdc-notched-outline__notch{border-right-style:none!important}.snack-error{--mat-snack-bar-button-color: white;--mat-snack-bar-container-color: red;--mat-snack-bar-supporting-text-color: white}.snack-success{--mat-snack-bar-button-color: white;--mat-snack-bar-container-color: green;--mat-snack-bar-supporting-text-color: white}\n"
  },
  {
    "path": "Core/Core.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net9.0</TargetFramework>\n    <ImplicitUsings>enable</ImplicitUsings>\n    <Nullable>enable</Nullable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.Extensions.Identity.Stores\" Version=\"9.0.6\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "Core/Entities/Address.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class Address : BaseEntity\n{\n    public required string Line1 { get; set; }\n    public string? Line2 { get; set; }\n    public required string City { get; set; }\n    public required string State { get; set; }\n    public required string PostalCode { get; set; }\n    public required string Country { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/AppCoupon.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class AppCoupon\n{\n    public required string Name { get; set; }\n    public decimal? AmountOff { get; set; }\n    public decimal? PercentOff { get; set; }\n    public required string PromotionCode { get; set; }\n    public required string CouponId { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/AppUser.cs",
    "content": "using System;\nusing Microsoft.AspNetCore.Identity;\n\nnamespace Core.Entities;\n\npublic class AppUser : IdentityUser\n{\n    public string? FirstName { get; set; }\n    public string? LastName { get; set; }\n\n    public Address? Address { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/BaseEntity.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class BaseEntity\n{\n    public int Id { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/CartItem.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class CartItem\n{\n    public int ProductId { get; set; }\n    public required string ProductName { get; set; }\n    public decimal Price { get; set; }\n    public int Quantity { get; set; }\n    public required string PictureUrl { get; set; }\n    public required string Brand { get; set; }\n    public required string Type { get; set; }\n}"
  },
  {
    "path": "Core/Entities/DeliveryMethod.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class DeliveryMethod : BaseEntity\n{\n    public required string ShortName { get; set; }\n    public required string DeliveryTime { get; set; }\n    public required string Description { get; set; }\n    public decimal Price { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/OrderAggregate/Order.cs",
    "content": "using System;\nusing Core.Interfaces;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class Order : BaseEntity, IDtoConvertible\n{\n    public DateTime OrderDate { get; set; } = DateTime.UtcNow;\n    public required string BuyerEmail { get; set; }\n    public ShippingAddress ShippingAddress { get; set; } = null!;\n    public DeliveryMethod DeliveryMethod { get; set; } = null!;\n    public PaymentSummary PaymentSummary { get; set; } = null!;\n    public List<OrderItem> OrderItems { get; set; } = [];\n    public decimal Subtotal { get; set; }\n    public decimal Discount { get; set; }\n    public OrderStatus Status { get; set; } = OrderStatus.Pending;\n    public required string PaymentIntentId { get; set; }\n\n    public decimal GetTotal() \n    {\n        return Subtotal - Discount + DeliveryMethod.Price;\n    }\n}\n"
  },
  {
    "path": "Core/Entities/OrderAggregate/OrderItem.cs",
    "content": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class OrderItem : BaseEntity\n{\n    public ProductItemOrdered ItemOrdered { get; set; } = null!;\n    public decimal Price { get; set; }\n    public int Quantity { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/OrderAggregate/OrderStatus.cs",
    "content": "using System.Runtime.Serialization;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic enum OrderStatus\n{\n    Pending,\n    PaymentReceived,\n    PaymentFailed,\n    PaymentMismatch,\n    Refunded\n}"
  },
  {
    "path": "Core/Entities/OrderAggregate/PaymentSummary.cs",
    "content": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class PaymentSummary\n{\n    public int Last4 { get; set; }\n    public required string Brand { get; set; }\n    public int ExpMonth { get; set; }\n    public int ExpYear { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/OrderAggregate/ProductItemOrdered.cs",
    "content": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class ProductItemOrdered\n{\n    public int ProductId { get; set; }\n    public required string ProductName { get; set; }\n    public required string PictureUrl { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/OrderAggregate/ShippingAddress.cs",
    "content": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class ShippingAddress\n{\n    public required string Name { get; set; }\n    public required string Line1 { get; set; }\n    public string? Line2 { get; set; }\n    public required string City { get; set; }\n    public required string State { get; set; }\n    public required string PostalCode { get; set; }\n    public required string Country { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/Product.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class Product : BaseEntity\n{\n    public required string Name { get; set; }\n    public required string Description { get; set; }\n    public decimal Price { get; set; }\n    public required string PictureUrl { get; set; }\n    public required string Type { get; set; }\n    public required string Brand { get; set; }\n    public int QuantityInStock { get; set; }\n}\n"
  },
  {
    "path": "Core/Entities/ShoppingCart.cs",
    "content": "using System;\n\nnamespace Core.Entities;\n\npublic class ShoppingCart\n{\n    public required string Id { get; set; }\n    public List<CartItem> Items { get; set; } = [];\n    public int? DeliveryMethodId { get; set; }\n    public string? ClientSecret { get; set; }\n    public string? PaymentIntentId { get; set; }\n    public AppCoupon? Coupon { get; set; }\n}"
  },
  {
    "path": "Core/Interfaces/ICartService.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface ICartService\n{\n    Task<ShoppingCart?> GetCartAsync(string key);\n    Task<ShoppingCart?> SetCartAsync(ShoppingCart cart);\n    Task<bool> DeleteCartAsync(string key); \n}\n"
  },
  {
    "path": "Core/Interfaces/ICouponService.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface ICouponService\n{\n    Task<AppCoupon?> GetCouponFromPromoCode(string code);\n}\n"
  },
  {
    "path": "Core/Interfaces/IDtoConvertible.cs",
    "content": "using System;\n\nnamespace Core.Interfaces;\n\npublic interface IDtoConvertible\n{\n\n}\n"
  },
  {
    "path": "Core/Interfaces/IGenericRepository.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IGenericRepository<T> where T : BaseEntity\n{\n    Task<T?> GetByIdAsync(int id);\n    Task<IReadOnlyList<T>> ListAllAsync();\n    Task<T?> GetEntityWithSpec(ISpecification<T> spec);\n    Task<IReadOnlyList<T>> ListAsync(ISpecification<T> spec);\n    Task<TResult?> GetEntityWithSpec<TResult>(ISpecification<T, TResult> spec);\n    Task<IReadOnlyList<TResult>> ListAsync<TResult>(ISpecification<T, TResult> spec);\n    void Add(T entity);\n    void Update(T entity);\n    void Remove(T entity);\n    bool Exists(int id);\n    Task<int> CountAsync(ISpecification<T> spec);\n}"
  },
  {
    "path": "Core/Interfaces/IPaymentService.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IPaymentService\n{\n    Task<ShoppingCart?> CreateOrUpdatePaymentIntent(string cartId);\n    Task<string> RefundPayment(string paymentIntentId);\n}\n"
  },
  {
    "path": "Core/Interfaces/IProductRepository.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IProductRepository\n{\n    \n    Task<IReadOnlyList<Product>> GetProductsAsync(string? brand, string? type, string? sort);\n    Task<Product?> GetProductByIdAsync(int id);\n    Task<IReadOnlyList<string>> GetBrandsAsync();\n    Task<IReadOnlyList<string>> GetTypesAsync();\n    void AddProduct(Product product);\n    void UpdateProduct(Product product);\n    void DeleteProduct(Product product);\n    bool ProductExists(int id);\n    Task<bool> SaveChangesAsync();\n}\n"
  },
  {
    "path": "Core/Interfaces/IResponseCacheService.cs",
    "content": "using System;\n\nnamespace Core.Interfaces;\n\npublic interface IResponseCacheService\n{\n    Task CacheResponseAsync(string cacheKey, object response, TimeSpan timeToLive);\n    Task<string?> GetCachedResponseAsync(string cacheKey);\n    Task RemoveCacheByPattern(string pattern);\n}\n"
  },
  {
    "path": "Core/Interfaces/ISpecification.cs",
    "content": "using System;\nusing System.Linq.Expressions;\n\nnamespace Core.Interfaces;\n\npublic interface ISpecification<T>\n{\n    Expression<Func<T, bool>>? Criteria { get; }\n    Expression<Func<T, object>>? OrderBy { get; }\n    Expression<Func<T, object>>? OrderByDescending { get; }\n    List<Expression<Func<T, object>>> Includes { get; }\n    List<string> IncludeStrings { get; } // For ThenInclude\n    bool IsDistinct { get; }\n    int Take { get; }\n    int Skip { get; }\n    bool IsPagingEnabled { get; }\n    IQueryable<T> ApplyCriteria(IQueryable<T> query);\n}\n\npublic interface ISpecification<T, TResult> : ISpecification<T>\n{\n    Expression<Func<T, TResult>>? Select { get; }\n}"
  },
  {
    "path": "Core/Interfaces/IUnitOfWork.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IUnitOfWork : IDisposable\n{\n    IGenericRepository<TEntity> Repository<TEntity>() where TEntity : BaseEntity;\n    Task<bool> Complete();\n}\n"
  },
  {
    "path": "Core/Specifications/BaseSpecification.cs",
    "content": "using System;\nusing System.Linq.Expressions;\nusing Core.Interfaces;\n\nnamespace Core.Specifications;\n\npublic class BaseSpecification<T>(Expression<Func<T, bool>>? criteria) : ISpecification<T>\n{\n    protected BaseSpecification() : this(null) { }\n\n    public Expression<Func<T, bool>>? Criteria => criteria;\n\n    public Expression<Func<T, object>>? OrderBy { get; private set; }\n\n    public Expression<Func<T, object>>? OrderByDescending { get; private set; }\n    public List<Expression<Func<T, object>>> Includes { get; } = [];\n    public List<string> IncludeStrings { get; } = []; // For ThenInclude\n\n    public bool IsDistinct { get; private set; }\n    public int Take { get; private set; }\n    public int Skip { get; private set; }\n    public bool IsPagingEnabled { get; private set; }\n\n    public IQueryable<T> ApplyCriteria(IQueryable<T> query)\n    {\n        if (Criteria != null)\n        {\n            query = query.Where(Criteria);\n        }\n\n        return query;\n    }\n\n    protected void AddInclude(Expression<Func<T, object>> includeExpression)\n    {\n        Includes.Add(includeExpression);\n    }\n\n    protected void AddInclude(string includeString)\n    {\n        IncludeStrings.Add(includeString); // For ThenInclude\n    }\n\n    protected void AddOrderBy(Expression<Func<T, object>> orderByExpression)\n    {\n        OrderBy = orderByExpression ?? throw new ArgumentNullException(nameof(orderByExpression));\n    }\n\n    protected void AddOrderByDescending(Expression<Func<T, object>> orderByDescExpression)\n    {\n        OrderByDescending = orderByDescExpression ?? throw new ArgumentNullException(nameof(orderByDescExpression));\n    }\n\n    protected void ApplyDistinct()\n    {\n        IsDistinct = true;\n    }\n\n    protected void ApplyPaging(int skip, int take)\n    {\n        Skip = skip;\n        Take = take;\n        IsPagingEnabled = true;\n    }\n}\n\npublic class BaseSpecification<T, TResult>(Expression<Func<T, bool>>? criteria)\n    : BaseSpecification<T>(criteria), ISpecification<T, TResult>\n{\n    protected BaseSpecification() : this(null) { }\n    public Expression<Func<T, TResult>>? Select { get; private set; }\n\n    protected void AddSelect(Expression<Func<T, TResult>> selectExpression)\n    {\n        Select = selectExpression;\n    }\n}"
  },
  {
    "path": "Core/Specifications/BrandListSpecification.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Specifications;\n\npublic class BrandListSpecification : BaseSpecification<Product, string>\n{\n    public BrandListSpecification()\n    {\n        AddSelect(x => x.Brand);\n        ApplyDistinct();\n    }\n}\n"
  },
  {
    "path": "Core/Specifications/OrderSpecParams.cs",
    "content": "using System;\n\nnamespace Core.Specifications;\n\npublic class OrderSpecParams : PagingParams\n{\n    public string? Status { get; set; }\n}\n"
  },
  {
    "path": "Core/Specifications/OrderSpecification.cs",
    "content": "using System;\nusing Core.Entities.OrderAggregate;\n\nnamespace Core.Specifications;\n\npublic class OrderSpecification : BaseSpecification<Order>\n{\n    public OrderSpecification(string email) : base(x => x.BuyerEmail == email)\n    {\n        AddInclude(x => x.DeliveryMethod);\n        AddInclude(x => x.OrderItems);\n        AddOrderByDescending(x => x.OrderDate);\n    }\n\n    public OrderSpecification(string email, int id) : base(x => x.BuyerEmail == email && x.Id == id)\n    {\n        AddInclude(\"OrderItems\");\n        AddInclude(\"DeliveryMethod\");\n    }\n\n    public OrderSpecification(string paymentIntentId, bool isPaymentIntent) : base(x => x.PaymentIntentId == paymentIntentId)\n    {\n        AddInclude(\"OrderItems\");\n        AddInclude(\"DeliveryMethod\");\n    }\n\n     public OrderSpecification(OrderSpecParams specParams) : base(x =>\n        string.IsNullOrEmpty(specParams.Status)|| \n            x.Status == ParseStatus(specParams.Status)\n    )\n    {\n        AddInclude(x => x.OrderItems);\n        AddInclude(x => x.DeliveryMethod);\n        ApplyPaging(specParams.PageSize * (specParams.PageIndex - 1), specParams.PageSize);\n        AddOrderByDescending(x => x.OrderDate);\n    }\n\n    public OrderSpecification(int id) : base(x => x.Id == id)\n    {\n        AddInclude(\"OrderItems\");\n        AddInclude(\"DeliveryMethod\");\n    }\n\n    private static OrderStatus? ParseStatus(string status)\n    {\n        if (Enum.TryParse<OrderStatus>(status, true, out var result)) return result;\n        return null;\n    }\n}\n"
  },
  {
    "path": "Core/Specifications/PagingParams.cs",
    "content": "using System;\n\nnamespace Core.Specifications;\n\npublic class PagingParams\n{\n    private const int MaxPageSize = 50;\n    public int PageIndex { get; set; } = 1;\n\n    private int _pageSize = 6;\n    public int PageSize\n    {\n        get => _pageSize;\n        set => _pageSize = (value > MaxPageSize) ? MaxPageSize : value;\n    }\n}\n"
  },
  {
    "path": "Core/Specifications/ProductSpecParams.cs",
    "content": "using System;\n\nnamespace Core.Specifications;\n\npublic class ProductSpecParams : PagingParams\n{\n\n    private List<string> _brands = [];\n    public List<string> Brands\n    {\n        get => _brands;\n        set\n        {\n            _brands = value.SelectMany(b => b.Split(',',\n                StringSplitOptions.RemoveEmptyEntries)).ToList();\n        }\n    }\n\n    private List<string> _types = [];\n    public List<string> Types\n    {\n        get => _types;\n        set\n        {\n            _types = value.SelectMany(b => b.Split(',',\n                StringSplitOptions.RemoveEmptyEntries)).ToList();\n        }\n    }\n    public string? Sort { get; set; }\n    \n    private string? _search;\n    public string Search\n    {\n        get => _search ?? \"\";\n        set => _search = value.ToLower();\n    }\n}\n"
  },
  {
    "path": "Core/Specifications/ProductSpecification.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Specifications;\n\npublic class ProductSpecification : BaseSpecification<Product>\n{\n    public ProductSpecification(ProductSpecParams productParams)\n        : base(x =>\n            (string.IsNullOrEmpty(productParams.Search)\n                || x.Name.ToLower().Contains(productParams.Search)) &&\n            (!productParams.Brands.Any() || productParams.Brands.Contains(x.Brand)) &&\n            (!productParams.Types.Any() || productParams.Types.Contains(x.Type)))\n    {\n        ApplyPaging(productParams.PageSize * (productParams.PageIndex - 1), productParams.PageSize);\n\n        switch (productParams.Sort)\n        {\n            case \"priceAsc\":\n                AddOrderBy(x => x.Price);\n                break;\n            case \"priceDesc\":\n                AddOrderByDescending(x => x.Price);\n                break;\n            default:\n                AddOrderBy(x => x.Name);\n                break;\n        }\n    }\n}"
  },
  {
    "path": "Core/Specifications/TypeListSpecification.cs",
    "content": "using System;\nusing Core.Entities;\n\nnamespace Core.Specifications;\n\npublic class TypeListSpecification : BaseSpecification<Product, string>\n{\n    public TypeListSpecification()\n    {\n        AddSelect(x => x.Type);\n        ApplyDistinct();\n    }\n}"
  },
  {
    "path": "Infrastructure/Config/DeliveryMethodConfiguration.cs",
    "content": "using System;\nusing Core.Entities;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\nnamespace Infrastructure.Config;\n\npublic class DeliveryMethodConfiguration : IEntityTypeConfiguration<DeliveryMethod>\n{\n    public void Configure(EntityTypeBuilder<DeliveryMethod> builder)\n    {\n        builder.Property(x => x.Price).HasColumnType(\"decimal(18,2)\");\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Config/OrderConfiguration.cs",
    "content": "using System;\nusing Core.Entities.OrderAggregate;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\nnamespace Infrastructure.Config;\n\npublic class OrderConfiguration : IEntityTypeConfiguration<Order>\n{\n    public void Configure(EntityTypeBuilder<Order> builder)\n    {\n        builder.OwnsOne(x => x.ShippingAddress, o => o.WithOwner());\n        builder.OwnsOne(x => x.PaymentSummary, o => o.WithOwner());\n        builder.Property(x => x.Status).HasConversion(\n            o => o.ToString(),\n            o => (OrderStatus)Enum.Parse(typeof(OrderStatus), o)\n        );\n        builder.Property(x => x.Subtotal).HasColumnType(\"decimal(18,2)\");\n        builder.Property(x => x.Discount).HasColumnType(\"decimal(18,2)\");\n        builder.HasMany(x => x.OrderItems).WithOne().OnDelete(DeleteBehavior.Cascade);\n        builder.Property(x => x.OrderDate).HasConversion(\n            x => x.ToUniversalTime(),\n            x => DateTime.SpecifyKind(x, DateTimeKind.Utc)\n        );\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Config/OrderItemConfiguration.cs",
    "content": "using System;\nusing Core.Entities.OrderAggregate;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\nnamespace Infrastructure.Config;\n\npublic class OrderItemConfig : IEntityTypeConfiguration<OrderItem>\n{\n    public void Configure(EntityTypeBuilder<OrderItem> builder)\n    {\n        builder.OwnsOne(x => x.ItemOrdered, i => i.WithOwner());\n        builder.Property(x => x.Price).HasColumnType(\"decimal(18,2)\");\n    }\n}"
  },
  {
    "path": "Infrastructure/Config/ProductConfiguration.cs",
    "content": "using System;\nusing Core.Entities;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\nnamespace Infrastructure.Config;\n\npublic class ProductConfiguration : IEntityTypeConfiguration<Product>\n{\n    public void Configure(EntityTypeBuilder<Product> builder)\n    {\n        builder.Property(x => x.Price).HasColumnType(\"decimal(18,2)\");\n        builder.Property(x => x.Name).IsRequired();\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Config/RoleConfiguration.cs",
    "content": "using System;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\nnamespace Infrastructure.Config;\n\npublic class RoleConfiguration : IEntityTypeConfiguration<IdentityRole>\n{\n    public void Configure(EntityTypeBuilder<IdentityRole> builder)\n    {\n        builder.HasData(\n            new IdentityRole{Id = \"admin-id\", Name = \"Admin\", NormalizedName= \"ADMIN\"},\n            new IdentityRole{Id = \"customer-id\", Name = \"Customer\", NormalizedName= \"CUSTOMER\"}\n        );\n    }\n}"
  },
  {
    "path": "Infrastructure/Data/GenericRepository.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure.Data;\n\npublic class GenericRepository<T>(StoreContext context) : IGenericRepository<T> where T : BaseEntity\n{\n    public async Task<T?> GetByIdAsync(int id)\n    {\n        return await context.Set<T>().FindAsync(id);\n    }\n\n    public async Task<IReadOnlyList<T>> ListAllAsync()\n    {\n        return await context.Set<T>().ToListAsync();\n    }\n\n    public void Add(T entity)\n    {\n        context.Set<T>().Add(entity);\n    }\n\n    public void Update(T entity)\n    {\n        context.Set<T>().Attach(entity);\n        context.Entry(entity).State = EntityState.Modified;\n    }\n\n    public void Remove(T entity)\n    {\n        context.Set<T>().Remove(entity);\n    }\n\n    public bool Exists(int id)\n    {\n        return context.Set<T>().Any(x => x.Id == id);\n    }\n\n    public async Task<T?> GetEntityWithSpec(ISpecification<T> spec)\n    {\n        return await ApplySpecification(spec).FirstOrDefaultAsync();\n    }\n\n    public async Task<IReadOnlyList<T>> ListAsync(ISpecification<T> spec)\n    {\n        return await ApplySpecification(spec).ToListAsync();\n    }\n\n    public async Task<TResult?> GetEntityWithSpec<TResult>(ISpecification<T, TResult> spec)\n    {\n        return await ApplySpecification(spec).FirstOrDefaultAsync();\n    }\n\n    public async Task<IReadOnlyList<TResult>> ListAsync<TResult>(ISpecification<T, TResult> spec)\n    {\n        return await ApplySpecification(spec).ToListAsync();\n    }\n\n    private IQueryable<T> ApplySpecification(ISpecification<T> spec)\n    {\n        return SpecificationEvaluator<T>.GetQuery(context.Set<T>().AsQueryable(), spec);\n    }\n\n    private IQueryable<TResult> ApplySpecification<TResult>(ISpecification<T, TResult> spec)\n    {\n        return SpecificationEvaluator<T>.GetQuery<T, TResult>(context.Set<T>().AsQueryable(), spec);\n    }\n\n    public async Task<int> CountAsync(ISpecification<T> spec)\n    {\n        var query = context.Set<T>().AsQueryable();\n\n        query = spec.ApplyCriteria(query);\n\n        return await query.CountAsync();\n    }\n}"
  },
  {
    "path": "Infrastructure/Data/ProductRepository.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure.Data;\n\npublic class ProductRepository(StoreContext context) : IProductRepository\n{\n    public async Task<IReadOnlyList<Product>> GetProductsAsync(string? brand, string? type, string? sort)\n    {\n        var query = context.Products.AsQueryable();\n\n        if (!string.IsNullOrWhiteSpace(brand))\n        {\n            query = query.Where(p => p.Brand == brand);\n        }\n\n        if (!string.IsNullOrWhiteSpace(type))\n        {\n            query = query.Where(p => p.Type == type);\n        }\n\n        query = sort switch\n        {\n            \"priceAsc\" => query.OrderBy(p => p.Price),\n            \"priceDesc\" => query.OrderByDescending(p => p.Price),\n            _ => query.OrderBy(p => p.Name)\n        };\n\n        return await query.ToListAsync();\n    }\n\n    public async Task<Product?> GetProductByIdAsync(int id)\n    {\n        return await context.Products.FindAsync(id);\n    }\n\n    public void AddProduct(Product product)\n    {\n        context.Products.Add(product);\n    }\n\n    public void UpdateProduct(Product product)\n    {\n        context.Entry(product).State = EntityState.Modified;\n    }\n\n    public void DeleteProduct(Product product)\n    {\n        context.Products.Remove(product);\n    }\n\n    public async Task<bool> SaveChangesAsync()\n    {\n        return await context.SaveChangesAsync() > 0;\n    }\n\n    public bool ProductExists(int id)\n    {\n        return context.Products.Any(x => x.Id == id);\n    }\n\n    public async Task<IReadOnlyList<string>> GetBrandsAsync()\n    {\n        return await context.Products.Select(p => p.Brand)\n            .Distinct()\n            .ToListAsync();\n    }\n\n    public async Task<IReadOnlyList<string>> GetTypesAsync()\n    {\n        return await context.Products.Select(p => p.Type)\n            .Distinct()\n            .ToListAsync();\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Data/SeedData/delivery.json",
    "content": "[\n  {\n    \"ShortName\": \"UPS1\",\n    \"Description\": \"Fastest delivery time\",\n    \"DeliveryTime\": \"1-2 Days\",\n    \"Price\": 10\n  },\n  {\n    \"ShortName\": \"UPS2\",\n    \"Description\": \"Get it within 5 days\",\n    \"DeliveryTime\": \"2-5 Days\",\n    \"Price\": 5\n  },\n  {\n    \"ShortName\": \"UPS3\",\n    \"Description\": \"Slower but cheap\",\n    \"DeliveryTime\": \"5-10 Days\",\n    \"Price\": 2\n  },\n  {\n    \"ShortName\": \"FREE\",\n    \"Description\": \"Free! You get what you pay for\",\n    \"DeliveryTime\": \"1-2 Weeks\",\n    \"Price\": 0\n  }\n]"
  },
  {
    "path": "Infrastructure/Data/SeedData/products.json",
    "content": "[\n  {\n    \"Name\": \"Angular Speedster Board 2000\",\n    \"Description\": \"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.\",\n    \"Price\": 200,\n    \"PictureUrl\": \"/images/products/sb-ang1.png\",\n    \"Type\": \"Boards\",\n    \"Brand\": \"Angular\",\n    \"QuantityInStock\": 82\n  },\n  {\n    \"Name\": \"Green Angular Board 3000\",\n    \"Description\": \"Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.\",\n    \"Price\": 150,\n    \"PictureUrl\": \"/images/products/sb-ang2.png\",\n    \"Type\": \"Boards\",\n    \"Brand\": \"Angular\",\n    \"QuantityInStock\": 75\n  },\n  {\n    \"Name\": \"Core Board Speed Rush 3\",\n    \"Description\": \"Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy.\",\n    \"Price\": 180,\n    \"PictureUrl\": \"/images/products/sb-core1.png\",\n    \"Type\": \"Boards\",\n    \"Brand\": \"NetCore\",\n    \"QuantityInStock\": 3\n  },\n  {\n    \"Name\": \"Net Core Super Board\",\n    \"Description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.\",\n    \"Price\": 300,\n    \"PictureUrl\": \"/images/products/sb-core2.png\",\n    \"Type\": \"Boards\",\n    \"Brand\": \"NetCore\",\n    \"QuantityInStock\": 52\n  },\n  {\n    \"Name\": \"React Board Super Whizzy Fast\",\n    \"Description\": \"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.\",\n    \"Price\": 250,\n    \"PictureUrl\": \"/images/products/sb-react1.png\",\n    \"Type\": \"Boards\",\n    \"Brand\": \"React\",\n    \"QuantityInStock\": 97\n  },\n  {\n    \"Name\": \"Typescript Entry Board\",\n    \"Description\": \"Aenean nec lorem. In porttitor. Donec laoreet nonummy augue.\",\n    \"Price\": 120,\n    \"PictureUrl\": \"/images/products/sb-ts1.png\",\n    \"Type\": \"Boards\",\n    \"Brand\": \"Typescript\",\n    \"QuantityInStock\": 37\n  },\n  {\n    \"Name\": \"Core Blue Hat\",\n    \"Description\": \"Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.\",\n    \"Price\": 10,\n    \"PictureUrl\": \"/images/products/hat-core1.png\",\n    \"Type\": \"Hats\",\n    \"Brand\": \"NetCore\",\n    \"QuantityInStock\": 32\n  },\n  {\n    \"Name\": \"Green React Woolen Hat\",\n    \"Description\": \"Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy.\",\n    \"Price\": 8,\n    \"PictureUrl\": \"/images/products/hat-react1.png\",\n    \"Type\": \"Hats\",\n    \"Brand\": \"React\",\n    \"QuantityInStock\": 6\n  },\n  {\n    \"Name\": \"Purple React Woolen Hat\",\n    \"Description\": \"Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.\",\n    \"Price\": 15,\n    \"PictureUrl\": \"/images/products/hat-react2.png\",\n    \"Type\": \"Hats\",\n    \"Brand\": \"React\",\n    \"QuantityInStock\": 17\n  },\n  {\n    \"Name\": \"Blue Code Gloves\",\n    \"Description\": \"Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.\",\n    \"Price\": 18,\n    \"PictureUrl\": \"/images/products/glove-code1.png\",\n    \"Type\": \"Gloves\",\n    \"Brand\": \"VS Code\",\n    \"QuantityInStock\": 74\n  },\n  {\n    \"Name\": \"Green Code Gloves\",\n    \"Description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.\",\n    \"Price\": 15,\n    \"PictureUrl\": \"/images/products/glove-code2.png\",\n    \"Type\": \"Gloves\",\n    \"Brand\": \"VS Code\",\n    \"QuantityInStock\": 19\n  },\n  {\n    \"Name\": \"Purple React Gloves\",\n    \"Description\": \"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa.\",\n    \"Price\": 16,\n    \"PictureUrl\": \"/images/products/glove-react1.png\",\n    \"Type\": \"Gloves\",\n    \"Brand\": \"React\",\n    \"QuantityInStock\": 77\n  },\n  {\n    \"Name\": \"Green React Gloves\",\n    \"Description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.\",\n    \"Price\": 14,\n    \"PictureUrl\": \"/images/products/glove-react2.png\",\n    \"Type\": \"Gloves\",\n    \"Brand\": \"React\",\n    \"QuantityInStock\": 45\n  },\n  {\n    \"Name\": \"Redis Red Boots\",\n    \"Description\": \"Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy.\",\n    \"Price\": 250,\n    \"PictureUrl\": \"/images/products/boot-redis1.png\",\n    \"Type\": \"Boots\",\n    \"Brand\": \"Redis\",\n    \"QuantityInStock\": 49\n  },\n  {\n    \"Name\": \"Core Red Boots\",\n    \"Description\": \"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.\",\n    \"Price\": 189.99,\n    \"PictureUrl\": \"/images/products/boot-core2.png\",\n    \"Type\": \"Boots\",\n    \"Brand\": \"NetCore\",\n    \"QuantityInStock\": 28\n  },\n  {\n    \"Name\": \"Core Purple Boots\",\n    \"Description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.\",\n    \"Price\": 199.99,\n    \"PictureUrl\": \"/images/products/boot-core1.png\",\n    \"Type\": \"Boots\",\n    \"Brand\": \"NetCore\",\n    \"QuantityInStock\": 69\n  },\n  {\n    \"Name\": \"Angular Purple Boots\",\n    \"Description\": \"Aenean nec lorem. In porttitor. Donec laoreet nonummy augue.\",\n    \"Price\": 150,\n    \"PictureUrl\": \"/images/products/boot-ang2.png\",\n    \"Type\": \"Boots\",\n    \"Brand\": \"Angular\",\n    \"QuantityInStock\": 35\n  },\n  {\n    \"Name\": \"Angular Blue Boots\",\n    \"Description\": \"Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy.\",\n    \"Price\": 180,\n    \"PictureUrl\": \"/images/products/boot-ang1.png\",\n    \"Type\": \"Boots\",\n    \"Brand\": \"Angular\",\n    \"QuantityInStock\": 27\n  }\n]"
  },
  {
    "path": "Infrastructure/Data/SpecificationEvaluator.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure.Data;\n\n\npublic class SpecificationEvaluator<T> where T : BaseEntity\n{\n    public static IQueryable<T> GetQuery(IQueryable<T> query, ISpecification<T> spec)\n    {\n        if (spec.Criteria != null)\n        {\n            query = query.Where(spec.Criteria); // x => x.Brand == \"React\"\n        }\n\n        if (spec.OrderBy != null)\n        {\n            query = query.OrderBy(spec.OrderBy);\n        }\n\n        if (spec.OrderByDescending != null)\n        {\n            query = query.OrderByDescending(spec.OrderByDescending);\n        }\n\n        if (spec.IsDistinct)\n        {\n            query = query.Distinct();\n        }\n\n        if (spec.IsPagingEnabled)\n        {\n            query = query.Skip(spec.Skip).Take(spec.Take);\n        }\n\n        query = spec.Includes.Aggregate(query, (current, include) =>\n            current.Include(include));\n\n        query = spec.IncludeStrings.Aggregate(query, (current, include) =>\n            current.Include(include));\n\n        return query;\n    }\n\n    public static IQueryable<TResult> GetQuery<TSpec, TResult>(IQueryable<T> query,\n        ISpecification<T, TResult> spec)\n    {\n        if (spec.Criteria != null)\n        {\n            query = query.Where(spec.Criteria); // x => x.Brand == \"React\"\n        }\n\n        if (spec.OrderBy != null)\n        {\n            query = query.OrderBy(spec.OrderBy);\n        }\n\n        if (spec.OrderByDescending != null)\n        {\n            query = query.OrderByDescending(spec.OrderByDescending);\n        }\n\n        var selectQuery = query as IQueryable<TResult>;\n\n        if (spec.Select != null)\n        {\n            selectQuery = query.Select(spec.Select);\n        }\n\n        if (spec.IsDistinct)\n        {\n            selectQuery = selectQuery?.Distinct();\n        }\n\n        if (spec.IsPagingEnabled)\n        {\n            selectQuery = selectQuery?.Skip(spec.Skip).Take(spec.Take);\n        }\n\n        return selectQuery ?? query.Cast<TResult>();\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Data/StoreContext.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Entities.OrderAggregate;\nusing Infrastructure.Config;\nusing Microsoft.AspNetCore.Identity.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure.Data;\n\npublic class StoreContext(DbContextOptions options) : IdentityDbContext<AppUser>(options)\n{\n    public DbSet<Product> Products { get; set; }\n    public DbSet<Address> Addresses { get; set; }\n    public DbSet<DeliveryMethod> DeliveryMethods { get; set; }\n    public DbSet<Order> Orders { get; set; }\n    public DbSet<OrderItem> OrderItems { get; set; }\n\n    protected override void OnModelCreating(ModelBuilder modelBuilder)\n    {\n        base.OnModelCreating(modelBuilder);\n\n        modelBuilder.ApplyConfigurationsFromAssembly(typeof(ProductConfiguration).Assembly);\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Data/StoreContextSeed.cs",
    "content": "using System;\nusing System.Reflection;\nusing System.Text.Json;\nusing Core.Entities;\nusing Microsoft.AspNetCore.Identity;\n\nnamespace Infrastructure.Data;\n\npublic class StoreContextSeed\n{\n    public static async Task SeedAsync(StoreContext context, UserManager<AppUser> userManager)\n    {\n        if (!userManager.Users.Any(x => x.UserName == \"admin@test.com\"))\n        {\n            var user = new AppUser\n            {\n                UserName = \"admin@test.com\",\n                Email = \"admin@test.com\"\n            };\n\n            await userManager.CreateAsync(user, \"Pa$$w0rd\");\n            await userManager.AddToRoleAsync(user, \"Admin\");\n        }\n\n        var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);\n\n        if (!context.Products.Any())\n        {\n            var productsData = await File.ReadAllTextAsync(path + @\"/Data/SeedData/products.json\");\n            var products = JsonSerializer.Deserialize<List<Product>>(productsData);\n\n            if (products == null) return;\n\n            context.Products.AddRange(products);\n\n            await context.SaveChangesAsync();\n        }\n\n        if (!context.DeliveryMethods.Any())\n        {\n            var dmData = await File.ReadAllTextAsync(path + @\"/Data/SeedData/delivery.json\");\n            var methods = JsonSerializer.Deserialize<List<DeliveryMethod>>(dmData);\n\n            if (methods == null) return;\n\n            context.DeliveryMethods.AddRange(methods);\n\n            await context.SaveChangesAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Data/UnitOfWork.cs",
    "content": "using System;\nusing System.Collections.Concurrent;\nusing Core.Entities;\nusing Core.Interfaces;\n\nnamespace Infrastructure.Data;\n\npublic class UnitOfWork(StoreContext context) : IUnitOfWork\n{\n    private readonly ConcurrentDictionary<string, object> _repositories = new();\n    public async Task<bool> Complete()\n    {\n        return await context.SaveChangesAsync() > 0;\n    }\n\n    public void Dispose()\n    {\n        context.Dispose();\n    }\n\n    public IGenericRepository<TEntity> Repository<TEntity>() where TEntity : BaseEntity\n    {\n        var type = typeof(TEntity).Name;\n\n        return (IGenericRepository<TEntity>)_repositories.GetOrAdd(type, t =>\n        {\n            var repositoryType = typeof(GenericRepository<>).MakeGenericType(typeof(TEntity));\n            return Activator.CreateInstance(repositoryType, context)\n                   ?? throw new InvalidOperationException($\"Could not create repository instance for {t}.\");\n        });\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Infrastructure.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <ItemGroup>\n    <None Include=\"Data\\SeedData\\**\" CopyToOutputDirectory=\"PreserveNewest\" />\n    <ProjectReference Include=\"..\\Core\\Core.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.AspNetCore.Identity.EntityFrameworkCore\" Version=\"9.0.6\" />\n    <PackageReference Include=\"Microsoft.EntityFrameworkCore.SqlServer\" Version=\"9.0.6\" />\n    <PackageReference Include=\"StackExchange.Redis\" Version=\"2.8.41\" />\n    <PackageReference Include=\"Stripe.net\" Version=\"48.2.0\" />\n  </ItemGroup>\n\n  <PropertyGroup>\n    <TargetFramework>net9.0</TargetFramework>\n    <ImplicitUsings>enable</ImplicitUsings>\n    <Nullable>enable</Nullable>\n  </PropertyGroup>\n\n</Project>\n"
  },
  {
    "path": "Infrastructure/Migrations/20250622053300_InitialCreate.Designer.cs",
    "content": "﻿// <auto-generated />\nusing Infrastructure;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250622053300_InitialCreate\")]\n    partial class InitialCreate\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250622053300_InitialCreate.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class InitialCreate : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.CreateTable(\n                name: \"Products\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    Name = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Description = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Price = table.Column<decimal>(type: \"decimal(18,2)\", nullable: false),\n                    PictureUrl = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Type = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Brand = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    QuantityInStock = table.Column<int>(type: \"int\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Products\", x => x.Id);\n                });\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropTable(\n                name: \"Products\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250629083129_IdentityAdded.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250629083129_IdentityAdded\")]\n    partial class IdentityAdded\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.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<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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"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(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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\"));\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\"));\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(\"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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250629083129_IdentityAdded.cs",
    "content": "﻿using System;\nusing Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class IdentityAdded : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.CreateTable(\n                name: \"AspNetRoles\",\n                columns: table => new\n                {\n                    Id = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    Name = table.Column<string>(type: \"nvarchar(256)\", maxLength: 256, nullable: true),\n                    NormalizedName = table.Column<string>(type: \"nvarchar(256)\", maxLength: 256, nullable: true),\n                    ConcurrencyStamp = table.Column<string>(type: \"nvarchar(max)\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetRoles\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AspNetUsers\",\n                columns: table => new\n                {\n                    Id = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    FirstName = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    LastName = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    UserName = table.Column<string>(type: \"nvarchar(256)\", maxLength: 256, nullable: true),\n                    NormalizedUserName = table.Column<string>(type: \"nvarchar(256)\", maxLength: 256, nullable: true),\n                    Email = table.Column<string>(type: \"nvarchar(256)\", maxLength: 256, nullable: true),\n                    NormalizedEmail = table.Column<string>(type: \"nvarchar(256)\", maxLength: 256, nullable: true),\n                    EmailConfirmed = table.Column<bool>(type: \"bit\", nullable: false),\n                    PasswordHash = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    SecurityStamp = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    ConcurrencyStamp = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    PhoneNumber = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    PhoneNumberConfirmed = table.Column<bool>(type: \"bit\", nullable: false),\n                    TwoFactorEnabled = table.Column<bool>(type: \"bit\", nullable: false),\n                    LockoutEnd = table.Column<DateTimeOffset>(type: \"datetimeoffset\", nullable: true),\n                    LockoutEnabled = table.Column<bool>(type: \"bit\", nullable: false),\n                    AccessFailedCount = table.Column<int>(type: \"int\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetUsers\", x => x.Id);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AspNetRoleClaims\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    RoleId = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    ClaimType = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    ClaimValue = table.Column<string>(type: \"nvarchar(max)\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetRoleClaims\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_AspNetRoleClaims_AspNetRoles_RoleId\",\n                        column: x => x.RoleId,\n                        principalTable: \"AspNetRoles\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AspNetUserClaims\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    UserId = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    ClaimType = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    ClaimValue = table.Column<string>(type: \"nvarchar(max)\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetUserClaims\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_AspNetUserClaims_AspNetUsers_UserId\",\n                        column: x => x.UserId,\n                        principalTable: \"AspNetUsers\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AspNetUserLogins\",\n                columns: table => new\n                {\n                    LoginProvider = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    ProviderKey = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    ProviderDisplayName = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    UserId = table.Column<string>(type: \"nvarchar(450)\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetUserLogins\", x => new { x.LoginProvider, x.ProviderKey });\n                    table.ForeignKey(\n                        name: \"FK_AspNetUserLogins_AspNetUsers_UserId\",\n                        column: x => x.UserId,\n                        principalTable: \"AspNetUsers\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AspNetUserRoles\",\n                columns: table => new\n                {\n                    UserId = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    RoleId = table.Column<string>(type: \"nvarchar(450)\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetUserRoles\", x => new { x.UserId, x.RoleId });\n                    table.ForeignKey(\n                        name: \"FK_AspNetUserRoles_AspNetRoles_RoleId\",\n                        column: x => x.RoleId,\n                        principalTable: \"AspNetRoles\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                    table.ForeignKey(\n                        name: \"FK_AspNetUserRoles_AspNetUsers_UserId\",\n                        column: x => x.UserId,\n                        principalTable: \"AspNetUsers\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"AspNetUserTokens\",\n                columns: table => new\n                {\n                    UserId = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    LoginProvider = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    Name = table.Column<string>(type: \"nvarchar(450)\", nullable: false),\n                    Value = table.Column<string>(type: \"nvarchar(max)\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_AspNetUserTokens\", x => new { x.UserId, x.LoginProvider, x.Name });\n                    table.ForeignKey(\n                        name: \"FK_AspNetUserTokens_AspNetUsers_UserId\",\n                        column: x => x.UserId,\n                        principalTable: \"AspNetUsers\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_AspNetRoleClaims_RoleId\",\n                table: \"AspNetRoleClaims\",\n                column: \"RoleId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"RoleNameIndex\",\n                table: \"AspNetRoles\",\n                column: \"NormalizedName\",\n                unique: true,\n                filter: \"[NormalizedName] IS NOT NULL\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_AspNetUserClaims_UserId\",\n                table: \"AspNetUserClaims\",\n                column: \"UserId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_AspNetUserLogins_UserId\",\n                table: \"AspNetUserLogins\",\n                column: \"UserId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_AspNetUserRoles_RoleId\",\n                table: \"AspNetUserRoles\",\n                column: \"RoleId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"EmailIndex\",\n                table: \"AspNetUsers\",\n                column: \"NormalizedEmail\");\n\n            migrationBuilder.CreateIndex(\n                name: \"UserNameIndex\",\n                table: \"AspNetUsers\",\n                column: \"NormalizedUserName\",\n                unique: true,\n                filter: \"[NormalizedUserName] IS NOT NULL\");\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropTable(\n                name: \"AspNetRoleClaims\");\n\n            migrationBuilder.DropTable(\n                name: \"AspNetUserClaims\");\n\n            migrationBuilder.DropTable(\n                name: \"AspNetUserLogins\");\n\n            migrationBuilder.DropTable(\n                name: \"AspNetUserRoles\");\n\n            migrationBuilder.DropTable(\n                name: \"AspNetUserTokens\");\n\n            migrationBuilder.DropTable(\n                name: \"AspNetRoles\");\n\n            migrationBuilder.DropTable(\n                name: \"AspNetUsers\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250629085927_AddressAdded.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250629085927_AddressAdded\")]\n    partial class AddressAdded\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Country\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line1\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line2\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PostalCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.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>(\"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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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\"));\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\"));\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(\"Core.Entities.AppUser\", b =>\n                {\n                    b.HasOne(\"Core.Entities.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250629085927_AddressAdded.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class AddressAdded : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.AddColumn<int>(\n                name: \"AddressId\",\n                table: \"AspNetUsers\",\n                type: \"int\",\n                nullable: true);\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                    Line1 = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Line2 = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    City = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    State = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    PostalCode = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Country = 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.CreateIndex(\n                name: \"IX_AspNetUsers_AddressId\",\n                table: \"AspNetUsers\",\n                column: \"AddressId\");\n\n            migrationBuilder.AddForeignKey(\n                name: \"FK_AspNetUsers_Addresses_AddressId\",\n                table: \"AspNetUsers\",\n                column: \"AddressId\",\n                principalTable: \"Addresses\",\n                principalColumn: \"Id\");\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropForeignKey(\n                name: \"FK_AspNetUsers_Addresses_AddressId\",\n                table: \"AspNetUsers\");\n\n            migrationBuilder.DropTable(\n                name: \"Addresses\");\n\n            migrationBuilder.DropIndex(\n                name: \"IX_AspNetUsers_AddressId\",\n                table: \"AspNetUsers\");\n\n            migrationBuilder.DropColumn(\n                name: \"AddressId\",\n                table: \"AspNetUsers\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250630014631_DeliveryMethodsAdded.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250630014631_DeliveryMethodsAdded\")]\n    partial class DeliveryMethodsAdded\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Country\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line1\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line2\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PostalCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.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>(\"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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"Core.Entities.DeliveryMethod\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"DeliveryTime\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<string>(\"ShortName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"DeliveryMethods\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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\"));\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\"));\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(\"Core.Entities.AppUser\", b =>\n                {\n                    b.HasOne(\"Core.Entities.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250630014631_DeliveryMethodsAdded.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class DeliveryMethodsAdded : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.CreateTable(\n                name: \"DeliveryMethods\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    ShortName = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    DeliveryTime = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Description = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Price = table.Column<decimal>(type: \"decimal(18,2)\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_DeliveryMethods\", x => x.Id);\n                });\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropTable(\n                name: \"DeliveryMethods\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250630074200_OrderEntityAdded.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250630074200_OrderEntityAdded\")]\n    partial class OrderEntityAdded\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Country\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line1\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line2\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PostalCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.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>(\"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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"Core.Entities.DeliveryMethod\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"DeliveryTime\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<string>(\"ShortName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"DeliveryMethods\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"BuyerEmail\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"DeliveryMethodId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<DateTime>(\"OrderDate\")\n                        .HasColumnType(\"datetime2\");\n\n                    b.Property<string>(\"PaymentIntentId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Status\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Subtotal\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"DeliveryMethodId\");\n\n                    b.ToTable(\"Orders\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<int?>(\"OrderId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"Quantity\")\n                        .HasColumnType(\"int\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"OrderId\");\n\n                    b.ToTable(\"OrderItems\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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\"));\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\"));\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(\"Core.Entities.AppUser\", b =>\n                {\n                    b.HasOne(\"Core.Entities.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.HasOne(\"Core.Entities.DeliveryMethod\", \"DeliveryMethod\")\n                        .WithMany()\n                        .HasForeignKey(\"DeliveryMethodId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.PaymentSummary\", \"PaymentSummary\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"Brand\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ExpMonth\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"ExpYear\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"Last4\")\n                                .HasColumnType(\"int\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ShippingAddress\", \"ShippingAddress\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"City\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Country\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line1\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line2\")\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Name\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"PostalCode\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"State\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.Navigation(\"DeliveryMethod\");\n\n                    b.Navigation(\"PaymentSummary\")\n                        .IsRequired();\n\n                    b.Navigation(\"ShippingAddress\")\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.HasOne(\"Core.Entities.OrderAggregate.Order\", null)\n                        .WithMany(\"OrderItems\")\n                        .HasForeignKey(\"OrderId\")\n                        .OnDelete(DeleteBehavior.Cascade);\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ProductItemOrdered\", \"ItemOrdered\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderItemId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"PictureUrl\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ProductId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"ProductName\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderItemId\");\n\n                            b1.ToTable(\"OrderItems\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderItemId\");\n                        });\n\n                    b.Navigation(\"ItemOrdered\")\n                        .IsRequired();\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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Navigation(\"OrderItems\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250630074200_OrderEntityAdded.cs",
    "content": "﻿using System;\nusing Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class OrderEntityAdded : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.CreateTable(\n                name: \"Orders\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    OrderDate = table.Column<DateTime>(type: \"datetime2\", nullable: false),\n                    BuyerEmail = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ShippingAddress_Name = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ShippingAddress_Line1 = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ShippingAddress_Line2 = table.Column<string>(type: \"nvarchar(max)\", nullable: true),\n                    ShippingAddress_City = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ShippingAddress_State = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ShippingAddress_PostalCode = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ShippingAddress_Country = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    DeliveryMethodId = table.Column<int>(type: \"int\", nullable: false),\n                    PaymentSummary_Last4 = table.Column<int>(type: \"int\", nullable: false),\n                    PaymentSummary_Brand = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    PaymentSummary_ExpMonth = table.Column<int>(type: \"int\", nullable: false),\n                    PaymentSummary_ExpYear = table.Column<int>(type: \"int\", nullable: false),\n                    Subtotal = table.Column<decimal>(type: \"decimal(18,2)\", nullable: false),\n                    Status = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    PaymentIntentId = table.Column<string>(type: \"nvarchar(max)\", nullable: false)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_Orders\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_Orders_DeliveryMethods_DeliveryMethodId\",\n                        column: x => x.DeliveryMethodId,\n                        principalTable: \"DeliveryMethods\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateTable(\n                name: \"OrderItems\",\n                columns: table => new\n                {\n                    Id = table.Column<int>(type: \"int\", nullable: false)\n                        .Annotation(\"SqlServer:Identity\", \"1, 1\"),\n                    ItemOrdered_ProductId = table.Column<int>(type: \"int\", nullable: false),\n                    ItemOrdered_ProductName = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    ItemOrdered_PictureUrl = table.Column<string>(type: \"nvarchar(max)\", nullable: false),\n                    Price = table.Column<decimal>(type: \"decimal(18,2)\", nullable: false),\n                    Quantity = table.Column<int>(type: \"int\", nullable: false),\n                    OrderId = table.Column<int>(type: \"int\", nullable: true)\n                },\n                constraints: table =>\n                {\n                    table.PrimaryKey(\"PK_OrderItems\", x => x.Id);\n                    table.ForeignKey(\n                        name: \"FK_OrderItems_Orders_OrderId\",\n                        column: x => x.OrderId,\n                        principalTable: \"Orders\",\n                        principalColumn: \"Id\",\n                        onDelete: ReferentialAction.Cascade);\n                });\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_OrderItems_OrderId\",\n                table: \"OrderItems\",\n                column: \"OrderId\");\n\n            migrationBuilder.CreateIndex(\n                name: \"IX_Orders_DeliveryMethodId\",\n                table: \"Orders\",\n                column: \"DeliveryMethodId\");\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropTable(\n                name: \"OrderItems\");\n\n            migrationBuilder.DropTable(\n                name: \"Orders\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250701034848_CouponsAdded.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250701034848_CouponsAdded\")]\n    partial class CouponsAdded\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Country\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line1\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line2\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PostalCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.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>(\"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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"Core.Entities.DeliveryMethod\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"DeliveryTime\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<string>(\"ShortName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"DeliveryMethods\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"BuyerEmail\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"DeliveryMethodId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Discount\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<DateTime>(\"OrderDate\")\n                        .HasColumnType(\"datetime2\");\n\n                    b.Property<string>(\"PaymentIntentId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Status\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Subtotal\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"DeliveryMethodId\");\n\n                    b.ToTable(\"Orders\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<int?>(\"OrderId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"Quantity\")\n                        .HasColumnType(\"int\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"OrderId\");\n\n                    b.ToTable(\"OrderItems\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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\"));\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\"));\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(\"Core.Entities.AppUser\", b =>\n                {\n                    b.HasOne(\"Core.Entities.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.HasOne(\"Core.Entities.DeliveryMethod\", \"DeliveryMethod\")\n                        .WithMany()\n                        .HasForeignKey(\"DeliveryMethodId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.PaymentSummary\", \"PaymentSummary\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"Brand\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ExpMonth\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"ExpYear\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"Last4\")\n                                .HasColumnType(\"int\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ShippingAddress\", \"ShippingAddress\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"City\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Country\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line1\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line2\")\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Name\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"PostalCode\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"State\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.Navigation(\"DeliveryMethod\");\n\n                    b.Navigation(\"PaymentSummary\")\n                        .IsRequired();\n\n                    b.Navigation(\"ShippingAddress\")\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.HasOne(\"Core.Entities.OrderAggregate.Order\", null)\n                        .WithMany(\"OrderItems\")\n                        .HasForeignKey(\"OrderId\")\n                        .OnDelete(DeleteBehavior.Cascade);\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ProductItemOrdered\", \"ItemOrdered\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderItemId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"PictureUrl\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ProductId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"ProductName\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderItemId\");\n\n                            b1.ToTable(\"OrderItems\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderItemId\");\n                        });\n\n                    b.Navigation(\"ItemOrdered\")\n                        .IsRequired();\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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Navigation(\"OrderItems\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250701034848_CouponsAdded.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class CouponsAdded : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.AddColumn<decimal>(\n                name: \"Discount\",\n                table: \"Orders\",\n                type: \"decimal(18,2)\",\n                nullable: false,\n                defaultValue: 0m);\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DropColumn(\n                name: \"Discount\",\n                table: \"Orders\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250701045119_RolesAdded.Designer.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Migrations;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    [Migration(\"20250701045119_RolesAdded\")]\n    partial class RolesAdded\n    {\n        /// <inheritdoc />\n        protected override void BuildTargetModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Country\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line1\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line2\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PostalCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.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>(\"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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"Core.Entities.DeliveryMethod\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"DeliveryTime\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<string>(\"ShortName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"DeliveryMethods\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"BuyerEmail\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"DeliveryMethodId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Discount\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<DateTime>(\"OrderDate\")\n                        .HasColumnType(\"datetime2\");\n\n                    b.Property<string>(\"PaymentIntentId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Status\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Subtotal\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"DeliveryMethodId\");\n\n                    b.ToTable(\"Orders\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<int?>(\"OrderId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"Quantity\")\n                        .HasColumnType(\"int\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"OrderId\");\n\n                    b.ToTable(\"OrderItems\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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                    b.HasData(\n                        new\n                        {\n                            Id = \"admin-id\",\n                            Name = \"Admin\",\n                            NormalizedName = \"ADMIN\"\n                        },\n                        new\n                        {\n                            Id = \"customer-id\",\n                            Name = \"Customer\",\n                            NormalizedName = \"CUSTOMER\"\n                        });\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\"));\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\"));\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(\"Core.Entities.AppUser\", b =>\n                {\n                    b.HasOne(\"Core.Entities.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.HasOne(\"Core.Entities.DeliveryMethod\", \"DeliveryMethod\")\n                        .WithMany()\n                        .HasForeignKey(\"DeliveryMethodId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.PaymentSummary\", \"PaymentSummary\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"Brand\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ExpMonth\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"ExpYear\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"Last4\")\n                                .HasColumnType(\"int\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ShippingAddress\", \"ShippingAddress\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"City\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Country\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line1\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line2\")\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Name\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"PostalCode\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"State\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.Navigation(\"DeliveryMethod\");\n\n                    b.Navigation(\"PaymentSummary\")\n                        .IsRequired();\n\n                    b.Navigation(\"ShippingAddress\")\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.HasOne(\"Core.Entities.OrderAggregate.Order\", null)\n                        .WithMany(\"OrderItems\")\n                        .HasForeignKey(\"OrderId\")\n                        .OnDelete(DeleteBehavior.Cascade);\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ProductItemOrdered\", \"ItemOrdered\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderItemId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"PictureUrl\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ProductId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"ProductName\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderItemId\");\n\n                            b1.ToTable(\"OrderItems\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderItemId\");\n                        });\n\n                    b.Navigation(\"ItemOrdered\")\n                        .IsRequired();\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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Navigation(\"OrderItems\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/20250701045119_RolesAdded.cs",
    "content": "﻿using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\n#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional\n\nnamespace Infrastructure.Migrations\n{\n    /// <inheritdoc />\n    public partial class RolesAdded : Migration\n    {\n        /// <inheritdoc />\n        protected override void Up(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.InsertData(\n                table: \"AspNetRoles\",\n                columns: new[] { \"Id\", \"ConcurrencyStamp\", \"Name\", \"NormalizedName\" },\n                values: new object[,]\n                {\n                    { \"admin-id\", null, \"Admin\", \"ADMIN\" },\n                    { \"customer-id\", null, \"Customer\", \"CUSTOMER\" }\n                });\n        }\n\n        /// <inheritdoc />\n        protected override void Down(MigrationBuilder migrationBuilder)\n        {\n            migrationBuilder.DeleteData(\n                table: \"AspNetRoles\",\n                keyColumn: \"Id\",\n                keyValue: \"admin-id\");\n\n            migrationBuilder.DeleteData(\n                table: \"AspNetRoles\",\n                keyColumn: \"Id\",\n                keyValue: \"customer-id\");\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Migrations/StoreContextModelSnapshot.cs",
    "content": "﻿// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Storage.ValueConversion;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n    [DbContext(typeof(StoreContext))]\n    partial class StoreContextModelSnapshot : ModelSnapshot\n    {\n        protected override void BuildModel(ModelBuilder modelBuilder)\n        {\n#pragma warning disable 612, 618\n            modelBuilder\n                .HasAnnotation(\"ProductVersion\", \"9.0.6\")\n                .HasAnnotation(\"Relational:MaxIdentifierLength\", 128);\n\n            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);\n\n            modelBuilder.Entity(\"Core.Entities.Address\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"City\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Country\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line1\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Line2\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PostalCode\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"State\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Addresses\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.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>(\"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<string>(\"FirstName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"LastName\")\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<bool>(\"LockoutEnabled\")\n                        .HasColumnType(\"bit\");\n\n                    b.Property<DateTimeOffset?>(\"LockoutEnd\")\n                        .HasColumnType(\"datetimeoffset\");\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<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>(\"SecurityStamp\")\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(\"Core.Entities.DeliveryMethod\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"DeliveryTime\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<string>(\"ShortName\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"DeliveryMethods\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"BuyerEmail\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<int>(\"DeliveryMethodId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Discount\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<DateTime>(\"OrderDate\")\n                        .HasColumnType(\"datetime2\");\n\n                    b.Property<string>(\"PaymentIntentId\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Status\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Subtotal\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"DeliveryMethodId\");\n\n                    b.ToTable(\"Orders\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<int?>(\"OrderId\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"Quantity\")\n                        .HasColumnType(\"int\");\n\n                    b.HasKey(\"Id\");\n\n                    b.HasIndex(\"OrderId\");\n\n                    b.ToTable(\"OrderItems\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.Product\", b =>\n                {\n                    b.Property<int>(\"Id\")\n                        .ValueGeneratedOnAdd()\n                        .HasColumnType(\"int\");\n\n                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>(\"Id\"));\n\n                    b.Property<string>(\"Brand\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Description\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"Name\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<string>(\"PictureUrl\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.Property<decimal>(\"Price\")\n                        .HasColumnType(\"decimal(18,2)\");\n\n                    b.Property<int>(\"QuantityInStock\")\n                        .HasColumnType(\"int\");\n\n                    b.Property<string>(\"Type\")\n                        .IsRequired()\n                        .HasColumnType(\"nvarchar(max)\");\n\n                    b.HasKey(\"Id\");\n\n                    b.ToTable(\"Products\");\n                });\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                    b.HasData(\n                        new\n                        {\n                            Id = \"admin-id\",\n                            Name = \"Admin\",\n                            NormalizedName = \"ADMIN\"\n                        },\n                        new\n                        {\n                            Id = \"customer-id\",\n                            Name = \"Customer\",\n                            NormalizedName = \"CUSTOMER\"\n                        });\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\"));\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\"));\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(\"Core.Entities.AppUser\", b =>\n                {\n                    b.HasOne(\"Core.Entities.Address\", \"Address\")\n                        .WithMany()\n                        .HasForeignKey(\"AddressId\");\n\n                    b.Navigation(\"Address\");\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.HasOne(\"Core.Entities.DeliveryMethod\", \"DeliveryMethod\")\n                        .WithMany()\n                        .HasForeignKey(\"DeliveryMethodId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.PaymentSummary\", \"PaymentSummary\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"Brand\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ExpMonth\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"ExpYear\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<int>(\"Last4\")\n                                .HasColumnType(\"int\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ShippingAddress\", \"ShippingAddress\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"City\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Country\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line1\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Line2\")\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"Name\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"PostalCode\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<string>(\"State\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderId\");\n\n                            b1.ToTable(\"Orders\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderId\");\n                        });\n\n                    b.Navigation(\"DeliveryMethod\");\n\n                    b.Navigation(\"PaymentSummary\")\n                        .IsRequired();\n\n                    b.Navigation(\"ShippingAddress\")\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.OrderItem\", b =>\n                {\n                    b.HasOne(\"Core.Entities.OrderAggregate.Order\", null)\n                        .WithMany(\"OrderItems\")\n                        .HasForeignKey(\"OrderId\")\n                        .OnDelete(DeleteBehavior.Cascade);\n\n                    b.OwnsOne(\"Core.Entities.OrderAggregate.ProductItemOrdered\", \"ItemOrdered\", b1 =>\n                        {\n                            b1.Property<int>(\"OrderItemId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"PictureUrl\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.Property<int>(\"ProductId\")\n                                .HasColumnType(\"int\");\n\n                            b1.Property<string>(\"ProductName\")\n                                .IsRequired()\n                                .HasColumnType(\"nvarchar(max)\");\n\n                            b1.HasKey(\"OrderItemId\");\n\n                            b1.ToTable(\"OrderItems\");\n\n                            b1.WithOwner()\n                                .HasForeignKey(\"OrderItemId\");\n                        });\n\n                    b.Navigation(\"ItemOrdered\")\n                        .IsRequired();\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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.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(\"Core.Entities.AppUser\", null)\n                        .WithMany()\n                        .HasForeignKey(\"UserId\")\n                        .OnDelete(DeleteBehavior.Cascade)\n                        .IsRequired();\n                });\n\n            modelBuilder.Entity(\"Core.Entities.OrderAggregate.Order\", b =>\n                {\n                    b.Navigation(\"OrderItems\");\n                });\n#pragma warning restore 612, 618\n        }\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Services/CartService.cs",
    "content": "using System;\nusing System.Text.Json;\nusing Core.Entities;\nusing Core.Interfaces;\nusing StackExchange.Redis;\n\nnamespace Infrastructure.Services;\n\npublic class CartService(IConnectionMultiplexer redis) : ICartService\n{\n    private readonly IDatabase _database = redis.GetDatabase();\n    public async Task<bool> DeleteCartAsync(string key)\n    {\n        return await _database.KeyDeleteAsync(key);\n    }\n\n    public async Task<ShoppingCart?> GetCartAsync(string key)\n    {\n         var data = await _database.StringGetAsync(key);\n\n        return data.IsNullOrEmpty ? null : JsonSerializer.Deserialize<ShoppingCart>(data!);\n    }\n\n    public async Task<ShoppingCart?> SetCartAsync(ShoppingCart cart)\n    {\n        var created = await _database.StringSetAsync(cart.Id,\n            JsonSerializer.Serialize(cart), TimeSpan.FromDays(30));\n\n        if (!created) return null;\n\n        return await GetCartAsync(cart.Id);\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Services/CouponService.cs",
    "content": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.Extensions.Configuration;\nusing Stripe;\n\nnamespace Infrastructure.Services;\n\npublic class CouponService : ICouponService\n{\n    public CouponService(IConfiguration config)\n    {\n        StripeConfiguration.ApiKey = config[\"StripeSettings:SecretKey\"];\n    }\n    \n    public async Task<AppCoupon?> GetCouponFromPromoCode(string code)\n    {\n        var promotionService = new PromotionCodeService();\n\n        var options = new PromotionCodeListOptions\n        {\n            Code = code\n        };\n\n        var promotionCodes = await promotionService.ListAsync(options);\n\n        var promotionCode = promotionCodes.FirstOrDefault();\n\n        if (promotionCode != null && promotionCode.Coupon != null)\n        {\n            return new AppCoupon\n            {\n                Name = promotionCode.Coupon.Name,\n                AmountOff = promotionCode.Coupon.AmountOff,\n                PercentOff = promotionCode.Coupon.PercentOff,\n                CouponId = promotionCode.Coupon.Id,\n                PromotionCode = promotionCode.Code\n            };\n        }\n\n        return null;\n    }\n}\n"
  },
  {
    "path": "Infrastructure/Services/PaymentService.cs",
    "content": "using Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.Extensions.Configuration;\nusing Stripe;\n\nnamespace Infrastructure.Services;\n\npublic class PaymentService : IPaymentService\n{\n    private readonly ICartService cartService;\n    private readonly IUnitOfWork unit;\n\n    public PaymentService(IConfiguration config, ICartService cartService,\n        IUnitOfWork unit)\n    {\n        StripeConfiguration.ApiKey = config[\"StripeSettings:SecretKey\"];\n        this.cartService = cartService;\n        this.unit = unit;\n    }\n\n    public async Task<ShoppingCart?> CreateOrUpdatePaymentIntent(string cartId)\n    {\n        var cart = await cartService.GetCartAsync(cartId)\n            ?? throw new Exception(\"Cart unavailable\");\n\n        var shippingPrice = await GetShippingPriceAsync(cart) ?? 0;\n\n        await ValidateCartItemsInCartAsync(cart);\n\n        var subtotal = CalculateSubtotal(cart);\n\n        if (cart.Coupon != null)\n        {\n            subtotal = await ApplyDiscountAsync(cart.Coupon, subtotal);\n        }\n\n        var total = subtotal + shippingPrice;\n\n        await CreateUpdatePaymentIntentAsync(cart, total);\n\n        await cartService.SetCartAsync(cart);\n\n        return cart;\n    }\n    \n    public async Task<string> RefundPayment(string paymentIntentId)\n    {\n        var refundOptions = new RefundCreateOptions\n        {\n            PaymentIntent = paymentIntentId\n        };\n\n        var refundService = new RefundService();\n        var result = await refundService.CreateAsync(refundOptions);\n\n        return result.Status;\n    }\n\n    private async Task CreateUpdatePaymentIntentAsync(ShoppingCart cart,\n        long total)\n    {\n        var service = new PaymentIntentService();\n\n        if (string.IsNullOrEmpty(cart.PaymentIntentId))\n        {\n            var options = new PaymentIntentCreateOptions\n            {\n                Amount = total,\n                Currency = \"usd\",\n                PaymentMethodTypes = [\"card\"]\n            };\n            var intent = await service.CreateAsync(options);\n            cart.PaymentIntentId = intent.Id;\n            cart.ClientSecret = intent.ClientSecret;\n        }\n        else\n        {\n            var options = new PaymentIntentUpdateOptions\n            {\n                Amount = total\n            };\n            await service.UpdateAsync(cart.PaymentIntentId, options);\n        }\n    }\n\n    private async Task<long> ApplyDiscountAsync(AppCoupon appCoupon, \n\t    long amount)\n    {\n        var couponService = new Stripe.CouponService();\n\n        var coupon = await couponService.GetAsync(appCoupon.CouponId);\n\n        if (coupon.AmountOff.HasValue)\n        {\n            amount -= (long)coupon.AmountOff * 100;\n        }\n\n        if (coupon.PercentOff.HasValue)\n        {\n            var discount = amount * (coupon.PercentOff.Value / 100);\n            amount -= (long)discount;\n        }\n\n        return amount;\n    }\n\n    private long CalculateSubtotal(ShoppingCart cart)\n    {\n        var itemTotal = cart.Items.Sum(x => x.Quantity * x.Price * 100);\n        return (long)itemTotal;\n    }\n\n    private async Task ValidateCartItemsInCartAsync(ShoppingCart cart)\n    {\n        foreach (var item in cart.Items)\n        {\n            var productItem = await unit.Repository<Core.Entities.Product>()\n                .GetByIdAsync(item.ProductId) \n\t                ?? throw new Exception(\"Problem getting product in cart\");\n\n            if (item.Price != productItem.Price)\n            {\n                item.Price = productItem.Price;\n            }\n        }\n    }\n\n    private async Task<long?> GetShippingPriceAsync(ShoppingCart cart)\n    {\n        if (cart.DeliveryMethodId.HasValue)\n        {\n            var deliveryMethod = await unit.Repository<DeliveryMethod>()\n                .GetByIdAsync((int)cart.DeliveryMethodId)\n                    ?? throw new Exception(\"Problem with delivery method\");\n\n            return (long)deliveryMethod.Price * 100;\n        }\n\n        return null;\n    }\n}"
  },
  {
    "path": "Infrastructure/Services/ResponseCacheService.cs",
    "content": "using System;\nusing System.Text.Json;\nusing Core.Interfaces;\nusing StackExchange.Redis;\n\nnamespace Infrastructure.Services;\n\npublic class ResponseCacheService(IConnectionMultiplexer redis) : IResponseCacheService\n{\n    private readonly IDatabase _database = redis.GetDatabase(1); // to use something other than default. \n\n    public async Task CacheResponseAsync(string cacheKey, object response, TimeSpan timeToLive)\n    {\n        if (response == null) return;\n\n        var options = new JsonSerializerOptions{PropertyNamingPolicy = JsonNamingPolicy.CamelCase};\n\n        var serializedResponse = JsonSerializer.Serialize(response, options);\n\n        await _database.StringSetAsync(cacheKey, serializedResponse, timeToLive);\n    }\n\n    public async Task<string?> GetCachedResponseAsync(string cacheKey)\n    {\n        var cachedResponse = await _database.StringGetAsync(cacheKey);\n\n        if (cachedResponse.IsNullOrEmpty) return null;\n\n        return cachedResponse;\n    }\n\n    public async Task RemoveCacheByPattern(string pattern)\n    {\n        var server = redis.GetServer(redis.GetEndPoints().First());\n        var keys = server.Keys(database: 1, pattern: $\"*{pattern}*\").ToArray();\n\n        if (keys.Length != 0)\n        {\n            await _database.KeyDeleteAsync(keys);\n        }\n    }\n}"
  },
  {
    "path": "README.MD",
    "content": "# Skinet Project Repository\n\nWelcome to the brand new version of the SkiNet app created for the Udemy training course available [here](https://www.udemy.com/course/learn-to-build-an-e-commerce-app-with-net-core-and-angular).\n\nThis app is built using .Net 9 and Angular 20 \n\n# Running the project\n\nYou can see a live demo of this project [here](https://skinet-course.azurewebsites.net/).\n\nYou can also run this app locally.  To run this project locally you will need to have installed:\n\n1. Docker\n2. .Net SDK v9\n3. NodeJS (at least version ^20.19.0 || ^22.12.0 || ^24.0.0) - Optional if you want to run the Angular app separately in development mode\n4. Clone the project in a User folder on your computer by running:\n\n```bash\n# you will of course need git installed to run this\ngit clone https://github.com/TryCatchLearn/skinet.git\ncd skinet\n```\n\n5. Restore the packages by running:\n\n```bash\n# From the solution folder (skinet)\ndotnet restore\n\n# Change directory to client to run the npm install.  Only necessary if you want to run\n# the angular app in development mode using the angular dev server\ncd client\nnpm install\n```\n\n6. Most of the functionality will work without Stripe but if you wish to see the payment functionality working too then you will need to create a Stripe account and populate the keys from Stripe.  In the API folder create a file called ‘appsettings.json’ with the following code:\n\n```json\n{\n    \"Logging\": {\n      \"LogLevel\": {\n        \"Default\": \"Information\",\n        \"Microsoft.AspNetCore\": \"Warning\"\n      }\n    },\n    \"StripeSettings\": {\n      \"PublishableKey\": \"pk_test_REPLACEME\",\n      \"SecretKey\": \"sk_test_REPLACEME\",\n      \"WhSecret\": \"whsec_REPLACEME\"\n    },\n    \"AllowedHosts\": \"*\"\n  }\n```\n\n7. To use the Stripe webhook you will also need to use the StripeCLI, and when you run this you will be given a whsec key which you will need to add to the appsettings.json.   To get this key and instructions on how to install the Stripe CLI you can go to your Stripe dashboad ⇒ Developers ⇒ Webhooks ⇒ Add local listener.   The whsec key will be visible in the terminal when you run Stripe.\n8. Once you have the Stripe CLI you can then run this so it listens to stripe events and forward them to the .Net API:\n\n```bash\n#login to stripe\nstripe login\n\n# listen to stripe events and forward them to the API\nstripe listen --forward-to https://localhost:5001/api/payments/webhook -e payment_intent.succeeded\n```\n\n9. The app uses both Sql Server and Redis.   To start these services then you need to run this command from the solution folder.  These are both configured to run on their default ports so ensure you do not have a conflicting DB server running on either port 1433 or port 6379 on your computer:\n\n```bash\n# in the skinet folder (root directory of the app)\ndocker compose up -d \n```\n\n10. You can then run the app and browse to it locally by running:\n\n```bash\n# run this from the API folder\ncd API\ndotnet run\n```\n\n11. You can then browse to the app on https://localhost:5001\n12. If you wish to run the Angular app in development mode you will need to install a self signed SSL certificate.  The client app is using an SSL certificate generated by mkcert.   To allow this to work on your computer you will need to first install mkcert using the instructions provided in its repo [here](https://github.com/FiloSottile/mkcert), then run the following command:\n\n```bash\n# cd into the client ssl folder\ncd client/ssl\nmkcert localhost\n```\n\n13. You can then run both the .Net app and the client app.\n\n```bash\n# terminal tab 1\ncd API\ndotnet run\n\n# terminal tab 2\nng serve\n```\n\n===\nIf you are looking for the repository for the version of this app created on .Net 8.0 and Angular v18 then this is available here:\n\nhttps://github.com/TryCatchLearn/Skinet-2024"
  },
  {
    "path": "client/.editorconfig",
    "content": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.ts]\nquote_type = single\nij_typescript_use_double_quotes = false\n\n[*.md]\nmax_line_length = off\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "client/.gitignore",
    "content": "# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.\n\n# Compiled output\n/dist\n/tmp\n/out-tsc\n/bazel-out\n\n# Node\n/node_modules\nnpm-debug.log\nyarn-error.log\n\n# IDEs and editors\n.idea/\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# Visual Studio Code\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.history/*\n\n# Miscellaneous\n/.angular/cache\n.sass-cache/\n/connect.lock\n/coverage\n/libpeerconnection.log\ntestem.log\n/typings\n\n# System files\n.DS_Store\nThumbs.db\n"
  },
  {
    "path": "client/.postcssrc.json",
    "content": "{\n  \"plugins\": {\n    \"@tailwindcss/postcss\": {}\n  }\n}"
  },
  {
    "path": "client/.vscode/extensions.json",
    "content": "{\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846\n  \"recommendations\": [\"angular.ng-template\"]\n}\n"
  },
  {
    "path": "client/.vscode/launch.json",
    "content": "{\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"name\": \"ng serve\",\n      \"type\": \"chrome\",\n      \"request\": \"launch\",\n      \"preLaunchTask\": \"npm: start\",\n      \"url\": \"http://localhost:4200/\"\n    },\n    {\n      \"name\": \"ng test\",\n      \"type\": \"chrome\",\n      \"request\": \"launch\",\n      \"preLaunchTask\": \"npm: test\",\n      \"url\": \"http://localhost:9876/debug.html\"\n    }\n  ]\n}\n"
  },
  {
    "path": "client/.vscode/tasks.json",
    "content": "{\n  // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558\n  \"version\": \"2.0.0\",\n  \"tasks\": [\n    {\n      \"type\": \"npm\",\n      \"script\": \"start\",\n      \"isBackground\": true,\n      \"problemMatcher\": {\n        \"owner\": \"typescript\",\n        \"pattern\": \"$tsc\",\n        \"background\": {\n          \"activeOnStart\": true,\n          \"beginsPattern\": {\n            \"regexp\": \"(.*?)\"\n          },\n          \"endsPattern\": {\n            \"regexp\": \"bundle generation complete\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"npm\",\n      \"script\": \"test\",\n      \"isBackground\": true,\n      \"problemMatcher\": {\n        \"owner\": \"typescript\",\n        \"pattern\": \"$tsc\",\n        \"background\": {\n          \"activeOnStart\": true,\n          \"beginsPattern\": {\n            \"regexp\": \"(.*?)\"\n          },\n          \"endsPattern\": {\n            \"regexp\": \"bundle generation complete\"\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "client/README.md",
    "content": "# Client\n\nThis project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.0.4.\n\n## Development server\n\nTo start a local development server, run:\n\n```bash\nng serve\n```\n\nOnce the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files.\n\n## Code scaffolding\n\nAngular CLI includes powerful code scaffolding tools. To generate a new component, run:\n\n```bash\nng generate component component-name\n```\n\nFor a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:\n\n```bash\nng generate --help\n```\n\n## Building\n\nTo build the project run:\n\n```bash\nng build\n```\n\nThis will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed.\n\n## Running unit tests\n\nTo execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:\n\n```bash\nng test\n```\n\n## Running end-to-end tests\n\nFor end-to-end (e2e) testing, run:\n\n```bash\nng e2e\n```\n\nAngular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.\n\n## Additional Resources\n\nFor more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.\n"
  },
  {
    "path": "client/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"client\": {\n      \"projectType\": \"application\",\n      \"schematics\": {\n        \"@schematics/angular:component\": {\n          \"style\": \"scss\",\n          \"type\": \"component\"\n        },\n        \"@schematics/angular:service\": {\n          \"type\": \"service\"\n        }\n      },\n      \"root\": \"\",\n      \"sourceRoot\": \"src\",\n      \"prefix\": \"app\",\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular/build:application\",\n          \"options\": {\n            \"outputPath\": {\n              \"base\": \"../API/wwwroot\",\n              \"browser\": \"\"\n            },\n            \"browser\": \"src/main.ts\",\n            \"polyfills\": [\n              \"zone.js\"\n            ],\n            \"tsConfig\": \"tsconfig.app.json\",\n            \"inlineStyleLanguage\": \"scss\",\n            \"assets\": [\n              {\n                \"glob\": \"**/*\",\n                \"input\": \"public\"\n              }\n            ],\n            \"styles\": [\n              \"@angular/material/prebuilt-themes/azure-blue.css\",\n              \"src/tailwind.css\",\n              \"src/styles.scss\"\n            ]\n          },\n          \"configurations\": {\n            \"production\": {\n              \"budgets\": [\n                {\n                  \"type\": \"initial\",\n                  \"maximumWarning\": \"1Mb\",\n                  \"maximumError\": \"2MB\"\n                },\n                {\n                  \"type\": \"anyComponentStyle\",\n                  \"maximumWarning\": \"4kB\",\n                  \"maximumError\": \"8kB\"\n                }\n              ],\n              \"outputHashing\": \"all\"\n            },\n            \"development\": {\n              \"optimization\": false,\n              \"extractLicenses\": false,\n              \"sourceMap\": true,\n              \"fileReplacements\": [\n                {\n                  \"replace\": \"src/environments/environment.ts\",\n                  \"with\": \"src/environments/environment.development.ts\"\n                }\n              ]\n            }\n          },\n          \"defaultConfiguration\": \"production\"\n        },\n        \"serve\": {\n          \"builder\": \"@angular/build:dev-server\",\n          \"options\": {\n            \"ssl\": true,\n            \"sslCert\": \"ssl/localhost.pem\",\n            \"sslKey\": \"ssl/localhost-key.pem\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"buildTarget\": \"client:build:production\"\n            },\n            \"development\": {\n              \"buildTarget\": \"client:build:development\"\n            }\n          },\n          \"defaultConfiguration\": \"development\"\n        },\n        \"extract-i18n\": {\n          \"builder\": \"@angular/build:extract-i18n\"\n        },\n        \"test\": {\n          \"builder\": \"@angular/build:karma\",\n          \"options\": {\n            \"polyfills\": [\n              \"zone.js\",\n              \"zone.js/testing\"\n            ],\n            \"tsConfig\": \"tsconfig.spec.json\",\n            \"inlineStyleLanguage\": \"scss\",\n            \"assets\": [\n              {\n                \"glob\": \"**/*\",\n                \"input\": \"public\"\n              }\n            ],\n            \"styles\": [\n              \"@angular/material/prebuilt-themes/azure-blue.css\",\n              \"src/styles.scss\"\n            ]\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "client/package.json",
    "content": "{\n  \"name\": \"client\",\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": \"ng build\",\n    \"watch\": \"ng build --watch --configuration development\",\n    \"test\": \"ng test\"\n  },\n  \"prettier\": {\n    \"overrides\": [\n      {\n        \"files\": \"*.html\",\n        \"options\": {\n          \"parser\": \"angular\"\n        }\n      }\n    ]\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"@angular/cdk\": \"^20.0.4\",\n    \"@angular/common\": \"^20.0.0\",\n    \"@angular/compiler\": \"^20.0.0\",\n    \"@angular/core\": \"^20.0.0\",\n    \"@angular/forms\": \"^20.0.0\",\n    \"@angular/material\": \"^20.0.4\",\n    \"@angular/platform-browser\": \"^20.0.0\",\n    \"@angular/router\": \"^20.0.0\",\n    \"@microsoft/signalr\": \"^8.0.7\",\n    \"@stripe/stripe-js\": \"^7.4.0\",\n    \"@tailwindcss/postcss\": \"^4.1.11\",\n    \"nanoid\": \"^5.1.5\",\n    \"rxjs\": \"~7.8.0\",\n    \"tailwindcss\": \"^4.1.11\",\n    \"tslib\": \"^2.3.0\",\n    \"zone.js\": \"~0.15.0\"\n  },\n  \"devDependencies\": {\n    \"@angular/build\": \"^20.0.4\",\n    \"@angular/cli\": \"^20.0.4\",\n    \"@angular/compiler-cli\": \"^20.0.0\",\n    \"@types/jasmine\": \"~5.1.0\",\n    \"jasmine-core\": \"~5.7.0\",\n    \"karma\": \"~6.4.0\",\n    \"karma-chrome-launcher\": \"~3.2.0\",\n    \"karma-coverage\": \"~2.2.0\",\n    \"karma-jasmine\": \"~5.1.0\",\n    \"karma-jasmine-html-reporter\": \"~2.1.0\",\n    \"typescript\": \"~5.8.2\"\n  }\n}\n"
  },
  {
    "path": "client/src/app/app.component.html",
    "content": "<app-header></app-header>\n\n<div class=\"container mt-24\">\n  <router-outlet></router-outlet>\n</div>"
  },
  {
    "path": "client/src/app/app.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/app.component.ts",
    "content": "import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { HeaderComponent } from \"./layout/header/header.component\";\n\n@Component({\n  selector: 'app-root',\n  imports: [HeaderComponent, RouterOutlet],\n  templateUrl: './app.component.html',\n  styleUrl: './app.component.scss'\n})\nexport class AppComponent  {\n  title = 'Skinet'\n}\n"
  },
  {
    "path": "client/src/app/app.config.ts",
    "content": "import { ApplicationConfig, inject, provideAppInitializer, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\n\nimport { routes } from './app.routes';\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\nimport { errorInterceptor } from './core/interceptors/error-interceptor';\nimport { loadingInterceptor } from './core/interceptors/loading-interceptor';\nimport { InitService } from './core/services/init.service';\nimport { lastValueFrom } from 'rxjs';\nimport { authInterceptor } from './core/interceptors/auth-interceptor';\n\nexport const appConfig: ApplicationConfig = {\n  providers: [\n    provideBrowserGlobalErrorListeners(),\n    provideZoneChangeDetection({ eventCoalescing: true }),\n    provideRouter(routes),\n    provideHttpClient(withInterceptors([errorInterceptor, loadingInterceptor, authInterceptor])),\n    provideAppInitializer(async () => {\n      const initService = inject(InitService);\n      return lastValueFrom(initService.init()).finally(() => {\n        const splash = document.getElementById('initial-splash');\n        if (splash) {\n          splash.remove();\n        }\n      })\n    }),\n    {\n      provide: MAT_DIALOG_DEFAULT_OPTIONS,\n      useValue: { autoFocus: 'dialog', restoreFocus: true }\n    }\n  ]\n};\n"
  },
  {
    "path": "client/src/app/app.routes.ts",
    "content": "import { Routes } from '@angular/router';\nimport { HomeComponent } from './features/home/home.component';\nimport { ShopComponent } from './features/shop/shop.component';\nimport { ProductDetailsComponent } from './features/shop/product-details/product-details.component';\nimport { TestErrorComponent } from './features/test-error/test-error.component';\nimport { ServerErrorComponent } from './shared/components/server-error/server-error.component';\nimport { NotFoundComponent } from './shared/components/not-found/not-found.component';\nimport { CartComponent } from './features/cart/cart.component';\nimport { authGuard } from './core/guards/auth-guard';\nimport { AdminComponent } from './features/admin/admin.component';\nimport { adminGuard } from './core/guards/admin-guard';\n\nexport const routes: Routes = [\n    { path: '', component: HomeComponent },\n    { path: 'shop', component: ShopComponent },\n    { path: 'shop/:id', component: ProductDetailsComponent },\n    {\n        path: 'orders',\n        loadChildren: () => import('./features/orders/routes').then(mod => mod.orderRoutes)\n    },\n    {\n        path: 'checkout',\n        loadChildren: () => import('./features/checkout/routes').then(mod => mod.checkoutRoutes)\n    },\n    {\n        path: 'account',\n        loadChildren: () => import('./features/account/routes').then(mod => mod.accountRoutes)\n    },\n    { path: 'cart', component: CartComponent },\n    { path: 'test-error', component: TestErrorComponent },\n    { path: 'server-error', component: ServerErrorComponent },\n    { path: 'admin', loadComponent: () => import('./features/admin/admin.component')\n        .then(c => c.AdminComponent), canActivate: [authGuard, adminGuard] },\n    { path: 'not-found', component: NotFoundComponent },\n    { path: '**', redirectTo: 'not-found', pathMatch: 'full' }\n];\n\n"
  },
  {
    "path": "client/src/app/app.spec.ts",
    "content": "import { TestBed } from '@angular/core/testing';\nimport { App } from './app';\n\ndescribe('App', () => {\n  beforeEach(async () => {\n    await TestBed.configureTestingModule({\n      imports: [App],\n    }).compileComponents();\n  });\n\n  it('should create the app', () => {\n    const fixture = TestBed.createComponent(App);\n    const app = fixture.componentInstance;\n    expect(app).toBeTruthy();\n  });\n\n  it('should render title', () => {\n    const fixture = TestBed.createComponent(App);\n    fixture.detectChanges();\n    const compiled = fixture.nativeElement as HTMLElement;\n    expect(compiled.querySelector('h1')?.textContent).toContain('Hello, client');\n  });\n});\n"
  },
  {
    "path": "client/src/app/core/guards/admin-guard.ts",
    "content": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AccountService } from '../services/account.service';\nimport { SnackbarService } from '../services/snackbar.service';\n\nexport const adminGuard: CanActivateFn = (route, state) => {\n  const accountService = inject(AccountService);\n  const router = inject(Router);\n  const snack = inject(SnackbarService);\n\n  if (accountService.isAdmin()) {\n    return true;\n  } else {\n    snack.error('Nope');\n    router.navigateByUrl('/shop');\n    return false;\n  }\n};\n"
  },
  {
    "path": "client/src/app/core/guards/auth-guard.ts",
    "content": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AccountService } from '../services/account.service';\nimport { map, of } from 'rxjs';\n\nexport const authGuard: CanActivateFn = (route, state) => {\n  const accountService = inject(AccountService);\n  const router = inject(Router);\n\n  if (accountService.currentUser()) {\n    return of(true);\n  } else {\n    return accountService.getAuthState().pipe(\n      map(auth => {\n        if (auth.isAuthenticated) {\n          return true;\n        } else {\n          router.navigate(['/account/login'], {queryParams: {returnUrl: state.url}});\n          return false;\n        }\n      })\n    );\n  }\n};\n"
  },
  {
    "path": "client/src/app/core/guards/empty-cart-guard.ts",
    "content": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { CartService } from '../services/cart.service';\nimport { SnackbarService } from '../services/snackbar.service';\n\nexport const emptyCartGuard: CanActivateFn = (route, state) => {\n  const cartService = inject(CartService);\n  const router = inject(Router);\n  const snack = inject(SnackbarService);\n\n  if (!cartService.cart() || cartService.cart()?.items.length === 0) {\n    snack.error('Your cart is empty');\n    router.navigateByUrl('/cart');\n    return false;\n  }\n  return true;\n};\n"
  },
  {
    "path": "client/src/app/core/guards/order-complete-guard.ts",
    "content": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { OrderService } from '../services/order.service';\n\nexport const orderCompleteGuard: CanActivateFn = (route, state) => {\n  const orderService = inject(OrderService);\n  const router = inject(Router);\n\n  if (orderService.orderComplete) {\n    return true;\n  } else {\n    router.navigateByUrl('/shop');\n    return false;\n  }\n};\n"
  },
  {
    "path": "client/src/app/core/interceptors/auth-interceptor.ts",
    "content": "import { HttpInterceptorFn } from '@angular/common/http';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n  const clonedRequest = req.clone({\n    withCredentials: true\n  });\n\n  return next(clonedRequest);\n};\n"
  },
  {
    "path": "client/src/app/core/interceptors/error-interceptor.ts",
    "content": "import { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { catchError, throwError } from 'rxjs';\nimport { SnackbarService } from '../services/snackbar.service';\n\nexport const errorInterceptor: HttpInterceptorFn = (req, next) => {\n  const router = inject(Router);\n  const snackbar = inject(SnackbarService);\n\n  return next(req).pipe(\n    catchError((err: HttpErrorResponse) => {\n      if (err.status === 400) {\n        if (err.error.errors) {\n          const modalStateErrors = [];\n          for (const key in err.error.errors) {\n            if (err.error.errors[key]) {\n              modalStateErrors.push(err.error.errors[key])\n            }\n          }\n          throw modalStateErrors.flat();\n        } else {\n          snackbar.error(err.error.title || err.error)\n        }\n      }\n      if (err.status === 401) {\n        snackbar.error(err.error.title || err.error)\n      }\n      if (err.status === 403) {\n        snackbar.error('Forbidden');\n      }\n      if (err.status === 404) {\n        router.navigateByUrl('/not-found');\n      }\n      if (err.status === 500) {\n        const navigationExtras: NavigationExtras = {state: {error: err.error}};\n        router.navigateByUrl('/server-error', navigationExtras);\n      }\n      return throwError(() => err)\n    })\n  )\n};\n"
  },
  {
    "path": "client/src/app/core/interceptors/loading-interceptor.ts",
    "content": "import { HttpInterceptorFn } from '@angular/common/http';\nimport { delay, finalize, identity } from 'rxjs';\nimport { BusyService } from '../services/busy.service';\nimport { inject } from '@angular/core';\nimport { environment } from '../../../environments/environment';\n\nexport const loadingInterceptor: HttpInterceptorFn = (req, next) => {\n  const busyService = inject(BusyService);\n  \n  busyService.busy();\n  \n  return next(req).pipe(\n    (environment.production ? identity : delay(500)),\n    finalize(() => busyService.idle())\n  )\n};\n"
  },
  {
    "path": "client/src/app/core/services/account.service.ts",
    "content": "import { computed, inject, Injectable, signal } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User, Address } from '../../shared/models/user';\nimport { map, tap } from 'rxjs';\nimport { SignalrService } from './signalr.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AccountService {\n  baseUrl = environment.baseUrl;\n  private http = inject(HttpClient);\n  private signalrService = inject(SignalrService);\n  currentUser = signal<User | null>(null);\n  isAdmin = computed(() => {\n    const roles = this.currentUser()?.roles;\n    return Array.isArray(roles) ? roles.includes('Admin') : roles === 'Admin'\n  })\n\n  login(values: any) {\n    let params = new HttpParams();\n    params = params.append('useCookies', true);\n    return this.http.post<User>(this.baseUrl + 'login', values, { params }).pipe(\n      tap(user => {\n        if (user) this.signalrService.createHubConnection()\n      })\n    )\n  }\n\n  register(values: any) {\n    return this.http.post<User>(this.baseUrl + 'account/register', values);\n  }\n\n  getUserInfo() {\n    return this.http.get<User>(this.baseUrl + 'account/user-info').pipe(\n      map(user => {\n        this.currentUser.set(user);\n        return user;\n      })\n    );\n  }\n\n  logout() {\n    return this.http.post(this.baseUrl + 'account/logout', {}).pipe(\n      tap(() => this.signalrService.stopHubConnection())\n    )\n  }\n\n  updateAddress(address: Address) {\n    return this.http.post(this.baseUrl + 'account/address', address).pipe(\n      tap(() => {\n        this.currentUser.update(user => {\n          if (user) user.address = address;\n          return user;\n        })\n      })\n    )\n  }\n\n  getAuthState() {\n    return this.http.get<{ isAuthenticated: boolean }>(this.baseUrl + 'account/auth-status');\n  }\n\n}\n"
  },
  {
    "path": "client/src/app/core/services/admin.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { OrderParams } from '../../shared/models/orderParams';\nimport { Order } from '../../shared/models/order';\nimport { Pagination } from '../../shared/models/pagination';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AdminService {\n  baseUrl = environment.baseUrl;\n  private http = inject(HttpClient);\n\n  getOrders(orderParams: OrderParams) {\n    let params = new HttpParams();\n    if (orderParams.filter && orderParams.filter !== 'All') {\n      params = params.append('status', orderParams.filter);\n    } \n    params = params.append('pageSize', orderParams.pageSize);\n    params = params.append('pageIndex', orderParams.pageNumber);\n    return this.http.get<Pagination<Order>>(this.baseUrl + 'admin/orders', {params});\n  }\n\n  getOrder(id: number) {\n    return this.http.get<Order>(this.baseUrl + 'admin/orders/' + id);\n  }\n\n  refundOrder(id: number) {\n    return this.http.post<Order>(this.baseUrl + 'admin/orders/refund/' + id, {});\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/busy.service.ts",
    "content": "import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BusyService {\n  loading = false;\n  busyRequestCount = 0;\n\n  busy() {\n    this.busyRequestCount++;\n    this.loading = true;\n  }\n  \n  idle() {\n    this.busyRequestCount--;\n    if (this.busyRequestCount <= 0) {\n      this.busyRequestCount = 0;\n      this.loading = false;\n    }\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/cart.service.ts",
    "content": "import { computed, inject, Injectable, signal } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HttpClient } from '@angular/common/http';\nimport { Cart, CartItem, Coupon } from '../../shared/models/cart';\nimport { Product } from '../../shared/models/product';\nimport { firstValueFrom, map, tap } from 'rxjs';\nimport { DeliveryMethod } from '../../shared/models/deliveryMethod';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CartService {\n  baseUrl = environment.baseUrl;\n  private http = inject(HttpClient)\n  cart = signal<Cart | null>(null);\n  itemCount = computed(() => {\n    return this.cart()?.items.reduce((sum, item) => sum + item.quantity, 0);\n  });\n  selectedDelivery = signal<DeliveryMethod | null>(null);\n  totals = computed(() => {\n    const cart = this.cart();\n    const delivery = this.selectedDelivery();\n\n    if (!cart) return null;\n    const subtotal = cart.items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n\n    let discountValue = 0;\n\n    if (cart.coupon) {\n      console.log(cart)\n      if (cart.coupon.amountOff) {\n        discountValue = cart.coupon.amountOff;\n      } else if (cart.coupon.percentOff) {\n        discountValue = subtotal * (cart.coupon.percentOff / 100);\n      }\n    }\n\n    const shipping = delivery ? delivery.price : 0;\n\n    const total = subtotal + shipping - discountValue\n\n    return {\n      subtotal,\n      shipping,\n      discount: discountValue,\n      total\n    };\n  })\n\n  applyDiscount(code: string) {\n    return this.http.get<Coupon>(this.baseUrl + 'coupons/' + code);\n  }\n\n  getCart(id: string) {\n    return this.http.get<Cart>(this.baseUrl + 'cart?id=' + id).pipe(\n      map(cart => {\n        this.cart.set(cart);\n        return cart;\n      })\n    )\n  }\n\n  setCart(cart: Cart) {\n    return this.http.post<Cart>(this.baseUrl + 'cart', cart).pipe(\n      tap(cart => {\n        this.cart.set(cart)\n      })\n    )\n  }\n\n  async addItemToCart(item: CartItem | Product, quantity = 1) {\n    const cart = this.cart() ?? this.createCart();\n    if (this.isProduct(item)) {\n      item = this.mapProductToCartItem(item);\n    }\n    cart.items = this.addOrUpdateItem(cart.items, item, quantity);\n    await firstValueFrom(this.setCart(cart));\n  }\n\n  async removeItemFromCart(productId: number, quantity = 1) {\n    const cart = this.cart();\n    if (!cart) return;\n    const index = cart.items.findIndex(i => i.productId === productId);\n    if (index !== -1) {\n      if (cart.items[index].quantity > quantity) {\n        cart.items[index].quantity -= quantity;\n      } else {\n        cart.items.splice(index, 1);\n      }\n      if (cart.items.length === 0) {\n        this.deleteCart();\n      } else {\n        await firstValueFrom(this.setCart(cart));\n      }\n    }\n  }\n\n  deleteCart() {\n    this.http.delete(this.baseUrl + 'cart?id=' + this.cart()?.id).subscribe({\n      next: () => {\n        localStorage.removeItem('cart_id');\n        this.cart.set(null);\n      }\n    });\n  }\n\n  private addOrUpdateItem(items: CartItem[], item: CartItem, quantity: number) {\n    const index = items.findIndex(i => i.productId === item.productId);\n    if (index === -1) {\n      item.quantity = quantity;\n      items.push(item);\n    } else {\n      items[index].quantity += quantity;\n    }\n    return items;\n  }\n\n  private mapProductToCartItem(product: Product): CartItem {\n    return {\n      productId: product.id,\n      productName: product.name,\n      price: product.price,\n      quantity: 0,\n      pictureUrl: product.pictureUrl,\n      brand: product.brand,\n      type: product.type\n    };\n  }\n\n  private isProduct(item: CartItem | Product): item is Product {\n    return (item as Product).id !== undefined;\n  }\n\n  private createCart() {\n    const cart = new Cart();\n    localStorage.setItem('cart_id', cart.id);\n    return cart;\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/checkout.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HttpClient } from '@angular/common/http';\nimport { of, map } from 'rxjs';\nimport { DeliveryMethod } from '../../shared/models/deliveryMethod';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CheckoutService {\n  baseUrl = environment.baseUrl;\n  private http = inject(HttpClient);\n  deliveryMethods: DeliveryMethod[] = [];\n\n  getDeliveryMethods() {\n    if (this.deliveryMethods.length > 0) return of(this.deliveryMethods);\n    return this.http.get<DeliveryMethod[]>(this.baseUrl + 'payments/delivery-methods').pipe(\n      map(dms => {\n        this.deliveryMethods = dms.sort((a, b) => b.price - a.price);\n        return dms;\n      })\n    );\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/dialog.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { firstValueFrom } from 'rxjs';\nimport { ConfirmationDialogComponent } from '../../shared/components/confirmation-dialog/confirmation-dialog.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DialogService {\n  private dialog = inject(MatDialog);\n\n  confirm(title: string, message: string): Promise<boolean> {\n    const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n      width: '400px',\n      data: { title, message }\n    })\n\n    return firstValueFrom(dialogRef.afterClosed())\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/init.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { forkJoin, of, tap } from 'rxjs';\nimport { CartService } from './cart.service';\nimport { AccountService } from './account.service';\nimport { SignalrService } from './signalr.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InitService {\n  private cartService = inject(CartService);\n  private accountService = inject(AccountService);\n  private signalrService = inject(SignalrService);\n\n  init() {\n    const cartId = localStorage.getItem('cart_id');\n    const cart$ = cartId ? this.cartService.getCart(cartId) : of(null);\n\n    return forkJoin({\n      cart: cart$,\n      user: this.accountService.getUserInfo().pipe(\n        tap(user => {\n          if (user) this.signalrService.createHubConnection()\n        })\n      )\n    })\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/order.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HttpClient } from '@angular/common/http';\nimport { Order, OrderToCreate } from '../../shared/models/order';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OrderService {\n  baseUrl = environment.baseUrl;\n  private http = inject(HttpClient);\n  orderComplete = false;\n\n  createOrder(orderToCreate: OrderToCreate) {\n    return this.http.post<Order>(this.baseUrl + 'orders', orderToCreate);\n  }\n\n  getOrdersForUser() {\n    return this.http.get<Order[]>(this.baseUrl + 'orders');\n  }\n\n  getOrderDetailed(id: number) {\n    return this.http.get<Order>(this.baseUrl + 'orders/' + id);\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/shop.service.ts",
    "content": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Pagination } from '../../shared/models/pagination';\nimport { Product } from '../../shared/models/product';\nimport { ShopParams } from '../../shared/models/shopParams';\nimport { environment } from '../../../environments/environment';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ShopService {\n  baseUrl = environment.baseUrl;\n  private http = inject(HttpClient);\n  types: string[] = [];\n  brands: string[] = [];\n\n  getProducts(shopParams: ShopParams) {\n    let params = new HttpParams();\n\n    if (shopParams.brands.length > 0) {\n      params = params.append('brands', shopParams.brands.join(','));\n    }\n\n    if (shopParams.types.length > 0) {\n      params = params.append('types', shopParams.types.join(','));\n    }\n\n    if (shopParams.sort) {\n      params = params.append('sort', shopParams.sort)\n    }\n\n    if (shopParams.search) {\n      params = params.append('search', shopParams.search)\n    }\n\n    params = params.append('pageSize', shopParams.pageSize);\n    params = params.append('pageIndex', shopParams.pageNumber);\n\n    return this.http.get<Pagination<Product>>(this.baseUrl + 'products', { params });\n  }\n\n  getProduct(id: number) {\n    return this.http.get<Product>(this.baseUrl + 'products/' + id);\n  }\n\n  getBrands() {\n    if (this.brands.length > 0) return;\n    return this.http.get<string[]>(this.baseUrl + 'products/brands').subscribe({\n      next: response => this.brands = response,\n    })\n  }\n\n  getTypes() {\n    if (this.types.length > 0) return;\n    return this.http.get<string[]>(this.baseUrl + 'products/types').subscribe({\n      next: response => this.types = response,\n    })\n  }\n\n}\n"
  },
  {
    "path": "client/src/app/core/services/signalr.service.ts",
    "content": "import { Injectable, signal } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HubConnection, HubConnectionBuilder, HubConnectionState } from '@microsoft/signalr';\nimport { Order } from '../../shared/models/order';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SignalrService {\n  hubUrl = environment.hubUrl;\n  hubConnection?: HubConnection;\n  orderSignal = signal<Order | null>(null);\n\n  createHubConnection() {\n    this.hubConnection = new HubConnectionBuilder()\n      .withUrl(this.hubUrl, {\n        withCredentials: true\n      })\n      .withAutomaticReconnect()\n      .build();\n\n    this.hubConnection.start()\n      .catch(error => console.log(error));\n\n    this.hubConnection.on('OrderCompleteNotification', (order: Order) => {\n      this.orderSignal.set(order)\n    })\n  }\n\n  stopHubConnection() {\n    if (this.hubConnection?.state === HubConnectionState.Connected) {\n      this.hubConnection.stop().catch(error => console.log(error))\n    }\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/snackbar.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SnackbarService {\n  snackbar = inject(MatSnackBar);\n\n  error(message: string) {\n    this.snackbar.open(message, 'Close', {\n      duration: 5000,\n      panelClass: ['snack-error']\n    });\n  }\n\n  success(message: string) {\n    this.snackbar.open(message, 'Close', {\n      duration: 5000,\n      panelClass: ['snack-success']\n    });\n  }\n}\n"
  },
  {
    "path": "client/src/app/core/services/stripe.service.ts",
    "content": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { HttpClient } from '@angular/common/http';\nimport { firstValueFrom, map } from 'rxjs';\nimport { Cart } from '../../shared/models/cart';\nimport { CartService } from './cart.service';\nimport { ConfirmationToken, Stripe, StripeAddressElement, StripeAddressElementOptions, StripeElements, StripePaymentElement, loadStripe } from '@stripe/stripe-js';\nimport { AccountService } from './account.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class StripeService {\n  baseUrl = environment.baseUrl;\n  private stripePromise: Promise<Stripe | null>;\n  private cartService = inject(CartService);\n  private accountService = inject(AccountService);\n  private http = inject(HttpClient);\n  clientSecret?: string;\n  private elements?: StripeElements;\n  private addressElement?: StripeAddressElement;\n  private paymentElement?: StripePaymentElement;\n\n  constructor() {\n    this.stripePromise = loadStripe(environment.stripePublicKey);\n  }\n\n  getStripeInstance(): Promise<Stripe | null> {\n    return this.stripePromise;\n  }\n\n  async initializeElements() {\n    if (!this.elements) {\n      const stripe = await this.getStripeInstance();\n      if (stripe) {\n        const cart = await firstValueFrom(this.createOrUpdatePaymentIntent());\n        this.elements = stripe.elements(\n          { clientSecret: cart.clientSecret, appearance: { labels: 'floating' } });\n      } else {\n        throw new Error('Stripe has not been loaded');\n      }\n    }\n    return this.elements;\n  }\n\n  async createPaymentElement() {\n    if (!this.paymentElement) {\n      const elements = await this.initializeElements();\n      if (elements) {\n        this.paymentElement = elements.create('payment');\n      } else {\n        throw new Error('Elements instance has not been initialised');\n      }\n    }\n    return this.paymentElement;\n  }\n\n\n  async createAddressElement() {\n    if (!this.addressElement) {\n      const elements = await this.initializeElements();\n      if (elements) {\n        const user = this.accountService.currentUser();\n        let defaultValues: StripeAddressElementOptions['defaultValues'] = {};\n\n        if (user) {\n          defaultValues.name = user.firstName + ' ' + user.lastName;\n        }\n\n        if (user?.address) {\n          defaultValues.address = {\n            line1: user.address.line1,\n            line2: user.address.line2,\n            city: user.address.city,\n            state: user.address.state,\n            country: user.address.country,\n            postal_code: user.address.postalCode\n          };\n        }\n\n        const options: StripeAddressElementOptions = {\n          mode: 'shipping',\n          defaultValues\n        };\n        this.addressElement = elements.create('address', options);\n      } else {\n        throw new Error('Elements instance has not been loaded');\n      }\n    }\n    return this.addressElement;\n  }\n\n  async createConfirmationToken() {\n    const stripe = await this.getStripeInstance();\n    const elements = await this.initializeElements();\n    const result = await elements.submit();\n    if (result.error) throw new Error(result.error.message);\n    if (stripe) {\n      return await stripe.createConfirmationToken({ elements });\n    } else {\n      throw new Error('Stripe not available');\n    }\n  }\n\n  async confirmPayment(confirmationToken: ConfirmationToken) {\n    const stripe = await this.getStripeInstance();\n    const elements = await this.initializeElements();\n    const result = await elements.submit();\n    if (result.error) throw new Error(result.error.message);\n\n    const clientSecret = this.cartService.cart()?.clientSecret;\n    if (stripe && clientSecret) {\n      return await stripe.confirmPayment({\n        clientSecret: clientSecret,\n        confirmParams: {\n          confirmation_token: confirmationToken.id\n        },\n        redirect: 'if_required'\n      })\n    } else {\n      throw new Error('Unable to load stripe');\n    }\n  }\n\n  createOrUpdatePaymentIntent() {\n    const cart = this.cartService.cart();\n    const hasClientSecret = !!cart?.clientSecret;\n    if (!cart) throw new Error('Problem with cart');\n    return this.http.post<Cart>(this.baseUrl + 'payments/' + cart.id, {}).pipe(\n      map(async cart => {\n        if (!hasClientSecret) {\n          await firstValueFrom(this.cartService.setCart(cart));\n          return cart;\n        }\n        return cart;\n      })\n    )\n  }\n\n  disposeElements() {\n    this.elements = undefined;\n    this.addressElement = undefined;\n    this.paymentElement = undefined;\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/account/login/login.component.html",
    "content": "<mat-card class=\"max-w-lg mx-auto mt-32 p-8 bg-white\">\n    <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\n        <div class=\"text-center mb-6\">\n            <h1 class=\"text-3xl font-semibold text-primary\">Login</h1>\n        </div>\n        <mat-form-field appearance=\"outline\" class=\"w-full mb-4\">\n            <mat-label>Email address</mat-label>\n            <input matInput formControlName=\"email\" type=\"email\"\n                placeholder=\"name@example.com\" />\n        </mat-form-field>\n        <mat-form-field appearance=\"outline\" class=\"w-full mb-6\">\n            <mat-label>Password</mat-label>\n            <input matInput formControlName=\"password\" type=\"password\"\n                placeholder=\"Password\" />\n        </mat-form-field>\n        <button mat-flat-button type=\"submit\" color=\"primary\"\n            class=\"w-full py-2\">Sign in</button>\n    </form>\n</mat-card>"
  },
  {
    "path": "client/src/app/features/account/login/login.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/account/login/login.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCard } from '@angular/material/card';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AccountService } from '../../../core/services/account.service';\n\n@Component({\n  selector: 'app-login',\n  imports: [ReactiveFormsModule, MatCard, MatFormField, MatInput, MatButton, MatLabel],\n  templateUrl: './login.component.html',\n  styleUrl: './login.component.scss'\n})\nexport class LoginComponent {\n  private fb = inject(FormBuilder);\n  private accountService = inject(AccountService);\n  private router = inject(Router);\n  private activatedRoute = inject(ActivatedRoute);\n  returnUrl = '/shop';\n\n  constructor() {\n    const url = this.activatedRoute.snapshot.queryParams['returnUrl'];\n    if (url) this.returnUrl = url;\n  }\n\n  loginForm = this.fb.group({\n    email: [''],\n    password: ['']\n  })\n\n  onSubmit() {\n    this.accountService.login(this.loginForm.value).subscribe({\n      next: () => {\n        this.accountService.getUserInfo().subscribe();\n        this.router.navigateByUrl(this.returnUrl);\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/account/register/register.component.html",
    "content": "<mat-card class=\"max-w-lg mx-auto mt-32 p-8 bg-white\">\n    <form [formGroup]=\"registerForm\" (ngSubmit)=\"onSubmit()\">\n        <div class=\"text-center mb-6\">\n            <h1 class=\"text-3xl font-semibold text-primary\">Register</h1>\n        </div>\n        <app-text-input label=\"First name\" formControlName=\"firstName\" />\n        <app-text-input label=\"Last name\" formControlName=\"lastName\" />\n        <app-text-input label=\"Email address\" formControlName=\"email\" />\n        <app-text-input label=\"Password\" formControlName=\"password\" type=\"password\" />\n        \n        @if (validationErrors.length > 0) {\n            <div class=\"mb-3 p-4 bg-red-100 text-red-500\">\n              <ul class=\"list-disc px-3\">\n                @for (error of validationErrors; track error) {\n                  <li>{{error}}</li>\n                }\n              </ul>\n            </div>\n          }\n        <button \n            [disabled]=\"registerForm.invalid\"\n            mat-flat-button \n            type=\"submit\" \n            class=\"w-full py-2\">Register</button>\n    </form>\n</mat-card>"
  },
  {
    "path": "client/src/app/features/account/register/register.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/account/register/register.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCard } from '@angular/material/card';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { Router } from '@angular/router';\nimport { AccountService } from '../../../core/services/account.service';\nimport { SnackbarService } from '../../../core/services/snackbar.service';\nimport { JsonPipe } from '@angular/common';\nimport { TextInputComponent } from \"../../../shared/components/text-input/text-input.component\";\n\n@Component({\n  selector: 'app-register',\n  imports: [\n    MatCard,\n    ReactiveFormsModule,\n    MatButton,\n    TextInputComponent\n],\n  templateUrl: './register.component.html',\n  styleUrl: './register.component.scss'\n})\nexport class RegisterComponent {\n  private fb = inject(FormBuilder);\n  private accountService = inject(AccountService);\n  private router = inject(Router);\n  private snack = inject(SnackbarService);\n  validationErrors: any[] = [];\n\n  registerForm = this.fb.group({\n    firstName: ['', Validators.required],\n    lastName: ['', Validators.required],\n    email: ['', [Validators.required, Validators.email]],\n    password: ['', [Validators.required]]\n  })\n\n  onSubmit() {\n    this.accountService.register(this.registerForm.value).subscribe({\n      next: () => {\n        this.snack.success('Registration successful - you can now login!');\n        this.router.navigateByUrl('/account/login');\n      },\n      error: err => this.validationErrors = err\n    });\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/account/routes.ts",
    "content": "import { Route } from \"@angular/router\";\nimport { LoginComponent } from \"./login/login.component\";\nimport { RegisterComponent } from \"./register/register.component\";\n\nexport const accountRoutes: Route[] = [\n    {path: 'login', component: LoginComponent},\n    {path: 'register', component: RegisterComponent},\n]"
  },
  {
    "path": "client/src/app/features/admin/admin.component.html",
    "content": "<div>\n  <mat-tab-group>\n    <mat-tab label=\"Orders\">\n      <div class=\"flex justify-between items-center mt-2 max-w-screen-xl mx-auto\">\n        <h2 class=\"text-2xl font-semibold\">Customer orders</h2>\n        <mat-form-field appearance=\"outline\" class=\"mt-2\">\n          <mat-label>Filter by status</mat-label>\n          <mat-select (selectionChange)=\"onFilterSelect($event)\">\n            @for (status of statusOptions; track $index) {\n              <mat-option [value]=\"status\">{{status}}</mat-option>\n            }\n          </mat-select>\n        </mat-form-field>\n      </div>\n      <div class=\"p-4\">\n        <div class=\"mat-elevation-z8\">\n          <table mat-table [dataSource]=\"dataSource\" class=\"bg-white\">\n        \n            <ng-container matColumnDef=\"id\">\n              <th mat-header-cell *matHeaderCellDef> No. </th>\n              <td mat-cell *matCellDef=\"let order\"> {{order.id}} </td>\n            </ng-container>\n\n            <ng-container matColumnDef=\"buyerEmail\">\n              <th mat-header-cell *matHeaderCellDef> Buyer email </th>\n              <td mat-cell *matCellDef=\"let order\"> {{order.buyerEmail}} </td>\n            </ng-container>\n        \n            <ng-container matColumnDef=\"orderDate\">\n              <th mat-header-cell *matHeaderCellDef> Date </th>\n              <td mat-cell *matCellDef=\"let order\"> {{order.orderDate | date: 'short'}} </td>\n            </ng-container>\n\n            <ng-container matColumnDef=\"total\">\n              <th mat-header-cell *matHeaderCellDef> Total </th>\n              <td mat-cell *matCellDef=\"let order\"> {{order.total | currency}} </td>\n            </ng-container>\n        \n            <ng-container matColumnDef=\"status\">\n              <th mat-header-cell *matHeaderCellDef>Status</th>\n              <td mat-cell *matCellDef=\"let order\"> {{order.status}} </td>\n            </ng-container>\n        \n            <ng-container matColumnDef=\"action\">\n              <th mat-header-cell *matHeaderCellDef>Actions</th>\n              <td mat-cell *matCellDef=\"let order\">\n                <button mat-icon-button routerLink=\"/orders/{{order.id}}\" matTooltip=\"View\">\n                  <mat-icon class=\"text-blue-600\">visibility</mat-icon>\n                </button>\n                <button \n                  [disabled]=\"order.status === 'Refunded'\"\n                  mat-icon-button (click)=\"openConfirmDialog(order.id)\" \n                    matTooltip=\"Refund\">\n                  <mat-icon class=\"text-red-500\">undo</mat-icon>\n                </button>\n              </td>\n            </ng-container>\n\n            <ng-container *matNoDataRow>\n              <div class=\"p-4\">\n                No orders available for this filter\n              </div>\n            </ng-container>\n        \n            <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n            <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n          </table>\n        \n          <mat-paginator \n            class=\"bg-white\"\n            [pageSizeOptions]=\"[5, 10, 20]\"\n            [length]=\"totalItems\"\n            [pageSize]=\"orderParams.pageSize\"\n            showFirstLastButtons\n            (page)=\"onPageChange($event)\"\n          />\n        </div>\n      </div>\n    </mat-tab>\n\n    <mat-tab label=\"Catalog\">\n      <div class=\"p-4\">Catalog content</div>\n    </mat-tab>\n\n    <mat-tab label=\"Other\">\n      <div class=\"p-4\">Customer service</div>\n    </mat-tab>\n\n  </mat-tab-group>\n</div>\n"
  },
  {
    "path": "client/src/app/features/admin/admin.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/admin/admin.component.ts",
    "content": "import { Component, inject, OnInit } from '@angular/core';\nimport { AdminService } from '../../core/services/admin.service';\nimport { Order } from '../../shared/models/order';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { OrderParams } from '../../shared/models/orderParams';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatLabel, MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DatePipe, CurrencyPipe } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DialogService } from '../../core/services/dialog.service';\n\n@Component({\n  selector: 'app-admin',\n  imports: [\n    MatTabsModule,\n    MatTableModule,\n    MatPaginatorModule,\n    MatButtonModule,\n    MatIconModule,\n    MatTooltipModule,\n    DatePipe,\n    RouterLink,\n    MatLabel,\n    MatSelectModule,\n    CurrencyPipe\n  ],\n  templateUrl: './admin.component.html',\n  styleUrl: './admin.component.scss'\n})\nexport class AdminComponent implements OnInit {\n  private adminService = inject(AdminService);\n  private dialogService = inject(DialogService);\n  displayedColumns: string[] = ['id', 'buyerEmail', 'orderDate', 'total', 'status', 'action'];\n  dataSource = new MatTableDataSource<Order>([]);\n  orderParams = new OrderParams();\n  totalItems = 0;\n  statusOptions = ['All', 'PaymentReceived', 'PaymentMismatch', 'Refunded', 'Pending']\n\n  ngOnInit(): void {\n    this.loadOrders();\n  }\n\n  loadOrders(): void {\n    this.adminService.getOrders(this.orderParams).subscribe({\n      next: response => {\n        console.log('API Response:', response);\n        if (response.data) {\n          this.dataSource.data = response.data;\n          this.totalItems = response.count;\n        } else {\n          console.error('Invalid response data', response);\n        }\n      },\n      error: err => console.error('Error fetching orders', err)\n    });\n  }\n\n  onPageChange(event: PageEvent): void {\n    this.orderParams.pageNumber = event.pageIndex + 1;\n    this.orderParams.pageSize = event.pageSize;\n    this.loadOrders();\n  }\n\n  onFilterSelect(event: MatSelectChange) {\n    this.orderParams.filter = event.value;\n    this.orderParams.pageNumber = 1;\n    this.loadOrders();\n  }\n\n  async openConfirmDialog(id: number) {\n    const confirmed = await this.dialogService.confirm(\n      'Confirm refund',\n      'Are you sure you want to issue this refund? This cannot be undone'\n    )\n\n    if (confirmed) {\n      this.refundOrder(id);\n    }\n  }\n\n  refundOrder(id: number): void {\n    this.adminService.refundOrder(id).subscribe({\n      next: order => {\n        this.dataSource.data = this.dataSource.data.map(o => o.id === id ? order : o)\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/cart/cart-item/cart-item.component.html",
    "content": "<div class=\"rounded-lg border border-gray-200 bg-white p-4 shadow-sm mb-4\">\n    <div class=\"flex items-center justify-between gap-6\">\n        <a routerLink=\"/shop/{{item().productId}}\" class=\"shrink order-1\">\n            <img class=\"h-20 w-20\" src=\"{{item().pictureUrl}}\"\n                alt=\"product image\">\n        </a>\n        <div class=\"flex items-center justify-between order-3\">\n            <div class=\"flex items-center align-middle gap-3\">\n                <button mat-icon-button>\n                    <mat-icon class=\"text-red-600\" (click)=\"decrementQuantity()\">remove</mat-icon>\n                </button>\n\n                <div class=\"font-semibold text-xl mb-1\">\n                    {{item().quantity}}</div>\n\n                <button mat-icon-button (click)=\"incrementQuantity()\">\n                    <mat-icon class=\"text-green-600\">add</mat-icon>\n                </button>\n            </div>\n\n            <div class=\"text-end order-4 w-32\">\n                <p class=\"font-bold text-xl text-gray-900\">{{item().price |\n                    currency}}</p>\n            </div>\n        </div>\n\n        <div class=\"w-full flex flex-col flex-1 space-y-4 order-2 max-w-md\">\n            <a routerLink=\"/shop/{{item().productId}}\" class=\"font-medium\">\n                {{item().productName}}\n            </a>\n\n            <div class=\"flex items-center gap-4\">\n                <button (click)=\"removeItemFromCart()\" mat-button class=\"text-red-700 flex gap-2 items-center\">\n                    <mat-icon>delete</mat-icon>\n                    <span>Delete</span>\n                </button>\n            </div>\n        </div>\n\n    </div>\n</div>"
  },
  {
    "path": "client/src/app/features/cart/cart-item/cart-item.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/cart/cart-item/cart-item.component.ts",
    "content": "import { Component, inject, input } from '@angular/core';\nimport { CartItem } from '../../../shared/models/cart';\nimport { RouterLink } from '@angular/router';\nimport { MatIcon, MatIconModule } from '@angular/material/icon';\nimport { CurrencyPipe } from '@angular/common';\nimport { CartService } from '../../../core/services/cart.service';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n  selector: 'app-cart-item',\n  imports: [\n    RouterLink,\n    MatIcon,\n    CurrencyPipe,\n    MatButton\n  ],\n  templateUrl: './cart-item.component.html',\n  styleUrl: './cart-item.component.scss'\n})\nexport class CartItemComponent {\n  cartService = inject(CartService);\n  item = input.required<CartItem>();\n\n  incrementQuantity() {\n    this.cartService.addItemToCart(this.item());\n  }\n\n  decrementQuantity() {\n    this.cartService.removeItemFromCart(this.item().productId, 1);\n  }\n\n  removeItemFromCart() {\n    this.cartService.removeItemFromCart(this.item().productId, this.item().quantity);\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/cart/cart.component.html",
    "content": "<section>\n  @if (cartService.cart()?.items?.length! > 0) {\n\n  <div class=\"flex w-full items-start gap-6 mt-32\">\n    <div class=\"w-3/4\">\n      @for (item of cartService.cart()?.items; track item.productId) {\n      <app-cart-item [item]=\"item\"></app-cart-item>\n      }\n    </div>\n    <div class=\"w-1/4\">\n      <app-order-summary></app-order-summary>\n    </div>\n  </div>\n\n  } @else {\n  <app-empty-state \n    message=\"Your shopping cart is empty\"\n    icon=\"remove_shopping_cart\"\n    actionText=\"Go to shop\"\n    (action)=\"onAction()\"\n  />\n  }\n\n</section>"
  },
  {
    "path": "client/src/app/features/cart/cart.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/cart/cart.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { CartService } from '../../core/services/cart.service';\nimport { CartItemComponent } from \"./cart-item/cart-item.component\";\nimport { OrderSummaryComponent } from \"../../shared/components/order-summary/order-summary.component\";\nimport { EmptyStateComponent } from \"../../shared/components/empty-state/empty-state.component\";\nimport { Router } from '@angular/router';\n\n@Component({\n  selector: 'app-cart',\n  imports: [CartItemComponent, OrderSummaryComponent, EmptyStateComponent],\n  templateUrl: './cart.component.html',\n  styleUrl: './cart.component.scss'\n})\nexport class CartComponent {\n  private router = inject(Router);\n  cartService = inject(CartService);\n  \n  onAction() {\n    this.router.navigateByUrl('/shop');\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/checkout/checkout-delivery/checkout-delivery.component.html",
    "content": "<div class=\"w-full\">\n    <mat-radio-group \n        [value]=\"cartService.selectedDelivery()?.id\" \n        (change)=\"updateDeliveryMethod($event.value)\"\n        class=\"grid grid-cols-2 gap-4\">\n        @for (method of checkoutService.deliveryMethods; track method.id) {\n        <label\n            class=\"p-3 border border-gray-200 cursor-pointer w-full h-full hover:bg-purple-100\">\n            <mat-radio-button \n                [value]=\"method\" \n                [checked]=\"cartService.selectedDelivery() === method\"\n                class=\"w-full h-full\">\n                <div class=\"flex flex-col w-full h-full\">\n                    <strong>{{ method.shortName }} - {{ method.price | currency\n                        }}</strong>\n                    <span class=\"text-sm\">{{ method.description }}</span>\n                </div>\n            </mat-radio-button>\n        </label>\n        }\n    </mat-radio-group>\n</div>"
  },
  {
    "path": "client/src/app/features/checkout/checkout-delivery/checkout-delivery.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/checkout/checkout-delivery/checkout-delivery.component.ts",
    "content": "import { Component, inject, output } from '@angular/core';\nimport { CheckoutService } from '../../../core/services/checkout.service';\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { CurrencyPipe } from '@angular/common';\nimport { CartService } from '../../../core/services/cart.service';\nimport { DeliveryMethod } from '../../../shared/models/deliveryMethod';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n  selector: 'app-checkout-delivery',\n  imports: [\n    MatRadioModule,\n    CurrencyPipe\n  ],\n  templateUrl: './checkout-delivery.component.html',\n  styleUrl: './checkout-delivery.component.scss'\n})\nexport class CheckoutDeliveryComponent {\n  checkoutService = inject(CheckoutService);\n  cartService = inject(CartService);\n  deliveryComplete = output<boolean>();\n\n  ngOnInit() {\n    this.checkoutService.getDeliveryMethods().subscribe({\n      next: methods => {\n        if (this.cartService.cart()?.deliveryMethodId) {\n          const method = methods.find(d => d.id === this.cartService.cart()?.deliveryMethodId);\n          if (method) {\n            this.cartService.selectedDelivery.set(method);\n            this.deliveryComplete.emit(true);\n          }\n        }\n      }\n    })\n  }\n\n  async updateDeliveryMethod(dm: DeliveryMethod) {\n    this.cartService.selectedDelivery.set(dm);\n    const cart = this.cartService.cart();\n    if (cart) {\n      cart.deliveryMethodId = dm.id;\n      await firstValueFrom(this.cartService.setCart(cart));\n      this.deliveryComplete.emit(true);\n    };\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/checkout/checkout-review/checkout-review.component.html",
    "content": "<div class=\"mt-4 w-full\">\n  <h4 class=\"text-lg font-semibold\">Billing and delivery information</h4>\n  <dl>\n    <dt class=\"font-medium\">Shipping address</dt>\n    <dd class=\"mt-1 text-gray-500 flex\">\n      <span>{{confirmationToken?.shipping | address}}</span>\n    </dd>\n    <dt class=\"font-medium\">Payment details</dt>\n    <dd class=\"mt-1 text-gray-500 flex\">\n      <span>{{confirmationToken?.payment_method_preview | paymentCard}}</span>\n    </dd>\n  </dl>\n</div>\n\n<div class=\"mt-6 mx-auto\">\n  <div class=\"border-b border-gray-200\">\n    <table class=\"w-full text-center\">\n      <tbody class=\"divide-y divide-gray-200\">\n        @for (item of cartService.cart()?.items; track item.productId) {\n        <tr>\n          <td class=\"py-4\">\n            <div class=\"flex items-center gap-4\">\n              <img src=\"{{item.pictureUrl}}\" alt=\"product image\"\n                  class=\"w-10 h-10\">\n              <span>{{ item.productName }}</span>\n            </div>\n          </td>\n          <td class=\"p-4\">x{{ item.quantity }}</td>\n          <td class=\"p-4 text-right\">{{ item.price | currency }}</td>\n        </tr>\n        }\n      </tbody>\n    </table>\n  </div>\n</div>"
  },
  {
    "path": "client/src/app/features/checkout/checkout-review/checkout-review.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/checkout/checkout-review/checkout-review.component.ts",
    "content": "import { Component, inject, Input } from '@angular/core';\nimport { CartService } from '../../../core/services/cart.service';\nimport { CurrencyPipe } from '@angular/common';\nimport { ConfirmationToken } from '@stripe/stripe-js';\nimport { AddressPipe } from '../../../shared/pipes/address-pipe';\nimport { PaymentCardPipe } from '../../../shared/pipes/payment-card-pipe';\n\n@Component({\n  selector: 'app-checkout-review',\n  imports: [CurrencyPipe, AddressPipe, PaymentCardPipe],\n  templateUrl: './checkout-review.component.html',\n  styleUrl: './checkout-review.component.scss'\n})\nexport class CheckoutReviewComponent {\n  cartService = inject(CartService);\n  @Input() confirmationToken?: ConfirmationToken;\n}\n"
  },
  {
    "path": "client/src/app/features/checkout/checkout-success/checkout-success.component.html",
    "content": "@if (signalrService.orderSignal(); as order) {\n<section class=\"bg-white py-16\">\n    <div class=\"mx-auto max-w-2xl px-4\">\n        <h2 class=\"font-semibold text-2xl mb-2\">Thanks for your fake order!</h2>\n        <p class=\"text-gray-500 mb-8\">Your order <span\n                class=\"font-medium\">#{{order.id}}</span> will never be processed\n            as this\n            is a fake shop. We will not notify you by email once your order has\n            not been shipped.</p>\n        <div\n            class=\"space-y-2 rounded-lg border border-gray-100 bg-gray-50 p-6 mb-8\">\n            <dl class=\"flex items-center justify-between gap-4\">\n                <dt class=\"font-normal text-gray-500\">Date</dt>\n                <dd class=\"font-medium text-gray-900 text-end\">\n                    {{order.orderDate | date: 'medium'}}</dd>\n            </dl>\n            <dl class=\"flex items-center justify-between gap-4\">\n                <dt class=\"font-normal text-gray-500\">Payment method</dt>\n                <dd class=\"font-medium text-gray-900 text-end\">\n                    {{order.paymentSummary | paymentCard}}\n            </dl>\n            <dl class=\"flex items-center justify-between gap-4\">\n                <dt class=\"font-normal text-gray-500\">Address</dt>\n                <dd class=\"font-medium text-gray-900 text-end\">\n                    {{order.shippingAddress | address}}\n                </dd>\n            </dl>\n            <dl class=\"flex items-center justify-between gap-4\">\n                <dt class=\"font-normal text-gray-500\">Amount</dt>\n                <dd class=\"font-medium text-gray-900 text-end\">{{order.total |\n                    currency}}</dd>\n            </dl>\n        </div>\n        <div class=\"flex items-center space-x-4\">\n            <button routerLink=\"/orders/{{order.id}}\" mat-flat-button>View your\n                order</button>\n            <button routerLink=\"/shop\" mat-stroked-button>Continue\n                shopping</button>\n        </div>\n    </div>\n</section>\n} @else {\n<section class=\"bg-white py-16\">\n    <div class=\"mx-auto max-w-2xl px-4\">\n        <h2 class=\"font-semibold text-2xl mb-2\">Order processing, please wait</h2>\n\n        <div class=\"space-y-2 rounded-lg border border-gray-100 bg-gray-50 p-6 mb-8\">\n            <div class=\"flex flex-col justify-center items-center\">\n                <mat-spinner diameter=\"30\"></mat-spinner>\n                <p class=\"text-xl\">Loading order...</p>\n                <span>Your payment has been received, we are creating the order</span>\n            </div>\n        </div>\n        \n        <div class=\"flex items-center space-x-4\">\n            <button routerLink=\"/shop\" mat-stroked-button>Continue\n                shopping</button>\n        </div>\n    </div>\n</section>\n}"
  },
  {
    "path": "client/src/app/features/checkout/checkout-success/checkout-success.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/checkout/checkout-success/checkout-success.component.ts",
    "content": "import { Component, inject, OnDestroy } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { SignalrService } from '../../../core/services/signalr.service';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { CurrencyPipe, DatePipe } from '@angular/common';\nimport { AddressPipe } from '../../../shared/pipes/address-pipe';\nimport { PaymentCardPipe } from '../../../shared/pipes/payment-card-pipe';\nimport { OrderService } from '../../../core/services/order.service';\n\n@Component({\n  selector: 'app-checkout-success',\n  imports: [\n    MatButton,\n    RouterLink,\n    MatProgressSpinnerModule,\n    DatePipe,\n    AddressPipe,\n    CurrencyPipe,\n    PaymentCardPipe\n  ],\n  templateUrl: './checkout-success.component.html',\n  styleUrl: './checkout-success.component.scss'\n})\nexport class CheckoutSuccessComponent implements OnDestroy {\n  signalrService = inject(SignalrService);\n  private orderService = inject(OrderService);\n\n  ngOnDestroy(): void {\n    this.orderService.orderComplete = false;\n    this.signalrService.orderSignal.set(null);\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/checkout/checkout.component.html",
    "content": "<div class=\"flex mt-32 gap-6\">\n    <div class=\"w-3/4\">\n        <mat-stepper (selectionChange)=\"onStepChange($event)\" [linear]=\"true\"\n            #stepper class=\"bg-white border border-gray-200 shadow-sm\">\n            <mat-step label=\"Address\" [completed]=\"completionStatus().address\">\n                <div id=\"address-element\"></div>\n                <div class=\"flex justify-end mt-1\">\n                    <mat-checkbox [checked]=\"saveAddress\"\n                        (change)=\"onSaveAddressCheckboxChange($event)\">Save as\n                        default address</mat-checkbox>\n                </div>\n                <div class=\"flex justify-between mt-6\">\n                    <button class=\"z-0\" routerLink=\"/shop\"\n                        mat-stroked-button>Continue shopping</button>\n                    <button [disabled]=\"!completionStatus().address\" class=\"z-0\"\n                        matStepperNext mat-flat-button>Next</button>\n                </div>\n            </mat-step>\n            <mat-step label=\"Shipping\"\n                [completed]=\"completionStatus().delivery\">\n                <app-checkout-delivery\n                    (deliveryComplete)=\"handleDeliveryChange($event)\"></app-checkout-delivery>\n                <div class=\"flex justify-between mt-6\">\n                    <button matStepperPrevious mat-stroked-button>Back</button>\n                    <button [disabled]=\"!completionStatus().delivery\"\n                        matStepperNext mat-flat-button>Next</button>\n                </div>\n            </mat-step>\n            <mat-step label=\"Payment\" [completed]=\"completionStatus().card\">\n                <div id=\"payment-element\"></div>\n                <div class=\"flex justify-between mt-6\">\n                    <button matStepperPrevious mat-stroked-button>Back</button>\n                    <button [disabled]=\"!completionStatus().card\" matStepperNext\n                        mat-flat-button>Next</button>\n                </div>\n            </mat-step>\n            <mat-step label=\"Confirmation\">\n                <app-checkout-review\n                    [confirmationToken]=\"confirmationToken\"></app-checkout-review>\n                <div class=\"flex justify-between mt-6\">\n                    <button class=\"z-0\" matStepperPrevious\n                        mat-stroked-button>Back</button>\n                    <button [disabled]=\"!confirmationToken || loading\" (click)=\"confirmPayment(stepper)\" class=\"z-0\"\n                        mat-flat-button>\n                        @if (loading) {\n                        <mat-spinner diameter=\"20\"></mat-spinner>\n                        } @else {\n                        <span>Pay {{cartService.totals()?.total | currency}}</span>\n                        }\n                    </button>\n                </div>\n            </mat-step>\n        </mat-stepper>\n    </div>\n    <div class=\"w-1/4\">\n        <app-order-summary></app-order-summary>\n    </div>\n</div>"
  },
  {
    "path": "client/src/app/features/checkout/checkout.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/checkout/checkout.component.ts",
    "content": "import { Component, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { OrderSummaryComponent } from \"../../shared/components/order-summary/order-summary.component\";\nimport { MatStepper, MatStepperModule } from \"@angular/material/stepper\";\nimport { MatButton } from '@angular/material/button';\nimport { ConfirmationToken, StripeAddressElement, StripeAddressElementChangeEvent, StripePaymentElement, StripePaymentElementChangeEvent } from '@stripe/stripe-js';\nimport { StripeService } from '../../core/services/stripe.service';\nimport { Router, RouterLink } from '@angular/router';\nimport { SnackbarService } from '../../core/services/snackbar.service';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\nimport { firstValueFrom } from 'rxjs';\nimport { AccountService } from '../../core/services/account.service';\nimport { CheckoutDeliveryComponent } from \"./checkout-delivery/checkout-delivery.component\";\nimport { CheckoutReviewComponent } from \"./checkout-review/checkout-review.component\";\nimport { CartService } from '../../core/services/cart.service';\nimport { CurrencyPipe } from '@angular/common';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { OrderToCreate, ShippingAddress } from '../../shared/models/order';\nimport { OrderService } from '../../core/services/order.service';\n\n@Component({\n  selector: 'app-checkout',\n  imports: [\n    OrderSummaryComponent,\n    MatStepperModule,\n    MatButton,\n    RouterLink,\n    MatCheckboxModule,\n    CheckoutDeliveryComponent,\n    CheckoutReviewComponent,\n    CurrencyPipe,\n    MatProgressSpinner\n  ],\n  templateUrl: './checkout.component.html',\n  styleUrl: './checkout.component.scss'\n})\nexport class CheckoutComponent implements OnInit, OnDestroy {\n  private stripeService = inject(StripeService);\n  private accountService = inject(AccountService);\n  private snackbar = inject(SnackbarService);\n  private router = inject(Router);\n  private orderService = inject(OrderService);\n  cartService = inject(CartService);\n  addressElement?: StripeAddressElement;\n  paymentElement?: StripePaymentElement;\n  saveAddress = false;\n  completionStatus = signal<{ address: boolean, card: boolean, delivery: boolean }>(\n    { address: false, card: false, delivery: false });\n  confirmationToken?: ConfirmationToken;\n  loading = false;\n\n  async ngOnInit() {\n    try {\n      this.addressElement = await this.stripeService.createAddressElement();\n      this.addressElement.mount('#address-element');\n      this.addressElement.on('change', this.handleAddressChange);\n\n      this.paymentElement = await this.stripeService.createPaymentElement();\n      this.paymentElement.mount('#payment-element');\n      this.paymentElement.on('change', this.handlePaymentChange);\n    } catch (error: any) {\n      this.snackbar.error(error.message)\n    }\n  }\n\n  handleAddressChange = (event: StripeAddressElementChangeEvent) => {\n    this.completionStatus.update(state => {\n      state.address = event.complete;\n      return state;\n    })\n  }\n\n  handlePaymentChange = (event: StripePaymentElementChangeEvent) => {\n    this.completionStatus.update(state => {\n      state.card = event.complete;\n      return state;\n    })\n  }\n\n  handleDeliveryChange(event: boolean) {\n    this.completionStatus.update(state => {\n      state.delivery = event;\n      return state;\n    })\n  }\n\n  async getConfirmationToken() {\n    try {\n      if (Object.values(this.completionStatus()).every(status => status === true)) {\n        const result = await this.stripeService.createConfirmationToken();\n        if (result.error) throw new Error(result.error.message)\n        this.confirmationToken = result.confirmationToken;\n        console.log(this.confirmationToken);\n      }\n    } catch (error: any) {\n      this.snackbar.error(error.message)\n    }\n  }\n\n  async onStepChange(event: StepperSelectionEvent) {\n    if (event.selectedIndex === 1) {\n      if (this.saveAddress) {\n        const address = await this.getAddressFromStripeAddress();\n        address && firstValueFrom(this.accountService.updateAddress(address));\n      }\n    }\n    if (event.selectedIndex === 2) {\n      await firstValueFrom(this.stripeService.createOrUpdatePaymentIntent());\n    }\n    if (event.selectedIndex === 3) {\n      await this.getConfirmationToken();\n    }\n  }\n\n  async confirmPayment(stepper: MatStepper) {\n    this.loading = true;\n    try {\n      if (this.confirmationToken) {\n        const result = await this.stripeService.confirmPayment(this.confirmationToken);\n\n        if (result.paymentIntent?.status === 'succeeded') {\n          const order = await this.createOrderModel();\n          const orderResult = await firstValueFrom(this.orderService.createOrder(order));\n          if (orderResult) {\n            this.orderService.orderComplete = true;\n            this.cartService.deleteCart();\n            this.cartService.selectedDelivery.set(null);\n            this.router.navigateByUrl('/checkout/success');\n          } else {\n            throw new Error('Order creation failed');\n          }\n        } else if (result.error) {\n          throw new Error(result.error.message);\n        } else {\n          throw new Error('Something went wrong');\n        }\n      }\n    } catch (error: any) {\n      this.snackbar.error(error.message || 'Something went wrong');\n      stepper.previous();\n    } finally {\n      this.loading = false;\n    }\n  }\n\n  private async createOrderModel(): Promise<OrderToCreate> {\n    const cart = this.cartService.cart();\n    const shippingAddress = await this.getAddressFromStripeAddress() as ShippingAddress;\n    const card = this.confirmationToken?.payment_method_preview.card;\n\n    if (!cart?.id || !cart.deliveryMethodId || !card || !shippingAddress)\n      throw new Error('Problem creating order');\n\n    return {\n      cartId: cart.id,\n      paymentSummary: {\n        last4: +card.last4,\n        brand: card.brand,\n        expMonth: card.exp_month,\n        expYear: card.exp_year\n      },\n      deliveryMethodId: cart.deliveryMethodId,\n      shippingAddress,\n      discount: this.cartService.totals()?.discount\n    }\n  }\n\n  private async getAddressFromStripeAddress() {\n    const result = await this.addressElement?.getValue();\n    const address = result?.value.address;\n\n    if (address) {\n      return {\n        name: result.value.name,\n        line1: address.line1,\n        line2: address?.line2 || undefined,\n        city: address.city,\n        state: address.state,\n        country: address.country,\n        postalCode: address.postal_code\n      }\n    } else return null;\n  }\n\n  onSaveAddressCheckboxChange(event: MatCheckboxChange) {\n    this.saveAddress = event.checked\n  }\n\n  ngOnDestroy(): void {\n    this.stripeService.disposeElements();\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/checkout/routes.ts",
    "content": "import { Route } from \"@angular/router\";\nimport { CheckoutSuccessComponent } from \"./checkout-success/checkout-success.component\";\nimport { CheckoutComponent } from \"./checkout.component\";\nimport { authGuard } from \"../../core/guards/auth-guard\";\nimport { emptyCartGuard } from \"../../core/guards/empty-cart-guard\";\nimport { orderCompleteGuard } from \"../../core/guards/order-complete-guard\";\n\nexport const checkoutRoutes: Route[] = [\n    {path: '', component: CheckoutComponent, canActivate: [authGuard, emptyCartGuard]},\n    {path: 'success', component: CheckoutSuccessComponent, \n        canActivate: [authGuard, orderCompleteGuard]},\n]"
  },
  {
    "path": "client/src/app/features/home/home.component.html",
    "content": "<div class=\"max-w-screen-2xl mx-auto px-4 mt-32\">\n    <div class=\"flex flex-col items-center py-16 justify-center mt-20 rounded-2xl \n        shadow-xl relative\">\n        <img class=\"absolute inset-0 w-full h-full object-cover rounded-2xl\"\n            src=\"../images/hero1.jpg\" alt=\"ski resort image\">\n        <div class=\"flex flex-col p-8 rounded-2xl items-center relative\">\n            <h1 class=\"my-6 font-extrabold text-white text-6xl\">\n                Welcome to SkiNet!\n            </h1>\n            <button class=\"bg-gradient-to-r from-blue-600 to-cyan-500 font-semibold \n                    text-2xl text-white \n                    rounded-2xl px-8 py-4 border-2 border-transparent mt-8\"\n                routerLink=\"/shop\">\n                Go to shop\n            </button>\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "client/src/app/features/home/home.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/home/home.component.ts",
    "content": "import { Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n  selector: 'app-home',\n  imports: [ \n    RouterLink\n  ],\n  templateUrl: './home.component.html',\n  styleUrl: './home.component.scss'\n})\nexport class HomeComponent {\n\n}\n"
  },
  {
    "path": "client/src/app/features/orders/order-detailed/order-detailed.component.html",
    "content": "@if (order) {\n<mat-card class=\"bg-white py-8 max-w-screen-lg mx-auto shadow-md\">\n    <div class=\"px-4 w-full\">\n        <div class=\"flex justify-between items-center align-middle\">\n            <h2 class=\"text-2xl text-center font-semibold\">Order summary for order #{{order.id}}</h2>\n            <button (click)=\"onReturnClick()\" mat-stroked-button>{{buttonText}}</button>\n        </div>\n\n        <div class=\"mt-8 py-3 border-t border-gray-200 flex gap-16\">\n            <div class=\"space-y-2\">\n                <h4 class=\"text-lg font-semibold\">Billing and delivery\n                    information</h4>\n                <dl>\n                    <dt class=\"font-medium\">Shipping address</dt>\n                    <dd class=\"mt-1 font-light\">{{order.shippingAddress |\n                        address }}\n                </dl>\n                <dl>\n                    <dt class=\"font-medium\">Payment info</dt>\n                    <dd class=\"mt-1 font-light\">{{order.paymentSummary |\n                        paymentCard}}</dd>\n                </dl>\n            </div>\n            <div class=\"space-y-2\">\n                <h4 class=\"text-lg font-semibold\">Order details</h4>\n                <dl>\n                    <dt class=\"font-medium\">Email address</dt>\n                    <dd class=\"mt-1 font-light\">{{order.buyerEmail}}</dd>\n                </dl>\n                <dl>\n                    <dt class=\"font-medium\">Order status</dt>\n                    <dd class=\"mt-1 font-light\">{{order.status}}</dd>\n                </dl>\n                <dl>\n                    <dt class=\"font-medium\">Order date</dt>\n                    <dd class=\"mt-1 font-light\">{{order.orderDate | date:\n                        'medium'}}</dd>\n                </dl>\n            </div>\n        </div>\n\n        <div class=\"mt-4\">\n            <div class=\"border-y border-gray-200\">\n                <table class=\"w-full text-center\">\n                    <tbody class=\"divide-y divide-gray-200\">\n                        @for (item of order.orderItems; track item.productId) {\n                        <tr>\n                            <td class=\"py-4\">\n                                <div class=\"flex items-center gap-4\">\n                                    <img src=\"{{item.pictureUrl}}\"\n                                        alt=\"product image\" class=\"w-10 h-10\">\n                                    <span>{{item.productName}}</span>\n                                </div>\n                            </td>\n                            <td class=\"p-4\">x{{item.quantity}}</td>\n                            <td class=\"p-4 text-right\">{{item.price | currency}}\n                            </td>\n                        </tr>\n                        }\n                    </tbody>\n                </table>\n            </div>\n        </div>\n\n        <div class=\"space-y-4 rounded-lg border-t border-gray-200 p-4 bg-white\">\n            <p class=\"text-xl font-semibold\">Order summary</p>\n            <div class=\"space-y-4\">\n                <div class=\"space-y-2\">\n                    <dl class=\"flex items-center justify-between gap-4\">\n                        <dt class=\"font-medium text-gray-500\">Subtotal</dt>\n                        <dd class=\"font-medium text-gray-900\">\n                            {{order.subtotal | currency}}\n                        </dd>\n                    </dl>\n                    <dl class=\"flex items-center justify-between gap-4\">\n                        <dt class=\"font-medium text-gray-500\">Discount</dt>\n                        <dd class=\"font-medium text-green-500\">\n                            -{{order.discount | currency}}\n                        </dd>\n                    </dl>\n                    <dl class=\"flex items-center justify-between gap-4\">\n                        <dt class=\"font-medium text-gray-500\">Delivery fee</dt>\n                        <dd class=\"font-medium text-gray-900\">\n                            {{order.shippingPrice | currency}}\n                        </dd>\n                    </dl>\n                </div>\n\n                <dl\n                    class=\"flex items-center justify-between gap-4 border-t border-gray-200 pt-2\">\n                    <dt class=\"font-medium text-gray-500\">Total</dt>\n                    <dd class=\"font-medium text-gray-900\">\n                        {{order.total | currency}}\n                    </dd>\n                </dl>\n            </div>\n\n        </div>\n\n    </div>\n</mat-card>\n}"
  },
  {
    "path": "client/src/app/features/orders/order-detailed/order-detailed.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/orders/order-detailed/order-detailed.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { OrderService } from '../../../core/services/order.service';\nimport { Order } from '../../../shared/models/order';\nimport { CurrencyPipe, DatePipe } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { AddressPipe } from '../../../shared/pipes/address-pipe';\nimport { PaymentCardPipe } from '../../../shared/pipes/payment-card-pipe';\nimport { AccountService } from '../../../core/services/account.service';\nimport { AdminService } from '../../../core/services/admin.service';\n\n@Component({\n  selector: 'app-order-detailed',\n  imports: [\n    MatCardModule,\n    DatePipe,\n    MatButton,\n    AddressPipe,\n    PaymentCardPipe,\n    CurrencyPipe\n  ],\n  templateUrl: './order-detailed.component.html',\n  styleUrl: './order-detailed.component.scss'\n})\nexport class OrderDetailedComponent {\n  private orderService = inject(OrderService);\n  private activatedRoute = inject(ActivatedRoute);\n  private accountService = inject(AccountService);\n  private adminService = inject(AdminService);\n  private router = inject(Router);\n  order?: Order;\n  buttonText = this.accountService.isAdmin() ? 'Return to admin' : 'Return to orders'\n\n  ngOnInit(): void {\n    this.loadOrder();\n  }\n\n  onReturnClick() {\n    this.accountService.isAdmin()\n      ? this.router.navigateByUrl('/admin')\n      : this.router.navigateByUrl('/orders')\n  }\n\n  loadOrder() {\n    const id = this.activatedRoute.snapshot.paramMap.get('id');\n    if (!id) return;\n\n    const loadOrderData = this.accountService.isAdmin()\n      ? this.adminService.getOrder(+id)\n      : this.orderService.getOrderDetailed(+id);\n\n    loadOrderData.subscribe({\n      next: order => this.order = order\n    })\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/orders/order.component.html",
    "content": "<div class=\"mx-auto mt-32\">\n    <h2 class=\"font-semibold text-2xl mb-6 text-center\">My orders</h2>\n    <div class=\"flex flex-col\">\n        <div class=\"w-full\">\n            <table class=\"min-w-full divide-y divide-gray-200 cursor-pointer\">\n                <thead class=\"bg-gray-50\">\n                    <tr class=\"uppercase text-gray-600 text-sm\">\n                        <th class=\"text-center px-6 py-3\">Order</th>\n                        <th class=\"text-left\">Date</th>\n                        <th class=\"text-left\">Total</th>\n                        <th class=\"text-left\">Status</th>\n                    </tr>\n                </thead>\n                <tbody class=\"bg-white divide-y divide-gray-200\">\n                    @for (order of orders; track order.id) {\n                        <tr routerLink=\"/orders/{{order.id}}\" class=\"hover:bg-gray-100\">\n                            <th class=\"px-6 py-3\"># {{order.id}}</th>\n                            <td>{{order.orderDate | date: 'medium'}}</td>\n                            <td>{{order.total | currency}}</td>\n                            <td>{{order.status}}</td>\n                        </tr>\n                    }\n                </tbody>\n            </table>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "client/src/app/features/orders/order.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/orders/order.component.ts",
    "content": "import { CurrencyPipe, DatePipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { OrderService } from '../../core/services/order.service';\nimport { Order } from '../../shared/models/order';\n\n@Component({\n  selector: 'app-order',\n  imports: [\n    RouterLink,\n    CurrencyPipe,\n    DatePipe\n  ],\n  templateUrl: './order.component.html',\n  styleUrl: './order.component.scss'\n})\nexport class OrderComponent {\n  private orderService = inject(OrderService);\n  orders: Order[] = [];\n\n  ngOnInit(): void {\n    this.orderService.getOrdersForUser().subscribe({\n      next: orders => this.orders = orders\n    })\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/orders/routes.ts",
    "content": "import { Route } from \"@angular/router\";\nimport { OrderDetailedComponent } from \"./order-detailed/order-detailed.component\";\nimport { OrderComponent } from \"./order.component\";\nimport { authGuard } from \"../../core/guards/auth-guard\";\n\nexport const orderRoutes: Route[] = [\n    {path: '', component: OrderComponent, canActivate: [authGuard]},\n    {path: ':id', component: OrderDetailedComponent, canActivate: [authGuard]},\n]"
  },
  {
    "path": "client/src/app/features/shop/filters-dialog/filters-dialog.component.html",
    "content": "<div>\n  <h3 class=\"text-3xl text-center pt-6 mb-3\">Filters</h3>\n  <mat-divider></mat-divider>\n  <div class=\"flex p-4\">\n    <div class=\"w-1/2\">\n      <h4 class=\"font-semibold text-xl text-primary\">Brands</h4>\n      <mat-selection-list [(ngModel)]=\"selectedBrands\" [multiple]=\"true\">\n        @for (brand of shopService.brands; track brand) {\n          <mat-list-option [value]=\"brand\">{{brand}}</mat-list-option>\n        }\n      </mat-selection-list>\n    </div>\n    <div class=\"w-1/2\">\n      <h4 class=\"font-semibold text-xl text-primary\">Types</h4>\n      <mat-selection-list [(ngModel)]=\"selectedTypes\" [multiple]=\"true\">\n        @for (type of shopService.types; track type) {\n          <mat-list-option [value]=\"type\">{{type}}</mat-list-option>\n        }\n      </mat-selection-list>\n    </div>\n  </div>\n  <div class=\"flex justify-end p-4\">\n    <button mat-flat-button (click)=\"applyFilters()\">Apply Filters</button>\n  </div>\n</div>"
  },
  {
    "path": "client/src/app/features/shop/filters-dialog/filters-dialog.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/shop/filters-dialog/filters-dialog.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { ShopService } from '../../../core/services/shop.service';\nimport {MatDivider} from '@angular/material/divider';\nimport {MatListOption, MatSelectionList} from '@angular/material/list';\nimport { MatButton } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'app-filters-dialog',\n  imports: [\n    MatDivider,\n    MatSelectionList,\n    MatListOption,\n    MatButton,\n    FormsModule\n  ],\n  templateUrl: './filters-dialog.component.html',\n  styleUrl: './filters-dialog.component.scss'\n})\nexport class FiltersDialogComponent {\n  private dialogRef = inject(MatDialogRef<FiltersDialogComponent>);\n  data = inject(MAT_DIALOG_DATA);\n  shopService = inject(ShopService);\n\n  selectedBrands: string[] = this.data.selectedBrands;\n  selectedTypes: string[] = this.data.selectedTypes;\n\n  applyFilters() {\n    this.dialogRef.close({\n      selectedBrands: this.selectedBrands,\n      selectedTypes: this.selectedTypes\n    });\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/shop/product-details/product-details.component.html",
    "content": "@if (product) {\n<section class=\"py-8\">\n    <div class=\"max-w-screen-2xl px-4 mx-auto\">\n        <div class=\"grid grid-cols-2 gap-8\">\n            <div class=\"max-w-xl mx-auto\">\n                <img class=\"w-full\" src=\"{{product.pictureUrl}}\"\n                    alt=\"product image\" />\n            </div>\n\n            <div class=\"mt-6 sm:mt-8 lg:mt-0\">\n                <h1 class=\"text-2xl font-semibold text-gray-900\">\n                    {{product.name}}\n                </h1>\n\n                <p>You have {{quantityInCart}} of this item in your cart</p>\n\n                <div class=\"mt-4 items-center gap-4 flex\">\n                    <p class=\"text-3xl font-extrabold text-gray-900\">\n                        {{product.price | currency}}\n                    </p>\n                </div>\n\n                <div class=\"flex gap-4 mt-6\">\n                    <button (click)=\"updateCart()\" mat-flat-button \n                        [disabled]=\"quantity === quantityInCart\" \n                        class=\"match-input-height\">\n                        <mat-icon>shopping_cart</mat-icon>\n                       {{getButtonText()}}\n                    </button>\n\n                    <mat-form-field appearance=\"outline\" class=\"flex flex-row\">\n                        <mat-label>Quantity</mat-label>\n                        <input matInput min=\"0\" type=\"number\" [(ngModel)]=\"quantity\" \n                            type=\"number\">\n                    </mat-form-field>\n                </div>\n\n                <mat-divider class=\"my-6\"></mat-divider>\n\n                <p class=\"mt-6 text-gray-500\">\n                    {{product.description}}\n                </p>\n\n            </div>\n        </div>\n    </div>\n</section>\n\n}"
  },
  {
    "path": "client/src/app/features/shop/product-details/product-details.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/shop/product-details/product-details.component.ts",
    "content": "import { Component, inject, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ShopService } from '../../../core/services/shop.service';\nimport { Product } from '../../../shared/models/product';\nimport { CurrencyPipe } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatFormField, MatLabel } from '@angular/material/form-field'\nimport { MatInput } from '@angular/material/input';\nimport { CartService } from '../../../core/services/cart.service';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'app-product-details',\n  imports: [\n    MatIcon,\n    MatFormField,\n    MatDivider,\n    MatLabel,\n    CurrencyPipe,\n    MatButton,\n    MatFormField,\n    MatInput,\n    FormsModule\n  ],\n  templateUrl: './product-details.component.html',\n  styleUrl: './product-details.component.scss'\n})\nexport class ProductDetailsComponent implements OnInit {\n  private shopService = inject(ShopService);\n  private cartService = inject(CartService);\n  private activatedRoute = inject(ActivatedRoute);\n  product?: Product;\n  quantityInCart = 0;\n  quantity = 1;\n\n\n  ngOnInit() {\n    this.loadProduct();\n  }\n\n  loadProduct() {\n    const id = this.activatedRoute.snapshot.paramMap.get('id');\n    if (!id) return;\n    this.shopService.getProduct(+id).subscribe({\n      next: product => {\n        this.product = product\n        this.updateQuantityInBasket();\n      },\n      error: error => console.log(error)\n    });\n  }\n\n  updateCart() {\n    if (!this.product) return;\n    if (this.quantity > this.quantityInCart) {\n      const itemsToAdd = this.quantity - this.quantityInCart;\n      this.quantityInCart += itemsToAdd;\n      this.cartService.addItemToCart(this.product, itemsToAdd);\n    } else {\n      const itemsToRemove = this.quantityInCart - this.quantity;\n      this.quantityInCart -= itemsToRemove;\n      this.cartService.removeItemFromCart(this.product.id, itemsToRemove);\n    }\n  }\n\n  updateQuantityInBasket() {\n    this.quantityInCart = this.cartService.cart()?.items.find(item => item.productId === this.product?.id)?.quantity || 0;\n    this.quantity = this.quantityInCart || 1;\n  }\n\n  getButtonText() {\n    return this.quantityInCart > 0 ? 'Update Cart' : 'Add to Cart';\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/shop/product-item/product-item.component.html",
    "content": "@if (product) {\n<mat-card appearance=\"raised\" routerLink=\"/shop/{{product.id}}\" class=\"product-card\">\n    <img src=\"{{product.pictureUrl}}\" class=\"rounded-t-lg\" alt=\"image of {{product.name}}\">\n    <mat-card-content class=\"mt-2\">\n      <h2 class=\"text-sm font-semibold uppercase\">{{product.name}}</h2>\n      <p class=\"font-light\">{{product.price | currency}}</p>\n    </mat-card-content>\n    <mat-card-actions (click)=\"$event.stopPropagation()\">\n      <button mat-stroked-button class=\"w-full\" (click)=\"cartService.addItemToCart(product)\">\n        <mat-icon>add_shopping_cart</mat-icon>\n        Add to cart\n      </button>\n    </mat-card-actions>\n</mat-card>\n}"
  },
  {
    "path": "client/src/app/features/shop/product-item/product-item.component.scss",
    "content": ".product-card {\n  transition: transform 0.2s, box-shadow 0.2s;\n}\n\n.product-card:hover {\n  transform: translateY(-10px);\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n}"
  },
  {
    "path": "client/src/app/features/shop/product-item/product-item.component.ts",
    "content": "import { Component, inject, Input } from '@angular/core';\nimport { Product } from '../../../shared/models/product';\nimport { MatCard, MatCardActions, MatCardContent } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { CurrencyPipe } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { CartService } from '../../../core/services/cart.service';\n\n@Component({\n  selector: 'app-product-item',\n  imports: [\n    MatCard,\n    MatCardContent,\n    MatCardActions,\n    MatCardActions,\n    MatIcon,\n    CurrencyPipe,\n    MatButton,\n    RouterLink\n  ],\n  templateUrl: './product-item.component.html',\n  styleUrl: './product-item.component.scss'\n})\nexport class ProductItemComponent {\n @Input() product?: Product;\n cartService = inject(CartService)\n}\n"
  },
  {
    "path": "client/src/app/features/shop/shop.component.html",
    "content": "@if (products && products.count > 0) {\n<div class=\"flex flex-col gap-3\">\n  <div class=\"flex justify-between\">\n    <mat-paginator class=\"bg-white\" (page)=\"handlePageEvent($event)\"\n        [length]=\"products.count\" [pageSize]=\"shopParams.pageSize\"\n        [showFirstLastButtons]=\"true\" [pageSizeOptions]=\"pageSizeOptions\"\n        [pageIndex]=\"shopParams.pageNumber - 1\" aria-label=\"select page\">\n    </mat-paginator>\n\n    <form #searchForm=\"ngForm\" \n        (ngSubmit)=\"onSearchChange()\"\n        class=\"relative flex items-center w-full max-w-md mx-4\">\n      <input \n          type=\"search\"\n          class=\"block w-full p-4 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:border-blue-500 focus:ring-blue-500\"\n          placeholder=\"Search\" \n          name=\"search\"\n          [(ngModel)]=\"shopParams.search\" />\n      <button mat-icon-button type=\"submit\"\n          class=\"absolute inset-y-0 right-8 top-2 flex items-center pl-3\">\n        <mat-icon class=\"text-gray-500\">search</mat-icon>\n      </button>\n    </form>\n\n    <div class=\"flex gap-3\">\n      <button class=\"match-input-height\" mat-stroked-button (click)=\"openFiltersDialog()\">\n        <mat-icon>filter_list</mat-icon>\n        Filters\n      </button>\n      <button class=\"match-input-height\" mat-stroked-button [matMenuTriggerFor]=\"sortMenu\">\n        <mat-icon>swap_vert</mat-icon>\n        Sort\n      </button>\n    </div>\n\n  </div>\n\n  <div class=\"grid grid-cols-5 gap-4\">\n    @for (product of products.data; track product.id) {\n    <app-product-item [product]=\"product\"></app-product-item>\n    }\n  </div>\n</div>\n\n<mat-menu #sortMenu=\"matMenu\">\n  <mat-selection-list [multiple]=\"false\" #sortList\n      (selectionChange)=\"onSortChange($event)\">\n    @for (sort of sortOptions; track $index) {\n    <mat-list-option [value]=\"sort.value\"\n        [selected]=\"shopParams.sort === sort.value\">{{sort.name}}\n    </mat-list-option>\n    }\n  </mat-selection-list>\n</mat-menu>\n} @else {\n  <app-empty-state \n    message=\"No products match this filter\"\n    icon=\"filter_alt_off\"\n    actionText=\"Reset filters\"\n    (action)=\"resetFilters()\"\n  />\n}\n\n"
  },
  {
    "path": "client/src/app/features/shop/shop.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/shop/shop.component.ts",
    "content": "import { Component, inject, OnInit } from '@angular/core';\nimport { ShopService } from '../../core/services/shop.service';\nimport { Product } from '../../shared/models/product';\nimport { ProductItemComponent } from \"./product-item/product-item.component\";\nimport { MatDialog } from '@angular/material/dialog';\nimport { FiltersDialogComponent } from './filters-dialog/filters-dialog.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { MatListOption, MatSelectionList } from '@angular/material/list';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { ShopParams } from '../../shared/models/shopParams';\nimport { Pagination } from '../../shared/models/pagination';\nimport { FormsModule } from '@angular/forms';\nimport { EmptyStateComponent } from \"../../shared/components/empty-state/empty-state.component\";\n\n@Component({\n  selector: 'app-shop',\n  imports: [\n    ProductItemComponent,\n    MatButton,\n    MatIcon,\n    MatMenu,\n    MatSelectionList,\n    MatListOption,\n    MatMenuTrigger,\n    MatPaginator,\n    FormsModule,\n    EmptyStateComponent\n],\n  templateUrl: './shop.component.html',\n  styleUrl: './shop.component.scss'\n})\nexport class ShopComponent implements OnInit {\n  private shopService = inject(ShopService);\n  private dialogService = inject(MatDialog)\n  products?: Pagination<Product>;\n  sortOptions = [\n    { name: 'Alphabetical', value: 'name' },\n    { name: 'Price: Low-High', value: 'priceAsc' },\n    { name: 'Price: High-Low', value: 'priceDesc' },\n  ];\n  shopParams = new ShopParams();\n  pageSizeOptions = [5, 10, 15, 20];\n  pageEvent?: PageEvent;\n\n  ngOnInit() {\n    this.initialiseShop();\n  }\n\n  initialiseShop() {\n    this.shopService.getTypes();\n    this.shopService.getBrands();\n    this.getProducts();\n  }\n\n  resetFilters() {\n    this.shopParams = new ShopParams();\n    this.getProducts();\n  }\n\n  onSearchChange() {\n    this.shopParams.pageNumber = 1;\n    this.shopService.getProducts(this.shopParams).subscribe({\n      next: response => this.products = response,\n      error: error => console.error(error)\n    })\n  }\n\n  getProducts() {\n    this.shopService.getProducts(this.shopParams).subscribe({\n      next: response => this.products = response,\n      error: error => console.error(error)\n    })\n  }\n\n  onSortChange(event: any) {\n    this.shopParams.pageNumber = 1;\n    const selectedOption = event.options[0];\n    if (selectedOption) {\n      this.shopParams.sort = selectedOption.value;\n      this.getProducts();\n    }\n  }\n\n  openFiltersDialog() {\n    const dialogRef = this.dialogService.open(FiltersDialogComponent, {\n      minWidth: '500px',\n      data: {\n        selectedBrands: this.shopParams.brands,\n        selectedTypes: this.shopParams.types\n      }\n    });\n    dialogRef.afterClosed().subscribe({\n      next: result => {\n        if (result) {\n          this.shopParams.pageNumber = 1;\n          this.shopParams.types = result.selectedTypes;\n          this.shopParams.brands = result.selectedBrands;\n          this.getProducts();\n        }\n      },\n    });\n  }\n\n  handlePageEvent(event: PageEvent) {\n    this.shopParams.pageNumber = event.pageIndex + 1;\n    this.shopParams.pageSize = event.pageSize;\n    this.getProducts();\n  }\n}\n"
  },
  {
    "path": "client/src/app/features/test-error/test-error.component.html",
    "content": "<div class=\"mt-5 flex justify-center gap-4\">\n  <button (click)=\"get500Error()\" mat-stroked-button>Test 500 error</button>\n  <button (click)=\"get404Error()\" mat-stroked-button>Test 404 error</button>\n  <button (click)=\"get400Error()\" mat-stroked-button>Test 400 error</button>\n  <button (click)=\"get401Error()\" mat-stroked-button>Test 401 error</button>\n  <button (click)=\"get400ValidationError()\" mat-stroked-button>Test 400 validation error</button>\n</div>\n\n@if (validationErrors) {\n  <div class=\"mx-auto max-w-lg mt-5 bg-red-100\">\n    <ul class=\"space-y-2 p-2\">\n      @for (error of validationErrors; track $index) {\n        <li class=\"text-red-800\">{{error}}</li>\n      }\n    </ul>\n  </div>\n}"
  },
  {
    "path": "client/src/app/features/test-error/test-error.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/features/test-error/test-error.component.ts",
    "content": "import { HttpClient } from '@angular/common/http';\nimport { Component, inject } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { environment } from '../../../environments/environment';\n\n@Component({\n  selector: 'app-test-error',\n  imports: [\n    MatButton\n  ],\n  templateUrl: './test-error.component.html',\n  styleUrl: './test-error.component.scss'\n})\nexport class TestErrorComponent {\n  private http = inject(HttpClient);\n  baseUrl = environment.baseUrl;\n  validationErrors?: string[];\n\n  get404Error() {\n    this.http.get(this.baseUrl + 'buggy/notfound').subscribe({\n      next: response => console.log(response),\n      error: error => console.log(error)\n    });\n  }\n\n  get400Error() {\n    this.http.get(this.baseUrl + 'buggy/badrequest').subscribe({\n      next: response => console.log(response),\n      error: error => console.log(error)\n    });\n  }\n\n  get500Error() {\n    this.http.get(this.baseUrl + 'buggy/internalerror').subscribe({\n      next: response => console.log(response),\n      error: error => console.log(error)\n    });\n  }\n\n  get401Error() {\n    this.http.get(this.baseUrl + 'buggy/unauthorized').subscribe({\n      next: response => console.log(response),\n      error: error => console.log(error)\n    });\n  }\n\n  get400ValidationError() {\n    this.http.post(this.baseUrl + 'buggy/validationerror', {}).subscribe({\n      next: response => console.log(response),\n      error: error => this.validationErrors = error\n    });\n  }\n}\n"
  },
  {
    "path": "client/src/app/layout/header/header.component.html",
    "content": "<header class=\"shadow-md max-h-20 p-3 w-full fixed top-0 bg-white z-50\">\n  <div\n      class=\"flex align-middle items-center justify-between max-w-screen-2xl mx-auto\">\n    <img routerLink=\"/\" src=\"/images/logo.png\" alt=\"app logo\" class=\"max-h-16\">\n    <nav class=\"flex gap-3 my-2 uppercase text-2xl\">\n      <a routerLink=\"/\" routerLinkActive=\"active\"\n          [routerLinkActiveOptions]=\"{exact: true}\">Home</a>\n      <a routerLink=\"/shop\" routerLinkActive=\"active\">Shop</a>\n      <a routerLink=\"/test-error\" routerLinkActive=\"active\">Errors</a>\n      <a *appIsAdmin routerLink=\"/admin\" routerLinkActive=\"active\">Admin</a>\n    </nav>\n    <div class=\"flex gap-3 align-middle\">\n      <a matBadge=\"{{cartService.itemCount()}}\" routerLink=\"/cart\"\n          routerLinkActive=\"active\" matBadgeSize=\"large\"\n          class=\"custom-badge mt-2 mr-2\">\n        <mat-icon>shopping_cart</mat-icon>\n      </a>\n      @if (accountService.currentUser()) {\n      <div class=\"px-6\">\n        <button mat-button [matMenuTriggerFor]=\"menu\">\n          <mat-icon>arrow_drop_down</mat-icon>\n          <span>{{accountService.currentUser()?.email}}</span>\n        </button>\n        <mat-menu #menu=\"matMenu\" class=\"px-3\">\n          <button mat-menu-item routerLink=\"/cart\">\n            <mat-icon>shopping_cart</mat-icon>\n            My cart\n          </button>\n          <button mat-menu-item routerLink=\"/orders\">\n            <mat-icon>history</mat-icon>\n            View Orders\n          </button>\n          <mat-divider></mat-divider>\n          <button mat-menu-item (click)=\"logout()\">\n            <mat-icon>logout</mat-icon>\n            Logout</button>\n        </mat-menu>\n      </div>\n      } @else {\n      <button mat-stroked-button routerLink=\"/account/login\">Login</button>\n      <button mat-stroked-button\n          routerLink=\"/account/register\">Register</button>\n      }\n    </div>\n  </div>\n</header>\n\n@if (busyService.loading) {\n<mat-progress-bar class=\"fixed top-20 z-50\"\n    mode=\"indeterminate\"></mat-progress-bar>\n}"
  },
  {
    "path": "client/src/app/layout/header/header.component.scss",
    "content": ".custom-badge .mat-badge-content {\n  width: 24px;\n  height: 24px;\n  font-size: 14px;\n  line-height: 24px; \n}\n\n.custom-badge mat-icon {\n  font-size: 32px;\n  width: 32px;\n  height: 32px; \n}\n\na {\n  &.active {\n    color: #7d00fa\n  }\n}"
  },
  {
    "path": "client/src/app/layout/header/header.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatButton } from \"@angular/material/button\";\nimport { MatBadge } from \"@angular/material/badge\";\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { BusyService } from '../../core/services/busy.service';\nimport { CartService } from '../../core/services/cart.service';\nimport { AccountService } from '../../core/services/account.service';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatMenuTrigger, MatMenu, MatMenuItem } from '@angular/material/menu';\nimport { IsAdmin } from '../../shared/directives/is-admin';\n\n@Component({\n  selector: 'app-header',\n  imports: [\n    MatIcon,\n    MatButton,\n    MatBadge,\n    RouterLink,\n    RouterLinkActive,\n    MatProgressBar,\n    MatMenuTrigger,\n    MatMenu,\n    MatDivider,\n    MatMenuItem,\n    IsAdmin \n  ],\n  templateUrl: './header.component.html',\n  styleUrl: './header.component.scss'\n})\nexport class HeaderComponent {\n  busyService = inject(BusyService);\n  cartService = inject(CartService);\n  accountService = inject(AccountService);\n  private router = inject(Router);\n\n  logout() {\n    this.accountService.logout().subscribe({\n      next: () => {\n        this.accountService.currentUser.set(null);\n        this.router.navigateByUrl('/');\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "client/src/app/shared/components/confirmation-dialog/confirmation-dialog.component.html",
    "content": "<div class=\"p-4\">\n    <h2 class=\"text-lg font-semibold mb-4\">{{ data.title }}</h2>\n    <p class=\"mb-4\">{{ data.message }}</p>\n    <div class=\"flex justify-end space-x-2\">\n      <button\n        mat-stroked-button\n        color=\"warn\"\n        (click)=\"onCancel()\"\n      >\n        Cancel\n      </button>\n      <button\n        mat-flat-button\n        (click)=\"onConfirm()\"\n      >\n        Confirm\n      </button>\n    </div>\n  </div>\n\n"
  },
  {
    "path": "client/src/app/shared/components/confirmation-dialog/confirmation-dialog.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/shared/components/confirmation-dialog/confirmation-dialog.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n  selector: 'app-confirmation-dialog',\n  imports: [\n    MatButton \n  ],\n  templateUrl: './confirmation-dialog.component.html',\n  styleUrl: './confirmation-dialog.component.scss'\n})\nexport class ConfirmationDialogComponent {\n  dialogRef = inject(MatDialogRef<ConfirmationDialogComponent>);\n  data = inject(MAT_DIALOG_DATA);\n\n  onConfirm() {\n    this.dialogRef.close(true);\n  }\n\n  onCancel() {\n    this.dialogRef.close();\n  }\n}\n"
  },
  {
    "path": "client/src/app/shared/components/empty-state/empty-state.component.html",
    "content": "@if (busyService.busyRequestCount === 0) {\n<div class=\"max-w-screen-xl mx-auto mt-32 px-10 py-4 bg-white rounded-lg shadow-md w-full\">\n    <div class=\"flex flex-col items-center justify-center py-12 w-full\">\n        <mat-icon class=\"icon-display mb-8\">{{icon()}}</mat-icon>\n        <p class=\"text-gray-600 text-lg font-semibold mb-4\">\n            {{message()}}\n        </p>\n        <button (click)=\"onAction()\" mat-flat-button>{{actionText()}}</button>\n    </div>\n</div>\n}\n\n\n"
  },
  {
    "path": "client/src/app/shared/components/empty-state/empty-state.component.scss",
    "content": ".icon-display {\n    transform: scale(3);\n}"
  },
  {
    "path": "client/src/app/shared/components/empty-state/empty-state.component.ts",
    "content": "import { Component, inject, input, output } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { BusyService } from '../../../core/services/busy.service';\n\n@Component({\n  selector: 'app-empty-state',\n  imports: [\n    MatIcon, \n    MatButton \n  ],\n  templateUrl: './empty-state.component.html',\n  styleUrl: './empty-state.component.scss'\n})\nexport class EmptyStateComponent {\n  busyService = inject(BusyService);\n  message = input.required<string>();\n  icon = input.required<string>();\n  actionText = input.required<string>()\n  action = output<void>();\n\n  onAction() {\n    this.action.emit();\n  }\n}\n"
  },
  {
    "path": "client/src/app/shared/components/not-found/not-found.component.html",
    "content": "<div class=\"flex items-center justify-center min-h-96 bg-gray-100\">\n  <div class=\"text-center\">\n    <mat-icon class=\"text-purple-700 icon-display\">error_outline</mat-icon>\n    <h1 class=\"text-4xl font-bold text-gray-800 mt-4\">404</h1>\n    <p class=\"text-lg text-gray-600 mt-2\">Page Not Found</p>\n    <button routerLink=\"/shop\" class=\"mt-4\" mat-flat-button>Back to shop</button>\n  </div>\n</div>"
  },
  {
    "path": "client/src/app/shared/components/not-found/not-found.component.scss",
    "content": ".icon-display {\n  transform: scale(3);\n}"
  },
  {
    "path": "client/src/app/shared/components/not-found/not-found.component.ts",
    "content": "import { Component } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n  selector: 'app-not-found',\n  imports: [\n    MatIcon,\n    RouterLink,\n    MatButton\n  ],\n  templateUrl: './not-found.component.html',\n  styleUrl: './not-found.component.scss'\n})\nexport class NotFoundComponent {\n\n}\n"
  },
  {
    "path": "client/src/app/shared/components/order-summary/order-summary.component.html",
    "content": "<div class=\"mx-auto max-w-4xl flex-1 space-y-6 w-full\">\n  <div\n      class=\"space-y-4 rounded-lg border border-gray-200 bg-white p-4 shadow-sm\">\n    <p class=\"text-xl font-semibold\">Order summary</p>\n    <div class=\"space-y-4\">\n      <div class=\"space-y-2\">\n        <dl class=\"flex items-center justify-between gap-4\">\n          <dt class=\"font-medium text-gray-500\">Subtotal</dt>\n          <dd class=\"font-medium text-gray-900\">{{cartService.totals()?.subtotal\n            | currency}}</dd>\n        </dl>\n        <dl class=\"flex items-center justify-between gap-4\">\n          <dt class=\"font-medium text-gray-500\">Discount</dt>\n          <dd class=\"font-medium text-green-500\">\n            -{{cartService.totals()?.discount | currency}}</dd>\n        </dl>\n        <dl class=\"flex items-center justify-between gap-4\">\n          <dt class=\"font-medium text-gray-500\">Delivery fee</dt>\n          <dd class=\"font-medium text-gray-900\">{{cartService.totals()?.shipping\n            | currency}}</dd>\n        </dl>\n      </div>\n      <dl\n          class=\"flex items-center justify-between gap-4 border-t border-gray-200 pt-2\">\n        <dt class=\"font-bold text-gray-900\">Total</dt>\n        <dd class=\"font-semibold text-gray-900\">{{cartService.totals()?.total |\n          currency}}</dd>\n      </dl>\n    </div>\n\n    @if (location.path() !== '/checkout') {\n    <div class=\"flex flex-col gap-2\">\n      <button routerLink=\"/checkout\" mat-flat-button>Checkout</button>\n      <button routerLink=\"/shop\" mat-button>Continue Shopping</button>\n    </div>\n    }\n  </div>\n\n  <div class=\"space-y-4 rounded-lg border border-gray-200 bg-white shadow-sm\">\n    <form #form=\"ngForm\" (ngSubmit)=\"applyCouponCode()\"\n        class=\"space-y-2 flex flex-col p-2\">\n      <label class=\"mb-2 block text-sm font-medium\">Do you have a voucher\n        code?</label>\n      @if (cartService.cart()?.coupon; as coupon) {\n      <div class=\"flex justify-between items-center\">\n        <span class=\"text-sm font-semibold\">{{coupon.name}} applied</span>\n        <button (click)=\"removeCouponCode()\" mat-icon-button>\n          <mat-icon color=\"warn\">delete</mat-icon>\n        </button>\n      </div>\n      }\n\n      <mat-form-field appearance=\"outline\">\n        <mat-label>Voucher code</mat-label>\n        <input [disabled]=\"!!cartService.cart()?.coupon\" [(ngModel)]=\"code\"\n            name=\"code\" type=\"text\" matInput>\n      </mat-form-field>\n\n      <button \n        [disabled]=\"!!cartService.cart()?.coupon\"\n        type=\"submit\"\n        mat-flat-button>Apply code</button>\n    </form>\n  </div>\n\n</div>"
  },
  {
    "path": "client/src/app/shared/components/order-summary/order-summary.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/shared/components/order-summary/order-summary.component.ts",
    "content": "import { Component, inject } from '@angular/core';\nimport { CartService } from '../../../core/services/cart.service';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { MatInput } from '@angular/material/input';\nimport { CurrencyPipe, Location } from '@angular/common';\nimport { firstValueFrom } from 'rxjs';\nimport { StripeService } from '../../../core/services/stripe.service';\nimport { FormsModule } from '@angular/forms';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n  selector: 'app-order-summary',\n  imports: [\n    MatFormField,\n    MatLabel,\n    MatButton,\n    RouterLink,\n    MatInput, \n    CurrencyPipe,\n    FormsModule,\n    MatIcon\n  ],\n  templateUrl: './order-summary.component.html',\n  styleUrl: './order-summary.component.scss'\n})\nexport class OrderSummaryComponent {\n  cartService = inject(CartService);\n  private stripeService = inject(StripeService);\n  location = inject(Location);\n  code?: string;\n\n  applyCouponCode() {\n    if (!this.code) return;\n    this.cartService.applyDiscount(this.code).subscribe({\n      next: async coupon => {\n        const cart = this.cartService.cart();\n        if (cart) {\n          cart.coupon = coupon;\n          await firstValueFrom(this.cartService.setCart(cart));\n          this.code = undefined;\n        }\n        if (this.location.path() === '/checkout') {\n          await firstValueFrom(this.stripeService.createOrUpdatePaymentIntent());\n        }\n      }\n    });\n  }\n\n  async removeCouponCode() {\n    const cart = this.cartService.cart();\n    if (!cart) return;\n    if (cart.coupon) cart.coupon = undefined;\n    await firstValueFrom(this.cartService.setCart(cart));\n    if (this.location.path() === '/checkout') {\n      await firstValueFrom(this.stripeService.createOrUpdatePaymentIntent());\n    }\n  }\n}\n"
  },
  {
    "path": "client/src/app/shared/components/server-error/server-error.component.html",
    "content": "<div class=\"container mt-5 p-4 bg-gray-100 rounded shadow-lg\">\n    <h4 class=\"text-2xl font-semibold mb-4\">Internal Server error</h4>\n    @if (error) {\n    <h5 class=\"text-red-600 text-lg mb-2\">Error: {{ error.message }}</h5>\n    <p class=\"font-bold mb-2\">This error comes from the server, not Angular</p>\n    <p class=\"mb-2\">What to do next?</p>\n    <ol class=\"list-decimal ml-5 mb-4\">\n        <li class=\"mb-1\">Check the network tab in Chrome Dev Tools</li>\n        <li>Reproduce the error in Postman. If same error, don't troubleshoot\n            Angular code!</li>\n    </ol>\n    <h5 class=\"text-lg font-semibold mb-2\">Stack trace</h5>\n    <mat-card class=\"p-4 bg-white\">\n        <code class=\"block whitespace-pre-wrap\">{{ error.details }}</code>\n    </mat-card>\n    }\n</div>"
  },
  {
    "path": "client/src/app/shared/components/server-error/server-error.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/shared/components/server-error/server-error.component.ts",
    "content": "import { HttpErrorResponse } from '@angular/common/http';\nimport { Component } from '@angular/core';\nimport { MatCard } from '@angular/material/card';\nimport { Router } from '@angular/router';\n\n@Component({\n  selector: 'app-server-error',\n  imports: [\n    MatCard\n  ],\n  templateUrl: './server-error.component.html',\n  styleUrl: './server-error.component.scss'\n})\nexport class ServerErrorComponent {\n  error?: any;\n\n  constructor(private router: Router) {\n    const navigation = this.router.getCurrentNavigation();\n    this.error = navigation?.extras.state?.['error'];\n  }\n}\n"
  },
  {
    "path": "client/src/app/shared/components/text-input/text-input.component.html",
    "content": "<mat-form-field appearance=\"outline\" class=\"w-full mb-3\">\n    <mat-label>{{label}}</mat-label>\n    <input matInput [formControl]=\"control\" [type]=\"type\" placeholder=\"{{label}}\" />\n    @if (control.hasError('required')) {\n        <mat-error>{{label}} is required</mat-error>\n    }\n    @if (control.hasError('email')) {\n        <mat-error>Email is invalid</mat-error>\n      }\n</mat-form-field>"
  },
  {
    "path": "client/src/app/shared/components/text-input/text-input.component.scss",
    "content": ""
  },
  {
    "path": "client/src/app/shared/components/text-input/text-input.component.ts",
    "content": "import { Component, Input, Self } from '@angular/core';\nimport { FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\n@Component({\n  selector: 'app-text-input',\n  imports: [\n    MatFormField,\n    MatInput,\n    MatError,\n    MatLabel,\n    ReactiveFormsModule\n  ],\n  templateUrl: './text-input.component.html',\n  styleUrl: './text-input.component.scss'\n})\nexport class TextInputComponent {\n    @Input() label = '';\n    @Input() type = 'text';\n\n    constructor(@Self() public controlDir: NgControl) {\n      this.controlDir.valueAccessor = this;\n    }\n\n    writeValue(obj: any): void {\n    }\n\n    registerOnChange(fn: any): void {\n    }\n\n    registerOnTouched(fn: any): void {\n    }\n\n    get control() {\n      return this.controlDir.control as FormControl;\n    }\n}\n"
  },
  {
    "path": "client/src/app/shared/directives/is-admin.ts",
    "content": "import { Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AccountService } from '../../core/services/account.service';\n\n@Directive({\n  selector: '[appIsAdmin]'\n})\nexport class IsAdmin {\n  private accountService = inject(AccountService);\n  private viewContainerRef = inject(ViewContainerRef);\n  private templateRef = inject(TemplateRef);\n\n  constructor() {\n    effect(() => {\n      if (this.accountService.isAdmin()) {\n        this.viewContainerRef.createEmbeddedView(this.templateRef);\n      } else {\n        this.viewContainerRef.clear();\n      }\n    });\n  }\n\n}\n"
  },
  {
    "path": "client/src/app/shared/models/cart.ts",
    "content": "import { nanoid } from \"nanoid\";\n\nexport type CartType = {\n  id: string;\n  items: CartItem[];\n  deliveryMethodId?: number;\n  paymentIntentId?: string;\n  clientSecret?: string;\n}\n\nexport type CartItem = {\n  productId: number;\n  productName: string;\n  price: number;\n  quantity: number;\n  pictureUrl: string;\n  brand: string;\n  type: string;\n}\n\nexport class Cart implements CartType {\n  id = nanoid();\n  items: CartItem[] = [];\n  deliveryMethodId?: number;\n  paymentIntentId?: string;\n  clientSecret?: string;\n  coupon?: Coupon;\n}\n\nexport type Coupon = {\n    name: string;\n    amountOff?: number;\n    percentOff?: number;\n    promotionCode: string;\n    couponId: string;\n}"
  },
  {
    "path": "client/src/app/shared/models/deliveryMethod.ts",
    "content": "export type DeliveryMethod = {\n  shortName: string;\n  deliveryTime: string;\n  description: string;\n  price: number;\n  id: number;\n}"
  },
  {
    "path": "client/src/app/shared/models/order.ts",
    "content": "export interface Order {\n    id: number\n    orderDate: string\n    buyerEmail: string\n    shippingAddress: ShippingAddress\n    deliveryMethod: string\n    shippingPrice: number\n    paymentSummary: PaymentSummary\n    orderItems: OrderItem[]\n    subtotal: number\n    discount?: number\n    status: string\n    paymentIntentId: string\n    total: number;\n  }\n  \n  export interface ShippingAddress {\n    name: string\n    line1: string\n    line2?: string\n    city: string\n    state: string\n    postalCode: string\n    country: string\n  }\n  \n  export interface PaymentSummary {\n    last4: number\n    brand: string\n    expMonth: number\n    expYear: number\n  }\n  \n  export interface OrderItem {\n    productId: number\n    productName: string\n    pictureUrl: string\n    price: number\n    quantity: number\n  }\n  \n  export interface OrderToCreate {\n    cartId: string;\n    deliveryMethodId: number;\n    shippingAddress: ShippingAddress;\n    paymentSummary: PaymentSummary;\n    discount?: number;\n  }"
  },
  {
    "path": "client/src/app/shared/models/orderParams.ts",
    "content": "export class OrderParams {\n    pageNumber = 1;\n    pageSize = 10;\n    filter = '';\n}"
  },
  {
    "path": "client/src/app/shared/models/pagination.ts",
    "content": "export type Pagination<T> = {\n  pageIndex: number;\n  pageSize: number;\n  count: number;\n  data: T[];\n}"
  },
  {
    "path": "client/src/app/shared/models/product.ts",
    "content": "export type Product = {\n  id: number;\n  name: string;\n  description: string;\n  price: number;\n  pictureUrl: string;\n  type: string;\n  brand: string;\n  quantityInStock: number;\n}"
  },
  {
    "path": "client/src/app/shared/models/shopParams.ts",
    "content": "export class ShopParams {\n  brands: string[] = [];\n  types: string[] = [];\n  sort = 'name';\n  pageNumber = 1;\n  pageSize = 10;\n  search = '';\n}"
  },
  {
    "path": "client/src/app/shared/models/user.ts",
    "content": "export type User = {\n  firstName: string;\n  lastName: string;\n  email: string;\n  address: Address;\n  roles: string | string[];\n}\n\nexport type Address = {\n  line1: string;\n  line2?: string;\n  city: string;\n  state: string;\n  country: string;\n  postalCode: string;\n}\n"
  },
  {
    "path": "client/src/app/shared/pipes/address-pipe.ts",
    "content": "import { Pipe, PipeTransform } from '@angular/core';\nimport { ConfirmationToken } from '@stripe/stripe-js';\nimport { ShippingAddress } from '../models/order';\n\n@Pipe({\n  name: 'address'\n})\nexport class AddressPipe implements PipeTransform {\n\n  transform(value?: ConfirmationToken['shipping'] | ShippingAddress, ...args: unknown[]): unknown {\n    if (value && 'address' in value && value.name) {\n      const {line1, line2, city, state, country, postal_code} = (value as ConfirmationToken['shipping'])?.address!;\n      return `${value.name}, ${line1}${line2 ? ', ' + line2 : ''}, \n        ${city}, ${state}, ${postal_code}, ${country}`;\n    } else if (value && 'line1' in value) {\n      const {line1, line2, city, state, country, postalCode} = value as ShippingAddress;\n      return `${value.name}, ${line1}${line2 ? ', ' + line2 : ''}, \n        ${city}, ${state}, ${postalCode}, ${country}`;\n    } else {\n      return 'Unknown address'\n    }\n  }\n\n}\n"
  },
  {
    "path": "client/src/app/shared/pipes/payment-card-pipe.ts",
    "content": "import { Pipe, PipeTransform } from '@angular/core';\nimport { ConfirmationToken } from '@stripe/stripe-js';\nimport { PaymentSummary } from '../models/order';\n\n@Pipe({\n  name: 'paymentCard'\n})\nexport class PaymentCardPipe implements PipeTransform {\n\n  transform(value?: ConfirmationToken['payment_method_preview'] | PaymentSummary, ...args: unknown[]): unknown {\n    if (value && 'card' in value) {\n      const {brand, last4, exp_month, exp_year} = (value as ConfirmationToken['payment_method_preview']).card!;\n      return `${brand.toUpperCase()} **** **** **** ${last4}, Exp: ${exp_month}/${exp_year}`;\n    } else if (value && 'last4' in value) {\n      const {brand, last4, expMonth, expYear} = value as PaymentSummary;\n      return `${brand.toUpperCase()} **** **** **** ${last4}, Exp: ${expMonth}/${expYear}`;\n    } else {\n      return 'Unknown payment method'\n    }\n  }\n\n}\n"
  },
  {
    "path": "client/src/environments/environment.development.ts",
    "content": "export const environment = {\n  production: false,\n  baseUrl: 'https://localhost:5001/api/',\n  hubUrl: 'https://localhost:5001/hub/notifications',\n  stripePublicKey: 'pk_test_51RfWtp2eeLkqjJn6O3xoMRVY9wkRB9a2UZCvR1EMZPrJhpkjsWpFgC8wjG2HrfCQbd4Jz0Le2E4bB1jXgem7qtn100sWRZt0Sh'\n};\n"
  },
  {
    "path": "client/src/environments/environment.ts",
    "content": "export const environment = {\n  production: true,\n  baseUrl: 'api/',\n  hubUrl: 'hub/notifications',\n  stripePublicKey: 'pk_test_51RfWtp2eeLkqjJn6O3xoMRVY9wkRB9a2UZCvR1EMZPrJhpkjsWpFgC8wjG2HrfCQbd4Jz0Le2E4bB1jXgem7qtn100sWRZt0Sh'\n};"
  },
  {
    "path": "client/src/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Skinet</title>\n  <base href=\"/\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\">\n  <link href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap\" rel=\"stylesheet\">\n  <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n</head>\n<body>\n  <div id=\"initial-splash\">\n    <div class=\"flex items-center justify-center h-screen\">\n      <div class=\"flex-col items-center align-middle\">\n        <img src=\"../images/logo.png\" alt=\"logo\">\n      </div>\n    </div>\n  </div>\n  <app-root></app-root>\n</body>\n</html>\n"
  },
  {
    "path": "client/src/main.ts",
    "content": "import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n  .catch((err) => console.error(err));\n"
  },
  {
    "path": "client/src/styles.scss",
    "content": "@use '@angular/material' as mat;\n\n// Customize the entire app. Change :root to your selector if you want to scope the styles.\n:root {\n  @include mat.button-overrides((filled-container-shape: '6px',\n      outlined-container-shape: '6px'\n    ));\n  @include mat.badge-overrides((background-color: blue));\n}\n\n.match-input-height {\n  height: var(--mat-form-field-container-height) !important;\n}\n\n.mdc-notched-outline__notch {\n  border-right-style: none !important;\n}\n\n.snack-error {\n  @include mat.snack-bar-overrides((\n    button-color: white,\n    container-color: red,\n    supporting-text-color: white\n  ));\n}\n\n.snack-success {\n  @include mat.snack-bar-overrides((\n    button-color: white,\n    container-color: green,\n    supporting-text-color: white\n  ));\n}"
  },
  {
    "path": "client/src/tailwind.css",
    "content": "@import \"tailwindcss\" important;\n\n.container {\n    @apply mx-auto max-w-screen-2xl\n}\n\n.text-primary {\n    @apply text-blue-700\n}\n\n@layer base {\n  button:not(:disabled),\n  [role=\"button\"]:not(:disabled) {\n    cursor: pointer;\n  }\n}"
  },
  {
    "path": "client/ssl/localhost-key.pem",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDGR8ZMdI+PmMbe\nTiHrN+L9Xt13Jc5t9w6BC4iP6/knOHNOPyKa1ueLnHDzunDou3pP1uuCzs5oAjih\n8ZqWAgtavU+neeylCuQbzFZ7DllJ1zdu7xyBZA2p7n3HuJNYwH50Pz2a9GFMbd3t\nHeD0wlj4Xn5PY2t6YNWP25X4wTTDw7vFPOUqK+9d0a/US2kCld6kThKMDooVKMHc\novV/Ib3yaTqsVDRkevTOWxbCyP89FqcjG8Yi1i1pOzNSilE6B/HzQRqMndz0HA5B\nFYpi5fqupRWD0aUqSRc8sZsO3IC9BF76wNuKPciBdXBbxndtgua1yS332dZDxgAQ\n/fg+KO+RAgMBAAECggEACwlzwE28sAGREE7JFI7H09K0AS3Zj8VwyT4bG+fGtqgt\nwu1Av922hc7veqGmJ05IQKl18pIQazm0bU9Fi5QRjbt785aV1ZoFmIaHSdJCphmU\nvFgS/iDToeHknnlnukj8wPvEMhvoTpjPAaPoIbevvCOGZGTkVquNN7TBZFdc2Iiz\nleviJ1QOQjxJmGKKsD9BqAHkKRg0fIPoecHPgsok/3tAM1f4fZUq7uBgbsCkxOyY\nv6cNZDvP3ptkhkry6wY9k4zXnec/boSVGkhbrdAkX0iZcS0VZHIgQySWGfLjrZCS\nkYe1CQ9jBtVKJ1AxIA6nO7qO3t9t5ccVT1sRY/xFAQKBgQDiZhSBVgS4eHzB8D0k\nPZ/GOx0lpYr375xwEpSwMx/wdmayfCpXVd+90b16vESu/TT8s01xL6sZ3tfuq/bC\nZA5BVEa73SIQ0Ar0qEuElmWrccaXtm6JMMN6PzMgyL324xtr0YVlQ6GaBq+gxo41\nL9oQ6yFt636jMhJ/jIO+Z2v/GwKBgQDgNIdDCrwn25v1bC+8tsosHJdep+RNUv5+\n3Ytf6+QQLWVcf081Xn1smQPVWYdvTCLzrrJ4FnPFVfLEiEwsu4IRnj8zQ8YW9t9x\nQWNtyW0RhhBnyHAfPFzcntaH2bLqYXio6ILcZb0Ef82Z7TINc5HeC6cBoc8TQ+DC\nT63Sm2S6wwKBgCVYx4sqYG752UK42a0vyTqPJ9i8/Ta3PSwztHl4hY1KStioqOdt\nUBJlFge4JPBk7qe9AEpqnaQP4bkKfxNEJCHcwCpfaS4y04vWc1a05KKqiyMdwhA5\njhWNdWa0FroybqSTlJjG1lKtRa2U84KMmUFvOD2Euog7S1flGxp+vw7/AoGBAKwx\nC5U8wGcoLe5eaYdZJ4qbZtHmxdtxG04aHnnL9HtMMiXJDO9jI5btKdmIihC7e7iF\nekHqlH2BVhMEzuQoGmwnikh4C8IFVnRoENH3uhGUUjMy6JHEzVkPkJoDY3rI419u\nO1rDtFipQyGt3xwfn27WqiwBtsUIA62YflpayBD7AoGBAKf2eM3DGqzeOJHMFrLj\nonQoVsnvVZUwjzxWh521+K3iZa7tO5nSXdUl/AuGGxUtMYgP47CAiLK1tIMN+m0B\n095RHH0Z2SzOW0a1jY1zRhYEC/2cVuRH30SaZZoFDfWTRLLdhcxTTdGmyJ8wGHUk\nZ0B6pLJlp6uWMFxCBkfoeNwz\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "client/ssl/localhost.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIEYzCCAsugAwIBAgIQOHNadlBB8E1GswMpfES1ZzANBgkqhkiG9w0BAQsFADCB\nlzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTYwNAYDVQQLDC1uZWls\nY0BOZWlscy1NYWNCb29rLUFpci5sb2NhbCAoTmVpbCBDdW1taW5ncykxPTA7BgNV\nBAMMNG1rY2VydCBuZWlsY0BOZWlscy1NYWNCb29rLUFpci5sb2NhbCAoTmVpbCBD\ndW1taW5ncykwHhcNMjUwNjI3MDQ1NTUzWhcNMjcwOTI3MDQ1NTUzWjBjMScwJQYD\nVQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxODA2BgNVBAsML25l\naWxjQE5laWxzLU1hY0Jvb2stQWlyLTIubG9jYWwgKE5laWwgQ3VtbWluZ3MpMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxkfGTHSPj5jG3k4h6zfi/V7d\ndyXObfcOgQuIj+v5JzhzTj8imtbni5xw87pw6Lt6T9brgs7OaAI4ofGalgILWr1P\np3nspQrkG8xWew5ZSdc3bu8cgWQNqe59x7iTWMB+dD89mvRhTG3d7R3g9MJY+F5+\nT2NremDVj9uV+ME0w8O7xTzlKivvXdGv1EtpApXepE4SjA6KFSjB3KL1fyG98mk6\nrFQ0ZHr0zlsWwsj/PRanIxvGItYtaTszUopROgfx80EajJ3c9BwOQRWKYuX6rqUV\ng9GlKkkXPLGbDtyAvQRe+sDbij3IgXVwW8Z3bYLmtckt99nWQ8YAEP34PijvkQID\nAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYD\nVR0jBBgwFoAUtQV4V/7cLFVNbDsRXHVY8NwLwdUwFAYDVR0RBA0wC4IJbG9jYWxo\nb3N0MA0GCSqGSIb3DQEBCwUAA4IBgQBMNV8GlcbxL/v6lSg9Nz+1QWOyp1jBPooy\npX163E9FjuztLfO9oXrUzC+Dn5GULYX0Xs4HnekKJhqwy53xCctZrrjJhFmcl5hZ\nXnmUO63r7GaFAauuRxZWxq7ql/spyYFR1jHVE889s3sGf5NnENphE/rP0qJmWPlK\nz2VfZhsoFtMCvKPGAamVQFC8PSsbZixUBA+AVHt0twEm5OnWhk0kzHAvpDExy6nf\nIWSSTkfADxCoYGfWFQRnfLRRBZ2WYHwi5pxpCQ6irxV761evwThSzfk6+sP3+OTi\nD5/xFL+x/Lo8ybz4e/qRXSs4PGS8uEMJyWg1c4wYCqei8EAjgTrjmeis4zFPn9fq\nMaPd0ZCu+6zaj//EiYnGqRmvkbBtxWYH9RJhRbn4Q5M3ACTUE7dy6IU6L98B1ZEs\ndUSiTAYAzcHUEARbqOhuMlujjKwVy1o13Jv8GKVOZqysT9y5phSrswBCZx7LacU6\n/RQnDTOj51ToVUmPTbKOxz6VKzp+sWk=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "client/tsconfig.app.json",
    "content": "/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */\n/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/app\",\n    \"types\": [],\n    \"typeRoots\": [\"node_modules/@angular/material\"]\n  },\n  \"include\": [\n    \"src/**/*.ts\"\n  ],\n  \"exclude\": [\n    \"src/**/*.spec.ts\"\n  ]\n}\n"
  },
  {
    "path": "client/tsconfig.json",
    "content": "/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */\n/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */\n{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"noImplicitOverride\": true,\n    \"noPropertyAccessFromIndexSignature\": true,\n    \"noImplicitReturns\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"skipLibCheck\": true,\n    \"isolatedModules\": true,\n    \"experimentalDecorators\": true,\n    \"importHelpers\": true,\n    \"target\": \"ES2022\",\n    \"module\": \"preserve\"\n  },\n  \"angularCompilerOptions\": {\n    \"enableI18nLegacyMessageIdFormat\": false,\n    \"strictInjectionParameters\": true,\n    \"strictInputAccessModifiers\": true,\n    \"typeCheckHostBindings\": true,\n    \"strictTemplates\": true\n  },\n  \"files\": [],\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.app.json\"\n    },\n    {\n      \"path\": \"./tsconfig.spec.json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "client/tsconfig.spec.json",
    "content": "/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */\n/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/spec\",\n    \"types\": [\n      \"jasmine\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*.ts\"\n  ]\n}\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "services:\n  sql:\n    image: mcr.microsoft.com/mssql/server:2022-latest\n    environment:\n      ACCEPT_EULA: \"Y\"\n      MSSQL_SA_PASSWORD: \"Password@1\"\n    platform: \"linux/amd64\"\n    ports:\n      - \"1433:1433\"\n    volumes:\n      - sql-data:/var/opt/mssql\n  redis:\n    image: redis:latest\n    ports:\n      - \"6379:6379\"\n    volumes:\n      - redis-data:/data\nvolumes:\n  sql-data:\n  redis-data:"
  },
  {
    "path": "skinet.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.31903.59\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"API\", \"API\\API.csproj\", \"{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Core\", \"Core\\Core.csproj\", \"{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Infrastructure\", \"Infrastructure\\Infrastructure.csproj\", \"{C99B9D03-8868-4E8C-B79B-95241E17D8B7}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Release|x64.Build.0 = Release|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{9D0F8DB6-F103-4955-B976-8AC4595F2B2E}.Release|x86.Build.0 = Release|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Release|x64.Build.0 = Release|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{3D0F1D03-B608-407B-B58D-5E1CDF3F8577}.Release|x86.Build.0 = Release|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Release|x64.Build.0 = Release|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{C99B9D03-8868-4E8C-B79B-95241E17D8B7}.Release|x86.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  }
]