-- thermohell.gg -- discord.gg/jcYpUJzKjF --!nolint --!nocheck --!optimize 2 --[[ Wave UI — packed, Fluent-compatible single file ------------------------------------------------------------------------ GENERATED FILE — DO NOT EDIT BY HAND. Rbuild with: node Tools/WavePacker/pack.mjs This bundles the Wave UI (42 modules) and exposes the FLUENT RENEWED API. To port a Fluent script: replace its Fluent loadstring with this one and it renders in Wave. SaveManager / InterfaceManager work best-effort. local Fluent = loadstring(game:HttpGet(URL))() -- or, to keep the 3-line Fluent style working unchanged: local Fluent, SaveManager, InterfaceManager = loadstring(game:HttpGet(URL))() Wave UI by the Wave Hub authors. Fluent API shape by Fluent Renewed (dawid / Actual Master Oogway); this only emulates that shape over Wave. Built: 2026-06-19T21:15:25.559Z ]] -- ===================================================================== -- Module registry (every Wave UI file, inlined as a closure) -- ===================================================================== local R = {} R["Assets/UI-Icons.lua"] = function(...) local UIIcons = { InterFont = "rbxassetid://12187365364", Fingerprint = "rbxassetid://10723375250", ToggleBackground = "rbxassetid://18772190202", TogglerHead = "rbxassetid://18772309008", ButtonImage = "rbxassetid://10709791437", SearchIcon = "rbxassetid://86737463322606", ColorWheel = "rbxassetid://2849458409", ColorTarget = "rbxassetid://73265255323268", Grid = "rbxassetid://121484455191370", Globe = "rbxassetid://108952102602834", Transform = "rbxassetid://90336395745819", Dropdown = "rbxassetid://18865373378", PackageClosed = "rbxassetid://115850571462696", PackageOpened = "rbxassetid://84706930964206", SliderBar = "rbxassetid://18772615246", SliderHead = "rbxassetid://18772834246", StyleOneWallpaper = "rbxassetid://98449888558787", StyleTwoWallpaper = "rbxassetid://95194237233246", ShadowImage = "rbxassetid://8992230677", UserInfoBlurred = "rbxassetid://18824089198", IconUserAddress = "rbxassetid://80776764639016", IconPingAddress = "rbxassetid://10709773755", IconFramesAddress = "rbxassetid://83292249340711", IconTimeAddress = "rbxassetid://10709805144", IconCalendarAddress = "rbxassetid://10709789505", IconClearLogs = "rbxassetid://10747362393", IconStopLogs = "rbxassetid://10734906975", IconOutputIcon = "rbxassetid://10734943193", IconSearchImageLabel = "rbxassetid://86737463322606", SearchButton = "rbxassetid://137043667632406", SearchToggle = "rbxassetid://106609001100159", SearchDropdown = "rbxassetid://80911450866035", SearchColorPicker = "rbxassetid://83633879603959", SearchKeybind = "rbxassetid://127901356375611", SearchInput = "rbxassetid://125309904583288", SearchRangeSlider = "rbxassetid://137031123766399", SearchCheckBox = "rbxassetid://100384781966167", SearchPlayerDropdown = "rbxassetid://85596878024517", SearchSlider = "rbxassetid://101837522900050", Universal = "rbxassetid://75879036116151", DotGradient = "rbxassetid://94772639579159", Null = "rbxassetid://0", } local AssetList = {} for Name, AssetId in pairs(UIIcons) do local TempInstance = Instance.new("ImageLabel") TempInstance.Image = AssetId table.insert(AssetList, TempInstance) end local LoadedCount = 0 Services.ContentProvider:PreloadAsync(AssetList, function(AssetId, Status) LoadedCount = LoadedCount + 1 end) return UIIcons end R["Wave/Modules/Services.lua"] = function(...) local ServiceCache = {} local GetService = game.GetService local CloneRefServices = { CoreGui = true, RunService = true } local NoCloneRefServices = { Players = true } getgenv().Services = setmetatable({}, { __index = function(self, ServiceName) local Cache = ServiceCache[ServiceName] if Cache then return Cache end local ShouldCloneRef = CloneRefServices[ServiceName] and not NoCloneRefServices[ServiceName] local Service = ShouldCloneRef and cloneref(GetService(game, ServiceName)) or GetService(game, ServiceName) ServiceCache[ServiceName] = Service return Service end }) return Services end R["Wave/Modules/Utility.lua"] = function(...) local Utility = {} Utility.__index = Utility local MetaUtility = setmetatable({ NameCallMethods = {}, _initialized = false }, { __index = function(self, key) return Utility[key] end, __newindex = function(self, key, value) rawset(self, key, value) end, __call = function(self) return setmetatable({}, self) end }) function Utility:GetPlayer() return Services.Players.LocalPlayer end function Utility:GetPlayerScripts() return self:GetPlayer().PlayerScripts end function Utility:GetCharacter() return self:GetPlayer().Character or self:GetPlayer().CharacterAdded:Wait() end function Utility:GetCharacterTimeout() return self:GetPlayer().Character or false end function Utility:GetUserInterface() return self:GetPlayer().PlayerGui or self:GetPlayer():WaitForChild("PlayerGui") end function Utility:GetUserBackpack() return self:GetPlayer().Backpack or self:GetPlayer():WaitForChild("Backpack") end function Utility:GetHumanoidRootPart() local Character = self:GetCharacter() return Character and Character:FindFirstChild("HumanoidRootPart") end function Utility:GetHumanoid() local Character = self:GetCharacter() return Character and Character:FindFirstChild("Humanoid") end function Utility:GetMouse() return cloneref(self:GetPlayer():GetMouse()) end function Utility:GetCamera() return Services.Workspace.CurrentCamera end function Utility:GetPing(Round) local Ping = self:GetPlayer():GetNetworkPing() * 2000 return Round and math.round(Ping) or Ping end function Utility:GetAllPlayers(IncludeSelf) local TotalPlayers = {} local LocalPlayer = self:GetPlayer() for _, Player in pairs(Services.Players:GetPlayers()) do if Player ~= LocalPlayer then table.insert(TotalPlayers, Player) elseif IncludeSelf then table.insert(TotalPlayers, Player) end end return TotalPlayers end function Utility:GetAllCharacters(IncludeSelf) local TotalCharacters = {} local LocalPlayer = self:GetPlayer() for _, Player in pairs(Services.Players:GetPlayers()) do if Player ~= LocalPlayer and Player.Character then table.insert(TotalCharacters, Player.Character) elseif IncludeSelf and Player.Character then table.insert(TotalCharacters, Player.Character) end end return TotalCharacters end function Utility:GetAllCharactersHumanoidRootParts(IncludeSelf) local AllHumanoidRootParts = {} local LocalPlayer = self:GetPlayer() for _, Player in pairs(Services.Players:GetPlayers()) do if Player.Character then local HumanoidRootPart = Player.Character:FindFirstChild("HumanoidRootPart") if HumanoidRootPart then if Player ~= LocalPlayer then table.insert(AllHumanoidRootParts, HumanoidRootPart) elseif IncludeSelf then table.insert(AllHumanoidRootParts, HumanoidRootPart) end end end end return AllHumanoidRootParts end function Utility:FindClosestPlayer(Settings) local MousePosition = Vector2.new(self:GetMouse().X, self:GetMouse().Y) local ShortestDistance = math.huge local ClosestPlayer = nil Settings = Settings or {} local MaxRange = Settings.AimbotRange or 100000 local FieldRadius = Settings.FieldRadius or 10000 local TeamState = Settings.TeamState or false local UseFieldCircle = Settings.UseFieldCircle or false for _, Player in ipairs(self:GetAllPlayers()) do if TeamState then if Settings.TeamCheckCallback and Settings.TeamCheckCallback(Player) then continue elseif self:GetPlayer().Team and Player.Team == self:GetPlayer().Team then continue end end if not Player.Character then continue end local HumanoidRootPart = Player.Character:FindFirstChild("HumanoidRootPart") local Humanoid = Player.Character:FindFirstChild("Humanoid") if not HumanoidRootPart or (Humanoid and Humanoid.Health <= 0) then continue end local ScreenPosition, OnScreen = workspace.CurrentCamera:WorldToViewportPoint(HumanoidRootPart.Position) if OnScreen then local ScreenDistance = (MousePosition - Vector2.new(ScreenPosition.X, ScreenPosition.Y)).Magnitude local WorldDistance = (HumanoidRootPart.Position - workspace.CurrentCamera.CFrame.Position).Magnitude if UseFieldCircle and ScreenDistance > FieldRadius then continue end if WorldDistance > MaxRange then continue end if ScreenDistance < ShortestDistance then ShortestDistance = ScreenDistance ClosestPlayer = Player end end end return ClosestPlayer end function Utility:GeneratePlayerList(Properties) local UseTargetPlayers = Properties.UseTargetPlayers local UseSafePlayers = Properties.UseSafePlayers local TargetPlayers = Properties.TargetPlayers or {} local SafePlayers = Properties.SafePlayers or {} if UseTargetPlayers and #TargetPlayers == 0 then return {} end local TotalPlayers = {} for _, Player in pairs(self:GetAllPlayers()) do if UseSafePlayers and #SafePlayers > 0 and table.find(SafePlayers, Player.Name) then continue end if UseTargetPlayers then if table.find(TargetPlayers, Player) then table.insert(TotalPlayers, Player) end else table.insert(TotalPlayers, Player) end end return TotalPlayers end function Utility:State(Flag) return WaveLibrary:ReturnFeatures()[Flag].State end function Utility:Value(Flag) return WaveLibrary:ReturnFeatures()[Flag] and WaveLibrary:ReturnFeatures()[Flag].Value or "Could not find Feature." end function Utility:OptionSelected(Flag) if typeof(Flag) == "table" then local Selected = {} local Count = 0 for Key, IsSelected in pairs(Flag) do if IsSelected then Count = Count + 1 Selected[Count] = Key end end if Count == 0 then return false elseif Count == 1 then return Selected[1] else return Selected end else return self:OptionSelected(WaveLibrary:ReturnFeatures()[Flag]:GetOptions()) end end function Utility:PropertyTween(Instance, TweenInfo, PropertyTable) return Services.TweenService:Create(Instance, TweenInfo, PropertyTable) end function Utility:QuickTween(Instance, Properties) local QuickPlay = Services.TweenService:Create(Instance, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), Properties) QuickPlay:Play() return QuickPlay end function Utility:ProgressiveTween(Instance, Speed, Properties, WaitToComplete) if not Instance then return end local CurrentPosition = Instance.Position local TargetPosition = Properties.Position or (Properties.CFrame and Properties.CFrame.Position) if not TargetPosition then return end local Distance = (CurrentPosition - TargetPosition).Magnitude local TweenInformation = TweenInfo.new(Distance / Speed, Enum.EasingStyle.Linear) Maid.ProgressiveCreatedTween = Services.TweenService:Create(Instance, TweenInformation, Properties) Maid.ProgressiveCreatedTween:Play() if WaitToComplete then Maid.ProgressiveCreatedTween.Completed:Wait() end return Maid.ProgressiveCreatedTween end function Utility:AttachToBack(Toggle, Target, Custom) if not Toggle then if Maid.UtilAttachToBack then Maid.UtilAttachToBack:Disconnect() end Maid.UtilAttachToBack = nil return end local Offset = Custom or CFrame.new(0, 0, 5) Maid.UtilAttachToBack = Services.RunService.Heartbeat:Connect(function() if Target then local TargetHRP = Target:FindFirstChild("HumanoidRootPart") local MyHRP = self:GetHumanoidRootPart() if TargetHRP and MyHRP then MyHRP.CFrame = TargetHRP.CFrame * Offset end end end) end function Utility:LerpReturn(Alpha, Beta, Time) return Alpha + (Beta - Alpha) * Time end function Utility:Color3ToHex(Color) return string.format("#%02X%02X%02X", math.floor(Color.R * 255), math.floor(Color.G * 255), math.floor(Color.B * 255)) end function Utility:HexToColor3(Hex) local R = tonumber(string.sub(Hex, 2, 3), 16) / 255 local G = tonumber(string.sub(Hex, 4, 5), 16) / 255 local B = tonumber(string.sub(Hex, 6, 7), 16) / 255 return Color3.new(R, G, B) end function Utility:FindFirstDescendant(Location, Name) return Location:FindFirstChild(Name, true) end function Utility:FindFirstChildThatMatchesWith(Parent, Condition) for _, Child in pairs(Parent:GetChildren()) do if Child.Name:match(Condition) then return Child end end return nil end function Utility:FindFirstDescendantThatMatchesWith(Parent, Condition) for _, Child in pairs(Parent:GetDescendants()) do if Child.Name:match(Condition) then return Child end end return nil end function Utility:FindAndModifyInTable(Table, TargetKey, NewValue) if type(Table) ~= "table" then return end for Key, Value in pairs(Table) do if Key == TargetKey then Table[Key] = NewValue end if type(Value) == "table" then self:FindAndModifyInTable(Value, TargetKey, NewValue) end end end function Utility:Notify(NotifyTitle, NotifyDescription, NotifyLifetime) if not typeof(NotifyDescription) == "string" then NotifyDescription = tostring(NotifyDescription) end WaveLibrary:Notify({ Title = NotifyTitle or WaveLibrary.Settings.Title, Description = NotifyDescription, Lifetime = NotifyLifetime or 5 }) end function Utility:Prompt(NotifyTitle, NotifyDescription, Options) WaveLibrary:Dialog({ Title = NotifyTitle or WaveLibrary.Settings.Title, Description = NotifyDescription, Buttons = { { Name = Options.FirstName, Callback = Options.FirstCallback, }, { Name = Options.SecondName, Callback = Options.SecondCallback, } } }) end function Utility:Inform(NotifyTitle, NotifyDescription, Options) WaveLibrary:Dialog({ Title = NotifyTitle or WaveLibrary.Settings.Title, Description = NotifyDescription, Buttons = { { Name = Options.FirstName, Callback = Options.Callback, }, } }) end function Utility:Encounter(Settings) return WaveLibrary:Encounter(Settings) end function Utility:PrintTable(Table, Index) Index = Index or 0 local Spacing = string.rep(" ", Index) if type(Table) ~= "table" then print("The provided argument is not a table.") return end for Key, Value in pairs(Table) do if type(Value) == "table" then print(Spacing .. tostring(Key) .. ":") self:PrintTable(Value, Index + 1) else print(Spacing .. tostring(Key) .. " = " .. tostring(Value)) end end end function Utility:CheckFile(File) return isfile("Wave-Hub/" .. File) end function Utility:ListFiles(Location) return listfiles("Wave-Hub/" .. Location) end function Utility:ListManager(Location, KeepExtension) local Files = listfiles("Wave-Hub/" .. Location) local Results = {} for _, Path in ipairs(Files) do local Name = string.match(Path, "[^\\/]+$") or Path if not KeepExtension then Name = string.match(Name, "^(.*)%.") or Name end Results[Name] = Path end return Results end function Utility:ReadFile(File, Parameter) local FilePath local FileName = string.match(File, "[^/\\]+$") or File if string.sub(File, 1, 9) == "Wave-Hub/" or string.sub(File, 1, 9) == "Wave-Hub\\" then FilePath = File else FilePath = "Wave-Hub/" .. File end local Success, Result = pcall(function() return loadstring(readfile(FilePath) or nil) end) if not Success then print("Error in " .. FileName .. "| ReadFile:", Result) return nil end return Result end function Utility:LoadFile(File, Parameter) local FileName = string.match(File, "[^/\\]+$") or File local FilePath = (string.sub(File, 1, 9) == "Wave-Hub/" or string.sub(File, 1, 9) == "Wave-Hub\\") and File or "Wave-Hub/" .. File local FileContent local Success, ErrorMessage = pcall(function() FileContent = readfile(FilePath) end) if not Success then warn("Failed to read file:", FileName, "| Error:", ErrorMessage) return nil end if type(FileContent) == "table" then return FileContent elseif type(FileContent) ~= "string" then warn("Unsupported file content type for:", FileName, "| Got:", typeof(FileContent)) return nil end local Chunk, LoadError = loadstring(FileContent, Parameter or FileName) if not Chunk then warn("Failed to compile file:", FileName, "| Error:", LoadError) return nil end local Result local ExecSuccess, ExecError = pcall(function() Result = Chunk() end) if not ExecSuccess then warn("Failed to execute file:", FileName, "| Error:", ExecError) return nil end return Result end function Utility:LoadAddon(AddonName) local FileDirectory = ("Wave-Hub/Games/Addons/%s Addons/"):format(GameLoading) .. AddonName .. ".lua" local FileToCheck = isfile(FileDirectory) if not FileToCheck then return nil end return loadstring(readfile(FileDirectory))() end function Utility:IsSetting(Setting, Globalize, Path) local FileDirectory = "WaveHubSettings/settings/startup/" .. Setting .. ".wave" local FileToCheck = isfile(FileDirectory) if Globalize then getgenv()[Setting] = FileToCheck end return Path and FileDirectory or FileToCheck end function Utility:SaveOpened(Check, Save) local FullPath = self:IsSetting("TerminalSaved", false, true) if Check then if not isfile(FullPath) and Save then writefile(FullPath, "") elseif isfile(FullPath) and not Save then delfile(FullPath) end end return isfile(FullPath) end function Utility:LoadActor(File, Actor) if getgenv().WaveRunningOnActor then return "Running" end if getgenv().WAVE_BUNDLE_MODE and getgenv().WAVE_ACTOR_INIT then local InitCode = getgenv().WAVE_ACTOR_INIT() run_on_actor(Actor, InitCode) run_on_actor(Actor, [=[ getgenv().WaveRunningOnActor = true ]=]) else run_on_actor(Actor, [=[ getgenv().WaveRunningOnActor = true ]=]) end local FilePath if string.sub(File, 1, 9) == "Wave-Hub/" or string.sub(File, 1, 9) == "Wave-Hub\\" then FilePath = File else FilePath = "Wave-Hub/" .. File end local FileContent = readfile(FilePath) run_on_actor(Actor, FileContent) return "Initiated" end function Utility:SecureCallFunction(DesiredOutcome) local function SecuredFunction() setthreadidentity(2) DesiredOutcome() setthreadidentity(7) end return SecuredFunction() end function Utility:InitializeMethods() if not Utility.NameCallMethods then Utility.NameCallMethods = {} end if not Utility.BlockedRemotes then Utility.BlockedRemotes = {} end local GameRawMetatable = getrawmetatable(game) setreadonly(GameRawMetatable, false) if not Maid.InitializedNamecall then Maid.InitializedNamecall = true local InitialNameCall = GameRawMetatable.__namecall GameRawMetatable.__namecall = function(Self, ...) if checkcaller() then return InitialNameCall(Self, ...) end local Method = getnamecallmethod() for _, BlockedRemote in pairs(Utility.BlockedRemotes) do if BlockedRemote.Method == Method and Self.Name == BlockedRemote.Server then if BlockedRemote.Condition ~= nil then if typeof(BlockRemote.Condition) == "function" then if not BlockRemote.Condition() then continue end elseif not BlockRemote.Condition then continue end end if BlockedRemote.CustomCallback then return BlockedRemote.CustomCallback end return end end local Arguments = {...} for _, NameCallInfo in pairs(Utility.NameCallMethods) do if NameCallInfo.Method == Method and Self.Name == NameCallInfo.Server and (NameCallInfo.Condition and NameCallInfo.Condition() or not NameCallInfo.Condition) then if typeof(NameCallInfo.Arguments) == "table" then for Index, ArgumentIndex in ipairs(NameCallInfo.Arguments) do if Arguments[ArgumentIndex] ~= nil then local EditedValue if typeof(NameCallInfo.Edited) == "table" then EditedValue = NameCallInfo.Edited[Index] else EditedValue = NameCallInfo.Edited end if typeof(EditedValue) == "function" then EditedValue = EditedValue() end if EditedValue ~= nil then Arguments[ArgumentIndex] = EditedValue end end end elseif typeof(NameCallInfo.Arguments) == "number" then if Arguments[NameCallInfo.Arguments] ~= nil then local EditedValue = NameCallInfo.Edited if typeof(EditedValue) == "function" then EditedValue = EditedValue() end if EditedValue ~= nil then Arguments[NameCallInfo.Arguments] = EditedValue end end end return InitialNameCall(Self, unpack(Arguments)) end end return InitialNameCall(Self, ...) end end setreadonly(GameRawMetatable, true) Utility._initialized = true end function Utility:BlockRemote(Method, Server, Condition, CustomCallback) if not Utility._initialized then self:InitializeMethods() end if not Utility.BlockedRemotes then Utility.BlockedRemotes = {} end for _, BlockedRemote in pairs(Utility.BlockedRemotes) do if BlockedRemote.Method == Method and BlockedRemote.Server == Server then return false end end table.insert(Utility.BlockedRemotes, { Method = Method, Server = Server, Condition = Condition, CustomCallback = CustomCallback or nil, }) return true end function Utility:UnblockRemote(Method, Server) if not Utility.BlockedRemotes then return false end for _, BlockedRemote in pairs(Utility.BlockedRemotes) do if BlockedRemote.Server == Server then BlockedRemote.Server = " \nUnblocked" end end end function Utility:IsRemoteBlocked(Method, Server) if not Utility.BlockedRemotes then return false end for _, BlockedRemote in pairs(Utility.BlockedRemotes) do if BlockedRemote.Method == Method and BlockedRemote.Server == Server then return true end end return false end function Utility:UpdateMethod(Method, Server, Arguments, Edited, Condition, TemporarySeconds) if not Utility._initialized then self:InitializeMethods() end if not Utility.NameCallMethods then Utility.NameCallMethods = {} end local EditedSuccess = self:EditMethod(Method, Server, Arguments, Edited, Condition, TemporarySeconds) if EditedSuccess then return "Edited" end table.insert(Utility.NameCallMethods, { Method = Method, Server = Server, Arguments = Arguments, Edited = Edited, Condition = Condition or false }) if TemporarySeconds and TemporarySeconds > 0 then task.delay(TemporarySeconds, function() self:RemoveMethod(Method, Server) end) end return "Inserted" end function Utility:HookGetAttribute(Condition) if not Utility._initialized then self:InitializeMethods() end local GameRawMetatable = getrawmetatable(game) setreadonly(GameRawMetatable, false) if not Maid.OriginalIndex then Maid.OriginalIndex = GameRawMetatable.__index GameRawMetatable.__index = newcclosure(function(Self, Key) if Key == "GetAttribute" then return function(_, AttributeName) if Condition and Condition(AttributeName) then return nil end return Maid.OriginalIndex(Self, Key)(Self, AttributeName) end end return Maid.OriginalIndex(Self, Key) end) end setreadonly(GameRawMetatable, true) end function Utility:EditMethod(Method, Server, Arguments, Edited, Condition, TemporarySeconds) if not Utility.NameCallMethods then return false end for Index, Info in ipairs(Utility.NameCallMethods) do if Info.Method == Method and Info.Server == Server then local Original = { Arguments = Info.Arguments, Edited = Info.Edited, Condition = Info.Condition } Utility.NameCallMethods[Index] = { Method = Method, Server = Server, Arguments = Arguments or Info.Arguments, Edited = Edited or Info.Edited, Condition = Condition ~= nil and Condition or Info.Condition, Original = Original } if TemporarySeconds and TemporarySeconds > 0 then task.delay(TemporarySeconds, function() if Utility.NameCallMethods[Index] and Utility.NameCallMethods[Index].Original then Utility.NameCallMethods[Index].Arguments = Original.Arguments Utility.NameCallMethods[Index].Edited = Original.Edited Utility.NameCallMethods[Index].Condition = Original.Condition Utility.NameCallMethods[Index].Original = nil end end) end return true end end return false end function Utility:RemoveMethod(Method, Server) if not Utility.NameCallMethods then return false end for Index, Info in ipairs(Utility.NameCallMethods) do if Info.Method == Method and Info.Server == Server then table.remove(Utility.NameCallMethods, Index) return true end end return false end function Utility:IsActiveMethod(Method, Server) if not Utility.NameCallMethods then return false end for _, Info in ipairs(Utility.NameCallMethods) do if Info.Method == Method and Info.Server == Server then return true end end return false end function Utility:VirtualInputMachineClick(Element) local Inset = Services.Services.GuiService:GetGuiInset() local GuiElement = Element local AbsPos = GuiElement.AbsolutePosition local AbsSize = GuiElement.AbsoluteSize local ClickX = AbsPos.X + (AbsSize.X / 2) + Inset.X local ClickY = AbsPos.Y + (AbsSize.Y / 2) + Inset.Y VirtualInputMachine:SendMouseButtonEvent(ClickX or 0, ClickY or 0, 0, true, game, 1) task.wait(0.1) VirtualInputMachine:SendMouseButtonEvent(ClickX or 0, ClickY or 0, 0, false, game, 1) end function Utility:SendKey(Key, Time, EndTime) VirtualInputMachine:SendKeyEvent(true, Enum.KeyCode[Key], false, game) task.wait(Time or 0) VirtualInputMachine:SendKeyEvent(false, Enum.KeyCode[Key], false, game) end function Utility:FindBestServer(GameId) local Success, Result = pcall(function() return self:ExecuteHTTPGet("https://games.roblox.com/v1/games/" .. GameId .. "/servers/Public?sortOrder=Asc&limit=100") end) if not Success then return nil end local Data = Services.Services.HttpService:JSONDecode(Result) if not Data or not Data.data then return nil end for _, Server in ipairs(Data.data) do if Server.playing > 5 and Server.playing < Server.maxPlayers - 2 then return Server.id end end if #Data.data > 0 then return Data.data[1].id end return nil end function Utility:TeleportToGame(GameName, Options) Options = Options or {} local GameInfo = nil for _, Game in ipairs(GameData) do if Game.Name == GameName then GameInfo = Game break end end if not GameInfo then self:Notify("Teleport Error", "Game '" .. GameName .. "' not found in database.", 5) return false end if not GameInfo.Available then self:Notify("Coming Soon", GameName .. " teleport will be available soon!", 3) return false end local GameId = GameInfo.Id if type(GameId) == "table" then GameId = GameId[1] end if GameId == 0 then self:Notify("Coming Soon", GameName .. " teleport will be available soon!", 3) return false end self:Notify("Teleporting", "Preparing to teleport to " .. GameName .. "...", 3) wait(1) local TeleportOptions = Instance.new("TeleportOptions") if Options.ReserveServer then TeleportOptions.ReservedServerAccessCode = Options.ReserveServer end if Options.ServerJobId then TeleportOptions.ServerInstanceId = Options.ServerJobId elseif Options.FindBestServer then local BestServerId = self:FindBestServer(GameId) if BestServerId then TeleportOptions.ServerInstanceId = BestServerId self:Notify("Server Found", "Found a good server! Teleporting...", 2) end end local Success, ErrorMessage = pcall(function() Services.Services.TeleportService:TeleportAsync(GameId, {self:GetPlayer()}, TeleportOptions) end) if not Success then local FriendlyMessage = "Failed to teleport. Please check your internet connection." if string.find(ErrorMessage, "unauthorized") or string.find(ErrorMessage, "Unauthorized") then FriendlyMessage = "Please enable 'Allow Third Party Teleports' in your Roblox account settings." elseif string.find(ErrorMessage, "flooded") then FriendlyMessage = "Too many teleport requests. Please wait 30 seconds and try again." elseif string.find(ErrorMessage, "not found") then FriendlyMessage = "Game is currently unavailable. Please try again later." end self:Notify("Teleport Failed", FriendlyMessage, 7) return false end return true end function Utility:TeleportWithPrompt(GameName, Options) self:Prompt(false, "Are you sure you want to teleport to " .. GameName .. "?", { FirstName = "Yes", SecondName = "Cancel", FirstCallback = function() self:TeleportToGame(GameName, Options) end, SecondCallback = function() self:Notify("Cancelled", "Teleport cancelled.", 2) end, }) end function Utility:GetGameLink(GameName) for _, GameInfo in ipairs(GameData) do if GameInfo.Name == GameName then return GameInfo.Link end end return nil end function Utility:CopyGameLink(GameName) local Link = self:GetGameLink(GameName) if Link then setclipboard(Link) self:Notify("Link Copied", "Game link copied to clipboard!", 3) else self:Notify("Error", "Game link not available.", 3) end end function Utility:QueueScript() if not getgenv().QueuedTeleport then queue_on_teleport(readfile("Wave-Hub/Script-Loader.lua")) getgenv().QueuedTeleport = true end end function Utility:DisableResetOnSpawn() Maid.ScreenGuisWithResetOnSpawn = {} local UserInterface = self:GetUserInterface() if UserInterface then for _, Object in pairs(UserInterface:GetChildren()) do if Object:IsA("ScreenGui") and Object.ResetOnSpawn then table.insert(Maid.ScreenGuisWithResetOnSpawn, Object) Object.ResetOnSpawn = false end end end end function Utility:EnableResetOnSpawn() for _, ScreenGui in pairs(Maid.ScreenGuisWithResetOnSpawn) do if ScreenGui and ScreenGui.Parent then ScreenGui.ResetOnSpawn = true end end Maid.ScreenGuisWithResetOnSpawn = {} end function Utility:CreateCommunicationChannel() local Identity, Channel = create_comm_channel() return Identity, Channel end function Utility:ExecuteFunction(Arguments) return function() local OnStart = Arguments.OnStart local Callback = Arguments.Callback local OnCompleted = Arguments.OnCompleted local Results = { OnStartResult = nil, CallbackResult = nil, OnCompletedResult = nil, StartingNotification = nil, Success = true, Errors = {}, } if OnStart and type(OnStart) == "function" then local Success, Result = pcall(OnStart) if Success then Results.OnStartResult = Result else Results.Success = false table.insert(Results.Errors, {Stage = "OnStart", Error = Result}) end elseif OnStart and type(OnStart) == "string" then local Notification = WaveLibrary:Notify({ Title = getgenv().WaveLibrary.Settings.Title, Description = (OnStart) }) if Arguments.StartingLoadingEffect then Results.StartingNotification = Notification task.spawn(function() local Dots = {"", ".", "..", "..."} local Index = 1 while Arguments.StartingLoadingEffect do Notification:UpdateDescription(OnStart .. Dots[Index]) Index = Index % #Dots + 1 task.wait(0.25) end end) end end if Callback and type(Callback) == "function" then local Success, Result = pcall(Callback) if Success then Results.CallbackResult = Result else Results.Success = false table.insert(Results.Errors, {Stage = "Callback", Error = Result}) end end if OnCompleted and type(OnCompleted) == "function" then local Success, Result = pcall(OnCompleted) if Success then Results.OnCompletedResult = Result else Results.Success = false table.insert(Results.Errors, {Stage = "OnCompleted", Error = Result}) end elseif OnCompleted and type(OnCompleted) == "string" then if Results.StartingNotification then Results.StartingNotification:Cancel() end WaveLibrary:Notify({ Title = getgenv().WaveLibrary.Settings.Title, Description = (OnCompleted) }) end return Results end end function Utility:ExecuteHTTPGet(Link, Async) return Async and game:HttpGetAsync(Link) or game:HttpGet(Link) end function Utility:RenderWait(Time) return function() local Current = tick() Time = Time or 0 repeat Services.RunService.Heartbeat:Wait() until tick() - Current >= Time return tick() - Current end end function Utility:KillMaidInstance(Name) if Maid[Name] then if type(Maid[Name]) == "thread" then task.cancel(Maid[Name]) elseif type(Maid[Name]) == "RBXScriptConnection" then Maid[Name]:Disconnect() end end Maid[Name] = nil end function Utility:Reload() if getgenv().WaveLibrary then WaveLibrary:Unload() end end function Utility:IsWaveExecutor() return getexecutorname():match("Wave") ~= nil end function Utility:IsPremiumHubUser() return true end function Utility:CheckHubStatus(PrimaryAccentColor) if self:IsWaveExecutor() and not self:IsPremiumHubUser() then return 'Free' elseif self:IsWaveExecutor() and self:IsPremiumHubUser() then return string.format('Premium', PrimaryAccentColor.R * 255, PrimaryAccentColor.G * 255, PrimaryAccentColor.B * 255) end return 'Demo' end -- [packed] Services is provided by the bundle bootstrap return MetaUtility end R["Wave/Modules/Maid.lua"] = function(...) local Maid = {} Maid.ClassName = "Maid" function Maid.New() return setmetatable({ _Tasks = {} }, Maid) end function Maid.IsMaid(Value) return type(Value) == "table" and Value.ClassName == "Maid" end function Maid:__index(Index) if Maid[Index] then return Maid[Index] else return self._Tasks[Index] end end function Maid:__newindex(Index, NewTask) if Maid[Index] ~= nil then error(string.format("Cannot use '%s' as a Maid key", tostring(Index)), 2) end local Tasks = self._Tasks local OldTask = Tasks[Index] if OldTask == NewTask then return end Tasks[Index] = NewTask if OldTask then self:_CleanupTask(OldTask) end end function Maid:_CleanupTask(Task) local TaskType = typeof(Task) if TaskType == "function" then Task() elseif TaskType == "thread" then local Success = pcall(function() if coroutine.status(Task) ~= "dead" then task.cancel(Task) end end) if not Success then task.defer(function() pcall(task.cancel, Task) end) end elseif TaskType == "RBXScriptConnection" then if Task.Connected then Task:Disconnect() end elseif TaskType == "Instance" then if Task.Parent ~= nil then Task:Destroy() end elseif TaskType == "table" then if type(Task.Destroy) == "function" then Task:Destroy() elseif type(Task.Disconnect) == "function" then Task:Disconnect() end end end function Maid:Add(Task) if not Task then error("Task cannot be false or nil", 2) end local TaskId = #self._Tasks + 1 self._Tasks[TaskId] = Task if type(Task) == "table" and (not Task.Destroy) and (not Task.Disconnect) then warn("[Maid.Add] - Gave table task without .Destroy or .Disconnect\n\n" .. debug.traceback()) end return Task end function Maid:GiveTask(Task) if not Task then error("Task cannot be false or nil", 2) end local TaskId = #self._Tasks + 1 self._Tasks[TaskId] = Task if type(Task) == "table" and (not Task.Destroy) and (not Task.Disconnect) then warn("[Maid.GiveTask] - Gave table task without .Destroy or .Disconnect\n\n" .. debug.traceback()) end return TaskId end function Maid:GivePromise(Promise) if not Promise:IsPending() then return Promise end local NewPromise = Promise.resolved(Promise) local Id = self:GiveTask(NewPromise) NewPromise:Finally(function() self[Id] = nil end) return NewPromise end function Maid:AddCleanupTask(Task) if typeof(Task) ~= "function" then return end if not self._CleanupTasks then self._CleanupTasks = {} end table.insert(self._CleanupTasks, Task) end function Maid:DoCleaning() local PrecleanupTasks = self._CleanupTasks local Tasks = self._Tasks if PrecleanupTasks then for _, Task in pairs (PrecleanupTasks) do Task() end end local TasksToClean = {} for Index, Task in pairs(Tasks) do TasksToClean[Index] = Task Tasks[Index] = nil end for _, Task in pairs(TasksToClean) do self:_CleanupTask(Task) end end function Maid:Destroy() local Tasks = self._Tasks local TaskSnapshot = {} for Index, Task in pairs(Tasks) do table.insert(TaskSnapshot, Task) Tasks[Index] = nil end for _, Task in ipairs(TaskSnapshot) do pcall(function() self:_CleanupTask(Task) end) end table.clear(self._Tasks) setmetatable(self, nil) end return Maid end R["Wave/Modules/Sound.lua"] = function(...) local Sound = {} Sound.__index = Sound function Sound.New(FilePath, Speed, Volume, IsLink, Link) local self = setmetatable({}, Sound) if IsLink and not isfile(FilePath) then writefile(FilePath, Utility:ExecuteHTTPGet(Link)) end self.SoundAsset = getcustomasset(FilePath) self.Speed = Speed or 1 self.Volume = Volume or 1 self.Sound = Instance.new("Sound", Services.CoreGui) self.Sound.SoundId = self.SoundAsset self.Sound.PlaybackSpeed = self.Speed self.Sound.Volume = self.Volume return self end function Sound:Play() self.Sound:Play() end function Sound:Stop() self.Sound:Stop() end function Sound:SetSpeed(Speed) self.Speed = Speed self.Sound.PlaybackSpeed = Speed end function Sound:SetVolume(Volume) self.Volume = Volume self.Sound.Volume = Volume end function Sound:Destroy() self.Sound:Destroy() self.Sound = nil end return Sound end R["Wave/UserInterface/WaveUI.lua"] = function(...) local WaveLibrary = { Options = {}, LoadedFully = false, Folder = "WaveHubSettings", TabSettings = {}, Unloaded = false, WindowState = nil, AcrylicBlur = true, InitializedGlobalSettings = false, Tabs = {} } function WaveLibrary:CreateShadow(Options) local ShadowContainer = Instance.new("ImageLabel") ShadowContainer.Name = "Shadow" .. math.random(0, 10000) ShadowContainer.Size = UDim2.new(1, 100, 1, 96) ShadowContainer.Position = UDim2.new(0, -50, 0, -28) ShadowContainer.AnchorPoint = Vector2.new(0, 0) ShadowContainer.BackgroundTransparency = 1 ShadowContainer.BackgroundColor3 = Color3.new(0.639216, 0.635294, 0.647059) ShadowContainer.Image = Assets.ShadowImage ShadowContainer.ImageTransparency = 0.3 ShadowContainer.ImageColor3 = Color3.new(1, 1, 1) ShadowContainer.ImageRectOffset = Vector2.new(0, 0) ShadowContainer.ImageRectSize = Vector2.new(0, 0) ShadowContainer.ScaleType = Enum.ScaleType.Slice ShadowContainer.SliceCenter = Rect.new(99, 99, 99, 99) ShadowContainer.SliceScale = 1 ShadowContainer.TileSize = UDim2.new(1, 0, 1, 0) ShadowContainer.BorderSizePixel = 0 ShadowContainer.BorderColor3 = Color3.new(0.105882, 0.164706, 0.207843) ShadowContainer.BorderMode = Enum.BorderMode.Outline ShadowContainer.ZIndex = -1 ShadowContainer.Visible = true ShadowContainer.Active = false ShadowContainer.ClipsDescendants = false ShadowContainer.Selectable = false ShadowContainer.AutoLocalize = true ShadowContainer.SizeConstraint = Enum.SizeConstraint.RelativeXY ShadowContainer.NextSelectionUp = nil ShadowContainer.NextSelectionDown = nil ShadowContainer.NextSelectionLeft = nil ShadowContainer.NextSelectionRight = nil ShadowContainer.SelectionImageObject = nil if Options.Gradient then local UIGradient = Instance.new("UIGradient") if Options.Gradient.Color then UIGradient.Color = Options.Gradient.Color end if Options.Gradient.Transparency then UIGradient.Transparency = Options.Gradient.Transparency end if Options.Gradient.Rotation then UIGradient.Rotation = Options.Gradient.Rotation end if Options.Gradient.Offset then UIGradient.Offset = Options.Gradient.Offset end UIGradient.Parent = ShadowContainer end if Options.Color and not Options.Gradient then ShadowContainer.ImageColor3 = Options.Color end table.insert(Maid.Shadows, ShadowContainer) local ReplicationConnection if Options.ObjectReplication then local function UpdateShadowProperties() local TargetObject = Options.ObjectReplication local AbsoluteSize = TargetObject.AbsoluteSize ShadowContainer.Size = UDim2.new(0, AbsoluteSize.X + 100, 0, AbsoluteSize.Y + 106) local AbsolutePosition = TargetObject.AbsolutePosition ShadowContainer.Position = UDim2.new(0, AbsolutePosition.X - 50, 0, AbsolutePosition.Y + 10) if Options.ReplicateVisible then if Options.ReplicateVisible[2] then if not Options.ReplicateVisible[1].Visible then ShadowContainer.Visible = Options.ReplicateVisible[1].Visible elseif Options.ReplicateVisible[1].Visible and not Options.ReplicateVisible[2].Visible then ShadowContainer.Visible = Options.ReplicateVisible[2].Visible else ShadowContainer.Visible = Options.ReplicateVisible[1].Visible end else ShadowContainer.Visible = Options.ReplicateVisible[1].Visible end else ShadowContainer.Visible = TargetObject.Visible end ShadowContainer.AnchorPoint = Vector2.new(0, 0) ShadowContainer.ZIndex = TargetObject.ZIndex - 1 if TargetObject.Rotation then ShadowContainer.Rotation = TargetObject.Rotation end if TargetObject.LayoutOrder then ShadowContainer.LayoutOrder = TargetObject.LayoutOrder - 1 end end UpdateShadowProperties() ReplicationConnection = Services.RunService.Heartbeat:Connect(UpdateShadowProperties) end if Options.Object:FindFirstChildOfClass("UIListLayout") then ShadowContainer.LayoutOrder = -9999 else ShadowContainer.Parent = Options.Object end if ReplicationConnection then ShadowContainer.AncestryChanged:Connect(function() if not ShadowContainer.Parent then ReplicationConnection:Disconnect() end end) end return ShadowContainer end function WaveLibrary:SetupSettings(Settings) if WaveLibrary.TabSettings then WaveLibrary.TabSettings = nil end WaveLibrary.TabSettings = {} WaveLibrary.LoadedFully = false WaveLibrary.TabSettings.InitializeTab = nil WaveLibrary.TabSettings.CurrentTab = nil if Maid.Shadows ~= {} and Maid.Shadows ~= nil then for _, Container in pairs(Maid.Shadows) do Container:Destroy() end Maid.Shadows = nil end Maid.Shadows = {} if Settings.AcrylicBlur ~= nil then WaveLibrary.AcrylicBlur = Settings.AcrylicBlur end if Maid.MenuKeybind ~= nil then Maid.MenuKeybind:Disconnect() end Maid.MenuKeybind = nil Maid.TabIndex = 0 Maid.RegisteredKeybinds = {} Maid.HiddenKeybinds = {} WaveLibrary.Unloaded = false WaveLibrary.InitializedGlobalSettings = false WaveLibrary.WindowState = nil WaveLibrary.Tabs = {} WaveLibrary.Options = {} end function WaveLibrary:Window(Settings) local WindowFunctions = {Settings = Settings} self:SetupSettings(Settings) local ComponentManager = Utility:LoadFile("Wave/UserInterface/Managers/ComponentManager.lua") local TerminalModule = Utility:LoadFile("Wave/UserInterface/Imports/Terminal/TerminalModule.lua") local ThemeColorSchemes = Utility:LoadFile("Wave/UserInterface/Imports/Themes/ThemeColorSchemes.lua") local ThemeTemplates = Utility:LoadFile("Wave/UserInterface/Imports/Themes/ThemeTemplates.lua") local PerformanceModes = Utility:LoadFile("Wave/UserInterface/Imports/Themes/PerformanceModes.lua") local ThemeUtility = Utility:LoadFile("Wave/UserInterface/Imports/Themes/ThemeUtility.lua") local Themes = ThemeUtility:RetrieveThemes(WaveLibrary) local ClassParser = { ["Toggle"] = { Save = function(Flag, Data) return { ClassType = "Toggle", Flag = Flag, State = Data.State or false, Keybind = ComponentManager:CheckFlagKeybind(Flag) } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] then if Data.State then WaveLibrary.Options[Flag]:UpdateState(Data.State) end if Data.Keybind then ComponentManager.AddFlagKeybind(Flag, Data.Keybind) end end end }, ["Button"] = { Save = function(Flag, Data) return { ClassType = "Button", Flag = Flag, Keybind = ComponentManager:CheckFlagKeybind(Flag) } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] then if Data.Keybind then ComponentManager.AddFlagKeybind(Flag, Data.Keybind) end end end }, ["CheckBox"] = { Save = function(Flag, Data) return { ClassType = "CheckBox", Flag = Flag, State = Data.State or false } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.State then WaveLibrary.Options[Flag]:UpdateState(Data.State) end end }, ["Slider"] = { Save = function(Flag, Data) return { ClassType = "Slider", Flag = Flag, Value = (Data.Value and tostring(Data.Value)) or false } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.Value then WaveLibrary.Options[Flag]:UpdateValue(Data.Value) end end }, ["RangeSlider"] = { Save = function(Flag, Data) return { ClassType = "RangeSlider", Flag = Flag, Minimum = Data.MinValue, Maximum = Data.MaxValue } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.Minimum and Data.Maximum then WaveLibrary.Options[Flag]:UpdateRange(Data.Minimum, Data.Maximum) end end }, ["Input"] = { Save = function(Flag, Data) return { ClassType = "Input", Flag = Flag, Input = Data.Text } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.Input and type(Data.Input) == "string" then WaveLibrary.Options[Flag]:UpdateText(Data.Input) end end }, ["Keybind"] = { Save = function(Flag, Data) return { ClassType = "Keybind", Flag = Flag, Bind = Data:GetBind().Name } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.Bind then WaveLibrary.Options[Flag]:Bind(Enum.KeyCode[Data.Bind]) end end }, ["Dropdown"] = { Save = function(Flag, Data) return { ClassType = "Dropdown", Flag = Flag, Selections = Data.Value } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.Selections then WaveLibrary.Options[Flag]:UpdateSelection(Data.Selections) end end }, ["ColorPicker"] = { Save = function(Flag, Data) return { ClassType = "ColorPicker", Flag = Flag, Color = Utility:Color3ToHex(Data.Color) or nil, Alpha = Data.Alpha } end, Load = function(Flag, Data) if WaveLibrary.Options[Flag] and Data.Color then WaveLibrary.Options[Flag]:SetColor(Utility:HexToColor3(Data.Color)) if Data.Alpha then WaveLibrary.Options[Flag]:SetAlpha(Data.Alpha) end end end } } local WaveLibraryUI = Instance.new("ScreenGui") WaveLibraryUI.Name = "WaveLibrary" WaveLibraryUI.ResetOnSpawn = false WaveLibraryUI.DisplayOrder = 100 WaveLibraryUI.IgnoreGuiInset = true WaveLibraryUI.ScreenInsets = Enum.ScreenInsets.None WaveLibraryUI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling WaveLibraryUI.Parent = gethui() local Notifications = Instance.new("Frame") Notifications.Name = "Notifications" Notifications.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Notifications.BackgroundTransparency = 1 Notifications.BorderColor3 = Color3.fromRGB(0, 0, 0) Notifications.BorderSizePixel = 0 Notifications.Size = UDim2.fromScale(1, 1) Notifications.Parent = WaveLibraryUI Notifications.ZIndex = 2 Notifications.Visible = not HiddenMode local StatusHub = Instance.new("Frame") StatusHub.Name = "ExteralStatus" StatusHub.AnchorPoint = Vector2.new(0.5, 0.5) StatusHub.BackgroundColor3 = Color3.fromRGB(15, 15, 15) StatusHub.BackgroundTransparency = WaveLibrary.AcrylicBlur and 0.05 or 0 StatusHub.BorderColor3 = Color3.fromRGB(0, 0, 0) StatusHub.BorderSizePixel = 0 StatusHub.Position = UDim2.fromScale(0.955, 0.5) StatusHub.Size = UDim2.fromOffset(200, 200) StatusHub.Parent = WaveLibraryUI StatusHub.Visible = false local StatusDivider = Instance.new("Frame") StatusDivider.Name = "Divider" StatusDivider.AnchorPoint = Vector2.new(0, 1) StatusDivider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) StatusDivider.BackgroundTransparency = 0.9 StatusDivider.BorderColor3 = Color3.fromRGB(0, 0, 0) StatusDivider.BorderSizePixel = 0 StatusDivider.Position = UDim2.fromScale(0.25, 0.15) StatusDivider.Size = UDim2.new(0.5, 0, 0, 1) StatusDivider.Parent = StatusHub local StatusTitle = Instance.new("TextLabel") StatusTitle.Name = "StatusTitle" StatusTitle.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal ) StatusTitle.TextColor3 = Color3.fromRGB(255, 255, 255) StatusTitle.RichText = true StatusTitle.TextSize = 18 StatusTitle.TextTransparency = 0.1 StatusTitle.TextTruncate = Enum.TextTruncate.SplitWord StatusTitle.TextXAlignment = Enum.TextXAlignment.Center StatusTitle.TextYAlignment = Enum.TextYAlignment.Bottom StatusTitle.AutomaticSize = Enum.AutomaticSize.Y StatusTitle.BackgroundColor3 = Color3.fromRGB(255, 255, 255) StatusTitle.BackgroundTransparency = 1 StatusTitle.BorderColor3 = Color3.fromRGB(0, 0, 0) StatusTitle.BorderSizePixel = 0 StatusTitle.Position = UDim2.fromScale(0, 0.0255) StatusTitle.Size = UDim2.new(1, 0, 0, 0) StatusTitle.Parent = StatusHub local StatusHandle = Instance.new("Frame") StatusHandle.Name = "Status" StatusHandle.AnchorPoint = Vector2.new(0.5, 0.5) StatusHandle.BackgroundTransparency = 1 StatusHandle.BorderColor3 = Color3.fromRGB(0, 0, 0) StatusHandle.BorderSizePixel = 0 StatusHandle.Position = UDim2.new(0.5, 0, 0.5, 15) StatusHandle.Size = UDim2.new(1, 0, 1, -50) StatusHandle.Parent = StatusHub local StatusUIListLayout = Instance.new("UIListLayout") StatusUIListLayout.Name = "StatusUIListLayout" StatusUIListLayout.Padding = UDim.new(0, 10) StatusUIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center StatusUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder StatusUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Top StatusUIListLayout.Parent = StatusHandle local StatusUIStroke = Instance.new("UIStroke") StatusUIStroke.Name = "StatusUIStroke" StatusUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border StatusUIStroke.Color = Color3.fromRGB(255, 255, 255) StatusUIStroke.Transparency = 0.9 StatusUIStroke.Parent = StatusHub local StatusUICorner = Instance.new("UICorner") StatusUICorner.Name = "BaseUICorner" StatusUICorner.CornerRadius = UDim.new(0, 10) StatusUICorner.Parent = StatusHub local StatusWallpaper = Instance.new("ImageLabel") StatusWallpaper.Name = "Wallpaper" StatusWallpaper.Image = Assets.StyleOneWallpaper StatusWallpaper.Size = UDim2.fromOffset(200, 200) StatusWallpaper.Position = UDim2.new(0, 0, 0, 0) StatusWallpaper.BackgroundTransparency = 1 StatusWallpaper.ImageTransparency = 0.65 StatusWallpaper.ImageColor3 = Color3.fromRGB(32, 32, 32) StatusWallpaper.ScaleType = Enum.ScaleType.Crop StatusWallpaper.Parent = StatusHub local StatusWallpaperUICorner = Instance.new("UICorner") StatusWallpaperUICorner.Name = "WallpaperUICorner" StatusWallpaperUICorner.CornerRadius = UDim.new(0, 10) StatusWallpaperUICorner.Parent = StatusWallpaper local NotificationsUIListLayout = Instance.new("UIListLayout") NotificationsUIListLayout.Name = "NotificationsUIListLayout" NotificationsUIListLayout.Padding = UDim.new(0, 10) NotificationsUIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right NotificationsUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder NotificationsUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom NotificationsUIListLayout.Parent = Notifications local NotificationsUIPadding = Instance.new("UIPadding") NotificationsUIPadding.Name = "NotificationsUIPadding" NotificationsUIPadding.PaddingBottom = UDim.new(0, 10) NotificationsUIPadding.PaddingLeft = UDim.new(0, 10) NotificationsUIPadding.PaddingRight = UDim.new(0, 10) NotificationsUIPadding.PaddingTop = UDim.new(0, 10) NotificationsUIPadding.Parent = Notifications local Base = Instance.new("Frame") Base.Name = "Base" Base.AnchorPoint = Vector2.new(0.5, 0.5) Base.BackgroundColor3 = Color3.fromRGB(15, 15, 15) Base.BackgroundTransparency = WaveLibrary.AcrylicBlur and 1 or 0 Base.BorderColor3 = Color3.fromRGB(0, 0, 0) Base.BorderSizePixel = 0 Base.Position = UDim2.fromScale(0.5, 0.5) Base.Size = Settings.Size or UDim2.fromOffset(868, 650) Base.Visible = false local BaseUIScale = Instance.new("UIScale") BaseUIScale.Name = "BaseUIScale" BaseUIScale.Parent = Base local BaseUICorner = Instance.new("UICorner") BaseUICorner.Name = "BaseUICorner" BaseUICorner.CornerRadius = UDim.new(0, 10) BaseUICorner.Parent = Base local BaseUIStroke = Instance.new("UIStroke") BaseUIStroke.Name = "BaseUIStroke" BaseUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border BaseUIStroke.Color = Color3.fromRGB(255, 255, 255) BaseUIStroke.Transparency = 0.7 BaseUIStroke.Parent = Base WaveLibrary:CreateShadow({Object = WaveLibraryUI, ObjectReplication = Base, Gradient = { Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.new(0, 0, 0.2)), ColorSequenceKeypoint.new(1, Color3.new(0.4, 0.6, 1)) }), }}) local Sidebar = Instance.new("Frame") Sidebar.Name = "Sidebar" Sidebar.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Sidebar.BackgroundTransparency = 0.7 Sidebar.BorderColor3 = Color3.fromRGB(0, 0, 0) Sidebar.BorderSizePixel = 0 Sidebar.Position = UDim2.fromScale(-3.52e-08, 4.69e-08) Sidebar.Size = UDim2.fromScale(0.255, 1) local SidebarUICorner = Instance.new("UICorner") SidebarUICorner.Name = "SideUICorner" SidebarUICorner.CornerRadius = UDim.new(0, 10) SidebarUICorner.Parent = Sidebar local SidebarDivider = Instance.new("UIStroke") SidebarDivider.Name = "SidebarUIStroke" SidebarDivider.Thickness = 1 SidebarDivider.Transparency = 0.9 SidebarDivider.Color = Color3.fromRGB(255, 255, 255) SidebarDivider.Parent = Sidebar local Divider = Instance.new("Frame") Divider.Name = "Divider" Divider.AnchorPoint = Vector2.new(1, 0) Divider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Divider.BackgroundTransparency = 1 Divider.BorderColor3 = Color3.fromRGB(0, 0, 0) Divider.BorderSizePixel = 0 Divider.Position = UDim2.fromScale(1, 0) Divider.Size = UDim2.new(0, 1, 1, 0) Divider.Parent = Sidebar local DividerInteract = Instance.new("TextButton") DividerInteract.Name = "DividerInteract" DividerInteract.AnchorPoint = Vector2.new(0.5, 0) DividerInteract.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DividerInteract.BackgroundTransparency = 1 DividerInteract.BorderColor3 = Color3.fromRGB(0, 0, 0) DividerInteract.BorderSizePixel = 0 DividerInteract.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") DividerInteract.Position = UDim2.fromScale(0.5, 0) DividerInteract.Size = UDim2.new(1, 6, 1, 0) DividerInteract.Text = "" DividerInteract.TextColor3 = Color3.fromRGB(0, 0, 0) DividerInteract.TextSize = 14 DividerInteract.Parent = Divider local WindowControls = Instance.new("Frame") WindowControls.Name = "WindowControls" WindowControls.BackgroundColor3 = Color3.fromRGB(255, 255, 255) WindowControls.BackgroundTransparency = 1 WindowControls.BorderColor3 = Color3.fromRGB(0, 0, 0) WindowControls.BorderSizePixel = 0 WindowControls.Size = UDim2.new(1, 0, 0, 31) local Controls = Instance.new("Frame") Controls.Name = "Controls" Controls.BackgroundColor3 = Color3.fromRGB(119, 174, 94) Controls.BackgroundTransparency = 1 Controls.BorderColor3 = Color3.fromRGB(0, 0, 0) Controls.BorderSizePixel = 0 Controls.Size = UDim2.fromScale(1, 1) local UIListLayout = Instance.new("UIListLayout") UIListLayout.Name = "UIListLayout" UIListLayout.Padding = UDim.new(0, 5) UIListLayout.FillDirection = Enum.FillDirection.Horizontal UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center UIListLayout.Parent = Controls local UIPadding = Instance.new("UIPadding") UIPadding.Name = "UIPadding" UIPadding.PaddingLeft = UDim.new(0, 11) UIPadding.Parent = Controls local WindowControlSettings = { Sizes = { Enabled = UDim2.fromOffset(8, 8), Disabled = UDim2.fromOffset(7, 7) }, Transparencies = { Enabled = 0, Disabled = 1 }, StrokeTransparency = 0.9, } local Stroke = Instance.new("UIStroke") Stroke.Name = "BaseUIStroke" Stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border Stroke.Color = Color3.fromRGB(255, 255, 255) Stroke.Transparency = WindowControlSettings.StrokeTransparency local Exit = Instance.new("TextButton") Exit.Name = "Exit" Exit.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Exit.Text = "" Exit.TextColor3 = Color3.fromRGB(0, 0, 0) Exit.TextSize = 14 Exit.AutoButtonColor = false Exit.BackgroundColor3 = Color3.fromRGB(0, 0, 102) Exit.BorderColor3 = Color3.fromRGB(0, 0, 0) Exit.BorderSizePixel = 0 Exit.LayoutOrder = 1 Exit.Parent = Controls local ExitUICorner = Instance.new("UICorner") ExitUICorner.Name = "UICorner" ExitUICorner.CornerRadius = UDim.new(1, 0) ExitUICorner.Parent = Exit local Minimize = Instance.new("TextButton") Minimize.Name = "Minimize" Minimize.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Minimize.Text = "" Minimize.TextColor3 = Color3.fromRGB(0, 0, 0) Minimize.TextSize = 14 Minimize.AutoButtonColor = false Minimize.BackgroundColor3 = Color3.fromRGB(51, 153, 255) Minimize.BorderColor3 = Color3.fromRGB(0, 0, 0) Minimize.BorderSizePixel = 0 Minimize.LayoutOrder = 2 Minimize.Parent = Controls local MinimizeUICorner = Instance.new("UICorner") MinimizeUICorner.Name = "UICorner" MinimizeUICorner.CornerRadius = UDim.new(1, 0) MinimizeUICorner.Parent = Minimize local GlobalSettingsButton = Instance.new("ImageButton") GlobalSettingsButton.Name = "GlobalSettingsButton" GlobalSettingsButton.Image = Assets.Globe GlobalSettingsButton.ImageTransparency = 0.5 GlobalSettingsButton.AnchorPoint = Vector2.new(1, 0.5) GlobalSettingsButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) GlobalSettingsButton.BackgroundTransparency = 1 GlobalSettingsButton.BorderColor3 = Color3.fromRGB(0, 0, 0) GlobalSettingsButton.BorderSizePixel = 0 GlobalSettingsButton.LayoutOrder = 5 GlobalSettingsButton.Position = UDim2.fromScale(1, 0.5) GlobalSettingsButton.Size = UDim2.fromOffset(12,12) GlobalSettingsButton.Parent = Controls local function ApplyState(Button, Enabled) local Size = Enabled and WindowControlSettings.Sizes.Enabled or WindowControlSettings.Sizes.Disabled local Transparency = Enabled and WindowControlSettings.Transparencies.Enabled or WindowControlSettings.Transparencies.Disabled Button.Size = Size Button.BackgroundTransparency = Transparency Button.Active = Enabled Button.Interactable = Enabled for _, Child in ipairs(Button:GetChildren()) do if Child:IsA("UIStroke") then Child.Transparency = Transparency end end if not Enabled then Stroke:Clone().Parent = Button end end local ControlsList = {Exit, Minimize} for _, Button in pairs(ControlsList) do local ButtonName = Button.Name local IsEnabled = true if Settings.DisabledWindowControls and table.find(Settings.DisabledWindowControls, ButtonName) then IsEnabled = false end ApplyState(Button, IsEnabled) end Controls.Parent = WindowControls WindowControls.Parent = Sidebar local Information = Instance.new("Frame") Information.Name = "Information" Information.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Information.BackgroundTransparency = 0.98 Information.BorderColor3 = Color3.fromRGB(0, 0, 0) Information.BorderSizePixel = 0 Information.Position = UDim2.new(0.5, 0, 0, 40) Information.Size = UDim2.new(0.925, 0, 0, 60) Information.AnchorPoint = Vector2.new(0.5, 0) local InformationUICorner = Instance.new("UICorner") InformationUICorner.Name = "InformationUICorner" InformationUICorner.CornerRadius = UDim.new(0, 10) InformationUICorner.Parent = Information local InformationHolderUIStroke = Instance.new("UIStroke") InformationHolderUIStroke.Name = "InformationHolderUIStroke" InformationHolderUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border InformationHolderUIStroke.Color = Color3.fromRGB(255, 255, 255) InformationHolderUIStroke.Transparency = 0.9 InformationHolderUIStroke.Parent = Information local Divider1 = Instance.new("Frame") Divider1.Name = "Divider" Divider1.AnchorPoint = Vector2.new(0, 1) Divider1.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Divider1.BackgroundTransparency = 0.9 Divider1.BorderColor3 = Color3.fromRGB(0, 0, 0) Divider1.BorderSizePixel = 0 Divider1.Position = UDim2.new(0, 0, 0, -12.5) Divider1.Size = UDim2.new(1, 0, 0, 1) Divider1.Parent = Information local Divider2 = Instance.new("Frame") Divider2.Name = "Divider" Divider2.AnchorPoint = Vector2.new(0, 1) Divider2.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Divider2.BackgroundTransparency = 0.9 Divider2.BorderColor3 = Color3.fromRGB(0, 0, 0) Divider2.BorderSizePixel = 0 Divider2.Position = UDim2.new(0, 0, 1, 12.5) Divider2.Size = UDim2.new(1, 0, 0, 1) Divider2.Parent = Information local InformationHolder = Instance.new("Frame") InformationHolder.Name = "InformationHolder" InformationHolder.BackgroundColor3 = Color3.fromRGB(255, 255, 255) InformationHolder.BackgroundTransparency = 1 InformationHolder.BorderColor3 = Color3.fromRGB(0, 0, 0) InformationHolder.BorderSizePixel = 0 InformationHolder.Size = UDim2.fromScale(1, 1) local InformationHolderUIPadding = Instance.new("UIPadding") InformationHolderUIPadding.Name = "InformationHolderUIPadding" InformationHolderUIPadding.PaddingBottom = UDim.new(0, 10) InformationHolderUIPadding.PaddingLeft = UDim.new(0, 23) InformationHolderUIPadding.PaddingRight = UDim.new(0, 22) InformationHolderUIPadding.PaddingTop = UDim.new(0, 10) InformationHolderUIPadding.Parent = InformationHolder local function ChangeGlobalSettingsButtonState(State) if State == "Default" then Utility:PropertyTween(GlobalSettingsButton, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { ImageTransparency = 0.5 }):Play() elseif State == "Hover" then Utility:PropertyTween(GlobalSettingsButton, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { ImageTransparency = 0 }):Play() end end GlobalSettingsButton.MouseEnter:Connect(function() ChangeGlobalSettingsButtonState("Hover") end) GlobalSettingsButton.MouseLeave:Connect(function() ChangeGlobalSettingsButtonState("Default") end) local TitleFrame = Instance.new("Frame") TitleFrame.Name = "TitleFrame" TitleFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TitleFrame.BackgroundTransparency = 1 TitleFrame.BorderColor3 = Color3.fromRGB(0, 0, 0) TitleFrame.BorderSizePixel = 0 TitleFrame.Size = UDim2.fromScale(1, 1) local Title = Instance.new("TextLabel") Title.Name = "Title" Title.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal ) Title.Text = Settings.Title Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.RichText = true Title.TextSize = 18 Title.TextTransparency = 0.1 Title.TextTruncate = Enum.TextTruncate.SplitWord Title.TextXAlignment = Enum.TextXAlignment.Left Title.TextYAlignment = Enum.TextYAlignment.Top Title.AutomaticSize = Enum.AutomaticSize.Y Title.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Title.BackgroundTransparency = 1 Title.BorderColor3 = Color3.fromRGB(0, 0, 0) Title.BorderSizePixel = 0 Title.Size = UDim2.new(1, 0, 0, 0) Title.Parent = TitleFrame local Subtitle = Instance.new("TextLabel") Subtitle.Name = "Subtitle" Subtitle.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal ) Subtitle.RichText = true Subtitle.Text = Settings.Subtitle or "" if Settings.Subtitle and Settings.Subtitle ~= "" then -- Caller supplied an explicit subtitle; keep the theme engine from -- replacing it with the "Build - | " template. Subtitle:SetAttribute("CustomSubtitle", true) end Subtitle.RichText = true Subtitle.TextColor3 = Color3.fromRGB(255, 255, 255) Subtitle.TextSize = 12 Subtitle.TextTransparency = 0.4 Subtitle.TextTruncate = Enum.TextTruncate.SplitWord Subtitle.TextXAlignment = Enum.TextXAlignment.Left Subtitle.TextYAlignment = Enum.TextYAlignment.Top Subtitle.AutomaticSize = Enum.AutomaticSize.Y Subtitle.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Subtitle.BackgroundTransparency = 1 Subtitle.BorderColor3 = Color3.fromRGB(0, 0, 0) Subtitle.BorderSizePixel = 0 Subtitle.LayoutOrder = 1 Subtitle.Size = UDim2.new(1, 0, 0, 0) Subtitle.Parent = TitleFrame local TitleFrameUIListLayout = Instance.new("UIListLayout") TitleFrameUIListLayout.Name = "TitleFrameUIListLayout" TitleFrameUIListLayout.Padding = UDim.new(0, 3) TitleFrameUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder TitleFrameUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center TitleFrameUIListLayout.Parent = TitleFrame TitleFrame.Parent = InformationHolder InformationHolder.Parent = Information Information.Parent = Sidebar local SidebarGroup = Instance.new("Frame") SidebarGroup.Name = "SidebarGroup" SidebarGroup.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SidebarGroup.BackgroundTransparency = 1 SidebarGroup.BorderColor3 = Color3.fromRGB(0, 0, 0) SidebarGroup.BorderSizePixel = 0 SidebarGroup.Position = UDim2.fromOffset(0, 91) SidebarGroup.Size = UDim2.new(1, 0, 1, -91) local UserInfo = Instance.new("Frame") UserInfo.Name = "UserInfo" UserInfo.AnchorPoint = Vector2.new(0, 1) UserInfo.BackgroundColor3 = Color3.fromRGB(255, 255, 255) UserInfo.BackgroundTransparency = 1 UserInfo.BorderColor3 = Color3.fromRGB(0, 0, 0) UserInfo.BorderSizePixel = 0 UserInfo.Position = UDim2.fromScale(0, 1) UserInfo.Size = UDim2.new(1, 0, 0, 107) local InformationGroup = Instance.new("Frame") InformationGroup.Name = "InformationGroup" InformationGroup.BackgroundColor3 = Color3.fromRGB(255, 255, 255) InformationGroup.BackgroundTransparency = 1 InformationGroup.BorderColor3 = Color3.fromRGB(0, 0, 0) InformationGroup.BorderSizePixel = 0 InformationGroup.Size = UDim2.fromScale(1, 1) InformationGroup.ZIndex = 2 local InformationGroupHighlight = Instance.new("Frame") InformationGroupHighlight.Name = "InformationGroupHighlight" InformationGroupHighlight.BackgroundColor3 = Color3.fromRGB(255, 255, 255) InformationGroupHighlight.BackgroundTransparency = 0.98 InformationGroupHighlight.BorderColor3 = Color3.fromRGB(0, 0, 0) InformationGroupHighlight.BorderSizePixel = 0 InformationGroupHighlight.Size = UDim2.fromScale(1, 0.5) InformationGroupHighlight.Position = UDim2.fromScale(0, 0.175) InformationGroup.ZIndex = 1 local HighlightUICorner = Instance.new("UICorner") HighlightUICorner.Name = "HighlightUICornerUICorner" HighlightUICorner.CornerRadius = UDim.new(1, 0) HighlightUICorner.Parent = InformationGroupHighlight local HighlightStroke = Instance.new("UIStroke") HighlightStroke.Name = "HighlightStroke" HighlightStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border HighlightStroke.Color = Color3.fromRGB(255, 255, 255) HighlightStroke.Transparency = 0.9 HighlightStroke.Parent = InformationGroupHighlight local InformationGroupUIPadding = Instance.new("UIPadding") InformationGroupUIPadding.Name = "InformationGroupUIPadding" InformationGroupUIPadding.PaddingBottom = UDim.new(0, 17) InformationGroupUIPadding.PaddingLeft = UDim.new(0, 25) InformationGroupUIPadding.Parent = InformationGroup local InformationGroupUIListLayout = Instance.new("UIListLayout") InformationGroupUIListLayout.Name = "InformationGroupUIListLayout" InformationGroupUIListLayout.FillDirection = Enum.FillDirection.Horizontal InformationGroupUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder InformationGroupUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center InformationGroupUIListLayout.Parent = InformationGroup local UserId = Utility:GetPlayer().UserId local ThumbType = Enum.ThumbnailType.AvatarBust local ThumbSize = Enum.ThumbnailSize.Size48x48 local HeadshotImage, IsReady = Services.Players:GetUserThumbnailAsync(UserId, ThumbType, ThumbSize) local Headshot = Instance.new("ImageLabel") Headshot.Name = "Headshot" Headshot.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Headshot.BackgroundTransparency = 1 Headshot.BorderColor3 = Color3.fromRGB(0, 0, 0) Headshot.BorderSizePixel = 0 Headshot.Size = UDim2.fromOffset(32, 32) Headshot.Image = (IsReady and HeadshotImage) or Assets.Null local Wallpaper = Instance.new("ImageLabel") Wallpaper.Name = "Wallpaper" Wallpaper.Image = Assets.StyleOneWallpaper Wallpaper.Size = UDim2.new(1, 0, 1, 0) Wallpaper.Position = UDim2.new(0, 0, 0, 0) Wallpaper.BackgroundTransparency = 1 Wallpaper.ImageTransparency = 0.65 Wallpaper.ImageColor3 = Color3.fromRGB(32, 32, 32) Wallpaper.ScaleType = Enum.ScaleType.Crop Wallpaper.Parent = Base local WallpaperUICorner = Instance.new("UICorner") WallpaperUICorner.Name = "WallpaperUICorner" WallpaperUICorner.CornerRadius = UDim.new(0, 10) WallpaperUICorner.Parent = Wallpaper local UICorner3 = Instance.new("UICorner") UICorner3.Name = "UICorner" UICorner3.CornerRadius = UDim.new(1, 0) UICorner3.Parent = Headshot local BaseUIStroke2 = Instance.new("UIStroke") BaseUIStroke2.Name = "BaseUIStroke" BaseUIStroke2.ApplyStrokeMode = Enum.ApplyStrokeMode.Border BaseUIStroke2.Color = Color3.fromRGB(255, 255, 255) BaseUIStroke2.Transparency = 0.9 BaseUIStroke2.Parent = Headshot Headshot.Parent = InformationGroup local UserAndDisplayFrame = Instance.new("Frame") UserAndDisplayFrame.Name = "UserAndDisplayFrame" UserAndDisplayFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) UserAndDisplayFrame.BackgroundTransparency = 1 UserAndDisplayFrame.BorderColor3 = Color3.fromRGB(0, 0, 0) UserAndDisplayFrame.BorderSizePixel = 0 UserAndDisplayFrame.LayoutOrder = 1 UserAndDisplayFrame.Size = UDim2.new(1, -42, 0, 32) -- grow to fit the extra key-status line beneath the username UserAndDisplayFrame.AutomaticSize = Enum.AutomaticSize.Y local DisplayName = Instance.new("TextLabel") DisplayName.Name = "DisplayName" DisplayName.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal ) if Utility:GetPlayer() then DisplayName.Text = Utility:GetPlayer().DisplayName else DisplayName.Text = "Unknown" end DisplayName.TextColor3 = Color3.fromRGB(255, 255, 255) DisplayName.TextSize = 13 DisplayName.TextTransparency = 0.1 DisplayName.TextTruncate = Enum.TextTruncate.SplitWord DisplayName.TextXAlignment = Enum.TextXAlignment.Left DisplayName.TextYAlignment = Enum.TextYAlignment.Top DisplayName.AutomaticSize = Enum.AutomaticSize.XY DisplayName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DisplayName.BackgroundTransparency = 1 DisplayName.BorderColor3 = Color3.fromRGB(0, 0, 0) DisplayName.BorderSizePixel = 0 DisplayName.Parent = UserAndDisplayFrame DisplayName.Size = UDim2.fromScale(1,0) local UserAndDisplayFrameUIPadding = Instance.new("UIPadding") UserAndDisplayFrameUIPadding.Name = "UserAndDisplayFrameUIPadding" UserAndDisplayFrameUIPadding.PaddingLeft = UDim.new(0, 8) UserAndDisplayFrameUIPadding.PaddingTop = UDim.new(0, 3) UserAndDisplayFrameUIPadding.Parent = UserAndDisplayFrame local UserAndDisplayFrameUIListLayout = Instance.new("UIListLayout") UserAndDisplayFrameUIListLayout.Name = "UserAndDisplayFrameUIListLayout" UserAndDisplayFrameUIListLayout.Padding = UDim.new(0, 1) UserAndDisplayFrameUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UserAndDisplayFrameUIListLayout.Parent = UserAndDisplayFrame local Username = Instance.new("TextLabel") Username.Name = "Username" Username.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal ) Username.Text = Utility:GetPlayer() and "@" .. Utility:GetPlayer().Name or "@" .. "Unknown" Username.TextColor3 = Color3.fromRGB(255, 255, 255) Username.TextSize = 12 Username.TextTransparency = 0.7 Username.TextTruncate = Enum.TextTruncate.SplitWord Username.TextXAlignment = Enum.TextXAlignment.Left Username.TextYAlignment = Enum.TextYAlignment.Top Username.AutomaticSize = Enum.AutomaticSize.XY Username.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Username.BackgroundTransparency = 1 Username.BorderColor3 = Color3.fromRGB(0, 0, 0) Username.BorderSizePixel = 0 Username.LayoutOrder = 1 Username.Parent = UserAndDisplayFrame Username.Size = UDim2.fromScale(1,0) -- Key-system status line under the username (premium/free + remaining time). -- Wrapped in a do-block so its locals are freed immediately (this whole -- function sits near Luau's per-function local limit). Reads the loader's -- getgenv().UserDataTable { IsUserPremium, UserTime (hours) }. do local KeyStatus = Instance.new("TextLabel") KeyStatus.Name = "KeyStatus" KeyStatus.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal ) KeyStatus.RichText = true KeyStatus.Text = "" KeyStatus.TextColor3 = Color3.fromRGB(255, 255, 255) KeyStatus.TextSize = 11 KeyStatus.TextTransparency = 0.15 KeyStatus.TextTruncate = Enum.TextTruncate.SplitWord KeyStatus.TextXAlignment = Enum.TextXAlignment.Left KeyStatus.TextYAlignment = Enum.TextYAlignment.Top KeyStatus.AutomaticSize = Enum.AutomaticSize.XY KeyStatus.BackgroundColor3 = Color3.fromRGB(255, 255, 255) KeyStatus.BackgroundTransparency = 1 KeyStatus.BorderColor3 = Color3.fromRGB(0, 0, 0) KeyStatus.BorderSizePixel = 0 KeyStatus.LayoutOrder = 2 KeyStatus.Size = UDim2.fromScale(1, 0) KeyStatus.Parent = UserAndDisplayFrame local function FormatKeyDuration(Hours) Hours = math.max(0, math.floor(tonumber(Hours) or 0)) if Hours <= 0 then return nil elseif Hours < 24 then return Hours .. "h" end local Days = math.floor(Hours / 24) local RemHours = Hours % 24 if RemHours == 0 then return Days .. "d" end return Days .. "d " .. RemHours .. "h" end local function UpdateKeyStatus() local Data pcall(function() if typeof(getgenv) == "function" then Data = getgenv().UserDataTable end end) local Hours = Data and tonumber(Data.UserTime) or 0 -- premium if the key system flagged it, or more than 13 hours remain local IsPremium = (Data and Data.IsUserPremium == true) or (Hours > 13) local Word = IsPremium and "Premium" or "Free" local WordColor = IsPremium and "#FFCF85" or "#AEB2BE" local Text = string.format('%s', WordColor, Word) local Duration = FormatKeyDuration(Hours) if Duration then Text = Text .. string.format(' · %s left', Duration) end KeyStatus.Text = Text end UpdateKeyStatus() task.spawn(function() -- settle quickly (the key check may fill the table just after load), -- then refresh slowly so the remaining time stays roughly current. for _ = 1, 10 do task.wait(0.5) if not KeyStatus.Parent then return end UpdateKeyStatus() end while KeyStatus.Parent do task.wait(60) UpdateKeyStatus() end end) end UserAndDisplayFrame.Parent = InformationGroup InformationGroup.Parent = UserInfo InformationGroupHighlight.Parent = UserInfo local UserInfoUIPadding = Instance.new("UIPadding") UserInfoUIPadding.Name = "UserInfoUIPadding" UserInfoUIPadding.PaddingLeft = UDim.new(0, 10) UserInfoUIPadding.PaddingRight = UDim.new(0, 10) UserInfoUIPadding.Parent = UserInfo UserInfo.Parent = SidebarGroup local SidebarGroupUIPadding = Instance.new("UIPadding") SidebarGroupUIPadding.Name = "SidebarGroupUIPadding" SidebarGroupUIPadding.PaddingLeft = UDim.new(0, 10) SidebarGroupUIPadding.PaddingRight = UDim.new(0, 10) SidebarGroupUIPadding.PaddingTop = UDim.new(0, 31) SidebarGroupUIPadding.Parent = SidebarGroup local TabSwitchers = Instance.new("Frame") TabSwitchers.Name = "TabSwitchers" TabSwitchers.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabSwitchers.BackgroundTransparency = 1 TabSwitchers.BorderColor3 = Color3.fromRGB(0, 0, 0) TabSwitchers.BorderSizePixel = 0 TabSwitchers.Size = UDim2.new(1, 0, 1, -107) local TabSwitchersScrollingFrame = Instance.new("ScrollingFrame") TabSwitchersScrollingFrame.Name = "TabSwitchersScrollingFrame" TabSwitchersScrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y TabSwitchersScrollingFrame.BottomImage = "" TabSwitchersScrollingFrame.CanvasSize = UDim2.new() TabSwitchersScrollingFrame.ScrollBarImageTransparency = 0.8 TabSwitchersScrollingFrame.ScrollBarThickness = 1 TabSwitchersScrollingFrame.TopImage = "" TabSwitchersScrollingFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabSwitchersScrollingFrame.BackgroundTransparency = 1 TabSwitchersScrollingFrame.BorderColor3 = Color3.fromRGB(0, 0, 0) TabSwitchersScrollingFrame.BorderSizePixel = 0 TabSwitchersScrollingFrame.Size = UDim2.fromScale(1, 1) local TabSwitchersScrollingFrameUIListLayout = Instance.new("UIListLayout") TabSwitchersScrollingFrameUIListLayout.Name = "TabSwitchersScrollingFrameUIListLayout" TabSwitchersScrollingFrameUIListLayout.Padding = UDim.new(0, 17) TabSwitchersScrollingFrameUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder TabSwitchersScrollingFrameUIListLayout.Parent = TabSwitchersScrollingFrame local TabSwitchersScrollingFrameUIPadding = Instance.new("UIPadding") TabSwitchersScrollingFrameUIPadding.Name = "TabSwitchersScrollingFrameUIPadding" TabSwitchersScrollingFrameUIPadding.PaddingTop = UDim.new(0, 2) TabSwitchersScrollingFrameUIPadding.Parent = TabSwitchersScrollingFrame TabSwitchersScrollingFrame.Parent = TabSwitchers TabSwitchers.Parent = SidebarGroup SidebarGroup.Parent = Sidebar Sidebar.Parent = Base local Content = Instance.new("Frame") Content.Name = "Content" Content.AnchorPoint = Vector2.new(1, 0) Content.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Content.BackgroundTransparency = 1 Content.BorderColor3 = Color3.fromRGB(0, 0, 0) Content.BorderSizePixel = 0 Content.Position = UDim2.fromScale(1, 4.69e-08) Content.Size = UDim2.new(0, (Base.AbsoluteSize.X - Sidebar.AbsoluteSize.X), 1, 0) local ResizingContent = false local DefaultSidebarWidth = Sidebar.AbsoluteSize.X local InitialMouseX, InitialSidebarWidth local SnapRange = 20 local MinSidebarWidth = 107 local MaxSidebarWidth = Base.AbsoluteSize.X - MinSidebarWidth local TweenSettings = { DefaultTransparency = 0.9, HoverTransparency = 0.85, EasingStyle = Enum.EasingStyle.Sine } local function ChangeState(State) Utility:PropertyTween(Divider, TweenInfo.new(0.2, TweenSettings.EasingStyle), { BackgroundTransparency = State == "Idle" and TweenSettings.DefaultTransparency or TweenSettings.HoverTransparency }):Play() end DividerInteract.MouseButton1Down:Connect(function() ResizingContent = true InitialMouseX = Services.UserInputService:GetMouseLocation().X InitialSidebarWidth = Sidebar.AbsoluteSize.X end) Services.UserInputService.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then ResizingContent = false end end) Services.UserInputService.InputChanged:Connect(function(Input) if ResizingContent and Input.UserInputType == Enum.UserInputType.MouseMovement then local DeltaX = Services.UserInputService:GetMouseLocation().X - InitialMouseX local NewSidebarWidth = InitialSidebarWidth + DeltaX if math.abs(NewSidebarWidth - DefaultSidebarWidth) < SnapRange then NewSidebarWidth = DefaultSidebarWidth else NewSidebarWidth = math.clamp(NewSidebarWidth, MinSidebarWidth, MaxSidebarWidth) end Sidebar.Size = UDim2.new(0, NewSidebarWidth, 1, 0) Content.Size = UDim2.new(0, Base.AbsoluteSize.X - NewSidebarWidth, 1, 0) end end) local Topbar = Instance.new("Frame") Topbar.Name = "Topbar" Topbar.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Topbar.BackgroundTransparency = 1 Topbar.BorderColor3 = Color3.fromRGB(0, 0, 0) Topbar.BorderSizePixel = 0 Topbar.Size = UDim2.new(1, 0, 0, 63) Topbar.ZIndex = 2 local Divider4 = Instance.new("Frame") Divider4.Name = "Divider" Divider4.AnchorPoint = Vector2.new(0, 1) Divider4.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Divider4.BackgroundTransparency = 0.9 Divider4.BorderColor3 = Color3.fromRGB(0, 0, 0) Divider4.BorderSizePixel = 0 Divider4.Position = UDim2.fromScale(0, 1) Divider4.Size = UDim2.new(1, 0, 0, 1) Divider4.Parent = Topbar local Elements = Instance.new("Frame") Elements.Name = "Elements" Elements.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Elements.BackgroundTransparency = 1 Elements.BorderColor3 = Color3.fromRGB(0, 0, 0) Elements.BorderSizePixel = 0 Elements.Size = UDim2.fromScale(1, 1) local UIPadding2 = Instance.new("UIPadding") UIPadding2.Name = "UIPadding" UIPadding2.PaddingLeft = UDim.new(0, 20) UIPadding2.PaddingRight = UDim.new(0, 20) UIPadding2.Parent = Elements local TopbarFolder = Instance.new("Frame") TopbarFolder.Name = "TopbarFolder" TopbarFolder.Parent = Elements TopbarFolder.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TopbarFolder.BackgroundTransparency = 1 TopbarFolder.BorderColor3 = Color3.fromRGB(0, 0, 0) TopbarFolder.BorderSizePixel = 0 TopbarFolder.Size = UDim2.fromScale(1, 1) TopbarFolder.Position = UDim2.fromScale(0, 0) TopbarFolder.AnchorPoint = Vector2.new(0, 0) TopbarFolder.Parent = Elements local TopbarUIListLayout = Instance.new("UIListLayout") TopbarUIListLayout.Name = "TopbarUIListLayout" TopbarUIListLayout.FillDirection = Enum.FillDirection.Horizontal TopbarUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder TopbarUIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right TopbarUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center TopbarUIListLayout.Padding = UDim.new(0, 10) TopbarUIListLayout.Parent = TopbarFolder local MoveIcon = Instance.new("ImageButton") MoveIcon.Name = "MoveIcon" MoveIcon.Image = Assets.Transform MoveIcon.ImageTransparency = 0.7 MoveIcon.AnchorPoint = Vector2.new(1, 0.5) MoveIcon.BackgroundColor3 = Color3.fromRGB(255, 255, 255) MoveIcon.BackgroundTransparency = 1 MoveIcon.BorderColor3 = Color3.fromRGB(0, 0, 0) MoveIcon.BorderSizePixel = 0 MoveIcon.Position = UDim2.fromScale(1, 0.5) MoveIcon.Size = UDim2.fromOffset(15, 15) MoveIcon.Parent = TopbarFolder MoveIcon.Visible = not Settings.DragStyle or Settings.DragStyle == 1 local Interact = Instance.new("TextButton") Interact.Name = "Interact" Interact.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Interact.Text = "" Interact.TextColor3 = Color3.fromRGB(0, 0, 0) Interact.TextSize = 14 Interact.AnchorPoint = Vector2.new(0.5, 0.5) Interact.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Interact.BackgroundTransparency = 1 Interact.BorderColor3 = Color3.fromRGB(0, 0, 0) Interact.BorderSizePixel = 0 Interact.Position = UDim2.fromScale(0.5, 0.5) Interact.Size = UDim2.fromOffset(40, 40) Interact.Parent = MoveIcon local function ChangeMoveIconState(State) if State == "Default" then Utility:PropertyTween(MoveIcon, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { ImageTransparency = 0.7 }):Play() elseif State == "Hover" then Utility:PropertyTween(MoveIcon, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { ImageTransparency = 0.4 }):Play() end end Interact.MouseEnter:Connect(function() ChangeMoveIconState("Hover") end) Interact.MouseLeave:Connect(function() ChangeMoveIconState("Default") end) local Dragging = false local DragInput local DragStart local StartPos local function Update(Input) local Delta = Input.Position - DragStart Base.Position = UDim2.new(StartPos.X.Scale, StartPos.X.Offset + Delta.X, StartPos.Y.Scale, StartPos.Y.Offset + Delta.Y) end local function OnDragStart(Input) -- Don't start a window drag when the press began over an element that -- captures its own drag (e.g. a viewport being orbited). Those set a -- flag on WaveLibrary while hovered / pressed. if WaveLibrary.ViewportHovering or WaveLibrary.ViewportCapturingDrag then return end if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then Dragging = true DragStart = Input.Position StartPos = Base.Position Input.Changed:Connect(function() if Input.UserInputState == Enum.UserInputState.End then Dragging = false end end) end end local function OnDragUpdate(Input) if Dragging and (Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch) then DragInput = Input end end if not Settings.DragStyle or Settings.DragStyle == 1 then Interact.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then OnDragStart(Input) end end) Interact.InputChanged:Connect(OnDragUpdate) Services.UserInputService.InputChanged:Connect(function(Input) if Input == DragInput and Dragging then Update(Input) end end) Interact.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then Dragging = false end end) elseif Settings.DragStyle == 2 then Base.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then OnDragStart(Input) end end) Base.InputChanged:Connect(OnDragUpdate) Services.UserInputService.InputChanged:Connect(function(Input) if Input == DragInput and Dragging then Update(Input) end end) Base.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then Dragging = false end end) end local SearchTab = Instance.new("Frame") SearchTab.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SearchTab.BackgroundTransparency = 0.95 SearchTab.BorderColor3 = Color3.fromRGB(0, 0, 0) SearchTab.BorderSizePixel = 0 SearchTab.LayoutOrder = -1 SearchTab.Position = UDim2.fromScale(0, 0.3) SearchTab.Size = UDim2.new(0, 240, 0, 30) SearchTab.Name = "HeaderSearchBar" SearchTab.Parent = Elements local HeaderSearchOptions = Instance.new("ScrollingFrame") HeaderSearchOptions.BackgroundColor3 = Color3.fromRGB(8, 8, 8) HeaderSearchOptions.BackgroundTransparency = 0.6 HeaderSearchOptions.Position = UDim2.new(0, 0, 1, 10) HeaderSearchOptions.Visible = false HeaderSearchOptions.Size = UDim2.new(1, 0, 0, 0) HeaderSearchOptions.AutomaticSize = Enum.AutomaticSize.Y HeaderSearchOptions.Name = "HeaderSearchOptions" HeaderSearchOptions.AutomaticCanvasSize = Enum.AutomaticSize.Y HeaderSearchOptions.BottomImage = "" HeaderSearchOptions.CanvasSize = UDim2.new() HeaderSearchOptions.ScrollBarImageTransparency = 0.8 HeaderSearchOptions.ScrollBarThickness = 1 HeaderSearchOptions.TopImage = "" HeaderSearchOptions.BorderColor3 = Color3.fromRGB(0, 0, 0) HeaderSearchOptions.BorderSizePixel = 0 HeaderSearchOptions.Parent = SearchTab local HeaderSearchOptionsUIStroke = Instance.new("UIStroke") HeaderSearchOptionsUIStroke.Name = "HeaderSearchOptionsUIStroke" HeaderSearchOptionsUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border HeaderSearchOptionsUIStroke.Color = Color3.fromRGB(255, 255, 255) HeaderSearchOptionsUIStroke.Transparency = 0.9 HeaderSearchOptionsUIStroke.Parent = HeaderSearchOptions local HeaderSearchOptionsUIPadding = Instance.new("UIPadding") HeaderSearchOptionsUIPadding.Name = "HeaderSearchOptionsUIPadding" HeaderSearchOptionsUIPadding.PaddingTop = UDim.new(0, 2) HeaderSearchOptionsUIPadding.Parent = HeaderSearchOptions local OptionsUIListLayout = Instance.new("UIListLayout") OptionsUIListLayout.Name = "OptionsUIListLayout" OptionsUIListLayout.Padding = UDim.new(0, 5) OptionsUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder OptionsUIListLayout.Parent = HeaderSearchOptions local SearchTabUICorner = Instance.new("UICorner", SearchTab) local SearchImageLabel = Instance.new("ImageLabel") SearchImageLabel.Parent = SearchTab SearchImageLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SearchImageLabel.BackgroundTransparency = 1.000 SearchImageLabel.BorderColor3 = Color3.fromRGB(0, 0, 0) SearchImageLabel.BorderSizePixel = 0 SearchImageLabel.Position = UDim2.new(0.0366078243, 0, 0.300000012, 0) SearchImageLabel.Size = UDim2.new(0, 12, 0, 12) SearchImageLabel.Image = Assets.IconSearchImageLabel SearchImageLabel.ImageColor3 = Color3.fromRGB(180, 180, 180) local SearchTextBox = Instance.new("TextBox") SearchTextBox.Name = "HeaderInputSearchBox" SearchTextBox.Parent = SearchTab SearchTextBox.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SearchTextBox.BackgroundTransparency = 1.000 SearchTextBox.BorderColor3 = Color3.fromRGB(0, 0, 0) SearchTextBox.BorderSizePixel = 0 SearchTextBox.Position = UDim2.new(0.1, 0, 0, 0) SearchTextBox.Size = UDim2.new(0, 220, 0, 30) SearchTextBox.FontFace = Font.new(Assets.InterFont) SearchTextBox.PlaceholderText = "Search..." SearchTextBox.Text = "" SearchTextBox.TextColor3 = Color3.fromRGB(200, 200, 200) SearchTextBox.TextSize = 14.000 SearchTextBox.TextXAlignment = Enum.TextXAlignment.Left local CurrentTabDivider = Instance.new("Frame") CurrentTabDivider.Name = "CurrentTabDivider" CurrentTabDivider.AnchorPoint = Vector2.new(0, 1) CurrentTabDivider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) CurrentTabDivider.BackgroundTransparency = 0.9 CurrentTabDivider.BorderColor3 = Color3.fromRGB(0, 0, 0) CurrentTabDivider.BorderSizePixel = 0 CurrentTabDivider.Visible = false CurrentTabDivider.Position = UDim2.new(0.5, 0, 0, 42.5) CurrentTabDivider.AnchorPoint = Vector2.new(0.5, 0) CurrentTabDivider.Size = UDim2.new(0.05, 0, 0, 1) CurrentTabDivider.Parent = Elements local CurrentTab = Instance.new("TextLabel") CurrentTab.Name = "CurrentTab" CurrentTab.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold) CurrentTab.RichText = true CurrentTab.Text = "Loading" CurrentTab.RichText = true CurrentTab.TextColor3 = Color3.fromRGB(255, 255, 255) CurrentTab.TextSize = 18 CurrentTab.TextTransparency = 0.5 CurrentTab.TextTruncate = Enum.TextTruncate.SplitWord CurrentTab.TextXAlignment = Enum.TextXAlignment.Center CurrentTab.TextYAlignment = Enum.TextYAlignment.Top CurrentTab.AnchorPoint = Vector2.new(0, 0.5) CurrentTab.AutomaticSize = Enum.AutomaticSize.Y CurrentTab.BackgroundColor3 = Color3.fromRGB(255, 255, 255) CurrentTab.BackgroundTransparency = 1 CurrentTab.BorderColor3 = Color3.fromRGB(0, 0, 0) CurrentTab.BorderSizePixel = 0 CurrentTab.Position = UDim2.fromScale(0, 0.5) CurrentTab.Size = UDim2.fromScale(1, 0) CurrentTab.Parent = Elements Elements.Parent = Topbar Topbar.Parent = Content Content.Parent = Base local GlobalSettings = Instance.new("Frame") GlobalSettings.Name = "Settings" GlobalSettings.AutomaticSize = Enum.AutomaticSize.XY GlobalSettings.BackgroundColor3 = Color3.fromRGB(15, 15, 15) GlobalSettings.BorderColor3 = Color3.fromRGB(0, 0, 0) GlobalSettings.BorderSizePixel = 0 GlobalSettings.Position = UDim2.fromScale(0.07, 0.025) local GlobalSettingsUIStroke = Instance.new("UIStroke") GlobalSettingsUIStroke.Name = "GlobalSettingsUIStroke" GlobalSettingsUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border GlobalSettingsUIStroke.Color = Color3.fromRGB(255, 255, 255) GlobalSettingsUIStroke.Transparency = 0.9 GlobalSettingsUIStroke.Parent = GlobalSettings local GlobalSettingsUICorner = Instance.new("UICorner") GlobalSettingsUICorner.Name = "GlobalSettingsUICorner" GlobalSettingsUICorner.CornerRadius = UDim.new(0, 10) GlobalSettingsUICorner.Parent = GlobalSettings local GlobalSettingsUIPadding = Instance.new("UIPadding") GlobalSettingsUIPadding.Name = "GlobalSettingsUIPadding" GlobalSettingsUIPadding.PaddingBottom = UDim.new(0, 10) GlobalSettingsUIPadding.PaddingTop = UDim.new(0, 10) GlobalSettingsUIPadding.Parent = GlobalSettings local GlobalSettingsUIListLayout = Instance.new("UIListLayout") GlobalSettingsUIListLayout.Name = "GlobalSettingsUIListLayout" GlobalSettingsUIListLayout.Padding = UDim.new(0, 5) GlobalSettingsUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder GlobalSettingsUIListLayout.Parent = GlobalSettings local GlobalSettingsUIScale = Instance.new("UIScale") GlobalSettingsUIScale.Name = "GlobalSettingsUIScale" GlobalSettingsUIScale.Scale = 1e-07 GlobalSettingsUIScale.Parent = GlobalSettings GlobalSettings.Parent = Base Base.Parent = WaveLibraryUI local Terminal = TerminalModule.new(Base, TopbarFolder, WaveLibrary, WaveLibraryUI, WindowFunctions) WindowFunctions.Terminal = Terminal function WindowFunctions:TerminalViewport(Options) if Terminal and Terminal.Terminal then Terminal.Terminal.Visible = true end return Terminal and Terminal:CreateModelViewport(Options) end -- Server browser: a slide-out panel of joinable servers (mirrors the Terminal, icon to its left). -- Instantiated in a do-block so it adds no persistent local (this function is near Luau's limit); -- the API below are separate WindowFunctions methods, which don't count toward that limit. do local SB = Utility:LoadFile("Wave/UserInterface/Imports/ServerBrowser/ServerBrowserModule.lua") if SB then WindowFunctions.ServerBrowser = SB.new(Base, TopbarFolder, WaveLibrary, WaveLibraryUI, WindowFunctions) end end function WindowFunctions:AddServer(Options) if self.ServerBrowser then return self.ServerBrowser:AddServer(Options) end end function WindowFunctions:ClearServers() if self.ServerBrowser then self.ServerBrowser:ClearServers() end return self end function WindowFunctions:SetServerRefresh(Callback) if self.ServerBrowser then self.ServerBrowser:SetRefreshCallback(Callback) end return self end function WindowFunctions:SetServerTitle(Text) if self.ServerBrowser then self.ServerBrowser:SetTitle(Text) end return self end function WindowFunctions:ToggleServerBrowser(State) if self.ServerBrowser then if State == nil then State = not self.ServerBrowser.Open end self.ServerBrowser:SetOpen(State) end return self end local Hovering local Toggled = GlobalSettingsUIScale.Scale == 1 and true or false local function Toggle() if not Toggled then local InTween = Utility:PropertyTween(GlobalSettingsUIScale, TweenInfo.new(0.2, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Scale = 1 }) InTween:Play() InTween.Completed:Wait() Toggled = true elseif Toggled then local OutTween = Utility:PropertyTween(GlobalSettingsUIScale, TweenInfo.new(0.2, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Scale = 0 }) OutTween:Play() OutTween.Completed:Wait() Toggled = false end end GlobalSettingsButton.MouseButton1Click:Connect(function() if not WaveLibrary.InitializedGlobalSettings then return end Toggle() end) GlobalSettings.MouseEnter:Connect(function() Hovering = true end) GlobalSettings.MouseLeave:Connect(function() Hovering = false end) Services.UserInputService.InputEnded:Connect(function(Inp) if Inp.UserInputType == Enum.UserInputType.MouseButton1 and Toggled and not Hovering then Toggle() end end) local BlurTargets = {Base, Base.Terminal} local Camera = Utility:GetCamera() local WedgeGuid = Services.HttpService:GenerateGUID(true) local Binds = {} local DepthOfField local CreatedInstances = {} local function CleanupExistingBlur() for _, LightInstance in pairs(Services.Lighting:GetChildren()) do if LightInstance:IsA("DepthOfFieldEffect") and LightInstance:HasTag(".") then LightInstance:Destroy() end end for _, BlurTarget in ipairs(BlurTargets) do for _, Child in pairs(BlurTarget:GetChildren()) do if Child:IsA("Frame") and Child.Name:match("%x+-%x+-%x+-%x+-%x+") then Child:Destroy() end end end for _, Part in pairs(Camera:GetChildren()) do if Part:IsA("Part") and Part.Name:match("%x+-%x+-%x+-%x+-%x+") then Part:Destroy() end end end CleanupExistingBlur() for _, LightInstance in pairs(Services.Lighting:GetChildren()) do if LightInstance:IsA("DepthOfFieldEffect") and LightInstance:HasTag(".") then DepthOfField = LightInstance break end end if not DepthOfField then DepthOfField = Instance.new('DepthOfFieldEffect') DepthOfField.FarIntensity = 0 DepthOfField.FocusDistance = 51.6 DepthOfField.InFocusRadius = 50 DepthOfField.NearIntensity = 1 DepthOfField.Name = Services.HttpService:GenerateGUID(true) DepthOfField:AddTag(".") end table.insert(CreatedInstances, DepthOfField) local function IsNotNaN(Value) return Value == Value end local Continue = IsNotNaN(Camera:ScreenPointToRay(0, 0).Origin.x) while not Continue do Services.RunService.RenderStepped:wait() Continue = IsNotNaN(Camera:ScreenPointToRay(0, 0).Origin.x) end local ArcCosine = math.acos local Maximum = math.max local Pi = math.pi local SquareRoot = math.sqrt local Size = 0.2 local function DrawTriangle(Vertex1, Vertex2, Vertex3, Part0, Part1) local Side1 = (Vertex1 - Vertex2).magnitude local Side2 = (Vertex2 - Vertex3).magnitude local Side3 = (Vertex3 - Vertex1).magnitude local SideMaximum = Maximum(Side1, Side2, Side3) local VertexA, VertexB, VertexC if Side1 == SideMaximum then VertexA, VertexB, VertexC = Vertex1, Vertex2, Vertex3 elseif Side2 == SideMaximum then VertexA, VertexB, VertexC = Vertex2, Vertex3, Vertex1 else VertexA, VertexB, VertexC = Vertex3, Vertex1, Vertex2 end local Parallel = ((VertexB - VertexA).x * (VertexC - VertexA).x + (VertexB - VertexA).y * (VertexC - VertexA).y + (VertexB - VertexA).z * (VertexC - VertexA).z) / (VertexA - VertexB).magnitude local Perpendicular = SquareRoot((VertexC - VertexA).magnitude^2 - Parallel * Parallel) local DifferenceParallel = (VertexA - VertexB).magnitude - Parallel local Start = CFrame.new(VertexB, VertexA) local ZAngle = CFrame.Angles(Pi / 2, 0, 0) local CoordinateFrame0 = Start local TopLookVector = (CoordinateFrame0 * ZAngle).lookVector local MidPoint = VertexA + CFrame.new(VertexA, VertexB).lookVector * Parallel local NeededLookVector = CFrame.new(MidPoint, VertexC).lookVector local DotProduct = TopLookVector.x * NeededLookVector.x + TopLookVector.y * NeededLookVector.y + TopLookVector.z * NeededLookVector.z local AngleCFrame = CFrame.Angles(0, 0, ArcCosine(DotProduct)) CoordinateFrame0 = CoordinateFrame0 * AngleCFrame if ((CoordinateFrame0 * ZAngle).lookVector - NeededLookVector).magnitude > 0.01 then CoordinateFrame0 = CoordinateFrame0 * CFrame.Angles(0, 0, -2 * ArcCosine(DotProduct)) end CoordinateFrame0 = CoordinateFrame0 * CFrame.new(0, Perpendicular / 2, -(DifferenceParallel + Parallel / 2)) local CoordinateFrame1 = Start * AngleCFrame * CFrame.Angles(0, Pi, 0) if ((CoordinateFrame1 * ZAngle).lookVector - NeededLookVector).magnitude > 0.01 then CoordinateFrame1 = CoordinateFrame1 * CFrame.Angles(0, 0, 2 * ArcCosine(DotProduct)) end CoordinateFrame1 = CoordinateFrame1 * CFrame.new(0, Perpendicular / 2, DifferenceParallel / 2) if not Part0 or not Part0:IsA("Part") or not Part0.Parent then Part0 = Instance.new('Part') Part0.FormFactor = 'Custom' Part0.TopSurface = 0 Part0.BottomSurface = 0 Part0.Anchored = true Part0.CanCollide = false Part0.CastShadow = false Part0.Material = "Glass" Part0.Size = Vector3.new(Size, Size, Size) Part0.Name = Services.HttpService:GenerateGUID(true) local Mesh = Instance.new('SpecialMesh', Part0) Mesh.MeshType = 2 Mesh.Name = WedgeGuid end if Part0 and Part0:FindFirstChild(WedgeGuid) then Part0[WedgeGuid].Scale = Vector3.new(0, Perpendicular / Size, Parallel / Size) Part0.CFrame = CoordinateFrame0 end if not Part1 or not Part1:IsA("Part") or not Part1.Parent then Part1 = Part0:clone() end if Part1 and Part1:FindFirstChild(WedgeGuid) then Part1[WedgeGuid].Scale = Vector3.new(0, Perpendicular / Size, DifferenceParallel / Size) Part1.CFrame = CoordinateFrame1 end return Part0, Part1 end function DrawQuad(Vertex1, Vertex2, Vertex3, Vertex4, Parts) Parts[1], Parts[2] = DrawTriangle(Vertex1, Vertex2, Vertex3, Parts[1], Parts[2]) Parts[3], Parts[4] = DrawTriangle(Vertex3, Vertex2, Vertex4, Parts[3], Parts[4]) end local function CleanupBlur() for Frame, Data in pairs(Binds) do if Data.Connection then Data.Connection:Disconnect() Data.Connection = nil end if Data.Parts then for _, Part in pairs(Data.Parts) do if Part and Part.Parent then Part.Parent = nil end if Part then pcall(function() Part:Destroy() end) end end Data.Parts = {} end if Frame and Frame.Parent then pcall(function() Frame:Destroy() end) end end Binds = {} if DepthOfField then DepthOfField.Enabled = false if DepthOfField.Parent then DepthOfField.Parent = nil end pcall(function() DepthOfField:Destroy() end) DepthOfField = nil end if WaveLibrary.UpdateOrientation then WaveLibrary.UpdateOrientation:Disconnect() WaveLibrary.UpdateOrientation = nil end for _, Instance in ipairs(CreatedInstances) do if Instance and Instance.Parent then pcall(function() Instance:Destroy() end) end end CreatedInstances = {} end if WaveLibrary.Unloaded then CleanupBlur() return end for _, BlurTarget in ipairs(BlurTargets) do local Frame = Instance.new('Frame') Frame.Parent = BlurTarget Frame.Size = UDim2.new(0.97, 0, 0.97, 0) Frame.Position = UDim2.new(0.5, 0, 0.5, 0) Frame.AnchorPoint = Vector2.new(0.5, 0.5) Frame.BackgroundTransparency = 1 Frame.Name = Services.HttpService:GenerateGUID(true) table.insert(CreatedInstances, Frame) if Binds[Frame] then continue end local Parts = {} local Parents = {} local function Add(Child) if Child:IsA'GuiObject' then Parents[#Parents + 1] = Child Add(Child.Parent) end end Add(Frame) local function IsVisible(Instance) while Instance do if Instance:IsA("GuiObject") then if not Instance.Visible then return false end elseif Instance:IsA("ScreenGui") then if not Instance.Enabled then return false end break end Instance = Instance.Parent end return true end local function UpdateOrientation(FetchProperties) if not IsVisible(Frame) or not WaveLibrary.AcrylicBlur or WaveLibrary.Unloaded then for i, Part in pairs(Parts) do if Part and Part.Parent then Part.Parent = nil end if Part then pcall(function() Part:Destroy() end) end Parts[i] = nil end if DepthOfField then pcall(function() DepthOfField.Enabled = false DepthOfField.Parent = nil end) end return end if DepthOfField and not DepthOfField.Parent then pcall(function() DepthOfField.Parent = Services.Lighting end) end if DepthOfField then pcall(function() DepthOfField.Enabled = true end) end local Properties = { Transparency = 0.98; BrickColor = BrickColor.new('Institutional white'); } local ZIndex = 1 - 0.05 * Frame.ZIndex local TopLeft = Frame.AbsolutePosition local BottomRight = Frame.AbsolutePosition + Frame.AbsoluteSize local TopRight = Vector2.new(BottomRight.x, TopLeft.y) local BottomLeft = Vector2.new(TopLeft.x, BottomRight.y) local Rotation = 0 for _, Parent in ipairs(Parents) do Rotation = Rotation + Parent.Rotation end if Rotation ~= 0 and Rotation % 180 ~= 0 then local Middle = TopLeft:lerp(BottomRight, 0.5) local Sine = math.sin(math.rad(Rotation)) local Cosine = math.cos(math.rad(Rotation)) TopLeft = Vector2.new(Cosine * (TopLeft.x - Middle.x) - Sine * (TopLeft.y - Middle.y), Sine * (TopLeft.x - Middle.x) + Cosine * (TopLeft.y - Middle.y)) + Middle TopRight = Vector2.new(Cosine * (TopRight.x - Middle.x) - Sine * (TopRight.y - Middle.y), Sine * (TopRight.x - Middle.x) + Cosine * (TopRight.y - Middle.y)) + Middle BottomLeft = Vector2.new(Cosine * (BottomLeft.x - Middle.x) - Sine * (BottomLeft.y - Middle.y), Sine * (BottomLeft.x - Middle.x) + Cosine * (BottomLeft.y - Middle.y)) + Middle BottomRight = Vector2.new(Cosine * (BottomRight.x - Middle.x) - Sine * (BottomRight.y - Middle.y), Sine * (BottomRight.x - Middle.x) + Cosine * (BottomRight.y - Middle.y)) + Middle end DrawQuad( Camera:ScreenPointToRay(TopLeft.x, TopLeft.y, ZIndex).Origin, Camera:ScreenPointToRay(TopRight.x, TopRight.y, ZIndex).Origin, Camera:ScreenPointToRay(BottomLeft.x, BottomLeft.y, ZIndex).Origin, Camera:ScreenPointToRay(BottomRight.x, BottomRight.y, ZIndex).Origin, Parts ) if FetchProperties then for _, Part in pairs(Parts) do if Part and Part:IsA("Part") then Part.Parent = Camera end end for PropertyName, PropertyValue in pairs(Properties) do for _, Part in pairs(Parts) do if Part and Part:IsA("Part") then pcall(function() Part[PropertyName] = PropertyValue end) end end end end end local Connection = Services.RunService.RenderStepped:Connect(UpdateOrientation) WaveLibrary.UpdateOrientation = Connection Binds[Frame] = {Parts = Parts, Connection = Connection} end task.spawn(function() while not WaveLibrary.Unloaded do task.wait(0.1) end CleanupBlur() end) function WindowFunctions:AdjustSidebars(ValueOne, ValueTwo) Sidebar.Size = UDim2.new(0, ValueOne, 1, 0) Content.Size = UDim2.new(0, ValueTwo, 1, 0) end function WindowFunctions:GlobalSetting(Settings) WaveLibrary.InitializedGlobalSettings = true local GlobalSettingFunctions = {} local GlobalSetting = Instance.new("TextButton") GlobalSetting.Name = "GlobalSetting" GlobalSetting.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") GlobalSetting.Text = "" GlobalSetting.TextColor3 = Color3.fromRGB(0, 0, 0) GlobalSetting.TextSize = 14 GlobalSetting.BackgroundColor3 = Color3.fromRGB(255, 255, 255) GlobalSetting.BackgroundTransparency = 1 GlobalSetting.BorderColor3 = Color3.fromRGB(0, 0, 0) GlobalSetting.BorderSizePixel = 0 GlobalSetting.Size = UDim2.fromOffset(200, 30) local GlobalSettingToggleUIPadding = Instance.new("UIPadding") GlobalSettingToggleUIPadding.Name = "GlobalSettingToggleUIPadding" GlobalSettingToggleUIPadding.PaddingLeft = UDim.new(0, 15) GlobalSettingToggleUIPadding.Parent = GlobalSetting local SettingName = Instance.new("TextLabel") SettingName.Name = "SettingName" SettingName.FontFace = Font.new(Assets.InterFont) SettingName.Text = Settings.Name SettingName.RichText = true SettingName.TextColor3 = Color3.fromRGB(255, 255, 255) SettingName.TextSize = 13 SettingName.TextTransparency = 0.5 SettingName.TextTruncate = Enum.TextTruncate.SplitWord SettingName.TextXAlignment = Enum.TextXAlignment.Left SettingName.TextYAlignment = Enum.TextYAlignment.Top SettingName.AnchorPoint = Vector2.new(0, 0.5) SettingName.AutomaticSize = Enum.AutomaticSize.Y SettingName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SettingName.BackgroundTransparency = 1 SettingName.BorderColor3 = Color3.fromRGB(0, 0, 0) SettingName.BorderSizePixel = 0 SettingName.Position = UDim2.fromScale(1.3e-07, 0.5) SettingName.Size = UDim2.new(1,-40,0,0) SettingName.Parent = GlobalSetting local GlobalSettingToggleUIListLayout = Instance.new("UIListLayout") GlobalSettingToggleUIListLayout.Name = "GlobalSettingToggleUIListLayout" GlobalSettingToggleUIListLayout.Padding = UDim.new(0, 10) GlobalSettingToggleUIListLayout.FillDirection = Enum.FillDirection.Horizontal GlobalSettingToggleUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder GlobalSettingToggleUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center GlobalSettingToggleUIListLayout.Parent = GlobalSetting local Checkmark = Instance.new("TextLabel") Checkmark.Name = "Checkmark" Checkmark.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal ) Checkmark.Text = "✓" Checkmark.TextColor3 = Color3.fromRGB(255, 255, 255) Checkmark.TextSize = 13 Checkmark.TextTransparency = 1 Checkmark.TextXAlignment = Enum.TextXAlignment.Left Checkmark.TextYAlignment = Enum.TextYAlignment.Top Checkmark.AnchorPoint = Vector2.new(0, 0.5) Checkmark.AutomaticSize = Enum.AutomaticSize.Y Checkmark.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Checkmark.BackgroundTransparency = 1 Checkmark.BorderColor3 = Color3.fromRGB(0, 0, 0) Checkmark.BorderSizePixel = 0 Checkmark.LayoutOrder = -1 Checkmark.Position = UDim2.fromScale(1.3e-07, 0.5) Checkmark.Size = UDim2.fromOffset(-10, 0) Checkmark.Parent = GlobalSetting GlobalSetting.Parent = GlobalSettings local TweenSettings = { Duration = 0.2, EasingStyle = Enum.EasingStyle.Quint, TransparencyIn = 0.2, TransparencyOut = 0.5, CheckSizeIncrease = 12, CheckSizeDecrease = -GlobalSettingToggleUIListLayout.Padding.Offset, WaitTime = 1 } local Tweens = { CheckIn = Utility:PropertyTween(Checkmark, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { Size = UDim2.new(Checkmark.Size.X.Scale, TweenSettings.CheckSizeIncrease, Checkmark.Size.Y.Scale, Checkmark.Size.Y.Offset) }), CheckOut = Utility:PropertyTween(Checkmark, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle),{ Size = UDim2.new(Checkmark.Size.X.Scale, TweenSettings.CheckSizeDecrease, Checkmark.Size.Y.Scale, Checkmark.Size.Y.Offset) }), NameIn = Utility:PropertyTween(SettingName, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle),{ TextTransparency = TweenSettings.TransparencyIn }), NameOut = Utility:PropertyTween(SettingName, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle),{ TextTransparency = TweenSettings.TransparencyOut }) } local function Toggle(State) if not State then Tweens.CheckOut:Play() Tweens.NameOut:Play() Checkmark:GetPropertyChangedSignal("AbsoluteSize"):Connect(function() if Checkmark.AbsoluteSize.X <= 0 then Checkmark.TextTransparency = 1 end end) else Tweens.CheckIn:Play() Tweens.NameIn:Play() Checkmark:GetPropertyChangedSignal("AbsoluteSize"):Connect(function() if Checkmark.AbsoluteSize.X > 0 then Checkmark.TextTransparency = 0 end end) end end local IsToggled = Settings.Default Toggle(IsToggled) GlobalSetting.MouseButton1Click:Connect(function() IsToggled = not IsToggled Toggle(IsToggled) task.spawn(function() if Settings.Callback then Settings.Callback(IsToggled) end end) end) function GlobalSettingFunctions:UpdateName(NewName) SettingName.Text = NewName end function GlobalSettingFunctions:UpdateState(NewState) Toggle(NewState) IsToggled = NewState end return GlobalSettingFunctions end function WindowFunctions:TabGroup(GroupLabel) local SectionFunctions = {} local TabGroup = Instance.new("Frame") TabGroup.Name = "Section" TabGroup.AutomaticSize = Enum.AutomaticSize.Y TabGroup.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabGroup.BackgroundTransparency = 1 TabGroup.BorderColor3 = Color3.fromRGB(0, 0, 0) TabGroup.BorderSizePixel = 0 TabGroup.Size = UDim2.fromScale(1, 0) -- (The old full-width straight "Divider" line was removed — the labelled -- dot + gradient divider below is the only group separator now.) local SectionTabSwitchers = Instance.new("Frame") SectionTabSwitchers.Name = "SectionTabSwitchers" SectionTabSwitchers.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SectionTabSwitchers.BackgroundTransparency = 1 SectionTabSwitchers.BorderColor3 = Color3.fromRGB(0, 0, 0) SectionTabSwitchers.BorderSizePixel = 0 SectionTabSwitchers.Size = UDim2.fromScale(1, 1) local UIListLayout1 = Instance.new("UIListLayout") UIListLayout1.Name = "UIListLayout" UIListLayout1.Padding = UDim.new(0, 15) UIListLayout1.HorizontalAlignment = Enum.HorizontalAlignment.Center UIListLayout1.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout1.Parent = SectionTabSwitchers local UIPadding1 = Instance.new("UIPadding") UIPadding1.Name = "UIPadding" UIPadding1.PaddingBottom = UDim.new(0, 15) UIPadding1.Parent = SectionTabSwitchers if GroupLabel and GroupLabel ~= "" then -- GetCurrentThemeAttribute is only attached after Initialize() (which -- runs on the first tab). Some scripts call Window:Divider() BEFORE the -- first tab, which would call a missing method and crash the whole UI -- build — so resolve theme colours defensively. local function GroupAttr(Name, Fallback) local Getter = WindowFunctions.GetCurrentThemeAttribute if Getter then local ok, value = pcall(Getter, WindowFunctions, Name) if ok and value ~= nil then return value end end return Fallback end local Accent = GroupAttr("AccentPrimary", Color3.fromRGB(96, 165, 250)) local LabelHolder = Instance.new("Frame") LabelHolder.Name = "TabGroupLabel" LabelHolder.BackgroundTransparency = 1 LabelHolder.ClipsDescendants = true LabelHolder.Size = UDim2.new(1, 0, 0, 24) LabelHolder.LayoutOrder = -100 LabelHolder:SetAttribute("NoApplyTheme", true) local LabelPadding = Instance.new("UIPadding") LabelPadding.PaddingLeft = UDim.new(0, 18) LabelPadding.PaddingRight = UDim.new(0, 16) LabelPadding.PaddingBottom = UDim.new(0, 4) LabelPadding.Parent = LabelHolder local LabelRow = Instance.new("UIListLayout") LabelRow.FillDirection = Enum.FillDirection.Horizontal LabelRow.VerticalAlignment = Enum.VerticalAlignment.Center LabelRow.SortOrder = Enum.SortOrder.LayoutOrder LabelRow.Padding = UDim.new(0, 8) LabelRow.Parent = LabelHolder local Dot = Instance.new("Frame") Dot.Name = "Dot" Dot.Size = UDim2.fromOffset(5, 5) Dot.BackgroundColor3 = Accent Dot.BackgroundTransparency = 0.05 Dot.BorderSizePixel = 0 Dot.LayoutOrder = 0 Dot:SetAttribute("NoApplyTheme", true) Dot.Parent = LabelHolder local DotCorner = Instance.new("UICorner") DotCorner.CornerRadius = UDim.new(1, 0) DotCorner.Parent = Dot local DotGlow = Instance.new("UIStroke") DotGlow.Color = Accent DotGlow.Thickness = 3 DotGlow.Transparency = 0.8 DotGlow.Parent = Dot local GroupLabelText = Instance.new("TextLabel") GroupLabelText.Name = "Text" GroupLabelText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) GroupLabelText.Text = string.upper(GroupLabel) GroupLabelText.RichText = true GroupLabelText.TextColor3 = GroupAttr("TextSecondary", Color3.fromRGB(158, 158, 170)) GroupLabelText.TextTransparency = 0.12 GroupLabelText.TextSize = 11 GroupLabelText.TextXAlignment = Enum.TextXAlignment.Left GroupLabelText.TextYAlignment = Enum.TextYAlignment.Center GroupLabelText.AutomaticSize = Enum.AutomaticSize.X GroupLabelText.BackgroundTransparency = 1 GroupLabelText.Size = UDim2.new(0, 0, 1, 0) GroupLabelText.LayoutOrder = 1 GroupLabelText:SetAttribute("NoApplyTheme", true) GroupLabelText.Parent = LabelHolder local Line = Instance.new("Frame") Line.Name = "Line" Line.BackgroundColor3 = GroupAttr("BorderColor", Color3.fromRGB(255, 255, 255)) Line.BackgroundTransparency = 0.8 Line.BorderSizePixel = 0 Line.Size = UDim2.new(1, 0, 0, 1) Line.LayoutOrder = 2 Line:SetAttribute("NoApplyTheme", true) Line.Parent = LabelHolder local LineGradient = Instance.new("UIGradient") LineGradient.Color = ColorSequence.new(Accent, GroupAttr("BorderColor", Color3.fromRGB(255, 255, 255))) LineGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.4), NumberSequenceKeypoint.new(0.5, 0), NumberSequenceKeypoint.new(1, 1), }) LineGradient.Parent = Line LabelHolder.Parent = SectionTabSwitchers end SectionTabSwitchers.Parent = TabGroup TabGroup.Parent = TabSwitchersScrollingFrame function SectionFunctions:Tab(Settings) local TabFunctions = {Settings = Settings} if not WaveLibrary.TabSettings.InitializeTab or WaveLibrary.TabSettings.InitializeTab == nil then WaveLibrary.TabSettings.InitializeTab = Settings.Name end local TabSwitcher = Instance.new("TextButton") TabSwitcher.Name = "TabSwitcher" TabSwitcher.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") TabSwitcher.Text = "" TabSwitcher.Visible = not TabFunctions.Settings.Hidden TabSwitcher.TextColor3 = Color3.fromRGB(0, 0, 0) TabSwitcher.TextSize = 14 TabSwitcher.AutoButtonColor = false TabSwitcher.AnchorPoint = Vector2.new(0.5, 0) TabSwitcher.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabSwitcher.BackgroundTransparency = 1 TabSwitcher.BorderColor3 = Color3.fromRGB(0, 0, 0) TabSwitcher.BorderSizePixel = 0 TabSwitcher.Position = UDim2.fromScale(0.5, 0) TabSwitcher.Size = UDim2.new(1, -21, 0, 40) Maid.TabIndex += 1 TabSwitcher.LayoutOrder = Maid.TabIndex local TabSwitcherUICorner = Instance.new("UICorner") TabSwitcherUICorner.Name = "TabSwitcherUICorner" TabSwitcherUICorner.Parent = TabSwitcher local TabSwitcherUIStroke = Instance.new("UIStroke") TabSwitcherUIStroke.Name = "TabSwitcherUIStroke" TabSwitcherUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TabSwitcherUIStroke.Color = Color3.fromRGB(255, 255, 255) TabSwitcherUIStroke.Transparency = 1 TabSwitcherUIStroke.Parent = TabSwitcher local TabSwitcherUIListLayout = Instance.new("UIListLayout") TabSwitcherUIListLayout.Name = "TabSwitcherUIListLayout" TabSwitcherUIListLayout.Padding = UDim.new(0, 9) TabSwitcherUIListLayout.FillDirection = Enum.FillDirection.Horizontal TabSwitcherUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder TabSwitcherUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center TabSwitcherUIListLayout.Parent = TabSwitcher local TabSwitcherIndicator = Instance.new("Frame") TabSwitcherIndicator.Name = "TabSwitcherIndicator" TabSwitcherIndicator.Size = UDim2.new(0, 4, 0.5, 0) TabSwitcherIndicator.Position = UDim2.new(0.08, 0, 0, 0) TabSwitcherIndicator.BackgroundTransparency = 0.4 TabSwitcherIndicator.BorderColor3 = Color3.fromRGB(0, 0, 0) TabSwitcherIndicator.BorderSizePixel = 0 TabSwitcherIndicator.Parent = TabSwitcher local TabSwitcherIndicatorUICorner = Instance.new("UICorner") TabSwitcherIndicatorUICorner.Name = "TabSwitcherIndicatorUICorner" TabSwitcherIndicatorUICorner.Parent = TabSwitcherIndicator local TabImage if TabFunctions.Settings.Image then TabImage = Instance.new("ImageLabel") TabImage.Name = "TabImage" TabImage.Image = Settings.Image -- Sprite-sheet icons (Lucide / Phosphor) pass a rect into the sheet. if Settings.ImageRectOffset then TabImage.ImageRectOffset = Settings.ImageRectOffset end if Settings.ImageRectSize then TabImage.ImageRectSize = Settings.ImageRectSize end TabImage.ImageTransparency = 0.5 TabImage.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabImage.BackgroundTransparency = 1 TabImage.BorderColor3 = Color3.fromRGB(0, 0, 0) TabImage.BorderSizePixel = 0 TabImage.Size = UDim2.fromOffset(18, 18) TabImage.Parent = TabSwitcher end local TabSwitcherName = Instance.new("TextLabel") TabSwitcherName.Name = "TabSwitcherName" TabSwitcherName.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal ) TabSwitcherName.Text = TabFunctions.Settings.Name TabSwitcherName.RichText = true TabSwitcherName.TextColor3 = Color3.fromRGB(255, 255, 255) TabSwitcherName.TextSize = 16 TabSwitcherName.TextTransparency = 0.5 TabSwitcherName.TextTruncate = Enum.TextTruncate.SplitWord TabSwitcherName.TextXAlignment = Enum.TextXAlignment.Left TabSwitcherName.TextYAlignment = Enum.TextYAlignment.Top TabSwitcherName.AutomaticSize = Enum.AutomaticSize.Y TabSwitcherName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabSwitcherName.BackgroundTransparency = 1 TabSwitcherName.BorderColor3 = Color3.fromRGB(0, 0, 0) TabSwitcherName.BorderSizePixel = 0 TabSwitcherName.Size = UDim2.fromScale(1, 0) TabSwitcherName.Parent = TabSwitcher TabSwitcherName.LayoutOrder = 1 local TabSwitcherUIPadding = Instance.new("UIPadding") TabSwitcherUIPadding.Name = "TabSwitcherUIPadding" TabSwitcherUIPadding.PaddingLeft = UDim.new(0, 24) TabSwitcherUIPadding.PaddingRight = UDim.new(0, 35) TabSwitcherUIPadding.PaddingTop = UDim.new(0, 1) TabSwitcherUIPadding.Parent = TabSwitcher TabSwitcher.Parent = SectionTabSwitchers local Elements1 = Instance.new("Frame") Elements1.Name = "Elements" Elements1.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Elements1.BackgroundTransparency = 1 Elements1.BorderColor3 = Color3.fromRGB(0, 0, 0) Elements1.BorderSizePixel = 0 Elements1.Position = UDim2.fromOffset(0, 63) Elements1.Size = UDim2.new(1, 0, 1, -63) Elements1.ClipsDescendants = true local ElementsUIPadding = Instance.new("UIPadding") ElementsUIPadding.Name = "ElementsUIPadding" ElementsUIPadding.PaddingRight = UDim.new(0, 5) ElementsUIPadding.PaddingTop = UDim.new(0, 10) ElementsUIPadding.PaddingBottom = UDim.new(0, 10) ElementsUIPadding.Parent = Elements1 local ElementsScrolling = Instance.new("ScrollingFrame") ElementsScrolling.Name = "ElementsScrolling" -- AutomaticCanvasSize under-measures a column that holds a fixed-height -- ViewportFrame (the bottom becomes unreachable), so drive the canvas -- from the columns' own auto-sized height instead — see below. ElementsScrolling.AutomaticCanvasSize = Enum.AutomaticSize.None ElementsScrolling.BottomImage = "" ElementsScrolling.CanvasSize = UDim2.new() ElementsScrolling.ScrollBarImageTransparency = 0.5 ElementsScrolling.ScrollBarThickness = 1 ElementsScrolling.TopImage = "" ElementsScrolling.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ElementsScrolling.BackgroundTransparency = 1 ElementsScrolling.BorderColor3 = Color3.fromRGB(0, 0, 0) ElementsScrolling.BorderSizePixel = 0 ElementsScrolling.Size = UDim2.fromScale(1, 1) ElementsScrolling.ClipsDescendants = false local ElementsScrollingUIPadding = Instance.new("UIPadding") ElementsScrollingUIPadding.Name = "ElementsScrollingUIPadding" ElementsScrollingUIPadding.PaddingBottom = UDim.new(0, 5) ElementsScrollingUIPadding.PaddingLeft = UDim.new(0, 11) ElementsScrollingUIPadding.PaddingRight = UDim.new(0, 3) ElementsScrollingUIPadding.PaddingTop = UDim.new(0, 5) ElementsScrollingUIPadding.Parent = ElementsScrolling local ElementsScrollingUIListLayout = Instance.new("UIListLayout") ElementsScrollingUIListLayout.Name = "ElementsScrollingUIListLayout" ElementsScrollingUIListLayout.Padding = UDim.new(0, 15) ElementsScrollingUIListLayout.FillDirection = Enum.FillDirection.Horizontal ElementsScrollingUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder ElementsScrollingUIListLayout.Parent = ElementsScrolling local Left = Instance.new("Frame") Left.Name = "Left" Left.AutomaticSize = Enum.AutomaticSize.Y Left.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Left.BackgroundTransparency = 1 Left.BorderColor3 = Color3.fromRGB(0, 0, 0) Left.BorderSizePixel = 0 Left.Position = UDim2.fromScale(0.512, 0) Left.Size = UDim2.new(0.5, -10, 0, 0) local LeftUIListLayout = Instance.new("UIListLayout") LeftUIListLayout.Name = "LeftUIListLayout" LeftUIListLayout.Padding = UDim.new(0, 15) LeftUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder LeftUIListLayout.Parent = Left local Right = Instance.new("Frame") Right.Name = "Right" Right.AutomaticSize = Enum.AutomaticSize.Y Right.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Right.BackgroundTransparency = 1 Right.BorderColor3 = Color3.fromRGB(0, 0, 0) Right.BorderSizePixel = 0 Right.LayoutOrder = 1 Right.Position = UDim2.fromScale(0.512, 0) Right.Size = UDim2.new(0.5, -10, 0, 0) local RightUIListLayout = Instance.new("UIListLayout") RightUIListLayout.Name = "RightUIListLayout" RightUIListLayout.Padding = UDim.new(0, 15) RightUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder RightUIListLayout.Parent = Right local Middle = Instance.new("ScrollingFrame") Middle.Name = "Middle" Middle.AutomaticSize = Enum.AutomaticSize.Y Middle.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Middle.BackgroundTransparency = 1 Middle.BorderColor3 = Color3.fromRGB(0, 0, 0) Middle.BorderSizePixel = 0 Middle.Position = UDim2.fromScale(0.512, 0) Middle.Size = UDim2.new(1, -10, 1, 0) Middle.ScrollBarImageTransparency = 0.8 Middle.ScrollBarThickness = 1 Middle.CanvasSize = UDim2.new(0, 0, 15, 0) SearchTextBox:GetPropertyChangedSignal("Text"):Connect(function() if not WindowFunctions.Settings.SearchCallback then return end WindowFunctions.Settings.SearchCallback({ Text = SearchTextBox.Text, Middle = Middle, Options = WaveLibrary.Options, HeaderSearchOptions = HeaderSearchOptions, }) end) if not Maid.Focused then Maid.Focused = SearchTextBox.Focused:Connect(function() if not WindowFunctions.Settings.SearchFocused then return end WindowFunctions.Settings.SearchFocused({ HeaderSearchOptions = HeaderSearchOptions, Options = WaveLibrary.Options }) end) end if not Maid.UnFocused then Maid.UnFocused = SearchTextBox.FocusLost:Connect(function() if not WindowFunctions.Settings.SearchUnFocused then return end WindowFunctions.Settings.SearchUnFocused({ HeaderSearchOptions = HeaderSearchOptions, Options = WaveLibrary.Options }) end) end if TabFunctions.Settings.MiddleFrame then Middle.Parent = ElementsScrolling local MiddleFrameUIList = Instance.new("UIListLayout") for Property, Value in pairs(TabFunctions.Settings.FrameSettings) do if MiddleFrameUIList[Property] ~= nil then MiddleFrameUIList[Property] = Value end end MiddleFrameUIList.Parent = Middle else Left.Parent = ElementsScrolling Right.Parent = ElementsScrolling -- Keep the scroll canvas as tall as the taller column. AutomaticSize -- only fills AbsoluteSize (not Size.Offset), so read that and divide -- out the window UI scale to get canvas-offset units — this always -- lets you reach the bottom, even with a tall ViewportFrame inside. local function UpdateElementsCanvas() local Scale = (BaseUIScale and BaseUIScale.Scale) or 1 if Scale <= 0 then Scale = 1 end local Tallest = math.max(Left.AbsoluteSize.Y, Right.AbsoluteSize.Y) / Scale ElementsScrolling.CanvasSize = UDim2.new(0, 0, 0, Tallest + 10) end Left:GetPropertyChangedSignal("AbsoluteSize"):Connect(UpdateElementsCanvas) Right:GetPropertyChangedSignal("AbsoluteSize"):Connect(UpdateElementsCanvas) BaseUIScale:GetPropertyChangedSignal("Scale"):Connect(UpdateElementsCanvas) UpdateElementsCanvas() end ElementsScrolling.Parent = Elements1 function TabFunctions:Card(Item) Item.Parent = Middle end function TabFunctions:HideContents() Middle.Visible = false end function TabFunctions:ShowContents() Middle.Visible = true end function TabFunctions:CreateLoading() local LoadingContainer = Instance.new("Frame") LoadingContainer.Name = "LoadingContainer" LoadingContainer.BackgroundTransparency = 1 LoadingContainer.Size = UDim2.fromScale(1, 1) LoadingContainer.Position = UDim2.fromScale(0, 0) LoadingContainer.Parent = ElementsScrolling local LoadingFrame = Instance.new("Frame") LoadingFrame.Name = "LoadingFrame" LoadingFrame.BackgroundTransparency = 1 LoadingFrame.Size = UDim2.fromOffset(120, 40) LoadingFrame.Position = UDim2.fromScale(0.5, 0.5) LoadingFrame.AnchorPoint = Vector2.new(0.5, 0.5) LoadingFrame.Parent = LoadingContainer local Dots = {} local DotCount = 5 local DotSize = 8 local Spacing = 20 for I = 1, DotCount do local Dot = Instance.new("Frame") Dot.Name = "LoadingDot" .. I Dot.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Dot.BackgroundTransparency = 0.3 Dot.BorderSizePixel = 0 Dot.Size = UDim2.fromOffset(DotSize, DotSize) Dot.Position = UDim2.fromOffset((I - 1) * Spacing + (120 - (DotCount - 1) * Spacing) / 2, 16) Dot.Parent = LoadingFrame local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(1, 0) Corner.Parent = Dot table.insert(Dots, Dot) end local function AnimateDots() local AnimationDelay = 0.15 local AnimationDuration = 0.4 local ScaleFactor = 1.5 spawn(function() while LoadingContainer.Parent do for I, Dot in ipairs(Dots) do spawn(function() local ScaleUpTween = Services.TweenService:Create( Dot, TweenInfo.new(AnimationDuration / 2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { Size = UDim2.fromOffset(DotSize * ScaleFactor, DotSize * ScaleFactor), BackgroundTransparency = 0.1 } ) local ScaleDownTween = Services.TweenService:Create( Dot, TweenInfo.new(AnimationDuration / 2, Enum.EasingStyle.Quart, Enum.EasingDirection.In), { Size = UDim2.fromOffset(DotSize, DotSize), BackgroundTransparency = 0.3 } ) ScaleUpTween:Play() ScaleUpTween.Completed:Connect(function() ScaleDownTween:Play() end) end) task.wait(AnimationDelay) end task.wait(0.3) end end) end AnimateDots() return LoadingContainer end function TabFunctions:RemoveLoading() local LoadingContainer = ElementsScrolling:FindFirstChild("LoadingContainer") if LoadingContainer then LoadingContainer:Destroy() end end function TabFunctions:CreateCustomElementPanel() local CustomPanel = Instance.new("Frame") CustomPanel.Name = "CustomElementPanel" CustomPanel.BackgroundColor3 = Color3.fromRGB(15, 15, 15) CustomPanel.BackgroundTransparency = 0.25 CustomPanel.BorderSizePixel = 0 CustomPanel.Size = UDim2.fromScale(1, 1) CustomPanel.Position = UDim2.fromScale(0, 0) CustomPanel.Parent = ElementsScrolling local PanelCorner = Instance.new("UICorner") PanelCorner.CornerRadius = UDim.new(0, 12) PanelCorner.Parent = CustomPanel local PanelStroke = Instance.new("UIStroke") PanelStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border PanelStroke.LineJoinMode = Enum.LineJoinMode.Round PanelStroke.Color = Color3.fromRGB(60, 60, 70) PanelStroke.Thickness = 1 PanelStroke.Transparency = 0.5 PanelStroke.Parent = CustomPanel local PanelPadding = Instance.new("UIPadding") PanelPadding.PaddingTop = UDim.new(0, 20) PanelPadding.PaddingBottom = UDim.new(0, 20) PanelPadding.PaddingLeft = UDim.new(0, 20) PanelPadding.PaddingRight = UDim.new(0, 20) PanelPadding.Parent = CustomPanel return CustomPanel end function TabFunctions:Section(Settings) local SectionFunctions = {} local Section = Instance.new("Frame") Section.Name = "Section" Section.AutomaticSize = Enum.AutomaticSize.Y Section.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Section.BackgroundTransparency = 0.98 Section.BorderColor3 = Color3.fromRGB(0, 0, 0) Section.BorderSizePixel = 0 Section.Position = UDim2.fromScale(0, 6.78e-08) Section.Size = UDim2.fromScale(1, 0) Section.ClipsDescendants = true Section.Parent = Settings.Side == "Left" and Left or Right local SectionPropertiesFolder = Instance.new("Folder") SectionPropertiesFolder.Name = "SectionPropertiesFolder" SectionPropertiesFolder.Parent = Section local SectionToggleVisible = Instance.new("ImageButton") SectionToggleVisible.Name = "SectionToggleVisible" SectionToggleVisible.Image = Assets.ButtonImage SectionToggleVisible.ImageColor3 = Color3.fromRGB(87, 86, 86) SectionToggleVisible.AutoButtonColor = false SectionToggleVisible.AnchorPoint = Vector2.new(1, 0.5) SectionToggleVisible.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SectionToggleVisible.BackgroundTransparency = 1 SectionToggleVisible.BorderColor3 = Color3.fromRGB(0, 0, 0) SectionToggleVisible.BorderSizePixel = 0 SectionToggleVisible.Size = UDim2.fromOffset(20, 20) SectionToggleVisible.ImageTransparency = 0 SectionToggleVisible.ZIndex = 100 SectionToggleVisible.Rotation = 90 SectionToggleVisible.Position = UDim2.new(1, 0, 0, 12.5) SectionToggleVisible.Parent = SectionPropertiesFolder local SavedElements = false SectionToggleVisible.MouseButton1Click:Connect(function() if SavedElements then for _, Element in pairs(SavedElements) do if Element:IsA("Frame") then Element.Visible = true end end SavedElements = false Utility:QuickTween(SectionToggleVisible, {Rotation = 90}) else SavedElements = {} local DetectedHeaders = 0 for _, Element in pairs(Section:GetChildren()) do if Element:IsA("Frame") and Element.Visible and Element.Name ~= "Header" then SavedElements[Element] = Element Element.Visible = false elseif Element:IsA("Frame") and Element.Visible and Element.Name == "Header" then DetectedHeaders += 1 if DetectedHeaders == 2 then SavedElements[Element] = Element Element.Visible = false end end end Utility:QuickTween(SectionToggleVisible, {Rotation = 0}) end end) local SectionUICorner = Instance.new("UICorner") SectionUICorner.Name = "SectionUICorner" SectionUICorner.Parent = Section local SectionUIStroke = Instance.new("UIStroke") SectionUIStroke.Name = "SectionUIStroke" SectionUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border SectionUIStroke.Color = Color3.fromRGB(255, 255, 255) SectionUIStroke.Transparency = 0.95 SectionUIStroke.Parent = Section local SectionUIListLayout = Instance.new("UIListLayout") SectionUIListLayout.Name = "SectionUIListLayout" SectionUIListLayout.Padding = UDim.new(0, 16) SectionUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder SectionUIListLayout.Parent = Section local SectionUIPadding = Instance.new("UIPadding") SectionUIPadding.Name = "SectionUIPadding" SectionUIPadding.PaddingBottom = UDim.new(0, 24) SectionUIPadding.PaddingLeft = UDim.new(0, 22) SectionUIPadding.PaddingRight = UDim.new(0, 20) SectionUIPadding.PaddingTop = UDim.new(0, 24) SectionUIPadding.Parent = Section local ComponentDirectory = "Wave/UserInterface/Components" for Name, Component in pairs(Utility:ListManager(ComponentDirectory)) do Utility:LoadFile(Component)({ Section = Section, WindowFunctions = WindowFunctions, WaveLibraryUI = WaveLibraryUI, WaveLibrary = WaveLibrary, SectionFunctions = SectionFunctions, BaseUIScale = BaseUIScale, Base = Base, ComponentManager = ComponentManager, TabName = TabFunctions.Settings.Name }) end function SectionFunctions:Replication() if Settings.Replication then local ReplicationGame, ReplicationSection = Settings.Replication.GameDirectory, Settings.Replication.SectionName Utility:LoadFile("Games/Game Features/" .. ReplicationGame .. "/" .. ReplicationSection .. ".lua") return true end return false end function SectionFunctions:DisplayTitle() if Settings.DisplayTitle then SectionFunctions:Header({Name = Settings.DisplayTitle}) end return Settings.DisplayTitle end return SectionFunctions end local function TabSelection() local EaseTime = 0.25 local EaseStyle = Enum.EasingStyle.Quad local EaseDirection = Enum.EasingDirection.Out local VerticalOffset = 80 if WaveLibrary.TabSettings.CurrentTab then WaveLibrary.TabSettings.CurrentTab.Parent = nil end if Settings.OnTouchCallback then Settings.OnTouchCallback() end for Switcher, TabInfo in pairs(WaveLibrary.Tabs) do Utility:PropertyTween(Switcher, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), { BackgroundTransparency = (Switcher == TabSwitcher and 0.98 or 1) }):Play() if TabInfo.TabIndicator then TabInfo.TabIndicator.BackgroundColor3 = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") Utility:PropertyTween(TabInfo.TabIndicator, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), { BackgroundTransparency = (Switcher == TabSwitcher and 0.5 or 1) }):Play() end if TabInfo.TabStroke then Utility:PropertyTween(TabInfo.TabStroke, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), { Transparency = (Switcher == TabSwitcher and 0.95 or 1) }):Play() end if TabInfo.SwitcherImage then Utility:PropertyTween(TabInfo.SwitcherImage, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), { ImageTransparency = (Switcher == TabSwitcher and 0.1 or 0.5) }):Play() end if TabInfo.SwitcherName then Utility:PropertyTween(TabInfo.SwitcherName, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), { TextTransparency = (Switcher == TabSwitcher and 0.1 or 0.5) }):Play() end end local TabContent = WaveLibrary.Tabs[TabSwitcher].TabContent local function StoreCurrentState(Element) if Element:IsA("GuiObject") then Element:SetAttribute("CurrentBackgroundTransparency", Element.BackgroundTransparency) if Element:IsA("TextLabel") or Element:IsA("TextButton") or Element:IsA("TextBox") then Element:SetAttribute("CurrentTextTransparency", Element.TextTransparency) end if Element:IsA("ImageLabel") or Element:IsA("ImageButton") then Element:SetAttribute("CurrentImageTransparency", Element.ImageTransparency) end local Stroke = Element:FindFirstChildOfClass("UIStroke") if Stroke then Element:SetAttribute("CurrentStrokeTransparency", Stroke.Transparency) end for _, Child in pairs(Element:GetChildren()) do StoreCurrentState(Child) end end end if not TabContent:GetAttribute("OriginalStateStored") then local function StoreOriginalTransparencies(Element) if Element:IsA("GuiObject") then Element:SetAttribute("OriginalBackgroundTransparency", Element.BackgroundTransparency) if Element:IsA("TextLabel") or Element:IsA("TextButton") or Element:IsA("TextBox") then Element:SetAttribute("OriginalTextTransparency", Element.TextTransparency) end if Element:IsA("ImageLabel") or Element:IsA("ImageButton") then Element:SetAttribute("OriginalImageTransparency", Element.ImageTransparency) end local Stroke = Element:FindFirstChildOfClass("UIStroke") if Stroke then Element:SetAttribute("OriginalStrokeTransparency", Stroke.Transparency) end for _, Child in pairs(Element:GetChildren()) do StoreOriginalTransparencies(Child) end end end StoreOriginalTransparencies(TabContent) TabContent:SetAttribute("OriginalStateStored", true) else StoreCurrentState(TabContent) end local function SetFullyTransparent(Element) if Element:IsA("GuiObject") then Element.BackgroundTransparency = 1 if Element:IsA("TextLabel") or Element:IsA("TextButton") or Element:IsA("TextBox") then Element.TextTransparency = 1 end if Element:IsA("ImageLabel") or Element:IsA("ImageButton") then Element.ImageTransparency = 1 end local Stroke = Element:FindFirstChildOfClass("UIStroke") if Stroke and not Element:FindFirstAncestor("CheckBoxButton") and not Element:FindFirstAncestor("CheckBox") then Stroke.Transparency = 1 end for _, Child in pairs(Element:GetChildren()) do SetFullyTransparent(Child) end end end TabContent.Position = UDim2.new(0, 0, 0, VerticalOffset) SetFullyTransparent(TabContent) TabContent.Parent = Content if WindowFunctions:GetCurrentTheme() then WindowFunctions:ApplyCurrentTheme() end local function AnimateToCurrentTransparency(Element) if Element:IsA("GuiObject") then local CurrentTheme = WindowFunctions:GetCurrentTheme() local ThemeData = CurrentTheme and WindowFunctions:GetTheme(CurrentTheme) local function GetThemeValue(ElementType, PropertyType) if not ThemeData then return nil end local ThemeMapping = { Base = { BackgroundTransparency = ThemeData.BackgroundTransparency, BackgroundColor3 = ThemeData.Background }, Terminal = { BackgroundTransparency = ThemeData.BackgroundTransparency, BackgroundColor3 = ThemeData.Background }, Sidebar = { BackgroundTransparency = ThemeData.SidebarTransparency, BackgroundColor3 = ThemeData.SidebarColor }, Section = { BackgroundColor3 = ThemeData.Foreground }, Surface = { BackgroundColor3 = ThemeData.Surface, BackgroundTransparency = ThemeData.SurfaceTransparency }, Title = { TextColor3 = ThemeData.HeaderColor, TextTransparency = ThemeData.HeaderTransparency }, ParagraphHeader = { TextColor3 = ThemeData.HeaderColor, TextTransparency = ThemeData.HeaderTransparency }, HeaderText = { TextColor3 = ThemeData.HeaderColor, TextTransparency = ThemeData.HeaderTransparency }, Wallpaper = { ImageTransparency = ThemeData.WallpaperEnabled and ThemeData.WallpaperTransparency or 1 }, OutputWallpaper = { ImageTransparency = ThemeData.WallpaperEnabled and ThemeData.WallpaperTransparency or 1 } } local ElementTheme = ThemeMapping[Element.Name] return ElementTheme and ElementTheme[PropertyType] end local TargetBackgroundTransparency = GetThemeValue(Element.Name, "BackgroundTransparency") if TargetBackgroundTransparency == nil then local CurrentBackgroundTransparency = Element:GetAttribute("CurrentBackgroundTransparency") local OriginalBackgroundTransparency = Element:GetAttribute("OriginalBackgroundTransparency") TargetBackgroundTransparency = CurrentBackgroundTransparency or OriginalBackgroundTransparency end if TargetBackgroundTransparency ~= nil then local Properties = { BackgroundTransparency = TargetBackgroundTransparency } if Element:IsA("TextLabel") or Element:IsA("TextButton") or Element:IsA("TextBox") then local TargetTextTransparency = nil if Element.Name == "Title" or Element.Name == "ParagraphHeader" or Element.Name == "HeaderText" then TargetTextTransparency = ThemeData and ThemeData.HeaderTransparency elseif Element:IsA("TextBox") then TargetTextTransparency = ThemeData and ThemeData.InputFieldTransparency end if TargetTextTransparency == nil then local CurrentTextTransparency = Element:GetAttribute("CurrentTextTransparency") local OriginalTextTransparency = Element:GetAttribute("OriginalTextTransparency") TargetTextTransparency = CurrentTextTransparency or OriginalTextTransparency end if TargetTextTransparency ~= nil then Properties.TextTransparency = TargetTextTransparency end local ThemeTextColor = GetThemeValue(Element.Name, "TextColor3") if ThemeTextColor then Properties.TextColor3 = ThemeTextColor end end if Element:IsA("ImageLabel") or Element:IsA("ImageButton") then local TargetImageTransparency = GetThemeValue(Element.Name, "ImageTransparency") if TargetImageTransparency == nil then local CurrentImageTransparency = Element:GetAttribute("CurrentImageTransparency") local OriginalImageTransparency = Element:GetAttribute("OriginalImageTransparency") TargetImageTransparency = CurrentImageTransparency or OriginalImageTransparency end if TargetImageTransparency ~= nil then Properties.ImageTransparency = TargetImageTransparency end end Utility:PropertyTween(Element, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), Properties):Play() local Stroke = Element:FindFirstChildOfClass("UIStroke") if Stroke and not Stroke:FindFirstAncestor("CheckBoxButton") then local TargetStrokeTransparency = ThemeData and ThemeData.StrokeTransparency if TargetStrokeTransparency == nil then local CurrentStrokeTransparency = Element:GetAttribute("CurrentStrokeTransparency") local OriginalStrokeTransparency = Element:GetAttribute("OriginalStrokeTransparency") TargetStrokeTransparency = CurrentStrokeTransparency or OriginalStrokeTransparency end if TargetStrokeTransparency ~= nil then local StrokeProperties = { Transparency = TargetStrokeTransparency } if ThemeData and ThemeData.BorderColor then StrokeProperties.Color = ThemeData.BorderColor end Utility:PropertyTween(Stroke, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), StrokeProperties):Play() end end end for _, Child in pairs(Element:GetChildren()) do AnimateToCurrentTransparency(Child) end end end Utility:PropertyTween(TabContent, TweenInfo.new(EaseTime, EaseStyle, EaseDirection), { Position = UDim2.new(0, 0, 0, 63) }):Play() AnimateToCurrentTransparency(TabContent) WaveLibrary.TabSettings.CurrentTab = TabContent CurrentTab.Text = Settings.Name local Widith = CurrentTab.TextBounds.X local Margin = 8 CurrentTabDivider.Size = UDim2.new(0, math.max(0, Widith - Margin), 0, 1) CurrentTabDivider.Visible = CurrentTab.Text ~= "" and true or false SearchTab.Visible = true end TabSwitcher.MouseButton1Click:Connect(function() if TabSwitcher:GetAttribute("Debounce") or WaveLibrary.TabSettings.CurrentTab == nil then return end TabSwitcher:SetAttribute("Debounce", true) TabSelection() Maid:GiveTask(task.delay(0.5, function() TabSwitcher:SetAttribute("Debounce", false) end)) end) function TabFunctions:Select() TabSelection() end function TabFunctions:RetrieveFirstTab() return Settings.Name == WaveLibrary.TabSettings.InitializeTab end local CurrentTheme = "Default" local LivePreviewEnabled = true function WindowFunctions:Initialize() Themes.Custom = table.clone(Themes.Default) self:LoadStartupTheme() end local SettingsDirectory = "Wave/UserInterface/Imports/Settings" for Name, Component in pairs(Utility:ListManager(SettingsDirectory)) do Utility:LoadFile(Component)({ WindowFunctions = WindowFunctions, WaveLibraryUI = WaveLibraryUI, WaveLibrary = WaveLibrary, TabFunctions = TabFunctions, ThemeColorSchemes = ThemeColorSchemes, ThemeTemplates = ThemeTemplates, PerformanceModes = PerformanceModes, ThemeUtility = ThemeUtility, Themes = Themes, Subtitle = Subtitle, Exit = Exit, Minimize = Minimize }) end WaveLibrary.Tabs[TabSwitcher] = { TabContent = Elements1, TabStroke = TabSwitcherUIStroke, SwitcherImage = TabImage, SwitcherName = TabSwitcherName, TabIndicator = TabSwitcherIndicator, Select = TabSelection } return TabFunctions end return SectionFunctions end function WindowFunctions:SelectTab(TabName) for TabSwitcher, TabInfo in pairs(WaveLibrary.Tabs) do if TabInfo.SwitcherName and TabInfo.SwitcherName.Text == TabName then -- Already showing this tab? nothing to do. if WaveLibrary.TabSettings.CurrentTab == TabInfo.TabContent then return true end if TabSwitcher:GetAttribute("Debounce") then return false, "Tab is debounced" end -- Delegate to the exact path a real click uses: fade animation, -- active-tab highlight, breadcrumb title and the search bar all -- stay in sync. if TabInfo.Select then TabSwitcher:SetAttribute("Debounce", true) TabInfo.Select() Maid:GiveTask(task.delay(0.5, function() TabSwitcher:SetAttribute("Debounce", false) end)) return true end return false, "Tab has no selector" end end return false, "Tab not found: " .. tostring(TabName) end function WindowFunctions:BuildTree() local PathTree = { WaveLibrary.Folder, WaveLibrary.Folder .. "/settings", WaveLibrary.Folder .. "/settings/startup", } for Increment = 1, #PathTree do local String = PathTree[Increment] if not isfolder(String) then makefolder(String) end end end function WindowFunctions:CreateOption(Requirements, Option) local OptionInstance = Instance.new("Frame") OptionInstance.AutomaticSize = Enum.AutomaticSize.Y OptionInstance.Name = Option.Settings.Name OptionInstance.BackgroundColor3 = Color3.fromRGB(0, 0, 0) OptionInstance.Visible = false OptionInstance.BackgroundTransparency = 1 OptionInstance.BorderSizePixel = 0 OptionInstance.Size = UDim2.new(1, 0, 0, 20) OptionInstance.Parent = Requirements.HeaderSearchOptions local OptionIcon = Instance.new("ImageLabel") OptionIcon.BackgroundColor3 = Color3.fromRGB(0, 0, 0) OptionIcon.Position = UDim2.new(0, 5, 0.5, 0) OptionIcon.AnchorPoint = Vector2.new(0, 0.25) OptionIcon.Name = "OptionIcon" OptionIcon.BackgroundTransparency = 1 OptionIcon.BorderSizePixel = 0 OptionIcon.Size = UDim2.new(0, 17.5, 0, 17.5) OptionIcon.Image = Assets["Search" .. Option.Class] OptionIcon.Parent = OptionInstance local OptionDetails = Instance.new("TextLabel") OptionDetails.FontFace = Font.new(Assets.InterFont) OptionDetails.Name = "OptionDetails" OptionDetails.BackgroundColor3 = Color3.fromRGB(0, 0, 0) OptionDetails.AnchorPoint = Vector2.new(0, 0.25) OptionDetails.Position = UDim2.new(0, 30, 0.5, 0) OptionDetails.BackgroundTransparency = 1 OptionDetails.BorderSizePixel = 0 OptionDetails.Size = UDim2.new(1, -30, 0, 20) OptionDetails.TextTruncate = Enum.TextTruncate.SplitWord OptionDetails.TextSize = 10 OptionDetails.RichText = true OptionDetails.Text = "" .. Option.Settings.Name .. " | " .. Option:ReturnClass() .. " - " .. Option:ReturnTab() .. "" OptionDetails.TextXAlignment = Enum.TextXAlignment.Left OptionDetails.Parent = OptionInstance local OptionButton = Instance.new("TextButton") OptionButton.Name = "OptionButton" OptionButton.BackgroundTransparency = 1 OptionButton.BorderSizePixel = 0 OptionButton.Size = UDim2.new(1, 0, 1, 0) OptionButton.Position = UDim2.new(0, 0, 0, 0) OptionButton.Text = "" OptionButton.ZIndex = 5 OptionButton.Parent = OptionInstance local function CreateHoverAnimation() local IconTween = Services.TweenService:Create( OptionIcon, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 22, 0, 22)} ) local TextTween = Services.TweenService:Create( OptionDetails, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0, 35, 0.5, 0)} ) return {IconTween, TextTween} end local function CreateUnhoverAnimation() local IconTween = Services.TweenService:Create( OptionIcon, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(0, 20, 0, 20)} ) local TextTween = Services.TweenService:Create( OptionDetails, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0, 30, 0.5, 0)} ) return {IconTween, TextTween} end local function CreateClickAnimation() local ShrinkTween = Services.TweenService:Create( OptionInstance, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(0.98, 0, 0, 18)} ) local IconShrinkTween = Services.TweenService:Create( OptionIcon, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(0, 18, 0, 18)} ) local FlashTween = Services.TweenService:Create( OptionInstance, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency = 0.85} ) ShrinkTween:Play() IconShrinkTween:Play() FlashTween:Play() ShrinkTween.Completed:Connect(function() local BounceTween = Services.TweenService:Create( OptionInstance, TweenInfo.new(0.15, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(1, 0, 0, 20)} ) local IconBounceTween = Services.TweenService:Create( OptionIcon, TweenInfo.new(0.15, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 22, 0, 22)} ) BounceTween:Play() IconBounceTween:Play() end) end OptionButton.MouseEnter:Connect(function() local Animations = CreateHoverAnimation() for _, Animation in ipairs(Animations) do Animation:Play() end end) OptionButton.MouseLeave:Connect(function() local Animations = CreateUnhoverAnimation() for _, Animation in ipairs(Animations) do Animation:Play() end end) OptionButton.MouseButton1Down:Connect(function() CreateClickAnimation() end) OptionButton.MouseButton1Click:Connect(function() self:SelectTab(Option:ReturnTab()) end) return OptionInstance end function WindowFunctions:EnableStatusHub() StatusHub.Visible = true end function WindowFunctions:DisableStatusHub() StatusHub.Visible = false end function WindowFunctions:SetStatusHubTitle(Name) StatusTitle.Text = Name or "No Title" end function WindowFunctions:AddStatusInfo(StatusName, Value) local Section = Instance.new("TextLabel") Section.Name = "StatusSection" Section.AutomaticSize = Enum.AutomaticSize.Y Section.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Section.BackgroundTransparency = 0.98 Section.BorderColor3 = Color3.fromRGB(0, 0, 0) Section.BorderSizePixel = 0 Section.Position = UDim2.fromScale(0, 0) Section.ClipsDescendants = true Section.Parent = StatusHandle local SectionUICorner = Instance.new("UICorner") SectionUICorner.Name = "SectionUICorner" SectionUICorner.Parent = Section local SectionUIStroke = Instance.new("UIStroke") SectionUIStroke.Name = "SectionUIStroke" SectionUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border SectionUIStroke.Color = Color3.fromRGB(255, 255, 255) SectionUIStroke.Transparency = 0.95 SectionUIStroke.Parent = Section Section.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal ) Section.RichText = true Section.Text = StatusName .. " • " .. tostring(Value) Section.TextColor3 = Color3.fromRGB(255, 255, 255) Section.TextSize = 12 Section.TextTransparency = 0 task.defer(function() Section.Size = UDim2.new(0, Section.TextBounds.X + 15, 0, Section.TextBounds.Y + 5) end) end function WindowFunctions:EditStatusInfo(Flag, Value) for _, Child in ipairs(StatusHandle:GetChildren()) do if Child:IsA("TextLabel") and Child.Text:match("^" .. Flag) then Child.Text = Flag .. " • " .. tostring(Value) task.defer(function() Child.Size = UDim2.new(0, Child.TextBounds.X + 15, 0, Child.TextBounds.Y + 5) end) return end end end function WindowFunctions:Notify(Settings) local NotificationFunctions = {} local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end local AccentColors = { None = ThemeAttr("AccentPrimary", Color3.fromRGB(96, 165, 250)), Info = ThemeAttr("InfoColor", Color3.fromRGB(96, 165, 250)), Confirm = ThemeAttr("SuccessColor", Color3.fromRGB(74, 222, 128)), Success = ThemeAttr("SuccessColor", Color3.fromRGB(74, 222, 128)), Cancel = ThemeAttr("ErrorColor", Color3.fromRGB(248, 113, 113)), Error = ThemeAttr("ErrorColor", Color3.fromRGB(248, 113, 113)), Warning = ThemeAttr("WarningColor", Color3.fromRGB(250, 204, 21)), } local Glyphs = { Confirm = "✓", Success = "✓", Cancel = "✕", Error = "✕", Warning = "!", Info = "i", None = "i", } local Accent = AccentColors[Settings.Style] or ThemeAttr("AccentPrimary", Color3.fromRGB(96, 165, 250)) local Glyph = Glyphs[Settings.Style] or "i" local TextPrimary = ThemeAttr("TextPrimary", Color3.fromRGB(236, 236, 241)) local TextSecondary = ThemeAttr("TextSecondary", Color3.fromRGB(168, 168, 178)) local StrokeTransparency = ThemeAttr("StrokeTransparency", 0.85) local Notification = Instance.new("Frame") Notification.Name = "Notification" Notification.AutomaticSize = Enum.AutomaticSize.Y Notification.Size = UDim2.fromOffset(Settings.SizeX or 285, 0) Notification.BackgroundColor3 = ThemeAttr("NotificationColor", Color3.fromRGB(22, 22, 27)) Notification.BackgroundTransparency = 1 Notification.BorderSizePixel = 0 Notification.ClipsDescendants = true Notification:SetAttribute("NoApplyTheme", true) Notification.Parent = Notifications local NotificationUICorner = Instance.new("UICorner") NotificationUICorner.CornerRadius = UDim.new(0, 12) NotificationUICorner.Parent = Notification local NotificationUIStroke = Instance.new("UIStroke") NotificationUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border NotificationUIStroke.Color = ThemeAttr("BorderColor", Color3.fromRGB(255, 255, 255)) NotificationUIStroke.Transparency = 1 NotificationUIStroke.Parent = Notification local NotificationUIScale = Instance.new("UIScale") NotificationUIScale.Scale = 0.9 NotificationUIScale.Parent = Notification local AccentBar = Instance.new("Frame") AccentBar.Name = "AccentBar" AccentBar.BackgroundColor3 = Accent AccentBar.BackgroundTransparency = 1 AccentBar.BorderSizePixel = 0 AccentBar.Position = UDim2.fromScale(0, 0) AccentBar.Size = UDim2.new(0, 3, 1, 0) AccentBar:SetAttribute("NoApplyTheme", true) AccentBar.Parent = Notification local Content = Instance.new("Frame") Content.Name = "Content" Content.BackgroundTransparency = 1 Content.AutomaticSize = Enum.AutomaticSize.Y Content.Size = UDim2.new(1, 0, 0, 0) Content.Parent = Notification local ContentPadding = Instance.new("UIPadding") ContentPadding.PaddingTop = UDim.new(0, 13) ContentPadding.PaddingBottom = UDim.new(0, 15) ContentPadding.PaddingLeft = UDim.new(0, 15) ContentPadding.PaddingRight = UDim.new(0, 14) ContentPadding.Parent = Content local Row = Instance.new("UIListLayout") Row.FillDirection = Enum.FillDirection.Horizontal Row.SortOrder = Enum.SortOrder.LayoutOrder Row.VerticalAlignment = Enum.VerticalAlignment.Top Row.Padding = UDim.new(0, 11) Row.Parent = Content local IconHolder = Instance.new("Frame") IconHolder.Name = "NotifIcon" IconHolder.Size = UDim2.fromOffset(26, 26) IconHolder.BackgroundColor3 = Accent IconHolder.BackgroundTransparency = 1 IconHolder.BorderSizePixel = 0 IconHolder:SetAttribute("NoApplyTheme", true) IconHolder.Parent = Content local IconCorner = Instance.new("UICorner") IconCorner.CornerRadius = UDim.new(1, 0) IconCorner.Parent = IconHolder local IconGlyph = Instance.new("TextLabel") IconGlyph.Name = "Result_Glyph" IconGlyph.BackgroundTransparency = 1 IconGlyph.Size = UDim2.fromScale(1, 1) IconGlyph.Text = Glyph IconGlyph.TextColor3 = Accent IconGlyph.TextTransparency = 1 IconGlyph.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold, Enum.FontStyle.Normal) IconGlyph.TextSize = 15 IconGlyph:SetAttribute("NoApplyTheme", true) IconGlyph.Parent = IconHolder local TextColumn = Instance.new("Frame") TextColumn.Name = "TextColumn" TextColumn.BackgroundTransparency = 1 TextColumn.AutomaticSize = Enum.AutomaticSize.Y TextColumn.Size = UDim2.new(1, -37, 0, 0) TextColumn.LayoutOrder = 1 TextColumn.Parent = Content local ColumnLayout = Instance.new("UIListLayout") ColumnLayout.SortOrder = Enum.SortOrder.LayoutOrder ColumnLayout.Padding = UDim.new(0, 3) ColumnLayout.Parent = TextColumn local NotificationTitle = Instance.new("TextLabel") NotificationTitle.Name = "Result_Title" NotificationTitle.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) NotificationTitle.RichText = true NotificationTitle.Text = Settings.Title or "Notification" NotificationTitle.TextColor3 = TextPrimary NotificationTitle.TextTransparency = 1 NotificationTitle.TextSize = 14 NotificationTitle.TextXAlignment = Enum.TextXAlignment.Left NotificationTitle.TextYAlignment = Enum.TextYAlignment.Top NotificationTitle.TextWrapped = true NotificationTitle.AutomaticSize = Enum.AutomaticSize.Y NotificationTitle.BackgroundTransparency = 1 NotificationTitle.Size = UDim2.new(1, -18, 0, 0) NotificationTitle:SetAttribute("NoApplyTheme", true) NotificationTitle.Parent = TextColumn local NotificationDescription = Instance.new("TextLabel") NotificationDescription.Name = "Result_Description" NotificationDescription.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) NotificationDescription.RichText = true NotificationDescription.Text = Settings.Description or "" NotificationDescription.TextColor3 = TextSecondary NotificationDescription.TextTransparency = 1 NotificationDescription.TextSize = 12 NotificationDescription.TextXAlignment = Enum.TextXAlignment.Left NotificationDescription.TextYAlignment = Enum.TextYAlignment.Top NotificationDescription.TextWrapped = true NotificationDescription.AutomaticSize = Enum.AutomaticSize.Y NotificationDescription.BackgroundTransparency = 1 NotificationDescription.LayoutOrder = 1 NotificationDescription.Size = UDim2.new(1, 0, 0, 0) NotificationDescription.Visible = (Settings.Description ~= nil and Settings.Description ~= "") NotificationDescription:SetAttribute("NoApplyTheme", true) NotificationDescription.Parent = TextColumn local Close = Instance.new("TextButton") Close.Name = "Result_Close" Close.AnchorPoint = Vector2.new(1, 0) Close.Position = UDim2.new(1, -10, 0, 11) Close.Size = UDim2.fromOffset(18, 18) Close.BackgroundTransparency = 1 Close.AutoButtonColor = false Close.Text = "✕" Close.TextColor3 = TextSecondary Close.TextTransparency = 1 Close.TextSize = 12 Close.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold, Enum.FontStyle.Normal) Close.ZIndex = 3 Close:SetAttribute("NoApplyTheme", true) Close.Parent = Notification local ProgressTrack = Instance.new("Frame") ProgressTrack.Name = "ProgressTrack" ProgressTrack.AnchorPoint = Vector2.new(0, 1) ProgressTrack.Position = UDim2.fromScale(0, 1) ProgressTrack.Size = UDim2.new(1, 0, 0, 3) ProgressTrack.BackgroundColor3 = Accent ProgressTrack.BackgroundTransparency = 1 ProgressTrack.BorderSizePixel = 0 ProgressTrack:SetAttribute("NoApplyTheme", true) ProgressTrack.Parent = Notification local ProgressFill = Instance.new("Frame") ProgressFill.Name = "ProgressFill" ProgressFill.Size = UDim2.fromScale(1, 1) ProgressFill.BackgroundColor3 = Accent ProgressFill.BackgroundTransparency = 1 ProgressFill.BorderSizePixel = 0 ProgressFill:SetAttribute("NoApplyTheme", true) ProgressFill.Parent = ProgressTrack local Lifetime = Settings.Lifetime == nil and 3 or Settings.Lifetime local FinalScale = Settings.Scale or 1 local Alive = true -- Elements faded together on enter / exit (CanvasGroup proved unreliable). local FadeTargets = { { Notification, "BackgroundTransparency", 0.03 }, { NotificationUIStroke, "Transparency", StrokeTransparency }, { AccentBar, "BackgroundTransparency", 0.1 }, { IconHolder, "BackgroundTransparency", 0.82 }, { IconGlyph, "TextTransparency", 0 }, { NotificationTitle, "TextTransparency", 0 }, { NotificationDescription, "TextTransparency", 0.15 }, { Close, "TextTransparency", 0.3 }, { ProgressTrack, "BackgroundTransparency", 0.85 }, { ProgressFill, "BackgroundTransparency", 0.1 }, } local function Dismiss() if not Alive then return end Alive = false Utility:PropertyTween(NotificationUIScale, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Scale = 0.9 }):Play() local last for _, item in ipairs(FadeTargets) do last = Utility:PropertyTween(item[1], TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { [item[2]] = 1 }) last:Play() end if last then last.Completed:Once(function() Notification:Destroy() end) else Notification:Destroy() end end Close.MouseButton1Click:Connect(function() Dismiss() if Settings.Callback then task.spawn(Settings.Callback) end end) Close.MouseEnter:Connect(function() if Alive then Utility:QuickTween(Close, { TextTransparency = 0 }) end end) Close.MouseLeave:Connect(function() if Alive then Utility:QuickTween(Close, { TextTransparency = 0.3 }) end end) local AnimateNotification = task.spawn(function() Utility:PropertyTween(NotificationUIScale, TweenInfo.new(0.34, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Scale = FinalScale }):Play() for _, item in ipairs(FadeTargets) do Utility:PropertyTween(item[1], TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { [item[2]] = item[3] }):Play() end if Lifetime and Lifetime > 0 then Utility:PropertyTween(ProgressFill, TweenInfo.new(Lifetime, Enum.EasingStyle.Linear), { Size = UDim2.fromScale(0, 1) }):Play() task.wait(Lifetime) Dismiss() else ProgressTrack.Visible = false end end) function NotificationFunctions:UpdateTitle(New) NotificationTitle.Text = New end function NotificationFunctions:UpdateDescription(New) NotificationDescription.Text = New NotificationDescription.Visible = New ~= nil and New ~= "" end function NotificationFunctions:Resize(X) Notification.Size = UDim2.fromOffset(X or 285, 0) end function NotificationFunctions:Cancel() pcall(task.cancel, AnimateNotification) Dismiss() end return NotificationFunctions end function WindowFunctions:Dialog(Settings) local DialogFunctions = {} local DialogCanvas = Instance.new("CanvasGroup") DialogCanvas.Name = "DialogCanvas" DialogCanvas.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DialogCanvas.BackgroundTransparency = 1 DialogCanvas.BorderColor3 = Color3.fromRGB(0, 0, 0) DialogCanvas.BorderSizePixel = 0 DialogCanvas.Size = UDim2.fromScale(1, 1) DialogCanvas.GroupTransparency = 1 DialogCanvas.Parent = Base local Dialog = Instance.new("Frame") Dialog.Name = "Dialog" Dialog.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Dialog.BackgroundTransparency = 0.5 Dialog.BorderColor3 = Color3.fromRGB(0, 0, 0) Dialog.BorderSizePixel = 0 Dialog.Size = UDim2.fromScale(1, 1) local DialogUICorner = Instance.new("UICorner") DialogUICorner.Name = "DialogUICorner" DialogUICorner.CornerRadius = UDim.new(0, 10) DialogUICorner.Parent = Dialog local Prompt = Instance.new("Frame") Prompt.Name = "Prompt" Prompt.AnchorPoint = Vector2.new(0.5, 0.5) Prompt.AutomaticSize = Enum.AutomaticSize.Y Prompt.BackgroundColor3 = Color3.fromRGB(15, 15, 15) Prompt.BorderColor3 = Color3.fromRGB(0, 0, 0) Prompt.BorderSizePixel = 0 Prompt.Position = UDim2.fromScale(0.5, 0.5) Prompt.Size = UDim2.fromOffset(280, 0) local PromptUIScale = Instance.new("UIScale") PromptUIScale.Name = "PromptUIScale" PromptUIScale.Parent = Prompt PromptUIScale.Scale = 0.95 local GlobalUIStroke = Instance.new("UIStroke") GlobalUIStroke.Name = "GlobalUIStroke" GlobalUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border GlobalUIStroke.Color = Color3.fromRGB(255, 255, 255) GlobalUIStroke.Transparency = 0.9 GlobalUIStroke.Parent = Prompt local GlobalUICorner = Instance.new("UICorner") GlobalUICorner.Name = "GlobalUICorner" GlobalUICorner.CornerRadius = UDim.new(0, 10) GlobalUICorner.Parent = Prompt local GlobalUIPadding = Instance.new("UIPadding") GlobalUIPadding.Name = "GlobalUIPadding" GlobalUIPadding.PaddingBottom = UDim.new(0, 20) GlobalUIPadding.PaddingLeft = UDim.new(0, 20) GlobalUIPadding.PaddingRight = UDim.new(0, 20) GlobalUIPadding.PaddingTop = UDim.new(0, 20) GlobalUIPadding.Parent = Prompt local Paragraph = Instance.new("Frame") Paragraph.Name = "Paragraph" Paragraph.AutomaticSize = Enum.AutomaticSize.Y Paragraph.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Paragraph.BackgroundTransparency = 1 Paragraph.BorderColor3 = Color3.fromRGB(0, 0, 0) Paragraph.BorderSizePixel = 0 Paragraph.Size = UDim2.new(1, 0, 0, 38) local ParagraphHeader = Instance.new("TextLabel") ParagraphHeader.Name = "ParagraphHeader" ParagraphHeader.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) ParagraphHeader.RichText = true ParagraphHeader.Text = Settings.Title ParagraphHeader.TextColor3 = Color3.fromRGB(255, 255, 255) ParagraphHeader.TextSize = 18 ParagraphHeader.TextTransparency = 0.4 ParagraphHeader.TextWrapped = true ParagraphHeader.AutomaticSize = Enum.AutomaticSize.Y ParagraphHeader.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ParagraphHeader.BackgroundTransparency = 1 ParagraphHeader.BorderColor3 = Color3.fromRGB(0, 0, 0) ParagraphHeader.BorderSizePixel = 0 ParagraphHeader.Size = UDim2.fromScale(1, 0) ParagraphHeader.Parent = Paragraph local ParagraphLayout = Instance.new("UIListLayout") ParagraphLayout.Name = "ParagraphLayout" ParagraphLayout.Padding = UDim.new(0, 15) ParagraphLayout.SortOrder = Enum.SortOrder.LayoutOrder ParagraphLayout.Parent = Paragraph local ParagraphBody = Instance.new("TextLabel") ParagraphBody.Name = "ParagraphBody" ParagraphBody.FontFace = Font.new(Assets.InterFont) ParagraphBody.RichText = true ParagraphBody.Text = Settings.Description ParagraphBody.TextColor3 = Color3.fromRGB(255, 255, 255) ParagraphBody.TextSize = 14 ParagraphBody.TextTransparency = 0.5 ParagraphBody.TextWrapped = true ParagraphBody.AutomaticSize = Enum.AutomaticSize.Y ParagraphBody.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ParagraphBody.BackgroundTransparency = 1 ParagraphBody.BorderColor3 = Color3.fromRGB(0, 0, 0) ParagraphBody.BorderSizePixel = 0 ParagraphBody.LayoutOrder = 1 ParagraphBody.Size = UDim2.fromScale(1, 0) ParagraphBody.Parent = Paragraph Paragraph.Parent = Prompt local Interactions = Instance.new("Frame") Interactions.Name = "Interactions" Interactions.AutomaticSize = Enum.AutomaticSize.Y Interactions.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Interactions.BackgroundTransparency = 1 Interactions.BorderColor3 = Color3.fromRGB(0, 0, 0) Interactions.BorderSizePixel = 0 Interactions.LayoutOrder = 1 Interactions.Size = UDim2.fromScale(1, 0) local InteractionLayout = Instance.new("UIListLayout") InteractionLayout.Name = "InteractionLayout" InteractionLayout.Padding = UDim.new(0, 10) InteractionLayout.SortOrder = Enum.SortOrder.LayoutOrder InteractionLayout.Parent = Interactions local InteractionPadding = Instance.new("UIPadding") InteractionPadding.Name = "InteractionPadding" InteractionPadding.PaddingTop = UDim.new(0, 20) InteractionPadding.Parent = Interactions Interactions.Parent = Prompt local PromptLayout = Instance.new("UIListLayout") PromptLayout.Name = "PromptLayout" PromptLayout.SortOrder = Enum.SortOrder.LayoutOrder PromptLayout.Parent = Prompt Prompt.Parent = Dialog Dialog.Parent = DialogCanvas local CanvasIn = Utility:PropertyTween(DialogCanvas, TweenInfo.new(0.1, Enum.EasingStyle.Sine), { GroupTransparency = 0 }) local CanvasOut = Utility:PropertyTween(DialogCanvas, TweenInfo.new(0.1, Enum.EasingStyle.Sine), { GroupTransparency = 1 }) local ScaleIn = Utility:PropertyTween(PromptUIScale, TweenInfo.new(0.1, Enum.EasingStyle.Sine), { Scale = 1 }) local ScaleOut = Utility:PropertyTween(PromptUIScale, TweenInfo.new(0.1, Enum.EasingStyle.Sine), { Scale = 0.95 }) local function DialogIn() CanvasIn:Play() ScaleIn:Play() CanvasIn.Completed:Wait() Dialog.Parent = Base end local function DialogOut() Dialog.Parent = DialogCanvas CanvasOut:Play() ScaleOut:Play() CanvasOut.Completed:Wait() DialogCanvas:Destroy() end for _, InstanceButton in pairs(Settings.Buttons) do local Button = Instance.new("TextButton") Button.Name = "Button" Button.FontFace = Font.new(Assets.InterFont) Button.Text = InstanceButton.Name Button.TextColor3 = Color3.fromRGB(255, 255, 255) Button.TextSize = 15 Button.TextTransparency = 0.5 Button.TextTruncate = Enum.TextTruncate.AtEnd Button.AutoButtonColor = false Button.AutomaticSize = Enum.AutomaticSize.Y Button.BackgroundColor3 = Color3.fromRGB(25, 25, 25) Button.BorderColor3 = Color3.fromRGB(0, 0, 0) Button.BorderSizePixel = 0 Button.Size = UDim2.fromScale(1, 0) local ButtonPadding = Instance.new("UIPadding") ButtonPadding.Name = "ButtonPadding" ButtonPadding.PaddingBottom = UDim.new(0, 9) ButtonPadding.PaddingLeft = UDim.new(0, 10) ButtonPadding.PaddingRight = UDim.new(0, 10) ButtonPadding.PaddingTop = UDim.new(0, 9) ButtonPadding.Parent = Button local ButtonUICorner = Instance.new("UICorner") ButtonUICorner.Name = "ButtonUICorner" ButtonUICorner.CornerRadius = UDim.new(0, 10) ButtonUICorner.Parent = Button Button.Parent = Interactions local TweenSettings = { DefaultTransparency = 0, DefaultTransparency2 = 0.5, HoverTransparency = 0.3, HoverTransparency2 = 0.6, EasingStyle = Enum.EasingStyle.Sine } local function ChangeState(State) if State == "Idle" then Utility:PropertyTween(Button, TweenInfo.new(0.2, TweenSettings.EasingStyle), { BackgroundTransparency = TweenSettings.DefaultTransparency, TextTransparency = TweenSettings.DefaultTransparency2 }):Play() elseif State == "Hover" then Utility:PropertyTween(Button, TweenInfo.new(0.2, TweenSettings.EasingStyle), { BackgroundTransparency = TweenSettings.HoverTransparency, TextTransparency = TweenSettings.HoverTransparency2 }):Play() end end Button.MouseButton1Click:Connect(function() if DialogCanvas.GroupTransparency ~= 0 then return end if InstanceButton.Callback then InstanceButton.Callback() end if WaveLibrary.Unloaded then return end DialogOut() end) Button.MouseEnter:Connect(function() ChangeState("Hover") end) Button.MouseLeave:Connect(function() ChangeState("Idle") end) end DialogIn() function DialogFunctions:UpdateTitle(New) ParagraphHeader.Text = New end function DialogFunctions:UpdateDescription(New) ParagraphBody.Text = New end function DialogFunctions:Cancel() DialogOut() end WindowFunctions:ApplyCurrentTheme() return DialogFunctions end function WindowFunctions:Encounter(Settings) local EncounterFunctions = {} Settings = Settings or {} local EncounterCanvas = Instance.new("CanvasGroup") EncounterCanvas.Name = "EncounterCanvas" EncounterCanvas.BackgroundColor3 = Color3.fromRGB(255, 255, 255) EncounterCanvas.BackgroundTransparency = 1 EncounterCanvas.BorderColor3 = Color3.fromRGB(0, 0, 0) EncounterCanvas.BorderSizePixel = 0 EncounterCanvas.Size = UDim2.fromScale(1, 1) EncounterCanvas.GroupTransparency = 1 EncounterCanvas.Parent = Base local Encounter = Instance.new("Frame") Encounter.Name = "Encounter" Encounter.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Encounter.BackgroundTransparency = 0.5 Encounter.BorderColor3 = Color3.fromRGB(0, 0, 0) Encounter.BorderSizePixel = 0 Encounter.Size = UDim2.fromScale(1, 1) Encounter.Active = true local EncounterUICorner = Instance.new("UICorner") EncounterUICorner.Name = "BaseUICorner" EncounterUICorner.CornerRadius = UDim.new(0, 10) EncounterUICorner.Parent = Encounter local ContentContainer = Instance.new("ScrollingFrame") ContentContainer.Name = "ContentContainer" ContentContainer.AutomaticCanvasSize = Enum.AutomaticSize.XY ContentContainer.BackgroundTransparency = 1 ContentContainer.BorderColor3 = Color3.fromRGB(0, 0, 0) ContentContainer.BorderSizePixel = 0 ContentContainer.Size = UDim2.fromScale(1, 1) ContentContainer.ScrollBarThickness = 4 ContentContainer.ScrollBarImageColor3 = Color3.fromRGB(255, 255, 255) ContentContainer.ScrollBarImageTransparency = 0.8 ContentContainer.CanvasSize = UDim2.new(0, 0, 0, 0) ContentContainer.Active = true local ContentUIPadding = Instance.new("UIPadding") ContentUIPadding.Name = "ContentUIPadding" ContentUIPadding.PaddingBottom = UDim.new(0, Settings.ContainerPaddingBottom or 20) ContentUIPadding.PaddingLeft = UDim.new(0, Settings.ContainerPaddingLeft or 20) ContentUIPadding.PaddingRight = UDim.new(0, Settings.ContainerPaddingRight or 20) ContentUIPadding.PaddingTop = UDim.new(0, Settings.ContainerPaddingTop or 20) ContentUIPadding.Parent = ContentContainer local CardsContainer = Instance.new("Frame") CardsContainer.Name = "CardsContainer" CardsContainer.AnchorPoint = Vector2.new(0.5, 0.5) CardsContainer.Position = UDim2.fromScale(0.5, 0.5) CardsContainer.AutomaticSize = Enum.AutomaticSize.XY CardsContainer.BackgroundColor3 = Color3.fromRGB(255, 255, 255) CardsContainer.BackgroundTransparency = 1 CardsContainer.BorderColor3 = Color3.fromRGB(0, 0, 0) CardsContainer.BorderSizePixel = 0 CardsContainer.Parent = ContentContainer local UIListLayout = Instance.new("UIListLayout") UIListLayout.Name = "UIListLayout" UIListLayout.Padding = UDim.new(0, Settings.CardSpacing or 15) UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout.FillDirection = Settings.FillDirection or Enum.FillDirection.Horizontal UIListLayout.HorizontalAlignment = Settings.HorizontalAlignment or Enum.HorizontalAlignment.Center UIListLayout.VerticalAlignment = Settings.VerticalAlignment or Enum.VerticalAlignment.Top UIListLayout.Wraps = true UIListLayout.Parent = CardsContainer local CardsContainerPadding = Instance.new("UIPadding") CardsContainerPadding.Name = "CardsContainerPadding" CardsContainerPadding.PaddingBottom = UDim.new(0, Settings.CardsPaddingBottom or 0) CardsContainerPadding.PaddingLeft = UDim.new(0, Settings.CardsPaddingLeft or 0) CardsContainerPadding.PaddingRight = UDim.new(0, Settings.CardsPaddingRight or 0) CardsContainerPadding.PaddingTop = UDim.new(0, Settings.CardsPaddingTop or 0) CardsContainerPadding.Parent = CardsContainer ContentContainer.Parent = Encounter Encounter.Parent = EncounterCanvas Encounter.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then EncounterFunctions:Delete() end end) local CanvasIn = Utility:PropertyTween(EncounterCanvas, TweenInfo.new(0.1, Enum.EasingStyle.Sine), { GroupTransparency = 0 }) local CanvasOut = Utility:PropertyTween(EncounterCanvas, TweenInfo.new(0.1, Enum.EasingStyle.Sine), { GroupTransparency = 1 }) local function EncounterIn() CanvasIn:Play() CanvasIn.Completed:Wait() Encounter.Parent = Base end local function EncounterOut() Encounter.Parent = EncounterCanvas CanvasOut:Play() CanvasOut.Completed:Wait() EncounterCanvas:Destroy() end EncounterIn() function EncounterFunctions:AddCard(Card) if typeof(Card) ~= "Instance" then error("AddCard expects an Instance (GuiObject) as parameter") end Card.Parent = CardsContainer return Card end function EncounterFunctions:CreateDefaultCard(CardSettings) CardSettings = CardSettings or {} local Card = Instance.new("Frame") Card.Name = CardSettings.Name or "Card" Card.Size = CardSettings.Size or UDim2.fromOffset(170, 220) Card.BackgroundColor3 = CardSettings.BackgroundColor or Color3.fromRGB(25, 25, 25) Card.BorderColor3 = Color3.fromRGB(0, 0, 0) Card.BorderSizePixel = 0 local CardUICorner = Instance.new("UICorner") CardUICorner.CornerRadius = UDim.new(0, 8) CardUICorner.Parent = Card local CardUIStroke = Instance.new("UIStroke") CardUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border CardUIStroke.Color = Color3.fromRGB(255, 255, 255) CardUIStroke.Transparency = 0.95 CardUIStroke.Parent = Card local CardPadding = Instance.new("UIPadding") CardPadding.PaddingBottom = UDim.new(0, 10) CardPadding.PaddingLeft = UDim.new(0, 10) CardPadding.PaddingRight = UDim.new(0, 10) CardPadding.PaddingTop = UDim.new(0, 10) CardPadding.Parent = Card local CardLayout = Instance.new("UIListLayout") CardLayout.Padding = UDim.new(0, 8) CardLayout.SortOrder = Enum.SortOrder.LayoutOrder CardLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center CardLayout.Parent = Card if CardSettings.Image then local CardImage = Instance.new("ImageLabel") CardImage.Name = "CardImage" CardImage.Image = CardSettings.Image CardImage.ImageColor3 = CardSettings.ImageColor or Color3.fromRGB(255, 255, 255) CardImage.ImageTransparency = CardSettings.ImageTransparency or 0 CardImage.BackgroundTransparency = 1 CardImage.Size = UDim2.new(1, -20, 0, 80) CardImage.ScaleType = Enum.ScaleType.Fit CardImage.Parent = Card end if CardSettings.Title then local CardTitle = Instance.new("TextLabel") CardTitle.Name = "CardTitle" CardTitle.FontFace = Font.new( Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal ) CardTitle.Text = CardSettings.Title CardTitle.TextColor3 = Color3.fromRGB(255, 255, 255) CardTitle.TextSize = 16 CardTitle.TextTransparency = 0.3 CardTitle.TextWrapped = true CardTitle.BackgroundTransparency = 1 CardTitle.Size = UDim2.new(1, 0, 0, 20) CardTitle.LayoutOrder = 1 CardTitle.Parent = Card end if CardSettings.Description then local CardDescription = Instance.new("TextLabel") CardDescription.Name = "CardDescription" CardDescription.FontFace = Font.new(Assets.InterFont) CardDescription.Text = CardSettings.Description CardDescription.TextColor3 = Color3.fromRGB(255, 255, 255) CardDescription.TextSize = 13 CardDescription.TextTransparency = 0.5 CardDescription.TextWrapped = true CardDescription.BackgroundTransparency = 1 CardDescription.AutomaticSize = Enum.AutomaticSize.Y CardDescription.Size = UDim2.fromScale(1, 0) CardDescription.LayoutOrder = 2 CardDescription.Parent = Card end if CardSettings.ButtonText then local CardButton = Instance.new("TextButton") CardButton.Name = "CardButton" CardButton.FontFace = Font.new(Assets.InterFont) CardButton.Text = CardSettings.ButtonText CardButton.TextColor3 = Color3.fromRGB(255, 255, 255) CardButton.TextSize = 14 CardButton.TextTransparency = 0.4 CardButton.AutoButtonColor = false CardButton.BackgroundColor3 = Color3.fromRGB(35, 35, 35) CardButton.BorderSizePixel = 0 CardButton.Size = UDim2.new(1, 0, 0, 30) CardButton.LayoutOrder = 3 local ButtonUICorner = Instance.new("UICorner") ButtonUICorner.CornerRadius = UDim.new(0, 6) ButtonUICorner.Parent = CardButton CardButton.Parent = Card CardButton.MouseButton1Click:Connect(function() if CardSettings.Callback then CardSettings.Callback() end end) CardButton.MouseEnter:Connect(function() Utility:PropertyTween(CardButton, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { BackgroundColor3 = Color3.fromRGB(45, 45, 45) }):Play() end) CardButton.MouseLeave:Connect(function() Utility:PropertyTween(CardButton, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { BackgroundColor3 = Color3.fromRGB(35, 35, 35) }):Play() end) end Card.MouseEnter:Connect(function() Utility:PropertyTween(Card, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { BackgroundTransparency = 0.1 }):Play() Utility:PropertyTween(CardUIStroke, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { Transparency = 0.9 }):Play() end) Card.MouseLeave:Connect(function() Utility:PropertyTween(Card, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { BackgroundTransparency = 0 }):Play() Utility:PropertyTween(CardUIStroke, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { Transparency = 0.95 }):Play() end) return Card end function EncounterFunctions:Delete() EncounterOut() end return EncounterFunctions end function WindowFunctions:SetNotificationsState(State) Notifications.Visible = State end function WindowFunctions:GetNotificationsState(State) return Notifications.Visible end function WindowFunctions:SetWindowState(State) WaveLibrary.WindowState = State end function WindowFunctions:SetState(State) WaveLibrary.WindowState = State Base.Visible = State end function WindowFunctions:GetState() return WaveLibrary.WindowState end local InformationPanel = Instance.new("TextButton") InformationPanel.Name = "InformationResult" InformationPanel.AnchorPoint = Vector2.new(0.5, 0.5) InformationPanel.BackgroundColor3 = Color3.fromRGB(15, 15, 15) InformationPanel.BackgroundTransparency = WaveLibrary.AcrylicBlur and 0.05 or 0 InformationPanel.BorderColor3 = Color3.fromRGB(0, 0, 0) InformationPanel.BorderSizePixel = 0 InformationPanel.Position = UDim2.fromScale(0.5, -0.25) InformationPanel.Size = UDim2.fromOffset(460, 55) InformationPanel.Parent = WaveLibraryUI InformationPanel.FontFace = Font.new(Assets.InterFont) InformationPanel.RichText = true InformationPanel.TextSize = 18 InformationPanel.Text = "" InformationPanel.TextTruncate = Enum.TextTruncate.SplitWord InformationPanel.TextColor3 = Color3.fromRGB(255, 255, 255) InformationPanel.Visible = false local InformationUIStroke = Instance.new("UIStroke") InformationUIStroke.Name = "InformationUIStroke" InformationUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border InformationUIStroke.Color = Color3.fromRGB(255, 255, 255) InformationUIStroke.Transparency = 0.9 InformationUIStroke.Parent = InformationPanel local InformationUICorner = Instance.new("UICorner") InformationUICorner.Name = "InformationUICorner" InformationUICorner.CornerRadius = UDim.new(0, 50) InformationUICorner.Parent = InformationPanel local InformationWallpaper = Instance.new("ImageLabel") InformationWallpaper.Name = "InformationWallpaper" InformationWallpaper.Image = Assets.StyleOneWallpaper InformationWallpaper.Size = UDim2.new(1, 0, 1, 0) InformationWallpaper.Position = UDim2.new(0, 0, 0, 0) InformationWallpaper.BackgroundTransparency = 1 InformationWallpaper.ImageTransparency = 0.65 InformationWallpaper.ImageColor3 = Color3.fromRGB(32, 32, 32) InformationWallpaper.ScaleType = Enum.ScaleType.Crop InformationWallpaper.Parent = InformationPanel local InformationLabel = Instance.new("TextLabel") InformationLabel.Name = "InformationWallpaper" InformationLabel.BackgroundColor3 = Color3.fromRGB(15, 15, 15) InformationLabel.BackgroundTransparency = WaveLibrary.AcrylicBlur and 0.05 or 0 InformationLabel.BorderColor3 = Color3.fromRGB(0, 0, 0) InformationLabel.BorderSizePixel = 0 InformationLabel.FontFace = Font.new(Assets.InterFont) InformationLabel.RichText = true InformationLabel.TextSize = 18 InformationLabel.Text = "" InformationLabel.TextTruncate = Enum.TextTruncate.SplitWord InformationLabel.TextColor3 = Color3.fromRGB(255, 255, 255) InformationLabel.Visible = true InformationLabel.Size = UDim2.new(1, 0, 1, 0) InformationLabel.Position = UDim2.new(0, 0, 0, 0) InformationLabel.BackgroundTransparency = 1 InformationLabel.ZIndex = 5 InformationLabel.Parent = InformationPanel local InformationWallpaperUICorner = Instance.new("UICorner") InformationWallpaperUICorner.Name = "WallpaperUICorner" InformationWallpaperUICorner.CornerRadius = UDim.new(0, 50) InformationWallpaperUICorner.Parent = InformationWallpaper function WindowFunctions:NotifyInformation(Message, Duration) InformationLabel.Text = Message or "No Message Shown." InformationPanel.Visible = true Utility:PropertyTween(InformationPanel, TweenInfo.new(0.75, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Position = UDim2.fromScale(0.5, 0.05) }):Play() if Duration then task.delay(Duration, function() Utility:PropertyTween(InformationPanel, TweenInfo.new(1, Enum.EasingStyle.Back, Enum.EasingDirection.In), { Position = UDim2.fromScale(0.5, -0.25) }):Play() end) task.delay(Duration + 1, function() InformationPanel.Visible = false end) end end; function WindowFunctions:SubWindowsUnload() for _, SubWindow in pairs(SubWindows) do SubWindow:Unload() end end function WindowFunctions:Unload() task.spawn(function() getgenv().QueuedTeleport = nil clearteleportqueue() self:SubWindowsUnload() for _, Item in pairs(WaveLibrary.Options) do if Item.Class == "Toggle" and Item:GetState() and not Item.Settings.Default and not Item.Settings.GlobalSetting then Item.Settings.Callback(false) end end ComponentManager:Unload() if OnUnloadCallback then OnUnloadCallback() end for NameOfConnection, Item in pairs(Maid) do if typeof(Item) == "RBXScriptConnection" then Item:Disconnect() elseif typeof(Item) == "thread" then task.cancel(Item) elseif typeof(Item) == "function" then Item() end Item = nil end Maid:DoCleaning() WaveLibraryUI:Destroy() WaveLibrary.Unloaded = true end) end function WindowFunctions.OnUnloaded(Callback) OnUnloadCallback = Callback end local MenuKeybind = Settings.Keybind or Enum.KeyCode.RightControl local KeybindFile = WaveLibrary.Folder .. "/settings/startup/KeybindSaved.wave" if isfile(KeybindFile) then local KeybindDetected = readfile(KeybindFile) MenuKeybind = Enum.KeyCode[KeybindDetected] end local function ToggleMenu() local WindowState = not WindowFunctions:GetState() WindowFunctions:SetState(WindowState) if getgenv().LockBehaviorBasedOnState then if WindowState then Services.UserInputService.MouseBehavior = Enum.MouseBehavior.Default else Services.UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter end end end -- Floating toggle button — fallback for when the status bar is disabled (otherwise the -- status-bar eye is the toggle). Lives in WaveLibraryUI (a sibling of Base), so it stays -- on screen even when the window is hidden. Drag to move it, tap to show/hide the menu. if Settings.ToggleButton and not Settings.StatusBar then local ToggleButton = Instance.new("ImageButton") ToggleButton.Name = "WaveToggleButton" ToggleButton.AnchorPoint = Vector2.new(0, 0) ToggleButton.Position = UDim2.new(0, 16, 0, 92) ToggleButton.Size = UDim2.fromOffset(40, 40) ToggleButton.BackgroundColor3 = Color3.fromRGB(18, 18, 24) ToggleButton.BackgroundTransparency = 0.08 ToggleButton.AutoButtonColor = false ToggleButton.Image = "" ToggleButton.ZIndex = 9999 ToggleButton.Parent = WaveLibraryUI local TBCorner = Instance.new("UICorner") TBCorner.CornerRadius = UDim.new(0, 11) TBCorner.Parent = ToggleButton local TBStroke = Instance.new("UIStroke") TBStroke.Color = Color3.fromRGB(255, 255, 255) TBStroke.Transparency = 0.82 TBStroke.Thickness = 1 TBStroke.Parent = ToggleButton local Glyph = Instance.new("Frame") Glyph.Name = "Glyph" Glyph.AnchorPoint = Vector2.new(0.5, 0.5) Glyph.Position = UDim2.fromScale(0.5, 0.5) Glyph.Size = UDim2.fromOffset(16, 16) Glyph.BackgroundTransparency = 1 Glyph.ZIndex = 10000 Glyph.Parent = ToggleButton local DotAnchors = { Vector2.new(0, 0), Vector2.new(1, 0), Vector2.new(0, 1), Vector2.new(1, 1) } local DotPositions = { UDim2.fromScale(0, 0), UDim2.fromScale(1, 0), UDim2.fromScale(0, 1), UDim2.fromScale(1, 1) } for i = 1, 4 do local Dot = Instance.new("Frame") Dot.Size = UDim2.fromOffset(6, 6) Dot.AnchorPoint = DotAnchors[i] Dot.Position = DotPositions[i] Dot.BackgroundColor3 = Color3.fromRGB(236, 236, 245) Dot.BorderSizePixel = 0 Dot.ZIndex = 10000 Dot.Parent = Glyph local DotCorner = Instance.new("UICorner") DotCorner.CornerRadius = UDim.new(0, 2) DotCorner.Parent = Dot end local Dragging, DragInput, DragStart, StartPos, Moved = false, nil, nil, nil, false ToggleButton.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then Dragging, Moved = true, false DragStart, StartPos = Input.Position, ToggleButton.Position end end) ToggleButton.InputChanged:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch then DragInput = Input end end) Maid.ToggleButtonMove = Services.UserInputService.InputChanged:Connect(function(Input) if Dragging and Input == DragInput then local Delta = Input.Position - DragStart if Delta.Magnitude > 6 then Moved = true end -- only move once it's clearly a drag, so a tap never nudges it if Moved then ToggleButton.Position = UDim2.new(StartPos.X.Scale, StartPos.X.Offset + Delta.X, StartPos.Y.Scale, StartPos.Y.Offset + Delta.Y) end end end) Maid.ToggleButtonEnd = Services.UserInputService.InputEnded:Connect(function(Input) if (Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch) and Dragging then Dragging = false if not Moved then ToggleMenu() end end end) ToggleButton.MouseEnter:Connect(function() Utility:PropertyTween(ToggleButton, TweenInfo.new(0.15), { BackgroundTransparency = 0 }):Play() Utility:PropertyTween(TBStroke, TweenInfo.new(0.15), { Transparency = 0.6 }):Play() end) ToggleButton.MouseLeave:Connect(function() Utility:PropertyTween(ToggleButton, TweenInfo.new(0.15), { BackgroundTransparency = 0.08 }):Play() Utility:PropertyTween(TBStroke, TweenInfo.new(0.15), { Transparency = 0.82 }):Play() end) end -- Top-right status bar: avatar + @username, live FPS, game name (auto-fetched). -- A drawer that expands when the window is shown and collapses to a rotating -- arrow when it's hidden; the arrow re-opens it any time (handy on mobile). if Settings.StatusBar then local Player = Services.Players.LocalPlayer -- shared icon sheet (the adapter's tab-icon resolver reuses this cache) local IconSheet = getgenv().__WaveIconSheet if IconSheet == nil then local ok, sheet = pcall(function() return Utility:LoadFile("Wave/UserInterface/Imports/Icons.lua") end) IconSheet = (ok and type(sheet) == "table") and sheet or false getgenv().__WaveIconSheet = IconSheet end local StatusBar = Instance.new("Frame") StatusBar.Name = "WaveStatusBar" StatusBar.AnchorPoint = Vector2.new(1, 0) StatusBar.Position = UDim2.new(1, -16, 0, 14) StatusBar.AutomaticSize = Enum.AutomaticSize.X StatusBar.Size = UDim2.new(0, 0, 0, 34) StatusBar.BackgroundColor3 = Color3.fromRGB(16, 16, 22) StatusBar.BackgroundTransparency = 0.04 StatusBar.BorderSizePixel = 0 StatusBar.ZIndex = 9998 StatusBar.Parent = WaveLibraryUI local SBCorner = Instance.new("UICorner") SBCorner.CornerRadius = UDim.new(0, 9) SBCorner.Parent = StatusBar local SBStroke = Instance.new("UIStroke") SBStroke.Name = "StatusStroke" SBStroke.Color = Color3.fromRGB(255, 255, 255) SBStroke.Transparency = 0.85 SBStroke.Thickness = 1 SBStroke.Parent = StatusBar local SBPadding = Instance.new("UIPadding") SBPadding.PaddingLeft = UDim.new(0, 9) SBPadding.PaddingRight = UDim.new(0, 9) SBPadding.Parent = StatusBar local SBLayout = Instance.new("UIListLayout") SBLayout.FillDirection = Enum.FillDirection.Horizontal SBLayout.VerticalAlignment = Enum.VerticalAlignment.Center SBLayout.SortOrder = Enum.SortOrder.LayoutOrder SBLayout.Padding = UDim.new(0, 0) -- no layout gap; the arrow gap collapses with the drawer, the eye gap is a spacer SBLayout.Parent = StatusBar -- Responsive scale: the bar is a sibling of the window (not under BaseUIScale), so we size it -- for small / mobile screens ourselves, toward the top-right anchor. The floor is higher than -- the window's so text stays legible and the arrow / eye stay tappable. Viewport changes are -- picked up by WindowFunctions:UpdateResponsiveScale (below); here we set the initial value. -- (Kept to a single new local on purpose -- CreateWindow is near Luau's 200-locals limit.) do local StatusScale = Instance.new("UIScale") StatusScale.Name = "StatusScale" local Camera = Services.Workspace.CurrentCamera local V = Camera and Camera.ViewportSize if V and V.X >= 1 and V.Y >= 1 then local Margin = (V.X < 700) and 12 or 36 StatusScale.Scale = math.clamp(math.min(1, (V.X - Margin) / 868, (V.Y - Margin) / 650), 0.72, 1) end StatusScale.Parent = StatusBar end -- the drawer: clips so its content slides in / out on expand & collapse local ContentClip = Instance.new("Frame") ContentClip.Name = "StatusContentClip" ContentClip.BackgroundTransparency = 1 ContentClip.ClipsDescendants = true ContentClip.Size = UDim2.new(0, 0, 1, 0) ContentClip.LayoutOrder = 0 ContentClip.ZIndex = 9999 ContentClip.Parent = StatusBar local Content = Instance.new("Frame") Content.Name = "StatusContent" Content.AnchorPoint = Vector2.new(1, 0.5) Content.Position = UDim2.new(1, 0, 0.5, 0) Content.AutomaticSize = Enum.AutomaticSize.X Content.Size = UDim2.new(0, 0, 1, 0) Content.BackgroundTransparency = 1 Content.ZIndex = 9999 Content.Parent = ContentClip local ContentLayout = Instance.new("UIListLayout") ContentLayout.FillDirection = Enum.FillDirection.Horizontal ContentLayout.VerticalAlignment = Enum.VerticalAlignment.Center ContentLayout.SortOrder = Enum.SortOrder.LayoutOrder ContentLayout.Padding = UDim.new(0, 10) ContentLayout.Parent = Content local ContentPad = Instance.new("UIPadding") -- gaps that collapse with the drawer ContentPad.PaddingLeft = UDim.new(0, 8) -- breathing room so the FPS dot's glow stroke isn't clipped ContentPad.PaddingRight = UDim.new(0, 8) -- gap to the arrow; collapses with the drawer so the closed pill hugs the arrow ContentPad.Parent = Content local function MakeDivider(order) local D = Instance.new("Frame") D.Name = "StatusDivider" D.BackgroundColor3 = Color3.fromRGB(255, 255, 255) D.BackgroundTransparency = 0.86 D.BorderSizePixel = 0 D.Size = UDim2.fromOffset(1, 15) D.LayoutOrder = order D.ZIndex = 9999 D.Parent = Content end -- FPS local FpsHolder = Instance.new("Frame") FpsHolder.Name = "FpsHolder" FpsHolder.BackgroundTransparency = 1 FpsHolder.AutomaticSize = Enum.AutomaticSize.X FpsHolder.Size = UDim2.new(0, 0, 1, 0) FpsHolder.LayoutOrder = 0 FpsHolder.ZIndex = 9999 FpsHolder.Parent = Content local FpsRow = Instance.new("UIListLayout") FpsRow.FillDirection = Enum.FillDirection.Horizontal FpsRow.VerticalAlignment = Enum.VerticalAlignment.Center FpsRow.SortOrder = Enum.SortOrder.LayoutOrder FpsRow.Padding = UDim.new(0, 7) FpsRow.Parent = FpsHolder local FpsDot = Instance.new("Frame") FpsDot.Name = "StatusDot" FpsDot.Size = UDim2.fromOffset(7, 7) FpsDot.BackgroundColor3 = Color3.fromRGB(80, 220, 130) FpsDot.BorderSizePixel = 0 FpsDot.LayoutOrder = 0 FpsDot.ZIndex = 9999 FpsDot.Parent = FpsHolder local FpsDotCorner = Instance.new("UICorner") FpsDotCorner.CornerRadius = UDim.new(1, 0) FpsDotCorner.Parent = FpsDot local FpsDotGlow = Instance.new("UIStroke") FpsDotGlow.Color = FpsDot.BackgroundColor3 FpsDotGlow.Thickness = 3 FpsDotGlow.Transparency = 0.76 FpsDotGlow.Parent = FpsDot local FpsText = Instance.new("TextLabel") FpsText.Name = "StatusValue" FpsText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) FpsText.Text = "-- FPS" FpsText.TextColor3 = Color3.fromRGB(238, 238, 245) FpsText.TextSize = 13 FpsText.AutomaticSize = Enum.AutomaticSize.X FpsText.Size = UDim2.new(0, 0, 1, 0) FpsText.BackgroundTransparency = 1 FpsText.TextXAlignment = Enum.TextXAlignment.Left FpsText.LayoutOrder = 1 FpsText.ZIndex = 9999 FpsText.Parent = FpsHolder MakeDivider(1) -- avatar + username local UserHolder = Instance.new("Frame") UserHolder.Name = "UserHolder" UserHolder.BackgroundTransparency = 1 UserHolder.AutomaticSize = Enum.AutomaticSize.X UserHolder.Size = UDim2.new(0, 0, 1, 0) UserHolder.LayoutOrder = 2 UserHolder.ZIndex = 9999 UserHolder.Parent = Content local UserRow = Instance.new("UIListLayout") UserRow.FillDirection = Enum.FillDirection.Horizontal UserRow.VerticalAlignment = Enum.VerticalAlignment.Center UserRow.SortOrder = Enum.SortOrder.LayoutOrder UserRow.Padding = UDim.new(0, 6) UserRow.Parent = UserHolder local Avatar = Instance.new("ImageLabel") Avatar.Name = "StatusAvatar" Avatar.Size = UDim2.fromOffset(18, 18) Avatar.BackgroundColor3 = Color3.fromRGB(44, 44, 54) Avatar.BackgroundTransparency = 0.2 Avatar.BorderSizePixel = 0 Avatar.Image = "" Avatar.ScaleType = Enum.ScaleType.Crop Avatar.LayoutOrder = 0 Avatar.ZIndex = 9999 Avatar.Parent = UserHolder local AvatarCorner = Instance.new("UICorner") AvatarCorner.CornerRadius = UDim.new(1, 0) AvatarCorner.Parent = Avatar local AvatarStroke = Instance.new("UIStroke") AvatarStroke.Color = Color3.fromRGB(255, 255, 255) AvatarStroke.Transparency = 0.8 AvatarStroke.Thickness = 1 AvatarStroke.Parent = Avatar local UserText = Instance.new("TextLabel") UserText.Name = "StatusMuted" UserText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) UserText.Text = "@" .. (Player and Player.Name or "player") UserText.TextColor3 = Color3.fromRGB(170, 170, 182) UserText.TextSize = 13 UserText.AutomaticSize = Enum.AutomaticSize.X UserText.Size = UDim2.new(0, 0, 1, 0) UserText.BackgroundTransparency = 1 UserText.TextXAlignment = Enum.TextXAlignment.Left UserText.LayoutOrder = 1 UserText.ZIndex = 9999 UserText.Parent = UserHolder MakeDivider(3) local GameText = Instance.new("TextLabel") GameText.Name = "StatusMuted" GameText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) GameText.Text = "…" GameText.TextColor3 = Color3.fromRGB(170, 170, 182) GameText.TextSize = 13 GameText.AutomaticSize = Enum.AutomaticSize.X GameText.Size = UDim2.new(0, 0, 1, 0) GameText.TextTruncate = Enum.TextTruncate.AtEnd GameText.BackgroundTransparency = 1 GameText.TextXAlignment = Enum.TextXAlignment.Left GameText.LayoutOrder = 4 GameText.ZIndex = 9999 GameText.Parent = Content local GameConstraint = Instance.new("UISizeConstraint") GameConstraint.MaxSize = Vector2.new(190, math.huge) GameConstraint.Parent = GameText -- arrow toggle (collapses the drawer; rotates 180 between states) local Arrow = Instance.new("TextButton") Arrow.Name = "StatusArrow" Arrow.AutoButtonColor = false Arrow.Text = "" Arrow.BackgroundTransparency = 1 Arrow.Size = UDim2.fromOffset(18, 18) Arrow.LayoutOrder = 1 Arrow.ZIndex = 9999 Arrow.Parent = StatusBar local Chevron = Instance.new("ImageLabel") Chevron.Name = "StatusChevron" Chevron.AnchorPoint = Vector2.new(0.5, 0.5) Chevron.Position = UDim2.fromScale(0.5, 0.5) Chevron.Size = UDim2.fromOffset(16, 16) Chevron.BackgroundTransparency = 1 Chevron.ImageColor3 = Color3.fromRGB(192, 192, 206) Chevron.ImageTransparency = 0.1 Chevron.ZIndex = 9999 Chevron.Parent = Arrow if IconSheet then pcall(function() IconSheet:SetIcon(Chevron, "chevron-left") end) end -- eye toggle: shows / hides the whole UI, sitting to the right of the arrow. Always on -- screen (even when the UI is hidden) so it's the way back in -- replaces the old floating -- button. Icon is "eye" while the UI is shown and "eye-off" while it's hidden. local EyeIcon local function SetEyeIcon(Shown) if EyeIcon and IconSheet then pcall(function() IconSheet:SetIcon(EyeIcon, Shown and "eye" or "eye-off") end) end end if Settings.ToggleButton then -- fixed gap between the arrow and the eye (the layout itself has no padding) local EyeGap = Instance.new("Frame") EyeGap.Name = "StatusEyeGap" EyeGap.BackgroundTransparency = 1 EyeGap.Size = UDim2.fromOffset(6, 1) EyeGap.LayoutOrder = 2 EyeGap.ZIndex = 9999 EyeGap.Parent = StatusBar local EyeButton = Instance.new("TextButton") EyeButton.Name = "StatusEye" EyeButton.AutoButtonColor = false EyeButton.Text = "" EyeButton.BackgroundTransparency = 1 EyeButton.Size = UDim2.fromOffset(20, 18) EyeButton.LayoutOrder = 3 EyeButton.ZIndex = 9999 EyeButton.Parent = StatusBar EyeIcon = Instance.new("ImageLabel") EyeIcon.Name = "StatusEyeIcon" EyeIcon.AnchorPoint = Vector2.new(0.5, 0.5) EyeIcon.Position = UDim2.fromScale(0.5, 0.5) EyeIcon.Size = UDim2.fromOffset(17, 17) EyeIcon.BackgroundTransparency = 1 EyeIcon.ImageColor3 = Color3.fromRGB(192, 192, 206) EyeIcon.ImageTransparency = 0.1 EyeIcon.ZIndex = 9999 EyeIcon.Parent = EyeButton SetEyeIcon(WaveLibrary.WindowState ~= false) EyeButton.MouseButton1Click:Connect(function() ToggleMenu() end) EyeButton.MouseEnter:Connect(function() Utility:PropertyTween(EyeIcon, TweenInfo.new(0.12), { ImageTransparency = 0 }):Play() end) EyeButton.MouseLeave:Connect(function() Utility:PropertyTween(EyeIcon, TweenInfo.new(0.12), { ImageTransparency = 0.1 }):Play() end) end -- expand / collapse. The clip width is driven explicitly from the row's measured width. -- (The clip can't AutomaticSize itself: the row is anchored to the clip's right edge, so the -- size would be circular and resolve to 0.) Content auto-sizes its *own* children reliably, -- so FullWidth is cached every time the row re-measures -- even while collapsed (the FPS digits -- keep it fresh) -- and reopening tweens straight to that cached width instead of reading a -- stale/under-measured value mid-collapse and snapping. Re-sync is suppressed during the -- animation so a re-measure can't jump the drawer to full while it's tweening open. local StatusExpanded = true local Animating = false -- AbsoluteSize already includes StatusScale, but the clip width we set is a local offset, so -- divide the scale back out (otherwise it would be applied twice and the drawer would mis-size). local FullWidth = Content.AbsoluteSize.X / StatusBar.StatusScale.Scale local function SyncWidth() local Scale = StatusBar.StatusScale.Scale local w = Content.AbsoluteSize.X / (Scale > 0 and Scale or 1) if w > 0 then FullWidth = w end if StatusExpanded and not Animating then ContentClip.Size = UDim2.new(0, FullWidth, 1, 0) end end Content:GetPropertyChangedSignal("AbsoluteSize"):Connect(SyncWidth) task.defer(SyncWidth) local function SetExpanded(State, Animate) if StatusExpanded == State then return end StatusExpanded = State Animating = true local Info = TweenInfo.new(Animate and 0.34 or 0, Enum.EasingStyle.Quint, Enum.EasingDirection.Out) local Tween = Utility:PropertyTween(ContentClip, Info, { Size = UDim2.new(0, State and FullWidth or 0, 1, 0) }) Tween.Completed:Connect(function(playState) if playState ~= Enum.PlaybackState.Completed then return -- superseded by a newer toggle; let that one settle end Animating = false if StatusExpanded then ContentClip.Size = UDim2.new(0, FullWidth, 1, 0) -- settle on the exact width end end) Tween:Play() Utility:PropertyTween(Chevron, Info, { Rotation = State and 0 or 180 }):Play() end Arrow.MouseButton1Click:Connect(function() SetExpanded(not StatusExpanded, true) end) Arrow.MouseEnter:Connect(function() Utility:PropertyTween(Chevron, TweenInfo.new(0.12), { ImageTransparency = 0 }):Play() end) Arrow.MouseLeave:Connect(function() Utility:PropertyTween(Chevron, TweenInfo.new(0.12), { ImageTransparency = 0.1 }):Play() end) -- avatar headshot (async) task.spawn(function() local url pcall(function() url = Services.Players:GetUserThumbnailAsync(Player.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48) end) if url and Avatar and Avatar.Parent then Avatar.Image = url end end) -- game name (async, non-blocking) task.spawn(function() local name pcall(function() name = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name end) if not name or name == "" then pcall(function() name = game.Name end) end name = (name and name ~= "") and name or "Roblox" if not (GameText and GameText.Parent) then return end GameText.Text = name -- Freeze GameText to a fixed width. Because it uses TextTruncate, while the drawer is clipped -- shut it would otherwise measure 0 (it "truncates to nothing"), making the row under-measure -- so the open animation under-shoots and snaps the last chunk in at the end. A fixed width -- measures the same open or closed. Capped at 190 (truncation still applies past that). local w pcall(function() local Params = Instance.new("GetTextBoundsParams") Params.Text = name Params.Font = GameText.FontFace Params.Size = GameText.TextSize Params.Width = 100000 w = game:GetService("TextService"):GetTextBoundsAsync(Params).X end) w = math.min(math.ceil((w and w > 0) and w or 90) + 1, 190) GameText.AutomaticSize = Enum.AutomaticSize.None GameText.Size = UDim2.new(0, w, 1, 0) end) -- live FPS + follow the window's shown/hidden state local Accum, Frames, LastUiState = 0, 0, true Maid.StatusFps = Services.RunService.RenderStepped:Connect(function(dt) local UiState = (WaveLibrary.WindowState ~= false) if UiState ~= LastUiState then LastUiState = UiState SetExpanded(UiState, true) SetEyeIcon(UiState) end Accum = Accum + dt Frames = Frames + 1 if Accum >= 0.5 then local Fps = math.floor(Frames / Accum + 0.5) Accum, Frames = 0, 0 FpsText.Text = Fps .. " FPS" local Col = (Fps >= 50 and Color3.fromRGB(80, 220, 130)) or (Fps >= 30 and Color3.fromRGB(245, 205, 90)) or Color3.fromRGB(245, 110, 110) FpsDot.BackgroundColor3 = Col FpsDotGlow.Color = Col end end) end Maid.MenuKeybind = Services.UserInputService.InputEnded:Connect(function(Input, Typing) if Typing then return end if Input.KeyCode == MenuKeybind then ToggleMenu() end end) Minimize.MouseButton1Click:Connect(ToggleMenu) Exit.MouseButton1Click:Connect(function() WindowFunctions:Dialog({ Title = Settings.Title, Description = "Are you sure you want to exit the menu? You will lose any unsaved configurations.", Buttons = { { Name = "Confirm", Callback = function() WindowFunctions:Unload() if Services.CoreGui:FindFirstChild("StartupScreen") then Services.CoreGui:FindFirstChild("StartupScreen"):Destroy() end end, }, { Name = "Cancel" } } }) end) function WindowFunctions:SetKeybind(Keycode) local KeybindFile = WaveLibrary.Folder .. "/settings/startup/KeybindSaved.wave" writefile(KeybindFile, Keycode.Name) MenuKeybind = Keycode end function WindowFunctions:SetAcrylicBlurState(State) WaveLibrary.AcrylicBlur = State Base.BackgroundTransparency = WindowFunctions:GetCurrentThemeAttribute("BackgroundTransparency") end function WindowFunctions:GetAcrylicBlurState() return WaveLibrary.AcrylicBlur end local function _SetUserInfoState(State) ShowUserInfo = State task.spawn(function() if State then Headshot.Image = (IsReady and HeadshotImage) or Assets.Null if Utility:GetPlayer() then Username.Text = "@" .. Utility:GetPlayer().Name DisplayName.Text = Utility:GetPlayer().DisplayName else Username.Text = "@" .. "Unknown" DisplayName.Text = "Unknown" end else Headshot.Image = Assets.UserInfoBlurred local nameLength = #Utility:GetPlayer().Name local displayNameLength = #Utility:GetPlayer().DisplayName Username.Text = "@" .. string.rep(".", nameLength) DisplayName.Text = string.rep(".", displayNameLength) end end) end function WindowFunctions:SetUserInfoState(State) _SetUserInfoState(State) end _SetUserInfoState(Settings.ShowUserInfo ~= nil and Settings.ShowUserInfo or true) function WindowFunctions:GetUserInfoState(State) return ShowUserInfo end function WindowFunctions:SetSize(Size) Base.Size = Size end function WindowFunctions:GetSize(Size) return Base.Size end function WindowFunctions:SetScale(Scale) BaseUIScale.Scale = Scale end function WindowFunctions:GetScale() return BaseUIScale.Scale end function WindowFunctions:GetResponsiveScale() local Camera = Services.Workspace.CurrentCamera if not Camera then return 1 end local Viewport = Camera.ViewportSize if Viewport.X < 1 or Viewport.Y < 1 then return 1 end local DesignWidth = (Settings.Size and Settings.Size.X.Offset) or 868 local DesignHeight = (Settings.Size and Settings.Size.Y.Offset) or 650 local Margin = (Viewport.X < 700) and 12 or 36 local Fit = math.min(1, (Viewport.X - Margin) / DesignWidth, (Viewport.Y - Margin) / DesignHeight) return math.clamp(Fit, 0.4, 1) end function WindowFunctions:UpdateResponsiveScale() local Scale = WindowFunctions:GetResponsiveScale() BaseUIScale.Scale = Scale -- keep the top-right status bar in step (it lives outside BaseUIScale), with a higher floor local SB = BaseUIScale.Parent and BaseUIScale.Parent.Parent and BaseUIScale.Parent.Parent:FindFirstChild("WaveStatusBar") local SS = SB and SB:FindFirstChild("StatusScale") if SS then SS.Scale = math.clamp(Scale, 0.72, 1) end end local function HookResponsiveScale() local Camera = Services.Workspace.CurrentCamera if Camera then Maid.ResponsiveViewport = Camera:GetPropertyChangedSignal("ViewportSize"):Connect(function() WindowFunctions:UpdateResponsiveScale() end) end end HookResponsiveScale() Maid.ResponsiveCameraSwap = Services.Workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(HookResponsiveScale) function WindowFunctions:ReturnFeatures() return WaveLibrary.Options end function WindowFunctions:RetrieveFeature(Feature) return WaveLibrary.Options[Feature] end function WindowFunctions:GetKeybindSet(Flag) for BoundFlag, BoundKey in pairs(Maid.ToggleKeybinds) do if BoundFlag == Flag then return BoundKey end end return nil end local function BuildFolderTree() local Paths = { WaveLibrary.Folder, WaveLibrary.Folder .. "/settings", WaveLibrary.Folder .. "/settings/" .. game.GameId, } for Index = 1, #Paths do local PathString = Paths[Index] if not isfolder(PathString) then makefolder(PathString) end end end function WaveLibrary:LoadAutoLoadConfig() if isfile(WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/" .. "autoload.txt") then local Name = readfile(WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/" .. "autoload.txt") local Success, ErrorMessage = WaveLibrary:LoadConfig(Name) if not Success then WindowFunctions:Notify({ Title = "Interface", Description = "Error loading autoload config: " .. ErrorMessage }) end WindowFunctions:Notify({ Title = "Interface", Description = string.format("Autoloaded config: %q", Name), }) end end function WaveLibrary:SetFolder(Folder) WaveLibrary.Folder = Folder or "WaveHubSettings" BuildFolderTree() end function WaveLibrary:SaveConfig(Path) if (not Path) then return false, "Please select a config file." end local FullPath = WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/" .. Path .. ".json" local Data = { Objects = {} } for Flag, Option in next, WaveLibrary.Options do if not ClassParser[Option.Class] then continue end if Option.IgnoreConfig then continue end table.insert(Data.Objects, ClassParser[Option.Class].Save(Flag, Option)) end local Success, Encoded = pcall(Services.HttpService.JSONEncode, Services.HttpService, Data) if not Success then return false, "Unable to encode into JSON data" end writefile(FullPath, Encoded) return true end function WaveLibrary:LoadConfig(Path) if (not Path) then return false, "Please select a config file." end local File = WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/" .. Path .. ".json" if not isfile(File) then return false, "Invalid file" end local Success, Decoded = pcall(Services.HttpService.JSONDecode, Services.HttpService, readfile(File)) if not Success then return false, "Unable to decode JSON data." end for _, Option in next, Decoded.Objects do if ClassParser[Option.ClassType] then ClassParser[Option.ClassType].Load(Option.Flag, Option) end end return true end function WaveLibrary:DeleteConfig(Path) if (not Path) then return false, "Please select a config file." end local FullPath = WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/" .. Path .. ".json" if not isfile(FullPath) then return false, "Config file does not exist." end local Success, Error = pcall(delfile, FullPath) if not Success then return false, "Unable to delete config file: " .. tostring(Error) end return true end function WaveLibrary:DeleteAllConfigs() local ConfigFolder = WaveLibrary.Folder .. "/settings/" .. game.GameId if not isfolder(ConfigFolder) then return false, "No configs folder found." end local Files = listfiles(ConfigFolder) local DeletedCount = 0 local Errors = {} for _, FilePath in next, Files do if FilePath:match("%.json$") then local Success, Error = pcall(delfile, FilePath) if Success then DeletedCount = DeletedCount + 1 else table.insert(Errors, FilePath .. ": " .. tostring(Error)) end end end if #Errors > 0 then return false, "Deleted " .. DeletedCount .. " configs, but encountered errors: " .. table.concat(Errors, ", ") end return true, "Successfully deleted " .. DeletedCount .. " config(s)." end function WaveLibrary:RefreshConfigList() if not isfolder(WaveLibrary.Folder) or not isfolder(WaveLibrary.Folder .. "/settings") or not isfolder(WaveLibrary.Folder .. "/settings/" .. game.GameId) then WaveLibrary:SetFolder("WaveHubSettings") end local List = listfiles(WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/") local Out = {} for Index = 1, #List do local File = List[Index] if File:sub(-5) == ".json" then local Pos = File:find(".json", 1, true) local Start = Pos local Char = File:sub(Pos, Pos) while Char ~= "/" and Char ~= "\\" and Char ~= "" do Pos = Pos - 1 Char = File:sub(Pos, Pos) end if Char == "/" or Char == "\\" then local Name = File:sub(Pos + 1, Start - 1) if Name ~= "options" then table.insert(Out, Name) end end end end return Out end local _ = HiddenMode and WindowFunctions:SetWindowState(false) WaveLibrary.WindowState = true Base.Visible = false Base.Position = UDim2.fromScale(0.5, 0.5) Base.AnchorPoint = Vector2.new(0.5, 0.5) BaseUIScale.Scale = WindowFunctions:GetResponsiveScale() * 0.93 Base.BackgroundTransparency = 1 for _, Child in ipairs(Base:GetChildren()) do if Child:IsA("GuiObject") and Child.Name ~= "Terminal" then ThemeUtility:MakeInvisible(Child) end end if Base:FindFirstChild("Terminal") then local Terminal = Base.Terminal Terminal:SetAttribute("OriginalBackgroundTransparency", Terminal.BackgroundTransparency) Terminal.BackgroundTransparency = 1 for _, Element in pairs(Terminal:GetDescendants()) do if Element:IsA("GuiObject") then Element:SetAttribute("OriginalBackgroundTransparency", Element.BackgroundTransparency) Element.BackgroundTransparency = 1 if Element:IsA("TextLabel") or Element:IsA("TextButton") or Element:IsA("TextBox") then Element:SetAttribute("OriginalTextTransparency", Element.TextTransparency) Element.TextTransparency = 1 elseif Element:IsA("ImageLabel") or Element:IsA("ImageButton") then Element:SetAttribute("OriginalImageTransparency", Element.ImageTransparency) Element.ImageTransparency = 1 end local Stroke = Element:FindFirstChildOfClass("UIStroke") if Stroke then Element:SetAttribute("OriginalStrokeTransparency", Stroke.Transparency) Stroke.Transparency = 1 end end end if Terminal:FindFirstChild("OutputUIStroke") then Terminal.OutputUIStroke:SetAttribute("OriginalTransparency", Terminal.OutputUIStroke.Transparency) Terminal.OutputUIStroke.Transparency = 1 end Terminal.Visible = Utility:SaveOpened() end local function AnimateOutputScreen(DelayTime, Duration) if not Base:FindFirstChild("Terminal") then return end local Terminal = Base.Terminal local ShouldBeVisible = Terminal:GetAttribute("OriginalVisibility") if ShouldBeVisible == false then return end Utility:PropertyTween(Terminal, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { BackgroundTransparency = WindowFunctions:GetCurrentThemeAttribute("BackgroundTransparency") }):Play() if Terminal:FindFirstChild("OutputUIStroke") then Utility:PropertyTween(Terminal.OutputUIStroke, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = Terminal:GetAttribute("StrokeTransparency") }):Play() end local DescendantDelay = 0 for _, Element in pairs(Terminal:GetDescendants()) do if Element:IsA("GuiObject") and Element.Name ~= "OutputWallpaper" then task.delay(DelayTime + DescendantDelay, function() local Properties = {} local BackgroundTransparency = Element:GetAttribute("OriginalBackgroundTransparency") if BackgroundTransparency ~= nil then Properties.BackgroundTransparency = BackgroundTransparency end if Element:IsA("TextLabel") or Element:IsA("TextButton") or Element:IsA("TextBox") then local TextTransparency = Element:GetAttribute("OriginalTextTransparency") if TextTransparency ~= nil then Properties.TextTransparency = TextTransparency end elseif Element:IsA("ImageLabel") or Element:IsA("ImageButton") then local ImageTransparency = Element:GetAttribute("OriginalImageTransparency") if ImageTransparency ~= nil then Properties.ImageTransparency = ImageTransparency end end if next(Properties) ~= nil then Utility:PropertyTween(Element, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), Properties):Play() end local Stroke = Element:FindFirstChildOfClass("UIStroke") if Stroke then local StrokeTransparency = Element:GetAttribute("OriginalStrokeTransparency") if StrokeTransparency ~= nil then Utility:PropertyTween(Stroke, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = StrokeTransparency }):Play() end end end) DescendantDelay = DescendantDelay + 0.01 end end if Terminal:FindFirstChild("OutputWallpaper") then Utility:PropertyTween(Terminal.OutputWallpaper, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { ImageTransparency = WindowFunctions:GetCurrentThemeAttribute("WallpaperTransparency") }):Play() end end task.delay(0.1, function() if not HiddenMode then Base.Visible = true end Utility:PropertyTween(BaseUIScale, TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Scale = WindowFunctions:GetResponsiveScale() }):Play() Utility:PropertyTween(Base, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { BackgroundTransparency = WindowFunctions:GetCurrentThemeAttribute("BackgroundTransparency") }):Play() if Wallpaper then Utility:PropertyTween(Wallpaper, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { ImageTransparency = WindowFunctions:GetCurrentThemeAttribute("WallpaperTransparency") }):Play() end if BaseUIStroke then Utility:PropertyTween(BaseUIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = WindowFunctions:GetCurrentThemeAttribute("StrokeTransparency") }):Play() end task.delay(0.1, function() if Sidebar then Utility:PropertyTween(Sidebar, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { BackgroundTransparency = WindowFunctions:GetCurrentThemeAttribute("SidebarTransparency") }):Play() if SidebarDivider then Utility:PropertyTween(SidebarDivider, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = WindowFunctions:GetCurrentThemeAttribute("StrokeTransparency") }):Play() end ThemeUtility:AnimateIn(Sidebar, 0.1, 0.3) end if Content then ThemeUtility:AnimateIn(Content, 0.2, 0.3) task.delay(0.3, function() if TabSwitcher and TabSelection then TabSelection() end end) end task.delay(0.1, function() AnimateOutputScreen(0.1, 0.4) end) end) end) return WindowFunctions end return WaveLibrary end R["Wave/UserInterface/Managers/ComponentManager.lua"] = function(...) local ComponentManager = {} ComponentManager.__index = ComponentManager local ActiveKeybindListeners = {} local RegisteredKeybinds = {} local KeybindElements = {} local KeyShortcuts = { Space = "SP", LeftShift = "LS", RightShift = "RS", LeftControl = "LC", RightControl = "RC", LeftAlt = "LA", RightAlt = "RA", MouseButton1 = "M1", MouseButton2 = "M2", MouseButton3 = "M3", CapsLock = "CL", NumLock = "NL", ScrollLock = "SL", Backspace = "BS", Return = "RT", Escape = "ES", Delete = "DL", Insert = "IN", PageUp = "PU", PageDown = "PD", Home = "HM", End = "EN", F1 = "F1", F2 = "F2", F3 = "F3", F4 = "F4", F5 = "F5", F6 = "F6", F7 = "F7", F8 = "F8", F9 = "F9", F10 = "F10", F11 = "F11", F12 = "F12", KeypadEnter = "KE", KeypadPlus = "KP+", KeypadMinus = "KP-", KeypadMultiply = "KP*", KeypadDivide = "KP/", KeypadZero = "K0", KeypadOne = "K1", KeypadTwo = "K2", KeypadThree = "K3", KeypadFour = "K4", KeypadFive = "K5", KeypadSix = "K6", KeypadSeven = "K7", KeypadEight = "K8", KeypadNine = "K9", Up = "UP", Down = "DN", Left = "LT", Right = "RT", Print = "PR", Pause = "PA", Menu = "MN", Unknown = "NA" } local ClassOffsets = { Button = 0.9, Toggle = 0.825, } local function CleanupConnection(ConnectionTable, Key) if ConnectionTable[Key] then if type(ConnectionTable[Key]) == "userdata" and ConnectionTable[Key].Disconnect then ConnectionTable[Key]:Disconnect() end ConnectionTable[Key] = nil end end local function FormatKeyDisplay(InputDescription) local DisplayKey = InputDescription:gsub("Enum.KeyCode.", ""):gsub("Enum.UserInputType.", "") return KeyShortcuts[DisplayKey] or DisplayKey end function ComponentManager.RemoveComponentBind(KeybindButton, KeybindLabel, Flag) if not RegisteredKeybinds[Flag] then Utility:Notify("Keybind Action", "No Keybind set for this feature.", 1) return end Utility:Notify("Keybind Action", "Keep holding to Unbind.", 1) task.delay(1, function() if Services.UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then RegisteredKeybinds[Flag] = nil Utility:Notify("Keybind Action", "Unbounded Key " .. Flag, 1) local TextTween = Utility:PropertyTween( KeybindLabel, TweenInfo.new(0.25, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 1} ) TextTween:Play() TextTween.Completed:Wait() KeybindLabel.Text = "" end end) end function ComponentManager.RegisterComponentKeybind(KeybindButton, KeybindLabel, Flag, MaidTable) if ActiveKeybindListeners[Flag] then return end ActiveKeybindListeners[Flag] = true Utility:Notify("Keybind Action", "The next key you click will be the keybind!", 3) MaidTable.KeybindInput = Services.UserInputService.InputBegan:Connect(function(Key, Typing) if Typing then return end local InputData = {} if Key.KeyCode ~= Enum.KeyCode.Unknown then InputData.Input = Key.KeyCode InputData.Description = tostring(Key.KeyCode.Name) elseif Key.UserInputType and string.find(tostring(Key.UserInputType), "MouseButton") then InputData.Input = Key.UserInputType InputData.Description = tostring(Key.UserInputType.Name) else InputData.Input = Key InputData.Description = tostring(Key) end InputData.KeybindSetTime = os.time() RegisteredKeybinds[Flag] = InputData if KeybindLabel == "" then KeybindLabel.TextTransparency = 1 end Utility:Notify("Keybind Action", "Set Keybind to " .. InputData.Description, 3) KeybindLabel.Text = FormatKeyDisplay(InputData.Description) Utility:PropertyTween( KeybindLabel, TweenInfo.new(0.25, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0.45} ):Play() CleanupConnection(MaidTable, "KeybindInput") ActiveKeybindListeners[Flag] = nil end) end function ComponentManager.CreateKeybindAssignments(KeybindButton, KeybindLabel, Arguments) Arguments.Maid.KeybindClick = KeybindButton.MouseButton1Click:Connect(function() if not Arguments.Functions:ReturnHidden() then ComponentManager.RegisterComponentKeybind(KeybindButton, KeybindLabel, Arguments.Flag, Arguments.Maid) end end) Arguments.Maid.KeybindRightClick = KeybindButton.MouseButton2Down:Connect(function() if not Arguments.Functions:ReturnHidden() then ComponentManager.RemoveComponentBind(KeybindButton, KeybindLabel, Arguments.Flag, Arguments.Maid) end end) local PreviousKeybindTransparency = KeybindButton.ImageTransparency Arguments.Maid.KeybindHover = KeybindButton.MouseEnter:Connect(function() if not Arguments.Functions:ReturnHidden() then PreviousKeybindTransparency = KeybindButton.ImageTransparency Utility:QuickTween(KeybindButton, {ImageTransparency = 0}) end end) Arguments.Maid.KeybindLeave = KeybindButton.MouseLeave:Connect(function() if not Arguments.Functions:ReturnHidden() then Utility:QuickTween(KeybindButton, {ImageTransparency = PreviousKeybindTransparency}) end end) end function ComponentManager.CreateKeybindComponents(Arguments) if not Arguments.Settings.KeybindEnabled then return end local KeybindButton = Instance.new("ImageButton") KeybindButton.Name = "KeybindButton" KeybindButton.Image = Assets.Fingerprint KeybindButton.ImageColor3 = Color3.fromRGB(255, 255, 255) KeybindButton.AutoButtonColor = false KeybindButton.AnchorPoint = Vector2.new(1, 0.5) KeybindButton.BackgroundTransparency = 1 KeybindButton.BorderSizePixel = 0 KeybindButton.Position = UDim2.fromScale(ClassOffsets[Arguments.Class], 0.5) KeybindButton.Size = UDim2.fromOffset(20, 20) KeybindButton.ImageTransparency = 0.45 KeybindButton.Parent = Arguments.Ancestor local KeybindLabel = Instance.new("TextLabel") KeybindLabel.Name = "KeybindLabel" KeybindLabel.Size = UDim2.fromScale(1, 1) KeybindLabel.TextTransparency = 1 KeybindLabel.TextStrokeTransparency = 0 KeybindLabel.BackgroundTransparency = 1 KeybindLabel.TextColor3 = Color3.fromRGB(255, 255, 255) KeybindLabel.TextScaled = true KeybindLabel.Font = Enum.Font.SourceSansBold KeybindLabel.Text = "" KeybindLabel.Parent = KeybindButton ComponentManager.CreateKeybindAssignments(KeybindButton, KeybindLabel, Arguments) local Elements = { KeybindButton = KeybindButton, KeybindLabel = KeybindLabel } KeybindElements[Arguments.Flag] = Elements return Elements end function ComponentManager.UpdateKeybindDetection(State, Flag, Elements) if RegisteredKeybinds[Flag] then RegisteredKeybinds[Flag].DetectionState = State end local TWEEN_INFO = TweenInfo.new(0.2, Enum.EasingStyle.Sine) if not Elements.KeybindButton or not Elements.KeybindLabel then return end if State then Services.TweenService:Create(Elements.KeybindButton, TWEEN_INFO, {ImageTransparency = 0.9}):Play() Services.TweenService:Create(Elements.KeybindLabel, TWEEN_INFO, {TextTransparency = 0.8}):Play() else Services.TweenService:Create(Elements.KeybindButton, TWEEN_INFO, {ImageTransparency = 0.45}):Play() Services.TweenService:Create(Elements.KeybindLabel, TWEEN_INFO, {TextTransparency = 0.45}):Play() end end function ComponentManager.AddFlagKeybind(Flag, Input) if not Flag or not Input then return false end local InputData = {} if typeof(Input) == "string" then local Keycode, UserInput pcall(function() Keycode = Enum.KeyCode[Input] end) pcall(function() UserInput = Enum.UserInputType[Input] end) if Keycode then InputData.Input = Keycode InputData.Description = Keycode.Name elseif UserInput then InputData.Input = UserInput InputData.Description = UserInput.Name else return false end elseif typeof(Input) == "EnumItem" then InputData.Input = Input InputData.Description = Input.Name else return false end InputData.KeybindSetTime = os.time() InputData.DetectionState = true RegisteredKeybinds[Flag] = InputData if KeybindElements[Flag] and KeybindElements[Flag].KeybindLabel then local KeybindLabel = KeybindElements[Flag].KeybindLabel KeybindLabel.Text = FormatKeyDisplay(InputData.Description) Utility:PropertyTween( KeybindLabel, TweenInfo.new(0.25, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0.45} ):Play() end return true end function ComponentManager:CheckFlagKeybind(Flag) if not Flag then return end if RegisteredKeybinds[Flag] then Utility:PrintTable(RegisteredKeybinds[Flag]) return RegisteredKeybinds[Flag].Description end return nil end function ComponentManager:Unload() if ComponentManager.KeybindHandler ~= nil then ComponentManager.KeybindHandler:Disconnect() end ComponentManager.KeybindHandler = nil end ComponentManager.KeybindHandler = Services.UserInputService.InputBegan:Connect(function(Key, Typing) if Typing then return end local InputData = {} if Key.KeyCode ~= Enum.KeyCode.Unknown then InputData.Input = Key.KeyCode elseif Key.UserInputType and string.find(tostring(Key.UserInputType), "MouseButton") then InputData.Input = Key.UserInputType else InputData.Input = Key end InputData.KeybindHit = os.time() for Flag, Data in pairs(RegisteredKeybinds) do if Data.DetectionState ~= nil and not Data.DetectionState then continue end if Data.Input == InputData.Input and (InputData.KeybindHit - Data.KeybindSetTime) ~= 0 then local ClassType, Component = WaveLibrary:ReturnFeatures()[Flag]:ReturnClass(), WaveLibrary:ReturnFeatures()[Flag] if ClassType == "Toggle" then Component:Toggle() elseif ClassType == "Button" then Component:RunCallback() end end end end) return ComponentManager end R["Wave/UserInterface/Managers/SettingManager.lua"] = function(...) end R["Wave/UserInterface/Components/Button.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale local ComponentManager = Requirements.ComponentManager function SectionFunctions:Button(Settings, Flag) local ButtonFunctions = { Settings = Settings, IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Class = "Button", IsHidden = false, Maid = {}, Elements = {} } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name, " ", "_") end local TWEEN_INFO = TweenInfo.new(0.2, Enum.EasingStyle.Sine) local TRANSPARENCY = { Default = 0.5, Hover = 0, Hidden = 0.9 } local ButtonAccent = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") or Color3.fromRGB(96, 165, 250) local ButtonBaseColor = WindowFunctions:GetCurrentThemeAttribute("ButtonColor") or Color3.fromRGB(40, 40, 48) local function CreateElements() local Elements = {} Elements.Button = Instance.new("Frame") Elements.Button.Name = "Button" Elements.Button.AutomaticSize = Enum.AutomaticSize.Y Elements.Button.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Elements.Button.BackgroundTransparency = 1 Elements.Button.BorderSizePixel = 0 Elements.Button.Size = UDim2.new(1, 0, 0, 38) Elements.Button.Parent = Section Elements.ButtonBackground = Instance.new("Frame") Elements.ButtonBackground.Name = "ButtonBG" Elements.ButtonBackground.BackgroundColor3 = WindowFunctions:GetCurrentThemeAttribute("HoverColor") or Color3.fromRGB(255, 255, 255) Elements.ButtonBackground.BackgroundTransparency = 1 Elements.ButtonBackground.BorderSizePixel = 0 Elements.ButtonBackground.AnchorPoint = Vector2.new(0.5, 0.5) Elements.ButtonBackground.Position = UDim2.fromScale(0.5, 0.5) Elements.ButtonBackground.Size = UDim2.new(1, 16, 1, 2) Elements.ButtonBackground.ZIndex = 0 Elements.ButtonBackground:SetAttribute("NoApplyTheme", true) Elements.ButtonBackground.Parent = Elements.Button local ButtonBGCorner = Instance.new("UICorner") ButtonBGCorner.CornerRadius = UDim.new(0, 8) ButtonBGCorner.Parent = Elements.ButtonBackground Elements.ButtonInteract = Instance.new("TextButton") Elements.ButtonInteract.Name = "ButtonInteract" Elements.ButtonInteract.FontFace = Font.new(Assets.InterFont) Elements.ButtonInteract.RichText = true Elements.ButtonInteract.TextColor3 = Color3.fromRGB(255, 255, 255) Elements.ButtonInteract.TextSize = 13 Elements.ButtonInteract.TextTransparency = TRANSPARENCY.Default Elements.ButtonInteract.TextTruncate = Enum.TextTruncate.AtEnd Elements.ButtonInteract.TextXAlignment = Enum.TextXAlignment.Left Elements.ButtonInteract.BackgroundTransparency = 1 Elements.ButtonInteract.BorderSizePixel = 0 Elements.ButtonInteract.Size = UDim2.fromScale(1, 1) Elements.ButtonInteract.Text = Settings.Name Elements.ButtonInteract.Parent = Elements.Button if Settings.PremiumFeature then Elements.ButtonInteract.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Parent = Elements.ButtonInteract end Elements.ButtonImage = Instance.new("ImageLabel") Elements.ButtonImage.Name = "ButtonImage" Elements.ButtonImage.Image = Assets.ButtonImage Elements.ButtonImage.ImageTransparency = TRANSPARENCY.Default Elements.ButtonImage.AnchorPoint = Vector2.new(1, 0.5) Elements.ButtonImage.BackgroundTransparency = 1 Elements.ButtonImage.BorderSizePixel = 0 Elements.ButtonImage.Position = UDim2.fromScale(1, 0.5) Elements.ButtonImage.Size = UDim2.fromOffset(15, 15) Elements.ButtonImage.Parent = Elements.Button return Elements end local function CreateKeybind() local KeybindComponents = ComponentManager.CreateKeybindComponents({ Ancestor = ButtonFunctions.Elements.Button, Class = ButtonFunctions.Class, Maid = ButtonFunctions.Maid, Functions = ButtonFunctions, Settings = Settings, Flag = Flag }) if KeybindComponents then ButtonFunctions.Elements.KeybindButton = KeybindComponents.KeybindButton ButtonFunctions.Elements.KeybindLabel = KeybindComponents.KeybindLabel end end local function HandleButtonClick() if ButtonFunctions.IsHidden then return end if Settings.Callback then Settings.Callback() end end local function ChangeState(State) if ButtonFunctions.IsHidden then return end local Hovering = State == "Hover" local TextTransparency = Hovering and TRANSPARENCY.Hover or TRANSPARENCY.Default local ImageTransparency = Hovering and TRANSPARENCY.Hover or TRANSPARENCY.Default Utility:PropertyTween(ButtonFunctions.Elements.ButtonBackground, TWEEN_INFO, { BackgroundTransparency = Hovering and 0.93 or 1 }):Play() if not Settings.PremiumFeature then Utility:PropertyTween(ButtonFunctions.Elements.ButtonInteract, TWEEN_INFO, { TextTransparency = TextTransparency }):Play() end if Utility:IsPremiumHubUser() then Utility:PropertyTween(ButtonFunctions.Elements.ButtonImage, TWEEN_INFO, { ImageTransparency = ImageTransparency }):Play() end end local function SetupConnections() ButtonFunctions.Maid.ButtonClick = ButtonFunctions.Elements.ButtonInteract.MouseButton1Click:Connect(HandleButtonClick) ButtonFunctions.Maid.ButtonPress = ButtonFunctions.Elements.ButtonInteract.MouseButton1Down:Connect(function() if ButtonFunctions.IsHidden then return end Utility:PropertyTween(ButtonFunctions.Elements.ButtonBackground, TweenInfo.new(0.08), {BackgroundTransparency = 0.86}):Play() end) ButtonFunctions.Maid.ButtonRelease = ButtonFunctions.Elements.ButtonInteract.MouseButton1Up:Connect(function() Utility:PropertyTween(ButtonFunctions.Elements.ButtonBackground, TweenInfo.new(0.14), {BackgroundTransparency = 0.93}):Play() end) ButtonFunctions.Maid.ButtonHover = ButtonFunctions.Elements.ButtonInteract.MouseEnter:Connect(function() if ButtonFunctions.IsHidden then return end ChangeState("Hover") end) ButtonFunctions.Maid.ButtonLeave = ButtonFunctions.Elements.ButtonInteract.MouseLeave:Connect(function() ChangeState("Idle") if WaveLibraryUI:FindFirstChild("HoverFrame") then WaveLibraryUI:FindFirstChild("HoverFrame"):Destroy() end end) end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end function ButtonFunctions:UpdateName(Name) ButtonFunctions.Elements.ButtonInteract.Text = Name end function ButtonFunctions:SetVisibility(State) ButtonFunctions.Elements.Button.Visible = State end function ButtonFunctions:GetState() return not ButtonFunctions.IsHidden end function ButtonFunctions:ReturnHidden() return ButtonFunctions.IsHidden end function ButtonFunctions:ReturnSettings() return Settings end function ButtonFunctions:ReturnClass() return ButtonFunctions.Class end function ButtonFunctions:ReturnTab() return ButtonFunctions.Tab end function ButtonFunctions:RunCallback() HandleButtonClick() end function ButtonFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end ButtonFunctions.IsHidden = State ComponentManager.UpdateKeybindDetection(State, Flag, { KeybindButton = ButtonFunctions.Elements.KeybindButton, KeybindLabel = ButtonFunctions.Elements.KeybindLabel, }) if State then Services.TweenService:Create(ButtonFunctions.Elements.ButtonImage, TWEEN_INFO, {ImageTransparency = TRANSPARENCY.Hidden}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(ButtonFunctions.Elements.ButtonInteract, TWEEN_INFO, {TextTransparency = TRANSPARENCY.Hidden}):Play() end if ButtonFunctions.Maid.ButtonClick then ButtonFunctions.Maid.ButtonClick:Disconnect() ButtonFunctions.Maid.ButtonClick = nil end else Services.TweenService:Create(ButtonFunctions.Elements.ButtonImage, TWEEN_INFO, {ImageTransparency = TRANSPARENCY.Default}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(ButtonFunctions.Elements.ButtonInteract, TWEEN_INFO, {TextTransparency = TRANSPARENCY.Default}):Play() end ButtonFunctions.Maid.ButtonClick = ButtonFunctions.Elements.ButtonInteract.MouseButton1Click:Connect(HandleButtonClick) end end function ButtonFunctions:SetToolTip(Tip) if ButtonFunctions.Elements.Button:FindFirstChild("ToolTipFrame") then ButtonFunctions.Elements.Button:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = ButtonFunctions.Elements.Button local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize(Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() ToolTipFrame.Visible = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end local function HideTooltip() Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end ButtonFunctions.Maid.TooltipShow = ButtonFunctions.Elements.ButtonInteract.MouseEnter:Connect(ShowTooltip) ButtonFunctions.Maid.TooltipHide = ButtonFunctions.Elements.ButtonInteract.MouseLeave:Connect(HideTooltip) end function ButtonFunctions:Destroy() for ConnectionName, Connection in pairs(ButtonFunctions.Maid) do if type(Connection) == "userdata" and Connection.Disconnect then Connection:Disconnect() end end table.clear(ButtonFunctions.Maid) if ButtonFunctions.Elements.Button then ButtonFunctions.Elements.Button:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end ButtonFunctions.Elements = CreateElements() CreateKeybind() SetupConnections() if Settings.Hidden then if typeof(Settings.Hidden) == "table" then ButtonFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else ButtonFunctions:SetHidden(Settings.Hidden) end end if Settings.ToolTip then ButtonFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then ButtonFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then ButtonFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then ButtonFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Flag then WaveLibrary.Options[Flag] = ButtonFunctions end return ButtonFunctions end end end R["Wave/UserInterface/Components/Callout.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end function SectionFunctions:Callout(Settings, Flag) Settings = Settings or {} local CalloutFunctions = { Settings = Settings, Class = "Callout", Tab = Requirements.TabName } local AccentMap = { Info = ThemeAttr("InfoColor", Color3.fromRGB(96, 165, 250)), None = ThemeAttr("AccentPrimary", Color3.fromRGB(96, 165, 250)), Success = ThemeAttr("SuccessColor", Color3.fromRGB(74, 222, 128)), Warning = ThemeAttr("WarningColor", Color3.fromRGB(250, 204, 21)), Error = ThemeAttr("ErrorColor", Color3.fromRGB(248, 113, 113)), } local Glyphs = { Info = "i", None = "i", Success = "✓", Warning = "!", Error = "✕" } local Style = Settings.Style or "Info" local Accent = AccentMap[Style] or AccentMap.Info local Glyph = Glyphs[Style] or "i" local TextPrimary = ThemeAttr("TextPrimary", Color3.fromRGB(236, 236, 241)) local TextSecondary = ThemeAttr("TextSecondary", Color3.fromRGB(168, 168, 178)) local HasTitle = (Settings.Title ~= nil and Settings.Title ~= "") local BodyValue = Settings.Content or Settings.Text or Settings.Description or "" local Card = Instance.new("Frame") Card.Name = "Callout" Card.BackgroundColor3 = Accent Card.BackgroundTransparency = 0.9 Card.BorderSizePixel = 0 Card.AutomaticSize = Enum.AutomaticSize.Y Card.Size = UDim2.new(1, 0, 0, 0) Card:SetAttribute("NoApplyTheme", true) Card.Parent = Section local CardCorner = Instance.new("UICorner") CardCorner.CornerRadius = UDim.new(0, 10) CardCorner.Parent = Card local CardStroke = Instance.new("UIStroke") CardStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border CardStroke.Color = Accent CardStroke.Transparency = 0.78 CardStroke.Parent = Card local AccentBar = Instance.new("Frame") AccentBar.Name = "AccentBar" AccentBar.BackgroundColor3 = Accent AccentBar.BackgroundTransparency = 0.05 AccentBar.BorderSizePixel = 0 AccentBar.AnchorPoint = Vector2.new(0, 0.5) AccentBar.Position = UDim2.new(0, 6, 0.5, 0) AccentBar.Size = UDim2.new(0, 3, 1, -18) AccentBar:SetAttribute("NoApplyTheme", true) AccentBar.Parent = Card local AccentBarCorner = Instance.new("UICorner") AccentBarCorner.CornerRadius = UDim.new(1, 0) AccentBarCorner.Parent = AccentBar local Content = Instance.new("Frame") Content.Name = "Content" Content.BackgroundTransparency = 1 Content.AutomaticSize = Enum.AutomaticSize.Y Content.Size = UDim2.new(1, 0, 0, 0) Content.Parent = Card local ContentPadding = Instance.new("UIPadding") ContentPadding.PaddingTop = UDim.new(0, 11) ContentPadding.PaddingBottom = UDim.new(0, 12) ContentPadding.PaddingLeft = UDim.new(0, 17) ContentPadding.PaddingRight = UDim.new(0, 13) ContentPadding.Parent = Content local ColumnLayout = Instance.new("UIListLayout") ColumnLayout.SortOrder = Enum.SortOrder.LayoutOrder ColumnLayout.Padding = UDim.new(0, 3) ColumnLayout.Parent = Content -- Top line: the main line (title, or body when there's no title) on the -- left and the status icon docked right, vertically centred with it. local TopLine = Instance.new("Frame") TopLine.Name = "TopLine" TopLine.BackgroundTransparency = 1 TopLine.Parent = Content if HasTitle then TopLine.Size = UDim2.new(1, 0, 0, 22) else TopLine.AutomaticSize = Enum.AutomaticSize.Y TopLine.Size = UDim2.new(1, 0, 0, 0) end local IconHolder = Instance.new("Frame") IconHolder.Name = "IconHolder" IconHolder.Size = UDim2.fromOffset(22, 22) IconHolder.BackgroundColor3 = Accent IconHolder.BackgroundTransparency = 0.8 IconHolder.BorderSizePixel = 0 IconHolder:SetAttribute("NoApplyTheme", true) if HasTitle then IconHolder.AnchorPoint = Vector2.new(1, 0.5) IconHolder.Position = UDim2.new(1, 0, 0.5, 0) else IconHolder.AnchorPoint = Vector2.new(1, 0) IconHolder.Position = UDim2.new(1, 0, 0, 0) end IconHolder.Parent = TopLine local IconCorner = Instance.new("UICorner") IconCorner.CornerRadius = UDim.new(1, 0) IconCorner.Parent = IconHolder local IconGlyph = Instance.new("TextLabel") IconGlyph.Name = "Result_Glyph" IconGlyph.BackgroundTransparency = 1 IconGlyph.Size = UDim2.fromScale(1, 1) IconGlyph.Text = Glyph IconGlyph.TextColor3 = Accent IconGlyph.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold, Enum.FontStyle.Normal) IconGlyph.TextSize = 13 IconGlyph:SetAttribute("NoApplyTheme", true) IconGlyph.Parent = IconHolder local MainText = Instance.new("TextLabel") MainText.Name = HasTitle and "Result_Title" or "Result_Body" MainText.FontFace = Font.new(Assets.InterFont, HasTitle and Enum.FontWeight.SemiBold or Enum.FontWeight.Medium, Enum.FontStyle.Normal) MainText.RichText = true MainText.Text = HasTitle and Settings.Title or BodyValue MainText.TextColor3 = HasTitle and TextPrimary or TextSecondary MainText.TextTransparency = HasTitle and 0 or 0.1 MainText.TextSize = HasTitle and 13 or 12 MainText.TextXAlignment = Enum.TextXAlignment.Left MainText.BackgroundTransparency = 1 MainText:SetAttribute("NoApplyTheme", true) if HasTitle then MainText.TextYAlignment = Enum.TextYAlignment.Center MainText.TextTruncate = Enum.TextTruncate.AtEnd MainText.Size = UDim2.new(1, -30, 1, 0) else MainText.TextYAlignment = Enum.TextYAlignment.Top MainText.TextWrapped = true MainText.AutomaticSize = Enum.AutomaticSize.Y MainText.Size = UDim2.new(1, -30, 0, 0) end MainText.Parent = TopLine local BodyText if HasTitle then BodyText = Instance.new("TextLabel") BodyText.Name = "Result_Body" BodyText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) BodyText.RichText = true BodyText.Text = BodyValue BodyText.TextColor3 = TextSecondary BodyText.TextTransparency = 0.1 BodyText.TextSize = 12 BodyText.TextXAlignment = Enum.TextXAlignment.Left BodyText.TextYAlignment = Enum.TextYAlignment.Top BodyText.TextWrapped = true BodyText.AutomaticSize = Enum.AutomaticSize.Y BodyText.BackgroundTransparency = 1 BodyText.LayoutOrder = 1 BodyText.Size = UDim2.new(1, 0, 0, 0) BodyText.Visible = (BodyValue ~= "") BodyText:SetAttribute("NoApplyTheme", true) BodyText.Parent = Content else BodyText = MainText end function CalloutFunctions:SetContent(New) BodyText.Text = New if HasTitle then BodyText.Visible = (New ~= nil and New ~= "") end return self end CalloutFunctions.SetValue = CalloutFunctions.SetContent function CalloutFunctions:SetTitle(New) if HasTitle then MainText.Text = New end return self end function CalloutFunctions:SetVisibility(State) Card.Visible = State end function CalloutFunctions:ReturnClass() return "Callout" end function CalloutFunctions:Destroy() Card:Destroy() end if Flag then WaveLibrary.Options[Flag] = CalloutFunctions end return CalloutFunctions end end end R["Wave/UserInterface/Components/CheckBox.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:CheckBox(Settings, Flag) local CheckBoxFunctions = { Settings = Settings, IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Class = "CheckBox", State = Settings.Default or false, IsHidden = false, Maid = {}, Elements = {} } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name, " ", "_") end local TWEEN_INFO = TweenInfo.new(0.2, Enum.EasingStyle.Sine) local function CreateElements() local Elements = {} Elements.CheckBox = Instance.new("Frame") Elements.CheckBox.Name = "CheckBox" Elements.CheckBox.AutomaticSize = Enum.AutomaticSize.Y Elements.CheckBox.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Elements.CheckBox.BackgroundTransparency = 1 Elements.CheckBox.BorderSizePixel = 0 Elements.CheckBox.Size = UDim2.new(1, 0, 0, 38) Elements.CheckBox.Parent = Section Elements.CheckBoxName = Instance.new("TextLabel") Elements.CheckBoxName.Name = "CheckBoxName" Elements.CheckBoxName.FontFace = Font.new(Assets.InterFont) Elements.CheckBoxName.Text = Settings.Name Elements.CheckBoxName.RichText = true Elements.CheckBoxName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") Elements.CheckBoxName.TextSize = 13 Elements.CheckBoxName.TextTransparency = 0.5 Elements.CheckBoxName.TextTruncate = Enum.TextTruncate.AtEnd Elements.CheckBoxName.TextXAlignment = Enum.TextXAlignment.Left Elements.CheckBoxName.TextYAlignment = Enum.TextYAlignment.Top Elements.CheckBoxName.AnchorPoint = Vector2.new(0, 0.5) Elements.CheckBoxName.AutomaticSize = Enum.AutomaticSize.Y Elements.CheckBoxName.BackgroundTransparency = 1 Elements.CheckBoxName.Position = UDim2.fromScale(0, 0.5) Elements.CheckBoxName.Size = UDim2.new(1, -35, 0, 0) Elements.CheckBoxName.Parent = Elements.CheckBox if Settings.PremiumFeature then Elements.CheckBoxName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Parent = Elements.CheckBoxName end Elements.CheckBoxButton = Instance.new("TextButton") Elements.CheckBoxButton.Name = "CheckBoxButton" Elements.CheckBoxButton.Text = "" Elements.CheckBoxButton.AutoButtonColor = false Elements.CheckBoxButton.AnchorPoint = Vector2.new(1, 0.5) Elements.CheckBoxButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Elements.CheckBoxButton.BackgroundTransparency = 0.9 Elements.CheckBoxButton.BorderSizePixel = 0 Elements.CheckBoxButton.Position = UDim2.fromScale(1, 0.5) Elements.CheckBoxButton.Size = UDim2.fromOffset(18, 18) Elements.CheckBoxButton.Parent = Elements.CheckBox local CheckBoxUICorner = Instance.new("UICorner") CheckBoxUICorner.CornerRadius = UDim.new(0, 4) CheckBoxUICorner.Parent = Elements.CheckBoxButton local CheckBoxUIStroke = Instance.new("UIStroke") CheckBoxUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border CheckBoxUIStroke.Color = Color3.fromRGB(255, 255, 255) CheckBoxUIStroke.Thickness = 1 CheckBoxUIStroke.Transparency = 0.8 CheckBoxUIStroke.Parent = Elements.CheckBoxButton Elements.Checkmark = Instance.new("TextLabel") Elements.Checkmark.Name = "Checkmark" Elements.Checkmark.Text = "✓" Elements.Checkmark.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold) Elements.Checkmark.TextColor3 = Color3.fromRGB(255, 255, 255) Elements.Checkmark.TextSize = 12 Elements.Checkmark.TextScaled = true Elements.Checkmark.TextTransparency = 1 Elements.Checkmark.BackgroundTransparency = 1 Elements.Checkmark.BorderSizePixel = 0 Elements.Checkmark.Position = UDim2.fromScale(0, 0) Elements.Checkmark.Size = UDim2.fromScale(1, 1) Elements.Checkmark.TextXAlignment = Enum.TextXAlignment.Center Elements.Checkmark.TextYAlignment = Enum.TextYAlignment.Center Elements.Checkmark.ZIndex = 2 Elements.Checkmark.Parent = Elements.CheckBoxButton return Elements end local function UpdateCheckBoxState(State) if State then Utility:PropertyTween(CheckBoxFunctions.Elements.CheckBoxButton, TWEEN_INFO, { BackgroundTransparency = 0.7, BackgroundColor3 = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") }):Play() Utility:PropertyTween(CheckBoxFunctions.Elements.CheckBoxButton.UICorner, TWEEN_INFO, { CornerRadius = UDim.new(0, 1) }):Play() Utility:PropertyTween(CheckBoxFunctions.Elements.Checkmark, TWEEN_INFO, { TextTransparency = 0 }):Play() local StrokeTween = Utility:PropertyTween(CheckBoxFunctions.Elements.CheckBoxButton:FindFirstChild("UIStroke"), TWEEN_INFO, { Transparency = 0.3, Color = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") }) if StrokeTween then StrokeTween:Play() end else Utility:PropertyTween(CheckBoxFunctions.Elements.CheckBoxButton, TWEEN_INFO, { BackgroundTransparency = 0.9, BackgroundColor3 = Color3.fromRGB(255, 255, 255) }):Play() Utility:PropertyTween(CheckBoxFunctions.Elements.CheckBoxButton.UICorner, TWEEN_INFO, { CornerRadius = UDim.new(0, 12) }):Play() Utility:PropertyTween(CheckBoxFunctions.Elements.Checkmark, TWEEN_INFO, { TextTransparency = 1 }):Play() local StrokeTween = Utility:PropertyTween(CheckBoxFunctions.Elements.CheckBoxButton:FindFirstChild("UIStroke"), TWEEN_INFO, { Transparency = 0.8, Color = Color3.fromRGB(255, 255, 255) }) if StrokeTween then StrokeTween:Play() end end CheckBoxFunctions.State = State end local function CheckBoxTrigger() if Settings.Fixed or CheckBoxFunctions.IsHidden then return end CheckBoxFunctions.State = not CheckBoxFunctions.State UpdateCheckBoxState(CheckBoxFunctions.State) if Settings.Callback then Settings.Callback(CheckBoxFunctions.State) end end local function SetupConnections() CheckBoxFunctions.Maid.CheckBoxClick = CheckBoxFunctions.Elements.CheckBoxButton.MouseButton1Click:Connect(CheckBoxTrigger) if not Settings.PremiumFeature then local PreviousTransparency = CheckBoxFunctions.Elements.CheckBoxName.TextTransparency CheckBoxFunctions.Maid.CheckBoxHover = CheckBoxFunctions.Elements.CheckBoxButton.MouseEnter:Connect(function() if CheckBoxFunctions.IsHidden then return end PreviousTransparency = CheckBoxFunctions.Elements.CheckBoxName.TextTransparency Utility:QuickTween(CheckBoxFunctions.Elements.CheckBoxName, {TextTransparency = 0}) end) CheckBoxFunctions.Maid.CheckBoxLeave = CheckBoxFunctions.Elements.CheckBoxButton.MouseLeave:Connect(function() if CheckBoxFunctions.IsHidden then return end Utility:QuickTween(CheckBoxFunctions.Elements.CheckBoxName, {TextTransparency = PreviousTransparency}) end) end end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end function CheckBoxFunctions:Check() CheckBoxTrigger() end function CheckBoxFunctions:ServerCheck() CheckBoxFunctions.State = not CheckBoxFunctions.State UpdateCheckBoxState(CheckBoxFunctions.State) if Settings.Callback then Settings.Callback(CheckBoxFunctions.State) end end function CheckBoxFunctions:UpdateState(State, Callback) CheckBoxFunctions.State = State UpdateCheckBoxState(CheckBoxFunctions.State) if Callback then if Settings.Callback then Settings.Callback(CheckBoxFunctions.State) end end end function CheckBoxFunctions:GetState() return CheckBoxFunctions.State end function CheckBoxFunctions:ReturnSettings() return Settings end function CheckBoxFunctions:ReturnTab() return CheckBoxFunctions.Tab end function CheckBoxFunctions:ReturnClass() return CheckBoxFunctions.Class end function CheckBoxFunctions:UpdateName(Name) CheckBoxFunctions.Elements.CheckBoxName.Text = Name end function CheckBoxFunctions:SetToolTip(Tip) if CheckBoxFunctions.Elements.CheckBox:FindFirstChild("ToolTipFrame") then CheckBoxFunctions.Elements.CheckBox:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = CheckBoxFunctions.Elements.CheckBox local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize(Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) CheckBoxFunctions.Maid.TooltipShow = CheckBoxFunctions.Elements.CheckBoxButton.MouseEnter:Connect(function() ToolTipFrame.Visible = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end) CheckBoxFunctions.Maid.TooltipHide = CheckBoxFunctions.Elements.CheckBoxButton.MouseLeave:Connect(function() Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end function CheckBoxFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end CheckBoxFunctions.IsHidden = State if State then Services.TweenService:Create(CheckBoxFunctions.Elements.CheckBoxButton, TweenInfo.new(0.2), {BackgroundTransparency = 0.99}):Play() Services.TweenService:Create(CheckBoxFunctions.Elements.Checkmark, TweenInfo.new(0.2), {TextTransparency = 0.9}):Play() local Stroke = CheckBoxFunctions.Elements.CheckBoxButton:FindFirstChild("UIStroke") if Stroke then Services.TweenService:Create(Stroke, TweenInfo.new(0.2), {Transparency = 0.95}):Play() end if not Settings.PremiumFeature then Services.TweenService:Create(CheckBoxFunctions.Elements.CheckBoxName, TweenInfo.new(0.2), {TextTransparency = 0.9}):Play() end if CheckBoxFunctions.Maid.CheckBoxClick then CheckBoxFunctions.Maid.CheckBoxClick:Disconnect() CheckBoxFunctions.Maid.CheckBoxClick = nil end else UpdateCheckBoxState(CheckBoxFunctions.State) if not Settings.PremiumFeature then Services.TweenService:Create(CheckBoxFunctions.Elements.CheckBoxName, TweenInfo.new(0.2), {TextTransparency = 0.5}):Play() end CheckBoxFunctions.Maid.CheckBoxClick = CheckBoxFunctions.Elements.CheckBoxButton.MouseButton1Click:Connect(CheckBoxTrigger) end end function CheckBoxFunctions:SetVisibility(State) CheckBoxFunctions.Elements.CheckBox.Visible = State end function CheckBoxFunctions:Destroy() for ConnectionName, Connection in pairs(CheckBoxFunctions.Maid) do if type(Connection) == "userdata" and Connection.Disconnect then Connection:Disconnect() end end table.clear(CheckBoxFunctions.Maid) if CheckBoxFunctions.Elements.CheckBox then CheckBoxFunctions.Elements.CheckBox:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end CheckBoxFunctions.Elements = CreateElements() SetupConnections() UpdateCheckBoxState(CheckBoxFunctions.State) if Settings.Hidden then if typeof(Settings.Hidden) == "table" then CheckBoxFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else CheckBoxFunctions:SetHidden(Settings.Hidden) end end if Settings.Default == true and Settings.Callback then task.defer(function() Settings.Callback(Settings.Default) end) end if Settings.ToolTip then CheckBoxFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then CheckBoxFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then CheckBoxFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then CheckBoxFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Flag then WaveLibrary.Options[Flag] = CheckBoxFunctions end return CheckBoxFunctions end end end R["Wave/UserInterface/Components/ColorPicker.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale local Base = Requirements.Base function SectionFunctions:ColorPicker(Settings, Flag) local ColorPickerFunctions = { Settings = Settings, Class = "ColorPicker", IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Color = Settings.Default or Color3.new(1, 1, 1), Alpha = Settings.Alpha or 0, IsHidden = false, Maid = {}, Elements = {}, State = { Hue = 0, Saturation = 0, Value = 1, WheelDown = false, SlideDown = false } } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name, " ", "_") end local TWEEN_INFO = TweenInfo.new(0.2, Enum.EasingStyle.Sine) local TRANSPARENCY = { Default = 0.5, Hover = 0, Hidden = 0.9 } local UI_CONSTANTS = { MAIN_HEIGHT = 38, COLOR_SIZE = 21, CORNER_RADIUS = { Small = UDim.new(0, 4), Medium = UDim.new(0, 6), Large = UDim.new(0, 10) }, PADDING = { Small = UDim.new(0, 5), Medium = UDim.new(0, 10), Large = UDim.new(0, 20) } } local function CreateMainElements() local Elements = {} Elements.ColorPicker = Instance.new("Frame") Elements.ColorPicker.Name = "ColorPicker" Elements.ColorPicker.AutomaticSize = Enum.AutomaticSize.Y Elements.ColorPicker.BackgroundTransparency = 1 Elements.ColorPicker.BorderSizePixel = 0 Elements.ColorPicker.Size = UDim2.new(1, 0, 0, UI_CONSTANTS.MAIN_HEIGHT) Elements.ColorPicker.Parent = Section Elements.ColorPickerName = Instance.new("TextLabel") Elements.ColorPickerName.Name = "ColorPickerName" Elements.ColorPickerName.FontFace = Font.new(Assets.InterFont) Elements.ColorPickerName.Text = Settings.Name Elements.ColorPickerName.RichText = true Elements.ColorPickerName.TextColor3 = Color3.fromRGB(255, 255, 255) Elements.ColorPickerName.TextSize = 13 Elements.ColorPickerName.TextTransparency = TRANSPARENCY.Default Elements.ColorPickerName.TextTruncate = Enum.TextTruncate.AtEnd Elements.ColorPickerName.TextXAlignment = Enum.TextXAlignment.Left Elements.ColorPickerName.TextYAlignment = Enum.TextYAlignment.Top Elements.ColorPickerName.AnchorPoint = Vector2.new(0, 0.5) Elements.ColorPickerName.AutomaticSize = Enum.AutomaticSize.XY Elements.ColorPickerName.BackgroundTransparency = 1 Elements.ColorPickerName.Position = UDim2.fromScale(0, 0.5) Elements.ColorPickerName.Parent = Elements.ColorPicker if Settings.PremiumFeature then Elements.ColorPickerName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Parent = Elements.ColorPickerName end Elements.ColorBackground = Instance.new("ImageLabel") Elements.ColorBackground.Name = "ColorBackground" Elements.ColorBackground.Image = Assets.Grid Elements.ColorBackground.ScaleType = Enum.ScaleType.Tile Elements.ColorBackground.TileSize = UDim2.fromOffset(500, 500) Elements.ColorBackground.AnchorPoint = Vector2.new(1, 0.5) Elements.ColorBackground.BackgroundTransparency = 1 Elements.ColorBackground.Position = UDim2.fromScale(1, 0.5) Elements.ColorBackground.Size = UDim2.fromOffset(UI_CONSTANTS.COLOR_SIZE, UI_CONSTANTS.COLOR_SIZE) Elements.ColorBackground.Parent = Elements.ColorPicker Elements.ColorDisplay = Instance.new("Frame") Elements.ColorDisplay.Name = "ColorDisplay" Elements.ColorDisplay.AnchorPoint = Vector2.new(0.5, 0.5) Elements.ColorDisplay.BackgroundColor3 = ColorPickerFunctions.Color Elements.ColorDisplay.BorderSizePixel = 0 Elements.ColorDisplay.Position = UDim2.fromScale(0.5, 0.5) Elements.ColorDisplay.Size = UDim2.fromScale(1, 1) Elements.ColorDisplay.BackgroundTransparency = ColorPickerFunctions.Alpha Elements.ColorDisplay.Parent = Elements.ColorBackground Elements.ColorInteract = Instance.new("TextButton") Elements.ColorInteract.Name = "ColorInteract" Elements.ColorInteract.Text = "" Elements.ColorInteract.BackgroundTransparency = 1 Elements.ColorInteract.Size = UDim2.fromScale(1, 1) Elements.ColorInteract.Parent = Elements.ColorDisplay local DisplayCorner = Instance.new("UICorner") DisplayCorner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Medium DisplayCorner.Parent = Elements.ColorDisplay local BackgroundCorner = Instance.new("UICorner") BackgroundCorner.CornerRadius = UDim.new(0, 8) BackgroundCorner.Parent = Elements.ColorBackground return Elements end local function CreateColorDialog() local Dialog = {} Dialog.Overlay = Instance.new("Frame") Dialog.Overlay.Name = "ColorPickerOverlay" Dialog.Overlay.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Dialog.Overlay.BackgroundTransparency = 0.5 Dialog.Overlay.BorderSizePixel = 0 Dialog.Overlay.Size = UDim2.fromScale(1, 1) Dialog.Overlay.Visible = false local OverlayCorner = Instance.new("UICorner") OverlayCorner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Large OverlayCorner.Parent = Dialog.Overlay Dialog.Prompt = Instance.new("Frame") Dialog.Prompt.Name = "ColorPrompt" Dialog.Prompt.AnchorPoint = Vector2.new(0.5, 0.5) Dialog.Prompt.AutomaticSize = Enum.AutomaticSize.Y Dialog.Prompt.BackgroundColor3 = Color3.fromRGB(15, 15, 15) Dialog.Prompt.BorderSizePixel = 0 Dialog.Prompt.Position = UDim2.fromScale(0.5, 0.5) Dialog.Prompt.Size = UDim2.fromOffset(420, 0) Dialog.Prompt.Parent = Dialog.Overlay local PromptScale = Instance.new("UIScale") PromptScale.Scale = 0.95 PromptScale.Parent = Dialog.Prompt local PromptStroke = Instance.new("UIStroke") PromptStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border PromptStroke.Color = Color3.fromRGB(255, 255, 255) PromptStroke.Transparency = 0.9 PromptStroke.Parent = Dialog.Prompt local PromptCorner = Instance.new("UICorner") PromptCorner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Large PromptCorner.Parent = Dialog.Prompt local PromptLayout = Instance.new("UIListLayout") PromptLayout.Padding = UI_CONSTANTS.PADDING.Medium PromptLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center PromptLayout.SortOrder = Enum.SortOrder.LayoutOrder PromptLayout.Parent = Dialog.Prompt local PromptPadding = Instance.new("UIPadding") PromptPadding.PaddingBottom = UI_CONSTANTS.PADDING.Large PromptPadding.PaddingLeft = UI_CONSTANTS.PADDING.Large PromptPadding.PaddingRight = UI_CONSTANTS.PADDING.Large PromptPadding.PaddingTop = UI_CONSTANTS.PADDING.Large PromptPadding.Parent = Dialog.Prompt return Dialog end local function CreateColorControls(Parent) local Controls = {} Controls.Header = Instance.new("Frame") Controls.Header.Name = "Header" Controls.Header.AutomaticSize = Enum.AutomaticSize.Y Controls.Header.BackgroundTransparency = 1 Controls.Header.Size = UDim2.fromScale(1, 0) Controls.Header.Parent = Parent local HeaderLayout = Instance.new("UIListLayout") HeaderLayout.Padding = UDim.new(0, 15) HeaderLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center HeaderLayout.SortOrder = Enum.SortOrder.LayoutOrder HeaderLayout.Parent = Controls.Header local HeaderPadding = Instance.new("UIPadding") HeaderPadding.PaddingBottom = UDim.new(0, 15) HeaderPadding.Parent = Controls.Header Controls.Title = Instance.new("TextLabel") Controls.Title.Name = "Title" Controls.Title.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold) Controls.Title.RichText = true Controls.Title.Text = Settings.Name Controls.Title.TextColor3 = Color3.fromRGB(255, 255, 255) Controls.Title.TextSize = 18 Controls.Title.TextTransparency = 0.4 Controls.Title.TextWrapped = true Controls.Title.TextYAlignment = Enum.TextYAlignment.Top Controls.Title.AutomaticSize = Enum.AutomaticSize.XY Controls.Title.BackgroundTransparency = 1 Controls.Title.Size = UDim2.fromScale(1, 0) Controls.Title.Parent = Controls.Header local TitleLine = Instance.new("Frame") TitleLine.Name = "Line" TitleLine.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TitleLine.BackgroundTransparency = 0.9 TitleLine.BorderSizePixel = 0 TitleLine.LayoutOrder = 1 TitleLine.Size = UDim2.new(1, 0, 0, 1) TitleLine.Parent = Controls.Header Controls.ColorOptions = Instance.new("Frame") Controls.ColorOptions.Name = "ColorOptions" Controls.ColorOptions.AutomaticSize = Enum.AutomaticSize.XY Controls.ColorOptions.BackgroundTransparency = 1 Controls.ColorOptions.LayoutOrder = 1 Controls.ColorOptions.Size = UDim2.fromScale(1, 0) Controls.ColorOptions.Parent = Parent local OptionsLayout = Instance.new("UIListLayout") OptionsLayout.Padding = UDim.new(0, 25) OptionsLayout.SortOrder = Enum.SortOrder.LayoutOrder OptionsLayout.Parent = Controls.ColorOptions return Controls end local function CreateColorWheel(Parent) local Wheel = {} Wheel.Container = Instance.new("Frame") Wheel.Container.Name = "WheelContainer" Wheel.Container.AutomaticSize = Enum.AutomaticSize.Y Wheel.Container.BackgroundTransparency = 1 Wheel.Container.Size = UDim2.new(1, 0, 0, 100) Wheel.Container.Parent = Parent Wheel.ColorWheel = Instance.new("ImageButton") Wheel.ColorWheel.Name = "ColorWheel" Wheel.ColorWheel.Image = Assets.ColorWheel Wheel.ColorWheel.AutoButtonColor = false Wheel.ColorWheel.BackgroundTransparency = 1 Wheel.ColorWheel.Size = UDim2.fromOffset(220, 220) Wheel.ColorWheel.SizeConstraint = Enum.SizeConstraint.RelativeYY Wheel.ColorWheel.Parent = Wheel.Container Wheel.Target = Instance.new("ImageLabel") Wheel.Target.Name = "Target" Wheel.Target.Image = Assets.ColorTarget Wheel.Target.ImageColor3 = Color3.fromRGB(0, 0, 0) Wheel.Target.AnchorPoint = Vector2.new(0.5, 0.5) Wheel.Target.BackgroundTransparency = 1 Wheel.Target.Position = UDim2.fromScale(0.5, 0.5) Wheel.Target.Size = UDim2.fromOffset(22, 22) Wheel.Target.SizeConstraint = Enum.SizeConstraint.RelativeYY Wheel.Target.Parent = Wheel.ColorWheel Wheel.ValueSlider = Instance.new("TextButton") Wheel.ValueSlider.Name = "ValueSlider" Wheel.ValueSlider.Text = "" Wheel.ValueSlider.AutoButtonColor = false Wheel.ValueSlider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Wheel.ValueSlider.BorderSizePixel = 0 Wheel.ValueSlider.LayoutOrder = 1 Wheel.ValueSlider.Size = UDim2.new(1, 0, 0, 15) Wheel.ValueSlider.Position = UDim2.new(0, 0, 0, 15) Wheel.ValueSlider.Parent = ColorPickerFunctions.Elements.Controls.ColorOptions local SliderGradient = Instance.new("UIGradient") SliderGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 0, 0)) }) SliderGradient.Parent = Wheel.ValueSlider local SliderCorner = Instance.new("UICorner") SliderCorner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Medium SliderCorner.Parent = Wheel.ValueSlider local SliderStroke = Instance.new("UIStroke") SliderStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border SliderStroke.Color = Color3.fromRGB(255, 255, 255) SliderStroke.Transparency = 0.9 SliderStroke.Parent = Wheel.ValueSlider Wheel.SliderHandle = Instance.new("Frame") Wheel.SliderHandle.Name = "SliderHandle" Wheel.SliderHandle.AnchorPoint = Vector2.new(0, 0.5) Wheel.SliderHandle.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Wheel.SliderHandle.BorderSizePixel = 0 Wheel.SliderHandle.Position = UDim2.fromScale(0, 0.5) Wheel.SliderHandle.Size = UDim2.new(0, 13, 1, 8) Wheel.SliderHandle.Parent = Wheel.ValueSlider local HandleCorner = Instance.new("UICorner") HandleCorner.CornerRadius = UDim.new(1, 0) HandleCorner.Parent = Wheel.SliderHandle local HandleStroke = Instance.new("UIStroke") HandleStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border HandleStroke.Transparency = 0.5 HandleStroke.Parent = Wheel.SliderHandle return Wheel end local function CreateInputFields(Parent) local Inputs = {} Inputs.Container = Instance.new("Frame") Inputs.Container.Name = "InputsContainer" Inputs.Container.AnchorPoint = Vector2.new(1, 0.5) Inputs.Container.AutomaticSize = Enum.AutomaticSize.XY Inputs.Container.BackgroundTransparency = 1 Inputs.Container.LayoutOrder = 1 Inputs.Container.Position = UDim2.fromScale(1, 0.5) Inputs.Container.Parent = Parent local InputsLayout = Instance.new("UIListLayout") InputsLayout.Padding = UI_CONSTANTS.PADDING.Small InputsLayout.SortOrder = Enum.SortOrder.LayoutOrder InputsLayout.Parent = Inputs.Container local inputNames = {"Red", "Green", "Blue"} if Settings.Alpha then table.insert(inputNames, "Alpha") end table.insert(inputNames, "Hex") for i, name in ipairs(inputNames) do Inputs[name] = CreateInputField(name, i, Inputs.Container) end return Inputs end function CreateInputField(name, layoutOrder, parent) local Field = {} Field.Container = Instance.new("Frame") Field.Container.Name = name .. "Input" Field.Container.AutomaticSize = Enum.AutomaticSize.XY Field.Container.BackgroundTransparency = 1 Field.Container.LayoutOrder = layoutOrder Field.Container.Size = UDim2.fromOffset(0, 38) Field.Container.Parent = parent local FieldLayout = Instance.new("UIListLayout") FieldLayout.Padding = UDim.new(0, 15) FieldLayout.FillDirection = Enum.FillDirection.Horizontal FieldLayout.SortOrder = Enum.SortOrder.LayoutOrder FieldLayout.VerticalAlignment = Enum.VerticalAlignment.Center FieldLayout.Parent = Field.Container Field.Label = Instance.new("TextLabel") Field.Label.Name = "Label" Field.Label.FontFace = Font.new(Assets.InterFont) Field.Label.Text = name Field.Label.TextColor3 = Color3.fromRGB(255, 255, 255) Field.Label.TextSize = 13 Field.Label.TextTransparency = 0.5 Field.Label.TextTruncate = Enum.TextTruncate.AtEnd Field.Label.TextXAlignment = Enum.TextXAlignment.Left Field.Label.TextYAlignment = Enum.TextYAlignment.Top Field.Label.AnchorPoint = Vector2.new(0, 0.5) Field.Label.AutomaticSize = Enum.AutomaticSize.XY Field.Label.BackgroundTransparency = 1 Field.Label.LayoutOrder = 2 Field.Label.Position = UDim2.fromScale(0, 0.5) Field.Label.Parent = Field.Container Field.Input = Instance.new("TextBox") Field.Input.Name = "Input" Field.Input.ClearTextOnFocus = false Field.Input.FontFace = Font.new(Assets.InterFont) Field.Input.Text = name == "Hex" and "#FFFFFF" or (name == "Alpha" and "0" or "255") Field.Input.TextColor3 = Color3.fromRGB(255, 255, 255) Field.Input.TextSize = 12 Field.Input.TextTransparency = 0.1 Field.Input.TextXAlignment = Enum.TextXAlignment.Left Field.Input.AnchorPoint = Vector2.new(1, 0.5) Field.Input.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Field.Input.BackgroundTransparency = 0.95 Field.Input.BorderSizePixel = 0 Field.Input.ClipsDescendants = true Field.Input.LayoutOrder = 1 Field.Input.Position = UDim2.fromScale(1, 0.5) Field.Input.Size = UDim2.fromOffset(75, 25) Field.Input.Parent = Field.Container local InputCorner = Instance.new("UICorner") InputCorner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Small InputCorner.Parent = Field.Input local InputStroke = Instance.new("UIStroke") InputStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border InputStroke.Color = Color3.fromRGB(255, 255, 255) InputStroke.Transparency = 0.9 InputStroke.Parent = Field.Input local InputPadding = Instance.new("UIPadding") InputPadding.PaddingLeft = UDim.new(0, 8) InputPadding.PaddingRight = UDim.new(0, 10) InputPadding.Parent = Field.Input return Field end local function CreateActionButtons(Parent) local Buttons = {} Buttons.Container = Instance.new("Frame") Buttons.Container.Name = "ActionsContainer" Buttons.Container.AutomaticSize = Enum.AutomaticSize.Y Buttons.Container.BackgroundTransparency = 1 Buttons.Container.LayoutOrder = 2 Buttons.Container.Size = UDim2.fromScale(1, 0) Buttons.Container.Parent = Parent local ButtonsLayout = Instance.new("UIListLayout") ButtonsLayout.Padding = UI_CONSTANTS.PADDING.Medium ButtonsLayout.SortOrder = Enum.SortOrder.LayoutOrder ButtonsLayout.Parent = Buttons.Container local ButtonsPadding = Instance.new("UIPadding") ButtonsPadding.PaddingTop = UI_CONSTANTS.PADDING.Medium ButtonsPadding.Parent = Buttons.Container Buttons.Confirm = Instance.new("TextButton") Buttons.Confirm.Name = "Confirm" Buttons.Confirm.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium) Buttons.Confirm.Text = "Confirm" Buttons.Confirm.TextColor3 = Color3.fromRGB(255, 255, 255) Buttons.Confirm.TextSize = 15 Buttons.Confirm.TextTransparency = 0.5 Buttons.Confirm.AutoButtonColor = false Buttons.Confirm.AutomaticSize = Enum.AutomaticSize.Y Buttons.Confirm.BackgroundColor3 = Color3.fromRGB(25, 25, 25) Buttons.Confirm.BorderSizePixel = 0 Buttons.Confirm.Size = UDim2.fromScale(1, 0) Buttons.Confirm.Parent = Buttons.Container Buttons.Cancel = Instance.new("TextButton") Buttons.Cancel.Name = "Cancel" Buttons.Cancel.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium) Buttons.Cancel.Text = "Cancel" Buttons.Cancel.TextColor3 = Color3.fromRGB(255, 255, 255) Buttons.Cancel.TextSize = 15 Buttons.Cancel.TextTransparency = 0.5 Buttons.Cancel.AutoButtonColor = false Buttons.Cancel.AutomaticSize = Enum.AutomaticSize.Y Buttons.Cancel.BackgroundColor3 = Color3.fromRGB(25, 25, 25) Buttons.Cancel.BorderSizePixel = 0 Buttons.Cancel.Size = UDim2.fromScale(1, 0) Buttons.Cancel.Parent = Buttons.Container for _, button in pairs({Buttons.Confirm, Buttons.Cancel}) do local corner = Instance.new("UICorner") corner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Large corner.Parent = button local padding = Instance.new("UIPadding") padding.PaddingBottom = UDim.new(0, 9) padding.PaddingLeft = UI_CONSTANTS.PADDING.Medium padding.PaddingRight = UI_CONSTANTS.PADDING.Medium padding.PaddingTop = UDim.new(0, 9) padding.Parent = button end return Buttons end local ColorUtils = {} function ColorUtils.HSVToRGB(h, s, v) return Color3.fromHSV(h, s, v) end function ColorUtils.RGBToHSV(Color) return Color:ToHSV() end function ColorUtils.RGBToHex(Color) return string.format("#%02X%02X%02X", math.floor(Color.R * 255 + 0.5), math.floor(Color.G * 255 + 0.5), math.floor(Color.B * 255 + 0.5) ) end function ColorUtils.HexToRGB(hex) hex = hex:gsub("#", "") if #hex ~= 6 then return Color3.new(1, 1, 1) end local r = tonumber(hex:sub(1, 2), 16) or 255 local g = tonumber(hex:sub(3, 4), 16) or 255 local b = tonumber(hex:sub(5, 6), 16) or 255 return Color3.fromRGB(r, g, b) end function ColorUtils.ClampValue(value, min, max) local num = tonumber(value) return num and math.clamp(num, min, max) or min end local function ShowColorDialog() if ColorPickerFunctions.IsHidden then return end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then return end local canvas = Instance.new("CanvasGroup") canvas.Name = "ColorPickerCanvas" canvas.BackgroundTransparency = 1 canvas.BorderSizePixel = 0 canvas.Size = UDim2.fromScale(1, 1) canvas.ZIndex = 5 canvas.GroupTransparency = 1 canvas.Visible = true canvas.Parent = Base ColorPickerFunctions.Elements.Dialog.Overlay.Visible = true ColorPickerFunctions.Elements.Dialog.Overlay.Parent = canvas local canvasTween = Utility:PropertyTween(canvas, TWEEN_INFO, {GroupTransparency = 0}) local scaleTween = Utility:PropertyTween(ColorPickerFunctions.Elements.Dialog.Prompt:FindFirstChild("UIScale"), TWEEN_INFO, {Scale = 1}) canvasTween:Play() if scaleTween then scaleTween:Play() end canvasTween.Completed:Connect(function() ColorPickerFunctions.Elements.Dialog.Overlay.Parent = OverlayFolder canvas:Destroy() end) end local function HideColorDialog() local canvas = Instance.new("CanvasGroup") canvas.Name = "ColorPickerCanvas" canvas.BackgroundTransparency = 1 canvas.BorderSizePixel = 0 canvas.Size = UDim2.fromScale(1, 1) canvas.ZIndex = 5 canvas.GroupTransparency = 0 canvas.Visible = true canvas.Parent = Base ColorPickerFunctions.Elements.Dialog.Overlay.Parent = canvas local canvasTween = Utility:PropertyTween(canvas, TWEEN_INFO, {GroupTransparency = 1}) local scaleTween = Utility:PropertyTween(ColorPickerFunctions.Elements.Dialog.Prompt:FindFirstChild("UIScale"), TWEEN_INFO, {Scale = 0.95}) canvasTween:Play() if scaleTween then scaleTween:Play() end canvasTween.Completed:Connect(function() ColorPickerFunctions.Elements.Dialog.Overlay.Visible = false ColorPickerFunctions.Elements.Dialog.Overlay.Parent = OverlayFolder canvas:Destroy() end) end local function UpdateColorDisplay() local Color = ColorUtils.HSVToRGB(ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, ColorPickerFunctions.State.Value) ColorPickerFunctions.Elements.ColorDisplay.BackgroundColor3 = Color ColorPickerFunctions.Elements.ColorDisplay.BackgroundTransparency = Settings.Alpha and ColorPickerFunctions.Alpha or 0 if ColorPickerFunctions.Elements.Inputs then ColorPickerFunctions.Elements.Inputs.Red.Input.Text = tostring(math.floor(Color.R * 255 + 0.5)) ColorPickerFunctions.Elements.Inputs.Green.Input.Text = tostring(math.floor(Color.G * 255 + 0.5)) ColorPickerFunctions.Elements.Inputs.Blue.Input.Text = tostring(math.floor(Color.B * 255 + 0.5)) ColorPickerFunctions.Elements.Inputs.Hex.Input.Text = ColorUtils.RGBToHex(Color) if ColorPickerFunctions.Elements.Inputs.Alpha and Settings.Alpha then ColorPickerFunctions.Elements.Inputs.Alpha.Input.Text = tostring(ColorPickerFunctions.Alpha) end end end local function HandleWheelInput(inputPos) local wheel = ColorPickerFunctions.Elements.Wheel.ColorWheel local wheelRadius = wheel.AbsoluteSize.X / 2 local mouseOffset = inputPos - (wheel.AbsolutePosition + wheel.AbsoluteSize / 2) if mouseOffset:Dot(mouseOffset) > wheelRadius * wheelRadius then mouseOffset = mouseOffset.Unit * wheelRadius end ColorPickerFunctions.Elements.Wheel.Target.Position = UDim2.new(0.5, mouseOffset.X, 0.5, mouseOffset.Y) local angle = math.atan2(-mouseOffset.Y, mouseOffset.X) local distance = mouseOffset.Magnitude ColorPickerFunctions.State.Hue = ((angle + math.pi) / (2 * math.pi)) % 1 ColorPickerFunctions.State.Saturation = math.clamp(distance / wheelRadius, 0, 1) local hueColor = ColorUtils.HSVToRGB(ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, 1) ColorPickerFunctions.Elements.Wheel.ValueSlider.BackgroundColor3 = hueColor UpdateColorDisplay() end local function HandleSliderInput(inputX) local slider = ColorPickerFunctions.Elements.Wheel.ValueSlider local handle = ColorPickerFunctions.Elements.Wheel.SliderHandle local relativeX = inputX - slider.AbsolutePosition.X local clampedX = math.clamp(relativeX, 0, slider.AbsoluteSize.X - handle.AbsoluteSize.X) handle.Position = UDim2.new(0, clampedX, 0.5, 0) ColorPickerFunctions.State.Value = 1 - (clampedX / (slider.AbsoluteSize.X - handle.AbsoluteSize.X)) UpdateColorDisplay() end local function UpdateFromInputs() if not ColorPickerFunctions.Elements.Inputs then return end local inputs = ColorPickerFunctions.Elements.Inputs local r = ColorUtils.ClampValue(inputs.Red.Input.Text, 0, 255) local g = ColorUtils.ClampValue(inputs.Green.Input.Text, 0, 255) local b = ColorUtils.ClampValue(inputs.Blue.Input.Text, 0, 255) inputs.Red.Input.Text = tostring(r) inputs.Green.Input.Text = tostring(g) inputs.Blue.Input.Text = tostring(b) local Color = Color3.fromRGB(r, g, b) ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, ColorPickerFunctions.State.Value = ColorUtils.RGBToHSV(Color) UpdateColorDisplay() end local function UpdateFromHex() if not ColorPickerFunctions.Elements.Inputs then return end local hex = ColorPickerFunctions.Elements.Inputs.Hex.Input.Text local Color = ColorUtils.HexToRGB(hex) ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, ColorPickerFunctions.State.Value = ColorUtils.RGBToHSV(Color) ColorPickerFunctions.Elements.Inputs.Red.Input.Text = tostring(math.floor(Color.R * 255 + 0.5)) ColorPickerFunctions.Elements.Inputs.Green.Input.Text = tostring(math.floor(Color.G * 255 + 0.5)) ColorPickerFunctions.Elements.Inputs.Blue.Input.Text = tostring(math.floor(Color.B * 255 + 0.5)) UpdateColorDisplay() end local function SetupConnections() local mouse = Utility:GetMouse() ColorPickerFunctions.Maid.ColorClick = ColorPickerFunctions.Elements.ColorInteract.MouseButton1Click:Connect(ShowColorDialog) if not Settings.PremiumFeature then ColorPickerFunctions.Maid.ColorHover = ColorPickerFunctions.Elements.ColorInteract.MouseEnter:Connect(function() if ColorPickerFunctions.IsHidden then return end Utility:QuickTween(ColorPickerFunctions.Elements.ColorPickerName, {TextTransparency = 0}) end) ColorPickerFunctions.Maid.ColorLeave = ColorPickerFunctions.Elements.ColorInteract.MouseLeave:Connect(function() if ColorPickerFunctions.IsHidden then return end Utility:QuickTween(ColorPickerFunctions.Elements.ColorPickerName, {TextTransparency = TRANSPARENCY.Default}) end) end if ColorPickerFunctions.Elements.Dialog then ColorPickerFunctions.Maid.CancelClick = ColorPickerFunctions.Elements.Buttons.Cancel.MouseButton1Click:Connect(HideColorDialog) ColorPickerFunctions.Maid.ConfirmClick = ColorPickerFunctions.Elements.Buttons.Confirm.MouseButton1Click:Connect(function() HideColorDialog() local finalColor = ColorUtils.HSVToRGB(ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, ColorPickerFunctions.State.Value) ColorPickerFunctions.Color = finalColor if Settings.Alpha then ColorPickerFunctions.Alpha = ColorUtils.ClampValue(ColorPickerFunctions.Elements.Inputs.Alpha.Input.Text, 0, 1) end ColorPickerFunctions.Elements.ColorDisplay.BackgroundColor3 = ColorPickerFunctions.Color ColorPickerFunctions.Elements.ColorDisplay.BackgroundTransparency = Settings.Alpha and ColorPickerFunctions.Alpha or 0 if Settings.Callback then task.spawn(function() Settings.Callback(ColorPickerFunctions.Color, Settings.Alpha and ColorPickerFunctions.Alpha or nil) end) end end) ColorPickerFunctions.Maid.WheelDown = ColorPickerFunctions.Elements.Wheel.ColorWheel.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then ColorPickerFunctions.State.WheelDown = true HandleWheelInput(Vector2.new(mouse.X, mouse.Y)) end end) ColorPickerFunctions.Maid.WheelUp = ColorPickerFunctions.Elements.Wheel.ColorWheel.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then ColorPickerFunctions.State.WheelDown = false end end) ColorPickerFunctions.Maid.SliderDown = ColorPickerFunctions.Elements.Wheel.ValueSlider.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then ColorPickerFunctions.State.SlideDown = true HandleSliderInput(mouse.X) end end) ColorPickerFunctions.Maid.SliderUp = ColorPickerFunctions.Elements.Wheel.ValueSlider.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then ColorPickerFunctions.State.SlideDown = false end end) ColorPickerFunctions.Maid.MouseMove = Services.UserInputService.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then if ColorPickerFunctions.State.WheelDown then HandleWheelInput(Vector2.new(mouse.X, mouse.Y)) elseif ColorPickerFunctions.State.SlideDown then HandleSliderInput(mouse.X) end end end) if ColorPickerFunctions.Elements.Inputs then local inputs = ColorPickerFunctions.Elements.Inputs ColorPickerFunctions.Maid.RedInput = inputs.Red.Input.FocusLost:Connect(UpdateFromInputs) ColorPickerFunctions.Maid.GreenInput = inputs.Green.Input.FocusLost:Connect(UpdateFromInputs) ColorPickerFunctions.Maid.BlueInput = inputs.Blue.Input.FocusLost:Connect(UpdateFromInputs) ColorPickerFunctions.Maid.HexInput = inputs.Hex.Input.FocusLost:Connect(UpdateFromHex) if inputs.Alpha and Settings.Alpha then ColorPickerFunctions.Maid.AlphaInput = inputs.Alpha.Input.FocusLost:Connect(function() ColorPickerFunctions.Alpha = ColorUtils.ClampValue(inputs.Alpha.Input.Text, 0, 1) inputs.Alpha.Input.Text = tostring(ColorPickerFunctions.Alpha) UpdateColorDisplay() end) end end end end local function IsPlaceIdAllowed(placeIdSetting) if not placeIdSetting then return true end local currentPlaceId = game.PlaceId if type(placeIdSetting) == "table" then for _, placeId in pairs(placeIdSetting) do if currentPlaceId == placeId then return true end end return false else return currentPlaceId == placeIdSetting end end local function IsPlaceIdForbidden(placeIdSetting) if not placeIdSetting then return false end local currentPlaceId = game.PlaceId if type(placeIdSetting) == "table" then for _, placeId in pairs(placeIdSetting) do if currentPlaceId == placeId then return true end end return false else return currentPlaceId == placeIdSetting end end function ColorPickerFunctions:ReturnClass() return ColorPickerFunctions.Class end function ColorPickerFunctions:ReturnTab() return ColorPickerFunctions.Tab end function ColorPickerFunctions:SetColor(Color) if not Color then Color = Color3.new(1, 1, 1) end ColorPickerFunctions.Color = Color ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, ColorPickerFunctions.State.Value = ColorUtils.RGBToHSV(Color) ColorPickerFunctions.Elements.ColorDisplay.BackgroundColor3 = Color if Settings.Callback then task.spawn(function() Settings.Callback(ColorPickerFunctions.Color, Settings.Alpha and ColorPickerFunctions.Alpha or nil) end) end end function ColorPickerFunctions:SetAlpha(Alpha) if Settings.Alpha then ColorPickerFunctions.Alpha = math.clamp(Alpha or 0, 0, 1) ColorPickerFunctions.Elements.ColorDisplay.BackgroundTransparency = ColorPickerFunctions.Alpha end end function ColorPickerFunctions:GetColor() return ColorPickerFunctions.Color end function ColorPickerFunctions:GetAlpha() return Settings.Alpha and ColorPickerFunctions.Alpha or nil end function ColorPickerFunctions:UpdateName(Name) ColorPickerFunctions.Elements.ColorPickerName.Text = Name if ColorPickerFunctions.Elements.Controls and ColorPickerFunctions.Elements.Controls.Title then ColorPickerFunctions.Elements.Controls.Title.Text = Name end end function ColorPickerFunctions:SetVisibility(State) ColorPickerFunctions.Elements.ColorPicker.Visible = State end function ColorPickerFunctions:GetState() return not ColorPickerFunctions.IsHidden end function ColorPickerFunctions:SetToolTip(tip) if ColorPickerFunctions.Elements.ColorPicker:FindFirstChild("ToolTipFrame") then ColorPickerFunctions.Elements.ColorPicker:FindFirstChild("ToolTipFrame"):Destroy() end if not tip or tip == "" then return end local toolTipFrame = Instance.new("Frame") toolTipFrame.Name = "ToolTipFrame" toolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) toolTipFrame.BackgroundTransparency = 1 toolTipFrame.BorderSizePixel = 0 toolTipFrame.AnchorPoint = Vector2.new(0.5, 1) toolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) toolTipFrame.Visible = false toolTipFrame.ZIndex = 200 toolTipFrame.Parent = ColorPickerFunctions.Elements.ColorPicker local tooltipCorner = Instance.new("UICorner") tooltipCorner.CornerRadius = UI_CONSTANTS.CORNER_RADIUS.Medium tooltipCorner.Parent = toolTipFrame local tooltipStroke = Instance.new("UIStroke") tooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border tooltipStroke.LineJoinMode = Enum.LineJoinMode.Round tooltipStroke.Color = Color3.fromRGB(255, 255, 255) tooltipStroke.Thickness = 0.1 tooltipStroke.Transparency = 0.2 tooltipStroke.Parent = toolTipFrame local tooltipText = Instance.new("TextLabel") tooltipText.Text = tip tooltipText.FontFace = Font.new(Assets.InterFont) tooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) tooltipText.TextSize = 12 tooltipText.TextTransparency = 1 tooltipText.BackgroundTransparency = 1 tooltipText.TextXAlignment = Enum.TextXAlignment.Center tooltipText.TextYAlignment = Enum.TextYAlignment.Center tooltipText.Size = UDim2.new(1, -12, 1, 0) tooltipText.Position = UDim2.new(0, 6, 0, 0) tooltipText.Parent = toolTipFrame local textBounds = Services.TextService:GetTextSize(tip, tooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local tooltipWidth = math.max(80, textBounds.X + 50) local tooltipHeight = math.max(28, textBounds.Y + 12) toolTipFrame.Size = UDim2.new(0, tooltipWidth, 0, tooltipHeight) local function showTooltip() toolTipFrame.Visible = true Services.TweenService:Create(toolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(tooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(tooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end local function hideTooltip() Services.TweenService:Create(toolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(tooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(tooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.spawn(function() task.wait(0.2) if toolTipFrame and toolTipFrame.Parent then toolTipFrame.Visible = false end end) end ColorPickerFunctions.Maid.TooltipShow = ColorPickerFunctions.Elements.ColorInteract.MouseEnter:Connect(showTooltip) ColorPickerFunctions.Maid.TooltipHide = ColorPickerFunctions.Elements.ColorInteract.MouseLeave:Connect(hideTooltip) end function ColorPickerFunctions:SetHidden(state, reason) if reason then self:SetToolTip(reason) end ColorPickerFunctions.IsHidden = state if state then Services.TweenService:Create(ColorPickerFunctions.Elements.ColorBackground, TWEEN_INFO, {ImageTransparency = TRANSPARENCY.Hidden}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(ColorPickerFunctions.Elements.ColorPickerName, TWEEN_INFO, {TextTransparency = TRANSPARENCY.Hidden}):Play() end if ColorPickerFunctions.Maid.ColorClick then ColorPickerFunctions.Maid.ColorClick:Disconnect() ColorPickerFunctions.Maid.ColorClick = nil end else Services.TweenService:Create(ColorPickerFunctions.Elements.ColorBackground, TWEEN_INFO, {ImageTransparency = 0}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(ColorPickerFunctions.Elements.ColorPickerName, TWEEN_INFO, {TextTransparency = TRANSPARENCY.Default}):Play() end ColorPickerFunctions.Maid.ColorClick = ColorPickerFunctions.Elements.ColorInteract.MouseButton1Click:Connect(ShowColorDialog) end end function ColorPickerFunctions:Destroy() for connectionName, connection in pairs(ColorPickerFunctions.Maid) do if type(connection) == "userdata" and connection.Disconnect then connection:Disconnect() end end table.clear(ColorPickerFunctions.Maid) if ColorPickerFunctions.Elements.ColorPicker then ColorPickerFunctions.Elements.ColorPicker:Destroy() end if ColorPickerFunctions.Elements.Dialog and ColorPickerFunctions.Elements.Dialog.Overlay then ColorPickerFunctions.Elements.Dialog.Overlay:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end local function Initialize() ColorPickerFunctions.Elements = CreateMainElements() ColorPickerFunctions.Elements.Dialog = CreateColorDialog() ColorPickerFunctions.Elements.Controls = CreateColorControls(ColorPickerFunctions.Elements.Dialog.Prompt) ColorPickerFunctions.Elements.Wheel = CreateColorWheel(ColorPickerFunctions.Elements.Controls.ColorOptions) ColorPickerFunctions.Elements.Inputs = CreateInputFields(ColorPickerFunctions.Elements.Wheel.Container) local ColorWells = Instance.new("Frame") ColorWells.Name = "ColorWells" ColorWells.AutomaticSize = Enum.AutomaticSize.Y ColorWells.BackgroundTransparency = 1 ColorWells.LayoutOrder = 2 ColorWells.Size = UDim2.fromScale(1, 0) ColorWells.Parent = ColorPickerFunctions.Elements.Controls.ColorOptions local WellsGrid = Instance.new("UIGridLayout") WellsGrid.CellPadding = UDim2.fromOffset(10, 0) WellsGrid.CellSize = UDim2.new(0.5, -5, 0, 30) WellsGrid.SortOrder = Enum.SortOrder.LayoutOrder WellsGrid.Parent = ColorWells local NewColorWell = Instance.new("ImageLabel") NewColorWell.Name = "NewColor" NewColorWell.Image = Assets.Grid NewColorWell.ScaleType = Enum.ScaleType.Tile NewColorWell.TileSize = UDim2.fromOffset(500, 500) NewColorWell.BackgroundTransparency = 1 NewColorWell.Parent = ColorWells local NewColorDisplay = Instance.new("Frame") NewColorDisplay.Name = "Color" NewColorDisplay.AnchorPoint = Vector2.new(0.5, 0.5) NewColorDisplay.BorderSizePixel = 0 NewColorDisplay.Position = UDim2.fromScale(0.5, 0.5) NewColorDisplay.Size = UDim2.new(1, 0, 1, 0) NewColorDisplay.Parent = NewColorWell local OldColorWell = Instance.new("ImageLabel") OldColorWell.Name = "OldColor" OldColorWell.Image = Assets.Grid OldColorWell.ScaleType = Enum.ScaleType.Tile OldColorWell.TileSize = UDim2.fromOffset(500, 500) OldColorWell.BackgroundTransparency = 1 OldColorWell.LayoutOrder = 1 OldColorWell.Parent = ColorWells local OldColorDisplay = Instance.new("Frame") OldColorDisplay.Name = "Color" OldColorDisplay.AnchorPoint = Vector2.new(0.5, 0.5) OldColorDisplay.BorderSizePixel = 0 OldColorDisplay.Position = UDim2.fromScale(0.5, 0.5) OldColorDisplay.Size = UDim2.new(1, 0, 1, 0) OldColorDisplay.BackgroundColor3 = ColorPickerFunctions.Color OldColorDisplay.BackgroundTransparency = Settings.Alpha and ColorPickerFunctions.Alpha or 0 OldColorDisplay.Parent = OldColorWell for _, Well in pairs({NewColorWell, OldColorWell}) do local corner = Instance.new("UICorner") corner.Parent = Well local colorCorner = Instance.new("UICorner") colorCorner.Parent = Well:FindFirstChild("Color") end ColorPickerFunctions.Elements.NewColorDisplay = NewColorDisplay ColorPickerFunctions.Elements.OldColorDisplay = OldColorDisplay ColorPickerFunctions.Elements.Buttons = CreateActionButtons(ColorPickerFunctions.Elements.Dialog.Prompt) ColorPickerFunctions.State.Hue, ColorPickerFunctions.State.Saturation, ColorPickerFunctions.State.Value = ColorUtils.RGBToHSV(ColorPickerFunctions.Color) SetupConnections() UpdateColorDisplay() if not Base:FindFirstChild("OverlayFolder") then OverlayFolder = Instance.new("Folder") OverlayFolder.Name = "OverlayFolder" OverlayFolder.Parent = Base end ColorPickerFunctions.Elements.Dialog.Overlay.Parent = OverlayFolder end local function ApplyInitialSettings() if Settings.Hidden then if typeof(Settings.Hidden) == "table" then ColorPickerFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else ColorPickerFunctions:SetHidden(Settings.Hidden) end end if Settings.ToolTip then ColorPickerFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then ColorPickerFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then ColorPickerFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then ColorPickerFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end end Initialize() ApplyInitialSettings() if Flag then WaveLibrary.Options[Flag] = ColorPickerFunctions end return ColorPickerFunctions end end end R["Wave/UserInterface/Components/Divider.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Divider(Settings) Settings = Settings or {} local Label = (type(Settings) == "string" and Settings) or Settings.Text or Settings.Name or Settings.Label or Settings.Title local HasLabel = Label ~= nil and Label ~= "" local DividerFunctions = {} local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end local Divider = Instance.new("Frame") Divider.Name = "Divider" Divider.BackgroundTransparency = 1 Divider.BorderSizePixel = 0 Divider.ClipsDescendants = true Divider.Size = UDim2.new(1, 0, 0, HasLabel and 20 or 11) Divider.Parent = Section local Layout = Instance.new("UIListLayout") Layout.FillDirection = Enum.FillDirection.Horizontal Layout.VerticalAlignment = Enum.VerticalAlignment.Center Layout.SortOrder = Enum.SortOrder.LayoutOrder Layout.Padding = UDim.new(0, 9) Layout.Parent = Divider local LineColor = ThemeAttr("BorderColor", Color3.fromRGB(255, 255, 255)) if HasLabel then local LabelText = Instance.new("TextLabel") LabelText.Name = "DividerLabel" LabelText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) LabelText.Text = Label LabelText.TextColor3 = ThemeAttr("TextSecondary", Color3.fromRGB(168, 168, 178)) LabelText.TextTransparency = 0.1 LabelText.TextSize = 12 LabelText.TextXAlignment = Enum.TextXAlignment.Left LabelText.TextYAlignment = Enum.TextYAlignment.Center LabelText.AutomaticSize = Enum.AutomaticSize.X LabelText.BackgroundTransparency = 1 LabelText.Size = UDim2.new(0, 0, 1, 0) LabelText:SetAttribute("NoApplyTheme", true) LabelText.Parent = Divider DividerFunctions._label = LabelText end local Line = Instance.new("Frame") Line.Name = "Line" Line.BackgroundColor3 = LineColor Line.BackgroundTransparency = 0.8 Line.BorderSizePixel = 0 Line.Size = UDim2.new(1, 0, 0, 1) Line.LayoutOrder = 1 Line:SetAttribute("NoApplyTheme", true) Line.Parent = Divider if not HasLabel then -- soft fade at both ends for a cleaner standalone divider local Gradient = Instance.new("UIGradient") Gradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.1, 0), NumberSequenceKeypoint.new(0.9, 0), NumberSequenceKeypoint.new(1, 1), }) Gradient.Parent = Line end function DividerFunctions:Remove() Divider:Destroy() end function DividerFunctions:SetVisibility(State) Divider.Visible = State end function DividerFunctions:UpdateName(New) if DividerFunctions._label then DividerFunctions._label.Text = New end end return DividerFunctions end end end R["Wave/UserInterface/Components/Dropdown.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Dropdown(Settings, Flag) local DropdownFunctions = { Settings = Settings, Class = "Dropdown", IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Value = nil, IsHidden = false, Dropped = false, Debounce = false, Selected = {}, OptionObjs = {}, Maid = {}, Elements = {} } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name, " ", "_") end local TWEEN_SETTINGS = { Duration = 0.2, EasingStyle = Enum.EasingStyle.Quint, TransparencyIn = 0, TransparencyOut = 0.5, CheckSizeIncrease = 12, CheckSizeDecrease = -13 } local function CreateElements() local Elements = {} Elements.Dropdown = Instance.new("Frame") Elements.Dropdown.Name = "Dropdown" Elements.Dropdown.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Elements.Dropdown.BackgroundTransparency = 0.985 Elements.Dropdown.BorderSizePixel = 0 Elements.Dropdown.Size = UDim2.new(1, 0, 0, 38) Elements.Dropdown.ClipsDescendants = true Elements.Dropdown.Parent = Section local DropdownUIPadding = Instance.new("UIPadding") DropdownUIPadding.PaddingLeft = UDim.new(0, 15) DropdownUIPadding.PaddingRight = UDim.new(0, 15) DropdownUIPadding.Parent = Elements.Dropdown local DropdownUIStroke = Instance.new("UIStroke") DropdownUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border DropdownUIStroke.Color = Color3.fromRGB(255, 255, 255) DropdownUIStroke.Transparency = 0.95 DropdownUIStroke.Parent = Elements.Dropdown local DropdownUICorner = Instance.new("UICorner") DropdownUICorner.CornerRadius = UDim.new(0, 6) DropdownUICorner.Parent = Elements.Dropdown Elements.Interact = Instance.new("TextButton") Elements.Interact.Name = "Interact" Elements.Interact.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Elements.Interact.Text = "" Elements.Interact.BackgroundTransparency = 1 Elements.Interact.BorderSizePixel = 0 Elements.Interact.Size = UDim2.new(1, 0, 0, 38) Elements.Interact.Parent = Elements.Dropdown Elements.DropdownName = Instance.new("TextLabel") Elements.DropdownName.Name = "DropdownName" Elements.DropdownName.FontFace = Font.new(Assets.InterFont) Elements.DropdownName.Text = Settings.Default and (Settings.Name .. " • " .. table.concat(DropdownFunctions.Selected, ", ")) or (Settings.Name .. "...") Elements.DropdownName.RichText = true Elements.DropdownName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") Elements.DropdownName.TextSize = 13 Elements.DropdownName.TextTransparency = 0.5 Elements.DropdownName.TextTruncate = Enum.TextTruncate.SplitWord Elements.DropdownName.TextXAlignment = Enum.TextXAlignment.Left Elements.DropdownName.AutomaticSize = Enum.AutomaticSize.Y Elements.DropdownName.BackgroundTransparency = 1 Elements.DropdownName.BorderSizePixel = 0 Elements.DropdownName.Size = UDim2.new(1, -20, 0, 38) Elements.DropdownName.Parent = Elements.Dropdown if Settings.PremiumFeature then Elements.DropdownName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Parent = Elements.DropdownName end Elements.DropdownImage = Instance.new("ImageLabel") Elements.DropdownImage.Name = "DropdownImage" Elements.DropdownImage.Image = Assets.PackageClosed Elements.DropdownImage.ImageTransparency = 0.5 Elements.DropdownImage.AnchorPoint = Vector2.new(1, 0) Elements.DropdownImage.BackgroundTransparency = 1 Elements.DropdownImage.BorderSizePixel = 0 Elements.DropdownImage.Position = UDim2.new(1, 2, 0, 10) Elements.DropdownImage.Size = UDim2.fromOffset(18, 18) Elements.DropdownImage.Parent = Elements.Dropdown if Settings.DropdownEditor then Elements.EditorButton = Instance.new("ImageButton") Elements.EditorButton.Name = "EditorButton" Elements.EditorButton.Image = Assets.Dropdown Elements.EditorButton.ImageTransparency = 0.5 Elements.EditorButton.AnchorPoint = Vector2.new(1, 0) Elements.EditorButton.BackgroundTransparency = 1 Elements.EditorButton.BorderSizePixel = 0 Elements.EditorButton.Position = UDim2.new(1, -20, 0, 12) Elements.EditorButton.Size = UDim2.fromOffset(14, 14) Elements.EditorButton.Parent = Elements.Dropdown end -- The option list is its OWN ScrollingFrame, sitting BELOW the 38px -- header. On mobile, an Active + scrollable inner ScrollingFrame -- captures the touch-drag, so dragging the options scrolls THIS list -- (reaching items below the fold) instead of the tab content behind -- it. Sized below the header so scrolled options never overlap the title. Elements.DropdownFrame = Instance.new("ScrollingFrame") Elements.DropdownFrame.Name = "DropdownFrame" Elements.DropdownFrame.BackgroundTransparency = 1 Elements.DropdownFrame.BorderSizePixel = 0 Elements.DropdownFrame.ClipsDescendants = true Elements.DropdownFrame.Position = UDim2.new(0, 0, 0, 38) Elements.DropdownFrame.Size = UDim2.new(1, 0, 1, -38) Elements.DropdownFrame.Visible = false Elements.DropdownFrame.Active = true Elements.DropdownFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y Elements.DropdownFrame.CanvasSize = UDim2.new() Elements.DropdownFrame.ScrollingDirection = Enum.ScrollingDirection.Y Elements.DropdownFrame.ScrollBarThickness = 3 Elements.DropdownFrame.ScrollBarImageColor3 = Color3.fromRGB(255, 255, 255) Elements.DropdownFrame.ScrollBarImageTransparency = 0.5 Elements.DropdownFrame.BottomImage = "" Elements.DropdownFrame.TopImage = "" Elements.DropdownFrame.Parent = Elements.Dropdown local DropdownFrameUIPadding = Instance.new("UIPadding") DropdownFrameUIPadding.PaddingTop = UDim.new(0, 4) DropdownFrameUIPadding.PaddingBottom = UDim.new(0, 10) DropdownFrameUIPadding.Parent = Elements.DropdownFrame Elements.DropdownFrameUIListLayout = Instance.new("UIListLayout") Elements.DropdownFrameUIListLayout.Padding = UDim.new(0, 5) Elements.DropdownFrameUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder Elements.DropdownFrameUIListLayout.Parent = Elements.DropdownFrame return Elements end local function CreateSearchBox() if not Settings.Search or Settings.Editor then return end DropdownFunctions.Elements.Search = Instance.new("Frame") DropdownFunctions.Elements.Search.Name = "Search" DropdownFunctions.Elements.Search.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownFunctions.Elements.Search.BackgroundTransparency = 0.95 DropdownFunctions.Elements.Search.BorderSizePixel = 0 DropdownFunctions.Elements.Search.LayoutOrder = -1 DropdownFunctions.Elements.Search.Size = UDim2.new(1, 0, 0, 30) DropdownFunctions.Elements.Search.Visible = true DropdownFunctions.Elements.Search.Parent = DropdownFunctions.Elements.DropdownFrame local SectionUICorner = Instance.new("UICorner") SectionUICorner.Parent = DropdownFunctions.Elements.Search DropdownFunctions.Elements.SearchIcon = Instance.new("ImageLabel") DropdownFunctions.Elements.SearchIcon.Name = "SearchIcon" DropdownFunctions.Elements.SearchIcon.Image = Assets.SearchIcon DropdownFunctions.Elements.SearchIcon.ImageColor3 = Color3.fromRGB(180, 180, 180) DropdownFunctions.Elements.SearchIcon.AnchorPoint = Vector2.new(0, 0.5) DropdownFunctions.Elements.SearchIcon.BackgroundTransparency = 1 DropdownFunctions.Elements.SearchIcon.BorderSizePixel = 0 DropdownFunctions.Elements.SearchIcon.Position = UDim2.fromScale(0, 0.5) DropdownFunctions.Elements.SearchIcon.Size = UDim2.fromOffset(12, 12) DropdownFunctions.Elements.SearchIcon.Parent = DropdownFunctions.Elements.Search if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then DropdownFunctions.Elements.SearchIcon.ImageTransparency = 0.6 end local UIPadding = Instance.new("UIPadding") UIPadding.PaddingLeft = UDim.new(0, 15) UIPadding.Parent = DropdownFunctions.Elements.Search DropdownFunctions.Elements.SearchBox = Instance.new("TextBox") DropdownFunctions.Elements.SearchBox.Name = "SearchBox" DropdownFunctions.Elements.SearchBox.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) DropdownFunctions.Elements.SearchBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150) DropdownFunctions.Elements.SearchBox.PlaceholderText = "Search..." DropdownFunctions.Elements.SearchBox.Text = "" DropdownFunctions.Elements.SearchBox.TextColor3 = Color3.fromRGB(200, 200, 200) DropdownFunctions.Elements.SearchBox.TextSize = 14 DropdownFunctions.Elements.SearchBox.TextXAlignment = Enum.TextXAlignment.Left DropdownFunctions.Elements.SearchBox.BackgroundTransparency = 1 DropdownFunctions.Elements.SearchBox.BorderSizePixel = 0 DropdownFunctions.Elements.SearchBox.Size = UDim2.fromScale(1, 1) DropdownFunctions.Elements.SearchBox.Parent = DropdownFunctions.Elements.Search local UIPadding1 = Instance.new("UIPadding") UIPadding1.PaddingLeft = UDim.new(0, 23) UIPadding1.Parent = DropdownFunctions.Elements.SearchBox end local function CreateEditor() if not Settings.Editor then return end DropdownFunctions.Elements.Editor = Instance.new("Frame") DropdownFunctions.Elements.Editor.Name = "Editor" DropdownFunctions.Elements.Editor.BackgroundTransparency = 1 DropdownFunctions.Elements.Editor.BorderSizePixel = 0 DropdownFunctions.Elements.Editor.LayoutOrder = -1 DropdownFunctions.Elements.Editor.Size = UDim2.new(1, 0, 0, 30) DropdownFunctions.Elements.Editor.Visible = true DropdownFunctions.Elements.Editor.Parent = DropdownFunctions.Elements.DropdownFrame local EditorUIListLayout = Instance.new("UIListLayout") EditorUIListLayout.Padding = UDim.new(0, 8) EditorUIListLayout.FillDirection = Enum.FillDirection.Horizontal EditorUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder EditorUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center EditorUIListLayout.Parent = DropdownFunctions.Elements.Editor DropdownFunctions.Elements.SelectAllButton = Instance.new("TextButton") DropdownFunctions.Elements.SelectAllButton.Name = "SelectAllButton" DropdownFunctions.Elements.SelectAllButton.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) DropdownFunctions.Elements.SelectAllButton.Text = "Select All" DropdownFunctions.Elements.SelectAllButton.TextColor3 = Color3.fromRGB(180, 180, 180) DropdownFunctions.Elements.SelectAllButton.TextSize = 12 DropdownFunctions.Elements.SelectAllButton.TextXAlignment = Enum.TextXAlignment.Center DropdownFunctions.Elements.SelectAllButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownFunctions.Elements.SelectAllButton.BackgroundTransparency = 0.95 DropdownFunctions.Elements.SelectAllButton.BorderSizePixel = 0 DropdownFunctions.Elements.SelectAllButton.Size = UDim2.new(0.5, -4, 1, 0) DropdownFunctions.Elements.SelectAllButton.Parent = DropdownFunctions.Elements.Editor local SelectAllCorner = Instance.new("UICorner") SelectAllCorner.CornerRadius = UDim.new(0, 4) SelectAllCorner.Parent = DropdownFunctions.Elements.SelectAllButton DropdownFunctions.Elements.ClearAllButton = Instance.new("TextButton") DropdownFunctions.Elements.ClearAllButton.Name = "ClearAllButton" DropdownFunctions.Elements.ClearAllButton.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) DropdownFunctions.Elements.ClearAllButton.Text = "Clear All" DropdownFunctions.Elements.ClearAllButton.TextColor3 = Color3.fromRGB(180, 180, 180) DropdownFunctions.Elements.ClearAllButton.TextSize = 12 DropdownFunctions.Elements.ClearAllButton.TextXAlignment = Enum.TextXAlignment.Center DropdownFunctions.Elements.ClearAllButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownFunctions.Elements.ClearAllButton.BackgroundTransparency = 0.95 DropdownFunctions.Elements.ClearAllButton.BorderSizePixel = 0 DropdownFunctions.Elements.ClearAllButton.Size = UDim2.new(0.5, -4, 1, 0) DropdownFunctions.Elements.ClearAllButton.Parent = DropdownFunctions.Elements.Editor local ClearAllCorner = Instance.new("UICorner") ClearAllCorner.CornerRadius = UDim.new(0, 4) ClearAllCorner.Parent = DropdownFunctions.Elements.ClearAllButton if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then DropdownFunctions.Elements.SelectAllButton.TextTransparency = 0.6 DropdownFunctions.Elements.ClearAllButton.TextTransparency = 0.6 end end local function CreateDropdownEditor() if not Settings.DropdownEditor then return end DropdownFunctions.Elements.EditorSettings = Instance.new("Frame") DropdownFunctions.Elements.EditorSettings.Name = "EditorSettings" DropdownFunctions.Elements.EditorSettings.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownFunctions.Elements.EditorSettings.BackgroundTransparency = 0.98 DropdownFunctions.Elements.EditorSettings.BorderSizePixel = 0 DropdownFunctions.Elements.EditorSettings.LayoutOrder = -2 DropdownFunctions.Elements.EditorSettings.Size = UDim2.new(1, 0, 0, 150) DropdownFunctions.Elements.EditorSettings.Visible = false DropdownFunctions.Elements.EditorSettings.Parent = DropdownFunctions.Elements.DropdownFrame local EditorCorner = Instance.new("UICorner") EditorCorner.CornerRadius = UDim.new(0, 6) EditorCorner.Parent = DropdownFunctions.Elements.EditorSettings local EditorStroke = Instance.new("UIStroke") EditorStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border EditorStroke.Color = Color3.fromRGB(255, 255, 255) EditorStroke.Transparency = 0.95 EditorStroke.Parent = DropdownFunctions.Elements.EditorSettings local EditorPadding = Instance.new("UIPadding") EditorPadding.PaddingLeft = UDim.new(0, 15) EditorPadding.PaddingRight = UDim.new(0, 15) EditorPadding.PaddingTop = UDim.new(0, 10) EditorPadding.PaddingBottom = UDim.new(0, 10) EditorPadding.Parent = DropdownFunctions.Elements.EditorSettings local EditorLayout = Instance.new("UIListLayout") EditorLayout.Padding = UDim.new(0, 8) EditorLayout.SortOrder = Enum.SortOrder.LayoutOrder EditorLayout.Parent = DropdownFunctions.Elements.EditorSettings local function CreateToggleOption(Name, DefaultValue) local ToggleFrame = Instance.new("Frame") ToggleFrame.Name = Name .. "Frame" ToggleFrame.BackgroundTransparency = 1 ToggleFrame.Size = UDim2.new(1, 0, 0, 25) ToggleFrame.Parent = DropdownFunctions.Elements.EditorSettings local ToggleLabel = Instance.new("TextLabel") ToggleLabel.Name = Name .. "Label" ToggleLabel.FontFace = Font.new(Assets.InterFont) ToggleLabel.Text = Name:gsub("Enable", ""):gsub("(%l)(%u)", "%1 %2") ToggleLabel.TextColor3 = Color3.fromRGB(200, 200, 200) ToggleLabel.TextSize = 12 ToggleLabel.TextXAlignment = Enum.TextXAlignment.Left ToggleLabel.BackgroundTransparency = 1 ToggleLabel.Size = UDim2.new(1, -30, 1, 0) ToggleLabel.Parent = ToggleFrame local ToggleButton = Instance.new("ImageButton") ToggleButton.Name = Name .. "Button" ToggleButton.Image = Assets.ToggleBackground ToggleButton.ImageColor3 = Color3.fromRGB(87, 86, 86) ToggleButton.ImageTransparency = DefaultValue and 0 or 0.5 ToggleButton.AutoButtonColor = false ToggleButton.AnchorPoint = Vector2.new(1, 0.5) ToggleButton.BackgroundTransparency = 1 ToggleButton.Position = UDim2.new(1, 0, 0.5, 0) ToggleButton.Size = UDim2.fromOffset(25, 13) ToggleButton.Parent = ToggleFrame local ToggleHead = Instance.new("ImageLabel") ToggleHead.Name = Name .. "Head" ToggleHead.Image = Assets.TogglerHead ToggleHead.ImageColor3 = Color3.fromRGB(255, 255, 255) ToggleHead.ImageTransparency = DefaultValue and 0 or 0.85 ToggleHead.AnchorPoint = Vector2.new(1, 0.5) ToggleHead.BackgroundTransparency = 1 ToggleHead.Position = DefaultValue and UDim2.new(1, 0, 0.5, 0) or UDim2.new(0.5, 0, 0.5, 0) ToggleHead.Size = UDim2.fromOffset(9, 9) ToggleHead.ZIndex = 2 ToggleHead.Parent = ToggleButton return ToggleFrame, ToggleButton, ToggleHead end local EnableSearchFrame, EnableSearchButton, EnableSearchHead = CreateToggleOption("EnableSearch", Settings.Search) local EnableClearFrame, EnableClearButton, EnableClearHead = CreateToggleOption("EnableClear", Settings.Editor) local EnableSelectFrame, EnableSelectButton, EnableSelectHead = CreateToggleOption("EnableSelect", Settings.Editor) local AddOptionFrame = Instance.new("Frame") AddOptionFrame.Name = "AddOptionFrame" AddOptionFrame.BackgroundTransparency = 1 AddOptionFrame.Size = UDim2.new(1, 0, 0, 25) AddOptionFrame.Parent = DropdownFunctions.Elements.EditorSettings local AddOptionBox = Instance.new("TextBox") AddOptionBox.Name = "AddOptionBox" AddOptionBox.FontFace = Font.new(Assets.InterFont) AddOptionBox.PlaceholderText = "Add Option..." AddOptionBox.Text = "" AddOptionBox.TextColor3 = Color3.fromRGB(200, 200, 200) AddOptionBox.TextSize = 12 AddOptionBox.TextXAlignment = Enum.TextXAlignment.Left AddOptionBox.BackgroundColor3 = Color3.fromRGB(255, 255, 255) AddOptionBox.BackgroundTransparency = 0.95 AddOptionBox.BorderSizePixel = 0 AddOptionBox.Size = UDim2.new(1, -30, 1, 0) AddOptionBox.Parent = AddOptionFrame local AddOptionCorner = Instance.new("UICorner") AddOptionCorner.CornerRadius = UDim.new(0, 4) AddOptionCorner.Parent = AddOptionBox local AddOptionPadding = Instance.new("UIPadding") AddOptionPadding.PaddingLeft = UDim.new(0, 8) AddOptionPadding.Parent = AddOptionBox local AddOptionButton = Instance.new("ImageButton") AddOptionButton.Name = "AddOptionButton" AddOptionButton.Image = "rbxassetid://7733964046" AddOptionButton.ImageColor3 = Color3.fromRGB(180, 180, 180) AddOptionButton.ImageTransparency = 0.3 AddOptionButton.AnchorPoint = Vector2.new(1, 0.5) AddOptionButton.BackgroundTransparency = 1 AddOptionButton.Position = UDim2.new(1, 0, 0.5, 0) AddOptionButton.Size = UDim2.fromOffset(20, 20) AddOptionButton.Parent = AddOptionFrame DropdownFunctions.Elements.EditorToggles = { Search = {Button = EnableSearchButton, Head = EnableSearchHead, State = Settings.Search}, Clear = {Button = EnableClearButton, Head = EnableClearHead, State = Settings.Editor}, Select = {Button = EnableSelectButton, Head = EnableSelectHead, State = Settings.Editor}, AddBox = AddOptionBox, AddButton = AddOptionButton } end -- Dropdown header is a fixed 38px bar at the top; the option list lives -- in the ScrollingFrame below it. We cap the option window so long lists -- (e.g. a big shop) scroll INSIDE the dropdown instead of expanding the -- whole tab off-screen. local DROPDOWN_HEADER_HEIGHT = 38 local MAX_OPTIONS_HEIGHT = 200 local function CalculateDropdownSize() local TotalHeight = 0 local VisibleChildrenCount = 0 local Padding = DropdownFunctions.Elements.DropdownFrame:FindFirstChild("UIPadding") local PaddingOffset = Padding and (Padding.PaddingTop.Offset + Padding.PaddingBottom.Offset) or 0 for _, V in pairs(DropdownFunctions.Elements.DropdownFrame:GetChildren()) do if not V:IsA("UIComponent") and V.Visible then TotalHeight += V.AbsoluteSize.Y VisibleChildrenCount += 1 end end local Spacing = DropdownFunctions.Elements.DropdownFrameUIListLayout.Padding.Offset * math.max(0, VisibleChildrenCount - 1) local OptionsHeight = TotalHeight + Spacing + PaddingOffset -- Cap so the inner ScrollingFrame takes over for long option lists. if OptionsHeight > MAX_OPTIONS_HEIGHT then OptionsHeight = MAX_OPTIONS_HEIGHT end return DROPDOWN_HEADER_HEIGHT + OptionsHeight end local function FindOption() if not DropdownFunctions.Elements.SearchBox then return end local SearchTerm = DropdownFunctions.Elements.SearchBox.Text:lower() for _, V in pairs(DropdownFunctions.OptionObjs) do local OptionText = V.NameLabel.Text:lower() local IsVisible = string.find(OptionText, SearchTerm) ~= nil V.Button.Visible = IsVisible end if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function Toggle(OptionName, State) local Option = DropdownFunctions.OptionObjs[OptionName] if not Option then return end local Checkmark = Option.Checkmark local OptionNameLabel = Option.NameLabel if State then if Settings.Multi then if not table.find(DropdownFunctions.Selected, OptionName) then table.insert(DropdownFunctions.Selected, OptionName) DropdownFunctions.Value = DropdownFunctions.Selected end else for Name, Opt in pairs(DropdownFunctions.OptionObjs) do if Name ~= OptionName then Utility:PropertyTween(Opt.Checkmark, TweenInfo.new(TWEEN_SETTINGS.Duration, TWEEN_SETTINGS.EasingStyle), { Size = UDim2.new(Opt.Checkmark.Size.X.Scale, TWEEN_SETTINGS.CheckSizeDecrease, Opt.Checkmark.Size.Y.Scale, Opt.Checkmark.Size.Y.Offset) }):Play() Utility:PropertyTween(Opt.NameLabel, TweenInfo.new(TWEEN_SETTINGS.Duration, TWEEN_SETTINGS.EasingStyle), { TextTransparency = TWEEN_SETTINGS.TransparencyOut }):Play() Opt.Checkmark.TextTransparency = 1 end end DropdownFunctions.Selected = {OptionName} DropdownFunctions.Value = DropdownFunctions.Selected[1] end Utility:PropertyTween(Checkmark, TweenInfo.new(TWEEN_SETTINGS.Duration, TWEEN_SETTINGS.EasingStyle), { Size = UDim2.new(Checkmark.Size.X.Scale, TWEEN_SETTINGS.CheckSizeIncrease, Checkmark.Size.Y.Scale, Checkmark.Size.Y.Offset) }):Play() Utility:PropertyTween(OptionNameLabel, TweenInfo.new(TWEEN_SETTINGS.Duration, TWEEN_SETTINGS.EasingStyle), { TextTransparency = TWEEN_SETTINGS.TransparencyIn }):Play() Checkmark.TextTransparency = 0 else if Settings.Multi then local Idx = table.find(DropdownFunctions.Selected, OptionName) if Idx then table.remove(DropdownFunctions.Selected, Idx) end else DropdownFunctions.Selected = {} end Utility:PropertyTween(Checkmark, TweenInfo.new(TWEEN_SETTINGS.Duration, TWEEN_SETTINGS.EasingStyle), { Size = UDim2.new(Checkmark.Size.X.Scale, TWEEN_SETTINGS.CheckSizeDecrease, Checkmark.Size.Y.Scale, Checkmark.Size.Y.Offset) }):Play() Utility:PropertyTween(OptionNameLabel, TweenInfo.new(TWEEN_SETTINGS.Duration, TWEEN_SETTINGS.EasingStyle), { TextTransparency = TWEEN_SETTINGS.TransparencyOut }):Play() Checkmark.TextTransparency = 1 end if Settings.Required and #DropdownFunctions.Selected == 0 and not State then return end if #DropdownFunctions.Selected > 0 then DropdownFunctions.Elements.DropdownName.Text = Settings.Name .. " • " .. table.concat(DropdownFunctions.Selected, ", ") else DropdownFunctions.Elements.DropdownName.Text = Settings.Name .. "..." end end local function ToggleDropdown() if DropdownFunctions.IsHidden or DropdownFunctions.Debounce then return end if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end DropdownFunctions.Debounce = true local DefaultDropdownSize = 38 local IsDropdownOpen = not DropdownFunctions.Dropped local TargetSize = IsDropdownOpen and UDim2.new(1, 0, 0, CalculateDropdownSize()) or UDim2.new(1, 0, 0, DefaultDropdownSize) local DropTween = Utility:PropertyTween(DropdownFunctions.Elements.Dropdown, TweenInfo.new(0.2, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Size = TargetSize }) Utility:PropertyTween(DropdownFunctions.Elements.DropdownImage, TweenInfo.new(0.075, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, true), { ImageTransparency = 0.8 }):Play() task.delay(0.05, function() DropdownFunctions.Elements.DropdownImage.Image = IsDropdownOpen and Assets.PackageOpened or Assets.PackageClosed end) DropTween:Play() if IsDropdownOpen then DropdownFunctions.Elements.DropdownFrame.Visible = true DropTween.Completed:Connect(function() DropdownFunctions.Debounce = false end) else DropTween.Completed:Connect(function() DropdownFunctions.Elements.DropdownFrame.Visible = false DropdownFunctions.Debounce = false end) end DropdownFunctions.Dropped = IsDropdownOpen end local function ToggleEditorSettings() if DropdownFunctions.IsHidden or not DropdownFunctions.Elements.EditorSettings then return end local IsVisible = DropdownFunctions.Elements.EditorSettings.Visible DropdownFunctions.Elements.EditorSettings.Visible = not IsVisible if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function HandleEditorToggle(ToggleName) local ToggleData = DropdownFunctions.Elements.EditorToggles[ToggleName] if not ToggleData then return end ToggleData.State = not ToggleData.State local TransparencyValues = ToggleData.State and {0, 0} or {0.5, 0.85} local Position = ToggleData.State and UDim2.new(1, 0, 0.5, 0) or UDim2.new(0.5, 0, 0.5, 0) Utility:PropertyTween(ToggleData.Button, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { ImageTransparency = TransparencyValues[1] }):Play() Utility:PropertyTween(ToggleData.Head, TweenInfo.new(0.2, Enum.EasingStyle.Sine), { ImageTransparency = TransparencyValues[2], Position = Position }):Play() if ToggleName == "Search" then if DropdownFunctions.Elements.Search then DropdownFunctions.Elements.Search.Visible = ToggleData.State end elseif ToggleName == "Clear" or ToggleName == "Select" then if DropdownFunctions.Elements.Editor then local ShouldShow = DropdownFunctions.Elements.EditorToggles.Clear.State or DropdownFunctions.Elements.EditorToggles.Select.State DropdownFunctions.Elements.Editor.Visible = ShouldShow if DropdownFunctions.Elements.SelectAllButton then DropdownFunctions.Elements.SelectAllButton.Visible = DropdownFunctions.Elements.EditorToggles.Select.State end if DropdownFunctions.Elements.ClearAllButton then DropdownFunctions.Elements.ClearAllButton.Visible = DropdownFunctions.Elements.EditorToggles.Clear.State end end end if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function HandleAddOption() local OptionText = DropdownFunctions.Elements.EditorToggles.AddBox.Text:match("^%s*(.-)%s*$") if OptionText == "" or DropdownFunctions.OptionObjs[OptionText] then return end AddOption(#DropdownFunctions.OptionObjs + 1, OptionText) DropdownFunctions.Elements.EditorToggles.AddBox.Text = "" if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function AddOption(I, V, C) if typeof(V) == "table" then C = V.Color V = V.Name end local Option = Instance.new("TextButton") Option.Name = "Option" Option.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Option.Text = "" Option.BackgroundTransparency = 1 Option.BorderSizePixel = 0 Option.Size = UDim2.new(1, 0, 0, 30) local OptionUIPadding = Instance.new("UIPadding") OptionUIPadding.PaddingLeft = UDim.new(0, 15) OptionUIPadding.Parent = Option local OptionUIListLayout = Instance.new("UIListLayout") OptionUIListLayout.Padding = UDim.new(0, 10) OptionUIListLayout.FillDirection = Enum.FillDirection.Horizontal OptionUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder OptionUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center OptionUIListLayout.Parent = Option local Checkmark = Instance.new("TextLabel") Checkmark.Name = "Checkmark" Checkmark.FontFace = Font.new(Assets.InterFont) Checkmark.Text = "✓" Checkmark.TextColor3 = Color3.fromRGB(255, 255, 255) Checkmark.TextSize = 13 Checkmark.TextTransparency = 1 Checkmark.TextXAlignment = Enum.TextXAlignment.Left Checkmark.TextYAlignment = Enum.TextYAlignment.Top Checkmark.AnchorPoint = Vector2.new(0, 0.5) Checkmark.AutomaticSize = Enum.AutomaticSize.Y Checkmark.BackgroundTransparency = 1 Checkmark.BorderSizePixel = 0 Checkmark.LayoutOrder = -1 Checkmark.Position = UDim2.fromScale(0, 0.5) Checkmark.Size = UDim2.fromOffset(-OptionUIListLayout.Padding.Offset, 0) Checkmark.Parent = Option local OptionName = Instance.new("TextLabel") OptionName.Name = "OptionName" OptionName.FontFace = Font.new(Assets.InterFont) OptionName.Text = V OptionName.RichText = true OptionName.TextColor3 = C or Color3.fromRGB(255, 255, 255) OptionName.TextSize = 13 OptionName.TextTransparency = 0.5 OptionName.TextTruncate = Enum.TextTruncate.AtEnd OptionName.TextXAlignment = Enum.TextXAlignment.Left OptionName.TextYAlignment = Enum.TextYAlignment.Top OptionName.AnchorPoint = Vector2.new(0, 0.5) OptionName.AutomaticSize = Enum.AutomaticSize.XY OptionName.BackgroundTransparency = 1 OptionName.BorderSizePixel = 0 OptionName.Position = UDim2.fromScale(0, 0.5) OptionName.Parent = Option if C then OptionName:SetAttribute("NoApplyTheme", true) end Option.Parent = DropdownFunctions.Elements.DropdownFrame DropdownFunctions.OptionObjs[V] = { Index = I, Button = Option, NameLabel = OptionName, Checkmark = Checkmark } if Settings.Default and typeof(Settings.Options) ~= "string" then if Settings.Multi then if type(Settings.Default) == "number" then Toggle(Settings.Options[Settings.Default], true) else Toggle(V, table.find(Settings.Default, V) and true or false) end elseif type(Settings.Default) == "number" then Toggle(Settings.Options[Settings.Default], true) end end -- The inner DropdownFrame ScrollingFrame handles touch scrolling -- natively; a drag over an option scrolls the list and Roblox -- cancels the click, so taps still select cleanly. DropdownFunctions.Maid["Option" .. V .. "Click"] = Option.MouseButton1Click:Connect(function() if DropdownFunctions.IsHidden then return end local IsSelected = table.find(DropdownFunctions.Selected, V) and true or false local NewSelected = not IsSelected if Settings.Required and not NewSelected and #DropdownFunctions.Selected <= 1 then return end Toggle(V, NewSelected) task.spawn(function() if Settings.Callback then if Settings.Multi then local Return = {} for _, Opt in ipairs(DropdownFunctions.Selected) do Return[Opt] = true end Settings.Callback(Return) else if NewSelected then Settings.Callback(DropdownFunctions.Selected[1] or nil) end end end end) end) if not Settings.PremiumFeature then DropdownFunctions.Maid["Option" .. V .. "Hover"] = Option.MouseEnter:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(OptionName, {TextTransparency = 0}) end) DropdownFunctions.Maid["Option" .. V .. "Leave"] = Option.MouseLeave:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(OptionName, { TextTransparency = table.find(DropdownFunctions.Selected, V) and 0 or 0.5 }) end) end if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function SetupConnections() DropdownFunctions.Maid.DropdownClick = DropdownFunctions.Elements.Interact.MouseButton1Click:Connect(ToggleDropdown) if not Settings.PremiumFeature then DropdownFunctions.Maid.DropdownHover = DropdownFunctions.Elements.Interact.MouseEnter:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(DropdownFunctions.Elements.DropdownName, {TextTransparency = 0}) Utility:QuickTween(DropdownFunctions.Elements.DropdownImage, {ImageTransparency = 0}) end) DropdownFunctions.Maid.DropdownLeave = DropdownFunctions.Elements.Interact.MouseLeave:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(DropdownFunctions.Elements.DropdownName, {TextTransparency = 0.5}) Utility:QuickTween(DropdownFunctions.Elements.DropdownImage, {ImageTransparency = 0.5}) end) end if DropdownFunctions.Elements.SearchBox then DropdownFunctions.Maid.SearchTextChanged = DropdownFunctions.Elements.SearchBox:GetPropertyChangedSignal("Text"):Connect(FindOption) end if DropdownFunctions.Elements.SelectAllButton then if not Settings.PremiumFeature then DropdownFunctions.Maid.SelectAllHover = DropdownFunctions.Elements.SelectAllButton.MouseEnter:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(DropdownFunctions.Elements.SelectAllButton, { TextTransparency = 0, BackgroundTransparency = 0.9 }) end) DropdownFunctions.Maid.SelectAllLeave = DropdownFunctions.Elements.SelectAllButton.MouseLeave:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(DropdownFunctions.Elements.SelectAllButton, { TextTransparency = 0.3, BackgroundTransparency = 0.95 }) end) end DropdownFunctions.Maid.SelectAllClick = DropdownFunctions.Elements.SelectAllButton.MouseButton1Click:Connect(function() if DropdownFunctions.IsHidden then return end if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end local SelectedOptions = {} for OptionName, OptionData in pairs(DropdownFunctions.OptionObjs) do if OptionData.Button.Visible then Toggle(OptionName, true) table.insert(SelectedOptions, OptionName) end end task.spawn(function() if Settings.Callback then if Settings.Multi then local Return = {} for _, Opt in ipairs(SelectedOptions) do Return[Opt] = true end Settings.Callback(Return) else Settings.Callback(SelectedOptions[1] or nil) end end end) end) end if DropdownFunctions.Elements.ClearAllButton then if not Settings.PremiumFeature then DropdownFunctions.Maid.ClearAllHover = DropdownFunctions.Elements.ClearAllButton.MouseEnter:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(DropdownFunctions.Elements.ClearAllButton, { TextTransparency = 0, BackgroundTransparency = 0.9 }) end) DropdownFunctions.Maid.ClearAllLeave = DropdownFunctions.Elements.ClearAllButton.MouseLeave:Connect(function() if DropdownFunctions.IsHidden then return end Utility:QuickTween(DropdownFunctions.Elements.ClearAllButton, { TextTransparency = 0.3, BackgroundTransparency = 0.95 }) end) end DropdownFunctions.Maid.ClearAllClick = DropdownFunctions.Elements.ClearAllButton.MouseButton1Click:Connect(function() if DropdownFunctions.IsHidden then return end if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end if Settings.Required and #DropdownFunctions.Selected <= 1 then return end for OptionName, _ in pairs(DropdownFunctions.OptionObjs) do Toggle(OptionName, false) end task.spawn(function() if Settings.Callback then if Settings.Multi then Settings.Callback({}) else Settings.Callback(nil) end end end) end) end if DropdownFunctions.Elements.EditorButton then DropdownFunctions.Maid.EditorClick = DropdownFunctions.Elements.EditorButton.MouseButton1Click:Connect(ToggleEditorSettings) end if DropdownFunctions.Elements.EditorToggles then for ToggleName, ToggleData in pairs(DropdownFunctions.Elements.EditorToggles) do if ToggleName ~= "AddBox" and ToggleName ~= "AddButton" and ToggleData.Button then DropdownFunctions.Maid["Editor" .. ToggleName .. "Click"] = ToggleData.Button.MouseButton1Click:Connect(function() HandleEditorToggle(ToggleName) end) end end if DropdownFunctions.Elements.EditorToggles.AddButton then DropdownFunctions.Maid.AddOptionClick = DropdownFunctions.Elements.EditorToggles.AddButton.MouseButton1Click:Connect(HandleAddOption) end if DropdownFunctions.Elements.EditorToggles.AddBox then DropdownFunctions.Maid.AddOptionEnter = DropdownFunctions.Elements.EditorToggles.AddBox.FocusLost:Connect(function(EnterPressed) if EnterPressed then HandleAddOption() end end) end end end function DropdownFunctions:SetToolTip(Tip) if DropdownFunctions.Maid.TooltipShow then DropdownFunctions.Maid.TooltipShow:Disconnect() DropdownFunctions.Maid.TooltipShow = nil end if DropdownFunctions.Maid.TooltipHide then DropdownFunctions.Maid.TooltipHide:Disconnect() DropdownFunctions.Maid.TooltipHide = nil end if DropdownFunctions.Elements.Dropdown:FindFirstChild("ToolTipFrame") then DropdownFunctions.Elements.Dropdown:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = DropdownFunctions.Elements.Dropdown local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize(Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() DropdownFunctions.Elements.Dropdown.ClipsDescendants = false ToolTipFrame.Visible = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end local function HideTooltip() DropdownFunctions.Elements.Dropdown.ClipsDescendants = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end if not DropdownFunctions.IsHidden then DropdownFunctions.Maid.TooltipShow = DropdownFunctions.Elements.Interact.MouseEnter:Connect(ShowTooltip) DropdownFunctions.Maid.TooltipHide = DropdownFunctions.Elements.Interact.MouseLeave:Connect(HideTooltip) end end function DropdownFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end DropdownFunctions.IsHidden = State local PreviousTransparency = 0.5 if State then if not Settings.PremiumFeature then PreviousTransparency = DropdownFunctions.Elements.DropdownName.TextTransparency end if DropdownFunctions.Dropped then ToggleDropdown() end Services.TweenService:Create(DropdownFunctions.Elements.DropdownName, TweenInfo.new(0.2), { TextTransparency = Settings.PremiumFeature and DropdownFunctions.Elements.DropdownName.TextTransparency or 0.9 }):Play() Services.TweenService:Create(DropdownFunctions.Elements.DropdownImage, TweenInfo.new(0.2), {ImageTransparency = 0.9}):Play() Services.TweenService:Create(DropdownFunctions.Elements.Dropdown, TweenInfo.new(0.2), {BackgroundTransparency = 0.99}):Play() local DropdownUIStroke = DropdownFunctions.Elements.Dropdown:FindFirstChild("UIStroke") if DropdownUIStroke then Services.TweenService:Create(DropdownUIStroke, TweenInfo.new(0.2), {Transparency = 0.98}):Play() end if DropdownFunctions.Elements.SearchIcon then Services.TweenService:Create(DropdownFunctions.Elements.SearchIcon, TweenInfo.new(0.2), {ImageTransparency = 0.9}):Play() end if DropdownFunctions.Elements.SearchBox then Services.TweenService:Create(DropdownFunctions.Elements.SearchBox, TweenInfo.new(0.2), {TextTransparency = 0.9}):Play() DropdownFunctions.Elements.SearchBox.TextEditable = false end if DropdownFunctions.Elements.SelectAllButton then Services.TweenService:Create(DropdownFunctions.Elements.SelectAllButton, TweenInfo.new(0.2), { TextTransparency = 0.9, BackgroundTransparency = 0.98 }):Play() end if DropdownFunctions.Elements.ClearAllButton then Services.TweenService:Create(DropdownFunctions.Elements.ClearAllButton, TweenInfo.new(0.2), { TextTransparency = 0.9, BackgroundTransparency = 0.98 }):Play() end if DropdownFunctions.Maid.TooltipShow then DropdownFunctions.Maid.TooltipShow:Disconnect() DropdownFunctions.Maid.TooltipShow = nil end if DropdownFunctions.Maid.TooltipHide then DropdownFunctions.Maid.TooltipHide:Disconnect() DropdownFunctions.Maid.TooltipHide = nil end else local OriginalImageTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.9 or 0.5 local OriginalSearchTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.6 or 0 Services.TweenService:Create(DropdownFunctions.Elements.DropdownName, TweenInfo.new(0.2), { TextTransparency = Settings.PremiumFeature and DropdownFunctions.Elements.DropdownName.TextTransparency or PreviousTransparency }):Play() Services.TweenService:Create(DropdownFunctions.Elements.DropdownImage, TweenInfo.new(0.2), {ImageTransparency = OriginalImageTransparency}):Play() Services.TweenService:Create(DropdownFunctions.Elements.Dropdown, TweenInfo.new(0.2), {BackgroundTransparency = 0.985}):Play() local DropdownUIStroke = DropdownFunctions.Elements.Dropdown:FindFirstChild("UIStroke") if DropdownUIStroke then Services.TweenService:Create(DropdownUIStroke, TweenInfo.new(0.2), {Transparency = 0.95}):Play() end if DropdownFunctions.Elements.SearchIcon then Services.TweenService:Create(DropdownFunctions.Elements.SearchIcon, TweenInfo.new(0.2), {ImageTransparency = OriginalSearchTransparency}):Play() end if DropdownFunctions.Elements.SearchBox then Services.TweenService:Create(DropdownFunctions.Elements.SearchBox, TweenInfo.new(0.2), {TextTransparency = 0}):Play() DropdownFunctions.Elements.SearchBox.TextEditable = not (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) end if DropdownFunctions.Elements.SelectAllButton then Services.TweenService:Create(DropdownFunctions.Elements.SelectAllButton, TweenInfo.new(0.2), { TextTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.6 or 0.3, BackgroundTransparency = 0.95 }):Play() end if DropdownFunctions.Elements.ClearAllButton then Services.TweenService:Create(DropdownFunctions.Elements.ClearAllButton, TweenInfo.new(0.2), { TextTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.6 or 0.3, BackgroundTransparency = 0.95 }):Play() end local ExistingTooltip = DropdownFunctions.Elements.Dropdown:FindFirstChild("ToolTipFrame") if ExistingTooltip then local TooltipText = ExistingTooltip:FindFirstChild("TooltipText") if TooltipText and TooltipText.Text ~= "" then self:SetToolTip(TooltipText.Text) end end end end function DropdownFunctions:GetState() return not DropdownFunctions.IsHidden end function DropdownFunctions:ReturnClass() return DropdownFunctions.Class end function DropdownFunctions:ReturnTab() return DropdownFunctions.Tab end function DropdownFunctions:UpdateName(New) DropdownFunctions.Elements.DropdownName.Text = New end function DropdownFunctions:SetVisibility(State) DropdownFunctions.Elements.Dropdown.Visible = State end function DropdownFunctions:ToggleOption(DfOption, DfToggle) if DropdownFunctions.IsHidden then return end local SelectedOptions = {} for CurrentOption, CurrentSelected in pairs(self:GetOptions()) do if CurrentSelected then table.insert(SelectedOptions, CurrentOption) end end if table.find(SelectedOptions, DfOption) and not DfToggle then Toggle(DfOption, false) local Index = table.find(SelectedOptions, DfOption) if Index then table.remove(SelectedOptions, Index) end elseif not table.find(SelectedOptions, DfOption) and DfToggle then table.insert(SelectedOptions, DfOption) Toggle(DfOption, true) end if Settings.Callback then if Settings.Multi then local Return = {} for _, Opt in ipairs(SelectedOptions) do Return[Opt] = true end Settings.Callback(Return) else Settings.Callback(SelectedOptions[1] or nil) end end end function DropdownFunctions:UpdateSelection(NewSelection) if not NewSelection or DropdownFunctions.IsHidden then return end for Option, _ in pairs(DropdownFunctions.OptionObjs) do Toggle(Option, false) end local SelectedOptions = {} if type(NewSelection) == "number" then for Option, Data in pairs(DropdownFunctions.OptionObjs) do local IsSelected = Data.Index == NewSelection if IsSelected then Toggle(Option, true) table.insert(SelectedOptions, Option) end end elseif type(NewSelection) == "string" then for Option, Data in pairs(DropdownFunctions.OptionObjs) do local IsSelected = Option == NewSelection if IsSelected then Toggle(Option, true) table.insert(SelectedOptions, Option) end end elseif type(NewSelection) == "table" then for Option, _ in pairs(DropdownFunctions.OptionObjs) do local IsSelected = table.find(NewSelection, Option) ~= nil if IsSelected then Toggle(Option, true) table.insert(SelectedOptions, Option) end end end if Settings.Callback then if Settings.Multi then local Return = {} for _, Opt in ipairs(SelectedOptions) do Return[Opt] = true end Settings.Callback(Return) else Settings.Callback(SelectedOptions[1] or nil) end end end function DropdownFunctions:InsertOptions(NewOptions) if not NewOptions or DropdownFunctions.IsHidden then return end Settings.Options = NewOptions for I, V in pairs(NewOptions) do AddOption(I, V) end end function DropdownFunctions:ClearOptions() for OptionName, OptionData in pairs(DropdownFunctions.OptionObjs) do OptionData.Button:Destroy() if DropdownFunctions.Maid["Option" .. OptionName .. "Click"] then DropdownFunctions.Maid["Option" .. OptionName .. "Click"]:Disconnect() DropdownFunctions.Maid["Option" .. OptionName .. "Click"] = nil end if DropdownFunctions.Maid["Option" .. OptionName .. "Hover"] then DropdownFunctions.Maid["Option" .. OptionName .. "Hover"]:Disconnect() DropdownFunctions.Maid["Option" .. OptionName .. "Hover"] = nil end if DropdownFunctions.Maid["Option" .. OptionName .. "Leave"] then DropdownFunctions.Maid["Option" .. OptionName .. "Leave"]:Disconnect() DropdownFunctions.Maid["Option" .. OptionName .. "Leave"] = nil end end DropdownFunctions.OptionObjs = {} DropdownFunctions.Selected = {} if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end DropdownFunctions.Elements.DropdownName.Text = Settings.Name .. "..." end function DropdownFunctions:GetOptions() local OptionsStatus = {} for Option, Data in pairs(DropdownFunctions.OptionObjs) do local IsSelected = table.find(DropdownFunctions.Selected, Option) and true or false OptionsStatus[Option] = IsSelected end return OptionsStatus end function DropdownFunctions:GetSelected() local Options = self:GetOptions() return Utility:OptionSelected(Options) end function DropdownFunctions:IsSelected(Desired) local Options = self:GetOptions() local Selected = Utility:OptionSelected(Options) if typeof(Selected) == "string" then if Desired == Selected then return true end elseif typeof(Selected) == "table" then for _, Option in pairs(Selected) do if Desired == Option then return true end end else return Selected end return false end function DropdownFunctions:RemoveOptions(Remove) if not Remove then return end for _, OptionName in ipairs(Remove) do local OptionData = DropdownFunctions.OptionObjs[OptionName] if OptionData then for I = #DropdownFunctions.Selected, 1, -1 do if DropdownFunctions.Selected[I] == OptionName then table.remove(DropdownFunctions.Selected, I) end end OptionData.Button:Destroy() if DropdownFunctions.Maid["Option" .. OptionName .. "Click"] then DropdownFunctions.Maid["Option" .. OptionName .. "Click"]:Disconnect() DropdownFunctions.Maid["Option" .. OptionName .. "Click"] = nil end if DropdownFunctions.Maid["Option" .. OptionName .. "Hover"] then DropdownFunctions.Maid["Option" .. OptionName .. "Hover"]:Disconnect() DropdownFunctions.Maid["Option" .. OptionName .. "Hover"] = nil end if DropdownFunctions.Maid["Option" .. OptionName .. "Leave"] then DropdownFunctions.Maid["Option" .. OptionName .. "Leave"]:Disconnect() DropdownFunctions.Maid["Option" .. OptionName .. "Leave"] = nil end DropdownFunctions.OptionObjs[OptionName] = nil end end if DropdownFunctions.Dropped then DropdownFunctions.Elements.Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end if #DropdownFunctions.Selected > 0 then DropdownFunctions.Elements.DropdownName.Text = Settings.Name .. " • " .. table.concat(DropdownFunctions.Selected, ", ") else DropdownFunctions.Elements.DropdownName.Text = Settings.Name .. "..." end end function DropdownFunctions:ReplaceOptions(NewOptions) if not NewOptions then return end self:ClearOptions() self:InsertOptions(NewOptions) end function DropdownFunctions:IsOption(OptionName) if not OptionName then return false end return DropdownFunctions.OptionObjs[OptionName] ~= nil end function DropdownFunctions:Destroy() for ConnectionName, Connection in pairs(DropdownFunctions.Maid) do if type(Connection) == "userdata" and Connection.Disconnect then Connection:Disconnect() end end table.clear(DropdownFunctions.Maid) for _, OptionData in pairs(DropdownFunctions.OptionObjs) do if OptionData.Button then OptionData.Button:Destroy() end end if DropdownFunctions.Elements.Dropdown then DropdownFunctions.Elements.Dropdown:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end DropdownFunctions.Elements = CreateElements() CreateSearchBox() CreateEditor() CreateDropdownEditor() SetupConnections() if Settings.Options then for I, V in pairs(Settings.Options) do AddOption(I, V) end end if Settings.Hidden then if typeof(Settings.Hidden) == "table" then DropdownFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else DropdownFunctions:SetHidden(Settings.Hidden) end end if Settings.ToolTip then DropdownFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then DropdownFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then DropdownFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then DropdownFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Flag then WaveLibrary.Options[Flag] = DropdownFunctions end return DropdownFunctions end end end R["Wave/UserInterface/Components/Header.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Header(Settings, Flag) local HeaderFunctions = { Settings = Settings } local Header = Instance.new("Frame") Header.Name = "Header" Header.AutomaticSize = Enum.AutomaticSize.Y Header.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Header.BackgroundTransparency = 1 Header.BorderColor3 = Color3.fromRGB(0, 0, 0) Header.BorderSizePixel = 0 Header.LayoutOrder = 0 Header.Size = UDim2.fromScale(1, 0) Header.Parent = Section local UIPadding = Instance.new("UIPadding") UIPadding.Name = "UIPadding" UIPadding.PaddingBottom = UDim.new(0, 5) UIPadding.Parent = Header local HeaderText = Instance.new("TextLabel") HeaderText.Name = "HeaderText" HeaderText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) HeaderText.RichText = true HeaderText.Text = HeaderFunctions.Settings.Text or HeaderFunctions.Settings.Name HeaderText.TextColor3 = Color3.fromRGB(255, 255, 255) HeaderText.TextSize = 16 HeaderText.TextTransparency = 0.3 HeaderText.TextWrapped = true HeaderText.TextXAlignment = Enum.TextXAlignment.Left HeaderText.AutomaticSize = Enum.AutomaticSize.Y HeaderText.BackgroundColor3 = Color3.fromRGB(255, 255, 255) HeaderText.BackgroundTransparency = 1 HeaderText.BorderColor3 = Color3.fromRGB(0, 0, 0) HeaderText.BorderSizePixel = 0 HeaderText.Size = UDim2.fromScale(1, 0) HeaderText.Parent = Header function HeaderFunctions:UpdateName(New) HeaderText.Text = New end function HeaderFunctions:SetVisibility(State) Header.Visible = State end if Flag then WaveLibrary.Options[Flag] = HeaderFunctions end return HeaderFunctions end end end R["Wave/UserInterface/Components/Image.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end function SectionFunctions:Image(Settings, Flag) Settings = Settings or {} if type(Settings) == "string" then Settings = { Image = Settings } end local ImageFunctions = { Settings = Settings, Class = "Image", Tab = Requirements.TabName } local Holder = Instance.new("Frame") Holder.Name = "Image" Holder.BackgroundColor3 = ThemeAttr("DropdownColor", Color3.fromRGB(20, 20, 26)) Holder.BackgroundTransparency = Settings.Image and 1 or 0.4 Holder.BorderSizePixel = 0 Holder.Size = UDim2.new(1, 0, 0, Settings.Height or 140) Holder:SetAttribute("NoApplyTheme", true) Holder.Parent = Section local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, Settings.CornerRadius or 10) Corner.Parent = Holder local Image = Instance.new("ImageLabel") Image.Name = "Result_Image" Image.BackgroundTransparency = 1 Image.Image = Settings.Image or Settings.Url or "" Image.ScaleType = Settings.ScaleType or Enum.ScaleType.Crop Image.Size = UDim2.fromScale(1, 1) Image:SetAttribute("NoApplyTheme", true) Image.Parent = Holder local ImageCorner = Instance.new("UICorner") ImageCorner.CornerRadius = UDim.new(0, Settings.CornerRadius or 10) ImageCorner.Parent = Image if Settings.AspectRatio then local Ratio = Instance.new("UIAspectRatioConstraint") Ratio.AspectRatio = Settings.AspectRatio Ratio.DominantAxis = Enum.DominantAxis.Width Ratio.Parent = Holder end if Settings.Transparency then Image.ImageTransparency = Settings.Transparency end local Stroke = Instance.new("UIStroke") Stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border Stroke.Color = ThemeAttr("BorderColor", Color3.fromRGB(255, 255, 255)) Stroke.Transparency = 0.88 Stroke.Parent = Holder function ImageFunctions:SetImage(New) Image.Image = New Holder.BackgroundTransparency = 1 return self end ImageFunctions.SetValue = ImageFunctions.SetImage function ImageFunctions:SetVisibility(State) Holder.Visible = State end function ImageFunctions:ReturnClass() return "Image" end function ImageFunctions:Destroy() Holder:Destroy() end if Flag then WaveLibrary.Options[Flag] = ImageFunctions end return ImageFunctions end end end R["Wave/UserInterface/Components/Input.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Input(Settings, Flag) local InputFunctions = { Settings = Settings, IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Class = "Input" } if not Flag then Flag = "WriteHere" end if Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(InputFunctions.Settings.Name, " ", "_") end local Input = Instance.new("Frame") Input.Name = "Input" Input.AutomaticSize = Enum.AutomaticSize.Y Input.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Input.BackgroundTransparency = 1 Input.BorderColor3 = Color3.fromRGB(0, 0, 0) Input.BorderSizePixel = 0 Input.Size = UDim2.new(1, 0, 0, 38) Input.Parent = Section local InputName = Instance.new("TextLabel") InputName.Name = "InputName" InputName.FontFace = Font.new(Assets.InterFont) InputName.Text = InputFunctions.Settings.Name InputName.RichText = true InputName.TextColor3 = Color3.fromRGB(255, 255, 255) InputName.TextSize = 13 InputName.TextTransparency = 0.5 InputName.TextTruncate = Enum.TextTruncate.AtEnd InputName.TextXAlignment = Enum.TextXAlignment.Left InputName.TextYAlignment = Enum.TextYAlignment.Top InputName.AnchorPoint = Vector2.new(0, 0.5) InputName.AutomaticSize = Enum.AutomaticSize.XY InputName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) InputName.BackgroundTransparency = 1 InputName.BorderColor3 = Color3.fromRGB(0, 0, 0) InputName.BorderSizePixel = 0 InputName.Position = UDim2.fromScale(0, 0.5) InputName.Parent = Input if Settings.PremiumFeature then InputName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }) PremiumGradient.Rotation = 0 PremiumGradient.Parent = InputName end local InputBox = Instance.new("TextBox") InputBox.Name = "InputBox" InputBox.FontFace = Font.new(Assets.InterFont) InputBox.Text = "Hello world!" InputBox.TextColor3 = Color3.fromRGB(255, 255, 255) InputBox.TextSize = 12 InputBox.TextTransparency = 0.1 InputBox.AnchorPoint = Vector2.new(1, 0.5) InputBox.AutomaticSize = Enum.AutomaticSize.X InputBox.BackgroundColor3 = Color3.fromRGB(255, 255, 255) InputBox.BackgroundTransparency = 0.95 InputBox.BorderColor3 = Color3.fromRGB(0, 0, 0) InputBox.BorderSizePixel = 0 InputBox.ClipsDescendants = true InputBox.LayoutOrder = 1 InputBox.Position = UDim2.fromScale(1, 0.5) InputBox.Size = UDim2.fromOffset(21, 21) InputBox.TextXAlignment = Enum.TextXAlignment.Right local IsHidden = false local PreviousNameTransparency = 0.5 local PreviousBoxTransparency = 0.1 if not Settings.PremiumFeature then InputBox.MouseEnter:Connect(function() if IsHidden then return end Utility:QuickTween(InputName, { TextTransparency = 0 }) end) InputBox.MouseLeave:Connect(function() if IsHidden then return end Utility:QuickTween(InputName, { TextTransparency = PreviousNameTransparency }) end) end if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then InputBox.TextEditable = false InputBox.ClearTextOnFocus = false InputBox.TextTransparency = 0.8 end local InputBoxUICorner = Instance.new("UICorner") InputBoxUICorner.Name = "InputBoxUICorner" InputBoxUICorner.CornerRadius = UDim.new(0, 2) InputBoxUICorner.Parent = InputBox local InputBoxUIStroke = Instance.new("UIStroke") InputBoxUIStroke.Name = "InputBoxUIStroke" InputBoxUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border InputBoxUIStroke.Color = Color3.fromRGB(255, 255, 255) InputBoxUIStroke.Transparency = 0.9 InputBoxUIStroke.Parent = InputBox local InputBoxUIPadding = Instance.new("UIPadding") InputBoxUIPadding.Name = "InputBoxUIPadding" InputBoxUIPadding.PaddingLeft = UDim.new(0, 5) InputBoxUIPadding.PaddingRight = UDim.new(0, 5) InputBoxUIPadding.Parent = InputBox local InputBoxUISizeConstraint = Instance.new("UISizeConstraint") InputBoxUISizeConstraint.Name = "InputBoxUISizeConstraint" InputBoxUISizeConstraint.Parent = InputBox InputBox.Parent = Input local InputElement = Input local InputBoxElement = InputBox local InputNameElement = InputName local Constraint = InputBoxUISizeConstraint local function ApplyCharacterLimit(Value) if InputFunctions.Settings.CharacterLimit then return Value:sub(1, InputFunctions.Settings.CharacterLimit) end return Value end local CharacterSubs = { All = function(Value) return ApplyCharacterLimit(Value) end, Numeric = function(Value) local Result = Value:match("^%-?%d*$") and Value or Value:gsub("[^%d-]", ""):gsub("(%-)", function(Match, Pos) return Pos == 1 and Match or "" end) return ApplyCharacterLimit(Result) end, Alphabetic = function(Value) return ApplyCharacterLimit(Value:gsub("[^a-zA-Z ]", "")) end, AlphaNumeric = function(Value) return ApplyCharacterLimit(Value:gsub("[^a-zA-Z0-9]", "")) end, } local AcceptedCharacters if type(InputFunctions.Settings.AcceptedCharacters) == "function" then AcceptedCharacters = InputFunctions.Settings.AcceptedCharacters else AcceptedCharacters = CharacterSubs[InputFunctions.Settings.AcceptedCharacters] or CharacterSubs.All end InputBoxElement.AutomaticSize = Enum.AutomaticSize.X local function CheckSize() local NameWidth = InputNameElement.AbsoluteSize.X local TotalWidth = InputElement.AbsoluteSize.X local MaxWidth = (TotalWidth - NameWidth - 20) / BaseUIScale.Scale Constraint.MaxSize = Vector2.new(MaxWidth, 9e9) end CheckSize() InputNameElement:GetPropertyChangedSignal("AbsoluteSize"):Connect(CheckSize) InputBoxElement.FocusLost:Connect(function() if IsHidden then return end local InputText = InputBoxElement.Text local FilteredText = AcceptedCharacters(InputText) InputBoxElement.Text = FilteredText task.spawn(function() if InputFunctions.Settings.Callback then InputFunctions.Settings.Callback(FilteredText) end end) end) InputBoxElement.Text = InputFunctions.Settings.Default or "" InputBoxElement.PlaceholderText = InputFunctions.Settings.Placeholder or "" InputBoxElement:GetPropertyChangedSignal("Text"):Connect(function() if IsHidden then return end InputBoxElement.Text = AcceptedCharacters(InputBoxElement.Text) if InputFunctions.Settings.OnChanged then InputFunctions.Settings.OnChanged(InputBoxElement.Text) end InputFunctions.Text = InputBoxElement.Text end) function InputFunctions:SetToolTip(Tip) if Input:FindFirstChild("ToolTipFrame") then Input:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = Input local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Name = "TooltipText" TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.TextWrapped = false TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize( Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge) ) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() ToolTipFrame.Visible = true ToolTipFrame.BackgroundTransparency = 1 TooltipText.TextTransparency = 1 Services.TweenService:Create( ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1} ):Play() Services.TweenService:Create( TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0} ):Play() Services.TweenService:Create( TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8} ):Play() end local function HideTooltip() Services.TweenService:Create( ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1} ):Play() Services.TweenService:Create( TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1} ):Play() Services.TweenService:Create( TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1} ):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end InputBox.MouseEnter:Connect(ShowTooltip) InputBox.MouseLeave:Connect(HideTooltip) end function InputFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end IsHidden = State if State then if not Settings.PremiumFeature then PreviousNameTransparency = InputName.TextTransparency end PreviousBoxTransparency = InputBox.TextTransparency Services.TweenService:Create( InputBox, TweenInfo.new(0.2), { TextTransparency = 0.9, BackgroundTransparency = 0.99 } ):Play() Services.TweenService:Create( InputBoxUIStroke, TweenInfo.new(0.2), { Transparency = 0.95 } ):Play() if not Settings.PremiumFeature then Services.TweenService:Create( InputName, TweenInfo.new(0.2), { TextTransparency = 0.9 } ):Play() end InputBox.TextEditable = false else local originalBoxTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.8 or 0.1 local boxEditable = not (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) Services.TweenService:Create( InputBox, TweenInfo.new(0.2), { TextTransparency = originalBoxTransparency, BackgroundTransparency = 0.95 } ):Play() Services.TweenService:Create( InputBoxUIStroke, TweenInfo.new(0.2), { Transparency = 0.9 } ):Play() if not Settings.PremiumFeature then Services.TweenService:Create( InputName, TweenInfo.new(0.2), { TextTransparency = PreviousNameTransparency } ):Play() end InputBox.TextEditable = boxEditable end end function InputFunctions:GetState() return not IsHidden end function InputFunctions:ReturnClass() return InputFunctions.Class end function InputFunctions:ReturnTab() return InputFunctions.Tab end function InputFunctions:ReturnSettings() return Settings end function InputFunctions:UpdateName(Name) InputName.Text = Name end function InputFunctions:SetVisibility(State) Input.Visible = State end function InputFunctions:GetInput() return InputBox.Text end function InputFunctions:UpdatePlaceholder(Placeholder) InputBox.PlaceholderText = Placeholder end function InputFunctions:UpdateText(Text) local FilteredText = AcceptedCharacters(Text) InputBox.Text = FilteredText InputFunctions.Text = FilteredText task.spawn(function() if InputFunctions.Settings.Callback then InputFunctions.Settings.Callback(FilteredText) end end) end function InputFunctions:Destroy() if Input then Input:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end if InputFunctions.Settings.Hidden then if typeof(InputFunctions.Settings.Hidden) == "table" then InputFunctions:SetHidden(InputFunctions.Settings.Hidden[1], InputFunctions.Settings.Hidden[2]) else InputFunctions:SetHidden(InputFunctions.Settings.Hidden) end end if InputFunctions.Settings.ToolTip then InputFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then InputFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then InputFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then InputFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Flag then WaveLibrary.Options[Flag] = InputFunctions end return InputFunctions end end end R["Wave/UserInterface/Components/Keybind.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Keybind(Settings, Flag) local KeybindFunctions = { Settings = Settings, IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Class = "Keybind" } if not Flag then Flag = "WriteHere" end if Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(KeybindFunctions.Settings.Name, " ", "_") end local Keybind = Instance.new("Frame") Keybind.Name = "Keybind" Keybind.AutomaticSize = Enum.AutomaticSize.Y Keybind.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Keybind.BackgroundTransparency = 1 Keybind.BorderColor3 = Color3.fromRGB(0, 0, 0) Keybind.BorderSizePixel = 0 Keybind.Size = UDim2.new(1, 0, 0, 38) Keybind.Parent = Section local KeybindName = Instance.new("TextLabel") KeybindName.Name = "KeybindName" KeybindName.FontFace = Font.new(Assets.InterFont) KeybindName.Text = KeybindFunctions.Settings.Name KeybindName.RichText = true KeybindName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") KeybindName.TextSize = 13 KeybindName.TextTransparency = 0.5 KeybindName.TextTruncate = Enum.TextTruncate.AtEnd KeybindName.TextXAlignment = Enum.TextXAlignment.Left KeybindName.TextYAlignment = Enum.TextYAlignment.Top KeybindName.AnchorPoint = Vector2.new(0, 0.5) KeybindName.AutomaticSize = Enum.AutomaticSize.XY KeybindName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) KeybindName.BackgroundTransparency = 1 KeybindName.BorderColor3 = Color3.fromRGB(0, 0, 0) KeybindName.BorderSizePixel = 0 KeybindName.Position = UDim2.fromScale(0, 0.5) KeybindName.Parent = Keybind if Settings.PremiumFeature then KeybindName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }) PremiumGradient.Rotation = 0 PremiumGradient.Parent = KeybindName end local BinderBox = Instance.new("TextBox") BinderBox.Name = "BinderBox" BinderBox.CursorPosition = -1 BinderBox.FontFace = Font.new(Assets.InterFont) BinderBox.PlaceholderText = "..." BinderBox.Text = "" BinderBox.TextColor3 = Color3.fromRGB(255, 255, 255) BinderBox.TextSize = 12 BinderBox.TextTransparency = 0.1 BinderBox.AnchorPoint = Vector2.new(1, 0.5) BinderBox.AutomaticSize = Enum.AutomaticSize.X BinderBox.BackgroundColor3 = Color3.fromRGB(255, 255, 255) BinderBox.BackgroundTransparency = 0.95 BinderBox.BorderColor3 = Color3.fromRGB(0, 0, 0) BinderBox.BorderSizePixel = 0 BinderBox.ClipsDescendants = true BinderBox.LayoutOrder = 1 BinderBox.Position = UDim2.fromScale(1, 0.5) BinderBox.Size = UDim2.fromOffset(21, 21) if not Settings.PremiumFeature then BinderBox.MouseEnter:Connect(function() Utility:QuickTween(KeybindName, { TextTransparency = 0 }) end) BinderBox.MouseLeave:Connect(function() Utility:QuickTween(KeybindName, { TextTransparency = 0.5 }) end) end local BinderBoxUICorner = Instance.new("UICorner") BinderBoxUICorner.Name = "BinderBoxUICorner" BinderBoxUICorner.CornerRadius = UDim.new(0, 4) BinderBoxUICorner.Parent = BinderBox local BinderBoxUIStroke = Instance.new("UIStroke") BinderBoxUIStroke.Name = "BinderBoxUIStroke" BinderBoxUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border BinderBoxUIStroke.Color = Color3.fromRGB(255, 255, 255) BinderBoxUIStroke.Transparency = 0.9 BinderBoxUIStroke.Parent = BinderBox local BinderBoxUIPadding = Instance.new("UIPadding") BinderBoxUIPadding.Name = "BinderBoxUIPadding" BinderBoxUIPadding.PaddingLeft = UDim.new(0, 5) BinderBoxUIPadding.PaddingRight = UDim.new(0, 5) BinderBoxUIPadding.Parent = BinderBox local BinderBoxUISizeConstraint = Instance.new("UISizeConstraint") BinderBoxUISizeConstraint.Name = "BinderBoxUISizeConstraint" BinderBoxUISizeConstraint.Parent = BinderBox BinderBox.Parent = Keybind local Focused local IsBinding = false local Reset = false local Binded = KeybindFunctions.Settings.Default local function ResetFocusState() Focused = false IsBinding = false BinderBox:ReleaseFocus() end if Binded then BinderBox.Text = Binded.Name end BinderBox.Focused:Connect(function() Focused = true end) BinderBox.FocusLost:Connect(function() Focused = false end) Services.UserInputService.InputBegan:Connect(function(Inp) if Focused and not IsBinding then IsBinding = true local Event Event = Services.UserInputService.InputBegan:Connect(function(Input) if KeybindFunctions.Settings.Blacklist and (table.find(KeybindFunctions.KeybindFunctions.Settings.Blacklist, Input.KeyCode) or table.find(KeybindFunctions.Settings.Blacklist, Input.UserInputType)) then BinderBox:ReleaseFocus() ResetFocusState() Event:Disconnect() return end if Input.UserInputType == Enum.UserInputType.Keyboard then Binded = Input.KeyCode BinderBox.Text = Input.KeyCode.Name elseif Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.MouseButton2 then Binded = Input.UserInputType BinderBox.Text = Input.UserInputType.Name end if KeybindFunctions.Settings.OnBinded then KeybindFunctions.Settings.OnBinded(Binded) end Reset = true ResetFocusState() Event:Disconnect() end) else if not Reset and (Inp.KeyCode == Binded or Inp.UserInputType == Binded) then if KeybindFunctions.Settings.Callback then KeybindFunctions.Settings.Callback(Binded) end if KeybindFunctions.Settings.OnBindHeld then KeybindFunctions.Settings.OnBindHeld(true, Binded) end else Reset = false end end end) Services.UserInputService.InputEnded:Connect(function(Inp) if not Focused and not IsBinding then if Inp.KeyCode == Binded or Inp.UserInputType == Binded then if Settings.OnBindHeld then Settings.OnBindHeld(false, Binded) end end end end) function KeybindFunctions:Bind(Key) Binded = Key BinderBox.Text = Key.Name if KeybindFunctions.Settings.Callback then KeybindFunctions.Settings.Callback(Binded) end end function KeybindFunctions:Unbind() Binded = nil BinderBox.Text = "" end function KeybindFunctions:ReturnClass() return KeybindFunctions.Class end function KeybindFunctions:ReturnTab() return KeybindFunctions.Tab end function KeybindFunctions:GetBind() return Binded end function KeybindFunctions:UpdateName(Name) KeybindName.Text = Name end function KeybindFunctions:SetVisibility(State) Keybind.Visible = State end function KeybindFunctions:Destroy() if Keybind then Keybind:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end if Flag then WaveLibrary.Options[Flag] = KeybindFunctions end return KeybindFunctions end end end R["Wave/UserInterface/Components/Label.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Label(Settings, Flag) local LabelFunctions = { Settings = Settings } local Label = Instance.new("Frame") Label.Name = "Label" Label.AutomaticSize = Enum.AutomaticSize.Y Label.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Label.BackgroundTransparency = 1 Label.BorderColor3 = Color3.fromRGB(0, 0, 0) Label.BorderSizePixel = 0 Label.Size = UDim2.new(1, 0, 0, 38) Label.Parent = Section local LabelText = Instance.new("TextLabel") LabelText.Name = "LabelText" LabelText.FontFace = Font.new(Assets.InterFont) LabelText.RichText = true LabelText.Text = LabelFunctions.Settings.Text or LabelFunctions.Settings.Name LabelText.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") LabelText.TextSize = 13 LabelText.TextTransparency = 0.5 LabelText.TextWrapped = true LabelText.TextXAlignment = Enum.TextXAlignment.Left LabelText.AutomaticSize = Enum.AutomaticSize.Y LabelText.BackgroundColor3 = Color3.fromRGB(255, 255, 255) LabelText.BackgroundTransparency = 1 LabelText.BorderColor3 = Color3.fromRGB(0, 0, 0) LabelText.BorderSizePixel = 0 LabelText.Size = UDim2.fromScale(1, 1) LabelText.Parent = Label function LabelFunctions:UpdateName(New) LabelText.Text = New end function LabelFunctions:SetVisibility(State) Label.Visible = State end if Flag then WaveLibrary.Options[Flag] = LabelFunctions end return LabelFunctions end end end R["Wave/UserInterface/Components/Paragraph.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Paragraph(Settings, Flag) local ParagraphFunctions = { Settings = Settings } local Paragraph = Instance.new("Frame") Paragraph.Name = "Paragraph" Paragraph.AutomaticSize = Enum.AutomaticSize.Y Paragraph.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Paragraph.BackgroundTransparency = 1 Paragraph.BorderColor3 = Color3.fromRGB(0, 0, 0) Paragraph.BorderSizePixel = 0 Paragraph.Size = UDim2.new(1, 0, 0, 38) Paragraph.Parent = Section local ParagraphHeader = Instance.new("TextLabel") ParagraphHeader.Name = "ParagraphHeader" ParagraphHeader.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) ParagraphHeader.RichText = true ParagraphHeader.Text = ParagraphFunctions.Settings.Header ParagraphHeader.TextColor3 = Color3.fromRGB(255, 255, 255) ParagraphHeader.TextSize = 15 ParagraphHeader.TextTransparency = 0.4 ParagraphHeader.TextWrapped = true ParagraphHeader.TextXAlignment = Enum.TextXAlignment.Left ParagraphHeader.AutomaticSize = Enum.AutomaticSize.Y ParagraphHeader.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ParagraphHeader.BackgroundTransparency = 1 ParagraphHeader.BorderColor3 = Color3.fromRGB(0, 0, 0) ParagraphHeader.BorderSizePixel = 0 ParagraphHeader.Size = UDim2.fromScale(1, 0) ParagraphHeader.Parent = Paragraph local UIListLayout = Instance.new("UIListLayout") UIListLayout.Name = "UIListLayout" UIListLayout.Padding = UDim.new(0, 5) UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout.Parent = Paragraph local ParagraphBody = Instance.new("TextLabel") ParagraphBody.Name = "ParagraphBody" ParagraphBody.FontFace = Font.new(Assets.InterFont) ParagraphBody.RichText = true ParagraphBody.Text = ParagraphFunctions.Settings.Body ParagraphBody.TextColor3 = Color3.fromRGB(255, 255, 255) ParagraphBody.TextSize = 13 ParagraphBody.TextTransparency = 0.5 ParagraphBody.TextWrapped = true ParagraphBody.TextXAlignment = Enum.TextXAlignment.Left ParagraphBody.AutomaticSize = Enum.AutomaticSize.Y ParagraphBody.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ParagraphBody.BackgroundTransparency = 1 ParagraphBody.BorderColor3 = Color3.fromRGB(0, 0, 0) ParagraphBody.BorderSizePixel = 0 ParagraphBody.LayoutOrder = 1 ParagraphBody.Size = UDim2.fromScale(1, 0) ParagraphBody.Parent = Paragraph function ParagraphFunctions:UpdateHeader(New) ParagraphHeader.Text = New end function ParagraphFunctions:UpdateBody(New) ParagraphBody.Text = New end function ParagraphFunctions:SetVisibility(State) Paragraph.Visible = State end if Flag then WaveLibrary.Options[Flag] = ParagraphFunctions end return ParagraphFunctions end end end R["Wave/UserInterface/Components/PlayerDropdown.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:PlayerDropdown(Settings, Flag) local DropdownFunctions = { Settings = Settings, IgnoreConfig = false, Class = "PlayerDropdown", Tab = Requirements.TabName, Value = nil } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(DropdownFunctions.Settings.Name, " ", "_") end local Selected = {} local OptionObjs = {} local PlayerConnections = {} local Dropped = false local DB = false local IsHidden = false local PreviousTransparency = 0.5 local TooltipConnections = {} local Dropdown = Instance.new("Frame") Dropdown.Name = "PlayerDropdown" Dropdown.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Dropdown.BackgroundTransparency = 0.985 Dropdown.BorderColor3 = Color3.fromRGB(0, 0, 0) Dropdown.BorderSizePixel = 0 Dropdown.Size = UDim2.new(1, 0, 0, 38) Dropdown.Parent = Section Dropdown.ClipsDescendants = true local DropdownUIPadding = Instance.new("UIPadding") DropdownUIPadding.Name = "DropdownUIPadding" DropdownUIPadding.PaddingLeft = UDim.new(0, 15) DropdownUIPadding.PaddingRight = UDim.new(0, 15) DropdownUIPadding.Parent = Dropdown local Interact = Instance.new("TextButton") Interact.Name = "Interact" Interact.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Interact.Text = "" Interact.TextColor3 = Color3.fromRGB(0, 0, 0) Interact.TextSize = 14 Interact.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Interact.BackgroundTransparency = 1 Interact.BorderColor3 = Color3.fromRGB(0, 0, 0) Interact.BorderSizePixel = 0 Interact.Size = UDim2.new(1, 0, 0, 38) Interact.Parent = Dropdown local DropdownName = Instance.new("TextLabel") DropdownName.Name = "DropdownName" DropdownName.FontFace = Font.new(Assets.InterFont) DropdownName.Text = Settings.Default and (DropdownFunctions.Settings.Name .. " • " .. table.concat(Selected, ", ")) or (DropdownFunctions.Settings.Name .. "...") DropdownName.RichText = true DropdownName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") DropdownName.TextSize = 13 DropdownName.TextTransparency = 0.5 DropdownName.TextTruncate = Enum.TextTruncate.SplitWord DropdownName.TextXAlignment = Enum.TextXAlignment.Left DropdownName.AutomaticSize = Enum.AutomaticSize.Y DropdownName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownName.BackgroundTransparency = 1 DropdownName.BorderColor3 = Color3.fromRGB(0, 0, 0) DropdownName.BorderSizePixel = 0 DropdownName.Size = UDim2.new(1, -20, 0, 38) DropdownName.Parent = Dropdown if Settings.PremiumFeature then DropdownName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Rotation = 0 PremiumGradient.Parent = DropdownName end local DropdownUIStroke = Instance.new("UIStroke") DropdownUIStroke.Name = "DropdownUIStroke" DropdownUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border DropdownUIStroke.Color = Color3.fromRGB(255, 255, 255) DropdownUIStroke.Transparency = 0.95 DropdownUIStroke.Parent = Dropdown local DropdownUICorner = Instance.new("UICorner") DropdownUICorner.Name = "DropdownUICorner" DropdownUICorner.CornerRadius = UDim.new(0, 6) DropdownUICorner.Parent = Dropdown local DropdownImage = Instance.new("ImageLabel") DropdownImage.Name = "DropdownImage" DropdownImage.Image = Assets.Dropdown DropdownImage.ImageTransparency = 0.5 DropdownImage.AnchorPoint = Vector2.new(1, 0) DropdownImage.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownImage.BackgroundTransparency = 1 DropdownImage.BorderColor3 = Color3.fromRGB(0, 0, 0) DropdownImage.BorderSizePixel = 0 DropdownImage.Position = UDim2.new(1, 0, 0, 12) DropdownImage.Size = UDim2.fromOffset(14, 14) DropdownImage.Parent = Dropdown -- Inner option list is a ScrollingFrame below the 38px header so long -- player lists scroll inside the dropdown on mobile (see Dropdown.lua). local DropdownFrame = Instance.new("ScrollingFrame") DropdownFrame.Name = "DropdownFrame" DropdownFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) DropdownFrame.BackgroundTransparency = 1 DropdownFrame.BorderColor3 = Color3.fromRGB(0, 0, 0) DropdownFrame.BorderSizePixel = 0 DropdownFrame.ClipsDescendants = true DropdownFrame.Position = UDim2.new(0, 0, 0, 38) DropdownFrame.Size = UDim2.new(1, 0, 1, -38) DropdownFrame.Visible = false DropdownFrame.Active = true DropdownFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y DropdownFrame.CanvasSize = UDim2.new() DropdownFrame.ScrollingDirection = Enum.ScrollingDirection.Y DropdownFrame.ScrollBarThickness = 3 DropdownFrame.ScrollBarImageColor3 = Color3.fromRGB(255, 255, 255) DropdownFrame.ScrollBarImageTransparency = 0.5 DropdownFrame.BottomImage = "" DropdownFrame.TopImage = "" local DropdownFrameUIPadding = Instance.new("UIPadding") DropdownFrameUIPadding.Name = "DropdownFrameUIPadding" DropdownFrameUIPadding.PaddingTop = UDim.new(0, 4) DropdownFrameUIPadding.PaddingBottom = UDim.new(0, 10) DropdownFrameUIPadding.Parent = DropdownFrame local DropdownFrameUIListLayout = Instance.new("UIListLayout") DropdownFrameUIListLayout.Name = "DropdownFrameUIListLayout" DropdownFrameUIListLayout.Padding = UDim.new(0, 5) DropdownFrameUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder DropdownFrameUIListLayout.Parent = DropdownFrame local Search = Instance.new("Frame") Search.Name = "Search" Search.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Search.BackgroundTransparency = 0.95 Search.BorderColor3 = Color3.fromRGB(0, 0, 0) Search.BorderSizePixel = 0 Search.LayoutOrder = -1 Search.Size = UDim2.new(1, 0, 0, 30) Search.Parent = DropdownFrame Search.Visible = DropdownFunctions.Settings.Search ~= false local SectionUICorner = Instance.new("UICorner") SectionUICorner.Name = "SectionUICorner" SectionUICorner.Parent = Search local SearchIcon = Instance.new("ImageLabel") SearchIcon.Name = "SearchIcon" SearchIcon.Image = Assets.SearchIcon SearchIcon.ImageColor3 = Color3.fromRGB(180, 180, 180) SearchIcon.AnchorPoint = Vector2.new(0, 0.5) SearchIcon.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SearchIcon.BackgroundTransparency = 1 SearchIcon.BorderColor3 = Color3.fromRGB(0, 0, 0) SearchIcon.BorderSizePixel = 0 SearchIcon.Position = UDim2.fromScale(0, 0.5) SearchIcon.Size = UDim2.fromOffset(12, 12) SearchIcon.Parent = Search if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then SearchIcon.ImageTransparency = 0.6 DropdownImage.ImageTransparency = 0.9 end local UIPadding = Instance.new("UIPadding") UIPadding.Name = "UIPadding" UIPadding.PaddingLeft = UDim.new(0, 15) UIPadding.Parent = Search local SearchBox = Instance.new("TextBox") SearchBox.Name = "SearchBox" SearchBox.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) SearchBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150) SearchBox.PlaceholderText = "Search players..." SearchBox.Text = "" SearchBox.TextColor3 = Color3.fromRGB(200, 200, 200) SearchBox.TextSize = 14 SearchBox.TextXAlignment = Enum.TextXAlignment.Left SearchBox.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SearchBox.BackgroundTransparency = 1 SearchBox.BorderColor3 = Color3.fromRGB(0, 0, 0) SearchBox.BorderSizePixel = 0 SearchBox.Size = UDim2.fromScale(1, 1) local UIPadding1 = Instance.new("UIPadding") UIPadding1.Name = "UIPadding" UIPadding1.PaddingLeft = UDim.new(0, 23) UIPadding1.Parent = SearchBox SearchBox.Parent = Search DropdownFrame.Parent = Dropdown local TweenSettings = { Duration = 0.2, EasingStyle = Enum.EasingStyle.Quint, TransparencyIn = 0, TransparencyOut = 0.5, CheckSizeIncrease = 12, CheckSizeDecrease = -13, WaitTime = 1 } local DROPDOWN_HEADER_HEIGHT = 38 local MAX_OPTIONS_HEIGHT = 200 local function CalculateDropdownSize() local TotalHeight = 0 local VisibleChildrenCount = 0 local Padding = DropdownFrame:FindFirstChild("DropdownFrameUIPadding") local PaddingOffset = Padding and (Padding.PaddingTop.Offset + Padding.PaddingBottom.Offset) or 0 for _, V in pairs(DropdownFrame:GetChildren()) do if not V:IsA("UIComponent") and V.Visible then TotalHeight += V.AbsoluteSize.Y VisibleChildrenCount += 1 end end local Spacing = DropdownFrameUIListLayout.Padding.Offset * math.max(0, VisibleChildrenCount - 1) local OptionsHeight = TotalHeight + Spacing + PaddingOffset if OptionsHeight > MAX_OPTIONS_HEIGHT then OptionsHeight = MAX_OPTIONS_HEIGHT end return DROPDOWN_HEADER_HEIGHT + OptionsHeight end local function FindOption() local SearchTerm = SearchBox.Text:lower() for _, V in pairs(OptionObjs) do local OptionText = V.NameLabel.Text:lower() local IsVisible = string.find(OptionText, SearchTerm) ~= nil V.Button.Visible = IsVisible end if Dropped then Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end SearchBox:GetPropertyChangedSignal("Text"):Connect(FindOption) local function Toggle(OptionName, State) local Option = OptionObjs[OptionName] if not Option then return end local Checkmark = Option.Checkmark local OptionNameLabel = Option.NameLabel if State then if DropdownFunctions.Settings.Multi then if not table.find(Selected, OptionName) then table.insert(Selected, OptionName) DropdownFunctions.Value = Selected end else for Name, Opt in pairs(OptionObjs) do if Name ~= OptionName then Utility:PropertyTween(Opt.Checkmark, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { Size = UDim2.new(Opt.Checkmark.Size.X.Scale, TweenSettings.CheckSizeDecrease, Opt.Checkmark.Size.Y.Scale, Opt.Checkmark.Size.Y.Offset) }):Play() Utility:PropertyTween(Opt.NameLabel, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { TextTransparency = TweenSettings.TransparencyOut }):Play() Opt.Checkmark.TextTransparency = 1 end end Selected = {OptionName} DropdownFunctions.Value = Selected[1] end Utility:PropertyTween(Checkmark, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { Size = UDim2.new(Checkmark.Size.X.Scale, TweenSettings.CheckSizeIncrease, Checkmark.Size.Y.Scale, Checkmark.Size.Y.Offset) }):Play() Utility:PropertyTween(OptionNameLabel, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { TextTransparency = TweenSettings.TransparencyIn }):Play() Checkmark.TextTransparency = 0 else if DropdownFunctions.Settings.Multi then local Idx = table.find(Selected, OptionName) if Idx then table.remove(Selected, Idx) end else Selected = {} end Utility:PropertyTween(Checkmark, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { Size = UDim2.new(Checkmark.Size.X.Scale, TweenSettings.CheckSizeDecrease, Checkmark.Size.Y.Scale, Checkmark.Size.Y.Offset) }):Play() Utility:PropertyTween(OptionNameLabel, TweenInfo.new(TweenSettings.Duration, TweenSettings.EasingStyle), { TextTransparency = TweenSettings.TransparencyOut }):Play() Checkmark.TextTransparency = 1 end if Settings.Required and #Selected == 0 and not State then return end if #Selected > 0 then DropdownName.Text = DropdownFunctions.Settings.Name .. " • " .. table.concat(Selected, ", ") else DropdownName.Text = DropdownFunctions.Settings.Name .. "..." end end local function SetupHoverEffects() if not Settings.PremiumFeature then Interact.MouseEnter:Connect(function() if IsHidden then return end Utility:QuickTween(DropdownName, { TextTransparency = 0 }) Utility:QuickTween(DropdownImage, { ImageTransparency = 0 }) end) Interact.MouseLeave:Connect(function() if IsHidden then return end Utility:QuickTween(DropdownName, { TextTransparency = 0.5 }) Utility:QuickTween(DropdownImage, { ImageTransparency = 0.5 }) end) end end SetupHoverEffects() local function ToggleDropdown() if IsHidden then return end if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end if DB then return end DB = true local DefaultDropdownSize = 38 local IsDropdownOpen = not Dropped local TargetSize = IsDropdownOpen and UDim2.new(1, 0, 0, CalculateDropdownSize()) or UDim2.new(1, 0, 0, DefaultDropdownSize) local DropTween = Utility:PropertyTween(Dropdown, TweenInfo.new(0.2, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Size = TargetSize }) local IconTween = Utility:PropertyTween(DropdownImage, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Rotation = IsDropdownOpen and -90 or 0 }) DropTween:Play() IconTween:Play() if IsDropdownOpen then DropdownFrame.Visible = true DropTween.Completed:Connect(function() DB = false end) else DropTween.Completed:Connect(function() DropdownFrame.Visible = false DB = false end) end Dropped = IsDropdownOpen end Interact.MouseButton1Click:Connect(ToggleDropdown) local function AddOption(I, V, Display) local Option = Instance.new("TextButton") Option.Name = "Option" Option.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Option.Text = "" Option.TextColor3 = Color3.fromRGB(0, 0, 0) Option.TextSize = 14 Option.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Option.BackgroundTransparency = 1 Option.BorderColor3 = Color3.fromRGB(0, 0, 0) Option.BorderSizePixel = 0 Option.Size = UDim2.new(1, 0, 0, 30) local OptionUIPadding = Instance.new("UIPadding") OptionUIPadding.Name = "OptionUIPadding" OptionUIPadding.PaddingLeft = UDim.new(0, 15) OptionUIPadding.Parent = Option local OptionUIListLayout = Instance.new("UIListLayout") OptionUIListLayout.Name = "OptionUIListLayout" OptionUIListLayout.Padding = UDim.new(0, 10) OptionUIListLayout.FillDirection = Enum.FillDirection.Horizontal OptionUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder OptionUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center OptionUIListLayout.Parent = Option local Checkmark = Instance.new("TextLabel") Checkmark.Name = "Checkmark" Checkmark.FontFace = Font.new(Assets.InterFont) Checkmark.Text = "✓" Checkmark.TextColor3 = Color3.fromRGB(255, 255, 255) Checkmark.TextSize = 13 Checkmark.TextTransparency = 1 Checkmark.TextXAlignment = Enum.TextXAlignment.Left Checkmark.TextYAlignment = Enum.TextYAlignment.Top Checkmark.AnchorPoint = Vector2.new(0, 0.5) Checkmark.AutomaticSize = Enum.AutomaticSize.Y Checkmark.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Checkmark.BackgroundTransparency = 1 Checkmark.BorderColor3 = Color3.fromRGB(0, 0, 0) Checkmark.BorderSizePixel = 0 Checkmark.LayoutOrder = -1 Checkmark.Position = UDim2.fromScale(1.3e-07, 0.5) Checkmark.Size = UDim2.fromOffset(-OptionUIListLayout.Padding.Offset, 0) Checkmark.Parent = Option local OptionName = Instance.new("TextLabel") OptionName.Name = "OptionName" OptionName.FontFace = Font.new(Assets.InterFont) OptionName.Text = Display OptionName.RichText = true OptionName.TextColor3 = Color3.fromRGB(255, 255, 255) OptionName.TextSize = 13 OptionName.TextTransparency = 0.5 OptionName.TextTruncate = Enum.TextTruncate.AtEnd OptionName.TextXAlignment = Enum.TextXAlignment.Left OptionName.TextYAlignment = Enum.TextYAlignment.Top OptionName.AnchorPoint = Vector2.new(0, 0.5) OptionName.AutomaticSize = Enum.AutomaticSize.XY OptionName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) OptionName.BackgroundTransparency = 1 OptionName.BorderColor3 = Color3.fromRGB(0, 0, 0) OptionName.BorderSizePixel = 0 OptionName.Position = UDim2.fromScale(1.3e-07, 0.5) OptionName.Parent = Option if not Settings.PremiumFeature then Option.MouseEnter:Connect(function() if IsHidden then return end Utility:QuickTween(OptionName, { TextTransparency = 0 }) end) Option.MouseLeave:Connect(function() if IsHidden then return end Utility:QuickTween(OptionName, { TextTransparency = table.find(Selected, V) and 0 or 0.5 }) end) end Option.Parent = DropdownFrame OptionObjs[V] = { Index = I, Button = Option, NameLabel = OptionName, Checkmark = Checkmark } Option.MouseButton1Click:Connect(function() if IsHidden then return end local IsSelected = table.find(Selected, V) and true or false local NewSelected = not IsSelected if DropdownFunctions.Settings.Required and not NewSelected and #Selected <= 1 then return end Toggle(V, NewSelected) task.spawn(function() if DropdownFunctions.Settings.Callback then if DropdownFunctions.Settings.Multi then local Return = {} for _, Opt in ipairs(Selected) do Return[Opt] = true end DropdownFunctions.Settings.Callback(Return) else if NewSelected then DropdownFunctions.Settings.Callback(Selected[1] or nil) end end end end) end) if Dropped then Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function RefreshPlayers() for _, OptionData in pairs(OptionObjs) do OptionData.Button:Destroy() end OptionObjs = {} local Players = Services.Players:GetPlayers() for I, Player in ipairs(Players) do if Player ~= Utility:GetPlayer() or DropdownFunctions.Settings.IncludeSelf then AddOption(I, Player.Name, Player.DisplayName) end end if Dropped then Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end end local function OnPlayerAdded(Player) if Player ~= Utility:GetPlayer() or DropdownFunctions.Settings.IncludeSelf then local PlayerCount = 0 for _ in pairs(OptionObjs) do PlayerCount += 1 end AddOption(PlayerCount + 1, Player.Name, Player.DisplayName) end end local function OnPlayerRemoving(Player) local PlayerName = Player.Name local OptionData = OptionObjs[PlayerName] if OptionData then for I = #Selected, 1, -1 do if Selected[I] == PlayerName then table.remove(Selected, I) end end if #Selected > 0 then DropdownName.Text = DropdownFunctions.Settings.Name .. " • " .. table.concat(Selected, ", ") else DropdownName.Text = DropdownFunctions.Settings.Name .. "..." end OptionData.Button:Destroy() OptionObjs[PlayerName] = nil if Dropped then Dropdown.Size = UDim2.new(1, 0, 0, CalculateDropdownSize()) end if DropdownFunctions.Settings.Callback then if DropdownFunctions.Settings.Multi then local Return = {} for _, Opt in ipairs(Selected) do Return[Opt] = true end DropdownFunctions.Settings.Callback(Return) else DropdownFunctions.Settings.Callback(Selected[1] or nil) end end end end PlayerConnections.PlayerAdded = Services.Players.PlayerAdded:Connect(OnPlayerAdded) PlayerConnections.PlayerRemoving = Services.Players.PlayerRemoving:Connect(OnPlayerRemoving) RefreshPlayers() function DropdownFunctions:SetToolTip(Tip) for _, connection in pairs(TooltipConnections) do if connection then connection:Disconnect() end end TooltipConnections = {} if Dropdown:FindFirstChild("ToolTipFrame") then Dropdown:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = Dropdown local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Name = "TooltipText" TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.TextWrapped = false TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize( Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge) ) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() Dropdown.ClipsDescendants = false ToolTipFrame.Visible = true ToolTipFrame.BackgroundTransparency = 1 TooltipText.TextTransparency = 1 Services.TweenService:Create( ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1} ):Play() Services.TweenService:Create( TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0} ):Play() Services.TweenService:Create( TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8} ):Play() end local function HideTooltip() Dropdown.ClipsDescendants = true Services.TweenService:Create( ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1} ):Play() Services.TweenService:Create( TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1} ):Play() Services.TweenService:Create( TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1} ):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end if not IsHidden then TooltipConnections[#TooltipConnections + 1] = Interact.MouseEnter:Connect(ShowTooltip) TooltipConnections[#TooltipConnections + 1] = Interact.MouseLeave:Connect(HideTooltip) end end function DropdownFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end IsHidden = State if State then if not Settings.PremiumFeature then PreviousTransparency = DropdownName.TextTransparency end Interact.AutoButtonColor = false if Dropped then ToggleDropdown() end Services.TweenService:Create( DropdownName, TweenInfo.new(0.2), { TextTransparency = Settings.PremiumFeature and DropdownName.TextTransparency or 0.9 } ):Play() Services.TweenService:Create( DropdownImage, TweenInfo.new(0.2), { ImageTransparency = 0.9 } ):Play() Services.TweenService:Create( Dropdown, TweenInfo.new(0.2), { BackgroundTransparency = 0.99 } ):Play() Services.TweenService:Create( Dropdown:FindFirstChild("DropdownUIStroke"), TweenInfo.new(0.2), { Transparency = 0.98 } ):Play() if SearchIcon then Services.TweenService:Create( SearchIcon, TweenInfo.new(0.2), { ImageTransparency = 0.9 } ):Play() end if SearchBox then Services.TweenService:Create( SearchBox, TweenInfo.new(0.2), { TextTransparency = 0.9 } ):Play() SearchBox.TextEditable = false end for _, connection in pairs(TooltipConnections) do if connection then connection:Disconnect() end end TooltipConnections = {} else Interact.AutoButtonColor = false local originalImageTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.9 or 0.5 local originalSearchTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.6 or 0 Services.TweenService:Create( DropdownName, TweenInfo.new(0.2), { TextTransparency = Settings.PremiumFeature and DropdownName.TextTransparency or PreviousTransparency } ):Play() Services.TweenService:Create( DropdownImage, TweenInfo.new(0.2), { ImageTransparency = originalImageTransparency } ):Play() Services.TweenService:Create( Dropdown, TweenInfo.new(0.2), { BackgroundTransparency = 0.985 } ):Play() Services.TweenService:Create( Dropdown:FindFirstChild("DropdownUIStroke"), TweenInfo.new(0.2), { Transparency = 0.95 } ):Play() if SearchIcon then Services.TweenService:Create( SearchIcon, TweenInfo.new(0.2), { ImageTransparency = originalSearchTransparency } ):Play() end if SearchBox then Services.TweenService:Create( SearchBox, TweenInfo.new(0.2), { TextTransparency = 0 } ):Play() SearchBox.TextEditable = not (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) end local existingTooltip = Dropdown:FindFirstChild("ToolTipFrame") if existingTooltip then local tooltipText = existingTooltip:FindFirstChild("TooltipText") if tooltipText and tooltipText.Text ~= "" then self:SetToolTip(tooltipText.Text) end end end end function DropdownFunctions:GetState() return not IsHidden end function DropdownFunctions:UpdateName(New) DropdownName.Text = New end function DropdownFunctions:SetVisibility(State) Dropdown.Visible = State end function DropdownFunctions:ToggleOption(DfOption, DfToggle) if IsHidden then return end local SelectedOptions = {} for CurrentOption, CurrentSelected in pairs(self:GetOptions()) do if CurrentSelected then table.insert(SelectedOptions, CurrentOption) end end if table.find(SelectedOptions, DfOption) and not DfToggle then Toggle(DfOption, false) local index = table.find(SelectedOptions, DfOption) if index then table.remove(SelectedOptions, index) end elseif not table.find(SelectedOptions, DfOption) and DfToggle then table.insert(SelectedOptions, DfOption) Toggle(DfOption, true) end if DropdownFunctions.Settings.Callback then if DropdownFunctions.Settings.Multi then local Return = {} for _, Opt in ipairs(SelectedOptions) do Return[Opt] = true end DropdownFunctions.Settings.Callback(Return) else DropdownFunctions.Settings.Callback(SelectedOptions[1] or nil) end end end function DropdownFunctions:UpdateSelection(NewSelection) if not NewSelection or IsHidden then return end for Option, _ in pairs(OptionObjs) do Toggle(Option, false) end local SelectedOptions = {} if type(NewSelection) == "string" then for Option, Data in pairs(OptionObjs) do local IsSelected = Option == NewSelection if IsSelected then Toggle(Option, true) table.insert(SelectedOptions, Option) end end elseif type(NewSelection) == "table" then for Option, _ in pairs(OptionObjs) do local IsSelected = table.find(NewSelection, Option) ~= nil if IsSelected then Toggle(Option, true) table.insert(SelectedOptions, Option) end end end if DropdownFunctions.Settings.Callback then if DropdownFunctions.Settings.Multi then local Return = {} for _, Opt in ipairs(SelectedOptions) do Return[Opt] = true end DropdownFunctions.Settings.Callback(Return) else DropdownFunctions.Settings.Callback(SelectedOptions[1] or nil) end end end function DropdownFunctions:RefreshPlayers() RefreshPlayers() end function DropdownFunctions:ReturnTab() return DropdownFunctions.Tab end function DropdownFunctions:ReturnClass() return DropdownFunctions.Class end function DropdownFunctions:GetOptions() local OptionsStatus = {} for Option, Data in pairs(OptionObjs) do local IsSelected = table.find(Selected, Option) and true or false OptionsStatus[Option] = IsSelected end return OptionsStatus end function DropdownFunctions:GetSelectedPlayers() if #Selected <= 0 then return {} end if #Selected > 1 then local SelectedPlayers = {} for _, PlayerName in ipairs(Selected) do local Player = Services.Players:FindFirstChild(PlayerName) if Player then table.insert(SelectedPlayers, Player) end end return SelectedPlayers else local Player = Services.Players:FindFirstChild(Selected[1]) return Player and {Player} or {} end end function DropdownFunctions:Destroy() if PlayerConnections.PlayerAdded then PlayerConnections.PlayerAdded:Disconnect() end if PlayerConnections.PlayerRemoving then PlayerConnections.PlayerRemoving:Disconnect() end for _, connection in pairs(TooltipConnections) do if connection then connection:Disconnect() end end if Dropdown then Dropdown:Destroy() end for _, OptionData in pairs(OptionObjs) do if OptionData.Button then OptionData.Button:Destroy() end end OptionObjs = {} if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end if DropdownFunctions.Settings.Hidden then if typeof(DropdownFunctions.Settings.Hidden) == "table" then DropdownFunctions:SetHidden(DropdownFunctions.Settings.Hidden[1], DropdownFunctions.Settings.Hidden[2]) else DropdownFunctions:SetHidden(DropdownFunctions.Settings.Hidden) end end if Flag then WaveLibrary.Options[Flag] = DropdownFunctions end return DropdownFunctions end end end R["Wave/UserInterface/Components/ProgressBar.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:ProgressBar(Settings, Flag) local ProgressBarFunctions = { Settings = Settings, IgnoreConfig = false, Class = "ProgressBar", CurrentValue = Settings.Default or Settings.Minimum or 0, IsHidden = false, Maid = {}, Elements = {} } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name, " ", "_") end local TWEEN_INFO = TweenInfo.new(0.3, Enum.EasingStyle.Sine) local TRANSPARENCY = { Default = 0.5, Hidden = 0.9 } local function CreateElements() local Elements = {} Elements.ProgressBar = Instance.new("Frame") Elements.ProgressBar.Name = "ProgressBar" Elements.ProgressBar.AutomaticSize = Enum.AutomaticSize.Y Elements.ProgressBar.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Elements.ProgressBar.BackgroundTransparency = 1 Elements.ProgressBar.BorderSizePixel = 0 Elements.ProgressBar.Size = UDim2.new(1, 0, 0, 48) Elements.ProgressBar.Parent = Section Elements.ProgressBarName = Instance.new("TextLabel") Elements.ProgressBarName.Name = "ProgressBarName" Elements.ProgressBarName.FontFace = Font.new(Assets.InterFont) Elements.ProgressBarName.Text = Settings.Name Elements.ProgressBarName.RichText = true Elements.ProgressBarName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") Elements.ProgressBarName.TextSize = 13 Elements.ProgressBarName.TextTransparency = 0.5 Elements.ProgressBarName.TextTruncate = Enum.TextTruncate.AtEnd Elements.ProgressBarName.TextXAlignment = Enum.TextXAlignment.Left Elements.ProgressBarName.TextYAlignment = Enum.TextYAlignment.Top Elements.ProgressBarName.AnchorPoint = Vector2.new(0, 0) Elements.ProgressBarName.AutomaticSize = Enum.AutomaticSize.XY Elements.ProgressBarName.BackgroundTransparency = 1 Elements.ProgressBarName.Position = UDim2.fromScale(0, 0) Elements.ProgressBarName.Parent = Elements.ProgressBar if Settings.PremiumFeature then Elements.ProgressBarName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Parent = Elements.ProgressBarName end Elements.ProgressValue = Instance.new("TextLabel") Elements.ProgressValue.Name = "ProgressValue" Elements.ProgressValue.FontFace = Font.new(Assets.InterFont) Elements.ProgressValue.TextColor3 = Color3.fromRGB(255, 255, 255) Elements.ProgressValue.TextSize = 12 Elements.ProgressValue.TextTransparency = 0.3 Elements.ProgressValue.TextXAlignment = Enum.TextXAlignment.Right Elements.ProgressValue.TextYAlignment = Enum.TextYAlignment.Top Elements.ProgressValue.AnchorPoint = Vector2.new(1, 0) Elements.ProgressValue.AutomaticSize = Enum.AutomaticSize.XY Elements.ProgressValue.BackgroundTransparency = 1 Elements.ProgressValue.Position = UDim2.fromScale(1, 0) Elements.ProgressValue.Parent = Elements.ProgressBar Elements.ProgressContainer = Instance.new("Frame") Elements.ProgressContainer.Name = "ProgressContainer" Elements.ProgressContainer.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Elements.ProgressContainer.BackgroundTransparency = 0.92 Elements.ProgressContainer.BorderSizePixel = 0 Elements.ProgressContainer.Position = UDim2.new(0, 0, 0, 20) Elements.ProgressContainer.Size = UDim2.new(1, 0, 0, 6) Elements.ProgressContainer.Parent = Elements.ProgressBar local ProgressContainerUICorner = Instance.new("UICorner") ProgressContainerUICorner.CornerRadius = UDim.new(1, 0) ProgressContainerUICorner.Parent = Elements.ProgressContainer local ProgressContainerUIStroke = Instance.new("UIStroke") ProgressContainerUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border ProgressContainerUIStroke.Color = Color3.fromRGB(255, 255, 255) ProgressContainerUIStroke.Thickness = 0.5 ProgressContainerUIStroke.Transparency = 0.85 ProgressContainerUIStroke.Parent = Elements.ProgressContainer Elements.ProgressFill = Instance.new("Frame") Elements.ProgressFill.Name = "ProgressFill" Elements.ProgressFill.BackgroundColor3 = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") or Color3.fromRGB(0, 162, 255) Elements.ProgressFill.BackgroundTransparency = 0.2 Elements.ProgressFill.BorderSizePixel = 0 Elements.ProgressFill.Size = UDim2.fromScale(0, 1) Elements.ProgressFill.Parent = Elements.ProgressContainer local ProgressFillUICorner = Instance.new("UICorner") ProgressFillUICorner.CornerRadius = UDim.new(1, 0) ProgressFillUICorner.Parent = Elements.ProgressFill if Settings.ShowIndicator ~= false then Elements.ProgressIndicator = Instance.new("Frame") Elements.ProgressIndicator.Name = "ProgressIndicator" Elements.ProgressIndicator.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Elements.ProgressIndicator.BackgroundTransparency = 0.1 Elements.ProgressIndicator.BorderSizePixel = 0 Elements.ProgressIndicator.AnchorPoint = Vector2.new(0.5, 0.5) Elements.ProgressIndicator.Position = UDim2.fromScale(0, 0.5) Elements.ProgressIndicator.Size = UDim2.fromOffset(10, 10) Elements.ProgressIndicator.Parent = Elements.ProgressContainer local ProgressIndicatorUICorner = Instance.new("UICorner") ProgressIndicatorUICorner.CornerRadius = UDim.new(1, 0) ProgressIndicatorUICorner.Parent = Elements.ProgressIndicator local ProgressIndicatorUIStroke = Instance.new("UIStroke") ProgressIndicatorUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border ProgressIndicatorUIStroke.Color = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") or Color3.fromRGB(0, 162, 255) ProgressIndicatorUIStroke.Thickness = 1.5 ProgressIndicatorUIStroke.Transparency = 0.3 ProgressIndicatorUIStroke.Parent = Elements.ProgressIndicator end if Settings.AnimatedFill then local PulseGradient = Instance.new("UIGradient") PulseGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(0.5, WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") or Color3.fromRGB(0, 162, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }) PulseGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.8), NumberSequenceKeypoint.new(0.5, 0.2), NumberSequenceKeypoint.new(1, 0.8) }) PulseGradient.Parent = Elements.ProgressFill task.spawn(function() while Elements.ProgressFill and Elements.ProgressFill.Parent do Services.TweenService:Create(PulseGradient, TweenInfo.new(1.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {Offset = Vector2.new(1, 0)} ):Play() task.wait(1.5) end end) end return Elements end local DisplayMethods = { Thousandths = function(Value) return string.format("%.3f", Value) end, Hundredths = function(Value) return string.format("%.2f", Value) end, Tenths = function(Value) return string.format("%.1f", Value) end, Round = function(Value, Precision) if Precision then return string.format("%." .. Precision .. "f", Value) else return tostring(math.round(Value)) end end, Percent = function(Value, Min, Max, Precision) local Percentage = ((Value - Min) / (Max - Min)) * 100 return Precision and string.format("%." .. Precision .. "f", Percentage) .. "%" or tostring(math.round(Percentage)) .. "%" end, Ratio = function(Value, Min, Max, Precision) local Ratio = (Value - Min) / (Max - Min) return Precision and string.format("%." .. Precision .. "f", Ratio) or string.format("%.2f", Ratio) end, Value = function(Value, Precision) return Precision and string.format("%." .. Precision .. "f", Value) or tostring(Value) end, Fraction = function(Value, Min, Max) return tostring(math.round(Value)) .. "/" .. tostring(Max - Min) end } local ValueDisplayMethod = DisplayMethods[Settings.DisplayMethod] or DisplayMethods.Value local function UpdateProgress(NewValue, IgnoreCallback) local MinValue = Settings.Minimum or 0 local MaxValue = Settings.Maximum or 100 NewValue = math.clamp(NewValue, MinValue, MaxValue) ProgressBarFunctions.CurrentValue = NewValue local ProgressPercent = (NewValue - MinValue) / (MaxValue - MinValue) Utility:PropertyTween(ProgressBarFunctions.Elements.ProgressFill, TWEEN_INFO, { Size = UDim2.fromScale(ProgressPercent, 1) }):Play() if ProgressBarFunctions.Elements.ProgressIndicator then Utility:PropertyTween(ProgressBarFunctions.Elements.ProgressIndicator, TWEEN_INFO, { Position = UDim2.fromScale(ProgressPercent, 0.5) }):Play() end local DisplayText if Settings.DisplayMethod == "Percent" then DisplayText = ValueDisplayMethod(NewValue, MinValue, MaxValue, Settings.Precision) else DisplayText = ValueDisplayMethod(NewValue, Settings.Precision) end ProgressBarFunctions.Elements.ProgressValue.Text = (Settings.Prefix or "") .. DisplayText .. (Settings.Suffix or "") if not IgnoreCallback and Settings.Callback then task.spawn(function() Settings.Callback(NewValue, ProgressPercent) end) end end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end function ProgressBarFunctions:UpdateProgress(Value) UpdateProgress(Value) end function ProgressBarFunctions:SetProgress(Value) UpdateProgress(Value, true) end function ProgressBarFunctions:GetProgress() return ProgressBarFunctions.CurrentValue end function ProgressBarFunctions:GetProgressPercent() local MinValue = Settings.Minimum or 0 local MaxValue = Settings.Maximum or 100 return (ProgressBarFunctions.CurrentValue - MinValue) / (MaxValue - MinValue) end function ProgressBarFunctions:UpdateName(Name) ProgressBarFunctions.Elements.ProgressBarName.Text = Name end function ProgressBarFunctions:SetVisibility(State) ProgressBarFunctions.Elements.ProgressBar.Visible = State end function ProgressBarFunctions:GetState() return not ProgressBarFunctions.IsHidden end function ProgressBarFunctions:ReturnSettings() return Settings end function ProgressBarFunctions:SetToolTip(Tip) if ProgressBarFunctions.Elements.ProgressBar:FindFirstChild("ToolTipFrame") then ProgressBarFunctions.Elements.ProgressBar:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = ProgressBarFunctions.Elements.ProgressBar local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize(Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() ToolTipFrame.Visible = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end local function HideTooltip() Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end ProgressBarFunctions.Maid.TooltipShow = ProgressBarFunctions.Elements.ProgressContainer.MouseEnter:Connect(ShowTooltip) ProgressBarFunctions.Maid.TooltipHide = ProgressBarFunctions.Elements.ProgressContainer.MouseLeave:Connect(HideTooltip) end function ProgressBarFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end ProgressBarFunctions.IsHidden = State if State then Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressContainer, TWEEN_INFO, {BackgroundTransparency = 0.98}):Play() Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressFill, TWEEN_INFO, {BackgroundTransparency = 0.9}):Play() Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressValue, TWEEN_INFO, {TextTransparency = 0.9}):Play() if ProgressBarFunctions.Elements.ProgressIndicator then Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressIndicator, TWEEN_INFO, {BackgroundTransparency = 0.9}):Play() end local ContainerStroke = ProgressBarFunctions.Elements.ProgressContainer:FindFirstChild("UIStroke") if ContainerStroke then Services.TweenService:Create(ContainerStroke, TWEEN_INFO, {Transparency = 0.95}):Play() end if not Settings.PremiumFeature then Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressBarName, TWEEN_INFO, {TextTransparency = 0.9}):Play() end else Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressContainer, TWEEN_INFO, {BackgroundTransparency = 0.92}):Play() Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressFill, TWEEN_INFO, {BackgroundTransparency = 0.2}):Play() Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressValue, TWEEN_INFO, {TextTransparency = 0.3}):Play() if ProgressBarFunctions.Elements.ProgressIndicator then Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressIndicator, TWEEN_INFO, {BackgroundTransparency = 0.1}):Play() end local ContainerStroke = ProgressBarFunctions.Elements.ProgressContainer:FindFirstChild("UIStroke") if ContainerStroke then Services.TweenService:Create(ContainerStroke, TWEEN_INFO, {Transparency = 0.85}):Play() end if not Settings.PremiumFeature then Services.TweenService:Create(ProgressBarFunctions.Elements.ProgressBarName, TWEEN_INFO, {TextTransparency = 0.5}):Play() end end end function ProgressBarFunctions:Destroy() for ConnectionName, Connection in pairs(ProgressBarFunctions.Maid) do if type(Connection) == "userdata" and Connection.Disconnect then Connection:Disconnect() end end table.clear(ProgressBarFunctions.Maid) if ProgressBarFunctions.Elements.ProgressBar then ProgressBarFunctions.Elements.ProgressBar:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end ProgressBarFunctions.Elements = CreateElements() UpdateProgress(ProgressBarFunctions.CurrentValue, true) if Settings.Hidden then if typeof(Settings.Hidden) == "table" then ProgressBarFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else ProgressBarFunctions:SetHidden(Settings.Hidden) end end if Settings.ToolTip then ProgressBarFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then ProgressBarFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then ProgressBarFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then ProgressBarFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Flag then WaveLibrary.Options[Flag] = ProgressBarFunctions end return ProgressBarFunctions end end end R["Wave/UserInterface/Components/RangeSlider.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:RangeSlider(Settings, Flag) local RangeSliderFunctions = { Settings = Settings, IgnoreConfig = Settings.IgnoreConfig, Tab = Requirements.TabName, Class = "RangeSlider", MinValue = Settings.DefaultMin or Settings.Minimum, MaxValue = Settings.DefaultMax or Settings.Maximum } if not Flag then Flag = "WriteHere" end if Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(RangeSliderFunctions.Settings.Name, " ", "_") end local RangeSlider = Instance.new("Frame") RangeSlider.Name = "RangeSlider" RangeSlider.AutomaticSize = Enum.AutomaticSize.Y RangeSlider.BackgroundColor3 = Color3.fromRGB(0, 0, 0) RangeSlider.BackgroundTransparency = 1 RangeSlider.BorderSizePixel = 0 RangeSlider.Size = UDim2.new(1, 0, 0, 38) RangeSlider.Parent = Section local RangeSliderName = Instance.new("TextLabel") RangeSliderName.Name = "RangeSliderName" RangeSliderName.FontFace = Font.new(Assets.InterFont) RangeSliderName.Text = RangeSliderFunctions.Settings.Name RangeSliderName.RichText = true RangeSliderName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") RangeSliderName.TextSize = 13 RangeSliderName.TextTransparency = 0.5 RangeSliderName.TextTruncate = Enum.TextTruncate.AtEnd RangeSliderName.TextXAlignment = Enum.TextXAlignment.Left RangeSliderName.TextYAlignment = Enum.TextYAlignment.Top RangeSliderName.AnchorPoint = Vector2.new(0, 0.5) RangeSliderName.AutomaticSize = Enum.AutomaticSize.XY RangeSliderName.BackgroundTransparency = 1 RangeSliderName.Position = UDim2.fromScale(0, 0.5) RangeSliderName.Parent = RangeSlider if Settings.PremiumFeature then RangeSliderName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }) PremiumGradient.Rotation = 0 PremiumGradient.Parent = RangeSliderName end local RangeSliderElements = Instance.new("Frame") RangeSliderElements.Name = "RangeSliderElements" RangeSliderElements.AnchorPoint = Vector2.new(1, 0) RangeSliderElements.BackgroundTransparency = 1 RangeSliderElements.Position = UDim2.fromScale(1, 0) RangeSliderElements.Size = UDim2.fromScale(1, 1) RangeSliderElements.Parent = RangeSlider local MinValueInput = Instance.new("TextBox") MinValueInput.Name = "MinValueInput" MinValueInput.FontFace = Font.new(Assets.InterFont) MinValueInput.TextColor3 = Color3.fromRGB(255, 255, 255) MinValueInput.TextSize = 12 MinValueInput.TextTransparency = 0.1 MinValueInput.BackgroundColor3 = Color3.fromRGB(255, 255, 255) MinValueInput.BackgroundTransparency = 0.95 MinValueInput.BorderSizePixel = 0 MinValueInput.LayoutOrder = 1 MinValueInput.Size = UDim2.fromOffset(41, 21) MinValueInput.ClipsDescendants = true local MinValueUICorner = Instance.new("UICorner") MinValueUICorner.CornerRadius = UDim.new(0, 4) MinValueUICorner.Parent = MinValueInput local MinValueUIStroke = Instance.new("UIStroke") MinValueUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border MinValueUIStroke.Color = Color3.fromRGB(255, 255, 255) MinValueUIStroke.Transparency = 0.9 MinValueUIStroke.Parent = MinValueInput local MinValueUIPadding = Instance.new("UIPadding") MinValueUIPadding.PaddingLeft = UDim.new(0, 2) MinValueUIPadding.PaddingRight = UDim.new(0, 2) MinValueUIPadding.Parent = MinValueInput MinValueInput.Parent = RangeSliderElements local MaxValueInput = Instance.new("TextBox") MaxValueInput.Name = "MaxValueInput" MaxValueInput.FontFace = Font.new(Assets.InterFont) MaxValueInput.TextColor3 = Color3.fromRGB(255, 255, 255) MaxValueInput.TextSize = 12 MaxValueInput.TextTransparency = 0.1 MaxValueInput.BackgroundColor3 = Color3.fromRGB(255, 255, 255) MaxValueInput.BackgroundTransparency = 0.95 MaxValueInput.BorderSizePixel = 0 MaxValueInput.LayoutOrder = 3 MaxValueInput.Size = UDim2.fromOffset(41, 21) MaxValueInput.ClipsDescendants = true local MaxValueUICorner = Instance.new("UICorner") MaxValueUICorner.CornerRadius = UDim.new(0, 4) MaxValueUICorner.Parent = MaxValueInput local MaxValueUIStroke = Instance.new("UIStroke") MaxValueUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border MaxValueUIStroke.Color = Color3.fromRGB(255, 255, 255) MaxValueUIStroke.Transparency = 0.9 MaxValueUIStroke.Parent = MaxValueInput local MaxValueUIPadding = Instance.new("UIPadding") MaxValueUIPadding.PaddingLeft = UDim.new(0, 2) MaxValueUIPadding.PaddingRight = UDim.new(0, 2) MaxValueUIPadding.Parent = MaxValueInput MaxValueInput.Parent = RangeSliderElements if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then MinValueInput.TextEditable = false MinValueInput.ClearTextOnFocus = false MinValueInput.TextTransparency = 0.8 MaxValueInput.TextEditable = false MaxValueInput.ClearTextOnFocus = false MaxValueInput.TextTransparency = 0.8 end local RangeSliderElementsUIListLayout = Instance.new("UIListLayout") RangeSliderElementsUIListLayout.Padding = UDim.new(0, 5) RangeSliderElementsUIListLayout.FillDirection = Enum.FillDirection.Horizontal RangeSliderElementsUIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right RangeSliderElementsUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder RangeSliderElementsUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center RangeSliderElementsUIListLayout.Parent = RangeSliderElements local SliderBarContainer = Instance.new("Frame") SliderBarContainer.Name = "SliderBarContainer" SliderBarContainer.BackgroundTransparency = 1 SliderBarContainer.LayoutOrder = 2 SliderBarContainer.Size = UDim2.fromOffset(123, 21) SliderBarContainer.Parent = RangeSliderElements local SliderBar = Instance.new("ImageLabel") SliderBar.Name = "SliderBar" SliderBar.Image = Assets.SliderBar SliderBar.ImageColor3 = Color3.fromRGB(87, 86, 86) SliderBar.BackgroundTransparency = 1 SliderBar.AnchorPoint = Vector2.new(0, 0.5) SliderBar.Position = UDim2.fromScale(0, 0.5) SliderBar.Size = UDim2.fromOffset(123, 3) SliderBar.Parent = SliderBarContainer local RangeBar = Instance.new("Frame") RangeBar.Name = "RangeBar" RangeBar.BackgroundColor3 = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") or Color3.fromRGB(0, 162, 255) RangeBar.BackgroundTransparency = 0.3 RangeBar.BorderSizePixel = 0 RangeBar.AnchorPoint = Vector2.new(0, 0.5) RangeBar.Position = UDim2.fromScale(0, 0.5) RangeBar.Size = UDim2.fromOffset(0, 3) RangeBar.Parent = SliderBarContainer local RangeBarUICorner = Instance.new("UICorner") RangeBarUICorner.CornerRadius = UDim.new(1, 0) RangeBarUICorner.Parent = RangeBar local MinSliderHead = Instance.new("ImageButton") MinSliderHead.Name = "MinSliderHead" MinSliderHead.Image = Assets.SliderHead MinSliderHead.AnchorPoint = Vector2.new(0.5, 0.5) MinSliderHead.BackgroundTransparency = 1 MinSliderHead.Position = UDim2.fromScale(0, 0.5) MinSliderHead.Size = UDim2.fromOffset(12, 12) MinSliderHead.Parent = SliderBarContainer local MaxSliderHead = Instance.new("ImageButton") MaxSliderHead.Name = "MaxSliderHead" MaxSliderHead.Image = Assets.SliderHead MaxSliderHead.AnchorPoint = Vector2.new(0.5, 0.5) MaxSliderHead.BackgroundTransparency = 1 MaxSliderHead.Position = UDim2.fromScale(1, 0.5) MaxSliderHead.Size = UDim2.fromOffset(12, 12) MaxSliderHead.Parent = SliderBarContainer local RangeSliderElementsUIPadding = Instance.new("UIPadding") RangeSliderElementsUIPadding.PaddingTop = UDim.new(0, 3) RangeSliderElementsUIPadding.Parent = RangeSliderElements local IsHidden = false local DraggingMin = false local DraggingMax = false local SliderConnection = nil local PreviousNameTransparency = 0.5 local DisplayMethods = { Thousandths = function(SliderValue) return string.format("%.3f", SliderValue) end, Hundredths = function(SliderValue) return string.format("%.2f", SliderValue) end, Tenths = function(SliderValue) return string.format("%.1f", SliderValue) end, Round = function(SliderValue, Precision) if Precision then return string.format("%." .. Precision .. "f", SliderValue) else return tostring(math.round(SliderValue)) end end, Degrees = function(SliderValue, Precision) local FormattedValue = Precision and string.format("%." .. Precision .. "f", SliderValue) or tostring(SliderValue) return FormattedValue .. "°" end, Percent = function(SliderValue, Precision) local Percentage = (SliderValue - RangeSliderFunctions.Settings.Minimum) / (RangeSliderFunctions.Settings.Maximum - RangeSliderFunctions.Settings.Minimum) * 100 return Precision and string.format("%." .. Precision .. "f", Percentage) .. "%" or tostring(math.round(Percentage)) .. "%" end, Value = function(SliderValue, Precision) return Precision and string.format("%." .. Precision .. "f", SliderValue) or tostring(SliderValue) end, Time24Hour = function(SliderValue) local TotalSeconds = math.floor(SliderValue) local Hours = math.floor(TotalSeconds / 3600) % 24 local Minutes = math.floor((TotalSeconds % 3600) / 60) local Seconds = TotalSeconds % 60 return string.format("%02d:%02d", Hours, Minutes) end, Time12Hour = function(SliderValue) local TotalSeconds = math.floor(SliderValue) local Hours24 = math.floor(TotalSeconds / 3600) % 24 local Minutes = math.floor((TotalSeconds % 3600) / 60) local Hours12 = Hours24 % 12 if Hours12 == 0 then Hours12 = 12 end local Period = Hours24 >= 12 and "PM" or "AM" return string.format("%02d:%02d %s", Hours12, Minutes, Period) end } local ValueDisplayMethod = DisplayMethods[RangeSliderFunctions.Settings.DisplayMethod] or DisplayMethods.Value local function UpdateRange(IgnoreCallback) local MinPercent = (RangeSliderFunctions.MinValue - Settings.Minimum) / (Settings.Maximum - Settings.Minimum) local MaxPercent = (RangeSliderFunctions.MaxValue - Settings.Minimum) / (Settings.Maximum - Settings.Minimum) MinPercent = math.clamp(MinPercent, 0, 1) MaxPercent = math.clamp(MaxPercent, 0, 1) MinSliderHead.Position = UDim2.fromScale(MinPercent, 0.5) MaxSliderHead.Position = UDim2.fromScale(MaxPercent, 0.5) local RangeWidth = MaxPercent - MinPercent RangeBar.Position = UDim2.fromScale(MinPercent, 0.5) RangeBar.Size = UDim2.new(RangeWidth, 0, 0, 3) MinValueInput.Text = (Settings.Prefix or "") .. ValueDisplayMethod(RangeSliderFunctions.MinValue, Settings.Precision) .. (Settings.Suffix or "") MaxValueInput.Text = (Settings.Prefix or "") .. ValueDisplayMethod(RangeSliderFunctions.MaxValue, Settings.Precision) .. (Settings.Suffix or "") if not IgnoreCallback and Settings.Callback then task.spawn(function() Settings.Callback(RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue) end) end end local function SetMinValue(Val, IgnoreCallback) local PosXScale if typeof(Val) == "Instance" then local Input = Val PosXScale = math.clamp((Input.Position.X - SliderBar.AbsolutePosition.X) / SliderBar.AbsoluteSize.X, 0, 1) else local Value = Val PosXScale = (Value - Settings.Minimum) / (Settings.Maximum - Settings.Minimum) end local NewValue = PosXScale * (Settings.Maximum - Settings.Minimum) + Settings.Minimum NewValue = math.clamp(NewValue, Settings.Minimum, RangeSliderFunctions.MaxValue) RangeSliderFunctions.MinValue = NewValue UpdateRange(IgnoreCallback) end local function SetMaxValue(Val, IgnoreCallback) local PosXScale if typeof(Val) == "Instance" then local Input = Val PosXScale = math.clamp((Input.Position.X - SliderBar.AbsolutePosition.X) / SliderBar.AbsoluteSize.X, 0, 1) else local Value = Val PosXScale = (Value - Settings.Minimum) / (Settings.Maximum - Settings.Minimum) end local NewValue = PosXScale * (Settings.Maximum - Settings.Minimum) + Settings.Minimum NewValue = math.clamp(NewValue, RangeSliderFunctions.MinValue, Settings.Maximum) RangeSliderFunctions.MaxValue = NewValue UpdateRange(IgnoreCallback) end UpdateRange(true) if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then SliderBar.ImageTransparency = 0.6 MinSliderHead.ImageTransparency = 0.3 MaxSliderHead.ImageTransparency = 0.3 RangeBar.BackgroundTransparency = 0.7 end if not Settings.PremiumFeature then local function AddHoverEffect(Element) Element.MouseEnter:Connect(function() if IsHidden then return end Utility:QuickTween(RangeSliderName, { TextTransparency = 0 }) end) Element.MouseLeave:Connect(function() if IsHidden then return end Utility:QuickTween(RangeSliderName, { TextTransparency = PreviousNameTransparency }) end) end AddHoverEffect(MinSliderHead) AddHoverEffect(MaxSliderHead) AddHoverEffect(MinValueInput) AddHoverEffect(MaxValueInput) end local function ConnectSliderEvents() MinSliderHead.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end if IsHidden then return end DraggingMin = true SetMinValue(Input) end end) MinSliderHead.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then DraggingMin = false if Settings.OnInputComplete then Settings.OnInputComplete(RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue) end end end) MaxSliderHead.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end if IsHidden then return end DraggingMax = true SetMaxValue(Input) end end) MaxSliderHead.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then DraggingMax = false if Settings.OnInputComplete then Settings.OnInputComplete(RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue) end end end) MinValueInput.FocusLost:Connect(function(EnterPressed) if IsHidden then return end local InputText = MinValueInput.Text local Value = tonumber(InputText:match("(%-?%d+%.?%d*)")) if Value then local NewValue = math.clamp(Value, Settings.Minimum, RangeSliderFunctions.MaxValue) RangeSliderFunctions.MinValue = NewValue UpdateRange() else MinValueInput.Text = ValueDisplayMethod(RangeSliderFunctions.MinValue, Settings.Precision) end if Settings.OnInputComplete then Settings.OnInputComplete(RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue) end end) MaxValueInput.FocusLost:Connect(function(EnterPressed) if IsHidden then return end local InputText = MaxValueInput.Text local Value = tonumber(InputText:match("(%-?%d+%.?%d*)")) if Value then local NewValue = math.clamp(Value, RangeSliderFunctions.MinValue, Settings.Maximum) RangeSliderFunctions.MaxValue = NewValue UpdateRange() else MaxValueInput.Text = ValueDisplayMethod(RangeSliderFunctions.MaxValue, Settings.Precision) end if Settings.OnInputComplete then Settings.OnInputComplete(RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue) end end) SliderConnection = Services.UserInputService.InputChanged:Connect(function(Input) if not IsHidden and (Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch) then if DraggingMin then SetMinValue(Input) elseif DraggingMax then SetMaxValue(Input) end end end) end ConnectSliderEvents() local function UpdateSliderBarSize() local Padding = RangeSliderElementsUIListLayout.Padding.Offset local MinValueWidth = MinValueInput.AbsoluteSize.X local MaxValueWidth = MaxValueInput.AbsoluteSize.X local SliderNameWidth = RangeSliderName.AbsoluteSize.X local TotalWidth = RangeSliderElements.AbsoluteSize.X local NewBarWidth = (TotalWidth - (Padding + MinValueWidth + MaxValueWidth + SliderNameWidth + 15)) / BaseUIScale.Scale SliderBar.Size = UDim2.new(0, NewBarWidth, 0, 3) SliderBarContainer.Size = UDim2.new(0, NewBarWidth, 0, 20) end UpdateSliderBarSize() RangeSliderName:GetPropertyChangedSignal("AbsoluteSize"):Connect(UpdateSliderBarSize) Section:GetPropertyChangedSignal("AbsoluteSize"):Connect(UpdateSliderBarSize) function RangeSliderFunctions:SetToolTip(Tip) if RangeSlider:FindFirstChild("ToolTipFrame") then RangeSlider:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = RangeSlider local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Name = "TooltipText" TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize(Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() ToolTipFrame.Visible = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end local function HideTooltip() Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end MinSliderHead.MouseEnter:Connect(ShowTooltip) MinSliderHead.MouseLeave:Connect(HideTooltip) MaxSliderHead.MouseEnter:Connect(ShowTooltip) MaxSliderHead.MouseLeave:Connect(HideTooltip) end function RangeSliderFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end IsHidden = State if State then Services.TweenService:Create(SliderBar, TweenInfo.new(0.2), {ImageTransparency = 0.9}):Play() Services.TweenService:Create(MinSliderHead, TweenInfo.new(0.2), {ImageTransparency = 0.9}):Play() Services.TweenService:Create(MaxSliderHead, TweenInfo.new(0.2), {ImageTransparency = 0.9}):Play() Services.TweenService:Create(RangeBar, TweenInfo.new(0.2), {BackgroundTransparency = 0.95}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(RangeSliderName, TweenInfo.new(0.2), {TextTransparency = 0.9}):Play() end Services.TweenService:Create(MinValueInput, TweenInfo.new(0.2), {TextTransparency = 0.9, BackgroundTransparency = 0.99}):Play() Services.TweenService:Create(MaxValueInput, TweenInfo.new(0.2), {TextTransparency = 0.9, BackgroundTransparency = 0.99}):Play() Services.TweenService:Create(MinValueUIStroke, TweenInfo.new(0.2), {Transparency = 0.95}):Play() Services.TweenService:Create(MaxValueUIStroke, TweenInfo.new(0.2), {Transparency = 0.95}):Play() MinValueInput.TextEditable = false MaxValueInput.TextEditable = false if SliderConnection then SliderConnection:Disconnect() SliderConnection = nil end else local originalBarTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.6 or 0 local originalHeadTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.3 or 0 Services.TweenService:Create(SliderBar, TweenInfo.new(0.2), {ImageTransparency = originalBarTransparency}):Play() Services.TweenService:Create(MinSliderHead, TweenInfo.new(0.2), {ImageTransparency = originalHeadTransparency}):Play() Services.TweenService:Create(MaxSliderHead, TweenInfo.new(0.2), {ImageTransparency = originalHeadTransparency}):Play() Services.TweenService:Create(RangeBar, TweenInfo.new(0.2), {BackgroundTransparency = Settings.PremiumFeature and not Utility:IsPremiumHubUser() and 0.7 or 0.3}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(RangeSliderName, TweenInfo.new(0.2), {TextTransparency = PreviousNameTransparency}):Play() end local valueTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.8 or 0.1 local valueEditable = not (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) Services.TweenService:Create(MinValueInput, TweenInfo.new(0.2), {TextTransparency = valueTransparency, BackgroundTransparency = 0.95}):Play() Services.TweenService:Create(MaxValueInput, TweenInfo.new(0.2), {TextTransparency = valueTransparency, BackgroundTransparency = 0.95}):Play() Services.TweenService:Create(MinValueUIStroke, TweenInfo.new(0.2), {Transparency = 0.9}):Play() Services.TweenService:Create(MaxValueUIStroke, TweenInfo.new(0.2), {Transparency = 0.9}):Play() MinValueInput.TextEditable = valueEditable MaxValueInput.TextEditable = valueEditable if not SliderConnection then ConnectSliderEvents() end end end function RangeSliderFunctions:UpdateName(Name) RangeSliderName.Text = Name end function RangeSliderFunctions:SetVisibility(State) RangeSlider.Visible = State end function RangeSliderFunctions:UpdateRange(MinValue, MaxValue) RangeSliderFunctions.MinValue = math.clamp(MinValue or RangeSliderFunctions.MinValue, Settings.Minimum, Settings.Maximum) RangeSliderFunctions.MaxValue = math.clamp(MaxValue or RangeSliderFunctions.MaxValue, Settings.Minimum, Settings.Maximum) if RangeSliderFunctions.MinValue > RangeSliderFunctions.MaxValue then RangeSliderFunctions.MinValue = RangeSliderFunctions.MaxValue end UpdateRange(true) end function RangeSliderFunctions:GetRange(Tabled) return Tabled and {RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue} or RangeSliderFunctions.MinValue, RangeSliderFunctions.MaxValue end function RangeSliderFunctions:GetMinimum() return RangeSliderFunctions.MinValue end function RangeSliderFunctions:GetMaximum() return RangeSliderFunctions.MaxValue end function RangeSliderFunctions:GetState() return not IsHidden end function RangeSliderFunctions:ReturnSettings() return Settings end function RangeSliderFunctions:ReturnTab() return RangeSliderFunctions.Tab end function RangeSliderFunctions:ReturnClass() return RangeSliderFunctions.Class end function RangeSliderFunctions:Destroy() if SliderConnection then SliderConnection:Disconnect() end if RangeSlider then RangeSlider:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end if Settings.Hidden then if typeof(Settings.Hidden) == "table" then RangeSliderFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else RangeSliderFunctions:SetHidden(Settings.Hidden) end end if Settings.ToolTip then RangeSliderFunctions:SetToolTip(Settings.ToolTip) end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then RangeSliderFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then RangeSliderFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then RangeSliderFunctions:SetHidden(true, "Premium Feature") end if Flag then WaveLibrary.Options[Flag] = RangeSliderFunctions end return RangeSliderFunctions end end end R["Wave/UserInterface/Components/Segmented.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end function SectionFunctions:Segmented(Settings, Flag) Settings = Settings or {} local Options = Settings.Options or Settings.Values or {} local SegmentedFunctions = { Settings = Settings, Class = "Segmented", Value = Settings.Default or Options[1], Tab = Requirements.TabName, _changed = {}, } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name or Settings.Title or "Segmented", " ", "_") end local Accent = ThemeAttr("AccentPrimary", Color3.fromRGB(96, 165, 250)) local TextPrimary = ThemeAttr("TextPrimary", Color3.fromRGB(235, 235, 240)) local TextSecondary = ThemeAttr("TextSecondary", Color3.fromRGB(165, 165, 175)) -- Pick a text colour that reads on top of the accent (dark on light accents). local function ContrastText(Color) local Luminance = 0.299 * Color.R + 0.587 * Color.G + 0.114 * Color.B return Luminance > 0.5 and Color3.fromRGB(18, 18, 22) or Color3.fromRGB(246, 246, 250) end local ActiveTextColor = ContrastText(Accent) local Container = Instance.new("Frame") Container.Name = "Segmented" Container.BackgroundTransparency = 1 Container.Size = UDim2.new(1, 0, 0, 38) Container.Parent = Section local NameLabel = Instance.new("TextLabel") NameLabel.Name = "Result_Name" NameLabel.FontFace = Font.new(Assets.InterFont) NameLabel.Text = Settings.Name or Settings.Title or "" NameLabel.TextColor3 = TextPrimary NameLabel.TextTransparency = 0.5 NameLabel.TextSize = 13 NameLabel.TextXAlignment = Enum.TextXAlignment.Left NameLabel.TextTruncate = Enum.TextTruncate.AtEnd NameLabel.AnchorPoint = Vector2.new(0, 0.5) NameLabel.Position = UDim2.fromScale(0, 0.5) NameLabel.Size = UDim2.new(0.4, 0, 1, 0) NameLabel.BackgroundTransparency = 1 NameLabel:SetAttribute("NoApplyTheme", true) NameLabel.Parent = Container local Bar = Instance.new("Frame") Bar.Name = "Bar" Bar.AnchorPoint = Vector2.new(1, 0.5) Bar.Position = UDim2.fromScale(1, 0.5) Bar.Size = UDim2.new(0, 0, 0, 27) Bar.AutomaticSize = Enum.AutomaticSize.X Bar.BackgroundColor3 = ThemeAttr("DropdownColor", Color3.fromRGB(28, 28, 34)) Bar.BackgroundTransparency = 0.35 Bar:SetAttribute("NoApplyTheme", true) Bar.Parent = Container local BarCorner = Instance.new("UICorner") BarCorner.CornerRadius = UDim.new(0, 8) BarCorner.Parent = Bar local BarPadding = Instance.new("UIPadding") BarPadding.PaddingLeft = UDim.new(0, 3) BarPadding.PaddingRight = UDim.new(0, 3) BarPadding.PaddingTop = UDim.new(0, 3) BarPadding.PaddingBottom = UDim.new(0, 3) BarPadding.Parent = Bar local BarLayout = Instance.new("UIListLayout") BarLayout.FillDirection = Enum.FillDirection.Horizontal BarLayout.VerticalAlignment = Enum.VerticalAlignment.Center BarLayout.SortOrder = Enum.SortOrder.LayoutOrder BarLayout.Padding = UDim.new(0, 2) BarLayout.Parent = Bar local Pills = {} local function Select(Option, Fire) SegmentedFunctions.Value = Option for Value, Pill in pairs(Pills) do local Active = (Value == Option) Utility:QuickTween(Pill.Bg, { BackgroundTransparency = Active and 0.06 or 1 }) Utility:QuickTween(Pill.Label, { TextTransparency = Active and 0 or 0.4, TextColor3 = Active and ActiveTextColor or TextSecondary, }) end if Fire then if Settings.Callback then Settings.Callback(Option) end for _, fn in ipairs(SegmentedFunctions._changed) do fn(Option) end end end for _, Option in ipairs(Options) do local Pill = Instance.new("TextButton") Pill.Name = "Pill" Pill.AutoButtonColor = false Pill.Text = "" Pill.BackgroundTransparency = 1 Pill.AutomaticSize = Enum.AutomaticSize.X Pill.Size = UDim2.new(0, 0, 1, 0) Pill.Parent = Bar local Bg = Instance.new("Frame") Bg.Name = "Bg" Bg.BackgroundColor3 = Accent Bg.BackgroundTransparency = 1 Bg.BorderSizePixel = 0 Bg.Size = UDim2.fromScale(1, 1) Bg:SetAttribute("NoApplyTheme", true) Bg.Parent = Pill local BgCorner = Instance.new("UICorner") BgCorner.CornerRadius = UDim.new(0, 6) BgCorner.Parent = Bg local Label = Instance.new("TextLabel") Label.Name = "Result_PillLabel" Label.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) Label.Text = tostring(Option) Label.TextColor3 = TextSecondary Label.TextTransparency = 0.4 Label.TextSize = 12 Label.AutomaticSize = Enum.AutomaticSize.X Label.Size = UDim2.new(0, 0, 1, 0) Label.BackgroundTransparency = 1 Label:SetAttribute("NoApplyTheme", true) Label.Parent = Pill local LabelPadding = Instance.new("UIPadding") LabelPadding.PaddingLeft = UDim.new(0, 11) LabelPadding.PaddingRight = UDim.new(0, 11) LabelPadding.Parent = Label Pills[Option] = { Bg = Bg, Label = Label } Pill.MouseButton1Click:Connect(function() Select(Option, true) end) end function SegmentedFunctions:OnChanged(fn) if type(fn) == "function" then table.insert(self._changed, fn) end return self end function SegmentedFunctions:SetValue(Option) Select(Option, true) return self end function SegmentedFunctions:GetValue() return self.Value end function SegmentedFunctions:SetVisibility(State) Container.Visible = State end function SegmentedFunctions:ReturnClass() return "Segmented" end function SegmentedFunctions:Destroy() Container:Destroy() end Select(SegmentedFunctions.Value, false) if Flag then WaveLibrary.Options[Flag] = SegmentedFunctions end return SegmentedFunctions end end end R["Wave/UserInterface/Components/Slider.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Slider(Settings, Flag) local SliderFunctions = { Settings = Settings, IgnoreConfig = Settings.IgnoreConfig, Class = "Slider", Tab = Requirements.TabName, } if not Flag then Flag = "WriteHere" end if Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(SliderFunctions.Settings.Name, " ", "_") end local Slider = Instance.new("Frame") Slider.Name = "Slider" Slider.AutomaticSize = Enum.AutomaticSize.Y Slider.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Slider.BackgroundTransparency = 1 Slider.BorderColor3 = Color3.fromRGB(0, 0, 0) Slider.BorderSizePixel = 0 Slider.Size = UDim2.new(1, 0, 0, 38) Slider.Parent = Section local SliderName = Instance.new("TextLabel") SliderName.Name = "SliderName" SliderName.FontFace = Font.new(Assets.InterFont) SliderName.Text = SliderFunctions.Settings.Name SliderName.RichText = true SliderName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") SliderName.TextSize = 13 SliderName.TextTransparency = 0.5 SliderName.TextTruncate = Enum.TextTruncate.AtEnd SliderName.TextXAlignment = Enum.TextXAlignment.Left SliderName.TextYAlignment = Enum.TextYAlignment.Top SliderName.AnchorPoint = Vector2.new(0, 0.5) SliderName.AutomaticSize = Enum.AutomaticSize.XY SliderName.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderName.BackgroundTransparency = 1 SliderName.BorderColor3 = Color3.fromRGB(0, 0, 0) SliderName.BorderSizePixel = 0 SliderName.Position = UDim2.fromScale(1.3e-07, 0.5) SliderName.Parent = Slider if Settings.PremiumFeature then SliderName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }) PremiumGradient.Rotation = 0 PremiumGradient.Parent = SliderName end local SliderElements = Instance.new("Frame") SliderElements.Name = "SliderElements" SliderElements.AnchorPoint = Vector2.new(1, 0) SliderElements.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderElements.BackgroundTransparency = 1 SliderElements.BorderColor3 = Color3.fromRGB(0, 0, 0) SliderElements.BorderSizePixel = 0 SliderElements.Position = UDim2.fromScale(1, 0) SliderElements.Size = UDim2.fromScale(1, 1) local SliderValue = Instance.new("TextBox") SliderValue.Name = "SliderValue" SliderValue.FontFace = Font.new(Assets.InterFont) SliderValue.TextColor3 = Color3.fromRGB(255, 255, 255) SliderValue.TextSize = 12 SliderValue.TextTransparency = 0.1 SliderValue.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderValue.BackgroundTransparency = 0.95 SliderValue.BorderColor3 = Color3.fromRGB(0, 0, 0) SliderValue.BorderSizePixel = 0 SliderValue.LayoutOrder = 1 SliderValue.Position = UDim2.fromScale(-0.0789, 0.171) SliderValue.Size = UDim2.fromOffset(41, 21) SliderValue.ClipsDescendants = true if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then SliderValue.TextEditable = false SliderValue.ClearTextOnFocus = false SliderValue.TextTransparency = 0.8 end local SliderValueUICorner = Instance.new("UICorner") SliderValueUICorner.Name = "SliderValueUICorner" SliderValueUICorner.CornerRadius = UDim.new(0, 4) SliderValueUICorner.Parent = SliderValue local SliderValueUIStroke = Instance.new("UIStroke") SliderValueUIStroke.Name = "SliderValueUIStroke" SliderValueUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border SliderValueUIStroke.Color = Color3.fromRGB(255, 255, 255) SliderValueUIStroke.Transparency = 0.9 SliderValueUIStroke.Parent = SliderValue local SliderValueUIPadding = Instance.new("UIPadding") SliderValueUIPadding.Name = "SliderValueUIPadding" SliderValueUIPadding.PaddingLeft = UDim.new(0, 2) SliderValueUIPadding.PaddingRight = UDim.new(0, 2) SliderValueUIPadding.Parent = SliderValue SliderValue.Parent = SliderElements local SliderElementsUIListLayout = Instance.new("UIListLayout") SliderElementsUIListLayout.Name = "SliderElementsUIListLayout" SliderElementsUIListLayout.Padding = UDim.new(0, 20) SliderElementsUIListLayout.FillDirection = Enum.FillDirection.Horizontal SliderElementsUIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right SliderElementsUIListLayout.SortOrder = Enum.SortOrder.LayoutOrder SliderElementsUIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center SliderElementsUIListLayout.Parent = SliderElements local SliderBar = Instance.new("ImageLabel") SliderBar.Name = "SliderBar" SliderBar.Image = Assets.SliderBar SliderBar.ImageColor3 = Color3.fromRGB(87, 86, 86) SliderBar.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderBar.BackgroundTransparency = 1 SliderBar.BorderColor3 = Color3.fromRGB(0, 0, 0) SliderBar.BorderSizePixel = 0 SliderBar.Position = UDim2.fromScale(0.219, 0.457) SliderBar.Size = UDim2.fromOffset(123, 3) local SliderHead = Instance.new("ImageButton") SliderHead.Name = "SliderHead" SliderHead.Image = Assets.SliderHead SliderHead.AnchorPoint = Vector2.new(0.5, 0.5) SliderHead.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderHead.BackgroundTransparency = 1 SliderHead.BorderColor3 = Color3.fromRGB(0, 0, 0) SliderHead.BorderSizePixel = 0 SliderHead.Position = UDim2.fromScale(1, 0.5) SliderHead.Size = UDim2.fromOffset(12, 12) SliderHead.Parent = SliderBar local IsHidden = false local SliderConnection = nil local PreviousNameTransparency = 0.5 local PreviousValueTransparency = 0.1 local Dragging = false if not Settings.PremiumFeature then SliderHead.MouseEnter:Connect(function() if IsHidden then return end Utility:QuickTween(SliderName, { TextTransparency = 0 }) end) SliderHead.MouseLeave:Connect(function() if IsHidden then return end Utility:QuickTween(SliderName, { TextTransparency = PreviousNameTransparency }) end) SliderValue.MouseEnter:Connect(function() if IsHidden then return end Utility:QuickTween(SliderName, { TextTransparency = 0 }) end) SliderValue.MouseLeave:Connect(function() if IsHidden then return end Utility:QuickTween(SliderName, { TextTransparency = PreviousNameTransparency }) end) end if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then SliderBar.ImageTransparency = 0.6 SliderHead.ImageTransparency = 0.3 end SliderBar.Parent = SliderElements local SliderElementsUIPadding = Instance.new("UIPadding") SliderElementsUIPadding.Name = "SliderElementsUIPadding" SliderElementsUIPadding.PaddingTop = UDim.new(0, 3) SliderElementsUIPadding.Parent = SliderElements SliderElements.Parent = Slider local DisplayMethods = { Thousandths = function(SliderDisplayValue) return string.format("%.3f", SliderDisplayValue) end, Hundredths = function(SliderDisplayValue) return string.format("%.2f", SliderDisplayValue) end, Tenths = function(SliderDisplayValue) return string.format("%.1f", SliderDisplayValue) end, Round = function(SliderDisplayValue, Precision) local NumericValue = tonumber(SliderDisplayValue) or 0 if Precision then return string.format("%." .. Precision .. "f", NumericValue) else return tostring(math.round(NumericValue)) end end, Degrees = function(SliderDisplayValue, Precision) local FormattedValue = Precision and string.format("%." .. Precision .. "f", SliderDisplayValue) or tostring(SliderDisplayValue) return FormattedValue .. "°" end, Percent = function(SliderDisplayValue, Precision) local Percentage = (SliderDisplayValue - SliderFunctions.Settings.Minimum) / (SliderFunctions.Settings.Maximum - SliderFunctions.Settings.Minimum) * 100 return Precision and string.format("%." .. Precision .. "f", Percentage) .. "%" or tostring(math.round(Percentage)) .. "%" end, Value = function(SliderDisplayValue, Precision) return Precision and string.format("%." .. Precision .. "f", SliderDisplayValue) or tostring(SliderDisplayValue) end, Time24Hour = function(SliderDisplayValue) local TotalSeconds = math.floor(SliderDisplayValue) local Hours = math.floor(TotalSeconds / 3600) % 24 local Minutes = math.floor((TotalSeconds % 3600) / 60) local Seconds = TotalSeconds % 60 return string.format("%02d:%02d:%02d", Hours, Minutes, Seconds) end, Time12Hour = function(SliderDisplayValue) local TotalSeconds = math.floor(SliderDisplayValue) local Hours24 = math.floor(TotalSeconds / 3600) % 24 local Minutes = math.floor((TotalSeconds % 3600) / 60) local Seconds = TotalSeconds % 60 local Hours12 = Hours24 % 12 if Hours12 == 0 then Hours12 = 12 end local Period = Hours24 >= 12 and "PM" or "AM" return string.format("%02d:%02d:%02d %s", Hours12, Minutes, Seconds, Period) end } local ValueDisplayMethod = DisplayMethods[SliderFunctions.Settings.DisplayMethod] or DisplayMethods.Value local FinalValue local function SetValue(Val, IgnoreCallback) local PosXScale if typeof(Val) == "Instance" then local Input = Val PosXScale = math.clamp((Input.Position.X - SliderBar.AbsolutePosition.X) / SliderBar.AbsoluteSize.X, 0, 1) else local Value = Val PosXScale = (Value - SliderFunctions.Settings.Minimum) / (SliderFunctions.Settings.Maximum - Settings.Minimum) end local Pos = UDim2.new(PosXScale, 0, 0.5, 0) SliderHead.Position = Pos FinalValue = PosXScale * (SliderFunctions.Settings.Maximum - SliderFunctions.Settings.Minimum) + Settings.Minimum SliderValue.Text = (Settings.Prefix or "") .. ValueDisplayMethod(FinalValue, SliderFunctions.Settings.Precision) .. (Settings.Suffix or "") if not IgnoreCallback then task.spawn(function() if SliderFunctions.Settings.Callback then SliderFunctions.Settings.Callback(FinalValue) end end) end SliderFunctions.Value = FinalValue end SetValue(SliderFunctions.Settings.Default, true) local function ConnectSliderEvents() SliderHead.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end if IsHidden then return end Dragging = true SetValue(Input) end end) SliderHead.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then if not Utility:IsPremiumHubUser() and Settings.PremiumFeature then return end if IsHidden then return end Dragging = false if SliderFunctions.Settings.OnInputComplete then SliderFunctions.Settings.OnInputComplete(FinalValue) end end end) SliderValue.FocusLost:Connect(function(EnterPressed) if IsHidden then return end local InputText = SliderValue.Text local Value, IsPercent = InputText:match("^(%-?%d+%.?%d*)(%%?)$") if Value then Value = tonumber(Value) IsPercent = IsPercent == "%" if IsPercent then Value = SliderFunctions.Settings.Minimum + (Value / 100) * (SliderFunctions.Settings.Maximum - SliderFunctions.Settings.Minimum) end local NewValue = math.clamp(Value, SliderFunctions.Settings.Minimum, SliderFunctions.Settings.Maximum) SetValue(NewValue) else SliderValue.Text = ValueDisplayMethod(SliderValue) end if SliderFunctions.Settings.OnInputComplete then SliderFunctions.Settings.OnInputComplete(FinalValue) end end) SliderConnection = Services.UserInputService.InputChanged:Connect(function(Input) if Dragging and not IsHidden and (Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch) then SetValue(Input) end end) end ConnectSliderEvents() local function UpdateSliderBarSize() local Padding = SliderElementsUIListLayout.Padding.Offset local SliderValueWidth = SliderValue.AbsoluteSize.X local SliderNameWidth = SliderName.AbsoluteSize.X local TotalWidth = SliderElements.AbsoluteSize.X local NewBarWidth = (TotalWidth - (Padding + SliderValueWidth + SliderNameWidth + 20)) / BaseUIScale.Scale SliderBar.Size = UDim2.new(SliderBar.Size.X.Scale, NewBarWidth, SliderBar.Size.Y.Scale, SliderBar.Size.Y.Offset) end UpdateSliderBarSize() SliderName:GetPropertyChangedSignal("AbsoluteSize"):Connect(UpdateSliderBarSize) Section:GetPropertyChangedSignal("AbsoluteSize"):Connect(UpdateSliderBarSize) function SliderFunctions:SetToolTip(Tip) if Slider:FindFirstChild("ToolTipFrame") then Slider:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = Slider local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Name = "TooltipText" TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.TextWrapped = false TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize( Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge) ) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) local function ShowTooltip() ToolTipFrame.Visible = true ToolTipFrame.BackgroundTransparency = 1 TooltipText.TextTransparency = 1 Services.TweenService:Create( ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1} ):Play() Services.TweenService:Create( TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0} ):Play() Services.TweenService:Create( TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8} ):Play() end local function HideTooltip() Services.TweenService:Create( ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1} ):Play() Services.TweenService:Create( TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1} ):Play() Services.TweenService:Create( TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1} ):Play() task.spawn(function() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end SliderHead.MouseEnter:Connect(ShowTooltip) SliderHead.MouseLeave:Connect(HideTooltip) SliderValue.MouseEnter:Connect(ShowTooltip) SliderValue.MouseLeave:Connect(HideTooltip) end function SliderFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end IsHidden = State if State then if not Settings.PremiumFeature then PreviousNameTransparency = SliderName.TextTransparency end PreviousValueTransparency = SliderValue.TextTransparency Services.TweenService:Create( SliderBar, TweenInfo.new(0.2), { ImageTransparency = 0.9 } ):Play() Services.TweenService:Create( SliderHead, TweenInfo.new(0.2), { ImageTransparency = 0.9 } ):Play() if not Settings.PremiumFeature then Services.TweenService:Create( SliderName, TweenInfo.new(0.2), { TextTransparency = 0.9 } ):Play() end Services.TweenService:Create( SliderValue, TweenInfo.new(0.2), { TextTransparency = 0.9, BackgroundTransparency = 0.99 } ):Play() Services.TweenService:Create( SliderValueUIStroke, TweenInfo.new(0.2), { Transparency = 0.95 } ):Play() SliderValue.TextEditable = false SliderHead.AutoButtonColor = false if SliderConnection then SliderConnection:Disconnect() SliderConnection = nil end else local originalBarTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.6 or 0 local originalHeadTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.3 or 0 Services.TweenService:Create( SliderBar, TweenInfo.new(0.2), { ImageTransparency = originalBarTransparency } ):Play() Services.TweenService:Create( SliderHead, TweenInfo.new(0.2), { ImageTransparency = originalHeadTransparency } ):Play() if not Settings.PremiumFeature then Services.TweenService:Create( SliderName, TweenInfo.new(0.2), { TextTransparency = PreviousNameTransparency } ):Play() end local valueTransparency = (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) and 0.8 or 0.1 local valueEditable = not (not Utility:IsPremiumHubUser() and Settings.PremiumFeature) Services.TweenService:Create( SliderValue, TweenInfo.new(0.2), { TextTransparency = valueTransparency, BackgroundTransparency = 0.95 } ):Play() Services.TweenService:Create( SliderValueUIStroke, TweenInfo.new(0.2), { Transparency = 0.9 } ):Play() SliderValue.TextEditable = valueEditable SliderHead.AutoButtonColor = false if not SliderConnection then SliderConnection = Services.UserInputService.InputChanged:Connect(function(Input) if Dragging and not IsHidden and (Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch) then SetValue(Input) end end) end end end function SliderFunctions:UpdateName(Name) SliderName.Text = Name end function SliderFunctions:SetVisibility(State) Slider.Visible = State end function SliderFunctions:UpdateValue(Value, IgnoreCallback) SetValue(tonumber(Value), IgnoreCallback or false) end function SliderFunctions:GetValue() return FinalValue end function SliderFunctions:ReturnClass() return SliderFunctions.Class end function SliderFunctions:ReturnTab() return SliderFunctions.Tab end function SliderFunctions:GetState() return not IsHidden end function SliderFunctions:ReturnSettings() return Settings end function SliderFunctions:Destroy() if SliderConnection then SliderConnection:Disconnect() end if Slider then Slider:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end if SliderFunctions.Settings.Hidden then if typeof(SliderFunctions.Settings.Hidden) == "table" then SliderFunctions:SetHidden(SliderFunctions.Settings.Hidden[1], SliderFunctions.Settings.Hidden[2]) else SliderFunctions:SetHidden(SliderFunctions.Settings.Hidden) end end if SliderFunctions.Settings.ToolTip then SliderFunctions:SetToolTip(Settings.ToolTip) end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then SliderFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then SliderFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then SliderFunctions:SetHidden(true, "Premium Feature") end if Flag then WaveLibrary.Options[Flag] = SliderFunctions end return SliderFunctions end end end R["Wave/UserInterface/Components/Spacer.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:Spacer() local SpacerFunctions = {} local Spacer = Instance.new("Frame") Spacer.Name = "Spacer" Spacer.AnchorPoint = Vector2.new(0, 1) Spacer.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Spacer.BackgroundTransparency = 1 Spacer.BorderColor3 = Color3.fromRGB(0, 0, 0) Spacer.BorderSizePixel = 0 Spacer.Position = UDim2.fromScale(0, 1) Spacer.Parent = Section function SpacerFunctions:Remove() Spacer:Destroy() end function SpacerFunctions:SetVisibility(State) Spacer.Visible = State end return SpacerFunctions end end end R["Wave/UserInterface/Components/Stat.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end function SectionFunctions:Stat(Settings, Flag) Settings = Settings or {} local StatFunctions = { Settings = Settings, Class = "Stat", Value = Settings.Value, Tab = Requirements.TabName, } local Accent = ThemeAttr("AccentPrimary", Color3.fromRGB(96, 165, 250)) local TextPrimary = ThemeAttr("TextPrimary", Color3.fromRGB(236, 236, 241)) local TextSecondary = ThemeAttr("TextSecondary", Color3.fromRGB(160, 160, 172)) local Card = Instance.new("Frame") Card.Name = "Stat" Card.BackgroundColor3 = ThemeAttr("Surface", Color3.fromRGB(26, 26, 32)) Card.BackgroundTransparency = 0.5 Card.BorderSizePixel = 0 Card.Size = UDim2.new(1, 0, 0, 58) Card:SetAttribute("NoApplyTheme", true) Card.Parent = Section local CardCorner = Instance.new("UICorner") CardCorner.CornerRadius = UDim.new(0, 10) CardCorner.Parent = Card local CardStroke = Instance.new("UIStroke") CardStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border CardStroke.Color = ThemeAttr("BorderColor", Color3.fromRGB(255, 255, 255)) CardStroke.Transparency = 0.9 CardStroke.Parent = Card local CardPadding = Instance.new("UIPadding") CardPadding.PaddingLeft = UDim.new(0, 14) CardPadding.PaddingRight = UDim.new(0, 14) CardPadding.Parent = Card local Row = Instance.new("UIListLayout") Row.FillDirection = Enum.FillDirection.Horizontal Row.VerticalAlignment = Enum.VerticalAlignment.Center Row.SortOrder = Enum.SortOrder.LayoutOrder Row.Padding = UDim.new(0, 12) Row.Parent = Card if Settings.Icon then local IconHolder = Instance.new("Frame") IconHolder.Name = "IconHolder" IconHolder.Size = UDim2.fromOffset(34, 34) IconHolder.BackgroundColor3 = Accent IconHolder.BackgroundTransparency = 0.82 IconHolder.BorderSizePixel = 0 IconHolder:SetAttribute("NoApplyTheme", true) IconHolder.Parent = Card local IconCorner = Instance.new("UICorner") IconCorner.CornerRadius = UDim.new(0, 9) IconCorner.Parent = IconHolder local Icon = Instance.new("ImageLabel") Icon.Name = "Result_Icon" Icon.AnchorPoint = Vector2.new(0.5, 0.5) Icon.Position = UDim2.fromScale(0.5, 0.5) Icon.Size = UDim2.fromOffset(18, 18) Icon.BackgroundTransparency = 1 Icon.Image = Settings.Icon Icon.ImageColor3 = Accent Icon:SetAttribute("NoApplyTheme", true) Icon.Parent = IconHolder end local TextColumn = Instance.new("Frame") TextColumn.Name = "TextColumn" TextColumn.BackgroundTransparency = 1 TextColumn.AutomaticSize = Enum.AutomaticSize.X TextColumn.Size = UDim2.new(0, 0, 1, 0) TextColumn.LayoutOrder = 1 TextColumn.Parent = Card local ColumnLayout = Instance.new("UIListLayout") ColumnLayout.SortOrder = Enum.SortOrder.LayoutOrder ColumnLayout.VerticalAlignment = Enum.VerticalAlignment.Center ColumnLayout.Padding = UDim.new(0, 1) ColumnLayout.Parent = TextColumn local LabelText = Instance.new("TextLabel") LabelText.Name = "Result_Label" LabelText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) LabelText.Text = string.upper(Settings.Title or Settings.Name or "Stat") LabelText.TextColor3 = TextSecondary LabelText.TextTransparency = 0.25 LabelText.TextSize = 11 LabelText.TextXAlignment = Enum.TextXAlignment.Left LabelText.AutomaticSize = Enum.AutomaticSize.XY LabelText.BackgroundTransparency = 1 LabelText:SetAttribute("NoApplyTheme", true) LabelText.Parent = TextColumn local ValueText = Instance.new("TextLabel") ValueText.Name = "Result_Value" ValueText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold, Enum.FontStyle.Normal) ValueText.RichText = true ValueText.Text = tostring(Settings.Value ~= nil and Settings.Value or "—") ValueText.TextColor3 = TextPrimary ValueText.TextSize = 19 ValueText.TextXAlignment = Enum.TextXAlignment.Left ValueText.AutomaticSize = Enum.AutomaticSize.XY ValueText.BackgroundTransparency = 1 ValueText.LayoutOrder = 1 ValueText:SetAttribute("NoApplyTheme", true) ValueText.Parent = TextColumn function StatFunctions:SetValue(New) self.Value = New ValueText.Text = tostring(New) return self end StatFunctions.UpdateValue = StatFunctions.SetValue function StatFunctions:SetLabel(New) LabelText.Text = string.upper(New) return self end StatFunctions.UpdateName = StatFunctions.SetLabel function StatFunctions:SetVisibility(State) Card.Visible = State end function StatFunctions:ReturnClass() return "Stat" end function StatFunctions:Destroy() Card:Destroy() end if Flag then WaveLibrary.Options[Flag] = StatFunctions end return StatFunctions end end end R["Wave/UserInterface/Components/SubLabel.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale function SectionFunctions:SubLabel(Settings, Flag) local SubLabelFunctions = { Settings = Settings } local SubLabel = Instance.new("Frame") SubLabel.Name = "SubLabel" SubLabel.AutomaticSize = Enum.AutomaticSize.Y SubLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0) SubLabel.BackgroundTransparency = 1 SubLabel.BorderColor3 = Color3.fromRGB(0, 0, 0) SubLabel.BorderSizePixel = 0 SubLabel.Size = UDim2.new(1, 0, 0, 0) SubLabel.Parent = Section local SubLabelText = Instance.new("TextLabel") SubLabelText.Name = "SubLabelText" SubLabelText.FontFace = Font.new(Assets.InterFont) SubLabelText.RichText = true SubLabelText.Text = SubLabelFunctions.Settings.Text or SubLabelFunctions.Settings.Name SubLabelText.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") SubLabelText.TextSize = 12 SubLabelText.TextTransparency = 0.7 SubLabelText.TextWrapped = true SubLabelText.TextXAlignment = Enum.TextXAlignment.Left SubLabelText.AutomaticSize = Enum.AutomaticSize.Y SubLabelText.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SubLabelText.BackgroundTransparency = 1 SubLabelText.BorderColor3 = Color3.fromRGB(0, 0, 0) SubLabelText.BorderSizePixel = 0 SubLabelText.Size = UDim2.fromScale(1, 1) SubLabelText.Parent = SubLabel function SubLabelFunctions:UpdateName(New) SubLabelText.Text = New end function SubLabelFunctions:SetVisibility(State) SubLabel.Visible = State end if Flag then WaveLibrary.Options[Flag] = SubLabelFunctions end return SubLabelFunctions end end end R["Wave/UserInterface/Components/Toggle.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local BaseUIScale = Requirements.BaseUIScale local ComponentManager = Requirements.ComponentManager function SectionFunctions:Toggle(Settings, Flag) local ToggleFunctions = { Settings = Settings, Tab = Requirements.TabName, IgnoreConfig = Settings.IgnoreConfig, Class = "Toggle", State = Settings.Default or false, IsHidden = false, Maid = {}, Elements = {} } if not Flag or Flag == "WriteHere" or Flag == "AutoWriteFlag" then Flag = string.gsub(Settings.Name, " ", "_") end local TWEEN_INFO = TweenInfo.new(0.2, Enum.EasingStyle.Sine) local TRANSPARENCY = { Enabled = {Toggle = 0, Head = 0}, Disabled = {Toggle = 0.5, Head = 0.05} } local POSITIONS = { Enabled = UDim2.new(1, 0, 0.5, 0), Disabled = UDim2.new(0.5, 0, 0.5, 0) } local ToggleOnColor = WindowFunctions:GetCurrentThemeAttribute("AccentPrimary") or Color3.fromRGB(96, 165, 250) local ToggleOffColor = WindowFunctions:GetCurrentThemeAttribute("ToggleColor") or Color3.fromRGB(72, 72, 84) -- Keep the knob readable on top of the ON track: a dark knob on a light -- accent (e.g. the Dark theme's near-white accent), white otherwise. local function ContrastColor(Color) local Luminance = 0.299 * Color.R + 0.587 * Color.G + 0.114 * Color.B return Luminance > 0.5 and Color3.fromRGB(28, 28, 34) or Color3.fromRGB(255, 255, 255) end local HeadOnColor = ContrastColor(ToggleOnColor) local HeadOffColor = Color3.fromRGB(255, 255, 255) local function CreateElements() local Elements = {} Elements.Toggle = Instance.new("Frame") Elements.Toggle.Name = "Toggle" Elements.Toggle.AutomaticSize = Enum.AutomaticSize.Y Elements.Toggle.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Elements.Toggle.BackgroundTransparency = 1 Elements.Toggle.BorderSizePixel = 0 Elements.Toggle.Size = UDim2.new(1, 0, 0, 38) Elements.Toggle.Parent = Section Elements.Highlight = Instance.new("Frame") Elements.Highlight.Name = "ToggleHighlight" Elements.Highlight.BackgroundColor3 = WindowFunctions:GetCurrentThemeAttribute("HoverColor") or Color3.fromRGB(255, 255, 255) Elements.Highlight.BackgroundTransparency = 1 Elements.Highlight.BorderSizePixel = 0 Elements.Highlight.AnchorPoint = Vector2.new(0.5, 0.5) Elements.Highlight.Position = UDim2.fromScale(0.5, 0.5) Elements.Highlight.Size = UDim2.new(1, 16, 1, 2) Elements.Highlight.ZIndex = 0 Elements.Highlight:SetAttribute("NoApplyTheme", true) Elements.Highlight.Parent = Elements.Toggle local HighlightCorner = Instance.new("UICorner") HighlightCorner.CornerRadius = UDim.new(0, 8) HighlightCorner.Parent = Elements.Highlight Elements.ToggleName = Instance.new("TextLabel") Elements.ToggleName.Name = "ToggleName" Elements.ToggleName.FontFace = Font.new(Assets.InterFont) Elements.ToggleName.Text = Settings.Name Elements.ToggleName.RichText = true Elements.ToggleName.TextColor3 = WindowFunctions:GetCurrentThemeAttribute("TextPrimary") Elements.ToggleName.TextSize = 13 Elements.ToggleName.TextTransparency = 0.5 Elements.ToggleName.TextTruncate = Enum.TextTruncate.AtEnd Elements.ToggleName.TextXAlignment = Enum.TextXAlignment.Left Elements.ToggleName.TextYAlignment = Enum.TextYAlignment.Top Elements.ToggleName.AnchorPoint = Vector2.new(0, 0.5) Elements.ToggleName.AutomaticSize = Enum.AutomaticSize.Y Elements.ToggleName.BackgroundTransparency = 1 Elements.ToggleName.Position = UDim2.fromScale(0, 0.5) Elements.ToggleName.Size = UDim2.new(1, -50, 0, 0) Elements.ToggleName.Parent = Elements.Toggle if Settings.PremiumFeature then Elements.ToggleName.TextTransparency = 0 local PremiumGradient = Instance.new("UIGradient") PremiumGradient.Color = WindowFunctions:GetCurrentThemeAttribute("PremiumGradientColor") or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 106, 255)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(163, 201, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(163, 201, 255)) }) PremiumGradient.Parent = Elements.ToggleName end Elements.ToggleButton = Instance.new("ImageButton") Elements.ToggleButton.Name = "ToggleButton" Elements.ToggleButton.Image = Assets.ToggleBackground Elements.ToggleButton.ImageColor3 = ToggleOffColor Elements.ToggleButton.AutoButtonColor = false Elements.ToggleButton.AnchorPoint = Vector2.new(1, 0.5) Elements.ToggleButton.BackgroundTransparency = 1 Elements.ToggleButton.BorderSizePixel = 0 Elements.ToggleButton.Position = UDim2.fromScale(1, 0.5) Elements.ToggleButton.Size = UDim2.fromOffset(41, 21) Elements.ToggleButton.ImageTransparency = 0.8 Elements.ToggleButton:SetAttribute("NoApplyTheme", true) Elements.ToggleButton.Parent = Elements.Toggle local ToggleUIPadding = Instance.new("UIPadding") ToggleUIPadding.PaddingBottom = UDim.new(0, 1) ToggleUIPadding.PaddingLeft = UDim.new(0, -2) ToggleUIPadding.PaddingRight = UDim.new(0, 3) ToggleUIPadding.PaddingTop = UDim.new(0, 1) ToggleUIPadding.Parent = Elements.ToggleButton Elements.TogglerHead = Instance.new("ImageLabel") Elements.TogglerHead.Name = "TogglerHead" Elements.TogglerHead.Image = Assets.TogglerHead Elements.TogglerHead.ImageColor3 = Color3.fromRGB(255, 255, 255) Elements.TogglerHead.AnchorPoint = Vector2.new(1, 0.5) Elements.TogglerHead.BackgroundTransparency = 1 Elements.TogglerHead.BorderSizePixel = 0 Elements.TogglerHead.Position = UDim2.fromScale(0.5, 0.5) Elements.TogglerHead.Size = UDim2.fromOffset(15, 15) Elements.TogglerHead.ZIndex = 2 Elements.TogglerHead.ImageTransparency = 0.8 Elements.TogglerHead:SetAttribute("NoApplyTheme", true) Elements.TogglerHead.Parent = Elements.ToggleButton return Elements end local function CreateKeybind() local KeybindComponents = ComponentManager.CreateKeybindComponents({ Ancestor = ToggleFunctions.Elements.Toggle, Class = ToggleFunctions.Class, Maid = ToggleFunctions.Maid, Functions = ToggleFunctions, Settings = Settings, Flag = Flag }) if KeybindComponents then ToggleFunctions.Elements.KeybindButton = KeybindComponents.KeybindButton ToggleFunctions.Elements.KeybindLabel = KeybindComponents.KeybindLabel end end local function UpdateToggleState(State) local TransparencyValues = State and TRANSPARENCY.Enabled or TRANSPARENCY.Disabled local Position = State and POSITIONS.Enabled or POSITIONS.Disabled Utility:PropertyTween(ToggleFunctions.Elements.ToggleButton, TWEEN_INFO, { ImageTransparency = TransparencyValues.Toggle, ImageColor3 = State and ToggleOnColor or ToggleOffColor }):Play() Utility:PropertyTween(ToggleFunctions.Elements.TogglerHead, TWEEN_INFO, { ImageTransparency = TransparencyValues.Head, Position = Position, ImageColor3 = State and HeadOnColor or HeadOffColor }):Play() ToggleFunctions.State = State end local function ToggleTrigger() if Settings.Fixed or ToggleFunctions.IsHidden then return end ToggleFunctions.State = not ToggleFunctions.State UpdateToggleState(ToggleFunctions.State) if Settings.Callback then if Settings.ToggleOffActive then for _, SignalToDisable in pairs(Settings.ToggleOffActive) do end end Settings.Callback(ToggleFunctions.State) end end local function SetupConnections() ToggleFunctions.Maid.ToggleClick = ToggleFunctions.Elements.ToggleButton.MouseButton1Click:Connect(ToggleTrigger) if not Settings.PremiumFeature then ToggleFunctions.Maid.ToggleHover = ToggleFunctions.Elements.Toggle.MouseEnter:Connect(function() if ToggleFunctions.IsHidden then return end Utility:QuickTween(ToggleFunctions.Elements.Highlight, {BackgroundTransparency = 0.93}) Utility:QuickTween(ToggleFunctions.Elements.ToggleName, {TextTransparency = 0}) end) ToggleFunctions.Maid.ToggleLeave = ToggleFunctions.Elements.Toggle.MouseLeave:Connect(function() if ToggleFunctions.IsHidden then return end Utility:QuickTween(ToggleFunctions.Elements.Highlight, {BackgroundTransparency = 1}) Utility:QuickTween(ToggleFunctions.Elements.ToggleName, {TextTransparency = 0.5}) end) end end local function IsPlaceIdAllowed(PlaceIdSetting) if not PlaceIdSetting then return true end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end local function IsPlaceIdForbidden(PlaceIdSetting) if not PlaceIdSetting then return false end local CurrentPlaceId = game.PlaceId if type(PlaceIdSetting) == "table" then for _, PlaceId in pairs(PlaceIdSetting) do if CurrentPlaceId == PlaceId then return true end end return false else return CurrentPlaceId == PlaceIdSetting end end function ToggleFunctions:Toggle() ToggleTrigger() end function ToggleFunctions:ServerToggle() ToggleFunctions.State = not ToggleFunctions.State UpdateToggleState(ToggleFunctions.State) if Settings.Callback then Settings.Callback(ToggleFunctions.State) end end function ToggleFunctions:UpdateState(State, Callback) ToggleFunctions.State = State UpdateToggleState(ToggleFunctions.State) if Callback then if Settings.Callback then Settings.Callback(ToggleFunctions.State) end end end function ToggleFunctions:GetState() return ToggleFunctions.State end function ToggleFunctions:ReturnHidden() return ToggleFunctions.IsHidden end function ToggleFunctions:ReturnSettings() return Settings end function ToggleFunctions:ReturnClass() return ToggleFunctions.Class end function ToggleFunctions:ReturnTab() return ToggleFunctions.Tab end function ToggleFunctions:UpdateName(Name) ToggleFunctions.Elements.ToggleName.Text = Name end function ToggleFunctions:SetToolTip(Tip) if ToggleFunctions.Elements.Toggle:FindFirstChild("ToolTipFrame") then ToggleFunctions.Elements.Toggle:FindFirstChild("ToolTipFrame"):Destroy() end if not Tip or Tip == "" then return end local ToolTipFrame = Instance.new("Frame") ToolTipFrame.Name = "ToolTipFrame" ToolTipFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) ToolTipFrame.BackgroundTransparency = 1 ToolTipFrame.BorderSizePixel = 0 ToolTipFrame.AnchorPoint = Vector2.new(0.5, 1) ToolTipFrame.Position = UDim2.new(0.5, 0, 0, -5) ToolTipFrame.Visible = false ToolTipFrame.ZIndex = 200 ToolTipFrame.Parent = ToggleFunctions.Elements.Toggle local TooltipCorner = Instance.new("UICorner") TooltipCorner.CornerRadius = UDim.new(0, 6) TooltipCorner.Parent = ToolTipFrame local TooltipStroke = Instance.new("UIStroke") TooltipStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border TooltipStroke.LineJoinMode = Enum.LineJoinMode.Round TooltipStroke.Color = Color3.fromRGB(255, 255, 255) TooltipStroke.Thickness = 0.1 TooltipStroke.Transparency = 0.2 TooltipStroke.Parent = ToolTipFrame local TooltipText = Instance.new("TextLabel") TooltipText.Text = Tip TooltipText.FontFace = Font.new(Assets.InterFont) TooltipText.TextColor3 = Color3.fromRGB(200, 220, 200) TooltipText.TextSize = 12 TooltipText.TextTransparency = 1 TooltipText.BackgroundTransparency = 1 TooltipText.TextXAlignment = Enum.TextXAlignment.Center TooltipText.TextYAlignment = Enum.TextYAlignment.Center TooltipText.Size = UDim2.new(1, -12, 1, 0) TooltipText.Position = UDim2.new(0, 6, 0, 0) TooltipText.Parent = ToolTipFrame local TextBounds = Services.TextService:GetTextSize(Tip, TooltipText.TextSize, Enum.Font.SourceSansBold, Vector2.new(math.huge, math.huge)) local TooltipWidth = math.max(80, TextBounds.X + 50) local TooltipHeight = math.max(28, TextBounds.Y + 12) ToolTipFrame.Size = UDim2.new(0, TooltipWidth, 0, TooltipHeight) ToggleFunctions.Maid.TooltipShow = ToggleFunctions.Elements.ToggleButton.MouseEnter:Connect(function() ToolTipFrame.Visible = true Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0.1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 0.8}):Play() end) ToggleFunctions.Maid.TooltipHide = ToggleFunctions.Elements.ToggleButton.MouseLeave:Connect(function() Services.TweenService:Create(ToolTipFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Services.TweenService:Create(TooltipText, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() Services.TweenService:Create(TooltipStroke, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Transparency = 1}):Play() task.wait(0.2) if ToolTipFrame and ToolTipFrame.Parent then ToolTipFrame.Visible = false end end) end function ToggleFunctions:SetHidden(State, Reason) if Reason then self:SetToolTip(Reason) end ToggleFunctions.IsHidden = State ComponentManager.UpdateKeybindDetection(State, Flag, { KeybindButton = ToggleFunctions.Elements.KeybindButton, KeybindLabel = ToggleFunctions.Elements.KeybindLabel, }) if State then Services.TweenService:Create(ToggleFunctions.Elements.ToggleButton, TweenInfo.new(0.2), {ImageTransparency = 0.9}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(ToggleFunctions.Elements.ToggleName, TweenInfo.new(0.2), {TextTransparency = 0.9}):Play() end if ToggleFunctions.Maid.ToggleClick then ToggleFunctions.Maid.ToggleClick:Disconnect() ToggleFunctions.Maid.ToggleClick = nil end else Services.TweenService:Create(ToggleFunctions.Elements.ToggleButton, TweenInfo.new(0.2), {ImageTransparency = 0.5}):Play() if not Settings.PremiumFeature then Services.TweenService:Create(ToggleFunctions.Elements.ToggleName, TweenInfo.new(0.2), {TextTransparency = 0.5}):Play() end ToggleFunctions.Maid.ToggleClick = ToggleFunctions.Elements.ToggleButton.MouseButton1Click:Connect(ToggleTrigger) end end function ToggleFunctions:SetVisibility(State) ToggleFunctions.Elements.Toggle.Visible = State end function ToggleFunctions:Destroy() for ConnectionName, Connection in pairs(ToggleFunctions.Maid) do if type(Connection) == "userdata" and Connection.Disconnect then Connection:Disconnect() end end table.clear(ToggleFunctions.Maid) if ToggleFunctions.Elements.Toggle then ToggleFunctions.Elements.Toggle:Destroy() end if Flag and WaveLibrary.Options[Flag] then WaveLibrary.Options[Flag] = nil end end ToggleFunctions.Elements = CreateElements() CreateKeybind() SetupConnections() UpdateToggleState(ToggleFunctions.State) if Settings.Hidden then if typeof(Settings.Hidden) == "table" then ToggleFunctions:SetHidden(Settings.Hidden[1], Settings.Hidden[2]) else ToggleFunctions:SetHidden(Settings.Hidden) end end if Settings.Default == true and not Settings.IgnoreDefault and Settings.Callback then task.defer(function() Settings.Callback(Settings.Default) end) end if Settings.ToolTip then ToggleFunctions:SetToolTip(Settings.ToolTip) end if Settings.PremiumFeature and not Utility:IsPremiumHubUser() then ToggleFunctions:SetHidden(true, "Premium Feature") end if not IsPlaceIdAllowed(Settings.AllowedPlaceId) then ToggleFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if IsPlaceIdForbidden(Settings.ForbiddenPlaceId) then ToggleFunctions:SetHidden(true, "Not in the right PlaceId to use this feature.") end if Flag then WaveLibrary.Options[Flag] = ToggleFunctions end return ToggleFunctions end end end R["Wave/UserInterface/Components/Viewport.lua"] = function(...) return function(Requirements) local Section = Requirements.Section local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local SectionFunctions = Requirements.SectionFunctions local RunService = Services.RunService local UserInputService = Services.UserInputService local function ThemeAttr(Name, Fallback) local ok, value = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and value ~= nil then return value end return Fallback end function SectionFunctions:Viewport(Settings, Flag) Settings = Settings or {} local Height = Settings.Height or 200 local HasTitle = Settings.Title ~= nil and Settings.Title ~= "" local ViewportFunctions = { Settings = Settings, Class = "Viewport", Tab = Requirements.TabName, } -- ---- visual container --------------------------------------------- local Holder = Instance.new("Frame") Holder.Name = "Viewport" Holder.BackgroundTransparency = 1 Holder.AutomaticSize = Enum.AutomaticSize.Y Holder.Size = UDim2.new(1, 0, 0, 0) Holder.Parent = Section local HolderLayout = Instance.new("UIListLayout") HolderLayout.Padding = UDim.new(0, 8) HolderLayout.SortOrder = Enum.SortOrder.LayoutOrder HolderLayout.Parent = Holder if HasTitle then local HeaderText = Instance.new("TextLabel") HeaderText.Name = "HeaderText" HeaderText.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium, Enum.FontStyle.Normal) HeaderText.Text = Settings.Title HeaderText.RichText = true HeaderText.TextColor3 = ThemeAttr("HeaderColor", Color3.fromRGB(220, 220, 220)) HeaderText.TextTransparency = ThemeAttr("HeaderTransparency", 0.3) HeaderText.TextSize = 15 HeaderText.TextXAlignment = Enum.TextXAlignment.Left HeaderText.AutomaticSize = Enum.AutomaticSize.Y HeaderText.BackgroundTransparency = 1 HeaderText.Size = UDim2.new(1, 0, 0, 0) HeaderText.Parent = Holder end local ViewportFrame = Instance.new("ViewportFrame") ViewportFrame.Name = "ViewportDisplay" ViewportFrame.Size = UDim2.new(1, 0, 0, Height) ViewportFrame.LayoutOrder = 1 ViewportFrame.BackgroundColor3 = ThemeAttr("DropdownColor", Color3.fromRGB(20, 20, 26)) ViewportFrame.BackgroundTransparency = 0.1 ViewportFrame.BorderSizePixel = 0 ViewportFrame.Ambient = Color3.fromRGB(170, 170, 180) ViewportFrame.LightColor = Color3.fromRGB(255, 255, 255) ViewportFrame.LightDirection = Vector3.new(-0.6, -1, -0.4) -- Active so the orbit drag is sunk here and never reaches the window's -- whole-window drag handler (otherwise rotating also moves the window). ViewportFrame.Active = true ViewportFrame.Parent = Holder ViewportFrame:SetAttribute("NoApplyTheme", true) local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, math.max(ThemeAttr("CornerRadius", 10) - 2, 4)) Corner.Parent = ViewportFrame local Stroke = Instance.new("UIStroke") Stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border Stroke.Color = ThemeAttr("BorderColor", Color3.fromRGB(120, 120, 130)) Stroke.Transparency = ThemeAttr("StrokeTransparency", 0.7) Stroke.Parent = ViewportFrame local Gradient = Instance.new("UIGradient") Gradient.Rotation = 90 Gradient.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255), Color3.fromRGB(205, 205, 215)) Gradient.Parent = ViewportFrame -- subtle "drag to rotate" hint local Hint = Instance.new("TextLabel") Hint.Name = "Hint" Hint.AnchorPoint = Vector2.new(1, 1) Hint.Position = UDim2.new(1, -8, 1, -6) Hint.Size = UDim2.fromOffset(120, 14) Hint.BackgroundTransparency = 1 Hint.Text = "drag to rotate" Hint.FontFace = Font.new(Assets.InterFont) Hint.TextColor3 = Color3.fromRGB(255, 255, 255) Hint.TextTransparency = 0.55 Hint.TextSize = 11 Hint.TextXAlignment = Enum.TextXAlignment.Right Hint.ZIndex = 5 Hint.Parent = ViewportFrame local Camera = Instance.new("Camera") Camera.FieldOfView = 50 Camera.Parent = ViewportFrame ViewportFrame.CurrentCamera = Camera -- ---- camera / model state ----------------------------------------- local Connections = {} local CurrentModel local Target = Vector3.zero local Azimuth, Elevation, Distance = math.rad(35), math.rad(12), 12 local BaseDistance = Distance local MinDistance, MaxDistance = 4, 40 local Dragging, LastPosition = false, nil local function UpdateCamera() local x = math.cos(Elevation) * math.sin(Azimuth) local y = math.sin(Elevation) local z = math.cos(Elevation) * math.cos(Azimuth) local position = Target + Vector3.new(x, y, z) * Distance Camera.CFrame = CFrame.lookAt(position, Target) end local function SetModel(Model) if CurrentModel then CurrentModel:Destroy() CurrentModel = nil end if not Model then return end -- Player characters (and some models) are Archivable=false, which makes -- :Clone() return nil. Temporarily flip it on the whole tree, then restore. local ok, clone = pcall(function() local restore = {} if not Model.Archivable then Model.Archivable = true restore[#restore + 1] = Model end for _, descendant in ipairs(Model:GetDescendants()) do if not descendant.Archivable then descendant.Archivable = true restore[#restore + 1] = descendant end end local result = Model:Clone() for _, instance in ipairs(restore) do instance.Archivable = false end return result end) if not ok or not clone then return end for _, descendant in ipairs(clone:GetDescendants()) do if descendant:IsA("BasePart") then descendant.Anchored = true descendant.CanCollide = false descendant.CanQuery = false descendant.CanTouch = false elseif descendant:IsA("LuaSourceContainer") or descendant:IsA("ParticleEmitter") or descendant:IsA("Sound") then descendant:Destroy() end end clone.Parent = ViewportFrame CurrentModel = clone local center, size if clone:IsA("Model") then local okBox, cf, sz = pcall(function() return clone:GetBoundingBox() end) if okBox then center, size = cf.Position, sz end elseif clone:IsA("BasePart") then center, size = clone.Position, clone.Size end center = center or Vector3.zero size = size or Vector3.new(4, 4, 4) -- Recenter to origin so framing is stable no matter where the model -- lives in the world (characters sit far from 0,0,0). local offset = CFrame.new(-center) if clone:IsA("Model") then for _, part in ipairs(clone:GetDescendants()) do if part:IsA("BasePart") then part.CFrame = offset * part.CFrame end end elseif clone:IsA("BasePart") then clone.CFrame = offset * clone.CFrame end Target = Vector3.zero Distance = math.clamp(size.Magnitude * 1.4, 5, 1000) BaseDistance = Distance MinDistance = math.max(Distance * 0.35, 2) MaxDistance = Distance * 2.75 Azimuth, Elevation = math.rad(35), math.rad(12) UpdateCamera() end -- The scrolling section we live in, so we can lock its scroll while the -- cursor is over the viewport (wheel = zoom the model, not scroll page). local ScrollAncestor do local parent = Holder.Parent while parent and parent ~= game do if parent:IsA("ScrollingFrame") then ScrollAncestor = parent break end parent = parent.Parent end end -- ---- interaction (mouse + touch orbit, scroll zoom) ---------------- Connections.Began = ViewportFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Dragging = true LastPosition = input.Position WaveLibrary.ViewportCapturingDrag = true -- block window drag (covers touch) end end) -- Hovering a viewport blocks the whole-window drag (covers mouse) and -- locks the section scroll so the wheel only zooms the model. Connections.Enter = ViewportFrame.MouseEnter:Connect(function() WaveLibrary.ViewportHovering = true if ScrollAncestor then ScrollAncestor.ScrollingEnabled = false end end) Connections.Leave = ViewportFrame.MouseLeave:Connect(function() WaveLibrary.ViewportHovering = false if ScrollAncestor then ScrollAncestor.ScrollingEnabled = true end end) Connections.Changed = UserInputService.InputChanged:Connect(function(input) if Dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) and LastPosition then local delta = input.Position - LastPosition LastPosition = input.Position Azimuth = Azimuth - delta.X * 0.0075 Elevation = math.clamp(Elevation + delta.Y * 0.0075, -1.45, 1.45) UpdateCamera() elseif input.UserInputType == Enum.UserInputType.MouseWheel then -- only zoom when the cursor is over the viewport local position, size = ViewportFrame.AbsolutePosition, ViewportFrame.AbsoluteSize local mouse = UserInputService:GetMouseLocation() - Vector2.new(0, 36) if mouse.X >= position.X and mouse.X <= position.X + size.X and mouse.Y >= position.Y and mouse.Y <= position.Y + size.Y then Distance = math.clamp(Distance - input.Position.Z * (Distance * 0.12), MinDistance, MaxDistance) UpdateCamera() end end end) Connections.Ended = UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Dragging = false WaveLibrary.ViewportCapturingDrag = false end end) -- ---- culling: only render when actually on-screen ------------------ local function IsOnScreen() if not Holder.Visible or Holder.Parent == nil then return false end local okState, state = pcall(function() return WindowFunctions:GetState() end) if okState and state == false then return false end local position, size = ViewportFrame.AbsolutePosition, ViewportFrame.AbsoluteSize if size.X <= 1 or size.Y <= 1 then return false end if ScrollAncestor then local sp, ss = ScrollAncestor.AbsolutePosition, ScrollAncestor.AbsoluteSize if position.X + size.X < sp.X or position.X > sp.X + ss.X or position.Y + size.Y < sp.Y or position.Y > sp.Y + ss.Y then return false end end return true end local OnScreen = true local Accumulator = 0 Connections.Render = RunService.Heartbeat:Connect(function(dt) if WaveLibrary.Unloaded then ViewportFunctions:Destroy() return end Accumulator = Accumulator + dt if Accumulator >= 0.15 then Accumulator = 0 local onScreen = IsOnScreen() if OnScreen ~= onScreen then OnScreen = onScreen -- Optimisation: keep the frame itself visible and just drop -- the camera so the 3D scene stops rendering off-screen, -- instead of hiding the whole viewport (which made it pop). ViewportFrame.CurrentCamera = onScreen and Camera or nil if not onScreen then WaveLibrary.ViewportHovering = false -- can't be hovering it off-screen if ScrollAncestor then ScrollAncestor.ScrollingEnabled = true end end end end -- only spend per-frame time when actually drawn if OnScreen and Settings.AutoRotate and not Dragging then Azimuth = Azimuth + dt * (Settings.RotateSpeed or 0.5) UpdateCamera() end end) Connections.Ancestry = Holder.AncestryChanged:Connect(function() if Holder.Parent == nil then ViewportFunctions:Destroy() end end) -- ---- public API ---------------------------------------------------- function ViewportFunctions:SetModel(Model) SetModel(Model) return self end function ViewportFunctions:Clear() SetModel(nil) return self end function ViewportFunctions:GetModel() return CurrentModel end function ViewportFunctions:GetCamera() return Camera end function ViewportFunctions:SetCamera(NewCamera) if typeof(NewCamera) == "Instance" and NewCamera:IsA("Camera") then NewCamera.Parent = ViewportFrame ViewportFrame.CurrentCamera = NewCamera Camera = NewCamera elseif typeof(NewCamera) == "CFrame" then Camera.CFrame = NewCamera end return self end function ViewportFunctions:SetAutoRotate(State) Settings.AutoRotate = State and true or false return self end function ViewportFunctions:ResetView() Azimuth, Elevation, Distance = math.rad(35), math.rad(12), BaseDistance UpdateCamera() return self end function ViewportFunctions:SetVisibility(State) Holder.Visible = State return self end function ViewportFunctions:ReturnClass() return "Viewport" end function ViewportFunctions:ReturnTab() return Requirements.TabName end function ViewportFunctions:Destroy() WaveLibrary.ViewportHovering = false WaveLibrary.ViewportCapturingDrag = false if ScrollAncestor then ScrollAncestor.ScrollingEnabled = true end for _, connection in pairs(Connections) do if typeof(connection) == "RBXScriptConnection" then connection:Disconnect() end end table.clear(Connections) if CurrentModel then CurrentModel:Destroy() CurrentModel = nil end if Holder then Holder:Destroy() end end UpdateCamera() if Settings.Model or Settings.Object then SetModel(Settings.Model or Settings.Object) end if Flag then WaveLibrary.Options[Flag] = ViewportFunctions end return ViewportFunctions end end end R["Wave/UserInterface/Imports/AssetCloak.lua"] = function(...) -- AssetCloak: hide our UI's asset ids from ContentProvider-based detection. -- -- What it intercepts (only for ids in the cloaked set): -- ContentProvider:GetAssetFetchStatus(id) -> Enum.AssetFetchStatus.None -- ContentProvider:GetAssetFetchStatusChangedSignal(id) -> dead signal (never fires) -- Everything else passes through untouched. Foreign asset ids stay real. -- -- Install strategy LADDER (each step is best-effort; we install as many as we can): -- 1. hookmetamethod(game, "__namecall", ...) -- modern (Synapse, Wave, Xeno, Solara) -- 2. raw __namecall swap via getrawmetatable -- legacy executors -- 3. hookfunction on the resolved method closures -- -- catches the dot-syntax bypass: cp.GetAssetFetchStatus(cp, id) doesn't -- go through __namecall, so a pure namecall hook misses it. -- -- Replacements are wrapped in newcclosure when available so debug.info("s") -- and iscclosure() see "[C]" the same way the original does. cloneref'd -- ContentProvider refs are matched by rawequal-then-ClassName, so the hook -- still fires when self is a different ref than the one we captured. local AssetCloak = {} -- ---- env probes (each executor exposes a different subset) ----------------- local function safe(fn) return type(fn) == "function" and fn or nil end local hookmetamethod_fn = safe(hookmetamethod) local getnamecallmethod_fn = safe(getnamecallmethod) local getrawmetatable_fn = safe(getrawmetatable) or safe(debug and debug.getmetatable) local setreadonly_fn = safe(setreadonly) or safe(make_writeable) or safe(makewriteable) local hookfunction_fn = safe(hookfunction) or safe(replaceclosure) or safe(detour_function) local newcclosure_fn = safe(newcclosure) or function(f) return f end -- ---- state ----------------------------------------------------------------- local Cloaked = {} local Installed = false local InstallMethods = {} -- list of strategies that actually patched local Enabled = true local cp local NoneStatus local DeadSignal local DeadBindable -- kept rooted so the Event isn't GC'd local OriginalNamecall -- set by strategy 1 or 2 local OriginalStatus -- set by strategy 3 local OriginalSignal -- set by strategy 3 -- ---- id helpers ------------------------------------------------------------ local function ExtractId(value) local t = type(value) if t == "string" then return value:match("rbxassetid://(%d+)") or value:match("rbxasset://(%d+)") or value:match("^(%d+)$") elseif t == "number" and value > 0 then return tostring(math.floor(value)) end return nil end function AssetCloak.Cloak(value) local id = ExtractId(value) if id then Cloaked[id] = true end end function AssetCloak.Uncloak(value) local id = ExtractId(value) if id then Cloaked[id] = nil end end function AssetCloak.IsCloaked(value) local id = ExtractId(value) return id ~= nil and Cloaked[id] == true end -- Recursively scan a table for asset ids in any form and cloak them. -- Bare-digit values shorter than 6 characters are ignored so we don't -- accidentally cloak things like font weights or short numeric flags. function AssetCloak.Harvest(t) local seen = {} local function walk(v) if type(v) == "table" then if seen[v] then return end seen[v] = true for _, child in pairs(v) do walk(child) end else local id = ExtractId(v) if id and #id >= 6 then Cloaked[id] = true end end end walk(t) end function AssetCloak.SetEnabled(b) Enabled = b and true or false end function AssetCloak.IsInstalled() return Installed end function AssetCloak.GetInstallMethods() return table.concat(InstallMethods, "+") end function AssetCloak.Count() local n = 0 for _ in pairs(Cloaked) do n = n + 1 end return n end -- ---- self matching (used only by the dot-syntax fallback) ------------------ -- The two namecall strategies do their own inline rawequal check on the hot -- path. Strategy 3 (hookfunction) can fire with any self the caller passes, -- so it uses this slightly more forgiving check. local function IsContentProvider(self) if rawequal(self, cp) then return true end local ok, cls = pcall(function() return self.ClassName end) return ok and cls == "ContentProvider" end -- ---- strategy 1: hookmetamethod (preferred) -------------------------------- -- HOT-PATH NOTE: __namecall fires on EVERY method call on EVERY instance in -- the game (Connect, FindFirstChild, GetDescendants, every property read via -- namecall, every tween signal). Anything we do here costs cumulatively across -- the whole UI. The body MUST early-out when self isn't the ContentProvider. local function tryHookmetamethod() if not (hookmetamethod_fn and getnamecallmethod_fn) then return false end local body = function(self, ...) -- Fast path: 99.999% of namecalls go here. Single rawequal + return. if not rawequal(self, cp) then return OriginalNamecall(self, ...) end -- Slow path: only ContentProvider calls land below. local m = getnamecallmethod_fn() if m == "GetAssetFetchStatus" then if Enabled then local id = ExtractId((...)) if id and Cloaked[id] then return NoneStatus end end elseif m == "GetAssetFetchStatusChangedSignal" then if Enabled then local id = ExtractId((...)) if id and Cloaked[id] then return DeadSignal end end end return OriginalNamecall(self, ...) end local ok, old = pcall(hookmetamethod_fn, game, "__namecall", newcclosure_fn(body)) if ok and type(old) == "function" then OriginalNamecall = old InstallMethods[#InstallMethods + 1] = "hookmetamethod" return true end return false end -- ---- strategy 2: raw metatable swap (legacy fallback) ---------------------- local function tryRawMetatable() if OriginalNamecall then return false end -- strategy 1 already won if not getrawmetatable_fn then return false end local ok, mt = pcall(getrawmetatable_fn, game) if not ok or type(mt) ~= "table" then return false end if setreadonly_fn then pcall(setreadonly_fn, mt, false) end local old = rawget(mt, "__namecall") if type(old) ~= "function" then if setreadonly_fn then pcall(setreadonly_fn, mt, true) end return false end OriginalNamecall = old local getmethod = getnamecallmethod_fn or function() return "" end -- Same hot-path discipline as strategy 1: short-circuit on non-CP self. local body = function(self, ...) if not rawequal(self, cp) then return OriginalNamecall(self, ...) end local m = getmethod() if m == "GetAssetFetchStatus" then if Enabled then local id = ExtractId((...)) if id and Cloaked[id] then return NoneStatus end end elseif m == "GetAssetFetchStatusChangedSignal" then if Enabled then local id = ExtractId((...)) if id and Cloaked[id] then return DeadSignal end end end return OriginalNamecall(self, ...) end local okPatch = pcall(function() mt.__namecall = newcclosure_fn(body) end) if setreadonly_fn then pcall(setreadonly_fn, mt, true) end if okPatch then InstallMethods[#InstallMethods + 1] = "rawmetatable" return true end OriginalNamecall = nil return false end -- ---- strategy 3: hookfunction the resolved methods ------------------------- -- Closes the dot-syntax hole: `cp.GetAssetFetchStatus(cp, id)` does NOT go -- through __namecall, so a namecall hook alone won't catch it. Patching the -- method closure directly covers both call shapes. local function tryHookFunction() if not hookfunction_fn then return false end local origS, origG = cp.GetAssetFetchStatus, cp.GetAssetFetchStatusChangedSignal if type(origS) ~= "function" or type(origG) ~= "function" then return false end local replS = newcclosure_fn(function(self, asset, ...) if Enabled and IsContentProvider(self) then local id = ExtractId(asset) if id and Cloaked[id] then return NoneStatus end end return OriginalStatus(self, asset, ...) end) local replG = newcclosure_fn(function(self, asset, ...) if Enabled and IsContentProvider(self) then local id = ExtractId(asset) if id and Cloaked[id] then return DeadSignal end end return OriginalSignal(self, asset, ...) end) local okS, oldS = pcall(hookfunction_fn, origS, replS) local okG, oldG = pcall(hookfunction_fn, origG, replG) if okS and type(oldS) == "function" then OriginalStatus = oldS end if okG and type(oldG) == "function" then OriginalSignal = oldG end if OriginalStatus or OriginalSignal then InstallMethods[#InstallMethods + 1] = "hookfunction" return true end return false end -- ---- install --------------------------------------------------------------- function AssetCloak.Install() if Installed then return true end local ok, contentProvider = pcall(game.GetService, game, "ContentProvider") if not ok or not contentProvider then return false end cp = contentProvider DeadBindable = Instance.new("BindableEvent") DeadSignal = DeadBindable.Event local okE, none = pcall(function() return Enum.AssetFetchStatus.None end) NoneStatus = (okE and none) or 0 -- the integer 0 also reads as "None" on older builds pcall(tryHookmetamethod) pcall(tryRawMetatable) pcall(tryHookFunction) Installed = #InstallMethods > 0 return Installed end return AssetCloak end R["Wave/UserInterface/Imports/Icons.lua"] = function(...) local icons_1 = 'rbxassetid://124334518624683' local icons_2 = 'rbxassetid://113826256227095' local icons_3 = 'rbxassetid://129900432084566' local icons_4 = 'rbxassetid://118976126805967' local icons_5 = 'rbxassetid://125298981894618' local icons_6 = 'rbxassetid://131738208650267' local icons_7 = 'rbxassetid://110728422432625' local icons_8 = 'rbxassetid://135200213477510' local icons_9 = 'rbxassetid://134392099945785' local icons_10 = 'rbxassetid://79415505456349' local icons_11 = 'rbxassetid://94499019266816' local icons_12 = 'rbxassetid://72284904787415' local icons_13 = 'rbxassetid://72284904787415' local icons_14 = 'rbxassetid://102465529977025' local icons_15 = 'rbxassetid://108796161822566' local icons_16 = 'rbxassetid://104034552823126' local icons_17 = 'rbxassetid://115396960406352' local icons_18 = 'rbxassetid://88000092080903' local icons_19 = 'rbxassetid://74902412828188' local icons_20 = 'rbxassetid://95092644481468' local icons_21 = 'rbxassetid://116618277156257' local icons_22 = 'rbxassetid://101225869294852' local icons_23 = 'rbxassetid://130974669650190' local icons_24 = 'rbxassetid://122510634246659' local icons_25 = 'rbxassetid://130565723724393' local icons_26 = 'rbxassetid://130172565496219' local icons_27 = 'rbxassetid://100537559853437' local icons_28 = 'rbxassetid://77444842975129' local icons_29 = 'rbxassetid://133795234078681' local icons_30 = 'rbxassetid://88182585007332' local icons_31 = 'rbxassetid://123183581552431' local icons_32 = 'rbxassetid://108153633480449' local icons_33 = 'rbxassetid://116280890977475' local icons_34 = 'rbxassetid://97148406853110' local icons_35 = 'rbxassetid://138968597001035' local icons_36 = 'rbxassetid://129030569615452' local icons_37 = 'rbxassetid://97278475063854' local icons_38 = 'rbxassetid://138343757151795' local icons_39 = 'rbxassetid://131684019420923' local icons_40 = 'rbxassetid://139123669104105' local icons_41 = 'rbxassetid://83798598825627' local icons_42 = 'rbxassetid://93555120675964' local VEC2 = {['0_0'] = Vector2.new(0, 0), ['64_0'] = Vector2.new(64, 0), ['128_0'] = Vector2.new(128, 0), ['192_0'] = Vector2.new(192, 0), ['256_0'] = Vector2.new(256, 0), ['320_0'] = Vector2.new(320, 0), ['384_0'] = Vector2.new(384, 0), ['448_0'] = Vector2.new(448, 0), ['512_0'] = Vector2.new(512, 0), ['576_0'] = Vector2.new(576, 0), ['640_0'] = Vector2.new(640, 0), ['704_0'] = Vector2.new(704, 0), ['768_0'] = Vector2.new(768, 0), ['832_0'] = Vector2.new(832, 0), ['896_0'] = Vector2.new(896, 0), ['960_0'] = Vector2.new(960, 0), ['0_64'] = Vector2.new(0, 64), ['64_64'] = Vector2.new(64, 64), ['128_64'] = Vector2.new(128, 64), ['192_64'] = Vector2.new(192, 64), ['256_64'] = Vector2.new(256, 64), ['320_64'] = Vector2.new(320, 64), ['384_64'] = Vector2.new(384, 64), ['448_64'] = Vector2.new(448, 64), ['512_64'] = Vector2.new(512, 64), ['576_64'] = Vector2.new(576, 64), ['640_64'] = Vector2.new(640, 64), ['704_64'] = Vector2.new(704, 64), ['768_64'] = Vector2.new(768, 64), ['832_64'] = Vector2.new(832, 64), ['896_64'] = Vector2.new(896, 64), ['960_64'] = Vector2.new(960, 64), ['0_128'] = Vector2.new(0, 128), ['64_128'] = Vector2.new(64, 128), ['128_128'] = Vector2.new(128, 128), ['192_128'] = Vector2.new(192, 128), ['256_128'] = Vector2.new(256, 128), ['320_128'] = Vector2.new(320, 128), ['384_128'] = Vector2.new(384, 128), ['448_128'] = Vector2.new(448, 128), ['512_128'] = Vector2.new(512, 128), ['576_128'] = Vector2.new(576, 128), ['640_128'] = Vector2.new(640, 128), ['704_128'] = Vector2.new(704, 128), ['768_128'] = Vector2.new(768, 128), ['832_128'] = Vector2.new(832, 128), ['896_128'] = Vector2.new(896, 128), ['960_128'] = Vector2.new(960, 128), ['0_192'] = Vector2.new(0, 192), ['64_192'] = Vector2.new(64, 192), ['128_192'] = Vector2.new(128, 192), ['192_192'] = Vector2.new(192, 192), ['256_192'] = Vector2.new(256, 192), ['320_192'] = Vector2.new(320, 192), ['384_192'] = Vector2.new(384, 192), ['448_192'] = Vector2.new(448, 192), ['512_192'] = Vector2.new(512, 192), ['576_192'] = Vector2.new(576, 192), ['640_192'] = Vector2.new(640, 192), ['704_192'] = Vector2.new(704, 192), ['768_192'] = Vector2.new(768, 192), ['832_192'] = Vector2.new(832, 192), ['896_192'] = Vector2.new(896, 192), ['960_192'] = Vector2.new(960, 192), ['0_256'] = Vector2.new(0, 256), ['64_256'] = Vector2.new(64, 256), ['128_256'] = Vector2.new(128, 256), ['192_256'] = Vector2.new(192, 256), ['256_256'] = Vector2.new(256, 256), ['320_256'] = Vector2.new(320, 256), ['384_256'] = Vector2.new(384, 256), ['448_256'] = Vector2.new(448, 256), ['512_256'] = Vector2.new(512, 256), ['576_256'] = Vector2.new(576, 256), ['640_256'] = Vector2.new(640, 256), ['704_256'] = Vector2.new(704, 256), ['768_256'] = Vector2.new(768, 256), ['832_256'] = Vector2.new(832, 256), ['896_256'] = Vector2.new(896, 256), ['960_256'] = Vector2.new(960, 256), ['0_320'] = Vector2.new(0, 320), ['64_320'] = Vector2.new(64, 320), ['128_320'] = Vector2.new(128, 320), ['192_320'] = Vector2.new(192, 320), ['256_320'] = Vector2.new(256, 320), ['320_320'] = Vector2.new(320, 320), ['384_320'] = Vector2.new(384, 320), ['448_320'] = Vector2.new(448, 320), ['512_320'] = Vector2.new(512, 320), ['576_320'] = Vector2.new(576, 320), ['640_320'] = Vector2.new(640, 320), ['704_320'] = Vector2.new(704, 320), ['768_320'] = Vector2.new(768, 320), ['832_320'] = Vector2.new(832, 320), ['896_320'] = Vector2.new(896, 320), ['960_320'] = Vector2.new(960, 320), ['0_384'] = Vector2.new(0, 384), ['64_384'] = Vector2.new(64, 384), ['128_384'] = Vector2.new(128, 384), ['192_384'] = Vector2.new(192, 384), ['256_384'] = Vector2.new(256, 384), ['320_384'] = Vector2.new(320, 384), ['384_384'] = Vector2.new(384, 384), ['448_384'] = Vector2.new(448, 384), ['512_384'] = Vector2.new(512, 384), ['576_384'] = Vector2.new(576, 384), ['640_384'] = Vector2.new(640, 384), ['704_384'] = Vector2.new(704, 384), ['768_384'] = Vector2.new(768, 384), ['832_384'] = Vector2.new(832, 384), ['896_384'] = Vector2.new(896, 384), ['960_384'] = Vector2.new(960, 384), ['0_448'] = Vector2.new(0, 448), ['64_448'] = Vector2.new(64, 448), ['128_448'] = Vector2.new(128, 448), ['192_448'] = Vector2.new(192, 448), ['256_448'] = Vector2.new(256, 448), ['320_448'] = Vector2.new(320, 448), ['384_448'] = Vector2.new(384, 448), ['448_448'] = Vector2.new(448, 448), ['512_448'] = Vector2.new(512, 448), ['576_448'] = Vector2.new(576, 448), ['640_448'] = Vector2.new(640, 448), ['704_448'] = Vector2.new(704, 448), ['768_448'] = Vector2.new(768, 448), ['832_448'] = Vector2.new(832, 448), ['896_448'] = Vector2.new(896, 448), ['960_448'] = Vector2.new(960, 448), ['0_512'] = Vector2.new(0, 512), ['64_512'] = Vector2.new(64, 512), ['128_512'] = Vector2.new(128, 512), ['192_512'] = Vector2.new(192, 512), ['256_512'] = Vector2.new(256, 512), ['320_512'] = Vector2.new(320, 512), ['384_512'] = Vector2.new(384, 512), ['448_512'] = Vector2.new(448, 512), ['512_512'] = Vector2.new(512, 512), ['576_512'] = Vector2.new(576, 512), ['640_512'] = Vector2.new(640, 512), ['704_512'] = Vector2.new(704, 512), ['768_512'] = Vector2.new(768, 512), ['832_512'] = Vector2.new(832, 512), ['896_512'] = Vector2.new(896, 512), ['960_512'] = Vector2.new(960, 512), ['0_576'] = Vector2.new(0, 576), ['64_576'] = Vector2.new(64, 576), ['128_576'] = Vector2.new(128, 576), ['192_576'] = Vector2.new(192, 576), ['256_576'] = Vector2.new(256, 576), ['320_576'] = Vector2.new(320, 576), ['384_576'] = Vector2.new(384, 576), ['448_576'] = Vector2.new(448, 576), ['512_576'] = Vector2.new(512, 576), ['576_576'] = Vector2.new(576, 576), ['640_576'] = Vector2.new(640, 576), ['704_576'] = Vector2.new(704, 576), ['768_576'] = Vector2.new(768, 576), ['832_576'] = Vector2.new(832, 576), ['896_576'] = Vector2.new(896, 576), ['960_576'] = Vector2.new(960, 576), ['0_640'] = Vector2.new(0, 640), ['64_640'] = Vector2.new(64, 640), ['128_640'] = Vector2.new(128, 640), ['192_640'] = Vector2.new(192, 640), ['256_640'] = Vector2.new(256, 640), ['320_640'] = Vector2.new(320, 640), ['384_640'] = Vector2.new(384, 640), ['448_640'] = Vector2.new(448, 640), ['512_640'] = Vector2.new(512, 640), ['576_640'] = Vector2.new(576, 640), ['640_640'] = Vector2.new(640, 640), ['704_640'] = Vector2.new(704, 640), ['768_640'] = Vector2.new(768, 640), ['832_640'] = Vector2.new(832, 640), ['896_640'] = Vector2.new(896, 640), ['960_640'] = Vector2.new(960, 640), ['0_704'] = Vector2.new(0, 704), ['64_704'] = Vector2.new(64, 704), ['128_704'] = Vector2.new(128, 704), ['192_704'] = Vector2.new(192, 704), ['256_704'] = Vector2.new(256, 704), ['320_704'] = Vector2.new(320, 704), ['384_704'] = Vector2.new(384, 704), ['448_704'] = Vector2.new(448, 704), ['512_704'] = Vector2.new(512, 704), ['576_704'] = Vector2.new(576, 704), ['640_704'] = Vector2.new(640, 704), ['704_704'] = Vector2.new(704, 704), ['768_704'] = Vector2.new(768, 704), ['832_704'] = Vector2.new(832, 704), ['896_704'] = Vector2.new(896, 704), ['960_704'] = Vector2.new(960, 704), ['0_768'] = Vector2.new(0, 768), ['64_768'] = Vector2.new(64, 768), ['128_768'] = Vector2.new(128, 768), ['192_768'] = Vector2.new(192, 768), ['256_768'] = Vector2.new(256, 768), ['320_768'] = Vector2.new(320, 768), ['384_768'] = Vector2.new(384, 768), ['448_768'] = Vector2.new(448, 768), ['512_768'] = Vector2.new(512, 768), ['576_768'] = Vector2.new(576, 768), ['640_768'] = Vector2.new(640, 768), ['704_768'] = Vector2.new(704, 768), ['768_768'] = Vector2.new(768, 768), ['832_768'] = Vector2.new(832, 768), ['896_768'] = Vector2.new(896, 768), ['960_768'] = Vector2.new(960, 768), ['0_832'] = Vector2.new(0, 832), ['64_832'] = Vector2.new(64, 832), ['128_832'] = Vector2.new(128, 832), ['192_832'] = Vector2.new(192, 832), ['256_832'] = Vector2.new(256, 832), ['320_832'] = Vector2.new(320, 832), ['384_832'] = Vector2.new(384, 832), ['448_832'] = Vector2.new(448, 832), ['512_832'] = Vector2.new(512, 832), ['576_832'] = Vector2.new(576, 832), ['640_832'] = Vector2.new(640, 832), ['704_832'] = Vector2.new(704, 832), ['768_832'] = Vector2.new(768, 832), ['832_832'] = Vector2.new(832, 832), ['896_832'] = Vector2.new(896, 832), ['960_832'] = Vector2.new(960, 832), ['0_896'] = Vector2.new(0, 896), ['64_896'] = Vector2.new(64, 896), ['128_896'] = Vector2.new(128, 896), ['192_896'] = Vector2.new(192, 896), ['256_896'] = Vector2.new(256, 896), ['320_896'] = Vector2.new(320, 896), ['384_896'] = Vector2.new(384, 896), ['448_896'] = Vector2.new(448, 896), ['512_896'] = Vector2.new(512, 896), ['576_896'] = Vector2.new(576, 896), ['640_896'] = Vector2.new(640, 896), ['704_896'] = Vector2.new(704, 896), ['768_896'] = Vector2.new(768, 896), ['832_896'] = Vector2.new(832, 896), ['896_896'] = Vector2.new(896, 896), ['960_896'] = Vector2.new(960, 896), ['0_960'] = Vector2.new(0, 960), ['64_960'] = Vector2.new(64, 960), ['128_960'] = Vector2.new(128, 960), ['192_960'] = Vector2.new(192, 960), ['256_960'] = Vector2.new(256, 960), ['320_960'] = Vector2.new(320, 960), ['384_960'] = Vector2.new(384, 960), ['448_960'] = Vector2.new(448, 960), ['512_960'] = Vector2.new(512, 960), ['576_960'] = Vector2.new(576, 960), ['640_960'] = Vector2.new(640, 960), ['704_960'] = Vector2.new(704, 960), ['768_960'] = Vector2.new(768, 960), ['832_960'] = Vector2.new(832, 960), ['896_960'] = Vector2.new(896, 960), ['960_960'] = Vector2.new(960, 960)} local M = { SetIcon = function(self, Image, IconName) local IconData = self[IconName] if typeof(IconData) ~= 'table' then local nearestName = nil local nearestDistance = math.huge for name, value in next, self do if typeof(value) ~= "table" or math.abs(#name - #IconName) > 2 then continue end local s, t = name, IconName local m, n = #s, #t local d = {} for i = 0, m do d[i] = {} d[i][0] = i end for j = 0, n do d[0][j] = j end for i = 1, m do for j = 1, n do local cost = (s:sub(i, i) == t:sub(j, j)) and 0 or 1 d[i][j] = math.min(d[i-1][j] + 1, d[i][j-1] + 1, d[i-1][j-1] + cost) end end local distance = d[m][n] if distance < nearestDistance then nearestDistance = distance nearestName = name end end if nearestName then IconData = self[nearestName] if typeof(IconData) ~= 'table' then return error(debug.traceback(`Argument #2 '{IconName}' is not a valid Icon. Did you mean '{nearestName}'?`)) end else return error(debug.traceback(`Argument #2 '{IconName}' is not a valid Icon. No similar names found.`)) end end -- Icon sprite atlases load from their ORIGINAL rbxassetid (crisp). They are NOT in -- BAC's flagged list (window buttons/acrylic/scrollbar/colorpicker localise separately -- via Creator.SafeImage); the thumbnail API caps at 700px so it cannot reproduce a -- 1024px atlas without blurring every 64px icon to mush (the removed localiseSheet path). Image.ImageRectSize = IconData.ImageRectSize Image.ImageRectOffset = IconData.ImageRectOffset Image.Image = IconData.Image return nil end, ['Close'] = "rbxassetid://9886659671", ['Min'] = "rbxassetid://9886659276", ['Max'] = "rbxassetid://9886659406", ['Restore'] = "rbxassetid://9886659001", } local _ICONDATA = "a-arrow-down,0_0,1;a-arrow-up,64_0,1;a-large-small,128_0,1;accessibility,192_0,1;activity,256_0,1;air-vent,320_0,1;airplay,384_0,1;alarm-clock-check,448_0,1;alarm-clock-minus,512_0,1;alarm-clock-off,576_0,1;alarm-clock-plus,640_0,1;alarm-clock,704_0,1;alarm-smoke,768_0,1;album,832_0,1;align-center-horizontal,896_0,1;align-center-vertical,960_0,1;align-center,0_64,1;align-end-horizontal,64_64,1;align-end-vertical,128_64,1;align-horizontal-distribute-center,192_64,1;align-horizontal-distribute-end,256_64,1;align-horizontal-distribute-start,320_64,1;align-horizontal-justify-center,384_64,1;align-horizontal-justify-end,448_64,1;align-horizontal-justify-start,512_64,1;align-horizontal-space-around,576_64,1;align-horizontal-space-between,640_64,1;align-justify,704_64,1;align-left,768_64,1;align-right,832_64,1;align-start-horizontal,896_64,1;align-start-vertical,960_64,1;align-vertical-distribute-center,0_128,1;align-vertical-distribute-end,64_128,1;align-vertical-distribute-start,128_128,1;align-vertical-justify-center,192_128,1;align-vertical-justify-end,256_128,1;align-vertical-justify-start,320_128,1;align-vertical-space-around,384_128,1;align-vertical-space-between,448_128,1;ambulance,512_128,1;ampersand,576_128,1;ampersands,640_128,1;amphora,704_128,1;anchor,768_128,1;angry,832_128,1;annoyed,896_128,1;antenna,960_128,1;anvil,0_192,1;aperture,64_192,1;app-window-mac,128_192,1;app-window,192_192,1;apple,256_192,1;archive-restore,320_192,1;archive-x,384_192,1;archive,448_192,1;armchair,512_192,1;arrow-big-down-dash,576_192,1;arrow-big-down,640_192,1;arrow-big-left-dash,704_192,1;arrow-big-left,768_192,1;arrow-big-right-dash,832_192,1;arrow-big-right,896_192,1;arrow-big-up-dash,960_192,1;arrow-big-up,0_256,1;arrow-down-0-1,64_256,1;arrow-down-1-0,128_256,1;arrow-down-a-z,192_256,1;arrow-down-from-line,256_256,1;arrow-down-left,320_256,1;arrow-down-narrow-wide,384_256,1;arrow-down-right,448_256,1;arrow-down-to-dot,512_256,1;arrow-down-to-line,576_256,1;arrow-down-up,640_256,1;arrow-down-wide-narrow,704_256,1;arrow-down-z-a,768_256,1;arrow-down,832_256,1;arrow-left-from-line,896_256,1;arrow-left-right,960_256,1;arrow-left-to-line,0_320,1;arrow-left,64_320,1;arrow-right-from-line,128_320,1;arrow-right-left,192_320,1;arrow-right-to-line,256_320,1;arrow-right,320_320,1;arrow-up-0-1,384_320,1;arrow-up-1-0,448_320,1;arrow-up-a-z,512_320,1;arrow-up-down,576_320,1;arrow-up-from-dot,640_320,1;arrow-up-from-line,704_320,1;arrow-up-left,768_320,1;arrow-up-narrow-wide,832_320,1;arrow-up-right,896_320,1;arrow-up-to-line,960_320,1;arrow-up-wide-narrow,0_384,1;arrow-up-z-a,64_384,1;arrow-up,128_384,1;arrows-up-from-line,192_384,1;asterisk,256_384,1;at-sign,320_384,1;atom,384_384,1;audio-lines,448_384,1;audio-waveform,512_384,1;award,576_384,1;axe,640_384,1;axis-3d,704_384,1;baby,768_384,1;backpack,832_384,1;badge-alert,896_384,1;badge-cent,960_384,1;badge-check,0_448,1;badge-dollar-sign,64_448,1;badge-euro,128_448,1;badge-help,192_448,1;badge-indian-rupee,256_448,1;badge-info,320_448,1;badge-japanese-yen,384_448,1;badge-minus,448_448,1;badge-percent,512_448,1;badge-plus,576_448,1;badge-pound-sterling,640_448,1;badge-russian-ruble,704_448,1;badge-swiss-franc,768_448,1;badge-x,832_448,1;badge,896_448,1;baggage-claim,960_448,1;ban,0_512,1;banana,64_512,1;bandage,128_512,1;banknote,192_512,1;barcode,256_512,1;baseline,320_512,1;bath,384_512,1;battery-charging,448_512,1;battery-full,512_512,1;battery-low,576_512,1;battery-medium,640_512,1;battery-warning,704_512,1;battery,768_512,1;beaker,832_512,1;bean-off,896_512,1;bean,960_512,1;bed-double,0_576,1;bed-single,64_576,1;bed,128_576,1;beef,192_576,1;beer-off,256_576,1;beer,320_576,1;bell-dot,384_576,1;bell-electric,448_576,1;bell-minus,512_576,1;bell-off,576_576,1;bell-plus,640_576,1;bell-ring,704_576,1;bell,768_576,1;between-horizontal-end,832_576,1;between-horizontal-start,896_576,1;between-vertical-end,960_576,1;between-vertical-start,0_640,1;biceps-flexed,64_640,1;bike,128_640,1;binary,192_640,1;binoculars,256_640,1;biohazard,320_640,1;bird,384_640,1;bitcoin,448_640,1;blend,512_640,1;blinds,576_640,1;blocks,640_640,1;bluetooth-connected,704_640,1;bluetooth-off,768_640,1;bluetooth-searching,832_640,1;bluetooth,896_640,1;bold,960_640,1;bolt,0_704,1;bomb,64_704,1;bone,128_704,1;book-a,192_704,1;book-audio,256_704,1;book-check,320_704,1;book-copy,384_704,1;book-dashed,448_704,1;book-down,512_704,1;book-headphones,576_704,1;book-heart,640_704,1;book-image,704_704,1;book-key,768_704,1;book-lock,832_704,1;book-marked,896_704,1;book-minus,960_704,1;book-open-check,0_768,1;book-open-text,64_768,1;book-open,128_768,1;book-plus,192_768,1;book-text,256_768,1;book-type,320_768,1;book-up-2,384_768,1;book-up,448_768,1;book-user,512_768,1;book-x,576_768,1;book,640_768,1;bookmark-check,704_768,1;bookmark-minus,768_768,1;bookmark-plus,832_768,1;bookmark-x,896_768,1;bookmark,960_768,1;boom-box,0_832,1;bot-message-square,64_832,1;bot-off,128_832,1;bot,192_832,1;box,256_832,1;boxes,320_832,1;braces,384_832,1;brackets,448_832,1;brain-circuit,512_832,1;brain-cog,576_832,1;brain,640_832,1;brick-wall,704_832,1;briefcase-business,768_832,1;briefcase-conveyor-belt,832_832,1;briefcase-medical,896_832,1;briefcase,960_832,1;bring-to-front,0_896,1;brush,64_896,1;bug-off,128_896,1;bug-play,192_896,1;bug,256_896,1;building-2,320_896,1;building,384_896,1;bus-front,448_896,1;bus,512_896,1;cable-car,576_896,1;cable,640_896,1;cake-slice,704_896,1;cake,768_896,1;calculator,832_896,1;calendar-1,896_896,1;calendar-arrow-down,960_896,1;calendar-arrow-up,0_960,1;calendar-check-2,64_960,1;calendar-check,128_960,1;calendar-clock,192_960,1;calendar-cog,256_960,1;calendar-days,320_960,1;calendar-fold,384_960,1;calendar-heart,448_960,1;calendar-minus-2,512_960,1;calendar-minus,576_960,1;calendar-off,640_960,1;calendar-plus-2,704_960,1;calendar-plus,768_960,1;calendar-range,832_960,1;calendar-search,896_960,1;calendar-sync,960_960,1;calendar-x-2,0_0,2;calendar-x,64_0,2;calendar,128_0,2;camera-off,192_0,2;camera,256_0,2;candy-cane,320_0,2;candy-off,384_0,2;candy,448_0,2;cannabis,512_0,2;captions-off,576_0,2;captions,640_0,2;car-front,704_0,2;car-taxi-front,768_0,2;car,832_0,2;caravan,896_0,2;carrot,960_0,2;case-lower,0_64,2;case-sensitive,64_64,2;case-upper,128_64,2;cassette-tape,192_64,2;cast,256_64,2;castle,320_64,2;cat,384_64,2;cctv,448_64,2;chart-area,512_64,2;chart-bar-big,576_64,2;chart-bar-decreasing,640_64,2;chart-bar-increasing,704_64,2;chart-bar-stacked,768_64,2;chart-bar,832_64,2;chart-candlestick,896_64,2;chart-column-big,960_64,2;chart-column-decreasing,0_128,2;chart-column-increasing,64_128,2;chart-column-stacked,128_128,2;chart-column,192_128,2;chart-gantt,256_128,2;chart-line,320_128,2;chart-network,384_128,2;chart-no-axes-column-decreasing,448_128,2;chart-no-axes-column-increasing,512_128,2;chart-no-axes-column,576_128,2;chart-no-axes-combined,640_128,2;chart-no-axes-gantt,704_128,2;chart-pie,768_128,2;chart-scatter,832_128,2;chart-spline,896_128,2;check-check,960_128,2;check,0_192,2;chef-hat,64_192,2;cherry,128_192,2;chevron-down,192_192,2;chevron-first,256_192,2;chevron-last,320_192,2;chevron-left,384_192,2;chevron-right,448_192,2;chevron-up,512_192,2;chevrons-down-up,576_192,2;chevrons-down,640_192,2;chevrons-left-right-ellipsis,704_192,2;chevrons-left-right,768_192,2;chevrons-left,832_192,2;chevrons-right-left,896_192,2;chevrons-right,960_192,2;chevrons-up-down,0_256,2;chevrons-up,64_256,2;chrome,128_256,2;church,192_256,2;cigarette-off,256_256,2;cigarette,320_256,2;circle-alert,384_256,2;circle-arrow-down,448_256,2;circle-arrow-left,512_256,2;circle-arrow-out-down-left,576_256,2;circle-arrow-out-down-right,640_256,2;circle-arrow-out-up-left,704_256,2;circle-arrow-out-up-right,768_256,2;circle-arrow-right,832_256,2;circle-arrow-up,896_256,2;circle-check-big,960_256,2;circle-check,0_320,2;circle-chevron-down,64_320,2;circle-chevron-left,128_320,2;circle-chevron-right,192_320,2;circle-chevron-up,256_320,2;circle-dashed,320_320,2;circle-divide,384_320,2;circle-dollar-sign,448_320,2;circle-dot-dashed,512_320,2;circle-dot,576_320,2;circle-ellipsis,640_320,2;circle-equal,704_320,2;circle-fading-arrow-up,768_320,2;circle-fading-plus,832_320,2;circle-gauge,896_320,2;circle-help,960_320,2;circle-minus,0_384,2;circle-off,64_384,2;circle-parking-off,128_384,2;circle-parking,192_384,2;circle-pause,256_384,2;circle-percent,320_384,2;circle-play,384_384,2;circle-plus,448_384,2;circle-power,512_384,2;circle-slash-2,576_384,2;circle-slash,640_384,2;circle-stop,704_384,2;circle-user-round,768_384,2;circle-user,832_384,2;circle-x,896_384,2;circle,960_384,2;circuit-board,0_448,2;citrus,64_448,2;clapperboard,128_448,2;clipboard-check,192_448,2;clipboard-copy,256_448,2;clipboard-list,320_448,2;clipboard-minus,384_448,2;clipboard-paste,448_448,2;clipboard-pen-line,512_448,2;clipboard-pen,576_448,2;clipboard-plus,640_448,2;clipboard-type,704_448,2;clipboard-x,768_448,2;clipboard,832_448,2;clock-1,896_448,2;clock-10,960_448,2;clock-11,0_512,2;clock-12,64_512,2;clock-2,128_512,2;clock-3,192_512,2;clock-4,256_512,2;clock-5,320_512,2;clock-6,384_512,2;clock-7,448_512,2;clock-8,512_512,2;clock-9,576_512,2;clock-alert,640_512,2;clock-arrow-down,704_512,2;clock-arrow-up,768_512,2;clock,832_512,2;cloud-alert,896_512,2;cloud-cog,960_512,2;cloud-download,0_576,2;cloud-drizzle,64_576,2;cloud-fog,128_576,2;cloud-hail,192_576,2;cloud-lightning,256_576,2;cloud-moon-rain,320_576,2;cloud-moon,384_576,2;cloud-off,448_576,2;cloud-rain-wind,512_576,2;cloud-rain,576_576,2;cloud-snow,640_576,2;cloud-sun-rain,704_576,2;cloud-sun,768_576,2;cloud-upload,832_576,2;cloud,896_576,2;cloudy,960_576,2;clover,0_640,2;club,64_640,2;code-xml,128_640,2;code,192_640,2;codepen,256_640,2;codesandbox,320_640,2;coffee,384_640,2;cog,448_640,2;coins,512_640,2;columns-2,576_640,2;columns-3,640_640,2;columns-4,704_640,2;combine,768_640,2;command,832_640,2;compass,896_640,2;component,960_640,2;computer,0_704,2;concierge-bell,64_704,2;cone,128_704,2;construction,192_704,2;contact-round,256_704,2;contact,320_704,2;container,384_704,2;contrast,448_704,2;cookie,512_704,2;cooking-pot,576_704,2;copy-check,640_704,2;copy-minus,704_704,2;copy-plus,768_704,2;copy-slash,832_704,2;copy-x,896_704,2;copy,960_704,2;copyleft,0_768,2;copyright,64_768,2;corner-down-left,128_768,2;corner-down-right,192_768,2;corner-left-down,256_768,2;corner-left-up,320_768,2;corner-right-down,384_768,2;corner-right-up,448_768,2;corner-up-left,512_768,2;corner-up-right,576_768,2;cpu,640_768,2;creative-commons,704_768,2;credit-card,768_768,2;croissant,832_768,2;crop,896_768,2;cross,960_768,2;crosshair,0_832,2;crown,64_832,2;cuboid,128_832,2;cup-soda,192_832,2;currency,256_832,2;cylinder,320_832,2;dam,384_832,2;database-backup,448_832,2;database-zap,512_832,2;database,576_832,2;delete,640_832,2;dessert,704_832,2;diameter,768_832,2;diamond-minus,832_832,2;diamond-percent,896_832,2;diamond-plus,960_832,2;diamond,0_896,2;dice-1,64_896,2;dice-2,128_896,2;dice-3,192_896,2;dice-4,256_896,2;dice-5,320_896,2;dice-6,384_896,2;dices,448_896,2;diff,512_896,2;disc-2,576_896,2;disc-3,640_896,2;disc-album,704_896,2;disc,768_896,2;divide,832_896,2;dna-off,896_896,2;dna,960_896,2;dock,0_960,2;dog,64_960,2;dollar-sign,128_960,2;donut,192_960,2;door-closed,256_960,2;door-open,320_960,2;dot,384_960,2;download,448_960,2;drafting-compass,512_960,2;drama,576_960,2;dribbble,640_960,2;drill,704_960,2;droplet-off,768_960,2;droplet,832_960,2;droplets,896_960,2;drum,960_960,2;drumstick,0_0,3;dumbbell,64_0,3;ear-off,128_0,3;ear,192_0,3;earth-lock,256_0,3;earth,320_0,3;eclipse,384_0,3;egg-fried,448_0,3;egg-off,512_0,3;egg,576_0,3;ellipsis-vertical,640_0,3;ellipsis,704_0,3;equal-approximately,768_0,3;equal-not,832_0,3;equal,896_0,3;eraser,960_0,3;ethernet-port,0_64,3;euro,64_64,3;expand,128_64,3;external-link,192_64,3;eye-closed,256_64,3;eye-off,320_64,3;eye,384_64,3;facebook,448_64,3;factory,512_64,3;fan,576_64,3;fast-forward,640_64,3;feather,704_64,3;fence,768_64,3;ferris-wheel,832_64,3;figma,896_64,3;file-archive,960_64,3;file-audio-2,0_128,3;file-audio,64_128,3;file-axis-3d,128_128,3;file-badge-2,192_128,3;file-badge,256_128,3;file-box,320_128,3;file-chart-column-increasing,384_128,3;file-chart-column,448_128,3;file-chart-line,512_128,3;file-chart-pie,576_128,3;file-check-2,640_128,3;file-check,704_128,3;file-clock,768_128,3;file-code-2,832_128,3;file-code,896_128,3;file-cog,960_128,3;file-diff,0_192,3;file-digit,64_192,3;file-down,128_192,3;file-heart,192_192,3;file-image,256_192,3;file-input,320_192,3;file-json-2,384_192,3;file-json,448_192,3;file-key-2,512_192,3;file-key,576_192,3;file-lock-2,640_192,3;file-lock,704_192,3;file-minus-2,768_192,3;file-minus,832_192,3;file-music,896_192,3;file-output,960_192,3;file-pen-line,0_256,3;file-pen,64_256,3;file-plus-2,128_256,3;file-plus,192_256,3;file-question,256_256,3;file-scan,320_256,3;file-search-2,384_256,3;file-search,448_256,3;file-sliders,512_256,3;file-spreadsheet,576_256,3;file-stack,640_256,3;file-symlink,704_256,3;file-terminal,768_256,3;file-text,832_256,3;file-type-2,896_256,3;file-type,960_256,3;file-up,0_320,3;file-user,64_320,3;file-video-2,128_320,3;file-video,192_320,3;file-volume-2,256_320,3;file-volume,320_320,3;file-warning,384_320,3;file-x-2,448_320,3;file-x,512_320,3;file,576_320,3;files,640_320,3;film,704_320,3;filter-x,768_320,3;filter,832_320,3;fingerprint,896_320,3;fire-extinguisher,960_320,3;fish-off,0_384,3;fish-symbol,64_384,3;fish,128_384,3;flag-off,192_384,3;flag-triangle-left,256_384,3;flag-triangle-right,320_384,3;flag,384_384,3;flame-kindling,448_384,3;flame,512_384,3;flashlight-off,576_384,3;flashlight,640_384,3;flask-conical-off,704_384,3;flask-conical,768_384,3;flask-round,832_384,3;flip-horizontal-2,896_384,3;flip-horizontal,960_384,3;flip-vertical-2,0_448,3;flip-vertical,64_448,3;flower-2,128_448,3;flower,192_448,3;focus,256_448,3;fold-horizontal,320_448,3;fold-vertical,384_448,3;folder-archive,448_448,3;folder-check,512_448,3;folder-clock,576_448,3;folder-closed,640_448,3;folder-code,704_448,3;folder-cog,768_448,3;folder-dot,832_448,3;folder-down,896_448,3;folder-git-2,960_448,3;folder-git,0_512,3;folder-heart,64_512,3;folder-input,128_512,3;folder-kanban,192_512,3;folder-key,256_512,3;folder-lock,320_512,3;folder-minus,384_512,3;folder-open-dot,448_512,3;folder-open,512_512,3;folder-output,576_512,3;folder-pen,640_512,3;folder-plus,704_512,3;folder-root,768_512,3;folder-search-2,832_512,3;folder-search,896_512,3;folder-symlink,960_512,3;folder-sync,0_576,3;folder-tree,64_576,3;folder-up,128_576,3;folder-x,192_576,3;folder,256_576,3;folders,320_576,3;footprints,384_576,3;forklift,448_576,3;forward,512_576,3;frame,576_576,3;framer,640_576,3;frown,704_576,3;fuel,768_576,3;fullscreen,832_576,3;gallery-horizontal-end,896_576,3;gallery-horizontal,960_576,3;gallery-thumbnails,0_640,3;gallery-vertical-end,64_640,3;gallery-vertical,128_640,3;gamepad-2,192_640,3;gamepad,256_640,3;gauge,320_640,3;gavel,384_640,3;gem,448_640,3;ghost,512_640,3;gift,576_640,3;git-branch-plus,640_640,3;git-branch,704_640,3;git-commit-horizontal,768_640,3;git-commit-vertical,832_640,3;git-compare-arrows,896_640,3;git-compare,960_640,3;git-fork,0_704,3;git-graph,64_704,3;git-merge,128_704,3;git-pull-request-arrow,192_704,3;git-pull-request-closed,256_704,3;git-pull-request-create-arrow,320_704,3;git-pull-request-create,384_704,3;git-pull-request-draft,448_704,3;git-pull-request,512_704,3;github,576_704,3;gitlab,640_704,3;glass-water,704_704,3;glasses,768_704,3;globe-lock,832_704,3;globe,896_704,3;goal,960_704,3;grab,0_768,3;graduation-cap,64_768,3;grape,128_768,3;grid-2x2-check,192_768,3;grid-2x2-plus,256_768,3;grid-2x2-x,320_768,3;grid-2x2,384_768,3;grid-3x3,448_768,3;grip-horizontal,512_768,3;grip-vertical,576_768,3;grip,640_768,3;group,704_768,3;guitar,768_768,3;ham,832_768,3;hammer,896_768,3;hand-coins,960_768,3;hand-heart,0_832,3;hand-helping,64_832,3;hand-metal,128_832,3;hand-platter,192_832,3;hand,256_832,3;handshake,320_832,3;hard-drive-download,384_832,3;hard-drive-upload,448_832,3;hard-drive,512_832,3;hard-hat,576_832,3;hash,640_832,3;haze,704_832,3;hdmi-port,768_832,3;heading-1,832_832,3;heading-2,896_832,3;heading-3,960_832,3;heading-4,0_896,3;heading-5,64_896,3;heading-6,128_896,3;heading,192_896,3;headphone-off,256_896,3;headphones,320_896,3;headset,384_896,3;heart-crack,448_896,3;heart-handshake,512_896,3;heart-off,576_896,3;heart-pulse,640_896,3;heart,704_896,3;heater,768_896,3;hexagon,832_896,3;highlighter,896_896,3;history,960_896,3;hop-off,0_960,3;hop,64_960,3;hospital,128_960,3;hotel,192_960,3;hourglass,256_960,3;house-plug,320_960,3;house-plus,384_960,3;house,448_960,3;ice-cream-bowl,512_960,3;ice-cream-cone,576_960,3;id-card,640_960,3;image-down,704_960,3;image-minus,768_960,3;image-off,832_960,3;image-play,896_960,3;image-plus,960_960,3;image-up,0_0,4;image-upscale,64_0,4;image,128_0,4;images,192_0,4;import,256_0,4;inbox,320_0,4;indent-decrease,384_0,4;indent-increase,448_0,4;indian-rupee,512_0,4;infinity,576_0,4;info,640_0,4;inspection-panel,704_0,4;instagram,768_0,4;italic,832_0,4;iteration-ccw,896_0,4;iteration-cw,960_0,4;japanese-yen,0_64,4;joystick,64_64,4;kanban,128_64,4;key-round,192_64,4;key-square,256_64,4;key,320_64,4;keyboard-music,384_64,4;keyboard-off,448_64,4;keyboard,512_64,4;lamp-ceiling,576_64,4;lamp-desk,640_64,4;lamp-floor,704_64,4;lamp-wall-down,768_64,4;lamp-wall-up,832_64,4;lamp,896_64,4;land-plot,960_64,4;landmark,0_128,4;languages,64_128,4;laptop-minimal-check,128_128,4;laptop-minimal,192_128,4;laptop,256_128,4;lasso-select,320_128,4;lasso,384_128,4;laugh,448_128,4;layers-2,512_128,4;layers,576_128,4;layout-dashboard,640_128,4;layout-grid,704_128,4;layout-list,768_128,4;layout-panel-left,832_128,4;layout-panel-top,896_128,4;layout-template,960_128,4;leaf,0_192,4;leafy-green,64_192,4;lectern,128_192,4;letter-text,192_192,4;library-big,256_192,4;library,320_192,4;life-buoy,384_192,4;ligature,448_192,4;lightbulb-off,512_192,4;lightbulb,576_192,4;link-2-off,640_192,4;link-2,704_192,4;link,768_192,4;linkedin,832_192,4;list-check,896_192,4;list-checks,960_192,4;list-collapse,0_256,4;list-end,64_256,4;list-filter-plus,128_256,4;list-filter,192_256,4;list-minus,256_256,4;list-music,320_256,4;list-ordered,384_256,4;list-plus,448_256,4;list-restart,512_256,4;list-start,576_256,4;list-todo,640_256,4;list-tree,704_256,4;list-video,768_256,4;list-x,832_256,4;list,896_256,4;loader-circle,960_256,4;loader-pinwheel,0_320,4;loader,64_320,4;locate-fixed,128_320,4;locate-off,192_320,4;locate,256_320,4;lock-keyhole-open,320_320,4;lock-keyhole,384_320,4;lock-open,448_320,4;lock,512_320,4;log-in,576_320,4;log-out,640_320,4;logs,704_320,4;lollipop,768_320,4;luggage,832_320,4;magnet,896_320,4;mail-check,960_320,4;mail-minus,0_384,4;mail-open,64_384,4;mail-plus,128_384,4;mail-question,192_384,4;mail-search,256_384,4;mail-warning,320_384,4;mail-x,384_384,4;mail,448_384,4;mailbox,512_384,4;mails,576_384,4;map-pin-check-inside,640_384,4;map-pin-check,704_384,4;map-pin-house,768_384,4;map-pin-minus-inside,832_384,4;map-pin-minus,896_384,4;map-pin-off,960_384,4;map-pin-plus-inside,0_448,4;map-pin-plus,64_448,4;map-pin-x-inside,128_448,4;map-pin-x,192_448,4;map-pin,256_448,4;map-pinned,320_448,4;map,384_448,4;martini,448_448,4;maximize-2,512_448,4;maximize,576_448,4;medal,640_448,4;megaphone-off,704_448,4;megaphone,768_448,4;meh,832_448,4;memory-stick,896_448,4;menu,960_448,4;merge,0_512,4;message-circle-code,64_512,4;message-circle-dashed,128_512,4;message-circle-heart,192_512,4;message-circle-more,256_512,4;message-circle-off,320_512,4;message-circle-plus,384_512,4;message-circle-question,448_512,4;message-circle-reply,512_512,4;message-circle-warning,576_512,4;message-circle-x,640_512,4;message-circle,704_512,4;message-square-code,768_512,4;message-square-dashed,832_512,4;message-square-diff,896_512,4;message-square-dot,960_512,4;message-square-heart,0_576,4;message-square-lock,64_576,4;message-square-more,128_576,4;message-square-off,192_576,4;message-square-plus,256_576,4;message-square-quote,320_576,4;message-square-reply,384_576,4;message-square-share,448_576,4;message-square-text,512_576,4;message-square-warning,576_576,4;message-square-x,640_576,4;message-square,704_576,4;messages-square,768_576,4;mic-off,832_576,4;mic-vocal,896_576,4;mic,960_576,4;microchip,0_640,4;microscope,64_640,4;microwave,128_640,4;milestone,192_640,4;milk-off,256_640,4;milk,320_640,4;minimize-2,384_640,4;minimize,448_640,4;minus,512_640,4;monitor-check,576_640,4;monitor-cog,640_640,4;monitor-dot,704_640,4;monitor-down,768_640,4;monitor-off,832_640,4;monitor-pause,896_640,4;monitor-play,960_640,4;monitor-smartphone,0_704,4;monitor-speaker,64_704,4;monitor-stop,128_704,4;monitor-up,192_704,4;monitor-x,256_704,4;monitor,320_704,4;moon-star,384_704,4;moon,448_704,4;mountain-snow,512_704,4;mountain,576_704,4;mouse-off,640_704,4;mouse-pointer-2,704_704,4;mouse-pointer-ban,768_704,4;mouse-pointer-click,832_704,4;mouse-pointer,896_704,4;mouse,960_704,4;move-3d,0_768,4;move-diagonal-2,64_768,4;move-diagonal,128_768,4;move-down-left,192_768,4;move-down-right,256_768,4;move-down,320_768,4;move-horizontal,384_768,4;move-left,448_768,4;move-right,512_768,4;move-up-left,576_768,4;move-up-right,640_768,4;move-up,704_768,4;move-vertical,768_768,4;move,832_768,4;music-2,896_768,4;music-3,960_768,4;music-4,0_832,4;music,64_832,4;navigation-2-off,128_832,4;navigation-2,192_832,4;navigation-off,256_832,4;navigation,320_832,4;network,384_832,4;newspaper,448_832,4;nfc,512_832,4;notebook-pen,576_832,4;notebook-tabs,640_832,4;notebook-text,704_832,4;notebook,768_832,4;notepad-text-dashed,832_832,4;notepad-text,896_832,4;nut-off,960_832,4;nut,0_896,4;octagon-alert,64_896,4;octagon-minus,128_896,4;octagon-pause,192_896,4;octagon-x,256_896,4;octagon,320_896,4;omega,384_896,4;option,448_896,4;orbit,512_896,4;origami,576_896,4;package-2,640_896,4;package-check,704_896,4;package-minus,768_896,4;package-open,832_896,4;package-plus,896_896,4;package-search,960_896,4;package-x,0_960,4;package,64_960,4;paint-bucket,128_960,4;paint-roller,192_960,4;paintbrush-vertical,256_960,4;paintbrush,320_960,4;palette,384_960,4;panel-bottom-close,448_960,4;panel-bottom-dashed,512_960,4;panel-bottom-open,576_960,4;panel-bottom,640_960,4;panel-left-close,704_960,4;panel-left-dashed,768_960,4;panel-left-open,832_960,4;panel-left,896_960,4;panel-right-close,960_960,4;panel-right-dashed,0_0,5;panel-right-open,64_0,5;panel-right,128_0,5;panel-top-close,192_0,5;panel-top-dashed,256_0,5;panel-top-open,320_0,5;panel-top,384_0,5;panels-left-bottom,448_0,5;panels-right-bottom,512_0,5;panels-top-left,576_0,5;paperclip,640_0,5;parentheses,704_0,5;parking-meter,768_0,5;party-popper,832_0,5;pause,896_0,5;paw-print,960_0,5;pc-case,0_64,5;pen-line,64_64,5;pen-off,128_64,5;pen-tool,192_64,5;pen,256_64,5;pencil-line,320_64,5;pencil-off,384_64,5;pencil-ruler,448_64,5;pencil,512_64,5;pentagon,576_64,5;percent,640_64,5;person-standing,704_64,5;philippine-peso,768_64,5;phone-call,832_64,5;phone-forwarded,896_64,5;phone-incoming,960_64,5;phone-missed,0_128,5;phone-off,64_128,5;phone-outgoing,128_128,5;phone,192_128,5;phosphor-acorn-bold,256_128,5;phosphor-acorn-duotone,320_128,5;phosphor-acorn-fill,384_128,5;phosphor-acorn-light,448_128,5;phosphor-acorn-thin,512_128,5;phosphor-acorn,576_128,5;phosphor-address-book-bold,640_128,5;phosphor-address-book-duotone,704_128,5;phosphor-address-book-fill,768_128,5;phosphor-address-book-light,832_128,5;phosphor-address-book-tabs-bold,896_128,5;phosphor-address-book-tabs-duotone,960_128,5;phosphor-address-book-tabs-fill,0_192,5;phosphor-address-book-tabs-light,64_192,5;phosphor-address-book-tabs-thin,128_192,5;phosphor-address-book-tabs,192_192,5;phosphor-address-book-thin,256_192,5;phosphor-address-book,320_192,5;phosphor-air-traffic-control-bold,384_192,5;phosphor-air-traffic-control-duotone,448_192,5;phosphor-air-traffic-control-fill,512_192,5;phosphor-air-traffic-control-light,576_192,5;phosphor-air-traffic-control-thin,640_192,5;phosphor-air-traffic-control,704_192,5;phosphor-airplane-bold,768_192,5;phosphor-airplane-duotone,832_192,5;phosphor-airplane-fill,896_192,5;phosphor-airplane-in-flight-bold,960_192,5;phosphor-airplane-in-flight-duotone,0_256,5;phosphor-airplane-in-flight-fill,64_256,5;phosphor-airplane-in-flight-light,128_256,5;phosphor-airplane-in-flight-thin,192_256,5;phosphor-airplane-in-flight,256_256,5;phosphor-airplane-landing-bold,320_256,5;phosphor-airplane-landing-duotone,384_256,5;phosphor-airplane-landing-fill,448_256,5;phosphor-airplane-landing-light,512_256,5;phosphor-airplane-landing-thin,576_256,5;phosphor-airplane-landing,640_256,5;phosphor-airplane-light,704_256,5;phosphor-airplane-takeoff-bold,768_256,5;phosphor-airplane-takeoff-duotone,832_256,5;phosphor-airplane-takeoff-fill,896_256,5;phosphor-airplane-takeoff-light,960_256,5;phosphor-airplane-takeoff-thin,0_320,5;phosphor-airplane-takeoff,64_320,5;phosphor-airplane-taxiing-bold,128_320,5;phosphor-airplane-taxiing-duotone,192_320,5;phosphor-airplane-taxiing-fill,256_320,5;phosphor-airplane-taxiing-light,320_320,5;phosphor-airplane-taxiing-thin,384_320,5;phosphor-airplane-taxiing,448_320,5;phosphor-airplane-thin,512_320,5;phosphor-airplane-tilt-bold,576_320,5;phosphor-airplane-tilt-duotone,640_320,5;phosphor-airplane-tilt-fill,704_320,5;phosphor-airplane-tilt-light,768_320,5;phosphor-airplane-tilt-thin,832_320,5;phosphor-airplane-tilt,896_320,5;phosphor-airplane,960_320,5;phosphor-airplay-bold,0_384,5;phosphor-airplay-duotone,64_384,5;phosphor-airplay-fill,128_384,5;phosphor-airplay-light,192_384,5;phosphor-airplay-thin,256_384,5;phosphor-airplay,320_384,5;phosphor-alarm-bold,384_384,5;phosphor-alarm-duotone,448_384,5;phosphor-alarm-fill,512_384,5;phosphor-alarm-light,576_384,5;phosphor-alarm-thin,640_384,5;phosphor-alarm,704_384,5;phosphor-alien-bold,768_384,5;phosphor-alien-duotone,832_384,5;phosphor-alien-fill,896_384,5;phosphor-alien-light,960_384,5;phosphor-alien-thin,0_448,5;phosphor-alien,64_448,5;phosphor-align-bottom-bold,128_448,5;phosphor-align-bottom-duotone,192_448,5;phosphor-align-bottom-fill,256_448,5;phosphor-align-bottom-light,320_448,5;phosphor-align-bottom-simple-bold,384_448,5;phosphor-align-bottom-simple-duotone,448_448,5;phosphor-align-bottom-simple-fill,512_448,5;phosphor-align-bottom-simple-light,576_448,5;phosphor-align-bottom-simple-thin,640_448,5;phosphor-align-bottom-simple,704_448,5;phosphor-align-bottom-thin,768_448,5;phosphor-align-bottom,832_448,5;phosphor-align-center-horizontal-bold,896_448,5;phosphor-align-center-horizontal-duotone,960_448,5;phosphor-align-center-horizontal-fill,0_512,5;phosphor-align-center-horizontal-light,64_512,5;phosphor-align-center-horizontal-simple-bold,128_512,5;phosphor-align-center-horizontal-simple-duotone,192_512,5;phosphor-align-center-horizontal-simple-fill,256_512,5;phosphor-align-center-horizontal-simple-light,320_512,5;phosphor-align-center-horizontal-simple-thin,384_512,5;phosphor-align-center-horizontal-simple,448_512,5;phosphor-align-center-horizontal-thin,512_512,5;phosphor-align-center-horizontal,576_512,5;phosphor-align-center-vertical-bold,640_512,5;phosphor-align-center-vertical-duotone,704_512,5;phosphor-align-center-vertical-fill,768_512,5;phosphor-align-center-vertical-light,832_512,5;phosphor-align-center-vertical-simple-bold,896_512,5;phosphor-align-center-vertical-simple-duotone,960_512,5;phosphor-align-center-vertical-simple-fill,0_576,5;phosphor-align-center-vertical-simple-light,64_576,5;phosphor-align-center-vertical-simple-thin,128_576,5;phosphor-align-center-vertical-simple,192_576,5;phosphor-align-center-vertical-thin,256_576,5;phosphor-align-center-vertical,320_576,5;phosphor-align-left-bold,384_576,5;phosphor-align-left-duotone,448_576,5;phosphor-align-left-fill,512_576,5;phosphor-align-left-light,576_576,5;phosphor-align-left-simple-bold,640_576,5;phosphor-align-left-simple-duotone,704_576,5;phosphor-align-left-simple-fill,768_576,5;phosphor-align-left-simple-light,832_576,5;phosphor-align-left-simple-thin,896_576,5;phosphor-align-left-simple,960_576,5;phosphor-align-left-thin,0_640,5;phosphor-align-left,64_640,5;phosphor-align-right-bold,128_640,5;phosphor-align-right-duotone,192_640,5;phosphor-align-right-fill,256_640,5;phosphor-align-right-light,320_640,5;phosphor-align-right-simple-bold,384_640,5;phosphor-align-right-simple-duotone,448_640,5;phosphor-align-right-simple-fill,512_640,5;phosphor-align-right-simple-light,576_640,5;phosphor-align-right-simple-thin,640_640,5;phosphor-align-right-simple,704_640,5;phosphor-align-right-thin,768_640,5;phosphor-align-right,832_640,5;phosphor-align-top-bold,896_640,5;phosphor-align-top-duotone,960_640,5;phosphor-align-top-fill,0_704,5;phosphor-align-top-light,64_704,5;phosphor-align-top-simple-bold,128_704,5;phosphor-align-top-simple-duotone,192_704,5;phosphor-align-top-simple-fill,256_704,5;phosphor-align-top-simple-light,320_704,5;phosphor-align-top-simple-thin,384_704,5;phosphor-align-top-simple,448_704,5;phosphor-align-top-thin,512_704,5;phosphor-align-top,576_704,5;phosphor-amazon-logo-bold,640_704,5;phosphor-amazon-logo-duotone,704_704,5;phosphor-amazon-logo-fill,768_704,5;phosphor-amazon-logo-light,832_704,5;phosphor-amazon-logo-thin,896_704,5;phosphor-amazon-logo,960_704,5;phosphor-ambulance-bold,0_768,5;phosphor-ambulance-duotone,64_768,5;phosphor-ambulance-fill,128_768,5;phosphor-ambulance-light,192_768,5;phosphor-ambulance-thin,256_768,5;phosphor-ambulance,320_768,5;phosphor-anchor-bold,384_768,5;phosphor-anchor-duotone,448_768,5;phosphor-anchor-fill,512_768,5;phosphor-anchor-light,576_768,5;phosphor-anchor-simple-bold,640_768,5;phosphor-anchor-simple-duotone,704_768,5;phosphor-anchor-simple-fill,768_768,5;phosphor-anchor-simple-light,832_768,5;phosphor-anchor-simple-thin,896_768,5;phosphor-anchor-simple,960_768,5;phosphor-anchor-thin,0_832,5;phosphor-anchor,64_832,5;phosphor-android-logo-bold,128_832,5;phosphor-android-logo-duotone,192_832,5;phosphor-android-logo-fill,256_832,5;phosphor-android-logo-light,320_832,5;phosphor-android-logo-thin,384_832,5;phosphor-android-logo,448_832,5;phosphor-angle-bold,512_832,5;phosphor-angle-duotone,576_832,5;phosphor-angle-fill,640_832,5;phosphor-angle-light,704_832,5;phosphor-angle-thin,768_832,5;phosphor-angle,832_832,5;phosphor-angular-logo-bold,896_832,5;phosphor-angular-logo-duotone,960_832,5;phosphor-angular-logo-fill,0_896,5;phosphor-angular-logo-light,64_896,5;phosphor-angular-logo-thin,128_896,5;phosphor-angular-logo,192_896,5;phosphor-aperture-bold,256_896,5;phosphor-aperture-duotone,320_896,5;phosphor-aperture-fill,384_896,5;phosphor-aperture-light,448_896,5;phosphor-aperture-thin,512_896,5;phosphor-aperture,576_896,5;phosphor-app-store-logo-bold,640_896,5;phosphor-app-store-logo-duotone,704_896,5;phosphor-app-store-logo-fill,768_896,5;phosphor-app-store-logo-light,832_896,5;phosphor-app-store-logo-thin,896_896,5;phosphor-app-store-logo,960_896,5;phosphor-app-window-bold,0_960,5;phosphor-app-window-duotone,64_960,5;phosphor-app-window-fill,128_960,5;phosphor-app-window-light,192_960,5;phosphor-app-window-thin,256_960,5;phosphor-app-window,320_960,5;phosphor-apple-logo-bold,384_960,5;phosphor-apple-logo-duotone,448_960,5;phosphor-apple-logo-fill,512_960,5;phosphor-apple-logo-light,576_960,5;phosphor-apple-logo-thin,640_960,5;phosphor-apple-logo,704_960,5;phosphor-apple-podcasts-logo-bold,768_960,5;phosphor-apple-podcasts-logo-duotone,832_960,5;phosphor-apple-podcasts-logo-fill,896_960,5;phosphor-apple-podcasts-logo-light,960_960,5;phosphor-apple-podcasts-logo-thin,0_0,6;phosphor-apple-podcasts-logo,64_0,6;phosphor-approximate-equals-bold,128_0,6;phosphor-approximate-equals-duotone,192_0,6;phosphor-approximate-equals-fill,256_0,6;phosphor-approximate-equals-light,320_0,6;phosphor-approximate-equals-thin,384_0,6;phosphor-approximate-equals,448_0,6;phosphor-archive-bold,512_0,6;phosphor-archive-duotone,576_0,6;phosphor-archive-fill,640_0,6;phosphor-archive-light,704_0,6;phosphor-archive-thin,768_0,6;phosphor-archive,832_0,6;phosphor-armchair-bold,896_0,6;phosphor-armchair-duotone,960_0,6;phosphor-armchair-fill,0_64,6;phosphor-armchair-light,64_64,6;phosphor-armchair-thin,128_64,6;phosphor-armchair,192_64,6;phosphor-arrow-arc-left-bold,256_64,6;phosphor-arrow-arc-left-duotone,320_64,6;phosphor-arrow-arc-left-fill,384_64,6;phosphor-arrow-arc-left-light,448_64,6;phosphor-arrow-arc-left-thin,512_64,6;phosphor-arrow-arc-left,576_64,6;phosphor-arrow-arc-right-bold,640_64,6;phosphor-arrow-arc-right-duotone,704_64,6;phosphor-arrow-arc-right-fill,768_64,6;phosphor-arrow-arc-right-light,832_64,6;phosphor-arrow-arc-right-thin,896_64,6;phosphor-arrow-arc-right,960_64,6;phosphor-arrow-bend-double-up-left-bold,0_128,6;phosphor-arrow-bend-double-up-left-duotone,64_128,6;phosphor-arrow-bend-double-up-left-fill,128_128,6;phosphor-arrow-bend-double-up-left-light,192_128,6;phosphor-arrow-bend-double-up-left-thin,256_128,6;phosphor-arrow-bend-double-up-left,320_128,6;phosphor-arrow-bend-double-up-right-bold,384_128,6;phosphor-arrow-bend-double-up-right-duotone,448_128,6;phosphor-arrow-bend-double-up-right-fill,512_128,6;phosphor-arrow-bend-double-up-right-light,576_128,6;phosphor-arrow-bend-double-up-right-thin,640_128,6;phosphor-arrow-bend-double-up-right,704_128,6;phosphor-arrow-bend-down-left-bold,768_128,6;phosphor-arrow-bend-down-left-duotone,832_128,6;phosphor-arrow-bend-down-left-fill,896_128,6;phosphor-arrow-bend-down-left-light,960_128,6;phosphor-arrow-bend-down-left-thin,0_192,6;phosphor-arrow-bend-down-left,64_192,6;phosphor-arrow-bend-down-right-bold,128_192,6;phosphor-arrow-bend-down-right-duotone,192_192,6;phosphor-arrow-bend-down-right-fill,256_192,6;phosphor-arrow-bend-down-right-light,320_192,6;phosphor-arrow-bend-down-right-thin,384_192,6;phosphor-arrow-bend-down-right,448_192,6;phosphor-arrow-bend-left-down-bold,512_192,6;phosphor-arrow-bend-left-down-duotone,576_192,6;phosphor-arrow-bend-left-down-fill,640_192,6;phosphor-arrow-bend-left-down-light,704_192,6;phosphor-arrow-bend-left-down-thin,768_192,6;phosphor-arrow-bend-left-down,832_192,6;phosphor-arrow-bend-left-up-bold,896_192,6;phosphor-arrow-bend-left-up-duotone,960_192,6;phosphor-arrow-bend-left-up-fill,0_256,6;phosphor-arrow-bend-left-up-light,64_256,6;phosphor-arrow-bend-left-up-thin,128_256,6;phosphor-arrow-bend-left-up,192_256,6;phosphor-arrow-bend-right-down-bold,256_256,6;phosphor-arrow-bend-right-down-duotone,320_256,6;phosphor-arrow-bend-right-down-fill,384_256,6;phosphor-arrow-bend-right-down-light,448_256,6;phosphor-arrow-bend-right-down-thin,512_256,6;phosphor-arrow-bend-right-down,576_256,6;phosphor-arrow-bend-right-up-bold,640_256,6;phosphor-arrow-bend-right-up-duotone,704_256,6;phosphor-arrow-bend-right-up-fill,768_256,6;phosphor-arrow-bend-right-up-light,832_256,6;phosphor-arrow-bend-right-up-thin,896_256,6;phosphor-arrow-bend-right-up,960_256,6;phosphor-arrow-bend-up-left-bold,0_320,6;phosphor-arrow-bend-up-left-duotone,64_320,6;phosphor-arrow-bend-up-left-fill,128_320,6;phosphor-arrow-bend-up-left-light,192_320,6;phosphor-arrow-bend-up-left-thin,256_320,6;phosphor-arrow-bend-up-left,320_320,6;phosphor-arrow-bend-up-right-bold,384_320,6;phosphor-arrow-bend-up-right-duotone,448_320,6;phosphor-arrow-bend-up-right-fill,512_320,6;phosphor-arrow-bend-up-right-light,576_320,6;phosphor-arrow-bend-up-right-thin,640_320,6;phosphor-arrow-bend-up-right,704_320,6;phosphor-arrow-circle-down-bold,768_320,6;phosphor-arrow-circle-down-duotone,832_320,6;phosphor-arrow-circle-down-fill,896_320,6;phosphor-arrow-circle-down-left-bold,960_320,6;phosphor-arrow-circle-down-left-duotone,0_384,6;phosphor-arrow-circle-down-left-fill,64_384,6;phosphor-arrow-circle-down-left-light,128_384,6;phosphor-arrow-circle-down-left-thin,192_384,6;phosphor-arrow-circle-down-left,256_384,6;phosphor-arrow-circle-down-light,320_384,6;phosphor-arrow-circle-down-right-bold,384_384,6;phosphor-arrow-circle-down-right-duotone,448_384,6;phosphor-arrow-circle-down-right-fill,512_384,6;phosphor-arrow-circle-down-right-light,576_384,6;phosphor-arrow-circle-down-right-thin,640_384,6;phosphor-arrow-circle-down-right,704_384,6;phosphor-arrow-circle-down-thin,768_384,6;phosphor-arrow-circle-down,832_384,6;phosphor-arrow-circle-left-bold,896_384,6;phosphor-arrow-circle-left-duotone,960_384,6;phosphor-arrow-circle-left-fill,0_448,6;phosphor-arrow-circle-left-light,64_448,6;phosphor-arrow-circle-left-thin,128_448,6;phosphor-arrow-circle-left,192_448,6;phosphor-arrow-circle-right-bold,256_448,6;phosphor-arrow-circle-right-duotone,320_448,6;phosphor-arrow-circle-right-fill,384_448,6;phosphor-arrow-circle-right-light,448_448,6;phosphor-arrow-circle-right-thin,512_448,6;phosphor-arrow-circle-right,576_448,6;phosphor-arrow-circle-up-bold,640_448,6;phosphor-arrow-circle-up-duotone,704_448,6;phosphor-arrow-circle-up-fill,768_448,6;phosphor-arrow-circle-up-left-bold,832_448,6;phosphor-arrow-circle-up-left-duotone,896_448,6;phosphor-arrow-circle-up-left-fill,960_448,6;phosphor-arrow-circle-up-left-light,0_512,6;phosphor-arrow-circle-up-left-thin,64_512,6;phosphor-arrow-circle-up-left,128_512,6;phosphor-arrow-circle-up-light,192_512,6;phosphor-arrow-circle-up-right-bold,256_512,6;phosphor-arrow-circle-up-right-duotone,320_512,6;phosphor-arrow-circle-up-right-fill,384_512,6;phosphor-arrow-circle-up-right-light,448_512,6;phosphor-arrow-circle-up-right-thin,512_512,6;phosphor-arrow-circle-up-right,576_512,6;phosphor-arrow-circle-up-thin,640_512,6;phosphor-arrow-circle-up,704_512,6;phosphor-arrow-clockwise-bold,768_512,6;phosphor-arrow-clockwise-duotone,832_512,6;phosphor-arrow-clockwise-fill,896_512,6;phosphor-arrow-clockwise-light,960_512,6;phosphor-arrow-clockwise-thin,0_576,6;phosphor-arrow-clockwise,64_576,6;phosphor-arrow-counter-clockwise-bold,128_576,6;phosphor-arrow-counter-clockwise-duotone,192_576,6;phosphor-arrow-counter-clockwise-fill,256_576,6;phosphor-arrow-counter-clockwise-light,320_576,6;phosphor-arrow-counter-clockwise-thin,384_576,6;phosphor-arrow-counter-clockwise,448_576,6;phosphor-arrow-down-bold,512_576,6;phosphor-arrow-down-duotone,576_576,6;phosphor-arrow-down-fill,640_576,6;phosphor-arrow-down-left-bold,704_576,6;phosphor-arrow-down-left-duotone,768_576,6;phosphor-arrow-down-left-fill,832_576,6;phosphor-arrow-down-left-light,896_576,6;phosphor-arrow-down-left-thin,960_576,6;phosphor-arrow-down-left,0_640,6;phosphor-arrow-down-light,64_640,6;phosphor-arrow-down-right-bold,128_640,6;phosphor-arrow-down-right-duotone,192_640,6;phosphor-arrow-down-right-fill,256_640,6;phosphor-arrow-down-right-light,320_640,6;phosphor-arrow-down-right-thin,384_640,6;phosphor-arrow-down-right,448_640,6;phosphor-arrow-down-thin,512_640,6;phosphor-arrow-down,576_640,6;phosphor-arrow-elbow-down-left-bold,640_640,6;phosphor-arrow-elbow-down-left-duotone,704_640,6;phosphor-arrow-elbow-down-left-fill,768_640,6;phosphor-arrow-elbow-down-left-light,832_640,6;phosphor-arrow-elbow-down-left-thin,896_640,6;phosphor-arrow-elbow-down-left,960_640,6;phosphor-arrow-elbow-down-right-bold,0_704,6;phosphor-arrow-elbow-down-right-duotone,64_704,6;phosphor-arrow-elbow-down-right-fill,128_704,6;phosphor-arrow-elbow-down-right-light,192_704,6;phosphor-arrow-elbow-down-right-thin,256_704,6;phosphor-arrow-elbow-down-right,320_704,6;phosphor-arrow-elbow-left-bold,384_704,6;phosphor-arrow-elbow-left-down-bold,448_704,6;phosphor-arrow-elbow-left-down-duotone,512_704,6;phosphor-arrow-elbow-left-down-fill,576_704,6;phosphor-arrow-elbow-left-down-light,640_704,6;phosphor-arrow-elbow-left-down-thin,704_704,6;phosphor-arrow-elbow-left-down,768_704,6;phosphor-arrow-elbow-left-duotone,832_704,6;phosphor-arrow-elbow-left-fill,896_704,6;phosphor-arrow-elbow-left-light,960_704,6;phosphor-arrow-elbow-left-thin,0_768,6;phosphor-arrow-elbow-left-up-bold,64_768,6;phosphor-arrow-elbow-left-up-duotone,128_768,6;phosphor-arrow-elbow-left-up-fill,192_768,6;phosphor-arrow-elbow-left-up-light,256_768,6;phosphor-arrow-elbow-left-up-thin,320_768,6;phosphor-arrow-elbow-left-up,384_768,6;phosphor-arrow-elbow-left,448_768,6;phosphor-arrow-elbow-right-bold,512_768,6;phosphor-arrow-elbow-right-down-bold,576_768,6;phosphor-arrow-elbow-right-down-duotone,640_768,6;phosphor-arrow-elbow-right-down-fill,704_768,6;phosphor-arrow-elbow-right-down-light,768_768,6;phosphor-arrow-elbow-right-down-thin,832_768,6;phosphor-arrow-elbow-right-down,896_768,6;phosphor-arrow-elbow-right-duotone,960_768,6;phosphor-arrow-elbow-right-fill,0_832,6;phosphor-arrow-elbow-right-light,64_832,6;phosphor-arrow-elbow-right-thin,128_832,6;phosphor-arrow-elbow-right-up-bold,192_832,6;phosphor-arrow-elbow-right-up-duotone,256_832,6;phosphor-arrow-elbow-right-up-fill,320_832,6;phosphor-arrow-elbow-right-up-light,384_832,6;phosphor-arrow-elbow-right-up-thin,448_832,6;phosphor-arrow-elbow-right-up,512_832,6;phosphor-arrow-elbow-right,576_832,6;phosphor-arrow-elbow-up-left-bold,640_832,6;phosphor-arrow-elbow-up-left-duotone,704_832,6;phosphor-arrow-elbow-up-left-fill,768_832,6;phosphor-arrow-elbow-up-left-light,832_832,6;phosphor-arrow-elbow-up-left-thin,896_832,6;phosphor-arrow-elbow-up-left,960_832,6;phosphor-arrow-elbow-up-right-bold,0_896,6;phosphor-arrow-elbow-up-right-duotone,64_896,6;phosphor-arrow-elbow-up-right-fill,128_896,6;phosphor-arrow-elbow-up-right-light,192_896,6;phosphor-arrow-elbow-up-right-thin,256_896,6;phosphor-arrow-elbow-up-right,320_896,6;phosphor-arrow-fat-down-bold,384_896,6;phosphor-arrow-fat-down-duotone,448_896,6;phosphor-arrow-fat-down-fill,512_896,6;phosphor-arrow-fat-down-light,576_896,6;phosphor-arrow-fat-down-thin,640_896,6;phosphor-arrow-fat-down,704_896,6;phosphor-arrow-fat-left-bold,768_896,6;phosphor-arrow-fat-left-duotone,832_896,6;phosphor-arrow-fat-left-fill,896_896,6;phosphor-arrow-fat-left-light,960_896,6;phosphor-arrow-fat-left-thin,0_960,6;phosphor-arrow-fat-left,64_960,6;phosphor-arrow-fat-line-down-bold,128_960,6;phosphor-arrow-fat-line-down-duotone,192_960,6;phosphor-arrow-fat-line-down-fill,256_960,6;phosphor-arrow-fat-line-down-light,320_960,6;phosphor-arrow-fat-line-down-thin,384_960,6;phosphor-arrow-fat-line-down,448_960,6;phosphor-arrow-fat-line-left-bold,512_960,6;phosphor-arrow-fat-line-left-duotone,576_960,6;phosphor-arrow-fat-line-left-fill,640_960,6;phosphor-arrow-fat-line-left-light,704_960,6;phosphor-arrow-fat-line-left-thin,768_960,6;phosphor-arrow-fat-line-left,832_960,6;phosphor-arrow-fat-line-right-bold,896_960,6;phosphor-arrow-fat-line-right-duotone,960_960,6;phosphor-arrow-fat-line-right-fill,0_0,7;phosphor-arrow-fat-line-right-light,64_0,7;phosphor-arrow-fat-line-right-thin,128_0,7;phosphor-arrow-fat-line-right,192_0,7;phosphor-arrow-fat-line-up-bold,256_0,7;phosphor-arrow-fat-line-up-duotone,320_0,7;phosphor-arrow-fat-line-up-fill,384_0,7;phosphor-arrow-fat-line-up-light,448_0,7;phosphor-arrow-fat-line-up-thin,512_0,7;phosphor-arrow-fat-line-up,576_0,7;phosphor-arrow-fat-lines-down-bold,640_0,7;phosphor-arrow-fat-lines-down-duotone,704_0,7;phosphor-arrow-fat-lines-down-fill,768_0,7;phosphor-arrow-fat-lines-down-light,832_0,7;phosphor-arrow-fat-lines-down-thin,896_0,7;phosphor-arrow-fat-lines-down,960_0,7;phosphor-arrow-fat-lines-left-bold,0_64,7;phosphor-arrow-fat-lines-left-duotone,64_64,7;phosphor-arrow-fat-lines-left-fill,128_64,7;phosphor-arrow-fat-lines-left-light,192_64,7;phosphor-arrow-fat-lines-left-thin,256_64,7;phosphor-arrow-fat-lines-left,320_64,7;phosphor-arrow-fat-lines-right-bold,384_64,7;phosphor-arrow-fat-lines-right-duotone,448_64,7;phosphor-arrow-fat-lines-right-fill,512_64,7;phosphor-arrow-fat-lines-right-light,576_64,7;phosphor-arrow-fat-lines-right-thin,640_64,7;phosphor-arrow-fat-lines-right,704_64,7;phosphor-arrow-fat-lines-up-bold,768_64,7;phosphor-arrow-fat-lines-up-duotone,832_64,7;phosphor-arrow-fat-lines-up-fill,896_64,7;phosphor-arrow-fat-lines-up-light,960_64,7;phosphor-arrow-fat-lines-up-thin,0_128,7;phosphor-arrow-fat-lines-up,64_128,7;phosphor-arrow-fat-right-bold,128_128,7;phosphor-arrow-fat-right-duotone,192_128,7;phosphor-arrow-fat-right-fill,256_128,7;phosphor-arrow-fat-right-light,320_128,7;phosphor-arrow-fat-right-thin,384_128,7;phosphor-arrow-fat-right,448_128,7;phosphor-arrow-fat-up-bold,512_128,7;phosphor-arrow-fat-up-duotone,576_128,7;phosphor-arrow-fat-up-fill,640_128,7;phosphor-arrow-fat-up-light,704_128,7;phosphor-arrow-fat-up-thin,768_128,7;phosphor-arrow-fat-up,832_128,7;phosphor-arrow-left-bold,896_128,7;phosphor-arrow-left-duotone,960_128,7;phosphor-arrow-left-fill,0_192,7;phosphor-arrow-left-light,64_192,7;phosphor-arrow-left-thin,128_192,7;phosphor-arrow-left,192_192,7;phosphor-arrow-line-down-bold,256_192,7;phosphor-arrow-line-down-duotone,320_192,7;phosphor-arrow-line-down-fill,384_192,7;phosphor-arrow-line-down-left-bold,448_192,7;phosphor-arrow-line-down-left-duotone,512_192,7;phosphor-arrow-line-down-left-fill,576_192,7;phosphor-arrow-line-down-left-light,640_192,7;phosphor-arrow-line-down-left-thin,704_192,7;phosphor-arrow-line-down-left,768_192,7;phosphor-arrow-line-down-light,832_192,7;phosphor-arrow-line-down-right-bold,896_192,7;phosphor-arrow-line-down-right-duotone,960_192,7;phosphor-arrow-line-down-right-fill,0_256,7;phosphor-arrow-line-down-right-light,64_256,7;phosphor-arrow-line-down-right-thin,128_256,7;phosphor-arrow-line-down-right,192_256,7;phosphor-arrow-line-down-thin,256_256,7;phosphor-arrow-line-down,320_256,7;phosphor-arrow-line-left-bold,384_256,7;phosphor-arrow-line-left-duotone,448_256,7;phosphor-arrow-line-left-fill,512_256,7;phosphor-arrow-line-left-light,576_256,7;phosphor-arrow-line-left-thin,640_256,7;phosphor-arrow-line-left,704_256,7;phosphor-arrow-line-right-bold,768_256,7;phosphor-arrow-line-right-duotone,832_256,7;phosphor-arrow-line-right-fill,896_256,7;phosphor-arrow-line-right-light,960_256,7;phosphor-arrow-line-right-thin,0_320,7;phosphor-arrow-line-right,64_320,7;phosphor-arrow-line-up-bold,128_320,7;phosphor-arrow-line-up-duotone,192_320,7;phosphor-arrow-line-up-fill,256_320,7;phosphor-arrow-line-up-left-bold,320_320,7;phosphor-arrow-line-up-left-duotone,384_320,7;phosphor-arrow-line-up-left-fill,448_320,7;phosphor-arrow-line-up-left-light,512_320,7;phosphor-arrow-line-up-left-thin,576_320,7;phosphor-arrow-line-up-left,640_320,7;phosphor-arrow-line-up-light,704_320,7;phosphor-arrow-line-up-right-bold,768_320,7;phosphor-arrow-line-up-right-duotone,832_320,7;phosphor-arrow-line-up-right-fill,896_320,7;phosphor-arrow-line-up-right-light,960_320,7;phosphor-arrow-line-up-right-thin,0_384,7;phosphor-arrow-line-up-right,64_384,7;phosphor-arrow-line-up-thin,128_384,7;phosphor-arrow-line-up,192_384,7;phosphor-arrow-right-bold,256_384,7;phosphor-arrow-right-duotone,320_384,7;phosphor-arrow-right-fill,384_384,7;phosphor-arrow-right-light,448_384,7;phosphor-arrow-right-thin,512_384,7;phosphor-arrow-right,576_384,7;phosphor-arrow-square-down-bold,640_384,7;phosphor-arrow-square-down-duotone,704_384,7;phosphor-arrow-square-down-fill,768_384,7;phosphor-arrow-square-down-left-bold,832_384,7;phosphor-arrow-square-down-left-duotone,896_384,7;phosphor-arrow-square-down-left-fill,960_384,7;phosphor-arrow-square-down-left-light,0_448,7;phosphor-arrow-square-down-left-thin,64_448,7;phosphor-arrow-square-down-left,128_448,7;phosphor-arrow-square-down-light,192_448,7;phosphor-arrow-square-down-right-bold,256_448,7;phosphor-arrow-square-down-right-duotone,320_448,7;phosphor-arrow-square-down-right-fill,384_448,7;phosphor-arrow-square-down-right-light,448_448,7;phosphor-arrow-square-down-right-thin,512_448,7;phosphor-arrow-square-down-right,576_448,7;phosphor-arrow-square-down-thin,640_448,7;phosphor-arrow-square-down,704_448,7;phosphor-arrow-square-in-bold,768_448,7;phosphor-arrow-square-in-duotone,832_448,7;phosphor-arrow-square-in-fill,896_448,7;phosphor-arrow-square-in-light,960_448,7;phosphor-arrow-square-in-thin,0_512,7;phosphor-arrow-square-in,64_512,7;phosphor-arrow-square-left-bold,128_512,7;phosphor-arrow-square-left-duotone,192_512,7;phosphor-arrow-square-left-fill,256_512,7;phosphor-arrow-square-left-light,320_512,7;phosphor-arrow-square-left-thin,384_512,7;phosphor-arrow-square-left,448_512,7;phosphor-arrow-square-out-bold,512_512,7;phosphor-arrow-square-out-duotone,576_512,7;phosphor-arrow-square-out-fill,640_512,7;phosphor-arrow-square-out-light,704_512,7;phosphor-arrow-square-out-thin,768_512,7;phosphor-arrow-square-out,832_512,7;phosphor-arrow-square-right-bold,896_512,7;phosphor-arrow-square-right-duotone,960_512,7;phosphor-arrow-square-right-fill,0_576,7;phosphor-arrow-square-right-light,64_576,7;phosphor-arrow-square-right-thin,128_576,7;phosphor-arrow-square-right,192_576,7;phosphor-arrow-square-up-bold,256_576,7;phosphor-arrow-square-up-duotone,320_576,7;phosphor-arrow-square-up-fill,384_576,7;phosphor-arrow-square-up-left-bold,448_576,7;phosphor-arrow-square-up-left-duotone,512_576,7;phosphor-arrow-square-up-left-fill,576_576,7;phosphor-arrow-square-up-left-light,640_576,7;phosphor-arrow-square-up-left-thin,704_576,7;phosphor-arrow-square-up-left,768_576,7;phosphor-arrow-square-up-light,832_576,7;phosphor-arrow-square-up-right-bold,896_576,7;phosphor-arrow-square-up-right-duotone,960_576,7;phosphor-arrow-square-up-right-fill,0_640,7;phosphor-arrow-square-up-right-light,64_640,7;phosphor-arrow-square-up-right-thin,128_640,7;phosphor-arrow-square-up-right,192_640,7;phosphor-arrow-square-up-thin,256_640,7;phosphor-arrow-square-up,320_640,7;phosphor-arrow-u-down-left-bold,384_640,7;phosphor-arrow-u-down-left-duotone,448_640,7;phosphor-arrow-u-down-left-fill,512_640,7;phosphor-arrow-u-down-left-light,576_640,7;phosphor-arrow-u-down-left-thin,640_640,7;phosphor-arrow-u-down-left,704_640,7;phosphor-arrow-u-down-right-bold,768_640,7;phosphor-arrow-u-down-right-duotone,832_640,7;phosphor-arrow-u-down-right-fill,896_640,7;phosphor-arrow-u-down-right-light,960_640,7;phosphor-arrow-u-down-right-thin,0_704,7;phosphor-arrow-u-down-right,64_704,7;phosphor-arrow-u-left-down-bold,128_704,7;phosphor-arrow-u-left-down-duotone,192_704,7;phosphor-arrow-u-left-down-fill,256_704,7;phosphor-arrow-u-left-down-light,320_704,7;phosphor-arrow-u-left-down-thin,384_704,7;phosphor-arrow-u-left-down,448_704,7;phosphor-arrow-u-left-up-bold,512_704,7;phosphor-arrow-u-left-up-duotone,576_704,7;phosphor-arrow-u-left-up-fill,640_704,7;phosphor-arrow-u-left-up-light,704_704,7;phosphor-arrow-u-left-up-thin,768_704,7;phosphor-arrow-u-left-up,832_704,7;phosphor-arrow-u-right-down-bold,896_704,7;phosphor-arrow-u-right-down-duotone,960_704,7;phosphor-arrow-u-right-down-fill,0_768,7;phosphor-arrow-u-right-down-light,64_768,7;phosphor-arrow-u-right-down-thin,128_768,7;phosphor-arrow-u-right-down,192_768,7;phosphor-arrow-u-right-up-bold,256_768,7;phosphor-arrow-u-right-up-duotone,320_768,7;phosphor-arrow-u-right-up-fill,384_768,7;phosphor-arrow-u-right-up-light,448_768,7;phosphor-arrow-u-right-up-thin,512_768,7;phosphor-arrow-u-right-up,576_768,7;phosphor-arrow-u-up-left-bold,640_768,7;phosphor-arrow-u-up-left-duotone,704_768,7;phosphor-arrow-u-up-left-fill,768_768,7;phosphor-arrow-u-up-left-light,832_768,7;phosphor-arrow-u-up-left-thin,896_768,7;phosphor-arrow-u-up-left,960_768,7;phosphor-arrow-u-up-right-bold,0_832,7;phosphor-arrow-u-up-right-duotone,64_832,7;phosphor-arrow-u-up-right-fill,128_832,7;phosphor-arrow-u-up-right-light,192_832,7;phosphor-arrow-u-up-right-thin,256_832,7;phosphor-arrow-u-up-right,320_832,7;phosphor-arrow-up-bold,384_832,7;phosphor-arrow-up-duotone,448_832,7;phosphor-arrow-up-fill,512_832,7;phosphor-arrow-up-left-bold,576_832,7;phosphor-arrow-up-left-duotone,640_832,7;phosphor-arrow-up-left-fill,704_832,7;phosphor-arrow-up-left-light,768_832,7;phosphor-arrow-up-left-thin,832_832,7;phosphor-arrow-up-left,896_832,7;phosphor-arrow-up-light,960_832,7;phosphor-arrow-up-right-bold,0_896,7;phosphor-arrow-up-right-duotone,64_896,7;phosphor-arrow-up-right-fill,128_896,7;phosphor-arrow-up-right-light,192_896,7;phosphor-arrow-up-right-thin,256_896,7;phosphor-arrow-up-right,320_896,7;phosphor-arrow-up-thin,384_896,7;phosphor-arrow-up,448_896,7;phosphor-arrows-clockwise-bold,512_896,7;phosphor-arrows-clockwise-duotone,576_896,7;phosphor-arrows-clockwise-fill,640_896,7;phosphor-arrows-clockwise-light,704_896,7;phosphor-arrows-clockwise-thin,768_896,7;phosphor-arrows-clockwise,832_896,7;phosphor-arrows-counter-clockwise-bold,896_896,7;phosphor-arrows-counter-clockwise-duotone,960_896,7;phosphor-arrows-counter-clockwise-fill,0_960,7;phosphor-arrows-counter-clockwise-light,64_960,7;phosphor-arrows-counter-clockwise-thin,128_960,7;phosphor-arrows-counter-clockwise,192_960,7;phosphor-arrows-down-up-bold,256_960,7;phosphor-arrows-down-up-duotone,320_960,7;phosphor-arrows-down-up-fill,384_960,7;phosphor-arrows-down-up-light,448_960,7;phosphor-arrows-down-up-thin,512_960,7;phosphor-arrows-down-up,576_960,7;phosphor-arrows-horizontal-bold,640_960,7;phosphor-arrows-horizontal-duotone,704_960,7;phosphor-arrows-horizontal-fill,768_960,7;phosphor-arrows-horizontal-light,832_960,7;phosphor-arrows-horizontal-thin,896_960,7;phosphor-arrows-horizontal,960_960,7;phosphor-arrows-in-bold,0_0,8;phosphor-arrows-in-cardinal-bold,64_0,8;phosphor-arrows-in-cardinal-duotone,128_0,8;phosphor-arrows-in-cardinal-fill,192_0,8;phosphor-arrows-in-cardinal-light,256_0,8;phosphor-arrows-in-cardinal-thin,320_0,8;phosphor-arrows-in-cardinal,384_0,8;phosphor-arrows-in-duotone,448_0,8;phosphor-arrows-in-fill,512_0,8;phosphor-arrows-in-light,576_0,8;phosphor-arrows-in-line-horizontal-bold,640_0,8;phosphor-arrows-in-line-horizontal-duotone,704_0,8;phosphor-arrows-in-line-horizontal-fill,768_0,8;phosphor-arrows-in-line-horizontal-light,832_0,8;phosphor-arrows-in-line-horizontal-thin,896_0,8;phosphor-arrows-in-line-horizontal,960_0,8;phosphor-arrows-in-line-vertical-bold,0_64,8;phosphor-arrows-in-line-vertical-duotone,64_64,8;phosphor-arrows-in-line-vertical-fill,128_64,8;phosphor-arrows-in-line-vertical-light,192_64,8;phosphor-arrows-in-line-vertical-thin,256_64,8;phosphor-arrows-in-line-vertical,320_64,8;phosphor-arrows-in-simple-bold,384_64,8;phosphor-arrows-in-simple-duotone,448_64,8;phosphor-arrows-in-simple-fill,512_64,8;phosphor-arrows-in-simple-light,576_64,8;phosphor-arrows-in-simple-thin,640_64,8;phosphor-arrows-in-simple,704_64,8;phosphor-arrows-in-thin,768_64,8;phosphor-arrows-in,832_64,8;phosphor-arrows-left-right-bold,896_64,8;phosphor-arrows-left-right-duotone,960_64,8;phosphor-arrows-left-right-fill,0_128,8;phosphor-arrows-left-right-light,64_128,8;phosphor-arrows-left-right-thin,128_128,8;phosphor-arrows-left-right,192_128,8;phosphor-arrows-merge-bold,256_128,8;phosphor-arrows-merge-duotone,320_128,8;phosphor-arrows-merge-fill,384_128,8;phosphor-arrows-merge-light,448_128,8;phosphor-arrows-merge-thin,512_128,8;phosphor-arrows-merge,576_128,8;phosphor-arrows-out-bold,640_128,8;phosphor-arrows-out-cardinal-bold,704_128,8;phosphor-arrows-out-cardinal-duotone,768_128,8;phosphor-arrows-out-cardinal-fill,832_128,8;phosphor-arrows-out-cardinal-light,896_128,8;phosphor-arrows-out-cardinal-thin,960_128,8;phosphor-arrows-out-cardinal,0_192,8;phosphor-arrows-out-duotone,64_192,8;phosphor-arrows-out-fill,128_192,8;phosphor-arrows-out-light,192_192,8;phosphor-arrows-out-line-horizontal-bold,256_192,8;phosphor-arrows-out-line-horizontal-duotone,320_192,8;phosphor-arrows-out-line-horizontal-fill,384_192,8;phosphor-arrows-out-line-horizontal-light,448_192,8;phosphor-arrows-out-line-horizontal-thin,512_192,8;phosphor-arrows-out-line-horizontal,576_192,8;phosphor-arrows-out-line-vertical-bold,640_192,8;phosphor-arrows-out-line-vertical-duotone,704_192,8;phosphor-arrows-out-line-vertical-fill,768_192,8;phosphor-arrows-out-line-vertical-light,832_192,8;phosphor-arrows-out-line-vertical-thin,896_192,8;phosphor-arrows-out-line-vertical,960_192,8;phosphor-arrows-out-simple-bold,0_256,8;phosphor-arrows-out-simple-duotone,64_256,8;phosphor-arrows-out-simple-fill,128_256,8;phosphor-arrows-out-simple-light,192_256,8;phosphor-arrows-out-simple-thin,256_256,8;phosphor-arrows-out-simple,320_256,8;phosphor-arrows-out-thin,384_256,8;phosphor-arrows-out,448_256,8;phosphor-arrows-split-bold,512_256,8;phosphor-arrows-split-duotone,576_256,8;phosphor-arrows-split-fill,640_256,8;phosphor-arrows-split-light,704_256,8;phosphor-arrows-split-thin,768_256,8;phosphor-arrows-split,832_256,8;phosphor-arrows-vertical-bold,896_256,8;phosphor-arrows-vertical-duotone,960_256,8;phosphor-arrows-vertical-fill,0_320,8;phosphor-arrows-vertical-light,64_320,8;phosphor-arrows-vertical-thin,128_320,8;phosphor-arrows-vertical,192_320,8;phosphor-article-bold,256_320,8;phosphor-article-duotone,320_320,8;phosphor-article-fill,384_320,8;phosphor-article-light,448_320,8;phosphor-article-medium-bold,512_320,8;phosphor-article-medium-duotone,576_320,8;phosphor-article-medium-fill,640_320,8;phosphor-article-medium-light,704_320,8;phosphor-article-medium-thin,768_320,8;phosphor-article-medium,832_320,8;phosphor-article-ny-times-bold,896_320,8;phosphor-article-ny-times-duotone,960_320,8;phosphor-article-ny-times-fill,0_384,8;phosphor-article-ny-times-light,64_384,8;phosphor-article-ny-times-thin,128_384,8;phosphor-article-ny-times,192_384,8;phosphor-article-thin,256_384,8;phosphor-article,320_384,8;phosphor-asclepius-bold,384_384,8;phosphor-asclepius-duotone,448_384,8;phosphor-asclepius-fill,512_384,8;phosphor-asclepius-light,576_384,8;phosphor-asclepius-thin,640_384,8;phosphor-asclepius,704_384,8;phosphor-asterisk-bold,768_384,8;phosphor-asterisk-duotone,832_384,8;phosphor-asterisk-fill,896_384,8;phosphor-asterisk-light,960_384,8;phosphor-asterisk-simple-bold,0_448,8;phosphor-asterisk-simple-duotone,64_448,8;phosphor-asterisk-simple-fill,128_448,8;phosphor-asterisk-simple-light,192_448,8;phosphor-asterisk-simple-thin,256_448,8;phosphor-asterisk-simple,320_448,8;phosphor-asterisk-thin,384_448,8;phosphor-asterisk,448_448,8;phosphor-at-bold,512_448,8;phosphor-at-duotone,576_448,8;phosphor-at-fill,640_448,8;phosphor-at-light,704_448,8;phosphor-at-thin,768_448,8;phosphor-at,832_448,8;phosphor-atom-bold,896_448,8;phosphor-atom-duotone,960_448,8;phosphor-atom-fill,0_512,8;phosphor-atom-light,64_512,8;phosphor-atom-thin,128_512,8;phosphor-atom,192_512,8;phosphor-avocado-bold,256_512,8;phosphor-avocado-duotone,320_512,8;phosphor-avocado-fill,384_512,8;phosphor-avocado-light,448_512,8;phosphor-avocado-thin,512_512,8;phosphor-avocado,576_512,8;phosphor-axe-bold,640_512,8;phosphor-axe-duotone,704_512,8;phosphor-axe-fill,768_512,8;phosphor-axe-light,832_512,8;phosphor-axe-thin,896_512,8;phosphor-axe,960_512,8;phosphor-baby-bold,0_576,8;phosphor-baby-carriage-bold,64_576,8;phosphor-baby-carriage-duotone,128_576,8;phosphor-baby-carriage-fill,192_576,8;phosphor-baby-carriage-light,256_576,8;phosphor-baby-carriage-thin,320_576,8;phosphor-baby-carriage,384_576,8;phosphor-baby-duotone,448_576,8;phosphor-baby-fill,512_576,8;phosphor-baby-light,576_576,8;phosphor-baby-thin,640_576,8;phosphor-baby,704_576,8;phosphor-backpack-bold,768_576,8;phosphor-backpack-duotone,832_576,8;phosphor-backpack-fill,896_576,8;phosphor-backpack-light,960_576,8;phosphor-backpack-thin,0_640,8;phosphor-backpack,64_640,8;phosphor-backspace-bold,128_640,8;phosphor-backspace-duotone,192_640,8;phosphor-backspace-fill,256_640,8;phosphor-backspace-light,320_640,8;phosphor-backspace-thin,384_640,8;phosphor-backspace,448_640,8;phosphor-bag-bold,512_640,8;phosphor-bag-duotone,576_640,8;phosphor-bag-fill,640_640,8;phosphor-bag-light,704_640,8;phosphor-bag-simple-bold,768_640,8;phosphor-bag-simple-duotone,832_640,8;phosphor-bag-simple-fill,896_640,8;phosphor-bag-simple-light,960_640,8;phosphor-bag-simple-thin,0_704,8;phosphor-bag-simple,64_704,8;phosphor-bag-thin,128_704,8;phosphor-bag,192_704,8;phosphor-balloon-bold,256_704,8;phosphor-balloon-duotone,320_704,8;phosphor-balloon-fill,384_704,8;phosphor-balloon-light,448_704,8;phosphor-balloon-thin,512_704,8;phosphor-balloon,576_704,8;phosphor-bandaids-bold,640_704,8;phosphor-bandaids-duotone,704_704,8;phosphor-bandaids-fill,768_704,8;phosphor-bandaids-light,832_704,8;phosphor-bandaids-thin,896_704,8;phosphor-bandaids,960_704,8;phosphor-bank-bold,0_768,8;phosphor-bank-duotone,64_768,8;phosphor-bank-fill,128_768,8;phosphor-bank-light,192_768,8;phosphor-bank-thin,256_768,8;phosphor-bank,320_768,8;phosphor-barbell-bold,384_768,8;phosphor-barbell-duotone,448_768,8;phosphor-barbell-fill,512_768,8;phosphor-barbell-light,576_768,8;phosphor-barbell-thin,640_768,8;phosphor-barbell,704_768,8;phosphor-barcode-bold,768_768,8;phosphor-barcode-duotone,832_768,8;phosphor-barcode-fill,896_768,8;phosphor-barcode-light,960_768,8;phosphor-barcode-thin,0_832,8;phosphor-barcode,64_832,8;phosphor-barn-bold,128_832,8;phosphor-barn-duotone,192_832,8;phosphor-barn-fill,256_832,8;phosphor-barn-light,320_832,8;phosphor-barn-thin,384_832,8;phosphor-barn,448_832,8;phosphor-barricade-bold,512_832,8;phosphor-barricade-duotone,576_832,8;phosphor-barricade-fill,640_832,8;phosphor-barricade-light,704_832,8;phosphor-barricade-thin,768_832,8;phosphor-barricade,832_832,8;phosphor-baseball-bold,896_832,8;phosphor-baseball-cap-bold,960_832,8;phosphor-baseball-cap-duotone,0_896,8;phosphor-baseball-cap-fill,64_896,8;phosphor-baseball-cap-light,128_896,8;phosphor-baseball-cap-thin,192_896,8;phosphor-baseball-cap,256_896,8;phosphor-baseball-duotone,320_896,8;phosphor-baseball-fill,384_896,8;phosphor-baseball-helmet-bold,448_896,8;phosphor-baseball-helmet-duotone,512_896,8;phosphor-baseball-helmet-fill,576_896,8;phosphor-baseball-helmet-light,640_896,8;phosphor-baseball-helmet-thin,704_896,8;phosphor-baseball-helmet,768_896,8;phosphor-baseball-light,832_896,8;phosphor-baseball-thin,896_896,8;phosphor-baseball,960_896,8;phosphor-basket-bold,0_960,8;phosphor-basket-duotone,64_960,8;phosphor-basket-fill,128_960,8;phosphor-basket-light,192_960,8;phosphor-basket-thin,256_960,8;phosphor-basket,320_960,8;phosphor-basketball-bold,384_960,8;phosphor-basketball-duotone,448_960,8;phosphor-basketball-fill,512_960,8;phosphor-basketball-light,576_960,8;phosphor-basketball-thin,640_960,8;phosphor-basketball,704_960,8;phosphor-bathtub-bold,768_960,8;phosphor-bathtub-duotone,832_960,8;phosphor-bathtub-fill,896_960,8;phosphor-bathtub-light,960_960,8;phosphor-bathtub-thin,0_0,9;phosphor-bathtub,64_0,9;phosphor-battery-charging-bold,128_0,9;phosphor-battery-charging-duotone,192_0,9;phosphor-battery-charging-fill,256_0,9;phosphor-battery-charging-light,320_0,9;phosphor-battery-charging-thin,384_0,9;phosphor-battery-charging-vertical-bold,448_0,9;phosphor-battery-charging-vertical-duotone,512_0,9;phosphor-battery-charging-vertical-fill,576_0,9;phosphor-battery-charging-vertical-light,640_0,9;phosphor-battery-charging-vertical-thin,704_0,9;phosphor-battery-charging-vertical,768_0,9;phosphor-battery-charging,832_0,9;phosphor-battery-empty-bold,896_0,9;phosphor-battery-empty-duotone,960_0,9;phosphor-battery-empty-fill,0_64,9;phosphor-battery-empty-light,64_64,9;phosphor-battery-empty-thin,128_64,9;phosphor-battery-empty,192_64,9;phosphor-battery-full-bold,256_64,9;phosphor-battery-full-duotone,320_64,9;phosphor-battery-full-fill,384_64,9;phosphor-battery-full-light,448_64,9;phosphor-battery-full-thin,512_64,9;phosphor-battery-full,576_64,9;phosphor-battery-high-bold,640_64,9;phosphor-battery-high-duotone,704_64,9;phosphor-battery-high-fill,768_64,9;phosphor-battery-high-light,832_64,9;phosphor-battery-high-thin,896_64,9;phosphor-battery-high,960_64,9;phosphor-battery-low-bold,0_128,9;phosphor-battery-low-duotone,64_128,9;phosphor-battery-low-fill,128_128,9;phosphor-battery-low-light,192_128,9;phosphor-battery-low-thin,256_128,9;phosphor-battery-low,320_128,9;phosphor-battery-medium-bold,384_128,9;phosphor-battery-medium-duotone,448_128,9;phosphor-battery-medium-fill,512_128,9;phosphor-battery-medium-light,576_128,9;phosphor-battery-medium-thin,640_128,9;phosphor-battery-medium,704_128,9;phosphor-battery-plus-bold,768_128,9;phosphor-battery-plus-duotone,832_128,9;phosphor-battery-plus-fill,896_128,9;phosphor-battery-plus-light,960_128,9;phosphor-battery-plus-thin,0_192,9;phosphor-battery-plus-vertical-bold,64_192,9;phosphor-battery-plus-vertical-duotone,128_192,9;phosphor-battery-plus-vertical-fill,192_192,9;phosphor-battery-plus-vertical-light,256_192,9;phosphor-battery-plus-vertical-thin,320_192,9;phosphor-battery-plus-vertical,384_192,9;phosphor-battery-plus,448_192,9;phosphor-battery-vertical-empty-bold,512_192,9;phosphor-battery-vertical-empty-duotone,576_192,9;phosphor-battery-vertical-empty-fill,640_192,9;phosphor-battery-vertical-empty-light,704_192,9;phosphor-battery-vertical-empty-thin,768_192,9;phosphor-battery-vertical-empty,832_192,9;phosphor-battery-vertical-full-bold,896_192,9;phosphor-battery-vertical-full-duotone,960_192,9;phosphor-battery-vertical-full-fill,0_256,9;phosphor-battery-vertical-full-light,64_256,9;phosphor-battery-vertical-full-thin,128_256,9;phosphor-battery-vertical-full,192_256,9;phosphor-battery-vertical-high-bold,256_256,9;phosphor-battery-vertical-high-duotone,320_256,9;phosphor-battery-vertical-high-fill,384_256,9;phosphor-battery-vertical-high-light,448_256,9;phosphor-battery-vertical-high-thin,512_256,9;phosphor-battery-vertical-high,576_256,9;phosphor-battery-vertical-low-bold,640_256,9;phosphor-battery-vertical-low-duotone,704_256,9;phosphor-battery-vertical-low-fill,768_256,9;phosphor-battery-vertical-low-light,832_256,9;phosphor-battery-vertical-low-thin,896_256,9;phosphor-battery-vertical-low,960_256,9;phosphor-battery-vertical-medium-bold,0_320,9;phosphor-battery-vertical-medium-duotone,64_320,9;phosphor-battery-vertical-medium-fill,128_320,9;phosphor-battery-vertical-medium-light,192_320,9;phosphor-battery-vertical-medium-thin,256_320,9;phosphor-battery-vertical-medium,320_320,9;phosphor-battery-warning-bold,384_320,9;phosphor-battery-warning-duotone,448_320,9;phosphor-battery-warning-fill,512_320,9;phosphor-battery-warning-light,576_320,9;phosphor-battery-warning-thin,640_320,9;phosphor-battery-warning-vertical-bold,704_320,9;phosphor-battery-warning-vertical-duotone,768_320,9;phosphor-battery-warning-vertical-fill,832_320,9;phosphor-battery-warning-vertical-light,896_320,9;phosphor-battery-warning-vertical-thin,960_320,9;phosphor-battery-warning-vertical,0_384,9;phosphor-battery-warning,64_384,9;phosphor-beach-ball-bold,128_384,9;phosphor-beach-ball-duotone,192_384,9;phosphor-beach-ball-fill,256_384,9;phosphor-beach-ball-light,320_384,9;phosphor-beach-ball-thin,384_384,9;phosphor-beach-ball,448_384,9;phosphor-beanie-bold,512_384,9;phosphor-beanie-duotone,576_384,9;phosphor-beanie-fill,640_384,9;phosphor-beanie-light,704_384,9;phosphor-beanie-thin,768_384,9;phosphor-beanie,832_384,9;phosphor-bed-bold,896_384,9;phosphor-bed-duotone,960_384,9;phosphor-bed-fill,0_448,9;phosphor-bed-light,64_448,9;phosphor-bed-thin,128_448,9;phosphor-bed,192_448,9;phosphor-beer-bottle-bold,256_448,9;phosphor-beer-bottle-duotone,320_448,9;phosphor-beer-bottle-fill,384_448,9;phosphor-beer-bottle-light,448_448,9;phosphor-beer-bottle-thin,512_448,9;phosphor-beer-bottle,576_448,9;phosphor-beer-stein-bold,640_448,9;phosphor-beer-stein-duotone,704_448,9;phosphor-beer-stein-fill,768_448,9;phosphor-beer-stein-light,832_448,9;phosphor-beer-stein-thin,896_448,9;phosphor-beer-stein,960_448,9;phosphor-behance-logo-bold,0_512,9;phosphor-behance-logo-duotone,64_512,9;phosphor-behance-logo-fill,128_512,9;phosphor-behance-logo-light,192_512,9;phosphor-behance-logo-thin,256_512,9;phosphor-behance-logo,320_512,9;phosphor-bell-bold,384_512,9;phosphor-bell-duotone,448_512,9;phosphor-bell-fill,512_512,9;phosphor-bell-light,576_512,9;phosphor-bell-ringing-bold,640_512,9;phosphor-bell-ringing-duotone,704_512,9;phosphor-bell-ringing-fill,768_512,9;phosphor-bell-ringing-light,832_512,9;phosphor-bell-ringing-thin,896_512,9;phosphor-bell-ringing,960_512,9;phosphor-bell-simple-bold,0_576,9;phosphor-bell-simple-duotone,64_576,9;phosphor-bell-simple-fill,128_576,9;phosphor-bell-simple-light,192_576,9;phosphor-bell-simple-ringing-bold,256_576,9;phosphor-bell-simple-ringing-duotone,320_576,9;phosphor-bell-simple-ringing-fill,384_576,9;phosphor-bell-simple-ringing-light,448_576,9;phosphor-bell-simple-ringing-thin,512_576,9;phosphor-bell-simple-ringing,576_576,9;phosphor-bell-simple-slash-bold,640_576,9;phosphor-bell-simple-slash-duotone,704_576,9;phosphor-bell-simple-slash-fill,768_576,9;phosphor-bell-simple-slash-light,832_576,9;phosphor-bell-simple-slash-thin,896_576,9;phosphor-bell-simple-slash,960_576,9;phosphor-bell-simple-thin,0_640,9;phosphor-bell-simple-z-bold,64_640,9;phosphor-bell-simple-z-duotone,128_640,9;phosphor-bell-simple-z-fill,192_640,9;phosphor-bell-simple-z-light,256_640,9;phosphor-bell-simple-z-thin,320_640,9;phosphor-bell-simple-z,384_640,9;phosphor-bell-simple,448_640,9;phosphor-bell-slash-bold,512_640,9;phosphor-bell-slash-duotone,576_640,9;phosphor-bell-slash-fill,640_640,9;phosphor-bell-slash-light,704_640,9;phosphor-bell-slash-thin,768_640,9;phosphor-bell-slash,832_640,9;phosphor-bell-thin,896_640,9;phosphor-bell-z-bold,960_640,9;phosphor-bell-z-duotone,0_704,9;phosphor-bell-z-fill,64_704,9;phosphor-bell-z-light,128_704,9;phosphor-bell-z-thin,192_704,9;phosphor-bell-z,256_704,9;phosphor-bell,320_704,9;phosphor-belt-bold,384_704,9;phosphor-belt-duotone,448_704,9;phosphor-belt-fill,512_704,9;phosphor-belt-light,576_704,9;phosphor-belt-thin,640_704,9;phosphor-belt,704_704,9;phosphor-bezier-curve-bold,768_704,9;phosphor-bezier-curve-duotone,832_704,9;phosphor-bezier-curve-fill,896_704,9;phosphor-bezier-curve-light,960_704,9;phosphor-bezier-curve-thin,0_768,9;phosphor-bezier-curve,64_768,9;phosphor-bicycle-bold,128_768,9;phosphor-bicycle-duotone,192_768,9;phosphor-bicycle-fill,256_768,9;phosphor-bicycle-light,320_768,9;phosphor-bicycle-thin,384_768,9;phosphor-bicycle,448_768,9;phosphor-binary-bold,512_768,9;phosphor-binary-duotone,576_768,9;phosphor-binary-fill,640_768,9;phosphor-binary-light,704_768,9;phosphor-binary-thin,768_768,9;phosphor-binary,832_768,9;phosphor-binoculars-bold,896_768,9;phosphor-binoculars-duotone,960_768,9;phosphor-binoculars-fill,0_832,9;phosphor-binoculars-light,64_832,9;phosphor-binoculars-thin,128_832,9;phosphor-binoculars,192_832,9;phosphor-biohazard-bold,256_832,9;phosphor-biohazard-duotone,320_832,9;phosphor-biohazard-fill,384_832,9;phosphor-biohazard-light,448_832,9;phosphor-biohazard-thin,512_832,9;phosphor-biohazard,576_832,9;phosphor-bird-bold,640_832,9;phosphor-bird-duotone,704_832,9;phosphor-bird-fill,768_832,9;phosphor-bird-light,832_832,9;phosphor-bird-thin,896_832,9;phosphor-bird,960_832,9;phosphor-blueprint-bold,0_896,9;phosphor-blueprint-duotone,64_896,9;phosphor-blueprint-fill,128_896,9;phosphor-blueprint-light,192_896,9;phosphor-blueprint-thin,256_896,9;phosphor-blueprint,320_896,9;phosphor-bluetooth-bold,384_896,9;phosphor-bluetooth-connected-bold,448_896,9;phosphor-bluetooth-connected-duotone,512_896,9;phosphor-bluetooth-connected-fill,576_896,9;phosphor-bluetooth-connected-light,640_896,9;phosphor-bluetooth-connected-thin,704_896,9;phosphor-bluetooth-connected,768_896,9;phosphor-bluetooth-duotone,832_896,9;phosphor-bluetooth-fill,896_896,9;phosphor-bluetooth-light,960_896,9;phosphor-bluetooth-slash-bold,0_960,9;phosphor-bluetooth-slash-duotone,64_960,9;phosphor-bluetooth-slash-fill,128_960,9;phosphor-bluetooth-slash-light,192_960,9;phosphor-bluetooth-slash-thin,256_960,9;phosphor-bluetooth-slash,320_960,9;phosphor-bluetooth-thin,384_960,9;phosphor-bluetooth-x-bold,448_960,9;phosphor-bluetooth-x-duotone,512_960,9;phosphor-bluetooth-x-fill,576_960,9;phosphor-bluetooth-x-light,640_960,9;phosphor-bluetooth-x-thin,704_960,9;phosphor-bluetooth-x,768_960,9;phosphor-bluetooth,832_960,9;phosphor-boat-bold,896_960,9;phosphor-boat-duotone,960_960,9;phosphor-boat-fill,0_0,10;phosphor-boat-light,64_0,10;phosphor-boat-thin,128_0,10;phosphor-boat,192_0,10;phosphor-bomb-bold,256_0,10;phosphor-bomb-duotone,320_0,10;phosphor-bomb-fill,384_0,10;phosphor-bomb-light,448_0,10;phosphor-bomb-thin,512_0,10;phosphor-bomb,576_0,10;phosphor-bone-bold,640_0,10;phosphor-bone-duotone,704_0,10;phosphor-bone-fill,768_0,10;phosphor-bone-light,832_0,10;phosphor-bone-thin,896_0,10;phosphor-bone,960_0,10;phosphor-book-bold,0_64,10;phosphor-book-bookmark-bold,64_64,10;phosphor-book-bookmark-duotone,128_64,10;phosphor-book-bookmark-fill,192_64,10;phosphor-book-bookmark-light,256_64,10;phosphor-book-bookmark-thin,320_64,10;phosphor-book-bookmark,384_64,10;phosphor-book-duotone,448_64,10;phosphor-book-fill,512_64,10;phosphor-book-light,576_64,10;phosphor-book-open-bold,640_64,10;phosphor-book-open-duotone,704_64,10;phosphor-book-open-fill,768_64,10;phosphor-book-open-light,832_64,10;phosphor-book-open-text-bold,896_64,10;phosphor-book-open-text-duotone,960_64,10;phosphor-book-open-text-fill,0_128,10;phosphor-book-open-text-light,64_128,10;phosphor-book-open-text-thin,128_128,10;phosphor-book-open-text,192_128,10;phosphor-book-open-thin,256_128,10;phosphor-book-open-user-bold,320_128,10;phosphor-book-open-user-duotone,384_128,10;phosphor-book-open-user-fill,448_128,10;phosphor-book-open-user-light,512_128,10;phosphor-book-open,576_128,10;phosphor-book-thin,640_128,10;phosphor-book-user-thin,704_128,10;phosphor-book-user,768_128,10;phosphor-book,832_128,10;phosphor-bookmark-bold,896_128,10;phosphor-bookmark-duotone,960_128,10;phosphor-bookmark-fill,0_192,10;phosphor-bookmark-light,64_192,10;phosphor-bookmark-simple-bold,128_192,10;phosphor-bookmark-simple-duotone,192_192,10;phosphor-bookmark-simple-fill,256_192,10;phosphor-bookmark-simple-light,320_192,10;phosphor-bookmark-simple-thin,384_192,10;phosphor-bookmark-simple,448_192,10;phosphor-bookmark-thin,512_192,10;phosphor-bookmark,576_192,10;phosphor-bookmarks-bold,640_192,10;phosphor-bookmarks-duotone,704_192,10;phosphor-bookmarks-fill,768_192,10;phosphor-bookmarks-light,832_192,10;phosphor-bookmarks-simple-bold,896_192,10;phosphor-bookmarks-simple-duotone,960_192,10;phosphor-bookmarks-simple-fill,0_256,10;phosphor-bookmarks-simple-light,64_256,10;phosphor-bookmarks-simple-thin,128_256,10;phosphor-bookmarks-simple,192_256,10;phosphor-bookmarks-thin,256_256,10;phosphor-bookmarks,320_256,10;phosphor-books-bold,384_256,10;phosphor-books-duotone,448_256,10;phosphor-books-fill,512_256,10;phosphor-books-light,576_256,10;phosphor-books-thin,640_256,10;phosphor-books,704_256,10;phosphor-boot-bold,768_256,10;phosphor-boot-duotone,832_256,10;phosphor-boot-fill,896_256,10;phosphor-boot-light,960_256,10;phosphor-boot-thin,0_320,10;phosphor-boot,64_320,10;phosphor-boules-bold,128_320,10;phosphor-boules-duotone,192_320,10;phosphor-boules-fill,256_320,10;phosphor-boules-light,320_320,10;phosphor-boules-thin,384_320,10;phosphor-boules,448_320,10;phosphor-bounding-box-bold,512_320,10;phosphor-bounding-box-duotone,576_320,10;phosphor-bounding-box-fill,640_320,10;phosphor-bounding-box-light,704_320,10;phosphor-bounding-box-thin,768_320,10;phosphor-bounding-box,832_320,10;phosphor-bowl-food-bold,896_320,10;phosphor-bowl-food-duotone,960_320,10;phosphor-bowl-food-fill,0_384,10;phosphor-bowl-food-light,64_384,10;phosphor-bowl-food-thin,128_384,10;phosphor-bowl-food,192_384,10;phosphor-bowl-steam-bold,256_384,10;phosphor-bowl-steam-duotone,320_384,10;phosphor-bowl-steam-fill,384_384,10;phosphor-bowl-steam-light,448_384,10;phosphor-bowl-steam-thin,512_384,10;phosphor-bowl-steam,576_384,10;phosphor-bowling-ball-bold,640_384,10;phosphor-bowling-ball-duotone,704_384,10;phosphor-bowling-ball-fill,768_384,10;phosphor-bowling-ball-light,832_384,10;phosphor-bowling-ball-thin,896_384,10;phosphor-bowling-ball,960_384,10;phosphor-box-arrow-down-bold,0_448,10;phosphor-box-arrow-down-duotone,64_448,10;phosphor-box-arrow-down-fill,128_448,10;phosphor-box-arrow-down-light,192_448,10;phosphor-box-arrow-down-thin,256_448,10;phosphor-box-arrow-down,320_448,10;phosphor-box-arrow-up-bold,384_448,10;phosphor-box-arrow-up-duotone,448_448,10;phosphor-box-arrow-up-fill,512_448,10;phosphor-box-arrow-up-light,576_448,10;phosphor-box-arrow-up-thin,640_448,10;phosphor-box-arrow-up,704_448,10;phosphor-boxing-glove-bold,768_448,10;phosphor-boxing-glove-duotone,832_448,10;phosphor-boxing-glove-fill,896_448,10;phosphor-boxing-glove-light,960_448,10;phosphor-boxing-glove-thin,0_512,10;phosphor-boxing-glove,64_512,10;phosphor-brackets-angle-bold,128_512,10;phosphor-brackets-angle-duotone,192_512,10;phosphor-brackets-angle-fill,256_512,10;phosphor-brackets-angle-light,320_512,10;phosphor-brackets-angle-thin,384_512,10;phosphor-brackets-angle,448_512,10;phosphor-brackets-curly-bold,512_512,10;phosphor-brackets-curly-duotone,576_512,10;phosphor-brackets-curly-fill,640_512,10;phosphor-brackets-curly-light,704_512,10;phosphor-brackets-curly-thin,768_512,10;phosphor-brackets-curly,832_512,10;phosphor-brackets-round-bold,896_512,10;phosphor-brackets-round-duotone,960_512,10;phosphor-brackets-round-fill,0_576,10;phosphor-brackets-round-light,64_576,10;phosphor-brackets-round-thin,128_576,10;phosphor-brackets-round,192_576,10;phosphor-brackets-square-bold,256_576,10;phosphor-brackets-square-duotone,320_576,10;phosphor-brackets-square-fill,384_576,10;phosphor-brackets-square-light,448_576,10;phosphor-brackets-square-thin,512_576,10;phosphor-brackets-square,576_576,10;phosphor-brain-bold,640_576,10;phosphor-brain-duotone,704_576,10;phosphor-brain-fill,768_576,10;phosphor-brain-light,832_576,10;phosphor-brain-thin,896_576,10;phosphor-brain,960_576,10;phosphor-brandy-bold,0_640,10;phosphor-brandy-duotone,64_640,10;phosphor-brandy-fill,128_640,10;phosphor-brandy-light,192_640,10;phosphor-brandy-thin,256_640,10;phosphor-brandy,320_640,10;phosphor-bread-bold,384_640,10;phosphor-bread-duotone,448_640,10;phosphor-bread-fill,512_640,10;phosphor-bread-light,576_640,10;phosphor-bread-thin,640_640,10;phosphor-bread,704_640,10;phosphor-bridge-bold,768_640,10;phosphor-bridge-duotone,832_640,10;phosphor-bridge-fill,896_640,10;phosphor-bridge-light,960_640,10;phosphor-bridge-thin,0_704,10;phosphor-bridge,64_704,10;phosphor-briefcase-bold,128_704,10;phosphor-briefcase-duotone,192_704,10;phosphor-briefcase-fill,256_704,10;phosphor-briefcase-light,320_704,10;phosphor-briefcase-metal-bold,384_704,10;phosphor-briefcase-metal-duotone,448_704,10;phosphor-briefcase-metal-fill,512_704,10;phosphor-briefcase-metal-light,576_704,10;phosphor-briefcase-metal-thin,640_704,10;phosphor-briefcase-metal,704_704,10;phosphor-briefcase-thin,768_704,10;phosphor-briefcase,832_704,10;phosphor-broadcast-bold,896_704,10;phosphor-broadcast-duotone,960_704,10;phosphor-broadcast-fill,0_768,10;phosphor-broadcast-light,64_768,10;phosphor-broadcast-thin,128_768,10;phosphor-broadcast,192_768,10;phosphor-broom-bold,256_768,10;phosphor-broom-duotone,320_768,10;phosphor-broom-fill,384_768,10;phosphor-broom-light,448_768,10;phosphor-broom-thin,512_768,10;phosphor-broom,576_768,10;phosphor-browser-bold,640_768,10;phosphor-browser-duotone,704_768,10;phosphor-browser-fill,768_768,10;phosphor-browser-light,832_768,10;phosphor-browser-thin,896_768,10;phosphor-browser,960_768,10;phosphor-browsers-bold,0_832,10;phosphor-browsers-duotone,64_832,10;phosphor-browsers-fill,128_832,10;phosphor-browsers-light,192_832,10;phosphor-browsers-thin,256_832,10;phosphor-browsers,320_832,10;phosphor-bug-beetle-bold,384_832,10;phosphor-bug-beetle-duotone,448_832,10;phosphor-bug-beetle-fill,512_832,10;phosphor-bug-beetle-light,576_832,10;phosphor-bug-beetle-thin,640_832,10;phosphor-bug-beetle,704_832,10;phosphor-bug-bold,768_832,10;phosphor-bug-droid-bold,832_832,10;phosphor-bug-droid-duotone,896_832,10;phosphor-bug-droid-fill,960_832,10;phosphor-bug-droid-light,0_896,10;phosphor-bug-droid-thin,64_896,10;phosphor-bug-droid,128_896,10;phosphor-bug-duotone,192_896,10;phosphor-bug-fill,256_896,10;phosphor-bug-light,320_896,10;phosphor-bug-thin,384_896,10;phosphor-bug,448_896,10;phosphor-building-apartment-bold,512_896,10;phosphor-building-apartment-duotone,576_896,10;phosphor-building-apartment-fill,640_896,10;phosphor-building-apartment-light,704_896,10;phosphor-building-apartment-thin,768_896,10;phosphor-building-apartment,832_896,10;phosphor-building-bold,896_896,10;phosphor-building-duotone,960_896,10;phosphor-building-fill,0_960,10;phosphor-building-light,64_960,10;phosphor-building-office-bold,128_960,10;phosphor-building-office-duotone,192_960,10;phosphor-building-office-fill,256_960,10;phosphor-building-office-light,320_960,10;phosphor-building-office-thin,384_960,10;phosphor-building-office,448_960,10;phosphor-building-thin,512_960,10;phosphor-building,576_960,10;phosphor-buildings-bold,640_960,10;phosphor-buildings-duotone,704_960,10;phosphor-buildings-fill,768_960,10;phosphor-buildings-light,832_960,10;phosphor-buildings-thin,896_960,10;phosphor-buildings,960_960,10;phosphor-bulldozer-bold,0_0,11;phosphor-bulldozer-duotone,64_0,11;phosphor-bulldozer-fill,128_0,11;phosphor-bulldozer-light,192_0,11;phosphor-bulldozer-thin,256_0,11;phosphor-bulldozer,320_0,11;phosphor-bus-bold,384_0,11;phosphor-bus-duotone,448_0,11;phosphor-bus-fill,512_0,11;phosphor-bus-light,576_0,11;phosphor-bus-thin,640_0,11;phosphor-bus,704_0,11;phosphor-butterfly-bold,768_0,11;phosphor-butterfly-duotone,832_0,11;phosphor-butterfly-fill,896_0,11;phosphor-butterfly-light,960_0,11;phosphor-butterfly-thin,0_64,11;phosphor-butterfly,64_64,11;phosphor-cable-car-bold,128_64,11;phosphor-cable-car-duotone,192_64,11;phosphor-cable-car-fill,256_64,11;phosphor-cable-car-light,320_64,11;phosphor-cable-car-thin,384_64,11;phosphor-cable-car,448_64,11;phosphor-cactus-bold,512_64,11;phosphor-cactus-duotone,576_64,11;phosphor-cactus-fill,640_64,11;phosphor-cactus-light,704_64,11;phosphor-cactus-thin,768_64,11;phosphor-cactus,832_64,11;phosphor-cake-bold,896_64,11;phosphor-cake-duotone,960_64,11;phosphor-cake-fill,0_128,11;phosphor-cake-light,64_128,11;phosphor-cake-thin,128_128,11;phosphor-cake,192_128,11;phosphor-calculator-bold,256_128,11;phosphor-calculator-duotone,320_128,11;phosphor-calculator-fill,384_128,11;phosphor-calculator-light,448_128,11;phosphor-calculator-thin,512_128,11;phosphor-calculator,576_128,11;phosphor-calendar-blank-bold,640_128,11;phosphor-calendar-blank-duotone,704_128,11;phosphor-calendar-blank-fill,768_128,11;phosphor-calendar-blank-light,832_128,11;phosphor-calendar-blank-thin,896_128,11;phosphor-calendar-blank,960_128,11;phosphor-calendar-bold,0_192,11;phosphor-calendar-check-bold,64_192,11;phosphor-calendar-check-duotone,128_192,11;phosphor-calendar-check-fill,192_192,11;phosphor-calendar-check-light,256_192,11;phosphor-calendar-check-thin,320_192,11;phosphor-calendar-check,384_192,11;phosphor-calendar-dot-bold,448_192,11;phosphor-calendar-dot-duotone,512_192,11;phosphor-calendar-dot-fill,576_192,11;phosphor-calendar-dot-light,640_192,11;phosphor-calendar-dot-thin,704_192,11;phosphor-calendar-dot,768_192,11;phosphor-calendar-dots-bold,832_192,11;phosphor-calendar-dots-duotone,896_192,11;phosphor-calendar-dots-fill,960_192,11;phosphor-calendar-dots-light,0_256,11;phosphor-calendar-dots-thin,64_256,11;phosphor-calendar-dots,128_256,11;phosphor-calendar-duotone,192_256,11;phosphor-calendar-fill,256_256,11;phosphor-calendar-heart-bold,320_256,11;phosphor-calendar-heart-duotone,384_256,11;phosphor-calendar-heart-fill,448_256,11;phosphor-calendar-heart-light,512_256,11;phosphor-calendar-heart-thin,576_256,11;phosphor-calendar-heart,640_256,11;phosphor-calendar-light,704_256,11;phosphor-calendar-minus-bold,768_256,11;phosphor-calendar-minus-duotone,832_256,11;phosphor-calendar-minus-fill,896_256,11;phosphor-calendar-minus-light,960_256,11;phosphor-calendar-minus-thin,0_320,11;phosphor-calendar-minus,64_320,11;phosphor-calendar-plus-bold,128_320,11;phosphor-calendar-plus-duotone,192_320,11;phosphor-calendar-plus-fill,256_320,11;phosphor-calendar-plus-light,320_320,11;phosphor-calendar-plus-thin,384_320,11;phosphor-calendar-plus,448_320,11;phosphor-calendar-slash-bold,512_320,11;phosphor-calendar-slash-duotone,576_320,11;phosphor-calendar-slash-fill,640_320,11;phosphor-calendar-slash-light,704_320,11;phosphor-calendar-slash-thin,768_320,11;phosphor-calendar-slash,832_320,11;phosphor-calendar-star-bold,896_320,11;phosphor-calendar-star-duotone,960_320,11;phosphor-calendar-star-fill,0_384,11;phosphor-calendar-star-light,64_384,11;phosphor-calendar-star-thin,128_384,11;phosphor-calendar-star,192_384,11;phosphor-calendar-thin,256_384,11;phosphor-calendar-x-bold,320_384,11;phosphor-calendar-x-duotone,384_384,11;phosphor-calendar-x-fill,448_384,11;phosphor-calendar-x-light,512_384,11;phosphor-calendar-x-thin,576_384,11;phosphor-calendar-x,640_384,11;phosphor-calendar,704_384,11;phosphor-call-bell-bold,768_384,11;phosphor-call-bell-duotone,832_384,11;phosphor-call-bell-fill,896_384,11;phosphor-call-bell-light,960_384,11;phosphor-call-bell-thin,0_448,11;phosphor-call-bell,64_448,11;phosphor-camera-bold,128_448,11;phosphor-camera-duotone,192_448,11;phosphor-camera-fill,256_448,11;phosphor-camera-light,320_448,11;phosphor-camera-plus-bold,384_448,11;phosphor-camera-plus-duotone,448_448,11;phosphor-camera-plus-fill,512_448,11;phosphor-camera-plus-light,576_448,11;phosphor-camera-plus-thin,640_448,11;phosphor-camera-plus,704_448,11;phosphor-camera-rotate-bold,768_448,11;phosphor-camera-rotate-duotone,832_448,11;phosphor-camera-rotate-fill,896_448,11;phosphor-camera-rotate-light,960_448,11;phosphor-camera-rotate-thin,0_512,11;phosphor-camera-rotate,64_512,11;phosphor-camera-slash-bold,128_512,11;phosphor-camera-slash-duotone,192_512,11;phosphor-camera-slash-fill,256_512,11;phosphor-camera-slash-light,320_512,11;phosphor-camera-slash-thin,384_512,11;phosphor-camera-slash,448_512,11;phosphor-camera-thin,512_512,11;phosphor-camera,576_512,11;phosphor-campfire-bold,640_512,11;phosphor-campfire-duotone,704_512,11;phosphor-campfire-fill,768_512,11;phosphor-campfire-light,832_512,11;phosphor-campfire-thin,896_512,11;phosphor-campfire,960_512,11;phosphor-car-battery-bold,0_576,11;phosphor-car-battery-duotone,64_576,11;phosphor-car-battery-fill,128_576,11;phosphor-car-battery-light,192_576,11;phosphor-car-battery-thin,256_576,11;phosphor-car-battery,320_576,11;phosphor-car-bold,384_576,11;phosphor-car-duotone,448_576,11;phosphor-car-fill,512_576,11;phosphor-car-light,576_576,11;phosphor-car-profile-bold,640_576,11;phosphor-car-profile-duotone,704_576,11;phosphor-car-profile-fill,768_576,11;phosphor-car-profile-light,832_576,11;phosphor-car-profile-thin,896_576,11;phosphor-car-profile,960_576,11;phosphor-car-simple-bold,0_640,11;phosphor-car-simple-duotone,64_640,11;phosphor-car-simple-fill,128_640,11;phosphor-car-simple-light,192_640,11;phosphor-car-simple-thin,256_640,11;phosphor-car-simple,320_640,11;phosphor-car-thin,384_640,11;phosphor-car,448_640,11;phosphor-cardholder-bold,512_640,11;phosphor-cardholder-duotone,576_640,11;phosphor-cardholder-fill,640_640,11;phosphor-cardholder-light,704_640,11;phosphor-cardholder-thin,768_640,11;phosphor-cardholder,832_640,11;phosphor-cards-bold,896_640,11;phosphor-cards-duotone,960_640,11;phosphor-cards-fill,0_704,11;phosphor-cards-light,64_704,11;phosphor-cards-thin,128_704,11;phosphor-cards-three-bold,192_704,11;phosphor-cards-three-duotone,256_704,11;phosphor-cards-three-fill,320_704,11;phosphor-cards-three-light,384_704,11;phosphor-cards-three-thin,448_704,11;phosphor-cards-three,512_704,11;phosphor-cards,576_704,11;phosphor-caret-circle-double-down-bold,640_704,11;phosphor-caret-circle-double-down-duotone,704_704,11;phosphor-caret-circle-double-down-fill,768_704,11;phosphor-caret-circle-double-down-light,832_704,11;phosphor-caret-circle-double-down-thin,896_704,11;phosphor-caret-circle-double-down,960_704,11;phosphor-caret-circle-double-left-bold,0_768,11;phosphor-caret-circle-double-left-duotone,64_768,11;phosphor-caret-circle-double-left-fill,128_768,11;phosphor-caret-circle-double-left-light,192_768,11;phosphor-caret-circle-double-left-thin,256_768,11;phosphor-caret-circle-double-left,320_768,11;phosphor-caret-circle-double-right-bold,384_768,11;phosphor-caret-circle-double-right-duotone,448_768,11;phosphor-caret-circle-double-right-fill,512_768,11;phosphor-caret-circle-double-right-light,576_768,11;phosphor-caret-circle-double-right-thin,640_768,11;phosphor-caret-circle-double-right,704_768,11;phosphor-caret-circle-double-up-bold,768_768,11;phosphor-caret-circle-double-up-duotone,832_768,11;phosphor-caret-circle-double-up-fill,896_768,11;phosphor-caret-circle-double-up-light,960_768,11;phosphor-caret-circle-double-up-thin,0_832,11;phosphor-caret-circle-double-up,64_832,11;phosphor-caret-circle-down-bold,128_832,11;phosphor-caret-circle-down-duotone,192_832,11;phosphor-caret-circle-down-fill,256_832,11;phosphor-caret-circle-down-light,320_832,11;phosphor-caret-circle-down-thin,384_832,11;phosphor-caret-circle-down,448_832,11;phosphor-caret-circle-left-bold,512_832,11;phosphor-caret-circle-left-duotone,576_832,11;phosphor-caret-circle-left-fill,640_832,11;phosphor-caret-circle-left-light,704_832,11;phosphor-caret-circle-left-thin,768_832,11;phosphor-caret-circle-left,832_832,11;phosphor-caret-circle-right-bold,896_832,11;phosphor-caret-circle-right-duotone,960_832,11;phosphor-caret-circle-right-fill,0_896,11;phosphor-caret-circle-right-light,64_896,11;phosphor-caret-circle-right-thin,128_896,11;phosphor-caret-circle-right,192_896,11;phosphor-caret-circle-up-bold,256_896,11;phosphor-caret-circle-up-down-bold,320_896,11;phosphor-caret-circle-up-down-duotone,384_896,11;phosphor-caret-circle-up-down-fill,448_896,11;phosphor-caret-circle-up-down-light,512_896,11;phosphor-caret-circle-up-down-thin,576_896,11;phosphor-caret-circle-up-down,640_896,11;phosphor-caret-circle-up-duotone,704_896,11;phosphor-caret-circle-up-fill,768_896,11;phosphor-caret-circle-up-light,832_896,11;phosphor-caret-circle-up-thin,896_896,11;phosphor-caret-circle-up,960_896,11;phosphor-caret-double-down-bold,0_960,11;phosphor-caret-double-down-duotone,64_960,11;phosphor-caret-double-down-fill,128_960,11;phosphor-caret-double-down-light,192_960,11;phosphor-caret-double-down-thin,256_960,11;phosphor-caret-double-down,320_960,11;phosphor-caret-double-left-bold,384_960,11;phosphor-caret-double-left-duotone,448_960,11;phosphor-caret-double-left-fill,512_960,11;phosphor-caret-double-left-light,576_960,11;phosphor-caret-double-left-thin,640_960,11;phosphor-caret-double-left,704_960,11;phosphor-caret-double-right-bold,768_960,11;phosphor-caret-double-right-duotone,832_960,11;phosphor-caret-double-right-fill,896_960,11;phosphor-caret-double-right-light,960_960,11;phosphor-caret-double-right-thin,0_0,12;phosphor-caret-double-right,64_0,12;phosphor-caret-double-up-bold,128_0,12;phosphor-caret-double-up-duotone,192_0,12;phosphor-caret-double-up-fill,256_0,12;phosphor-caret-double-up-light,320_0,12;phosphor-caret-double-up-thin,384_0,12;phosphor-caret-double-up,448_0,12;phosphor-caret-down-bold,512_0,12;phosphor-caret-down-duotone,576_0,12;phosphor-caret-down-fill,640_0,12;phosphor-caret-down-light,704_0,12;phosphor-caret-down-thin,768_0,12;phosphor-caret-down,832_0,12;phosphor-caret-left-bold,896_0,12;phosphor-caret-left-duotone,960_0,12;phosphor-caret-left-fill,0_64,12;phosphor-caret-left-light,64_64,12;phosphor-caret-left-thin,128_64,12;phosphor-caret-left,192_64,12;phosphor-caret-line-down-bold,256_64,12;phosphor-caret-line-down-duotone,320_64,12;phosphor-caret-line-down-fill,384_64,12;phosphor-caret-line-down-light,448_64,12;phosphor-caret-line-down-thin,512_64,12;phosphor-caret-line-down,576_64,12;phosphor-caret-line-left-bold,640_64,12;phosphor-caret-line-left-duotone,704_64,12;phosphor-caret-line-left-fill,768_64,12;phosphor-caret-line-left-light,832_64,12;phosphor-caret-line-left-thin,896_64,12;phosphor-caret-line-left,960_64,12;phosphor-caret-line-right-bold,0_128,12;phosphor-caret-line-right-duotone,64_128,12;phosphor-caret-line-right-fill,128_128,12;phosphor-caret-line-right-light,192_128,12;phosphor-caret-line-right-thin,256_128,12;phosphor-caret-line-right,320_128,12;phosphor-caret-line-up-bold,384_128,12;phosphor-caret-line-up-duotone,448_128,12;phosphor-caret-line-up-fill,512_128,12;phosphor-caret-line-up-light,576_128,12;phosphor-caret-line-up-thin,640_128,12;phosphor-caret-line-up,704_128,12;phosphor-caret-right-bold,768_128,12;phosphor-caret-right-duotone,832_128,12;phosphor-caret-right-fill,896_128,12;phosphor-caret-right-light,960_128,12;phosphor-caret-right-thin,0_192,12;phosphor-caret-right,64_192,12;phosphor-caret-up-bold,128_192,12;phosphor-caret-up-down-bold,192_192,12;phosphor-caret-up-down-duotone,256_192,12;phosphor-caret-up-down-fill,320_192,12;phosphor-caret-up-down-light,384_192,12;phosphor-caret-up-down-thin,448_192,12;phosphor-caret-up-down,512_192,12;phosphor-caret-up-duotone,576_192,12;phosphor-caret-up-fill,640_192,12;phosphor-caret-up-light,704_192,12;phosphor-caret-up-thin,768_192,12;phosphor-caret-up,832_192,12;phosphor-carrot-bold,896_192,12;phosphor-carrot-duotone,960_192,12;phosphor-carrot-fill,0_256,12;phosphor-carrot-light,64_256,12;phosphor-carrot-thin,128_256,12;phosphor-carrot,192_256,12;phosphor-cash-register-bold,256_256,12;phosphor-cash-register-duotone,320_256,12;phosphor-cash-register-fill,384_256,12;phosphor-cash-register-light,448_256,12;phosphor-cash-register-thin,512_256,12;phosphor-cash-register,576_256,12;phosphor-cassette-tape-bold,640_256,12;phosphor-cassette-tape-duotone,704_256,12;phosphor-cassette-tape-fill,768_256,12;phosphor-cassette-tape-light,832_256,12;phosphor-cassette-tape-thin,896_256,12;phosphor-cassette-tape,960_256,12;phosphor-castle-turret-bold,0_320,12;phosphor-castle-turret-duotone,64_320,12;phosphor-castle-turret-fill,128_320,12;phosphor-castle-turret-light,192_320,12;phosphor-castle-turret-thin,256_320,12;phosphor-castle-turret,320_320,12;phosphor-cat-bold,384_320,12;phosphor-cat-duotone,448_320,12;phosphor-cat-fill,512_320,12;phosphor-cat-light,576_320,12;phosphor-cat-thin,640_320,12;phosphor-cat,704_320,12;phosphor-cell-signal-full-bold,768_320,12;phosphor-cell-signal-full-duotone,832_320,12;phosphor-cell-signal-full-fill,896_320,12;phosphor-cell-signal-full-light,960_320,12;phosphor-cell-signal-full-thin,0_384,12;phosphor-cell-signal-full,64_384,12;phosphor-cell-signal-high-bold,128_384,12;phosphor-cell-signal-high-duotone,192_384,12;phosphor-cell-signal-high-fill,256_384,12;phosphor-cell-signal-high-light,320_384,12;phosphor-cell-signal-high-thin,384_384,12;phosphor-cell-signal-high,448_384,12;phosphor-cell-signal-low-bold,512_384,12;phosphor-cell-signal-low-duotone,576_384,12;phosphor-cell-signal-low-fill,640_384,12;phosphor-cell-signal-low-light,704_384,12;phosphor-cell-signal-low-thin,768_384,12;phosphor-cell-signal-low,832_384,12;phosphor-cell-signal-medium-bold,896_384,12;phosphor-cell-signal-medium-duotone,960_384,12;phosphor-cell-signal-medium-fill,0_448,12;phosphor-cell-signal-medium-light,64_448,12;phosphor-cell-signal-medium-thin,128_448,12;phosphor-cell-signal-medium,192_448,12;phosphor-cell-signal-none-bold,256_448,12;phosphor-cell-signal-none-duotone,320_448,12;phosphor-cell-signal-none-fill,384_448,12;phosphor-cell-signal-none-light,448_448,12;phosphor-cell-signal-none-thin,512_448,12;phosphor-cell-signal-none,576_448,12;phosphor-cell-signal-slash-bold,640_448,12;phosphor-cell-signal-slash-duotone,704_448,12;phosphor-cell-signal-slash-fill,768_448,12;phosphor-cell-signal-slash-light,832_448,12;phosphor-cell-signal-slash-thin,896_448,12;phosphor-cell-signal-slash,960_448,12;phosphor-cell-signal-x-bold,0_512,12;phosphor-cell-signal-x-duotone,64_512,12;phosphor-cell-signal-x-fill,128_512,12;phosphor-cell-signal-x-light,192_512,12;phosphor-cell-signal-x-thin,256_512,12;phosphor-cell-signal-x,320_512,12;phosphor-cell-tower-bold,384_512,12;phosphor-cell-tower-duotone,448_512,12;phosphor-cell-tower-fill,512_512,12;phosphor-cell-tower-light,576_512,12;phosphor-cell-tower-thin,640_512,12;phosphor-cell-tower,704_512,12;phosphor-certificate-bold,768_512,12;phosphor-certificate-duotone,832_512,12;phosphor-certificate-fill,896_512,12;phosphor-certificate-light,960_512,12;phosphor-certificate-thin,0_576,12;phosphor-certificate,64_576,12;phosphor-chair-bold,128_576,12;phosphor-chair-duotone,192_576,12;phosphor-chair-fill,256_576,12;phosphor-chair-light,320_576,12;phosphor-chair-thin,384_576,12;phosphor-chair,448_576,12;phosphor-chalkboard-bold,512_576,12;phosphor-chalkboard-duotone,576_576,12;phosphor-chalkboard-fill,640_576,12;phosphor-chalkboard-light,704_576,12;phosphor-chalkboard-simple-bold,768_576,12;phosphor-chalkboard-simple-duotone,832_576,12;phosphor-chalkboard-simple-fill,896_576,12;phosphor-chalkboard-simple-light,960_576,12;phosphor-chalkboard-simple-thin,0_640,12;phosphor-chalkboard-simple,64_640,12;phosphor-chalkboard-teacher-bold,128_640,12;phosphor-chalkboard-teacher-duotone,192_640,12;phosphor-chalkboard-teacher-fill,256_640,12;phosphor-chalkboard-teacher-light,320_640,12;phosphor-chalkboard-teacher-thin,384_640,12;phosphor-chalkboard-teacher,448_640,12;phosphor-chalkboard-thin,512_640,12;phosphor-chalkboard,576_640,12;phosphor-champagne-bold,640_640,12;phosphor-champagne-duotone,704_640,12;phosphor-champagne-fill,768_640,12;phosphor-champagne-light,832_640,12;phosphor-champagne-thin,896_640,12;phosphor-champagne,960_640,12;phosphor-charging-station-bold,0_704,12;phosphor-charging-station-duotone,64_704,12;phosphor-charging-station-fill,128_704,12;phosphor-charging-station-light,192_704,12;phosphor-charging-station-thin,256_704,12;phosphor-charging-station,320_704,12;phosphor-chart-bar-bold,384_704,12;phosphor-chart-bar-duotone,448_704,12;phosphor-chart-bar-fill,512_704,12;phosphor-chart-bar-horizontal-bold,576_704,12;phosphor-chart-bar-horizontal-duotone,640_704,12;phosphor-chart-bar-horizontal-fill,704_704,12;phosphor-chart-bar-horizontal-light,768_704,12;phosphor-chart-bar-horizontal-thin,832_704,12;phosphor-chart-bar-horizontal,896_704,12;phosphor-chart-bar-light,960_704,12;phosphor-chart-bar-thin,0_768,12;phosphor-chart-bar,64_768,12;phosphor-chart-donut-bold,128_768,12;phosphor-chart-donut-duotone,192_768,12;phosphor-chart-donut-fill,256_768,12;phosphor-chart-donut-light,320_768,12;phosphor-chart-donut-thin,384_768,12;phosphor-chart-donut,448_768,12;phosphor-chart-line-bold,512_768,12;phosphor-chart-line-down-bold,576_768,12;phosphor-chart-line-down-duotone,640_768,12;phosphor-chart-line-down-fill,704_768,12;phosphor-chart-line-down-light,768_768,12;phosphor-chart-line-down-thin,832_768,12;phosphor-chart-line-down,896_768,12;phosphor-chart-line-duotone,960_768,12;phosphor-chart-line-fill,0_832,12;phosphor-chart-line-light,64_832,12;phosphor-chart-line-thin,128_832,12;phosphor-chart-line-up-bold,192_832,12;phosphor-chart-line-up-duotone,256_832,12;phosphor-chart-line-up-fill,320_832,12;phosphor-chart-line-up-light,384_832,12;phosphor-chart-line-up-thin,448_832,12;phosphor-chart-line-up,512_832,12;phosphor-chart-line,576_832,12;phosphor-chart-pie-bold,640_832,12;phosphor-chart-pie-duotone,704_832,12;phosphor-chart-pie-fill,768_832,12;phosphor-chart-pie-light,832_832,12;phosphor-chart-pie-slice-bold,896_832,12;phosphor-chart-pie-slice-duotone,960_832,12;phosphor-chart-pie-slice-fill,0_896,12;phosphor-chart-pie-slice-light,64_896,12;phosphor-chart-pie-slice-thin,128_896,12;phosphor-chart-pie-slice,192_896,12;phosphor-chart-pie-thin,256_896,12;phosphor-chart-pie,320_896,12;phosphor-chart-polar-bold,384_896,12;phosphor-chart-polar-duotone,448_896,12;phosphor-chart-polar-fill,512_896,12;phosphor-chart-polar-light,576_896,12;phosphor-chart-polar-thin,640_896,12;phosphor-chart-polar,704_896,12;phosphor-chart-scatter-bold,768_896,12;phosphor-chart-scatter-duotone,832_896,12;phosphor-chart-scatter-fill,896_896,12;phosphor-chart-scatter-light,960_896,12;phosphor-chart-scatter-thin,0_960,12;phosphor-chart-scatter,64_960,12;phosphor-chat-bold,128_960,12;phosphor-chat-centered-bold,192_960,12;phosphor-chat-centered-dots-bold,256_960,12;phosphor-chat-centered-dots-duotone,320_960,12;phosphor-chat-centered-dots-fill,384_960,12;phosphor-chat-centered-dots-light,448_960,12;phosphor-chat-centered-dots-thin,512_960,12;phosphor-chat-centered-dots,576_960,12;phosphor-chat-centered-duotone,640_960,12;phosphor-chat-centered-fill,704_960,12;phosphor-chat-centered-light,768_960,12;phosphor-chat-centered-slash-bold,832_960,12;phosphor-chat-centered-slash-duotone,896_960,12;phosphor-chat-centered-slash-fill,960_960,12;phosphor-chat-centered-slash-light,0_0,13;phosphor-chat-centered-slash-thin,64_0,13;phosphor-chat-centered-slash,128_0,13;phosphor-chat-centered-text-bold,192_0,13;phosphor-chat-centered-text-duotone,256_0,13;phosphor-chat-centered-text-fill,320_0,13;phosphor-chat-centered-text-light,384_0,13;phosphor-chat-centered-text-thin,448_0,13;phosphor-chat-centered-text,512_0,13;phosphor-chat-centered-thin,576_0,13;phosphor-chat-centered,640_0,13;phosphor-chat-circle-bold,704_0,13;phosphor-chat-circle-dots-bold,768_0,13;phosphor-chat-circle-dots-duotone,832_0,13;phosphor-chat-circle-dots-fill,896_0,13;phosphor-chat-circle-dots-light,960_0,13;phosphor-chat-circle-dots-thin,0_64,13;phosphor-chat-circle-dots,64_64,13;phosphor-chat-circle-duotone,128_64,13;phosphor-chat-circle-fill,192_64,13;phosphor-chat-circle-light,256_64,13;phosphor-chat-circle-slash-bold,320_64,13;phosphor-chat-circle-slash-duotone,384_64,13;phosphor-chat-circle-slash-fill,448_64,13;phosphor-chat-circle-slash-light,512_64,13;phosphor-chat-circle-slash-thin,576_64,13;phosphor-chat-circle-slash,640_64,13;phosphor-chat-circle-text-bold,704_64,13;phosphor-chat-circle-text-duotone,768_64,13;phosphor-chat-circle-text-fill,832_64,13;phosphor-chat-circle-text-light,896_64,13;phosphor-chat-circle-text-thin,960_64,13;phosphor-chat-circle-text,0_128,13;phosphor-chat-circle-thin,64_128,13;phosphor-chat-circle,128_128,13;phosphor-chat-dots-bold,192_128,13;phosphor-chat-dots-duotone,256_128,13;phosphor-chat-dots-fill,320_128,13;phosphor-chat-dots-light,384_128,13;phosphor-chat-dots-thin,448_128,13;phosphor-chat-dots,512_128,13;phosphor-chat-duotone,576_128,13;phosphor-chat-fill,640_128,13;phosphor-chat-light,704_128,13;phosphor-chat-slash-bold,768_128,13;phosphor-chat-slash-duotone,832_128,13;phosphor-chat-slash-fill,896_128,13;phosphor-chat-slash-light,960_128,13;phosphor-chat-slash-thin,0_192,13;phosphor-chat-slash,64_192,13;phosphor-chat-teardrop-bold,128_192,13;phosphor-chat-teardrop-dots-bold,192_192,13;phosphor-chat-teardrop-dots-duotone,256_192,13;phosphor-chat-teardrop-dots-fill,320_192,13;phosphor-chat-teardrop-dots-light,384_192,13;phosphor-chat-teardrop-dots-thin,448_192,13;phosphor-chat-teardrop-dots,512_192,13;phosphor-chat-teardrop-duotone,576_192,13;phosphor-chat-teardrop-fill,640_192,13;phosphor-chat-teardrop-light,704_192,13;phosphor-chat-teardrop-slash-bold,768_192,13;phosphor-chat-teardrop-slash-duotone,832_192,13;phosphor-chat-teardrop-slash-fill,896_192,13;phosphor-chat-teardrop-slash-light,960_192,13;phosphor-chat-teardrop-slash-thin,0_256,13;phosphor-chat-teardrop-slash,64_256,13;phosphor-chat-teardrop-text-bold,128_256,13;phosphor-chat-teardrop-text-duotone,192_256,13;phosphor-chat-teardrop-text-fill,256_256,13;phosphor-chat-teardrop-text-light,320_256,13;phosphor-chat-teardrop-text-thin,384_256,13;phosphor-chat-teardrop-text,448_256,13;phosphor-chat-teardrop-thin,512_256,13;phosphor-chat-teardrop,576_256,13;phosphor-chat-text-bold,640_256,13;phosphor-chat-text-duotone,704_256,13;phosphor-chat-text-fill,768_256,13;phosphor-chat-text-light,832_256,13;phosphor-chat-text-thin,896_256,13;phosphor-chat-text,960_256,13;phosphor-chat-thin,0_320,13;phosphor-chat,64_320,13;phosphor-chats-bold,128_320,13;phosphor-chats-circle-bold,192_320,13;phosphor-chats-circle-duotone,256_320,13;phosphor-chats-circle-fill,320_320,13;phosphor-chats-circle-light,384_320,13;phosphor-chats-circle-thin,448_320,13;phosphor-chats-circle,512_320,13;phosphor-chats-duotone,576_320,13;phosphor-chats-fill,640_320,13;phosphor-chats-light,704_320,13;phosphor-chats-teardrop-bold,768_320,13;phosphor-chats-teardrop-duotone,832_320,13;phosphor-chats-teardrop-fill,896_320,13;phosphor-chats-teardrop-light,960_320,13;phosphor-chats-teardrop-thin,0_384,13;phosphor-chats-teardrop,64_384,13;phosphor-chats-thin,128_384,13;phosphor-chats,192_384,13;phosphor-check-bold,256_384,13;phosphor-check-circle-bold,320_384,13;phosphor-check-circle-duotone,384_384,13;phosphor-check-circle-fill,448_384,13;phosphor-check-circle-light,512_384,13;phosphor-check-circle-thin,576_384,13;phosphor-check-circle,640_384,13;phosphor-check-duotone,704_384,13;phosphor-check-fat-bold,768_384,13;phosphor-check-fat-duotone,832_384,13;phosphor-check-fat-fill,896_384,13;phosphor-check-fat-light,960_384,13;phosphor-check-fat-thin,0_448,13;phosphor-check-fat,64_448,13;phosphor-check-fill,128_448,13;phosphor-check-light,192_448,13;phosphor-check-square-bold,256_448,13;phosphor-check-square-duotone,320_448,13;phosphor-check-square-fill,384_448,13;phosphor-check-square-light,448_448,13;phosphor-check-square-offset-bold,512_448,13;phosphor-check-square-offset-duotone,576_448,13;phosphor-check-square-offset-fill,640_448,13;phosphor-check-square-offset-light,704_448,13;phosphor-check-square-offset-thin,768_448,13;phosphor-check-square-offset,832_448,13;phosphor-check-square-thin,896_448,13;phosphor-check-square,960_448,13;phosphor-check-thin,0_512,13;phosphor-check,64_512,13;phosphor-checkerboard-bold,128_512,13;phosphor-checkerboard-duotone,192_512,13;phosphor-checkerboard-fill,256_512,13;phosphor-checkerboard-light,320_512,13;phosphor-checkerboard-thin,384_512,13;phosphor-checkerboard,448_512,13;phosphor-checks-bold,512_512,13;phosphor-checks-duotone,576_512,13;phosphor-checks-fill,640_512,13;phosphor-checks-light,704_512,13;phosphor-checks-thin,768_512,13;phosphor-checks,832_512,13;phosphor-cheers-bold,896_512,13;phosphor-cheers-duotone,960_512,13;phosphor-cheers-fill,0_576,13;phosphor-cheers-light,64_576,13;phosphor-cheers-thin,128_576,13;phosphor-cheers,192_576,13;phosphor-cheese-bold,256_576,13;phosphor-cheese-duotone,320_576,13;phosphor-cheese-fill,384_576,13;phosphor-cheese-light,448_576,13;phosphor-cheese-thin,512_576,13;phosphor-cheese,576_576,13;phosphor-chef-hat-bold,640_576,13;phosphor-chef-hat-duotone,704_576,13;phosphor-chef-hat-fill,768_576,13;phosphor-chef-hat-light,832_576,13;phosphor-chef-hat-thin,896_576,13;phosphor-chef-hat,960_576,13;phosphor-cherries-bold,0_640,13;phosphor-cherries-duotone,64_640,13;phosphor-cherries-fill,128_640,13;phosphor-cherries-light,192_640,13;phosphor-cherries-thin,256_640,13;phosphor-cherries,320_640,13;phosphor-church-bold,384_640,13;phosphor-church-duotone,448_640,13;phosphor-church-fill,512_640,13;phosphor-church-light,576_640,13;phosphor-church-thin,640_640,13;phosphor-church,704_640,13;phosphor-cigarette-bold,768_640,13;phosphor-cigarette-duotone,832_640,13;phosphor-cigarette-fill,896_640,13;phosphor-cigarette-light,960_640,13;phosphor-cigarette-slash-bold,0_704,13;phosphor-cigarette-slash-duotone,64_704,13;phosphor-cigarette-slash-fill,128_704,13;phosphor-cigarette-slash-light,192_704,13;phosphor-cigarette-slash-thin,256_704,13;phosphor-cigarette-slash,320_704,13;phosphor-cigarette-thin,384_704,13;phosphor-cigarette,448_704,13;phosphor-circle-bold,512_704,13;phosphor-circle-dashed-bold,576_704,13;phosphor-circle-dashed-duotone,640_704,13;phosphor-circle-dashed-fill,704_704,13;phosphor-circle-dashed-light,768_704,13;phosphor-circle-dashed-thin,832_704,13;phosphor-circle-dashed,896_704,13;phosphor-circle-duotone,960_704,13;phosphor-circle-fill,0_768,13;phosphor-circle-half-bold,64_768,13;phosphor-circle-half-duotone,128_768,13;phosphor-circle-half-fill,192_768,13;phosphor-circle-half-light,256_768,13;phosphor-circle-half-thin,320_768,13;phosphor-circle-half-tilt-bold,384_768,13;phosphor-circle-half-tilt-duotone,448_768,13;phosphor-circle-half-tilt-fill,512_768,13;phosphor-circle-half-tilt-light,576_768,13;phosphor-circle-half-tilt-thin,640_768,13;phosphor-circle-half-tilt,704_768,13;phosphor-circle-half,768_768,13;phosphor-circle-light,832_768,13;phosphor-circle-notch-bold,896_768,13;phosphor-circle-notch-duotone,960_768,13;phosphor-circle-notch-fill,0_832,13;phosphor-circle-notch-light,64_832,13;phosphor-circle-notch-thin,128_832,13;phosphor-circle-notch,192_832,13;phosphor-circle-thin,256_832,13;phosphor-circle,320_832,13;phosphor-circles-four-bold,384_832,13;phosphor-circles-four-duotone,448_832,13;phosphor-circles-four-fill,512_832,13;phosphor-circles-four-light,576_832,13;phosphor-circles-four-thin,640_832,13;phosphor-circles-four,704_832,13;phosphor-circles-three-bold,768_832,13;phosphor-circles-three-duotone,832_832,13;phosphor-circles-three-fill,896_832,13;phosphor-circles-three-light,960_832,13;phosphor-circles-three-plus-bold,0_896,13;phosphor-circles-three-plus-duotone,64_896,13;phosphor-circles-three-plus-fill,128_896,13;phosphor-circles-three-plus-light,192_896,13;phosphor-circles-three-plus-thin,256_896,13;phosphor-circles-three-plus,320_896,13;phosphor-circles-three-thin,384_896,13;phosphor-circles-three,448_896,13;phosphor-circuitry-bold,512_896,13;phosphor-circuitry-duotone,576_896,13;phosphor-circuitry-fill,640_896,13;phosphor-circuitry-light,704_896,13;phosphor-circuitry-thin,768_896,13;phosphor-circuitry,832_896,13;phosphor-city-bold,896_896,13;phosphor-city-duotone,960_896,13;phosphor-city-fill,0_960,13;phosphor-city-light,64_960,13;phosphor-city-thin,128_960,13;phosphor-city,192_960,13;phosphor-clipboard-bold,256_960,13;phosphor-clipboard-duotone,320_960,13;phosphor-clipboard-fill,384_960,13;phosphor-clipboard-light,448_960,13;phosphor-clipboard-text-bold,512_960,13;phosphor-clipboard-text-duotone,576_960,13;phosphor-clipboard-text-fill,640_960,13;phosphor-clipboard-text-light,704_960,13;phosphor-clipboard-text-thin,768_960,13;phosphor-clipboard-text,832_960,13;phosphor-clipboard-thin,896_960,13;phosphor-clipboard,960_960,13;phosphor-clock-afternoon-bold,0_0,14;phosphor-clock-afternoon-duotone,64_0,14;phosphor-clock-afternoon-fill,128_0,14;phosphor-clock-afternoon-light,192_0,14;phosphor-clock-afternoon-thin,256_0,14;phosphor-clock-afternoon,320_0,14;phosphor-clock-bold,384_0,14;phosphor-clock-clockwise-bold,448_0,14;phosphor-clock-clockwise-duotone,512_0,14;phosphor-clock-clockwise-fill,576_0,14;phosphor-clock-clockwise-light,640_0,14;phosphor-clock-clockwise-thin,704_0,14;phosphor-clock-clockwise,768_0,14;phosphor-clock-countdown-bold,832_0,14;phosphor-clock-countdown-duotone,896_0,14;phosphor-clock-countdown-fill,960_0,14;phosphor-clock-countdown-light,0_64,14;phosphor-clock-countdown-thin,64_64,14;phosphor-clock-countdown,128_64,14;phosphor-clock-counter-clockwise-bold,192_64,14;phosphor-clock-counter-clockwise-duotone,256_64,14;phosphor-clock-counter-clockwise-fill,320_64,14;phosphor-clock-counter-clockwise-light,384_64,14;phosphor-clock-counter-clockwise-thin,448_64,14;phosphor-clock-counter-clockwise,512_64,14;phosphor-clock-duotone,576_64,14;phosphor-clock-fill,640_64,14;phosphor-clock-light,704_64,14;phosphor-clock-thin,768_64,14;phosphor-clock-user-bold,832_64,14;phosphor-clock-user-duotone,896_64,14;phosphor-clock-user-fill,960_64,14;phosphor-clock-user-light,0_128,14;phosphor-clock-user-thin,64_128,14;phosphor-clock-user,128_128,14;phosphor-clock,192_128,14;phosphor-closed-captioning-bold,256_128,14;phosphor-closed-captioning-duotone,320_128,14;phosphor-closed-captioning-fill,384_128,14;phosphor-closed-captioning-light,448_128,14;phosphor-closed-captioning-thin,512_128,14;phosphor-closed-captioning,576_128,14;phosphor-cloud-arrow-down-bold,640_128,14;phosphor-cloud-arrow-down-duotone,704_128,14;phosphor-cloud-arrow-down-fill,768_128,14;phosphor-cloud-arrow-down-light,832_128,14;phosphor-cloud-arrow-down-thin,896_128,14;phosphor-cloud-arrow-down,960_128,14;phosphor-cloud-arrow-up-bold,0_192,14;phosphor-cloud-arrow-up-duotone,64_192,14;phosphor-cloud-arrow-up-fill,128_192,14;phosphor-cloud-arrow-up-light,192_192,14;phosphor-cloud-arrow-up-thin,256_192,14;phosphor-cloud-arrow-up,320_192,14;phosphor-cloud-bold,384_192,14;phosphor-cloud-check-bold,448_192,14;phosphor-cloud-check-duotone,512_192,14;phosphor-cloud-check-fill,576_192,14;phosphor-cloud-check-light,640_192,14;phosphor-cloud-check-thin,704_192,14;phosphor-cloud-check,768_192,14;phosphor-cloud-duotone,832_192,14;phosphor-cloud-fill,896_192,14;phosphor-cloud-fog-bold,960_192,14;phosphor-cloud-fog-duotone,0_256,14;phosphor-cloud-fog-fill,64_256,14;phosphor-cloud-fog-light,128_256,14;phosphor-cloud-fog-thin,192_256,14;phosphor-cloud-fog,256_256,14;phosphor-cloud-light,320_256,14;phosphor-cloud-lightning-bold,384_256,14;phosphor-cloud-lightning-duotone,448_256,14;phosphor-cloud-lightning-fill,512_256,14;phosphor-cloud-lightning-light,576_256,14;phosphor-cloud-lightning-thin,640_256,14;phosphor-cloud-lightning,704_256,14;phosphor-cloud-moon-bold,768_256,14;phosphor-cloud-moon-duotone,832_256,14;phosphor-cloud-moon-fill,896_256,14;phosphor-cloud-moon-light,960_256,14;phosphor-cloud-moon-thin,0_320,14;phosphor-cloud-moon,64_320,14;phosphor-cloud-rain-bold,128_320,14;phosphor-cloud-rain-duotone,192_320,14;phosphor-cloud-rain-fill,256_320,14;phosphor-cloud-rain-light,320_320,14;phosphor-cloud-rain-thin,384_320,14;phosphor-cloud-rain,448_320,14;phosphor-cloud-slash-bold,512_320,14;phosphor-cloud-slash-duotone,576_320,14;phosphor-cloud-slash-fill,640_320,14;phosphor-cloud-slash-light,704_320,14;phosphor-cloud-slash-thin,768_320,14;phosphor-cloud-slash,832_320,14;phosphor-cloud-snow-bold,896_320,14;phosphor-cloud-snow-duotone,960_320,14;phosphor-cloud-snow-fill,0_384,14;phosphor-cloud-snow-light,64_384,14;phosphor-cloud-snow-thin,128_384,14;phosphor-cloud-snow,192_384,14;phosphor-cloud-sun-bold,256_384,14;phosphor-cloud-sun-duotone,320_384,14;phosphor-cloud-sun-fill,384_384,14;phosphor-cloud-sun-light,448_384,14;phosphor-cloud-sun-thin,512_384,14;phosphor-cloud-sun,576_384,14;phosphor-cloud-thin,640_384,14;phosphor-cloud-warning-bold,704_384,14;phosphor-cloud-warning-duotone,768_384,14;phosphor-cloud-warning-fill,832_384,14;phosphor-cloud-warning-light,896_384,14;phosphor-cloud-warning-thin,960_384,14;phosphor-cloud-warning,0_448,14;phosphor-cloud-x-bold,64_448,14;phosphor-cloud-x-duotone,128_448,14;phosphor-cloud-x-fill,192_448,14;phosphor-cloud-x-light,256_448,14;phosphor-cloud-x-thin,320_448,14;phosphor-cloud-x,384_448,14;phosphor-cloud,448_448,14;phosphor-clover-bold,512_448,14;phosphor-clover-duotone,576_448,14;phosphor-clover-fill,640_448,14;phosphor-clover-light,704_448,14;phosphor-clover-thin,768_448,14;phosphor-clover,832_448,14;phosphor-club-bold,896_448,14;phosphor-club-duotone,960_448,14;phosphor-club-fill,0_512,14;phosphor-club-light,64_512,14;phosphor-club-thin,128_512,14;phosphor-club,192_512,14;phosphor-coat-hanger-bold,256_512,14;phosphor-coat-hanger-duotone,320_512,14;phosphor-coat-hanger-fill,384_512,14;phosphor-coat-hanger-light,448_512,14;phosphor-coat-hanger-thin,512_512,14;phosphor-coat-hanger,576_512,14;phosphor-coda-logo-bold,640_512,14;phosphor-coda-logo-duotone,704_512,14;phosphor-coda-logo-fill,768_512,14;phosphor-coda-logo-light,832_512,14;phosphor-coda-logo-thin,896_512,14;phosphor-coda-logo,960_512,14;phosphor-code-block-bold,0_576,14;phosphor-code-block-duotone,64_576,14;phosphor-code-block-fill,128_576,14;phosphor-code-block-light,192_576,14;phosphor-code-block-thin,256_576,14;phosphor-code-block,320_576,14;phosphor-code-bold,384_576,14;phosphor-code-duotone,448_576,14;phosphor-code-fill,512_576,14;phosphor-code-light,576_576,14;phosphor-code-simple-bold,640_576,14;phosphor-code-simple-duotone,704_576,14;phosphor-code-simple-fill,768_576,14;phosphor-code-simple-light,832_576,14;phosphor-code-simple-thin,896_576,14;phosphor-code-simple,960_576,14;phosphor-code-thin,0_640,14;phosphor-code,64_640,14;phosphor-codepen-logo-bold,128_640,14;phosphor-codepen-logo-duotone,192_640,14;phosphor-codepen-logo-fill,256_640,14;phosphor-codepen-logo-light,320_640,14;phosphor-codepen-logo-thin,384_640,14;phosphor-codepen-logo,448_640,14;phosphor-codesandbox-logo-bold,512_640,14;phosphor-codesandbox-logo-duotone,576_640,14;phosphor-codesandbox-logo-fill,640_640,14;phosphor-codesandbox-logo-light,704_640,14;phosphor-codesandbox-logo-thin,768_640,14;phosphor-codesandbox-logo,832_640,14;phosphor-coffee-bean-bold,896_640,14;phosphor-coffee-bean-duotone,960_640,14;phosphor-coffee-bean-fill,0_704,14;phosphor-coffee-bean-light,64_704,14;phosphor-coffee-bean-thin,128_704,14;phosphor-coffee-bean,192_704,14;phosphor-coffee-bold,256_704,14;phosphor-coffee-duotone,320_704,14;phosphor-coffee-fill,384_704,14;phosphor-coffee-light,448_704,14;phosphor-coffee-thin,512_704,14;phosphor-coffee,576_704,14;phosphor-coin-bold,640_704,14;phosphor-coin-duotone,704_704,14;phosphor-coin-fill,768_704,14;phosphor-coin-light,832_704,14;phosphor-coin-thin,896_704,14;phosphor-coin-vertical-bold,960_704,14;phosphor-coin-vertical-duotone,0_768,14;phosphor-coin-vertical-fill,64_768,14;phosphor-coin-vertical-light,128_768,14;phosphor-coin-vertical-thin,192_768,14;phosphor-coin-vertical,256_768,14;phosphor-coin,320_768,14;phosphor-coins-bold,384_768,14;phosphor-coins-duotone,448_768,14;phosphor-coins-fill,512_768,14;phosphor-coins-light,576_768,14;phosphor-coins-thin,640_768,14;phosphor-coins,704_768,14;phosphor-columns-bold,768_768,14;phosphor-columns-duotone,832_768,14;phosphor-columns-fill,896_768,14;phosphor-columns-light,960_768,14;phosphor-columns-plus-left-bold,0_832,14;phosphor-columns-plus-left-duotone,64_832,14;phosphor-columns-plus-left-fill,128_832,14;phosphor-columns-plus-left-light,192_832,14;phosphor-columns-plus-left-thin,256_832,14;phosphor-columns-plus-left,320_832,14;phosphor-columns-plus-right-bold,384_832,14;phosphor-columns-plus-right-duotone,448_832,14;phosphor-columns-plus-right-fill,512_832,14;phosphor-columns-plus-right-light,576_832,14;phosphor-columns-plus-right-thin,640_832,14;phosphor-columns-plus-right,704_832,14;phosphor-columns-thin,768_832,14;phosphor-columns,832_832,14;phosphor-command-bold,896_832,14;phosphor-command-duotone,960_832,14;phosphor-command-fill,0_896,14;phosphor-command-light,64_896,14;phosphor-command-thin,128_896,14;phosphor-command,192_896,14;phosphor-compass-bold,256_896,14;phosphor-compass-duotone,320_896,14;phosphor-compass-fill,384_896,14;phosphor-compass-light,448_896,14;phosphor-compass-rose-bold,512_896,14;phosphor-compass-rose-duotone,576_896,14;phosphor-compass-rose-fill,640_896,14;phosphor-compass-rose-light,704_896,14;phosphor-compass-rose-thin,768_896,14;phosphor-compass-rose,832_896,14;phosphor-compass-thin,896_896,14;phosphor-compass-tool-bold,960_896,14;phosphor-compass-tool-duotone,0_960,14;phosphor-compass-tool-fill,64_960,14;phosphor-compass-tool-light,128_960,14;phosphor-compass-tool-thin,192_960,14;phosphor-compass-tool,256_960,14;phosphor-compass,320_960,14;phosphor-computer-tower-bold,384_960,14;phosphor-computer-tower-duotone,448_960,14;phosphor-computer-tower-fill,512_960,14;phosphor-computer-tower-light,576_960,14;phosphor-computer-tower-thin,640_960,14;phosphor-computer-tower,704_960,14;phosphor-confetti-bold,768_960,14;phosphor-confetti-duotone,832_960,14;phosphor-confetti-fill,896_960,14;phosphor-confetti-light,960_960,14;phosphor-confetti-thin,0_0,15;phosphor-confetti,64_0,15;phosphor-contactless-payment-bold,128_0,15;phosphor-contactless-payment-duotone,192_0,15;phosphor-contactless-payment-fill,256_0,15;phosphor-contactless-payment-light,320_0,15;phosphor-contactless-payment-thin,384_0,15;phosphor-contactless-payment,448_0,15;phosphor-control-bold,512_0,15;phosphor-control-duotone,576_0,15;phosphor-control-fill,640_0,15;phosphor-control-light,704_0,15;phosphor-control-thin,768_0,15;phosphor-control,832_0,15;phosphor-cookie-bold,896_0,15;phosphor-cookie-duotone,960_0,15;phosphor-cookie-fill,0_64,15;phosphor-cookie-light,64_64,15;phosphor-cookie-thin,128_64,15;phosphor-cookie,192_64,15;phosphor-cooking-pot-bold,256_64,15;phosphor-cooking-pot-duotone,320_64,15;phosphor-cooking-pot-fill,384_64,15;phosphor-cooking-pot-light,448_64,15;phosphor-cooking-pot-thin,512_64,15;phosphor-cooking-pot,576_64,15;phosphor-copy-bold,640_64,15;phosphor-copy-duotone,704_64,15;phosphor-copy-fill,768_64,15;phosphor-copy-light,832_64,15;phosphor-copy-simple-bold,896_64,15;phosphor-copy-simple-duotone,960_64,15;phosphor-copy-simple-fill,0_128,15;phosphor-copy-simple-light,64_128,15;phosphor-copy-simple-thin,128_128,15;phosphor-copy-simple,192_128,15;phosphor-copy-thin,256_128,15;phosphor-copy,320_128,15;phosphor-copyleft-bold,384_128,15;phosphor-copyleft-duotone,448_128,15;phosphor-copyleft-fill,512_128,15;phosphor-copyleft-light,576_128,15;phosphor-copyleft-thin,640_128,15;phosphor-copyleft,704_128,15;phosphor-copyright-bold,768_128,15;phosphor-copyright-duotone,832_128,15;phosphor-copyright-fill,896_128,15;phosphor-copyright-light,960_128,15;phosphor-copyright-thin,0_192,15;phosphor-copyright,64_192,15;phosphor-corners-in-bold,128_192,15;phosphor-corners-in-duotone,192_192,15;phosphor-corners-in-fill,256_192,15;phosphor-corners-in-light,320_192,15;phosphor-corners-in-thin,384_192,15;phosphor-corners-in,448_192,15;phosphor-corners-out-bold,512_192,15;phosphor-corners-out-duotone,576_192,15;phosphor-corners-out-fill,640_192,15;phosphor-corners-out-light,704_192,15;phosphor-corners-out-thin,768_192,15;phosphor-corners-out,832_192,15;phosphor-couch-bold,896_192,15;phosphor-couch-duotone,960_192,15;phosphor-couch-fill,0_256,15;phosphor-couch-light,64_256,15;phosphor-couch-thin,128_256,15;phosphor-couch,192_256,15;phosphor-court-basketball-bold,256_256,15;phosphor-court-basketball-duotone,320_256,15;phosphor-court-basketball-fill,384_256,15;phosphor-court-basketball-light,448_256,15;phosphor-court-basketball-thin,512_256,15;phosphor-court-basketball,576_256,15;phosphor-cow-bold,640_256,15;phosphor-cow-duotone,704_256,15;phosphor-cow-fill,768_256,15;phosphor-cow-light,832_256,15;phosphor-cow-thin,896_256,15;phosphor-cow,960_256,15;phosphor-cowboy-hat-bold,0_320,15;phosphor-cowboy-hat-duotone,64_320,15;phosphor-cowboy-hat-fill,128_320,15;phosphor-cowboy-hat-light,192_320,15;phosphor-cowboy-hat-thin,256_320,15;phosphor-cowboy-hat,320_320,15;phosphor-cpu-bold,384_320,15;phosphor-cpu-duotone,448_320,15;phosphor-cpu-fill,512_320,15;phosphor-cpu-light,576_320,15;phosphor-cpu-thin,640_320,15;phosphor-cpu,704_320,15;phosphor-crane-bold,768_320,15;phosphor-crane-duotone,832_320,15;phosphor-crane-fill,896_320,15;phosphor-crane-light,960_320,15;phosphor-crane-thin,0_384,15;phosphor-crane-tower-bold,64_384,15;phosphor-crane-tower-duotone,128_384,15;phosphor-crane-tower-fill,192_384,15;phosphor-crane-tower-light,256_384,15;phosphor-crane-tower-thin,320_384,15;phosphor-crane-tower,384_384,15;phosphor-crane,448_384,15;phosphor-credit-card-bold,512_384,15;phosphor-credit-card-duotone,576_384,15;phosphor-credit-card-fill,640_384,15;phosphor-credit-card-light,704_384,15;phosphor-credit-card-thin,768_384,15;phosphor-credit-card,832_384,15;phosphor-cricket-bold,896_384,15;phosphor-cricket-duotone,960_384,15;phosphor-cricket-fill,0_448,15;phosphor-cricket-light,64_448,15;phosphor-cricket-thin,128_448,15;phosphor-cricket,192_448,15;phosphor-crop-bold,256_448,15;phosphor-crop-duotone,320_448,15;phosphor-crop-fill,384_448,15;phosphor-crop-light,448_448,15;phosphor-crop-thin,512_448,15;phosphor-crop,576_448,15;phosphor-cross-bold,640_448,15;phosphor-cross-duotone,704_448,15;phosphor-cross-fill,768_448,15;phosphor-cross-light,832_448,15;phosphor-cross-thin,896_448,15;phosphor-cross,960_448,15;phosphor-crosshair-bold,0_512,15;phosphor-crosshair-duotone,64_512,15;phosphor-crosshair-fill,128_512,15;phosphor-crosshair-light,192_512,15;phosphor-crosshair-simple-bold,256_512,15;phosphor-crosshair-simple-duotone,320_512,15;phosphor-crosshair-simple-fill,384_512,15;phosphor-crosshair-simple-light,448_512,15;phosphor-crosshair-simple-thin,512_512,15;phosphor-crosshair-simple,576_512,15;phosphor-crosshair-thin,640_512,15;phosphor-crosshair,704_512,15;phosphor-crown-bold,768_512,15;phosphor-crown-cross-bold,832_512,15;phosphor-crown-cross-duotone,896_512,15;phosphor-crown-cross-fill,960_512,15;phosphor-crown-cross-light,0_576,15;phosphor-crown-cross-thin,64_576,15;phosphor-crown-cross,128_576,15;phosphor-crown-duotone,192_576,15;phosphor-crown-fill,256_576,15;phosphor-crown-light,320_576,15;phosphor-crown-simple-bold,384_576,15;phosphor-crown-simple-duotone,448_576,15;phosphor-crown-simple-fill,512_576,15;phosphor-crown-simple-light,576_576,15;phosphor-crown-simple-thin,640_576,15;phosphor-crown-simple,704_576,15;phosphor-crown-thin,768_576,15;phosphor-crown,832_576,15;phosphor-cube-bold,896_576,15;phosphor-cube-duotone,960_576,15;phosphor-cube-fill,0_640,15;phosphor-cube-focus-bold,64_640,15;phosphor-cube-focus-duotone,128_640,15;phosphor-cube-focus-fill,192_640,15;phosphor-cube-focus-light,256_640,15;phosphor-cube-focus-thin,320_640,15;phosphor-cube-focus,384_640,15;phosphor-cube-light,448_640,15;phosphor-cube-thin,512_640,15;phosphor-cube-transparent-bold,576_640,15;phosphor-cube-transparent-duotone,640_640,15;phosphor-cube-transparent-fill,704_640,15;phosphor-cube-transparent-light,768_640,15;phosphor-cube-transparent-thin,832_640,15;phosphor-cube-transparent,896_640,15;phosphor-cube,960_640,15;phosphor-currency-btc-bold,0_704,15;phosphor-currency-btc-duotone,64_704,15;phosphor-currency-btc-fill,128_704,15;phosphor-currency-btc-light,192_704,15;phosphor-currency-btc-thin,256_704,15;phosphor-currency-btc,320_704,15;phosphor-currency-circle-dollar-bold,384_704,15;phosphor-currency-circle-dollar-duotone,448_704,15;phosphor-currency-circle-dollar-fill,512_704,15;phosphor-currency-circle-dollar-light,576_704,15;phosphor-currency-circle-dollar-thin,640_704,15;phosphor-currency-circle-dollar,704_704,15;phosphor-currency-cny-bold,768_704,15;phosphor-currency-cny-duotone,832_704,15;phosphor-currency-cny-fill,896_704,15;phosphor-currency-cny-light,960_704,15;phosphor-currency-cny-thin,0_768,15;phosphor-currency-cny,64_768,15;phosphor-currency-dollar-bold,128_768,15;phosphor-currency-dollar-duotone,192_768,15;phosphor-currency-dollar-fill,256_768,15;phosphor-currency-dollar-light,320_768,15;phosphor-currency-dollar-simple-bold,384_768,15;phosphor-currency-dollar-simple-duotone,448_768,15;phosphor-currency-dollar-simple-fill,512_768,15;phosphor-currency-dollar-simple-light,576_768,15;phosphor-currency-dollar-simple-thin,640_768,15;phosphor-currency-dollar-simple,704_768,15;phosphor-currency-dollar-thin,768_768,15;phosphor-currency-dollar,832_768,15;phosphor-currency-eth-bold,896_768,15;phosphor-currency-eth-duotone,960_768,15;phosphor-currency-eth-fill,0_832,15;phosphor-currency-eth-light,64_832,15;phosphor-currency-eth-thin,128_832,15;phosphor-currency-eth,192_832,15;phosphor-currency-eur-bold,256_832,15;phosphor-currency-eur-duotone,320_832,15;phosphor-currency-eur-fill,384_832,15;phosphor-currency-eur-light,448_832,15;phosphor-currency-eur-thin,512_832,15;phosphor-currency-eur,576_832,15;phosphor-currency-gbp-bold,640_832,15;phosphor-currency-gbp-duotone,704_832,15;phosphor-currency-gbp-fill,768_832,15;phosphor-currency-gbp-light,832_832,15;phosphor-currency-gbp-thin,896_832,15;phosphor-currency-gbp,960_832,15;phosphor-currency-inr-bold,0_896,15;phosphor-currency-inr-duotone,64_896,15;phosphor-currency-inr-fill,128_896,15;phosphor-currency-inr-light,192_896,15;phosphor-currency-inr-thin,256_896,15;phosphor-currency-inr,320_896,15;phosphor-currency-jpy-bold,384_896,15;phosphor-currency-jpy-duotone,448_896,15;phosphor-currency-jpy-fill,512_896,15;phosphor-currency-jpy-light,576_896,15;phosphor-currency-jpy-thin,640_896,15;phosphor-currency-jpy,704_896,15;phosphor-currency-krw-bold,768_896,15;phosphor-currency-krw-duotone,832_896,15;phosphor-currency-krw-fill,896_896,15;phosphor-currency-krw-light,960_896,15;phosphor-currency-krw-thin,0_960,15;phosphor-currency-krw,64_960,15;phosphor-currency-kzt-bold,128_960,15;phosphor-currency-kzt-duotone,192_960,15;phosphor-currency-kzt-fill,256_960,15;phosphor-currency-kzt-light,320_960,15;phosphor-currency-kzt-thin,384_960,15;phosphor-currency-kzt,448_960,15;phosphor-currency-ngn-bold,512_960,15;phosphor-currency-ngn-duotone,576_960,15;phosphor-currency-ngn-fill,640_960,15;phosphor-currency-ngn-light,704_960,15;phosphor-currency-ngn-thin,768_960,15;phosphor-currency-ngn,832_960,15;phosphor-currency-rub-bold,896_960,15;phosphor-currency-rub-duotone,960_960,15;phosphor-currency-rub-fill,0_0,16;phosphor-currency-rub-light,64_0,16;phosphor-currency-rub-thin,128_0,16;phosphor-currency-rub,192_0,16;phosphor-cursor-bold,256_0,16;phosphor-cursor-click-bold,320_0,16;phosphor-cursor-click-duotone,384_0,16;phosphor-cursor-click-fill,448_0,16;phosphor-cursor-click-light,512_0,16;phosphor-cursor-click-thin,576_0,16;phosphor-cursor-click,640_0,16;phosphor-cursor-duotone,704_0,16;phosphor-cursor-fill,768_0,16;phosphor-cursor-light,832_0,16;phosphor-cursor-text-bold,896_0,16;phosphor-cursor-text-duotone,960_0,16;phosphor-cursor-text-fill,0_64,16;phosphor-cursor-text-light,64_64,16;phosphor-cursor-text-thin,128_64,16;phosphor-cursor-text,192_64,16;phosphor-cursor-thin,256_64,16;phosphor-cursor,320_64,16;phosphor-cylinder-bold,384_64,16;phosphor-cylinder-duotone,448_64,16;phosphor-cylinder-fill,512_64,16;phosphor-cylinder-light,576_64,16;phosphor-cylinder-thin,640_64,16;phosphor-cylinder,704_64,16;phosphor-database-bold,768_64,16;phosphor-database-duotone,832_64,16;phosphor-database-fill,896_64,16;phosphor-database-light,960_64,16;phosphor-database-thin,0_128,16;phosphor-database,64_128,16;phosphor-desk-bold,128_128,16;phosphor-desk-duotone,192_128,16;phosphor-desk-fill,256_128,16;phosphor-desk-light,320_128,16;phosphor-desk-thin,384_128,16;phosphor-desk,448_128,16;phosphor-desktop-bold,512_128,16;phosphor-desktop-duotone,576_128,16;phosphor-desktop-fill,640_128,16;phosphor-desktop-light,704_128,16;phosphor-desktop-thin,768_128,16;phosphor-desktop-tower-bold,832_128,16;phosphor-desktop-tower-duotone,896_128,16;phosphor-desktop-tower-fill,960_128,16;phosphor-desktop-tower-light,0_192,16;phosphor-desktop-tower-thin,64_192,16;phosphor-desktop-tower,128_192,16;phosphor-desktop,192_192,16;phosphor-detective-bold,256_192,16;phosphor-detective-duotone,320_192,16;phosphor-detective-fill,384_192,16;phosphor-detective-light,448_192,16;phosphor-detective-thin,512_192,16;phosphor-detective,576_192,16;phosphor-dev-to-logo-bold,640_192,16;phosphor-dev-to-logo-duotone,704_192,16;phosphor-dev-to-logo-fill,768_192,16;phosphor-dev-to-logo-light,832_192,16;phosphor-dev-to-logo-thin,896_192,16;phosphor-dev-to-logo,960_192,16;phosphor-device-mobile-bold,0_256,16;phosphor-device-mobile-camera-bold,64_256,16;phosphor-device-mobile-camera-duotone,128_256,16;phosphor-device-mobile-camera-fill,192_256,16;phosphor-device-mobile-camera-light,256_256,16;phosphor-device-mobile-camera-thin,320_256,16;phosphor-device-mobile-camera,384_256,16;phosphor-device-mobile-duotone,448_256,16;phosphor-device-mobile-fill,512_256,16;phosphor-device-mobile-light,576_256,16;phosphor-device-mobile-slash-bold,640_256,16;phosphor-device-mobile-slash-duotone,704_256,16;phosphor-device-mobile-slash-fill,768_256,16;phosphor-device-mobile-slash-light,832_256,16;phosphor-device-mobile-slash-thin,896_256,16;phosphor-device-mobile-slash,960_256,16;phosphor-device-mobile-speaker-bold,0_320,16;phosphor-device-mobile-speaker-duotone,64_320,16;phosphor-device-mobile-speaker-fill,128_320,16;phosphor-device-mobile-speaker-light,192_320,16;phosphor-device-mobile-speaker-thin,256_320,16;phosphor-device-mobile-speaker,320_320,16;phosphor-device-mobile-thin,384_320,16;phosphor-device-mobile,448_320,16;phosphor-device-rotate-bold,512_320,16;phosphor-device-rotate-duotone,576_320,16;phosphor-device-rotate-fill,640_320,16;phosphor-device-rotate-light,704_320,16;phosphor-device-rotate-thin,768_320,16;phosphor-device-rotate,832_320,16;phosphor-device-tablet-bold,896_320,16;phosphor-device-tablet-camera-bold,960_320,16;phosphor-device-tablet-camera-duotone,0_384,16;phosphor-device-tablet-camera-fill,64_384,16;phosphor-device-tablet-camera-light,128_384,16;phosphor-device-tablet-camera-thin,192_384,16;phosphor-device-tablet-camera,256_384,16;phosphor-device-tablet-duotone,320_384,16;phosphor-device-tablet-fill,384_384,16;phosphor-device-tablet-light,448_384,16;phosphor-device-tablet-speaker-bold,512_384,16;phosphor-device-tablet-speaker-duotone,576_384,16;phosphor-device-tablet-speaker-fill,640_384,16;phosphor-device-tablet-speaker-light,704_384,16;phosphor-device-tablet-speaker-thin,768_384,16;phosphor-device-tablet-speaker,832_384,16;phosphor-device-tablet-thin,896_384,16;phosphor-device-tablet,960_384,16;phosphor-devices-bold,0_448,16;phosphor-devices-duotone,64_448,16;phosphor-devices-fill,128_448,16;phosphor-devices-light,192_448,16;phosphor-devices-thin,256_448,16;phosphor-devices,320_448,16;phosphor-diamond-bold,384_448,16;phosphor-diamond-duotone,448_448,16;phosphor-diamond-fill,512_448,16;phosphor-diamond-light,576_448,16;phosphor-diamond-thin,640_448,16;phosphor-diamond,704_448,16;phosphor-diamonds-four-bold,768_448,16;phosphor-diamonds-four-duotone,832_448,16;phosphor-diamonds-four-fill,896_448,16;phosphor-diamonds-four-light,960_448,16;phosphor-diamonds-four-thin,0_512,16;phosphor-diamonds-four,64_512,16;phosphor-dice-five-bold,128_512,16;phosphor-dice-five-duotone,192_512,16;phosphor-dice-five-fill,256_512,16;phosphor-dice-five-light,320_512,16;phosphor-dice-five-thin,384_512,16;phosphor-dice-five,448_512,16;phosphor-dice-four-bold,512_512,16;phosphor-dice-four-duotone,576_512,16;phosphor-dice-four-fill,640_512,16;phosphor-dice-four-light,704_512,16;phosphor-dice-four-thin,768_512,16;phosphor-dice-four,832_512,16;phosphor-dice-one-bold,896_512,16;phosphor-dice-one-duotone,960_512,16;phosphor-dice-one-fill,0_576,16;phosphor-dice-one-light,64_576,16;phosphor-dice-one-thin,128_576,16;phosphor-dice-one,192_576,16;phosphor-dice-six-bold,256_576,16;phosphor-dice-six-duotone,320_576,16;phosphor-dice-six-fill,384_576,16;phosphor-dice-six-light,448_576,16;phosphor-dice-six-thin,512_576,16;phosphor-dice-six,576_576,16;phosphor-dice-three-bold,640_576,16;phosphor-dice-three-duotone,704_576,16;phosphor-dice-three-fill,768_576,16;phosphor-dice-three-light,832_576,16;phosphor-dice-three-thin,896_576,16;phosphor-dice-three,960_576,16;phosphor-dice-two-bold,0_640,16;phosphor-dice-two-duotone,64_640,16;phosphor-dice-two-fill,128_640,16;phosphor-dice-two-light,192_640,16;phosphor-dice-two-thin,256_640,16;phosphor-dice-two,320_640,16;phosphor-disc-bold,384_640,16;phosphor-disc-duotone,448_640,16;phosphor-disc-fill,512_640,16;phosphor-disc-light,576_640,16;phosphor-disc-thin,640_640,16;phosphor-disc,704_640,16;phosphor-disco-ball-bold,768_640,16;phosphor-disco-ball-duotone,832_640,16;phosphor-disco-ball-fill,896_640,16;phosphor-disco-ball-light,960_640,16;phosphor-disco-ball-thin,0_704,16;phosphor-disco-ball,64_704,16;phosphor-discord-logo-bold,128_704,16;phosphor-discord-logo-duotone,192_704,16;phosphor-discord-logo-fill,256_704,16;phosphor-discord-logo-light,320_704,16;phosphor-discord-logo-thin,384_704,16;phosphor-discord-logo,448_704,16;phosphor-divide-bold,512_704,16;phosphor-divide-duotone,576_704,16;phosphor-divide-fill,640_704,16;phosphor-divide-light,704_704,16;phosphor-divide-thin,768_704,16;phosphor-divide,832_704,16;phosphor-dna-bold,896_704,16;phosphor-dna-duotone,960_704,16;phosphor-dna-fill,0_768,16;phosphor-dna-light,64_768,16;phosphor-dna-thin,128_768,16;phosphor-dna,192_768,16;phosphor-dog-bold,256_768,16;phosphor-dog-duotone,320_768,16;phosphor-dog-fill,384_768,16;phosphor-dog-light,448_768,16;phosphor-dog-thin,512_768,16;phosphor-dog,576_768,16;phosphor-door-bold,640_768,16;phosphor-door-duotone,704_768,16;phosphor-door-fill,768_768,16;phosphor-door-light,832_768,16;phosphor-door-open-bold,896_768,16;phosphor-door-open-duotone,960_768,16;phosphor-door-open-fill,0_832,16;phosphor-door-open-light,64_832,16;phosphor-door-open-thin,128_832,16;phosphor-door-open,192_832,16;phosphor-door-thin,256_832,16;phosphor-door,320_832,16;phosphor-dot-bold,384_832,16;phosphor-dot-duotone,448_832,16;phosphor-dot-fill,512_832,16;phosphor-dot-light,576_832,16;phosphor-dot-outline-bold,640_832,16;phosphor-dot-outline-duotone,704_832,16;phosphor-dot-outline-fill,768_832,16;phosphor-dot-outline-light,832_832,16;phosphor-dot-outline-thin,896_832,16;phosphor-dot-outline,960_832,16;phosphor-dot-thin,0_896,16;phosphor-dot,64_896,16;phosphor-dots-nine-bold,128_896,16;phosphor-dots-nine-duotone,192_896,16;phosphor-dots-nine-fill,256_896,16;phosphor-dots-nine-light,320_896,16;phosphor-dots-nine-thin,384_896,16;phosphor-dots-nine,448_896,16;phosphor-dots-six-bold,512_896,16;phosphor-dots-six-duotone,576_896,16;phosphor-dots-six-fill,640_896,16;phosphor-dots-six-light,704_896,16;phosphor-dots-six-thin,768_896,16;phosphor-dots-six-vertical-bold,832_896,16;phosphor-dots-six-vertical-duotone,896_896,16;phosphor-dots-six-vertical-fill,960_896,16;phosphor-dots-six-vertical-light,0_960,16;phosphor-dots-six-vertical-thin,64_960,16;phosphor-dots-six-vertical,128_960,16;phosphor-dots-six,192_960,16;phosphor-dots-three-bold,256_960,16;phosphor-dots-three-circle-bold,320_960,16;phosphor-dots-three-circle-duotone,384_960,16;phosphor-dots-three-circle-fill,448_960,16;phosphor-dots-three-circle-light,512_960,16;phosphor-dots-three-circle-thin,576_960,16;phosphor-dots-three-circle-vertical-bold,640_960,16;phosphor-dots-three-circle-vertical-duotone,704_960,16;phosphor-dots-three-circle-vertical-fill,768_960,16;phosphor-dots-three-circle-vertical-light,832_960,16;phosphor-dots-three-circle-vertical-thin,896_960,16;phosphor-dots-three-circle-vertical,960_960,16;phosphor-dots-three-circle,0_0,17;phosphor-dots-three-duotone,64_0,17;phosphor-dots-three-fill,128_0,17;phosphor-dots-three-light,192_0,17;phosphor-dots-three-outline-bold,256_0,17;phosphor-dots-three-outline-duotone,320_0,17;phosphor-dots-three-outline-fill,384_0,17;phosphor-dots-three-outline-light,448_0,17;phosphor-dots-three-outline-thin,512_0,17;phosphor-dots-three-outline-vertical-bold,576_0,17;phosphor-dots-three-outline-vertical-duotone,640_0,17;phosphor-dots-three-outline-vertical-fill,704_0,17;phosphor-dots-three-outline-vertical-light,768_0,17;phosphor-dots-three-outline-vertical-thin,832_0,17;phosphor-dots-three-outline-vertical,896_0,17;phosphor-dots-three-outline,960_0,17;phosphor-dots-three-thin,0_64,17;phosphor-dots-three-vertical-bold,64_64,17;phosphor-dots-three-vertical-duotone,128_64,17;phosphor-dots-three-vertical-fill,192_64,17;phosphor-dots-three-vertical-light,256_64,17;phosphor-dots-three-vertical-thin,320_64,17;phosphor-dots-three-vertical,384_64,17;phosphor-dots-three,448_64,17;phosphor-download-bold,512_64,17;phosphor-download-duotone,576_64,17;phosphor-download-fill,640_64,17;phosphor-download-light,704_64,17;phosphor-download-simple-bold,768_64,17;phosphor-download-simple-duotone,832_64,17;phosphor-download-simple-fill,896_64,17;phosphor-download-simple-light,960_64,17;phosphor-download-simple-thin,0_128,17;phosphor-download-simple,64_128,17;phosphor-download-thin,128_128,17;phosphor-download,192_128,17;phosphor-dress-bold,256_128,17;phosphor-dress-duotone,320_128,17;phosphor-dress-fill,384_128,17;phosphor-dress-light,448_128,17;phosphor-dress-thin,512_128,17;phosphor-dress,576_128,17;phosphor-dresser-bold,640_128,17;phosphor-dresser-duotone,704_128,17;phosphor-dresser-fill,768_128,17;phosphor-dresser-light,832_128,17;phosphor-dresser-thin,896_128,17;phosphor-dresser,960_128,17;phosphor-dribbble-logo-bold,0_192,17;phosphor-dribbble-logo-duotone,64_192,17;phosphor-dribbble-logo-fill,128_192,17;phosphor-dribbble-logo-light,192_192,17;phosphor-dribbble-logo-thin,256_192,17;phosphor-dribbble-logo,320_192,17;phosphor-drone-bold,384_192,17;phosphor-drone-duotone,448_192,17;phosphor-drone-fill,512_192,17;phosphor-drone-light,576_192,17;phosphor-drone-thin,640_192,17;phosphor-drone,704_192,17;phosphor-drop-bold,768_192,17;phosphor-drop-duotone,832_192,17;phosphor-drop-fill,896_192,17;phosphor-drop-half-bold,960_192,17;phosphor-drop-half-bottom-bold,0_256,17;phosphor-drop-half-bottom-duotone,64_256,17;phosphor-drop-half-bottom-fill,128_256,17;phosphor-drop-half-bottom-light,192_256,17;phosphor-drop-half-bottom-thin,256_256,17;phosphor-drop-half-bottom,320_256,17;phosphor-drop-half-duotone,384_256,17;phosphor-drop-half-fill,448_256,17;phosphor-drop-half-light,512_256,17;phosphor-drop-half-thin,576_256,17;phosphor-drop-half,640_256,17;phosphor-drop-light,704_256,17;phosphor-drop-simple-bold,768_256,17;phosphor-drop-simple-duotone,832_256,17;phosphor-drop-simple-fill,896_256,17;phosphor-drop-simple-light,960_256,17;phosphor-drop-simple-thin,0_320,17;phosphor-drop-simple,64_320,17;phosphor-drop-slash-bold,128_320,17;phosphor-drop-slash-duotone,192_320,17;phosphor-drop-slash-fill,256_320,17;phosphor-drop-slash-light,320_320,17;phosphor-drop-slash-thin,384_320,17;phosphor-drop-slash,448_320,17;phosphor-drop-thin,512_320,17;phosphor-drop,576_320,17;phosphor-dropbox-logo-bold,640_320,17;phosphor-dropbox-logo-duotone,704_320,17;phosphor-dropbox-logo-fill,768_320,17;phosphor-dropbox-logo-light,832_320,17;phosphor-dropbox-logo-thin,896_320,17;phosphor-dropbox-logo,960_320,17;phosphor-ear-bold,0_384,17;phosphor-ear-duotone,64_384,17;phosphor-ear-fill,128_384,17;phosphor-ear-light,192_384,17;phosphor-ear-slash-bold,256_384,17;phosphor-ear-slash-duotone,320_384,17;phosphor-ear-slash-fill,384_384,17;phosphor-ear-slash-light,448_384,17;phosphor-ear-slash-thin,512_384,17;phosphor-ear-slash,576_384,17;phosphor-ear-thin,640_384,17;phosphor-ear,704_384,17;phosphor-egg-bold,768_384,17;phosphor-egg-crack-bold,832_384,17;phosphor-egg-crack-duotone,896_384,17;phosphor-egg-crack-fill,960_384,17;phosphor-egg-crack-light,0_448,17;phosphor-egg-crack-thin,64_448,17;phosphor-egg-crack,128_448,17;phosphor-egg-duotone,192_448,17;phosphor-egg-fill,256_448,17;phosphor-egg-light,320_448,17;phosphor-egg-thin,384_448,17;phosphor-egg,448_448,17;phosphor-eject-bold,512_448,17;phosphor-eject-duotone,576_448,17;phosphor-eject-fill,640_448,17;phosphor-eject-light,704_448,17;phosphor-eject-simple-bold,768_448,17;phosphor-eject-simple-duotone,832_448,17;phosphor-eject-simple-fill,896_448,17;phosphor-eject-simple-light,960_448,17;phosphor-eject-simple-thin,0_512,17;phosphor-eject-simple,64_512,17;phosphor-eject-thin,128_512,17;phosphor-eject,192_512,17;phosphor-elevator-bold,256_512,17;phosphor-elevator-duotone,320_512,17;phosphor-elevator-fill,384_512,17;phosphor-elevator-light,448_512,17;phosphor-elevator-thin,512_512,17;phosphor-elevator,576_512,17;phosphor-empty-bold,640_512,17;phosphor-empty-duotone,704_512,17;phosphor-empty-fill,768_512,17;phosphor-empty-light,832_512,17;phosphor-empty-thin,896_512,17;phosphor-empty,960_512,17;phosphor-engine-bold,0_576,17;phosphor-engine-duotone,64_576,17;phosphor-engine-fill,128_576,17;phosphor-engine-light,192_576,17;phosphor-engine-thin,256_576,17;phosphor-engine,320_576,17;phosphor-envelope-bold,384_576,17;phosphor-envelope-duotone,448_576,17;phosphor-envelope-fill,512_576,17;phosphor-envelope-light,576_576,17;phosphor-envelope-open-bold,640_576,17;phosphor-envelope-open-duotone,704_576,17;phosphor-envelope-open-fill,768_576,17;phosphor-envelope-open-light,832_576,17;phosphor-envelope-open-thin,896_576,17;phosphor-envelope-open,960_576,17;phosphor-envelope-simple-bold,0_640,17;phosphor-envelope-simple-duotone,64_640,17;phosphor-envelope-simple-fill,128_640,17;phosphor-envelope-simple-light,192_640,17;phosphor-envelope-simple-open-bold,256_640,17;phosphor-envelope-simple-open-duotone,320_640,17;phosphor-envelope-simple-open-fill,384_640,17;phosphor-envelope-simple-open-light,448_640,17;phosphor-envelope-simple-open-thin,512_640,17;phosphor-envelope-simple-open,576_640,17;phosphor-envelope-simple-thin,640_640,17;phosphor-envelope-simple,704_640,17;phosphor-envelope-thin,768_640,17;phosphor-envelope,832_640,17;phosphor-equalizer-bold,896_640,17;phosphor-equalizer-duotone,960_640,17;phosphor-equalizer-fill,0_704,17;phosphor-equalizer-light,64_704,17;phosphor-equalizer-thin,128_704,17;phosphor-equalizer,192_704,17;phosphor-equals-bold,256_704,17;phosphor-equals-duotone,320_704,17;phosphor-equals-fill,384_704,17;phosphor-equals-light,448_704,17;phosphor-equals-thin,512_704,17;phosphor-equals,576_704,17;phosphor-eraser-bold,640_704,17;phosphor-eraser-duotone,704_704,17;phosphor-eraser-fill,768_704,17;phosphor-eraser-light,832_704,17;phosphor-eraser-thin,896_704,17;phosphor-eraser,960_704,17;phosphor-escalator-down-bold,0_768,17;phosphor-escalator-down-duotone,64_768,17;phosphor-escalator-down-fill,128_768,17;phosphor-escalator-down-light,192_768,17;phosphor-escalator-down-thin,256_768,17;phosphor-escalator-down,320_768,17;phosphor-escalator-up-bold,384_768,17;phosphor-escalator-up-duotone,448_768,17;phosphor-escalator-up-fill,512_768,17;phosphor-escalator-up-light,576_768,17;phosphor-escalator-up-thin,640_768,17;phosphor-escalator-up,704_768,17;phosphor-exam-bold,768_768,17;phosphor-exam-duotone,832_768,17;phosphor-exam-fill,896_768,17;phosphor-exam-light,960_768,17;phosphor-exam-thin,0_832,17;phosphor-exam,64_832,17;phosphor-exclamation-mark-bold,128_832,17;phosphor-exclamation-mark-duotone,192_832,17;phosphor-exclamation-mark-fill,256_832,17;phosphor-exclamation-mark-light,320_832,17;phosphor-exclamation-mark-thin,384_832,17;phosphor-exclamation-mark,448_832,17;phosphor-exclude-bold,512_832,17;phosphor-exclude-duotone,576_832,17;phosphor-exclude-fill,640_832,17;phosphor-exclude-light,704_832,17;phosphor-exclude-square-bold,768_832,17;phosphor-exclude-square-duotone,832_832,17;phosphor-exclude-square-fill,896_832,17;phosphor-exclude-square-light,960_832,17;phosphor-exclude-square-thin,0_896,17;phosphor-exclude-square,64_896,17;phosphor-exclude-thin,128_896,17;phosphor-exclude,192_896,17;phosphor-export-bold,256_896,17;phosphor-export-duotone,320_896,17;phosphor-export-fill,384_896,17;phosphor-export-light,448_896,17;phosphor-export-thin,512_896,17;phosphor-export,576_896,17;phosphor-eye-bold,640_896,17;phosphor-eye-closed-bold,704_896,17;phosphor-eye-closed-duotone,768_896,17;phosphor-eye-closed-fill,832_896,17;phosphor-eye-closed-light,896_896,17;phosphor-eye-closed-thin,960_896,17;phosphor-eye-closed,0_960,17;phosphor-eye-duotone,64_960,17;phosphor-eye-fill,128_960,17;phosphor-eye-light,192_960,17;phosphor-eye-slash-bold,256_960,17;phosphor-eye-slash-duotone,320_960,17;phosphor-eye-slash-fill,384_960,17;phosphor-eye-slash-light,448_960,17;phosphor-eye-slash-thin,512_960,17;phosphor-eye-slash,576_960,17;phosphor-eye-thin,640_960,17;phosphor-eye,704_960,17;phosphor-eyedropper-bold,768_960,17;phosphor-eyedropper-duotone,832_960,17;phosphor-eyedropper-fill,896_960,17;phosphor-eyedropper-light,960_960,17;phosphor-eyedropper-sample-bold,0_0,18;phosphor-eyedropper-sample-duotone,64_0,18;phosphor-eyedropper-sample-fill,128_0,18;phosphor-eyedropper-sample-light,192_0,18;phosphor-eyedropper-sample-thin,256_0,18;phosphor-eyedropper-sample,320_0,18;phosphor-eyedropper-thin,384_0,18;phosphor-eyedropper,448_0,18;phosphor-eyeglasses-bold,512_0,18;phosphor-eyeglasses-duotone,576_0,18;phosphor-eyeglasses-fill,640_0,18;phosphor-eyeglasses-light,704_0,18;phosphor-eyeglasses-thin,768_0,18;phosphor-eyeglasses,832_0,18;phosphor-eyes-bold,896_0,18;phosphor-eyes-duotone,960_0,18;phosphor-eyes-fill,0_64,18;phosphor-eyes-light,64_64,18;phosphor-eyes-thin,128_64,18;phosphor-eyes,192_64,18;phosphor-face-mask-bold,256_64,18;phosphor-face-mask-duotone,320_64,18;phosphor-face-mask-fill,384_64,18;phosphor-face-mask-light,448_64,18;phosphor-face-mask-thin,512_64,18;phosphor-face-mask,576_64,18;phosphor-facebook-logo-bold,640_64,18;phosphor-facebook-logo-duotone,704_64,18;phosphor-facebook-logo-fill,768_64,18;phosphor-facebook-logo-light,832_64,18;phosphor-facebook-logo-thin,896_64,18;phosphor-facebook-logo,960_64,18;phosphor-factory-bold,0_128,18;phosphor-factory-duotone,64_128,18;phosphor-factory-fill,128_128,18;phosphor-factory-light,192_128,18;phosphor-factory-thin,256_128,18;phosphor-factory,320_128,18;phosphor-faders-bold,384_128,18;phosphor-faders-duotone,448_128,18;phosphor-faders-fill,512_128,18;phosphor-faders-horizontal-bold,576_128,18;phosphor-faders-horizontal-duotone,640_128,18;phosphor-faders-horizontal-fill,704_128,18;phosphor-faders-horizontal-light,768_128,18;phosphor-faders-horizontal-thin,832_128,18;phosphor-faders-horizontal,896_128,18;phosphor-faders-light,960_128,18;phosphor-faders-thin,0_192,18;phosphor-faders,64_192,18;phosphor-fallout-shelter-bold,128_192,18;phosphor-fallout-shelter-duotone,192_192,18;phosphor-fallout-shelter-fill,256_192,18;phosphor-fallout-shelter-light,320_192,18;phosphor-fallout-shelter-thin,384_192,18;phosphor-fallout-shelter,448_192,18;phosphor-fan-bold,512_192,18;phosphor-fan-duotone,576_192,18;phosphor-fan-fill,640_192,18;phosphor-fan-light,704_192,18;phosphor-fan-thin,768_192,18;phosphor-fan,832_192,18;phosphor-farm-bold,896_192,18;phosphor-farm-duotone,960_192,18;phosphor-farm-fill,0_256,18;phosphor-farm-light,64_256,18;phosphor-farm-thin,128_256,18;phosphor-farm,192_256,18;phosphor-fast-forward-bold,256_256,18;phosphor-fast-forward-circle-bold,320_256,18;phosphor-fast-forward-circle-duotone,384_256,18;phosphor-fast-forward-circle-fill,448_256,18;phosphor-fast-forward-circle-light,512_256,18;phosphor-fast-forward-circle-thin,576_256,18;phosphor-fast-forward-circle,640_256,18;phosphor-fast-forward-duotone,704_256,18;phosphor-fast-forward-fill,768_256,18;phosphor-fast-forward-light,832_256,18;phosphor-fast-forward-thin,896_256,18;phosphor-fast-forward,960_256,18;phosphor-feather-bold,0_320,18;phosphor-feather-duotone,64_320,18;phosphor-feather-fill,128_320,18;phosphor-feather-light,192_320,18;phosphor-feather-thin,256_320,18;phosphor-feather,320_320,18;phosphor-fediverse-logo-bold,384_320,18;phosphor-fediverse-logo-duotone,448_320,18;phosphor-fediverse-logo-fill,512_320,18;phosphor-fediverse-logo-light,576_320,18;phosphor-fediverse-logo-thin,640_320,18;phosphor-fediverse-logo,704_320,18;phosphor-figma-logo-bold,768_320,18;phosphor-figma-logo-duotone,832_320,18;phosphor-figma-logo-fill,896_320,18;phosphor-figma-logo-light,960_320,18;phosphor-figma-logo-thin,0_384,18;phosphor-figma-logo,64_384,18;phosphor-file-archive-bold,128_384,18;phosphor-file-archive-duotone,192_384,18;phosphor-file-archive-fill,256_384,18;phosphor-file-archive-light,320_384,18;phosphor-file-archive-thin,384_384,18;phosphor-file-archive,448_384,18;phosphor-file-arrow-down-bold,512_384,18;phosphor-file-arrow-down-duotone,576_384,18;phosphor-file-arrow-down-fill,640_384,18;phosphor-file-arrow-down-light,704_384,18;phosphor-file-arrow-down-thin,768_384,18;phosphor-file-arrow-down,832_384,18;phosphor-file-arrow-up-bold,896_384,18;phosphor-file-arrow-up-duotone,960_384,18;phosphor-file-arrow-up-fill,0_448,18;phosphor-file-arrow-up-light,64_448,18;phosphor-file-arrow-up-thin,128_448,18;phosphor-file-arrow-up,192_448,18;phosphor-file-audio-bold,256_448,18;phosphor-file-audio-duotone,320_448,18;phosphor-file-audio-fill,384_448,18;phosphor-file-audio-light,448_448,18;phosphor-file-audio-thin,512_448,18;phosphor-file-audio,576_448,18;phosphor-file-bold,640_448,18;phosphor-file-c-bold,704_448,18;phosphor-file-c-duotone,768_448,18;phosphor-file-c-fill,832_448,18;phosphor-file-c-light,896_448,18;phosphor-file-c-sharp-bold,960_448,18;phosphor-file-c-sharp-duotone,0_512,18;phosphor-file-c-sharp-fill,64_512,18;phosphor-file-c-sharp-light,128_512,18;phosphor-file-c-sharp-thin,192_512,18;phosphor-file-c-sharp,256_512,18;phosphor-file-c-thin,320_512,18;phosphor-file-c,384_512,18;phosphor-file-cloud-bold,448_512,18;phosphor-file-cloud-duotone,512_512,18;phosphor-file-cloud-fill,576_512,18;phosphor-file-cloud-light,640_512,18;phosphor-file-cloud-thin,704_512,18;phosphor-file-cloud,768_512,18;phosphor-file-code-bold,832_512,18;phosphor-file-code-duotone,896_512,18;phosphor-file-code-fill,960_512,18;phosphor-file-code-light,0_576,18;phosphor-file-code-thin,64_576,18;phosphor-file-code,128_576,18;phosphor-file-cpp-bold,192_576,18;phosphor-file-cpp-duotone,256_576,18;phosphor-file-cpp-fill,320_576,18;phosphor-file-cpp-light,384_576,18;phosphor-file-cpp-thin,448_576,18;phosphor-file-cpp,512_576,18;phosphor-file-css-bold,576_576,18;phosphor-file-css-duotone,640_576,18;phosphor-file-css-fill,704_576,18;phosphor-file-css-light,768_576,18;phosphor-file-css-thin,832_576,18;phosphor-file-css,896_576,18;phosphor-file-csv-bold,960_576,18;phosphor-file-csv-duotone,0_640,18;phosphor-file-csv-fill,64_640,18;phosphor-file-csv-light,128_640,18;phosphor-file-csv-thin,192_640,18;phosphor-file-csv,256_640,18;phosphor-file-dashed-bold,320_640,18;phosphor-file-dashed-duotone,384_640,18;phosphor-file-dashed-fill,448_640,18;phosphor-file-dashed-light,512_640,18;phosphor-file-dashed-thin,576_640,18;phosphor-file-dashed,640_640,18;phosphor-file-doc-bold,704_640,18;phosphor-file-doc-duotone,768_640,18;phosphor-file-doc-fill,832_640,18;phosphor-file-doc-light,896_640,18;phosphor-file-doc-thin,960_640,18;phosphor-file-doc,0_704,18;phosphor-file-duotone,64_704,18;phosphor-file-fill,128_704,18;phosphor-file-html-bold,192_704,18;phosphor-file-html-duotone,256_704,18;phosphor-file-html-fill,320_704,18;phosphor-file-html-light,384_704,18;phosphor-file-html-thin,448_704,18;phosphor-file-html,512_704,18;phosphor-file-image-bold,576_704,18;phosphor-file-image-duotone,640_704,18;phosphor-file-image-fill,704_704,18;phosphor-file-image-light,768_704,18;phosphor-file-image-thin,832_704,18;phosphor-file-image,896_704,18;phosphor-file-ini-bold,960_704,18;phosphor-file-ini-duotone,0_768,18;phosphor-file-ini-fill,64_768,18;phosphor-file-ini-light,128_768,18;phosphor-file-ini-thin,192_768,18;phosphor-file-ini,256_768,18;phosphor-file-jpg-bold,320_768,18;phosphor-file-jpg-duotone,384_768,18;phosphor-file-jpg-fill,448_768,18;phosphor-file-jpg-light,512_768,18;phosphor-file-jpg-thin,576_768,18;phosphor-file-jpg,640_768,18;phosphor-file-js-bold,704_768,18;phosphor-file-js-duotone,768_768,18;phosphor-file-js-fill,832_768,18;phosphor-file-js-light,896_768,18;phosphor-file-js-thin,960_768,18;phosphor-file-js,0_832,18;phosphor-file-jsx-bold,64_832,18;phosphor-file-jsx-duotone,128_832,18;phosphor-file-jsx-fill,192_832,18;phosphor-file-jsx-light,256_832,18;phosphor-file-jsx-thin,320_832,18;phosphor-file-jsx,384_832,18;phosphor-file-light,448_832,18;phosphor-file-lock-bold,512_832,18;phosphor-file-lock-duotone,576_832,18;phosphor-file-lock-fill,640_832,18;phosphor-file-lock-light,704_832,18;phosphor-file-lock-thin,768_832,18;phosphor-file-lock,832_832,18;phosphor-file-magnifying-glass-bold,896_832,18;phosphor-file-magnifying-glass-duotone,960_832,18;phosphor-file-magnifying-glass-fill,0_896,18;phosphor-file-magnifying-glass-light,64_896,18;phosphor-file-magnifying-glass-thin,128_896,18;phosphor-file-magnifying-glass,192_896,18;phosphor-file-md-bold,256_896,18;phosphor-file-md-duotone,320_896,18;phosphor-file-md-fill,384_896,18;phosphor-file-md-light,448_896,18;phosphor-file-md-thin,512_896,18;phosphor-file-md,576_896,18;phosphor-file-minus-bold,640_896,18;phosphor-file-minus-duotone,704_896,18;phosphor-file-minus-fill,768_896,18;phosphor-file-minus-light,832_896,18;phosphor-file-minus-thin,896_896,18;phosphor-file-minus,960_896,18;phosphor-file-pdf-bold,0_960,18;phosphor-file-pdf-duotone,64_960,18;phosphor-file-pdf-fill,128_960,18;phosphor-file-pdf-light,192_960,18;phosphor-file-pdf-thin,256_960,18;phosphor-file-pdf,320_960,18;phosphor-file-plus-bold,384_960,18;phosphor-file-plus-duotone,448_960,18;phosphor-file-plus-fill,512_960,18;phosphor-file-plus-light,576_960,18;phosphor-file-plus-thin,640_960,18;phosphor-file-plus,704_960,18;phosphor-file-png-bold,768_960,18;phosphor-file-png-duotone,832_960,18;phosphor-file-png-fill,896_960,18;phosphor-file-png-light,960_960,18;phosphor-file-png-thin,0_0,19;phosphor-file-png,64_0,19;phosphor-file-ppt-bold,128_0,19;phosphor-file-ppt-duotone,192_0,19;phosphor-file-ppt-fill,256_0,19;phosphor-file-ppt-light,320_0,19;phosphor-file-ppt-thin,384_0,19;phosphor-file-ppt,448_0,19;phosphor-file-py-bold,512_0,19;phosphor-file-py-duotone,576_0,19;phosphor-file-py-fill,640_0,19;phosphor-file-py-light,704_0,19;phosphor-file-py-thin,768_0,19;phosphor-file-py,832_0,19;phosphor-file-rs-bold,896_0,19;phosphor-file-rs-duotone,960_0,19;phosphor-file-rs-fill,0_64,19;phosphor-file-rs-light,64_64,19;phosphor-file-rs-thin,128_64,19;phosphor-file-rs,192_64,19;phosphor-file-sql-bold,256_64,19;phosphor-file-sql-duotone,320_64,19;phosphor-file-sql-fill,384_64,19;phosphor-file-sql-light,448_64,19;phosphor-file-sql-thin,512_64,19;phosphor-file-sql,576_64,19;phosphor-file-svg-bold,640_64,19;phosphor-file-svg-duotone,704_64,19;phosphor-file-svg-fill,768_64,19;phosphor-file-svg-light,832_64,19;phosphor-file-svg-thin,896_64,19;phosphor-file-svg,960_64,19;phosphor-file-text-bold,0_128,19;phosphor-file-text-duotone,64_128,19;phosphor-file-text-fill,128_128,19;phosphor-file-text-light,192_128,19;phosphor-file-text-thin,256_128,19;phosphor-file-text,320_128,19;phosphor-file-thin,384_128,19;phosphor-file-ts-bold,448_128,19;phosphor-file-ts-duotone,512_128,19;phosphor-file-ts-fill,576_128,19;phosphor-file-ts-light,640_128,19;phosphor-file-ts-thin,704_128,19;phosphor-file-ts,768_128,19;phosphor-file-tsx-bold,832_128,19;phosphor-file-tsx-duotone,896_128,19;phosphor-file-tsx-fill,960_128,19;phosphor-file-tsx-light,0_192,19;phosphor-file-tsx-thin,64_192,19;phosphor-file-tsx,128_192,19;phosphor-file-txt-bold,192_192,19;phosphor-file-txt-duotone,256_192,19;phosphor-file-txt-fill,320_192,19;phosphor-file-txt-light,384_192,19;phosphor-file-txt-thin,448_192,19;phosphor-file-txt,512_192,19;phosphor-file-video-bold,576_192,19;phosphor-file-video-duotone,640_192,19;phosphor-file-video-fill,704_192,19;phosphor-file-video-light,768_192,19;phosphor-file-video-thin,832_192,19;phosphor-file-video,896_192,19;phosphor-file-vue-bold,960_192,19;phosphor-file-vue-duotone,0_256,19;phosphor-file-vue-fill,64_256,19;phosphor-file-vue-light,128_256,19;phosphor-file-vue-thin,192_256,19;phosphor-file-vue,256_256,19;phosphor-file-x-bold,320_256,19;phosphor-file-x-duotone,384_256,19;phosphor-file-x-fill,448_256,19;phosphor-file-x-light,512_256,19;phosphor-file-x-thin,576_256,19;phosphor-file-x,640_256,19;phosphor-file-xls-bold,704_256,19;phosphor-file-xls-duotone,768_256,19;phosphor-file-xls-fill,832_256,19;phosphor-file-xls-light,896_256,19;phosphor-file-xls-thin,960_256,19;phosphor-file-xls,0_320,19;phosphor-file-zip-bold,64_320,19;phosphor-file-zip-duotone,128_320,19;phosphor-file-zip-fill,192_320,19;phosphor-file-zip-light,256_320,19;phosphor-file-zip-thin,320_320,19;phosphor-file-zip,384_320,19;phosphor-file,448_320,19;phosphor-files-bold,512_320,19;phosphor-files-duotone,576_320,19;phosphor-files-fill,640_320,19;phosphor-files-light,704_320,19;phosphor-files-thin,768_320,19;phosphor-files,832_320,19;phosphor-film-reel-bold,896_320,19;phosphor-film-reel-duotone,960_320,19;phosphor-film-reel-fill,0_384,19;phosphor-film-reel-light,64_384,19;phosphor-film-reel-thin,128_384,19;phosphor-film-reel,192_384,19;phosphor-film-script-bold,256_384,19;phosphor-film-script-duotone,320_384,19;phosphor-film-script-fill,384_384,19;phosphor-film-script-light,448_384,19;phosphor-film-script-thin,512_384,19;phosphor-film-script,576_384,19;phosphor-film-slate-bold,640_384,19;phosphor-film-slate-duotone,704_384,19;phosphor-film-slate-fill,768_384,19;phosphor-film-slate-light,832_384,19;phosphor-film-slate-thin,896_384,19;phosphor-film-slate,960_384,19;phosphor-film-strip-bold,0_448,19;phosphor-film-strip-duotone,64_448,19;phosphor-film-strip-fill,128_448,19;phosphor-film-strip-light,192_448,19;phosphor-film-strip-thin,256_448,19;phosphor-film-strip,320_448,19;phosphor-fingerprint-bold,384_448,19;phosphor-fingerprint-duotone,448_448,19;phosphor-fingerprint-fill,512_448,19;phosphor-fingerprint-light,576_448,19;phosphor-fingerprint-simple-bold,640_448,19;phosphor-fingerprint-simple-duotone,704_448,19;phosphor-fingerprint-simple-fill,768_448,19;phosphor-fingerprint-simple-light,832_448,19;phosphor-fingerprint-simple-thin,896_448,19;phosphor-fingerprint-simple,960_448,19;phosphor-fingerprint-thin,0_512,19;phosphor-fingerprint,64_512,19;phosphor-finn-the-human-bold,128_512,19;phosphor-finn-the-human-duotone,192_512,19;phosphor-finn-the-human-fill,256_512,19;phosphor-finn-the-human-light,320_512,19;phosphor-finn-the-human-thin,384_512,19;phosphor-finn-the-human,448_512,19;phosphor-fire-bold,512_512,19;phosphor-fire-duotone,576_512,19;phosphor-fire-extinguisher-bold,640_512,19;phosphor-fire-extinguisher-duotone,704_512,19;phosphor-fire-extinguisher-fill,768_512,19;phosphor-fire-extinguisher-light,832_512,19;phosphor-fire-extinguisher-thin,896_512,19;phosphor-fire-extinguisher,960_512,19;phosphor-fire-fill,0_576,19;phosphor-fire-light,64_576,19;phosphor-fire-simple-bold,128_576,19;phosphor-fire-simple-duotone,192_576,19;phosphor-fire-simple-fill,256_576,19;phosphor-fire-simple-light,320_576,19;phosphor-fire-simple-thin,384_576,19;phosphor-fire-simple,448_576,19;phosphor-fire-thin,512_576,19;phosphor-fire-truck-bold,576_576,19;phosphor-fire-truck-duotone,640_576,19;phosphor-fire-truck-fill,704_576,19;phosphor-fire-truck-light,768_576,19;phosphor-fire-truck-thin,832_576,19;phosphor-fire-truck,896_576,19;phosphor-fire,960_576,19;phosphor-first-aid-bold,0_640,19;phosphor-first-aid-duotone,64_640,19;phosphor-first-aid-fill,128_640,19;phosphor-first-aid-kit-bold,192_640,19;phosphor-first-aid-kit-duotone,256_640,19;phosphor-first-aid-kit-fill,320_640,19;phosphor-first-aid-kit-light,384_640,19;phosphor-first-aid-kit-thin,448_640,19;phosphor-first-aid-kit,512_640,19;phosphor-first-aid-light,576_640,19;phosphor-first-aid-thin,640_640,19;phosphor-first-aid,704_640,19;phosphor-fish-bold,768_640,19;phosphor-fish-duotone,832_640,19;phosphor-fish-fill,896_640,19;phosphor-fish-light,960_640,19;phosphor-fish-simple-bold,0_704,19;phosphor-fish-simple-duotone,64_704,19;phosphor-fish-simple-fill,128_704,19;phosphor-fish-simple-light,192_704,19;phosphor-fish-simple-thin,256_704,19;phosphor-fish-simple,320_704,19;phosphor-fish-thin,384_704,19;phosphor-fish,448_704,19;phosphor-flag-banner-bold,512_704,19;phosphor-flag-banner-duotone,576_704,19;phosphor-flag-banner-fill,640_704,19;phosphor-flag-banner-fold-bold,704_704,19;phosphor-flag-banner-fold-duotone,768_704,19;phosphor-flag-banner-fold-fill,832_704,19;phosphor-flag-banner-fold-light,896_704,19;phosphor-flag-banner-fold-thin,960_704,19;phosphor-flag-banner-fold,0_768,19;phosphor-flag-banner-light,64_768,19;phosphor-flag-banner-thin,128_768,19;phosphor-flag-banner,192_768,19;phosphor-flag-bold,256_768,19;phosphor-flag-checkered-bold,320_768,19;phosphor-flag-checkered-duotone,384_768,19;phosphor-flag-checkered-fill,448_768,19;phosphor-flag-checkered-light,512_768,19;phosphor-flag-checkered-thin,576_768,19;phosphor-flag-checkered,640_768,19;phosphor-flag-duotone,704_768,19;phosphor-flag-fill,768_768,19;phosphor-flag-light,832_768,19;phosphor-flag-pennant-bold,896_768,19;phosphor-flag-pennant-duotone,960_768,19;phosphor-flag-pennant-fill,0_832,19;phosphor-flag-pennant-light,64_832,19;phosphor-flag-pennant-thin,128_832,19;phosphor-flag-pennant,192_832,19;phosphor-flag-thin,256_832,19;phosphor-flag,320_832,19;phosphor-flame-bold,384_832,19;phosphor-flame-duotone,448_832,19;phosphor-flame-fill,512_832,19;phosphor-flame-light,576_832,19;phosphor-flame-thin,640_832,19;phosphor-flame,704_832,19;phosphor-flashlight-bold,768_832,19;phosphor-flashlight-duotone,832_832,19;phosphor-flashlight-fill,896_832,19;phosphor-flashlight-light,960_832,19;phosphor-flashlight-thin,0_896,19;phosphor-flashlight,64_896,19;phosphor-flask-bold,128_896,19;phosphor-flask-duotone,192_896,19;phosphor-flask-fill,256_896,19;phosphor-flask-light,320_896,19;phosphor-flask-thin,384_896,19;phosphor-flask,448_896,19;phosphor-flip-horizontal-bold,512_896,19;phosphor-flip-horizontal-duotone,576_896,19;phosphor-flip-horizontal-fill,640_896,19;phosphor-flip-horizontal-light,704_896,19;phosphor-flip-horizontal-thin,768_896,19;phosphor-flip-horizontal,832_896,19;phosphor-flip-vertical-bold,896_896,19;phosphor-flip-vertical-duotone,960_896,19;phosphor-flip-vertical-fill,0_960,19;phosphor-flip-vertical-light,64_960,19;phosphor-flip-vertical-thin,128_960,19;phosphor-flip-vertical,192_960,19;phosphor-floppy-disk-back-bold,256_960,19;phosphor-floppy-disk-back-duotone,320_960,19;phosphor-floppy-disk-back-fill,384_960,19;phosphor-floppy-disk-back-light,448_960,19;phosphor-floppy-disk-back-thin,512_960,19;phosphor-floppy-disk-back,576_960,19;phosphor-floppy-disk-bold,640_960,19;phosphor-floppy-disk-duotone,704_960,19;phosphor-floppy-disk-fill,768_960,19;phosphor-floppy-disk-light,832_960,19;phosphor-floppy-disk-thin,896_960,19;phosphor-floppy-disk,960_960,19;phosphor-flow-arrow-bold,0_0,20;phosphor-flow-arrow-duotone,64_0,20;phosphor-flow-arrow-fill,128_0,20;phosphor-flow-arrow-light,192_0,20;phosphor-flow-arrow-thin,256_0,20;phosphor-flow-arrow,320_0,20;phosphor-flower-bold,384_0,20;phosphor-flower-duotone,448_0,20;phosphor-flower-fill,512_0,20;phosphor-flower-light,576_0,20;phosphor-flower-lotus-bold,640_0,20;phosphor-flower-lotus-duotone,704_0,20;phosphor-flower-lotus-fill,768_0,20;phosphor-flower-lotus-light,832_0,20;phosphor-flower-lotus-thin,896_0,20;phosphor-flower-lotus,960_0,20;phosphor-flower-thin,0_64,20;phosphor-flower-tulip-bold,64_64,20;phosphor-flower-tulip-duotone,128_64,20;phosphor-flower-tulip-fill,192_64,20;phosphor-flower-tulip-light,256_64,20;phosphor-flower-tulip-thin,320_64,20;phosphor-flower-tulip,384_64,20;phosphor-flower,448_64,20;phosphor-flying-saucer-bold,512_64,20;phosphor-flying-saucer-duotone,576_64,20;phosphor-flying-saucer-fill,640_64,20;phosphor-flying-saucer-light,704_64,20;phosphor-flying-saucer-thin,768_64,20;phosphor-flying-saucer,832_64,20;phosphor-folder-bold,896_64,20;phosphor-folder-dashed-bold,960_64,20;phosphor-folder-dashed-duotone,0_128,20;phosphor-folder-dashed-fill,64_128,20;phosphor-folder-dashed-light,128_128,20;phosphor-folder-dashed-thin,192_128,20;phosphor-folder-dashed,256_128,20;phosphor-folder-duotone,320_128,20;phosphor-folder-fill,384_128,20;phosphor-folder-light,448_128,20;phosphor-folder-lock-bold,512_128,20;phosphor-folder-lock-duotone,576_128,20;phosphor-folder-lock-fill,640_128,20;phosphor-folder-lock-light,704_128,20;phosphor-folder-lock-thin,768_128,20;phosphor-folder-lock,832_128,20;phosphor-folder-minus-bold,896_128,20;phosphor-folder-minus-duotone,960_128,20;phosphor-folder-minus-fill,0_192,20;phosphor-folder-minus-light,64_192,20;phosphor-folder-minus-thin,128_192,20;phosphor-folder-minus,192_192,20;phosphor-folder-open-bold,256_192,20;phosphor-folder-open-duotone,320_192,20;phosphor-folder-open-fill,384_192,20;phosphor-folder-open-light,448_192,20;phosphor-folder-open-thin,512_192,20;phosphor-folder-open,576_192,20;phosphor-folder-plus-bold,640_192,20;phosphor-folder-plus-duotone,704_192,20;phosphor-folder-plus-fill,768_192,20;phosphor-folder-plus-light,832_192,20;phosphor-folder-plus-thin,896_192,20;phosphor-folder-plus,960_192,20;phosphor-folder-simple-bold,0_256,20;phosphor-folder-simple-dashed-bold,64_256,20;phosphor-folder-simple-dashed-duotone,128_256,20;phosphor-folder-simple-dashed-fill,192_256,20;phosphor-folder-simple-dashed-light,256_256,20;phosphor-folder-simple-dashed-thin,320_256,20;phosphor-folder-simple-dashed,384_256,20;phosphor-folder-simple-duotone,448_256,20;phosphor-folder-simple-fill,512_256,20;phosphor-folder-simple-light,576_256,20;phosphor-folder-simple-lock-bold,640_256,20;phosphor-folder-simple-lock-duotone,704_256,20;phosphor-folder-simple-lock-fill,768_256,20;phosphor-folder-simple-lock-light,832_256,20;phosphor-folder-simple-lock-thin,896_256,20;phosphor-folder-simple-lock,960_256,20;phosphor-folder-simple-minus-bold,0_320,20;phosphor-folder-simple-minus-duotone,64_320,20;phosphor-folder-simple-minus-fill,128_320,20;phosphor-folder-simple-minus-light,192_320,20;phosphor-folder-simple-minus-thin,256_320,20;phosphor-folder-simple-minus,320_320,20;phosphor-folder-simple-plus-bold,384_320,20;phosphor-folder-simple-plus-duotone,448_320,20;phosphor-folder-simple-plus-fill,512_320,20;phosphor-folder-simple-plus-light,576_320,20;phosphor-folder-simple-plus-thin,640_320,20;phosphor-folder-simple-plus,704_320,20;phosphor-folder-simple-star-bold,768_320,20;phosphor-folder-simple-star-duotone,832_320,20;phosphor-folder-simple-star-fill,896_320,20;phosphor-folder-simple-star-light,960_320,20;phosphor-folder-simple-star-thin,0_384,20;phosphor-folder-simple-star,64_384,20;phosphor-folder-simple-thin,128_384,20;phosphor-folder-simple-user-bold,192_384,20;phosphor-folder-simple-user-duotone,256_384,20;phosphor-folder-simple-user-fill,320_384,20;phosphor-folder-simple-user-light,384_384,20;phosphor-folder-simple-user-thin,448_384,20;phosphor-folder-simple-user,512_384,20;phosphor-folder-simple,576_384,20;phosphor-folder-star-bold,640_384,20;phosphor-folder-star-duotone,704_384,20;phosphor-folder-star-fill,768_384,20;phosphor-folder-star-light,832_384,20;phosphor-folder-star-thin,896_384,20;phosphor-folder-star,960_384,20;phosphor-folder-thin,0_448,20;phosphor-folder-user-bold,64_448,20;phosphor-folder-user-duotone,128_448,20;phosphor-folder-user-fill,192_448,20;phosphor-folder-user-light,256_448,20;phosphor-folder-user-thin,320_448,20;phosphor-folder-user,384_448,20;phosphor-folder,448_448,20;phosphor-folders-bold,512_448,20;phosphor-folders-duotone,576_448,20;phosphor-folders-fill,640_448,20;phosphor-folders-light,704_448,20;phosphor-folders-thin,768_448,20;phosphor-folders,832_448,20;phosphor-football-bold,896_448,20;phosphor-football-duotone,960_448,20;phosphor-football-fill,0_512,20;phosphor-football-helmet-bold,64_512,20;phosphor-football-helmet-duotone,128_512,20;phosphor-football-helmet-fill,192_512,20;phosphor-football-helmet-light,256_512,20;phosphor-football-helmet-thin,320_512,20;phosphor-football-helmet,384_512,20;phosphor-football-light,448_512,20;phosphor-football-thin,512_512,20;phosphor-football,576_512,20;phosphor-footprints-bold,640_512,20;phosphor-footprints-duotone,704_512,20;phosphor-footprints-fill,768_512,20;phosphor-footprints-light,832_512,20;phosphor-footprints-thin,896_512,20;phosphor-footprints,960_512,20;phosphor-fork-knife-bold,0_576,20;phosphor-fork-knife-duotone,64_576,20;phosphor-fork-knife-fill,128_576,20;phosphor-fork-knife-light,192_576,20;phosphor-fork-knife-thin,256_576,20;phosphor-fork-knife,320_576,20;phosphor-four-k-bold,384_576,20;phosphor-four-k-duotone,448_576,20;phosphor-four-k-fill,512_576,20;phosphor-four-k-light,576_576,20;phosphor-four-k-thin,640_576,20;phosphor-four-k,704_576,20;phosphor-frame-corners-bold,768_576,20;phosphor-frame-corners-duotone,832_576,20;phosphor-frame-corners-fill,896_576,20;phosphor-frame-corners-light,960_576,20;phosphor-frame-corners-thin,0_640,20;phosphor-frame-corners,64_640,20;phosphor-framer-logo-bold,128_640,20;phosphor-framer-logo-duotone,192_640,20;phosphor-framer-logo-fill,256_640,20;phosphor-framer-logo-light,320_640,20;phosphor-framer-logo-thin,384_640,20;phosphor-framer-logo,448_640,20;phosphor-function-bold,512_640,20;phosphor-function-duotone,576_640,20;phosphor-function-fill,640_640,20;phosphor-function-light,704_640,20;phosphor-function-thin,768_640,20;phosphor-function,832_640,20;phosphor-funnel-bold,896_640,20;phosphor-funnel-duotone,960_640,20;phosphor-funnel-fill,0_704,20;phosphor-funnel-light,64_704,20;phosphor-funnel-simple-bold,128_704,20;phosphor-funnel-simple-duotone,192_704,20;phosphor-funnel-simple-fill,256_704,20;phosphor-funnel-simple-light,320_704,20;phosphor-funnel-simple-thin,384_704,20;phosphor-funnel-simple-x-bold,448_704,20;phosphor-funnel-simple-x-duotone,512_704,20;phosphor-funnel-simple-x-fill,576_704,20;phosphor-funnel-simple-x-light,640_704,20;phosphor-funnel-simple-x-thin,704_704,20;phosphor-funnel-simple-x,768_704,20;phosphor-funnel-simple,832_704,20;phosphor-funnel-thin,896_704,20;phosphor-funnel-x-bold,960_704,20;phosphor-funnel-x-duotone,0_768,20;phosphor-funnel-x-fill,64_768,20;phosphor-funnel-x-light,128_768,20;phosphor-funnel-x-thin,192_768,20;phosphor-funnel-x,256_768,20;phosphor-funnel,320_768,20;phosphor-game-controller-bold,384_768,20;phosphor-game-controller-duotone,448_768,20;phosphor-game-controller-fill,512_768,20;phosphor-game-controller-light,576_768,20;phosphor-game-controller-thin,640_768,20;phosphor-game-controller,704_768,20;phosphor-garage-bold,768_768,20;phosphor-garage-duotone,832_768,20;phosphor-garage-fill,896_768,20;phosphor-garage-light,960_768,20;phosphor-garage-thin,0_832,20;phosphor-garage,64_832,20;phosphor-gas-can-bold,128_832,20;phosphor-gas-can-duotone,192_832,20;phosphor-gas-can-fill,256_832,20;phosphor-gas-can-light,320_832,20;phosphor-gas-can-thin,384_832,20;phosphor-gas-can,448_832,20;phosphor-gas-pump-bold,512_832,20;phosphor-gas-pump-duotone,576_832,20;phosphor-gas-pump-fill,640_832,20;phosphor-gas-pump-light,704_832,20;phosphor-gas-pump-thin,768_832,20;phosphor-gas-pump,832_832,20;phosphor-gauge-bold,896_832,20;phosphor-gauge-duotone,960_832,20;phosphor-gauge-fill,0_896,20;phosphor-gauge-light,64_896,20;phosphor-gauge-thin,128_896,20;phosphor-gauge,192_896,20;phosphor-gavel-bold,256_896,20;phosphor-gavel-duotone,320_896,20;phosphor-gavel-fill,384_896,20;phosphor-gavel-light,448_896,20;phosphor-gavel-thin,512_896,20;phosphor-gavel,576_896,20;phosphor-gear-bold,640_896,20;phosphor-gear-duotone,704_896,20;phosphor-gear-fill,768_896,20;phosphor-gear-fine-bold,832_896,20;phosphor-gear-fine-duotone,896_896,20;phosphor-gear-fine-fill,960_896,20;phosphor-gear-fine-light,0_960,20;phosphor-gear-fine-thin,64_960,20;phosphor-gear-fine,128_960,20;phosphor-gear-light,192_960,20;phosphor-gear-six-bold,256_960,20;phosphor-gear-six-duotone,320_960,20;phosphor-gear-six-fill,384_960,20;phosphor-gear-six-light,448_960,20;phosphor-gear-six-thin,512_960,20;phosphor-gear-six,576_960,20;phosphor-gear-thin,640_960,20;phosphor-gear,704_960,20;phosphor-gender-female-bold,768_960,20;phosphor-gender-female-duotone,832_960,20;phosphor-gender-female-fill,896_960,20;phosphor-gender-female-light,960_960,20;phosphor-gender-female-thin,0_0,21;phosphor-gender-female,64_0,21;phosphor-gender-intersex-bold,128_0,21;phosphor-gender-intersex-duotone,192_0,21;phosphor-gender-intersex-fill,256_0,21;phosphor-gender-intersex-light,320_0,21;phosphor-gender-intersex-thin,384_0,21;phosphor-gender-intersex,448_0,21;phosphor-gender-male-bold,512_0,21;phosphor-gender-male-duotone,576_0,21;phosphor-gender-male-fill,640_0,21;phosphor-gender-male-light,704_0,21;phosphor-gender-male-thin,768_0,21;phosphor-gender-male,832_0,21;phosphor-gender-neuter-bold,896_0,21;phosphor-gender-neuter-duotone,960_0,21;phosphor-gender-neuter-fill,0_64,21;phosphor-gender-neuter-light,64_64,21;phosphor-gender-neuter-thin,128_64,21;phosphor-gender-neuter,192_64,21;phosphor-gender-nonbinary-bold,256_64,21;phosphor-gender-nonbinary-duotone,320_64,21;phosphor-gender-nonbinary-fill,384_64,21;phosphor-gender-nonbinary-light,448_64,21;phosphor-gender-nonbinary-thin,512_64,21;phosphor-gender-nonbinary,576_64,21;phosphor-gender-transgender-bold,640_64,21;phosphor-gender-transgender-duotone,704_64,21;phosphor-gender-transgender-fill,768_64,21;phosphor-gender-transgender-light,832_64,21;phosphor-gender-transgender-thin,896_64,21;phosphor-gender-transgender,960_64,21;phosphor-ghost-bold,0_128,21;phosphor-ghost-duotone,64_128,21;phosphor-ghost-fill,128_128,21;phosphor-ghost-light,192_128,21;phosphor-ghost-thin,256_128,21;phosphor-ghost,320_128,21;phosphor-gif-bold,384_128,21;phosphor-gif-duotone,448_128,21;phosphor-gif-fill,512_128,21;phosphor-gif-light,576_128,21;phosphor-gif-thin,640_128,21;phosphor-gif,704_128,21;phosphor-gift-bold,768_128,21;phosphor-gift-duotone,832_128,21;phosphor-gift-fill,896_128,21;phosphor-gift-light,960_128,21;phosphor-gift-thin,0_192,21;phosphor-gift,64_192,21;phosphor-git-branch-bold,128_192,21;phosphor-git-branch-duotone,192_192,21;phosphor-git-branch-fill,256_192,21;phosphor-git-branch-light,320_192,21;phosphor-git-branch-thin,384_192,21;phosphor-git-branch,448_192,21;phosphor-git-commit-bold,512_192,21;phosphor-git-commit-duotone,576_192,21;phosphor-git-commit-fill,640_192,21;phosphor-git-commit-light,704_192,21;phosphor-git-commit-thin,768_192,21;phosphor-git-commit,832_192,21;phosphor-git-diff-bold,896_192,21;phosphor-git-diff-duotone,960_192,21;phosphor-git-diff-fill,0_256,21;phosphor-git-diff-light,64_256,21;phosphor-git-diff-thin,128_256,21;phosphor-git-diff,192_256,21;phosphor-git-fork-bold,256_256,21;phosphor-git-fork-duotone,320_256,21;phosphor-git-fork-fill,384_256,21;phosphor-git-fork-light,448_256,21;phosphor-git-fork-thin,512_256,21;phosphor-git-fork,576_256,21;phosphor-git-merge-bold,640_256,21;phosphor-git-merge-duotone,704_256,21;phosphor-git-merge-fill,768_256,21;phosphor-git-merge-light,832_256,21;phosphor-git-merge-thin,896_256,21;phosphor-git-merge,960_256,21;phosphor-git-pull-request-bold,0_320,21;phosphor-git-pull-request-duotone,64_320,21;phosphor-git-pull-request-fill,128_320,21;phosphor-git-pull-request-light,192_320,21;phosphor-git-pull-request-thin,256_320,21;phosphor-git-pull-request,320_320,21;phosphor-github-logo-bold,384_320,21;phosphor-github-logo-duotone,448_320,21;phosphor-github-logo-fill,512_320,21;phosphor-github-logo-light,576_320,21;phosphor-github-logo-thin,640_320,21;phosphor-github-logo,704_320,21;phosphor-gitlab-logo-bold,768_320,21;phosphor-gitlab-logo-duotone,832_320,21;phosphor-gitlab-logo-fill,896_320,21;phosphor-gitlab-logo-light,960_320,21;phosphor-gitlab-logo-simple-bold,0_384,21;phosphor-gitlab-logo-simple-duotone,64_384,21;phosphor-gitlab-logo-simple-fill,128_384,21;phosphor-gitlab-logo-simple-light,192_384,21;phosphor-gitlab-logo-simple-thin,256_384,21;phosphor-gitlab-logo-simple,320_384,21;phosphor-gitlab-logo-thin,384_384,21;phosphor-gitlab-logo,448_384,21;phosphor-globe-bold,512_384,21;phosphor-globe-duotone,576_384,21;phosphor-globe-fill,640_384,21;phosphor-globe-hemisphere-east-bold,704_384,21;phosphor-globe-hemisphere-east-duotone,768_384,21;phosphor-globe-hemisphere-east-fill,832_384,21;phosphor-globe-hemisphere-east-light,896_384,21;phosphor-globe-hemisphere-east-thin,960_384,21;phosphor-globe-hemisphere-east,0_448,21;phosphor-globe-hemisphere-west-bold,64_448,21;phosphor-globe-hemisphere-west-duotone,128_448,21;phosphor-globe-hemisphere-west-fill,192_448,21;phosphor-globe-hemisphere-west-light,256_448,21;phosphor-globe-hemisphere-west-thin,320_448,21;phosphor-globe-hemisphere-west,384_448,21;phosphor-globe-light,448_448,21;phosphor-globe-simple-bold,512_448,21;phosphor-globe-simple-duotone,576_448,21;phosphor-globe-simple-fill,640_448,21;phosphor-globe-simple-light,704_448,21;phosphor-globe-simple-thin,768_448,21;phosphor-globe-simple-x-bold,832_448,21;phosphor-globe-simple-x-duotone,896_448,21;phosphor-globe-simple-x-fill,960_448,21;phosphor-globe-simple-x-light,0_512,21;phosphor-globe-simple-x-thin,64_512,21;phosphor-globe-simple-x,128_512,21;phosphor-globe-simple,192_512,21;phosphor-globe-stand-bold,256_512,21;phosphor-globe-stand-duotone,320_512,21;phosphor-globe-stand-fill,384_512,21;phosphor-globe-stand-light,448_512,21;phosphor-globe-stand-thin,512_512,21;phosphor-globe-stand,576_512,21;phosphor-globe-thin,640_512,21;phosphor-globe-x-bold,704_512,21;phosphor-globe-x-duotone,768_512,21;phosphor-globe-x-fill,832_512,21;phosphor-globe-x-light,896_512,21;phosphor-globe-x-thin,960_512,21;phosphor-globe-x,0_576,21;phosphor-globe,64_576,21;phosphor-goggles-bold,128_576,21;phosphor-goggles-duotone,192_576,21;phosphor-goggles-fill,256_576,21;phosphor-goggles-light,320_576,21;phosphor-goggles-thin,384_576,21;phosphor-goggles,448_576,21;phosphor-golf-bold,512_576,21;phosphor-golf-duotone,576_576,21;phosphor-golf-fill,640_576,21;phosphor-golf-light,704_576,21;phosphor-golf-thin,768_576,21;phosphor-golf,832_576,21;phosphor-goodreads-logo-bold,896_576,21;phosphor-goodreads-logo-duotone,960_576,21;phosphor-goodreads-logo-fill,0_640,21;phosphor-goodreads-logo-light,64_640,21;phosphor-goodreads-logo-thin,128_640,21;phosphor-goodreads-logo,192_640,21;phosphor-google-cardboard-logo-bold,256_640,21;phosphor-google-cardboard-logo-duotone,320_640,21;phosphor-google-cardboard-logo-fill,384_640,21;phosphor-google-cardboard-logo-light,448_640,21;phosphor-google-cardboard-logo-thin,512_640,21;phosphor-google-cardboard-logo,576_640,21;phosphor-google-chrome-logo-bold,640_640,21;phosphor-google-chrome-logo-duotone,704_640,21;phosphor-google-chrome-logo-fill,768_640,21;phosphor-google-chrome-logo-light,832_640,21;phosphor-google-chrome-logo-thin,896_640,21;phosphor-google-chrome-logo,960_640,21;phosphor-google-drive-logo-bold,0_704,21;phosphor-google-drive-logo-duotone,64_704,21;phosphor-google-drive-logo-fill,128_704,21;phosphor-google-drive-logo-light,192_704,21;phosphor-google-drive-logo-thin,256_704,21;phosphor-google-drive-logo,320_704,21;phosphor-google-logo-bold,384_704,21;phosphor-google-logo-duotone,448_704,21;phosphor-google-logo-fill,512_704,21;phosphor-google-logo-light,576_704,21;phosphor-google-logo-thin,640_704,21;phosphor-google-logo,704_704,21;phosphor-google-photos-logo-bold,768_704,21;phosphor-google-photos-logo-duotone,832_704,21;phosphor-google-photos-logo-fill,896_704,21;phosphor-google-photos-logo-light,960_704,21;phosphor-google-photos-logo-thin,0_768,21;phosphor-google-photos-logo,64_768,21;phosphor-google-play-logo-bold,128_768,21;phosphor-google-play-logo-duotone,192_768,21;phosphor-google-play-logo-fill,256_768,21;phosphor-google-play-logo-light,320_768,21;phosphor-google-play-logo-thin,384_768,21;phosphor-google-play-logo,448_768,21;phosphor-google-podcasts-logo-bold,512_768,21;phosphor-google-podcasts-logo-duotone,576_768,21;phosphor-google-podcasts-logo-fill,640_768,21;phosphor-google-podcasts-logo-light,704_768,21;phosphor-google-podcasts-logo-thin,768_768,21;phosphor-google-podcasts-logo,832_768,21;phosphor-gps-bold,896_768,21;phosphor-gps-duotone,960_768,21;phosphor-gps-fill,0_832,21;phosphor-gps-fix-bold,64_832,21;phosphor-gps-fix-duotone,128_832,21;phosphor-gps-fix-fill,192_832,21;phosphor-gps-fix-light,256_832,21;phosphor-gps-fix-thin,320_832,21;phosphor-gps-fix,384_832,21;phosphor-gps-light,448_832,21;phosphor-gps-slash-bold,512_832,21;phosphor-gps-slash-duotone,576_832,21;phosphor-gps-slash-fill,640_832,21;phosphor-gps-slash-light,704_832,21;phosphor-gps-slash-thin,768_832,21;phosphor-gps-slash,832_832,21;phosphor-gps-thin,896_832,21;phosphor-gps,960_832,21;phosphor-gradient-bold,0_896,21;phosphor-gradient-duotone,64_896,21;phosphor-gradient-fill,128_896,21;phosphor-gradient-light,192_896,21;phosphor-gradient-thin,256_896,21;phosphor-gradient,320_896,21;phosphor-graduation-cap-bold,384_896,21;phosphor-graduation-cap-duotone,448_896,21;phosphor-graduation-cap-fill,512_896,21;phosphor-graduation-cap-light,576_896,21;phosphor-graduation-cap-thin,640_896,21;phosphor-graduation-cap,704_896,21;phosphor-grains-bold,768_896,21;phosphor-grains-duotone,832_896,21;phosphor-grains-fill,896_896,21;phosphor-grains-light,960_896,21;phosphor-grains-slash-bold,0_960,21;phosphor-grains-slash-duotone,64_960,21;phosphor-grains-slash-fill,128_960,21;phosphor-grains-slash-light,192_960,21;phosphor-grains-slash-thin,256_960,21;phosphor-grains-slash,320_960,21;phosphor-grains-thin,384_960,21;phosphor-grains,448_960,21;phosphor-graph-bold,512_960,21;phosphor-graph-duotone,576_960,21;phosphor-graph-fill,640_960,21;phosphor-graph-light,704_960,21;phosphor-graph-thin,768_960,21;phosphor-graph,832_960,21;phosphor-graphics-card-bold,896_960,21;phosphor-graphics-card-duotone,960_960,21;phosphor-graphics-card-fill,0_0,22;phosphor-graphics-card-light,64_0,22;phosphor-graphics-card-thin,128_0,22;phosphor-graphics-card,192_0,22;phosphor-greater-than-bold,256_0,22;phosphor-greater-than-duotone,320_0,22;phosphor-greater-than-fill,384_0,22;phosphor-greater-than-light,448_0,22;phosphor-greater-than-or-equal-bold,512_0,22;phosphor-greater-than-or-equal-duotone,576_0,22;phosphor-greater-than-or-equal-fill,640_0,22;phosphor-greater-than-or-equal-light,704_0,22;phosphor-greater-than-or-equal-thin,768_0,22;phosphor-greater-than-or-equal,832_0,22;phosphor-greater-than-thin,896_0,22;phosphor-greater-than,960_0,22;phosphor-grid-four-bold,0_64,22;phosphor-grid-four-duotone,64_64,22;phosphor-grid-four-fill,128_64,22;phosphor-grid-four-light,192_64,22;phosphor-grid-four-thin,256_64,22;phosphor-grid-four,320_64,22;phosphor-grid-nine-bold,384_64,22;phosphor-grid-nine-duotone,448_64,22;phosphor-grid-nine-fill,512_64,22;phosphor-grid-nine-light,576_64,22;phosphor-grid-nine-thin,640_64,22;phosphor-grid-nine,704_64,22;phosphor-guitar-bold,768_64,22;phosphor-guitar-duotone,832_64,22;phosphor-guitar-fill,896_64,22;phosphor-guitar-light,960_64,22;phosphor-guitar-thin,0_128,22;phosphor-guitar,64_128,22;phosphor-hair-dryer-bold,128_128,22;phosphor-hair-dryer-duotone,192_128,22;phosphor-hair-dryer-fill,256_128,22;phosphor-hair-dryer-light,320_128,22;phosphor-hair-dryer-thin,384_128,22;phosphor-hair-dryer,448_128,22;phosphor-hamburger-bold,512_128,22;phosphor-hamburger-duotone,576_128,22;phosphor-hamburger-fill,640_128,22;phosphor-hamburger-light,704_128,22;phosphor-hamburger-thin,768_128,22;phosphor-hamburger,832_128,22;phosphor-hammer-bold,896_128,22;phosphor-hammer-duotone,960_128,22;phosphor-hammer-fill,0_192,22;phosphor-hammer-light,64_192,22;phosphor-hammer-thin,128_192,22;phosphor-hammer,192_192,22;phosphor-hand-arrow-down-bold,256_192,22;phosphor-hand-arrow-down-duotone,320_192,22;phosphor-hand-arrow-down-fill,384_192,22;phosphor-hand-arrow-down-light,448_192,22;phosphor-hand-arrow-down-thin,512_192,22;phosphor-hand-arrow-down,576_192,22;phosphor-hand-arrow-up-bold,640_192,22;phosphor-hand-arrow-up-duotone,704_192,22;phosphor-hand-arrow-up-fill,768_192,22;phosphor-hand-arrow-up-light,832_192,22;phosphor-hand-arrow-up-thin,896_192,22;phosphor-hand-arrow-up,960_192,22;phosphor-hand-bold,0_256,22;phosphor-hand-coins-bold,64_256,22;phosphor-hand-coins-duotone,128_256,22;phosphor-hand-coins-fill,192_256,22;phosphor-hand-coins-light,256_256,22;phosphor-hand-coins-thin,320_256,22;phosphor-hand-coins,384_256,22;phosphor-hand-deposit-bold,448_256,22;phosphor-hand-deposit-duotone,512_256,22;phosphor-hand-deposit-fill,576_256,22;phosphor-hand-deposit-light,640_256,22;phosphor-hand-deposit-thin,704_256,22;phosphor-hand-deposit,768_256,22;phosphor-hand-duotone,832_256,22;phosphor-hand-eye-bold,896_256,22;phosphor-hand-eye-duotone,960_256,22;phosphor-hand-eye-fill,0_320,22;phosphor-hand-eye-light,64_320,22;phosphor-hand-eye-thin,128_320,22;phosphor-hand-eye,192_320,22;phosphor-hand-fill,256_320,22;phosphor-hand-fist-bold,320_320,22;phosphor-hand-fist-duotone,384_320,22;phosphor-hand-fist-fill,448_320,22;phosphor-hand-fist-light,512_320,22;phosphor-hand-fist-thin,576_320,22;phosphor-hand-fist,640_320,22;phosphor-hand-grabbing-bold,704_320,22;phosphor-hand-grabbing-duotone,768_320,22;phosphor-hand-grabbing-fill,832_320,22;phosphor-hand-grabbing-light,896_320,22;phosphor-hand-grabbing-thin,960_320,22;phosphor-hand-grabbing,0_384,22;phosphor-hand-heart-bold,64_384,22;phosphor-hand-heart-duotone,128_384,22;phosphor-hand-heart-fill,192_384,22;phosphor-hand-heart-light,256_384,22;phosphor-hand-heart-thin,320_384,22;phosphor-hand-heart,384_384,22;phosphor-hand-light,448_384,22;phosphor-hand-palm-bold,512_384,22;phosphor-hand-palm-duotone,576_384,22;phosphor-hand-palm-fill,640_384,22;phosphor-hand-palm-light,704_384,22;phosphor-hand-palm-thin,768_384,22;phosphor-hand-palm,832_384,22;phosphor-hand-peace-bold,896_384,22;phosphor-hand-peace-duotone,960_384,22;phosphor-hand-peace-fill,0_448,22;phosphor-hand-peace-light,64_448,22;phosphor-hand-peace-thin,128_448,22;phosphor-hand-peace,192_448,22;phosphor-hand-pointing-bold,256_448,22;phosphor-hand-pointing-duotone,320_448,22;phosphor-hand-pointing-fill,384_448,22;phosphor-hand-pointing-light,448_448,22;phosphor-hand-pointing-thin,512_448,22;phosphor-hand-pointing,576_448,22;phosphor-hand-soap-bold,640_448,22;phosphor-hand-soap-duotone,704_448,22;phosphor-hand-soap-fill,768_448,22;phosphor-hand-soap-light,832_448,22;phosphor-hand-soap-thin,896_448,22;phosphor-hand-soap,960_448,22;phosphor-hand-swipe-left-bold,0_512,22;phosphor-hand-swipe-left-duotone,64_512,22;phosphor-hand-swipe-left-fill,128_512,22;phosphor-hand-swipe-left-light,192_512,22;phosphor-hand-swipe-left-thin,256_512,22;phosphor-hand-swipe-left,320_512,22;phosphor-hand-swipe-right-bold,384_512,22;phosphor-hand-swipe-right-duotone,448_512,22;phosphor-hand-swipe-right-fill,512_512,22;phosphor-hand-swipe-right-light,576_512,22;phosphor-hand-swipe-right-thin,640_512,22;phosphor-hand-swipe-right,704_512,22;phosphor-hand-tap-bold,768_512,22;phosphor-hand-tap-duotone,832_512,22;phosphor-hand-tap-fill,896_512,22;phosphor-hand-tap-light,960_512,22;phosphor-hand-tap-thin,0_576,22;phosphor-hand-tap,64_576,22;phosphor-hand-thin,128_576,22;phosphor-hand-waving-bold,192_576,22;phosphor-hand-waving-duotone,256_576,22;phosphor-hand-waving-fill,320_576,22;phosphor-hand-waving-light,384_576,22;phosphor-hand-waving-thin,448_576,22;phosphor-hand-waving,512_576,22;phosphor-hand-withdraw-bold,576_576,22;phosphor-hand-withdraw-duotone,640_576,22;phosphor-hand-withdraw-fill,704_576,22;phosphor-hand-withdraw-light,768_576,22;phosphor-hand-withdraw-thin,832_576,22;phosphor-hand-withdraw,896_576,22;phosphor-hand,960_576,22;phosphor-handbag-bold,0_640,22;phosphor-handbag-duotone,64_640,22;phosphor-handbag-fill,128_640,22;phosphor-handbag-light,192_640,22;phosphor-handbag-simple-bold,256_640,22;phosphor-handbag-simple-duotone,320_640,22;phosphor-handbag-simple-fill,384_640,22;phosphor-handbag-simple-light,448_640,22;phosphor-handbag-simple-thin,512_640,22;phosphor-handbag-simple,576_640,22;phosphor-handbag-thin,640_640,22;phosphor-handbag,704_640,22;phosphor-hands-clapping-bold,768_640,22;phosphor-hands-clapping-duotone,832_640,22;phosphor-hands-clapping-fill,896_640,22;phosphor-hands-clapping-light,960_640,22;phosphor-hands-clapping-thin,0_704,22;phosphor-hands-clapping,64_704,22;phosphor-hands-praying-bold,128_704,22;phosphor-hands-praying-duotone,192_704,22;phosphor-hands-praying-fill,256_704,22;phosphor-hands-praying-light,320_704,22;phosphor-hands-praying-thin,384_704,22;phosphor-hands-praying,448_704,22;phosphor-handshake-bold,512_704,22;phosphor-handshake-duotone,576_704,22;phosphor-handshake-fill,640_704,22;phosphor-handshake-light,704_704,22;phosphor-handshake-thin,768_704,22;phosphor-handshake,832_704,22;phosphor-hard-drive-bold,896_704,22;phosphor-hard-drive-duotone,960_704,22;phosphor-hard-drive-fill,0_768,22;phosphor-hard-drive-light,64_768,22;phosphor-hard-drive-thin,128_768,22;phosphor-hard-drive,192_768,22;phosphor-hard-drives-bold,256_768,22;phosphor-hard-drives-duotone,320_768,22;phosphor-hard-drives-fill,384_768,22;phosphor-hard-drives-light,448_768,22;phosphor-hard-drives-thin,512_768,22;phosphor-hard-drives,576_768,22;phosphor-hard-hat-bold,640_768,22;phosphor-hard-hat-duotone,704_768,22;phosphor-hard-hat-fill,768_768,22;phosphor-hard-hat-light,832_768,22;phosphor-hard-hat-thin,896_768,22;phosphor-hard-hat,960_768,22;phosphor-hash-bold,0_832,22;phosphor-hash-duotone,64_832,22;phosphor-hash-fill,128_832,22;phosphor-hash-light,192_832,22;phosphor-hash-straight-bold,256_832,22;phosphor-hash-straight-duotone,320_832,22;phosphor-hash-straight-fill,384_832,22;phosphor-hash-straight-light,448_832,22;phosphor-hash-straight-thin,512_832,22;phosphor-hash-straight,576_832,22;phosphor-hash-thin,640_832,22;phosphor-hash,704_832,22;phosphor-head-circuit-bold,768_832,22;phosphor-head-circuit-duotone,832_832,22;phosphor-head-circuit-fill,896_832,22;phosphor-head-circuit-light,960_832,22;phosphor-head-circuit-thin,0_896,22;phosphor-head-circuit,64_896,22;phosphor-headlights-bold,128_896,22;phosphor-headlights-duotone,192_896,22;phosphor-headlights-fill,256_896,22;phosphor-headlights-light,320_896,22;phosphor-headlights-thin,384_896,22;phosphor-headlights,448_896,22;phosphor-headphones-bold,512_896,22;phosphor-headphones-duotone,576_896,22;phosphor-headphones-fill,640_896,22;phosphor-headphones-light,704_896,22;phosphor-headphones-thin,768_896,22;phosphor-headphones,832_896,22;phosphor-headset-bold,896_896,22;phosphor-headset-duotone,960_896,22;phosphor-headset-fill,0_960,22;phosphor-headset-light,64_960,22;phosphor-headset-thin,128_960,22;phosphor-headset,192_960,22;phosphor-heart-bold,256_960,22;phosphor-heart-break-bold,320_960,22;phosphor-heart-break-duotone,384_960,22;phosphor-heart-break-fill,448_960,22;phosphor-heart-break-light,512_960,22;phosphor-heart-break-thin,576_960,22;phosphor-heart-break,640_960,22;phosphor-heart-duotone,704_960,22;phosphor-heart-fill,768_960,22;phosphor-heart-half-bold,832_960,22;phosphor-heart-half-duotone,896_960,22;phosphor-heart-half-fill,960_960,22;phosphor-heart-half-light,0_0,23;phosphor-heart-half-thin,64_0,23;phosphor-heart-half,128_0,23;phosphor-heart-light,192_0,23;phosphor-heart-straight-bold,256_0,23;phosphor-heart-straight-break-bold,320_0,23;phosphor-heart-straight-break-duotone,384_0,23;phosphor-heart-straight-break-fill,448_0,23;phosphor-heart-straight-break-light,512_0,23;phosphor-heart-straight-break-thin,576_0,23;phosphor-heart-straight-break,640_0,23;phosphor-heart-straight-duotone,704_0,23;phosphor-heart-straight-fill,768_0,23;phosphor-heart-straight-light,832_0,23;phosphor-heart-straight-thin,896_0,23;phosphor-heart-straight,960_0,23;phosphor-heart-thin,0_64,23;phosphor-heart,64_64,23;phosphor-heartbeat-bold,128_64,23;phosphor-heartbeat-duotone,192_64,23;phosphor-heartbeat-fill,256_64,23;phosphor-heartbeat-light,320_64,23;phosphor-heartbeat-thin,384_64,23;phosphor-heartbeat,448_64,23;phosphor-hexagon-bold,512_64,23;phosphor-hexagon-duotone,576_64,23;phosphor-hexagon-fill,640_64,23;phosphor-hexagon-light,704_64,23;phosphor-hexagon-thin,768_64,23;phosphor-hexagon,832_64,23;phosphor-high-definition-bold,896_64,23;phosphor-high-definition-duotone,960_64,23;phosphor-high-definition-fill,0_128,23;phosphor-high-definition-light,64_128,23;phosphor-high-definition-thin,128_128,23;phosphor-high-definition,192_128,23;phosphor-high-heel-bold,256_128,23;phosphor-high-heel-duotone,320_128,23;phosphor-high-heel-fill,384_128,23;phosphor-high-heel-light,448_128,23;phosphor-high-heel-thin,512_128,23;phosphor-high-heel,576_128,23;phosphor-highlighter-bold,640_128,23;phosphor-highlighter-circle-bold,704_128,23;phosphor-highlighter-circle-duotone,768_128,23;phosphor-highlighter-circle-fill,832_128,23;phosphor-highlighter-circle-light,896_128,23;phosphor-highlighter-circle-thin,960_128,23;phosphor-highlighter-circle,0_192,23;phosphor-highlighter-duotone,64_192,23;phosphor-highlighter-fill,128_192,23;phosphor-highlighter-light,192_192,23;phosphor-highlighter-thin,256_192,23;phosphor-highlighter,320_192,23;phosphor-hockey-bold,384_192,23;phosphor-hockey-duotone,448_192,23;phosphor-hockey-fill,512_192,23;phosphor-hockey-light,576_192,23;phosphor-hockey-thin,640_192,23;phosphor-hockey,704_192,23;phosphor-hoodie-bold,768_192,23;phosphor-hoodie-duotone,832_192,23;phosphor-hoodie-fill,896_192,23;phosphor-hoodie-light,960_192,23;phosphor-hoodie-thin,0_256,23;phosphor-hoodie,64_256,23;phosphor-horse-bold,128_256,23;phosphor-horse-duotone,192_256,23;phosphor-horse-fill,256_256,23;phosphor-horse-light,320_256,23;phosphor-horse-thin,384_256,23;phosphor-horse,448_256,23;phosphor-hospital-bold,512_256,23;phosphor-hospital-duotone,576_256,23;phosphor-hospital-fill,640_256,23;phosphor-hospital-light,704_256,23;phosphor-hospital-thin,768_256,23;phosphor-hospital,832_256,23;phosphor-hourglass-bold,896_256,23;phosphor-hourglass-duotone,960_256,23;phosphor-hourglass-fill,0_320,23;phosphor-hourglass-high-bold,64_320,23;phosphor-hourglass-high-duotone,128_320,23;phosphor-hourglass-high-fill,192_320,23;phosphor-hourglass-high-light,256_320,23;phosphor-hourglass-high-thin,320_320,23;phosphor-hourglass-high,384_320,23;phosphor-hourglass-light,448_320,23;phosphor-hourglass-low-bold,512_320,23;phosphor-hourglass-low-duotone,576_320,23;phosphor-hourglass-low-fill,640_320,23;phosphor-hourglass-low-light,704_320,23;phosphor-hourglass-low-thin,768_320,23;phosphor-hourglass-low,832_320,23;phosphor-hourglass-medium-bold,896_320,23;phosphor-hourglass-medium-duotone,960_320,23;phosphor-hourglass-medium-fill,0_384,23;phosphor-hourglass-medium-light,64_384,23;phosphor-hourglass-medium-thin,128_384,23;phosphor-hourglass-medium,192_384,23;phosphor-hourglass-simple-bold,256_384,23;phosphor-hourglass-simple-duotone,320_384,23;phosphor-hourglass-simple-fill,384_384,23;phosphor-hourglass-simple-high-bold,448_384,23;phosphor-hourglass-simple-high-duotone,512_384,23;phosphor-hourglass-simple-high-fill,576_384,23;phosphor-hourglass-simple-high-light,640_384,23;phosphor-hourglass-simple-high-thin,704_384,23;phosphor-hourglass-simple-high,768_384,23;phosphor-hourglass-simple-light,832_384,23;phosphor-hourglass-simple-low-bold,896_384,23;phosphor-hourglass-simple-low-duotone,960_384,23;phosphor-hourglass-simple-low-fill,0_448,23;phosphor-hourglass-simple-low-light,64_448,23;phosphor-hourglass-simple-low-thin,128_448,23;phosphor-hourglass-simple-low,192_448,23;phosphor-hourglass-simple-medium-bold,256_448,23;phosphor-hourglass-simple-medium-duotone,320_448,23;phosphor-hourglass-simple-medium-fill,384_448,23;phosphor-hourglass-simple-medium-light,448_448,23;phosphor-hourglass-simple-medium-thin,512_448,23;phosphor-hourglass-simple-medium,576_448,23;phosphor-hourglass-simple-thin,640_448,23;phosphor-hourglass-simple,704_448,23;phosphor-hourglass-thin,768_448,23;phosphor-hourglass,832_448,23;phosphor-house-bold,896_448,23;phosphor-house-duotone,960_448,23;phosphor-house-fill,0_512,23;phosphor-house-light,64_512,23;phosphor-house-line-bold,128_512,23;phosphor-house-line-duotone,192_512,23;phosphor-house-line-fill,256_512,23;phosphor-house-line-light,320_512,23;phosphor-house-line-thin,384_512,23;phosphor-house-line,448_512,23;phosphor-house-simple-bold,512_512,23;phosphor-house-simple-duotone,576_512,23;phosphor-house-simple-fill,640_512,23;phosphor-house-simple-light,704_512,23;phosphor-house-simple-thin,768_512,23;phosphor-house-simple,832_512,23;phosphor-house-thin,896_512,23;phosphor-house,960_512,23;phosphor-hurricane-bold,0_576,23;phosphor-hurricane-duotone,64_576,23;phosphor-hurricane-fill,128_576,23;phosphor-hurricane-light,192_576,23;phosphor-hurricane-thin,256_576,23;phosphor-hurricane,320_576,23;phosphor-ice-cream-bold,384_576,23;phosphor-ice-cream-duotone,448_576,23;phosphor-ice-cream-fill,512_576,23;phosphor-ice-cream-light,576_576,23;phosphor-ice-cream-thin,640_576,23;phosphor-ice-cream,704_576,23;phosphor-identification-badge-bold,768_576,23;phosphor-identification-badge-duotone,832_576,23;phosphor-identification-badge-fill,896_576,23;phosphor-identification-badge-light,960_576,23;phosphor-identification-badge-thin,0_640,23;phosphor-identification-badge,64_640,23;phosphor-identification-card-bold,128_640,23;phosphor-identification-card-duotone,192_640,23;phosphor-identification-card-fill,256_640,23;phosphor-identification-card-light,320_640,23;phosphor-identification-card-thin,384_640,23;phosphor-identification-card,448_640,23;phosphor-image-bold,512_640,23;phosphor-image-broken-bold,576_640,23;phosphor-image-broken-duotone,640_640,23;phosphor-image-broken-fill,704_640,23;phosphor-image-broken-light,768_640,23;phosphor-image-broken-thin,832_640,23;phosphor-image-broken,896_640,23;phosphor-image-duotone,960_640,23;phosphor-image-fill,0_704,23;phosphor-image-light,64_704,23;phosphor-image-square-bold,128_704,23;phosphor-image-square-duotone,192_704,23;phosphor-image-square-fill,256_704,23;phosphor-image-square-light,320_704,23;phosphor-image-square-thin,384_704,23;phosphor-image-square,448_704,23;phosphor-image-thin,512_704,23;phosphor-image,576_704,23;phosphor-images-bold,640_704,23;phosphor-images-duotone,704_704,23;phosphor-images-fill,768_704,23;phosphor-images-light,832_704,23;phosphor-images-square-bold,896_704,23;phosphor-images-square-duotone,960_704,23;phosphor-images-square-fill,0_768,23;phosphor-images-square-light,64_768,23;phosphor-images-square-thin,128_768,23;phosphor-images-square,192_768,23;phosphor-images-thin,256_768,23;phosphor-images,320_768,23;phosphor-infinity-bold,384_768,23;phosphor-infinity-duotone,448_768,23;phosphor-infinity-fill,512_768,23;phosphor-infinity-light,576_768,23;phosphor-infinity-thin,640_768,23;phosphor-infinity,704_768,23;phosphor-info-bold,768_768,23;phosphor-info-duotone,832_768,23;phosphor-info-fill,896_768,23;phosphor-info-light,960_768,23;phosphor-info-thin,0_832,23;phosphor-info,64_832,23;phosphor-instagram-logo-bold,128_832,23;phosphor-instagram-logo-duotone,192_832,23;phosphor-instagram-logo-fill,256_832,23;phosphor-instagram-logo-light,320_832,23;phosphor-instagram-logo-thin,384_832,23;phosphor-instagram-logo,448_832,23;phosphor-intersect-bold,512_832,23;phosphor-intersect-duotone,576_832,23;phosphor-intersect-fill,640_832,23;phosphor-intersect-light,704_832,23;phosphor-intersect-square-bold,768_832,23;phosphor-intersect-square-duotone,832_832,23;phosphor-intersect-square-fill,896_832,23;phosphor-intersect-square-light,960_832,23;phosphor-intersect-square-thin,0_896,23;phosphor-intersect-square,64_896,23;phosphor-intersect-thin,128_896,23;phosphor-intersect-three-bold,192_896,23;phosphor-intersect-three-duotone,256_896,23;phosphor-intersect-three-fill,320_896,23;phosphor-intersect-three-light,384_896,23;phosphor-intersect-three-thin,448_896,23;phosphor-intersect-three,512_896,23;phosphor-intersect,576_896,23;phosphor-intersection-bold,640_896,23;phosphor-intersection-duotone,704_896,23;phosphor-intersection-fill,768_896,23;phosphor-intersection-light,832_896,23;phosphor-intersection-thin,896_896,23;phosphor-intersection,960_896,23;phosphor-invoice-bold,0_960,23;phosphor-invoice-duotone,64_960,23;phosphor-invoice-fill,128_960,23;phosphor-invoice-light,192_960,23;phosphor-invoice-thin,256_960,23;phosphor-invoice,320_960,23;phosphor-island-bold,384_960,23;phosphor-island-duotone,448_960,23;phosphor-island-fill,512_960,23;phosphor-island-light,576_960,23;phosphor-island-thin,640_960,23;phosphor-island,704_960,23;phosphor-jar-bold,768_960,23;phosphor-jar-duotone,832_960,23;phosphor-jar-fill,896_960,23;phosphor-jar-label-bold,960_960,23;phosphor-jar-label-duotone,0_0,24;phosphor-jar-label-fill,64_0,24;phosphor-jar-label-light,128_0,24;phosphor-jar-label-thin,192_0,24;phosphor-jar-label,256_0,24;phosphor-jar-light,320_0,24;phosphor-jar-thin,384_0,24;phosphor-jar,448_0,24;phosphor-jeep-bold,512_0,24;phosphor-jeep-duotone,576_0,24;phosphor-jeep-fill,640_0,24;phosphor-jeep-light,704_0,24;phosphor-jeep-thin,768_0,24;phosphor-jeep,832_0,24;phosphor-joystick-bold,896_0,24;phosphor-joystick-duotone,960_0,24;phosphor-joystick-fill,0_64,24;phosphor-joystick-light,64_64,24;phosphor-joystick-thin,128_64,24;phosphor-joystick,192_64,24;phosphor-kanban-bold,256_64,24;phosphor-kanban-duotone,320_64,24;phosphor-kanban-fill,384_64,24;phosphor-kanban-light,448_64,24;phosphor-kanban-thin,512_64,24;phosphor-kanban,576_64,24;phosphor-key-bold,640_64,24;phosphor-key-duotone,704_64,24;phosphor-key-fill,768_64,24;phosphor-key-light,832_64,24;phosphor-key-return-bold,896_64,24;phosphor-key-return-duotone,960_64,24;phosphor-key-return-fill,0_128,24;phosphor-key-return-light,64_128,24;phosphor-key-return-thin,128_128,24;phosphor-key-return,192_128,24;phosphor-key-thin,256_128,24;phosphor-key,320_128,24;phosphor-keyboard-bold,384_128,24;phosphor-keyboard-duotone,448_128,24;phosphor-keyboard-fill,512_128,24;phosphor-keyboard-light,576_128,24;phosphor-keyboard-thin,640_128,24;phosphor-keyboard,704_128,24;phosphor-keyhole-bold,768_128,24;phosphor-keyhole-duotone,832_128,24;phosphor-keyhole-fill,896_128,24;phosphor-keyhole-light,960_128,24;phosphor-keyhole-thin,0_192,24;phosphor-keyhole,64_192,24;phosphor-knife-bold,128_192,24;phosphor-knife-duotone,192_192,24;phosphor-knife-fill,256_192,24;phosphor-knife-light,320_192,24;phosphor-knife-thin,384_192,24;phosphor-knife,448_192,24;phosphor-ladder-bold,512_192,24;phosphor-ladder-duotone,576_192,24;phosphor-ladder-fill,640_192,24;phosphor-ladder-light,704_192,24;phosphor-ladder-simple-bold,768_192,24;phosphor-ladder-simple-duotone,832_192,24;phosphor-ladder-simple-fill,896_192,24;phosphor-ladder-simple-light,960_192,24;phosphor-ladder-simple-thin,0_256,24;phosphor-ladder-simple,64_256,24;phosphor-ladder-thin,128_256,24;phosphor-ladder,192_256,24;phosphor-lamp-bold,256_256,24;phosphor-lamp-duotone,320_256,24;phosphor-lamp-fill,384_256,24;phosphor-lamp-light,448_256,24;phosphor-lamp-pendant-bold,512_256,24;phosphor-lamp-pendant-duotone,576_256,24;phosphor-lamp-pendant-fill,640_256,24;phosphor-lamp-pendant-light,704_256,24;phosphor-lamp-pendant-thin,768_256,24;phosphor-lamp-pendant,832_256,24;phosphor-lamp-thin,896_256,24;phosphor-lamp,960_256,24;phosphor-laptop-bold,0_320,24;phosphor-laptop-duotone,64_320,24;phosphor-laptop-fill,128_320,24;phosphor-laptop-light,192_320,24;phosphor-laptop-thin,256_320,24;phosphor-laptop,320_320,24;phosphor-lasso-bold,384_320,24;phosphor-lasso-duotone,448_320,24;phosphor-lasso-fill,512_320,24;phosphor-lasso-light,576_320,24;phosphor-lasso-thin,640_320,24;phosphor-lasso,704_320,24;phosphor-lastfm-logo-bold,768_320,24;phosphor-lastfm-logo-duotone,832_320,24;phosphor-lastfm-logo-fill,896_320,24;phosphor-lastfm-logo-light,960_320,24;phosphor-lastfm-logo-thin,0_384,24;phosphor-lastfm-logo,64_384,24;phosphor-layout-bold,128_384,24;phosphor-layout-duotone,192_384,24;phosphor-layout-fill,256_384,24;phosphor-layout-light,320_384,24;phosphor-layout-thin,384_384,24;phosphor-layout,448_384,24;phosphor-leaf-bold,512_384,24;phosphor-leaf-duotone,576_384,24;phosphor-leaf-fill,640_384,24;phosphor-leaf-light,704_384,24;phosphor-leaf-thin,768_384,24;phosphor-leaf,832_384,24;phosphor-lectern-bold,896_384,24;phosphor-lectern-duotone,960_384,24;phosphor-lectern-fill,0_448,24;phosphor-lectern-light,64_448,24;phosphor-lectern-thin,128_448,24;phosphor-lectern,192_448,24;phosphor-lego-bold,256_448,24;phosphor-lego-duotone,320_448,24;phosphor-lego-fill,384_448,24;phosphor-lego-light,448_448,24;phosphor-lego-smiley-bold,512_448,24;phosphor-lego-smiley-duotone,576_448,24;phosphor-lego-smiley-fill,640_448,24;phosphor-lego-smiley-light,704_448,24;phosphor-lego-smiley-thin,768_448,24;phosphor-lego-smiley,832_448,24;phosphor-lego-thin,896_448,24;phosphor-lego,960_448,24;phosphor-less-than-bold,0_512,24;phosphor-less-than-duotone,64_512,24;phosphor-less-than-fill,128_512,24;phosphor-less-than-light,192_512,24;phosphor-less-than-or-equal-bold,256_512,24;phosphor-less-than-or-equal-duotone,320_512,24;phosphor-less-than-or-equal-fill,384_512,24;phosphor-less-than-or-equal-light,448_512,24;phosphor-less-than-or-equal-thin,512_512,24;phosphor-less-than-or-equal,576_512,24;phosphor-less-than-thin,640_512,24;phosphor-less-than,704_512,24;phosphor-letter-circle-h-bold,768_512,24;phosphor-letter-circle-h-duotone,832_512,24;phosphor-letter-circle-h-fill,896_512,24;phosphor-letter-circle-h-light,960_512,24;phosphor-letter-circle-h-thin,0_576,24;phosphor-letter-circle-h,64_576,24;phosphor-letter-circle-p-bold,128_576,24;phosphor-letter-circle-p-duotone,192_576,24;phosphor-letter-circle-p-fill,256_576,24;phosphor-letter-circle-p-light,320_576,24;phosphor-letter-circle-p-thin,384_576,24;phosphor-letter-circle-p,448_576,24;phosphor-letter-circle-v-bold,512_576,24;phosphor-letter-circle-v-duotone,576_576,24;phosphor-letter-circle-v-fill,640_576,24;phosphor-letter-circle-v-light,704_576,24;phosphor-letter-circle-v-thin,768_576,24;phosphor-letter-circle-v,832_576,24;phosphor-lifebuoy-bold,896_576,24;phosphor-lifebuoy-duotone,960_576,24;phosphor-lifebuoy-fill,0_640,24;phosphor-lifebuoy-light,64_640,24;phosphor-lifebuoy-thin,128_640,24;phosphor-lifebuoy,192_640,24;phosphor-lightbulb-bold,256_640,24;phosphor-lightbulb-duotone,320_640,24;phosphor-lightbulb-filament-bold,384_640,24;phosphor-lightbulb-filament-duotone,448_640,24;phosphor-lightbulb-filament-fill,512_640,24;phosphor-lightbulb-filament-light,576_640,24;phosphor-lightbulb-filament-thin,640_640,24;phosphor-lightbulb-filament,704_640,24;phosphor-lightbulb-fill,768_640,24;phosphor-lightbulb-light,832_640,24;phosphor-lightbulb-thin,896_640,24;phosphor-lightbulb,960_640,24;phosphor-lighthouse-bold,0_704,24;phosphor-lighthouse-duotone,64_704,24;phosphor-lighthouse-fill,128_704,24;phosphor-lighthouse-light,192_704,24;phosphor-lighthouse-thin,256_704,24;phosphor-lighthouse,320_704,24;phosphor-lightning-a-bold,384_704,24;phosphor-lightning-a-duotone,448_704,24;phosphor-lightning-a-fill,512_704,24;phosphor-lightning-a-light,576_704,24;phosphor-lightning-a-thin,640_704,24;phosphor-lightning-a,704_704,24;phosphor-lightning-bold,768_704,24;phosphor-lightning-duotone,832_704,24;phosphor-lightning-fill,896_704,24;phosphor-lightning-light,960_704,24;phosphor-lightning-slash-bold,0_768,24;phosphor-lightning-slash-duotone,64_768,24;phosphor-lightning-slash-fill,128_768,24;phosphor-lightning-slash-light,192_768,24;phosphor-lightning-slash-thin,256_768,24;phosphor-lightning-slash,320_768,24;phosphor-lightning-thin,384_768,24;phosphor-lightning,448_768,24;phosphor-line-segment-bold,512_768,24;phosphor-line-segment-duotone,576_768,24;phosphor-line-segment-fill,640_768,24;phosphor-line-segment-light,704_768,24;phosphor-line-segment-thin,768_768,24;phosphor-line-segment,832_768,24;phosphor-line-segments-bold,896_768,24;phosphor-line-segments-duotone,960_768,24;phosphor-line-segments-fill,0_832,24;phosphor-line-segments-light,64_832,24;phosphor-line-segments-thin,128_832,24;phosphor-line-segments,192_832,24;phosphor-line-vertical-bold,256_832,24;phosphor-line-vertical-duotone,320_832,24;phosphor-line-vertical-fill,384_832,24;phosphor-line-vertical-light,448_832,24;phosphor-line-vertical-thin,512_832,24;phosphor-line-vertical,576_832,24;phosphor-link-bold,640_832,24;phosphor-link-break-bold,704_832,24;phosphor-link-break-duotone,768_832,24;phosphor-link-break-fill,832_832,24;phosphor-link-break-light,896_832,24;phosphor-link-break-thin,960_832,24;phosphor-link-break,0_896,24;phosphor-link-duotone,64_896,24;phosphor-link-fill,128_896,24;phosphor-link-light,192_896,24;phosphor-link-simple-bold,256_896,24;phosphor-link-simple-break-bold,320_896,24;phosphor-link-simple-break-duotone,384_896,24;phosphor-link-simple-break-fill,448_896,24;phosphor-link-simple-break-light,512_896,24;phosphor-link-simple-break-thin,576_896,24;phosphor-link-simple-break,640_896,24;phosphor-link-simple-duotone,704_896,24;phosphor-link-simple-fill,768_896,24;phosphor-link-simple-horizontal-bold,832_896,24;phosphor-link-simple-horizontal-break-bold,896_896,24;phosphor-link-simple-horizontal-break-duotone,960_896,24;phosphor-link-simple-horizontal-break-fill,0_960,24;phosphor-link-simple-horizontal-break-light,64_960,24;phosphor-link-simple-horizontal-break-thin,128_960,24;phosphor-link-simple-horizontal-break,192_960,24;phosphor-link-simple-horizontal-duotone,256_960,24;phosphor-link-simple-horizontal-fill,320_960,24;phosphor-link-simple-horizontal-light,384_960,24;phosphor-link-simple-horizontal-thin,448_960,24;phosphor-link-simple-horizontal,512_960,24;phosphor-link-simple-light,576_960,24;phosphor-link-simple-thin,640_960,24;phosphor-link-simple,704_960,24;phosphor-link-thin,768_960,24;phosphor-link,832_960,24;phosphor-linkedin-logo-bold,896_960,24;phosphor-linkedin-logo-duotone,960_960,24;phosphor-linkedin-logo-fill,0_0,25;phosphor-linkedin-logo-light,64_0,25;phosphor-linkedin-logo-thin,128_0,25;phosphor-linkedin-logo,192_0,25;phosphor-linktree-logo-bold,256_0,25;phosphor-linktree-logo-duotone,320_0,25;phosphor-linktree-logo-fill,384_0,25;phosphor-linktree-logo-light,448_0,25;phosphor-linktree-logo-thin,512_0,25;phosphor-linktree-logo,576_0,25;phosphor-linux-logo-bold,640_0,25;phosphor-linux-logo-duotone,704_0,25;phosphor-linux-logo-fill,768_0,25;phosphor-linux-logo-light,832_0,25;phosphor-linux-logo-thin,896_0,25;phosphor-linux-logo,960_0,25;phosphor-list-bold,0_64,25;phosphor-list-bullets-bold,64_64,25;phosphor-list-bullets-duotone,128_64,25;phosphor-list-bullets-fill,192_64,25;phosphor-list-bullets-light,256_64,25;phosphor-list-bullets-thin,320_64,25;phosphor-list-bullets,384_64,25;phosphor-list-checks-bold,448_64,25;phosphor-list-checks-duotone,512_64,25;phosphor-list-checks-fill,576_64,25;phosphor-list-checks-light,640_64,25;phosphor-list-checks-thin,704_64,25;phosphor-list-checks,768_64,25;phosphor-list-dashes-bold,832_64,25;phosphor-list-dashes-duotone,896_64,25;phosphor-list-dashes-fill,960_64,25;phosphor-list-dashes-light,0_128,25;phosphor-list-dashes-thin,64_128,25;phosphor-list-dashes,128_128,25;phosphor-list-duotone,192_128,25;phosphor-list-fill,256_128,25;phosphor-list-heart-bold,320_128,25;phosphor-list-heart-duotone,384_128,25;phosphor-list-heart-fill,448_128,25;phosphor-list-heart-light,512_128,25;phosphor-list-heart-thin,576_128,25;phosphor-list-heart,640_128,25;phosphor-list-light,704_128,25;phosphor-list-magnifying-glass-bold,768_128,25;phosphor-list-magnifying-glass-duotone,832_128,25;phosphor-list-magnifying-glass-fill,896_128,25;phosphor-list-magnifying-glass-light,960_128,25;phosphor-list-magnifying-glass-thin,0_192,25;phosphor-list-magnifying-glass,64_192,25;phosphor-list-numbers-bold,128_192,25;phosphor-list-numbers-duotone,192_192,25;phosphor-list-numbers-fill,256_192,25;phosphor-list-numbers-light,320_192,25;phosphor-list-numbers-thin,384_192,25;phosphor-list-numbers,448_192,25;phosphor-list-plus-bold,512_192,25;phosphor-list-plus-duotone,576_192,25;phosphor-list-plus-fill,640_192,25;phosphor-list-plus-light,704_192,25;phosphor-list-plus-thin,768_192,25;phosphor-list-plus,832_192,25;phosphor-list-star-bold,896_192,25;phosphor-list-star-duotone,960_192,25;phosphor-list-star-fill,0_256,25;phosphor-list-star-light,64_256,25;phosphor-list-star-thin,128_256,25;phosphor-list-star,192_256,25;phosphor-list-thin,256_256,25;phosphor-list,320_256,25;phosphor-lock-bold,384_256,25;phosphor-lock-duotone,448_256,25;phosphor-lock-fill,512_256,25;phosphor-lock-key-bold,576_256,25;phosphor-lock-key-duotone,640_256,25;phosphor-lock-key-fill,704_256,25;phosphor-lock-key-light,768_256,25;phosphor-lock-key-open-bold,832_256,25;phosphor-lock-key-open-duotone,896_256,25;phosphor-lock-key-open-fill,960_256,25;phosphor-lock-key-open-light,0_320,25;phosphor-lock-key-open-thin,64_320,25;phosphor-lock-key-open,128_320,25;phosphor-lock-key-thin,192_320,25;phosphor-lock-key,256_320,25;phosphor-lock-laminated-bold,320_320,25;phosphor-lock-laminated-duotone,384_320,25;phosphor-lock-laminated-fill,448_320,25;phosphor-lock-laminated-light,512_320,25;phosphor-lock-laminated-open-bold,576_320,25;phosphor-lock-laminated-open-duotone,640_320,25;phosphor-lock-laminated-open-fill,704_320,25;phosphor-lock-laminated-open-light,768_320,25;phosphor-lock-laminated-open-thin,832_320,25;phosphor-lock-laminated-open,896_320,25;phosphor-lock-laminated-thin,960_320,25;phosphor-lock-laminated,0_384,25;phosphor-lock-light,64_384,25;phosphor-lock-open-bold,128_384,25;phosphor-lock-open-duotone,192_384,25;phosphor-lock-open-fill,256_384,25;phosphor-lock-open-light,320_384,25;phosphor-lock-open-thin,384_384,25;phosphor-lock-open,448_384,25;phosphor-lock-simple-bold,512_384,25;phosphor-lock-simple-duotone,576_384,25;phosphor-lock-simple-fill,640_384,25;phosphor-lock-simple-light,704_384,25;phosphor-lock-simple-open-bold,768_384,25;phosphor-lock-simple-open-duotone,832_384,25;phosphor-lock-simple-open-fill,896_384,25;phosphor-lock-simple-open-light,960_384,25;phosphor-lock-simple-open-thin,0_448,25;phosphor-lock-simple-open,64_448,25;phosphor-lock-simple-thin,128_448,25;phosphor-lock-simple,192_448,25;phosphor-lock-thin,256_448,25;phosphor-lock,320_448,25;phosphor-lockers-bold,384_448,25;phosphor-lockers-duotone,448_448,25;phosphor-lockers-fill,512_448,25;phosphor-lockers-light,576_448,25;phosphor-lockers-thin,640_448,25;phosphor-lockers,704_448,25;phosphor-log-bold,768_448,25;phosphor-log-duotone,832_448,25;phosphor-log-fill,896_448,25;phosphor-log-light,960_448,25;phosphor-log-thin,0_512,25;phosphor-log,64_512,25;phosphor-magic-wand-bold,128_512,25;phosphor-magic-wand-duotone,192_512,25;phosphor-magic-wand-fill,256_512,25;phosphor-magic-wand-light,320_512,25;phosphor-magic-wand-thin,384_512,25;phosphor-magic-wand,448_512,25;phosphor-magnet-bold,512_512,25;phosphor-magnet-duotone,576_512,25;phosphor-magnet-fill,640_512,25;phosphor-magnet-light,704_512,25;phosphor-magnet-straight-bold,768_512,25;phosphor-magnet-straight-duotone,832_512,25;phosphor-magnet-straight-fill,896_512,25;phosphor-magnet-straight-light,960_512,25;phosphor-magnet-straight-thin,0_576,25;phosphor-magnet-straight,64_576,25;phosphor-magnet-thin,128_576,25;phosphor-magnet,192_576,25;phosphor-magnifying-glass-bold,256_576,25;phosphor-magnifying-glass-duotone,320_576,25;phosphor-magnifying-glass-fill,384_576,25;phosphor-magnifying-glass-light,448_576,25;phosphor-magnifying-glass-minus-bold,512_576,25;phosphor-magnifying-glass-minus-duotone,576_576,25;phosphor-magnifying-glass-minus-fill,640_576,25;phosphor-magnifying-glass-minus-light,704_576,25;phosphor-magnifying-glass-minus-thin,768_576,25;phosphor-magnifying-glass-minus,832_576,25;phosphor-magnifying-glass-plus-bold,896_576,25;phosphor-magnifying-glass-plus-duotone,960_576,25;phosphor-magnifying-glass-plus-fill,0_640,25;phosphor-magnifying-glass-plus-light,64_640,25;phosphor-magnifying-glass-plus-thin,128_640,25;phosphor-magnifying-glass-plus,192_640,25;phosphor-magnifying-glass-thin,256_640,25;phosphor-magnifying-glass,320_640,25;phosphor-mailbox-bold,384_640,25;phosphor-mailbox-duotone,448_640,25;phosphor-mailbox-fill,512_640,25;phosphor-mailbox-light,576_640,25;phosphor-mailbox-thin,640_640,25;phosphor-mailbox,704_640,25;phosphor-map-pin-area-bold,768_640,25;phosphor-map-pin-area-duotone,832_640,25;phosphor-map-pin-area-fill,896_640,25;phosphor-map-pin-area-light,960_640,25;phosphor-map-pin-area-thin,0_704,25;phosphor-map-pin-area,64_704,25;phosphor-map-pin-bold,128_704,25;phosphor-map-pin-duotone,192_704,25;phosphor-map-pin-fill,256_704,25;phosphor-map-pin-light,320_704,25;phosphor-map-pin-line-bold,384_704,25;phosphor-map-pin-line-duotone,448_704,25;phosphor-map-pin-line-fill,512_704,25;phosphor-map-pin-line-light,576_704,25;phosphor-map-pin-line-thin,640_704,25;phosphor-map-pin-line,704_704,25;phosphor-map-pin-plus-bold,768_704,25;phosphor-map-pin-plus-duotone,832_704,25;phosphor-map-pin-plus-fill,896_704,25;phosphor-map-pin-plus-light,960_704,25;phosphor-map-pin-plus-thin,0_768,25;phosphor-map-pin-plus,64_768,25;phosphor-map-pin-simple-area-bold,128_768,25;phosphor-map-pin-simple-area-duotone,192_768,25;phosphor-map-pin-simple-area-fill,256_768,25;phosphor-map-pin-simple-area-light,320_768,25;phosphor-map-pin-simple-area-thin,384_768,25;phosphor-map-pin-simple-area,448_768,25;phosphor-map-pin-simple-bold,512_768,25;phosphor-map-pin-simple-duotone,576_768,25;phosphor-map-pin-simple-fill,640_768,25;phosphor-map-pin-simple-light,704_768,25;phosphor-map-pin-simple-line-bold,768_768,25;phosphor-map-pin-simple-line-duotone,832_768,25;phosphor-map-pin-simple-line-fill,896_768,25;phosphor-map-pin-simple-line-light,960_768,25;phosphor-map-pin-simple-line-thin,0_832,25;phosphor-map-pin-simple-line,64_832,25;phosphor-map-pin-simple-thin,128_832,25;phosphor-map-pin-simple,192_832,25;phosphor-map-pin-thin,256_832,25;phosphor-map-pin,320_832,25;phosphor-map-trifold-bold,384_832,25;phosphor-map-trifold-duotone,448_832,25;phosphor-map-trifold-fill,512_832,25;phosphor-map-trifold-light,576_832,25;phosphor-map-trifold-thin,640_832,25;phosphor-map-trifold,704_832,25;phosphor-markdown-logo-bold,768_832,25;phosphor-markdown-logo-duotone,832_832,25;phosphor-markdown-logo-fill,896_832,25;phosphor-markdown-logo-light,960_832,25;phosphor-markdown-logo-thin,0_896,25;phosphor-markdown-logo,64_896,25;phosphor-marker-circle-bold,128_896,25;phosphor-marker-circle-duotone,192_896,25;phosphor-marker-circle-fill,256_896,25;phosphor-marker-circle-light,320_896,25;phosphor-marker-circle-thin,384_896,25;phosphor-marker-circle,448_896,25;phosphor-martini-bold,512_896,25;phosphor-martini-duotone,576_896,25;phosphor-martini-fill,640_896,25;phosphor-martini-light,704_896,25;phosphor-martini-thin,768_896,25;phosphor-martini,832_896,25;phosphor-mask-happy-bold,896_896,25;phosphor-mask-happy-duotone,960_896,25;phosphor-mask-happy-fill,0_960,25;phosphor-mask-happy-light,64_960,25;phosphor-mask-happy-thin,128_960,25;phosphor-mask-happy,192_960,25;phosphor-mask-sad-bold,256_960,25;phosphor-mask-sad-duotone,320_960,25;phosphor-mask-sad-fill,384_960,25;phosphor-mask-sad-light,448_960,25;phosphor-mask-sad-thin,512_960,25;phosphor-mask-sad,576_960,25;phosphor-mastodon-logo-bold,640_960,25;phosphor-mastodon-logo-duotone,704_960,25;phosphor-mastodon-logo-fill,768_960,25;phosphor-mastodon-logo-light,832_960,25;phosphor-mastodon-logo-thin,896_960,25;phosphor-mastodon-logo,960_960,25;phosphor-math-operations-bold,0_0,26;phosphor-math-operations-duotone,64_0,26;phosphor-math-operations-fill,128_0,26;phosphor-math-operations-light,192_0,26;phosphor-math-operations-thin,256_0,26;phosphor-math-operations,320_0,26;phosphor-matrix-logo-bold,384_0,26;phosphor-matrix-logo-duotone,448_0,26;phosphor-matrix-logo-fill,512_0,26;phosphor-matrix-logo-light,576_0,26;phosphor-matrix-logo-thin,640_0,26;phosphor-matrix-logo,704_0,26;phosphor-medal-bold,768_0,26;phosphor-medal-duotone,832_0,26;phosphor-medal-fill,896_0,26;phosphor-medal-light,960_0,26;phosphor-medal-military-bold,0_64,26;phosphor-medal-military-duotone,64_64,26;phosphor-medal-military-fill,128_64,26;phosphor-medal-military-light,192_64,26;phosphor-medal-military-thin,256_64,26;phosphor-medal-military,320_64,26;phosphor-medal-thin,384_64,26;phosphor-medal,448_64,26;phosphor-medium-logo-bold,512_64,26;phosphor-medium-logo-duotone,576_64,26;phosphor-medium-logo-fill,640_64,26;phosphor-medium-logo-light,704_64,26;phosphor-medium-logo-thin,768_64,26;phosphor-medium-logo,832_64,26;phosphor-megaphone-bold,896_64,26;phosphor-megaphone-duotone,960_64,26;phosphor-megaphone-fill,0_128,26;phosphor-megaphone-light,64_128,26;phosphor-megaphone-simple-bold,128_128,26;phosphor-megaphone-simple-duotone,192_128,26;phosphor-megaphone-simple-fill,256_128,26;phosphor-megaphone-simple-light,320_128,26;phosphor-megaphone-simple-thin,384_128,26;phosphor-megaphone-simple,448_128,26;phosphor-megaphone-thin,512_128,26;phosphor-megaphone,576_128,26;phosphor-member-of-bold,640_128,26;phosphor-member-of-duotone,704_128,26;phosphor-member-of-fill,768_128,26;phosphor-member-of-light,832_128,26;phosphor-member-of-thin,896_128,26;phosphor-member-of,960_128,26;phosphor-memory-bold,0_192,26;phosphor-memory-duotone,64_192,26;phosphor-memory-fill,128_192,26;phosphor-memory-light,192_192,26;phosphor-memory-thin,256_192,26;phosphor-memory,320_192,26;phosphor-messenger-logo-bold,384_192,26;phosphor-messenger-logo-duotone,448_192,26;phosphor-messenger-logo-fill,512_192,26;phosphor-messenger-logo-light,576_192,26;phosphor-messenger-logo-thin,640_192,26;phosphor-messenger-logo,704_192,26;phosphor-meta-logo-bold,768_192,26;phosphor-meta-logo-duotone,832_192,26;phosphor-meta-logo-fill,896_192,26;phosphor-meta-logo-light,960_192,26;phosphor-meta-logo-thin,0_256,26;phosphor-meta-logo,64_256,26;phosphor-meteor-bold,128_256,26;phosphor-meteor-duotone,192_256,26;phosphor-meteor-fill,256_256,26;phosphor-meteor-light,320_256,26;phosphor-meteor-thin,384_256,26;phosphor-meteor,448_256,26;phosphor-metronome-bold,512_256,26;phosphor-metronome-duotone,576_256,26;phosphor-metronome-fill,640_256,26;phosphor-metronome-light,704_256,26;phosphor-metronome-thin,768_256,26;phosphor-metronome,832_256,26;phosphor-microphone-bold,896_256,26;phosphor-microphone-duotone,960_256,26;phosphor-microphone-fill,0_320,26;phosphor-microphone-light,64_320,26;phosphor-microphone-slash-bold,128_320,26;phosphor-microphone-slash-duotone,192_320,26;phosphor-microphone-slash-fill,256_320,26;phosphor-microphone-slash-light,320_320,26;phosphor-microphone-slash-thin,384_320,26;phosphor-microphone-slash,448_320,26;phosphor-microphone-stage-bold,512_320,26;phosphor-microphone-stage-duotone,576_320,26;phosphor-microphone-stage-fill,640_320,26;phosphor-microphone-stage-light,704_320,26;phosphor-microphone-stage-thin,768_320,26;phosphor-microphone-stage,832_320,26;phosphor-microphone-thin,896_320,26;phosphor-microphone,960_320,26;phosphor-microscope-bold,0_384,26;phosphor-microscope-duotone,64_384,26;phosphor-microscope-fill,128_384,26;phosphor-microscope-light,192_384,26;phosphor-microscope-thin,256_384,26;phosphor-microscope,320_384,26;phosphor-microsoft-excel-logo-bold,384_384,26;phosphor-microsoft-excel-logo-duotone,448_384,26;phosphor-microsoft-excel-logo-fill,512_384,26;phosphor-microsoft-excel-logo-light,576_384,26;phosphor-microsoft-excel-logo-thin,640_384,26;phosphor-microsoft-excel-logo,704_384,26;phosphor-microsoft-outlook-logo-bold,768_384,26;phosphor-microsoft-outlook-logo-duotone,832_384,26;phosphor-microsoft-outlook-logo-fill,896_384,26;phosphor-microsoft-outlook-logo-light,960_384,26;phosphor-microsoft-outlook-logo-thin,0_448,26;phosphor-microsoft-outlook-logo,64_448,26;phosphor-microsoft-powerpoint-logo-bold,128_448,26;phosphor-microsoft-powerpoint-logo-duotone,192_448,26;phosphor-microsoft-powerpoint-logo-fill,256_448,26;phosphor-microsoft-powerpoint-logo-light,320_448,26;phosphor-microsoft-powerpoint-logo-thin,384_448,26;phosphor-microsoft-powerpoint-logo,448_448,26;phosphor-microsoft-teams-logo-bold,512_448,26;phosphor-microsoft-teams-logo-duotone,576_448,26;phosphor-microsoft-teams-logo-fill,640_448,26;phosphor-microsoft-teams-logo-light,704_448,26;phosphor-microsoft-teams-logo-thin,768_448,26;phosphor-microsoft-teams-logo,832_448,26;phosphor-microsoft-word-logo-bold,896_448,26;phosphor-microsoft-word-logo-duotone,960_448,26;phosphor-microsoft-word-logo-fill,0_512,26;phosphor-microsoft-word-logo-light,64_512,26;phosphor-microsoft-word-logo-thin,128_512,26;phosphor-microsoft-word-logo,192_512,26;phosphor-minus-bold,256_512,26;phosphor-minus-circle-bold,320_512,26;phosphor-minus-circle-duotone,384_512,26;phosphor-minus-circle-fill,448_512,26;phosphor-minus-circle-light,512_512,26;phosphor-minus-circle-thin,576_512,26;phosphor-minus-circle,640_512,26;phosphor-minus-duotone,704_512,26;phosphor-minus-fill,768_512,26;phosphor-minus-light,832_512,26;phosphor-minus-square-bold,896_512,26;phosphor-minus-square-duotone,960_512,26;phosphor-minus-square-fill,0_576,26;phosphor-minus-square-light,64_576,26;phosphor-minus-square-thin,128_576,26;phosphor-minus-square,192_576,26;phosphor-minus-thin,256_576,26;phosphor-minus,320_576,26;phosphor-money-bold,384_576,26;phosphor-money-duotone,448_576,26;phosphor-money-fill,512_576,26;phosphor-money-light,576_576,26;phosphor-money-thin,640_576,26;phosphor-money-wavy-bold,704_576,26;phosphor-money-wavy-duotone,768_576,26;phosphor-money-wavy-fill,832_576,26;phosphor-money-wavy-light,896_576,26;phosphor-money-wavy-thin,960_576,26;phosphor-money-wavy,0_640,26;phosphor-money,64_640,26;phosphor-monitor-arrow-up-bold,128_640,26;phosphor-monitor-arrow-up-duotone,192_640,26;phosphor-monitor-arrow-up-fill,256_640,26;phosphor-monitor-arrow-up-light,320_640,26;phosphor-monitor-arrow-up-thin,384_640,26;phosphor-monitor-arrow-up,448_640,26;phosphor-monitor-bold,512_640,26;phosphor-monitor-duotone,576_640,26;phosphor-monitor-fill,640_640,26;phosphor-monitor-light,704_640,26;phosphor-monitor-play-bold,768_640,26;phosphor-monitor-play-duotone,832_640,26;phosphor-monitor-play-fill,896_640,26;phosphor-monitor-play-light,960_640,26;phosphor-monitor-play-thin,0_704,26;phosphor-monitor-play,64_704,26;phosphor-monitor-thin,128_704,26;phosphor-monitor,192_704,26;phosphor-moon-bold,256_704,26;phosphor-moon-duotone,320_704,26;phosphor-moon-fill,384_704,26;phosphor-moon-light,448_704,26;phosphor-moon-stars-bold,512_704,26;phosphor-moon-stars-duotone,576_704,26;phosphor-moon-stars-fill,640_704,26;phosphor-moon-stars-light,704_704,26;phosphor-moon-stars-thin,768_704,26;phosphor-moon-stars,832_704,26;phosphor-moon-thin,896_704,26;phosphor-moon,960_704,26;phosphor-moped-bold,0_768,26;phosphor-moped-duotone,64_768,26;phosphor-moped-fill,128_768,26;phosphor-moped-front-bold,192_768,26;phosphor-moped-front-duotone,256_768,26;phosphor-moped-front-fill,320_768,26;phosphor-moped-front-light,384_768,26;phosphor-moped-front-thin,448_768,26;phosphor-moped-front,512_768,26;phosphor-moped-light,576_768,26;phosphor-moped-thin,640_768,26;phosphor-moped,704_768,26;phosphor-mosque-bold,768_768,26;phosphor-mosque-duotone,832_768,26;phosphor-mosque-fill,896_768,26;phosphor-mosque-light,960_768,26;phosphor-mosque-thin,0_832,26;phosphor-mosque,64_832,26;phosphor-motorcycle-bold,128_832,26;phosphor-motorcycle-duotone,192_832,26;phosphor-motorcycle-fill,256_832,26;phosphor-motorcycle-light,320_832,26;phosphor-motorcycle-thin,384_832,26;phosphor-motorcycle,448_832,26;phosphor-mountains-bold,512_832,26;phosphor-mountains-duotone,576_832,26;phosphor-mountains-fill,640_832,26;phosphor-mountains-light,704_832,26;phosphor-mountains-thin,768_832,26;phosphor-mountains,832_832,26;phosphor-mouse-bold,896_832,26;phosphor-mouse-duotone,960_832,26;phosphor-mouse-fill,0_896,26;phosphor-mouse-left-click-bold,64_896,26;phosphor-mouse-left-click-duotone,128_896,26;phosphor-mouse-left-click-fill,192_896,26;phosphor-mouse-left-click-light,256_896,26;phosphor-mouse-left-click-thin,320_896,26;phosphor-mouse-left-click,384_896,26;phosphor-mouse-light,448_896,26;phosphor-mouse-middle-click-bold,512_896,26;phosphor-mouse-middle-click-duotone,576_896,26;phosphor-mouse-middle-click-fill,640_896,26;phosphor-mouse-middle-click-light,704_896,26;phosphor-mouse-middle-click-thin,768_896,26;phosphor-mouse-middle-click,832_896,26;phosphor-mouse-right-click-bold,896_896,26;phosphor-mouse-right-click-duotone,960_896,26;phosphor-mouse-right-click-fill,0_960,26;phosphor-mouse-right-click-light,64_960,26;phosphor-mouse-right-click-thin,128_960,26;phosphor-mouse-right-click,192_960,26;phosphor-mouse-scroll-bold,256_960,26;phosphor-mouse-scroll-duotone,320_960,26;phosphor-mouse-scroll-fill,384_960,26;phosphor-mouse-scroll-light,448_960,26;phosphor-mouse-scroll-thin,512_960,26;phosphor-mouse-scroll,576_960,26;phosphor-mouse-simple-bold,640_960,26;phosphor-mouse-simple-duotone,704_960,26;phosphor-mouse-simple-fill,768_960,26;phosphor-mouse-simple-light,832_960,26;phosphor-mouse-simple-thin,896_960,26;phosphor-mouse-simple,960_960,26;phosphor-mouse-thin,0_0,27;phosphor-mouse,64_0,27;phosphor-music-note-bold,128_0,27;phosphor-music-note-duotone,192_0,27;phosphor-music-note-fill,256_0,27;phosphor-music-note-light,320_0,27;phosphor-music-note-simple-bold,384_0,27;phosphor-music-note-simple-duotone,448_0,27;phosphor-music-note-simple-fill,512_0,27;phosphor-music-note-simple-light,576_0,27;phosphor-music-note-simple-thin,640_0,27;phosphor-music-note-simple,704_0,27;phosphor-music-note-thin,768_0,27;phosphor-music-note,832_0,27;phosphor-music-notes-bold,896_0,27;phosphor-music-notes-duotone,960_0,27;phosphor-music-notes-fill,0_64,27;phosphor-music-notes-light,64_64,27;phosphor-music-notes-minus-bold,128_64,27;phosphor-music-notes-minus-duotone,192_64,27;phosphor-music-notes-minus-fill,256_64,27;phosphor-music-notes-minus-light,320_64,27;phosphor-music-notes-minus-thin,384_64,27;phosphor-music-notes-minus,448_64,27;phosphor-music-notes-plus-bold,512_64,27;phosphor-music-notes-plus-duotone,576_64,27;phosphor-music-notes-plus-fill,640_64,27;phosphor-music-notes-plus-light,704_64,27;phosphor-music-notes-plus-thin,768_64,27;phosphor-music-notes-plus,832_64,27;phosphor-music-notes-simple-bold,896_64,27;phosphor-music-notes-simple-duotone,960_64,27;phosphor-music-notes-simple-fill,0_128,27;phosphor-music-notes-simple-light,64_128,27;phosphor-music-notes-simple-thin,128_128,27;phosphor-music-notes-simple,192_128,27;phosphor-music-notes-thin,256_128,27;phosphor-music-notes,320_128,27;phosphor-navigation-arrow-bold,384_128,27;phosphor-navigation-arrow-duotone,448_128,27;phosphor-navigation-arrow-fill,512_128,27;phosphor-navigation-arrow-light,576_128,27;phosphor-navigation-arrow-thin,640_128,27;phosphor-navigation-arrow,704_128,27;phosphor-needle-bold,768_128,27;phosphor-needle-duotone,832_128,27;phosphor-needle-fill,896_128,27;phosphor-needle-light,960_128,27;phosphor-needle-thin,0_192,27;phosphor-needle,64_192,27;phosphor-network-bold,128_192,27;phosphor-network-duotone,192_192,27;phosphor-network-fill,256_192,27;phosphor-network-light,320_192,27;phosphor-network-slash-bold,384_192,27;phosphor-network-slash-duotone,448_192,27;phosphor-network-slash-fill,512_192,27;phosphor-network-slash-light,576_192,27;phosphor-network-slash-thin,640_192,27;phosphor-network-slash,704_192,27;phosphor-network-thin,768_192,27;phosphor-network-x-bold,832_192,27;phosphor-network-x-duotone,896_192,27;phosphor-network-x-fill,960_192,27;phosphor-network-x-light,0_256,27;phosphor-network-x-thin,64_256,27;phosphor-network-x,128_256,27;phosphor-network,192_256,27;phosphor-newspaper-bold,256_256,27;phosphor-newspaper-clipping-bold,320_256,27;phosphor-newspaper-clipping-duotone,384_256,27;phosphor-newspaper-clipping-fill,448_256,27;phosphor-newspaper-clipping-light,512_256,27;phosphor-newspaper-clipping-thin,576_256,27;phosphor-newspaper-clipping,640_256,27;phosphor-newspaper-duotone,704_256,27;phosphor-newspaper-fill,768_256,27;phosphor-newspaper-light,832_256,27;phosphor-newspaper-thin,896_256,27;phosphor-newspaper,960_256,27;phosphor-not-equals-bold,0_320,27;phosphor-not-equals-duotone,64_320,27;phosphor-not-equals-fill,128_320,27;phosphor-not-equals-light,192_320,27;phosphor-not-equals-thin,256_320,27;phosphor-not-equals,320_320,27;phosphor-not-member-of-bold,384_320,27;phosphor-not-member-of-duotone,448_320,27;phosphor-not-member-of-fill,512_320,27;phosphor-not-member-of-light,576_320,27;phosphor-not-member-of-thin,640_320,27;phosphor-not-member-of,704_320,27;phosphor-not-subset-of-bold,768_320,27;phosphor-not-subset-of-duotone,832_320,27;phosphor-not-subset-of-fill,896_320,27;phosphor-not-subset-of-light,960_320,27;phosphor-not-subset-of-thin,0_384,27;phosphor-not-subset-of,64_384,27;phosphor-not-superset-of-bold,128_384,27;phosphor-not-superset-of-duotone,192_384,27;phosphor-not-superset-of-fill,256_384,27;phosphor-not-superset-of-light,320_384,27;phosphor-not-superset-of-thin,384_384,27;phosphor-not-superset-of,448_384,27;phosphor-notches-bold,512_384,27;phosphor-notches-duotone,576_384,27;phosphor-notches-fill,640_384,27;phosphor-notches-light,704_384,27;phosphor-notches-thin,768_384,27;phosphor-notches,832_384,27;phosphor-note-blank-bold,896_384,27;phosphor-note-blank-duotone,960_384,27;phosphor-note-blank-fill,0_448,27;phosphor-note-blank-light,64_448,27;phosphor-note-blank-thin,128_448,27;phosphor-note-blank,192_448,27;phosphor-note-bold,256_448,27;phosphor-note-duotone,320_448,27;phosphor-note-fill,384_448,27;phosphor-note-light,448_448,27;phosphor-note-pencil-bold,512_448,27;phosphor-note-pencil-duotone,576_448,27;phosphor-note-pencil-fill,640_448,27;phosphor-note-pencil-light,704_448,27;phosphor-note-pencil-thin,768_448,27;phosphor-note-pencil,832_448,27;phosphor-note-thin,896_448,27;phosphor-note,960_448,27;phosphor-notebook-bold,0_512,27;phosphor-notebook-duotone,64_512,27;phosphor-notebook-fill,128_512,27;phosphor-notebook-light,192_512,27;phosphor-notebook-thin,256_512,27;phosphor-notebook,320_512,27;phosphor-notepad-bold,384_512,27;phosphor-notepad-duotone,448_512,27;phosphor-notepad-fill,512_512,27;phosphor-notepad-light,576_512,27;phosphor-notepad-thin,640_512,27;phosphor-notepad,704_512,27;phosphor-notification-bold,768_512,27;phosphor-notification-duotone,832_512,27;phosphor-notification-fill,896_512,27;phosphor-notification-light,960_512,27;phosphor-notification-thin,0_576,27;phosphor-notification,64_576,27;phosphor-notion-logo-bold,128_576,27;phosphor-notion-logo-duotone,192_576,27;phosphor-notion-logo-fill,256_576,27;phosphor-notion-logo-light,320_576,27;phosphor-notion-logo-thin,384_576,27;phosphor-notion-logo,448_576,27;phosphor-nuclear-plant-bold,512_576,27;phosphor-nuclear-plant-duotone,576_576,27;phosphor-nuclear-plant-fill,640_576,27;phosphor-nuclear-plant-light,704_576,27;phosphor-nuclear-plant-thin,768_576,27;phosphor-nuclear-plant,832_576,27;phosphor-number-circle-eight-bold,896_576,27;phosphor-number-circle-eight-duotone,960_576,27;phosphor-number-circle-eight-fill,0_640,27;phosphor-number-circle-eight-light,64_640,27;phosphor-number-circle-eight-thin,128_640,27;phosphor-number-circle-eight,192_640,27;phosphor-number-circle-five-bold,256_640,27;phosphor-number-circle-five-duotone,320_640,27;phosphor-number-circle-five-fill,384_640,27;phosphor-number-circle-five-light,448_640,27;phosphor-number-circle-five-thin,512_640,27;phosphor-number-circle-five,576_640,27;phosphor-number-circle-four-bold,640_640,27;phosphor-number-circle-four-duotone,704_640,27;phosphor-number-circle-four-fill,768_640,27;phosphor-number-circle-four-light,832_640,27;phosphor-number-circle-four-thin,896_640,27;phosphor-number-circle-four,960_640,27;phosphor-number-circle-nine-bold,0_704,27;phosphor-number-circle-nine-duotone,64_704,27;phosphor-number-circle-nine-fill,128_704,27;phosphor-number-circle-nine-light,192_704,27;phosphor-number-circle-nine-thin,256_704,27;phosphor-number-circle-nine,320_704,27;phosphor-number-circle-one-bold,384_704,27;phosphor-number-circle-one-duotone,448_704,27;phosphor-number-circle-one-fill,512_704,27;phosphor-number-circle-one-light,576_704,27;phosphor-number-circle-one-thin,640_704,27;phosphor-number-circle-one,704_704,27;phosphor-number-circle-seven-bold,768_704,27;phosphor-number-circle-seven-duotone,832_704,27;phosphor-number-circle-seven-fill,896_704,27;phosphor-number-circle-seven-light,960_704,27;phosphor-number-circle-seven-thin,0_768,27;phosphor-number-circle-seven,64_768,27;phosphor-number-circle-six-bold,128_768,27;phosphor-number-circle-six-duotone,192_768,27;phosphor-number-circle-six-fill,256_768,27;phosphor-number-circle-six-light,320_768,27;phosphor-number-circle-six-thin,384_768,27;phosphor-number-circle-six,448_768,27;phosphor-number-circle-three-bold,512_768,27;phosphor-number-circle-three-duotone,576_768,27;phosphor-number-circle-three-fill,640_768,27;phosphor-number-circle-three-light,704_768,27;phosphor-number-circle-three-thin,768_768,27;phosphor-number-circle-three,832_768,27;phosphor-number-circle-two-bold,896_768,27;phosphor-number-circle-two-duotone,960_768,27;phosphor-number-circle-two-fill,0_832,27;phosphor-number-circle-two-light,64_832,27;phosphor-number-circle-two-thin,128_832,27;phosphor-number-circle-two,192_832,27;phosphor-number-circle-zero-bold,256_832,27;phosphor-number-circle-zero-duotone,320_832,27;phosphor-number-circle-zero-fill,384_832,27;phosphor-number-circle-zero-light,448_832,27;phosphor-number-circle-zero-thin,512_832,27;phosphor-number-circle-zero,576_832,27;phosphor-number-eight-bold,640_832,27;phosphor-number-eight-duotone,704_832,27;phosphor-number-eight-fill,768_832,27;phosphor-number-eight-light,832_832,27;phosphor-number-eight-thin,896_832,27;phosphor-number-eight,960_832,27;phosphor-number-five-bold,0_896,27;phosphor-number-five-duotone,64_896,27;phosphor-number-five-fill,128_896,27;phosphor-number-five-light,192_896,27;phosphor-number-five-thin,256_896,27;phosphor-number-five,320_896,27;phosphor-number-four-bold,384_896,27;phosphor-number-four-duotone,448_896,27;phosphor-number-four-fill,512_896,27;phosphor-number-four-light,576_896,27;phosphor-number-four-thin,640_896,27;phosphor-number-four,704_896,27;phosphor-number-nine-bold,768_896,27;phosphor-number-nine-duotone,832_896,27;phosphor-number-nine-fill,896_896,27;phosphor-number-nine-light,960_896,27;phosphor-number-nine-thin,0_960,27;phosphor-number-nine,64_960,27;phosphor-number-one-bold,128_960,27;phosphor-number-one-duotone,192_960,27;phosphor-number-one-fill,256_960,27;phosphor-number-one-light,320_960,27;phosphor-number-one-thin,384_960,27;phosphor-number-one,448_960,27;phosphor-number-seven-bold,512_960,27;phosphor-number-seven-duotone,576_960,27;phosphor-number-seven-fill,640_960,27;phosphor-number-seven-light,704_960,27;phosphor-number-seven-thin,768_960,27;phosphor-number-seven,832_960,27;phosphor-number-six-bold,896_960,27;phosphor-number-six-duotone,960_960,27;phosphor-number-six-fill,0_0,28;phosphor-number-six-light,64_0,28;phosphor-number-six-thin,128_0,28;phosphor-number-six,192_0,28;phosphor-number-square-eight-bold,256_0,28;phosphor-number-square-eight-duotone,320_0,28;phosphor-number-square-eight-fill,384_0,28;phosphor-number-square-eight-light,448_0,28;phosphor-number-square-eight-thin,512_0,28;phosphor-number-square-eight,576_0,28;phosphor-number-square-five-bold,640_0,28;phosphor-number-square-five-duotone,704_0,28;phosphor-number-square-five-fill,768_0,28;phosphor-number-square-five-light,832_0,28;phosphor-number-square-five-thin,896_0,28;phosphor-number-square-five,960_0,28;phosphor-number-square-four-bold,0_64,28;phosphor-number-square-four-duotone,64_64,28;phosphor-number-square-four-fill,128_64,28;phosphor-number-square-four-light,192_64,28;phosphor-number-square-four-thin,256_64,28;phosphor-number-square-four,320_64,28;phosphor-number-square-nine-bold,384_64,28;phosphor-number-square-nine-duotone,448_64,28;phosphor-number-square-nine-fill,512_64,28;phosphor-number-square-nine-light,576_64,28;phosphor-number-square-nine-thin,640_64,28;phosphor-number-square-nine,704_64,28;phosphor-number-square-one-bold,768_64,28;phosphor-number-square-one-duotone,832_64,28;phosphor-number-square-one-fill,896_64,28;phosphor-number-square-one-light,960_64,28;phosphor-number-square-one-thin,0_128,28;phosphor-number-square-one,64_128,28;phosphor-number-square-seven-bold,128_128,28;phosphor-number-square-seven-duotone,192_128,28;phosphor-number-square-seven-fill,256_128,28;phosphor-number-square-seven-light,320_128,28;phosphor-number-square-seven-thin,384_128,28;phosphor-number-square-seven,448_128,28;phosphor-number-square-six-bold,512_128,28;phosphor-number-square-six-duotone,576_128,28;phosphor-number-square-six-fill,640_128,28;phosphor-number-square-six-light,704_128,28;phosphor-number-square-six-thin,768_128,28;phosphor-number-square-six,832_128,28;phosphor-number-square-three-bold,896_128,28;phosphor-number-square-three-duotone,960_128,28;phosphor-number-square-three-fill,0_192,28;phosphor-number-square-three-light,64_192,28;phosphor-number-square-three-thin,128_192,28;phosphor-number-square-three,192_192,28;phosphor-number-square-two-bold,256_192,28;phosphor-number-square-two-duotone,320_192,28;phosphor-number-square-two-fill,384_192,28;phosphor-number-square-two-light,448_192,28;phosphor-number-square-two-thin,512_192,28;phosphor-number-square-two,576_192,28;phosphor-number-square-zero-bold,640_192,28;phosphor-number-square-zero-duotone,704_192,28;phosphor-number-square-zero-fill,768_192,28;phosphor-number-square-zero-light,832_192,28;phosphor-number-square-zero-thin,896_192,28;phosphor-number-square-zero,960_192,28;phosphor-number-three-bold,0_256,28;phosphor-number-three-duotone,64_256,28;phosphor-number-three-fill,128_256,28;phosphor-number-three-light,192_256,28;phosphor-number-three-thin,256_256,28;phosphor-number-three,320_256,28;phosphor-number-two-bold,384_256,28;phosphor-number-two-duotone,448_256,28;phosphor-number-two-fill,512_256,28;phosphor-number-two-light,576_256,28;phosphor-number-two-thin,640_256,28;phosphor-number-two,704_256,28;phosphor-number-zero-bold,768_256,28;phosphor-number-zero-duotone,832_256,28;phosphor-number-zero-fill,896_256,28;phosphor-number-zero-light,960_256,28;phosphor-number-zero-thin,0_320,28;phosphor-number-zero,64_320,28;phosphor-numpad-bold,128_320,28;phosphor-numpad-duotone,192_320,28;phosphor-numpad-fill,256_320,28;phosphor-numpad-light,320_320,28;phosphor-numpad-thin,384_320,28;phosphor-numpad,448_320,28;phosphor-nut-bold,512_320,28;phosphor-nut-duotone,576_320,28;phosphor-nut-fill,640_320,28;phosphor-nut-light,704_320,28;phosphor-nut-thin,768_320,28;phosphor-nut,832_320,28;phosphor-ny-times-logo-bold,896_320,28;phosphor-ny-times-logo-duotone,960_320,28;phosphor-ny-times-logo-fill,0_384,28;phosphor-ny-times-logo-light,64_384,28;phosphor-ny-times-logo-thin,128_384,28;phosphor-ny-times-logo,192_384,28;phosphor-octagon-bold,256_384,28;phosphor-octagon-duotone,320_384,28;phosphor-octagon-fill,384_384,28;phosphor-octagon-light,448_384,28;phosphor-octagon-thin,512_384,28;phosphor-octagon,576_384,28;phosphor-office-chair-bold,640_384,28;phosphor-office-chair-duotone,704_384,28;phosphor-office-chair-fill,768_384,28;phosphor-office-chair-light,832_384,28;phosphor-office-chair-thin,896_384,28;phosphor-office-chair,960_384,28;phosphor-onigiri-bold,0_448,28;phosphor-onigiri-duotone,64_448,28;phosphor-onigiri-fill,128_448,28;phosphor-onigiri-light,192_448,28;phosphor-onigiri-thin,256_448,28;phosphor-onigiri,320_448,28;phosphor-open-ai-logo-bold,384_448,28;phosphor-open-ai-logo-duotone,448_448,28;phosphor-open-ai-logo-fill,512_448,28;phosphor-open-ai-logo-light,576_448,28;phosphor-open-ai-logo-thin,640_448,28;phosphor-open-ai-logo,704_448,28;phosphor-option-bold,768_448,28;phosphor-option-duotone,832_448,28;phosphor-option-fill,896_448,28;phosphor-option-light,960_448,28;phosphor-option-thin,0_512,28;phosphor-option,64_512,28;phosphor-orange-bold,128_512,28;phosphor-orange-duotone,192_512,28;phosphor-orange-fill,256_512,28;phosphor-orange-light,320_512,28;phosphor-orange-slice-bold,384_512,28;phosphor-orange-slice-duotone,448_512,28;phosphor-orange-slice-fill,512_512,28;phosphor-orange-slice-light,576_512,28;phosphor-orange-slice-thin,640_512,28;phosphor-orange-slice,704_512,28;phosphor-orange-thin,768_512,28;phosphor-orange,832_512,28;phosphor-oven-bold,896_512,28;phosphor-oven-duotone,960_512,28;phosphor-oven-fill,0_576,28;phosphor-oven-light,64_576,28;phosphor-oven-thin,128_576,28;phosphor-oven,192_576,28;phosphor-package-bold,256_576,28;phosphor-package-duotone,320_576,28;phosphor-package-fill,384_576,28;phosphor-package-light,448_576,28;phosphor-package-thin,512_576,28;phosphor-package,576_576,28;phosphor-paint-brush-bold,640_576,28;phosphor-paint-brush-broad-bold,704_576,28;phosphor-paint-brush-broad-duotone,768_576,28;phosphor-paint-brush-broad-fill,832_576,28;phosphor-paint-brush-broad-light,896_576,28;phosphor-paint-brush-broad-thin,960_576,28;phosphor-paint-brush-broad,0_640,28;phosphor-paint-brush-duotone,64_640,28;phosphor-paint-brush-fill,128_640,28;phosphor-paint-brush-household-bold,192_640,28;phosphor-paint-brush-household-duotone,256_640,28;phosphor-paint-brush-household-fill,320_640,28;phosphor-paint-brush-household-light,384_640,28;phosphor-paint-brush-household-thin,448_640,28;phosphor-paint-brush-household,512_640,28;phosphor-paint-brush-light,576_640,28;phosphor-paint-brush-thin,640_640,28;phosphor-paint-brush,704_640,28;phosphor-paint-bucket-bold,768_640,28;phosphor-paint-bucket-duotone,832_640,28;phosphor-paint-bucket-fill,896_640,28;phosphor-paint-bucket-light,960_640,28;phosphor-paint-bucket-thin,0_704,28;phosphor-paint-bucket,64_704,28;phosphor-paint-roller-bold,128_704,28;phosphor-paint-roller-duotone,192_704,28;phosphor-paint-roller-fill,256_704,28;phosphor-paint-roller-light,320_704,28;phosphor-paint-roller-thin,384_704,28;phosphor-paint-roller,448_704,28;phosphor-palette-bold,512_704,28;phosphor-palette-duotone,576_704,28;phosphor-palette-fill,640_704,28;phosphor-palette-light,704_704,28;phosphor-palette-thin,768_704,28;phosphor-palette,832_704,28;phosphor-panorama-bold,896_704,28;phosphor-panorama-duotone,960_704,28;phosphor-panorama-fill,0_768,28;phosphor-panorama-light,64_768,28;phosphor-panorama-thin,128_768,28;phosphor-panorama,192_768,28;phosphor-pants-bold,256_768,28;phosphor-pants-duotone,320_768,28;phosphor-pants-fill,384_768,28;phosphor-pants-light,448_768,28;phosphor-pants-thin,512_768,28;phosphor-pants,576_768,28;phosphor-paper-plane-bold,640_768,28;phosphor-paper-plane-duotone,704_768,28;phosphor-paper-plane-fill,768_768,28;phosphor-paper-plane-light,832_768,28;phosphor-paper-plane-right-bold,896_768,28;phosphor-paper-plane-right-duotone,960_768,28;phosphor-paper-plane-right-fill,0_832,28;phosphor-paper-plane-right-light,64_832,28;phosphor-paper-plane-right-thin,128_832,28;phosphor-paper-plane-right,192_832,28;phosphor-paper-plane-thin,256_832,28;phosphor-paper-plane-tilt-bold,320_832,28;phosphor-paper-plane-tilt-duotone,384_832,28;phosphor-paper-plane-tilt-fill,448_832,28;phosphor-paper-plane-tilt-light,512_832,28;phosphor-paper-plane-tilt-thin,576_832,28;phosphor-paper-plane-tilt,640_832,28;phosphor-paper-plane,704_832,28;phosphor-paperclip-bold,768_832,28;phosphor-paperclip-duotone,832_832,28;phosphor-paperclip-fill,896_832,28;phosphor-paperclip-horizontal-bold,960_832,28;phosphor-paperclip-horizontal-duotone,0_896,28;phosphor-paperclip-horizontal-fill,64_896,28;phosphor-paperclip-horizontal-light,128_896,28;phosphor-paperclip-horizontal-thin,192_896,28;phosphor-paperclip-horizontal,256_896,28;phosphor-paperclip-light,320_896,28;phosphor-paperclip-thin,384_896,28;phosphor-paperclip,448_896,28;phosphor-parachute-bold,512_896,28;phosphor-parachute-duotone,576_896,28;phosphor-parachute-fill,640_896,28;phosphor-parachute-light,704_896,28;phosphor-parachute-thin,768_896,28;phosphor-parachute,832_896,28;phosphor-paragraph-bold,896_896,28;phosphor-paragraph-duotone,960_896,28;phosphor-paragraph-fill,0_960,28;phosphor-paragraph-light,64_960,28;phosphor-paragraph-thin,128_960,28;phosphor-paragraph,192_960,28;phosphor-parallelogram-bold,256_960,28;phosphor-parallelogram-duotone,320_960,28;phosphor-parallelogram-fill,384_960,28;phosphor-parallelogram-light,448_960,28;phosphor-parallelogram-thin,512_960,28;phosphor-parallelogram,576_960,28;phosphor-park-bold,640_960,28;phosphor-park-duotone,704_960,28;phosphor-park-fill,768_960,28;phosphor-park-light,832_960,28;phosphor-park-thin,896_960,28;phosphor-park,960_960,28;phosphor-password-bold,0_0,29;phosphor-password-duotone,64_0,29;phosphor-password-fill,128_0,29;phosphor-password-light,192_0,29;phosphor-password-thin,256_0,29;phosphor-password,320_0,29;phosphor-path-bold,384_0,29;phosphor-path-duotone,448_0,29;phosphor-path-fill,512_0,29;phosphor-path-light,576_0,29;phosphor-path-thin,640_0,29;phosphor-path,704_0,29;phosphor-patreon-logo-bold,768_0,29;phosphor-patreon-logo-duotone,832_0,29;phosphor-patreon-logo-fill,896_0,29;phosphor-patreon-logo-light,960_0,29;phosphor-patreon-logo-thin,0_64,29;phosphor-patreon-logo,64_64,29;phosphor-pause-bold,128_64,29;phosphor-pause-circle-bold,192_64,29;phosphor-pause-circle-duotone,256_64,29;phosphor-pause-circle-fill,320_64,29;phosphor-pause-circle-light,384_64,29;phosphor-pause-circle-thin,448_64,29;phosphor-pause-circle,512_64,29;phosphor-pause-duotone,576_64,29;phosphor-pause-fill,640_64,29;phosphor-pause-light,704_64,29;phosphor-pause-thin,768_64,29;phosphor-pause,832_64,29;phosphor-paw-print-bold,896_64,29;phosphor-paw-print-duotone,960_64,29;phosphor-paw-print-fill,0_128,29;phosphor-paw-print-light,64_128,29;phosphor-paw-print-thin,128_128,29;phosphor-paw-print,192_128,29;phosphor-paypal-logo-bold,256_128,29;phosphor-paypal-logo-duotone,320_128,29;phosphor-paypal-logo-fill,384_128,29;phosphor-paypal-logo-light,448_128,29;phosphor-paypal-logo-thin,512_128,29;phosphor-paypal-logo,576_128,29;phosphor-peace-bold,640_128,29;phosphor-peace-duotone,704_128,29;phosphor-peace-fill,768_128,29;phosphor-peace-light,832_128,29;phosphor-peace-thin,896_128,29;phosphor-peace,960_128,29;phosphor-pen-bold,0_192,29;phosphor-pen-duotone,64_192,29;phosphor-pen-fill,128_192,29;phosphor-pen-light,192_192,29;phosphor-pen-nib-bold,256_192,29;phosphor-pen-nib-duotone,320_192,29;phosphor-pen-nib-fill,384_192,29;phosphor-pen-nib-light,448_192,29;phosphor-pen-nib-straight-bold,512_192,29;phosphor-pen-nib-straight-duotone,576_192,29;phosphor-pen-nib-straight-fill,640_192,29;phosphor-pen-nib-straight-light,704_192,29;phosphor-pen-nib-straight-thin,768_192,29;phosphor-pen-nib-straight,832_192,29;phosphor-pen-nib-thin,896_192,29;phosphor-pen-nib,960_192,29;phosphor-pen-thin,0_256,29;phosphor-pen,64_256,29;phosphor-pencil-bold,128_256,29;phosphor-pencil-circle-bold,192_256,29;phosphor-pencil-circle-duotone,256_256,29;phosphor-pencil-circle-fill,320_256,29;phosphor-pencil-circle-light,384_256,29;phosphor-pencil-circle-thin,448_256,29;phosphor-pencil-circle,512_256,29;phosphor-pencil-duotone,576_256,29;phosphor-pencil-fill,640_256,29;phosphor-pencil-light,704_256,29;phosphor-pencil-line-bold,768_256,29;phosphor-pencil-line-duotone,832_256,29;phosphor-pencil-line-fill,896_256,29;phosphor-pencil-line-light,960_256,29;phosphor-pencil-line-thin,0_320,29;phosphor-pencil-line,64_320,29;phosphor-pencil-ruler-bold,128_320,29;phosphor-pencil-ruler-duotone,192_320,29;phosphor-pencil-ruler-fill,256_320,29;phosphor-pencil-ruler-light,320_320,29;phosphor-pencil-ruler-thin,384_320,29;phosphor-pencil-ruler,448_320,29;phosphor-pencil-simple-bold,512_320,29;phosphor-pencil-simple-duotone,576_320,29;phosphor-pencil-simple-fill,640_320,29;phosphor-pencil-simple-light,704_320,29;phosphor-pencil-simple-line-bold,768_320,29;phosphor-pencil-simple-line-duotone,832_320,29;phosphor-pencil-simple-line-fill,896_320,29;phosphor-pencil-simple-line-light,960_320,29;phosphor-pencil-simple-line-thin,0_384,29;phosphor-pencil-simple-line,64_384,29;phosphor-pencil-simple-slash-bold,128_384,29;phosphor-pencil-simple-slash-duotone,192_384,29;phosphor-pencil-simple-slash-fill,256_384,29;phosphor-pencil-simple-slash-light,320_384,29;phosphor-pencil-simple-slash-thin,384_384,29;phosphor-pencil-simple-slash,448_384,29;phosphor-pencil-simple-thin,512_384,29;phosphor-pencil-simple,576_384,29;phosphor-pencil-slash-bold,640_384,29;phosphor-pencil-slash-duotone,704_384,29;phosphor-pencil-slash-fill,768_384,29;phosphor-pencil-slash-light,832_384,29;phosphor-pencil-slash-thin,896_384,29;phosphor-pencil-slash,960_384,29;phosphor-pencil-thin,0_448,29;phosphor-pencil,64_448,29;phosphor-pentagon-bold,128_448,29;phosphor-pentagon-duotone,192_448,29;phosphor-pentagon-fill,256_448,29;phosphor-pentagon-light,320_448,29;phosphor-pentagon-thin,384_448,29;phosphor-pentagon,448_448,29;phosphor-pentagram-bold,512_448,29;phosphor-pentagram-duotone,576_448,29;phosphor-pentagram-fill,640_448,29;phosphor-pentagram-light,704_448,29;phosphor-pentagram-thin,768_448,29;phosphor-pentagram,832_448,29;phosphor-pepper-bold,896_448,29;phosphor-pepper-duotone,960_448,29;phosphor-pepper-fill,0_512,29;phosphor-pepper-light,64_512,29;phosphor-pepper-thin,128_512,29;phosphor-pepper,192_512,29;phosphor-percent-bold,256_512,29;phosphor-percent-duotone,320_512,29;phosphor-percent-fill,384_512,29;phosphor-percent-light,448_512,29;phosphor-percent-thin,512_512,29;phosphor-percent,576_512,29;phosphor-person-arms-spread-bold,640_512,29;phosphor-person-arms-spread-duotone,704_512,29;phosphor-person-arms-spread-fill,768_512,29;phosphor-person-arms-spread-light,832_512,29;phosphor-person-arms-spread-thin,896_512,29;phosphor-person-arms-spread,960_512,29;phosphor-person-bold,0_576,29;phosphor-person-duotone,64_576,29;phosphor-person-fill,128_576,29;phosphor-person-light,192_576,29;phosphor-person-simple-bike-bold,256_576,29;phosphor-person-simple-bike-duotone,320_576,29;phosphor-person-simple-bike-fill,384_576,29;phosphor-person-simple-bike-light,448_576,29;phosphor-person-simple-bike-thin,512_576,29;phosphor-person-simple-bike,576_576,29;phosphor-person-simple-bold,640_576,29;phosphor-person-simple-circle-bold,704_576,29;phosphor-person-simple-circle-duotone,768_576,29;phosphor-person-simple-circle-fill,832_576,29;phosphor-person-simple-circle-light,896_576,29;phosphor-person-simple-circle-thin,960_576,29;phosphor-person-simple-circle,0_640,29;phosphor-person-simple-duotone,64_640,29;phosphor-person-simple-fill,128_640,29;phosphor-person-simple-hike-bold,192_640,29;phosphor-person-simple-hike-duotone,256_640,29;phosphor-person-simple-hike-fill,320_640,29;phosphor-person-simple-hike-light,384_640,29;phosphor-person-simple-hike-thin,448_640,29;phosphor-person-simple-hike,512_640,29;phosphor-person-simple-light,576_640,29;phosphor-person-simple-run-bold,640_640,29;phosphor-person-simple-run-duotone,704_640,29;phosphor-person-simple-run-fill,768_640,29;phosphor-person-simple-run-light,832_640,29;phosphor-person-simple-run-thin,896_640,29;phosphor-person-simple-run,960_640,29;phosphor-person-simple-ski-bold,0_704,29;phosphor-person-simple-ski-duotone,64_704,29;phosphor-person-simple-ski-fill,128_704,29;phosphor-person-simple-ski-light,192_704,29;phosphor-person-simple-ski-thin,256_704,29;phosphor-person-simple-ski,320_704,29;phosphor-person-simple-snowboard-bold,384_704,29;phosphor-person-simple-snowboard-duotone,448_704,29;phosphor-person-simple-snowboard-fill,512_704,29;phosphor-person-simple-snowboard-light,576_704,29;phosphor-person-simple-snowboard-thin,640_704,29;phosphor-person-simple-snowboard,704_704,29;phosphor-person-simple-swim-bold,768_704,29;phosphor-person-simple-swim-duotone,832_704,29;phosphor-person-simple-swim-fill,896_704,29;phosphor-person-simple-swim-light,960_704,29;phosphor-person-simple-swim-thin,0_768,29;phosphor-person-simple-swim,64_768,29;phosphor-person-simple-tai-chi-bold,128_768,29;phosphor-person-simple-tai-chi-duotone,192_768,29;phosphor-person-simple-tai-chi-fill,256_768,29;phosphor-person-simple-tai-chi-light,320_768,29;phosphor-person-simple-tai-chi-thin,384_768,29;phosphor-person-simple-tai-chi,448_768,29;phosphor-person-simple-thin,512_768,29;phosphor-person-simple-throw-bold,576_768,29;phosphor-person-simple-throw-duotone,640_768,29;phosphor-person-simple-throw-fill,704_768,29;phosphor-person-simple-throw-light,768_768,29;phosphor-person-simple-throw-thin,832_768,29;phosphor-person-simple-throw,896_768,29;phosphor-person-simple-walk-bold,960_768,29;phosphor-person-simple-walk-duotone,0_832,29;phosphor-person-simple-walk-fill,64_832,29;phosphor-person-simple-walk-light,128_832,29;phosphor-person-simple-walk-thin,192_832,29;phosphor-person-simple-walk,256_832,29;phosphor-person-simple,320_832,29;phosphor-person-thin,384_832,29;phosphor-person,448_832,29;phosphor-perspective-bold,512_832,29;phosphor-perspective-duotone,576_832,29;phosphor-perspective-fill,640_832,29;phosphor-perspective-light,704_832,29;phosphor-perspective-thin,768_832,29;phosphor-perspective,832_832,29;phosphor-phone-bold,896_832,29;phosphor-phone-call-bold,960_832,29;phosphor-phone-call-duotone,0_896,29;phosphor-phone-call-fill,64_896,29;phosphor-phone-call-light,128_896,29;phosphor-phone-call-thin,192_896,29;phosphor-phone-call,256_896,29;phosphor-phone-disconnect-bold,320_896,29;phosphor-phone-disconnect-duotone,384_896,29;phosphor-phone-disconnect-fill,448_896,29;phosphor-phone-disconnect-light,512_896,29;phosphor-phone-disconnect-thin,576_896,29;phosphor-phone-disconnect,640_896,29;phosphor-phone-duotone,704_896,29;phosphor-phone-fill,768_896,29;phosphor-phone-incoming-bold,832_896,29;phosphor-phone-incoming-duotone,896_896,29;phosphor-phone-incoming-fill,960_896,29;phosphor-phone-incoming-light,0_960,29;phosphor-phone-incoming-thin,64_960,29;phosphor-phone-incoming,128_960,29;phosphor-phone-light,192_960,29;phosphor-phone-list-bold,256_960,29;phosphor-phone-list-duotone,320_960,29;phosphor-phone-list-fill,384_960,29;phosphor-phone-list-light,448_960,29;phosphor-phone-list-thin,512_960,29;phosphor-phone-list,576_960,29;phosphor-phone-outgoing-bold,640_960,29;phosphor-phone-outgoing-duotone,704_960,29;phosphor-phone-outgoing-fill,768_960,29;phosphor-phone-outgoing-light,832_960,29;phosphor-phone-outgoing-thin,896_960,29;phosphor-phone-outgoing,960_960,29;phosphor-phone-pause-bold,0_0,30;phosphor-phone-pause-duotone,64_0,30;phosphor-phone-pause-fill,128_0,30;phosphor-phone-pause-light,192_0,30;phosphor-phone-pause-thin,256_0,30;phosphor-phone-pause,320_0,30;phosphor-phone-plus-bold,384_0,30;phosphor-phone-plus-duotone,448_0,30;phosphor-phone-plus-fill,512_0,30;phosphor-phone-plus-light,576_0,30;phosphor-phone-plus-thin,640_0,30;phosphor-phone-plus,704_0,30;phosphor-phone-slash-bold,768_0,30;phosphor-phone-slash-duotone,832_0,30;phosphor-phone-slash-fill,896_0,30;phosphor-phone-slash-light,960_0,30;phosphor-phone-slash-thin,0_64,30;phosphor-phone-slash,64_64,30;phosphor-phone-thin,128_64,30;phosphor-phone-transfer-bold,192_64,30;phosphor-phone-transfer-duotone,256_64,30;phosphor-phone-transfer-fill,320_64,30;phosphor-phone-transfer-light,384_64,30;phosphor-phone-transfer-thin,448_64,30;phosphor-phone-transfer,512_64,30;phosphor-phone-x-bold,576_64,30;phosphor-phone-x-duotone,640_64,30;phosphor-phone-x-fill,704_64,30;phosphor-phone-x-light,768_64,30;phosphor-phone-x-thin,832_64,30;phosphor-phone-x,896_64,30;phosphor-phone,960_64,30;phosphor-phosphor-logo-bold,0_128,30;phosphor-phosphor-logo-duotone,64_128,30;phosphor-phosphor-logo-fill,128_128,30;phosphor-phosphor-logo-light,192_128,30;phosphor-phosphor-logo-thin,256_128,30;phosphor-phosphor-logo,320_128,30;phosphor-pi-bold,384_128,30;phosphor-pi-duotone,448_128,30;phosphor-pi-fill,512_128,30;phosphor-pi-light,576_128,30;phosphor-pi-thin,640_128,30;phosphor-pi,704_128,30;phosphor-piano-keys-bold,768_128,30;phosphor-piano-keys-duotone,832_128,30;phosphor-piano-keys-fill,896_128,30;phosphor-piano-keys-light,960_128,30;phosphor-piano-keys-thin,0_192,30;phosphor-piano-keys,64_192,30;phosphor-picnic-table-bold,128_192,30;phosphor-picnic-table-duotone,192_192,30;phosphor-picnic-table-fill,256_192,30;phosphor-picnic-table-light,320_192,30;phosphor-picnic-table-thin,384_192,30;phosphor-picnic-table,448_192,30;phosphor-picture-in-picture-bold,512_192,30;phosphor-picture-in-picture-duotone,576_192,30;phosphor-picture-in-picture-fill,640_192,30;phosphor-picture-in-picture-light,704_192,30;phosphor-picture-in-picture-thin,768_192,30;phosphor-picture-in-picture,832_192,30;phosphor-piggy-bank-bold,896_192,30;phosphor-piggy-bank-duotone,960_192,30;phosphor-piggy-bank-fill,0_256,30;phosphor-piggy-bank-light,64_256,30;phosphor-piggy-bank-thin,128_256,30;phosphor-piggy-bank,192_256,30;phosphor-pill-bold,256_256,30;phosphor-pill-duotone,320_256,30;phosphor-pill-fill,384_256,30;phosphor-pill-light,448_256,30;phosphor-pill-thin,512_256,30;phosphor-pill,576_256,30;phosphor-ping-pong-bold,640_256,30;phosphor-ping-pong-duotone,704_256,30;phosphor-ping-pong-fill,768_256,30;phosphor-ping-pong-light,832_256,30;phosphor-ping-pong-thin,896_256,30;phosphor-ping-pong,960_256,30;phosphor-pint-glass-bold,0_320,30;phosphor-pint-glass-duotone,64_320,30;phosphor-pint-glass-fill,128_320,30;phosphor-pint-glass-light,192_320,30;phosphor-pint-glass-thin,256_320,30;phosphor-pint-glass,320_320,30;phosphor-pinterest-logo-bold,384_320,30;phosphor-pinterest-logo-duotone,448_320,30;phosphor-pinterest-logo-fill,512_320,30;phosphor-pinterest-logo-light,576_320,30;phosphor-pinterest-logo-thin,640_320,30;phosphor-pinterest-logo,704_320,30;phosphor-pinwheel-bold,768_320,30;phosphor-pinwheel-duotone,832_320,30;phosphor-pinwheel-fill,896_320,30;phosphor-pinwheel-light,960_320,30;phosphor-pinwheel-thin,0_384,30;phosphor-pinwheel,64_384,30;phosphor-pipe-bold,128_384,30;phosphor-pipe-duotone,192_384,30;phosphor-pipe-fill,256_384,30;phosphor-pipe-light,320_384,30;phosphor-pipe-thin,384_384,30;phosphor-pipe-wrench-bold,448_384,30;phosphor-pipe-wrench-duotone,512_384,30;phosphor-pipe-wrench-fill,576_384,30;phosphor-pipe-wrench-light,640_384,30;phosphor-pipe-wrench-thin,704_384,30;phosphor-pipe-wrench,768_384,30;phosphor-pipe,832_384,30;phosphor-pix-logo-bold,896_384,30;phosphor-pix-logo-duotone,960_384,30;phosphor-pix-logo-fill,0_448,30;phosphor-pix-logo-light,64_448,30;phosphor-pix-logo-thin,128_448,30;phosphor-pix-logo,192_448,30;phosphor-pizza-bold,256_448,30;phosphor-pizza-duotone,320_448,30;phosphor-pizza-fill,384_448,30;phosphor-pizza-light,448_448,30;phosphor-pizza-thin,512_448,30;phosphor-pizza,576_448,30;phosphor-placeholder-bold,640_448,30;phosphor-placeholder-duotone,704_448,30;phosphor-placeholder-fill,768_448,30;phosphor-placeholder-light,832_448,30;phosphor-placeholder-thin,896_448,30;phosphor-placeholder,960_448,30;phosphor-planet-bold,0_512,30;phosphor-planet-duotone,64_512,30;phosphor-planet-fill,128_512,30;phosphor-planet-light,192_512,30;phosphor-planet-thin,256_512,30;phosphor-planet,320_512,30;phosphor-plant-bold,384_512,30;phosphor-plant-duotone,448_512,30;phosphor-plant-fill,512_512,30;phosphor-plant-light,576_512,30;phosphor-plant-thin,640_512,30;phosphor-plant,704_512,30;phosphor-play-bold,768_512,30;phosphor-play-circle-bold,832_512,30;phosphor-play-circle-duotone,896_512,30;phosphor-play-circle-fill,960_512,30;phosphor-play-circle-light,0_576,30;phosphor-play-circle-thin,64_576,30;phosphor-play-circle,128_576,30;phosphor-play-duotone,192_576,30;phosphor-play-fill,256_576,30;phosphor-play-light,320_576,30;phosphor-play-pause-bold,384_576,30;phosphor-play-pause-duotone,448_576,30;phosphor-play-pause-fill,512_576,30;phosphor-play-pause-light,576_576,30;phosphor-play-pause-thin,640_576,30;phosphor-play-pause,704_576,30;phosphor-play-thin,768_576,30;phosphor-play,832_576,30;phosphor-playlist-bold,896_576,30;phosphor-playlist-duotone,960_576,30;phosphor-playlist-fill,0_640,30;phosphor-playlist-light,64_640,30;phosphor-playlist-thin,128_640,30;phosphor-playlist,192_640,30;phosphor-plug-bold,256_640,30;phosphor-plug-charging-bold,320_640,30;phosphor-plug-charging-duotone,384_640,30;phosphor-plug-charging-fill,448_640,30;phosphor-plug-charging-light,512_640,30;phosphor-plug-charging-thin,576_640,30;phosphor-plug-charging,640_640,30;phosphor-plug-duotone,704_640,30;phosphor-plug-fill,768_640,30;phosphor-plug-light,832_640,30;phosphor-plug-thin,896_640,30;phosphor-plug,960_640,30;phosphor-plugs-bold,0_704,30;phosphor-plugs-connected-bold,64_704,30;phosphor-plugs-connected-duotone,128_704,30;phosphor-plugs-connected-fill,192_704,30;phosphor-plugs-connected-light,256_704,30;phosphor-plugs-connected-thin,320_704,30;phosphor-plugs-connected,384_704,30;phosphor-plugs-duotone,448_704,30;phosphor-plugs-fill,512_704,30;phosphor-plugs-light,576_704,30;phosphor-plugs-thin,640_704,30;phosphor-plugs,704_704,30;phosphor-plus-bold,768_704,30;phosphor-plus-circle-bold,832_704,30;phosphor-plus-circle-duotone,896_704,30;phosphor-plus-circle-fill,960_704,30;phosphor-plus-circle-light,0_768,30;phosphor-plus-circle-thin,64_768,30;phosphor-plus-circle,128_768,30;phosphor-plus-duotone,192_768,30;phosphor-plus-fill,256_768,30;phosphor-plus-light,320_768,30;phosphor-plus-minus-bold,384_768,30;phosphor-plus-minus-duotone,448_768,30;phosphor-plus-minus-fill,512_768,30;phosphor-plus-minus-light,576_768,30;phosphor-plus-minus-thin,640_768,30;phosphor-plus-minus,704_768,30;phosphor-plus-square-bold,768_768,30;phosphor-plus-square-duotone,832_768,30;phosphor-plus-square-fill,896_768,30;phosphor-plus-square-light,960_768,30;phosphor-plus-square-thin,0_832,30;phosphor-plus-square,64_832,30;phosphor-plus-thin,128_832,30;phosphor-plus,192_832,30;phosphor-poker-chip-bold,256_832,30;phosphor-poker-chip-duotone,320_832,30;phosphor-poker-chip-fill,384_832,30;phosphor-poker-chip-light,448_832,30;phosphor-poker-chip-thin,512_832,30;phosphor-poker-chip,576_832,30;phosphor-police-car-bold,640_832,30;phosphor-police-car-duotone,704_832,30;phosphor-police-car-fill,768_832,30;phosphor-police-car-light,832_832,30;phosphor-police-car-thin,896_832,30;phosphor-police-car,960_832,30;phosphor-polygon-bold,0_896,30;phosphor-polygon-duotone,64_896,30;phosphor-polygon-fill,128_896,30;phosphor-polygon-light,192_896,30;phosphor-polygon-thin,256_896,30;phosphor-polygon,320_896,30;phosphor-popcorn-bold,384_896,30;phosphor-popcorn-duotone,448_896,30;phosphor-popcorn-fill,512_896,30;phosphor-popcorn-light,576_896,30;phosphor-popcorn-thin,640_896,30;phosphor-popcorn,704_896,30;phosphor-popsicle-bold,768_896,30;phosphor-popsicle-duotone,832_896,30;phosphor-popsicle-fill,896_896,30;phosphor-popsicle-light,960_896,30;phosphor-popsicle-thin,0_960,30;phosphor-popsicle,64_960,30;phosphor-potted-plant-bold,128_960,30;phosphor-potted-plant-duotone,192_960,30;phosphor-potted-plant-fill,256_960,30;phosphor-potted-plant-light,320_960,30;phosphor-potted-plant-thin,384_960,30;phosphor-potted-plant,448_960,30;phosphor-power-bold,512_960,30;phosphor-power-duotone,576_960,30;phosphor-power-fill,640_960,30;phosphor-power-light,704_960,30;phosphor-power-thin,768_960,30;phosphor-power,832_960,30;phosphor-prescription-bold,896_960,30;phosphor-prescription-duotone,960_960,30;phosphor-prescription-fill,0_0,31;phosphor-prescription-light,64_0,31;phosphor-prescription-thin,128_0,31;phosphor-prescription,192_0,31;phosphor-presentation-bold,256_0,31;phosphor-presentation-chart-bold,320_0,31;phosphor-presentation-chart-duotone,384_0,31;phosphor-presentation-chart-fill,448_0,31;phosphor-presentation-chart-light,512_0,31;phosphor-presentation-chart-thin,576_0,31;phosphor-presentation-chart,640_0,31;phosphor-presentation-duotone,704_0,31;phosphor-presentation-fill,768_0,31;phosphor-presentation-light,832_0,31;phosphor-presentation-thin,896_0,31;phosphor-presentation,960_0,31;phosphor-printer-bold,0_64,31;phosphor-printer-duotone,64_64,31;phosphor-printer-fill,128_64,31;phosphor-printer-light,192_64,31;phosphor-printer-thin,256_64,31;phosphor-printer,320_64,31;phosphor-prohibit-bold,384_64,31;phosphor-prohibit-duotone,448_64,31;phosphor-prohibit-fill,512_64,31;phosphor-prohibit-inset-bold,576_64,31;phosphor-prohibit-inset-duotone,640_64,31;phosphor-prohibit-inset-fill,704_64,31;phosphor-prohibit-inset-light,768_64,31;phosphor-prohibit-inset-thin,832_64,31;phosphor-prohibit-inset,896_64,31;phosphor-prohibit-light,960_64,31;phosphor-prohibit-thin,0_128,31;phosphor-prohibit,64_128,31;phosphor-projector-screen-bold,128_128,31;phosphor-projector-screen-chart-bold,192_128,31;phosphor-projector-screen-chart-duotone,256_128,31;phosphor-projector-screen-chart-fill,320_128,31;phosphor-projector-screen-chart-light,384_128,31;phosphor-projector-screen-chart-thin,448_128,31;phosphor-projector-screen-chart,512_128,31;phosphor-projector-screen-duotone,576_128,31;phosphor-projector-screen-fill,640_128,31;phosphor-projector-screen-light,704_128,31;phosphor-projector-screen-thin,768_128,31;phosphor-projector-screen,832_128,31;phosphor-pulse-bold,896_128,31;phosphor-pulse-duotone,960_128,31;phosphor-pulse-fill,0_192,31;phosphor-pulse-light,64_192,31;phosphor-pulse-thin,128_192,31;phosphor-pulse,192_192,31;phosphor-push-pin-bold,256_192,31;phosphor-push-pin-duotone,320_192,31;phosphor-push-pin-fill,384_192,31;phosphor-push-pin-light,448_192,31;phosphor-push-pin-simple-bold,512_192,31;phosphor-push-pin-simple-duotone,576_192,31;phosphor-push-pin-simple-fill,640_192,31;phosphor-push-pin-simple-light,704_192,31;phosphor-push-pin-simple-slash-bold,768_192,31;phosphor-push-pin-simple-slash-duotone,832_192,31;phosphor-push-pin-simple-slash-fill,896_192,31;phosphor-push-pin-simple-slash-light,960_192,31;phosphor-push-pin-simple-slash-thin,0_256,31;phosphor-push-pin-simple-slash,64_256,31;phosphor-push-pin-simple-thin,128_256,31;phosphor-push-pin-simple,192_256,31;phosphor-push-pin-slash-bold,256_256,31;phosphor-push-pin-slash-duotone,320_256,31;phosphor-push-pin-slash-fill,384_256,31;phosphor-push-pin-slash-light,448_256,31;phosphor-push-pin-slash-thin,512_256,31;phosphor-push-pin-slash,576_256,31;phosphor-push-pin-thin,640_256,31;phosphor-push-pin,704_256,31;phosphor-puzzle-piece-bold,768_256,31;phosphor-puzzle-piece-duotone,832_256,31;phosphor-puzzle-piece-fill,896_256,31;phosphor-puzzle-piece-light,960_256,31;phosphor-puzzle-piece-thin,0_320,31;phosphor-puzzle-piece,64_320,31;phosphor-qr-code-bold,128_320,31;phosphor-qr-code-duotone,192_320,31;phosphor-qr-code-fill,256_320,31;phosphor-qr-code-light,320_320,31;phosphor-qr-code-thin,384_320,31;phosphor-qr-code,448_320,31;phosphor-question-bold,512_320,31;phosphor-question-duotone,576_320,31;phosphor-question-fill,640_320,31;phosphor-question-light,704_320,31;phosphor-question-mark-bold,768_320,31;phosphor-question-mark-duotone,832_320,31;phosphor-question-mark-fill,896_320,31;phosphor-question-mark-light,960_320,31;phosphor-question-mark-thin,0_384,31;phosphor-question-mark,64_384,31;phosphor-question-thin,128_384,31;phosphor-question,192_384,31;phosphor-queue-bold,256_384,31;phosphor-queue-duotone,320_384,31;phosphor-queue-fill,384_384,31;phosphor-queue-light,448_384,31;phosphor-queue-thin,512_384,31;phosphor-queue,576_384,31;phosphor-quotes-bold,640_384,31;phosphor-quotes-duotone,704_384,31;phosphor-quotes-fill,768_384,31;phosphor-quotes-light,832_384,31;phosphor-quotes-thin,896_384,31;phosphor-quotes,960_384,31;phosphor-rabbit-bold,0_448,31;phosphor-rabbit-duotone,64_448,31;phosphor-rabbit-fill,128_448,31;phosphor-rabbit-light,192_448,31;phosphor-rabbit-thin,256_448,31;phosphor-rabbit,320_448,31;phosphor-racquet-bold,384_448,31;phosphor-racquet-duotone,448_448,31;phosphor-racquet-fill,512_448,31;phosphor-racquet-light,576_448,31;phosphor-racquet-thin,640_448,31;phosphor-racquet,704_448,31;phosphor-radical-bold,768_448,31;phosphor-radical-duotone,832_448,31;phosphor-radical-fill,896_448,31;phosphor-radical-light,960_448,31;phosphor-radical-thin,0_512,31;phosphor-radical,64_512,31;phosphor-radio-bold,128_512,31;phosphor-radio-button-bold,192_512,31;phosphor-radio-button-duotone,256_512,31;phosphor-radio-button-fill,320_512,31;phosphor-radio-button-light,384_512,31;phosphor-radio-button-thin,448_512,31;phosphor-radio-button,512_512,31;phosphor-radio-duotone,576_512,31;phosphor-radio-fill,640_512,31;phosphor-radio-light,704_512,31;phosphor-radio-thin,768_512,31;phosphor-radio,832_512,31;phosphor-radioactive-bold,896_512,31;phosphor-radioactive-duotone,960_512,31;phosphor-radioactive-fill,0_576,31;phosphor-radioactive-light,64_576,31;phosphor-radioactive-thin,128_576,31;phosphor-radioactive,192_576,31;phosphor-rainbow-bold,256_576,31;phosphor-rainbow-cloud-bold,320_576,31;phosphor-rainbow-cloud-duotone,384_576,31;phosphor-rainbow-cloud-fill,448_576,31;phosphor-rainbow-cloud-light,512_576,31;phosphor-rainbow-cloud-thin,576_576,31;phosphor-rainbow-cloud,640_576,31;phosphor-rainbow-duotone,704_576,31;phosphor-rainbow-fill,768_576,31;phosphor-rainbow-light,832_576,31;phosphor-rainbow-thin,896_576,31;phosphor-rainbow,960_576,31;phosphor-ranking-bold,0_640,31;phosphor-ranking-duotone,64_640,31;phosphor-ranking-fill,128_640,31;phosphor-ranking-light,192_640,31;phosphor-ranking-thin,256_640,31;phosphor-ranking,320_640,31;phosphor-read-cv-logo-bold,384_640,31;phosphor-read-cv-logo-duotone,448_640,31;phosphor-read-cv-logo-fill,512_640,31;phosphor-read-cv-logo-light,576_640,31;phosphor-read-cv-logo-thin,640_640,31;phosphor-read-cv-logo,704_640,31;phosphor-receipt-bold,768_640,31;phosphor-receipt-duotone,832_640,31;phosphor-receipt-fill,896_640,31;phosphor-receipt-light,960_640,31;phosphor-receipt-thin,0_704,31;phosphor-receipt-x-bold,64_704,31;phosphor-receipt-x-duotone,128_704,31;phosphor-receipt-x-fill,192_704,31;phosphor-receipt-x-light,256_704,31;phosphor-receipt-x-thin,320_704,31;phosphor-receipt-x,384_704,31;phosphor-receipt,448_704,31;phosphor-record-bold,512_704,31;phosphor-record-duotone,576_704,31;phosphor-record-fill,640_704,31;phosphor-record-light,704_704,31;phosphor-record-thin,768_704,31;phosphor-record,832_704,31;phosphor-rectangle-bold,896_704,31;phosphor-rectangle-dashed-bold,960_704,31;phosphor-rectangle-dashed-duotone,0_768,31;phosphor-rectangle-dashed-fill,64_768,31;phosphor-rectangle-dashed-light,128_768,31;phosphor-rectangle-dashed-thin,192_768,31;phosphor-rectangle-dashed,256_768,31;phosphor-rectangle-duotone,320_768,31;phosphor-rectangle-fill,384_768,31;phosphor-rectangle-light,448_768,31;phosphor-rectangle-thin,512_768,31;phosphor-rectangle,576_768,31;phosphor-recycle-bold,640_768,31;phosphor-recycle-duotone,704_768,31;phosphor-recycle-fill,768_768,31;phosphor-recycle-light,832_768,31;phosphor-recycle-thin,896_768,31;phosphor-recycle,960_768,31;phosphor-reddit-logo-bold,0_832,31;phosphor-reddit-logo-duotone,64_832,31;phosphor-reddit-logo-fill,128_832,31;phosphor-reddit-logo-light,192_832,31;phosphor-reddit-logo-thin,256_832,31;phosphor-reddit-logo,320_832,31;phosphor-repeat-bold,384_832,31;phosphor-repeat-duotone,448_832,31;phosphor-repeat-fill,512_832,31;phosphor-repeat-light,576_832,31;phosphor-repeat-once-bold,640_832,31;phosphor-repeat-once-duotone,704_832,31;phosphor-repeat-once-fill,768_832,31;phosphor-repeat-once-light,832_832,31;phosphor-repeat-once-thin,896_832,31;phosphor-repeat-once,960_832,31;phosphor-repeat-thin,0_896,31;phosphor-repeat,64_896,31;phosphor-replit-logo-bold,128_896,31;phosphor-replit-logo-duotone,192_896,31;phosphor-replit-logo-fill,256_896,31;phosphor-replit-logo-light,320_896,31;phosphor-replit-logo-thin,384_896,31;phosphor-replit-logo,448_896,31;phosphor-resize-bold,512_896,31;phosphor-resize-duotone,576_896,31;phosphor-resize-fill,640_896,31;phosphor-resize-light,704_896,31;phosphor-resize-thin,768_896,31;phosphor-resize,832_896,31;phosphor-rewind-bold,896_896,31;phosphor-rewind-circle-bold,960_896,31;phosphor-rewind-circle-duotone,0_960,31;phosphor-rewind-circle-fill,64_960,31;phosphor-rewind-circle-light,128_960,31;phosphor-rewind-circle-thin,192_960,31;phosphor-rewind-circle,256_960,31;phosphor-rewind-duotone,320_960,31;phosphor-rewind-fill,384_960,31;phosphor-rewind-light,448_960,31;phosphor-rewind-thin,512_960,31;phosphor-rewind,576_960,31;phosphor-road-horizon-bold,640_960,31;phosphor-road-horizon-duotone,704_960,31;phosphor-road-horizon-fill,768_960,31;phosphor-road-horizon-light,832_960,31;phosphor-road-horizon-thin,896_960,31;phosphor-road-horizon,960_960,31;phosphor-robot-bold,0_0,32;phosphor-robot-duotone,64_0,32;phosphor-robot-fill,128_0,32;phosphor-robot-light,192_0,32;phosphor-robot-thin,256_0,32;phosphor-robot,320_0,32;phosphor-rocket-bold,384_0,32;phosphor-rocket-duotone,448_0,32;phosphor-rocket-fill,512_0,32;phosphor-rocket-launch-bold,576_0,32;phosphor-rocket-launch-duotone,640_0,32;phosphor-rocket-launch-fill,704_0,32;phosphor-rocket-launch-light,768_0,32;phosphor-rocket-launch-thin,832_0,32;phosphor-rocket-launch,896_0,32;phosphor-rocket-light,960_0,32;phosphor-rocket-thin,0_64,32;phosphor-rocket,64_64,32;phosphor-rows-bold,128_64,32;phosphor-rows-duotone,192_64,32;phosphor-rows-fill,256_64,32;phosphor-rows-light,320_64,32;phosphor-rows-plus-bottom-bold,384_64,32;phosphor-rows-plus-bottom-duotone,448_64,32;phosphor-rows-plus-bottom-fill,512_64,32;phosphor-rows-plus-bottom-light,576_64,32;phosphor-rows-plus-bottom-thin,640_64,32;phosphor-rows-plus-bottom,704_64,32;phosphor-rows-plus-top-bold,768_64,32;phosphor-rows-plus-top-duotone,832_64,32;phosphor-rows-plus-top-fill,896_64,32;phosphor-rows-plus-top-light,960_64,32;phosphor-rows-plus-top-thin,0_128,32;phosphor-rows-plus-top,64_128,32;phosphor-rows-thin,128_128,32;phosphor-rows,192_128,32;phosphor-rss-bold,256_128,32;phosphor-rss-duotone,320_128,32;phosphor-rss-fill,384_128,32;phosphor-rss-light,448_128,32;phosphor-rss-simple-bold,512_128,32;phosphor-rss-simple-duotone,576_128,32;phosphor-rss-simple-fill,640_128,32;phosphor-rss-simple-light,704_128,32;phosphor-rss-simple-thin,768_128,32;phosphor-rss-simple,832_128,32;phosphor-rss-thin,896_128,32;phosphor-rss,960_128,32;phosphor-rug-bold,0_192,32;phosphor-rug-duotone,64_192,32;phosphor-rug-fill,128_192,32;phosphor-rug-light,192_192,32;phosphor-rug-thin,256_192,32;phosphor-rug,320_192,32;phosphor-ruler-bold,384_192,32;phosphor-ruler-duotone,448_192,32;phosphor-ruler-fill,512_192,32;phosphor-ruler-light,576_192,32;phosphor-ruler-thin,640_192,32;phosphor-ruler,704_192,32;phosphor-sailboat-bold,768_192,32;phosphor-sailboat-duotone,832_192,32;phosphor-sailboat-fill,896_192,32;phosphor-sailboat-light,960_192,32;phosphor-sailboat-thin,0_256,32;phosphor-sailboat,64_256,32;phosphor-scales-bold,128_256,32;phosphor-scales-duotone,192_256,32;phosphor-scales-fill,256_256,32;phosphor-scales-light,320_256,32;phosphor-scales-thin,384_256,32;phosphor-scales,448_256,32;phosphor-scan-bold,512_256,32;phosphor-scan-duotone,576_256,32;phosphor-scan-fill,640_256,32;phosphor-scan-light,704_256,32;phosphor-scan-smiley-bold,768_256,32;phosphor-scan-smiley-duotone,832_256,32;phosphor-scan-smiley-fill,896_256,32;phosphor-scan-smiley-light,960_256,32;phosphor-scan-smiley-thin,0_320,32;phosphor-scan-smiley,64_320,32;phosphor-scan-thin,128_320,32;phosphor-scan,192_320,32;phosphor-scissors-bold,256_320,32;phosphor-scissors-duotone,320_320,32;phosphor-scissors-fill,384_320,32;phosphor-scissors-light,448_320,32;phosphor-scissors-thin,512_320,32;phosphor-scissors,576_320,32;phosphor-scooter-bold,640_320,32;phosphor-scooter-duotone,704_320,32;phosphor-scooter-fill,768_320,32;phosphor-scooter-light,832_320,32;phosphor-scooter-thin,896_320,32;phosphor-scooter,960_320,32;phosphor-screencast-bold,0_384,32;phosphor-screencast-duotone,64_384,32;phosphor-screencast-fill,128_384,32;phosphor-screencast-light,192_384,32;phosphor-screencast-thin,256_384,32;phosphor-screencast,320_384,32;phosphor-screwdriver-bold,384_384,32;phosphor-screwdriver-duotone,448_384,32;phosphor-screwdriver-fill,512_384,32;phosphor-screwdriver-light,576_384,32;phosphor-screwdriver-thin,640_384,32;phosphor-screwdriver,704_384,32;phosphor-scribble-bold,768_384,32;phosphor-scribble-duotone,832_384,32;phosphor-scribble-fill,896_384,32;phosphor-scribble-light,960_384,32;phosphor-scribble-loop-bold,0_448,32;phosphor-scribble-loop-duotone,64_448,32;phosphor-scribble-loop-fill,128_448,32;phosphor-scribble-loop-light,192_448,32;phosphor-scribble-loop-thin,256_448,32;phosphor-scribble-loop,320_448,32;phosphor-scribble-thin,384_448,32;phosphor-scribble,448_448,32;phosphor-scroll-bold,512_448,32;phosphor-scroll-duotone,576_448,32;phosphor-scroll-fill,640_448,32;phosphor-scroll-light,704_448,32;phosphor-scroll-thin,768_448,32;phosphor-scroll,832_448,32;phosphor-seal-bold,896_448,32;phosphor-seal-check-bold,960_448,32;phosphor-seal-check-duotone,0_512,32;phosphor-seal-check-fill,64_512,32;phosphor-seal-check-light,128_512,32;phosphor-seal-check-thin,192_512,32;phosphor-seal-check,256_512,32;phosphor-seal-duotone,320_512,32;phosphor-seal-fill,384_512,32;phosphor-seal-light,448_512,32;phosphor-seal-percent-bold,512_512,32;phosphor-seal-percent-duotone,576_512,32;phosphor-seal-percent-fill,640_512,32;phosphor-seal-percent-light,704_512,32;phosphor-seal-percent-thin,768_512,32;phosphor-seal-percent,832_512,32;phosphor-seal-question-bold,896_512,32;phosphor-seal-question-duotone,960_512,32;phosphor-seal-question-fill,0_576,32;phosphor-seal-question-light,64_576,32;phosphor-seal-question-thin,128_576,32;phosphor-seal-question,192_576,32;phosphor-seal-thin,256_576,32;phosphor-seal-warning-bold,320_576,32;phosphor-seal-warning-duotone,384_576,32;phosphor-seal-warning-fill,448_576,32;phosphor-seal-warning-light,512_576,32;phosphor-seal-warning-thin,576_576,32;phosphor-seal-warning,640_576,32;phosphor-seal,704_576,32;phosphor-seat-bold,768_576,32;phosphor-seat-duotone,832_576,32;phosphor-seat-fill,896_576,32;phosphor-seat-light,960_576,32;phosphor-seat-thin,0_640,32;phosphor-seat,64_640,32;phosphor-seatbelt-bold,128_640,32;phosphor-seatbelt-duotone,192_640,32;phosphor-seatbelt-fill,256_640,32;phosphor-seatbelt-light,320_640,32;phosphor-seatbelt-thin,384_640,32;phosphor-seatbelt,448_640,32;phosphor-security-camera-bold,512_640,32;phosphor-security-camera-duotone,576_640,32;phosphor-security-camera-fill,640_640,32;phosphor-security-camera-light,704_640,32;phosphor-security-camera-thin,768_640,32;phosphor-security-camera,832_640,32;phosphor-selection-all-bold,896_640,32;phosphor-selection-all-duotone,960_640,32;phosphor-selection-all-fill,0_704,32;phosphor-selection-all-light,64_704,32;phosphor-selection-all-thin,128_704,32;phosphor-selection-all,192_704,32;phosphor-selection-background-bold,256_704,32;phosphor-selection-background-duotone,320_704,32;phosphor-selection-background-fill,384_704,32;phosphor-selection-background-light,448_704,32;phosphor-selection-background-thin,512_704,32;phosphor-selection-background,576_704,32;phosphor-selection-bold,640_704,32;phosphor-selection-duotone,704_704,32;phosphor-selection-fill,768_704,32;phosphor-selection-foreground-bold,832_704,32;phosphor-selection-foreground-duotone,896_704,32;phosphor-selection-foreground-fill,960_704,32;phosphor-selection-foreground-light,0_768,32;phosphor-selection-foreground-thin,64_768,32;phosphor-selection-foreground,128_768,32;phosphor-selection-inverse-bold,192_768,32;phosphor-selection-inverse-duotone,256_768,32;phosphor-selection-inverse-fill,320_768,32;phosphor-selection-inverse-light,384_768,32;phosphor-selection-inverse-thin,448_768,32;phosphor-selection-inverse,512_768,32;phosphor-selection-light,576_768,32;phosphor-selection-plus-bold,640_768,32;phosphor-selection-plus-duotone,704_768,32;phosphor-selection-plus-fill,768_768,32;phosphor-selection-plus-light,832_768,32;phosphor-selection-plus-thin,896_768,32;phosphor-selection-plus,960_768,32;phosphor-selection-slash-bold,0_832,32;phosphor-selection-slash-duotone,64_832,32;phosphor-selection-slash-fill,128_832,32;phosphor-selection-slash-light,192_832,32;phosphor-selection-slash-thin,256_832,32;phosphor-selection-slash,320_832,32;phosphor-selection-thin,384_832,32;phosphor-selection,448_832,32;phosphor-shapes-bold,512_832,32;phosphor-shapes-duotone,576_832,32;phosphor-shapes-fill,640_832,32;phosphor-shapes-light,704_832,32;phosphor-shapes-thin,768_832,32;phosphor-shapes,832_832,32;phosphor-share-bold,896_832,32;phosphor-share-duotone,960_832,32;phosphor-share-fat-bold,0_896,32;phosphor-share-fat-duotone,64_896,32;phosphor-share-fat-fill,128_896,32;phosphor-share-fat-light,192_896,32;phosphor-share-fat-thin,256_896,32;phosphor-share-fat,320_896,32;phosphor-share-fill,384_896,32;phosphor-share-light,448_896,32;phosphor-share-network-bold,512_896,32;phosphor-share-network-duotone,576_896,32;phosphor-share-network-fill,640_896,32;phosphor-share-network-light,704_896,32;phosphor-share-network-thin,768_896,32;phosphor-share-network,832_896,32;phosphor-share-thin,896_896,32;phosphor-share,960_896,32;phosphor-shield-bold,0_960,32;phosphor-shield-check-bold,64_960,32;phosphor-shield-check-duotone,128_960,32;phosphor-shield-check-fill,192_960,32;phosphor-shield-check-light,256_960,32;phosphor-shield-check-thin,320_960,32;phosphor-shield-check,384_960,32;phosphor-shield-checkered-bold,448_960,32;phosphor-shield-checkered-duotone,512_960,32;phosphor-shield-checkered-fill,576_960,32;phosphor-shield-checkered-light,640_960,32;phosphor-shield-checkered-thin,704_960,32;phosphor-shield-checkered,768_960,32;phosphor-shield-chevron-bold,832_960,32;phosphor-shield-chevron-duotone,896_960,32;phosphor-shield-chevron-fill,960_960,32;phosphor-shield-chevron-light,0_0,33;phosphor-shield-chevron-thin,64_0,33;phosphor-shield-chevron,128_0,33;phosphor-shield-duotone,192_0,33;phosphor-shield-fill,256_0,33;phosphor-shield-light,320_0,33;phosphor-shield-plus-bold,384_0,33;phosphor-shield-plus-duotone,448_0,33;phosphor-shield-plus-fill,512_0,33;phosphor-shield-plus-light,576_0,33;phosphor-shield-plus-thin,640_0,33;phosphor-shield-plus,704_0,33;phosphor-shield-slash-bold,768_0,33;phosphor-shield-slash-duotone,832_0,33;phosphor-shield-slash-fill,896_0,33;phosphor-shield-slash-light,960_0,33;phosphor-shield-slash-thin,0_64,33;phosphor-shield-slash,64_64,33;phosphor-shield-star-bold,128_64,33;phosphor-shield-star-duotone,192_64,33;phosphor-shield-star-fill,256_64,33;phosphor-shield-star-light,320_64,33;phosphor-shield-star-thin,384_64,33;phosphor-shield-star,448_64,33;phosphor-shield-thin,512_64,33;phosphor-shield-warning-bold,576_64,33;phosphor-shield-warning-duotone,640_64,33;phosphor-shield-warning-fill,704_64,33;phosphor-shield-warning-light,768_64,33;phosphor-shield-warning-thin,832_64,33;phosphor-shield-warning,896_64,33;phosphor-shield,960_64,33;phosphor-shipping-container-bold,0_128,33;phosphor-shipping-container-duotone,64_128,33;phosphor-shipping-container-fill,128_128,33;phosphor-shipping-container-light,192_128,33;phosphor-shipping-container-thin,256_128,33;phosphor-shipping-container,320_128,33;phosphor-shirt-folded-bold,384_128,33;phosphor-shirt-folded-duotone,448_128,33;phosphor-shirt-folded-fill,512_128,33;phosphor-shirt-folded-light,576_128,33;phosphor-shirt-folded-thin,640_128,33;phosphor-shirt-folded,704_128,33;phosphor-shooting-star-bold,768_128,33;phosphor-shooting-star-duotone,832_128,33;phosphor-shooting-star-fill,896_128,33;phosphor-shooting-star-light,960_128,33;phosphor-shooting-star-thin,0_192,33;phosphor-shooting-star,64_192,33;phosphor-shopping-bag-bold,128_192,33;phosphor-shopping-bag-duotone,192_192,33;phosphor-shopping-bag-fill,256_192,33;phosphor-shopping-bag-light,320_192,33;phosphor-shopping-bag-open-bold,384_192,33;phosphor-shopping-bag-open-duotone,448_192,33;phosphor-shopping-bag-open-fill,512_192,33;phosphor-shopping-bag-open-light,576_192,33;phosphor-shopping-bag-open-thin,640_192,33;phosphor-shopping-bag-open,704_192,33;phosphor-shopping-bag-thin,768_192,33;phosphor-shopping-bag,832_192,33;phosphor-shopping-cart-bold,896_192,33;phosphor-shopping-cart-duotone,960_192,33;phosphor-shopping-cart-fill,0_256,33;phosphor-shopping-cart-light,64_256,33;phosphor-shopping-cart-simple-bold,128_256,33;phosphor-shopping-cart-simple-duotone,192_256,33;phosphor-shopping-cart-simple-fill,256_256,33;phosphor-shopping-cart-simple-light,320_256,33;phosphor-shopping-cart-simple-thin,384_256,33;phosphor-shopping-cart-simple,448_256,33;phosphor-shopping-cart-thin,512_256,33;phosphor-shopping-cart,576_256,33;phosphor-shovel-bold,640_256,33;phosphor-shovel-duotone,704_256,33;phosphor-shovel-fill,768_256,33;phosphor-shovel-light,832_256,33;phosphor-shovel-thin,896_256,33;phosphor-shovel,960_256,33;phosphor-shower-bold,0_320,33;phosphor-shower-duotone,64_320,33;phosphor-shower-fill,128_320,33;phosphor-shower-light,192_320,33;phosphor-shower-thin,256_320,33;phosphor-shower,320_320,33;phosphor-shrimp-bold,384_320,33;phosphor-shrimp-duotone,448_320,33;phosphor-shrimp-fill,512_320,33;phosphor-shrimp-light,576_320,33;phosphor-shrimp-thin,640_320,33;phosphor-shrimp,704_320,33;phosphor-shuffle-angular-bold,768_320,33;phosphor-shuffle-angular-duotone,832_320,33;phosphor-shuffle-angular-fill,896_320,33;phosphor-shuffle-angular-light,960_320,33;phosphor-shuffle-angular-thin,0_384,33;phosphor-shuffle-angular,64_384,33;phosphor-shuffle-bold,128_384,33;phosphor-shuffle-duotone,192_384,33;phosphor-shuffle-fill,256_384,33;phosphor-shuffle-light,320_384,33;phosphor-shuffle-simple-bold,384_384,33;phosphor-shuffle-simple-duotone,448_384,33;phosphor-shuffle-simple-fill,512_384,33;phosphor-shuffle-simple-light,576_384,33;phosphor-shuffle-simple-thin,640_384,33;phosphor-shuffle-simple,704_384,33;phosphor-shuffle-thin,768_384,33;phosphor-shuffle,832_384,33;phosphor-sidebar-bold,896_384,33;phosphor-sidebar-duotone,960_384,33;phosphor-sidebar-fill,0_448,33;phosphor-sidebar-light,64_448,33;phosphor-sidebar-simple-bold,128_448,33;phosphor-sidebar-simple-duotone,192_448,33;phosphor-sidebar-simple-fill,256_448,33;phosphor-sidebar-simple-light,320_448,33;phosphor-sidebar-simple-thin,384_448,33;phosphor-sidebar-simple,448_448,33;phosphor-sidebar-thin,512_448,33;phosphor-sidebar,576_448,33;phosphor-sigma-bold,640_448,33;phosphor-sigma-duotone,704_448,33;phosphor-sigma-fill,768_448,33;phosphor-sigma-light,832_448,33;phosphor-sigma-thin,896_448,33;phosphor-sigma,960_448,33;phosphor-sign-in-bold,0_512,33;phosphor-sign-in-duotone,64_512,33;phosphor-sign-in-fill,128_512,33;phosphor-sign-in-light,192_512,33;phosphor-sign-in-thin,256_512,33;phosphor-sign-in,320_512,33;phosphor-sign-out-bold,384_512,33;phosphor-sign-out-duotone,448_512,33;phosphor-sign-out-fill,512_512,33;phosphor-sign-out-light,576_512,33;phosphor-sign-out-thin,640_512,33;phosphor-sign-out,704_512,33;phosphor-signature-bold,768_512,33;phosphor-signature-duotone,832_512,33;phosphor-signature-fill,896_512,33;phosphor-signature-light,960_512,33;phosphor-signature-thin,0_576,33;phosphor-signature,64_576,33;phosphor-signpost-bold,128_576,33;phosphor-signpost-duotone,192_576,33;phosphor-signpost-fill,256_576,33;phosphor-signpost-light,320_576,33;phosphor-signpost-thin,384_576,33;phosphor-signpost,448_576,33;phosphor-sim-card-bold,512_576,33;phosphor-sim-card-duotone,576_576,33;phosphor-sim-card-fill,640_576,33;phosphor-sim-card-light,704_576,33;phosphor-sim-card-thin,768_576,33;phosphor-sim-card,832_576,33;phosphor-siren-bold,896_576,33;phosphor-siren-duotone,960_576,33;phosphor-siren-fill,0_640,33;phosphor-siren-light,64_640,33;phosphor-siren-thin,128_640,33;phosphor-siren,192_640,33;phosphor-sketch-logo-bold,256_640,33;phosphor-sketch-logo-duotone,320_640,33;phosphor-sketch-logo-fill,384_640,33;phosphor-sketch-logo-light,448_640,33;phosphor-sketch-logo-thin,512_640,33;phosphor-sketch-logo,576_640,33;phosphor-skip-back-bold,640_640,33;phosphor-skip-back-circle-bold,704_640,33;phosphor-skip-back-circle-duotone,768_640,33;phosphor-skip-back-circle-fill,832_640,33;phosphor-skip-back-circle-light,896_640,33;phosphor-skip-back-circle-thin,960_640,33;phosphor-skip-back-circle,0_704,33;phosphor-skip-back-duotone,64_704,33;phosphor-skip-back-fill,128_704,33;phosphor-skip-back-light,192_704,33;phosphor-skip-back-thin,256_704,33;phosphor-skip-back,320_704,33;phosphor-skip-forward-bold,384_704,33;phosphor-skip-forward-circle-bold,448_704,33;phosphor-skip-forward-circle-duotone,512_704,33;phosphor-skip-forward-circle-fill,576_704,33;phosphor-skip-forward-circle-light,640_704,33;phosphor-skip-forward-circle-thin,704_704,33;phosphor-skip-forward-circle,768_704,33;phosphor-skip-forward-duotone,832_704,33;phosphor-skip-forward-fill,896_704,33;phosphor-skip-forward-light,960_704,33;phosphor-skip-forward-thin,0_768,33;phosphor-skip-forward,64_768,33;phosphor-skull-bold,128_768,33;phosphor-skull-duotone,192_768,33;phosphor-skull-fill,256_768,33;phosphor-skull-light,320_768,33;phosphor-skull-thin,384_768,33;phosphor-skull,448_768,33;phosphor-skype-logo-bold,512_768,33;phosphor-skype-logo-duotone,576_768,33;phosphor-skype-logo-fill,640_768,33;phosphor-skype-logo-light,704_768,33;phosphor-skype-logo-thin,768_768,33;phosphor-skype-logo,832_768,33;phosphor-slack-logo-bold,896_768,33;phosphor-slack-logo-duotone,960_768,33;phosphor-slack-logo-fill,0_832,33;phosphor-slack-logo-light,64_832,33;phosphor-slack-logo-thin,128_832,33;phosphor-slack-logo,192_832,33;phosphor-sliders-bold,256_832,33;phosphor-sliders-duotone,320_832,33;phosphor-sliders-fill,384_832,33;phosphor-sliders-horizontal-bold,448_832,33;phosphor-sliders-horizontal-duotone,512_832,33;phosphor-sliders-horizontal-fill,576_832,33;phosphor-sliders-horizontal-light,640_832,33;phosphor-sliders-horizontal-thin,704_832,33;phosphor-sliders-horizontal,768_832,33;phosphor-sliders-light,832_832,33;phosphor-sliders-thin,896_832,33;phosphor-sliders,960_832,33;phosphor-slideshow-bold,0_896,33;phosphor-slideshow-duotone,64_896,33;phosphor-slideshow-fill,128_896,33;phosphor-slideshow-light,192_896,33;phosphor-slideshow-thin,256_896,33;phosphor-slideshow,320_896,33;phosphor-smiley-angry-bold,384_896,33;phosphor-smiley-angry-duotone,448_896,33;phosphor-smiley-angry-fill,512_896,33;phosphor-smiley-angry-light,576_896,33;phosphor-smiley-angry-thin,640_896,33;phosphor-smiley-angry,704_896,33;phosphor-smiley-blank-bold,768_896,33;phosphor-smiley-blank-duotone,832_896,33;phosphor-smiley-blank-fill,896_896,33;phosphor-smiley-blank-light,960_896,33;phosphor-smiley-blank-thin,0_960,33;phosphor-smiley-blank,64_960,33;phosphor-smiley-bold,128_960,33;phosphor-smiley-duotone,192_960,33;phosphor-smiley-fill,256_960,33;phosphor-smiley-light,320_960,33;phosphor-smiley-meh-bold,384_960,33;phosphor-smiley-meh-duotone,448_960,33;phosphor-smiley-meh-fill,512_960,33;phosphor-smiley-meh-light,576_960,33;phosphor-smiley-meh-thin,640_960,33;phosphor-smiley-meh,704_960,33;phosphor-smiley-melting-bold,768_960,33;phosphor-smiley-melting-duotone,832_960,33;phosphor-smiley-melting-fill,896_960,33;phosphor-smiley-melting-light,960_960,33;phosphor-smiley-melting-thin,0_0,34;phosphor-smiley-melting,64_0,34;phosphor-smiley-nervous-bold,128_0,34;phosphor-smiley-nervous-duotone,192_0,34;phosphor-smiley-nervous-fill,256_0,34;phosphor-smiley-nervous-light,320_0,34;phosphor-smiley-nervous-thin,384_0,34;phosphor-smiley-nervous,448_0,34;phosphor-smiley-sad-bold,512_0,34;phosphor-smiley-sad-duotone,576_0,34;phosphor-smiley-sad-fill,640_0,34;phosphor-smiley-sad-light,704_0,34;phosphor-smiley-sad-thin,768_0,34;phosphor-smiley-sad,832_0,34;phosphor-smiley-sticker-bold,896_0,34;phosphor-smiley-sticker-duotone,960_0,34;phosphor-smiley-sticker-fill,0_64,34;phosphor-smiley-sticker-light,64_64,34;phosphor-smiley-sticker-thin,128_64,34;phosphor-smiley-sticker,192_64,34;phosphor-smiley-thin,256_64,34;phosphor-smiley-wink-bold,320_64,34;phosphor-smiley-wink-duotone,384_64,34;phosphor-smiley-wink-fill,448_64,34;phosphor-smiley-wink-light,512_64,34;phosphor-smiley-wink-thin,576_64,34;phosphor-smiley-wink,640_64,34;phosphor-smiley-x-eyes-bold,704_64,34;phosphor-smiley-x-eyes-duotone,768_64,34;phosphor-smiley-x-eyes-fill,832_64,34;phosphor-smiley-x-eyes-light,896_64,34;phosphor-smiley-x-eyes-thin,960_64,34;phosphor-smiley-x-eyes,0_128,34;phosphor-smiley,64_128,34;phosphor-snapchat-logo-bold,128_128,34;phosphor-snapchat-logo-duotone,192_128,34;phosphor-snapchat-logo-fill,256_128,34;phosphor-snapchat-logo-light,320_128,34;phosphor-snapchat-logo-thin,384_128,34;phosphor-snapchat-logo,448_128,34;phosphor-sneaker-bold,512_128,34;phosphor-sneaker-duotone,576_128,34;phosphor-sneaker-fill,640_128,34;phosphor-sneaker-light,704_128,34;phosphor-sneaker-move-bold,768_128,34;phosphor-sneaker-move-duotone,832_128,34;phosphor-sneaker-move-fill,896_128,34;phosphor-sneaker-move-light,960_128,34;phosphor-sneaker-move-thin,0_192,34;phosphor-sneaker-move,64_192,34;phosphor-sneaker-thin,128_192,34;phosphor-sneaker,192_192,34;phosphor-snowflake-bold,256_192,34;phosphor-snowflake-duotone,320_192,34;phosphor-snowflake-fill,384_192,34;phosphor-snowflake-light,448_192,34;phosphor-snowflake-thin,512_192,34;phosphor-snowflake,576_192,34;phosphor-soccer-ball-bold,640_192,34;phosphor-soccer-ball-duotone,704_192,34;phosphor-soccer-ball-fill,768_192,34;phosphor-soccer-ball-light,832_192,34;phosphor-soccer-ball-thin,896_192,34;phosphor-soccer-ball,960_192,34;phosphor-sock-bold,0_256,34;phosphor-sock-duotone,64_256,34;phosphor-sock-fill,128_256,34;phosphor-sock-light,192_256,34;phosphor-sock-thin,256_256,34;phosphor-sock,320_256,34;phosphor-solar-panel-bold,384_256,34;phosphor-solar-panel-duotone,448_256,34;phosphor-solar-panel-fill,512_256,34;phosphor-solar-panel-light,576_256,34;phosphor-solar-panel-thin,640_256,34;phosphor-solar-panel,704_256,34;phosphor-solar-roof-bold,768_256,34;phosphor-solar-roof-duotone,832_256,34;phosphor-solar-roof-fill,896_256,34;phosphor-solar-roof-light,960_256,34;phosphor-solar-roof-thin,0_320,34;phosphor-solar-roof,64_320,34;phosphor-sort-ascending-bold,128_320,34;phosphor-sort-ascending-duotone,192_320,34;phosphor-sort-ascending-fill,256_320,34;phosphor-sort-ascending-light,320_320,34;phosphor-sort-ascending-thin,384_320,34;phosphor-sort-ascending,448_320,34;phosphor-sort-descending-bold,512_320,34;phosphor-sort-descending-duotone,576_320,34;phosphor-sort-descending-fill,640_320,34;phosphor-sort-descending-light,704_320,34;phosphor-sort-descending-thin,768_320,34;phosphor-sort-descending,832_320,34;phosphor-soundcloud-logo-bold,896_320,34;phosphor-soundcloud-logo-duotone,960_320,34;phosphor-soundcloud-logo-fill,0_384,34;phosphor-soundcloud-logo-light,64_384,34;phosphor-soundcloud-logo-thin,128_384,34;phosphor-soundcloud-logo,192_384,34;phosphor-spade-bold,256_384,34;phosphor-spade-duotone,320_384,34;phosphor-spade-fill,384_384,34;phosphor-spade-light,448_384,34;phosphor-spade-thin,512_384,34;phosphor-spade,576_384,34;phosphor-sparkle-bold,640_384,34;phosphor-sparkle-duotone,704_384,34;phosphor-sparkle-fill,768_384,34;phosphor-sparkle-light,832_384,34;phosphor-sparkle-thin,896_384,34;phosphor-sparkle,960_384,34;phosphor-speaker-hifi-bold,0_448,34;phosphor-speaker-hifi-duotone,64_448,34;phosphor-speaker-hifi-fill,128_448,34;phosphor-speaker-hifi-light,192_448,34;phosphor-speaker-hifi-thin,256_448,34;phosphor-speaker-hifi,320_448,34;phosphor-speaker-high-bold,384_448,34;phosphor-speaker-high-duotone,448_448,34;phosphor-speaker-high-fill,512_448,34;phosphor-speaker-high-light,576_448,34;phosphor-speaker-high-thin,640_448,34;phosphor-speaker-high,704_448,34;phosphor-speaker-low-bold,768_448,34;phosphor-speaker-low-duotone,832_448,34;phosphor-speaker-low-fill,896_448,34;phosphor-speaker-low-light,960_448,34;phosphor-speaker-low-thin,0_512,34;phosphor-speaker-low,64_512,34;phosphor-speaker-none-bold,128_512,34;phosphor-speaker-none-duotone,192_512,34;phosphor-speaker-none-fill,256_512,34;phosphor-speaker-none-light,320_512,34;phosphor-speaker-none-thin,384_512,34;phosphor-speaker-none,448_512,34;phosphor-speaker-simple-high-bold,512_512,34;phosphor-speaker-simple-high-duotone,576_512,34;phosphor-speaker-simple-high-fill,640_512,34;phosphor-speaker-simple-high-light,704_512,34;phosphor-speaker-simple-high-thin,768_512,34;phosphor-speaker-simple-high,832_512,34;phosphor-speaker-simple-low-bold,896_512,34;phosphor-speaker-simple-low-duotone,960_512,34;phosphor-speaker-simple-low-fill,0_576,34;phosphor-speaker-simple-low-light,64_576,34;phosphor-speaker-simple-low-thin,128_576,34;phosphor-speaker-simple-low,192_576,34;phosphor-speaker-simple-none-bold,256_576,34;phosphor-speaker-simple-none-duotone,320_576,34;phosphor-speaker-simple-none-fill,384_576,34;phosphor-speaker-simple-none-light,448_576,34;phosphor-speaker-simple-none-thin,512_576,34;phosphor-speaker-simple-none,576_576,34;phosphor-speaker-simple-slash-bold,640_576,34;phosphor-speaker-simple-slash-duotone,704_576,34;phosphor-speaker-simple-slash-fill,768_576,34;phosphor-speaker-simple-slash-light,832_576,34;phosphor-speaker-simple-slash-thin,896_576,34;phosphor-speaker-simple-slash,960_576,34;phosphor-speaker-simple-x-bold,0_640,34;phosphor-speaker-simple-x-duotone,64_640,34;phosphor-speaker-simple-x-fill,128_640,34;phosphor-speaker-simple-x-light,192_640,34;phosphor-speaker-simple-x-thin,256_640,34;phosphor-speaker-simple-x,320_640,34;phosphor-speaker-slash-bold,384_640,34;phosphor-speaker-slash-duotone,448_640,34;phosphor-speaker-slash-fill,512_640,34;phosphor-speaker-slash-light,576_640,34;phosphor-speaker-slash-thin,640_640,34;phosphor-speaker-slash,704_640,34;phosphor-speaker-x-bold,768_640,34;phosphor-speaker-x-duotone,832_640,34;phosphor-speaker-x-fill,896_640,34;phosphor-speaker-x-light,960_640,34;phosphor-speaker-x-thin,0_704,34;phosphor-speaker-x,64_704,34;phosphor-speedometer-bold,128_704,34;phosphor-speedometer-duotone,192_704,34;phosphor-speedometer-fill,256_704,34;phosphor-speedometer-light,320_704,34;phosphor-speedometer-thin,384_704,34;phosphor-speedometer,448_704,34;phosphor-sphere-bold,512_704,34;phosphor-sphere-duotone,576_704,34;phosphor-sphere-fill,640_704,34;phosphor-sphere-light,704_704,34;phosphor-sphere-thin,768_704,34;phosphor-sphere,832_704,34;phosphor-spinner-ball-bold,896_704,34;phosphor-spinner-ball-duotone,960_704,34;phosphor-spinner-ball-fill,0_768,34;phosphor-spinner-ball-light,64_768,34;phosphor-spinner-ball-thin,128_768,34;phosphor-spinner-ball,192_768,34;phosphor-spinner-bold,256_768,34;phosphor-spinner-duotone,320_768,34;phosphor-spinner-fill,384_768,34;phosphor-spinner-gap-bold,448_768,34;phosphor-spinner-gap-duotone,512_768,34;phosphor-spinner-gap-fill,576_768,34;phosphor-spinner-gap-light,640_768,34;phosphor-spinner-gap-thin,704_768,34;phosphor-spinner-gap,768_768,34;phosphor-spinner-light,832_768,34;phosphor-spinner-thin,896_768,34;phosphor-spinner,960_768,34;phosphor-spiral-bold,0_832,34;phosphor-spiral-duotone,64_832,34;phosphor-spiral-fill,128_832,34;phosphor-spiral-light,192_832,34;phosphor-spiral-thin,256_832,34;phosphor-spiral,320_832,34;phosphor-split-horizontal-bold,384_832,34;phosphor-split-horizontal-duotone,448_832,34;phosphor-split-horizontal-fill,512_832,34;phosphor-split-horizontal-light,576_832,34;phosphor-split-horizontal-thin,640_832,34;phosphor-split-horizontal,704_832,34;phosphor-split-vertical-bold,768_832,34;phosphor-split-vertical-duotone,832_832,34;phosphor-split-vertical-fill,896_832,34;phosphor-split-vertical-light,960_832,34;phosphor-split-vertical-thin,0_896,34;phosphor-split-vertical,64_896,34;phosphor-spotify-logo-bold,128_896,34;phosphor-spotify-logo-duotone,192_896,34;phosphor-spotify-logo-fill,256_896,34;phosphor-spotify-logo-light,320_896,34;phosphor-spotify-logo-thin,384_896,34;phosphor-spotify-logo,448_896,34;phosphor-spray-bottle-bold,512_896,34;phosphor-spray-bottle-duotone,576_896,34;phosphor-spray-bottle-fill,640_896,34;phosphor-spray-bottle-light,704_896,34;phosphor-spray-bottle-thin,768_896,34;phosphor-spray-bottle,832_896,34;phosphor-square-bold,896_896,34;phosphor-square-duotone,960_896,34;phosphor-square-fill,0_960,34;phosphor-square-half-bold,64_960,34;phosphor-square-half-bottom-bold,128_960,34;phosphor-square-half-bottom-duotone,192_960,34;phosphor-square-half-bottom-fill,256_960,34;phosphor-square-half-bottom-light,320_960,34;phosphor-square-half-bottom-thin,384_960,34;phosphor-square-half-bottom,448_960,34;phosphor-square-half-duotone,512_960,34;phosphor-square-half-fill,576_960,34;phosphor-square-half-light,640_960,34;phosphor-square-half-thin,704_960,34;phosphor-square-half,768_960,34;phosphor-square-light,832_960,34;phosphor-square-logo-bold,896_960,34;phosphor-square-logo-duotone,960_960,34;phosphor-square-logo-fill,0_0,35;phosphor-square-logo-light,64_0,35;phosphor-square-logo-thin,128_0,35;phosphor-square-logo,192_0,35;phosphor-square-split-horizontal-bold,256_0,35;phosphor-square-split-horizontal-duotone,320_0,35;phosphor-square-split-horizontal-fill,384_0,35;phosphor-square-split-horizontal-light,448_0,35;phosphor-square-split-horizontal-thin,512_0,35;phosphor-square-split-horizontal,576_0,35;phosphor-square-split-vertical-bold,640_0,35;phosphor-square-split-vertical-duotone,704_0,35;phosphor-square-split-vertical-fill,768_0,35;phosphor-square-split-vertical-light,832_0,35;phosphor-square-split-vertical-thin,896_0,35;phosphor-square-split-vertical,960_0,35;phosphor-square-thin,0_64,35;phosphor-square,64_64,35;phosphor-squares-four-bold,128_64,35;phosphor-squares-four-duotone,192_64,35;phosphor-squares-four-fill,256_64,35;phosphor-squares-four-light,320_64,35;phosphor-squares-four-thin,384_64,35;phosphor-squares-four,448_64,35;phosphor-stack-bold,512_64,35;phosphor-stack-duotone,576_64,35;phosphor-stack-fill,640_64,35;phosphor-stack-light,704_64,35;phosphor-stack-minus-bold,768_64,35;phosphor-stack-minus-duotone,832_64,35;phosphor-stack-minus-fill,896_64,35;phosphor-stack-minus-light,960_64,35;phosphor-stack-minus-thin,0_128,35;phosphor-stack-minus,64_128,35;phosphor-stack-overflow-logo-bold,128_128,35;phosphor-stack-overflow-logo-duotone,192_128,35;phosphor-stack-overflow-logo-fill,256_128,35;phosphor-stack-overflow-logo-light,320_128,35;phosphor-stack-overflow-logo-thin,384_128,35;phosphor-stack-overflow-logo,448_128,35;phosphor-stack-plus-bold,512_128,35;phosphor-stack-plus-duotone,576_128,35;phosphor-stack-plus-fill,640_128,35;phosphor-stack-plus-light,704_128,35;phosphor-stack-plus-thin,768_128,35;phosphor-stack-plus,832_128,35;phosphor-stack-simple-bold,896_128,35;phosphor-stack-simple-duotone,960_128,35;phosphor-stack-simple-fill,0_192,35;phosphor-stack-simple-light,64_192,35;phosphor-stack-simple-thin,128_192,35;phosphor-stack-simple,192_192,35;phosphor-stack-thin,256_192,35;phosphor-stack,320_192,35;phosphor-stairs-bold,384_192,35;phosphor-stairs-duotone,448_192,35;phosphor-stairs-fill,512_192,35;phosphor-stairs-light,576_192,35;phosphor-stairs-thin,640_192,35;phosphor-stairs,704_192,35;phosphor-stamp-bold,768_192,35;phosphor-stamp-duotone,832_192,35;phosphor-stamp-fill,896_192,35;phosphor-stamp-light,960_192,35;phosphor-stamp-thin,0_256,35;phosphor-stamp,64_256,35;phosphor-standard-definition-bold,128_256,35;phosphor-standard-definition-duotone,192_256,35;phosphor-standard-definition-fill,256_256,35;phosphor-standard-definition-light,320_256,35;phosphor-standard-definition-thin,384_256,35;phosphor-standard-definition,448_256,35;phosphor-star-and-crescent-bold,512_256,35;phosphor-star-and-crescent-duotone,576_256,35;phosphor-star-and-crescent-fill,640_256,35;phosphor-star-and-crescent-light,704_256,35;phosphor-star-and-crescent-thin,768_256,35;phosphor-star-and-crescent,832_256,35;phosphor-star-bold,896_256,35;phosphor-star-duotone,960_256,35;phosphor-star-fill,0_320,35;phosphor-star-four-bold,64_320,35;phosphor-star-four-duotone,128_320,35;phosphor-star-four-fill,192_320,35;phosphor-star-four-light,256_320,35;phosphor-star-four-thin,320_320,35;phosphor-star-four,384_320,35;phosphor-star-half-bold,448_320,35;phosphor-star-half-duotone,512_320,35;phosphor-star-half-fill,576_320,35;phosphor-star-half-light,640_320,35;phosphor-star-half-thin,704_320,35;phosphor-star-half,768_320,35;phosphor-star-light,832_320,35;phosphor-star-of-david-bold,896_320,35;phosphor-star-of-david-duotone,960_320,35;phosphor-star-of-david-fill,0_384,35;phosphor-star-of-david-light,64_384,35;phosphor-star-of-david-thin,128_384,35;phosphor-star-of-david,192_384,35;phosphor-star-thin,256_384,35;phosphor-star,320_384,35;phosphor-steam-logo-bold,384_384,35;phosphor-steam-logo-duotone,448_384,35;phosphor-steam-logo-fill,512_384,35;phosphor-steam-logo-light,576_384,35;phosphor-steam-logo-thin,640_384,35;phosphor-steam-logo,704_384,35;phosphor-steering-wheel-bold,768_384,35;phosphor-steering-wheel-duotone,832_384,35;phosphor-steering-wheel-fill,896_384,35;phosphor-steering-wheel-light,960_384,35;phosphor-steering-wheel-thin,0_448,35;phosphor-steering-wheel,64_448,35;phosphor-steps-bold,128_448,35;phosphor-steps-duotone,192_448,35;phosphor-steps-fill,256_448,35;phosphor-steps-light,320_448,35;phosphor-steps-thin,384_448,35;phosphor-steps,448_448,35;phosphor-stethoscope-bold,512_448,35;phosphor-stethoscope-duotone,576_448,35;phosphor-stethoscope-fill,640_448,35;phosphor-stethoscope-light,704_448,35;phosphor-stethoscope-thin,768_448,35;phosphor-stethoscope,832_448,35;phosphor-sticker-bold,896_448,35;phosphor-sticker-duotone,960_448,35;phosphor-sticker-fill,0_512,35;phosphor-sticker-light,64_512,35;phosphor-sticker-thin,128_512,35;phosphor-sticker,192_512,35;phosphor-stool-bold,256_512,35;phosphor-stool-duotone,320_512,35;phosphor-stool-fill,384_512,35;phosphor-stool-light,448_512,35;phosphor-stool-thin,512_512,35;phosphor-stool,576_512,35;phosphor-stop-bold,640_512,35;phosphor-stop-circle-bold,704_512,35;phosphor-stop-circle-duotone,768_512,35;phosphor-stop-circle-fill,832_512,35;phosphor-stop-circle-light,896_512,35;phosphor-stop-circle-thin,960_512,35;phosphor-stop-circle,0_576,35;phosphor-stop-duotone,64_576,35;phosphor-stop-fill,128_576,35;phosphor-stop-light,192_576,35;phosphor-stop-thin,256_576,35;phosphor-stop,320_576,35;phosphor-storefront-bold,384_576,35;phosphor-storefront-duotone,448_576,35;phosphor-storefront-fill,512_576,35;phosphor-storefront-light,576_576,35;phosphor-storefront-thin,640_576,35;phosphor-storefront,704_576,35;phosphor-strategy-bold,768_576,35;phosphor-strategy-duotone,832_576,35;phosphor-strategy-fill,896_576,35;phosphor-strategy-light,960_576,35;phosphor-strategy-thin,0_640,35;phosphor-strategy,64_640,35;phosphor-stripe-logo-bold,128_640,35;phosphor-stripe-logo-duotone,192_640,35;phosphor-stripe-logo-fill,256_640,35;phosphor-stripe-logo-light,320_640,35;phosphor-stripe-logo-thin,384_640,35;phosphor-stripe-logo,448_640,35;phosphor-student-bold,512_640,35;phosphor-student-duotone,576_640,35;phosphor-student-fill,640_640,35;phosphor-student-light,704_640,35;phosphor-student-thin,768_640,35;phosphor-student,832_640,35;phosphor-subset-of-bold,896_640,35;phosphor-subset-of-duotone,960_640,35;phosphor-subset-of-fill,0_704,35;phosphor-subset-of-light,64_704,35;phosphor-subset-of-thin,128_704,35;phosphor-subset-of,192_704,35;phosphor-subset-proper-of-bold,256_704,35;phosphor-subset-proper-of-duotone,320_704,35;phosphor-subset-proper-of-fill,384_704,35;phosphor-subset-proper-of-light,448_704,35;phosphor-subset-proper-of-thin,512_704,35;phosphor-subset-proper-of,576_704,35;phosphor-subtitles-bold,640_704,35;phosphor-subtitles-duotone,704_704,35;phosphor-subtitles-fill,768_704,35;phosphor-subtitles-light,832_704,35;phosphor-subtitles-slash-bold,896_704,35;phosphor-subtitles-slash-duotone,960_704,35;phosphor-subtitles-slash-fill,0_768,35;phosphor-subtitles-slash-light,64_768,35;phosphor-subtitles-slash-thin,128_768,35;phosphor-subtitles-slash,192_768,35;phosphor-subtitles-thin,256_768,35;phosphor-subtitles,320_768,35;phosphor-subtract-bold,384_768,35;phosphor-subtract-duotone,448_768,35;phosphor-subtract-fill,512_768,35;phosphor-subtract-light,576_768,35;phosphor-subtract-square-bold,640_768,35;phosphor-subtract-square-duotone,704_768,35;phosphor-subtract-square-fill,768_768,35;phosphor-subtract-square-light,832_768,35;phosphor-subtract-square-thin,896_768,35;phosphor-subtract-square,960_768,35;phosphor-subtract-thin,0_832,35;phosphor-subtract,64_832,35;phosphor-subway-bold,128_832,35;phosphor-subway-duotone,192_832,35;phosphor-subway-fill,256_832,35;phosphor-subway-light,320_832,35;phosphor-subway-thin,384_832,35;phosphor-subway,448_832,35;phosphor-suitcase-bold,512_832,35;phosphor-suitcase-duotone,576_832,35;phosphor-suitcase-fill,640_832,35;phosphor-suitcase-light,704_832,35;phosphor-suitcase-rolling-bold,768_832,35;phosphor-suitcase-rolling-duotone,832_832,35;phosphor-suitcase-rolling-fill,896_832,35;phosphor-suitcase-rolling-light,960_832,35;phosphor-suitcase-rolling-thin,0_896,35;phosphor-suitcase-rolling,64_896,35;phosphor-suitcase-simple-bold,128_896,35;phosphor-suitcase-simple-duotone,192_896,35;phosphor-suitcase-simple-fill,256_896,35;phosphor-suitcase-simple-light,320_896,35;phosphor-suitcase-simple-thin,384_896,35;phosphor-suitcase-simple,448_896,35;phosphor-suitcase-thin,512_896,35;phosphor-suitcase,576_896,35;phosphor-sun-bold,640_896,35;phosphor-sun-dim-bold,704_896,35;phosphor-sun-dim-duotone,768_896,35;phosphor-sun-dim-fill,832_896,35;phosphor-sun-dim-light,896_896,35;phosphor-sun-dim-thin,960_896,35;phosphor-sun-dim,0_960,35;phosphor-sun-duotone,64_960,35;phosphor-sun-fill,128_960,35;phosphor-sun-horizon-bold,192_960,35;phosphor-sun-horizon-duotone,256_960,35;phosphor-sun-horizon-fill,320_960,35;phosphor-sun-horizon-light,384_960,35;phosphor-sun-horizon-thin,448_960,35;phosphor-sun-horizon,512_960,35;phosphor-sun-light,576_960,35;phosphor-sun-thin,640_960,35;phosphor-sun,704_960,35;phosphor-sunglasses-bold,768_960,35;phosphor-sunglasses-duotone,832_960,35;phosphor-sunglasses-fill,896_960,35;phosphor-sunglasses-light,960_960,35;phosphor-sunglasses-thin,0_0,36;phosphor-sunglasses,64_0,36;phosphor-superset-of-bold,128_0,36;phosphor-superset-of-duotone,192_0,36;phosphor-superset-of-fill,256_0,36;phosphor-superset-of-light,320_0,36;phosphor-superset-of-thin,384_0,36;phosphor-superset-of,448_0,36;phosphor-superset-proper-of-bold,512_0,36;phosphor-superset-proper-of-duotone,576_0,36;phosphor-superset-proper-of-fill,640_0,36;phosphor-superset-proper-of-light,704_0,36;phosphor-superset-proper-of-thin,768_0,36;phosphor-superset-proper-of,832_0,36;phosphor-swap-bold,896_0,36;phosphor-swap-duotone,960_0,36;phosphor-swap-fill,0_64,36;phosphor-swap-light,64_64,36;phosphor-swap-thin,128_64,36;phosphor-swap,192_64,36;phosphor-swatches-bold,256_64,36;phosphor-swatches-duotone,320_64,36;phosphor-swatches-fill,384_64,36;phosphor-swatches-light,448_64,36;phosphor-swatches-thin,512_64,36;phosphor-swatches,576_64,36;phosphor-swimming-pool-bold,640_64,36;phosphor-swimming-pool-duotone,704_64,36;phosphor-swimming-pool-fill,768_64,36;phosphor-swimming-pool-light,832_64,36;phosphor-swimming-pool-thin,896_64,36;phosphor-swimming-pool,960_64,36;phosphor-sword-bold,0_128,36;phosphor-sword-duotone,64_128,36;phosphor-sword-fill,128_128,36;phosphor-sword-light,192_128,36;phosphor-sword-thin,256_128,36;phosphor-sword,320_128,36;phosphor-synagogue-bold,384_128,36;phosphor-synagogue-duotone,448_128,36;phosphor-synagogue-fill,512_128,36;phosphor-synagogue-light,576_128,36;phosphor-synagogue-thin,640_128,36;phosphor-synagogue,704_128,36;phosphor-syringe-bold,768_128,36;phosphor-syringe-duotone,832_128,36;phosphor-syringe-fill,896_128,36;phosphor-syringe-light,960_128,36;phosphor-syringe-thin,0_192,36;phosphor-syringe,64_192,36;phosphor-t-shirt-bold,128_192,36;phosphor-t-shirt-duotone,192_192,36;phosphor-t-shirt-fill,256_192,36;phosphor-t-shirt-light,320_192,36;phosphor-t-shirt-thin,384_192,36;phosphor-t-shirt,448_192,36;phosphor-table-bold,512_192,36;phosphor-table-duotone,576_192,36;phosphor-table-fill,640_192,36;phosphor-table-light,704_192,36;phosphor-table-thin,768_192,36;phosphor-table,832_192,36;phosphor-tabs-bold,896_192,36;phosphor-tabs-duotone,960_192,36;phosphor-tabs-fill,0_256,36;phosphor-tabs-light,64_256,36;phosphor-tabs-thin,128_256,36;phosphor-tabs,192_256,36;phosphor-tag-bold,256_256,36;phosphor-tag-chevron-bold,320_256,36;phosphor-tag-chevron-duotone,384_256,36;phosphor-tag-chevron-fill,448_256,36;phosphor-tag-chevron-light,512_256,36;phosphor-tag-chevron-thin,576_256,36;phosphor-tag-chevron,640_256,36;phosphor-tag-duotone,704_256,36;phosphor-tag-fill,768_256,36;phosphor-tag-light,832_256,36;phosphor-tag-simple-bold,896_256,36;phosphor-tag-simple-duotone,960_256,36;phosphor-tag-simple-fill,0_320,36;phosphor-tag-simple-light,64_320,36;phosphor-tag-simple-thin,128_320,36;phosphor-tag-simple,192_320,36;phosphor-tag-thin,256_320,36;phosphor-tag,320_320,36;phosphor-target-bold,384_320,36;phosphor-target-duotone,448_320,36;phosphor-target-fill,512_320,36;phosphor-target-light,576_320,36;phosphor-target-thin,640_320,36;phosphor-target,704_320,36;phosphor-taxi-bold,768_320,36;phosphor-taxi-duotone,832_320,36;phosphor-taxi-fill,896_320,36;phosphor-taxi-light,960_320,36;phosphor-taxi-thin,0_384,36;phosphor-taxi,64_384,36;phosphor-tea-bag-bold,128_384,36;phosphor-tea-bag-duotone,192_384,36;phosphor-tea-bag-fill,256_384,36;phosphor-tea-bag-light,320_384,36;phosphor-tea-bag-thin,384_384,36;phosphor-tea-bag,448_384,36;phosphor-telegram-logo-bold,512_384,36;phosphor-telegram-logo-duotone,576_384,36;phosphor-telegram-logo-fill,640_384,36;phosphor-telegram-logo-light,704_384,36;phosphor-telegram-logo-thin,768_384,36;phosphor-telegram-logo,832_384,36;phosphor-television-bold,896_384,36;phosphor-television-duotone,960_384,36;phosphor-television-fill,0_448,36;phosphor-television-light,64_448,36;phosphor-television-simple-bold,128_448,36;phosphor-television-simple-duotone,192_448,36;phosphor-television-simple-fill,256_448,36;phosphor-television-simple-light,320_448,36;phosphor-television-simple-thin,384_448,36;phosphor-television-simple,448_448,36;phosphor-television-thin,512_448,36;phosphor-television,576_448,36;phosphor-tennis-ball-bold,640_448,36;phosphor-tennis-ball-duotone,704_448,36;phosphor-tennis-ball-fill,768_448,36;phosphor-tennis-ball-light,832_448,36;phosphor-tennis-ball-thin,896_448,36;phosphor-tennis-ball,960_448,36;phosphor-tent-bold,0_512,36;phosphor-tent-duotone,64_512,36;phosphor-tent-fill,128_512,36;phosphor-tent-light,192_512,36;phosphor-tent-thin,256_512,36;phosphor-tent,320_512,36;phosphor-terminal-bold,384_512,36;phosphor-terminal-duotone,448_512,36;phosphor-terminal-fill,512_512,36;phosphor-terminal-light,576_512,36;phosphor-terminal-thin,640_512,36;phosphor-terminal-window-bold,704_512,36;phosphor-terminal-window-duotone,768_512,36;phosphor-terminal-window-fill,832_512,36;phosphor-terminal-window-light,896_512,36;phosphor-terminal-window-thin,960_512,36;phosphor-terminal-window,0_576,36;phosphor-terminal,64_576,36;phosphor-test-tube-bold,128_576,36;phosphor-test-tube-duotone,192_576,36;phosphor-test-tube-fill,256_576,36;phosphor-test-tube-light,320_576,36;phosphor-test-tube-thin,384_576,36;phosphor-test-tube,448_576,36;phosphor-text-a-underline-bold,512_576,36;phosphor-text-a-underline-duotone,576_576,36;phosphor-text-a-underline-fill,640_576,36;phosphor-text-a-underline-light,704_576,36;phosphor-text-a-underline-thin,768_576,36;phosphor-text-a-underline,832_576,36;phosphor-text-aa-bold,896_576,36;phosphor-text-aa-duotone,960_576,36;phosphor-text-aa-fill,0_640,36;phosphor-text-aa-light,64_640,36;phosphor-text-aa-thin,128_640,36;phosphor-text-aa,192_640,36;phosphor-text-align-center-bold,256_640,36;phosphor-text-align-center-duotone,320_640,36;phosphor-text-align-center-fill,384_640,36;phosphor-text-align-center-light,448_640,36;phosphor-text-align-center-thin,512_640,36;phosphor-text-align-center,576_640,36;phosphor-text-align-justify-bold,640_640,36;phosphor-text-align-justify-duotone,704_640,36;phosphor-text-align-justify-fill,768_640,36;phosphor-text-align-justify-light,832_640,36;phosphor-text-align-justify-thin,896_640,36;phosphor-text-align-justify,960_640,36;phosphor-text-align-left-bold,0_704,36;phosphor-text-align-left-duotone,64_704,36;phosphor-text-align-left-fill,128_704,36;phosphor-text-align-left-light,192_704,36;phosphor-text-align-left-thin,256_704,36;phosphor-text-align-left,320_704,36;phosphor-text-align-right-bold,384_704,36;phosphor-text-align-right-duotone,448_704,36;phosphor-text-align-right-fill,512_704,36;phosphor-text-align-right-light,576_704,36;phosphor-text-align-right-thin,640_704,36;phosphor-text-align-right,704_704,36;phosphor-text-b-bold,768_704,36;phosphor-text-b-duotone,832_704,36;phosphor-text-b-fill,896_704,36;phosphor-text-b-light,960_704,36;phosphor-text-b-thin,0_768,36;phosphor-text-b,64_768,36;phosphor-text-columns-bold,128_768,36;phosphor-text-columns-duotone,192_768,36;phosphor-text-columns-fill,256_768,36;phosphor-text-columns-light,320_768,36;phosphor-text-columns-thin,384_768,36;phosphor-text-columns,448_768,36;phosphor-text-h-bold,512_768,36;phosphor-text-h-duotone,576_768,36;phosphor-text-h-fill,640_768,36;phosphor-text-h-five-bold,704_768,36;phosphor-text-h-five-duotone,768_768,36;phosphor-text-h-five-fill,832_768,36;phosphor-text-h-five-light,896_768,36;phosphor-text-h-five-thin,960_768,36;phosphor-text-h-five,0_832,36;phosphor-text-h-four-bold,64_832,36;phosphor-text-h-four-duotone,128_832,36;phosphor-text-h-four-fill,192_832,36;phosphor-text-h-four-light,256_832,36;phosphor-text-h-four-thin,320_832,36;phosphor-text-h-four,384_832,36;phosphor-text-h-light,448_832,36;phosphor-text-h-one-bold,512_832,36;phosphor-text-h-one-duotone,576_832,36;phosphor-text-h-one-fill,640_832,36;phosphor-text-h-one-light,704_832,36;phosphor-text-h-one-thin,768_832,36;phosphor-text-h-one,832_832,36;phosphor-text-h-six-bold,896_832,36;phosphor-text-h-six-duotone,960_832,36;phosphor-text-h-six-fill,0_896,36;phosphor-text-h-six-light,64_896,36;phosphor-text-h-six-thin,128_896,36;phosphor-text-h-six,192_896,36;phosphor-text-h-thin,256_896,36;phosphor-text-h-three-bold,320_896,36;phosphor-text-h-three-duotone,384_896,36;phosphor-text-h-three-fill,448_896,36;phosphor-text-h-three-light,512_896,36;phosphor-text-h-three-thin,576_896,36;phosphor-text-h-three,640_896,36;phosphor-text-h-two-bold,704_896,36;phosphor-text-h-two-duotone,768_896,36;phosphor-text-h-two-fill,832_896,36;phosphor-text-h-two-light,896_896,36;phosphor-text-h-two-thin,960_896,36;phosphor-text-h-two,0_960,36;phosphor-text-h,64_960,36;phosphor-text-indent-bold,128_960,36;phosphor-text-indent-duotone,192_960,36;phosphor-text-indent-fill,256_960,36;phosphor-text-indent-light,320_960,36;phosphor-text-indent-thin,384_960,36;phosphor-text-indent,448_960,36;phosphor-text-italic-bold,512_960,36;phosphor-text-italic-duotone,576_960,36;phosphor-text-italic-fill,640_960,36;phosphor-text-italic-light,704_960,36;phosphor-text-italic-thin,768_960,36;phosphor-text-italic,832_960,36;phosphor-text-outdent-bold,896_960,36;phosphor-text-outdent-duotone,960_960,36;phosphor-text-outdent-fill,0_0,37;phosphor-text-outdent-light,64_0,37;phosphor-text-outdent-thin,128_0,37;phosphor-text-outdent,192_0,37;phosphor-text-strikethrough-bold,256_0,37;phosphor-text-strikethrough-duotone,320_0,37;phosphor-text-strikethrough-fill,384_0,37;phosphor-text-strikethrough-light,448_0,37;phosphor-text-strikethrough-thin,512_0,37;phosphor-text-strikethrough,576_0,37;phosphor-text-subscript-bold,640_0,37;phosphor-text-subscript-duotone,704_0,37;phosphor-text-subscript-fill,768_0,37;phosphor-text-subscript-light,832_0,37;phosphor-text-subscript-thin,896_0,37;phosphor-text-subscript,960_0,37;phosphor-text-superscript-bold,0_64,37;phosphor-text-superscript-duotone,64_64,37;phosphor-text-superscript-fill,128_64,37;phosphor-text-superscript-light,192_64,37;phosphor-text-superscript-thin,256_64,37;phosphor-text-superscript,320_64,37;phosphor-text-t-bold,384_64,37;phosphor-text-t-duotone,448_64,37;phosphor-text-t-fill,512_64,37;phosphor-text-t-light,576_64,37;phosphor-text-t-slash-bold,640_64,37;phosphor-text-t-slash-duotone,704_64,37;phosphor-text-t-slash-fill,768_64,37;phosphor-text-t-slash-light,832_64,37;phosphor-text-t-slash-thin,896_64,37;phosphor-text-t-slash,960_64,37;phosphor-text-t-thin,0_128,37;phosphor-text-t,64_128,37;phosphor-text-underline-bold,128_128,37;phosphor-text-underline-duotone,192_128,37;phosphor-text-underline-fill,256_128,37;phosphor-text-underline-light,320_128,37;phosphor-text-underline-thin,384_128,37;phosphor-text-underline,448_128,37;phosphor-textbox-bold,512_128,37;phosphor-textbox-duotone,576_128,37;phosphor-textbox-fill,640_128,37;phosphor-textbox-light,704_128,37;phosphor-textbox-thin,768_128,37;phosphor-textbox,832_128,37;phosphor-thermometer-bold,896_128,37;phosphor-thermometer-cold-bold,960_128,37;phosphor-thermometer-cold-duotone,0_192,37;phosphor-thermometer-cold-fill,64_192,37;phosphor-thermometer-cold-light,128_192,37;phosphor-thermometer-cold-thin,192_192,37;phosphor-thermometer-cold,256_192,37;phosphor-thermometer-duotone,320_192,37;phosphor-thermometer-fill,384_192,37;phosphor-thermometer-hot-bold,448_192,37;phosphor-thermometer-hot-duotone,512_192,37;phosphor-thermometer-hot-fill,576_192,37;phosphor-thermometer-hot-light,640_192,37;phosphor-thermometer-hot-thin,704_192,37;phosphor-thermometer-hot,768_192,37;phosphor-thermometer-light,832_192,37;phosphor-thermometer-simple-bold,896_192,37;phosphor-thermometer-simple-duotone,960_192,37;phosphor-thermometer-simple-fill,0_256,37;phosphor-thermometer-simple-light,64_256,37;phosphor-thermometer-simple-thin,128_256,37;phosphor-thermometer-simple,192_256,37;phosphor-thermometer-thin,256_256,37;phosphor-thermometer,320_256,37;phosphor-threads-logo-bold,384_256,37;phosphor-threads-logo-duotone,448_256,37;phosphor-threads-logo-fill,512_256,37;phosphor-threads-logo-light,576_256,37;phosphor-threads-logo-thin,640_256,37;phosphor-threads-logo,704_256,37;phosphor-three-d-bold,768_256,37;phosphor-three-d-duotone,832_256,37;phosphor-three-d-fill,896_256,37;phosphor-three-d-light,960_256,37;phosphor-three-d-thin,0_320,37;phosphor-three-d,64_320,37;phosphor-thumbs-down-bold,128_320,37;phosphor-thumbs-down-duotone,192_320,37;phosphor-thumbs-down-fill,256_320,37;phosphor-thumbs-down-light,320_320,37;phosphor-thumbs-down-thin,384_320,37;phosphor-thumbs-down,448_320,37;phosphor-thumbs-up-bold,512_320,37;phosphor-thumbs-up-duotone,576_320,37;phosphor-thumbs-up-fill,640_320,37;phosphor-thumbs-up-light,704_320,37;phosphor-thumbs-up-thin,768_320,37;phosphor-thumbs-up,832_320,37;phosphor-ticket-bold,896_320,37;phosphor-ticket-duotone,960_320,37;phosphor-ticket-fill,0_384,37;phosphor-ticket-light,64_384,37;phosphor-ticket-thin,128_384,37;phosphor-ticket,192_384,37;phosphor-tidal-logo-bold,256_384,37;phosphor-tidal-logo-duotone,320_384,37;phosphor-tidal-logo-fill,384_384,37;phosphor-tidal-logo-light,448_384,37;phosphor-tidal-logo-thin,512_384,37;phosphor-tidal-logo,576_384,37;phosphor-tiktok-logo-bold,640_384,37;phosphor-tiktok-logo-duotone,704_384,37;phosphor-tiktok-logo-fill,768_384,37;phosphor-tiktok-logo-light,832_384,37;phosphor-tiktok-logo-thin,896_384,37;phosphor-tiktok-logo,960_384,37;phosphor-tilde-bold,0_448,37;phosphor-tilde-duotone,64_448,37;phosphor-tilde-fill,128_448,37;phosphor-tilde-light,192_448,37;phosphor-tilde-thin,256_448,37;phosphor-tilde,320_448,37;phosphor-timer-bold,384_448,37;phosphor-timer-duotone,448_448,37;phosphor-timer-fill,512_448,37;phosphor-timer-light,576_448,37;phosphor-timer-thin,640_448,37;phosphor-timer,704_448,37;phosphor-tip-jar-bold,768_448,37;phosphor-tip-jar-duotone,832_448,37;phosphor-tip-jar-fill,896_448,37;phosphor-tip-jar-light,960_448,37;phosphor-tip-jar-thin,0_512,37;phosphor-tip-jar,64_512,37;phosphor-tipi-bold,128_512,37;phosphor-tipi-duotone,192_512,37;phosphor-tipi-fill,256_512,37;phosphor-tipi-light,320_512,37;phosphor-tipi-thin,384_512,37;phosphor-tipi,448_512,37;phosphor-tire-bold,512_512,37;phosphor-tire-duotone,576_512,37;phosphor-tire-fill,640_512,37;phosphor-tire-light,704_512,37;phosphor-tire-thin,768_512,37;phosphor-tire,832_512,37;phosphor-toggle-left-bold,896_512,37;phosphor-toggle-left-duotone,960_512,37;phosphor-toggle-left-fill,0_576,37;phosphor-toggle-left-light,64_576,37;phosphor-toggle-left-thin,128_576,37;phosphor-toggle-left,192_576,37;phosphor-toggle-right-bold,256_576,37;phosphor-toggle-right-duotone,320_576,37;phosphor-toggle-right-fill,384_576,37;phosphor-toggle-right-light,448_576,37;phosphor-toggle-right-thin,512_576,37;phosphor-toggle-right,576_576,37;phosphor-toilet-bold,640_576,37;phosphor-toilet-duotone,704_576,37;phosphor-toilet-fill,768_576,37;phosphor-toilet-light,832_576,37;phosphor-toilet-paper-bold,896_576,37;phosphor-toilet-paper-duotone,960_576,37;phosphor-toilet-paper-fill,0_640,37;phosphor-toilet-paper-light,64_640,37;phosphor-toilet-paper-thin,128_640,37;phosphor-toilet-paper,192_640,37;phosphor-toilet-thin,256_640,37;phosphor-toilet,320_640,37;phosphor-toolbox-bold,384_640,37;phosphor-toolbox-duotone,448_640,37;phosphor-toolbox-fill,512_640,37;phosphor-toolbox-light,576_640,37;phosphor-toolbox-thin,640_640,37;phosphor-toolbox,704_640,37;phosphor-tooth-bold,768_640,37;phosphor-tooth-duotone,832_640,37;phosphor-tooth-fill,896_640,37;phosphor-tooth-light,960_640,37;phosphor-tooth-thin,0_704,37;phosphor-tooth,64_704,37;phosphor-tornado-bold,128_704,37;phosphor-tornado-duotone,192_704,37;phosphor-tornado-fill,256_704,37;phosphor-tornado-light,320_704,37;phosphor-tornado-thin,384_704,37;phosphor-tornado,448_704,37;phosphor-tote-bold,512_704,37;phosphor-tote-duotone,576_704,37;phosphor-tote-fill,640_704,37;phosphor-tote-light,704_704,37;phosphor-tote-simple-bold,768_704,37;phosphor-tote-simple-duotone,832_704,37;phosphor-tote-simple-fill,896_704,37;phosphor-tote-simple-light,960_704,37;phosphor-tote-simple-thin,0_768,37;phosphor-tote-simple,64_768,37;phosphor-tote-thin,128_768,37;phosphor-tote,192_768,37;phosphor-towel-bold,256_768,37;phosphor-towel-duotone,320_768,37;phosphor-towel-fill,384_768,37;phosphor-towel-light,448_768,37;phosphor-towel-thin,512_768,37;phosphor-towel,576_768,37;phosphor-tractor-bold,640_768,37;phosphor-tractor-duotone,704_768,37;phosphor-tractor-fill,768_768,37;phosphor-tractor-light,832_768,37;phosphor-tractor-thin,896_768,37;phosphor-tractor,960_768,37;phosphor-trademark-bold,0_832,37;phosphor-trademark-duotone,64_832,37;phosphor-trademark-fill,128_832,37;phosphor-trademark-light,192_832,37;phosphor-trademark-registered-bold,256_832,37;phosphor-trademark-registered-duotone,320_832,37;phosphor-trademark-registered-fill,384_832,37;phosphor-trademark-registered-light,448_832,37;phosphor-trademark-registered-thin,512_832,37;phosphor-trademark-registered,576_832,37;phosphor-trademark-thin,640_832,37;phosphor-trademark,704_832,37;phosphor-traffic-cone-bold,768_832,37;phosphor-traffic-cone-duotone,832_832,37;phosphor-traffic-cone-fill,896_832,37;phosphor-traffic-cone-light,960_832,37;phosphor-traffic-cone-thin,0_896,37;phosphor-traffic-cone,64_896,37;phosphor-traffic-sign-bold,128_896,37;phosphor-traffic-sign-duotone,192_896,37;phosphor-traffic-sign-fill,256_896,37;phosphor-traffic-sign-light,320_896,37;phosphor-traffic-sign-thin,384_896,37;phosphor-traffic-sign,448_896,37;phosphor-traffic-signal-bold,512_896,37;phosphor-traffic-signal-duotone,576_896,37;phosphor-traffic-signal-fill,640_896,37;phosphor-traffic-signal-light,704_896,37;phosphor-traffic-signal-thin,768_896,37;phosphor-traffic-signal,832_896,37;phosphor-train-bold,896_896,37;phosphor-train-duotone,960_896,37;phosphor-train-fill,0_960,37;phosphor-train-light,64_960,37;phosphor-train-regional-bold,128_960,37;phosphor-train-regional-duotone,192_960,37;phosphor-train-regional-fill,256_960,37;phosphor-train-regional-light,320_960,37;phosphor-train-regional-thin,384_960,37;phosphor-train-regional,448_960,37;phosphor-train-simple-bold,512_960,37;phosphor-train-simple-duotone,576_960,37;phosphor-train-simple-fill,640_960,37;phosphor-train-simple-light,704_960,37;phosphor-train-simple-thin,768_960,37;phosphor-train-simple,832_960,37;phosphor-train-thin,896_960,37;phosphor-train,960_960,37;phosphor-tram-bold,0_0,38;phosphor-tram-duotone,64_0,38;phosphor-tram-fill,128_0,38;phosphor-tram-light,192_0,38;phosphor-tram-thin,256_0,38;phosphor-tram,320_0,38;phosphor-translate-bold,384_0,38;phosphor-translate-duotone,448_0,38;phosphor-translate-fill,512_0,38;phosphor-translate-light,576_0,38;phosphor-translate-thin,640_0,38;phosphor-translate,704_0,38;phosphor-trash-bold,768_0,38;phosphor-trash-duotone,832_0,38;phosphor-trash-fill,896_0,38;phosphor-trash-light,960_0,38;phosphor-trash-simple-bold,0_64,38;phosphor-trash-simple-duotone,64_64,38;phosphor-trash-simple-fill,128_64,38;phosphor-trash-simple-light,192_64,38;phosphor-trash-simple-thin,256_64,38;phosphor-trash-simple,320_64,38;phosphor-trash-thin,384_64,38;phosphor-trash,448_64,38;phosphor-tray-arrow-down-bold,512_64,38;phosphor-tray-arrow-down-duotone,576_64,38;phosphor-tray-arrow-down-fill,640_64,38;phosphor-tray-arrow-down-light,704_64,38;phosphor-tray-arrow-down-thin,768_64,38;phosphor-tray-arrow-down,832_64,38;phosphor-tray-arrow-up-bold,896_64,38;phosphor-tray-arrow-up-duotone,960_64,38;phosphor-tray-arrow-up-fill,0_128,38;phosphor-tray-arrow-up-light,64_128,38;phosphor-tray-arrow-up-thin,128_128,38;phosphor-tray-arrow-up,192_128,38;phosphor-tray-bold,256_128,38;phosphor-tray-duotone,320_128,38;phosphor-tray-fill,384_128,38;phosphor-tray-light,448_128,38;phosphor-tray-thin,512_128,38;phosphor-tray,576_128,38;phosphor-treasure-chest-bold,640_128,38;phosphor-treasure-chest-duotone,704_128,38;phosphor-treasure-chest-fill,768_128,38;phosphor-treasure-chest-light,832_128,38;phosphor-treasure-chest-thin,896_128,38;phosphor-treasure-chest,960_128,38;phosphor-tree-bold,0_192,38;phosphor-tree-duotone,64_192,38;phosphor-tree-evergreen-bold,128_192,38;phosphor-tree-evergreen-duotone,192_192,38;phosphor-tree-evergreen-fill,256_192,38;phosphor-tree-evergreen-light,320_192,38;phosphor-tree-evergreen-thin,384_192,38;phosphor-tree-evergreen,448_192,38;phosphor-tree-fill,512_192,38;phosphor-tree-light,576_192,38;phosphor-tree-palm-bold,640_192,38;phosphor-tree-palm-duotone,704_192,38;phosphor-tree-palm-fill,768_192,38;phosphor-tree-palm-light,832_192,38;phosphor-tree-palm-thin,896_192,38;phosphor-tree-palm,960_192,38;phosphor-tree-structure-bold,0_256,38;phosphor-tree-structure-duotone,64_256,38;phosphor-tree-structure-fill,128_256,38;phosphor-tree-structure-light,192_256,38;phosphor-tree-structure-thin,256_256,38;phosphor-tree-structure,320_256,38;phosphor-tree-thin,384_256,38;phosphor-tree-view-bold,448_256,38;phosphor-tree-view-duotone,512_256,38;phosphor-tree-view-fill,576_256,38;phosphor-tree-view-light,640_256,38;phosphor-tree-view-thin,704_256,38;phosphor-tree-view,768_256,38;phosphor-tree,832_256,38;phosphor-trend-down-bold,896_256,38;phosphor-trend-down-duotone,960_256,38;phosphor-trend-down-fill,0_320,38;phosphor-trend-down-light,64_320,38;phosphor-trend-down-thin,128_320,38;phosphor-trend-down,192_320,38;phosphor-trend-up-bold,256_320,38;phosphor-trend-up-duotone,320_320,38;phosphor-trend-up-fill,384_320,38;phosphor-trend-up-light,448_320,38;phosphor-trend-up-thin,512_320,38;phosphor-trend-up,576_320,38;phosphor-triangle-bold,640_320,38;phosphor-triangle-dashed-bold,704_320,38;phosphor-triangle-dashed-duotone,768_320,38;phosphor-triangle-dashed-fill,832_320,38;phosphor-triangle-dashed-light,896_320,38;phosphor-triangle-dashed-thin,960_320,38;phosphor-triangle-dashed,0_384,38;phosphor-triangle-duotone,64_384,38;phosphor-triangle-fill,128_384,38;phosphor-triangle-light,192_384,38;phosphor-triangle-thin,256_384,38;phosphor-triangle,320_384,38;phosphor-trolley-bold,384_384,38;phosphor-trolley-duotone,448_384,38;phosphor-trolley-fill,512_384,38;phosphor-trolley-light,576_384,38;phosphor-trolley-suitcase-bold,640_384,38;phosphor-trolley-suitcase-duotone,704_384,38;phosphor-trolley-suitcase-fill,768_384,38;phosphor-trolley-suitcase-light,832_384,38;phosphor-trolley-suitcase-thin,896_384,38;phosphor-trolley-suitcase,960_384,38;phosphor-trolley-thin,0_448,38;phosphor-trolley,64_448,38;phosphor-trophy-bold,128_448,38;phosphor-trophy-duotone,192_448,38;phosphor-trophy-fill,256_448,38;phosphor-trophy-light,320_448,38;phosphor-trophy-thin,384_448,38;phosphor-trophy,448_448,38;phosphor-truck-bold,512_448,38;phosphor-truck-duotone,576_448,38;phosphor-truck-fill,640_448,38;phosphor-truck-light,704_448,38;phosphor-truck-thin,768_448,38;phosphor-truck-trailer-bold,832_448,38;phosphor-truck-trailer-duotone,896_448,38;phosphor-truck-trailer-fill,960_448,38;phosphor-truck-trailer-light,0_512,38;phosphor-truck-trailer-thin,64_512,38;phosphor-truck-trailer,128_512,38;phosphor-truck,192_512,38;phosphor-tumblr-logo-bold,256_512,38;phosphor-tumblr-logo-duotone,320_512,38;phosphor-tumblr-logo-fill,384_512,38;phosphor-tumblr-logo-light,448_512,38;phosphor-tumblr-logo-thin,512_512,38;phosphor-tumblr-logo,576_512,38;phosphor-twitch-logo-bold,640_512,38;phosphor-twitch-logo-duotone,704_512,38;phosphor-twitch-logo-fill,768_512,38;phosphor-twitch-logo-light,832_512,38;phosphor-twitch-logo-thin,896_512,38;phosphor-twitch-logo,960_512,38;phosphor-twitter-logo-bold,0_576,38;phosphor-twitter-logo-duotone,64_576,38;phosphor-twitter-logo-fill,128_576,38;phosphor-twitter-logo-light,192_576,38;phosphor-twitter-logo-thin,256_576,38;phosphor-twitter-logo,320_576,38;phosphor-umbrella-bold,384_576,38;phosphor-umbrella-duotone,448_576,38;phosphor-umbrella-fill,512_576,38;phosphor-umbrella-light,576_576,38;phosphor-umbrella-simple-bold,640_576,38;phosphor-umbrella-simple-duotone,704_576,38;phosphor-umbrella-simple-fill,768_576,38;phosphor-umbrella-simple-light,832_576,38;phosphor-umbrella-simple-thin,896_576,38;phosphor-umbrella-simple,960_576,38;phosphor-umbrella-thin,0_640,38;phosphor-umbrella,64_640,38;phosphor-union-bold,128_640,38;phosphor-union-duotone,192_640,38;phosphor-union-fill,256_640,38;phosphor-union-light,320_640,38;phosphor-union-thin,384_640,38;phosphor-union,448_640,38;phosphor-unite-bold,512_640,38;phosphor-unite-duotone,576_640,38;phosphor-unite-fill,640_640,38;phosphor-unite-light,704_640,38;phosphor-unite-square-bold,768_640,38;phosphor-unite-square-duotone,832_640,38;phosphor-unite-square-fill,896_640,38;phosphor-unite-square-light,960_640,38;phosphor-unite-square-thin,0_704,38;phosphor-unite-square,64_704,38;phosphor-unite-thin,128_704,38;phosphor-unite,192_704,38;phosphor-upload-bold,256_704,38;phosphor-upload-duotone,320_704,38;phosphor-upload-fill,384_704,38;phosphor-upload-light,448_704,38;phosphor-upload-simple-bold,512_704,38;phosphor-upload-simple-duotone,576_704,38;phosphor-upload-simple-fill,640_704,38;phosphor-upload-simple-light,704_704,38;phosphor-upload-simple-thin,768_704,38;phosphor-upload-simple,832_704,38;phosphor-upload-thin,896_704,38;phosphor-upload,960_704,38;phosphor-usb-bold,0_768,38;phosphor-usb-duotone,64_768,38;phosphor-usb-fill,128_768,38;phosphor-usb-light,192_768,38;phosphor-usb-thin,256_768,38;phosphor-usb,320_768,38;phosphor-user-bold,384_768,38;phosphor-user-check-bold,448_768,38;phosphor-user-check-duotone,512_768,38;phosphor-user-check-fill,576_768,38;phosphor-user-check-light,640_768,38;phosphor-user-check-thin,704_768,38;phosphor-user-check,768_768,38;phosphor-user-circle-bold,832_768,38;phosphor-user-circle-check-bold,896_768,38;phosphor-user-circle-check-duotone,960_768,38;phosphor-user-circle-check-fill,0_832,38;phosphor-user-circle-check-light,64_832,38;phosphor-user-circle-check-thin,128_832,38;phosphor-user-circle-check,192_832,38;phosphor-user-circle-dashed-bold,256_832,38;phosphor-user-circle-dashed-duotone,320_832,38;phosphor-user-circle-dashed-fill,384_832,38;phosphor-user-circle-dashed-light,448_832,38;phosphor-user-circle-dashed-thin,512_832,38;phosphor-user-circle-dashed,576_832,38;phosphor-user-circle-duotone,640_832,38;phosphor-user-circle-fill,704_832,38;phosphor-user-circle-gear-bold,768_832,38;phosphor-user-circle-gear-duotone,832_832,38;phosphor-user-circle-gear-fill,896_832,38;phosphor-user-circle-gear-light,960_832,38;phosphor-user-circle-gear-thin,0_896,38;phosphor-user-circle-gear,64_896,38;phosphor-user-circle-light,128_896,38;phosphor-user-circle-minus-bold,192_896,38;phosphor-user-circle-minus-duotone,256_896,38;phosphor-user-circle-minus-fill,320_896,38;phosphor-user-circle-minus-light,384_896,38;phosphor-user-circle-minus-thin,448_896,38;phosphor-user-circle-minus,512_896,38;phosphor-user-circle-plus-bold,576_896,38;phosphor-user-circle-plus-duotone,640_896,38;phosphor-user-circle-plus-fill,704_896,38;phosphor-user-circle-plus-light,768_896,38;phosphor-user-circle-plus-thin,832_896,38;phosphor-user-circle-plus,896_896,38;phosphor-user-circle-thin,960_896,38;phosphor-user-circle,0_960,38;phosphor-user-duotone,64_960,38;phosphor-user-fill,128_960,38;phosphor-user-focus-bold,192_960,38;phosphor-user-focus-duotone,256_960,38;phosphor-user-focus-fill,320_960,38;phosphor-user-focus-light,384_960,38;phosphor-user-focus-thin,448_960,38;phosphor-user-focus,512_960,38;phosphor-user-gear-bold,576_960,38;phosphor-user-gear-duotone,640_960,38;phosphor-user-gear-fill,704_960,38;phosphor-user-gear-light,768_960,38;phosphor-user-gear-thin,832_960,38;phosphor-user-gear,896_960,38;phosphor-user-light,960_960,38;phosphor-user-list-bold,0_0,39;phosphor-user-list-duotone,64_0,39;phosphor-user-list-fill,128_0,39;phosphor-user-list-light,192_0,39;phosphor-user-list-thin,256_0,39;phosphor-user-list,320_0,39;phosphor-user-minus-bold,384_0,39;phosphor-user-minus-duotone,448_0,39;phosphor-user-minus-fill,512_0,39;phosphor-user-minus-light,576_0,39;phosphor-user-minus-thin,640_0,39;phosphor-user-minus,704_0,39;phosphor-user-plus-bold,768_0,39;phosphor-user-plus-duotone,832_0,39;phosphor-user-plus-fill,896_0,39;phosphor-user-plus-light,960_0,39;phosphor-user-plus-thin,0_64,39;phosphor-user-plus,64_64,39;phosphor-user-rectangle-bold,128_64,39;phosphor-user-rectangle-duotone,192_64,39;phosphor-user-rectangle-fill,256_64,39;phosphor-user-rectangle-light,320_64,39;phosphor-user-rectangle-thin,384_64,39;phosphor-user-rectangle,448_64,39;phosphor-user-sound-bold,512_64,39;phosphor-user-sound-duotone,576_64,39;phosphor-user-sound-fill,640_64,39;phosphor-user-sound-light,704_64,39;phosphor-user-sound-thin,768_64,39;phosphor-user-sound,832_64,39;phosphor-user-square-bold,896_64,39;phosphor-user-square-duotone,960_64,39;phosphor-user-square-fill,0_128,39;phosphor-user-square-light,64_128,39;phosphor-user-square-thin,128_128,39;phosphor-user-square,192_128,39;phosphor-user-switch-bold,256_128,39;phosphor-user-switch-duotone,320_128,39;phosphor-user-switch-fill,384_128,39;phosphor-user-switch-light,448_128,39;phosphor-user-switch-thin,512_128,39;phosphor-user-switch,576_128,39;phosphor-user-thin,640_128,39;phosphor-user,704_128,39;phosphor-users-bold,768_128,39;phosphor-users-duotone,832_128,39;phosphor-users-fill,896_128,39;phosphor-users-four-bold,960_128,39;phosphor-users-four-duotone,0_192,39;phosphor-users-four-fill,64_192,39;phosphor-users-four-light,128_192,39;phosphor-users-four-thin,192_192,39;phosphor-users-four,256_192,39;phosphor-users-light,320_192,39;phosphor-users-thin,384_192,39;phosphor-users-three-bold,448_192,39;phosphor-users-three-duotone,512_192,39;phosphor-users-three-fill,576_192,39;phosphor-users-three-light,640_192,39;phosphor-users-three-thin,704_192,39;phosphor-users-three,768_192,39;phosphor-users,832_192,39;phosphor-van-bold,896_192,39;phosphor-van-duotone,960_192,39;phosphor-van-fill,0_256,39;phosphor-van-light,64_256,39;phosphor-van-thin,128_256,39;phosphor-van,192_256,39;phosphor-vault-bold,256_256,39;phosphor-vault-duotone,320_256,39;phosphor-vault-fill,384_256,39;phosphor-vault-light,448_256,39;phosphor-vault-thin,512_256,39;phosphor-vault,576_256,39;phosphor-vector-three-bold,640_256,39;phosphor-vector-three-duotone,704_256,39;phosphor-vector-three-fill,768_256,39;phosphor-vector-three-light,832_256,39;phosphor-vector-three-thin,896_256,39;phosphor-vector-three,960_256,39;phosphor-vector-two-bold,0_320,39;phosphor-vector-two-duotone,64_320,39;phosphor-vector-two-fill,128_320,39;phosphor-vector-two-light,192_320,39;phosphor-vector-two-thin,256_320,39;phosphor-vector-two,320_320,39;phosphor-vibrate-bold,384_320,39;phosphor-vibrate-duotone,448_320,39;phosphor-vibrate-fill,512_320,39;phosphor-vibrate-light,576_320,39;phosphor-vibrate-thin,640_320,39;phosphor-vibrate,704_320,39;phosphor-video-bold,768_320,39;phosphor-video-camera-bold,832_320,39;phosphor-video-camera-duotone,896_320,39;phosphor-video-camera-fill,960_320,39;phosphor-video-camera-light,0_384,39;phosphor-video-camera-slash-bold,64_384,39;phosphor-video-camera-slash-duotone,128_384,39;phosphor-video-camera-slash-fill,192_384,39;phosphor-video-camera-slash-light,256_384,39;phosphor-video-camera-slash-thin,320_384,39;phosphor-video-camera-slash,384_384,39;phosphor-video-camera-thin,448_384,39;phosphor-video-camera,512_384,39;phosphor-video-conference-bold,576_384,39;phosphor-video-conference-duotone,640_384,39;phosphor-video-conference-fill,704_384,39;phosphor-video-conference-light,768_384,39;phosphor-video-conference-thin,832_384,39;phosphor-video-conference,896_384,39;phosphor-video-duotone,960_384,39;phosphor-video-fill,0_448,39;phosphor-video-light,64_448,39;phosphor-video-thin,128_448,39;phosphor-video,192_448,39;phosphor-vignette-bold,256_448,39;phosphor-vignette-duotone,320_448,39;phosphor-vignette-fill,384_448,39;phosphor-vignette-light,448_448,39;phosphor-vignette-thin,512_448,39;phosphor-vignette,576_448,39;phosphor-vinyl-record-bold,640_448,39;phosphor-vinyl-record-duotone,704_448,39;phosphor-vinyl-record-fill,768_448,39;phosphor-vinyl-record-light,832_448,39;phosphor-vinyl-record-thin,896_448,39;phosphor-vinyl-record,960_448,39;phosphor-virtual-reality-bold,0_512,39;phosphor-virtual-reality-duotone,64_512,39;phosphor-virtual-reality-fill,128_512,39;phosphor-virtual-reality-light,192_512,39;phosphor-virtual-reality-thin,256_512,39;phosphor-virtual-reality,320_512,39;phosphor-virus-bold,384_512,39;phosphor-virus-duotone,448_512,39;phosphor-virus-fill,512_512,39;phosphor-virus-light,576_512,39;phosphor-virus-thin,640_512,39;phosphor-virus,704_512,39;phosphor-visor-bold,768_512,39;phosphor-visor-duotone,832_512,39;phosphor-visor-fill,896_512,39;phosphor-visor-light,960_512,39;phosphor-visor-thin,0_576,39;phosphor-visor,64_576,39;phosphor-voicemail-bold,128_576,39;phosphor-voicemail-duotone,192_576,39;phosphor-voicemail-fill,256_576,39;phosphor-voicemail-light,320_576,39;phosphor-voicemail-thin,384_576,39;phosphor-voicemail,448_576,39;phosphor-volleyball-bold,512_576,39;phosphor-volleyball-duotone,576_576,39;phosphor-volleyball-fill,640_576,39;phosphor-volleyball-light,704_576,39;phosphor-volleyball-thin,768_576,39;phosphor-volleyball,832_576,39;phosphor-wall-bold,896_576,39;phosphor-wall-duotone,960_576,39;phosphor-wall-fill,0_640,39;phosphor-wall-light,64_640,39;phosphor-wall-thin,128_640,39;phosphor-wall,192_640,39;phosphor-wallet-bold,256_640,39;phosphor-wallet-duotone,320_640,39;phosphor-wallet-fill,384_640,39;phosphor-wallet-light,448_640,39;phosphor-wallet-thin,512_640,39;phosphor-wallet,576_640,39;phosphor-warehouse-bold,640_640,39;phosphor-warehouse-duotone,704_640,39;phosphor-warehouse-fill,768_640,39;phosphor-warehouse-light,832_640,39;phosphor-warehouse-thin,896_640,39;phosphor-warehouse,960_640,39;phosphor-warning-bold,0_704,39;phosphor-warning-circle-bold,64_704,39;phosphor-warning-circle-duotone,128_704,39;phosphor-warning-circle-fill,192_704,39;phosphor-warning-circle-light,256_704,39;phosphor-warning-circle-thin,320_704,39;phosphor-warning-circle,384_704,39;phosphor-warning-diamond-bold,448_704,39;phosphor-warning-diamond-duotone,512_704,39;phosphor-warning-diamond-fill,576_704,39;phosphor-warning-diamond-light,640_704,39;phosphor-warning-diamond-thin,704_704,39;phosphor-warning-diamond,768_704,39;phosphor-warning-duotone,832_704,39;phosphor-warning-fill,896_704,39;phosphor-warning-light,960_704,39;phosphor-warning-octagon-bold,0_768,39;phosphor-warning-octagon-duotone,64_768,39;phosphor-warning-octagon-fill,128_768,39;phosphor-warning-octagon-light,192_768,39;phosphor-warning-octagon-thin,256_768,39;phosphor-warning-octagon,320_768,39;phosphor-warning-thin,384_768,39;phosphor-warning,448_768,39;phosphor-washing-machine-bold,512_768,39;phosphor-washing-machine-duotone,576_768,39;phosphor-washing-machine-fill,640_768,39;phosphor-washing-machine-light,704_768,39;phosphor-washing-machine-thin,768_768,39;phosphor-washing-machine,832_768,39;phosphor-watch-bold,896_768,39;phosphor-watch-duotone,960_768,39;phosphor-watch-fill,0_832,39;phosphor-watch-light,64_832,39;phosphor-watch-thin,128_832,39;phosphor-watch,192_832,39;phosphor-wave-sawtooth-bold,256_832,39;phosphor-wave-sawtooth-duotone,320_832,39;phosphor-wave-sawtooth-fill,384_832,39;phosphor-wave-sawtooth-light,448_832,39;phosphor-wave-sawtooth-thin,512_832,39;phosphor-wave-sawtooth,576_832,39;phosphor-wave-sine-bold,640_832,39;phosphor-wave-sine-duotone,704_832,39;phosphor-wave-sine-fill,768_832,39;phosphor-wave-sine-light,832_832,39;phosphor-wave-sine-thin,896_832,39;phosphor-wave-sine,960_832,39;phosphor-wave-square-bold,0_896,39;phosphor-wave-square-duotone,64_896,39;phosphor-wave-square-fill,128_896,39;phosphor-wave-square-light,192_896,39;phosphor-wave-square-thin,256_896,39;phosphor-wave-square,320_896,39;phosphor-wave-triangle-bold,384_896,39;phosphor-wave-triangle-duotone,448_896,39;phosphor-wave-triangle-fill,512_896,39;phosphor-wave-triangle-light,576_896,39;phosphor-wave-triangle-thin,640_896,39;phosphor-wave-triangle,704_896,39;phosphor-waveform-bold,768_896,39;phosphor-waveform-duotone,832_896,39;phosphor-waveform-fill,896_896,39;phosphor-waveform-light,960_896,39;phosphor-waveform-slash-bold,0_960,39;phosphor-waveform-slash-duotone,64_960,39;phosphor-waveform-slash-fill,128_960,39;phosphor-waveform-slash-light,192_960,39;phosphor-waveform-slash-thin,256_960,39;phosphor-waveform-slash,320_960,39;phosphor-waveform-thin,384_960,39;phosphor-waveform,448_960,39;phosphor-waves-bold,512_960,39;phosphor-waves-duotone,576_960,39;phosphor-waves-fill,640_960,39;phosphor-waves-light,704_960,39;phosphor-waves-thin,768_960,39;phosphor-waves,832_960,39;phosphor-webcam-bold,896_960,39;phosphor-webcam-duotone,960_960,39;phosphor-webcam-fill,0_0,40;phosphor-webcam-light,64_0,40;phosphor-webcam-slash-bold,128_0,40;phosphor-webcam-slash-duotone,192_0,40;phosphor-webcam-slash-fill,256_0,40;phosphor-webcam-slash-light,320_0,40;phosphor-webcam-slash-thin,384_0,40;phosphor-webcam-slash,448_0,40;phosphor-webcam-thin,512_0,40;phosphor-webcam,576_0,40;phosphor-webhooks-logo-bold,640_0,40;phosphor-webhooks-logo-duotone,704_0,40;phosphor-webhooks-logo-fill,768_0,40;phosphor-webhooks-logo-light,832_0,40;phosphor-webhooks-logo-thin,896_0,40;phosphor-webhooks-logo,960_0,40;phosphor-wechat-logo-bold,0_64,40;phosphor-wechat-logo-duotone,64_64,40;phosphor-wechat-logo-fill,128_64,40;phosphor-wechat-logo-light,192_64,40;phosphor-wechat-logo-thin,256_64,40;phosphor-wechat-logo,320_64,40;phosphor-whatsapp-logo-bold,384_64,40;phosphor-whatsapp-logo-duotone,448_64,40;phosphor-whatsapp-logo-fill,512_64,40;phosphor-whatsapp-logo-light,576_64,40;phosphor-whatsapp-logo-thin,640_64,40;phosphor-whatsapp-logo,704_64,40;phosphor-wheelchair-bold,768_64,40;phosphor-wheelchair-duotone,832_64,40;phosphor-wheelchair-fill,896_64,40;phosphor-wheelchair-light,960_64,40;phosphor-wheelchair-motion-bold,0_128,40;phosphor-wheelchair-motion-duotone,64_128,40;phosphor-wheelchair-motion-fill,128_128,40;phosphor-wheelchair-motion-light,192_128,40;phosphor-wheelchair-motion-thin,256_128,40;phosphor-wheelchair-motion,320_128,40;phosphor-wheelchair-thin,384_128,40;phosphor-wheelchair,448_128,40;phosphor-wifi-high-bold,512_128,40;phosphor-wifi-high-duotone,576_128,40;phosphor-wifi-high-fill,640_128,40;phosphor-wifi-high-light,704_128,40;phosphor-wifi-high-thin,768_128,40;phosphor-wifi-high,832_128,40;phosphor-wifi-low-bold,896_128,40;phosphor-wifi-low-duotone,960_128,40;phosphor-wifi-low-fill,0_192,40;phosphor-wifi-low-light,64_192,40;phosphor-wifi-low-thin,128_192,40;phosphor-wifi-low,192_192,40;phosphor-wifi-medium-bold,256_192,40;phosphor-wifi-medium-duotone,320_192,40;phosphor-wifi-medium-fill,384_192,40;phosphor-wifi-medium-light,448_192,40;phosphor-wifi-medium-thin,512_192,40;phosphor-wifi-medium,576_192,40;phosphor-wifi-none-bold,640_192,40;phosphor-wifi-none-duotone,704_192,40;phosphor-wifi-none-fill,768_192,40;phosphor-wifi-none-light,832_192,40;phosphor-wifi-none-thin,896_192,40;phosphor-wifi-none,960_192,40;phosphor-wifi-slash-bold,0_256,40;phosphor-wifi-slash-duotone,64_256,40;phosphor-wifi-slash-fill,128_256,40;phosphor-wifi-slash-light,192_256,40;phosphor-wifi-slash-thin,256_256,40;phosphor-wifi-slash,320_256,40;phosphor-wifi-x-bold,384_256,40;phosphor-wifi-x-duotone,448_256,40;phosphor-wifi-x-fill,512_256,40;phosphor-wifi-x-light,576_256,40;phosphor-wifi-x-thin,640_256,40;phosphor-wifi-x,704_256,40;phosphor-wind-bold,768_256,40;phosphor-wind-duotone,832_256,40;phosphor-wind-fill,896_256,40;phosphor-wind-light,960_256,40;phosphor-wind-thin,0_320,40;phosphor-wind,64_320,40;phosphor-windmill-bold,128_320,40;phosphor-windmill-duotone,192_320,40;phosphor-windmill-fill,256_320,40;phosphor-windmill-light,320_320,40;phosphor-windmill-thin,384_320,40;phosphor-windmill,448_320,40;phosphor-windows-logo-bold,512_320,40;phosphor-windows-logo-duotone,576_320,40;phosphor-windows-logo-fill,640_320,40;phosphor-windows-logo-light,704_320,40;phosphor-windows-logo-thin,768_320,40;phosphor-windows-logo,832_320,40;phosphor-wine-bold,896_320,40;phosphor-wine-duotone,960_320,40;phosphor-wine-fill,0_384,40;phosphor-wine-light,64_384,40;phosphor-wine-thin,128_384,40;phosphor-wine,192_384,40;phosphor-wrench-bold,256_384,40;phosphor-wrench-duotone,320_384,40;phosphor-wrench-fill,384_384,40;phosphor-wrench-light,448_384,40;phosphor-wrench-thin,512_384,40;phosphor-wrench,576_384,40;phosphor-x-bold,640_384,40;phosphor-x-circle-bold,704_384,40;phosphor-x-circle-duotone,768_384,40;phosphor-x-circle-fill,832_384,40;phosphor-x-circle-light,896_384,40;phosphor-x-circle-thin,960_384,40;phosphor-x-circle,0_448,40;phosphor-x-duotone,64_448,40;phosphor-x-fill,128_448,40;phosphor-x-light,192_448,40;phosphor-x-logo-bold,256_448,40;phosphor-x-logo-duotone,320_448,40;phosphor-x-logo-fill,384_448,40;phosphor-x-logo-light,448_448,40;phosphor-x-logo-thin,512_448,40;phosphor-x-logo,576_448,40;phosphor-x-square-bold,640_448,40;phosphor-x-square-duotone,704_448,40;phosphor-x-square-fill,768_448,40;phosphor-x-square-light,832_448,40;phosphor-x-square-thin,896_448,40;phosphor-x-square,960_448,40;phosphor-x-thin,0_512,40;phosphor-x,64_512,40;phosphor-yarn-bold,128_512,40;phosphor-yarn-duotone,192_512,40;phosphor-yarn-fill,256_512,40;phosphor-yarn-light,320_512,40;phosphor-yarn-thin,384_512,40;phosphor-yarn,448_512,40;phosphor-yin-yang-bold,512_512,40;phosphor-yin-yang-duotone,576_512,40;phosphor-yin-yang-fill,640_512,40;phosphor-yin-yang-light,704_512,40;phosphor-yin-yang-thin,768_512,40;phosphor-yin-yang,832_512,40;phosphor-youtube-logo-bold,896_512,40;phosphor-youtube-logo-duotone,960_512,40;phosphor-youtube-logo-fill,0_576,40;phosphor-youtube-logo-light,64_576,40;phosphor-youtube-logo-thin,128_576,40;phosphor-youtube-logo,192_576,40;pi,256_576,40;piano,320_576,40;pickaxe,384_576,40;picture-in-picture-2,448_576,40;picture-in-picture,512_576,40;piggy-bank,576_576,40;pilcrow-left,640_576,40;pilcrow-right,704_576,40;pilcrow,768_576,40;pill-bottle,832_576,40;pill,896_576,40;pin-off,960_576,40;pin,0_640,40;pipette,64_640,40;pizza,128_640,40;plane-landing,192_640,40;plane-takeoff,256_640,40;plane,320_640,40;play,384_640,40;plug-2,448_640,40;plug-zap,512_640,40;plug,576_640,40;plus,640_640,40;pocket-knife,704_640,40;pocket,768_640,40;podcast,832_640,40;pointer-off,896_640,40;pointer,960_640,40;popcorn,0_704,40;popsicle,64_704,40;pound-sterling,128_704,40;power-off,192_704,40;power,256_704,40;presentation,320_704,40;printer-check,384_704,40;printer,448_704,40;projector,512_704,40;proportions,576_704,40;puzzle,640_704,40;pyramid,704_704,40;qr-code,768_704,40;quote,832_704,40;rabbit,896_704,40;radar,960_704,40;radiation,0_768,40;radical,64_768,40;radio-receiver,128_768,40;radio-tower,192_768,40;radio,256_768,40;radius,320_768,40;rail-symbol,384_768,40;rainbow,448_768,40;rat,512_768,40;ratio,576_768,40;receipt-cent,640_768,40;receipt-euro,704_768,40;receipt-indian-rupee,768_768,40;receipt-japanese-yen,832_768,40;receipt-pound-sterling,896_768,40;receipt-russian-ruble,960_768,40;receipt-swiss-franc,0_832,40;receipt-text,64_832,40;receipt,128_832,40;rectangle-ellipsis,192_832,40;rectangle-horizontal,256_832,40;rectangle-vertical,320_832,40;recycle,384_832,40;redo-2,448_832,40;redo-dot,512_832,40;redo,576_832,40;refresh-ccw-dot,640_832,40;refresh-ccw,704_832,40;refresh-cw-off,768_832,40;refresh-cw,832_832,40;refrigerator,896_832,40;regex,960_832,40;remove-formatting,0_896,40;repeat-1,64_896,40;repeat-2,128_896,40;repeat,192_896,40;replace-all,256_896,40;replace,320_896,40;reply-all,384_896,40;reply,448_896,40;rewind,512_896,40;ribbon,576_896,40;rocket,640_896,40;rocking-chair,704_896,40;roller-coaster,768_896,40;rotate-3d,832_896,40;rotate-ccw-square,896_896,40;rotate-ccw,960_896,40;rotate-cw-square,0_960,40;rotate-cw,64_960,40;route-off,128_960,40;route,192_960,40;router,256_960,40;rows-2,320_960,40;rows-3,384_960,40;rows-4,448_960,40;rss,512_960,40;ruler,576_960,40;russian-ruble,640_960,40;sailboat,704_960,40;salad,768_960,40;sandwich,832_960,40;satellite-dish,896_960,40;satellite,960_960,40;save-all,0_0,41;save-off,64_0,41;save,128_0,41;scale-3d,192_0,41;scale,256_0,41;scaling,320_0,41;scan-barcode,384_0,41;scan-eye,448_0,41;scan-face,512_0,41;scan-heart,576_0,41;scan-line,640_0,41;scan-qr-code,704_0,41;scan-search,768_0,41;scan-text,832_0,41;scan,896_0,41;school,960_0,41;scissors-line-dashed,0_64,41;scissors,64_64,41;screen-share-off,128_64,41;screen-share,192_64,41;scroll-text,256_64,41;scroll,320_64,41;search-check,384_64,41;search-code,448_64,41;search-slash,512_64,41;search-x,576_64,41;search,640_64,41;section,704_64,41;send-horizontal,768_64,41;send-to-back,832_64,41;send,896_64,41;separator-horizontal,960_64,41;separator-vertical,0_128,41;server-cog,64_128,41;server-crash,128_128,41;server-off,192_128,41;server,256_128,41;settings-2,320_128,41;settings,384_128,41;shapes,448_128,41;share-2,512_128,41;share,576_128,41;sheet,640_128,41;shell,704_128,41;shield-alert,768_128,41;shield-ban,832_128,41;shield-check,896_128,41;shield-ellipsis,960_128,41;shield-half,0_192,41;shield-minus,64_192,41;shield-off,128_192,41;shield-plus,192_192,41;shield-question,256_192,41;shield-x,320_192,41;shield,384_192,41;ship-wheel,448_192,41;ship,512_192,41;shirt,576_192,41;shopping-bag,640_192,41;shopping-basket,704_192,41;shopping-cart,768_192,41;shovel,832_192,41;shower-head,896_192,41;shrink,960_192,41;shrub,0_256,41;shuffle,64_256,41;sigma,128_256,41;signal-high,192_256,41;signal-low,256_256,41;signal-medium,320_256,41;signal-zero,384_256,41;signal,448_256,41;signature,512_256,41;signpost-big,576_256,41;signpost,640_256,41;siren,704_256,41;skip-back,768_256,41;skip-forward,832_256,41;skull,896_256,41;slack,960_256,41;slash,0_320,41;slice,64_320,41;sliders-horizontal,128_320,41;sliders-vertical,192_320,41;smartphone-charging,256_320,41;smartphone-nfc,320_320,41;smartphone,384_320,41;smile-plus,448_320,41;smile,512_320,41;snail,576_320,41;snowflake,640_320,41;sofa,704_320,41;soup,768_320,41;space,832_320,41;spade,896_320,41;sparkle,960_320,41;sparkles,0_384,41;speaker,64_384,41;speech,128_384,41;spell-check-2,192_384,41;spell-check,256_384,41;spline,320_384,41;split,384_384,41;spray-can,448_384,41;sprout,512_384,41;square-activity,576_384,41;square-arrow-down-left,640_384,41;square-arrow-down-right,704_384,41;square-arrow-down,768_384,41;square-arrow-left,832_384,41;square-arrow-out-down-left,896_384,41;square-arrow-out-down-right,960_384,41;square-arrow-out-up-left,0_448,41;square-arrow-out-up-right,64_448,41;square-arrow-right,128_448,41;square-arrow-up-left,192_448,41;square-arrow-up-right,256_448,41;square-arrow-up,320_448,41;square-asterisk,384_448,41;square-bottom-dashed-scissors,448_448,41;square-chart-gantt,512_448,41;square-check-big,576_448,41;square-check,640_448,41;square-chevron-down,704_448,41;square-chevron-left,768_448,41;square-chevron-right,832_448,41;square-chevron-up,896_448,41;square-code,960_448,41;square-dashed-bottom-code,0_512,41;square-dashed-bottom,64_512,41;square-dashed-kanban,128_512,41;square-dashed-mouse-pointer,192_512,41;square-dashed,256_512,41;square-divide,320_512,41;square-dot,384_512,41;square-equal,448_512,41;square-function,512_512,41;square-kanban,576_512,41;square-library,640_512,41;square-m,704_512,41;square-menu,768_512,41;square-minus,832_512,41;square-mouse-pointer,896_512,41;square-parking-off,960_512,41;square-parking,0_576,41;square-pen,64_576,41;square-percent,128_576,41;square-pi,192_576,41;square-pilcrow,256_576,41;square-play,320_576,41;square-plus,384_576,41;square-power,448_576,41;square-radical,512_576,41;square-scissors,576_576,41;square-sigma,640_576,41;square-slash,704_576,41;square-split-horizontal,768_576,41;square-split-vertical,832_576,41;square-square,896_576,41;square-stack,960_576,41;square-terminal,0_640,41;square-user-round,64_640,41;square-user,128_640,41;square-x,192_640,41;square,256_640,41;squircle,320_640,41;squirrel,384_640,41;stamp,448_640,41;star-half,512_640,41;star-off,576_640,41;star,640_640,41;step-back,704_640,41;step-forward,768_640,41;stethoscope,832_640,41;sticker,896_640,41;sticky-note,960_640,41;store,0_704,41;stretch-horizontal,64_704,41;stretch-vertical,128_704,41;strikethrough,192_704,41;subscript,256_704,41;sun-dim,320_704,41;sun-medium,384_704,41;sun-moon,448_704,41;sun-snow,512_704,41;sun,576_704,41;sunrise,640_704,41;sunset,704_704,41;superscript,768_704,41;swatch-book,832_704,41;swiss-franc,896_704,41;switch-camera,960_704,41;sword,0_768,41;swords,64_768,41;syringe,128_768,41;table-2,192_768,41;table-cells-merge,256_768,41;table-cells-split,320_768,41;table-columns-split,384_768,41;table-of-contents,448_768,41;table-properties,512_768,41;table-rows-split,576_768,41;table,640_768,41;tablet-smartphone,704_768,41;tablet,768_768,41;tablets,832_768,41;tag,896_768,41;tags,960_768,41;tally-1,0_832,41;tally-2,64_832,41;tally-3,128_832,41;tally-4,192_832,41;tally-5,256_832,41;tangent,320_832,41;target,384_832,41;telescope,448_832,41;tent-tree,512_832,41;tent,576_832,41;terminal,640_832,41;test-tube-diagonal,704_832,41;test-tube,768_832,41;test-tubes,832_832,41;text-cursor-input,896_832,41;text-cursor,960_832,41;text-quote,0_896,41;text-search,64_896,41;text-select,128_896,41;text,192_896,41;theater,256_896,41;thermometer-snowflake,320_896,41;thermometer-sun,384_896,41;thermometer,448_896,41;thumbs-down,512_896,41;thumbs-up,576_896,41;ticket-check,640_896,41;ticket-minus,704_896,41;ticket-percent,768_896,41;ticket-plus,832_896,41;ticket-slash,896_896,41;ticket-x,960_896,41;ticket,0_960,41;tickets-plane,64_960,41;tickets,128_960,41;timer-off,192_960,41;timer-reset,256_960,41;timer,320_960,41;toggle-left,384_960,41;toggle-right,448_960,41;toilet,512_960,41;tornado,576_960,41;torus,640_960,41;touchpad-off,704_960,41;touchpad,768_960,41;tower-control,832_960,41;toy-brick,896_960,41;tractor,960_960,41;traffic-cone,0_0,42;train-front-tunnel,64_0,42;train-front,128_0,42;train-track,192_0,42;tram-front,256_0,42;trash-2,320_0,42;trash,384_0,42;tree-deciduous,448_0,42;tree-palm,512_0,42;tree-pine,576_0,42;trees,640_0,42;trello,704_0,42;trending-down,768_0,42;trending-up-down,832_0,42;trending-up,896_0,42;triangle-alert,960_0,42;triangle-right,0_64,42;triangle,64_64,42;trophy,128_64,42;truck,192_64,42;turtle,256_64,42;tv-minimal-play,320_64,42;tv-minimal,384_64,42;tv,448_64,42;twitch,512_64,42;twitter,576_64,42;type-outline,640_64,42;type,704_64,42;umbrella-off,768_64,42;umbrella,832_64,42;underline,896_64,42;undo-2,960_64,42;undo-dot,0_128,42;undo,64_128,42;unfold-horizontal,128_128,42;unfold-vertical,192_128,42;ungroup,256_128,42;university,320_128,42;unlink-2,384_128,42;unlink,448_128,42;unplug,512_128,42;upload,576_128,42;usb,640_128,42;user-check,704_128,42;user-cog,768_128,42;user-minus,832_128,42;user-pen,896_128,42;user-plus,960_128,42;user-round-check,0_192,42;user-round-cog,64_192,42;user-round-minus,128_192,42;user-round-pen,192_192,42;user-round-plus,256_192,42;user-round-search,320_192,42;user-round-x,384_192,42;user-round,448_192,42;user-search,512_192,42;user-x,576_192,42;user,640_192,42;users-round,704_192,42;users,768_192,42;utensils-crossed,832_192,42;utensils,896_192,42;utility-pole,960_192,42;variable,0_256,42;vault,64_256,42;vegan,128_256,42;venetian-mask,192_256,42;vibrate-off,256_256,42;vibrate,320_256,42;video-off,384_256,42;video,448_256,42;videotape,512_256,42;view,576_256,42;voicemail,640_256,42;volleyball,704_256,42;volume-1,768_256,42;volume-2,832_256,42;volume-off,896_256,42;volume-x,960_256,42;volume,0_320,42;vote,64_320,42;wallet-cards,128_320,42;wallet-minimal,192_320,42;wallet,256_320,42;wallpaper,320_320,42;wand-sparkles,384_320,42;wand,448_320,42;warehouse,512_320,42;washing-machine,576_320,42;watch,640_320,42;waves-ladder,704_320,42;waves,768_320,42;waypoints,832_320,42;webcam,896_320,42;webhook-off,960_320,42;webhook,0_384,42;weight,64_384,42;wheat-off,128_384,42;wheat,192_384,42;whole-word,256_384,42;wifi-high,320_384,42;wifi-low,384_384,42;wifi-off,448_384,42;wifi-zero,512_384,42;wifi,576_384,42;wind-arrow-down,640_384,42;wind,704_384,42;wine-off,768_384,42;wine,832_384,42;workflow,896_384,42;worm,960_384,42;wrap-text,0_448,42;wrench,64_448,42;x,128_448,42;youtube,192_448,42;zap-off,256_448,42;zap,320_448,42;zoom-in,384_448,42;zoom-out,448_448,42" local IMAGES = {icons_1, icons_2, icons_3, icons_4, icons_5, icons_6, icons_7, icons_8, icons_9, icons_10, icons_11, icons_12, icons_13, icons_14, icons_15, icons_16, icons_17, icons_18, icons_19, icons_20, icons_21, icons_22, icons_23, icons_24, icons_25, icons_26, icons_27, icons_28, icons_29, icons_30, icons_31, icons_32, icons_33, icons_34, icons_35, icons_36, icons_37, icons_38, icons_39, icons_40, icons_41, icons_42} local S64 = VEC2['64_64'] for _n, _o, _i in string.gmatch(_ICONDATA, "([^,]+),([^,]+),(%d+);?") do M[_n] = { ImageRectSize = S64, ImageRectOffset = VEC2[_o], Image = IMAGES[tonumber(_i)] } end return M end R["Wave/UserInterface/Imports/ServerBrowser/ServerBrowserModule.lua"] = function(...) -- Server browser: a slide-out panel (mirrors the Terminal's pattern) that lists -- joinable servers as cards (image + title + description + Join button), with a -- refresh button in the header. Driven by the script through WindowFunctions. local ServerBrowser = {} ServerBrowser.__index = ServerBrowser local C = { Width = 0.375, -- match the terminal's default width IconSize = 15, HeaderTextSize = 18, HeaderHeight = 56, CardHeight = 96, CardPad = 12, ImageSize = 72, } local function Attr(WindowFunctions, Name, Fallback) local ok, v = pcall(function() return WindowFunctions:GetCurrentThemeAttribute(Name) end) if ok and v ~= nil then return v end return Fallback end local function GetIconSheet() local sheet = getgenv().__WaveIconSheet if sheet == nil then local ok, s = pcall(function() return Utility:LoadFile("Wave/UserInterface/Imports/Icons.lua") end) sheet = (ok and type(s) == "table") and s or false getgenv().__WaveIconSheet = sheet end return sheet or nil end local function SetLucide(self, Image, Name) if self.IconSheet then pcall(function() self.IconSheet:SetIcon(Image, Name) end) end end function ServerBrowser.new(Parent, TopbarFolder, WaveLibrary, WaveLibraryUI, WindowFunctions) local self = setmetatable({}, ServerBrowser) self.Parent = Parent self.WaveLibrary = WaveLibrary self.WaveLibraryUI = WaveLibraryUI self.WindowFunctions = WindowFunctions self.Cards = {} self.RefreshCallback = nil self.Open = false self.ToggleDebounce = false self.IconSheet = GetIconSheet() self:CreatePanel() self:CreateTopbarIcon(TopbarFolder) self:Theme() -- Hide cleanly with the window. The panel is a child of Base (so it follows Base.Visible), but its -- glow lives outside Base and would otherwise linger -- drop both the instant the window toggles -- off, and restore them to the panel's open/closed state when it comes back. pcall(function() self.Parent:GetPropertyChangedSignal("Visible"):Connect(function() local shown = self.Parent.Visible self.Panel.Visible = shown and self.Open or false if self.Shadow then self.Shadow.Visible = shown and self.Open or false end end) end) return self end function ServerBrowser:CreatePanel() local Panel = Instance.new("Frame") Panel.Name = "ServerBrowser" Panel.AnchorPoint = Vector2.new(0.5, 0.5) Panel.Size = UDim2.new(C.Width, 0, 1, 0) Panel.Position = UDim2.new(1, 0, 0.5, 0) -- tucked behind the window's right edge Panel.BackgroundColor3 = Color3.fromRGB(16, 16, 22) Panel.BackgroundTransparency = 0 Panel.BorderSizePixel = 0 Panel.ZIndex = -10 -- sit behind the main window Panel.Visible = false Panel.Parent = self.Parent self.Panel = Panel local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 10) Corner.Parent = Panel local Stroke = Instance.new("UIStroke") Stroke.Name = "ServerStroke" Stroke.Color = Color3.fromRGB(255, 255, 255) Stroke.Transparency = 0.85 Stroke.Thickness = 1 Stroke.Parent = Panel self.Stroke = Stroke -- wavy wallpaper, same image the terminal / main window use (kept subtle, behind the content) local Wallpaper = Instance.new("ImageLabel") Wallpaper.Name = "ServerWallpaper" Wallpaper.Image = Assets.StyleOneWallpaper Wallpaper.Size = UDim2.new(1, 0, 1, 0) Wallpaper.Position = UDim2.new(0, 0, 0, 0) Wallpaper.BackgroundTransparency = 1 Wallpaper.ImageTransparency = 0.65 Wallpaper.ImageColor3 = Color3.fromRGB(32, 32, 32) Wallpaper.ScaleType = Enum.ScaleType.Crop Wallpaper.ZIndex = 0 Wallpaper.Parent = Panel local WallCorner = Instance.new("UICorner") WallCorner.CornerRadius = UDim.new(0, 10) WallCorner.Parent = Wallpaper self.Wallpaper = Wallpaper -- same glow as the main window, theme-driven via WindowFunctions:ApplyShadows pcall(function() self.Shadow = self.WaveLibrary:CreateShadow({ Object = self.WaveLibraryUI, ReplicateVisible = { self.Parent, Panel }, ObjectReplication = Panel, Gradient = { Color = ColorSequence.new(Color3.new(0, 0, 0.2), Color3.new(0.4, 0.6, 1)), }, }) end) -- header: centered title (exactly like the terminal's "Terminal" label) + refresh (right) local Title = Instance.new("TextLabel") Title.Name = "ServerTitle" Title.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold) Title.RichText = true Title.Text = "Servers" Title.TextColor3 = Color3.fromRGB(220, 220, 220) Title.TextSize = C.HeaderTextSize Title.TextTransparency = 0.5 Title.TextTruncate = Enum.TextTruncate.SplitWord Title.TextXAlignment = Enum.TextXAlignment.Center Title.TextYAlignment = Enum.TextYAlignment.Top Title.BackgroundTransparency = 1 Title.AnchorPoint = Vector2.new(0, 0.5) Title.AutomaticSize = Enum.AutomaticSize.Y Title.Position = UDim2.fromScale(0.05, 0.05) Title.Size = UDim2.fromScale(0.9, 0) Title.ZIndex = 6 Title.Parent = Panel self.TitleLabel = Title -- the little centered bar under the title, same as the terminal's local TitleBar = Instance.new("Frame") TitleBar.Name = "ServerTitleBar" TitleBar.AnchorPoint = Vector2.new(0.5, 0) TitleBar.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TitleBar.BackgroundTransparency = 0.9 TitleBar.BorderSizePixel = 0 TitleBar.Position = UDim2.new(0.5, 0, 0, 42.5) TitleBar.Size = UDim2.new(0, 48, 0, 1) TitleBar.ZIndex = 6 TitleBar.Parent = Panel self.TitleBar = TitleBar local Refresh = Instance.new("ImageButton") Refresh.Name = "ServerRefresh" Refresh.AnchorPoint = Vector2.new(1, 0.5) Refresh.Position = UDim2.fromScale(0.935, 0.05) -- same spot as the terminal's bin icon Refresh.Size = UDim2.fromOffset(15, 15) -- same size as the terminal's bin icon Refresh.BackgroundTransparency = 1 Refresh.ImageColor3 = Color3.fromRGB(210, 210, 220) Refresh.ImageTransparency = 0.25 Refresh.ZIndex = 6 Refresh.Parent = Panel SetLucide(self, Refresh, "refresh-cw") self.RefreshButton = Refresh local Divider = Instance.new("Frame") Divider.Name = "ServerDivider" Divider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Divider.BackgroundTransparency = 0.9 Divider.BorderSizePixel = 0 Divider.Position = UDim2.new(0, 0, 0, 63) Divider.Size = UDim2.new(1, 0, 0, 1) Divider.ZIndex = 6 Divider.Parent = Panel self.Divider = Divider -- scrolling list of cards local Scroll = Instance.new("ScrollingFrame") Scroll.Name = "ServerList" Scroll.Active = true Scroll.BackgroundTransparency = 1 Scroll.BorderSizePixel = 0 Scroll.Position = UDim2.new(0, 0, 0, 72) Scroll.Size = UDim2.new(1, 0, 1, -84) Scroll.CanvasSize = UDim2.new() Scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y Scroll.ScrollBarThickness = 2 Scroll.ScrollBarImageColor3 = Color3.fromRGB(255, 255, 255) Scroll.ScrollBarImageTransparency = 0.7 Scroll.ScrollingDirection = Enum.ScrollingDirection.Y Scroll.ZIndex = 6 Scroll.Parent = Panel self.Scroll = Scroll local SPad = Instance.new("UIPadding") SPad.PaddingLeft = UDim.new(0, 14) SPad.PaddingRight = UDim.new(0, 14) SPad.PaddingTop = UDim.new(0, 4) SPad.PaddingBottom = UDim.new(0, 12) SPad.Parent = Scroll local SList = Instance.new("UIListLayout") SList.FillDirection = Enum.FillDirection.Vertical SList.SortOrder = Enum.SortOrder.LayoutOrder SList.Padding = UDim.new(0, 10) SList.Parent = Scroll self.ListLayout = SList -- empty-state hint local Empty = Instance.new("TextLabel") Empty.Name = "ServerEmpty" Empty.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium) Empty.Text = "No servers yet — hit refresh." Empty.TextColor3 = Color3.fromRGB(150, 150, 165) Empty.TextSize = 13 Empty.TextWrapped = true Empty.BackgroundTransparency = 1 Empty.AnchorPoint = Vector2.new(0.5, 0) Empty.Position = UDim2.new(0.5, 0, 0, 28) Empty.Size = UDim2.new(1, -40, 0, 40) Empty.ZIndex = 6 Empty.Parent = Panel self.EmptyLabel = Empty -- refresh hover + click Refresh.MouseEnter:Connect(function() Utility:QuickTween(Refresh, { ImageTransparency = 0 }) end) Refresh.MouseLeave:Connect(function() Utility:QuickTween(Refresh, { ImageTransparency = 0.25 }) end) Refresh.MouseButton1Click:Connect(function() self:DoRefresh() end) end function ServerBrowser:CreateTopbarIcon(TopbarFolder) local Icon = Instance.new("ImageButton") Icon.Name = "ServerIcon" Icon.AnchorPoint = Vector2.new(1, 0.5) Icon.BackgroundTransparency = 1 Icon.ImageColor3 = Color3.fromRGB(255, 255, 255) Icon.ImageTransparency = 0.7 Icon.Position = UDim2.fromScale(1, 0.5) Icon.Size = UDim2.fromOffset(C.IconSize, C.IconSize) Icon.LayoutOrder = -1 -- left of the terminal icon (which is 0) in the right-aligned topbar Icon.ZIndex = 5 Icon.Parent = TopbarFolder SetLucide(self, Icon, "server") self.TopbarIcon = Icon Icon.MouseEnter:Connect(function() Utility:QuickTween(Icon, { ImageTransparency = 0 }) end) Icon.MouseLeave:Connect(function() Utility:QuickTween(Icon, { ImageTransparency = self.Open and 0.15 or 0.7 }) end) Icon.InputBegan:Connect(function(Input) if self.ToggleDebounce then return end if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then self.ToggleDebounce = true self:SetOpen(not self.Open) task.delay(0.3, function() self.ToggleDebounce = false end) end end) end function ServerBrowser:DoRefresh() -- spin the icon once pcall(function() Utility:PropertyTween(self.RefreshButton, TweenInfo.new(0.45, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), { Rotation = self.RefreshButton.Rotation - 360 }):Play() end) if type(self.RefreshCallback) == "function" then if self.WaveLibrary and self.WaveLibrary.SafeCallback then self.WaveLibrary:SafeCallback(self.RefreshCallback) else pcall(self.RefreshCallback) end end end function ServerBrowser:SetRefreshCallback(fn) self.RefreshCallback = fn end function ServerBrowser:SetTitle(text) if self.TitleLabel then self.TitleLabel.Text = tostring(text) end end function ServerBrowser:UpdateCount() if self.EmptyLabel then self.EmptyLabel.Visible = (#self.Cards == 0) end end function ServerBrowser:AddServer(opts) opts = opts or {} local Card = Instance.new("Frame") Card.Name = "ServerCard" Card.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Card.BackgroundTransparency = 0.965 Card.BorderSizePixel = 0 Card.Size = UDim2.new(1, 0, 0, C.CardHeight) Card.LayoutOrder = #self.Cards + 1 Card.ZIndex = 7 Card.Parent = self.Scroll local CardCorner = Instance.new("UICorner") CardCorner.CornerRadius = UDim.new(0, 8) CardCorner.Parent = Card local CardStroke = Instance.new("UIStroke") CardStroke.Name = "CardStroke" CardStroke.Color = Color3.fromRGB(255, 255, 255) CardStroke.Transparency = 0.9 CardStroke.Thickness = 1 CardStroke.Parent = Card local Image = Instance.new("ImageLabel") Image.Name = "CardImage" Image.BackgroundColor3 = Color3.fromRGB(40, 40, 50) Image.BackgroundTransparency = 0.3 Image.BorderSizePixel = 0 Image.AnchorPoint = Vector2.new(0, 0.5) Image.Position = UDim2.new(0, C.CardPad, 0.5, 0) Image.Size = UDim2.fromOffset(C.ImageSize, C.ImageSize) Image.ScaleType = Enum.ScaleType.Crop Image.Image = opts.Image and tostring(opts.Image) or "" Image.ZIndex = 8 Image.Parent = Card local ImageCorner = Instance.new("UICorner") ImageCorner.CornerRadius = UDim.new(0, 7) ImageCorner.Parent = Image local TextLeft = C.CardPad + C.ImageSize + 12 local TitleL = Instance.new("TextLabel") TitleL.Name = "CardTitle" TitleL.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.SemiBold) TitleL.Text = opts.Title and tostring(opts.Title) or "Server" TitleL.TextColor3 = Color3.fromRGB(240, 240, 245) TitleL.TextSize = 14 TitleL.TextXAlignment = Enum.TextXAlignment.Left TitleL.TextYAlignment = Enum.TextYAlignment.Top TitleL.TextTruncate = Enum.TextTruncate.AtEnd TitleL.BackgroundTransparency = 1 TitleL.Position = UDim2.new(0, TextLeft, 0, 14) TitleL.Size = UDim2.new(1, -(TextLeft + 14), 0, 18) TitleL.ZIndex = 8 TitleL.Parent = Card local DescL = Instance.new("TextLabel") DescL.Name = "CardDescription" DescL.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Medium) DescL.Text = opts.Description and tostring(opts.Description) or "" DescL.TextColor3 = Color3.fromRGB(165, 165, 180) DescL.TextSize = 12 DescL.TextXAlignment = Enum.TextXAlignment.Left DescL.TextYAlignment = Enum.TextYAlignment.Top DescL.TextWrapped = true DescL.TextTruncate = Enum.TextTruncate.AtEnd DescL.BackgroundTransparency = 1 DescL.Position = UDim2.new(0, TextLeft, 0, 34) DescL.Size = UDim2.new(1, -(TextLeft + 14), 0, 30) DescL.ZIndex = 8 DescL.Parent = Card -- Join button: styled exactly like a main-UI Button -- transparent with a faint hover wash, dim -- text that brightens on hover, and the standard action icon on the right. local hoverColor = Attr(self.WindowFunctions, "HoverColor", Color3.fromRGB(255, 255, 255)) local Join = Instance.new("Frame") Join.Name = "CardJoin" Join.BackgroundTransparency = 1 Join.AnchorPoint = Vector2.new(1, 1) Join.Position = UDim2.new(1, -12, 1, -12) Join.Size = UDim2.fromOffset(52, 26) Join.ZIndex = 9 Join.Parent = Card local JoinBG = Instance.new("Frame") -- faint hover wash, same as the main-UI button JoinBG.Name = "ButtonBG" JoinBG.BackgroundColor3 = hoverColor JoinBG.BackgroundTransparency = 1 JoinBG.BorderSizePixel = 0 JoinBG.AnchorPoint = Vector2.new(0.5, 0.5) JoinBG.Position = UDim2.fromScale(0.5, 0.5) JoinBG.Size = UDim2.new(1, 14, 1, 4) JoinBG.ZIndex = 9 JoinBG.Parent = Join local JoinBGCorner = Instance.new("UICorner") JoinBGCorner.CornerRadius = UDim.new(0, 8) JoinBGCorner.Parent = JoinBG local JoinInteract = Instance.new("TextButton") JoinInteract.Name = "CardJoinInteract" JoinInteract.FontFace = Font.new(Assets.InterFont) JoinInteract.RichText = true JoinInteract.Text = "Join" JoinInteract.TextColor3 = Color3.fromRGB(255, 255, 255) JoinInteract.TextSize = 13 JoinInteract.TextTransparency = 0.5 JoinInteract.TextXAlignment = Enum.TextXAlignment.Right JoinInteract.BackgroundTransparency = 1 JoinInteract.Size = UDim2.fromScale(1, 1) JoinInteract.ZIndex = 10 JoinInteract.Parent = Join local JoinInteractPad = Instance.new("UIPadding") -- keep "Join" snug just left of the arrow JoinInteractPad.PaddingRight = UDim.new(0, 23) JoinInteractPad.Parent = JoinInteract local JoinImage = Instance.new("ImageLabel") JoinImage.Name = "JoinImage" JoinImage.Image = Assets.ButtonImage JoinImage.ImageTransparency = 0.5 JoinImage.AnchorPoint = Vector2.new(1, 0.5) JoinImage.BackgroundTransparency = 1 JoinImage.BorderSizePixel = 0 JoinImage.Position = UDim2.new(1, -3, 0.5, 0) JoinImage.Size = UDim2.fromOffset(15, 15) JoinImage.ZIndex = 10 JoinImage.Parent = Join JoinInteract.MouseEnter:Connect(function() Utility:QuickTween(JoinBG, { BackgroundTransparency = 0.93 }) Utility:QuickTween(JoinInteract, { TextTransparency = 0 }) Utility:QuickTween(JoinImage, { ImageTransparency = 0 }) end) JoinInteract.MouseLeave:Connect(function() Utility:QuickTween(JoinBG, { BackgroundTransparency = 1 }) Utility:QuickTween(JoinInteract, { TextTransparency = 0.5 }) Utility:QuickTween(JoinImage, { ImageTransparency = 0.5 }) end) JoinInteract.MouseButton1Down:Connect(function() Utility:QuickTween(JoinBG, { BackgroundTransparency = 0.86 }) end) JoinInteract.MouseButton1Up:Connect(function() Utility:QuickTween(JoinBG, { BackgroundTransparency = 0.93 }) end) local Handle = { Instance = Card, Image = Image, Title = TitleL, Description = DescL, JoinButton = Join, } Handle.Callback = opts.Callback or opts.Join or opts.OnJoin JoinInteract.MouseButton1Click:Connect(function() if type(Handle.Callback) == "function" then if self.WaveLibrary and self.WaveLibrary.SafeCallback then self.WaveLibrary:SafeCallback(Handle.Callback, Handle) else pcall(Handle.Callback, Handle) end end end) function Handle:SetTitle(t) TitleL.Text = tostring(t) return self end function Handle:SetDescription(d) DescL.Text = tostring(d) return self end function Handle:SetImage(id) Image.Image = tostring(id) return self end function Handle:OnJoin(fn) Handle.Callback = fn return self end local browser = self function Handle:Remove() for i, c in ipairs(browser.Cards) do if c == Handle then table.remove(browser.Cards, i) break end end pcall(function() Card:Destroy() end) browser:UpdateCount() end Handle.Destroy = Handle.Remove table.insert(self.Cards, Handle) self:UpdateCount() self:ThemeCard(Handle) return Handle end function ServerBrowser:ClearServers() for _, c in ipairs(self.Cards) do pcall(function() c.Instance:Destroy() end) end self.Cards = {} self:UpdateCount() end function ServerBrowser:SetOpen(state) state = state and true or false self.Open = state if state then -- mutually exclusive with the terminal: close it when we open pcall(function() if self.WindowFunctions.Terminal and self.WindowFunctions.Terminal.ToggleOutputScreen then self.WindowFunctions.Terminal:ToggleOutputScreen(false, self.WindowFunctions) end end) end self.Panel.Visible = true local goalPos = state and UDim2.new(1.2, 0, 0.5, 0) or UDim2.new(1, 0, 0.5, 0) -- Open glides in; close snaps out fast so nothing lingers. Every background / image / stroke fades -- (not just text) -- otherwise the card image placeholders stay on screen as dark squares. local dur = state and 0.28 or 0.12 local info = TweenInfo.new(dur, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local function fade(obj, props) Utility:PropertyTween(obj, info, props):Play() end fade(self.Panel, { Position = goalPos, BackgroundTransparency = state and 0 or 1 }) if self.Stroke then fade(self.Stroke, { Transparency = state and 0.82 or 1 }) end if self.Shadow then fade(self.Shadow, { ImageTransparency = state and (Attr(self.WindowFunctions, "ShadowTransparency", 0) or 0) or 1 }) end if self.Wallpaper then fade(self.Wallpaper, { ImageTransparency = state and (Attr(self.WindowFunctions, "WallpaperTransparency", 0.65) or 0.65) or 1 }) end if self.TopbarIcon then fade(self.TopbarIcon, { ImageTransparency = state and 0.15 or 0.7 }) end for _, d in ipairs(self.Panel:GetDescendants()) do if d == self.Wallpaper then -- kept subtle (tweened above); don't let the generic pass force it fully opaque elseif d.Name == "ButtonBG" then fade(d, { BackgroundTransparency = 1 }) -- the join hover-wash idles invisible elseif d.Name == "CardImage" then fade(d, { ImageTransparency = state and 0 or 1, BackgroundTransparency = state and 0.35 or 1 }) elseif d.Name == "ServerCard" then fade(d, { BackgroundTransparency = state and 0.965 or 1 }) elseif d:IsA("UIStroke") then if d ~= self.Stroke then fade(d, { Transparency = state and 0.9 or 1 }) end elseif d:IsA("Frame") and (d.Name == "ServerTitleBar" or d.Name == "ServerDivider") then -- the little bars (theme styling clobbers these, so re-assert on every toggle) fade(d, { BackgroundTransparency = state and 0.85 or 1 }) elseif d.Name == "CardJoinInteract" then fade(d, { TextTransparency = state and 0.5 or 1 }) -- main-UI button text idles dim elseif d.Name == "JoinImage" then fade(d, { ImageTransparency = state and 0.5 or 1 }) elseif d:IsA("TextLabel") or d:IsA("TextButton") then -- the title sits at 0.5 like the terminal's; everything else stays fully legible fade(d, { TextTransparency = state and (d.Name == "ServerTitle" and 0.5 or 0) or 1 }) elseif d:IsA("ImageLabel") or d:IsA("ImageButton") then fade(d, { ImageTransparency = state and 0 or 1 }) end end -- once closed, hide right after the quick fade so nothing peeks past the window's edge if not state then local panel = self.Panel task.delay(0.14, function() if not self.Open and panel then panel.Visible = false end end) end end -- theme the card to the current palette function ServerBrowser:ThemeCard(card) local WF = self.WindowFunctions local border = Attr(WF, "BorderColor", Color3.fromRGB(255, 255, 255)) local primary = Attr(WF, "TextPrimary", Color3.fromRGB(240, 240, 245)) local secondary = Attr(WF, "TextSecondary", Color3.fromRGB(165, 165, 180)) local hover = Attr(WF, "HoverColor", Color3.fromRGB(255, 255, 255)) pcall(function() card.Title.TextColor3 = primary card.Description.TextColor3 = secondary local bg = card.JoinButton:FindFirstChild("ButtonBG") if bg then bg.BackgroundColor3 = hover end local cs = card.Instance:FindFirstChild("CardStroke") if cs then cs.Color = border end end) end function ServerBrowser:Theme() local WF = self.WindowFunctions local bg = Attr(WF, "Background", Color3.fromRGB(16, 16, 22)) local primary = Attr(WF, "HeaderColor", Attr(WF, "TextPrimary", Color3.fromRGB(240, 240, 245))) local secondary = Attr(WF, "TextSecondary", Color3.fromRGB(170, 170, 185)) local border = Attr(WF, "BorderColor", Color3.fromRGB(255, 255, 255)) -- accent: try a few common names, else a sensible blue self.AccentColor = Attr(WF, "Accent", Attr(WF, "AccentColor", Attr(WF, "ElementBorderHighlight", Color3.fromRGB(86, 130, 255)))) pcall(function() self.Panel.BackgroundColor3 = bg if self.Stroke then self.Stroke.Color = border end self.TitleLabel.TextColor3 = primary self.EmptyLabel.TextColor3 = secondary self.RefreshButton.ImageColor3 = secondary self.Divider.BackgroundColor3 = border self.Divider.BackgroundTransparency = self.Open and 0.85 or 1 if self.TitleBar then self.TitleBar.BackgroundColor3 = border self.TitleBar.BackgroundTransparency = self.Open and 0.85 or 1 end if self.Wallpaper then self.Wallpaper.ImageColor3 = bg:Lerp(Color3.fromRGB(255, 255, 255), 0.2) end if self.TopbarIcon then self.TopbarIcon.ImageColor3 = primary end end) for _, c in ipairs(self.Cards) do self:ThemeCard(c) end end return ServerBrowser end R["Wave/UserInterface/Imports/Settings/InsertConfigSection.lua"] = function(...) return function(Requirements) local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local TabFunctions = Requirements.TabFunctions function TabFunctions:InsertConfigSection(Side) local ConfigSection = TabFunctions:Section({Side = Side}) ConfigSection:Header({Name = "Configuration Settings"}) local InputPath = nil local SelectedConfig = nil local AutoloadLabel = nil local function GetAutoloadPath() return WaveLibrary.Folder .. "/settings/" .. game.GameId .. "/autoload.txt" end local function ShowNotification(Description) WindowFunctions:Notify({ Title = "Interface", Description = Description }) end local function ShowErrorNotification(Message, ErrorDetails) ShowNotification(Message .. ", return error: " .. ErrorDetails) end local function RefreshConfigDropdown(ConfigSelection) ConfigSelection:ClearOptions() ConfigSelection:InsertOptions(WaveLibrary:RefreshConfigList()) end local function UpdateAutoloadLabel(ConfigName) AutoloadLabel:UpdateName("Autoload config: " .. ConfigName) end local function InitializeAutoloadLabel() local AutoloadPath = GetAutoloadPath() if isfile(AutoloadPath) then local ConfigName = readfile(AutoloadPath) UpdateAutoloadLabel(ConfigName) end end ConfigSection:Input({ Name = "Config Name", Placeholder = "Name", AcceptedCharacters = "All", Callback = function(Input) InputPath = Input end }) local ConfigSelection = ConfigSection:Dropdown({ Name = "Select Config", Multi = false, Required = false, Options = WaveLibrary:RefreshConfigList(), Callback = function(Value) SelectedConfig = Value end }) ConfigSection:Button({ Name = "Create Config", Callback = function() if not InputPath or string.gsub(InputPath, " ", "") == "" then ShowNotification("Config name cannot be empty.") return end local Success, ErrorMessage = WaveLibrary:SaveConfig(InputPath) if not Success then ShowErrorNotification("Unable to save config", ErrorMessage) return end ShowNotification(string.format("Created config %q", InputPath)) RefreshConfigDropdown(ConfigSelection) end }) ConfigSection:Button({ Name = "Load Config", Callback = function() local Success, ErrorMessage = WaveLibrary:LoadConfig(ConfigSelection.Value) if not Success then ShowErrorNotification("Unable to load config", ErrorMessage) return end ShowNotification(string.format("Loaded config %q", ConfigSelection.Value)) end }) ConfigSection:Button({ Name = "Overwrite Config", Callback = function() local Success, ErrorMessage = WaveLibrary:SaveConfig(ConfigSelection.Value) if not Success then ShowErrorNotification("Unable to overwrite config", ErrorMessage) return end ShowNotification(string.format("Overwrote config %q", ConfigSelection.Value)) end }) ConfigSection:Button({ Name = "Delete Config", Callback = function() local Success, ErrorMessage = WaveLibrary:DeleteConfig(ConfigSelection.Value) if not Success then ShowErrorNotification("Unable to delete config", ErrorMessage) return end ShowNotification(string.format("Deleted config %q", ConfigSelection.Value)) RefreshConfigDropdown(ConfigSelection) end }) ConfigSection:Button({ Name = "Delete All Configs", Callback = function() local Success, Message = WaveLibrary:DeleteAllConfigs() if not Success then ShowErrorNotification("Unable to delete all configs", Message) return end ShowNotification(Message) RefreshConfigDropdown(ConfigSelection) end }) ConfigSection:Button({ Name = "Refresh Config List", Callback = function() RefreshConfigDropdown(ConfigSelection) end }) ConfigSection:Button({ Name = "Set as autoload", Callback = function() local ConfigName = ConfigSelection.Value writefile(GetAutoloadPath(), ConfigName) UpdateAutoloadLabel(ConfigName) ShowNotification(string.format("Set %q as autoload", ConfigName)) end }) AutoloadLabel = ConfigSection:Label({Text = "Autoload config: None"}) InitializeAutoloadLabel() end end end R["Wave/UserInterface/Imports/Settings/InsertGeneralSettings.lua"] = function(...) return function(Requirements) local WindowFunctions = Requirements.WindowFunctions local WaveLibrary = Requirements.WaveLibrary local TabFunctions = Requirements.TabFunctions function TabFunctions:InsertGeneralSettings(Side) local SettingsSection = TabFunctions:Section({Side = Side}) local function GetKeybindPath() return WaveLibrary.Folder .. "/settings/startup/KeybindSaved.wave" end local function LoadSavedKeybind() local KeybindPath = GetKeybindPath() if isfile(KeybindPath) then local KeybindName = readfile(KeybindPath) return Enum.KeyCode[KeybindName] end return Enum.KeyCode.LeftAlt end local function ShowKeybindNotification(KeybindName) WindowFunctions:Notify({ Title = WindowFunctions.Settings.Title, Description = "Successfully Binded Keybind to - " .. KeybindName, Lifetime = 3 }) end local SavedKeybind = LoadSavedKeybind() SettingsSection:Header({Name = "General Settings"}) SettingsSection:Slider({ Name = "Interface Scale", Default = 1, Minimum = 0.25, Maximum = 1.5, DisplayMethod = "Tenths", Callback = function(Value) WindowFunctions:SetScale(Value) end }, "Slider") SettingsSection:Keybind({ Name = "Interface Keybind", Blacklist = false, Default = SavedKeybind, OnBinded = function(Bind) WindowFunctions:SetKeybind(Bind) ShowKeybindNotification(tostring(Bind.Name)) end }, "Keybind") end end end R["Wave/UserInterface/Imports/Settings/InsertThemeSettings.lua"] = function(...) return function(Requirements) local WindowFunctions = Requirements.WindowFunctions local WaveLibraryUI = Requirements.WaveLibraryUI local WaveLibrary = Requirements.WaveLibrary local TabFunctions = Requirements.TabFunctions local ThemeColorSchemes = Requirements.ThemeColorSchemes local ThemeTemplates = Requirements.ThemeTemplates local PerformanceModes = Requirements.PerformanceModes local ThemeUtility = Requirements.ThemeUtility local Themes = Requirements.Themes local Subtitle = Requirements.Subtitle local Exit = Requirements.Exit local Minimize = Requirements.Minimize local function GetThemeFilePath() return WaveLibrary.Folder .. "/settings/startup/ThemeSaved.wave" end local function GetThemeFolderPath() return WaveLibrary.Folder .. "/settings/themes" end local function GetBackupFolderPath() return GetThemeFolderPath() .. "/backups" end local function EnsureFolderExists(Path) if not isfolder(Path) then makefolder(Path) end end local function EnsureThemeFoldersExist() EnsureFolderExists(WaveLibrary.Folder .. "/settings") EnsureFolderExists(WaveLibrary.Folder .. "/settings/startup") EnsureFolderExists(GetThemeFolderPath()) end function WindowFunctions:GetThemeNames() local Names = {} for ThemeName, _ in pairs(Themes) do table.insert(Names, ThemeName) end return Names end function WindowFunctions:GetTheme(ThemeName) if ThemeName == "Glass" then ThemeName = "Cherry" -- the Glass theme mirrors Cherry end return Themes[ThemeName] or Themes.Default end function WindowFunctions:GetCurrentTheme() return CurrentTheme end function WindowFunctions:GetThemeAttribute(ThemeName, Attribute) return self:GetTheme(ThemeName)[Attribute] end function WindowFunctions:GetCurrentThemeAttribute(Attribute) return self:GetTheme(self:GetCurrentTheme())[Attribute] end function WindowFunctions:CreateCustomTheme(ThemeSettings) if not ThemeSettings then return false end for Key, Value in pairs(Themes.Default) do if ThemeSettings[Key] == nil then ThemeSettings[Key] = Value end end Themes.Custom = ThemeSettings if CurrentTheme == "Custom" then self:ApplyTheme("Custom") end return true end function WindowFunctions:ExportTheme(ThemeName) local Theme = Themes[ThemeName] or Themes.Custom return Services.HttpService:JSONEncode(Theme) end function WindowFunctions:ImportTheme(ThemeData, ThemeName) local Success, DecodedTheme = pcall(Services.HttpService.JSONDecode, Services.HttpService, ThemeData) if not Success then return false, "Invalid JSON format" end if not DecodedTheme.Background or not DecodedTheme.TextPrimary then return false, "Invalid theme structure" end ThemeName = ThemeName or "Custom" Themes[ThemeName] = DecodedTheme return true, "Theme imported successfully" end function WindowFunctions:GenerateColorScheme(SchemeType, BaseColor) if not ThemeColorSchemes[SchemeType] then return false end local NewColors = ThemeColorSchemes[SchemeType](BaseColor) for ColorName, ColorValue in pairs(NewColors) do if Themes.Custom[ColorName] then Themes.Custom[ColorName] = ColorValue end end return true end function WindowFunctions:ApplyTemplate(TemplateName) local Template = ThemeTemplates[TemplateName] if not Template then return false end for Property, Value in pairs(Template) do Themes.Custom[Property] = Value end return true end function WindowFunctions:SetPerformanceMode(ModeName) local Mode = PerformanceModes[ModeName] if not Mode then return false end for Setting, Value in pairs(Mode) do Themes.Custom[Setting] = Value end return true end function WindowFunctions:GenerateRandomTheme() local function RandomColor() return Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255)) end local function RandomBool() return math.random() > 0.5 end Themes.Custom.Background = RandomColor() Themes.Custom.Foreground = RandomColor() Themes.Custom.AccentPrimary = RandomColor() Themes.Custom.AccentSecondary = RandomColor() Themes.Custom.TextPrimary = RandomColor() Themes.Custom.CornerRadius = math.random(0, 25) Themes.Custom.ShadowSize = math.random(0, 50) Themes.Custom.GlowSize = math.random(0, 30) Themes.Custom.AnimationSpeed = math.random(10, 50) / 100 Themes.Custom.GradientEnabled = RandomBool() return true end function WindowFunctions:ApplyUICorners(Parent, CornerRadius) for _, Child in ipairs(Parent:GetDescendants()) do if Child:IsA("UICorner") and not Child:FindFirstAncestor("CustomElementPanel") and not Child:FindFirstAncestor("CheckBoxButton") then Child.CornerRadius = UDim.new(0, CornerRadius) end end end function WindowFunctions:ApplyUIStrokes(Parent, Theme) for _, Child in ipairs(Parent:GetDescendants()) do if Child:IsA("UIStroke") and Child.Name ~= "TabSwitcherUIStroke" and Child.Name ~= "MainFrameStroke" and Child.Name ~= "NameStroke" and not Child:FindFirstAncestor("CustomElementPanel") then Child.Color = Theme.BorderColor if not Child:FindFirstAncestor("CheckBoxButton") then Child.Transparency = Theme.StrokeTransparency end Child.Thickness = Theme.StrokeThickness end end end function WindowFunctions:ApplyScrollbarStyling(Parent, Theme) for _, Child in ipairs(Parent:GetDescendants()) do if Child:IsA("ScrollingFrame") and not Child:FindFirstAncestor("CustomElementPanel") then Child.ScrollBarImageColor3 = Theme.ScrollbarColor Child.ScrollBarImageTransparency = Theme.ScrollbarTransparency end end end function WindowFunctions:ApplyTextStyling(Parent, Theme) for _, Child in ipairs(Parent:GetDescendants()) do if Child:FindFirstAncestor("CustomElementPanel") then continue end if Child:GetAttribute("NoApplyTheme") then continue end if Child:IsA("TextLabel") or Child:IsA("TextButton") or Child:IsA("TextBox") then if Child.Name == "Title" or Child.Name == "ParagraphHeader" or Child.Name == "HeaderText" then Child.TextColor3 = Theme.HeaderColor Child.TextTransparency = Theme.HeaderTransparency elseif Child:IsA("TextBox") then Child.TextColor3 = Theme.InputFieldColor if Child.Name ~= "HeaderInputSearchBox" and Child.Name ~= "SearchBox" then Child.BackgroundTransparency = Theme.InputValueBackground or Theme.InputFieldTransparency end if Child.BackgroundTransparency < 1 then Child.BackgroundColor3 = Theme.Foreground end if Child.PlaceholderText and Child.PlaceholderText ~= "" then Child.PlaceholderColor3 = Theme.TextSecondary end else if not Child.Name:find("Result_") then Child.TextColor3 = Theme.TextPrimary end end end end end function WindowFunctions:ApplyImageStyling(Parent, Theme) local ExcludedNames = {"Wallpaper", "OutputWallpaper", "InformationWallpaper", "ColorWheel", "Toggle", "ToggleButton", "ToggleHead", "TogglerHead", "Banner", "Headshot", "LinkIcon", "InfoIcon"} for _, Child in ipairs(Parent:GetDescendants()) do if Child:FindFirstAncestor("CustomElementPanel") then continue end if Child:IsA("ImageLabel") or Child:IsA("ImageButton") then local IsExcluded = false for _, ExcludedName in ipairs(ExcludedNames) do if Child.Name == ExcludedName then IsExcluded = true break end end if not IsExcluded then Child.ImageColor3 = Theme.TextSecondary end end end end function WindowFunctions:ApplyComponentStyling(Parent, Theme) local ComponentStyles = { Toggle = Theme.ToggleColor, CheckBoxButton = Theme.AccentPrimary, TogglerHead = Theme.TogglerHeadColor, SliderBar = Theme.SliderColor, RangeBar = Theme.SliderColor, SliderHead = Theme.SliderHeadColor, Dropdown = Theme.DropdownColor, Option = Theme.DropdownColor, Button = Theme.ButtonColor, InformationGroupHighlight = Theme.AccentPrimary, TabSwitcherIndicator = Theme.AccentPrimary, Sidebar = function(Child) Child.BackgroundTransparency = Theme.SidebarTransparency Child.BackgroundColor3 = Theme.SidebarColor end, Surface = function(Child) Child.BackgroundColor3 = Theme.Surface Child.BackgroundTransparency = Theme.SurfaceTransparency end, Section = Theme.Foreground, Notification = Theme.NotificationColor, ExternalStatus = Theme.StatusColor, } for _, Child in ipairs(Parent:GetDescendants()) do if Child:IsA("GuiObject") and not Child:IsA("ScrollingFrame") and Child.BackgroundTransparency < 1 and not Child:FindFirstAncestor("CustomElementPanel") then local Style = ComponentStyles[Child.Name] if Style then if type(Style) == "function" then Style(Child) elseif Child:IsA("ImageButton") and (Child.Name == "Toggle" or Child.Name == "TogglerHead" or Child.Name == "SliderBar" or Child.Name == "SliderHead") and not Child:FindFirstAncestor("CustomElementPanel") then Child.ImageColor3 = Style else Child.BackgroundColor3 = Style end end end end end function WindowFunctions:ApplyGradients(Parent, Theme) if not Theme.GradientEnabled then return end for _, Child in ipairs(Parent:GetDescendants()) do if Child.Name == "Background" and Child:IsA("GuiObject") and not Child:FindFirstAncestor("CustomElementPanel") then local Gradient = Child:FindFirstChild("UIGradient") if not Gradient then Gradient = Instance.new("UIGradient") Gradient.Parent = Child end Gradient.Color = ColorSequence.new(Theme.GradientColors) Gradient.Rotation = Theme.GradientRotation end end end function WindowFunctions:ApplyWallpaper(Base, Theme) local function ApplyWallpaperToElement(Element) if Element then Element.ImageColor3 = Theme.Background:Lerp(Color3.fromRGB(255, 255, 255), 0.2) Element.ImageTransparency = Theme.WallpaperEnabled and Theme.WallpaperTransparency or 1 end end ApplyWallpaperToElement(Base:FindFirstChild("Wallpaper")) local Terminal = Base:FindFirstChild("Terminal") if Terminal then ApplyWallpaperToElement(Terminal:FindFirstChild("OutputWallpaper")) end end function WindowFunctions:ApplyShadows(Theme) if not Maid.Shadows then return end for _, Shadow in pairs(Maid.Shadows) do Shadow.ImageTransparency = Theme.ShadowTransparency end end function WindowFunctions:ApplyShadowGradients(Theme) if not Maid.Shadows then return end for _, Shadow in pairs(Maid.Shadows) do if Shadow and typeof(Theme.GlowColor) == "ColorSequence" then local ShadowGradient = Shadow:FindFirstChildWhichIsA("UIGradient") or Instance.new("UIGradient") ShadowGradient.Color = Theme.GlowColor ShadowGradient.Parent = Shadow Shadow.ImageColor3 = Color3.fromRGB(255, 255, 255) elseif Shadow then if Shadow:FindFirstChildWhichIsA("UIGradient") then Shadow:FindFirstChildWhichIsA("UIGradient"):Destroy() end Shadow.ImageColor3 = Theme.GlowColor end end end function WindowFunctions:ApplyPremiumGradients(Content, Theme) if not Content then return end for _, Element in pairs(Content:GetDescendants()) do if Element:IsA("UIGradient") and Element.Parent.Name ~= "Execute" and not Element:FindFirstAncestor("CustomElementPanel") then Element.Color = Theme.PremiumGradientColor end end end function WindowFunctions:ApplyControlButtons(Theme) if not Exit or not Minimize then return end Exit.BackgroundColor3 = Theme.ExitColor Minimize.BackgroundColor3 = Theme.MinimizeColor end function WindowFunctions:ApplyMenuGameCards(GameCardFolder, Theme) if not GameCardFolder then return end for _, Card in pairs(GameCardFolder:GetChildren()) do if not Card:IsA("GuiObject") then continue end local GlowFrame = Card:FindFirstChild("GlowFrame") if GlowFrame then GlowFrame.BackgroundColor3 = Theme.MinimizeColor end end end function WindowFunctions:AlreadyExistantTheme() local ThemeFile = GetThemeFilePath() if isfile(ThemeFile) then return readfile(ThemeFile) end return false end -- One-walk replacement for the chain of ApplyUICorners + ApplyUIStrokes + -- ApplyScrollbarStyling + ApplyTextStyling + ApplyImageStyling + -- ApplyComponentStyling + ApplyGradients on the same Base. Each of those -- did a fresh Base:GetDescendants() and a FindFirstAncestor per element; -- this folds them into one pass with a single ancestor check per element. -- The standalone Apply* methods are kept for callers that re-style a -- single subtree after the fact (e.g. dynamically added components). function WindowFunctions:ApplyDescendantStyling(Base, Theme) local CornerUDim = UDim.new(0, Theme.CornerRadius) local GradientEnabled = Theme.GradientEnabled local GradientColors = Theme.GradientColors local GradientRotation = Theme.GradientRotation local ExcludedImageNames = { Wallpaper = true, OutputWallpaper = true, InformationWallpaper = true, ColorWheel = true, Toggle = true, ToggleButton = true, ToggleHead = true, TogglerHead = true, Banner = true, Headshot = true, LinkIcon = true, InfoIcon = true, } local ExcludedStrokeNames = { TabSwitcherUIStroke = true, MainFrameStroke = true, NameStroke = true, } local ToggleImageNames = { Toggle = true, TogglerHead = true, SliderBar = true, SliderHead = true, } local ComponentStyles = { Toggle = Theme.ToggleColor, CheckBoxButton = Theme.AccentPrimary, TogglerHead = Theme.TogglerHeadColor, SliderBar = Theme.SliderColor, RangeBar = Theme.SliderColor, SliderHead = Theme.SliderHeadColor, Dropdown = Theme.DropdownColor, Option = Theme.DropdownColor, Button = Theme.ButtonColor, InformationGroupHighlight = Theme.AccentPrimary, TabSwitcherIndicator = Theme.AccentPrimary, Sidebar = function(c) c.BackgroundTransparency = Theme.SidebarTransparency c.BackgroundColor3 = Theme.SidebarColor end, Surface = function(c) c.BackgroundColor3 = Theme.Surface c.BackgroundTransparency = Theme.SurfaceTransparency end, Section = Theme.Foreground, Notification = Theme.NotificationColor, ExternalStatus = Theme.StatusColor, } for _, Child in ipairs(Base:GetDescendants()) do -- ONE ancestor check covers every handler below. if Child:FindFirstAncestor("CustomElementPanel") then continue end local cn = Child.ClassName local name = Child.Name if cn == "UICorner" then if not Child:FindFirstAncestor("CheckBoxButton") then Child.CornerRadius = CornerUDim end elseif cn == "UIStroke" then if not ExcludedStrokeNames[name] then Child.Color = Theme.BorderColor if not Child:FindFirstAncestor("CheckBoxButton") then Child.Transparency = Theme.StrokeTransparency end Child.Thickness = Theme.StrokeThickness end elseif cn == "ScrollingFrame" then Child.ScrollBarImageColor3 = Theme.ScrollbarColor Child.ScrollBarImageTransparency = Theme.ScrollbarTransparency -- ScrollingFrame is also a GuiObject but original ApplyComponentStyling skipped it. else -- Text styling local isTextClass = (cn == "TextLabel" or cn == "TextButton" or cn == "TextBox") if isTextClass and not Child:GetAttribute("NoApplyTheme") then if name == "Title" or name == "ParagraphHeader" or name == "HeaderText" then Child.TextColor3 = Theme.HeaderColor Child.TextTransparency = Theme.HeaderTransparency elseif cn == "TextBox" then Child.TextColor3 = Theme.InputFieldColor if name ~= "HeaderInputSearchBox" and name ~= "SearchBox" then Child.BackgroundTransparency = Theme.InputValueBackground or Theme.InputFieldTransparency end if Child.BackgroundTransparency < 1 then Child.BackgroundColor3 = Theme.Foreground end if Child.PlaceholderText and Child.PlaceholderText ~= "" then Child.PlaceholderColor3 = Theme.TextSecondary end else if not name:find("Result_") then Child.TextColor3 = Theme.TextPrimary end end end -- Image styling if cn == "ImageLabel" or cn == "ImageButton" then if not ExcludedImageNames[name] then Child.ImageColor3 = Theme.TextSecondary end end -- Component styling (any GuiObject with a name in our style table) if Child:IsA("GuiObject") and Child.BackgroundTransparency < 1 then local Style = ComponentStyles[name] if Style then if type(Style) == "function" then Style(Child) elseif cn == "ImageButton" and ToggleImageNames[name] then Child.ImageColor3 = Style else Child.BackgroundColor3 = Style end end end end -- Background gradients (separate filter, separate target — keep its own check) if GradientEnabled and name == "Background" and Child:IsA("GuiObject") then local Gradient = Child:FindFirstChild("UIGradient") if not Gradient then Gradient = Instance.new("UIGradient") Gradient.Parent = Child end Gradient.Color = ColorSequence.new(GradientColors) Gradient.Rotation = GradientRotation end end end function WindowFunctions:ApplyTheme(ThemeName) -- Route through GetTheme so aliases (e.g. Glass -> Cherry) apply to the -- actual rendered colours, not just GetCurrentThemeAttribute lookups. local Theme = self:GetTheme(ThemeName) CurrentTheme = ThemeName local Base = WaveLibraryUI:FindFirstChild("Base") if not Base then return false end Base.BackgroundColor3 = Theme.Background Base.BackgroundTransparency = Theme.BackgroundTransparency if not Subtitle:GetAttribute("CustomSubtitle") then local ApplySubtitle = "Build - " .. Utility:CheckHubStatus(WindowFunctions:GetCurrentThemeAttribute("AccentPrimary")) .. " | " .. GameLoading Subtitle.Text = ApplySubtitle end local BaseUIStroke = Base:FindFirstChild("BaseUIStroke") if BaseUIStroke then BaseUIStroke.Transparency = Theme.StrokeTransparency BaseUIStroke.Color = Theme.BorderColor BaseUIStroke.Thickness = Theme.StrokeThickness end local BaseUICorner = Base:FindFirstChild("BaseUICorner") if BaseUICorner then BaseUICorner.CornerRadius = UDim.new(0, Theme.CornerRadius) end -- Single walk replaces 6 prior Base passes (UICorners + UIStrokes + -- Scrollbar + Text + Image + Component + Gradient). Roughly 6x fewer -- GetDescendants allocations and per-element ancestor checks at boot. self:ApplyDescendantStyling(Base, Theme) self:ApplyControlButtons(Theme) self:ApplyWallpaper(Base, Theme) self:ApplyShadows(Theme) self:ApplyShadowGradients(Theme) -- Sub-section property pokes only — their descendants are children of -- Base, so the single walk above already covered them. (Removing the -- 4-per-section recursive Apply* calls = 16 redundant tree walks gone.) local Sidebar = Base:FindFirstChild("Sidebar") if Sidebar then Sidebar.BackgroundColor3 = Theme.SidebarColor Sidebar.BackgroundTransparency = Theme.SidebarTransparency end local Content = Base:FindFirstChild("Content") if Content then -- UIGradient walk on Content's subtree, separate filter from the -- background-gradient pass above, so keep it as its own call. self:ApplyPremiumGradients(Content, Theme) local ElementsScrolling = Content:FindFirstChild("Elements") and Content.Elements:FindFirstChild("ElementsScrolling") if ElementsScrolling and ElementsScrolling:FindFirstChild("Middle") then local GameCards = ElementsScrolling:FindFirstChild("Middle") self:ApplyMenuGameCards(GameCards, Theme) end end local BottomBar = Base:FindFirstChild("BottomBar") if BottomBar then BottomBar.BackgroundColor3 = Theme.Background BottomBar.BackgroundTransparency = Theme.BackgroundTransparency end local Terminal = Base:FindFirstChild("Terminal") if Terminal then Terminal.BackgroundColor3 = Theme.Background -- Keep the console solid (no see-through) while still following the -- theme colour; it sits over the un-covered screen edge. Terminal.BackgroundTransparency = 0 end -- Top-right status bar (sibling of Base in WaveLibraryUI). FPS dot keeps -- its own health colour; everything else follows the theme. local StatusBar = WaveLibraryUI:FindFirstChild("WaveStatusBar") if StatusBar then StatusBar.BackgroundColor3 = Theme.Background StatusBar.BackgroundTransparency = 0 local SBStroke = StatusBar:FindFirstChild("StatusStroke") if SBStroke then SBStroke.Color = Theme.BorderColor SBStroke.Transparency = math.clamp(Theme.StrokeTransparency or 0.85, 0.55, 0.92) end for _, Element in ipairs(StatusBar:GetDescendants()) do if Element.Name == "StatusValue" then Element.TextColor3 = Theme.HeaderColor or Theme.TextPrimary elseif Element.Name == "StatusMuted" then Element.TextColor3 = Theme.TextSecondary elseif Element.Name == "StatusDivider" then Element.BackgroundColor3 = Theme.BorderColor elseif Element.Name == "StatusChevron" then Element.ImageColor3 = Theme.TextSecondary elseif Element.Name == "StatusEyeIcon" then Element.ImageColor3 = Theme.TextSecondary end end end -- Server browser panel (slide-out, sibling of Base): re-skin to the active theme. if self.ServerBrowser and self.ServerBrowser.Theme then pcall(function() self.ServerBrowser:Theme() end) end -- Dialog subtrees are children of Base; the single-walk above already -- restyled their UICorners / Strokes / Text / Component children, so -- no separate Dialog walks are needed. if ThemeName ~= "Custom" then pcall(function() EnsureThemeFoldersExist() writefile(GetThemeFilePath(), ThemeName) end) end return true end function WindowFunctions:ApplyCurrentTheme() self:ApplyTheme(self:AlreadyExistantTheme() or self:GetCurrentTheme() or "Cobalt") end function WindowFunctions:SaveTheme(ThemeName) ThemeName = ThemeName or "Custom" pcall(function() EnsureThemeFoldersExist() local ThemeData = self:ExportTheme(ThemeName) writefile(GetThemeFolderPath() .. "/" .. ThemeName:lower() .. ".json", ThemeData) end) return true end function WindowFunctions:LoadTheme(ThemeName) ThemeName = ThemeName or "Custom" local Success = pcall(function() local FilePath = GetThemeFolderPath() .. "/" .. ThemeName:lower() .. ".json" if isfile(FilePath) then local ThemeData = readfile(FilePath) local ImportSuccess, Message = self:ImportTheme(ThemeData, ThemeName) if ImportSuccess then self:ApplyTheme(ThemeName) return true end end end) return Success end function WindowFunctions:BackupThemes() pcall(function() EnsureFolderExists(GetBackupFolderPath()) local BackupData = { Timestamp = os.time(), Themes = Themes, Version = "2.0" } local BackupJSON = Services.HttpService:JSONEncode(BackupData) local BackupName = "theme_backup_" .. os.date("%Y%m%d_%H%M%S") .. ".json" writefile(GetBackupFolderPath() .. "/" .. BackupName, BackupJSON) end) return true end function WindowFunctions:RestoreThemes() local Success = pcall(function() local BackupFolder = GetBackupFolderPath() if isfolder(BackupFolder) then local BackupFiles = listfiles(BackupFolder) if #BackupFiles > 0 then local LatestBackup = BackupFiles[#BackupFiles] local BackupData = readfile(LatestBackup) local DecodedBackup = Services.HttpService:JSONDecode(BackupData) Themes = DecodedBackup.Themes return true end end end) return Success end function WindowFunctions:LoadStartupTheme() pcall(function() local ThemeFile = GetThemeFilePath() if isfile(ThemeFile) then local SavedTheme = readfile(ThemeFile) for ThemeName, _ in pairs(Themes) do if ThemeName == SavedTheme then self:ApplyTheme(SavedTheme) break end end end end) end function TabFunctions:InsertThemeSettings(Side) local SettingsSection = TabFunctions:Section({Side = Side}) SettingsSection:Header({Name = "Theme Settings"}) local ThemeNames = WindowFunctions:GetThemeNames() local ThemeDropdown = SettingsSection:Dropdown({ Name = "Theme Preset", IgnoreConfig = true, Multi = false, Required = true, Search = true, Premium = true, Options = ThemeNames, Default = "Default", Callback = function(ThemeName) WindowFunctions:ApplyTheme(ThemeName) end }, "ThemeSelector") SettingsSection:Divider() SettingsSection:Header({Name = "Theme Customization"}) local function SwitchToCustomTheme() if WindowFunctions:GetCurrentTheme() ~= "Custom" then ThemeDropdown:UpdateSelection("Custom") end end local function CreateCategoryDropdown() return SettingsSection:Dropdown({ Name = "Customization Category", IgnoreConfig = true, Multi = false, Required = true, Options = {"Colors", "Layout", "Effects", "Typography", "Advanced", "ImportExport"}, Default = "Colors", Callback = function(Category) for Flag, Object in pairs(WindowFunctions:ReturnFeatures()) do if type(Flag) == "string" and Object.SetVisibility and Flag:find("Custom_") then local CategoryPrefix = "Custom_" .. Category Object:SetVisibility(Flag:find(CategoryPrefix) ~= nil) end end end }, "ThemeCustomizationTab") end local function CreateColorPicker(Name, ThemeKey, Flag) return SettingsSection:ColorPicker({ Name = Name, IgnoreConfig = true, Default = Themes.Default[ThemeKey], Callback = function(Color) SwitchToCustomTheme() Themes.Custom[ThemeKey] = Color WindowFunctions:ApplyTheme("Custom") end }, Flag):SetVisibility(false) end local function CreateLayoutSlider(Name, ThemeKey, Min, Max, DisplayMethod, Flag) return SettingsSection:Slider({ Name = Name, Default = Themes.Default[ThemeKey], IgnoreConfig = true, Minimum = Min, Maximum = Max, DisplayMethod = DisplayMethod, Callback = function(Value) SwitchToCustomTheme() Themes.Custom[ThemeKey] = Value WindowFunctions:ApplyTheme("Custom") end }, Flag):SetVisibility(false) end local function CreateEffectSlider(Name, ThemeKey, Min, Max, DisplayMethod, Flag) return CreateLayoutSlider(Name, ThemeKey, Min, Max, DisplayMethod, Flag) end local function CreateToggle(Name, ThemeKey, Flag, ApplyTheme) return SettingsSection:Toggle({ Name = Name, IgnoreConfig = true, IgnoreDefault = true, Default = Themes.Default[ThemeKey], Callback = function(Value) if ApplyTheme then SwitchToCustomTheme() end Themes.Custom[ThemeKey] = Value if ApplyTheme then WindowFunctions:ApplyTheme("Custom") end end }, Flag):SetVisibility(false) end local function CreateDropdown(Name, ThemeKey, Options, Flag) return SettingsSection:Dropdown({ Name = Name, Multi = false, Required = true, Options = Options, Default = Themes.Default[ThemeKey], IgnoreConfig = true, Callback = function(Value) SwitchToCustomTheme() Themes.Custom[ThemeKey] = Value WindowFunctions:ApplyTheme("Custom") end }, Flag):SetVisibility(false) end local CategoryTabs = CreateCategoryDropdown() local ColorPickers = { Background = CreateColorPicker("Background Color", "Background", "Custom_Colors_Background"), Foreground = CreateColorPicker("Foreground Color", "Foreground", "Custom_Colors_Foreground"), Surface = CreateColorPicker("Surface Color", "Surface", "Custom_Colors_Surface"), TextPrimary = CreateColorPicker("Primary Text Color", "TextPrimary", "Custom_Colors_TextPrimary"), TextSecondary = CreateColorPicker("Secondary Text Color", "TextSecondary", "Custom_Colors_TextSecondary"), TextDisabled = CreateColorPicker("Disabled Text Color", "TextDisabled", "Custom_Colors_TextDisabled"), AccentPrimary = CreateColorPicker("Primary Accent Color", "AccentPrimary", "Custom_Colors_AccentPrimary"), AccentSecondary = CreateColorPicker("Secondary Accent Color", "AccentSecondary", "Custom_Colors_AccentSecondary"), AccentTertiary = CreateColorPicker("Tertiary Accent Color", "AccentTertiary", "Custom_Colors_AccentTertiary"), SuccessColor = CreateColorPicker("Success Color", "SuccessColor", "Custom_Colors_SuccessColor"), WarningColor = CreateColorPicker("Warning Color", "WarningColor", "Custom_Colors_WarningColor"), ErrorColor = CreateColorPicker("Error Color", "ErrorColor", "Custom_Colors_ErrorColor"), InfoColor = CreateColorPicker("Info Color", "InfoColor", "Custom_Colors_InfoColor"), ShadowColor = CreateColorPicker("Shadow Color", "ShadowColor", "Custom_Colors_ShadowColor"), HeaderColor = CreateColorPicker("Header Color", "HeaderColor", "Custom_Colors_HeaderColor"), SidebarColor = CreateColorPicker("Sidebar Color", "SidebarColor", "Custom_Colors_SidebarColor"), BorderColor = CreateColorPicker("Border Color", "BorderColor", "Custom_Colors_BorderColor"), NotificationColor = CreateColorPicker("Notification Color", "NotificationColor", "Custom_Colors_NotificationColor"), StatusColor = CreateColorPicker("Status Color", "StatusColor", "Custom_Colors_StatusColor"), DialogColor = CreateColorPicker("Dialog Color", "DialogColor", "Custom_Colors_DialogColor"), ButtonColor = CreateColorPicker("Button Color", "ButtonColor", "Custom_Colors_ButtonColor"), ToggleColor = CreateColorPicker("Toggle Color", "ToggleColor", "Custom_Colors_ToggleColor"), TogglerHeadColor = CreateColorPicker("Toggle Head Color", "TogglerHeadColor", "Custom_Colors_TogglerHeadColor"), SliderColor = CreateColorPicker("Slider Color", "SliderColor", "Custom_Colors_SliderColor"), SliderHeadColor = CreateColorPicker("Slider Head Color", "SliderHeadColor", "Custom_Colors_SliderHeadColor"), DropdownColor = CreateColorPicker("Dropdown Color", "DropdownColor", "Custom_Colors_DropdownColor"), InputFieldColor = CreateColorPicker("Input Field Color", "InputFieldColor", "Custom_Colors_InputFieldColor"), ScrollbarColor = CreateColorPicker("Scrollbar Color", "ScrollbarColor", "Custom_Colors_ScrollbarColor"), SelectionColor = CreateColorPicker("Selection Color", "SelectionColor", "Custom_Colors_SelectionColor"), HoverColor = CreateColorPicker("Hover Color", "HoverColor", "Custom_Colors_HoverColor"), ActiveColor = CreateColorPicker("Active Color", "ActiveColor", "Custom_Colors_ActiveColor"), FocusColor = CreateColorPicker("Focus Color", "FocusColor", "Custom_Colors_FocusColor"), DisabledOverlay = CreateColorPicker("Disabled Overlay Color", "DisabledOverlay", "Custom_Colors_DisabledOverlay"), ParticleColor = CreateColorPicker("Particle Color", "ParticleColor", "Custom_Colors_ParticleColor"), MinimizeColor = CreateColorPicker("Minimize Button Color", "MinimizeColor", "Custom_Colors_MinimizeColor"), ExitColor = CreateColorPicker("Exit Button Color", "ExitColor", "Custom_Colors_ExitColor") } local LayoutSliders = { CornerRadius = CreateLayoutSlider("Corner Radius", "CornerRadius", 0, 25, "Round", "Custom_Layout_CornerRadius"), BackgroundTransparency = CreateLayoutSlider("Background Transparency", "BackgroundTransparency", 0, 1, "Hundredths", "Custom_Layout_BackgroundTransparency"), SurfaceTransparency = CreateLayoutSlider("Surface Transparency", "SurfaceTransparency", 0, 1, "Hundredths", "Custom_Layout_SurfaceTransparency"), StrokeTransparency = CreateLayoutSlider("Stroke Transparency", "StrokeTransparency", 0, 1, "Hundredths", "Custom_Layout_StrokeTransparency"), StrokeThickness = CreateLayoutSlider("Stroke Thickness", "StrokeThickness", 0, 5, "Round", "Custom_Layout_StrokeThickness"), HeaderTransparency = CreateLayoutSlider("Header Transparency", "HeaderTransparency", 0, 1, "Hundredths", "Custom_Layout_HeaderTransparency"), SidebarTransparency = CreateLayoutSlider("Sidebar Transparency", "SidebarTransparency", 0, 1, "Hundredths", "Custom_Layout_SidebarTransparency"), InputFieldTransparency = CreateLayoutSlider("Input Field Transparency", "InputFieldTransparency", 0, 1, "Hundredths", "Custom_Layout_InputFieldTransparency"), ScrollbarTransparency = CreateLayoutSlider("Scrollbar Transparency", "ScrollbarTransparency", 0, 1, "Hundredths", "Custom_Layout_ScrollbarTransparency"), HoverTransparency = CreateLayoutSlider("Hover Transparency", "HoverTransparency", 0, 1, "Hundredths", "Custom_Layout_HoverTransparency"), DisabledTransparency = CreateLayoutSlider("Disabled Transparency", "DisabledTransparency", 0, 1, "Hundredths", "Custom_Layout_DisabledTransparency"), WallpaperTransparency = CreateLayoutSlider("Wallpaper Transparency", "WallpaperTransparency", 0, 1, "Hundredths", "Custom_Layout_WallpaperTransparency") } local EffectsSliders = { ShadowTransparency = CreateEffectSlider("Shadow Transparency", "ShadowTransparency", 0, 1, "Hundredths", "Custom_Effects_ShadowTransparency"), GlowTransparency = CreateEffectSlider("Glow Transparency", "GlowTransparency", 0, 1, "Hundredths", "Custom_Effects_GlowTransparency"), ShadowSize = CreateEffectSlider("Shadow Size", "ShadowSize", 0, 50, "Round", "Custom_Effects_ShadowSize"), GlowSize = CreateEffectSlider("Glow Size", "GlowSize", 0, 50, "Round", "Custom_Effects_GlowSize"), AnimationSpeed = CreateEffectSlider("Animation Speed", "AnimationSpeed", 0.05, 1, "Hundredths", "Custom_Effects_AnimationSpeed"), BlurIntensity = CreateEffectSlider("Blur Intensity", "BlurIntensity", 0, 100, "Round", "Custom_Effects_BlurIntensity"), NoiseScale = CreateEffectSlider("Noise Scale", "NoiseScale", 10, 200, "Round", "Custom_Effects_NoiseScale"), NoiseTransparency = CreateEffectSlider("Noise Transparency", "NoiseTransparency", 0, 1, "Hundredths", "Custom_Effects_NoiseTransparency"), ParticleCount = CreateEffectSlider("Particle Count", "ParticleCount", 0, 100, "Round", "Custom_Effects_ParticleCount"), GradientRotation = CreateEffectSlider("Gradient Rotation", "GradientRotation", 0, 360, "Round", "Custom_Effects_GradientRotation") } local EffectsToggles = { WallpaperEnabled = CreateToggle("Enable Wallpaper", "WallpaperEnabled", "Custom_Effects_WallpaperEnabled", false), GradientEnabled = CreateToggle("Enable Gradient", "GradientEnabled", "Custom_Effects_GradientEnabled", true), NoiseEnabled = CreateToggle("Enable Noise", "NoiseEnabled", "Custom_Effects_NoiseEnabled", true), ParticlesEnabled = CreateToggle("Enable Particles", "ParticlesEnabled", "Custom_Effects_ParticlesEnabled", true) } local EffectsDropdowns = { WallpaperBlending = CreateDropdown("Wallpaper Blending", "WallpaperBlending", {"Normal", "Multiply", "Overlay", "Screen", "SoftLight", "HardLight"}, "Custom_Effects_WallpaperBlending") } local TypographySliders = { FontSize = CreateLayoutSlider("Font Size", "FontSize", 8, 24, "Round", "Custom_Typography_FontSize"), LineHeight = CreateLayoutSlider("Line Height", "LineHeight", 1, 3, "Tenths", "Custom_Typography_LineHeight"), LetterSpacing = CreateLayoutSlider("Letter Spacing", "LetterSpacing", -2, 5, "Tenths", "Custom_Typography_LetterSpacing") } local TypographyDropdowns = { FontFamily = CreateDropdown("Font Family", "FontFamily", {"Inter", "Arial", "Helvetica", "Roboto", "Open Sans", "Source Sans Pro", "Lato", "Nunito", "Poppins", "Ubuntu", "JetBrains Mono", "Roboto Mono", "Courier New", "Comic Sans MS", "Segoe UI"}, "Custom_Typography_FontFamily"), FontWeight = CreateDropdown("Font Weight", "FontWeight", {"Thin", "Light", "Regular", "Medium", "SemiBold", "Bold", "ExtraBold", "Black"}, "Custom_Typography_FontWeight") } local TypographyToggles = { AntiAliasing = CreateToggle("Anti-Aliasing", "AntiAliasing", "Custom_Typography_AntiAliasing", false), SubPixelRendering = CreateToggle("Sub-Pixel Rendering", "SubPixelRendering", "Custom_Typography_SubPixelRendering", false) } local AdvancedDropdowns = { ThemeVariant = CreateDropdown("Theme Variant", "ThemeVariant", {"Auto", "Light", "Dark"}, "Custom_Advanced_ThemeVariant"), AccentColorSource = CreateDropdown("Accent Color Source", "AccentColorSource", {"Manual", "System", "Auto"}, "Custom_Advanced_AccentColorSource") } local AdvancedToggles = { AutoDarkMode = CreateToggle("Auto Dark Mode", "AutoDarkMode", "Custom_Advanced_AutoDarkMode", true) } local UtilityButtons = { SaveTheme = SettingsSection:Button({ Name = "Save Custom Theme", Callback = function() if WindowFunctions:SaveTheme("Custom") then WindowFunctions:Notify({ Title = "Theme Settings", Description = "Custom theme saved successfully!", Lifetime = 3 }) end end }, "Custom_ImportExport_SaveTheme"):SetVisibility(false), ExportTheme = SettingsSection:Button({ Name = "Copy Theme to Clipboard", Callback = function() pcall(function() local ThemeData = WindowFunctions:ExportTheme(WindowFunctions:GetCurrentTheme()) setclipboard(ThemeData) WindowFunctions:Notify({ Title = "Theme Settings", Description = "Theme data copied to clipboard!", Lifetime = 3 }) end) end }, "Custom_ImportExport_ExportTheme"):SetVisibility(false), RandomTheme = SettingsSection:Button({ Name = "Generate Random Theme", Callback = function() SwitchToCustomTheme() WindowFunctions:GenerateRandomTheme() WindowFunctions:ApplyTheme("Custom") WindowFunctions:Notify({ Title = "Theme Settings", Description = "Random theme generated!", Lifetime = 3 }) end }, "Custom_ImportExport_RandomTheme"):SetVisibility(false), ResetTheme = SettingsSection:Button({ Name = "Reset to Default", Callback = function() Themes.Custom = table.clone(Themes.Default) WindowFunctions:ApplyTheme("Custom") WindowFunctions:Notify({ Title = "Theme Settings", Description = "Theme reset to default values!", Lifetime = 3 }) end }, "Custom_ImportExport_ResetTheme"):SetVisibility(false) } WindowFunctions:Initialize() WindowFunctions:ApplyCurrentTheme() end end end R["Wave/UserInterface/Imports/Terminal/TerminalModule.lua"] = function(...) local TerminalModule = {} TerminalModule.__index = TerminalModule local TerminalConstants = { DefaultWidth = 0.375, MinWidth = 250, MaxWidth = 1920, SnapRange = 20, ToggleDebounceTime = 0.3, FadeOutDelay = 0.2, MessageGroupingWindow = 2, LogTextSize = 13, HeaderTextSize = 18, IconSize = 15, ContextMenuWidth = 160, ContextMenuHeight = 90, ContextMenuItemHeight = 30, DividerThickness = 1, CornerRadius = 10, ContentTopOffset = 80, ScrollBarThickness = 1 } local TweenSettings = { DefaultTransparency = 0.9, HoverTransparency = 0.85, ActiveTransparency = 0, EasingStyle = Enum.EasingStyle.Sine } local OutputSettings = { ShowTimestamps = true, ShowIcons = true, SupportTables = true, AutoScroll = true, MaxTableDepth = 3, TruncateStrings = 50, MaxTableSize = 100, MaxLogEntries = 100 } function TerminalModule.new(Parent, TopbarFolder, WaveLibrary, WaveLibraryUI, WindowFunctions) local self = setmetatable({}, TerminalModule) self.ResizingOutput = false self.DefaultOutputWidth = 0 self.InitialMouseX = 0 self.InitialOutputWidth = 0 self.InitialLeftEdge = 0 self.TerminalOffset = 0 self.ToggleDebounce = false self.PrintLogs = true self.LastMessage = nil self.LastMessageCount = 0 self.LastOutputResult = nil self.LastMessageTime = 0 self:CreateUI(Parent, TopbarFolder, WaveLibrary, WaveLibraryUI) self:SetupEventHandlers(WindowFunctions) self:InitializeLogging(WindowFunctions) return self end function TerminalModule:CreateUI(Parent, TopbarFolder, WaveLibrary, WaveLibraryUI) self.Terminal = self:CreateTerminalFrame(Parent, WaveLibrary) self.ShadowContainer = self:CreateShadow(Parent, WaveLibrary, WaveLibraryUI) self.OutputTab = self:CreateOutputTab() self.OutputTabDivider = self:CreateDivider(UDim2.new(0.5, 0, 0, 42.5), UDim2.new(0, 48, 0, 1), 0.5) self.ClearLogsButton = self:CreateIconButton("ClearLogsIcon", Assets.IconClearLogs, UDim2.fromScale(0.935, 0.05)) self.StopLogsButton = self:CreateIconButton("StopLogsIcon", Assets.IconStopLogs, UDim2.fromScale(0.85, 0.05)) self.DividerInteract = self:CreateDividerInteract() self.OutputContent = self:CreateScrollingFrame() self.OutputWallpaper = self:CreateWallpaper() self.OutputUIScale = self:CreateUIScale() self.OutputUICorner = self:CreateUICorner() self.OutputUIStroke = self:CreateUIStroke() self.OutputDivider = self:CreateDivider(UDim2.new(0, 0, 0, 63), UDim2.new(1, 0, 0, 1), 0) self.OutputUIListLayout = self:CreateListLayout() self.OutputIcon = self:CreateTopbarIcon(TopbarFolder) self.OutputInteract = self:CreateTopbarInteract() self.DefaultOutputWidth = self.Terminal.AbsoluteSize.X end -- Docks an optimized model viewport inside the terminal panel. Returns the -- viewport handle (SetModel / Clear / GetCamera / SetAutoRotate / ...). function TerminalModule:CreateModelViewport(Options) Options = Options or {} if self.ModelViewport then if Options.Model or Options.Object then self.ModelViewport:SetModel(Options.Model or Options.Object) end self.ModelViewport:SetVisible(true) return self.ModelViewport end local BuildViewport = Utility:LoadFile("Wave/UserInterface/Imports/Terminal/ViewportEngine.lua") if not BuildViewport then return nil end local Holder = Instance.new("Frame") Holder.Name = "TerminalModelViewport" Holder.BackgroundTransparency = 1 if Options.Inline == false then -- overlay the whole content area Holder.Position = UDim2.new(0, 14, 0, 74) Holder.Size = UDim2.new(1, -28, 1, -88) Holder.ZIndex = 12 Holder.Parent = self.Terminal else -- flow inline with the logs, so log lines appear above and below it Holder.Size = UDim2.new(1, -40, 0, Options.Height or 190) Holder.LayoutOrder = Options.LayoutOrder or 0 Holder.Parent = self.OutputContent end self.ModelViewport = BuildViewport(Holder, Options) return self.ModelViewport end function TerminalModule:HideModelViewport() if self.ModelViewport then self.ModelViewport:SetVisible(false) end end function TerminalModule:CreateTerminalFrame(Parent, WaveLibrary) local Terminal = Instance.new("Frame") Terminal.Name = "Terminal" Terminal.AnchorPoint = Vector2.new(0.5, 0.5) Terminal.Size = UDim2.new(TerminalConstants.DefaultWidth, 0, 1, 0) Terminal.Position = Utility:SaveOpened() and UDim2.new(1.2, 0, 0.5, 0) or UDim2.new(1, 0, 0.5, 0) Terminal.BackgroundColor3 = Color3.fromRGB(15, 15, 15) -- Solid: the terminal sits over the screen edge and is mostly empty, so any -- see-through reads as washed-out. The theme sets the real colour later. Terminal.BackgroundTransparency = 0 Terminal.BorderColor3 = Color3.fromRGB(0, 0, 0) Terminal.BorderSizePixel = 0 Terminal.Parent = Parent Terminal.ZIndex = -5 Terminal.Visible = Utility:SaveOpened() return Terminal end function TerminalModule:CreateShadow(Base, WaveLibrary, WaveLibraryUI) -- Same glow as the main window (registered in Maid.Shadows, so its -- transparency follows the theme via WindowFunctions:ApplyShadows). return WaveLibrary:CreateShadow({ Object = WaveLibraryUI, ReplicateVisible = {Base, self.Terminal}, ObjectReplication = self.Terminal, Gradient = { Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.new(0, 0, 0.2)), ColorSequenceKeypoint.new(1, Color3.new(0.4, 0.6, 1)) }) } }) end function TerminalModule:CreateOutputTab() local OutputTab = Instance.new("TextLabel") OutputTab.Name = "OutputTab" OutputTab.FontFace = Font.new(Assets.InterFont, Enum.FontWeight.Bold) OutputTab.RichText = true OutputTab.Text = "Terminal" OutputTab.TextColor3 = Color3.fromRGB(255, 255, 255) OutputTab.TextSize = TerminalConstants.HeaderTextSize OutputTab.TextTransparency = 0.5 OutputTab.TextTruncate = Enum.TextTruncate.SplitWord OutputTab.TextXAlignment = Enum.TextXAlignment.Center OutputTab.TextYAlignment = Enum.TextYAlignment.Top OutputTab.AnchorPoint = Vector2.new(0, 0.5) OutputTab.AutomaticSize = Enum.AutomaticSize.Y OutputTab.BackgroundColor3 = Color3.fromRGB(255, 255, 255) OutputTab.BackgroundTransparency = 1 OutputTab.BorderColor3 = Color3.fromRGB(0, 0, 0) OutputTab.BorderSizePixel = 0 OutputTab.Position = UDim2.fromScale(0.05, 0.05) OutputTab.Size = UDim2.fromScale(0.9, 0) OutputTab.Parent = self.Terminal OutputTab.ZIndex = 155 return OutputTab end function TerminalModule:CreateDivider(Position, Size, AnchorPoint) local Divider = Instance.new("Frame") Divider.Name = "OutputDivider" Divider.AnchorPoint = Vector2.new(AnchorPoint, 0) Divider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Divider.BackgroundTransparency = TweenSettings.DefaultTransparency Divider.BorderColor3 = Color3.fromRGB(0, 0, 0) Divider.BorderSizePixel = 0 Divider.Position = Position Divider.Size = Size Divider.Parent = self.Terminal return Divider end function TerminalModule:CreateIconButton(Name, ImageAsset, Position) local Button = Instance.new("ImageButton") Button.Name = Name Button.ZIndex = 5 Button.Image = ImageAsset Button.ImageTransparency = 0.7 Button.AnchorPoint = Vector2.new(1, 0.5) Button.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Button.BackgroundTransparency = 1 Button.BorderColor3 = Color3.fromRGB(0, 0, 0) Button.BorderSizePixel = 0 Button.Position = Position Button.Size = UDim2.fromOffset(TerminalConstants.IconSize, TerminalConstants.IconSize) Button.Parent = self.Terminal Button.Visible = true return Button end function TerminalModule:CreateDividerInteract() local Interact = Instance.new("TextButton") Interact.Name = "DividerOutputInteract" Interact.AnchorPoint = Vector2.new(0.5, 0) Interact.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Interact.BackgroundTransparency = 1 Interact.BorderColor3 = Color3.fromRGB(0, 0, 0) Interact.BorderSizePixel = 0 Interact.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Interact.Position = UDim2.fromScale(1, 0) Interact.Size = UDim2.new(0, 5, 1, 0) Interact.Text = "" Interact.TextColor3 = Color3.fromRGB(0, 0, 0) Interact.TextSize = 14 Interact.Parent = self.Terminal return Interact end function TerminalModule:CreateScrollingFrame() local Content = Instance.new("ScrollingFrame") Content.Name = "Content" Content.AnchorPoint = Vector2.new(1, 0) Content.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Content.BackgroundTransparency = 1 Content.BorderColor3 = Color3.fromRGB(0, 0, 0) Content.BorderSizePixel = 0 Content.Position = UDim2.new(1, 0, 0, TerminalConstants.ContentTopOffset) Content.Size = UDim2.new(1, 0, 1, -TerminalConstants.ContentTopOffset) Content.CanvasSize = UDim2.new(0, 0, 0, 0) Content.ScrollBarThickness = TerminalConstants.ScrollBarThickness Content.ScrollBarImageTransparency = 0.5 Content.Parent = self.Terminal return Content end function TerminalModule:CreateWallpaper() local Wallpaper = Instance.new("ImageLabel") Wallpaper.Name = "OutputWallpaper" Wallpaper.Image = Assets.StyleOneWallpaper Wallpaper.Size = UDim2.new(1, 0, 1, 0) Wallpaper.Position = UDim2.new(0, 0, 0, 0) Wallpaper.BackgroundTransparency = 1 Wallpaper.ImageTransparency = 0.65 Wallpaper.ImageColor3 = Color3.fromRGB(32, 32, 32) Wallpaper.ScaleType = Enum.ScaleType.Crop Wallpaper.Parent = self.Terminal local Corner = Instance.new("UICorner") Corner.Name = "OutputWallpaperUICorner" Corner.CornerRadius = UDim.new(0, TerminalConstants.CornerRadius) Corner.Parent = Wallpaper return Wallpaper end function TerminalModule:CreateUIScale() local Scale = Instance.new("UIScale") Scale.Name = "OutputUIScale" Scale.Parent = self.Terminal return Scale end function TerminalModule:CreateUICorner() local Corner = Instance.new("UICorner") Corner.Name = "OutputUICorner" Corner.CornerRadius = UDim.new(0, TerminalConstants.CornerRadius) Corner.Parent = self.Terminal return Corner end function TerminalModule:CreateUIStroke() local Stroke = Instance.new("UIStroke") Stroke.Name = "OutputUIStroke" Stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border Stroke.Color = Color3.fromRGB(255, 255, 255) Stroke.Transparency = 0.7 Stroke.Parent = self.Terminal return Stroke end function TerminalModule:CreateListLayout() local Layout = Instance.new("UIListLayout") Layout.Name = "OutputUIListLayout" Layout.HorizontalAlignment = Enum.HorizontalAlignment.Center Layout.Padding = UDim.new(0, 10) Layout.SortOrder = Enum.SortOrder.LayoutOrder Layout.Parent = self.OutputContent Layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() self.OutputContent.CanvasSize = UDim2.new(0, 0, 0, Layout.AbsoluteContentSize.Y) end) return Layout end function TerminalModule:CreateTopbarIcon(TopbarFolder) local Icon = Instance.new("ImageButton") Icon.Name = "TerminalIcon" Icon.Image = Assets.IconOutputIcon Icon.ImageTransparency = 0.7 Icon.AnchorPoint = Vector2.new(1, 0.5) Icon.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Icon.BackgroundTransparency = 1 Icon.BorderColor3 = Color3.fromRGB(0, 0, 0) Icon.BorderSizePixel = 0 Icon.Position = UDim2.fromScale(1, 0.5) Icon.Size = UDim2.fromOffset(TerminalConstants.IconSize, TerminalConstants.IconSize) Icon.Parent = TopbarFolder Icon.Visible = true return Icon end function TerminalModule:CreateTopbarInteract() local Interact = Instance.new("TextButton") Interact.Name = "Interact" Interact.FontFace = Font.new("rbxasset://fonts/families/SourceSansPro.json") Interact.Text = "" Interact.TextColor3 = Color3.fromRGB(0, 0, 0) Interact.TextSize = 14 Interact.AnchorPoint = Vector2.new(0.5, 0.5) Interact.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Interact.BackgroundTransparency = 1 Interact.BorderColor3 = Color3.fromRGB(0, 0, 0) Interact.BorderSizePixel = 0 Interact.Position = UDim2.fromScale(0.5, 0.5) Interact.Size = UDim2.fromOffset(40, 40) Interact.Parent = self.OutputIcon return Interact end function TerminalModule:SetupEventHandlers(WindowFunctions) self:SetupResizeHandlers() self:SetupHoverEffects() self:SetupToggleHandler(WindowFunctions) self:SetupClearLogsHandler() self:SetupStopLogsHandler() end function TerminalModule:SetupResizeHandlers() self.DividerInteract.MouseButton1Down:Connect(function() self.ResizingOutput = true self.InitialMouseX = Services.UserInputService:GetMouseLocation().X self.InitialOutputWidth = self.Terminal.AbsoluteSize.X self.InitialLeftEdge = self.Terminal.AbsolutePosition.X end) Services.UserInputService.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then self.ResizingOutput = false end end) Services.UserInputService.InputChanged:Connect(function(Input) if self.ResizingOutput and Input.UserInputType == Enum.UserInputType.MouseMovement then self:HandleResize(Input) end end) end function TerminalModule:HandleResize(Input) local DeltaX = Services.UserInputService:GetMouseLocation().X - self.InitialMouseX local NewOutputWidth = self.InitialOutputWidth + DeltaX if math.abs(NewOutputWidth - self.DefaultOutputWidth) < TerminalConstants.SnapRange then NewOutputWidth = self.DefaultOutputWidth else NewOutputWidth = math.clamp(NewOutputWidth, TerminalConstants.MinWidth, TerminalConstants.MaxWidth) end self.Terminal.Size = UDim2.new(0, NewOutputWidth, self.Terminal.Size.Y.Scale, self.Terminal.Size.Y.Offset) local CurrentLeftEdge = self.Terminal.AbsolutePosition.X local LeftAdjustment = self.InitialLeftEdge - CurrentLeftEdge local NewXOffset = self.Terminal.Position.X.Offset + LeftAdjustment self.Terminal.Position = UDim2.new( self.Terminal.Position.X.Scale, NewXOffset, self.Terminal.Position.Y.Scale, self.Terminal.Position.Y.Offset ) self.TerminalOffset = NewXOffset self.OutputContent.Size = UDim2.new(0, NewOutputWidth, self.OutputContent.Size.Y.Scale, self.OutputContent.Size.Y.Offset) end function TerminalModule:SetupHoverEffects() self.OutputInteract.MouseEnter:Connect(function() Utility:QuickTween(self.OutputIcon, {ImageTransparency = TweenSettings.ActiveTransparency}) end) self.OutputInteract.MouseLeave:Connect(function() Utility:QuickTween(self.OutputIcon, {ImageTransparency = 0.7}) end) self.ClearLogsButton.MouseEnter:Connect(function() Utility:QuickTween(self.ClearLogsButton, {ImageTransparency = TweenSettings.ActiveTransparency}) end) self.ClearLogsButton.MouseLeave:Connect(function() Utility:QuickTween(self.ClearLogsButton, {ImageTransparency = 0.7}) end) self.StopLogsButton.MouseEnter:Connect(function() Utility:QuickTween(self.StopLogsButton, {ImageTransparency = TweenSettings.ActiveTransparency}) end) self.StopLogsButton.MouseLeave:Connect(function() Utility:QuickTween(self.StopLogsButton, {ImageTransparency = 0.7}) end) end function TerminalModule:SetupToggleHandler(WindowFunctions) self.OutputInteract.InputBegan:Connect(function(Input) if not self.ToggleDebounce and (Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch) then local NewState = not self.Terminal.Visible self:ToggleOutputScreen(NewState, WindowFunctions) self.ToggleDebounce = true Utility:SaveOpened(true, NewState) task.delay(TerminalConstants.ToggleDebounceTime, function() self.ToggleDebounce = false end) end end) end function TerminalModule:SetupClearLogsHandler() self.ClearLogsButton.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then self:ClearLogs() end end) end function TerminalModule:SetupStopLogsHandler() self.StopLogsButton.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then self.PrintLogs = not self.PrintLogs end end) end function TerminalModule:ToggleOutputScreen(Visible, WindowFunctions) -- mutually exclusive with the server browser: close it when the terminal opens if Visible and WindowFunctions and WindowFunctions.ServerBrowser and WindowFunctions.ServerBrowser.Open then pcall(function() WindowFunctions.ServerBrowser:SetOpen(false) end) end local TransparencyGoal = Visible and 0 or 1 local PositionGoal = Visible and UDim2.new(1.2, self.TerminalOffset, 0.5, 0) or UDim2.new(1, 0, 0.5, 0) self.Terminal.Visible = true for _, Child in ipairs(self.Terminal:GetChildren()) do if Child:IsA("GuiObject") and Child.Name:sub(1, 1) == "{" then Child.Visible = Visible end end Utility:QuickTween(self.Terminal, { Position = PositionGoal, BackgroundTransparency = WaveLibrary.AcrylicBlur and (Visible and WindowFunctions:GetCurrentThemeAttribute("BackgroundTransparency") or 1) or TransparencyGoal }) if self.OutputWallpaper then Utility:QuickTween(self.OutputWallpaper, { ImageTransparency = Visible and (WindowFunctions:GetCurrentThemeAttribute("WallpaperTransparency") or 0.65) or 1 }) end if self.ShadowContainer then Utility:QuickTween(self.ShadowContainer, { ImageTransparency = Visible and (WindowFunctions:GetCurrentThemeAttribute("ShadowTransparency") or 0) or 1 }) end if self.OutputUIStroke then Utility:QuickTween(self.OutputUIStroke, { Transparency = Visible and 0.6 or 1 }) end if self.OutputDivider then Utility:QuickTween(self.OutputDivider, { Transparency = Visible and TweenSettings.DefaultTransparency or 1 }) end for _, Descendant in ipairs(self.Terminal:GetDescendants()) do if Descendant:IsA("TextLabel") or Descendant:IsA("TextButton") or Descendant:IsA("TextBox") then if Descendant.Name:find("OutputResult_") then Utility:QuickTween(Descendant, {TextTransparency = Visible and 0 or 1}) else Utility:QuickTween(Descendant, {TextTransparency = Visible and 0.5 or 1}) end elseif (Descendant:IsA("ImageButton") or Descendant:IsA("ImageLabel")) and Descendant ~= self.OutputWallpaper then Utility:QuickTween(Descendant, {ImageTransparency = Visible and 0.7 or 1}) end local Stroke = Descendant:FindFirstChildOfClass("UIStroke") if Stroke then Utility:QuickTween(Stroke, {Transparency = TransparencyGoal}) end end if not Visible then task.delay(TerminalConstants.FadeOutDelay, function() self.Terminal.Visible = false end) end end function TerminalModule:ClearLogs() for _, Child in ipairs(self.OutputContent:GetChildren()) do if Child:IsA("TextButton") then Child:Destroy() end end self.LastMessage = nil self.LastMessageCount = 0 self.LastOutputResult = nil end function TerminalModule:InitializeLogging(WindowFunctions) Services.LogService.MessageOut:Connect(function(Message, MessageType) if not self.PrintLogs then return end self:HandleLogMessage(Message, MessageType, WindowFunctions) end) end function TerminalModule:HandleLogMessage(Message, MessageType, WindowFunctions) if not self.PrintLogs or not self.Terminal.Visible then return end local CurrentTime = os.time() local FormattedTime = OutputSettings.ShowTimestamps and os.date("[%H:%M:%S] ", CurrentTime) or "" local MessageId = tostring(math.random(10000000, 999999999)) local ProcessedMessage = self:ProcessMessage(Message) if ProcessedMessage == self.LastMessage and self.LastOutputResult and self.LastOutputResult.Parent and (CurrentTime - self.LastMessageTime) < TerminalConstants.MessageGroupingWindow then self:UpdateGroupedMessage(ProcessedMessage, MessageType, FormattedTime, WindowFunctions) return end self.LastMessageCount = 1 self.LastMessageTime = CurrentTime local MessageData = self:GetMessageData(MessageType, WindowFunctions) local OutputResult = self:CreateLogEntry(ProcessedMessage, MessageData, FormattedTime, MessageId) self.LastMessage = ProcessedMessage self.LastOutputResult = OutputResult end function TerminalModule:ProcessMessage(RawMessage) local MessageText = tostring(RawMessage) return MessageText end function TerminalModule:CreateFallbackTableString(RawMessage, MessageText) local FallbackSuccess, FallbackResult = pcall(function() local TableString = "{" local Count = 0 for Key, Value in pairs(RawMessage) do if Count > 0 then TableString = TableString .. ", " end TableString = TableString .. tostring(Key) .. " = " .. tostring(Value) Count = Count + 1 if Count >= 5 then TableString = TableString .. ", ..." break end end TableString = TableString .. "}" return "[Table] " .. TableString end) return FallbackSuccess and FallbackResult or "[Table] " .. MessageText end function TerminalModule:UpdateGroupedMessage(ProcessedMessage, MessageType, FormattedTime, WindowFunctions) self.LastMessageCount = self.LastMessageCount + 1 local DisplayText = ProcessedMessage .. " (x" .. self.LastMessageCount .. ")" local MessageData = self:GetMessageData(MessageType, WindowFunctions) self.LastOutputResult.Text = FormattedTime .. MessageData.Icon .. MessageData.Prefix .. ": " .. DisplayText self.LastOutputResult.TextColor3 = MessageData.Color end function TerminalModule:GetMessageData(MessageType, WindowFunctions) local UseWindowFunctions = WindowFunctions.GetCurrentThemeAttribute ~= nil local Data = { Prefix = "Info", Icon = OutputSettings.ShowIcons and "ℹ️ " or "", Color = UseWindowFunctions and WindowFunctions:GetCurrentThemeAttribute("InfoColor") or Color3.fromRGB(255, 255, 255) } if MessageType == Enum.MessageType.MessageError then Data.Prefix = "Error" Data.Icon = OutputSettings.ShowIcons and "🔴 " or "" Data.Color = UseWindowFunctions and WindowFunctions:GetCurrentThemeAttribute("ErrorColor") or Color3.fromRGB(255, 255, 255) elseif MessageType == Enum.MessageType.MessageWarning then Data.Prefix = "Warning" Data.Icon = OutputSettings.ShowIcons and "⚠️ " or "" Data.Color = UseWindowFunctions and WindowFunctions:GetCurrentThemeAttribute("WarningColor") or Color3.fromRGB(255, 255, 255) elseif MessageType == Enum.MessageType.MessageOutput then Data.Prefix = "Output" Data.Icon = OutputSettings.ShowIcons and "📤 " or "" Data.Color = UseWindowFunctions and WindowFunctions:GetCurrentThemeAttribute("SuccessColor") or Color3.fromRGB(255, 255, 255) end return Data end function TerminalModule:EnforceLogLimit() local LogEntries = {} for _, Child in ipairs(self.OutputContent:GetChildren()) do if Child:IsA("TextButton") and Child.Name:find("OutputResult_") then table.insert(LogEntries, Child) end end table.sort(LogEntries, function(A, B) return A.AbsolutePosition.Y < B.AbsolutePosition.Y end) local ExcessCount = #LogEntries - OutputSettings.MaxLogEntries if ExcessCount > 0 then for I = 1, ExcessCount do if LogEntries[I] then LogEntries[I]:Destroy() end end end end function TerminalModule:CreateLogEntry(ProcessedMessage, MessageData, FormattedTime, MessageId) local OutputResult = Instance.new("TextButton") OutputResult.Name = "OutputResult_" .. MessageId OutputResult.FontFace = Font.new(Assets.InterFont) OutputResult.RichText = true OutputResult.TextSize = TerminalConstants.LogTextSize OutputResult.TextTruncate = Enum.TextTruncate.SplitWord OutputResult.TextXAlignment = Enum.TextXAlignment.Left OutputResult.TextYAlignment = Enum.TextYAlignment.Top OutputResult.AnchorPoint = Vector2.new(0, 0.5) OutputResult.AutomaticSize = Enum.AutomaticSize.Y OutputResult.BackgroundColor3 = Color3.fromRGB(255, 255, 255) OutputResult.BackgroundTransparency = 1 OutputResult.BorderColor3 = Color3.fromRGB(0, 0, 0) OutputResult.BorderSizePixel = 0 OutputResult.Position = UDim2.fromScale(1.3e-07, 0.5) OutputResult.Size = UDim2.new(1, -40, 0, 0) OutputResult.Text = FormattedTime .. MessageData.Icon .. MessageData.Prefix .. ": " .. ProcessedMessage OutputResult.TextColor3 = MessageData.Color local ContextMenu = self:CreateContextMenu(ProcessedMessage, FormattedTime, MessageData.Prefix, OutputResult) ContextMenu.Parent = OutputResult self:SetupLogEntryInteractions(OutputResult, ProcessedMessage, MessageData.Color, ContextMenu) task.spawn(function() OutputResult.Parent = self.OutputContent -- Enforce log limit after adding new entry self:EnforceLogLimit() if OutputSettings.AutoScroll then task.wait() if self.OutputContent then self.OutputContent.CanvasPosition = Vector2.new(0, self.OutputContent.AbsoluteCanvasSize.Y) end end end) return OutputResult end function TerminalModule:CreateContextMenu(ProcessedMessage, FormattedTime, MessageLevel, OutputResult) local ContextMenu = Instance.new("Frame") ContextMenu.Name = "ContextMenu" ContextMenu.BackgroundTransparency = 1 ContextMenu.BorderSizePixel = 0 ContextMenu.Size = UDim2.fromOffset(TerminalConstants.ContextMenuWidth, TerminalConstants.ContextMenuHeight) ContextMenu.Visible = false ContextMenu.ZIndex = 1000 local MenuCorner = Instance.new("UICorner") MenuCorner.CornerRadius = UDim.new(0, 4) MenuCorner.Parent = ContextMenu local MenuList = Instance.new("UIListLayout") MenuList.SortOrder = Enum.SortOrder.LayoutOrder MenuList.Parent = ContextMenu self:CreateContextMenuItem(ContextMenu, "📋 Copy Message", function() self:SafeCopy(ProcessedMessage) end) self:CreateContextMenuItem(ContextMenu, "📋 Copy Full", function() local FullLog = FormattedTime .. "[" .. MessageLevel .. "] " .. ProcessedMessage self:SafeCopy(FullLog) end) self:CreateContextMenuItem(ContextMenu, "🗑️ Delete", function() if OutputResult and OutputResult.Parent then OutputResult:Destroy() end end) return ContextMenu end function TerminalModule:CreateContextMenuItem(Parent, Text, Callback) local Item = Instance.new("TextButton") Item.BackgroundTransparency = 1 Item.BorderSizePixel = 0 Item.Size = UDim2.new(1, 0, 0, TerminalConstants.ContextMenuItemHeight) Item.Text = Text Item.TextColor3 = Color3.fromRGB(255, 255, 255) Item.TextSize = 12 Item.FontFace = Font.new(Assets.InterFont) Item.Parent = Parent Item.MouseButton1Click:Connect(function() Parent.Visible = false task.spawn(Callback) end) return Item end function TerminalModule:SetupLogEntryInteractions(OutputResult, ProcessedMessage, MessageColor, ContextMenu) local OriginalBackgroundColor = OutputResult.BackgroundColor3 OutputResult.MouseEnter:Connect(function() Utility:QuickTween(OutputResult, { BackgroundColor3 = Color3.fromRGB(50, 50, 50), TextColor3 = Color3.fromRGB(92, 156, 255), BackgroundTransparency = TweenSettings.DefaultTransparency }) end) OutputResult.MouseLeave:Connect(function() Utility:QuickTween(OutputResult, { BackgroundColor3 = OriginalBackgroundColor, TextColor3 = MessageColor, BackgroundTransparency = 1 }) end) OutputResult.MouseButton1Click:Connect(function() self:SafeCopy(ProcessedMessage) end) OutputResult.MouseButton2Click:Connect(function() ContextMenu.Position = UDim2.fromOffset(10, 10) ContextMenu.Visible = not ContextMenu.Visible end) end function TerminalModule:SafeCopy(Text) local Success = pcall(function() if setclipboard then setclipboard(Text) return true end return false end) if Success then if Utility and Utility.Notify then Utility:Notify("Copied", "Message copied to clipboard!", 2) elseif WindowFunctions and WindowFunctions.Notify then WindowFunctions:Notify({ Title = "Copied", Description = "Message copied to clipboard!" }) else print("Copied to clipboard!") end else if Utility and Utility.Notify then Utility:Notify("Error", "Could not copy to clipboard", 2) else print("Could not copy to clipboard") end end end function TerminalModule:Destroy() if self.Terminal then self.Terminal:Destroy() end if self.OutputIcon then self.OutputIcon:Destroy() end if self.ShadowContainer then self.ShadowContainer:Destroy() end end return TerminalModule end R["Wave/UserInterface/Imports/Terminal/ViewportEngine.lua"] = function(...) -- Reusable, optimized model viewport. Builds a ViewportFrame inside `Parent` -- (filling it) and returns a handle with model + camera controls. Drag to orbit -- (mouse + touch), scroll to zoom, and it stops rendering when off-screen. return function(Parent, Options) Options = Options or {} local RunService = Services.RunService local UserInputService = Services.UserInputService local ViewportFrame = Instance.new("ViewportFrame") ViewportFrame.Name = "ViewportEngine" ViewportFrame.Size = UDim2.fromScale(1, 1) ViewportFrame.BackgroundColor3 = Options.Background or Color3.fromRGB(16, 16, 22) ViewportFrame.BackgroundTransparency = Options.BackgroundTransparency or 0.1 ViewportFrame.BorderSizePixel = 0 ViewportFrame.Ambient = Color3.fromRGB(170, 170, 180) ViewportFrame.LightColor = Color3.fromRGB(255, 255, 255) ViewportFrame.LightDirection = Vector3.new(-0.6, -1, -0.4) ViewportFrame.ZIndex = (Parent.ZIndex or 1) + 1 -- Active so the orbit drag is sunk here and doesn't reach the window drag. ViewportFrame.Active = true ViewportFrame:SetAttribute("NoApplyTheme", true) ViewportFrame.Parent = Parent local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, Options.CornerRadius or 8) Corner.Parent = ViewportFrame local Stroke = Instance.new("UIStroke") Stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border Stroke.Color = Options.StrokeColor or Color3.fromRGB(120, 120, 130) Stroke.Transparency = Options.StrokeTransparency or 0.7 Stroke.Parent = ViewportFrame if Options.Hint ~= false then local Hint = Instance.new("TextLabel") Hint.Name = "Hint" Hint.AnchorPoint = Vector2.new(1, 1) Hint.Position = UDim2.new(1, -8, 1, -6) Hint.Size = UDim2.fromOffset(120, 14) Hint.BackgroundTransparency = 1 Hint.Text = "drag to rotate" Hint.FontFace = Font.new(Assets.InterFont) Hint.TextColor3 = Color3.fromRGB(255, 255, 255) Hint.TextTransparency = 0.55 Hint.TextSize = 11 Hint.TextXAlignment = Enum.TextXAlignment.Right Hint.ZIndex = ViewportFrame.ZIndex + 2 Hint.Parent = ViewportFrame end local Camera = Instance.new("Camera") Camera.FieldOfView = 50 Camera.Parent = ViewportFrame ViewportFrame.CurrentCamera = Camera local Connections = {} local CurrentModel local Target = Vector3.zero local Azimuth, Elevation, Distance = math.rad(35), math.rad(12), 12 local BaseDistance = Distance local MinDistance, MaxDistance = 4, 40 local Dragging, LastPosition = false, nil local function UpdateCamera() local x = math.cos(Elevation) * math.sin(Azimuth) local y = math.sin(Elevation) local z = math.cos(Elevation) * math.cos(Azimuth) Camera.CFrame = CFrame.lookAt(Target + Vector3.new(x, y, z) * Distance, Target) end local Handle = { Frame = ViewportFrame, Camera = Camera } function Handle:SetModel(Model) if CurrentModel then CurrentModel:Destroy() CurrentModel = nil end if not Model then return self end local ok, clone = pcall(function() local restore = {} if not Model.Archivable then Model.Archivable = true restore[#restore + 1] = Model end for _, descendant in ipairs(Model:GetDescendants()) do if not descendant.Archivable then descendant.Archivable = true restore[#restore + 1] = descendant end end local result = Model:Clone() for _, instance in ipairs(restore) do instance.Archivable = false end return result end) if not ok or not clone then return self end for _, descendant in ipairs(clone:GetDescendants()) do if descendant:IsA("BasePart") then descendant.Anchored = true descendant.CanCollide = false descendant.CanQuery = false descendant.CanTouch = false elseif descendant:IsA("LuaSourceContainer") or descendant:IsA("ParticleEmitter") or descendant:IsA("Sound") then descendant:Destroy() end end clone.Parent = ViewportFrame CurrentModel = clone local center, size if clone:IsA("Model") then local okBox, cf, sz = pcall(function() return clone:GetBoundingBox() end) if okBox then center, size = cf.Position, sz end elseif clone:IsA("BasePart") then center, size = clone.Position, clone.Size end center = center or Vector3.zero size = size or Vector3.new(4, 4, 4) local offset = CFrame.new(-center) if clone:IsA("Model") then for _, part in ipairs(clone:GetDescendants()) do if part:IsA("BasePart") then part.CFrame = offset * part.CFrame end end elseif clone:IsA("BasePart") then clone.CFrame = offset * clone.CFrame end Target = Vector3.zero Distance = math.clamp(size.Magnitude * 1.4, 5, 1000) BaseDistance = Distance MinDistance = math.max(Distance * 0.35, 2) MaxDistance = Distance * 2.75 Azimuth, Elevation = math.rad(35), math.rad(12) UpdateCamera() return self end function Handle:Clear() return self:SetModel(nil) end function Handle:GetModel() return CurrentModel end function Handle:GetCamera() return Camera end function Handle:SetCamera(NewCamera) if typeof(NewCamera) == "Instance" and NewCamera:IsA("Camera") then NewCamera.Parent = ViewportFrame ViewportFrame.CurrentCamera = NewCamera Camera = NewCamera elseif typeof(NewCamera) == "CFrame" then Camera.CFrame = NewCamera end return self end function Handle:SetAutoRotate(State) Options.AutoRotate = State and true or false return self end function Handle:ResetView() Azimuth, Elevation, Distance = math.rad(35), math.rad(12), BaseDistance UpdateCamera() return self end function Handle:SetVisible(State) Parent.Visible = State return self end function Handle:Destroy() for _, connection in pairs(Connections) do if typeof(connection) == "RBXScriptConnection" then connection:Disconnect() end end table.clear(Connections) if CurrentModel then CurrentModel:Destroy() CurrentModel = nil end if Parent then Parent:Destroy() end end Connections.Began = ViewportFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Dragging = true LastPosition = input.Position end end) Connections.Changed = UserInputService.InputChanged:Connect(function(input) if Dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) and LastPosition then local delta = input.Position - LastPosition LastPosition = input.Position Azimuth = Azimuth - delta.X * 0.0075 Elevation = math.clamp(Elevation + delta.Y * 0.0075, -1.45, 1.45) UpdateCamera() elseif input.UserInputType == Enum.UserInputType.MouseWheel then local position, vsize = ViewportFrame.AbsolutePosition, ViewportFrame.AbsoluteSize local mouse = UserInputService:GetMouseLocation() - Vector2.new(0, 36) if mouse.X >= position.X and mouse.X <= position.X + vsize.X and mouse.Y >= position.Y and mouse.Y <= position.Y + vsize.Y then Distance = math.clamp(Distance - input.Position.Z * (Distance * 0.12), MinDistance, MaxDistance) UpdateCamera() end end end) Connections.Ended = UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Dragging = false end end) local function IsOnScreen() if not ViewportFrame.Parent or not Parent.Visible then return false end local position, vsize = ViewportFrame.AbsolutePosition, ViewportFrame.AbsoluteSize if vsize.X <= 1 or vsize.Y <= 1 then return false end local camera = workspace.CurrentCamera if camera then local screen = camera.ViewportSize if position.X + vsize.X < 0 or position.X > screen.X or position.Y + vsize.Y < 0 or position.Y > screen.Y then return false end end return true end local Accumulator = 0 Connections.Render = RunService.Heartbeat:Connect(function(dt) Accumulator = Accumulator + dt if Accumulator >= 0.15 then Accumulator = 0 local visible = IsOnScreen() if ViewportFrame.Visible ~= visible then ViewportFrame.Visible = visible end end if ViewportFrame.Visible and Options.AutoRotate and not Dragging then Azimuth = Azimuth + dt * (Options.RotateSpeed or 0.5) UpdateCamera() end end) UpdateCamera() if Options.Model or Options.Object then Handle:SetModel(Options.Model or Options.Object) end return Handle end end R["Wave/UserInterface/Imports/Themes/PerformanceModes.lua"] = function(...) return { Quality = { BlurIntensity = 100, ShadowSize = 25, AnimationSpeed = 0.3, ParticlesEnabled = true, MotionBlurEnabled = true }, Balanced = { BlurIntensity = 50, ShadowSize = 15, AnimationSpeed = 0.2, ParticlesEnabled = false, MotionBlurEnabled = false }, Performance = { BlurIntensity = 20, ShadowSize = 5, AnimationSpeed = 0.1, ParticlesEnabled = false, MotionBlurEnabled = false }, Potato = { BlurIntensity = 0, ShadowSize = 0, AnimationSpeed = 0.05, ParticlesEnabled = false, MotionBlurEnabled = false } } end R["Wave/UserInterface/Imports/Themes/ThemeColorSchemes.lua"] = function(...) return { Monochromatic = function(BaseColor) local H, S, V = BaseColor:ToHSV() return { Background = Color3.fromHSV(H, S * 0.3, V * 0.2), Foreground = Color3.fromHSV(H, S * 0.4, V * 0.3), Surface = Color3.fromHSV(H, S * 0.5, V * 0.4), AccentPrimary = Color3.fromHSV(H, S * 0.8, V * 0.9), AccentSecondary = Color3.fromHSV(H, S * 0.6, V * 0.7) } end, Complementary = function(BaseColor) local H, S, V = BaseColor:ToHSV() local CompH = (H + 0.5) % 1 return { Background = Color3.fromHSV(H, S * 0.3, V * 0.2), Foreground = Color3.fromHSV(H, S * 0.4, V * 0.3), Surface = Color3.fromHSV(H, S * 0.5, V * 0.4), AccentPrimary = Color3.fromHSV(CompH, S * 0.8, V * 0.9), AccentSecondary = Color3.fromHSV(CompH, S * 0.6, V * 0.7) } end, Triadic = function(BaseColor) local H, S, V = BaseColor:ToHSV() local H2 = (H + 0.333) % 1 local H3 = (H + 0.667) % 1 return { Background = Color3.fromHSV(H, S * 0.3, V * 0.2), Foreground = Color3.fromHSV(H2, S * 0.4, V * 0.3), Surface = Color3.fromHSV(H3, S * 0.5, V * 0.4), AccentPrimary = Color3.fromHSV(H2, S * 0.8, V * 0.9), AccentSecondary = Color3.fromHSV(H3, S * 0.6, V * 0.7) } end } end R["Wave/UserInterface/Imports/Themes/ThemeTemplates.lua"] = function(...) return { Gaming = { Background = Color3.fromRGB(10, 10, 15), AccentPrimary = Color3.fromRGB(0, 255, 127), AccentSecondary = Color3.fromRGB(255, 20, 147), CornerRadius = 0, GlowSize = 25, AnimationSpeed = 0.15 }, Professional = { Background = Color3.fromRGB(248, 249, 250), TextPrimary = Color3.fromRGB(33, 37, 41), AccentPrimary = Color3.fromRGB(0, 123, 255), CornerRadius = 4, ShadowSize = 5, AnimationSpeed = 0.3 }, Creative = { Background = Color3.fromRGB(45, 55, 72), AccentPrimary = Color3.fromRGB(167, 67, 238), AccentSecondary = Color3.fromRGB(245, 101, 101), GradientEnabled = true, CornerRadius = 20 }, Minimal = { Background = Color3.fromRGB(255, 255, 255), TextPrimary = Color3.fromRGB(0, 0, 0), AccentPrimary = Color3.fromRGB(0, 0, 0), CornerRadius = 0, ShadowSize = 0, StrokeThickness = 1 }, Vibrant = { Background = Color3.fromRGB(30, 30, 30), AccentPrimary = Color3.fromRGB(255, 69, 0), AccentSecondary = Color3.fromRGB(255, 215, 0), AccentTertiary = Color3.fromRGB(50, 205, 50), GlowSize = 30, AnimationSpeed = 0.1 } } end R["Wave/UserInterface/Imports/Themes/ThemeUtility.lua"] = function(...) local ThemeUtility = {} ThemeUtility.__index = ThemeUtility local ThemeMetaUtility = setmetatable({ _initialized = false, }, { __index = function(self, key) return ThemeUtility[key] end, __newindex = function(self, key, value) rawset(self, key, value) end, __call = function(self) return setmetatable({}, self) end }) function ThemeUtility:AnimateIn(Parent, DelayTime, Duration) task.delay(DelayTime, function() for _, Child in ipairs(Parent:GetChildren()) do if Child:IsA("GuiObject") then if Child.Name == "Terminal" then continue end local Properties = {} if Child:IsA("TextLabel") or Child:IsA("TextButton") or Child:IsA("TextBox") then local OriginalTextTransparency = Child:GetAttribute("OriginalTextTransparency") local OriginalBackgroundTransparency = Child:GetAttribute("OriginalBackgroundTransparency") if OriginalTextTransparency ~= nil then Properties.TextTransparency = OriginalTextTransparency end if OriginalBackgroundTransparency ~= nil then Properties.BackgroundTransparency = OriginalBackgroundTransparency end elseif Child:IsA("ImageLabel") or Child:IsA("ImageButton") then local OriginalImageTransparency = Child:GetAttribute("OriginalImageTransparency") local OriginalBackgroundTransparency = Child:GetAttribute("OriginalBackgroundTransparency") if OriginalImageTransparency ~= nil then Properties.ImageTransparency = OriginalImageTransparency end if OriginalBackgroundTransparency ~= nil then Properties.BackgroundTransparency = OriginalBackgroundTransparency end else local OriginalBackgroundTransparency = Child:GetAttribute("OriginalBackgroundTransparency") if OriginalBackgroundTransparency ~= nil then Properties.BackgroundTransparency = OriginalBackgroundTransparency end end if next(Properties) ~= nil then Utility:PropertyTween(Child, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), Properties):Play() end local Stroke = Child:FindFirstChildOfClass("UIStroke") if Stroke then local OriginalTransparency = Stroke:GetAttribute("OriginalTransparency") if OriginalTransparency ~= nil then Utility:PropertyTween(Stroke, TweenInfo.new(Duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = OriginalTransparency }):Play() end end self:AnimateIn(Child, 0.02, Duration) end end end) end function ThemeUtility:MakeInvisible(Parent) for _, Child in ipairs(Parent:GetChildren()) do if Child:IsA("GuiObject") then if Child:IsA("TextLabel") or Child:IsA("TextButton") or Child:IsA("TextBox") then Child:SetAttribute("OriginalTextTransparency", Child.TextTransparency) Child:SetAttribute("OriginalBackgroundTransparency", Child.BackgroundTransparency) Child.TextTransparency = 1 Child.BackgroundTransparency = 1 elseif Child:IsA("ImageLabel") or Child:IsA("ImageButton") then Child:SetAttribute("OriginalImageTransparency", Child.ImageTransparency) Child:SetAttribute("OriginalBackgroundTransparency", Child.BackgroundTransparency) Child.ImageTransparency = 1 Child.BackgroundTransparency = 1 else Child:SetAttribute("OriginalBackgroundTransparency", Child.BackgroundTransparency) Child.BackgroundTransparency = 1 end local Stroke = Child:FindFirstChildOfClass("UIStroke") if Stroke then Stroke:SetAttribute("OriginalTransparency", Stroke.Transparency) Stroke.Transparency = 1 end self:MakeInvisible(Child) end end end function ThemeUtility:RetrieveThemes(WaveLibrarySettings) return { Default = { Name = "Default", Background = Color3.fromRGB(15, 23, 35), Foreground = Color3.fromRGB(220, 230, 245), Surface = Color3.fromRGB(25, 35, 50), TextPrimary = Color3.fromRGB(220, 230, 245), TextSecondary = Color3.fromRGB(160, 180, 210), TextDisabled = Color3.fromRGB(100, 120, 150), AccentPrimary = Color3.fromRGB(45, 212, 240), AccentSecondary = Color3.fromRGB(80, 150, 255), AccentTertiary = Color3.fromRGB(100, 200, 255), SuccessColor = Color3.fromRGB(46, 160, 67), WarningColor = Color3.fromRGB(255, 193, 7), ErrorColor = Color3.fromRGB(220, 53, 69), InfoColor = Color3.fromRGB(45, 212, 240), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(45, 212, 240)), ColorSequenceKeypoint.new(1, Color3.fromRGB(80, 150, 255)) }), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(80, 150, 255)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(45, 212, 240)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(100, 200, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(220, 230, 245)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.05 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.85, ShadowTransparency = 0.2, GlowTransparency = 0.75, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 25, GlowSize = 18, AnimationSpeed = 0.22, BlurIntensity = 55, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.7, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(45, 212, 240), HeaderTransparency = 0.15, SidebarColor = Color3.fromRGB(10, 15, 25), SidebarTransparency = 0.6, BorderColor = Color3.fromRGB(45, 212, 240), NotificationColor = Color3.fromRGB(20, 30, 45), StatusColor = Color3.fromRGB(20, 30, 45), DialogColor = Color3.fromRGB(25, 35, 50), ButtonColor = Color3.fromRGB(30, 45, 65), ToggleColor = Color3.fromRGB(50, 70, 95), TogglerHeadColor = Color3.fromRGB(45, 212, 240), SliderColor = Color3.fromRGB(50, 70, 95), SliderHeadColor = Color3.fromRGB(45, 212, 240), DropdownColor = Color3.fromRGB(28, 40, 58), InputFieldColor = Color3.fromRGB(220, 230, 245), InputValueBackground = 0.95, InputFieldTransparency = 0.35, ScrollbarColor = Color3.fromRGB(45, 212, 240), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(45, 212, 240), HoverColor = Color3.fromRGB(80, 150, 255), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(80, 150, 255), FocusColor = Color3.fromRGB(100, 200, 255), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 135, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(15, 23, 35)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(20, 30, 45)), ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 38, 55)) }, NoiseEnabled = true, NoiseScale = 100, NoiseTransparency = 0.96, ParticlesEnabled = false, ParticleCount = 15, ParticleColor = Color3.fromRGB(45, 212, 240), MotionBlurEnabled = false, MotionBlurIntensity = 0.3, FontFamily = "Inter", FontWeight = "Medium", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(45, 212, 240), MinimizeColor = Color3.fromRGB(45, 212, 240), ExitColor = Color3.fromRGB(80, 150, 255), Version = "2.0" }, Cyber = { Name = "Cyber", Background = Color3.fromRGB(5, 8, 15), Foreground = Color3.fromRGB(0, 255, 200), Surface = Color3.fromRGB(15, 20, 30), TextPrimary = Color3.fromRGB(0, 255, 200), TextSecondary = Color3.fromRGB(100, 255, 220), TextDisabled = Color3.fromRGB(50, 150, 130), AccentPrimary = Color3.fromRGB(255, 0, 150), AccentSecondary = Color3.fromRGB(0, 200, 255), AccentTertiary = Color3.fromRGB(150, 255, 0), SuccessColor = Color3.fromRGB(0, 255, 100), WarningColor = Color3.fromRGB(255, 200, 0), ErrorColor = Color3.fromRGB(255, 50, 100), InfoColor = Color3.fromRGB(0, 150, 255), ShadowColor = Color3.fromRGB(255, 0, 150), GlowColor = Color3.fromRGB(0, 255, 200), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 150)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(0, 255, 200)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(150, 255, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 200, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.6, ShadowTransparency = 0.3, GlowTransparency = 0.5, CornerRadius = 4, StrokeThickness = 2, ShadowSize = 35, GlowSize = 40, AnimationSpeed = 0.08, BlurIntensity = 30, ShadowOffset = Vector2.new(0, 6), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(0, 255, 200), HeaderTransparency = 0.1, SidebarColor = Color3.fromRGB(2, 5, 10), SidebarTransparency = 0.5, BorderColor = Color3.fromRGB(255, 0, 150), NotificationColor = Color3.fromRGB(8, 12, 20), StatusColor = Color3.fromRGB(8, 12, 20), DialogColor = Color3.fromRGB(12, 18, 25), ButtonColor = Color3.fromRGB(20, 30, 40), ToggleColor = Color3.fromRGB(40, 60, 80), TogglerHeadColor = Color3.fromRGB(255, 0, 150), SliderColor = Color3.fromRGB(40, 60, 80), SliderHeadColor = Color3.fromRGB(0, 255, 200), DropdownColor = Color3.fromRGB(18, 25, 35), InputFieldColor = Color3.fromRGB(0, 255, 200), InputValueBackground = 0.95, InputFieldTransparency = 0.15, ScrollbarColor = Color3.fromRGB(255, 0, 150), ScrollbarTransparency = 0.6, SelectionColor = Color3.fromRGB(0, 255, 200), HoverColor = Color3.fromRGB(255, 0, 150), HoverTransparency = 0.85, ActiveColor = Color3.fromRGB(150, 255, 0), FocusColor = Color3.fromRGB(0, 200, 255), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.8, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(5, 8, 15)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(15, 20, 30)), ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 35, 45)) }, NoiseEnabled = true, NoiseScale = 45, NoiseTransparency = 0.9, ParticlesEnabled = true, ParticleCount = 50, ParticleColor = Color3.fromRGB(0, 255, 200), MotionBlurEnabled = true, MotionBlurIntensity = 0.7, FontFamily = "Consolas", FontWeight = "Bold", FontSize = 13, LineHeight = 1.2, LetterSpacing = 1.2, AntiAliasing = false, SubPixelRendering = false, DynamicTypeScaling = false, HighContrastMode = true, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(0, 255, 200), MinimizeColor = Color3.fromRGB(0, 255, 200), ExitColor = Color3.fromRGB(255, 0, 150), Version = "2.0" }, Rose = { Name = "Rose Garden", Background = Color3.fromRGB(255, 248, 250), Foreground = Color3.fromRGB(76, 29, 149), Surface = Color3.fromRGB(253, 242, 248), TextPrimary = Color3.fromRGB(76, 29, 149), TextSecondary = Color3.fromRGB(136, 19, 55), TextDisabled = Color3.fromRGB(190, 24, 93), AccentPrimary = Color3.fromRGB(236, 72, 153), AccentSecondary = Color3.fromRGB(190, 24, 93), AccentTertiary = Color3.fromRGB(249, 168, 212), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 191, 36), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(168, 85, 247), ShadowColor = Color3.fromRGB(236, 72, 153), GlowColor = Color3.fromRGB(236, 72, 153), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(190, 24, 93)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(236, 72, 153)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(249, 168, 212)), ColorSequenceKeypoint.new(1, Color3.fromRGB(253, 242, 248)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.82, ShadowTransparency = 0.9, GlowTransparency = 0.92, CornerRadius = 18, StrokeThickness = 1, ShadowSize = 8, GlowSize = 6, AnimationSpeed = 0.32, BlurIntensity = 12, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(236, 72, 153), HeaderTransparency = 0.08, SidebarColor = Color3.fromRGB(255, 248, 250), SidebarTransparency = 0.2, BorderColor = Color3.fromRGB(251, 207, 232), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(252, 231, 243), ToggleColor = Color3.fromRGB(251, 207, 232), TogglerHeadColor = Color3.fromRGB(236, 72, 153), SliderColor = Color3.fromRGB(251, 207, 232), SliderHeadColor = Color3.fromRGB(236, 72, 153), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(76, 29, 149), InputValueBackground = 0.95, InputFieldTransparency = 0.92, ScrollbarColor = Color3.fromRGB(190, 24, 93), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(236, 72, 153), HoverColor = Color3.fromRGB(190, 24, 93), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(190, 24, 93), FocusColor = Color3.fromRGB(249, 168, 212), DisabledOverlay = Color3.fromRGB(255, 248, 250), DisabledTransparency = 0.7, GradientEnabled = true, GradientRotation = 135, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 248, 250)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(254, 240, 248)), ColorSequenceKeypoint.new(1, Color3.fromRGB(253, 242, 248)) }, NoiseEnabled = false, NoiseScale = 55, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 12, ParticleColor = Color3.fromRGB(236, 72, 153), MotionBlurEnabled = false, MotionBlurIntensity = 0.2, FontFamily = "Dancing Script", FontWeight = "Regular", FontSize = 14, LineHeight = 1.6, LetterSpacing = 0.4, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(236, 72, 153), MinimizeColor = Color3.fromRGB(236, 72, 153), ExitColor = Color3.fromRGB(190, 24, 93), Version = "2.0" }, Sandstorm = { Name = "Sandstorm", Background = Color3.fromRGB(28, 25, 20), Foreground = Color3.fromRGB(255, 235, 205), Surface = Color3.fromRGB(40, 35, 28), TextPrimary = Color3.fromRGB(255, 235, 205), TextSecondary = Color3.fromRGB(220, 190, 140), TextDisabled = Color3.fromRGB(160, 140, 100), AccentPrimary = Color3.fromRGB(255, 165, 0), AccentSecondary = Color3.fromRGB(218, 165, 32), AccentTertiary = Color3.fromRGB(255, 215, 0), SuccessColor = Color3.fromRGB(85, 170, 85), WarningColor = Color3.fromRGB(255, 140, 0), ErrorColor = Color3.fromRGB(205, 92, 92), InfoColor = Color3.fromRGB(100, 149, 237), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(255, 165, 0), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(218, 165, 32)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(255, 165, 0)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 215, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 235, 205)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.04 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.85, ShadowTransparency = 0.4, GlowTransparency = 0.75, CornerRadius = 6, StrokeThickness = 1, ShadowSize = 20, GlowSize = 15, AnimationSpeed = 0.15, BlurIntensity = 35, ShadowOffset = Vector2.new(0, 3), WallpaperEnabled = true, WallpaperTransparency = 0.8, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(255, 165, 0), HeaderTransparency = 0.2, SidebarColor = Color3.fromRGB(20, 18, 15), SidebarTransparency = 0.7, BorderColor = Color3.fromRGB(255, 165, 0), NotificationColor = Color3.fromRGB(32, 28, 22), StatusColor = Color3.fromRGB(32, 28, 22), DialogColor = Color3.fromRGB(45, 40, 32), ButtonColor = Color3.fromRGB(50, 45, 36), ToggleColor = Color3.fromRGB(90, 80, 65), TogglerHeadColor = Color3.fromRGB(255, 235, 205), SliderColor = Color3.fromRGB(90, 80, 65), SliderHeadColor = Color3.fromRGB(255, 165, 0), DropdownColor = Color3.fromRGB(45, 38, 30), InputFieldColor = Color3.fromRGB(255, 235, 205), InputValueBackground = 0.95, InputFieldTransparency = 0.4, ScrollbarColor = Color3.fromRGB(255, 165, 0), ScrollbarTransparency = 0.8, SelectionColor = Color3.fromRGB(255, 165, 0), HoverColor = Color3.fromRGB(255, 215, 0), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(218, 165, 32), FocusColor = Color3.fromRGB(255, 215, 0), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 315, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(28, 25, 20)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(40, 35, 28)), ColorSequenceKeypoint.new(1, Color3.fromRGB(55, 48, 38)) }, NoiseEnabled = true, NoiseScale = 65, NoiseTransparency = 0.92, ParticlesEnabled = true, ParticleCount = 28, ParticleColor = Color3.fromRGB(255, 165, 0), MotionBlurEnabled = false, MotionBlurIntensity = 0.3, FontFamily = "Palatino", FontWeight = "Regular", FontSize = 14, LineHeight = 1.45, LetterSpacing = 0.3, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 165, 0), MinimizeColor = Color3.fromRGB(255, 165, 0), ExitColor = Color3.fromRGB(218, 165, 32), Version = "2.0" }, Arctic = { Name = "Arctic Frost", Background = Color3.fromRGB(248, 250, 252), Foreground = Color3.fromRGB(30, 58, 138), Surface = Color3.fromRGB(241, 245, 249), TextPrimary = Color3.fromRGB(30, 58, 138), TextSecondary = Color3.fromRGB(59, 130, 246), TextDisabled = Color3.fromRGB(148, 163, 184), AccentPrimary = Color3.fromRGB(59, 130, 246), AccentSecondary = Color3.fromRGB(37, 99, 235), AccentTertiary = Color3.fromRGB(147, 197, 253), SuccessColor = Color3.fromRGB(16, 185, 129), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(59, 130, 246), GlowColor = Color3.fromRGB(147, 197, 253), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(37, 99, 235)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(59, 130, 246)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(147, 197, 253)), ColorSequenceKeypoint.new(1, Color3.fromRGB(248, 250, 252)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.05, StrokeTransparency = 0.9, ShadowTransparency = 0.95, GlowTransparency = 0.88, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 6, GlowSize = 8, AnimationSpeed = 0.4, BlurIntensity = 10, ShadowOffset = Vector2.new(0, 1), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(59, 130, 246), HeaderTransparency = 0.05, SidebarColor = Color3.fromRGB(248, 250, 252), SidebarTransparency = 0.1, BorderColor = Color3.fromRGB(191, 219, 254), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(239, 246, 255), ToggleColor = Color3.fromRGB(219, 234, 254), TogglerHeadColor = Color3.fromRGB(59, 130, 246), SliderColor = Color3.fromRGB(219, 234, 254), SliderHeadColor = Color3.fromRGB(59, 130, 246), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(30, 58, 138), InputValueBackground = 0.95, InputFieldTransparency = 0.98, ScrollbarColor = Color3.fromRGB(147, 197, 253), ScrollbarTransparency = 0.8, SelectionColor = Color3.fromRGB(59, 130, 246), HoverColor = Color3.fromRGB(37, 99, 235), HoverTransparency = 0.95, ActiveColor = Color3.fromRGB(37, 99, 235), FocusColor = Color3.fromRGB(147, 197, 253), DisabledOverlay = Color3.fromRGB(248, 250, 252), DisabledTransparency = 0.8, GradientEnabled = true, GradientRotation = 180, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(248, 250, 252)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(241, 245, 249)), ColorSequenceKeypoint.new(1, Color3.fromRGB(239, 246, 255)) }, NoiseEnabled = false, NoiseScale = 70, NoiseTransparency = 1, ParticlesEnabled = false, ParticleCount = 5, ParticleColor = Color3.fromRGB(147, 197, 253), MotionBlurEnabled = false, MotionBlurIntensity = 0.1, FontFamily = "Source Sans Pro", FontWeight = "Regular", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = true, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(59, 130, 246), MinimizeColor = Color3.fromRGB(59, 130, 246), ExitColor = Color3.fromRGB(37, 99, 235), Version = "2.0" }, Void = { Name = "Void", Background = Color3.fromRGB(0, 0, 0), Foreground = Color3.fromRGB(160, 160, 180), Surface = Color3.fromRGB(8, 8, 12), TextPrimary = Color3.fromRGB(160, 160, 180), TextSecondary = Color3.fromRGB(120, 120, 140), TextDisabled = Color3.fromRGB(60, 60, 70), AccentPrimary = Color3.fromRGB(100, 100, 140), AccentSecondary = Color3.fromRGB(80, 80, 120), AccentTertiary = Color3.fromRGB(140, 140, 180), SuccessColor = Color3.fromRGB(60, 140, 60), WarningColor = Color3.fromRGB(140, 120, 60), ErrorColor = Color3.fromRGB(140, 60, 60), InfoColor = Color3.fromRGB(60, 100, 140), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(100, 100, 140), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(80, 80, 120)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(100, 100, 140)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(140, 140, 180)), ColorSequenceKeypoint.new(1, Color3.fromRGB(160, 160, 180)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.01, StrokeTransparency = 0.95, ShadowTransparency = 0.3, GlowTransparency = 0.9, CornerRadius = 4, StrokeThickness = 1, ShadowSize = 15, GlowSize = 10, AnimationSpeed = 0.12, BlurIntensity = 25, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = true, WallpaperTransparency = 0.9, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(100, 100, 140), HeaderTransparency = 0.4, SidebarColor = Color3.fromRGB(0, 0, 0), SidebarTransparency = 0.9, BorderColor = Color3.fromRGB(100, 100, 140), NotificationColor = Color3.fromRGB(4, 4, 6), StatusColor = Color3.fromRGB(4, 4, 6), DialogColor = Color3.fromRGB(6, 6, 10), ButtonColor = Color3.fromRGB(12, 12, 18), ToggleColor = Color3.fromRGB(40, 40, 50), TogglerHeadColor = Color3.fromRGB(160, 160, 180), SliderColor = Color3.fromRGB(40, 40, 50), SliderHeadColor = Color3.fromRGB(100, 100, 140), DropdownColor = Color3.fromRGB(10, 10, 15), InputFieldColor = Color3.fromRGB(160, 160, 180), InputValueBackground = 0.95, InputFieldTransparency = 0.6, ScrollbarColor = Color3.fromRGB(100, 100, 140), ScrollbarTransparency = 0.9, SelectionColor = Color3.fromRGB(100, 100, 140), HoverColor = Color3.fromRGB(140, 140, 180), HoverTransparency = 0.95, ActiveColor = Color3.fromRGB(80, 80, 120), FocusColor = Color3.fromRGB(140, 140, 180), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.7, GradientEnabled = false, GradientRotation = 0, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(8, 8, 12)) }, NoiseEnabled = false, NoiseScale = 100, NoiseTransparency = 1, ParticlesEnabled = false, ParticleCount = 8, ParticleColor = Color3.fromRGB(100, 100, 140), MotionBlurEnabled = false, MotionBlurIntensity = 0.2, FontFamily = "Trebuchet MS", FontWeight = "Regular", FontSize = 13, LineHeight = 1.35, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = true, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(100, 100, 140), MinimizeColor = Color3.fromRGB(100, 100, 140), ExitColor = Color3.fromRGB(80, 80, 120), Version = "2.0" }, Glass = { Name = "Glass", Background = Color3.fromRGB(255, 255, 255), Foreground = Color3.fromRGB(255, 255, 255), Surface = Color3.fromRGB(250, 250, 250), TextPrimary = Color3.fromRGB(255, 255, 255), TextSecondary = Color3.fromRGB(255, 255, 255), TextDisabled = Color3.fromRGB(180, 180, 180), AccentPrimary = Color3.fromRGB(255, 255, 255), AccentSecondary = Color3.fromRGB(255, 255, 255), AccentTertiary = Color3.fromRGB(255, 255, 255), SuccessColor = Color3.fromRGB(16, 124, 16), WarningColor = Color3.fromRGB(255, 185, 0), ErrorColor = Color3.fromRGB(196, 43, 28), InfoColor = Color3.fromRGB(0, 120, 215), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(0, 120, 215), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 120, 215)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(120, 180, 255)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(240, 240, 240)) }), BackgroundTransparency = 1, SurfaceTransparency = 0.1, StrokeTransparency = 0.8, ShadowTransparency = 1, GlowTransparency = 0, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 25, GlowSize = 20, AnimationSpeed = 0.3, BlurIntensity = 80, ShadowOffset = Vector2.new(0, 6), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(255, 255, 255), HeaderTransparency = 0.2, SidebarColor = Color3.fromRGB(250, 250, 250), SidebarTransparency = 1, BorderColor = Color3.fromRGB(200, 200, 200), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(240, 240, 240), ToggleColor = Color3.fromRGB(200, 200, 200), TogglerHeadColor = Color3.fromRGB(255, 255, 255), SliderColor = Color3.fromRGB(200, 200, 200), SliderHeadColor = Color3.fromRGB(0, 120, 215), DropdownColor = Color3.fromRGB(245, 245, 245), InputFieldColor = Color3.fromRGB(255, 255, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.85, ScrollbarColor = Color3.fromRGB(120, 120, 120), ScrollbarTransparency = 0.6, SelectionColor = Color3.fromRGB(255, 255, 255), HoverColor = Color3.fromRGB(0, 0, 0), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(0, 120, 215), FocusColor = Color3.fromRGB(0, 120, 215), DisabledOverlay = Color3.fromRGB(255, 255, 255), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(240, 240, 240)) }, NoiseEnabled = false, NoiseScale = 50, NoiseTransparency = 0.98, ParticlesEnabled = false, ParticleCount = 15, ParticleColor = Color3.fromRGB(0, 120, 215), MotionBlurEnabled = false, MotionBlurIntensity = 0.3, FontFamily = "Segoe UI", FontWeight = "Regular", FontSize = 14, LineHeight = 1.3, LetterSpacing = 0.5, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "System", AutoDarkMode = true, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(200, 200, 200), MinimizeColor = Color3.fromRGB(200, 200, 200), ExitColor = Color3.fromRGB(122, 122, 122), Version = "2.0" }, Dark = { Name = "Dark", Background = Color3.fromRGB(5, 5, 5), Foreground = Color3.fromRGB(220, 220, 220), Surface = Color3.fromRGB(20, 20, 20), TextPrimary = Color3.fromRGB(220, 220, 220), TextSecondary = Color3.fromRGB(140, 140, 140), TextDisabled = Color3.fromRGB(90, 90, 90), AccentPrimary = Color3.fromRGB(220, 220, 220), AccentSecondary = Color3.fromRGB(48, 120, 230), AccentTertiary = Color3.fromRGB(220, 220, 220), SuccessColor = Color3.fromRGB(36, 120, 47), WarningColor = Color3.fromRGB(190, 150, 0), ErrorColor = Color3.fromRGB(180, 40, 55), InfoColor = Color3.fromRGB(18, 130, 150), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(80, 120, 200), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 90, 220)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(80, 120, 200)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(220, 220, 220)), ColorSequenceKeypoint.new(1, Color3.fromRGB(140, 140, 140)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.1 or 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.9, ShadowTransparency = 0, GlowTransparency = 0.85, CornerRadius = 10, StrokeThickness = 1, ShadowSize = 20, GlowSize = 15, AnimationSpeed = 0.2, BlurIntensity = 60, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.75, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(200, 200, 200), HeaderTransparency = 0.4, SidebarColor = Color3.fromRGB(0, 0, 0), SidebarTransparency = 0.8, BorderColor = Color3.fromRGB(200, 200, 200), NotificationColor = Color3.fromRGB(10, 10, 10), StatusColor = Color3.fromRGB(10, 10, 10), DialogColor = Color3.fromRGB(10, 10, 10), ButtonColor = Color3.fromRGB(15, 15, 15), ToggleColor = Color3.fromRGB(65, 65, 65), TogglerHeadColor = Color3.fromRGB(220, 220, 220), SliderColor = Color3.fromRGB(65, 65, 65), SliderHeadColor = Color3.fromRGB(220, 220, 220), DropdownColor = Color3.fromRGB(15, 15, 15), InputFieldColor = Color3.fromRGB(200, 200, 200), InputValueBackground = 0.95, InputFieldTransparency = 0.5, ScrollbarColor = Color3.fromRGB(200, 200, 200), ScrollbarTransparency = 0.85, SelectionColor = Color3.fromRGB(200, 200, 200), HoverColor = Color3.fromRGB(200, 200, 200), HoverTransparency = 0.95, ActiveColor = Color3.fromRGB(0, 90, 220), FocusColor = Color3.fromRGB(80, 120, 200), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.55, GradientEnabled = false, GradientRotation = 0, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(5, 5, 5)), ColorSequenceKeypoint.new(1, Color3.fromRGB(15, 15, 15)) }, NoiseEnabled = false, NoiseScale = 100, NoiseTransparency = 0.97, ParticlesEnabled = false, ParticleCount = 20, ParticleColor = Color3.fromRGB(200, 200, 200), MotionBlurEnabled = false, MotionBlurIntensity = 0.5, FontFamily = "Inter", FontWeight = "Medium", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Auto", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(220, 220, 220), MinimizeColor = Color3.fromRGB(220, 220, 220), ExitColor = Color3.fromRGB(154, 154, 154), Version = "2.0" }, Aurora = { Name = "Aurora", Background = Color3.fromRGB(10, 12, 28), Foreground = Color3.fromRGB(220, 240, 255), Surface = Color3.fromRGB(20, 25, 45), TextPrimary = Color3.fromRGB(220, 240, 255), TextSecondary = Color3.fromRGB(160, 180, 200), TextDisabled = Color3.fromRGB(100, 120, 140), AccentPrimary = Color3.fromRGB(120, 255, 196), AccentSecondary = Color3.fromRGB(100, 180, 255), AccentTertiary = Color3.fromRGB(240, 120, 255), SuccessColor = Color3.fromRGB(40, 190, 130), WarningColor = Color3.fromRGB(255, 200, 50), ErrorColor = Color3.fromRGB(240, 60, 80), InfoColor = Color3.fromRGB(60, 170, 255), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(120, 255, 196), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(100, 180, 255)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(120, 255, 196)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(240, 120, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(220, 240, 255)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.07 or 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.9, ShadowTransparency = 0, GlowTransparency = 0.75, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 30, GlowSize = 20, AnimationSpeed = 0.25, BlurIntensity = 60, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.6, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(120, 255, 196), HeaderTransparency = 0.3, SidebarColor = Color3.fromRGB(5, 10, 20), SidebarTransparency = 0.7, BorderColor = Color3.fromRGB(120, 255, 196), NotificationColor = Color3.fromRGB(15, 15, 30), StatusColor = Color3.fromRGB(20, 20, 35), DialogColor = Color3.fromRGB(25, 30, 50), ButtonColor = Color3.fromRGB(25, 35, 55), ToggleColor = Color3.fromRGB(80, 130, 180), TogglerHeadColor = Color3.fromRGB(240, 240, 255), SliderColor = Color3.fromRGB(80, 130, 180), SliderHeadColor = Color3.fromRGB(120, 255, 196), DropdownColor = Color3.fromRGB(25, 35, 55), InputFieldColor = Color3.fromRGB(220, 240, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.4, ScrollbarColor = Color3.fromRGB(220, 240, 255), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(120, 255, 196), HoverColor = Color3.fromRGB(255, 255, 255), HoverTransparency = 0.95, ActiveColor = Color3.fromRGB(100, 180, 255), FocusColor = Color3.fromRGB(120, 255, 196), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(10, 12, 28)), ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 35, 60)) }, NoiseEnabled = true, NoiseScale = 75, NoiseTransparency = 0.96, ParticlesEnabled = true, ParticleCount = 25, ParticleColor = Color3.fromRGB(120, 255, 196), MotionBlurEnabled = false, MotionBlurIntensity = 0.4, FontFamily = "Poppins", FontWeight = "SemiBold", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0.2, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = true, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(220, 240, 255), MinimizeColor = Color3.fromRGB(220, 240, 255), ExitColor = Color3.fromRGB(120, 255, 196), Version = "2.0" }, Neon = { Name = "Neon", Background = Color3.fromRGB(8, 8, 12), Foreground = Color3.fromRGB(255, 20, 147), Surface = Color3.fromRGB(18, 18, 25), TextPrimary = Color3.fromRGB(255, 255, 255), TextSecondary = Color3.fromRGB(255, 20, 147), TextDisabled = Color3.fromRGB(100, 100, 120), AccentPrimary = Color3.fromRGB(255, 20, 147), AccentSecondary = Color3.fromRGB(0, 255, 255), AccentTertiary = Color3.fromRGB(255, 255, 0), SuccessColor = Color3.fromRGB(0, 255, 127), WarningColor = Color3.fromRGB(255, 165, 0), ErrorColor = Color3.fromRGB(255, 69, 0), InfoColor = Color3.fromRGB(0, 191, 255), ShadowColor = Color3.fromRGB(255, 20, 147), GlowColor = Color3.fromRGB(255, 20, 147), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 20, 147)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(0, 255, 255)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 255, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.05, StrokeTransparency = 0.7, ShadowTransparency = 0, GlowTransparency = 0.6, CornerRadius = 8, StrokeThickness = 2, ShadowSize = 25, GlowSize = 30, AnimationSpeed = 0.15, BlurIntensity = 40, ShadowOffset = Vector2.new(0, 5), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(255, 20, 147), HeaderTransparency = 0.2, SidebarColor = Color3.fromRGB(5, 5, 8), SidebarTransparency = 0.6, BorderColor = Color3.fromRGB(255, 20, 147), NotificationColor = Color3.fromRGB(12, 12, 18), StatusColor = Color3.fromRGB(12, 12, 18), DialogColor = Color3.fromRGB(15, 15, 22), ButtonColor = Color3.fromRGB(30, 30, 40), ToggleColor = Color3.fromRGB(60, 60, 80), TogglerHeadColor = Color3.fromRGB(255, 20, 147), SliderColor = Color3.fromRGB(60, 60, 80), SliderHeadColor = Color3.fromRGB(0, 255, 255), DropdownColor = Color3.fromRGB(25, 25, 35), InputFieldColor = Color3.fromRGB(255, 255, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.3, ScrollbarColor = Color3.fromRGB(255, 20, 147), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(255, 20, 147), HoverColor = Color3.fromRGB(255, 20, 147), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(0, 255, 255), FocusColor = Color3.fromRGB(255, 255, 0), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 90, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(8, 8, 12)), ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 25, 35)) }, NoiseEnabled = false, NoiseScale = 80, NoiseTransparency = 0.98, ParticlesEnabled = true, ParticleCount = 30, ParticleColor = Color3.fromRGB(255, 20, 147), MotionBlurEnabled = false, MotionBlurIntensity = 0.6, FontFamily = "Roboto Mono", FontWeight = "Bold", FontSize = 14, LineHeight = 1.3, LetterSpacing = 0.5, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 20, 147), MinimizeColor = Color3.fromRGB(255, 20, 147), ExitColor = Color3.fromRGB(179, 14, 103), Version = "2.0" }, Forest = { Name = "Forest", Background = Color3.fromRGB(12, 20, 12), Foreground = Color3.fromRGB(200, 220, 180), Surface = Color3.fromRGB(25, 35, 25), TextPrimary = Color3.fromRGB(200, 220, 180), TextSecondary = Color3.fromRGB(150, 180, 130), TextDisabled = Color3.fromRGB(100, 120, 90), AccentPrimary = Color3.fromRGB(100, 200, 100), AccentSecondary = Color3.fromRGB(80, 160, 80), AccentTertiary = Color3.fromRGB(120, 180, 60), SuccessColor = Color3.fromRGB(60, 180, 60), WarningColor = Color3.fromRGB(200, 160, 60), ErrorColor = Color3.fromRGB(180, 80, 60), InfoColor = Color3.fromRGB(80, 140, 200), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(100, 200, 100), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(80, 160, 80)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(100, 200, 100)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(120, 180, 60)), ColorSequenceKeypoint.new(1, Color3.fromRGB(200, 220, 180)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.05 or 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.9, ShadowTransparency = 0, GlowTransparency = 0.8, CornerRadius = 15, StrokeThickness = 1, ShadowSize = 20, GlowSize = 18, AnimationSpeed = 0.3, BlurIntensity = 55, ShadowOffset = Vector2.new(0, 3), WallpaperEnabled = true, WallpaperTransparency = 0.7, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(100, 200, 100), HeaderTransparency = 0.25, SidebarColor = Color3.fromRGB(8, 15, 8), SidebarTransparency = 0.75, BorderColor = Color3.fromRGB(100, 200, 100), NotificationColor = Color3.fromRGB(18, 25, 18), StatusColor = Color3.fromRGB(18, 25, 18), DialogColor = Color3.fromRGB(20, 30, 20), ButtonColor = Color3.fromRGB(35, 45, 35), ToggleColor = Color3.fromRGB(70, 90, 70), TogglerHeadColor = Color3.fromRGB(200, 220, 180), SliderColor = Color3.fromRGB(70, 90, 70), SliderHeadColor = Color3.fromRGB(100, 200, 100), DropdownColor = Color3.fromRGB(30, 40, 30), InputFieldColor = Color3.fromRGB(200, 220, 180), InputValueBackground = 0.95, InputFieldTransparency = 0.4, ScrollbarColor = Color3.fromRGB(100, 200, 100), ScrollbarTransparency = 0.8, SelectionColor = Color3.fromRGB(100, 200, 100), HoverColor = Color3.fromRGB(100, 200, 100), HoverTransparency = 0.93, ActiveColor = Color3.fromRGB(80, 160, 80), FocusColor = Color3.fromRGB(120, 180, 60), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 30, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(12, 20, 12)), ColorSequenceKeypoint.new(1, Color3.fromRGB(30, 40, 25)) }, NoiseEnabled = true, NoiseScale = 120, NoiseTransparency = 0.97, ParticlesEnabled = false, ParticleCount = 15, ParticleColor = Color3.fromRGB(100, 200, 100), MotionBlurEnabled = false, MotionBlurIntensity = 0.3, FontFamily = "Source Sans Pro", FontWeight = "Regular", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(100, 200, 100), MinimizeColor = Color3.fromRGB(100, 200, 100), ExitColor = Color3.fromRGB(70, 140, 70), Version = "2.0" }, Sunset = { Name = "Sunset", Background = Color3.fromRGB(25, 15, 35), Foreground = Color3.fromRGB(255, 200, 150), Surface = Color3.fromRGB(40, 25, 50), TextPrimary = Color3.fromRGB(255, 200, 150), TextSecondary = Color3.fromRGB(220, 160, 120), TextDisabled = Color3.fromRGB(150, 120, 100), AccentPrimary = Color3.fromRGB(255, 140, 80), AccentSecondary = Color3.fromRGB(255, 100, 150), AccentTertiary = Color3.fromRGB(200, 80, 200), SuccessColor = Color3.fromRGB(150, 200, 80), WarningColor = Color3.fromRGB(255, 180, 60), ErrorColor = Color3.fromRGB(255, 80, 80), InfoColor = Color3.fromRGB(120, 160, 255), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(255, 140, 80), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 100, 150)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(255, 140, 80)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(200, 80, 200)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 200, 150)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.06 or 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.85, ShadowTransparency = 0, GlowTransparency = 0.75, CornerRadius = 14, StrokeThickness = 1, ShadowSize = 25, GlowSize = 22, AnimationSpeed = 0.25, BlurIntensity = 65, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.6, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(255, 140, 80), HeaderTransparency = 0.3, SidebarColor = Color3.fromRGB(15, 10, 25), SidebarTransparency = 0.7, BorderColor = Color3.fromRGB(255, 140, 80), NotificationColor = Color3.fromRGB(30, 20, 40), StatusColor = Color3.fromRGB(30, 20, 40), DialogColor = Color3.fromRGB(35, 25, 45), ButtonColor = Color3.fromRGB(50, 35, 60), ToggleColor = Color3.fromRGB(90, 70, 100), TogglerHeadColor = Color3.fromRGB(255, 200, 150), SliderColor = Color3.fromRGB(90, 70, 100), SliderHeadColor = Color3.fromRGB(255, 140, 80), DropdownColor = Color3.fromRGB(45, 30, 55), InputFieldColor = Color3.fromRGB(255, 200, 150), InputValueBackground = 0.95, InputFieldTransparency = 0.42, ScrollbarColor = Color3.fromRGB(255, 140, 80), ScrollbarTransparency = 0.78, SelectionColor = Color3.fromRGB(255, 140, 80), HoverColor = Color3.fromRGB(255, 140, 80), HoverTransparency = 0.92, ActiveColor = Color3.fromRGB(255, 100, 150), FocusColor = Color3.fromRGB(200, 80, 200), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.52, GradientEnabled = true, GradientRotation = 135, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 15, 35)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(45, 25, 55)), ColorSequenceKeypoint.new(1, Color3.fromRGB(60, 30, 45)) }, NoiseEnabled = false, NoiseScale = 90, NoiseTransparency = 0.95, ParticlesEnabled = true, ParticleCount = 20, ParticleColor = Color3.fromRGB(255, 140, 80), MotionBlurEnabled = false, MotionBlurIntensity = 0.4, FontFamily = "Nunito", FontWeight = "SemiBold", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0.3, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 140, 80), MinimizeColor = Color3.fromRGB(255, 140, 80), ExitColor = Color3.fromRGB(179, 98, 56), Version = "2.0" }, Ocean = { Name = "Ocean", Background = Color3.fromRGB(8, 25, 40), Foreground = Color3.fromRGB(200, 230, 255), Surface = Color3.fromRGB(15, 35, 55), TextPrimary = Color3.fromRGB(200, 230, 255), TextSecondary = Color3.fromRGB(150, 190, 220), TextDisabled = Color3.fromRGB(100, 140, 170), AccentPrimary = Color3.fromRGB(100, 200, 255), AccentSecondary = Color3.fromRGB(50, 150, 255), AccentTertiary = Color3.fromRGB(150, 220, 255), SuccessColor = Color3.fromRGB(50, 200, 150), WarningColor = Color3.fromRGB(255, 200, 100), ErrorColor = Color3.fromRGB(255, 100, 120), InfoColor = Color3.fromRGB(100, 180, 255), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(100, 200, 255), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(50, 150, 255)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(100, 200, 255)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(150, 220, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(200, 230, 255)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.08 or 0, SurfaceTransparency = 0.05, StrokeTransparency = 0.88, ShadowTransparency = 0, GlowTransparency = 0.78, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 22, GlowSize = 20, AnimationSpeed = 0.28, BlurIntensity = 70, ShadowOffset = Vector2.new(0, 5), WallpaperEnabled = true, WallpaperTransparency = 0.65, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(100, 200, 255), HeaderTransparency = 0.28, SidebarColor = Color3.fromRGB(5, 18, 30), SidebarTransparency = 0.72, BorderColor = Color3.fromRGB(100, 200, 255), NotificationColor = Color3.fromRGB(12, 30, 45), StatusColor = Color3.fromRGB(12, 30, 45), DialogColor = Color3.fromRGB(18, 40, 60), ButtonColor = Color3.fromRGB(25, 45, 70), ToggleColor = Color3.fromRGB(60, 90, 120), TogglerHeadColor = Color3.fromRGB(200, 230, 255), SliderColor = Color3.fromRGB(60, 90, 120), SliderHeadColor = Color3.fromRGB(100, 200, 255), DropdownColor = Color3.fromRGB(20, 40, 65), InputFieldColor = Color3.fromRGB(200, 230, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.38, ScrollbarColor = Color3.fromRGB(100, 200, 255), ScrollbarTransparency = 0.76, SelectionColor = Color3.fromRGB(100, 200, 255), HoverColor = Color3.fromRGB(150, 220, 255), HoverTransparency = 0.91, ActiveColor = Color3.fromRGB(50, 150, 255), FocusColor = Color3.fromRGB(150, 220, 255), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.48, GradientEnabled = true, GradientRotation = 180, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(8, 25, 40)), ColorSequenceKeypoint.new(1, Color3.fromRGB(20, 40, 65)) }, NoiseEnabled = true, NoiseScale = 110, NoiseTransparency = 0.96, ParticlesEnabled = true, ParticleCount = 18, ParticleColor = Color3.fromRGB(100, 200, 255), MotionBlurEnabled = false, MotionBlurIntensity = 0.35, FontFamily = "Open Sans", FontWeight = "Regular", FontSize = 14, LineHeight = 1.45, LetterSpacing = 0.2, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(100, 200, 255), MinimizeColor = Color3.fromRGB(100, 200, 255), ExitColor = Color3.fromRGB(70, 140, 179), Version = "2.0" }, Midnight = { Name = "Midnight", Background = Color3.fromRGB(2, 2, 8), Foreground = Color3.fromRGB(180, 180, 200), Surface = Color3.fromRGB(8, 8, 18), TextPrimary = Color3.fromRGB(180, 180, 200), TextSecondary = Color3.fromRGB(120, 120, 150), TextDisabled = Color3.fromRGB(70, 70, 90), AccentPrimary = Color3.fromRGB(140, 140, 200), AccentSecondary = Color3.fromRGB(100, 100, 180), AccentTertiary = Color3.fromRGB(160, 160, 220), SuccessColor = Color3.fromRGB(80, 160, 100), WarningColor = Color3.fromRGB(200, 160, 80), ErrorColor = Color3.fromRGB(180, 80, 80), InfoColor = Color3.fromRGB(80, 120, 200), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(140, 140, 200), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(100, 100, 180)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(140, 140, 200)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(160, 160, 220)), ColorSequenceKeypoint.new(1, Color3.fromRGB(180, 180, 200)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.03 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.92, ShadowTransparency = 0, GlowTransparency = 0.85, CornerRadius = 8, StrokeThickness = 1, ShadowSize = 18, GlowSize = 15, AnimationSpeed = 0.18, BlurIntensity = 45, ShadowOffset = Vector2.new(0, 3), WallpaperEnabled = true, WallpaperTransparency = 0.8, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(140, 140, 200), HeaderTransparency = 0.35, SidebarColor = Color3.fromRGB(1, 1, 5), SidebarTransparency = 0.8, BorderColor = Color3.fromRGB(140, 140, 200), NotificationColor = Color3.fromRGB(5, 5, 12), StatusColor = Color3.fromRGB(5, 5, 12), DialogColor = Color3.fromRGB(10, 10, 20), ButtonColor = Color3.fromRGB(12, 12, 25), ToggleColor = Color3.fromRGB(50, 50, 70), TogglerHeadColor = Color3.fromRGB(180, 180, 200), SliderColor = Color3.fromRGB(50, 50, 70), SliderHeadColor = Color3.fromRGB(140, 140, 200), DropdownColor = Color3.fromRGB(10, 10, 22), InputFieldColor = Color3.fromRGB(180, 180, 200), InputValueBackground = 0.95, InputFieldTransparency = 0.5, ScrollbarColor = Color3.fromRGB(140, 140, 200), ScrollbarTransparency = 0.85, SelectionColor = Color3.fromRGB(140, 140, 200), HoverColor = Color3.fromRGB(160, 160, 220), HoverTransparency = 0.94, ActiveColor = Color3.fromRGB(100, 100, 180), FocusColor = Color3.fromRGB(160, 160, 220), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.6, GradientEnabled = false, GradientRotation = 0, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(2, 2, 8)), ColorSequenceKeypoint.new(1, Color3.fromRGB(8, 8, 18)) }, NoiseEnabled = false, NoiseScale = 80, NoiseTransparency = 0.98, ParticlesEnabled = false, ParticleCount = 12, ParticleColor = Color3.fromRGB(140, 140, 200), MotionBlurEnabled = false, MotionBlurIntensity = 0.3, FontFamily = "JetBrains Mono", FontWeight = "Regular", FontSize = 13, LineHeight = 1.3, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(140, 140, 200), MinimizeColor = Color3.fromRGB(140, 140, 200), ExitColor = Color3.fromRGB(98, 98, 140), Version = "2.0" }, Cherry = { Name = "Cherry", Background = Color3.fromRGB(40, 8, 15), Foreground = Color3.fromRGB(255, 200, 210), Surface = Color3.fromRGB(55, 15, 25), TextPrimary = Color3.fromRGB(255, 200, 210), TextSecondary = Color3.fromRGB(220, 160, 180), TextDisabled = Color3.fromRGB(150, 100, 120), AccentPrimary = Color3.fromRGB(255, 100, 140), AccentSecondary = Color3.fromRGB(200, 50, 100), AccentTertiary = Color3.fromRGB(255, 150, 180), SuccessColor = Color3.fromRGB(100, 200, 120), WarningColor = Color3.fromRGB(255, 180, 80), ErrorColor = Color3.fromRGB(255, 80, 100), InfoColor = Color3.fromRGB(150, 100, 255), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(255, 100, 140), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(200, 50, 100)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(255, 100, 140)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 150, 180)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 200, 210)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.06 or 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.87, ShadowTransparency = 0, GlowTransparency = 0.72, CornerRadius = 16, StrokeThickness = 1, ShadowSize = 24, GlowSize = 25, AnimationSpeed = 0.22, BlurIntensity = 58, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.68, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(255, 100, 140), HeaderTransparency = 0.25, SidebarColor = Color3.fromRGB(25, 5, 10), SidebarTransparency = 0.75, BorderColor = Color3.fromRGB(255, 100, 140), NotificationColor = Color3.fromRGB(45, 12, 20), StatusColor = Color3.fromRGB(45, 12, 20), DialogColor = Color3.fromRGB(50, 18, 28), ButtonColor = Color3.fromRGB(65, 25, 35), ToggleColor = Color3.fromRGB(100, 50, 70), TogglerHeadColor = Color3.fromRGB(255, 200, 210), SliderColor = Color3.fromRGB(100, 50, 70), SliderHeadColor = Color3.fromRGB(255, 100, 140), DropdownColor = Color3.fromRGB(60, 22, 32), InputFieldColor = Color3.fromRGB(255, 200, 210), InputValueBackground = 0.95, InputFieldTransparency = 0.4, ScrollbarColor = Color3.fromRGB(255, 100, 140), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(255, 100, 140), HoverColor = Color3.fromRGB(255, 150, 180), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(200, 50, 100), FocusColor = Color3.fromRGB(255, 150, 180), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 120, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(40, 8, 15)), ColorSequenceKeypoint.new(1, Color3.fromRGB(60, 20, 30)) }, NoiseEnabled = false, NoiseScale = 95, NoiseTransparency = 0.96, ParticlesEnabled = true, ParticleCount = 22, ParticleColor = Color3.fromRGB(255, 100, 140), MotionBlurEnabled = false, MotionBlurIntensity = 0.38, FontFamily = "Lato", FontWeight = "Medium", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0.25, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 100, 140), MinimizeColor = Color3.fromRGB(255, 100, 140), ExitColor = Color3.fromRGB(179, 70, 98), Version = "2.0" }, Volcano = { Name = "Volcano", Background = Color3.fromRGB(20, 8, 5), Foreground = Color3.fromRGB(255, 180, 120), Surface = Color3.fromRGB(35, 15, 10), TextPrimary = Color3.fromRGB(255, 180, 120), TextSecondary = Color3.fromRGB(220, 140, 80), TextDisabled = Color3.fromRGB(150, 100, 60), AccentPrimary = Color3.fromRGB(255, 120, 40), AccentSecondary = Color3.fromRGB(220, 80, 20), AccentTertiary = Color3.fromRGB(255, 160, 80), SuccessColor = Color3.fromRGB(120, 180, 60), WarningColor = Color3.fromRGB(255, 200, 60), ErrorColor = Color3.fromRGB(255, 60, 40), InfoColor = Color3.fromRGB(120, 160, 255), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(255, 120, 40), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(220, 80, 20)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(255, 120, 40)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 160, 80)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 180, 120)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.05 or 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.88, ShadowTransparency = 0, GlowTransparency = 0.7, CornerRadius = 10, StrokeThickness = 1, ShadowSize = 28, GlowSize = 30, AnimationSpeed = 0.2, BlurIntensity = 50, ShadowOffset = Vector2.new(0, 5), WallpaperEnabled = true, WallpaperTransparency = 0.7, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(255, 120, 40), HeaderTransparency = 0.2, SidebarColor = Color3.fromRGB(12, 5, 3), SidebarTransparency = 0.8, BorderColor = Color3.fromRGB(255, 120, 40), NotificationColor = Color3.fromRGB(25, 12, 8), StatusColor = Color3.fromRGB(25, 12, 8), DialogColor = Color3.fromRGB(30, 18, 12), ButtonColor = Color3.fromRGB(45, 25, 15), ToggleColor = Color3.fromRGB(80, 50, 30), TogglerHeadColor = Color3.fromRGB(255, 180, 120), SliderColor = Color3.fromRGB(80, 50, 30), SliderHeadColor = Color3.fromRGB(255, 120, 40), DropdownColor = Color3.fromRGB(40, 22, 15), InputFieldColor = Color3.fromRGB(255, 180, 120), InputValueBackground = 0.95, InputFieldTransparency = 0.35, ScrollbarColor = Color3.fromRGB(255, 120, 40), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(255, 120, 40), HoverColor = Color3.fromRGB(255, 160, 80), HoverTransparency = 0.88, ActiveColor = Color3.fromRGB(220, 80, 20), FocusColor = Color3.fromRGB(255, 160, 80), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.55, GradientEnabled = true, GradientRotation = 270, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(20, 8, 5)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(40, 18, 10)), ColorSequenceKeypoint.new(1, Color3.fromRGB(60, 25, 15)) }, NoiseEnabled = true, NoiseScale = 85, NoiseTransparency = 0.94, ParticlesEnabled = true, ParticleCount = 35, ParticleColor = Color3.fromRGB(255, 120, 40), MotionBlurEnabled = false, MotionBlurIntensity = 0.45, FontFamily = "Ubuntu", FontWeight = "Medium", FontSize = 14, LineHeight = 1.35, LetterSpacing = 0.15, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 120, 40), MinimizeColor = Color3.fromRGB(255, 120, 40), ExitColor = Color3.fromRGB(179, 84, 28), Version = "2.0" }, Ice = { Name = "Ice", Background = Color3.fromRGB(240, 248, 255), Foreground = Color3.fromRGB(25, 55, 85), Surface = Color3.fromRGB(250, 253, 255), TextPrimary = Color3.fromRGB(25, 55, 85), TextSecondary = Color3.fromRGB(60, 90, 120), TextDisabled = Color3.fromRGB(120, 140, 160), AccentPrimary = Color3.fromRGB(100, 180, 255), AccentSecondary = Color3.fromRGB(60, 140, 220), AccentTertiary = Color3.fromRGB(140, 200, 255), SuccessColor = Color3.fromRGB(40, 180, 120), WarningColor = Color3.fromRGB(255, 160, 40), ErrorColor = Color3.fromRGB(220, 60, 80), InfoColor = Color3.fromRGB(80, 160, 255), ShadowColor = Color3.fromRGB(100, 150, 200), GlowColor = Color3.fromRGB(100, 180, 255), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(60, 140, 220)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(100, 180, 255)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(140, 200, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 55, 85)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.05, StrokeTransparency = 0.7, ShadowTransparency = 0.8, GlowTransparency = 0.9, CornerRadius = 16, StrokeThickness = 1, ShadowSize = 15, GlowSize = 12, AnimationSpeed = 0.35, BlurIntensity = 30, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(100, 180, 255), HeaderTransparency = 0.15, SidebarColor = Color3.fromRGB(245, 250, 255), SidebarTransparency = 0.3, BorderColor = Color3.fromRGB(180, 210, 240), NotificationColor = Color3.fromRGB(248, 252, 255), StatusColor = Color3.fromRGB(248, 252, 255), DialogColor = Color3.fromRGB(252, 254, 255), ButtonColor = Color3.fromRGB(245, 250, 255), ToggleColor = Color3.fromRGB(200, 220, 240), TogglerHeadColor = Color3.fromRGB(25, 55, 85), SliderColor = Color3.fromRGB(200, 220, 240), SliderHeadColor = Color3.fromRGB(100, 180, 255), DropdownColor = Color3.fromRGB(248, 252, 255), InputFieldColor = Color3.fromRGB(25, 55, 85), InputValueBackground = 0.95, InputFieldTransparency = 0.9, ScrollbarColor = Color3.fromRGB(150, 180, 210), ScrollbarTransparency = 0.6, SelectionColor = Color3.fromRGB(100, 180, 255), HoverColor = Color3.fromRGB(60, 140, 220), HoverTransparency = 0.85, ActiveColor = Color3.fromRGB(60, 140, 220), FocusColor = Color3.fromRGB(140, 200, 255), DisabledOverlay = Color3.fromRGB(200, 220, 240), DisabledTransparency = 0.7, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(240, 248, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(250, 253, 255)) }, NoiseEnabled = false, NoiseScale = 60, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 10, ParticleColor = Color3.fromRGB(100, 180, 255), MotionBlurEnabled = false, MotionBlurIntensity = 0.2, FontFamily = "Arial", FontWeight = "Regular", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(100, 180, 255), MinimizeColor = Color3.fromRGB(100, 180, 255), ExitColor = Color3.fromRGB(70, 126, 179), Version = "2.0" }, Matrix = { Name = "Matrix", Background = Color3.fromRGB(0, 0, 0), Foreground = Color3.fromRGB(0, 255, 65), Surface = Color3.fromRGB(5, 5, 5), TextPrimary = Color3.fromRGB(0, 255, 65), TextSecondary = Color3.fromRGB(0, 200, 50), TextDisabled = Color3.fromRGB(0, 120, 30), AccentPrimary = Color3.fromRGB(0, 255, 65), AccentSecondary = Color3.fromRGB(0, 200, 50), AccentTertiary = Color3.fromRGB(100, 255, 150), SuccessColor = Color3.fromRGB(0, 255, 100), WarningColor = Color3.fromRGB(255, 255, 0), ErrorColor = Color3.fromRGB(255, 0, 0), InfoColor = Color3.fromRGB(0, 255, 255), ShadowColor = Color3.fromRGB(0, 100, 25), GlowColor = Color3.fromRGB(0, 255, 65), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 200, 50)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(0, 255, 65)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(100, 255, 150)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.75, ShadowTransparency = 0.5, GlowTransparency = 0.6, CornerRadius = 4, StrokeThickness = 1, ShadowSize = 20, GlowSize = 25, AnimationSpeed = 0.1, BlurIntensity = 20, ShadowOffset = Vector2.new(0, 3), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(0, 255, 65), HeaderTransparency = 0.1, SidebarColor = Color3.fromRGB(0, 0, 0), SidebarTransparency = 0.9, BorderColor = Color3.fromRGB(0, 255, 65), NotificationColor = Color3.fromRGB(2, 2, 2), StatusColor = Color3.fromRGB(2, 2, 2), DialogColor = Color3.fromRGB(3, 3, 3), ButtonColor = Color3.fromRGB(8, 8, 8), ToggleColor = Color3.fromRGB(20, 60, 20), TogglerHeadColor = Color3.fromRGB(0, 255, 65), SliderColor = Color3.fromRGB(20, 60, 20), SliderHeadColor = Color3.fromRGB(0, 255, 65), DropdownColor = Color3.fromRGB(5, 5, 5), InputFieldColor = Color3.fromRGB(0, 255, 65), InputValueBackground = 0.95, InputFieldTransparency = 0.2, ScrollbarColor = Color3.fromRGB(0, 255, 65), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(0, 255, 65), HoverColor = Color3.fromRGB(0, 255, 65), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(0, 200, 50), FocusColor = Color3.fromRGB(100, 255, 150), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.7, GradientEnabled = false, GradientRotation = 0, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(5, 5, 5)) }, NoiseEnabled = true, NoiseScale = 50, NoiseTransparency = 0.93, ParticlesEnabled = true, ParticleCount = 40, ParticleColor = Color3.fromRGB(0, 255, 65), MotionBlurEnabled = false, MotionBlurIntensity = 0.8, FontFamily = "Courier New", FontWeight = "Bold", FontSize = 13, LineHeight = 1.2, LetterSpacing = 1, AntiAliasing = false, SubPixelRendering = false, DynamicTypeScaling = false, HighContrastMode = true, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(0, 255, 65), MinimizeColor = Color3.fromRGB(0, 255, 65), ExitColor = Color3.fromRGB(0, 179, 45), Version = "2.0" }, Pastel = { Name = "Pastel", Background = Color3.fromRGB(252, 250, 255), Foreground = Color3.fromRGB(80, 70, 90), Surface = Color3.fromRGB(248, 245, 252), TextPrimary = Color3.fromRGB(80, 70, 90), TextSecondary = Color3.fromRGB(120, 110, 130), TextDisabled = Color3.fromRGB(160, 150, 170), AccentPrimary = Color3.fromRGB(200, 150, 255), AccentSecondary = Color3.fromRGB(150, 200, 255), AccentTertiary = Color3.fromRGB(255, 200, 200), SuccessColor = Color3.fromRGB(150, 255, 180), WarningColor = Color3.fromRGB(255, 220, 150), ErrorColor = Color3.fromRGB(255, 170, 170), InfoColor = Color3.fromRGB(170, 200, 255), ShadowColor = Color3.fromRGB(200, 180, 220), GlowColor = Color3.fromRGB(200, 150, 255), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(150, 200, 255)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(200, 150, 255)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 200, 200)), ColorSequenceKeypoint.new(1, Color3.fromRGB(80, 70, 90)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.08, StrokeTransparency = 0.75, ShadowTransparency = 0.85, GlowTransparency = 0.9, CornerRadius = 20, StrokeThickness = 1, ShadowSize = 12, GlowSize = 10, AnimationSpeed = 0.4, BlurIntensity = 25, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(200, 150, 255), HeaderTransparency = 0.2, SidebarColor = Color3.fromRGB(248, 245, 252), SidebarTransparency = 0.4, BorderColor = Color3.fromRGB(220, 200, 240), NotificationColor = Color3.fromRGB(250, 248, 254), StatusColor = Color3.fromRGB(250, 248, 254), DialogColor = Color3.fromRGB(254, 252, 255), ButtonColor = Color3.fromRGB(245, 240, 250), ToggleColor = Color3.fromRGB(220, 200, 240), TogglerHeadColor = Color3.fromRGB(80, 70, 90), SliderColor = Color3.fromRGB(220, 200, 240), SliderHeadColor = Color3.fromRGB(200, 150, 255), DropdownColor = Color3.fromRGB(250, 245, 255), InputFieldColor = Color3.fromRGB(80, 70, 90), InputValueBackground = 0.95, InputFieldTransparency = 0.85, ScrollbarColor = Color3.fromRGB(180, 160, 200), ScrollbarTransparency = 0.65, SelectionColor = Color3.fromRGB(200, 150, 255), HoverColor = Color3.fromRGB(150, 200, 255), HoverTransparency = 0.8, ActiveColor = Color3.fromRGB(150, 200, 255), FocusColor = Color3.fromRGB(255, 200, 200), DisabledOverlay = Color3.fromRGB(240, 230, 250), DisabledTransparency = 0.75, GradientEnabled = true, GradientRotation = 60, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(252, 250, 255)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(250, 245, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(248, 245, 252)) }, NoiseEnabled = false, NoiseScale = 40, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 8, ParticleColor = Color3.fromRGB(200, 150, 255), MotionBlurEnabled = false, MotionBlurIntensity = 0.2, FontFamily = "Comic Sans MS", FontWeight = "Regular", FontSize = 14, LineHeight = 1.6, LetterSpacing = 0.3, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(200, 150, 255), MinimizeColor = Color3.fromRGB(200, 150, 255), ExitColor = Color3.fromRGB(140, 105, 179), Version = "2.0" }, Corporate = { Name = "Corporate", Background = Color3.fromRGB(248, 250, 252), Foreground = Color3.fromRGB(15, 23, 42), Surface = Color3.fromRGB(255, 255, 255), TextPrimary = Color3.fromRGB(15, 23, 42), TextSecondary = Color3.fromRGB(71, 85, 105), TextDisabled = Color3.fromRGB(148, 163, 184), AccentPrimary = Color3.fromRGB(59, 130, 246), AccentSecondary = Color3.fromRGB(37, 99, 235), AccentTertiary = Color3.fromRGB(147, 197, 253), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 191, 36), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(15, 23, 42), GlowColor = Color3.fromRGB(59, 130, 246), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(37, 99, 235)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(59, 130, 246)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(147, 197, 253)), ColorSequenceKeypoint.new(1, Color3.fromRGB(248, 250, 252)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.85, ShadowTransparency = 0.9, GlowTransparency = 0.85, CornerRadius = 8, StrokeThickness = 1, ShadowSize = 12, GlowSize = 8, AnimationSpeed = 0.25, BlurIntensity = 20, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(59, 130, 246), HeaderTransparency = 0.05, SidebarColor = Color3.fromRGB(248, 250, 252), SidebarTransparency = 0.1, BorderColor = Color3.fromRGB(226, 232, 240), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(248, 250, 252), ToggleColor = Color3.fromRGB(203, 213, 225), TogglerHeadColor = Color3.fromRGB(59, 130, 246), SliderColor = Color3.fromRGB(203, 213, 225), SliderHeadColor = Color3.fromRGB(59, 130, 246), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(15, 23, 42), InputValueBackground = 0.95, InputFieldTransparency = 0.95, ScrollbarColor = Color3.fromRGB(148, 163, 184), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(59, 130, 246), HoverColor = Color3.fromRGB(59, 130, 246), HoverTransparency = 0.95, ActiveColor = Color3.fromRGB(37, 99, 235), FocusColor = Color3.fromRGB(147, 197, 253), DisabledOverlay = Color3.fromRGB(248, 250, 252), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 135, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(248, 250, 252)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }, NoiseEnabled = false, NoiseScale = 50, NoiseTransparency = 0.98, ParticlesEnabled = false, ParticleCount = 5, ParticleColor = Color3.fromRGB(59, 130, 246), MotionBlurEnabled = false, MotionBlurIntensity = 0.2, FontFamily = "Inter", FontWeight = "Medium", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(59, 130, 246), MinimizeColor = Color3.fromRGB(59, 130, 246), ExitColor = Color3.fromRGB(37, 99, 235), Version = "2.0" }, Executive = { Name = "Executive", Background = Color3.fromRGB(20, 20, 22), Foreground = Color3.fromRGB(250, 204, 21), Surface = Color3.fromRGB(30, 30, 35), TextPrimary = Color3.fromRGB(255, 255, 255), TextSecondary = Color3.fromRGB(212, 212, 216), TextDisabled = Color3.fromRGB(115, 115, 115), AccentPrimary = Color3.fromRGB(250, 204, 21), AccentSecondary = Color3.fromRGB(234, 179, 8), AccentTertiary = Color3.fromRGB(253, 224, 71), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 146, 60), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(250, 204, 21), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(234, 179, 8)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(250, 204, 21)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(253, 224, 71)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.03 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.88, ShadowTransparency = 0.2, GlowTransparency = 0.75, CornerRadius = 6, StrokeThickness = 1, ShadowSize = 25, GlowSize = 18, AnimationSpeed = 0.2, BlurIntensity = 40, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.8, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(250, 204, 21), HeaderTransparency = 0.1, SidebarColor = Color3.fromRGB(15, 15, 18), SidebarTransparency = 0.6, BorderColor = Color3.fromRGB(250, 204, 21), NotificationColor = Color3.fromRGB(25, 25, 28), StatusColor = Color3.fromRGB(25, 25, 28), DialogColor = Color3.fromRGB(35, 35, 40), ButtonColor = Color3.fromRGB(40, 40, 45), ToggleColor = Color3.fromRGB(75, 75, 80), TogglerHeadColor = Color3.fromRGB(250, 204, 21), SliderColor = Color3.fromRGB(75, 75, 80), SliderHeadColor = Color3.fromRGB(250, 204, 21), DropdownColor = Color3.fromRGB(35, 35, 40), InputFieldColor = Color3.fromRGB(255, 255, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.3, ScrollbarColor = Color3.fromRGB(250, 204, 21), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(250, 204, 21), HoverColor = Color3.fromRGB(253, 224, 71), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(234, 179, 8), FocusColor = Color3.fromRGB(253, 224, 71), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(20, 20, 22)), ColorSequenceKeypoint.new(1, Color3.fromRGB(35, 35, 40)) }, NoiseEnabled = false, NoiseScale = 80, NoiseTransparency = 0.96, ParticlesEnabled = false, ParticleCount = 12, ParticleColor = Color3.fromRGB(250, 204, 21), MotionBlurEnabled = false, MotionBlurIntensity = 0.3, FontFamily = "Playfair Display", FontWeight = "Medium", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0.5, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(250, 204, 21), MinimizeColor = Color3.fromRGB(250, 204, 21), ExitColor = Color3.fromRGB(234, 179, 8), Version = "2.0" }, Platinum = { Name = "Platinum Elegance", Background = Color3.fromRGB(247, 248, 250), Foreground = Color3.fromRGB(28, 31, 35), Surface = Color3.fromRGB(253, 254, 255), TextPrimary = Color3.fromRGB(28, 31, 35), TextSecondary = Color3.fromRGB(87, 96, 106), TextDisabled = Color3.fromRGB(149, 157, 165), AccentPrimary = Color3.fromRGB(106, 115, 125), AccentSecondary = Color3.fromRGB(87, 96, 106), AccentTertiary = Color3.fromRGB(149, 157, 165), SuccessColor = Color3.fromRGB(40, 167, 69), WarningColor = Color3.fromRGB(255, 193, 7), ErrorColor = Color3.fromRGB(220, 53, 69), InfoColor = Color3.fromRGB(23, 162, 184), ShadowColor = Color3.fromRGB(87, 96, 106), GlowColor = Color3.fromRGB(106, 115, 125), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(87, 96, 106)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(106, 115, 125)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(149, 157, 165)), ColorSequenceKeypoint.new(1, Color3.fromRGB(253, 254, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.01, StrokeTransparency = 0.8, ShadowTransparency = 0.85, GlowTransparency = 0.9, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 8, GlowSize = 6, AnimationSpeed = 0.3, BlurIntensity = 15, ShadowOffset = Vector2.new(0, 1), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(106, 115, 125), HeaderTransparency = 0.05, SidebarColor = Color3.fromRGB(247, 248, 250), SidebarTransparency = 0.2, BorderColor = Color3.fromRGB(208, 215, 222), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(250, 251, 252), ToggleColor = Color3.fromRGB(208, 215, 222), TogglerHeadColor = Color3.fromRGB(106, 115, 125), SliderColor = Color3.fromRGB(208, 215, 222), SliderHeadColor = Color3.fromRGB(106, 115, 125), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(28, 31, 35), InputValueBackground = 0.95, InputFieldTransparency = 0.97, ScrollbarColor = Color3.fromRGB(149, 157, 165), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(106, 115, 125), HoverColor = Color3.fromRGB(87, 96, 106), HoverTransparency = 0.93, ActiveColor = Color3.fromRGB(87, 96, 106), FocusColor = Color3.fromRGB(149, 157, 165), DisabledOverlay = Color3.fromRGB(247, 248, 250), DisabledTransparency = 0.7, GradientEnabled = true, GradientRotation = 180, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(247, 248, 250)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }, NoiseEnabled = false, NoiseScale = 60, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 3, ParticleColor = Color3.fromRGB(106, 115, 125), MotionBlurEnabled = false, MotionBlurIntensity = 0.1, FontFamily = "Georgia", FontWeight = "Regular", FontSize = 14, LineHeight = 1.6, LetterSpacing = 0.2, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(106, 115, 125), MinimizeColor = Color3.fromRGB(106, 115, 125), ExitColor = Color3.fromRGB(87, 96, 106), Version = "2.0" }, Crimson = { Name = "Crimson Power", Background = Color3.fromRGB(12, 4, 8), Foreground = Color3.fromRGB(255, 240, 245), Surface = Color3.fromRGB(25, 8, 15), TextPrimary = Color3.fromRGB(255, 240, 245), TextSecondary = Color3.fromRGB(220, 190, 205), TextDisabled = Color3.fromRGB(140, 120, 130), AccentPrimary = Color3.fromRGB(220, 38, 127), AccentSecondary = Color3.fromRGB(190, 18, 60), AccentTertiary = Color3.fromRGB(244, 114, 182), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 191, 36), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(168, 85, 247), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(220, 38, 127), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(190, 18, 60)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(220, 38, 127)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(244, 114, 182)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 240, 245)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.04 or 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.82, ShadowTransparency = 0.15, GlowTransparency = 0.65, CornerRadius = 10, StrokeThickness = 2, ShadowSize = 30, GlowSize = 25, AnimationSpeed = 0.18, BlurIntensity = 45, ShadowOffset = Vector2.new(0, 6), WallpaperEnabled = true, WallpaperTransparency = 0.75, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(220, 38, 127), HeaderTransparency = 0.15, SidebarColor = Color3.fromRGB(8, 2, 5), SidebarTransparency = 0.6, BorderColor = Color3.fromRGB(220, 38, 127), NotificationColor = Color3.fromRGB(18, 6, 12), StatusColor = Color3.fromRGB(18, 6, 12), DialogColor = Color3.fromRGB(30, 10, 18), ButtonColor = Color3.fromRGB(35, 15, 25), ToggleColor = Color3.fromRGB(80, 40, 60), TogglerHeadColor = Color3.fromRGB(220, 38, 127), SliderColor = Color3.fromRGB(80, 40, 60), SliderHeadColor = Color3.fromRGB(244, 114, 182), DropdownColor = Color3.fromRGB(30, 12, 20), InputFieldColor = Color3.fromRGB(255, 240, 245), InputValueBackground = 0.95, InputFieldTransparency = 0.25, ScrollbarColor = Color3.fromRGB(220, 38, 127), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(220, 38, 127), HoverColor = Color3.fromRGB(244, 114, 182), HoverTransparency = 0.85, ActiveColor = Color3.fromRGB(190, 18, 60), FocusColor = Color3.fromRGB(244, 114, 182), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 315, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(12, 4, 8)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(25, 8, 15)), ColorSequenceKeypoint.new(1, Color3.fromRGB(40, 15, 25)) }, NoiseEnabled = true, NoiseScale = 70, NoiseTransparency = 0.94, ParticlesEnabled = true, ParticleCount = 25, ParticleColor = Color3.fromRGB(220, 38, 127), MotionBlurEnabled = false, MotionBlurIntensity = 0.4, FontFamily = "Roboto", FontWeight = "Bold", FontSize = 14, LineHeight = 1.3, LetterSpacing = 0.3, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(220, 38, 127), MinimizeColor = Color3.fromRGB(220, 38, 127), ExitColor = Color3.fromRGB(190, 18, 60), Version = "2.0" }, Monochrome = { Name = "Monochrome", Background = Color3.fromRGB(255, 255, 255), Foreground = Color3.fromRGB(0, 0, 0), Surface = Color3.fromRGB(250, 250, 250), TextPrimary = Color3.fromRGB(0, 0, 0), TextSecondary = Color3.fromRGB(64, 64, 64), TextDisabled = Color3.fromRGB(128, 128, 128), AccentPrimary = Color3.fromRGB(32, 32, 32), AccentSecondary = Color3.fromRGB(64, 64, 64), AccentTertiary = Color3.fromRGB(96, 96, 96), SuccessColor = Color3.fromRGB(80, 80, 80), WarningColor = Color3.fromRGB(112, 112, 112), ErrorColor = Color3.fromRGB(48, 48, 48), InfoColor = Color3.fromRGB(64, 64, 64), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(32, 32, 32), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 0, 0)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(32, 32, 32)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(64, 64, 64)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.7, ShadowTransparency = 0.95, GlowTransparency = 0.98, CornerRadius = 2, StrokeThickness = 1, ShadowSize = 4, GlowSize = 2, AnimationSpeed = 0.15, BlurIntensity = 5, ShadowOffset = Vector2.new(0, 1), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(32, 32, 32), HeaderTransparency = 0.02, SidebarColor = Color3.fromRGB(250, 250, 250), SidebarTransparency = 0.1, BorderColor = Color3.fromRGB(192, 192, 192), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(245, 245, 245), ToggleColor = Color3.fromRGB(224, 224, 224), TogglerHeadColor = Color3.fromRGB(32, 32, 32), SliderColor = Color3.fromRGB(224, 224, 224), SliderHeadColor = Color3.fromRGB(32, 32, 32), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(0, 0, 0), InputValueBackground = 0.95, InputFieldTransparency = 0.98, ScrollbarColor = Color3.fromRGB(128, 128, 128), ScrollbarTransparency = 0.8, SelectionColor = Color3.fromRGB(32, 32, 32), HoverColor = Color3.fromRGB(0, 0, 0), HoverTransparency = 0.95, ActiveColor = Color3.fromRGB(0, 0, 0), FocusColor = Color3.fromRGB(64, 64, 64), DisabledOverlay = Color3.fromRGB(240, 240, 240), DisabledTransparency = 0.8, GradientEnabled = false, GradientRotation = 0, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(250, 250, 250)) }, NoiseEnabled = false, NoiseScale = 100, NoiseTransparency = 1, ParticlesEnabled = false, ParticleCount = 0, ParticleColor = Color3.fromRGB(32, 32, 32), MotionBlurEnabled = false, MotionBlurIntensity = 0, FontFamily = "Helvetica", FontWeight = "Regular", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = true, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(32, 32, 32), MinimizeColor = Color3.fromRGB(32, 32, 32), ExitColor = Color3.fromRGB(0, 0, 0), Version = "2.0" }, Emerald = { Name = "Emerald", Background = Color3.fromRGB(6, 20, 14), Foreground = Color3.fromRGB(240, 253, 244), Surface = Color3.fromRGB(15, 35, 25), TextPrimary = Color3.fromRGB(240, 253, 244), TextSecondary = Color3.fromRGB(187, 247, 208), TextDisabled = Color3.fromRGB(134, 239, 172), AccentPrimary = Color3.fromRGB(16, 185, 129), AccentSecondary = Color3.fromRGB(5, 150, 105), AccentTertiary = Color3.fromRGB(52, 211, 153), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(16, 185, 129), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(5, 150, 105)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(16, 185, 129)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(52, 211, 153)), ColorSequenceKeypoint.new(1, Color3.fromRGB(240, 253, 244)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.06 or 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.85, ShadowTransparency = 0.25, GlowTransparency = 0.7, CornerRadius = 14, StrokeThickness = 1, ShadowSize = 22, GlowSize = 20, AnimationSpeed = 0.25, BlurIntensity = 55, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.7, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(16, 185, 129), HeaderTransparency = 0.2, SidebarColor = Color3.fromRGB(4, 15, 10), SidebarTransparency = 0.65, BorderColor = Color3.fromRGB(16, 185, 129), NotificationColor = Color3.fromRGB(10, 25, 18), StatusColor = Color3.fromRGB(10, 25, 18), DialogColor = Color3.fromRGB(18, 40, 30), ButtonColor = Color3.fromRGB(25, 50, 38), ToggleColor = Color3.fromRGB(60, 100, 80), TogglerHeadColor = Color3.fromRGB(240, 253, 244), SliderColor = Color3.fromRGB(60, 100, 80), SliderHeadColor = Color3.fromRGB(16, 185, 129), DropdownColor = Color3.fromRGB(20, 45, 32), InputFieldColor = Color3.fromRGB(240, 253, 244), InputValueBackground = 0.95, InputFieldTransparency = 0.35, ScrollbarColor = Color3.fromRGB(16, 185, 129), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(16, 185, 129), HoverColor = Color3.fromRGB(52, 211, 153), HoverTransparency = 0.88, ActiveColor = Color3.fromRGB(5, 150, 105), FocusColor = Color3.fromRGB(52, 211, 153), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.55, GradientEnabled = true, GradientRotation = 225, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(6, 20, 14)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(15, 35, 25)), ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 55, 40)) }, NoiseEnabled = true, NoiseScale = 90, NoiseTransparency = 0.95, ParticlesEnabled = true, ParticleCount = 18, ParticleColor = Color3.fromRGB(16, 185, 129), MotionBlurEnabled = false, MotionBlurIntensity = 0.35, FontFamily = "Montserrat", FontWeight = "SemiBold", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0.4, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(16, 185, 129), MinimizeColor = Color3.fromRGB(16, 185, 129), ExitColor = Color3.fromRGB(5, 150, 105), Version = "2.0" }, Royal = { Name = "Royal Purple", Background = Color3.fromRGB(16, 8, 35), Foreground = Color3.fromRGB(250, 245, 255), Surface = Color3.fromRGB(30, 18, 55), TextPrimary = Color3.fromRGB(250, 245, 255), TextSecondary = Color3.fromRGB(221, 214, 254), TextDisabled = Color3.fromRGB(196, 181, 253), AccentPrimary = Color3.fromRGB(147, 51, 234), AccentSecondary = Color3.fromRGB(124, 58, 237), AccentTertiary = Color3.fromRGB(168, 85, 247), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 191, 36), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(147, 51, 234), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(124, 58, 237)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(147, 51, 234)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(168, 85, 247)), ColorSequenceKeypoint.new(1, Color3.fromRGB(250, 245, 255)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.05 or 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.86, ShadowTransparency = 0.2, GlowTransparency = 0.72, CornerRadius = 16, StrokeThickness = 1, ShadowSize = 28, GlowSize = 22, AnimationSpeed = 0.22, BlurIntensity = 60, ShadowOffset = Vector2.new(0, 5), WallpaperEnabled = true, WallpaperTransparency = 0.72, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(147, 51, 234), HeaderTransparency = 0.18, SidebarColor = Color3.fromRGB(10, 5, 25), SidebarTransparency = 0.68, BorderColor = Color3.fromRGB(147, 51, 234), NotificationColor = Color3.fromRGB(20, 12, 40), StatusColor = Color3.fromRGB(20, 12, 40), DialogColor = Color3.fromRGB(35, 22, 60), ButtonColor = Color3.fromRGB(45, 28, 75), ToggleColor = Color3.fromRGB(80, 50, 120), TogglerHeadColor = Color3.fromRGB(250, 245, 255), SliderColor = Color3.fromRGB(80, 50, 120), SliderHeadColor = Color3.fromRGB(147, 51, 234), DropdownColor = Color3.fromRGB(38, 25, 65), InputFieldColor = Color3.fromRGB(250, 245, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.32, ScrollbarColor = Color3.fromRGB(147, 51, 234), ScrollbarTransparency = 0.73, SelectionColor = Color3.fromRGB(147, 51, 234), HoverColor = Color3.fromRGB(168, 85, 247), HoverTransparency = 0.87, ActiveColor = Color3.fromRGB(124, 58, 237), FocusColor = Color3.fromRGB(168, 85, 247), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.58, GradientEnabled = true, GradientRotation = 210, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(16, 8, 35)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(30, 18, 55)), ColorSequenceKeypoint.new(1, Color3.fromRGB(50, 30, 85)) }, NoiseEnabled = true, NoiseScale = 85, NoiseTransparency = 0.94, ParticlesEnabled = true, ParticleCount = 22, ParticleColor = Color3.fromRGB(147, 51, 234), MotionBlurEnabled = false, MotionBlurIntensity = 0.38, FontFamily = "Times New Roman", FontWeight = "Medium", FontSize = 14, LineHeight = 1.45, LetterSpacing = 0.3, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(147, 51, 234), MinimizeColor = Color3.fromRGB(147, 51, 234), ExitColor = Color3.fromRGB(124, 58, 237), Version = "2.0" }, Titanium = { Name = "Titanium", Background = Color3.fromRGB(45, 52, 58), Foreground = Color3.fromRGB(248, 250, 252), Surface = Color3.fromRGB(55, 65, 75), TextPrimary = Color3.fromRGB(248, 250, 252), TextSecondary = Color3.fromRGB(203, 213, 225), TextDisabled = Color3.fromRGB(148, 163, 184), AccentPrimary = Color3.fromRGB(100, 116, 139), AccentSecondary = Color3.fromRGB(71, 85, 105), AccentTertiary = Color3.fromRGB(148, 163, 184), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 191, 36), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(100, 116, 139), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(71, 85, 105)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(100, 116, 139)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(148, 163, 184)), ColorSequenceKeypoint.new(1, Color3.fromRGB(248, 250, 252)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.04 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.88, ShadowTransparency = 0.3, GlowTransparency = 0.8, CornerRadius = 8, StrokeThickness = 1, ShadowSize = 18, GlowSize = 12, AnimationSpeed = 0.2, BlurIntensity = 35, ShadowOffset = Vector2.new(0, 3), WallpaperEnabled = true, WallpaperTransparency = 0.8, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(100, 116, 139), HeaderTransparency = 0.15, SidebarColor = Color3.fromRGB(35, 42, 48), SidebarTransparency = 0.7, BorderColor = Color3.fromRGB(100, 116, 139), NotificationColor = Color3.fromRGB(50, 58, 65), StatusColor = Color3.fromRGB(50, 58, 65), DialogColor = Color3.fromRGB(60, 70, 80), ButtonColor = Color3.fromRGB(65, 75, 85), ToggleColor = Color3.fromRGB(90, 105, 120), TogglerHeadColor = Color3.fromRGB(248, 250, 252), SliderColor = Color3.fromRGB(90, 105, 120), SliderHeadColor = Color3.fromRGB(100, 116, 139), DropdownColor = Color3.fromRGB(60, 70, 80), InputFieldColor = Color3.fromRGB(248, 250, 252), InputValueBackground = 0.95, InputFieldTransparency = 0.4, ScrollbarColor = Color3.fromRGB(100, 116, 139), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(100, 116, 139), HoverColor = Color3.fromRGB(148, 163, 184), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(71, 85, 105), FocusColor = Color3.fromRGB(148, 163, 184), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 90, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(45, 52, 58)), ColorSequenceKeypoint.new(1, Color3.fromRGB(60, 70, 80)) }, NoiseEnabled = false, NoiseScale = 75, NoiseTransparency = 0.97, ParticlesEnabled = false, ParticleCount = 8, ParticleColor = Color3.fromRGB(100, 116, 139), MotionBlurEnabled = false, MotionBlurIntensity = 0.25, FontFamily = "Segoe UI", FontWeight = "Medium", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(100, 116, 139), MinimizeColor = Color3.fromRGB(100, 116, 139), ExitColor = Color3.fromRGB(71, 85, 105), Version = "2.0" }, Amber = { Name = "Amber", Background = Color3.fromRGB(251, 248, 244), Foreground = Color3.fromRGB(69, 26, 3), Surface = Color3.fromRGB(255, 252, 249), TextPrimary = Color3.fromRGB(69, 26, 3), TextSecondary = Color3.fromRGB(120, 53, 15), TextDisabled = Color3.fromRGB(180, 83, 9), AccentPrimary = Color3.fromRGB(217, 119, 6), AccentSecondary = Color3.fromRGB(180, 83, 9), AccentTertiary = Color3.fromRGB(251, 146, 60), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(217, 119, 6), GlowColor = Color3.fromRGB(217, 119, 6), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(180, 83, 9)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(217, 119, 6)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(251, 146, 60)), ColorSequenceKeypoint.new(1, Color3.fromRGB(69, 26, 3)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.8, ShadowTransparency = 0.0, GlowTransparency = 0.9, CornerRadius = 10, StrokeThickness = 1, ShadowSize = 10, GlowSize = 8, AnimationSpeed = 0.28, BlurIntensity = 18, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(217, 119, 6), HeaderTransparency = 0.08, SidebarColor = Color3.fromRGB(251, 248, 244), SidebarTransparency = 0.15, BorderColor = Color3.fromRGB(254, 215, 170), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(254, 243, 199), ToggleColor = Color3.fromRGB(254, 215, 170), TogglerHeadColor = Color3.fromRGB(217, 119, 6), SliderColor = Color3.fromRGB(254, 215, 170), SliderHeadColor = Color3.fromRGB(217, 119, 6), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(69, 26, 3), InputValueBackground = 0.95, InputFieldTransparency = 0.95, ScrollbarColor = Color3.fromRGB(180, 83, 9), ScrollbarTransparency = 0.72, SelectionColor = Color3.fromRGB(217, 119, 6), HoverColor = Color3.fromRGB(180, 83, 9), HoverTransparency = 0.92, ActiveColor = Color3.fromRGB(180, 83, 9), FocusColor = Color3.fromRGB(251, 146, 60), DisabledOverlay = Color3.fromRGB(251, 248, 244), DisabledTransparency = 0.65, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(251, 248, 244)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 252, 249)) }, NoiseEnabled = false, NoiseScale = 65, NoiseTransparency = 0.98, ParticlesEnabled = false, ParticleCount = 6, ParticleColor = Color3.fromRGB(217, 119, 6), MotionBlurEnabled = false, MotionBlurIntensity = 0.15, FontFamily = "Libre Baskerville", FontWeight = "Regular", FontSize = 14, LineHeight = 1.55, LetterSpacing = 0.2, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(217, 119, 6), MinimizeColor = Color3.fromRGB(217, 119, 6), ExitColor = Color3.fromRGB(180, 83, 9), Version = "2.0" }, Cobalt = { Name = "Cobalt", Background = Color3.fromRGB(8, 15, 30), Foreground = Color3.fromRGB(230, 240, 255), Surface = Color3.fromRGB(18, 28, 48), TextPrimary = Color3.fromRGB(230, 240, 255), TextSecondary = Color3.fromRGB(185, 210, 245), TextDisabled = Color3.fromRGB(130, 165, 210), AccentPrimary = Color3.fromRGB(59, 130, 246), AccentSecondary = Color3.fromRGB(29, 78, 216), AccentTertiary = Color3.fromRGB(96, 165, 250), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(251, 191, 36), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(59, 130, 246), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(29, 78, 216)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(59, 130, 246)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(96, 165, 250)), ColorSequenceKeypoint.new(1, Color3.fromRGB(230, 240, 255)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.07 or 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.84, ShadowTransparency = 0, GlowTransparency = 0.68, CornerRadius = 12, StrokeThickness = 2, ShadowSize = 26, GlowSize = 24, AnimationSpeed = 0.2, BlurIntensity = 50, ShadowOffset = Vector2.new(0, 5), WallpaperEnabled = true, WallpaperTransparency = 0.78, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(59, 130, 246), HeaderTransparency = 0.12, SidebarColor = Color3.fromRGB(5, 10, 22), SidebarTransparency = 0.65, BorderColor = Color3.fromRGB(59, 130, 246), NotificationColor = Color3.fromRGB(12, 22, 40), StatusColor = Color3.fromRGB(12, 22, 40), DialogColor = Color3.fromRGB(22, 35, 58), ButtonColor = Color3.fromRGB(28, 42, 68), ToggleColor = Color3.fromRGB(55, 85, 125), TogglerHeadColor = Color3.fromRGB(230, 240, 255), SliderColor = Color3.fromRGB(55, 85, 125), SliderHeadColor = Color3.fromRGB(59, 130, 246), DropdownColor = Color3.fromRGB(25, 38, 62), InputFieldColor = Color3.fromRGB(230, 240, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.28, ScrollbarColor = Color3.fromRGB(59, 130, 246), ScrollbarTransparency = 0.74, SelectionColor = Color3.fromRGB(59, 130, 246), HoverColor = Color3.fromRGB(96, 165, 250), HoverTransparency = 0.86, ActiveColor = Color3.fromRGB(29, 78, 216), FocusColor = Color3.fromRGB(96, 165, 250), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 135, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(8, 15, 30)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(18, 28, 48)), ColorSequenceKeypoint.new(1, Color3.fromRGB(30, 45, 75)) }, NoiseEnabled = true, NoiseScale = 80, NoiseTransparency = 0.93, ParticlesEnabled = true, ParticleCount = 20, ParticleColor = Color3.fromRGB(59, 130, 246), MotionBlurEnabled = false, MotionBlurIntensity = 0.4, FontFamily = "Source Code Pro", FontWeight = "Medium", FontSize = 14, LineHeight = 1.35, LetterSpacing = 0.2, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(59, 130, 246), MinimizeColor = Color3.fromRGB(59, 130, 246), ExitColor = Color3.fromRGB(29, 78, 216), Version = "2.0" }, Lightning = { Name = "Lightning Strike", Background = Color3.fromRGB(15, 20, 35), Foreground = Color3.fromRGB(255, 255, 120), Surface = Color3.fromRGB(25, 35, 55), TextPrimary = Color3.fromRGB(255, 255, 120), TextSecondary = Color3.fromRGB(200, 200, 80), TextDisabled = Color3.fromRGB(140, 140, 60), AccentPrimary = Color3.fromRGB(255, 215, 0), AccentSecondary = Color3.fromRGB(255, 165, 0), AccentTertiary = Color3.fromRGB(255, 255, 200), SuccessColor = Color3.fromRGB(144, 238, 144), WarningColor = Color3.fromRGB(255, 140, 0), ErrorColor = Color3.fromRGB(255, 69, 0), InfoColor = Color3.fromRGB(135, 206, 250), ShadowColor = Color3.fromRGB(255, 215, 0), GlowColor = Color3.fromRGB(255, 255, 0), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 165, 0)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(255, 215, 0)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 255, 200)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 120)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.05 or 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.6, ShadowTransparency = 0.1, GlowTransparency = 0.5, CornerRadius = 8, StrokeThickness = 2, ShadowSize = 30, GlowSize = 35, AnimationSpeed = 0.08, BlurIntensity = 40, ShadowOffset = Vector2.new(0, 6), WallpaperEnabled = true, WallpaperTransparency = 0.8, WallpaperBlending = "Screen", HeaderColor = Color3.fromRGB(255, 215, 0), HeaderTransparency = 0.1, SidebarColor = Color3.fromRGB(10, 15, 25), SidebarTransparency = 0.6, BorderColor = Color3.fromRGB(255, 255, 0), NotificationColor = Color3.fromRGB(20, 25, 40), StatusColor = Color3.fromRGB(20, 25, 40), DialogColor = Color3.fromRGB(30, 40, 60), ButtonColor = Color3.fromRGB(35, 50, 70), ToggleColor = Color3.fromRGB(70, 90, 120), TogglerHeadColor = Color3.fromRGB(255, 215, 0), SliderColor = Color3.fromRGB(70, 90, 120), SliderHeadColor = Color3.fromRGB(255, 255, 0), DropdownColor = Color3.fromRGB(30, 45, 65), InputFieldColor = Color3.fromRGB(255, 255, 120), InputValueBackground = 0.95, InputFieldTransparency = 0.2, ScrollbarColor = Color3.fromRGB(255, 215, 0), ScrollbarTransparency = 0.65, SelectionColor = Color3.fromRGB(255, 215, 0), HoverColor = Color3.fromRGB(255, 255, 0), HoverTransparency = 0.8, ActiveColor = Color3.fromRGB(255, 165, 0), FocusColor = Color3.fromRGB(255, 255, 200), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.7, GradientEnabled = true, GradientRotation = 90, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(15, 20, 35)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(25, 35, 55)), ColorSequenceKeypoint.new(1, Color3.fromRGB(40, 55, 80)) }, NoiseEnabled = true, NoiseScale = 35, NoiseTransparency = 0.85, ParticlesEnabled = true, ParticleCount = 45, ParticleColor = Color3.fromRGB(255, 255, 0), MotionBlurEnabled = true, MotionBlurIntensity = 0.6, FontFamily = "Impact", FontWeight = "Bold", FontSize = 14, LineHeight = 1.1, LetterSpacing = 0.8, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = true, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 215, 0), MinimizeColor = Color3.fromRGB(255, 215, 0), ExitColor = Color3.fromRGB(255, 165, 0), Version = "2.0" }, Coral = { Name = "Coral Reef", Background = Color3.fromRGB(255, 250, 250), Foreground = Color3.fromRGB(120, 53, 15), Surface = Color3.fromRGB(255, 245, 238), TextPrimary = Color3.fromRGB(120, 53, 15), TextSecondary = Color3.fromRGB(244, 63, 94), TextDisabled = Color3.fromRGB(251, 113, 133), AccentPrimary = Color3.fromRGB(244, 63, 94), AccentSecondary = Color3.fromRGB(225, 29, 72), AccentTertiary = Color3.fromRGB(251, 113, 133), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(244, 63, 94), GlowColor = Color3.fromRGB(251, 113, 133), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(225, 29, 72)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(244, 63, 94)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(251, 113, 133)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 245, 238)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.8, ShadowTransparency = 0.92, GlowTransparency = 0.9, CornerRadius = 20, StrokeThickness = 1, ShadowSize = 6, GlowSize = 8, AnimationSpeed = 0.3, BlurIntensity = 15, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(244, 63, 94), HeaderTransparency = 0.08, SidebarColor = Color3.fromRGB(255, 250, 250), SidebarTransparency = 0.15, BorderColor = Color3.fromRGB(252, 165, 165), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(254, 226, 226), ToggleColor = Color3.fromRGB(252, 165, 165), TogglerHeadColor = Color3.fromRGB(244, 63, 94), SliderColor = Color3.fromRGB(252, 165, 165), SliderHeadColor = Color3.fromRGB(244, 63, 94), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(120, 53, 15), InputValueBackground = 0.95, InputFieldTransparency = 0.9, ScrollbarColor = Color3.fromRGB(225, 29, 72), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(244, 63, 94), HoverColor = Color3.fromRGB(225, 29, 72), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(225, 29, 72), FocusColor = Color3.fromRGB(251, 113, 133), DisabledOverlay = Color3.fromRGB(255, 250, 250), DisabledTransparency = 0.75, GradientEnabled = true, GradientRotation = 45, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 250, 250)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 245, 238)), ColorSequenceKeypoint.new(1, Color3.fromRGB(254, 240, 238)) }, NoiseEnabled = false, NoiseScale = 50, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 10, ParticleColor = Color3.fromRGB(251, 113, 133), MotionBlurEnabled = false, MotionBlurIntensity = 0.15, FontFamily = "Quicksand", FontWeight = "Regular", FontSize = 14, LineHeight = 1.55, LetterSpacing = 0.3, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(244, 63, 94), MinimizeColor = Color3.fromRGB(244, 63, 94), ExitColor = Color3.fromRGB(225, 29, 72), Version = "2.0" }, Inferno = { Name = "Inferno", Background = Color3.fromRGB(35, 5, 0), Foreground = Color3.fromRGB(255, 180, 100), Surface = Color3.fromRGB(55, 15, 5), TextPrimary = Color3.fromRGB(255, 180, 100), TextSecondary = Color3.fromRGB(255, 100, 0), TextDisabled = Color3.fromRGB(200, 80, 40), AccentPrimary = Color3.fromRGB(255, 69, 0), AccentSecondary = Color3.fromRGB(220, 20, 60), AccentTertiary = Color3.fromRGB(255, 140, 0), SuccessColor = Color3.fromRGB(255, 165, 0), WarningColor = Color3.fromRGB(255, 215, 0), ErrorColor = Color3.fromRGB(220, 20, 60), InfoColor = Color3.fromRGB(255, 140, 0), ShadowColor = Color3.fromRGB(139, 0, 0), GlowColor = Color3.fromRGB(255, 69, 0), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(220, 20, 60)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(255, 69, 0)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 140, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 180, 100)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.03 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.7, ShadowTransparency = 0, GlowTransparency = 0.6, CornerRadius = 6, StrokeThickness = 2, ShadowSize = 35, GlowSize = 40, AnimationSpeed = 0.12, BlurIntensity = 45, ShadowOffset = Vector2.new(0, 7), WallpaperEnabled = true, WallpaperTransparency = 0.8, WallpaperBlending = "Screen", HeaderColor = Color3.fromRGB(255, 69, 0), HeaderTransparency = 0.1, SidebarColor = Color3.fromRGB(25, 3, 0), SidebarTransparency = 0.6, BorderColor = Color3.fromRGB(255, 69, 0), NotificationColor = Color3.fromRGB(40, 8, 2), StatusColor = Color3.fromRGB(40, 8, 2), DialogColor = Color3.fromRGB(50, 12, 5), ButtonColor = Color3.fromRGB(70, 20, 10), ToggleColor = Color3.fromRGB(120, 40, 20), TogglerHeadColor = Color3.fromRGB(255, 69, 0), SliderColor = Color3.fromRGB(120, 40, 20), SliderHeadColor = Color3.fromRGB(255, 140, 0), DropdownColor = Color3.fromRGB(60, 18, 8), InputFieldColor = Color3.fromRGB(255, 180, 100), InputValueBackground = 0.95, InputFieldTransparency = 0.25, ScrollbarColor = Color3.fromRGB(255, 69, 0), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(255, 69, 0), HoverColor = Color3.fromRGB(255, 140, 0), HoverTransparency = 0.8, ActiveColor = Color3.fromRGB(220, 20, 60), FocusColor = Color3.fromRGB(255, 140, 0), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.6, GradientEnabled = true, GradientRotation = 315, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(35, 5, 0)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(55, 15, 5)), ColorSequenceKeypoint.new(1, Color3.fromRGB(80, 25, 10)) }, NoiseEnabled = true, NoiseScale = 30, NoiseTransparency = 0.88, ParticlesEnabled = true, ParticleCount = 55, ParticleColor = Color3.fromRGB(255, 69, 0), MotionBlurEnabled = true, MotionBlurIntensity = 0.7, FontFamily = "Oswald", FontWeight = "Bold", FontSize = 14, LineHeight = 1.25, LetterSpacing = 0.6, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = true, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(255, 69, 0), MinimizeColor = Color3.fromRGB(255, 69, 0), ExitColor = Color3.fromRGB(220, 20, 60), Version = "2.0" }, Lavender = { Name = "Lavender Dreams", Background = Color3.fromRGB(248, 245, 255), Foreground = Color3.fromRGB(88, 28, 135), Surface = Color3.fromRGB(243, 232, 255), TextPrimary = Color3.fromRGB(88, 28, 135), TextSecondary = Color3.fromRGB(126, 34, 206), TextDisabled = Color3.fromRGB(196, 181, 253), AccentPrimary = Color3.fromRGB(147, 51, 234), AccentSecondary = Color3.fromRGB(126, 34, 206), AccentTertiary = Color3.fromRGB(196, 181, 253), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(168, 85, 247), ShadowColor = Color3.fromRGB(147, 51, 234), GlowColor = Color3.fromRGB(196, 181, 253), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(126, 34, 206)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(147, 51, 234)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(196, 181, 253)), ColorSequenceKeypoint.new(1, Color3.fromRGB(248, 245, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.05, StrokeTransparency = 0.82, ShadowTransparency = 0.9, GlowTransparency = 0.88, CornerRadius = 16, StrokeThickness = 1, ShadowSize = 8, GlowSize = 10, AnimationSpeed = 0.35, BlurIntensity = 12, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(147, 51, 234), HeaderTransparency = 0.06, SidebarColor = Color3.fromRGB(248, 245, 255), SidebarTransparency = 0.18, BorderColor = Color3.fromRGB(221, 214, 254), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(237, 233, 254), ToggleColor = Color3.fromRGB(221, 214, 254), TogglerHeadColor = Color3.fromRGB(147, 51, 234), SliderColor = Color3.fromRGB(221, 214, 254), SliderHeadColor = Color3.fromRGB(147, 51, 234), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(88, 28, 135), InputValueBackground = 0.95, InputFieldTransparency = 0.94, ScrollbarColor = Color3.fromRGB(126, 34, 206), ScrollbarTransparency = 0.72, SelectionColor = Color3.fromRGB(147, 51, 234), HoverColor = Color3.fromRGB(126, 34, 206), HoverTransparency = 0.91, ActiveColor = Color3.fromRGB(126, 34, 206), FocusColor = Color3.fromRGB(196, 181, 253), DisabledOverlay = Color3.fromRGB(248, 245, 255), DisabledTransparency = 0.72, GradientEnabled = true, GradientRotation = 120, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(248, 245, 255)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(243, 232, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(237, 233, 254)) }, NoiseEnabled = false, NoiseScale = 65, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 12, ParticleColor = Color3.fromRGB(196, 181, 253), MotionBlurEnabled = false, MotionBlurIntensity = 0.18, FontFamily = "Crimson Text", FontWeight = "Regular", FontSize = 14, LineHeight = 1.6, LetterSpacing = 0.25, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(147, 51, 234), MinimizeColor = Color3.fromRGB(147, 51, 234), ExitColor = Color3.fromRGB(126, 34, 206), Version = "2.0" }, Velvet = { Name = "Velvet Night", Background = Color3.fromRGB(25, 12, 35), Foreground = Color3.fromRGB(230, 200, 255), Surface = Color3.fromRGB(40, 22, 55), TextPrimary = Color3.fromRGB(230, 200, 255), TextSecondary = Color3.fromRGB(180, 140, 220), TextDisabled = Color3.fromRGB(130, 100, 170), AccentPrimary = Color3.fromRGB(160, 90, 220), AccentSecondary = Color3.fromRGB(120, 60, 180), AccentTertiary = Color3.fromRGB(200, 150, 255), SuccessColor = Color3.fromRGB(100, 200, 150), WarningColor = Color3.fromRGB(255, 180, 100), ErrorColor = Color3.fromRGB(255, 120, 150), InfoColor = Color3.fromRGB(150, 180, 255), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(160, 90, 220), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(120, 60, 180)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(160, 90, 220)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(200, 150, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(230, 200, 255)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.08 or 0, SurfaceTransparency = 0.05, StrokeTransparency = 0.8, ShadowTransparency = 0.3, GlowTransparency = 0.7, CornerRadius = 18, StrokeThickness = 1, ShadowSize = 20, GlowSize = 18, AnimationSpeed = 0.28, BlurIntensity = 55, ShadowOffset = Vector2.new(0, 4), WallpaperEnabled = true, WallpaperTransparency = 0.7, WallpaperBlending = "Overlay", HeaderColor = Color3.fromRGB(160, 90, 220), HeaderTransparency = 0.22, SidebarColor = Color3.fromRGB(18, 8, 28), SidebarTransparency = 0.68, BorderColor = Color3.fromRGB(160, 90, 220), NotificationColor = Color3.fromRGB(30, 18, 42), StatusColor = Color3.fromRGB(30, 18, 42), DialogColor = Color3.fromRGB(45, 28, 62), ButtonColor = Color3.fromRGB(55, 35, 75), ToggleColor = Color3.fromRGB(90, 60, 120), TogglerHeadColor = Color3.fromRGB(230, 200, 255), SliderColor = Color3.fromRGB(90, 60, 120), SliderHeadColor = Color3.fromRGB(160, 90, 220), DropdownColor = Color3.fromRGB(48, 30, 68), InputFieldColor = Color3.fromRGB(230, 200, 255), InputValueBackground = 0.95, InputFieldTransparency = 0.38, ScrollbarColor = Color3.fromRGB(160, 90, 220), ScrollbarTransparency = 0.76, SelectionColor = Color3.fromRGB(160, 90, 220), HoverColor = Color3.fromRGB(200, 150, 255), HoverTransparency = 0.86, ActiveColor = Color3.fromRGB(120, 60, 180), FocusColor = Color3.fromRGB(200, 150, 255), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.58, GradientEnabled = true, GradientRotation = 240, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 12, 35)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(40, 22, 55)), ColorSequenceKeypoint.new(1, Color3.fromRGB(60, 35, 80)) }, NoiseEnabled = true, NoiseScale = 90, NoiseTransparency = 0.95, ParticlesEnabled = true, ParticleCount = 16, ParticleColor = Color3.fromRGB(200, 150, 255), MotionBlurEnabled = false, MotionBlurIntensity = 0.32, FontFamily = "Playfair Display", FontWeight = "Medium", FontSize = 14, LineHeight = 1.45, LetterSpacing = 0.35, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(160, 90, 220), MinimizeColor = Color3.fromRGB(160, 90, 220), ExitColor = Color3.fromRGB(120, 60, 180), Version = "2.0" }, Gold = { Name = "Golden Hour", Background = Color3.fromRGB(255, 251, 235), Foreground = Color3.fromRGB(133, 77, 14), Surface = Color3.fromRGB(254, 243, 199), TextPrimary = Color3.fromRGB(133, 77, 14), TextSecondary = Color3.fromRGB(217, 119, 6), TextDisabled = Color3.fromRGB(251, 191, 36), AccentPrimary = Color3.fromRGB(245, 158, 11), AccentSecondary = Color3.fromRGB(217, 119, 6), AccentTertiary = Color3.fromRGB(252, 211, 77), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(245, 158, 11), GlowColor = Color3.fromRGB(252, 211, 77), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(217, 119, 6)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(245, 158, 11)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(252, 211, 77)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 251, 235)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.03, StrokeTransparency = 0.78, ShadowTransparency = 0.88, GlowTransparency = 0.85, CornerRadius = 12, StrokeThickness = 1, ShadowSize = 10, GlowSize = 12, AnimationSpeed = 0.25, BlurIntensity = 20, ShadowOffset = Vector2.new(0, 3), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(245, 158, 11), HeaderTransparency = 0.08, SidebarColor = Color3.fromRGB(255, 251, 235), SidebarTransparency = 0.12, BorderColor = Color3.fromRGB(253, 230, 138), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(253, 230, 138), ToggleColor = Color3.fromRGB(252, 211, 77), TogglerHeadColor = Color3.fromRGB(245, 158, 11), SliderColor = Color3.fromRGB(252, 211, 77), SliderHeadColor = Color3.fromRGB(245, 158, 11), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(133, 77, 14), InputValueBackground = 0.95, InputFieldTransparency = 0.92, ScrollbarColor = Color3.fromRGB(217, 119, 6), ScrollbarTransparency = 0.7, SelectionColor = Color3.fromRGB(245, 158, 11), HoverColor = Color3.fromRGB(217, 119, 6), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(217, 119, 6), FocusColor = Color3.fromRGB(252, 211, 77), DisabledOverlay = Color3.fromRGB(255, 251, 235), DisabledTransparency = 0.7, GradientEnabled = true, GradientRotation = 60, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 251, 235)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(254, 243, 199)), ColorSequenceKeypoint.new(1, Color3.fromRGB(253, 230, 138)) }, NoiseEnabled = false, NoiseScale = 55, NoiseTransparency = 0.99, ParticlesEnabled = false, ParticleCount = 8, ParticleColor = Color3.fromRGB(252, 211, 77), MotionBlurEnabled = false, MotionBlurIntensity = 0.12, FontFamily = "Merriweather", FontWeight = "Regular", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0.15, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = false, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(245, 158, 11), MinimizeColor = Color3.fromRGB(245, 158, 11), ExitColor = Color3.fromRGB(217, 119, 6), Version = "2.0" }, Smoke = { Name = "Smoke Signal", Background = Color3.fromRGB(28, 28, 30), Foreground = Color3.fromRGB(199, 199, 204), Surface = Color3.fromRGB(44, 44, 46), TextPrimary = Color3.fromRGB(199, 199, 204), TextSecondary = Color3.fromRGB(174, 174, 178), TextDisabled = Color3.fromRGB(142, 142, 147), AccentPrimary = Color3.fromRGB(120, 120, 128), AccentSecondary = Color3.fromRGB(99, 99, 102), AccentTertiary = Color3.fromRGB(174, 174, 178), SuccessColor = Color3.fromRGB(52, 199, 89), WarningColor = Color3.fromRGB(255, 214, 10), ErrorColor = Color3.fromRGB(255, 69, 58), InfoColor = Color3.fromRGB(90, 200, 250), ShadowColor = Color3.fromRGB(0, 0, 0), GlowColor = Color3.fromRGB(120, 120, 128), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(99, 99, 102)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(120, 120, 128)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(174, 174, 178)), ColorSequenceKeypoint.new(1, Color3.fromRGB(199, 199, 204)) }), BackgroundTransparency = WaveLibrarySettings.AcrylicBlur and 0.04 or 0, SurfaceTransparency = 0.02, StrokeTransparency = 0.88, ShadowTransparency = 0.5, GlowTransparency = 0.85, CornerRadius = 8, StrokeThickness = 1, ShadowSize = 12, GlowSize = 8, AnimationSpeed = 0.2, BlurIntensity = 25, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = true, WallpaperTransparency = 0.85, WallpaperBlending = "Multiply", HeaderColor = Color3.fromRGB(120, 120, 128), HeaderTransparency = 0.15, SidebarColor = Color3.fromRGB(22, 22, 24), SidebarTransparency = 0.7, BorderColor = Color3.fromRGB(72, 72, 74), NotificationColor = Color3.fromRGB(36, 36, 38), StatusColor = Color3.fromRGB(36, 36, 38), DialogColor = Color3.fromRGB(48, 48, 50), ButtonColor = Color3.fromRGB(58, 58, 60), ToggleColor = Color3.fromRGB(72, 72, 74), TogglerHeadColor = Color3.fromRGB(199, 199, 204), SliderColor = Color3.fromRGB(72, 72, 74), SliderHeadColor = Color3.fromRGB(120, 120, 128), DropdownColor = Color3.fromRGB(48, 48, 50), InputFieldColor = Color3.fromRGB(199, 199, 204), InputValueBackground = 0.95, InputFieldTransparency = 0.5, ScrollbarColor = Color3.fromRGB(120, 120, 128), ScrollbarTransparency = 0.8, SelectionColor = Color3.fromRGB(120, 120, 128), HoverColor = Color3.fromRGB(174, 174, 178), HoverTransparency = 0.9, ActiveColor = Color3.fromRGB(99, 99, 102), FocusColor = Color3.fromRGB(174, 174, 178), DisabledOverlay = Color3.fromRGB(0, 0, 0), DisabledTransparency = 0.5, GradientEnabled = true, GradientRotation = 90, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(28, 28, 30)), ColorSequenceKeypoint.new(1, Color3.fromRGB(48, 48, 50)) }, NoiseEnabled = false, NoiseScale = 100, NoiseTransparency = 0.98, ParticlesEnabled = false, ParticleCount = 6, ParticleColor = Color3.fromRGB(120, 120, 128), MotionBlurEnabled = false, MotionBlurIntensity = 0.2, FontFamily = "San Francisco", FontWeight = "Medium", FontSize = 14, LineHeight = 1.4, LetterSpacing = 0, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Dark", AccentColorSource = "System", AutoDarkMode = true, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(120, 120, 128), MinimizeColor = Color3.fromRGB(120, 120, 128), ExitColor = Color3.fromRGB(99, 99, 102), Version = "2.0" }, Sky = { Name = "Sky Blue", Background = Color3.fromRGB(240, 249, 255), Foreground = Color3.fromRGB(12, 74, 110), Surface = Color3.fromRGB(224, 242, 254), TextPrimary = Color3.fromRGB(12, 74, 110), TextSecondary = Color3.fromRGB(14, 165, 233), TextDisabled = Color3.fromRGB(125, 211, 252), AccentPrimary = Color3.fromRGB(2, 132, 199), AccentSecondary = Color3.fromRGB(3, 105, 161), AccentTertiary = Color3.fromRGB(56, 189, 248), SuccessColor = Color3.fromRGB(34, 197, 94), WarningColor = Color3.fromRGB(245, 158, 11), ErrorColor = Color3.fromRGB(239, 68, 68), InfoColor = Color3.fromRGB(14, 165, 233), ShadowColor = Color3.fromRGB(2, 132, 199), GlowColor = Color3.fromRGB(56, 189, 248), PremiumGradientColor = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(3, 105, 161)), ColorSequenceKeypoint.new(0.3, Color3.fromRGB(2, 132, 199)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(56, 189, 248)), ColorSequenceKeypoint.new(1, Color3.fromRGB(240, 249, 255)) }), BackgroundTransparency = 0, SurfaceTransparency = 0.04, StrokeTransparency = 0.85, ShadowTransparency = 0.92, GlowTransparency = 0.88, CornerRadius = 14, StrokeThickness = 1, ShadowSize = 6, GlowSize = 8, AnimationSpeed = 0.3, BlurIntensity = 15, ShadowOffset = Vector2.new(0, 2), WallpaperEnabled = false, WallpaperTransparency = 1, WallpaperBlending = "Normal", HeaderColor = Color3.fromRGB(2, 132, 199), HeaderTransparency = 0.06, SidebarColor = Color3.fromRGB(240, 249, 255), SidebarTransparency = 0.15, BorderColor = Color3.fromRGB(186, 230, 253), NotificationColor = Color3.fromRGB(255, 255, 255), StatusColor = Color3.fromRGB(255, 255, 255), DialogColor = Color3.fromRGB(255, 255, 255), ButtonColor = Color3.fromRGB(224, 242, 254), ToggleColor = Color3.fromRGB(186, 230, 253), TogglerHeadColor = Color3.fromRGB(2, 132, 199), SliderColor = Color3.fromRGB(186, 230, 253), SliderHeadColor = Color3.fromRGB(2, 132, 199), DropdownColor = Color3.fromRGB(255, 255, 255), InputFieldColor = Color3.fromRGB(12, 74, 110), InputValueBackground = 0.95, InputFieldTransparency = 0.96, ScrollbarColor = Color3.fromRGB(56, 189, 248), ScrollbarTransparency = 0.75, SelectionColor = Color3.fromRGB(2, 132, 199), HoverColor = Color3.fromRGB(3, 105, 161), HoverTransparency = 0.92, ActiveColor = Color3.fromRGB(3, 105, 161), FocusColor = Color3.fromRGB(56, 189, 248), DisabledOverlay = Color3.fromRGB(240, 249, 255), DisabledTransparency = 0.75, GradientEnabled = true, GradientRotation = 135, GradientColors = { ColorSequenceKeypoint.new(0, Color3.fromRGB(240, 249, 255)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(224, 242, 254)), ColorSequenceKeypoint.new(1, Color3.fromRGB(186, 230, 253)) }, NoiseEnabled = false, NoiseScale = 60, NoiseTransparency = 1, ParticlesEnabled = false, ParticleCount = 5, ParticleColor = Color3.fromRGB(56, 189, 248), MotionBlurEnabled = false, MotionBlurIntensity = 0.1, FontFamily = "Oxygen", FontWeight = "Regular", FontSize = 14, LineHeight = 1.5, LetterSpacing = 0.1, AntiAliasing = true, SubPixelRendering = true, DynamicTypeScaling = false, HighContrastMode = false, ReducedMotion = false, ColorBlindMode = "None", ThemeVariant = "Light", AccentColorSource = "Manual", AutoDarkMode = true, ScheduledThemes = {}, CustomCSSOverrides = "", MenuPrimaryColor = Color3.fromRGB(2, 132, 199), MinimizeColor = Color3.fromRGB(2, 132, 199), ExitColor = Color3.fromRGB(3, 105, 161), Version = "2.0" }, Custom = {} } end return ThemeMetaUtility end -- ===================================================================== -- Bootstrap: stand up the globals + loaders Wave expects -- ===================================================================== local genv = (getgenv and getgenv()) or _G -- Services first (Utility references the Services global). genv.Services = R["Wave/Modules/Services.lua"]() -- Utility, then repoint its file loaders at the Registry. genv.Utility = R["Wave/Modules/Utility.lua"]() local function StripHub(File) if type(File) ~= "string" then return File end File = File:gsub("\\", "/") File = File:gsub("^Wave%-Hub/", "") return File end function genv.Utility:LoadFile(File, _Param) local key = StripHub(File) local mod = R[key] if not mod then warn("[WaveFluent] module not in bundle: " .. tostring(File)) return nil end return mod() end function genv.Utility:ReadFile(File) local key = StripHub(File) return R[key] and R[key] or nil end function genv.Utility:ListManager(Location, KeepExtension) local prefix = StripHub(Location) if prefix:sub(-1) ~= "/" then prefix = prefix .. "/" end local results = {} for key in next, R do if key:sub(1, #prefix) == prefix then local name = key:match("[^/]+$") or key if not KeepExtension then name = name:match("^(.*)%.") or name end results[name] = key end end return results end function genv.Utility:ListFiles(Location) local prefix = StripHub(Location) if prefix:sub(-1) ~= "/" then prefix = prefix .. "/" end local results = {} for key in next, R do if key:sub(1, #prefix) == prefix then results[#results + 1] = key end end return results end function genv.Utility:CheckFile(File) return R[StripHub(File)] ~= nil end -- Remaining globals Wave reads while building a window. genv.Maid = R["Wave/Modules/Maid.lua"]().New() pcall(function() genv.Sound = R["Wave/Modules/Sound.lua"]() end) genv.Assets = R["Assets/UI-Icons.lua"]() -- AssetCloak: hook ContentProvider so our own asset ids report "not loaded" -- to anti-cheats that watch GetAssetFetchStatus / ...ChangedSignal. pcall(function() local cloak = R["Wave/UserInterface/Imports/AssetCloak.lua"]() cloak.Harvest(genv.Assets) -- The icon module's 10,621 named entries all reference the SAME 42 sprite- -- sheet ids, so harvesting the whole table is ~10k wasted iterations at -- boot. Hardcode the 42 ids + the 7 loading-screen ids + a few extras. for _, id in ipairs({ -- Lucide / Phosphor sprite atlases (icons_1..icons_42 in Icons.lua) "124334518624683","113826256227095","129900432084566","118976126805967", "125298981894618","131738208650267","110728422432625","135200213477510", "134392099945785","79415505456349", "94499019266816", "72284904787415", "102465529977025","108796161822566","104034552823126","115396960406352", "88000092080903", "74902412828188", "95092644481468", "116618277156257", "101225869294852","130974669650190","122510634246659","130565723724393", "130172565496219","100537559853437","77444842975129", "133795234078681", "88182585007332", "123183581552431","108153633480449","116280890977475", "97148406853110", "138968597001035","129030569615452","97278475063854", "138343757151795","131684019420923","139123669104105","83798598825627", "93555120675964", -- Window-control icons (also in the icon module's top section) "9886659671","9886659276","9886659406","9886659001", -- Loading-screen assets (live in a module-local table our Harvest can't see) "12187365364","133291240952158","313486536","86728831115666", "6015501643","9682988263","14696703504", }) do cloak.Cloak(id) end cloak.Install() genv.AssetCloak = cloak end) genv.HiddenMode = false genv.SubWindows = {} if genv.GameLoading == nil then genv.GameLoading = "Universal" end if genv.GameData == nil then genv.GameData = {} end pcall(function() if genv.VirtualInputMachine == nil then genv.VirtualInputMachine = Instance.new("VirtualInputManager") end end) genv.WaveUserInterface = R["Wave/UserInterface/WaveUI.lua"]() local WaveUserInterface = genv.WaveUserInterface -- ===================================================================== -- Fluent Renewed compatible adapter (Fluent API -> Wave backend) -- ===================================================================== -- Fluent Renewed -> Wave adapter. -- A 1:1-as-possible Fluent API over Wave. Supports stock Fluent Renewed AND the -- custom fork: Window:Divider/Minimize/Maximize, Tab:Left/Right/Section, short -- element aliases (Tab:Toggle / Section:Button), every element method -- (:OnChanged/:SetValue/:SetTitle/:SetDesc/:Destroy/...), styled+range sliders, -- Toggle:Keybind, every Wave theme, and full unload/close. -- -- The packer prepends the inlined Wave UI + bootstrap; we use the globals it set. local WaveUserInterface = WaveUserInterface or (getgenv and getgenv().WaveUserInterface) local genv = (getgenv and getgenv()) or _G -- Forward-declared LOCAL so every closure captures it as an upvalue. local Library -- Active splash-loader controller for the window currently being built. -- Every element/tab creation calls activeSplash:bump() so the splash can tell -- when the build has gone quiet (last element + its config value settled) and -- reveal the UI then, instead of guessing with a fixed timer. local activeSplash local function warnf(...) warn("[WaveFluent]", ...) end -- Fluent passes (flag, opts) for most elements but (opts) for buttons; normalize. local function normArgs(a, b) if type(a) == "table" then return nil, a end return a, (type(b) == "table" and b) or {} end local function tip(o) return o.Tooltip or o.Tip or o.ToolTip or o.Description end -- Lucide / Phosphor / Fluent icon name -> { Image, ImageRectOffset, ImageRectSize }, -- resolved once through the bundled icon sheet and cached. rbxasset / rbxthumb / -- http / numeric ids (and nil) pass straight through. local IconLib local function getIconLib() if IconLib == nil then local cached = genv.__WaveIconSheet if cached ~= nil then IconLib = cached else local ok, lib = pcall(function() return genv.Utility and genv.Utility:LoadFile("Wave/UserInterface/Imports/Icons.lua") end) IconLib = (ok and type(lib) == "table") and lib or false genv.__WaveIconSheet = IconLib end end return IconLib or nil end local function resolveIcon(icon) if type(icon) ~= "string" or icon == "" then return nil end if icon:match("^%d+$") then return { Image = "rbxassetid://" .. icon } end if icon:match("^rbxasset") or icon:match("^rbxthumb") or icon:match("^http") then return { Image = icon } end local lib = getIconLib() if not lib then return nil end local data = lib[icon] if type(data) == "table" and data.Image then return { Image = data.Image, ImageRectOffset = data.ImageRectOffset, ImageRectSize = data.ImageRectSize } elseif type(data) == "string" then return { Image = data } end -- fall back to the sheet's built-in fuzzy matcher (handles close / mistyped names) local ok, res = pcall(function() local tmp = Instance.new("ImageLabel") lib:SetIcon(tmp, icon) local out = { Image = tmp.Image, ImageRectOffset = tmp.ImageRectOffset, ImageRectSize = tmp.ImageRectSize } tmp:Destroy() return out end) if ok and res and res.Image and res.Image ~= "" then return res end return nil end local MOUSE = { MB1 = Enum.UserInputType.MouseButton1, MB2 = Enum.UserInputType.MouseButton2, MB3 = Enum.UserInputType.MouseButton3, LeftMousebutton = Enum.UserInputType.MouseButton1, RightMousebutton = Enum.UserInputType.MouseButton2, } local function toKeyEnum(v) if typeof(v) == "EnumItem" then return v end if type(v) == "string" then if MOUSE[v] then return MOUSE[v] end local ok, e = pcall(function() return Enum.KeyCode[v] end) if ok and e then return e end end return Enum.KeyCode.Unknown end local CreatedAtCounter = 0 local function newStamp() CreatedAtCounter = CreatedAtCounter + 1 return { CreatedAt = CreatedAtCounter } end -- :OnChanged registration shared by value elements. local function attachChanged(el) el._changed = {} function el:OnChanged(fn) if type(fn) == "function" then table.insert(self._changed, fn) Library:SafeCallback(fn, self.Value) end return self end function el:_fireChanged(...) for _, fn in ipairs(self._changed) do Library:SafeCallback(fn, ...) end end end -- Generic SetTitle/SetDesc/SetVisible/Destroy delegating to the Wave element. local function attachCommon(el) -- Mark build activity: each created element pushes the splash's "last -- loaded" timestamp forward, so the reveal waits for the genuinely last one. if activeSplash then activeSplash:bump() end local wave = el._wave function el:SetTitle(text) pcall(function() if wave.UpdateName then wave:UpdateName(text) elseif wave.UpdateHeader then wave:UpdateHeader(text) end end) return self end el.SetName = el.SetTitle function el:SetDesc(text) self.Description = text pcall(function() if wave.SetToolTip then wave:SetToolTip(text) end end) return self end el.SetDescription = el.SetDesc function el:SetVisible(state) pcall(function() if wave.SetVisibility then wave:SetVisibility(state ~= false) end end) return self end el.SetVisibility = el.SetVisible function el:Destroy() pcall(function() if wave.Destroy then wave:Destroy() elseif wave.Remove then wave:Remove() end end) if self.Flag and Library.Options[self.Flag] == self then Library.Options[self.Flag] = nil end end el.Remove = el.Destroy return el end -- Dual signal: supports Sig:Connect(fn) AND Lib:OnUnload(fn) call forms. -- Splash loader shown the instant CreateWindow is called. A small spinning -- ring + "Loading…" caption fade in over a dimmed backdrop while the heavy -- Wave window build runs synchronously underneath (RenderStepped keeps -- ticking during script execution, so the ring keeps animating during the -- freeze). When the build finishes and Wave's reveal kicks in, the splash -- fades out so the two animations overlap and the window feels like it's -- materialising out of the loader rather than popping into view. -- -- Two-call API: build immediately, hide() runs the exit tween + destroys. local function buildSplashLoader() local Players = game:GetService("Players") local TS = game:GetService("TweenService") local parentHost local ok, host = pcall(function() return gethui and gethui() end) if ok and host then parentHost = host else local lp = Players.LocalPlayer parentHost = (lp and lp:FindFirstChildOfClass("PlayerGui")) or game:GetService("CoreGui") end local gui = Instance.new("ScreenGui") gui.Name = "WaveSplash" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.DisplayOrder = 250 -- above the Wave window so it covers the reveal gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling pcall(function() gui.Parent = parentHost end) local Backdrop = Instance.new("Frame") Backdrop.Name = "Backdrop" Backdrop.Size = UDim2.fromScale(1, 1) Backdrop.BackgroundColor3 = Color3.fromRGB(8, 8, 12) Backdrop.BackgroundTransparency = 1 -- fades in Backdrop.BorderSizePixel = 0 Backdrop.Parent = gui -- 72px centred container holds the spinning ring + dot local Container = Instance.new("Frame") Container.AnchorPoint = Vector2.new(0.5, 0.5) Container.Position = UDim2.fromScale(0.5, 0.5) Container.Size = UDim2.fromOffset(72, 72) Container.BackgroundTransparency = 1 Container.Parent = Backdrop -- Static faint background ring local Ring = Instance.new("Frame") Ring.Size = UDim2.fromScale(1, 1) Ring.BackgroundTransparency = 1 Ring.Parent = Container local RingCorner = Instance.new("UICorner") RingCorner.CornerRadius = UDim.new(1, 0) RingCorner.Parent = Ring local RingStroke = Instance.new("UIStroke") RingStroke.Thickness = 3 RingStroke.Color = Color3.fromRGB(255, 255, 255) RingStroke.Transparency = 1 -- fades to 0.82 RingStroke.Parent = Ring -- Rotator with an orbiting bright dot. Rotating the Rotator's Rotation -- property carries the dot around the ring. Pure-frame spinner — no -- external asset needed, works on every executor. local Rotator = Instance.new("Frame") Rotator.AnchorPoint = Vector2.new(0.5, 0.5) Rotator.Position = UDim2.fromScale(0.5, 0.5) Rotator.Size = UDim2.fromScale(1, 1) Rotator.BackgroundTransparency = 1 Rotator.Parent = Container local Dot = Instance.new("Frame") Dot.AnchorPoint = Vector2.new(0.5, 0.5) Dot.Position = UDim2.new(0.5, 0, 0, 0) -- top centre Dot.Size = UDim2.fromOffset(10, 10) Dot.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Dot.BackgroundTransparency = 1 -- fades in Dot.Parent = Rotator local DotCorner = Instance.new("UICorner") DotCorner.CornerRadius = UDim.new(1, 0) DotCorner.Parent = Dot -- Subtle bloom around the dot so it reads as the head of an arc trail. local DotGlow = Instance.new("UIStroke") DotGlow.Thickness = 2 DotGlow.Color = Color3.fromRGB(160, 195, 255) DotGlow.Transparency = 1 DotGlow.Parent = Dot -- "Loading…" caption with a soft typewriter tail. local Caption = Instance.new("TextLabel") Caption.AnchorPoint = Vector2.new(0.5, 0) Caption.Position = UDim2.new(0.5, 0, 0.5, 50) Caption.Size = UDim2.fromOffset(160, 18) Caption.BackgroundTransparency = 1 Caption.Text = "Loading" Caption.TextColor3 = Color3.fromRGB(235, 240, 250) Caption.TextTransparency = 1 Caption.TextSize = 13 Caption.Font = Enum.Font.GothamMedium Caption.Parent = Backdrop -- Animate the ring spin (one full turn per 0.95s, linear, infinite). local spinAlive = true task.spawn(function() while spinAlive and Rotator.Parent do local tween = TS:Create(Rotator, TweenInfo.new(0.95, Enum.EasingStyle.Linear), { Rotation = Rotator.Rotation + 360, }) tween:Play() tween.Completed:Wait() end end) -- Caption dot-cycle: "Loading" → "Loading." → "Loading.." → "Loading..." task.spawn(function() local dots = { "", ".", "..", "..." } local i = 1 while spinAlive and Caption.Parent do Caption.Text = "Loading" .. dots[i] i = (i % #dots) + 1 task.wait(0.32) end end) -- Fade-in. local fadeIn = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TS:Create(Backdrop, fadeIn, { BackgroundTransparency = 0.45 }):Play() TS:Create(RingStroke, fadeIn, { Transparency = 0.82 }):Play() TS:Create(Dot, fadeIn, { BackgroundTransparency = 0 }):Play() TS:Create(DotGlow, fadeIn, { Transparency = 0.4 }):Play() TS:Create(Caption, fadeIn, { TextTransparency = 0.2 }):Play() -- Controller: tracks build activity so callers can reveal on "quiet", -- and exposes hide() for the fade-out + cleanup. local controller = { hidden = false, elementCount = 0, } -- os.clock is unavailable in some sandboxes; fall back to tick/0. local clock = (os and os.clock) or tick or function() return 0 end controller.lastActivity = clock() function controller:bump() self.elementCount = self.elementCount + 1 self.lastActivity = clock() end function controller:hide() if self.hidden then return end self.hidden = true spinAlive = false local out = TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TS:Create(Backdrop, out, { BackgroundTransparency = 1 }):Play() TS:Create(RingStroke, out, { Transparency = 1 }):Play() TS:Create(Dot, out, { BackgroundTransparency = 1 }):Play() TS:Create(DotGlow, out, { Transparency = 1 }):Play() TS:Create(Caption, out, { TextTransparency = 1 }):Play() -- Subtle scale-down on the spinner as it fades. TS:Create(Container, out, { Size = UDim2.fromOffset(56, 56) }):Play() task.delay(0.45, function() pcall(function() gui:Destroy() end) end) end -- Watch for the build to go quiet, then reveal. "Quiet" = no new element -- loaded for QUIET seconds AFTER at least one element exists -> the last -- element (and its applied config value) has settled. A hard ceiling -- guarantees the splash never hangs (e.g. a window with zero elements). function controller:watch() task.spawn(function() local QUIET = 1.0 -- gap that means "nothing else is loading" local MIN_SHOW = 0.35 -- keep the spinner up at least this long (no flash) local MAX_WAIT = 12 -- absolute safety ceiling local startedAt = clock() while not self.hidden do task.wait(0.05) local now = clock() local elapsed = now - startedAt local quietFor = now - self.lastActivity if elapsed >= MAX_WAIT then break end if elapsed >= MIN_SHOW and self.elementCount > 0 and quietFor >= QUIET then break end end -- Stop routing element bumps to this (now finished) splash. if activeSplash == self then activeSplash = nil end self:hide() end) end return controller end local function makeSignal() local cbs = {} local sig = {} function sig:Connect(fn) if type(fn) == "function" then table.insert(cbs, fn) end return { Disconnect = function() for i, f in ipairs(cbs) do if f == fn then table.remove(cbs, i) break end end end, } end sig.Once = sig.Connect function sig:Fire(...) for _, fn in ipairs(cbs) do if Library and Library.SafeCallback then Library:SafeCallback(fn, ...) else pcall(fn, ...) end end end return setmetatable(sig, { __call = function(_, a, ...) local fn = (type(a) == "function") and a or ... return sig:Connect(fn) end, }) end local BASES = { "Button", "Toggle", "Slider", "Dropdown", "Colorpicker", "Keybind", "Input", "Paragraph", "Divider", "Label", "Viewport", "Segmented", "Stat", "Callout", "Image", } -- ===================================================================== -- Section facade -- ===================================================================== local function makeSection(waveSection) local S = { _wave = waveSection, Type = "Section" } function S:CreateToggle(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Toggle", Value = o.Default or o.Value or false, Flag = flag, Instance = newStamp() } attachChanged(el) local wave = waveSection:Toggle({ Name = o.Title or o.Name or "Toggle", Default = o.Default or o.Value or false, ToolTip = tip(o), Callback = function(state) el.Value = state Library:SafeCallback(o.Callback, state) el:_fireChanged(state) end, }, flag) el._wave = wave attachCommon(el) function el:SetValue(v) pcall(function() wave:UpdateState(v and true or false, true) end) return self end function el:GetState() return el.Value end function el:Keybind(kflag, kopts) kopts = kopts or {} return S:CreateKeybind(kflag, { Title = kopts.Title or ((o.Title or "Toggle") .. " Bind"), Default = kopts.Default or kopts.Value, Mode = kopts.Mode or "Toggle", ChangedCallback = kopts.ChangedCallback, Callback = function() el:SetValue(not el.Value) end, }) end if flag then Library.Options[flag] = el end return el end function S:CreateButton(a, b) local _, o = normArgs(a, b) local el = { Type = "Button", Instance = newStamp() } local wave = waveSection:Button({ Name = o.Title or o.Name or "Button", ToolTip = tip(o), Callback = function() Library:SafeCallback(o.Callback or o.Func) end, }) el._wave = wave el.Description = o.Description attachCommon(el) return el end function S:CreateSlider(flag, o) flag, o = normArgs(flag, o) local isRange = (o.Style == "Range") or (o.Range == true) or (type(o.Default or o.Value) == "table") if isRange then local d = type(o.Default or o.Value) == "table" and (o.Default or o.Value) or {} local lo = d.Min or d[1] or o.Min or 0 local hi = d.Max or d[2] or o.Max or 100 local el = { Type = "RangeSlider", Flag = flag, Instance = newStamp() } el.Value = { Min = lo, Max = hi, lo, hi } el.MinValue, el.MaxValue = lo, hi attachChanged(el) local wave = waveSection:RangeSlider({ Name = o.Title or o.Name or "Range", ToolTip = tip(o), Minimum = o.Min or o.Minimum or 0, Maximum = o.Max or o.Maximum or 100, DefaultMin = lo, DefaultMax = hi, Precision = o.Rounding or o.Precision, Callback = function(mn, mx) el.Value = { Min = mn, Max = mx, mn, mx } el.MinValue, el.MaxValue = mn, mx Library:SafeCallback(o.Callback or o.Changed, el.Value) el:_fireChanged(el.Value) end, }, flag) el._wave = wave attachCommon(el) function el:SetValue(v) if type(v) == "table" then pcall(function() wave:UpdateRange(v.Min or v[1], v.Max or v[2]) end) end return self end if flag then Library.Options[flag] = el end return el end local el = { Type = "Slider", Value = o.Default or o.Value or o.Min or 0, Flag = flag, Instance = newStamp() } attachChanged(el) local wave = waveSection:Slider({ Name = o.Title or o.Name or "Slider", ToolTip = tip(o), Default = o.Default or o.Value, Minimum = o.Min or o.Minimum or 0, Maximum = o.Max or o.Maximum or 100, Precision = o.Rounding or o.Precision, Callback = function(v) el.Value = v Library:SafeCallback(o.Callback or o.Changed, v) el:_fireChanged(v) end, }, flag) el._wave = wave attachCommon(el) function el:SetValue(v) pcall(function() wave:UpdateValue(v) end) return self end if flag then Library.Options[flag] = el end return el end function S:CreateDropdown(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Dropdown", Value = o.Default or o.Value, Flag = flag, Multi = o.Multi or false, CustomDisplayer = nil, Instance = newStamp(), } attachChanged(el) local wave = waveSection:Dropdown({ Name = o.Title or o.Name or "Dropdown", ToolTip = tip(o), Options = o.Values or o.Options or {}, Default = o.Default or o.Value, Multi = o.Multi or false, Required = (o.AllowNull == false) or (o.AutoDeselect == false), Search = o.Search or o.Searchable or false, Callback = function(sel) el.Value = sel Library:SafeCallback(o.Callback or o.Changed, sel) el:_fireChanged(sel) end, }, flag) el._wave = wave attachCommon(el) function el:SetValue(v) pcall(function() wave:UpdateSelection(v) end) return self end function el:SetValues(list) pcall(function() local current = {} for opt in next, wave:GetOptions() do current[#current + 1] = opt end if #current > 0 then wave:RemoveOptions(current) end if list and #list > 0 then wave:InsertOptions(list) end end) return self end el.SetOptions = el.SetValues function el:GetActiveValues() if el.Multi then local out = {} if type(el.Value) == "table" then for v, on in next, el.Value do if on then out[#out + 1] = v end end end return out end return el.Value ~= nil and 1 or 0 end -- Fluent-style "fire on load": the native dropdown selects a default but only fires its -- Callback on user click (and skips string defaults). Applying the selection here -- during -- construction, while no :OnChanged handlers are registered yet -- selects the default of any -- type (index / string / list), resolves el.Value, and fires the options Callback once. -- :OnChanged handlers fire themselves on registration, so nothing double-fires. if (o.Default or o.Value) ~= nil then pcall(function() wave:UpdateSelection(o.Default or o.Value) end) end if flag then Library.Options[flag] = el end return el end function S:CreateColorpicker(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Colorpicker", Value = o.Default or o.Value or Color3.new(1, 1, 1), Transparency = o.Transparency or 0, Flag = flag, Instance = newStamp(), } attachChanged(el) local wave = waveSection:ColorPicker({ Name = o.Title or o.Name or "Colorpicker", ToolTip = tip(o), Default = o.Default or o.Value or Color3.new(1, 1, 1), Alpha = type(o.Transparency) == "number" and o.Transparency or nil, Callback = function(color, alpha) el.Value = color if alpha ~= nil then el.Transparency = alpha end Library:SafeCallback(o.Callback or o.Changed, color, alpha) el:_fireChanged(color, alpha) end, }, flag) el._wave = wave attachCommon(el) function el:SetValueRGB(color, transparency) pcall(function() wave:SetColor(color) end) if type(transparency) == "number" then pcall(function() wave:SetAlpha(transparency) end) end return self end -- Fork's SetValue takes HSV {Hue,Sat,Vib}; also accept a Color3. function el:SetValue(a, t) if typeof(a) == "Color3" then el:SetValueRGB(a, t) elseif type(a) == "table" then local h = a.Hue or a[1] or 0 local s = a.Sat or a[2] or 0 local v = a.Vib or a[3] or 0 el:SetValueRGB(Color3.fromHSV(h, s, v), t) end return self end if flag then Library.Options[flag] = el end return el end function S:CreateKeybind(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Keybind", Value = o.Default or o.Value, Mode = o.Mode or "Toggle", Toggled = false, Flag = flag, Instance = newStamp(), _clicks = {}, } attachChanged(el) local function press() if el.Mode == "Toggle" then el.Toggled = not el.Toggled else el.Toggled = true end Library:SafeCallback(o.Callback, el.Toggled) for _, fn in ipairs(el._clicks) do Library:SafeCallback(fn, el.Toggled) end end local wave = waveSection:Keybind({ Name = o.Title or o.Name or "Keybind", ToolTip = tip(o), Default = toKeyEnum(o.Default or o.Value), Callback = function() press() end, }, flag) el._wave = wave attachCommon(el) function el:GetState() if el.Mode == "Always" then return true end return el.Toggled end function el:OnClick(fn) if type(fn) == "function" then table.insert(el._clicks, fn) end return el end function el:DoClick() press() return el end function el:SetValue(key, mode) if mode then el.Mode = mode end local e = toKeyEnum(key) el.Value = e pcall(function() wave:Bind(e) end) Library:SafeCallback(o.ChangedCallback, e) el:_fireChanged(e) return el end function el:GetBind() local ok, b = pcall(function() return wave:GetBind() end) return (ok and b) or el.Value end if flag then Library.Options[flag] = el end return el end function S:CreateInput(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Input", Value = o.Default or o.Value or "", Flag = flag, Instance = newStamp() } attachChanged(el) local wave = waveSection:Input({ Name = o.Title or o.Name or "Input", Default = o.Default or o.Value, Placeholder = o.Placeholder, AcceptedCharacters = o.Numeric and "Numeric" or "All", Callback = function(text) el.Value = text Library:SafeCallback(o.Callback, text) el:_fireChanged(text) end, }, flag) el._wave = wave attachCommon(el) function el:SetValue(t) pcall(function() wave:UpdateText(tostring(t)) end) return self end if flag then Library.Options[flag] = el end return el end function S:CreateParagraph(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Paragraph", Value = o.Content or o.Body or o.Value or "", Flag = flag, Instance = newStamp() } attachChanged(el) local wave = waveSection:Paragraph({ Header = o.Title or o.Header or "", Body = o.Content or o.Body or o.Value or "", }, flag) el._wave = wave attachCommon(el) function el:SetContent(text) el.Value = text pcall(function() wave:UpdateBody(text) end) el:_fireChanged(text) return self end el.SetValue = el.SetContent function el:SetTitle(text) pcall(function() wave:UpdateHeader(text) end) return self end if flag then Library.Options[flag] = el end return el end function S:CreateDivider(label) if type(label) == "table" then label = label.Title or label.Text or label.Label or label.Name end local el = { Type = "Divider" } el._wave = waveSection:Divider({ Text = label }) attachCommon(el) return el end function S:CreateLabel(o) local text = type(o) == "table" and (o.Title or o.Text or o.Name) or o local el = { Type = "Label", _wave = waveSection:Label({ Name = text }) } attachCommon(el) return el end function S:CreateViewport(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Viewport", Flag = flag, Instance = newStamp() } local wave = waveSection:Viewport({ Title = o.Title or o.Name, Height = o.Height, Model = o.Model or o.Object, AutoRotate = o.AutoRotate, RotateSpeed = o.RotateSpeed, }, flag) el._wave = wave attachCommon(el) function el:SetModel(m) pcall(function() wave:SetModel(m) end) return self end function el:Clear() pcall(function() wave:Clear() end) return self end function el:GetModel() local ok, m = pcall(function() return wave:GetModel() end) return ok and m or nil end function el:SetAutoRotate(state) pcall(function() wave:SetAutoRotate(state) end) return self end function el:ResetView() pcall(function() wave:ResetView() end) return self end function el:GetCamera() local ok, cam = pcall(function() return wave:GetCamera() end) return ok and cam or nil end function el:SetCamera(cam) pcall(function() wave:SetCamera(cam) end) return self end if flag then Library.Options[flag] = el end return el end function S:CreateSegmented(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Segmented", Value = o.Default, Flag = flag, Instance = newStamp() } attachChanged(el) local wave = waveSection:Segmented({ Name = o.Title or o.Name, Options = o.Values or o.Options, Default = o.Default, Callback = function(v) el.Value = v Library:SafeCallback(o.Callback, v) el:_fireChanged(v) end, }, flag) el._wave = wave attachCommon(el) function el:SetValue(v) pcall(function() wave:SetValue(v) end) return self end if flag then Library.Options[flag] = el end return el end function S:CreateStat(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Stat", Value = o.Value, Flag = flag, Instance = newStamp() } local wave = waveSection:Stat({ Title = o.Title or o.Name, Value = o.Value, Icon = o.Icon }, flag) el._wave = wave attachCommon(el) function el:SetValue(v) el.Value = v pcall(function() wave:SetValue(v) end) return self end function el:SetLabel(t) pcall(function() wave:SetLabel(t) end) return self end if flag then Library.Options[flag] = el end return el end function S:CreateCallout(flag, o) flag, o = normArgs(flag, o) local el = { Type = "Callout", Flag = flag, Instance = newStamp() } local wave = waveSection:Callout({ Title = o.Title or o.Name, Content = o.Content or o.Text or o.Description, Style = o.Style, }, flag) el._wave = wave attachCommon(el) function el:SetContent(t) pcall(function() wave:SetContent(t) end) return self end el.SetValue = el.SetContent if flag then Library.Options[flag] = el end return el end function S:CreateImage(flag, o) flag, o = normArgs(flag, o) local image = o.Image or o.Url if not image and type(flag) == "string" and (flag:find("rbxasset") or flag:find("http")) then image, flag = flag, nil end local el = { Type = "Image", Flag = flag, Instance = newStamp() } local wave = waveSection:Image({ Image = image, Height = o.Height, AspectRatio = o.AspectRatio, Transparency = o.Transparency, }, flag) el._wave = wave attachCommon(el) function el:SetImage(i) pcall(function() wave:SetImage(i) end) return self end el.SetValue = el.SetImage if flag then Library.Options[flag] = el end return el end -- short + Add* aliases for every element for _, bse in ipairs(BASES) do local target = "Create" .. bse S["Add" .. bse] = function(self, ...) return self[target](self, ...) end S[bse] = function(self, ...) return self[target](self, ...) end end S.CreateColorPicker = S.CreateColorpicker S.AddColorPicker = S.AddColorpicker S.ColorPicker = S.Colorpicker return S end -- ===================================================================== -- Tab facade -- ===================================================================== local function makeTab(waveTab) local T = { _wave = waveTab, Type = "Tab" } local defaultSec, sectionCount = nil, 0 local function sectionWith(side, title) local ws = waveTab:Section({ Side = side, DisplayTitle = title }) if title and title ~= "" then pcall(function() ws:DisplayTitle() end) end return makeSection(ws) end local function getDefault() if not defaultSec then defaultSec = sectionWith("Left", nil) end return defaultSec end -- forward every element method to the default section local function fwd(name) return function(_, ...) local d = getDefault() return d[name](d, ...) end end for _, bse in ipairs(BASES) do T["Create" .. bse] = fwd("Create" .. bse) T["Add" .. bse] = fwd("Create" .. bse) T[bse] = fwd("Create" .. bse) end T.CreateColorPicker = T.CreateColorpicker T.AddColorPicker = T.CreateColorpicker T.ColorPicker = T.Colorpicker function T:Left(title) return sectionWith("Left", title) end T.AddLeft, T.CreateLeft = T.Left, T.Left function T:Right(title) return sectionWith("Right", title) end T.AddRight, T.CreateRight = T.Right, T.Right function T:Section(title) sectionCount = sectionCount + 1 local side = (sectionCount % 2 == 1) and "Left" or "Right" return sectionWith(side, title) end T.CreateSection, T.AddSection = T.Section, T.Section return T end -- ===================================================================== -- Library -- ===================================================================== Library = { Version = "Wave", Options = {}, Themes = { "Cobalt" }, Theme = "Cobalt", UseAcrylic = true, Acrylic = true, Transparency = true, Loaded = true, MinimizeKey = Enum.KeyCode.RightControl, MinimizeKeybind = nil, Window = nil, CreatedWindow = nil, DialogOpen = false, } Library.OnUnload = makeSignal() Library.PostUnload = makeSignal() Library.ThemeChanged = makeSignal() -- live Unloaded flag, reads Wave's real state so ported loops stop on close setmetatable(Library, { __index = function(t, k) if k == "Unloaded" then if rawget(t, "_unloaded") then return true end return (WaveUserInterface and WaveUserInterface.Unloaded) and true or false end return nil end, }) function Library:SafeCallback(fn, ...) if type(fn) ~= "function" then return end local args = table.pack(...) local ok, err = pcall(function() return fn(table.unpack(args, 1, args.n)) end) if not ok then warnf("callback error:", err) end end function Library:Notify(opts) opts = opts or {} local desc = opts.Content or opts.Description or "" if opts.SubContent and opts.SubContent ~= "" then desc = (desc ~= "" and (desc .. "\n") or "") .. opts.SubContent end local w = rawget(self, "_waveWindow") if w then local ok, res = pcall(function() return w:Notify({ Title = opts.Title or "Notification", Description = desc, Lifetime = opts.Duration }) end) if ok then return res end warnf("Notify failed:", res) end return nil end function Library:SetTheme(name) self.Theme = name local w = rawget(self, "_waveWindow") if w then pcall(function() w:ApplyTheme(name) end) end self.ThemeChanged:Fire(name) end function Library:GetCurrentTheme() local w = rawget(self, "_waveWindow") if w then local ok, t = pcall(function() return w:GetCurrentTheme() end) if ok and t then return t end end return self.Theme end function Library:ToggleAcrylic(state) self.UseAcrylic, self.Acrylic = state, state local w = rawget(self, "_waveWindow") if w then pcall(function() w:SetAcrylicBlurState(state) end) end end function Library:ToggleTransparency(state) self.Transparency = state end function Library:OnUnloadCallback(fn) return self.OnUnload:Connect(fn) end function Library:Unload() rawset(self, "_unloaded", true) local w = rawget(self, "_waveWindow") if w then pcall(function() w:Unload() end) end self.OnUnload:Fire() self.PostUnload:Fire() end Library.Destroy = Library.Unload Library.Close = Library.Unload -- Library.Utilities — minimal versions of Fluent's helpers Library.Utilities = {} function Library.Utilities:Truncate(number, decimals, round) local factor = 10 ^ (decimals or 0) if round then return math.round(number * factor) / factor end return math.floor(number * factor) / factor end function Library.Utilities:Round(number, factor) return self:Truncate(number, factor, true) end function Library.Utilities:Prettify(v) if typeof(v) == "EnumItem" then return (tostring(v):gsub("Enum.%w+%.", ""):gsub("(%l)(%u)", "%1 %2")) elseif type(v) == "number" then return self:Round(v, 2) end return tostring(v) end function Library.Utilities:GetOS() return "Windows" end function Library.Utilities:Clone(x) return x, true end function Library.Utilities:GetIcon() return nil end function Library:CreateWindow(opts) opts = opts or {} -- Show the splash loader BEFORE the heavy Wave build runs. The single -- task.wait() yields exactly one frame so the splash gets a chance to -- render before the build freezes the main thread. RenderStepped keeps -- the spinner rotating throughout the freeze, so users see continuous -- motion instead of a stalled UI. Devs can opt out with Splash = false. -- -- activeSplash is read by attachCommon (every element) so the splash knows -- when the build is genuinely done (config-applied last element settled), -- rather than revealing on a blind timer. local splash if opts.Splash ~= false then splash = buildSplashLoader() activeSplash = splash task.wait() else activeSplash = nil end local waveWindow = WaveUserInterface:Window({ Title = opts.Title or "Wave", Subtitle = opts.SubTitle or opts.Subtitle, Size = opts.Size, DragStyle = 2, DisabledWindowControls = {}, AcrylicBlur = opts.Acrylic ~= false, -- floating show/hide button that stays visible when minimized (opt out -- with ToggleButton = false in your CreateWindow options) ToggleButton = opts.ToggleButton ~= false, -- top-right status bar: live FPS + @username + game name (opt out with -- StatusBar = false) StatusBar = opts.StatusBar ~= false, }) genv.WaveLibrary = waveWindow rawset(self, "_waveWindow", waveWindow) -- Start the activity watcher: the splash reveals the UI once element/config -- loading goes quiet (see controller:watch), so the reveal is tied to the -- real end of the build, not a fixed delay. The window's own reveal anim -- runs underneath in the meantime, so when the splash lifts the UI is -- already in place and the fade-out reads as a smooth reveal. if splash then splash:watch() end pcall(function() waveWindow.OnUnloaded(function() rawset(Library, "_unloaded", true) Library.OnUnload:Fire() Library.PostUnload:Fire() -- Defensive: if the user unloads before the splash finished -- (rare, but cheap to guard), kill the splash too. if splash then pcall(function() splash:hide() end) end end) end) self.UseAcrylic = opts.Acrylic ~= false self.Theme = opts.Theme or self.Theme if opts.MinimizeKey then self.MinimizeKey = opts.MinimizeKey pcall(function() waveWindow:SetKeybind(opts.MinimizeKey) end) end local W = { _wave = waveWindow, _currentGroup = waveWindow:TabGroup(), _tabs = {}, _order = {}, _themed = false, _pendingTheme = opts.Theme or "Cobalt", -- default theme when a script doesn't specify one Type = "Window", } self.CreatedWindow = W local function wireThemes() if W._themed then return end W._themed = true pcall(function() waveWindow:Initialize() end) pcall(function() local names = waveWindow:GetThemeNames() if type(names) == "table" and #names > 0 then table.sort(names) Library.Themes = names end end) if W._pendingTheme then pcall(function() waveWindow:ApplyTheme(W._pendingTheme) end) end end function W:CreateTab(tabOpts) tabOpts = tabOpts or {} local tabSettings = { Name = tabOpts.Title or "Tab" } local icon = resolveIcon(tabOpts.Icon) if icon then tabSettings.Image = icon.Image tabSettings.ImageRectOffset = icon.ImageRectOffset tabSettings.ImageRectSize = icon.ImageRectSize end local waveTab = W._currentGroup:Tab(tabSettings) local T = makeTab(waveTab) table.insert(W._order, waveTab) if tabOpts.Title then W._tabs[tabOpts.Title] = waveTab end if #W._order == 1 then pcall(function() waveTab:Select() end) wireThemes() end return T end W.AddTab, W.Tab = W.CreateTab, W.CreateTab function W:Divider(label) if type(label) == "table" then label = label.Title or label.Text or label.Label or label.Name end W._currentGroup = waveWindow:TabGroup(label) return W end W.AddDivider, W.CreateDivider, W.TabDivider = W.Divider, W.Divider, W.Divider function W:Minimize() pcall(function() waveWindow:SetWindowState(not waveWindow:GetState()) end) end function W:Maximize() -- Wave has no maximize-to-viewport; best-effort no-op. end function W:Dialog(d) d = d or {} local buttons = {} for _, b in ipairs(d.Buttons or {}) do local cb = b.Callback buttons[#buttons + 1] = { Name = b.Title or b.Name or "OK", Callback = function() Library.DialogOpen = false Library:SafeCallback(cb) end, } end Library.DialogOpen = true local ok, res = pcall(function() return waveWindow:Dialog({ Title = d.Title, Description = d.Content or d.Description, Buttons = buttons, }) end) if not ok then Library.DialogOpen = false warnf("Dialog failed:", res) end return ok and res or nil end function W:Notify(n) return Library:Notify(n) end function W:TerminalViewport(opts) opts = opts or {} local ok, handle = pcall(function() return waveWindow:TerminalViewport({ Model = opts.Model or opts.Object, AutoRotate = opts.AutoRotate, RotateSpeed = opts.RotateSpeed, }) end) return ok and handle or nil end -- Server browser: a slide-out panel (icon left of the terminal) listing joinable servers. -- W:AddServer{ Image = "rbxassetid://..", Title = .., Description = .., Callback = function(card) end } function W:AddServer(s) s = s or {} local handle pcall(function() handle = waveWindow:AddServer({ Image = s.Image or s.Thumbnail or s.Icon, Title = s.Title or s.Name, Description = s.Description or s.Desc or s.SubTitle or s.Subtitle, Callback = s.Callback or s.Join or s.OnJoin or s.Func, }) end) return handle end W.CreateServer, W.Server = W.AddServer, W.AddServer function W:ClearServers() pcall(function() waveWindow:ClearServers() end) return self end function W:OnServerRefresh(fn) pcall(function() waveWindow:SetServerRefresh(fn) end) return self end W.SetServerRefresh = W.OnServerRefresh function W:SetServerTitle(t) pcall(function() waveWindow:SetServerTitle(t) end) return self end function W:ToggleServerBrowser(state) pcall(function() waveWindow:ToggleServerBrowser(state) end) return self end function W:OpenServerBrowser() return W:ToggleServerBrowser(true) end function W:CloseServerBrowser() return W:ToggleServerBrowser(false) end function W:SelectTab(i) local t if type(i) == "number" then t = W._order[i] elseif type(i) == "string" then t = W._tabs[i] elseif type(i) == "table" then t = i._wave or i end if t then pcall(function() t:Select() end) end end function W:Unload() return Library:Unload() end W.Destroy, W.Close = W.Unload, W.Unload return W end Library.Window = Library.CreateWindow Library.AddWindow = Library.CreateWindow return Library