Auto Luarmor Remake :D

Skibidi's Auto Luarmor Remake

// ==UserScript==
// @name         Auto Luarmor Remake :D
// @namespace    http://tampermonkey.net/
// @version      1.7.6
// @author       Skibidi
// @match        https://ads.luarmor.net/get_key*
// @icon         https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT-qTrpdUUXTcHpoQo-K_ExyrBuSLSdh5M1rQ&s
// @grant        none
// @description  Skibidi's Auto Luarmor Remake
// ==/UserScript==

(function() {
    'use strict';

    const SCRIPT_VERSION = "1.7.6";
    const UPDATE_URL = "https://greasyfork.org/en/scripts/544191-auto-luarmor-remake-d";
    const RAW_URL = "https://greasyfork.org/scripts/544191-auto-luarmor-remake-d/code/Auto%20Luarmor%20Remake%20D.user.js";

    function fetchLatestVersion(cb) {
        fetch(RAW_URL + "?t=" + Date.now())
            .then(r => r.text())
            .then(txt => {
                const m = txt.match(/@version\s+([^\s]+)/);
                cb(m ? m[1] : null);
            })
            .catch(() => cb(null));
    }
    function forceUpdate() { window.location.href = UPDATE_URL; }
    function checkVersionAndUpdate(force) {
        fetchLatestVersion(function(latest) {
            if (!latest) { if (force) alert("Check update failed"); return; }
            if (latest !== SCRIPT_VERSION) {
                if (force) {
                    if (confirm("A new version ("+latest+") is available. Do you want to update?")) forceUpdate();
                } else forceUpdate();
            } else if (force) alert("You are using the latest version ("+SCRIPT_VERSION+")");
        });
    }
    checkVersionAndUpdate(false);

    (function checkTabs() {
        if (!window || !window.localStorage) return;
        const KEY = "__luarmor_tabs__", CLOSE_KEY = "__luarmor_close__";
        let tabs = [];
        try { tabs = JSON.parse(localStorage.getItem(KEY) || "[]"); } catch(e) {}
        const now = Date.now();
        tabs = tabs.filter(t => now - t.time < 15000);
        const myId = Math.random().toString(36).substr(2, 9) + now;
        tabs.push({id: myId, time: now});
        tabs.sort((a, b) => a.time - b.time);
        localStorage.setItem(KEY, JSON.stringify(tabs));
        if (tabs.length > 1) {
            const oldest = tabs.find(t => t.id !== myId);
            if (oldest) localStorage.setItem(CLOSE_KEY, oldest.id);
        }
        window.addEventListener("storage", function(e) {
            if (e.key === CLOSE_KEY) {
                try {
                    const closeId = e.newValue;
                    if (!closeId) return;
                    if (myId === closeId) {
                        setTimeout(function() {
                            try { if (typeof window.close === "function") window.close(); }
                            catch(e) { window.location.href = 'about:blank'; }
                        }, 200);
                    }
                } catch(e){}
            }
        });
        setInterval(function() {
            let tabs = [];
            try { tabs = JSON.parse(localStorage.getItem(KEY) || "[]"); } catch(e) {}
            const now = Date.now();
            tabs = tabs.filter(t => now - t.time < 15000 && t.id !== myId);
            tabs.push({id: myId, time: now});
            tabs.sort((a, b) => a.time - b.time);
            localStorage.setItem(KEY, JSON.stringify(tabs));
        }, 2000);
        window.addEventListener("beforeunload", function() {
            let tabs = [];
            try { tabs = JSON.parse(localStorage.getItem(KEY) || "[]"); } catch(e) {}
            tabs = tabs.filter(t => t.id !== myId);
            localStorage.setItem(KEY, JSON.stringify(tabs));
        });
    })();

    const configKeys = {
        enableNewKey: "__luarmor_enable_newkey__",
        enableAuto24H: "__luarmor_enable_auto24h__",
        selectedAdd24HSlotIdx: "__luarmor_add24h_slot_idx__",
        selectedAdd24HSlotRenewKey: "__luarmor_add24h_slot_renewkey__",
        enableAll: "__luarmor_enable_all__"
    };
    function getConfigBool(key, def) {
        try { const v = localStorage.getItem(key); return v === null ? def : v === "true"; } catch(e) { return def; }
    }
    function setConfigBool(key, val) { try { localStorage.setItem(key, val ? "true" : "false"); } catch(e){} }
    function getConfigInt(key, def) {
        try { const v = localStorage.getItem(key); if (v === null) return def; const n = parseInt(v, 10); return isNaN(n) ? def : n; } catch(e) { return def; }
    }
    function setConfigInt(key, val) { try { localStorage.setItem(key, String(val)); } catch(e){} }
    function getConfigStr(key, def) { try { const v = localStorage.getItem(key); return v === null ? def : v; } catch(e) { return def; } }
    function setConfigStr(key, val) { try { localStorage.setItem(key, String(val)); } catch(e){} }

    const config = {
        initialDelay: 100,
        checkInterval: 100,
        cooldownCheck: 300,
        maxCooldown: 15000,
        retryLimit: 3,
        enableNewKey: getConfigBool(configKeys.enableNewKey, false),
        enableAuto24H: getConfigBool(configKeys.enableAuto24H, true),
        enableAll: getConfigBool(configKeys.enableAll, true)
    };

    function getAllAdd24HButtons() {
        try { return Array.from(document.querySelectorAll('button[id^="addtimebtn_"]')); } catch(e) { return []; }
    }
    function getAdd24HSlotList() {
        const btns = getAllAdd24HButtons();
        return btns.map((btn, idx) => {
            let renewKey = null, id = btn.id, m = null;
            try { m = (btn.getAttribute('onclick')||'').match(/renewKey\(['"]([^'"]+)['"]\)/); } catch(e){}
            if (m) renewKey = m[1];
            return { slot: idx+1, id, renewKey, btn };
        }).filter(x => x.renewKey);
    }

    let add24HSlotList = [];
    let selectedAdd24HSlotIdx = getConfigInt(configKeys.selectedAdd24HSlotIdx, 0);
    let selectedAdd24HSlotRenewKey = getConfigStr(configKeys.selectedAdd24HSlotRenewKey, "");

    function saveSelectedSlot() {
        setConfigInt(configKeys.selectedAdd24HSlotIdx, selectedAdd24HSlotIdx);
        setConfigStr(configKeys.selectedAdd24HSlotRenewKey, selectedAdd24HSlotRenewKey || "");
    }
    function refreshAdd24HSlotList() {
        try {
            add24HSlotList = getAdd24HSlotList();
            if (selectedAdd24HSlotRenewKey && selectedAdd24HSlotRenewKey !== "null") {
                const foundIdx = add24HSlotList.findIndex(slot => slot.renewKey === selectedAdd24HSlotRenewKey);
                if (foundIdx !== -1) selectedAdd24HSlotIdx = foundIdx;
                else if (add24HSlotList.length > 0) {
                    selectedAdd24HSlotIdx = 0;
                    selectedAdd24HSlotRenewKey = add24HSlotList[0].renewKey;
                }
            } else if (add24HSlotList.length > 0) {
                selectedAdd24HSlotIdx = 0;
                selectedAdd24HSlotRenewKey = add24HSlotList[0].renewKey;
            }
            saveSelectedSlot();
        } catch(e){}
    }
    refreshAdd24HSlotList();

    function createLuarmorUIContainer() {
        let container = document.getElementById('luarmor-ui-container');
        if (container) return container;
        container = document.createElement('div');
        container.id = 'luarmor-ui-container';
        container.style.cssText = "position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:12px;z-index:10001;font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;max-width:370px;max-height:90vh;overflow:auto;box-sizing:border-box;";
        document.body.appendChild(container);
        return container;
    }

    function createLuarmorControlPanel() {
        let oldPanel = document.getElementById('luarmor-control-panel');
        if (oldPanel) oldPanel.remove();
        const panelDiv = document.createElement('div');
        panelDiv.id = 'luarmor-control-panel';
        panelDiv.style.cssText = "background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);color:#fff;padding:14px 18px;border-radius:14px;font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;font-size:13px;border:2px solid rgba(0,255,255,0.3);max-width:340px;box-shadow:0 4px 16px rgba(0,0,0,0.25);display:flex;flex-direction:column;align-items:flex-start;gap:12px;backdrop-filter:blur(6px);transition:all .2s;box-sizing:border-box;overflow:hidden;";
        refreshAdd24HSlotList();
        let html = `
        <div style="font-weight:700;font-size:16px;margin-bottom:2px;background:linear-gradient(45deg,#00ffff,#00bfff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:0 0 10px rgba(0,255,255,0.4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;">🚀 Luarmor Auto Manager</div>
        <div style="display:flex;gap:10px;align-items:center;padding:6px 8px;background:rgba(255,255,255,0.04);border-radius:8px;border:1px solid rgba(0,255,255,0.15);width:100%;box-sizing:border-box;">
            <label style="display:flex;align-items:center;gap:6px;cursor:pointer;flex:1 1 0;">
                <input type="checkbox" id="luarmor-enableall-toggle" ${config.enableAll ? 'checked' : ''} style="accent-color:#00ffff;transform:scale(1.1);cursor:pointer;">
                <span style="font-weight:600;color:#00ffff;text-shadow:0 0 6px rgba(0,255,255,0.4);white-space:nowrap;">Enable Script</span>
            </label>
            <button id="luarmor-checkupdate-btn" style="background:linear-gradient(45deg,#00ffff,#00bfff);color:#000;border:none;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:11px;font-weight:600;transition:all .2s;box-shadow:0 2px 8px rgba(0,255,255,0.2);white-space:nowrap;">🔄 Update</button>
        </div>
        <div style="display:flex;gap:10px;align-items:center;padding:6px 8px;background:rgba(255,255,255,0.04);border-radius:8px;border:1px solid rgba(0,255,255,0.15);width:100%;box-sizing:border-box;">
            <label style="display:flex;align-items:center;gap:6px;cursor:pointer;">
                <input type="checkbox" id="luarmor-auto24h-toggle" ${config.enableAuto24H ? 'checked' : ''} style="accent-color:#00ffff;transform:scale(1.1);cursor:pointer;" ${!config.enableAll ? 'disabled' : ''}>
                <span style="color:#fff;font-weight:500;white-space:nowrap;">⏰ Auto +24H</span>
            </label>
            <label style="display:flex;align-items:center;gap:6px;cursor:pointer;">
                <input type="checkbox" id="luarmor-newkey-toggle" ${config.enableNewKey ? 'checked' : ''} style="accent-color:#00ffff;transform:scale(1.1);cursor:pointer;" ${!config.enableAll ? 'disabled' : ''}>
                <span style="color:#fff;font-weight:500;white-space:nowrap;">🔑 Auto New Key</span>
            </label>
        </div>
        <div style="display:flex;align-items:center;gap:8px;padding:6px 8px;background:rgba(255,255,255,0.04);border-radius:8px;border:1px solid rgba(0,255,255,0.15);width:100%;box-sizing:border-box;">
            <span style="font-weight:600;color:#00ffff;text-shadow:0 0 6px rgba(0,255,255,0.4);white-space:nowrap;">🎯 +24H Slot</span>
            <select id="luarmor-add24h-slot" style="margin-left:4px;background:rgba(0,0,0,0.2);color:#fff;border:1px solid rgba(0,255,255,0.2);padding:3px 8px;border-radius:4px;font-size:12px;cursor:pointer;max-width:120px;overflow:hidden;text-overflow:ellipsis;" ${!config.enableAll ? 'disabled' : ''}>`;
        add24HSlotList.forEach((slot, i) => {
            html += `<option value="${i}"${i === selectedAdd24HSlotIdx ? ' selected' : ''} style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">Slot ${i+1} (${slot.renewKey})</option>`;
        });
        html += `</select>
            <button id="luarmor-save-slot-btn" style="margin-left:4px;background:linear-gradient(45deg,#00ffff,#00bfff);color:#000;border:none;padding:3px 8px;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;transition:all .2s;box-shadow:0 1px 5px rgba(0,255,255,0.2);white-space:nowrap;" ${!config.enableAll ? 'opacity:0.5;pointer-events:none;' : ''}>💾 Save</button>
        </div>`;
        panelDiv.innerHTML = html;
        createLuarmorUIContainer().appendChild(panelDiv);

        document.getElementById('luarmor-enableall-toggle').addEventListener('change', function(e) {
            config.enableAll = e.target.checked;
            setConfigBool(configKeys.enableAll, config.enableAll);
            document.getElementById('luarmor-auto24h-toggle').disabled = !config.enableAll;
            document.getElementById('luarmor-newkey-toggle').disabled = !config.enableAll;
            document.getElementById('luarmor-add24h-slot').disabled = !config.enableAll;
            document.getElementById('luarmor-save-slot-btn').disabled = !config.enableAll;
            if (!config.enableAll) {
                document.getElementById('luarmor-save-slot-btn').style.opacity = "0.5";
                document.getElementById('luarmor-save-slot-btn').style.pointerEvents = "none";
            } else {
                document.getElementById('luarmor-save-slot-btn').style.opacity = "";
                document.getElementById('luarmor-save-slot-btn').style.pointerEvents = "";
            }
            automationPaused = !config.enableAll;
            if (!automationPaused) {
                for (let k in buttonStates) buttonStates[k].clicked = false;
                for (let k in buttonStates) buttonStates[k].retry = 0;
                for (let k in buttonStates) buttonStates[k].cooldown = false;
                updateStatus('add24H', 'pending');
                updateStatus('newKey', 'pending');
                updateStatus('start', 'pending');
                updateStatus('next', 'pending');
                tryClickButtons();
            }
        });
        document.getElementById('luarmor-auto24h-toggle').addEventListener('change', function(e) {
            config.enableAuto24H = e.target.checked;
            setConfigBool(configKeys.enableAuto24H, config.enableAuto24H);
            buttonStates.add24H.clicked = false;
            updateStatus('add24H', 'pending');
        });
        document.getElementById('luarmor-newkey-toggle').addEventListener('change', function(e) {
            config.enableNewKey = e.target.checked;
            setConfigBool(configKeys.enableNewKey, config.enableNewKey);
            buttonStates.newKey.clicked = false;
            updateStatus('newKey', 'pending');
        });
        document.getElementById('luarmor-add24h-slot').addEventListener('change', function(e) {
            selectedAdd24HSlotIdx = parseInt(e.target.value, 10);
            if (add24HSlotList[selectedAdd24HSlotIdx]) {
                selectedAdd24HSlotRenewKey = add24HSlotList[selectedAdd24HSlotIdx].renewKey;
            }
            buttonStates.add24H.clicked = false;
            updateStatus('add24H', 'pending');
        });
        document.getElementById('luarmor-save-slot-btn').addEventListener('click', function() {
            const select = document.getElementById('luarmor-add24h-slot');
            selectedAdd24HSlotIdx = parseInt(select.value, 10);
            if (add24HSlotList[selectedAdd24HSlotIdx]) {
                selectedAdd24HSlotRenewKey = add24HSlotList[selectedAdd24HSlotIdx].renewKey;
                saveSelectedSlot();
                buttonStates.add24H.clicked = false;
                updateStatus('add24H', 'pending');
            }
        });
        document.getElementById('luarmor-checkupdate-btn').addEventListener('click', function() {
            checkVersionAndUpdate(true);
        });
    }

    function createStatusIndicator() {
        if (document.getElementById('luarmor-status')) return;
        const style = document.createElement('style');
        style.textContent = `
            #luarmor-status {
                background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
                color: #fff;
                padding: 10px 14px;
                border-radius: 10px;
                font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
                font-size: 13px;
                z-index: 10000;
                border: 2px solid rgba(0,255,255,0.2);
                max-width: 220px;
                box-shadow: 0 4px 16px rgba(0,0,0,0.2);
                backdrop-filter: blur(6px);
                transition: all .2s;
                box-sizing: border-box;
                overflow: hidden;
            }
            #luarmor-status-title {
                font-weight: 700;
                margin-bottom: 6px;
                font-size: 14px;
                background: linear-gradient(45deg, #00ffff, #00bfff);
                -webkit-background-clip: text;
                -webkit-text-fill-color: transparent;
                background-clip: text;
                text-shadow: 0 0 10px rgba(0,255,255,0.4);
                white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
            }
            #luarmor-status-content {
                font-size: 12px;
                line-height: 1.5;
                width:100%;
                box-sizing:border-box;
            }
            .cooldown { color: #ffaa00; text-shadow: 0 0 6px rgba(255,170,0,0.4); font-weight: 600; }
            .completed { color: #00ff88; text-shadow: 0 0 6px rgba(0,255,136,0.4); font-weight: 600; }
            .pending { color: #ccc; font-weight: 500; }
            .retry { color: #00bfff; text-shadow: 0 0 6px rgba(0,191,255,0.4); font-weight: 600; }
            .failed { color: #ff4444; text-shadow: 0 0 6px rgba(255,68,68,0.4); font-weight: 600; }
            .timeout { color: #ff8800; text-shadow: 0 0 6px rgba(255,136,0,0.4); font-weight: 600; }
            .notfound { color: #ff4444; text-shadow: 0 0 6px rgba(255,68,68,0.4); font-weight: 600; }
            #luarmor-status-controls { margin-top: 8px; padding-top: 6px; border-top: 1px dashed rgba(0,255,255,0.15); display: flex; gap: 6px; }
            .status-btn { background: linear-gradient(45deg,#00ffff,#00bfff); color:#000; border:none; padding:3px 8px; border-radius:4px; cursor:pointer; font-size:11px; font-weight:600; transition:all .2s; box-shadow:0 1px 5px rgba(0,255,255,0.2);}
            .status-btn:hover { transform: translateY(-1px); box-shadow:0 2px 8px rgba(0,255,255,0.3);}
            .status-item { display:flex;align-items:center;gap:5px;margin-bottom:3px;padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
            .status-icon { font-size:12px;width:14px;text-align:center;}
        `;
        document.head.appendChild(style);
        const statusDiv = document.createElement('div');
        statusDiv.id = 'luarmor-status';
        statusDiv.innerHTML = `
            <div id="luarmor-status-title">📊 Status Monitor</div>
            <div id="luarmor-status-content">
                <div class="status-item">
                    <span class="status-icon">⏰</span>
                    <span>+24H: <span id="status-add24H" class="pending">Pending</span></span>
                </div>
                <div class="status-item">
                    <span class="status-icon">🔑</span>
                    <span>New Key: <span id="status-newKey" class="pending">Pending</span></span>
                </div>
                <div class="status-item">
                    <span class="status-icon">▶️</span>
                    <span>Next: <span id="status-next" class="pending">Pending</span></span>
                </div>
                <div id="status-all"></div>
            </div>
            <div id="luarmor-status-controls"></div>
        `;
        createLuarmorUIContainer().appendChild(statusDiv);
    }

    const selectors = {
        nextButton: '#nextbtn',
        add24HButton: () => {
            try {
                refreshAdd24HSlotList();
                if (add24HSlotList.length === 0) return null;
                if (selectedAdd24HSlotIdx < 0 || selectedAdd24HSlotIdx >= add24HSlotList.length) return null;
                return `#${add24HSlotList[selectedAdd24HSlotIdx].id}`;
            } catch(e) { return null; }
        },
        startButton: '#startbtn',
        newKeyButton: '#newkeybtn'
    };

    const buttonStates = {
        next: { clicked: false, cooldown: false, retry: 0 },
        start: { clicked: false, cooldown: false, retry: 0 },
        add24H: { clicked: false, cooldown: false, retry: 0 },
        newKey: { clicked: false, cooldown: false, retry: 0 }
    };

    function isClickable(button) {
        if (!button) return false;
        try {
            if (button.disabled) return false;
            if (button.classList && button.classList.contains('disabled')) return false;
            if (button.style && (button.style.display === 'none' || button.style.visibility === 'hidden' || button.style.opacity === '0')) return false;
            if (button.style && button.style.cursor === 'not-allowed') return false;
        } catch(e) { return false; }
        return true;
    }
    function isOnCooldown(button) {
        if (!button) return false;
        try {
            let text = (button.textContent || '').toLowerCase();
            if (button.style && button.style.cursor === 'not-allowed') return true;
            if (text.includes('wait') || text.includes('cooldown')) return true;
            if (button.disabled) return true;
        } catch(e) { return false; }
        return false;
    }

    let automationPaused = !config.enableAll;

    function handleButtonClick(buttonType) {
        if (automationPaused) return false;
        let selector;
        try {
            if (typeof selectors[buttonType + 'Button'] === 'function') {
                selector = selectors[buttonType + 'Button']();
            } else {
                selector = selectors[buttonType + 'Button'];
            }
        } catch(e) { selector = null; }
        if (!selector) {
            if (buttonType !== 'start') updateStatus(buttonType, 'notfound');
            return false;
        }
        let button = null;
        try { button = document.querySelector(selector); } catch(e) { button = null; }
        if (!button) {
            if (buttonType !== 'start') updateStatus(buttonType, 'notfound');
            return false;
        }
        if (isOnCooldown(button)) {
            if (!buttonStates[buttonType].cooldown) {
                buttonStates[buttonType].cooldown = true;
                updateStatus(buttonType, 'cooldown');
                let waited = 0;
                const cooldownCheck = setInterval(() => {
                    if (automationPaused) { clearInterval(cooldownCheck); return; }
                    waited += config.cooldownCheck;
                    if (!isOnCooldown(button)) {
                        clearInterval(cooldownCheck);
                        buttonStates[buttonType].cooldown = false;
                        updateStatus(buttonType, 'pending');
                        tryClickButtons();
                    } else if (waited >= config.maxCooldown) {
                        clearInterval(cooldownCheck);
                        updateStatus(buttonType, 'timeout');
                    }
                }, config.cooldownCheck);
            }
            return false;
        }
        if (isClickable(button)) {
            try {
                if (buttonType === 'add24H') {
                    refreshAdd24HSlotList();
                    if (add24HSlotList[selectedAdd24HSlotIdx]) {
                        let renewKeyParam = add24HSlotList[selectedAdd24HSlotIdx].renewKey;
                        try {
                            if (typeof unsafeWindow !== "undefined" && typeof unsafeWindow.renewKey === "function") {
                                unsafeWindow.renewKey(renewKeyParam);
                            } else if (typeof window.renewKey === "function") {
                                window.renewKey(renewKeyParam);
                            } else {
                                if (typeof button.click === "function") button.click();
                                else { let evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); button.dispatchEvent(evt); }
                            }
                        } catch(e) {
                            if (typeof button.click === "function") button.click();
                            else { let evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); button.dispatchEvent(evt); }
                        }
                    }
                } else {
                    if (typeof button.click === "function") button.click();
                    else { let evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); button.dispatchEvent(evt); }
                }
                buttonStates[buttonType].clicked = true;
                updateStatus(buttonType, 'completed');
                return true;
            } catch (e) {
                updateStatus(buttonType, 'failed');
                return false;
            }
        } else {
            if (buttonStates[buttonType].retry < config.retryLimit) {
                buttonStates[buttonType].retry++;
                setTimeout(() => handleButtonClick(buttonType), config.checkInterval);
                updateStatus(buttonType, 'retry');
            } else updateStatus(buttonType, 'failed');
        }
        return false;
    }

    function tryClickButtons() {
        if (automationPaused) return;
        try {
            if (config.enableAuto24H && !buttonStates.add24H.clicked) { if (handleButtonClick('add24H')) return; }
            if (config.enableNewKey && !buttonStates.newKey.clicked) { if (handleButtonClick('newKey')) return; }
            if (!buttonStates.start.clicked) { if (handleButtonClick('start')) return; }
            if (!buttonStates.next.clicked) { if (handleButtonClick('next')) return; }
        } catch(e){}
    }

    function updateStatus(action, state) {
        let statusElement;
        if (action === 'all') {
            ['add24H', 'newKey', 'start', 'next'].forEach(btn => {
                const element = document.getElementById(`status-${btn}`);
                if (element) { element.textContent = 'Completed'; element.className = 'completed'; }
            });
            const allDiv = document.getElementById('status-all');
            if (allDiv) { allDiv.textContent = '✅ All tasks completed!'; allDiv.className = 'completed'; }
            return;
        } else statusElement = document.getElementById(`status-${action}`);
        if (!statusElement) return;
        switch (state) {
            case 'completed': statusElement.textContent = 'Completed'; statusElement.className = 'completed'; break;
            case 'cooldown': statusElement.textContent = 'On Cooldown...'; statusElement.className = 'cooldown'; break;
            case 'pending': statusElement.textContent = 'Pending'; statusElement.className = 'pending'; break;
            case 'retry': statusElement.textContent = 'Retrying...'; statusElement.className = 'retry'; break;
            case 'failed': statusElement.textContent = 'Failed'; statusElement.className = 'failed'; break;
            case 'timeout': statusElement.textContent = 'Timeout'; statusElement.className = 'timeout'; break;
            case 'notfound':
                if (action !== 'start') { statusElement.textContent = 'Not Found'; statusElement.className = 'notfound'; }
                else { statusElement.textContent = ''; statusElement.className = ''; }
                break;
            default: statusElement.textContent = state; statusElement.className = '';
        }
    }

    function fastStartup() {
        try {
            refreshAdd24HSlotList();
            createLuarmorControlPanel();
            createStatusIndicator();
            updateStatus('add24H', 'pending');
            updateStatus('newKey', 'pending');
            updateStatus('start', 'pending');
            updateStatus('next', 'pending');
            tryClickButtons();
            const checkInterval = setInterval(() => {
                if (automationPaused) return;
                const allClicked = Object.values(buttonStates).every(state => state.clicked);
                if (allClicked) {
                    clearInterval(checkInterval);
                    updateStatus('all', 'completed');
                } else tryClickButtons();
            }, config.checkInterval);
        } catch(e){}
    }

    function waitFor24HButtonsFast(retry = 0) {
        try {
            refreshAdd24HSlotList();
            if (add24HSlotList.length >= 1 || retry > 10) fastStartup();
            else setTimeout(() => waitFor24HButtonsFast(retry+1), 50);
        } catch(e) { setTimeout(() => waitFor24HButtonsFast(retry+1), 50); }
    }

    if (document.readyState === "complete" || document.readyState === "interactive") {
        setTimeout(waitFor24HButtonsFast, config.initialDelay);
    } else {
        window.addEventListener("DOMContentLoaded", function() {
            setTimeout(waitFor24HButtonsFast, config.initialDelay);
        });
    }
})();