diff --git a/main.luau b/main.luau index e520f76..6156ec6 100644 --- a/main.luau +++ b/main.luau @@ -297,904 +297,905 @@ RBXScriptConnection|RBXScriptSignal)local ae=typeof(ad)if ad and(ae=='RBXScriptC table.insert(C.Signals,ad)end return ad end function IsValidCustomIcon(ac:string)return typeof(ac)=='string'and(ac:match 'rbxasset'or ac:match'roblox%.com/asset/%?id='or ac:match'rbxthumb://type=')end type Icon={Url:string,Id:number,IconName :string,ImageRectOffset:Vector2,ImageRectSize:Vector2}type IconModule={Icons:{string},GetAsset:(Name:string)->Icon?} -local ac,ad=pcall(function()return(loadstring(game:HttpGet +local ac,ad,ae={Url='rbxasset://textures/ui/GuiImagePlaceholder.png',ImageRectOffset=Vector2.zero,ImageRectSize=Vector2. +zero,Custom=true},pcall(function()return(loadstring(game:HttpGet [[https://raw.githubusercontent.com/deividcomsono/lucide-roblox-direct/refs/heads/main/source.lua]])::()->IconModule)() -end)function C.GetIcon(ae,af:string)if not ac then return end local ag,ah=pcall(ad.GetAsset,af)if not ag then return end -return ah end function C.GetCustomIcon(ae,af:string)if not IsValidCustomIcon(af)then return C:GetIcon(af)else return{Url -=af,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true}end end function C.Validate(ae,af:{[string]:any} -,ag:{[string]:any}):{[string]:any}if typeof(af)~='table'then return ag end for ah,ai in ag do if typeof(ah)=='number' -then continue end if typeof(ai)=='table'then af[ah]=C:Validate(af[ah],ai)elseif af[ah]==nil then af[ah]=ai end end -return af end local function ae(af:{[string]:any},ag:GuiObject)local ah=C.Registry[ag]or{}for ai,X in af do if ah[ai] -then ah[ai]=nil elseif ai~='Text'then local Y=I(X)if Y or typeof(X)=='function'then ah[ai]=X X=Y or X()end end ag[ai]=X -end if O(ah)>0 then C.Registry[ag]=ah end end local function af(ag:string,ah:{[string]:any}):any local ai=Instance.new( -ag)if D[ag]then ae(D[ag],ai)end ae(ah,ai)if ah.Parent and not ah.ZIndex then pcall(function()ai.ZIndex=ah.Parent.ZIndex -end)end return ai end local function ag(ah:Instance,ai:Instance|(()->Instance))local X,Y=pcall(function()if not ai then -ai=g end local X if typeof(ai)=='function'then X=ai()else X=ai end ah.Parent=X end)if not(X and ah.Parent)then ah.Parent -=C.LocalPlayer:WaitForChild('PlayerGui',math.huge)end end local function ah(ai:Instance,X:boolean?)if X then ag(ai,g) -return end pcall(q,ai)ag(ai,r)end local ai=af('ScreenGui',{Name='Obsidian',DisplayOrder=999,ResetOnSpawn=false})ah(ai)C. -ScreenGui=ai ai.DescendantRemoving:Connect(function(X)C:RemoveFromRegistry(X)end)local X,Y,Z=(af('TextButton',{ -BackgroundTransparency=1,Modal=false,Size=UDim2.fromScale(0,0),AnchorPoint=Vector2.zero,Text='',ZIndex=-999,Parent=ai})) -do Y=af('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size=UDim2.fromOffset(9,1),Visible=false -,ZIndex=999,Parent=ai})af('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2. -fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=Y})local _=af('Frame',{AnchorPoint=Vector2.new(0.5,0.5), -BackgroundColor3='WhiteColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.fromOffset(1,9),Parent=Y})af('Frame',{ -AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2), -ZIndex=998,Parent=_})Z=af('ImageLabel',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundTransparency=1,Position=UDim2. -fromScale(0.5,0.5),Size=UDim2.fromOffset(20,20),ZIndex=1000,Visible=false,Parent=Y})end local _,aj do _=af('Frame',{ -AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1,Position=UDim2.new(1,-6,0,6),Size=UDim2.new(0,300,1,-6),Parent=ai} -)table.insert(C.Scales,af('UIScale',{Parent=_}))aj=af('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Right -,Padding=UDim.new(0,8),Parent=_})end function C.ResetCursorIcon(ak)Z.Visible=false Z.Size=UDim2.fromOffset(20,20)end -function C.ChangeCursorIcon(ak,al:string)if not al or al==''then C:ResetCursorIcon()return end local am=C:GetCustomIcon( -al)assert(am,[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])Z.Visible=true Z.Image=am.Url -Z.ImageRectOffset=am.ImageRectOffset Z.ImageRectSize=am.ImageRectSize end function C.ChangeCursorIconSize(ak,al:UDim2) -assert(typeof(al)=='UDim2','UDim2 expected.')Z.Size=al end function C.GetBetterColor(ak,al:Color3,am:number):Color3 am= -am*(C.IsLightTheme and-4 or 2)return Color3.fromRGB(math.clamp(al.R*255+am,0,255),math.clamp(al.G*255+am,0,255),math. -clamp(al.B*255+am,0,255))end function C.GetLighterColor(ak,al:Color3):Color3 local am,an,ao=al:ToHSV()return Color3. -fromHSV(am,math.max(0,an-0.1),math.min(1,ao+0.1))end function C.GetDarkerColor(ak,al:Color3):Color3 local am,an,ao=al: -ToHSV()return Color3.fromHSV(am,an,ao/2)end function C.GetKeyString(ak,al:Enum.KeyCode)if al.EnumType==Enum.KeyCode and -al.Value>33 and al.Value<127 then return string.char(al.Value)end return al.Name end function C.GetTextBounds(ak,al: -string,am:Font,an:number,ao:number?):(number,number)local ap=Instance.new'GetTextBoundsParams'ap.Text=al ap.RichText= -true ap.Font=am ap.Size=an ap.Width=ao or workspace.CurrentCamera.ViewportSize.X-32 local aq=l:GetTextBoundsAsync(ap) -return aq.X,aq.Y end function C.MouseIsOverFrame(ak,al:GuiObject,am:Vector2):boolean local an,ao=al.AbsolutePosition,al. -AbsoluteSize return am.X>=an.X and am.X<=an.X+ao.X and am.Y>=an.Y and am.Y<=an.Y+ao.Y end function C.SafeCallback(ak,al: -(...any)->...any,...:any)if not(al and typeof(al)=='function')then return end local am=table.pack(xpcall(al,function(am) -task.defer(error,debug.traceback(am,2))if C.NotifyOnError then C:Notify(am)end return am end,...))if not am[1]then -return nil end return table.unpack(am,2,am.n)end function C.MakeDraggable(ak,al:GuiObject,am:GuiObject,an:boolean?,ao: -boolean?)local ap,aq,ar,as=false am.InputBegan:Connect(function(at:InputObject)if not L(at)or ao and C.CantDragForced -then return end aq=at.Position ar=al.Position ap=true as=at.Changed:Connect(function()if at.UserInputState~=Enum. -UserInputState.End then return end ap=false if as and as.Connected then as:Disconnect()as=nil end end)end)C:GiveSignal(k -.InputChanged:Connect(function(at:InputObject)if(not an and not C.Toggled)or(ao and C.CantDragForced)or not(ai and ai. -Parent)then ap=false if as and as.Connected then as:Disconnect()as=nil end return end if ap and M(at)then local au=at. -Position-aq al.Position=UDim2.new(ar.X.Scale,ar.X.Offset+au.X,ar.Y.Scale,ar.Y.Offset+au.Y)end end))end function C. -MakeResizable(ak,al:GuiObject,am:GuiObject,an:(()->())?)local ao,ap,aq,ar=false am.InputBegan:Connect(function(as: -InputObject)if not L(as)then return end ap=as.Position aq=al.Size ao=true ar=as.Changed:Connect(function()if as. -UserInputState~=Enum.UserInputState.End then return end ao=false if ar and ar.Connected then ar:Disconnect()ar=nil end -end)end)C:GiveSignal(k.InputChanged:Connect(function(as:InputObject)if not al.Visible or not(ai and ai.Parent)then ao= -false if ar and ar.Connected then ar:Disconnect()ar=nil end return end if ao and M(as)then local at=as.Position-ap al. -Size=UDim2.new(aq.X.Scale,math.clamp(aq.X.Offset+at.X,C.MinSize.X,math.huge),aq.Y.Scale,math.clamp(aq.Y.Offset+at.Y,C. -MinSize.Y,math.huge))if an then C:SafeCallback(an)end end end))end function C.MakeCover(ak,al:GuiObject,am:string)local -an,ao=E[am]or{0,0},F[am]or{1,0.5}local ap=af('Frame',{AnchorPoint=Vector2.new(an[1],an[2]),BackgroundColor3=al. -BackgroundColor3,Position=UDim2.fromScale(an[1],an[2]),Size=UDim2.fromScale(ao[1],ao[2]),Parent=al})return ap end -function C.MakeLine(ak,al:GuiObject,am)local an=af('Frame',{AnchorPoint=am.AnchorPoint or Vector2.zero,BackgroundColor3= -'OutlineColor',Position=am.Position,Size=am.Size,ZIndex=am.ZIndex or al.ZIndex,Parent=al})return an end function C. -AddOutline(ak,al:GuiObject)local am,an=af('UIStroke',{Color='OutlineColor',Thickness=1,ZIndex=2,Parent=al}),af( -'UIStroke',{Color='DarkColor',Thickness=1.5,ZIndex=1,Parent=al})return am,an end function C.AddBlank(ak,al:GuiObject,am: -UDim2)return af('Frame',{BackgroundTransparency=1,Size=am or UDim2.fromScale(0,0),Parent=al})end function C.MakeOutline( -ak,al:GuiObject,am:number?,an:number?)warn -[[Obsidian:MakeOutline is deprecated, please use Obsidian:AddOutline instead.]]local ao=af('Frame',{BackgroundColor3= -'DarkColor',Position=UDim2.fromOffset(-2,-2),Size=UDim2.new(1,4,1,4),ZIndex=an,Parent=al})local ap=af('Frame',{ -BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(1,1),Size=UDim2.new(1,-2,1,-2),ZIndex=an,Parent=ao})if am and -am>0 then af('UICorner',{CornerRadius=UDim.new(0,am+1),Parent=ao})af('UICorner',{CornerRadius=UDim.new(0,am),Parent=ap}) -end return ao,ap end function C.AddDraggableLabel(ak,al:string)local am,an={},af('TextLabel',{AutomaticSize=Enum. -AutomaticSize.XY,BackgroundColor3='BackgroundColor',Size=UDim2.fromOffset(0,0),Position=UDim2.fromOffset(6,6),Text=al, -TextSize=15,ZIndex=10,Parent=ai})af('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius),Parent=an})af('UIPadding',{ -PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),PaddingTop=UDim.new(0,6),Parent=an}) -table.insert(C.Scales,af('UIScale',{Parent=an}))C:AddOutline(an)C:MakeDraggable(an,an,true)am.Label=an function am. -SetText(ao,ap:string)an.Text=ap end function am.SetVisible(ao,ap:boolean)an.Visible=ap end return am end function C. -AddDraggableButton(ak,al:string,am,an:boolean?)local ao,ap={},af('TextButton',{BackgroundColor3='BackgroundColor', -Position=UDim2.fromOffset(6,6),TextSize=16,ZIndex=10,Parent=ai})af('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius), -Parent=ap})if not an then table.insert(C.Scales,af('UIScale',{Parent=ap}))end C:AddOutline(ap)ap.MouseButton1Click: -Connect(function()C:SafeCallback(am,ao)end)C:MakeDraggable(ap,ap,true)ao.Button=ap function ao.SetText(aq,ar:string) -local as,at=C:GetTextBounds(ar,C.Scheme.Font,16)ap.Text=ar ap.Size=UDim2.fromOffset(as*2,at*2)end ao:SetText(al)return -ao end function C.AddDraggableMenu(ak,al:string)local am=af('Frame',{AutomaticSize=Enum.AutomaticSize.XY, -BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(0,0),ZIndex=10,Parent=ai})af( -'UICorner',{CornerRadius=UDim.new(0,C.CornerRadius),Parent=am})table.insert(C.Scales,af('UIScale',{Parent=am}))C: -AddOutline(am)C:MakeLine(am,{Position=UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local an=af('TextLabel',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Text=al,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,Parent=am} -)af('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=an})local ao=af('Frame',{ -BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=am})af('UIListLayout',{Padding -=UDim.new(0,7),Parent=ao})af('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0, -7),PaddingTop=UDim.new(0,7),Parent=ao})C:MakeDraggable(am,an,true)return am,ao end do local ak=C:AddDraggableLabel''ak: -SetVisible(false)function C.SetWatermark(al,am:string)warn -[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]ak:SetText(am)end function C. -SetWatermarkVisibility(al,am:boolean)warn[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]ak: -SetVisible(am)end end local ak function C.AddContextMenu(al,am:GuiObject,an:UDim2|(()->()),ao:{[number]:number}|(()->{}) -,ap:number?,aq:((Active:boolean)->())?)local ar if ap then ar=af('ScrollingFrame',{AutomaticCanvasSize=ap==2 and Enum. -AutomaticSize.Y or Enum.AutomaticSize.None,AutomaticSize=ap==1 and Enum.AutomaticSize.Y or Enum.AutomaticSize.None, +end)function C.GetIcon(af,ag:string)if not ad then return end local ah,ai=pcall(ae.GetAsset,ag)if not ah then return end +return ai end function C.GetCustomIcon(af,ag:string)if not IsValidCustomIcon(ag)then return C:GetIcon(ag)else return{Url +=ag,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true}end end function C.Validate(af,ag:{[string]:any} +,ah:{[string]:any}):{[string]:any}if typeof(ag)~='table'then return ah end for ai,X in ah do if typeof(ai)=='number'then +continue end if typeof(X)=='table'then ag[ai]=C:Validate(ag[ai],X)elseif ag[ai]==nil then ag[ai]=X end end return ag end +local function af(ag:{[string]:any},ah:GuiObject)local ai=C.Registry[ah]or{}for X,Y in ag do if ai[X]then ai[X]=nil +elseif X~='Text'then local Z=I(Y)if Z or typeof(Y)=='function'then ai[X]=Y Y=Z or Y()end end ah[X]=Y end if O(ai)>0 then +C.Registry[ah]=ai end end local function ag(ah:string,ai:{[string]:any}):any local X=Instance.new(ah)if D[ah]then af(D[ +ah],X)end af(ai,X)if ai.Parent and not ai.ZIndex then pcall(function()X.ZIndex=ai.Parent.ZIndex end)end return X end +local function ah(ai:Instance,X:Instance|(()->Instance))local Y,Z=pcall(function()if not X then X=g end local Y if +typeof(X)=='function'then Y=X()else Y=X end ai.Parent=Y end)if not(Y and ai.Parent)then ai.Parent=C.LocalPlayer: +WaitForChild('PlayerGui',math.huge)end end local function ai(X:Instance,Y:boolean?)if Y then ah(X,g)return end pcall(q,X +)ah(X,r)end local X=ag('ScreenGui',{Name='Obsidian',DisplayOrder=999,ResetOnSpawn=false})ai(X)C.ScreenGui=X X. +DescendantRemoving:Connect(function(Y)C:RemoveFromRegistry(Y)end)local Y,Z,_=(ag('TextButton',{BackgroundTransparency=1, +Modal=false,Size=UDim2.fromScale(0,0),AnchorPoint=Vector2.zero,Text='',ZIndex=-999,Parent=X}))do Z=ag('Frame',{ +AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size=UDim2.fromOffset(9,1),Visible=false,ZIndex=999, +Parent=X})ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5), +Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=Z})local aj=ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3= +'WhiteColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.fromOffset(1,9),Parent=Z})ag('Frame',{AnchorPoint=Vector2.new( +0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=aj})_= +ag('ImageLabel',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0.5),Size=UDim2. +fromOffset(20,20),ZIndex=1000,Visible=false,Parent=Z})end local aj,ak do aj=ag('Frame',{AnchorPoint=Vector2.new(1,0), +BackgroundTransparency=1,Position=UDim2.new(1,-6,0,6),Size=UDim2.new(0,300,1,-6),Parent=X})table.insert(C.Scales,ag( +'UIScale',{Parent=aj}))ak=ag('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,8), +Parent=aj})end function C.ResetCursorIcon(al)_.Visible=false _.Size=UDim2.fromOffset(20,20)end function C. +ChangeCursorIcon(al,am:string)if not am or am==''then C:ResetCursorIcon()return end local an=C:GetCustomIcon(am)assert( +an,[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])_.Visible=true _.Image=an.Url _. +ImageRectOffset=an.ImageRectOffset _.ImageRectSize=an.ImageRectSize end function C.ChangeCursorIconSize(al,am:UDim2) +assert(typeof(am)=='UDim2','UDim2 expected.')_.Size=am end function C.GetBetterColor(al,am:Color3,an:number):Color3 an= +an*(C.IsLightTheme and-4 or 2)return Color3.fromRGB(math.clamp(am.R*255+an,0,255),math.clamp(am.G*255+an,0,255),math. +clamp(am.B*255+an,0,255))end function C.GetLighterColor(al,am:Color3):Color3 local an,ao,ap=am:ToHSV()return Color3. +fromHSV(an,math.max(0,ao-0.1),math.min(1,ap+0.1))end function C.GetDarkerColor(al,am:Color3):Color3 local an,ao,ap=am: +ToHSV()return Color3.fromHSV(an,ao,ap/2)end function C.GetKeyString(al,am:Enum.KeyCode)if am.EnumType==Enum.KeyCode and +am.Value>33 and am.Value<127 then return string.char(am.Value)end return am.Name end function C.GetTextBounds(al,am: +string,an:Font,ao:number,ap:number?):(number,number)local aq=Instance.new'GetTextBoundsParams'aq.Text=am aq.RichText= +true aq.Font=an aq.Size=ao aq.Width=ap or workspace.CurrentCamera.ViewportSize.X-32 local ar=l:GetTextBoundsAsync(aq) +return ar.X,ar.Y end function C.MouseIsOverFrame(al,am:GuiObject,an:Vector2):boolean local ao,ap=am.AbsolutePosition,am. +AbsoluteSize return an.X>=ao.X and an.X<=ao.X+ap.X and an.Y>=ao.Y and an.Y<=ao.Y+ap.Y end function C.SafeCallback(al,am: +(...any)->...any,...:any)if not(am and typeof(am)=='function')then return end local an=table.pack(xpcall(am,function(an) +task.defer(error,debug.traceback(an,2))if C.NotifyOnError then C:Notify(an)end return an end,...))if not an[1]then +return nil end return table.unpack(an,2,an.n)end function C.MakeDraggable(al,am:GuiObject,an:GuiObject,ao:boolean?,ap: +boolean?)local aq,ar,as,at=false an.InputBegan:Connect(function(au:InputObject)if not L(au)or ap and C.CantDragForced +then return end ar=au.Position as=am.Position aq=true at=au.Changed:Connect(function()if au.UserInputState~=Enum. +UserInputState.End then return end aq=false if at and at.Connected then at:Disconnect()at=nil end end)end)C:GiveSignal(k +.InputChanged:Connect(function(au:InputObject)if(not ao and not C.Toggled)or(ap and C.CantDragForced)or not(X and X. +Parent)then aq=false if at and at.Connected then at:Disconnect()at=nil end return end if aq and M(au)then local av=au. +Position-ar am.Position=UDim2.new(as.X.Scale,as.X.Offset+av.X,as.Y.Scale,as.Y.Offset+av.Y)end end))end function C. +MakeResizable(al,am:GuiObject,an:GuiObject,ao:(()->())?)local ap,aq,ar,as=false an.InputBegan:Connect(function(at: +InputObject)if not L(at)then return end aq=at.Position ar=am.Size ap=true as=at.Changed:Connect(function()if at. +UserInputState~=Enum.UserInputState.End then return end ap=false if as and as.Connected then as:Disconnect()as=nil end +end)end)C:GiveSignal(k.InputChanged:Connect(function(at:InputObject)if not am.Visible or not(X and X.Parent)then ap= +false if as and as.Connected then as:Disconnect()as=nil end return end if ap and M(at)then local au=at.Position-aq am. +Size=UDim2.new(ar.X.Scale,math.clamp(ar.X.Offset+au.X,C.MinSize.X,math.huge),ar.Y.Scale,math.clamp(ar.Y.Offset+au.Y,C. +MinSize.Y,math.huge))if ao then C:SafeCallback(ao)end end end))end function C.MakeCover(al,am:GuiObject,an:string)local +ao,ap=E[an]or{0,0},F[an]or{1,0.5}local aq=ag('Frame',{AnchorPoint=Vector2.new(ao[1],ao[2]),BackgroundColor3=am. +BackgroundColor3,Position=UDim2.fromScale(ao[1],ao[2]),Size=UDim2.fromScale(ap[1],ap[2]),Parent=am})return aq end +function C.MakeLine(al,am:GuiObject,an)local ao=ag('Frame',{AnchorPoint=an.AnchorPoint or Vector2.zero,BackgroundColor3= +'OutlineColor',Position=an.Position,Size=an.Size,ZIndex=an.ZIndex or am.ZIndex,Parent=am})return ao end function C. +AddOutline(al,am:GuiObject)local an,ao=ag('UIStroke',{Color='OutlineColor',Thickness=1,ZIndex=2,Parent=am}),ag( +'UIStroke',{Color='DarkColor',Thickness=1.5,ZIndex=1,Parent=am})return an,ao end function C.AddBlank(al,am:GuiObject,an: +UDim2)return ag('Frame',{BackgroundTransparency=1,Size=an or UDim2.fromScale(0,0),Parent=am})end function C.MakeOutline( +al,am:GuiObject,an:number?,ao:number?)warn +[[Obsidian:MakeOutline is deprecated, please use Obsidian:AddOutline instead.]]local ap=ag('Frame',{BackgroundColor3= +'DarkColor',Position=UDim2.fromOffset(-2,-2),Size=UDim2.new(1,4,1,4),ZIndex=ao,Parent=am})local aq=ag('Frame',{ +BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(1,1),Size=UDim2.new(1,-2,1,-2),ZIndex=ao,Parent=ap})if an and +an>0 then ag('UICorner',{CornerRadius=UDim.new(0,an+1),Parent=ap})ag('UICorner',{CornerRadius=UDim.new(0,an),Parent=aq}) +end return ap,aq end function C.AddDraggableLabel(al,am:string)local an,ao={},ag('TextLabel',{AutomaticSize=Enum. +AutomaticSize.XY,BackgroundColor3='BackgroundColor',Size=UDim2.fromOffset(0,0),Position=UDim2.fromOffset(6,6),Text=am, +TextSize=15,ZIndex=10,Parent=X})ag('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius),Parent=ao})ag('UIPadding',{ +PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),PaddingTop=UDim.new(0,6),Parent=ao}) +table.insert(C.Scales,ag('UIScale',{Parent=ao}))C:AddOutline(ao)C:MakeDraggable(ao,ao,true)an.Label=ao function an. +SetText(ap,aq:string)ao.Text=aq end function an.SetVisible(ap,aq:boolean)ao.Visible=aq end return an end function C. +AddDraggableButton(al,am:string,an,ao:boolean?)local ap,aq={},ag('TextButton',{BackgroundColor3='BackgroundColor', +Position=UDim2.fromOffset(6,6),TextSize=16,ZIndex=10,Parent=X})ag('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius), +Parent=aq})if not ao then table.insert(C.Scales,ag('UIScale',{Parent=aq}))end C:AddOutline(aq)aq.MouseButton1Click: +Connect(function()C:SafeCallback(an,ap)end)C:MakeDraggable(aq,aq,true)ap.Button=aq function ap.SetText(ar,as:string) +local at,au=C:GetTextBounds(as,C.Scheme.Font,16)aq.Text=as aq.Size=UDim2.fromOffset(at*2,au*2)end ap:SetText(am)return +ap end function C.AddDraggableMenu(al,am:string)local an=ag('Frame',{AutomaticSize=Enum.AutomaticSize.XY, +BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(0,0),ZIndex=10,Parent=X})ag( +'UICorner',{CornerRadius=UDim.new(0,C.CornerRadius),Parent=an})table.insert(C.Scales,ag('UIScale',{Parent=an}))C: +AddOutline(an)C:MakeLine(an,{Position=UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local ao=ag('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Text=am,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,Parent=an} +)ag('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=ao})local ap=ag('Frame',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=an})ag('UIListLayout',{Padding +=UDim.new(0,7),Parent=ap})ag('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0, +7),PaddingTop=UDim.new(0,7),Parent=ap})C:MakeDraggable(an,ao,true)return an,ap end do local al=C:AddDraggableLabel''al: +SetVisible(false)function C.SetWatermark(am,an:string)warn +[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]al:SetText(an)end function C. +SetWatermarkVisibility(am,an:boolean)warn[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]al: +SetVisible(an)end end local al function C.AddContextMenu(am,an:GuiObject,ao:UDim2|(()->()),ap:{[number]:number}|(()->{}) +,aq:number?,ar:((Active:boolean)->())?)local as if aq then as=ag('ScrollingFrame',{AutomaticCanvasSize=aq==2 and Enum. +AutomaticSize.Y or Enum.AutomaticSize.None,AutomaticSize=aq==1 and Enum.AutomaticSize.Y or Enum.AutomaticSize.None, BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,BottomImage= 'rbxasset://textures/ui/Scroll/scroll-middle.png',CanvasSize=UDim2.fromOffset(0,0),ScrollBarImageColor3='OutlineColor', -ScrollBarThickness=ap==2 and 2 or 0,Size=typeof(an)=='function'and an()or an,TopImage= -'rbxasset://textures/ui/Scroll/scroll-middle.png',Visible=false,ZIndex=10,Parent=ai})else ar=af('Frame',{ -BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=typeof(an)=='function'and an()or -an,Visible=false,ZIndex=10,Parent=ai})end table.insert(C.Scales,af('UIScale',{Parent=ar}))local as={Active=false,Holder= -am,Menu=ar,List=nil,Signal=nil,Size=an}if ap then as.List=af('UIListLayout',{Parent=ar})end function as.Open(at)if ak== -as then return elseif ak then ak:Close()end ak=as as.Active=true if typeof(ao)=='function'then ar.Position=UDim2. -fromOffset(math.floor(am.AbsolutePosition.X+ao()[1]),math.floor(am.AbsolutePosition.Y+ao()[2]))else ar.Position=UDim2. -fromOffset(math.floor(am.AbsolutePosition.X+ao[1]),math.floor(am.AbsolutePosition.Y+ao[2]))end ar.Size=typeof(as.Size)== -'function'and as.Size()or as.Size if typeof(aq)=='function'then C:SafeCallback(aq,true)end ar.Visible=true as.Signal=am: -GetPropertyChangedSignal'AbsolutePosition':Connect(function()if typeof(ao)=='function'then ar.Position=UDim2.fromOffset( -math.floor(am.AbsolutePosition.X+ao()[1]),math.floor(am.AbsolutePosition.Y+ao()[2]))else ar.Position=UDim2.fromOffset( -math.floor(am.AbsolutePosition.X+ao[1]),math.floor(am.AbsolutePosition.Y+ao[2]))end end)end function as.Close(at)if ak~= -as then return end ar.Visible=false if as.Signal then as.Signal:Disconnect()as.Signal=nil end as.Active=false ak=nil if -typeof(aq)=='function'then C:SafeCallback(aq,false)end end function as.Toggle(at)if as.Active then as:Close()else as: -Open()end end function as.SetSize(at,au)as.Size=au ar.Size=typeof(au)=='function'and au()or au end return as end C: -GiveSignal(k.InputBegan:Connect(function(al:InputObject)if C.Unloaded then return end if L(al,true)then local am=al. -Position if ak and not(C:MouseIsOverFrame(ak.Menu,am)or C:MouseIsOverFrame(ak.Holder,am))then ak:Close()end end end)) -local al=af('TextLabel',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',BorderColor3= -'OutlineColor',BorderSizePixel=1,TextSize=14,TextWrapped=true,Visible=false,ZIndex=20,Parent=ai})af('UIPadding',{ -PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,4),PaddingRight=UDim.new(0,4),PaddingTop=UDim.new(0,2),Parent=al}) -table.insert(C.Scales,af('UIScale',{Parent=al}))al:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if C. -Unloaded then return end local am,an=C:GetTextBounds(al.Text,al.FontFace,al.TextSize,(workspace.CurrentCamera. -ViewportSize.X-al.AbsolutePosition.X-8)/C.DPIScale)al.Size=UDim2.fromOffset(am+8)end)local am function C.AddTooltip(an, -ao:string,ap:string,aq:GuiObject)local ar={Disabled=false,Hovering=false,Signals={}}local function as()if am==aq or(ak -and C:MouseIsOverFrame(ak.Menu,t))or(ar.Disabled and typeof(ap)~='string')or(not ar.Disabled and typeof(ao)~='string') -then return end am=aq al.Text=ar.Disabled and ap or ao al.Visible=true while C.Toggled and C:MouseIsOverFrame(aq,t)and -not(ak and C:MouseIsOverFrame(ak.Menu,t))do al.Position=UDim2.fromOffset(t.X+(C.ShowCustomCursor and 8 or 14),t.Y+(C. -ShowCustomCursor and 8 or 12))i.RenderStepped:Wait()end al.Visible=false am=nil end local function at(au: -RBXScriptConnection|RBXScriptSignal)local av=typeof(au)if au and(av=='RBXScriptConnection'or av=='RBXScriptSignal')then -table.insert(ar.Signals,au)end return au end at(aq.MouseEnter:Connect(as))at(aq.MouseMoved:Connect(as))at(aq.MouseLeave: -Connect(function()if am~=aq then return end al.Visible=false am=nil end))function ar.Destroy(au)for av=#ar.Signals,1,-1 -do local aw=table.remove(ar.Signals,av)if aw and aw.Connected then aw:Disconnect()end end if am==aq then if al then al. -Visible=false end am=nil end end table.insert(y,al)return ar end function C.OnUnload(an,ao)table.insert(C.UnloadSignals, -ao)end function C.Unload(an)for ao=#C.Signals,1,-1 do local ap=table.remove(C.Signals,ao)if ap and ap.Connected then ap: -Disconnect()end end for ao,ap in C.UnloadSignals do C:SafeCallback(ap)end for ao,ap in y do C:SafeCallback(ap.Destroy,ap -)end C.Unloaded=true ai:Destroy()o().Library=nil end local an,ao,ap,aq,ar=C:GetIcon'check',C:GetIcon'chevron-up',C: -GetIcon'move-diagonal-2',C:GetIcon'key',C:GetIcon'move'function C.SetIconModule(as,at:IconModule)ac=true ad=at an=C: -GetIcon'check'ao=C:GetIcon'chevron-up'ap=C:GetIcon'move-diagonal-2'aq=C:GetIcon'key'ar=C:GetIcon'move'end local as={}do -local at={}function at.AddKeyPicker(au,av,aw)aw=C:Validate(aw,D.KeyPicker)local ax=au local ay,az=ax.TextLabel,{Text=aw. -Text,Value=aw.Default,Modifiers=aw.DefaultModifiers,DisplayValue=aw.Default,Toggled=false,Mode=aw.Mode,SyncToggleState= -aw.SyncToggleState,Callback=aw.Callback,ChangedCallback=aw.ChangedCallback,Changed=aw.Changed,Clicked=aw.Clicked,Type= -'KeyPicker'}if az.Mode=='Press'then assert(ax.Type=='Label', -[[KeyPicker with the mode 'Press' can be only applied on Labels.]])az.SyncToggleState=false aw.Modes={'Press'}aw.Mode= -'Press'end if az.SyncToggleState then aw.Modes={'Toggle','Hold'}if not table.find(aw.Modes,aw.Mode)then aw.Mode='Toggle' -end end local aA,aB,aC,aD,aE=false,{MB1=Enum.UserInputType.MouseButton1,MB2=Enum.UserInputType.MouseButton2,MB3=Enum. +ScrollBarThickness=aq==2 and 2 or 0,Size=typeof(ao)=='function'and ao()or ao,TopImage= +'rbxasset://textures/ui/Scroll/scroll-middle.png',Visible=false,ZIndex=10,Parent=X})else as=ag('Frame',{BackgroundColor3 +='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=typeof(ao)=='function'and ao()or ao,Visible=false, +ZIndex=10,Parent=X})end table.insert(C.Scales,ag('UIScale',{Parent=as}))local at={Active=false,Holder=an,Menu=as,List= +nil,Signal=nil,Size=ao}if aq then at.List=ag('UIListLayout',{Parent=as})end function at.Open(au)if al==at then return +elseif al then al:Close()end al=at at.Active=true if typeof(ap)=='function'then as.Position=UDim2.fromOffset(math.floor( +an.AbsolutePosition.X+ap()[1]),math.floor(an.AbsolutePosition.Y+ap()[2]))else as.Position=UDim2.fromOffset(math.floor(an +.AbsolutePosition.X+ap[1]),math.floor(an.AbsolutePosition.Y+ap[2]))end as.Size=typeof(at.Size)=='function'and at.Size() +or at.Size if typeof(ar)=='function'then C:SafeCallback(ar,true)end as.Visible=true at.Signal=an: +GetPropertyChangedSignal'AbsolutePosition':Connect(function()if typeof(ap)=='function'then as.Position=UDim2.fromOffset( +math.floor(an.AbsolutePosition.X+ap()[1]),math.floor(an.AbsolutePosition.Y+ap()[2]))else as.Position=UDim2.fromOffset( +math.floor(an.AbsolutePosition.X+ap[1]),math.floor(an.AbsolutePosition.Y+ap[2]))end end)end function at.Close(au)if al~= +at then return end as.Visible=false if at.Signal then at.Signal:Disconnect()at.Signal=nil end at.Active=false al=nil if +typeof(ar)=='function'then C:SafeCallback(ar,false)end end function at.Toggle(au)if at.Active then at:Close()else at: +Open()end end function at.SetSize(au,av)at.Size=av as.Size=typeof(av)=='function'and av()or av end return at end C: +GiveSignal(k.InputBegan:Connect(function(am:InputObject)if C.Unloaded then return end if L(am,true)then local an=am. +Position if al and not(C:MouseIsOverFrame(al.Menu,an)or C:MouseIsOverFrame(al.Holder,an))then al:Close()end end end)) +local am=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,TextSize=14,TextWrapped=true,Visible=false,ZIndex=20,Parent=X})ag('UIPadding',{ +PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,4),PaddingRight=UDim.new(0,4),PaddingTop=UDim.new(0,2),Parent=am}) +table.insert(C.Scales,ag('UIScale',{Parent=am}))am:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if C. +Unloaded then return end local an,ao=C:GetTextBounds(am.Text,am.FontFace,am.TextSize,(workspace.CurrentCamera. +ViewportSize.X-am.AbsolutePosition.X-8)/C.DPIScale)am.Size=UDim2.fromOffset(an+8)end)local an function C.AddTooltip(ao, +ap:string,aq:string,ar:GuiObject)local as={Disabled=false,Hovering=false,Signals={}}local function at()if an==ar or(al +and C:MouseIsOverFrame(al.Menu,t))or(as.Disabled and typeof(aq)~='string')or(not as.Disabled and typeof(ap)~='string') +then return end an=ar am.Text=as.Disabled and aq or ap am.Visible=true while C.Toggled and C:MouseIsOverFrame(ar,t)and +not(al and C:MouseIsOverFrame(al.Menu,t))do am.Position=UDim2.fromOffset(t.X+(C.ShowCustomCursor and 8 or 14),t.Y+(C. +ShowCustomCursor and 8 or 12))i.RenderStepped:Wait()end am.Visible=false an=nil end local function au(av: +RBXScriptConnection|RBXScriptSignal)local aw=typeof(av)if av and(aw=='RBXScriptConnection'or aw=='RBXScriptSignal')then +table.insert(as.Signals,av)end return av end au(ar.MouseEnter:Connect(at))au(ar.MouseMoved:Connect(at))au(ar.MouseLeave: +Connect(function()if an~=ar then return end am.Visible=false an=nil end))function as.Destroy(av)for aw=#as.Signals,1,-1 +do local ax=table.remove(as.Signals,aw)if ax and ax.Connected then ax:Disconnect()end end if an==ar then if am then am. +Visible=false end an=nil end end table.insert(y,am)return as end function C.OnUnload(ao,ap)table.insert(C.UnloadSignals, +ap)end function C.Unload(ao)for ap=#C.Signals,1,-1 do local aq=table.remove(C.Signals,ap)if aq and aq.Connected then aq: +Disconnect()end end for ap,aq in C.UnloadSignals do C:SafeCallback(aq)end for ap,aq in y do C:SafeCallback(aq.Destroy,aq +)end C.Unloaded=true X:Destroy()o().Library=nil end local ao,ap,aq,ar,as=C:GetIcon'check',C:GetIcon'chevron-up',C: +GetIcon'move-diagonal-2',C:GetIcon'key',C:GetIcon'move'function C.SetIconModule(at,au:IconModule)ad=true ae=au ao=C: +GetIcon'check'ap=C:GetIcon'chevron-up'aq=C:GetIcon'move-diagonal-2'ar=C:GetIcon'key'as=C:GetIcon'move'end local at={}do +local au={}function au.AddKeyPicker(av,aw,ax)ax=C:Validate(ax,D.KeyPicker)local ay=av local az,aA=ay.TextLabel,{Text=ax. +Text,Value=ax.Default,Modifiers=ax.DefaultModifiers,DisplayValue=ax.Default,Toggled=false,Mode=ax.Mode,SyncToggleState= +ax.SyncToggleState,Callback=ax.Callback,ChangedCallback=ax.ChangedCallback,Changed=ax.Changed,Clicked=ax.Clicked,Type= +'KeyPicker'}if aA.Mode=='Press'then assert(ay.Type=='Label', +[[KeyPicker with the mode 'Press' can be only applied on Labels.]])aA.SyncToggleState=false ax.Modes={'Press'}ax.Mode= +'Press'end if aA.SyncToggleState then ax.Modes={'Toggle','Hold'}if not table.find(ax.Modes,ax.Mode)then ax.Mode='Toggle' +end end local aB,aC,aD,aE,aF=false,{MB1=Enum.UserInputType.MouseButton1,MB2=Enum.UserInputType.MouseButton2,MB3=Enum. UserInputType.MouseButton3},{[Enum.UserInputType.MouseButton1]='MB1',[Enum.UserInputType.MouseButton2]='MB2',[Enum. UserInputType.MouseButton3]='MB3'},{LAlt=Enum.KeyCode.LeftAlt,RAlt=Enum.KeyCode.RightAlt,LCtrl=Enum.KeyCode.LeftControl, RCtrl=Enum.KeyCode.RightControl,LShift=Enum.KeyCode.LeftShift,RShift=Enum.KeyCode.RightShift,Tab=Enum.KeyCode.Tab, CapsLock=Enum.KeyCode.CapsLock},{[Enum.KeyCode.LeftAlt]='LAlt',[Enum.KeyCode.RightAlt]='RAlt',[Enum.KeyCode.LeftControl] ='LCtrl',[Enum.KeyCode.RightControl]='RCtrl',[Enum.KeyCode.LeftShift]='LShift',[Enum.KeyCode.RightShift]='RShift',[Enum. -KeyCode.Tab]='Tab',[Enum.KeyCode.CapsLock]='CapsLock'}local aF,aG=function(aF)return aF.UserInputType==Enum. -UserInputType.Keyboard and aE[aF.KeyCode]~=nil end,function()local aF={}for aG,aH in aD do if table.find(aF,aG)then -continue end if not k:IsKeyDown(aH)then continue end table.insert(aF,aG)end return aF end local aH,aI,aJ,aK=function(aH) -if not(typeof(aH)=='table'and O(aH)>0)then return true end local aI,aJ=aG(),true for aK,aL in aH do if table.find(aI,aL) -then continue end aJ=false break end return aJ end,function(aH)if not aH then return false end if aC[aH.UserInputType]~= -nil then return k:IsMouseButtonPressed(aH.UserInputType)and not k:GetFocusedTextBox()elseif aH.UserInputType==Enum. -UserInputType.Keyboard then return k:IsKeyDown(aH.KeyCode)and not k:GetFocusedTextBox()else return false end end, -function(aH)local aI={}for aJ,aK in aH do table.insert(aI,aD[aK])end return aI end,function(aH)if typeof(aH)~='table' -then return{}end local aI={}for aJ,aK in aH do if not aD[aK]then continue end table.insert(aI,aK)end return aI end az. -Modifiers=aK(az.Modifiers)local aL,aM=af('TextButton',{BackgroundColor3='MainColor',BorderColor3='OutlineColor', -BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text=az.Value,TextSize=14,Parent=ay}),{Normal=az.Mode~='Toggle'}do local -aN=af('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,16),Text='',Visible=not aw.NoUI,Parent=C. -KeybindContainer})local aO,aP=af('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2. -fromScale(0,1),Text='',TextSize=14,TextTransparency=0.5,Parent=aN}),af('Frame',{AnchorPoint=Vector2.new(0,0.5), +KeyCode.Tab]='Tab',[Enum.KeyCode.CapsLock]='CapsLock'}local aG,aH=function(aG)return aG.UserInputType==Enum. +UserInputType.Keyboard and aF[aG.KeyCode]~=nil end,function()local aG={}for aH,aI in aE do if table.find(aG,aH)then +continue end if not k:IsKeyDown(aI)then continue end table.insert(aG,aH)end return aG end local aI,aJ,aK,aL=function(aI) +if not(typeof(aI)=='table'and O(aI)>0)then return true end local aJ,aK=aH(),true for aL,aM in aI do if table.find(aJ,aM) +then continue end aK=false break end return aK end,function(aI)if not aI then return false end if aD[aI.UserInputType]~= +nil then return k:IsMouseButtonPressed(aI.UserInputType)and not k:GetFocusedTextBox()elseif aI.UserInputType==Enum. +UserInputType.Keyboard then return k:IsKeyDown(aI.KeyCode)and not k:GetFocusedTextBox()else return false end end, +function(aI)local aJ={}for aK,aL in aI do table.insert(aJ,aE[aL])end return aJ end,function(aI)if typeof(aI)~='table' +then return{}end local aJ={}for aK,aL in aI do if not aE[aL]then continue end table.insert(aJ,aL)end return aJ end aA. +Modifiers=aL(aA.Modifiers)local aM,aN=ag('TextButton',{BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text=aA.Value,TextSize=14,Parent=az}),{Normal=aA.Mode~='Toggle'}do local +aO=ag('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,16),Text='',Visible=not ax.NoUI,Parent=C. +KeybindContainer})local aP,aQ=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2. +fromScale(0,1),Text='',TextSize=14,TextTransparency=0.5,Parent=aO}),ag('Frame',{AnchorPoint=Vector2.new(0,0.5), BackgroundColor3='MainColor',Position=UDim2.fromScale(0,0.5),Size=UDim2.fromOffset(14,14),SizeConstraint=Enum. -SizeConstraint.RelativeYY,Parent=aN})af('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius/2),Parent=aP})af('UIStroke',{ -Color='OutlineColor',Parent=aP})local aQ=af('ImageLabel',{Image=an and an.Url or'',ImageColor3='FontColor', -ImageRectOffset=an and an.ImageRectOffset or Vector2.zero,ImageRectSize=an and an.ImageRectSize or Vector2.zero, -ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=aP})function aM.Display(aR,aS)aO. -TextTransparency=aS and 0 or 0.5 aQ.ImageTransparency=aS and 0 or 1 end function aM.SetText(aR,aS)aO.Text=aS end -function aM.SetVisibility(aR,aS)aN.Visible=aS end function aM.SetNormal(aR,aS)aM.Normal=aS aN.Active=not aS aO.Position= -aS and UDim2.fromOffset(0,0)or UDim2.fromOffset(22,0)aP.Visible=not aS end az.DoClick=function(...)end aN. -MouseButton1Click:Connect(function()if aM.Normal then return end az.Toggled=not az.Toggled az:DoClick()end)aM.Holder=aN -aM.Label=aO aM.Checkbox=aP aM.Loaded=true table.insert(C.KeybindToggles,aM)end local aN=C:AddContextMenu(aL,UDim2. -fromOffset(62,0),function()return{aL.AbsoluteSize.X+1.5,0.5}end,1)az.Menu=aN local aO={}for aP,aQ in aw.Modes do local -aR,aS={},af('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=aQ, -TextSize=14,TextTransparency=0.5,Parent=aN.Menu})function aR.Select(aT)for aU,aV in aO do aV:Deselect()end az.Mode=aQ aS -.BackgroundTransparency=0 aS.TextTransparency=0 aN:Close()end function aR.Deselect(aT)az.Mode=nil aS. -BackgroundTransparency=1 aS.TextTransparency=0.5 end aS.MouseButton1Click:Connect(function()aR:Select()end)if az.Mode== -aQ then aR:Select()end aO[aQ]=aR end function az.Display(aP,aQ)if C.Unloaded then return end local aR,aS=C: -GetTextBounds(aQ or az.DisplayValue,aL.FontFace,aL.TextSize,ay.AbsoluteSize.X)aL.Text=aQ or az.DisplayValue aL.Size= -UDim2.fromOffset((aR+9),(aS+4))end function az.Update(aP)az:Display()if aw.NoUI then return end if az.Mode=='Toggle'and -ax.Type=='Toggle'and ax.Disabled then aM:SetVisibility(false)return end local aQ,aR=az:GetState(),C. -ShowToggleFrameInKeybinds and az.Mode=='Toggle'if az.SyncToggleState and ax.Value~=aQ then ax:SetValue(aQ)end if aM. -Loaded then if aR then aM:SetNormal(false)else aM:SetNormal(true)end aM:SetText(('[%s] %s (%s)'):format(az.DisplayValue, -az.Text,az.Mode))aM:SetVisibility(true)aM:Display(aQ)end end function az.GetState(aP)if az.Mode=='Always'then return -true elseif az.Mode=='Hold'then local aQ=az.Value if aQ=='None'then return false end if not aH(az.Modifiers)then return -false end if aB[aQ]~=nil then return k:IsMouseButtonPressed(aB[aQ])and not k:GetFocusedTextBox()else return k:IsKeyDown( -Enum.KeyCode[aQ])and not k:GetFocusedTextBox()end else return az.Toggled end end function az.OnChanged(aP,aQ)az.Changed= -aQ end function az.OnClick(aP,aQ)az.Clicked=aQ end function az.DoClick(aP)if az.Mode=='Press'then if az.Toggled and aw. -WaitForCallback==true then return end az.Toggled=true end C:SafeCallback(az.Callback,az.Toggled)C:SafeCallback(az. -Clicked,az.Toggled)if az.Mode=='Press'then az.Toggled=false end end function az.SetValue(aP,aQ)local aR,aS,aT=aQ[1],aQ[2 -],aQ[3]local aU,aV=pcall(function()if aR=='None'then aR=nil return nil end if aB[aR]==nil then return Enum.KeyCode[aR] -end return aB[aR]end)if aR==nil then az.Value='None'elseif aU then az.Value=aR else az.Value='Unknown'end az.Modifiers= -aK(if typeof(aT)=='table'then aT else az.Modifiers)az.DisplayValue=if O(az.Modifiers)>0 then(table.concat(az.Modifiers, -' + ')..' + '..az.Value)else az.Value if aO[aS]then aO[aS]:Select()end local aW=aJ(az.Modifiers)C:SafeCallback(az. -ChangedCallback,aV,aW)C:SafeCallback(az.Changed,aV,aW)az:Update()end function az.SetText(aP,aQ)aM:SetText(aQ)az:Update() -end aL.MouseButton1Click:Connect(function()if aA then return end aA=true aL.Text='...'aL.Size=UDim2.fromOffset(29,18) -local aP,aQ={}local aR=function()aQ=k.InputBegan:Wait()return k:GetFocusedTextBox()~=nil end repeat task.wait()aL.Text= -'...'aL.Size=UDim2.fromOffset(29,18)if aR()then aA=false az:Update()return end if aQ.KeyCode==Enum.KeyCode.Escape then -break end if aF(aQ)then local aS=false repeat task.wait()if k:IsKeyDown(aQ.KeyCode)then task.wait(0.075)if k:IsKeyDown( -aQ.KeyCode)then if not table.find(aP,aE[aQ.KeyCode])then aP[#aP+1]=aE[aQ.KeyCode]az:Display(table.concat(aP,' + ').. -' + ...')end if aR()then aS=true break end if aQ.KeyCode==Enum.KeyCode.Escape then break end if not aF(aQ)then break end -else if not table.find(aP,aE[aQ.KeyCode])then break end end end until false if aS then aA=false az:Update()return end -end break until false local aS='Unknown'if aC[aQ.UserInputType]~=nil then aS=aC[aQ.UserInputType]elseif aQ.UserInputType -==Enum.UserInputType.Keyboard then aS=aQ.KeyCode==Enum.KeyCode.Escape and'None'or aQ.KeyCode.Name end aP=if aQ.KeyCode== -Enum.KeyCode.Escape or aS=='Unknown'then{}else aP az.Toggled=false az:SetValue{aS,az.Mode,aP}repeat task.wait()until not -aI(aQ)or k:GetFocusedTextBox()aA=false end)aL.MouseButton2Click:Connect(aN.Toggle)C:GiveSignal(k.InputBegan:Connect( -function(aP:InputObject)if C.Unloaded then return end if az.Mode=='Always'or az.Value=='Unknown'or az.Value=='None'or aA -or k:GetFocusedTextBox()then return end local aQ,aR,aS=az.Value,aH(az.Modifiers),false if aQ and aR==true and(aC[aP. -UserInputType]==aQ or(aP.UserInputType==Enum.UserInputType.Keyboard and aP.KeyCode.Name==aQ))then aS=true end if az.Mode -=='Toggle'then if aS then az.Toggled=not az.Toggled az:DoClick()end elseif az.Mode=='Press'then if aS then az:DoClick() -end end az:Update()end))C:GiveSignal(k.InputEnded:Connect(function()if C.Unloaded then return end if az.Value=='Unknown' -or az.Value=='None'or aA or k:GetFocusedTextBox()then return end az:Update()end))az:Update()if ax.Addons then table. -insert(ax.Addons,az)end az.Default=az.Value az.DefaultModifiers=table.clone(az.Modifiers or{})x[av]=az return au end -local au={}for av=0,1,0.1 do table.insert(au,ColorSequenceKeypoint.new(av,Color3.fromHSV(av,1,1)))end function at. -AddColorPicker(av,aw,ax)ax=C:Validate(ax,D.ColorPicker)local ay=av local az,aA=ay.TextLabel,{Value=ax.Default, -Transparency=ax.Transparency or 0,Title=ax.Title,Callback=ax.Callback,Changed=ax.Changed,Type='ColorPicker'}aA.Hue,aA. -Sat,aA.Vib=aA.Value:ToHSV()local aB=af('TextButton',{BackgroundColor3=aA.Value,BorderColor3=C:GetDarkerColor(aA.Value), -BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text='',Parent=az})local aC,aD=af('ImageLabel',{Image=A.GetAsset -'TransparencyTexture',ImageTransparency=(1-aA.Transparency),ScaleType=Enum.ScaleType.Tile,Size=UDim2.fromScale(1,1), -TileSize=UDim2.fromOffset(9,9),Parent=aB}),C:AddContextMenu(aB,UDim2.fromOffset(ax.Transparency and 256 or 234,0), -function()return{0.5,aB.AbsoluteSize.Y+1.5}end,1)aD.List.Padding=UDim.new(0,8)aA.ColorMenu=aD af('UIPadding',{ -PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,6),Parent=aD.Menu -})if typeof(aA.Title)=='string'then af('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,8),Text=aA.Title, -TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=aD.Menu})end local aE=af('Frame',{BackgroundTransparency=1, -Size=UDim2.new(1,0,0,200),Parent=aD.Menu})af('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim. -new(0,6),Parent=aE})local aF=af('ImageButton',{BackgroundColor3=aA.Value,Image=A.GetAsset'SaturationMap',Size=UDim2. -fromOffset(200,200),Parent=aE})local aG=af('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size= -UDim2.fromOffset(6,6),Parent=aF})af('UICorner',{CornerRadius=UDim.new(1,0),Parent=aG})af('UIStroke',{Color='DarkColor', -Parent=aG})local aH=af('TextButton',{Size=UDim2.fromOffset(16,200),Text='',Parent=aE})af('UIGradient',{Color= -ColorSequence.new(au),Rotation=90,Parent=aH})local aI,aJ,aK,aL=(af('Frame',{AnchorPoint=Vector2.new(0.5,0.5), -BackgroundColor3='WhiteColor',BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,aA.Hue),Size=UDim2 -.new(1,2,0,1),Parent=aH}))if ax.Transparency then aJ=af('ImageButton',{Image=A.GetAsset'TransparencyTexture',ScaleType= -Enum.ScaleType.Tile,Size=UDim2.fromOffset(16,200),TileSize=UDim2.fromOffset(8,8),Parent=aE})aK=af('Frame',{ -BackgroundColor3=aA.Value,Size=UDim2.fromScale(1,1),Parent=aJ})af('UIGradient',{Rotation=90,Transparency=NumberSequence. -new{NumberSequenceKeypoint.new(0,0),NumberSequenceKeypoint.new(1,1)},Parent=aK})aL=af('Frame',{AnchorPoint=Vector2.new( -0.5,0.5),BackgroundColor3='WhiteColor',BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,aA. -Transparency),Size=UDim2.new(1,2,0,1),Parent=aJ})end local aM=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0, -20),Parent=aD.Menu})af('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment. -Fill,Padding=UDim.new(0,8),Parent=aM})local aN,aO,aP=af('TextBox',{BackgroundColor3='MainColor',BorderColor3= -'OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size=UDim2.fromScale(1,1),Text='#??????',TextSize=14,Parent=aM}) -,af('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size= -UDim2.fromScale(1,1),Text='?, ?, ?',TextSize=14,Parent=aM}),C:AddContextMenu(aB,UDim2.fromOffset(93,0),function()return{ -aB.AbsoluteSize.X+1.5,0.5}end,1)aA.ContextMenu=aP do local function aQ(aR,aS)local aT=af('TextButton',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=aR,TextSize=14,Parent=aP.Menu})aT.MouseButton1Click:Connect( -function()C:SafeCallback(aS)aP:Close()end)end aQ('Copy color',function()C.CopiedColor={aA.Value,aA.Transparency}end)aA. -SetValueRGB=function(...)end aQ('Paste color',function()aA:SetValueRGB(C.CopiedColor[1],C.CopiedColor[2])end)if p then -aQ('Copy Hex',function()p(tostring(aA.Value:ToHex()))end)aQ('Copy RGB',function()p(table.concat({math.floor(aA.Value.R* -255),math.floor(aA.Value.G*255),math.floor(aA.Value.B*255)},', '))end)end end function aA.SetHSVFromRGB(aQ,aR)aA.Hue,aA. -Sat,aA.Vib=aR:ToHSV()end function aA.Display(aQ)if C.Unloaded then return end aA.Value=Color3.fromHSV(aA.Hue,aA.Sat,aA. -Vib)aB.BackgroundColor3=aA.Value aB.BorderColor3=C:GetDarkerColor(aA.Value)aC.ImageTransparency=(1-aA.Transparency)aF. -BackgroundColor3=Color3.fromHSV(aA.Hue,1,1)if aK then aK.BackgroundColor3=aA.Value end aG.Position=UDim2.fromScale(aA. -Sat,1-aA.Vib)aI.Position=UDim2.fromScale(0.5,aA.Hue)if aL then aL.Position=UDim2.fromScale(0.5,aA.Transparency)end aN. -Text='#'..aA.Value:ToHex()aO.Text=table.concat({math.floor(aA.Value.R*255),math.floor(aA.Value.G*255),math.floor(aA. -Value.B*255)},', ')end function aA.Update(aQ)aA:Display()C:SafeCallback(aA.Callback,aA.Value)C:SafeCallback(aA.Changed, -aA.Value)end function aA.OnChanged(aQ,aR)aA.Changed=aR end function aA.SetValue(aQ,aR,aS)if typeof(aR)=='Color3'then aA: -SetValueRGB(aR,aS)return end local aT=Color3.fromHSV(aR[1],aR[2],aR[3])aA.Transparency=ax.Transparency and aS or 0 aA: -SetHSVFromRGB(aT)aA:Update()end function aA.SetValueRGB(aQ,aR,aS)aA.Transparency=ax.Transparency and aS or 0 aA: -SetHSVFromRGB(aR)aA:Update()end aB.MouseButton1Click:Connect(aD.Toggle)aB.MouseButton2Click:Connect(aP.Toggle)aF. -InputBegan:Connect(function(aQ:InputObject)while N(aQ)do local aR=aF.AbsolutePosition.X local aS=aR+aF.AbsoluteSize.X -local aT,aU=math.clamp(t.X,aR,aS),aF.AbsolutePosition.Y local aV=aU+aF.AbsoluteSize.Y local aW,aX,aY=math.clamp(t.Y,aU, -aV),aA.Sat,aA.Vib aA.Sat=(aT-aR)/(aS-aR)aA.Vib=1-((aW-aU)/(aV-aU))if aA.Sat~=aX or aA.Vib~=aY then aA:Update()end i. -RenderStepped:Wait()end end)aH.InputBegan:Connect(function(aQ:InputObject)while N(aQ)do local aR=aH.AbsolutePosition.Y -local aS=aR+aH.AbsoluteSize.Y local aT,aU=math.clamp(t.Y,aR,aS),aA.Hue aA.Hue=(aT-aR)/(aS-aR)if aA.Hue~=aU then aA: -Update()end i.RenderStepped:Wait()end end)if aJ then aJ.InputBegan:Connect(function(aQ:InputObject)while N(aQ)do local -aR,aS=aJ.AbsolutePosition.Y,aJ.AbsolutePosition.Y+aJ.AbsoluteSize.Y local aT,aU=math.clamp(t.Y,aR,aS),aA.Transparency aA -.Transparency=(aT-aR)/(aS-aR)if aA.Transparency~=aU then aA:Update()end i.RenderStepped:Wait()end end)end aN.FocusLost: -Connect(function(aQ)if not aQ then return end local aR,aS=pcall(Color3.fromHex,aN.Text)if aR and typeof(aS)=='Color3' -then aA.Hue,aA.Sat,aA.Vib=aS:ToHSV()end aA:Update()end)aO.FocusLost:Connect(function(aQ)if not aQ then return end local -aR,aS,aT=aO.Text:match'(%d+),%s*(%d+),%s*(%d+)'if aR and aS and aT then aA:SetHSVFromRGB(Color3.fromRGB(aR,aS,aT))end aA -:Update()end)aA:Display()if ay.Addons then table.insert(ay.Addons,aA)end aA.Default=aA.Value x[aw]=aA return av end as. -__index=at as.__namecall=function(av,aw,...)return at[aw](...)end end local at={}do local au={}function au.AddDivider(av -,aw)local ax=av local ay=ax.Container local az=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,6),Parent=ay}) -if aw then local aA=af('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(1,0 -),Text=aw,TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Center,Parent=az})local aB,aC=C: -GetTextBounds(aw,aA.FontFace,aA.TextSize,aA.AbsoluteSize.X)local aD=aB//2+10 af('Frame',{AnchorPoint=Vector2.new(0,0.5), +SizeConstraint.RelativeYY,Parent=aO})ag('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius/2),Parent=aQ})ag('UIStroke',{ +Color='OutlineColor',Parent=aQ})local aR=ag('ImageLabel',{Image=ao and ao.Url or'',ImageColor3='FontColor', +ImageRectOffset=ao and ao.ImageRectOffset or Vector2.zero,ImageRectSize=ao and ao.ImageRectSize or Vector2.zero, +ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=aQ})function aN.Display(aS,aT)aP. +TextTransparency=aT and 0 or 0.5 aR.ImageTransparency=aT and 0 or 1 end function aN.SetText(aS,aT)aP.Text=aT end +function aN.SetVisibility(aS,aT)aO.Visible=aT end function aN.SetNormal(aS,aT)aN.Normal=aT aO.Active=not aT aP.Position= +aT and UDim2.fromOffset(0,0)or UDim2.fromOffset(22,0)aQ.Visible=not aT end aA.DoClick=function(...)end aO. +MouseButton1Click:Connect(function()if aN.Normal then return end aA.Toggled=not aA.Toggled aA:DoClick()end)aN.Holder=aO +aN.Label=aP aN.Checkbox=aQ aN.Loaded=true table.insert(C.KeybindToggles,aN)end local aO=C:AddContextMenu(aM,UDim2. +fromOffset(62,0),function()return{aM.AbsoluteSize.X+1.5,0.5}end,1)aA.Menu=aO local aP={}for aQ,aR in ax.Modes do local +aS,aT={},ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=aR, +TextSize=14,TextTransparency=0.5,Parent=aO.Menu})function aS.Select(aU)for aV,aW in aP do aW:Deselect()end aA.Mode=aR aT +.BackgroundTransparency=0 aT.TextTransparency=0 aO:Close()end function aS.Deselect(aU)aA.Mode=nil aT. +BackgroundTransparency=1 aT.TextTransparency=0.5 end aT.MouseButton1Click:Connect(function()aS:Select()end)if aA.Mode== +aR then aS:Select()end aP[aR]=aS end function aA.Display(aQ,aR)if C.Unloaded then return end local aS,aT=C: +GetTextBounds(aR or aA.DisplayValue,aM.FontFace,aM.TextSize,az.AbsoluteSize.X)aM.Text=aR or aA.DisplayValue aM.Size= +UDim2.fromOffset((aS+9),(aT+4))end function aA.Update(aQ)aA:Display()if ax.NoUI then return end if aA.Mode=='Toggle'and +ay.Type=='Toggle'and ay.Disabled then aN:SetVisibility(false)return end local aR,aS=aA:GetState(),C. +ShowToggleFrameInKeybinds and aA.Mode=='Toggle'if aA.SyncToggleState and ay.Value~=aR then ay:SetValue(aR)end if aN. +Loaded then if aS then aN:SetNormal(false)else aN:SetNormal(true)end aN:SetText(('[%s] %s (%s)'):format(aA.DisplayValue, +aA.Text,aA.Mode))aN:SetVisibility(true)aN:Display(aR)end end function aA.GetState(aQ)if aA.Mode=='Always'then return +true elseif aA.Mode=='Hold'then local aR=aA.Value if aR=='None'then return false end if not aI(aA.Modifiers)then return +false end if aC[aR]~=nil then return k:IsMouseButtonPressed(aC[aR])and not k:GetFocusedTextBox()else return k:IsKeyDown( +Enum.KeyCode[aR])and not k:GetFocusedTextBox()end else return aA.Toggled end end function aA.OnChanged(aQ,aR)aA.Changed= +aR end function aA.OnClick(aQ,aR)aA.Clicked=aR end function aA.DoClick(aQ)if aA.Mode=='Press'then if aA.Toggled and ax. +WaitForCallback==true then return end aA.Toggled=true end C:SafeCallback(aA.Callback,aA.Toggled)C:SafeCallback(aA. +Clicked,aA.Toggled)if aA.Mode=='Press'then aA.Toggled=false end end function aA.SetValue(aQ,aR)local aS,aT,aU=aR[1],aR[2 +],aR[3]local aV,aW=pcall(function()if aS=='None'then aS=nil return nil end if aC[aS]==nil then return Enum.KeyCode[aS] +end return aC[aS]end)if aS==nil then aA.Value='None'elseif aV then aA.Value=aS else aA.Value='Unknown'end aA.Modifiers= +aL(if typeof(aU)=='table'then aU else aA.Modifiers)aA.DisplayValue=if O(aA.Modifiers)>0 then(table.concat(aA.Modifiers, +' + ')..' + '..aA.Value)else aA.Value if aP[aT]then aP[aT]:Select()end local aX=aK(aA.Modifiers)C:SafeCallback(aA. +ChangedCallback,aW,aX)C:SafeCallback(aA.Changed,aW,aX)aA:Update()end function aA.SetText(aQ,aR)aN:SetText(aR)aA:Update() +end aM.MouseButton1Click:Connect(function()if aB then return end aB=true aM.Text='...'aM.Size=UDim2.fromOffset(29,18) +local aQ,aR={}local aS=function()aR=k.InputBegan:Wait()return k:GetFocusedTextBox()~=nil end repeat task.wait()aM.Text= +'...'aM.Size=UDim2.fromOffset(29,18)if aS()then aB=false aA:Update()return end if aR.KeyCode==Enum.KeyCode.Escape then +break end if aG(aR)then local aT=false repeat task.wait()if k:IsKeyDown(aR.KeyCode)then task.wait(0.075)if k:IsKeyDown( +aR.KeyCode)then if not table.find(aQ,aF[aR.KeyCode])then aQ[#aQ+1]=aF[aR.KeyCode]aA:Display(table.concat(aQ,' + ').. +' + ...')end if aS()then aT=true break end if aR.KeyCode==Enum.KeyCode.Escape then break end if not aG(aR)then break end +else if not table.find(aQ,aF[aR.KeyCode])then break end end end until false if aT then aB=false aA:Update()return end +end break until false local aT='Unknown'if aD[aR.UserInputType]~=nil then aT=aD[aR.UserInputType]elseif aR.UserInputType +==Enum.UserInputType.Keyboard then aT=aR.KeyCode==Enum.KeyCode.Escape and'None'or aR.KeyCode.Name end aQ=if aR.KeyCode== +Enum.KeyCode.Escape or aT=='Unknown'then{}else aQ aA.Toggled=false aA:SetValue{aT,aA.Mode,aQ}repeat task.wait()until not +aJ(aR)or k:GetFocusedTextBox()aB=false end)aM.MouseButton2Click:Connect(aO.Toggle)C:GiveSignal(k.InputBegan:Connect( +function(aQ:InputObject)if C.Unloaded then return end if aA.Mode=='Always'or aA.Value=='Unknown'or aA.Value=='None'or aB +or k:GetFocusedTextBox()then return end local aR,aS,aT=aA.Value,aI(aA.Modifiers),false if aR and aS==true and(aD[aQ. +UserInputType]==aR or(aQ.UserInputType==Enum.UserInputType.Keyboard and aQ.KeyCode.Name==aR))then aT=true end if aA.Mode +=='Toggle'then if aT then aA.Toggled=not aA.Toggled aA:DoClick()end elseif aA.Mode=='Press'then if aT then aA:DoClick() +end end aA:Update()end))C:GiveSignal(k.InputEnded:Connect(function()if C.Unloaded then return end if aA.Value=='Unknown' +or aA.Value=='None'or aB or k:GetFocusedTextBox()then return end aA:Update()end))aA:Update()if ay.Addons then table. +insert(ay.Addons,aA)end aA.Default=aA.Value aA.DefaultModifiers=table.clone(aA.Modifiers or{})x[aw]=aA return av end +local av={}for aw=0,1,0.1 do table.insert(av,ColorSequenceKeypoint.new(aw,Color3.fromHSV(aw,1,1)))end function au. +AddColorPicker(aw,ax,ay)ay=C:Validate(ay,D.ColorPicker)local az=aw local aA,aB=az.TextLabel,{Value=ay.Default, +Transparency=ay.Transparency or 0,Title=ay.Title,Callback=ay.Callback,Changed=ay.Changed,Type='ColorPicker'}aB.Hue,aB. +Sat,aB.Vib=aB.Value:ToHSV()local aC=ag('TextButton',{BackgroundColor3=aB.Value,BorderColor3=C:GetDarkerColor(aB.Value), +BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text='',Parent=aA})local aD,aE=ag('ImageLabel',{Image=A.GetAsset +'TransparencyTexture',ImageTransparency=(1-aB.Transparency),ScaleType=Enum.ScaleType.Tile,Size=UDim2.fromScale(1,1), +TileSize=UDim2.fromOffset(9,9),Parent=aC}),C:AddContextMenu(aC,UDim2.fromOffset(ay.Transparency and 256 or 234,0), +function()return{0.5,aC.AbsoluteSize.Y+1.5}end,1)aE.List.Padding=UDim.new(0,8)aB.ColorMenu=aE ag('UIPadding',{ +PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,6),Parent=aE.Menu +})if typeof(aB.Title)=='string'then ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,8),Text=aB.Title, +TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=aE.Menu})end local aF=ag('Frame',{BackgroundTransparency=1, +Size=UDim2.new(1,0,0,200),Parent=aE.Menu})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim. +new(0,6),Parent=aF})local aG=ag('ImageButton',{BackgroundColor3=aB.Value,Image=A.GetAsset'SaturationMap',Size=UDim2. +fromOffset(200,200),Parent=aF})local aH=ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size= +UDim2.fromOffset(6,6),Parent=aG})ag('UICorner',{CornerRadius=UDim.new(1,0),Parent=aH})ag('UIStroke',{Color='DarkColor', +Parent=aH})local aI=ag('TextButton',{Size=UDim2.fromOffset(16,200),Text='',Parent=aF})ag('UIGradient',{Color= +ColorSequence.new(av),Rotation=90,Parent=aI})local aJ,aK,aL,aM=(ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5), +BackgroundColor3='WhiteColor',BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,aB.Hue),Size=UDim2 +.new(1,2,0,1),Parent=aI}))if ay.Transparency then aK=ag('ImageButton',{Image=A.GetAsset'TransparencyTexture',ScaleType= +Enum.ScaleType.Tile,Size=UDim2.fromOffset(16,200),TileSize=UDim2.fromOffset(8,8),Parent=aF})aL=ag('Frame',{ +BackgroundColor3=aB.Value,Size=UDim2.fromScale(1,1),Parent=aK})ag('UIGradient',{Rotation=90,Transparency=NumberSequence. +new{NumberSequenceKeypoint.new(0,0),NumberSequenceKeypoint.new(1,1)},Parent=aL})aM=ag('Frame',{AnchorPoint=Vector2.new( +0.5,0.5),BackgroundColor3='WhiteColor',BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,aB. +Transparency),Size=UDim2.new(1,2,0,1),Parent=aK})end local aN=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0, +20),Parent=aE.Menu})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment. +Fill,Padding=UDim.new(0,8),Parent=aN})local aO,aP,aQ=ag('TextBox',{BackgroundColor3='MainColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size=UDim2.fromScale(1,1),Text='#??????',TextSize=14,Parent=aN}) +,ag('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size= +UDim2.fromScale(1,1),Text='?, ?, ?',TextSize=14,Parent=aN}),C:AddContextMenu(aC,UDim2.fromOffset(93,0),function()return{ +aC.AbsoluteSize.X+1.5,0.5}end,1)aB.ContextMenu=aQ do local function aR(aS,aT)local aU=ag('TextButton',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=aS,TextSize=14,Parent=aQ.Menu})aU.MouseButton1Click:Connect( +function()C:SafeCallback(aT)aQ:Close()end)end aR('Copy color',function()C.CopiedColor={aB.Value,aB.Transparency}end)aB. +SetValueRGB=function(...)end aR('Paste color',function()aB:SetValueRGB(C.CopiedColor[1],C.CopiedColor[2])end)if p then +aR('Copy Hex',function()p(tostring(aB.Value:ToHex()))end)aR('Copy RGB',function()p(table.concat({math.floor(aB.Value.R* +255),math.floor(aB.Value.G*255),math.floor(aB.Value.B*255)},', '))end)end end function aB.SetHSVFromRGB(aR,aS)aB.Hue,aB. +Sat,aB.Vib=aS:ToHSV()end function aB.Display(aR)if C.Unloaded then return end aB.Value=Color3.fromHSV(aB.Hue,aB.Sat,aB. +Vib)aC.BackgroundColor3=aB.Value aC.BorderColor3=C:GetDarkerColor(aB.Value)aD.ImageTransparency=(1-aB.Transparency)aG. +BackgroundColor3=Color3.fromHSV(aB.Hue,1,1)if aL then aL.BackgroundColor3=aB.Value end aH.Position=UDim2.fromScale(aB. +Sat,1-aB.Vib)aJ.Position=UDim2.fromScale(0.5,aB.Hue)if aM then aM.Position=UDim2.fromScale(0.5,aB.Transparency)end aO. +Text='#'..aB.Value:ToHex()aP.Text=table.concat({math.floor(aB.Value.R*255),math.floor(aB.Value.G*255),math.floor(aB. +Value.B*255)},', ')end function aB.Update(aR)aB:Display()C:SafeCallback(aB.Callback,aB.Value)C:SafeCallback(aB.Changed, +aB.Value)end function aB.OnChanged(aR,aS)aB.Changed=aS end function aB.SetValue(aR,aS,aT)if typeof(aS)=='Color3'then aB: +SetValueRGB(aS,aT)return end local aU=Color3.fromHSV(aS[1],aS[2],aS[3])aB.Transparency=ay.Transparency and aT or 0 aB: +SetHSVFromRGB(aU)aB:Update()end function aB.SetValueRGB(aR,aS,aT)aB.Transparency=ay.Transparency and aT or 0 aB: +SetHSVFromRGB(aS)aB:Update()end aC.MouseButton1Click:Connect(aE.Toggle)aC.MouseButton2Click:Connect(aQ.Toggle)aG. +InputBegan:Connect(function(aR:InputObject)while N(aR)do local aS=aG.AbsolutePosition.X local aT=aS+aG.AbsoluteSize.X +local aU,aV=math.clamp(t.X,aS,aT),aG.AbsolutePosition.Y local aW=aV+aG.AbsoluteSize.Y local aX,aY,aZ=math.clamp(t.Y,aV, +aW),aB.Sat,aB.Vib aB.Sat=(aU-aS)/(aT-aS)aB.Vib=1-((aX-aV)/(aW-aV))if aB.Sat~=aY or aB.Vib~=aZ then aB:Update()end i. +RenderStepped:Wait()end end)aI.InputBegan:Connect(function(aR:InputObject)while N(aR)do local aS=aI.AbsolutePosition.Y +local aT=aS+aI.AbsoluteSize.Y local aU,aV=math.clamp(t.Y,aS,aT),aB.Hue aB.Hue=(aU-aS)/(aT-aS)if aB.Hue~=aV then aB: +Update()end i.RenderStepped:Wait()end end)if aK then aK.InputBegan:Connect(function(aR:InputObject)while N(aR)do local +aS,aT=aK.AbsolutePosition.Y,aK.AbsolutePosition.Y+aK.AbsoluteSize.Y local aU,aV=math.clamp(t.Y,aS,aT),aB.Transparency aB +.Transparency=(aU-aS)/(aT-aS)if aB.Transparency~=aV then aB:Update()end i.RenderStepped:Wait()end end)end aO.FocusLost: +Connect(function(aR)if not aR then return end local aS,aT=pcall(Color3.fromHex,aO.Text)if aS and typeof(aT)=='Color3' +then aB.Hue,aB.Sat,aB.Vib=aT:ToHSV()end aB:Update()end)aP.FocusLost:Connect(function(aR)if not aR then return end local +aS,aT,aU=aP.Text:match'(%d+),%s*(%d+),%s*(%d+)'if aS and aT and aU then aB:SetHSVFromRGB(Color3.fromRGB(aS,aT,aU))end aB +:Update()end)aB:Display()if az.Addons then table.insert(az.Addons,aB)end aB.Default=aB.Value x[ax]=aB return aw end at. +__index=au at.__namecall=function(aw,ax,...)return au[ax](...)end end local au={}do local av={}function av.AddDivider(aw +,ax)local ay=aw local az=ay.Container local aA=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,6),Parent=az}) +if ax then local aB=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(1,0 +),Text=ax,TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Center,Parent=aA})local aC,aD=C: +GetTextBounds(ax,aB.FontFace,aB.TextSize,aB.AbsoluteSize.X)local aE=aC//2+10 ag('Frame',{AnchorPoint=Vector2.new(0,0.5), BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0,0.5),Size=UDim2. -new(0.5,-aD,0,2),Parent=az})af('Frame',{AnchorPoint=Vector2.new(1,0.5),BackgroundColor3='MainColor',BorderColor3= -'OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0.5),Size=UDim2.new(0.5,-aD,0,2),Parent=az})else af('Frame', +new(0.5,-aE,0,2),Parent=aA})ag('Frame',{AnchorPoint=Vector2.new(1,0.5),BackgroundColor3='MainColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0.5),Size=UDim2.new(0.5,-aE,0,2),Parent=aA})else ag('Frame', {AnchorPoint=Vector2.new(0,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position= -UDim2.fromScale(0,0.5),Size=UDim2.new(1,0,0,2),Parent=az})end ax:Resize()table.insert(ax.Elements,{Holder=az,Type= -'Divider'})end function au.AddLabel(av,...)local aw,ax,ay,az={},{},select(1,...),select(2,...)if typeof(ay)=='table'or -typeof(az)=='table'then local aA=typeof(ay)=='table'and ay or az aw.Text=aA.Text or''aw.DoesWrap=aA.DoesWrap or false aw -.Size=aA.Size or 14 aw.Visible=aA.Visible or true aw.Idx=typeof(az)=='table'and ay or nil else aw.Text=ay or''aw. -DoesWrap=az or false aw.Size=14 aw.Visible=true aw.Idx=select(3,...)or nil end local aA=av local aB,aC=aA.Container,{ -Text=aw.Text,DoesWrap=aw.DoesWrap,Addons=ax,Visible=aw.Visible,Type='Label'}local aD=af('TextLabel',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text=aC.Text,TextSize=aw.Size,TextWrapped=aC.DoesWrap,TextXAlignment= -aA.IsKeyTab and Enum.TextXAlignment.Center or Enum.TextXAlignment.Left,Parent=aB})function aC.SetVisible(aE,aF:boolean) -aC.Visible=aF aD.Visible=aC.Visible aA:Resize()end function aC.SetText(aE,aF:string)aC.Text=aF aD.Text=aF if aC.DoesWrap -then local aG,aH=C:GetTextBounds(aC.Text,aD.FontFace,aD.TextSize,aD.AbsoluteSize.X)aD.Size=UDim2.new(1,0,0,aH+4)end aA: -Resize()end if aC.DoesWrap then local aE,aF=C:GetTextBounds(aC.Text,aD.FontFace,aD.TextSize,aD.AbsoluteSize.X)aD.Size= -UDim2.new(1,0,0,aF+4)local aG=aD.AbsoluteSize aD:GetPropertyChangedSignal'AbsoluteSize':Connect(function()if aD. -AbsoluteSize==aG then return end local aH,aI=C:GetTextBounds(aC.Text,aD.FontFace,aD.TextSize,aD.AbsoluteSize.X)aD.Size= -UDim2.new(1,0,0,aI+4)aG=aD.AbsoluteSize aA:Resize()end)else af('UIListLayout',{FillDirection=Enum.FillDirection. -Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=aD})end aA:Resize()aC. -TextLabel=aD aC.Container=aB if not aw.DoesWrap then setmetatable(aC,as)end aC.Holder=aD table.insert(aA.Elements,aC)if -aw.Idx then u[aw.Idx]=aC else table.insert(u,aC)end return aC end function au.AddButton(av,...)local function aw(...) -local ax,ay,az={},select(1,...),select(2,...)if typeof(ay)=='table'or typeof(az)=='table'then local aA=typeof(ay)== -'table'and ay or az ax.Text=aA.Text or''ax.Func=aA.Func or aA.Callback or function()end ax.DoubleClick=aA.DoubleClick ax -.Tooltip=aA.Tooltip ax.DisabledTooltip=aA.DisabledTooltip ax.Risky=aA.Risky or false ax.Disabled=aA.Disabled or false ax -.Visible=aA.Visible or true ax.Idx=typeof(az)=='table'and ay or nil else ax.Text=ay or''ax.Func=az or function()end ax. -DoubleClick=false ax.Tooltip=nil ax.DisabledTooltip=nil ax.Risky=false ax.Disabled=false ax.Visible=true ax.Idx=select(3 -,...)or nil end return ax end local ax,ay=aw(...),av local az,aA=ay.Container,{Text=ax.Text,Func=ax.Func,DoubleClick=ax. -DoubleClick,Tooltip=ax.Tooltip,DisabledTooltip=ax.DisabledTooltip,TooltipTable=nil,Risky=ax.Risky,Disabled=ax.Disabled, -Visible=ax.Visible,Tween=nil,Type='Button'}local aB=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Parent -=az})af('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Padding= -UDim.new(0,9),Parent=aB})local function aC(aD)local aE=af('TextButton',{Active=not aD.Disabled,BackgroundColor3=aD. -Disabled and'BackgroundColor'or'MainColor',Size=UDim2.fromScale(1,1),Text=aD.Text,TextSize=14,TextTransparency=0.4, -Visible=aD.Visible,Parent=aB})local aF=af('UIStroke',{Color='OutlineColor',Transparency=aD.Disabled and 0.5 or 0,Parent= -aE})return aE,aF end local function aD(aE)aE.Base.MouseEnter:Connect(function()if aE.Disabled then return end aE.Tween=n -:Create(aE.Base,C.TweenInfo,{TextTransparency=0})aE.Tween:Play()end)aE.Base.MouseLeave:Connect(function()if aE.Disabled -then return end aE.Tween=n:Create(aE.Base,C.TweenInfo,{TextTransparency=0.4})aE.Tween:Play()end)aE.Base. -MouseButton1Click:Connect(function()if aE.Disabled or aE.Locked then return end if aE.DoubleClick then aE.Locked=true aE -.Base.Text='Are you sure?'aE.Base.TextColor3=C.Scheme.AccentColor C.Registry[aE.Base].TextColor3='AccentColor'local aF= -J(aE.Base.MouseButton1Click,0.5)aE.Base.Text=aE.Text aE.Base.TextColor3=aE.Risky and C.Scheme.RedColor or C.Scheme. -FontColor C.Registry[aE.Base].TextColor3=aE.Risky and'RedColor'or'FontColor'if aF then C:SafeCallback(aE.Func)end i. -RenderStepped:Wait()aE.Locked=false return end C:SafeCallback(aE.Func)end)end aA.Base,aA.Stroke=aC(aA)aD(aA)function aA. -AddButton(aE,...)local aF=aw(...)local aG={Text=aF.Text,Func=aF.Func,DoubleClick=aF.DoubleClick,Tooltip=aF.Tooltip, -DisabledTooltip=aF.DisabledTooltip,TooltipTable=nil,Risky=aF.Risky,Disabled=aF.Disabled,Visible=aF.Visible,Tween=nil, -Type='SubButton'}aA.SubButton=aG aG.Base,aG.Stroke=aC(aG)aD(aG)function aG.UpdateColors(aH)if C.Unloaded then return end -P(aG.Tween)aG.Base.BackgroundColor3=aG.Disabled and C.Scheme.BackgroundColor or C.Scheme.MainColor aG.Base. -TextTransparency=aG.Disabled and 0.8 or 0.4 aG.Stroke.Transparency=aG.Disabled and 0.5 or 0 C.Registry[aG.Base]. -BackgroundColor3=aG.Disabled and'BackgroundColor'or'MainColor'end function aG.SetDisabled(aH,aI:boolean)aG.Disabled=aI -if aG.TooltipTable then aG.TooltipTable.Disabled=aG.Disabled end aG.Base.Active=not aG.Disabled aG:UpdateColors()end -function aG.SetVisible(aH,aI:boolean)aG.Visible=aI aG.Base.Visible=aG.Visible ay:Resize()end function aG.SetText(aH,aI: -string)aG.Text=aI aG.Base.Text=aI end if typeof(aG.Tooltip)=='string'or typeof(aG.DisabledTooltip)=='string'then aG. -TooltipTable=C:AddTooltip(aG.Tooltip,aG.DisabledTooltip,aG.Base)aG.TooltipTable.Disabled=aG.Disabled end if aG.Risky -then aG.Base.TextColor3=C.Scheme.RedColor C.Registry[aG.Base].TextColor3='RedColor'end aG:UpdateColors()if aF.Idx then v -[aF.Idx]=aG else table.insert(v,aG)end return aG end function aA.UpdateColors(aE)if C.Unloaded then return end P(aA. -Tween)aA.Base.BackgroundColor3=aA.Disabled and C.Scheme.BackgroundColor or C.Scheme.MainColor aA.Base.TextTransparency= -aA.Disabled and 0.8 or 0.4 aA.Stroke.Transparency=aA.Disabled and 0.5 or 0 C.Registry[aA.Base].BackgroundColor3=aA. -Disabled and'BackgroundColor'or'MainColor'end function aA.SetDisabled(aE,aF:boolean)aA.Disabled=aF if aA.TooltipTable -then aA.TooltipTable.Disabled=aA.Disabled end aA.Base.Active=not aA.Disabled aA:UpdateColors()end function aA.SetVisible -(aE,aF:boolean)aA.Visible=aF aB.Visible=aA.Visible ay:Resize()end function aA.SetText(aE,aF:string)aA.Text=aF aA.Base. -Text=aF end if typeof(aA.Tooltip)=='string'or typeof(aA.DisabledTooltip)=='string'then aA.TooltipTable=C:AddTooltip(aA. -Tooltip,aA.DisabledTooltip,aA.Base)aA.TooltipTable.Disabled=aA.Disabled end if aA.Risky then aA.Base.TextColor3=C.Scheme -.RedColor C.Registry[aA.Base].TextColor3='RedColor'end aA:UpdateColors()ay:Resize()aA.Holder=aB table.insert(ay.Elements -,aA)if ax.Idx then v[ax.Idx]=aA else table.insert(v,aA)end return aA end function au.AddCheckbox(av,aw,ax)ax=C:Validate( -ax,D.Toggle)local ay=av local az,aA=ay.Container,{Text=ax.Text,Value=ax.Default,Tooltip=ax.Tooltip,DisabledTooltip=ax. -DisabledTooltip,TooltipTable=nil,Callback=ax.Callback,Changed=ax.Changed,Risky=ax.Risky,Disabled=ax.Disabled,Visible=ax. -Visible,Addons={},Type='Toggle'}local aB=af('TextButton',{Active=not aA.Disabled,BackgroundTransparency=1,Size=UDim2. -new(1,0,0,18),Text='',Visible=aA.Visible,Parent=az})local aC=af('TextLabel',{BackgroundTransparency=1,Position=UDim2. -fromOffset(26,0),Size=UDim2.new(1,-26,1,0),Text=aA.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum. -TextXAlignment.Left,Parent=aB})af('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum. -HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=aC})local aD=af('Frame',{BackgroundColor3='MainColor',Size=UDim2. -fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aB})af('UICorner',{CornerRadius=UDim.new(0,C. -CornerRadius/2),Parent=aD})local aE,aF=af('UIStroke',{Color='OutlineColor',Parent=aD}),af('ImageLabel',{Image=an and an. -Url or'',ImageColor3='FontColor',ImageRectOffset=an and an.ImageRectOffset or Vector2.zero,ImageRectSize=an and an. -ImageRectSize or Vector2.zero,ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=aD}) -function aA.UpdateColors(aG)aA:Display()end function aA.Display(aG)if C.Unloaded then return end aE.Transparency=aA. -Disabled and 0.5 or 0 if aA.Disabled then aC.TextTransparency=0.8 aF.ImageTransparency=aA.Value and 0.8 or 1 aD. -BackgroundColor3=C.Scheme.BackgroundColor C.Registry[aD].BackgroundColor3='BackgroundColor'return end n:Create(aC,C. -TweenInfo,{TextTransparency=aA.Value and 0 or 0.4}):Play()n:Create(aF,C.TweenInfo,{ImageTransparency=aA.Value and 0 or 1 -}):Play()aD.BackgroundColor3=C.Scheme.MainColor C.Registry[aD].BackgroundColor3='MainColor'end function aA.OnChanged(aG, -aH)aA.Changed=aH end function aA.SetValue(aG,aH)if aA.Disabled then return end aA.Value=aH aA:Display()for aI,aJ in aA. -Addons do if aJ.Type=='KeyPicker'and aJ.SyncToggleState then aJ.Toggled=aA.Value aJ:Update()end end C: -UpdateDependencyBoxes()C:SafeCallback(aA.Callback,aA.Value)C:SafeCallback(aA.Changed,aA.Value)end function aA. -SetDisabled(aG,aH:boolean)aA.Disabled=aH if aA.TooltipTable then aA.TooltipTable.Disabled=aA.Disabled end for aI,aJ in -aA.Addons do if aJ.Type=='KeyPicker'and aJ.SyncToggleState then aJ:Update()end end aB.Active=not aA.Disabled aA:Display( -)end function aA.SetVisible(aG,aH:boolean)aA.Visible=aH aB.Visible=aA.Visible ay:Resize()end function aA.SetText(aG,aH: -string)aA.Text=aH aC.Text=aH end aB.MouseButton1Click:Connect(function()if aA.Disabled then return end aA:SetValue(not -aA.Value)end)if typeof(aA.Tooltip)=='string'or typeof(aA.DisabledTooltip)=='string'then aA.TooltipTable=C:AddTooltip(aA. -Tooltip,aA.DisabledTooltip,aB)aA.TooltipTable.Disabled=aA.Disabled end if aA.Risky then aC.TextColor3=C.Scheme.RedColor -C.Registry[aC].TextColor3='RedColor'end aA:Display()ay:Resize()aA.TextLabel=aC aA.Container=az setmetatable(aA,as)aA. -Holder=aB table.insert(ay.Elements,aA)aA.Default=aA.Value w[aw]=aA return aA end function au.AddToggle(av,aw,ax)if C. -ForceCheckbox then return au.AddCheckbox(av,aw,ax)end ax=C:Validate(ax,D.Toggle)local ay=av local az,aA=ay.Container,{ -Text=ax.Text,Value=ax.Default,Tooltip=ax.Tooltip,DisabledTooltip=ax.DisabledTooltip,TooltipTable=nil,Callback=ax. -Callback,Changed=ax.Changed,Risky=ax.Risky,Disabled=ax.Disabled,Visible=ax.Visible,Addons={},Type='Toggle'}local aB=af( -'TextButton',{Active=not aA.Disabled,BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text='',Visible=aA.Visible,Parent -=az})local aC=af('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,-40,1,0),Text=aA.Text,TextSize=14, -TextTransparency=0.4,TextXAlignment=Enum.TextXAlignment.Left,Parent=aB})af('UIListLayout',{FillDirection=Enum. -FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=aC})local aD= -af('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3='MainColor',Position=UDim2.fromScale(1,0),Size=UDim2. -fromOffset(32,18),Parent=aB})af('UICorner',{CornerRadius=UDim.new(1,0),Parent=aD})af('UIPadding',{PaddingBottom=UDim. -new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=aD})local aE,aF=af( -'UIStroke',{Color='OutlineColor',Parent=aD}),af('Frame',{BackgroundColor3='FontColor',Size=UDim2.fromScale(1,1), -SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aD})af('UICorner',{CornerRadius=UDim.new(1,0),Parent=aF})function -aA.UpdateColors(aG)aA:Display()end function aA.Display(aG)if C.Unloaded then return end local aH=aA.Value and 1 or 0 aD. -BackgroundTransparency=aA.Disabled and 0.75 or 0 aE.Transparency=aA.Disabled and 0.75 or 0 aD.BackgroundColor3=aA.Value -and C.Scheme.AccentColor or C.Scheme.MainColor aE.Color=aA.Value and C.Scheme.AccentColor or C.Scheme.OutlineColor C. -Registry[aD].BackgroundColor3=aA.Value and'AccentColor'or'MainColor'C.Registry[aE].Color=aA.Value and'AccentColor'or -'OutlineColor'if aA.Disabled then aC.TextTransparency=0.8 aF.AnchorPoint=Vector2.new(aH,0)aF.Position=UDim2.fromScale(aH -,0)aF.BackgroundColor3=C:GetDarkerColor(C.Scheme.FontColor)C.Registry[aF].BackgroundColor3=function()return C: -GetDarkerColor(C.Scheme.FontColor)end return end n:Create(aC,C.TweenInfo,{TextTransparency=aA.Value and 0 or 0.4}):Play( -)n:Create(aF,C.TweenInfo,{AnchorPoint=Vector2.new(aH,0),Position=UDim2.fromScale(aH,0)}):Play()aF.BackgroundColor3=C. -Scheme.FontColor C.Registry[aF].BackgroundColor3='FontColor'end function aA.OnChanged(aG,aH)aA.Changed=aH end function -aA.SetValue(aG,aH)if aA.Disabled then return end aA.Value=aH aA:Display()for aI,aJ in aA.Addons do if aJ.Type== -'KeyPicker'and aJ.SyncToggleState then aJ.Toggled=aA.Value aJ:Update()end end C:UpdateDependencyBoxes()C:SafeCallback(aA -.Callback,aA.Value)C:SafeCallback(aA.Changed,aA.Value)end function aA.SetDisabled(aG,aH:boolean)aA.Disabled=aH if aA. -TooltipTable then aA.TooltipTable.Disabled=aA.Disabled end for aI,aJ in aA.Addons do if aJ.Type=='KeyPicker'and aJ. -SyncToggleState then aJ:Update()end end aB.Active=not aA.Disabled aA:Display()end function aA.SetVisible(aG,aH:boolean) -aA.Visible=aH aB.Visible=aA.Visible ay:Resize()end function aA.SetText(aG,aH:string)aA.Text=aH aC.Text=aH end aB. -MouseButton1Click:Connect(function()if aA.Disabled then return end aA:SetValue(not aA.Value)end)if typeof(aA.Tooltip)== -'string'or typeof(aA.DisabledTooltip)=='string'then aA.TooltipTable=C:AddTooltip(aA.Tooltip,aA.DisabledTooltip,aB)aA. -TooltipTable.Disabled=aA.Disabled end if aA.Risky then aC.TextColor3=C.Scheme.RedColor C.Registry[aC].TextColor3= -'RedColor'end aA:Display()ay:Resize()aA.TextLabel=aC aA.Container=az setmetatable(aA,as)aA.Holder=aB table.insert(ay. -Elements,aA)aA.Default=aA.Value w[aw]=aA return aA end function au.AddInput(av,aw,ax)ax=C:Validate(ax,D.Input)local ay= -av local az,aA=ay.Container,{Text=ax.Text,Value=ax.Default,Finished=ax.Finished,Numeric=ax.Numeric,ClearTextOnFocus=ax. -ClearTextOnFocus,Placeholder=ax.Placeholder,AllowEmpty=ax.AllowEmpty,EmptyReset=ax.EmptyReset,Tooltip=ax.Tooltip, -DisabledTooltip=ax.DisabledTooltip,TooltipTable=nil,Callback=ax.Callback,Changed=ax.Changed,Disabled=ax.Disabled,Visible -=ax.Visible,Type='Input'}local aB=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,39),Visible=aA.Visible, -Parent=az})local aC,aD=af('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=aA.Text,TextSize=14, -TextXAlignment=Enum.TextXAlignment.Left,Parent=aB}),af('TextBox',{AnchorPoint=Vector2.new(0,1),BackgroundColor3= -'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=not aA.Disabled and aA.ClearTextOnFocus, -PlaceholderText=aA.Placeholder,Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,21),Text=aA.Value,TextEditable=not aA. -Disabled,TextScaled=true,TextXAlignment=Enum.TextXAlignment.Left,Parent=aB})af('UIPadding',{PaddingBottom=UDim.new(0,3), -PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aD})function aA.UpdateColors(aE)if -C.Unloaded then return end aC.TextTransparency=aA.Disabled and 0.8 or 0 aD.TextTransparency=aA.Disabled and 0.8 or 0 end -function aA.OnChanged(aE,aF)aA.Changed=aF end function aA.SetValue(aE,aF)if not aA.AllowEmpty and Q(aF)==''then aF=aA. -EmptyReset end if ax.MaxLength and#aF>ax.MaxLength then aF=aF:sub(1,ax.MaxLength)end if aA.Numeric then if#tostring(aF)> -0 and not tonumber(aF)then aF=aA.Value end end aA.Value=aF aD.Text=aF if not aA.Disabled then C:SafeCallback(aA.Callback -,aA.Value)C:SafeCallback(aA.Changed,aA.Value)end end function aA.SetDisabled(aE,aF:boolean)aA.Disabled=aF if aA. -TooltipTable then aA.TooltipTable.Disabled=aA.Disabled end aD.ClearTextOnFocus=not aA.Disabled and aA.ClearTextOnFocus -aD.TextEditable=not aA.Disabled aA:UpdateColors()end function aA.SetVisible(aE,aF:boolean)aA.Visible=aF aB.Visible=aA. -Visible ay:Resize()end function aA.SetText(aE,aF:string)aA.Text=aF aC.Text=aF end if aA.Finished then aD.FocusLost: -Connect(function(aE)if not aE then return end aA:SetValue(aD.Text)end)else aD:GetPropertyChangedSignal'Text':Connect( -function()if aD.Text==aA.Value then return end aA:SetValue(aD.Text)end)end if typeof(aA.Tooltip)=='string'or typeof(aA. -DisabledTooltip)=='string'then aA.TooltipTable=C:AddTooltip(aA.Tooltip,aA.DisabledTooltip,aD)aA.TooltipTable.Disabled=aA -.Disabled end ay:Resize()aA.Holder=aB table.insert(ay.Elements,aA)aA.Default=aA.Value x[aw]=aA return aA end function au -.AddSlider(av,aw,ax)ax=C:Validate(ax,D.Slider)local ay=av local az,aA=ay.Container,{Text=ax.Text,Value=ax.Default,Min=ax -.Min,Max=ax.Max,Prefix=ax.Prefix,Suffix=ax.Suffix,Compact=ax.Compact,Rounding=ax.Rounding,Tooltip=ax.Tooltip, -DisabledTooltip=ax.DisabledTooltip,TooltipTable=nil,Callback=ax.Callback,Changed=ax.Changed,Disabled=ax.Disabled,Visible -=ax.Visible,Type='Slider'}local aB,aC=(af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ax.Compact and 13 or 31 -),Visible=aA.Visible,Parent=az}))if not ax.Compact then aC=af('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0 -,14),Text=aA.Text,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=aB})end local aD=af('TextButton',{Active= -not aA.Disabled,AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, -Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,13),Text='',Parent=aB})local aE=af('TextLabel',{ -BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text='',TextSize=14,ZIndex=2,Parent=aD})af('UIStroke',{ -ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=aE})local -aF=af('Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(0.5,1),Parent=aD})function aA.UpdateColors(aG)if C. -Unloaded then return end if aC then aC.TextTransparency=aA.Disabled and 0.8 or 0 end aE.TextTransparency=aA.Disabled and -0.8 or 0 aF.BackgroundColor3=aA.Disabled and C.Scheme.OutlineColor or C.Scheme.AccentColor C.Registry[aF]. -BackgroundColor3=aA.Disabled and'OutlineColor'or'AccentColor'end function aA.Display(aG)if C.Unloaded then return end -local aH if ax.FormatDisplayValue then aH=ax.FormatDisplayValue(aA,aA.Value)end if aH then aE.Text=tostring(aH)else if -ax.Compact then aE.Text=string.format('%s: %s%s%s',aA.Text,aA.Prefix,aA.Value,aA.Suffix)elseif ax.HideMax then aE.Text= -string.format('%s%s%s',aA.Prefix,aA.Value,aA.Suffix)else aE.Text=string.format('%s%s%s/%s%s%s',aA.Prefix,aA.Value,aA. -Suffix,aA.Prefix,aA.Max,aA.Suffix)end end local aI=(aA.Value-aA.Min)/(aA.Max-aA.Min)aF.Size=UDim2.fromScale(aI,1)end -function aA.OnChanged(aG,aH)aA.Changed=aH end function aA.SetMax(aG,aH)assert(aH>aA.Min, -'Max value cannot be less than the current min value.')aA:SetValue(math.clamp(aA.Value,aA.Min,aH))aA.Max=aH aA:Display() -end function aA.SetMin(aG,aH)assert(aHay.MaxLength then aG=aG:sub(1,ay.MaxLength)end if aB.Numeric then if#tostring(aG)> +0 and not tonumber(aG)then aG=aB.Value end end aB.Value=aG aE.Text=aG if not aB.Disabled then C:SafeCallback(aB.Callback +,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end end function aB.SetDisabled(aF,aG:boolean)aB.Disabled=aG if aB. +TooltipTable then aB.TooltipTable.Disabled=aB.Disabled end aE.ClearTextOnFocus=not aB.Disabled and aB.ClearTextOnFocus +aE.TextEditable=not aB.Disabled aB:UpdateColors()end function aB.SetVisible(aF,aG:boolean)aB.Visible=aG aC.Visible=aB. +Visible az:Resize()end function aB.SetText(aF,aG:string)aB.Text=aG aD.Text=aG end if aB.Finished then aE.FocusLost: +Connect(function(aF)if not aF then return end aB:SetValue(aE.Text)end)else aE:GetPropertyChangedSignal'Text':Connect( +function()if aE.Text==aB.Value then return end aB:SetValue(aE.Text)end)end if typeof(aB.Tooltip)=='string'or typeof(aB. +DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB.Tooltip,aB.DisabledTooltip,aE)aB.TooltipTable.Disabled=aB +.Disabled end az:Resize()aB.Holder=aC table.insert(az.Elements,aB)aB.Default=aB.Value x[ax]=aB return aB end function av +.AddSlider(aw,ax,ay)ay=C:Validate(ay,D.Slider)local az=aw local aA,aB=az.Container,{Text=ay.Text,Value=ay.Default,Min=ay +.Min,Max=ay.Max,Prefix=ay.Prefix,Suffix=ay.Suffix,Compact=ay.Compact,Rounding=ay.Rounding,Tooltip=ay.Tooltip, +DisabledTooltip=ay.DisabledTooltip,TooltipTable=nil,Callback=ay.Callback,Changed=ay.Changed,Disabled=ay.Disabled,Visible +=ay.Visible,Type='Slider'}local aC,aD=(ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Compact and 13 or 31 +),Visible=aB.Visible,Parent=aA}))if not ay.Compact then aD=ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0 +,14),Text=aB.Text,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=aC})end local aE=ag('TextButton',{Active= +not aB.Disabled,AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, +Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,13),Text='',Parent=aC})local aF=ag('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text='',TextSize=14,ZIndex=2,Parent=aE})ag('UIStroke',{ +ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=aF})local +aG=ag('Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(0.5,1),Parent=aE})function aB.UpdateColors(aH)if C. +Unloaded then return end if aD then aD.TextTransparency=aB.Disabled and 0.8 or 0 end aF.TextTransparency=aB.Disabled and +0.8 or 0 aG.BackgroundColor3=aB.Disabled and C.Scheme.OutlineColor or C.Scheme.AccentColor C.Registry[aG]. +BackgroundColor3=aB.Disabled and'OutlineColor'or'AccentColor'end function aB.Display(aH)if C.Unloaded then return end +local aI if ay.FormatDisplayValue then aI=ay.FormatDisplayValue(aB,aB.Value)end if aI then aF.Text=tostring(aI)else if +ay.Compact then aF.Text=string.format('%s: %s%s%s',aB.Text,aB.Prefix,aB.Value,aB.Suffix)elseif ay.HideMax then aF.Text= +string.format('%s%s%s',aB.Prefix,aB.Value,aB.Suffix)else aF.Text=string.format('%s%s%s/%s%s%s',aB.Prefix,aB.Value,aB. +Suffix,aB.Prefix,aB.Max,aB.Suffix)end end local aJ=(aB.Value-aB.Min)/(aB.Max-aB.Min)aG.Size=UDim2.fromScale(aJ,1)end +function aB.OnChanged(aH,aI)aB.Changed=aI end function aB.SetMax(aH,aI)assert(aI>aB.Min, +'Max value cannot be less than the current min value.')aB:SetValue(math.clamp(aB.Value,aB.Min,aI))aB.Max=aI aB:Display() +end function aB.SetMin(aH,aI)assert(aI25 then aI=aI:sub(1,22)..'...'end -aD.Text=(aI==''and'---'or aI)end function aA.OnChanged(aH,aI)aA.Changed=aI end function aA.GetActiveValues(aH)if ax. -Multi then local aI={}for aJ,aK in aA.Value do table.insert(aI,aJ)end return aI end return aA.Value and 1 or 0 end local -aH={}function aA.BuildDropdownList(aI)local aJ,aK=aA.Values,aA.DisabledValues for aL,aM in aH do aL:Destroy()end table. -clear(aH)local aL=0 for aM,aN in aJ do if aF and not tostring(aN):lower():match(aF.Text:lower())then continue end aL+=1 -local aO,aP=table.find(aK,aN),{}local aQ=af('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1, -LayoutOrder=aO and 1 or 0,Size=UDim2.new(1,0,0,21),Text=tostring(aN),TextSize=14,TextTransparency=0.5,TextXAlignment= -Enum.TextXAlignment.Left,Parent=aG.Menu})af('UIPadding',{PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),Parent=aQ} -)local aR if ax.Multi then aR=aA.Value[aN]else aR=aA.Value==aN end function aP.UpdateButton(aS)if ax.Multi then aR=aA. -Value[aN]else aR=aA.Value==aN end aQ.BackgroundTransparency=aR and 0 or 1 aQ.TextTransparency=aO and 0.8 or aR and 0 or -0.5 end if not aO then aQ.MouseButton1Click:Connect(function()local aS=not aR if not(aA:GetActiveValues()==1 and not aS -and not ax.AllowNull)then aR=aS if ax.Multi then aA.Value[aN]=aR and true or nil else aA.Value=aR and aN or nil end for -aT,aU in aH do aU:UpdateButton()end end aP:UpdateButton()aA:Display()C:UpdateDependencyBoxes()C:SafeCallback(aA.Callback -,aA.Value)C:SafeCallback(aA.Changed,aA.Value)end)end aP:UpdateButton()aA:Display()aH[aQ]=aP end aA:RecalculateListSize( -aL)end function aA.SetValue(aI,aJ)if ax.Multi then local aK={}for aL,aM in aJ or{}do if typeof(aM)~='boolean'then aK[aM] -=true elseif aM and table.find(aA.Values,aL)then aK[aL]=true end end aA.Value=aK else if table.find(aA.Values,aJ)then aA -.Value=aJ elseif not aJ then aA.Value=nil end end aA:Display()for aK,aL in aH do aL:UpdateButton()end if not aA.Disabled -then C:UpdateDependencyBoxes()C:SafeCallback(aA.Callback,aA.Value)C:SafeCallback(aA.Changed,aA.Value)end end function aA -.SetValues(aI,aJ)aA.Values=aJ aA:BuildDropdownList()end function aA.AddValues(aI,aJ)if typeof(aJ)=='table'then for aK,aL -in aJ do table.insert(aA.Values,aL)end elseif typeof(aJ)=='string'then table.insert(aA.Values,aJ)else return end aA: -BuildDropdownList()end function aA.SetDisabledValues(aI,aJ)aA.DisabledValues=aJ aA:BuildDropdownList()end function aA. -AddDisabledValues(aI,aJ)if typeof(aJ)=='table'then for aK,aL in aJ do table.insert(aA.DisabledValues,aL)end elseif -typeof(aJ)=='string'then table.insert(aA.DisabledValues,aJ)else return end aA:BuildDropdownList()end function aA. -SetDisabled(aI,aJ:boolean)aA.Disabled=aJ if aA.TooltipTable then aA.TooltipTable.Disabled=aA.Disabled end aG:Close()aD. -Active=not aA.Disabled aA:UpdateColors()end function aA.SetVisible(aI,aJ:boolean)aA.Visible=aJ aB.Visible=aA.Visible ay: -Resize()end function aA.SetText(aI,aJ:string)aA.Text=aJ aB.Size=UDim2.new(1,0,0,aJ and 39 or 21)aC.Text=aJ and aJ or''aC -.Visible=not not aJ end aD.MouseButton1Click:Connect(function()if aA.Disabled then return end aG:Toggle()end)if aF then -aF:GetPropertyChangedSignal'Text':Connect(aA.BuildDropdownList)end local aI={}if typeof(ax.Default)=='string'then local -aJ=table.find(aA.Values,ax.Default)if aJ then table.insert(aI,aJ)end elseif typeof(ax.Default)=='table'then for aJ,aK in -next,ax.Default do local aL=table.find(aA.Values,aK)if aL then table.insert(aI,aL)end end elseif aA.Values[ax.Default]~= -nil then table.insert(aI,ax.Default)end if next(aI)then for aJ=1,#aI do local aK=aI[aJ]if ax.Multi then aA.Value[aA. -Values[aK] ]=true else aA.Value=aA.Values[aK]end if not ax.Multi then break end end end if typeof(aA.Tooltip)=='string' -or typeof(aA.DisabledTooltip)=='string'then aA.TooltipTable=C:AddTooltip(aA.Tooltip,aA.DisabledTooltip,aD)aA. -TooltipTable.Disabled=aA.Disabled end aA:UpdateColors()aA:Display()aA:BuildDropdownList()ay:Resize()aA.Holder=aB table. -insert(ay.Elements,aA)aA.Default=aI aA.DefaultValues=aA.Values x[aw]=aA return aA end function au.AddViewport(av,aw,ax) -ax=C:Validate(ax,D.Viewport)local ay=av local az,aA,aB,aC,aD,aE=ay.Container,false,false,0,(ax.Object)if ax.Clone and -typeof(ax.Object)=='Instance'then if ax.Object.Archivable then aD=aD:Clone()else ax.Object.Archivable=true aD=aD:Clone() -ax.Object.Archivable=false end end local aF={Object=aD,Camera=if not ax.Camera then Instance.new'Camera'else ax.Camera, -Interactive=ax.Interactive,AutoFocus=ax.AutoFocus,Visible=ax.Visible,Type='Viewport'}assert(typeof(aF.Object)== -'Instance'and(aF.Object:IsA'BasePart'or aF.Object:IsA'Model'),'Instance must be a BasePart or Model.')assert(typeof(aF. -Camera)=='Instance'and aF.Camera:IsA'Camera','Camera must be a valid Camera instance.')local function aG(aH)if aH:IsA -'BasePart'then return aH.Size end return select(2,aH:GetBoundingBox())end local function aH()local aI=aG(aF.Object)local -aJ=math.max(aI.X,aI.Y,aI.Z)local aK,aL=aJ*2,aF.Object:GetPivot().Position aF.Camera.CFrame=CFrame.new(aL+Vector3.new(0, -aJ/2,aK),aL)end local aI=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ax.Height),Visible=aF.Visible,Parent= -az})local aJ=af('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor', -BorderSizePixel=1,Position=UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aI})af('UIPadding',{PaddingBottom=UDim. -new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aJ})local aK=af( -'ViewportFrame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Parent=aJ,CurrentCamera=aF.Camera,Active=aF. -Interactive})aK.MouseEnter:Connect(function()if not aF.Interactive then return end for aL,aM in ay.Tab.Sides do aM. -ScrollingEnabled=false end end)aK.MouseLeave:Connect(function()if not aF.Interactive then return end for aL,aM in ay.Tab -.Sides do aM.ScrollingEnabled=true end end)aK.InputBegan:Connect(function(aL)if not aF.Interactive then return end if aL -.UserInputType==Enum.UserInputType.MouseButton2 then aA=true aE=aL.Position elseif aL.UserInputType==Enum.UserInputType. -Touch and not aB then aA=true aE=aL.Position end end)C:GiveSignal(k.InputEnded:Connect(function(aL)if C.Unloaded then -return end if not aF.Interactive then return end if aL.UserInputType==Enum.UserInputType.MouseButton2 then aA=false -elseif aL.UserInputType==Enum.UserInputType.Touch then aA=false end end))C:GiveSignal(k.InputChanged:Connect(function(aL -)if C.Unloaded then return end if not aF.Interactive or not aA or aB then return end if aL.UserInputType==Enum. -UserInputType.MouseMovement or aL.UserInputType==Enum.UserInputType.Touch then local aM=aL.Position-aE aE=aL.Position -local aN,aO,aP=aF.Object:GetPivot().Position,aF.Camera,CFrame.fromAxisAngle(Vector3.new(0,1,0),-aM.X*0.01)aO.CFrame= -CFrame.new(aN)*aP*CFrame.new(-aN)*aO.CFrame local aQ=CFrame.fromAxisAngle(aO.CFrame.RightVector,-aM.Y*0.01)local aR= -CFrame.new(aN)*aQ*CFrame.new(-aN)*aO.CFrame if aR.UpVector.Y>0.1 then aO.CFrame=aR end end end))aK.InputChanged:Connect( -function(aL)if not aF.Interactive then return end if aL.UserInputType==Enum.UserInputType.MouseWheel then local aM=aL. -Position.Z*2 aF.Camera.CFrame+=aF.Camera.CFrame.LookVector*aM end end)C:GiveSignal(k.TouchPinch:Connect(function(aL,aM, -aN,aO)if C.Unloaded then return end if not aF.Interactive or not C:MouseIsOverFrame(aK,aL[1])then return end if aO==Enum -.UserInputState.Begin then aB=true aA=false aC=(aL[1]-aL[2]).Magnitude elseif aO==Enum.UserInputState.Change then local -aP=(aL[1]-aL[2]).Magnitude local aQ=(aP-aC)*0.1 aC=aP aF.Camera.CFrame+=aF.Camera.CFrame.LookVector*aQ elseif aO==Enum. -UserInputState.End or aO==Enum.UserInputState.Cancel then aB=false end end))aF.Object.Parent=aK if aF.AutoFocus then aH( -)end function aF.SetObject(aL,aM:Instance,aN:boolean?)assert(aM,'Object cannot be nil.')if aN then aM=aM:Clone()end if -aF.Object then aF.Object:Destroy()end aF.Object=aM aF.Object.Parent=aK ay:Resize()end function aF.SetHeight(aL,aM:number -)assert(aM>0,'Height must be greater than 0.')aI.Size=UDim2.new(1,0,0,aM)ay:Resize()end function aF.Focus(aL)if not aF. -Object then return end aH()end function aF.SetCamera(aL,aM:Instance)assert(aM and typeof(aM)=='Instance'and aM:IsA -'Camera','Camera must be a valid Camera instance.')aF.Camera=aM aK.CurrentCamera=aM end function aF.SetInteractive(aL,aM -:boolean)aF.Interactive=aM aK.Active=aM end function aF.SetVisible(aL,aM:boolean)aF.Visible=aM aI.Visible=aF.Visible ay: -Resize()end ay:Resize()aF.Holder=aI table.insert(ay.Elements,aF)x[aw]=aF return aF end function au.AddImage(av,aw,ax)ax= -C:Validate(ax,D.Image)local ay=av local az,aA=ay.Container,{Image=ax.Image,Color=ax.Color,RectOffset=ax.RectOffset, -RectSize=ax.RectSize,Height=ax.Height,ScaleType=ax.ScaleType,Transparency=ax.Transparency,BackgroundTransparency=ax. -BackgroundTransparency,Visible=ax.Visible,Type='Image'}local aB=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0, -0,ax.Height),Visible=aA.Visible,Parent=az})local aC=af('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3= -'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,BackgroundTransparency=aA.BackgroundTransparency,Position= -UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aB})af('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim. -new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aC})local aD={BackgroundTransparency=1,Size=UDim2. -fromScale(1,1),Image=aA.Image,ImageTransparency=aA.Transparency,ImageColor3=aA.Color,ImageRectOffset=aA.RectOffset, -ImageRectSize=aA.RectSize,ScaleType=aA.ScaleType,Parent=aC}local aE=C:GetCustomIcon(aD.Image)assert(aE, -[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])aD.Image=aE.Url aD.ImageRectOffset=aE. -ImageRectOffset aD.ImageRectSize=aE.ImageRectSize local aF=af('ImageLabel',aD)function aA.SetHeight(aG,aH:number)assert( -aH>0,'Height must be greater than 0.')aA.Height=aH aB.Size=UDim2.new(1,0,0,aH)ay:Resize()end function aA.SetImage(aG,aH: -string)assert(typeof(aH)=='string','Image must be a string.')local aI=C:GetCustomIcon(aH)assert(aI, -[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])aH=aI.Url aA.RectOffset=aI.ImageRectOffset -aA.RectSize=aI.ImageRectSize aF.Image=aH aA.Image=aH end function aA.SetColor(aG,aH:Color3)assert(typeof(aH)=='Color3', -'Color must be a Color3 value.')aF.ImageColor3=aH aA.Color=aH end function aA.SetRectOffset(aG,aH:Vector2)assert(typeof( -aH)=='Vector2','RectOffset must be a Vector2 value.')aF.ImageRectOffset=aH aA.RectOffset=aH end function aA.SetRectSize( -aG,aH:Vector2)assert(typeof(aH)=='Vector2','RectSize must be a Vector2 value.')aF.ImageRectSize=aH aA.RectSize=aH end -function aA.SetScaleType(aG,aH:Enum.ScaleType)assert(typeof(aH)=='EnumItem'and aH:IsA'ScaleType', -'ScaleType must be a valid Enum.ScaleType.')aF.ScaleType=aH aA.ScaleType=aH end function aA.SetTransparency(aG,aH:number -)assert(typeof(aH)=='number','Transparency must be a number between 0 and 1.')assert(aH>=0 and aH<=1, -'Transparency must be between 0 and 1.')aF.ImageTransparency=aH aA.Transparency=aH end function aA.SetVisible(aG,aH: -boolean)aA.Visible=aH aB.Visible=aA.Visible ay:Resize()end ay:Resize()aA.Holder=aB table.insert(ay.Elements,aA)x[aw]=aA -return aA end function au.AddVideo(av,aw,ax)ax=C:Validate(ax,D.Video)local ay=av local az,aA=ay.Container,{Video=ax. -Video,Looped=ax.Looped,Playing=ax.Playing,Volume=ax.Volume,Height=ax.Height,Visible=ax.Visible,Type='Video'}local aB=af( -'Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ax.Height),Visible=aA.Visible,Parent=az})local aC=af('Frame',{ +14,TextXAlignment=Enum.TextXAlignment.Left,Visible=false,Parent=aE})ag('UIPadding',{PaddingLeft=UDim.new(0,8),Parent=aG} +)end local aH=C:AddContextMenu(aE,function()return UDim2.fromOffset(aE.AbsoluteSize.X/C.DPIScale,0)end,function()return{ +0.5,aE.AbsoluteSize.Y+1.5}end,2,function(aH:boolean)aE.TextTransparency=(aH and aG)and 1 or 0 aF.ImageTransparency=aH +and 0 or 0.5 aF.Rotation=aH and 180 or 0 if aG then aG.Text=''aG.Visible=aH end end)aB.Menu=aH function aB. +RecalculateListSize(aI,aJ)local aK=math.clamp((aJ or O(aB.Values))*21,0,ay.MaxVisibleDropdownItems*21)aH:SetSize( +function()return UDim2.fromOffset(aE.AbsoluteSize.X/C.DPIScale,aK)end)end function aB.UpdateColors(aI)if C.Unloaded then +return end aD.TextTransparency=aB.Disabled and 0.8 or 0 aE.TextTransparency=aB.Disabled and 0.8 or 0 aF. +ImageTransparency=aB.Disabled and 0.8 or aH.Active and 0 or 0.5 end function aB.Display(aI)if C.Unloaded then return end +local aJ=''if ay.Multi then for aK,aL in aB.Values do if aB.Value[aL]then aJ=aJ..(ay.FormatDisplayValue and tostring(ay. +FormatDisplayValue(aL))or tostring(aL))..', 'end end aJ=aJ:sub(1,#aJ-2)else aJ=aB.Value and tostring(aB.Value)or''if aJ +~=''and ay.FormatDisplayValue then aJ=tostring(ay.FormatDisplayValue(aJ))end end if#aJ>25 then aJ=aJ:sub(1,22)..'...'end +aE.Text=(aJ==''and'---'or aJ)end function aB.OnChanged(aI,aJ)aB.Changed=aJ end function aB.GetActiveValues(aI)if ay. +Multi then local aJ={}for aK,aL in aB.Value do table.insert(aJ,aK)end return aJ end return aB.Value and 1 or 0 end local +aI={}function aB.BuildDropdownList(aJ)local aK,aL=aB.Values,aB.DisabledValues for aM,aN in aI do aM:Destroy()end table. +clear(aI)local aM=0 for aN,aO in aK do if aG and not tostring(aO):lower():match(aG.Text:lower())then continue end aM+=1 +local aP,aQ=table.find(aL,aO),{}local aR=ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1, +LayoutOrder=aP and 1 or 0,Size=UDim2.new(1,0,0,21),Text=tostring(aO),TextSize=14,TextTransparency=0.5,TextXAlignment= +Enum.TextXAlignment.Left,Parent=aH.Menu})ag('UIPadding',{PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),Parent=aR} +)local aS if ay.Multi then aS=aB.Value[aO]else aS=aB.Value==aO end function aQ.UpdateButton(aT)if ay.Multi then aS=aB. +Value[aO]else aS=aB.Value==aO end aR.BackgroundTransparency=aS and 0 or 1 aR.TextTransparency=aP and 0.8 or aS and 0 or +0.5 end if not aP then aR.MouseButton1Click:Connect(function()local aT=not aS if not(aB:GetActiveValues()==1 and not aT +and not ay.AllowNull)then aS=aT if ay.Multi then aB.Value[aO]=aS and true or nil else aB.Value=aS and aO or nil end for +aU,aV in aI do aV:UpdateButton()end end aQ:UpdateButton()aB:Display()C:UpdateDependencyBoxes()C:SafeCallback(aB.Callback +,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end)end aQ:UpdateButton()aB:Display()aI[aR]=aQ end aB:RecalculateListSize( +aM)end function aB.SetValue(aJ,aK)if ay.Multi then local aL={}for aM,aN in aK or{}do if typeof(aN)~='boolean'then aL[aN] +=true elseif aN and table.find(aB.Values,aM)then aL[aM]=true end end aB.Value=aL else if table.find(aB.Values,aK)then aB +.Value=aK elseif not aK then aB.Value=nil end end aB:Display()for aL,aM in aI do aM:UpdateButton()end if not aB.Disabled +then C:UpdateDependencyBoxes()C:SafeCallback(aB.Callback,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end end function aB +.SetValues(aJ,aK)aB.Values=aK aB:BuildDropdownList()end function aB.AddValues(aJ,aK)if typeof(aK)=='table'then for aL,aM +in aK do table.insert(aB.Values,aM)end elseif typeof(aK)=='string'then table.insert(aB.Values,aK)else return end aB: +BuildDropdownList()end function aB.SetDisabledValues(aJ,aK)aB.DisabledValues=aK aB:BuildDropdownList()end function aB. +AddDisabledValues(aJ,aK)if typeof(aK)=='table'then for aL,aM in aK do table.insert(aB.DisabledValues,aM)end elseif +typeof(aK)=='string'then table.insert(aB.DisabledValues,aK)else return end aB:BuildDropdownList()end function aB. +SetDisabled(aJ,aK:boolean)aB.Disabled=aK if aB.TooltipTable then aB.TooltipTable.Disabled=aB.Disabled end aH:Close()aE. +Active=not aB.Disabled aB:UpdateColors()end function aB.SetVisible(aJ,aK:boolean)aB.Visible=aK aC.Visible=aB.Visible az: +Resize()end function aB.SetText(aJ,aK:string)aB.Text=aK aC.Size=UDim2.new(1,0,0,aK and 39 or 21)aD.Text=aK and aK or''aD +.Visible=not not aK end aE.MouseButton1Click:Connect(function()if aB.Disabled then return end aH:Toggle()end)if aG then +aG:GetPropertyChangedSignal'Text':Connect(aB.BuildDropdownList)end local aJ={}if typeof(ay.Default)=='string'then local +aK=table.find(aB.Values,ay.Default)if aK then table.insert(aJ,aK)end elseif typeof(ay.Default)=='table'then for aK,aL in +next,ay.Default do local aM=table.find(aB.Values,aL)if aM then table.insert(aJ,aM)end end elseif aB.Values[ay.Default]~= +nil then table.insert(aJ,ay.Default)end if next(aJ)then for aK=1,#aJ do local aL=aJ[aK]if ay.Multi then aB.Value[aB. +Values[aL] ]=true else aB.Value=aB.Values[aL]end if not ay.Multi then break end end end if typeof(aB.Tooltip)=='string' +or typeof(aB.DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB.Tooltip,aB.DisabledTooltip,aE)aB. +TooltipTable.Disabled=aB.Disabled end aB:UpdateColors()aB:Display()aB:BuildDropdownList()az:Resize()aB.Holder=aC table. +insert(az.Elements,aB)aB.Default=aJ aB.DefaultValues=aB.Values x[ax]=aB return aB end function av.AddViewport(aw,ax,ay) +ay=C:Validate(ay,D.Viewport)local az=aw local aA,aB,aC,aD,aE,aF=az.Container,false,false,0,(ay.Object)if ay.Clone and +typeof(ay.Object)=='Instance'then if ay.Object.Archivable then aE=aE:Clone()else ay.Object.Archivable=true aE=aE:Clone() +ay.Object.Archivable=false end end local aG={Object=aE,Camera=if not ay.Camera then Instance.new'Camera'else ay.Camera, +Interactive=ay.Interactive,AutoFocus=ay.AutoFocus,Visible=ay.Visible,Type='Viewport'}assert(typeof(aG.Object)== +'Instance'and(aG.Object:IsA'BasePart'or aG.Object:IsA'Model'),'Instance must be a BasePart or Model.')assert(typeof(aG. +Camera)=='Instance'and aG.Camera:IsA'Camera','Camera must be a valid Camera instance.')local function aH(aI)if aI:IsA +'BasePart'then return aI.Size end return select(2,aI:GetBoundingBox())end local function aI()local aJ=aH(aG.Object)local +aK=math.max(aJ.X,aJ.Y,aJ.Z)local aL,aM=aK*2,aG.Object:GetPivot().Position aG.Camera.CFrame=CFrame.new(aM+Vector3.new(0, +aK/2,aL),aM)end local aJ=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Height),Visible=aG.Visible,Parent= +aA})local aK=ag('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Position=UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aJ})ag('UIPadding',{PaddingBottom=UDim. +new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aK})local aL=ag( +'ViewportFrame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Parent=aK,CurrentCamera=aG.Camera,Active=aG. +Interactive})aL.MouseEnter:Connect(function()if not aG.Interactive then return end for aM,aN in az.Tab.Sides do aN. +ScrollingEnabled=false end end)aL.MouseLeave:Connect(function()if not aG.Interactive then return end for aM,aN in az.Tab +.Sides do aN.ScrollingEnabled=true end end)aL.InputBegan:Connect(function(aM)if not aG.Interactive then return end if aM +.UserInputType==Enum.UserInputType.MouseButton2 then aB=true aF=aM.Position elseif aM.UserInputType==Enum.UserInputType. +Touch and not aC then aB=true aF=aM.Position end end)C:GiveSignal(k.InputEnded:Connect(function(aM)if C.Unloaded then +return end if not aG.Interactive then return end if aM.UserInputType==Enum.UserInputType.MouseButton2 then aB=false +elseif aM.UserInputType==Enum.UserInputType.Touch then aB=false end end))C:GiveSignal(k.InputChanged:Connect(function(aM +)if C.Unloaded then return end if not aG.Interactive or not aB or aC then return end if aM.UserInputType==Enum. +UserInputType.MouseMovement or aM.UserInputType==Enum.UserInputType.Touch then local aN=aM.Position-aF aF=aM.Position +local aO,aP,aQ=aG.Object:GetPivot().Position,aG.Camera,CFrame.fromAxisAngle(Vector3.new(0,1,0),-aN.X*0.01)aP.CFrame= +CFrame.new(aO)*aQ*CFrame.new(-aO)*aP.CFrame local aR=CFrame.fromAxisAngle(aP.CFrame.RightVector,-aN.Y*0.01)local aS= +CFrame.new(aO)*aR*CFrame.new(-aO)*aP.CFrame if aS.UpVector.Y>0.1 then aP.CFrame=aS end end end))aL.InputChanged:Connect( +function(aM)if not aG.Interactive then return end if aM.UserInputType==Enum.UserInputType.MouseWheel then local aN=aM. +Position.Z*2 aG.Camera.CFrame+=aG.Camera.CFrame.LookVector*aN end end)C:GiveSignal(k.TouchPinch:Connect(function(aM,aN, +aO,aP)if C.Unloaded then return end if not aG.Interactive or not C:MouseIsOverFrame(aL,aM[1])then return end if aP==Enum +.UserInputState.Begin then aC=true aB=false aD=(aM[1]-aM[2]).Magnitude elseif aP==Enum.UserInputState.Change then local +aQ=(aM[1]-aM[2]).Magnitude local aR=(aQ-aD)*0.1 aD=aQ aG.Camera.CFrame+=aG.Camera.CFrame.LookVector*aR elseif aP==Enum. +UserInputState.End or aP==Enum.UserInputState.Cancel then aC=false end end))aG.Object.Parent=aL if aG.AutoFocus then aI( +)end function aG.SetObject(aM,aN:Instance,aO:boolean?)assert(aN,'Object cannot be nil.')if aO then aN=aN:Clone()end if +aG.Object then aG.Object:Destroy()end aG.Object=aN aG.Object.Parent=aL az:Resize()end function aG.SetHeight(aM,aN:number +)assert(aN>0,'Height must be greater than 0.')aJ.Size=UDim2.new(1,0,0,aN)az:Resize()end function aG.Focus(aM)if not aG. +Object then return end aI()end function aG.SetCamera(aM,aN:Instance)assert(aN and typeof(aN)=='Instance'and aN:IsA +'Camera','Camera must be a valid Camera instance.')aG.Camera=aN aL.CurrentCamera=aN end function aG.SetInteractive(aM,aN +:boolean)aG.Interactive=aN aL.Active=aN end function aG.SetVisible(aM,aN:boolean)aG.Visible=aN aJ.Visible=aG.Visible az: +Resize()end az:Resize()aG.Holder=aJ table.insert(az.Elements,aG)x[ax]=aG return aG end function av.AddImage(aw,ax,ay)ay= +C:Validate(ay,D.Image)local az=aw local aA,aB=az.Container,{Image=ay.Image,Color=ay.Color,RectOffset=ay.RectOffset, +RectSize=ay.RectSize,Height=ay.Height,ScaleType=ay.ScaleType,Transparency=ay.Transparency,BackgroundTransparency=ay. +BackgroundTransparency,Visible=ay.Visible,Type='Image'}local aC=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0, +0,ay.Height),Visible=aB.Visible,Parent=aA})local aD=ag('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3= +'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,BackgroundTransparency=aB.BackgroundTransparency,Position= +UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aC})ag('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aD})local aE={BackgroundTransparency=1,Size=UDim2. +fromScale(1,1),Image=aB.Image,ImageTransparency=aB.Transparency,ImageColor3=aB.Color,ImageRectOffset=aB.RectOffset, +ImageRectSize=aB.RectSize,ScaleType=aB.ScaleType,Parent=aD}local aF=C:GetCustomIcon(aE.Image)assert(aF, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])aE.Image=aF.Url aE.ImageRectOffset=aF. +ImageRectOffset aE.ImageRectSize=aF.ImageRectSize local aG=ag('ImageLabel',aE)function aB.SetHeight(aH,aI:number)assert( +aI>0,'Height must be greater than 0.')aB.Height=aI aC.Size=UDim2.new(1,0,0,aI)az:Resize()end function aB.SetImage(aH,aI: +string)assert(typeof(aI)=='string','Image must be a string.')local aJ=C:GetCustomIcon(aI)assert(aJ, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])aI=aJ.Url aB.RectOffset=aJ.ImageRectOffset +aB.RectSize=aJ.ImageRectSize aG.Image=aI aB.Image=aI end function aB.SetColor(aH,aI:Color3)assert(typeof(aI)=='Color3', +'Color must be a Color3 value.')aG.ImageColor3=aI aB.Color=aI end function aB.SetRectOffset(aH,aI:Vector2)assert(typeof( +aI)=='Vector2','RectOffset must be a Vector2 value.')aG.ImageRectOffset=aI aB.RectOffset=aI end function aB.SetRectSize( +aH,aI:Vector2)assert(typeof(aI)=='Vector2','RectSize must be a Vector2 value.')aG.ImageRectSize=aI aB.RectSize=aI end +function aB.SetScaleType(aH,aI:Enum.ScaleType)assert(typeof(aI)=='EnumItem'and aI:IsA'ScaleType', +'ScaleType must be a valid Enum.ScaleType.')aG.ScaleType=aI aB.ScaleType=aI end function aB.SetTransparency(aH,aI:number +)assert(typeof(aI)=='number','Transparency must be a number between 0 and 1.')assert(aI>=0 and aI<=1, +'Transparency must be between 0 and 1.')aG.ImageTransparency=aI aB.Transparency=aI end function aB.SetVisible(aH,aI: +boolean)aB.Visible=aI aC.Visible=aB.Visible az:Resize()end az:Resize()aB.Holder=aC table.insert(az.Elements,aB)x[ax]=aB +return aB end function av.AddVideo(aw,ax,ay)ay=C:Validate(ay,D.Video)local az=aw local aA,aB=az.Container,{Video=ay. +Video,Looped=ay.Looped,Playing=ay.Playing,Volume=ay.Volume,Height=ay.Height,Visible=ay.Visible,Type='Video'}local aC=ag( +'Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Height),Visible=aB.Visible,Parent=aA})local aD=ag('Frame',{ AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2. -fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aB})af('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8 -),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aC})local aD=af('VideoFrame',{BackgroundTransparency=1,Size -=UDim2.fromScale(1,1),Video=aA.Video,Looped=aA.Looped,Volume=aA.Volume,Parent=aC})aD.Playing=aA.Playing function aA. -SetHeight(aE,aF:number)assert(aF>0,'Height must be greater than 0.')aA.Height=aF aB.Size=UDim2.new(1,0,0,aF)ay:Resize() -end function aA.SetVideo(aE,aF:string)assert(typeof(aF)=='string','Video must be a string.')aD.Video=aF aA.Video=aF end -function aA.SetLooped(aE,aF:boolean)assert(typeof(aF)=='boolean','Looped must be a boolean.')aD.Looped=aF aA.Looped=aF -end function aA.SetVolume(aE,aF:number)assert(typeof(aF)=='number','Volume must be a number between 0 and 10.')aD.Volume -=aF aA.Volume=aF end function aA.SetPlaying(aE,aF:boolean)assert(typeof(aF)=='boolean','Playing must be a boolean.')aD. -Playing=aF aA.Playing=aF end function aA.Play(aE)aD.Playing=true aA.Playing=true end function aA.Pause(aE)aD.Playing= -false aA.Playing=false end function aA.SetVisible(aE,aF:boolean)aA.Visible=aF aB.Visible=aA.Visible ay:Resize()end ay: -Resize()aA.Holder=aB aA.VideoFrame=aD table.insert(ay.Elements,aA)x[aw]=aA return aA end function au.AddUIPassthrough(av -,aw,ax)ax=C:Validate(ax,D.UIPassthrough)local ay=av local az=ay.Container assert(ax.Instance, -'Instance must be provided.')assert(typeof(ax.Instance)=='Instance'and ax.Instance:IsA'GuiBase2d', -'Instance must inherit from GuiBase2d.')assert(typeof(ax.Height)=='number'and ax.Height>0, -'Height must be a number greater than 0.')local aA={Instance=ax.Instance,Height=ax.Height,Visible=ax.Visible,Type= -'UIPassthrough'}local aB=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ax.Height),Visible=aA.Visible,Parent= -az})aA.Instance.Parent=aB ay:Resize()function aA.SetHeight(aC,aD:number)assert(typeof(aD)=='number'and aD>0, -'Height must be a number greater than 0.')aA.Height=aD aB.Size=UDim2.new(1,0,0,aD)ay:Resize()end function aA.SetInstance -(aC,aD:Instance)assert(aD,'Instance must be provided.')assert(typeof(aD)=='Instance'and aD:IsA'GuiBase2d', -'Instance must inherit from GuiBase2d.')if aA.Instance then aA.Instance.Parent=nil end aA.Instance=aD aA.Instance.Parent -=aB end function aA.SetVisible(aC,aD:boolean)aA.Visible=aD aB.Visible=aA.Visible ay:Resize()end aA.Holder=aB table. -insert(ay.Elements,aA)x[aw]=aA return aA end function au.AddDependencyBox(av)local aw=av local ax,ay,az=(aw.Container)do -ay=af('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=ax})az=af('UIListLayout',{Padding -=UDim.new(0,8),Parent=ay})end local aA={Visible=false,Dependencies={},Holder=ay,Container=ay,Elements={},DependencyBoxes -={}}function aA.Resize(aB)ay.Size=UDim2.new(1,0,0,az.AbsoluteContentSize.Y/C.DPIScale)aw:Resize()end function aA.Update( -aB,aC)for aD,aE in aA.Dependencies do local aF,aG=aE[1],aE[2]if aF.Type=='Toggle'and aF.Value~=aG then ay.Visible=false -aA.Visible=false return elseif aF.Type=='Dropdown'then if typeof(aF.Value)=='table'then if not aF.Value[aG]then ay. -Visible=false aA.Visible=false return end else if aF.Value~=aG then ay.Visible=false aA.Visible=false return end end end -end aA.Visible=true ay.Visible=true if not C.Searching then task.defer(function()aA:Resize()end)elseif not aC then C: -UpdateSearch(C.SearchText)end end az:GetPropertyChangedSignal'AbsoluteContentSize':Connect(function()if not aA.Visible -then return end aA:Resize()end)function aA.SetupDependencies(aB,aC)for aD,aE in aC do assert(typeof(aE)=='table', -'Dependency should be a table.')assert(aE[1]~=nil,'Dependency is missing element.')assert(aE[2]~=nil, -'Dependency is missing expected value.')end aA.Dependencies=aC aA:Update()end ay:GetPropertyChangedSignal'Visible': -Connect(function()aA:Resize()end)setmetatable(aA,at)table.insert(aw.DependencyBoxes,aA)table.insert(C.DependencyBoxes,aA -)return aA end function au.AddDependencyGroupbox(av)local aw=av local ax,ay,az,aA=aw.Tab,(aw.BoxHolder)do az=af('Frame', -{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Visible=false,Parent=ay})af('UICorner',{CornerRadius=UDim. -new(0,C.CornerRadius),Parent=az})C:AddOutline(az)aA=af('UIListLayout',{Padding=UDim.new(0,8),Parent=az})af('UIPadding',{ -PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=az})end -local aB={Visible=false,Dependencies={},BoxHolder=ay,Holder=az,Container=az,Tab=ax,Elements={},DependencyBoxes={}} -function aB.Resize(aC)az.Size=UDim2.new(1,0,0,(aA.AbsoluteContentSize.Y/C.DPIScale)+18)end function aB.Update(aC,aD)for -aE,aF in aB.Dependencies do local aG,aH=aF[1],aF[2]if aG.Type=='Toggle'and aG.Value~=aH then az.Visible=false aB.Visible -=false return elseif aG.Type=='Dropdown'then if typeof(aG.Value)=='table'then if not aG.Value[aH]then az.Visible=false -aB.Visible=false return end else if aG.Value~=aH then az.Visible=false aB.Visible=false return end end end end aB. -Visible=true if not C.Searching then az.Visible=true aB:Resize()elseif not aD then C:UpdateSearch(C.SearchText)end end -function aB.SetupDependencies(aC,aD)for aE,aF in aD do assert(typeof(aF)=='table','Dependency should be a table.') -assert(aF[1]~=nil,'Dependency is missing element.')assert(aF[2]~=nil,'Dependency is missing expected value.')end aB. -Dependencies=aD aB:Update()end setmetatable(aB,at)table.insert(ax.DependencyGroupboxes,aB)table.insert(C.DependencyBoxes -,aB)return aB end at.__index=au at.__namecall=function(av,aw,...)return au[aw](...)end end function C.SetFont(au,av)if -typeof(av)=='EnumItem'then av=Font.fromEnum(av)end C.Scheme.Font=av C:UpdateColorsUsingRegistry()end function C. -SetNotifySide(au,av:string)C.NotifySide=av if av:lower()=='left'then _.AnchorPoint=Vector2.new(0,0)_.Position=UDim2. -fromOffset(6,6)aj.HorizontalAlignment=Enum.HorizontalAlignment.Left else _.AnchorPoint=Vector2.new(1,0)_.Position=UDim2. -new(1,-6,0,6)aj.HorizontalAlignment=Enum.HorizontalAlignment.Right end end function C.Notify(au,...)local av,aw={}, -select(1,...)if typeof(aw)=='table'then av.Title=tostring(aw.Title)av.Description=tostring(aw.Description)av.Time=aw. -Time or 5 av.SoundId=aw.SoundId av.Steps=aw.Steps av.Persist=aw.Persist else av.Description=tostring(aw)av.Time=select(2 -,...)or 5 av.SoundId=select(3,...)end av.Destroyed=false local ax,ay=false if typeof(av.Time)=='Instance'then ay=av.Time -.Destroying:Connect(function()ax=true ay:Disconnect()ay=nil end)end local az=af('Frame',{AutomaticSize=Enum. -AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Visible=false,Parent=_})local aA=af('Frame',{ +fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aC})ag('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8 +),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aD})local aE=ag('VideoFrame',{BackgroundTransparency=1,Size +=UDim2.fromScale(1,1),Video=aB.Video,Looped=aB.Looped,Volume=aB.Volume,Parent=aD})aE.Playing=aB.Playing function aB. +SetHeight(aF,aG:number)assert(aG>0,'Height must be greater than 0.')aB.Height=aG aC.Size=UDim2.new(1,0,0,aG)az:Resize() +end function aB.SetVideo(aF,aG:string)assert(typeof(aG)=='string','Video must be a string.')aE.Video=aG aB.Video=aG end +function aB.SetLooped(aF,aG:boolean)assert(typeof(aG)=='boolean','Looped must be a boolean.')aE.Looped=aG aB.Looped=aG +end function aB.SetVolume(aF,aG:number)assert(typeof(aG)=='number','Volume must be a number between 0 and 10.')aE.Volume +=aG aB.Volume=aG end function aB.SetPlaying(aF,aG:boolean)assert(typeof(aG)=='boolean','Playing must be a boolean.')aE. +Playing=aG aB.Playing=aG end function aB.Play(aF)aE.Playing=true aB.Playing=true end function aB.Pause(aF)aE.Playing= +false aB.Playing=false end function aB.SetVisible(aF,aG:boolean)aB.Visible=aG aC.Visible=aB.Visible az:Resize()end az: +Resize()aB.Holder=aC aB.VideoFrame=aE table.insert(az.Elements,aB)x[ax]=aB return aB end function av.AddUIPassthrough(aw +,ax,ay)ay=C:Validate(ay,D.UIPassthrough)local az=aw local aA=az.Container assert(ay.Instance, +'Instance must be provided.')assert(typeof(ay.Instance)=='Instance'and ay.Instance:IsA'GuiBase2d', +'Instance must inherit from GuiBase2d.')assert(typeof(ay.Height)=='number'and ay.Height>0, +'Height must be a number greater than 0.')local aB={Instance=ay.Instance,Height=ay.Height,Visible=ay.Visible,Type= +'UIPassthrough'}local aC=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Height),Visible=aB.Visible,Parent= +aA})aB.Instance.Parent=aC az:Resize()function aB.SetHeight(aD,aE:number)assert(typeof(aE)=='number'and aE>0, +'Height must be a number greater than 0.')aB.Height=aE aC.Size=UDim2.new(1,0,0,aE)az:Resize()end function aB.SetInstance +(aD,aE:Instance)assert(aE,'Instance must be provided.')assert(typeof(aE)=='Instance'and aE:IsA'GuiBase2d', +'Instance must inherit from GuiBase2d.')if aB.Instance then aB.Instance.Parent=nil end aB.Instance=aE aB.Instance.Parent +=aC end function aB.SetVisible(aD,aE:boolean)aB.Visible=aE aC.Visible=aB.Visible az:Resize()end aB.Holder=aC table. +insert(az.Elements,aB)x[ax]=aB return aB end function av.AddDependencyBox(aw)local ax=aw local ay,az,aA=(ax.Container)do +az=ag('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=ay})aA=ag('UIListLayout',{Padding +=UDim.new(0,8),Parent=az})end local aB={Visible=false,Dependencies={},Holder=az,Container=az,Elements={},DependencyBoxes +={}}function aB.Resize(aC)az.Size=UDim2.new(1,0,0,aA.AbsoluteContentSize.Y/C.DPIScale)ax:Resize()end function aB.Update( +aC,aD)for aE,aF in aB.Dependencies do local aG,aH=aF[1],aF[2]if aG.Type=='Toggle'and aG.Value~=aH then az.Visible=false +aB.Visible=false return elseif aG.Type=='Dropdown'then if typeof(aG.Value)=='table'then if not aG.Value[aH]then az. +Visible=false aB.Visible=false return end else if aG.Value~=aH then az.Visible=false aB.Visible=false return end end end +end aB.Visible=true az.Visible=true if not C.Searching then task.defer(function()aB:Resize()end)elseif not aD then C: +UpdateSearch(C.SearchText)end end aA:GetPropertyChangedSignal'AbsoluteContentSize':Connect(function()if not aB.Visible +then return end aB:Resize()end)function aB.SetupDependencies(aC,aD)for aE,aF in aD do assert(typeof(aF)=='table', +'Dependency should be a table.')assert(aF[1]~=nil,'Dependency is missing element.')assert(aF[2]~=nil, +'Dependency is missing expected value.')end aB.Dependencies=aD aB:Update()end az:GetPropertyChangedSignal'Visible': +Connect(function()aB:Resize()end)setmetatable(aB,au)table.insert(ax.DependencyBoxes,aB)table.insert(C.DependencyBoxes,aB +)return aB end function av.AddDependencyGroupbox(aw)local ax=aw local ay,az,aA,aB=ax.Tab,(ax.BoxHolder)do aA=ag('Frame', +{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Visible=false,Parent=az})ag('UICorner',{CornerRadius=UDim. +new(0,C.CornerRadius),Parent=aA})C:AddOutline(aA)aB=ag('UIListLayout',{Padding=UDim.new(0,8),Parent=aA})ag('UIPadding',{ +PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=aA})end +local aC={Visible=false,Dependencies={},BoxHolder=az,Holder=aA,Container=aA,Tab=ay,Elements={},DependencyBoxes={}} +function aC.Resize(aD)aA.Size=UDim2.new(1,0,0,(aB.AbsoluteContentSize.Y/C.DPIScale)+18)end function aC.Update(aD,aE)for +aF,aG in aC.Dependencies do local aH,aI=aG[1],aG[2]if aH.Type=='Toggle'and aH.Value~=aI then aA.Visible=false aC.Visible +=false return elseif aH.Type=='Dropdown'then if typeof(aH.Value)=='table'then if not aH.Value[aI]then aA.Visible=false +aC.Visible=false return end else if aH.Value~=aI then aA.Visible=false aC.Visible=false return end end end end aC. +Visible=true if not C.Searching then aA.Visible=true aC:Resize()elseif not aE then C:UpdateSearch(C.SearchText)end end +function aC.SetupDependencies(aD,aE)for aF,aG in aE do assert(typeof(aG)=='table','Dependency should be a table.') +assert(aG[1]~=nil,'Dependency is missing element.')assert(aG[2]~=nil,'Dependency is missing expected value.')end aC. +Dependencies=aE aC:Update()end setmetatable(aC,au)table.insert(ay.DependencyGroupboxes,aC)table.insert(C.DependencyBoxes +,aC)return aC end au.__index=av au.__namecall=function(aw,ax,...)return av[ax](...)end end function C.SetFont(av,aw)if +typeof(aw)=='EnumItem'then aw=Font.fromEnum(aw)end C.Scheme.Font=aw C:UpdateColorsUsingRegistry()end function C. +SetNotifySide(av,aw:string)C.NotifySide=aw if aw:lower()=='left'then aj.AnchorPoint=Vector2.new(0,0)aj.Position=UDim2. +fromOffset(6,6)ak.HorizontalAlignment=Enum.HorizontalAlignment.Left else aj.AnchorPoint=Vector2.new(1,0)aj.Position= +UDim2.new(1,-6,0,6)ak.HorizontalAlignment=Enum.HorizontalAlignment.Right end end function C.Notify(av,...)local aw,ax={} +,select(1,...)if typeof(ax)=='table'then aw.Title=tostring(ax.Title)aw.Description=tostring(ax.Description)aw.Time=ax. +Time or 5 aw.SoundId=ax.SoundId aw.Steps=ax.Steps aw.Persist=ax.Persist else aw.Description=tostring(ax)aw.Time=select(2 +,...)or 5 aw.SoundId=select(3,...)end aw.Destroyed=false local ay,az=false if typeof(aw.Time)=='Instance'then az=aw.Time +.Destroying:Connect(function()ay=true az:Disconnect()az=nil end)end local aA=ag('Frame',{AutomaticSize=Enum. +AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Visible=false,Parent=aj})local aB=ag('Frame',{ AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='MainColor',Position=C.NotifySide:lower()=='left'and UDim2.new(-1,-8 -,0,-2)or UDim2.new(1,8,0,-2),Size=UDim2.fromScale(1,1),ZIndex=5,Parent=az})af('UICorner',{CornerRadius=UDim.new(0,C. -CornerRadius),Parent=aA})af('UIListLayout',{Padding=UDim.new(0,4),Parent=aA})af('UIPadding',{PaddingBottom=UDim.new(0,8) -,PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aA})C:AddOutline(aA)local aB,aC,aD -,aE,aF=0,0 if av.Title then aD=af('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2. -fromScale(0,0),Text=av.Title,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,Parent=aA})end if av. -Description then aE=af('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(0,0 -),Text=av.Description,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,Parent=aA})end function av. -Resize(aG)if aD then local aH,aI=C:GetTextBounds(aD.Text,aD.FontFace,aD.TextSize,(_.AbsoluteSize.X/C.DPIScale)-24)aD. -Size=UDim2.fromOffset(0,aI)aB=aH end if aE then local aH,aI=C:GetTextBounds(aE.Text,aE.FontFace,aE.TextSize,(_. -AbsoluteSize.X/C.DPIScale)-24)aE.Size=UDim2.fromOffset(0,aI)aC=aH end az.Size=UDim2.fromOffset(math.max(aB,aC)+24,0)end -function av.ChangeTitle(aG,aH)if aD then av.Title=tostring(aH)aD.Text=av.Title av:Resize()end end function av. -ChangeDescription(aG,aH)if aE then av.Description=tostring(aH)aE.Text=av.Description av:Resize()end end function av. -ChangeStep(aG,aH)if aF and av.Steps then aH=math.clamp(aH or 0,0,av.Steps)aF.Size=UDim2.fromScale(aH/av.Steps,1)end end -function av.Destroy(aG)av.Destroyed=true if typeof(av.Time)=='Instance'then pcall(av.Time.Destroy,av.Time)end if ay then -ay:Disconnect()end n:Create(aA,C.NotifyTweenInfo,{Position=C.NotifySide:lower()=='left'and UDim2.new(-1,-8,0,-2)or UDim2 -.new(1,8,0,-2)}):Play()task.delay(C.NotifyTweenInfo.Time,function()C.Notifications[az]=nil az:Destroy()end)end av: -Resize()local aG=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,7),Visible=(av.Persist~=true and typeof(av. -Time)~='Instance')or typeof(av.Steps)=='number',Parent=aA})local aH=af('Frame',{BackgroundColor3='BackgroundColor', -BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromOffset(0,3),Size=UDim2.new(1,0,0,2),Parent=aG})aF=af( -'Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(1,1),Parent=aH})if typeof(av.Time)=='Instance'then aF.Size= -UDim2.fromScale(0,1)end if av.SoundId then local aI=av.SoundId if typeof(aI)=='number'then aI=string.format( -'rbxassetid://%d',aI)end af('Sound',{SoundId=aI,Volume=3,PlayOnRemove=true,Parent=j}):Destroy()end C.Notifications[az]= -av az.Visible=true n:Create(aA,C.NotifyTweenInfo,{Position=UDim2.fromOffset(0,0)}):Play()task.delay(C.NotifyTweenInfo. -Time,function()if av.Persist then return elseif typeof(av.Time)=='Instance'then repeat task.wait()until ax or av. -Destroyed else n:Create(aF,TweenInfo.new(av.Time,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{Size=UDim2. -fromScale(0,1)}):Play()task.wait(av.Time)end if not av.Destroyed then av:Destroy()end end)return av end function C. -CreateWindow(au,av)av=C:Validate(av,D.Window)local aw:Vector2=workspace.CurrentCamera.ViewportSize if i:IsStudio()and aw -.X<=5 and aw.Y<=5 then repeat aw=workspace.CurrentCamera.ViewportSize task.wait()until aw.X>5 and aw.Y>5 end local ax,ay -=aw.X-64,aw.Y-64 C.OriginalMinSize=Vector2.new(math.min(C.OriginalMinSize.X,ax),math.min(C.OriginalMinSize.Y,ay))C. -MinSize=C.OriginalMinSize av.Size=UDim2.fromOffset(math.clamp(av.Size.X.Offset,C.MinSize.X,ax),math.clamp(av.Size.Y. -Offset,C.MinSize.Y,ay))if typeof(av.Font)=='EnumItem'then av.Font=Font.fromEnum(av.Font)end av.CornerRadius=math.min(av. -CornerRadius,20)if av.Compact~=nil then av.SidebarCompacted=av.Compact end if av.SidebarMinWidth~=nil then av. -MinSidebarWidth=av.SidebarMinWidth end av.MinSidebarWidth=math.max(64,av.MinSidebarWidth)av.SidebarCompactWidth=math. -max(48,av.SidebarCompactWidth)av.SidebarCollapseThreshold=math.clamp(av.SidebarCollapseThreshold,0.1,0.9)av. -CompactWidthActivation=math.max(48,av.CompactWidthActivation)C.CornerRadius=av.CornerRadius C:SetNotifySide(av. -NotifySide)C.ShowCustomCursor=av.ShowCustomCursor C.Scheme.Font=av.Font C.ToggleKeybind=av.ToggleKeybind C.GlobalSearch= -av.GlobalSearch local az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO=av.SearchbarSize==UDim2.fromScale(1,1),math.ceil( -av.Size.X.Offset*0.3),(av.SidebarCompacted)local aP=aA do C.KeybindFrame,C.KeybindContainer=C:AddDraggableMenu'Keybinds' -C.KeybindFrame.AnchorPoint=Vector2.new(0,0.5)C.KeybindFrame.Position=UDim2.new(0,6,0.5,0)C.KeybindFrame.Visible=false aC -=af('TextButton',{BackgroundColor3=function()return C:GetBetterColor(C.Scheme.BackgroundColor,-1)end,Name='Main',Text='' -,Position=av.Position,Size=av.Size,Visible=false,Parent=ai})af('UICorner',{CornerRadius=UDim.new(0,av.CornerRadius), -Parent=aC})table.insert(C.Scales,af('UIScale',{Parent=aC}))C:AddOutline(aC)C:MakeLine(aC,{Position=UDim2.fromOffset(0,48 -),Size=UDim2.new(1,0,0,1)})aD=af('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(aA,0),Size=UDim2. -new(0,1,1,-21),Parent=aC})if av.BackgroundImage then af('ImageLabel',{Image=av.BackgroundImage,Position=UDim2.fromScale( +,0,-2)or UDim2.new(1,8,0,-2),Size=UDim2.fromScale(1,1),ZIndex=5,Parent=aA})ag('UICorner',{CornerRadius=UDim.new(0,C. +CornerRadius),Parent=aB})ag('UIListLayout',{Padding=UDim.new(0,4),Parent=aB})ag('UIPadding',{PaddingBottom=UDim.new(0,8) +,PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aB})C:AddOutline(aB)local aC,aD,aE +,aF,aG=0,0 if aw.Title then aE=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2. +fromScale(0,0),Text=aw.Title,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,Parent=aB})end if aw. +Description then aF=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(0,0 +),Text=aw.Description,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,Parent=aB})end function aw. +Resize(aH)if aE then local aI,aJ=C:GetTextBounds(aE.Text,aE.FontFace,aE.TextSize,(aj.AbsoluteSize.X/C.DPIScale)-24)aE. +Size=UDim2.fromOffset(0,aJ)aC=aI end if aF then local aI,aJ=C:GetTextBounds(aF.Text,aF.FontFace,aF.TextSize,(aj. +AbsoluteSize.X/C.DPIScale)-24)aF.Size=UDim2.fromOffset(0,aJ)aD=aI end aA.Size=UDim2.fromOffset(math.max(aC,aD)+24,0)end +function aw.ChangeTitle(aH,aI)if aE then aw.Title=tostring(aI)aE.Text=aw.Title aw:Resize()end end function aw. +ChangeDescription(aH,aI)if aF then aw.Description=tostring(aI)aF.Text=aw.Description aw:Resize()end end function aw. +ChangeStep(aH,aI)if aG and aw.Steps then aI=math.clamp(aI or 0,0,aw.Steps)aG.Size=UDim2.fromScale(aI/aw.Steps,1)end end +function aw.Destroy(aH)aw.Destroyed=true if typeof(aw.Time)=='Instance'then pcall(aw.Time.Destroy,aw.Time)end if az then +az:Disconnect()end n:Create(aB,C.NotifyTweenInfo,{Position=C.NotifySide:lower()=='left'and UDim2.new(-1,-8,0,-2)or UDim2 +.new(1,8,0,-2)}):Play()task.delay(C.NotifyTweenInfo.Time,function()C.Notifications[aA]=nil aA:Destroy()end)end aw: +Resize()local aH=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,7),Visible=(aw.Persist~=true and typeof(aw. +Time)~='Instance')or typeof(aw.Steps)=='number',Parent=aB})local aI=ag('Frame',{BackgroundColor3='BackgroundColor', +BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromOffset(0,3),Size=UDim2.new(1,0,0,2),Parent=aH})aG=ag( +'Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(1,1),Parent=aI})if typeof(aw.Time)=='Instance'then aG.Size= +UDim2.fromScale(0,1)end if aw.SoundId then local aJ=aw.SoundId if typeof(aJ)=='number'then aJ=string.format( +'rbxassetid://%d',aJ)end ag('Sound',{SoundId=aJ,Volume=3,PlayOnRemove=true,Parent=j}):Destroy()end C.Notifications[aA]= +aw aA.Visible=true n:Create(aB,C.NotifyTweenInfo,{Position=UDim2.fromOffset(0,0)}):Play()task.delay(C.NotifyTweenInfo. +Time,function()if aw.Persist then return elseif typeof(aw.Time)=='Instance'then repeat task.wait()until ay or aw. +Destroyed else n:Create(aG,TweenInfo.new(aw.Time,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{Size=UDim2. +fromScale(0,1)}):Play()task.wait(aw.Time)end if not aw.Destroyed then aw:Destroy()end end)return aw end function C. +CreateWindow(av,aw)aw=C:Validate(aw,D.Window)local ax:Vector2=workspace.CurrentCamera.ViewportSize if i:IsStudio()and ax +.X<=5 and ax.Y<=5 then repeat ax=workspace.CurrentCamera.ViewportSize task.wait()until ax.X>5 and ax.Y>5 end local ay,az +=ax.X-64,ax.Y-64 C.OriginalMinSize=Vector2.new(math.min(C.OriginalMinSize.X,ay),math.min(C.OriginalMinSize.Y,az))C. +MinSize=C.OriginalMinSize aw.Size=UDim2.fromOffset(math.clamp(aw.Size.X.Offset,C.MinSize.X,ay),math.clamp(aw.Size.Y. +Offset,C.MinSize.Y,az))if typeof(aw.Font)=='EnumItem'then aw.Font=Font.fromEnum(aw.Font)end aw.CornerRadius=math.min(aw. +CornerRadius,20)if aw.Compact~=nil then aw.SidebarCompacted=aw.Compact end if aw.SidebarMinWidth~=nil then aw. +MinSidebarWidth=aw.SidebarMinWidth end aw.MinSidebarWidth=math.max(64,aw.MinSidebarWidth)aw.SidebarCompactWidth=math. +max(48,aw.SidebarCompactWidth)aw.SidebarCollapseThreshold=math.clamp(aw.SidebarCollapseThreshold,0.1,0.9)aw. +CompactWidthActivation=math.max(48,aw.CompactWidthActivation)C.CornerRadius=aw.CornerRadius C:SetNotifySide(aw. +NotifySide)C.ShowCustomCursor=aw.ShowCustomCursor C.Scheme.Font=aw.Font C.ToggleKeybind=aw.ToggleKeybind C.GlobalSearch= +aw.GlobalSearch local aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP=aw.SearchbarSize==UDim2.fromScale(1,1),math.ceil( +aw.Size.X.Offset*0.3),(aw.SidebarCompacted)local aQ=aB do C.KeybindFrame,C.KeybindContainer=C:AddDraggableMenu'Keybinds' +C.KeybindFrame.AnchorPoint=Vector2.new(0,0.5)C.KeybindFrame.Position=UDim2.new(0,6,0.5,0)C.KeybindFrame.Visible=false aD +=ag('TextButton',{BackgroundColor3=function()return C:GetBetterColor(C.Scheme.BackgroundColor,-1)end,Name='Main',Text='' +,Position=aw.Position,Size=aw.Size,Visible=false,Parent=X})ag('UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius), +Parent=aD})table.insert(C.Scales,ag('UIScale',{Parent=aD}))C:AddOutline(aD)C:MakeLine(aD,{Position=UDim2.fromOffset(0,48 +),Size=UDim2.new(1,0,0,1)})aE=ag('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(aB,0),Size=UDim2. +new(0,1,1,-21),Parent=aD})if aw.BackgroundImage then ag('ImageLabel',{Image=aw.BackgroundImage,Position=UDim2.fromScale( 0,0),Size=UDim2.fromScale(1,1),ScaleType=Enum.ScaleType.Stretch,ZIndex=999,BackgroundTransparency=1,ImageTransparency= -0.75,Parent=aC})end if av.Center then aC.Position=UDim2.new(0.5,-aC.Size.X.Offset/2,0.5,-aC.Size.Y.Offset/2)end local aQ -=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,48),Parent=aC})C:MakeDraggable(aC,aQ,false,true)aE=af('Frame' -,{BackgroundTransparency=1,Size=UDim2.new(0,aA,1,0),Parent=aQ})af('UIListLayout',{FillDirection=Enum.FillDirection. +0.75,Parent=aD})end if aw.Center then aD.Position=UDim2.new(0.5,-aD.Size.X.Offset/2,0.5,-aD.Size.Y.Offset/2)end local aR +=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,48),Parent=aD})C:MakeDraggable(aD,aR,false,true)aF=ag('Frame' +,{BackgroundTransparency=1,Size=UDim2.new(0,aB,1,0),Parent=aR})ag('UIListLayout',{FillDirection=Enum.FillDirection. Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Center,Padding= -UDim.new(0,6),Parent=aE})if av.Icon then aG=af('ImageLabel',{Image=if tonumber(av.Icon)then string.format( -'rbxassetid://%d',av.Icon)else av.Icon,Size=av.IconSize,Parent=aE})else aG=af('TextLabel',{BackgroundTransparency=1,Size -=av.IconSize,Text=av.Title:sub(1,1),TextScaled=true,Visible=false,Parent=aE})end local aR=C:GetTextBounds(av.Title,C. -Scheme.Font,20,aE.AbsoluteSize.X-(av.Icon and av.IconSize.X.Offset+6 or 0)-12)aF=af('TextLabel',{BackgroundTransparency= -1,Size=UDim2.new(0,aR,1,0),Text=av.Title,TextSize=20,Parent=aE})aH=af('Frame',{AnchorPoint=Vector2.new(1,0.5), -BackgroundTransparency=1,Position=UDim2.new(1,-49,0.5,0),Size=UDim2.new(1,-aA-57-1,1,-16),Parent=aQ})af('UIListLayout',{ +UDim.new(0,6),Parent=aF})if aw.Icon then aH=ag('ImageLabel',{Image=if tonumber(aw.Icon)then string.format( +'rbxassetid://%d',aw.Icon)else aw.Icon,Size=aw.IconSize,Parent=aF})else aH=ag('TextLabel',{BackgroundTransparency=1,Size +=aw.IconSize,Text=aw.Title:sub(1,1),TextScaled=true,Visible=false,Parent=aF})end local aS=C:GetTextBounds(aw.Title,C. +Scheme.Font,20,aF.AbsoluteSize.X-(aw.Icon and aw.IconSize.X.Offset+6 or 0)-12)aG=ag('TextLabel',{BackgroundTransparency= +1,Size=UDim2.new(0,aS,1,0),Text=aw.Title,TextSize=20,Parent=aF})aI=ag('Frame',{AnchorPoint=Vector2.new(1,0.5), +BackgroundTransparency=1,Position=UDim2.new(1,-49,0.5,0),Size=UDim2.new(1,-aB-57-1,1,-16),Parent=aR})ag('UIListLayout',{ FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Left,VerticalAlignment=Enum. -VerticalAlignment.Center,Padding=UDim.new(0,8),Parent=aH})aJ=af('Frame',{Size=UDim2.fromScale(av.DisableSearch and 1 or -0.5,1),Visible=false,BackgroundTransparency=1,Parent=aH})af('UIFlexItem',{FlexMode=Enum.UIFlexMode.Grow,Parent=aJ})af( +VerticalAlignment.Center,Padding=UDim.new(0,8),Parent=aI})aK=ag('Frame',{Size=UDim2.fromScale(aw.DisableSearch and 1 or +0.5,1),Visible=false,BackgroundTransparency=1,Parent=aI})ag('UIFlexItem',{FlexMode=Enum.UIFlexMode.Grow,Parent=aK})ag( 'UIListLayout',{FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Left, -VerticalAlignment=Enum.VerticalAlignment.Center,Parent=aJ})af('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim. -new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aJ})aK=af('TextLabel',{BackgroundTransparency=1,Size +VerticalAlignment=Enum.VerticalAlignment.Center,Parent=aK})ag('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aK})aL=ag('TextLabel',{BackgroundTransparency=1,Size =UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text='',TextSize=14,TextXAlignment=Enum.TextXAlignment.Left, -Parent=aJ})aL=af('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text -='',TextWrapped=true,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextTransparency=0.5,Parent=aJ})aI=af('TextBox' -,{BackgroundColor3='MainColor',PlaceholderText='Search',Size=av.SearchbarSize,TextScaled=true,Visible=not(av. -DisableSearch or false),Parent=aH})af('UIFlexItem',{FlexMode=Enum.UIFlexMode.Shrink,Parent=aI})af('UICorner',{ -CornerRadius=UDim.new(0,av.CornerRadius),Parent=aI})af('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8 -),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aI})af('UIStroke',{Color='OutlineColor',Parent=aI})local aS -=C:GetIcon'search'if aS then af('ImageLabel',{Image=aS.Url,ImageColor3='FontColor',ImageRectOffset=aS.ImageRectOffset, -ImageRectSize=aS.ImageRectSize,ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint. -RelativeYY,Parent=aI})end if ar then af('ImageLabel',{AnchorPoint=Vector2.new(1,0.5),Image=ar.Url,ImageColor3= -'OutlineColor',ImageRectOffset=ar.ImageRectOffset,ImageRectSize=ar.ImageRectSize,Position=UDim2.new(1,-10,0.5,0),Size= -UDim2.fromOffset(28,28),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aQ})end local aT=af('Frame',{AnchorPoint= +Parent=aK})aM=ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text +='',TextWrapped=true,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextTransparency=0.5,Parent=aK})aJ=ag('TextBox' +,{BackgroundColor3='MainColor',PlaceholderText='Search',Size=aw.SearchbarSize,TextScaled=true,Visible=not(aw. +DisableSearch or false),Parent=aI})ag('UIFlexItem',{FlexMode=Enum.UIFlexMode.Shrink,Parent=aJ})ag('UICorner',{ +CornerRadius=UDim.new(0,aw.CornerRadius),Parent=aJ})ag('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8 +),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aJ})ag('UIStroke',{Color='OutlineColor',Parent=aJ})local aT +=C:GetIcon'search'if aT then ag('ImageLabel',{Image=aT.Url,ImageColor3='FontColor',ImageRectOffset=aT.ImageRectOffset, +ImageRectSize=aT.ImageRectSize,ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint. +RelativeYY,Parent=aJ})end if as then ag('ImageLabel',{AnchorPoint=Vector2.new(1,0.5),Image=as.Url,ImageColor3= +'OutlineColor',ImageRectOffset=as.ImageRectOffset,ImageRectSize=as.ImageRectSize,Position=UDim2.new(1,-10,0.5,0),Size= +UDim2.fromOffset(28,28),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aR})end local aU=ag('Frame',{AnchorPoint= Vector2.new(0,1),BackgroundColor3=function()return C:GetBetterColor(C.Scheme.BackgroundColor,4)end,Position=UDim2. -fromScale(0,1),Size=UDim2.new(1,0,0,av.CornerRadius*2),Parent=aC})C:MakeLine(aC,{AnchorPoint=Vector2.new(0,1),Position= -UDim2.new(0,0,1,-20),Size=UDim2.new(1,0,0,1)})local aU=af('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundTransparency=1 -,Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,20),Parent=aC})af('UICorner',{CornerRadius=UDim.new(0,av. -CornerRadius),Parent=aT})af('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text=av.Footer,TextSize=14, -TextTransparency=0.5,Parent=aU})if av.Resizable then aM=af('TextButton',{AnchorPoint=Vector2.new(1,0), -BackgroundTransparency=1,Position=UDim2.new(1,-av.CornerRadius/4,0,0),Size=UDim2.fromScale(1,1),SizeConstraint=Enum. -SizeConstraint.RelativeYY,Text='',Parent=aU})C:MakeResizable(aC,aM,function()for aV,aW in C.Tabs do aW:Resize(true)end -end)end af('ImageLabel',{Image=ap and ap.Url or'',ImageColor3='FontColor',ImageRectOffset=ap and ap.ImageRectOffset or -Vector2.zero,ImageRectSize=ap and ap.ImageRectSize or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromOffset(2,2), -Size=UDim2.new(1,-4,1,-4),Parent=aM})aN=af('ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundColor3= +fromScale(0,1),Size=UDim2.new(1,0,0,aw.CornerRadius*2),Parent=aD})C:MakeLine(aD,{AnchorPoint=Vector2.new(0,1),Position= +UDim2.new(0,0,1,-20),Size=UDim2.new(1,0,0,1)})local aV=ag('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundTransparency=1 +,Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,20),Parent=aD})ag('UICorner',{CornerRadius=UDim.new(0,aw. +CornerRadius),Parent=aU})ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text=aw.Footer,TextSize=14, +TextTransparency=0.5,Parent=aV})if aw.Resizable then aN=ag('TextButton',{AnchorPoint=Vector2.new(1,0), +BackgroundTransparency=1,Position=UDim2.new(1,-aw.CornerRadius/4,0,0),Size=UDim2.fromScale(1,1),SizeConstraint=Enum. +SizeConstraint.RelativeYY,Text='',Parent=aV})C:MakeResizable(aD,aN,function()for aW,aX in C.Tabs do aX:Resize(true)end +end)end ag('ImageLabel',{Image=aq and aq.Url or'',ImageColor3='FontColor',ImageRectOffset=aq and aq.ImageRectOffset or +Vector2.zero,ImageRectSize=aq and aq.ImageRectSize or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromOffset(2,2), +Size=UDim2.new(1,-4,1,-4),Parent=aN})aO=ag('ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundColor3= 'BackgroundColor',CanvasSize=UDim2.fromScale(0,0),Position=UDim2.fromOffset(0,49),ScrollBarThickness=0,Size=UDim2.new(0, -aA,1,-70),Parent=aC})af('UIListLayout',{Parent=aN})aO=af('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3=function +aB,1,-70),Parent=aD})ag('UIListLayout',{Parent=aO})aP=ag('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3=function ()return C:GetBetterColor(C.Scheme.BackgroundColor,1)end,Name='Container',Position=UDim2.new(1,0,0,49),Size=UDim2.new(1, --aA-1,1,-70),Parent=aC})af('UIPadding',{PaddingBottom=UDim.new(0,0),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6) -,PaddingTop=UDim.new(0,0),Parent=aO})end local aQ={}function aQ.ChangeTitle(aR,aS)assert(typeof(aS)=='string', -'Expected string for title got: '..typeof(aS))aF.Text=aS av.Title=aS end local function aR()aB=aQ:GetSidebarWidth()==av. -SidebarCompactWidth if av.DisableCompactingSnap then aB=aQ:GetSidebarWidth()<=av.CompactWidthActivation end aF.Visible= -not aB if not av.Icon then aG.Visible=aB end for aS,aT in C.TabButtons do if not aT.Icon then continue end aT.Label. -Visible=not aB aT.Padding.PaddingBottom=UDim.new(0,aB and 6 or 11)aT.Padding.PaddingLeft=UDim.new(0,aB and 6 or 12)aT. -Padding.PaddingRight=UDim.new(0,aB and 6 or 12)aT.Padding.PaddingTop=UDim.new(0,aB and 6 or 11)aT.Icon.SizeConstraint=aB -and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY end end function aQ.IsSidebarCompacted(aS)return aB -end function aQ.SetCompact(aS,aT)aQ:SetSidebarWidth(aT and av.SidebarCompactWidth or aP)end function aQ.GetSidebarWidth( -aS)return aN.Size.X.Offset end function aQ.SetSidebarWidth(aS,aT)aT=math.clamp(aT,48,aC.Size.X.Offset-av. -MinContainerWidth-1)aD.Position=UDim2.fromOffset(aT,0)aE.Size=UDim2.new(0,aT,1,0)aH.Size=UDim2.new(1,-aT-57-1,1,-16)aN. -Size=UDim2.new(0,aT,1,-70)aO.Size=UDim2.new(1,-aT-1,1,-70)if av.EnableCompacting then aR()end if not aB then aP=aT end -end function aQ.ShowTabInfo(aS,aT,aU)aK.Text=aT aL.Text=aU if az then aI.Size=UDim2.fromScale(0.5,1)end aJ.Visible=true -end function aQ.HideTabInfo(aS)aJ.Visible=false if az then aI.Size=UDim2.fromScale(1,1)end end function aQ.AddTab(aS,... -)local aT,aU,aV if select('#',...)==1 and typeof(...)=='table'then local aW=select(1,...)aT=aW.Name or'Tab'aU=aW.Icon aV -=aW.Description else aT=select(1,...)aU=select(2,...)aV=select(3,...)end local aW:TextButton,aX,aY,aZ,a_,a0 aU=C: -GetCustomIcon(aU)do aW=af('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,40), -Text='',Parent=aN})local a1=af('UIPadding',{PaddingBottom=UDim.new(0,aB and 6 or 11),PaddingLeft=UDim.new(0,aB and 6 or -12),PaddingRight=UDim.new(0,aB and 6 or 12),PaddingTop=UDim.new(0,aB and 6 or 11),Parent=aW})aX=af('TextLabel',{ -BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=aT,TextSize=16,TextTransparency= -0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not aB,Parent=aW})if aU then aY=af('ImageLabel',{Image=aU.Url, -ImageColor3=aU.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=aU.ImageRectOffset,ImageRectSize=aU.ImageRectSize, -ImageTransparency=0.5,ScaleType=Enum.ScaleType.Fit,Size=UDim2.fromScale(1,1),SizeConstraint=aB and Enum.SizeConstraint. -RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=aW})end table.insert(C.TabButtons,{Label=aX,Padding=a1,Icon=aY})aZ= -af('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=aO})a_=af('ScrollingFrame',{ +-aB-1,1,-70),Parent=aD})ag('UIPadding',{PaddingBottom=UDim.new(0,0),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6) +,PaddingTop=UDim.new(0,0),Parent=aP})end local aR={}function aR.ChangeTitle(aS,aT)assert(typeof(aT)=='string', +'Expected string for title got: '..typeof(aT))aG.Text=aT aw.Title=aT end local function aS()aC=aR:GetSidebarWidth()==aw. +SidebarCompactWidth if aw.DisableCompactingSnap then aC=aR:GetSidebarWidth()<=aw.CompactWidthActivation end aG.Visible= +not aC if not aw.Icon then aH.Visible=aC end for aT,aU in C.TabButtons do if not aU.Icon then continue end aU.Label. +Visible=not aC aU.Padding.PaddingBottom=UDim.new(0,aC and 6 or 11)aU.Padding.PaddingLeft=UDim.new(0,aC and 6 or 12)aU. +Padding.PaddingRight=UDim.new(0,aC and 6 or 12)aU.Padding.PaddingTop=UDim.new(0,aC and 6 or 11)aU.Icon.SizeConstraint=aC +and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY end end function aR.IsSidebarCompacted(aT)return aC +end function aR.SetCompact(aT,aU)aR:SetSidebarWidth(aU and aw.SidebarCompactWidth or aQ)end function aR.GetSidebarWidth( +aT)return aO.Size.X.Offset end function aR.SetSidebarWidth(aT,aU)aU=math.clamp(aU,48,aD.Size.X.Offset-aw. +MinContainerWidth-1)aE.Position=UDim2.fromOffset(aU,0)aF.Size=UDim2.new(0,aU,1,0)aI.Size=UDim2.new(1,-aU-57-1,1,-16)aO. +Size=UDim2.new(0,aU,1,-70)aP.Size=UDim2.new(1,-aU-1,1,-70)if aw.EnableCompacting then aS()end if not aC then aQ=aU end +end function aR.ShowTabInfo(aT,aU,aV)aL.Text=aU aM.Text=aV if aA then aJ.Size=UDim2.fromScale(0.5,1)end aK.Visible=true +end function aR.HideTabInfo(aT)aK.Visible=false if aA then aJ.Size=UDim2.fromScale(1,1)end end function aR.AddTab(aT,... +)local aU,aV,aW if select('#',...)==1 and typeof(...)=='table'then local aX=select(1,...)aU=aX.Name or'Tab'aV=aX.Icon aW +=aX.Description else aU=select(1,...)aV=select(2,...)aW=select(3,...)end local aX:TextButton,aY,aZ,a_,a0,a1 aV=C: +GetCustomIcon(aV)or ac do aX=ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0 +,40),Text='',Parent=aO})local a2=ag('UIPadding',{PaddingBottom=UDim.new(0,aC and 6 or 11),PaddingLeft=UDim.new(0,aC and +6 or 12),PaddingRight=UDim.new(0,aC and 6 or 12),PaddingTop=UDim.new(0,aC and 6 or 11),Parent=aX})aY=ag('TextLabel',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=aU,TextSize=16,TextTransparency= +0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not aC,Parent=aX})if aV then aZ=ag('ImageLabel',{Image=aV.Url, +ImageColor3=aV.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=aV.ImageRectOffset,ImageRectSize=aV.ImageRectSize, +ImageTransparency=0.5,ScaleType=Enum.ScaleType.Fit,Size=UDim2.fromScale(1,1),SizeConstraint=aC and Enum.SizeConstraint. +RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=aX})end table.insert(C.TabButtons,{Label=aY,Padding=a2,Icon=aZ})a_= +ag('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=aP})a0=ag('ScrollingFrame',{ AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0), -ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=aZ})af('UIListLayout',{Padding=UDim. -new(0,2),Parent=a_})af('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2), -PaddingTop=UDim.new(0,2),Parent=a_})do af('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=a_})af('Frame',{ -BackgroundTransparency=1,LayoutOrder=1,Parent=a_})end a0=af('ScrollingFrame',{AnchorPoint=Vector2.new(1,0), +ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=a_})ag('UIListLayout',{Padding=UDim. +new(0,2),Parent=a0})ag('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2), +PaddingTop=UDim.new(0,2),Parent=a0})do ag('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=a0})ag('Frame',{ +BackgroundTransparency=1,LayoutOrder=1,Parent=a0})end a1=ag('ScrollingFrame',{AnchorPoint=Vector2.new(1,0), AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),Position=UDim2. -fromScale(1,0),ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=aZ})af('UIListLayout' -,{Padding=UDim.new(0,2),Parent=a0})af('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight= -UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=a0})do af('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=a0})af( -'Frame',{BackgroundTransparency=1,LayoutOrder=1,Parent=a0})end end local a1,a2,a3,a4,a5,a6,a7,a8=(af('Frame',{ +fromScale(1,0),ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=a_})ag('UIListLayout' +,{Padding=UDim.new(0,2),Parent=a1})ag('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight= +UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=a1})do ag('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=a1})ag( +'Frame',{BackgroundTransparency=1,LayoutOrder=1,Parent=a1})end end local a2,a3,a4,a5,a6,a7,a8,a9=(ag('Frame',{ AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Position=UDim2.fromOffset(0,7),Size=UDim2.fromScale(1,0), -Visible=false,Parent=aZ}))do a2=af('Frame',{BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(2,0),Size=UDim2 -.new(1,-5,0,0),Parent=a1})af('UICorner',{CornerRadius=UDim.new(0,av.CornerRadius),Parent=a2})a3,a4=C:AddOutline(a2)a5= -af('ScrollingFrame',{BackgroundTransparency=1,BorderSizePixel=0,Size=UDim2.fromScale(1,1),CanvasSize=UDim2.new(0,0,0,0), -ScrollBarThickness=3,ScrollingDirection=Enum.ScrollingDirection.Y,Parent=a2})af('UIPadding',{PaddingBottom=UDim.new(0,4) -,PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,4),Parent=a5})a6=af('TextLabel',{ +Visible=false,Parent=a_}))do a3=ag('Frame',{BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(2,0),Size=UDim2 +.new(1,-5,0,0),Parent=a2})ag('UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius),Parent=a3})a4,a5=C:AddOutline(a3)a6= +ag('ScrollingFrame',{BackgroundTransparency=1,BorderSizePixel=0,Size=UDim2.fromScale(1,1),CanvasSize=UDim2.new(0,0,0,0), +ScrollBarThickness=3,ScrollingDirection=Enum.ScrollingDirection.Y,Parent=a3})ag('UIPadding',{PaddingBottom=UDim.new(0,4) +,PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,4),Parent=a6})a7=ag('TextLabel',{ BackgroundTransparency=1,Size=UDim2.new(1,-4,0,14),Text='',TextColor3=Color3.fromRGB(255,50,50),TextSize=14, -TextXAlignment=Enum.TextXAlignment.Left,Parent=a5})a7=af('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual, -Color=Color3.fromRGB(169,0,0),LineJoinMode=Enum.LineJoinMode.Miter,Parent=a6})a8=af('TextLabel',{BackgroundTransparency= -1,Position=UDim2.fromOffset(0,16),Size=UDim2.new(1,-4,0,0),Text='',TextSize=14,TextWrapped=true,Parent=a5,TextXAlignment -=Enum.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top})af('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode. -Contextual,Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=a8})end local a9={Groupboxes={},Tabboxes={}, -DependencyGroupboxes={},Sides={a_,a0},WarningBox={IsNormal=false,LockSize=false,Visible=false,Title='WARNING',Text=''}} -function a9.UpdateWarningBox(ba,bb)if typeof(bb.IsNormal)=='boolean'then a9.WarningBox.IsNormal=bb.IsNormal end if -typeof(bb.LockSize)=='boolean'then a9.WarningBox.LockSize=bb.LockSize end if typeof(bb.Visible)=='boolean'then a9. -WarningBox.Visible=bb.Visible end if typeof(bb.Title)=='string'then a9.WarningBox.Title=bb.Title end if typeof(bb.Text) -=='string'then a9.WarningBox.Text=bb.Text end a1.Visible=a9.WarningBox.Visible a6.Text=a9.WarningBox.Title a8.Text=a9. -WarningBox.Text a9:Resize(true)a2.BackgroundColor3=a9.WarningBox.IsNormal==true and C.Scheme.BackgroundColor or Color3. -fromRGB(127,0,0)a4.Color=a9.WarningBox.IsNormal==true and C.Scheme.DarkColor or Color3.fromRGB(85,0,0)a3.Color=a9. -WarningBox.IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(255,50,50)a6.TextColor3=a9.WarningBox.IsNormal== -true and C.Scheme.FontColor or Color3.fromRGB(255,50,50)a7.Color=a9.WarningBox.IsNormal==true and C.Scheme.OutlineColor -or Color3.fromRGB(169,0,0)if not C.Registry[a2]then C:AddToRegistry(a2,{})end if not C.Registry[a4]then C:AddToRegistry( -a4,{})end if not C.Registry[a3]then C:AddToRegistry(a3,{})end if not C.Registry[a6]then C:AddToRegistry(a6,{})end if not -C.Registry[a7]then C:AddToRegistry(a7,{})end C.Registry[a2].BackgroundColor3=function()return a9.WarningBox.IsNormal== -true and C.Scheme.BackgroundColor or Color3.fromRGB(127,0,0)end C.Registry[a4].Color=function()return a9.WarningBox. -IsNormal==true and C.Scheme.DarkColor or Color3.fromRGB(85,0,0)end C.Registry[a3].Color=function()return a9.WarningBox. -IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(255,50,50)end C.Registry[a6].TextColor3=function()return a9. -WarningBox.IsNormal==true and C.Scheme.FontColor or Color3.fromRGB(255,50,50)end C.Registry[a7].Color=function()return -a9.WarningBox.IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(169,0,0)end end function a9.RefreshSides(ba) -local bb=a1.Visible and a2.Size.Y.Offset+8 or 0 for bc,bd in a9.Sides do bd.Position=UDim2.new(bd.Position.X.Scale,0,0, -bb)bd.Size=UDim2.new(0.5,-3,1,-bb)end end function a9.Resize(ba,bb:boolean?)if bb then local bc,bd,be=math.floor(aZ. -AbsoluteSize.Y/3.25),C:GetTextBounds(a8.Text,C.Scheme.Font,a8.TextSize,a8.AbsoluteSize.X)local bf=24+be if a9.WarningBox -.LockSize==true and bf>=bc then a5.CanvasSize=UDim2.fromOffset(0,bf)bf=bc else a5.CanvasSize=UDim2.fromOffset(0,0)end a8 -.Size=UDim2.new(1,-4,0,be)a2.Size=UDim2.new(1,-5,0,bf+4)end a9:RefreshSides()end function a9.AddGroupbox(ba,bb)local bc= -af('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=bb.Side==1 and -a_ or a0})af('UIListLayout',{Padding=UDim.new(0,6),Parent=bc})af('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop= -UDim.new(0,4),Parent=bc})local bd,be,bf,bg do bd=af('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0 -),Parent=bc})af('UICorner',{CornerRadius=UDim.new(0,av.CornerRadius),Parent=bd})C:AddOutline(bd)C:MakeLine(bd,{Position= -UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local bh=C:GetCustomIcon(bb.IconName)if bh then af('ImageLabel',{Image= -bh.Url,ImageColor3=bh.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=bh.ImageRectOffset,ImageRectSize=bh. -ImageRectSize,Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(22,22),Parent=bd})end be=af('TextLabel',{ -BackgroundTransparency=1,Position=UDim2.fromOffset(bh and 24 or 0,0),Size=UDim2.new(1,0,0,34),Text=bb.Name,TextSize=15, -TextXAlignment=Enum.TextXAlignment.Left,Parent=bd})af('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12 -),Parent=be})bf=af('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=bd -})bg=af('UIListLayout',{Padding=UDim.new(0,8),Parent=bf})af('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim. -new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bf})end local bh={BoxHolder=bc,Holder=bd,Container= -bf,Tab=a9,DependencyBoxes={},Elements={}}function bh.Resize(bi)bd.Size=UDim2.new(1,0,0,(bg.AbsoluteContentSize.Y/C. -DPIScale)+49)end setmetatable(bh,at)bh:Resize()a9.Groupboxes[bb.Name]=bh return bh end function a9.AddLeftGroupbox(ba,bb -,bc)return a9:AddGroupbox{Side=1,Name=bb,IconName=bc}end function a9.AddRightGroupbox(ba,bb,bc)return a9:AddGroupbox{ -Side=2,Name=bb,IconName=bc}end function a9.AddTabbox(ba,bb)local bc=af('Frame',{AutomaticSize=Enum.AutomaticSize.Y, -BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=bb.Side==1 and a_ or a0})af('UIListLayout',{Padding=UDim.new(0 -,6),Parent=bc})af('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0,4),Parent=bc})local bd,be do bd=af( -'Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=bc})af('UICorner',{CornerRadius=UDim.new(0, -av.CornerRadius),Parent=bd})C:AddOutline(bd)be=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Parent=bd}) -af('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Parent=be})end -local bf={ActiveTab=nil,BoxHolder=bc,Holder=bd,Tabs={}}function bf.AddTab(bg,bh)local bi=af('TextButton',{ -BackgroundColor3='MainColor',BackgroundTransparency=0,Size=UDim2.fromOffset(0,34),Text=bh,TextSize=15,TextTransparency= -0.5,Parent=be})local bj,bk=C:MakeLine(bi,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,1),Size=UDim2.new(1,0,0, -1)}),af('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Visible=false,Parent -=bd})local bl=af('UIListLayout',{Padding=UDim.new(0,8),Parent=bk})af('UIPadding',{PaddingBottom=UDim.new(0,7), -PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bk})local bm={ButtonHolder=bi, -Container=bk,Tab=a9,Elements={},DependencyBoxes={}}function bm.Show(bn)if bf.ActiveTab then bf.ActiveTab:Hide()end bi. -BackgroundTransparency=1 bi.TextTransparency=0 bj.Visible=false bk.Visible=true bf.ActiveTab=bm bm:Resize()end function -bm.Hide(bn)bi.BackgroundTransparency=0 bi.TextTransparency=0.5 bj.Visible=true bk.Visible=false bf.ActiveTab=nil end -function bm.Resize(bn)if bf.ActiveTab~=bm then return end bd.Size=UDim2.new(1,0,0,(bl.AbsoluteContentSize.Y/C.DPIScale)+ -49)end if not bf.ActiveTab then bm:Show()end bi.MouseButton1Click:Connect(bm.Show)setmetatable(bm,at)bf.Tabs[bh]=bm -return bm end if bb.Name then a9.Tabboxes[bb.Name]=bf else table.insert(a9.Tabboxes,bf)end return bf end function a9. -AddLeftTabbox(ba,bb)return a9:AddTabbox{Side=1,Name=bb}end function a9.AddRightTabbox(ba,bb)return a9:AddTabbox{Side=2, -Name=bb}end function a9.Hover(ba,bb)if C.ActiveTab==a9 then return end n:Create(aX,C.TweenInfo,{TextTransparency=bb and -0.25 or 0.5}):Play()if aY then n:Create(aY,C.TweenInfo,{ImageTransparency=bb and 0.25 or 0.5}):Play()end end function a9 -.Show(ba)if C.ActiveTab then C.ActiveTab:Hide()end n:Create(aW,C.TweenInfo,{BackgroundTransparency=0}):Play()n:Create(aX -,C.TweenInfo,{TextTransparency=0}):Play()if aY then n:Create(aY,C.TweenInfo,{ImageTransparency=0}):Play()end if aV then -aQ:ShowTabInfo(aT,aV)end aZ.Visible=true a9:RefreshSides()C.ActiveTab=a9 if C.Searching then C:UpdateSearch(C.SearchText -)end end function a9.Hide(ba)n:Create(aW,C.TweenInfo,{BackgroundTransparency=1}):Play()n:Create(aX,C.TweenInfo,{ -TextTransparency=0.5}):Play()if aY then n:Create(aY,C.TweenInfo,{ImageTransparency=0.5}):Play()end aZ.Visible=false aQ: -HideTabInfo()C.ActiveTab=nil end if not C.ActiveTab then a9:Show()end aW.MouseEnter:Connect(function()a9:Hover(true)end) -aW.MouseLeave:Connect(function()a9:Hover(false)end)aW.MouseButton1Click:Connect(a9.Show)C.Tabs[aT]=a9 return a9 end -function aQ.AddKeyTab(aS,...)local aT,aU,aV if select('#',...)==1 and typeof(...)=='table'then local aW=select(1,...)aT= -aW.Name or'Tab'aU=aW.Icon aV=aW.Description else aT=select(1,...)or'Tab'aU=select(2,...)aV=select(3,...)end aU=aU or -'key'local aW:TextButton,aX,aY,aZ aU=if aU=='key'then aq else C:GetCustomIcon(aU)do aW=af('TextButton',{BackgroundColor3 -='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=aN})local a_=af('UIPadding',{PaddingBottom -=UDim.new(0,aB and 6 or 11),PaddingLeft=UDim.new(0,aB and 6 or 12),PaddingRight=UDim.new(0,aB and 6 or 12),PaddingTop= -UDim.new(0,aB and 6 or 11),Parent=aW})aX=af('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size= -UDim2.new(1,-30,1,0),Text=aT,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not aB, -Parent=aW})if aU then aY=af('ImageLabel',{Image=aU.Url,ImageColor3=aU.Custom and'WhiteColor'or'AccentColor', -ImageRectOffset=aU.ImageRectOffset,ImageRectSize=aU.ImageRectSize,ImageTransparency=0.5,Size=UDim2.fromScale(1,1), -SizeConstraint=aB and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=aW})end table.insert(C. -TabButtons,{Label=aX,Padding=a_,Icon=aY})aZ=af('ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y, -BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),ScrollBarThickness=0,Size=UDim2.fromScale(1,1),Visible=false, -Parent=aO})af('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Center,Padding=UDim.new(0,8), -VerticalAlignment=Enum.VerticalAlignment.Center,Parent=aZ})af('UIPadding',{PaddingLeft=UDim.new(0,1),PaddingRight=UDim. -new(0,1),Parent=aZ})end local a_={Elements={},IsKeyTab=true}function a_.AddKeyBox(a0,a1)assert(typeof(a1)=='function', -'Callback must be a function')local a2=af('Frame',{BackgroundTransparency=1,Size=UDim2.new(0.75,0,0,21),Parent=aZ})local -a3=af('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,PlaceholderText='Key',Size= -UDim2.new(1,-71,1,0),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=a2})af('UIPadding',{PaddingLeft=UDim. -new(0,8),PaddingRight=UDim.new(0,8),Parent=a3})local a4=af('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundColor3= +TextXAlignment=Enum.TextXAlignment.Left,Parent=a6})a8=ag('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual, +Color=Color3.fromRGB(169,0,0),LineJoinMode=Enum.LineJoinMode.Miter,Parent=a7})a9=ag('TextLabel',{BackgroundTransparency= +1,Position=UDim2.fromOffset(0,16),Size=UDim2.new(1,-4,0,0),Text='',TextSize=14,TextWrapped=true,Parent=a6,TextXAlignment +=Enum.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top})ag('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode. +Contextual,Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=a9})end local ba={Groupboxes={},Tabboxes={}, +DependencyGroupboxes={},Sides={a0,a1},WarningBox={IsNormal=false,LockSize=false,Visible=false,Title='WARNING',Text=''}} +function ba.UpdateWarningBox(bb,bc)if typeof(bc.IsNormal)=='boolean'then ba.WarningBox.IsNormal=bc.IsNormal end if +typeof(bc.LockSize)=='boolean'then ba.WarningBox.LockSize=bc.LockSize end if typeof(bc.Visible)=='boolean'then ba. +WarningBox.Visible=bc.Visible end if typeof(bc.Title)=='string'then ba.WarningBox.Title=bc.Title end if typeof(bc.Text) +=='string'then ba.WarningBox.Text=bc.Text end a2.Visible=ba.WarningBox.Visible a7.Text=ba.WarningBox.Title a9.Text=ba. +WarningBox.Text ba:Resize(true)a3.BackgroundColor3=ba.WarningBox.IsNormal==true and C.Scheme.BackgroundColor or Color3. +fromRGB(127,0,0)a5.Color=ba.WarningBox.IsNormal==true and C.Scheme.DarkColor or Color3.fromRGB(85,0,0)a4.Color=ba. +WarningBox.IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(255,50,50)a7.TextColor3=ba.WarningBox.IsNormal== +true and C.Scheme.FontColor or Color3.fromRGB(255,50,50)a8.Color=ba.WarningBox.IsNormal==true and C.Scheme.OutlineColor +or Color3.fromRGB(169,0,0)if not C.Registry[a3]then C:AddToRegistry(a3,{})end if not C.Registry[a5]then C:AddToRegistry( +a5,{})end if not C.Registry[a4]then C:AddToRegistry(a4,{})end if not C.Registry[a7]then C:AddToRegistry(a7,{})end if not +C.Registry[a8]then C:AddToRegistry(a8,{})end C.Registry[a3].BackgroundColor3=function()return ba.WarningBox.IsNormal== +true and C.Scheme.BackgroundColor or Color3.fromRGB(127,0,0)end C.Registry[a5].Color=function()return ba.WarningBox. +IsNormal==true and C.Scheme.DarkColor or Color3.fromRGB(85,0,0)end C.Registry[a4].Color=function()return ba.WarningBox. +IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(255,50,50)end C.Registry[a7].TextColor3=function()return ba. +WarningBox.IsNormal==true and C.Scheme.FontColor or Color3.fromRGB(255,50,50)end C.Registry[a8].Color=function()return +ba.WarningBox.IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(169,0,0)end end function ba.RefreshSides(bb) +local bc=a2.Visible and a3.Size.Y.Offset+8 or 0 for bd,be in ba.Sides do be.Position=UDim2.new(be.Position.X.Scale,0,0, +bc)be.Size=UDim2.new(0.5,-3,1,-bc)end end function ba.Resize(bb,bc:boolean?)if bc then local bd,be,bf=math.floor(a_. +AbsoluteSize.Y/3.25),C:GetTextBounds(a9.Text,C.Scheme.Font,a9.TextSize,a9.AbsoluteSize.X)local bg=24+bf if ba.WarningBox +.LockSize==true and bg>=bd then a6.CanvasSize=UDim2.fromOffset(0,bg)bg=bd else a6.CanvasSize=UDim2.fromOffset(0,0)end a9 +.Size=UDim2.new(1,-4,0,bf)a3.Size=UDim2.new(1,-5,0,bg+4)end ba:RefreshSides()end function ba.AddGroupbox(bb,bc)local bd= +ag('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=bc.Side==1 and +a0 or a1})ag('UIListLayout',{Padding=UDim.new(0,6),Parent=bd})ag('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop= +UDim.new(0,4),Parent=bd})local be,bf,bg,bh do be=ag('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0 +),Parent=bd})ag('UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius),Parent=be})C:AddOutline(be)C:MakeLine(be,{Position= +UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local bi=C:GetCustomIcon(bc.IconName)or(bc.IconName and ac or nil)if bi +then ag('ImageLabel',{Image=bi.Url,ImageColor3=bi.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=bi. +ImageRectOffset,ImageRectSize=bi.ImageRectSize,Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(22,22),Parent=be}) +end bf=ag('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(bi and 24 or 0,0),Size=UDim2.new(1,0,0,34), +Text=bc.Name,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,Parent=be})ag('UIPadding',{PaddingLeft=UDim.new(0,12), +PaddingRight=UDim.new(0,12),Parent=bf})bg=ag('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size= +UDim2.new(1,0,1,-35),Parent=be})bh=ag('UIListLayout',{Padding=UDim.new(0,8),Parent=bg})ag('UIPadding',{PaddingBottom= +UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bg})end local bi={ +BoxHolder=bd,Holder=be,Container=bg,Tab=ba,DependencyBoxes={},Elements={}}function bi.Resize(bj)be.Size=UDim2.new(1,0,0, +(bh.AbsoluteContentSize.Y/C.DPIScale)+49)end setmetatable(bi,au)bi:Resize()ba.Groupboxes[bc.Name]=bi return bi end +function ba.AddLeftGroupbox(bb,bc,bd)return ba:AddGroupbox{Side=1,Name=bc,IconName=bd}end function ba.AddRightGroupbox( +bb,bc,bd)return ba:AddGroupbox{Side=2,Name=bc,IconName=bd}end function ba.AddTabbox(bb,bc)local bd=ag('Frame',{ +AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=bc.Side==1 and a0 or a1}) +ag('UIListLayout',{Padding=UDim.new(0,6),Parent=bd})ag('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0,4) +,Parent=bd})local be,bf do be=ag('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=bd})ag( +'UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius),Parent=be})C:AddOutline(be)bf=ag('Frame',{BackgroundTransparency=1, +Size=UDim2.new(1,0,0,34),Parent=be})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum. +UIFlexAlignment.Fill,Parent=bf})end local bg={ActiveTab=nil,BoxHolder=bd,Holder=be,Tabs={}}function bg.AddTab(bh,bi) +local bj=ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=0,Size=UDim2.fromOffset(0,34),Text=bi, +TextSize=15,TextTransparency=0.5,Parent=bf})local bk,bl=C:MakeLine(bj,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0 +,0,1,1),Size=UDim2.new(1,0,0,1)}),ag('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1, +0,1,-35),Visible=false,Parent=be})local bm=ag('UIListLayout',{Padding=UDim.new(0,8),Parent=bl})ag('UIPadding',{ +PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bl}) +local bn={ButtonHolder=bj,Container=bl,Tab=ba,Elements={},DependencyBoxes={}}function bn.Show(bo)if bg.ActiveTab then bg +.ActiveTab:Hide()end bj.BackgroundTransparency=1 bj.TextTransparency=0 bk.Visible=false bl.Visible=true bg.ActiveTab=bn +bn:Resize()end function bn.Hide(bo)bj.BackgroundTransparency=0 bj.TextTransparency=0.5 bk.Visible=true bl.Visible=false +bg.ActiveTab=nil end function bn.Resize(bo)if bg.ActiveTab~=bn then return end be.Size=UDim2.new(1,0,0,(bm. +AbsoluteContentSize.Y/C.DPIScale)+49)end if not bg.ActiveTab then bn:Show()end bj.MouseButton1Click:Connect(bn.Show) +setmetatable(bn,au)bg.Tabs[bi]=bn return bn end if bc.Name then ba.Tabboxes[bc.Name]=bg else table.insert(ba.Tabboxes,bg +)end return bg end function ba.AddLeftTabbox(bb,bc)return ba:AddTabbox{Side=1,Name=bc}end function ba.AddRightTabbox(bb, +bc)return ba:AddTabbox{Side=2,Name=bc}end function ba.Hover(bb,bc)if C.ActiveTab==ba then return end n:Create(aY,C. +TweenInfo,{TextTransparency=bc and 0.25 or 0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency=bc and 0.25 +or 0.5}):Play()end end function ba.Show(bb)if C.ActiveTab then C.ActiveTab:Hide()end n:Create(aX,C.TweenInfo,{ +BackgroundTransparency=0}):Play()n:Create(aY,C.TweenInfo,{TextTransparency=0}):Play()if aZ then n:Create(aZ,C.TweenInfo, +{ImageTransparency=0}):Play()end if aW then aR:ShowTabInfo(aU,aW)end a_.Visible=true ba:RefreshSides()C.ActiveTab=ba if +C.Searching then C:UpdateSearch(C.SearchText)end end function ba.Hide(bb)n:Create(aX,C.TweenInfo,{BackgroundTransparency +=1}):Play()n:Create(aY,C.TweenInfo,{TextTransparency=0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency= +0.5}):Play()end a_.Visible=false aR:HideTabInfo()C.ActiveTab=nil end if not C.ActiveTab then ba:Show()end aX.MouseEnter: +Connect(function()ba:Hover(true)end)aX.MouseLeave:Connect(function()ba:Hover(false)end)aX.MouseButton1Click:Connect(ba. +Show)C.Tabs[aU]=ba return ba end function aR.AddKeyTab(aT,...)local aU,aV,aW if select('#',...)==1 and typeof(...)== +'table'then local aX=select(1,...)aU=aX.Name or'Tab'aV=aX.Icon aW=aX.Description else aU=select(1,...)or'Tab'aV=select(2 +,...)aW=select(3,...)end aV=aV or'key'local aX:TextButton,aY,aZ,a_ aV=if aV=='key'then ar else C:GetCustomIcon(aV)do aX= +ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=aO})local +a0=ag('UIPadding',{PaddingBottom=UDim.new(0,aC and 6 or 11),PaddingLeft=UDim.new(0,aC and 6 or 12),PaddingRight=UDim. +new(0,aC and 6 or 12),PaddingTop=UDim.new(0,aC and 6 or 11),Parent=aX})aY=ag('TextLabel',{BackgroundTransparency=1, +Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=aU,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum. +TextXAlignment.Left,Visible=not aC,Parent=aX})if aV then aZ=ag('ImageLabel',{Image=aV.Url,ImageColor3=aV.Custom and +'WhiteColor'or'AccentColor',ImageRectOffset=aV.ImageRectOffset,ImageRectSize=aV.ImageRectSize,ImageTransparency=0.5,Size +=UDim2.fromScale(1,1),SizeConstraint=aC and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=aX}) +end table.insert(C.TabButtons,{Label=aY,Padding=a0,Icon=aZ})a_=ag('ScrollingFrame',{AutomaticCanvasSize=Enum. +AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),ScrollBarThickness=0,Size=UDim2.fromScale(1,1), +Visible=false,Parent=aP})ag('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Center,Padding=UDim.new(0,8), +VerticalAlignment=Enum.VerticalAlignment.Center,Parent=a_})ag('UIPadding',{PaddingLeft=UDim.new(0,1),PaddingRight=UDim. +new(0,1),Parent=a_})end local a0={Elements={},IsKeyTab=true}function a0.AddKeyBox(a1,a2)assert(typeof(a2)=='function', +'Callback must be a function')local a3=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(0.75,0,0,21),Parent=a_})local +a4=ag('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,PlaceholderText='Key',Size= +UDim2.new(1,-71,1,0),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=a3})ag('UIPadding',{PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),Parent=a4})local a5=ag('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundColor3= 'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0),Size=UDim2.new(0,63,1,0),Text= -'Execute',TextSize=14,Parent=a2})a4.InputBegan:Connect(function(a5)if not L(a5)then return end if not C: -MouseIsOverFrame(a4,a5.Position)then return end a1(a3.Text)end)end function a_.RefreshSides(a0)end function a_.Resize(a0 -)end function a_.Hover(a0,a1)if C.ActiveTab==a_ then return end n:Create(aX,C.TweenInfo,{TextTransparency=a1 and 0.25 or -0.5}):Play()if aY then n:Create(aY,C.TweenInfo,{ImageTransparency=a1 and 0.25 or 0.5}):Play()end end function a_.Show(a0 -)if C.ActiveTab then C.ActiveTab:Hide()end n:Create(aW,C.TweenInfo,{BackgroundTransparency=0}):Play()n:Create(aX,C. -TweenInfo,{TextTransparency=0}):Play()if aY then n:Create(aY,C.TweenInfo,{ImageTransparency=0}):Play()end aZ.Visible= -true if aV then aQ:ShowTabInfo(aT,aV)end a_:RefreshSides()C.ActiveTab=a_ if C.Searching then C:UpdateSearch(C.SearchText -)end end function a_.Hide(a0)n:Create(aW,C.TweenInfo,{BackgroundTransparency=1}):Play()n:Create(aX,C.TweenInfo,{ -TextTransparency=0.5}):Play()if aY then n:Create(aY,C.TweenInfo,{ImageTransparency=0.5}):Play()end aZ.Visible=false aQ: -HideTabInfo()C.ActiveTab=nil end if not C.ActiveTab then a_:Show()end aW.MouseEnter:Connect(function()a_:Hover(true)end) -aW.MouseLeave:Connect(function()a_:Hover(false)end)aW.MouseButton1Click:Connect(a_.Show)a_.Container=aZ setmetatable(a_, -at)C.Tabs[aT]=a_ return a_ end function C.Toggle(aS,aT:boolean?)if typeof(aT)=='boolean'then C.Toggled=aT else C.Toggled -=not C.Toggled end aC.Visible=C.Toggled if av.UnlockMouseWhileOpen then X.Modal=C.Toggled end if C.Toggled and not C. -IsMobile then local aU=k.MouseIconEnabled pcall(function()i:UnbindFromRenderStep'ShowCursor'end)i:BindToRenderStep( -'ShowCursor',Enum.RenderPriority.Last.Value,function()k.MouseIconEnabled=not C.ShowCustomCursor Y.Position=UDim2. -fromOffset(t.X,t.Y)Y.Visible=C.ShowCustomCursor if not(C.Toggled and ai and ai.Parent)then k.MouseIconEnabled=aU Y. -Visible=false i:UnbindFromRenderStep'ShowCursor'end end)elseif not C.Toggled then al.Visible=false for aU,aV in C. -Options do if aV.Type=='ColorPicker'then aV.ColorMenu:Close()aV.ContextMenu:Close()elseif aV.Type=='Dropdown'or aV.Type -=='KeyPicker'then aV.Menu:Close()end end end end if av.EnableSidebarResize then local aS,aT,aU,aV,aW,aX=(av. -MinSidebarWidth+av.SidebarCompactWidth)*av.SidebarCollapseThreshold,false,(af('TextButton',{AnchorPoint=Vector2.new(0.5, -0),BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0),Size=UDim2.new(0,8,1,0),Text='',Parent=aD}))aU.MouseEnter: -Connect(function()n:Create(aD,C.TweenInfo,{BackgroundColor3=C:GetLighterColor(C.Scheme.OutlineColor)}):Play()end)aU. -MouseLeave:Connect(function()if aT then return end n:Create(aD,C.TweenInfo,{BackgroundColor3=C.Scheme.OutlineColor}): -Play()end)aU.InputBegan:Connect(function(aY:InputObject)if not L(aY)then return end C.CantDragForced=true aV=aY.Position -aW=aQ:GetSidebarWidth()aT=true aX=aY.Changed:Connect(function()if aY.UserInputState~=Enum.UserInputState.End then return -end C.CantDragForced=false n:Create(aD,C.TweenInfo,{BackgroundColor3=C.Scheme.OutlineColor}):Play()aT=false if aX and aX -.Connected then aX:Disconnect()aX=nil end end)end)C:GiveSignal(k.InputChanged:Connect(function(aY:InputObject)if not C. -Toggled or not(ai and ai.Parent)then aT=false if aX and aX.Connected then aX:Disconnect()aX=nil end return end if aT and -M(aY)then local aZ=aY.Position-aV local a_=aW+aZ.X if av.DisableCompactingSnap then aQ:SetSidebarWidth(a_)return end if -a_>aS then aQ:SetSidebarWidth(math.max(a_,av.MinSidebarWidth))else aQ:SetSidebarWidth(av.SidebarCompactWidth)end end end -))end if av.EnableCompacting and av.SidebarCompacted then aQ:SetSidebarWidth(av.SidebarCompactWidth)end if av.AutoShow -then task.spawn(C.Toggle)end if C.IsMobile then local aS,aT=C:AddDraggableButton('Toggle',function()C:Toggle()end,true), -C:AddDraggableButton('Lock',function(aS)C.CantDragForced=not C.CantDragForced aS:SetText(C.CantDragForced and'Unlock'or -'Lock')end,true)if av.MobileButtonsSide=='Right'then aS.Button.Position=UDim2.new(1,-6,0,6)aS.Button.AnchorPoint=Vector2 -.new(1,0)aT.Button.Position=UDim2.new(1,-6,0,46)aT.Button.AnchorPoint=Vector2.new(1,0)else aT.Button.Position=UDim2. -fromOffset(6,46)end end aI:GetPropertyChangedSignal'Text':Connect(function()C:UpdateSearch(aI.Text)end)C:GiveSignal(k. -InputBegan:Connect(function(aS:InputObject)if C.Unloaded then return end if k:GetFocusedTextBox()then return end if( -typeof(C.ToggleKeybind)=='table'and C.ToggleKeybind.Type=='KeyPicker'and aS.KeyCode.Name==C.ToggleKeybind.Value)or aS. +'Execute',TextSize=14,Parent=a3})a5.InputBegan:Connect(function(a6)if not L(a6)then return end if not C: +MouseIsOverFrame(a5,a6.Position)then return end a2(a4.Text)end)end function a0.RefreshSides(a1)end function a0.Resize(a1 +)end function a0.Hover(a1,a2)if C.ActiveTab==a0 then return end n:Create(aY,C.TweenInfo,{TextTransparency=a2 and 0.25 or +0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency=a2 and 0.25 or 0.5}):Play()end end function a0.Show(a1 +)if C.ActiveTab then C.ActiveTab:Hide()end n:Create(aX,C.TweenInfo,{BackgroundTransparency=0}):Play()n:Create(aY,C. +TweenInfo,{TextTransparency=0}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency=0}):Play()end a_.Visible= +true if aW then aR:ShowTabInfo(aU,aW)end a0:RefreshSides()C.ActiveTab=a0 if C.Searching then C:UpdateSearch(C.SearchText +)end end function a0.Hide(a1)n:Create(aX,C.TweenInfo,{BackgroundTransparency=1}):Play()n:Create(aY,C.TweenInfo,{ +TextTransparency=0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency=0.5}):Play()end a_.Visible=false aR: +HideTabInfo()C.ActiveTab=nil end if not C.ActiveTab then a0:Show()end aX.MouseEnter:Connect(function()a0:Hover(true)end) +aX.MouseLeave:Connect(function()a0:Hover(false)end)aX.MouseButton1Click:Connect(a0.Show)a0.Container=a_ setmetatable(a0, +au)C.Tabs[aU]=a0 return a0 end function C.Toggle(aT,aU:boolean?)if typeof(aU)=='boolean'then C.Toggled=aU else C.Toggled +=not C.Toggled end aD.Visible=C.Toggled if aw.UnlockMouseWhileOpen then Y.Modal=C.Toggled end if C.Toggled and not C. +IsMobile then local aV=k.MouseIconEnabled pcall(function()i:UnbindFromRenderStep'ShowCursor'end)i:BindToRenderStep( +'ShowCursor',Enum.RenderPriority.Last.Value,function()k.MouseIconEnabled=not C.ShowCustomCursor Z.Position=UDim2. +fromOffset(t.X,t.Y)Z.Visible=C.ShowCustomCursor if not(C.Toggled and X and X.Parent)then k.MouseIconEnabled=aV Z.Visible +=false i:UnbindFromRenderStep'ShowCursor'end end)elseif not C.Toggled then am.Visible=false for aV,aW in C.Options do if +aW.Type=='ColorPicker'then aW.ColorMenu:Close()aW.ContextMenu:Close()elseif aW.Type=='Dropdown'or aW.Type=='KeyPicker' +then aW.Menu:Close()end end end end if aw.EnableSidebarResize then local aT,aU,aV,aW,aX,aY=(aw.MinSidebarWidth+aw. +SidebarCompactWidth)*aw.SidebarCollapseThreshold,false,(ag('TextButton',{AnchorPoint=Vector2.new(0.5,0), +BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0),Size=UDim2.new(0,8,1,0),Text='',Parent=aE}))aV.MouseEnter: +Connect(function()n:Create(aE,C.TweenInfo,{BackgroundColor3=C:GetLighterColor(C.Scheme.OutlineColor)}):Play()end)aV. +MouseLeave:Connect(function()if aU then return end n:Create(aE,C.TweenInfo,{BackgroundColor3=C.Scheme.OutlineColor}): +Play()end)aV.InputBegan:Connect(function(aZ:InputObject)if not L(aZ)then return end C.CantDragForced=true aW=aZ.Position +aX=aR:GetSidebarWidth()aU=true aY=aZ.Changed:Connect(function()if aZ.UserInputState~=Enum.UserInputState.End then return +end C.CantDragForced=false n:Create(aE,C.TweenInfo,{BackgroundColor3=C.Scheme.OutlineColor}):Play()aU=false if aY and aY +.Connected then aY:Disconnect()aY=nil end end)end)C:GiveSignal(k.InputChanged:Connect(function(aZ:InputObject)if not C. +Toggled or not(X and X.Parent)then aU=false if aY and aY.Connected then aY:Disconnect()aY=nil end return end if aU and +M(aZ)then local a_=aZ.Position-aW local a0=aX+a_.X if aw.DisableCompactingSnap then aR:SetSidebarWidth(a0)return end if +a0>aT then aR:SetSidebarWidth(math.max(a0,aw.MinSidebarWidth))else aR:SetSidebarWidth(aw.SidebarCompactWidth)end end end +))end if aw.EnableCompacting and aw.SidebarCompacted then aR:SetSidebarWidth(aw.SidebarCompactWidth)end if aw.AutoShow +then task.spawn(C.Toggle)end if C.IsMobile then local aT,aU=C:AddDraggableButton('Toggle',function()C:Toggle()end,true), +C:AddDraggableButton('Lock',function(aT)C.CantDragForced=not C.CantDragForced aT:SetText(C.CantDragForced and'Unlock'or +'Lock')end,true)if aw.MobileButtonsSide=='Right'then aT.Button.Position=UDim2.new(1,-6,0,6)aT.Button.AnchorPoint=Vector2 +.new(1,0)aU.Button.Position=UDim2.new(1,-6,0,46)aU.Button.AnchorPoint=Vector2.new(1,0)else aU.Button.Position=UDim2. +fromOffset(6,46)end end aJ:GetPropertyChangedSignal'Text':Connect(function()C:UpdateSearch(aJ.Text)end)C:GiveSignal(k. +InputBegan:Connect(function(aT:InputObject)if C.Unloaded then return end if k:GetFocusedTextBox()then return end if( +typeof(C.ToggleKeybind)=='table'and C.ToggleKeybind.Type=='KeyPicker'and aT.KeyCode.Name==C.ToggleKeybind.Value)or aT. KeyCode==C.ToggleKeybind then C.Toggle()end end))C:GiveSignal(k.WindowFocused:Connect(function()C.IsRobloxFocused=true -end))C:GiveSignal(k.WindowFocusReleased:Connect(function()C.IsRobloxFocused=false end))return aQ end local function au() -if C.Unloaded then return end local av,aw=T(),T(true)for ax,ay in x do if ay.Type=='Dropdown'and ay.SpecialType== -'Player'then ay:SetValues(ay.ExcludeLocalPlayer and aw or av)end end end local function av()if C.Unloaded then return -end local aw=U()for ax,ay in x do if ay.Type=='Dropdown'and ay.SpecialType=='Team'then ay:SetValues(aw)end end end C: -GiveSignal(h.PlayerAdded:Connect(au))C:GiveSignal(h.PlayerRemoving:Connect(au))C:GiveSignal(m.ChildAdded:Connect(av))C: -GiveSignal(m.ChildRemoved:Connect(av))o().Library=C return C end)()end,[6]=function()local aa,ab,ac=a(6)local ad return( +end))C:GiveSignal(k.WindowFocusReleased:Connect(function()C.IsRobloxFocused=false end))return aR end local function av() +if C.Unloaded then return end local aw,ax=T(),T(true)for ay,az in x do if az.Type=='Dropdown'and az.SpecialType== +'Player'then az:SetValues(az.ExcludeLocalPlayer and ax or aw)end end end local function aw()if C.Unloaded then return +end local ax=U()for ay,az in x do if az.Type=='Dropdown'and az.SpecialType=='Team'then az:SetValues(ax)end end end C: +GiveSignal(h.PlayerAdded:Connect(av))C:GiveSignal(h.PlayerRemoving:Connect(av))C:GiveSignal(m.ChildAdded:Connect(aw))C: +GiveSignal(m.ChildRemoved:Connect(aw))o().Library=C return C end)()end,[6]=function()local aa,ab,ac=a(6)local ad return( function(...)local ae,af,ag,ah=game:GetService'Players',game:GetService'TweenService',game:GetService'RunService',{} local function ai()local aj=ae.LocalPlayer if not aj then return nil end local ak=aj:FindFirstChildOfClass'PlayerGui'if not ak then ak=Instance.new'PlayerGui'ak.Name='PlayerGui'ak.Parent=aj end local al=Instance.new'ScreenGui'al.Name= @@ -1366,147 +1367,148 @@ aB.Notifications do a0:Resize()end end function aB.GiveSignal(aY,aZ:RBXScriptCon aZ)if aZ and(a_=='RBXScriptConnection'or a_=='RBXScriptSignal')then table.insert(aB.Signals,aZ)end return aZ end function IsValidCustomIcon(aY:string)return typeof(aY)=='string'and(aY:match'rbxasset'or aY:match 'roblox%.com/asset/%?id='or aY:match'rbxthumb://type=')end type Icon={Url:string,Id:number,IconName:string, -ImageRectOffset:Vector2,ImageRectSize:Vector2}type IconModule={Icons:{string},GetAsset:(Name:string)->Icon?}local aY,aZ= -pcall(function()return(loadstring(game:HttpGet +ImageRectOffset:Vector2,ImageRectSize:Vector2}type IconModule={Icons:{string},GetAsset:(Name:string)->Icon?}local aY,aZ, +a_={Url='rbxasset://textures/ui/GuiImagePlaceholder.png',ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom= +true},pcall(function()return(loadstring(game:HttpGet [[https://raw.githubusercontent.com/deividcomsono/lucide-roblox-direct/refs/heads/main/source.lua]])::()->IconModule)() -end)function aB.GetIcon(a_,a0:string)if not aY then return end local a1,a2=pcall(aZ.GetAsset,a0)if not a1 then return -end return a2 end function aB.GetCustomIcon(a_,a0:string)if not IsValidCustomIcon(a0)then return aB:GetIcon(a0)else -return{Url=a0,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true}end end function aB.Validate(a_,a0:{[ -string]:any},a1:{[string]:any}):{[string]:any}if typeof(a0)~='table'then return a1 end for a2,a3 in a1 do if typeof(a2) -=='number'then continue end if typeof(a3)=='table'then a0[a2]=aB:Validate(a0[a2],a3)elseif a0[a2]==nil then a0[a2]=a3 -end end return a0 end local function a_(a0:{[string]:any},a1:GuiObject)local a2=aB.Registry[a1]or{}for a3,a4 in a0 do if -a2[a3]then a2[a3]=nil elseif a3~='Text'then local a5=aH(a4)if a5 or typeof(a4)=='function'then a2[a3]=a4 a4=a5 or a4() -end end a1[a3]=a4 end if aN(a2)>0 then aB.Registry[a1]=a2 end end local function a0(a1:string,a2:{[string]:any}):any -local a3=Instance.new(a1)if aC[a1]then a_(aC[a1],a3)end a_(a2,a3)if a2.Parent and not a2.ZIndex then pcall(function()a3. -ZIndex=a2.Parent.ZIndex end)end return a3 end local function a1(a2:Instance,a3:Instance|(()->Instance))local a4,a5= -pcall(function()if not a3 then a3=af end local a4 if typeof(a3)=='function'then a4=a3()else a4=a3 end a2.Parent=a4 end) -if not(a4 and a2.Parent)then a2.Parent=aB.LocalPlayer:WaitForChild('PlayerGui',math.huge)end end local function a2(a3: -Instance,a4:boolean?)if a4 then a1(a3,af)return end pcall(ap,a3)a1(a3,aq)end local a3=a0('ScreenGui',{Name='Obsidian', -DisplayOrder=999,ResetOnSpawn=false})a2(a3)aB.ScreenGui=a3 a3.DescendantRemoving:Connect(function(a4)aB: -RemoveFromRegistry(a4)end)local a4,a5,a6=(a0('TextButton',{BackgroundTransparency=1,Modal=false,Size=UDim2.fromScale(0,0 -),AnchorPoint=Vector2.zero,Text='',ZIndex=-999,Parent=a3}))do a5=a0('Frame',{AnchorPoint=Vector2.new(0.5,0.5), -BackgroundColor3='WhiteColor',Size=UDim2.fromOffset(9,1),Visible=false,ZIndex=999,Parent=a3})a0('Frame',{AnchorPoint= +end)function aB.GetIcon(a0,a1:string)if not aZ then return end local a2,a3=pcall(a_.GetAsset,a1)if not a2 then return +end return a3 end function aB.GetCustomIcon(a0,a1:string)if not IsValidCustomIcon(a1)then return aB:GetIcon(a1)else +return{Url=a1,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true}end end function aB.Validate(a0,a1:{[ +string]:any},a2:{[string]:any}):{[string]:any}if typeof(a1)~='table'then return a2 end for a3,a4 in a2 do if typeof(a3) +=='number'then continue end if typeof(a4)=='table'then a1[a3]=aB:Validate(a1[a3],a4)elseif a1[a3]==nil then a1[a3]=a4 +end end return a1 end local function a0(a1:{[string]:any},a2:GuiObject)local a3=aB.Registry[a2]or{}for a4,a5 in a1 do if +a3[a4]then a3[a4]=nil elseif a4~='Text'then local a6=aH(a5)if a6 or typeof(a5)=='function'then a3[a4]=a5 a5=a6 or a5() +end end a2[a4]=a5 end if aN(a3)>0 then aB.Registry[a2]=a3 end end local function a1(a2:string,a3:{[string]:any}):any +local a4=Instance.new(a2)if aC[a2]then a0(aC[a2],a4)end a0(a3,a4)if a3.Parent and not a3.ZIndex then pcall(function()a4. +ZIndex=a3.Parent.ZIndex end)end return a4 end local function a2(a3:Instance,a4:Instance|(()->Instance))local a5,a6= +pcall(function()if not a4 then a4=af end local a5 if typeof(a4)=='function'then a5=a4()else a5=a4 end a3.Parent=a5 end) +if not(a5 and a3.Parent)then a3.Parent=aB.LocalPlayer:WaitForChild('PlayerGui',math.huge)end end local function a3(a4: +Instance,a5:boolean?)if a5 then a2(a4,af)return end pcall(ap,a4)a2(a4,aq)end local a4=a1('ScreenGui',{Name='Obsidian', +DisplayOrder=999,ResetOnSpawn=false})a3(a4)aB.ScreenGui=a4 a4.DescendantRemoving:Connect(function(a5)aB: +RemoveFromRegistry(a5)end)local a5,a6,a7=(a1('TextButton',{BackgroundTransparency=1,Modal=false,Size=UDim2.fromScale(0,0 +),AnchorPoint=Vector2.zero,Text='',ZIndex=-999,Parent=a4}))do a6=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5), +BackgroundColor3='WhiteColor',Size=UDim2.fromOffset(9,1),Visible=false,ZIndex=999,Parent=a4})a1('Frame',{AnchorPoint= Vector2.new(0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998, -Parent=a5})local a7=a0('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Position=UDim2.fromScale( -0.5,0.5),Size=UDim2.fromOffset(1,9),Parent=a5})a0('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor' -,Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=a7})a6=a0('ImageLabel',{AnchorPoint=Vector2 +Parent=a6})local a8=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Position=UDim2.fromScale( +0.5,0.5),Size=UDim2.fromOffset(1,9),Parent=a6})a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor' +,Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=a8})a7=a1('ImageLabel',{AnchorPoint=Vector2 .new(0.5,0.5),BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0.5),Size=UDim2.fromOffset(20,20),ZIndex=1000, -Visible=false,Parent=a5})end local a7,a8 do a7=a0('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1, -Position=UDim2.new(1,-6,0,6),Size=UDim2.new(0,300,1,-6),Parent=a3})table.insert(aB.Scales,a0('UIScale',{Parent=a7}))a8= -a0('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,8),Parent=a7})end function aB. -ResetCursorIcon(a9)a6.Visible=false a6.Size=UDim2.fromOffset(20,20)end function aB.ChangeCursorIcon(a9,b:string)if not b -or b==''then aB:ResetCursorIcon()return end local ba=aB:GetCustomIcon(b)assert(ba, -[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])a6.Visible=true a6.Image=ba.Url a6. -ImageRectOffset=ba.ImageRectOffset a6.ImageRectSize=ba.ImageRectSize end function aB.ChangeCursorIconSize(a9,b:UDim2) -assert(typeof(b)=='UDim2','UDim2 expected.')a6.Size=b end function aB.GetBetterColor(a9,b:Color3,ba:number):Color3 ba=ba -*(aB.IsLightTheme and-4 or 2)return Color3.fromRGB(math.clamp(b.R*255+ba,0,255),math.clamp(b.G*255+ba,0,255),math.clamp( -b.B*255+ba,0,255))end function aB.GetLighterColor(a9,b:Color3):Color3 local ba,bb,bc=b:ToHSV()return Color3.fromHSV(ba, -math.max(0,bb-0.1),math.min(1,bc+0.1))end function aB.GetDarkerColor(a9,b:Color3):Color3 local ba,bb,bc=b:ToHSV()return -Color3.fromHSV(ba,bb,bc/2)end function aB.GetKeyString(a9,b:Enum.KeyCode)if b.EnumType==Enum.KeyCode and b.Value>33 and -b.Value<127 then return string.char(b.Value)end return b.Name end function aB.GetTextBounds(a9,b:string,ba:Font,bb: -number,bc:number?):(number,number)local bd=Instance.new'GetTextBoundsParams'bd.Text=b bd.RichText=true bd.Font=ba bd. -Size=bb bd.Width=bc or workspace.CurrentCamera.ViewportSize.X-32 local be=ak:GetTextBoundsAsync(bd)return be.X,be.Y end -function aB.MouseIsOverFrame(a9,b:GuiObject,ba:Vector2):boolean local bb,bc=b.AbsolutePosition,b.AbsoluteSize return ba. -X>=bb.X and ba.X<=bb.X+bc.X and ba.Y>=bb.Y and ba.Y<=bb.Y+bc.Y end function aB.SafeCallback(a9,b:(...any)->...any,...: -any)if not(b and typeof(b)=='function')then return end local ba=table.pack(xpcall(b,function(ba)task.defer(error,debug. -traceback(ba,2))if aB.NotifyOnError then aB:Notify(ba)end return ba end,...))if not ba[1]then return nil end return -table.unpack(ba,2,ba.n)end function aB.MakeDraggable(a9,b:GuiObject,ba:GuiObject,bb:boolean?,bc:boolean?)local bd,be,bf, -bg=false ba.InputBegan:Connect(function(bh:InputObject)if not aK(bh)or bc and aB.CantDragForced then return end be=bh. -Position bf=b.Position bd=true bg=bh.Changed:Connect(function()if bh.UserInputState~=Enum.UserInputState.End then return -end bd=false if bg and bg.Connected then bg:Disconnect()bg=nil end end)end)aB:GiveSignal(aj.InputChanged:Connect( -function(bh:InputObject)if(not bb and not aB.Toggled)or(bc and aB.CantDragForced)or not(a3 and a3.Parent)then bd=false -if bg and bg.Connected then bg:Disconnect()bg=nil end return end if bd and aL(bh)then local bi=bh.Position-be b.Position -=UDim2.new(bf.X.Scale,bf.X.Offset+bi.X,bf.Y.Scale,bf.Y.Offset+bi.Y)end end))end function aB.MakeResizable(a9,b:GuiObject -,ba:GuiObject,bb:(()->())?)local bc,bd,be,bf=false ba.InputBegan:Connect(function(bg:InputObject)if not aK(bg)then -return end bd=bg.Position be=b.Size bc=true bf=bg.Changed:Connect(function()if bg.UserInputState~=Enum.UserInputState. -End then return end bc=false if bf and bf.Connected then bf:Disconnect()bf=nil end end)end)aB:GiveSignal(aj.InputChanged -:Connect(function(bg:InputObject)if not b.Visible or not(a3 and a3.Parent)then bc=false if bf and bf.Connected then bf: -Disconnect()bf=nil end return end if bc and aL(bg)then local bh=bg.Position-bd b.Size=UDim2.new(be.X.Scale,math.clamp(be -.X.Offset+bh.X,aB.MinSize.X,math.huge),be.Y.Scale,math.clamp(be.Y.Offset+bh.Y,aB.MinSize.Y,math.huge))if bb then aB: -SafeCallback(bb)end end end))end function aB.MakeCover(a9,b:GuiObject,ba:string)local bb,bc=aD[ba]or{0,0},aE[ba]or{1,0.5 -}local bd=a0('Frame',{AnchorPoint=Vector2.new(bb[1],bb[2]),BackgroundColor3=b.BackgroundColor3,Position=UDim2.fromScale( -bb[1],bb[2]),Size=UDim2.fromScale(bc[1],bc[2]),Parent=b})return bd end function aB.MakeLine(a9,b:GuiObject,ba)local bb= -a0('Frame',{AnchorPoint=ba.AnchorPoint or Vector2.zero,BackgroundColor3='OutlineColor',Position=ba.Position,Size=ba.Size -,ZIndex=ba.ZIndex or b.ZIndex,Parent=b})return bb end function aB.AddOutline(a9,b:GuiObject)local ba,bb=a0('UIStroke',{ -Color='OutlineColor',Thickness=1,ZIndex=2,Parent=b}),a0('UIStroke',{Color='DarkColor',Thickness=1.5,ZIndex=1,Parent=b}) -return ba,bb end function aB.AddBlank(a9,b:GuiObject,ba:UDim2)return a0('Frame',{BackgroundTransparency=1,Size=ba or -UDim2.fromScale(0,0),Parent=b})end function aB.MakeOutline(a9,b:GuiObject,ba:number?,bb:number?)warn -[[Obsidian:MakeOutline is deprecated, please use Obsidian:AddOutline instead.]]local bc=a0('Frame',{BackgroundColor3= -'DarkColor',Position=UDim2.fromOffset(-2,-2),Size=UDim2.new(1,4,1,4),ZIndex=bb,Parent=b})local bd=a0('Frame',{ -BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(1,1),Size=UDim2.new(1,-2,1,-2),ZIndex=bb,Parent=bc})if ba and -ba>0 then a0('UICorner',{CornerRadius=UDim.new(0,ba+1),Parent=bc})a0('UICorner',{CornerRadius=UDim.new(0,ba),Parent=bd}) -end return bc,bd end function aB.AddDraggableLabel(a9,b:string)local ba,bb={},a0('TextLabel',{AutomaticSize=Enum. -AutomaticSize.XY,BackgroundColor3='BackgroundColor',Size=UDim2.fromOffset(0,0),Position=UDim2.fromOffset(6,6),Text=b, -TextSize=15,ZIndex=10,Parent=a3})a0('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=bb})a0('UIPadding',{ -PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),PaddingTop=UDim.new(0,6),Parent=bb}) -table.insert(aB.Scales,a0('UIScale',{Parent=bb}))aB:AddOutline(bb)aB:MakeDraggable(bb,bb,true)ba.Label=bb function ba. -SetText(bc,bd:string)bb.Text=bd end function ba.SetVisible(bc,bd:boolean)bb.Visible=bd end return ba end function aB. -AddDraggableButton(a9,b:string,ba,bb:boolean?)local bc,bd={},a0('TextButton',{BackgroundColor3='BackgroundColor', -Position=UDim2.fromOffset(6,6),TextSize=16,ZIndex=10,Parent=a3})a0('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius), -Parent=bd})if not bb then table.insert(aB.Scales,a0('UIScale',{Parent=bd}))end aB:AddOutline(bd)bd.MouseButton1Click: -Connect(function()aB:SafeCallback(ba,bc)end)aB:MakeDraggable(bd,bd,true)bc.Button=bd function bc.SetText(be,bf:string) -local bg,bh=aB:GetTextBounds(bf,aB.Scheme.Font,16)bd.Text=bf bd.Size=UDim2.fromOffset(bg*2,bh*2)end bc:SetText(b)return -bc end function aB.AddDraggableMenu(a9,b:string)local ba=a0('Frame',{AutomaticSize=Enum.AutomaticSize.XY, -BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(0,0),ZIndex=10,Parent=a3})a0( -'UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=ba})table.insert(aB.Scales,a0('UIScale',{Parent=ba}))aB: -AddOutline(ba)aB:MakeLine(ba,{Position=UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local bb=a0('TextLabel',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Text=b,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,Parent=ba}) -a0('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=bb})local bc=a0('Frame',{ -BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=ba})a0('UIListLayout',{Padding -=UDim.new(0,7),Parent=bc})a0('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0, -7),PaddingTop=UDim.new(0,7),Parent=bc})aB:MakeDraggable(ba,bb,true)return ba,bc end do local a9=aB:AddDraggableLabel''a9 -:SetVisible(false)function aB.SetWatermark(b,ba:string)warn -[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]a9:SetText(ba)end function aB. -SetWatermarkVisibility(b,ba:boolean)warn[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]a9: -SetVisible(ba)end end local a9 function aB.AddContextMenu(b,ba:GuiObject,bb:UDim2|(()->()),bc:{[number]:number}|(()->{}) -,bd:number?,be:((Active:boolean)->())?)local bf if bd then bf=a0('ScrollingFrame',{AutomaticCanvasSize=bd==2 and Enum. -AutomaticSize.Y or Enum.AutomaticSize.None,AutomaticSize=bd==1 and Enum.AutomaticSize.Y or Enum.AutomaticSize.None, +Visible=false,Parent=a6})end local a8,a9 do a8=a1('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1, +Position=UDim2.new(1,-6,0,6),Size=UDim2.new(0,300,1,-6),Parent=a4})table.insert(aB.Scales,a1('UIScale',{Parent=a8}))a9= +a1('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,8),Parent=a8})end function aB. +ResetCursorIcon(b)a7.Visible=false a7.Size=UDim2.fromOffset(20,20)end function aB.ChangeCursorIcon(b,ba:string)if not ba +or ba==''then aB:ResetCursorIcon()return end local bb=aB:GetCustomIcon(ba)assert(bb, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])a7.Visible=true a7.Image=bb.Url a7. +ImageRectOffset=bb.ImageRectOffset a7.ImageRectSize=bb.ImageRectSize end function aB.ChangeCursorIconSize(b,ba:UDim2) +assert(typeof(ba)=='UDim2','UDim2 expected.')a7.Size=ba end function aB.GetBetterColor(b,ba:Color3,bb:number):Color3 bb= +bb*(aB.IsLightTheme and-4 or 2)return Color3.fromRGB(math.clamp(ba.R*255+bb,0,255),math.clamp(ba.G*255+bb,0,255),math. +clamp(ba.B*255+bb,0,255))end function aB.GetLighterColor(b,ba:Color3):Color3 local bb,bc,bd=ba:ToHSV()return Color3. +fromHSV(bb,math.max(0,bc-0.1),math.min(1,bd+0.1))end function aB.GetDarkerColor(b,ba:Color3):Color3 local bb,bc,bd=ba: +ToHSV()return Color3.fromHSV(bb,bc,bd/2)end function aB.GetKeyString(b,ba:Enum.KeyCode)if ba.EnumType==Enum.KeyCode and +ba.Value>33 and ba.Value<127 then return string.char(ba.Value)end return ba.Name end function aB.GetTextBounds(b,ba: +string,bb:Font,bc:number,bd:number?):(number,number)local be=Instance.new'GetTextBoundsParams'be.Text=ba be.RichText= +true be.Font=bb be.Size=bc be.Width=bd or workspace.CurrentCamera.ViewportSize.X-32 local bf=ak:GetTextBoundsAsync(be) +return bf.X,bf.Y end function aB.MouseIsOverFrame(b,ba:GuiObject,bb:Vector2):boolean local bc,bd=ba.AbsolutePosition,ba. +AbsoluteSize return bb.X>=bc.X and bb.X<=bc.X+bd.X and bb.Y>=bc.Y and bb.Y<=bc.Y+bd.Y end function aB.SafeCallback(b,ba: +(...any)->...any,...:any)if not(ba and typeof(ba)=='function')then return end local bb=table.pack(xpcall(ba,function(bb) +task.defer(error,debug.traceback(bb,2))if aB.NotifyOnError then aB:Notify(bb)end return bb end,...))if not bb[1]then +return nil end return table.unpack(bb,2,bb.n)end function aB.MakeDraggable(b,ba:GuiObject,bb:GuiObject,bc:boolean?,bd: +boolean?)local be,bf,bg,bh=false bb.InputBegan:Connect(function(bi:InputObject)if not aK(bi)or bd and aB.CantDragForced +then return end bf=bi.Position bg=ba.Position be=true bh=bi.Changed:Connect(function()if bi.UserInputState~=Enum. +UserInputState.End then return end be=false if bh and bh.Connected then bh:Disconnect()bh=nil end end)end)aB:GiveSignal( +aj.InputChanged:Connect(function(bi:InputObject)if(not bc and not aB.Toggled)or(bd and aB.CantDragForced)or not(a4 and +a4.Parent)then be=false if bh and bh.Connected then bh:Disconnect()bh=nil end return end if be and aL(bi)then local bj= +bi.Position-bf ba.Position=UDim2.new(bg.X.Scale,bg.X.Offset+bj.X,bg.Y.Scale,bg.Y.Offset+bj.Y)end end))end function aB. +MakeResizable(b,ba:GuiObject,bb:GuiObject,bc:(()->())?)local bd,be,bf,bg=false bb.InputBegan:Connect(function(bh: +InputObject)if not aK(bh)then return end be=bh.Position bf=ba.Size bd=true bg=bh.Changed:Connect(function()if bh. +UserInputState~=Enum.UserInputState.End then return end bd=false if bg and bg.Connected then bg:Disconnect()bg=nil end +end)end)aB:GiveSignal(aj.InputChanged:Connect(function(bh:InputObject)if not ba.Visible or not(a4 and a4.Parent)then bd= +false if bg and bg.Connected then bg:Disconnect()bg=nil end return end if bd and aL(bh)then local bi=bh.Position-be ba. +Size=UDim2.new(bf.X.Scale,math.clamp(bf.X.Offset+bi.X,aB.MinSize.X,math.huge),bf.Y.Scale,math.clamp(bf.Y.Offset+bi.Y,aB. +MinSize.Y,math.huge))if bc then aB:SafeCallback(bc)end end end))end function aB.MakeCover(b,ba:GuiObject,bb:string)local +bc,bd=aD[bb]or{0,0},aE[bb]or{1,0.5}local be=a1('Frame',{AnchorPoint=Vector2.new(bc[1],bc[2]),BackgroundColor3=ba. +BackgroundColor3,Position=UDim2.fromScale(bc[1],bc[2]),Size=UDim2.fromScale(bd[1],bd[2]),Parent=ba})return be end +function aB.MakeLine(b,ba:GuiObject,bb)local bc=a1('Frame',{AnchorPoint=bb.AnchorPoint or Vector2.zero,BackgroundColor3= +'OutlineColor',Position=bb.Position,Size=bb.Size,ZIndex=bb.ZIndex or ba.ZIndex,Parent=ba})return bc end function aB. +AddOutline(b,ba:GuiObject)local bb,bc=a1('UIStroke',{Color='OutlineColor',Thickness=1,ZIndex=2,Parent=ba}),a1('UIStroke' +,{Color='DarkColor',Thickness=1.5,ZIndex=1,Parent=ba})return bb,bc end function aB.AddBlank(b,ba:GuiObject,bb:UDim2) +return a1('Frame',{BackgroundTransparency=1,Size=bb or UDim2.fromScale(0,0),Parent=ba})end function aB.MakeOutline(b,ba: +GuiObject,bb:number?,bc:number?)warn[[Obsidian:MakeOutline is deprecated, please use Obsidian:AddOutline instead.]]local +bd=a1('Frame',{BackgroundColor3='DarkColor',Position=UDim2.fromOffset(-2,-2),Size=UDim2.new(1,4,1,4),ZIndex=bc,Parent=ba +})local be=a1('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(1,1),Size=UDim2.new(1,-2,1,-2),ZIndex= +bc,Parent=bd})if bb and bb>0 then a1('UICorner',{CornerRadius=UDim.new(0,bb+1),Parent=bd})a1('UICorner',{CornerRadius= +UDim.new(0,bb),Parent=be})end return bd,be end function aB.AddDraggableLabel(b,ba:string)local bb,bc={},a1('TextLabel',{ +AutomaticSize=Enum.AutomaticSize.XY,BackgroundColor3='BackgroundColor',Size=UDim2.fromOffset(0,0),Position=UDim2. +fromOffset(6,6),Text=ba,TextSize=15,ZIndex=10,Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent= +bc})a1('UIPadding',{PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),PaddingTop=UDim. +new(0,6),Parent=bc})table.insert(aB.Scales,a1('UIScale',{Parent=bc}))aB:AddOutline(bc)aB:MakeDraggable(bc,bc,true)bb. +Label=bc function bb.SetText(bd,be:string)bc.Text=be end function bb.SetVisible(bd,be:boolean)bc.Visible=be end return +bb end function aB.AddDraggableButton(b,ba:string,bb,bc:boolean?)local bd,be={},a1('TextButton',{BackgroundColor3= +'BackgroundColor',Position=UDim2.fromOffset(6,6),TextSize=16,ZIndex=10,Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0 +,aB.CornerRadius),Parent=be})if not bc then table.insert(aB.Scales,a1('UIScale',{Parent=be}))end aB:AddOutline(be)be. +MouseButton1Click:Connect(function()aB:SafeCallback(bb,bd)end)aB:MakeDraggable(be,be,true)bd.Button=be function bd. +SetText(bf,bg:string)local bh,bi=aB:GetTextBounds(bg,aB.Scheme.Font,16)be.Text=bg be.Size=UDim2.fromOffset(bh*2,bi*2)end +bd:SetText(ba)return bd end function aB.AddDraggableMenu(b,ba:string)local bb=a1('Frame',{AutomaticSize=Enum. +AutomaticSize.XY,BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(0,0),ZIndex=10, +Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=bb})table.insert(aB.Scales,a1('UIScale',{ +Parent=bb}))aB:AddOutline(bb)aB:MakeLine(bb,{Position=UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local bc=a1( +'TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Text=ba,TextSize=15,TextXAlignment=Enum.TextXAlignment. +Left,Parent=bb})a1('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=bc})local bd=a1('Frame',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=bb})a1('UIListLayout',{Padding +=UDim.new(0,7),Parent=bd})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0, +7),PaddingTop=UDim.new(0,7),Parent=bd})aB:MakeDraggable(bb,bc,true)return bb,bd end do local b=aB:AddDraggableLabel''b: +SetVisible(false)function aB.SetWatermark(ba,bb:string)warn +[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]b:SetText(bb)end function aB. +SetWatermarkVisibility(ba,bb:boolean)warn[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]b: +SetVisible(bb)end end local b function aB.AddContextMenu(ba,bb:GuiObject,bc:UDim2|(()->()),bd:{[number]:number}|(()->{}) +,be:number?,bf:((Active:boolean)->())?)local bg if be then bg=a1('ScrollingFrame',{AutomaticCanvasSize=be==2 and Enum. +AutomaticSize.Y or Enum.AutomaticSize.None,AutomaticSize=be==1 and Enum.AutomaticSize.Y or Enum.AutomaticSize.None, BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,BottomImage= 'rbxasset://textures/ui/Scroll/scroll-middle.png',CanvasSize=UDim2.fromOffset(0,0),ScrollBarImageColor3='OutlineColor', -ScrollBarThickness=bd==2 and 2 or 0,Size=typeof(bb)=='function'and bb()or bb,TopImage= -'rbxasset://textures/ui/Scroll/scroll-middle.png',Visible=false,ZIndex=10,Parent=a3})else bf=a0('Frame',{ -BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=typeof(bb)=='function'and bb()or -bb,Visible=false,ZIndex=10,Parent=a3})end table.insert(aB.Scales,a0('UIScale',{Parent=bf}))local bg={Active=false,Holder -=ba,Menu=bf,List=nil,Signal=nil,Size=bb}if bd then bg.List=a0('UIListLayout',{Parent=bf})end function bg.Open(bh)if a9== -bg then return elseif a9 then a9:Close()end a9=bg bg.Active=true if typeof(bc)=='function'then bf.Position=UDim2. -fromOffset(math.floor(ba.AbsolutePosition.X+bc()[1]),math.floor(ba.AbsolutePosition.Y+bc()[2]))else bf.Position=UDim2. -fromOffset(math.floor(ba.AbsolutePosition.X+bc[1]),math.floor(ba.AbsolutePosition.Y+bc[2]))end bf.Size=typeof(bg.Size)== -'function'and bg.Size()or bg.Size if typeof(be)=='function'then aB:SafeCallback(be,true)end bf.Visible=true bg.Signal=ba -:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if typeof(bc)=='function'then bf.Position=UDim2. -fromOffset(math.floor(ba.AbsolutePosition.X+bc()[1]),math.floor(ba.AbsolutePosition.Y+bc()[2]))else bf.Position=UDim2. -fromOffset(math.floor(ba.AbsolutePosition.X+bc[1]),math.floor(ba.AbsolutePosition.Y+bc[2]))end end)end function bg.Close -(bh)if a9~=bg then return end bf.Visible=false if bg.Signal then bg.Signal:Disconnect()bg.Signal=nil end bg.Active=false -a9=nil if typeof(be)=='function'then aB:SafeCallback(be,false)end end function bg.Toggle(bh)if bg.Active then bg:Close() -else bg:Open()end end function bg.SetSize(bh,bi)bg.Size=bi bf.Size=typeof(bi)=='function'and bi()or bi end return bg end -aB:GiveSignal(aj.InputBegan:Connect(function(b:InputObject)if aB.Unloaded then return end if aK(b,true)then local ba=b. -Position if a9 and not(aB:MouseIsOverFrame(a9.Menu,ba)or aB:MouseIsOverFrame(a9.Holder,ba))then a9:Close()end end end)) -local b=a0('TextLabel',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',BorderColor3= -'OutlineColor',BorderSizePixel=1,TextSize=14,TextWrapped=true,Visible=false,ZIndex=20,Parent=a3})a0('UIPadding',{ -PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,4),PaddingRight=UDim.new(0,4),PaddingTop=UDim.new(0,2),Parent=b}) -table.insert(aB.Scales,a0('UIScale',{Parent=b}))b:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if aB. -Unloaded then return end local ba,bb=aB:GetTextBounds(b.Text,b.FontFace,b.TextSize,(workspace.CurrentCamera.ViewportSize -.X-b.AbsolutePosition.X-8)/aB.DPIScale)b.Size=UDim2.fromOffset(ba+8)end)local ba function aB.AddTooltip(bb,bc:string,bd: -string,be:GuiObject)local bf={Disabled=false,Hovering=false,Signals={}}local function bg()if ba==be or(a9 and aB: -MouseIsOverFrame(a9.Menu,as))or(bf.Disabled and typeof(bd)~='string')or(not bf.Disabled and typeof(bc)~='string')then -return end ba=be b.Text=bf.Disabled and bd or bc b.Visible=true while aB.Toggled and aB:MouseIsOverFrame(be,as)and not( -a9 and aB:MouseIsOverFrame(a9.Menu,as))do b.Position=UDim2.fromOffset(as.X+(aB.ShowCustomCursor and 8 or 14),as.Y+(aB. -ShowCustomCursor and 8 or 12))ah.RenderStepped:Wait()end b.Visible=false ba=nil end local function bh(bi: -RBXScriptConnection|RBXScriptSignal)local bj=typeof(bi)if bi and(bj=='RBXScriptConnection'or bj=='RBXScriptSignal')then -table.insert(bf.Signals,bi)end return bi end bh(be.MouseEnter:Connect(bg))bh(be.MouseMoved:Connect(bg))bh(be.MouseLeave: -Connect(function()if ba~=be then return end b.Visible=false ba=nil end))function bf.Destroy(bi)for bj=#bf.Signals,1,-1 -do local bk=table.remove(bf.Signals,bj)if bk and bk.Connected then bk:Disconnect()end end if ba==be then if b then b. -Visible=false end ba=nil end end table.insert(ax,b)return bf end function aB.OnUnload(bb,bc)table.insert(aB. -UnloadSignals,bc)end function aB.Unload(bb)for bc=#aB.Signals,1,-1 do local bd=table.remove(aB.Signals,bc)if bd and bd. -Connected then bd:Disconnect()end end for bc,bd in aB.UnloadSignals do aB:SafeCallback(bd)end for bc,bd in ax do aB: -SafeCallback(bd.Destroy,bd)end aB.Unloaded=true a3:Destroy()an().Library=nil end local bb,bc,bd,be,bf=aB:GetIcon'check', -aB:GetIcon'chevron-up',aB:GetIcon'move-diagonal-2',aB:GetIcon'key',aB:GetIcon'move'function aB.SetIconModule(bg,bh: -IconModule)aY=true aZ=bh bb=aB:GetIcon'check'bc=aB:GetIcon'chevron-up'bd=aB:GetIcon'move-diagonal-2'be=aB:GetIcon'key'bf -=aB:GetIcon'move'end local bg={}do local bh={}function bh.AddKeyPicker(bi,bj,bk)bk=aB:Validate(bk,aC.KeyPicker)local bl= -bi local bm,bn=bl.TextLabel,{Text=bk.Text,Value=bk.Default,Modifiers=bk.DefaultModifiers,DisplayValue=bk.Default,Toggled -=false,Mode=bk.Mode,SyncToggleState=bk.SyncToggleState,Callback=bk.Callback,ChangedCallback=bk.ChangedCallback,Changed= -bk.Changed,Clicked=bk.Clicked,Type='KeyPicker'}if bn.Mode=='Press'then assert(bl.Type=='Label', -[[KeyPicker with the mode 'Press' can be only applied on Labels.]])bn.SyncToggleState=false bk.Modes={'Press'}bk.Mode= -'Press'end if bn.SyncToggleState then bk.Modes={'Toggle','Hold'}if not table.find(bk.Modes,bk.Mode)then bk.Mode='Toggle' +ScrollBarThickness=be==2 and 2 or 0,Size=typeof(bc)=='function'and bc()or bc,TopImage= +'rbxasset://textures/ui/Scroll/scroll-middle.png',Visible=false,ZIndex=10,Parent=a4})else bg=a1('Frame',{ +BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=typeof(bc)=='function'and bc()or +bc,Visible=false,ZIndex=10,Parent=a4})end table.insert(aB.Scales,a1('UIScale',{Parent=bg}))local bh={Active=false,Holder +=bb,Menu=bg,List=nil,Signal=nil,Size=bc}if be then bh.List=a1('UIListLayout',{Parent=bg})end function bh.Open(bi)if b== +bh then return elseif b then b:Close()end b=bh bh.Active=true if typeof(bd)=='function'then bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd()[1]),math.floor(bb.AbsolutePosition.Y+bd()[2]))else bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd[1]),math.floor(bb.AbsolutePosition.Y+bd[2]))end bg.Size=typeof(bh.Size)== +'function'and bh.Size()or bh.Size if typeof(bf)=='function'then aB:SafeCallback(bf,true)end bg.Visible=true bh.Signal=bb +:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if typeof(bd)=='function'then bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd()[1]),math.floor(bb.AbsolutePosition.Y+bd()[2]))else bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd[1]),math.floor(bb.AbsolutePosition.Y+bd[2]))end end)end function bh.Close +(bi)if b~=bh then return end bg.Visible=false if bh.Signal then bh.Signal:Disconnect()bh.Signal=nil end bh.Active=false +b=nil if typeof(bf)=='function'then aB:SafeCallback(bf,false)end end function bh.Toggle(bi)if bh.Active then bh:Close() +else bh:Open()end end function bh.SetSize(bi,bj)bh.Size=bj bg.Size=typeof(bj)=='function'and bj()or bj end return bh end +aB:GiveSignal(aj.InputBegan:Connect(function(ba:InputObject)if aB.Unloaded then return end if aK(ba,true)then local bb= +ba.Position if b and not(aB:MouseIsOverFrame(b.Menu,bb)or aB:MouseIsOverFrame(b.Holder,bb))then b:Close()end end end)) +local ba=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,TextSize=14,TextWrapped=true,Visible=false,ZIndex=20,Parent=a4})a1('UIPadding',{ +PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,4),PaddingRight=UDim.new(0,4),PaddingTop=UDim.new(0,2),Parent=ba}) +table.insert(aB.Scales,a1('UIScale',{Parent=ba}))ba:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if aB. +Unloaded then return end local bb,bc=aB:GetTextBounds(ba.Text,ba.FontFace,ba.TextSize,(workspace.CurrentCamera. +ViewportSize.X-ba.AbsolutePosition.X-8)/aB.DPIScale)ba.Size=UDim2.fromOffset(bb+8)end)local bb function aB.AddTooltip(bc +,bd:string,be:string,bf:GuiObject)local bg={Disabled=false,Hovering=false,Signals={}}local function bh()if bb==bf or(b +and aB:MouseIsOverFrame(b.Menu,as))or(bg.Disabled and typeof(be)~='string')or(not bg.Disabled and typeof(bd)~='string') +then return end bb=bf ba.Text=bg.Disabled and be or bd ba.Visible=true while aB.Toggled and aB:MouseIsOverFrame(bf,as) +and not(b and aB:MouseIsOverFrame(b.Menu,as))do ba.Position=UDim2.fromOffset(as.X+(aB.ShowCustomCursor and 8 or 14),as.Y ++(aB.ShowCustomCursor and 8 or 12))ah.RenderStepped:Wait()end ba.Visible=false bb=nil end local function bi(bj: +RBXScriptConnection|RBXScriptSignal)local bk=typeof(bj)if bj and(bk=='RBXScriptConnection'or bk=='RBXScriptSignal')then +table.insert(bg.Signals,bj)end return bj end bi(bf.MouseEnter:Connect(bh))bi(bf.MouseMoved:Connect(bh))bi(bf.MouseLeave: +Connect(function()if bb~=bf then return end ba.Visible=false bb=nil end))function bg.Destroy(bj)for bk=#bg.Signals,1,-1 +do local bl=table.remove(bg.Signals,bk)if bl and bl.Connected then bl:Disconnect()end end if bb==bf then if ba then ba. +Visible=false end bb=nil end end table.insert(ax,ba)return bg end function aB.OnUnload(bc,bd)table.insert(aB. +UnloadSignals,bd)end function aB.Unload(bc)for bd=#aB.Signals,1,-1 do local be=table.remove(aB.Signals,bd)if be and be. +Connected then be:Disconnect()end end for bd,be in aB.UnloadSignals do aB:SafeCallback(be)end for bd,be in ax do aB: +SafeCallback(be.Destroy,be)end aB.Unloaded=true a4:Destroy()an().Library=nil end local bc,bd,be,bf,bg=aB:GetIcon'check', +aB:GetIcon'chevron-up',aB:GetIcon'move-diagonal-2',aB:GetIcon'key',aB:GetIcon'move'function aB.SetIconModule(bh,bi: +IconModule)aZ=true a_=bi bc=aB:GetIcon'check'bd=aB:GetIcon'chevron-up'be=aB:GetIcon'move-diagonal-2'bf=aB:GetIcon'key'bg +=aB:GetIcon'move'end local bh={}do local bi={}function bi.AddKeyPicker(bj,bk,bl)bl=aB:Validate(bl,aC.KeyPicker)local bm= +bj local bn,bo=bm.TextLabel,{Text=bl.Text,Value=bl.Default,Modifiers=bl.DefaultModifiers,DisplayValue=bl.Default,Toggled +=false,Mode=bl.Mode,SyncToggleState=bl.SyncToggleState,Callback=bl.Callback,ChangedCallback=bl.ChangedCallback,Changed= +bl.Changed,Clicked=bl.Clicked,Type='KeyPicker'}if bo.Mode=='Press'then assert(bm.Type=='Label', +[[KeyPicker with the mode 'Press' can be only applied on Labels.]])bo.SyncToggleState=false bl.Modes={'Press'}bl.Mode= +'Press'end if bo.SyncToggleState then bl.Modes={'Toggle','Hold'}if not table.find(bl.Modes,bl.Mode)then bl.Mode='Toggle' end end local c,d,e,f,g=false,{MB1=Enum.UserInputType.MouseButton1,MB2=Enum.UserInputType.MouseButton2,MB3=Enum. UserInputType.MouseButton3},{[Enum.UserInputType.MouseButton1]='MB1',[Enum.UserInputType.MouseButton2]='MB2',[Enum. UserInputType.MouseButton3]='MB3'},{LAlt=Enum.KeyCode.LeftAlt,RAlt=Enum.KeyCode.RightAlt,LCtrl=Enum.KeyCode.LeftControl, @@ -1521,90 +1523,90 @@ return l end,function(j)if not j then return false end if e[j.UserInputType]~=ni UserInputType)and not aj:GetFocusedTextBox()elseif j.UserInputType==Enum.UserInputType.Keyboard then return aj: IsKeyDown(j.KeyCode)and not aj:GetFocusedTextBox()else return false end end,function(j)local k={}for l,m in j do table. insert(k,f[m])end return k end,function(j)if typeof(j)~='table'then return{}end local k={}for l,m in j do if not f[m] -then continue end table.insert(k,m)end return k end bn.Modifiers=m(bn.Modifiers)local n,o=a0('TextButton',{ -BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text=bn.Value, -TextSize=14,Parent=bm}),{Normal=bn.Mode~='Toggle'}do local p=a0('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1, -0,0,16),Text='',Visible=not bk.NoUI,Parent=aB.KeybindContainer})local q,r=a0('TextLabel',{AutomaticSize=Enum. +then continue end table.insert(k,m)end return k end bo.Modifiers=m(bo.Modifiers)local n,o=a1('TextButton',{ +BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text=bo.Value, +TextSize=14,Parent=bn}),{Normal=bo.Mode~='Toggle'}do local p=a1('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1, +0,0,16),Text='',Visible=not bl.NoUI,Parent=aB.KeybindContainer})local q,r=a1('TextLabel',{AutomaticSize=Enum. AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(0,1),Text='',TextSize=14,TextTransparency=0.5,Parent=p}), -a0('Frame',{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3='MainColor',Position=UDim2.fromScale(0,0.5),Size=UDim2. -fromOffset(14,14),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=p})a0('UICorner',{CornerRadius=UDim.new(0,aB. -CornerRadius/2),Parent=r})a0('UIStroke',{Color='OutlineColor',Parent=r})local s=a0('ImageLabel',{Image=bb and bb.Url or -'',ImageColor3='FontColor',ImageRectOffset=bb and bb.ImageRectOffset or Vector2.zero,ImageRectSize=bb and bb. +a1('Frame',{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3='MainColor',Position=UDim2.fromScale(0,0.5),Size=UDim2. +fromOffset(14,14),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=p})a1('UICorner',{CornerRadius=UDim.new(0,aB. +CornerRadius/2),Parent=r})a1('UIStroke',{Color='OutlineColor',Parent=r})local s=a1('ImageLabel',{Image=bc and bc.Url or +'',ImageColor3='FontColor',ImageRectOffset=bc and bc.ImageRectOffset or Vector2.zero,ImageRectSize=bc and bc. ImageRectSize or Vector2.zero,ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=r}) function o.Display(t,u)q.TextTransparency=u and 0 or 0.5 s.ImageTransparency=u and 0 or 1 end function o.SetText(t,u)q. Text=u end function o.SetVisibility(t,u)p.Visible=u end function o.SetNormal(t,u)o.Normal=u p.Active=not u q.Position=u -and UDim2.fromOffset(0,0)or UDim2.fromOffset(22,0)r.Visible=not u end bn.DoClick=function(...)end p.MouseButton1Click: -Connect(function()if o.Normal then return end bn.Toggled=not bn.Toggled bn:DoClick()end)o.Holder=p o.Label=q o.Checkbox= +and UDim2.fromOffset(0,0)or UDim2.fromOffset(22,0)r.Visible=not u end bo.DoClick=function(...)end p.MouseButton1Click: +Connect(function()if o.Normal then return end bo.Toggled=not bo.Toggled bo:DoClick()end)o.Holder=p o.Label=q o.Checkbox= r o.Loaded=true table.insert(aB.KeybindToggles,o)end local p=aB:AddContextMenu(n,UDim2.fromOffset(62,0),function()return -{n.AbsoluteSize.X+1.5,0.5}end,1)bn.Menu=p local q={}for r,s in bk.Modes do local t,u={},a0('TextButton',{ +{n.AbsoluteSize.X+1.5,0.5}end,1)bo.Menu=p local q={}for r,s in bl.Modes do local t,u={},a1('TextButton',{ BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=s,TextSize=14,TextTransparency=0.5, -Parent=p.Menu})function t.Select(v)for w,x in q do x:Deselect()end bn.Mode=s u.BackgroundTransparency=0 u. -TextTransparency=0 p:Close()end function t.Deselect(v)bn.Mode=nil u.BackgroundTransparency=1 u.TextTransparency=0.5 end -u.MouseButton1Click:Connect(function()t:Select()end)if bn.Mode==s then t:Select()end q[s]=t end function bn.Display(r,s) -if aB.Unloaded then return end local t,u=aB:GetTextBounds(s or bn.DisplayValue,n.FontFace,n.TextSize,bm.AbsoluteSize.X)n -.Text=s or bn.DisplayValue n.Size=UDim2.fromOffset((t+9),(u+4))end function bn.Update(r)bn:Display()if bk.NoUI then -return end if bn.Mode=='Toggle'and bl.Type=='Toggle'and bl.Disabled then o:SetVisibility(false)return end local s,t=bn: -GetState(),aB.ShowToggleFrameInKeybinds and bn.Mode=='Toggle'if bn.SyncToggleState and bl.Value~=s then bl:SetValue(s) -end if o.Loaded then if t then o:SetNormal(false)else o:SetNormal(true)end o:SetText(('[%s] %s (%s)'):format(bn. -DisplayValue,bn.Text,bn.Mode))o:SetVisibility(true)o:Display(s)end end function bn.GetState(r)if bn.Mode=='Always'then -return true elseif bn.Mode=='Hold'then local s=bn.Value if s=='None'then return false end if not j(bn.Modifiers)then +Parent=p.Menu})function t.Select(v)for w,x in q do x:Deselect()end bo.Mode=s u.BackgroundTransparency=0 u. +TextTransparency=0 p:Close()end function t.Deselect(v)bo.Mode=nil u.BackgroundTransparency=1 u.TextTransparency=0.5 end +u.MouseButton1Click:Connect(function()t:Select()end)if bo.Mode==s then t:Select()end q[s]=t end function bo.Display(r,s) +if aB.Unloaded then return end local t,u=aB:GetTextBounds(s or bo.DisplayValue,n.FontFace,n.TextSize,bn.AbsoluteSize.X)n +.Text=s or bo.DisplayValue n.Size=UDim2.fromOffset((t+9),(u+4))end function bo.Update(r)bo:Display()if bl.NoUI then +return end if bo.Mode=='Toggle'and bm.Type=='Toggle'and bm.Disabled then o:SetVisibility(false)return end local s,t=bo: +GetState(),aB.ShowToggleFrameInKeybinds and bo.Mode=='Toggle'if bo.SyncToggleState and bm.Value~=s then bm:SetValue(s) +end if o.Loaded then if t then o:SetNormal(false)else o:SetNormal(true)end o:SetText(('[%s] %s (%s)'):format(bo. +DisplayValue,bo.Text,bo.Mode))o:SetVisibility(true)o:Display(s)end end function bo.GetState(r)if bo.Mode=='Always'then +return true elseif bo.Mode=='Hold'then local s=bo.Value if s=='None'then return false end if not j(bo.Modifiers)then return false end if d[s]~=nil then return aj:IsMouseButtonPressed(d[s])and not aj:GetFocusedTextBox()else return aj: -IsKeyDown(Enum.KeyCode[s])and not aj:GetFocusedTextBox()end else return bn.Toggled end end function bn.OnChanged(r,s)bn. -Changed=s end function bn.OnClick(r,s)bn.Clicked=s end function bn.DoClick(r)if bn.Mode=='Press'then if bn.Toggled and -bk.WaitForCallback==true then return end bn.Toggled=true end aB:SafeCallback(bn.Callback,bn.Toggled)aB:SafeCallback(bn. -Clicked,bn.Toggled)if bn.Mode=='Press'then bn.Toggled=false end end function bn.SetValue(r,s)local t,u,v=s[1],s[2],s[3] +IsKeyDown(Enum.KeyCode[s])and not aj:GetFocusedTextBox()end else return bo.Toggled end end function bo.OnChanged(r,s)bo. +Changed=s end function bo.OnClick(r,s)bo.Clicked=s end function bo.DoClick(r)if bo.Mode=='Press'then if bo.Toggled and +bl.WaitForCallback==true then return end bo.Toggled=true end aB:SafeCallback(bo.Callback,bo.Toggled)aB:SafeCallback(bo. +Clicked,bo.Toggled)if bo.Mode=='Press'then bo.Toggled=false end end function bo.SetValue(r,s)local t,u,v=s[1],s[2],s[3] local w,x=pcall(function()if t=='None'then t=nil return nil end if d[t]==nil then return Enum.KeyCode[t]end return d[t] -end)if t==nil then bn.Value='None'elseif w then bn.Value=t else bn.Value='Unknown'end bn.Modifiers=m(if typeof(v)== -'table'then v else bn.Modifiers)bn.DisplayValue=if aN(bn.Modifiers)>0 then(table.concat(bn.Modifiers,' + ')..' + '..bn. -Value)else bn.Value if q[u]then q[u]:Select()end local y=l(bn.Modifiers)aB:SafeCallback(bn.ChangedCallback,x,y)aB: -SafeCallback(bn.Changed,x,y)bn:Update()end function bn.SetText(r,s)o:SetText(s)bn:Update()end n.MouseButton1Click: +end)if t==nil then bo.Value='None'elseif w then bo.Value=t else bo.Value='Unknown'end bo.Modifiers=m(if typeof(v)== +'table'then v else bo.Modifiers)bo.DisplayValue=if aN(bo.Modifiers)>0 then(table.concat(bo.Modifiers,' + ')..' + '..bo. +Value)else bo.Value if q[u]then q[u]:Select()end local y=l(bo.Modifiers)aB:SafeCallback(bo.ChangedCallback,x,y)aB: +SafeCallback(bo.Changed,x,y)bo:Update()end function bo.SetText(r,s)o:SetText(s)bo:Update()end n.MouseButton1Click: Connect(function()if c then return end c=true n.Text='...'n.Size=UDim2.fromOffset(29,18)local r,s={}local t=function()s= aj.InputBegan:Wait()return aj:GetFocusedTextBox()~=nil end repeat task.wait()n.Text='...'n.Size=UDim2.fromOffset(29,18) -if t()then c=false bn:Update()return end if s.KeyCode==Enum.KeyCode.Escape then break end if h(s)then local u=false +if t()then c=false bo:Update()return end if s.KeyCode==Enum.KeyCode.Escape then break end if h(s)then local u=false repeat task.wait()if aj:IsKeyDown(s.KeyCode)then task.wait(0.075)if aj:IsKeyDown(s.KeyCode)then if not table.find(r,g[s. -KeyCode])then r[#r+1]=g[s.KeyCode]bn:Display(table.concat(r,' + ')..' + ...')end if t()then u=true break end if s. +KeyCode])then r[#r+1]=g[s.KeyCode]bo:Display(table.concat(r,' + ')..' + ...')end if t()then u=true break end if s. KeyCode==Enum.KeyCode.Escape then break end if not h(s)then break end else if not table.find(r,g[s.KeyCode])then break -end end end until false if u then c=false bn:Update()return end end break until false local u='Unknown'if e[s. +end end end until false if u then c=false bo:Update()return end end break until false local u='Unknown'if e[s. UserInputType]~=nil then u=e[s.UserInputType]elseif s.UserInputType==Enum.UserInputType.Keyboard then u=s.KeyCode==Enum. -KeyCode.Escape and'None'or s.KeyCode.Name end r=if s.KeyCode==Enum.KeyCode.Escape or u=='Unknown'then{}else r bn.Toggled -=false bn:SetValue{u,bn.Mode,r}repeat task.wait()until not k(s)or aj:GetFocusedTextBox()c=false end)n.MouseButton2Click: -Connect(p.Toggle)aB:GiveSignal(aj.InputBegan:Connect(function(r:InputObject)if aB.Unloaded then return end if bn.Mode== -'Always'or bn.Value=='Unknown'or bn.Value=='None'or c or aj:GetFocusedTextBox()then return end local s,t,u=bn.Value,j(bn +KeyCode.Escape and'None'or s.KeyCode.Name end r=if s.KeyCode==Enum.KeyCode.Escape or u=='Unknown'then{}else r bo.Toggled +=false bo:SetValue{u,bo.Mode,r}repeat task.wait()until not k(s)or aj:GetFocusedTextBox()c=false end)n.MouseButton2Click: +Connect(p.Toggle)aB:GiveSignal(aj.InputBegan:Connect(function(r:InputObject)if aB.Unloaded then return end if bo.Mode== +'Always'or bo.Value=='Unknown'or bo.Value=='None'or c or aj:GetFocusedTextBox()then return end local s,t,u=bo.Value,j(bo .Modifiers),false if s and t==true and(e[r.UserInputType]==s or(r.UserInputType==Enum.UserInputType.Keyboard and r. -KeyCode.Name==s))then u=true end if bn.Mode=='Toggle'then if u then bn.Toggled=not bn.Toggled bn:DoClick()end elseif bn. -Mode=='Press'then if u then bn:DoClick()end end bn:Update()end))aB:GiveSignal(aj.InputEnded:Connect(function()if aB. -Unloaded then return end if bn.Value=='Unknown'or bn.Value=='None'or c or aj:GetFocusedTextBox()then return end bn: -Update()end))bn:Update()if bl.Addons then table.insert(bl.Addons,bn)end bn.Default=bn.Value bn.DefaultModifiers=table. -clone(bn.Modifiers or{})aw[bj]=bn return bi end local bi={}for bj=0,1,0.1 do table.insert(bi,ColorSequenceKeypoint.new( -bj,Color3.fromHSV(bj,1,1)))end function bh.AddColorPicker(bj,bk,bl)bl=aB:Validate(bl,aC.ColorPicker)local bm=bj local bn -,c=bm.TextLabel,{Value=bl.Default,Transparency=bl.Transparency or 0,Title=bl.Title,Callback=bl.Callback,Changed=bl. -Changed,Type='ColorPicker'}c.Hue,c.Sat,c.Vib=c.Value:ToHSV()local d=a0('TextButton',{BackgroundColor3=c.Value, -BorderColor3=aB:GetDarkerColor(c.Value),BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text='',Parent=bn})local e,f=a0( +KeyCode.Name==s))then u=true end if bo.Mode=='Toggle'then if u then bo.Toggled=not bo.Toggled bo:DoClick()end elseif bo. +Mode=='Press'then if u then bo:DoClick()end end bo:Update()end))aB:GiveSignal(aj.InputEnded:Connect(function()if aB. +Unloaded then return end if bo.Value=='Unknown'or bo.Value=='None'or c or aj:GetFocusedTextBox()then return end bo: +Update()end))bo:Update()if bm.Addons then table.insert(bm.Addons,bo)end bo.Default=bo.Value bo.DefaultModifiers=table. +clone(bo.Modifiers or{})aw[bk]=bo return bj end local bj={}for bk=0,1,0.1 do table.insert(bj,ColorSequenceKeypoint.new( +bk,Color3.fromHSV(bk,1,1)))end function bi.AddColorPicker(bk,bl,bm)bm=aB:Validate(bm,aC.ColorPicker)local bn=bk local bo +,c=bn.TextLabel,{Value=bm.Default,Transparency=bm.Transparency or 0,Title=bm.Title,Callback=bm.Callback,Changed=bm. +Changed,Type='ColorPicker'}c.Hue,c.Sat,c.Vib=c.Value:ToHSV()local d=a1('TextButton',{BackgroundColor3=c.Value, +BorderColor3=aB:GetDarkerColor(c.Value),BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text='',Parent=bo})local e,f=a1( 'ImageLabel',{Image=az.GetAsset'TransparencyTexture',ImageTransparency=(1-c.Transparency),ScaleType=Enum.ScaleType.Tile, -Size=UDim2.fromScale(1,1),TileSize=UDim2.fromOffset(9,9),Parent=d}),aB:AddContextMenu(d,UDim2.fromOffset(bl.Transparency -and 256 or 234,0),function()return{0.5,d.AbsoluteSize.Y+1.5}end,1)f.List.Padding=UDim.new(0,8)c.ColorMenu=f a0( +Size=UDim2.fromScale(1,1),TileSize=UDim2.fromOffset(9,9),Parent=d}),aB:AddContextMenu(d,UDim2.fromOffset(bm.Transparency +and 256 or 234,0),function()return{0.5,d.AbsoluteSize.Y+1.5}end,1)f.List.Padding=UDim.new(0,8)c.ColorMenu=f a1( 'UIPadding',{PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,6), -Parent=f.Menu})if typeof(c.Title)=='string'then a0('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,8),Text=c. -Title,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=f.Menu})end local g=a0('Frame',{BackgroundTransparency= -1,Size=UDim2.new(1,0,0,200),Parent=f.Menu})a0('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim. -new(0,6),Parent=g})local h=a0('ImageButton',{BackgroundColor3=c.Value,Image=az.GetAsset'SaturationMap',Size=UDim2. -fromOffset(200,200),Parent=g})local i=a0('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size= -UDim2.fromOffset(6,6),Parent=h})a0('UICorner',{CornerRadius=UDim.new(1,0),Parent=i})a0('UIStroke',{Color='DarkColor', -Parent=i})local j=a0('TextButton',{Size=UDim2.fromOffset(16,200),Text='',Parent=g})a0('UIGradient',{Color=ColorSequence. -new(bi),Rotation=90,Parent=j})local k,l,m,n=(a0('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor', -BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,c.Hue),Size=UDim2.new(1,2,0,1),Parent=j}))if bl. -Transparency then l=a0('ImageButton',{Image=az.GetAsset'TransparencyTexture',ScaleType=Enum.ScaleType.Tile,Size=UDim2. -fromOffset(16,200),TileSize=UDim2.fromOffset(8,8),Parent=g})m=a0('Frame',{BackgroundColor3=c.Value,Size=UDim2.fromScale( -1,1),Parent=l})a0('UIGradient',{Rotation=90,Transparency=NumberSequence.new{NumberSequenceKeypoint.new(0,0), -NumberSequenceKeypoint.new(1,1)},Parent=m})n=a0('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor', +Parent=f.Menu})if typeof(c.Title)=='string'then a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,8),Text=c. +Title,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=f.Menu})end local g=a1('Frame',{BackgroundTransparency= +1,Size=UDim2.new(1,0,0,200),Parent=f.Menu})a1('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim. +new(0,6),Parent=g})local h=a1('ImageButton',{BackgroundColor3=c.Value,Image=az.GetAsset'SaturationMap',Size=UDim2. +fromOffset(200,200),Parent=g})local i=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size= +UDim2.fromOffset(6,6),Parent=h})a1('UICorner',{CornerRadius=UDim.new(1,0),Parent=i})a1('UIStroke',{Color='DarkColor', +Parent=i})local j=a1('TextButton',{Size=UDim2.fromOffset(16,200),Text='',Parent=g})a1('UIGradient',{Color=ColorSequence. +new(bj),Rotation=90,Parent=j})local k,l,m,n=(a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor', +BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,c.Hue),Size=UDim2.new(1,2,0,1),Parent=j}))if bm. +Transparency then l=a1('ImageButton',{Image=az.GetAsset'TransparencyTexture',ScaleType=Enum.ScaleType.Tile,Size=UDim2. +fromOffset(16,200),TileSize=UDim2.fromOffset(8,8),Parent=g})m=a1('Frame',{BackgroundColor3=c.Value,Size=UDim2.fromScale( +1,1),Parent=l})a1('UIGradient',{Rotation=90,Transparency=NumberSequence.new{NumberSequenceKeypoint.new(0,0), +NumberSequenceKeypoint.new(1,1)},Parent=m})n=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor', BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,c.Transparency),Size=UDim2.new(1,2,0,1),Parent=l -})end local o=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,20),Parent=f.Menu})a0('UIListLayout',{ +})end local o=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,20),Parent=f.Menu})a1('UIListLayout',{ FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Padding=UDim.new(0,8),Parent=o}) -local p,q,r=a0('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus= -false,Size=UDim2.fromScale(1,1),Text='#??????',TextSize=14,Parent=o}),a0('TextBox',{BackgroundColor3='MainColor', +local p,q,r=a1('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus= +false,Size=UDim2.fromScale(1,1),Text='#??????',TextSize=14,Parent=o}),a1('TextBox',{BackgroundColor3='MainColor', BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size=UDim2.fromScale(1,1),Text='?, ?, ?',TextSize= 14,Parent=o}),aB:AddContextMenu(d,UDim2.fromOffset(93,0),function()return{d.AbsoluteSize.X+1.5,0.5}end,1)c.ContextMenu=r -do local function s(t,u)local v=a0('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=t,TextSize=14, +do local function s(t,u)local v=a1('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=t,TextSize=14, Parent=r.Menu})v.MouseButton1Click:Connect(function()aB:SafeCallback(u)r:Close()end)end s('Copy color',function()aB. CopiedColor={c.Value,c.Transparency}end)c.SetValueRGB=function(...)end s('Paste color',function()c:SetValueRGB(aB. CopiedColor[1],aB.CopiedColor[2])end)if ao then s('Copy Hex',function()ao(tostring(c.Value:ToHex()))end)s('Copy RGB', @@ -1616,8 +1618,8 @@ i.Position=UDim2.fromScale(c.Sat,1-c.Vib)k.Position=UDim2.fromScale(0.5,c.Hue)if .Transparency)end p.Text='#'..c.Value:ToHex()q.Text=table.concat({math.floor(c.Value.R*255),math.floor(c.Value.G*255), math.floor(c.Value.B*255)},', ')end function c.Update(s)c:Display()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c. Changed,c.Value)end function c.OnChanged(s,t)c.Changed=t end function c.SetValue(s,t,u)if typeof(t)=='Color3'then c: -SetValueRGB(t,u)return end local v=Color3.fromHSV(t[1],t[2],t[3])c.Transparency=bl.Transparency and u or 0 c: -SetHSVFromRGB(v)c:Update()end function c.SetValueRGB(s,t,u)c.Transparency=bl.Transparency and u or 0 c:SetHSVFromRGB(t)c +SetValueRGB(t,u)return end local v=Color3.fromHSV(t[1],t[2],t[3])c.Transparency=bm.Transparency and u or 0 c: +SetHSVFromRGB(v)c:Update()end function c.SetValueRGB(s,t,u)c.Transparency=bm.Transparency and u or 0 c:SetHSVFromRGB(t)c :Update()end d.MouseButton1Click:Connect(f.Toggle)d.MouseButton2Click:Connect(r.Toggle)h.InputBegan:Connect(function(s: InputObject)while aM(s)do local t=h.AbsolutePosition.X local u=t+h.AbsoluteSize.X local v,w=math.clamp(as.X,t,u),h. AbsolutePosition.Y local x=w+h.AbsoluteSize.Y local y,z,A=math.clamp(as.Y,w,x),c.Sat,c.Vib c.Sat=(v-t)/(u-t)c.Vib=1-((y- @@ -1629,44 +1631,44 @@ InputObject)while aM(s)do local t,u=l.AbsolutePosition.Y,l.AbsolutePosition.Y+l. end p.FocusLost:Connect(function(s)if not s then return end local t,u=pcall(Color3.fromHex,p.Text)if t and typeof(u)== 'Color3'then c.Hue,c.Sat,c.Vib=u:ToHSV()end c:Update()end)q.FocusLost:Connect(function(s)if not s then return end local t,u,v=q.Text:match'(%d+),%s*(%d+),%s*(%d+)'if t and u and v then c:SetHSVFromRGB(Color3.fromRGB(t,u,v))end c:Update()end -)c:Display()if bm.Addons then table.insert(bm.Addons,c)end c.Default=c.Value aw[bk]=c return bj end bg.__index=bh bg. -__namecall=function(bj,bk,...)return bh[bk](...)end end local bh={}do local bi={}function bi.AddDivider(bj,bk)local bl= -bj local bm=bl.Container local bn=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,6),Parent=bm})if bk then -local c=a0('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Text=bk, -TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Center,Parent=bn})local d,e=aB:GetTextBounds(bk,c. -FontFace,c.TextSize,c.AbsoluteSize.X)local f=d//2+10 a0('Frame',{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3= +)c:Display()if bn.Addons then table.insert(bn.Addons,c)end c.Default=c.Value aw[bl]=c return bk end bh.__index=bi bh. +__namecall=function(bk,bl,...)return bi[bl](...)end end local bi={}do local bj={}function bj.AddDivider(bk,bl)local bm= +bk local bn=bm.Container local bo=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,6),Parent=bn})if bl then +local c=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Text=bl, +TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Center,Parent=bo})local d,e=aB:GetTextBounds(bl,c. +FontFace,c.TextSize,c.AbsoluteSize.X)local f=d//2+10 a1('Frame',{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3= 'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0,0.5),Size=UDim2.new(0.5,-f,0,2), -Parent=bn})a0('Frame',{AnchorPoint=Vector2.new(1,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor', -BorderSizePixel=1,Position=UDim2.fromScale(1,0.5),Size=UDim2.new(0.5,-f,0,2),Parent=bn})else a0('Frame',{AnchorPoint= +Parent=bo})a1('Frame',{AnchorPoint=Vector2.new(1,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Position=UDim2.fromScale(1,0.5),Size=UDim2.new(0.5,-f,0,2),Parent=bo})else a1('Frame',{AnchorPoint= Vector2.new(0,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0 -,0.5),Size=UDim2.new(1,0,0,2),Parent=bn})end bl:Resize()table.insert(bl.Elements,{Holder=bn,Type='Divider'})end function -bi.AddLabel(bj,...)local bk,bl,bm,bn={},{},select(1,...),select(2,...)if typeof(bm)=='table'or typeof(bn)=='table'then -local c=typeof(bm)=='table'and bm or bn bk.Text=c.Text or''bk.DoesWrap=c.DoesWrap or false bk.Size=c.Size or 14 bk. -Visible=c.Visible or true bk.Idx=typeof(bn)=='table'and bm or nil else bk.Text=bm or''bk.DoesWrap=bn or false bk.Size=14 -bk.Visible=true bk.Idx=select(3,...)or nil end local c=bj local d,e=c.Container,{Text=bk.Text,DoesWrap=bk.DoesWrap, -Addons=bl,Visible=bk.Visible,Type='Label'}local f=a0('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text -=e.Text,TextSize=bk.Size,TextWrapped=e.DoesWrap,TextXAlignment=c.IsKeyTab and Enum.TextXAlignment.Center or Enum. +,0.5),Size=UDim2.new(1,0,0,2),Parent=bo})end bm:Resize()table.insert(bm.Elements,{Holder=bo,Type='Divider'})end function +bj.AddLabel(bk,...)local bl,bm,bn,bo={},{},select(1,...),select(2,...)if typeof(bn)=='table'or typeof(bo)=='table'then +local c=typeof(bn)=='table'and bn or bo bl.Text=c.Text or''bl.DoesWrap=c.DoesWrap or false bl.Size=c.Size or 14 bl. +Visible=c.Visible or true bl.Idx=typeof(bo)=='table'and bn or nil else bl.Text=bn or''bl.DoesWrap=bo or false bl.Size=14 +bl.Visible=true bl.Idx=select(3,...)or nil end local c=bk local d,e=c.Container,{Text=bl.Text,DoesWrap=bl.DoesWrap, +Addons=bm,Visible=bl.Visible,Type='Label'}local f=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text +=e.Text,TextSize=bl.Size,TextWrapped=e.DoesWrap,TextXAlignment=c.IsKeyTab and Enum.TextXAlignment.Center or Enum. TextXAlignment.Left,Parent=d})function e.SetVisible(g,h:boolean)e.Visible=h f.Visible=e.Visible c:Resize()end function e .SetText(g,h:string)e.Text=h f.Text=h if e.DoesWrap then local i,j=aB:GetTextBounds(e.Text,f.FontFace,f.TextSize,f. AbsoluteSize.X)f.Size=UDim2.new(1,0,0,j+4)end c:Resize()end if e.DoesWrap then local g,h=aB:GetTextBounds(e.Text,f. FontFace,f.TextSize,f.AbsoluteSize.X)f.Size=UDim2.new(1,0,0,h+4)local i=f.AbsoluteSize f:GetPropertyChangedSignal 'AbsoluteSize':Connect(function()if f.AbsoluteSize==i then return end local j,k=aB:GetTextBounds(e.Text,f.FontFace,f. -TextSize,f.AbsoluteSize.X)f.Size=UDim2.new(1,0,0,k+4)i=f.AbsoluteSize c:Resize()end)else a0('UIListLayout',{ +TextSize,f.AbsoluteSize.X)f.Size=UDim2.new(1,0,0,k+4)i=f.AbsoluteSize c:Resize()end)else a1('UIListLayout',{ FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,6), -Parent=f})end c:Resize()e.TextLabel=f e.Container=d if not bk.DoesWrap then setmetatable(e,bg)end e.Holder=f table. -insert(c.Elements,e)if bk.Idx then at[bk.Idx]=e else table.insert(at,e)end return e end function bi.AddButton(bj,...) -local function bk(...)local bl,bm,bn={},select(1,...),select(2,...)if typeof(bm)=='table'or typeof(bn)=='table'then -local c=typeof(bm)=='table'and bm or bn bl.Text=c.Text or''bl.Func=c.Func or c.Callback or function()end bl.DoubleClick= -c.DoubleClick bl.Tooltip=c.Tooltip bl.DisabledTooltip=c.DisabledTooltip bl.Risky=c.Risky or false bl.Disabled=c.Disabled -or false bl.Visible=c.Visible or true bl.Idx=typeof(bn)=='table'and bm or nil else bl.Text=bm or''bl.Func=bn or function -()end bl.DoubleClick=false bl.Tooltip=nil bl.DisabledTooltip=nil bl.Risky=false bl.Disabled=false bl.Visible=true bl.Idx -=select(3,...)or nil end return bl end local bl,bm=bk(...),bj local bn,c=bm.Container,{Text=bl.Text,Func=bl.Func, -DoubleClick=bl.DoubleClick,Tooltip=bl.Tooltip,DisabledTooltip=bl.DisabledTooltip,TooltipTable=nil,Risky=bl.Risky, -Disabled=bl.Disabled,Visible=bl.Visible,Tween=nil,Type='Button'}local d=a0('Frame',{BackgroundTransparency=1,Size=UDim2. -new(1,0,0,21),Parent=bn})a0('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum. -UIFlexAlignment.Fill,Padding=UDim.new(0,9),Parent=d})local function e(f)local g=a0('TextButton',{Active=not f.Disabled, +Parent=f})end c:Resize()e.TextLabel=f e.Container=d if not bl.DoesWrap then setmetatable(e,bh)end e.Holder=f table. +insert(c.Elements,e)if bl.Idx then at[bl.Idx]=e else table.insert(at,e)end return e end function bj.AddButton(bk,...) +local function bl(...)local bm,bn,bo={},select(1,...),select(2,...)if typeof(bn)=='table'or typeof(bo)=='table'then +local c=typeof(bn)=='table'and bn or bo bm.Text=c.Text or''bm.Func=c.Func or c.Callback or function()end bm.DoubleClick= +c.DoubleClick bm.Tooltip=c.Tooltip bm.DisabledTooltip=c.DisabledTooltip bm.Risky=c.Risky or false bm.Disabled=c.Disabled +or false bm.Visible=c.Visible or true bm.Idx=typeof(bo)=='table'and bn or nil else bm.Text=bn or''bm.Func=bo or function +()end bm.DoubleClick=false bm.Tooltip=nil bm.DisabledTooltip=nil bm.Risky=false bm.Disabled=false bm.Visible=true bm.Idx +=select(3,...)or nil end return bm end local bm,bn=bl(...),bk local bo,c=bn.Container,{Text=bm.Text,Func=bm.Func, +DoubleClick=bm.DoubleClick,Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip,TooltipTable=nil,Risky=bm.Risky, +Disabled=bm.Disabled,Visible=bm.Visible,Tween=nil,Type='Button'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2. +new(1,0,0,21),Parent=bo})a1('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum. +UIFlexAlignment.Fill,Padding=UDim.new(0,9),Parent=d})local function e(f)local g=a1('TextButton',{Active=not f.Disabled, BackgroundColor3=f.Disabled and'BackgroundColor'or'MainColor',Size=UDim2.fromScale(1,1),Text=f.Text,TextSize=14, -TextTransparency=0.4,Visible=f.Visible,Parent=d})local h=a0('UIStroke',{Color='OutlineColor',Transparency=f.Disabled and +TextTransparency=0.4,Visible=f.Visible,Parent=d})local h=a1('UIStroke',{Color='OutlineColor',Transparency=f.Disabled and 0.5 or 0,Parent=g})return g,h end local function f(g)g.Base.MouseEnter:Connect(function()if g.Disabled then return end g .Tween=am:Create(g.Base,aB.TweenInfo,{TextTransparency=0})g.Tween:Play()end)g.Base.MouseLeave:Connect(function()if g. Disabled then return end g.Tween=am:Create(g.Base,aB.TweenInfo,{TextTransparency=0.4})g.Tween:Play()end)g.Base. @@ -1675,13 +1677,13 @@ MouseButton1Click:Connect(function()if g.Disabled or g.Locked then return end if Base.MouseButton1Click,0.5)g.Base.Text=g.Text g.Base.TextColor3=g.Risky and aB.Scheme.RedColor or aB.Scheme.FontColor aB .Registry[g.Base].TextColor3=g.Risky and'RedColor'or'FontColor'if h then aB:SafeCallback(g.Func)end ah.RenderStepped: Wait()g.Locked=false return end aB:SafeCallback(g.Func)end)end c.Base,c.Stroke=e(c)f(c)function c.AddButton(g,...)local -h=bk(...)local i={Text=h.Text,Func=h.Func,DoubleClick=h.DoubleClick,Tooltip=h.Tooltip,DisabledTooltip=h.DisabledTooltip, +h=bl(...)local i={Text=h.Text,Func=h.Func,DoubleClick=h.DoubleClick,Tooltip=h.Tooltip,DisabledTooltip=h.DisabledTooltip, TooltipTable=nil,Risky=h.Risky,Disabled=h.Disabled,Visible=h.Visible,Tween=nil,Type='SubButton'}c.SubButton=i i.Base,i. Stroke=e(i)f(i)function i.UpdateColors(j)if aB.Unloaded then return end aO(i.Tween)i.Base.BackgroundColor3=i.Disabled and aB.Scheme.BackgroundColor or aB.Scheme.MainColor i.Base.TextTransparency=i.Disabled and 0.8 or 0.4 i.Stroke. Transparency=i.Disabled and 0.5 or 0 aB.Registry[i.Base].BackgroundColor3=i.Disabled and'BackgroundColor'or'MainColor' end function i.SetDisabled(j,k:boolean)i.Disabled=k if i.TooltipTable then i.TooltipTable.Disabled=i.Disabled end i.Base -.Active=not i.Disabled i:UpdateColors()end function i.SetVisible(j,k:boolean)i.Visible=k i.Base.Visible=i.Visible bm: +.Active=not i.Disabled i:UpdateColors()end function i.SetVisible(j,k:boolean)i.Visible=k i.Base.Visible=i.Visible bn: Resize()end function i.SetText(j,k:string)i.Text=k i.Base.Text=k end if typeof(i.Tooltip)=='string'or typeof(i. DisabledTooltip)=='string'then i.TooltipTable=aB:AddTooltip(i.Tooltip,i.DisabledTooltip,i.Base)i.TooltipTable.Disabled=i .Disabled end if i.Risky then i.Base.TextColor3=aB.Scheme.RedColor aB.Registry[i.Base].TextColor3='RedColor'end i: @@ -1690,21 +1692,21 @@ then return end aO(c.Tween)c.Base.BackgroundColor3=c.Disabled and aB.Scheme.Back Base.TextTransparency=c.Disabled and 0.8 or 0.4 c.Stroke.Transparency=c.Disabled and 0.5 or 0 aB.Registry[c.Base]. BackgroundColor3=c.Disabled and'BackgroundColor'or'MainColor'end function c.SetDisabled(g,h:boolean)c.Disabled=h if c. TooltipTable then c.TooltipTable.Disabled=c.Disabled end c.Base.Active=not c.Disabled c:UpdateColors()end function c. -SetVisible(g,h:boolean)c.Visible=h d.Visible=c.Visible bm:Resize()end function c.SetText(g,h:string)c.Text=h c.Base.Text +SetVisible(g,h:boolean)c.Visible=h d.Visible=c.Visible bn:Resize()end function c.SetText(g,h:string)c.Text=h c.Base.Text =h end if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c .DisabledTooltip,c.Base)c.TooltipTable.Disabled=c.Disabled end if c.Risky then c.Base.TextColor3=aB.Scheme.RedColor aB. -Registry[c.Base].TextColor3='RedColor'end c:UpdateColors()bm:Resize()c.Holder=d table.insert(bm.Elements,c)if bl.Idx -then au[bl.Idx]=c else table.insert(au,c)end return c end function bi.AddCheckbox(bj,bk,bl)bl=aB:Validate(bl,aC.Toggle) -local bm=bj local bn,c=bm.Container,{Text=bl.Text,Value=bl.Default,Tooltip=bl.Tooltip,DisabledTooltip=bl.DisabledTooltip -,TooltipTable=nil,Callback=bl.Callback,Changed=bl.Changed,Risky=bl.Risky,Disabled=bl.Disabled,Visible=bl.Visible,Addons= -{},Type='Toggle'}local d=a0('TextButton',{Active=not c.Disabled,BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text= -'',Visible=c.Visible,Parent=bn})local e=a0('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(26,0),Size= -UDim2.new(1,-26,1,0),Text=c.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})a0( +Registry[c.Base].TextColor3='RedColor'end c:UpdateColors()bn:Resize()c.Holder=d table.insert(bn.Elements,c)if bm.Idx +then au[bm.Idx]=c else table.insert(au,c)end return c end function bj.AddCheckbox(bk,bl,bm)bm=aB:Validate(bm,aC.Toggle) +local bn=bk local bo,c=bn.Container,{Text=bm.Text,Value=bm.Default,Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip +,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Risky=bm.Risky,Disabled=bm.Disabled,Visible=bm.Visible,Addons= +{},Type='Toggle'}local d=a1('TextButton',{Active=not c.Disabled,BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text= +'',Visible=c.Visible,Parent=bo})local e=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(26,0),Size= +UDim2.new(1,-26,1,0),Text=c.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})a1( 'UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding= -UDim.new(0,6),Parent=e})local f=a0('Frame',{BackgroundColor3='MainColor',Size=UDim2.fromScale(1,1),SizeConstraint=Enum. -SizeConstraint.RelativeYY,Parent=d})a0('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius/2),Parent=f})local g,h=a0( -'UIStroke',{Color='OutlineColor',Parent=f}),a0('ImageLabel',{Image=bb and bb.Url or'',ImageColor3='FontColor', -ImageRectOffset=bb and bb.ImageRectOffset or Vector2.zero,ImageRectSize=bb and bb.ImageRectSize or Vector2.zero, +UDim.new(0,6),Parent=e})local f=a1('Frame',{BackgroundColor3='MainColor',Size=UDim2.fromScale(1,1),SizeConstraint=Enum. +SizeConstraint.RelativeYY,Parent=d})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius/2),Parent=f})local g,h=a1( +'UIStroke',{Color='OutlineColor',Parent=f}),a1('ImageLabel',{Image=bc and bc.Url or'',ImageColor3='FontColor', +ImageRectOffset=bc and bc.ImageRectOffset or Vector2.zero,ImageRectSize=bc and bc.ImageRectSize or Vector2.zero, ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=f})function c.UpdateColors(i)c: Display()end function c.Display(i)if aB.Unloaded then return end g.Transparency=c.Disabled and 0.5 or 0 if c.Disabled then e.TextTransparency=0.8 h.ImageTransparency=c.Value and 0.8 or 1 f.BackgroundColor3=aB.Scheme.BackgroundColor aB. @@ -1715,23 +1717,23 @@ Disabled then return end c.Value=j c:Display()for k,l in c.Addons do if l.Type== Toggled=c.Value l:Update()end end aB:UpdateDependencyBoxes()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed ,c.Value)end function c.SetDisabled(i,j:boolean)c.Disabled=j if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end for k,l in c.Addons do if l.Type=='KeyPicker'and l.SyncToggleState then l:Update()end end d.Active=not c.Disabled c: -Display()end function c.SetVisible(i,j:boolean)c.Visible=j d.Visible=c.Visible bm:Resize()end function c.SetText(i,j: +Display()end function c.SetVisible(i,j:boolean)c.Visible=j d.Visible=c.Visible bn:Resize()end function c.SetText(i,j: string)c.Text=j e.Text=j end d.MouseButton1Click:Connect(function()if c.Disabled then return end c:SetValue(not c.Value) end)if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c. DisabledTooltip,d)c.TooltipTable.Disabled=c.Disabled end if c.Risky then e.TextColor3=aB.Scheme.RedColor aB.Registry[e]. -TextColor3='RedColor'end c:Display()bm:Resize()c.TextLabel=e c.Container=bn setmetatable(c,bg)c.Holder=d table.insert(bm -.Elements,c)c.Default=c.Value av[bk]=c return c end function bi.AddToggle(bj,bk,bl)if aB.ForceCheckbox then return bi. -AddCheckbox(bj,bk,bl)end bl=aB:Validate(bl,aC.Toggle)local bm=bj local bn,c=bm.Container,{Text=bl.Text,Value=bl.Default, -Tooltip=bl.Tooltip,DisabledTooltip=bl.DisabledTooltip,TooltipTable=nil,Callback=bl.Callback,Changed=bl.Changed,Risky=bl. -Risky,Disabled=bl.Disabled,Visible=bl.Visible,Addons={},Type='Toggle'}local d=a0('TextButton',{Active=not c.Disabled, -BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text='',Visible=c.Visible,Parent=bn})local e=a0('TextLabel',{ +TextColor3='RedColor'end c:Display()bn:Resize()c.TextLabel=e c.Container=bo setmetatable(c,bh)c.Holder=d table.insert(bn +.Elements,c)c.Default=c.Value av[bl]=c return c end function bj.AddToggle(bk,bl,bm)if aB.ForceCheckbox then return bj. +AddCheckbox(bk,bl,bm)end bm=aB:Validate(bm,aC.Toggle)local bn=bk local bo,c=bn.Container,{Text=bm.Text,Value=bm.Default, +Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Risky=bm. +Risky,Disabled=bm.Disabled,Visible=bm.Visible,Addons={},Type='Toggle'}local d=a1('TextButton',{Active=not c.Disabled, +BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text='',Visible=c.Visible,Parent=bo})local e=a1('TextLabel',{ BackgroundTransparency=1,Size=UDim2.new(1,-40,1,0),Text=c.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum. -TextXAlignment.Left,Parent=d})a0('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum. -HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=e})local f=a0('Frame',{AnchorPoint=Vector2.new(1,0), -BackgroundColor3='MainColor',Position=UDim2.fromScale(1,0),Size=UDim2.fromOffset(32,18),Parent=d})a0('UICorner',{ -CornerRadius=UDim.new(1,0),Parent=f})a0('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight= -UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=f})local g,h=a0('UIStroke',{Color='OutlineColor',Parent=f}),a0('Frame',{ -BackgroundColor3='FontColor',Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=f})a0( +TextXAlignment.Left,Parent=d})a1('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum. +HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=e})local f=a1('Frame',{AnchorPoint=Vector2.new(1,0), +BackgroundColor3='MainColor',Position=UDim2.fromScale(1,0),Size=UDim2.fromOffset(32,18),Parent=d})a1('UICorner',{ +CornerRadius=UDim.new(1,0),Parent=f})a1('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight= +UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=f})local g,h=a1('UIStroke',{Color='OutlineColor',Parent=f}),a1('Frame',{ +BackgroundColor3='FontColor',Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=f})a1( 'UICorner',{CornerRadius=UDim.new(1,0),Parent=h})function c.UpdateColors(i)c:Display()end function c.Display(i)if aB. Unloaded then return end local j=c.Value and 1 or 0 f.BackgroundTransparency=c.Disabled and 0.75 or 0 g.Transparency=c. Disabled and 0.75 or 0 f.BackgroundColor3=c.Value and aB.Scheme.AccentColor or aB.Scheme.MainColor g.Color=c.Value and @@ -1746,49 +1748,49 @@ Addons do if l.Type=='KeyPicker'and l.SyncToggleState then l.Toggled=c.Value l:U )aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end function c.SetDisabled(i,j:boolean)c.Disabled= j if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end for k,l in c.Addons do if l.Type=='KeyPicker'and l. SyncToggleState then l:Update()end end d.Active=not c.Disabled c:Display()end function c.SetVisible(i,j:boolean)c. -Visible=j d.Visible=c.Visible bm:Resize()end function c.SetText(i,j:string)c.Text=j e.Text=j end d.MouseButton1Click: +Visible=j d.Visible=c.Visible bn:Resize()end function c.SetText(i,j:string)c.Text=j e.Text=j end d.MouseButton1Click: Connect(function()if c.Disabled then return end c:SetValue(not c.Value)end)if typeof(c.Tooltip)=='string'or typeof(c. DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c.DisabledTooltip,d)c.TooltipTable.Disabled=c. -Disabled end if c.Risky then e.TextColor3=aB.Scheme.RedColor aB.Registry[e].TextColor3='RedColor'end c:Display()bm: -Resize()c.TextLabel=e c.Container=bn setmetatable(c,bg)c.Holder=d table.insert(bm.Elements,c)c.Default=c.Value av[bk]=c -return c end function bi.AddInput(bj,bk,bl)bl=aB:Validate(bl,aC.Input)local bm=bj local bn,c=bm.Container,{Text=bl.Text, -Value=bl.Default,Finished=bl.Finished,Numeric=bl.Numeric,ClearTextOnFocus=bl.ClearTextOnFocus,Placeholder=bl.Placeholder -,AllowEmpty=bl.AllowEmpty,EmptyReset=bl.EmptyReset,Tooltip=bl.Tooltip,DisabledTooltip=bl.DisabledTooltip,TooltipTable= -nil,Callback=bl.Callback,Changed=bl.Changed,Disabled=bl.Disabled,Visible=bl.Visible,Type='Input'}local d=a0('Frame',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,39),Visible=c.Visible,Parent=bn})local e,f=a0('TextLabel',{ +Disabled end if c.Risky then e.TextColor3=aB.Scheme.RedColor aB.Registry[e].TextColor3='RedColor'end c:Display()bn: +Resize()c.TextLabel=e c.Container=bo setmetatable(c,bh)c.Holder=d table.insert(bn.Elements,c)c.Default=c.Value av[bl]=c +return c end function bj.AddInput(bk,bl,bm)bm=aB:Validate(bm,aC.Input)local bn=bk local bo,c=bn.Container,{Text=bm.Text, +Value=bm.Default,Finished=bm.Finished,Numeric=bm.Numeric,ClearTextOnFocus=bm.ClearTextOnFocus,Placeholder=bm.Placeholder +,AllowEmpty=bm.AllowEmpty,EmptyReset=bm.EmptyReset,Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip,TooltipTable= +nil,Callback=bm.Callback,Changed=bm.Changed,Disabled=bm.Disabled,Visible=bm.Visible,Type='Input'}local d=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,39),Visible=c.Visible,Parent=bo})local e,f=a1('TextLabel',{ BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent -=d}),a0('TextBox',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel +=d}),a1('TextBox',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel =1,ClearTextOnFocus=not c.Disabled and c.ClearTextOnFocus,PlaceholderText=c.Placeholder,Position=UDim2.fromScale(0,1), Size=UDim2.new(1,0,0,21),Text=c.Value,TextEditable=not c.Disabled,TextScaled=true,TextXAlignment=Enum.TextXAlignment. -Left,Parent=d})a0('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8), +Left,Parent=d})a1('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8), PaddingTop=UDim.new(0,4),Parent=f})function c.UpdateColors(g)if aB.Unloaded then return end e.TextTransparency=c. Disabled and 0.8 or 0 f.TextTransparency=c.Disabled and 0.8 or 0 end function c.OnChanged(g,h)c.Changed=h end function c -.SetValue(g,h)if not c.AllowEmpty and aP(h)==''then h=c.EmptyReset end if bl.MaxLength and#h>bl.MaxLength then h=h:sub(1 -,bl.MaxLength)end if c.Numeric then if#tostring(h)>0 and not tonumber(h)then h=c.Value end end c.Value=h f.Text=h if not +.SetValue(g,h)if not c.AllowEmpty and aP(h)==''then h=c.EmptyReset end if bm.MaxLength and#h>bm.MaxLength then h=h:sub(1 +,bm.MaxLength)end if c.Numeric then if#tostring(h)>0 and not tonumber(h)then h=c.Value end end c.Value=h f.Text=h if not c.Disabled then aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end end function c.SetDisabled(g,h: boolean)c.Disabled=h if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end f.ClearTextOnFocus=not c.Disabled and c.ClearTextOnFocus f.TextEditable=not c.Disabled c:UpdateColors()end function c.SetVisible(g,h:boolean)c.Visible=h d. -Visible=c.Visible bm:Resize()end function c.SetText(g,h:string)c.Text=h e.Text=h end if c.Finished then f.FocusLost: +Visible=c.Visible bn:Resize()end function c.SetText(g,h:string)c.Text=h e.Text=h end if c.Finished then f.FocusLost: Connect(function(g)if not g then return end c:SetValue(f.Text)end)else f:GetPropertyChangedSignal'Text':Connect(function ()if f.Text==c.Value then return end c:SetValue(f.Text)end)end if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip -)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end bm: -Resize()c.Holder=d table.insert(bm.Elements,c)c.Default=c.Value aw[bk]=c return c end function bi.AddSlider(bj,bk,bl)bl= -aB:Validate(bl,aC.Slider)local bm=bj local bn,c=bm.Container,{Text=bl.Text,Value=bl.Default,Min=bl.Min,Max=bl.Max,Prefix -=bl.Prefix,Suffix=bl.Suffix,Compact=bl.Compact,Rounding=bl.Rounding,Tooltip=bl.Tooltip,DisabledTooltip=bl. -DisabledTooltip,TooltipTable=nil,Callback=bl.Callback,Changed=bl.Changed,Disabled=bl.Disabled,Visible=bl.Visible,Type= -'Slider'}local d,e=(a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bl.Compact and 13 or 31),Visible=c.Visible -,Parent=bn}))if not bl.Compact then e=a0('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text, -TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})end local f=a0('TextButton',{Active=not c.Disabled, +)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end bn: +Resize()c.Holder=d table.insert(bn.Elements,c)c.Default=c.Value aw[bl]=c return c end function bj.AddSlider(bk,bl,bm)bm= +aB:Validate(bm,aC.Slider)local bn=bk local bo,c=bn.Container,{Text=bm.Text,Value=bm.Default,Min=bm.Min,Max=bm.Max,Prefix +=bm.Prefix,Suffix=bm.Suffix,Compact=bm.Compact,Rounding=bm.Rounding,Tooltip=bm.Tooltip,DisabledTooltip=bm. +DisabledTooltip,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Disabled=bm.Disabled,Visible=bm.Visible,Type= +'Slider'}local d,e=(a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Compact and 13 or 31),Visible=c.Visible +,Parent=bo}))if not bm.Compact then e=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text, +TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})end local f=a1('TextButton',{Active=not c.Disabled, AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2. -fromScale(0,1),Size=UDim2.new(1,0,0,13),Text='',Parent=d})local g=a0('TextLabel',{BackgroundTransparency=1,Size=UDim2. -fromScale(1,1),Text='',TextSize=14,ZIndex=2,Parent=f})a0('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual, -Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=g})local h=a0('Frame',{BackgroundColor3='AccentColor',Size +fromScale(0,1),Size=UDim2.new(1,0,0,13),Text='',Parent=d})local g=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2. +fromScale(1,1),Text='',TextSize=14,ZIndex=2,Parent=f})a1('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual, +Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=g})local h=a1('Frame',{BackgroundColor3='AccentColor',Size =UDim2.fromScale(0.5,1),Parent=f})function c.UpdateColors(i)if aB.Unloaded then return end if e then e.TextTransparency= c.Disabled and 0.8 or 0 end g.TextTransparency=c.Disabled and 0.8 or 0 h.BackgroundColor3=c.Disabled and aB.Scheme. OutlineColor or aB.Scheme.AccentColor aB.Registry[h].BackgroundColor3=c.Disabled and'OutlineColor'or'AccentColor'end -function c.Display(i)if aB.Unloaded then return end local j if bl.FormatDisplayValue then j=bl.FormatDisplayValue(c,c. -Value)end if j then g.Text=tostring(j)else if bl.Compact then g.Text=string.format('%s: %s%s%s',c.Text,c.Prefix,c.Value, -c.Suffix)elseif bl.HideMax then g.Text=string.format('%s%s%s',c.Prefix,c.Value,c.Suffix)else g.Text=string.format( +function c.Display(i)if aB.Unloaded then return end local j if bm.FormatDisplayValue then j=bm.FormatDisplayValue(c,c. +Value)end if j then g.Text=tostring(j)else if bm.Compact then g.Text=string.format('%s: %s%s%s',c.Text,c.Prefix,c.Value, +c.Suffix)elseif bm.HideMax then g.Text=string.format('%s%s%s',c.Prefix,c.Value,c.Suffix)else g.Text=string.format( '%s%s%s/%s%s%s',c.Prefix,c.Value,c.Suffix,c.Prefix,c.Max,c.Suffix)end end local k=(c.Value-c.Min)/(c.Max-c.Min)h.Size= UDim2.fromScale(k,1)end function c.OnChanged(i,j)c.Changed=j end function c.SetMax(i,j)assert(j>c.Min, 'Max value cannot be less than the current min value.')c:SetValue(math.clamp(c.Value,c.Min,j))c.Max=j c:Display()end @@ -1797,53 +1799,53 @@ Value,j,c.Max))c.Min=j c:Display()end function c.SetValue(i,j)if c.Disabled then or k==c.Value then return end k=math.clamp(k,c.Min,c.Max)c.Value=k c:Display()aB:SafeCallback(c.Callback,c.Value)aB: SafeCallback(c.Changed,c.Value)end function c.SetDisabled(i,j:boolean)c.Disabled=j if c.TooltipTable then c.TooltipTable .Disabled=c.Disabled end f.Active=not c.Disabled c:UpdateColors()end function c.SetVisible(i,j:boolean)c.Visible=j d. -Visible=c.Visible bm:Resize()end function c.SetText(i,j:string)c.Text=j if e then e.Text=j return end c:Display()end +Visible=c.Visible bn:Resize()end function c.SetText(i,j:string)c.Text=j if e then e.Text=j return end c:Display()end function c.SetPrefix(i,j:string)c.Prefix=j c:Display()end function c.SetSuffix(i,j:string)c.Suffix=j c:Display()end f. InputBegan:Connect(function(i:InputObject)if not aK(i)or c.Disabled then return end for j,k in aB.ActiveTab.Sides do k. ScrollingEnabled=false end while aM(i)do local j=as.X local k,l=math.clamp((j-f.AbsolutePosition.X)/f.AbsoluteSize.X,0,1 ),c.Value c.Value=aR(c.Min+((c.Max-c.Min)*k),c.Rounding)c:Display()if c.Value~=l then aB:SafeCallback(c.Callback,c.Value )aB:SafeCallback(c.Changed,c.Value)end ah.RenderStepped:Wait()end for j,k in aB.ActiveTab.Sides do k.ScrollingEnabled= true end end)if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c. -Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end c:UpdateColors()c:Display()bm:Resize()c.Holder=d -table.insert(bm.Elements,c)c.Default=c.Value aw[bk]=c return c end function bi.AddDropdown(bj,bk,bl)bl=aB:Validate(bl,aC -.Dropdown)local bm=bj local bn=bm.Container if bl.SpecialType=='Player'then bl.Values=aS(bl.ExcludeLocalPlayer)bl. -AllowNull=true elseif bl.SpecialType=='Team'then bl.Values=aT()bl.AllowNull=true end local c={Text=typeof(bl.Text)== -'string'and bl.Text or nil,Value=bl.Multi and{}or nil,Values=bl.Values,DisabledValues=bl.DisabledValues,Multi=bl.Multi, -SpecialType=bl.SpecialType,ExcludeLocalPlayer=bl.ExcludeLocalPlayer,Tooltip=bl.Tooltip,DisabledTooltip=bl. -DisabledTooltip,TooltipTable=nil,Callback=bl.Callback,Changed=bl.Changed,Disabled=bl.Disabled,Visible=bl.Visible,Type= -'Dropdown'}local d=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,c.Text and 39 or 21),Visible=c.Visible, -Parent=bn})local e,f=a0('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text,TextSize=14, -TextXAlignment=Enum.TextXAlignment.Left,Visible=not not bl.Text,Parent=d}),a0('TextButton',{Active=not c.Disabled, +Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end c:UpdateColors()c:Display()bn:Resize()c.Holder=d +table.insert(bn.Elements,c)c.Default=c.Value aw[bl]=c return c end function bj.AddDropdown(bk,bl,bm)bm=aB:Validate(bm,aC +.Dropdown)local bn=bk local bo=bn.Container if bm.SpecialType=='Player'then bm.Values=aS(bm.ExcludeLocalPlayer)bm. +AllowNull=true elseif bm.SpecialType=='Team'then bm.Values=aT()bm.AllowNull=true end local c={Text=typeof(bm.Text)== +'string'and bm.Text or nil,Value=bm.Multi and{}or nil,Values=bm.Values,DisabledValues=bm.DisabledValues,Multi=bm.Multi, +SpecialType=bm.SpecialType,ExcludeLocalPlayer=bm.ExcludeLocalPlayer,Tooltip=bm.Tooltip,DisabledTooltip=bm. +DisabledTooltip,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Disabled=bm.Disabled,Visible=bm.Visible,Type= +'Dropdown'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,c.Text and 39 or 21),Visible=c.Visible, +Parent=bo})local e,f=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text,TextSize=14, +TextXAlignment=Enum.TextXAlignment.Left,Visible=not not bm.Text,Parent=d}),a1('TextButton',{Active=not c.Disabled, AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2. -fromScale(0,1),Size=UDim2.new(1,0,0,21),Text='---',TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})a0( -'UIPadding',{PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,4),Parent=f})local g,h=(a0('ImageLabel',{AnchorPoint= -Vector2.new(1,0.5),Image=bc and bc.Url or'',ImageColor3='FontColor',ImageRectOffset=bc and bc.ImageRectOffset or Vector2 -.zero,ImageRectSize=bc and bc.ImageRectSize or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromScale(1,0.5),Size= -UDim2.fromOffset(16,16),Parent=f}))if bl.Searchable then h=a0('TextBox',{BackgroundTransparency=1,PlaceholderText= +fromScale(0,1),Size=UDim2.new(1,0,0,21),Text='---',TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})a1( +'UIPadding',{PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,4),Parent=f})local g,h=(a1('ImageLabel',{AnchorPoint= +Vector2.new(1,0.5),Image=bd and bd.Url or'',ImageColor3='FontColor',ImageRectOffset=bd and bd.ImageRectOffset or Vector2 +.zero,ImageRectSize=bd and bd.ImageRectSize or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromScale(1,0.5),Size= +UDim2.fromOffset(16,16),Parent=f}))if bm.Searchable then h=a1('TextBox',{BackgroundTransparency=1,PlaceholderText= 'Search...',Position=UDim2.fromOffset(-8,0),Size=UDim2.new(1,-12,1,0),TextSize=14,TextXAlignment=Enum.TextXAlignment. -Left,Visible=false,Parent=f})a0('UIPadding',{PaddingLeft=UDim.new(0,8),Parent=h})end local i=aB:AddContextMenu(f, +Left,Visible=false,Parent=f})a1('UIPadding',{PaddingLeft=UDim.new(0,8),Parent=h})end local i=aB:AddContextMenu(f, function()return UDim2.fromOffset(f.AbsoluteSize.X/aB.DPIScale,0)end,function()return{0.5,f.AbsoluteSize.Y+1.5}end,2, function(i:boolean)f.TextTransparency=(i and h)and 1 or 0 g.ImageTransparency=i and 0 or 0.5 g.Rotation=i and 180 or 0 if h then h.Text=''h.Visible=i end end)c.Menu=i function c.RecalculateListSize(j,k)local l=math.clamp((k or aN(c.Values) -)*21,0,bl.MaxVisibleDropdownItems*21)i:SetSize(function()return UDim2.fromOffset(f.AbsoluteSize.X/aB.DPIScale,l)end)end +)*21,0,bm.MaxVisibleDropdownItems*21)i:SetSize(function()return UDim2.fromOffset(f.AbsoluteSize.X/aB.DPIScale,l)end)end function c.UpdateColors(j)if aB.Unloaded then return end e.TextTransparency=c.Disabled and 0.8 or 0 f.TextTransparency=c .Disabled and 0.8 or 0 g.ImageTransparency=c.Disabled and 0.8 or i.Active and 0 or 0.5 end function c.Display(j)if aB. -Unloaded then return end local k=''if bl.Multi then for l,m in c.Values do if c.Value[m]then k=k..(bl.FormatDisplayValue -and tostring(bl.FormatDisplayValue(m))or tostring(m))..', 'end end k=k:sub(1,#k-2)else k=c.Value and tostring(c.Value)or -''if k~=''and bl.FormatDisplayValue then k=tostring(bl.FormatDisplayValue(k))end end if#k>25 then k=k:sub(1,22)..'...' -end f.Text=(k==''and'---'or k)end function c.OnChanged(j,k)c.Changed=k end function c.GetActiveValues(j)if bl.Multi then +Unloaded then return end local k=''if bm.Multi then for l,m in c.Values do if c.Value[m]then k=k..(bm.FormatDisplayValue +and tostring(bm.FormatDisplayValue(m))or tostring(m))..', 'end end k=k:sub(1,#k-2)else k=c.Value and tostring(c.Value)or +''if k~=''and bm.FormatDisplayValue then k=tostring(bm.FormatDisplayValue(k))end end if#k>25 then k=k:sub(1,22)..'...' +end f.Text=(k==''and'---'or k)end function c.OnChanged(j,k)c.Changed=k end function c.GetActiveValues(j)if bm.Multi then local k={}for l,m in c.Value do table.insert(k,l)end return k end return c.Value and 1 or 0 end local j={}function c. BuildDropdownList(k)local l,m=c.Values,c.DisabledValues for n,o in j do n:Destroy()end table.clear(j)local n=0 for o,p in l do if h and not tostring(p):lower():match(h.Text:lower())then continue end n+=1 local q,r=table.find(m,p),{}local s -=a0('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,LayoutOrder=q and 1 or 0,Size=UDim2.new(1,0,0,21 -),Text=tostring(p),TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Parent=i.Menu})a0( -'UIPadding',{PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),Parent=s})local t if bl.Multi then t=c.Value[p]else t= -c.Value==p end function r.UpdateButton(u)if bl.Multi then t=c.Value[p]else t=c.Value==p end s.BackgroundTransparency=t +=a1('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,LayoutOrder=q and 1 or 0,Size=UDim2.new(1,0,0,21 +),Text=tostring(p),TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Parent=i.Menu})a1( +'UIPadding',{PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),Parent=s})local t if bm.Multi then t=c.Value[p]else t= +c.Value==p end function r.UpdateButton(u)if bm.Multi then t=c.Value[p]else t=c.Value==p end s.BackgroundTransparency=t and 0 or 1 s.TextTransparency=q and 0.8 or t and 0 or 0.5 end if not q then s.MouseButton1Click:Connect(function()local -u=not t if not(c:GetActiveValues()==1 and not u and not bl.AllowNull)then t=u if bl.Multi then c.Value[p]=t and true or +u=not t if not(c:GetActiveValues()==1 and not u and not bm.AllowNull)then t=u if bm.Multi then c.Value[p]=t and true or nil else c.Value=t and p or nil end for v,w in j do w:UpdateButton()end end r:UpdateButton()c:Display()aB: UpdateDependencyBoxes()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end)end r:UpdateButton()c: -Display()j[s]=r end c:RecalculateListSize(n)end function c.SetValue(k,l)if bl.Multi then local m={}for n,o in l or{}do +Display()j[s]=r end c:RecalculateListSize(n)end function c.SetValue(k,l)if bm.Multi then local m={}for n,o in l or{}do if typeof(o)~='boolean'then m[o]=true elseif o and table.find(c.Values,n)then m[n]=true end end c.Value=m else if table. find(c.Values,l)then c.Value=l elseif not l then c.Value=nil end end c:Display()for m,n in j do n:UpdateButton()end if not c.Disabled then aB:UpdateDependencyBoxes()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end @@ -1853,31 +1855,31 @@ BuildDropdownList()end function c.SetDisabledValues(k,l)c.DisabledValues=l c:Bui AddDisabledValues(k,l)if typeof(l)=='table'then for m,n in l do table.insert(c.DisabledValues,n)end elseif typeof(l)== 'string'then table.insert(c.DisabledValues,l)else return end c:BuildDropdownList()end function c.SetDisabled(k,l:boolean )c.Disabled=l if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end i:Close()f.Active=not c.Disabled c: -UpdateColors()end function c.SetVisible(k,l:boolean)c.Visible=l d.Visible=c.Visible bm:Resize()end function c.SetText(k, +UpdateColors()end function c.SetVisible(k,l:boolean)c.Visible=l d.Visible=c.Visible bn:Resize()end function c.SetText(k, l:string)c.Text=l d.Size=UDim2.new(1,0,0,l and 39 or 21)e.Text=l and l or''e.Visible=not not l end f.MouseButton1Click: Connect(function()if c.Disabled then return end i:Toggle()end)if h then h:GetPropertyChangedSignal'Text':Connect(c. -BuildDropdownList)end local k={}if typeof(bl.Default)=='string'then local l=table.find(c.Values,bl.Default)if l then -table.insert(k,l)end elseif typeof(bl.Default)=='table'then for l,m in next,bl.Default do local n=table.find(c.Values,m) -if n then table.insert(k,n)end end elseif c.Values[bl.Default]~=nil then table.insert(k,bl.Default)end if next(k)then -for l=1,#k do local m=k[l]if bl.Multi then c.Value[c.Values[m] ]=true else c.Value=c.Values[m]end if not bl.Multi then +BuildDropdownList)end local k={}if typeof(bm.Default)=='string'then local l=table.find(c.Values,bm.Default)if l then +table.insert(k,l)end elseif typeof(bm.Default)=='table'then for l,m in next,bm.Default do local n=table.find(c.Values,m) +if n then table.insert(k,n)end end elseif c.Values[bm.Default]~=nil then table.insert(k,bm.Default)end if next(k)then +for l=1,#k do local m=k[l]if bm.Multi then c.Value[c.Values[m] ]=true else c.Value=c.Values[m]end if not bm.Multi then break end end end if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip( -c.Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end c:UpdateColors()c:Display()c:BuildDropdownList()bm: -Resize()c.Holder=d table.insert(bm.Elements,c)c.Default=k c.DefaultValues=c.Values aw[bk]=c return c end function bi. -AddViewport(bj,bk,bl)bl=aB:Validate(bl,aC.Viewport)local bm=bj local bn,c,d,e,f,g=bm.Container,false,false,0,(bl.Object) -if bl.Clone and typeof(bl.Object)=='Instance'then if bl.Object.Archivable then f=f:Clone()else bl.Object.Archivable=true -f=f:Clone()bl.Object.Archivable=false end end local h={Object=f,Camera=if not bl.Camera then Instance.new'Camera'else bl -.Camera,Interactive=bl.Interactive,AutoFocus=bl.AutoFocus,Visible=bl.Visible,Type='Viewport'}assert(typeof(h.Object)== +c.Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end c:UpdateColors()c:Display()c:BuildDropdownList()bn: +Resize()c.Holder=d table.insert(bn.Elements,c)c.Default=k c.DefaultValues=c.Values aw[bl]=c return c end function bj. +AddViewport(bk,bl,bm)bm=aB:Validate(bm,aC.Viewport)local bn=bk local bo,c,d,e,f,g=bn.Container,false,false,0,(bm.Object) +if bm.Clone and typeof(bm.Object)=='Instance'then if bm.Object.Archivable then f=f:Clone()else bm.Object.Archivable=true +f=f:Clone()bm.Object.Archivable=false end end local h={Object=f,Camera=if not bm.Camera then Instance.new'Camera'else bm +.Camera,Interactive=bm.Interactive,AutoFocus=bm.AutoFocus,Visible=bm.Visible,Type='Viewport'}assert(typeof(h.Object)== 'Instance'and(h.Object:IsA'BasePart'or h.Object:IsA'Model'),'Instance must be a BasePart or Model.')assert(typeof(h. Camera)=='Instance'and h.Camera:IsA'Camera','Camera must be a valid Camera instance.')local function i(j)if j:IsA 'BasePart'then return j.Size end return select(2,j:GetBoundingBox())end local function j()local k=i(h.Object)local l= math.max(k.X,k.Y,k.Z)local m,n=l*2,h.Object:GetPivot().Position h.Camera.CFrame=CFrame.new(n+Vector3.new(0,l/2,m),n)end -local k=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bl.Height),Visible=h.Visible,Parent=bn})local l=a0( +local k=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Height),Visible=h.Visible,Parent=bo})local l=a1( 'Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, -Position=UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=k})a0('UIPadding',{PaddingBottom=UDim.new(0,3), -PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=l})local m=a0('ViewportFrame',{ +Position=UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=k})a1('UIPadding',{PaddingBottom=UDim.new(0,3), +PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=l})local m=a1('ViewportFrame',{ BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Parent=l,CurrentCamera=h.Camera,Active=h.Interactive})m.MouseEnter: -Connect(function()if not h.Interactive then return end for n,o in bm.Tab.Sides do o.ScrollingEnabled=false end end)m. -MouseLeave:Connect(function()if not h.Interactive then return end for n,o in bm.Tab.Sides do o.ScrollingEnabled=true end +Connect(function()if not h.Interactive then return end for n,o in bn.Tab.Sides do o.ScrollingEnabled=false end end)m. +MouseLeave:Connect(function()if not h.Interactive then return end for n,o in bn.Tab.Sides do o.ScrollingEnabled=true end end)m.InputBegan:Connect(function(n)if not h.Interactive then return end if n.UserInputType==Enum.UserInputType. MouseButton2 then c=true g=n.Position elseif n.UserInputType==Enum.UserInputType.Touch and not d then c=true g=n. Position end end)aB:GiveSignal(aj.InputEnded:Connect(function(n)if aB.Unloaded then return end if not h.Interactive then @@ -1894,24 +1896,24 @@ MouseIsOverFrame(m,n[1])then return end if q==Enum.UserInputState.Begin then d=t elseif q==Enum.UserInputState.Change then local r=(n[1]-n[2]).Magnitude local s=(r-e)*0.1 e=r h.Camera.CFrame+=h.Camera. CFrame.LookVector*s elseif q==Enum.UserInputState.End or q==Enum.UserInputState.Cancel then d=false end end))h.Object. Parent=m if h.AutoFocus then j()end function h.SetObject(n,o:Instance,p:boolean?)assert(o,'Object cannot be nil.')if p -then o=o:Clone()end if h.Object then h.Object:Destroy()end h.Object=o h.Object.Parent=m bm:Resize()end function h. -SetHeight(n,o:number)assert(o>0,'Height must be greater than 0.')k.Size=UDim2.new(1,0,0,o)bm:Resize()end function h. +then o=o:Clone()end if h.Object then h.Object:Destroy()end h.Object=o h.Object.Parent=m bn:Resize()end function h. +SetHeight(n,o:number)assert(o>0,'Height must be greater than 0.')k.Size=UDim2.new(1,0,0,o)bn:Resize()end function h. Focus(n)if not h.Object then return end j()end function h.SetCamera(n,o:Instance)assert(o and typeof(o)=='Instance'and o :IsA'Camera','Camera must be a valid Camera instance.')h.Camera=o m.CurrentCamera=o end function h.SetInteractive(n,o: -boolean)h.Interactive=o m.Active=o end function h.SetVisible(n,o:boolean)h.Visible=o k.Visible=h.Visible bm:Resize()end -bm:Resize()h.Holder=k table.insert(bm.Elements,h)aw[bk]=h return h end function bi.AddImage(bj,bk,bl)bl=aB:Validate(bl, -aC.Image)local bm=bj local bn,c=bm.Container,{Image=bl.Image,Color=bl.Color,RectOffset=bl.RectOffset,RectSize=bl. -RectSize,Height=bl.Height,ScaleType=bl.ScaleType,Transparency=bl.Transparency,BackgroundTransparency=bl. -BackgroundTransparency,Visible=bl.Visible,Type='Image'}local d=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0 -,bl.Height),Visible=c.Visible,Parent=bn})local e=a0('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor', +boolean)h.Interactive=o m.Active=o end function h.SetVisible(n,o:boolean)h.Visible=o k.Visible=h.Visible bn:Resize()end +bn:Resize()h.Holder=k table.insert(bn.Elements,h)aw[bl]=h return h end function bj.AddImage(bk,bl,bm)bm=aB:Validate(bm, +aC.Image)local bn=bk local bo,c=bn.Container,{Image=bm.Image,Color=bm.Color,RectOffset=bm.RectOffset,RectSize=bm. +RectSize,Height=bm.Height,ScaleType=bm.ScaleType,Transparency=bm.Transparency,BackgroundTransparency=bm. +BackgroundTransparency,Visible=bm.Visible,Type='Image'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0 +,bm.Height),Visible=c.Visible,Parent=bo})local e=a1('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor', BorderColor3='OutlineColor',BorderSizePixel=1,BackgroundTransparency=c.BackgroundTransparency,Position=UDim2.fromScale(0 -,1),Size=UDim2.fromScale(1,1),Parent=d})a0('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8), +,1),Size=UDim2.fromScale(1,1),Parent=d})a1('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8), PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=e})local f={BackgroundTransparency=1,Size=UDim2.fromScale(1,1 ),Image=c.Image,ImageTransparency=c.Transparency,ImageColor3=c.Color,ImageRectOffset=c.RectOffset,ImageRectSize=c. RectSize,ScaleType=c.ScaleType,Parent=e}local g=aB:GetCustomIcon(f.Image)assert(g, [[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])f.Image=g.Url f.ImageRectOffset=g. -ImageRectOffset f.ImageRectSize=g.ImageRectSize local h=a0('ImageLabel',f)function c.SetHeight(i,j:number)assert(j>0, -'Height must be greater than 0.')c.Height=j d.Size=UDim2.new(1,0,0,j)bm:Resize()end function c.SetImage(i,j:string) +ImageRectOffset f.ImageRectSize=g.ImageRectSize local h=a1('ImageLabel',f)function c.SetHeight(i,j:number)assert(j>0, +'Height must be greater than 0.')c.Height=j d.Size=UDim2.new(1,0,0,j)bn:Resize()end function c.SetImage(i,j:string) assert(typeof(j)=='string','Image must be a string.')local k=aB:GetCustomIcon(j)assert(k, [[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])j=k.Url c.RectOffset=k.ImageRectOffset c. RectSize=k.ImageRectSize h.Image=j c.Image=j end function c.SetColor(i,j:Color3)assert(typeof(j)=='Color3', @@ -1922,199 +1924,199 @@ SetScaleType(i,j:Enum.ScaleType)assert(typeof(j)=='EnumItem'and j:IsA'ScaleType' 'ScaleType must be a valid Enum.ScaleType.')h.ScaleType=j c.ScaleType=j end function c.SetTransparency(i,j:number) assert(typeof(j)=='number','Transparency must be a number between 0 and 1.')assert(j>=0 and j<=1, 'Transparency must be between 0 and 1.')h.ImageTransparency=j c.Transparency=j end function c.SetVisible(i,j:boolean)c. -Visible=j d.Visible=c.Visible bm:Resize()end bm:Resize()c.Holder=d table.insert(bm.Elements,c)aw[bk]=c return c end -function bi.AddVideo(bj,bk,bl)bl=aB:Validate(bl,aC.Video)local bm=bj local bn,c=bm.Container,{Video=bl.Video,Looped=bl. -Looped,Playing=bl.Playing,Volume=bl.Volume,Height=bl.Height,Visible=bl.Visible,Type='Video'}local d=a0('Frame',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,bl.Height),Visible=c.Visible,Parent=bn})local e=a0('Frame',{AnchorPoint= +Visible=j d.Visible=c.Visible bn:Resize()end bn:Resize()c.Holder=d table.insert(bn.Elements,c)aw[bl]=c return c end +function bj.AddVideo(bk,bl,bm)bm=aB:Validate(bm,aC.Video)local bn=bk local bo,c=bn.Container,{Video=bm.Video,Looped=bm. +Looped,Playing=bm.Playing,Volume=bm.Volume,Height=bm.Height,Visible=bm.Visible,Type='Video'}local d=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Height),Visible=c.Visible,Parent=bo})local e=a1('Frame',{AnchorPoint= Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0,1 -),Size=UDim2.fromScale(1,1),Parent=d})a0('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight -=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=e})local f=a0('VideoFrame',{BackgroundTransparency=1,Size=UDim2. +),Size=UDim2.fromScale(1,1),Parent=d})a1('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight +=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=e})local f=a1('VideoFrame',{BackgroundTransparency=1,Size=UDim2. fromScale(1,1),Video=c.Video,Looped=c.Looped,Volume=c.Volume,Parent=e})f.Playing=c.Playing function c.SetHeight(g,h: -number)assert(h>0,'Height must be greater than 0.')c.Height=h d.Size=UDim2.new(1,0,0,h)bm:Resize()end function c. +number)assert(h>0,'Height must be greater than 0.')c.Height=h d.Size=UDim2.new(1,0,0,h)bn:Resize()end function c. SetVideo(g,h:string)assert(typeof(h)=='string','Video must be a string.')f.Video=h c.Video=h end function c.SetLooped(g, h:boolean)assert(typeof(h)=='boolean','Looped must be a boolean.')f.Looped=h c.Looped=h end function c.SetVolume(g,h: number)assert(typeof(h)=='number','Volume must be a number between 0 and 10.')f.Volume=h c.Volume=h end function c. SetPlaying(g,h:boolean)assert(typeof(h)=='boolean','Playing must be a boolean.')f.Playing=h c.Playing=h end function c. Play(g)f.Playing=true c.Playing=true end function c.Pause(g)f.Playing=false c.Playing=false end function c.SetVisible(g, -h:boolean)c.Visible=h d.Visible=c.Visible bm:Resize()end bm:Resize()c.Holder=d c.VideoFrame=f table.insert(bm.Elements,c -)aw[bk]=c return c end function bi.AddUIPassthrough(bj,bk,bl)bl=aB:Validate(bl,aC.UIPassthrough)local bm=bj local bn=bm. -Container assert(bl.Instance,'Instance must be provided.')assert(typeof(bl.Instance)=='Instance'and bl.Instance:IsA -'GuiBase2d','Instance must inherit from GuiBase2d.')assert(typeof(bl.Height)=='number'and bl.Height>0, -'Height must be a number greater than 0.')local c={Instance=bl.Instance,Height=bl.Height,Visible=bl.Visible,Type= -'UIPassthrough'}local d=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bl.Height),Visible=c.Visible,Parent=bn -})c.Instance.Parent=d bm:Resize()function c.SetHeight(e,f:number)assert(typeof(f)=='number'and f>0, -'Height must be a number greater than 0.')c.Height=f d.Size=UDim2.new(1,0,0,f)bm:Resize()end function c.SetInstance(e,f: +h:boolean)c.Visible=h d.Visible=c.Visible bn:Resize()end bn:Resize()c.Holder=d c.VideoFrame=f table.insert(bn.Elements,c +)aw[bl]=c return c end function bj.AddUIPassthrough(bk,bl,bm)bm=aB:Validate(bm,aC.UIPassthrough)local bn=bk local bo=bn. +Container assert(bm.Instance,'Instance must be provided.')assert(typeof(bm.Instance)=='Instance'and bm.Instance:IsA +'GuiBase2d','Instance must inherit from GuiBase2d.')assert(typeof(bm.Height)=='number'and bm.Height>0, +'Height must be a number greater than 0.')local c={Instance=bm.Instance,Height=bm.Height,Visible=bm.Visible,Type= +'UIPassthrough'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Height),Visible=c.Visible,Parent=bo +})c.Instance.Parent=d bn:Resize()function c.SetHeight(e,f:number)assert(typeof(f)=='number'and f>0, +'Height must be a number greater than 0.')c.Height=f d.Size=UDim2.new(1,0,0,f)bn:Resize()end function c.SetInstance(e,f: Instance)assert(f,'Instance must be provided.')assert(typeof(f)=='Instance'and f:IsA'GuiBase2d', 'Instance must inherit from GuiBase2d.')if c.Instance then c.Instance.Parent=nil end c.Instance=f c.Instance.Parent=d -end function c.SetVisible(e,f:boolean)c.Visible=f d.Visible=c.Visible bm:Resize()end c.Holder=d table.insert(bm.Elements -,c)aw[bk]=c return c end function bi.AddDependencyBox(bj)local bk=bj local bl,bm,bn=(bk.Container)do bm=a0('Frame',{ -BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=bl})bn=a0('UIListLayout',{Padding=UDim.new(0,8), -Parent=bm})end local c={Visible=false,Dependencies={},Holder=bm,Container=bm,Elements={},DependencyBoxes={}}function c. -Resize(d)bm.Size=UDim2.new(1,0,0,bn.AbsoluteContentSize.Y/aB.DPIScale)bk:Resize()end function c.Update(d,e)for f,g in c. -Dependencies do local h,i=g[1],g[2]if h.Type=='Toggle'and h.Value~=i then bm.Visible=false c.Visible=false return elseif -h.Type=='Dropdown'then if typeof(h.Value)=='table'then if not h.Value[i]then bm.Visible=false c.Visible=false return end -else if h.Value~=i then bm.Visible=false c.Visible=false return end end end end c.Visible=true bm.Visible=true if not aB -.Searching then task.defer(function()c:Resize()end)elseif not e then aB:UpdateSearch(aB.SearchText)end end bn: +end function c.SetVisible(e,f:boolean)c.Visible=f d.Visible=c.Visible bn:Resize()end c.Holder=d table.insert(bn.Elements +,c)aw[bl]=c return c end function bj.AddDependencyBox(bk)local bl=bk local bm,bn,bo=(bl.Container)do bn=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=bm})bo=a1('UIListLayout',{Padding=UDim.new(0,8), +Parent=bn})end local c={Visible=false,Dependencies={},Holder=bn,Container=bn,Elements={},DependencyBoxes={}}function c. +Resize(d)bn.Size=UDim2.new(1,0,0,bo.AbsoluteContentSize.Y/aB.DPIScale)bl:Resize()end function c.Update(d,e)for f,g in c. +Dependencies do local h,i=g[1],g[2]if h.Type=='Toggle'and h.Value~=i then bn.Visible=false c.Visible=false return elseif +h.Type=='Dropdown'then if typeof(h.Value)=='table'then if not h.Value[i]then bn.Visible=false c.Visible=false return end +else if h.Value~=i then bn.Visible=false c.Visible=false return end end end end c.Visible=true bn.Visible=true if not aB +.Searching then task.defer(function()c:Resize()end)elseif not e then aB:UpdateSearch(aB.SearchText)end end bo: GetPropertyChangedSignal'AbsoluteContentSize':Connect(function()if not c.Visible then return end c:Resize()end)function c.SetupDependencies(d,e)for f,g in e do assert(typeof(g)=='table','Dependency should be a table.')assert(g[1]~=nil, 'Dependency is missing element.')assert(g[2]~=nil,'Dependency is missing expected value.')end c.Dependencies=e c:Update( -)end bm:GetPropertyChangedSignal'Visible':Connect(function()c:Resize()end)setmetatable(c,bh)table.insert(bk. -DependencyBoxes,c)table.insert(aB.DependencyBoxes,c)return c end function bi.AddDependencyGroupbox(bj)local bk=bj local -bl,bm,bn,c=bk.Tab,(bk.BoxHolder)do bn=a0('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Visible= -false,Parent=bm})a0('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=bn})aB:AddOutline(bn)c=a0('UIListLayout' -,{Padding=UDim.new(0,8),Parent=bn})a0('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight= -UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bn})end local d={Visible=false,Dependencies={},BoxHolder=bm,Holder=bn, -Container=bn,Tab=bl,Elements={},DependencyBoxes={}}function d.Resize(e)bn.Size=UDim2.new(1,0,0,(c.AbsoluteContentSize.Y/ +)end bn:GetPropertyChangedSignal'Visible':Connect(function()c:Resize()end)setmetatable(c,bi)table.insert(bl. +DependencyBoxes,c)table.insert(aB.DependencyBoxes,c)return c end function bj.AddDependencyGroupbox(bk)local bl=bk local +bm,bn,bo,c=bl.Tab,(bl.BoxHolder)do bo=a1('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Visible= +false,Parent=bn})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=bo})aB:AddOutline(bo)c=a1('UIListLayout' +,{Padding=UDim.new(0,8),Parent=bo})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight= +UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bo})end local d={Visible=false,Dependencies={},BoxHolder=bn,Holder=bo, +Container=bo,Tab=bm,Elements={},DependencyBoxes={}}function d.Resize(e)bo.Size=UDim2.new(1,0,0,(c.AbsoluteContentSize.Y/ aB.DPIScale)+18)end function d.Update(e,f)for g,h in d.Dependencies do local i,j=h[1],h[2]if i.Type=='Toggle'and i.Value -~=j then bn.Visible=false d.Visible=false return elseif i.Type=='Dropdown'then if typeof(i.Value)=='table'then if not i. -Value[j]then bn.Visible=false d.Visible=false return end else if i.Value~=j then bn.Visible=false d.Visible=false return -end end end end d.Visible=true if not aB.Searching then bn.Visible=true d:Resize()elseif not f then aB:UpdateSearch(aB. +~=j then bo.Visible=false d.Visible=false return elseif i.Type=='Dropdown'then if typeof(i.Value)=='table'then if not i. +Value[j]then bo.Visible=false d.Visible=false return end else if i.Value~=j then bo.Visible=false d.Visible=false return +end end end end d.Visible=true if not aB.Searching then bo.Visible=true d:Resize()elseif not f then aB:UpdateSearch(aB. SearchText)end end function d.SetupDependencies(e,f)for g,h in f do assert(typeof(h)=='table', 'Dependency should be a table.')assert(h[1]~=nil,'Dependency is missing element.')assert(h[2]~=nil, -'Dependency is missing expected value.')end d.Dependencies=f d:Update()end setmetatable(d,bh)table.insert(bl. -DependencyGroupboxes,d)table.insert(aB.DependencyBoxes,d)return d end bh.__index=bi bh.__namecall=function(bj,bk,...) -return bi[bk](...)end end function aB.SetFont(bi,bj)if typeof(bj)=='EnumItem'then bj=Font.fromEnum(bj)end aB.Scheme.Font -=bj aB:UpdateColorsUsingRegistry()end function aB.SetNotifySide(bi,bj:string)aB.NotifySide=bj if bj:lower()=='left'then -a7.AnchorPoint=Vector2.new(0,0)a7.Position=UDim2.fromOffset(6,6)a8.HorizontalAlignment=Enum.HorizontalAlignment.Left -else a7.AnchorPoint=Vector2.new(1,0)a7.Position=UDim2.new(1,-6,0,6)a8.HorizontalAlignment=Enum.HorizontalAlignment.Right -end end function aB.Notify(bi,...)local bj,bk={},select(1,...)if typeof(bk)=='table'then bj.Title=tostring(bk.Title)bj. -Description=tostring(bk.Description)bj.Time=bk.Time or 5 bj.SoundId=bk.SoundId bj.Steps=bk.Steps bj.Persist=bk.Persist -else bj.Description=tostring(bk)bj.Time=select(2,...)or 5 bj.SoundId=select(3,...)end bj.Destroyed=false local bl,bm= -false if typeof(bj.Time)=='Instance'then bm=bj.Time.Destroying:Connect(function()bl=true bm:Disconnect()bm=nil end)end -local bn=a0('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Visible=false -,Parent=a7})local c=a0('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='MainColor',Position=aB.NotifySide: -lower()=='left'and UDim2.new(-1,-8,0,-2)or UDim2.new(1,8,0,-2),Size=UDim2.fromScale(1,1),ZIndex=5,Parent=bn})a0( -'UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=c})a0('UIListLayout',{Padding=UDim.new(0,4),Parent=c})a0( +'Dependency is missing expected value.')end d.Dependencies=f d:Update()end setmetatable(d,bi)table.insert(bm. +DependencyGroupboxes,d)table.insert(aB.DependencyBoxes,d)return d end bi.__index=bj bi.__namecall=function(bk,bl,...) +return bj[bl](...)end end function aB.SetFont(bj,bk)if typeof(bk)=='EnumItem'then bk=Font.fromEnum(bk)end aB.Scheme.Font +=bk aB:UpdateColorsUsingRegistry()end function aB.SetNotifySide(bj,bk:string)aB.NotifySide=bk if bk:lower()=='left'then +a8.AnchorPoint=Vector2.new(0,0)a8.Position=UDim2.fromOffset(6,6)a9.HorizontalAlignment=Enum.HorizontalAlignment.Left +else a8.AnchorPoint=Vector2.new(1,0)a8.Position=UDim2.new(1,-6,0,6)a9.HorizontalAlignment=Enum.HorizontalAlignment.Right +end end function aB.Notify(bj,...)local bk,bl={},select(1,...)if typeof(bl)=='table'then bk.Title=tostring(bl.Title)bk. +Description=tostring(bl.Description)bk.Time=bl.Time or 5 bk.SoundId=bl.SoundId bk.Steps=bl.Steps bk.Persist=bl.Persist +else bk.Description=tostring(bl)bk.Time=select(2,...)or 5 bk.SoundId=select(3,...)end bk.Destroyed=false local bm,bn= +false if typeof(bk.Time)=='Instance'then bn=bk.Time.Destroying:Connect(function()bm=true bn:Disconnect()bn=nil end)end +local bo=a1('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Visible=false +,Parent=a8})local c=a1('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='MainColor',Position=aB.NotifySide: +lower()=='left'and UDim2.new(-1,-8,0,-2)or UDim2.new(1,8,0,-2),Size=UDim2.fromScale(1,1),ZIndex=5,Parent=bo})a1( +'UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=c})a1('UIListLayout',{Padding=UDim.new(0,4),Parent=c})a1( 'UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8), -Parent=c})aB:AddOutline(c)local d,e,f,g,h=0,0 if bj.Title then f=a0('TextLabel',{AutomaticSize=Enum.AutomaticSize.X, -BackgroundTransparency=1,Size=UDim2.fromScale(0,0),Text=bj.Title,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left, -TextWrapped=true,Parent=c})end if bj.Description then g=a0('TextLabel',{AutomaticSize=Enum.AutomaticSize.X, -BackgroundTransparency=1,Size=UDim2.fromScale(0,0),Text=bj.Description,TextSize=14,TextXAlignment=Enum.TextXAlignment. -Left,TextWrapped=true,Parent=c})end function bj.Resize(i)if f then local j,k=aB:GetTextBounds(f.Text,f.FontFace,f. -TextSize,(a7.AbsoluteSize.X/aB.DPIScale)-24)f.Size=UDim2.fromOffset(0,k)d=j end if g then local j,k=aB:GetTextBounds(g. -Text,g.FontFace,g.TextSize,(a7.AbsoluteSize.X/aB.DPIScale)-24)g.Size=UDim2.fromOffset(0,k)e=j end bn.Size=UDim2. -fromOffset(math.max(d,e)+24,0)end function bj.ChangeTitle(i,j)if f then bj.Title=tostring(j)f.Text=bj.Title bj:Resize() -end end function bj.ChangeDescription(i,j)if g then bj.Description=tostring(j)g.Text=bj.Description bj:Resize()end end -function bj.ChangeStep(i,j)if h and bj.Steps then j=math.clamp(j or 0,0,bj.Steps)h.Size=UDim2.fromScale(j/bj.Steps,1)end -end function bj.Destroy(i)bj.Destroyed=true if typeof(bj.Time)=='Instance'then pcall(bj.Time.Destroy,bj.Time)end if bm -then bm:Disconnect()end am:Create(c,aB.NotifyTweenInfo,{Position=aB.NotifySide:lower()=='left'and UDim2.new(-1,-8,0,-2) -or UDim2.new(1,8,0,-2)}):Play()task.delay(aB.NotifyTweenInfo.Time,function()aB.Notifications[bn]=nil bn:Destroy()end)end -bj:Resize()local i=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,7),Visible=(bj.Persist~=true and typeof(bj. -Time)~='Instance')or typeof(bj.Steps)=='number',Parent=c})local j=a0('Frame',{BackgroundColor3='BackgroundColor', -BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromOffset(0,3),Size=UDim2.new(1,0,0,2),Parent=i})h=a0( -'Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(1,1),Parent=j})if typeof(bj.Time)=='Instance'then h.Size= -UDim2.fromScale(0,1)end if bj.SoundId then local k=bj.SoundId if typeof(k)=='number'then k=string.format( -'rbxassetid://%d',k)end a0('Sound',{SoundId=k,Volume=3,PlayOnRemove=true,Parent=ai}):Destroy()end aB.Notifications[bn]= -bj bn.Visible=true am:Create(c,aB.NotifyTweenInfo,{Position=UDim2.fromOffset(0,0)}):Play()task.delay(aB.NotifyTweenInfo. -Time,function()if bj.Persist then return elseif typeof(bj.Time)=='Instance'then repeat task.wait()until bl or bj. -Destroyed else am:Create(h,TweenInfo.new(bj.Time,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{Size=UDim2. -fromScale(0,1)}):Play()task.wait(bj.Time)end if not bj.Destroyed then bj:Destroy()end end)return bj end function aB. -CreateWindow(bi,bj)bj=aB:Validate(bj,aC.Window)local bk:Vector2=workspace.CurrentCamera.ViewportSize if ah:IsStudio()and -bk.X<=5 and bk.Y<=5 then repeat bk=workspace.CurrentCamera.ViewportSize task.wait()until bk.X>5 and bk.Y>5 end local bl, -bm=bk.X-64,bk.Y-64 aB.OriginalMinSize=Vector2.new(math.min(aB.OriginalMinSize.X,bl),math.min(aB.OriginalMinSize.Y,bm))aB -.MinSize=aB.OriginalMinSize bj.Size=UDim2.fromOffset(math.clamp(bj.Size.X.Offset,aB.MinSize.X,bl),math.clamp(bj.Size.Y. -Offset,aB.MinSize.Y,bm))if typeof(bj.Font)=='EnumItem'then bj.Font=Font.fromEnum(bj.Font)end bj.CornerRadius=math.min(bj -.CornerRadius,20)if bj.Compact~=nil then bj.SidebarCompacted=bj.Compact end if bj.SidebarMinWidth~=nil then bj. -MinSidebarWidth=bj.SidebarMinWidth end bj.MinSidebarWidth=math.max(64,bj.MinSidebarWidth)bj.SidebarCompactWidth=math. -max(48,bj.SidebarCompactWidth)bj.SidebarCollapseThreshold=math.clamp(bj.SidebarCollapseThreshold,0.1,0.9)bj. -CompactWidthActivation=math.max(48,bj.CompactWidthActivation)aB.CornerRadius=bj.CornerRadius aB:SetNotifySide(bj. -NotifySide)aB.ShowCustomCursor=bj.ShowCustomCursor aB.Scheme.Font=bj.Font aB.ToggleKeybind=bj.ToggleKeybind aB. -GlobalSearch=bj.GlobalSearch local bn,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q=bj.SearchbarSize==UDim2.fromScale(1,1),math.ceil(bj. -Size.X.Offset*0.3),(bj.SidebarCompacted)local r=c do aB.KeybindFrame,aB.KeybindContainer=aB:AddDraggableMenu'Keybinds'aB +Parent=c})aB:AddOutline(c)local d,e,f,g,h=0,0 if bk.Title then f=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.X, +BackgroundTransparency=1,Size=UDim2.fromScale(0,0),Text=bk.Title,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left, +TextWrapped=true,Parent=c})end if bk.Description then g=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.X, +BackgroundTransparency=1,Size=UDim2.fromScale(0,0),Text=bk.Description,TextSize=14,TextXAlignment=Enum.TextXAlignment. +Left,TextWrapped=true,Parent=c})end function bk.Resize(i)if f then local j,k=aB:GetTextBounds(f.Text,f.FontFace,f. +TextSize,(a8.AbsoluteSize.X/aB.DPIScale)-24)f.Size=UDim2.fromOffset(0,k)d=j end if g then local j,k=aB:GetTextBounds(g. +Text,g.FontFace,g.TextSize,(a8.AbsoluteSize.X/aB.DPIScale)-24)g.Size=UDim2.fromOffset(0,k)e=j end bo.Size=UDim2. +fromOffset(math.max(d,e)+24,0)end function bk.ChangeTitle(i,j)if f then bk.Title=tostring(j)f.Text=bk.Title bk:Resize() +end end function bk.ChangeDescription(i,j)if g then bk.Description=tostring(j)g.Text=bk.Description bk:Resize()end end +function bk.ChangeStep(i,j)if h and bk.Steps then j=math.clamp(j or 0,0,bk.Steps)h.Size=UDim2.fromScale(j/bk.Steps,1)end +end function bk.Destroy(i)bk.Destroyed=true if typeof(bk.Time)=='Instance'then pcall(bk.Time.Destroy,bk.Time)end if bn +then bn:Disconnect()end am:Create(c,aB.NotifyTweenInfo,{Position=aB.NotifySide:lower()=='left'and UDim2.new(-1,-8,0,-2) +or UDim2.new(1,8,0,-2)}):Play()task.delay(aB.NotifyTweenInfo.Time,function()aB.Notifications[bo]=nil bo:Destroy()end)end +bk:Resize()local i=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,7),Visible=(bk.Persist~=true and typeof(bk. +Time)~='Instance')or typeof(bk.Steps)=='number',Parent=c})local j=a1('Frame',{BackgroundColor3='BackgroundColor', +BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromOffset(0,3),Size=UDim2.new(1,0,0,2),Parent=i})h=a1( +'Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(1,1),Parent=j})if typeof(bk.Time)=='Instance'then h.Size= +UDim2.fromScale(0,1)end if bk.SoundId then local k=bk.SoundId if typeof(k)=='number'then k=string.format( +'rbxassetid://%d',k)end a1('Sound',{SoundId=k,Volume=3,PlayOnRemove=true,Parent=ai}):Destroy()end aB.Notifications[bo]= +bk bo.Visible=true am:Create(c,aB.NotifyTweenInfo,{Position=UDim2.fromOffset(0,0)}):Play()task.delay(aB.NotifyTweenInfo. +Time,function()if bk.Persist then return elseif typeof(bk.Time)=='Instance'then repeat task.wait()until bm or bk. +Destroyed else am:Create(h,TweenInfo.new(bk.Time,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{Size=UDim2. +fromScale(0,1)}):Play()task.wait(bk.Time)end if not bk.Destroyed then bk:Destroy()end end)return bk end function aB. +CreateWindow(bj,bk)bk=aB:Validate(bk,aC.Window)local bl:Vector2=workspace.CurrentCamera.ViewportSize if ah:IsStudio()and +bl.X<=5 and bl.Y<=5 then repeat bl=workspace.CurrentCamera.ViewportSize task.wait()until bl.X>5 and bl.Y>5 end local bm, +bn=bl.X-64,bl.Y-64 aB.OriginalMinSize=Vector2.new(math.min(aB.OriginalMinSize.X,bm),math.min(aB.OriginalMinSize.Y,bn))aB +.MinSize=aB.OriginalMinSize bk.Size=UDim2.fromOffset(math.clamp(bk.Size.X.Offset,aB.MinSize.X,bm),math.clamp(bk.Size.Y. +Offset,aB.MinSize.Y,bn))if typeof(bk.Font)=='EnumItem'then bk.Font=Font.fromEnum(bk.Font)end bk.CornerRadius=math.min(bk +.CornerRadius,20)if bk.Compact~=nil then bk.SidebarCompacted=bk.Compact end if bk.SidebarMinWidth~=nil then bk. +MinSidebarWidth=bk.SidebarMinWidth end bk.MinSidebarWidth=math.max(64,bk.MinSidebarWidth)bk.SidebarCompactWidth=math. +max(48,bk.SidebarCompactWidth)bk.SidebarCollapseThreshold=math.clamp(bk.SidebarCollapseThreshold,0.1,0.9)bk. +CompactWidthActivation=math.max(48,bk.CompactWidthActivation)aB.CornerRadius=bk.CornerRadius aB:SetNotifySide(bk. +NotifySide)aB.ShowCustomCursor=bk.ShowCustomCursor aB.Scheme.Font=bk.Font aB.ToggleKeybind=bk.ToggleKeybind aB. +GlobalSearch=bk.GlobalSearch local bo,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q=bk.SearchbarSize==UDim2.fromScale(1,1),math.ceil(bk. +Size.X.Offset*0.3),(bk.SidebarCompacted)local r=c do aB.KeybindFrame,aB.KeybindContainer=aB:AddDraggableMenu'Keybinds'aB .KeybindFrame.AnchorPoint=Vector2.new(0,0.5)aB.KeybindFrame.Position=UDim2.new(0,6,0.5,0)aB.KeybindFrame.Visible=false e -=a0('TextButton',{BackgroundColor3=function()return aB:GetBetterColor(aB.Scheme.BackgroundColor,-1)end,Name='Main',Text= -'',Position=bj.Position,Size=bj.Size,Visible=false,Parent=a3})a0('UICorner',{CornerRadius=UDim.new(0,bj.CornerRadius), -Parent=e})table.insert(aB.Scales,a0('UIScale',{Parent=e}))aB:AddOutline(e)aB:MakeLine(e,{Position=UDim2.fromOffset(0,48) -,Size=UDim2.new(1,0,0,1)})f=a0('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(c,0),Size=UDim2.new(0, -1,1,-21),Parent=e})if bj.BackgroundImage then a0('ImageLabel',{Image=bj.BackgroundImage,Position=UDim2.fromScale(0,0), +=a1('TextButton',{BackgroundColor3=function()return aB:GetBetterColor(aB.Scheme.BackgroundColor,-1)end,Name='Main',Text= +'',Position=bk.Position,Size=bk.Size,Visible=false,Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius), +Parent=e})table.insert(aB.Scales,a1('UIScale',{Parent=e}))aB:AddOutline(e)aB:MakeLine(e,{Position=UDim2.fromOffset(0,48) +,Size=UDim2.new(1,0,0,1)})f=a1('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(c,0),Size=UDim2.new(0, +1,1,-21),Parent=e})if bk.BackgroundImage then a1('ImageLabel',{Image=bk.BackgroundImage,Position=UDim2.fromScale(0,0), Size=UDim2.fromScale(1,1),ScaleType=Enum.ScaleType.Stretch,ZIndex=999,BackgroundTransparency=1,ImageTransparency=0.75, -Parent=e})end if bj.Center then e.Position=UDim2.new(0.5,-e.Size.X.Offset/2,0.5,-e.Size.Y.Offset/2)end local s=a0( -'Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,48),Parent=e})aB:MakeDraggable(e,s,false,true)g=a0('Frame',{ -BackgroundTransparency=1,Size=UDim2.new(0,c,1,0),Parent=s})a0('UIListLayout',{FillDirection=Enum.FillDirection. +Parent=e})end if bk.Center then e.Position=UDim2.new(0.5,-e.Size.X.Offset/2,0.5,-e.Size.Y.Offset/2)end local s=a1( +'Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,48),Parent=e})aB:MakeDraggable(e,s,false,true)g=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(0,c,1,0),Parent=s})a1('UIListLayout',{FillDirection=Enum.FillDirection. Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Center,Padding= -UDim.new(0,6),Parent=g})if bj.Icon then i=a0('ImageLabel',{Image=if tonumber(bj.Icon)then string.format( -'rbxassetid://%d',bj.Icon)else bj.Icon,Size=bj.IconSize,Parent=g})else i=a0('TextLabel',{BackgroundTransparency=1,Size= -bj.IconSize,Text=bj.Title:sub(1,1),TextScaled=true,Visible=false,Parent=g})end local t=aB:GetTextBounds(bj.Title,aB. -Scheme.Font,20,g.AbsoluteSize.X-(bj.Icon and bj.IconSize.X.Offset+6 or 0)-12)h=a0('TextLabel',{BackgroundTransparency=1, -Size=UDim2.new(0,t,1,0),Text=bj.Title,TextSize=20,Parent=g})j=a0('Frame',{AnchorPoint=Vector2.new(1,0.5), -BackgroundTransparency=1,Position=UDim2.new(1,-49,0.5,0),Size=UDim2.new(1,-c-57-1,1,-16),Parent=s})a0('UIListLayout',{ +UDim.new(0,6),Parent=g})if bk.Icon then i=a1('ImageLabel',{Image=if tonumber(bk.Icon)then string.format( +'rbxassetid://%d',bk.Icon)else bk.Icon,Size=bk.IconSize,Parent=g})else i=a1('TextLabel',{BackgroundTransparency=1,Size= +bk.IconSize,Text=bk.Title:sub(1,1),TextScaled=true,Visible=false,Parent=g})end local t=aB:GetTextBounds(bk.Title,aB. +Scheme.Font,20,g.AbsoluteSize.X-(bk.Icon and bk.IconSize.X.Offset+6 or 0)-12)h=a1('TextLabel',{BackgroundTransparency=1, +Size=UDim2.new(0,t,1,0),Text=bk.Title,TextSize=20,Parent=g})j=a1('Frame',{AnchorPoint=Vector2.new(1,0.5), +BackgroundTransparency=1,Position=UDim2.new(1,-49,0.5,0),Size=UDim2.new(1,-c-57-1,1,-16),Parent=s})a1('UIListLayout',{ FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Left,VerticalAlignment=Enum. -VerticalAlignment.Center,Padding=UDim.new(0,8),Parent=j})l=a0('Frame',{Size=UDim2.fromScale(bj.DisableSearch and 1 or -0.5,1),Visible=false,BackgroundTransparency=1,Parent=j})a0('UIFlexItem',{FlexMode=Enum.UIFlexMode.Grow,Parent=l})a0( +VerticalAlignment.Center,Padding=UDim.new(0,8),Parent=j})l=a1('Frame',{Size=UDim2.fromScale(bk.DisableSearch and 1 or +0.5,1),Visible=false,BackgroundTransparency=1,Parent=j})a1('UIFlexItem',{FlexMode=Enum.UIFlexMode.Grow,Parent=l})a1( 'UIListLayout',{FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Left, -VerticalAlignment=Enum.VerticalAlignment.Center,Parent=l})a0('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim. -new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=l})m=a0('TextLabel',{BackgroundTransparency=1,Size= +VerticalAlignment=Enum.VerticalAlignment.Center,Parent=l})a1('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=l})m=a1('TextLabel',{BackgroundTransparency=1,Size= UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text='',TextSize=14,TextXAlignment=Enum.TextXAlignment.Left, -Parent=l})n=a0('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text= -'',TextWrapped=true,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextTransparency=0.5,Parent=l})k=a0('TextBox',{ -BackgroundColor3='MainColor',PlaceholderText='Search',Size=bj.SearchbarSize,TextScaled=true,Visible=not(bj.DisableSearch -or false),Parent=j})a0('UIFlexItem',{FlexMode=Enum.UIFlexMode.Shrink,Parent=k})a0('UICorner',{CornerRadius=UDim.new(0,bj -.CornerRadius),Parent=k})a0('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8 -),PaddingTop=UDim.new(0,8),Parent=k})a0('UIStroke',{Color='OutlineColor',Parent=k})local u=aB:GetIcon'search'if u then -a0('ImageLabel',{Image=u.Url,ImageColor3='FontColor',ImageRectOffset=u.ImageRectOffset,ImageRectSize=u.ImageRectSize, -ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=k})end if bf then -a0('ImageLabel',{AnchorPoint=Vector2.new(1,0.5),Image=bf.Url,ImageColor3='OutlineColor',ImageRectOffset=bf. -ImageRectOffset,ImageRectSize=bf.ImageRectSize,Position=UDim2.new(1,-10,0.5,0),Size=UDim2.fromOffset(28,28), -SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=s})end local v=a0('Frame',{AnchorPoint=Vector2.new(0,1), +Parent=l})n=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text= +'',TextWrapped=true,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextTransparency=0.5,Parent=l})k=a1('TextBox',{ +BackgroundColor3='MainColor',PlaceholderText='Search',Size=bk.SearchbarSize,TextScaled=true,Visible=not(bk.DisableSearch +or false),Parent=j})a1('UIFlexItem',{FlexMode=Enum.UIFlexMode.Shrink,Parent=k})a1('UICorner',{CornerRadius=UDim.new(0,bk +.CornerRadius),Parent=k})a1('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8 +),PaddingTop=UDim.new(0,8),Parent=k})a1('UIStroke',{Color='OutlineColor',Parent=k})local u=aB:GetIcon'search'if u then +a1('ImageLabel',{Image=u.Url,ImageColor3='FontColor',ImageRectOffset=u.ImageRectOffset,ImageRectSize=u.ImageRectSize, +ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=k})end if bg then +a1('ImageLabel',{AnchorPoint=Vector2.new(1,0.5),Image=bg.Url,ImageColor3='OutlineColor',ImageRectOffset=bg. +ImageRectOffset,ImageRectSize=bg.ImageRectSize,Position=UDim2.new(1,-10,0.5,0),Size=UDim2.fromOffset(28,28), +SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=s})end local v=a1('Frame',{AnchorPoint=Vector2.new(0,1), BackgroundColor3=function()return aB:GetBetterColor(aB.Scheme.BackgroundColor,4)end,Position=UDim2.fromScale(0,1),Size= -UDim2.new(1,0,0,bj.CornerRadius*2),Parent=e})aB:MakeLine(e,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,-20), -Size=UDim2.new(1,0,0,1)})local w=a0('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundTransparency=1,Position=UDim2. -fromScale(0,1),Size=UDim2.new(1,0,0,20),Parent=e})a0('UICorner',{CornerRadius=UDim.new(0,bj.CornerRadius),Parent=v})a0( -'TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text=bj.Footer,TextSize=14,TextTransparency=0.5,Parent=w -})if bj.Resizable then o=a0('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1,Position=UDim2.new(1,-bj +UDim2.new(1,0,0,bk.CornerRadius*2),Parent=e})aB:MakeLine(e,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,-20), +Size=UDim2.new(1,0,0,1)})local w=a1('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundTransparency=1,Position=UDim2. +fromScale(0,1),Size=UDim2.new(1,0,0,20),Parent=e})a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=v})a1( +'TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text=bk.Footer,TextSize=14,TextTransparency=0.5,Parent=w +})if bk.Resizable then o=a1('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1,Position=UDim2.new(1,-bk .CornerRadius/4,0,0),Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Text='',Parent=w})aB: -MakeResizable(e,o,function()for x,y in aB.Tabs do y:Resize(true)end end)end a0('ImageLabel',{Image=bd and bd.Url or'', -ImageColor3='FontColor',ImageRectOffset=bd and bd.ImageRectOffset or Vector2.zero,ImageRectSize=bd and bd.ImageRectSize -or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=o})p=a0( +MakeResizable(e,o,function()for x,y in aB.Tabs do y:Resize(true)end end)end a1('ImageLabel',{Image=be and be.Url or'', +ImageColor3='FontColor',ImageRectOffset=be and be.ImageRectOffset or Vector2.zero,ImageRectSize=be and be.ImageRectSize +or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=o})p=a1( 'ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',CanvasSize=UDim2. -fromScale(0,0),Position=UDim2.fromOffset(0,49),ScrollBarThickness=0,Size=UDim2.new(0,c,1,-70),Parent=e})a0( -'UIListLayout',{Parent=p})q=a0('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3=function()return aB: +fromScale(0,0),Position=UDim2.fromOffset(0,49),ScrollBarThickness=0,Size=UDim2.new(0,c,1,-70),Parent=e})a1( +'UIListLayout',{Parent=p})q=a1('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3=function()return aB: GetBetterColor(aB.Scheme.BackgroundColor,1)end,Name='Container',Position=UDim2.new(1,0,0,49),Size=UDim2.new(1,-c-1,1,-70 -),Parent=e})a0('UIPadding',{PaddingBottom=UDim.new(0,0),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop= +),Parent=e})a1('UIPadding',{PaddingBottom=UDim.new(0,0),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop= UDim.new(0,0),Parent=q})end local s={}function s.ChangeTitle(t,u)assert(typeof(u)=='string', -'Expected string for title got: '..typeof(u))h.Text=u bj.Title=u end local function t()d=s:GetSidebarWidth()==bj. -SidebarCompactWidth if bj.DisableCompactingSnap then d=s:GetSidebarWidth()<=bj.CompactWidthActivation end h.Visible=not -d if not bj.Icon then i.Visible=d end for u,v in aB.TabButtons do if not v.Icon then continue end v.Label.Visible=not d +'Expected string for title got: '..typeof(u))h.Text=u bk.Title=u end local function t()d=s:GetSidebarWidth()==bk. +SidebarCompactWidth if bk.DisableCompactingSnap then d=s:GetSidebarWidth()<=bk.CompactWidthActivation end h.Visible=not +d if not bk.Icon then i.Visible=d end for u,v in aB.TabButtons do if not v.Icon then continue end v.Label.Visible=not d v.Padding.PaddingBottom=UDim.new(0,d and 6 or 11)v.Padding.PaddingLeft=UDim.new(0,d and 6 or 12)v.Padding.PaddingRight= UDim.new(0,d and 6 or 12)v.Padding.PaddingTop=UDim.new(0,d and 6 or 11)v.Icon.SizeConstraint=d and Enum.SizeConstraint. RelativeXY or Enum.SizeConstraint.RelativeYY end end function s.IsSidebarCompacted(u)return d end function s.SetCompact( -u,v)s:SetSidebarWidth(v and bj.SidebarCompactWidth or r)end function s.GetSidebarWidth(u)return p.Size.X.Offset end -function s.SetSidebarWidth(u,v)v=math.clamp(v,48,e.Size.X.Offset-bj.MinContainerWidth-1)f.Position=UDim2.fromOffset(v,0) -g.Size=UDim2.new(0,v,1,0)j.Size=UDim2.new(1,-v-57-1,1,-16)p.Size=UDim2.new(0,v,1,-70)q.Size=UDim2.new(1,-v-1,1,-70)if bj -.EnableCompacting then t()end if not d then r=v end end function s.ShowTabInfo(u,v,w)m.Text=v n.Text=w if bn then k.Size -=UDim2.fromScale(0.5,1)end l.Visible=true end function s.HideTabInfo(u)l.Visible=false if bn then k.Size=UDim2. +u,v)s:SetSidebarWidth(v and bk.SidebarCompactWidth or r)end function s.GetSidebarWidth(u)return p.Size.X.Offset end +function s.SetSidebarWidth(u,v)v=math.clamp(v,48,e.Size.X.Offset-bk.MinContainerWidth-1)f.Position=UDim2.fromOffset(v,0) +g.Size=UDim2.new(0,v,1,0)j.Size=UDim2.new(1,-v-57-1,1,-16)p.Size=UDim2.new(0,v,1,-70)q.Size=UDim2.new(1,-v-1,1,-70)if bk +.EnableCompacting then t()end if not d then r=v end end function s.ShowTabInfo(u,v,w)m.Text=v n.Text=w if bo then k.Size +=UDim2.fromScale(0.5,1)end l.Visible=true end function s.HideTabInfo(u)l.Visible=false if bo then k.Size=UDim2. fromScale(1,1)end end function s.AddTab(u,...)local v,w,x if select('#',...)==1 and typeof(...)=='table'then local y= select(1,...)v=y.Name or'Tab'w=y.Icon x=y.Description else v=select(1,...)w=select(2,...)x=select(3,...)end local y: -TextButton,z,A,B,C,D w=aB:GetCustomIcon(w)do y=a0('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1, -Size=UDim2.new(1,0,0,40),Text='',Parent=p})local E=a0('UIPadding',{PaddingBottom=UDim.new(0,d and 6 or 11),PaddingLeft= -UDim.new(0,d and 6 or 12),PaddingRight=UDim.new(0,d and 6 or 12),PaddingTop=UDim.new(0,d and 6 or 11),Parent=y})z=a0( -'TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=v,TextSize=16, -TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not d,Parent=y})if w then A=a0('ImageLabel',{Image= -w.Url,ImageColor3=w.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=w.ImageRectOffset,ImageRectSize=w. -ImageRectSize,ImageTransparency=0.5,ScaleType=Enum.ScaleType.Fit,Size=UDim2.fromScale(1,1),SizeConstraint=d and Enum. -SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=y})end table.insert(aB.TabButtons,{Label=z,Padding=E, -Icon=A})B=a0('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=q})C=a0('ScrollingFrame',{ -AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0), -ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=B})a0('UIListLayout',{Padding=UDim. -new(0,2),Parent=C})a0('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2), -PaddingTop=UDim.new(0,2),Parent=C})do a0('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=C})a0('Frame',{ -BackgroundTransparency=1,LayoutOrder=1,Parent=C})end D=a0('ScrollingFrame',{AnchorPoint=Vector2.new(1,0), +TextButton,z,A,B,C,D w=aB:GetCustomIcon(w)or aY do y=a1('TextButton',{BackgroundColor3='MainColor', +BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=p})local E=a1('UIPadding',{PaddingBottom=UDim.new(0,d +and 6 or 11),PaddingLeft=UDim.new(0,d and 6 or 12),PaddingRight=UDim.new(0,d and 6 or 12),PaddingTop=UDim.new(0,d and 6 +or 11),Parent=y})z=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0), +Text=v,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not d,Parent=y})if w then A=a1( +'ImageLabel',{Image=w.Url,ImageColor3=w.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=w.ImageRectOffset, +ImageRectSize=w.ImageRectSize,ImageTransparency=0.5,ScaleType=Enum.ScaleType.Fit,Size=UDim2.fromScale(1,1), +SizeConstraint=d and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=y})end table.insert(aB. +TabButtons,{Label=z,Padding=E,Icon=A})B=a1('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false, +Parent=q})C=a1('ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2. +fromScale(0,0),ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=B})a1('UIListLayout', +{Padding=UDim.new(0,2),Parent=C})a1('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim +.new(0,2),PaddingTop=UDim.new(0,2),Parent=C})do a1('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=C})a1('Frame' +,{BackgroundTransparency=1,LayoutOrder=1,Parent=C})end D=a1('ScrollingFrame',{AnchorPoint=Vector2.new(1,0), AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),Position=UDim2. -fromScale(1,0),ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=B})a0('UIListLayout', -{Padding=UDim.new(0,2),Parent=D})a0('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim -.new(0,2),PaddingTop=UDim.new(0,2),Parent=D})do a0('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=D})a0('Frame' -,{BackgroundTransparency=1,LayoutOrder=1,Parent=D})end end local E,F,G,H,I,J,K,L=(a0('Frame',{AutomaticSize=Enum. +fromScale(1,0),ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=B})a1('UIListLayout', +{Padding=UDim.new(0,2),Parent=D})a1('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim +.new(0,2),PaddingTop=UDim.new(0,2),Parent=D})do a1('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=D})a1('Frame' +,{BackgroundTransparency=1,LayoutOrder=1,Parent=D})end end local E,F,G,H,I,J,K,L=(a1('Frame',{AutomaticSize=Enum. AutomaticSize.Y,BackgroundTransparency=1,Position=UDim2.fromOffset(0,7),Size=UDim2.fromScale(1,0),Visible=false,Parent=B -}))do F=a0('Frame',{BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(2,0),Size=UDim2.new(1,-5,0,0),Parent=E} -)a0('UICorner',{CornerRadius=UDim.new(0,bj.CornerRadius),Parent=F})G,H=aB:AddOutline(F)I=a0('ScrollingFrame',{ +}))do F=a1('Frame',{BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(2,0),Size=UDim2.new(1,-5,0,0),Parent=E} +)a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=F})G,H=aB:AddOutline(F)I=a1('ScrollingFrame',{ BackgroundTransparency=1,BorderSizePixel=0,Size=UDim2.fromScale(1,1),CanvasSize=UDim2.new(0,0,0,0),ScrollBarThickness=3, -ScrollingDirection=Enum.ScrollingDirection.Y,Parent=F})a0('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingLeft=UDim.new( -0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,4),Parent=I})J=a0('TextLabel',{BackgroundTransparency=1,Size=UDim2 +ScrollingDirection=Enum.ScrollingDirection.Y,Parent=F})a1('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingLeft=UDim.new( +0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,4),Parent=I})J=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2 .new(1,-4,0,14),Text='',TextColor3=Color3.fromRGB(255,50,50),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent= -I})K=a0('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color=Color3.fromRGB(169,0,0),LineJoinMode=Enum. -LineJoinMode.Miter,Parent=J})L=a0('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,16),Size=UDim2.new(1 +I})K=a1('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color=Color3.fromRGB(169,0,0),LineJoinMode=Enum. +LineJoinMode.Miter,Parent=J})L=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,16),Size=UDim2.new(1 ,-4,0,0),Text='',TextSize=14,TextWrapped=true,Parent=I,TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=Enum. -TextYAlignment.Top})a0('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor',LineJoinMode=Enum. +TextYAlignment.Top})a1('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor',LineJoinMode=Enum. LineJoinMode.Miter,Parent=L})end local M={Groupboxes={},Tabboxes={},DependencyGroupboxes={},Sides={C,D},WarningBox={ IsNormal=false,LockSize=false,Visible=false,Title='WARNING',Text=''}}function M.UpdateWarningBox(N,O)if typeof(O. IsNormal)=='boolean'then M.WarningBox.IsNormal=O.IsNormal end if typeof(O.LockSize)=='boolean'then M.WarningBox.LockSize @@ -2136,151 +2138,151 @@ end aB.Registry[K].Color=function()return M.WarningBox.IsNormal==true and aB.Sch .new(Q.Position.X.Scale,0,0,O)Q.Size=UDim2.new(0.5,-3,1,-O)end end function M.Resize(N,O:boolean?)if O then local P,Q,S= math.floor(B.AbsoluteSize.Y/3.25),aB:GetTextBounds(L.Text,aB.Scheme.Font,L.TextSize,L.AbsoluteSize.X)local T=24+S if M. WarningBox.LockSize==true and T>=P then I.CanvasSize=UDim2.fromOffset(0,T)T=P else I.CanvasSize=UDim2.fromOffset(0,0)end -L.Size=UDim2.new(1,-4,0,S)F.Size=UDim2.new(1,-5,0,T+4)end M:RefreshSides()end function M.AddGroupbox(N,O)local P=a0( +L.Size=UDim2.new(1,-4,0,S)F.Size=UDim2.new(1,-5,0,T+4)end M:RefreshSides()end function M.AddGroupbox(N,O)local P=a1( 'Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=O.Side==1 and C or -D})a0('UIListLayout',{Padding=UDim.new(0,6),Parent=P})a0('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0, -4),Parent=P})local Q,S,T,U do Q=a0('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=P})a0( -'UICorner',{CornerRadius=UDim.new(0,bj.CornerRadius),Parent=Q})aB:AddOutline(Q)aB:MakeLine(Q,{Position=UDim2.fromOffset( -0,34),Size=UDim2.new(1,0,0,1)})local V=aB:GetCustomIcon(O.IconName)if V then a0('ImageLabel',{Image=V.Url,ImageColor3=V. -Custom and'WhiteColor'or'AccentColor',ImageRectOffset=V.ImageRectOffset,ImageRectSize=V.ImageRectSize,Position=UDim2. -fromOffset(6,6),Size=UDim2.fromOffset(22,22),Parent=Q})end S=a0('TextLabel',{BackgroundTransparency=1,Position=UDim2. -fromOffset(V and 24 or 0,0),Size=UDim2.new(1,0,0,34),Text=O.Name,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left, -Parent=Q})a0('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=S})T=a0('Frame',{ -BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=Q})U=a0('UIListLayout',{ -Padding=UDim.new(0,8),Parent=T})a0('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim. -new(0,7),PaddingTop=UDim.new(0,7),Parent=T})end local V={BoxHolder=P,Holder=Q,Container=T,Tab=M,DependencyBoxes={}, -Elements={}}function V.Resize(W)Q.Size=UDim2.new(1,0,0,(U.AbsoluteContentSize.Y/aB.DPIScale)+49)end setmetatable(V,bh)V: -Resize()M.Groupboxes[O.Name]=V return V end function M.AddLeftGroupbox(N,O,P)return M:AddGroupbox{Side=1,Name=O,IconName -=P}end function M.AddRightGroupbox(N,O,P)return M:AddGroupbox{Side=2,Name=O,IconName=P}end function M.AddTabbox(N,O) -local P=a0('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=O.Side -==1 and C or D})a0('UIListLayout',{Padding=UDim.new(0,6),Parent=P})a0('UIPadding',{PaddingBottom=UDim.new(0,4), -PaddingTop=UDim.new(0,4),Parent=P})local Q,S do Q=a0('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1, -0),Parent=P})a0('UICorner',{CornerRadius=UDim.new(0,bj.CornerRadius),Parent=Q})aB:AddOutline(Q)S=a0('Frame',{ -BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Parent=Q})a0('UIListLayout',{FillDirection=Enum.FillDirection. -Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Parent=S})end local T={ActiveTab=nil,BoxHolder=P,Holder=Q,Tabs={}} -function T.AddTab(U,V)local W=a0('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=0,Size=UDim2. -fromOffset(0,34),Text=V,TextSize=15,TextTransparency=0.5,Parent=S})local X,Y=aB:MakeLine(W,{AnchorPoint=Vector2.new(0,1) -,Position=UDim2.new(0,0,1,1),Size=UDim2.new(1,0,0,1)}),a0('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0, -35),Size=UDim2.new(1,0,1,-35),Visible=false,Parent=Q})local Z=a0('UIListLayout',{Padding=UDim.new(0,8),Parent=Y})a0( -'UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7), -Parent=Y})local _={ButtonHolder=W,Container=Y,Tab=M,Elements={},DependencyBoxes={}}function _.Show(bo)if T.ActiveTab -then T.ActiveTab:Hide()end W.BackgroundTransparency=1 W.TextTransparency=0 X.Visible=false Y.Visible=true T.ActiveTab=_ -_:Resize()end function _.Hide(bo)W.BackgroundTransparency=0 W.TextTransparency=0.5 X.Visible=true Y.Visible=false T. -ActiveTab=nil end function _.Resize(bo)if T.ActiveTab~=_ then return end Q.Size=UDim2.new(1,0,0,(Z.AbsoluteContentSize.Y -/aB.DPIScale)+49)end if not T.ActiveTab then _:Show()end W.MouseButton1Click:Connect(_.Show)setmetatable(_,bh)T.Tabs[V]= -_ return _ end if O.Name then M.Tabboxes[O.Name]=T else table.insert(M.Tabboxes,T)end return T end function M. -AddLeftTabbox(bo,N)return M:AddTabbox{Side=1,Name=N}end function M.AddRightTabbox(bo,N)return M:AddTabbox{Side=2,Name=N} -end function M.Hover(bo,N)if aB.ActiveTab==M then return end am:Create(z,aB.TweenInfo,{TextTransparency=N and 0.25 or -0.5}):Play()if A then am:Create(A,aB.TweenInfo,{ImageTransparency=N and 0.25 or 0.5}):Play()end end function M.Show(bo) -if aB.ActiveTab then aB.ActiveTab:Hide()end am:Create(y,aB.TweenInfo,{BackgroundTransparency=0}):Play()am:Create(z,aB. -TweenInfo,{TextTransparency=0}):Play()if A then am:Create(A,aB.TweenInfo,{ImageTransparency=0}):Play()end if x then s: -ShowTabInfo(v,x)end B.Visible=true M:RefreshSides()aB.ActiveTab=M if aB.Searching then aB:UpdateSearch(aB.SearchText)end -end function M.Hide(bo)am:Create(y,aB.TweenInfo,{BackgroundTransparency=1}):Play()am:Create(z,aB.TweenInfo,{ -TextTransparency=0.5}):Play()if A then am:Create(A,aB.TweenInfo,{ImageTransparency=0.5}):Play()end B.Visible=false s: -HideTabInfo()aB.ActiveTab=nil end if not aB.ActiveTab then M:Show()end y.MouseEnter:Connect(function()M:Hover(true)end)y -.MouseLeave:Connect(function()M:Hover(false)end)y.MouseButton1Click:Connect(M.Show)aB.Tabs[v]=M return M end function s. -AddKeyTab(bo,...)local u,v,w if select('#',...)==1 and typeof(...)=='table'then local x=select(1,...)u=x.Name or'Tab'v=x -.Icon w=x.Description else u=select(1,...)or'Tab'v=select(2,...)w=select(3,...)end v=v or'key'local x:TextButton,y,z,A v -=if v=='key'then be else aB:GetCustomIcon(v)do x=a0('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1, -Size=UDim2.new(1,0,0,40),Text='',Parent=p})local B=a0('UIPadding',{PaddingBottom=UDim.new(0,d and 6 or 11),PaddingLeft= -UDim.new(0,d and 6 or 12),PaddingRight=UDim.new(0,d and 6 or 12),PaddingTop=UDim.new(0,d and 6 or 11),Parent=x})y=a0( -'TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=u,TextSize=16, -TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not d,Parent=x})if v then z=a0('ImageLabel',{Image= -v.Url,ImageColor3=v.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=v.ImageRectOffset,ImageRectSize=v. -ImageRectSize,ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=d and Enum.SizeConstraint.RelativeXY or -Enum.SizeConstraint.RelativeYY,Parent=x})end table.insert(aB.TabButtons,{Label=y,Padding=B,Icon=z})A=a0('ScrollingFrame' -,{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),ScrollBarThickness=0 -,Size=UDim2.fromScale(1,1),Visible=false,Parent=q})a0('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment. -Center,Padding=UDim.new(0,8),VerticalAlignment=Enum.VerticalAlignment.Center,Parent=A})a0('UIPadding',{PaddingLeft=UDim. -new(0,1),PaddingRight=UDim.new(0,1),Parent=A})end local B={Elements={},IsKeyTab=true}function B.AddKeyBox(C,D)assert( -typeof(D)=='function','Callback must be a function')local E=a0('Frame',{BackgroundTransparency=1,Size=UDim2.new(0.75,0,0 -,21),Parent=A})local F=a0('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, -PlaceholderText='Key',Size=UDim2.new(1,-71,1,0),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=E})a0( -'UIPadding',{PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),Parent=F})local G=a0('TextButton',{AnchorPoint=Vector2 -.new(1,0),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0),Size= -UDim2.new(0,63,1,0),Text='Execute',TextSize=14,Parent=E})G.InputBegan:Connect(function(H)if not aK(H)then return end if -not aB:MouseIsOverFrame(G,H.Position)then return end D(F.Text)end)end function B.RefreshSides(C)end function B.Resize(C) -end function B.Hover(C,D)if aB.ActiveTab==B then return end am:Create(y,aB.TweenInfo,{TextTransparency=D and 0.25 or 0.5 -}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=D and 0.25 or 0.5}):Play()end end function B.Show(C)if aB -.ActiveTab then aB.ActiveTab:Hide()end am:Create(x,aB.TweenInfo,{BackgroundTransparency=0}):Play()am:Create(y,aB. -TweenInfo,{TextTransparency=0}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=0}):Play()end A.Visible=true -if w then s:ShowTabInfo(u,w)end B:RefreshSides()aB.ActiveTab=B if aB.Searching then aB:UpdateSearch(aB.SearchText)end -end function B.Hide(C)am:Create(x,aB.TweenInfo,{BackgroundTransparency=1}):Play()am:Create(y,aB.TweenInfo,{ -TextTransparency=0.5}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=0.5}):Play()end A.Visible=false s: -HideTabInfo()aB.ActiveTab=nil end if not aB.ActiveTab then B:Show()end x.MouseEnter:Connect(function()B:Hover(true)end)x -.MouseLeave:Connect(function()B:Hover(false)end)x.MouseButton1Click:Connect(B.Show)B.Container=A setmetatable(B,bh)aB. -Tabs[u]=B return B end function aB.Toggle(bo,u:boolean?)if typeof(u)=='boolean'then aB.Toggled=u else aB.Toggled=not aB. -Toggled end e.Visible=aB.Toggled if bj.UnlockMouseWhileOpen then a4.Modal=aB.Toggled end if aB.Toggled and not aB. -IsMobile then local v=aj.MouseIconEnabled pcall(function()ah:UnbindFromRenderStep'ShowCursor'end)ah:BindToRenderStep( -'ShowCursor',Enum.RenderPriority.Last.Value,function()aj.MouseIconEnabled=not aB.ShowCustomCursor a5.Position=UDim2. -fromOffset(as.X,as.Y)a5.Visible=aB.ShowCustomCursor if not(aB.Toggled and a3 and a3.Parent)then aj.MouseIconEnabled=v a5 -.Visible=false ah:UnbindFromRenderStep'ShowCursor'end end)elseif not aB.Toggled then b.Visible=false for v,w in aB. -Options do if w.Type=='ColorPicker'then w.ColorMenu:Close()w.ContextMenu:Close()elseif w.Type=='Dropdown'or w.Type== -'KeyPicker'then w.Menu:Close()end end end end if bj.EnableSidebarResize then local bo,u,v,w,x,y=(bj.MinSidebarWidth+bj. -SidebarCompactWidth)*bj.SidebarCollapseThreshold,false,(a0('TextButton',{AnchorPoint=Vector2.new(0.5,0), -BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0),Size=UDim2.new(0,8,1,0),Text='',Parent=f}))v.MouseEnter: -Connect(function()am:Create(f,aB.TweenInfo,{BackgroundColor3=aB:GetLighterColor(aB.Scheme.OutlineColor)}):Play()end)v. -MouseLeave:Connect(function()if u then return end am:Create(f,aB.TweenInfo,{BackgroundColor3=aB.Scheme.OutlineColor}): -Play()end)v.InputBegan:Connect(function(z:InputObject)if not aK(z)then return end aB.CantDragForced=true w=z.Position x= -s:GetSidebarWidth()u=true y=z.Changed:Connect(function()if z.UserInputState~=Enum.UserInputState.End then return end aB. -CantDragForced=false am:Create(f,aB.TweenInfo,{BackgroundColor3=aB.Scheme.OutlineColor}):Play()u=false if y and y. -Connected then y:Disconnect()y=nil end end)end)aB:GiveSignal(aj.InputChanged:Connect(function(z:InputObject)if not aB. -Toggled or not(a3 and a3.Parent)then u=false if y and y.Connected then y:Disconnect()y=nil end return end if u and aL(z) -then local A=z.Position-w local B=x+A.X if bj.DisableCompactingSnap then s:SetSidebarWidth(B)return end if B>bo then s: -SetSidebarWidth(math.max(B,bj.MinSidebarWidth))else s:SetSidebarWidth(bj.SidebarCompactWidth)end end end))end if bj. -EnableCompacting and bj.SidebarCompacted then s:SetSidebarWidth(bj.SidebarCompactWidth)end if bj.AutoShow then task. -spawn(aB.Toggle)end if aB.IsMobile then local bo,u=aB:AddDraggableButton('Toggle',function()aB:Toggle()end,true),aB: -AddDraggableButton('Lock',function(bo)aB.CantDragForced=not aB.CantDragForced bo:SetText(aB.CantDragForced and'Unlock'or -'Lock')end,true)if bj.MobileButtonsSide=='Right'then bo.Button.Position=UDim2.new(1,-6,0,6)bo.Button.AnchorPoint=Vector2 -.new(1,0)u.Button.Position=UDim2.new(1,-6,0,46)u.Button.AnchorPoint=Vector2.new(1,0)else u.Button.Position=UDim2. -fromOffset(6,46)end end k:GetPropertyChangedSignal'Text':Connect(function()aB:UpdateSearch(k.Text)end)aB:GiveSignal(aj. -InputBegan:Connect(function(bo:InputObject)if aB.Unloaded then return end if aj:GetFocusedTextBox()then return end if( -typeof(aB.ToggleKeybind)=='table'and aB.ToggleKeybind.Type=='KeyPicker'and bo.KeyCode.Name==aB.ToggleKeybind.Value)or bo -.KeyCode==aB.ToggleKeybind then aB.Toggle()end end))aB:GiveSignal(aj.WindowFocused:Connect(function()aB.IsRobloxFocused= -true end))aB:GiveSignal(aj.WindowFocusReleased:Connect(function()aB.IsRobloxFocused=false end))return s end -local function bi()if aB.Unloaded then return end local bj,bk=aS(),aS(true)for bl,bm in aw do if bm.Type=='Dropdown'and -bm.SpecialType=='Player'then bm:SetValues(bm.ExcludeLocalPlayer and bk or bj)end end end local function bj()if aB. -Unloaded then return end local bk=aT()for bl,bm in aw do if bm.Type=='Dropdown'and bm.SpecialType=='Team'then bm: -SetValues(bk)end end end aB:GiveSignal(ag.PlayerAdded:Connect(bi))aB:GiveSignal(ag.PlayerRemoving:Connect(bi))aB: -GiveSignal(al.ChildAdded:Connect(bj))aB:GiveSignal(al.ChildRemoved:Connect(bj))an().Library=aB return aB end)()end,[9]= -function()local aa,ab,ac=a(9)local ad return(function(...)export type Scheme={BackgroundColor:Color3,MainColor:Color3, -AccentColor:Color3,OutlineColor:Color3,FontColor:Color3,Font:Font,RedColor:Color3,DarkColor:Color3,WhiteColor:Color3} -export type Icon={Url:string,ImageRectOffset:Vector2,ImageRectSize:Vector2}export type ContextMenu={Active:boolean, -Holder:GuiObject,Menu:GuiObject,List:UIListLayout?,Signal:RBXScriptConnection?,Size:UDim2|(()->UDim2),Open:(self: -ContextMenu)->(),Close:(self:ContextMenu)->(),Toggle:(self:ContextMenu)->(),SetSize:(self:ContextMenu,Size:UDim2|(()-> -UDim2))->()}export type Tooltip={Disabled:boolean,Hovering:boolean,Signals:{[number]:RBXScriptConnection},Destroy:(self: -Tooltip)->()}export type Notification={Title:string?,Description:string,Time:number|Instance,SoundId:string|number?, -Steps:number?,Persist:boolean?,Destroyed:boolean,Resize:(self:Notification)->(),ChangeTitle:(self:Notification,Text: -string)->(),ChangeDescription:(self:Notification,Text:string)->(),ChangeStep:(self:Notification,NewStep:number)->(), -Destroy:(self:Notification)->()}export type KeybindToggle={Normal:boolean,Holder:TextButton,Label:TextLabel,Checkbox: -Frame,Loaded:boolean,Display:(self:KeybindToggle,State:boolean)->(),SetText:(self:KeybindToggle,Text:string)->(), -SetVisibility:(self:KeybindToggle,Visibility:boolean)->(),SetNormal:(self:KeybindToggle,Normal:boolean)->()}export type -DraggableLabel={Label:TextLabel,SetText:(self:DraggableLabel,Text:string)->(),SetVisible:(self:DraggableLabel,Visible: -boolean)->()}export type DraggableButton={Button:TextButton,SetText:(self:DraggableButton,Text:string)->()}export type -ButtonInfo={Text:string,Func:()->(),DoubleClick:boolean?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled -:boolean?,Visible:boolean?}export type ToggleInfo={Text:string,Default:boolean?,Callback:((boolean)->())?,Changed:(( -boolean)->())?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled:boolean?,Visible:boolean?}export type -InputInfo={Text:string,Default:string?,Finished:boolean?,Numeric:boolean?,ClearTextOnFocus:boolean?,Placeholder:string?, -AllowEmpty:boolean?,EmptyReset:string?,MaxLength:number?,Tooltip:string?,DisabledTooltip:string?,Callback:((string)->()) -?,Changed:((string)->())?,Disabled:boolean?,Visible:boolean?}export type SliderInfo={Text:string,Default:number?,Min: -number?,Max:number?,Rounding:number?,Prefix:string?,Suffix:string?,Compact:boolean?,HideMax:boolean?,FormatDisplayValue: -((Slider,number)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((number)->())?,Changed:((number)->())?, -Disabled:boolean?,Visible:boolean?}export type DropdownInfo={Text:string?,Values:{any},Default:any,DisabledValues:{any}? -,Multi:boolean?,MaxVisibleDropdownItems:number?,SpecialType:'Player'|'Team'?,ExcludeLocalPlayer:boolean?,AllowNull: -boolean?,Searchable:boolean?,FormatDisplayValue:((any)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((any -)->())?,Changed:((any)->())?,Disabled:boolean?,Visible:boolean?}export type ViewportInfo={Object:BasePart|Model,Camera: -Camera?,Clone:boolean?,AutoFocus:boolean?,Interactive:boolean?,Height:number?,Visible:boolean?}export type ImageInfo={ -Image:string,Transparency:number?,Color:Color3?,RectOffset:Vector2?,RectSize:Vector2?,ScaleType:Enum.ScaleType?,Height: -number?,Visible:boolean?}export type VideoInfo={Video:string,Looped:boolean?,Playing:boolean?,Volume:number?,Height: -number?,Visible:boolean?}export type UIPassthroughInfo={Instance:GuiBase2d,Height:number?,Visible:boolean?}export type -KeyPickerInfo={Text:string,Default:string?,Mode:'Always'|'Toggle'|'Hold'|'Press'?,Modes:{'Always'|'Toggle'|'Hold'| -'Press'}?,SyncToggleState:boolean?,NoUI:boolean?,WaitForCallback:boolean?,Callback:((boolean)->())?,ChangedCallback:(( -Enum.KeyCode|Enum.UserInputType)->())?,Changed:((Enum.KeyCode|Enum.UserInputType)->())?,Clicked:(()->())?}export type -ColorPickerInfo={Default:Color3?,Transparency:number?,Title:string?,Callback:((Color3)->())?,Changed:((Color3)->())?} -export type KeyPicker={Text:string,Value:string,Toggled:boolean,Mode:'Always'|'Toggle'|'Hold'|'Press',SyncToggleState: -boolean,Callback:(Toggled:boolean)->(),ChangedCallback:(Key:Enum.KeyCode|Enum.UserInputType)->(),Changed:(Key:Enum. -KeyCode|Enum.UserInputType)->(),Clicked:()->(),Type:'KeyPicker',Menu:ContextMenu,Display:(self:KeyPicker)->(),Update:( -self:KeyPicker)->(),GetState:(self:KeyPicker)->boolean,OnChanged:(self:KeyPicker,Func:(Key:Enum.KeyCode|Enum. +D})a1('UIListLayout',{Padding=UDim.new(0,6),Parent=P})a1('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0, +4),Parent=P})local Q,S,T,U do Q=a1('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=P})a1( +'UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=Q})aB:AddOutline(Q)aB:MakeLine(Q,{Position=UDim2.fromOffset( +0,34),Size=UDim2.new(1,0,0,1)})local V=aB:GetCustomIcon(O.IconName)or(O.IconName and aY or nil)if V then a1('ImageLabel' +,{Image=V.Url,ImageColor3=V.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=V.ImageRectOffset,ImageRectSize=V. +ImageRectSize,Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(22,22),Parent=Q})end S=a1('TextLabel',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(V and 24 or 0,0),Size=UDim2.new(1,0,0,34),Text=O.Name,TextSize=15, +TextXAlignment=Enum.TextXAlignment.Left,Parent=Q})a1('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12) +,Parent=S})T=a1('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=Q})U= +a1('UIListLayout',{Padding=UDim.new(0,8),Parent=T})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7) +,PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=T})end local V={BoxHolder=P,Holder=Q,Container=T,Tab=M, +DependencyBoxes={},Elements={}}function V.Resize(W)Q.Size=UDim2.new(1,0,0,(U.AbsoluteContentSize.Y/aB.DPIScale)+49)end +setmetatable(V,bi)V:Resize()M.Groupboxes[O.Name]=V return V end function M.AddLeftGroupbox(N,O,P)return M:AddGroupbox{ +Side=1,Name=O,IconName=P}end function M.AddRightGroupbox(N,O,P)return M:AddGroupbox{Side=2,Name=O,IconName=P}end +function M.AddTabbox(N,O)local P=a1('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2. +fromScale(1,0),Parent=O.Side==1 and C or D})a1('UIListLayout',{Padding=UDim.new(0,6),Parent=P})a1('UIPadding',{ +PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0,4),Parent=P})local Q,S do Q=a1('Frame',{BackgroundColor3= +'BackgroundColor',Size=UDim2.fromScale(1,0),Parent=P})a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=Q}) +aB:AddOutline(Q)S=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Parent=Q})a1('UIListLayout',{ +FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Parent=S})end local T={ActiveTab= +nil,BoxHolder=P,Holder=Q,Tabs={}}function T.AddTab(U,V)local W=a1('TextButton',{BackgroundColor3='MainColor', +BackgroundTransparency=0,Size=UDim2.fromOffset(0,34),Text=V,TextSize=15,TextTransparency=0.5,Parent=S})local X,Y=aB: +MakeLine(W,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,1),Size=UDim2.new(1,0,0,1)}),a1('Frame',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Visible=false,Parent=Q})local Z=a1( +'UIListLayout',{Padding=UDim.new(0,8),Parent=Y})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7), +PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=Y})local _={ButtonHolder=W,Container=Y,Tab=M,Elements={}, +DependencyBoxes={}}function _.Show(bp)if T.ActiveTab then T.ActiveTab:Hide()end W.BackgroundTransparency=1 W. +TextTransparency=0 X.Visible=false Y.Visible=true T.ActiveTab=_ _:Resize()end function _.Hide(bp)W. +BackgroundTransparency=0 W.TextTransparency=0.5 X.Visible=true Y.Visible=false T.ActiveTab=nil end function _.Resize(bp) +if T.ActiveTab~=_ then return end Q.Size=UDim2.new(1,0,0,(Z.AbsoluteContentSize.Y/aB.DPIScale)+49)end if not T.ActiveTab +then _:Show()end W.MouseButton1Click:Connect(_.Show)setmetatable(_,bi)T.Tabs[V]=_ return _ end if O.Name then M.Tabboxes +[O.Name]=T else table.insert(M.Tabboxes,T)end return T end function M.AddLeftTabbox(bp,N)return M:AddTabbox{Side=1,Name= +N}end function M.AddRightTabbox(bp,N)return M:AddTabbox{Side=2,Name=N}end function M.Hover(bp,N)if aB.ActiveTab==M then +return end am:Create(z,aB.TweenInfo,{TextTransparency=N and 0.25 or 0.5}):Play()if A then am:Create(A,aB.TweenInfo,{ +ImageTransparency=N and 0.25 or 0.5}):Play()end end function M.Show(bp)if aB.ActiveTab then aB.ActiveTab:Hide()end am: +Create(y,aB.TweenInfo,{BackgroundTransparency=0}):Play()am:Create(z,aB.TweenInfo,{TextTransparency=0}):Play()if A then +am:Create(A,aB.TweenInfo,{ImageTransparency=0}):Play()end if x then s:ShowTabInfo(v,x)end B.Visible=true M:RefreshSides( +)aB.ActiveTab=M if aB.Searching then aB:UpdateSearch(aB.SearchText)end end function M.Hide(bp)am:Create(y,aB.TweenInfo,{ +BackgroundTransparency=1}):Play()am:Create(z,aB.TweenInfo,{TextTransparency=0.5}):Play()if A then am:Create(A,aB. +TweenInfo,{ImageTransparency=0.5}):Play()end B.Visible=false s:HideTabInfo()aB.ActiveTab=nil end if not aB.ActiveTab +then M:Show()end y.MouseEnter:Connect(function()M:Hover(true)end)y.MouseLeave:Connect(function()M:Hover(false)end)y. +MouseButton1Click:Connect(M.Show)aB.Tabs[v]=M return M end function s.AddKeyTab(bp,...)local u,v,w if select('#',...)==1 +and typeof(...)=='table'then local x=select(1,...)u=x.Name or'Tab'v=x.Icon w=x.Description else u=select(1,...)or'Tab'v= +select(2,...)w=select(3,...)end v=v or'key'local x:TextButton,y,z,A v=if v=='key'then bf else aB:GetCustomIcon(v)do x= +a1('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=p})local +B=a1('UIPadding',{PaddingBottom=UDim.new(0,d and 6 or 11),PaddingLeft=UDim.new(0,d and 6 or 12),PaddingRight=UDim.new(0, +d and 6 or 12),PaddingTop=UDim.new(0,d and 6 or 11),Parent=x})y=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2. +fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=u,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment. +Left,Visible=not d,Parent=x})if v then z=a1('ImageLabel',{Image=v.Url,ImageColor3=v.Custom and'WhiteColor'or +'AccentColor',ImageRectOffset=v.ImageRectOffset,ImageRectSize=v.ImageRectSize,ImageTransparency=0.5,Size=UDim2. +fromScale(1,1),SizeConstraint=d and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=x})end table +.insert(aB.TabButtons,{Label=y,Padding=B,Icon=z})A=a1('ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y, +BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),ScrollBarThickness=0,Size=UDim2.fromScale(1,1),Visible=false, +Parent=q})a1('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Center,Padding=UDim.new(0,8),VerticalAlignment +=Enum.VerticalAlignment.Center,Parent=A})a1('UIPadding',{PaddingLeft=UDim.new(0,1),PaddingRight=UDim.new(0,1),Parent=A}) +end local B={Elements={},IsKeyTab=true}function B.AddKeyBox(C,D)assert(typeof(D)=='function', +'Callback must be a function')local E=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(0.75,0,0,21),Parent=A})local F +=a1('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,PlaceholderText='Key',Size= +UDim2.new(1,-71,1,0),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=E})a1('UIPadding',{PaddingLeft=UDim.new( +0,8),PaddingRight=UDim.new(0,8),Parent=F})local G=a1('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundColor3= +'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0),Size=UDim2.new(0,63,1,0),Text= +'Execute',TextSize=14,Parent=E})G.InputBegan:Connect(function(H)if not aK(H)then return end if not aB:MouseIsOverFrame(G +,H.Position)then return end D(F.Text)end)end function B.RefreshSides(C)end function B.Resize(C)end function B.Hover(C,D) +if aB.ActiveTab==B then return end am:Create(y,aB.TweenInfo,{TextTransparency=D and 0.25 or 0.5}):Play()if z then am: +Create(z,aB.TweenInfo,{ImageTransparency=D and 0.25 or 0.5}):Play()end end function B.Show(C)if aB.ActiveTab then aB. +ActiveTab:Hide()end am:Create(x,aB.TweenInfo,{BackgroundTransparency=0}):Play()am:Create(y,aB.TweenInfo,{ +TextTransparency=0}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=0}):Play()end A.Visible=true if w then +s:ShowTabInfo(u,w)end B:RefreshSides()aB.ActiveTab=B if aB.Searching then aB:UpdateSearch(aB.SearchText)end end function +B.Hide(C)am:Create(x,aB.TweenInfo,{BackgroundTransparency=1}):Play()am:Create(y,aB.TweenInfo,{TextTransparency=0.5}): +Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=0.5}):Play()end A.Visible=false s:HideTabInfo()aB.ActiveTab= +nil end if not aB.ActiveTab then B:Show()end x.MouseEnter:Connect(function()B:Hover(true)end)x.MouseLeave:Connect( +function()B:Hover(false)end)x.MouseButton1Click:Connect(B.Show)B.Container=A setmetatable(B,bi)aB.Tabs[u]=B return B end +function aB.Toggle(bp,u:boolean?)if typeof(u)=='boolean'then aB.Toggled=u else aB.Toggled=not aB.Toggled end e.Visible= +aB.Toggled if bk.UnlockMouseWhileOpen then a5.Modal=aB.Toggled end if aB.Toggled and not aB.IsMobile then local v=aj. +MouseIconEnabled pcall(function()ah:UnbindFromRenderStep'ShowCursor'end)ah:BindToRenderStep('ShowCursor',Enum. +RenderPriority.Last.Value,function()aj.MouseIconEnabled=not aB.ShowCustomCursor a6.Position=UDim2.fromOffset(as.X,as.Y) +a6.Visible=aB.ShowCustomCursor if not(aB.Toggled and a4 and a4.Parent)then aj.MouseIconEnabled=v a6.Visible=false ah: +UnbindFromRenderStep'ShowCursor'end end)elseif not aB.Toggled then ba.Visible=false for v,w in aB.Options do if w.Type== +'ColorPicker'then w.ColorMenu:Close()w.ContextMenu:Close()elseif w.Type=='Dropdown'or w.Type=='KeyPicker'then w.Menu: +Close()end end end end if bk.EnableSidebarResize then local bp,u,v,w,x,y=(bk.MinSidebarWidth+bk.SidebarCompactWidth)*bk. +SidebarCollapseThreshold,false,(a1('TextButton',{AnchorPoint=Vector2.new(0.5,0),BackgroundTransparency=1,Position=UDim2. +fromScale(0.5,0),Size=UDim2.new(0,8,1,0),Text='',Parent=f}))v.MouseEnter:Connect(function()am:Create(f,aB.TweenInfo,{ +BackgroundColor3=aB:GetLighterColor(aB.Scheme.OutlineColor)}):Play()end)v.MouseLeave:Connect(function()if u then return +end am:Create(f,aB.TweenInfo,{BackgroundColor3=aB.Scheme.OutlineColor}):Play()end)v.InputBegan:Connect(function(z: +InputObject)if not aK(z)then return end aB.CantDragForced=true w=z.Position x=s:GetSidebarWidth()u=true y=z.Changed: +Connect(function()if z.UserInputState~=Enum.UserInputState.End then return end aB.CantDragForced=false am:Create(f,aB. +TweenInfo,{BackgroundColor3=aB.Scheme.OutlineColor}):Play()u=false if y and y.Connected then y:Disconnect()y=nil end end +)end)aB:GiveSignal(aj.InputChanged:Connect(function(z:InputObject)if not aB.Toggled or not(a4 and a4.Parent)then u=false +if y and y.Connected then y:Disconnect()y=nil end return end if u and aL(z)then local A=z.Position-w local B=x+A.X if bk +.DisableCompactingSnap then s:SetSidebarWidth(B)return end if B>bp then s:SetSidebarWidth(math.max(B,bk.MinSidebarWidth) +)else s:SetSidebarWidth(bk.SidebarCompactWidth)end end end))end if bk.EnableCompacting and bk.SidebarCompacted then s: +SetSidebarWidth(bk.SidebarCompactWidth)end if bk.AutoShow then task.spawn(aB.Toggle)end if aB.IsMobile then local bp,u= +aB:AddDraggableButton('Toggle',function()aB:Toggle()end,true),aB:AddDraggableButton('Lock',function(bp)aB.CantDragForced +=not aB.CantDragForced bp:SetText(aB.CantDragForced and'Unlock'or'Lock')end,true)if bk.MobileButtonsSide=='Right'then bp +.Button.Position=UDim2.new(1,-6,0,6)bp.Button.AnchorPoint=Vector2.new(1,0)u.Button.Position=UDim2.new(1,-6,0,46)u.Button +.AnchorPoint=Vector2.new(1,0)else u.Button.Position=UDim2.fromOffset(6,46)end end k:GetPropertyChangedSignal'Text': +Connect(function()aB:UpdateSearch(k.Text)end)aB:GiveSignal(aj.InputBegan:Connect(function(bp:InputObject)if aB.Unloaded +then return end if aj:GetFocusedTextBox()then return end if(typeof(aB.ToggleKeybind)=='table'and aB.ToggleKeybind.Type== +'KeyPicker'and bp.KeyCode.Name==aB.ToggleKeybind.Value)or bp.KeyCode==aB.ToggleKeybind then aB.Toggle()end end))aB: +GiveSignal(aj.WindowFocused:Connect(function()aB.IsRobloxFocused=true end))aB:GiveSignal(aj.WindowFocusReleased:Connect( +function()aB.IsRobloxFocused=false end))return s end local function bj()if aB.Unloaded then return end local bk,bl=aS(), +aS(true)for bm,bn in aw do if bn.Type=='Dropdown'and bn.SpecialType=='Player'then bn:SetValues(bn.ExcludeLocalPlayer and +bl or bk)end end end local function bk()if aB.Unloaded then return end local bl=aT()for bm,bn in aw do if bn.Type== +'Dropdown'and bn.SpecialType=='Team'then bn:SetValues(bl)end end end aB:GiveSignal(ag.PlayerAdded:Connect(bj))aB: +GiveSignal(ag.PlayerRemoving:Connect(bj))aB:GiveSignal(al.ChildAdded:Connect(bk))aB:GiveSignal(al.ChildRemoved:Connect( +bk))an().Library=aB return aB end)()end,[9]=function()local aa,ab,ac=a(9)local ad return(function(...)export type Scheme +={BackgroundColor:Color3,MainColor:Color3,AccentColor:Color3,OutlineColor:Color3,FontColor:Color3,Font:Font,RedColor: +Color3,DarkColor:Color3,WhiteColor:Color3}export type Icon={Url:string,ImageRectOffset:Vector2,ImageRectSize:Vector2} +export type ContextMenu={Active:boolean,Holder:GuiObject,Menu:GuiObject,List:UIListLayout?,Signal:RBXScriptConnection?, +Size:UDim2|(()->UDim2),Open:(self:ContextMenu)->(),Close:(self:ContextMenu)->(),Toggle:(self:ContextMenu)->(),SetSize:( +self:ContextMenu,Size:UDim2|(()->UDim2))->()}export type Tooltip={Disabled:boolean,Hovering:boolean,Signals:{[number]: +RBXScriptConnection},Destroy:(self:Tooltip)->()}export type Notification={Title:string?,Description:string,Time:number| +Instance,SoundId:string|number?,Steps:number?,Persist:boolean?,Destroyed:boolean,Resize:(self:Notification)->(), +ChangeTitle:(self:Notification,Text:string)->(),ChangeDescription:(self:Notification,Text:string)->(),ChangeStep:(self: +Notification,NewStep:number)->(),Destroy:(self:Notification)->()}export type KeybindToggle={Normal:boolean,Holder: +TextButton,Label:TextLabel,Checkbox:Frame,Loaded:boolean,Display:(self:KeybindToggle,State:boolean)->(),SetText:(self: +KeybindToggle,Text:string)->(),SetVisibility:(self:KeybindToggle,Visibility:boolean)->(),SetNormal:(self:KeybindToggle, +Normal:boolean)->()}export type DraggableLabel={Label:TextLabel,SetText:(self:DraggableLabel,Text:string)->(),SetVisible +:(self:DraggableLabel,Visible:boolean)->()}export type DraggableButton={Button:TextButton,SetText:(self:DraggableButton, +Text:string)->()}export type ButtonInfo={Text:string,Func:()->(),DoubleClick:boolean?,Tooltip:string?,DisabledTooltip: +string?,Risky:boolean?,Disabled:boolean?,Visible:boolean?}export type ToggleInfo={Text:string,Default:boolean?,Callback: +((boolean)->())?,Changed:((boolean)->())?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled:boolean?, +Visible:boolean?}export type InputInfo={Text:string,Default:string?,Finished:boolean?,Numeric:boolean?,ClearTextOnFocus: +boolean?,Placeholder:string?,AllowEmpty:boolean?,EmptyReset:string?,MaxLength:number?,Tooltip:string?,DisabledTooltip: +string?,Callback:((string)->())?,Changed:((string)->())?,Disabled:boolean?,Visible:boolean?}export type SliderInfo={Text +:string,Default:number?,Min:number?,Max:number?,Rounding:number?,Prefix:string?,Suffix:string?,Compact:boolean?,HideMax: +boolean?,FormatDisplayValue:((Slider,number)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((number)->())?, +Changed:((number)->())?,Disabled:boolean?,Visible:boolean?}export type DropdownInfo={Text:string?,Values:{any},Default: +any,DisabledValues:{any}?,Multi:boolean?,MaxVisibleDropdownItems:number?,SpecialType:'Player'|'Team'?,ExcludeLocalPlayer +:boolean?,AllowNull:boolean?,Searchable:boolean?,FormatDisplayValue:((any)->string)?,Tooltip:string?,DisabledTooltip: +string?,Callback:((any)->())?,Changed:((any)->())?,Disabled:boolean?,Visible:boolean?}export type ViewportInfo={Object: +BasePart|Model,Camera:Camera?,Clone:boolean?,AutoFocus:boolean?,Interactive:boolean?,Height:number?,Visible:boolean?} +export type ImageInfo={Image:string,Transparency:number?,Color:Color3?,RectOffset:Vector2?,RectSize:Vector2?,ScaleType: +Enum.ScaleType?,Height:number?,Visible:boolean?}export type VideoInfo={Video:string,Looped:boolean?,Playing:boolean?, +Volume:number?,Height:number?,Visible:boolean?}export type UIPassthroughInfo={Instance:GuiBase2d,Height:number?,Visible: +boolean?}export type KeyPickerInfo={Text:string,Default:string?,Mode:'Always'|'Toggle'|'Hold'|'Press'?,Modes:{'Always'| +'Toggle'|'Hold'|'Press'}?,SyncToggleState:boolean?,NoUI:boolean?,WaitForCallback:boolean?,Callback:((boolean)->())?, +ChangedCallback:((Enum.KeyCode|Enum.UserInputType)->())?,Changed:((Enum.KeyCode|Enum.UserInputType)->())?,Clicked:(()->( +))?}export type ColorPickerInfo={Default:Color3?,Transparency:number?,Title:string?,Callback:((Color3)->())?,Changed:(( +Color3)->())?}export type KeyPicker={Text:string,Value:string,Toggled:boolean,Mode:'Always'|'Toggle'|'Hold'|'Press', +SyncToggleState:boolean,Callback:(Toggled:boolean)->(),ChangedCallback:(Key:Enum.KeyCode|Enum.UserInputType)->(),Changed +:(Key:Enum.KeyCode|Enum.UserInputType)->(),Clicked:()->(),Type:'KeyPicker',Menu:ContextMenu,Display:(self:KeyPicker)->() +,Update:(self:KeyPicker)->(),GetState:(self:KeyPicker)->boolean,OnChanged:(self:KeyPicker,Func:(Key:Enum.KeyCode|Enum. UserInputType)->())->(),OnClick:(self:KeyPicker,Func:()->())->(),DoClick:(self:KeyPicker)->(),SetValue:(self:KeyPicker, Data:{string})->(),SetText:(self:KeyPicker,Text:string)->()}export type ColorPicker={Value:Color3,Transparency:number, Title:string?,Callback:(Value:Color3)->(),Changed:(Value:Color3)->(),Type:'ColorPicker',Hue:number,Sat:number,Vib:number @@ -2645,148 +2647,155 @@ end)()end,[24]=function()local aa,ab,ac=a(24)local ad return(function(...)local then return nil end return am:FindFirstChildOfClass'Humanoid'end local function al(am)local an=ak()if not an then return false end an.WalkSpeed=am.WalkSpeed if an.UseJumpPower~=nil then an.UseJumpPower=true end if an.JumpPower~=nil then an. JumpPower=am.JumpPower else an.JumpHeight=am.JumpHeight end return true end function aj.build(am,an)print -'[LOG] Initializing Player features...'local ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH={WalkSpeed=16, -JumpPower=50,JumpHeight=7.2},false,false,false,false,false,false,false,false,false,false,false,false,false,false,false, -false,false,false,an.Player:AddLeftGroupbox('Player','rbxassetid://120044548842840')aH:AddButton{Text='Respawn (Self)', -Func=function()local aI=ak()if aI then aI.Health=0 am:Notify{Title='Respawn',Description='Du wirst neu gespawnt.',Time=2 -}else am:Notify{Title='Respawn',Description='Kein Character gefunden.',Time=2}end end}aH:AddButton{Text='Apply Movement' -,Func=function()if al(ao)then am:Notify{Title='Movement',Description='Werte angewendet.',Time=2}else am:Notify{Title= -'Movement',Description='Kein Character gefunden.',Time=2}end end}aH:AddButton{Text='Reset Movement',Func=function()ao. -WalkSpeed=16 ao.JumpPower=50 ao.JumpHeight=7.2 if al(ao)then am:Notify{Title='Movement',Description= -'Standardwerte gesetzt.',Time=2}end end}aH:AddButton{Text='Fix Camera',Func=function()local aI,aJ=ae.LocalPlayer,ai. -CurrentCamera if aI and aI.Character and aI.Character:FindFirstChild'HumanoidRootPart'then local aK,aL=aI.Character. -HumanoidRootPart,ak()if aL then local aM,aN=aL.CameraOffset,CFrame.new(aK.Position+Vector3.new(0,2,5),aK.Position)aJ. -CFrame=aN am:Notify{Title='Camera',Description='Kamera zur\u{fc}ckgesetzt.',Time=2}end else am:Notify{Title='Camera', -Description='Kein Character gefunden.',Time=2}end end}aH:AddToggle('SpeedBoost',{Text= -'Speed Boost (Shift f\u{fc}r Turbo)',Default=false,Callback=function(aI)ap=aI if aI then am:Notify{Title='Speed Boost', -Description='Speed Boost aktiviert. Halte Shift f\u{fc}r Turbo.',Time=2}else local aJ=ak()if aJ then aJ.WalkSpeed=ao. -WalkSpeed end am:Notify{Title='Speed Boost',Description='Speed Boost deaktiviert.',Time=2}end end})aH:AddToggle( -'InfiniteJump',{Text='Infinite Jump',Default=false,Callback=function(aI)aq=aI if aI then am:Notify{Title='Infinite Jump' +'[LOG] Initializing Player features...'local ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ={ +WalkSpeed=16,JumpPower=50,JumpHeight=7.2},false,false,false,false,false,false,false,false,false,false,false,false,false, +false,false,false,false,false,false,(an.Player:AddLeftGroupbox('Player','rbxassetid://120044548842840'))aI:AddButton{ +Text='Respawn (Self)',Func=function()local aK=ak()if aK then aK.Health=0 am:Notify{Title='Respawn',Description= +'Du wirst neu gespawnt.',Time=2}else am:Notify{Title='Respawn',Description='Kein Character gefunden.',Time=2}end end}aI: +AddButton{Text='Apply Movement',Func=function()if al(ao)then am:Notify{Title='Movement',Description='Werte angewendet.', +Time=2}else am:Notify{Title='Movement',Description='Kein Character gefunden.',Time=2}end end}aI:AddButton{Text= +'Reset Movement',Func=function()ao.WalkSpeed=16 ao.JumpPower=50 ao.JumpHeight=7.2 if al(ao)then am:Notify{Title= +'Movement',Description='Standardwerte gesetzt.',Time=2}end end}aI:AddButton{Text='Fix Camera',Func=function()local aK,aL +=ae.LocalPlayer,ai.CurrentCamera if aK and aK.Character and aK.Character:FindFirstChild'HumanoidRootPart'then local aM, +aN=aK.Character.HumanoidRootPart,ak()if aN then local aO,aP=aN.CameraOffset,CFrame.new(aM.Position+Vector3.new(0,2,5),aM +.Position)aL.CFrame=aP am:Notify{Title='Camera',Description='Kamera zur\u{fc}ckgesetzt.',Time=2}end else am:Notify{Title +='Camera',Description='Kein Character gefunden.',Time=2}end end}aI:AddToggle('SpeedBoost',{Text= +'Speed Boost (Shift f\u{fc}r Turbo)',Default=false,Callback=function(aK)ap=aK if aK then am:Notify{Title='Speed Boost', +Description='Speed Boost aktiviert. Halte Shift f\u{fc}r Turbo.',Time=2}else local aL=ak()if aL then aL.WalkSpeed=ao. +WalkSpeed end am:Notify{Title='Speed Boost',Description='Speed Boost deaktiviert.',Time=2}end end})aI:AddToggle( +'InfiniteJump',{Text='Infinite Jump',Default=false,Callback=function(aK)aq=aK if aK then am:Notify{Title='Infinite Jump' ,Description='Unendliche Spr\u{fc}nge aktiviert.',Time=2}else am:Notify{Title='Infinite Jump',Description= -'Unendliche Spr\u{fc}nge deaktiviert.',Time=2}end end})aH:AddToggle('Fullbright',{Text='Fullbright',Default=false, -Callback=function(aI)ar=aI if aI then ag.Brightness=2 ag.FogEnd=100000 am:Notify{Title='Fullbright',Description= +'Unendliche Spr\u{fc}nge deaktiviert.',Time=2}end end})aI:AddToggle('Fullbright',{Text='Fullbright',Default=false, +Callback=function(aK)ar=aK if aK then ag.Brightness=2 ag.FogEnd=100000 am:Notify{Title='Fullbright',Description= 'Beleuchtung maximiert.',Time=2}else ag.Brightness=1 ag.FogEnd=1000 am:Notify{Title='Fullbright',Description= -'Beleuchtung zur\u{fc}ckgesetzt.',Time=2}end end})aH:AddToggle('Godmode',{Text='Godmode (Unkillable)',Default=false, -Callback=function(aI)as=aI local aJ=ak()if aJ then if aI then aJ.Health=100 local aK=aJ.HealthChanged:Connect(function( -aK)if aK<100 then aJ.Health=100 end end)aJ:SetAttribute('GodmodeConnection',aK)am:Notify{Title='Godmode',Description= -'Godmode aktiviert.',Time=2}else local aK=aJ:GetAttribute'GodmodeConnection'if aK then aK:Disconnect()aJ:SetAttribute( +'Beleuchtung zur\u{fc}ckgesetzt.',Time=2}end end})aI:AddToggle('Godmode',{Text='Godmode (Unkillable)',Default=false, +Callback=function(aK)as=aK local aL=ak()if aL then if aK then aL.Health=100 local aM=aL.HealthChanged:Connect(function( +aM)if aM<100 then aL.Health=100 end end)aL:SetAttribute('GodmodeConnection',aM)am:Notify{Title='Godmode',Description= +'Godmode aktiviert.',Time=2}else local aM=aL:GetAttribute'GodmodeConnection'if aM then aM:Disconnect()aL:SetAttribute( 'GodmodeConnection',nil)end am:Notify{Title='Godmode',Description='Godmode deaktiviert.',Time=2}end else am:Notify{Title -='Godmode',Description='Kein Character gefunden.',Time=2}end end})aH:AddToggle('ClickTeleport',{Text= -'Click Teleport (Rechtsklick)',Default=false,Callback=function(aI)at=aI if aI then am:Notify{Title='Click Teleport', +='Godmode',Description='Kein Character gefunden.',Time=2}end end})aI:AddToggle('AntiFling',{Text='Anti Fling',Default= +false,Callback=function(aK)aH=aK if aK then if aJ then aJ:Disconnect()aJ=nil end aJ=ah.Heartbeat:Connect(function()local +aL=ae.LocalPlayer local aM=aL and aL.Character if not aM then return end local aN=aM:FindFirstChild'HumanoidRootPart'if +aN then local aO,aP=aN.AssemblyLinearVelocity,aN.AssemblyAngularVelocity if aO.Magnitude>120 then aN. +AssemblyLinearVelocity=Vector3.zero end if aP.Magnitude>120 then aN.AssemblyAngularVelocity=Vector3.zero end end end)am: +Notify{Title='Anti Fling',Description='Anti Fling aktiviert.',Time=2}else if aJ then aJ:Disconnect()aJ=nil end am:Notify +{Title='Anti Fling',Description='Anti Fling deaktiviert.',Time=2}end end})aI:AddToggle('ClickTeleport',{Text= +'Click Teleport (Rechtsklick)',Default=false,Callback=function(aK)at=aK if aK then am:Notify{Title='Click Teleport', Description='Rechtsklick zum Teleportieren aktiviert.',Time=2}else am:Notify{Title='Click Teleport',Description= -'Click Teleport deaktiviert.',Time=2}end end})aH:AddToggle('Fling',{Text='Self-Fling',Default=false,Callback=function(aI -)au=aI local aJ=ae.LocalPlayer if aJ and aJ.Character and aJ.Character:FindFirstChild'HumanoidRootPart'then if aI then -local aK=Instance.new'BodyVelocity'aK.Velocity=Vector3.new(0,100,0)aK.MaxForce=Vector3.new(4000,4000,4000)aK.Parent=aJ. -Character.HumanoidRootPart wait(0.5)aK:Destroy()am:Notify{Title='Fling',Description='Self-Fling ausgef\u{fc}hrt.',Time=2 +'Click Teleport deaktiviert.',Time=2}end end})aI:AddToggle('Fling',{Text='Self-Fling',Default=false,Callback=function(aK +)au=aK local aL=ae.LocalPlayer if aL and aL.Character and aL.Character:FindFirstChild'HumanoidRootPart'then if aK then +local aM=Instance.new'BodyVelocity'aM.Velocity=Vector3.new(0,100,0)aM.MaxForce=Vector3.new(4000,4000,4000)aM.Parent=aL. +Character.HumanoidRootPart wait(0.5)aM:Destroy()am:Notify{Title='Fling',Description='Self-Fling ausgef\u{fc}hrt.',Time=2 }else am:Notify{Title='Fling',Description='Fling bereit.',Time=2}end else am:Notify{Title='Fling',Description= -'Kein Character gefunden.',Time=2}end end})aH:AddToggle('HipHeight',{Text='High Hip Height',Default=false,Callback= -function(aI)av=aI local aJ=ak()if aJ then if aI then aJ.HipHeight=50 am:Notify{Title='Hip Height',Description= -'H\u{fc}fth\u{f6}he auf 50 erh\u{f6}ht.',Time=2}else aJ.HipHeight=0 am:Notify{Title='Hip Height',Description= +'Kein Character gefunden.',Time=2}end end})aI:AddToggle('HipHeight',{Text='High Hip Height',Default=false,Callback= +function(aK)av=aK local aL=ak()if aL then if aK then aL.HipHeight=50 am:Notify{Title='Hip Height',Description= +'H\u{fc}fth\u{f6}he auf 50 erh\u{f6}ht.',Time=2}else aL.HipHeight=0 am:Notify{Title='Hip Height',Description= 'H\u{fc}fth\u{f6}he zur\u{fc}ckgesetzt.',Time=2}end else am:Notify{Title='Hip Height',Description= -'Kein Humanoid gefunden.',Time=2}end end})aH:AddToggle('StareLock',{Text='Stare Lock',Default=false,Callback=function(aI -)aw=aI if aI then am:Notify{Title='Stare Lock',Description='Stare Lock aktiviert.',Time=2}else am:Notify{Title= -'Stare Lock',Description='Stare Lock deaktiviert.',Time=2}end end})aH:AddToggle('CustomFOVToggle',{Text='Custom FOV', -Default=false,Callback=function(aI)ax=aI if aI then ai.CurrentCamera.FieldOfView=70 am:Notify{Title='Custom FOV', +'Kein Humanoid gefunden.',Time=2}end end})aI:AddToggle('StareLock',{Text='Stare Lock',Default=false,Callback=function(aK +)aw=aK if aK then am:Notify{Title='Stare Lock',Description='Stare Lock aktiviert.',Time=2}else am:Notify{Title= +'Stare Lock',Description='Stare Lock deaktiviert.',Time=2}end end})aI:AddToggle('CustomFOVToggle',{Text='Custom FOV', +Default=false,Callback=function(aK)ax=aK if aK then ai.CurrentCamera.FieldOfView=70 am:Notify{Title='Custom FOV', Description='Custom FOV aktiviert.',Time=2}else ai.CurrentCamera.FieldOfView=70 am:Notify{Title='Custom FOV',Description -='Custom FOV deaktiviert.',Time=2}end end})local aI=an.Player:AddRightGroupbox('Movement & Camera', -'rbxassetid://118473315376201')aI:AddSlider('LocalWalkSpeed',{Text='WalkSpeed',Default=ao.WalkSpeed,Min=8,Max=80, -Rounding=0,Callback=function(aJ)ao.WalkSpeed=aJ end})aI:AddSlider('LocalJumpPower',{Text='JumpPower',Default=ao. -JumpPower,Min=25,Max=120,Rounding=0,Callback=function(aJ)ao.JumpPower=aJ ao.JumpHeight=aJ/7 end})aI:AddSlider( -'CustomFOV',{Text='Custom FOV',Default=70,Min=50,Max=120,Rounding=0,Callback=function(aJ)if ax then ai.CurrentCamera. -FieldOfView=aJ end end})aI:AddToggle('CameraModes',{Text='Camera Modes',Default=false,Callback=function(aJ)ay=aJ local -aK,aL=ai.CurrentCamera,ae.LocalPlayer if aJ then if aL and aL.Character and aL.Character:FindFirstChild -'HumanoidRootPart'then local aM=aL.Character.HumanoidRootPart aK.CameraType=Enum.CameraType.Scriptable local aN,aO=aM. -Position+Vector3.new(0,50,0),aM.Position aK.CFrame=CFrame.new(aN,aO)am:Notify{Title='Camera Mode',Description= +='Custom FOV deaktiviert.',Time=2}end end})local aK=an.Player:AddRightGroupbox('Movement & Camera', +'rbxassetid://118473315376201')aK:AddSlider('LocalWalkSpeed',{Text='WalkSpeed',Default=ao.WalkSpeed,Min=8,Max=80, +Rounding=0,Callback=function(aL)ao.WalkSpeed=aL end})aK:AddSlider('LocalJumpPower',{Text='JumpPower',Default=ao. +JumpPower,Min=25,Max=120,Rounding=0,Callback=function(aL)ao.JumpPower=aL ao.JumpHeight=aL/7 end})aK:AddSlider( +'CustomFOV',{Text='Custom FOV',Default=70,Min=50,Max=120,Rounding=0,Callback=function(aL)if ax then ai.CurrentCamera. +FieldOfView=aL end end})aK:AddToggle('CameraModes',{Text='Camera Modes',Default=false,Callback=function(aL)ay=aL local +aM,aN=ai.CurrentCamera,ae.LocalPlayer if aL then if aN and aN.Character and aN.Character:FindFirstChild +'HumanoidRootPart'then local aO=aN.Character.HumanoidRootPart aM.CameraType=Enum.CameraType.Scriptable local aP,aR=aO. +Position+Vector3.new(0,50,0),aO.Position aM.CFrame=CFrame.new(aP,aR)am:Notify{Title='Camera Mode',Description= 'Top-Down Kamera aktiviert.',Time=2}else am:Notify{Title='Camera Mode',Description='Kein Character gefunden.',Time=2}end -else aK.CameraType=Enum.CameraType.Custom am:Notify{Title='Camera Mode',Description='Standard Kamera wiederhergestellt.' -,Time=2}end end})aI:AddToggle('PostEffects',{Text='Post Effects (Night Vision)',Default=false,Callback=function(aJ)az=aJ -if aJ then local aK=Instance.new'ColorCorrectionEffect'aK.TintColor=Color3.fromRGB(0,255,0)aK.Saturation=-0.5 aK.Parent= -ag local aL=Instance.new'BloomEffect'aL.Intensity=1 aL.Size=24 aL.Threshold=0.8 aL.Parent=ag ag.Brightness=3 am:Notify{ -Title='Post Effects',Description='Night Vision aktiviert.',Time=2}else for aK,aL in ag:GetChildren()do if aL:IsA -'ColorCorrectionEffect'or aL:IsA'BloomEffect'or aL:IsA'BlurEffect'then aL:Destroy()end end ag.Brightness=1 am:Notify{ -Title='Post Effects',Description='Effekte entfernt.',Time=2}end end})aI:AddToggle('FirstPersonLock',{Text= -'First Person Lock',Default=false,Callback=function(aJ)aA=aJ local aK=ae.LocalPlayer if aK then if aJ then aK.CameraMode -=Enum.CameraMode.LockFirstPerson af.MouseBehavior=Enum.MouseBehavior.LockCenter local aL=ak()if aL then aL.CameraOffset= -Vector3.new(0,0,0)end am:Notify{Title='Camera Lock',Description='First Person aktiviert.',Time=2}else aK.CameraMode=Enum -.CameraMode.Classic af.MouseBehavior=Enum.MouseBehavior.Default local aL=ak()if aL then aL.CameraOffset=Vector3.new(0,0, -0)end am:Notify{Title='Camera Lock',Description='Standard Kamera aktiviert.',Time=2}end end end})aI:AddToggle( -'Hitmarker',{Text='Hitmarker/Damage Indicator',Default=false,Callback=function(aJ)aB=aJ local aK=ak()if aK then if aJ -then local aL=aK.HealthChanged:Connect(function(aL)local aM=aK:GetAttribute'LastHealth'or aK.MaxHealth if aL#aK then aN=1 end local aO=aK[aN]if aO~=ae.LocalPlayer then ae.LocalPlayer:SetAttribute('SpectatorTarget',aO)am: -Notify{Title='Spectator',Description='Folge nun '..aO.Name,Time=2}end end end else am:Notify{Title='Spectator', -Description='Aktiviere Spectator Mode zuerst.',Time=2}end end}aJ:AddToggle('MacroRecorder',{Text='Macro Recorder', -Default=false,Callback=function(aK)aE=aK if aK then ae.LocalPlayer:SetAttribute('MacroRecording',true)ae.LocalPlayer: +'Kein Humanoid gefunden.',Time=2}end end})aK:AddToggle('SpectatorMode',{Text='Spectator Mode',Default=false,Callback= +function(aL)aC=aL local aM=ai.CurrentCamera if aL then local aN=ae:GetPlayers()local aO=aN[1]~=ae.LocalPlayer and aN[1] +or aN[2]if aO and aO.Character and aO.Character:FindFirstChild'HumanoidRootPart'then aM.CameraType=Enum.CameraType. +Scriptable ae.LocalPlayer:SetAttribute('SpectatorTarget',aO)am:Notify{Title='Spectator',Description= +'Spectator Mode aktiviert. Folge '..aO.Name,Time=2}else am:Notify{Title='Spectator',Description='Kein Ziel gefunden.', +Time=2}end else aM.CameraType=Enum.CameraType.Custom ae.LocalPlayer:SetAttribute('SpectatorTarget',nil)am:Notify{Title= +'Spectator',Description='Spectator Mode deaktiviert.',Time=2}end end})aK:AddToggle('UICleaner',{Text= +'UI Cleaner / Focus Mode',Default=false,Callback=function(aL)aF=aL local aM=ae.LocalPlayer:WaitForChild'PlayerGui'if aL +then local aN={}for aO,aP in aM:GetChildren()do if aP:IsA'ScreenGui'and aP.Name~='Obsidian'then aP.Enabled=false table. +insert(aN,aP)end end ae.LocalPlayer:SetAttribute('HiddenGUIs',aN)am:Notify{Title='UI Cleaner',Description= +'Andere UIs ausgeblendet.',Time=2}else local aN=ae.LocalPlayer:GetAttribute'HiddenGUIs'or{}for aO,aP in aN do if aP and +aP.Parent then aP.Enabled=true end end ae.LocalPlayer:SetAttribute('HiddenGUIs',nil)am:Notify{Title='UI Cleaner', +Description='UIs wiederhergestellt.',Time=2}end end})local aL=an.Player:AddLeftGroupbox('Advanced Features', +'rbxassetid://110420827043048')aL:AddButton{Text='Prev Player',Func=function()if aC then local aM,aN=ae:GetPlayers(),ae. +LocalPlayer:GetAttribute'SpectatorTarget'if aN then local aO=table.find(aM,aN)if aO then local aP=aO-1 if aP<1 then aP=# +aM end local aR=aM[aP]if aR~=ae.LocalPlayer then ae.LocalPlayer:SetAttribute('SpectatorTarget',aR)am:Notify{Title= +'Spectator',Description='Folge nun '..aR.Name,Time=2}end end end else am:Notify{Title='Spectator',Description= +'Aktiviere Spectator Mode zuerst.',Time=2}end end}aL:AddButton{Text='Next Player',Func=function()if aC then local aM,aN= +ae:GetPlayers(),ae.LocalPlayer:GetAttribute'SpectatorTarget'if aN then local aO=table.find(aM,aN)if aO then local aP=aO+ +1 if aP>#aM then aP=1 end local aR=aM[aP]if aR~=ae.LocalPlayer then ae.LocalPlayer:SetAttribute('SpectatorTarget',aR)am: +Notify{Title='Spectator',Description='Folge nun '..aR.Name,Time=2}end end end else am:Notify{Title='Spectator', +Description='Aktiviere Spectator Mode zuerst.',Time=2}end end}aL:AddToggle('MacroRecorder',{Text='Macro Recorder', +Default=false,Callback=function(aM)aE=aM if aM then ae.LocalPlayer:SetAttribute('MacroRecording',true)ae.LocalPlayer: SetAttribute('MacroInputs',{})am:Notify{Title='Macro',Description= -'Aufnahme gestartet. Dr\u{fc}cke Eingaben f\u{fc}r 5 Sekunden.',Time=3}wait(5)local aL=ae.LocalPlayer:GetAttribute -'MacroInputs'or{}ae.LocalPlayer:SetAttribute('RecordedMacro',aL)ae.LocalPlayer:SetAttribute('MacroRecording',false)am: -Notify{Title='Macro',Description=#aL..' Eingaben aufgezeichnet.',Time=2}else ae.LocalPlayer:SetAttribute( -'MacroRecording',false)am:Notify{Title='Macro',Description='Aufnahme gestoppt.',Time=2}end end})aJ:AddButton{Text= -'Play Macro',Func=function()local aK=ae.LocalPlayer:GetAttribute'RecordedMacro'if aK and#aK>0 then am:Notify{Title= -'Macro',Description='Spiele Macro ab...',Time=2}for aL,aM in ipairs(aK)do if aM.UserInputType==Enum.UserInputType. -Keyboard then print('[MACRO] Key: '..aM.KeyCode.Name)elseif aM.UserInputType==Enum.UserInputType.MouseButton1 then print +'Aufnahme gestartet. Dr\u{fc}cke Eingaben f\u{fc}r 5 Sekunden.',Time=3}wait(5)local aN=ae.LocalPlayer:GetAttribute +'MacroInputs'or{}ae.LocalPlayer:SetAttribute('RecordedMacro',aN)ae.LocalPlayer:SetAttribute('MacroRecording',false)am: +Notify{Title='Macro',Description=#aN..' Eingaben aufgezeichnet.',Time=2}else ae.LocalPlayer:SetAttribute( +'MacroRecording',false)am:Notify{Title='Macro',Description='Aufnahme gestoppt.',Time=2}end end})aL:AddButton{Text= +'Play Macro',Func=function()local aM=ae.LocalPlayer:GetAttribute'RecordedMacro'if aM and#aM>0 then am:Notify{Title= +'Macro',Description='Spiele Macro ab...',Time=2}for aN,aO in ipairs(aM)do if aO.UserInputType==Enum.UserInputType. +Keyboard then print('[MACRO] Key: '..aO.KeyCode.Name)elseif aO.UserInputType==Enum.UserInputType.MouseButton1 then print '[MACRO] Mouse Click'end wait(0.1)end am:Notify{Title='Macro',Description='Macro abgespielt.',Time=2}else am:Notify{ -Title='Macro',Description='Kein Macro aufgezeichnet.',Time=2}end end}local aK,aL,aM ah.RenderStepped:Connect(function() -if ap then local aN=ak()if aN then local aO=af:IsKeyDown(Enum.KeyCode.LeftShift)or af:IsKeyDown(Enum.KeyCode.RightShift) -aN.WalkSpeed=aO and 100 or ao.WalkSpeed end end if aw then local aN,aO=ae.LocalPlayer,ai.CurrentCamera if aN and aN. -Character and aN.Character:FindFirstChild'HumanoidRootPart'then local aP,aR=100 for aS,aT in ae:GetPlayers()do if aT~=aN -and aT.Character and aT.Character:FindFirstChild'HumanoidRootPart'then local aU=(aT.Character.HumanoidRootPart.Position- -aN.Character.HumanoidRootPart.Position).Magnitude if aU