Roblox/luau_corpus huggingface dataset:
--[[local v1 = require(game.ReplicatedStorage:WaitForChild("Framework"):WaitForChild("Library"));
while not v1.Loaded do
	game:GetService("RunService").Heartbeat:Wait();
end;
local u1 = nil;
local u2 = nil;
local v9;
function Update()
	if u1 then
		if not u2 then
			return;
		end;
	else
		return;
	end;
	local v2 = u1.Main:FindFirstChildOfClass("SurfaceGui");
	--local v3, v4, v5 = ipairs(u2);
	for v4, v5 in pairs(u2) do
		--while true do
		--v3(v4, v5);
		--if v3 then
		--else
		--break;
		--end;
		local v6 = v2.Frame:FindFirstChild("Spot" .. tostring(v4));
		if not v6 then
			local v7 = v4 <= 3;
			local v8 = v1.Assets.UI.Leaderboard.Spot:Clone();
			v8.LayoutOrder = v4;
			v8.Rank.Text = "#" .. v4;
			v8.Name = "Spot" .. tostring(v4);
			if v7 then
				v9 = 50;
			else
				v9 = 45;
			end;
			v6.Size = UDim2.new(1, 0, 0, v9);
			v6.Rank.TextColor3 = v7 and Color3.fromRGB(180, 170, 31) or Color3.fromRGB(102, 102, 102);
			v6.Parent = v2.Frame;
		end;
		v6.Score.Text = v1.Functions.NumberShorten(v5.level, false);
		v6.Username.Text = "@" .. v5.username;
		if v5.username == v1.LocalPlayer.Name then
			v6.Username.TextColor3 = Color3.fromRGB(28, 134, 173);
		else
			v6.Username.TextColor3 = Color3.fromRGB(121, 121, 121);
		end;	
	end;
	v2.Frame.CanvasSize = UDim2.new(0, 0, 0, v2.Frame:FindFirstChildOfClass("UIListLayout").AbsoluteContentSize.Y);
end;
function Grab()
	local v10 = v1.Network.Invoke("Get Global Leaderboard");
	if v10 then
		u2 = v10;
		Update();
	end;
end;
function Check()
	local v11 = v1.WorldCmds.GetMap();
	if v11:FindFirstChild("Interactive") then
		u1 = v11.Interactive:FindFirstChild("Leaderboard");
		if u1 then

		else
			return;
		end;
	else
		return;
	end;
	Update();
end;
v1.Signal.Fired("World Changed"):Connect(function()
	u1 = nil;
	Check();
end);
coroutine.wrap(function()
	while true do
		if u1 then
			Grab();
		end;
		wait(10);	
	end;
end)();]]--
--Motor6D's
local neck = torso.Neck
neck.C1 = CFrame.new(0,0,0)
local leftshoulder = torso["Left Shoulder"]
leftshoulder.C1 = CFrame.new(0,0,0)
local rightshoulder = torso["Right Shoulder"]
rightshoulder.C1 = CFrame.new(0,0,0)
local lefthip = torso["Left Hip"]
lefthip.C1 = CFrame.new(0,0,0)
local righthip = torso["Right Hip"]
righthip.C1 = CFrame.new(0,0,0)
local root = npc.HumanoidRootPart.RootJoint
root.C1 = CFrame.new(0,0,0)
--[[**
	ensures value matches string pattern

	@param string pattern to check against

	@returns A function that will return true iff the condition is passed
**--]]
function t.match(pattern)
	assert(t.string(pattern))
	return function(value)
		local stringSuccess, stringErrMsg = t.string(value)
		if not stringSuccess then
			return false, stringErrMsg
		end

		if string.match(value, pattern) == nil then
			return false, string.format("\"%s\" failed to match pattern \"%s\"", value, pattern)
		end

		return true
	end
end
--[[ Top Level Roblox Services ]]--
local PlayersService = game:GetService("Players")
--[[Weight and CG]]
	Tune.Weight			= 2500		-- Total weight (in pounds)
	Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	 --[[Width]]		6		,
	 --[[Height]]		3.5		,
	 --[[Length]]		9		}
	Tune.WeightDist		= 50		-- Weight distribution (0 - on rear wheels, 100 - on front wheels, can be <0 or >100)
	Tune.CGHeight		= .8		-- Center of gravity height (studs relative to median of all wheels)
	Tune.WBVisible		= false		-- Makes the weight brick visible
	
	--Unsprung Weight
	Tune.FWheelDensity	= 1.0 	-- Front Wheel Density
	Tune.RWheelDensity	= 1.0		-- Rear Wheel Density
	Tune.FWLgcyDensity	= 1			-- Front Wheel Density [PGS OFF]
	Tune.RWLgcyDensity	= 1			-- Rear Wheel Density [PGS OFF]
	
	Tune.AxleSize		= 2			-- Size of structural members (larger = more stable/carry more weight)
	Tune.AxleDensity	= .1		-- Density of structural members
