local q=Instance.new("\070\114\097\109\101")q.Name="\077\097\105\110\070\114\097\109\101"q.Size=UDim2.new(1,-1*ScrollBarWidth,1,0)q.Position=UDim2.new(0,0,0,0)q.BackgroundTransparency=1 q.ClipsDescendants=true q.Parent=PropertiesFrame ContentFrame=Instance.new("\070\114\097\109\101")ContentFrame.Name="\067\111\110\116\101\110\116\070\114\097\109\101"ContentFrame.Size=UDim2.new(1,0,0,0)ContentFrame.BackgroundTransparency=1 ContentFrame.Parent=q scrollBar=ScrollBar(false)scrollBar.PageIncrement=1 Create(scrollBar.GUI,{Position=UDim2.new(1,-ScrollBarWidth,0,0);Size=UDim2.new(0,ScrollBarWidth,1,0);Parent=PropertiesFrame})scrollBarH=ScrollBar(true)scrollBarH.PageIncrement=ScrollBarWidth Create(scrollBarH.GUI,{Position=UDim2.new(0,0,1,-ScrollBarWidth),Size=UDim2.new(1,-ScrollBarWidth,0,ScrollBarWidth);Visible=false,Parent=PropertiesFrame})do local w={}local D={}function scrollBar.UpdateCallback(w)scrollBar.TotalSpace=ContentFrame.AbsoluteSize.Y scrollBar.VisibleSpace=q.AbsoluteSize.Y ContentFrame.Position=UDim2.new(ContentFrame.Position.X.Scale,ContentFrame.Position.X.Offset,0,-1*scrollBar.ScrollIndex)end function scrollBarH.UpdateCallback(q) end q.Changed:connect(function(w)if w=="\065\098\115\111\108\117\116\101\083\105\122\101"then scrollBarH.VisibleSpace=math.ceil(q.AbsoluteSize.x)scrollBarH:Update()scrollBar.VisibleSpace=math.ceil(q.AbsoluteSize.y)scrollBar:Update()end end)local s=Row.Height PropertiesFrame.MouseWheelForward:connect(function()if scrollBar.VisibleSpace-1>s then scrollBar:ScrollTo(scrollBar.ScrollIndex-s)else scrollBar:ScrollTo(scrollBar.ScrollIndex-scrollBar.VisibleSpace)end end)PropertiesFrame.MouseWheelBackward:connect(function()if scrollBar.VisibleSpace-1>s then scrollBar:ScrollTo(scrollBar.ScrollIndex+s)else scrollBar:ScrollTo(scrollBar.ScrollIndex+scrollBar.VisibleSpace)end end)end scrollBar.VisibleSpace=math.ceil(q.AbsoluteSize.y)scrollBar:Update()showProperties(GetSelection())bindSelectionChanged.Event:connect(function()showProperties(GetSelection())end)bindSetAwait.Event:connect(function(q)if AwaitingObjectValue then AwaitingObjectValue=false local w=q if w then pcall(function()Set(AwaitingObjectObj,AwaitingObjectProp,w)end)end end end);(propertiesSearch:GetPropertyChangedSignal("\084\101\120\116")):Connect(function()showProperties(GetSelection())end)bindGetApi.OnInvoke=function()return RbxApi end bindGetAwait.OnInvoke=function()return AwaitingObjectValue end


local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(1, -1 * ScrollBarWidth, 1, 0)
MainFrame.Position = UDim2.new(0, 0, 0, 0)
MainFrame.BackgroundTransparency = 1
MainFrame.ClipsDescendants = true
MainFrame.Parent = PropertiesFrame

ContentFrame = Instance.new("Frame")
ContentFrame.Name = "ContentFrame"
ContentFrame.Size = UDim2.new(1, 0, 0, 0)
ContentFrame.BackgroundTransparency = 1
ContentFrame.Parent = MainFrame

scrollBar = ScrollBar(false)
scrollBar.PageIncrement = 1
Create(scrollBar.GUI,{
	Position = UDim2.new(1,-ScrollBarWidth,0,0);
	Size = UDim2.new(0,ScrollBarWidth,1,0);
	Parent = PropertiesFrame;
})

scrollBarH = ScrollBar(true)
scrollBarH.PageIncrement = ScrollBarWidth
Create(scrollBarH.GUI,{
	Position = UDim2.new(0,0,1,-ScrollBarWidth);
	Size = UDim2.new(1,-ScrollBarWidth,0,ScrollBarWidth);
	Visible = false;
	Parent = PropertiesFrame;
})

do
	local listEntries = {}
	local nameConnLookup = {}

	function scrollBar.UpdateCallback(self)
		scrollBar.TotalSpace = ContentFrame.AbsoluteSize.Y
		scrollBar.VisibleSpace = MainFrame.AbsoluteSize.Y
		ContentFrame.Position = UDim2.new(ContentFrame.Position.X.Scale,ContentFrame.Position.X.Offset,0,-1*scrollBar.ScrollIndex)
	end

	function scrollBarH.UpdateCallback(self)

	end

	MainFrame.Changed:connect(function(p)
		if p == 'AbsoluteSize' then
			scrollBarH.VisibleSpace = math.ceil(MainFrame.AbsoluteSize.x)
			scrollBarH:Update()
			scrollBar.VisibleSpace = math.ceil(MainFrame.AbsoluteSize.y)
			scrollBar:Update()
		end
	end)

	local wheelAmount = Row.Height
	PropertiesFrame.MouseWheelForward:connect(function()
		if scrollBar.VisibleSpace - 1 > wheelAmount then
			scrollBar:ScrollTo(scrollBar.ScrollIndex - wheelAmount)
		else
			scrollBar:ScrollTo(scrollBar.ScrollIndex - scrollBar.VisibleSpace)
		end
	end)
	PropertiesFrame.MouseWheelBackward:connect(function()
		if scrollBar.VisibleSpace - 1 > wheelAmount then
			scrollBar:ScrollTo(scrollBar.ScrollIndex + wheelAmount)
		else
			scrollBar:ScrollTo(scrollBar.ScrollIndex + scrollBar.VisibleSpace)
		end
	end)
end

scrollBar.VisibleSpace = math.ceil(MainFrame.AbsoluteSize.y)
scrollBar:Update()

showProperties(GetSelection())

bindSelectionChanged.Event:connect(function()
	showProperties(GetSelection())
end)

bindSetAwait.Event:connect(function(obj)
	if AwaitingObjectValue then
		AwaitingObjectValue = false
		local mySel = obj
		if mySel then
			pcall(function()
				Set(AwaitingObjectObj, AwaitingObjectProp, mySel)
			end)
		end
	end
end)

propertiesSearch:GetPropertyChangedSignal("Text"):Connect(function()
	showProperties(GetSelection())
end)

bindGetApi.OnInvoke = function()
	return RbxApi
end

bindGetAwait.OnInvoke = function()
	return AwaitingObjectValue
end
