// ==UserScript==
// @name         MrMenu
// @version      1.37
// @description  Best Manager bonk.io
// @author       MrBonkeiro
// @namespace    https://greasyfork.org/en/scripts/504571-mrmenu
// @match        https://bonk.io/
// @match        https://bonk.io/*
// @match        https://bonkisback.io/*
// @match        https://multiplayer.gg/physics/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bonk.io
// @grant        none
// @unwrap
// @namespace https://greasyfork.org/users/1355760
// @downloadURL none
// ==/UserScript==
function ScriptInjector(f)
{
    if (window.location.href == `https://bonk.io/gameframe-release.html`)
    {
        if (document.readyState == 'complete'){ setTimeout(f, 300); }
        else
        { document.addEventListener('readystatechange', function () { setTimeout(f, 1500); }); }
    }
}
function addCSS(ID, cssString, replace = false)
{
    let styleElement = document.getElementById(ID);
    if (styleElement) {
        if (replace) {
            styleElement.innerHTML = cssString;
        } else {
            styleElement.innerHTML += `\n${cssString}`;
        }
    } else {
        styleElement = document.createElement('style');
        styleElement.id = ID;
        styleElement.innerHTML = cssString;
        document.head.appendChild(styleElement);
    }
}
function addHTML(htmlString, selector, beforeSelector = null)
{
    const targetElement = document.querySelector(selector);
    if (!targetElement) { return; }
    const parser = new DOMParser();
    const doc = parser.parseFromString(htmlString, 'text/html');
    const newElements = Array.from(doc.body.childNodes);
    if (beforeSelector) {
        const beforeElement = document.querySelector(beforeSelector);
        if (!beforeElement) { return; }
        newElements.forEach(node => {
            beforeElement.parentNode.insertBefore(node, beforeElement);
        });
    } else {
        newElements.forEach(node => {
            targetElement.appendChild(node);
        });
    }
}
let bonkWSS;
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
let UI =
    {
        main: `
    
`,
        tab:
        {
            tab1:
            `
                
                   
                      
                      When you are a host and activated, players can join without restarting the room
                    
                   
                      
                      
                   
                 
                
                   
                      
                      When you are a host and activated, players can join without restarting the room
                    
                   
                      
                      
                   
                 
                
                   
                      
                      Search room name using searchbox
                    
                   
                      
                      
                   
                 
               `,
            tab2:
            `
                
                   
                      
                      When you are in a match and enabled, you start with +100 XP
                    
                   
                      
                      
                   
                 
                
                   
                      
                      Defines an interval in milliseconds if 'Farm XP' is activated
                    
                   
                      
                   
                 
             `,
            tab3:
            `
                
                   
                      
                      Define bonk.io fullscreen
                    
                   
                      
                   
                 
                
                   
                      
                      Activate/deactivate chat in a match.
                    
                   
                      
                      
                   
                 
                
                   
                      
                      Activate/deactivate chat in a match.
                    
                   
                      
                      
                   
                 
                
                   
                      
                      Activate/deactivate chat in a match.
                    
                   
                 
                
                
                   
                      
                      Enable link support in the chat.
                    
                   
                      
                      
                   
                 
                
                   
                      
                      Enable Emoji support in the chat.
                    
                   
                      
                      
                   
                 
             `,
        },
    }
