diff --git a/resources/[carscripts]/jg-dealerships/.fxap b/resources/[carscripts]/jg-dealerships/.fxap new file mode 100644 index 000000000..11cb8adbb Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/.fxap differ diff --git a/resources/[carscripts]/jg-dealerships/README.md b/resources/[carscripts]/jg-dealerships/README.md new file mode 100644 index 000000000..b8a8989fe --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/README.md @@ -0,0 +1,17 @@ +# JG Scripts Dealerships + +Hey there! Thanks so much for purchasing, it really means a lot to me. I've spent a lot of time on this script (almost a year total), and I hope you love it. This document has a bunch of the essential information that should help you out: + +## Useful Links + +🔧 Configure Dealerships in just minutes: https://configurator.jgscripts.com/dealerships + +📚 Documentation: https://docs.jgscripts.com/dealerships/introduction + +🔗 Official Website: https://jgscripts.com + +🛒 Store: https://store.jgscripts.com + +## Support + +Join Discord https://discord.jgscripts.com, and we will do whatever it takes to help you out and get you up and running! diff --git a/resources/[carscripts]/jg-dealerships/client/cl-admin.lua b/resources/[carscripts]/jg-dealerships/client/cl-admin.lua new file mode 100644 index 000000000..90621c555 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-admin.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-direct-sales.lua b/resources/[carscripts]/jg-dealerships/client/cl-direct-sales.lua new file mode 100644 index 000000000..46284ecdd Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-direct-sales.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-display-vehicles.lua b/resources/[carscripts]/jg-dealerships/client/cl-display-vehicles.lua new file mode 100644 index 000000000..eb2f4a3af Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-display-vehicles.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-employees.lua b/resources/[carscripts]/jg-dealerships/client/cl-employees.lua new file mode 100644 index 000000000..49d3f4448 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-employees.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-finance.lua b/resources/[carscripts]/jg-dealerships/client/cl-finance.lua new file mode 100644 index 000000000..a0dac78e6 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-finance.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-locations.lua b/resources/[carscripts]/jg-dealerships/client/cl-locations.lua new file mode 100644 index 000000000..432bc8d99 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/client/cl-locations.lua @@ -0,0 +1,141 @@ +local blips, points = {}, {} + +---@param name string +---@param coords vector3 +---@param blipId integer +---@param blipColour integer +---@param blipScale number +local function createBlip(name, coords, blipId, blipColour, blipScale) + local blip = AddBlipForCoord(coords.x, coords.y, coords.z) + SetBlipSprite(blip, blipId) + SetBlipColour(blip, blipColour) + SetBlipScale(blip, blipScale) + SetBlipAsShortRange(blip, true) + BeginTextCommandSetBlipName("STRING") + AddTextComponentString(name) + EndTextCommandSetBlipName(blip) + return blip +end + +---@param coords vector3 +---@param marker table +local function drawMarkerOnFrame(coords, marker) + ---@diagnostic disable-next-line: missing-parameter + DrawMarker(marker.id, coords.x, coords.y, coords.z, 0, 0, 0, 0, 0, 0, marker.size.x, marker.size.y, marker.size.z, marker.color.r, marker.color.g, marker.color.b, marker.color.a, marker.bobUpAndDown, marker.faceCamera, 0, marker.rotate, marker.drawOnEnts) +end + +---@param coords vector3 +---@param dist number +---@param marker table | false | nil +---@param onEnter function +---@param onExit function +---@param nearby function | nil +local function createLocation(coords, dist, marker, onEnter, onExit, nearby) + local point = lib.points.new({ + coords = coords, + distance = dist, + }) + + function point:onEnter() onEnter(self) end + function point:onExit() onExit(self) end + if nearby then function point:nearby() nearby(self) end end + points[#points+1] = point + + if not marker then return end + + local markerPoint = lib.points.new({ + coords = coords, + distance = dist * 4, + }) + + function markerPoint:nearby() drawMarkerOnFrame(coords, marker) end + points[#points+1] = markerPoint +end + + +-- New code + +local function createDealershipZonesAndBlips() + for _, point in ipairs(points) do point:remove() end -- Remove existing zones + for _, blip in ipairs(blips) do RemoveBlip(blip) end -- Remove existing blips + + local dealerships = lib.callback.await("jg-dealerships:server:get-locations-data", false) + + for _, dealer in ipairs(dealerships) do + if dealer and dealer.config then + if IsShowroomAccessAllowed(dealer.name) or (dealer.type == "owned" and dealer.managementAccess) then + -- Showroom location + createLocation( + dealer.config.openShowroom?.coords or dealer.config.openShowroom, + dealer.config.openShowroom?.size or 5, + not dealer.config.hideMarkers and dealer.config.markers or false, + function() Framework.Client.ShowTextUI(Config.OpenShowroomPrompt) end, + function() Framework.Client.HideTextUI() end, + function() + if IsControlJustPressed(0, Config.OpenShowroomKeyBind) then + TriggerEvent("jg-dealerships:client:open-showroom", dealer.name) + end + end + ) + + -- Sell vehicle location (if enabled) + if dealer.config.enableSellVehicle then + createLocation( + dealer.config.sellVehicle?.coords or dealer.config.sellVehicle, + dealer.config.sellVehicle?.size or 5, + not dealer.config.hideMarkers and dealer.config.markers or false, + function() Framework.Client.ShowTextUI(Config.SellVehiclePrompt) end, + function() Framework.Client.HideTextUI() end, + function() + if IsControlJustPressed(0, Config.SellVehicleKeyBind) then + TriggerEvent("jg-dealerships:client:sell-vehicle", dealer.name) + end + end + ) + end + + -- Blip + if not dealer.config.hideBlip then + local blipName = Locale.dealership .. ": " .. dealer.label + local blip = createBlip( + blipName, + dealer.config.openShowroom?.coords or dealer.config.openShowroom, + dealer.config.blip.id, + dealer.config.blip.color, + dealer.config.blip.scale + ) + + blips[#blips + 1] = blip + end + end + + -- Management location + if dealer.type == "owned" and dealer.managementAccess then + createLocation( + dealer.config.openManagement?.coords or dealer.config.openManagement, + dealer.config.openManagement?.size or 5, + not dealer.config.hideMarkers and dealer.config.markers or false, + function() Framework.Client.ShowTextUI(Config.OpenManagementPrompt) end, + function() Framework.Client.HideTextUI() end, + function() + if IsControlJustPressed(0, Config.OpenManagementKeyBind) then + TriggerEvent("jg-dealerships:client:open-management", dealer.name) + end + end + ) + end + end + end +end + +RegisterNetEvent("jg-dealerships:client:update-blips-text-uis", function() + Wait(1000) + createDealershipZonesAndBlips() + SpawnAllDealershipDisplayVehicles() +end) + +CreateThread(function() + Wait(1000) + createDealershipZonesAndBlips() + SpawnAllDealershipDisplayVehicles() +end) \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/client/cl-main.lua b/resources/[carscripts]/jg-dealerships/client/cl-main.lua new file mode 100644 index 000000000..255382bdb Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-main.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-management.lua b/resources/[carscripts]/jg-dealerships/client/cl-management.lua new file mode 100644 index 000000000..09c5de5bf Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-management.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-purchase.lua b/resources/[carscripts]/jg-dealerships/client/cl-purchase.lua new file mode 100644 index 000000000..8d4d96de1 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/client/cl-purchase.lua @@ -0,0 +1,88 @@ +---Purchase a vehicle +---@param dealershipId string +---@param model string|integer +---@param colour string +---@param purchaseType "society"|"personal" +---@param paymentMethod "bank"|"cash" +---@param society? any if purchaseType == "society" +---@param societyType? any +---@param finance boolean +---@param directSaleUuid? string +---@return boolean success +local function purchaseVehicle(dealershipId, model, colour, purchaseType, paymentMethod, society, societyType, finance, directSaleUuid) + local dealership = Config.DealershipLocations[dealershipId] + local hash = ConvertModelToHash(model) + local vehicleType = GetVehicleTypeFromClass(GetVehicleClassFromName(hash)) + local coords = FindVehicleSpawnCoords(dealership.purchaseSpawn) + + ExitShowroom() + + local success, netId, vehicleId, plate, price = lib.callback.await("jg-dealerships:server:purchase-vehicle", false, dealershipId, coords, purchaseType, society, societyType, model, colour, paymentMethod, finance, directSaleUuid) + local vehicle = netId and NetToVeh(netId) or nil --[[@as integer|false]] + if not success then return false end + + -- TODO WIP: new spawning logic + + if Config.SpawnVehiclesWithServerSetter and not vehicle then + print("^1[ERROR] There was a problem spawning in your vehicle") + return false + end + + -- Server spawning disabled, create vehicle on client + if not vehicle and not Config.SpawnVehiclesWithServerSetter then + local warp = not Config.DoNotSpawnInsideVehicle + local properties = { + plate = plate, + colour = colour + } + + vehicle = SpawnVehicleClient(vehicleId or 0, model, plate, coords, warp, properties, "purchase") + if not vehicle then return false end + + netId = VehToNet(vehicle) + end + + if not vehicle then return false end + + -- TODO: refactor this maybe? it's also a vulnerable event for people that know what they are doing + local props = Framework.Client.GetVehicleProperties(vehicle) + TriggerServerEvent("jg-dealerships:server:update-purchased-vehicle-props", purchaseType, society, plate, props) + -- TODO END + + TriggerEvent("jg-dealerships:client:purchase-vehicle:config", vehicle, plate, purchaseType, price, paymentMethod, finance) + TriggerServerEvent("jg-dealerships:server:purchase-vehicle:config", netId, plate, purchaseType, price, paymentMethod, finance) + + -- If they are running jg-advancedgarages, register the vehicle is out & set vehicle in valid garage ID + if GetResourceState("jg-advancedgarages") == "started" then + TriggerServerEvent("jg-advancedgarages:server:register-vehicle-outside", plate, netId) + TriggerServerEvent("jg-advancedgarages:server:dealerships-send-to-default-garage", vehicleType, plate) + end + + DoScreenFadeIn(500) + + return true +end + +RegisterNUICallback("purchase-vehicle", function(data, cb) + local dealershipId = data.dealership + local model = data.vehicle + local vehicleColor = data.color + local purchaseType = data.purchaseType + local paymentMethod = data.paymentMethod + local finance = data.finance + local society = data.society + local societyType = data.societyType + local directSaleUuid = data.directSaleUuid + + DoScreenFadeOut(500) + Wait(500) + + local res = purchaseVehicle(dealershipId, model, vehicleColor, purchaseType, paymentMethod, society, societyType, finance, directSaleUuid) + + if not res then + DoScreenFadeIn(0) + return cb({error = true}) + end + + cb(true) +end) \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/client/cl-sell-vehicle.lua b/resources/[carscripts]/jg-dealerships/client/cl-sell-vehicle.lua new file mode 100644 index 000000000..832f394e7 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-sell-vehicle.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-showroom.lua b/resources/[carscripts]/jg-dealerships/client/cl-showroom.lua new file mode 100644 index 000000000..4969f70d0 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-showroom.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-spawn.lua b/resources/[carscripts]/jg-dealerships/client/cl-spawn.lua new file mode 100644 index 000000000..c46935b3f Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-spawn.lua differ diff --git a/resources/[carscripts]/jg-dealerships/client/cl-test-drive.lua b/resources/[carscripts]/jg-dealerships/client/cl-test-drive.lua new file mode 100644 index 000000000..90c229a0b Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/client/cl-test-drive.lua differ diff --git a/resources/[carscripts]/jg-dealerships/config/config-cl.lua b/resources/[carscripts]/jg-dealerships/config/config-cl.lua new file mode 100644 index 000000000..e07dcc5e1 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/config/config-cl.lua @@ -0,0 +1,43 @@ +-- +-- Events +-- + +---Fired when the vehicle is purchased +---@param vehicle integer +---@param plate string +---@param purchaseType "personal"|"society" +---@param amount number +---@param paymentMethod "bank"|"cash" +---@param financed boolean +RegisterNetEvent("jg-dealerships:client:purchase-vehicle:config", function(vehicle, plate, purchaseType, amount, paymentMethod, financed) + +end) + +---Fired when vehicle is test driven +---@param vehicle integer +---@param plate string +RegisterNetEvent("jg-dealerships:client:start-test-drive:config", function(vehicle, plate) + +end) + +---Fired when a vehicle is sold; this also contains the delete vehicle function +---@param vehicle integer +---@param plate string +RegisterNetEvent("jg-dealerships:client:sell-vehicle:config", function(vehicle, plate) + -- + -- Add code here to run before the vehicle is deleted + -- + + JGDeleteVehicle(vehicle) -- this runs Kimi's AdvancedParking export already! +end) + +-- +-- Hooks +-- + +---Runs before the showroom opens; return false to prevent showroom from opening +---@param dealershipId string +---@return boolean allowed +function ShowroomPreCheck(dealershipId) + return true +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/config/config-sv.lua b/resources/[carscripts]/jg-dealerships/config/config-sv.lua new file mode 100644 index 000000000..adf41d2d7 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/config/config-sv.lua @@ -0,0 +1,65 @@ +-- +-- Events +-- + +---Fired when a vehicle is purchased +---@param vehNetId integer +---@param plate string +---@param purchaseType "personal"|"society" +---@param amount number +---@param paymentMethod "bank"|"cash" +---@param financed boolean +RegisterNetEvent("jg-dealerships:server:purchase-vehicle:config", function(vehNetId, plate, purchaseType, amount, paymentMethod, financed) + local src = source + local vehicle = NetworkGetEntityFromNetworkId(vehNetId) + +end) + +---Fired when vehicle finance has paid in full +---@param playerId integer +---@param plate string +RegisterNetEvent("jg-dealerships:server:vehicle-finance-complete", function(playerId, plate) + +end) + +---Fired when vehicle finance loan has been defaulted on +---@param playerId integer +---@param plate string +---@param amountOwed number +RegisterNetEvent("jg-dealerships:server:vehicle-finance-defaulted", function(playerId, plate, amountOwed) + +end) + +-- +-- Hooks +-- + +---Add custom checks before the vehicle can be sold - return false to prevent purchase +---@param dealershipId string +---@param plate string +---@param model string +---@param price number +---@return boolean allowed +function SellVehiclePreCheck(dealershipId, plate, model, price) + return true +end + +---Add custom checks here before a sale can go ahead - return false to prevent purchase +---@param playerId integer +---@param dealershipId string +---@param plate string +---@param model string|integer +---@param purchaseType "personal"|"society" +---@param amountToPay number +---@param paymentMethod "bank"|"cash" +---@param society string +---@param societyType "job"|"gang" +---@param financed boolean +---@param noOfPayments? number +---@param downPayment? number +---@param isDirectSale? boolean +---@param sellerPlayerId? integer +---@return boolean allowed +function PurchaseVehiclePreCheck(playerId, dealershipId, plate, model, purchaseType, amountToPay, paymentMethod, society, societyType, financed, noOfPayments, downPayment, isDirectSale, sellerPlayerId) + return true +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/config/config.lua b/resources/[carscripts]/jg-dealerships/config/config.lua new file mode 100644 index 000000000..64a0f54b0 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/config/config.lua @@ -0,0 +1,307 @@ +----------------------------------------------------------------------------------- +-- WAIT! Before editing this file manually, try our new easy configuration tool! -- +-- https://configurator.jgscripts.com/dealerships -- +----------------------------------------------------------------------------------- +Config = {} + +-- Localisation +Config.Locale = "de" +Config.NumberAndDateFormat = "en-US" +Config.Currency = "USD" +Config.SpeedUnit = "mph" -- or "kph" + +-- Framework & Integrations +Config.Framework = "auto" -- or "QBCore", "Qbox", "ESX" +Config.FuelSystem = "lc_fuel" -- or "LegacyFuel", "ps-fuel", "lj-fuel", "ox_fuel", "cdn-fuel", "hyon_gas_station", "okokGasStation", "nd_fuel", "myFuel", "ti_fuel", "Renewed-Fuel", "rcore_fuel", "qs-fuelstations", "none" +Config.VehicleKeys = "none" -- or "qb-vehiclekeys", "MrNewbVehicleKeys", "jaksam-vehicles-keys", "qs-vehiclekeys", "mk_vehiclekeys", "wasabi_carlock", "cd_garage", "okokGarage", "t1ger_keys", "Renewed", "tgiann-hotwire", "none" +Config.Notifications = "ox_lib" -- or "default", "okokNotify", "ox_lib", "ps-ui" +Config.DrawText = "jg-textui" -- or "jg-textui", "qb-DrawText", "okokTextUI", "ox_lib", "ps-ui" + +-- Text UI prompts +Config.OpenShowroomPrompt = "[E] Open Showroom" +Config.OpenShowroomKeyBind = 38 +Config.ViewInShowroomPrompt = "[E] View in Showroom" +Config.ViewInShowroomKeyBind = 38 +Config.OpenManagementPrompt = "[E] Dealership Management" +Config.OpenManagementKeyBind = 38 +Config.SellVehiclePrompt = "[E] Sell Vehicle" +Config.SellVehicleKeyBind = 38 + +-- If you don't know what this means, don't touch this +-- If you know what this means, I do recommend enabling it but be aware you may experience reliability issues on more populated servers +-- Having significant issues? I beg you to just set it back to false before opening a ticket with us +-- Want to read my rant about server spawned vehicles? https://docs.jgscripts.com/advanced-garages/misc/why-are-you-not-using-createvehicleserversetter-by-default +Config.SpawnVehiclesWithServerSetter = false + +-- Finance (to disable finance, you have to do it on a per-location basis with Config.DealershipLocations below) +Config.FinancePayments = 12 +Config.FinanceDownPayment = 0.1 -- 0.1 means 10% +Config.FinanceInterest = 0.1 -- 0.1 means 10% +Config.FinancePaymentInterval = 12 -- in hours +Config.FinancePaymentFailedHoursUntilRepo = 1 -- in hours +Config.MaxFinancedVehiclesPerPlayer = 5 + +-- Little vehicle preview images in the garage UI - learn more/add custom images: https://docs.jgscripts.com/advanced-garages/vehicle-images +Config.ShowVehicleImages = true + +-- Vehicle purchases +Config.PlateFormat = "1AA111AA" -- https://docs.jgscripts.com/dealerships/plate-format +Config.HideVehicleStats = false + +-- Test drives +Config.TestDrivePlate = "TEST1111" -- This is a plate seed so it'll be random every time (read: https://docs.jgscripts.com/dealerships/plate-format) +Config.TestDriveTimeSeconds = 120 +Config.TestDriveNotInBucket = false -- Set to true for everyone to see the test driven vehicle (player is instanced by default) + +-- Display vehicles (showroom) +Config.DisplayVehiclesPlate = "DEALER" +Config.DisplayVehiclesHidePurchasePrompt = false + +-- Dealership stock purchases +Config.DealerPurchasePrice = 0.8 -- 0.8 = Dealers pay 80% of vehicle price +Config.VehicleOrderTime = 1 -- in mins +Config.ManagerCanChangePriceOfVehicles = true -- Managers can change the price of vehicles in the dealership + +-- Vehicle colour options (for purchases & display vehicles) +Config.UseRGBColors = true -- this will use the index instead of hex, see https://pastebin.com/pwHci0xK (hex will still be used in the ui) +Config.VehicleColourOptions = { + {label = "Red", hex = "#e81416", index = 27}, + {label = "Orange", hex = "#ff7518", index = 38}, + {label = "Yellow", hex = "#ffbf00", index = 88}, + {label = "Green", hex = "#79c314", index = 92}, + {label = "Blue", hex = "#487de7", index = 64}, + {label = "Purple", hex = "#70369d", index = 145}, + {label = "Black", hex = "#000000", index = 0}, + {label = "White", hex = "#ffffff", index = 111}, +} + +Config.Categories = { + planes = "Planes", + sportsclassics = "Sports Classics", + sedans = "Sedans", + compacts = "Compacts", + motorcycles = "Motorcycles", + super = "Super", + offroad = "Offroad", + helicopters = "Helicopters", + coupes = "Coupes", + muscle = "Muscle", + boats = "Boats", + vans = "Vans", + sports = "Sports", + suvs = "SUVs", + commercial = "Commercial", + cycles = "Cycles", + industrial = "Industrial" +} + +Config.DealershipLocations = { + ["pdm"] = { + type = "owned", -- or "owned", "self-service" + openShowroom = { + coords = vector3(-55.99, -1096.59, 26.42), + size = 5 + }, + openManagement = { + coords = vector3(-30.43, -1106.84, 26.42), + size = 5 + }, + sellVehicle = { + coords = vector3(-27.89, -1082.1, 26.64), + size = 5 + }, + purchaseSpawn = vector4(-13.68, -1092.31, 26.67, 159.82), + testDriveSpawn = vector4(-49.77, -1110.83, 26.44, 75.94), + camera = { + name = "Car", + coords = vector4(-146.6166, -596.6301, 166.0, 270.0), + positions = {5.0, 8.0, 12.0, 8.0} + }, + categories = {"sedans", "compacts", "motorcycles", "offroad", "coupes", "muscle", "suvs", "sportsclassics"}, + enableTestDrive = true, + hideBlip = false, + blip = { + id = 326, + color = 2, + scale = 0.6 + }, + enableSellVehicle = true, -- Allow players to sell vehicles back to dealer + sellVehiclePercent = 0.6, -- 60% of current sale price + enableFinance = true, + hideMarkers = false, + markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 }, + showroomJobWhitelist = {}, + showroomGangWhitelist = {}, + societyPurchaseJobWhitelist = {}, + societyPurchaseGangWhitelist = {}, + disableShowroomPurchase = false, + job = "cardealer", -- Owned dealerships only + directSaleDistance = 50, + }, + ["luxury"] = { + type = "self-service", -- or "owned", "self-service" + openShowroom = { + coords = vector3(-1257.4, -369.12, 36.98), + size = 5 + }, + openManagement = { + coords = vector3(-1249.04, -346.96, 37.34), + size = 5 + }, + sellVehicle = { + coords = vector3(-1233.46, -346.81, 37.33), + size = 5 + }, + purchaseSpawn = vector4(-1233.46, -346.81, 37.33, 23.36), + testDriveSpawn = vector4(-1233.46, -346.81, 37.33, 23.36), + camera = { + name = "Car", + coords = vector4(-146.6166, -596.6301, 166.0, 270.0), + positions = {5.0, 8.0, 12.0, 8.0} + }, + categories = {"super", "sports"}, + enableSellVehicle = true, -- Allow players to sell vehicles back to dealer + sellVehiclePercent = 0.6, -- 60% of current sale price + enableTestDrive = true, + enableFinance = true, + hideBlip = false, + blip = { + id = 523, + color = 2, + scale = 0.6 + }, + hideMarkers = false, + markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 }, + showroomJobWhitelist = {}, + showroomGangWhitelist = {}, + societyPurchaseJobWhitelist = {}, + societyPurchaseGangWhitelist = {}, + }, + ["boats"] = { + type = "self-service", -- or "owned", "self-service" + openShowroom = { + coords = vector3(-739.55, -1333.75, 1.6), + size = 5 + }, + openManagement = { + coords = vector3(-731.37, -1310.35, 5.0), + size = 5 + }, + sellVehicle = { + coords = vector3(-714.42, -1340.01, -0.18), + size = 5 + }, + purchaseSpawn = vector4(-714.42, -1340.01, -0.18, 139.38), + testDriveSpawn = vector4(-714.42, -1340.01, -0.18, 139.38), + camera = { + name = "Sea", + coords = vector4(-808.28, -1491.19, -0.47, 113.53), + positions = {7.5, 12.0, 15.0, 12.0} + }, + categories = {"boats"}, + enableSellVehicle = true, -- Allow players to sell vehicles back to dealer + sellVehiclePercent = 0.6, -- 60% of current sale price + enableTestDrive = false, + hideBlip = false, + blip = { + id = 410, + color = 2, + scale = 0.6 + }, + hideMarkers = false, + markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 }, + showroomJobWhitelist = {}, + showroomGangWhitelist = {}, + societyPurchaseJobWhitelist = {}, + societyPurchaseGangWhitelist = {}, + }, + ["air"] = { + type = "self-service", -- or "owned", "self-service" + openShowroom = { + coords = vector3(-1623.0, -3151.56, 13.99), + size = 5 + }, + openManagement = { + coords = vector3(-1637.78, -3177.94, 13.99), + size = 5 + }, + sellVehicle = { + coords = vector3(-1654.9, -3147.58, 13.99), + size = 5 + }, + purchaseSpawn = vector4(-1654.9, -3147.58, 13.99, 324.78), + testDriveSpawn = vector4(-1654.9, -3147.58, 13.99, 324.78), + camera = { + name = "Air", + coords = vector4(-1267.0, -3013.14, -48.5, 310.96), + positions = {12.0, 15.0, 20.0, 15.0} + }, + categories = {"planes", "helicopters"}, + enableSellVehicle = true, -- Allow players to sell vehicles back to dealer + sellVehiclePercent = 0.6, -- 60% of current sale price + enableTestDrive = false, + hideBlip = false, + blip = { + id = 423, + color = 2, + scale = 0.6 + }, + hideMarkers = false, + markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 }, + showroomJobWhitelist = {}, + showroomGangWhitelist = {}, + societyPurchaseJobWhitelist = {}, + societyPurchaseGangWhitelist = {}, + }, + ["truck"] = { + type = "self-service", -- or "owned", "self-service" + openShowroom = { + coords = vector3(1214.37, -3204.53, 6.03), + size = 5 + }, + openManagement = { + coords = vector3(1184.45, -3179.27, 7.1), + size = 5 + }, + sellVehicle = { + coords = vector3(1196.75, -3205.31, 6.0), + size = 5 + }, + purchaseSpawn = vector4(1196.75, -3205.31, 6.0, 91.12), + testDriveSpawn = vector4(1196.75, -3205.31, 6.0, 91.12), + camera = { + name = "Truck", + coords = vector4(-1267.0, -3013.14, -48.5, 310.96), + positions = {7.5, 12.0, 15.0, 12.0} + }, + categories = {"vans", "commercial", "industrial"}, + enableSellVehicle = true, -- Allow players to sell vehicles back to dealer + sellVehiclePercent = 0.6, -- 60% of current sale price + enableTestDrive = true, + enableFinance = true, + hideBlip = false, + blip = { + id = 477, + color = 2, + scale = 0.6 + }, + hideMarkers = false, + markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 }, + showroomJobWhitelist = {}, + showroomGangWhitelist = {}, + societyPurchaseJobWhitelist = {}, + societyPurchaseGangWhitelist = {}, + }, +} + +-- Commands +Config.MyFinanceCommand = "myfinance" +Config.DirectSaleCommand = "directsale" +Config.DealerAdminCommand = "dealeradmin" + +-- Nerd options +Config.RemoveGeneratorsAroundDealership = 60.0 +Config.AutoRunSQL = true +Config.ReturnToPreviousRoutingBucket = false +Config.HideWatermark = false +Config.Debug = false \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/framework/cl-functions.lua b/resources/[carscripts]/jg-dealerships/framework/cl-functions.lua new file mode 100644 index 000000000..33920f655 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/framework/cl-functions.lua @@ -0,0 +1,415 @@ +---@param text string +function Framework.Client.ShowTextUI(text) + SetTimeout(1, function() + if (Config.DrawText == "auto" and GetResourceState("jg-textui") == "started") or Config.DrawText == "jg-textui" then + exports["jg-textui"]:DrawText(text) + elseif (Config.DrawText == "auto" and GetResourceState("ox_lib") == "started") or Config.DrawText == "ox_lib" then + exports["ox_lib"]:showTextUI(text, { + position = "left-center" + }) + elseif (Config.DrawText == "auto" and GetResourceState("okokTextUI") == "started") or Config.DrawText == "okokTextUI" then + exports["okokTextUI"]:Open(text, "lightblue", "left") + elseif (Config.DrawText == "auto" and GetResourceState("ps-ui") == "started") or Config.DrawText == "ps-ui" then + exports["ps-ui"]:DisplayText(text, "primary") + elseif Config.Framework == "QBCore" then + exports["qb-core"]:DrawText(text) + else + error("You do not have a TextUI system set up!") + end + end) +end + +function Framework.Client.HideTextUI() + if (Config.DrawText == "auto" and GetResourceState("jg-textui") == "started") or Config.DrawText == "jg-textui" then + exports["jg-textui"]:HideText() + elseif (Config.DrawText == "auto" and GetResourceState("ox_lib") == "started") or Config.DrawText == "ox_lib" then + exports["ox_lib"]:hideTextUI() + elseif (Config.DrawText == "auto" and GetResourceState("okokTextUI") == "started") or Config.DrawText == "okokTextUI" then + exports["okokTextUI"]:Close() + elseif (Config.DrawText == "auto" and GetResourceState("ps-ui") == "started") or Config.DrawText == "ps-ui" then + exports["ps-ui"]:HideText() + elseif Config.Framework == "QBCore" then + exports["qb-core"]:HideText() + else + error("You do not have a TextUI system set up!") + end +end + + +---@param msg string +---@param type? "success" | "warning" | "error" +---@param time? number +function Framework.Client.Notify(msg, type, time) + type = type or "success" + time = time or 5000 + + if (Config.Notifications == "auto" and GetResourceState("okokNotify") == "started") or Config.Notifications == "okokNotify" then + exports["okokNotify"]:Alert("Dealerships", msg, time, type) + elseif (Config.Notifications == "auto" and GetResourceState("ps-ui") == "started") or Config.Notifications == "ps-ui" then + exports["ps-ui"]:Notify(msg, type, time) + elseif (Config.Notifications == "auto" and GetResourceState("ox_lib") == "started") or Config.Notifications == "ox_lib" then + exports["ox_lib"]:notify({ + title = "Dealerships", + description = msg, + type = type + }) + else + if Config.Framework == "QBCore" then + return QBCore.Functions.Notify(msg, type, time) + elseif Config.Framework == "Qbox" then + exports.qbx_core:Notify(msg, type, time) + elseif Config.Framework == "ESX" then + return ESX.ShowNotification(msg, type) + end + end +end + +RegisterNetEvent("jg-dealerships:client:notify", function(...) + Framework.Client.Notify(...) +end) + +function Framework.Client.ToggleHud(toggle) + DisplayHud(toggle) + DisplayRadar(toggle) +end + +-- +-- Vehicle Functions +-- + +---@param vehicle integer +---@return table|false props +function Framework.Client.GetVehicleProperties(vehicle) + if GetResourceState("jg-mechanic") == "started" then + return exports["jg-mechanic"]:getVehicleProperties(vehicle) + else + if Config.Framework == "QBCore" then + return QBCore.Functions.GetVehicleProperties(vehicle) + elseif Config.Framework == "Qbox" then + return lib.getVehicleProperties(vehicle) or false + elseif Config.Framework == "ESX" then + return ESX.Game.GetVehicleProperties(vehicle) + end + end + + return false +end + +---@param vehicle integer +---@param props table +function Framework.Client.SetVehicleProperties(vehicle, props) + if GetResourceState("jg-mechanic") == "started" then + return exports["jg-mechanic"]:setVehicleProperties(vehicle, props) + else + if Config.Framework == "QBCore" then + return QBCore.Functions.SetVehicleProperties(vehicle, props) + elseif Config.Framework == "Qbox" then + return lib.setVehicleProperties(vehicle, props) + elseif Config.Framework == "ESX" then + return ESX.Game.SetVehicleProperties(vehicle, props) + end + end +end + +---@param vehicle integer +---@return number fuelLevel +function Framework.Client.VehicleGetFuel(vehicle) + if not DoesEntityExist(vehicle) then return 0 end + + if (Config.FuelSystem == "LegacyFuel" or Config.FuelSystem == "ps-fuel" or Config.FuelSystem == "lj-fuel" or Config.FuelSystem == "cdn-fuel" or Config.FuelSystem == "hyon_gas_station" or Config.FuelSystem == "okokGasStation" or Config.FuelSystem == "nd_fuel" or Config.FuelSystem == "myFuel" or Config.FuelSystem == "rcore_fuel" or Config.Fuelsystem == "qs-fuelstations") then + return exports[Config.FuelSystem]:GetFuel(vehicle) + elseif Config.FuelSystem == "ti_fuel" then + local level, type = exports["ti_fuel"]:getFuel(vehicle) + TriggerServerEvent("jg-dealerships:server:save-ti-fuel-type", Framework.Client.GetPlate(vehicle), type) + return level + elseif Config.FuelSystem == "ox_fuel" or Config.FuelSystem == "Renewed-Fuel" then + return GetVehicleFuelLevel(vehicle) + elseif Config.FuelSystem == "rcore_fuel" then + return exports.rcore_fuel:GetVehicleFuelPercentage(vehicle) + else + return 65 -- or set up custom fuel system here... + end +end + +---@param vehicle integer +---@param fuel number +function Framework.Client.VehicleSetFuel(vehicle, fuel) + if not DoesEntityExist(vehicle) then return false end + + if (Config.FuelSystem == "LegacyFuel" or Config.FuelSystem == "ps-fuel" or Config.FuelSystem == "lj-fuel" or Config.FuelSystem == "cdn-fuel" or Config.FuelSystem == "hyon_gas_station" or Config.FuelSystem == "okokGasStation" or Config.FuelSystem == "nd_fuel" or Config.FuelSystem == "myFuel" or Config.FuelSystem == "Renewed-Fuel" or Config.FuelSystem == "rcore_fuel" or Config.FuelSystem == "qs-fuelstations") then + exports[Config.FuelSystem]:SetFuel(vehicle, fuel) + elseif Config.FuelSystem == "ti_fuel" then + local fuelType = lib.callback.await("jg-dealerships:server:get-ti-fuel-type", false, Framework.Client.GetPlate(vehicle)) + exports["ti_fuel"]:setFuel(vehicle, fuel, fuelType or nil) + elseif Config.FuelSystem == "ox_fuel" then + Entity(vehicle).state.fuel = fuel + elseif Config.FuelSystem == "rcore_fuel" then + exports.rcore_fuel:SetVehicleFuel(vehicle, fuel) + else + -- Setup custom fuel system here + end +end + +---@param plate string +---@param vehicleEntity integer +---@param origin "testDrive"|"purchase" +function Framework.Client.VehicleGiveKeys(plate, vehicleEntity, origin) + if not DoesEntityExist(vehicleEntity) then return false end + + if Config.VehicleKeys == "qb-vehiclekeys" then + TriggerEvent("vehiclekeys:client:SetOwner", plate) + elseif Config.VehicleKeys == "jaksam-vehicles-keys" then + TriggerServerEvent("vehicles_keys:selfGiveVehicleKeys", plate) + elseif Config.VehicleKeys == "mk_vehiclekeys" then + exports["mk_vehiclekeys"]:AddKey(vehicleEntity) + elseif Config.VehicleKeys == "qs-vehiclekeys" then + local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity)) + exports["qs-vehiclekeys"]:GiveKeys(plate, model) + elseif Config.VehicleKeys == "wasabi_carlock" then + exports.wasabi_carlock:GiveKey(plate) + elseif Config.VehicleKeys == "cd_garage" then + TriggerEvent("cd_garage:AddKeys", plate) + elseif Config.VehicleKeys == "okokGarage" then + TriggerServerEvent("okokGarage:GiveKeys", plate) + elseif Config.VehicleKeys == "t1ger_keys" then + TriggerServerEvent("t1ger_keys:updateOwnedKeys", plate, true) + elseif Config.VehicleKeys == "MrNewbVehicleKeys" then + exports.MrNewbVehicleKeys:GiveKeys(vehicleEntity) + elseif Config.VehicleKeys == "Renewed" then + exports["Renewed-Vehiclekeys"]:addKey(plate) + elseif Config.VehicleKeys == "mx_carkeys" then + if origin == "testDrive" then + exports["mx_carkeys"]:createTempKey(vehicleEntity, plate, 2) + else + exports["mx_carkeys"]:buyVehicle(vehicleEntity, plate, 2) + end + elseif Config.VehicleKeys == "tgiann-hotwire" then + if origin == "testDrive" then + exports["tgiann-hotwire"]:SetNonRemoveableIgnition(vehicleEntity, true) + else + exports["tgiann-hotwire"]:GiveKeyPlate(plate, true) + end + else + -- Setup custom key system here... + end +end + +---@param plate string +---@param vehicleEntity integer +---@param origin "vehicleSale"|"testDrive" +function Framework.Client.VehicleRemoveKeys(plate, vehicleEntity, origin) + if not DoesEntityExist(vehicleEntity) then return false end + + if Config.VehicleKeys == "qs-vehiclekeys" then + local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity)) + exports["qs-vehiclekeys"]:RemoveKeys(plate, model) + elseif Config.VehicleKeys == "wasabi_carlock" then + exports.wasabi_carlock:RemoveKey(plate) + elseif Config.VehicleKeys == "t1ger_keys" then + TriggerServerEvent("t1ger_keys:updateOwnedKeys", plate, false) + elseif Config.VehicleKeys == "MrNewbVehicleKeys" then + exports.MrNewbVehicleKeys:RemoveKeys(vehicleEntity) + elseif Config.VehicleKeys == "Renewed" then + exports["Renewed-Vehiclekeys"]:removeKey(plate) + elseif Config.VehicleKeys == "mx_carkeys" then + exports["mx_carkeys"]:removeVehicleKey(vehicleEntity) + else + -- Setup custom key system here... + end +end + +---@param vehicle integer +---@return string|false plate +function Framework.Client.GetPlate(vehicle) + local plate = GetVehicleNumberPlateText(vehicle) + if not plate or plate == nil or plate == "" then return false end + + if GetResourceState("brazzers-fakeplates") == "started" then + local originalPlate = lib.callback.await("jg-dealerships:server:brazzers-get-plate-from-fakeplate", false, plate) + if originalPlate then plate = originalPlate end + end + + local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1") + return trPlate +end + +---@param vehicle integer +---@return string|number|false model +function Framework.Client.GetModelColumn(vehicle) + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return vehicle.vehicle or tonumber(vehicle.hash) or false + elseif Config.Framework == "ESX" then + if not vehicle or not vehicle.vehicle then return false end + + if type(vehicle.vehicle) == "string" then + if not json.decode(vehicle.vehicle) then return false end + return json.decode(vehicle.vehicle).model + else + return vehicle.vehicle.model + end + end + + return false +end + +-- Get a nice vehicle label from either QBCore shared or GTA natives +---@param model string | number +function Framework.Client.GetVehicleLabel(model) + if type(model) == "string" then + if Config.Framework == "QBCore" and QBCore.Shared.Vehicles then + local vehShared = QBCore.Shared.Vehicles[model] + if vehShared then + return vehShared.brand .. " " .. vehShared.name + end + end + + if Config.Framework == "Qbox" and exports.qbx_core:GetVehiclesByName() then + local vehShared = exports.qbx_core:GetVehiclesByName()[model] + if vehShared then + return vehShared.brand .. " " .. vehShared.name + end + end + end + + local hash = type(model) == "string" and joaat(model) or model + local makeName = GetMakeNameFromVehicleModel(hash) + local modelName = GetDisplayNameFromVehicleModel(hash) + local label = GetLabelText(makeName) .. " " .. GetLabelText(modelName) + + if makeName == "CARNOTFOUND" or modelName == "CARNOTFOUND" then + label = tostring(model) + else + if GetLabelText(modelName) == "NULL" and GetLabelText(makeName) == "NULL" then + label = (makeName or "") .. " " .. (modelName or "") + elseif GetLabelText(makeName) == "NULL" then + label = GetLabelText(modelName) + end + end + + return label +end + +---Returns vehicle stats in a table format +---@param model string model (archetype) name +function Framework.Client.GetVehicleStats(model) + local vehicle = joaat(model) -- convert to hash + local class = GetVehicleClassFromName(vehicle) + + local mult, pmult, tmult = 1, 1000, 800 + if class == 14 or class == 15 or class == 16 then + mult, pmult, tmult = 0.1, 10, 8 + end + + local brake = GetVehicleModelMaxBraking(vehicle) * mult + local handling = ((GetVehicleModelMaxBraking(vehicle) + GetVehicleModelMaxBrakingMaxMods(vehicle)) * GetVehicleModelMaxTraction(vehicle)) * mult + local topSpeed = math.ceil(GetVehicleModelEstimatedMaxSpeed(vehicle) * 2.2369) + if Config.SpeedUnit == "kph" then topSpeed = math.ceil(GetVehicleModelEstimatedMaxSpeed(vehicle) * 3.6) end + local power = math.ceil(GetVehicleModelAcceleration(vehicle) * pmult) + local torque = math.ceil(GetVehicleModelAcceleration(vehicle) * tmult) + + -- If you are really unhappy with the values being returned from the game, you could write something + -- like the following to overwrite the values to custom ones, by writing something like: + -- + -- if model == "adder" then + -- return { + -- brake = 1.0, + -- handling = 7.0, + -- topSpeed = 150, + -- power = 900, + -- torque = 800 + -- } + -- end + + return { + brake = brake, + handling = handling, + topSpeed = topSpeed, + power = power, + torque = torque + } +end + +-- +-- Player Functions +-- + +function Framework.Client.GetPlayerData() + if Config.Framework == "QBCore" then + return QBCore.Functions.GetPlayerData() + elseif Config.Framework == "Qbox" then + return exports.qbx_core:GetPlayerData() + elseif Config.Framework == "ESX" then + return ESX.GetPlayerData() + end +end + +function Framework.Client.GetPlayerIdentifier() + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return Globals.PlayerData.citizenid + elseif Config.Framework == "ESX" then + return Globals.PlayerData.identifier + end +end + +---@param type "cash" | "bank" | "money" | string +function Framework.Client.GetBalance(type) + if type == "custom" then + -- Add your own custom balance system here + elseif Config.Framework == "QBCore" then + return QBCore.Functions.GetPlayerData().money[type] + elseif Config.Framework == "Qbox" then + return exports.qbx_core:GetPlayerData().money[type] + elseif Config.Framework == "ESX" then + if type == "cash" then type = "money" end + + for i, acc in pairs(ESX.GetPlayerData().accounts) do + if acc.name == type then + return acc.money + end + end + + return 0 + end +end + +---@param society string +---@param type "job"|"gang" +---@return number balance +function Framework.Client.GetSocietyBalance(society, type) + local balance = lib.callback.await("jg-dealerships:server:get-society-balance", false, society, type) + return balance +end + +function Framework.Client.GetPlayerJob() + local player = Framework.Client.GetPlayerData() + if not player or not player.job then return {} end + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return { + name = player.job.name, + label = player.job.label, + grade = player.job.grade.level + } + elseif Config.Framework == "ESX" then + return { + name = player.job.name, + label = player.job.label, + grade = player.job.grade + } + end +end + +function Framework.Client.GetPlayerGang() + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + local player = Framework.Client.GetPlayerData() + if not player or not player.gang then return {} end + + return { + name = player.gang.name, + label = player.gang.label, + grade = player.gang.grade.level + } + elseif Config.Framework == "ESX" then + error("ESX does not natively support gangs."); + end +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/framework/esx/cl-esx.lua b/resources/[carscripts]/jg-dealerships/framework/esx/cl-esx.lua new file mode 100644 index 000000000..937fa481d --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/framework/esx/cl-esx.lua @@ -0,0 +1,21 @@ +if (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then + -- Player data + Globals.PlayerData = ESX.GetPlayerData() + + RegisterNetEvent("esx:playerLoaded") + AddEventHandler("esx:playerLoaded", function(xPlayer) + Globals.PlayerData = xPlayer + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + + CreateThread(function() + Wait(1000) + lib.callback.await("jg-dealerships:server:exit-showroom", false) + end) + end) + + RegisterNetEvent("esx:setJob") + AddEventHandler("esx:setJob", function(job) + Globals.PlayerData.job = job + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + end) +end diff --git a/resources/[carscripts]/jg-dealerships/framework/main.lua b/resources/[carscripts]/jg-dealerships/framework/main.lua new file mode 100644 index 000000000..06bbc82b1 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/framework/main.lua @@ -0,0 +1,35 @@ +QBCore, ESX = nil, nil +Framework = { + Client = {}, + Server = {} +} + +if (Config.Framework == "auto" and GetResourceState("qbx_core") == "started") or Config.Framework == "Qbox" then + Config.Framework = "Qbox" + + Framework.VehiclesTable = "player_vehicles" + Framework.VehProps = "mods" + Framework.PlayerId = "citizenid" + Framework.PlayersTable = "players" + Framework.PlayersTableId = "citizenid" +elseif (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then + QBCore = exports['qb-core']:GetCoreObject() + Config.Framework = "QBCore" + + Framework.VehiclesTable = "player_vehicles" + Framework.VehProps = "mods" + Framework.PlayerId = "citizenid" + Framework.PlayersTable = "players" + Framework.PlayersTableId = "citizenid" +elseif (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then + ESX = exports["es_extended"]:getSharedObject() + Config.Framework = "ESX" + + Framework.VehiclesTable = "owned_vehicles" + Framework.VehProps = "vehicle" + Framework.PlayerId = "owner" + Framework.PlayersTable = "users" + Framework.PlayersTableId = "identifier" +else + error("You need to set the Config.Framework to either \"QBCore\" or \"ESX\" or \"Qbox\"!") +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/framework/qb/cl-qb.lua b/resources/[carscripts]/jg-dealerships/framework/qb/cl-qb.lua new file mode 100644 index 000000000..85ae2a2c0 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/framework/qb/cl-qb.lua @@ -0,0 +1,32 @@ +if (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then + -- Player data + Globals.PlayerData = QBCore.Functions.GetPlayerData() + + RegisterNetEvent("QBCore:Client:OnPlayerLoaded") + AddEventHandler("QBCore:Client:OnPlayerLoaded", function() + Globals.PlayerData = QBCore.Functions.GetPlayerData() + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + + CreateThread(function() + Wait(1000) + lib.callback.await("jg-dealerships:server:exit-showroom", false) + end) + end) + + RegisterNetEvent("QBCore:Client:OnJobUpdate") + AddEventHandler("QBCore:Client:OnJobUpdate", function(job) + Globals.PlayerData.job = job + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + end) + + RegisterNetEvent("QBCore:Client:OnGangUpdate") + AddEventHandler("QBCore:Client:OnGangUpdate", function(gang) + Globals.PlayerData.gang = gang + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + end) + + -- For jacksam's job creator + RegisterNetEvent("jobs_creator:injectJobs", function(jobs) + QBCore.Jobs = jobs + end) +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/framework/qbx/cl-qbx.lua b/resources/[carscripts]/jg-dealerships/framework/qbx/cl-qbx.lua new file mode 100644 index 000000000..1c5b1b637 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/framework/qbx/cl-qbx.lua @@ -0,0 +1,27 @@ +if (Config.Framework == "auto" and GetResourceState("qbx_core") == "started") or Config.Framework == "Qbox" then + -- Player data + Globals.PlayerData = exports.qbx_core:GetPlayerData() + + RegisterNetEvent("QBCore:Client:OnPlayerLoaded") + AddEventHandler("QBCore:Client:OnPlayerLoaded", function() + Globals.PlayerData = exports.qbx_core:GetPlayerData() + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + + CreateThread(function() + Wait(1000) + lib.callback.await("jg-dealerships:server:exit-showroom", false) + end) + end) + + RegisterNetEvent("QBCore:Client:OnJobUpdate") + AddEventHandler("QBCore:Client:OnJobUpdate", function(job) + Globals.PlayerData.job = job + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + end) + + RegisterNetEvent("QBCore:Client:OnGangUpdate") + AddEventHandler("QBCore:Client:OnGangUpdate", function(gang) + Globals.PlayerData.gang = gang + TriggerEvent("jg-dealerships:client:update-blips-text-uis") + end) +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/framework/sv-functions.lua b/resources/[carscripts]/jg-dealerships/framework/sv-functions.lua new file mode 100644 index 000000000..49430d54d --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/framework/sv-functions.lua @@ -0,0 +1,499 @@ +---@param src integer +---@param msg string +---@param type "success" | "warning" | "error" +function Framework.Server.Notify(src, msg, type) + TriggerClientEvent("jg-dealerships:client:notify", src, msg, type, 5000) +end + +---@param src integer +---@returns boolean +function Framework.Server.IsAdmin(src) + return IsPlayerAceAllowed(tostring(src), "command") or false +end + +-- +-- Society +-- + +local usingNewQBBanking = GetResourceState("qb-banking") == "started" and tonumber(string.sub(GetResourceMetadata("qb-banking", "version", 0), 1, 3)) >= 2 + +---@param society string +---@param societyType "job"|"gang" +---@return number balance +function Framework.Server.GetSocietyBalance(society, societyType) + if GetResourceState("okokBanking") == "started" then + return exports["okokBanking"]:GetAccount(society) + elseif GetResourceState("tgg-banking") == "started" then + return exports["tgg-banking"]:GetSocietyAccountMoney(society) + elseif GetResourceState("Renewed-Banking") == "started" then + return exports["Renewed-Banking"]:getAccountMoney(society) + elseif Config.Framework == "QBCore" then + if usingNewQBBanking then + return exports["qb-banking"]:GetAccountBalance(society) + else + if societyType == "job" then + return exports["qb-management"]:GetAccount(society) + elseif societyType == "gang" then + return exports["qb-management"]:GetGangAccount(society) + end + end + elseif Config.Framework == "ESX" then + local balance = promise.new() + + TriggerEvent("esx_society:getSociety", society, function(data) + if not data then return balance:resolve(0) end + + TriggerEvent("esx_addonaccount:getSharedAccount", data.account, function(account) + return balance:resolve(account.money) + end) + end) + + return Citizen.Await(balance) + end + + return 0 +end + +lib.callback.register("jg-dealerships:server:get-society-balance", function(_, society, type) + return Framework.Server.GetSocietyBalance(society, type) +end) + +---@param societyName string +---@param societyType "job"|"gang" +---@param amount number +function Framework.Server.RemoveFromSocietyFund(societyName, societyType, amount) + if GetResourceState("okokBanking") == "started" then + exports["okokBanking"]:RemoveMoney(societyName, amount) + elseif GetResourceState("tgg-banking") == "started" then + exports["tgg-banking"]:RemoveSocietyMoney(societyName, amount) + elseif GetResourceState("Renewed-Banking") == "started" then + exports["Renewed-Banking"]:removeAccountMoney(societyName, amount) + elseif Config.Framework == "QBCore" then + if usingNewQBBanking then + exports["qb-banking"]:RemoveMoney(societyName, amount) + else + if societyType == "job" then + exports["qb-management"]:RemoveMoney(societyName, amount) + elseif societyType == "gang" then + exports["qb-management"]:RemoveGangMoney(societyName, amount) + end + end + elseif Config.Framework == "ESX" then + TriggerEvent("esx_society:getSociety", societyName, function(society) + TriggerEvent("esx_addonaccount:getSharedAccount", society.account, function(account) + account.removeMoney(amount) + end) + end) + end +end + +---@param purchaseType "society"|"personal" +---@param society? string +---@param societyType? string +---@param model string|integer +---@param plate string +---@param financed? boolean +---@param financeData? table +---@return integer|nil vehicleId +function Framework.Server.SaveVehicleToGarage(src, purchaseType, society, societyType, model, plate, financed, financeData) + local vehicleId = nil + local props = json.encode({ + model = ConvertModelToHash(model), + plate = plate + }) + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + local playerData = Framework.Server.GetPlayer(src).PlayerData + local license = playerData.license + local citizenid = playerData.citizenid + + if purchaseType == "society" then + vehicleId = MySQL.insert.await( + "INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, financed, finance_data, job_vehicle, job_vehicle_rank, gang_vehicle, gang_vehicle_rank) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + {license, society, model, joaat(model), props, plate, financed, json.encode(financeData), societyType == "job" and 1 or 0, 0, societyType == "gang" and 1 or 0, 0} + ) + else + vehicleId = MySQL.insert.await( + "INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, financed, finance_data) VALUES(?, ?, ?, ?, ?, ?, ?, ?)", + {license, citizenid, model, joaat(model), props, plate, financed, json.encode(financeData)} + ) + end + elseif Config.Framework == "ESX" then + local identifier = Framework.Server.GetPlayerIdentifier(src) + DebugPrint("Saving vehicle to garage for "..identifier.. " type: "..purchaseType, "debug") + if purchaseType == "society" and societyType == "job" then + vehicleId = MySQL.insert.await( + "INSERT INTO owned_vehicles (owner, plate, vehicle, financed, finance_data, job_vehicle, job_vehicle_rank) VALUES(?, ?, ?, ?, ?, ?, ?)", + {society, plate, props, financed, json.encode(financeData), 1, 0} + ) + else + vehicleId = MySQL.insert.await( + "INSERT INTO owned_vehicles (owner, plate, vehicle, financed, finance_data) VALUES(?, ?, ?, ?, ?)", + {identifier, plate, props, financed, json.encode(financeData)} + ) + end + end + + return vehicleId +end + +---@param vehicle boolean|QueryResult|unknown|{ [number]: { [string]: unknown }|{ [string]: unknown }} +---@return string | number | false model +function Framework.Server.GetModelColumn(vehicle) + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return vehicle.vehicle or tonumber(vehicle.hash) or false + elseif Config.Framework == "ESX" then + if not vehicle or not vehicle.vehicle then return false end + + if type(vehicle.vehicle) == "string" then + if not json.decode(vehicle.vehicle) then return false end + return json.decode(vehicle.vehicle).model + else + return vehicle.vehicle.model + end + end + + return false +end + +---@param vehicle integer +---@return string | false plate +function Framework.Server.GetPlate(vehicle) + local plate = GetVehicleNumberPlateText(vehicle) + if not plate or plate == nil or plate == "" then return false end + + if GetResourceState("brazzers-fakeplates") == "started" then + local originalPlate = MySQL.scalar.await("SELECT plate FROM player_vehicles WHERE fakeplate = ?", {plate}) + if originalPlate then plate = originalPlate end + end + + local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1") + return trPlate +end + +---Generate a plate based on a seed +---@param seed string +---@param checkIfExists? boolean Check if the plate exists in the DB +---@return string|false generatedPlate +function Framework.Server.VehicleGeneratePlate(seed, checkIfExists) + seed = seed or "1AA111AA" + + local CHARSET_NUMBERS, CHARSET_LETTERS = "0123456789", "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + local attempts = 0 + + while attempts < 20 do + local i, plate = 0, "" + + while i <= seed:len() do + local char = seed:sub(i, i) + + if char == "A" then + local randLetterPos = math.random(1, #CHARSET_LETTERS) + local randLetter = CHARSET_LETTERS:sub(randLetterPos, randLetterPos) + plate = plate .. randLetter + elseif char == "1" then + local randNumberPos = math.random(1, #CHARSET_NUMBERS) + local randNumber = CHARSET_NUMBERS:sub(randNumberPos, randNumberPos) + plate = plate .. randNumber + elseif char == "^" then + i = i + 1 + if i <= seed:len() then plate = plate .. seed:sub(i, i) end + else + plate = plate .. char + end + + i = i + 1 + end + + plate = plate:upper() + + if plate:len() > 8 then + error("^1[ERROR] You are generating a plate with more than 8 characters.") + return false + end + + if not checkIfExists then + return plate + end + + local result = MySQL.scalar.await("SELECT plate FROM " .. Framework.VehiclesTable .. " WHERE plate = ?", {plate}) + if not result then return plate end + + attempts = attempts + 1 + end + + return false +end + +lib.callback.register("jg-dealerships:server:vehicle-generate-plate", function(_, ...) + return Framework.Server.VehicleGeneratePlate(...) +end) + +exports("generatePlate", Framework.Server.VehicleGeneratePlate) + +-- +-- Player Functions +-- + +---@param src integer +function Framework.Server.GetPlayer(src) + if Config.Framework == "QBCore" then + return QBCore.Functions.GetPlayer(src) + elseif Config.Framework == "Qbox" then + return exports.qbx_core:GetPlayer(src) + elseif Config.Framework == "ESX" then + return ESX.GetPlayerFromId(src) + end +end + +---@param src integer +function Framework.Server.GetPlayerInfo(src) + local player = Framework.Server.GetPlayer(src) + if not player then return false end + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return { + name = player.PlayerData.charinfo.firstname .. " " .. player.PlayerData.charinfo.lastname + } + elseif Config.Framework == "ESX" then + return { + name = player.getName() + } + end +end + +---@param identifier string +function Framework.Server.GetPlayerInfoFromIdentifier(identifier) + local player = MySQL.single.await("SELECT * FROM " .. Framework.PlayersTable .. " WHERE " .. Framework.PlayersTableId .. " = ?", {identifier}) + if not player then return false end + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + local charinfo = json.decode(player.charinfo) + return { + name = charinfo.firstname .. " " .. charinfo.lastname + } + elseif Config.Framework == "ESX" then + return { + name = player.firstname .. " " .. player.lastname + } + end +end + +---@param src integer +function Framework.Server.GetPlayerIdentifier(src) + local player = Framework.Server.GetPlayer(src) + if not player then return false end + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return player.PlayerData.citizenid + elseif Config.Framework == "ESX" then + return player.getIdentifier() + end +end + +---@param identifier string +---@return integer | false src +function Framework.Server.GetPlayerFromIdentifier(identifier) + if Config.Framework == "QBCore" then + local player = QBCore.Functions.GetPlayerByCitizenId(identifier) + if not player then return false end + return player.PlayerData.source + elseif Config.Framework == "Qbox" then + local player = exports.qbx_core:GetPlayerByCitizenId(identifier) + if not player then return false end + return player.PlayerData.source + elseif Config.Framework == "ESX" then + local xPlayer = ESX.GetPlayerFromIdentifier(identifier) + if not xPlayer then return false end + return xPlayer.source + end + + return false +end + +-- +-- Player Money +-- + +---@param src integer +---@param type "cash" | "bank" | "money" +function Framework.Server.GetPlayerBalance(src, type) + local player = Framework.Server.GetPlayer(src) + if not player then return 0 end + + if type == "custom" then + -- Add your own custom balance system here + elseif Config.Framework == "QBCore" or Config.Framework == "Qbox" then + return player.PlayerData.money[type] + elseif Config.Framework == "ESX" then + if type == "cash" then type = "money" end + + for i, acc in pairs(player.getAccounts()) do + if acc.name == type then + return acc.money + end + end + + return 0 + end +end + +---@param src integer +---@param amount number +---@param account "cash" | "bank" | "money" +function Framework.Server.PlayerAddMoney(src, amount, account) + local player = Framework.Server.GetPlayer(src) + account = account or "bank" + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + player.Functions.AddMoney(account, Round(amount, 0)) + elseif Config.Framework == "ESX" then + if account == "cash" then account = "money" end + player.addAccountMoney(account, Round(amount, 0)) + end +end + +---@param src integer +---@param amount number +---@param account "cash" | "bank" | "money" +function Framework.Server.PlayerRemoveMoney(src, amount, account) + local player = Framework.Server.GetPlayer(src) + account = account or "bank" + + if account == "custom" then + -- Add your own custom balance system here + elseif Config.Framework == "QBCore" or Config.Framework == "Qbox" then + player.Functions.RemoveMoney(account, Round(amount, 0)) + elseif Config.Framework == "ESX" then + if account == "cash" then account = "money" end + player.removeAccountMoney(account, Round(amount, 0)) + end +end + +-- +-- Player Job +-- + +---@param src integer +---@param job string +---@param role "sales" | "supervisor" | "manager" | number +function Framework.Server.PlayerSetJob(src, job, role) + local player = Framework.Server.GetPlayer(src) + + -- Adjust this as necessary for your job setup + local rank = 1 -- sales + if role == "supervisor" then rank = 2 end + if role == "manager" then rank = 3 end + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + player.Functions.SetJob(job, rank) + elseif Config.Framework == "ESX" then + player.setJob(job, rank) + end +end + +---@param identifier string +---@param job string +---@param role "sales" | "supervisor" | "manager" | number +function Framework.Server.PlayerSetJobOffline(identifier, job, role) + -- Adjust this as necessary for your job setup + local rank = 1 -- sales + if role == "supervisor" then rank = 2 end + if role == "manager" then rank = 3 end + + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + local jobsList = {} + if Config.Framework == "QBCore" then jobsList = QBCore.Shared.Jobs + elseif Config.Framework == "Qbox" then jobsList = exports.qbx_core:GetJobs() end + + if not jobsList[job] then return false end + + local jobData = { + name = job, + label = jobsList[job].label, + onduty = jobsList[job].defaultDuty, + type = jobsList[job].type or "none", + grade = { + name = "No Grades", + level = 0, + }, + payment = 30, + isboss = false + } + if jobsList[job].grades[tostring(rank)] then + local jobgrade = jobsList[job].grades[tostring(rank)] + jobData.grade = {} + jobData.grade.name = jobgrade.name + jobData.grade.level = rank + jobData.payment = jobgrade.payment or 30 + jobData.isboss = jobgrade.isboss or false + end + + MySQL.update.await("UPDATE players SET job = ? WHERE citizenid = ?", {json.encode(jobData), identifier}) + elseif Config.Framework == "ESX" then + MySQL.update.await("UPDATE users SET job = ?, job_grade = ? WHERE identifier = ?", {job, rank, identifier}) + end +end + +function Framework.Server.GetPlayers() + local players = {} + if Config.Framework == "QBCore" then + players = QBCore.Functions.GetQBPlayers() + elseif Config.Framework == "Qbox" then + players = exports.qbx_core:GetQBPlayers() + elseif Config.Framework == "ESX" then + players = ESX.GetExtendedPlayers() + end + + for id, player in pairs(players) do + if Config.Framework == "QBCore" or Config.Framework == "Qbox" then + players[id].player_id = player.PlayerData.source + elseif Config.Framework == "ESX" then + players[id].player_id = player.source + end + end + + return players +end + +function Framework.Server.GetJobs() + if Config.Framework == "QBCore" then + return QBCore.Shared.Jobs + elseif Config.Framework == "Qbox" then + return exports.qbx_core:GetJobs() + elseif Config.Framework == "ESX" then + return ESX.GetJobs() + end +end + +-- +-- ti_fuel +-- + +RegisterNetEvent("jg-dealerships:server:save-ti-fuel-type", function(plate, type) + MySQL.query.await("ALTER TABLE " .. Framework.VehiclesTable .. " ADD COLUMN IF NOT EXISTS `ti_fuel_type` VARCHAR(100) DEFAULT '';") + MySQL.update.await("UPDATE " .. Framework.VehiclesTable .. " SET ti_fuel_type = ? WHERE plate = ?", {type, plate}); +end) + +lib.callback.register("jg-dealerships:server:get-ti-fuel-type", function(src, plate) + MySQL.query.await("ALTER TABLE " .. Framework.VehiclesTable .. " ADD COLUMN IF NOT EXISTS `ti_fuel_type` VARCHAR(100) DEFAULT '';") + return MySQL.scalar.await("SELECT ti_fuel_type FROM " .. Framework.VehiclesTable .. " WHERE plate = ?", {plate}) or false +end) + +-- +-- Brazzers-FakePlates +-- + +if GetResourceState("brazzers-fakeplates") == "started" then + lib.callback.register("jg-dealerships:server:brazzers-get-plate-from-fakeplate", function(_, fakeplate) + local result = MySQL.scalar.await("SELECT plate FROM player_vehicles WHERE fakeplate = ?", {fakeplate}) + if result then return result end + return false + end) + + lib.callback.register("jg-dealerships:server:brazzers-get-fakeplate-from-plate", function(_, plate) + local result = MySQL.scalar.await("SELECT fakeplate FROM player_vehicles WHERE plate = ?", {plate}) + if result then return result end + return false + end) +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/fxmanifest.lua b/resources/[carscripts]/jg-dealerships/fxmanifest.lua new file mode 100644 index 000000000..3295e334b --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/fxmanifest.lua @@ -0,0 +1,57 @@ +fx_version "cerulean" +game "gta5" +lua54 "yes" + +description "For support or other queries: discord.gg/jgscripts" +version 'v1.5.1' +author "JG Scripts" + +dependencies { + "oxmysql", + "ox_lib", + "/server:7290", + "/onesync", +} + +shared_scripts { + "@ox_lib/init.lua", + "config/config.lua", + "locales/*.lua", + "shared/main.lua", + "framework/main.lua" +} + +client_scripts { + "framework/**/cl-*.lua", + "client/cl-main.lua", + "client/*.lua", + "config/config-cl.lua" +} + +server_scripts { + "@oxmysql/lib/MySQL.lua", + "server/sv-webhooks.lua", + "framework/**/sv-*.lua", + "server/*.lua", + "config/config-sv.lua" +} + +ui_page "web/dist/index.html" + +files { + "web/dist/index.html", + "web/dist/**/*" +} + +escrow_ignore { + "shared/*", + "config/**/*", + "framework/**/*", + "locales/*", + "client/cl-locations.lua", + "server/sv-webhooks.lua", + "client/cl-purchase.lua", + "server/sv-purchase.lua" +} + +dependency '/assetpacks' \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/install/run-esx.sql b/resources/[carscripts]/jg-dealerships/install/run-esx.sql new file mode 100644 index 000000000..c713b701c --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/install/run-esx.sql @@ -0,0 +1,85 @@ +ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `financed` tinyint(1) NOT NULL DEFAULT 0; +ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `finance_data` longtext DEFAULT NULL; + +CREATE TABLE IF NOT EXISTS `dealership_data` ( + `name` varchar(100) NOT NULL, + `label` varchar(255) NOT NULL, + `balance` float NOT NULL DEFAULT 0, + `owner_id` varchar(255) DEFAULT NULL, + `owner_name` varchar(255) DEFAULT NULL, + `employee_commission` int(11) DEFAULT '10', + PRIMARY KEY (`name`) +); + +CREATE TABLE IF NOT EXISTS `dealership_vehicles` ( + `spawn_code` varchar(100) NOT NULL, + `brand` varchar(255) DEFAULT NULL, + `model` varchar(255) DEFAULT NULL, + `hashkey` varchar(100) DEFAULT NULL, + `category` varchar(100) NOT NULL, + `price` float NOT NULL, + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`spawn_code`) +); + +CREATE TABLE IF NOT EXISTS `dealership_dispveh` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dealership` varchar(100) NOT NULL, + `vehicle` varchar(100) NOT NULL, + `color` varchar(100) NOT NULL, + `coords` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + KEY `fk_dispveh_dealership` (`dealership`), + KEY `fk_dispveh_vehicle` (`vehicle`) +); + +CREATE TABLE IF NOT EXISTS `dealership_orders` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `vehicle` varchar(100) NOT NULL, + `dealership` varchar(100) NOT NULL, + `quantity` int(11) NOT NULL DEFAULT 0, + `cost` float NOT NULL DEFAULT 0, + `delivery_time` int(11) NOT NULL, + `order_created` datetime NOT NULL DEFAULT current_timestamp(), + `fulfilled` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `orders_vehicle_fk` (`vehicle`), + KEY `orders_dealership_fk` (`dealership`) +); + +CREATE TABLE IF NOT EXISTS `dealership_sales` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dealership` varchar(255) NOT NULL, + `vehicle` varchar(100) NOT NULL, + `plate` varchar(255) NOT NULL, + `player` varchar(255) NOT NULL, + `seller` varchar(255), + `purchase_type` varchar(50) NOT NULL, + `paid` float NOT NULL DEFAULT 0, + `owed` float NOT NULL DEFAULT 0, + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `fk_sales_vehicle` (`vehicle`), + KEY `fk_sales_dealership` (`dealership`), + KEY `fk_sales_player` (`player`), + KEY `fk_sales_plate` (`plate`) +); + +CREATE TABLE IF NOT EXISTS `dealership_stock` ( + `dealership` varchar(100) NOT NULL, + `vehicle` varchar(100) NOT NULL, + `stock` int(11) NOT NULL, + `price` float NOT NULL DEFAULT 0, + PRIMARY KEY (`dealership`, `vehicle`), + KEY `vehicle_fk` (`vehicle`) +); + +CREATE TABLE IF NOT EXISTS `dealership_employees` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `identifier` varchar(255) NOT NULL, + `dealership` varchar(255) NOT NULL, + `role` varchar(100) NOT NULL, + `joined` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `fk_employees_dealership` (`dealership`) +); \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/install/run-qb.sql b/resources/[carscripts]/jg-dealerships/install/run-qb.sql new file mode 100644 index 000000000..baa214928 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/install/run-qb.sql @@ -0,0 +1,85 @@ +ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `financed` tinyint(1) NOT NULL DEFAULT 0; +ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `finance_data` longtext DEFAULT NULL; + +CREATE TABLE IF NOT EXISTS `dealership_data` ( + `name` varchar(100) NOT NULL, + `label` varchar(255) NOT NULL, + `balance` float NOT NULL DEFAULT 0, + `owner_id` varchar(255) DEFAULT NULL, + `owner_name` varchar(255) DEFAULT NULL, + `employee_commission` int(11) DEFAULT '10', + PRIMARY KEY (`name`) +); + +CREATE TABLE IF NOT EXISTS `dealership_vehicles` ( + `spawn_code` varchar(100) NOT NULL, + `brand` varchar(255) DEFAULT NULL, + `model` varchar(255) DEFAULT NULL, + `hashkey` varchar(100) DEFAULT NULL, + `category` varchar(100) NOT NULL, + `price` float NOT NULL, + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`spawn_code`) +); + +CREATE TABLE IF NOT EXISTS `dealership_dispveh` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dealership` varchar(100) NOT NULL, + `vehicle` varchar(100) NOT NULL, + `color` varchar(100) NOT NULL, + `coords` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + KEY `fk_dispveh_dealership` (`dealership`), + KEY `fk_dispveh_vehicle` (`vehicle`) +); + +CREATE TABLE IF NOT EXISTS `dealership_orders` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `vehicle` varchar(100) NOT NULL, + `dealership` varchar(100) NOT NULL, + `quantity` int(11) NOT NULL DEFAULT 0, + `cost` float NOT NULL DEFAULT 0, + `delivery_time` int(11) NOT NULL, + `order_created` datetime NOT NULL DEFAULT current_timestamp(), + `fulfilled` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `orders_vehicle_fk` (`vehicle`), + KEY `orders_dealership_fk` (`dealership`) +); + +CREATE TABLE IF NOT EXISTS `dealership_sales` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dealership` varchar(255) NOT NULL, + `vehicle` varchar(100) NOT NULL, + `plate` varchar(255) NOT NULL, + `player` varchar(255) NOT NULL, + `seller` varchar(255), + `purchase_type` varchar(50) NOT NULL, + `paid` float NOT NULL DEFAULT 0, + `owed` float NOT NULL DEFAULT 0, + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `fk_sales_vehicle` (`vehicle`), + KEY `fk_sales_dealership` (`dealership`), + KEY `fk_sales_player` (`player`), + KEY `fk_sales_plate` (`plate`) +); + +CREATE TABLE IF NOT EXISTS `dealership_stock` ( + `dealership` varchar(100) NOT NULL, + `vehicle` varchar(100) NOT NULL, + `stock` int(11) NOT NULL, + `price` float NOT NULL DEFAULT 0, + PRIMARY KEY (`dealership`, `vehicle`), + KEY `vehicle_fk` (`vehicle`) +); + +CREATE TABLE IF NOT EXISTS `dealership_employees` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `identifier` varchar(255) NOT NULL, + `dealership` varchar(255) NOT NULL, + `role` varchar(100) NOT NULL, + `joined` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `fk_employees_dealership` (`dealership`) +); \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/locales/ar.lua b/resources/[carscripts]/jg-dealerships/locales/ar.lua new file mode 100644 index 000000000..c0d02807f --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/ar.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['ar'] = { + -- UI + vehicle = "مركبة", + vehicles = "مركبات", + dealership = "وكالة", + dealerships = "وكالات", + vehiclesCount = "مركبة/مركبات", + dealersCount = "وكيل/وكلاء", + accountBalance = "رصيد الحساب", + bank = "حساب بنكي", + cash = "نقد", + amount = "المبلغ", + societyFund = "صندوق المجتمع", + paymentSource = "مصدر الدفع", + purchase = "شراء", + personalPurchase = "شراء شخصي", + societyPurchase = "شراء للمجتمع", + purchaseType = "نوع الشراء", + deposit = "إيداع", + withdraw = "سحب", + all = "الكل", + yes = "نعم", + no = "لا", + add = "إضافة", + edit = "تعديل", + id = "معرف", + created = "تم الإنشاء", + type = "النوع", + name = "الاسم", + owner = "المالك", + bankBalance = "رصيد البنك", + status = "الحالة", + back = "رجوع", + previous = "السابق", + next = "التالي", + admin = "مسؤول", + vehiclesAdmin = "إدارة المركبات", + dealershipsAdmin = "إدارة الوكالات", + search = "بحث", + noDealershipsFound = "لم يتم العثور على وكالات", + noVehicles = "لم يتم العثور على مركبات", + page = "صفحة", + of = "من", + every = "كل", + show = "عرض", + active = "نشط", + activeFinance = "تمويل نشط", + failed = "فشل الدفع", + removed = "تمت الإزالة", + setOwner = "تعيين المالك", + manage = "إدارة", + deleteData = "حذف البيانات", + deleteVehicle = "حذف المركبة", + delete = "حذف", + deleteConfirmation = "هل أنت متأكد؟", + deleteConfirmationDanger = "هل أنت متأكد؟ هذا الإجراء لا يمكن التراجع عنه.", + setDealershipOwner = "تعيين مالك الوكالة", + overwriteDealerPrices = "تجاوز أسعار الوكالة", + nearbyPlayers = "اللاعبين القريبين", + noPlayersNearby = "لا يوجد لاعبين قريبين", + selectPlayer = "اختر لاعب", + required = "مطلوب", + forExample = "على سبيل المثال", + spawnCode = "رمز الاستدعاء", + brand = "العلامة التجارية", + model = "الموديل", + category = "الفئة", + price = "السعر", + import = "استيراد", + importing = "جارٍ الاستيراد", + importBehaviour = "سلوك الاستيراد", + importVehicles = "استيراد المركبات", + importFrom = "استيراد من", + dashboard = "لوحة القيادة", + displayVehicle = "عرض المركبة", + displayVehicles = "عرض المركبات", + orders = "الطلبات", + sales = "المبيعات", + vehiclesOnDisplay = "المركبات المعروضة", + employees = "الموظفين", + settings = "الإعدادات", + switchVehicle = "تبديل المركبة", + remove = "إزالة", + noDisplayVehicles = "لا توجد مركبات معروضة", + selectVehicle = "اختر مركبة", + colour = "اللون", + placeVehicle = "وضع المركبة", + orderVehicle = "طلب مركبة", + cancelOrder = "إلغاء الطلب", + delivery = "التسليم", + delivered = "تم التسليم", + noOrders = "لم يتم العثور على طلبات", + quantity = "الكمية", + totalCost = "التكلفة الإجمالية", + totalSales = "إجمالي المبيعات", + noSales = "لم يتم العثور على مبيعات", + paid = "مدفوع", + owed = "مستحق", + dealershipName = "اسم الوكالة", + save = "حفظ التغييرات", + cancel = "إلغاء", + notEnoughMoney = "لا يوجد ما يكفي من المال", + placeOrder = "تقديم الطلب", + purchaseCost = "تكلفة الشراء", + salePrice = "سعر البيع", + inStock = "متوفر في المخزون", + outOfStock = "غير متوفر في المخزون", + placeVehiclePrompt = "اضغط %{value} لوضع المركبة. يمكنك إجراء تعديلات دقيقة بعد ذلك!", + remaining = "المتبقي", + prePurchaseRepoWarning = "إذا لم تتمكن من متابعة دفعات التمويل، سيتم استعادة مركبتك.", + repossessionWarning = "فشلت دفعتك الأخيرة - سيتم استعادة مركبتك ما لم تقم بالدفع الآن.", + recurringPayment = "دفعة متكررة", + remainingBalance = "الرصيد المتبقي", + remainingPayments = "الدفعات المتبقية", + paymentTakenEvery = "يتم أخذ الدفع كل", + hours = "ساعات", + seconds = "ثواني", + nextPayment = "الدفعة التالية", + makePayment = "قم بالدفع", + vehicleRepossessed = "سيتم استعادة المركبة", + payInFull = "الدفع بالكامل", + earlyPaymentConfirmation = "هل أنت متأكد أنك تريد الدفع المبكر بمبلغ", + financedVehicles = "المركبات الممولة", + noFinancedVehicles = "ليس لديك مركبات بتمويل نشط", + financeBreakdown = "تفاصيل التمويل", + initialPayment = "الدفعة الأولى", + payments = "الدفعات", + length = "المدة", + interest = "الفائدة", + totalPayable = "الإجمالي المستحق", + leaveShowroom = "مغادرة صالة العرض", + handling = "المناولة", + topSpeed = "السرعة القصوى", + power = "القوة", + torque = "العزم", + brake = "الفرامل", + financing = "التمويل", + financingAvailable = "التمويل متاح", + paymentsOf = "دفعات من", + clear = "مسح", + testDrive = "تجربة قيادة", + allCategories = "جميع الفئات", + sortByName = "ترتيب حسب: الاسم", + sortByAvailability = "ترتيب حسب: التوفر", + sortByCheapest = "ترتيب حسب: الأرخص", + sortByMostExpensive = "ترتيب حسب: الأغلى", + sortByNewest = "ترتيب حسب: الأحدث", + purchaseVehicle = "شراء مركبة", + purchaseFor = "شراء لـ", + selectSociety = "اختر مجتمع", + financeOverPayments = "تمويل على %{value} دفعات", + payToday = "ادفع اليوم", + financeThen = "ثم", + seeFullBreakdown = "عرض التفاصيل الكاملة", + testDriveExit = "يمكنك الخروج من مركبتك في أي وقت لإنهاء تجربة القيادة.", + + -- NOTIFICATIONS + purchaseSuccess = "تهانينا على الشراء!", + depositSuccess = "تم الإيداع بنجاح", + withdrawSuccess = "تم السحب بنجاح", + errorNotEnoughMoney = "لا يوجد لديك ما يكفي من المال", + errorVehicleOutOfStock = "هذه المركبة غير متوفرة في المخزون", + errorCannotAffordVehicle = "لا يمكنك تحمل تكلفة هذه المركبة", + vehicleFinancePaymentMade = "تم دفع دفعة التمويل لمركبتك %{value}", + vehicleFinancePaidOff = "تهانينا، لقد دفعت بالكامل وتملك الآن مركبتك %{value}", + vehicleFinancePaymentFailed = "فشلت دفعة التمويل لمركبتك %{value}", + vehicleFinanceRepossessedSoon = "تحتاج إلى دفع لمركبتك %{value} أو سيتم استعادة مركبتك قريبًا", + vehicleFinanceRepossessed = "بسبب الفشل في الدفع، تم استعادة مركبتك برقم اللوحة %{value}", + dealershipNotEnoughFunds = "الوكالة لا تملك ما يكفي من الأموال", + dealershipVehiclesOrdered = "تم طلب المركبات بنجاح", + dealershipOrderCancelled = "تم إلغاء الطلب بنجاح", + errorVehicleWithSpawnCodeExists = "مركبة بهذا الرمز موجودة بالفعل", + errorExitVehicle = "تحتاج إلى الخروج من مركبتك أولاً", + + -- NEW v1.1 + purchaseRequest = "طلب شراء", + sendRequest = "إرسال الطلب", + dealer = "وكيل", + financed = "ممول", + signHere = "وقع هنا", + signFirstError = "يرجى التوقيع أولاً", + denyRequest = "رفض الطلب", + playerTooManyFinancedVehicles = "اللاعب لديه الكثير من المركبات الممولة", + employeePermissionsError = "ليس لديك الصلاحيات اللازمة للموظف", + managerRole = "مدير", + supervisorRole = "مشرف", + salesRole = "مبيعات", + ownerRole = "مالك", + employmentRequest = "طلب توظيف", + accept = "قبول", + jobOfferDescription = "تم عرض وظيفة لك في وكالة \"%{value}\". هل ترغب في القبول؟", + pending = "قيد الانتظار", + employeeHiredMsg = "تم قبول طلب التوظيف في الوكالة!", + employeeRejectedMsg = "تم رفض طلب التوظيف في الوكالة", + sellVehicle = "بيع مركبة", + vehicleTerms = "شروط المركبة", + financePayments = "دفعات التمويل", + commission = "العمولة", + role = "الدور", + firedNotification = "تم فصلك من وكالة \"%{value}\"", + dealershipTooFarAway = "أنت لست بالقرب من أي وكالات", + restoreDisplayVehicles = "استعادة صالة العرض", + customer = "عميل", + lessThanAMin = "أقل من دقيقة", + mins = "دقيقة/دقائق", + notInVehicle = "أنت لست جالسًا في مركبة", + notYourVehicleError = "هذه المركبة لا تخصك", + vehicleFinancedError = "لا يمكنك بيع هذه المركبة لأنها تحتوي على دفعات تمويل متبقية", + dealershipDoesntSellVehicle = "هذه الوكالة لا تستطيع شراء هذه المركبة", + dealershipWantsYourVehicle = "تهانينا! ترغب هذه الوكالة في شراء مركبتك.", + purchasePrice = "السعر المعروض: ", + + spawnCodeInvalid = "رمز الاستدعاء غير صالح", + salesRep = "ممثل مبيعات", + directSaleAccepted = "تم قبول طلب البيع المباشر! تم دفع عمولتك.", + directSaleRejected = "تم رفض طلب البيع المباشر" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/cn.lua b/resources/[carscripts]/jg-dealerships/locales/cn.lua new file mode 100644 index 000000000..dda0a11a6 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/cn.lua @@ -0,0 +1,220 @@ +Locales = Locales or {} + +Locales['cn'] = { + -- 界面 + vehicle = "车辆", + vehicles = "车辆", + dealership = "汽车销售商", + dealerships = "汽车销售商", + vehiclesCount = "辆车", + dealersCount = "个销售商", + accountBalance = "账户余额", + bank = "银行账户", + cash = "现金", + amount = "金额", + societyFund = "社团资金", + paymentSource = "支付来源", + purchase = "购买", + personalPurchase = "个人购买", + societyPurchase = "社团购买", + purchaseType = "购买类型", + deposit = "存款", + withdraw = "取款", + all = "全部", + yes = "是", + no = "否", + add = "添加", + edit = "编辑", + id = "ID", + created = "创建时间", + type = "类型", + name = "名称", + owner = "拥有者", + bankBalance = "银行余额", + status = "状态", + back = "返回", + previous = "上一步", + next = "下一步", + admin = "管理员", + vehiclesAdmin = "车辆管理员", + dealershipsAdmin = "销售商管理员", + search = "搜索", + noDealershipsFound = "未找到销售商", + noVehicles = "未找到车辆", + page = "页", + of = "共", + every = "每", + show = "显示", + active = "启用", + activeFinance = "启用融资", + failed = "支付失败", + removed = "已移除", + setOwner = "设置拥有者", + manage = "管理", + deleteData = "删除数据", + deleteVehicle = "删除车辆", + delete = "删除", + deleteConfirmation = "确定删除?", + deleteConfirmationDanger = "确定删除?此操作不可逆。", + setDealershipOwner = "设置销售商拥有者", + overwriteDealerPrices = "覆盖销售商价格", + nearbyPlayers = "附近玩家", + noPlayersNearby = "附近没有玩家", + selectPlayer = "选择玩家", + required = "必填", + forExample = "例如", + spawnCode = "生成代码", + brand = "品牌", + model = "型号", + category = "类别", + price = "价格", + import = "导入", + importing = "正在导入", + importBehaviour = "导入行为", + importVehicles = "导入车辆", + importFrom = "从...导入", + dashboard = "仪表盘", + displayVehicle = "展示车辆", + displayVehicles = "展示车辆", + orders = "订单", + sales = "销售", + vehiclesOnDisplay = "展厅展示车辆", + employees = "员工", + settings = "设置", + switchVehicle = "切换车辆", + remove = "移除", + noDisplayVehicles = "没有展示车辆", + selectVehicle = "选择车辆", + colour = "颜色", + placeVehicle = "放置车辆", + orderVehicle = "订购车辆", + cancelOrder = "取消订单", + delivery = "交付", + delivered = "已交付", + noOrders = "没有找到订单", + quantity = "数量", + totalCost = "总成本", + totalSales = "总销售额", + noSales = "没有找到销售记录", + paid = "已支付", + owed = "欠款", + dealershipName = "销售商名称", + save = "保存更改", + cancel = "取消", + notEnoughMoney = "余额不足", + placeOrder = "下订单", + purchaseCost = "购买成本", + salePrice = "销售价格", + inStock = "库存", + outOfStock = "售罄", + placeVehiclePrompt = "按 %{value} 放置车辆。您可以之后做更细致的调整!", + remaining = "剩余", + prePurchaseRepoWarning = "如果您未能按时付款,您的车辆将被回收。", + repossessionWarning = "您的最后一次付款失败——如果不立即付款,您的车辆将被回收。", + recurringPayment = "定期付款", + remainingBalance = "剩余余额", + remainingPayments = "剩余付款次数", + paymentTakenEvery = "每", + hours = "小时", + seconds = "秒", + nextPayment = "下一次付款", + makePayment = "付款", + vehicleRepossessed = "车辆将被回收", + payInFull = "一次性付款", + earlyPaymentConfirmation = "确定要提前支付", + financedVehicles = "融资车辆", + noFinancedVehicles = "您没有融资车辆", + financeBreakdown = "融资明细", + initialPayment = "首付", + payments = "付款次数", + length = "期限", + interest = "利率", + totalPayable = "总需支付", + leaveShowroom = "离开展厅", + handling = "操控", + topSpeed = "最高速度", + power = "功率", + torque = "扭矩", + brake = "刹车", + financing = "融资", + financingAvailable = "提供融资", + paymentsOf = "每期付款", + clear = "清除", + testDrive = "试驾", + allCategories = "所有类别", + sortByName = "按名称排序", + sortByAvailability = "按可用性排序", + sortByCheapest = "按最便宜排序", + sortByMostExpensive = "按最贵排序", + sortByNewest = "按最新排序", + purchaseVehicle = "购买车辆", + purchaseFor = "为...购买", + selectSociety = "选择社团", + financeOverPayments = "分期付款 %{value} 次", + payToday = "今天付款", + financeThen = "然后", + seeFullBreakdown = "查看完整明细", + testDriveExit = "您可以随时离开车辆以结束试驾。", + + -- 通知 + purchaseSuccess = "恭喜您购买成功!", + depositSuccess = "存款成功", + withdrawSuccess = "取款成功", + errorNotEnoughMoney = "余额不足", + errorVehicleOutOfStock = "该车辆已售罄", + errorCannotAffordVehicle = "您无法购买此车辆", + vehicleFinancePaymentMade = "您的车辆 %{value} 已成功付款", + vehicleFinancePaidOff = "恭喜您已付清并拥有车辆 %{value}", + vehicleFinancePaymentFailed = "您的车辆 %{value} 付款失败", + vehicleFinanceRepossessedSoon = "您需要支付车辆 %{value} 欠款,否则将被回收", + vehicleFinanceRepossessed = "由于未支付款项,您的车辆(车牌 %{value})已被回收", + dealershipNotEnoughFunds = "销售商资金不足", + dealershipVehiclesOrdered = "车辆已成功订购", + dealershipOrderCancelled = "订单已成功取消", + errorVehicleWithSpawnCodeExists = "该生成代码对应的车辆已存在", + errorExitVehicle = "您需要先下车", + errorPlacementCollision = "您不能在这里放置车辆", + + -- 新增 v1.1 + purchaseRequest = "购买请求", + sendRequest = "发送请求", + dealer = "销售商", + financed = "已融资", + signHere = "请在此签名", + signFirstError = "请先签名", + denyRequest = "拒绝请求", + playerTooManyFinancedVehicles = "玩家拥有的融资车辆过多", + employeePermissionsError = "您没有足够的员工权限", + managerRole = "经理", + supervisorRole = "主管", + salesRole = "销售", + ownerRole = "拥有者", + employmentRequest = "招聘申请", + accept = "接受", + jobOfferDescription = "您已获得来自 \"%{value}\" 销售商的工作邀请。您愿意接受吗?", + pending = "待定", + employeeHiredMsg = "销售商已接受您的聘用请求!", + employeeRejectedMsg = "销售商已拒绝您的聘用请求", + sellVehicle = "出售车辆", + vehicleTerms = "车辆条款", + financePayments = "融资付款", + commission = "佣金", + role = "角色", + firedNotification = "您已被 \"%{value}\" 销售商解雇", + dealershipTooFarAway = "您距离任何销售商太远", + restoreDisplayVehicles = "恢复展厅", + customer = "客户", + lessThanAMin = "少于一分钟", + mins = "分钟", + notInVehicle = "您没有坐在车辆中", + notYourVehicleError = "这不是您的车辆", + vehicleFinancedError = "此车辆有未付清的融资款项,不能出售", + dealershipDoesntSellVehicle = "此销售商不出售该车辆", + dealershipWantsYourVehicle = "恭喜!此销售商愿意购买您的车辆。", + purchasePrice = "报价:", + + spawnCodeInvalid = "生成代码无效", + salesRep = "销售代表", + directSaleAccepted = "直接销售请求已接受!您的佣金已支付。", + directSaleRejected = "直接销售请求已拒绝" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/cs.lua b/resources/[carscripts]/jg-dealerships/locales/cs.lua new file mode 100644 index 000000000..a7bac1282 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/cs.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['cs'] = { + -- UI + vehicle = "Vozidlo", + vehicles = "Vozidla", + dealership = "Prodejna vozidel", + dealerships = "Prodejny vozidel", + vehiclesCount = "vozidlo(a)", + dealersCount = "Obchodníci", + accountBalance = "Zůstatek na účtu", + bank = "Bankovní účet", + cash = "Hotovost", + amount = "Množství", + societyFund = "Společenský fond", + paymentSource = "Způsob platby", + purchase = "Nákup", + personalPurchase = "Osobní nákup", + societyPurchase = "Nákup společnosti", + purchaseType = "Typ nákupu", + deposit = "Vklad", + withdraw = "Vybrat", + all = "Vše", + yes = "Ano", + no = "Ne", + add = "Přidat", + edit = "Upravit", + id = "ID", + created = "Vytvořil", + type = "Typ", + name = "Jméno", + owner = "Vlastník", + bankBalance = "Bankovní zůstatek", + status = "Stav", + back = "Zpět", + previous = "Předchozí", + next = "Další", + admin = "Admin", + vehiclesAdmin = "Správce vozidel", + dealershipsAdmin = "Správce prodejen", + search = "Hledání", + noDealershipsFound = "Nebyli nalezeni žádní prodejci", + noVehicles = "Nebyla nalezena žádná vozidla", + page = "Stránka", + of = "z", + every = "každý", + show = "Ukázat", + active = "Aktivní", + activeFinance = "Aktivní finance", + failed = "Platba se nezdařila", + removed = "Odstraněný", + setOwner = "Nastavit vlastníka", + manage = "Spravovat", + deleteData = "Smazání dat", + deleteVehicle = "Smazat vozidlo", + delete = "Vymazat", + deleteConfirmation = "Opravdu?", + deleteConfirmationDanger = "Opravdu? Tato akce je nevratná.", + setDealershipOwner = "Nastavit majitele prodejny", + overwriteDealerPrices = "Přepsání prodejních cen", + nearbyPlayers = "Hráči v okolí", + noPlayersNearby = "V okolí nejsou žádní hráči", + selectPlayer = "Vyberte hráče", + required = "Požadovaný", + forExample = "Například", + spawnCode = "Kód pro spawn", + brand = "Značka", + model = "Model", + category = "Kategorie", + price = "Cena", + import = "Dovoz", + importing = "Importování", + importBehaviour = "Chování při importu", + importVehicles = "Importovaná vozidla", + importFrom = "Dovoz z", + dashboard = "Hlavní", + displayVehicle = "Zobrazit vozidlo", + displayVehicles = "Zobrazit vozidla", + orders = "Objednávky", + sales = "Prodej", + vehiclesOnDisplay = "Vystavená vozidla", + employees = "Zaměstnanci", + settings = "Nastavení", + switchVehicle = "Přepnout vozidlo", + remove = "Odstranit", + noDisplayVehicles = "Žádná vystavená vozidla", + selectVehicle = "Vybrat vozidlo", + colour = "Barva", + placeVehicle = "Místo vozidla", + orderVehicle = "Objednat vozidlo", + cancelOrder = "Zrušit objednávku", + delivery = "Doručení", + delivered = "Doručil", + noOrders = "Nebyly nalezeny žádné objednávky", + quantity = "Množství", + totalCost = "Celkové náklady", + totalSales = "Celkové tržby", + noSales = "Nebyl nalezen žádný prodej", + paid = "Zaplaceno", + owed = "Dlužil", + dealershipName = "Název prodejny", + save = "Uložit změny", + cancel = "Zrušit", + notEnoughMoney = "Nedostatek peněz", + placeOrder = "Zadat objednávku", + purchaseCost = "Nákupní náklady", + salePrice = "Prodejní cena", + inStock = "Na skladě", + outOfStock = "Není skladem", + placeVehiclePrompt = "Stiskněte %{value} umístit vozidlo. Poté můžete provést menší úpravy!", + remaining = "Zbývající", + prePurchaseRepoWarning = "Pokud nebudete schopni splácet své finanční závazky, bude vám vozidlo zabaveno.", + repossessionWarning = "Vaše poslední platba se nezdařila - vaše vozidlo bude zabaveno, pokud nyní neprovedete platbu.", + recurringPayment = "Opakovaná platba", + remainingBalance = "Zbývající zůstatek", + remainingPayments = "Zbývající platby", + paymentTakenEvery = "Platba se provádí každé", + hours = "hodiny", + seconds = "sekundy", + nextPayment = "Příští platba", + makePayment = "Proveďte platbu", + vehicleRepossessed = "Vozidlo bude zabaveno", + payInFull = "Zaplaťte v plné výši", + earlyPaymentConfirmation = "Opravdu chcete provést předčasnou platbu", + financedVehicles = "Financovaná vozidla", + noFinancedVehicles = "Nemáte žádná vozidla s aktivním financováním", + financeBreakdown = "Finanční členění", + initialPayment = "Počáteční platba", + payments = "Platby", + length = "Délka", + interest = "Úrok", + totalPayable = "Celkem splatné", + leaveShowroom = "Opustit showroom", + handling = "Handling", + topSpeed = "Maximální rychlost", + power = "Síla", + torque = "Točivý moment", + brake = "Brzda", + financing = "Financování", + financingAvailable = "Dostupné financování", + paymentsOf = "platby", + clear = "Vymazat", + testDrive = "Testovací jízda", + allCategories = "Všechny kategorie", + sortByName = "Seřadit podle: Název", + sortByAvailability = "Seřadit podle: Dostupnost", + sortByCheapest = "Seřadit podle: Nejlevnější", + sortByMostExpensive = "Seřadit podle: Nejdražší", + sortByNewest = "Seřadit podle: Nejnovější", + purchaseVehicle = "Koupit vozidlo", + purchaseFor = "Nákup za", + selectSociety = "Vyberte společnost", + financeOverPayments = "Zbývající částka k zaplacení je %{value}", + payToday = "Zaplaťte ještě dnes", + financeThen = "Potom", + seeFullBreakdown = "Zobrazit úplný rozpis", + testDriveExit = "Zkušební jízdu můžete kdykoli opustit a zkušební jízdu ukončit.", + + -- NOTIFICATIONS + purchaseSuccess = "Gratulujeme k nákupu!", + depositSuccess = "Vklad byl úspěšný", + withdrawSuccess = "Úspěšný výběr", + errorNotEnoughMoney = "Nemáte dost peněz", + errorVehicleOutOfStock = "Toto vozidlo není skladem", + errorCannotAffordVehicle = "Toto vozidlo si nemůžete dovolit", + vehicleFinancePaymentMade = "Finanční platba za vaše vozidlo %{value}", + vehicleFinancePaidOff = "Gratulujeme, vyplatili jste se a nyní vlastníte své vozidlo %{value}", + vehicleFinancePaymentFailed = "Finanční platba za vaše vozidlo se nezdařila %{value}", + vehicleFinanceRepossessedSoon = "Musíte provést platbu za své vozidlo %{value} nebo bude vaše vozidlo brzy zabaveno", + vehicleFinanceRepossessed = "Z důvodu nezaplacení bylo vaše vozidlo zabaveno i s poznávací značkou %{value}", + dealershipNotEnoughFunds = "Prodejce nemá dostatek finančních prostředků", + dealershipVehiclesOrdered = "Vozidlo (vozidla) bylo úspěšně objednáno", + dealershipOrderCancelled = "Objednávka byla úspěšně zrušena", + errorVehicleWithSpawnCodeExists = "Vozidlo s tímto spawn kódem již existuje", + errorExitVehicle = "Nejprve musíte opustit své vozidlo", + + -- NEW v1.1 + purchaseRequest = "Žádost o nákup", + sendRequest = "Odeslat žádost", + dealer = "Prodejce", + financed = "Financováno", + signHere = "Podepište se zde", + signFirstError = "Nejprve se podepište", + denyRequest = "Odmítnutí žádosti", + playerTooManyFinancedVehicles = "Hráč má příliš mnoho financovaných vozidel", + employeePermissionsError = "Nemáte potřebná oprávnění zaměstnance", + managerRole = "Manažer", + supervisorRole = "Supervizor", + salesRole = "Prodej", + ownerRole = "Majitel", + employmentRequest = "Žádost o zaměstnání", + accept = "Přijmout", + jobOfferDescription = "Byla vám nabídnuta práce u prodejce \"%{value}\". Chtěli byste ji přijmout?", + pending = "Čeká se na", + employeeHiredMsg = "Žádost o pronájem dealerství byla přijata!", + employeeRejectedMsg = "Žádost o pronájem dealerství byla zamítnuta", + sellVehicle = "Prodej vozidla", + vehicleTerms = "Podmínky pro vozidla", + financePayments = "Finanční platby", + commission = "Komise", + role = "Úloha", + firedNotification = "Byl jste propuštěn z \"%{value}\" dealerství", + dealershipTooFarAway = "Nejste v blízkosti žádného prodejce", + restoreDisplayVehicles = "Předváděcí místnost Restore", + customer = "Zákazník", + lessThanAMin = "Méně než minuta", + mins = "minuty", + notInVehicle = "Nesedíte ve vozidle", + notYourVehicleError = "Toto vozidlo vám nepatří", + vehicleFinancedError = "Toto vozidlo nemůžete prodat, protože na něm zůstávají finanční splátky", + dealershipDoesntSellVehicle = "Tento prodejce nemůže koupit toto vozidlo", + dealershipWantsYourVehicle = "Gratulujeme! Tento prodejce by rád zakoupil vaše vozidlo.", + purchasePrice = "Nabízená cena: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/de.lua b/resources/[carscripts]/jg-dealerships/locales/de.lua new file mode 100644 index 000000000..4f156a680 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/de.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['de'] = { + -- UI + vehicle = "Fahrzeug", + vehicles = "Fahrzeuge", + dealership = "Autohaus", + dealerships = "Autohäuser", + vehiclesCount = "Fahrzeuge Anzahl", + dealersCount = "Händler", + accountBalance = "Kontostand", + bank = "Bankkonto", + cash = "Bargeld", + amount = "Betrag", + societyFund = "Gewerbegeld", + paymentSource = "Zahlungsquelle", + purchase = "Kaufen", + personalPurchase = "Privater Kauf", + societyPurchase = "Gewerblicher Kauf", + purchaseType = "Kaufart", + deposit = "Einzahlen", + withdraw = "Auszahlen", + all = "Alle", + yes = "Ja", + no = "Nein", + add = "Hinzufügen", + edit = "Bearbeiten", + id = "ID", + created = "Erstellt", + type = "Typ", + name = "Name", + owner = "Besitzer", + bankBalance = "Kontostand", + status = "Status", + back = "Zurück", + previous = "Vorherige", + next = "Nächste", + admin = "Verwaltung", + vehiclesAdmin = "Fahrzeug Verwaltung", + dealershipsAdmin = "Autohaus Verwaltung", + search = "Suchen", + noDealershipsFound = "Keine Autohäuser gefunden", + noVehicles = "Keine Fahrzeuge", + page = "Seite", + of = "von", + every = "alle", + show = "Anzeigen", + active = "Aktiv", + activeFinance = "Aktive Finanzierung", + failed = "Fehlgeschlagen", + removed = "Entfernt", + setOwner = "Besitzer festlegen", + manage = "Verwalten", + deleteData = "Daten löschen", + deleteVehicle = "Fahrzeug entfernen", + delete = "Entfernen", + deleteConfirmation = "Sind Sie sich wirklich sicher?", + deleteConfirmationDanger = "Bestätigen, dies kann nicht rückgängig gemacht werden.", + setDealershipOwner = "Besitzer festlegen", + overwriteDealerPrices = "Händlerpreise Überschreiben", + nearbyPlayers = "Spieler in der Nähe", + noPlayersNearby = "Kein Spieler in der Nähe", + selectPlayer = "Einen Spieler auswählen", + required = "Erforderlich", + forExample = "Zum Beispiel", + spawnCode = "Spawnname", + brand = "Marke", + model = "Model", + category = "Kategorie", + price = "Preis", + import = "Importieren", + importing = "Importiere...", + importBehaviour = "Fahrzeug Daten", + importVehicles = "Fahrzeuge importieren", + importFrom = "Importieren von", + dashboard = "Dashboard", + displayVehicle = "Fahrzeug anzeigen", + displayVehicles = "Ausstellung", + orders = "Bestellungen", + sales = "Verkäufe", + vehiclesOnDisplay = "Fahrzeuge in der Ausstellung", + employees = "Mitarbeiter", + settings = "Einstellungen", + switchVehicle = "Fahrzeug wechseln", + remove = "Entfernen", + noDisplayVehicles = "Keine Ausstellungsfahrzeuge", + selectVehicle = "Fahrzeug auswählen", + colour = "Farbe", + placeVehicle = "Fahrzeug platzieren", + orderVehicle = "Fahrzeug/e bestellen", + cancelOrder = "Bestellung stornieren", + delivery = "Lieferung", + delivered = "Ausgeliefert", + noOrders = "keine Bestellungen", + quantity = "Menge", + totalCost = "Gesamtkosten", + totalSales = "Verkäufe", + noSales = "Keine Verkäufe", + paid = "Bezahlt", + owed = "Schulden", + dealershipName = "Händler Name", + save = "Speichern", + cancel = "Abbrechen", + notEnoughMoney = "Nicht genügend Geld", + placeOrder = "Bestellen", + purchaseCost = "Einkaufspreis", + salePrice = "Verkaufspreis", + inStock = "auf Lager", + outOfStock = "Ausverkauft", + placeVehiclePrompt = "Drücke %{value}, um das Fahrzeug zu platzieren. Du kannst später noch feinere Einstellungen vornehmen!", + remaining = "Verbleibend", + prePurchaseRepoWarning = "Wenn du deinen Zahlungen nicht nachkommst, wird dein Fahrzeug wieder entzogen.", + repossessionWarning = "Deine letzte Zahlung ist fehlgeschlagen: Wenn du nicht sofort eine Zahlung leistest, wird dein Fahrzeug beschlagnahmt.", + recurringPayment = "Wiederkehrende Zahlungen", + remainingBalance = "Verbleibender Betrag", + remainingPayments = "Erledigte Zahlungen", + paymentTakenEvery = "Die Zahlung wird fällig alle", + hours = "Stunden", + seconds = "Sekunden", + nextPayment = "Nächste Zahlung", + makePayment = "Vorrauszahlung leisten", + vehicleRepossessed = "Fahrzeug beschlagnahmt", + payInFull = "Vollständig bezahlen", + earlyPaymentConfirmation = "Möchtest du wirklich eine Vorrauszahlung in folgender Höhe tätigen", + financedVehicles = "Finanzierte Fahrzeuge", + noFinancedVehicles = "Du hast keine Fahrzeuge mit aktiver Finanzierung", + financeBreakdown = "Einzelheiten zur Finanzierung", + initialPayment = "Anzahlung", + payments = "Raten", + length = "Dauer", + interest = "Zinsen", + totalPayable = "Zu zahlende Summe", + leaveShowroom = "Verlassen", + handling = "Handling", + topSpeed = "vMax", + power = "Leistung", + torque = "Drehmoment", + brake = "Bremsen", + financing = "Finanzierung", + financingAvailable = "Finanzierung verfügbar", + paymentsOf = "Raten a", + clear = "Löschen", + testDrive = "Probefahrt", + allCategories = "Alle Kategorien", + sortByName = "Nach Namen sortieren", + sortByAvailability = "Nach Verfügbarkeit sortieren", + sortByCheapest = "Günstigste zuerst", + sortByMostExpensive = "Teuerste zuerst", + sortByNewest = "Neueste zuerst", + purchaseVehicle = "Fahrzeug kaufen", + purchaseFor = "Kauf durch", + selectSociety = "Wähle ein Unternehmen aus", + financeOverPayments = "Finanzierung durch %{value} Raten", + payToday = "Heute fälliger Betrag", + financeThen = "Danach", + seeFullBreakdown = "Einzelheiten zur Finanzierung", + testDriveExit = "Du kannst dein Fahrzeug jederzeit verlassen, um die Probefahrt zu beenden...", + + -- NOTIFICATIONS + purchaseSuccess = "Herzlichen Glückwunsch zu deinem Kauf!", + depositSuccess = "Der Betrag wurde erfolgreich einbezahlt!", + withdrawSuccess = "Der Betrag wurde erfolgreich ausbezahlt!", + errorNotEnoughMoney = "Du hast nicht genügend Geld!", + errorVehicleOutOfStock = "Dieses Fahrzeug ist leider nicht auf Lager!", + errorCannotAffordVehicle = "Du kannst dir dieses Fahrzeug nicht leisten!", + vehicleFinancePaymentMade = "Vorrauszahlung geleistet für das Fahrzeug mit folgendem Kennzeichen: %{value}", + vehicleFinancePaidOff = "Herzlichen Glückwunsch, Du hast vollständig bezahlt und besitzen nun das Fahrzeug mit dem Kennzeichen: %{value}", + vehicleFinancePaymentFailed = "Fehlgeschlagene Finanzierungszahlung für dein Fahrzeug mit dem Kennzeichen: %{value}", + vehicleFinanceRepossessedSoon = "Du musst eine Zahlung für dein Fahrzeug %{value} leisten oder dein Fahrzeug wird bald wieder eingezogen.", + vehicleFinanceRepossessed = "Wegen Nichtzahlung wurde dein Fahrzeug mit dem Kennzeichen %{value} wieder eingezogen.", + dealershipNotEnoughFunds = "Der Händler hat nicht genug Geld.", + dealershipVehiclesOrdered = "Die Fahrzeuge wurden erfolgreich bestellt!", + dealershipOrderCancelled = "Auftrag erfolgreich storniert", + errorVehicleWithSpawnCodeExists = "Ein Fahrzeug mit diesem Nummernsch existiert bereits!", + errorExitVehicle = "Du musst zuerst aus deinem Fahrzeug aussteigen.", + + -- NEW v1.1 + purchaseRequest = "Anfrage zum Kauf", + sendRequest = "Anfrage senden", + dealer = "Händler", + financed = "Finanziert", + signHere = "Hier unterschreiben", + signFirstError = "Bitte erst unterschreiben", + denyRequest = "Antrag ablehnen", + playerTooManyFinancedVehicles = "Spieler hat zu viele finanzierte Fahrzeuge", + employeePermissionsError = "Sie haben nicht die erforderlichen Mitarbeiterrechte", + managerRole = "Leiter", + supervisorRole = "Datenschutzbeauftragter", + salesRole = "Vertrieb", + ownerRole = "Eigentümer", + employmentRequest = "Antrag auf Beschäftigung", + accept = "Akzeptieren", + jobOfferDescription = "Ihnen wurde eine Stelle im Autohaus \"%{value}\" angeboten. Möchten Sie annehmen?", + pending = "Anhängig", + employeeHiredMsg = "Der Einstellungsantrag des Händlers wurde angenommen!", + employeeRejectedMsg = "Antrag auf Einstellung eines Händlers wurde abgelehn", + sellVehicle = "Fahrzeug verkaufen", + vehicleTerms = "Fahrzeugbedingungen", + financePayments = "Finanzierung Zahlungen", + commission = "Kommission", + role = "Rolle", + firedNotification = "Sie wurden vom Händler \"%{value}\" entlassen", + dealershipTooFarAway = "Sie sind nicht in der Nähe eines Autohauses", + restoreDisplayVehicles = "Ausstellungsraum restaurieren", + customer = "Kunde", + lessThanAMin = "Weniger als eine Minute", + mins = "min(s)", + notInVehicle = "Sie befinden sich nicht in einem Fahrzeug", + notYourVehicleError = "Dieses Fahrzeug gehört Ihnen nicht", + vehicleFinancedError = "Sie können dieses Fahrzeug nicht verkaufen, weil es noch Finanzierungsraten hat", + dealershipDoesntSellVehicle = "Dieses Autohaus kann dieses Fahrzeug nicht kaufen", + dealershipWantsYourVehicle = "Herzlichen Glückwunsch! Dieses Autohaus möchte Ihr Fahrzeug kaufen.", + purchasePrice = "Angebotener Preis: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/en.lua b/resources/[carscripts]/jg-dealerships/locales/en.lua new file mode 100644 index 000000000..5317d6ca6 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/en.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['en'] = { + -- UI + vehicle = "Vehicle", + vehicles = "Vehicles", + dealership = "Dealership", + dealerships = "Dealerships", + vehiclesCount = "vehicle(s)", + dealersCount = "dealer(s)", + accountBalance = "Account Balance", + bank = "Bank Account", + cash = "Cash", + amount = "Amount", + societyFund = "Society Fund", + paymentSource = "Payment Source", + purchase = "Purchase", + personalPurchase = "Personal Purchase", + societyPurchase = "Society Purchase", + purchaseType = "Purchase Type", + deposit = "Deposit", + withdraw = "Withdraw", + all = "All", + yes = "Yes", + no = "No", + add = "Add", + edit = "Edit", + id = "ID", + created = "Created", + type = "Type", + name = "Name", + owner = "Owner", + bankBalance = "Bank Balance", + status = "Status", + back = "Back", + previous = "Previous", + next = "Next", + admin = "Admin", + vehiclesAdmin = "Vehicles Admin", + dealershipsAdmin = "Dealerships Admin", + search = "Search", + noDealershipsFound = "No dealerships found", + noVehicles = "No vehicles found", + page = "Page", + of = "of", + every = "every", + show = "Show", + active = "Active", + activeFinance = "Active Finance", + failed = "Payment Failed", + removed = "Removed", + setOwner = "Set Owner", + manage = "Manage", + deleteData = "Delete Data", + deleteVehicle = "Delete Vehicle", + delete = "Delete", + deleteConfirmation = "Are you sure?", + deleteConfirmationDanger = "Are you sure? This action is irreversable.", + setDealershipOwner = "Set Dealership Owner", + overwriteDealerPrices = "Overwrite dealership prices", + nearbyPlayers = "Nearby players", + noPlayersNearby = "No players nearby", + selectPlayer = "Select player", + required = "Required", + forExample = "For example", + spawnCode = "Spawn Code", + brand = "Brand", + model = "Model", + category = "Category", + price = "Price", + import = "Import", + importing = "Importing", + importBehaviour = "Import Behaviour", + importVehicles = "Import vehicles", + importFrom = "Import from", + dashboard = "Dashboard", + displayVehicle = "Display Vehicle", + displayVehicles = "Display Vehicles", + orders = "Orders", + sales = "Sales", + vehiclesOnDisplay = "Vehicles on display", + employees = "Employees", + settings = "Settings", + switchVehicle = "Switch Vehicle", + remove = "Remove", + noDisplayVehicles = "No display vehicles", + selectVehicle = "Select vehicle", + colour = "Colour", + placeVehicle = "Place Vehicle", + orderVehicle = "Order vehicle", + cancelOrder = "Cancel Order", + delivery = "Delivery", + delivered = "Delivered", + noOrders = "No orders found", + quantity = "Quantity", + totalCost = "Total cost", + totalSales = "Total sales", + noSales = "No sales found", + paid = "Paid", + owed = "Owed", + dealershipName = "Dealership Name", + save = "Save Changes", + cancel = "Cancel", + notEnoughMoney = "Not enough money", + placeOrder = "Place Order", + purchaseCost = "Purchase Cost", + salePrice = "Sale Price", + inStock = "In stock", + outOfStock = "Out of stock", + placeVehiclePrompt = "Press %{value} to place vehicle. You can make finer adjustments afterwards!", + remaining = "Remaining", + prePurchaseRepoWarning = "If you can't keep up with your finance payments, your vehicle will be repossessed.", + repossessionWarning = "Your last payment failed - your vehicle will be repossessed unless you make a payment now.", + recurringPayment = "Recurring payment", + remainingBalance = "Remaining balance", + remainingPayments = "Remaining payments", + paymentTakenEvery = "Payment taken every", + hours = "hours", + seconds = "seconds", + nextPayment = "Next payment", + makePayment = "Make payment", + vehicleRepossessed = "Vehicle will be repossessed", + payInFull = "Pay in full", + earlyPaymentConfirmation = "Are you sure you want to make an early payment of", + financedVehicles = "Financed Vehicles", + noFinancedVehicles = "You have no vehicles with active finance", + financeBreakdown = "Finance Breakdown", + initialPayment = "Initial payment", + payments = "Payments", + length = "Length", + interest = "Interest", + totalPayable = "Total payable", + leaveShowroom = "Leave Showroom", + handling = "Handling", + topSpeed = "Top Speed", + power = "Power", + torque = "Torque", + brake = "Brake", + financing = "Financing", + financingAvailable = "Financing available", + paymentsOf = "payments of", + clear = "Clear", + testDrive = "Test Drive", + allCategories = "All Categories", + sortByName = "Sort by: Name", + sortByAvailability = "Sort by: Availability", + sortByCheapest = "Sort by: Cheapest", + sortByMostExpensive = "Sort by: Most Expensive", + sortByNewest = "Sort by: Newest", + purchaseVehicle = "Purchase Vehicle", + purchaseFor = "Purchase for", + selectSociety = "Select a society", + financeOverPayments = "Finance over %{value} payments", + payToday = "Pay today", + financeThen = "Then", + seeFullBreakdown = "See full breakdown", + testDriveExit = "You can exit your vehicle at any point to end the test drive.", + + -- NOTIFICATIONS + purchaseSuccess = "Congratulations on your purchase!", + depositSuccess = "Deposit successful", + withdrawSuccess = "Withdrawl successful", + errorNotEnoughMoney = "You don't have enough money", + errorVehicleOutOfStock = "This vehicle is out of stock", + errorCannotAffordVehicle = "You cannot afford this vehicle", + vehicleFinancePaymentMade = "Finance payment made for your vehicle %{value}", + vehicleFinancePaidOff = "Congratulations, you've paid off and now own your vehicle %{value}", + vehicleFinancePaymentFailed = "Finance payment failed for your vehicle %{value}", + vehicleFinanceRepossessedSoon = "You need to make a payment for your vehicle %{value} or your vehicle will be repossessed soon", + vehicleFinanceRepossessed = "Due to a failure to pay, your vehicle has been repossessed with the plate %{value}", + dealershipNotEnoughFunds = "Dealership doesn't have enough funds", + dealershipVehiclesOrdered = "Vehicle(s) have been successfully ordered", + dealershipOrderCancelled = "Order successfully cancelled", + errorVehicleWithSpawnCodeExists = "A vehicle with this spawn code already exists", + errorExitVehicle = "You need to exit your vehicle first", + + -- NEW v1.1 + purchaseRequest = "Purchase Request", + sendRequest = "Send Request", + dealer = "Dealer", + financed = "Financed", + signHere = "Sign here", + signFirstError = "Please sign first", + denyRequest = "Deny Request", + playerTooManyFinancedVehicles = "Player has too many financed vehicles", + employeePermissionsError = "You don't have the necessary employee permissions", + managerRole = "Manager", + supervisorRole = "Supervisor", + salesRole = "Sales", + ownerRole = "Owner", + employmentRequest = "Employment Request", + accept = "Accept", + jobOfferDescription = "You have been offered a job at the \"%{value}\" dealership. Would you like to accept?", + pending = "Pending", + employeeHiredMsg = "Dealership hire request was accepted!", + employeeRejectedMsg = "Dealership hire request was rejected", + sellVehicle = "Sell Vehicle", + vehicleTerms = "Vehicle terms", + financePayments = "Finance Payments", + commission = "Commission", + role = "Role", + firedNotification = "You have been fired from the \"%{value}\" dealership", + dealershipTooFarAway = "You aren't near any dealerships", + restoreDisplayVehicles = "Restore Showroom", + customer = "Customer", + lessThanAMin = "Less than a minute", + mins = "min(s)", + notInVehicle = "You are not sat in a vehicle", + notYourVehicleError = "This vehicle does not belong to you", + vehicleFinancedError = "You cannot sell this vehicle because it has finance payments remaining", + dealershipDoesntSellVehicle = "This dealership can't purchase this vehicle", + dealershipWantsYourVehicle = "Congratulations! This dealership would like to purchase your vehicle.", + purchasePrice = "Offered price: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/es.lua b/resources/[carscripts]/jg-dealerships/locales/es.lua new file mode 100644 index 000000000..b1a985669 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/es.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['es'] = { + -- UI + vehicle = "Vehículo", + vehicles = "Vehículos", + dealership = "Concesionario", + dealerships = "Concesionarios", + vehiclesCount = "Vehículo(s)", + dealersCount = "Concesionario(s)", + accountBalance = "Balance de Cuenta", + bank = "Cuenta de Banco", + cash = "Dinero", + amount = "Cantidad", --Before= Monto + societyFund = "Fondos de Sociedad", + paymentSource = "Tipo de Pago", + purchase = "Comprar", + personalPurchase = "Compra Personal", + societyPurchase = "Compra Sociedad", + purchaseType = "Tipo de Compra", + deposit = "Depositar", + withdraw = "Retirar", + all = "Todos", + yes = "Si", + no = "No", + add = "Añadir", + edit = "Editar", + id = "ID", + created = "Creado", + type = "Tipo", + name = "Nombre", + owner = "Dueño", + bankBalance = "Saldo Bancario", --Before = Balance Banco + status = "Estado", --Before = Esatus + back = "Regresar", + previous = "Atrás", + next = "Siguiente", + admin = "Administrar", --Before = Administar // But if that means Administrator then should be "Administrador" + vehiclesAdmin = "Administrar Vehículos", + dealershipsAdmin = "Administrar Concesionarios", + search = "Buscar", + noDealershipsFound = "No se encontraron concesionarios", + noVehicles = "No se encontraron vehículos", + page = "Página", + of = "de", + every = "cada", + show = "Mostrar", --Before = Mostar + active = "Activo", + activeFinance = "Financiaciones Activas", --Before = Finanzas Activas + failed = "Pago Fallido", + removed = "Removido", + setOwner = "Establecer Propietario", --Before = Poner Dueño + manage = "Gestionar", + deleteData = "Borrar Datos", + deleteVehicle = "Borrar Vehículo", + delete = "Borrar", + deleteConfirmation = "¿Estás seguro?", + deleteConfirmationDanger = "¿Estás seguro? Esta acción es irreversible.", + setDealershipOwner = "Establecer Propietario", + overwriteDealerPrices = "Sobrescribir Precios", + nearbyPlayers = "Jugadores Cercanos", + noPlayersNearby = "NO hay jugadores cercanos", + selectPlayer = "Seleccionar Jugador", + required = "Requerido", + forExample = "Por Ejemplo", + spawnCode = "Código", + brand = "Marca", + model = "Modelo", + category = "Categoría", + price = "Precio", + import = "Importar", + importing = "Importando", + importBehaviour = "Comportamiento de Importación", + importVehicles = "Importar Vehículos", + importFrom = "Importar de", + dashboard = "Panel", + displayVehicle = "Poner Vehículo en Exposición", --Before = Poner vehiculo en display + displayVehicles = "Vehículos en Exposición", --Before = Vehiculos en display + orders = "Pedidos", --Before = Ordenes + sales = "Ventas", + vehiclesOnDisplay = "Vehículos en Exposición", --Before = Vehiculos en display + employees = "Empleados", + settings = "Ajustes", + switchVehicle = "Cambiar Vehículo", + remove = "Remover", + noDisplayVehicles = "No Mostrar Vehículos", --Before = No display vehicles + selectVehicle = "Seleccionar Vehículo", --Before = Select vehicle + colour = "Color", + placeVehicle = "Poner Vehículo", + orderVehicle = "Ordenar Vehículos", + cancelOrder = "Cancelar Pedido", --Before = Cancelar Orden + delivery = "Entregando", + delivered = "Entregados", + noOrders = "Pedidos no Encontrados", --Before = Ordenes no encontradas + quantity = "Cantidad", + totalCost = "Precio Total", --Before = Costo Total + totalSales = "Ventas totales", + noSales = "No hay ventas encontradas", --Before = No ventas encontradas + paid = "Pagado", + owed = "Comprado", + dealershipName = "Nombre Concesionario", + save = "Guardar Cambios", + cancel = "Cancelar", + notEnoughMoney = "Dinero Insuficiente", + placeOrder = "Realizar Pedido", + purchaseCost = "Precio de Compra", --Before = Costo de la compra + salePrice = "Precio de Venta", + inStock = "En Stock", + outOfStock = "Agotado", + placeVehiclePrompt = "Presiona %{value} para colocar el vehículo. ¡Puedes hacer ajustes después!", + remaining = "Restante", + prePurchaseRepoWarning = "Si no puedes mantenerte al día con los pagos de financiaminento, tu vehículo será embargado.", + repossessionWarning = "Su último pago falló: tu vehículo será embargado a menos que realice un pago ahora.", + recurringPayment = "Pago Recurrente", + remainingBalance = "Balance Restante", + remainingPayments = "Pagos Restantes", + paymentTakenEvery = "Pago Tomado Cada", + hours = "horas", + seconds = "segundos", + nextPayment = "Siguiente Pago", + makePayment = "Hacer Pago", + vehicleRepossessed = "El vehículo será embargado", + payInFull = "Pagar Completo", + earlyPaymentConfirmation = "¿Estás segur@ de que quieres hacer un pago anticipado de", + financedVehicles = "Vehículos Financiados", + noFinancedVehicles = "No tienes vehículos con financiación activa", + financeBreakdown = "Detalles de Financiación", --Before= Detalles Financiamineto + initialPayment = "Pago Inicial", + payments = "Pagos", + length = "Tiempo", + interest = "Interés", + totalPayable = "Total a Pagar", + leaveShowroom = "Salir de la Sala de Exposición", --Before= Salir del Showroom + handling = "Manejo", + topSpeed = "Velocidad Máxima", + power = "Poder", + torque = "Torque", + brake = "Freno", + financing = "Financiación", --Before= Financiamiento + financingAvailable = "Financiación Disponible", --Before = Financiamiento disponible + paymentsOf = "pagos de", + clear = "Limpiar", + testDrive = "Prueba de Manejo", + allCategories = "Todas las Categorías", + sortByName = "Ordenar por: Nombre", + sortByAvailability = "Ordenar por: Disponibilidad", + sortByCheapest = "Ordenar por: Más Barato", + sortByMostExpensive = "Ordenar por: Más Caro", + sortByNewest = "Ordenar por: Más reciente", + purchaseVehicle = "Comprar Vehículo", + purchaseFor = "Compra Por", + selectSociety = "Selecciona una Sociedad", + financeOverPayments = "Financiar por %{value} pagos", + payToday = "Paga Hoy", + financeThen = "Después", + seeFullBreakdown = "Ver Desglose Completo", + testDriveExit = "Puedes salir del vehículo en cualquier momento para finalizar la prueba de manejo.", + + -- NOTIFICATIONS + purchaseSuccess = "¡Felicitaciones Por Su Compra!", + depositSuccess = "Depósito Exitoso", + withdrawSuccess = "Retiro Exitoso", + errorNotEnoughMoney = "No tienes suficiente dinero", + errorVehicleOutOfStock = "Este vehículo está agotado", + errorCannotAffordVehicle = "No puedes comprar este vehículo", + vehicleFinancePaymentMade = "Financia el pago realizado por tu vehículo %{value}", + vehicleFinancePaidOff = "Felicitaciones, ha pagado y ahora es dueño de tu vehículo. %{value}", + vehicleFinancePaymentFailed = "Pago de financiación fallido para tu vehículo %{value}", + vehicleFinanceRepossessedSoon = "Necesitas hacer un pago por tu vehículo %{value} o tu vehículo será embargado pronto", + vehicleFinanceRepossessed = "Por falta de pago, tu vehículo ha sido embargado con la placa %{value}", + dealershipNotEnoughFunds = "El concesionario no tiene fondos suficientes", + dealershipVehiclesOrdered = "Vehículos pedidos con éxito", + dealershipOrderCancelled = "Pedido Cancelado", + errorVehicleWithSpawnCodeExists = "Ya existe un vehículo con este código de generación", + errorExitVehicle = "Primero debes salir del vehículo.", + + -- NEW v1.1 + purchaseRequest = "Solicitud de Compra", + sendRequest = "Enviar Solicitud", + dealer = "Distribuidor", + financed = "Financiado", + signHere = "Firme aquí", + signFirstError = "Firma Primero", + denyRequest = "Denegar Solicitud", + playerTooManyFinancedVehicles = "El jugador tiene demasiados vehículos financiados actualmente", + employeePermissionsError = "No tiene los permisos necesarios", + managerRole = "Director", + supervisorRole = "Supervisor", + salesRole = "Supervisora", + ownerRole = "Propietario", + employmentRequest = "Solicitud de Empleo", + accept = "Aceptar", + jobOfferDescription = "Le han ofrecido un puesto de trabajo en el concesionario \"%{value}\". ¿Te gustaría aceptar?", + pending = "Pendiente", + employeeHiredMsg = "La solicitud de alquiler del concesionario ha sido aceptada!", + employeeRejectedMsg = "La solicitud de alquiler del concesionario ha sido rechazada", + sellVehicle = "Vender Vehículo", + vehicleTerms = "Condiciones del Vehículo", + financePayments = "Pagos Financieros", + commission = "Comisión", + role = "Rol", + firedNotification = "Has sido despedido de \"%{value}\".", + dealershipTooFarAway = "No estás cerca de ningún concesionario", + restoreDisplayVehicles = "Restaurar Sala de Exposición", + customer = "Cliente", + lessThanAMin = "Menos de un Minuto", + mins = "minuto(s)", + notInVehicle = "No estás sentado en un vehículo", + notYourVehicleError = "Este vehículo no te pertenece", + vehicleFinancedError = "No puedes vender este vehículo porque tiene pagos de financiación pendientes", + dealershipDoesntSellVehicle = "Este concesionario no puede comprar este vehículo", + dealershipWantsYourVehicle = "Enhorabuena. Este concesionario desea comprar tu vehículo.", + purchasePrice = "Precio Ofertado: ", + + spawnCodeInvalid = "Código de generación no válido", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/fr.lua b/resources/[carscripts]/jg-dealerships/locales/fr.lua new file mode 100644 index 000000000..c1a111f96 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/fr.lua @@ -0,0 +1,221 @@ + +Locales = Locales or {} + +Locales['fr'] = { + -- UI + vehicle = "Véhicule", + vehicles = "Véhicules", + dealership = "Concessionnaire", + dealerships = "Concessionnaires", + vehiclesCount = "véhicule(s)", + dealersCount = "Concessionnaire(s)", + accountBalance = "Solde du compte", + bank = "Compte bancaire", + cash = "Argent liquide", + amount = "Montant", + societyFund = "Fonds de la société", + paymentSource = "Source du paiement", + purchase = "Achat", + personalPurchase = "Achat personnel", + societyPurchase = "Achat de la société", + purchaseType = "Type d'achat", + deposit = "Dépôt", + withdraw = "Retirer", + all = "Tout", + yes = "Oui", + no = "Non", + add = "Ajouter", + edit = "Éditer", + id = "ID", + created = "Crée", + type = "Type", + name = "Nom", + owner = "Propriétaire", + bankBalance = "Solde bancaire", + status = "Statut", + back = "Retour", + previous = "Précédent", + next = "Suivant", + admin = "Administrateur", + vehiclesAdmin = "Administration des véhicules", + dealershipsAdmin = "Administration des concessionnaires", + search = "Recherche", + noDealershipsFound = "Aucun concessionnaire trouvé", + noVehicles = "Aucun véhicule trouvé", + page = "Page", + of = "de", + every = "tous", + show = "Afficher", + active = "Actif", + activeFinance = "Financement actif", + failed = "Échec du paiement", + removed = "Supprimé", + setOwner = "Choisir Propriétaire", + manage = "Gérer", + deleteData = "Supprimer les données", + deleteVehicle = "Supprimer un véhicule", + delete = "Supprimer", + deleteConfirmation = "Êtes-vous sûr?", + deleteConfirmationDanger = "En êtes-vous sûr? Cette action est irréversible.", + setDealershipOwner = "Choisir Propriétaire du Concessionnaire", + overwriteDealerPrices = "Remplacer les prix des concessionnaires", + nearbyPlayers = "Joueurs à proximité", + noPlayersNearby = "Pas de joueurs à proximité", + selectPlayer = "Sélectionner un joueur", + required = "Exigée", + forExample = "Par exemple", + spawnCode = "Spawn Code", + brand = "Marque", + model = "Modèle", + category = "Catégorie", + price = "Prix", + import = "Importation", + importing = "Importation", + importBehaviour = "Comportement d'importation", + importVehicles = "Véhicules importés", + importFrom = "Importer de", + dashboard = "Tableau de bord", + displayVehicle = "Véhicule d'affichage", + displayVehicles = "Véhicules d'exposition", + orders = "Commandes", + sales = "Vente", + vehiclesOnDisplay = "Véhicules exposés", + employees = "Salariés", + settings = "Paramètres", + switchVehicle = "Changement de véhicule", + remove = "Retirer", + noDisplayVehicles = "Pas de véhicules d'exposition", + selectVehicle = "Sélectionner un véhicule", + colour = "Couleur", + placeVehicle = "Placer le véhicule", + orderVehicle = "Commander un véhicule", + cancelOrder = "Annuler la commande", + delivery = "Livraison", + delivered = "Livré", + noOrders = "Aucune commande trouvée", + quantity = "Quantité", + totalCost = "Coût total", + totalSales = "Ventes totales", + noSales = "Aucune vente trouvée", + paid = "Payé", + owed = "dû", + dealershipName = "Nom du concessionnaire", + save = "Enregistrer les modifications", + cancel = "Annuler", + notEnoughMoney = "Pas assez d'argent", + placeOrder = "Passer une commande", + purchaseCost = "Prix D'achat", + salePrice = "Prix de vente", + inStock = "En stock", + outOfStock = "Rupture de stock", + placeVehiclePrompt = "Appuyer sur %{value} pour placer le véhicule. Vous pourrez faire des réglages plus fins par la suite!", + remaining = "Restant", + prePurchaseRepoWarning = "Si vous ne pouvez pas suivre vos paiements financiers, votre véhicule sera repris.", + repossessionWarning = "Votre dernier paiement a échoué : votre véhicule sera repris à moins que vous n'effectuiez un paiement maintenant!", + recurringPayment = "Paiement récurrent", + remainingBalance = "Solde restant", + remainingPayments = "Paiements restants", + paymentTakenEvery = "Paiement effectué chaque", + hours = "heures", + seconds = "secondes", + nextPayment = "Prochain paiement", + makePayment = "Effectuer le paiement", + vehicleRepossessed = "Le véhicule sera repris", + payInFull = "Payer intégralement", + earlyPaymentConfirmation = "Etes-vous sûr de vouloir effectuer un paiement anticipé de", + financedVehicles = "Véhicules financés", + noFinancedVehicles = "Vous n'avez aucun véhicule avec un financement actif", + financeBreakdown = "Répartition des finances", + initialPayment = "Paiement initialt", + payments = "Paiements", + length = "Longueur", + interest = "Intérêt", + totalPayable = "Total à payer", + leaveShowroom = "Quitter la salle d'exposition", + handling = "Conduite", + topSpeed = "Vitesse maximale", + power = "Puissance", + torque = "Torque", + brake = "Freinage", + financing = "Financement", + financingAvailable = "Financement disponible", + paymentsOf = "paiements de", + clear = "Nettoyer", + testDrive = "Essai routier", + allCategories = "Toutes les catégories", + sortByName = "Trier par : Nom", + sortByAvailability = "Trier par : Disponibilité", + sortByCheapest = "Trier par : le moins cher", + sortByMostExpensive = "Trier par : Les plus chers", + sortByNewest = "Trier par : Les plus récents", + purchaseVehicle = "Acheter un véhicule", + purchaseFor = "Acheter pour", + selectSociety = "Sélectionnez une société", + financeOverPayments = "Financement sur %{value} paiements", + payToday = "Payez aujourd'hui", + financeThen = "Alors", + seeFullBreakdown = "Voir la répartition complète", + testDriveExit = "Vous pouvez sortir de votre véhicule à tout moment pour terminer l’essai routier.", + + -- NOTIFICATIONS + purchaseSuccess = "Félicitations pour votre achat!", + depositSuccess = "Dépôt réussi", + withdrawSuccess = "Retrait réussi", + errorNotEnoughMoney = "Vous n'avez pas assez d'argent", + errorVehicleOutOfStock = "Ce véhicule est en rupture de stock", + errorCannotAffordVehicle = "Vous ne pouvez pas vous permettre ce véhicule", + vehicleFinancePaymentMade = "Paiement financier effectué pour votre véhicule %{value}", + vehicleFinancePaidOff = "Félicitations, vous avez payé et êtes désormais propriétaire de votre véhicule %{value}", + vehicleFinancePaymentFailed = "Échec du paiement du financement pour votre véhicule %{value}", + vehicleFinanceRepossessedSoon = "Vous devez effectuer un paiement pour votre véhicule %{value}, sinon votre véhicule sera bientôt repris", + vehicleFinanceRepossessed = "Suite à un défaut de paiement, votre véhicule a été repris avec la plaque %{value}", + dealershipNotEnoughFunds = "Le concessionnaire n'a pas assez de fonds", + dealershipVehiclesOrdered = "Le(s) véhicule(s) ont été commandés avec succès", + dealershipOrderCancelled = "Commande annulée avec succès", + errorVehicleWithSpawnCodeExists = "Un véhicule avec ce spawnCode existe déjà", + errorExitVehicle = "Vous devez d'abord sortir de votre véhicule", + + -- NEW v1.1 + purchaseRequest = "Demande d'achat", + sendRequest = "Envoyer la demande", + dealer = "Vendeur", + financed = "Financé", + signHere = "Signez ici", + signFirstError = "Veuillez d'abord signer", + denyRequest = "Refuser la demande", + playerTooManyFinancedVehicles = "Le joueur a trop de véhicules financés", + employeePermissionsError = "Vous ne disposez pas des autorisations d'employé nécessaires", + managerRole = "Directeur", + supervisorRole = "Superviseur", + salesRole = "Ventes", + ownerRole = "Propriétaire", + employmentRequest = "Offre d'emploi", + accept = "Accepter", + jobOfferDescription = "On vous a proposé un emploi chez le concessionnaire \"%{value}\". Souhaitez-vous accepter ?", + pending = "En attente", + employeeHiredMsg = "L'offre d'emploi du concessionnaire a été acceptée !", + employeeRejectedMsg = "La demande d'embauche d'un concessionnaire a été rejetée", + sellVehicle = "Vendre un véhicule", + vehicleTerms = "Conditions relatives aux véhicules", + financePayments = "Paiements financiers", + commission = "Commission", + role = "Rôle", + firedNotification = "Vous avez été licencié de la concession \"%{value}\"", + dealershipTooFarAway = "Vous n'êtes à proximité d'aucun concessionnaire", + restoreDisplayVehicles = "Restaurer la salle d'exposition", + customer = "Client", + lessThanAMin = "Moins d'une minute", + mins = "minute(s)", + notInVehicle = "Vous n'êtes pas assis dans un véhicule", + notYourVehicleError = "Ce véhicule ne vous appartient pas", + vehicleFinancedError = "Vous ne pouvez pas vendre ce véhicule car il lui reste des paiements financiers.", + dealershipDoesntSellVehicle = "Ce concessionnaire ne peut pas acheter ce véhicule", + dealershipWantsYourVehicle = "Félicitations! Ce concessionnaire souhaite acheter votre véhicule.", + purchasePrice = "Prix ​​proposé :", + + spawnCodeInvalid = "SpawnCode invalide", + salesRep = "Représentant des ventes", + directSaleAccepted = "Demande de vente directe acceptée ! Votre commission a été payée.", + directSaleRejected = "Demande de vente directe rejetée" +} +-- Translated by @Diamond_h4 diff --git a/resources/[carscripts]/jg-dealerships/locales/hu.lua b/resources/[carscripts]/jg-dealerships/locales/hu.lua new file mode 100644 index 000000000..61d790239 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/hu.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['hu'] = { + -- UI + vehicle = "Jármü", + vehicles = "Jármüvek", + dealership = "Kereskedés", + dealerships = "Kereskedések", + vehiclesCount = "jármü(vek)", + dealersCount = "kereskedés(ek)", + accountBalance = "Számla egyenleg", + bank = "Bank egyenleg", + cash = "Készpénz", + amount = "Összeg", + societyFund = "Céges kassza", + paymentSource = "Fizetésimód", + purchase = "Vásárlás", + personalPurchase = "Vásárlás", + societyPurchase = "Céges vásárlás", + purchaseType = "Vásárlási mód", + deposit = "Befizetés", + withdraw = "Kifizetés", + all = "Mind", + yes = "Igen", + no = "Nem", + add = "Hozzáadás", + edit = "Módositás", + id = "ID", + created = "Létrehozva", + type = "Tipus", + name = "Név", + owner = "Tulajdonos", + bankBalance = "Banki egyenleg", + status = "Státusz", + back = "Vissza", + previous = "Elözö", + next = "Következö", + admin = "Admin", + vehiclesAdmin = "Jármü adminisztráció", + dealershipsAdmin = "Kereskedés adminisztráció", + search = "Keresés", + noDealershipsFound = "Kereskedés nem található", + noVehicles = "Jármü nem található", + page = "Oldal", + of = "of", + every = "minden", + show = "Show", + active = "Aktiv", + activeFinance = "Akti részletfizetés", + failed = "Sikertelen fizetés", + removed = "Eltávolitva", + setOwner = "Tulaj beállitása", + manage = "Management", + deleteData = "Adat törlése", + deleteVehicle = "Jármü törlése", + delete = "Törlés", + deleteConfirmation = "Biztos vagy benne?", + deleteConfirmationDanger = "Biztos vagy benne? Ez a müvelet nem visszavonható.", + setDealershipOwner = "Kereskedés tulajdonos beállitása", + overwriteDealerPrices = "Kereskedési árak megváltoztatása", + nearbyPlayers = "Játékosok a közeledben", + noPlayersNearby = "Nincs játékos a közeledben", + selectPlayer = "Játékos kiválasztása", + required = "Szükséges", + forExample = "Például", + spawnCode = "Lehivókód", + brand = "Márka", + model = "Modell", + category = "Kategória", + price = "Ár", + import = "Import", + importing = "Importálás", + importBehaviour = "Import fajtája", + importVehicles = "Jármü import", + importFrom = "Importálva innen:", + dashboard = "Kezelöfelület", + displayVehicle = "Jármü bemutatása", + displayVehicles = "Jármüvek bemutatása", + orders = "Rendelések", + sales = "Eladások", + vehiclesOnDisplay = "Bemutatott jármüvek", + employees = "Alkalmazottak", + settings = "Beállitások", + switchVehicle = "Jármü váltás", + remove = "Elvesz", + noDisplayVehicles = "Nincsenek bemutató jármüvek", + selectVehicle = "Jármü választás", + colour = "Szin", + placeVehicle = "Jármü elhelyezése", + orderVehicle = "Jármü rendelése", + cancelOrder = "Rendelés visszavonása", + delivery = "Szállitás", + delivered = "Kiszállitva", + noOrders = "Nincs rendelés", + quantity = "Mennyiség", + totalCost = "Teljes költség", + totalSales = "Összes eladás", + noSales = "Nincsenek eladások", + paid = "Fizetve", + owed = "Tartozott", + dealershipName = "Kereskedés neve", + save = "Változtatások mentése", + cancel = "Mégse", + notEnoughMoney = "Nincs elég pénzed", + placeOrder = "Rendelés leadása", + purchaseCost = "Költség", + salePrice = "Eladási ár", + inStock = "Készleten", + outOfStock = "Nincs készleten", + placeVehiclePrompt = "Nyomj %{value} gombot a jármü elhelyezéshez. Késöbb tudsz módosítani!", + remaining = "Maradt", + prePurchaseRepoWarning = "Ha nem törleszted a részletfizetést a jármü autómatikusan visszavételre kerül.", + repossessionWarning = "Nem tudtad fedezni az utolsó részletet, fizess most vagy a jármü visszavételre kerül.", + recurringPayment = "Részletfizetés", + remainingBalance = "Hátralévö összeg", + remainingPayments = "Hátralévö részlet", + paymentTakenEvery = "A részlet minden", + hours = "óra", + seconds = "másodperc", + nextPayment = "Következö részlet", + makePayment = "Részlet kifizetése", + vehicleRepossessed = "A jármü visszavételre kerül", + payInFull = "Kifizetés egyben", + earlyPaymentConfirmation = "Biztosan elöbb kifizeted a részletét", + financedVehicles = "Lizingelt jármüvek", + noFinancedVehicles = "Nincs jármüved aktiv részletfizetéssel", + financeBreakdown = "Lizing megszakitása", + initialPayment = "Elsö részlet", + payments = "Kifizetések", + length = "Futamidö", + interest = "Érdeklödés", + totalPayable = "Teljes összeg", + leaveShowroom = "Bemutató elhagyása", + handling = "Kezelhetöség", + topSpeed = "Végsebesség", + power = "Löerö", + torque = "Nyomaték", + brake = "Fékerö", + financing = "Részletfizetés", + financingAvailable = "Részletfizetés elérhetö", + paymentsOf = "költsége", + clear = "Töröl", + testDrive = "Teszt vezetés", + allCategories = "Összes kategória", + sortByName = "Rendezés: Név", + sortByAvailability = "Rendezés: Elérhetö", + sortByCheapest = "Rendezés: Legolcsóbb", + sortByMostExpensive = "Rendezés: Legdrágább", + sortByNewest = "Rendezés: Legújabb", + purchaseVehicle = "Jármü megvásárlása", + purchaseFor = "Vásárlás", + selectSociety = "Válassz ki egy céget", + financeOverPayments = "Vásárlás %{value} részletben", + payToday = "Most fizetek", + financeThen = "Késöbb", + seeFullBreakdown = "Teljes lebontás megtekintése", + testDriveExit = "Bármikor kiszállhatsz tesztvezetés közben.", + + -- NOTIFICATIONS + purchaseSuccess = "Gratulálunk a vásárlásodhoz!", + depositSuccess = "Sikeres befizetés", + withdrawSuccess = "Sikeres kifizetés", + errorNotEnoughMoney = "Nincs elég pénzed", + errorVehicleOutOfStock = "Nincs készleten a jármü", + errorCannotAffordVehicle = "Nincs elég pénzed erre a jármüre", + vehicleFinancePaymentMade = "Részletfizetés választva a jármüre %{value}", + vehicleFinancePaidOff = "Gratulálunk! A %{value} minden részlete kilett fizetve!", + vehicleFinancePaymentFailed = "Sikertelen részlet beszedés %{value}", + vehicleFinanceRepossessedSoon = "Fizesd a %{value} részletét vagy vissza lesz véve a tulajdonodból!", + vehicleFinanceRepossessed = "Mivel nem fizetted a részletit igy vissza lett véve a %{value} rendszámú jármüved", + dealershipNotEnoughFunds = "Nincs elég pénze a kereskedésnek", + dealershipVehiclesOrdered = "Sikeresen megrendelted a jármüvet(jármüveket)", + dealershipOrderCancelled = "Sikeres rendelés visszavonás", + errorVehicleWithSpawnCodeExists = "Már van egy autó kinálatban ezzel a lehívó kóddal", + errorExitVehicle = "Szállj ki a jármüvedböl elöször", + + -- NEW v1.1 + purchaseRequest = "Vásárlási kérelem", + sendRequest = "Kérelem küldése", + dealer = "Kereskedő", + financed = "Finanszírozott", + signHere = "Itt írja alá", + signFirstError = "Kérjük, először írja alá", + denyRequest = "Kérelem elutasítása", + playerTooManyFinancedVehicles = "A játékosnak túl sok finanszírozott járműve van", + employeePermissionsError = "Nem rendelkezik a szükséges munkavállalói jogosultságokkal", + managerRole = "Menedzser", + supervisorRole = "Felügyelő", + salesRole = "Értékesítés", + ownerRole = "Tulajdonos", + employmentRequest = "Foglalkoztatási kérelem", + accept = "Elfogadom", + jobOfferDescription = "Önnek állást ajánlottak a \"%{érték}\" márkakereskedésben. Szeretné elfogadni?", + pending = "Függőben", + employeeHiredMsg = "A márkakereskedő bérleti kérelmét elfogadták!", + employeeRejectedMsg = "A márkakereskedő bérleti kérelmét elutasították", + sellVehicle = "Eladni jármű", + vehicleTerms = "Járművekre vonatkozó feltételek", + financePayments = "Pénzügyi kifizetések", + commission = "Bizottság", + role = "Szerepvállalás", + firedNotification = "Önt kirúgták a \"%{value}\" kereskedésből.", + dealershipTooFarAway = "Nem vagy közel egyetlen kereskedőhöz sem", + restoreDisplayVehicles = "Restore bemutatóterem", + customer = "Ügyfél", + lessThanAMin = "Kevesebb, mint egy perc", + mins = "perc(ek)", + notInVehicle = "Ön nem ül egy járműben", + notYourVehicleError = "Ez a jármű nem az Ön tulajdona", + vehicleFinancedError = "Ezt a járművet nem tudja eladni, mert még finanszírozási törlesztőrészletei vannak.", + dealershipDoesntSellVehicle = "Ez a kereskedés nem tudja megvásárolni ezt a járművet", + dealershipWantsYourVehicle = "Gratulálunk! Ez a kereskedés szeretné megvásárolni az Ön járművét.", + purchasePrice = "Kínált ár: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/it.lua b/resources/[carscripts]/jg-dealerships/locales/it.lua new file mode 100644 index 000000000..303203e36 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/it.lua @@ -0,0 +1,220 @@ +Locales = Locales or {} + +Locales['it'] = { + -- UI + vehicle = "Veicolo", + vehicles = "Veicoli", + dealership = "Concessionario", + dealerships = "Concessionari", + vehiclesCount = "veicolo/i", + dealersCount = "concessionario/i", + accountBalance = "Bilancio Conto", + bank = "Conto Bancario", + cash = "Contanti", + amount = "Quantità", + societyFund = "Fondo Società", + paymentSource = "Fonte Pagamento", + purchase = "Compra", + personalPurchase = "Compra Personale", + societyPurchase = "Compra Società", + purchaseType = "Tipo Acquisto", + deposit = "Deposita", + withdraw = "Preleva", + all = "Tutti", + yes = "Si", + no = "No", + add = "Aggiungi", + edit = "Modifica", + id = "ID", + created = "Creato", + type = "Tipo", + name = "Nome", + owner = "Proprietario", + bankBalance = "Bilancio Banca", + status = "Status", + back = "Indietro", + previous = "Precedente", + next = "Prossimo", + admin = "Admin", + vehiclesAdmin = "Veicoli Admin", + dealershipsAdmin = "Concessionari Admin", + search = "Cerca", + noDealershipsFound = "Nessuna concessionaria trovata", + noVehicles = "Nessun veicolo trovato", + page = "Pagina", + of = "di", + every = "ogni", + show = "Mostra", + active = "Attiva", + activeFinance = "Attiva Rateizzazione", + failed = "Pagamento Fallito", + removed = "Rimossa", + setOwner = "Imposta Proprietario", + manage = "Gestisci", + deleteData = "Elimina Dati", + deleteVehicle = "Elimina Veicolo", + delete = "Elimina", + deleteConfirmation = "Sei sicuro?", + deleteConfirmationDanger = "Sei sicuro? Questa azione è irreversibile.", + setDealershipOwner = "Imposta Proprietario Concessionario", + overwriteDealerPrices = "Sovrascrivi prezzi concessionario", + nearbyPlayers = "Player vicini", + noPlayersNearby = "Nessun player vicino", + selectPlayer = "Seleziona player", + required = "Richiesto", + forExample = "Per esempio", + spawnCode = "Codice Spawn", + brand = "Marchio", + model = "Modello", + category = "Categoria", + price = "Prezzo", + import = "Importa", + importing = "Importando", + importBehaviour = "Tipo Importazione", + importVehicles = "Importa veicoli", + importFrom = "Importa da", + dashboard = "Dashboard", + displayVehicle = "Mostra Veicolo", + displayVehicles = "Mostra Veicoli", + orders = "Ordini", + sales = "Vendite", + vehiclesOnDisplay = "Veicoli in mostra", + employees = "Impiegati", + settings = "Impostazioni", + switchVehicle = "Cambia Veicolo", + remove = "Rimuovi", + noDisplayVehicles = "Nessun veicolo in mostra", + selectVehicle = "Seleziona veicolo", + colour = "Colore", + placeVehicle = "Posiziona Veicolo", + orderVehicle = "Ordina veicolo", + cancelOrder = "Annulla Ordine", + delivery = "Consegna", + delivered = "Consegnato", + noOrders = "Nessun ordine trovato", + quantity = "Quantità", + totalCost = "Costo totale", + totalSales = "Totale vendite", + noSales = "Nessuna vendita trovata", + paid = "Pagato", + owed = "Dovuto", + dealershipName = "Nome Concessionario", + save = "Salva Cambiamenti", + cancel = "Annulla", + notEnoughMoney = "Non hai abbastanza soldi", + placeOrder = "Piazza Ordine", + purchaseCost = "Costo Acquisto", + salePrice = "Costo Vendita", + inStock = "In stock", + outOfStock = "Fuori stock", + placeVehiclePrompt = "Premi %{value} per posizionare il veicolo. Successivamente puoi apportare modifiche più precise!", + remaining = "Rimanenti", + prePurchaseRepoWarning = "Se non riesci a far fronte alle rate del finanziamento, il tuo veicolo verrà pignorato.", + repossessionWarning = "L'ultimo pagamento è fallito - se non effettui un pagamento ora, il tuo veicolo verrà pignorato.", + recurringPayment = "Pagamento ricorrente", + remainingBalance = "Bilancio rimanente", + remainingPayments = "Pagamenti rimanenti", + paymentTakenEvery = "Pagamento preso ogni", + hours = "ore", + seconds = "secondi", + nextPayment = "Prossimo pagamento", + makePayment = "Effettua pagamento", + vehicleRepossessed = "Il veicolo verrà pignorato", + payInFull = "Paga per intero", + earlyPaymentConfirmation = "Sei sicuro di voler effettuare un pagamento anticipato di", + financedVehicles = "Veicoli Rateizzati", + noFinancedVehicles = "Non hai veicoli con rateizzazione attiva", + financeBreakdown = "Ripartizione Finanziaria", + initialPayment = "Pagamento iniziale", + payments = "Pagamenti", + length = "Rate", + interest = "Interessi", + totalPayable = "Prezzo Totale", + leaveShowroom = "Lascia Showroom", + handling = "Manovrabilità", + topSpeed = "Velocità Max", + power = "Potenza", + torque = "Coppia", + brake = "Freno", + financing = "Rateizzazione", + financingAvailable = "Rateizzazione disponibile", + paymentsOf = "pagamenti di", + clear = "Resetta", + testDrive = "Test Drive", + allCategories = "Tutte Categorie", + sortByName = "Ordina per: Nome", + sortByAvailability = "Ordina per: Disponibilità", + sortByCheapest = "Ordina per: Più Economica", + sortByMostExpensive = "Ordina per: Più Costosa", + sortByNewest = "Ordina per: Più Nuova", + purchaseVehicle = "Acquista Veicolo", + purchaseFor = "Acquista per", + selectSociety = "Seleziona una società", + financeOverPayments = "Rateizza in %{value} pagamenti", + payToday = "Paga oggi", + financeThen = "Poi", + seeFullBreakdown = "Vedi ripartizione completa", + testDriveExit = "Puoi uscire dal veicolo in qualsiasi momento per terminare il test drive.", + + -- NOTIFICATIONS + purchaseSuccess = "Congratulazioni per il tuo acquisto!", + depositSuccess = "Depositato con successo", + withdrawSuccess = "Prelevato con successo", + errorNotEnoughMoney = "Non hai abbastanza soldi", + errorVehicleOutOfStock = "Il veicolo non è in magazzino", + errorCannotAffordVehicle = "Non ti puoi permettere questo veicolo", + vehicleFinancePaymentMade = "Pagamento rata fatto per il tuo veicolo %{value}", + vehicleFinancePaidOff = "Congratulazioni, hai pagato e ora possiedi il tuo veicolo %{value}", + vehicleFinancePaymentFailed = "Pagamento rata fallito per il tuo veicolo %{value}", + vehicleFinanceRepossessedSoon = "Devi pagare la rata del veicolo %{value} o verrà presto pignorato", + vehicleFinanceRepossessed = "A causa del mancato pagamento, il tuo veicolo è stato pignorato con la targa %{value}", + dealershipNotEnoughFunds = "Concessionario non ha abbastanza fondi", + dealershipVehiclesOrdered = "Veicolo/i ordinato/i con successo", + dealershipOrderCancelled = "Ordine annullato con successo", + errorVehicleWithSpawnCodeExists = "Esiste già un veicolo con questo codice spawn", + errorExitVehicle = "Devi prima uscire dal veicolo", + errorPlacementCollision = "Non puoi piazzare il veicolo qui", + + -- NEW v1.1 + purchaseRequest = "Richiesta Acquisto", + sendRequest = "Invia Richiesta", + dealer = "Venditore", + financed = "Rateizzata", + signHere = "Firma qui", + signFirstError = "Prima firma", + denyRequest = "Rifiuta Richiesta", + playerTooManyFinancedVehicles = "Il giocatore ha troppi veicoli rateizzati", + employeePermissionsError = "Non hai i permessi impiegato necessari", + managerRole = "Manager", + supervisorRole = "Supervisore", + salesRole = "Vendite", + ownerRole = "Proprietario", + employmentRequest = "Richiesta di Impiego", + accept = "Accetta", + jobOfferDescription = "Ti è stato offerto un lavoro al Concessionario \"%{value}\". Vuoi accettarlo?", + pending = "In attesa", + employeeHiredMsg = "Richiesta di assunzione nel concessionario accettata!", + employeeRejectedMsg = "Richiesta di assunzione nel concessionario rifiutata", + sellVehicle = "Vendi Veicolo", + vehicleTerms = "Termini Veicolo", + financePayments = "Rateizza Pagamenti", + commission = "Commissione", + role = "Ruolo", + firedNotification = "Sei stato licenziato dal concessionario \"%{value}\"", + dealershipTooFarAway = "Non sei vicino a nessun concessionario", + restoreDisplayVehicles = "Ripristina Showroom", + customer = "Cliente", + lessThanAMin = "Meno di un minuto", + mins = "minuto/i", + notInVehicle = "Non sei seduto in un veicolo", + notYourVehicleError = "Questo veicolo non ti appartiene", + vehicleFinancedError = "Non puoi vendere questo veicolo perché ha rate in sospeso", + dealershipDoesntSellVehicle = "Questo concessionario non può acquistare questo veicolo", + dealershipWantsYourVehicle = "Congratulazioni! Questo concessionario vorrebbe acquistare il tuo veicolo.", + purchasePrice = "Prezzo offerto: ", + + spawnCodeInvalid = "Codice spawn non valido", + salesRep = "Resp. Vendite", + directSaleAccepted = "Richiesta di vendita diretta accettata! La tua commissione è stata pagata.", + directSaleRejected = "Richiesta di vendita diretta rifiutata!" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/ja.lua b/resources/[carscripts]/jg-dealerships/locales/ja.lua new file mode 100644 index 000000000..d987a48ba --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/ja.lua @@ -0,0 +1,217 @@ +Locales['ja'] = { + -- UI + vehicle = "車両", + vehicles = "車両", + dealership = "ディーラー", + dealerships = "ディーラー", + vehiclesCount = "台の車両", + dealersCount = "件のディーラー", + accountBalance = "口座残高", + bank = "銀行口座", + cash = "現金", + amount = "金額", + societyFund = "社会資金", + paymentSource = "支払元", + purchase = "購入", + personalPurchase = "個人購入", + societyPurchase = "社会購入", + purchaseType = "購入タイプ", + deposit = "入金", + withdraw = "出金", + all = "すべて", + yes = "はい", + no = "いいえ", + add = "追加", + edit = "編集", + id = "ID", + created = "作成日", + type = "タイプ", + name = "名前", + owner = "オーナー", + bankBalance = "銀行残高", + status = "ステータス", + back = "戻る", + previous = "前へ", + next = "次へ", + admin = "管理者", + vehiclesAdmin = "車両管理者", + dealershipsAdmin = "ディーラー管理者", + search = "検索", + noDealershipsFound = "ディーラーが見つかりません", + noVehicles = "車両が見つかりません", + page = "ページ", + of = "の", + every = "毎", + show = "表示", + active = "アクティブ", + activeFinance = "アクティブな支払い", + failed = "支払い失敗", + removed = "削除されました", + setOwner = "オーナー設定", + manage = "管理", + deleteData = "データ削除", + deleteVehicle = "車両削除", + delete = "削除", + deleteConfirmation = "本当に削除してもよろしいですか?", + deleteConfirmationDanger = "本当に削除してもよろしいですか? この操作は元に戻せません。", + setDealershipOwner = "ディーラーオーナー設定", + overwriteDealerPrices = "ディーラー価格の上書き", + nearbyPlayers = "近くのプレイヤー", + noPlayersNearby = "近くにプレイヤーがいません", + selectPlayer = "プレイヤーを選択", + required = "必須", + forExample = "例として", + spawnCode = "スポーンコード(座標)", + brand = "ブランド", + model = "モデル", + category = "カテゴリー", + price = "価格", + import = "インポート", + importing = "インポート中", + importBehaviour = "インポート動作", + importVehicles = "車両をインポート", + importFrom = "インポート元", + dashboard = "ダッシュボード", + displayVehicle = "表示車両", + displayVehicles = "表示車両", + orders = "注文", + sales = "販売", + vehiclesOnDisplay = "展示車両", + employees = "従業員", + settings = "設定", + switchVehicle = "車両を変更", + remove = "削除", + noDisplayVehicles = "表示車両がありません", + selectVehicle = "車両を選択", + colour = "色", + placeVehicle = "車両を配置", + orderVehicle = "車両を注文", + cancelOrder = "注文キャンセル", + delivery = "配送", + delivered = "配達済み", + noOrders = "注文がありません", + quantity = "数量", + totalCost = "総費用", + totalSales = "総販売", + noSales = "販売がありません", + paid = "支払い済み", + owed = "未払い", + dealershipName = "ディーラー名", + save = "変更を保存", + cancel = "キャンセル", + notEnoughMoney = "お金が足りません", + placeOrder = "注文を確定", + purchaseCost = "購入費用", + salePrice = "販売価格", + inStock = "在庫あり", + outOfStock = "在庫切れ", + placeVehiclePrompt = "車両を配置するには、%{value} を押してください。その後、細かい調整が可能です。", + remaining = "残り", + prePurchaseRepoWarning = "支払いができない場合、車両は即座に差し押さえられます。", + repossessionWarning = "最後の支払いが失敗しました - すぐに支払わないと車両が差し押さえられます。", + recurringPayment = "定期的な支払い", + remainingBalance = "残りの残高", + remainingPayments = "残りの支払い回数", + paymentTakenEvery = "毎回支払い", + hours = "時間", + seconds = "秒", + nextPayment = "次の支払い", + makePayment = "支払いを行う", + vehicleRepossessed = "車両は差し押さえられました", + payInFull = "全額支払う", + earlyPaymentConfirmation = "本当に早期支払いを行いますか?", + financedVehicles = "ファイナンス車両", + noFinancedVehicles = "ファイナンス中の車両はありません", + financeBreakdown = "ファイナンス詳細", + initialPayment = "初回支払い", + payments = "支払い回数", + length = "期間", + interest = "利息", + totalPayable = "総支払額", + leaveShowroom = "ショールームを出る", + handling = "ハンドリング", + topSpeed = "最高速度", + power = "馬力", + torque = "トルク", + brake = "ブレーキ", + financing = "ファイナンス中", + financingAvailable = "ファイナンス利用可能", + paymentsOf = "の支払い回数", + clear = "クリア", + testDrive = "試乗", + allCategories = "すべてのカテゴリー", + sortByName = "並び替え: 名前順", + sortByAvailability = "並び替え: 在庫順", + sortByCheapest = "並び替え: 安い順", + sortByMostExpensive = "並び替え: 高い順", + sortByNewest = "並び替え: 新しい順", + purchaseVehicle = "車両を購入", + purchaseFor = "購入金額", + selectSociety = "社会を選択", + financeOverPayments = "%{value}回の支払いでファイナンス", + payToday = "今日支払う", + financeThen = "その後", + seeFullBreakdown = "詳細を見る", + testDriveExit = "試乗を終了するには、車両から降りることができます。", + + -- NOTIFICATIONS + purchaseSuccess = "購入おめでとうございます!", + depositSuccess = "入金成功", + withdrawSuccess = "出金成功", + errorNotEnoughMoney = "お金が足りません", + errorVehicleOutOfStock = "この車両は在庫切れです", + errorCannotAffordVehicle = "この車両は購入できません", + vehicleFinancePaymentMade = "車両のファイナンス支払いが完了しました %{value}", + vehicleFinancePaidOff = "おめでとうございます、車両 %{value} のファイナンスが完済され、所有権が移転されました", + vehicleFinancePaymentFailed = "車両のファイナンス支払いが失敗しました %{value}", + vehicleFinanceRepossessedSoon = "車両 %{value} の支払いが未済です。今すぐ支払わないと差し押さえされます。", + vehicleFinanceRepossessed = "支払い失敗により、車両 %{value} は差し押さえられました。", + dealershipNotEnoughFunds = "ディーラーに十分な資金がありません", + dealershipVehiclesOrdered = "車両が正常に注文されました", + dealershipOrderCancelled = "注文が正常にキャンセルされました", + errorVehicleWithSpawnCodeExists = "このスポーンコードの車両は既に存在します", + errorExitVehicle = "まず車両から降りてください", + + -- NEW v1.1 + purchaseRequest = "購入リクエスト", + sendRequest = "リクエスト送信", + dealer = "ディーラー", + financed = "ファイナンス済み", + signHere = "ここにサイン", + signFirstError = "最初にサインしてください", + denyRequest = "リクエスト拒否", + playerTooManyFinancedVehicles = "プレイヤーはファイナンス中の車両が多すぎます", + employeePermissionsError = "必要な従業員権限がありません", + managerRole = "マネージャー", + supervisorRole = "スーパーバイザー", + salesRole = "営業", + ownerRole = "オーナー", + employmentRequest = "雇用リクエスト", + accept = "承認", + jobOfferDescription = "\"%{value}\" ディーラーでの職を提供されています。受け入れますか?", + pending = "保留中", + employeeHiredMsg = "ディーラーの雇用リクエストが承認されました!", + employeeRejectedMsg = "ディーラーの雇用リクエストが拒否されました", + sellVehicle = "車両を売る", + vehicleTerms = "車両契約条件", + financePayments = "ファイナンス支払い", + commission = "手数料", + role = "役職", + firedNotification = "\"%{value}\" ディーラーから解雇されました", + dealershipTooFarAway = "ディーラーが遠すぎます", + restoreDisplayVehicles = "ショールームを復元", + customer = "顧客", + lessThanAMin = "1分未満", + mins = "分", + notInVehicle = "車両に乗っていません", + notYourVehicleError = "この車両はあなたのものではありません", + vehicleFinancedError = "この車両はファイナンス支払いが残っているため、販売できません", + dealershipDoesntSellVehicle = "このディーラーはこの車両を購入できません", + dealershipWantsYourVehicle = "おめでとうございます! このディーラーはあなたの車両を購入したいと言っています。", + purchasePrice = "提示価格: ", + + spawnCodeInvalid = "スポーンコード無効", + salesRep = "営業担当", + directSaleAccepted = "直販リクエストが承認されました! 手数料が支払われました。", + directSaleRejected = "直販リクエストが拒否されました" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/lt.lua b/resources/[carscripts]/jg-dealerships/locales/lt.lua new file mode 100644 index 000000000..4eedb73c8 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/lt.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['lt'] = { + -- UI + vehicle = "Tr.priemonė", + vehicles = "Tr.priemonės", + dealership = "Salonas", + dealerships = "Salonas", + vehiclesCount = "Tr.priemonė(s)", + dealersCount = "Tr.priemonių parduotuvė(s)", + accountBalance = "Paskyros Balansas", + bank = "Banko Sąskaita", + cash = "Grynieji", + amount = "Suma", + societyFund = "Bendrijos Fondas", + paymentSource = "Pajamų Šaltinis", + purchase = "Pirkti", + personalPurchase = "Asmeninis Pirkimas", + societyPurchase = "Bendrijos Pirkimas", + purchaseType = "Pirkimo Tipas", + deposit = "Įnešti", + withdraw = "Išgryninti", + all = "Visi", + yes = "Taip", + no = "Ne", + add = "Pridėti", + edit = "Keisti", + id = "ID", + created = "Sūkurtas", + type = "Tipas", + name = "Vardas", + owner = "Savininkas", + bankBalance = "Banko Likutis", + status = "Statusas", + back = "Atgal", + previous = "Ankstesnis", + next = "Kitas", + admin = "Admin", + vehiclesAdmin = "Tr.priemonės admin", + dealershipsAdmin = "Tr.priemonių parduotuvės admin", + search = "Ieškoti", + noDealershipsFound = "Tr.priemonių parduotuvės nerasta", + noVehicles = "Tr.priemonės nerastos", + page = "Puslapis", + of = "Iš", + every = "Visi", + show = "Rodyti", + active = "Aktyvus", + activeFinance = "Jūsų aktyvus finansas", + failed = "Pavedimas nepavyko", + removed = "Pašalintas", + setOwner = "Paskirti savininką", + manage = "Tvarkyti", + deleteData = "Ištrinti duomenis", + deleteVehicle = "Ištrinti tr.priemonę", + delete = "Ištrinti", + deleteConfirmation = "Ar esate įsitikinęs?", + deleteConfirmationDanger = "Ar esate įsitikinęs? šio veiksmo atšaukti negalėsite.", + setDealershipOwner = "Paskirti tr.priemonių parduotuvės savininką", + overwriteDealerPrices = "Pakeisti tr.priemonių parduotuvės kainas", + nearbyPlayers = "Šalia esantys asmenys", + noPlayersNearby = "Šalia nieko nėra", + selectPlayer = "Pasirinkti Asmenį", + required = "Reikiamas", + forExample = "Pavyzdžiui", + spawnCode = "Kodas", + brand = "Markė", + model = "Modelis", + category = "Kategorija", + price = "Kaina", + import = "Įkelti", + importing = "Įkeliama", + importBehaviour = "Import Behaviour", + importVehicles = "Įkelti tr.priemones", + importFrom = "Įkelt iš", + dashboard = "Prietaisų Skydelis", + displayVehicle = "Rodyti tr.priemonę", + displayVehicles = "Rodyti tr.priemones", + orders = "Užsakymai", + sales = "Pardavimai", + vehiclesOnDisplay = "Eksponuojamos tr.priemonės", + employees = "Darbuotojai", + settings = "Nustatymai", + switchVehicle = "Pakeisti tr.priemonę", + remove = "Pašalinti", + noDisplayVehicles = "Nėra eksponuojamų tr.priemonių", + selectVehicle = "Pasirinkti tr. priemonę", + colour = "Spalva", + placeVehicle = "Pastatyti tr.priemonę", + orderVehicle = "Užsakyti tr.priemonę", + cancelOrder = "Atšaukti Užsakymą", + delivery = "Pristatymas", + delivered = "Pristatyta", + noOrders = "Užsakymu nerasta", + quantity = "Kiekis", + totalCost = "Visa kaina", + totalSales = "Visi pardavimai", + noSales = "Pardavimų nerasta", + paid = "Sumokėta", + owed = "Įsiskolinta", + dealershipName = "tr.priemonių Parduotuvės Pavadinimas", + save = "Išsaugoti Pakeitimus", + cancel = "Atšaukti", + notEnoughMoney = "Nepakankamas pinigų kiekis", + placeOrder = "Pateikti Užsakymą", + purchaseCost = "Pirkimo Kaina", + salePrice = "Pardavimo Kaina", + inStock = "Turimas kiekis", + outOfStock = "Išparduota", + placeVehiclePrompt = "Paspauskite %{value} ,kad pastatytumėte tr.priemonę. Pakeitimus galėsite daryti vėliau!", + remaining = "Likę", + prePurchaseRepoWarning = "Jei negalite atsiskaityti su finansiniais mokėjimais, jūsų transporto priemonė bus grąžinta.", + repossessionWarning = "Paskutinis mokėjimas nepavyko jūsų transporto priemonė bus grąžinta, nebent mokėsite dabar.", + recurringPayment = "Pasikartojantis mokėjimas", + remainingBalance = "Esamas likutis", + remainingPayments = "Likę mokėjimai", + paymentTakenEvery = "PMokėjimas imamas kas", + hours = "valandos", + seconds = "sekundės", + nextPayment = "Kitas mokėjimas", + makePayment = "Sumokėti", + vehicleRepossessed = "Transporto priemonė bus atimta", + payInFull = "Mokėti pilnai", + earlyPaymentConfirmation = "Ar tikrai norite atlikti išankstinį mokėjimą?", + financedVehicles = "Finansuojamos transporto priemonės", + noFinancedVehicles = "Jūs neturite tr.priemonių už kurias reikėtų mokėti", + financeBreakdown = "Finansų suskirstymas", + initialPayment = "Pradinis mokėjimas", + payments = "Mokėjimai", + length = "Ilgis", + interest = "Palūkanos", + totalPayable = "Iš viso mokėtina", + leaveShowroom = "Palikti", + handling = "Tvarkymas", + topSpeed = "Didžiausias greitis", + power = "Galia", + torque = "Sukimo momentas", + brake = "Stabdymas", + financing = "Finansavimas", + financingAvailable = "Galimas finansavimas", + paymentsOf = "mokėjimai iš", + clear = "Clear", + testDrive = "Bandomasis Važiavimas", + allCategories = "Visos Kategotijos", + sortByName = "Rušioti pagal: Pavadinimą", + sortByAvailability = "Rūšiuoti pagal: Prieinamumą", + sortByCheapest = "Rūšiuoti pagal: Pigiausias", + sortByMostExpensive = "Rūšiuoti pagal: Brangiausias", + sortByNewest = "Rūšiuoti pagal: Naujausias", + purchaseVehicle = "Pirkti tr.priemonę", + purchaseFor = "Pirkti už", + selectSociety = "Pasirinkite Bendriją", + financeOverPayments = "Finansuokite daugiau nei %{value} mokėjimų", + payToday = "Mokėkite šiandien", + financeThen = "Tada", + seeFullBreakdown = "Žiūrėti visą suskirstymą", + testDriveExit = "Galite bet kada išlipti iš transporto priemonės, kad baigtumėte bandomąjį važiavimą.", + + -- NOTIFICATIONS + purchaseSuccess = "Sveikiname įsigijus pirkinį!", + depositSuccess = "Depozitas sėkmingas", + withdrawSuccess = "Išėmimas sėkmingas", + errorNotEnoughMoney = "Jūs neturite pakankamai pinigų", + errorVehicleOutOfStock = "Šios tr.priemonės nėra sandėlyje", + errorCannotAffordVehicle = "Jūs negalite sau leisti šios transporto priemonės", + vehicleFinancePaymentMade = "Pavedimas už tr.priemonę sėkmingas %{value}", + vehicleFinancePaidOff = "Sveikiname, jūs sumokėjote ir dabar turite nuosavą transporto priemonę %{value}", + vehicleFinancePaymentFailed = "Nepavyko nuskaičiuoti pinigų už tr.priemonę %{value}", + vehicleFinanceRepossessedSoon = "Turite sumokėti už savo tr.priemonę %{value} arba jūsų tr.priemonė netrukus bus grąžinta", + vehicleFinanceRepossessed = "Dėl nemokėjimo jūsų transporto priemonė buvo atimta su valstybiniu numeriu %{value}", + dealershipNotEnoughFunds = "Tr.priemonių parduotuvė neturi pakankamai lėšų", + dealershipVehiclesOrdered = "Transporto priemonė(s) sėkmingai užsakyta(os).", + dealershipOrderCancelled = "Užsakymas sėkmingai atšauktas", + errorVehicleWithSpawnCodeExists = "Transporto priemonė su šiuo kodu jau yra", + errorExitVehicle = "Pirmiausia turite išlipti iš transporto priemonės", + + -- NEW v1.1 + purchaseRequest = "Purchase Request", + sendRequest = "Send Request", + dealer = "Dealer", + financed = "Financed", + signHere = "Sign here", + signFirstError = "Please sign first", + denyRequest = "Deny Request", + playerTooManyFinancedVehicles = "Player has too many financed vehicles", + employeePermissionsError = "You don't have the necessary employee permissions", + managerRole = "Manager", + supervisorRole = "Supervisor", + salesRole = "Sales", + ownerRole = "Owner", + employmentRequest = "Employment Request", + accept = "Accept", + jobOfferDescription = "You have been offered a job at the \"%{value}\" dealership. Would you like to accept?", + pending = "Pending", + employeeHiredMsg = "Dealership hire request was accepted!", + employeeRejectedMsg = "Dealership hire request was rejected", + sellVehicle = "Sell Vehicle", + vehicleTerms = "Vehicle terms", + financePayments = "Finance Payments", + commission = "Commission", + role = "Role", + firedNotification = "You have been fired from the \"%{value}\" dealership", + dealershipTooFarAway = "You aren't near any dealerships", + restoreDisplayVehicles = "Restore Showroom", + customer = "Customer", + lessThanAMin = "Less than a minute", + mins = "min(s)", + notInVehicle = "You are not sat in a vehicle", + notYourVehicleError = "This vehicle does not belong to you", + vehicleFinancedError = "You cannot sell this vehicle because it has finance payments remaining", + dealershipDoesntSellVehicle = "This dealership can't purchase this vehicle", + dealershipWantsYourVehicle = "Congratulations! This dealership would like to purchase your vehicle.", + purchasePrice = "Offered price: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/nl.lua b/resources/[carscripts]/jg-dealerships/locales/nl.lua new file mode 100644 index 000000000..a6cd414e6 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/nl.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['nl'] = { + -- UI + vehicle = "Voertuig", + vehicles = "Voertuigen", + dealership = "Autodealer", + dealerships = "Autodealers", + vehiclesCount = "Aantal voertuigen", + dealersCount = "Aantal dealers", + accountBalance = "Rekeningsaldo", + bank = "Bank", + cash = "Contant geld", + amount = "Bedrag", + societyFund = "Maatschappelijk fonds", + paymentSource = "Betaalbron", + purchase = "Aankoop", + personalPurchase = "Persoonlijke aankoop", + societyPurchase = "Maatschappelijke aankoop", + purchaseType = "Type aankoop", + deposit = "Storting", + withdraw = "Opname", + all = "Alle", + yes = "Ja", + no = "Nee", + add = "Toevoegen", + edit = "Bewerken", + id = "ID", + created = "Aangemaakt", + type = "Type", + name = "Naam", + owner = "Eigenaar", + bankBalance = "Banksaldo", + status = "Status", + back = "Terug", + previous = "Vorige", + next = "Volgende", + admin = "Beheerder", + vehiclesAdmin = "Voertuigbeheerder", + dealershipsAdmin = "Autodealer beheerder", + search = "Zoeken", + noDealershipsFound = "Geen autodealers gevonden", + noVehicles = "Geen voertuigen gevonden", + page = "Pagina", + of = "van", + every = "elke", + show = "Weergeven", + active = "Actief", + activeFinance = "Actieve financiering", + failed = "Betaling mislukt", + removed = "Verwijderd", + setOwner = "Eigenaar instellen", + manage = "Beheren", + deleteData = "Gegevens verwijderen", + deleteVehicle = "Voertuig verwijderen", + delete = "Verwijderen", + deleteConfirmation = "Weet je het zeker?", + deleteConfirmationDanger = "Weet je het zeker? Deze actie kan niet ongedaan worden gemaakt.", + setDealershipOwner = "Autodealer eigenaar instellen", + overwriteDealerPrices = "Dealerprijzen overschrijven", + nearbyPlayers = "Spelers in de buurt", + noPlayersNearby = "Geen spelers in de buurt", + selectPlayer = "Speler selecteren", + required = "Vereist", + forExample = "Bijvoorbeeld", + spawnCode = "Spawn-code", + brand = "Merk", + model = "Model", + category = "Categorie", + price = "Prijs", + import = "Importeren", + importing = "Importeren", + importBehaviour = "Importgedrag", + importVehicles = "Voertuigen importeren", + importFrom = "Importeren van", + dashboard = "Dashboard", + displayVehicle = "Voertuig weergeven", + displayVehicles = "Voertuigen weergeven", + orders = "Bestellingen", + sales = "Verkoop", + vehiclesOnDisplay = "Voertuigen op display", + employees = "Werknemers", + settings = "Instellingen", + switchVehicle = "Voertuig wisselen", + remove = "Verwijderen", + noDisplayVehicles = "Geen voertuigen op display", + selectVehicle = "Voertuig selecteren", + colour = "Kleur", + placeVehicle = "Voertuig plaatsen", + orderVehicle = "Voertuig bestellen", + cancelOrder = "Bestelling annuleren", + delivery = "Levering", + delivered = "Geleverd", + noOrders = "Geen bestellingen", + quantity = "Hoeveelheid", + totalCost = "Totale kosten", + totalSales = "Totale verkoop", + noSales = "Geen verkoop gevonden", + paid = "Betaald", + owed = "Verschuldigd", + dealershipName = "Naam autodealer", + save = "Wijzigingen opslaan", + cancel = "Annuleren", + notEnoughMoney = "Niet genoeg geld", + placeOrder = "Bestelling plaatsen", + purchaseCost = "Aankoopprijs", + salePrice = "Verkoopprijs", + inStock = "Op voorraad", + outOfStock = "Niet op voorraad", + placeVehiclePrompt = "Druk op %{value} om het voertuig te plaatsen. Daarna kun je verdere aanpassingen maken!", + remaining = "Resterend", + prePurchaseRepoWarning = "Als je je kredietbetalingen niet volgt, wordt je voertuig in beslag genomen.", + repossessionWarning = "Je laatste betaling is mislukt - als je nu niet betaalt, wordt je voertuig binnenkort in beslag genomen.", + recurringPayment = "Terugkerende betaling", + remainingBalance = "Resterend saldo", + remainingPayments = "Resterende betalingen", + paymentTakenEvery = "Betaling genomen om de", + hours = "Uur", + seconds = "Seconden", + nextPayment = "Volgende betaling", + makePayment = "Betaling doen", + vehicleRepossessed = "Voertuig wordt in beslag genomen", + payInFull = "Volledig betalen", + earlyPaymentConfirmation = "Weet je zeker dat je eerder wilt betalen?", + financedVehicles = "Gefinancierde voertuigen", + noFinancedVehicles = "Je hebt geen actieve gefinancierde voertuigen", + financeBreakdown = "Financiële breakdown", + initialPayment = "Eerste betaling", + payments = "Betalingen", + length = "Lengte", + interest = "Rente", + totalPayable = "Totaal te betalen", + leaveShowroom = "Showroom verlaten", + handling = "Besturing", + topSpeed = "Topsnelheid", + power = "Vermogen", + torque = "Koppel", + brake = "Rem", + financing = "Financiering", + financingAvailable = "Financiering beschikbaar", + paymentsOf = "betalingen van", + clear = "Wis", + testDrive = "Proefrit", + allCategories = "Alle categorieën", + sortByName = "Sorteer op naam", + sortByAvailability = "Sorteer op beschikbaarheid", + sortByCheapest = "Sorteer op goedkoopste", + sortByMostExpensive = "Sorteer op duurste", + sortByNewest = "Sorteer op nieuwste", + purchaseVehicle = "Voertuig kopen", + purchaseFor = "Kopen voor", + selectSociety = "Selecteer een samenleving", + financeOverPayments = "%{value} betalingen over financiering", + payToday = "Vandaag betalen", + financeThen = "Dan", + seeFullBreakdown = "Bekijk de volledige breakdown", + testDriveExit = "Je kunt op elk moment uit je voertuig stappen om de proefrit te beëindigen.", + + -- NOTIFICATIONS + purchaseSuccess = "Bedankt voor je aankoop!", + depositSuccess = "Storting succesvol", + withdrawSuccess = "Opname succesvol", + errorNotEnoughMoney = "Niet genoeg geld", + errorVehicleOutOfStock = "Dit voertuig is niet op voorraad", + errorCannotAffordVehicle = "Je kunt dit voertuig niet betalen", + vehicleFinancePaymentMade = "Betaling van %{value} voor je voertuig is gelukt", + vehicleFinancePaidOff = "Gefeliciteerd, je hebt je voertuig volledig afbetaald! %{value}", + vehicleFinancePaymentFailed = "Betaling van %{value} voor je voertuig is mislukt", + vehicleFinanceRepossessedSoon = "Je moet betalen voor je voertuig %{value}, anders wordt het binnenkort in beslag genomen", + vehicleFinanceRepossessed = "Vanwege niet-betaling is je voertuig met kenteken %{value} in beslag genomen.", + dealershipNotEnoughFunds = "De autodealer heeft niet genoeg fondsen", + dealershipVehiclesOrdered = "Voertuigen succesvol besteld bij de autodealer", + dealershipOrderCancelled = "Bestelling bij de autodealer succesvol geannuleerd", + errorVehicleWithSpawnCodeExists = "Er bestaat al een voertuig met deze spawn-code", + errorExitVehicle = "Je moet eerst uit je voertuig stappen", + + -- NEW v1.1 + purchaseRequest = "Aankoopverzoek", + sendRequest = "Verzoek versturen", + dealer = "Dealer", + financed = "Gefinancierd", + signHere = "Onderteken hier", + signFirstError = "Onderteken eerst alsjeblieft", + denyRequest = "Verzoek afwijzen", + playerTooManyFinancedVehicles = "Deze speler heeft te veel gefinancierde voertuigen", + employeePermissionsError = "Je hebt niet de vereiste rechten als werknemer", + managerRole = "Manager", + supervisorRole = "Supervisor", + salesRole = "Verkoop", + ownerRole = "Eigenaar", + employmentRequest = "Verzoek tot aanstelling", + accept = "Accepteren", + jobOfferDescription = "Je hebt een baanaanbieding ontvangen van \"%{value}\" autodealer. Wil je het accepteren?", + pending = "In behandeling", + employeeHiredMsg = "Je bent aangenomen bij de autodealer!", + employeeRejectedMsg = "Je verzoek tot aanstelling bij de autodealer is afgewezen", + sellVehicle = "Voertuig verkopen", + vehicleTerms = "Voorwaarden voertuig", + financePayments = "Financiële betalingen", + commission = "Commissie", + role = "Rol", + firedNotification = "Je bent ontslagen bij de autodealer \"%{value}\"", + dealershipTooFarAway = "Je bent te ver verwijderd van een autodealer", + restoreDisplayVehicles = "Toon voertuigen", + customer = "Klant", + lessThanAMin = "Minder dan een minuut", + mins = "minuten", + notInVehicle = "Je zit niet in een voertuig", + notYourVehicleError = "Dit voertuig is niet van jou", + vehicleFinancedError = "Je kunt dit voertuig niet verkopen omdat er nog resterende financieringsbetalingen zijn", + dealershipDoesntSellVehicle = "Deze autodealer verkoopt dit voertuig niet", + dealershipWantsYourVehicle = "Gefeliciteerd! Deze autodealer wil je voertuig kopen.", + purchasePrice = "Aangeboden prijs: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/no.lua b/resources/[carscripts]/jg-dealerships/locales/no.lua new file mode 100644 index 000000000..929791b30 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/no.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['no'] = { + -- UI + vehicle = "Kjøretøy", + vehicles = "Kjøretøy", + dealership = "Forhandler", + dealerships = "Forhandlere", + vehiclesCount = "Kjøretøy", + dealersCount = "Forhandlere", + accountBalance = "Saldo", + bank = "Bankkonto", + cash = "Kontant", + amount = "Beløp", + societyFund = "Bedriftskonto", + paymentSource = "Betalingsmetode", + purchase = "Kjøp", + personalPurchase = "Personlig Kjøp", + societyPurchase = "Bedrifts Kjøp", + purchaseType = "Kjøpstype", + deposit = "Innskudd", + withdraw = "Uttak", + all = "Alle", + yes = "Ja", + no = "Nei", + add = "Legg til", + edit = "Endre", + id = "ID", + created = "Opprettet", + type = "Type", + name = "Navn", + owner = "Eier", + bankBalance = "Saldo", + status = "Status", + back = "Tilbake", + previous = "tidligere", + next = "Neste", + admin = "Admin Meny", + vehiclesAdmin = "Kjøretøy Admin", + dealershipsAdmin = "Forhandler Admin", + search = "Søk", + noDealershipsFound = "Ingen forhandlere funnet", + noVehicles = "Ingen kjøretøy funnet", + page = "Side", + of = "av", + every = "hver", + show = "Vis", + active = "Aktiv", + activeFinance = "Aktiv Finansiering", + failed = "Betaling Feilet", + removed = "Fjernet", + setOwner = "Velg Eier", + manage = "Administrere", + deleteData = "Fjern Data", + deleteVehicle = "Slett Kjøretøy", + delete = "Slett", + deleteConfirmation = "Er du sikker?", + deleteConfirmationDanger = "Er du sikker? Denne handlingen kan ikke reverseres.", + setDealershipOwner = "Velg Forhandler Eier", + overwriteDealerPrices = "Overkjør forhandlerpriser", + nearbyPlayers = "Personer i nærheten", + noPlayersNearby = "Ingen personer i nærheten", + selectPlayer = "Velg spiller", + required = "Påkrevd", + forExample = "For eksempel", + spawnCode = "Spawn Kode", + brand = "Merke", + model = "Modell", + category = "Kategori", + price = "Pris", + import = "Importer", + importing = "Importerer", + importBehaviour = "Import Metode", + importVehicles = "Importer kjøretøy", + importFrom = "Importer Fra", + dashboard = "Hovedmeny", + displayVehicle = "Still ut kjøretøy", + displayVehicles = "Still ut kjøretøy", + orders = "Ordre", + sales = "Salg", + vehiclesOnDisplay = "Kjøretøy på utstilling", + employees = "Ansatte", + settings = "Instillinger", + switchVehicle = "Bytt kjøretøy", + remove = "Fjern", + noDisplayVehicles = "Ingen kjøretøy på utstilling", + selectVehicle = "Velg kjøretøy", + colour = "Farge", + placeVehicle = "Plasser kjøretøy", + orderVehicle = "Bestill kjøretøy", + cancelOrder = "Kanseller bestilling", + delivery = "Leveranse", + delivered = "Levert", + noOrders = "Ingen ordre funnet", + quantity = "Antall", + totalCost = "Totale utgifter", + totalSales = "Totale salg", + noSales = "Ingen salg funnet", + paid = "Betalt", + owed = "Å betale", + dealershipName = "Forhandlernavn", + save = "Lagre endringer", + cancel = "Avbryt", + notEnoughMoney = "Ikke nok penger", + placeOrder = "Legg inn bestilling", + purchaseCost = "Kjøpskostnad", + salePrice = "Salgspris", + inStock = "På lager", + outOfStock = "Utsolgt", + placeVehiclePrompt = "Trykk %{value} for å plassere kjøretøy. Du kan fortsette å justere etterpå!", + remaining = "Gjenstående", + prePurchaseRepoWarning = "Hvis ikke du kan betale for finansieringen, vil kjøretøyet ditt bli tatt tilbake!.", + repossessionWarning = "Din siste betalingen mislyktes - kjøretøyet blir tatt tilbake om du ikke gjennomfør en betaling til finansieringen nå! .", + recurringPayment = "Gjentakende Avdrag", + remainingBalance = "Gjenstående Saldo ", + remainingPayments = "Gjenstående Avdrag", + paymentTakenEvery = "Betaling tas hver", + hours = "time(r)", + seconds = "sekunder", + nextPayment = "Den neste betalingen skjer om", + makePayment = "Betal et avdrag", + vehicleRepossessed = "Kjøretøyet vil bli tatt tilbake", + payInFull = "Fullfør nedbetaling", + earlyPaymentConfirmation = "Er du sikker på at du vil gjennomføre et avdrag?", + financedVehicles = "Finansierte Kjøretøy", + noFinancedVehicles = "Du har ingen kjøretøy med aktive nedbetalinger", + financeBreakdown = "Finansplan", + initialPayment = "Førstegangsbetaling", + payments = "Betalinger", + length = "Lengde", + interest = "Renter", + totalPayable = "Totalt å betale", + leaveShowroom = "Forlat utstillingsrom", + handling = "Kjøreegenskaper", + topSpeed = "Topp Hastighet", + power = "Effekt", + torque = "Moment", + brake = "Bremser", + financing = "Finansiering", + financingAvailable = "Finansiering tilgjengelig", + paymentsOf = "betalinger av", + clear = "Tøm", + testDrive = "Prøvekjøring", + allCategories = "Alle Kategorier", + sortByName = "Sorter etter: Navn", + sortByAvailability = "Sorter etter: Tilgjengelighet", + sortByCheapest = "Sorter etter: Billigst", + sortByMostExpensive = "Sorter etter: Dyrest", + sortByNewest = "Sorter etter: Nyest", + purchaseVehicle = "Kjøp Kjøretøy", + purchaseFor = "Kjøp for", + selectSociety = "Velg Firma", + financeOverPayments = "Finansiering over %{value} betalinger", + payToday = "Betal i dag", + financeThen = "Da", + seeFullBreakdown = "Se fullstendig oversikt", + testDriveExit = "Du kan forlate kjøretøyet til en hver tid for å avslutte prøveturen.", + + -- NOTIFICATIONS + purchaseSuccess = "Gratulerer med nytt kjøretøy!", + depositSuccess = "Innskudd vellykket", + withdrawSuccess = "Uttak vellykket", + errorNotEnoughMoney = "Du har ikke nok penger", + errorVehicleOutOfStock = "Dette kjøretøyet er ikke på lager", + errorCannotAffordVehicle = "Du har ikke råd til dette kjøretøyet", + vehicleFinancePaymentMade = "Nedbetaling gjennomført %{value}", + vehicleFinancePaidOff = "Gratulerer, du har nå betalt ferdig kjøretøyet, og er nå fulleier %{value}", + vehicleFinancePaymentFailed = "Nedbetaling for kjøretøyet feilet %{value}", + vehicleFinanceRepossessedSoon = "Du må gjennomføre et innskudd for kjøretøyet ditt %{value} ellers vil kjøretøyet bli tatt tilbake", + vehicleFinanceRepossessed = "På grunn av manglende betaling, har kjøretøyet ditt blitt tatt tilbake til forhandler. Gjelder kjøretøy med skiltnummer %{value}", + dealershipNotEnoughFunds = "Forhandleren har ikke nok penger", + dealershipVehiclesOrdered = "Bestilling av kjøretøy gjennomført", + dealershipOrderCancelled = "Bestillingen ble kansellert", + errorVehicleWithSpawnCodeExists = "Et kjøretøy med denne spawn koden finnes allerede", + errorExitVehicle = "Du må forlate kjøretøyet først", + + -- NEW v1.1 + purchaseRequest = "Kjøpsforespørsel", + sendRequest = "Send forespørsel", + dealer = "Forhandler", + financed = "Finansiert", + signHere = "Signer her", + signFirstError = "Vennligst signer først", + denyRequest = "Nekte forespørsel", + playerTooManyFinancedVehicles = "Spilleren har for mange finansierte kjøretøyer", + employeePermissionsError = "Du har ikke nødvendige ansattes tillatelser", + managerRole = "Sjef", + supervisorRole = "Veileder", + salesRole = "Salg", + ownerRole = "Eieren", + employmentRequest = "Ansettelsesforespørsel", + accept = "Aksepterer", + jobOfferDescription = "Du har blitt tilbudt en jobb på \"%{value}\" forhandler.Vil du godta?", + pending = "Pending", + employeeHiredMsg = "Kjøretlyforhandler tilbud ble akseptert!", + employeeRejectedMsg = "Kjøretlyforhandler tilbud ble avvist", + sellVehicle = "Selg kjøretøy", + vehicleTerms = "Kjøretøyer", + financePayments = "Finansbetalinger", + commission = "Kommisjon", + role = "Rolle", + firedNotification = "Du har fått sparken fra \"%{value}\" forhandler", + dealershipTooFarAway = "Du er ikke i nærheten av noen forhandlere", + restoreDisplayVehicles = "Gjenopprett showroom", + customer = "Kunde", + lessThanAMin = "Mindre enn ett minutt", + mins = "min(s)", + notInVehicle = "Du sitter ikke i et kjøretøy", + notYourVehicleError = "Dette kjøretøyet tilhører ikke deg", + vehicleFinancedError = "Du kan ikke selge dette kjøretøyet fordi det har finansbetalinger utestående", + dealershipDoesntSellVehicle = "Dette forhandleren kan ikke kjøpe dette kjøretøyet", + dealershipWantsYourVehicle = "Gratulerer! Denne forhandleren vil gjerne kjøpe kjøretøyet ditt.", + purchasePrice = "Tilbudt pris: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/pl.lua b/resources/[carscripts]/jg-dealerships/locales/pl.lua new file mode 100644 index 000000000..73b155d16 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/pl.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['pl'] = { + -- UI + vehicle = "Pojazd", + vehicles = "Pojazdy", + dealership = "Dealer samochodowy", + dealerships = "Dealerzy samochodowi", + vehiclesCount = "Liczba pojazdów", + dealersCount = "Liczba dealerów", + accountBalance = "Saldo konta", + bank = "Bank", + cash = "Gotówka", + amount = "Kwota", + societyFund = "Fundusz społeczny", + paymentSource = "Źródło płatności", + purchase = "Zakup", + personalPurchase = "Osobisty zakup", + societyPurchase = "Zakup społeczny", + purchaseType = "Typ zakupu", + deposit = "Depozyt", + withdraw = "Wypłata", + all = "Wszystko", + yes = "Tak", + no = "Nie", + add = "Dodaj", + edit = "Edytuj", + id = "ID", + created = "Utworzono", + type = "Typ", + name = "Nazwa", + owner = "Właściciel", + bankBalance = "Saldo bankowe", + status = "Status", + back = "Powrót", + previous = "Poprzedni", + next = "Następny", + admin = "Administrator", + vehiclesAdmin = "Administrator pojazdów", + dealershipsAdmin = "Administrator dealerów", + search = "Szukaj", + noDealershipsFound = "Nie znaleziono dealerów samochodowych", + noVehicles = "Brak pojazdów", + page = "Strona", + of = "z", + every = "każdy", + show = "Pokaż", + active = "Aktywny", + activeFinance = "Aktywna finansowanie", + failed = "Niepowodzenie", + removed = "Usunięty", + setOwner = "Ustaw właściciela", + manage = "Zarządzaj", + deleteData = "Usuń dane", + deleteVehicle = "Usuń pojazd", + delete = "Usuń", + deleteConfirmation = "Na pewno?", + deleteConfirmationDanger = "Czy na pewno? Tej operacji nie można cofnąć.", + setDealershipOwner = "Ustaw właściciela dealerowi", + overwriteDealerPrices = "Nadpisz ceny dealerów", + nearbyPlayers = "Gracze w pobliżu", + noPlayersNearby = "Brak graczy w pobliżu", + selectPlayer = "Wybierz gracza", + required = "Wymagane", + forExample = "Na przykład", + spawnCode = "Kod spawnu", + brand = "Marka", + model = "Model", + category = "Kategoria", + price = "Cena", + import = "Importuj", + importing = "Importowanie", + importBehaviour = "Zachowanie importu", + importVehicles = "Importuj pojazdy", + importFrom = "Importuj z", + dashboard = "Deska rozdzielcza", + displayVehicle = "Wyświetl pojazd", + displayVehicles = "Wyświetl pojazdy", + orders = "Zamówienia", + sales = "Sprzedaż", + vehiclesOnDisplay = "Pojazdy na wystawie", + employees = "Pracownicy", + settings = "Ustawienia", + switchVehicle = "Zmień pojazd", + remove = "Usuń", + noDisplayVehicles = "Brak pojazdów na wystawie", + selectVehicle = "Wybierz pojazd", + colour = "Kolor", + placeVehicle = "Umieść pojazd", + orderVehicle = "Zamów pojazd", + cancelOrder = "Anuluj zamówienie", + delivery = "Dostawa", + delivered = "Dostarczono", + noOrders = "Brak zamówień", + quantity = "Ilość", + totalCost = "Całkowity koszt", + totalSales = "Całkowita sprzedaż", + noSales = "Brak sprzedaży", + paid = "Zapłacono", + owed = "Dłużne", + dealershipName = "Nazwa dealera samochodowego", + save = "Zapisz zmiany", + cancel = "Anuluj", + notEnoughMoney = "Za mało środków", + placeOrder = "Złóż zamówienie", + purchaseCost = "Koszt zakupu", + salePrice = "Cena sprzedaży", + inStock = "Na stanie", + outOfStock = "Brak w magazynie", + placeVehiclePrompt = "Naciśnij %{value}, aby umieścić pojazd. Następnie możesz wprowadzić dalsze zmiany!", + remaining = "Pozostało", + prePurchaseRepoWarning = "Jeśli nie spłacisz rat kredytu, twój pojazd zostanie zarekwirowany.", + repossessionWarning = "Twoja ostatnia płatność nie powiodła się - jeśli teraz nie zapłacisz, twój pojazd zostanie niedługo zarekwirowany.", + recurringPayment = "Płatność cykliczna", + remainingBalance = "Pozostałe saldo", + remainingPayments = "Pozostałe płatności", + paymentTakenEvery = "Płatność pobierana co", + hours = "Godzin", + seconds = "Sekundy", + nextPayment = "Następna płatność", + makePayment = "Dokonaj płatności", + vehicleRepossessed = "Twój pojazd zostanie zarekwirowany", + payInFull = "Zapłać całość", + earlyPaymentConfirmation = "Czy na pewno chcesz zapłacić wcześniej?", + financedVehicles = "Pojazdy objęte finansowaniem", + noFinancedVehicles = "Nie masz żadnych aktywnych pojazdów objętych finansowaniem", + financeBreakdown = "Podział finansów", + initialPayment = "Pierwsza płatność", + payments = "Płatności", + length = "Długość", + interest = "Oprocentowanie", + totalPayable = "Całkowita kwota do zapłaty", + leaveShowroom = "Opuść salon", + handling = "Zarządzanie", + topSpeed = "Maksymalna prędkość", + power = "Moc", + torque = "Moment obrotowy", + brake = "Hamulec", + financing = "Finansowanie", + financingAvailable = "Dostępne finansowanie", + paymentsOf = "płatności po", + clear = "Wyczyść", + testDrive = "Jazda próbna", + allCategories = "Wszystkie kategorie", + sortByName = "Sortuj według nazwy", + sortByAvailability = "Sortuj według dostępności", + sortByCheapest = "Sortuj według najniższej ceny", + sortByMostExpensive = "Sortuj według najwyższej ceny", + sortByNewest = "Sortuj według najnowszych", + purchaseVehicle = "Kup pojazd", + purchaseFor = "Kup dla", + selectSociety = "Wybierz społeczność", + financeOverPayments = "%{value} płatności ponad finansowanie", + payToday = "Zapłać dzisiaj", + financeThen = "Następnie", + seeFullBreakdown = "Zobacz pełny podział", + testDriveExit = "Możesz w każdej chwili opuścić pojazd, aby zakończyć jazdę próbną.", + + -- NOTIFICATIONS + purchaseSuccess = "Dziękujemy za zakup!", + depositSuccess = "Udany depozyt", + withdrawSuccess = "Udany przelew", + errorNotEnoughMoney = "Za mało środków", + errorVehicleOutOfStock = "Ten pojazd nie jest dostępny", + errorCannotAffordVehicle = "Nie stać cię na ten pojazd", + vehicleFinancePaymentMade = "Płatność %{value} za twój pojazd zakończona powodzeniem", + vehicleFinancePaidOff = "Gratulacje, spłaciłeś swojego pojazda! Pozostało %{value}", + vehicleFinancePaymentFailed = "Płatność %{value} za twój pojazd nie powiodła się", + vehicleFinanceRepossessedSoon = "Musisz zapłacić %{value} za twój pojazd, w przeciwnym razie wkrótce zostanie zarekwirowany", + vehicleFinanceRepossessed = "Z powodu niezapłacenia, twój pojazd o numerze rejestracyjnym %{value} został zarekwirowany.", + dealershipNotEnoughFunds = "Dealer samochodowy nie ma wystarczających funduszy", + dealershipVehiclesOrdered = "Pojazdy zostały pomyślnie zamówione u dealera samochodowego", + dealershipOrderCancelled = "Zamówienie u dealera samochodowego zostało pomyślnie anulowane", + errorVehicleWithSpawnCodeExists = "Pojazd o tym kodzie spawnu już istnieje", + errorExitVehicle = "Najpierw musisz opuścić pojazd", + + -- NEW v1.1 + purchaseRequest = "Prośba o zakup", + sendRequest = "Wyślij prośbę", + dealer = "Dealer", + financed = "Finansowane", + signHere = "Podpisz tutaj", + signFirstError = "Najpierw podpisz, proszę", + denyRequest = "Odrzuć prośbę", + playerTooManyFinancedVehicles = "Ten gracz ma zbyt wiele finansowanych pojazdów", + employeePermissionsError = "Nie masz wymaganych uprawnień jako pracownik", + managerRole = "Manager", + supervisorRole = "Przełożony", + salesRole = "Sprzedaż", + ownerRole = "Właściciel", + employmentRequest = "Prośba o zatrudnienie", + accept = "Akceptuj", + jobOfferDescription = "Otrzymałeś ofertę pracy od \"%{value}\" dealera samochodowego. Czy chcesz ją zaakceptować?", + pending = "Oczekuje", + employeeHiredMsg = "Zostałeś zatrudniony u dealera samochodowego!", + employeeRejectedMsg = "Twoja prośba o zatrudnienie u dealera samochodowego została odrzucona", + sellVehicle = "Sprzedaj pojazd", + vehicleTerms = "Warunki pojazdu", + financePayments = "Płatności finansowe", + commission = "Prowizja", + role = "Rola", + firedNotification = "Zostałeś zwolniony u dealera samochodowego \"%{value}\"", + dealershipTooFarAway = "Jesteś zbyt daleko od dealera samochodowego", + restoreDisplayVehicles = "Przywróć pojazdy", + customer = "Klient", + lessThanAMin = "Mniej niż minutę", + mins = "minut(y)", + notInVehicle = "Nie jesteś w pojeździe", + notYourVehicleError = "Ten pojazd nie należy do ciebie", + vehicleFinancedError = "Nie możesz sprzedać tego pojazdu, ponieważ pozostały jeszcze płatności finansowe", + dealershipDoesntSellVehicle = "Ten dealer samochodowy nie sprzedaje tego pojazdu", + dealershipWantsYourVehicle = "Gratulacje! Ten dealer samochodowy chce kupić twój pojazd.", + purchasePrice = "Zaproponowana cena: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/pt.lua b/resources/[carscripts]/jg-dealerships/locales/pt.lua new file mode 100644 index 000000000..bcbf4087d --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/pt.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['pt'] = { + -- UI + vehicle = "Veículo", + vehicles = "Veículos", + dealership = "Concessionária", + dealerships = "Concessionárias", + vehiclesCount = "veículo(s)", + dealersCount = "concessionária(s)", + accountBalance = "Saldo da Conta", + bank = "Conta Bancária", + cash = "Dinheiro", + amount = "Valor", + societyFund = "Fundo da Sociedade", + paymentSource = "Origem do Pagamento", + purchase = "Compra", + personalPurchase = "Compra Pessoal", + societyPurchase = "Compra da Sociedade", + purchaseType = "Tipo de Compra", + deposit = "Depósito", + withdraw = "Retirar", + all = "Todos", + yes = "Sim", + no = "Não", + add = "Adicionar", + edit = "Editar", + id = "ID", + created = "Criado", + type = "Tipo", + name = "Nome", + owner = "Proprietário", + bankBalance = "Saldo Bancário", + status = "Status", + back = "Voltar", + previous = "Anterior", + next = "Próximo", + admin = "Admin", + vehiclesAdmin = "Administração de Veículos", + dealershipsAdmin = "Administração de Concessionárias", + search = "Buscar", + noDealershipsFound = "Nenhuma concessionária encontrada", + noVehicles = "Nenhum veículo encontrado", + page = "Página", + of = "de", + every = "todos", + show = "Mostrar", + active = "Ativo", + activeFinance = "Financiamento Ativo", + failed = "Pagamento Falhou", + removed = "Removido", + setOwner = "Definir Proprietário", + manage = "Gerenciar", + deleteData = "Excluir Dados", + deleteVehicle = "Excluir Veículo", + delete = "Excluir", + deleteConfirmation = "Você tem certeza?", + deleteConfirmationDanger = "Você tem certeza? Essa ação é irreversível.", + setDealershipOwner = "Definir Proprietário da Concessionária", + overwriteDealerPrices = "Sobrescrever preços da concessionária", + nearbyPlayers = "Jogadores Próximos", + noPlayersNearby = "Nenhum jogador próximo", + selectPlayer = "Selecionar jogador", + required = "Obrigatório", + forExample = "Por exemplo", + spawnCode = "Código de Spawn", + brand = "Marca", + model = "Modelo", + category = "Categoria", + price = "Preço", + import = "Importar", + importing = "Importando", + importBehaviour = "Comportamento de Importação", + importVehicles = "Importar veículos", + importFrom = "Importar de", + dashboard = "Painel de Controle", + displayVehicle = "Exibir Veículo", + displayVehicles = "Exibir Veículos", + orders = "Pedidos", + sales = "Vendas", + vehiclesOnDisplay = "Veículos em Exibição", + employees = "Funcionários", + settings = "Configurações", + switchVehicle = "Trocar Veículo", + remove = "Remover", + noDisplayVehicles = "Nenhum veículo em exibição", + selectVehicle = "Selecionar veículo", + colour = "Cor", + placeVehicle = "Colocar Veículo", + orderVehicle = "Pedir Veículo", + cancelOrder = "Cancelar Pedido", + delivery = "Entrega", + delivered = "Entregue", + noOrders = "Nenhum pedido encontrado", + quantity = "Quantidade", + totalCost = "Custo Total", + totalSales = "Total de Vendas", + noSales = "Nenhuma venda encontrada", + paid = "Pago", + owed = "Devido", + dealershipName = "Nome da Concessionária", + save = "Salvar Alterações", + cancel = "Cancelar", + notEnoughMoney = "Dinheiro insuficiente", + placeOrder = "Fazer Pedido", + purchaseCost = "Custo de Compra", + salePrice = "Preço de Venda", + inStock = "Em estoque", + outOfStock = "Sem estoque", + placeVehiclePrompt = "Pressione %{value} para colocar o veículo. Podes fazer ajustes finos posteriormente!", + remaining = "Restante", + prePurchaseRepoWarning = "Se não conseguires pagar as suas parcelas, o teu veículo será retomado.", + repossessionWarning = "O teu último pagamento falhou - o teu veículo será retomado, a menos que faças um pagamento agora.", + recurringPayment = "Pagamento Recorrente", + remainingBalance = "Saldo Restante", + remainingPayments = "Parcelas Restantes", + paymentTakenEvery = "Pagamento realizado a cada", + hours = "horas", + seconds = "segundos", + nextPayment = "Próximo pagamento", + makePayment = "Realizar pagamento", + vehicleRepossessed = "Veículo será retomado", + payInFull = "Pagar integralmente", + earlyPaymentConfirmation = "Tem certeza de que deseja fazer um pagamento antecipado de", + financedVehicles = "Veículos Financiados", + noFinancedVehicles = "Não possui veículos com financiamento ativo", + financeBreakdown = "Detalhes do Financiamento", + initialPayment = "Pagamento Inicial", + payments = "Parcelas", + length = "Duração", + interest = "Juros", + totalPayable = "Total a Pagar", + leaveShowroom = "Sair da Exibição", + handling = "Manuseio", + topSpeed = "Velocidade Máxima", + power = "Potência", + torque = "Torque", + brake = "Freio", + financing = "Financiamento", + financingAvailable = "Financiamento disponível", + paymentsOf = "parcelas de", + clear = "Limpar", + testDrive = "Test Drive", + allCategories = "Todas as Categorias", + sortByName = "Ordenar por: Nome", + sortByAvailability = "Ordenar por: Disponibilidade", + sortByCheapest = "Ordenar por: Mais Barato", + sortByMostExpensive = "Ordenar por: Mais Caro", + sortByNewest = "Ordenar por: Mais Recente", + purchaseVehicle = "Comprar Veículo", + purchaseFor = "Comprar para", + selectSociety = "Selecionar uma sociedade", + financeOverPayments = "Financiar em %{value} parcelas", + payToday = "Pagar hoje", + financeThen = "Depois", + seeFullBreakdown = "Ver detalhes completos", + testDriveExit = "Pode sair do veículo a qualquer momento para encerrar o teste drive.", + + -- NOTIFICATIONS + purchaseSuccess = "Parabéns pela sua compra!", + depositSuccess = "Depósito realizado com sucesso", + withdrawSuccess = "Retirada realizada com sucesso", + errorNotEnoughMoney = "Você não tem dinheiro suficiente", + errorVehicleOutOfStock = "Este veículo está sem estoque", + errorCannotAffordVehicle = "Você não pode pagar por este veículo", + vehicleFinancePaymentMade = "Pagamento do financiamento realizado para o seu veículo %{value}", + vehicleFinancePaidOff = "Parabéns, você quitou e agora é dono do seu veículo %{value}", + vehicleFinancePaymentFailed = "Falha no pagamento do financiamento para o seu veículo %{value}", + vehicleFinanceRepossessedSoon = "Precisa fazer um pagamento para o teu veículo %{value} ou ele será retomado em breve", + vehicleFinanceRepossessed = "Devido à falta de pagamento, o teu veículo foi retomado com a placa %{value}", + dealershipNotEnoughFunds = "A concessionária não tem fundos suficientes", + dealershipVehiclesOrdered = "Veículo(s) foram pedidos com sucesso", + dealershipOrderCancelled = "Pedido cancelado com sucesso", + errorVehicleWithSpawnCodeExists = "Já existe um veículo com este código de spawn", + errorExitVehicle = "Precisa sair do veículo primeiro", + + -- NEW v1.1 + purchaseRequest = "Pedido de compra", + sendRequest = "Enviar pedido", + dealer = "Comerciante", + financed = "Financiado", + signHere = "Assinar aqui", + signFirstError = "Por favor, assine primeiro", + denyRequest = "Recusar pedido", + playerTooManyFinancedVehicles = "O jogador tem demasiados veículos financiados", + employeePermissionsError = "Não tem as permissões necessárias para os empregados", + managerRole = "Diretor", + supervisorRole = "Supervisor", + salesRole = "Vendas", + ownerRole = "Proprietário", + employmentRequest = "Pedido de emprego", + accept = "Aceitar", + jobOfferDescription = "Ofereceram-lhe um emprego no concessionário \"%{value}\". Gostarias de aceitar?", + pending = "Pendente", + employeeHiredMsg = "O pedido de aluguer do concessionário foi aceite!", + employeeRejectedMsg = "O pedido de aluguer do concessionário foi rejeitado", + sellVehicle = "Vender veículo", + vehicleTerms = "Condições do veículo", + financePayments = "Pagamentos financeiros", + commission = "Comissão", + role = "Papel", + firedNotification = "Foi despedido do concessionário \"%{value}\"", + dealershipTooFarAway = "Não está perto de nenhum concessionário", + restoreDisplayVehicles = "Salão de exposição Restore", + customer = "Cliente", + lessThanAMin = "Menos de um minuto", + mins = "mínimo(s)", + notInVehicle = "Não está sentado num veículo", + notYourVehicleError = "Este veículo não lhe pertence", + vehicleFinancedError = "Não pode vender este veículo porque ainda tem prestações de financiamento", + dealershipDoesntSellVehicle = "Este concessionário não pode comprar este veículo", + dealershipWantsYourVehicle = "Parabéns! Este concessionário gostaria de comprar o seu veículo.", + purchasePrice = "Preço de oferta: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/sv.lua b/resources/[carscripts]/jg-dealerships/locales/sv.lua new file mode 100644 index 000000000..d44c47ebb --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/sv.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['sv'] = { + -- UI + vehicle = "Fordon", + vehicles = "Fordon", + dealership = "Bilfirma", + dealerships = "Bilfirmor", + vehiclesCount = "Fordon", + dealersCount = "Bilfirmor", + accountBalance = "Konto Saldo", + bank = "Bankkonto", + cash = "Kontant", + amount = "Summa", + societyFund = "Företagskonto", + paymentSource = "Betalningsmetod", + purchase = "Köp", + personalPurchase = "Personligtköp", + societyPurchase = "Företagsköp", + purchaseType = "Köp typ", + deposit = "Sätt in", + withdraw = "Ta ut", + all = "Alla", + yes = "Ja", + no = "Nej", + add = "Lägg till", + edit = "Ändra", + id = "ID", + created = "Skapad", + type = "Typ", + name = "Namn", + owner = "Ägare", + bankBalance = "Banksaldo", + status = "Status", + back = "Tillbaka", + previous = "Förgående", + next = "Nästa", + admin = "Admin", + vehiclesAdmin = "Fordons Admin", + dealershipsAdmin = "Firma Admin", + search = "Sök", + noDealershipsFound = "Inga firmor hittades", + noVehicles = "Inga fordon hittades", + page = "Sida", + of = "av", + every = "varje", + show = "Visa", + active = "Aktiv", + activeFinance = "Aktiv Delbetalning", + failed = "Betalnings misslyckades", + removed = "Borttagen", + setOwner = "Sätt ägare", + manage = "Ändra", + deleteData = "Tabort Data", + deleteVehicle = "Tabort Fordon", + delete = "Tabort", + deleteConfirmation = "Är du säker?", + deleteConfirmationDanger = "Är du säker? Denna är oreversebalt.", + setDealershipOwner = "Sätt firma ägare", + overwriteDealerPrices = "Överskriv firma priser", + nearbyPlayers = "Närliggande spelare", + noPlayersNearby = "Inga spelare i närheten", + selectPlayer = "Välj spelare", + required = "Obligatorisk", + forExample = "För exempel", + spawnCode = "Spawnnamn", + brand = "Märke", + model = "Modell", + category = "Kategori", + price = "Pris", + import = "Import", + importing = "Importerar", + importBehaviour = "Importera behaviour", + importVehicles = "Importera Fordon", + importFrom = "Importera från", + dashboard = "Översikt", + displayVehicle = "Uppvisa Fordon", + displayVehicles = "Uppvisade Fordon", + orders = "Beställningar", + sales = "Försäljningar", + vehiclesOnDisplay = "Uppvisade Fordon", + employees = "Anställda", + settings = "Inställningar", + switchVehicle = "Byt Fordon", + remove = "Ta bort", + noDisplayVehicles = "Inga uppvisade fordon", + selectVehicle = "Välj fordon", + colour = "Färg", + placeVehicle = "Placera Fordon", + orderVehicle = "Beställ Fordon", + cancelOrder = "Avbryt Order", + delivery = "Leverans", + delivered = "Levererad", + noOrders = "Inga beställningar hittades", + quantity = "Mängd", + totalCost = "Totala kostnad", + totalSales = "Totala försäljningar", + noSales = "Inga försäljningar hittades", + paid = "Betalad", + owed = "Delbetalad", + dealershipName = "Bilfirma Namn", + save = "Spara Ändringar", + cancel = "Avbryt", + notEnoughMoney = "Du har inte råd", + placeOrder = "Placera Beställning", + purchaseCost = "Kostnad", + salePrice = "Försäljnings Pris", + inStock = "I lager", + outOfStock = "Slut i lager", + placeVehiclePrompt = "Tryck %{value} för att placera fordon. Du kan finjustera efteråt!", + remaining = "Kvartstående", + prePurchaseRepoWarning = "Om du inte hinner betala fordonet i tid så kommer det att återtas.", + repossessionWarning = "Din senaste betalning misslyckades - Ditt fordon kommer att återhämtas om du inte gör en betalning nu.", + recurringPayment = "Återkommande Betalning", + remainingBalance = "Kvarstående Balans", + remainingPayments = "Kvartsående Betalningar", + paymentTakenEvery = "Betalning hämtas varje", + hours = "timmar", + seconds = "sekunder", + nextPayment = "Nästa betalning", + makePayment = "Utför betalning", + vehicleRepossessed = "Ditt fordon kommer återtas", + payInFull = "Betala av helt", + earlyPaymentConfirmation = "Är du säker på att du vill göra en förbetalning på", + financedVehicles = "Delbetalade Fordon", + noFinancedVehicles = "Du har inga delbetalde fordon", + financeBreakdown = "Finans Översikt", + initialPayment = "Första betalning", + payments = "Betalningar", + length = "Längd", + interest = "Ränta", + totalPayable = "Totals Betalbart", + leaveShowroom = "Lämna bilkatalog", + handling = "Handling", + topSpeed = "Topp Hastighet", + power = "Kraft", + torque = "Vridmoment", + brake = "Broms", + financing = "Delbetalning", + financingAvailable = "Delbetalning Tillgängligt", + paymentsOf = "betalningar på", + clear = "Rensa", + testDrive = "Testkör", + allCategories = "Alla Kategorier", + sortByName = "Sortera: Namn", + sortByAvailability = "Sortera: Lager", + sortByCheapest = "Sortera: Billigast", + sortByMostExpensive = "Sortera: Dyrast", + sortByNewest = "Sortera: Nyast", + purchaseVehicle = "Köp Fordon", + purchaseFor = "Köp för", + selectSociety = "Välj företag", + financeOverPayments = "Delbetala över %{value} betalningar", + payToday = "Betala idag", + financeThen = "Sedan", + seeFullBreakdown = "Se hela översikten", + testDriveExit = "Du kan kliva ut ur fordonet när som för att avbryta testkörningen", + + -- NOTIFICATIONS + purchaseSuccess = "Grattis på ditt fordon!", + depositSuccess = "Instättning lyckades", + withdrawSuccess = "Uttag lyckades", + errorNotEnoughMoney = "Du har inte råd", + errorVehicleOutOfStock = "Detta fordon är slut i lager", + errorCannotAffordVehicle = "Du har inte råd med detta fordon", + vehicleFinancePaymentMade = "Betalning gjordes för ditt fordon %{value}", + vehicleFinancePaidOff = "Grattis, du har betalat av och äger nu %{value}", + vehicleFinancePaymentFailed = "Delbetalning misslyckades för %{value}", + vehicleFinanceRepossessedSoon = "Du måste göra en betalning för %{value} annars kommer ditt fordon återtas inom kort", + vehicleFinanceRepossessed = "Pågrund av en misslyckad betalning, så har ditt fordon med regplåt %{value} återhämtats.", + dealershipNotEnoughFunds = "Firman har inte råd", + dealershipVehiclesOrdered = "Fordon(en) har beställts", + dealershipOrderCancelled = "Beställning avbröts", + errorVehicleWithSpawnCodeExists = "Ett fordon med detta spawnnamn finns redan", + errorExitVehicle = "Du måste lämna ditt fordon först", + + -- NEW v1.1 + purchaseRequest = "Betalnings förfrågan", + sendRequest = "Skicka förfrågan", + dealer = "Bilfirma", + financed = "Delbetalad", + signHere = "Singnera här", + signFirstError = "Vänligen signera först", + denyRequest = "Neka Förfrågan", + playerTooManyFinancedVehicles = "Spelaren har för många delbetalade fordon", + employeePermissionsError = "Du har inte rätt behörigheter för att utföra detta", + managerRole = "Chef", + supervisorRole = "Handledare", + salesRole = "Försäljare", + ownerRole = "Ägare", + employmentRequest = "Anställnings Förfrågan", + accept = "Acceptera", + jobOfferDescription = "Du har blivit erbjuden ett jobb på \"%{value}\". Vill du godkänna detta jobb?", + pending = "Väntar", + employeeHiredMsg = "Anställnings förfrågan accepterades!", + employeeRejectedMsg = "Anställnings förfrågan nekades", + sellVehicle = "Sälj Fordon", + vehicleTerms = "Fordons vilkor", + financePayments = "Mängd Delbetalningar", + commission = "Provision", + role = "Roll", + firedNotification = "Du har blivit avskedad från \"%{value}\"", + dealershipTooFarAway = "Du är inte i närheten av en bilfirma", + restoreDisplayVehicles = "Återställ Uppvisade Fordon", + customer = "Kund", + lessThanAMin = "Mindre än en minut", + mins = "minut(er)", + notInVehicle = "Du sitter inte i ett fordon", + notYourVehicleError = "Detta fordon tillhör inte dig", + vehicleFinancedError = "Du kan inte sälja detta fordon för det är inte avbetalat än", + dealershipDoesntSellVehicle = "Bilfirman kan inte köpa detta fordon", + dealershipWantsYourVehicle = "Grattis! Bilfirman hade velat köpa ditt fordon!.", + purchasePrice = "Erbjudet pris: ", + + spawnCodeInvalid = "Spawnnamn Ogiltigt", + salesRep = "Försäljare", + directSaleAccepted = "Försäljningen accepterades, du har fått din provision!", + directSaleRejected = "Försäljningen misslyckades" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/tr.lua b/resources/[carscripts]/jg-dealerships/locales/tr.lua new file mode 100644 index 000000000..1c676a2e7 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/tr.lua @@ -0,0 +1,219 @@ +Locales = Locales or {} + +Locales['tr'] = { + -- UI + vehicle = "Araç", + vehicles = "Araçlar", + dealership = "Galeri", + dealerships = "Galeriler", + vehiclesCount = "Araçlar", + dealersCount = "Galeriler", + accountBalance = "Hesap Bakiyesi", + bank = "Banka", + cash = "Nakit", + amount = "Miktar", + societyFund = "Toplum Fonu", + paymentSource = "Ödeme Türü", + purchase = "Satın al", + personalPurchase = "Kişisel satın al", + societyPurchase = "Toplum satın al", + purchaseType = "Satın Alma Türü", + deposit = "Depozito", + withdraw = "Geri çek", + all = "Hepsi", + yes = "Evet", + no = "Hayır", + add = "Ekle", + edit = "Düzenle", + id = "ID", + created = "Oluşturuldu", + type = "Tip", + name = "İsim", + owner = "Mal sahibi", + bankBalance = "Banka hesap bakiyesi", + status = "Durum", + back = "Geri", + previous = "Önceki", + next = "Sonraki", + admin = "Yönetici", + vehiclesAdmin = "Araç Yöneticisi", + dealershipsAdmin = "Galeri Yöneticisi", + search = "Ara", + noDealershipsFound = "Galeri bulunamadı", + noVehicles = "Araç bulunamadı", + page = "Sayfa", + of = "ile ilgili", + every = "her bir", + show = "Göster", + active = "Aktif", + activeFinance = "Kredi Aktif", + failed = "Ödeme başarısız", + removed = "Kaldırıldı", + setOwner = "Sahibini Ayarla", + manage = "Ayarlar", + deleteData = "Verileri Sil", + deleteVehicle = "Aracı Sil", + delete = "Sil", + deleteConfirmation = "Emin misin?", + deleteConfirmationDanger = "Emin misin? Bu işlem geri alınamaz.", + setDealershipOwner = "Galeri Sahibini Ayarla", + overwriteDealerPrices = "Galeri fiyatlarının üzerine yaz", + nearbyPlayers = "Yakındaki oyuncular", + noPlayersNearby = "Yakınlarda oyuncu yok", + selectPlayer = "Kişi seç", + required = "Gerekli", + forExample = "Örneğin", + spawnCode = "Işınlama Kodu", + brand = "Marka", + model = "Model", + category = "Katagori", + price = "Fiyat", + import = "İçe aktar", + importing = "İthalat", + importBehaviour = "Davranışı İçe Aktar", + importVehicles = "Araçları içe aktarın", + importFrom = "için aktar", + dashboard = "Gösterge Paneli", + displayVehicle = "Araç Görüntüle", + displayVehicles = "Araç Görüntüle", + orders = "Emirler", + sales = "Satış", + vehiclesOnDisplay = "Sergilenen araçlar", + employees = "Çalışanlar", + settings = "Ayarlar", + switchVehicle = "Araç Değiştir", + remove = "Kaldır", + noDisplayVehicles = "Gösterilen araç yok", + selectVehicle = "Araç seçin", + colour = "Renk", + placeVehicle = "Araç Yerleştir", + orderVehicle = "Araç Siparişi", + cancelOrder = "Siparişi iptal et", + delivery = "Teslimat", + delivered = "Teslim edilenler", + noOrders = "Sipariş Bulunamadı", + quantity = "Miktar", + totalCost = "Toplam tutar", + totalSales = "Total sales", + noSales = "Satış bulunamadı", + paid = "Nakit Ödeme", + owed = "Kredi Çek", + dealershipName = "Galeri Adı", + save = "Değişiklikleri Kaydet", + cancel = "Vazgeç", + notEnoughMoney = "Yetersiz para", + placeOrder = "Sipariş Ver", + purchaseCost = "Satın alma maliyeti", + salePrice = "Satış ücreti", + inStock = "Stokta var", + outOfStock = "Stoklar tükendi", + placeVehiclePrompt = "Aracı yerleştirmek için %{value} tuşuna basın. Sonrasında daha ince ayarlamalar yapabilirsiniz!", + remaining = "Geriye kalan", + prePurchaseRepoWarning = "Kredi ödemelerinizi takip edemezseniz, aracınıza el konulacaktır..", + repossessionWarning = "Son ödemeniz başarısız oldu - şimdi ödeme yapmazsanız aracınıza el konulacak.", + recurringPayment = "Yinelenen ödeme", + remainingBalance = "Kalan bakiye", + remainingPayments = "Kalan ödemeler", + paymentTakenEvery = "Ödeme alındı", + hours = "Saat", + seconds = "Saniye", + nextPayment = "Sonraki ödeme", + makePayment = "Ödeme yap", + vehicleRepossessed = "Araç geri alınacaktır", + payInFull = "Hepsini öde", + earlyPaymentConfirmation = "Erken ödeme yapmak istediğinizden emin misiniz?", + financedVehicles = "Kredili Araçlar", + noFinancedVehicles = "Aktif Krediye sahip aracınız yok", + financeBreakdown = "Kredi Dağılımı", + initialPayment = "İlk ödeme", + payments = "Ödemeler", + length = "Uzunluk", + interest = "Faiz", + totalPayable = "Toplam Ödenecek Tutar", + leaveShowroom = "Showroom'dan Ayrıl", + handling = "kullanım", + topSpeed = "En yüksek hız", + power = "Güç", + torque = "Tork", + brake = "Fren", + financing = "Finansman", + financingAvailable = "Finansman Mevcut", + paymentsOf = "ödemeleri", + clear = "Temizle", + testDrive = "Test Sürüşü", + allCategories = "Tüm Kategoriler", + sortByName = "İsme göre sırala", + sortByAvailability = "satışa göre sırala", + sortByCheapest = "En ucuza göre sırala", + sortByMostExpensive = "En pahalıya göre sırala", + sortByNewest = "Yeniye göre sırala", + purchaseVehicle = "Araç Satın Al", + purchaseFor = "için satın al", + selectSociety = "Bir topluluk seçin", + financeOverPayments = "%{value} ödeme üzerinden finansman", + payToday = "Bugün öde", + financeThen = "Daha sonra", + seeFullBreakdown = "Tam dökümü görün", + testDriveExit = "Test sürüşünü erken sonlandırmak için istediğiniz zaman aracınızdan çıkabilirsiniz..", + + -- NOTIFICATIONS + purchaseSuccess = "Satın aldığınız için teşekkürler!", + depositSuccess = "Para yatırma işlemi başarılı", + withdrawSuccess = "Para çekme başarılı", + errorNotEnoughMoney = "Yeterli paran yok", + errorVehicleOutOfStock = "Bu araç stokta yok", + errorCannotAffordVehicle = "Bu araca paranız yetmez", + vehicleFinancePaymentMade = "Aracınız için yapılan kredi ödemesi %{value}", + vehicleFinancePaidOff = "Tebrikler, parasını ödediniz ve şimdi aracınızın sahibi oldunuz %{value}", + vehicleFinancePaymentFailed = "%{value} aracınız için kredi ödemesi başarısız oldu", + vehicleFinanceRepossessedSoon = "%{value} aracınız için kredi ödemesi yapmanız gerekiyor, aksi takdirde aracınıza yakında el konulacak", + vehicleFinanceRepossessed = "Ödeme yapılmaması nedeniyle, %{value} plakalı aracınıza el konuldu.", + dealershipNotEnoughFunds = "Bayinin yeterli fonu yok", + dealershipVehiclesOrdered = "Araçlar başarıyla sipariş edildi", + dealershipOrderCancelled = "Sipariş başarıyla iptal edildi", + errorVehicleWithSpawnCodeExists = "Bu ışınlanma koduna sahip bir araç zaten var", + errorExitVehicle = "Önce aracınızdan çıkmanız gerekiyor", + + -- NEW v1.1 + purchaseRequest = "Satın Alma Talebi", + sendRequest = "İstek Gönder", + dealer = "Bayi", + financed = "Finanse Edildi", + signHere = "Burayı imzalayın", + signFirstError = "Lütfen önce imzalayın", + denyRequest = "Talebi Reddet", + playerTooManyFinancedVehicles = "Oyuncunun çok fazla finanse edilmiş aracı var", + employeePermissionsError = "Gerekli çalışan izinlerine sahip değilsiniz", + managerRole = "Müdür", + supervisorRole = "Süpervizör", + salesRole = "Satış", + ownerRole = "Sahibi", + employmentRequest = "İstihdam Talebi", + accept = "Kabul et", + jobOfferDescription = "Size \"%{değer}\" bayisinden bir iş teklifi geldi. Kabul etmek ister misiniz?", + pending = "Beklemede", + employeeHiredMsg = "Bayilik kiralama talebi kabul edildi!", + employeeRejectedMsg = "Bayilik kiralama talebi reddedildi", + sellVehicle = "Araç Satışı", + vehicleTerms = "Araç şartları", + financePayments = "Finans Ödemeleri", + commission = "Komisyon", + role = "Rol", + firedNotification = "\"%{değer}\" bayiliğinden kovuldunuz", + dealershipTooFarAway = "Hiçbir bayiye yakın değilsiniz", + restoreDisplayVehicles = "Gösteri Merkezi", + customer = "Müşteri", + lessThanAMin = "Bir dakikadan az", + mins = "dakika(lar)", + notInVehicle = "Bir aracın içinde oturmuyorsunuz", + notYourVehicleError = "Bu araç size ait değil", + vehicleFinancedError = "Bu aracı satamazsınız çünkü kalan finansman ödemeleri var", + dealershipDoesntSellVehicle = "Bu bayi bu aracı satın alamaz", + dealershipWantsYourVehicle = "Tebrikler! Bu bayi aracınızı satın almak istiyor.", + purchasePrice = "Teklif edilen fiyat: ", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/locales/vi.lua b/resources/[carscripts]/jg-dealerships/locales/vi.lua new file mode 100644 index 000000000..c0dc95ab6 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/locales/vi.lua @@ -0,0 +1,144 @@ +Locales = Locales or {} + +Locales['vi'] = { + yes = "Có", + no = "Không", + garage = "Bãi đậu xe", + jobGarage = "Bãi đậu xe công việc", + gangGarage = "Gang Garage", + player = "Người chơi", + impound = "Bị giam", + inGarage = "Trong gara", + notInGarage = "Bên ngoài", + car = "Xe", + air = "Máy bay", + sea = "Thuyền", + fuel = "Xăng", + engine = "Động cơ", + body = "Thân vỏ", + day = "ngày", + days = "ngày", + hour = "giờ", + hours = "giờ", + + -- User Interface + noVehicles = "Không có xe nào trong gara này", + vehicles = "Xe", + vehiclePlate = "Biển số xe", + vehicleNotInGarage = "Xe không ở trong gara", + vehicleTakeOut = "Lấy xe", + vehicleReturnAndTakeOut = "Thanh toán và lấy xe", + vehicleReturnToOwnersGarage = "Gửi về garage", + transferToGarageOrPlayer = "Chuyển xe về garage hoặc người chơi khác", + transferToGarage = "Chuyển xe đến Garage", + transferToPlayer = "Chuyển xe đến người chơi", + vehicleTransfer = "Chuyển xe", + noAvailableGarages = "Không có gara", + currentGarage = "Gara hiện tại", + noPlayersOnline = "Không có người chơi online", + createPrivateGarage = "Tạo gara cá nhân", + pgAlertHeadsUp = "Đứng lên!", + pgAlertText = "Gara sẽ được tạo ra và xe được lấy ra sẽ xuất hiện ngay vị trí mà bạn đang đứng.", + garageName = "Tên Gara", + impoundInformation = "Thông tin giam xe", + impoundedBy = "Giam bởi", + impoundedReason = "Lý do", + impoundPlayerCanCollect = "Bạn có thể lấy xe của mình từ bãi giam xe.", + impoundCollectionContact = "Vui lòng liên hệ %{value} hoặc Police để chuộc lại xe của bạn.", + impoundNoVehicles = "Bạn không có Xe nào bị giam giữ", + impoundAvailable = "Được phép lấy vào lúc ", + impoundRetrievableByOwner = "Chủ xe có thể tự lấy xe ra", + impoundNoReason = "Lý do trống", + impoundVehicle = "Tạm giữ xe", + impoundReasonField = "Lý do", + impoundTime = "Thời gian giam", + impoundAvailableImmediately = "Không có", + impoundCost = "Giá", + changeVehiclePlate = "Đổi biển số xe", + newPlate = "Biển số mới", + search = "Tìm kiếm theo tên hoặc biển số xe", + + --NEW-- + noPrivateGarages = "Không có nhà để xe riêng", + editPrivateGarage = "Chỉnh sửa nhà để xe riêng", + owners = "Chủ sở hữu", + location = "Vị trí", + next = "Kế tiếp", + previous = "Trở về", + page = "Trang", + of = "của", + show = "Hiển thị", + save = "Lưu", + edit = "Sửa", + delete = "Xoá", + garageDeleteConfirm = "Bạn có chắc chắn muốn xóa gara này không?", + privGarageSearch = "Tìm bằng tên", + garageUpdatedSuccess = "Garage đã cập nhật thành công!", + getCurrentCoords = "Lấy toạ độ", + identifier = "CMND", + name = "Tên", + noPlayers = "Không có người chơi nào được thêm vào", + addPlayer = "Thêm người chơi", + loadingVehicle = "Đang tải dữ liệu xe...", + + -- Notifications + insertVehicleTypeError = "Bạn chỉ có thể để %{value} vào trong gara này!", + insertVehiclePublicError = "Bạn không thể cất xe tổ chức vào trong gara công cộng!", + vehicleParkedSuccess = "Cất xe vào gara thành công", + vehicleNotOwnedError = "Bạn không phải là chủ sở hữu của chiếc xe này!", + vehicleNotOwnedByPlayerError = "Xe này không thuộc sở hữu của người chơi nào!", + notEnoughMoneyError = "Bạn không đủ tiền trong ngân hàng!", + vehicleNotYoursError = "Xe này không thuộc về bạn!", + notJobOrGangVehicle = "Đây không phải là xe của %{value}", + invalidGangError = "Tên gang không hợp lệ!", + invalidJobError = "Tên job không hợp lệ!", + notInsideVehicleError = "Bạn không ngồi trên xe", + vehicleAddedToGangGarageSuccess = "Xe này đã được thêm vào %{value}!", + vehicleAddedToJobGarageSuccess = "Xe này đã được thêm vào %{value}!", + moveCloserToVehicleError = "Bạn cần di chuyển đến gần xe hơn!", + noVehiclesNearbyError = "Không có chiếc xe nào gần bạn!", + commandPermissionsError = "Bạn không thể sử dụng lệnh này!", + actionNotAllowedError = "Bạn không được phép làm điều này!", + garageNameExistsError = "Tên gara này đã tồn tại!", + vehiclePlateExistsError = "Biển số xe này đã tồn tại", + playerNotOnlineError = "Người chơi này không online", + vehicleTransferSuccess = "Xe được chuyển đến %{value}", + vehicleTransferSuccessGeneral = "Xe của bạn đã được chuyển thành công!", + vehicleReceived = "Bạn đã nhận được một chiếc xe với biển số %{value}", + vehicleImpoundSuccess = "Tạm giữ xe thành công!", + vehicleImpoundRemoveSuccess = "Xe đã được chuộc thành công", + vehicleImpoundReturnedToOwnerSuccess = "Xe này đã được chuyển về gara chủ sở hữu", + garageCreatedSuccess = "Tạo gara thành công!", + vehiclePlateUpdateSuccess = "Biển số xe được đổi thành: %{value}", + vehicleDeletedSuccess = "Xe này đã được xoá khỏi database %{value}", + playerIsDead = "Bạn không thể làm điều này trong khi bạn đã chết", + + -- Commands + cmdSetGangVehicle = "Thêm Xe hiện tại vào một Gang", + cmdRemoveGangVehicle = "Đặt xe gang thành xe cá nhân", + cmdSetJobVehicle = "Thêm xe hiện tại vào một nghề nào đó", + cmdRemoveJobVehicle = "Đặt xe nghề thành xe cá nhân", + cmdArgGangName = "Tên Gang", + cmdArgJobName = "Tên Job", + cmgArgMinGangRank = "Rank tối thiểu", + cmgArgMinJobRank = "Rank tối thiểu", + cmdArgPlayerId = "ID của chủ sở hữu mới", + cmdImpoundVehicle = "Giam xe", + cmdChangePlate = "Đổi biển số (Admin only)", + cmdDeleteVeh = "Xoá xe khỏi dữ liệu máy chủ VĨNH VIỄN (Admin only)", + cmdCreatePrivGarage = "Tạo garage riêng cho người chơi", + + vehicleSetup = "Cài đặt phương tiện", + extras = "Extras", + extra = "Extra", + liveries = "Liveries", + livery = "Livery", + noLiveries = "Không có liveries này", + noExtras = "Không có extras này", + none = "Không có", + + spawnCodeInvalid = "Spawn code invalid", + salesRep = "Sales Rep", + directSaleAccepted = "Direct sale request accepted! Your commission has been paid.", + directSaleRejected = "Direct sale request rejected" +} diff --git a/resources/[carscripts]/jg-dealerships/server/sv-admin.lua b/resources/[carscripts]/jg-dealerships/server/sv-admin.lua new file mode 100644 index 000000000..9c50a23b0 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-admin.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-direct-sales.lua b/resources/[carscripts]/jg-dealerships/server/sv-direct-sales.lua new file mode 100644 index 000000000..1756908ee Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-direct-sales.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-display-vehicles.lua b/resources/[carscripts]/jg-dealerships/server/sv-display-vehicles.lua new file mode 100644 index 000000000..51fe902b1 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-display-vehicles.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-employees.lua b/resources/[carscripts]/jg-dealerships/server/sv-employees.lua new file mode 100644 index 000000000..b37c8ea04 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-employees.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-finance.lua b/resources/[carscripts]/jg-dealerships/server/sv-finance.lua new file mode 100644 index 000000000..821888822 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-finance.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-initsql.lua b/resources/[carscripts]/jg-dealerships/server/sv-initsql.lua new file mode 100644 index 000000000..b1a220b66 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-initsql.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-locations.lua b/resources/[carscripts]/jg-dealerships/server/sv-locations.lua new file mode 100644 index 000000000..416ef942e Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-locations.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-main.lua b/resources/[carscripts]/jg-dealerships/server/sv-main.lua new file mode 100644 index 000000000..b2ca77093 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-main.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-management.lua b/resources/[carscripts]/jg-dealerships/server/sv-management.lua new file mode 100644 index 000000000..2867096b8 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-management.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-purchase.lua b/resources/[carscripts]/jg-dealerships/server/sv-purchase.lua new file mode 100644 index 000000000..9eb69b5f1 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/server/sv-purchase.lua @@ -0,0 +1,182 @@ +---@param dealershipId string +---@param coords vector4 +---@param purchaseType "personal"|"society" +---@param society string +---@param societyType "job"|"gang" +---@param model string +---@param colour string +---@param paymentMethod "bank"|"cash" +---@param financed boolean +---@param directSaleUuid? string +---@return boolean, integer?, integer?, string?, number? +local function purchaseVehicle(src, dealershipId, coords, purchaseType, society, societyType, model, colour, paymentMethod, financed, directSaleUuid) + local dealership = Config.DealershipLocations[dealershipId] + local pendingSale, sellerPlayer, sellerPlayerName = nil, nil, nil + + -- If directSaleUuid was provided, fetch info + if directSaleUuid then + pendingSale = PendingDirectSales[directSaleUuid] + if not pendingSale then return false end + + -- Is the intended recipient accepting? + if src ~= pendingSale.playerId then return false end + + if pendingSale.dealerPlayerId then + sellerPlayer = Framework.Server.GetPlayerIdentifier(pendingSale.dealerPlayerId) + sellerPlayerName = Framework.Server.GetPlayerInfo(pendingSale.dealerPlayerId) + sellerPlayerName = sellerPlayerName and sellerPlayerName.name or nil + end + + financed = pendingSale.finance -- In case this was somehow changed by in transit by manually firing the purchase-vehicle event + end + + -- Financed but the dealership location doesn't allow that? + if not dealership.enableFinance and financed then return false end + + -- Check if valid payment method + local isValidPaymentMethod = lib.table.contains(dealership.paymentOptions or {"cash", "bank"}, paymentMethod) + if not isValidPaymentMethod and paymentMethod ~= "societyFund" then + Framework.Server.Notify(src, "INVALID_PAYMENT_METHOD", "error") + DebugPrint(("%s attempted to purchase a vehicle with an invalid payment method: %s"):format(tostring(src), paymentMethod), "warning") + return false + end + + local plate = Framework.Server.VehicleGeneratePlate(Config.PlateFormat, true) + if not plate then + Framework.Server.Notify(src, "COULD_NOT_GENERATE_PLATE", "error") + return false + end + + -- Get vehicle data + local vehicleData = MySQL.single.await("SELECT * FROM dealership_stock WHERE vehicle = ? AND dealership = ?", {model, dealershipId}) + if not vehicleData then + DebugPrint("Vehicle not found in dealership(" .. dealershipId .. ") stock: " .. model, "warning") + return false + end + + -- Check stock level + local vehicleStock = vehicleData.stock + if dealership.type == "owned" and vehicleStock < 1 then + Framework.Server.Notify(src, Locale.errorVehicleOutOfStock, "error") + return false + end + + local player = Framework.Server.GetPlayerIdentifier(src) + local financeData = nil + local amountToPay = Round(vehicleData.price) + local accountBalance = Framework.Server.GetPlayerBalance(src, paymentMethod) + local paymentType, paid, owed = "full", amountToPay, 0 + local downPayment, noOfPayments = Config.FinanceDownPayment, Config.FinancePayments + + if purchaseType == "society" and paymentMethod == "societyFund" then + accountBalance = Framework.Server.GetSocietyBalance(society, societyType) + end + + if financed and purchaseType == "personal" then + amountToPay = Round(vehicleData.price * (1 + Config.FinanceInterest) * downPayment) -- down payment + + if pendingSale then + downPayment, noOfPayments = pendingSale.downPayment, pendingSale.noOfPayments + amountToPay = Round(vehicleData.price * (1 + Config.FinanceInterest) * downPayment) + end + + financeData = { + total = Round(vehicleData.price * (1 + Config.FinanceInterest)), + paid = amountToPay, + recurring_payment = Round((vehicleData.price * (1 + Config.FinanceInterest) * (1 - downPayment)) / noOfPayments), + payments_complete = 0, + total_payments = noOfPayments, + payment_interval = Config.FinancePaymentInterval, + payment_failed = false, + seconds_to_next_payment = Config.FinancePaymentInterval * 3600, + seconds_to_repo = 0, + dealership_id = dealershipId, + vehicle = model + } + + local vehiclesOnFinance = MySQL.scalar.await("SELECT COUNT(*) as total FROM " .. Framework.VehiclesTable .. " WHERE financed = 1 AND " .. Framework.PlayerId .. " = ?", {player}) + + if vehiclesOnFinance >= (Config.MaxFinancedVehiclesPerPlayer or 999999) then + Framework.Server.Notify(src, "TOO_MANY_FINANCED_VEHICLES", "error") + return false + end + + paymentType = "finance" + owed = financeData.total - financeData.paid + end + + if amountToPay > accountBalance then + Framework.Server.Notify(src, Locale.errorCannotAffordVehicle, "error") + return false + end + + -- Pre check func in config-sv.lua + if not PurchaseVehiclePreCheck(src, dealershipId, plate, model, purchaseType, amountToPay, paymentMethod, society, societyType, financed, noOfPayments, downPayment, (not not directSaleUuid), pendingSale?.dealerPlayerId) then + DebugPrint(("PurchaseVehiclePreCheck failed for player %s"):format(tostring(src)), "debug") + return false + end + + -- Remove money + if purchaseType == "society" and paymentMethod == "societyFund" then + Framework.Server.RemoveFromSocietyFund(society, societyType, amountToPay) + else + Framework.Server.PlayerRemoveMoney(src, amountToPay, paymentMethod) + end + + if dealership.type == "owned" then + MySQL.update.await("UPDATE dealership_stock SET stock = stock - 1 WHERE vehicle = ? AND dealership = ?", {model, dealershipId}) + MySQL.update.await("UPDATE dealership_data SET balance = balance + ? WHERE name = ?", {amountToPay, dealershipId}) + UpdateDealershipShowroomCache(dealershipId) + end + + MySQL.insert.await("INSERT INTO dealership_sales (dealership, vehicle, plate, player, seller, purchase_type, paid, owed) VALUES(?, ?, ?, ?, ?, ?, ?, ?)", {dealershipId, model, plate, player, sellerPlayer, paymentType, paid, owed}) + + -- Save vehicle to garage + local vehicleId = Framework.Server.SaveVehicleToGarage(src, purchaseType, society, societyType, model, plate, financed, financeData) + + -- Spawn vehicle on server (if configured) + local netId = nil + + if Config.SpawnVehiclesWithServerSetter then + local warp = not Config.DoNotSpawnInsideVehicle + local properties = { + plate = plate, + colour = colour + } + + netId = SpawnVehicleServer(src, vehicleId or 0, model, plate, coords, warp, properties, "purchase") + if not netId or netId == 0 then + Framework.Server.Notify(src, "Could not spawn vehicle with Config.SpawnVehiclesWithServerSetter", "error") + DebugPrint("Could not spawn vehicle with Config.SpawnVehiclesWithServerSetter", "warning") + return false + end + end + + -- Send webhook + SendWebhook(src, Webhooks.Purchase, "New Vehicle Purchase", "success", { + { key = "Vehicle", value = model }, + { key = "Plate", value = plate }, + { key = "Financed", value = financed and "Yes" or "No" }, + { key = "Amount Paid", value = amountToPay }, + { key = "Payment method", value = paymentMethod }, + { key = "Dealership", value = dealershipId }, + { key = "Seller Name", value = sellerPlayerName or "-" } + }) + + Framework.Server.Notify(src, Locale.purchaseSuccess, "success") + + return true, netId, vehicleId, plate, amountToPay +end + +lib.callback.register("jg-dealerships:server:purchase-vehicle", function(...) + return purchaseVehicle(...) +end) + +RegisterNetEvent("jg-dealerships:server:update-purchased-vehicle-props", function(purchaseType, society, plate, props) + local src = source + local identifier = purchaseType == "society" and society or Framework.Server.GetPlayerIdentifier(src) + + MySQL.update.await("UPDATE " .. Framework.VehiclesTable .. " SET " .. Framework.VehProps .. " = ? WHERE plate = ? AND " .. Framework.PlayerId .. " = ?", { + json.encode(props), plate, identifier + }) +end) \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/server/sv-sell-vehicle.lua b/resources/[carscripts]/jg-dealerships/server/sv-sell-vehicle.lua new file mode 100644 index 000000000..0d887d678 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-sell-vehicle.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-showroom.lua b/resources/[carscripts]/jg-dealerships/server/sv-showroom.lua new file mode 100644 index 000000000..d951a0121 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-showroom.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-spawn.lua b/resources/[carscripts]/jg-dealerships/server/sv-spawn.lua new file mode 100644 index 000000000..2402aea71 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-spawn.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-test-drive.lua b/resources/[carscripts]/jg-dealerships/server/sv-test-drive.lua new file mode 100644 index 000000000..57500ea42 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-test-drive.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-version-check.lua b/resources/[carscripts]/jg-dealerships/server/sv-version-check.lua new file mode 100644 index 000000000..6d6a17c36 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/server/sv-version-check.lua differ diff --git a/resources/[carscripts]/jg-dealerships/server/sv-webhooks.lua b/resources/[carscripts]/jg-dealerships/server/sv-webhooks.lua new file mode 100644 index 000000000..09265d847 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/server/sv-webhooks.lua @@ -0,0 +1,68 @@ +-- +-- Discord Webhooks +-- + +Webhooks = {} +Webhooks.TestDrive = "" +Webhooks.Purchase = "" +Webhooks.Finance = "" +Webhooks.Dealership = "" +Webhooks.Admin = "" + +--[[ + EXAMPLE WEBHOOK CALL + + sendWebhook(src, Webhooks.Admin, "Webhook Title", "success", { + { key = "Data fields", value = "Data value" }, + { key = "Data fields 2", value = "Data value 2" } + }) +]]-- + +function SendWebhook(playerId, webhookUrl, title, type, data) + if not webhookUrl then return end + + local player = Framework.Server.GetPlayerInfo(playerId) + if not player then return false end + + local color = 0xff6700 + if type == "success" then color = 0x2ecc71 end + if type == "danger" then color = 0xe74c3c end + + local fields = { + { + name = "Player", + value = string.format("%s (id: %s)", player.name, tostring(playerId)), + inline = false + } + } + for _, row in pairs(data) do + fields[#fields + 1] = { + name = row.key, + value = tostring(row.value), + inline = true + } + end + + local body = { + username = "JG Dealerships Webhook", + avatar_url = "https://forum.cfx.re/user_avatar/forum.cfx.re/jgscripts/288/3621910_2.png", + content = "", + embeds = { + { + type = "rich", + title = title, + description = "", + color = color, + fields = fields + } + } + } + + PerformHttpRequest( + webhookUrl, + function(err, text, header) end, + "POST", + json.encode(body), + {["Content-Type"] = "application/json"} + ) +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/shared/main.lua b/resources/[carscripts]/jg-dealerships/shared/main.lua new file mode 100644 index 000000000..303370cc1 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/shared/main.lua @@ -0,0 +1,112 @@ +Globals = {} +Functions = {} +Locale = Locales[Config.Locale or "en"] + +exports("locale", function() return Locale end) +exports("config", function() return Config end) + +---@param text string +---@param debugtype? "warning"|"debug" +function DebugPrint(text, debugtype, ...) + if not Config.Debug then return end + + local prefix = "^2[DEBUG]^7" + if debugtype == "warning" then prefix = "^3[WARNING]^7" end + + local args = {...} + local output = "" + for i = 1, #args do + if type(args[i]) == "table" then + output = output .. json.encode(args[i]) + elseif type(args[i]) ~= "string" then + output = output .. tostring(args[i]) + else + output = output .. args[i] + end + + if i ~= #args then output = output .. " " end + end + + print(prefix, text, output) +end + +---@param vehicle integer +function JGDeleteVehicle(vehicle) + if not DoesEntityExist(vehicle) then return end + + if GetResourceState("AdvancedParking") == "started" then + exports["AdvancedParking"]:DeleteVehicle(vehicle, false) + else + DeleteEntity(vehicle) + end +end + +---@param vehicle integer +---@param plate string +function SetVehiclePlateText(vehicle, plate) + if GetResourceState("AdvancedParking") == "started" then + exports["AdvancedParking"]:UpdatePlate(vehicle, plate) + else + SetVehicleNumberPlateText(vehicle, plate) + end +end + +---@param model string | number +---@return number hash +function ConvertModelToHash(model) + return type(model) == "string" and joaat(model) or model --[[@as number]] +end + +---@param plate string +function IsValidGTAPlate(plate) + -- Check if the plate matches the pattern and is not longer than 8 characters + -- %w matches alphanumeric characters, %s matches space characters + -- The pattern checks for a string starting with 0 or more alphanumeric or space characters + if #plate <= 8 and plate:match("^[%w%s]*$") then return true end + return false +end + +---@param table table +function TableKeys(table) + local keys = {} + + for k, _ in pairs(table) do + keys[#keys+1] = k + end + + return keys +end + +-- Round a number to so-many decimal of places, +-- Which can be negative, e.g. -1 places rounds to 10's +---@param num integer +---@param dp? integer +---@return number +function Round(num, dp) + dp = dp or 0 + local mult = 10^(dp or 0) + return math.floor(num * mult + 0.5) / mult +end + +---@param list table +---@param item string|number +---@return boolean +function IsItemInList(list, item) + if #list == 0 then + return true + end + + for _, value in ipairs(list) do + if value == item then + return true + end + end + + return false +end + +---@param s string +---@return string +function Trim(s) + return (s:gsub("^%s*(.-)%s*$", "%1")) +end \ No newline at end of file diff --git a/resources/[carscripts]/jg-dealerships/vehicle_images/README.md b/resources/[carscripts]/jg-dealerships/vehicle_images/README.md new file mode 100644 index 000000000..081b58191 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/vehicle_images/README.md @@ -0,0 +1,6 @@ +This is where you can add custom vehicle thumbnails. But first: + +1. You must have this feature enabled in config.lua `Config.ShowVehicleImages = true` +2. All images must be a png and a small file size. Ideally a 16:9 aspect ratio too + +Learn more: https://docs.jgscripts.com/dealerships/vehicle-images diff --git a/resources/[carscripts]/jg-dealerships/web/dist/assets/index-90aa1eef.js b/resources/[carscripts]/jg-dealerships/web/dist/assets/index-90aa1eef.js new file mode 100644 index 000000000..309f1d322 --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/web/dist/assets/index-90aa1eef.js @@ -0,0 +1,77 @@ +var Hb=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var EL=Hb((pn,hn)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var jf=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Wb(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var Mg={exports:{}},pu={},$g={exports:{}},je={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vs=Symbol.for("react.element"),Ub=Symbol.for("react.portal"),Gb=Symbol.for("react.fragment"),qb=Symbol.for("react.strict_mode"),Kb=Symbol.for("react.profiler"),Zb=Symbol.for("react.provider"),Yb=Symbol.for("react.context"),Qb=Symbol.for("react.forward_ref"),Xb=Symbol.for("react.suspense"),Jb=Symbol.for("react.memo"),eE=Symbol.for("react.lazy"),Dm=Symbol.iterator;function tE(e){return e===null||typeof e!="object"?null:(e=Dm&&e[Dm]||e["@@iterator"],typeof e=="function"?e:null)}var Ig={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Fg=Object.assign,Dg={};function qo(e,t,n){this.props=e,this.context=t,this.refs=Dg,this.updater=n||Ig}qo.prototype.isReactComponent={};qo.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};qo.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ag(){}Ag.prototype=qo.prototype;function Bf(e,t,n){this.props=e,this.context=t,this.refs=Dg,this.updater=n||Ig}var zf=Bf.prototype=new Ag;zf.constructor=Bf;Fg(zf,qo.prototype);zf.isPureReactComponent=!0;var Am=Array.isArray,Lg=Object.prototype.hasOwnProperty,Vf={current:null},jg={key:!0,ref:!0,__self:!0,__source:!0};function Bg(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)Lg.call(t,r)&&!jg.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,_e=U[ke];if(0>>1;kei(ht,ne))ct<_e&&0>i(Ot,ht)?(U[ke]=Ot,U[ct]=ne,ke=ct):(U[ke]=ht,U[rt]=ne,ke=rt);else if(ct<_e&&0>i(Ot,ne))U[ke]=Ot,U[ct]=ne,ke=ct;else break e}}return re}function i(U,re){var ne=U.sortIndex-re.sortIndex;return ne!==0?ne:U.id-re.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var u=[],l=[],f=1,h=null,p=3,y=!1,C=!1,x=!1,N=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function b(U){for(var re=n(l);re!==null;){if(re.callback===null)r(l);else if(re.startTime<=U)r(l),re.sortIndex=re.expirationTime,t(u,re);else break;re=n(l)}}function T(U){if(x=!1,b(U),!C)if(n(u)!==null)C=!0,ge(R);else{var re=n(l);re!==null&&xe(T,re.startTime-U)}}function R(U,re){C=!1,x&&(x=!1,w(A),A=-1),y=!0;var ne=p;try{for(b(re),h=n(u);h!==null&&(!(h.expirationTime>re)||U&&!W());){var ke=h.callback;if(typeof ke=="function"){h.callback=null,p=h.priorityLevel;var _e=ke(h.expirationTime<=re);re=e.unstable_now(),typeof _e=="function"?h.callback=_e:h===n(u)&&r(u),b(re)}else r(u);h=n(u)}if(h!==null)var Je=!0;else{var rt=n(l);rt!==null&&xe(T,rt.startTime-re),Je=!1}return Je}finally{h=null,p=ne,y=!1}}var M=!1,F=null,A=-1,I=5,$=-1;function W(){return!(e.unstable_now()-$U||125ke?(U.sortIndex=ne,t(l,U),n(u)===null&&U===n(l)&&(x?(w(A),A=-1):x=!0,xe(T,ne-ke))):(U.sortIndex=_e,t(u,U),C||y||(C=!0,ge(R))),U},e.unstable_shouldYield=W,e.unstable_wrapCallback=function(U){var re=p;return function(){var ne=p;p=re;try{return U.apply(this,arguments)}finally{p=ne}}}})(Wg);Hg.exports=Wg;var fE=Hg.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ug=m,gn=fE;function q(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),vd=Object.prototype.hasOwnProperty,pE=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,jm={},Bm={};function hE(e){return vd.call(Bm,e)?!0:vd.call(jm,e)?!1:pE.test(e)?Bm[e]=!0:(jm[e]=!0,!1)}function mE(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function vE(e,t,n,r){if(t===null||typeof t>"u"||mE(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function en(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Lt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Lt[e]=new en(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Lt[t]=new en(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Lt[e]=new en(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Lt[e]=new en(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Lt[e]=new en(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Lt[e]=new en(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Lt[e]=new en(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Lt[e]=new en(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Lt[e]=new en(e,5,!1,e.toLowerCase(),null,!1,!1)});var Uf=/[\-:]([a-z])/g;function Gf(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Uf,Gf);Lt[t]=new en(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Uf,Gf);Lt[t]=new en(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Uf,Gf);Lt[t]=new en(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Lt[e]=new en(e,1,!1,e.toLowerCase(),null,!1,!1)});Lt.xlinkHref=new en("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Lt[e]=new en(e,1,!1,e.toLowerCase(),null,!0,!0)});function qf(e,t,n,r){var i=Lt.hasOwnProperty(t)?Lt[t]:null;(i!==null?i.type!==0:r||!(2s||i[a]!==o[s]){var u=` +`+i[a].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=a&&0<=s);break}}}finally{wc=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ta(e):""}function yE(e){switch(e.tag){case 5:return Ta(e.type);case 16:return Ta("Lazy");case 13:return Ta("Suspense");case 19:return Ta("SuspenseList");case 0:case 2:case 15:return e=Sc(e.type,!1),e;case 11:return e=Sc(e.type.render,!1),e;case 1:return e=Sc(e.type,!0),e;default:return""}}function Sd(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case po:return"Fragment";case fo:return"Portal";case yd:return"Profiler";case Kf:return"StrictMode";case gd:return"Suspense";case wd:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Kg:return(e.displayName||"Context")+".Consumer";case qg:return(e._context.displayName||"Context")+".Provider";case Zf:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Yf:return t=e.displayName||null,t!==null?t:Sd(e.type)||"Memo";case Vr:t=e._payload,e=e._init;try{return Sd(e(t))}catch{}}return null}function gE(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Sd(t);case 8:return t===Kf?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function li(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Yg(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function wE(e){var t=Yg(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function zs(e){e._valueTracker||(e._valueTracker=wE(e))}function Qg(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Yg(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ml(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function xd(e,t){var n=t.checked;return pt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Vm(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=li(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Xg(e,t){t=t.checked,t!=null&&qf(e,"checked",t,!1)}function Cd(e,t){Xg(e,t);var n=li(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?bd(e,t.type,n):t.hasOwnProperty("defaultValue")&&bd(e,t.type,li(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Hm(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function bd(e,t,n){(t!=="number"||Ml(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Na=Array.isArray;function To(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Vs.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Za(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var $a={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},SE=["Webkit","ms","Moz","O"];Object.keys($a).forEach(function(e){SE.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),$a[t]=$a[e]})});function n0(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||$a.hasOwnProperty(e)&&$a[e]?(""+t).trim():t+"px"}function r0(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=n0(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var xE=pt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Td(e,t){if(t){if(xE[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(q(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(q(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(q(61))}if(t.style!=null&&typeof t.style!="object")throw Error(q(62))}}function Nd(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Od=null;function Qf(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Rd=null,No=null,Oo=null;function Gm(e){if(e=ws(e)){if(typeof Rd!="function")throw Error(q(280));var t=e.stateNode;t&&(t=gu(t),Rd(e.stateNode,e.type,t))}}function i0(e){No?Oo?Oo.push(e):Oo=[e]:No=e}function o0(){if(No){var e=No,t=Oo;if(Oo=No=null,Gm(e),t)for(e=0;e>>=0,e===0?32:31-(ME(e)/$E|0)|0}var Hs=64,Ws=4194304;function Oa(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Dl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var s=a&~i;s!==0?r=Oa(s):(o&=a,o!==0&&(r=Oa(o)))}else a=n&~i,a!==0?r=Oa(a):o!==0&&(r=Oa(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ys(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Yn(t),e[t]=n}function AE(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Fa),tv=String.fromCharCode(32),nv=!1;function k0(e,t){switch(e){case"keyup":return dk.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function T0(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ho=!1;function pk(e,t){switch(e){case"compositionend":return T0(t);case"keypress":return t.which!==32?null:(nv=!0,tv);case"textInput":return e=t.data,e===tv&&nv?null:e;default:return null}}function hk(e,t){if(ho)return e==="compositionend"||!op&&k0(e,t)?(e=b0(),vl=np=Yr=null,ho=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=av(n)}}function _0(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?_0(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function P0(){for(var e=window,t=Ml();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ml(e.document)}return t}function ap(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function bk(e){var t=P0(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&_0(n.ownerDocument.documentElement,n)){if(r!==null&&ap(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=sv(n,o);var a=sv(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,mo=null,Fd=null,Aa=null,Dd=!1;function lv(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Dd||mo==null||mo!==Ml(r)||(r=mo,"selectionStart"in r&&ap(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Aa&&ts(Aa,r)||(Aa=r,r=jl(Fd,"onSelect"),0go||(e.current=Vd[go],Vd[go]=null,go--)}function nt(e,t){go++,Vd[go]=e.current,e.current=t}var ui={},Ut=hi(ui),on=hi(!1),ji=ui;function Io(e,t){var n=e.type.contextTypes;if(!n)return ui;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function an(e){return e=e.childContextTypes,e!=null}function zl(){st(on),st(Ut)}function mv(e,t,n){if(Ut.current!==ui)throw Error(q(168));nt(Ut,t),nt(on,n)}function B0(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(q(108,gE(e)||"Unknown",i));return pt({},n,r)}function Vl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ui,ji=Ut.current,nt(Ut,e),nt(on,on.current),!0}function vv(e,t,n){var r=e.stateNode;if(!r)throw Error(q(169));n?(e=B0(e,t,ji),r.__reactInternalMemoizedMergedChildContext=e,st(on),st(Ut),nt(Ut,e)):st(on),nt(on,n)}var yr=null,wu=!1,Ic=!1;function z0(e){yr===null?yr=[e]:yr.push(e)}function Fk(e){wu=!0,z0(e)}function mi(){if(!Ic&&yr!==null){Ic=!0;var e=0,t=Ze;try{var n=yr;for(Ze=1;e>=a,i-=a,Sr=1<<32-Yn(t)+i|n<A?(I=F,F=null):I=F.sibling;var $=p(w,F,b[A],T);if($===null){F===null&&(F=I);break}e&&F&&$.alternate===null&&t(w,F),E=o($,E,A),M===null?R=$:M.sibling=$,M=$,F=I}if(A===b.length)return n(w,F),ut&&bi(w,A),R;if(F===null){for(;AA?(I=F,F=null):I=F.sibling;var W=p(w,F,$.value,T);if(W===null){F===null&&(F=I);break}e&&F&&W.alternate===null&&t(w,F),E=o(W,E,A),M===null?R=W:M.sibling=W,M=W,F=I}if($.done)return n(w,F),ut&&bi(w,A),R;if(F===null){for(;!$.done;A++,$=b.next())$=h(w,$.value,T),$!==null&&(E=o($,E,A),M===null?R=$:M.sibling=$,M=$);return ut&&bi(w,A),R}for(F=r(w,F);!$.done;A++,$=b.next())$=y(F,w,A,$.value,T),$!==null&&(e&&$.alternate!==null&&F.delete($.key===null?A:$.key),E=o($,E,A),M===null?R=$:M.sibling=$,M=$);return e&&F.forEach(function(Z){return t(w,Z)}),ut&&bi(w,A),R}function N(w,E,b,T){if(typeof b=="object"&&b!==null&&b.type===po&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case Bs:e:{for(var R=b.key,M=E;M!==null;){if(M.key===R){if(R=b.type,R===po){if(M.tag===7){n(w,M.sibling),E=i(M,b.props.children),E.return=w,w=E;break e}}else if(M.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===Vr&&bv(R)===M.type){n(w,M.sibling),E=i(M,b.props),E.ref=va(w,M,b),E.return=w,w=E;break e}n(w,M);break}else t(w,M);M=M.sibling}b.type===po?(E=$i(b.props.children,w.mode,T,b.key),E.return=w,w=E):(T=El(b.type,b.key,b.props,null,w.mode,T),T.ref=va(w,E,b),T.return=w,w=T)}return a(w);case fo:e:{for(M=b.key;E!==null;){if(E.key===M)if(E.tag===4&&E.stateNode.containerInfo===b.containerInfo&&E.stateNode.implementation===b.implementation){n(w,E.sibling),E=i(E,b.children||[]),E.return=w,w=E;break e}else{n(w,E);break}else t(w,E);E=E.sibling}E=Vc(b,w.mode,T),E.return=w,w=E}return a(w);case Vr:return M=b._init,N(w,E,M(b._payload),T)}if(Na(b))return C(w,E,b,T);if(da(b))return x(w,E,b,T);Qs(w,b)}return typeof b=="string"&&b!==""||typeof b=="number"?(b=""+b,E!==null&&E.tag===6?(n(w,E.sibling),E=i(E,b),E.return=w,w=E):(n(w,E),E=zc(b,w.mode,T),E.return=w,w=E),a(w)):n(w,E)}return N}var Do=Z0(!0),Y0=Z0(!1),Ss={},ar=hi(Ss),os=hi(Ss),as=hi(Ss);function Pi(e){if(e===Ss)throw Error(q(174));return e}function mp(e,t){switch(nt(as,t),nt(os,e),nt(ar,Ss),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:kd(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=kd(t,e)}st(ar),nt(ar,t)}function Ao(){st(ar),st(os),st(as)}function Q0(e){Pi(as.current);var t=Pi(ar.current),n=kd(t,e.type);t!==n&&(nt(os,e),nt(ar,n))}function vp(e){os.current===e&&(st(ar),st(os))}var dt=hi(0);function Kl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Fc=[];function yp(){for(var e=0;en?n:4,e(!0);var r=Dc.transition;Dc.transition={};try{e(!1),t()}finally{Ze=n,Dc.transition=r}}function pw(){return Dn().memoizedState}function jk(e,t,n){var r=oi(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},hw(e))mw(t,n);else if(n=U0(e,t,n,r),n!==null){var i=Xt();Qn(n,e,r,i),vw(n,t,r)}}function Bk(e,t,n){var r=oi(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(hw(e))mw(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,s=o(a,n);if(i.hasEagerState=!0,i.eagerState=s,Xn(s,a)){var u=t.interleaved;u===null?(i.next=i,pp(t)):(i.next=u.next,u.next=i),t.interleaved=i;return}}catch{}finally{}n=U0(e,t,i,r),n!==null&&(i=Xt(),Qn(n,e,r,i),vw(n,t,r))}}function hw(e){var t=e.alternate;return e===ft||t!==null&&t===ft}function mw(e,t){La=Zl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function vw(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Jf(e,n)}}var Yl={readContext:Fn,useCallback:Bt,useContext:Bt,useEffect:Bt,useImperativeHandle:Bt,useInsertionEffect:Bt,useLayoutEffect:Bt,useMemo:Bt,useReducer:Bt,useRef:Bt,useState:Bt,useDebugValue:Bt,useDeferredValue:Bt,useTransition:Bt,useMutableSource:Bt,useSyncExternalStore:Bt,useId:Bt,unstable_isNewReconciler:!1},zk={readContext:Fn,useCallback:function(e,t){return rr().memoizedState=[e,t===void 0?null:t],e},useContext:Fn,useEffect:kv,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Sl(4194308,4,lw.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Sl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Sl(4,2,e,t)},useMemo:function(e,t){var n=rr();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=rr();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=jk.bind(null,ft,e),[r.memoizedState,e]},useRef:function(e){var t=rr();return e={current:e},t.memoizedState=e},useState:Ev,useDebugValue:Cp,useDeferredValue:function(e){return rr().memoizedState=e},useTransition:function(){var e=Ev(!1),t=e[0];return e=Lk.bind(null,e[1]),rr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ft,i=rr();if(ut){if(n===void 0)throw Error(q(407));n=n()}else{if(n=t(),Mt===null)throw Error(q(349));zi&30||ew(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,kv(nw.bind(null,r,o,e),[e]),r.flags|=2048,us(9,tw.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=rr(),t=Mt.identifierPrefix;if(ut){var n=xr,r=Sr;n=(r&~(1<<32-Yn(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ss++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[ir]=t,e[is]=r,kw(e,t,!1,!1),t.stateNode=e;e:{switch(a=Nd(n,r),n){case"dialog":it("cancel",e),it("close",e),i=r;break;case"iframe":case"object":case"embed":it("load",e),i=r;break;case"video":case"audio":for(i=0;ijo&&(t.flags|=128,r=!0,ya(o,!1),t.lanes=4194304)}else{if(!r)if(e=Kl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ya(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!ut)return zt(t),null}else 2*gt()-o.renderingStartTime>jo&&n!==1073741824&&(t.flags|=128,r=!0,ya(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=gt(),t.sibling=null,n=dt.current,nt(dt,r?n&1|2:n&1),t):(zt(t),null);case 22:case 23:return Op(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?cn&1073741824&&(zt(t),t.subtreeFlags&6&&(t.flags|=8192)):zt(t),null;case 24:return null;case 25:return null}throw Error(q(156,t.tag))}function Zk(e,t){switch(lp(t),t.tag){case 1:return an(t.type)&&zl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ao(),st(on),st(Ut),yp(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return vp(t),null;case 13:if(st(dt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(q(340));Fo()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return st(dt),null;case 4:return Ao(),null;case 10:return fp(t.type._context),null;case 22:case 23:return Op(),null;case 24:return null;default:return null}}var Js=!1,Vt=!1,Yk=typeof WeakSet=="function"?WeakSet:Set,ce=null;function Co(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){yt(e,t,r)}else n.current=null}function ef(e,t,n){try{n()}catch(r){yt(e,t,r)}}var Iv=!1;function Qk(e,t){if(Ad=Al,e=P0(),ap(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,s=-1,u=-1,l=0,f=0,h=e,p=null;t:for(;;){for(var y;h!==n||i!==0&&h.nodeType!==3||(s=a+i),h!==o||r!==0&&h.nodeType!==3||(u=a+r),h.nodeType===3&&(a+=h.nodeValue.length),(y=h.firstChild)!==null;)p=h,h=y;for(;;){if(h===e)break t;if(p===n&&++l===i&&(s=a),p===o&&++f===r&&(u=a),(y=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=y}n=s===-1||u===-1?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Ld={focusedElem:e,selectionRange:n},Al=!1,ce=t;ce!==null;)if(t=ce,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ce=e;else for(;ce!==null;){t=ce;try{var C=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(C!==null){var x=C.memoizedProps,N=C.memoizedState,w=t.stateNode,E=w.getSnapshotBeforeUpdate(t.elementType===t.type?x:Un(t.type,x),N);w.__reactInternalSnapshotBeforeUpdate=E}break;case 3:var b=t.stateNode.containerInfo;b.nodeType===1?b.textContent="":b.nodeType===9&&b.documentElement&&b.removeChild(b.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(q(163))}}catch(T){yt(t,t.return,T)}if(e=t.sibling,e!==null){e.return=t.return,ce=e;break}ce=t.return}return C=Iv,Iv=!1,C}function ja(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&ef(t,n,o)}i=i.next}while(i!==r)}}function Cu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function tf(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Ow(e){var t=e.alternate;t!==null&&(e.alternate=null,Ow(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ir],delete t[is],delete t[zd],delete t[$k],delete t[Ik])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Rw(e){return e.tag===5||e.tag===3||e.tag===4}function Fv(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Rw(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function nf(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Bl));else if(r!==4&&(e=e.child,e!==null))for(nf(e,t,n),e=e.sibling;e!==null;)nf(e,t,n),e=e.sibling}function rf(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(rf(e,t,n),e=e.sibling;e!==null;)rf(e,t,n),e=e.sibling}var Dt=null,Gn=!1;function Lr(e,t,n){for(n=n.child;n!==null;)_w(e,t,n),n=n.sibling}function _w(e,t,n){if(or&&typeof or.onCommitFiberUnmount=="function")try{or.onCommitFiberUnmount(hu,n)}catch{}switch(n.tag){case 5:Vt||Co(n,t);case 6:var r=Dt,i=Gn;Dt=null,Lr(e,t,n),Dt=r,Gn=i,Dt!==null&&(Gn?(e=Dt,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Dt.removeChild(n.stateNode));break;case 18:Dt!==null&&(Gn?(e=Dt,n=n.stateNode,e.nodeType===8?$c(e.parentNode,n):e.nodeType===1&&$c(e,n),Ja(e)):$c(Dt,n.stateNode));break;case 4:r=Dt,i=Gn,Dt=n.stateNode.containerInfo,Gn=!0,Lr(e,t,n),Dt=r,Gn=i;break;case 0:case 11:case 14:case 15:if(!Vt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&(o&2||o&4)&&ef(n,t,a),i=i.next}while(i!==r)}Lr(e,t,n);break;case 1:if(!Vt&&(Co(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){yt(n,t,s)}Lr(e,t,n);break;case 21:Lr(e,t,n);break;case 22:n.mode&1?(Vt=(r=Vt)||n.memoizedState!==null,Lr(e,t,n),Vt=r):Lr(e,t,n);break;default:Lr(e,t,n)}}function Dv(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Yk),t.forEach(function(r){var i=aT.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function zn(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=gt()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Jk(r/1960))-r,10e?16:e,Qr===null)var r=!1;else{if(e=Qr,Qr=null,Jl=0,We&6)throw Error(q(331));var i=We;for(We|=4,ce=e.current;ce!==null;){var o=ce,a=o.child;if(ce.flags&16){var s=o.deletions;if(s!==null){for(var u=0;ugt()-Tp?Mi(e,0):kp|=n),sn(e,t)}function Lw(e,t){t===0&&(e.mode&1?(t=Ws,Ws<<=1,!(Ws&130023424)&&(Ws=4194304)):t=1);var n=Xt();e=Nr(e,t),e!==null&&(ys(e,t,n),sn(e,n))}function oT(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Lw(e,n)}function aT(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(q(314))}r!==null&&r.delete(t),Lw(e,n)}var jw;jw=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||on.current)rn=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return rn=!1,qk(e,t,n);rn=!!(e.flags&131072)}else rn=!1,ut&&t.flags&1048576&&V0(t,Wl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;xl(e,t),e=t.pendingProps;var i=Io(t,Ut.current);_o(t,n),i=wp(null,t,r,e,i,n);var o=Sp();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,an(r)?(o=!0,Vl(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,hp(t),i.updater=Su,t.stateNode=i,i._reactInternals=t,qd(t,r,e,n),t=Yd(null,t,r,!0,o,n)):(t.tag=0,ut&&o&&sp(t),Yt(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(xl(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=lT(r),e=Un(r,e),i){case 0:t=Zd(null,t,r,e,n);break e;case 1:t=Pv(null,t,r,e,n);break e;case 11:t=Rv(null,t,r,e,n);break e;case 14:t=_v(null,t,r,Un(r.type,e),n);break e}throw Error(q(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Un(r,i),Zd(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Un(r,i),Pv(e,t,r,i,n);case 3:e:{if(Cw(t),e===null)throw Error(q(387));r=t.pendingProps,o=t.memoizedState,i=o.element,G0(e,t),ql(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=Lo(Error(q(423)),t),t=Mv(e,t,r,n,i);break e}else if(r!==i){i=Lo(Error(q(424)),t),t=Mv(e,t,r,n,i);break e}else for(fn=ni(t.stateNode.containerInfo.firstChild),mn=t,ut=!0,qn=null,n=Y0(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Fo(),r===i){t=Or(e,t,n);break e}Yt(e,t,r,n)}t=t.child}return t;case 5:return Q0(t),e===null&&Wd(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,jd(r,i)?a=null:o!==null&&jd(r,o)&&(t.flags|=32),xw(e,t),Yt(e,t,a,n),t.child;case 6:return e===null&&Wd(t),null;case 13:return bw(e,t,n);case 4:return mp(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Do(t,null,r,n):Yt(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Un(r,i),Rv(e,t,r,i,n);case 7:return Yt(e,t,t.pendingProps,n),t.child;case 8:return Yt(e,t,t.pendingProps.children,n),t.child;case 12:return Yt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,nt(Ul,r._currentValue),r._currentValue=a,o!==null)if(Xn(o.value,a)){if(o.children===i.children&&!on.current){t=Or(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){a=o.child;for(var u=s.firstContext;u!==null;){if(u.context===r){if(o.tag===1){u=br(-1,n&-n),u.tag=2;var l=o.updateQueue;if(l!==null){l=l.shared;var f=l.pending;f===null?u.next=u:(u.next=f.next,f.next=u),l.pending=u}}o.lanes|=n,u=o.alternate,u!==null&&(u.lanes|=n),Ud(o.return,n,t),s.lanes|=n;break}u=u.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(q(341));a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),Ud(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}Yt(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,_o(t,n),i=Fn(i),r=r(i),t.flags|=1,Yt(e,t,r,n),t.child;case 14:return r=t.type,i=Un(r,t.pendingProps),i=Un(r.type,i),_v(e,t,r,i,n);case 15:return ww(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Un(r,i),xl(e,t),t.tag=1,an(r)?(e=!0,Vl(t)):e=!1,_o(t,n),K0(t,r,i),qd(t,r,i,n),Yd(null,t,r,!0,e,n);case 19:return Ew(e,t,n);case 22:return Sw(e,t,n)}throw Error(q(156,t.tag))};function Bw(e,t){return f0(e,t)}function sT(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Pn(e,t,n,r){return new sT(e,t,n,r)}function _p(e){return e=e.prototype,!(!e||!e.isReactComponent)}function lT(e){if(typeof e=="function")return _p(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Zf)return 11;if(e===Yf)return 14}return 2}function ai(e,t){var n=e.alternate;return n===null?(n=Pn(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function El(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")_p(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case po:return $i(n.children,i,o,t);case Kf:a=8,i|=8;break;case yd:return e=Pn(12,n,t,i|2),e.elementType=yd,e.lanes=o,e;case gd:return e=Pn(13,n,t,i),e.elementType=gd,e.lanes=o,e;case wd:return e=Pn(19,n,t,i),e.elementType=wd,e.lanes=o,e;case Zg:return Eu(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case qg:a=10;break e;case Kg:a=9;break e;case Zf:a=11;break e;case Yf:a=14;break e;case Vr:a=16,r=null;break e}throw Error(q(130,e==null?e:typeof e,""))}return t=Pn(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function $i(e,t,n,r){return e=Pn(7,e,r,t),e.lanes=n,e}function Eu(e,t,n,r){return e=Pn(22,e,r,t),e.elementType=Zg,e.lanes=n,e.stateNode={isHidden:!1},e}function zc(e,t,n){return e=Pn(6,e,null,t),e.lanes=n,e}function Vc(e,t,n){return t=Pn(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function uT(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Cc(0),this.expirationTimes=Cc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Cc(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Pp(e,t,n,r,i,o,a,s,u){return e=new uT(e,t,n,s,u),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Pn(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},hp(o),e}function cT(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ww)}catch(e){console.error(e)}}Ww(),Vg.exports=Sn;var Uw=Vg.exports;const Eo=fi(Uw);var Wv=Uw;md.createRoot=Wv.createRoot,md.hydrateRoot=Wv.hydrateRoot;var Gw={exports:{}};/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/(function(e){(function(){var t={}.hasOwnProperty;function n(){for(var r=[],i=0;i1?f-1:0),p=1;p{o.target===e&&(i(),t(o))},n+r)}function wa(...e){return e.filter(t=>t!=null).reduce((t,n)=>{if(typeof n!="function")throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return t===null?n:function(...i){t.apply(this,i),n.apply(this,i)}},null)}function t1(e){e.offsetHeight}var Qv=function(t){return!t||typeof t=="function"?t:function(n){t.current=n}};function DT(e,t){var n=Qv(e),r=Qv(t);return function(i){n&&n(i),r&&r(i)}}function Yi(e,t){return m.useMemo(function(){return DT(e,t)},[e,t])}function AT(e){return e&&"setState"in e?Eo.findDOMNode(e):e??null}const LT=Kn.forwardRef(({onEnter:e,onEntering:t,onEntered:n,onExit:r,onExiting:i,onExited:o,addEndListener:a,children:s,childRef:u,...l},f)=>{const h=m.useRef(null),p=Yi(h,u),y=M=>{p(AT(M))},C=M=>F=>{M&&h.current&&M(h.current,F)},x=m.useCallback(C(e),[e]),N=m.useCallback(C(t),[t]),w=m.useCallback(C(n),[n]),E=m.useCallback(C(r),[r]),b=m.useCallback(C(i),[i]),T=m.useCallback(C(o),[o]),R=m.useCallback(C(a),[a]);return c(MT,{ref:f,...l,onEnter:x,onEntered:w,onEntering:N,onExit:E,onExited:T,onExiting:b,addEndListener:R,nodeRef:h,children:typeof s=="function"?(M,F)=>s(M,{...F,ref:y}):Kn.cloneElement(s,{ref:y})})}),n1=LT,jT={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]};function r1(e,t){const n=`offset${e[0].toUpperCase()}${e.slice(1)}`,r=t[n],i=jT[e];return r+parseInt(Er(t,i[0]),10)+parseInt(Er(t,i[1]),10)}const BT={[Wr]:"collapse",[nu]:"collapsing",[gr]:"collapsing",[Kr]:"collapse show"},zT={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,getDimensionValue:r1},i1=Kn.forwardRef(({onEnter:e,onEntering:t,onEntered:n,onExit:r,onExiting:i,className:o,children:a,dimension:s="height",getDimensionValue:u=r1,...l},f)=>{const h=typeof s=="function"?s():s,p=m.useMemo(()=>wa(w=>{w.style[h]="0"},e),[h,e]),y=m.useMemo(()=>wa(w=>{const E=`scroll${h[0].toUpperCase()}${h.slice(1)}`;w.style[h]=`${w[E]}px`},t),[h,t]),C=m.useMemo(()=>wa(w=>{w.style[h]=null},n),[h,n]),x=m.useMemo(()=>wa(w=>{w.style[h]=`${u(h,w)}px`,t1(w)},r),[r,u,h]),N=m.useMemo(()=>wa(w=>{w.style[h]=null},i),[h,i]);return c(n1,{ref:f,addEndListener:e1,...l,"aria-expanded":l.role?l.in:null,onEnter:p,onEntering:y,onEntered:C,onExit:x,onExiting:N,childRef:a.ref,children:(w,E)=>Kn.cloneElement(a,{...E,className:be(o,a.props.className,BT[w],h==="width"&&"collapse-horizontal")})})});i1.defaultProps=zT;const VT=i1;function o1(e,t){return Array.isArray(e)?e.includes(t):e===t}const a1=m.createContext({});a1.displayName="AccordionContext";const _u=a1,s1=m.forwardRef(({as:e="div",bsPrefix:t,className:n,children:r,eventKey:i,...o},a)=>{const{activeEventKey:s}=m.useContext(_u);return t=$e(t,"accordion-collapse"),c(VT,{ref:a,in:o1(s,i),...o,className:be(n,t),children:c(e,{children:m.Children.only(r)})})});s1.displayName="AccordionCollapse";const l1=s1,u1=m.createContext({eventKey:""});u1.displayName="AccordionItemContext";const Ap=u1,c1=m.forwardRef(({as:e="div",bsPrefix:t,className:n,onEnter:r,onEntering:i,onEntered:o,onExit:a,onExiting:s,onExited:u,...l},f)=>{t=$e(t,"accordion-body");const{eventKey:h}=m.useContext(Ap);return c(l1,{eventKey:h,onEnter:r,onEntering:i,onEntered:o,onExit:a,onExiting:s,onExited:u,children:c(e,{ref:f,...l,className:be(n,t)})})});c1.displayName="AccordionBody";const HT=c1;function WT(e,t){const{activeEventKey:n,onSelect:r,alwaysOpen:i}=m.useContext(_u);return o=>{let a=e===n?null:e;i&&(Array.isArray(n)?n.includes(e)?a=n.filter(s=>s!==e):a=[...n,e]:a=[e]),r==null||r(a,o),t==null||t(o)}}const d1=m.forwardRef(({as:e="button",bsPrefix:t,className:n,onClick:r,...i},o)=>{t=$e(t,"accordion-button");const{eventKey:a}=m.useContext(Ap),s=WT(a,r),{activeEventKey:u}=m.useContext(_u);return e==="button"&&(i.type="button"),c(e,{ref:o,onClick:s,...i,"aria-expanded":Array.isArray(u)?u.includes(a):a===u,className:be(n,t,!o1(u,a)&&"collapsed")})});d1.displayName="AccordionButton";const f1=d1,p1=m.forwardRef(({as:e="h2",bsPrefix:t,className:n,children:r,onClick:i,...o},a)=>(t=$e(t,"accordion-header"),c(e,{ref:a,...o,className:be(n,t),children:c(f1,{onClick:i,children:r})})));p1.displayName="AccordionHeader";const UT=p1,h1=m.forwardRef(({as:e="div",bsPrefix:t,className:n,eventKey:r,...i},o)=>{t=$e(t,"accordion-item");const a=m.useMemo(()=>({eventKey:r}),[r]);return c(Ap.Provider,{value:a,children:c(e,{ref:o,...i,className:be(n,t)})})});h1.displayName="AccordionItem";const GT=h1,m1=m.forwardRef((e,t)=>{const{as:n="div",activeKey:r,bsPrefix:i,className:o,onSelect:a,flush:s,alwaysOpen:u,...l}=xs(e,{activeKey:"onSelect"}),f=$e(i,"accordion"),h=m.useMemo(()=>({activeEventKey:r,onSelect:a,alwaysOpen:u}),[r,a,u]);return c(_u.Provider,{value:h,children:c(n,{ref:t,...l,className:be(o,f,s&&`${f}-flush`)})})});m1.displayName="Accordion";const kl=Object.assign(m1,{Button:f1,Collapse:l1,Item:GT,Header:UT,Body:HT});function qT(e){var t=m.useRef(e);return m.useEffect(function(){t.current=e},[e]),t}function wt(e){var t=qT(e);return m.useCallback(function(){return t.current&&t.current.apply(t,arguments)},[t])}function v1(){return m.useState(null)}function KT(e,t,n,r){r===void 0&&(r=!1);var i=wt(n);m.useEffect(function(){var o=typeof e=="function"?e():e;return o.addEventListener(t,i,r),function(){return o.removeEventListener(t,i,r)}},[e])}function y1(){var e=m.useRef(!0),t=m.useRef(function(){return e.current});return m.useEffect(function(){return e.current=!0,function(){e.current=!1}},[]),t.current}function g1(e){var t=m.useRef(null);return m.useEffect(function(){t.current=e}),t.current}var ZT=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",YT=typeof document<"u";const hf=YT||ZT?m.useLayoutEffect:m.useEffect,QT=["as","disabled"];function XT(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}function JT(e){return!e||e.trim()==="#"}function Lp({tagName:e,disabled:t,href:n,target:r,rel:i,role:o,onClick:a,tabIndex:s=0,type:u}){e||(n!=null||r!=null||i!=null?e="a":e="button");const l={tagName:e};if(e==="button")return[{type:u||"button",disabled:t},l];const f=p=>{if((t||e==="a"&&JT(n))&&p.preventDefault(),t){p.stopPropagation();return}a==null||a(p)},h=p=>{p.key===" "&&(p.preventDefault(),f(p))};return e==="a"&&(n||(n="#"),t&&(n=void 0)),[{role:o??"button",disabled:void 0,tabIndex:t?void 0:s,href:n,target:e==="a"?r:void 0,"aria-disabled":t||void 0,rel:e==="a"?i:void 0,onClick:f,onKeyDown:h},l]}const jp=m.forwardRef((e,t)=>{let{as:n,disabled:r}=e,i=XT(e,QT);const[o,{tagName:a}]=Lp(Object.assign({tagName:n,disabled:r},i));return c(a,Object.assign({},i,o,{ref:t}))});jp.displayName="Button";const eN=["onKeyDown"];function tN(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}function nN(e){return!e||e.trim()==="#"}const w1=m.forwardRef((e,t)=>{let{onKeyDown:n}=e,r=tN(e,eN);const[i]=Lp(Object.assign({tagName:"a"},r)),o=wt(a=>{i.onKeyDown(a),n==null||n(a)});return nN(r.href)||r.role==="button"?c("a",Object.assign({ref:t},r,i,{onKeyDown:o})):c("a",Object.assign({ref:t},r,{onKeyDown:n}))});w1.displayName="Anchor";const Pu=w1,rN={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1},iN={[gr]:"show",[Kr]:"show"},Bp=m.forwardRef(({className:e,children:t,transitionClasses:n={},...r},i)=>{const o=m.useCallback((a,s)=>{t1(a),r.onEnter==null||r.onEnter(a,s)},[r]);return c(n1,{ref:i,addEndListener:e1,...r,onEnter:o,childRef:t.ref,children:(a,s)=>m.cloneElement(t,{...s,className:be("fade",e,t.props.className,iN[a],n[a])})})});Bp.defaultProps=rN;Bp.displayName="Fade";const Qo=Bp,oN={"aria-label":De.string,onClick:De.func,variant:De.oneOf(["white"])},aN={"aria-label":"Close"},Mu=m.forwardRef(({className:e,variant:t,...n},r)=>c("button",{ref:r,type:"button",className:be("btn-close",t&&`btn-close-${t}`,e),...n}));Mu.displayName="CloseButton";Mu.propTypes=oN;Mu.defaultProps=aN;const zp=Mu,$u=e=>m.forwardRef((t,n)=>c("div",{...t,ref:n,className:be(t.className,e)}));var sN=/-(.)/g;function lN(e){return e.replace(sN,function(t,n){return n.toUpperCase()})}const uN=e=>e[0].toUpperCase()+lN(e).slice(1);function Nt(e,{displayName:t=uN(e),Component:n,defaultProps:r}={}){const i=m.forwardRef(({className:o,bsPrefix:a,as:s=n||"div",...u},l)=>{const f=$e(a,e);return c(s,{ref:l,className:be(o,f),...u})});return i.defaultProps=r,i.displayName=t,i}const S1=$u("h4");S1.displayName="DivStyledAsH4";const cN=Nt("alert-heading",{Component:S1}),dN=Nt("alert-link",{Component:Pu}),fN={variant:"primary",show:!0,transition:Qo,closeLabel:"Close alert"},Vp=m.forwardRef((e,t)=>{const{bsPrefix:n,show:r,closeLabel:i,closeVariant:o,className:a,children:s,variant:u,onClose:l,dismissible:f,transition:h,...p}=xs(e,{show:"onClose"}),y=$e(n,"alert"),C=wt(w=>{l&&l(!1,w)}),x=h===!0?Qo:h,N=g("div",{role:"alert",...x?void 0:p,ref:t,className:be(a,y,u&&`${y}-${u}`,f&&`${y}-dismissible`),children:[f&&c(zp,{onClick:C,"aria-label":i,variant:o}),s]});return x?c(x,{unmountOnExit:!0,...p,ref:void 0,in:r,children:N}):r?N:null});Vp.displayName="Alert";Vp.defaultProps=fN;const Bo=Object.assign(Vp,{Link:dN,Heading:cN}),pN={bg:"primary",pill:!1},Hp=m.forwardRef(({bsPrefix:e,bg:t,pill:n,text:r,className:i,as:o="span",...a},s)=>{const u=$e(e,"badge");return c(o,{ref:s,...a,className:be(i,u,n&&"rounded-pill",r&&`text-${r}`,t&&`bg-${t}`)})});Hp.displayName="Badge";Hp.defaultProps=pN;const vn=Hp,hN={active:!1,linkProps:{}},Wp=m.forwardRef(({bsPrefix:e,active:t,children:n,className:r,as:i="li",linkAs:o=Pu,linkProps:a,href:s,title:u,target:l,...f},h)=>{const p=$e(e,"breadcrumb-item");return c(i,{ref:h,...f,className:be(p,r,{active:t}),"aria-current":t?"page":void 0,children:t?n:c(o,{...a,href:s,title:u,target:l,children:n})})});Wp.displayName="BreadcrumbItem";Wp.defaultProps=hN;const mN=Wp,vN={label:"breadcrumb",listProps:{}},Up=m.forwardRef(({bsPrefix:e,className:t,listProps:n,children:r,label:i,as:o="nav",...a},s)=>{const u=$e(e,"breadcrumb");return c(o,{"aria-label":i,className:t,ref:s,...a,children:c("ol",{...n,className:be(u,n==null?void 0:n.className),children:r})})});Up.displayName="Breadcrumb";Up.defaultProps=vN;const hr=Object.assign(Up,{Item:mN}),yN={variant:"primary",active:!1,disabled:!1},Gp=m.forwardRef(({as:e,bsPrefix:t,variant:n,size:r,active:i,className:o,...a},s)=>{const u=$e(t,"btn"),[l,{tagName:f}]=Lp({tagName:e,...a});return c(f,{...l,...a,ref:s,className:be(o,u,i&&"active",n&&`${u}-${n}`,r&&`${u}-${r}`,a.href&&a.disabled&&"disabled")})});Gp.displayName="Button";Gp.defaultProps=yN;const ee=Gp,gN={vertical:!1,role:"group"},qp=m.forwardRef(({bsPrefix:e,size:t,vertical:n,className:r,as:i="div",...o},a)=>{const s=$e(e,"btn-group");let u=s;return n&&(u=`${s}-vertical`),c(i,{...o,ref:a,className:be(r,u,t&&`${s}-${t}`)})});qp.displayName="ButtonGroup";qp.defaultProps=gN;const x1=qp,C1=m.forwardRef(({bsPrefix:e,className:t,variant:n,as:r="img",...i},o)=>{const a=$e(e,"card-img");return c(r,{ref:o,className:be(n?`${a}-${n}`:a,t),...i})});C1.displayName="CardImg";const wN=C1,b1=m.createContext(null);b1.displayName="CardHeaderContext";const E1=b1,k1=m.forwardRef(({bsPrefix:e,className:t,as:n="div",...r},i)=>{const o=$e(e,"card-header"),a=m.useMemo(()=>({cardHeaderBsPrefix:o}),[o]);return c(E1.Provider,{value:a,children:c(n,{ref:i,...r,className:be(t,o)})})});k1.displayName="CardHeader";const SN=k1,xN=$u("h5"),CN=$u("h6"),T1=Nt("card-body"),bN=Nt("card-title",{Component:xN}),EN=Nt("card-subtitle",{Component:CN}),kN=Nt("card-link",{Component:"a"}),TN=Nt("card-text",{Component:"p"}),NN=Nt("card-footer"),ON=Nt("card-img-overlay"),RN={body:!1},Kp=m.forwardRef(({bsPrefix:e,className:t,bg:n,text:r,border:i,body:o,children:a,as:s="div",...u},l)=>{const f=$e(e,"card");return c(s,{ref:l,...u,className:be(t,f,n&&`bg-${n}`,r&&`text-${r}`,i&&`border-${i}`),children:o?c(T1,{children:a}):a})});Kp.displayName="Card";Kp.defaultProps=RN;const Ue=Object.assign(Kp,{Img:wN,Title:bN,Subtitle:EN,Body:T1,Link:kN,Text:TN,Header:SN,Footer:NN,ImgOverlay:ON});function _N(e){var t=m.useRef(e);return t.current=e,t}function N1(e){var t=_N(e);m.useEffect(function(){return function(){return t.current()}},[])}function mf(e,t){let n=0;return m.Children.map(e,r=>m.isValidElement(r)?t(r,n++):r)}function PN(e,t){let n=0;m.Children.forEach(e,r=>{m.isValidElement(r)&&t(r,n++)})}function MN(e,t){return m.Children.toArray(e).some(n=>m.isValidElement(n)&&n.type===t)}function $N({as:e,bsPrefix:t,className:n,...r}){t=$e(t,"col");const i=Kw(),o=Zw(),a=[],s=[];return i.forEach(u=>{const l=r[u];delete r[u];let f,h,p;typeof l=="object"&&l!=null?{span:f,offset:h,order:p}=l:f=l;const y=u!==o?`-${u}`:"";f&&a.push(f===!0?`${t}${y}`:`${t}${y}-${f}`),p!=null&&s.push(`order${y}-${p}`),h!=null&&s.push(`offset${y}-${h}`)}),[{...r,className:be(n,...a,...s)},{as:e,bsPrefix:t,spans:a}]}const O1=m.forwardRef((e,t)=>{const[{className:n,...r},{as:i="div",bsPrefix:o,spans:a}]=$N(e);return c(i,{...r,ref:t,className:be(n,!a.length&&o)})});O1.displayName="Col";const Xe=O1;var IN=Function.prototype.bind.call(Function.prototype.call,[].slice);function wr(e,t){return IN(e.querySelectorAll(t))}function R1(){var e=m.useReducer(function(n){return!n},!1),t=e[1];return t}const FN=m.createContext(null),Iu=FN;var Xv=Object.prototype.hasOwnProperty;function Jv(e,t,n){for(n of e.keys())if(Va(n,t))return n}function Va(e,t){var n,r,i;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&Va(e[r],t[r]););return r===-1}if(n===Set){if(e.size!==t.size)return!1;for(r of e)if(i=r,i&&typeof i=="object"&&(i=Jv(t,i),!i)||!t.has(i))return!1;return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e)if(i=r[0],i&&typeof i=="object"&&(i=Jv(t,i),!i)||!Va(r[1],t.get(i)))return!1;return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return r===-1}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return r===-1}if(!n||typeof e=="object"){r=0;for(n in e)if(Xv.call(e,n)&&++r&&!Xv.call(t,n)||!(n in t)||!Va(e[n],t[n]))return!1;return Object.keys(t).length===r}}return e!==e&&t!==t}function DN(e){var t=y1();return[e[0],m.useCallback(function(n){if(t())return e[1](n)},[t,e[1]])]}var ln="top",An="bottom",Ln="right",un="left",Zp="auto",bs=[ln,An,Ln,un],zo="start",ds="end",AN="clippingParents",_1="viewport",Sa="popper",LN="reference",ey=bs.reduce(function(e,t){return e.concat([t+"-"+zo,t+"-"+ds])},[]),P1=[].concat(bs,[Zp]).reduce(function(e,t){return e.concat([t,t+"-"+zo,t+"-"+ds])},[]),jN="beforeRead",BN="read",zN="afterRead",VN="beforeMain",HN="main",WN="afterMain",UN="beforeWrite",GN="write",qN="afterWrite",KN=[jN,BN,zN,VN,HN,WN,UN,GN,qN];function sr(e){return e.split("-")[0]}function jn(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Wi(e){var t=jn(e).Element;return e instanceof t||e instanceof Element}function lr(e){var t=jn(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Yp(e){if(typeof ShadowRoot>"u")return!1;var t=jn(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var Ii=Math.max,ru=Math.min,Vo=Math.round;function vf(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function M1(){return!/^((?!chrome|android).)*safari/i.test(vf())}function Ho(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&lr(e)&&(i=e.offsetWidth>0&&Vo(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Vo(r.height)/e.offsetHeight||1);var a=Wi(e)?jn(e):window,s=a.visualViewport,u=!M1()&&n,l=(r.left+(u&&s?s.offsetLeft:0))/i,f=(r.top+(u&&s?s.offsetTop:0))/o,h=r.width/i,p=r.height/o;return{width:h,height:p,top:f,right:l+h,bottom:f+p,left:l,x:l,y:f}}function Qp(e){var t=Ho(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function $1(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Yp(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ci(e){return e?(e.nodeName||"").toLowerCase():null}function Rr(e){return jn(e).getComputedStyle(e)}function ZN(e){return["table","td","th"].indexOf(ci(e))>=0}function vi(e){return((Wi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Fu(e){return ci(e)==="html"?e:e.assignedSlot||e.parentNode||(Yp(e)?e.host:null)||vi(e)}function ty(e){return!lr(e)||Rr(e).position==="fixed"?null:e.offsetParent}function YN(e){var t=/firefox/i.test(vf()),n=/Trident/i.test(vf());if(n&&lr(e)){var r=Rr(e);if(r.position==="fixed")return null}var i=Fu(e);for(Yp(i)&&(i=i.host);lr(i)&&["html","body"].indexOf(ci(i))<0;){var o=Rr(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function Es(e){for(var t=jn(e),n=ty(e);n&&ZN(n)&&Rr(n).position==="static";)n=ty(n);return n&&(ci(n)==="html"||ci(n)==="body"&&Rr(n).position==="static")?t:n||YN(e)||t}function Xp(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ha(e,t,n){return Ii(e,ru(t,n))}function QN(e,t,n){var r=Ha(e,t,n);return r>n?n:r}function I1(){return{top:0,right:0,bottom:0,left:0}}function F1(e){return Object.assign({},I1(),e)}function D1(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var XN=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,F1(typeof t!="number"?t:D1(t,bs))};function JN(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=sr(n.placement),u=Xp(s),l=[un,Ln].indexOf(s)>=0,f=l?"height":"width";if(!(!o||!a)){var h=XN(i.padding,n),p=Qp(o),y=u==="y"?ln:un,C=u==="y"?An:Ln,x=n.rects.reference[f]+n.rects.reference[u]-a[u]-n.rects.popper[f],N=a[u]-n.rects.reference[u],w=Es(o),E=w?u==="y"?w.clientHeight||0:w.clientWidth||0:0,b=x/2-N/2,T=h[y],R=E-p[f]-h[C],M=E/2-p[f]/2+b,F=Ha(T,M,R),A=u;n.modifiersData[r]=(t={},t[A]=F,t.centerOffset=F-M,t)}}function eO(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||$1(t.elements.popper,i)&&(t.elements.arrow=i))}const tO={name:"arrow",enabled:!0,phase:"main",fn:JN,effect:eO,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Wo(e){return e.split("-")[1]}var nO={top:"auto",right:"auto",bottom:"auto",left:"auto"};function rO(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:Vo(t*i)/i||0,y:Vo(n*i)/i||0}}function ny(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,u=e.gpuAcceleration,l=e.adaptive,f=e.roundOffsets,h=e.isFixed,p=a.x,y=p===void 0?0:p,C=a.y,x=C===void 0?0:C,N=typeof f=="function"?f({x:y,y:x}):{x:y,y:x};y=N.x,x=N.y;var w=a.hasOwnProperty("x"),E=a.hasOwnProperty("y"),b=un,T=ln,R=window;if(l){var M=Es(n),F="clientHeight",A="clientWidth";if(M===jn(n)&&(M=vi(n),Rr(M).position!=="static"&&s==="absolute"&&(F="scrollHeight",A="scrollWidth")),M=M,i===ln||(i===un||i===Ln)&&o===ds){T=An;var I=h&&M===R&&R.visualViewport?R.visualViewport.height:M[F];x-=I-r.height,x*=u?1:-1}if(i===un||(i===ln||i===An)&&o===ds){b=Ln;var $=h&&M===R&&R.visualViewport?R.visualViewport.width:M[A];y-=$-r.width,y*=u?1:-1}}var W=Object.assign({position:s},l&&nO),Z=f===!0?rO({x:y,y:x}):{x:y,y:x};if(y=Z.x,x=Z.y,u){var G;return Object.assign({},W,(G={},G[T]=E?"0":"",G[b]=w?"0":"",G.transform=(R.devicePixelRatio||1)<=1?"translate("+y+"px, "+x+"px)":"translate3d("+y+"px, "+x+"px, 0)",G))}return Object.assign({},W,(t={},t[T]=E?x+"px":"",t[b]=w?y+"px":"",t.transform="",t))}function iO(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,a=o===void 0?!0:o,s=n.roundOffsets,u=s===void 0?!0:s,l={placement:sr(t.placement),variation:Wo(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,ny(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:u})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,ny(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const oO={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:iO,data:{}};var rl={passive:!0};function aO(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,a=r.resize,s=a===void 0?!0:a,u=jn(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&l.forEach(function(f){f.addEventListener("scroll",n.update,rl)}),s&&u.addEventListener("resize",n.update,rl),function(){o&&l.forEach(function(f){f.removeEventListener("scroll",n.update,rl)}),s&&u.removeEventListener("resize",n.update,rl)}}const sO={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:aO,data:{}};var lO={left:"right",right:"left",bottom:"top",top:"bottom"};function Tl(e){return e.replace(/left|right|bottom|top/g,function(t){return lO[t]})}var uO={start:"end",end:"start"};function ry(e){return e.replace(/start|end/g,function(t){return uO[t]})}function Jp(e){var t=jn(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function eh(e){return Ho(vi(e)).left+Jp(e).scrollLeft}function cO(e,t){var n=jn(e),r=vi(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,u=0;if(i){o=i.width,a=i.height;var l=M1();(l||!l&&t==="fixed")&&(s=i.offsetLeft,u=i.offsetTop)}return{width:o,height:a,x:s+eh(e),y:u}}function dO(e){var t,n=vi(e),r=Jp(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=Ii(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Ii(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+eh(e),u=-r.scrollTop;return Rr(i||n).direction==="rtl"&&(s+=Ii(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:u}}function th(e){var t=Rr(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function A1(e){return["html","body","#document"].indexOf(ci(e))>=0?e.ownerDocument.body:lr(e)&&th(e)?e:A1(Fu(e))}function Wa(e,t){var n;t===void 0&&(t=[]);var r=A1(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=jn(r),a=i?[o].concat(o.visualViewport||[],th(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(Wa(Fu(a)))}function yf(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function fO(e,t){var n=Ho(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function iy(e,t,n){return t===_1?yf(cO(e,n)):Wi(t)?fO(t,n):yf(dO(vi(e)))}function pO(e){var t=Wa(Fu(e)),n=["absolute","fixed"].indexOf(Rr(e).position)>=0,r=n&&lr(e)?Es(e):e;return Wi(r)?t.filter(function(i){return Wi(i)&&$1(i,r)&&ci(i)!=="body"}):[]}function hO(e,t,n,r){var i=t==="clippingParents"?pO(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce(function(u,l){var f=iy(e,l,r);return u.top=Ii(f.top,u.top),u.right=ru(f.right,u.right),u.bottom=ru(f.bottom,u.bottom),u.left=Ii(f.left,u.left),u},iy(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function L1(e){var t=e.reference,n=e.element,r=e.placement,i=r?sr(r):null,o=r?Wo(r):null,a=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,u;switch(i){case ln:u={x:a,y:t.y-n.height};break;case An:u={x:a,y:t.y+t.height};break;case Ln:u={x:t.x+t.width,y:s};break;case un:u={x:t.x-n.width,y:s};break;default:u={x:t.x,y:t.y}}var l=i?Xp(i):null;if(l!=null){var f=l==="y"?"height":"width";switch(o){case zo:u[l]=u[l]-(t[f]/2-n[f]/2);break;case ds:u[l]=u[l]+(t[f]/2-n[f]/2);break}}return u}function fs(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.strategy,a=o===void 0?e.strategy:o,s=n.boundary,u=s===void 0?AN:s,l=n.rootBoundary,f=l===void 0?_1:l,h=n.elementContext,p=h===void 0?Sa:h,y=n.altBoundary,C=y===void 0?!1:y,x=n.padding,N=x===void 0?0:x,w=F1(typeof N!="number"?N:D1(N,bs)),E=p===Sa?LN:Sa,b=e.rects.popper,T=e.elements[C?E:p],R=hO(Wi(T)?T:T.contextElement||vi(e.elements.popper),u,f,a),M=Ho(e.elements.reference),F=L1({reference:M,element:b,strategy:"absolute",placement:i}),A=yf(Object.assign({},b,F)),I=p===Sa?A:M,$={top:R.top-I.top+w.top,bottom:I.bottom-R.bottom+w.bottom,left:R.left-I.left+w.left,right:I.right-R.right+w.right},W=e.modifiersData.offset;if(p===Sa&&W){var Z=W[i];Object.keys($).forEach(function(G){var te=[Ln,An].indexOf(G)>=0?1:-1,Oe=[ln,An].indexOf(G)>=0?"y":"x";$[G]+=Z[Oe]*te})}return $}function mO(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,u=n.allowedAutoPlacements,l=u===void 0?P1:u,f=Wo(r),h=f?s?ey:ey.filter(function(C){return Wo(C)===f}):bs,p=h.filter(function(C){return l.indexOf(C)>=0});p.length===0&&(p=h);var y=p.reduce(function(C,x){return C[x]=fs(e,{placement:x,boundary:i,rootBoundary:o,padding:a})[sr(x)],C},{});return Object.keys(y).sort(function(C,x){return y[C]-y[x]})}function vO(e){if(sr(e)===Zp)return[];var t=Tl(e);return[ry(e),t,ry(t)]}function yO(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!0:a,u=n.fallbackPlacements,l=n.padding,f=n.boundary,h=n.rootBoundary,p=n.altBoundary,y=n.flipVariations,C=y===void 0?!0:y,x=n.allowedAutoPlacements,N=t.options.placement,w=sr(N),E=w===N,b=u||(E||!C?[Tl(N)]:vO(N)),T=[N].concat(b).reduce(function(rt,ht){return rt.concat(sr(ht)===Zp?mO(t,{placement:ht,boundary:f,rootBoundary:h,padding:l,flipVariations:C,allowedAutoPlacements:x}):ht)},[]),R=t.rects.reference,M=t.rects.popper,F=new Map,A=!0,I=T[0],$=0;$=0,Oe=te?"width":"height",ge=fs(t,{placement:W,boundary:f,rootBoundary:h,altBoundary:p,padding:l}),xe=te?G?Ln:un:G?An:ln;R[Oe]>M[Oe]&&(xe=Tl(xe));var U=Tl(xe),re=[];if(o&&re.push(ge[Z]<=0),s&&re.push(ge[xe]<=0,ge[U]<=0),re.every(function(rt){return rt})){I=W,A=!1;break}F.set(W,re)}if(A)for(var ne=C?3:1,ke=function(ht){var ct=T.find(function(Ot){var Rt=F.get(Ot);if(Rt)return Rt.slice(0,ht).every(function(jt){return jt})});if(ct)return I=ct,"break"},_e=ne;_e>0;_e--){var Je=ke(_e);if(Je==="break")break}t.placement!==I&&(t.modifiersData[r]._skip=!0,t.placement=I,t.reset=!0)}}const gO={name:"flip",enabled:!0,phase:"main",fn:yO,requiresIfExists:["offset"],data:{_skip:!1}};function oy(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ay(e){return[ln,Ln,An,un].some(function(t){return e[t]>=0})}function wO(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=fs(t,{elementContext:"reference"}),s=fs(t,{altBoundary:!0}),u=oy(a,r),l=oy(s,i,o),f=ay(u),h=ay(l);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:l,isReferenceHidden:f,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":h})}const SO={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:wO};function xO(e,t,n){var r=sr(e),i=[un,ln].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[un,Ln].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function CO(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,a=P1.reduce(function(f,h){return f[h]=xO(h,t.rects,o),f},{}),s=a[t.placement],u=s.x,l=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=l),t.modifiersData[r]=a}const bO={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:CO};function EO(e){var t=e.state,n=e.name;t.modifiersData[n]=L1({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const kO={name:"popperOffsets",enabled:!0,phase:"read",fn:EO,data:{}};function TO(e){return e==="x"?"y":"x"}function NO(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!1:a,u=n.boundary,l=n.rootBoundary,f=n.altBoundary,h=n.padding,p=n.tether,y=p===void 0?!0:p,C=n.tetherOffset,x=C===void 0?0:C,N=fs(t,{boundary:u,rootBoundary:l,padding:h,altBoundary:f}),w=sr(t.placement),E=Wo(t.placement),b=!E,T=Xp(w),R=TO(T),M=t.modifiersData.popperOffsets,F=t.rects.reference,A=t.rects.popper,I=typeof x=="function"?x(Object.assign({},t.rects,{placement:t.placement})):x,$=typeof I=="number"?{mainAxis:I,altAxis:I}:Object.assign({mainAxis:0,altAxis:0},I),W=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,Z={x:0,y:0};if(M){if(o){var G,te=T==="y"?ln:un,Oe=T==="y"?An:Ln,ge=T==="y"?"height":"width",xe=M[T],U=xe+N[te],re=xe-N[Oe],ne=y?-A[ge]/2:0,ke=E===zo?F[ge]:A[ge],_e=E===zo?-A[ge]:-F[ge],Je=t.elements.arrow,rt=y&&Je?Qp(Je):{width:0,height:0},ht=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:I1(),ct=ht[te],Ot=ht[Oe],Rt=Ha(0,F[ge],rt[ge]),jt=b?F[ge]/2-ne-Rt-ct-$.mainAxis:ke-Rt-ct-$.mainAxis,er=b?-F[ge]/2+ne+Rt+Ot+$.mainAxis:_e+Rt+Ot+$.mainAxis,qt=t.elements.arrow&&Es(t.elements.arrow),Bn=qt?T==="y"?qt.clientTop||0:qt.clientLeft||0:0,tn=(G=W==null?void 0:W[T])!=null?G:0,Ge=xe+jt-tn-Bn,gi=xe+er-tn,Dr=Ha(y?ru(U,Ge):U,xe,y?Ii(re,gi):re);M[T]=Dr,Z[T]=Dr-xe}if(s){var tr,wi=T==="x"?ln:un,Si=T==="x"?An:Ln,D=M[R],ae=R==="y"?"height":"width",fe=D+N[wi],he=D-N[Si],Pe=[ln,un].indexOf(w)!==-1,le=(tr=W==null?void 0:W[R])!=null?tr:0,qe=Pe?fe:D-F[ae]-A[ae]-le+$.altAxis,It=Pe?D+F[ae]+A[ae]-le-$.altAxis:he,fr=y&&Pe?QN(qe,D,It):Ha(y?qe:fe,D,y?It:he);M[R]=fr,Z[R]=fr-D}t.modifiersData[r]=Z}}const OO={name:"preventOverflow",enabled:!0,phase:"main",fn:NO,requiresIfExists:["offset"]};function RO(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function _O(e){return e===jn(e)||!lr(e)?Jp(e):RO(e)}function PO(e){var t=e.getBoundingClientRect(),n=Vo(t.width)/e.offsetWidth||1,r=Vo(t.height)/e.offsetHeight||1;return n!==1||r!==1}function MO(e,t,n){n===void 0&&(n=!1);var r=lr(t),i=lr(t)&&PO(t),o=vi(t),a=Ho(e,i,n),s={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&((ci(t)!=="body"||th(o))&&(s=_O(t)),lr(t)?(u=Ho(t,!0),u.x+=t.clientLeft,u.y+=t.clientTop):o&&(u.x=eh(o))),{x:a.left+s.scrollLeft-u.x,y:a.top+s.scrollTop-u.y,width:a.width,height:a.height}}function $O(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var u=t.get(s);u&&i(u)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function IO(e){var t=$O(e);return KN.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function FO(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function DO(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var sy={placement:"bottom",modifiers:[],strategy:"absolute"};function ly(){for(var e=arguments.length,t=new Array(e),n=0;n=0)&&(n[i]=e[i]);return n}const zO={name:"applyStyles",enabled:!1,phase:"afterWrite",fn:()=>{}},VO={name:"ariaDescribedBy",enabled:!0,phase:"afterWrite",effect:({state:e})=>()=>{const{reference:t,popper:n}=e.elements;if("removeAttribute"in t){const r=(t.getAttribute("aria-describedby")||"").split(",").filter(i=>i.trim()!==n.id);r.length?t.setAttribute("aria-describedby",r.join(",")):t.removeAttribute("aria-describedby")}},fn:({state:e})=>{var t;const{popper:n,reference:r}=e.elements,i=(t=n.getAttribute("role"))==null?void 0:t.toLowerCase();if(n.id&&i==="tooltip"&&"setAttribute"in r){const o=r.getAttribute("aria-describedby");if(o&&o.split(",").indexOf(n.id)!==-1)return;r.setAttribute("aria-describedby",o?`${o},${n.id}`:n.id)}}},HO=[];function WO(e,t,n={}){let{enabled:r=!0,placement:i="bottom",strategy:o="absolute",modifiers:a=HO}=n,s=BO(n,jO);const u=m.useRef(a),l=m.useRef(),f=m.useCallback(()=>{var N;(N=l.current)==null||N.update()},[]),h=m.useCallback(()=>{var N;(N=l.current)==null||N.forceUpdate()},[]),[p,y]=DN(m.useState({placement:i,update:f,forceUpdate:h,attributes:{},styles:{popper:{},arrow:{}}})),C=m.useMemo(()=>({name:"updateStateModifier",enabled:!0,phase:"write",requires:["computeStyles"],fn:({state:N})=>{const w={},E={};Object.keys(N.elements).forEach(b=>{w[b]=N.styles[b],E[b]=N.attributes[b]}),y({state:N,styles:w,attributes:E,update:f,forceUpdate:h,placement:N.placement})}}),[f,h,y]),x=m.useMemo(()=>(Va(u.current,a)||(u.current=a),u.current),[a]);return m.useEffect(()=>{!l.current||!r||l.current.setOptions({placement:i,strategy:o,modifiers:[...x,C,zO]})},[o,i,C,r,x]),m.useEffect(()=>{if(!(!r||e==null||t==null))return l.current=LO(e,t,Object.assign({},s,{placement:i,strategy:o,modifiers:[...x,VO,C]})),()=>{l.current!=null&&(l.current.destroy(),l.current=void 0,y(N=>Object.assign({},N,{attributes:{},styles:{popper:{}}})))}},[r,e,t]),p}function iu(e,t){if(e.contains)return e.contains(t);if(e.compareDocumentPosition)return e===t||!!(e.compareDocumentPosition(t)&16)}var UO=function(){},GO=UO;const qO=fi(GO),uy=()=>{};function KO(e){return e.button===0}function ZO(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}const qc=e=>e&&("current"in e?e.current:e),cy={click:"mousedown",mouseup:"mousedown",pointerup:"pointerdown"};function YO(e,t=uy,{disabled:n,clickTrigger:r="click"}={}){const i=m.useRef(!1),o=m.useRef(!1),a=m.useCallback(l=>{const f=qc(e);qO(!!f,"ClickOutside captured a close event but does not have a ref to compare it to. useClickOutside(), should be passed a ref that resolves to a DOM node"),i.current=!f||ZO(l)||!KO(l)||!!iu(f,l.target)||o.current,o.current=!1},[e]),s=wt(l=>{const f=qc(e);f&&iu(f,l.target)&&(o.current=!0)}),u=wt(l=>{i.current||t(l)});m.useEffect(()=>{if(n||e==null)return;const l=Cs(qc(e));let f=(l.defaultView||window).event,h=null;cy[r]&&(h=Xr(l,cy[r],s,!0));const p=Xr(l,r,a,!0),y=Xr(l,r,x=>{if(x===f){f=void 0;return}u(x)});let C=[];return"ontouchstart"in l.documentElement&&(C=[].slice.call(l.body.children).map(x=>Xr(x,"mousemove",uy))),()=>{h==null||h(),p(),y(),C.forEach(x=>x())}},[e,n,r,a,s,u])}function QO(e){const t={};return Array.isArray(e)?(e==null||e.forEach(n=>{t[n.name]=n}),t):e||t}function XO(e={}){return Array.isArray(e)?e:Object.keys(e).map(t=>(e[t].name=t,e[t]))}function JO({enabled:e,enableEvents:t,placement:n,flip:r,offset:i,fixed:o,containerPadding:a,arrowElement:s,popperConfig:u={}}){var l,f,h,p,y;const C=QO(u.modifiers);return Object.assign({},u,{placement:n,enabled:e,strategy:o?"fixed":u.strategy,modifiers:XO(Object.assign({},C,{eventListeners:{enabled:t,options:(l=C.eventListeners)==null?void 0:l.options},preventOverflow:Object.assign({},C.preventOverflow,{options:a?Object.assign({padding:a},(f=C.preventOverflow)==null?void 0:f.options):(h=C.preventOverflow)==null?void 0:h.options}),offset:{options:Object.assign({offset:i},(p=C.offset)==null?void 0:p.options)},arrow:Object.assign({},C.arrow,{enabled:!!s,options:Object.assign({},(y=C.arrow)==null?void 0:y.options,{element:s})}),flip:Object.assign({enabled:!!r},C.flip)}))})}const eR=["children"];function tR(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}const nR=()=>{};function j1(e={}){const t=m.useContext(Iu),[n,r]=v1(),i=m.useRef(!1),{flip:o,offset:a,rootCloseEvent:s,fixed:u=!1,placement:l,popperConfig:f={},enableEventListeners:h=!0,usePopper:p=!!t}=e,y=(t==null?void 0:t.show)==null?!!e.show:t.show;y&&!i.current&&(i.current=!0);const C=M=>{t==null||t.toggle(!1,M)},{placement:x,setMenu:N,menuElement:w,toggleElement:E}=t||{},b=WO(E,w,JO({placement:l||x||"bottom-start",enabled:p,enableEvents:h??y,offset:a,flip:o,fixed:u,arrowElement:n,popperConfig:f})),T=Object.assign({ref:N||nR,"aria-labelledby":E==null?void 0:E.id},b.attributes.popper,{style:b.styles.popper}),R={show:y,placement:x,hasShown:i.current,toggle:t==null?void 0:t.toggle,popper:p?b:null,arrowProps:p?Object.assign({ref:r},b.attributes.arrow,{style:b.styles.arrow}):{}};return YO(w,C,{clickTrigger:s,disabled:!y}),[T,R]}const rR={usePopper:!0};function nh(e){let{children:t}=e,n=tR(e,eR);const[r,i]=j1(n);return c(Wt,{children:t(r,i)})}nh.displayName="DropdownMenu";nh.defaultProps=rR;const B1={prefix:String(Math.round(Math.random()*1e10)),current:0},z1=Kn.createContext(B1);let iR=!!(typeof window<"u"&&window.document&&window.document.createElement),Kc=new WeakMap;function oR(e=!1){let t=m.useContext(z1),n=m.useRef(null);if(n.current===null&&!e){var r,i;let o=(r=Kn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||r===void 0||(i=r.ReactCurrentOwner)===null||i===void 0?void 0:i.current;if(o){let a=Kc.get(o);a==null?Kc.set(o,{id:t.current,state:o.memoizedState}):o.memoizedState!==a.state&&(t.current=a.id,Kc.delete(o))}n.current=++t.current}return n.current}function V1(e){let t=m.useContext(z1);t===B1&&!iR&&console.warn("When server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.");let n=oR(!!e);return e||`react-aria${t.prefix}-${n}`}const H1=e=>{var t;return((t=e.getAttribute("role"))==null?void 0:t.toLowerCase())==="menu"},dy=()=>{};function W1(){const e=V1(),{show:t=!1,toggle:n=dy,setToggle:r,menuElement:i}=m.useContext(Iu)||{},o=m.useCallback(s=>{n(!t,s)},[t,n]),a={id:e,ref:r||dy,onClick:o,"aria-expanded":!!t};return i&&H1(i)&&(a["aria-haspopup"]=!0),[a,{show:t,toggle:n}]}function U1({children:e}){const[t,n]=W1();return c(Wt,{children:e(t,n)})}U1.displayName="DropdownToggle";const aR=m.createContext(null),Ui=(e,t=null)=>e!=null?String(e):t||null,_r=aR,G1=m.createContext(null);G1.displayName="NavContext";const rh=G1,sR="data-rr-ui-",lR="rrUi";function Xo(e){return`${sR}${e}`}function uR(e){return`${lR}${e}`}const cR=["eventKey","disabled","onClick","active","as"];function dR(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}function q1({key:e,href:t,active:n,disabled:r,onClick:i}){const o=m.useContext(_r),a=m.useContext(rh),{activeKey:s}=a||{},u=Ui(e,t),l=n==null&&e!=null?Ui(s)===u:n;return[{onClick:wt(h=>{r||(i==null||i(h),o&&!h.isPropagationStopped()&&o(u,h))}),"aria-disabled":r||void 0,"aria-selected":l,[Xo("dropdown-item")]:""},{isActive:l}]}const K1=m.forwardRef((e,t)=>{let{eventKey:n,disabled:r,onClick:i,active:o,as:a=jp}=e,s=dR(e,cR);const[u]=q1({key:n,href:s.href,disabled:r,onClick:i,active:o});return c(a,Object.assign({},s,{ref:t},u))});K1.displayName="DropdownItem";const Z1=m.createContext(Yo?window:void 0);Z1.Provider;function ih(){return m.useContext(Z1)}function fy(){const e=R1(),t=m.useRef(null),n=m.useCallback(r=>{t.current=r,e()},[e]);return[t,n]}function ks({defaultShow:e,show:t,onSelect:n,onToggle:r,itemSelector:i=`* [${Xo("dropdown-item")}]`,focusFirstItemOnShow:o,placement:a="bottom-start",children:s}){const u=ih(),[l,f]=Fp(t,e,r),[h,p]=fy(),y=h.current,[C,x]=fy(),N=C.current,w=g1(l),E=m.useRef(null),b=m.useRef(!1),T=m.useContext(_r),R=m.useCallback((W,Z,G=Z==null?void 0:Z.type)=>{f(W,{originalEvent:Z,source:G})},[f]),M=wt((W,Z)=>{n==null||n(W,Z),R(!1,Z,"select"),Z.isPropagationStopped()||T==null||T(W,Z)}),F=m.useMemo(()=>({toggle:R,placement:a,show:l,menuElement:y,toggleElement:N,setMenu:p,setToggle:x}),[R,a,l,y,N,p,x]);y&&w&&!l&&(b.current=y.contains(y.ownerDocument.activeElement));const A=wt(()=>{N&&N.focus&&N.focus()}),I=wt(()=>{const W=E.current;let Z=o;if(Z==null&&(Z=h.current&&H1(h.current)?"keyboard":!1),Z===!1||Z==="keyboard"&&!/^key.+$/.test(W))return;const G=wr(h.current,i)[0];G&&G.focus&&G.focus()});m.useEffect(()=>{l?I():b.current&&(b.current=!1,A())},[l,b,A,I]),m.useEffect(()=>{E.current=null});const $=(W,Z)=>{if(!h.current)return null;const G=wr(h.current,i);let te=G.indexOf(W)+Z;return te=Math.max(0,Math.min(te,G.length)),G[te]};return KT(m.useCallback(()=>u.document,[u]),"keydown",W=>{var Z,G;const{key:te}=W,Oe=W.target,ge=(Z=h.current)==null?void 0:Z.contains(Oe),xe=(G=C.current)==null?void 0:G.contains(Oe);if(/input|textarea/i.test(Oe.tagName)&&(te===" "||te!=="Escape"&&ge||te==="Escape"&&Oe.type==="search")||!ge&&!xe||te==="Tab"&&(!h.current||!l))return;E.current=W.type;const re={originalEvent:W,source:W.type};switch(te){case"ArrowUp":{const ne=$(Oe,-1);ne&&ne.focus&&ne.focus(),W.preventDefault();return}case"ArrowDown":if(W.preventDefault(),!l)f(!0,re);else{const ne=$(Oe,1);ne&&ne.focus&&ne.focus()}return;case"Tab":Dp(Oe.ownerDocument,"keyup",ne=>{var ke;(ne.key==="Tab"&&!ne.target||!((ke=h.current)!=null&&ke.contains(ne.target)))&&f(!1,re)},{once:!0});break;case"Escape":te==="Escape"&&(W.preventDefault(),W.stopPropagation()),f(!1,re);break}}),c(_r.Provider,{value:M,children:c(Iu.Provider,{value:F,children:s})})}ks.displayName="Dropdown";ks.Menu=nh;ks.Toggle=U1;ks.Item=K1;const Y1=m.createContext({});Y1.displayName="DropdownContext";const Q1=Y1,X1=m.forwardRef(({bsPrefix:e,className:t,eventKey:n,disabled:r=!1,onClick:i,active:o,as:a=Pu,...s},u)=>{const l=$e(e,"dropdown-item"),[f,h]=q1({key:n,href:s.href,disabled:r,onClick:i,active:o});return c(a,{...s,...f,ref:u,className:be(t,l,h.isActive&&"active",r&&"disabled")})});X1.displayName="DropdownItem";const fR=X1,J1=m.createContext(null);J1.displayName="InputGroupContext";const oh=J1,eS=m.createContext(null);eS.displayName="NavbarContext";const tS=eS;function nS(e,t){return e}const ao=De.oneOf(["start","end"]),pR=De.oneOfType([ao,De.shape({sm:ao}),De.shape({md:ao}),De.shape({lg:ao}),De.shape({xl:ao}),De.shape({xxl:ao}),De.object]),hR={flip:!0};function rS(e,t,n){const r=n?"top-end":"top-start",i=n?"top-start":"top-end",o=n?"bottom-end":"bottom-start",a=n?"bottom-start":"bottom-end",s=n?"right-start":"left-start",u=n?"right-end":"left-end",l=n?"left-start":"right-start",f=n?"left-end":"right-end";let h=e?a:o;return t==="up"?h=e?i:r:t==="end"?h=e?f:l:t==="start"?h=e?u:s:t==="down-centered"?h="bottom":t==="up-centered"&&(h="top"),h}const ah=m.forwardRef(({bsPrefix:e,className:t,align:n,rootCloseEvent:r,flip:i,show:o,renderOnMount:a,as:s="div",popperConfig:u,variant:l,...f},h)=>{let p=!1;const y=m.useContext(tS),C=$e(e,"dropdown-menu"),{align:x,drop:N,isRTL:w}=m.useContext(Q1);n=n||x;const E=m.useContext(oh),b=[];if(n)if(typeof n=="object"){const W=Object.keys(n);if(W.length){const Z=W[0],G=n[Z];p=G==="start",b.push(`${C}-${Z}-${G}`)}}else n==="end"&&(p=!0);const T=rS(p,N,w),[R,{hasShown:M,popper:F,show:A,toggle:I}]=j1({flip:i,rootCloseEvent:r,show:o,usePopper:!y&&b.length===0,offset:[0,2],popperConfig:u,placement:T});if(R.ref=Yi(nS(h),R.ref),hf(()=>{A&&(F==null||F.update())},[A]),!M&&!a&&!E)return null;typeof s!="string"&&(R.show=A,R.close=()=>I==null?void 0:I(!1),R.align=n);let $=f.style;return F!=null&&F.placement&&($={...f.style,...R.style},f["x-placement"]=F.placement),c(s,{...f,...R,style:$,...(b.length||y)&&{"data-bs-popper":"static"},className:be(t,C,A&&"show",p&&`${C}-end`,l&&`${C}-${l}`,...b)})});ah.displayName="DropdownMenu";ah.defaultProps=hR;const iS=ah,oS=m.forwardRef(({bsPrefix:e,split:t,className:n,childBsPrefix:r,as:i=ee,...o},a)=>{const s=$e(e,"dropdown-toggle"),u=m.useContext(Iu);r!==void 0&&(o.bsPrefix=r);const[l]=W1();return l.ref=Yi(l.ref,nS(a)),c(i,{className:be(n,s,t&&`${s}-split`,(u==null?void 0:u.show)&&"show"),...l,...o})});oS.displayName="DropdownToggle";const aS=oS,mR=Nt("dropdown-header",{defaultProps:{role:"heading"}}),vR=Nt("dropdown-divider",{Component:"hr",defaultProps:{role:"separator"}}),yR=Nt("dropdown-item-text",{Component:"span"}),gR={navbar:!1,align:"start",autoClose:!0,drop:"down"},sh=m.forwardRef((e,t)=>{const{bsPrefix:n,drop:r,show:i,className:o,align:a,onSelect:s,onToggle:u,focusFirstItemOnShow:l,as:f="div",navbar:h,autoClose:p,...y}=xs(e,{show:"onToggle"}),C=m.useContext(oh),x=$e(n,"dropdown"),N=Yw(),w=F=>p===!1?F==="click":p==="inside"?F!=="rootClose":p==="outside"?F!=="select":!0,E=wt((F,A)=>{A.originalEvent.currentTarget===document&&(A.source!=="keydown"||A.originalEvent.key==="Escape")&&(A.source="rootClose"),w(A.source)&&(u==null||u(F,A))}),T=rS(a==="end",r,N),R=m.useMemo(()=>({align:a,drop:r,isRTL:N}),[a,r,N]),M={down:x,"down-centered":`${x}-center`,up:"dropup","up-centered":"dropup-center dropup",end:"dropend",start:"dropstart"};return c(Q1.Provider,{value:R,children:c(ks,{placement:T,show:i,onSelect:s,onToggle:E,focusFirstItemOnShow:l,itemSelector:`.${x}-item:not(.disabled):not(:disabled)`,children:C?y.children:c(f,{...y,ref:t,className:be(o,i&&"show",M[r])})})})});sh.displayName="Dropdown";sh.defaultProps=gR;const si=Object.assign(sh,{Toggle:aS,Menu:iS,Item:fR,ItemText:yR,Divider:vR,Header:mR}),wR={id:De.string,href:De.string,onClick:De.func,title:De.node.isRequired,disabled:De.bool,align:pR,menuRole:De.string,renderMenuOnMount:De.bool,rootCloseEvent:De.string,menuVariant:De.oneOf(["dark"]),flip:De.bool,bsPrefix:De.string,variant:De.string,size:De.string},lh=m.forwardRef(({title:e,children:t,bsPrefix:n,rootCloseEvent:r,variant:i,size:o,menuRole:a,renderMenuOnMount:s,disabled:u,href:l,id:f,menuVariant:h,flip:p,...y},C)=>g(si,{ref:C,...y,children:[c(aS,{id:f,href:l,size:o,variant:i,disabled:u,childBsPrefix:n,children:e}),c(iS,{role:a,renderOnMount:s,rootCloseEvent:r,variant:h,flip:p,children:t})]}));lh.displayName="DropdownButton";lh.propTypes=wR;const uh=lh,SR={type:De.string,tooltip:De.bool,as:De.elementType},ch=m.forwardRef(({as:e="div",className:t,type:n="valid",tooltip:r=!1,...i},o)=>c(e,{...i,ref:o,className:be(t,`${n}-${r?"tooltip":"feedback"}`)}));ch.displayName="Feedback";ch.propTypes=SR;const sS=ch,xR=m.createContext({}),Pr=xR,lS=m.forwardRef(({id:e,bsPrefix:t,className:n,type:r="checkbox",isValid:i=!1,isInvalid:o=!1,as:a="input",...s},u)=>{const{controlId:l}=m.useContext(Pr);return t=$e(t,"form-check-input"),c(a,{...s,ref:u,type:r,id:e||l,className:be(n,t,i&&"is-valid",o&&"is-invalid")})});lS.displayName="FormCheckInput";const Du=lS,uS=m.forwardRef(({bsPrefix:e,className:t,htmlFor:n,...r},i)=>{const{controlId:o}=m.useContext(Pr);return e=$e(e,"form-check-label"),c("label",{...r,ref:i,htmlFor:n||o,className:be(t,e)})});uS.displayName="FormCheckLabel";const gf=uS,cS=m.forwardRef(({id:e,bsPrefix:t,bsSwitchPrefix:n,inline:r=!1,reverse:i=!1,disabled:o=!1,isValid:a=!1,isInvalid:s=!1,feedbackTooltip:u=!1,feedback:l,feedbackType:f,className:h,style:p,title:y="",type:C="checkbox",label:x,children:N,as:w="input",...E},b)=>{t=$e(t,"form-check"),n=$e(n,"form-switch");const{controlId:T}=m.useContext(Pr),R=m.useMemo(()=>({controlId:e||T}),[T,e]),M=!N&&x!=null&&x!==!1||MN(N,gf),F=c(Du,{...E,type:C==="switch"?"checkbox":C,ref:b,isValid:a,isInvalid:s,disabled:o,as:w});return c(Pr.Provider,{value:R,children:c("div",{style:p,className:be(h,M&&t,r&&`${t}-inline`,i&&`${t}-reverse`,C==="switch"&&n),children:N||g(Wt,{children:[F,M&&c(gf,{title:y,children:x}),l&&c(sS,{type:f,tooltip:u,children:l})]})})})});cS.displayName="FormCheck";const ou=Object.assign(cS,{Input:Du,Label:gf}),dS=m.forwardRef(({bsPrefix:e,type:t,size:n,htmlSize:r,id:i,className:o,isValid:a=!1,isInvalid:s=!1,plaintext:u,readOnly:l,as:f="input",...h},p)=>{const{controlId:y}=m.useContext(Pr);e=$e(e,"form-control");let C;return u?C={[`${e}-plaintext`]:!0}:C={[e]:!0,[`${e}-${n}`]:n},c(f,{...h,type:t,size:r,ref:p,readOnly:l,id:i||y,className:be(o,C,a&&"is-valid",s&&"is-invalid",t==="color"&&`${e}-color`)})});dS.displayName="FormControl";const CR=Object.assign(dS,{Feedback:sS}),bR=Nt("form-floating"),fS=m.forwardRef(({controlId:e,as:t="div",...n},r)=>{const i=m.useMemo(()=>({controlId:e}),[e]);return c(Pr.Provider,{value:i,children:c(t,{...n,ref:r})})});fS.displayName="FormGroup";const pS=fS,ER={column:!1,visuallyHidden:!1},dh=m.forwardRef(({as:e="label",bsPrefix:t,column:n,visuallyHidden:r,className:i,htmlFor:o,...a},s)=>{const{controlId:u}=m.useContext(Pr);t=$e(t,"form-label");let l="col-form-label";typeof n=="string"&&(l=`${l} ${l}-${n}`);const f=be(i,t,r&&"visually-hidden",n&&l);return o=o||u,n?c(Xe,{ref:s,as:"label",className:f,htmlFor:o,...a}):c(e,{ref:s,className:f,htmlFor:o,...a})});dh.displayName="FormLabel";dh.defaultProps=ER;const kR=dh,hS=m.forwardRef(({bsPrefix:e,className:t,id:n,...r},i)=>{const{controlId:o}=m.useContext(Pr);return e=$e(e,"form-range"),c("input",{...r,type:"range",ref:i,className:be(t,e),id:n||o})});hS.displayName="FormRange";const TR=hS,mS=m.forwardRef(({bsPrefix:e,size:t,htmlSize:n,className:r,isValid:i=!1,isInvalid:o=!1,id:a,...s},u)=>{const{controlId:l}=m.useContext(Pr);return e=$e(e,"form-select"),c("select",{...s,size:n,ref:u,className:be(r,e,t&&`${e}-${t}`,i&&"is-valid",o&&"is-invalid"),id:a||l})});mS.displayName="FormSelect";const NR=mS,vS=m.forwardRef(({bsPrefix:e,className:t,as:n="small",muted:r,...i},o)=>(e=$e(e,"form-text"),c(n,{...i,ref:o,className:be(t,e,r&&"text-muted")})));vS.displayName="FormText";const OR=vS,yS=m.forwardRef((e,t)=>c(ou,{...e,ref:t,type:"switch"}));yS.displayName="Switch";const RR=Object.assign(yS,{Input:ou.Input,Label:ou.Label}),gS=m.forwardRef(({bsPrefix:e,className:t,children:n,controlId:r,label:i,...o},a)=>(e=$e(e,"form-floating"),g(pS,{ref:a,className:be(t,e),controlId:r,...o,children:[n,c("label",{htmlFor:r,children:i})]})));gS.displayName="FloatingLabel";const _R=gS,PR={_ref:De.any,validated:De.bool,as:De.elementType},fh=m.forwardRef(({className:e,validated:t,as:n="form",...r},i)=>c(n,{...r,ref:i,className:be(e,t&&"was-validated")}));fh.displayName="Form";fh.propTypes=PR;const j=Object.assign(fh,{Group:pS,Control:CR,Floating:bR,Check:ou,Switch:RR,Label:kR,Text:OR,Range:TR,Select:NR,FloatingLabel:_R}),ph=Nt("input-group-text",{Component:"span"}),MR=e=>c(ph,{children:c(Du,{type:"checkbox",...e})}),$R=e=>c(ph,{children:c(Du,{type:"radio",...e})}),wS=m.forwardRef(({bsPrefix:e,size:t,hasValidation:n,className:r,as:i="div",...o},a)=>{e=$e(e,"input-group");const s=m.useMemo(()=>({}),[]);return c(oh.Provider,{value:s,children:c(i,{ref:a,...o,className:be(r,e,t&&`${e}-${t}`,n&&"has-validation")})})});wS.displayName="InputGroup";const Gt=Object.assign(wS,{Text:ph,Radio:$R,Checkbox:MR}),IR=m.createContext(null),Jo=IR,FR=["as","active","eventKey"];function DR(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}function SS({key:e,onClick:t,active:n,id:r,role:i,disabled:o}){const a=m.useContext(_r),s=m.useContext(rh),u=m.useContext(Jo);let l=n;const f={role:i};if(s){!i&&s.role==="tablist"&&(f.role="tab");const h=s.getControllerId(e??null),p=s.getControlledId(e??null);f[Xo("event-key")]=e,f.id=h||r,l=n==null&&e!=null?s.activeKey===e:n,(l||!(u!=null&&u.unmountOnExit)&&!(u!=null&&u.mountOnEnter))&&(f["aria-controls"]=p)}return f.role==="tab"&&(f["aria-selected"]=l,l||(f.tabIndex=-1),o&&(f.tabIndex=-1,f["aria-disabled"]=!0)),f.onClick=wt(h=>{o||(t==null||t(h),e!=null&&a&&!h.isPropagationStopped()&&a(e,h))}),[f,{isActive:l}]}const xS=m.forwardRef((e,t)=>{let{as:n=jp,active:r,eventKey:i}=e,o=DR(e,FR);const[a,s]=SS(Object.assign({key:Ui(i,o.href),active:r},o));return a[Xo("active")]=s.isActive,c(n,Object.assign({},o,a,{ref:t}))});xS.displayName="NavItem";const AR=xS,LR=["as","onSelect","activeKey","role","onKeyDown"];function jR(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}const py=()=>{},hy=Xo("event-key"),CS=m.forwardRef((e,t)=>{let{as:n="div",onSelect:r,activeKey:i,role:o,onKeyDown:a}=e,s=jR(e,LR);const u=R1(),l=m.useRef(!1),f=m.useContext(_r),h=m.useContext(Jo);let p,y;h&&(o=o||"tablist",i=h.activeKey,p=h.getControlledId,y=h.getControllerId);const C=m.useRef(null),x=b=>{const T=C.current;if(!T)return null;const R=wr(T,`[${hy}]:not([aria-disabled=true])`),M=T.querySelector("[aria-selected=true]");if(!M||M!==document.activeElement)return null;const F=R.indexOf(M);if(F===-1)return null;let A=F+b;return A>=R.length&&(A=0),A<0&&(A=R.length-1),R[A]},N=(b,T)=>{b!=null&&(r==null||r(b,T),f==null||f(b,T))},w=b=>{if(a==null||a(b),!h)return;let T;switch(b.key){case"ArrowLeft":case"ArrowUp":T=x(-1);break;case"ArrowRight":case"ArrowDown":T=x(1);break;default:return}T&&(b.preventDefault(),N(T.dataset[uR("EventKey")]||null,b),l.current=!0,u())};m.useEffect(()=>{if(C.current&&l.current){const b=C.current.querySelector(`[${hy}][aria-selected=true]`);b==null||b.focus()}l.current=!1});const E=Yi(t,C);return c(_r.Provider,{value:N,children:c(rh.Provider,{value:{role:o,activeKey:Ui(i),getControlledId:p||py,getControllerId:y||py},children:c(n,Object.assign({},s,{onKeyDown:w,ref:E,role:o}))})})});CS.displayName="Nav";const BR=Object.assign(CS,{Item:AR});var il;function my(e){if((!il&&il!==0||e)&&Yo){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),il=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return il}function Zc(e){e===void 0&&(e=Cs());try{var t=e.activeElement;return!t||!t.nodeName?null:t}catch{return e.body}}function zR(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}const vy=Xo("modal-open");class VR{constructor({ownerDocument:t,handleContainerOverflow:n=!0,isRTL:r=!1}={}){this.handleContainerOverflow=n,this.isRTL=r,this.modals=[],this.ownerDocument=t}getScrollbarWidth(){return zR(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(t){}removeModalAttributes(t){}setContainerStyle(t){const n={overflow:"hidden"},r=this.isRTL?"paddingLeft":"paddingRight",i=this.getElement();t.style={overflow:i.style.overflow,[r]:i.style[r]},t.scrollBarWidth&&(n[r]=`${parseInt(Er(i,r)||"0",10)+t.scrollBarWidth}px`),i.setAttribute(vy,""),Er(i,n)}reset(){[...this.modals].forEach(t=>this.remove(t))}removeContainerStyle(t){const n=this.getElement();n.removeAttribute(vy),Object.assign(n.style,t.style)}add(t){let n=this.modals.indexOf(t);return n!==-1||(n=this.modals.length,this.modals.push(t),this.setModalAttributes(t),n!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),n}remove(t){const n=this.modals.indexOf(t);n!==-1&&(this.modals.splice(n,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(t))}isTopModal(t){return!!this.modals.length&&this.modals[this.modals.length-1]===t}}const hh=VR,Yc=(e,t)=>Yo?e==null?(t||Cs()).body:(typeof e=="function"&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;function HR(e,t){const n=ih(),[r,i]=m.useState(()=>Yc(e,n==null?void 0:n.document));if(!r){const o=Yc(e);o&&i(o)}return m.useEffect(()=>{t&&r&&t(r)},[t,r]),m.useEffect(()=>{const o=Yc(e);o!==r&&i(o)},[e,r]),r}function mh({children:e,in:t,onExited:n,mountOnEnter:r,unmountOnExit:i}){const o=m.useRef(null),a=m.useRef(t),s=wt(n);m.useEffect(()=>{t?a.current=!0:s(o.current)},[t,s]);const u=Yi(o,e.ref),l=m.cloneElement(e,{ref:u});return t?l:i||!a.current&&r?null:l}function WR({in:e,onTransition:t}){const n=m.useRef(null),r=m.useRef(!0),i=wt(t);return hf(()=>{if(!n.current)return;let o=!1;return i({in:e,element:n.current,initial:r.current,isStale:()=>o}),()=>{o=!0}},[e,i]),hf(()=>(r.current=!1,()=>{r.current=!0}),[]),n}function UR({children:e,in:t,onExited:n,onEntered:r,transition:i}){const[o,a]=m.useState(!t);t&&o&&a(!1);const s=WR({in:!!t,onTransition:l=>{const f=()=>{l.isStale()||(l.in?r==null||r(l.element,l.initial):(a(!0),n==null||n(l.element)))};Promise.resolve(i(l)).then(f,h=>{throw l.in||a(!0),h})}}),u=Yi(s,e.ref);return o&&!t?null:m.cloneElement(e,{ref:u})}function yy(e,t,n){return e?c(e,Object.assign({},n)):t?c(UR,Object.assign({},n,{transition:t})):c(mh,Object.assign({},n))}const GR=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function qR(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}let Qc;function KR(e){return Qc||(Qc=new hh({ownerDocument:e==null?void 0:e.document})),Qc}function ZR(e){const t=ih(),n=e||KR(t),r=m.useRef({dialog:null,backdrop:null});return Object.assign(r.current,{add:()=>n.add(r.current),remove:()=>n.remove(r.current),isTopModal:()=>n.isTopModal(r.current),setDialogRef:m.useCallback(i=>{r.current.dialog=i},[]),setBackdropRef:m.useCallback(i=>{r.current.backdrop=i},[])})}const bS=m.forwardRef((e,t)=>{let{show:n=!1,role:r="dialog",className:i,style:o,children:a,backdrop:s=!0,keyboard:u=!0,onBackdropClick:l,onEscapeKeyDown:f,transition:h,runTransition:p,backdropTransition:y,runBackdropTransition:C,autoFocus:x=!0,enforceFocus:N=!0,restoreFocus:w=!0,restoreFocusOptions:E,renderDialog:b,renderBackdrop:T=Ge=>c("div",Object.assign({},Ge)),manager:R,container:M,onShow:F,onHide:A=()=>{},onExit:I,onExited:$,onExiting:W,onEnter:Z,onEntering:G,onEntered:te}=e,Oe=qR(e,GR);const ge=HR(M),xe=ZR(R),U=y1(),re=g1(n),[ne,ke]=m.useState(!n),_e=m.useRef(null);m.useImperativeHandle(t,()=>xe,[xe]),Yo&&!re&&n&&(_e.current=Zc()),n&&ne&&ke(!1);const Je=wt(()=>{if(xe.add(),jt.current=Xr(document,"keydown",Ot),Rt.current=Xr(document,"focus",()=>setTimeout(ht),!0),F&&F(),x){const Ge=Zc(document);xe.dialog&&Ge&&!iu(xe.dialog,Ge)&&(_e.current=Ge,xe.dialog.focus())}}),rt=wt(()=>{if(xe.remove(),jt.current==null||jt.current(),Rt.current==null||Rt.current(),w){var Ge;(Ge=_e.current)==null||Ge.focus==null||Ge.focus(E),_e.current=null}});m.useEffect(()=>{!n||!ge||Je()},[n,ge,Je]),m.useEffect(()=>{ne&&rt()},[ne,rt]),N1(()=>{rt()});const ht=wt(()=>{if(!N||!U()||!xe.isTopModal())return;const Ge=Zc();xe.dialog&&Ge&&!iu(xe.dialog,Ge)&&xe.dialog.focus()}),ct=wt(Ge=>{Ge.target===Ge.currentTarget&&(l==null||l(Ge),s===!0&&A())}),Ot=wt(Ge=>{u&&Ge.keyCode===27&&xe.isTopModal()&&(f==null||f(Ge),Ge.defaultPrevented||A())}),Rt=m.useRef(),jt=m.useRef(),er=(...Ge)=>{ke(!0),$==null||$(...Ge)};if(!ge)return null;const qt=Object.assign({role:r,ref:xe.setDialogRef,"aria-modal":r==="dialog"?!0:void 0},Oe,{style:o,className:i,tabIndex:-1});let Bn=b?b(qt):c("div",Object.assign({},qt,{children:m.cloneElement(a,{role:"document"})}));Bn=yy(h,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!n,onExit:I,onExiting:W,onExited:er,onEnter:Z,onEntering:G,onEntered:te,children:Bn});let tn=null;return s&&(tn=T({ref:xe.setBackdropRef,onClick:ct}),tn=yy(y,C,{in:!!n,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:tn})),c(Wt,{children:Eo.createPortal(g(Wt,{children:[tn,Bn]}),ge)})});bS.displayName="Modal";const YR=Object.assign(bS,{Manager:hh});function QR(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function XR(e,t){e.classList?e.classList.add(t):QR(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function gy(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function JR(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=gy(e.className,t):e.setAttribute("class",gy(e.className&&e.className.baseVal||"",t))}const so={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class e_ extends hh{adjustAndStore(t,n,r){const i=n.style[t];n.dataset[t]=i,Er(n,{[t]:`${parseFloat(Er(n,t))+r}px`})}restore(t,n){const r=n.dataset[t];r!==void 0&&(delete n.dataset[t],Er(n,{[t]:r}))}setContainerStyle(t){super.setContainerStyle(t);const n=this.getElement();if(XR(n,"modal-open"),!t.scrollBarWidth)return;const r=this.isRTL?"paddingLeft":"paddingRight",i=this.isRTL?"marginLeft":"marginRight";wr(n,so.FIXED_CONTENT).forEach(o=>this.adjustAndStore(r,o,t.scrollBarWidth)),wr(n,so.STICKY_CONTENT).forEach(o=>this.adjustAndStore(i,o,-t.scrollBarWidth)),wr(n,so.NAVBAR_TOGGLER).forEach(o=>this.adjustAndStore(i,o,t.scrollBarWidth))}removeContainerStyle(t){super.removeContainerStyle(t);const n=this.getElement();JR(n,"modal-open");const r=this.isRTL?"paddingLeft":"paddingRight",i=this.isRTL?"marginLeft":"marginRight";wr(n,so.FIXED_CONTENT).forEach(o=>this.restore(r,o)),wr(n,so.STICKY_CONTENT).forEach(o=>this.restore(i,o)),wr(n,so.NAVBAR_TOGGLER).forEach(o=>this.restore(i,o))}}let Xc;function t_(e){return Xc||(Xc=new e_(e)),Xc}const n_=Nt("modal-body"),r_=m.createContext({onHide(){}}),ES=r_,kS=m.forwardRef(({bsPrefix:e,className:t,contentClassName:n,centered:r,size:i,fullscreen:o,children:a,scrollable:s,...u},l)=>{e=$e(e,"modal");const f=`${e}-dialog`,h=typeof o=="string"?`${e}-fullscreen-${o}`:`${e}-fullscreen`;return c("div",{...u,ref:l,className:be(f,t,i&&`${e}-${i}`,r&&`${f}-centered`,s&&`${f}-scrollable`,o&&h),children:c("div",{className:be(`${e}-content`,n),children:a})})});kS.displayName="ModalDialog";const TS=kS,i_=Nt("modal-footer"),o_={closeLabel:"Close",closeButton:!1},NS=m.forwardRef(({closeLabel:e,closeVariant:t,closeButton:n,onHide:r,children:i,...o},a)=>{const s=m.useContext(ES),u=wt(()=>{s==null||s.onHide(),r==null||r()});return g("div",{ref:a,...o,children:[i,n&&c(zp,{"aria-label":e,variant:t,onClick:u})]})});NS.defaultProps=o_;const a_=NS,s_={closeLabel:"Close",closeButton:!1},vh=m.forwardRef(({bsPrefix:e,className:t,...n},r)=>(e=$e(e,"modal-header"),c(a_,{ref:r,...n,className:be(t,e)})));vh.displayName="ModalHeader";vh.defaultProps=s_;const l_=vh,u_=$u("h4"),c_=Nt("modal-title",{Component:u_}),d_={show:!1,backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,animation:!0,dialogAs:TS};function f_(e){return c(Qo,{...e,timeout:null})}function p_(e){return c(Qo,{...e,timeout:null})}const yh=m.forwardRef(({bsPrefix:e,className:t,style:n,dialogClassName:r,contentClassName:i,children:o,dialogAs:a,"aria-labelledby":s,"aria-describedby":u,"aria-label":l,show:f,animation:h,backdrop:p,keyboard:y,onEscapeKeyDown:C,onShow:x,onHide:N,container:w,autoFocus:E,enforceFocus:b,restoreFocus:T,restoreFocusOptions:R,onEntered:M,onExit:F,onExiting:A,onEnter:I,onEntering:$,onExited:W,backdropClassName:Z,manager:G,...te},Oe)=>{const[ge,xe]=m.useState({}),[U,re]=m.useState(!1),ne=m.useRef(!1),ke=m.useRef(!1),_e=m.useRef(null),[Je,rt]=v1(),ht=Yi(Oe,rt),ct=wt(N),Ot=Yw();e=$e(e,"modal");const Rt=m.useMemo(()=>({onHide:ct}),[ct]);function jt(){return G||t_({isRTL:Ot})}function er(le){if(!Yo)return;const qe=jt().getScrollbarWidth()>0,It=le.scrollHeight>Cs(le).documentElement.clientHeight;xe({paddingRight:qe&&!It?my():void 0,paddingLeft:!qe&&It?my():void 0})}const qt=wt(()=>{Je&&er(Je.dialog)});N1(()=>{pf(window,"resize",qt),_e.current==null||_e.current()});const Bn=()=>{ne.current=!0},tn=le=>{ne.current&&Je&&le.target===Je.dialog&&(ke.current=!0),ne.current=!1},Ge=()=>{re(!0),_e.current=Jw(Je.dialog,()=>{re(!1)})},gi=le=>{le.target===le.currentTarget&&Ge()},Dr=le=>{if(p==="static"){gi(le);return}if(ke.current||le.target!==le.currentTarget){ke.current=!1;return}N==null||N()},tr=le=>{y?C==null||C(le):(le.preventDefault(),p==="static"&&Ge())},wi=(le,qe)=>{le&&er(le),I==null||I(le,qe)},Si=le=>{_e.current==null||_e.current(),F==null||F(le)},D=(le,qe)=>{$==null||$(le,qe),Dp(window,"resize",qt)},ae=le=>{le&&(le.style.display=""),W==null||W(le),pf(window,"resize",qt)},fe=m.useCallback(le=>c("div",{...le,className:be(`${e}-backdrop`,Z,!h&&"show")}),[h,Z,e]),he={...n,...ge};he.display="block";const Pe=le=>c("div",{role:"dialog",...le,style:he,className:be(t,e,U&&`${e}-static`,!h&&"show"),onClick:p?Dr:void 0,onMouseUp:tn,"aria-label":l,"aria-labelledby":s,"aria-describedby":u,children:c(a,{...te,onMouseDown:Bn,className:r,contentClassName:i,children:o})});return c(ES.Provider,{value:Rt,children:c(YR,{show:f,ref:ht,backdrop:p,container:w,keyboard:!0,autoFocus:E,enforceFocus:b,restoreFocus:T,restoreFocusOptions:R,onEscapeKeyDown:tr,onShow:x,onHide:N,onEnter:wi,onEntering:D,onEntered:M,onExit:Si,onExiting:A,onExited:ae,manager:jt(),transition:h?f_:void 0,backdropTransition:h?p_:void 0,renderBackdrop:fe,renderDialog:Pe})})});yh.displayName="Modal";yh.defaultProps=d_;const z=Object.assign(yh,{Body:n_,Header:l_,Title:c_,Footer:i_,Dialog:TS,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150});var wy={exports:{}},wf={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;function n(r){function i(a,s,u,l,f,h){var p=l||"<>",y=h||u;if(s[u]==null)return a?new Error("Required "+f+" `"+y+"` was not specified "+("in `"+p+"`.")):null;for(var C=arguments.length,x=Array(C>6?C-6:0),N=6;N{e=$e(e,"nav-link");const[s,u]=SS({key:Ui(i,o.href),active:r,...o});return c(n,{...o,...s,ref:a,className:be(t,e,o.disabled&&"disabled",u.isActive&&"active")})});gh.displayName="NavLink";gh.defaultProps=m_;const RS=gh,v_={justify:!1,fill:!1},wh=m.forwardRef((e,t)=>{const{as:n="div",bsPrefix:r,variant:i,fill:o,justify:a,navbar:s,navbarScroll:u,className:l,activeKey:f,...h}=xs(e,{activeKey:"onSelect"}),p=$e(r,"nav");let y,C,x=!1;const N=m.useContext(tS),w=m.useContext(E1);return N?(y=N.bsPrefix,x=s??!0):w&&({cardHeaderBsPrefix:C}=w),c(BR,{as:n,ref:t,activeKey:f,className:be(l,{[p]:!x,[`${y}-nav`]:x,[`${y}-nav-scroll`]:x&&u,[`${C}-${i}`]:!!C,[`${p}-${i}`]:!!i,[`${p}-fill`]:o,[`${p}-justified`]:a}),...h})});wh.displayName="Nav";wh.defaultProps=v_;const y_=Object.assign(wh,{Item:OS,Link:RS}),Sy=1e3,g_={min:0,max:100,animated:!1,isChild:!1,visuallyHidden:!1,striped:!1};function w_(e,t,n){const r=(e-t)/(n-t)*100;return Math.round(r*Sy)/Sy}function xy({min:e,now:t,max:n,label:r,visuallyHidden:i,striped:o,animated:a,className:s,style:u,variant:l,bsPrefix:f,...h},p){return c("div",{ref:p,...h,role:"progressbar",className:be(s,`${f}-bar`,{[`bg-${l}`]:l,[`${f}-bar-animated`]:a,[`${f}-bar-striped`]:a||o}),style:{width:`${w_(t,e,n)}%`,...u},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:i?c("span",{className:"visually-hidden",children:r}):r})}const Sh=m.forwardRef(({isChild:e,...t},n)=>{if(t.bsPrefix=$e(t.bsPrefix,"progress"),e)return xy(t,n);const{min:r,now:i,max:o,label:a,visuallyHidden:s,striped:u,animated:l,bsPrefix:f,variant:h,className:p,children:y,...C}=t;return c("div",{ref:n,...C,className:be(p,f),children:y?mf(y,x=>m.cloneElement(x,{isChild:!0})):xy({min:r,now:i,max:o,label:a,visuallyHidden:s,striped:u,animated:l,bsPrefix:f,variant:h},n)})});Sh.displayName="ProgressBar";Sh.defaultProps=g_;const xa=Sh,_S=m.forwardRef(({bsPrefix:e,className:t,as:n="div",...r},i)=>{const o=$e(e,"row"),a=Kw(),s=Zw(),u=`${o}-cols`,l=[];return a.forEach(f=>{const h=r[f];delete r[f];let p;h!=null&&typeof h=="object"?{cols:p}=h:p=h;const y=f!==s?`-${f}`:"";p!=null&&l.push(`${u}${y}-${p}`)}),c(n,{ref:i,...r,className:be(t,o,...l)})});_S.displayName="Row";const ur=_S,S_=["active","eventKey","mountOnEnter","transition","unmountOnExit","role","onEnter","onEntering","onEntered","onExit","onExiting","onExited"],x_=["activeKey","getControlledId","getControllerId"],C_=["as"];function Sf(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}function PS(e){let{active:t,eventKey:n,mountOnEnter:r,transition:i,unmountOnExit:o,role:a="tabpanel",onEnter:s,onEntering:u,onEntered:l,onExit:f,onExiting:h,onExited:p}=e,y=Sf(e,S_);const C=m.useContext(Jo);if(!C)return[Object.assign({},y,{role:a}),{eventKey:n,isActive:t,mountOnEnter:r,transition:i,unmountOnExit:o,onEnter:s,onEntering:u,onEntered:l,onExit:f,onExiting:h,onExited:p}];const{activeKey:x,getControlledId:N,getControllerId:w}=C,E=Sf(C,x_),b=Ui(n);return[Object.assign({},y,{role:a,id:N(n),"aria-labelledby":w(n)}),{eventKey:n,isActive:t==null&&b!=null?Ui(x)===b:t,transition:i||E.transition,mountOnEnter:r??E.mountOnEnter,unmountOnExit:o??E.unmountOnExit,onEnter:s,onEntering:u,onEntered:l,onExit:f,onExiting:h,onExited:p}]}const MS=m.forwardRef((e,t)=>{let{as:n="div"}=e,r=Sf(e,C_);const[i,{isActive:o,onEnter:a,onEntering:s,onEntered:u,onExit:l,onExiting:f,onExited:h,mountOnEnter:p,unmountOnExit:y,transition:C=mh}]=PS(r);return c(Jo.Provider,{value:null,children:c(_r.Provider,{value:null,children:c(C,{in:o,onEnter:a,onEntering:s,onEntered:u,onExit:l,onExiting:f,onExited:h,mountOnEnter:p,unmountOnExit:y,children:c(n,Object.assign({},i,{ref:t,hidden:!o,"aria-hidden":!o}))})})})});MS.displayName="TabPanel";const $S=e=>{const{id:t,generateChildId:n,onSelect:r,activeKey:i,defaultActiveKey:o,transition:a,mountOnEnter:s,unmountOnExit:u,children:l}=e,[f,h]=Fp(i,o,r),p=V1(t),y=m.useMemo(()=>n||((x,N)=>p?`${p}-${N}-${x}`:null),[p,n]),C=m.useMemo(()=>({onSelect:h,activeKey:f,transition:a,mountOnEnter:s||!1,unmountOnExit:u||!1,getControlledId:x=>y(x,"tabpane"),getControllerId:x=>y(x,"tab")}),[h,f,a,s,u,y]);return c(Jo.Provider,{value:C,children:c(_r.Provider,{value:h||null,children:l})})};$S.Panel=MS;const IS=$S;function xh(e){return typeof e=="boolean"?e?Qo:mh:e}const FS=({transition:e,...t})=>c(IS,{...t,transition:xh(e)});FS.displayName="TabContainer";const b_=FS,DS=Nt("tab-content"),AS=m.forwardRef(({bsPrefix:e,transition:t,...n},r)=>{const[{className:i,as:o="div",...a},{isActive:s,onEnter:u,onEntering:l,onEntered:f,onExit:h,onExiting:p,onExited:y,mountOnEnter:C,unmountOnExit:x,transition:N=Qo}]=PS({...n,transition:xh(t)}),w=$e(e,"tab-pane");return c(Jo.Provider,{value:null,children:c(_r.Provider,{value:null,children:c(N,{in:s,onEnter:u,onEntering:l,onEntered:f,onExit:h,onExiting:p,onExited:y,mountOnEnter:C,unmountOnExit:x,children:c(o,{...a,ref:r,className:be(i,w,s&&"active")})})})})});AS.displayName="TabPane";const LS=AS,E_={eventKey:De.oneOfType([De.string,De.number]),title:De.node.isRequired,disabled:De.bool,tabClassName:De.string,tabAttrs:De.object},jS=()=>{throw new Error("ReactBootstrap: The `Tab` component is not meant to be rendered! It's an abstract component that is only valid as a direct Child of the `Tabs` Component. For custom tabs components use TabPane and TabsContainer directly")};jS.propTypes=E_;const k_=Object.assign(jS,{Container:b_,Content:DS,Pane:LS}),T_=m.forwardRef(({bsPrefix:e,className:t,striped:n,bordered:r,borderless:i,hover:o,size:a,variant:s,responsive:u,...l},f)=>{const h=$e(e,"table"),p=be(t,h,s&&`${h}-${s}`,a&&`${h}-${a}`,n&&`${h}-${typeof n=="string"?`striped-${n}`:"striped"}`,r&&`${h}-bordered`,i&&`${h}-borderless`,o&&`${h}-hover`),y=c("table",{...l,className:p,ref:f});if(u){let C=`${h}-responsive`;return typeof u=="string"&&(C=`${C}-${u}`),c("div",{className:C,children:y})}return y}),ea=T_,N_={variant:"tabs",mountOnEnter:!1,unmountOnExit:!1};function O_(e){let t;return PN(e,n=>{t==null&&(t=n.props.eventKey)}),t}function R_(e){const{title:t,eventKey:n,disabled:r,tabClassName:i,tabAttrs:o,id:a}=e.props;return t==null?null:c(OS,{as:"li",role:"presentation",children:c(RS,{as:"button",type:"button",eventKey:n,disabled:r,id:a,className:i,...o,children:t})})}const Ch=e=>{const{id:t,onSelect:n,transition:r,mountOnEnter:i,unmountOnExit:o,children:a,activeKey:s=O_(a),...u}=xs(e,{activeKey:"onSelect"});return g(IS,{id:t,activeKey:s,onSelect:n,transition:xh(r),mountOnEnter:i,unmountOnExit:o,children:[c(y_,{...u,role:"tablist",as:"ul",children:mf(a,R_)}),c(DS,{children:mf(a,l=>{const f={...l.props};return delete f.title,delete f.disabled,delete f.tabClassName,delete f.tabAttrs,c(LS,{...f})})})]})};Ch.defaultProps=N_;Ch.displayName="Tabs";const __=Ch,P_="https://jg-dealerships/",Ne=async(e,t,n)=>{const r=async(i,o)=>{try{const s=await(await fetch((n||P_)+e,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8"},body:t?JSON.stringify(t):void 0})).json();typeof s=="object"&&s.error&&o({error:!0,reason:s.error}),i(s)}catch(a){o(a)}};return await new Promise(r)},BS=m.createContext({event:!1,setEvent:()=>!1,config:{},locale:{},onCloseModal:()=>!1}),M_=({children:e})=>{const[t,n]=m.useState({}),[r,i]=m.useState({}),[o,a]=m.useState({});m.useEffect(()=>{const u=({data:l})=>{l.source||(l.type==="hide"?n(f=>({...f,type:!1})):(n(l||{}),i(l.config||{}),a(l.locale||{})))};return window.addEventListener("message",u),()=>window.removeEventListener("message",u)},[]);const s=async()=>{n({...t,type:!1}),await Ne("close")};return c(BS.Provider,{value:{event:t,setEvent:n,config:r,locale:o,onCloseModal:s},children:e})},ye=()=>m.useContext(BS),$_=()=>{const e=async n=>{await Ne(`veh-${n}`)},t=async()=>{await Ne("change-cam-view")};return g(x1,{"aria-label":"Basic example",className:"vehicle-camera-btns",children:[c(ee,{variant:"dark",size:"lg",onClick:()=>e("left"),children:c("i",{className:"bi-arrow-left"})}),c(ee,{variant:"dark",size:"lg",onClick:()=>t(),children:c("i",{className:"bi-camera-reels"})}),c(ee,{variant:"dark",size:"lg",onClick:()=>e("right"),children:c("i",{className:"bi-arrow-right"})})]})},Le=(e,t)=>{try{return e==null?void 0:e.toLocaleString(t==null?void 0:t.NumberAndDateFormat,{style:"currency",currency:t.Currency,maximumFractionDigits:0})}catch{return"InvalidLocale"}},Cy=["personal","society"],Jc=["cash","bank"],I_=({show:e,onHide:t,vehicle:n,activeColor:r,calcFinancePayment:i,toggleFinanceBreakdown:o,onPurchase:a})=>{var Z,G;const{event:s,setEvent:u,config:l,locale:f,onCloseModal:h}=ye(),[p,y]=m.useState(Cy[0]),[C,x]=m.useState(Jc),[N,w]=m.useState(Jc[0]),[E,b]=m.useState(""),[T,R]=m.useState(!1),[M,F]=m.useState(!1);m.useEffect(()=>{var Oe,ge,xe;const te=(xe=(ge=(Oe=s.config)==null?void 0:Oe.DealershipLocations)==null?void 0:ge[s.dealershipId])==null?void 0:xe.paymentOptions;te?(x(te),w(te[0])):w(Jc[0])},[s.config,s.dealershipId]),m.useEffect(()=>{R(!1)},[p]);const A=async te=>{var Oe;if(te.preventDefault(),F(!0),!$())return!1;try{await Ne("purchase-vehicle",{purchaseType:p,society:E,societyType:(Oe=I(E))==null?void 0:Oe.type,paymentMethod:N,finance:!!T,dealership:s.dealershipId,vehicle:n.spawn_code,color:r}),a()}catch(ge){console.log(JSON.stringify(ge))}F(!1),h()},I=te=>{var Oe;return(Oe=s.societies)==null?void 0:Oe.find(({name:ge})=>ge===te)},$=()=>{var Oe,ge;let te=n.price;if(T){if(N!=="bank")return!1;te=n.price*(1+l.FinanceInterest)*l.FinanceDownPayment}return N==="societyFund"?((Oe=I(E))==null?void 0:Oe.balance)>=te:(((ge=s.playerBalances)==null?void 0:ge[N])||0)>=te},W=async()=>{try{const te=await Ne("get-player-balances",s.dealershipId);if(!te)return;u(Oe=>({...Oe,playerBalances:te}))}catch{console.error("Could not refresh balances.")}};return c(z,{show:e,onHide:()=>t(),centered:!0,style:{zIndex:9999},children:g(j,{onSubmit:A,children:[g(z.Header,{className:"d-block",children:[c("div",{children:f.purchaseVehicle}),g(z.Title,{as:"h5",children:[n.brand," ",n.model]})]}),g(z.Body,{children:[s.jgGaragesRunning&&c(x1,{"aria-label":"Purchase Type",className:"vehicle-purchase-modal mb-3",children:Cy.map(te=>c(ee,{variant:p===te?"primary":"dark",onClick:()=>y(te),children:f[`${te}Purchase`]},te))}),p==="society"?g(j.Group,{className:"mb-3",children:[c(j.Label,{children:f.purchaseFor}),g(j.Select,{value:E,onChange:te=>b(te.target.value),required:!0,children:[c("option",{value:"",disabled:!0,children:f.selectSociety}),(Z=s.societies)==null?void 0:Z.map(({name:te,label:Oe},ge)=>c("option",{value:te,children:Oe},ge))]})]}):s.financeEnabled&&g(j.Group,{className:"mb-3",children:[c(j.Label,{children:f.financing}),c(j.Check,{label:f.payInFull,name:"payment-type",type:"radio",id:"payment-infull",checked:!T,onChange:te=>R(!te.target.checked)}),c(j.Check,{label:c("div",{className:"d-flex align-items-center",children:c("span",{className:"me-2",children:(G=f.financeOverPayments)==null?void 0:G.replace("%{value}",l.FinancePayments)})}),name:"payment-type",type:"radio",id:"payment-finance",checked:T,onChange:te=>R(te.target.checked)})]}),(p!=="society"||E)&&g("div",{children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:f.paymentSource}),c("div",{children:C.map((te,Oe)=>{var xe,U;if(te!=="bank"&&T||te==="societyFund"&&(p!=="society"||!E))return null;let ge=0;return te==="societyFund"?ge=(xe=I(E))==null?void 0:xe.balance:s.playerBalances&&(ge=((U=s.playerBalances)==null?void 0:U[te])||0),c(j.Check,{label:g("div",{className:"d-flex align-items-center",children:[c("span",{className:"me-2",children:f[te]||te}),c(vn,{bg:"secondary",text:"dark",children:Le(ge,l)}),c(ee,{variant:"dark",onClick:W,size:"sm",className:"ms-2 p-0 pe-1 ps-1",children:c("i",{className:"bi-arrow-clockwise"})})]}),name:"payment-method",type:"radio",id:`payment-method-${te}`,checked:N===te,onChange:re=>w(te)},Oe)})})]}),T&&g(Bo,{variant:"warning",children:[c("i",{className:"bi-exclamation-triangle-fill me-2"}),f.prePurchaseRepoWarning]})]})]}),c(z.Footer,{className:"d-block",children:T?g(ur,{children:[g(Xe,{className:"p-0",children:[g("p",{className:"mb-1",children:[f.payToday,":"]}),c("h3",{children:Le(n.price*(1+l.FinanceInterest)*l.FinanceDownPayment,l)})]}),g(Xe,{className:"p-0",children:[g("p",{className:"mb-0",children:[`${f.financeThen} ${l.FinancePayments} ${f.paymentsOf} `,c("strong",{className:"text-white",children:Le(i(),l)}),` (${f.every} ${l.FinancePaymentInterval} ${f.hours})`]}),c(ee,{variant:"link",className:"p-0",style:{fontSize:12},onClick:()=>o(),children:f.seeFullBreakdown})]})]}):g("div",{children:[g("p",{className:"text-muted mb-1",children:[f.totalPayable,":"]}),c("h3",{children:Le(n.price,l)})]})}),g(z.Footer,{className:"d-flex justify-content-between",children:[c(ee,{variant:"success",type:"submit",disabled:!$()||M,children:$()?f.purchase:f.notEnoughMoney}),c(ee,{variant:"dark",onClick:()=>t(),children:f.cancel})]})]})})},F_=({show:e,onHide:t,vehiclePrice:n,calcFinancePayment:r})=>{const{config:i,locale:o}=ye();return g(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:o.financeBreakdown})}),g(z.Body,{children:[c("table",{className:"financing-breakdown-table",children:g("tbody",{children:[g("tr",{children:[g("td",{children:[o.initialPayment,":"]}),c("td",{children:c("strong",{children:Le(n*(1+i.FinanceInterest)*i.FinanceDownPayment,i)})})]}),g("tr",{children:[g("td",{children:[o.payments,":"]}),c("td",{children:g("strong",{children:[Le(r(),i)," ",o.every," ",i.FinancePaymentInterval," ",o.hours]})})]}),g("tr",{children:[g("td",{children:[o.length,":"]}),c("td",{children:g("strong",{children:[i.FinancePayments," ",o.payments]})})]}),g("tr",{children:[g("td",{children:[o.interest,":"]}),c("td",{children:g("strong",{children:[i.FinanceInterest*100,"%"]})})]}),g("tr",{children:[g("td",{children:[o.totalPayable,":"]}),c("td",{children:c("strong",{children:Le(n*(1+i.FinanceInterest),i)})})]})]})}),g(Bo,{variant:"warning",className:"mt-3 mb-0",children:[c("i",{className:"bi-exclamation-triangle-fill me-2"}),o.prePurchaseRepoWarning]})]})]})},D_=({vehicle:e,setActiveVehicle:t})=>{const{event:n,config:r,locale:i}=ye(),[o,a]=m.useState(!1),[s,u]=m.useState(!1),[l,f]=m.useState(1),[h,p]=m.useState(0),[y,C]=m.useState(0),[x,N]=m.useState(0),[w,E]=m.useState(0),[b,T]=m.useState(0),[R,M]=m.useState(!1);m.useEffect(()=>{(async()=>{if(r.HideVehicleStats)return;const I=await Ne("get-model-stats",{vehicle:e.spawn_code});p(I==null?void 0:I.brake),C(I==null?void 0:I.handling),N(I==null?void 0:I.topSpeed),E(I==null?void 0:I.power),T(I==null?void 0:I.torque)})()},[e.spawn_code]),m.useEffect(()=>{var I;f((I=r.VehicleColourOptions)!=null&&I[parseInt(n.defaultColor)]?parseInt(n.defaultColor):1)},[n.defaultColor]),m.useEffect(()=>{try{Ne("change-color",{color:l})}catch{}},[l]);const F=async()=>{M(!0),await Ne("test-drive",{dealershipId:n.dealershipId,vehicle:e.spawn_code,color:l}),M(!1)},A=()=>{const I=e.price*(1+r.FinanceInterest);return(I-I*r.FinanceDownPayment)/r.FinancePayments};return g(Wt,{children:[g(z.Dialog,{size:"sm",className:"modal vehicle-info-modal",scrollable:!0,children:[g(z.Header,{className:"vehicle-model-brand-stock",children:[c("span",{className:"text-muted",children:e.brand}),c("h4",{children:e.model}),c(vn,{bg:e.stock>0?"success":"danger",text:"white",pill:!0,children:n.shopType==="owned"&&(e.stock>0?i.inStock:i.outOfStock)})]}),g(z.Body,{children:[!r.HideVehicleStats&&g("div",{className:"vehicle-stats",children:[g("div",{className:"vehicle-stat",children:[c("small",{className:"text-muted",children:i.handling}),c(xa,{variant:"primary",now:y/10*100,label:y==null?void 0:y.toFixed(1)})]}),g("div",{className:"vehicle-stat",children:[c("small",{className:"text-muted",children:i.topSpeed}),c(xa,{variant:"primary",now:x/150*100,label:`${x}${r.SpeedUnit||"mph"}`})]}),g("div",{className:"vehicle-stat",children:[c("small",{className:"text-muted",children:i.power}),c(xa,{variant:"primary",now:w/500*100,label:`${w}HP`})]}),g("div",{className:"vehicle-stat",children:[c("small",{className:"text-muted",children:i.torque}),c(xa,{variant:"primary",now:b/500*100,label:`${b}Nm`})]}),g("div",{className:"vehicle-stat",children:[c("small",{className:"text-muted",children:i.brake}),c(xa,{now:h/1*100,variant:"primary",label:h==null?void 0:h.toFixed(1)})]})]}),g("div",{className:"vehicle-pricing",children:[c("h3",{children:Le(e.price,r)}),n.financeEnabled&&e.price>0&&g("p",{className:"vehicle-financing-text text-muted",children:[g("span",{children:[i.financingAvailable,": "]}),g("strong",{children:[r.FinancePayments," ",i.paymentsOf," ",Le(A(),r),c(ee,{variant:"link",className:"text-decoration-none",size:"sm",onClick:()=>u(!0),children:c("i",{className:"bi-question-circle-fill"})})]})]})]}),c(F_,{show:s,onHide:()=>u(!1),vehiclePrice:e.price,calcFinancePayment:A}),c("hr",{className:"mb-3"}),c("div",{className:"vehicle-colors",children:(r.VehicleColourOptions||[]).map(({hex:I},$)=>c("button",{className:`color ${l==$+1?"active":""}`,onClick:()=>f($+1),style:{backgroundImage:` + linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4)), + linear-gradient(${I}, ${I}) + `}},$))})]}),(n.enablePurchase||n.enableTestDrive)&&g(z.Footer,{className:"d-flex justify-content-between",children:[n.enablePurchase&&c(ee,{variant:"success",onClick:()=>a(!0),disabled:n.shopType==="owned"&&!e.stock,children:n.shopType==="self-service"||e.stock>0?i.purchase:i.outOfStock}),n.enableTestDrive&&c(ee,{variant:"secondary",onClick:F,disabled:R,children:i.testDrive})]})]}),c(I_,{show:o,onHide:()=>a(!1),vehicle:e,activeColor:l,calcFinancePayment:A,toggleFinanceBreakdown:()=>u(!0),onPurchase:()=>t(void 0)})]})},ta=()=>c(vn,{bg:"secondary",text:"dark",children:"JG Scripts"}),A_="/web/dist/assets/loading-f9361a1d.gif",na=()=>c("div",{className:"p-5 text-center",children:c("img",{src:A_,width:40})}),L_=({show:e})=>(ye(),e?c("div",{className:"loading-model",children:c(na,{})}):null),j_=({activeVehicle:e,setActiveVehicle:t})=>{const n=m.useRef(null),{event:r,config:i,locale:o}=ye(),a={[o.sortByName]:(T,R)=>`${T.brand} ${T.model}`.localeCompare(`${R.brand} ${R.model}`),[o.sortByAvailability]:(T,R)=>R.stock-T.stock,[o.sortByCheapest]:(T,R)=>T.price-R.price,[o.sortByMostExpensive]:(T,R)=>R.price-T.price},[s,u]=m.useState(""),[l,f]=m.useState(Object.keys(a)[0]),[h,p]=m.useState(!1),[y,C]=m.useState([]),[x,N]=m.useState([]),[w,E]=m.useState(!1);m.useEffect(()=>{r.defaultVehicle&&u(r.defaultVehicle)},[r.defaultVehicle]),m.useEffect(()=>{(async()=>{if(e){try{E(!0),await Ne("switch-vehicle",{spawnCode:e.spawn_code})}catch{}E(!1)}})()},[e]),m.useEffect(()=>{var T,R;s.length>0?C(r.vehicles):C(h?(T=r.vehicles)==null?void 0:T.filter(M=>h&&M.category===h):[]),(R=n.current)==null||R.scrollTo(0,0)},[s.length>0,h]),m.useEffect(()=>{N(y.filter(({brand:T,model:R,spawn_code:M})=>{const F=s.toLocaleLowerCase().split(" ").filter(A=>A).map(A=>A.trim());return F.filter(A=>`${T} ${R} ${M}`.toLocaleLowerCase().includes(A)).length===F.length}).sort(a[l]))},[y,s,l]);const b=()=>{p(!1)};return g(Wt,{children:[c(L_,{show:w}),g(z.Dialog,{scrollable:!0,size:"sm",className:"modal vehicles-list-modal",children:[g(z.Header,{className:"position-relative d-flex justify-content-center gap-3",children:[h&&!s&&c("button",{className:"showroom-back-btn",onClick:b,children:c("i",{className:"bi-arrow-left"})}),c(z.Title,{as:"h5",children:s.length?o.search:h?i.Categories[h]:o.allCategories}),!!s.length&&g(ee,{size:"sm",className:"ms-auto",variant:"outline-light",onClick:()=>u(""),children:[c("i",{className:"bi-x me-1"})," ",o.clear]})]}),g(z.Body,{className:"showroom-modal-body",ref:n,children:[c("div",{className:"search-and-filter p-3",children:g(Gt,{children:[c(j.Control,{type:"text",placeholder:o.search,value:s,onChange:T=>u(T.target.value)}),c(uh,{variant:"dark",title:c("i",{className:"bi-filter"}),id:"input-group-dropdown-2",align:"end",menuVariant:"dark",children:Object.keys(a).map((T,R)=>c(si.Item,{onClick:()=>f(T),active:l===T,children:T},R))})]})}),!h&&!s?c("div",{className:"p-3",children:r.categories.map(T=>g(Ue,{className:"showroom-category-btn mb-3",bg:"darker",onClick:()=>p(T),children:[c(Ue.Body,{className:"h5 mb-0 text-white",children:i.Categories[T]}),c(Ue.Footer,{children:g("small",{className:"text-muted",children:[r.vehicles.filter(R=>R.category===T).length," ",o.vehiclesCount]})})]},T))}):c("div",{children:x.length?x.map((T,R)=>c(B_,{vehicle:T,setActiveVehicle:t,isActive:(e==null?void 0:e.spawn_code)===T.spawn_code},R)):c("div",{className:"showroom-vehicle",children:o.noVehicles})})]}),!i.HideWatermark&&c(z.Footer,{className:"d-flex justify-content-between text-muted",children:c(ta,{})})]})]})},B_=({vehicle:e,setActiveVehicle:t,isActive:n})=>{const{event:r,locale:i,config:o}=ye(),a=m.useMemo(()=>` + url(https://cfx-nui-jg-advancedgarages/vehicle_images/${e.spawn_code}.png), + url(https://cfx-nui-jg-dealerships/vehicle_images/${e.spawn_code}.png), + url(https://docs.fivem.net/vehicles/${e.spawn_code}.webp) + `,[e]);return g("button",{className:`showroom-vehicle ${n?"active":""}`,onClick:()=>t(e),children:[g("div",{className:"showroom-vehicle-name-stock",children:[g("div",{children:[c("small",{className:"text-muted",children:e.brand}),c("p",{children:e.model})]}),c(vn,{bg:e.stock>0?"success":"danger",text:"white",pill:!0,children:r.shopType==="owned"&&(e.stock>0?i.inStock:i.outOfStock)})]}),g("div",{className:"d-flex align-items-end justify-content-between",children:[c("h4",{children:Le(e.price,o)}),c("div",{children:o.ShowVehicleImages&&c("div",{className:"vehicle-image flex-shrink-0",style:{backgroundImage:a}})})]})]})},z_=()=>{const{event:e,onCloseModal:t,locale:n}=ye(),[r,i]=m.useState();m.useEffect(()=>{if(e.defaultVehicle){const a=e.vehicles.find(({spawn_code:s})=>s===e.defaultVehicle);i(a)}},[e.type,e.defaultVehicle]);const o=async()=>{t(),i(void 0),await Ne("exit-showroom")};return e.type!=="showShowroom"?null:g("div",{className:"vehicle-showroom",children:[c("div",{className:"showroom-column",children:g("div",{className:"showroom-column-vehicles-list",children:[g(ee,{size:"lg",variant:"dark",className:"leave-showroom-btn",onClick:o,children:[c("i",{className:"bi-box-arrow-left"}),"   ",n.leaveShowroom]}),c(j_,{activeVehicle:r,setActiveVehicle:i})]})}),c($_,{}),c("div",{className:"showroom-column",children:r?c(D_,{vehicle:r,setActiveVehicle:i}):c("div",{})})]})};class Qi extends Error{}class V_ extends Qi{constructor(t){super(`Invalid DateTime: ${t.toMessage()}`)}}class H_ extends Qi{constructor(t){super(`Invalid Interval: ${t.toMessage()}`)}}class W_ extends Qi{constructor(t){super(`Invalid Duration: ${t.toMessage()}`)}}class Pa extends Qi{}class zS extends Qi{constructor(t){super(`Invalid unit ${t}`)}}class _n extends Qi{}class jr extends Qi{constructor(){super("Zone is an abstract class")}}const oe="numeric",Jn="short",yn="long",au={year:oe,month:oe,day:oe},VS={year:oe,month:Jn,day:oe},U_={year:oe,month:Jn,day:oe,weekday:Jn},HS={year:oe,month:yn,day:oe},WS={year:oe,month:yn,day:oe,weekday:yn},US={hour:oe,minute:oe},GS={hour:oe,minute:oe,second:oe},qS={hour:oe,minute:oe,second:oe,timeZoneName:Jn},KS={hour:oe,minute:oe,second:oe,timeZoneName:yn},ZS={hour:oe,minute:oe,hourCycle:"h23"},YS={hour:oe,minute:oe,second:oe,hourCycle:"h23"},QS={hour:oe,minute:oe,second:oe,hourCycle:"h23",timeZoneName:Jn},XS={hour:oe,minute:oe,second:oe,hourCycle:"h23",timeZoneName:yn},JS={year:oe,month:oe,day:oe,hour:oe,minute:oe},ex={year:oe,month:oe,day:oe,hour:oe,minute:oe,second:oe},tx={year:oe,month:Jn,day:oe,hour:oe,minute:oe},nx={year:oe,month:Jn,day:oe,hour:oe,minute:oe,second:oe},G_={year:oe,month:Jn,day:oe,weekday:Jn,hour:oe,minute:oe},rx={year:oe,month:yn,day:oe,hour:oe,minute:oe,timeZoneName:Jn},ix={year:oe,month:yn,day:oe,hour:oe,minute:oe,second:oe,timeZoneName:Jn},ox={year:oe,month:yn,day:oe,weekday:yn,hour:oe,minute:oe,timeZoneName:yn},ax={year:oe,month:yn,day:oe,weekday:yn,hour:oe,minute:oe,second:oe,timeZoneName:yn};class Ts{get type(){throw new jr}get name(){throw new jr}get ianaName(){return this.name}get isUniversal(){throw new jr}offsetName(t,n){throw new jr}formatOffset(t,n){throw new jr}offset(t){throw new jr}equals(t){throw new jr}get isValid(){throw new jr}}let ed=null;class Au extends Ts{static get instance(){return ed===null&&(ed=new Au),ed}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(t,{format:n,locale:r}){return lx(t,n,r)}formatOffset(t,n){return Ga(this.offset(t),n)}offset(t){return-new Date(t).getTimezoneOffset()}equals(t){return t.type==="system"}get isValid(){return!0}}let Nl={};function q_(e){return Nl[e]||(Nl[e]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),Nl[e]}const K_={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Z_(e,t){const n=e.format(t).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,o,a,s,u,l,f]=r;return[a,i,o,s,u,l,f]}function Y_(e,t){const n=e.formatToParts(t),r=[];for(let i=0;i=0?C:1e3+C,(p-y)/(60*1e3)}equals(t){return t.type==="iana"&&t.name===this.name}get isValid(){return this.valid}}let by={};function Q_(e,t={}){const n=JSON.stringify([e,t]);let r=by[n];return r||(r=new Intl.ListFormat(e,t),by[n]=r),r}let xf={};function Cf(e,t={}){const n=JSON.stringify([e,t]);let r=xf[n];return r||(r=new Intl.DateTimeFormat(e,t),xf[n]=r),r}let bf={};function X_(e,t={}){const n=JSON.stringify([e,t]);let r=bf[n];return r||(r=new Intl.NumberFormat(e,t),bf[n]=r),r}let Ef={};function J_(e,t={}){const{base:n,...r}=t,i=JSON.stringify([e,r]);let o=Ef[i];return o||(o=new Intl.RelativeTimeFormat(e,t),Ef[i]=o),o}let Ma=null;function eP(){return Ma||(Ma=new Intl.DateTimeFormat().resolvedOptions().locale,Ma)}function tP(e){const t=e.indexOf("-x-");t!==-1&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(n===-1)return[e];{let r,i;try{r=Cf(e).resolvedOptions(),i=e}catch{const u=e.substring(0,n);r=Cf(u).resolvedOptions(),i=u}const{numberingSystem:o,calendar:a}=r;return[i,o,a]}}function nP(e,t,n){return(n||t)&&(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`)),e}function rP(e){const t=[];for(let n=1;n<=12;n++){const r=de.utc(2016,n,1);t.push(e(r))}return t}function iP(e){const t=[];for(let n=1;n<=7;n++){const r=de.utc(2016,11,13+n);t.push(e(r))}return t}function al(e,t,n,r,i){const o=e.listingMode(n);return o==="error"?null:o==="en"?r(t):i(t)}function oP(e){return e.numberingSystem&&e.numberingSystem!=="latn"?!1:e.numberingSystem==="latn"||!e.locale||e.locale.startsWith("en")||new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem==="latn"}class aP{constructor(t,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:o,...a}=r;if(!n||Object.keys(a).length>0){const s={useGrouping:!1,...r};r.padTo>0&&(s.minimumIntegerDigits=r.padTo),this.inf=X_(t,s)}}format(t){if(this.inf){const n=this.floor?Math.floor(t):t;return this.inf.format(n)}else{const n=this.floor?Math.floor(t):Eh(t,3);return bt(n,this.padTo)}}}class sP{constructor(t,n,r){this.opts=r,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=t;else if(t.zone.type==="fixed"){const a=-1*(t.offset/60),s=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;t.offset!==0&&Mr.create(s).valid?(i=s,this.dt=t):(i="UTC",this.dt=t.offset===0?t:t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone)}else t.zone.type==="system"?this.dt=t:t.zone.type==="iana"?(this.dt=t,i=t.zone.name):(i="UTC",this.dt=t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone);const o={...this.opts};o.timeZone=o.timeZone||i,this.dtf=Cf(n,o)}format(){return this.originalZone?this.formatToParts().map(({value:t})=>t).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const t=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?t.map(n=>{if(n.type==="timeZoneName"){const r=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...n,value:r}}else return n}):t}resolvedOptions(){return this.dtf.resolvedOptions()}}class lP{constructor(t,n,r){this.opts={style:"long",...r},!n&&sx()&&(this.rtf=J_(t,r))}format(t,n){return this.rtf?this.rtf.format(t,n):kP(n,t,this.opts.numeric,this.opts.style!=="long")}formatToParts(t,n){return this.rtf?this.rtf.formatToParts(t,n):[]}}class at{static fromOpts(t){return at.create(t.locale,t.numberingSystem,t.outputCalendar,t.defaultToEN)}static create(t,n,r,i=!1){const o=t||Ct.defaultLocale,a=o||(i?"en-US":eP()),s=n||Ct.defaultNumberingSystem,u=r||Ct.defaultOutputCalendar;return new at(a,s,u,o)}static resetCache(){Ma=null,xf={},bf={},Ef={}}static fromObject({locale:t,numberingSystem:n,outputCalendar:r}={}){return at.create(t,n,r)}constructor(t,n,r,i){const[o,a,s]=tP(t);this.locale=o,this.numberingSystem=n||a||null,this.outputCalendar=r||s||null,this.intl=nP(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=oP(this)),this.fastNumbersCached}listingMode(){const t=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return t&&n?"en":"intl"}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:at.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,t.defaultToEN||!1)}redefaultToEN(t={}){return this.clone({...t,defaultToEN:!0})}redefaultToSystem(t={}){return this.clone({...t,defaultToEN:!1})}months(t,n=!1,r=!0){return al(this,t,r,dx,()=>{const i=n?{month:t,day:"numeric"}:{month:t},o=n?"format":"standalone";return this.monthsCache[o][t]||(this.monthsCache[o][t]=rP(a=>this.extract(a,i,"month"))),this.monthsCache[o][t]})}weekdays(t,n=!1,r=!0){return al(this,t,r,hx,()=>{const i=n?{weekday:t,year:"numeric",month:"long",day:"numeric"}:{weekday:t},o=n?"format":"standalone";return this.weekdaysCache[o][t]||(this.weekdaysCache[o][t]=iP(a=>this.extract(a,i,"weekday"))),this.weekdaysCache[o][t]})}meridiems(t=!0){return al(this,void 0,t,()=>mx,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[de.utc(2016,11,13,9),de.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(t,n=!0){return al(this,t,n,vx,()=>{const r={era:t};return this.eraCache[t]||(this.eraCache[t]=[de.utc(-40,1,1),de.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[t]})}extract(t,n,r){const i=this.dtFormatter(t,n),o=i.formatToParts(),a=o.find(s=>s.type.toLowerCase()===r);return a?a.value:null}numberFormatter(t={}){return new aP(this.intl,t.forceSimple||this.fastNumbers,t)}dtFormatter(t,n={}){return new sP(t,this.intl,n)}relFormatter(t={}){return new lP(this.intl,this.isEnglish(),t)}listFormatter(t={}){return Q_(this.intl,t)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(t){return this.locale===t.locale&&this.numberingSystem===t.numberingSystem&&this.outputCalendar===t.outputCalendar}}let td=null;class Qt extends Ts{static get utcInstance(){return td===null&&(td=new Qt(0)),td}static instance(t){return t===0?Qt.utcInstance:new Qt(t)}static parseSpecifier(t){if(t){const n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Qt(ju(n[1],n[2]))}return null}constructor(t){super(),this.fixed=t}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Ga(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Ga(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(t,n){return Ga(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(t){return t.type==="fixed"&&t.fixed===this.fixed}get isValid(){return!0}}class uP extends Ts{constructor(t){super(),this.zoneName=t}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function Zr(e,t){if(ze(e)||e===null)return t;if(e instanceof Ts)return e;if(cP(e)){const n=e.toLowerCase();return n==="default"?t:n==="local"||n==="system"?Au.instance:n==="utc"||n==="gmt"?Qt.utcInstance:Qt.parseSpecifier(n)||Mr.create(e)}else return Fi(e)?Qt.instance(e):typeof e=="object"&&e.offset&&typeof e.offset=="number"?e:new uP(e)}let Ey=()=>Date.now(),ky="system",Ty=null,Ny=null,Oy=null,Ry=60,_y;class Ct{static get now(){return Ey}static set now(t){Ey=t}static set defaultZone(t){ky=t}static get defaultZone(){return Zr(ky,Au.instance)}static get defaultLocale(){return Ty}static set defaultLocale(t){Ty=t}static get defaultNumberingSystem(){return Ny}static set defaultNumberingSystem(t){Ny=t}static get defaultOutputCalendar(){return Oy}static set defaultOutputCalendar(t){Oy=t}static get twoDigitCutoffYear(){return Ry}static set twoDigitCutoffYear(t){Ry=t%100}static get throwOnInvalid(){return _y}static set throwOnInvalid(t){_y=t}static resetCaches(){at.resetCache(),Mr.resetCache()}}function ze(e){return typeof e>"u"}function Fi(e){return typeof e=="number"}function Lu(e){return typeof e=="number"&&e%1===0}function cP(e){return typeof e=="string"}function dP(e){return Object.prototype.toString.call(e)==="[object Date]"}function sx(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function fP(e){return Array.isArray(e)?e:[e]}function Py(e,t,n){if(e.length!==0)return e.reduce((r,i)=>{const o=[t(i),i];return r&&n(r[0],o[0])===r[0]?r:o},null)[1]}function pP(e,t){return t.reduce((n,r)=>(n[r]=e[r],n),{})}function Uo(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Cr(e,t,n){return Lu(e)&&e>=t&&e<=n}function hP(e,t){return e-t*Math.floor(e/t)}function bt(e,t=2){const n=e<0;let r;return n?r="-"+(""+-e).padStart(t,"0"):r=(""+e).padStart(t,"0"),r}function Ur(e){if(!(ze(e)||e===null||e===""))return parseInt(e,10)}function xi(e){if(!(ze(e)||e===null||e===""))return parseFloat(e)}function bh(e){if(!(ze(e)||e===null||e==="")){const t=parseFloat("0."+e)*1e3;return Math.floor(t)}}function Eh(e,t,n=!1){const r=10**t;return(n?Math.trunc:Math.round)(e*r)/r}function Ns(e){return e%4===0&&(e%100!==0||e%400===0)}function Ua(e){return Ns(e)?366:365}function su(e,t){const n=hP(t-1,12)+1,r=e+(t-n)/12;return n===2?Ns(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function kh(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function lu(e){const t=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7,n=e-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return t===4||r===3?53:52}function kf(e){return e>99?e:e>Ct.twoDigitCutoffYear?1900+e:2e3+e}function lx(e,t,n,r=null){const i=new Date(e),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(o.timeZone=r);const a={timeZoneName:t,...o},s=new Intl.DateTimeFormat(n,a).formatToParts(i).find(u=>u.type.toLowerCase()==="timezonename");return s?s.value:null}function ju(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const r=parseInt(t,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function ux(e){const t=Number(e);if(typeof e=="boolean"||e===""||Number.isNaN(t))throw new _n(`Invalid unit value ${e}`);return t}function uu(e,t){const n={};for(const r in e)if(Uo(e,r)){const i=e[r];if(i==null)continue;n[t(r)]=ux(i)}return n}function Ga(e,t){const n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?"+":"-";switch(t){case"short":return`${i}${bt(n,2)}:${bt(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${bt(n,2)}${bt(r,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function Bu(e){return pP(e,["hour","minute","second","millisecond"])}const mP=["January","February","March","April","May","June","July","August","September","October","November","December"],cx=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],vP=["J","F","M","A","M","J","J","A","S","O","N","D"];function dx(e){switch(e){case"narrow":return[...vP];case"short":return[...cx];case"long":return[...mP];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const fx=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],px=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],yP=["M","T","W","T","F","S","S"];function hx(e){switch(e){case"narrow":return[...yP];case"short":return[...px];case"long":return[...fx];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const mx=["AM","PM"],gP=["Before Christ","Anno Domini"],wP=["BC","AD"],SP=["B","A"];function vx(e){switch(e){case"narrow":return[...SP];case"short":return[...wP];case"long":return[...gP];default:return null}}function xP(e){return mx[e.hour<12?0:1]}function CP(e,t){return hx(t)[e.weekday-1]}function bP(e,t){return dx(t)[e.month-1]}function EP(e,t){return vx(t)[e.year<0?0:1]}function kP(e,t,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(e)===-1;if(n==="auto"&&o){const h=e==="days";switch(t){case 1:return h?"tomorrow":`next ${i[e][0]}`;case-1:return h?"yesterday":`last ${i[e][0]}`;case 0:return h?"today":`this ${i[e][0]}`}}const a=Object.is(t,-0)||t<0,s=Math.abs(t),u=s===1,l=i[e],f=r?u?l[1]:l[2]||l[1]:u?i[e][0]:e;return a?`${s} ${f} ago`:`in ${s} ${f}`}function My(e,t){let n="";for(const r of e)r.literal?n+=r.val:n+=t(r.val);return n}const TP={D:au,DD:VS,DDD:HS,DDDD:WS,t:US,tt:GS,ttt:qS,tttt:KS,T:ZS,TT:YS,TTT:QS,TTTT:XS,f:JS,ff:tx,fff:rx,ffff:ox,F:ex,FF:nx,FFF:ix,FFFF:ax};class Ht{static create(t,n={}){return new Ht(t,n)}static parseFormat(t){let n=null,r="",i=!1;const o=[];for(let a=0;a0&&o.push({literal:i||/^\s+$/.test(r),val:r}),n=null,r="",i=!i):i||s===n?r+=s:(r.length>0&&o.push({literal:/^\s+$/.test(r),val:r}),r=s,n=s)}return r.length>0&&o.push({literal:i||/^\s+$/.test(r),val:r}),o}static macroTokenToFormatOpts(t){return TP[t]}constructor(t,n){this.opts=n,this.loc=t,this.systemLoc=null}formatWithSystemDefault(t,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(t,{...this.opts,...n}).format()}formatDateTime(t,n={}){return this.loc.dtFormatter(t,{...this.opts,...n}).format()}formatDateTimeParts(t,n={}){return this.loc.dtFormatter(t,{...this.opts,...n}).formatToParts()}formatInterval(t,n={}){return this.loc.dtFormatter(t.start,{...this.opts,...n}).dtf.formatRange(t.start.toJSDate(),t.end.toJSDate())}resolvedOptions(t,n={}){return this.loc.dtFormatter(t,{...this.opts,...n}).resolvedOptions()}num(t,n=0){if(this.opts.forceSimple)return bt(t,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(t)}formatDateTimeFromString(t,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(y,C)=>this.loc.extract(t,y,C),a=y=>t.isOffsetFixed&&t.offset===0&&y.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,y.format):"",s=()=>r?xP(t):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(y,C)=>r?bP(t,y):o(C?{month:y}:{month:y,day:"numeric"},"month"),l=(y,C)=>r?CP(t,y):o(C?{weekday:y}:{weekday:y,month:"long",day:"numeric"},"weekday"),f=y=>{const C=Ht.macroTokenToFormatOpts(y);return C?this.formatWithSystemDefault(t,C):y},h=y=>r?EP(t,y):o({era:y},"era"),p=y=>{switch(y){case"S":return this.num(t.millisecond);case"u":case"SSS":return this.num(t.millisecond,3);case"s":return this.num(t.second);case"ss":return this.num(t.second,2);case"uu":return this.num(Math.floor(t.millisecond/10),2);case"uuu":return this.num(Math.floor(t.millisecond/100));case"m":return this.num(t.minute);case"mm":return this.num(t.minute,2);case"h":return this.num(t.hour%12===0?12:t.hour%12);case"hh":return this.num(t.hour%12===0?12:t.hour%12,2);case"H":return this.num(t.hour);case"HH":return this.num(t.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:this.loc.locale});case"z":return t.zoneName;case"a":return s();case"d":return i?o({day:"numeric"},"day"):this.num(t.day);case"dd":return i?o({day:"2-digit"},"day"):this.num(t.day,2);case"c":return this.num(t.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(t.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?o({month:"numeric",day:"numeric"},"month"):this.num(t.month);case"LL":return i?o({month:"2-digit",day:"numeric"},"month"):this.num(t.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return i?o({month:"numeric"},"month"):this.num(t.month);case"MM":return i?o({month:"2-digit"},"month"):this.num(t.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return i?o({year:"numeric"},"year"):this.num(t.year);case"yy":return i?o({year:"2-digit"},"year"):this.num(t.year.toString().slice(-2),2);case"yyyy":return i?o({year:"numeric"},"year"):this.num(t.year,4);case"yyyyyy":return i?o({year:"numeric"},"year"):this.num(t.year,6);case"G":return h("short");case"GG":return h("long");case"GGGGG":return h("narrow");case"kk":return this.num(t.weekYear.toString().slice(-2),2);case"kkkk":return this.num(t.weekYear,4);case"W":return this.num(t.weekNumber);case"WW":return this.num(t.weekNumber,2);case"o":return this.num(t.ordinal);case"ooo":return this.num(t.ordinal,3);case"q":return this.num(t.quarter);case"qq":return this.num(t.quarter,2);case"X":return this.num(Math.floor(t.ts/1e3));case"x":return this.num(t.ts);default:return f(y)}};return My(Ht.parseFormat(n),p)}formatDurationFromString(t,n){const r=u=>{switch(u[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=u=>l=>{const f=r(l);return f?this.num(u.get(f),l.length):l},o=Ht.parseFormat(n),a=o.reduce((u,{literal:l,val:f})=>l?u:u.concat(f),[]),s=t.shiftTo(...a.map(r).filter(u=>u));return My(o,i(s))}}class Zn{constructor(t,n){this.reason=t,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const yx=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function ra(...e){const t=e.reduce((n,r)=>n+r.source,"");return RegExp(`^${t}$`)}function ia(...e){return t=>e.reduce(([n,r,i],o)=>{const[a,s,u]=o(t,i);return[{...n,...a},s||r,u]},[{},null,1]).slice(0,2)}function oa(e,...t){if(e==null)return[null,null];for(const[n,r]of t){const i=n.exec(e);if(i)return r(i)}return[null,null]}function gx(...e){return(t,n)=>{const r={};let i;for(i=0;iy!==void 0&&(C||y&&f)?-y:y;return[{years:p(xi(n)),months:p(xi(r)),weeks:p(xi(i)),days:p(xi(o)),hours:p(xi(a)),minutes:p(xi(s)),seconds:p(xi(u),u==="-0"),milliseconds:p(bh(l),h)}]}const jP={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Oh(e,t,n,r,i,o,a){const s={year:t.length===2?kf(Ur(t)):Ur(t),month:cx.indexOf(n)+1,day:Ur(r),hour:Ur(i),minute:Ur(o)};return a&&(s.second=Ur(a)),e&&(s.weekday=e.length>3?fx.indexOf(e)+1:px.indexOf(e)+1),s}const BP=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function zP(e){const[,t,n,r,i,o,a,s,u,l,f,h]=e,p=Oh(t,i,r,n,o,a,s);let y;return u?y=jP[u]:l?y=0:y=ju(f,h),[p,new Qt(y)]}function VP(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const HP=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,WP=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,UP=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function $y(e){const[,t,n,r,i,o,a,s]=e;return[Oh(t,i,r,n,o,a,s),Qt.utcInstance]}function GP(e){const[,t,n,r,i,o,a,s]=e;return[Oh(t,s,n,r,i,o,a),Qt.utcInstance]}const qP=ra(OP,Nh),KP=ra(RP,Nh),ZP=ra(_P,Nh),YP=ra(Sx),Cx=ia(FP,aa,Os,Rs),QP=ia(PP,aa,Os,Rs),XP=ia(MP,aa,Os,Rs),JP=ia(aa,Os,Rs);function e2(e){return oa(e,[qP,Cx],[KP,QP],[ZP,XP],[YP,JP])}function t2(e){return oa(VP(e),[BP,zP])}function n2(e){return oa(e,[HP,$y],[WP,$y],[UP,GP])}function r2(e){return oa(e,[AP,LP])}const i2=ia(aa);function o2(e){return oa(e,[DP,i2])}const a2=ra($P,IP),s2=ra(xx),l2=ia(aa,Os,Rs);function u2(e){return oa(e,[a2,Cx],[s2,l2])}const c2="Invalid Duration",bx={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},d2={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...bx},En=146097/400,lo=146097/4800,f2={years:{quarters:4,months:12,weeks:En/7,days:En,hours:En*24,minutes:En*24*60,seconds:En*24*60*60,milliseconds:En*24*60*60*1e3},quarters:{months:3,weeks:En/28,days:En/4,hours:En*24/4,minutes:En*24*60/4,seconds:En*24*60*60/4,milliseconds:En*24*60*60*1e3/4},months:{weeks:lo/7,days:lo,hours:lo*24,minutes:lo*24*60,seconds:lo*24*60*60,milliseconds:lo*24*60*60*1e3},...bx},ki=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],p2=ki.slice(0).reverse();function Br(e,t,n=!1){const r={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new He(r)}function h2(e){return e<0?Math.floor(e):Math.ceil(e)}function Ex(e,t,n,r,i){const o=e[i][n],a=t[n]/o,s=Math.sign(a)===Math.sign(r[i]),u=!s&&r[i]!==0&&Math.abs(a)<=1?h2(a):Math.trunc(a);r[i]+=u,t[n]-=u*o}function m2(e,t){p2.reduce((n,r)=>ze(t[r])?n:(n&&Ex(e,t,n,t,r),r),null)}function v2(e){const t={};for(const[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}class He{constructor(t){const n=t.conversionAccuracy==="longterm"||!1;let r=n?f2:d2;t.matrix&&(r=t.matrix),this.values=t.values,this.loc=t.loc||at.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=t.invalid||null,this.matrix=r,this.isLuxonDuration=!0}static fromMillis(t,n){return He.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(t==null||typeof t!="object")throw new _n(`Duration.fromObject: argument expected to be an object, got ${t===null?"null":typeof t}`);return new He({values:uu(t,He.normalizeUnit),loc:at.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(Fi(t))return He.fromMillis(t);if(He.isDuration(t))return t;if(typeof t=="object")return He.fromObject(t);throw new _n(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){const[r]=r2(t);return r?He.fromObject(r,n):He.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){const[r]=o2(t);return r?He.fromObject(r,n):He.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new _n("need to specify a reason the Duration is invalid");const r=t instanceof Zn?t:new Zn(t,n);if(Ct.throwOnInvalid)throw new W_(r);return new He({invalid:r})}static normalizeUnit(t){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[t&&t.toLowerCase()];if(!n)throw new zS(t);return n}static isDuration(t){return t&&t.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(t,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Ht.create(this.loc,r).formatDurationFromString(this,t):c2}toHuman(t={}){const n=ki.map(r=>{const i=this.values[r];return ze(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...t,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:t.listStyle||"narrow",...t}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let t="P";return this.years!==0&&(t+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(t+=this.months+this.quarters*3+"M"),this.weeks!==0&&(t+=this.weeks+"W"),this.days!==0&&(t+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(t+="T"),this.hours!==0&&(t+=this.hours+"H"),this.minutes!==0&&(t+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(t+=Eh(this.seconds+this.milliseconds/1e3,3)+"S"),t==="P"&&(t+="T0S"),t}toISOTime(t={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;t={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...t};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=t.format==="basic"?"hhmm":"hh:mm";(!t.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=t.format==="basic"?"ss":":ss",(!t.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let o=r.toFormat(i);return t.includePrefix&&(o="T"+o),o}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;const n=He.fromDurationLike(t),r={};for(const i of ki)(Uo(n.values,i)||Uo(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Br(this,{values:r},!0)}minus(t){if(!this.isValid)return this;const n=He.fromDurationLike(t);return this.plus(n.negate())}mapUnits(t){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=ux(t(this.values[r],r));return Br(this,{values:n},!0)}get(t){return this[He.normalizeUnit(t)]}set(t){if(!this.isValid)return this;const n={...this.values,...uu(t,He.normalizeUnit)};return Br(this,{values:n})}reconfigure({locale:t,numberingSystem:n,conversionAccuracy:r,matrix:i}={}){const a={loc:this.loc.clone({locale:t,numberingSystem:n}),matrix:i,conversionAccuracy:r};return Br(this,a)}as(t){return this.isValid?this.shiftTo(t).get(t):NaN}normalize(){if(!this.isValid)return this;const t=this.toObject();return m2(this.matrix,t),Br(this,{values:t},!0)}rescale(){if(!this.isValid)return this;const t=v2(this.normalize().shiftToAll().toObject());return Br(this,{values:t},!0)}shiftTo(...t){if(!this.isValid)return this;if(t.length===0)return this;t=t.map(a=>He.normalizeUnit(a));const n={},r={},i=this.toObject();let o;for(const a of ki)if(t.indexOf(a)>=0){o=a;let s=0;for(const l in r)s+=this.matrix[l][a]*r[l],r[l]=0;Fi(i[a])&&(s+=i[a]);const u=Math.trunc(s);n[a]=u,r[a]=(s*1e3-u*1e3)/1e3;for(const l in i)ki.indexOf(l)>ki.indexOf(a)&&Ex(this.matrix,i,l,n,a)}else Fi(i[a])&&(r[a]=i[a]);for(const a in r)r[a]!==0&&(n[o]+=a===o?r[a]:r[a]/this.matrix[o][a]);return Br(this,{values:n},!0).normalize()}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=this.values[n]===0?0:-this.values[n];return Br(this,{values:t},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(t){if(!this.isValid||!t.isValid||!this.loc.equals(t.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of ki)if(!n(this.values[r],t.values[r]))return!1;return!0}}const uo="Invalid Interval";function y2(e,t){return!e||!e.isValid?vt.invalid("missing or invalid start"):!t||!t.isValid?vt.invalid("missing or invalid end"):tt:!1}isBefore(t){return this.isValid?this.e<=t:!1}contains(t){return this.isValid?this.s<=t&&this.e>t:!1}set({start:t,end:n}={}){return this.isValid?vt.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];const n=t.map(Ea).filter(a=>this.contains(a)).sort(),r=[];let{s:i}=this,o=0;for(;i+this.e?this.e:a;r.push(vt.fromDateTimes(i,s)),i=s,o+=1}return r}splitBy(t){const n=He.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,o;const a=[];for(;ru*i));o=+s>+this.e?this.e:s,a.push(vt.fromDateTimes(r,o)),r=o,i+=1}return a}divideEqually(t){return this.isValid?this.splitBy(this.length()/t).slice(0,t):[]}overlaps(t){return this.e>t.s&&this.s=t.e:!1}equals(t){return!this.isValid||!t.isValid?!1:this.s.equals(t.s)&&this.e.equals(t.e)}intersection(t){if(!this.isValid)return this;const n=this.s>t.s?this.s:t.s,r=this.e=r?null:vt.fromDateTimes(n,r)}union(t){if(!this.isValid)return this;const n=this.st.e?this.e:t.e;return vt.fromDateTimes(n,r)}static merge(t){const[n,r]=t.sort((i,o)=>i.s-o.s).reduce(([i,o],a)=>o?o.overlaps(a)||o.abutsStart(a)?[i,o.union(a)]:[i.concat([o]),a]:[i,a],[[],null]);return r&&n.push(r),n}static xor(t){let n=null,r=0;const i=[],o=t.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),a=Array.prototype.concat(...o),s=a.sort((u,l)=>u.time-l.time);for(const u of s)r+=u.type==="s"?1:-1,r===1?n=u.time:(n&&+n!=+u.time&&i.push(vt.fromDateTimes(n,u.time)),n=null);return vt.merge(i)}difference(...t){return vt.xor([this].concat(t)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:uo}toLocaleString(t=au,n={}){return this.isValid?Ht.create(this.s.loc.clone(n),t).formatInterval(this):uo}toISO(t){return this.isValid?`${this.s.toISO(t)}/${this.e.toISO(t)}`:uo}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:uo}toISOTime(t){return this.isValid?`${this.s.toISOTime(t)}/${this.e.toISOTime(t)}`:uo}toFormat(t,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(t)}${n}${this.e.toFormat(t)}`:uo}toDuration(t,n){return this.isValid?this.e.diff(this.s,t,n):He.invalid(this.invalidReason)}mapEndpoints(t){return vt.fromDateTimes(t(this.s),t(this.e))}}class sl{static hasDST(t=Ct.defaultZone){const n=de.now().setZone(t).set({month:12});return!t.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(t){return Mr.isValidZone(t)}static normalizeZone(t){return Zr(t,Ct.defaultZone)}static months(t="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||at.create(n,r,o)).months(t)}static monthsFormat(t="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||at.create(n,r,o)).months(t,!0)}static weekdays(t="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||at.create(n,r,null)).weekdays(t)}static weekdaysFormat(t="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||at.create(n,r,null)).weekdays(t,!0)}static meridiems({locale:t=null}={}){return at.create(t).meridiems()}static eras(t="short",{locale:n=null}={}){return at.create(n,null,"gregory").eras(t)}static features(){return{relative:sx()}}}function Iy(e,t){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(t)-n(e);return Math.floor(He.fromMillis(r).as("days"))}function g2(e,t,n){const r=[["years",(u,l)=>l.year-u.year],["quarters",(u,l)=>l.quarter-u.quarter+(l.year-u.year)*4],["months",(u,l)=>l.month-u.month+(l.year-u.year)*12],["weeks",(u,l)=>{const f=Iy(u,l);return(f-f%7)/7}],["days",Iy]],i={},o=e;let a,s;for(const[u,l]of r)n.indexOf(u)>=0&&(a=u,i[u]=l(e,t),s=o.plus(i),s>t?(i[u]--,e=o.plus(i)):e=s);return[e,i,s,a]}function w2(e,t,n,r){let[i,o,a,s]=g2(e,t,n);const u=t-i,l=n.filter(h=>["hours","minutes","seconds","milliseconds"].indexOf(h)>=0);l.length===0&&(a0?He.fromMillis(u,r).shiftTo(...l).plus(f):f}const Rh={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},Fy={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},S2=Rh.hanidec.replace(/[\[|\]]/g,"").split("");function x2(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=o&&r<=a&&(t+=r-o)}}return parseInt(t,10)}else return t}function Vn({numberingSystem:e},t=""){return new RegExp(`${Rh[e||"latn"]}${t}`)}const C2="missing Intl.DateTimeFormat.formatToParts support";function Ke(e,t=n=>n){return{regex:e,deser:([n])=>t(x2(n))}}const b2=String.fromCharCode(160),kx=`[ ${b2}]`,Tx=new RegExp(kx,"g");function E2(e){return e.replace(/\./g,"\\.?").replace(Tx,kx)}function Dy(e){return e.replace(/\./g,"").replace(Tx," ").toLowerCase()}function Hn(e,t){return e===null?null:{regex:RegExp(e.map(E2).join("|")),deser:([n])=>e.findIndex(r=>Dy(n)===Dy(r))+t}}function Ay(e,t){return{regex:e,deser:([,n,r])=>ju(n,r),groups:t}}function ll(e){return{regex:e,deser:([t])=>t}}function k2(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function T2(e,t){const n=Vn(t),r=Vn(t,"{2}"),i=Vn(t,"{3}"),o=Vn(t,"{4}"),a=Vn(t,"{6}"),s=Vn(t,"{1,2}"),u=Vn(t,"{1,3}"),l=Vn(t,"{1,6}"),f=Vn(t,"{1,9}"),h=Vn(t,"{2,4}"),p=Vn(t,"{4,6}"),y=N=>({regex:RegExp(k2(N.val)),deser:([w])=>w,literal:!0}),x=(N=>{if(e.literal)return y(N);switch(N.val){case"G":return Hn(t.eras("short",!1),0);case"GG":return Hn(t.eras("long",!1),0);case"y":return Ke(l);case"yy":return Ke(h,kf);case"yyyy":return Ke(o);case"yyyyy":return Ke(p);case"yyyyyy":return Ke(a);case"M":return Ke(s);case"MM":return Ke(r);case"MMM":return Hn(t.months("short",!0,!1),1);case"MMMM":return Hn(t.months("long",!0,!1),1);case"L":return Ke(s);case"LL":return Ke(r);case"LLL":return Hn(t.months("short",!1,!1),1);case"LLLL":return Hn(t.months("long",!1,!1),1);case"d":return Ke(s);case"dd":return Ke(r);case"o":return Ke(u);case"ooo":return Ke(i);case"HH":return Ke(r);case"H":return Ke(s);case"hh":return Ke(r);case"h":return Ke(s);case"mm":return Ke(r);case"m":return Ke(s);case"q":return Ke(s);case"qq":return Ke(r);case"s":return Ke(s);case"ss":return Ke(r);case"S":return Ke(u);case"SSS":return Ke(i);case"u":return ll(f);case"uu":return ll(s);case"uuu":return Ke(n);case"a":return Hn(t.meridiems(),0);case"kkkk":return Ke(o);case"kk":return Ke(h,kf);case"W":return Ke(s);case"WW":return Ke(r);case"E":case"c":return Ke(n);case"EEE":return Hn(t.weekdays("short",!1,!1),1);case"EEEE":return Hn(t.weekdays("long",!1,!1),1);case"ccc":return Hn(t.weekdays("short",!0,!1),1);case"cccc":return Hn(t.weekdays("long",!0,!1),1);case"Z":case"ZZ":return Ay(new RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case"ZZZ":return Ay(new RegExp(`([+-]${s.source})(${r.source})?`),2);case"z":return ll(/[a-z_+-/]{1,256}?/i);case" ":return ll(/[^\S\n\r]/);default:return y(N)}})(e)||{invalidReason:C2};return x.token=e,x}const N2={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function O2(e,t){const{type:n,value:r}=e;if(n==="literal"){const a=/^\s+$/.test(r);return{literal:!a,val:a?" ":r}}const i=t[n];let o=N2[n];if(typeof o=="object"&&(o=o[i]),o)return{literal:!1,val:o}}function R2(e){return[`^${e.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,e]}function _2(e,t,n){const r=e.match(t);if(r){const i={};let o=1;for(const a in n)if(Uo(n,a)){const s=n[a],u=s.groups?s.groups+1:1;!s.literal&&s.token&&(i[s.token.val[0]]=s.deser(r.slice(o,o+u))),o+=u}return[r,i]}else return[r,{}]}function P2(e){const t=o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return ze(e.z)||(n=Mr.create(e.z)),ze(e.Z)||(n||(n=new Qt(e.Z)),r=e.Z),ze(e.q)||(e.M=(e.q-1)*3+1),ze(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),ze(e.u)||(e.S=bh(e.u)),[Object.keys(e).reduce((o,a)=>{const s=t(a);return s&&(o[s]=e[a]),o},{}),n,r]}let nd=null;function M2(){return nd||(nd=de.fromMillis(1555555555555)),nd}function $2(e,t){if(e.literal)return e;const n=Ht.macroTokenToFormatOpts(e.val),r=Rx(n,t);return r==null||r.includes(void 0)?e:r}function Nx(e,t){return Array.prototype.concat(...e.map(n=>$2(n,t)))}function Ox(e,t,n){const r=Nx(Ht.parseFormat(n),e),i=r.map(a=>T2(a,e)),o=i.find(a=>a.invalidReason);if(o)return{input:t,tokens:r,invalidReason:o.invalidReason};{const[a,s]=R2(i),u=RegExp(a,"i"),[l,f]=_2(t,u,s),[h,p,y]=f?P2(f):[null,null,void 0];if(Uo(f,"a")&&Uo(f,"H"))throw new Pa("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:r,regex:u,rawMatches:l,matches:f,result:h,zone:p,specificOffset:y}}}function I2(e,t,n){const{result:r,zone:i,specificOffset:o,invalidReason:a}=Ox(e,t,n);return[r,i,o,a]}function Rx(e,t){return e?Ht.create(t,e).formatDateTimeParts(M2()).map(i=>O2(i,e)):null}const _x=[0,31,59,90,120,151,181,212,243,273,304,334],Px=[0,31,60,91,121,152,182,213,244,274,305,335];function Mn(e,t){return new Zn("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Mx(e,t,n){const r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function $x(e,t,n){return n+(Ns(e)?Px:_x)[t-1]}function Ix(e,t){const n=Ns(e)?Px:_x,r=n.findIndex(o=>olu(t)?(s=t+1,a=1):s=t,{weekYear:s,weekNumber:a,weekday:o,...Bu(e)}}function Ly(e){const{weekYear:t,weekNumber:n,weekday:r}=e,i=Mx(t,1,4),o=Ua(t);let a=n*7+r-i-3,s;a<1?(s=t-1,a+=Ua(s)):a>o?(s=t+1,a-=Ua(t)):s=t;const{month:u,day:l}=Ix(s,a);return{year:s,month:u,day:l,...Bu(e)}}function rd(e){const{year:t,month:n,day:r}=e,i=$x(t,n,r);return{year:t,ordinal:i,...Bu(e)}}function jy(e){const{year:t,ordinal:n}=e,{month:r,day:i}=Ix(t,n);return{year:t,month:r,day:i,...Bu(e)}}function F2(e){const t=Lu(e.weekYear),n=Cr(e.weekNumber,1,lu(e.weekYear)),r=Cr(e.weekday,1,7);return t?n?r?!1:Mn("weekday",e.weekday):Mn("week",e.week):Mn("weekYear",e.weekYear)}function D2(e){const t=Lu(e.year),n=Cr(e.ordinal,1,Ua(e.year));return t?n?!1:Mn("ordinal",e.ordinal):Mn("year",e.year)}function Fx(e){const t=Lu(e.year),n=Cr(e.month,1,12),r=Cr(e.day,1,su(e.year,e.month));return t?n?r?!1:Mn("day",e.day):Mn("month",e.month):Mn("year",e.year)}function Dx(e){const{hour:t,minute:n,second:r,millisecond:i}=e,o=Cr(t,0,23)||t===24&&n===0&&r===0&&i===0,a=Cr(n,0,59),s=Cr(r,0,59),u=Cr(i,0,999);return o?a?s?u?!1:Mn("millisecond",i):Mn("second",r):Mn("minute",n):Mn("hour",t)}const id="Invalid DateTime",By=864e13;function ul(e){return new Zn("unsupported zone",`the zone "${e.name}" is not supported`)}function od(e){return e.weekData===null&&(e.weekData=Tf(e.c)),e.weekData}function Ca(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new de({...n,...t,old:n})}function Ax(e,t,n){let r=e-t*60*1e3;const i=n.offset(r);if(t===i)return[r,t];r-=(i-t)*60*1e3;const o=n.offset(r);return i===o?[r,i]:[e-Math.min(i,o)*60*1e3,Math.max(i,o)]}function zy(e,t){e+=t*60*1e3;const n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Ol(e,t,n){return Ax(kh(e),t,n)}function Vy(e,t){const n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,o={...e.c,year:r,month:i,day:Math.min(e.c.day,su(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},a=He.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),s=kh(o);let[u,l]=Ax(s,n,e.zone);return a!==0&&(u+=a,l=e.zone.offset(u)),{ts:u,o:l}}function ba(e,t,n,r,i,o){const{setZone:a,zone:s}=n;if(e&&Object.keys(e).length!==0||t){const u=t||s,l=de.fromObject(e,{...n,zone:u,specificOffset:o});return a?l:l.setZone(s)}else return de.invalid(new Zn("unparsable",`the input "${i}" can't be parsed as ${r}`))}function cl(e,t,n=!0){return e.isValid?Ht.create(at.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ad(e,t){const n=e.c.year>9999||e.c.year<0;let r="";return n&&e.c.year>=0&&(r+="+"),r+=bt(e.c.year,n?6:4),t?(r+="-",r+=bt(e.c.month),r+="-",r+=bt(e.c.day)):(r+=bt(e.c.month),r+=bt(e.c.day)),r}function Hy(e,t,n,r,i,o){let a=bt(e.c.hour);return t?(a+=":",a+=bt(e.c.minute),(e.c.second!==0||!n)&&(a+=":")):a+=bt(e.c.minute),(e.c.second!==0||!n)&&(a+=bt(e.c.second),(e.c.millisecond!==0||!r)&&(a+=".",a+=bt(e.c.millisecond,3))),i&&(e.isOffsetFixed&&e.offset===0&&!o?a+="Z":e.o<0?(a+="-",a+=bt(Math.trunc(-e.o/60)),a+=":",a+=bt(Math.trunc(-e.o%60))):(a+="+",a+=bt(Math.trunc(e.o/60)),a+=":",a+=bt(Math.trunc(e.o%60)))),o&&(a+="["+e.zone.ianaName+"]"),a}const Lx={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},A2={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},L2={ordinal:1,hour:0,minute:0,second:0,millisecond:0},jx=["year","month","day","hour","minute","second","millisecond"],j2=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],B2=["year","ordinal","hour","minute","second","millisecond"];function Wy(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new zS(e);return t}function Uy(e,t){const n=Zr(t.zone,Ct.defaultZone),r=at.fromObject(t),i=Ct.now();let o,a;if(ze(e.year))o=i;else{for(const l of jx)ze(e[l])&&(e[l]=Lx[l]);const s=Fx(e)||Dx(e);if(s)return de.invalid(s);const u=n.offset(i);[o,a]=Ol(e,u,n)}return new de({ts:o,zone:n,loc:r,o:a})}function Gy(e,t,n){const r=ze(n.round)?!0:n.round,i=(a,s)=>(a=Eh(a,r||n.calendary?0:2,!0),t.loc.clone(n).relFormatter(n).format(a,s)),o=a=>n.calendary?t.hasSame(e,a)?0:t.startOf(a).diff(e.startOf(a),a).get(a):t.diff(e,a).get(a);if(n.unit)return i(o(n.unit),n.unit);for(const a of n.units){const s=o(a);if(Math.abs(s)>=1)return i(s,a)}return i(e>t?-0:0,n.units[n.units.length-1])}function qy(e){let t={},n;return e.length>0&&typeof e[e.length-1]=="object"?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}class de{constructor(t){const n=t.zone||Ct.defaultZone;let r=t.invalid||(Number.isNaN(t.ts)?new Zn("invalid input"):null)||(n.isValid?null:ul(n));this.ts=ze(t.ts)?Ct.now():t.ts;let i=null,o=null;if(!r)if(t.old&&t.old.ts===this.ts&&t.old.zone.equals(n))[i,o]=[t.old.c,t.old.o];else{const s=n.offset(this.ts);i=zy(this.ts,s),r=Number.isNaN(i.year)?new Zn("invalid input"):null,i=r?null:i,o=r?null:s}this._zone=n,this.loc=t.loc||at.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}static now(){return new de({})}static local(){const[t,n]=qy(arguments),[r,i,o,a,s,u,l]=n;return Uy({year:r,month:i,day:o,hour:a,minute:s,second:u,millisecond:l},t)}static utc(){const[t,n]=qy(arguments),[r,i,o,a,s,u,l]=n;return t.zone=Qt.utcInstance,Uy({year:r,month:i,day:o,hour:a,minute:s,second:u,millisecond:l},t)}static fromJSDate(t,n={}){const r=dP(t)?t.valueOf():NaN;if(Number.isNaN(r))return de.invalid("invalid input");const i=Zr(n.zone,Ct.defaultZone);return i.isValid?new de({ts:r,zone:i,loc:at.fromObject(n)}):de.invalid(ul(i))}static fromMillis(t,n={}){if(Fi(t))return t<-By||t>By?de.invalid("Timestamp out of range"):new de({ts:t,zone:Zr(n.zone,Ct.defaultZone),loc:at.fromObject(n)});throw new _n(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,n={}){if(Fi(t))return new de({ts:t*1e3,zone:Zr(n.zone,Ct.defaultZone),loc:at.fromObject(n)});throw new _n("fromSeconds requires a numerical input")}static fromObject(t,n={}){t=t||{};const r=Zr(n.zone,Ct.defaultZone);if(!r.isValid)return de.invalid(ul(r));const i=Ct.now(),o=ze(n.specificOffset)?r.offset(i):n.specificOffset,a=uu(t,Wy),s=!ze(a.ordinal),u=!ze(a.year),l=!ze(a.month)||!ze(a.day),f=u||l,h=a.weekYear||a.weekNumber,p=at.fromObject(n);if((f||s)&&h)throw new Pa("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&s)throw new Pa("Can't mix ordinal dates with month/day");const y=h||a.weekday&&!f;let C,x,N=zy(i,o);y?(C=j2,x=A2,N=Tf(N)):s?(C=B2,x=L2,N=rd(N)):(C=jx,x=Lx);let w=!1;for(const A of C){const I=a[A];ze(I)?w?a[A]=x[A]:a[A]=N[A]:w=!0}const E=y?F2(a):s?D2(a):Fx(a),b=E||Dx(a);if(b)return de.invalid(b);const T=y?Ly(a):s?jy(a):a,[R,M]=Ol(T,o,r),F=new de({ts:R,zone:r,o:M,loc:p});return a.weekday&&f&&t.weekday!==F.weekday?de.invalid("mismatched weekday",`you can't specify both a weekday of ${a.weekday} and a date of ${F.toISO()}`):F}static fromISO(t,n={}){const[r,i]=e2(t);return ba(r,i,n,"ISO 8601",t)}static fromRFC2822(t,n={}){const[r,i]=t2(t);return ba(r,i,n,"RFC 2822",t)}static fromHTTP(t,n={}){const[r,i]=n2(t);return ba(r,i,n,"HTTP",n)}static fromFormat(t,n,r={}){if(ze(t)||ze(n))throw new _n("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:o=null}=r,a=at.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0}),[s,u,l,f]=I2(a,t,n);return f?de.invalid(f):ba(s,u,r,`format ${n}`,t,l)}static fromString(t,n,r={}){return de.fromFormat(t,n,r)}static fromSQL(t,n={}){const[r,i]=u2(t);return ba(r,i,n,"SQL",t)}static invalid(t,n=null){if(!t)throw new _n("need to specify a reason the DateTime is invalid");const r=t instanceof Zn?t:new Zn(t,n);if(Ct.throwOnInvalid)throw new V_(r);return new de({invalid:r})}static isDateTime(t){return t&&t.isLuxonDateTime||!1}static parseFormatForOpts(t,n={}){const r=Rx(t,at.fromObject(n));return r?r.map(i=>i?i.val:null).join(""):null}static expandFormat(t,n={}){return Nx(Ht.parseFormat(t),at.fromObject(n)).map(i=>i.val).join("")}get(t){return this[t]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?od(this).weekYear:NaN}get weekNumber(){return this.isValid?od(this).weekNumber:NaN}get weekday(){return this.isValid?od(this).weekday:NaN}get ordinal(){return this.isValid?rd(this.c).ordinal:NaN}get monthShort(){return this.isValid?sl.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?sl.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?sl.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?sl.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return Ns(this.year)}get daysInMonth(){return su(this.year,this.month)}get daysInYear(){return this.isValid?Ua(this.year):NaN}get weeksInWeekYear(){return this.isValid?lu(this.weekYear):NaN}resolvedLocaleOptions(t={}){const{locale:n,numberingSystem:r,calendar:i}=Ht.create(this.loc.clone(t),t).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(t=0,n={}){return this.setZone(Qt.instance(t),n)}toLocal(){return this.setZone(Ct.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=Zr(t,Ct.defaultZone),t.equals(this.zone))return this;if(t.isValid){let i=this.ts;if(n||r){const o=t.offset(this.ts),a=this.toObject();[i]=Ol(a,o,t)}return Ca(this,{ts:i,zone:t})}else return de.invalid(ul(t))}reconfigure({locale:t,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:t,numberingSystem:n,outputCalendar:r});return Ca(this,{loc:i})}setLocale(t){return this.reconfigure({locale:t})}set(t){if(!this.isValid)return this;const n=uu(t,Wy),r=!ze(n.weekYear)||!ze(n.weekNumber)||!ze(n.weekday),i=!ze(n.ordinal),o=!ze(n.year),a=!ze(n.month)||!ze(n.day),s=o||a,u=n.weekYear||n.weekNumber;if((s||i)&&u)throw new Pa("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(a&&i)throw new Pa("Can't mix ordinal dates with month/day");let l;r?l=Ly({...Tf(this.c),...n}):ze(n.ordinal)?(l={...this.toObject(),...n},ze(n.day)&&(l.day=Math.min(su(l.year,l.month),l.day))):l=jy({...rd(this.c),...n});const[f,h]=Ol(l,this.o,this.zone);return Ca(this,{ts:f,o:h})}plus(t){if(!this.isValid)return this;const n=He.fromDurationLike(t);return Ca(this,Vy(this,n))}minus(t){if(!this.isValid)return this;const n=He.fromDurationLike(t).negate();return Ca(this,Vy(this,n))}startOf(t){if(!this.isValid)return this;const n={},r=He.normalizeUnit(t);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(t){return this.isValid?this.plus({[t]:1}).startOf(t).minus(1):this}toFormat(t,n={}){return this.isValid?Ht.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,t):id}toLocaleString(t=au,n={}){return this.isValid?Ht.create(this.loc.clone(n),t).formatDateTime(this):id}toLocaleParts(t={}){return this.isValid?Ht.create(this.loc.clone(t),t).formatDateTimeParts(this):[]}toISO({format:t="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:o=!1}={}){if(!this.isValid)return null;const a=t==="extended";let s=ad(this,a);return s+="T",s+=Hy(this,a,n,r,i,o),s}toISODate({format:t="extended"}={}){return this.isValid?ad(this,t==="extended"):null}toISOWeekDate(){return cl(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:t=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:o=!1,format:a="extended"}={}){return this.isValid?(i?"T":"")+Hy(this,a==="extended",n,t,r,o):null}toRFC2822(){return cl(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return cl(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?ad(this,!0):null}toSQLTime({includeOffset:t=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||t)&&(r&&(i+=" "),n?i+="z":t&&(i+="ZZ")),cl(this,i,!0)}toSQL(t={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(t)}`:null}toString(){return this.isValid?this.toISO():id}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(t={}){if(!this.isValid)return{};const n={...this.c};return t.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(t,n="milliseconds",r={}){if(!this.isValid||!t.isValid)return He.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},o=fP(n).map(He.normalizeUnit),a=t.valueOf()>this.valueOf(),s=a?this:t,u=a?t:this,l=w2(s,u,o,i);return a?l.negate():l}diffNow(t="milliseconds",n={}){return this.diff(de.now(),t,n)}until(t){return this.isValid?vt.fromDateTimes(this,t):this}hasSame(t,n){if(!this.isValid)return!1;const r=t.valueOf(),i=this.setZone(t.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(t){return this.isValid&&t.isValid&&this.valueOf()===t.valueOf()&&this.zone.equals(t.zone)&&this.loc.equals(t.loc)}toRelative(t={}){if(!this.isValid)return null;const n=t.base||de.fromObject({},{zone:this.zone}),r=t.padding?thisn.valueOf(),Math.min)}static max(...t){if(!t.every(de.isDateTime))throw new _n("max requires all arguments be DateTimes");return Py(t,n=>n.valueOf(),Math.max)}static fromFormatExplain(t,n,r={}){const{locale:i=null,numberingSystem:o=null}=r,a=at.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});return Ox(a,t,n)}static fromStringExplain(t,n,r={}){return de.fromFormatExplain(t,n,r)}static get DATE_SHORT(){return au}static get DATE_MED(){return VS}static get DATE_MED_WITH_WEEKDAY(){return U_}static get DATE_FULL(){return HS}static get DATE_HUGE(){return WS}static get TIME_SIMPLE(){return US}static get TIME_WITH_SECONDS(){return GS}static get TIME_WITH_SHORT_OFFSET(){return qS}static get TIME_WITH_LONG_OFFSET(){return KS}static get TIME_24_SIMPLE(){return ZS}static get TIME_24_WITH_SECONDS(){return YS}static get TIME_24_WITH_SHORT_OFFSET(){return QS}static get TIME_24_WITH_LONG_OFFSET(){return XS}static get DATETIME_SHORT(){return JS}static get DATETIME_SHORT_WITH_SECONDS(){return ex}static get DATETIME_MED(){return tx}static get DATETIME_MED_WITH_SECONDS(){return nx}static get DATETIME_MED_WITH_WEEKDAY(){return G_}static get DATETIME_FULL(){return rx}static get DATETIME_FULL_WITH_SECONDS(){return ix}static get DATETIME_HUGE(){return ox}static get DATETIME_HUGE_WITH_SECONDS(){return ax}}function Ea(e){if(de.isDateTime(e))return e;if(e&&e.valueOf&&Fi(e.valueOf()))return de.fromJSDate(e);if(e&&typeof e=="object")return de.fromObject(e);throw new _n(`Unknown datetime argument: ${e}, of type ${typeof e}`)}de.now().toMillis(),de.now().plus({minutes:1}).toMillis(),de.now().toMillis(),de.now().plus({minutes:1}).toMillis();de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis(),de.now().toMillis();const Ky=({type:e,show:t,onHide:n})=>{var C,x,N;const{event:r,setEvent:i,config:o,locale:a}=ye(),[s,u]=m.useState("bank"),[l,f]=m.useState(0),[h,p]=m.useState(!1),y=async w=>{w.preventDefault(),p(!0);try{await Ne("update-dealership-balance",{dealership:r.dealershipId,action:e,source:s,amount:l}),i({...r,playerBalance:{...r.playerBalance,[s]:e==="deposit"?r.playerBalance[s]-(l||0):r.playerBalance[s]+(l||0)}})}catch{}n(),p(!1)};return g(z,{show:t,size:"sm",onHide:()=>n(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:a[e]})}),c(z.Body,{children:g(j,{onSubmit:y,children:[e==="deposit"&&g(j.Group,{className:"mb-3",children:[c(j.Label,{children:a.paymentSource}),g("div",{children:[c(j.Check,{label:g("div",{className:"d-flex align-items-center",children:[c("span",{className:"me-2",children:a.bank}),c(vn,{bg:"secondary",children:Le((C=r.playerBalance)==null?void 0:C.bank,o)})]}),name:"payment-source",type:"radio",id:"payment-source-card",checked:s==="bank",onChange:w=>u(w.target.checked?"bank":"cash")}),c(j.Check,{label:g("div",{className:"d-flex align-items-center",children:[c("span",{className:"me-2",children:a.cash}),c(vn,{bg:"secondary",children:Le((x=r.playerBalance)==null?void 0:x.cash,o)})]}),name:"payment-source",type:"radio",id:"payment-source-cash",checked:s==="cash",onChange:w=>u(w.target.checked?"cash":"bank")})]})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:a.amount}),c(Gt,{children:c(j.Control,{type:"number",min:1,max:e==="deposit"?(N=r.playerBalance)==null?void 0:N[s]:r.balance,value:l,onChange:w=>f(w.target.value?parseFloat(w.target.value):""),required:!0})})]}),c(ee,{type:"submit",variant:"primary",disabled:h,children:a[e]})]})})]})},z2=({currentTab:e})=>{var p,y,C;const{event:t,setEvent:n,config:r,locale:i}=ye(),[o,a]=m.useState(t.balance||0),[s,u]=m.useState(!1),[l,f]=m.useState(!1);m.useEffect(()=>{e===i.dashboard&&h()},[e]);const h=async()=>{const{balance:x}=await Ne("get-dealership-balance",{dealership:t.dealershipId});a(x),n(N=>({...N,balance:x}))};return g("div",{children:[c(ur,{className:"mb-3",children:c(Xe,{children:c(Ue,{border:"primary",children:c(Ue.Body,{className:"d-flex justify-content-between",children:t.shopType=="owned"?g(Wt,{children:[g("div",{children:[c("h2",{children:Le(o,r)}),c("div",{children:i.accountBalance})]}),t.employeeRole!=="supervisor"&&g("div",{className:"d-flex flex-column justify-content-end gap-2",children:[g(ee,{size:"sm",onClick:()=>u(!0),children:[c("i",{className:"bi-box-arrow-left me-2"}),i.withdraw]}),g(ee,{size:"sm",variant:"secondary",onClick:()=>f(!0),children:[c("i",{className:"bi-box-arrow-right me-2"}),i.deposit]})]})]}):c("h5",{className:"text-primary mb-0",children:"Self-service dealership"})})})})}),g(ur,{children:[c(Xe,{sm:4,children:c(Ue,{children:g(Ue.Body,{children:[c("h3",{children:((p=t.stats)==null?void 0:p.vehiclesCount)||0}),c("span",{children:i.vehicles})]})})}),c(Xe,{sm:4,children:c(Ue,{children:g(Ue.Body,{children:[c("h3",{children:((y=t.stats)==null?void 0:y.totalSales)||0}),c("span",{children:i.totalSales})]})})}),c(Xe,{sm:4,children:c(Ue,{children:g(Ue.Body,{children:[c("h3",{children:((C=t.stats)==null?void 0:C.vehiclesOnDisplay)||0}),c("span",{children:i.vehiclesOnDisplay})]})})})]}),c(ur,{}),c(Ky,{type:"withdraw",show:s,onHide:()=>{u(!1),h()}}),c(Ky,{type:"deposit",show:l,onHide:()=>{f(!1),h()}})]})};var Bx={exports:{}},Nf={exports:{}};(function(e,t){(function(n,r){r(t,m)})(jf,function(n,r){function i(d,v,S,k,_,O,P){try{var L=d[O](P),B=L.value}catch(V){return void S(V)}L.done?v(B):Promise.resolve(B).then(k,_)}function o(d){return function(){var v=this,S=arguments;return new Promise(function(k,_){var O=d.apply(v,S);function P(B){i(O,k,_,P,L,"next",B)}function L(B){i(O,k,_,P,L,"throw",B)}P(void 0)})}}function a(){return(a=Object.assign||function(d){for(var v=1;v=0||(_[S]=d[S]);return _}function u(d){var v=function(S,k){if(typeof S!="object"||S===null)return S;var _=S[Symbol.toPrimitive];if(_!==void 0){var O=_.call(S,k||"default");if(typeof O!="object")return O;throw new TypeError("@@toPrimitive must return a primitive value.")}return(k==="string"?String:Number)(S)}(d,"string");return typeof v=="symbol"?v:String(v)}r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;var l={init:"init"},f=function(d){var v=d.value;return v===void 0?"":v},h=function(){return r.createElement(r.Fragment,null," ")},p={Cell:f,width:150,minWidth:0,maxWidth:Number.MAX_SAFE_INTEGER};function y(){for(var d=arguments.length,v=new Array(d),S=0;S(O=typeof O=="number"?O:1/0)){var P=_;_=O,O=P}return d.filter(function(L){return v.some(function(B){var V=L.values[B];return V>=_&&V<=O})})};am.autoRemove=function(d){return!d||typeof d[0]!="number"&&typeof d[1]!="number"};var ua=Object.freeze({__proto__:null,text:Qh,exactText:Xh,exactTextCase:Jh,includes:em,includesAll:tm,includesSome:nm,includesValue:rm,exact:im,equals:om,between:am});l.resetFilters="resetFilters",l.setFilter="setFilter",l.setAllFilters="setAllFilters";var sm=function(d){d.stateReducers.push(AC),d.useInstance.push(LC)};function AC(d,v,S,k){if(v.type===l.init)return a({filters:[]},d);if(v.type===l.resetFilters)return a({},d,{filters:k.initialState.filters||[]});if(v.type===l.setFilter){var _=v.columnId,O=v.filterValue,P=k.allColumns,L=k.filterTypes,B=P.find(function(ie){return ie.id===_});if(!B)throw new Error("React-Table: Could not find a column with id: "+_);var V=U(B.filter,L||{},ua),X=d.filters.find(function(ie){return ie.id===_}),K=E(O,X&&X.value);return re(V.autoRemove,K,B)?a({},d,{filters:d.filters.filter(function(ie){return ie.id!==_})}):a({},d,X?{filters:d.filters.map(function(ie){return ie.id===_?{id:_,value:K}:ie})}:{filters:[].concat(d.filters,[{id:_,value:K}])})}if(v.type===l.setAllFilters){var Y=v.filters,H=k.allColumns,Q=k.filterTypes;return a({},d,{filters:E(Y,d.filters).filter(function(ie){var se=H.find(function(me){return me.id===ie.id});return!re(U(se.filter,Q||{},ua).autoRemove,ie.value,se)})})}}function LC(d){var v=d.data,S=d.rows,k=d.flatRows,_=d.rowsById,O=d.allColumns,P=d.filterTypes,L=d.manualFilters,B=d.defaultCanFilter,V=B!==void 0&&B,X=d.disableFilters,K=d.state.filters,Y=d.dispatch,H=d.autoResetFilters,Q=H===void 0||H,ie=r.useCallback(function(ue,Ee){Y({type:l.setFilter,columnId:ue,filterValue:Ee})},[Y]),se=r.useCallback(function(ue){Y({type:l.setAllFilters,filters:ue})},[Y]);O.forEach(function(ue){var Ee=ue.id,Ie=ue.accessor,we=ue.defaultCanFilter,Ce=ue.disableFilters;ue.canFilter=Ie?te(Ce!==!0&&void 0,X!==!0&&void 0,!0):te(we,V,!1),ue.setFilter=function(Te){return ie(ue.id,Te)};var Ve=K.find(function(Te){return Te.id===Ee});ue.filterValue=Ve&&Ve.value});var me=r.useMemo(function(){if(L||!K.length)return[S,k,_];var ue=[],Ee={};return[function Ie(we,Ce){Ce===void 0&&(Ce=0);var Ve=we;return(Ve=K.reduce(function(Te,Be){var Ae=Be.id,Qe=Be.value,ve=O.find(function(mt){return mt.id===Ae});if(!ve)return Te;Ce===0&&(ve.preFilteredRows=Te);var Fe=U(ve.filter,P||{},ua);return Fe?(ve.filteredRows=Fe(Te,[Ae],Qe),ve.filteredRows):(console.warn("Could not find a valid 'column.filter' for column with the ID: "+ve.id+"."),Te)},we)).forEach(function(Te){ue.push(Te),Ee[Te.id]=Te,Te.subRows&&(Te.subRows=Te.subRows&&Te.subRows.length>0?Ie(Te.subRows,Ce+1):Te.subRows)}),Ve}(S),ue,Ee]},[L,K,S,k,_,O,P]),Me=me[0],pe=me[1],J=me[2];r.useMemo(function(){O.filter(function(ue){return!K.find(function(Ee){return Ee.id===ue.id})}).forEach(function(ue){ue.preFilteredRows=Me,ue.filteredRows=Me})},[Me,K,O]);var Re=b(Q);R(function(){Re()&&Y({type:l.resetFilters})},[Y,L?null:v]),Object.assign(d,{preFilteredRows:S,preFilteredFlatRows:k,preFilteredRowsById:_,filteredRows:Me,filteredFlatRows:pe,filteredRowsById:J,rows:Me,flatRows:pe,rowsById:J,setFilter:ie,setAllFilters:se})}sm.pluginName="useFilters",l.resetGlobalFilter="resetGlobalFilter",l.setGlobalFilter="setGlobalFilter";var lm=function(d){d.stateReducers.push(jC),d.useInstance.push(BC)};function jC(d,v,S,k){if(v.type===l.resetGlobalFilter)return a({},d,{globalFilter:k.initialState.globalFilter||void 0});if(v.type===l.setGlobalFilter){var _=v.filterValue,O=k.userFilterTypes,P=U(k.globalFilter,O||{},ua),L=E(_,d.globalFilter);return re(P.autoRemove,L)?(d.globalFilter,s(d,["globalFilter"])):a({},d,{globalFilter:L})}}function BC(d){var v=d.data,S=d.rows,k=d.flatRows,_=d.rowsById,O=d.allColumns,P=d.filterTypes,L=d.globalFilter,B=d.manualGlobalFilter,V=d.state.globalFilter,X=d.dispatch,K=d.autoResetGlobalFilter,Y=K===void 0||K,H=d.disableGlobalFilter,Q=r.useCallback(function(J){X({type:l.setGlobalFilter,filterValue:J})},[X]),ie=r.useMemo(function(){if(B||V===void 0)return[S,k,_];var J=[],Re={},ue=U(L,P||{},ua);if(!ue)return console.warn("Could not find a valid 'globalFilter' option."),S;O.forEach(function(Ie){var we=Ie.disableGlobalFilter;Ie.canFilter=te(we!==!0&&void 0,H!==!0&&void 0,!0)});var Ee=O.filter(function(Ie){return Ie.canFilter===!0});return[function Ie(we){return(we=ue(we,Ee.map(function(Ce){return Ce.id}),V)).forEach(function(Ce){J.push(Ce),Re[Ce.id]=Ce,Ce.subRows=Ce.subRows&&Ce.subRows.length?Ie(Ce.subRows):Ce.subRows}),we}(S),J,Re]},[B,V,L,P,O,S,k,_,H]),se=ie[0],me=ie[1],Me=ie[2],pe=b(Y);R(function(){pe()&&X({type:l.resetGlobalFilter})},[X,B?null:v]),Object.assign(d,{preGlobalFilteredRows:S,preGlobalFilteredFlatRows:k,preGlobalFilteredRowsById:_,globalFilteredRows:se,globalFilteredFlatRows:me,globalFilteredRowsById:Me,rows:se,flatRows:me,rowsById:Me,setGlobalFilter:Q,disableGlobalFilter:H})}function um(d,v){return v.reduce(function(S,k){return S+(typeof k=="number"?k:0)},0)}lm.pluginName="useGlobalFilter";var cm=Object.freeze({__proto__:null,sum:um,min:function(d){var v=d[0]||0;return d.forEach(function(S){typeof S=="number"&&(v=Math.min(v,S))}),v},max:function(d){var v=d[0]||0;return d.forEach(function(S){typeof S=="number"&&(v=Math.max(v,S))}),v},minMax:function(d){var v=d[0]||0,S=d[0]||0;return d.forEach(function(k){typeof k=="number"&&(v=Math.min(v,k),S=Math.max(S,k))}),v+".."+S},average:function(d){return um(0,d)/d.length},median:function(d){if(!d.length)return null;var v=Math.floor(d.length/2),S=[].concat(d).sort(function(k,_){return k-_});return d.length%2!=0?S[v]:(S[v-1]+S[v])/2},unique:function(d){return Array.from(new Set(d).values())},uniqueCount:function(d){return new Set(d).size},count:function(d){return d.length}}),zC=[],VC={};l.resetGroupBy="resetGroupBy",l.setGroupBy="setGroupBy",l.toggleGroupBy="toggleGroupBy";var dm=function(d){d.getGroupByToggleProps=[HC],d.stateReducers.push(WC),d.visibleColumnsDeps.push(function(v,S){var k=S.instance;return[].concat(v,[k.state.groupBy])}),d.visibleColumns.push(UC),d.useInstance.push(qC),d.prepareRow.push(KC)};dm.pluginName="useGroupBy";var HC=function(d,v){var S=v.header;return[d,{onClick:S.canGroupBy?function(k){k.persist(),S.toggleGroupBy()}:void 0,style:{cursor:S.canGroupBy?"pointer":void 0},title:"Toggle GroupBy"}]};function WC(d,v,S,k){if(v.type===l.init)return a({groupBy:[]},d);if(v.type===l.resetGroupBy)return a({},d,{groupBy:k.initialState.groupBy||[]});if(v.type===l.setGroupBy)return a({},d,{groupBy:v.value});if(v.type===l.toggleGroupBy){var _=v.columnId,O=v.value,P=O!==void 0?O:!d.groupBy.includes(_);return a({},d,P?{groupBy:[].concat(d.groupBy,[_])}:{groupBy:d.groupBy.filter(function(L){return L!==_})})}}function UC(d,v){var S=v.instance.state.groupBy,k=S.map(function(O){return d.find(function(P){return P.id===O})}).filter(Boolean),_=d.filter(function(O){return!S.includes(O.id)});return(d=[].concat(k,_)).forEach(function(O){O.isGrouped=S.includes(O.id),O.groupedIndex=S.indexOf(O.id)}),d}var GC={};function qC(d){var v=d.data,S=d.rows,k=d.flatRows,_=d.rowsById,O=d.allColumns,P=d.flatHeaders,L=d.groupByFn,B=L===void 0?fm:L,V=d.manualGroupBy,X=d.aggregations,K=X===void 0?GC:X,Y=d.plugins,H=d.state.groupBy,Q=d.dispatch,ie=d.autoResetGroupBy,se=ie===void 0||ie,me=d.disableGroupBy,Me=d.defaultCanGroupBy,pe=d.getHooks;w(Y,["useColumnOrder","useFilters"],"useGroupBy");var J=b(d);O.forEach(function(ve){var Fe=ve.accessor,mt=ve.defaultGroupBy,Kt=ve.disableGroupBy;ve.canGroupBy=Fe?te(ve.canGroupBy,Kt!==!0&&void 0,me!==!0&&void 0,!0):te(ve.canGroupBy,mt,Me,!1),ve.canGroupBy&&(ve.toggleGroupBy=function(){return d.toggleGroupBy(ve.id)}),ve.Aggregated=ve.Aggregated||ve.Cell});var Re=r.useCallback(function(ve,Fe){Q({type:l.toggleGroupBy,columnId:ve,value:Fe})},[Q]),ue=r.useCallback(function(ve){Q({type:l.setGroupBy,value:ve})},[Q]);P.forEach(function(ve){ve.getGroupByToggleProps=C(pe().getGroupByToggleProps,{instance:J(),header:ve})});var Ee=r.useMemo(function(){if(V||!H.length)return[S,k,_,zC,VC,k,_];var ve=H.filter(function(_t){return O.find(function(Ar){return Ar.id===_t})}),Fe=[],mt={},Kt=[],Se={},lt=[],St={},Zt=function _t(Ar,pr,_m){if(pr===void 0&&(pr=0),pr===ve.length)return Ar.map(function(Is){return a({},Is,{depth:pr})});var hc=ve[pr],Db=B(Ar,hc);return Object.entries(Db).map(function(Is,Ab){var Pm=Is[0],Fs=Is[1],Ds=hc+":"+Pm,Mm=_t(Fs,pr+1,Ds=_m?_m+">"+Ds:Ds),$m=pr?ge(Fs,"leafRows"):Fs,Lb=function(bn,mc,Bb){var As={};return O.forEach(function(xt){if(ve.includes(xt.id))As[xt.id]=mc[0]?mc[0].values[xt.id]:null;else{var Im=typeof xt.aggregate=="function"?xt.aggregate:K[xt.aggregate]||cm[xt.aggregate];if(Im){var zb=mc.map(function(Ls){return Ls.values[xt.id]}),Vb=bn.map(function(Ls){var vc=Ls.values[xt.id];if(!Bb&&xt.aggregateValue){var Fm=typeof xt.aggregateValue=="function"?xt.aggregateValue:K[xt.aggregateValue]||cm[xt.aggregateValue];if(!Fm)throw console.info({column:xt}),new Error("React Table: Invalid column.aggregateValue option for column listed above");vc=Fm(vc,Ls,xt)}return vc});As[xt.id]=Im(Vb,zb)}else{if(xt.aggregate)throw console.info({column:xt}),new Error("React Table: Invalid column.aggregate option for column listed above");As[xt.id]=null}}}),As}($m,Fs,pr),jb={id:Ds,isGrouped:!0,groupByID:hc,groupByVal:Pm,values:Lb,subRows:Mm,leafRows:$m,depth:pr,index:Ab};return Mm.forEach(function(bn){Fe.push(bn),mt[bn.id]=bn,bn.isGrouped?(Kt.push(bn),Se[bn.id]=bn):(lt.push(bn),St[bn.id]=bn)}),jb})}(S);return Zt.forEach(function(_t){Fe.push(_t),mt[_t.id]=_t,_t.isGrouped?(Kt.push(_t),Se[_t.id]=_t):(lt.push(_t),St[_t.id]=_t)}),[Zt,Fe,mt,Kt,Se,lt,St]},[V,H,S,k,_,O,K,B]),Ie=Ee[0],we=Ee[1],Ce=Ee[2],Ve=Ee[3],Te=Ee[4],Be=Ee[5],Ae=Ee[6],Qe=b(se);R(function(){Qe()&&Q({type:l.resetGroupBy})},[Q,V?null:v]),Object.assign(d,{preGroupedRows:S,preGroupedFlatRow:k,preGroupedRowsById:_,groupedRows:Ie,groupedFlatRows:we,groupedRowsById:Ce,onlyGroupedFlatRows:Ve,onlyGroupedRowsById:Te,nonGroupedFlatRows:Be,nonGroupedRowsById:Ae,rows:Ie,flatRows:we,rowsById:Ce,toggleGroupBy:Re,setGroupBy:ue})}function KC(d){d.allCells.forEach(function(v){var S;v.isGrouped=v.column.isGrouped&&v.column.id===d.groupByID,v.isPlaceholder=!v.isGrouped&&v.column.isGrouped,v.isAggregated=!v.isGrouped&&!v.isPlaceholder&&((S=d.subRows)==null?void 0:S.length)})}function fm(d,v){return d.reduce(function(S,k,_){var O=""+k.values[v];return S[O]=Array.isArray(S[O])?S[O]:[],S[O].push(k),S},{})}var pm=/([0-9]+)/gm;function lc(d,v){return d===v?0:d>v?1:-1}function ca(d,v,S){return[d.values[S],v.values[S]]}function hm(d){return typeof d=="number"?isNaN(d)||d===1/0||d===-1/0?"":String(d):typeof d=="string"?d:""}var ZC=Object.freeze({__proto__:null,alphanumeric:function(d,v,S){var k=ca(d,v,S),_=k[0],O=k[1];for(_=hm(_),O=hm(O),_=_.split(pm).filter(Boolean),O=O.split(pm).filter(Boolean);_.length&&O.length;){var P=_.shift(),L=O.shift(),B=parseInt(P,10),V=parseInt(L,10),X=[B,V].sort();if(isNaN(X[0])){if(P>L)return 1;if(L>P)return-1}else{if(isNaN(X[1]))return isNaN(B)?-1:1;if(B>V)return 1;if(V>B)return-1}}return _.length-O.length},datetime:function(d,v,S){var k=ca(d,v,S),_=k[0],O=k[1];return lc(_=_.getTime(),O=O.getTime())},basic:function(d,v,S){var k=ca(d,v,S);return lc(k[0],k[1])},string:function(d,v,S){var k=ca(d,v,S),_=k[0],O=k[1];for(_=_.split("").filter(Boolean),O=O.split("").filter(Boolean);_.length&&O.length;){var P=_.shift(),L=O.shift(),B=P.toLowerCase(),V=L.toLowerCase();if(B>V)return 1;if(V>B)return-1;if(P>L)return 1;if(L>P)return-1}return _.length-O.length},number:function(d,v,S){var k=ca(d,v,S),_=k[0],O=k[1],P=/[^0-9.]/gi;return lc(_=Number(String(_).replace(P,"")),O=Number(String(O).replace(P,"")))}});l.resetSortBy="resetSortBy",l.setSortBy="setSortBy",l.toggleSortBy="toggleSortBy",l.clearSortBy="clearSortBy",p.sortType="alphanumeric",p.sortDescFirst=!1;var mm=function(d){d.getSortByToggleProps=[YC],d.stateReducers.push(QC),d.useInstance.push(XC)};mm.pluginName="useSortBy";var YC=function(d,v){var S=v.instance,k=v.column,_=S.isMultiSortEvent,O=_===void 0?function(P){return P.shiftKey}:_;return[d,{onClick:k.canSort?function(P){P.persist(),k.toggleSortBy(void 0,!S.disableMultiSort&&O(P))}:void 0,style:{cursor:k.canSort?"pointer":void 0},title:k.canSort?"Toggle SortBy":void 0}]};function QC(d,v,S,k){if(v.type===l.init)return a({sortBy:[]},d);if(v.type===l.resetSortBy)return a({},d,{sortBy:k.initialState.sortBy||[]});if(v.type===l.clearSortBy)return a({},d,{sortBy:d.sortBy.filter(function(J){return J.id!==v.columnId})});if(v.type===l.setSortBy)return a({},d,{sortBy:v.sortBy});if(v.type===l.toggleSortBy){var _,O=v.columnId,P=v.desc,L=v.multi,B=k.allColumns,V=k.disableMultiSort,X=k.disableSortRemove,K=k.disableMultiRemove,Y=k.maxMultiSortColCount,H=Y===void 0?Number.MAX_SAFE_INTEGER:Y,Q=d.sortBy,ie=B.find(function(J){return J.id===O}).sortDescFirst,se=Q.find(function(J){return J.id===O}),me=Q.findIndex(function(J){return J.id===O}),Me=P!=null,pe=[];return(_=!V&&L?se?"toggle":"add":me!==Q.length-1||Q.length!==1?"replace":se?"toggle":"replace")!="toggle"||X||Me||L&&K||!(se&&se.desc&&!ie||!se.desc&&ie)||(_="remove"),_==="replace"?pe=[{id:O,desc:Me?P:ie}]:_==="add"?(pe=[].concat(Q,[{id:O,desc:Me?P:ie}])).splice(0,pe.length-H):_==="toggle"?pe=Q.map(function(J){return J.id===O?a({},J,{desc:Me?P:!se.desc}):J}):_==="remove"&&(pe=Q.filter(function(J){return J.id!==O})),a({},d,{sortBy:pe})}}function XC(d){var v=d.data,S=d.rows,k=d.flatRows,_=d.allColumns,O=d.orderByFn,P=O===void 0?vm:O,L=d.sortTypes,B=d.manualSortBy,V=d.defaultCanSort,X=d.disableSortBy,K=d.flatHeaders,Y=d.state.sortBy,H=d.dispatch,Q=d.plugins,ie=d.getHooks,se=d.autoResetSortBy,me=se===void 0||se;w(Q,["useFilters","useGlobalFilter","useGroupBy","usePivotColumns"],"useSortBy");var Me=r.useCallback(function(we){H({type:l.setSortBy,sortBy:we})},[H]),pe=r.useCallback(function(we,Ce,Ve){H({type:l.toggleSortBy,columnId:we,desc:Ce,multi:Ve})},[H]),J=b(d);K.forEach(function(we){var Ce=we.accessor,Ve=we.canSort,Te=we.disableSortBy,Be=we.id,Ae=Ce?te(Te!==!0&&void 0,X!==!0&&void 0,!0):te(V,Ve,!1);we.canSort=Ae,we.canSort&&(we.toggleSortBy=function(ve,Fe){return pe(we.id,ve,Fe)},we.clearSortBy=function(){H({type:l.clearSortBy,columnId:we.id})}),we.getSortByToggleProps=C(ie().getSortByToggleProps,{instance:J(),column:we});var Qe=Y.find(function(ve){return ve.id===Be});we.isSorted=!!Qe,we.sortedIndex=Y.findIndex(function(ve){return ve.id===Be}),we.isSortedDesc=we.isSorted?Qe.desc:void 0});var Re=r.useMemo(function(){if(B||!Y.length)return[S,k];var we=[],Ce=Y.filter(function(Ve){return _.find(function(Te){return Te.id===Ve.id})});return[function Ve(Te){var Be=P(Te,Ce.map(function(Ae){var Qe=_.find(function(mt){return mt.id===Ae.id});if(!Qe)throw new Error("React-Table: Could not find a column with id: "+Ae.id+" while sorting");var ve=Qe.sortType,Fe=Oe(ve)||(L||{})[ve]||ZC[ve];if(!Fe)throw new Error("React-Table: Could not find a valid sortType of '"+ve+"' for column '"+Ae.id+"'.");return function(mt,Kt){return Fe(mt,Kt,Ae.id,Ae.desc)}}),Ce.map(function(Ae){var Qe=_.find(function(ve){return ve.id===Ae.id});return Qe&&Qe.sortInverted?Ae.desc:!Ae.desc}));return Be.forEach(function(Ae){we.push(Ae),Ae.subRows&&Ae.subRows.length!==0&&(Ae.subRows=Ve(Ae.subRows))}),Be}(S),we]},[B,Y,S,k,_,P,L]),ue=Re[0],Ee=Re[1],Ie=b(me);R(function(){Ie()&&H({type:l.resetSortBy})},[B?null:v]),Object.assign(d,{preSortedRows:S,preSortedFlatRows:k,sortedRows:ue,sortedFlatRows:Ee,rows:ue,flatRows:Ee,setSortBy:Me,toggleSortBy:pe})}function vm(d,v,S){return[].concat(d).sort(function(k,_){for(var O=0;Od.pageIndex?L=_===-1?O.length>=d.pageSize:P<_:P-1),L?a({},d,{pageIndex:P}):d}if(v.type===l.setPageSize){var B=v.pageSize,V=d.pageSize*d.pageIndex;return a({},d,{pageIndex:Math.floor(V/B),pageSize:B})}}function eb(d){var v=d.rows,S=d.autoResetPage,k=S===void 0||S,_=d.manualExpandedKey,O=_===void 0?"expanded":_,P=d.plugins,L=d.pageCount,B=d.paginateExpandedRows,V=B===void 0||B,X=d.expandSubRows,K=X===void 0||X,Y=d.state,H=Y.pageSize,Q=Y.pageIndex,ie=Y.expanded,se=Y.globalFilter,me=Y.filters,Me=Y.groupBy,pe=Y.sortBy,J=d.dispatch,Re=d.data,ue=d.manualPagination;w(P,["useGlobalFilter","useFilters","useGroupBy","useSortBy","useExpanded"],"usePagination");var Ee=b(k);R(function(){Ee()&&J({type:l.resetPage})},[J,ue?null:Re,se,me,Me,pe]);var Ie=ue?L:Math.ceil(v.length/H),we=r.useMemo(function(){return Ie>0?[].concat(new Array(Ie)).fill(null).map(function(Fe,mt){return mt}):[]},[Ie]),Ce=r.useMemo(function(){var Fe;if(ue)Fe=v;else{var mt=H*Q,Kt=mt+H;Fe=v.slice(mt,Kt)}return V?Fe:xe(Fe,{manualExpandedKey:O,expanded:ie,expandSubRows:K})},[K,ie,O,ue,Q,H,V,v]),Ve=Q>0,Te=Ie===-1?Ce.length>=H:Q-1&&O.push(_.splice(B,1)[0])};_.length&&k.length;)P();return[].concat(O,_)}function bb(d){var v=d.dispatch;d.setColumnOrder=r.useCallback(function(S){return v({type:l.setColumnOrder,columnOrder:S})},[v])}Em.pluginName="useColumnOrder",p.canResize=!0,l.columnStartResizing="columnStartResizing",l.columnResizing="columnResizing",l.columnDoneResizing="columnDoneResizing",l.resetResize="resetResize";var km=function(d){d.getResizerProps=[Eb],d.getHeaderProps.push({style:{position:"relative"}}),d.stateReducers.push(kb),d.useInstance.push(Nb),d.useInstanceBeforeDimensions.push(Tb)},Eb=function(d,v){var S=v.instance,k=v.header,_=S.dispatch,O=function(P,L){var B=!1;if(P.type==="touchstart"){if(P.touches&&P.touches.length>1)return;B=!0}var V,X,K=function(pe){var J=[];return function Re(ue){ue.columns&&ue.columns.length&&ue.columns.map(Re),J.push(ue)}(pe),J}(L).map(function(pe){return[pe.id,pe.totalWidth]}),Y=B?Math.round(P.touches[0].clientX):P.clientX,H=function(){window.cancelAnimationFrame(V),V=null,_({type:l.columnDoneResizing})},Q=function(){window.cancelAnimationFrame(V),V=null,_({type:l.columnResizing,clientX:X})},ie=function(pe){X=pe,V||(V=window.requestAnimationFrame(Q))},se={mouse:{moveEvent:"mousemove",moveHandler:function(pe){return ie(pe.clientX)},upEvent:"mouseup",upHandler:function(pe){document.removeEventListener("mousemove",se.mouse.moveHandler),document.removeEventListener("mouseup",se.mouse.upHandler),H()}},touch:{moveEvent:"touchmove",moveHandler:function(pe){return pe.cancelable&&(pe.preventDefault(),pe.stopPropagation()),ie(pe.touches[0].clientX),!1},upEvent:"touchend",upHandler:function(pe){document.removeEventListener(se.touch.moveEvent,se.touch.moveHandler),document.removeEventListener(se.touch.upEvent,se.touch.moveHandler),H()}}},me=B?se.touch:se.mouse,Me=!!function(){if(typeof ke=="boolean")return ke;var pe=!1;try{var J={get passive(){return pe=!0,!1}};window.addEventListener("test",null,J),window.removeEventListener("test",null,J)}catch{pe=!1}return ke=pe}()&&{passive:!1};document.addEventListener(me.moveEvent,me.moveHandler,Me),document.addEventListener(me.upEvent,me.upHandler,Me),_({type:l.columnStartResizing,columnId:L.id,columnWidth:L.totalWidth,headerIdWidths:K,clientX:Y})};return[d,{onMouseDown:function(P){return P.persist()||O(P,k)},onTouchStart:function(P){return P.persist()||O(P,k)},style:{cursor:"col-resize"},draggable:!1,role:"separator"}]};function kb(d,v){if(v.type===l.init)return a({columnResizing:{columnWidths:{}}},d);if(v.type===l.resetResize)return a({},d,{columnResizing:{columnWidths:{}}});if(v.type===l.columnStartResizing){var S=v.clientX,k=v.columnId,_=v.columnWidth,O=v.headerIdWidths;return a({},d,{columnResizing:a({},d.columnResizing,{startX:S,headerIdWidths:O,columnWidth:_,isResizingColumn:k})})}if(v.type===l.columnResizing){var P=v.clientX,L=d.columnResizing,B=L.startX,V=L.columnWidth,X=L.headerIdWidths,K=(P-B)/V,Y={};return(X===void 0?[]:X).forEach(function(H){var Q=H[0],ie=H[1];Y[Q]=Math.max(ie+ie*K,0)}),a({},d,{columnResizing:a({},d.columnResizing,{columnWidths:a({},d.columnResizing.columnWidths,{},Y)})})}return v.type===l.columnDoneResizing?a({},d,{columnResizing:a({},d.columnResizing,{startX:null,isResizingColumn:null})}):void 0}km.pluginName="useResizeColumns";var Tb=function(d){var v=d.flatHeaders,S=d.disableResizing,k=d.getHooks,_=d.state.columnResizing,O=b(d);v.forEach(function(P){var L=te(P.disableResizing!==!0&&void 0,S!==!0&&void 0,!0);P.canResize=L,P.width=_.columnWidths[P.id]||P.originalWidth||P.width,P.isResizing=_.isResizingColumn===P.id,L&&(P.getResizerProps=C(k().getResizerProps,{instance:O(),header:P}))})};function Nb(d){var v=d.plugins,S=d.dispatch,k=d.autoResetResize,_=k===void 0||k,O=d.columns;w(v,["useAbsoluteLayout"],"useResizeColumns");var P=b(_);R(function(){P()&&S({type:l.resetResize})},[O]);var L=r.useCallback(function(){return S({type:l.resetResize})},[S]);Object.assign(d,{resetResizing:L})}var uc={position:"absolute",top:0},Tm=function(d){d.getTableBodyProps.push($s),d.getRowProps.push($s),d.getHeaderGroupProps.push($s),d.getFooterGroupProps.push($s),d.getHeaderProps.push(function(v,S){var k=S.column;return[v,{style:a({},uc,{left:k.totalLeft+"px",width:k.totalWidth+"px"})}]}),d.getCellProps.push(function(v,S){var k=S.cell;return[v,{style:a({},uc,{left:k.column.totalLeft+"px",width:k.column.totalWidth+"px"})}]}),d.getFooterProps.push(function(v,S){var k=S.column;return[v,{style:a({},uc,{left:k.totalLeft+"px",width:k.totalWidth+"px"})}]})};Tm.pluginName="useAbsoluteLayout";var $s=function(d,v){return[d,{style:{position:"relative",width:v.instance.totalColumnsWidth+"px"}}]},cc={display:"inline-block",boxSizing:"border-box"},dc=function(d,v){return[d,{style:{display:"flex",width:v.instance.totalColumnsWidth+"px"}}]},Nm=function(d){d.getRowProps.push(dc),d.getHeaderGroupProps.push(dc),d.getFooterGroupProps.push(dc),d.getHeaderProps.push(function(v,S){var k=S.column;return[v,{style:a({},cc,{width:k.totalWidth+"px"})}]}),d.getCellProps.push(function(v,S){var k=S.cell;return[v,{style:a({},cc,{width:k.column.totalWidth+"px"})}]}),d.getFooterProps.push(function(v,S){var k=S.column;return[v,{style:a({},cc,{width:k.totalWidth+"px"})}]})};function Om(d){d.getTableProps.push(Ob),d.getRowProps.push(fc),d.getHeaderGroupProps.push(fc),d.getFooterGroupProps.push(fc),d.getHeaderProps.push(Rb),d.getCellProps.push(_b),d.getFooterProps.push(Pb)}Nm.pluginName="useBlockLayout",Om.pluginName="useFlexLayout";var Ob=function(d,v){return[d,{style:{minWidth:v.instance.totalColumnsMinWidth+"px"}}]},fc=function(d,v){return[d,{style:{display:"flex",flex:"1 0 auto",minWidth:v.instance.totalColumnsMinWidth+"px"}}]},Rb=function(d,v){var S=v.column;return[d,{style:{boxSizing:"border-box",flex:S.totalFlexWidth?S.totalFlexWidth+" 0 auto":void 0,minWidth:S.totalMinWidth+"px",width:S.totalWidth+"px"}}]},_b=function(d,v){var S=v.cell;return[d,{style:{boxSizing:"border-box",flex:S.column.totalFlexWidth+" 0 auto",minWidth:S.column.totalMinWidth+"px",width:S.column.totalWidth+"px"}}]},Pb=function(d,v){var S=v.column;return[d,{style:{boxSizing:"border-box",flex:S.totalFlexWidth?S.totalFlexWidth+" 0 auto":void 0,minWidth:S.totalMinWidth+"px",width:S.totalWidth+"px"}}]};function Rm(d){d.stateReducers.push(Fb),d.getTableProps.push(Mb),d.getHeaderProps.push($b),d.getRowProps.push(Ib)}l.columnStartResizing="columnStartResizing",l.columnResizing="columnResizing",l.columnDoneResizing="columnDoneResizing",l.resetResize="resetResize",Rm.pluginName="useGridLayout";var Mb=function(d,v){var S=v.instance;return[d,{style:{display:"grid",gridTemplateColumns:S.visibleColumns.map(function(k){var _;return S.state.gridLayout.columnWidths[k.id]?S.state.gridLayout.columnWidths[k.id]+"px":(_=S.state.columnResizing)!=null&&_.isResizingColumn?S.state.gridLayout.startWidths[k.id]+"px":typeof k.width=="number"?k.width+"px":k.width}).join(" ")}}]},$b=function(d,v){var S=v.column;return[d,{id:"header-cell-"+S.id,style:{position:"sticky",gridColumn:"span "+S.totalVisibleHeaderCount}}]},Ib=function(d,v){var S=v.row;return S.isExpanded?[d,{style:{gridColumn:"1 / "+(S.cells.length+1)}}]:[d,{}]};function Fb(d,v,S,k){if(v.type===l.init)return a({gridLayout:{columnWidths:{}}},d);if(v.type===l.resetResize)return a({},d,{gridLayout:{columnWidths:{}}});if(v.type===l.columnStartResizing){var _=v.columnId,O=v.headerIdWidths,P=pc(_);if(P!==void 0){var L=k.visibleColumns.reduce(function(J,Re){var ue;return a({},J,((ue={})[Re.id]=pc(Re.id),ue))},{}),B=k.visibleColumns.reduce(function(J,Re){var ue;return a({},J,((ue={})[Re.id]=Re.minWidth,ue))},{}),V=k.visibleColumns.reduce(function(J,Re){var ue;return a({},J,((ue={})[Re.id]=Re.maxWidth,ue))},{}),X=O.map(function(J){var Re=J[0];return[Re,pc(Re)]});return a({},d,{gridLayout:a({},d.gridLayout,{startWidths:L,minWidths:B,maxWidths:V,headerIdGridWidths:X,columnWidth:P})})}return d}if(v.type===l.columnResizing){var K=v.clientX,Y=d.columnResizing.startX,H=d.gridLayout,Q=H.columnWidth,ie=H.minWidths,se=H.maxWidths,me=H.headerIdGridWidths,Me=(K-Y)/Q,pe={};return(me===void 0?[]:me).forEach(function(J){var Re=J[0],ue=J[1];pe[Re]=Math.min(Math.max(ie[Re],ue+ue*Me),se[Re])}),a({},d,{gridLayout:a({},d.gridLayout,{columnWidths:a({},d.gridLayout.columnWidths,{},pe)})})}return v.type===l.columnDoneResizing?a({},d,{gridLayout:a({},d.gridLayout,{startWidths:{},minWidths:{},maxWidths:{}})}):void 0}function pc(d){var v,S=(v=document.getElementById("header-cell-"+d))==null?void 0:v.offsetWidth;if(S!==void 0)return S}n._UNSTABLE_usePivotColumns=gm,n.actions=l,n.defaultColumn=p,n.defaultGroupByFn=fm,n.defaultOrderByFn=vm,n.defaultRenderer=f,n.emptyRenderer=h,n.ensurePluginOrder=w,n.flexRender=F,n.functionalUpdate=E,n.loopHooks=N,n.makePropGetter=C,n.makeRenderer=M,n.reduceHooks=x,n.safeUseLayoutEffect=T,n.useAbsoluteLayout=Tm,n.useAsyncDebounce=function(d,v){v===void 0&&(v=0);var S=r.useRef({}),k=b(d),_=b(v);return r.useCallback(function(){var O=o(regeneratorRuntime.mark(function P(){var L,B,V,X=arguments;return regeneratorRuntime.wrap(function(K){for(;;)switch(K.prev=K.next){case 0:for(L=X.length,B=new Array(L),V=0;V1?v-1:0),k=1;k{const{event:o,locale:a}=ye(),[s,u]=m.useState(r),l=async f=>{f.preventDefault(),await Ne("update-vehicle-price",{vehicle:n,dealership:o.dealershipId,newPrice:s}),i(s),t()};return g(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:g(z.Title,{as:"h5",children:[a.edit," ",a.price]})}),c(z.Body,{children:g(j,{onSubmit:l,children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:a.price}),c(j.Control,{type:"number",value:s,onChange:f=>u(f.target.value?parseFloat(f.target.value):""),min:0,required:!0})]}),c(ee,{type:"submit",children:a.save})]})})]})},W2=({show:e,onHide:t,spawnCode:n,price:r})=>{const{event:i,config:o,locale:a}=ye(),[s,u]=m.useState(1),l=m.useMemo(()=>r*(s||1),[r,s]),f=async h=>{h.preventDefault(),u(1),t();try{await Ne("order-vehicle",{dealership:i.dealershipId,spawnCode:n,quantity:s})}catch{}};return g(z,{show:e,size:"sm",onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:a.orderVehicle})}),c(z.Body,{children:g(j,{onSubmit:f,children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:a.quantity}),g(Gt,{children:[c(j.Control,{type:"number",value:s,onChange:h=>u(h.target.value?parseInt(h.target.value):""),min:1,required:!0}),c(ee,{variant:"secondary",onClick:()=>u(h=>Math.max(1,(h||2)-1)),children:"-"}),c(ee,{variant:"secondary",onClick:()=>u(h=>(h||0)+1),children:"+"})]})]}),g(j.Group,{className:"mb-4",children:[c(j.Label,{children:a.totalCost}),c("h4",{children:Le(l,o)})]}),c(ee,{type:"submit",disabled:i.balance{const{config:n,locale:r,event:i}=ye(),{brand:o,model:a,spawn_code:s,category:u,stock:l,price:f,list_price:h}=e,[p,y]=m.useState(!1),[C,x]=m.useState(!1),N=(f||1)*(n.DealerPurchasePrice||1);return g("tr",{children:[g("td",{className:"admin-vehicle-row-name",children:[o," ",a]}),c("td",{children:u}),i.shopType=="owned"&&g("td",{children:[c("span",{children:l}),c(vn,{className:"ms-2",bg:l>0?"success":"danger",children:l>0?r.inStock:r.outOfStock})]}),c("td",{children:Le(N,n)}),g("td",{children:[c("span",{children:Le(h||0,n)}),i.employeeRole!=="supervisor"&&!(!n.ManagerCanChangePriceOfVehicles&&i.employeeRole==="manager")&&g("span",{children:[c(ee,{size:"sm",variant:"link",className:"me-2",onClick:()=>y(!0),children:c("i",{className:"bi-pencil"})}),c(H2,{show:p,onHide:()=>y(!1),vehicle:s,price:h||0,onUpdatePrice:w=>t({...e,list_price:w})})]})]}),i.shopType=="owned"&&g("td",{className:"text-end",children:[g(ee,{size:"sm",variant:"primary",onClick:()=>x(!0),children:[c("i",{className:"bi-cart me-1"}),r.placeOrder]}),c(W2,{show:C,onHide:()=>x(!1),spawnCode:s,price:N})]})]})},G2=({data:e,columns:t,setVehicles:n})=>{const{locale:r}=ye(),{getTableProps:i,getTableBodyProps:o,headerGroups:a,prepareRow:s,page:u,canPreviousPage:l,canNextPage:f,pageOptions:h,pageCount:p,gotoPage:y,nextPage:C,previousPage:x,setPageSize:N,state:{pageIndex:w,pageSize:E}}=cr.useTable({columns:t,data:e,autoResetPage:!1,autoResetFilters:!1},cr.usePagination);return g("div",{children:[g(ea,{hover:!0,className:"bootstrap-table",...i(),children:[c("thead",{children:a.map(b=>c("tr",{...b.getHeaderGroupProps(),children:b.headers.map(T=>c("th",{...T.getHeaderProps(),children:T.render("Header")}))}))}),c("tbody",{...o(),children:u.length?u.map((b,T)=>c(U2,{vehicle:b.original,updateVehicle:R=>n(M=>M.map(F=>F.spawn_code===b.original.spawn_code?R:F))},b.original.spawn_code)):c("tr",{children:c("td",{colSpan:100,align:"center",children:r.noVehicles})})})]}),g("div",{className:"pagination d-flex justify-content-between",children:[g(ee,{variant:"primary",onClick:()=>x(),disabled:!l,children:[c("i",{className:"bi-arrow-left"})," ",r.previous]}),g("div",{className:"d-flex align-items-center",children:[g("span",{className:"me-3",children:[r.page," ",w+1," ",r.of," ",h.length]}),c(j.Select,{size:"sm",value:E,onChange:b=>{N(Number(b.target.value))},style:{width:110},children:[10,20,30,40,50].map(b=>g("option",{value:b,children:[r.show," ",b]},b))})]}),g(ee,{variant:"primary",onClick:()=>C(),disabled:!f,children:[r.next," ",c("i",{className:"bi-arrow-right"})]})]})]})},q2=({currentTab:e})=>{const{event:t,config:n,locale:r}=ye(),i={[r.sortByNewest]:(R,M)=>M.id-R.id,[r.sortByName]:(R,M)=>`${R.brand} ${R.model}`.localeCompare(`${M.brand} ${M.model}`),[r.sortByCheapest]:(R,M)=>R.price-M.price,[r.sortByMostExpensive]:(R,M)=>M.price-R.price},[o,a]=m.useState(""),[s,u]=m.useState(Object.keys(i)[0]),[l,f]=m.useState("all"),[h,p]=m.useState([]),[y,C]=m.useState([]),[x,N]=m.useState(!0),w={all:"All Categories",...n.Categories||{}};m.useEffect(()=>{t.vehicles&&p(t.vehicles||[])},[t.vehicles]),m.useEffect(()=>{e===r.vehicles&&E()},[e]);const E=async()=>{try{const R=await Ne("get-dealership-vehicles",{dealershipId:t.dealershipId});p(R)}catch{}N(!1)};m.useEffect(()=>{C(h.filter(({brand:R,model:M})=>{const F=o.toLocaleLowerCase().split(" ").filter(A=>A).map(A=>A.trim());return F.filter(A=>`${R} ${M}`.toLocaleLowerCase().includes(A)).length===F.length}).filter(R=>l==="all"?!0:R.category===l).sort(i[s]))},[h,o,l,s]);const b=m.useMemo(()=>[{Header:r.vehicle,accessor:"vehicle"},{Header:r.category,accessor:"category"},t.shopType=="owned"&&{Header:r.quantity,accessor:"qty"},{Header:r.purchaseCost,accessor:"pcost"},{Header:r.salePrice,accessor:"sprice"},t.shopType=="owned"&&{Header:"",accessor:"x"}],[]).filter(Boolean),T=y;return x?c(na,{}):g("div",{children:[c(j.Group,{className:"d-flex dealership-search-and-filter mb-3",children:g(Gt,{children:[c(Gt.Text,{children:c("i",{className:"bi-search"})}),c(j.Control,{type:"search",placeholder:r.search,value:o,onChange:R=>a(R.target.value)}),c(uh,{variant:"dark",title:c("i",{className:"bi-filter"}),id:"input-group-dropdown-2",align:"end",menuVariant:"dark",children:Object.keys(i).map((R,M)=>c(si.Item,{onClick:()=>u(R),active:s===R,children:R},M))}),c(j.Select,{style:{maxWidth:220},value:l,onChange:R=>f(R.target.value),children:Object.keys(w).map(R=>c("option",{value:R,children:w[R]},R))})]})}),c("div",{className:"pt-0",children:c(G2,{columns:b,data:T,setVehicles:p})})]})},K2=m.forwardRef(({vehicles:e,style:t,className:n,"aria-labelledby":r,selectedVehicle:i,onSelectVehicle:o},a)=>{const{locale:s}=ye(),[u,l]=m.useState(""),[f,h]=m.useState([]);return m.useEffect(()=>{h(e.filter(({brand:p,model:y})=>{const C=u.toLocaleLowerCase().split(" ").filter(x=>x).map(x=>x.trim());return C.filter(x=>`${p||""} ${y||""}`.toLocaleLowerCase().includes(x)).length===C.length}).slice(0,100))},[e,u]),g("div",{ref:a,style:t,className:n,"aria-labelledby":r,children:[c("div",{className:"vehicle-select-search",children:c(j.Control,{autoFocus:!0,placeholder:s.search,onChange:p=>l(p.target.value),value:u})}),c("ul",{className:"list-unstyled",children:f.map(p=>g(si.Item,{eventKey:p.spawn_code,className:"w-full overflow-hidden",onClick:()=>o(p),active:p.spawn_code===(i&&i.spawn_code),children:[p.brand," ",p.model]},p.spawn_code))})]})}),Z2=({vehicles:e,vehicle:t,onChange:n})=>{const{locale:r}=ye();return c("div",{children:g(si,{className:"vehicle-selector-dropdown",children:[c(si.Toggle,{variant:"outline-secondary",className:"d-flex align-items-center overflow-hidden text-muted",style:{width:"100%"},children:t?`${t.brand||""} ${t.model||""}`:r.selectVehicle}),c(si.Menu,{align:"start",as:K2,vehicles:e,selectedVehicle:t,onSelectVehicle:n})]})})},zx=({show:e,onHide:t,currentModel:n,currentColor:r,onSubmit:i})=>{const{event:o,locale:a,config:s}=ye(),[u,l]=m.useState([]),[f,h]=m.useState(!1),[p,y]=m.useState(r||1);m.useEffect(()=>{C()},[]);const C=async()=>{try{const N=await Ne("get-dealership-vehicles",{dealershipId:o.dealershipId});l(N),h(N.find(({spawn_code:w})=>w===n)||!1)}catch{}},x=async()=>{if(!f||!p)return!1;i(f,p),n||h(!1),t()};return g(z,{show:e,onHide:()=>t(),centered:!0,style:{zIndex:9999},children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:a.displayVehicle})}),g(z.Body,{children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:a.vehicle}),c(Z2,{vehicles:u,vehicle:f,onChange:h})]}),g(j.Group,{children:[c(j.Label,{children:a.colour}),c(j.Select,{value:p,onChange:N=>y(parseInt(N.target.value||"1")),children:(s.VehicleColourOptions||[]).map(({label:N},w)=>c("option",{value:w+1,children:N}))})]})]}),c(z.Footer,{children:c(ee,{variant:"primary",type:"submit",disabled:!f||!p,onClick:x,children:a.placeVehicle})})]})},Y2=({displayVehicle:e,setDisplayVehicles:t})=>{const{event:n,locale:r,config:i}=ye(),[o,a]=m.useState(!1),s=async(l,f)=>{try{await Ne("edit-display-vehicle",{id:e.id,dealershipId:n.dealershipId,spawnCode:l.spawn_code,color:f}),t(h=>h.map(p=>p.id===e.id?{...e,brand:l.brand,model:l.model,color:f}:p))}catch{}},u=async()=>{try{await Ne("delete-display-vehicle",{id:e.id,dealershipId:n.dealershipId}),t(l=>l.filter(({id:f})=>f!==e.id))}catch{}};return g(Ue,{border:"secondary",children:[g(Ue.Header,{className:"p-3",children:[e.brand," ",e.model]}),g(Ue.Body,{className:"p-2 d-flex justify-content-between",children:[g(ee,{size:"sm",variant:"dark",onClick:()=>a(!0),children:[c("i",{className:"bi-arrow-left-right me-1"}),r.switchVehicle]}),g(ee,{size:"sm",variant:"outline-danger",onClick:u,children:[c("i",{className:"bi-x me-1"}),r.remove]}),c(zx,{show:o,onHide:()=>a(!1),currentModel:e.vehicle,currentColor:e.color,onSubmit:s})]})]})},Q2=({currentTab:e})=>{const{event:t,onCloseModal:n,locale:r}=ye(),[i,o]=m.useState([]),[a,s]=m.useState(!1),[u,l]=m.useState(!0);m.useEffect(()=>{t.displayVehicles&&o(t.displayVehicles||[])},[t.vehidisplayVehiclescles]),m.useEffect(()=>{e===r.displayVehicles&&f()},[e]);const f=async()=>{try{const y=await Ne("get-dealership-display-vehicles",{dealershipId:t.dealershipId});o(y)}catch{}l(!1)},h=async()=>{await Ne("reset-display-vehicles",{dealershipId:t.dealershipId})},p=async(y,C)=>{await n();try{await Ne("create-display-vehicle",{dealershipId:t.dealershipId,spawnCode:y.spawn_code,color:C})}catch{}};return u?c(na,{}):g("div",{children:[c(zx,{show:a,onHide:()=>s(!1),onSubmit:p}),i.length?g("div",{children:[g("div",{className:"d-flex justify-content-end",children:[g(ee,{variant:"outline-secondary",onClick:()=>h(),className:"me-2",children:[c("i",{className:"bi-arrow-clockwise me-1"}),r.restoreDisplayVehicles]}),g(ee,{variant:"primary",onClick:()=>s(!0),children:[c("i",{className:"bi-plus me-1"}),r.add," ",r.vehicle]})]}),c(ur,{className:"pt-3",children:i.map(y=>c(Xe,{sm:4,className:"mb-3",children:c(Y2,{displayVehicle:y,setDisplayVehicles:o})}))})]}):g("div",{className:"text-center pt-5 pb-5",children:[c("p",{children:r.noDisplayVehicles}),g(ee,{variant:"primary",onClick:()=>s(!0),children:[c("i",{className:"bi-plus me-1"}),r.add," ",r.vehicle]})]})]})},X2=({show:e,onHide:t,onConfirm:n})=>{const{locale:r}=ye();return g(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:r.cancelOrder}),c(z.Body,{children:r.deleteConfirmation}),g(z.Footer,{children:[c(ee,{variant:"primary",onClick:()=>{n(),t()},children:r.yes}),c(ee,{variant:"secondary",onClick:()=>t(),children:r.no})]})]})},J2=({order:e,deleteOrder:t})=>{var w;const{config:n,locale:r,event:i}=ye();let{id:o,order_created:a,brand:s,model:u,quantity:l,time_remaining:f,cost:h}=e;const[p,y]=m.useState(!1),[C,x]=m.useState("");m.useEffect(()=>{const E=()=>{f-=1,f<0?x(r.delivered):Math.round(f/60)===0?x(r.lessThanAMin):x(`${Math.round(f/60)} ${r.mins||"min(s)"}`)};let b;return E(),b=setInterval(()=>E(),5e3),()=>clearInterval(b)},[f]);const N=async()=>{await Ne("cancel-vehicle-order",{orderId:o}),t()};return g("tr",{children:[c("td",{children:(w=de.fromMillis(a))==null?void 0:w.toLocaleString()}),g("td",{className:"admin-vehicle-row-name",children:[s," ",u]}),c("td",{children:l}),c("td",{children:g(vn,{bg:C===r.delivered?"success":"primary",children:[C===r.delivered?c("i",{className:"bi-check-circle me-1"}):c("i",{className:"bi-clock me-1"}),C]})}),c("td",{children:Le(h,n)}),g("td",{className:"text-end",children:[g(ee,{size:"sm",variant:"danger",onClick:()=>y(!0),disabled:C===r.delivered,children:[c("i",{className:"bi-x me-1"}),r.cancelOrder]}),c(X2,{show:p,onHide:()=>y(!1),onConfirm:()=>N()})]})]})},eM=({data:e,columns:t,onDeleteOrder:n})=>{const{locale:r}=ye(),{getTableProps:i,getTableBodyProps:o,headerGroups:a,prepareRow:s,page:u,canPreviousPage:l,canNextPage:f,pageOptions:h,pageCount:p,gotoPage:y,nextPage:C,previousPage:x,setPageSize:N,state:{pageIndex:w,pageSize:E}}=cr.useTable({columns:t,data:e,autoResetPage:!1,autoResetFilters:!1},cr.usePagination);return g("div",{children:[g(ea,{hover:!0,className:"bootstrap-table",...i(),children:[c("thead",{children:a.map(b=>c("tr",{...b.getHeaderGroupProps(),children:b.headers.map(T=>c("th",{...T.getHeaderProps(),children:T.render("Header")}))}))}),c("tbody",{...o(),children:u.length?u.map((b,T)=>c(J2,{order:b.original,deleteOrder:()=>n(b.original.id)},b.original.spawn_code)):c("tr",{children:c("td",{colSpan:100,align:"center",children:r.noOrders})})})]}),g("div",{className:"pagination d-flex justify-content-between",children:[g(ee,{variant:"primary",onClick:()=>x(),disabled:!l,children:[c("i",{className:"bi-arrow-left"})," ",r.previous]}),g("div",{className:"d-flex align-items-center",children:[g("span",{className:"me-3",children:[r.page," ",w+1," ",r.of," ",h.length]}),c(j.Select,{size:"sm",value:E,onChange:b=>{N(Number(b.target.value))},style:{width:110},children:[10,20,30,40,50].map(b=>g("option",{value:b,children:[r.show," ",b]},b))})]}),g(ee,{variant:"primary",onClick:()=>C(),disabled:!f,children:[r.next," ",c("i",{className:"bi-arrow-right"})]})]})]})},tM=({currentTab:e})=>{const{event:t,locale:n}=ye(),[r,i]=m.useState([]),[o,a]=m.useState(!0);m.useEffect(()=>{t.orders&&i(t.orders||[])},[t.orders]),m.useEffect(()=>{e===n.orders&&s()},[e]);const s=async()=>{try{const f=await Ne("get-dealership-orders",{dealershipId:t.dealershipId});i(f)}catch{}a(!1)},u=f=>{i(h=>h.filter(p=>p.id!==f))},l=m.useMemo(()=>[{Header:n.created,accessor:"created_at"},{Header:n.vehicle,accessor:"vehicle"},{Header:n.quantity,accessor:"qty"},{Header:n.delivery,accessor:"delivery"},{Header:n.totalCost,accessor:"total_cost"},{Header:"",accessor:"actions"}],[]);return c("div",{children:o?c(na,{}):c(eM,{data:r,columns:l,onDeleteOrder:u})})},nM=({sale:e})=>{var f;const{config:t}=ye(),{brand:n,model:r,purchase_type:i,paid:o,owed:a,created_at:s,player_name:u,seller_name:l}=e;return g("tr",{children:[c("td",{children:(f=de.fromMillis(s))==null?void 0:f.toLocaleString()}),c("td",{children:u}),c("td",{children:l||"-"}),g("td",{className:"admin-vehicle-row-name",children:[n," ",r]}),c("td",{children:i}),c("td",{children:Le(o,t)}),c("td",{children:Le(a,t)})]})},rM=({data:e,columns:t,getSales:n,pageCount:r})=>{const{locale:i}=ye(),{getTableProps:o,getTableBodyProps:a,headerGroups:s,prepareRow:u,page:l,canPreviousPage:f,canNextPage:h,pageOptions:p,pageCount:y,gotoPage:C,nextPage:x,previousPage:N,setPageSize:w,state:{pageIndex:E,pageSize:b}}=cr.useTable({columns:t,data:e,initialState:{pageIndex:0},pageCount:r,autoResetPage:!1,autoResetFilters:!1,manualPagination:!0},cr.usePagination);return m.useEffect(()=>{n(E,b)},[n,E,b]),g("div",{children:[g(ea,{hover:!0,className:"bootstrap-table",...o(),children:[c("thead",{children:s.map(T=>c("tr",{...T.getHeaderGroupProps(),children:T.headers.map(R=>c("th",{...R.getHeaderProps(),children:R.render("Header")}))}))}),c("tbody",{...a(),children:l.length?l.map((T,R)=>c(nM,{sale:T.original},T.original.spawn_code)):c("tr",{children:c("td",{colSpan:100,align:"center",children:i.noSales})})})]}),g("div",{className:"pagination d-flex justify-content-between",children:[g(ee,{variant:"primary",onClick:N,disabled:E<=0,children:[c("i",{className:"bi-arrow-left"})," ",i.previous]}),g("div",{className:"d-flex align-items-center",children:[g("span",{className:"me-3",children:[i.page," ",E+1," ",i.of," ",y]}),c(j.Select,{size:"sm",value:b,onChange:T=>{w(Number(T.target.value))},style:{width:110},children:[10,20,30,40,50].map(T=>g("option",{value:T,children:[i.show," ",T]},T))})]}),g(ee,{variant:"primary",onClick:x,disabled:!h,children:[i.next," ",c("i",{className:"bi-arrow-right"})]})]})]})},iM=({currentTab:e})=>{const{event:t,locale:n}=ye(),[r,i]=m.useState(0),[o,a]=m.useState([]),[s,u]=m.useState(!0);m.useEffect(()=>{t.sales&&a(t.sales||[]),t.salesPageCount&&i(t.salesPageCount||0)},[t.sales]),m.useEffect(()=>{e===n.sales&&l(0,10)},[e]);const l=m.useCallback(async(h,p)=>{try{const y=await Ne("get-dealership-sales",{dealershipId:t.dealershipId,pageIndex:h,pageSize:p});a(y.sales),i(y.pageCount)}catch{}u(!1)},[]),f=m.useMemo(()=>[{Header:n.created,accessor:"created_at"},{Header:n.customer,accessor:"player_name"},{Header:n.salesRep,accessor:"seller_name"},{Header:n.vehicle,accessor:"vehicle"},{Header:n.purchaseType,accessor:"purchase_type"},{Header:n.paid,accessor:"paid"},{Header:n.owed,accessor:"owed"}],[]);return c("div",{children:s?c(na,{}):c(rM,{data:o,columns:f,getSales:l,pageCount:r})})},oM=({role:e,show:t,onHide:n,onUpdateRole:r})=>{const{locale:i}=ye(),[o,a]=m.useState(e),s=[{id:"manager",label:i.managerRole},{id:"supervisor",label:i.supervisorRole},{id:"sales",label:i.salesRole}],u=l=>{l.preventDefault(),r({role:o}),n()};return g(z,{show:t,onHide:()=>n(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:"Change Role"})}),c(z.Body,{children:g(j,{onSubmit:u,children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:"Role"}),c(j.Select,{value:o,onChange:l=>a(l.target.value),children:s.map(({id:l,label:f})=>c("option",{value:l,children:f},l))})]}),c(ee,{type:"submit",children:"Update Role"})]})})]})},aM=({show:e,onHide:t,onConfirm:n})=>g(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:"Fire Employee"})}),c(z.Body,{children:"Are you sure?"}),g(z.Footer,{children:[c(ee,{variant:"primary",onClick:()=>{n(),t()},children:"Yes"}),c(ee,{variant:"secondary",onClick:()=>t(),children:"No"})]})]}),sM=({employee:e,afterFireEmployee:t,afterUpdateEmployee:n})=>{var h;const{event:r,locale:i}=ye(),[o,a]=m.useState(!1),[s,u]=m.useState(!1),l=async p=>{await Ne("update-employee-role",{identifier:e.identifier,dealershipId:r.dealershipId,newRole:p.role}),n({...e,...p})},f=async()=>{await Ne("fire-employee",{identifier:e.identifier,dealershipId:r.dealershipId}),t()};return g("tr",{children:[c("td",{children:e.name}),g("td",{children:[c("span",{children:i[`${e.role}Role`]}),!e.me&&!e.pending&&g("span",{children:[c(ee,{size:"sm",variant:"link",className:"me-2",onClick:()=>a(!0),children:c("i",{className:"bi-pencil"})}),c(oM,{role:e.role,show:o,onHide:()=>a(!1),onUpdateRole:l})]})]}),c("td",{children:e.joined&&((h=de.fromMillis(e.joined))==null?void 0:h.toLocaleString(i.NumberAndDateFormat))}),c("td",{className:"text-end",children:e.pending?c(ee,{size:"sm",disabled:!0,variant:"muted",children:i.pending}):e.me?c(ee,{size:"sm",disabled:!0,variant:"muted",children:"You"}):g("div",{children:[g(ee,{size:"sm",variant:"danger",onClick:()=>u(!0),children:[c("i",{className:"bi-person-x-fill me-1"}),"Fire"]}),c(aM,{show:s,onHide:()=>u(!1),onConfirm:()=>f()})]})})]})},lM=({show:e,onHide:t,afterHireEmployee:n,nearbyPlayers:r})=>{const{event:i,locale:o}=ye(),[a,s]=m.useState(""),[u,l]=m.useState("manager"),f=[{id:"manager",label:o.managerRole},{id:"supervisor",label:o.supervisorRole},{id:"sales",label:o.salesRole}],h=async p=>{var y;if(p.preventDefault(),!a)return!1;await Ne("request-hire-employee",{dealershipId:i.dealershipId,playerId:parseInt(a),role:u}),n({name:(y=r.find(({id:C})=>C===a))==null?void 0:y.name,role:u,me:!1,pending:!0}),t()};return g(z,{show:e,onHide:()=>t(),style:{zIndex:999999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:"Hire Employee"})}),c(z.Body,{children:g("form",{onSubmit:h,children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:"Nearby players"}),g(j.Select,{value:a,onChange:p=>s(p.target.value),children:[c("option",{value:"",disabled:!0,children:r.length?"Select player":"No players nearby"}),r.map(({id:p,name:y})=>c("option",{value:p,children:y},p))]})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:"Role"}),c(j.Select,{value:u,onChange:p=>l(p.target.value),children:f.map(({id:p,label:y})=>c("option",{value:p,children:y},p))})]}),c(ee,{type:"submit",disabled:!a,children:"Hire Employee"})]})})]})},uM=({currentTab:e})=>{const{event:t,locale:n}=ye(),[r,i]=m.useState(!0),[o,a]=m.useState(!1),[s,u]=m.useState([]),l=t.nearbyPlayers.filter(({identifier:C})=>!s.map(({identifier:x})=>x).includes(C)&&t.ownerId!==C)||[];m.useEffect(()=>{t.employees&&u(t.employees||[])},[t.employees]),m.useEffect(()=>{e===n.employees&&f()},[e]);const f=async()=>{try{const C=await Ne("get-dealership-employees",{dealershipId:t.dealershipId});u(C)}catch{}i(!1)},h=C=>{u(s.filter(x=>x.identifier!==C))},p=(C,x)=>{u(s.map(N=>N.identifier===C?x:N))};return c("div",{children:r?c(na,{}):g("div",{children:[g("div",{className:"d-flex justify-content-end mb-3",children:[g(ee,{onClick:()=>a(!0),variant:"primary",children:[c("i",{className:"bi-person-plus-fill me-1"}),c("span",{children:"Hire Employee"})]}),c(lM,{show:o,onHide:()=>a(!1),afterHireEmployee:C=>{u(x=>[...x,C])},nearbyPlayers:l})]}),g(ea,{hover:!0,className:"bootstrap-table",children:[c("thead",{children:g("tr",{children:[c("th",{children:"Employee Name"}),c("th",{children:"Role"}),c("th",{children:"Joined"}),c("th",{})]})}),c("tbody",{children:s.length?s.map(C=>c(sM,{employee:C,afterFireEmployee:()=>h(C.identifier),afterUpdateEmployee:x=>p(x.identifier,x)},C.identifier)):c("tr",{children:c("td",{colSpan:4,align:"center",children:"No employees"})})})]})]})})};var Zy=Array.isArray,Yy=Object.keys,cM=Object.prototype.hasOwnProperty,dM=typeof Element<"u";function Of(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){var n=Zy(e),r=Zy(t),i,o,a;if(n&&r){if(o=e.length,o!=t.length)return!1;for(i=o;i--!==0;)if(!Of(e[i],t[i]))return!1;return!0}if(n!=r)return!1;var s=e instanceof Date,u=t instanceof Date;if(s!=u)return!1;if(s&&u)return e.getTime()==t.getTime();var l=e instanceof RegExp,f=t instanceof RegExp;if(l!=f)return!1;if(l&&f)return e.toString()==t.toString();var h=Yy(e);if(o=h.length,o!==Yy(t).length)return!1;for(i=o;i--!==0;)if(!cM.call(t,h[i]))return!1;if(dM&&e instanceof Element&&t instanceof Element)return e===t;for(i=o;i--!==0;)if(a=h[i],!(a==="_owner"&&e.$$typeof)&&!Of(e[a],t[a]))return!1;return!0}return e!==e&&t!==t}var fM=function(t,n){try{return Of(t,n)}catch(r){if(r.message&&r.message.match(/stack|recursion/i)||r.number===-2146828260)return console.warn("Warning: react-fast-compare does not handle circular references.",r.name,r.message),!1;throw r}};const Ti=fi(fM);var pM=function(t){return hM(t)&&!mM(t)};function hM(e){return!!e&&typeof e=="object"}function mM(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||gM(e)}var vM=typeof Symbol=="function"&&Symbol.for,yM=vM?Symbol.for("react.element"):60103;function gM(e){return e.$$typeof===yM}function wM(e){return Array.isArray(e)?[]:{}}function cu(e,t){return t.clone!==!1&&t.isMergeableObject(e)?ps(wM(e),e,t):e}function SM(e,t,n){return e.concat(t).map(function(r){return cu(r,n)})}function xM(e,t,n){var r={};return n.isMergeableObject(e)&&Object.keys(e).forEach(function(i){r[i]=cu(e[i],n)}),Object.keys(t).forEach(function(i){!n.isMergeableObject(t[i])||!e[i]?r[i]=cu(t[i],n):r[i]=ps(e[i],t[i],n)}),r}function ps(e,t,n){n=n||{},n.arrayMerge=n.arrayMerge||SM,n.isMergeableObject=n.isMergeableObject||pM;var r=Array.isArray(t),i=Array.isArray(e),o=r===i;return o?r?n.arrayMerge(e,t,n):xM(e,t,n):cu(t,n)}ps.all=function(t,n){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(r,i){return ps(r,i,n)},{})};var Rf=ps,CM=typeof global=="object"&&global&&global.Object===Object&&global;const Vx=CM;var bM=typeof self=="object"&&self&&self.Object===Object&&self,EM=Vx||bM||Function("return this")();const dr=EM;var kM=dr.Symbol;const di=kM;var Hx=Object.prototype,TM=Hx.hasOwnProperty,NM=Hx.toString,ka=di?di.toStringTag:void 0;function OM(e){var t=TM.call(e,ka),n=e[ka];try{e[ka]=void 0;var r=!0}catch{}var i=NM.call(e);return r&&(t?e[ka]=n:delete e[ka]),i}var RM=Object.prototype,_M=RM.toString;function PM(e){return _M.call(e)}var MM="[object Null]",$M="[object Undefined]",Qy=di?di.toStringTag:void 0;function Xi(e){return e==null?e===void 0?$M:MM:Qy&&Qy in Object(e)?OM(e):PM(e)}function Wx(e,t){return function(n){return e(t(n))}}var IM=Wx(Object.getPrototypeOf,Object);const _h=IM;function Ji(e){return e!=null&&typeof e=="object"}var FM="[object Object]",DM=Function.prototype,AM=Object.prototype,Ux=DM.toString,LM=AM.hasOwnProperty,jM=Ux.call(Object);function Xy(e){if(!Ji(e)||Xi(e)!=FM)return!1;var t=_h(e);if(t===null)return!0;var n=LM.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&Ux.call(n)==jM}function BM(){this.__data__=[],this.size=0}function Gx(e,t){return e===t||e!==e&&t!==t}function zu(e,t){for(var n=e.length;n--;)if(Gx(e[n][0],t))return n;return-1}var zM=Array.prototype,VM=zM.splice;function HM(e){var t=this.__data__,n=zu(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():VM.call(t,n,1),--this.size,!0}function WM(e){var t=this.__data__,n=zu(t,e);return n<0?void 0:t[n][1]}function UM(e){return zu(this.__data__,e)>-1}function GM(e,t){var n=this.__data__,r=zu(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Fr(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=J$}var eI="[object Arguments]",tI="[object Array]",nI="[object Boolean]",rI="[object Date]",iI="[object Error]",oI="[object Function]",aI="[object Map]",sI="[object Number]",lI="[object Object]",uI="[object RegExp]",cI="[object Set]",dI="[object String]",fI="[object WeakMap]",pI="[object ArrayBuffer]",hI="[object DataView]",mI="[object Float32Array]",vI="[object Float64Array]",yI="[object Int8Array]",gI="[object Int16Array]",wI="[object Int32Array]",SI="[object Uint8Array]",xI="[object Uint8ClampedArray]",CI="[object Uint16Array]",bI="[object Uint32Array]",ot={};ot[mI]=ot[vI]=ot[yI]=ot[gI]=ot[wI]=ot[SI]=ot[xI]=ot[CI]=ot[bI]=!0;ot[eI]=ot[tI]=ot[pI]=ot[nI]=ot[hI]=ot[rI]=ot[iI]=ot[oI]=ot[aI]=ot[sI]=ot[lI]=ot[uI]=ot[cI]=ot[dI]=ot[fI]=!1;function EI(e){return Ji(e)&&Jx(e.length)&&!!ot[Xi(e)]}function Ph(e){return function(t){return e(t)}}var eC=typeof pn=="object"&&pn&&!pn.nodeType&&pn,qa=eC&&typeof hn=="object"&&hn&&!hn.nodeType&&hn,kI=qa&&qa.exports===eC,ld=kI&&Vx.process,TI=function(){try{var e=qa&&qa.require&&qa.require("util").types;return e||ld&&ld.binding&&ld.binding("util")}catch{}}();const Go=TI;var ig=Go&&Go.isTypedArray,NI=ig?Ph(ig):EI;const OI=NI;var RI=Object.prototype,_I=RI.hasOwnProperty;function tC(e,t){var n=Ps(e),r=!n&&W$(e),i=!n&&!r&&Xx(e),o=!n&&!r&&!i&&OI(e),a=n||r||i||o,s=a?j$(e.length,String):[],u=s.length;for(var l in e)(t||_I.call(e,l))&&!(a&&(l=="length"||i&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||X$(l,u)))&&s.push(l);return s}var PI=Object.prototype;function Mh(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||PI;return e===n}var MI=Wx(Object.keys,Object);const $I=MI;var II=Object.prototype,FI=II.hasOwnProperty;function DI(e){if(!Mh(e))return $I(e);var t=[];for(var n in Object(e))FI.call(e,n)&&n!="constructor"&&t.push(n);return t}function nC(e){return e!=null&&Jx(e.length)&&!qx(e)}function $h(e){return nC(e)?tC(e):DI(e)}function AI(e,t){return e&&Hu(t,$h(t),e)}function LI(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var jI=Object.prototype,BI=jI.hasOwnProperty;function zI(e){if(!_s(e))return LI(e);var t=Mh(e),n=[];for(var r in e)r=="constructor"&&(t||!BI.call(e,r))||n.push(r);return n}function Ih(e){return nC(e)?tC(e,!0):zI(e)}function VI(e,t){return e&&Hu(t,Ih(t),e)}var rC=typeof pn=="object"&&pn&&!pn.nodeType&&pn,og=rC&&typeof hn=="object"&&hn&&!hn.nodeType&&hn,HI=og&&og.exports===rC,ag=HI?dr.Buffer:void 0,sg=ag?ag.allocUnsafe:void 0;function WI(e,t){if(t)return e.slice();var n=e.length,r=sg?sg(n):new e.constructor(n);return e.copy(r),r}function iC(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n=0)&&(n[i]=e[i]);return n}var Tn=function(t){return typeof t=="function"},ec=function(t){return t!==null&&typeof t=="object"},GD=function(t){return String(Math.floor(Number(t)))===t},ud=function(t){return Object.prototype.toString.call(t)==="[object String]"},qD=function(t){return m.Children.count(t)===0},cd=function(t){return ec(t)&&Tn(t.then)};function Nn(e,t,n,r){r===void 0&&(r=0);for(var i=hC(t);e&&r=0?[]:{}}}return(o===0?e:i)[a[o]]===n?e:(n===void 0?delete i[a[o]]:i[a[o]]=n,o===0&&n===void 0&&delete r[a[o]],r)}function SC(e,t,n,r){n===void 0&&(n=new WeakMap),r===void 0&&(r={});for(var i=0,o=Object.keys(e);i0?ae.map(function(he){return A(he,Nn(D,he))}):[Promise.resolve("DO_NOT_DELETE_YOU_WILL_BE_FIRED")];return Promise.all(fe).then(function(he){return he.reduce(function(Pe,le,qe){return le==="DO_NOT_DELETE_YOU_WILL_BE_FIRED"||le&&(Pe=Di(Pe,ae[qe],le)),Pe},{})})},[A]),$=m.useCallback(function(D){return Promise.all([I(D),p.validationSchema?F(D):{},p.validate?M(D):{}]).then(function(ae){var fe=ae[0],he=ae[1],Pe=ae[2],le=Rf.all([fe,he,Pe],{arrayMerge:eA});return le})},[p.validate,p.validationSchema,I,M,F]),W=kn(function(D){return D===void 0&&(D=T.values),R({type:"SET_ISVALIDATING",payload:!0}),$(D).then(function(ae){return w.current&&(R({type:"SET_ISVALIDATING",payload:!1}),R({type:"SET_ERRORS",payload:ae})),ae})});m.useEffect(function(){a&&w.current===!0&&Ti(y.current,p.initialValues)&&W(y.current)},[a,W]);var Z=m.useCallback(function(D){var ae=D&&D.values?D.values:y.current,fe=D&&D.errors?D.errors:C.current?C.current:p.initialErrors||{},he=D&&D.touched?D.touched:x.current?x.current:p.initialTouched||{},Pe=D&&D.status?D.status:N.current?N.current:p.initialStatus;y.current=ae,C.current=fe,x.current=he,N.current=Pe;var le=function(){R({type:"RESET_FORM",payload:{isSubmitting:!!D&&!!D.isSubmitting,errors:fe,touched:he,status:Pe,values:ae,isValidating:!!D&&!!D.isValidating,submitCount:D&&D.submitCount&&typeof D.submitCount=="number"?D.submitCount:0}})};if(p.onReset){var qe=p.onReset(T.values,qt);cd(qe)?qe.then(le):le()}else le()},[p.initialErrors,p.initialStatus,p.initialTouched]);m.useEffect(function(){w.current===!0&&!Ti(y.current,p.initialValues)&&(l&&(y.current=p.initialValues,Z()),a&&W(y.current))},[l,p.initialValues,Z,a,W]),m.useEffect(function(){l&&w.current===!0&&!Ti(C.current,p.initialErrors)&&(C.current=p.initialErrors||Ci,R({type:"SET_ERRORS",payload:p.initialErrors||Ci}))},[l,p.initialErrors]),m.useEffect(function(){l&&w.current===!0&&!Ti(x.current,p.initialTouched)&&(x.current=p.initialTouched||dl,R({type:"SET_TOUCHED",payload:p.initialTouched||dl}))},[l,p.initialTouched]),m.useEffect(function(){l&&w.current===!0&&!Ti(N.current,p.initialStatus)&&(N.current=p.initialStatus,R({type:"SET_STATUS",payload:p.initialStatus}))},[l,p.initialStatus,p.initialTouched]);var G=kn(function(D){if(E.current[D]&&Tn(E.current[D].validate)){var ae=Nn(T.values,D),fe=E.current[D].validate(ae);return cd(fe)?(R({type:"SET_ISVALIDATING",payload:!0}),fe.then(function(he){return he}).then(function(he){R({type:"SET_FIELD_ERROR",payload:{field:D,value:he}}),R({type:"SET_ISVALIDATING",payload:!1})})):(R({type:"SET_FIELD_ERROR",payload:{field:D,value:fe}}),Promise.resolve(fe))}else if(p.validationSchema)return R({type:"SET_ISVALIDATING",payload:!0}),F(T.values,D).then(function(he){return he}).then(function(he){R({type:"SET_FIELD_ERROR",payload:{field:D,value:he[D]}}),R({type:"SET_ISVALIDATING",payload:!1})});return Promise.resolve()}),te=m.useCallback(function(D,ae){var fe=ae.validate;E.current[D]={validate:fe}},[]),Oe=m.useCallback(function(D){delete E.current[D]},[]),ge=kn(function(D,ae){R({type:"SET_TOUCHED",payload:D});var fe=ae===void 0?i:ae;return fe?W(T.values):Promise.resolve()}),xe=m.useCallback(function(D){R({type:"SET_ERRORS",payload:D})},[]),U=kn(function(D,ae){var fe=Tn(D)?D(T.values):D;R({type:"SET_VALUES",payload:fe});var he=ae===void 0?n:ae;return he?W(fe):Promise.resolve()}),re=m.useCallback(function(D,ae){R({type:"SET_FIELD_ERROR",payload:{field:D,value:ae}})},[]),ne=kn(function(D,ae,fe){R({type:"SET_FIELD_VALUE",payload:{field:D,value:ae}});var he=fe===void 0?n:fe;return he?W(Di(T.values,D,ae)):Promise.resolve()}),ke=m.useCallback(function(D,ae){var fe=ae,he=D,Pe;if(!ud(D)){D.persist&&D.persist();var le=D.target?D.target:D.currentTarget,qe=le.type,It=le.name,fr=le.id,la=le.value,ac=le.checked,Yh=le.outerHTML,Ms=le.options,sc=le.multiple;fe=ae||It||fr,he=/number|range/.test(qe)?(Pe=parseFloat(la),isNaN(Pe)?"":Pe):/checkbox/.test(qe)?nA(Nn(T.values,fe),ac,la):Ms&&sc?tA(Ms):la}fe&&ne(fe,he)},[ne,T.values]),_e=kn(function(D){if(ud(D))return function(ae){return ke(ae,D)};ke(D)}),Je=kn(function(D,ae,fe){ae===void 0&&(ae=!0),R({type:"SET_FIELD_TOUCHED",payload:{field:D,value:ae}});var he=fe===void 0?i:fe;return he?W(T.values):Promise.resolve()}),rt=m.useCallback(function(D,ae){D.persist&&D.persist();var fe=D.target,he=fe.name,Pe=fe.id,le=fe.outerHTML,qe=ae||he||Pe;Je(qe,!0)},[Je]),ht=kn(function(D){if(ud(D))return function(ae){return rt(ae,D)};rt(D)}),ct=m.useCallback(function(D){Tn(D)?R({type:"SET_FORMIK_STATE",payload:D}):R({type:"SET_FORMIK_STATE",payload:function(){return D}})},[]),Ot=m.useCallback(function(D){R({type:"SET_STATUS",payload:D})},[]),Rt=m.useCallback(function(D){R({type:"SET_ISSUBMITTING",payload:D})},[]),jt=kn(function(){return R({type:"SUBMIT_ATTEMPT"}),W().then(function(D){var ae=D instanceof Error,fe=!ae&&Object.keys(D).length===0;if(fe){var he;try{if(he=Bn(),he===void 0)return}catch(Pe){throw Pe}return Promise.resolve(he).then(function(Pe){return w.current&&R({type:"SUBMIT_SUCCESS"}),Pe}).catch(function(Pe){if(w.current)throw R({type:"SUBMIT_FAILURE"}),Pe})}else if(w.current&&(R({type:"SUBMIT_FAILURE"}),ae))throw D})}),er=kn(function(D){D&&D.preventDefault&&Tn(D.preventDefault)&&D.preventDefault(),D&&D.stopPropagation&&Tn(D.stopPropagation)&&D.stopPropagation(),jt().catch(function(ae){console.warn("Warning: An unhandled error was caught from submitForm()",ae)})}),qt={resetForm:Z,validateForm:W,validateField:G,setErrors:xe,setFieldError:re,setFieldTouched:Je,setFieldValue:ne,setStatus:Ot,setSubmitting:Rt,setTouched:ge,setValues:U,setFormikState:ct,submitForm:jt},Bn=kn(function(){return f(T.values,qt)}),tn=kn(function(D){D&&D.preventDefault&&Tn(D.preventDefault)&&D.preventDefault(),D&&D.stopPropagation&&Tn(D.stopPropagation)&&D.stopPropagation(),Z()}),Ge=m.useCallback(function(D){return{value:Nn(T.values,D),error:Nn(T.errors,D),touched:!!Nn(T.touched,D),initialValue:Nn(y.current,D),initialTouched:!!Nn(x.current,D),initialError:Nn(C.current,D)}},[T.errors,T.touched,T.values]),gi=m.useCallback(function(D){return{setValue:function(fe,he){return ne(D,fe,he)},setTouched:function(fe,he){return Je(D,fe,he)},setError:function(fe){return re(D,fe)}}},[ne,Je,re]),Dr=m.useCallback(function(D){var ae=ec(D),fe=ae?D.name:D,he=Nn(T.values,fe),Pe={name:fe,value:he,onChange:_e,onBlur:ht};if(ae){var le=D.type,qe=D.value,It=D.as,fr=D.multiple;le==="checkbox"?qe===void 0?Pe.checked=!!he:(Pe.checked=!!(Array.isArray(he)&&~he.indexOf(qe)),Pe.value=qe):le==="radio"?(Pe.checked=he===qe,Pe.value=qe):It==="select"&&fr&&(Pe.value=Pe.value||[],Pe.multiple=!0)}return Pe},[ht,_e,T.values]),tr=m.useMemo(function(){return!Ti(y.current,T.values)},[y.current,T.values]),wi=m.useMemo(function(){return typeof s<"u"?tr?T.errors&&Object.keys(T.errors).length===0:s!==!1&&Tn(s)?s(p):s:T.errors&&Object.keys(T.errors).length===0},[s,tr,T.errors,p]),Si=Ft({},T,{initialValues:y.current,initialErrors:C.current,initialTouched:x.current,initialStatus:N.current,handleBlur:ht,handleChange:_e,handleReset:tn,handleSubmit:er,resetForm:Z,setErrors:xe,setFormikState:ct,setFieldTouched:Je,setFieldValue:ne,setFieldError:re,setStatus:Ot,setSubmitting:Rt,setTouched:ge,setValues:U,submitForm:jt,validateForm:W,validateField:G,isValid:wi,dirty:tr,unregisterField:Oe,registerField:te,getFieldProps:Dr,getFieldMeta:Ge,getFieldHelpers:gi,validateOnBlur:i,validateOnChange:n,validateOnMount:a});return Si}function xC(e){var t=QD(e),n=e.component,r=e.children,i=e.render,o=e.innerRef;return m.useImperativeHandle(o,function(){return t}),m.createElement(KD,{value:t},n?m.createElement(n,t):i?i(t):r?Tn(r)?r(t):qD(r)?null:m.Children.only(r):null)}function XD(e){var t={};if(e.inner){if(e.inner.length===0)return Di(t,e.path,e.message);for(var i=e.inner,n=Array.isArray(i),r=0,i=n?i:i[Symbol.iterator]();;){var o;if(n){if(r>=i.length)break;o=i[r++]}else{if(r=i.next(),r.done)break;o=r.value}var a=o;Nn(t,a.path)||(t=Di(t,a.path,a.message))}}return t}function JD(e,t,n,r){n===void 0&&(n=!1),r===void 0&&(r={});var i=If(e);return t[n?"validateSync":"validate"](i,{abortEarly:!1,context:r})}function If(e){var t=Array.isArray(e)?[]:{};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=String(n);Array.isArray(e[r])===!0?t[r]=e[r].map(function(i){return Array.isArray(i)===!0||Xy(i)?If(i):i!==""?i:void 0}):Xy(e[r])?t[r]=If(e[r]):t[r]=e[r]!==""?e[r]:void 0}return t}function eA(e,t,n){var r=e.slice();return t.forEach(function(o,a){if(typeof r[a]>"u"){var s=n.clone!==!1,u=s&&n.isMergeableObject(o);r[a]=u?Rf(Array.isArray(o)?[]:{},o,n):o}else n.isMergeableObject(o)?r[a]=Rf(e[a],o,n):e.indexOf(o)===-1&&r.push(o)}),r}function tA(e){return Array.from(e).filter(function(t){return t.selected}).map(function(t){return t.value})}function nA(e,t,n){if(typeof e=="boolean")return!!t;var r=[],i=!1,o=-1;if(Array.isArray(e))r=e,o=e.indexOf(n),i=o>=0;else if(!n||n=="true"||n=="false")return!!t;return t&&n&&!i?r.concat(n):i?r.slice(0,o).concat(r.slice(o+1)):r}var rA=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u"?m.useLayoutEffect:m.useEffect;function kn(e){var t=m.useRef(e);return rA(function(){t.current=e}),m.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i=this._maxSize&&this.clear(),e in this._values||this._size++,this._values[e]=t};var oA=/[^.^\]^[]+|(?=\[\]|\.\.)/g,CC=/^\d+$/,aA=/^\d/,sA=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,lA=/^\s*(['"]?)(.*?)(\1)\s*$/,Hh=512,bg=new no(Hh),Eg=new no(Hh),kg=new no(Hh),Ai={Cache:no,split:Ff,normalizePath:dd,setter:function(e){var t=dd(e);return Eg.get(e)||Eg.set(e,function(r,i){for(var o=0,a=t.length,s=r;oe.match(pA)||[],rc=e=>e[0].toUpperCase()+e.slice(1),Uh=(e,t)=>nc(e).join(t).toLowerCase(),bC=e=>nc(e).reduce((t,n)=>`${t}${t?n[0].toUpperCase()+n.slice(1).toLowerCase():n.toLowerCase()}`,""),hA=e=>rc(bC(e)),mA=e=>Uh(e,"_"),vA=e=>Uh(e,"-"),yA=e=>rc(Uh(e," ")),gA=e=>nc(e).map(rc).join(" ");var fd={words:nc,upperFirst:rc,camelCase:bC,pascalCase:hA,snakeCase:mA,kebabCase:vA,sentenceCase:yA,titleCase:gA},Gh={exports:{}};Gh.exports=function(e){return EC(wA(e),e)};Gh.exports.array=EC;function EC(e,t){var n=e.length,r=new Array(n),i={},o=n,a=SA(t),s=xA(e);for(t.forEach(function(l){if(!s.has(l[0])||!s.has(l[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});o--;)i[o]||u(e[o],o,new Set);return r;function u(l,f,h){if(h.has(l)){var p;try{p=", node was:"+JSON.stringify(l)}catch{p=""}throw new Error("Cyclic dependency"+p)}if(!s.has(l))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(l));if(!i[f]){i[f]=!0;var y=a.get(l)||new Set;if(y=Array.from(y),f=y.length){h.add(l);do{var C=y[--f];u(C,s.get(C),h)}while(f);h.delete(l)}r[--n]=l}}}function wA(e){for(var t=new Set,n=0,r=e.length;n"",OA=/^Symbol\((.*)\)(.*)$/;function RA(e){return e!=+e?"NaN":e===0&&1/e<0?"-0":""+e}function Tg(e,t=!1){if(e==null||e===!0||e===!1)return""+e;const n=typeof e;if(n==="number")return RA(e);if(n==="string")return t?`"${e}"`:e;if(n==="function")return"[Function "+(e.name||"anonymous")+"]";if(n==="symbol")return NA.call(e).replace(OA,"Symbol($1)");const r=EA.call(e).slice(8,-1);return r==="Date"?isNaN(e.getTime())?""+e:e.toISOString(e):r==="Error"||e instanceof Error?"["+kA.call(e)+"]":r==="RegExp"?TA.call(e):null}function Li(e,t){let n=Tg(e,t);return n!==null?n:JSON.stringify(e,function(r,i){let o=Tg(this[r],t);return o!==null?o:i},2)}function kC(e){return e==null?[]:[].concat(e)}let _A=/\$\{\s*(\w+)\s*\}/g;class dn extends Error{static formatError(t,n){const r=n.label||n.path||"this";return r!==n.path&&(n=Object.assign({},n,{path:r})),typeof t=="string"?t.replace(_A,(i,o)=>Li(n[o])):typeof t=="function"?t(n):t}static isError(t){return t&&t.name==="ValidationError"}constructor(t,n,r,i){super(),this.value=void 0,this.path=void 0,this.type=void 0,this.errors=void 0,this.params=void 0,this.inner=void 0,this.name="ValidationError",this.value=n,this.path=r,this.type=i,this.errors=[],this.inner=[],kC(t).forEach(o=>{dn.isError(o)?(this.errors.push(...o.errors),this.inner=this.inner.concat(o.inner.length?o.inner:o)):this.errors.push(o)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,dn)}}let vr={default:"${path} is invalid",required:"${path} is a required field",defined:"${path} must be defined",notNull:"${path} cannot be null",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:e,type:t,value:n,originalValue:r})=>{const i=r!=null&&r!==n?` (cast from the value \`${Li(r,!0)}\`).`:".";return t!=="mixed"?`${e} must be a \`${t}\` type, but the final value was: \`${Li(n,!0)}\``+i:`${e} must match the configured type. The validated value was: \`${Li(n,!0)}\``+i}},Wn={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"},zr={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"},Df={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"},Af={isValue:"${path} field must be ${value}"},Lf={noUnknown:"${path} field has unspecified keys: ${unknown}"},_l={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must have ${length} items"};Object.assign(Object.create(null),{mixed:vr,string:Wn,number:zr,date:Df,object:Lf,array:_l,boolean:Af});const ic=e=>e&&e.__isYupSchema__;class du{static fromOptions(t,n){if(!n.then&&!n.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:r,then:i,otherwise:o}=n,a=typeof r=="function"?r:(...s)=>s.every(u=>u===r);return new du(t,(s,u)=>{var l;let f=a(...s)?i:o;return(l=f==null?void 0:f(u))!=null?l:u})}constructor(t,n){this.fn=void 0,this.refs=t,this.refs=t,this.fn=n}resolve(t,n){let r=this.refs.map(o=>o.getValue(n==null?void 0:n.value,n==null?void 0:n.parent,n==null?void 0:n.context)),i=this.fn(r,t,n);if(i===void 0||i===t)return t;if(!ic(i))throw new TypeError("conditions must return a schema object");return i.resolve(n)}}const fl={context:"$",value:"."};class ro{constructor(t,n={}){if(this.key=void 0,this.isContext=void 0,this.isValue=void 0,this.isSibling=void 0,this.path=void 0,this.getter=void 0,this.map=void 0,typeof t!="string")throw new TypeError("ref must be a string, got: "+t);if(this.key=t.trim(),t==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===fl.context,this.isValue=this.key[0]===fl.value,this.isSibling=!this.isContext&&!this.isValue;let r=this.isContext?fl.context:this.isValue?fl.value:"";this.path=this.key.slice(r.length),this.getter=this.path&&Ai.getter(this.path,!0),this.map=n.map}getValue(t,n,r){let i=this.isContext?r:this.isValue?t:n;return this.getter&&(i=this.getter(i||{})),this.map&&(i=this.map(i)),i}cast(t,n){return this.getValue(t,n==null?void 0:n.parent,n==null?void 0:n.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(t){return t&&t.__isYupRef}}ro.prototype.__isYupRef=!0;const $n=e=>e==null;function co(e){function t({value:n,path:r="",options:i,originalValue:o,schema:a},s,u){const{name:l,test:f,params:h,message:p,skipAbsent:y}=e;let{parent:C,context:x,abortEarly:N=a.spec.abortEarly}=i;function w($){return ro.isRef($)?$.getValue(n,C,x):$}function E($={}){const W=Object.assign({value:n,originalValue:o,label:a.spec.label,path:$.path||r,spec:a.spec},h,$.params);for(const G of Object.keys(W))W[G]=w(W[G]);const Z=new dn(dn.formatError($.message||p,W),n,W.path,$.type||l);return Z.params=W,Z}const b=N?s:u;let T={path:r,parent:C,type:l,from:i.from,createError:E,resolve:w,options:i,originalValue:o,schema:a};const R=$=>{dn.isError($)?b($):$?u(null):b(E())},M=$=>{dn.isError($)?b($):s($)},F=y&&$n(n);if(!i.sync){try{Promise.resolve(F?!0:f.call(T,n,T)).then(R,M)}catch($){M($)}return}let A;try{var I;if(A=F?!0:f.call(T,n,T),typeof((I=A)==null?void 0:I.then)=="function")throw new Error(`Validation test of type: "${T.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch($){M($);return}R(A)}return t.OPTIONS=e,t}function PA(e,t,n,r=n){let i,o,a;return t?(Ai.forEach(t,(s,u,l)=>{let f=u?s.slice(1,s.length-1):s;e=e.resolve({context:r,parent:i,value:n});let h=e.type==="tuple",p=l?parseInt(f,10):0;if(e.innerType||h){if(h&&!l)throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part "${a}" must contain an index to the tuple element, e.g. "${a}[0]"`);if(n&&p>=n.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${s}, in the path: ${t}. because there is no value at that index. `);i=n,n=n&&n[p],e=h?e.spec.types[p]:e.innerType}if(!l){if(!e.fields||!e.fields[f])throw new Error(`The schema does not contain the path: ${t}. (failed at: ${a} which is a type: "${e.type}")`);i=n,n=n&&n[f],e=e.fields[f]}o=f,a=u?"["+s+"]":"."+s}),{schema:e,parent:i,parentPath:o}):{parent:i,parentPath:t,schema:e}}class fu extends Set{describe(){const t=[];for(const n of this.values())t.push(ro.isRef(n)?n.describe():n);return t}resolveAll(t){let n=[];for(const r of this.values())n.push(t(r));return n}clone(){return new fu(this.values())}merge(t,n){const r=this.clone();return t.forEach(i=>r.add(i)),n.forEach(i=>r.delete(i)),r}}function ko(e,t=new Map){if(ic(e)||!e||typeof e!="object")return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime()),t.set(e,n);else if(e instanceof RegExp)n=new RegExp(e),t.set(e,n);else if(Array.isArray(e)){n=new Array(e.length),t.set(e,n);for(let r=0;r{this.typeError(vr.notType)}),this.type=t.type,this._typeCheck=t.check,this.spec=Object.assign({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,optional:!0,coerce:!0},t==null?void 0:t.spec),this.withMutation(n=>{n.nonNullable()})}get _type(){return this.type}clone(t){if(this._mutate)return t&&Object.assign(this.spec,t),this;const n=Object.create(Object.getPrototypeOf(this));return n.type=this.type,n._typeCheck=this._typeCheck,n._whitelist=this._whitelist.clone(),n._blacklist=this._blacklist.clone(),n.internalTests=Object.assign({},this.internalTests),n.exclusiveTests=Object.assign({},this.exclusiveTests),n.deps=[...this.deps],n.conditions=[...this.conditions],n.tests=[...this.tests],n.transforms=[...this.transforms],n.spec=ko(Object.assign({},this.spec,t)),n}label(t){let n=this.clone();return n.spec.label=t,n}meta(...t){if(t.length===0)return this.spec.meta;let n=this.clone();return n.spec.meta=Object.assign(n.spec.meta||{},t[0]),n}withMutation(t){let n=this._mutate;this._mutate=!0;let r=t(this);return this._mutate=n,r}concat(t){if(!t||t===this)return this;if(t.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${t.type}`);let n=this,r=t.clone();const i=Object.assign({},n.spec,r.spec);return r.spec=i,r.internalTests=Object.assign({},n.internalTests,r.internalTests),r._whitelist=n._whitelist.merge(t._whitelist,t._blacklist),r._blacklist=n._blacklist.merge(t._blacklist,t._whitelist),r.tests=n.tests,r.exclusiveTests=n.exclusiveTests,r.withMutation(o=>{t.tests.forEach(a=>{o.test(a.OPTIONS)})}),r.transforms=[...n.transforms,...r.transforms],r}isType(t){return t==null?!!(this.spec.nullable&&t===null||this.spec.optional&&t===void 0):this._typeCheck(t)}resolve(t){let n=this;if(n.conditions.length){let r=n.conditions;n=n.clone(),n.conditions=[],n=r.reduce((i,o)=>o.resolve(i,t),n),n=n.resolve(t)}return n}resolveOptions(t){var n,r,i;return Object.assign({},t,{from:t.from||[],strict:(n=t.strict)!=null?n:this.spec.strict,abortEarly:(r=t.abortEarly)!=null?r:this.spec.abortEarly,recursive:(i=t.recursive)!=null?i:this.spec.recursive})}cast(t,n={}){let r=this.resolve(Object.assign({value:t},n)),i=n.assert==="ignore-optionality",o=r._cast(t,n);if(n.assert!==!1&&!r.isType(o)){if(i&&$n(o))return o;let a=Li(t),s=Li(o);throw new TypeError(`The value of ${n.path||"field"} could not be cast to a value that satisfies the schema type: "${r.type}". + +attempted value: ${a} +`+(s!==a?`result of cast: ${s}`:""))}return o}_cast(t,n){let r=t===void 0?t:this.transforms.reduce((i,o)=>o.call(this,i,t,this),t);return r===void 0&&(r=this.getDefault()),r}_validate(t,n={},r,i){let{path:o,originalValue:a=t,strict:s=this.spec.strict}=n,u=t;s||(u=this._cast(u,Object.assign({assert:!1},n)));let l=[];for(let f of Object.values(this.internalTests))f&&l.push(f);this.runTests({path:o,value:u,originalValue:a,options:n,tests:l},r,f=>{if(f.length)return i(f,u);this.runTests({path:o,value:u,originalValue:a,options:n,tests:this.tests},r,i)})}runTests(t,n,r){let i=!1,{tests:o,value:a,originalValue:s,path:u,options:l}=t,f=x=>{i||(i=!0,n(x,a))},h=x=>{i||(i=!0,r(x,a))},p=o.length,y=[];if(!p)return h([]);let C={value:a,originalValue:s,path:u,options:l,schema:this};for(let x=0;xthis.resolve(f)._validate(l,f,p,y)}validate(t,n){let r=this.resolve(Object.assign({},n,{value:t}));return new Promise((i,o)=>r._validate(t,n,(a,s)=>{dn.isError(a)&&(a.value=s),o(a)},(a,s)=>{a.length?o(new dn(a,s)):i(s)}))}validateSync(t,n){let r=this.resolve(Object.assign({},n,{value:t})),i;return r._validate(t,Object.assign({},n,{sync:!0}),(o,a)=>{throw dn.isError(o)&&(o.value=a),o},(o,a)=>{if(o.length)throw new dn(o,t);i=a}),i}isValid(t,n){return this.validate(t,n).then(()=>!0,r=>{if(dn.isError(r))return!1;throw r})}isValidSync(t,n){try{return this.validateSync(t,n),!0}catch(r){if(dn.isError(r))return!1;throw r}}_getDefault(){let t=this.spec.default;return t==null?t:typeof t=="function"?t.call(this):ko(t)}getDefault(t){return this.resolve(t||{})._getDefault()}default(t){return arguments.length===0?this._getDefault():this.clone({default:t})}strict(t=!0){return this.clone({strict:t})}nullability(t,n){const r=this.clone({nullable:t});return r.internalTests.nullable=co({message:n,name:"nullable",test(i){return i===null?this.schema.spec.nullable:!0}}),r}optionality(t,n){const r=this.clone({optional:t});return r.internalTests.optionality=co({message:n,name:"optionality",test(i){return i===void 0?this.schema.spec.optional:!0}}),r}optional(){return this.optionality(!0)}defined(t=vr.defined){return this.optionality(!1,t)}nullable(){return this.nullability(!0)}nonNullable(t=vr.notNull){return this.nullability(!1,t)}required(t=vr.required){return this.clone().withMutation(n=>n.nonNullable(t).defined(t))}notRequired(){return this.clone().withMutation(t=>t.nullable().optional())}transform(t){let n=this.clone();return n.transforms.push(t),n}test(...t){let n;if(t.length===1?typeof t[0]=="function"?n={test:t[0]}:n=t[0]:t.length===2?n={name:t[0],test:t[1]}:n={name:t[0],message:t[1],test:t[2]},n.message===void 0&&(n.message=vr.default),typeof n.test!="function")throw new TypeError("`test` is a required parameters");let r=this.clone(),i=co(n),o=n.exclusive||n.name&&r.exclusiveTests[n.name]===!0;if(n.exclusive&&!n.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return n.name&&(r.exclusiveTests[n.name]=!!n.exclusive),r.tests=r.tests.filter(a=>!(a.OPTIONS.name===n.name&&(o||a.OPTIONS.test===i.OPTIONS.test))),r.tests.push(i),r}when(t,n){!Array.isArray(t)&&typeof t!="string"&&(n=t,t=".");let r=this.clone(),i=kC(t).map(o=>new ro(o));return i.forEach(o=>{o.isSibling&&r.deps.push(o.key)}),r.conditions.push(typeof n=="function"?new du(i,n):du.fromOptions(i,n)),r}typeError(t){let n=this.clone();return n.internalTests.typeError=co({message:t,name:"typeError",test(r){return!$n(r)&&!this.schema._typeCheck(r)?this.createError({params:{type:this.schema.type}}):!0}}),n}oneOf(t,n=vr.oneOf){let r=this.clone();return t.forEach(i=>{r._whitelist.add(i),r._blacklist.delete(i)}),r.internalTests.whiteList=co({message:n,name:"oneOf",skipAbsent:!0,test(i){let o=this.schema._whitelist,a=o.resolveAll(this.resolve);return a.includes(i)?!0:this.createError({params:{values:Array.from(o).join(", "),resolved:a}})}}),r}notOneOf(t,n=vr.notOneOf){let r=this.clone();return t.forEach(i=>{r._blacklist.add(i),r._whitelist.delete(i)}),r.internalTests.blacklist=co({message:n,name:"notOneOf",test(i){let o=this.schema._blacklist,a=o.resolveAll(this.resolve);return a.includes(i)?this.createError({params:{values:Array.from(o).join(", "),resolved:a}}):!0}}),r}strip(t=!0){let n=this.clone();return n.spec.strip=t,n}describe(t){const n=(t?this.resolve(t):this).clone(),{label:r,meta:i,optional:o,nullable:a}=n.spec;return{meta:i,label:r,optional:o,nullable:a,default:n.getDefault(t),type:n.type,oneOf:n._whitelist.describe(),notOneOf:n._blacklist.describe(),tests:n.tests.map(u=>({name:u.OPTIONS.name,params:u.OPTIONS.params})).filter((u,l,f)=>f.findIndex(h=>h.name===u.name)===l)}}}wn.prototype.__isYupSchema__=!0;for(const e of["validate","validateSync"])wn.prototype[`${e}At`]=function(t,n,r={}){const{parent:i,parentPath:o,schema:a}=PA(this,t,n,r.context);return a[e](i&&i[o],Object.assign({},r,{parent:i,path:t}))};for(const e of["equals","is"])wn.prototype[e]=wn.prototype.oneOf;for(const e of["not","nope"])wn.prototype[e]=wn.prototype.notOneOf;function TC(){return new NC}class NC extends wn{constructor(){super({type:"boolean",check(t){return t instanceof Boolean&&(t=t.valueOf()),typeof t=="boolean"}}),this.withMutation(()=>{this.transform((t,n,r)=>{if(r.spec.coerce&&!r.isType(t)){if(/^(true|1)$/i.test(String(t)))return!0;if(/^(false|0)$/i.test(String(t)))return!1}return t})})}isTrue(t=Af.isValue){return this.test({message:t,name:"is-value",exclusive:!0,params:{value:"true"},test(n){return $n(n)||n===!0}})}isFalse(t=Af.isValue){return this.test({message:t,name:"is-value",exclusive:!0,params:{value:"false"},test(n){return $n(n)||n===!1}})}default(t){return super.default(t)}defined(t){return super.defined(t)}optional(){return super.optional()}required(t){return super.required(t)}notRequired(){return super.notRequired()}nullable(){return super.nullable()}nonNullable(t){return super.nonNullable(t)}strip(t){return super.strip(t)}}TC.prototype=NC.prototype;let MA=/^[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])?)*$/,$A=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,IA=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,FA=e=>$n(e)||e===e.trim(),DA={}.toString();function Oi(){return new OC}class OC extends wn{constructor(){super({type:"string",check(t){return t instanceof String&&(t=t.valueOf()),typeof t=="string"}}),this.withMutation(()=>{this.transform((t,n,r)=>{if(!r.spec.coerce||r.isType(t)||Array.isArray(t))return t;const i=t!=null&&t.toString?t.toString():t;return i===DA?t:i})})}required(t){return super.required(t).withMutation(n=>n.test({message:t||vr.required,name:"required",skipAbsent:!0,test:r=>!!r.length}))}notRequired(){return super.notRequired().withMutation(t=>(t.tests=t.tests.filter(n=>n.OPTIONS.name!=="required"),t))}length(t,n=Wn.length){return this.test({message:n,name:"length",exclusive:!0,params:{length:t},skipAbsent:!0,test(r){return r.length===this.resolve(t)}})}min(t,n=Wn.min){return this.test({message:n,name:"min",exclusive:!0,params:{min:t},skipAbsent:!0,test(r){return r.length>=this.resolve(t)}})}max(t,n=Wn.max){return this.test({name:"max",exclusive:!0,message:n,params:{max:t},skipAbsent:!0,test(r){return r.length<=this.resolve(t)}})}matches(t,n){let r=!1,i,o;return n&&(typeof n=="object"?{excludeEmptyString:r=!1,message:i,name:o}=n:i=n),this.test({name:o||"matches",message:i||Wn.matches,params:{regex:t},skipAbsent:!0,test:a=>a===""&&r||a.search(t)!==-1})}email(t=Wn.email){return this.matches(MA,{name:"email",message:t,excludeEmptyString:!0})}url(t=Wn.url){return this.matches($A,{name:"url",message:t,excludeEmptyString:!0})}uuid(t=Wn.uuid){return this.matches(IA,{name:"uuid",message:t,excludeEmptyString:!1})}ensure(){return this.default("").transform(t=>t===null?"":t)}trim(t=Wn.trim){return this.transform(n=>n!=null?n.trim():n).test({message:t,name:"trim",test:FA})}lowercase(t=Wn.lowercase){return this.transform(n=>$n(n)?n:n.toLowerCase()).test({message:t,name:"string_case",exclusive:!0,skipAbsent:!0,test:n=>$n(n)||n===n.toLowerCase()})}uppercase(t=Wn.uppercase){return this.transform(n=>$n(n)?n:n.toUpperCase()).test({message:t,name:"string_case",exclusive:!0,skipAbsent:!0,test:n=>$n(n)||n===n.toUpperCase()})}}Oi.prototype=OC.prototype;let AA=e=>e!=+e;function qh(){return new RC}class RC extends wn{constructor(){super({type:"number",check(t){return t instanceof Number&&(t=t.valueOf()),typeof t=="number"&&!AA(t)}}),this.withMutation(()=>{this.transform((t,n,r)=>{if(!r.spec.coerce)return t;let i=t;if(typeof i=="string"){if(i=i.replace(/\s/g,""),i==="")return NaN;i=+i}return r.isType(i)?i:parseFloat(i)})})}min(t,n=zr.min){return this.test({message:n,name:"min",exclusive:!0,params:{min:t},skipAbsent:!0,test(r){return r>=this.resolve(t)}})}max(t,n=zr.max){return this.test({message:n,name:"max",exclusive:!0,params:{max:t},skipAbsent:!0,test(r){return r<=this.resolve(t)}})}lessThan(t,n=zr.lessThan){return this.test({message:n,name:"max",exclusive:!0,params:{less:t},skipAbsent:!0,test(r){return rthis.resolve(t)}})}positive(t=zr.positive){return this.moreThan(0,t)}negative(t=zr.negative){return this.lessThan(0,t)}integer(t=zr.integer){return this.test({name:"integer",message:t,skipAbsent:!0,test:n=>Number.isInteger(n)})}truncate(){return this.transform(t=>$n(t)?t:t|0)}round(t){var n;let r=["ceil","floor","round","trunc"];if(t=((n=t)==null?void 0:n.toLowerCase())||"round",t==="trunc")return this.truncate();if(r.indexOf(t.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+r.join(", "));return this.transform(i=>$n(i)?i:Math[t](i))}}qh.prototype=RC.prototype;var LA=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function jA(e){var t=[1,4,5,6,7,10,11],n=0,r,i;if(i=LA.exec(e)){for(var o=0,a;a=t[o];++o)i[a]=+i[a]||0;i[2]=(+i[2]||1)-1,i[3]=+i[3]||1,i[7]=i[7]?String(i[7]).substr(0,3):0,(i[8]===void 0||i[8]==="")&&(i[9]===void 0||i[9]==="")?r=+new Date(i[1],i[2],i[3],i[4],i[5],i[6],i[7]):(i[8]!=="Z"&&i[9]!==void 0&&(n=i[10]*60+i[11],i[9]==="+"&&(n=0-n)),r=Date.UTC(i[1],i[2],i[3],i[4],i[5]+n,i[6],i[7]))}else r=Date.parse?Date.parse(e):NaN;return r}let BA=new Date(""),zA=e=>Object.prototype.toString.call(e)==="[object Date]";class oc extends wn{constructor(){super({type:"date",check(t){return zA(t)&&!isNaN(t.getTime())}}),this.withMutation(()=>{this.transform((t,n,r)=>!r.spec.coerce||r.isType(t)?t:(t=jA(t),isNaN(t)?oc.INVALID_DATE:new Date(t)))})}prepareParam(t,n){let r;if(ro.isRef(t))r=t;else{let i=this.cast(t);if(!this._typeCheck(i))throw new TypeError(`\`${n}\` must be a Date or a value that can be \`cast()\` to a Date`);r=i}return r}min(t,n=Df.min){let r=this.prepareParam(t,"min");return this.test({message:n,name:"min",exclusive:!0,params:{min:t},skipAbsent:!0,test(i){return i>=this.resolve(r)}})}max(t,n=Df.max){let r=this.prepareParam(t,"max");return this.test({message:n,name:"max",exclusive:!0,params:{max:t},skipAbsent:!0,test(i){return i<=this.resolve(r)}})}}oc.INVALID_DATE=BA;oc.prototype;function VA(e,t=[]){let n=[],r=new Set,i=new Set(t.map(([a,s])=>`${a}-${s}`));function o(a,s){let u=Ai.split(a)[0];r.add(u),i.has(`${s}-${u}`)||n.push([s,u])}for(const a of Object.keys(e)){let s=e[a];r.add(a),ro.isRef(s)&&s.isSibling?o(s.path,a):ic(s)&&"deps"in s&&s.deps.forEach(u=>o(u,a))}return bA.array(Array.from(r),n).reverse()}function Ng(e,t){let n=1/0;return e.some((r,i)=>{var o;if((o=t.path)!=null&&o.includes(r))return n=i,!0}),n}function _C(e){return(t,n)=>Ng(e,t)-Ng(e,n)}const PC=(e,t,n)=>{if(typeof e!="string")return e;let r=e;try{r=JSON.parse(e)}catch{}return n.isType(r)?r:e};function Pl(e){if("fields"in e){const t={};for(const[n,r]of Object.entries(e.fields))t[n]=Pl(r);return e.setFields(t)}if(e.type==="array"){const t=e.optional();return t.innerType&&(t.innerType=Pl(t.innerType)),t}return e.type==="tuple"?e.optional().clone({types:e.spec.types.map(Pl)}):"optional"in e?e.optional():e}const HA=(e,t)=>{const n=[...Ai.normalizePath(t)];if(n.length===1)return n[0]in e;let r=n.pop(),i=Ai.getter(Ai.join(n),!0)(e);return!!(i&&r in i)};let Og=e=>Object.prototype.toString.call(e)==="[object Object]";function WA(e,t){let n=Object.keys(e.fields);return Object.keys(t).filter(r=>n.indexOf(r)===-1)}const UA=_C([]);function Kh(e){return new MC(e)}class MC extends wn{constructor(t){super({type:"object",check(n){return Og(n)||typeof n=="function"}}),this.fields=Object.create(null),this._sortErrors=UA,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{t&&this.shape(t)})}_cast(t,n={}){var r;let i=super._cast(t,n);if(i===void 0)return this.getDefault();if(!this._typeCheck(i))return i;let o=this.fields,a=(r=n.stripUnknown)!=null?r:this.spec.noUnknown,s=[].concat(this._nodes,Object.keys(i).filter(h=>!this._nodes.includes(h))),u={},l=Object.assign({},n,{parent:u,__validating:n.__validating||!1}),f=!1;for(const h of s){let p=o[h],y=h in i;if(p){let C,x=i[h];l.path=(n.path?`${n.path}.`:"")+h,p=p.resolve({value:x,context:n.context,parent:u});let N=p instanceof wn?p.spec:void 0,w=N==null?void 0:N.strict;if(N!=null&&N.strip){f=f||h in i;continue}C=!n.__validating||!w?p.cast(i[h],l):i[h],C!==void 0&&(u[h]=C)}else y&&!a&&(u[h]=i[h]);(y!==h in u||u[h]!==i[h])&&(f=!0)}return f?u:i}_validate(t,n={},r,i){let{from:o=[],originalValue:a=t,recursive:s=this.spec.recursive}=n;n.from=[{schema:this,value:a},...o],n.__validating=!0,n.originalValue=a,super._validate(t,n,r,(u,l)=>{if(!s||!Og(l)){i(u,l);return}a=a||l;let f=[];for(let h of this._nodes){let p=this.fields[h];!p||ro.isRef(p)||f.push(p.asNestedTest({options:n,key:h,parent:l,parentPath:n.path,originalParent:a}))}this.runTests({tests:f,value:l,originalValue:a,options:n},r,h=>{i(h.sort(this._sortErrors).concat(u),l)})})}clone(t){const n=super.clone(t);return n.fields=Object.assign({},this.fields),n._nodes=this._nodes,n._excludedEdges=this._excludedEdges,n._sortErrors=this._sortErrors,n}concat(t){let n=super.concat(t),r=n.fields;for(let[i,o]of Object.entries(this.fields)){const a=r[i];r[i]=a===void 0?o:a}return n.withMutation(i=>i.setFields(r,this._excludedEdges))}_getDefault(){if("default"in this.spec)return super._getDefault();if(!this._nodes.length)return;let t={};return this._nodes.forEach(n=>{const r=this.fields[n];t[n]=r&&"getDefault"in r?r.getDefault():void 0}),t}setFields(t,n){let r=this.clone();return r.fields=t,r._nodes=VA(t,n),r._sortErrors=_C(Object.keys(t)),n&&(r._excludedEdges=n),r}shape(t,n=[]){return this.clone().withMutation(r=>{let i=r._excludedEdges;return n.length&&(Array.isArray(n[0])||(n=[n]),i=[...r._excludedEdges,...n]),r.setFields(Object.assign(r.fields,t),i)})}partial(){const t={};for(const[n,r]of Object.entries(this.fields))t[n]="optional"in r&&r.optional instanceof Function?r.optional():r;return this.setFields(t)}deepPartial(){return Pl(this)}pick(t){const n={};for(const r of t)this.fields[r]&&(n[r]=this.fields[r]);return this.setFields(n)}omit(t){const n=Object.assign({},this.fields);for(const r of t)delete n[r];return this.setFields(n)}from(t,n,r){let i=Ai.getter(t,!0);return this.transform(o=>{if(!o)return o;let a=o;return HA(o,t)&&(a=Object.assign({},o),r||delete a[t],a[n]=i(o)),a})}json(){return this.transform(PC)}noUnknown(t=!0,n=Lf.noUnknown){typeof t!="boolean"&&(n=t,t=!0);let r=this.test({name:"noUnknown",exclusive:!0,message:n,test(i){if(i==null)return!0;const o=WA(this.schema,i);return!t||o.length===0||this.createError({params:{unknown:o.join(", ")}})}});return r.spec.noUnknown=t,r}unknown(t=!0,n=Lf.noUnknown){return this.noUnknown(!t,n)}transformKeys(t){return this.transform(n=>{if(!n)return n;const r={};for(const i of Object.keys(n))r[t(i)]=n[i];return r})}camelCase(){return this.transformKeys(fd.camelCase)}snakeCase(){return this.transformKeys(fd.snakeCase)}constantCase(){return this.transformKeys(t=>fd.snakeCase(t).toUpperCase())}describe(t){let n=super.describe(t);n.fields={};for(const[i,o]of Object.entries(this.fields)){var r;let a=t;(r=a)!=null&&r.value&&(a=Object.assign({},a,{parent:a.value,value:a.value[i]})),n.fields[i]=o.describe(a)}return n}}Kh.prototype=MC.prototype;function $C(e){return new IC(e)}class IC extends wn{constructor(t){super({type:"array",check(n){return Array.isArray(n)}}),this.innerType=void 0,this.innerType=t}_cast(t,n){const r=super._cast(t,n);if(!this._typeCheck(r)||!this.innerType)return r;let i=!1;const o=r.map((a,s)=>{const u=this.innerType.cast(a,Object.assign({},n,{path:`${n.path||""}[${s}]`}));return u!==a&&(i=!0),u});return i?o:r}_validate(t,n={},r,i){var o;let a=this.innerType,s=(o=n.recursive)!=null?o:this.spec.recursive;n.originalValue!=null&&n.originalValue,super._validate(t,n,r,(u,l)=>{var f;if(!s||!a||!this._typeCheck(l)){i(u,l);return}let h=new Array(l.length);for(let y=0;yi(y.concat(u),l))})}clone(t){const n=super.clone(t);return n.innerType=this.innerType,n}json(){return this.transform(PC)}concat(t){let n=super.concat(t);return n.innerType=this.innerType,t.innerType&&(n.innerType=n.innerType?n.innerType.concat(t.innerType):t.innerType),n}of(t){let n=this.clone();if(!ic(t))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+Li(t));return n.innerType=t,n}length(t,n=_l.length){return this.test({message:n,name:"length",exclusive:!0,params:{length:t},skipAbsent:!0,test(r){return r.length===this.resolve(t)}})}min(t,n){return n=n||_l.min,this.test({message:n,name:"min",exclusive:!0,params:{min:t},skipAbsent:!0,test(r){return r.length>=this.resolve(t)}})}max(t,n){return n=n||_l.max,this.test({message:n,name:"max",exclusive:!0,params:{max:t},skipAbsent:!0,test(r){return r.length<=this.resolve(t)}})}ensure(){return this.default(()=>[]).transform((t,n)=>this._typeCheck(t)?t:n==null?[]:[].concat(n))}compact(t){let n=t?(r,i,o)=>!t(r,i,o):r=>!!r;return this.transform(r=>r!=null?r.filter(n):r)}describe(t){let n=super.describe(t);if(this.innerType){var r;let i=t;(r=i)!=null&&r.value&&(i=Object.assign({},i,{parent:i.value,value:i.value[0]})),n.innerType=this.innerType.describe(t)}return n}}$C.prototype=IC.prototype;const GA=()=>{const{event:e,setEvent:t,locale:n}=ye(),r=async(i,o)=>{try{await Ne("update-dealership-settings",{dealership:e.dealershipId,...i}),t({...e,...i}),o.resetForm({values:i})}catch{}};return c("div",{children:c(xC,{initialValues:{name:e.name||"",commission:e.commission||10},validationSchema:Kh().shape({name:Oi().max(100),commission:qh().min(0).max(100)}),onSubmit:r,children:({values:i,handleChange:o,handleSubmit:a,dirty:s,setFieldValue:u})=>g("form",{onSubmit:a,children:[g(ur,{children:[c(Xe,{children:g(j.Group,{className:"mb-3",children:[c(j.Label,{children:n.dealershipName}),c(j.Control,{id:"name",type:"text",value:i.name,onChange:o,placeholder:e.dealershipId})]})}),e.shopType==="owned"&&c(Xe,{children:g(j.Group,{className:"mb-3",children:[c(j.Label,{children:n.commission}),g(Gt,{children:[c(j.Control,{id:"commission",type:"number",value:i.commission,onChange:l=>u("commission",l.target.value?parseInt(l.target.value):""),min:0,max:100,step:1}),c(Gt.Text,{children:"%"})]})]})})]}),c(ee,{type:"submit",disabled:!s,children:n.save})]})})})},qA=()=>{const{event:e,onCloseModal:t,locale:n,config:r}=ye(),[i,o]=m.useState("Dashboard"),a=m.useMemo(()=>[{icon:"bi-graph-up",name:n.dashboard,Component:z2},{icon:"bi-car-front",name:n.vehicles,Component:q2},{icon:"bi-ui-checks-grid",name:n.displayVehicles,Component:Q2},e.shopType=="owned"&&{icon:"bi-card-checklist",name:n.orders,Component:tM},{icon:"bi-coin",name:n.sales,Component:iM},e.shopType=="owned"&&e.employeeRole!=="supervisor"&&{icon:"bi-people",name:n.employees,Component:uM},e.employeeRole!=="supervisor"&&{icon:"bi-gear",name:n.settings,Component:GA}],[n]).filter(Boolean),s=async()=>{try{await t(),await Ne("open-admin")}catch{}};return e.type!=="showAdmin"?null:g(z,{show:e.type==="showAdmin",size:"xl",centered:!0,backdrop:!1,scrollable:!0,children:[g(z.Body,{className:"p-0",children:[g("div",{className:"dealership-header p-3 text-muted bg-darker",children:[g("div",{children:[e.fromAdmin&&g(ee,{size:"sm",variant:"outline-secondary",className:"me-3",onClick:s,children:[c("i",{className:"bi-arrow-left me-2"}),`${n.all} ${n.dealerships}`]}),c("strong",{children:e.name||e.dealershipId})]}),g("div",{children:[c("span",{className:"me-3",children:e.fromAdmin||e.employeeRole=="server_admin"?"Server Admin":e.shopType==="owned"&&`${e.playerName} (${n[`${e.employeeRole}Role`]})`}),c(zp,{onClick:()=>t()})]})]}),c(__,{id:"justify-tab-example",className:"mb-3 p-3 pb-0 admin-navbar bg-darker",activeKey:i,onSelect:u=>o(u),justify:!0,children:a.map(({icon:u,name:l,Component:f},h)=>c(k_,{eventKey:l,title:g("div",{children:[c("i",{className:`me-2 ${u}`}),l]}),children:c("div",{className:"p-3 pt-0",children:c(f,{currentTab:i})})},h))})]}),!r.HideWatermark&&c(z.Footer,{children:c(ta,{})})]})},KA=()=>{const{event:e,onCloseModal:t,locale:n}=ye(),[r,i]=m.useState(0);m.useEffect(()=>{let a;return e.type==="testDriveHud"&&(i(e.time),a=setInterval(()=>{i(s=>s-1===0?(o(),0):Math.max(s-1,0))},1e3)),()=>{clearInterval(a)}},[e.type]);const o=async()=>{await Ne("finish-test-drive"),t()};return e.type!=="testDriveHud"?null:c(Ue,{className:"test-drive-hud bg-black",children:g(Ue.Body,{className:"d-flex align-items-center justify-content-between",children:[c("div",{className:"test-drive-notice",children:n.testDriveExit}),g("div",{className:"seconds-remaining",children:[c("h3",{className:"m-0",children:r}),c("small",{className:"m-0 text-center",children:n.seconds})]})]})})},ZA=({show:e,onHide:t,onConfirm:n})=>{const{locale:r}=ye();return g(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:r.deleteData})}),c(z.Body,{children:r.deleteConfirmation}),g(z.Footer,{children:[c(ee,{variant:"primary",onClick:()=>{n(),t()},children:r.yes}),c(ee,{variant:"secondary",onClick:()=>t(),children:r.no})]})]})},YA=({show:e,onHide:t,dealershipId:n})=>{const{event:r,locale:i}=ye(),[o,a]=m.useState(""),s=r.nearbyPlayers||[];return c(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:g("form",{onSubmit:async l=>{if(l.preventDefault(),!o)return!1;try{await Ne("set-dealership-owner",{dealershipId:n,player:o}),t()}catch{}},children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:i.setDealershipOwner})}),c(z.Body,{children:g(j.Group,{children:[c(j.Label,{children:i.nearbyPlayers}),g(j.Select,{value:o,onChange:l=>a(l.target.value),children:[c("option",{value:"",disabled:!0,children:s.length?i.selectPlayer:i.noPlayersNearby}),s.map(({id:l,name:f})=>c("option",{value:l,children:f},l))]})]})}),c(z.Footer,{children:c(ee,{type:"submit",variant:"primary",disabled:!o,children:i.setDealershipOwner})})]})})},QA=({dealer:e})=>{const{config:t,onCloseModal:n,locale:r}=ye(),{name:i,type:o,owner_name:a,label:s,active:u,balance:l}=e,[f,h]=m.useState(!1),[p,y]=m.useState(!1),C=async()=>{try{await n(),await Ne("open-dealership-management",{id:e.name,fromAdmin:!0})}catch{}},x=async()=>{try{await Ne("delete-dealership-data",{dealershipId:e.name})}catch{}};return g("tr",{style:u?{}:{color:"#555"},children:[c("td",{className:"font-monospace",children:i}),c("td",{children:o}),c("td",{children:s||i}),c("td",{children:o==="owned"?a:"-"}),c("td",{children:o==="owned"?Le(l,t):"-"}),c("td",{children:u?g("strong",{className:"text-success d-flex",children:[c("i",{className:"bi-check-circle me-1"})," ",r.active]}):g("strong",{className:"text-danger d-flex",children:[c("i",{className:"bi-x-circle me-1"})," ",r.removed]})}),c("td",{children:c("div",{className:"d-flex justify-content-end",children:u?g(Wt,{children:[o==="owned"&&g(Wt,{children:[g(ee,{size:"sm",variant:"secondary",className:"d-flex",onClick:()=>h(!0),children:[c("i",{className:"bi-person me-1"}),c("span",{className:"text-nowrap",children:r.setOwner})]}),c(YA,{show:f,onHide:()=>h(!1),dealershipId:i})]}),g(ee,{size:"sm",variant:"primary",onClick:C,className:"ms-2 d-flex",children:[c("i",{className:"bi-wrench me-1"}),c("span",{className:"text-nowrap",children:r.manage})]})]}):g(Wt,{children:[g(ee,{size:"sm",variant:"danger",onClick:()=>y(!0),children:[c("i",{className:"bi-trash me-1"}),r.deleteData]}),c(ZA,{show:p,onHide:()=>y(!1),onConfirm:x})]})})})]})},XA=({data:e,columns:t})=>{const{locale:n}=ye(),{getTableProps:r,getTableBodyProps:i,headerGroups:o,page:a,canPreviousPage:s,canNextPage:u,pageOptions:l,nextPage:f,previousPage:h,setPageSize:p,state:{pageIndex:y,pageSize:C}}=cr.useTable({columns:t,data:e,autoResetPage:!1,autoResetFilters:!1},cr.usePagination);return g("div",{children:[g(Bo,{variant:"info",children:[c("i",{className:"bi-info-circle me-2"}),'New dealerships are created in the config file. They will appear here after a script restart! Dealerships removed from the config will show as "Removed", and you can erase all their database data from here.']}),g(ea,{hover:!0,className:"bootstrap-table",...r(),children:[c("thead",{children:o.map(x=>c("tr",{...x.getHeaderGroupProps(),children:x.headers.map(N=>c("th",{...N.getHeaderProps(),children:N.render("Header")}))}))}),c("tbody",{...i(),children:a.length?a.map((x,N)=>c(QA,{dealer:x.original},x.original.name)):c("tr",{children:c("td",{colSpan:100,align:"center",children:n.noDealershipsFound})})})]}),g("div",{className:"pagination d-flex justify-content-between",children:[c("div",{children:g(ee,{variant:"primary",onClick:()=>h(),disabled:!s,children:[c("i",{className:"bi-arrow-left"})," ",n.previous]})}),g("div",{className:"d-flex align-items-center",children:[g("span",{className:"me-3",children:[n.page," ",y+1," ",n.of," ",l.length]}),c(j.Select,{size:"sm",value:C,onChange:x=>{p(Number(x.target.value))},style:{width:110},children:[10,20,30,40,50].map(x=>g("option",{value:x,children:[n.show," ",x]},x))})]}),c("div",{children:g(ee,{variant:"primary",onClick:()=>f(),disabled:!u,children:[n.next," ",c("i",{className:"bi-arrow-right"})]})})]})]})},JA=({goBack:e})=>{const{event:t,config:n,locale:r}=ye(),[i,o]=m.useState(""),[a,s]=m.useState([]),[u,l]=m.useState([]);m.useEffect(()=>{s(t.dealers||[])},[t.dealers]),m.useEffect(()=>{l(a.filter(({name:p,label:y})=>{const C=i.toLocaleLowerCase().split(" ").filter(x=>x).map(x=>x.trim());return C.filter(x=>`${p} ${y}`.toLocaleLowerCase().includes(x)).length===C.length}))},[a,i]);const f=m.useMemo(()=>[{Header:r.id,accessor:"name"},{Header:r.type,accessor:"type"},{Header:r.name,accessor:"label"},{Header:r.owner,accessor:"owner"},{Header:r.bankBalance,accessor:"balance"},{Header:r.status,accessor:"status"},{Header:"",accessor:"x"}],[]),h=u;return g(Wt,{children:[g(z.Header,{className:"gap-3",closeButton:!0,children:[g(ee,{size:"sm",variant:"dark",onClick:()=>e(),children:[c("i",{className:"bi-arrow-left"})," ",r.back]}),c(z.Title,{as:"h5",children:r.dealershipsAdmin})]}),g(z.Body,{className:"p-0",children:[c(j.Group,{className:"d-flex p-3 search-and-filter",children:g(Gt,{children:[c(Gt.Text,{children:c("i",{className:"bi-search"})}),c(j.Control,{type:"search",placeholder:r.search,value:i,onChange:p=>o(p.target.value)})]})}),c("div",{className:"p-3 pt-0",children:a.length?c(XA,{columns:f,data:h}):r.noDealershipsFound})]}),g(z.Footer,{className:"d-flex justify-content-between",children:[g("div",{className:"text-muted",children:[a.length," ",r.dealersCount]}),!n.HideWatermark&&c(ta,{})]})]})},FC=({type:e,show:t,onHide:n,vehicle:r,onSubmit:i})=>{const{config:o,event:a,locale:s}=ye(),u=m.useMemo(()=>a.vehicles,[a.vehicles]),l=Object.keys(o.Categories||{}),[f,h]=m.useState(null),p=m.useRef();m.useEffect(()=>{h(null)},[t]);const y=async x=>{p.current&&clearTimeout(p.current),h(null),p.current=setTimeout(async()=>{const N=x.target.value,{valid:w}=await Ne("verify-spawn-code",{spawnCode:N});h(w)},500)},C=(x,N)=>{if(e==="add"&&u.find(w=>w.spawn_code===x.spawn_code))return N.setFieldError("spawn_code",s.errorVehicleWithSpawnCodeExists);i({...x,created_at:(r==null?void 0:r.created_at)||de.now().toMillis()}),n(),h(null),e==="add"&&N.resetForm()};return c(z,{show:t,onHide:()=>n(),centered:!0,style:{zIndex:9999},children:c(xC,{initialValues:{brand:(r==null?void 0:r.brand)||"",model:(r==null?void 0:r.model)||"",spawn_code:(r==null?void 0:r.spawn_code)||"",category:(r==null?void 0:r.category)||l[0],price:(r==null?void 0:r.price)||0,dealerships:(r==null?void 0:r.dealerships)||[],updateDealerPrices:!1},validationSchema:Kh().shape({brand:Oi().max(100),model:Oi().max(100).required(s.required),spawn_code:Oi().max(100).required(s.required),category:Oi().oneOf(l).required(s.required),price:qh().min(0).required(s.required),dealerships:$C().of(Oi()),updateDealerPrices:TC().required(s.required)}),onSubmit:C,children:({values:x,handleChange:N,setFieldValue:w,handleSubmit:E,touched:b,errors:T})=>g("form",{onSubmit:E,children:[c(z.Header,{closeButton:!0,children:g(z.Title,{as:"h5",children:[s[e]," ",s.vehicle]})}),g(z.Body,{children:[g(j.Group,{className:"mb-3",controlId:"validationFormik03",children:[c(j.Label,{children:s.spawnCode}),c(j.Control,{type:"text",name:"spawn_code",placeholder:`${s.forExample}: adder`,value:x.spawn_code,onChange:N,onKeyUp:y,disabled:e==="edit",isInvalid:f===!1||!!b.spawn_code&&!!T.spawn_code,isValid:f===!0}),c(j.Control.Feedback,{type:"invalid",children:f===!1?s.spawnCodeInvalid:T.spawn_code})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:s.brand}),c(j.Control,{name:"brand",placeholder:`${s.forExample}: Bugatti (Optional)`,value:x.brand,onChange:N,isInvalid:!!b.brand&&!!T.brand}),c(j.Control.Feedback,{type:"invalid",children:T.brand})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:s.model}),c(j.Control,{type:"text",name:"model",placeholder:`${s.forExample}: Veyron`,value:x.model,onChange:N,isInvalid:!!b.model&&!!T.model}),c(j.Control.Feedback,{type:"invalid",children:T.model})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:s.category}),g(j.Select,{name:"category",value:x.category,onChange:N,isInvalid:!!b.category&&!!T.category,children:[c("option",{value:"",children:"Select a category"}),l.map(R=>c("option",{value:R,children:o.Categories[R]},R))]}),c(j.Control.Feedback,{type:"invalid",children:T.model})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:s.price}),g(Gt,{hasValidation:!0,children:[c(j.Control,{type:"number",name:"price",value:x.price,onChange:N,isInvalid:!!b.price&&!!T.price}),c(j.Control.Feedback,{type:"invalid",children:T.price})]}),(x.price!==(r==null?void 0:r.price)||x.updateDealerPrices)&&c(j.Check,{type:"checkbox",id:"updateDealerPrices",name:"updateDealerPrices",label:s.overwriteDealerPrices,checked:x.updateDealerPrices,onChange:N,className:"mt-2"})]}),g(Ue,{children:[c(Ue.Header,{children:s.dealerships}),c(j.Group,{as:Ue.Body,children:Object.keys(o.DealershipLocations).map((R,M)=>c(j.Check,{label:R,name:"payment-method",type:"checkbox",id:`dealership-${R}`,checked:x.dealerships.includes(R),onChange:F=>F.target.checked?w("dealerships",[...x.dealerships,R]):w("dealerships",x.dealerships.filter(A=>R!==A))},M))})]})]}),c(z.Footer,{children:c(ee,{type:"submit",variant:"primary",disabled:e==="add"&&f===!1,children:s[e]})})]})})})},eL=({show:e,onHide:t,onConfirm:n})=>{const{locale:r}=ye();return g(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:r.deleteVehicle})}),c(z.Body,{children:r.deleteConfirmation}),g(z.Footer,{children:[c(ee,{variant:"primary",onClick:()=>{n(),t()},children:r.yes}),c(ee,{variant:"secondary",onClick:()=>t(),children:r.no})]})]})},tL=({vehicle:e,updateVehicle:t,deleteVehicle:n})=>{var w;const{config:r,locale:i}=ye(),{brand:o,model:a,category:s,spawn_code:u,dealerships:l,price:f}=e,[h,p]=m.useState(!1),[y,C]=m.useState(!1),x=E=>{t(E)},N=()=>{n()};return g("tr",{children:[g("td",{className:"admin-vehicle-row-name",children:[o," ",a]}),c("td",{children:u}),c("td",{children:l.join(", ")||"-"}),c("td",{children:(w=r.Categories)==null?void 0:w[s]}),c("td",{children:Le(f,r)}),g("td",{className:"text-end",children:[g(ee,{size:"sm",variant:"link text-decoration-none",onClick:()=>p(!0),children:[c("i",{className:"bi-pencil me-1"}),i.edit]}),g(ee,{size:"sm",variant:"danger",onClick:()=>C(!0),className:"ms-2",children:[c("i",{className:"bi-trash me-1"}),i.delete]}),c(FC,{type:"edit",show:h,onHide:()=>p(!1),vehicle:e,onSubmit:x}),c(eL,{show:y,onHide:()=>C(!1),onConfirm:N})]})]})},nL=({data:e,columns:t,onUpdateVehicle:n,onDeleteVehicle:r})=>{const{locale:i}=ye(),{getTableProps:o,getTableBodyProps:a,headerGroups:s,prepareRow:u,page:l,canPreviousPage:f,canNextPage:h,pageOptions:p,pageCount:y,gotoPage:C,nextPage:x,previousPage:N,setPageSize:w,state:{pageIndex:E,pageSize:b}}=cr.useTable({columns:t,data:e,autoResetPage:!1,autoResetFilters:!1},cr.usePagination);return g("div",{children:[g(ea,{hover:!0,className:"bootstrap-table",...o(),children:[c("thead",{children:s.map(T=>c("tr",{...T.getHeaderGroupProps(),children:T.headers.map(R=>c("th",{...R.getHeaderProps(),children:R.render("Header")}))}))}),c("tbody",{...a(),children:l.length?l.map((T,R)=>c(tL,{vehicle:T.original,updateVehicle:M=>n(T.original.spawn_code,M),deleteVehicle:()=>r(T.original.spawn_code)},T.original.spawn_code)):c("tr",{children:c("td",{colSpan:100,align:"center",children:i.noVehicles})})})]}),g("div",{className:"pagination d-flex justify-content-between",children:[g(ee,{variant:"primary",onClick:()=>N(),disabled:!f,children:[c("i",{className:"bi-arrow-left"})," ",i.previous]}),g("div",{className:"d-flex align-items-center",children:[g("span",{className:"me-3",children:[i.page," ",E+1," ",i.of," ",p.length]}),c(j.Select,{size:"sm",value:b,onChange:T=>{w(Number(T.target.value))},style:{width:110},children:[10,20,30,40,50].map(T=>g("option",{value:T,children:[i.show," ",T]},T))})]}),g(ee,{variant:"primary",onClick:()=>x(),disabled:!h,children:[i.next," ",c("i",{className:"bi-arrow-right"})]})]})]})},Rg=["Append","Overwrite"],_g=[["qbshared","QBCore shared/vehicles.lua"],["qbx_shared","Qbox shared/vehicles.lua"],["esxdb","ESX vehicles table"]],rL=({show:e,onHide:t})=>{const{locale:n}=ye(),[r,i]=m.useState(_g[0][0]),[o,a]=m.useState(Rg[0]),[s,u]=m.useState(!1),[l,f]=m.useState(!1);return c(z,{show:e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:g("form",{onSubmit:async p=>{p.preventDefault(),u(!0);try{await Ne("import-vehicles-data",{location:r,behaviour:o}),t()}catch(y){f(`Error: ${y==null?void 0:y.reason}`)}u(!1)},children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:n.importVehicles})}),g(z.Body,{children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:n.importFrom}),c(j.Select,{id:"location",value:r,onChange:p=>i(p.target.value),children:_g.map((p,y)=>c("option",{value:p[0],children:p[1]},y))})]}),g(j.Group,{children:[c(j.Label,{children:n.importBehaviour}),c(Gt,{className:"gap-3",children:Rg.map(p=>c(j.Check,{id:`behaviour-${p}`,type:"radio",name:"behaviour",label:p,checked:o===p,onChange:()=>a(p)},p))})]}),o==="Overwrite"&&g(Bo,{variant:"warning",className:"mt-4",children:[c("i",{className:"bi-exclamation-triangle me-2"}),c("span",{children:"Warning: Overwriting vehicles data will cause you to lose all existing vehicles, orders, display vehicles and sales."})]}),!!l&&g(Bo,{variant:"danger",className:"mt-4",children:[c("i",{className:"bi-exclamation-circle me-2"}),c("span",{children:l})]})]}),c(z.Footer,{children:c(ee,{type:"submit",disabled:s,children:s?`${n.importing}...`:n.import})})]})})},iL=({goBack:e})=>{const{event:t,config:n,locale:r}=ye(),i={all:"All Categories",...n.Categories||{}},o={[r.sortByNewest]:(I,$)=>de.fromMillis($.created_at)`${I.brand} ${I.model}`.localeCompare(`${$.brand} ${$.model}`),[r.sortByCheapest]:(I,$)=>I.price-$.price,[r.sortByMostExpensive]:(I,$)=>$.price-I.price},[a,s]=m.useState(""),[u,l]=m.useState(Object.keys(o)[0]),[f,h]=m.useState("all"),[p,y]=m.useState([]),[C,x]=m.useState([]),[N,w]=m.useState(!1),[E,b]=m.useState(!1);m.useEffect(()=>{y(t.vehicles||[])},[t.vehicles]),m.useEffect(()=>{x(p.filter(({brand:I,model:$})=>{const W=a.toLocaleLowerCase().split(" ").filter(Z=>Z).map(Z=>Z.trim());return W.filter(Z=>`${I} ${$}`.toLocaleLowerCase().includes(Z)).length===W.length}).filter(I=>f==="all"?!0:I.category===f).sort(o[u]))},[p,a,f,u]);const T=async I=>{y($=>[I,...$]),await Ne("add-vehicle",I)},R=async(I,$)=>{y(W=>W.map(Z=>Z.spawn_code===I?{...Z,...$}:Z)),await Ne("update-vehicle",$)},M=async I=>{y($=>$.filter(W=>W.spawn_code!==I)),await Ne("delete-vehicle",{spawn_code:I})},F=m.useMemo(()=>[{Header:r.vehicle,accessor:"vehicle"},{Header:r.spawnCode,accessor:"spawn_code"},{Header:r.dealerships,accessor:"dealers"},{Header:r.category,accessor:"category"},{Header:r.price,accessor:"price"},{Header:"",accessor:"x"}],[]),A=C;return g(Wt,{children:[g(z.Header,{className:"gap-3",closeButton:!0,children:[g(ee,{size:"sm",variant:"dark",onClick:()=>e(),children:[c("i",{className:"bi-arrow-left"})," ",r.back]}),c(z.Title,{as:"h5",children:r.vehiclesAdmin})]}),g(z.Body,{className:"p-0",children:[g(j.Group,{className:"d-flex p-3 search-and-filter",children:[g(Gt,{children:[c(Gt.Text,{children:c("i",{className:"bi-search"})}),c(j.Control,{type:"search",placeholder:r.search,value:a,onChange:I=>s(I.target.value)}),c(uh,{variant:"dark",title:c("i",{className:"bi-filter"}),id:"input-group-dropdown-2",align:"end",menuVariant:"dark",children:Object.keys(o).map((I,$)=>c(si.Item,{onClick:()=>l(I),active:u===I,children:I},$))}),c(j.Select,{style:{maxWidth:220},value:f,onChange:I=>h(I.target.value),children:Object.keys(i).map(I=>c("option",{value:I,children:i[I]},I))})]}),g(ee,{className:"flex-shrink-0 ms-3",variant:"outline-warning",onClick:()=>b(!0),children:[c("i",{className:"bi-box-arrow-right me-2"}),c("span",{children:r.importVehicles})]}),c(rL,{show:E,onHide:()=>b(!1)}),g(ee,{className:"flex-shrink-0 ms-3",onClick:()=>w(!0),children:[c("i",{className:"bi-plus me-2"}),c("span",{children:r.add})]}),c(FC,{type:"add",show:N,onHide:()=>w(!1),onSubmit:T})]}),c("div",{className:"p-3 pt-0",children:p.length?c(nL,{columns:F,data:A,onUpdateVehicle:R,onDeleteVehicle:M}):r.noVehicles})]}),g(z.Footer,{className:"d-flex justify-content-between",children:[g("div",{className:"text-muted",children:[p.length," ",r.vehiclesCount]}),!n.HideWatermark&&c(ta,{})]})]})},oL=()=>{const{event:e,onCloseModal:t,locale:n,config:r}=ye(),[i,o]=m.useState(!1);return g(z,{show:e.type==="vehiclesAdmin",onHide:()=>t(),size:"xl",centered:!0,backdrop:!1,scrollable:!0,className:`vehicles-admin-modal ${i?"":"small"}`,children:[!i&&g(Wt,{children:[c(z.Header,{className:"gap-3",closeButton:!0,children:c(z.Title,{as:"h5",children:n.admin})}),c(z.Body,{children:g(ur,{children:[c(Xe,{children:c(Ue,{className:"admin-nav-btn",bg:"darker",onClick:()=>o("dealers"),children:g(Ue.Body,{className:"text-center",children:[c("i",{className:"bi-coin h2"}),c("h5",{className:"mt-2 mb-0",children:n.dealerships})]})})}),c(Xe,{children:c(Ue,{className:"admin-nav-btn",bg:"darker",onClick:()=>o("vehicles"),children:g(Ue.Body,{className:"text-center",children:[c("i",{className:"bi-car-front h2"}),c("h5",{className:"mt-2 mb-0",children:n.vehicles})]})})})]})}),!r.HideWatermark&&g(z.Footer,{className:"d-flex justify-content-between",children:[c("div",{}),c(ta,{})]})]}),i==="dealers"&&c(JA,{goBack:()=>o(!1)}),i==="vehicles"&&c(iL,{goBack:()=>o(!1)})]})},aL=({show:e,onHide:t,vehicle:n})=>{const{config:r,locale:i}=ye(),o=async()=>{try{await Ne("finance-make-payment",{plate:n.plate,type:e,sendNUI:!0})}catch{}t()};return g(z,{show:!!e,onHide:()=>t(),style:{zIndex:9999},centered:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:i.makePayment})}),g(z.Body,{children:[`${i.earlyPaymentConfirmation} `,Le(e==="payment"?n.finance_data.recurring_payment:e==="pay-in-full"?n.finance_data.total-n.finance_data.paid:0,r),"?"]}),g(z.Footer,{children:[c(ee,{variant:"primary",onClick:o,children:i.yes}),c(ee,{variant:"secondary",onClick:()=>t(),children:i.no})]})]})},sL=({vehicle:e})=>{const{config:t,locale:n}=ye(),[r,i]=m.useState(!1),[o,a]=m.useState("");return m.useEffect(()=>{const s=()=>{e.finance_data.payment_failed&&e.finance_data.seconds_to_repo?(e.finance_data.seconds_to_repo-=10,e.finance_data.seconds_to_repo/3600>1.5?a(`${Math.round(e.finance_data.seconds_to_repo/3600)} ${n.hours||"hours(s)"}`):a(`${Math.round(e.finance_data.seconds_to_repo/60)} ${n.mins||"min(s)"}`)):e.finance_data.seconds_to_next_payment&&(e.finance_data.seconds_to_next_payment-=10,e.finance_data.seconds_to_next_payment/3600>1.5?a(`${Math.round(e.finance_data.seconds_to_next_payment/3600)} ${n.hours||"hours(s)"}`):a(`${Math.round(e.finance_data.seconds_to_next_payment/60)} ${n.mins||"min(s)"}`))};let u;return s(),u=setInterval(()=>s(),1e4),()=>clearInterval(u)},[e]),g(kl.Item,{eventKey:e.plate,children:[c(kl.Header,{children:g("div",{className:"d-flex flex-fill justify-content-between",children:[g("div",{children:[e.vehicleLabel,c(vn,{bg:"dark",text:"warning",className:"ms-2",style:{fontFamily:"monospace"},children:e.plate})]}),g("div",{children:[c(vn,{bg:e.finance_data.payment_failed?"danger":"success",className:"me-2",children:e.finance_data.payment_failed?n.failed:n.active}),c(vn,{bg:"secondary",className:"me-3",children:Le(e.finance_data.total-e.finance_data.paid,t)+` ${n.remaining}`})]})]})}),g(kl.Body,{children:[e.finance_data.payment_failed&&g(Bo,{variant:"danger",children:[c("i",{className:"bi-exclamation-triangle-fill me-2"}),n.repossessionWarning]}),g("div",{className:"d-flex justify-content-between",children:[g("div",{className:"flex-fill",children:[g("div",{className:"d-flex justify-content-between mb-2",children:[g("div",{children:[c("small",{children:n.recurringPayment}),c("h4",{className:"white",children:Le(e.finance_data.recurring_payment,t)})]}),g("div",{children:[c("small",{children:n.remainingBalance}),c("h4",{className:"white",children:Le(e.finance_data.total-e.finance_data.paid,t)})]}),g("div",{children:[c("small",{children:n.remainingPayments}),g("h4",{className:"white",children:[e.finance_data.payments_complete,g("small",{children:[" / ",e.finance_data.total_payments]})]})]})]}),c("div",{className:"mb-4",children:g("small",{children:[c("i",{className:"bi-clock me-2"}),`${n.paymentTakenEvery} `,g("strong",{children:[e.finance_data.payment_interval," ",n.hours]}),`. ${e.finance_data.payment_failed?n.vehicleRepossessed:n.nextPayment} `,c("strong",{children:o})]})})]}),g("div",{className:"d-flex flex-column ms-5",children:[c(ee,{size:"sm",className:"mb-2",variant:"primary",onClick:()=>i("payment"),children:n.makePayment}),c(ee,{size:"sm",variant:"outline-primary",onClick:()=>i("pay-in-full"),children:n.payInFull}),c(aL,{show:r,onHide:()=>i(!1),vehicle:e})]})]}),c("div",{className:"finance-container",children:g("div",{className:"finance-progress-bar",children:[c("div",{className:"finance-progress-bar-inner bg-success",style:{width:(e.finance_data.payments_complete-1)/(e.finance_data.total_payments-1)*100+"%"}}),c("div",{className:"points-container",children:Array(e.finance_data.total_payments).fill(!0).map((s,u)=>c("div",{className:"point",children:c("i",{className:`${u{var i;const{event:e,onCloseModal:t,locale:n,config:r}=ye();return g(z,{show:e.type==="manageFinance",onHide:()=>t(),size:"lg",centered:!0,backdrop:!1,scrollable:!0,children:[c(z.Header,{closeButton:!0,children:c(z.Title,{as:"h5",children:n.financedVehicles})}),c(z.Body,{className:"p-0 pb-2 pt-2",children:c(kl,{flush:!0,children:(i=e.vehicles)!=null&&i.length?e.vehicles.map((o,a)=>c(sL,{vehicle:o},a)):c("div",{className:"p-3",children:n.noFinancedVehicles})})}),!r.HideWatermark&&c(z.Footer,{children:c(ta,{})})]})},uL=()=>{var n;const{event:e,locale:t}=ye();return e.type!=="displayVehicleHud"?null:c(Ue,{bg:"black",className:`display-vehicle-hud ${e.vehiclePlaced?"vehicle-placed":""}`,children:g(Ue.Body,{children:[c("div",{className:`place-vehicle-prompt ${e.vehiclePlaced?"opacity-0":"opacity-1"} `,children:c("p",{className:"m-0",dangerouslySetInnerHTML:{__html:(n=t.placeVehiclePrompt)==null?void 0:n.replace("%{value}","ENTER")}})}),c("div",{className:`d-flex align-items-center justify-content-between vehicle-controls ${e.vehiclePlaced?"opacity-1":"opacity-0"}`,children:g("div",{className:"d-flex w-100 justify-content-between",children:[g("div",{className:"d-flex gap-5",children:[g("div",{className:"d-flex flex-column gap-1",children:[c("div",{className:"text-muted",children:"Movement"}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"W"})," Forward"]}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"S"})," Back"]})]}),g("div",{className:"d-flex flex-column gap-1",children:[c("div",{children:" "}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"A"})," Left"]}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"D"})," Right"]})]}),g("div",{className:"d-flex flex-column gap-1",children:[c("div",{className:"text-muted",children:"Rotate"}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"Q"})," Rotate left"]}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"E"})," Rotate right"]})]})]}),g("div",{className:"d-flex flex-column gap-1",children:[c("div",{className:"text-muted",children:" "}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"ENTER"})," Save"]}),g("div",{className:"d-flex align-items-center",children:[c("kbd",{children:"X"})," Cancel"]})]})]})})]})})};var DC={exports:{}};/*! + * Signature Pad v2.3.2 + * https://github.com/szimek/signature_pad + * + * Copyright 2017 Szymon Nowak + * Released under the MIT license + * + * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from: + * http://corner.squareup.com/2012/07/smoother-signatures.html + * + * Implementation of interpolation using cubic Bézier curves is taken from: + * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript + * + * Algorithm for approximated length of a Bézier curve is taken from: + * http://www.lemoda.net/maths/bezier-length/index.html + * + */function qi(e,t,n){this.x=e,this.y=t,this.time=n||new Date().getTime()}qi.prototype.velocityFrom=function(e){return this.time!==e.time?this.distanceTo(e)/(this.time-e.time):1};qi.prototype.distanceTo=function(e){return Math.sqrt(Math.pow(this.x-e.x,2)+Math.pow(this.y-e.y,2))};qi.prototype.equals=function(e){return this.x===e.x&&this.y===e.y&&this.time===e.time};function Zh(e,t,n,r){this.startPoint=e,this.control1=t,this.control2=n,this.endPoint=r}Zh.prototype.length=function(){for(var e=10,t=0,n=void 0,r=void 0,i=0;i<=e;i+=1){var o=i/e,a=this._point(o,this.startPoint.x,this.control1.x,this.control2.x,this.endPoint.x),s=this._point(o,this.startPoint.y,this.control1.y,this.control2.y,this.endPoint.y);if(i>0){var u=a-n,l=s-r;t+=Math.sqrt(u*u+l*l)}n=a,r=s}return t};Zh.prototype._point=function(e,t,n,r,i){return t*(1-e)*(1-e)*(1-e)+3*n*(1-e)*(1-e)*e+3*r*(1-e)*e*e+i*e*e*e};function cL(e,t,n){var r,i,o,a=null,s=0;n||(n={});var u=function(){s=n.leading===!1?0:Date.now(),a=null,o=e.apply(r,i),a||(r=i=null)};return function(){var l=Date.now();!s&&n.leading===!1&&(s=l);var f=t-(l-s);return r=this,i=arguments,f<=0||f>t?(a&&(clearTimeout(a),a=null),s=l,o=e.apply(r,i),a||(r=i=null)):!a&&n.trailing!==!1&&(a=setTimeout(u,f)),o}}function et(e,t){var n=this,r=t||{};this.velocityFilterWeight=r.velocityFilterWeight||.7,this.minWidth=r.minWidth||.5,this.maxWidth=r.maxWidth||2.5,this.throttle="throttle"in r?r.throttle:16,this.minDistance="minDistance"in r?r.minDistance:5,this.throttle?this._strokeMoveUpdate=cL(et.prototype._strokeUpdate,this.throttle):this._strokeMoveUpdate=et.prototype._strokeUpdate,this.dotSize=r.dotSize||function(){return(this.minWidth+this.maxWidth)/2},this.penColor=r.penColor||"black",this.backgroundColor=r.backgroundColor||"rgba(0,0,0,0)",this.onBegin=r.onBegin,this.onEnd=r.onEnd,this._canvas=e,this._ctx=e.getContext("2d"),this.clear(),this._handleMouseDown=function(i){i.which===1&&(n._mouseButtonDown=!0,n._strokeBegin(i))},this._handleMouseMove=function(i){n._mouseButtonDown&&n._strokeMoveUpdate(i)},this._handleMouseUp=function(i){i.which===1&&n._mouseButtonDown&&(n._mouseButtonDown=!1,n._strokeEnd(i))},this._handleTouchStart=function(i){if(i.targetTouches.length===1){var o=i.changedTouches[0];n._strokeBegin(o)}},this._handleTouchMove=function(i){i.preventDefault();var o=i.targetTouches[0];n._strokeMoveUpdate(o)},this._handleTouchEnd=function(i){var o=i.target===n._canvas;o&&(i.preventDefault(),n._strokeEnd(i))},this.on()}et.prototype.clear=function(){var e=this._ctx,t=this._canvas;e.fillStyle=this.backgroundColor,e.clearRect(0,0,t.width,t.height),e.fillRect(0,0,t.width,t.height),this._data=[],this._reset(),this._isEmpty=!0};et.prototype.fromDataURL=function(e){var t=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=new Image,i=n.ratio||window.devicePixelRatio||1,o=n.width||this._canvas.width/i,a=n.height||this._canvas.height/i;this._reset(),r.src=e,r.onload=function(){t._ctx.drawImage(r,0,0,o,a)},this._isEmpty=!1};et.prototype.toDataURL=function(e){var t;switch(e){case"image/svg+xml":return this._toSVG();default:for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i2,n=this.points[0];if(!t&&n&&this._drawDot(n),n){var r=this._data[this._data.length-1],i=r[r.length-1];n.equals(i)||r.push({x:n.x,y:n.y,time:n.time,color:this.penColor})}typeof this.onEnd=="function"&&this.onEnd(e)};et.prototype._handleMouseEvents=function(){this._mouseButtonDown=!1,this._canvas.addEventListener("mousedown",this._handleMouseDown),this._canvas.addEventListener("mousemove",this._handleMouseMove),document.addEventListener("mouseup",this._handleMouseUp)};et.prototype._handleTouchEvents=function(){this._canvas.style.msTouchAction="none",this._canvas.style.touchAction="none",this._canvas.addEventListener("touchstart",this._handleTouchStart),this._canvas.addEventListener("touchmove",this._handleTouchMove),this._canvas.addEventListener("touchend",this._handleTouchEnd)};et.prototype._reset=function(){this.points=[],this._lastVelocity=0,this._lastWidth=(this.minWidth+this.maxWidth)/2,this._ctx.fillStyle=this.penColor};et.prototype._createPoint=function(e,t,n){var r=this._canvas.getBoundingClientRect();return new qi(e-r.left,t-r.top,n||new Date().getTime())};et.prototype._addPoint=function(e){var t=this.points,n=void 0;if(t.push(e),t.length>2){t.length===3&&t.unshift(t[0]),n=this._calculateCurveControlPoints(t[0],t[1],t[2]);var r=n.c2;n=this._calculateCurveControlPoints(t[1],t[2],t[3]);var i=n.c1,o=new Zh(t[1],r,i,t[2]),a=this._calculateCurveWidths(o);return t.shift(),{curve:o,widths:a}}return{}};et.prototype._calculateCurveControlPoints=function(e,t,n){var r=e.x-t.x,i=e.y-t.y,o=t.x-n.x,a=t.y-n.y,s={x:(e.x+t.x)/2,y:(e.y+t.y)/2},u={x:(t.x+n.x)/2,y:(t.y+n.y)/2},l=Math.sqrt(r*r+i*i),f=Math.sqrt(o*o+a*a),h=s.x-u.x,p=s.y-u.y,y=f/(l+f),C={x:u.x+h*y,y:u.y+p*y},x=t.x-C.x,N=t.y-C.y;return{c1:new qi(s.x+x,s.y+N),c2:new qi(u.x+x,u.y+N)}};et.prototype._calculateCurveWidths=function(e){var t=e.startPoint,n=e.endPoint,r={start:null,end:null},i=this.velocityFilterWeight*n.velocityFrom(t)+(1-this.velocityFilterWeight)*this._lastVelocity,o=this._strokeWidth(i);return r.start=this._lastWidth,r.end=o,this._lastVelocity=i,this._lastWidth=o,r};et.prototype._strokeWidth=function(e){return Math.max(this.maxWidth/(e+1),this.minWidth)};et.prototype._drawPoint=function(e,t,n){var r=this._ctx;r.moveTo(e,t),r.arc(e,t,n,0,2*Math.PI,!1),this._isEmpty=!1};et.prototype._drawCurve=function(e,t,n){var r=this._ctx,i=n-t,o=Math.floor(e.length());r.beginPath();for(var a=0;a1)for(var o=0;o",h=u.innerHTML;if(h===void 0){var p=document.createElement("dummy"),y=u.childNodes;p.innerHTML="";for(var C=0;C-1;x+=y)for(var N=0;N-1;x+=y)for(var N=0;N=0||Object.prototype.hasOwnProperty.call(I,Z)&&(W[Z]=I[Z]);return W}function h(I,$){if(!(I instanceof $))throw new TypeError("Cannot call a class as a function")}function p(I,$){if(!I)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!$||typeof $!="object"&&typeof $!="function"?I:$}function y(I,$){if(typeof $!="function"&&$!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof $);I.prototype=Object.create($&&$.prototype,{constructor:{value:I,enumerable:!1,writable:!0,configurable:!0}}),$&&(Object.setPrototypeOf?Object.setPrototypeOf(I,$):I.__proto__=$)}Object.defineProperty(s,"__esModule",{value:!0});var C=Object.assign||function(I){for(var $=1;${var E,b;const{event:e,setEvent:t,onCloseModal:n,locale:r,config:i}=ye(),[o,a]=m.useState(hd),[s,u]=m.useState(hd[0]),[l,f]=m.useState(!1),[h,p]=m.useState(!1);m.useEffect(()=>{p(!1)},[e.type]),m.useEffect(()=>{var R,M,F;const T=(F=(M=(R=e.config)==null?void 0:R.DealershipLocations)==null?void 0:M[e.dealershipId])==null?void 0:F.paymentOptions;T?(a(T),u(T[0])):u(hd[0])},[e.config,e.dealershipId]);const y=()=>{var R;let T=e.vehiclePrice;return e.financed&&(T=e.vehiclePrice*(1+i.FinanceInterest)*e.downPayment),(((R=e.playerBalances)==null?void 0:R[s])||0)>=T},C=()=>{const T=e.vehiclePrice*(1+i.FinanceInterest);return Math.round((T-T*e.downPayment)/e.noOfPayments)},x=async()=>{f(!0);try{await Ne("purchase-vehicle",{purchaseType:"personal",paymentMethod:s,dealership:e.dealershipId,vehicle:e.vehicleSpawnCode,color:e.color,finance:!!e.financed,directSaleUuid:e.uuid})}catch{n(),f(!1)}await Ne("accept-direct-sale-request",e.uuid),f(!1),n()},N=async()=>{f(!0),await Ne("deny-direct-sale-request",e.uuid),f(!1),n()},w=async()=>{try{const T=await Ne("get-player-balances",e.dealershipId);if(!T)return;t(R=>({...R,playerBalances:T}))}catch{console.error("Could not refresh balances.")}};return g(z,{show:e.type==="show-direct-sale-request",centered:!0,backdrop:!1,scrollable:!0,children:[c(z.Header,{className:"gap-3",children:g(z.Title,{as:"h5",children:[c("i",{className:"bi-car-front me-2"}),r.purchaseRequest]})}),g(z.Body,{children:[g(ur,{children:[g(Xe,{sm:12,children:[c(j.Label,{className:"mb-1",children:r.dealer}),g("p",{className:"text-white",children:[e.dealerName," (",e.dealershipLabel,")"]})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.vehicle}),c("p",{className:"text-white",children:e.vehicleLabel})]}),e.color&&i.VehicleColourOptions&&g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.colour}),c("p",{className:"text-white",children:(b=(E=i.VehicleColourOptions)==null?void 0:E[e.color-1])==null?void 0:b.label})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.payToday}),c("p",{className:"text-white",children:Le(e.financed?e.vehiclePrice*(1+i.FinanceInterest)*e.downPayment:e.vehiclePrice,i)})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.financed}),g("p",{className:"text-white",children:[e.financed?r.yes:r.no,e.financed?` (${i.FinanceInterest*100}% ${r.interest})`:""]})]}),e.financed&&g(Wt,{children:[g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.payments}),g("p",{className:"text-white",children:[e.noOfPayments," ",r.paymentsOf," ",Le(C(),i)]})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.paymentTakenEvery}),g("p",{className:"text-white",children:[i.FinancePaymentInterval," ",r.hours]})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:r.totalPayable}),c("p",{className:"text-white mb-2",children:Le(e.vehiclePrice*(1+i.FinanceInterest),i)})]})]})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:r.paymentSource}),c("div",{children:o.map((T,R)=>{var F;if(T==="cash"&&e.financed)return null;let M=0;return e.playerBalances&&(M=((F=e.playerBalances)==null?void 0:F[T])||0),c(j.Check,{label:g("div",{className:"d-flex align-items-center",children:[c("span",{className:"me-2",children:r[T]||T}),c(vn,{bg:"secondary",text:"dark",children:Le(M,i)}),c(ee,{variant:"dark",onClick:w,size:"sm",className:"ms-2 p-0 pe-1 ps-1",children:c("i",{className:"bi-arrow-clockwise"})})]}),name:"payment-method",type:"radio",id:`payment-method-${T}`,checked:s===T,onChange:A=>u(T)},R)})})]}),c(j.Label,{className:"",children:r.signHere}),c("div",{style:{border:"2px dashed #777",borderRadius:7,width:"min-content"},children:c(mL,{penColor:"white",onEnd:()=>p(!0),canvasProps:{width:350,height:60}})})]}),g(z.Footer,{className:"d-flex justify-content-between",children:[c(ee,{variant:"primary",onClick:x,disabled:!h||!y()||l,children:h?y()?"Accept & Purchase":r.notEnoughMoney:r.signFirstError}),c(ee,{variant:"danger",onClick:N,disabled:l,children:r.denyRequest})]})]})},yL=({onSelectVehicle:e})=>{var C;const{event:t,locale:n,config:r}=ye(),i=m.useRef(null),[o,a]=m.useState(""),[s,u]=m.useState(!1),[l,f]=m.useState([]),[h,p]=m.useState([]);return m.useEffect(()=>{var x,N;o.length>0?f(t.vehicles):f(s?(x=t.vehicles)==null?void 0:x.filter(w=>s&&w.category===s):[]),(N=i.current)==null||N.scrollTo(0,0)},[o.length>0,s]),m.useEffect(()=>{p(l.filter(({brand:x,model:N,spawn_code:w})=>{const E=o.toLocaleLowerCase().split(" ").filter(b=>b).map(b=>b.trim());return E.filter(b=>`${x} ${N} ${w}`.toLocaleLowerCase().includes(b)).length===E.length}))},[l,o]),g("div",{ref:i,children:[c("div",{className:"mb-3",children:g(Gt,{children:[s&&!o&&g(ee,{onClick:()=>{u(!1)},size:"sm",variant:"outline-secondary",children:[c("i",{className:"bi-arrow-left"})," ",n.allCategories]}),c(j.Control,{type:"search",placeholder:n.search,value:o,onChange:x=>a(x.target.value)})]})}),!s&&!o?c("div",{children:(C=t.categories)==null?void 0:C.map(x=>g(Ue,{className:"showroom-category-btn mb-3",bg:"darker",onClick:()=>u(x),children:[c(Ue.Body,{className:"h5 mb-0 text-white",children:r.Categories[x]}),c(Ue.Footer,{children:g("small",{className:"text-muted",children:[t.vehicles.filter(N=>N.category===x).length," ",n.vehiclesCount]})})]}))}):c("div",{children:h.length?h.map((x,N)=>c(Ue,{className:"mb-3",bg:"darker",children:c(Ue.Body,{className:"p-0",children:g("button",{className:"showroom-vehicle",onClick:()=>e(x),disabled:x.stock==0,children:[g("div",{className:"showroom-vehicle-name-stock",children:[g("div",{children:[c("small",{className:"text-muted",children:x.brand}),c("p",{children:x.model})]}),c(vn,{bg:x.stock>0?"success":"danger",text:"white",pill:!0,children:x.stock>0?n.inStock:n.outOfStock})]}),c("div",{className:"d-flex align-items-center justify-content-between",children:c("h4",{children:Le(x.price,r)})})]})})})):n.noVehicles})]})},gL=({player:e,setPlayer:t})=>{const{locale:n,event:r}=ye(),[i,o]=m.useState(e||""),a=r.nearbyPlayers||[];return g("div",{children:[g(j.Group,{children:[c(j.Label,{children:n.nearbyPlayers}),g(j.Select,{value:i,onChange:s=>o(s.target.value),children:[c("option",{value:"",disabled:!0,children:a.length?n.selectPlayer:n.noPlayersNearby}),a.map(({id:s,name:u})=>c("option",{value:s,children:u},s))]})]}),c("div",{className:"mt-3",children:c(ee,{onClick:()=>t(i),disabled:!i,children:n.next})})]})},wL=({vehicle:e,player:t})=>{const{locale:n,onCloseModal:r,event:i,config:o}=ye(),[a,s]=m.useState(1),[u,l]=m.useState(!1),[f,h]=m.useState(o.FinancePayments||12),[p,y]=m.useState(o.FinanceDownPayment||.1),C=()=>{const N=e.price*(1+o.FinanceInterest);return(N-N*(p||0))/(f||1)};return g("form",{onSubmit:async N=>{N.preventDefault(),await Ne("send-direct-sale-request",{playerId:parseInt(t),model:e.spawn_code,colour:a,finance:u,financePayments:f,financeDownPayment:p}),r()},children:[g(j.Group,{className:"mb-3",children:[c(j.Label,{children:n.colour}),c(j.Select,{value:a,onChange:N=>s(parseInt(N.target.value||"1")),children:(o.VehicleColourOptions||[]).map(({label:N},w)=>c("option",{value:w+1,children:N}))})]}),g(j.Group,{className:"mb-3",children:[c(j.Label,{children:n.financing}),c(j.Check,{label:n.payInFull,name:"payment-type",type:"radio",id:"payment-infull",checked:!u,onChange:N=>l(!N.target.checked)}),i.enableFinance&&c(j.Check,{label:c("div",{className:"d-flex align-items-center",children:c("span",{className:"me-2",children:n.financed})}),name:"payment-type",type:"radio",id:"payment-finance",checked:u,onChange:N=>l(N.target.checked)})]}),u&&g(ur,{className:"mb-3",children:[c(Xe,{children:g(j.Group,{children:[c(j.Label,{children:n.financePayments}),c(j.Control,{type:"number",id:"FinancePayments",value:f,min:1,max:100,onChange:N=>h(N.target.value?parseInt(N.target.value):""),required:!0})]})}),c(Xe,{children:g(j.Group,{children:[c(j.Label,{children:n.initialPayment}),g(Gt,{children:[c(j.Control,{type:"number",id:"FinanceDownPayment",value:p?Math.round(p*100):"",onChange:N=>y(N.target.value?Math.min(1,parseInt(N.target.value)/100):""),min:0,max:99,required:!0}),c(Gt.Text,{children:"%"})]})]})})]}),c(Ue,{className:"mb-3",border:"primary",children:c(Ue.Body,{children:g(ur,{children:[g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:n.payToday}),c("p",{className:"text-white",children:Le(u?e.price*(1+o.FinanceInterest)*(p||0):e.price,o)})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:n.financed}),g("p",{className:"text-white",children:[u?n.yes:n.no,u?` (${o.FinanceInterest*100}% ${n.interest})`:""]})]}),u&&g(Wt,{children:[g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:n.payments}),g("p",{className:"text-white",children:[f||1,c("small",{children:" x "}),Le(C(),o)]})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:n.paymentTakenEvery}),g("p",{className:"text-white",children:[o.FinancePaymentInterval," ",n.hours]})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:n.totalPayable}),c("p",{className:"text-white mb-2",children:Le(e.price*(1+o.FinanceInterest),o)})]})]}),g(Xe,{sm:6,children:[c(j.Label,{className:"mb-1",children:n.commission}),g("p",{className:"text-white mb-2",children:[Le(e.price*(u?1+o.FinanceInterest:1)*i.commission||.1,o)," ","(",i.commission*100,"%)"]})]})]})})}),c(ee,{type:"submit",variant:"primary",children:n.sendRequest})]})},SL=()=>{const{event:e,onCloseModal:t,locale:n}=ye(),[r,i]=m.useState(),[o,a]=m.useState("");return m.useEffect(()=>{i(void 0),a("")},[e.type]),g(z,{show:e.type==="showDSSellVehicle",onHide:()=>t(),centered:!0,backdrop:!1,scrollable:!0,children:[c(z.Header,{className:"gap-3",closeButton:!0,children:g(z.Title,{as:"h5",children:[c("i",{className:"bi-car-front me-2"}),n.sellVehicle]})}),c(z.Body,{style:{maxHeight:"80vh"},children:r?o?g("div",{children:[g(hr,{children:[c(hr.Item,{onClick:()=>i(void 0),children:n.selectVehicle}),c(hr.Item,{onClick:()=>a(""),children:n.selectPlayer}),c(hr.Item,{active:!0,children:n.vehicleTerms})]}),c(wL,{vehicle:r,player:o})]}):g("div",{children:[g(hr,{children:[c(hr.Item,{onClick:()=>i(void 0),children:n.selectVehicle}),c(hr.Item,{active:!0,children:n.selectPlayer})]}),c(gL,{player:o,setPlayer:a})]}):g("div",{children:[c(hr,{children:c(hr.Item,{active:!0,children:n.selectVehicle})}),c(yL,{onSelectVehicle:i})]})})]})},xL=()=>{var s,u,l;const{event:e,onCloseModal:t,locale:n}=ye(),[r,i]=m.useState(!1),o=async()=>{i(!0),await Ne("accept-hire-request",e.data),i(!1),t()},a=async()=>{i(!0),await Ne("deny-hire-request",{requesterId:e.data.requesterId}),i(!1),t()};return g(z,{show:e.type==="showConfirmEmployment",centered:!0,backdrop:!1,children:[c(z.Header,{className:"gap-3",children:c(z.Title,{as:"h5",children:n.employmentRequest})}),g(z.Body,{children:[c("p",{children:(u=n.jobOfferDescription)==null?void 0:u.replace("%{value}",(s=e.data)==null?void 0:s.dealershipId)}),g("p",{className:"mb-0",children:[n.role,": ",n[`${(l=e.data)==null?void 0:l.role}Role`]]})]}),g(z.Footer,{className:"d-flex justify-content-between",children:[c(ee,{variant:"primary",onClick:o,disabled:r,children:n.accept}),c(ee,{variant:"dark",onClick:a,disabled:r,children:n.denyRequest})]})]})},CL=()=>{const{event:e,onCloseModal:t,config:n,locale:r}=ye(),[i,o]=m.useState(!1),a=async()=>{o(!0),await Ne("sell-vehicle-price-accepted",e),t(),o(!1)},s=async()=>{t()};return g(z,{show:e.type==="sell-vehicle-to-dealer",centered:!0,backdrop:!1,children:[c(z.Header,{className:"gap-3",children:c(z.Title,{as:"h5",children:r.sellVehicle})}),g(z.Body,{children:[c("p",{children:r.dealershipWantsYourVehicle}),g("p",{className:"mb-0",children:[r.purchasePrice,c("strong",{children:Le(e.value,n)})]})]}),g(z.Footer,{className:"d-flex justify-content-between",children:[c(ee,{variant:"success",onClick:a,disabled:i,children:r.accept}),c(ee,{variant:"dark",onClick:s,children:r.denyRequest})]})]})};function bL(){return c("div",{className:"",children:g(M_,{children:[!1,c(z_,{}),c(qA,{}),c(KA,{}),c(oL,{}),c(lL,{}),c(uL,{}),c(vL,{}),c(SL,{}),c(xL,{}),c(CL,{})]})})}md.createRoot(document.getElementById("root")).render(c(bL,{}))});export default EL(); diff --git a/resources/[carscripts]/jg-dealerships/web/dist/assets/index-a42dd07c.css b/resources/[carscripts]/jg-dealerships/web/dist/assets/index-a42dd07c.css new file mode 100644 index 000000000..62228e9ba --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/web/dist/assets/index-a42dd07c.css @@ -0,0 +1,5 @@ +@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap";@import"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.3/font/bootstrap-icons.css";/*! +* Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) +* Copyright 2011-2022 The Bootstrap Authors +* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) +*/:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text: #0a58ca;--bs-secondary-text: #6c757d;--bs-success-text: #146c43;--bs-info-text: #087990;--bs-warning-text: #997404;--bs-danger-text: #b02a37;--bs-light-text: #6c757d;--bs-dark-text: #495057;--bs-primary-bg-subtle: #cfe2ff;--bs-secondary-bg-subtle: #f8f9fa;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #9ec5fe;--bs-secondary-border-subtle: #e9ecef;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 33, 37, 41;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient( 180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0) );--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, .75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, .5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: #0a58ca;--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #d63384;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-2xl: 2rem;--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(var(--bs-body-color-rgb), .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(var(--bs-body-color-rgb), .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), .075);--bs-emphasis-color: #000;--bs-form-control-bg: var(--bs-body-bg);--bs-form-control-disabled-bg: var(--bs-secondary-bg);--bs-highlight-bg: #fff3cd;--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}[data-bs-theme=dark]{--bs-body-color: #adb5bd;--bs-body-color-rgb: 173, 181, 189;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #f8f9fa;--bs-emphasis-color-rgb: 248, 249, 250;--bs-secondary-color: rgba(173, 181, 189, .75);--bs-secondary-color-rgb: 173, 181, 189;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(173, 181, 189, .5);--bs-tertiary-color-rgb: 173, 181, 189;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-emphasis-color: #fff;--bs-primary-text: #6ea8fe;--bs-secondary-text: #dee2e6;--bs-success-text: #75b798;--bs-info-text: #6edff6;--bs-warning-text: #ffda6a;--bs-danger-text: #ea868f;--bs-light-text: #f8f9fa;--bs-dark-text: #dee2e6;--bs-primary-bg-subtle: #031633;--bs-secondary-bg-subtle: #212529;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #084298;--bs-secondary-border-subtle: #495057;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #055160;--bs-warning-border-subtle: #664d03;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: #fff;--bs-link-color: #6ea8fe;--bs-link-hover-color: #9ec5fe;--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 158, 197, 254;--bs-code-color: #e685b5;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, .15)}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color, inherit)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container,.container-sm{max-width:540px}}@media (min-width: 768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width: 992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width: 1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width: 1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color: var(--bs-body-color);--bs-table-bg: transparent;--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color: #000;--bs-table-bg: #cfe2ff;--bs-table-border-color: #bacbe6;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #cbccce;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #bcd0c7;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #e6dbb9;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #dfc2c4;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: #373b3e;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-form-control-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-form-control-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-form-control-disabled-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-form-control-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-form-control-disabled-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-form-control-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating:before:not(.form-control:disabled){position:absolute;top:var(--bs-border-width);left:var(--bs-border-width);width:calc(100% - (1.125em + .5625rem));height:1.875em;content:"";background-color:var(--bs-form-control-bg);border-radius:.375rem}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label{color:#6c757d}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-success-text)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-success);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-success);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-success)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-success);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-success)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-success-text)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-success-text)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-danger-text)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-danger);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-danger);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-danger)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-danger);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-danger)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-danger-text)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-danger-text)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: .375rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: .5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: .25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: .375rem;--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(.375rem - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 .5rem 1rem rgba(var(--bs-body-color-rgb), .15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: .375rem;--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc( var(--bs-border-radius) - (var(--bs-border-width)) );--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc( var(--bs-border-radius) - (var(--bs-border-width)) );--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230a58ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #86b7fe;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: .5rem}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: .25rem}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: .375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: .375rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text)}.alert-success{--bs-alert-color: var(--bs-success-text);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text)}.alert-info{--bs-alert-color: var(--bs-info-text);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text)}.alert-warning{--bs-alert-color: var(--bs-warning-text);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text)}.alert-danger{--bs-alert-color: var(--bs-danger-text);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text)}.alert-light{--bs-alert-color: var(--bs-light-text);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text)}.alert-dark{--bs-alert-color: var(--bs-dark-text);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle)}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle)}.list-group-item-primary.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-primary-text);--bs-list-group-active-border-color: var(--bs-primary-text)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle)}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle)}.list-group-item-secondary.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-secondary-text);--bs-list-group-active-border-color: var(--bs-secondary-text)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle)}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle)}.list-group-item-success.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-success-text);--bs-list-group-active-border-color: var(--bs-success-text)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle)}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle)}.list-group-item-info.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-info-text);--bs-list-group-active-border-color: var(--bs-info-text)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle)}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle)}.list-group-item-warning.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-warning-text);--bs-list-group-active-border-color: var(--bs-warning-text)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle)}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle)}.list-group-item-danger.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-danger-text);--bs-list-group-active-border-color: var(--bs-danger-text)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle)}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle)}.list-group-item-light.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-light-text);--bs-list-group-active-border-color: var(--bs-light-text)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle)}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle)}.list-group-item-dark.list-group-item-action:active{--bs-list-group-active-color: var(--bs-emphasis-color);--bs-list-group-active-bg: var(--bs-dark-text);--bs-list-group-active-border-color: var(--bs-dark-text)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: 0 .125rem .25rem rgba(var(--bs-body-color-rgb), .075);--bs-modal-inner-border-radius: calc( var(--bs-border-radius-lg) - (var(--bs-border-width)) );--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 .5rem 1rem rgba(var(--bs-body-color-rgb), .15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc( var(--bs-border-radius-lg) - var(--bs-border-width) );--bs-popover-box-shadow: 0 .5rem 1rem rgba(var(--bs-body-color-rgb), .15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: ;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 .125rem .25rem rgba(var(--bs-body-color-rgb), .075);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width: 575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width: 767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width: 991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width: 1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width: 1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity, 1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(var(--bs-body-color-rgb),.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(var(--bs-body-color-rgb),.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(var(--bs-body-color-rgb),.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{--bs-border-width: 1px}.border-2{--bs-border-width: 2px}.border-3{--bs-border-width: 3px}.border-4{--bs-border-width: 4px}.border-5{--bs-border-width: 5px}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text)!important}.text-secondary-emphasis{color:var(--bs-secondary-text)!important}.text-success-emphasis{color:var(--bs-success-text)!important}.text-info-emphasis{color:var(--bs-info-text)!important}.text-warning-emphasis{color:var(--bs-warning-text)!important}.text-danger-emphasis{color:var(--bs-danger-text)!important}.text-light-emphasis{color:var(--bs-light-text)!important}.text-dark-emphasis{color:var(--bs-dark-text)!important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-emphasis{--bs-bg-opacity: 1;background-color:rgba(var(--bs-emphasis-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-2xl)!important;border-top-right-radius:var(--bs-border-radius-2xl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-2xl)!important;border-bottom-right-radius:var(--bs-border-radius-2xl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-2xl)!important;border-bottom-left-radius:var(--bs-border-radius-2xl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-2xl)!important;border-top-left-radius:var(--bs-border-radius-2xl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}body{font-family:Plus Jakarta Sans,sans-serif!important;background:none!important;-webkit-user-select:none;user-select:none}body,#root,.dev-bg{overflow:hidden!important}.dev-bg{width:100vw;height:100vh;background:black;background-size:cover;background-position:50% 50%;position:absolute;overflow:none!important}.dev-menu{position:absolute}::-webkit-scrollbar{width:15px;height:15px}::-webkit-scrollbar-track{background-color:var(--bs-dark-border-subtle)}::-webkit-scrollbar-track-piece{background-color:var(--bs-dark)}::-webkit-scrollbar-thumb{height:50px;background-color:var(--bs-dark-border-subtle);border-radius:100px;border:4px solid var(--bs-dark)}::-webkit-scrollbar-corner{background-color:var(--bs-dark-border-subtle)}::-webkit-resizer{background-color:var(--bs-dark-border-subtle)}.modal-content{border-radius:10px!important}.modal-header{border-radius:10px 10px 0 0!important}.modal-footer{border-radius:0 0 10px 10px!important}.modal-backdrop.show{z-index:9999!important}.form-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#999!important}.vehicle-image{width:80px;height:40px;margin-top:-22px;background-size:contain;background-position:50% 50%;background-repeat:no-repeat}.modal-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vehicle-showroom{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end;width:100vw;height:100vh;padding:3rem}.showroom-column{width:330px;height:100%}.showroom-column .modal-dialog{width:100%;flex-shrink:0;margin:0;height:100%;max-width:none}.showroom-column-vehicles-list{height:100%;display:flex;flex-shrink:0;flex-direction:column}.leave-showroom-btn{margin-bottom:22px;font-size:1.1rem;height:48px;border-radius:10px!important;z-index:999999}.vehicles-list-modal{display:block!important;height:calc(100% - 70px)!important}.vehicles-list-modal .modal-content{height:100%}.showroom-back-btn{position:absolute;left:16px;background:inherit;background:none;border:none;outline:none;color:#fff;font-size:1.25rem;line-height:1rem}.showroom-back-btn:disabled{opacity:.25}.showroom-modal-body{padding:0}.search-and-filter{width:100%;position:sticky;top:0;z-index:99;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.search-and-filter .dropdown-toggle{border:var(--bs-border-width) solid var(--bs-border-color)}.showroom-category-btn{cursor:pointer;transition:.1s ease-in-out}.showroom-category-btn:hover{border:1px solid #999}.showroom-vehicle{display:block;width:100%;background:none;border:0;color:inherit;text-align:left;padding:1rem;border-bottom:1px solid #444;transition:.1s ease-in-out}.showroom-vehicle.active{background:var(--bs-gray-800)}.showroom-vehicle:is(button){cursor:pointer}.showroom-vehicle:is(button):hover{background-color:var(--bs-gray-800)}.showroom-vehicle:disabled{opacity:.33;cursor:not-allowed}.showroom-vehicle:disabled:hover{border:inherit;background:inherit}.showroom-vehicle:last-child{border:none}.showroom-vehicle h4{margin:0}.showroom-vehicle-name-stock{display:flex;justify-content:space-between;align-items:start;width:100%;gap:10px}.showroom-vehicle-name-stock div,.showroom-vehicle-name-stock p,.showroom-vehicle-name-stock small{flex-grow:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vehicle-info-modal{display:block!important}.vehicle-model-brand-stock{display:flex;flex-direction:column;align-items:flex-start}.vehicle-model-brand-stock *{max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vehicle-stats{margin-bottom:30px}.vehicle-stat{margin-bottom:10px}.vehicle-pricing{text-align:center;margin:10px 0 20px}.vehicle-pricing h3{font-weight:600}.vehicle-financing-text{font-size:.9rem;line-height:20px}.vehicle-colors{width:100%;display:grid;grid-template-columns:1fr 1fr 1fr 1fr}.vehicle-colors .color{margin:10px auto;width:55px;height:55px;border-radius:100%;border:5px solid var(--bs-modal-bg)}.vehicle-colors .color.active{border-color:var(--bs-primary)}.vehicle-purchase-modal{width:100%}.vehicle-purchase-modal button{width:50%}.financing-breakdown-table{width:100%}.financing-breakdown-table td,.financing-breakdown-table tr{border:1px solid #555}.financing-breakdown-table td{padding:10px}.loading-model{position:absolute;display:flex;justify-content:center;align-items:center;width:100%;height:100%;left:0;top:0;z-index:99999}.admin-navbar li>button{white-space:nowrap}.dealership-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:0!important;position:sticky;top:0;z-index:99999}.admin-navbar{position:sticky;top:41.5px;z-index:99999}.bg-darker{background:var(--bs-dark-bg-subtle)}.bootstrap-table td,.bootstrap-table th{vertical-align:middle}.dealership-search-and-filter{width:100%}.dealership-search-and-filter .dropdown-toggle{border:var(--bs-border-width) solid var(--bs-border-color)}.vehicle-selector-dropdown .dropdown-menu{width:100%;max-height:300px;overflow-x:hidden;padding:0!important}.vehicle-selector-dropdown .vehicle-select-search{width:100%;position:sticky;top:0;padding:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.test-drive-hud{position:absolute;left:50%;transform:translate(-50%);top:65px;width:450px}.test-drive-hud .test-drive-notice{margin-right:25px;padding-right:25px;border-right:1px solid #444}.test-drive-hud .seconds-remaining{display:flex;flex-direction:column;align-items:center}.admin-nav-btn{cursor:pointer}.admin-nav-btn:hover{border:1px solid #999;transition:.2s ease-in-out}.admin-vehicle-row-name{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-no-vehicles{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.vehicles-admin-modal .modal-dialog{max-width:1400px}.vehicles-admin-modal.small .modal-dialog{max-width:600px}.accordion-button{box-shadow:none!important}.accordion-button:not(.collapsed){background-color:var(--bs-tertiary-bg)!important;color:#fff!important}.accordion-item{border:none!important}.finance-container{height:20px}.finance-progress-bar{margin:5px;position:relative;width:calc(100% - 5px);height:4px;background:#555}.finance-progress-bar-inner{position:absolute;left:0;max-width:100%;height:4px}.finance-progress-bar .points-container{display:flex;justify-content:space-between}.finance-progress-bar .point{position:relative;width:18px;height:18px;background-color:#fff;border-radius:100%;margin-top:-6px;margin-left:-3px;z-index:1}.finance-progress-bar .point i{position:absolute;top:-1px;left:-1px;line-height:0;font-size:20px;color:#555}.display-vehicle-hud{position:absolute;bottom:20px;left:50%;width:500px;height:90px;transform:translate(-50%);transition:.3s ease-in-out;overflow:hidden}.display-vehicle-hud .place-vehicle-prompt{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center;font-size:18px;line-height:25px}.display-vehicle-hud kbd{padding:0 8px;margin:0 5px;background:#ccc;color:#212529;font-weight:700;border-radius:5px;border-bottom:3px solid #777;display:inline-block;vertical-align:middle;font-size:17px}.display-vehicle-hud.vehicle-placed{width:700px;height:130px}.vehicle-controls{position:relative;width:100%;transition:opacity 1s}.vehicle-controls i{font-size:20px}.vehicle-controls i:before{font-weight:700!important} diff --git a/resources/[carscripts]/jg-dealerships/web/dist/assets/loading-f9361a1d.gif b/resources/[carscripts]/jg-dealerships/web/dist/assets/loading-f9361a1d.gif new file mode 100644 index 000000000..0a8068f93 Binary files /dev/null and b/resources/[carscripts]/jg-dealerships/web/dist/assets/loading-f9361a1d.gif differ diff --git a/resources/[carscripts]/jg-dealerships/web/dist/index.html b/resources/[carscripts]/jg-dealerships/web/dist/index.html new file mode 100644 index 000000000..955c2304a --- /dev/null +++ b/resources/[carscripts]/jg-dealerships/web/dist/index.html @@ -0,0 +1,14 @@ + + + + + + jg-dealerships-web + + + + +
+ + + diff --git a/resources/[carscripts]/jg-textui/.fxap b/resources/[carscripts]/jg-textui/.fxap new file mode 100644 index 000000000..b451d23e3 Binary files /dev/null and b/resources/[carscripts]/jg-textui/.fxap differ diff --git a/resources/[carscripts]/jg-textui/.gitignore b/resources/[carscripts]/jg-textui/.gitignore new file mode 100644 index 000000000..496ee2ca6 --- /dev/null +++ b/resources/[carscripts]/jg-textui/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/resources/[carscripts]/jg-textui/LICENSE b/resources/[carscripts]/jg-textui/LICENSE new file mode 100644 index 000000000..5f67a88ad --- /dev/null +++ b/resources/[carscripts]/jg-textui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 JG Scripts + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/[carscripts]/jg-textui/README.md b/resources/[carscripts]/jg-textui/README.md new file mode 100644 index 000000000..a34e4b24c --- /dev/null +++ b/resources/[carscripts]/jg-textui/README.md @@ -0,0 +1,13 @@ +# jg-textui + +Show text UI: + +```lua +exports['jg-textui']:DrawText(text) +``` + +Hide text UI: + +```lua +exports['jg-textui']:HideText() +``` diff --git a/resources/[carscripts]/jg-textui/client.lua b/resources/[carscripts]/jg-textui/client.lua new file mode 100644 index 000000000..c805e112d --- /dev/null +++ b/resources/[carscripts]/jg-textui/client.lua @@ -0,0 +1,16 @@ +function DrawText(text) + SendNUIMessage({ + type = 'show', + text = text + }) +end + +exports('DrawText', DrawText) + +function HideText() + SendNUIMessage({ + type = 'hide' + }) +end + +exports('HideText', HideText) diff --git a/resources/[carscripts]/jg-textui/fxmanifest.lua b/resources/[carscripts]/jg-textui/fxmanifest.lua new file mode 100644 index 000000000..e4aab0bc6 --- /dev/null +++ b/resources/[carscripts]/jg-textui/fxmanifest.lua @@ -0,0 +1,18 @@ +fx_version "cerulean" +game "gta5" + +description "Simple text UI library" +version "1.0" +author "JG Scripts" + +client_script "client.lua" + +ui_page "web/index.html" + +files {"web/*"} + +escrow_ignore {"**/*"} + +lua54 "yes" + +dependency '/assetpacks' \ No newline at end of file diff --git a/resources/[carscripts]/jg-textui/web/index.html b/resources/[carscripts]/jg-textui/web/index.html new file mode 100644 index 000000000..8c0806264 --- /dev/null +++ b/resources/[carscripts]/jg-textui/web/index.html @@ -0,0 +1,13 @@ + + + + + jg-textui-web + + + +
This is some text
+ + + + diff --git a/resources/[carscripts]/jg-textui/web/main.css b/resources/[carscripts]/jg-textui/web/main.css new file mode 100644 index 000000000..72370e07f --- /dev/null +++ b/resources/[carscripts]/jg-textui/web/main.css @@ -0,0 +1,38 @@ +@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap"); + +* { + margin: 0; + padding: 0; +} + +body { + font-family: "Plus Jakarta Sans", sans-serif; + background: none; +} + +.text-ui { + background: #212529; + border: 1px solid #42484e; + padding: 8px 10px; + border-radius: 7px; + color: white; + position: absolute; + left: -100%; + top: 50%; + transform: translateY(-50%); + transition: 0.5s ease-in-out; + user-select: none; +} + +.text-ui kbd { + padding: 1px 8px; + background: #ccc; + color: #212529; + font-weight: bold; + border-radius: 5px; + border-bottom: 3px solid #777; + display: inline-block; + vertical-align: middle; + margin-right: 3px; + font-size: 17px; +} diff --git a/resources/[carscripts]/jg-textui/web/main.js b/resources/[carscripts]/jg-textui/web/main.js new file mode 100644 index 000000000..951b20af4 --- /dev/null +++ b/resources/[carscripts]/jg-textui/web/main.js @@ -0,0 +1,19 @@ +(function () { + const textUI = document.querySelector(".text-ui"); + + window.addEventListener("message", (evt) => { + const { data } = evt; + + if (!data) return false; + + if (data.type === "show") { + // If the string contains a key in square brackets (like [E]), then style it differently! + let str = data.text.replaceAll(/\[(.*?)\]/g, "$1"); + + textUI.style.left = "20px"; + textUI.innerHTML = str; + } else if (data.type === "hide") { + textUI.style.left = "-100%"; + } + }); +})();