{"id":100,"date":"2026-04-20T08:24:08","date_gmt":"2026-04-20T08:24:08","guid":{"rendered":"https:\/\/cashchat.se\/dir\/?page_id=100"},"modified":"2026-04-20T09:20:59","modified_gmt":"2026-04-20T09:20:59","slug":"shares-2","status":"publish","type":"page","link":"https:\/\/cashchat.se\/dir\/shares-2\/","title":{"rendered":"Shares"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\">\n    <title>Adase Ads Ltd \u00b7 Serie A Funding Round<\/title>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\"><\/script>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Alex+Brush&#038;display=swap\" rel=\"stylesheet\">\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n            font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        }\n        body {\n            background: #0c011f;\n            padding: 1.5rem;\n        }\n        .dashboard {\n            max-width: 1400px;\n            margin: 0 auto;\n            background: #fefaf0;\n            border-radius: 2rem;\n            box-shadow: 0 20px 35px -12px rgba(0,0,0,0.4);\n            overflow: hidden;\n            border: 2px solid #c5f82a;\n        }\n        .header {\n            background: #4c1d95;\n            padding: 1rem 2rem;\n            color: white;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            flex-wrap: wrap;\n            gap: 1rem;\n            border-bottom: 5px solid #d9ff33;\n        }\n        .logo {\n            font-size: 1.8rem;\n            font-weight: 800;\n        }\n        .logo span { color: #d9ff33; }\n        .price-panel {\n            background: #2b0f5e;\n            padding: 0.5rem 1rem;\n            border-radius: 60px;\n            display: flex;\n            gap: 1.5rem;\n            font-weight: bold;\n            flex-wrap: wrap;\n        }\n        .price-panel div { white-space: nowrap; }\n        .ticker-wrap {\n            background: #1e1038;\n            padding: 0.8rem 0;\n            border-bottom: 2px solid #d9ff33;\n            border-top: 2px solid #d9ff33;\n            overflow: hidden;\n            white-space: nowrap;\n            position: relative;\n        }\n        .ticker {\n            display: inline-block;\n            animation: scrollTicker 45s linear infinite;\n            white-space: nowrap;\n        }\n        .ticker-item {\n            display: inline-block;\n            background: #2d204c;\n            margin-right: 2rem;\n            padding: 0.4rem 1.2rem;\n            border-radius: 40px;\n            font-size: 0.9rem;\n            font-weight: 500;\n            color: #f0eef7;\n        }\n        .ticker-item.buy { background: #2b4b2b; border-left: 5px solid #d9ff33; }\n        @keyframes scrollTicker {\n            0% { transform: translateX(0); }\n            100% { transform: translateX(-50%); }\n        }\n        .explanation {\n            background: linear-gradient(135deg, #f3eaff, #ffffff);\n            padding: 2rem;\n            margin: 1rem;\n            border-radius: 1.5rem;\n            border-left: 8px solid #d9ff33;\n            border-right: 8px solid #7c3aed;\n        }\n        .explanation h2 {\n            color: #2d1c4a;\n            margin-bottom: 1rem;\n        }\n        .explanation p {\n            color: #2d2642;\n            line-height: 1.6;\n            margin-bottom: 1rem;\n        }\n        .explanation ul {\n            margin-left: 2rem;\n            color: #2d2642;\n        }\n        .explanation li {\n            margin: 0.5rem 0;\n        }\n        .main-grid {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 1.8rem;\n            padding: 2rem;\n        }\n        .stats-card {\n            flex: 2;\n            background: white;\n            border-radius: 1.5rem;\n            padding: 1.5rem;\n            box-shadow: 0 6px 14px rgba(0,0,0,0.05);\n            border-top: 5px solid #7c3aed;\n        }\n        .admin-card {\n            flex: 1.5;\n            background: white;\n            border-radius: 1.5rem;\n            padding: 1.5rem;\n            box-shadow: 0 6px 14px rgba(0,0,0,0.05);\n            border-top: 5px solid #d9ff33;\n        }\n        h3 {\n            color: #2d1c4a;\n            margin-bottom: 1rem;\n            border-left: 6px solid #d9ff33;\n            padding-left: 0.8rem;\n        }\n        button, .btn-download {\n            background: #7c3aed;\n            border: none;\n            color: white;\n            padding: 0.6rem 1.2rem;\n            border-radius: 40px;\n            font-weight: bold;\n            cursor: pointer;\n            transition: 0.1s linear;\n            margin-top: 0.5rem;\n        }\n        button:active { transform: translateY(2px); }\n        .btn-cert {\n            background: #2c5e2e;\n            font-size: 0.75rem;\n            padding: 0.3rem 0.8rem;\n        }\n        .login-form, .entry-form {\n            display: flex;\n            flex-direction: column;\n            gap: 1rem;\n        }\n        input, select {\n            padding: 0.7rem;\n            border-radius: 30px;\n            border: 1px solid #c5b5e6;\n            background: #fefcf5;\n            font-size: 0.9rem;\n        }\n        .error-msg { color: #cc4444; font-size: 0.8rem; }\n        .success-msg { color: #2d6a2d; }\n        .transaction-table { overflow-x: auto; margin-top: 1rem; }\n        table { width: 100%; border-collapse: collapse; font-size: 0.8rem; }\n        th, td { padding: 0.5rem; text-align: left; border-bottom: 1px solid #e0d6f0; }\n        footer {\n            background: #130b24;\n            color: #a99ad6;\n            text-align: center;\n            padding: 1rem;\n            font-size: 0.8rem;\n        }\n        .certificate-container {\n            position: fixed;\n            top: -1000px;\n            left: -1000px;\n            width: 794px;\n            height: 1123px;\n            background: #fffef7;\n            box-shadow: 0 0 0 8px #d9ff33, 0 0 0 12px #7c3aed;\n            border-radius: 20px;\n            padding: 2rem;\n            font-family: 'Georgia', serif;\n            z-index: -1;\n        }\n        .certificate-inner {\n            border: 2px solid #d9ff33;\n            height: 100%;\n            border-radius: 16px;\n            padding: 2rem;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n        }\n        .cert-header {\n            text-align: center;\n            border-bottom: 2px solid #7c3aed;\n            padding-bottom: 1rem;\n        }\n        .cert-header h1 {\n            font-size: 2.5rem;\n            color: #4c1d95;\n        }\n        .cert-body {\n            text-align: center;\n            margin: 2rem 0;\n        }\n        .cert-recipient {\n            font-size: 1.8rem;\n            font-weight: bold;\n            color: #2c1a4a;\n            margin: 1rem 0;\n        }\n        .cert-details {\n            font-size: 1.2rem;\n            margin: 1rem 0;\n            line-height: 1.8;\n        }\n        .cert-signature {\n            margin-top: 2rem;\n            text-align: center;\n        }\n        .signature {\n            font-family: 'Alex Brush', cursive;\n            font-size: 2.5rem;\n            font-weight: bold;\n            color: #1e40af;\n            border-top: 1px dashed #7c3aed;\n            display: inline-block;\n            padding-top: 0.5rem;\n        }\n        .ceo-name {\n            font-size: 1rem;\n            margin-top: 0.2rem;\n            color: #2d2a42;\n        }\n        .seal {\n            width: 120px;\n            height: 120px;\n            border-radius: 50%;\n            background: conic-gradient(from 0deg, #7c3aed, #d9ff33, #ffffff, #7c3aed);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin: 1rem auto;\n            box-shadow: 0 0 0 4px white, 0 0 0 8px #d9ff33;\n        }\n        .seal span {\n            background: rgba(255,255,245,0.9);\n            padding: 0.5rem;\n            border-radius: 50%;\n            font-size: 0.9rem;\n            font-weight: 800;\n            text-align: center;\n        }\n        @media (max-width: 700px) {\n            body { padding: 0.8rem; }\n            .header { flex-direction: column; text-align: center; }\n        }\n    <\/style>\n<\/head>\n<body>\n<div class=\"dashboard\">\n    <div class=\"header\">\n        <div class=\"logo\">Adase<span>Ads<\/span> \u00b7 Serie A Funding<\/div>\n        <div class=\"price-panel\">\n            <div>\ud83d\udc9c Share Price: <span id=\"sharePrice\">UGX 100,000<\/span><\/div>\n            <div>\ud83c\udf4b Participants: <span id=\"participantCount\">0<\/span> \/ 77<\/div>\n            <div>\ud83d\udcca Total Shares Issued: <span id=\"totalSharesIssued\">0<\/span><\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Ticker visible to all -->\n    <div class=\"ticker-wrap\">\n        <div class=\"ticker\" id=\"tickerStrip\"><\/div>\n    <\/div>\n\n    <!-- Compelling explanation for all visitors -->\n    <div class=\"explanation\">\n        <h2>\ud83d\ude80 Why invest in Adase Ads Ltd Serie A?<\/h2>\n        <p>Adase Ads is building the next-generation AI-powered advertising network for African SMEs and global brands. With a proprietary ad engine and a growing community of agents, we are poised to disrupt the digital ad market.<\/p>\n        <ul>\n            <li><strong>\ud83d\udc8e Exclusive opportunity:<\/strong> Only 77 investors will ever participate in this Serie A round.<\/li>\n            <li><strong>\ud83d\udcc8 High growth potential:<\/strong> The African digital ad market is projected to grow 300% by 2028.<\/li>\n            <li><strong>\ud83d\udd12 Fixed price:<\/strong> UGX 100,000 per share \u2013 no dilution, no hidden fees.<\/li>\n            <li><strong>\ud83c\udfc6 First-mover advantage:<\/strong> Get equity in a fast-scaling fintech-adtech hybrid.<\/li>\n            <li><strong>\ud83e\udd1d Community ownership:<\/strong> Join a network of visionary backers.<\/li>\n        <\/ul>\n        <p><strong>\u23f3 Limited slots remaining \u2013 invest now to secure your stake in Africa&#8217;s ad revolution.<\/strong><\/p>\n    <\/div>\n\n    <div class=\"main-grid\">\n        <div class=\"stats-card\">\n            <h3>\ud83d\udcc8 Recent investments<\/h3>\n            <div class=\"transaction-table\">\n                <table id=\"txTable\">\n                    <thead>\n                        <tr><th>Name<\/th><th>Shares<\/th><th>Amount (UGX)<\/th><th>Date<\/th><th>Total owned<\/th><th>Certificate<\/th> <\/tr\n                    <\/thead>\n                    <tbody id=\"txTbody\"><\/tbody>\n                <\/table>\n            <\/div>\n            <button id=\"downloadBtn\" class=\"btn-download\" style=\"background:#2c5e2e;\">\u2b07\ufe0f Download CSV (all investments)<\/button>\n        <\/div>\n\n        <div class=\"admin-card\">\n            <h3>\ud83d\udd10 Admin Access (Investment Registration)<\/h3>\n            <div id=\"loginSection\">\n                <div class=\"login-form\">\n                    <input type=\"email\" id=\"loginEmail\" placeholder=\"Admin Email\" autocomplete=\"off\">\n                    <input type=\"password\" id=\"loginPassword\" placeholder=\"Admin Password\" autocomplete=\"off\">\n                    <button id=\"loginBtnAdmin\">Login to Register Investments<\/button>\n                    <div id=\"loginMsg\" class=\"error-msg\"><\/div>\n                <\/div>\n            <\/div>\n            <div id=\"entrySection\" style=\"display: none;\">\n                <h4>\u2795 Register New Investment<\/h4>\n                <div class=\"entry-form\">\n                    <input type=\"text\" id=\"fullName\" placeholder=\"Full name\">\n                    <input type=\"email\" id=\"userEmail\" placeholder=\"Email address\">\n                    <input type=\"text\" id=\"sponsorCode\" placeholder=\"Sponsor \/ Referral Code (optional)\">\n                    <input type=\"number\" id=\"shareAmount\" placeholder=\"Number of shares (min 1)\" step=\"1\" min=\"1\" value=\"1\">\n                    <button id=\"submitTxBtn\">\u2714 Buy Shares (UGX 100,000 each)<\/button>\n                    <div id=\"entryMsg\" class=\"error-msg\"><\/div>\n                    <button id=\"logoutBtn\" style=\"background:#5e4b8b;\">\ud83d\udeaa Logout<\/button>\n                    <div id=\"remainingMsg\" style=\"margin-top:0.5rem; font-size:0.8rem; color:#4c1d95;\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <footer>\ud83d\udc9c \ud83c\udf4b Adase Ads Ltd Serie A Funding Round \u2013 Maximum 77 participants. Price per share fixed at UGX 100,000. Admin login required to register investments.<\/footer>\n<\/div>\n\n<div id=\"certificateTemplate\" class=\"certificate-container\" style=\"display: none;\">\n    <div class=\"certificate-inner\">\n        <div class=\"cert-header\">\n            <h1>ADASE ADS LTD<\/h1>\n            <p>Serie A Equity Certificate<\/p>\n        <\/div>\n        <div class=\"cert-body\">\n            <div class=\"seal\"><span>Adase<br>Equity<\/span><\/div>\n            <div class=\"cert-recipient\" id=\"certName\"><\/div>\n            <div class=\"cert-details\" id=\"certDetails\"><\/div>\n            <div class=\"cert-details\" id=\"certSponsor\"><\/div>\n            <div class=\"cert-signature\">\n                <div class=\"signature\" id=\"certSignature\">Verified<\/div>\n                <div class=\"ceo-name\">Asanasio Namanya<br>Chief Executive Officer<\/div>\n            <\/div>\n        <\/div>\n        <div class=\"cert-footer\">\n            <span>This certificate confirms participation in the Serie A Funding Round.<\/span>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ ---------- DATA MODELS ----------\n    let users = [];          \/\/ { email, name, sponsorCode, shares }\n    let transactions = [];   \/\/ { id, name, email, shares, amountUGX, date, totalSharesOwned, sponsorCode }\n    const SHARE_PRICE_UGX = 100000;\n    const MAX_PARTICIPANTS = 77;\n\n    function saveData() {\n        localStorage.setItem('adase_users', JSON.stringify(users));\n        localStorage.setItem('adase_transactions', JSON.stringify(transactions));\n    }\n\n    function loadData() {\n        const storedUsers = localStorage.getItem('adase_users');\n        const storedTx = localStorage.getItem('adase_transactions');\n        if (storedUsers) users = JSON.parse(storedUsers);\n        if (storedTx) transactions = JSON.parse(storedTx);\n\n        if (users.length === 0) {\n            \/\/ Seed demo data with 2 participants\n            users = [\n                { email: \"alice@example.com\", name: \"Alice Wonder\", sponsorCode: \"ALICE01\", shares: 10 },\n                { email: \"bob@builder.com\", name: \"Bob Builder\", sponsorCode: \"BOB22\", shares: 5 }\n            ];\n            const now = new Date().toISOString().slice(0,10);\n            transactions = [\n                { id: Date.now()+1, name: \"Alice Wonder\", email: \"alice@example.com\", shares: 10, amountUGX: 10*SHARE_PRICE_UGX, date: now, totalSharesOwned: 10, sponsorCode: \"ALICE01\" },\n                { id: Date.now()+2, name: \"Bob Builder\", email: \"bob@builder.com\", shares: 5, amountUGX: 5*SHARE_PRICE_UGX, date: now, totalSharesOwned: 5, sponsorCode: \"BOB22\" }\n            ];\n            saveData();\n        }\n        updateUI();\n    }\n\n    function getUserByEmail(email) { return users.find(u => u.email === email); }\n    function addOrUpdateUser(email, name, sponsorCode, sharesToAdd) {\n        let user = users.find(u => u.email === email);\n        if (!user) {\n            if (users.length >= MAX_PARTICIPANTS) return { success: false, msg: `Maximum ${MAX_PARTICIPANTS} participants reached. No new investors allowed.` };\n            user = { email, name, sponsorCode, shares: 0 };\n            users.push(user);\n        } else {\n            user.name = name;\n            if (sponsorCode) user.sponsorCode = sponsorCode;\n        }\n        user.shares += sharesToAdd;\n        saveData();\n        return { success: true, user };\n    }\n\n    function processInvestment(fullName, email, sponsorCode, sharesNum) {\n        if (isNaN(sharesNum) || sharesNum <= 0) return { success: false, msg: \"Shares must be a positive integer\" };\n        \n        let existingUser = getUserByEmail(email);\n        if (!existingUser) {\n            if (users.length >= MAX_PARTICIPANTS) {\n                return { success: false, msg: `Sorry, the maximum of ${MAX_PARTICIPANTS} participants has been reached. No new investors can join.` };\n            }\n        }\n        \n        const result = addOrUpdateUser(email, fullName, sponsorCode, sharesNum);\n        if (!result.success) return result;\n        \n        const user = result.user;\n        const amountUGX = sharesNum * SHARE_PRICE_UGX;\n        const txDate = new Date().toISOString().slice(0,10);\n        const newTx = {\n            id: Date.now(),\n            name: fullName,\n            email,\n            shares: sharesNum,\n            amountUGX: amountUGX,\n            date: txDate,\n            totalSharesOwned: user.shares,\n            sponsorCode: sponsorCode || ''\n        };\n        transactions.unshift(newTx);\n        saveData();\n        updateUI();\n        return { success: true, msg: `${fullName} bought ${sharesNum} share(s) for UGX ${amountUGX.toLocaleString()}. Total shares now: ${user.shares}`, tx: newTx };\n    }\n\n    async function generateCertificate(tx) {\n        const template = document.getElementById('certificateTemplate');\n        const clone = template.cloneNode(true);\n        clone.style.display = 'block';\n        clone.style.position = 'fixed';\n        clone.style.top = '0';\n        clone.style.left = '0';\n        clone.style.zIndex = '9999';\n        document.body.appendChild(clone);\n\n        clone.querySelector('#certName').innerText = tx.name;\n        clone.querySelector('#certDetails').innerHTML = `<strong>${tx.shares} shares<\/strong> at UGX ${SHARE_PRICE_UGX.toLocaleString()} each<br>Total investment: UGX ${tx.amountUGX.toLocaleString()}<br>Total shares now held: <strong>${tx.totalSharesOwned}<\/strong>`;\n        clone.querySelector('#certSponsor').innerHTML = `Sponsor Code: <strong>${tx.sponsorCode || '\u2014'}<\/strong>`;\n        await new Promise(r => setTimeout(r, 200));\n        const canvas = await html2canvas(clone, { scale: 2, backgroundColor: '#fffef7' });\n        const link = document.createElement('a');\n        link.download = `Adase_Certificate_${tx.name.replace(\/\\s\/g,'_')}_${tx.id}.png`;\n        link.href = canvas.toDataURL('image\/png');\n        link.click();\n        document.body.removeChild(clone);\n    }\n\n    function updateUI() {\n        const participantCount = users.length;\n        const totalShares = users.reduce((sum, u) => sum + u.shares, 0);\n        document.getElementById('participantCount').innerText = `${participantCount}`;\n        document.getElementById('totalSharesIssued').innerText = totalShares;\n        document.getElementById('sharePrice').innerText = `UGX ${SHARE_PRICE_UGX.toLocaleString()}`;\n        \n        const remainingSlots = MAX_PARTICIPANTS - participantCount;\n        const remainingMsg = document.getElementById('remainingMsg');\n        if (remainingMsg) {\n            if (remainingSlots > 0) {\n                remainingMsg.innerHTML = `\u2705 ${remainingSlots} slot(s) remaining out of ${MAX_PARTICIPANTS} maximum participants.`;\n                remainingMsg.style.color = \"#2d6a2d\";\n            } else {\n                remainingMsg.innerHTML = `\ud83d\udd34 The maximum of ${MAX_PARTICIPANTS} participants has been reached. No new investors can join.`;\n                remainingMsg.style.color = \"#cc4444\";\n            }\n        }\n\n        const tbody = document.getElementById('txTbody');\n        tbody.innerHTML = '';\n        transactions.slice(0, 30).forEach(tx => {\n            const row = tbody.insertRow();\n            row.insertCell(0).innerText = tx.name;\n            row.insertCell(1).innerText = tx.shares;\n            row.insertCell(2).innerText = `UGX ${tx.amountUGX.toLocaleString()}`;\n            row.insertCell(3).innerText = tx.date;\n            row.insertCell(4).innerText = tx.totalSharesOwned;\n            const certCell = row.insertCell(5);\n            const certBtn = document.createElement('button');\n            certBtn.innerText = '\ud83d\udcc4 Cert';\n            certBtn.className = 'btn-cert';\n            certBtn.onclick = (function(t) { return () => generateCertificate(t); })(tx);\n            certCell.appendChild(certBtn);\n        });\n\n        const tickerDiv = document.getElementById('tickerStrip');\n        tickerDiv.innerHTML = '';\n        transactions.slice(0, 40).forEach(tx => {\n            const span = document.createElement('span');\n            span.className = 'ticker-item buy';\n            span.innerHTML = `\ud83c\udf89 ${tx.name} bought ${tx.shares} share(s) (UGX ${tx.amountUGX.toLocaleString()}) on ${tx.date} \u2192 now owns ${tx.totalSharesOwned} shares`;\n            tickerDiv.appendChild(span);\n            tickerDiv.appendChild(span.cloneNode(true));\n        });\n        if (transactions.length === 0) tickerDiv.innerHTML = '<span class=\"ticker-item\">\u2728 No investments yet \u2014 be the first participant<\/span>';\n    }\n\n    function downloadCSV() {\n        let csvRows = [[\"Name\",\"Email\",\"Shares\",\"Amount (UGX)\",\"Date\",\"Total Shares Owned\",\"Sponsor Code\"]];\n        transactions.forEach(tx => {\n            csvRows.push([tx.name, tx.email, tx.shares, tx.amountUGX, tx.date, tx.totalSharesOwned, tx.sponsorCode || \"\"]);\n        });\n        const csvContent = csvRows.map(row => row.join(\",\")).join(\"\\n\");\n        const blob = new Blob([csvContent], { type: \"text\/csv\" });\n        const link = document.createElement(\"a\");\n        const url = URL.createObjectURL(blob);\n        link.href = url;\n        link.download = `adase_serieA_investments_${new Date().toISOString().slice(0,10)}.csv`;\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n        URL.revokeObjectURL(url);\n    }\n\n    \/\/ ---------- ADMIN LOGIN (hidden credentials) ----------\n    let loggedIn = false;\n    const adminEmail = \"shares@cashchat.se\";\n    const adminPassword = \"Equity.King2026\";\n\n    function checkLogin() {\n        const emailInput = document.getElementById('loginEmail').value.trim();\n        const passInput = document.getElementById('loginPassword').value;\n        if (emailInput === adminEmail && passInput === adminPassword) {\n            loggedIn = true;\n            document.getElementById('loginSection').style.display = 'none';\n            document.getElementById('entrySection').style.display = 'block';\n            document.getElementById('loginMsg').innerHTML = '<span style=\"color:#2d6a2d;\">\u2705 Login successful. You can now register investments.<\/span>';\n            setTimeout(() => { document.getElementById('loginMsg').innerHTML = ''; }, 2000);\n        } else {\n            document.getElementById('loginMsg').innerText = '\u274c Invalid admin credentials. Access denied.';\n        }\n    }\n\n    function logout() {\n        loggedIn = false;\n        document.getElementById('loginSection').style.display = 'block';\n        document.getElementById('entrySection').style.display = 'none';\n        document.getElementById('loginEmail').value = '';\n        document.getElementById('loginPassword').value = '';\n        document.getElementById('entryMsg').innerText = '';\n        document.getElementById('loginMsg').innerText = '';\n    }\n\n    function submitEntry() {\n        if (!loggedIn) { \n            document.getElementById('entryMsg').innerText = '\u26a0\ufe0f Admin login required to register investments.';\n            return; \n        }\n        const fullName = document.getElementById('fullName').value.trim();\n        const email = document.getElementById('userEmail').value.trim();\n        const sponsor = document.getElementById('sponsorCode').value.trim();\n        const sharesRaw = document.getElementById('shareAmount').value;\n        const sharesNum = Number(sharesRaw);\n        if (!fullName || !email) { document.getElementById('entryMsg').innerText = \"Full name and email required\"; return; }\n        if (isNaN(sharesNum) || sharesNum <= 0 || !Number.isInteger(sharesNum)) { document.getElementById('entryMsg').innerText = \"Enter a positive integer number of shares\"; return; }\n        \n        const result = processInvestment(fullName, email, sponsor, sharesNum);\n        if (result.success) {\n            document.getElementById('entryMsg').innerHTML = `<span class=\"success-msg\">\u2705 ${result.msg}<\/span>`;\n            document.getElementById('fullName').value = '';\n            document.getElementById('userEmail').value = '';\n            document.getElementById('sponsorCode').value = '';\n            document.getElementById('shareAmount').value = '1';\n            updateUI();\n            if (result.tx) generateCertificate(result.tx);\n        } else {\n            document.getElementById('entryMsg').innerText = result.msg;\n        }\n    }\n\n    \/\/ Initialisation\n    loadData();\n\n    const loginBtn = document.getElementById('loginBtnAdmin');\n    const logoutBtn = document.getElementById('logoutBtn');\n    const submitBtn = document.getElementById('submitTxBtn');\n    const downloadBtn = document.getElementById('downloadBtn');\n\n    if (loginBtn) loginBtn.addEventListener('click', checkLogin);\n    if (logoutBtn) logoutBtn.addEventListener('click', logout);\n    if (submitBtn) submitBtn.addEventListener('click', submitEntry);\n    if (downloadBtn) downloadBtn.addEventListener('click', downloadCSV);\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Adase Ads Ltd \u00b7 Serie A Funding Round AdaseAds \u00b7 Serie A Funding \ud83d\udc9c Share Price: UGX 100,000 \ud83c\udf4b Participants: 0 \/ 77 \ud83d\udcca Total Shares Issued: 0 \ud83d\ude80 Why invest in Adase Ads Ltd Serie A? Adase Ads is building the next-generation AI-powered advertising network for African SMEs and global brands. With a proprietary [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-100","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":3,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages\/100\/revisions"}],"predecessor-version":[{"id":104,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages\/100\/revisions\/104"}],"wp:attachment":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/media?parent=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}