let UICSS =
    `
@import url('https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400..700;1,400..700&display=swap');
#MrMenuUI
{
    display: flex;
    position: absolute;
    flex-direction: column;
    top: 50%;
    left: 50%;
    width: calc(95% - 50px);
    height: calc(95% - 50px);
    transform: translate(-50%, -50%);
    user-select: none;
    box-sizing: border-box;
    font-family: 'Arimo';
    background-color: #1f1f1f;
    color: white;
    border: 1px solid #cccc;
    border-radius: 15px;
}
#MrMenuUI > #Mrtitlebar
{
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 44px;
    border-bottom: 1px solid #cccc;
}
#MrMenuUI > #MrArea
{
    display: flex;
    flex-direction: row;
    width: 100%;
    height: calc(100% - 44px);
    box-sizing: border-box;
}
#MrMenuUI > #MrArea > #Mrsidebar
{
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    width: 250px;
    height: 100%;
    border-radius: 0px 0px 0px 15px;
    border-right: 1px solid #cccc;
    padding: 5px;
    box-sizing: border-box;
}
#MrMenuUI > #MrArea > #Mrsidebar > button
{
    outline: none;
    height: 40px;
    width: 220px;
    background-color: #1f1f1f;
    color: white;
    border: none;
    font-size: 13px;
    margin-top: 12px;
}
#MrMenuUI > #MrArea > #Mrsidebar > button:hover
{
    background-color: #333;
}
#MrMenuUI > #MrArea > #Mrsidebar > button.active
{
    background-color: #2A51F4;
    border-radius: 7px;
}
#MrMenuUI > #MrArea > #Mrcontent
{
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    width: calc(100% - 250px);;
    height: 100%;
    border-radius: 0px 0px 15px 0px;
    padding: 5px;
    box-sizing: border-box;
}
#MrMenuUI > #MrArea > #Mrcontent > div
{
    display: none;
    //background-color: #272626;
    margin: 15px;
    width: calc(100% - 16px);
    height: 100%;
    box-sizing: border-box;
    overflow-x: auto;
}
#MrMenuUI > #MrArea > #Mrcontent > div.active
{
    display: block;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row
{
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row:not(last-child)
{
    margin-bottom: 14px;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div.info
{
    display: flex;
    flex-direction: column;
    width: 55%;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div.action
{
    display: flex;
    flex-direction: row;
    width: 45%;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div.info > label
{
    font-size: 17px;
    font-weight: bold;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div.info > p
{
    font-size: 13px;
    color: #C1C1C1;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div:has(button:nth-of-type(2)) button
{
    background-color: #333333;
    outline: none;
    color: white;
    width: 45%;
    height: 40px;
    border: 1px solid #434343;
    margin: 3px;
    border-radius: 5px;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div:has(button:nth-of-type(1)) button
{
    background-color: #333333;
    outline: none;
    color: white;
    width: 100%;
    height: 40px;
    border: 1px solid #434343;
    margin: 3px;
    border-radius: 5px;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div:has(button:nth-of-type(2)) button.active
{
    background-color: #2A51F4;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div > input[type="range"]
{
    appearance: none;
    width: 100%;
    padding: 10px; border-radius: 6px;
    border: 1px solid #555;
    background-color: #333;
    transition: background-color 0.3s,
    border-color 0.3s;
}
#MrMenuUI > #MrArea > #Mrcontent > div > div.row > div:has(select:nth-of-type(2)) select
{
    background-color: #333333;
    outline: none;
    color: white;
    width: 100%;
    height: 40px;
    border: 1px solid #434343;
    margin: 3px;
    border-radius: 5px;
    text-align: center;
}
`;
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
function EventUItoggleMenu()
{
    const menu = document.querySelector('div#MrMenuUI');
    const visible = window.getComputedStyle(menu).visibility === 'visible';
    menu.style.visibility = visible ? 'hidden' : 'visible';
    menu.style.opacity = visible ? '0' : '1';
    menu.style.zIndex = visible ? '-100' : '100';
}
function EventUItoggleEmoji()
{
    const menu = document.querySelector('div#Mremoji-container');
    const visible = window.getComputedStyle(menu).visibility === 'visible';
    menu.style.visibility = visible ? 'hidden' : 'visible';
    menu.style.opacity = visible ? '0' : '1';
    menu.style.zIndex = visible ? '-100' : '100';
}
function EventUIsidebar(event)
{
    if (event.target.tagName === 'BUTTON')
    {
        const dataTab = event.target.getAttribute('data-tab');
        if (dataTab == 'report')
        {
            window.open(`https://greasyfork.org/en/scripts/504571-mrmenu/feedback`, '_blank');
            return;
        }
        document.querySelectorAll("div#MrMenuUI > div#MrArea > div#Mrcontent > div[data-tab]").forEach(item => {
            item.classList.remove('active');
        });
        const activeItem = document.querySelector(`div#MrMenuUI > div#MrArea > div#Mrcontent > div[data-tab="${dataTab}"]`);
        if (activeItem) {
            activeItem.classList.add('active');
        }
        document.querySelectorAll("div#MrMenuUI > div#MrArea > div#Mrsidebar > button").forEach(item => {
            item.classList.remove('active');
        });
        event.target.classList.add('active')
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
function linkifyText(text)
{
    const urlPattern = /(?:https?:\/\/)?([a-zA-Z0-9-]+\.[a-zA-Z]{2,}(?:\/[^\s]*)?)/gi;
    const matches = text.match(urlPattern);
    if (!matches) {
        return null;
    }
    let modifiedText = matches.map(match => {
        let url = match.startsWith('http://') || match.startsWith('https://') ? match : 'http://' + match;
        return `${url}`;
    }).join(' ');
    return `${modifiedText}`;
}
function packet(args)
{
    return ({data:args});
};
function getPlay()
{
    return document.getElementById("gamerenderer").style["visibility"] !== "hidden";
}
function updateCSSRule(s, p, v)
{
    let sheets = [...document.styleSheets];
    let ruleExists = false;
    sheets.forEach(sheet => {
        let rules = [...sheet.cssRules];
        rules.forEach(r => {
            if (r.selectorText === s) {
                r.style.setProperty(p, v, 'important');
                ruleExists = true;
            }
        });
    });
    if (!ruleExists) {
        sheets[0].insertRule(`${s} { ${p}: ${v} !important; }`, sheets[0].cssRules.length);
    }
}
function ActionFreejoin(nick, guest, ID)
{
    if(window.MrMenu.data.flags.freejoin && window.MrMenu.data.HostID !== null)
    {
        if(window.MrMenu.data.ID == window.MrMenu.data.HostID && getPlay() == true)
        {
            bonkWSS.send(`42[18,` + ID + `,1]`);
            bonkWSS.onmessage(packet(`42[18,` + ID + `,1]`));
            setTimeout(function()
                       {
                document.getElementById("newbonklobby_editorbutton").click();
                document.getElementById("mapeditor_close").click();
                document.getElementById("newbonklobby").style["display"] = "none";
                document.getElementById("newbonklobby").style["opacity"] = "0";
                document.getElementById("mapeditor_midbox_testbutton").click();
            }, 166);
        }
    }
}
let intervalXP = null;
function ActionXP(event)
{
    try
    {
        if (event.readyState !== WebSocket.CLOSING && event.readyState !== WebSocket.CLOSED)
        {
            if(window.MrMenu.data.flags.xp == true && getPlay() == true && bonkWSS !== null)
            {
                bonkWSS.send(`42[38]`);
            }
        }
    }
    catch(error) { }
}
function ActionXPclick(event)
{
    if(event.target.id == 'MrXPE')
    {
        window.MrMenu.data.flags.xp = true;
        intervalXP = setInterval(() => { ActionXP(event); }, document.getElementById(`MrMenuXPinputRangeDelay`).value );
        document.getElementById('xpbarfill').style.backgroundColor = `#44bd32`;
    }
    if(event.target.id == 'MrXPD')
    {
        window.MrMenu.data.flags.xp = false;
        clearInterval(intervalXP);
        intervalXP = null;
        document.getElementById('xpbarfill').style.backgroundColor = `#473aaf`;
    }
}
function ActionXPRange(event)
{
    document.getElementById(`MrMenuXPDelayms`).innerHTML = event.target.value + " ms";
    document.getElementById(`MrXPE`).classList.remove('active');
    document.getElementById(`MrXPD`).classList.add('active');
    window.MrMenu.data.flags.xp = false;
    clearInterval(intervalXP);
    intervalXP = null;
    document.getElementById('xpbarfill').style.backgroundColor = `#473aaf`;
}
function ActionChatVisibility(event)
{
    if(event.target.id == 'MrChatVisibilyE')
    {
        document.getElementById('ingamechatcontent').style.visibility = ``;
    }
    if(event.target.id == 'MrChatVisibilyD')
    {
        document.getElementById('ingamechatcontent').style.visibility = `hidden`;
    }
}
function ActionChatPosition(event)
{
    const chatBox = document.getElementById('ingamechatbox');
    if(event.target.id == 'MrChatPositionV')
    {
        if (event.target.value == 'top')
        {
            chatBox.style.top = `50px`;
            chatBox.style.bottom = `auto`;
        }
        else if (event.target.value == 'bottom')
        {
            chatBox.style.top = `auto`;
            chatBox.style.bottom = `50px`;
        }
    }
    if(event.target.id == 'MrChatPositionH')
    {
        if (event.target.value == 'left')
        {
            chatBox.style.left = `10px`;
            chatBox.style.right = `auto`;
        }
        else if (event.target.value == 'right')
        {
            chatBox.style.left = `auto`;
            chatBox.style.right = `10px`;
        }
    }
}
function ActionChatColor(event)
{
    let color;
    if(event.target.id == 'MrChatBgColorbg')
    {
        color = document.getElementById('MrChatBgColorbgbase');
        color.click();
    }
    if(event.target.id == 'MrChatBgColorFont')
    {
        color = document.getElementById('MrChatBgColorFontbase');
        color.click();
    }
}
const hexToRGBA = (hex, alpha) => {
    let r = parseInt(hex.slice(1, 3), 16),
        g = parseInt(hex.slice(3, 5), 16),
        b = parseInt(hex.slice(5, 7), 16);
    return `rgba(${r}, ${g}, ${b}, ${alpha})`;
};
function ActionChatColorFinal(event)
{
    if(event.target.id == 'MrChatBgColorbgbase')
    {
        if (event.target.value)
        {
            const color = document.getElementById('MrChatBgColorbgbase').value;
            const transparency = document.getElementById('MrChattransparency').value / 100;
            const rgbaColor = hexToRGBA(color, transparency)
            updateCSSRule('#ingamechatbox', 'background-color', rgbaColor);
        }
    }
    if(event.target.id == 'MrChatBgColorFontbase')
    {
        if (event.target.value)
        {
            const color = event.target.value;
            const transparency = document.getElementById('MrChattransparency').value / 100;
            const rgbaColor = hexToRGBA(color, transparency)
            updateCSSRule('.ingamechatname', 'color', rgbaColor);
        }
    }
}
function ActionChatransparency(event)
{
    if (event.target.value)
    {
        const color = document.getElementById('MrChatBgColorbgbase').value;
        const transparency = event.target.value / 100;
        const rgbaColor = hexToRGBA(color, transparency)
        updateCSSRule('#ingamechatbox', 'background-color', rgbaColor);
    }
}
function ActionChatNicks()
{
    let nickMr = setInterval(() => {
        let msgLast = document.querySelectorAll(`#newbonklobby_chat_content > div:nth-last-child(-n+3) > span.newbonklobby_chat_msg_name`);
        msgLast.forEach(msg => {
            if (msg.innerHTML.includes('MrBonkeiro') && !msg.classList.contains('MrBonkeiro')) {
                msg.classList.add('MrBonkeiro');
            }
        });
    }, 8);
}
function ActionChatUrls()
{
    let urlskMr = setInterval(() => {
        let msgLast = document.querySelectorAll(`#newbonklobby_chat_content > div:nth-last-child(-n+3) > span.newbonklobby_chat_msg_txt`);
        const urlPattern = /(?:https?:\/\/|www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(?:\/[^\s]*)?/g;
        msgLast.forEach(msg => {
            if (!msg.innerHTML.includes(' {
                    let href = url.startsWith('http') ? url : `http://${url}`;
                    return `${url}`;
                });
            }
        });
        clearInterval(urlskMr);
    }, 8);
}
function ActionChatremoveEmoji()
{
    const emojiContainer = document.querySelector('#newbonklobby_chatbox > div.emoji-container');
    const emojiContainer2 = document.querySelector('#newbonklobby_chat_input > div.emoji-container');
    if (emojiContainer) { emojiContainer.remove(); }
    if (emojiContainer2) { emojiContainer2.remove(); }
}
function ActionChataddEmoji()
{
    let emojifiles = [
        "๐", "๐", "๐", "๐", "๐", "๐
", "๐คฃ", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฅฐ", "๐", "๐คฉ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐คช", "๐", "๐ค", "๐ค", "๐คญ", "๐คซ", "๐ค", "๐ค", "๐คจ", "๐", "๐", "๐ถ", "๐ถโ๐ซ๏ธ", "๐", "๐", "๐", "๐ฌ", "๐ฎโ๐จ", "๐คฅ", "๐", "๐", "๐ช", "๐คค", "๐ด", "๐ท", "๐ค", "๐ค", "๐คข", "๐คฎ", "๐คง", "๐ฅต", "๐ฅถ", "๐ฅด", "๐ต", "๐ตโ๐ซ", "๐คฏ", "๐ค ", "๐ฅณ", "๐ฅธ", "๐", "๐ค", "๐ง", "๐", "๐ซค", "๐", "๐", "โน๏ธ", "๐ฎ", "๐ฏ", "๐ฒ", "๐ณ", "๐ฅบ", "๐ฆ", "๐ง", "๐จ", "๐ฐ", "๐ฅ", "๐ข", "๐ญ", "๐ฑ", "๐", "๐ฃ", "๐", "๐", "๐ฉ", "๐ซ", "๐ฅฑ", "๐ค", "๐ก", "๐ ", "๐คฌ", "๐", "๐ฟ", "๐", "โ ๏ธ", "๐ฉ", "๐คก", "๐น", "๐บ", "๐ป", "๐ฝ", "๐พ", "๐ค", "๐บ", "๐ธ", "๐น", "๐ป", "๐ผ", "๐ฝ", "๐", "๐ฟ", "๐พ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "โฃ๏ธ", "๐", "โค๏ธโ๐ฅ", "โค๏ธโ๐ฉน", "โค๏ธ", "๐งก", "๐", "๐", "๐", "๐", "๐ค", "๐ค", "๐ค", "๐ฏ", "๐ข", "๐ฅ", "๐ซ", "๐ฆ", "๐จ", "๐ณ๏ธ", "๐ฃ", "๐ฌ", "๐๏ธโ๐จ๏ธ", "๐จ๏ธ", "๐ฏ๏ธ", "๐ญ", "๐ค",,
        "๐", "๐ค", "๐๏ธ", "โ", "๐", "๐", "๐ค", "โ๏ธ", "๐ค", "๐ค", "๐ค", "๐ค", "๐", "๐", "๐", "๐", "๐", "โ๏ธ", "๐", "๐", "โ", "๐", "๐ค", "๐ค", "๐", "๐", "๐", "๐คฒ", "๐ค", "๐", "โ๏ธ", "๐
", "๐คณ", "๐ช", "๐ฆพ", "๐ฆฟ", "๐ฆต", "๐ฆถ", "๐", "๐ฆป", "๐", "๐ง ", "๐ฆท", "๐ฆด", "๐", "๐๏ธ", "๐
", "๐", "๐ถ", "๐ง", "๐ฆ", "๐ง", "๐ง", "๐ฑ", "๐จ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐จโ๐ฆฐ", "๐จโ๐ฆฑ", "๐จโ๐ฆณ", "๐จโ๐ฆฒ", "๐ฉ", "๐ฉโ๐ฆฐ", "๐งโ๐ฆฐ", "๐ฉโ๐ฆฑ", "๐งโ๐ฆฑ", "๐ฉโ๐ฆณ", "๐งโ๐ฆณ", "๐ฉโ๐ฆฒ", "๐งโ๐ฆฒ", "๐ฑโโ๏ธ", "๐ฑโโ๏ธ", "๐ง", "๐ด", "๐ต", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐
", "๐
โโ๏ธ", "๐
โโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐คฆ", "๐คฆโโ๏ธ", "๐คฆโโ๏ธ", "๐คท", "๐คทโโ๏ธ", "๐คทโโ๏ธ", "๐งโโ๏ธ", "๐จโโ๏ธ", "๐ฉโโ๏ธ", "๐งโ๐", "๐จโ๐", "๐ฉโ๐", "๐งโ๐ซ", "๐จโ๐ซ", "๐ฉโ๐ซ", "๐งโโ๏ธ", "๐จโโ๏ธ", "๐ฉโโ๏ธ", "๐งโ๐พ", "๐จโ๐พ", "๐ฉโ๐พ", "๐งโ๐ณ", "๐จโ๐ณ", "๐ฉโ๐ณ", "๐งโ๐ง", "๐จโ๐ง", "๐ฉโ๐ง", "๐งโ๐ญ", "๐จโ๐ญ", "๐ฉโ๐ญ", "๐งโ๐ผ", "๐จโ๐ผ", "๐ฉโ๐ผ", "๐งโ๐ฌ", "๐จโ๐ฌ", "๐ฉโ๐ฌ", "๐งโ๐ป", "๐จโ๐ป", "๐ฉโ๐ป", "๐งโ๐ค", "๐จโ๐ค", "๐ฉโ๐ค", "๐งโ๐จ", "๐จโ๐จ", "๐ฉโ๐จ", "๐งโโ๏ธ", "๐จโโ๏ธ", "๐ฉโโ๏ธ", "๐งโ๐", "๐จโ๐", "๐ฉโ๐", "๐งโ๐", "๐จโ๐", "๐ฉโ๐", "๐ฎ", "๐ฎโโ๏ธ", "๐ฎโโ๏ธ", "๐ต๏ธ", "๐ต๏ธโโ๏ธ", "๐ต๏ธโโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐ท", "๐ทโโ๏ธ", "๐ทโโ๏ธ", "๐คด", "๐ธ", "๐ณ", "๐ณโโ๏ธ", "๐ณโโ๏ธ", "๐ฒ", "๐ง", "๐คต", "๐คตโโ๏ธ", "๐คตโโ๏ธ", "๐ฐ", "๐ฐโโ๏ธ", "๐ฐโโ๏ธ", "๐คฐ", "๐คฑ", "๐ฉโ๐ผ", "๐จโ๐ผ", "๐งโ๐ผ", "๐ผ", "๐
", "๐คถ", "๐งโ๐", "๐ฆธ", "๐ฆธโโ๏ธ", "๐ฆธโโ๏ธ", "๐ฆน", "๐ฆนโโ๏ธ", "๐ฆนโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐ถ", "๐ถโโ๏ธ", "๐ถโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐งโ๐ฆฏ", "๐จโ๐ฆฏ", "๐ฉโ๐ฆฏ", "๐งโ๐ฆผ", "๐จโ๐ฆผ", "๐ฉโ๐ฆผ", "๐งโ๐ฆฝ", "๐จโ๐ฆฝ", "๐ฉโ๐ฆฝ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐", "๐บ", "๐ด๏ธ", "๐ฏ", "๐ฏโโ๏ธ", "๐ฏโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐คบ", "๐", "โท๏ธ", "๐", "๐๏ธ", "๐๏ธโโ๏ธ", "๐๏ธโโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "๐ฃ", "๐ฃโโ๏ธ", "๐ฃโโ๏ธ", "๐", "๐โโ๏ธ", "๐โโ๏ธ", "โน๏ธ", "โน๏ธโโ๏ธ", "โน๏ธโโ๏ธ", "๐๏ธ", "๐๏ธโโ๏ธ", "๐๏ธโโ๏ธ", "๐ด", "๐ดโโ๏ธ", "๐ดโโ๏ธ", "๐ต", "๐ตโโ๏ธ", "๐ตโโ๏ธ", "๐คธ", "๐คธโโ๏ธ", "๐คธโโ๏ธ", "๐คผ", "๐คผโโ๏ธ", "๐คผโโ๏ธ", "๐คฝ", "๐คฝโโ๏ธ", "๐คฝโโ๏ธ", "๐คพ", "๐คพโโ๏ธ", "๐คพโโ๏ธ", "๐คน", "๐คนโโ๏ธ", "๐คนโโ๏ธ", "๐ง", "๐งโโ๏ธ", "๐งโโ๏ธ", "๐", "๐", "๐งโ๐คโ๐ง", "๐ญ", "๐ซ", "๐ฌ", "๐", "๐ฉโโค๏ธโ๐โ๐จ", "๐จโโค๏ธโ๐โ๐จ", "๐ฉโโค๏ธโ๐โ๐ฉ", "๐", "๐ฉโโค๏ธโ๐จ", "๐จโโค๏ธโ๐จ", "๐ฉโโค๏ธโ๐ฉ", "๐ช", "๐จโ๐ฉโ๐ฆ", "๐จโ๐ฉโ๐ง", "๐จโ๐ฉโ๐งโ๐ฆ", "๐จโ๐ฉโ๐ฆโ๐ฆ", "๐จโ๐ฉโ๐งโ๐ง", "๐จโ๐จโ๐ฆ", "๐จโ๐จโ๐ง", "๐จโ๐จโ๐งโ๐ฆ", "๐จโ๐จโ๐ฆโ๐ฆ", "๐จโ๐จโ๐งโ๐ง", "๐ฉโ๐ฉโ๐ฆ", "๐ฉโ๐ฉโ๐ง", "๐ฉโ๐ฉโ๐งโ๐ฆ", "๐ฉโ๐ฉโ๐ฆโ๐ฆ", "๐ฉโ๐ฉโ๐งโ๐ง", "๐จโ๐ฆ", "๐จโ๐ฆโ๐ฆ", "๐จโ๐ง", "๐จโ๐งโ๐ฆ", "๐จโ๐งโ๐ง", "๐ฉโ๐ฆ", "๐ฉโ๐ฆโ๐ฆ", "๐ฉโ๐ง", "๐ฉโ๐งโ๐ฆ", "๐ฉโ๐งโ๐ง", "๐ฃ๏ธ", "๐ค", "๐ฅ", "๐ซ", "๐ฃ", "๐ฆฐ", "๐ฆฑ", "๐ฆณ", "๐ฆฒ",
        "๐ต", "๐", "๐ฆ", "๐ฆง", "๐ถ", "๐", "๐ฆฎ", "๐โ๐ฆบ", "๐ฉ", "๐บ", "๐ฆ", "๐ฆ", "๐ฑ", "๐", "๐โโฌ", "๐ฆ", "๐ฏ", "๐
", "๐", "๐ด", "๐", "๐ฆ", "๐ฆ", "๐ฆ", "๐ฎ", "๐", "๐", "๐", "๐ท", "๐", "๐", "๐ฝ", "๐", "๐", "๐", "๐ช", "๐ซ", "๐ฆ", "๐ฆ", "๐", "๐ฆ", "๐ฆ", "๐ญ", "๐", "๐", "๐น", "๐ฐ", "๐", "๐ฟ๏ธ", "๐ฆ", "๐ฆ", "๐ป", "๐ปโโ๏ธ", "๐จ", "๐ผ", "๐ฆฅ", "๐ฆฆ", "๐ฆจ", "๐ฆ", "๐ฆก", "๐พ", "๐ฆ", "๐", "๐", "๐ฃ", "๐ค", "๐ฅ", "๐ฆ", "๐ง", "๐๏ธ", "๐ฆ
", "๐ฆ", "๐ฆข", "๐ฆ", "๐ฆฉ", "๐ฆ", "๐ฆ", "๐ธ", "๐", "๐ข", "๐ฆ", "๐", "๐ฒ", "๐", "๐ฆ", "๐ฆ", "๐ณ", "๐", "๐ฌ", "๐", "๐ ", "๐ก", "๐ฆ", "๐", "๐", "๐", "๐ฆ", "๐", "๐", "๐", "๐", "๐ฆ", "๐ท๏ธ", "๐ธ๏ธ", "๐ฆ", "๐ฆ", "๐ฆ ", "๐", "๐ธ", "๐ฎ", "๐ต๏ธ", "๐น", "๐ฅ", "๐บ", "๐ป", "๐ผ", "๐ท", "๐ฑ", "๐ฒ", "๐ณ", "๐ด", "๐ต", "๐พ", "๐ฟ", "โ๏ธ", "๐", "๐", "๐", "๐",
        "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฅญ", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฅ", "๐
", "๐ฅฅ", "๐ฅ", "๐", "๐ฅ", "๐ฅ", "๐ฝ", "๐ถ๏ธ", "๐ฅ", "๐ฅฌ", "๐ฅฆ", "๐ง", "๐ง
", "๐", "๐ฅ", "๐ฐ", "๐", "๐ฅ", "๐ฅ", "๐ฅจ", "๐ฅฏ", "๐ฅ", "๐ง", "๐ง", "๐", "๐", "๐ฅฉ", "๐ฅ", "๐", "๐", "๐", "๐ญ", "๐ฅช", "๐ฎ", "๐ฏ", "๐ฅ", "๐ง", "๐ฅ", "๐ณ", "๐ฅ", "๐ฒ", "๐ฅฃ", "๐ฅ", "๐ฟ", "๐ง", "๐ง", "๐ฅซ", "๐ฑ", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐ข", "๐ฃ", "๐ค", "๐ฅ", "๐ฅฎ", "๐ก", "๐ฅ", "๐ฅ ", "๐ฅก", "๐ฆ", "๐ฆ", "๐ฆ", "๐ฆ", "๐ฆช", "๐ฆ", "๐ง", "๐จ", "๐ฉ", "๐ช", "๐", "๐ฐ", "๐ง", "๐ฅง", "๐ซ", "๐ฌ", "๐ญ", "๐ฎ", "๐ฏ", "๐ผ", "๐ฅ", "โ", "๐ต", "๐ถ", "๐พ", "๐ท", "๐ธ", "๐น", "๐บ", "๐ป", "๐ฅ", "๐ฅ", "๐ฅค", "๐ง", "๐ง", "๐ง", "๐ฅข", "๐ฝ๏ธ", "๐ด", "๐ฅ", "๐ช", "๐บ",
        "๐", "๐", "๐", "๐", "๐บ๏ธ", "๐พ", "๐งญ", "๐๏ธ", "โฐ๏ธ", "๐", "๐ป", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐งฑ", "๐๏ธ", "๐๏ธ", "๐ ", "๐ก", "๐ข", "๐ฃ", "๐ค", "๐ฅ", "๐ฆ", "๐จ", "๐ฉ", "๐ช", "๐ซ", "๐ฌ", "๐ญ", "๐ฏ", "๐ฐ", "๐", "๐ผ", "๐ฝ", "โช", "๐", "๐", "๐", "โฉ๏ธ", "๐", "โฒ", "โบ", "๐", "๐", "๐๏ธ", "๐", "๐
", "๐", "๐", "๐", "โจ๏ธ", "๐ ", "๐ก", "๐ข", "๐", "๐ช", "๐", "๐", "๐", "๐
", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐๏ธ", "๐๏ธ", "๐ต", "๐ฆฝ", "๐ฆผ", "๐บ", "๐ฒ", "๐ด", "๐น", "๐", "๐ฃ๏ธ", "๐ค๏ธ", "๐ข๏ธ", "โฝ", "๐จ", "๐ฅ", "๐ฆ", "๐", "๐ง", "โ", "โต", "๐ถ", "๐ค", "๐ณ๏ธ", "โด๏ธ", "๐ฅ๏ธ", "๐ข", "โ๏ธ", "๐ฉ๏ธ", "๐ซ", "๐ฌ", "๐ช", "๐บ", "๐", "๐", "๐ ", "๐ก", "๐ฐ๏ธ", "๐", "๐ธ", "๐๏ธ", "๐งณ", "โ", "โณ", "โ", "โฐ", "โฑ๏ธ", "โฒ๏ธ", "๐ฐ๏ธ", "๐", "๐ง", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐", "๐ก", "๐", "๐ข", "๐", "๐ฃ", "๐", "๐ค", "๐", "๐ฅ", "๐", "๐ฆ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ก๏ธ", "โ๏ธ", "๐", "๐", "๐ช", "โญ", "๐", "๐ ", "๐", "โ๏ธ", "โ
", "โ๏ธ", "๐ค๏ธ", "๐ฅ๏ธ", "๐ฆ๏ธ", "๐ง๏ธ", "๐จ๏ธ", "๐ฉ๏ธ", "๐ช๏ธ", "๐ซ๏ธ", "๐ฌ๏ธ", "๐", "๐", "๐", "โ๏ธ", "โ", "โฑ๏ธ", "โก", "โ๏ธ", "โ๏ธ", "โ", "โ๏ธ", "๐ฅ", "๐ง", "๐",
        "๐", "๐", "๐", "๐", "๐งจ", "โจ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐งง", "๐", "๐", "๐๏ธ", "๐๏ธ", "๐ซ", "๐๏ธ", "๐", "๐
", "๐ฅ", "๐ฅ", "๐ฅ", "โฝ", "โพ", "๐ฅ", "๐", "๐", "๐", "๐", "๐พ", "๐ฅ", "๐ณ", "๐", "๐", "๐", "๐ฅ", "๐", "๐ธ", "๐ฅ", "๐ฅ", "๐ฅ
", "โณ", "โธ๏ธ", "๐ฃ", "๐คฟ", "๐ฝ", "๐ฟ", "๐ท", "๐ฅ", "๐ฏ", "๐ช", "๐ช", "๐ฑ", "๐ฎ", "๐งฟ", "๐ฎ", "๐น๏ธ", "๐ฐ", "๐ฒ", "๐งฉ", "๐งธ", "โ ๏ธ", "โฅ๏ธ", "โฆ๏ธ", "โฃ๏ธ", "โ๏ธ", "๐", "๐", "๐ด", "๐ญ", "๐ผ๏ธ", "๐จ", "๐งต", "๐ชก", "๐งถ",
        "๐", "๐ถ๏ธ", "๐ฅฝ", "๐ฅผ", "๐ฆบ", "๐", "๐", "๐", "๐งฃ", "๐งค", "๐งฅ", "๐งฆ", "๐", "๐", "๐ฅป", "๐ฉฑ", "๐ฉฒ", "๐ฉณ", "๐", "๐", "๐", "๐", "๐", "๐๏ธ", "๐", "๐", "๐", "๐ฅพ", "๐ฅฟ", "๐ ", "๐ก", "๐ฉฐ", "๐ข", "๐", "๐", "๐ฉ", "๐", "๐งข", "โ๏ธ", "๐ฟ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ข", "๐ฃ", "๐ฏ", "๐", "๐", "๐ผ", "๐ต", "๐ถ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐ค", "๐ง", "๐ป", "๐ท", "๐ธ", "๐น", "๐บ", "๐ป", "๐ช", "๐ฅ", "๐ฑ", "๐ฒ", "โ๏ธ", "๐", "๐", "๐ ", "๐", "๐", "๐ป", "๐ฅ๏ธ", "๐จ๏ธ", "โจ๏ธ", "๐ฑ๏ธ", "๐ฒ๏ธ", "๐ฝ", "๐พ", "๐ฟ", "๐", "๐งฎ", "๐ฅ", "๐๏ธ", "๐ฝ๏ธ", "๐ฌ", "๐บ", "๐ท", "๐ธ", "๐น", "๐ผ", "๐", "๐", "๐ฏ๏ธ", "๐ก", "๐ฆ", "๐ฎ", "๐ช", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฐ", "๐๏ธ", "๐", "๐", "๐ท๏ธ", "๐ฐ", "๐ด", "๐ต", "๐ถ", "๐ท", "๐ธ", "๐ณ", "๐งพ", "๐น", "โ๏ธ", "๐ง", "๐จ", "๐ฉ", "๐ค", "๐ฅ", "๐ฆ", "๐ซ", "๐ช", "๐ฌ", "๐ญ", "๐ฎ", "๐ณ๏ธ", "โ๏ธ", "โ๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐", "๐ผ", "๐", "๐", "๐๏ธ", "๐
", "๐", "๐๏ธ", "๐๏ธ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐๏ธ", "๐", "๐", "โ๏ธ", "๐๏ธ", "๐๏ธ", "๐๏ธ", "๐", "๐", "๐", "๐", "๐", "๐๏ธ", "๐จ", "๐ช", "โ๏ธ", "โ๏ธ", "๐ ๏ธ", "๐ก๏ธ", "โ๏ธ", "๐ซ", "๐น", "๐ก๏ธ", "๐ง", "๐ฉ", "โ๏ธ", "๐๏ธ", "โ๏ธ", "๐ฆฏ", "๐", "โ๏ธ", "๐งฐ", "๐งฒ", "โ๏ธ", "๐งช", "๐งซ", "๐งฌ", "๐ฌ", "๐ญ", "๐ก", "๐", "๐ฉธ", "๐", "๐ฉน", "๐ฉบ", "๐ช", "๐๏ธ", "๐๏ธ", "๐ช", "๐ฝ", "๐ฟ", "๐", "๐ช", "๐งด", "๐งท", "๐งน", "๐งบ", "๐งป", "๐งผ", "๐งฝ", "๐งฏ", "๐", "๐ฌ", "โฐ๏ธ", "โฑ๏ธ", "๐ฟ",
        "๐ง", "๐ฎ", "๐ฐ", "โฟ", "๐น", "๐บ", "๐ป", "๐ผ", "๐พ", "๐", "๐", "๐", "๐
", "โ ๏ธ", "๐ธ", "โ", "๐ซ", "๐ณ", "๐ญ", "๐ฏ", "๐ฑ", "๐ท", "๐ต", "๐", "โข๏ธ", "โฃ๏ธ", "โฌ๏ธ", "โ๏ธ", "โก๏ธ", "โ๏ธ", "โฌ๏ธ", "โ๏ธ", "โฌ
๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โฉ๏ธ", "โช๏ธ", "โคด๏ธ", "โคต๏ธ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "โ๏ธ", "๐๏ธ", "โก๏ธ", "โธ๏ธ", "โฏ๏ธ", "โ๏ธ", "โฆ๏ธ", "โช๏ธ", "โฎ๏ธ", "๐", "๐ฏ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "โ", "๐", "๐", "๐", "โถ๏ธ", "โฉ", "โญ๏ธ", "โฏ๏ธ", "โ๏ธ", "โช", "โฎ๏ธ", "๐ผ", "โซ", "๐ฝ", "โฌ", "โธ๏ธ", "โน๏ธ", "โบ๏ธ", "โ๏ธ", "๐ฆ", "๐
", "๐", "๐ถ", "๐ณ", "๐ด", "โ๏ธ", "โ๏ธ", "โง๏ธ", "โ๏ธ", "โ", "โ", "โ", "๐ฐ", "โพ๏ธ", "โผ๏ธ", "โ๏ธ", "โ", "โ", "โ", "โ", "ใฐ๏ธ", "๐ฑ", "๐ฒ", "โ๏ธ", "โป๏ธ", "โ๏ธ", "๐ฑ", "๐", "๐ฐ", "โญ", "โ
", "โ๏ธ", "โ๏ธ", "โ", "โ", "โฐ", "โฟ", "ใฝ๏ธ", "โณ๏ธ", "โด๏ธ", "โ๏ธ", "ยฉ๏ธ", "ยฎ๏ธ", "โข๏ธ", "#๏ธโฃ", "*๏ธโฃ", "0๏ธโฃ", "1๏ธโฃ", "2๏ธโฃ", "3๏ธโฃ", "4๏ธโฃ", "5๏ธโฃ", "6๏ธโฃ", "7๏ธโฃ", "8๏ธโฃ", "9๏ธโฃ", "๐", "๐ ", "๐ก", "๐ข", "๐ฃ", "๐ค", "๐
ฐ๏ธ", "๐", "๐
ฑ๏ธ", "๐", "๐", "๐", "โน๏ธ", "๐", "โ๏ธ", "๐", "๐", "๐
พ๏ธ", "๐", "๐
ฟ๏ธ", "๐", "๐", "๐", "๐", "๐๏ธ", "๐ท๏ธ", "๐ถ", "๐ฏ", "๐", "๐น", "๐", "๐ฒ", "๐", "๐ธ", "๐ด", "๐ณ", "ใ๏ธ", "ใ๏ธ", "๐บ", "๐ต", "๐ด", "๐ ", "๐ก", "๐ข", "๐ต", "๐ฃ", "๐ค", "โซ", "โช", "๐ฅ", "๐ง", "๐จ", "๐ฉ", "๐ฆ", "๐ช", "๐ซ", "โฌ", "โฌ", "โผ๏ธ", "โป๏ธ", "โพ", "โฝ", "โช๏ธ", "โซ๏ธ", "๐ถ", "๐ท", "๐ธ", "๐น", "๐บ", "๐ป", "๐ ", "๐", "๐ณ", "๐ฒ",
        "๐", "๐ฉ", "๐", "๐ด", "๐ณ๏ธ", "๐ณ๏ธโ๐", "๐ณ๏ธโโง๏ธ", "๐ดโโ ๏ธ", "๐ฆ๐จ", "๐ฆ๐ฉ", "๐ฆ๐ช", "๐ฆ๐ซ", "๐ฆ๐ฌ", "๐ฆ๐ฎ", "๐ฆ๐ฑ", "๐ฆ๐ฒ", "๐ฆ๐ด", "๐ฆ๐ถ", "๐ฆ๐ท", "๐ฆ๐ธ", "๐ฆ๐น", "๐ฆ๐บ", "๐ฆ๐ผ", "๐ฆ๐ฝ", "๐ฆ๐ฟ", "๐ง๐ฆ", "๐ง๐ง", "๐ง๐ฉ", "๐ง๐ช", "๐ง๐ซ", "๐ง๐ฌ", "๐ง๐ญ", "๐ง๐ฎ", "๐ง๐ฏ", "๐ง๐ฑ", "๐ง๐ฒ", "๐ง๐ณ", "๐ง๐ด", "๐ง๐ถ", "๐ง๐ท", "๐ง๐ธ", "๐ง๐น", "๐ง๐ป", "๐ง๐ผ", "๐ง๐พ", "๐ง๐ฟ", "๐จ๐ฆ", "๐จ๐จ", "๐จ๐ฉ", "๐จ๐ซ", "๐จ๐ฌ", "๐จ๐ญ", "๐จ๐ฎ", "๐จ๐ฐ", "๐จ๐ฑ", "๐จ๐ฒ", "๐จ๐ณ", "๐จ๐ด", "๐จ๐ต", "๐จ๐ท", "๐จ๐บ", "๐จ๐ป", "๐จ๐ผ", "๐จ๐ฝ", "๐จ๐พ", "๐จ๐ฟ", "๐ฉ๐ช", "๐ฉ๐ฌ", "๐ฉ๐ฏ", "๐ฉ๐ฐ", "๐ฉ๐ฒ", "๐ฉ๐ด", "๐ฉ๐ฟ", "๐ช๐ฆ", "๐ช๐จ", "๐ช๐ช", "๐ช๐ฌ", "๐ช๐ญ", "๐ช๐ท", "๐ช๐ธ", "๐ช๐น", "๐ช๐บ", "๐ซ๐ฎ", "๐ซ๐ฏ", "๐ซ๐ฐ", "๐ซ๐ฒ", "๐ซ๐ด", "๐ซ๐ท", "๐ฌ๐ฆ", "๐ฌ๐ง", "๐ฌ๐ฉ", "๐ฌ๐ช", "๐ฌ๐ซ", "๐ฌ๐ฌ", "๐ฌ๐ญ", "๐ฌ๐ฎ", "๐ฌ๐ฑ", "๐ฌ๐ฒ", "๐ฌ๐ณ", "๐ฌ๐ต", "๐ฌ๐ถ", "๐ฌ๐ท", "๐ฌ๐ธ", "๐ฌ๐น", "๐ฌ๐บ", "๐ฌ๐ผ", "๐ฌ๐พ", "๐ญ๐ฐ", "๐ญ๐ฒ", "๐ญ๐ณ", "๐ญ๐ท", "๐ญ๐น", "๐ญ๐บ", "๐ฎ๐จ", "๐ฎ๐ฉ", "๐ฎ๐ช", "๐ฎ๐ฑ", "๐ฎ๐ฒ", "๐ฎ๐ณ", "๐ฎ๐ด", "๐ฎ๐ถ", "๐ฎ๐ท", "๐ฎ๐ธ", "๐ฎ๐น", "๐ฏ๐ช", "๐ฏ๐ฒ", "๐ฏ๐ด", "๐ฏ๐ต", "๐ฐ๐ช", "๐ฐ๐ฌ", "๐ฐ๐ญ", "๐ฐ๐ฎ", "๐ฐ๐ฒ", "๐ฐ๐ณ", "๐ฐ๐ต", "๐ฐ๐ท", "๐ฐ๐ผ", "๐ฐ๐พ", "๐ฐ๐ฟ", "๐ฑ๐ฆ", "๐ฑ๐ง", "๐ฑ๐จ", "๐ฑ๐ฎ", "๐ฑ๐ฐ", "๐ฑ๐ท", "๐ฑ๐ธ", "๐ฑ๐น", "๐ฑ๐บ", "๐ฑ๐ป", "๐ฑ๐พ", "๐ฒ๐ฆ", "๐ฒ๐จ", "๐ฒ๐ฉ", "๐ฒ๐ช", "๐ฒ๐ซ", "๐ฒ๐ฌ", "๐ฒ๐ญ", "๐ฒ๐ฐ", "๐ฒ๐ฑ", "๐ฒ๐ฒ", "๐ฒ๐ณ", "๐ฒ๐ด", "๐ฒ๐ต", "๐ฒ๐ถ", "๐ฒ๐ท", "๐ฒ๐ธ", "๐ฒ๐น", "๐ฒ๐บ", "๐ฒ๐ป", "๐ฒ๐ผ", "๐ฒ๐ฝ", "๐ฒ๐พ", "๐ฒ๐ฟ", "๐ณ๐ฆ", "๐ณ๐จ", "๐ณ๐ช", "๐ณ๐ซ", "๐ณ๐ฌ", "๐ณ๐ฎ", "๐ณ๐ฑ", "๐ณ๐ด", "๐ณ๐ต", "๐ณ๐ท", "๐ณ๐บ", "๐ณ๐ฟ", "๐ด๐ฒ", "๐ต๐ฆ", "๐ต๐ช", "๐ต๐ซ", "๐ต๐ฌ", "๐ต๐ญ", "๐ต๐ฐ", "๐ต๐ฑ", "๐ต๐ฒ", "๐ต๐ณ", "๐ต๐ท", "๐ต๐ธ", "๐ต๐น", "๐ต๐ผ", "๐ต๐พ", "๐ถ๐ฆ", "๐ท๐ช", "๐ท๐ด", "๐ท๐ธ", "๐ท๐บ", "๐ท๐ผ", "๐ธ๐ฆ", "๐ธ๐ง", "๐ธ๐จ", "๐ธ๐ฉ", "๐ธ๐ช", "๐ธ๐ฌ", "๐ธ๐ญ", "๐ธ๐ฎ", "๐ธ๐ฏ", "๐ธ๐ฐ", "๐ธ๐ฑ", "๐ธ๐ฒ", "๐ธ๐ณ", "๐ธ๐ด", "๐ธ๐ท", "๐ธ๐ธ", "๐ธ๐น", "๐ธ๐ป", "๐ธ๐ฝ", "๐ธ๐พ", "๐ธ๐ฟ", "๐น๐ฆ", "๐น๐จ", "๐น๐ฉ", "๐น๐ซ", "๐น๐ฌ", "๐น๐ญ", "๐น๐ฏ", "๐น๐ฐ", "๐น๐ฑ", "๐น๐ฒ", "๐น๐ณ", "๐น๐ด", "๐น๐ท", "๐น๐น", "๐น๐ป", "๐น๐ผ", "๐น๐ฟ", "๐บ๐ฆ", "๐บ๐ฌ", "๐บ๐ฒ", "๐บ๐ณ", "๐บ๐ธ", "๐บ๐พ", "๐บ๐ฟ", "๐ป๐ฆ", "๐ป๐จ", "๐ป๐ช", "๐ป๐ฌ", "๐ป๐ฎ", "๐ป๐ณ", "๐ป๐บ", "๐ผ๐ซ", "๐ผ๐ธ", "๐ฝ๐ฐ", "๐พ๐ช", "๐น๐ฟ", "๐ฆ๐ฟ", "๐ฒ๐ฟ", "๐ผ๐ฟ", "๐ด", "๐ด", "๐ด",
        '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', 'โ๐ป', 'โ๐ผ', 'โ๐ฝ', 'โ๐พ', 'โ๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', 'โ๐ป', 'โ๐ผ', 'โ๐ฝ', 'โ๐พ', 'โ๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', 'โ๐ป', 'โ๐ผ', 'โ๐ฝ', 'โ๐พ', 'โ๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', 'โ๐ป', 'โ๐ผ', 'โ๐ฝ', 'โ๐พ', 'โ๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐คฒ๐ป', '๐คฒ๐ผ', '๐คฒ๐ฝ', '๐คฒ๐พ', '๐คฒ๐ฟ', '๐ค๐ป', '๐ค๐ผ', '๐ค๐ฝ', '๐ค๐พ', '๐ค๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', 'โ๐ป', 'โ๐ผ', 'โ๐ฝ', 'โ๐พ', 'โ๐ฟ', '๐
๐ป', '๐
๐ผ', '๐
๐ฝ', '๐
๐พ', '๐
๐ฟ', '๐คณ๐ป', '๐คณ๐ผ', '๐คณ๐ฝ', '๐คณ๐พ', '๐คณ๐ฟ', '๐ช๐ป', '๐ช๐ผ', '๐ช๐ฝ', '๐ช๐พ', '๐ช๐ฟ', '๐ฆต๐ป', '๐ฆต๐ผ', '๐ฆต๐ฝ', '๐ฆต๐พ', '๐ฆต๐ฟ', '๐ฆถ๐ป', '๐ฆถ๐ผ', '๐ฆถ๐ฝ', '๐ฆถ๐พ', '๐ฆถ๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐ฆป๐ป', '๐ฆป๐ผ', '๐ฆป๐ฝ', '๐ฆป๐พ', '๐ฆป๐ฟ', '๐๐ป', '๐๐ผ', '๐๐ฝ', '๐๐พ', '๐๐ฟ', '๐ถ๐ป', '๐ถ๐ผ', '๐ถ๐ฝ', '๐ถ๐พ', '๐ถ๐ฟ', '๐ง๐ป', '๐ง๐ผ', '๐ง๐ฝ', '๐ง๐พ', '๐ง๐ฟ', '๐ฆ๐ป', '๐ฆ๐ผ', '๐ฆ๐ฝ', '๐ฆ๐พ', '๐ฆ๐ฟ', '๐ง๐ป', '๐ง๐ผ', '๐ง๐ฝ', '๐ง๐พ', '๐ง๐ฟ', '๐ง๐ป', '๐ง๐ผ', '๐ง๐ฝ', '๐ง๐พ', '๐ง๐ฟ', '๐ฑ๐ป', '๐ฑ๐ผ', '๐ฑ๐ฝ', '๐ฑ๐พ', '๐ฑ๐ฟ', '๐จ๐ป', '๐จ๐ผ', '๐จ๐ฝ', '๐จ๐พ', '๐จ๐ฟ', '๐ง๐ป', '๐ง๐ผ', '๐ง๐ฝ', '๐ง๐พ', '๐ง๐ฟ', '๐ง๐ปโโ๏ธ', '๐ง๐ผโโ๏ธ', '๐ง๐ฝโโ๏ธ', '๐ง๐พโโ๏ธ', '๐ง๐ฟโโ๏ธ', '๐ง๐ปโโ๏ธ', '๐ง๐ผโโ๏ธ', '๐ง๐ฝโโ๏ธ', '๐ง๐พโโ๏ธ', '๐ง๐ฟโโ๏ธ', '๐จ๐ปโ๐ฆฐ', '๐จ๐ผโ๐ฆฐ', '๐จ๐ฝโ๐ฆฐ', '๐จ๐พโ๐ฆฐ', '๐จ๐ฟโ๐ฆฐ', '๐จ๐ปโ๐ฆฑ', '๐จ๐ผโ๐ฆฑ', '๐จ๐ฝโ๐ฆฑ', '๐จ๐พโ๐ฆฑ', '๐จ๐ฟโ๐ฆฑ', '๐จ๐ปโ๐ฆณ', '๐จ๐ผโ๐ฆณ', '๐จ๐ฝโ๐ฆณ', '๐จ๐พโ๐ฆณ', '๐จ๐ฟโ๐ฆณ', '๐จ๐ปโ๐ฆฒ', '๐จ๐ผโ๐ฆฒ', '๐จ๐ฝโ๐ฆฒ', '๐จ๐พโ๐ฆฒ', '๐จ๐ฟโ๐ฆฒ', '๐ฉ๐ป', '๐ฉ๐ผ', '๐ฉ๐ฝ', '๐ฉ๐พ', '๐ฉ๐ฟ', '๐ฉ๐ปโ๐ฆฐ', '๐ฉ๐ผโ๐ฆฐ', '๐ฉ๐ฝโ๐ฆฐ', '๐ฉ๐พโ๐ฆฐ', '๐ฉ๐ฟโ๐ฆฐ', '๐ง๐ปโ๐ฆฐ', '๐ง๐ผโ๐ฆฐ', '๐ง๐ฝโ๐ฆฐ', '๐ง๐พโ๐ฆฐ', '๐ง๐ฟโ๐ฆฐ', '๐ฉ๐ปโ๐ฆฑ', '๐ฉ๐ผโ๐ฆฑ', '๐ฉ๐ฝโ๐ฆฑ', '๐ฉ๐พโ๐ฆฑ', '๐ฉ๐ฟโ๐ฆฑ', '๐ง๐ปโ๐ฆฑ', '๐ง๐ผโ๐ฆฑ', '๐ง๐ฝโ๐ฆฑ', '๐ง๐พโ๐ฆฑ', '๐ง๐ฟโ๐ฆฑ', '๐ฉ๐ปโ๐ฆณ', '๐ฉ๐ผโ๐ฆณ', '๐ฉ๐ฝโ๐ฆณ', '๐ฉ๐พโ๐ฆณ', '๐ฉ๐ฟโ๐ฆณ', '๐ง๐ปโ๐ฆณ', '๐ง๐ผโ๐ฆณ', '๐ง๐ฝโ๐ฆณ', '๐ง๐พโ๐ฆณ', '๐ง๐ฟโ๐ฆณ', '๐ฉ๐ปโ๐ฆฒ', '๐ฉ๐ผโ๐ฆฒ', '๐ฉ๐ฝโ๐ฆฒ', '๐ฉ๐พโ๐ฆฒ', '๐ฉ๐ฟโ๐ฆฒ', '๐ง๐ปโ๐ฆฒ', '๐ง๐ผโ๐ฆฒ', '๐ง๐ฝโ๐ฆฒ', '๐ง๐พโ๐ฆฒ', '๐ง๐ฟโ๐ฆฒ', '๐ฉ๐ปโ๐ฆฐ', '๐ฉ๐ผโ๐ฆฐ', '๐ฉ๐ฝโ๐ฆฐ', '๐ฉ๐พโ๐ฆฐ', '๐ฉ๐ฟโ๐ฆฐ', '๐ฉ๐ปโ๐ฆฑ', '๐ฉ๐ผโ๐ฆฑ', '๐ฉ๐ฝโ๐ฆฑ', '๐ฉ๐พโ๐ฆฑ', '๐ฉ๐ฟโ๐ฆฑ', '๐ฉ๐ปโ๐ฆณ', '๐ฉ๐ผโ๐ฆณ', '๐ฉ๐ฝโ๐ฆณ', '๐ฉ๐พโ๐ฆณ', '๐ฉ๐ฟโ๐ฆณ', '๐ฉ๐ปโ๐ฆฒ', '๐ฉ๐ผโ๐ฆฒ', '๐ฉ๐ฝโ๐ฆฒ', '๐ฉ๐พโ๐ฆฒ', '๐ฉ๐ฟโ๐ฆฒ', '๐ฉ๐ปโ๐ฆณ', '๐ฉ๐ผโ๐ฆณ', '๐ฉ๐ฝโ๐ฆณ', '๐ฉ๐พโ๐ฆณ', '๐ฉ๐ฟโ๐ฆณ', '๐ง๐ปโ๐ฆฐ', '๐ง๐ผโ๐ฆฐ', '๐ง๐ฝโ๐ฆฐ', '๐ง๐พโ๐ฆฐ', '๐ง๐ฟโ๐ฆฐ', '๐ง๐ปโ๐ฆฑ', '๐ง๐ผโ๐ฆฑ', '๐ง๐ฝโ๐ฆฑ', '๐ง๐พโ๐ฆฑ', '๐ง๐ฟโ๐ฆฑ', '๐ง๐ปโ๐ฆณ', '๐ง๐ผโ๐ฆณ', '๐ง๐ฝโ๐ฆณ', '๐ง๐พโ๐ฆณ', '๐ง๐ฟโ๐ฆณ', '๐ง๐ปโ๐ฆฒ', '๐ง๐ผโ๐ฆฒ', '๐ง๐ฝโ๐ฆฒ', '๐ง๐พโ๐ฆฒ', '๐ง๐ฟโ๐ฆฒ', '๐ฉ๐ปโ๐ฆฐ', '๐ฉ๐ผโ๐ฆฐ', '๐ฉ๐ฝโ๐ฆฐ', '๐ฉ๐พโ๐ฆฐ', '๐ฉ๐ฟโ๐ฆฐ', '๐ฉ๐ปโ๐ฆฑ', '๐ฉ๐ผโ๐ฆฑ', '๐ฉ๐ฝโ๐ฆฑ', '๐ฉ๐พโ๐ฆฑ', '๐ฉ๐ฟโ๐ฆฑ', '๐ฉ๐ปโ๐ฆณ', '๐ฉ๐ผโ๐ฆณ', '๐ฉ๐ฝโ๐ฆณ', '๐ฉ๐พโ๐ฆณ', '๐ฉ๐ฟโ๐ฆณ', '๐ฉ๐ปโ๐ฆฒ', '๐ฉ๐ผโ๐ฆฒ', '๐ฉ๐ฝโ๐ฆฒ', '๐ฉ๐พโ๐ฆฒ', '๐ฉ๐ฟโ๐ฆฒ'
    ];
    function addEmojiContainers()
    {
        let icon =
            ``;
        addHTML(icon, `#newbonklobby_chatbox`);
        document.getElementById('newbonklobby_chat_input').style.pointerEvents = 'auto';
        addHTML(icon, `#ingamechatbox`);
        document.getElementById('ingamechatbox').style.pointerEvents = 'auto';
        document.querySelectorAll('.emoji-container').forEach(container => {
            container.addEventListener('click', (event) => {
                document.getElementById('newbonklobby_chat_lowerinstruction').innerHTML = ``;
                EventUItoggleEmoji()
            });
        });
    }
    function hiddenIcon()
    {
        document.getElementById('ingamechatinputtext').addEventListener('keydown', function() {
            const emojiContainer = document.querySelector('#ingamechatbox .emoji-container');
            setTimeout(() => {
                emojiContainer.style.display = this.classList.contains('ingamechatinputtextbg') ? 'block' : 'none';
            }, 30);
        });
    }
    function addStyles() {
        addCSS(`MrMenuUICSS`, `
            @keyframes colorEmoji {
                0%, 50%, 100% { fill: black; }
                25%, 75% { fill: white; }
            }
            .emoji-container > svg > path { animation: colorEmoji 4s infinite; }
        `);
        addCSS(`MrMenuUIemoji`, `
            #Mremoji-container {
                visibility: hidden; opacity: 0; z-index: -100;
                display: flex; position: absolute; top: 50%; left: 50%;
                width: calc(90% - 50px); height: calc(90% - 50px);
                transform: translate(-50%, -50%); margin: 12px;
                flex-wrap: wrap; justify-content: flex-start;align-content: flex-start; padding: 10px;
                background-color: #1f1f1f; border: 2px solid #ccc;
                border-radius: 10px; overflow-y: auto;
            }
            .emoji { font-size: 40px; width: 60px; height: 60px; }
            .emoji:hover { transform: scale(1.2); }
        `);
    }
    function addEmojiPicker()
    {
        const emojiHTML = emojifiles.map(emoji => `${emoji}
`).join('');
        const emojiContainer = `${emojiHTML}
`;
        addHTML(emojiContainer, '#bonkiocontainer');
    }
    function addEmojiClickEvent()
    {
        document.querySelector('#Mremoji-container').addEventListener('click', function(event) {
            if (event.target.classList.contains('emoji')) {
                const chatInputId = getPlay() ? 'ingamechatinputtext' : 'newbonklobby_chat_input';
                const chatInput = document.getElementById(chatInputId);
                chatInput.value += ` ${event.target.textContent}`;
                chatInput.setSelectionRange(chatInput.value.length, chatInput.value.length);
                chatInput.focus();
                EventUItoggleEmoji();
            }
        });
    }
    addEmojiContainers();
    hiddenIcon();
    addStyles();
    addEmojiPicker();
    addEmojiPicker();
    addEmojiClickEvent();
}
function ActionResetData(event)
{
    window.MrMenu.data.HostID = null;
    window.MrMenu.data.ID = null;
    window.MrMenu.data.players = [];
}
function ActionIPLoggerClick(event)
{
    function IPLoggerAddIP(ip)
    {
        if (!window.MrMenu.IPLogger.IPs.some(item => item.IP === ip))
        {
            window.MrMenu.IPLogger.IPs.push({ IP: ip, loc: '' });
        }
    }
    function addPlayer(nick, ip)
    {
        const ipEntry = window.MrMenu.IPLogger.IPs.find(item => item.IP === ip);
        if (!ipEntry) return console.error(`IP ${ip} does not exist. Add the IP first.`);
        const playerEntry = window.MrMenu.IPLogger.players.find(player => player.nick === nick);
        if (playerEntry) {
            const ipRecord = playerEntry.ips.find(record => record.ip === ip);
            if (ipRecord) ipRecord.hit++;
            else playerEntry.ips.push({ ip, hit: 1 });
        } else {
            window.MrMenu.IPLogger.players.push({ nick, ips: [{ ip, hit: 1 }] });
        }
    }
    RTCPeerConnection.prototype.addIceCandidate2 = null;
    function enable()
    {
        RTCPeerConnection.prototype.addIceCandidate = function(...args) {
            if (!args[0].address.includes(".local"))
            {
                IPLoggerAddIP(args[0].address);
                if (window.MrMenu && window.MrMenu.data && window.MrMenu.data.players) {
                    for (let n = 0; n < window.MrMenu.data.players.length; n++) {
                        let nick = window.MrMenu.data.players[n].nick;
                        addPlayer(nick, args[0].address);
                    }
                }
            }
            this.addIceCandidate2(...args);
        };
    }
    function disable()
    {
        if(RTCPeerConnection.prototype.addIceCandidate2 !== null)
        {
            RTCPeerConnection.prototype.addIceCandidate = RTCPeerConnection.prototype.addIceCandidate2;
            RTCPeerConnection.prototype.addIceCandidate2 = null;
        }
    }
    if(event.target.id == 'IPLoggerE')
    {
        window.MrMenu.data.flags.iplogger = true;
        enable();
    }
    if(event.target.id == 'IPLoggerD')
    {
        window.MrMenu.data.flags.iplogger = false;
        disable();
    }
}
function toggleFullscreen() {
    const el = document.getElementById('bonkiocontainer');
    if (el) {
        try {
            if (!document.fullscreenElement) {
                el.requestFullscreen?.() || el.mozRequestFullScreen?.() || el.webkitRequestFullscreen?.() || el.msRequestFullscreen?.();
            } else {
                document.exitFullscreen?.() || document.mozCancelFullScreen?.() || document.webkitExitFullscreen?.() || document.msExitFullscreen?.();
            }
        } catch (error) {
        }
    }
}
function SearchRoom()
{
    function addSearchBox()
    {
        addHTML('', `div#roomlisttopbar`);
        document.getElementById('MrSearchBox').addEventListener('input', function(event) {
            const filterValue = event.target.value.toLowerCase();
            const rows = document.querySelectorAll('#roomlisttable > tbody > tr');
            rows.forEach(row => {
                const cellText = row.querySelector('td').textContent.toLowerCase();
                if (filterValue === "" || cellText.includes(filterValue)) {
                    row.style.display = 'table-row';
                } else {
                    row.style.display = 'none';
                }
            });
        });
    }
    function removeSearchBox()
    {
        const emojiContainer = document.querySelector('div#roomlisttopbar > div#MrSearchBox');
        if (emojiContainer) {
            emojiContainer.remove();
        }
    }
    if(event.target.id == `MrHostSearchRoomE`)
    {
        if(document.getElementById('MrSearchBox') == null)
        {
            addSearchBox();
        }
    }
    if(event.target.id == `MrHostSearchRoomD`)
    {
        removeSearchBox();
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
function ManagerWSS(event)
{
    if(event.data && event.data.startsWith("42[3,")) { Event_Roomjoin(event); }
    if(event.data && event.data.startsWith("42[4,")) { Event_Playerjoin(event); }
    if(event.data && event.data.startsWith("42[5,")) { Event_Playerleave(event); }
    if(event.data && event.data.startsWith("42[20,")) { Event_ChatMessage(event); }
    if(event.data && event.data.startsWith("42[33,")) { Event_MapSuggest(event); }
}
function Event_Roomjoin(event)
{
    let vdata;
    try
    {
        vdata = JSON.parse(event.data.slice(2));
        let ID = vdata[1];
        let HostID = vdata[2];
        window.MrMenu.data.HostID = HostID;
        window.MrMenu.data.ID = ID;
    } catch (error) { }
}
function Event_Playerjoin(event)
{
    let vdata;
    try
    {
        vdata = JSON.parse(event.data.slice(2));
        let ID = vdata[1];
        let PeerID = vdata[2];
        let Nick = vdata[3];
        let guest = vdata[4];
        let newPlayer = { id: ID, peerID: PeerID, nick: Nick, guest: guest };
        let isUnique = !window.MrMenu.data.players.some(player => player.id === newPlayer.id);
        if (isUnique)
        {
            window.MrMenu.data.players.push(newPlayer);
        }
        if(window.MrMenu.data.flags.freejoin == true)
        {
            if(window.MrMenu.data.flags.freejoinguest == true && guest == true)
            {
                ActionFreejoin(Nick, guest, ID);
            }
            if(guest == false)
            {
                ActionFreejoin(Nick, guest, ID);
            }
        }
    } catch (error) { }
}
function Event_Playerleave(event)
{
    let vdata;
    try
    {
        vdata = JSON.parse(event.data.slice(2));
        let ID = vdata[1];
        if(window.MrMenu.data.ID == ID)
        {
            ActionResetData(event);
        }
        else
        {
            let playerIndex = window.MrMenu.data.players.findIndex(player => player.id === ID);
            if (playerIndex !== -1)
            {
                window.MrMenu.data.players.splice(playerIndex, 1);
            }
        }
    } catch (error) { }
}
function Event_ChatMessage(event)
{
    let vdata;
    try
    {
        vdata = JSON.parse(event.data.slice(2));
        let ID = vdata[1];
        let MSG = vdata[2];
        if(window.MrMenu.data.lastmsg !== MSG)
        {
            if(window.MrMenu.data.flags.linkmsg == true)
            {
                ActionChatUrls();
            }
            if(!getPlay())
            {
                ActionChatNicks();
            }
        }
    } catch (error) { }
}
function Event_MapSuggest(event)
{
    let vdata;
    try
    {
        vdata = JSON.parse(event.data.slice(2));
        let map = vdata[1];
        let ID = vdata[2];
    } catch (error) { }
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
function InterceptWSS()
{
    window.MrMenu = {};
    window.MrMenu.data = {
        HostID: null,
        ID: null,
        lastmsg:null,
        players: [],
        IPLogger : { IPs: [], players: [] },
        flags:
        {
            freejoin: false,
            freejoinguest: false,
            xp: false,
            linkmsg: false,
            iplogger: false,
        }
    };
    var originalSend = WebSocket.prototype.send;
    WebSocket.prototype.send = function(args)
    {
        if (this.readyState == WebSocket.OPEN)
        {
            bonkWSS = this;
        }
        var originalReceive = this.onmessage;
        this.onmessage = function(event)
        {
            ManagerWSS(event);
            return originalReceive.call(this, event);
        };
        return originalSend.call(this, args);
    }
}
function Init()
{
    InterceptWSS();
    addCSS(`MrMenuUICSS`, UICSS);
    addHTML(UI.main, `#bonkiocontainer`);
    for (let key in UI.tab)
    {
        if (typeof UI.tab[key] === 'string')
        {
            addHTML(UI.tab[key], `#MrArea > #Mrcontent`);
        }
    }
    updateCSSRule('.ingamechatname.MrBonkeiro::before', 'content', '"๐ "');
    updateCSSRule('.newbonklobby_chat_msg_name.MrBonkeiro::before', 'content', '"๐ "');
    EventUItoggleMenu();
    document.querySelector("body").addEventListener("keydown", (event) => { if (event.key === 'Delete') { EventUItoggleMenu(); } });
    document.querySelector(`div#pretty_top_name`).addEventListener(`click`, () => { EventUItoggleMenu();});
    document.querySelector(`#Mrtitlebar > svg`).addEventListener(`click`, () => { EventUItoggleMenu();});
    document.querySelector(`div#MrMenuUI > div#MrArea > div#Mrsidebar`).addEventListener("click", (event) => {
        EventUIsidebar(event);
        const actionElements = document.querySelectorAll("#Mrcontent > div.active > div > div.action");
        actionElements.forEach(actionElement => {
            actionElement.addEventListener("click", (event) => {
                if (event.target.tagName === 'BUTTON') {
                    event.target.parentElement.querySelectorAll("button").forEach(button => {
                        button.classList.remove('active');
                    });
                    event.target.classList.add('active');
                }
            });
        });
    });
    document.querySelector(`button#MrXPE`).addEventListener("click", (event) => { ActionXPclick(event); });
    document.querySelector(`button#MrXPD`).addEventListener("click", (event) => { ActionXPclick(event) });
    document.querySelector(`#MrMenuXPinputRangeDelay`).addEventListener("input", (event) => { ActionXPRange(event); });
    document.querySelector(`button#MrChatVisibilyE`).addEventListener("click", (event) => { ActionChatVisibility(event); });
    document.querySelector(`button#MrChatVisibilyD`).addEventListener("click", (event) => { ActionChatVisibility(event); });
    document.querySelector(`select#MrChatPositionH`).addEventListener("change", (event) => { ActionChatPosition(event); });
    document.querySelector(`select#MrChatPositionV`).addEventListener("change", (event) => { ActionChatPosition(event); });
    document.querySelector(`div#MrChatBgColorbg`).addEventListener("click", (event) => { ActionChatColor(event); });
    document.querySelector(`div#MrChatBgColorFont`).addEventListener("click", (event) => { ActionChatColor(event); });
    document.querySelector(`input#MrChatBgColorbgbase`).addEventListener("input", (event) => { document.getElementById('MrChatBgColorbg').style.backgroundColor = event.target.value; ActionChatColorFinal(event);});
    document.querySelector(`input#MrChatBgColorFontbase`).addEventListener("input", (event) => { document.getElementById('MrChatBgColorFont').style.backgroundColor = event.target.value; ActionChatColorFinal(event);});
    document.querySelector(`input#MrChattransparency`).addEventListener('input', (event) => { ActionChatransparency(event);});
    document.querySelector(`button#MrChatLinkE`).addEventListener("click", (event) => { window.MrMenu.data.flags.linkmsg = true; });
    document.querySelector(`button#MrChatLinkD`).addEventListener("click", (event) => { window.MrMenu.data.flags.linkmsg = false; });
    document.querySelector(`button#MrChatEmojiE`).addEventListener("click", (event) => { ActionChataddEmoji(); });
    document.querySelector(`button#MrChatEmojiD`).addEventListener("click", (event) => { ActionChatremoveEmoji(); });
    document.querySelector(`button#MrHostSearchRoomE`).addEventListener("click", (event) => { SearchRoom(); });
    document.querySelector(`button#MrHostSearchRoomD`).addEventListener("click", (event) => { SearchRoom(); });
    document.querySelector(`#bonkiocontainer`).addEventListener("click", (event) => { if(event.target.id == `leaveconfirmwindow_okbutton`){ ActionResetData(event); } });
    document.querySelector(`button#MrFullScreen`).addEventListener("click", (event) => { toggleFullscreen(); });
    EventUItoggleMenu();
}
ScriptInjector(Init);