return function(U,N,u,M)U=U or 1 N=N or 1 u=u or Color3.new(1,1,1)M=M or 0 local G=tick();(coroutine.wrap(function()local G=Instance.new("\070\114\097\109\101")G.BackgroundTransparency=1 G.BackgroundColor3=u G.Size=UDim2.new(2,0,2,0)G.AnchorPoint=Vector2.new(.5,.5)G.Position=UDim2.new(.5,0,.5,0)G.BorderSizePixel=0 G.Parent=_L.GUIFX.GetHolder()if U>0 then _L.Functions.FastTween(G,{BackgroundTransparency=M},{U,"\076\105\110\101\097\114";"\079\117\116"})wait(U)else G.BackgroundTransparency=M end if N>0 then _L.Functions.FastTween(G,{BackgroundTransparency=1},{N;"\083\105\110\101";"\079\117\116"})wait(N)else G.BackgroundTransparency=1 end G:Destroy()end))()end



return function(addTime, decayTime, color, transparency)
	--- Variables
	addTime = addTime or 1
	decayTime = decayTime or 1
	color = color or Color3.new(1, 1, 1)
	transparency = transparency or 0
	--
	local animationStartTime = tick()
	
	--- Main
	coroutine.wrap(function()
		--- Create flash gui
		local flashGui = Instance.new("Frame")
		flashGui.BackgroundTransparency = 1
		flashGui.BackgroundColor3 = color
		flashGui.Size = UDim2.new(2, 0, 2, 0)
		flashGui.AnchorPoint = Vector2.new(0.5, 0.5)
		flashGui.Position = UDim2.new(0.5, 0, 0.5, 0)
		flashGui.BorderSizePixel = 0
		flashGui.Parent = _L.GUIFX.GetHolder()
		
		--- Flash!
		if addTime > 0 then
			_L.Functions.FastTween(flashGui, {BackgroundTransparency = transparency}, {addTime, "Linear", "Out"})
			wait(addTime)
		else
			flashGui.BackgroundTransparency = transparency
		end
		
		--- Fade away flash
		if decayTime > 0 then
			_L.Functions.FastTween(flashGui, {BackgroundTransparency = 1}, {decayTime, "Sine", "Out"})
			wait(decayTime)
		else
			flashGui.BackgroundTransparency = 1
		end
		
		--- Destroy flash
		flashGui:Destroy()
	end)()
end
