return function(m)local M=service.Players.LocalPlayer local C=M.PlayerGui local r=script.Parent.Parent local e=r.Frame local c=r.Frame.TextBox local l=r.Frame.ScrollingFrame local w=r.Frame.PlayerList local D=r.Entry local R=gTable.BindEvent local f=false local j=false local G=false local p=client.Remote.Get("\083\101\116\116\105\110\103",{"\083\112\108\105\116\075\101\121";"\067\111\110\115\111\108\101\075\101\121\067\111\100\101","\066\097\116\099\104\075\101\121"})local Z=p.SplitKey local N=p.ConsoleKeyCode local v=p.BatchKey local g=client.Remote.Get("\070\111\114\109\097\116\116\101\100\067\111\109\109\097\110\100\115")or{}e.Position=UDim2.new(0,0,0,-200)e.Visible=false e.Size=UDim2.new(1,0,0,40)l.Visible=false if client.Variables.ConsoleOpen then if client.Variables.ChatEnabled then service.StarterGui:SetCoreGuiEnabled("\067\104\097\116",true)end if client.Variables.PlayerListEnabled then service.StarterGui:SetCoreGuiEnabled("\080\108\097\121\101\114\076\105\115\116",true)end if client.UI.Get("\078\111\116\105\102")then(client.UI.Get("\078\111\116\105\102",nil,true)).Object.LABEL.Visible=true end local m=client.UI.Get("\067\104\097\116",nil,true)if m then m.Object.Drag.Visible=true end local M=client.UI.Get("\080\108\097\121\101\114\076\105\115\116",nil,true)if M then M.Object.Drag.Visible=true end local C=client.UI.Get("\072\105\110\116\072\111\108\100\101\114",nil,true)if C then C.Object.Frame.Visible=true end end client.Variables.ChatEnabled=service.StarterGui:GetCoreGuiEnabled("\067\104\097\116")client.Variables.PlayerListEnabled=service.StarterGui:GetCoreGuiEnabled("\080\108\097\121\101\114\076\105\115\116")local function b()if r:IsDescendantOf(game)and not G then G=true l:ClearAllChildren()l.CanvasSize=UDim2.new(0,0,0,0)l.ScrollingEnabled=false e.Size=UDim2.new(1,0,0,40)l.Visible=false w.Visible=false scrollOpen=false if client.Variables.ChatEnabled then service.StarterGui:SetCoreGuiEnabled("\067\104\097\116",true)end if client.Variables.PlayerListEnabled then service.StarterGui:SetCoreGuiEnabled("\080\108\097\121\101\114\076\105\115\116",true)end if client.UI.Get("\078\111\116\105\102")then(client.UI.Get("\078\111\116\105\102",nil,true)).Object.LABEL.Visible=true end local m=client.UI.Get("\067\104\097\116",nil,true)if m then m.Object.Drag.Visible=true end local M=client.UI.Get("\080\108\097\121\101\114\076\105\115\116",nil,true)if M then M.Object.Drag.Visible=true end local C=client.UI.Get("\072\105\110\116\072\111\108\100\101\114",nil,true)if C then C.Object.Frame.Visible=true end service.SafeTweenPos(e,UDim2.new(0,0,0,-200),"\079\117\116","\076\105\110\101\097\114",.2,true)G=false f=false end end local function q()if r:IsDescendantOf(game)and not G then G=true client.Variables.ChatEnabled=service.StarterGui:GetCoreGuiEnabled("\067\104\097\116")client.Variables.PlayerListEnabled=service.StarterGui:GetCoreGuiEnabled("\080\108\097\121\101\114\076\105\115\116")service.StarterGui:SetCoreGuiEnabled("\067\104\097\116",false)service.StarterGui:SetCoreGuiEnabled("\080\108\097\121\101\114\076\105\115\116",false)l.ScrollingEnabled=true w.ScrollingEnabled=true if client.UI.Get("\078\111\116\105\102")then(client.UI.Get("\078\111\116\105\102",nil,true)).Object.LABEL.Visible=false end local m=client.UI.Get("\067\104\097\116",nil,true)if m then m.Object.Drag.Visible=false end local M=client.UI.Get("\080\108\097\121\101\114\076\105\115\116",nil,true)if M then M.Object.Drag.Visible=false end local C=client.UI.Get("\072\105\110\116\072\111\108\100\101\114",nil,true)if C then C.Object.Frame.Visible=false end e.Size=UDim2.new(1,0,0,40)l.Visible=false w.Visible=false scrollOpen=false c.Text=""e.Visible=true e.Position=UDim2.new(0,0,0,0)c:CaptureFocus()c.Text=""wait()c.Text=""G=false f=true end end c.FocusLost:connect(function(m)if m then if c.Text~=""and string.len(c.Text)>1 then client.Remote.Send("\080\114\111\099\101\115\115\067\111\109\109\097\110\100",c.Text)end b()end end)c.Changed:connect(function(m)if m=="\084\101\120\116"and(c.Text~=""and q)then l:ClearAllChildren()w:ClearAllChildren()local m=c.Text if string.match(m,"\046\042"..(v.."\040\091\094\'\093\043\041"))then m=string.match(m,"\046\042"..(v.."\040\091\094\'\093\043\041"))m=string.match(m,"\094\037\115\042\040\046-\041\037\115\042\036")end local M=0 local C=string.match(m,"\046\043"..(Z.."\040\046\042\041\036"))for r,e in next,service.Players:GetChildren()do if C and string.sub(string.lower(tostring(e)),1,#C)==string.lower(C)or string.match(m,Z.."\036")then local m=D:Clone()m.Text=tostring(e)m.TextXAlignment="\082\105\103\104\116"m.Visible=true m.Parent=w m.Position=UDim2.new(0,0,0,20*M)m.MouseButton1Down:connect(function()c.Text=c.Text..tostring(e)c:CaptureFocus()end)M=M+1 end end w.CanvasSize=UDim2.new(0,0,0,M*20)local r=0 for M,C in next,g do if string.sub(string.lower(C),1,#m)==string.lower(m)or string.find(string.lower(C),string.match(string.lower(m),"\094\040\046-\041"..Z)or string.lower(m))then if not scrollOpen then e.Size=UDim2.new(1,0,0,330)l.Visible=true w.Visible=true scrollOpen=true end local m=D:clone()m.Visible=true m.Parent=l m.Text=C m.Position=UDim2.new(0,0,0,20*r)m.MouseButton1Down:connect(function()c.Text=m.Text c:CaptureFocus()end)r=r+1 end end l.CanvasSize=UDim2.new(0,0,0,r*20)elseif m=="\084\101\120\116"and(c.Text==""and f)then service.SafeTweenSize(e,UDim2.new(1,0,0,40),nil,nil,.3,nil,function()if scrollOpen then e.Size=UDim2.new(1,0,0,140)end end)l.Visible=false w.Visible=false scrollOpen=false l:ClearAllChildren()l.CanvasSize=UDim2.new(0,0,0,0)end end)R(service.UserInputService.InputBegan,function(m)local M=service.UserInputService:GetFocusedTextBox()if not M and(rawequal(m.UserInputType,Enum.UserInputType.Keyboard)and m.KeyCode.Name==(client.Variables.CustomConsoleKey or N))then if f then b()else q()end client.Variables.ConsoleOpen=f end end)gTable:Ready()end
--// All global vars will be wiped/replaced except script
--// All guis are autonamed codeName..gui.Name

return function(data)
	local player = service.Players.LocalPlayer
	local playergui = player.PlayerGui
	local gui = script.Parent.Parent
	local frame = gui.Frame
	local text = gui.Frame.TextBox
	local scroll = gui.Frame.ScrollingFrame
	local players = gui.Frame.PlayerList
	local entry = gui.Entry
	local BindEvent = gTable.BindEvent

	local opened = false
	local scrolling = false
	local debounce = false
	local settings = client.Remote.Get("Setting", { "SplitKey", "ConsoleKeyCode", "BatchKey" })
	local splitKey = settings.SplitKey
	local consoleKey = settings.ConsoleKeyCode
	local batchKey = settings.BatchKey
	local commands = client.Remote.Get("FormattedCommands") or {}

	frame.Position = UDim2.new(0, 0, 0, -200)
	frame.Visible = false
	frame.Size = UDim2.new(1, 0, 0, 40)
	scroll.Visible = false

	if client.Variables.ConsoleOpen then
		if client.Variables.ChatEnabled then
			service.StarterGui:SetCoreGuiEnabled("Chat", true)
		end

		if client.Variables.PlayerListEnabled then
			service.StarterGui:SetCoreGuiEnabled("PlayerList", true)
		end
		if client.UI.Get("Notif") then
			client.UI.Get("Notif", nil, true).Object.LABEL.Visible = true
		end

		local scr = client.UI.Get("Chat", nil, true)
		if scr then
			scr.Object.Drag.Visible = true
		end

		local scr = client.UI.Get("PlayerList", nil, true)
		if scr then
			scr.Object.Drag.Visible = true
		end

		local scr = client.UI.Get("HintHolder", nil, true)
		if scr then
			scr.Object.Frame.Visible = true
		end
	end

	client.Variables.ChatEnabled = service.StarterGui:GetCoreGuiEnabled("Chat")
	client.Variables.PlayerListEnabled = service.StarterGui:GetCoreGuiEnabled("PlayerList")

	local function close()
		if gui:IsDescendantOf(game) and not debounce then
			debounce = true
			scroll:ClearAllChildren()
			scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
			scroll.ScrollingEnabled = false
			frame.Size = UDim2.new(1, 0, 0, 40)
			scroll.Visible = false
			players.Visible = false
			scrollOpen = false

			if client.Variables.ChatEnabled then
				service.StarterGui:SetCoreGuiEnabled("Chat", true)
			end

			if client.Variables.PlayerListEnabled then
				service.StarterGui:SetCoreGuiEnabled("PlayerList", true)
			end

			if client.UI.Get("Notif") then
				client.UI.Get("Notif", nil, true).Object.LABEL.Visible = true
			end

			local scr = client.UI.Get("Chat", nil, true)
			if scr then
				scr.Object.Drag.Visible = true
			end

			local scr = client.UI.Get("PlayerList", nil, true)
			if scr then
				scr.Object.Drag.Visible = true
			end

			local scr = client.UI.Get("HintHolder", nil, true)
			if scr then
				scr.Object.Frame.Visible = true
			end

			service.SafeTweenPos(frame, UDim2.new(0, 0, 0, -200), "Out", "Linear", 0.2, true)
			--frame:TweenPosition(UDim2.new(0,0,0,-200),'Out','Linear',0.2,true)
			debounce = false
			opened = false
		end
	end

	local function open()
		if gui:IsDescendantOf(game) and not debounce then
			debounce = true
			client.Variables.ChatEnabled = service.StarterGui:GetCoreGuiEnabled("Chat")
			client.Variables.PlayerListEnabled = service.StarterGui:GetCoreGuiEnabled("PlayerList")

			service.StarterGui:SetCoreGuiEnabled("Chat", false)
			service.StarterGui:SetCoreGuiEnabled("PlayerList", false)

			scroll.ScrollingEnabled = true
			players.ScrollingEnabled = true

			if client.UI.Get("Notif") then
				client.UI.Get("Notif", nil, true).Object.LABEL.Visible = false
			end

			local scr = client.UI.Get("Chat", nil, true)
			if scr then
				scr.Object.Drag.Visible = false
			end

			local scr = client.UI.Get("PlayerList", nil, true)
			if scr then
				scr.Object.Drag.Visible = false
			end

			local scr = client.UI.Get("HintHolder", nil, true)
			if scr then
				scr.Object.Frame.Visible = false
			end

			frame.Size = UDim2.new(1, 0, 0, 40)
			scroll.Visible = false
			players.Visible = false
			scrollOpen = false
			text.Text = ""
			frame.Visible = true
			frame.Position = UDim2.new(0, 0, 0, 0)
			text:CaptureFocus()
			text.Text = ""
			wait()
			text.Text = ""
			debounce = false
			opened = true
		end
	end

	text.FocusLost:connect(function(enterPressed)
		if enterPressed then
			if text.Text ~= "" and string.len(text.Text) > 1 then
				client.Remote.Send("ProcessCommand", text.Text)
			end
			close()
		end
	end)

	text.Changed:connect(function(c)
		if c == "Text" and text.Text ~= "" and open then
			scroll:ClearAllChildren()
			players:ClearAllChildren()

			local nText = text.Text
			if string.match(nText, ".*" .. batchKey .. "([^']+)") then
				nText = string.match(nText, ".*" .. batchKey .. "([^']+)")
				nText = string.match(nText, "^%s*(.-)%s*$")
			end

			local pNum = 0
			local pMatch = string.match(nText, ".+" .. splitKey .. "(.*)$")
			for i, v in next, service.Players:GetChildren() do
				if
					(pMatch and string.sub(string.lower(tostring(v)), 1, #pMatch) == string.lower(pMatch))
					or string.match(nText, splitKey .. "$")
				then
					local new = entry:Clone()
					new.Text = tostring(v)
					new.TextXAlignment = "Right"
					new.Visible = true
					new.Parent = players
					new.Position = UDim2.new(0, 0, 0, 20 * pNum)
					new.MouseButton1Down:connect(function()
						text.Text = text.Text .. tostring(v)
						text:CaptureFocus()
					end)
					pNum = pNum + 1
				end
			end

			players.CanvasSize = UDim2.new(0, 0, 0, pNum * 20)

			local num = 0
			for i, v in next, commands do
				if
					string.sub(string.lower(v), 1, #nText) == string.lower(nText)
					or string.find(
						string.lower(v),
						string.match(string.lower(nText), "^(.-)" .. splitKey) or string.lower(nText)
					)
				then
					if not scrollOpen then
						frame.Size = UDim2.new(1, 0, 0, 330)
						scroll.Visible = true
						players.Visible = true
						scrollOpen = true
					end
					local b = entry:clone()
					b.Visible = true
					b.Parent = scroll
					b.Text = v
					b.Position = UDim2.new(0, 0, 0, 20 * num)
					b.MouseButton1Down:connect(function()
						text.Text = b.Text
						text:CaptureFocus()
					end)
					num = num + 1
				end
			end
			scroll.CanvasSize = UDim2.new(0, 0, 0, num * 20)
		elseif c == "Text" and text.Text == "" and opened then
			service.SafeTweenSize(frame, UDim2.new(1, 0, 0, 40), nil, nil, 0.3, nil, function()
				if scrollOpen then
					frame.Size = UDim2.new(1, 0, 0, 140)
				end
			end)
			scroll.Visible = false
			players.Visible = false
			scrollOpen = false
			scroll:ClearAllChildren()
			scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
		end
	end)

	BindEvent(service.UserInputService.InputBegan, function(InputObject)
		local textbox = service.UserInputService:GetFocusedTextBox()
		if
			not textbox
			and rawequal(InputObject.UserInputType, Enum.UserInputType.Keyboard)
			and InputObject.KeyCode.Name == (client.Variables.CustomConsoleKey or consoleKey)
		then
			if opened then
				close()
			else
				open()
			end
			client.Variables.ConsoleOpen = opened
		end
	end)

	gTable:Ready()
end
