Greasy Fork is available in English.

Coder Mod - Leader Hack :>

Ezzed mod, leader now!

// ==UserScript==
// @name Coder Mod - Leader Hack :>
// @author cah blX
// @description Ezzed mod, leader now!
// @namespace -
// @icon https://sploop.io/img/ui/favicon.png
// @version v4
// @match *://sploop.io/*
// @run-at document-start
// @grant none
// @license MIT
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js
// @require https://code.jquery.com/ui/1.13.2/jquery-ui.min.js
// ==/UserScript==

/* Import And Export Of "Scripts'blX" */

 class GameUtils {
        static ["getDistance"](x1, y1, x2, y2) {
            return Math.sqrt((x2 -= x1) * x2 + (y2 -= y1) * y2);
        }

        static ["getDist"](tmp1, tmp2, type1, type2) {
            let tmpXY1 = {
                x: tmp1.x,
                y: tmp1.y,
            };
            let tmpXY2 = {
                x: tmp2.x,
                y: tmp2.y,
            };
            return Math.sqrt((tmpXY2.x -= tmpXY1.x) * tmpXY2.x + (tmpXY2.y -= tmpXY1.y) * tmpXY2.y);
        }

        static ["getDirection"](x1, y1, x2, y2) {
            return Math.atan2(y1 - y2, x1 - x2);
        }

        static ["getDirect"](tmp1, tmp2) {
            let tmpXY1 = {
                x: tmp1.x,
                y: tmp1.y,
            };
            let tmpXY2 = {
                x: tmp2.x,
                y: tmp2.y,
            };
            return Math.atan2(tmpXY1.y - tmpXY2.y, tmpXY1.x - tmpXY2.x);
        }

        static ["getAngleDist"](a, b) {
            let p = Math.abs(b - a) % (Math.PI * 2);
            return p > Math.PI ? (Math.PI * 2) - p : p;
        }

        static ["checkItemLocation"](gameObjects, x, y, s, sM, indx, ignoreWater, placer) {
            for (let i = 0; i < gameObjects.length; ++i) {
                let blockS = gameObjects[i].blocker
                ? gameObjects[i].blocker
                : gameObjects[i].getScale(sM, gameObjects[i].isItem);
                if (gameObjects[i].active && this.getDistance(x, y, gameObjects[i].x, gameObjects[i].y) < (s + blockS))
                    return false;
            }
            if (!ignoreWater && indx != 18 && y >= (this.mapScale / 2) - (this.riverWidth / 2) && y <= (this.mapScale / 2) + (this.riverWidth / 2)) {
                return false;
            }
            return true;
        }
    }