--[[ SERVICES ]]
local PlayersService = game:GetService('Players')
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ChatService = game:GetService("Chat")
local TextService = game:GetService("TextService")
--Gets the current active group, starting with the first priority, then the last non-priority.
local function GetActiveGroup()
	if #ActivePriorityControllerGroups >= 1 then
		return ActivePriorityControllerGroups[1]
	end
	if #ActiveControllerGroups >= 1 then
		return ActiveControllerGroups[1]
	end
end
-- (Hat Giver Script - Loaded.)

debounce = true

function onTouched(hit)
	if (hit.Parent:findFirstChild("Humanoid") ~= nil and debounce == true) then
		debounce = false
		h = Instance.new("Hat")
		p = Instance.new("Part")
		h.Name = "Swordpack"
		p.Parent = h
		p.Position = hit.Parent:findFirstChild("Head").Position
		p.Name = "Handle" 
		p.formFactor = 0
		p.Size = Vector3.new(0,-0.25,0) 
		p.BottomSurface = 0 
		p.TopSurface = 0 
		p.Locked = true 
		script.Parent.Mesh:clone().Parent = p
		h.Parent = hit.Parent
		h.AttachmentPos = Vector3.new(0, 1.4, -0.8)
		h.AttachmentRight = Vector3.new(1, 0, 0)
		h.AttachmentUp = Vector3.new(0, 1, 0)
		h.AttachmentForward = Vector3.new(-0, -0, -1)
		wait(5)
		debounce = true
	end
end

script.Parent.Touched:connect(onTouched)
--[[
	Creates a new GuiController. hideOtherGuis and showOtherGuis are optional
	callbacks that can be used to control hiding and showing of GUIs. If they
	are defined the GuiController will not do any GUI manipulation. It will
	instead call those callbacks and return.

	Parameters:
	screenGuis - An array of Roact.Refs of the ScreenGuis for this module
	hideOtherGuis - A callback that is called when hideGuis is called
	showOtherGuis - A callback that is called when showGuis is called
]]
function GuiController.new(screenGuis: { any }?, hideOtherGuis: Callback?, showOtherGuis: Callback?)
	local self = {
		StarterGui = StarterGui,
		UserInputService = UserInputService,
		player = Players.LocalPlayer,
		screenGuis = screenGuis or {},
		hideOtherGuis = hideOtherGuis,
		showOtherGuis = showOtherGuis,
		disabledGuis = {},
		disabledCoreGuis = {},
		modalEnabled = false,
	}

	return setmetatable(self, GuiController)
end
---------------------------------------------------

This = script.Parent
Lift = This.Parent.Parent.Parent
Elevator = This.Parent.Parent.Parent
CustomLabel = require(This.Parent.Parent.Parent.CustomLabel)
Characters = require(script.Characters)

CustomText = CustomLabel["CUSTOMFLOORLABEL"]

Lift:WaitForChild("Floor").Changed:connect(function(floor)
  --custom indicator code--
  ChangeFloor(tostring(floor))
end)

function ChangeFloor(SF)
	if CustomText[tonumber(SF)] then
		SF = CustomText[tonumber(SF)]
	end
	SetDisplay(1,(string.len(SF) == 2 and SF:sub(1,1) or "NIL"))		
	SetDisplay(2,(string.len(SF) == 2 and SF:sub(2,2) or SF))
end



function SetDisplay(ID,CHAR)
	if This.Display:FindFirstChild("DIG"..ID) and Characters[CHAR] ~= nil then
 		for i,l in pairs(Characters[CHAR]) do 
			for r=1,16 do	
				This.Display["DIG"..ID]["D"..r].Transparency = (l:sub(r,r) == "1" and 0 or 1)
			end
		end
	end
end

