{"id":3200,"date":"2025-10-31T10:25:30","date_gmt":"2025-10-31T10:25:30","guid":{"rendered":"https:\/\/lotterylottowin.com\/?page_id=3200"},"modified":"2026-04-16T23:50:51","modified_gmt":"2026-04-16T23:50:51","slug":"tzoker","status":"publish","type":"page","link":"https:\/\/lotterylottowin.com\/el\/tzoker\/","title":{"rendered":"\u03a4\u03b6\u03cc\u03ba\u03b5\u03c1"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3200\" class=\"elementor elementor-3200\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bb73167 e-flex e-con-boxed e-con e-parent\" data-id=\"bb73167\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b8c539 elementor-widget elementor-widget-html\" data-id=\"5b8c539\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div style=\"position:relative;width:100%;height:260px;overflow:hidden;border-radius:12px;\">\r\n  \r\n  <img decoding=\"async\" \r\n    src=\"https:\/\/lotterylottowin.com\/wp-content\/uploads\/2026\/02\/Untitled-design-1-6.webp\" \r\n    alt=\"Latest Tzoker Results and winning numbers today\"\r\n    style=\"\r\n      width:100%;\r\n      height:100%;\r\n      object-fit:cover;\r\n      object-position:center center;\r\n      display:block;\r\n    \"\r\n  >\r\n\r\n  <div style=\"\r\n    position:absolute;\r\n    inset:0;\r\n    background:linear-gradient(to bottom, rgba(0,0,0,0.15), rgba(0,0,0,0.65));\r\n  \"><\/div>\r\n\r\n  <div style=\"\r\n    position:absolute;\r\n    bottom:20px;\r\n    left:20px;\r\n    color:#ffffff;\r\n    z-index:2;\r\n  \">\r\n    <h1 style=\"margin:0;font-size:28px;font-weight:700;\">\r\n      Latest Tzoker Results & Winning Numbers Today\r\n    <\/h1>\r\n    <p style=\"margin-top:6px;font-size:14px;opacity:0.9;\">\r\n      Winning numbers, jackpot amounts & full prize breakdown after every draw\r\n    <\/p>\r\n  <\/div>\r\n\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-831ce12 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"831ce12\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7e05121 e-flex e-con-boxed e-con e-parent\" data-id=\"7e05121\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7a00ce elementor-widget elementor-widget-shortcode\" data-id=\"a7a00ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><p><strong>\u0391\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03a4\u03b6\u03cc\u03ba\u03b5\u03c1 \u039f\u03a0\u0391\u03a0 (JOKER)<\/strong><\/p>\n            <p><strong>\u039a\u039b\u0397\u03a1\u03a9\u03a3\u0397 \u03a4\u0396\u039f\u039a\u0395\u03a1 3054 \u03a3\u03a4\u0399\u03a3 16\/04\/2026<\/strong><\/p>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d9a4358 e-flex e-con-boxed e-con e-parent\" data-id=\"d9a4358\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b6a4b6e elementor-widget elementor-widget-html\" data-id=\"b6a4b6e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"tzokerDraw\">\r\n  <span class=\"ball\" data-index=\"0\">42<\/span>\r\n  <span class=\"ball\" data-index=\"1\">40<\/span>\r\n  <span class=\"ball\" data-index=\"2\">18<\/span>\r\n  <span class=\"ball\" data-index=\"3\">25<\/span>\r\n  <span class=\"ball\" data-index=\"4\">16<\/span>\r\n  <span class=\"ball tzoker\" data-joker=\"true\">8<\/span>\r\n<\/div>\r\n\r\n<script>\r\n  document.addEventListener(\"DOMContentLoaded\", () => {\r\n    const container = document.getElementById(\"tzokerDraw\");\r\n    const balls = Array.from(container.querySelectorAll(\".ball:not(.tzoker)\"));\r\n    const joker = container.querySelector(\".tzoker\");\r\n\r\n    \/\/ Extract the numeric values\r\n    const numbers = balls.map(b => parseInt(b.textContent, 10));\r\n\r\n    \/\/ Sort them ascending\r\n    numbers.sort((a, b) => a - b);\r\n\r\n    \/\/ Replace text in the same elements\r\n    balls.forEach((b, i) => {\r\n      b.textContent = numbers[i];\r\n    });\r\n\r\n    \/\/ Reorder DOM so the sorted balls appear before the Joker\r\n    balls.forEach(b => container.insertBefore(b, joker));\r\n  });\r\n<\/script>\r\n\r\n<style>\r\n  #tzokerDraw {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    gap: 8px;\r\n    flex-wrap: wrap;\r\n    text-align: center;\r\n  }\r\n\r\n  .ball {\r\n    display: inline-block;\r\n    width: 50px;\r\n    height: 50px;\r\n    line-height: 50px;\r\n    border-radius: 50%;\r\n    background-color: white;\r\n    color: black;\r\n    font-weight: bold;\r\n    font-size: 18px;\r\n    box-shadow: 0 0 5px rgba(0,0,0,0.5);\r\n    text-align: center;\r\n  }\r\n\r\n  .tzoker {\r\n    background-color: #ffcc00;\r\n    color: black;\r\n  }\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0dc214b e-flex e-con-boxed e-con e-parent\" data-id=\"0dc214b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e0d7c8d elementor-widget elementor-widget-html\" data-id=\"e0d7c8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"joker-results\">Loading Joker data\u2026<\/div>\r\n\r\n<script>\r\n(async function(){\r\n  const container = document.getElementById(\"joker-results\");\r\n  const gameId = 5104;  \/\/ Joker\r\n  const endpoint = `https:\/\/api.opap.gr\/draws\/v3.0\/${gameId}\/last-result-and-active`;\r\n\r\n  function fmtEUR(val, decimals = 0) {\r\n    if (val == null) return \"-\";\r\n    return Number(val).toLocaleString('el-GR', { minimumFractionDigits: decimals, maximumFractionDigits: decimals }) + '\u20ac';\r\n  }\r\n\r\n  function formatPrize(cat) {\r\n    if (!cat) return \"-\";\r\n    \/\/ If winners = 0 and id = first category, interpret as jackpot\r\n    if ((cat.winners === 0 || cat.winners === null) && cat.id === 1) {\r\n      return \"JACKPOT\";\r\n    }\r\n    if (cat.fixed && cat.fixed > 0) return fmtEUR(cat.fixed, 0);\r\n    if (cat.divident && cat.divident > 0) return fmtEUR(cat.divident, 2);\r\n    if (cat.jackpot && cat.jackpot > 0) return fmtEUR(cat.jackpot, 0);\r\n    return \"-\";\r\n  }\r\n\r\n  try {\r\n    const resp = await fetch(endpoint);\r\n    if (!resp.ok) throw new Error(\"HTTP \" + resp.status);\r\n    const data = await resp.json();\r\n\r\n    const last = data.last;\r\n    const active = data.active;\r\n\r\n    const drawId = last.visualDraw ?? last.drawId;\r\n    const dt = new Date(last.drawTime);\r\n    const day = dt.getDate(), month = dt.getMonth()+1, year = dt.getFullYear();\r\n\r\n    const main = last.winningNumbers.list || [];\r\n    const bonus = last.winningNumbers.bonus || [];\r\n\r\n    const cats = last.prizeCategories || [];\r\n\r\n    \/\/ Determine displayed jackpot (prefer minimumDistributed where available)\r\n    let jackpotDisplay = null;\r\n    if (active) {\r\n      const activeCat1 = active.prizeCategories.find(c => c.id === 1);\r\n      if (activeCat1) {\r\n        if (activeCat1.minimumDistributed && activeCat1.minimumDistributed > 0) {\r\n          jackpotDisplay = fmtEUR(activeCat1.minimumDistributed, 0);\r\n        } else if (activeCat1.jackpot) {\r\n          jackpotDisplay = fmtEUR(activeCat1.jackpot, 0);\r\n        }\r\n      }\r\n    }\r\n    if (!jackpotDisplay) {\r\n      const lastCat1 = cats.find(c => c.id === 1);\r\n      if (lastCat1) {\r\n        if (lastCat1.minimumDistributed && lastCat1.minimumDistributed > 0) {\r\n          jackpotDisplay = fmtEUR(lastCat1.minimumDistributed, 0);\r\n        } else if (lastCat1.jackpot) {\r\n          jackpotDisplay = fmtEUR(lastCat1.jackpot, 0);\r\n        }\r\n      }\r\n    }\r\n\r\n    \/\/ Build HTML\r\n    let html = `<h3>OPAP Joker Results (JOKER)<\/h3>`;\r\n    html += `<p>Draw <strong>${drawId}<\/strong> of OPAP Joker took place on <strong>${day}\/${month}\/${year}<\/strong> and the lucky numbers drawn are <strong>${main.join(\", \")}<\/strong>, with Joker number <strong>${bonus.join(\", \")}<\/strong>.<\/p>`;\r\n\r\n    const firstCat = cats.find(c => c.id === 1);\r\n    if (firstCat && (firstCat.winners === 0 || firstCat.winners === null)) {\r\n      if (jackpotDisplay && active) {\r\n        const nd = new Date(active.drawTime);\r\n        html += `<p>Due to no winners in the first category, there is a jackpot of <strong>${jackpotDisplay}<\/strong> for the next draw, which will take place on <strong>${nd.getDate()}\/${nd.getMonth()+1}\/${nd.getFullYear()}<\/strong>.<\/p>`;\r\n      }\r\n    }\r\n\r\n    html += `<h4>CATEGORY - DISTRIBUTED WINNINGS<\/h4>`;\r\n    html += `<table style=\"width:100%; border-collapse:collapse; text-align:center;\">\r\n      <thead><tr style=\"background:#f2f2f2; color:#000; font-weight:bold;\">\r\n        <th style=\"border:1px solid #ccc; padding:6px;\">Category<\/th>\r\n        <th style=\"border:1px solid #ccc; padding:6px;\">Winners<\/th>\r\n        <th style=\"border:1px solid #ccc; padding:6px;\">Prizes<\/th>\r\n      <\/tr><\/thead><tbody>`;\r\n\r\n    const labelMap = {\r\n      1: '5+1',\r\n      2: '5',\r\n      3: '4+1',\r\n      4: '4',\r\n      5: '3+1',\r\n      6: '3',\r\n      7: '2+1',\r\n      8: '1+1',\r\n      9: '2'\r\n    };\r\n\r\n    for (const cat of cats) {\r\n      const label = labelMap[cat.id] ?? cat.id;\r\n      const winners = (cat.winners === 0) ? \"-\" : (cat.winners ?? \"-\");\r\n      const prizeText = formatPrize(cat);\r\n      html += `<tr>\r\n        <td style=\"border:1px solid #ccc; padding:6px;\">${label}<\/td>\r\n        <td style=\"border:1px solid #ccc; padding:6px;\">${winners}<\/td>\r\n        <td style=\"border:1px solid #ccc; padding:6px;\">${prizeText}<\/td>\r\n      <\/tr>`;\r\n    }\r\n\r\n    html += `<\/tbody><\/table>`;\r\n\r\n    const totalCols = last.wagerStatistics?.columns ?? '-';\r\n    html += `<p><strong>Total Columns:<\/strong> ${totalCols}<\/p>`;\r\n\r\n    if (active) {\r\n      const nd = new Date(active.drawTime);\r\n      html += `<p>Next Joker Draw: <strong>${nd.getDate()}\/${nd.getMonth()+1}\/${nd.getFullYear()}<\/strong><\/p>`;\r\n      if (jackpotDisplay) {\r\n        html += `<p>JACKPOT Amount: <strong>${jackpotDisplay}<\/strong><\/p>`;\r\n      }\r\n    }\r\n\r\n    container.innerHTML = html;\r\n\r\n  } catch (err) {\r\n    console.error(\"Joker fetch error:\", err);\r\n    container.innerHTML = `<p>Data is temporarily unavailable.<\/p>`;\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eab3bc7 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"eab3bc7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f34c9c7 elementor-widget elementor-widget-html\" data-id=\"f34c9c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"utf-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n  <title>TZOKER Winner Checker<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      margin: 0;\r\n      padding: 24px 16px;\r\n      background: #0b0f19;\r\n      color: #ffffff;\r\n    }\r\n    .checker-wrap {\r\n      max-width: 980px;\r\n      margin: 0 auto;\r\n    }\r\n    .checker-card {\r\n      background: transparent;\r\n      border-radius: 16px;\r\n      padding: 24px;\r\n    }\r\n    .checker-title {\r\n      margin: 0 0 8px;\r\n      text-align: center;\r\n      font-size: 28px;\r\n      color: #ffffff;\r\n    }\r\n    .checker-subtitle {\r\n      margin: 0 0 20px;\r\n      text-align: center;\r\n      color: #e5e7eb;\r\n      font-size: 14px;\r\n    }\r\n    .checker-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(5, 72px);\r\n      justify-content: center;\r\n      gap: 10px;\r\n      margin-bottom: 14px;\r\n    }\r\n    .checker-grid input,\r\n    .checker-optional input {\r\n      width: 100%;\r\n      padding: 12px 10px;\r\n      border: 1px solid #cbd5e1;\r\n      border-radius: 10px;\r\n      font-size: 16px;\r\n      text-align: center;\r\n      color: #111827;\r\n      background: #ffffff;\r\n      box-sizing: border-box;\r\n    }\r\n    .checker-optional {\r\n      display: flex;\r\n      justify-content: center;\r\n      gap: 10px;\r\n      margin-bottom: 16px;\r\n      flex-wrap: wrap;\r\n    }\r\n    .checker-optional label {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      color: #e5e7eb;\r\n      font-size: 14px;\r\n    }\r\n    .checker-optional input {\r\n      width: 100px;\r\n    }\r\n    .checker-actions {\r\n      display: flex;\r\n      justify-content: center;\r\n      gap: 10px;\r\n      flex-wrap: wrap;\r\n      margin-bottom: 14px;\r\n    }\r\n    .checker-btn {\r\n      border: 0;\r\n      border-radius: 10px;\r\n      padding: 10px 14px;\r\n      font-size: 15px;\r\n      cursor: pointer;\r\n      color: #000;\r\n      background: #ffffff;\r\n    }\r\n    .checker-btn.secondary {\r\n      background: #e5e7eb;\r\n    }\r\n    .checker-status {\r\n      text-align: center;\r\n      color: #e5e7eb;\r\n      font-size: 14px;\r\n      margin-bottom: 18px;\r\n      min-height: 20px;\r\n    }\r\n    .checker-error {\r\n      text-align: center;\r\n      color: #fca5a5;\r\n      font-weight: 700;\r\n      margin-bottom: 16px;\r\n      min-height: 20px;\r\n    }\r\n    .summary-box {\r\n      background: rgba(255,255,255,0.08);\r\n      border: 1px solid rgba(255,255,255,0.14);\r\n      border-radius: 12px;\r\n      padding: 16px;\r\n      margin-bottom: 18px;\r\n    }\r\n    .summary-box h3 {\r\n      margin: 0 0 8px;\r\n      font-size: 18px;\r\n      color: #ffffff;\r\n      text-align: center;\r\n    }\r\n    .summary-box p {\r\n      margin: 0;\r\n      text-align: center;\r\n      color: #e5e7eb;\r\n    }\r\n    .results-list {\r\n      display: grid;\r\n      gap: 14px;\r\n    }\r\n    .result-item {\r\n      background: rgba(255,255,255,0.05);\r\n      border: 1px solid rgba(255,255,255,0.12);\r\n      border-radius: 14px;\r\n      padding: 16px;\r\n    }\r\n    .result-head {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      align-items: center;\r\n      gap: 10px;\r\n      flex-wrap: wrap;\r\n      margin-bottom: 12px;\r\n    }\r\n    .result-draw {\r\n      font-weight: 700;\r\n      color: #ffffff;\r\n    }\r\n    .result-tier {\r\n      background: #16a34a;\r\n      color: #fff;\r\n      padding: 6px 10px;\r\n      border-radius: 999px;\r\n      font-size: 13px;\r\n      font-weight: 700;\r\n    }\r\n    .ball-row {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 8px;\r\n      flex-wrap: wrap;\r\n      margin-bottom: 10px;\r\n    }\r\n    .ball {\r\n      width: 42px;\r\n      height: 42px;\r\n      border-radius: 50%;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      font-weight: 700;\r\n      border: 2px solid rgba(15, 23, 42, 0.45);\r\n      box-sizing: border-box;\r\n      background: #ffffff;\r\n      color: #0f172a;\r\n    }\r\n    .ball.match {\r\n      background: #ffffff;\r\n      color: #000000;\r\n      border-color: #94a3b8;\r\n    }\r\n    .ball.tzoker {\r\n      background: #facc15;\r\n      color: #000000;\r\n      border-color: #eab308;\r\n    }\r\n    .ball-label {\r\n      font-size: 12px;\r\n      color: #cbd5e1;\r\n      font-weight: 700;\r\n    }\r\n    .result-meta {\r\n      text-align: center;\r\n      color: #e5e7eb;\r\n      font-size: 14px;\r\n    }\r\n    .empty-state {\r\n      text-align: center;\r\n      color: #e5e7eb;\r\n      background: rgba(255,255,255,0.04);\r\n      border: 1px dashed rgba(255,255,255,0.25);\r\n      border-radius: 12px;\r\n      padding: 18px;\r\n    }\r\n    @media (max-width: 720px) {\r\n      .checker-grid {\r\n        grid-template-columns: repeat(3, 72px);\r\n      }\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"checker-wrap\">\r\n    <div class=\"checker-card\">\r\n      <h1 class=\"checker-title\">TZOKER Winner Checker<\/h1>\r\n      <p class=\"checker-subtitle\">Enter 5 main numbers and your TZOKER number to see if this ticket would have won in the stored TZOKER draws.<\/p>\r\n\r\n      <div class=\"checker-grid\" id=\"checkerInputs\">\r\n        <input type=\"number\" min=\"1\" max=\"45\" placeholder=\"1\">\r\n        <input type=\"number\" min=\"1\" max=\"45\" placeholder=\"2\">\r\n        <input type=\"number\" min=\"1\" max=\"45\" placeholder=\"3\">\r\n        <input type=\"number\" min=\"1\" max=\"45\" placeholder=\"4\">\r\n        <input type=\"number\" min=\"1\" max=\"45\" placeholder=\"5\">\r\n      <\/div>\r\n\r\n      <div class=\"checker-optional\">\r\n        <label>\r\n          TZOKER\r\n          <input type=\"number\" id=\"tzokerInput\" min=\"1\" max=\"20\" placeholder=\"1-20\">\r\n        <\/label>\r\n      <\/div>\r\n\r\n      <div class=\"checker-actions\">\r\n        <button class=\"checker-btn\" id=\"checkBtn\">Check Ticket<\/button>\r\n        <button class=\"checker-btn secondary\" id=\"clearBtn\">Clear<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"checker-status\" id=\"checkerStatus\">Loading TZOKER draw data...<\/div>\r\n      <div class=\"checker-error\" id=\"checkerError\"><\/div>\r\n\r\n      <div id=\"summaryBox\"><\/div>\r\n      <div class=\"results-list\" id=\"resultsList\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    (function () {\r\n      const SHEETS = {\r\n        2026: \"11RlTaIk1rxI1dCIq1A9MzRR7u72O8FNC\",\r\n        2025: \"12rPo16GdIgGHXCGu_HNX0NDfr9fEycJD\",\r\n        2024: \"1SoxMrjSDSeMrxc3AS17yPpkyLohSRKbl\",\r\n        2023: \"1Dx4wzZQZi_tCEEdlGRtDNjbhMbZcOyAm\",\r\n        2022: \"1hm8z0qVeuMBmLTBHQHcm6sr6UNeE1jiu\",\r\n        2021: \"1W97mzNCjZk3CMbtqz8ikTHcojY1N-U0C\",\r\n        2020: \"1Fxf19MAv-NrFj67prgRS3-ZG1YAR65Dr\",\r\n        2019: \"1kHUKpQT-9XXCT1AjuU-WmZxG5Bk3CI7d\",\r\n        2018: \"1d144XE0GBmzcOhFDsL58Ju44AkpVybWw\",\r\n        2017: \"1bITW1Nd86B4c5AJPJwGjPrToNNz7s2cH\",\r\n        2016: \"1dwujKoJBGLes0GP6AacV8UdznWUJc4ht\",\r\n        2015: \"1l5dsi0kRn7GTBf0R2U0Fb6OGaY6wUD8d\",\r\n        2014: \"130JrSZJNEPK2Q4HrXkZaG-sy32wdOoZf\",\r\n        2013: \"1W3xW9pmLWURre-exdyHxaqNZdi4j_nnQ\",\r\n        2012: \"1IRppYXU_k0uogoNMiqMQtEz5qoTgci2o\",\r\n        2011: \"1v81OHOFMrknsgMsZYTRjo0uFvpnCBylF\",\r\n        2010: \"1WxJ5hAtnidJxo4Dftwo2kUzLf6rZNzuV\",\r\n        2009: \"1fwKnwCLRJEwcUPzgw6ZghZy9w0kfNrge\",\r\n        2008: \"1Z9RvkmDE2EIKhOllWFfIz40vybQHCQFF\",\r\n        2007: \"1QBFtUk4Yam5TocDivru6YEGdlbH4BmfH\",\r\n        2006: \"1QwIj6QA7EbAg6Lm2UHwNyUaN32OZwmeG\",\r\n        2005: \"1JaZgLGh4AWPmshOrwIfdA1gIGFiPmjM-\",\r\n        2004: \"1b4fHU2zsDkM1Nn6Zmfvn2HMIFEBxIvt6\",\r\n        2003: \"1nTHbsD-amuytgcH6VpfBgRBY50GhHq33\"\r\n      };\r\n      const CACHE_PREFIX = \"tzoker-winner-checker-v1-\";\r\n      const CACHE_MAX_AGE_MS = 6 * 60 * 60 * 1000;\r\n      const LOAD_CONCURRENCY = 4;\r\n\r\n      const inputEls = Array.from(document.querySelectorAll(\"#checkerInputs input\"));\r\n      const tzokerInput = document.getElementById(\"tzokerInput\");\r\n      const checkBtn = document.getElementById(\"checkBtn\");\r\n      const clearBtn = document.getElementById(\"clearBtn\");\r\n      const checkerStatus = document.getElementById(\"checkerStatus\");\r\n      const checkerError = document.getElementById(\"checkerError\");\r\n      const summaryBox = document.getElementById(\"summaryBox\");\r\n      const resultsList = document.getElementById(\"resultsList\");\r\n\r\n      const yearDrawCache = {};\r\n      let allDraws = [];\r\n\r\n      function readYearCache(year) {\r\n        try {\r\n          const raw = localStorage.getItem(CACHE_PREFIX + year);\r\n          if (!raw) return null;\r\n          const parsed = JSON.parse(raw);\r\n          if (!parsed || !Array.isArray(parsed.draws) || !parsed.savedAt) return null;\r\n          if (Date.now() - parsed.savedAt > CACHE_MAX_AGE_MS) return null;\r\n          return parsed.draws;\r\n        } catch (e) {\r\n          return null;\r\n        }\r\n      }\r\n\r\n      function writeYearCache(year, draws) {\r\n        try {\r\n          localStorage.setItem(CACHE_PREFIX + year, JSON.stringify({\r\n            savedAt: Date.now(),\r\n            draws: draws\r\n          }));\r\n        } catch (e) {}\r\n      }\r\n\r\n      function setStatus(text) {\r\n        checkerStatus.textContent = text;\r\n      }\r\n\r\n      function setError(text) {\r\n        checkerError.textContent = text || \"\";\r\n      }\r\n\r\n      function gvizFetchRows(sheetId) {\r\n        const tq = encodeURIComponent(\"select A,B,C,D,E,F,G,H\");\r\n        const cb = \"__tzokerWinnerCb_\" + Date.now() + \"_\" + Math.random().toString(16).slice(2);\r\n        const tqx = encodeURIComponent(\"out:json;responseHandler:\" + cb);\r\n        const url = \"https:\/\/docs.google.com\/spreadsheets\/d\/\" + sheetId + \"\/gviz\/tq?gid=0&headers=1&tqx=\" + tqx + \"&tq=\" + tq;\r\n\r\n        return new Promise(function (resolve, reject) {\r\n          const script = document.createElement(\"script\");\r\n          const timeoutId = setTimeout(function () {\r\n            cleanup();\r\n            reject(new Error(\"Request timed out\"));\r\n          }, 15000);\r\n\r\n          function cleanup() {\r\n            clearTimeout(timeoutId);\r\n            try {\r\n              delete window[cb];\r\n            } catch (e) {\r\n              window[cb] = undefined;\r\n            }\r\n            if (script.parentNode) script.parentNode.removeChild(script);\r\n          }\r\n\r\n          window[cb] = function (resp) {\r\n            cleanup();\r\n\r\n            if (!resp || resp.status !== \"ok\" || !resp.table) {\r\n              reject(new Error(\"GViz response not ok\"));\r\n              return;\r\n            }\r\n\r\n            const rows = (resp.table.rows || []).map(function (row) {\r\n              return (row.c || []).map(function (cell) {\r\n                if (!cell) return \"\";\r\n                if (cell.f != null) return cell.f;\r\n                if (cell.v == null) return \"\";\r\n                return cell.v;\r\n              });\r\n            });\r\n\r\n            resolve(rows);\r\n          };\r\n\r\n          script.async = true;\r\n          script.onerror = function () {\r\n            cleanup();\r\n            reject(new Error(\"Failed to load sheet\"));\r\n          };\r\n          script.src = url;\r\n          document.head.appendChild(script);\r\n        });\r\n      }\r\n\r\n      function normalizeDrawRows(rows, year) {\r\n        const draws = [];\r\n        const seen = {};\r\n\r\n        for (let i = 0; i < rows.length; i++) {\r\n          const row = rows[i] || [];\r\n          const rawDrawId = String(row[0] == null ? \"\" : row[0]).trim();\r\n          if (!\/^\\d+$\/.test(rawDrawId)) continue;\r\n\r\n          const drawId = Number(rawDrawId);\r\n          const main = [row[2], row[3], row[4], row[5], row[6]]\r\n            .map(function (value) {\r\n              return Number(String(value == null ? \"\" : value).trim());\r\n            })\r\n            .filter(function (num) {\r\n              return Number.isFinite(num) && num >= 1 && num <= 45;\r\n            })\r\n            .sort(function (a, b) {\r\n              return a - b;\r\n            });\r\n          const tzoker = Number(String(row[7] == null ? \"\" : row[7]).trim());\r\n\r\n          if (main.length !== 5 || !Number.isFinite(tzoker) || seen[drawId]) continue;\r\n          seen[drawId] = true;\r\n\r\n          draws.push({\r\n            year: Number(year),\r\n            drawId: drawId,\r\n            date: String(row[1] == null ? \"\" : row[1]).trim(),\r\n            main: main,\r\n            tzoker: tzoker\r\n          });\r\n        }\r\n\r\n        return draws;\r\n      }\r\n\r\n      async function loadYearDraws(year) {\r\n        if (yearDrawCache[year]) return yearDrawCache[year];\r\n\r\n        const cached = readYearCache(year);\r\n        if (cached) {\r\n          yearDrawCache[year] = cached;\r\n          return cached;\r\n        }\r\n\r\n        const rows = await gvizFetchRows(SHEETS[year]);\r\n        const yearDraws = normalizeDrawRows(rows, year);\r\n        yearDrawCache[year] = yearDraws;\r\n        writeYearCache(year, yearDraws);\r\n        return yearDraws;\r\n      }\r\n\r\n      async function loadAllDraws() {\r\n        const years = Object.keys(SHEETS).sort(function (a, b) {\r\n          return Number(a) - Number(b);\r\n        });\r\n        const grouped = new Array(years.length);\r\n        let cursor = 0;\r\n\r\n        async function worker() {\r\n          while (cursor < years.length) {\r\n            const index = cursor++;\r\n            const year = years[index];\r\n            grouped[index] = await loadYearDraws(year);\r\n          }\r\n        }\r\n\r\n        const workers = [];\r\n        for (let i = 0; i < Math.min(LOAD_CONCURRENCY, years.length); i++) {\r\n          workers.push(worker());\r\n        }\r\n        await Promise.all(workers);\r\n\r\n        const out = [];\r\n        const seen = {};\r\n        for (let i = 0; i < grouped.length; i++) {\r\n          const draws = grouped[i] || [];\r\n          for (let j = 0; j < draws.length; j++) {\r\n            const draw = draws[j];\r\n            const key = String(draw.year) + \"-\" + String(draw.drawId);\r\n            if (seen[key]) continue;\r\n            seen[key] = true;\r\n            out.push(draw);\r\n          }\r\n        }\r\n\r\n        return out;\r\n      }\r\n\r\n      function getTier(mainMatches, tzokerMatched) {\r\n        if (mainMatches === 5 && tzokerMatched) return \"5 + TZOKER\";\r\n        if (mainMatches === 5) return \"5\";\r\n        if (mainMatches === 4 && tzokerMatched) return \"4 + TZOKER\";\r\n        if (mainMatches === 4) return \"4\";\r\n        if (mainMatches === 3 && tzokerMatched) return \"3 + TZOKER\";\r\n        if (mainMatches === 3) return \"3\";\r\n        if (mainMatches === 2 && tzokerMatched) return \"2 + TZOKER\";\r\n        if (mainMatches === 1 && tzokerMatched) return \"1 + TZOKER\";\r\n        return \"\";\r\n      }\r\n\r\n      function renderBall(num, classes) {\r\n        return '<span class=\"ball ' + classes + '\">' + num + '<\/span>';\r\n      }\r\n\r\n      function renderSummary(results, ticket, tzokerValue) {\r\n        if (!results.length) {\r\n          summaryBox.innerHTML =\r\n            '<div class=\"summary-box\">' +\r\n              '<h3>No Winning Draws Found<\/h3>' +\r\n              '<p>Your numbers ' + ticket.join(\", \") + ' + TZOKER ' + tzokerValue + ' do not produce a recorded win in the stored TZOKER draws.<\/p>' +\r\n            '<\/div>';\r\n          return;\r\n        }\r\n\r\n        const topTier = results[0].tier;\r\n        summaryBox.innerHTML =\r\n          '<div class=\"summary-box\">' +\r\n            '<h3>Winning Matches Found<\/h3>' +\r\n            '<p>Your ticket ' + ticket.join(\", \") + ' + TZOKER ' + tzokerValue +\r\n            ' produced <b>' + results.length + '<\/b> winning result(s). Best category: <b>' + topTier + '<\/b>.<\/p>' +\r\n          '<\/div>';\r\n      }\r\n\r\n      function renderResults(results) {\r\n        if (!results.length) {\r\n          resultsList.innerHTML = '<div class=\"empty-state\">No stored draw matches this ticket as a winning combination.<\/div>';\r\n          return;\r\n        }\r\n\r\n        resultsList.innerHTML = results.map(function (result) {\r\n          const matchedSet = {};\r\n          result.matches.forEach(function (n) { matchedSet[n] = true; });\r\n\r\n          const mainBalls = result.draw.main.map(function (n) {\r\n            return renderBall(n, matchedSet[n] ? \"match\" : \"\");\r\n          }).join(\"\");\r\n\r\n          const extra = '<span class=\"ball-label\">TZOKER<\/span>' + renderBall(result.draw.tzoker, \"tzoker\");\r\n          const notes = [];\r\n          notes.push(result.mainMatches + \" main numbers matched\");\r\n          if (result.tzokerMatched) notes.push(\"TZOKER matched\");\r\n\r\n          return (\r\n            '<div class=\"result-item\">' +\r\n              '<div class=\"result-head\">' +\r\n                '<div class=\"result-draw\">Draw ' + result.draw.drawId + (result.draw.date ? (\" \u2022 \" + result.draw.date) : \"\") + '<\/div>' +\r\n                '<div class=\"result-tier\">' + result.tier + '<\/div>' +\r\n              '<\/div>' +\r\n              '<div class=\"ball-row\">' + mainBalls + '<\/div>' +\r\n              '<div class=\"ball-row\">' + extra + '<\/div>' +\r\n              '<div class=\"result-meta\">' + notes.join(\" | \") + '<\/div>' +\r\n            '<\/div>'\r\n          );\r\n        }).join(\"\");\r\n      }\r\n\r\n      function clearResults() {\r\n        setError(\"\");\r\n        summaryBox.innerHTML = \"\";\r\n        resultsList.innerHTML = \"\";\r\n      }\r\n\r\n      function validateTicket() {\r\n        const nums = inputEls.map(function (el) {\r\n          return Number(String(el.value || \"\").trim());\r\n        });\r\n\r\n        if (nums.some(function (n) { return !Number.isFinite(n); })) {\r\n          throw new Error(\"Enter all 5 main numbers.\");\r\n        }\r\n        if (nums.some(function (n) { return n < 1 || n > 45; })) {\r\n          throw new Error(\"Main numbers must be between 1 and 45.\");\r\n        }\r\n\r\n        const unique = Array.from(new Set(nums));\r\n        if (unique.length !== 5) {\r\n          throw new Error(\"Main numbers must be unique.\");\r\n        }\r\n\r\n        const tzokerRaw = String(tzokerInput.value || \"\").trim();\r\n        const tzokerValue = tzokerRaw ? Number(tzokerRaw) : null;\r\n        if (!Number.isFinite(tzokerValue) || tzokerValue < 1 || tzokerValue > 20) {\r\n          throw new Error(\"Enter a TZOKER number between 1 and 20.\");\r\n        }\r\n\r\n        unique.sort(function (a, b) { return a - b; });\r\n        return { numbers: unique, tzoker: tzokerValue };\r\n      }\r\n\r\n      function checkTicket() {\r\n        clearResults();\r\n\r\n        if (!allDraws.length) {\r\n          setError(\"Draw data is not loaded yet. Please wait.\");\r\n          return;\r\n        }\r\n\r\n        let ticket;\r\n        try {\r\n          ticket = validateTicket();\r\n        } catch (err) {\r\n          setError(err.message || \"Invalid ticket.\");\r\n          return;\r\n        }\r\n\r\n        const ticketSet = {};\r\n        ticket.numbers.forEach(function (n) { ticketSet[n] = true; });\r\n\r\n        const results = allDraws.map(function (draw) {\r\n          const matches = draw.main.filter(function (n) {\r\n            return !!ticketSet[n];\r\n          });\r\n          const mainMatches = matches.length;\r\n          const tzokerMatched = ticket.tzoker === draw.tzoker;\r\n          const tier = getTier(mainMatches, tzokerMatched);\r\n\r\n          return {\r\n            draw: draw,\r\n            matches: matches,\r\n            mainMatches: mainMatches,\r\n            tzokerMatched: tzokerMatched,\r\n            tier: tier\r\n          };\r\n        }).filter(function (result) {\r\n          return !!result.tier;\r\n        }).sort(function (a, b) {\r\n          const order = { \"5 + TZOKER\": 8, \"5\": 7, \"4 + TZOKER\": 6, \"4\": 5, \"3 + TZOKER\": 4, \"3\": 3, \"2 + TZOKER\": 2, \"1 + TZOKER\": 1 };\r\n          const oa = order[a.tier] || 0;\r\n          const ob = order[b.tier] || 0;\r\n          if (ob !== oa) return ob - oa;\r\n          return b.draw.drawId - a.draw.drawId;\r\n        });\r\n\r\n        renderSummary(results, ticket.numbers, ticket.tzoker);\r\n        renderResults(results);\r\n      }\r\n\r\n      function clearInputs() {\r\n        inputEls.forEach(function (el) { el.value = \"\"; });\r\n        tzokerInput.value = \"\";\r\n        clearResults();\r\n        setError(\"\");\r\n      }\r\n\r\n      async function init() {\r\n        checkBtn.disabled = true;\r\n        clearBtn.disabled = true;\r\n        try {\r\n          allDraws = await loadAllDraws();\r\n          if (!allDraws.length) {\r\n            throw new Error(\"No draw data found.\");\r\n          }\r\n          setStatus(\"Loaded \" + allDraws.length + \" stored draws. Enter your numbers to check for past wins.\");\r\n        } catch (err) {\r\n          setStatus(\"\");\r\n          setError(\"Unable to load TZOKER draw history.\");\r\n          return;\r\n        }\r\n\r\n        checkBtn.disabled = false;\r\n        clearBtn.disabled = false;\r\n        checkBtn.addEventListener(\"click\", checkTicket);\r\n        clearBtn.addEventListener(\"click\", clearInputs);\r\n        inputEls.concat([tzokerInput]).forEach(function (el) {\r\n          el.addEventListener(\"keypress\", function (e) {\r\n            if (e.key === \"Enter\") checkTicket();\r\n          });\r\n        });\r\n      }\r\n\r\n      init();\r\n    })();\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-885c469 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"885c469\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-785d30b e-flex e-con-boxed e-con e-parent\" data-id=\"785d30b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1de07e3 elementor-widget elementor-widget-shortcode\" data-id=\"1de07e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>.tzoker-previous-draws ~ .tzoker-previous-draws{display:none!important;}<\/style><div class=\"tzoker-previous-draws\"><h2 style=\"text-align:center; margin-bottom:20px;\">\ud83d\udcdc Previous TZOKER Draws<\/h2><div style=\"margin-bottom:15px; text-align:center;\"><div style=\"font-size:13px; opacity:0.7; margin-bottom:5px;\">Draw 3053 \u2014 14\/04\/2026<\/div><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">3<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">7<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">32<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">37<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">44<\/span><span style=\"display:inline-block;background:#f5c400;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">17<\/span><\/div><div style=\"margin-bottom:15px; text-align:center;\"><div style=\"font-size:13px; opacity:0.7; margin-bottom:5px;\">Draw 3052 \u2014 11\/04\/2026<\/div><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">9<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">15<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">28<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">35<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">37<\/span><span style=\"display:inline-block;background:#f5c400;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">15<\/span><\/div><div style=\"margin-bottom:15px; text-align:center;\"><div style=\"font-size:13px; opacity:0.7; margin-bottom:5px;\">Draw 3051 \u2014 08\/04\/2026<\/div><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">13<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">17<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">21<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">26<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">40<\/span><span style=\"display:inline-block;background:#f5c400;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">5<\/span><\/div><div style=\"margin-bottom:15px; text-align:center;\"><div style=\"font-size:13px; opacity:0.7; margin-bottom:5px;\">Draw 3050 \u2014 07\/04\/2026<\/div><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">6<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">18<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">34<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">42<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">45<\/span><span style=\"display:inline-block;background:#f5c400;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">7<\/span><\/div><div style=\"margin-bottom:15px; text-align:center;\"><div style=\"font-size:13px; opacity:0.7; margin-bottom:5px;\">Draw 3049 \u2014 05\/04\/2026<\/div><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">2<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">24<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">28<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">32<\/span><span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">41<\/span><span style=\"display:inline-block;background:#f5c400;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\">5<\/span><\/div><\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cd02b96 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"cd02b96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dfcbfa1 elementor-widget elementor-widget-html\" data-id=\"dfcbfa1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" \/>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\r\n    <title>TZOKER<\/title>\r\n    <style>\r\n      body {\r\n        font-family: Arial, Helvetica, sans-serif;\r\n        margin: 0;\r\n        padding: 24px 16px;\r\n        color: #111;\r\n        background: #fff;\r\n      }\r\n      #tzokerFilters {\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n        gap: 12px;\r\n        flex-wrap: wrap;\r\n        margin-top: 25px;\r\n        text-align: center;\r\n      }\r\n      #tzokerFilters select {\r\n        appearance: auto !important;\r\n        -webkit-appearance: menulist !important;\r\n        -moz-appearance: menulist !important;\r\n        display: inline-block !important;\r\n        min-width: 160px;\r\n        padding: 10px 14px !important;\r\n        border-radius: 12px !important;\r\n        border: 2px solid rgba(0, 0, 0, 0.25) !important;\r\n        background: #ffffff !important;\r\n        color: #000000 !important;\r\n        -webkit-text-fill-color: #000000 !important;\r\n        font-size: 15px !important;\r\n        line-height: 1.2 !important;\r\n        box-sizing: border-box !important;\r\n        margin: 6px !important;\r\n      }\r\n      #tzokerFilters select:disabled {\r\n        opacity: 0.6;\r\n        cursor: not-allowed;\r\n      }\r\n      #tzokerFilters option {\r\n        color: #000000 !important;\r\n        background: #ffffff !important;\r\n      }\r\n    <\/style>\r\n  <\/head>\r\n  <body>\r\n    <div id=\"tzokerFilters\">\r\n      <select id=\"tzYear\">\r\n        <option value=\"\">Year<\/option>\r\n      <\/select>\r\n      <select id=\"tzMonth\" disabled>\r\n        <option value=\"\">Month<\/option>\r\n      <\/select>\r\n      <select id=\"tzDraw\" disabled>\r\n        <option value=\"\">Draw<\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div id=\"selectedDraw\" style=\"text-align: center; margin-top: 18px;\">Select year, month, and draw.<\/div>\r\n\r\n    <script>\r\n      (function () {\r\n        const API_BASE = \"https:\/\/api.opap.gr\/draws\/v3.0\/5104\";\r\n        const monthNames = [\r\n          \"January\",\r\n          \"February\",\r\n          \"March\",\r\n          \"April\",\r\n          \"May\",\r\n          \"June\",\r\n          \"July\",\r\n          \"August\",\r\n          \"September\",\r\n          \"October\",\r\n          \"November\",\r\n          \"December\",\r\n        ];\r\n\r\n        const whiteCSS =\r\n          \"display:inline-block;background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\";\r\n        const yellowCSS =\r\n          \"display:inline-block;background:#f5c400;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:bold;margin:4px;border:1px solid rgba(0,0,0,0.15);\";\r\n        const CACHE_PREFIX = \"tzoker-draw-finder-v1-\";\r\n        const CACHE_MAX_AGE_MS = 6 * 60 * 60 * 1000;\r\n        const MONTH_LOAD_CONCURRENCY = 4;\r\n\r\n        async function fetchJson(url) {\r\n          const controller = new AbortController();\r\n          const to = setTimeout(() => controller.abort(), 15000);\r\n          try {\r\n            const resp = await fetch(url, { cache: \"no-store\", signal: controller.signal });\r\n            if (!resp.ok) throw new Error(\"HTTP \" + resp.status);\r\n            return await resp.json();\r\n          } finally {\r\n            clearTimeout(to);\r\n          }\r\n        }\r\n\r\n        function unwrapDrawList(data) {\r\n          if (Array.isArray(data)) return data;\r\n          if (data && Array.isArray(data.content)) return data.content;\r\n          return [];\r\n        }\r\n\r\n        function readYearCache(year) {\r\n          try {\r\n            const raw = localStorage.getItem(CACHE_PREFIX + year);\r\n            if (!raw) return null;\r\n            const parsed = JSON.parse(raw);\r\n            if (!parsed || !Array.isArray(parsed.draws) || !parsed.savedAt) return null;\r\n            if (Date.now() - parsed.savedAt > CACHE_MAX_AGE_MS) return null;\r\n            return parsed.draws;\r\n          } catch (e) {\r\n            return null;\r\n          }\r\n        }\r\n\r\n        function writeYearCache(year, draws) {\r\n          try {\r\n            localStorage.setItem(\r\n              CACHE_PREFIX + year,\r\n              JSON.stringify({ savedAt: Date.now(), draws: draws })\r\n            );\r\n          } catch (e) {}\r\n        }\r\n\r\n        function normalizeDraw(draw) {\r\n          if (!draw || !draw.winningNumbers) return null;\r\n          const list = draw.winningNumbers.list;\r\n          const bonus = draw.winningNumbers.bonus;\r\n          if (!Array.isArray(list) || list.length !== 5) return null;\r\n          if (!Array.isArray(bonus) || bonus.length < 1) return null;\r\n          if (!Number.isFinite(draw.drawId)) return null;\r\n          if (!Number.isFinite(draw.drawTime)) return null;\r\n          return {\r\n            drawId: Number(draw.drawId),\r\n            drawTime: Number(draw.drawTime),\r\n            list: list.map(Number).filter(Number.isFinite),\r\n            bonus: Number(bonus[0]),\r\n          };\r\n        }\r\n\r\n        function formatDate(ms) {\r\n          const dt = new Date(ms);\r\n          const d = String(dt.getDate()).padStart(2, \"0\");\r\n          const m = String(dt.getMonth() + 1).padStart(2, \"0\");\r\n          const y = String(dt.getFullYear());\r\n          return d + \"\/\" + m + \"\/\" + y;\r\n        }\r\n\r\n        function renderBalls(list, bonus) {\r\n          const nums = list.slice().sort((a, b) => a - b);\r\n          const whites = nums.map((n) => `<span style=\"${whiteCSS}\">${n}<\/span>`).join(\"\");\r\n          const tz = `<span style=\"${yellowCSS}\">${bonus}<\/span>`;\r\n          return whites + tz;\r\n        }\r\n\r\n        async function initFilters() {\r\n          const yearEl = document.getElementById(\"tzYear\");\r\n          const monthEl = document.getElementById(\"tzMonth\");\r\n          const drawEl = document.getElementById(\"tzDraw\");\r\n          const selectedEl = document.getElementById(\"selectedDraw\");\r\n          if (!yearEl || !monthEl || !drawEl) return;\r\n\r\n          if (selectedEl && window.location && window.location.protocol === \"file:\") {\r\n            selectedEl.textContent = \"Open this page via a local server (http:\/\/localhost\/...), not as a file, or the OPAP API may be blocked.\";\r\n          }\r\n\r\n          function setOptions(sel, placeholder, items) {\r\n            sel.innerHTML = \"\";\r\n            const o = document.createElement(\"option\");\r\n            o.value = \"\";\r\n            o.textContent = placeholder;\r\n            sel.appendChild(o);\r\n            (items || []).forEach((it) => {\r\n              const opt = document.createElement(\"option\");\r\n              opt.value = String(it.value);\r\n              opt.textContent = it.label;\r\n              sel.appendChild(opt);\r\n            });\r\n          }\r\n\r\n          const now = new Date();\r\n          const currentYear = now.getFullYear();\r\n          const startYear = 2003;\r\n          const years = [];\r\n          for (let y = currentYear; y >= startYear; y--) years.push({ value: y, label: String(y) });\r\n          setOptions(yearEl, \"Year\", years);\r\n\r\n          const yearCache = new Map();\r\n          async function loadYear(y) {\r\n            if (yearCache.has(y)) return yearCache.get(y);\r\n            const cached = readYearCache(y);\r\n            if (cached) {\r\n              yearCache.set(y, cached);\r\n              return cached;\r\n            }\r\n\r\n            const monthBuckets = new Array(12);\r\n            let cursor = 0;\r\n\r\n            async function worker() {\r\n              while (cursor < 12) {\r\n                const m = cursor++;\r\n                const mm = String(m + 1).padStart(2, \"0\");\r\n                const lastDay = new Date(y, m + 1, 0).getDate();\r\n                const from = y + \"-\" + mm + \"-01\";\r\n                const to = y + \"-\" + mm + \"-\" + String(lastDay).padStart(2, \"0\");\r\n                try {\r\n                  const data = await fetchJson(API_BASE + \"\/draw-date\/\" + from + \"\/\" + to);\r\n                  monthBuckets[m] = unwrapDrawList(data);\r\n                } catch (e) {\r\n                  monthBuckets[m] = [];\r\n                }\r\n              }\r\n            }\r\n\r\n            const workers = [];\r\n            for (let i = 0; i < Math.min(MONTH_LOAD_CONCURRENCY, 12); i++) {\r\n              workers.push(worker());\r\n            }\r\n            await Promise.all(workers);\r\n\r\n            const all = [];\r\n            for (let i = 0; i < monthBuckets.length; i++) {\r\n              const bucket = monthBuckets[i] || [];\r\n              for (let j = 0; j < bucket.length; j++) all.push(bucket[j]);\r\n            }\r\n\r\n            const results = all\r\n              .filter((d) => d && d.status === \"results\")\r\n              .map(normalizeDraw)\r\n              .filter(Boolean);\r\n            const seen = {};\r\n            const uniqueResults = [];\r\n            for (let i = 0; i < results.length; i++) {\r\n              const draw = results[i];\r\n              if (seen[draw.drawId]) continue;\r\n              seen[draw.drawId] = true;\r\n              uniqueResults.push(draw);\r\n            }\r\n            uniqueResults.sort((a, b) => b.drawId - a.drawId);\r\n            yearCache.set(y, uniqueResults);\r\n            writeYearCache(y, uniqueResults);\r\n            return uniqueResults;\r\n          }\r\n\r\n          yearEl.addEventListener(\"change\", async () => {\r\n            const y = Number(yearEl.value || 0);\r\n            setOptions(monthEl, \"Loading...\", []);\r\n            monthEl.disabled = true;\r\n            setOptions(drawEl, \"Draw\", []);\r\n            drawEl.disabled = true;\r\n            if (selectedEl) selectedEl.textContent = \"Select year, month, and draw.\";\r\n            if (!y) return;\r\n\r\n            try {\r\n              const draws = await loadYear(y);\r\n              if (!draws || draws.length === 0) {\r\n                setOptions(monthEl, \"No data\", []);\r\n                monthEl.disabled = true;\r\n                if (selectedEl) selectedEl.textContent = \"No results found for this year.\";\r\n                return;\r\n              }\r\n              const months = Array.from(new Set(draws.map((d) => new Date(d.drawTime).getMonth()))).sort(\r\n                (a, b) => a - b\r\n              );\r\n              setOptions(\r\n                monthEl,\r\n                \"Month\",\r\n                months.map((m) => ({ value: m, label: monthNames[m] }))\r\n              );\r\n              monthEl.disabled = false;\r\n            } catch (e) {\r\n              setOptions(monthEl, \"Failed to load\", []);\r\n              monthEl.disabled = true;\r\n              if (selectedEl) {\r\n                selectedEl.textContent =\r\n                  window.location && window.location.protocol === \"file:\"\r\n                    ? \"Unable to load year data. Open this page via a local server (http:\/\/localhost\/...).\"\r\n                    : \"Unable to load year data.\";\r\n              }\r\n            }\r\n          });\r\n\r\n          monthEl.addEventListener(\"change\", async () => {\r\n            const y = Number(yearEl.value || 0);\r\n            const m = monthEl.value === \"\" ? null : Number(monthEl.value);\r\n            setOptions(drawEl, \"Loading...\", []);\r\n            drawEl.disabled = true;\r\n            if (selectedEl) selectedEl.textContent = \"Select year, month, and draw.\";\r\n            if (!y || m == null) return;\r\n\r\n            try {\r\n              const draws = await loadYear(y);\r\n              const list = draws.filter((d) => new Date(d.drawTime).getMonth() === m);\r\n              if (!list || list.length === 0) {\r\n                setOptions(drawEl, \"No draws\", []);\r\n                drawEl.disabled = true;\r\n                if (selectedEl) selectedEl.textContent = \"No draws found for this month.\";\r\n                return;\r\n              }\r\n              setOptions(\r\n                drawEl,\r\n                \"Draw\",\r\n                list.map((d) => ({ value: d.drawId, label: String(d.drawId) }))\r\n              );\r\n              drawEl.disabled = false;\r\n            } catch (e) {\r\n              setOptions(drawEl, \"Failed to load\", []);\r\n              drawEl.disabled = true;\r\n              if (selectedEl) selectedEl.textContent = \"Unable to load draws for this month.\";\r\n            }\r\n          });\r\n\r\n          drawEl.addEventListener(\"change\", async () => {\r\n            const y = Number(yearEl.value || 0);\r\n            const id = Number(drawEl.value || 0);\r\n            if (selectedEl) selectedEl.textContent = \"Select year, month, and draw.\";\r\n            if (!id) return;\r\n            if (selectedEl) selectedEl.textContent = \"Loading draw...\";\r\n            try {\r\n              const draws = await loadYear(y);\r\n              const d = draws.find((draw) => draw.drawId === id);\r\n              if (!d) {\r\n                if (selectedEl) selectedEl.innerHTML = \"<p>Unable to load draw.<\/p>\";\r\n                return;\r\n              }\r\n              const html =\r\n                `<div style=\"margin-top:10px;\">` +\r\n                `<div style=\"font-size:13px; opacity:0.7; margin-bottom:6px;\">` +\r\n                `Draw ${d.drawId} \u2014 ${formatDate(d.drawTime)}` +\r\n                `<\/div>` +\r\n                renderBalls(d.list, d.bonus) +\r\n                `<\/div>`;\r\n              if (selectedEl) selectedEl.innerHTML = html;\r\n            } catch (e) {\r\n              if (selectedEl) selectedEl.innerHTML = \"<p>Unable to load draw.<\/p>\";\r\n            }\r\n          });\r\n        }\r\n\r\n        if (document.readyState === \"loading\") {\r\n          document.addEventListener(\"DOMContentLoaded\", () => {\r\n            initFilters();\r\n          });\r\n        } else {\r\n          initFilters();\r\n        }\r\n      })();\r\n    <\/script>\r\n  <\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e992a5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"3e992a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39b5285 elementor-widget elementor-widget-html\" data-id=\"39b5285\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n.tz-super-wrap {\r\n  font-family: Arial, sans-serif;\r\n  color: #111;\r\n}\r\n\r\n.tz-super-wrap .llw-card,\r\n.tz-super-wrap .llw-box,\r\n.tz-super-wrap .llw-number,\r\n.tz-super-wrap .llw-search,\r\n.tz-super-wrap .llw-note,\r\n.tz-super-wrap .llw-title,\r\n.tz-super-wrap .llw-heading {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.tz-super-wrap .llw-card {\r\n  text-align: center;\r\n}\r\n\r\n.tz-super-wrap .llw-card h3 {\r\n  text-align: center;\r\n  margin-bottom: 15px;\r\n}\r\n\r\n.tz-super-wrap .llw-card canvas {\r\n  display: block;\r\n  margin: 0 auto;\r\n  max-width: 100%;\r\n}\r\n\r\n.tz-super-wrap .lw-infographic {\r\n  font-family: Arial, sans-serif;\r\n  background: #f9fafb;\r\n  border-radius: 12px;\r\n  padding: 20px;\r\n  box-shadow: 0 4px 12px rgba(0,0,0,0.08);\r\n  max-width: 800px;\r\n  margin: 20px auto;\r\n}\r\n\r\n.tz-super-wrap .lw-title {\r\n  text-align: center;\r\n  font-size: 24px;\r\n  font-weight: bold;\r\n  margin-bottom: 20px;\r\n  color: #000;\r\n}\r\n\r\n.tz-super-wrap .lw-columns {\r\n  display: flex;\r\n  gap: 20px;\r\n  flex-wrap: wrap;\r\n}\r\n\r\n.tz-super-wrap .lw-box {\r\n  flex: 1;\r\n  min-width: 250px;\r\n  border-radius: 10px;\r\n  padding: 15px;\r\n  color: #fff;\r\n  text-align: center;\r\n}\r\n\r\n.tz-super-wrap .lw-box h3 {\r\n  font-size: 16px;\r\n  font-weight: bold;\r\n  margin-bottom: 10px;\r\n  color: #fff;\r\n}\r\n\r\n.tz-super-wrap .lw-hot {\r\n  background: linear-gradient(135deg, #ff4d4d, #cc0000);\r\n}\r\n\r\n.tz-super-wrap .lw-cold {\r\n  background: linear-gradient(135deg, #4da6ff, #003366);\r\n}\r\n\r\n.tz-super-wrap .lw-number {\r\n  display: flex;\r\n  justify-content: space-between;\r\n  align-items: center;\r\n  padding: 6px 8px;\r\n  margin-bottom: 4px;\r\n  border-radius: 6px;\r\n  background: rgba(255,255,255,0.1);\r\n  gap: 10px;\r\n}\r\n\r\n.tz-super-wrap .lw-meta {\r\n  flex: 1;\r\n  text-align: right;\r\n  color: #fff;\r\n}\r\n\r\n.tz-super-wrap .lw-search {\r\n  margin-top: 25px;\r\n  text-align: center;\r\n}\r\n\r\n.tz-super-wrap .lw-search input {\r\n  padding: 10px;\r\n  border-radius: 8px;\r\n  border: 1px solid #ccc;\r\n  width: 180px;\r\n  color: #000;\r\n}\r\n\r\n.tz-super-wrap .lw-search button {\r\n  padding: 10px 15px;\r\n  margin-left: 10px;\r\n  border: none;\r\n  border-radius: 8px;\r\n  background: #000;\r\n  color: #fff;\r\n  cursor: pointer;\r\n}\r\n\r\n.tz-super-wrap .lw-result {\r\n  margin-top: 15px;\r\n  color: #000;\r\n  font-weight: bold;\r\n}\r\n\r\n.tz-super-wrap .lw-note {\r\n  margin-top: 15px;\r\n  font-size: 13px;\r\n  color: #000;\r\n  text-align: center;\r\n}\r\n<\/style>\r\n\r\n<div class=\"tz-super-wrap\">\r\n  <div class=\"lw-infographic\">\r\n    <div class=\"lw-title\">\ud83d\udd25 Hot & \u2744\ufe0f Cold TZOKER Numbers<\/div>\r\n\r\n    <div class=\"lw-columns\">\r\n      <div class=\"lw-box lw-hot\">\r\n        <h3>\ud83d\udd25 Hot Numbers<\/h3>\r\n        <div id=\"tz-super-hot-list\">Loading...<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"lw-box lw-cold\">\r\n        <h3>\u2744\ufe0f Cold Numbers<\/h3>\r\n        <div id=\"tz-super-cold-list\">Loading...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"lw-search\">\r\n      <input type=\"number\" id=\"tz-super-search-input\" placeholder=\"Search number (1-45)\" min=\"1\" max=\"45\">\r\n      <button id=\"tz-super-search-btn\">Search<\/button>\r\n      <div id=\"tz-super-search-result\" class=\"lw-result\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"lw-note\">\r\n      Hot and cold rankings are based on TZOKER draws from 2024 onward.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <section class=\"llw-section llw-alt\">\r\n    <div class=\"llw-container\">\r\n      <h2 class=\"llw-heading\" style=\"text-align:center;\">TZOKER Results Analysis<\/h2>\r\n\r\n      <div class=\"llw-grid\">\r\n        <div class=\"llw-card\">\r\n          <h3>\u2696\ufe0f Odd vs Even<\/h3>\r\n          <canvas id=\"tz-super-odd-even-chart\"><\/canvas>\r\n        <\/div>\r\n\r\n        <div class=\"llw-card\">\r\n          <h3>\ud83d\udcc8 High vs Low<\/h3>\r\n          <canvas id=\"tz-super-high-low-chart\"><\/canvas>\r\n        <\/div>\r\n\r\n        <div class=\"llw-card\">\r\n          <h3>\ud83d\udd22 Number Distribution<\/h3>\r\n          <canvas id=\"tz-super-range-chart\"><\/canvas>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"llw-section\">\r\n    <div class=\"llw-container\">\r\n      <h2 class=\"llw-heading\" style=\"text-align:center;\">TZOKER Number Patterns<\/h2>\r\n\r\n      <div class=\"llw-grid\">\r\n        <div class=\"llw-card\">\r\n          <h3>\ud83d\udd17 Common Pairs<\/h3>\r\n          <div id=\"tz-super-pairs\">Loading...<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"llw-card\">\r\n          <h3>\ud83d\udd3a Common Triplets<\/h3>\r\n          <div id=\"tz-super-triplets\">Loading...<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"llw-card\">\r\n          <h3>\u2795 Consecutive Numbers<\/h3>\r\n          <div id=\"tz-super-consecutive\">Loading...<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"llw-section llw-alt\">\r\n    <div class=\"llw-container\">\r\n      <h2 class=\"llw-heading\" style=\"text-align:center;\">\ud83d\udcca TZOKER Yearly Number Trends<\/h2>\r\n      <div class=\"llw-grid\" id=\"tz-super-yearly-grid\">\r\n        <div class=\"llw-card\">\r\n          <h3>Loading yearly trends...<\/h3>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n<\/div>\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n<script>\r\n(function () {\r\n  const SHEET_BY_YEAR = {\r\n    2026: \"11RlTaIk1rxI1dCIq1A9MzRR7u72O8FNC\",\r\n    2025: \"12rPo16GdIgGHXCGu_HNX0NDfr9fEycJD\",\r\n    2024: \"1SoxMrjSDSeMrxc3AS17yPpkyLohSRKbl\",\r\n    2023: \"1Dx4wzZQZi_tCEEdlGRtDNjbhMbZcOyAm\",\r\n    2022: \"1hm8z0qVeuMBmLTBHQHcm6sr6UNeE1jiu\",\r\n    2021: \"1W97mzNCjZk3CMbtqz8ikTHcojY1N-U0C\",\r\n    2020: \"1Fxf19MAv-NrFj67prgRS3-ZG1YAR65Dr\",\r\n    2019: \"1kHUKpQT-9XXCT1AjuU-WmZxG5Bk3CI7d\",\r\n    2018: \"1d144XE0GBmzcOhFDsL58Ju44AkpVybWw\",\r\n    2017: \"1bITW1Nd86B4c5AJPJwGjPrToNNz7s2cH\",\r\n    2016: \"1dwujKoJBGLes0GP6AacV8UdznWUJc4ht\",\r\n    2015: \"1l5dsi0kRn7GTBf0R2U0Fb6OGaY6wUD8d\",\r\n    2014: \"130JrSZJNEPK2Q4HrXkZaG-sy32wdOoZf\",\r\n    2013: \"1W3xW9pmLWURre-exdyHxaqNZdi4j_nnQ\",\r\n    2012: \"1IRppYXU_k0uogoNMiqMQtEz5qoTgci2o\",\r\n    2011: \"1v81OHOFMrknsgMsZYTRjo0uFvpnCBylF\",\r\n    2010: \"1WxJ5hAtnidJxo4Dftwo2kUzLf6rZNzuV\",\r\n    2009: \"1fwKnwCLRJEwcUPzgw6ZghZy9w0kfNrge\",\r\n    2008: \"1Z9RvkmDE2EIKhOllWFfIz40vybQHCQFF\",\r\n    2007: \"1QBFtUk4Yam5TocDivru6YEGdlbH4BmfH\",\r\n    2006: \"1QwIj6QA7EbAg6Lm2UHwNyUaN32OZwmeG\",\r\n    2005: \"1JaZgLGh4AWPmshOrwIfdA1gIGFiPmjM-\",\r\n    2004: \"1b4fHU2zsDkM1Nn6Zmfvn2HMIFEBxIvt6\",\r\n    2003: \"1nTHbsD-amuytgcH6VpfBgRBY50GhHq33\"\r\n  };\r\n  const MIN_HOT_COLD_YEAR = 2024;\r\n  const MIN_YEARLY_TRENDS_YEAR = 2010;\r\n  const CACHE_PREFIX = \"tzoker-super-cache-v1-\";\r\n  const CACHE_MAX_AGE_MS = 6 * 60 * 60 * 1000;\r\n  const LOAD_CONCURRENCY = 4;\r\n\r\n  const state = {\r\n    globalStats: {},\r\n    totalRecentDraws: 0\r\n  };\r\n  const yearDrawCache = {};\r\n\r\n  function readYearCache(year) {\r\n    try {\r\n      if (!window.localStorage) return null;\r\n      const raw = localStorage.getItem(CACHE_PREFIX + year);\r\n      if (!raw) return null;\r\n      const parsed = JSON.parse(raw);\r\n      if (!parsed || !Array.isArray(parsed.draws) || !parsed.savedAt) return null;\r\n      if ((Date.now() - parsed.savedAt) > CACHE_MAX_AGE_MS) return null;\r\n      return parsed.draws;\r\n    } catch (e) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function writeYearCache(year, draws) {\r\n    try {\r\n      if (!window.localStorage) return;\r\n      localStorage.setItem(CACHE_PREFIX + year, JSON.stringify({\r\n        savedAt: Date.now(),\r\n        draws: draws\r\n      }));\r\n    } catch (e) {}\r\n  }\r\n\r\n  function gvizFetchRows(sheetId) {\r\n    const tq = encodeURIComponent(\"select A,B,C,D,E,F,G,H\");\r\n    const cb = \"__tzokerSuperCb_\" + Date.now() + \"_\" + Math.random().toString(16).slice(2);\r\n    const tqx = encodeURIComponent(\"out:json;responseHandler:\" + cb);\r\n    const url = \"https:\/\/docs.google.com\/spreadsheets\/d\/\" + sheetId + \"\/gviz\/tq?gid=0&headers=1&tqx=\" + tqx + \"&tq=\" + tq;\r\n\r\n    return new Promise(function (resolve, reject) {\r\n      const script = document.createElement(\"script\");\r\n      const timeoutId = setTimeout(function () {\r\n        cleanup();\r\n        reject(new Error(\"Request timed out\"));\r\n      }, 15000);\r\n\r\n      function cleanup() {\r\n        clearTimeout(timeoutId);\r\n        try {\r\n          delete window[cb];\r\n        } catch (e) {\r\n          window[cb] = undefined;\r\n        }\r\n        if (script.parentNode) script.parentNode.removeChild(script);\r\n      }\r\n\r\n      window[cb] = function (resp) {\r\n        cleanup();\r\n\r\n        if (!resp || resp.status !== \"ok\" || !resp.table) {\r\n          reject(new Error(\"GViz response not ok\"));\r\n          return;\r\n        }\r\n\r\n        const rows = (resp.table.rows || []).map(function (row) {\r\n          return (row.c || []).map(function (cell) {\r\n            if (!cell) return \"\";\r\n            if (cell.f != null) return cell.f;\r\n            if (cell.v == null) return \"\";\r\n            return cell.v;\r\n          });\r\n        });\r\n\r\n        resolve(rows);\r\n      };\r\n\r\n      script.async = true;\r\n      script.onerror = function () {\r\n        cleanup();\r\n        reject(new Error(\"Failed to load sheet\"));\r\n      };\r\n      script.src = url;\r\n      document.head.appendChild(script);\r\n    });\r\n  }\r\n\r\n  function normalizeDrawRows(rows, year) {\r\n    const draws = [];\r\n    const seen = {};\r\n\r\n    for (let i = 0; i < rows.length; i++) {\r\n      const row = rows[i] || [];\r\n      const rawDrawId = String(row[0] == null ? \"\" : row[0]).trim();\r\n      if (!\/^\\d+$\/.test(rawDrawId)) continue;\r\n\r\n      const drawId = Number(rawDrawId);\r\n      const whites = [row[2], row[3], row[4], row[5], row[6]]\r\n        .map(function (value) {\r\n          return Number(String(value == null ? \"\" : value).trim());\r\n        })\r\n        .filter(function (num) {\r\n          return Number.isFinite(num) && num >= 1 && num <= 45;\r\n        })\r\n        .sort(function (a, b) {\r\n          return a - b;\r\n        });\r\n\r\n      const tzoker = Number(String(row[7] == null ? \"\" : row[7]).trim());\r\n      if (whites.length !== 5 || !Number.isFinite(tzoker) || seen[drawId]) continue;\r\n      seen[drawId] = true;\r\n\r\n      draws.push({\r\n        year: Number(year),\r\n        drawId: drawId,\r\n        whites: whites,\r\n        tzoker: tzoker\r\n      });\r\n    }\r\n\r\n    return draws;\r\n  }\r\n\r\n  async function loadYearDraws(year) {\r\n    if (yearDrawCache[year]) return yearDrawCache[year];\r\n\r\n    const cached = readYearCache(year);\r\n    if (cached) {\r\n      yearDrawCache[year] = cached;\r\n      return cached;\r\n    }\r\n\r\n    const rows = await gvizFetchRows(SHEET_BY_YEAR[year]);\r\n    const yearDraws = normalizeDrawRows(rows, year);\r\n    yearDraws.sort(function (a, b) {\r\n      return a.drawId - b.drawId;\r\n    });\r\n    yearDrawCache[year] = yearDraws;\r\n    writeYearCache(year, yearDraws);\r\n    return yearDraws;\r\n  }\r\n\r\n  async function loadDrawsForYears(years) {\r\n    const groupedDraws = new Array(years.length);\r\n    const globalSeen = {};\r\n    let cursor = 0;\r\n\r\n    async function worker() {\r\n      while (cursor < years.length) {\r\n        const index = cursor++;\r\n        const year = years[index];\r\n        groupedDraws[index] = await loadYearDraws(year);\r\n      }\r\n    }\r\n\r\n    const workers = [];\r\n    const workerCount = Math.min(LOAD_CONCURRENCY, years.length);\r\n    for (let i = 0; i < workerCount; i++) {\r\n      workers.push(worker());\r\n    }\r\n    await Promise.all(workers);\r\n\r\n    const allDraws = [];\r\n    for (let i = 0; i < groupedDraws.length; i++) {\r\n      const yearDraws = groupedDraws[i] || [];\r\n      for (let j = 0; j < yearDraws.length; j++) {\r\n        const draw = yearDraws[j];\r\n        if (globalSeen[draw.drawId]) continue;\r\n        globalSeen[draw.drawId] = true;\r\n        allDraws.push(draw);\r\n      }\r\n    }\r\n\r\n    return allDraws;\r\n  }\r\n\r\n  function scheduleBackgroundWork(task) {\r\n    if (window.requestIdleCallback) {\r\n      window.requestIdleCallback(function () {\r\n        task();\r\n      }, { timeout: 1000 });\r\n      return;\r\n    }\r\n\r\n    setTimeout(task, 0);\r\n  }\r\n\r\n  function renderPatternItems(items) {\r\n    if (!items.length) return \"<p>No pattern data available.<\/p>\";\r\n\r\n    return items.map(function (item) {\r\n      const numbers = item[0].split(\"-\");\r\n      return (\r\n        '<div style=\"margin-bottom:8px; text-align:center;\">' +\r\n          numbers.map(function (n) {\r\n            return (\r\n              '<span style=\"display:inline-block;background:#fff;color:#000;border-radius:50%;width:30px;height:30px;line-height:30px;text-align:center;font-weight:bold;margin:2px;\">' +\r\n                n +\r\n              \"<\/span>\"\r\n            );\r\n          }).join(\"\") +\r\n          '<span style=\"margin-left:8px; opacity:0.7;\">(' + item[1] + \"x)<\/span>\" +\r\n        \"<\/div>\"\r\n      );\r\n    }).join(\"\");\r\n  }\r\n\r\n  function renderYearCard(year, top) {\r\n    return (\r\n      '<div class=\"llw-card\" style=\"text-align:center;\">' +\r\n        '<h3>\ud83d\udd25 Top Numbers (' + year + ')<\/h3>' +\r\n        '<div>' +\r\n          top.map(function (item) {\r\n            return (\r\n              '<div style=\"display:inline-block;text-align:center;margin:6px;\">' +\r\n                '<div style=\"background:#fff;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;font-weight:bold;margin:auto;border:1px solid rgba(0,0,0,0.15);\">' +\r\n                  item[0] +\r\n                '<\/div>' +\r\n                '<div style=\"font-size:12px;margin-top:4px;\">' + item[1] + 'x<\/div>' +\r\n              '<\/div>'\r\n            );\r\n          }).join(\"\") +\r\n        '<\/div>' +\r\n      '<\/div>'\r\n    );\r\n  }\r\n\r\n  function renderHotCold(list, mode) {\r\n    if (!list.length) return \"<p>No data available.<\/p>\";\r\n\r\n    const maxValue = mode === \"hot\" ? list[0].count : list[0].gap;\r\n\r\n    function renderBall(num) {\r\n      if (mode === \"cold\") {\r\n        return (\r\n          '<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" aria-hidden=\"true\" style=\"display:block;min-width:38px;\">' +\r\n            '<circle cx=\"19\" cy=\"19\" r=\"17\" fill=\"#cfe8ff\" stroke=\"#5aa9ff\" stroke-width=\"3\"><\/circle>' +\r\n            '<text x=\"19\" y=\"24\" text-anchor=\"middle\" font-family=\"Arial, sans-serif\" font-size=\"14\" font-weight=\"700\" fill=\"#003b73\">' +\r\n              num +\r\n            '<\/text>' +\r\n          '<\/svg>'\r\n        );\r\n      }\r\n\r\n      return '<span style=\"display:inline-flex !important;align-items:center !important;justify-content:center !important;width:34px !important;height:34px !important;min-width:34px !important;border-radius:50% !important;background:#ffffff !important;color:#000000 !important;-webkit-text-fill-color:#000000 !important;border:2px solid rgba(0,0,0,0.35) !important;font-weight:bold !important;box-sizing:border-box !important;\">' + num + '<\/span>';\r\n    }\r\n\r\n    return list.map(function (item) {\r\n      const intensityBase = mode === \"hot\" ? item.count : item.gap;\r\n      const intensity = maxValue > 0 ? intensityBase \/ maxValue : 0;\r\n      const bg = mode === \"cold\"\r\n        ? \"rgba(140,195,255,\" + (0.22 + intensity * 0.28) + \")\"\r\n        : \"rgba(255,255,255,\" + (0.1 + intensity * 0.4) + \")\";\r\n\r\n      return (\r\n        '<div class=\"lw-number\" style=\"background:' + bg + ' !important;\">' +\r\n          renderBall(item.num) +\r\n          '<span class=\"lw-meta\">' + item.count + 'x | ' + item.gap + ' draws ago<\/span>' +\r\n        '<\/div>'\r\n      );\r\n    }).join(\"\");\r\n  }\r\n\r\n  function renderAnalysisCharts(draws) {\r\n    let odd = 0;\r\n    let even = 0;\r\n    let low = 0;\r\n    let high = 0;\r\n    const ranges = [0, 0, 0, 0, 0];\r\n\r\n    draws.forEach(function (draw) {\r\n      draw.whites.forEach(function (n) {\r\n        if (n % 2 === 0) even++;\r\n        else odd++;\r\n\r\n        if (n <= 22) low++;\r\n        else high++;\r\n\r\n        if (n <= 9) ranges[0]++;\r\n        else if (n <= 18) ranges[1]++;\r\n        else if (n <= 27) ranges[2]++;\r\n        else if (n <= 36) ranges[3]++;\r\n        else ranges[4]++;\r\n      });\r\n    });\r\n\r\n    new Chart(document.getElementById(\"tz-super-odd-even-chart\"), {\r\n      type: \"bar\",\r\n      data: {\r\n        labels: [\"Odd\", \"Even\"],\r\n        datasets: [{\r\n          data: [odd, even],\r\n          backgroundColor: [\"#7c3aed\", \"#06b6d4\"],\r\n          borderColor: [\"#5b21b6\", \"#0e7490\"],\r\n          borderWidth: 1,\r\n          borderRadius: 8\r\n        }]\r\n      },\r\n      options: {\r\n        responsive: true,\r\n        plugins: { legend: { display: false } },\r\n        scales: { y: { beginAtZero: true } }\r\n      }\r\n    });\r\n\r\n    new Chart(document.getElementById(\"tz-super-high-low-chart\"), {\r\n      type: \"bar\",\r\n      data: {\r\n        labels: [\"Low (1-22)\", \"High (23-45)\"],\r\n        datasets: [{\r\n          data: [low, high],\r\n          backgroundColor: [\"#22c55e\", \"#f59e0b\"],\r\n          borderColor: [\"#15803d\", \"#b45309\"],\r\n          borderWidth: 1,\r\n          borderRadius: 8\r\n        }]\r\n      },\r\n      options: {\r\n        responsive: true,\r\n        plugins: { legend: { display: false } },\r\n        scales: { y: { beginAtZero: true } }\r\n      }\r\n    });\r\n\r\n    new Chart(document.getElementById(\"tz-super-range-chart\"), {\r\n      type: \"bar\",\r\n      data: {\r\n        labels: [\"1-9\", \"10-18\", \"19-27\", \"28-36\", \"37-45\"],\r\n        datasets: [{\r\n          data: ranges,\r\n          backgroundColor: [\"#3b82f6\", \"#06b6d4\", \"#8b5cf6\", \"#ec4899\", \"#ef4444\"],\r\n          borderColor: [\"#1d4ed8\", \"#0e7490\", \"#6d28d9\", \"#be185d\", \"#b91c1c\"],\r\n          borderWidth: 1,\r\n          borderRadius: 8\r\n        }]\r\n      },\r\n      options: {\r\n        responsive: true,\r\n        plugins: { legend: { display: false } },\r\n        scales: { y: { beginAtZero: true } }\r\n      }\r\n    });\r\n  }\r\n\r\n  function renderPatterns(draws) {\r\n    const pairFreq = {};\r\n    const tripletFreq = {};\r\n    const consecutiveFreq = {};\r\n\r\n    draws.forEach(function (draw) {\r\n      const numbers = draw.whites.slice().sort(function (a, b) {\r\n        return a - b;\r\n      });\r\n\r\n      for (let i = 0; i < numbers.length; i++) {\r\n        for (let j = i + 1; j < numbers.length; j++) {\r\n          const key = numbers[i] + \"-\" + numbers[j];\r\n          pairFreq[key] = (pairFreq[key] || 0) + 1;\r\n        }\r\n      }\r\n\r\n      for (let i = 0; i < numbers.length; i++) {\r\n        for (let j = i + 1; j < numbers.length; j++) {\r\n          for (let k = j + 1; k < numbers.length; k++) {\r\n            const key = numbers[i] + \"-\" + numbers[j] + \"-\" + numbers[k];\r\n            tripletFreq[key] = (tripletFreq[key] || 0) + 1;\r\n          }\r\n        }\r\n      }\r\n\r\n      for (let i = 0; i < numbers.length - 1; i++) {\r\n        if (numbers[i + 1] === numbers[i] + 1) {\r\n          const key = numbers[i] + \"-\" + numbers[i + 1];\r\n          consecutiveFreq[key] = (consecutiveFreq[key] || 0) + 1;\r\n        }\r\n      }\r\n    });\r\n\r\n    const topPairs = Object.entries(pairFreq).sort(function (a, b) {\r\n      return b[1] - a[1];\r\n    }).slice(0, 5);\r\n\r\n    const topTriplets = Object.entries(tripletFreq).sort(function (a, b) {\r\n      return b[1] - a[1];\r\n    }).slice(0, 5);\r\n\r\n    const topConsecutive = Object.entries(consecutiveFreq).sort(function (a, b) {\r\n      return b[1] - a[1];\r\n    }).slice(0, 5);\r\n\r\n    document.getElementById(\"tz-super-pairs\").innerHTML = renderPatternItems(topPairs);\r\n    document.getElementById(\"tz-super-triplets\").innerHTML = renderPatternItems(topTriplets);\r\n    document.getElementById(\"tz-super-consecutive\").innerHTML = renderPatternItems(topConsecutive);\r\n  }\r\n\r\n  function renderYearlyTrends(draws) {\r\n    const years = Object.keys(SHEET_BY_YEAR).sort(function (a, b) {\r\n      return Number(b) - Number(a);\r\n    }).filter(function (year) {\r\n      return Number(year) >= MIN_YEARLY_TRENDS_YEAR;\r\n    });\r\n    let html = \"\";\r\n\r\n    for (let i = 0; i < years.length; i++) {\r\n      const year = Number(years[i]);\r\n      const freq = {};\r\n\r\n      draws.filter(function (draw) {\r\n        return draw.year === year;\r\n      }).forEach(function (draw) {\r\n        draw.whites.forEach(function (n) {\r\n          freq[n] = (freq[n] || 0) + 1;\r\n        });\r\n      });\r\n\r\n      const top = Object.entries(freq).sort(function (a, b) {\r\n        if (b[1] !== a[1]) return b[1] - a[1];\r\n        return Number(a[0]) - Number(b[0]);\r\n      }).slice(0, 10);\r\n\r\n      html += renderYearCard(year, top);\r\n    }\r\n\r\n    document.getElementById(\"tz-super-yearly-grid\").innerHTML =\r\n      html || '<div class=\"llw-card\"><p>No yearly TZOKER data found.<\/p><\/div>';\r\n  }\r\n\r\n  function renderHotColdSection(draws) {\r\n    const freq = {};\r\n    const lastSeen = {};\r\n    const recentDraws = draws.filter(function (draw) {\r\n      return draw.year >= MIN_HOT_COLD_YEAR;\r\n    });\r\n\r\n    for (let i = 1; i <= 45; i++) {\r\n      freq[i] = 0;\r\n      lastSeen[i] = -1;\r\n    }\r\n\r\n    recentDraws.forEach(function (draw, index) {\r\n      draw.whites.forEach(function (n) {\r\n        freq[n]++;\r\n        lastSeen[n] = index;\r\n      });\r\n    });\r\n\r\n    state.totalRecentDraws = recentDraws.length;\r\n\r\n    const stats = Object.keys(freq).map(function (n) {\r\n      const num = parseInt(n, 10);\r\n      return {\r\n        num: num,\r\n        count: freq[num],\r\n        gap: lastSeen[num] === -1 ? state.totalRecentDraws : state.totalRecentDraws - lastSeen[num]\r\n      };\r\n    });\r\n\r\n    stats.forEach(function (item) {\r\n      state.globalStats[item.num] = item;\r\n    });\r\n\r\n    const hot = stats.slice().sort(function (a, b) {\r\n      if (b.count !== a.count) return b.count - a.count;\r\n      return a.num - b.num;\r\n    }).slice(0, 10);\r\n\r\n    const cold = stats.slice().sort(function (a, b) {\r\n      if (a.count !== b.count) return a.count - b.count;\r\n      if (b.gap !== a.gap) return b.gap - a.gap;\r\n      return a.num - b.num;\r\n    }).slice(0, 10);\r\n\r\n    document.getElementById(\"tz-super-hot-list\").innerHTML = renderHotCold(hot, \"hot\");\r\n    document.getElementById(\"tz-super-cold-list\").innerHTML = renderHotCold(cold, \"cold\");\r\n  }\r\n\r\n  function setupSearch() {\r\n    const inputEl = document.getElementById(\"tz-super-search-input\");\r\n    const buttonEl = document.getElementById(\"tz-super-search-btn\");\r\n    const resultEl = document.getElementById(\"tz-super-search-result\");\r\n\r\n    function searchNumber() {\r\n      const num = parseInt(inputEl.value, 10);\r\n      if (!num || num < 1 || num > 45) {\r\n        resultEl.innerHTML = \"Enter a valid number (1-45)\";\r\n        return;\r\n      }\r\n\r\n      const data = state.globalStats[num];\r\n      if (!data || data.count === 0) {\r\n        resultEl.innerHTML = \"Number \" + num + \" has not appeared yet.\";\r\n        return;\r\n      }\r\n\r\n      resultEl.innerHTML =\r\n        \"Number <b>\" + num + \"<\/b> appeared <b>\" + data.count + \"<\/b> times since 2024<br>\" +\r\n        \"Last seen <b>\" + data.gap + \"<\/b> draws ago\";\r\n    }\r\n\r\n    buttonEl.addEventListener(\"click\", searchNumber);\r\n    inputEl.addEventListener(\"keypress\", function (e) {\r\n      if (e.key === \"Enter\") searchNumber();\r\n    });\r\n  }\r\n\r\n  function renderGlobalError(message) {\r\n    document.getElementById(\"tz-super-hot-list\").innerHTML = message;\r\n    document.getElementById(\"tz-super-cold-list\").innerHTML = message;\r\n    document.getElementById(\"tz-super-pairs\").innerHTML = message;\r\n    document.getElementById(\"tz-super-triplets\").innerHTML = message;\r\n    document.getElementById(\"tz-super-consecutive\").innerHTML = message;\r\n    document.getElementById(\"tz-super-yearly-grid\").innerHTML = '<div class=\"llw-card\"><p>' + message.replace(\/<[^>]+>\/g, \"\") + '<\/p><\/div>';\r\n\r\n    const oddCard = document.getElementById(\"tz-super-odd-even-chart\");\r\n    const highCard = document.getElementById(\"tz-super-high-low-chart\");\r\n    const rangeCard = document.getElementById(\"tz-super-range-chart\");\r\n    if (oddCard && oddCard.parentNode) oddCard.parentNode.innerHTML = \"<p>Unable to load TZOKER analysis.<\/p>\";\r\n    if (highCard && highCard.parentNode) highCard.parentNode.innerHTML = \"<p>Unable to load TZOKER analysis.<\/p>\";\r\n    if (rangeCard && rangeCard.parentNode) rangeCard.parentNode.innerHTML = \"<p>Unable to load TZOKER analysis.<\/p>\";\r\n  }\r\n\r\n  async function init() {\r\n    setupSearch();\r\n\r\n    try {\r\n      const allYears = Object.keys(SHEET_BY_YEAR).sort(function (a, b) {\r\n        return Number(a) - Number(b);\r\n      });\r\n      const recentYears = allYears.filter(function (year) {\r\n        return Number(year) >= MIN_HOT_COLD_YEAR;\r\n      });\r\n\r\n      const recentDraws = await loadDrawsForYears(recentYears);\r\n      if (!recentDraws.length) {\r\n        renderGlobalError(\"<p>No TZOKER draws found.<\/p>\");\r\n        return;\r\n      }\r\n\r\n      renderHotColdSection(recentDraws);\r\n      renderAnalysisCharts(recentDraws);\r\n    } catch (err) {\r\n      renderGlobalError(\"<p>Unable to load TZOKER data.<\/p>\");\r\n      return;\r\n    }\r\n\r\n    scheduleBackgroundWork(async function () {\r\n      try {\r\n        const allYears = Object.keys(SHEET_BY_YEAR).sort(function (a, b) {\r\n          return Number(a) - Number(b);\r\n        });\r\n        const allDraws = await loadDrawsForYears(allYears);\r\n        renderPatterns(allDraws);\r\n        renderYearlyTrends(allDraws);\r\n      } catch (err) {\r\n        document.getElementById(\"tz-super-pairs\").innerHTML = \"<p>Unable to load pattern data.<\/p>\";\r\n        document.getElementById(\"tz-super-triplets\").innerHTML = \"<p>Unable to load pattern data.<\/p>\";\r\n        document.getElementById(\"tz-super-consecutive\").innerHTML = \"<p>Unable to load pattern data.<\/p>\";\r\n        document.getElementById(\"tz-super-yearly-grid\").innerHTML =\r\n          '<div class=\"llw-card\"><p>Unable to load yearly TZOKER trends.<\/p><\/div>';\r\n      }\r\n    });\r\n  }\r\n\r\n  init();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7de63f elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"b7de63f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-62bcd2f .ball { background: white; } .joker { background: #ffcc00; } elementor-widget elementor-widget-html\" data-id=\"62bcd2f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n  <title>Joker - Random Numbers & Next Draw<\/title>\r\n<\/head>\r\n<body style=\"font-family:Arial,sans-serif;background:#111;color:white;margin:0;padding:20px;text-align:center;\">\r\n\r\n  <header style=\"padding:20px 0;\">\r\n    <h1 style=\"margin:0 0 20px 0;\">\ud83c\udfab\ufe0f Joker<\/h1>\r\n  <\/header>\r\n\r\n  <!-- Countdown Timer -->\r\n  <div style=\"background:#0b0b0b;padding:20px;border-radius:12px;margin-bottom:40px;\">\r\n    <div style=\"font-size:1.2rem;color:#ddd;\">\r\n      The draw takes place every Tuesday, Thursday and Sunday at 21:30\r\n    <\/div>\r\n    <div id=\"countdown\" style=\"font-size:1.8rem;color:#ffcc00;font-weight:bold;margin-top:10px;\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- Generator -->\r\n  <div style=\"display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;max-width:800px;margin:0 auto;\">\r\n    <h2 style=\"margin:0 0 20px 0;\">Random Number Selection<\/h2>\r\n    <button id=\"generateBtn\" onclick=\"generateTzoker()\" style=\"background:#007bff;color:white;border:none;padding:15px 35px;border-radius:12px;font-size:18px;cursor:pointer;position:relative;overflow:hidden;display:block;margin:20px auto;box-shadow:0 0 15px rgba(0,123,255,0.6);transition:all 0.3s;\">\r\n      Generate Numbers\r\n    <\/button>\r\n    <div id=\"numbers\" style=\"display:flex;justify-content:center;gap:10px;margin-top:30px;flex-wrap:wrap;\"><\/div>\r\n  <\/div>\r\n\r\n  <footer style=\"text-align:center;padding:20px 0;color:#bbb;font-size:0.9rem;\">\r\n     All numbers are random\r\n  <\/footer>\r\n\r\n  <script>\r\n    \/\/ Countdown Timer\r\n    function getNextDrawDate() {\r\n      const now = new Date();\r\n      const drawDays = [2, 4, 0]; \/\/ Tuesday=2, Thursday=4, Sunday=0\r\n      let nextDraw = new Date(now);\r\n\r\n      while (\r\n        !drawDays.includes(nextDraw.getDay()) ||\r\n        (nextDraw.getDay() === now.getDay() &&\r\n          (now.getHours() > 21 ||\r\n           (now.getHours() === 21 && now.getMinutes() >= 30)))\r\n      ) {\r\n        nextDraw.setDate(nextDraw.getDate() + 1);\r\n      }\r\n\r\n      nextDraw.setHours(21, 30, 0, 0);\r\n      return nextDraw;\r\n    }\r\n\r\n    function updateCountdown() {\r\n      const countdown = document.getElementById(\"countdown\");\r\n      const now = new Date();\r\n      const drawTime = getNextDrawDate();\r\n      const diff = drawTime - now;\r\n\r\n      if (diff <= 0) {\r\n        countdown.innerHTML = \"The draw starts now!\";\r\n        return;\r\n      }\r\n\r\n      const days = Math.floor(diff \/ (1000 * 60 * 60 * 24));\r\n      const hours = Math.floor((diff \/ (1000 * 60 * 60)) % 24);\r\n      const minutes = Math.floor((diff \/ (1000 * 60)) % 60);\r\n      const seconds = Math.floor((diff \/ 1000) % 60);\r\n\r\n      countdown.innerHTML = `${days}d ${hours}h ${minutes}m ${seconds}s`;\r\n    }\r\n\r\n    setInterval(updateCountdown, 1000);\r\n    updateCountdown();\r\n\r\n    \/\/ Joker Generator\r\n    function generateTzoker() {\r\n      const container = document.getElementById('numbers');\r\n      container.innerHTML = '';\r\n\r\n      const mainNumbers = [];\r\n      while (mainNumbers.length < 5) {\r\n        const num = Math.floor(Math.random() * 45) + 1;\r\n        if (!mainNumbers.includes(num)) mainNumbers.push(num);\r\n      }\r\n\r\n      mainNumbers.sort((a, b) => a - b);\r\n\r\n      mainNumbers.forEach(n => {\r\n        const ball = document.createElement('div');\r\n        ball.textContent = n;\r\n        ball.setAttribute('style',\r\n          'width:60px;height:60px;border-radius:50%;background:white;color:black;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:bold;box-shadow:0 0 10px rgba(255,255,255,0.4);margin:5px;'\r\n        );\r\n        container.appendChild(ball);\r\n      });\r\n\r\n      const joker = Math.floor(Math.random() * 20) + 1;\r\n      const jokerBall = document.createElement('div');\r\n      jokerBall.textContent = joker;\r\n      jokerBall.setAttribute('style',\r\n        'width:60px;height:60px;border-radius:50%;background:#ffcc00;color:black;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:bold;box-shadow:0 0 10px rgba(255,204,0,0.8);margin:5px;'\r\n      );\r\n      container.appendChild(jokerBall);\r\n    }\r\n\r\n    \/\/ Button hover effect\r\n    const btn = document.getElementById('generateBtn');\r\n    btn.addEventListener('mouseenter', () => {\r\n      btn.style.boxShadow = '0 0 30px rgba(255,255,255,0.9), 0 0 60px rgba(0,123,255,0.7)';\r\n      btn.style.transform = 'scale(1.05)';\r\n    });\r\n\r\n    btn.addEventListener('mouseleave', () => {\r\n      btn.style.boxShadow = '0 0 15px rgba(0,123,255,0.6)';\r\n      btn.style.transform = 'scale(1)';\r\n    });\r\n\r\n    \/\/ Generate numbers on page load\r\n    generateTzoker();\r\n  <\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2bbe773 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"2bbe773\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eec47b4 e-flex e-con-boxed e-con e-parent\" data-id=\"eec47b4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8a155e9 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8a155e9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-177e052 elementor-widget elementor-widget-heading\" data-id=\"177e052\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab How to Play Tzoker<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9965d94 elementor-widget elementor-widget-text-editor\" data-id=\"9965d94\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6>Tzoker is one of Greece\u2019s most popular lotteries, giving players the chance to win life-changing prizes every week. To play, you need to choose <strong data-start=\"425\" data-end=\"459\">five main numbers from 1 to 45<\/strong> and <strong data-start=\"464\" data-end=\"498\">one Tzoker number from 1 to 20<\/strong>. Tickets can be purchased online or at authorized retailers across Greece. Each draw provides multiple ways to win, making the game exciting for both casual and regular players. Whether you\u2019re aiming for the jackpot or smaller prizes, understanding how Tzoker works is the first step toward winning. By regularly checking <strong data-start=\"821\" data-end=\"839\">Tzoker Results<\/strong>, you can see if your chosen numbers match the winning combination and plan your next tickets accordingly.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-582ec76 e-flex e-con-boxed e-con e-parent\" data-id=\"582ec76\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b25ce4 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"9b25ce4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bd787f elementor-widget elementor-widget-heading\" data-id=\"3bd787f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab Tzoker Prizes<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f553496 elementor-widget elementor-widget-text-editor\" data-id=\"f553496\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6>Tzoker offers several prize tiers, rewarding players based on how many numbers they match. The jackpot is awarded to those who correctly select all five main numbers plus the Tzoker number. Other prizes are available for matching fewer numbers, with payouts varying depending on the number of winners and the draw\u2019s total prize fund. The minimum jackpot starts at <strong data-start=\"1339\" data-end=\"1353\">\u20ac1 million<\/strong> and can roll over, increasing dramatically if no player wins. Smaller prizes allow more frequent wins and add to the excitement. Checking <strong data-start=\"1492\" data-end=\"1510\">Tzoker Results<\/strong> ensures you\u2019re always up to date with the latest winners and prize amounts, helping you plan your game strategy and follow trends in number selection.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b18d45 e-flex e-con-boxed e-con e-parent\" data-id=\"2b18d45\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d48b90c elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"d48b90c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aeb1a21 elementor-widget elementor-widget-heading\" data-id=\"aeb1a21\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab About Tzoker<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4cf9951 elementor-widget elementor-widget-text-editor\" data-id=\"4cf9951\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6 data-start=\"1690\" data-end=\"2268\">Launched in 1997, Tzoker is organized by the Greek Organization of Football Prognostics (OPAP). The draws are held twice a week, on <strong data-start=\"1822\" data-end=\"1846\">Tuesdays and Fridays<\/strong>, providing players with regular opportunities to win. Tzoker is well-known for its transparency and fairness, with official draws broadcast live and results immediately made available online. Historical <strong data-start=\"2050\" data-end=\"2068\">Tzoker Results<\/strong> allow players to study past winning numbers, analyze patterns, and select their numbers based on trends. This lottery has become a staple in Greek culture, with millions of tickets sold every week.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8397387 e-flex e-con-boxed e-con e-parent\" data-id=\"8397387\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cff2416 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"cff2416\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6e6944b elementor-widget elementor-widget-heading\" data-id=\"6e6944b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab Checking Tzoker Results<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0d382de elementor-widget elementor-widget-text-editor\" data-id=\"0d382de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6 data-start=\"1690\" data-end=\"2268\">After every draw, the winning numbers are published on official channels, including OPAP\u2019s website. You can also check your numbers at authorized retailers or through online lottery portals. By reviewing <strong data-start=\"2510\" data-end=\"2528\">Tzoker Results<\/strong>, you can see your match status across different prize tiers, from small prizes to the jackpot. Many players also track trends and statistics from past draws to improve their number selection. Always make sure to verify results with trusted sources to ensure accuracy and avoid scams.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b15f84e e-flex e-con-boxed e-con e-parent\" data-id=\"b15f84e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c8241c7 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"c8241c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fee7005 elementor-widget elementor-widget-heading\" data-id=\"fee7005\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab Tzoker Odds and Transparency<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27055c2 elementor-widget elementor-widget-text-editor\" data-id=\"27055c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6 data-start=\"2857\" data-end=\"3304\">Tzoker odds are clearly published to give players full transparency. Each combination has a defined probability, and the jackpot remains the most difficult prize to win. By consulting <strong data-start=\"3041\" data-end=\"3059\">Tzoker Results<\/strong> alongside published odds, players gain insight into how often certain combinations appear and which prize tiers are most attainable. This transparency helps players enjoy the game responsibly while maintaining trust in the lottery\u2019s fairness.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7776eee e-flex e-con-boxed e-con e-parent\" data-id=\"7776eee\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-03c6a8e elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"03c6a8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c4ec5a6 elementor-widget elementor-widget-heading\" data-id=\"c4ec5a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab Responsible Play and Safety<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-52ff3c2 elementor-widget elementor-widget-text-editor\" data-id=\"52ff3c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6 data-start=\"2857\" data-end=\"3304\">While Tzoker is an exciting way to try your luck, it\u2019s important to play responsibly. Always set a budget and avoid chasing losses. For players who may need support, resources such as the Greek Helpline for Gambling Addiction (\u039a\u0395\u0398\u0395\u0391) are available to provide guidance and assistance. Monitoring <strong data-start=\"3641\" data-end=\"3659\">Tzoker Results<\/strong> regularly is safe and informative, but always remember to play for fun rather than dependence.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3f2f1cf e-flex e-con-boxed e-con e-parent\" data-id=\"3f2f1cf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2307880 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"2307880\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0d4eada elementor-widget elementor-widget-heading\" data-id=\"0d4eada\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\ud83c\udfab Why Follow Tzoker Results<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-448e1fb elementor-widget elementor-widget-text-editor\" data-id=\"448e1fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h6 data-start=\"2857\" data-end=\"3304\">Following <strong data-start=\"3806\" data-end=\"3824\">Tzoker Results<\/strong> allows you to stay informed about draws, jackpots, and winning numbers. You\u2019ll never miss a big win, and you can see historical trends to make informed choices for future tickets. Staying updated also connects you to the larger community of players who eagerly track each draw. Whether you\u2019re a first-time player or a regular, knowing the latest <strong data-start=\"4171\" data-end=\"4189\">Tzoker Results<\/strong> adds excitement to every ticket purchase.While Tzoker is an exciting way to try your luck, it\u2019s important to play responsibly. Always set a budget and avoid chasing losses. For players who may need support, resources such as the Greek Helpline for Gambling Addiction (\u039a\u0395\u0398\u0395\u0391) are available to provide guidance and assistance. Monitoring <strong data-start=\"3641\" data-end=\"3659\">Tzoker Results<\/strong> regularly is safe and informative, but always remember to play for fun rather than dependence.<\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a41e5b elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"6a41e5b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-18b29c8 elementor-widget elementor-widget-html\" data-id=\"18b29c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- TRUST & INFO SECTIONS -->\r\n<section class=\"llw-section\" style=\"margin-top:40px;\">\r\n  <div class=\"llw-container\" style=\"max-width:800px; margin:0 auto; text-align:left;\">\r\n\r\n    <!-- 9. Disclaimer -->\r\n    <div style=\"\r\n      background:#fff3cd;\r\n      color:#000;\r\n      padding:15px 20px;\r\n      border-left:5px solid #ffc107;\r\n      border-radius:8px;\r\n      margin-bottom:20px;\r\n    \">\r\n      <h3 style=\"margin-top:0; color:#000;\">\ud83e\uddf1 Disclaimer<\/h3>\r\n      <p style=\"margin:0; color:#000;\">\r\n        LLW \u2013 Lottery Lotto Win is an informational platform only. We do not sell lottery tickets, promote gambling, or encourage betting. All TZOKER content is provided for news, informational, and entertainment purposes. Always play responsibly and follow the laws of your country.\r\n      <\/p>\r\n    <\/div>\r\n\r\n    <!-- 10. FAQ -->\r\n    <div style=\"\r\n      background:#e2e3e5;\r\n      color:#000;\r\n      padding:15px 20px;\r\n      border-radius:8px;\r\n      margin-bottom:20px;\r\n    \">\r\n      <h3 style=\"margin-top:0; color:#000;\">\u2753 FAQ<\/h3>\r\n      <p style=\"color:#000;\"><b>Q: Can past results predict future numbers?<\/b><br>\r\n      A: No. Each draw is independent, and past results do not influence future outcomes. Lottery is purely chance-based.<\/p>\r\n\r\n      <p style=\"color:#000;\"><b>Q: What are the odds of winning TZOKER?<\/b><br>\r\n      A: TZOKER uses 6 numbers: 5 main numbers plus 1 TZOKER number.  \r\n      - Jackpot (all 5 main numbers + TZOKER): <b>1 in 24,435,180<\/b><br>\r\n      - 5 main numbers: 1 in 1,221,759<br>\r\n      - 4 main numbers + TZOKER: 1 in 97,741<br>\r\n      - Other combinations vary, always chance-based.  \r\n      Lottery is purely chance-based.<\/p>\r\n    <\/div>\r\n\r\n    <!-- 4. Responsible Play Section -->\r\n    <div style=\"\r\n      background:#f8d7da;\r\n      color:#000;\r\n      padding:15px 20px;\r\n      border-left:5px solid #dc3545;\r\n      border-radius:8px;\r\n      text-align:center;\r\n      font-weight:bold;\r\n    \">\r\n      \u26a0\ufe0f Play responsibly | Set limits | Lottery is chance-based\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4819501 e-flex e-con-boxed e-con e-parent\" data-id=\"4819501\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ff6dc53 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"ff6dc53\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35ff22f elementor-widget elementor-widget-heading\" data-id=\"35ff22f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.allwyn.cy\/el\/games\/\" target=\"_blank\" rel=\"noopener\">You may also be interested in checking other popular lottery results.<\/a><\/h6>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e3e9352 e-flex e-con-boxed e-con e-parent\" data-id=\"e3e9352\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b931063 elementor-widget elementor-widget-html\" data-id=\"b931063\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n.lottery-widget {\r\n  display: flex;\r\n  gap: 14px;\r\n  max-width: 520px;\r\n  margin: 16px auto;\r\n}\r\n\r\n.lottery-button {\r\n  flex: 1;\r\n  background: linear-gradient(135deg, #111827, #020617);\r\n  border-radius: 12px;\r\n  padding: 14px 12px; \/* smaller height *\/\r\n  text-align: center;\r\n  text-decoration: none;\r\n  color: #f9fafb;\r\n  font-family: Arial, sans-serif;\r\n  font-weight: 700;\r\n  letter-spacing: 0.6px;\r\n  box-shadow: 0 8px 18px rgba(0,0,0,0.35);\r\n  border: 1px solid rgba(234, 179, 8, 0.25);\r\n  transition: all 0.2s ease;\r\n}\r\n\r\n.lottery-button span {\r\n  display: block;\r\n  font-size: 11px;\r\n  font-weight: 400;\r\n  color: #facc15; \/* gold accent *\/\r\n  margin-top: 4px;\r\n}\r\n\r\n.lottery-button:hover {\r\n  transform: translateY(-2px);\r\n  background: linear-gradient(135deg, #1f2937, #020617);\r\n  box-shadow: 0 12px 28px rgba(0,0,0,0.45);\r\n  border-color: rgba(234, 179, 8, 0.6);\r\n}\r\n\r\n\/* Mobile *\/\r\n@media (max-width: 600px) {\r\n  .lottery-widget {\r\n    flex-direction: column;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<div class=\"lottery-widget\">\r\n  <a href=\"https:\/\/lotterylottowin.com\/eurojackpot-results\/\" class=\"lottery-button\">\r\n    EUROJACKPOT\r\n    <span>Latest Results<\/span>\r\n  <\/a>\r\n\r\n  <a href=\"https:\/\/lotterylottowin.com\/lotto\/\" class=\"lottery-button\">\r\n    Lotto Greece\r\n    <span>Jackpot Info<\/span>\r\n  <\/a>\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Latest Tzoker Results &#038; Winning Numbers Today Winning numbers, jackpot amounts &#038; full prize breakdown after every draw Loading Joker data\u2026 TZOKER Winner Checker TZOKER Winner Checker Enter 5 main numbers and your TZOKER number to see if this ticket would have won in the stored TZOKER draws. TZOKER Check Ticket Clear Loading TZOKER draw<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-3200","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/pages\/3200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/comments?post=3200"}],"version-history":[{"count":271,"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/pages\/3200\/revisions"}],"predecessor-version":[{"id":6252,"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/pages\/3200\/revisions\/6252"}],"wp:attachment":[{"href":"https:\/\/lotterylottowin.com\/el\/wp-json\/wp\/v2\/media?parent=3200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}