<hr/> <center> New Key Updated Time ( 7.8.2024 - 5:30 PM ) </center> <hr/> <!-- Add this HTML to your footer section in the Blogspot template --> <div id="footer" style="text-align: center; padding: 3px; background-color: #f8f9fa;"> <div id="table-container" style="overflow-x: auto; width: 100%; padding: 10px;"> <!-- Table will be appended here by the script --> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { const vmessKeysRaw = ` vmess://eyJhZGQiOiJkanp6ZS5tYWtobHVrLm15LmlkIiwiYWlkIjoiMCIsImFscG4iOiIiLCJmcCI6IiIsImhvc3QiOiIiLCJpZCI6ImJkZThjODAwLTQ4YjYtNGM2MC1hMzc5LWU2NGY3NTA2NTcwMSIsIm5ldCI6IndzIiwicGF0aCI6Ii 92bWVzcyIsInBvcnQiOiI4MCIsInBzIjoiU2luZ2Fwb3JlIiwic2N5IjoiYXV0byIsInNuaSI6IiIsInRscyI6IiIsInR5cGUiOiIiLCJ2IjoiMiJ9 vmess://eyJhZGQiOiIzOC45OS44Mi4xNjAiLCJhaWQiOiIwIiwiYWxwbiI6IiIsImZwIjoiIiwiaG9zdCI6IiIsImlkIjoiMDQ2MjFiYWUtYWIzNi0xMWVjLWI5MDktMDI0MmFjMTIwMDAyIiwibmV0IjoidGNwIiwicGF0aCI6IiIsInBvcn QiOiIyMjMyNCIsInBzIjoiVW5pdGVkIFN0YXRlcyIsInNjeSI6ImF1dG8iLCJzbmkiOiIiLCJ0bHMiOiIiLCJ0eXBlIjoibm9uZSIsInYiOiIyIn0= vmess://eyJhZGQiOiIxMDguMTgxLjIzLjQxIiwiYWlkIjoiMCIsImFscG4iOiIiLCJmcCI6IiIsImhvc3QiOiJ3cm1lbG13eGxmLmdrdGV2bHJxem53cXFvenkuZmFicGZzNjZnaXptbm9qaGN2cXh3bC5reXRyY2Z6cWxhODdndmd2czZj N2tqbnJ1YnVoLmNjIiwiaWQiOiJlOWUzY2MxMy1kYjQ4LTRjYzEtOGMyNC03NjI2NDM5YTUzMzkiLCJuZXQiOiJ3cyIsInBhdGgiOiJnaXRodWIuY29tL0FsdmluOTk5OSIsInBvcnQiOiIyMDg2IiwicHMiOiJVbml0ZWQgU3RhdGVz Iiwic2N5IjoiYXV0byIsInNuaSI6IiIsInRscyI6IiIsInR5cGUiOiIiLCJ2IjoiMiJ9 `; // Function to decode base64 and parse JSON function decodeVmessKey(key) { const base64Part = key.split('://')[1]; const jsonString = atob(base64Part); try { return JSON.parse(jsonString); } catch (e) { console.error('Error parsing JSON from vmess key:', e); return null; } } // Split the raw string into an array of keys const vmessKeys = vmessKeysRaw.trim().split('\n'); const table = document.createElement('table'); const thead = document.createElement('thead'); const tbody = document.createElement('tbody'); table.appendChild(thead); table.appendChild(tbody); table.style.width = '100%'; // Full width for responsiveness table.style.borderCollapse = 'collapse'; table.style.backgroundColor = 'white'; // Table background color table.style.color = 'black'; // Text color table.style.margin = '0'; // Reset margin table.style.tableLayout = 'fixed'; // Fixed layout for better responsiveness // Add CSS to footer to position table at the bottom const footer = document.getElementById('footer'); footer.style.position = 'relative'; footer.style.bottom = '0'; footer.style.width = '100%'; // Add table container const tableContainer = document.getElementById('table-container'); tableContainer.style.overflowX = 'auto'; // Allow horizontal scrolling on small screens // Create table header const headerRow = document.createElement('tr'); const headerNumber = document.createElement('th'); headerNumber.textContent = 'No'; const headerCountry = document.createElement('th'); headerCountry.textContent = 'Country'; const headerKey = document.createElement('th'); headerKey.textContent = 'Key'; const headerCopy = document.createElement('th'); headerCopy.textContent = 'Copy'; // Style table headers [headerNumber, headerCountry, headerKey, headerCopy].forEach(header => { header.style.border = '1px solid black'; // Border color header.style.padding = '8px'; header.style.textAlign = 'center'; header.style.backgroundColor = '#e9ecef'; // Header background color }); headerNumber.style.width = '50px'; // Set width for the number column headerRow.appendChild(headerNumber); headerRow.appendChild(headerCountry); headerRow.appendChild(headerKey); headerRow.appendChild(headerCopy); thead.appendChild(headerRow); vmessKeys.forEach((key, index) => { const parsedKey = decodeVmessKey(key); const row = document.createElement('tr'); row.style.height = '50px'; // Set row height // Number cell const numberCell = document.createElement('td'); numberCell.style.border = '1px solid black'; // Border color numberCell.style.padding = '3px'; numberCell.style.textAlign = 'center'; numberCell.style.boxSizing = 'border-box'; // Include padding and border in height numberCell.style.height = '50px'; // Cell height numberCell.style.overflow = 'hidden'; // Hide overflow numberCell.style.whiteSpace = 'nowrap'; // Prevent wrapping numberCell.style.width = '50px'; // Fixed width for number column numberCell.textContent = index + 1; // Show the number // Country cell const countryCell = document.createElement('td'); countryCell.style.border = '1px solid black'; // Border color countryCell.style.padding = '3px'; countryCell.style.textAlign = 'center'; countryCell.style.boxSizing = 'border-box'; // Include padding and border in height countryCell.style.height = '50px'; // Cell height countryCell.style.overflow = 'hidden'; // Hide overflow countryCell.style.whiteSpace = 'nowrap'; // Prevent wrapping if (parsedKey) { const country = parsedKey.ps || 'Unknown'; // Extract country or default to 'Unknown' countryCell.textContent = country; } else { countryCell.textContent = 'Error'; } // Key cell const keyCell = document.createElement('td'); keyCell.style.border = '1px solid black'; // Border color keyCell.style.padding = '3px'; keyCell.style.maxWidth = '300px'; // Limit width keyCell.style.overflow = 'hidden'; // Hide overflow keyCell.style.textOverflow = 'ellipsis'; // Ellipsis for long text keyCell.style.wordBreak = 'break-word'; // Break long words keyCell.style.boxSizing = 'border-box'; // Include padding and border in height keyCell.style.height = '50px'; // Cell height keyCell.style.whiteSpace = 'nowrap'; // Prevent wrapping keyCell.textContent = key; // Copy button cell const copyCell = document.createElement('td'); copyCell.style.border = '1px solid black'; // Border color copyCell.style.padding = '8px'; copyCell.style.textAlign = 'center'; copyCell.style.boxSizing = 'border-box'; // Include padding and border in height copyCell.style.height = '50px'; // Cell height copyCell.style.whiteSpace = 'nowrap'; // Prevent wrapping const copyButton = document.createElement('button'); copyButton.textContent = 'Copy'; copyButton.style.backgroundColor = '#007bff'; // Button background color copyButton.style.color = 'white'; // Button text color copyButton.style.border = '1px solid black'; // Button border color copyButton.style.padding = '6px 25px'; // Button padding copyButton.style.fontSize = '14px'; // Font size copyButton.style.cursor = 'pointer'; // Cursor style copyButton.style.borderRadius = '4px'; // Rounded corners copyButton.style.transition = 'background-color 0.3s'; // Smooth background color transition copyButton.style.height = '100%'; // Full height to match cell copyButton.onmouseover = () => { copyButton.style.backgroundColor = '#0056b3'; // Darker background on hover }; copyButton.onmouseout = () => { copyButton.style.backgroundColor = '#007bff'; // Original background color }; copyButton.onclick = () => { navigator.clipboard.writeText(key).then(() => { alert('Key copied to clipboard!'); }).catch(err => { console.error('Failed to copy key:', err); }); }; copyCell.appendChild(copyButton); row.appendChild(numberCell); row.appendChild(countryCell); row.appendChild(keyCell); row.appendChild(copyCell); tbody.appendChild(row); }); tableContainer.appendChild(table); // Media query for mobile responsiveness const style = document.createElement('style'); style.textContent = ` @media (max-width: 768px) { table { width: 100%; /* Full width for smaller screens */ } td, th { padding: 4px; /* Reduce padding on smaller screens */ font-size: 12px; /* Adjust font size on smaller screens */ } } `; document.head.appendChild(style); }); </script>