while true do
	wait()
	if Elevator:WaitForChild("Direction").Value ~= 0 then 
		if Elevator:WaitForChild("Velocity").Value ~= 0 then
			if Elevator:WaitForChild("Direction").Value == 1 then
				This.Display.ARW1.UP.Transparency = 0
				This.Display.ARW1.MID.Transparency = 0
				This.Display.ARW1.DOWN.Transparency = 1
			else
				This.Display.ARW1.UP.Transparency = 1
				This.Display.ARW1.MID.Transparency = 0
				This.Display.ARW1.DOWN.Transparency = 0
			end
		elseif Elevator:WaitForChild("Velocity").Value == 0 then
			if Elevator:WaitForChild("Direction").Value == 1 then
				wait(0.5)
				This.Display.ARW1.UP.Transparency = 1
				This.Display.ARW1.MID.Transparency = 1
				This.Display.ARW1.DOWN.Transparency = 1
				wait(0.5)
				This.Display.ARW1.UP.Transparency = 0
				This.Display.ARW1.MID.Transparency = 0
				This.Display.ARW1.DOWN.Transparency = 1
			else
				wait(0.5)
				This.Display.ARW1.UP.Transparency = 1
				This.Display.ARW1.MID.Transparency = 1
				This.Display.ARW1.DOWN.Transparency = 1
				wait(0.5)
				This.Display.ARW1.UP.Transparency = 1
				This.Display.ARW1.MID.Transparency = 0
				This.Display.ARW1.DOWN.Transparency = 0
			end
		end
	else
		This.Display.ARW1.UP.Transparency = 1
		This.Display.ARW1.MID.Transparency = 1
		This.Display.ARW1.DOWN.Transparency = 1
	end
end
-- setup emote chat hook
game:GetService("Players").LocalPlayer.Chatted:connect(function(msg)
	local emote = ""
	if (string.sub(msg, 1, 3) == "/e ") then
		emote = string.sub(msg, 4)
	elseif (string.sub(msg, 1, 7) == "/emote ") then
		emote = string.sub(msg, 8)
	end

	if (pose == "Standing" and emoteNames[emote] ~= nil) then
		playAnimation(emote, EMOTE_TRANSITION_TIME, Humanoid)
	end
end)
------------------------------------------------------------------------------------------------------------------
local Engine = script.Template:Clone()
Engine.Parent = GUI.Controls
Engine.Text = "ENGINE: "..Settings.EngineKey.Name

local Throttle = script.Template:Clone()
Throttle.Parent = GUI.Controls
Throttle.Text = "THROTTLE: "..Settings.ThrottleUp.Name.."/"..Settings.ThrottleDown.Name
Throttle.TextScaled = true

local Yaw = script.Template:Clone()
Yaw.Parent = GUI.Controls
Yaw.Text = "YAW: "..Settings.YawLeft.Name.."/"..Settings.YawRight.Name

local Roll = script.Template:Clone()
Roll.Parent = GUI.Controls
Roll.Text = "ROLL: "..Settings.RollLeft.Name.."/"..Settings.RollRight.Name