const ps = GameUtils;
class Regex {
  constructor(r, t) {
    this.code = r;
    this.COPY_CODE = r;
    this.unicode = t || r;
    this.hooks = {};
    this.totalHooks = 0;
  }
  static ['parseValue'](u) {
    try {
      return Function("return (" + u + ')')();
    } catch (v) {
      return null;
    }
  }
  ["isRegexp"](aa) {
    return Object.prototype.toString.call(aa).slice(8, -1).toLowerCase() === "regexp";
  }
  ["generateNumberSystem"](ab) {
    const ac = [...NumberSystem];
    const ad = ac.map(({
      prefix: ae,
      radix: af
    }) => ae + ab.toString(af));
    return "(?:" + ad.join('|') + ')';
  }
  ["parseVariables"](ag) {
    ag = ag.replace(/\{VAR\}/g, "(?:let|var|const)");
    ag = ag.replace(/\{QUOTE\}/g, "['\"`]");
    ag = ag.replace(/ARGS\{(\d+)\}/g, (...ah) => {
      let ai = Number(ah[1]);
      let aj = [];
      while (ai--) {
        aj.push("\\w+");
      }
      return aj.join("\\s*,\\s*");
    });
    ag = ag.replace(/NUMBER\{(\d+)\}/g, (...ak) => {
      const al = Number(ak[1]);
      return this.generateNumberSystem(al);
    });
    return ag;
  }
  ["format"](am, an, ao) {
    this.totalHooks += 1;
    let ap = '';
    if (Array.isArray(an)) {
      ap = an.map(aq => this.isRegexp(aq) ? aq.source : aq).join("\\s*");
    } else {
      if (this.isRegexp(an)) {
        ap = an.source;
      }
    }
    ap = this.parseVariables(ap);
    if (this.unicode) {
      ap = ap.replace(/\\w/g, "(?:[^\\x00-\\x7F-]|\\$|\\w)");
    }
    const ar = new RegExp(ap.replace(/\{INSERT\}/, ''), ao);
    const as = this.code.match(ar);
    if (as === null) {
      console.debug("failed to find " + am);
    }
    return ap.includes("{INSERT}") ? new RegExp(ap, ao) : ar;
  }
  ["template"](au, av, aw, ax) {
    const ay = new RegExp('(' + this.format(av, aw).source + ')');
    const az = this.code.match(ay) || [];
    this.code = this.code.replace(ay, au === 0 ? '$1' + ax : ax + '$1');
    return az;
  }
  ['match'](ba, bb, bc, bd = false) {
    const be = this.format(ba, bb, bc);
    const bf = this.code.match(be) || [];
    const bg = {
      expression: be,
      match: bf
    };
    this.hooks[ba] = bg;
    return bf;
  }
  ["matchAll"](bh, bj, bk = false) {
    const bl = this.format(bh, bj, 'g');
    const bm = [...this.code.matchAll(bl)];
    const bn = {
      expression: bl,
      match: bm
    };
    this.hooks[bh] = bn;
    return bm;
  }
  ['replace'](bo, bp, bq, br) {
    const bs = this.format(bo, bp, br);
    this.code = this.code.replace(bs, bq);
    return this.code.match(bs) || [];
  }
  ["append"](bt, bu, bv) {
    return this.template(0, bt, bu, bv);
  }
  ["prepend"](bw, bx, by) {
    return this.template(1, bw, bx, by);
  }
  ["insert"](bz, ca, cb) {
    const {
      source: cc
    } = this.format(bz, ca);
    if (!cc.includes('{INSERT}')) {
      throw new Error("Your regexp must contain {INSERT} keyword");
    }
    const cd = new RegExp(cc.replace(/^(.*)\{INSERT\}(.*)$/, "($1)($2)"));
    this.code = this.code.replace(cd, '$1' + cb + '$2');
    return this.code.match(cd);
  }
}
const ce = {
  radix: 0x2,
  prefix: "0b0*"
};
const cf = {
  radix: 0x8,
  prefix: '0+'
};
const cg = {
  radix: 0xa,
  prefix: ''
};
const ch = {
  radix: 0x10
};
function ci(cj, ck, cl, cm) {
  return cn(cm + 0x11d, cl);
}
ch.prefix = "0x0*";
const NumberSystem = [ce, cf, cg, ch];
const polearms = [28, 44, 45];
const co = {
  request_received: 0x11,
  entity_spawned: 0x20,
  items_upgrade: 0x2,
  ping_update: 0xf,
  create_clan: 0x18,
  update_clan: 0x10,
  entity_chat: 0x1e,
  leave_clan: 0x1b,
  update_age: 0x8,
  item_hit: 0x1d,
  upgrades: 0xe,
  spawned: 0x23,
  killed: 0x1c,
  update: 0x14,
  died: 0x13
};
class MenuTools {
  static get ['Menu_HTML']() {
    return "\n            <span class=\"menu-title-version\" style=\"position: fixed; bottom: 0px\">\n                Version v4\n            </span>\n\n            <div class=\"menu-sector\">\n                <div class=\"menu-title-holder\">\n                    <span class=\"menu-title-icon\">\n                        Coder Mod\n                    </span>\n\n                    <span class=\"menu-title-version\">\n                        By cah blX\n                    </span>\n                </div>\n\n                <div class=\"menu-body\"></div>\n            </div>\n\n            <div id=\"page-1\" class=\"menu-sector\" style=\"left: 22vw\">\n                <div class=\"menu-header\">\n                    <span class=\"menu-title\">\n                        Visual Settings\n                    </span>\n\n                    <i class=\"menu-icon menu-icon-touchable pointer bi bi-chevron-down\" onclick=\"MenuTools.toggleSector(this)\"></i>\n                </div>\n\n                <div class=\"visuals-body\"></div>\n            </div>\n\n            <div id=\"page-2\" class=\"menu-sector\" style=\"left: 40vw\">\n                <div class=\"menu-header\">\n                    <span class=\"menu-title\">\n                        Combat Settings\n                    </span>\n\n                    <i class=\"menu-icon menu-icon-touchable pointer bi bi-chevron-down\" onclick=\"MenuTools.toggleSector(this)\"></i>\n                </div>\n\n                <div class=\"combat-body\"></div>\n            </div>\n\n            <div id=\"page-3\" class=\"menu-sector\" style=\"left: 58vw\">\n                <div class=\"menu-header\">\n                    <span class=\"menu-title\">\n                        Chat Settings\n                    </span>\n\n                    <i class=\"menu-icon menu-icon-touchable pointer bi bi-chevron-down\" onclick=\"MenuTools.toggleSector(this)\"></i>\n                </div>\n\n                <div class=\"chats-body\"></div>\n            </div>\n\n            <div id=\"page-4\" class=\"menu-sector\" style=\"top: 50vh; height: 35vh\">\n                <div class=\"menu-header\">\n                    <span class=\"menu-title\">\n                        Misc Settings\n                    </span>\n\n                    <i class=\"menu-icon menu-icon-touchable pointer bi bi-chevron-down\" onclick=\"MenuTools.toggleSector(this)\"></i>\n                </div>\n\n                <div class=\"misc-body\"></div>\n            </div>\n        ";
  }
  static get ["Menu_CSS"]() {
    return "\n            background-color: rgb(0 0 0 / .5);\n            position: fixed;\n            display: none;\n            height: 100%;\n            z-index: 10;\n            width: 100%;\n            left: 0px;\n            top: 0px;\n        ";
  }
  static get ['Global_CSS']() {
    return "\n            @import url(\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.0/font/bootstrap-icons.css\");\n            @import url('https://fonts.cdnfonts.com/css/summer-farmhouse');\n            @import url('https://fonts.cdnfonts.com/css/expletus-sans-2');\n            @import url('https://fonts.cdnfonts.com/css/bastian-script');\n            @import url('https://fonts.cdnfonts.com/css/sofia-sans');\n\n            :root {\n                --main-color: #0000ff;\n                --darker-color: #5174cd;\n                --lighter-color: #f3e6ef;\n\n                --main-color-lighter: #e9d5e4;\n                --darker-color-lighter: #5174cd;\n                --lighter-color-lighter: #fff5fc;\n\n                --main-color-strong: #0000ff;\n                --darker-color-strong: #0000ff;\n                --lighter-color-strong: #5174cd;\n\n                --dark-text: #5174cd;\n                --border-color: #5174cd;\n                --border-color-hover: #5174cd;\n\n                \n            }\n\n            * {\n                transition-duration: .5s\n            }\n\n            .pointer,\n            .pointer * {\n                cursor: url(img/ui/cursor-pointer.png) 6 0, pointer;\n            }\n\n            .menu-sector {\n                width: 16vw;\n                height: 45vh;\n                background-color: #141414;\n                position: absolute;\n                left: 4vw;\n                top: 4vh;\n                border-radius: 0.4vw;\n                display: flex;\n                flex-direction: column;\n                align-items: flex-start;\n                overflow: hidden;\n                transition-duration: 0s\n            }\n\n            .menu-sector.open {\n                height: 5.4vh !important\n            }\n\n            .visuals-body,\n            .combat-body,\n            .chats-body,\n            .misc-body{\n                width: -webkit-fill-available;\n            }\n\n            .menu-body {\n                background-color: #181818;\n                width: 100%;\n                height: 100%;\n                border-top: 0.5vh solid #212121\n            }\n\n            .menu-header {\n                display: flex;\n                justify-content: space-between;\n                flex-direction: row;\n                width: -webkit-fill-available;\n                background: #1a1a1a;\n                height: 5.4vh\n            }\n\n            .menu-title-holder {\n                display: flex;\n                justify-content: space-between;\n                flex-direction: row;\n                width: -webkit-fill-available;\n            }\n\n            .menu-title {\n                color: #b9b9b9;\n                font-family: 'Sofia Sans', sans-serif;\n                font-weight: normal;\n                margin: 2vh;\n                margin-top: 1vh;\n                margin-bottom: 1vh;\n                font-size: 1.5vw;\n            }\n\n            .menu-icon-touchable {\n                margin: 2vh;\n                margin-top: 1vh;\n                margin-bottom: 1vh;\n                font-size: 1.5vw;\n                color: #b9b9b9\n            }\n\n            .menu-title-icon,\n            .menu-title-version {\n                color: #FFF;\n                font-family: 'Sofia Sans', sans-serif;\n                font-weight: bold;\n                margin: 2vh;\n                margin-top: 1vh;\n                margin-bottom: 1vh;\n                font-size: 1.5vw;\n            }\n\n            .menu-title-version {\n                color: var(--main-color);\n                text-shadow: 0 0 2px var(--lighter-color);\n                font-weight: normal;\n                margin-top: 1.3vh;\n                font-size: 1.3vw;\n            }\n\n            .menu-icon {\n                color: #626262;\n            }\n\n            .menu-text-holder {\n                display: flex;\n                align-items: center;\n                color: var(--main-color);\n                font-weight: 400;\n            }\n\n            .menu-text-icon::before {\n                margin-bottom: 0.2vh;\n                margin-right: .4vw\n            }\n\n            .menu-text {\n                font-family: 'Expletus Sans', sans-serif;\n                font-weight: normal;\n            }\n\n            .menu-input {\n                outline: none;\n                padding: 1vh;\n                cursor: url(img/ui/cursor-text.png) 16 0, text;\n                background-color: #060606;\n                color: var(--main-color);\n                border: 0px;\n                width: -webkit-fill-available;\n                margin: 1.5vh 1vw 0px 1vw;\n                border-radius: .8vh;\n            }\n\n            .menu-button {\n                color: var(--main-color);\n                display: flex;\n                flex-direction: row;\n                align-items: center;\n                justify-content: space-between;\n                width: -webkit-fill-available;\n                padding: 1vh\n            }\n\n            .menu-button:hover {\n                background-color: #1e1e1e\n            }\n\n            .menu-button:active {\n                background-color: #161616\n            }\n\n            .menu-button.active {\n                background-color: var(--main-color);\n            }\n\n            .menu-button.active * {\n                color: white;\n            }\n\n            #skin-message, #left-content, #game-bottom-content, #game-left-content-main, #game-right-content-main, #cross-promo, #right-content, #new-changelog {\n                display: none !important\n            }\n\n            #background-cosmetic-container {\n                background: var(--lighter-color-lighter)\n            }\n\n            #main-content {\n                background: rgb(233 213 228 / 80%);\n                width: max-content\n            }\n\n            #homepage {\n                padding-bottom: 5vh;\n            }\n\n            #skins-categories {\n                margin-right: .4vw;\n                margin-left: .4vw;\n            }\n\n            #play,\n            .blue-button,\n            .green-button,\n            .dark-blue-button,\n            .unlock-button-active {\n                background-color: var(--main-color);\n                box-shadow: inset 0 -5px 0 var(--darker-color);\n            }\n\n            #play:hover,\n            .blue-button:hover,\n            .green-button:hover,\n            .dark-blue-button:hover,\n            .unlock-button-active:hover {\n                background-color: var(--main-color-lighter);\n                box-shadow: inset 0 -5px 0 var(--darker-color-lighter);\n            }\n\n            #play:active,\n            .blue-button:active,\n            .green-button:active,\n            .dark-blue-button:active,\n            .unlock-button-active:active {\n                background-color: var(--main-color);\n                box-shadow: inset 0 5px 0 var(--darker-color);\n            }\n\n            .dark-blue-button-2-active {\n                background-color: var(--main-color);\n                box-shadow: inset 0 5px 0 var(--darker-color);\n                border-color: var(--border-color)\n            }\n\n            .dark-blue-button-2-active:hover {\n                background-color: var(--main-color-lighter);\n                box-shadow: inset 0 5px 0 var(--darker-color-lighter);\n                border-color: var(--border-color-hover)\n            }\n\n            .skins-button {\n                border-color: var(--border-color)\n            }\n\n            .skin,\n            .skin-active:hover {\n                background: transparent;\n                border-radius: 14px;\n                border: unset;\n                box-shadow: 0px 0px 4px 2px var(--main-color);\n            }\n\n            .skin:hover {\n                background-color: transparent;\n                box-shadow: 0px 0px 6px 5px var(--lighter-color)\n            }\n\n            .nav-button-active {\n                color: var(--main-color)\n            }\n\n            .nav-button-text:hover {\n                color: var(--darker-color)\n            }\n\n            .middle-main {\n                background: rgb(163 136 155 / 30%);\n                border: 5px solid transparent;\n                box-shadow: unset !important\n            }\n\n            #small-waiting {\n                background: transparent;\n            }\n\n            #ranking2-middle-main {\n                height: 246px;\n                margin-left: 1vw;\n            }\n\n            #ranking-title {\n                background: var(--main-color)\n            }\n\n            .table-line:hover,\n            .side-button:hover {\n                background: var(--lighter-color)\n            }\n\n            .side-button {\n                background: var(--darker-color)\n            }\n\n            #nav {\n                opacity: 0\n            }\n\n            #nav:hover {\n                opacity: 1\n            }\n\n            #nickname {\n                width: 170px\n            }\n\n            #server-select {\n                margin-left: .2vw\n            }\n\n            .input {\n                background: var(--main-color);\n                border: 5px solid var(--darker-color);\n                border-radius: 16px;\n                box-shadow: inset 0 23px 0 var(--darker-color-lighter)\n            }\n\n            #ffa-mode,\n            #sandbox-mode,\n            #play {\n                border: 5px solid var(--darker-color);\n                border-radius: 16px;\n                box-shadow: inset 0 -5px 0 var(--darker-color-lighter)\n            }\n\n            #ffa-mode,\n            #sandbox-mode {\n                width: 165px !important\n            }\n\n            #event-mode {\n                display: none\n            }\n\n            .background-img-play {\n                background: url(https://i.imgur.com/Lq4Ap6p.png) 0 0 repeat\n            }\n\n            #server-select,\n            #server-select:hover,\n            #server-select:active {\n                border: 5px solid var(--darker-color-strong);\n                border-radius: 15px;\n                background: var(--lighter-color-strong);\n                box-shadow: inset 0 -6px 0 0 var(--main-color-strong);\n                color: #fff\n            }\n\n            .active-bar-item {\n                position: fixed;\n                left: 35.4vw;\n                bottom: 0.53vh;\n                width: 5.4vw;\n                height: 10.9vh;\n                border: 0.35vw solid var(--darker-color-lighter);\n                border-radius: 0.9vw\n            }\n\n            .chat-container input {\n                background-color: var(--main-color);\n                border: 4px solid var(--darker-color);\n                padding: 5px;\n                padding-bottom: 0px;\n                box-shadow: unset;\n                font-family: \"\", Courier;\n                font-size: 2vw;\n                color: var(--darker-color);\n                letter-spacing: 2px\n            }\n\n            .chat-container input:placeholder {\n                color: var(--darker-color)\n            }\n\n            .chat-container input.text-shadowed-3 {\n                text-shadow: unset !important\n            }\n\n            .tooltip {\n                position: fixed;\n                width: max-content;\n                height: 4.5vh;\n                font-size: 1.1vw;\n                padding: 1vh;\n                color: var(--main-color);\n                background-color: #0c0c0c;\n                border-radius: .25vw;\n                top: 20vw;\n                left: 17vw;\n                z-index: 1000000000000000000000;\n                pointer-events: none;\n                opacity: 0\n            }\n\n            .radar-ui {\n                position: fixed;\n                opacity: 0;\n                top: 2vh;\n                left: 1vw;\n                width: 12vw;\n                height: 24vh;\n                background-color: #003300ad;\n                pointer-events: none;\n                border-radius: 14vw;\n                display: flex;\n                align-items: center;\n                overflow: hidden;\n                justify-content: center\n            }\n\n            .radar-canvas {\n                width: 200%;\n                height: 100%;\n            }\n        ";
  }
  static ['setSwitchs']() {
    var cp = '';
    for (let cq = 0; cq < Menu_Switchs.length; cq++) {
      const cr = Menu_Switchs[cq];
      cp += "\n            <div class=\"menu-button " + (cr.name === "Support" ? '' : 'active') + " pointer\" onclick='" + (cr.name === "Support" ? "window.open(\"https://www.youtube.com/@Jeanne_airmax\")" : "MenuTools.enableCard(this, " + cq + ')') + "' onmouseover=\"MenuTools.title('" + cr.title + "')\" onmouseleave=\"MenuTools.titleout()\">\n                <div class=\"menu-text-holder\">\n                    <div>\n                        <i class=\"menu-text-icon " + cr.icon + "\"></i>\n                    </div>\n                    <span class=\"menu-text\"> " + cr.name + " </span>\n                </div>\n\n                <i class=\"menu-icon bi bi-chevron-right\"></i>\n            </div>\n            ";
    }
    $(".menu-body")[0].innerHTML = cp;
  }
  static ['setVisuals']() {
    var cs = '';
    for (let ct = 0; ct < Visual_Switchs.length; ct++) {
      const cu = Visual_Switchs[ct];
      cs += "\n            <div class=\"menu-button active pointer\" onclick=\"MenuTools.toggleFeature(this, " + ct + ")\" onmouseover=\"MenuTools.title('" + cu.title + "')\" onmouseleave=\"MenuTools.titleout()\">\n                <span class=\"menu-text\"> " + cu.name + " </span>\n\n                <i class=\"menu-icon bi bi-three-dots-vertical\"></i>\n            </div>";
    }
    $(".visuals-body")[0].innerHTML = cs;
  }
  static ['setCombats']() {
    var cv = '';
    for (let cw = 0; cw < Combat_Switchs.length; cw++) {
      const cx = Combat_Switchs[cw];
      cv += "\n            <div class=\"menu-button active pointer\" onclick=\"MenuTools.toggleFeatureC(this, " + cw + ")\" onmouseover=\"MenuTools.title('" + cx.title + "')\" onmouseleave=\"MenuTools.titleout()\">\n                <span class=\"menu-text\"> " + cx.name + " </span>\n\n                <i class=\"menu-icon bi bi-three-dots-vertical\"></i>\n            </div>";
    }
    $(".combat-body")[0].innerHTML = cv;
  }
  static ["setMiscs"]() {
    var cy = '';
    for (let cz = 0; cz < Misc_Switchs.length; cz++) {
      const da = Misc_Switchs[cz];
      cy += "\n            <div class=\"menu-button active pointer\" onclick=\"MenuTools.toggleFeatureM(this, " + cz + ")\" onmouseover=\"MenuTools.title('" + da.title + "')\" onmouseleave=\"MenuTools.titleout()\">\n                <span class=\"menu-text\"> " + da.name + " </span>\n\n                <i class=\"menu-icon bi bi-three-dots-vertical\"></i>\n            </div>";
    }
    $(".misc-body")[0].innerHTML = cy;
  }
  static ["setChats"]() {
    var db = '';
    for (let dc = 0; dc < Chats_Switchs.length; dc++) {
      const dd = Chats_Switchs[dc];
      db += "\n            <input class=\"menu-input\" maxlength=\"35\" id=\"chat-" + dc + "\" value=\"" + dd.value + "\" onmouseover=\"MenuTools.title('" + dd.name + " | " + dd.title + "')\" onmouseleave=\"MenuTools.titleout()\">\n            ";
    }
    $(".chats-body")[0].innerHTML = db;
  }
  static ['title'](de) {
    const df = $(".tooltip")[0];
    df.style.opacity = '1';
    df.style.left = Vars.mouse.x + 20 + 'px';
    df.style.top = Vars.mouse.y + 'px';
    df.innerHTML = de;
  }
  static ["titleout"]() {
    const dg = $(".tooltip")[0];
    dg.style.opacity = '0';
  }
  static ['enableCard'](dh, di) {
    const dj = Menu_Switchs[di];
    const dk = dj.enabled ? "none" : "flex";
    $('#' + dj.name)[0].style.display = dk;
    if (dj.enabled) {
      dj.enabled = false;
      dh.classList.remove("active");
    } else {
      dj.enabled = true;
      dh.classList.add("active");
    }
  }
  static ["toggleFeature"](dl, dm) {
    const dn = Visual_Switchs[dm];
    if (dn.enabled) {
      dn.enabled = false;
      dl.classList.remove("active");
    } else {
      dn.enabled = true;
      dl.classList.add("active");
    }
  }
  static ["toggleFeatureC"](dp, dq) {
    const dr = Combat_Switchs[dq];
    if (dr.enabled) {
      dr.enabled = false;
      dp.classList.remove('active');
    } else {
      dr.enabled = true;
      dp.classList.add('active');
    }
  }
  static ["toggleFeatureM"](ds, dt) {
    const du = Misc_Switchs[dt];
    if (du.enabled) {
      du.enabled = false;
      ds.classList.remove("active");
    } else {
      du.enabled = true;
      ds.classList.add("active");
    }
  }
  static ["toggleSector"](dv) {
    const dw = dv.parentElement.parentElement;
    dw.style.transitionDuration = ".5s";
    setTimeout(() => {
      dw.style.transitionDuration = '0s';
    }, 500);
    if (dw.classList.contains('open')) {
      dv.style.rotate = '0deg';
      dw.classList.remove('open');
    } else {
      dv.style.rotate = "180deg";
      dw.classList.add('open');
    }
  }
  static get ['Radar_HTML']() {
    return "\n            <canvas class=\"radar-canvas\"></canvas>\n        ";
  }
}
class Variables {
  constructor() {
    this.loaded = false;
    this.mouse = {};
    this.angles = [];
    this.entities = [];
    this.mill = Date.now();
    this.bed = Date.now();
    this.packetLimiter = 800;
    this.oldDetectingInsta = false;
    const dy = {
      fill: "#f3af6a",
      stroke: '#000000'
    };
    const dz = {
      fill: "#aeff00",
      stroke: '#000000'
    };
    const ea = {
      fill: "#ff0000",
      stroke: "#000000"
    };
    const eq = {
      fill: "#cfbc5f",
      stroke: '#000000'
    }
    const eb = {
      own: dy,
      ally: dz,
      enemy: ea,
      animal: eq
    };
    this.colors = eb;
  }
}
class Tools {
  static ["newElement"](ec, ed = [], ee = '', ef = '', eg, eh = '', ei = '') {
    const ej = document.createElement(ec);
    const ek = {
      id: ee,
      classList: ef,
      innerHTML: eh,
      style: ei
    };
    Object.assign(ej, ek);
    if (eg) {
      ej.outerHTML = eg;
    }
    ed.forEach(el => {
      ej.setAttribute(el.attribute, el.value);
    });
    return ej;
  }
  static ["parseMessage"](em) {
    const en = typeof em;
    const eo = en === "string" ? JSON.parse(em) : new Uint8Array(em);
    eo.type = eo[0];
    return eo;
  }
  static ['parseAngle'](ep) {
    const eq = 65535 * (ep + Math.PI) / (2 * Math.PI);
    return [255 & eq, eq >> 8 & 255];
  }
  static ["distance"](er, es) {
    return Math.sqrt(Math.pow(es.y - er.y, 2) + Math.pow(es.x - er.x, 2));
  }
  static ["direction"](et, eu) {
    return Math.atan2(et.y - eu.y, et.x - eu.x);
  }
  static async ["sleep"](ev) {
    await new Promise(ew => {
      setTimeout(() => {
        ew();
      }, 1000);
    });
  }
  static async ["updatePackets"]() {
    Client.packets++;
    await Tools.sleep(1000);
    Client.packets--;
  }
}
class PlayerManager {
  constructor() {
            this.canInsta = false;
            this.canEquip = true;
            this.doingInsta = false;
            this.position = {};
            this.dir = 0;
            this.oldX = 0;
            this.oldY = 0;
            this.clan = [];
            this.currentHat = null;
            this.inTrap = false;
            this.kills = 0;
            this.dieCount = 0;
            this.packets = 0;
            this.alive = false;
            this.old_weapon = 0;
            this.new_weapon = 0;
            this.breaking = false;
            this.leftClick = false;
            this.rightClick = false;
            this.step = 0;
            this.trapSid = undefined;
            this.placing = true;
            this.prevHealth = 100;
            this.hitSync = true;
            this.shotSync = true;
            this.antitrap = false;
  }
  ["packet"]() {
    const ex = this.ws;
    const ey = document.querySelector("#chat-4").value;
    if (ex.readyState !== WebSocket.OPEN) {
      return;
    }
    if (Misc_Switchs[3].enabled && this.packets >= ey) {
      return;
    }
    Tools.updatePackets();
    ex.send(new Uint8Array([...arguments]));
  }
  ["equip"](ez) {
    if (this.hat != ez) {
      this.hat = ez;
      this.packet(5, ez);
    }
  }
  ["raw_select"](fa) {
    return this.packet(2, fa);
  }
  ["select"](fb) {
    return this.packet(0, fb);
  }
  ["hit"](fc) {
    const fd = Tools.parseAngle(fc);
    this.packet(19, fd[0], fd[1]);
    this.packet(18);
  }
  ["place"](fe, ff = Mouse.angle) {
    this.select(this.old_weapon);
    this.select(fe);
    this.hit(ff);
    this.select(this.old_weapon);
  }
  ["ally"](fg) {
    const fh = {
      KPiEE: function (fi, fj) {
        return fi === fj;
      }
    };
    fh.pEGlC = 'number';
    fh.SNrCC = function (fk, fl) {
      return fk > fl;
    };
    fh.OXQuY = "TTlRv";
    fh.JANOD = function (fm, fn) {
      return fm < fn;
    };
    fh.ZAVWg = function (fo, fp) {
      return fo == fp;
    };
    let fq = fg["typeof"] === fh.pEGlC ? fg : fg.sid;
    if (fh.SNrCC(Client.clan.length, 0)) {
      if (fh.OXQuY === "TTlRv") {
        let fr = Client.clan.length;
        for (let fs = 0; fh.JANOD(fs, fr); fs++) {
          let ft = Client.clan[fs];
          if (fh.ZAVWg(fq, ft)) {
            return true;
          }
        }
      } else {
        if (fu) {
          const fv = fw.apply(fx, arguments);
          fy = null;
          return fv;
        }
      }
    }
    return false;
  }
  ["mine"](fz) {
    if (this.ally(fz) || this.sid == fz.sid) {
      return true;
    }
    return false;
  }
  ["chat"](ga) {
    if (ga.trim() == '') {
      return;
    }
    const gb = new TextEncoder().encode(ga);
    this.packet(7, ...gb);
  }
  ["quad"](gc) {
    const gd = Tools.direction(gc, this);
    for (let ge = 0; ge < 2 * Math.PI; ge += Math.PI / 8) {
      setTimeout(() => {
        this.place(7, -gd + ge);
      }, 30 * (ge / 0.4));
    }
  }
  ["getHat"](gf, gg, gh, gi) {
    var gj = 4;
    if (gf < 180) {
      if (gi) {
        gj = 11;
      } else {
        if (gg === 2) {
          gj = 4;
        } else {
          if (gg === 5) {
            gj = 6;
          } else if (gg === 4 && !gh) {
            gj = 4;
          } else if (gg === 10) {
              gj = 5
          } else if (gg === 6) {
              gj = 0;
          } else if (gg === 7) {
              gj = 7
          } else if (gg === 1) {
              gj = 5
          } else if (gg === 0) {
              gj = 2
          } else if (gg === 11) {
              gj = 0
          } else if (gg === 6) {
              gj = 6;
          }
        }
      }
    }
    return gj;
  }
  ["update"]() {
    if (this.alive) {
      const gk = this.y > 8000 && this.y < 9000;
      var gl = 4;
      const gm = Vars.entities.find(gn => gn && Tools.distance(gn, this) < 60 && gn.type == 6 && !this.mine(gn));
      const go = Vars.oldDetectingInsta;
      const gp = Vars.breaking;
      const gs = 100 - this.health;
      Vars.oldDetectingInsta = false;
      Vars.breaking = false;
      if (Combat_Switchs[1].enabled && gm) {
        if (!gp) {
          const gq = document.querySelector("#chat-1").value;
          this.quad(gm);
          this.chat(gq);
        }
        const gr = Tools.direction(gm, this);
        Vars.oldTrap = gm;
        if (this.old_weapon != 1) {
          this.old_weapon = 1;
          this.select(1);
        }
        this.hit(gr);
        gl = 11;
        Vars.breaking = true;
      } else {
        if (gp && true) {
          const gs = Tools.direction(Vars.oldTrap, this);
          this.place(7, gs);
          Vars.oldTrap = null;
        }
      }
      if (gk) {
        gl = 9;
      }
      if (true && Vars.enemy) {
        const gt = Tools.distance(this, Vars.enemy);
        const gu = Vars.enemy.hat;
        gl = this.getHat(gt, gu, gk, gm);
        if (Combat_Switchs[4] && Vars.enemy && true) {
          const gv = Vars.entities.filter(gw => gw && gw.type == 0 && gw.hat == 2 && !this.mine(gw) && polearms.includes(gw.weapon) && Tools.distance(this, gw) < 180);
          const gx = this.hat != 4 || gl != 4;
          if (gv.length != 0 && gx && !go) {
            const gy = document.querySelector('#chat-2').value;
            this.chat(gy);
            gl = 4;
            Vars.oldDetectingInsta = true;
          }
        }
      }
      if (this.health < 100 && Combat_Switchs[0].enabled) {
          const gp = document.querySelector('#chat-3').value;
        if (this.health < 25 && true) {
            this.chat(gp);
        }
            if(this.health < 100) {
                if (gs >= 20 || gs <= 40) {
                    gl = 4;
                    setTimeout(() => {
                        this.place(2, gtd())
                    }, 110);
                } else if (gs >= 40 || gs <= 69) {
                    gl = 4;
                    setTimeout(() => {
                        this.place(2, gtd());
                    }, 77);
                } else if (gs >= 70 || gs <= 99) {
                    gl = 3;
                    setTimeout(() => {
                        this.place(2, gtd())
                    }, 100 - gs);
                }
            } else if (this.health < 40) {
                setTimeout(() => {
                this.place(2, gtd())
            }, Math.round(Math.random() * (100 - 60)) + 60);
          }
      }
      Vars.angles = [];
      if (!gm) {
        if (Vars.enemy && Combat_Switchs[2].enabled) {
          const gz = Vars.entities.find(ha => ha && Tools.distance(ha, Vars.enemy) < 60 && ha.type == 6 && this.mine(ha));
          const hb = Tools.distance(this, Vars.enemy);
          const hc = Tools.direction(Vars.enemy, this);
          if (hb <= 160) {
            if (gz) {
              Vars.angles = [hc + 0.95993, hc - 0.95993];
              this.place(4, Vars.angles[0]);
              setTimeout(() => {
                this.place(4, Vars.angles[1]);
              }, 20.31);
            } else {
              Vars.angles = [hc];
              this.place(7, hc);
            }
          }
        }
        if (!gk && !this.items.includes(15) && Misc_Switchs[0].enabled && this.age < 6 && Date.now() - Vars.mill > 200) {
          const hd = Math.atan2(this.y - this.oldY, this.x - this.oldX);
          this.place(5, hd);
          Vars.mill = Date.now();
        }
      }
        if (!gk && !this.items.includes(15) && Misc_Switchs[2].enabled && this.age < 9 && Date.now() - Vars.bed > 200) {
          const hd = Math.atan2(this.y - this.oldY, this.x - this.oldX);
          this.place(9, hd);
          Vars.bed = Date.now
        }
      if (Combat_Switchs[3].enabled) {
        this.equip(gl);
      }
        var nd = enemies ? ps.getDist(enemies, this) : 0;
        var na = enemies ? ps.getDirect(enemies, this, 0, 0) : 0;
        const enemies = [];
        const Entity = [];
        /*
      if (Combat_Switchs[7].enabled) {
           const gt = Entity.find(c => c && this.getDistance(c, enemies) <= 60 && c.type == 6 && c.id !== enemies.id);
                    if (this.wsPushing && !gt) {
                        this.wsPushing = false;
                        this.walk('stop');
                    }
                    if (gt) {
                        let gq = Entity.filter(c => c && [2, 7, 17].includes(c.type) && c.id !== enemies.id && this.getDistance(c, gt) <= 130);
                        if (this.wsPushing && !gq.length) {
                            this.wsPushing = false;
                            this.walk('stop');
                        }
                        if (gq.length) {
                            let sk = gq.sort((a, b) => this.getDistance(a, gt) - this.getDistance(b, gt))[0];
                            let ag = this.getAngle(enemies, sk);
                            this.distance = this.getDistance(enemies, sk) + 70;
                            let p = {
                                x: sk.x + (this.distance * Math.cos(ag)),
                                y: sk.y + (this.distance * Math.sin(ag))
                            };

                            this.distance = this.getDistance(p, this);
                            ag = () => {
                                this.wsPushing = true;
                                if (this.distance > 100) {
                                    return this.getAngle(p, this)
                                } else {
                                    let ad = Math.abs(this.getAngle(sk, p) - this.getAngle(sk, this))
                                    this.chat(`Smart-Pushing At Spike`)
                                    return this.getAngle(enemies, this)
                                }
                            }

                            this.pushing = true;
                            this.walk(ag())
                        }
                    }
                this.distance = this.getDistance(enemies, this)
      }
      if (Combat_Switchs[6].enabled && this.distance < 250) {
          const gh = Entity.find(c => c && [2, 7, 17].includes(c.type) && c.id !== enemies.id && this.getDistance(c, this.enemyPos) <= 60);
          if (gh) {
             gl = 2;
             this.take(0);
             this.hit(this.angle);
             setTimeout(() => this.offensive(), 2e3);
           }
           if (enemies.health <= (enemies.skin == 2 ? 78 : 85) && this.skin == 5 && this.health <= 70) {
               gl = 2;
               this.take(0);
               this.hit(this.angle);
               setTimeout(() => this.offensive(), 2e3);
            }
          }
        let d;
        const rd = d.data;
        const mg = parseMessage(rd);
        function parseMessage(a) {
         const b = typeof a;
         const c = b === "string" ? JSON.parse(a) : new Uint8Array(a);
         c.type = c[0];
         return c;
        }
        const objects = [];
          for (let a = 1; a < mg.length; a += 19) {
                    const b = mg[a + 8];
                    const d = mg[a + 0];
                    const e = mg[a + 1];
                    const f = mg[a + 2] | mg[a + 3] << 8;
                    const g = mg[a + 4] | mg[a + 5] << 8;
                    const h = mg[a + 6] | mg[a + 7] << 8;
                    const i = mg[a + 9] / 255 * 6.283185307179586 - Math.PI;
                    const j = mg[a + 10];
                    const k = mg[a + 11];
                    const l = mg[a + 12];
                    const m = mg[a + 13] / 255 * 100;

                    if (b & 2) {
                        if(Combat_Switchs[5].enabled) {
                            const ea = ps.getDirect(enemies, this, 0, 0);
                            const ed = ps.getDist(enemies, this);
                            const nt = objects.find(a => a && this.mine(a) && ps.getDist(a, enemies) < 60 && a.type == 6);
                            const oa = ps.getDirection(this.x, this.y, g, h);
                            if (ed < 300) {
                              this.place(7, oa)
                            };
                        }
                        if(f == this.trapSid){
                            gl = 4;
                            this.oldTrap = null;
                            this.inTrap = false;
                            this.breaking = false;
                        }
                        objects[f] = null;
                    } else {
                        const a = objects[f] || {};
                        const b = {
                            type: d,
                            sid: e,
                            id: f,
                            x: g,
                            y: h,
                            weapon: j,
                            hat: k,
                            health: m,
                            team: l,
                            dir: i
                        };
                        Object.assign(a, b);
                        objects[f] = a;
                        if (f === Client.id) {
                            Object.assign(Client, a);
                        }
                        const c = !Client.team || l != Client.team;
                        if (d === 0 && Client.id !== f && c) {
                            const b = enemies;
                            const c = Math.hypot(Client.y - h, Client.x - g);
                            const d = enemies ? Math.hypot(Client.y - b.y, Client.x - b.x) : null;
                            if (b) {
                                if (c < d) {
                                    enemies = a;
                                }
                            } else {
                                enemies = a;
                            }
                        }
                    }
                }
                this.update();
                */
    }
  }
  ["auto_replace"]() {}
  ["choose"](hg) {
    this.packet(14, hg);
  }
  ["autoselect"](hh) {
    if (hh != 15) {
      return;
    }
    setTimeout(() => {
      this.select(1);
    }, 30);
  }
  ["listener"](hi) {
    const hj = hi.data;
    const hk = Tools.parseMessage(hj);
    if (hk.type === 0x13) {
      this.alive = false;
      this.kills = 0;
      this.age = 0;
    }
    if (hk.type == 0x8) {
      const hl = Math.max(0, hk[1] | hk[2] << 8 | hk[3] << 16 | hk[4] << 24);
      this.age = ~~(Math.log(1 + hl) ** 2.4 / 13);
    }
    if (hk.type === 0x23) {
      const hm = hk[1];
      const hn = hk[2];
      const ho = hk[4];
      const hq = {
        alive: true,
        health: 100,
        id: hm,
        name: hn,
        items: ho
      };
      Object.assign(this, hq);
    }
    if (hk.type === 0xe && Misc_Switchs[1].enabled) {
      const hr = [1, 12, 9, 19, 20, 15, 8, 17, 16];
      for (let hs = 0; hs < hr.length; hs++) {
        if (hk[1].indexOf(hr[hs]) != -1) {
          this.choose(hr[hs]);
          this.autoselect(hr[hs]);
        }
      }
    }
    if (hk.type === 0x1c) {
      const ht = document.querySelector("#chat-0").value;
      this.kills++;
      if (ht.trim() == '') {
        return;
      }
      this.chat(ht.replace(/{KILL}/g, this.kills));
      this.chat(ht.replace(/\{NAME}/g, this.names));
    }
    if (hk.type === 0x10 || hk.type === 0x18) {
      this.clan = [...hk.slice(2, hk.length)];
    }
    if (hk.type === 0x1b) {
      this.clan = [];
    }
    if (hk.type === 0x2) {
      if (hk.byteLength > 1) {
        this.items = [];
        for (let hu = 1; hu < hk.byteLength; hu++) {
          this.items.push(hk[hu]);
        }
      }
    }
    if (hk.type === 0x14) {
      Vars.enemy = null;
      for (let hv = 1; hv < hk.length; hv += 19) {
        const hw = hk[hv + 8];
        const hx = hk[hv + 0];
        const hy = hk[hv + 1];
        const hz = hk[hv + 2] | hk[hv + 3] << 8;
        const ia = hk[hv + 4] | hk[hv + 5] << 8;
        const ib = hk[hv + 6] | hk[hv + 7] << 8;
        const ic = hk[hv + 9] / 255 * 6.283185307179586 - Math.PI;
        const ie = hk[hv + 10];
        const ig = hk[hv + 11];
        const ih = hk[hv + 12];
        const ii = hk[hv + 13] / 255 * 100;
        if (2 & hw) {
          Vars.entities[hz] = null;
          Client.auto_replace(ia, ib);
        } else {
          const ij = Vars.entities[hz] || {};
          const ik = {
            type: hx,
            sid: hy,
            id: hz,
            x: ia,
            y: ib,
            weapon: ie,
            hat: ig,
            health: ii,
            team: ih,
            dir: ic
          };
          Object.assign(ij, ik);
          Vars.entities[hz] = ij;
          if (hz === Client.id) {
            Object.assign(Client, ij);
          }
          const il = !Client.team || ih != Client.team;
          if (hx === 0 && Client.id !== hz && il) {
            const im = Vars.enemy;
            const ip = Math.hypot(Client.y - ib, Client.x - ia);
            const iq = Vars.enemy ? Math.hypot(Client.y - im.y, Client.x - im.x) : null;
            if (im) {
              if (ip < iq) {
                Vars.enemy = ij;
              }
            } else {
              Vars.enemy = ij;
            }
          }
        }
      }
      Client.update();
    }
  }
  ["setWS"](ir, iu) {
    this.ws = ir;
    this.ws_url = iu;
    this.ws.addEventListener("message", this.listener.bind(this));
  }
}
class Hooks {
  static ["PlaceHelper"](iv, iw) {
    if (iv[window.values.sid] != Client.sid) {
      return;
    }
    if (!Visual_Switchs[3].enabled) {
      return;
    }
    for (let ix = 0; ix < Vars.angles.length; ix++) {
      const iy = Vars.angles[ix];
      const iz = Vars.colors.own.fill;
      const ja = window.values.x;
      const jb = window.values.y;
      const jc = Client.raw[ja] + 75 * Math.cos(iy);
      const jd = Client.raw[jb] + 75 * Math.sin(iy);
      iw.save();
      iw.beginPath();
      iw.translate(jc, jd);
      iw.rotate(iy);
      iw.fillStyle = iz;
      iw.globalAlpha = 0.4;
      iw.lineWidth = 35;
      iw.beginPath();
      iw.arc(0, 0, 35, 0, 2 * Math.PI);
      iw.fill();
      iw.closePath();
      iw.restore();
    }
  }
  static ["Tracers"](je, jf) {
    if (je[window.values.sid] == Client.sid) {
      return Client.raw = je;
    }
    if (je.type || !Client.raw) {
      return;
    }
    if (!Visual_Switchs[2].enabled) {
      return;
    }
    const jg = jf.fillStyle;
    const jh = jf.globalAlpha;
    const ji = window.values.sid;
    const jj = window.values.x;
    const jk = window.values.y;
    const jl = je[ji];
    const jm = je[jj];
    const jn = je[jk];
    var jo = "enemy";
    if (Client.clan.includes(jl)) {
      jo = "ally";
    }
    if (jl == Client.sid) {
      jo = "own";
    }
    if (Client.animal.includes(jl)) {
      jo = "animal";
    }
    const jp = Vars.colors[jo];
    jf.strokeStyle = jp.fill;
    jf.globalAlpha = 0.6;
    jf.lineCap = "round";
    jf.beginPath();
    jf.moveTo(Client.raw[jj], Client.raw[jk]);
    jf.lineTo(jm, jn);
    jf.stroke();
    jf.closePath();
    jf.fillStyle = jg;
    jf.globalAlpha = jh;
  }
  static ["Indicators"](jq, jr, jt) {
    const ju = {
      'YWnAZ': 'enemy'
    };
    ju.bSbbF = 'ally';
    ju.CddgP = function (jv, jw) {
      return jv == jw;
    };
    ju.WyUMJ = "own";
    ju.JctaV = function (jx, jy) {
      return jx - jy;
    };
    ju.lpfAY = function (jz, ka) {
      return jz * ka;
    };
    const kb = [21, 30, 40, 31, 32, 33, 34, 35, 38, 39, 1, 3, 4, 5, 9].includes(jq.type);
    if (!Visual_Switchs[0].enabled) {
      return;
    }
    if (kb) {
      return;
    }
    const kc = window.values.sid;
    const kd = jq[kc];
    var ke = 'enemy';
    if (Client.clan.includes(kd)) {
      ke = ju.bSbbF;
    }
    if (ju.CddgP(kd, Client.sid)) {
      ke = ju.WyUMJ;
    }
    const kf = Vars.colors[ke];
    jt.beginPath();
    jt.strokeStyle = kf.stroke;
    jt.fillStyle = kf.fill;
    jt.globalAlpha = 0.6;
    jt.lineWidth = 6;
    jt.beginPath();
    jt.arc(0, 0, ju.JctaV(14, 6), 0, ju.lpfAY(2, Math.PI));
    jt.stroke();
    jt.fill();
    jt.closePath();
  }
}
class RadarManager {
  constructor() {
    this.actual = 0;
  }
  ['display']() {
    const kg = document.querySelector(".radar-ui");
    const ki = Client.alive && Visual_Switchs[1].enabled;
    kg.style.opacity = ki * 1;
  }
  ["frame"]() {
    const kj = this.canvas;
    const kk = this.ctx;
    const kl = kj.width / 2;
    const km = kj.height / 2;
    this.display();
    this.actual += 0.033;
    kk.clearRect(0, 0, kj.width, kj.height);
    kk.save();
    kk.translate(kl, km);
    kk.beginPath();
    kk.strokeStyle = "#46a72c";
    kk.moveTo(-kj.width, 0);
    kk.lineTo(kj.width, 0);
    kk.moveTo(0, -kj.height);
    kk.lineTo(0, kj.height);
    kk.stroke();
    kk.closePath();
    kk.save();
    kk.rotate(this.actual);
    kk.beginPath();
    kk.strokeStyle = "#52ad3a";
    kk.shadowColor = "#52ad3a";
    kk.shadowBlur = 15;
    kk.lineWidth = 3;
    kk.globalAlpha = 0.8;
    kk.moveTo(0, 0);
    kk.lineTo(0, kj.height);
    kk.stroke();
    kk.closePath();
    kk.restore();
    for (let kn = 0; kn <= 10; kn++) {
      const ko = kn * 16;
      kk.beginPath();
      kk.strokeStyle = "#46a72c";
      kk.arc(0, 0, ko, 0, Math.PI * 2);
      kk.stroke();
      kk.closePath();
    }
    kk.save();
    kk.rotate(Mouse.angle - 1.5 || 0);
    kk.beginPath();
    kk.fillStyle = "#4abf2a";
    kk.arc(0, 0, 8, 0, Math.PI * 2);
    kk.arc(7, 5, 4, 0, Math.PI * 2);
    kk.arc(-7, 5, 4, 0, Math.PI * 2);
    kk.fill();
    kk.closePath();
    kk.restore();
    if (Vars.entities || Vars.enemy) {
      const kp = Vars.entities.filter(kq => kq && !kq.type && kq.id != Client.id);
      for (let kr = 0; kr < kp.length; kr++) {
        const ks = kp[kr];
        const kt = (ks.x - Client.x) / 10;
        const ku = (ks.y - Client.y) / 10;
        kk.save();
        kk.translate(kt, ku);
        kk.rotate(ks.dir - 1.5 || 0);
        kk.beginPath();
        kk.fillStyle = '#4abf2a';
        kk.arc(0, 0, 8, 0, Math.PI * 2);
        kk.arc(7, 5, 4, 0, Math.PI * 2);
        kk.arc(-7, 5, 4, 0, Math.PI * 2);
        kk.fill();
        kk.closePath();
        kk.restore();
      }
    }
    kk.restore();
    requestAnimationFrame(this.frame.bind(this));
  }
  ["initialize"]() {
    this.canvas = document.querySelector(".radar-canvas");
    this.ctx = this.canvas.getContext('2d');
    requestAnimationFrame(this.frame.bind(this));
  }
}
class MouseManager {
  constructor() {
    this.x = 0;
    this.y = 0;
    this.resize();
  }
  ["listeners"]() {
    const kv = {
      'QVlie': "mousemove"
    };
    kv.Nttzo = 'resize';
    window.addEventListener("mousemove", this.move.bind(this));
    window.addEventListener(kv.Nttzo, this.resize.bind(this));
  }
  ["resize"]() {
    this.width = window.innerWidth;
    this.height = window.innerHeight;
    this.update();
  }
  ['move'](kw) {
    this.x = kw.clientX;
    this.y = kw.clientY;
    this.update();
  }
  ["update"]() {
    const kx = {
      JzmPo: function (ky, kz) {
        return ky / kz;
      }
    };
    kx.yyeYS = function (la, lb) {
      return la - lb;
    };
    this.angle = Math.atan2(this.y - this.height / 2, kx.yyeYS(this.x, this.width / 2));
  }
}
class Macro {
  constructor(lc, ld, le) {
    this.active = false;
    this.id = lc;
    this.key = ld;
    this.delay = le;
    this.interval;
  }
  ["start"](lf) {
    if (lf != this.key) {
      return;
    }
    this.interval = setInterval(() => {
      if (!this.active) {
        clearInterval(this.interval);
      } else {
        Client.place(this.id);
      }
    }, this.delay);
    this.active = true;
  }
  ["stop"](lg) {
    if (lg != this.key) {
      return;
    }
    this.active = false;
  }
}
const lh = {
  name: "Page 1",
  icon: "bi bi-eye-fill",
  enabled: true
};
const li = {
  name: "Page 2",
  icon: "bi bi-capsule",
  enabled: true
};
const lj = {
  name: 'Page 3',
  icon: "bi bi-chat-left-dots-fill",
  enabled: true
};
function cn(lk, ll) {
  const lm = ln();
  cn = function (lo, lp) {
    lo = lo - 269;
    let lq = lm[lo];
    if (cn.ChXiZi === undefined) {
      var lr = function (ls) {
        let lt = '';
        let lu = '';
        let lv = lt + lr;
        let lw = 0;
        let lx;
        let ly;
        for (let lz = 0; ly = ls.charAt(lz++); ~ly && (lx = lw % 4 ? lx * 64 + ly : ly, lw++ % 4) ? lt += lv.charCodeAt(lz + 10) - 10 !== 0 ? String.fromCharCode(255 & lx >> (-2 * lw & 6)) : lw : 0) {
          ly = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='.indexOf(ly);
        }
        let ma = 0;
        for (let mb = lt.length; ma < mb; ma++) {
          lu += '%' + ('00' + lt.charCodeAt(ma).toString(16)).slice(-2);
        }
        return decodeURIComponent(lu);
      };
      cn.SUzlMc = lr;
      lk = arguments;
      cn.ChXiZi = true;
    }
    const mc = lm[0];
    const md = lo + mc;
    const me = lk[md];
    if (!me) {
      const mf = function (mg) {
        this.kGPtJY = mg;
        this.yVCyru = [1, 0, 0];
        this.Qnuumx = function () {
          return 'newState';
        };
        this.mDxmlo = "\\w+ *\\(\\) *{\\w+ *";
        this.JNbvbG = "['|\"].+['|\"];? *}";
      };
      mf.prototype.OYTQBl = function () {
        const mh = new RegExp(this.mDxmlo + this.JNbvbG);
        const mi = mh.test(this.Qnuumx.toString()) ? --this.yVCyru[1] : --this.yVCyru[0];
        return this.ncFAGB(mi);
      };
      mf.prototype.ncFAGB = function (mj) {
        if (!Boolean(~mj)) {
          return mj;
        }
        return this.qXjrHn(this.kGPtJY);
      };
      mf.prototype.qXjrHn = function (mk) {
        let ml = 0;
        for (let mm = this.yVCyru.length; ml < mm; ml++) {
          this.yVCyru.push(Math.round(Math.random()));
          mm = this.yVCyru.length;
        }
        return mk(this.yVCyru[0]);
      };
      new mf(cn).OYTQBl();
      lq = cn.SUzlMc(lq);
      lk[md] = lq;
    } else {
      lq = me;
    }
    return lq;
  };
  return cn(lk, ll);
}
const mn = {
  name: 'Page 4',
  icon: "bi bi-bucket-fill",
  enabled: true
};
const mo = {
  name: "Support Jeanne",
  icon: "bi bi-youtube",
  enabled: true
};
const Menu_Switchs = [lh, li, lj, mn, mo];
const mp = {
  name: "Builds Indicators",
  title: "Build Indicator Enemy, Ally, You",
  enabled: true
};
const mq = {
  name: "Variant Bypass",
  title: "Version Radar, Detecties Entity (players)",
  enabled: true
};
const mr = {
  name: "Tracers",
  title: "Look Tracer Enemy",
  enabled: true
};
const ms = {
  name: "Place Helper Visual",
  title: "Helper Visual With AutoPlace",
  enabled: true
};
const Visual_Switchs = [mp, mq, mr, ms];
const mt = {
  name: "Healing",
  title: "Auto Heal in 500",
  enabled: true
};
const mu = {
  name: "Anti Trap",
  title: "Auto Break Traps + Place",
  enabled: true
};
const mv = {
  name: "Auto Placer",
  title: "Auto Place Spike / Trap",
  enabled: true
};
const mw = {
  name: "Auto Hat",
  title: "Auto Hat Biome (Advance)",
  enabled: true
};
const mx = {
  name: "Anti Insta",
  title: "Anti Insta BETA + Auto Equip Crystal",
  enabled: true
};
const mh = {
  name: "Auto Replacer",
  title: "Normal Auto Replacer Objects[]",
  enabled: true
};
const ma = {
  name: "Auto Sync",
  title: "Real OP",
  enabled: true
};
const uq = {
  name: "Auto Push",
  title: "Pushing Enemy To Spike",
  enabled: true
}
const Combat_Switchs = [mt, mu, mv, mw, mx, mh, ma, uq];
const my = {
  name: "AutoGG Chat",
  title: "Use {KILL} or {NAME} :v",
  value: "gg - AutoGG Coder Race"
};
const mz = {
  name: "Anti Trap Chat",
  title: ":v",
  value: "Anti Pit Trap [ !Alert! ]"
};
const na = {};
function nb(nc, nd, ne, nf) {
  return cn(nd + 0xc0, ne);
};
na.name = "Anti Insta Chat";
na.title = ":v";
na.value = "Coder Alert [Anti Insta!]";
const nr = {
  name: "Heal Chat",
  title: ":v",
  value: "25"
};
const ng = {
  name: "Packet limit",
  title: ":v",
  value: "800"
};
const Chats_Switchs = [my, mz, na, nr, ng];
const nh = {
  name: "Auto Windmill",
  title: "Auto Place Windmill",
  enabled: true
};
const ni = {
  name: "Auto Upg",
  title: "Auto Upgrade (Katana + Hammer)",
  enabled: true
};
const ny = {
  name: "Auto Bed (FIX)",
  title: "Auto Place Bed",
  enabled: true
};
const nj = {
  name: "Packet Limiter",
  title: "Predicte Kicking",
  enabled: true
};
const Misc_Switchs = [nh, ni, ny, nj];
function pageHooks(nk) {
  const nl = new Regex(nk, true);
  window.COPY_CODE = (nl.COPY_CODE.match(/^(\(function \w+\(\w+\)\{.+)\(.+?\);$/) || [])[1];
  nl.append("EXTERNAL fix", /\(function (\w+)\(\w+\)\{/, "let $2 = eval(`(() => ${COPY_CODE})()`);delete window.COPY_CODE;");
  nl.replace("Use Strict", /{QUOTE}use strict{QUOTE};/, '');
  const nm = nl.match('items', /(\(\w+\.\w+\+\w+,\w+\.\w+\+\w+\).+?(\w+\(\).+?\w+\.\w+\.\w+\))([,;]))/);
  const nn = nl.match("entity values", /switch\(\w+\.\w+=\w+,\w+\.(\w+)=\w+,\w+\.(\w+)=\w+,\w+\.(\w+)=\w+\.\w+=\w+\.\w+=\w+,\w+\.(\w+)=\w+\.\w+=\w+\.\w+=\w+,\w+\.(\w+)=\w+\.\w+=\w+\.\w+=\w+,\w+\.\w+=\w+,\w+\.\w+=\w+,\w+\.(\w+)=\w+,\w+\.\w+=\w+,\w+\.(\w+)=\w+/);
  const [, no] = nl.match('weapon', /\(\w+\.(\w+)\|\w+\.(\w+)<<NUMBER{8}\)/);
  const np = {
    id: nn[1],
    sid: nn[2],
    x: nn[3],
    y: nn[4],
    dir: nn[5],
    hat: nn[6],
    hp: nn[7],
    weapon: no
  };
  nl.replace("Clan Colors V2", /\w\(\w+\),"#404040"\):null/, "'#fff', '#5174cd') : null");
  nl.replace("Age Color", /(\("Age 0",24,)"#8000ff"\)/, "$1'#8000ff', '#8000ff')");
  nl.replace("Age Body", /(background\:\w+\(\)\.\w+\([^,]+,[^,]+,[^,]+,)[^)]+\)/, "$1 '#5174cd')");
  nl.replace("Age Fill", /(,[^=]+=)[^,]+(,this\.\w+&&)/, "$1 '#01595b' $2");
  nl.replace("Leaderboard", /(\w\.\w{2}),\w\(\)\.\w{2},\w\(\)\.\w{2},\w\(\)\.\w{2}\)\)\,(this.\w{2}\+\d{2}),/, "$1, 17, \"#5174cd\", \"#fff\")), $2,");
  nl.replace("Map Color", /"#788F57"/, "\"#000000\"");
  nl.replace('Indicators', /(\(\w+\.\w+\+\w+,\w+\.\w+\+\w+\).+?\w+\(\).+?\w+\.\w+\.\w+\)([,;]))/, "\n        " + nm[1].slice(0, -nm[2].length - 1) + ";\n        " + nm[2] + ";\n        Hooks.Indicators(...arguments);\n    ");
  nl.replace("Health Color & Visuals", /"#a4cc4f":"#cc5151"/, "'#5174cd' : '#8000ff',\n\n        Hooks.Tracers(...arguments)\n        Hooks.PlaceHelper(...arguments)\n    ");
  nl.append('showFullMats', /10},\w{2}\Dfunction\((\w)\){/, `return $2;`)
  nl.replace('showFullGold', /(\w)\>\d{7}.*?\+""/, `$1`)
  nl.replace('customClan', /"\["/, `"{"`);
  nl.replace('customClan', /"\]"/, `"}"`);
  nl.replace('grid', /1,(\w{2})=!0/, `1, $1=false`)
  nl.replace('millMarker', /=false,(\w{2})=!0/, `=false,$1=false`)
  nl.replace('enablePing', /42.5\),(\w{2})=!1/, `42.5),$1=true`)
  nl.replace('customItemObvodka', /23,"#fff"/, `23,"#fff","#303030"`)
  nl.replace('customItemObvodka', /eec39d"/, `eec39d", "#303030"`)
  nl.replace('customItemInfo', /4f403c/, '4f403c80')
  nl.replace("renderItems", /(\(\w+\.\w+\+\w+,\w+\.\w+\+\w+\).+?\w+\(\).+?\w+\.\w+\.\w+\)([,;]))/, `$1window.drawMarkers(...arguments)$2`);
  nl.replace("ColorMats", /\)\,24,\"\#\w{6}\"\)|\)\,24,\w\(\d{3}\)\)/, `),24,"#AE4D57", "#303030")`)
  nl.replace("ColorMats", /\)\,24,\"\#\w{6}\"\)|\)\,24,\w\(\d{3}\)\)/, `),24,"#935F3B", "#303030")`)
  nl.replace("ColorMats", /\)\,24,\"\#\w{6}\"\)|\)\,24,\w\(\d{3}\)\)/, `),24,"#7B7A91", "#303030")`)
  nl.replace("ColorMats", /\"\",24\,\D{9}|\"\",24\,\w\(\d{3}\)/, `"",24,"#FFD700", "#303030"`)
  nl.replace('customClan', /"#96C949","#404040"|"#96C949","#404040"|"#96C949",\w\(\d{3}\)/, `""`);
  nl.append("qwes", /t\(570\)\+o;/, `console.debug(r, bt);`);
  nl.append("wbty", /w-form-urlencoded"\),/, `console.debug(o);`)
  nl.append("awbr", /519\)\]\.visibility="visible"\);/, `console.debug(t);`)
  nl.append("blockMouse", /\/\w{2}}function \w{2}\((\w)\)\{/, "if($2.which==3)return;")
  nl.append("checkChat", /Color.+?8,(\w).+?-3\)\),(\w).+?;/, `window.checkMsg($2, $3);`)
  const nq = {
    values: np
  };
  Object.assign(window, nq);
  return nl.code;
}
function pageLoaded() {
  Vars.loaded = true;
  const nr = Tools.newElement("style", [], '', '', undefined, MenuTools.Global_CSS);
  const ns = Tools.newElement("div", [], '', "menu-holder", undefined, MenuTools.Menu_HTML, MenuTools.Menu_CSS);
  const nt = Tools.newElement("div", [], '', 'tooltip', undefined, "This is the tooltip, shows you up a help text");
  const nu = Tools.newElement('div', [], '', "radar-ui", undefined, MenuTools.Radar_HTML);
  document.querySelector("#settings").children[0].src = "https://i.imgur.com/LhafJ4l.png";
  document.head.appendChild(nr);
  document.body.appendChild(nu);
  document.body.appendChild(nt);
  document.body.appendChild(ns);
  $(".menu-sector").draggable();
  MenuTools.setSwitchs();
  MenuTools.setVisuals();
  MenuTools.setCombats();
  MenuTools.setMiscs();
  MenuTools.setChats();
  Radar.initialize();
  Mouse.listeners();
  document.title = "¡ Coder !";
  document.getElementById("homepage").style.backgroundImage = "url('https://cdn.discordapp.com/attachments/1233544080416575544/1284895282173050921/1_xyQsRSY0WTG1X-VaxA8AzA.png?ex=66e84b7b&is=66e6f9fb&hm=90c4a99215322a35e992ab7cd1bcf83cd5f2347073c5d335ded30c477c6aeb5b&')"
  document.querySelector("#da-left").remove();
  document.querySelector("#logo").remove();
  document.querySelector("#lostworld-io_300x250_2").remove();
  document.querySelector("#da-right").remove();
  document.querySelector("#lostworld-io_970x250").remove();
  document.querySelector("#game-bottom-content").remove();
  document.querySelector("#alsoTryImg").remove();
  document.querySelector("#cross-promo > a.biscuit_hover.biscuit_position").remove();
  document.querySelector("#policy").remove();
  document.querySelector("#left-content").remove();
  document.querySelector("#discord > img").remove();
  document.querySelector("#main-content").style.backgroundColor = "transparent";
  document.querySelector("#game-right-content-main").style.opacity = 0;
  document.querySelector("#game-left-content-main").style.opacity = 0;
  document.querySelector("#play > div.background-moving.background-img-play").remove();
  document.querySelector("#hat-menu > div.pop-top.select").remove();
  document.querySelector("#hat_menu_content > div:nth-child(8)").style.display = "none";
  document.querySelector("#hat_menu_content > div:nth-child(1)").style.display = "none";

}
const nv = {
  "/entity/health-gauge-background.png": "https://i.imgur.com/yDcbdRA.png",
  "/entity/resource_background.png": "https://i.imgur.com/gEKWame.png",
  "/entity/health-gauge-front.png": "https://i.imgur.com/UiEWfBX.png",
  "/ui/indicator_enemy.png": "https://i.imgur.com/zsuhbel.png",
  "/entity/our_dot.png": "https://i.imgur.com/hXNNEb6.png"
};
const credits_to_nyanner_for_this_uwu = Object.getOwnPropertyDescriptor(Image.prototype, "src").set;
Object.defineProperty(Image.prototype, 'src', {
  'set'(nw) {
    const nx = Object.entries(nv).find(([ny]) => nw.includes(ny));
    if (nx) {
      nw = nx[1];
    }
    return credits_to_nyanner_for_this_uwu.call(this, nw);
  }
});
window.eval = new Proxy(window.eval, {
  'apply'(nz, oa, ob) {
    const oc = ob[0];
    if (oc.length > 100000) {
      ob[0] = pageHooks(oc);
      window.eval = nz;
    }
    return nz.apply(oa, ob);
  }
});
window.WebSocket = new Proxy(window.WebSocket, {
  'construct'(od, oe) {
    const of = new od(...oe);
    Client.setWS(of, oe[0]);
    return of;
  }
});
document.addEventListener("keyup", () => {
  if (!Vars.loaded) {
    pageLoaded();
  }
});
document.addEventListener('mousemove', og => {
  Vars.mouse.x = og.clientX;
  Vars.mouse.y = og.clientY;
});
document.addEventListener('keydown', oh => {
  const oi = oh.keyCode;
  if (oi == 27) {
    const oj = document.querySelector(".menu-holder");
    const ok = oj.style.display !== "block" ? "block" : 'none';
    oj.style.display = ok;
  }
  if (["clan-menu-clan-name-input", "nickname", "chat"].includes(document.activeElement.id)) {
    return;
  }
  if ([50, 49].includes(oi)) {
    const ol = 51 - oi;
    Client.old_weapon = ol % 2;
  }
  for (let om in placers) {
    placers[om].start(oi);
  }
});
document.addEventListener("keyup", oo => {
  if (["clan-menu-clan-name-input", "nickname", "chat"].includes(document.activeElement.id)) {
    return;
  }
  for (let op in placers) {
    placers[op].stop(oo.keyCode);
  }
});
const Vars = new Variables();
const Client = new PlayerManager();
const Radar = new RadarManager();
const Mouse = new MouseManager();
const placers = {
  'spike': new Macro(4, 86, 30),
  'trap': new Macro(7, 70, 30),
  'heal': new Macro(2, 81, 30)
};
const oq = {
  Vars: Vars,
  Tools: Tools,
  MenuTools: MenuTools,
  Client: Client,
  Hooks: Hooks,
  Radar: Radar,
  Mouse: Mouse
};
Object.assign(window, oq);
function ft(n, v) {
    return parseFloat(n.toFixed(v));
}

function gtd() {
    const ld = Math.atan2(this.mouseY - (this.height / 2), this.mouseX - (this.width / 2));
    return ft(ld || 0, 2);
}