local Pitch = script.Template:Clone()
Pitch.Parent = GUI.Controls
Pitch.Text = "PITCH: "..Settings.PitchUp.Name.."/"..Settings.PitchDown.Name
--[[ http://coffeescript.org/ ]] --
local coffee = script.Parent;
local drinking = false

coffee.Equipped:connect(function()
	coffee.Handle.OpenSound:Play()
end)

coffee.Activated:connect(function()
	if drinking then
		return
	end

	drinking = true
	coffee.GripForward = Vector3.new(0,-1,0)
	coffee.GripPos = Vector3.new(1.5,.85,-.15)
	coffee.GripRight = Vector3.new(1,0,0)
	coffee.GripUp = Vector3.new(0,0,1)

	coffee.Handle.DrinkSound:Play()

	wait(1)
	
	coffee.Parent.Humanoid.Health = coffee.Parent.Humanoid.Health + 100
	restPos()

	drinking = false
end)

coffee.Unequipped:connect(function()
	restPos()
	coffee.Handle.DrinkSound:Stop()
	drinking = false
end)

function restPos()
	coffee.GripForward = Vector3.new(0,-1,0)
	coffee.GripPos = Vector3.new(0,0.15,-0.3)
	coffee.GripRight = Vector3.new(-1,0,0)
	coffee.GripUp = Vector3.new(0,0,1)
end
--Interpret input
local function getInputValues()
	if UserInputService:GetLastInputType() ~= Enum.UserInputType.Touch then
		---Let the control module handle all none-touch controls
		script.Steering.Value = SteerLeftValue - SteerRightValue
		script.Throttle.Value = ThrottleValue - BrakeValue
		script.HandBrake.Value = HandBrakeValue
	else --The vehicle gui handles all the touch controls
		script.Throttle.Value = VehicleGui.throttleInput
		script.Steering.Value = VehicleGui.steeringInput
		script.HandBrake.Value = VehicleGui.handBrakeInput
	end
end
-- Setup loop
coroutine.wrap(function()
	while true do
		wait(60/main.commandsExecutedDivider)
		main.commandsExecuted = {}
	end
end)()
-- Get latest copy of tool
local NewTool = GetLatestTool();
if NewTool then

	-- Prevent update attempt loops since fetched version is now cached
	NewTool.AutoUpdate.Value = false;

	-- Cancel replacing current tool if fetched version is the same
	if NewTool.Version.Value == Tool.Version.Value then
		return;
	end;

	-- Detach update script from tool and save old tool parent
	script.Parent = nil;
	local ToolParent = Tool.Parent;

	-- Remove current tool (delayed to prevent parenting conflicts)
	wait(0.05);
	Tool.Parent = nil;

	-- Remove the tool again if anything attempts to reparent it
	Tool.Changed:Connect(function (Property)
		if Property == 'Parent' and Tool.Parent then
			wait(0.05);
			Tool.Parent = nil;
		end;
	end);

	-- Add the new tool
	NewTool.Parent = ToolParent;

end;
-----------------------------------------------------------------------------------------------------------
-- Metatable:

MT.__metatable = true
MT.__index = function(_tbl, index)
	return (API[index] or realDataStoreService[index])
end
MT.__newindex = function()
	error("Cannot edit MockDataStoreService")
end
setmetatable(DataStoreService, MT)
--		print("Keyframe : ".. frameName)	
		playToolAnimation(toolAnimName, 0.0, Humanoid)
	end
end


function playToolAnimation(animName, transitionTime, humanoid)	 
		
		local roll = math.random(1, animTable[animName].totalWeight) 
		local origRoll = roll
		local idx = 1
		while (roll > animTable[animName][idx].weight) do
			roll = roll - animTable[animName][idx].weight
			idx = idx + 1
		end
--iMad--

local function AttachParticleControl(source_part)
	
	local prtc = nil
	
	local function Start()
		prtc = script.iMad:clone()
		prtc.Parent = source_part
	end
	
	local function Update()
		
	end
	
	local function Stop()
		if prtc ~= nil then
			prtc:destroy()
			prtc = nil
		end
	end
	
	return {Start = Start, Update = Update, Stop = Stop}
end

return AttachParticleControl
--[[Engine]]
	--Torque Curve
	Tune.Horsepower		= 415	--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 900		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 9200		--		Use sliders to manipulate values
	Tune.Redline		= 9700
	Tune.EqPoint		= 7250
	Tune.PeakSharpness	= 9.5
	Tune.CurveMult		= 0.15
	
	--Incline Compensation
	Tune.InclineComp	= 1.7			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)
--[[
	Extension of Lua's 'assert' that lets you specify an error level.
]]
local function assertLevel(condition, message, level)
	message = message or "Assertion failed!"
	level = level or 1

	if not condition then
		error(message, level + 1)
	end
end
--[[**
	ensures Roblox Random type

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]
t.Random = primitive("Random")
--Constructor and destructor
function touch_button:New(parent_frame, pos, size)
	--Initialize meta reference
	local self = setmetatable({}, {__index = touch_button})

	--Create button
	self.button = Instance.new("ImageButton")
	self.button.Name = "Button"
	self.button.BackgroundTransparency = 1
	self.button.ImageTransparency = 1
	self.button.ImageColor3 = released_col
	self.button.Active = false
	self.button.Size = size
	self.button.Position = pos
	self.button.Parent = parent_frame

	--Initialize state
	self.pressed = false
	self.move_touch_input = nil
	self.enabled = false

	--Input connections
	self.input_connections = {
		self.button.InputBegan:Connect(function(input)
			--Make sure input is a valid state
			if self.enabled == false or self.move_touch_input ~= nil or input.UserInputType ~= Enum.UserInputType.Touch or input.UserInputState ~= Enum.UserInputState.Begin then
				return
			end

			--Start holding button
			self.move_touch_input = input
			self.button.ImageColor3 = pressed_col
			self.pressed = true
		end),
		uis.TouchEnded:Connect(function(input, processed)
			if input == self.move_touch_input then
				OnInputEnded(self)
			end
		end),
		gui_service.MenuOpened:Connect(function()
			if self.move_touch_input ~= nil then
				OnInputEnded(self)
			end
		end),
	}

	return self
end

function touch_button:Destroy()
	--Disconnect connections
	if self.input_connections ~= nil then
		for _,v in pairs(self.input_connections) do
			v:Disconnect()
		end
		self.input_connections = nil
	end

	--Destroy button
	if self.button ~= nil then
		self.button:Destroy()
		self.button = nil
	end
end
--// Handling Settings		
	Firerate = 60 / 150; -- 60 = 1 Minute, 150 = Rounds per that 60 seconds. DO NOT TOUCH THE 60!
	
	FireMode = 4; -- 1 = Semi, 2 = Auto, 3 = Burst, 4 = Bolt Action, 5 = Shot, 6 = Explosive
--[[Engine]]
	--Torque Curve
	Tune.Horsepower		= 450		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6000		--		Use sliders to manipulate values
	Tune.Redline		= 7000		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5500
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.16
	
	--Incline Compensation
	Tune.InclineComp	= 5 			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)
---------------------------------------------------

This = script.Parent
Lift = This.Parent.Parent.Parent
CustomLabel = require(This.Parent.Parent.Parent.CustomLabel)
Characters = require(script.Characters)

CustomText = CustomLabel["CUSTOMFLOORLABEL"]

ActiveCol = "Neon orange"
InactiveCol = "Black"

Lift:WaitForChild("Floor").Changed:connect(function(floor)
  --custom indicator code--
  ChangeFloor(tostring(floor))
end)

Lift:WaitForChild("Velocity").Changed:connect(function(val)
  --custom indicator code--
	if val == 0 then
		for i=1,8,1 do
			ChangeFloor(tostring("NIL"))
			wait(0.2)
			ChangeFloor(tostring(Lift:WaitForChild("Floor").Value))
			wait(0.2)
		end
	end
end)

function ChangeFloor(SF)
	if CustomText[tonumber(SF)] then
		SF = CustomText[tonumber(SF)]
	end
	SetDisplay(1,(string.len(SF) == 2 and SF:sub(1,1) or "NIL"))		
	SetDisplay(2,(string.len(SF) == 2 and SF:sub(2,2) or SF))
end



function SetDisplay(ID,CHAR)
	if This.Display:FindFirstChild("DIG"..ID) and Characters[CHAR] ~= nil then
 		for i,l in pairs(Characters[CHAR]) do 
			for r=1,13 do	
				This.Display["DIG"..ID]["D"..r].BrickColor = (l:sub(r,r) == "1" and BrickColor.new(ActiveCol) or BrickColor.new(InactiveCol))
				This.Display["DIG"..ID]["D"..r].Material = (l:sub(r,r) == "1" and "Neon" or "SmoothPlastic")
			end
		end
	end
end
--Defines variables, pretty much to make things shorter

local MaxAmmo = 20
local Ammo = MaxAmmo
local Reloading = false
local Player = game.Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
local TextLabel = PlayerGui:WaitForChild("AmmoDisplay"):FindFirstChild("AmmoText")
-- Load and configure the animations
local attackIdleAnimation = maid.humanoid:LoadAnimation(maid.instance.Animations.AttackIdleAnimation)
attackIdleAnimation.Looped = true
attackIdleAnimation.Priority = Enum.AnimationPriority.Action
maid.attackIdleAnimation = attackIdleAnimation

local attackAnimation = maid.humanoid:LoadAnimation(maid.instance.Animations.AttackAnimation)
attackAnimation.Looped = false
attackAnimation.Priority = Enum.AnimationPriority.Action
maid.attackAnimation = attackAnimation
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------

function onSwimming(speed)
	if speed > 1.00 then
		local scale = 10.0
		playAnimation("swim", 0.4, Humanoid)
		setAnimationSpeed(speed / scale)
		pose = "Swimming"
	else
		playAnimation("swimidle", 0.4, Humanoid)
		pose = "Standing"
	end
end

function animateTool()
	if (toolAnim == "None") then
		playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
		return
	end

	if (toolAnim == "Slash") then
		playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end

	if (toolAnim == "Lunge") then
		playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end
end

function getToolAnim(tool)
	for _, c in ipairs(tool:GetChildren()) do
		if c.Name == "toolanim" and c.className == "StringValue" then
			return c
		end
	end
	return nil
end

local lastTick = 0

function stepAnimate(currentTime)
	local amplitude = 1
	local frequency = 1
	local deltaTime = currentTime - lastTick
	lastTick = currentTime

	local climbFudge = 0
	local setAngles = false

	if jumpAnimTime > 0 then
		jumpAnimTime = jumpAnimTime - deltaTime
	end

	if pose == "FreeFall" and jumpAnimTime <= 0 then
		playAnimation("fall", fallTransitionTime, Humanoid)
	elseif (pose == "Seated") then
		playAnimation("sit", 0.5, Humanoid)
		return
	elseif (pose == "Running") then
		playAnimation("walk", 0.2, Humanoid)
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
		stopAllAnimations()
		amplitude = 0.1
		frequency = 1
		setAngles = true
	end

	-- Tool Animation handling
	local tool = Character:FindFirstChildOfClass("Tool")
	if tool and tool:FindFirstChild("Handle") then
		local animStringValueObject = getToolAnim(tool)
		if animStringValueObject then
			toolAnim = animStringValueObject.Value
			-- message recieved, delete StringValue
			animStringValueObject.Parent = nil
			toolAnimTime = currentTime + .3
		end
		if currentTime > toolAnimTime then
			toolAnimTime = 0
			toolAnim = "None"
		end
		animateTool()
	else
		stopToolAnimations()
		toolAnim = "None"
		toolAnimInstance = nil
		toolAnimTime = 0
	end
end
--// Events
local L_33_ = L_7_:WaitForChild('Equipped')
local L_34_ = L_7_:WaitForChild('ShootEvent')
local L_35_ = L_7_:WaitForChild('DamageEvent')
local L_36_ = L_7_:WaitForChild('CreateOwner')
local L_37_ = L_7_:WaitForChild('Stance')
local L_38_ = L_7_:WaitForChild('HitEvent')
local L_39_ = L_7_:WaitForChild('KillEvent')
local L_40_ = L_7_:WaitForChild('AimEvent')
local L_41_ = L_7_:WaitForChild('ExploEvent')
local L_42_ = L_7_:WaitForChild('AttachEvent')
local L_43_ = L_7_:WaitForChild('ServerFXEvent')
local L_44_ = L_7_:WaitForChild('ChangeIDEvent')
--[[
	Constructs and returns a new instance, with options for setting properties,
	event handlers and other attributes on the instance right away.
]]

local Package = script.Parent.Parent
local PubTypes = require(Package.PubTypes)
local defaultProps = require(Package.Instances.defaultProps)
local applyInstanceProps = require(Package.Instances.applyInstanceProps)
local logError= require(Package.Logging.logError)

local function New(className: string)
	return function(props: PubTypes.PropertyTable): Instance
		local ok, instance = pcall(Instance.new, className)

		if not ok then
			logError("cannotCreateClass", nil, className)
		end

		local classDefaults = defaultProps[className]
		if classDefaults ~= nil then
			for defaultProp, defaultValue in pairs(classDefaults) do
				instance[defaultProp] = defaultValue
			end
		end

		applyInstanceProps(props, instance)

		return instance
	end
end

return New
--[[
	UI Service for Electron Income
]]

local ElectronIncome = require(script.Parent.ElectronAnimator)

game:GetService("ReplicatedStorage").Game.Events.Shop.Income.OnClientEvent:Connect(function(Name, Amount)
	ElectronIncome.QueueAnimation(Name, Amount)
end)
-- capture two separate generic arguments so that the type error in abuse cases is actionable, but needs CLI-49876 to avoid a false negative
local function concat<T, S>(source: Array<T> | T, ...: Array<S> | S): Array<T> & Array<S>
	local array
	local elementCount = 0

	if isArray(source) then
		array = table.clone(source :: Array<T>)
		elementCount = #(source :: Array<T>)
	else
		elementCount += 1
		array = {}
		array[elementCount] = source :: T
	end

	for i = 1, select("#", ...) do
		local value = select(i, ...)
		local valueType = typeof(value)
		if value == nil then
			-- do not insert nil
		elseif valueType == "table" then
			-- deviation: assume that table is an array, to avoid the expensive
			-- `isArray` check. In DEV mode, we throw if it is given an object-like
			-- table.
			if _G.__DEV__ then
				if not isArray(value) then
					error(RECEIVED_OBJECT_ERROR)
				end
			end
			for k = 1, #value do
				elementCount += 1
				array[elementCount] = value[k]
			end
		else
			elementCount += 1
			array[elementCount] = value
		end
	end

	return (array :: any) :: Array<T> & Array<S>
end

return concat