{"id":3723,"date":"2026-07-25T17:12:30","date_gmt":"2026-07-25T17:12:30","guid":{"rendered":"https:\/\/abhidham.mcu.ac.th\/?page_id=3723"},"modified":"2026-10-06T03:53:48","modified_gmt":"2026-10-06T03:53:48","slug":"%e0%b9%82%e0%b8%ab%e0%b8%a5%e0%b8%94%e0%b8%82%e0%b9%89%e0%b8%ad%e0%b8%a1%e0%b8%b9%e0%b8%a5%e0%b8%99%e0%b8%b1%e0%b8%81%e0%b8%a8%e0%b8%b6%e0%b8%81%e0%b8%a9%e0%b8%b2%e0%b8%aa%e0%b8%a1%e0%b8%b1%e0%b8%84","status":"publish","type":"page","link":"https:\/\/abhidham.mcu.ac.th\/?page_id=3723","title":{"rendered":"\u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32-ASIS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3723\" class=\"elementor elementor-3723\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7efbd04 e-flex e-con-boxed e-con e-parent\" data-id=\"7efbd04\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ad4f4c elementor-widget elementor-widget-html\" data-id=\"0ad4f4c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Mitr:wght@300;400;500;600&family=Sarabun:wght@300;400;500;600;700&family=Trirong:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n  <style>\n  :root {\n    --primary: #e6007e;\n    --primary-hover: #c00069;\n    --primary-soft: #fdeaf4;\n    --gold: #c8961e;\n    --gold-dark: #a97c12;\n    --gold-soft: #f9f1dd;\n    --ink: #2b2130;\n    --muted: #7a6b74;\n    --line: #f2dfea;\n    --line-strong: #e6c2d7;\n    --surface: #ffffff;\n    --background: #fdf2f8;\n    --success: #1f9d55;\n    --success-soft: #eafaf1;\n    --warning: #b8860b;\n    --warning-soft: #fbf3e0;\n    --danger: #dc3545;\n    --shadow-sm: 0 1px 2px rgba(214, 51, 132, .06);\n    --shadow-md: 0 12px 34px rgba(214, 51, 132, .16);\n    --shadow: var(--shadow-sm);\n    font-family: \"Sarabun\", system-ui, -apple-system, sans-serif;\n  }\n  * { box-sizing: border-box; }\n  html { color-scheme: light; font-size: 14px; }\n  body { margin: 0; color: var(--ink); background: var(--background); }\n  button, input, select { font: inherit; }\n  button { cursor: pointer; }\n  h1, h2, h3 { font-family: \"Mitr\", \"Sarabun\", sans-serif; font-weight: 500; }\n  .btn, .auth-tab { font-family: \"Mitr\", \"Sarabun\", sans-serif; }\n  .hidden { display: none !important; }\n  .muted { color: var(--muted); }\n  .eyebrow { margin: 0 0 .25rem; color: var(--gold-dark); font-size: .72rem; font-weight: 700; letter-spacing: .13em; }\n  .brand-sub { margin: .2rem 0 0; color: var(--muted); font-size: .82rem; font-family: \"Trirong\", serif; line-height: 1.4; }\n\n  \/* Authentication *\/\n  .auth-shell {\n    min-height: 100vh;\n    display: grid;\n    place-items: center;\n    padding: 1rem;\n    background:\n      radial-gradient(circle at 12% 12%, rgba(230, 0, 126, .10), transparent 32%),\n      radial-gradient(circle at 88% 90%, rgba(200, 150, 30, .10), transparent 30%),\n      #fdf2f8;\n  }\n  .auth-card {\n    width: min(460px, 100%);\n    padding: 1rem;\n    background: var(--surface);\n    border: 1px solid var(--line);\n    border-top: 3px solid var(--gold);\n    border-radius: 2px;\n  }\n  .auth-brand { display: flex; align-items: center; gap: .6rem; margin-bottom: .6rem; }\n  .auth-logo {\n    width: 40px; height: 40px; display: grid; place-items: center; flex: 0 0 auto;\n    color: var(--gold); background: var(--primary); border: 2px solid var(--gold);\n    border-radius: 50%; font-size: 1.1rem; font-weight: 700;\n  }\n  .auth-brand h1 { margin: 0; font-size: 1.15rem; line-height: 1.3; }\n  .auth-intro { margin: 0 0 .8rem; color: var(--muted); font-size: .82rem; line-height: 1.5; }\n  .section-heading { margin-bottom: .7rem; }\n  .section-heading h2 { margin: 0 0 .2rem; font-size: 1.05rem; }\n  .section-heading p { margin: 0; color: var(--muted); font-size: .8rem; line-height: 1.5; }\n  .auth-tabs {\n    display: grid; grid-template-columns: 1fr 1fr; gap: .3rem;\n    margin-top: .7rem; padding: .2rem; background: #f1f5f9; border-radius: 2px;\n  }\n  .auth-tab { min-height: 30px; padding: .4rem; border: 0; border-radius: 2px; color: var(--muted); background: transparent; font-weight: 600; }\n  .auth-tab.active { color: var(--primary); background: #fff; border: 1px solid var(--line); }\n  .security-note { display: flex; align-items: center; justify-content: center; gap: .4rem; margin-top: .6rem; color: var(--muted); font-size: .72rem; }\n\n  \/* Forms *\/\n  .field { display: grid; gap: .3rem; margin: .55rem 0; color: #334155; font-size: .82rem; font-weight: 600; }\n  .field small { color: var(--muted); font-size: .72rem; font-weight: 400; }\n  .form-two-columns { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }\n  input, select {\n    width: 100%; min-height: 32px; padding: .35rem .55rem; color: var(--ink);\n    border: 1px solid var(--line-strong); border-radius: 2px; background: #fff; outline: none;\n    transition: border-color .1s, box-shadow .1s;\n  }\n  input::placeholder { color: #94a3b8; }\n  input:focus, select:focus { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(230, 0, 126, .14); }\n  .password-wrap { position: relative; display: block; }\n  .password-wrap input { padding-right: 4.25rem; }\n  .password-toggle {\n    position: absolute; right: .3rem; top: 50%; transform: translateY(-50%);\n    min-height: 26px; padding: 0 .5rem; color: var(--primary); border: 0; border-radius: 2px; background: transparent; font-size: .74rem; font-weight: 600;\n  }\n  .password-toggle:hover { background: var(--primary-soft); }\n  .btn {\n    min-height: 30px; padding: .35rem .65rem; border: 1px solid transparent;\n    border-radius: 2px; font-weight: 600; font-size: .85rem; transition: background .1s, border-color .1s;\n  }\n  .btn:disabled { cursor: not-allowed; opacity: .55; }\n  .btn-primary { color: #fff; background: var(--primary); }\n  .btn-primary:hover { background: var(--primary-hover); }\n  .btn-outline { color: #334155; border-color: var(--line-strong); background: #fff; }\n  .btn-outline:hover { border-color: #94a3b8; background: #f8fafc; }\n  .btn-ghost { color: #334155; background: #f1f5f9; }\n  .btn-block { width: 100%; }\n  .btn-small { min-height: 26px; padding: .3rem .55rem; font-size: .78rem; }\n  .text-button, .back-button { padding: .5rem 0; color: var(--primary); border: 0; background: transparent; font-weight: 600; }\n\n  \/* Application *\/\n  .app-shell { min-height: 100vh; }\n  .topbar {\n    min-height: 44px; padding: .4rem .9rem;\n    display: flex; align-items: center; justify-content: space-between; gap: 1rem;\n    background: #fff; border-bottom: 1px solid var(--line);\n  }\n  .topbar-brand, .user-menu { display: flex; align-items: center; gap: .6rem; }\n  .mini-mark {\n    width: 30px; height: 30px; display: grid; place-items: center;\n    color: #fff; background: var(--primary); border-radius: 3px; font-weight: 700;\n  }\n  .topbar-brand strong, .topbar-brand small, .user-copy strong, .user-copy small { display: block; }\n  .topbar-brand strong { font-size: .86rem; }\n  .topbar-brand small, .user-copy small { color: var(--muted); font-size: .68rem; }\n  .user-copy { text-align: right; }\n  .notification-bell {\n    position: relative; width: 32px; height: 32px; flex: 0 0 32px;\n    display: grid; place-items: center; padding: 0; color: #475569;\n    border: 1px solid var(--line-strong); border-radius: 50%; background: #fff;\n    font-size: 1.02rem; line-height: 1;\n    transition: color .1s, border-color .1s, background .1s;\n  }\n  .notification-bell:hover { color: var(--primary); border-color: var(--primary); background: var(--primary-soft); }\n  .notification-bell.has-notifications { color: var(--warning); background: var(--warning-soft); }\n  .notification-bell svg { width: 19px; height: 19px; fill: none; }\n  .notification-badge {\n    position: absolute; top: -6px; right: -7px; min-width: 18px; height: 18px; padding: 0 4px;\n    display: grid; place-items: center; color: #fff; background: #dc2626;\n    border: 2px solid #fff; border-radius: 999px; font-size: .62rem; font-weight: 700; line-height: 1;\n  }\n  .app-content { width: min(1320px, calc(100% - 1.5rem)); margin: 0 auto; padding: .9rem 0 1.5rem; }\n  .page-heading { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; }\n  .page-heading h1 { margin: 0; font-size: 1.2rem; }\n  .page-heading .muted { margin: .25rem 0 0; font-size: .82rem; }\n  .heading-actions { display: flex; align-items: end; justify-content: flex-end; gap: .5rem; flex-wrap: wrap; }\n  .live-status { display: flex; align-items: center; gap: .35rem; margin: .25rem 0 0; font-size: .74rem; color: var(--muted); }\n  .live-dot { width: .5rem; height: .5rem; border-radius: 50%; background: var(--success); box-shadow: 0 0 0 0 rgba(31,157,85,.45); animation: livePulse 2.4s ease-out infinite; }\n  @keyframes livePulse { 0% { box-shadow: 0 0 0 0 rgba(31,157,85,.45); } 70% { box-shadow: 0 0 0 .35rem rgba(31,157,85,0); } 100% { box-shadow: 0 0 0 0 rgba(31,157,85,0); } }\n  @media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } }\n  .compact-field { min-width: 200px; color: #334155; font-size: .74rem; font-weight: 600; }\n  .compact-field span { display: block; margin-bottom: .2rem; }\n  .download-group { display: flex; gap: .4rem; }\n\n  .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin: .8rem 0; }\n  .stat-card {\n    padding: .6rem .7rem; display: flex; align-items: center; gap: .6rem;\n    background: #fff; border: 1px solid var(--line); border-radius: 2px;\n  }\n  .stat-card small, .stat-card strong { display: block; }\n  .stat-card small { color: var(--muted); font-size: .76rem; }\n  .stat-card strong { margin-top: .1rem; font-size: 1.15rem; }\n  .stat-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 3px; flex: 0 0 auto; }\n  .stat-icon.teal { background: var(--primary-soft); }\n  .stat-icon.green { color: var(--success); background: var(--success-soft); }\n  .stat-icon.amber { color: var(--warning); background: var(--warning-soft); }\n\n  .records-panel { padding: .6rem; background: #fff; border: 1px solid var(--line); border-radius: 2px; }\n  .records-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }\n  .records-toolbar h2 { margin: 0; font-size: .95rem; }\n  .records-toolbar .muted { margin: .15rem 0 0; font-size: .74rem; }\n  .records-tools { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; justify-content: flex-end; }\n  .sort-box { display: flex; align-items: center; gap: .35rem; color: var(--muted); font-size: .74rem; font-weight: 600; white-space: nowrap; }\n  .sort-box select { padding: .3rem .45rem; min-height: 28px; }\n  .search-box { width: min(360px, 100%); display: flex; align-items: center; gap: .35rem; }\n  .search-box input { flex: 1; min-width: 0; min-height: 28px; }\n  .records-list { display: grid; }\n  .record-row {\n    display: grid; grid-template-columns: minmax(220px, 1.6fr) minmax(135px, .7fr) auto;\n    align-items: center; gap: .6rem; padding: .4rem .3rem;\n    border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent;\n    transition: background .1s;\n  }\n  .record-row:hover { background: #f8fafc; }\n  .record-title { min-width: 0; }\n  .record-title strong, .record-title small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n  .record-title strong { font-size: .85rem; }\n  .record-title small { margin-top: .12rem; color: var(--muted); font-size: .72rem; }\n  .record-title small.applied { color: var(--primary); font-weight: 600; }\n  .record-actions { display: flex; gap: .35rem; }\n  .status-badge { justify-self: start; padding: .2rem .5rem; border-radius: 2px; font-size: .7rem; font-weight: 700; }\n  .status-badge.confirmed { color: var(--success); background: var(--success-soft); }\n  .status-badge.pending { color: var(--warning); background: var(--warning-soft); }\n  .pagination { display: flex; justify-content: center; align-items: center; gap: .6rem; padding-top: .6rem; font-size: .78rem; }\n  .empty-state { padding: 1.6rem 1rem; text-align: center; color: var(--muted); }\n  .empty-state h3 { margin: .4rem 0 .15rem; color: var(--ink); font-size: .95rem; }\n  .empty-state p { margin: 0; font-size: .82rem; }\n  .empty-icon { font-size: 1.4rem; }\n\n  \/* Dialogs\n     \u0e42\u0e04\u0e23\u0e07: \u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 \/ \u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e14\u0e49 \/ \u0e41\u0e16\u0e1a\u0e1b\u0e38\u0e48\u0e21 \u2014 \u0e2a\u0e32\u0e21\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e1b\u0e47\u0e19 flex column\n     \u0e43\u0e2b\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19 \u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e08\u0e36\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e21\u0e2d (\u0e40\u0e14\u0e34\u0e21\u0e17\u0e31\u0e49\u0e07\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19 \u0e1b\u0e38\u0e48\u0e21\u0e08\u0e36\u0e07\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07) *\/\n  .modal {\n    width: min(760px, calc(100% - 2rem)); max-height: min(86vh, 780px); padding: 0;\n    overflow: hidden;\n    border: 0; border-radius: 18px; background: var(--surface); color: var(--ink);\n    box-shadow: 0 24px 60px rgba(15, 23, 42, .18);\n  }\n  \/* display \u0e15\u0e49\u0e2d\u0e07\u0e1c\u0e39\u0e01\u0e01\u0e31\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30 [open] \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e2b\u0e49\u0e32\u0e21\u0e43\u0e2a\u0e48\u0e44\u0e27\u0e49\u0e1a\u0e19 .modal \u0e40\u0e09\u0e22 \u0e46\n     \u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e0b\u0e48\u0e2d\u0e19\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1b\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\u0e14\u0e49\u0e27\u0e22\u0e01\u0e0e dialog:not([open]){display:none} \u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e21\u0e31\u0e19\u0e40\u0e2d\u0e07\n     \u0e41\u0e15\u0e48 CSS \u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e19\u0e25\u0e30 origin \u0e01\u0e31\u0e1a user-agent stylesheet \u0e41\u0e25\u0e30\u0e0a\u0e19\u0e30\u0e40\u0e2a\u0e21\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32 specificity \u0e40\u0e17\u0e48\u0e32\u0e44\u0e23\n     \u0e16\u0e49\u0e32\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28 display:flex \u0e44\u0e27\u0e49\u0e25\u0e2d\u0e22 \u0e46 \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e08\u0e30\u0e44\u0e21\u0e48\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e15\u0e2d\u0e19\u0e40\u0e23\u0e35\u0e22\u0e01 close() = \u0e01\u0e14\u0e1b\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e1b\u0e34\u0e14\n     (:not([open]) \u0e02\u0e49\u0e32\u0e07\u0e25\u0e48\u0e32\u0e07\u0e43\u0e2a\u0e48\u0e44\u0e27\u0e49\u0e01\u0e31\u0e19\u0e18\u0e35\u0e21\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e21\u0e32\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28 display \u0e17\u0e31\u0e1a\u0e2d\u0e35\u0e01\u0e0a\u0e31\u0e49\u0e19) *\/\n  .modal[open] { display: flex; flex-direction: column; }\n  .modal:not([open]) { display: none; }\n  .modal::backdrop { background: rgba(15, 23, 42, .5); }\n  .modal-small { width: min(440px, calc(100% - 2rem)); }\n  .modal-header {\n    flex: 0 0 auto; padding: 1.05rem 1.25rem .95rem;\n    display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;\n    background: var(--surface); border-bottom: 1px solid var(--line);\n  }\n  .modal-header .eyebrow { margin: 0 0 .2rem; }\n  .modal-header h2 { margin: 0; font-size: 1.12rem; line-height: 1.45; font-weight: 600; }\n  .modal-title-row { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }\n  \/* \u0e1b\u0e49\u0e32\u0e22\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e1a\u0e19\u0e2b\u0e31\u0e27\u0e01\u0e25\u0e48\u0e2d\u0e07 \u2014 \u0e40\u0e2b\u0e47\u0e19\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e27\u0e48\u0e32\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e2b\u0e32\u0e1b\u0e38\u0e48\u0e21 *\/\n  .modal-title-row .status-badge { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid var(--line); }\n  .modal-title-row .status-badge::before { content: \"\"; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }\n  .modal-title-row .status-badge.pending { color: #92400e; border-color: #fcd34d; background: #fffbeb; }\n  .modal-title-row .status-badge.confirmed { color: #15803d; border-color: #86efac; background: #f0fdf4; }\n  \/* \u0e1b\u0e38\u0e48\u0e21\u0e1b\u0e34\u0e14\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e14\u0e49\u0e32\u0e19\u0e40\u0e2d\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e1d\u0e31\u0e07\u0e43\u0e19\u0e18\u0e35\u0e21 WordPress \u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e32\u0e22\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e17\u0e31\u0e1a <button> \u0e17\u0e38\u0e01\u0e15\u0e31\u0e27\n     \u0e08\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e1b\u0e34\u0e14\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e49\u0e2d\u0e19\u0e2a\u0e35\u0e0a\u0e21\u0e1e\u0e39\u0e43\u0e2b\u0e0d\u0e48\u0e01\u0e27\u0e48\u0e32\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 *\/\n  .icon-button {\n    flex: 0 0 auto; width: 36px !important; height: 36px !important; padding: 0 !important;\n    display: grid; place-items: center;\n    border: 1px solid var(--line) !important; border-radius: 50% !important;\n    background: var(--surface) !important; color: var(--muted) !important;\n    font-size: 1.2rem; line-height: 1; box-shadow: none !important;\n    transition: background .15s ease, color .15s ease, border-color .15s ease;\n  }\n  .icon-button:hover { background: var(--primary-soft) !important; color: var(--primary) !important; border-color: var(--primary) !important; }\n  .icon-button:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }\n\n  .modal-body,\n  #changePasswordForm,\n  .confirm-dialog-body {\n    flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain;\n    padding: .3rem 1.25rem 1.1rem;\n  }\n  .modal-body::-webkit-scrollbar { width: 10px; }\n  .modal-body::-webkit-scrollbar-thumb {\n    border: 3px solid transparent; border-radius: 999px;\n    background: var(--line-strong); background-clip: content-box;\n  }\n\n  \/* \u0e15\u0e32\u0e23\u0e32\u0e07\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14: \u0e15\u0e31\u0e14\u0e01\u0e23\u0e2d\u0e1a\u0e23\u0e2d\u0e1a\u0e17\u0e38\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e2d\u0e2d\u0e01 \u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e40\u0e2a\u0e49\u0e19\u0e04\u0e31\u0e48\u0e19\u0e1a\u0e32\u0e07 \u0e46 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e41\u0e16\u0e27\n     \u0e01\u0e23\u0e2d\u0e1a\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e15\u0e47\u0e21\u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22\u0e40\u0e2a\u0e49\u0e19 \u0e2d\u0e48\u0e32\u0e19\u0e22\u0e32\u0e01\u0e41\u0e25\u0e30\u0e14\u0e39\u0e2d\u0e36\u0e14\u0e2d\u0e31\u0e14\u0e01\u0e27\u0e48\u0e32\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19 *\/\n  .detail-grid {\n    margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));\n    column-gap: 2rem; background: transparent; border: 0; border-radius: 0;\n  }\n  \/* \u0e40\u0e2a\u0e49\u0e19\u0e04\u0e31\u0e48\u0e19\u0e27\u0e32\u0e07\u0e44\u0e27\u0e49 \"\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\" \u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07 \u0e41\u0e25\u0e49\u0e27\u0e22\u0e01\u0e40\u0e27\u0e49\u0e19\u0e41\u0e16\u0e27\u0e41\u0e23\u0e01 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e21\u0e35\u0e40\u0e2a\u0e49\u0e19\u0e1b\u0e34\u0e14\u0e17\u0e49\u0e32\u0e22\u0e15\u0e32\u0e23\u0e32\u0e07\n     \u0e21\u0e32\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e40\u0e2a\u0e49\u0e19\u0e1a\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e08\u0e19\u0e14\u0e39\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e2d\u0e07\u0e40\u0e2a\u0e49\u0e19 *\/\n  .detail-cell { min-width: 0; padding: .8rem 0 .7rem; background: transparent; border-top: 1px solid var(--line); }\n  .detail-grid > .detail-cell:first-child { border-top: 0; }\n  .detail-grid > .detail-cell:not(.is-wide):first-child + .detail-cell:not(.is-wide) { border-top: 0; }\n  .detail-cell.is-wide { grid-column: 1 \/ -1; }   \/* \u0e04\u0e48\u0e32\u0e22\u0e32\u0e27 \u0e40\u0e0a\u0e48\u0e19 \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 \u0e43\u0e0a\u0e49\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e15\u0e47\u0e21\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 *\/\n  .detail-cell small {\n    display: block; margin-bottom: .25rem; color: var(--muted);\n    font-size: .74rem; font-weight: 500; letter-spacing: .01em; line-height: 1.4;\n  }\n  .detail-cell div {\n    overflow-wrap: anywhere; white-space: pre-wrap;\n    font-size: .95rem; line-height: 1.55; font-weight: 500;\n  }\n  .detail-cell.is-empty div { color: var(--muted); font-weight: 400; }\n\n  .modal-actions {\n    flex: 0 0 auto; padding: .85rem 1.25rem; display: flex; justify-content: flex-end; gap: .5rem;\n    background: var(--surface); border-top: 1px solid var(--line);\n  }\n  \/* \u0e41\u0e16\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e02\u0e2d\u0e07\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e14\u0e49 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e40\u0e2a\u0e49\u0e19\u0e04\u0e31\u0e48\u0e19\u0e01\u0e31\u0e1a\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e0b\u0e49\u0e33 *\/\n  #changePasswordForm .modal-actions { padding-inline: 0; padding-bottom: 0; border-top: 0; background: transparent; }\n\n  \/* Feedback *\/\n  .loading-overlay { position: fixed; inset: 0; z-index: 999; display: grid; place-content: center; justify-items: center; gap: .6rem; color: #fff; background: rgba(15, 23, 42, .62); }\n  .spinner { width: 32px; height: 32px; border: 4px solid rgba(255,255,255,.3); border-top-color: #fff; border-radius: 50%; animation: spin .75s linear infinite; }\n  \/* \u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e1a\u0e19 Apps Script \u0e15\u0e49\u0e2d\u0e07 cold start \u0e08\u0e36\u0e07\u0e0a\u0e49\u0e32\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e32\u0e22\u0e2a\u0e34\u0e1a\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\n     \u0e16\u0e49\u0e32\u0e42\u0e0a\u0e27\u0e4c\u0e41\u0e04\u0e48\u0e2a\u0e1b\u0e34\u0e19\u0e40\u0e19\u0e2d\u0e23\u0e4c\u0e40\u0e09\u0e22 \u0e46 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e30\u0e04\u0e34\u0e14\u0e27\u0e48\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27\u0e1b\u0e34\u0e14\u0e17\u0e34\u0e49\u0e07 \u0e08\u0e36\u0e07\u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e41\u0e25\u0e30\u0e21\u0e35\u0e17\u0e32\u0e07\u0e2d\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e40\u0e2a\u0e21\u0e2d *\/\n  .loading-hint { max-width: min(28rem, calc(100vw - 3rem)); text-align: center; font-size: .82rem; line-height: 1.6; color: rgba(255,255,255,.82); }\n  .loading-escape { padding: .5rem 1rem; color: #fff; border: 1px solid rgba(255,255,255,.55); border-radius: 8px; background: transparent; font-weight: 600; font-size: .84rem; cursor: pointer; }\n  @keyframes spin { to { transform: rotate(360deg); } }\n  .toast-region { position: fixed; right: .75rem; top: .75rem; z-index: 1200; width: min(340px, calc(100% - 1.5rem)); display: grid; gap: .4rem; }\n  .toast { padding: .55rem .75rem; color: #fff; border-radius: 2px; box-shadow: var(--shadow-md); animation: toast-in .2s ease-out; font-size: .84rem; }\n  .toast.success { background: var(--success); }\n  .toast.error { background: var(--danger); }\n  .toast.info { background: #334155; }\n  @keyframes toast-in { from { opacity: 0; transform: translateY(-6px); } }\n  <\/style>\n\n  <style>\n  html { -webkit-text-size-adjust: 100%; }\n  button { touch-action: manipulation; }\n  button, input, select { -webkit-tap-highlight-color: transparent; }\n  button:focus-visible, input:focus-visible, select:focus-visible {\n    outline: 3px solid var(--primary-soft); outline-offset: 2px;\n  }\n  <\/style>\n  <style>\n  .workspace-shell { width:min(1440px, 100%); margin:0 auto; display:grid; grid-template-columns:190px minmax(0, 1fr); gap:.75rem; align-items:start; }\n  .app-sidebar { position:sticky; top:0; padding:.75rem 0 .75rem .75rem; }\n  .app-nav { display:grid; padding:0; background:#fff; border:1px solid var(--line); border-radius:2px; }\n  .app-nav-button { border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--muted); border-radius:0; padding:.5rem .6rem; display:flex; align-items:center; gap:.5rem; font:inherit; font-weight:700; font-size:.85rem; text-align:left; cursor:pointer; }\n  .app-nav-button:hover { background:#f1f8f7; color:var(--primary); }\n  .app-nav-button.active { background:var(--primary); color:#fff; }\n  .nav-icon { width:1.3rem; text-align:center; font-size:.95rem; }\n  .workspace-main { min-width:0; }\n  .workspace-main .app-content, .module-content { width:100%; margin:0; padding:.9rem .75rem 1.5rem; }\n  .home-hero { padding:.9rem 1rem; border-radius:2px; background:linear-gradient(135deg, #075e54, #14957f); color:#fff; }\n  .home-hero .eyebrow, .home-hero .muted { color:rgba(255,255,255,.82); }\n  .home-hero h1 { font-size:1.15rem; margin:.2rem 0 .35rem; }\n  .module-card-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:.6rem; margin:.7rem 0; }\n  .module-card { border:1px solid var(--line); border-radius:2px; padding:.7rem; background:#fff; text-align:left; font:inherit; color:inherit; cursor:pointer; transition:border-color .1s ease; }\n  .module-card:hover { border-color:var(--primary); }\n  .module-card-icon { display:grid; place-items:center; width:32px; height:32px; border-radius:3px; background:#e7f6f3; font-size:1.05rem; }\n  .module-card h2 { margin:.5rem 0 .25rem; font-size:.92rem; }\n  .module-card p { min-height:2.2em; margin:0; color:var(--muted); font-size:.8rem; }\n  .module-card-meta { display:flex; justify-content:space-between; align-items:center; gap:.6rem; margin-top:.6rem; padding-top:.5rem; border-top:1px solid var(--line); font-size:.8rem; }\n  .module-card-meta strong { color:var(--primary); font-size:1rem; }\n  .placeholder-panel { padding:.75rem; border:1px solid var(--line); border-radius:2px; background:#fff; }\n  .placeholder-panel h1 { margin-top:0; }\n  .placeholder-panel { max-width:860px; margin:0 auto; }\n  .placeholder-panel h1 { font-size:1.05rem; line-height:1.35; }\n  .placeholder-icon { font-size:1.4rem; margin-bottom:.4rem; }\n  .future-steps { margin:.75rem 0 0; padding-left:1.1rem; color:var(--muted); font-size:.85rem; }\n  .future-steps li + li { margin-top:.4rem; }\n  .future-steps li.done { color:var(--primary); font-weight:700; }\n  .future-steps li.active { color:var(--ink); font-weight:700; }\n  <\/style>\n  <style>\n  @media (max-width: 700px) {\n    html { font-size: 15px; }\n    .auth-shell { padding: .75rem; }\n    .auth-card { width: 100%; padding: .9rem; }\n    .topbar { flex-wrap: wrap; gap: .5rem; padding: .5rem .75rem; }\n    .topbar-brand small { display: none; }\n    .user-menu { width: 100%; justify-content: space-between; }\n    .workspace-shell { display: block; }\n    .app-sidebar { position: fixed; inset: auto 0 0 0; z-index: 40; padding: 0; }\n    .app-nav { grid-template-columns: repeat(4, 1fr); border: 0; border-top: 1px solid var(--line); box-shadow: 0 -4px 12px rgba(0,0,0,.08); }\n    .app-nav-button { flex-direction: column; gap: .2rem; border-bottom: 0; padding: .5rem .2rem; font-size: .68rem; text-align: center; }\n    .nav-icon { font-size: 1.1rem; }\n    .workspace-main { padding-bottom: 64px; }\n    .workspace-main .app-content, .module-content { padding: .75rem .6rem 1.25rem; }\n    .home-hero { padding: .75rem; }\n    .module-card-grid { grid-template-columns: 1fr; }\n    .page-heading { flex-direction: column; align-items: stretch; gap: .6rem; }\n    .heading-actions { justify-content: stretch; }\n    .compact-field, .download-group { width: 100%; }\n    .download-group .btn { flex: 1; }\n    .stats-grid { gap: .35rem; }\n    .stat-card { flex-direction: column; align-items: flex-start; padding: .5rem; gap: .3rem; }\n    .stat-card strong { font-size: 1rem; }\n    .records-toolbar { flex-direction: column; align-items: stretch; gap: .5rem; }\n    .records-tools { justify-content: stretch; }\n    .search-box { width: 100%; }\n    .record-row { grid-template-columns: 1fr; gap: .3rem; padding: .6rem .3rem; }\n    .modal, .modal-small { width: 100%; max-width: none; margin: auto auto 0; border-radius: 8px 8px 0 0; max-height: calc(100dvh - .5rem); }\n    input, select, .btn { min-height: 40px; }\n    .btn-small { min-height: 36px; }\n  }\n  <\/style>\n  <style>\n  \/* Modern visual refresh \u2014 presentation only. *\/\n  :root {\n    --primary:#db2777; --primary-hover:#9d174d; --primary-soft:#fdf2f8;\n    --ink:#172033; --muted:#64748b; --line:#e3e8ef; --line-strong:#cbd5e1;\n    --surface:#fff; --background:#f4f7f9; --success:#15803d; --success-soft:#ecfdf3;\n    --warning:#b45309; --warning-soft:#fff7e6; --danger:#be123c;\n    --shadow-sm:0 1px 2px rgba(15,23,42,.04),0 5px 18px rgba(15,23,42,.05);\n    --shadow-md:0 20px 50px rgba(15,23,42,.13); --shadow:var(--shadow-sm);\n  }\n  html { font-size:15px; }\n  body { min-width:0; min-height:100vh; overflow-x:hidden; color:var(--ink); background:radial-gradient(circle at 8% 0%,rgba(219,39,119,.06),transparent 24rem),var(--background); }\n  ::selection { color:#fff; background:var(--primary); }\n  .eyebrow { margin-bottom:.35rem; color:var(--primary); font-size:.7rem; letter-spacing:.16em; }\n\n  \/* Authentication *\/\n  .auth-shell { min-height:100svh; padding:clamp(1rem,4vw,3rem); background:radial-gradient(circle at 16% 14%,rgba(244,114,182,.18),transparent 28rem),radial-gradient(circle at 90% 88%,rgba(59,130,246,.1),transparent 25rem),linear-gradient(145deg,#f8fbfc,#eef4f6); }\n  .auth-card { position:relative; width:min(500px,100%); padding:clamp(1.35rem,4vw,2rem); overflow:hidden; border:1px solid rgba(255,255,255,.9); border-radius:24px; background:rgba(255,255,255,.94); box-shadow:0 26px 70px rgba(131,24,67,.13); backdrop-filter:blur(16px); }\n  .auth-card::before { content:\"\"; position:absolute; inset:0 0 auto; height:4px; background:linear-gradient(90deg,#db2777,#f472b6,#3b82f6); }\n  .auth-brand { gap:.85rem; margin-bottom:1rem; }\n  .auth-logo { width:48px; height:48px; border-radius:14px; background:linear-gradient(145deg,#db2777,#9d174d); box-shadow:0 10px 22px rgba(219,39,119,.24); font-size:1.25rem; }\n  .auth-brand h1 { font-size:1.3rem; letter-spacing:-.015em; }\n  .auth-intro { margin-bottom:1.35rem; font-size:.9rem; line-height:1.7; }\n  .section-heading { margin-bottom:1rem; }\n  .section-heading h2 { font-size:1.22rem; }\n  .section-heading p { margin-top:.3rem; font-size:.84rem; line-height:1.65; }\n  .auth-tabs { gap:.3rem; margin-top:1.2rem; padding:.3rem; border:1px solid #e8edf2; border-radius:12px; background:#f3f6f8; }\n  .auth-tab { min-height:40px; border-radius:9px; transition:.18s ease; }\n  .auth-tab.active { color:var(--primary); border-color:transparent; background:#fff; box-shadow:0 2px 8px rgba(15,23,42,.07); }\n  .security-note { margin-top:.9rem; font-size:.74rem; }\n\n  \/* Forms and buttons *\/\n  .field { gap:.4rem; margin:.8rem 0; font-size:.84rem; }\n  .field small { font-size:.73rem; line-height:1.5; }\n  .form-two-columns { gap:.75rem; }\n  input,select { min-height:44px; padding:.62rem .75rem; border-color:#d7dee7; border-radius:10px; background:#fff; transition:border-color .16s,box-shadow .16s; }\n  input:hover,select:hover { border-color:#aebaca; }\n  input:focus,select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(219,39,119,.12); }\n  .password-toggle { right:.4rem; min-height:32px; padding-inline:.65rem; border-radius:8px; }\n  .btn { min-height:40px; padding:.55rem .85rem; border-radius:10px; font-size:.84rem; transition:transform .16s,background .16s,border-color .16s,box-shadow .16s; }\n  .btn:hover:not(:disabled) { transform:translateY(-1px); }\n  .btn-primary { background:linear-gradient(145deg,#db2777,#be185d); box-shadow:0 7px 16px rgba(219,39,119,.17); }\n  .btn-primary:hover { background:linear-gradient(145deg,#be185d,#9d174d); }\n  .btn-outline { border-color:#d5dde7; }\n  .btn-outline:hover { border-color:#9cabbc; background:#f8fafc; }\n  .btn-ghost { background:#eef2f6; }\n  .btn-small { min-height:34px; padding:.4rem .7rem; }\n\n  .btn-excel { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; color:#fff; border-color:#15803d; background:linear-gradient(145deg,#1f9d55,#15803d); box-shadow:0 7px 16px rgba(21,128,61,.2); }\n  .btn-excel:hover { color:#fff; border-color:#166534; background:linear-gradient(145deg,#198a49,#166534); box-shadow:0 10px 22px rgba(21,128,61,.24); }\n  .btn-excel:focus-visible { outline-color:#bbf7d0; }\n  .excel-logo { width:22px; height:22px; flex:0 0 22px; overflow:visible; }\n  .excel-sheet { fill:#f0fdf4; }\n  .excel-grid { fill:none; stroke:#86efac; stroke-width:1; }\n  .excel-panel { fill:#107c41; stroke:#fff; stroke-width:.7; }\n  .excel-x { fill:none; stroke:#fff; stroke-width:1.8; stroke-linecap:round; }\n  \/* Application shell *\/\n  .topbar { position:sticky; top:0; z-index:30; min-height:64px; padding:.65rem clamp(1rem,3vw,2rem); border-bottom:1px solid rgba(226,232,240,.9); background:rgba(255,255,255,.92); backdrop-filter:blur(14px); }\n  .topbar-brand,.user-menu { gap:.75rem; }\n  .mini-mark { width:38px; height:38px; border-radius:12px; background:linear-gradient(145deg,#db2777,#9d174d); box-shadow:0 7px 16px rgba(219,39,119,.2); }\n  .topbar-brand strong { font-size:.95rem; }\n  .notification-bell { width:40px; height:40px; flex-basis:40px; border-color:#d8e0e8; box-shadow:0 2px 8px rgba(15,23,42,.04); }\n  .workspace-shell { width:min(1460px,100%); grid-template-columns:220px minmax(0,1fr); gap:1.2rem; padding:0 1rem; }\n  .app-sidebar { top:64px; padding:1.25rem 0; }\n  .app-nav { gap:.35rem; padding:.55rem; border-radius:16px; box-shadow:var(--shadow-sm); }\n  .app-nav-button { min-height:44px; gap:.7rem; padding:.65rem .75rem; border:0; border-radius:11px; font-size:.86rem; transition:.16s ease; }\n  .app-nav-button:hover { transform:translateX(2px); background:#fdf2f8; }\n  .app-nav-button.active { background:linear-gradient(145deg,#db2777,#be185d); box-shadow:0 8px 18px rgba(219,39,119,.2); }\n  .nav-icon { width:1.5rem; font-size:1.05rem; }\n  .workspace-main .app-content,.module-content { padding:1.25rem 0 3rem; }\n\n  \/* Home *\/\n  .home-hero { position:relative; min-height:164px; padding:clamp(1.3rem,3vw,2rem); overflow:hidden; border:0; border-radius:22px; background:linear-gradient(130deg,#831843,#db2777 58%,#ec4899); box-shadow:0 18px 38px rgba(157,23,77,.2); }\n  .home-hero::after { content:\"\"; position:absolute; width:260px; height:260px; right:-75px; top:-105px; border:38px solid rgba(255,255,255,.07); border-radius:50%; }\n  .home-hero .eyebrow { color:#fce7f3; }\n  .home-hero h1 { position:relative; margin:.35rem 0 .45rem; font-size:clamp(1.45rem,3vw,2rem); }\n  .home-hero .muted { position:relative; color:rgba(255,255,255,.8); }\n  .module-card-grid { gap:1rem; margin:1.15rem 0; }\n  .module-card { min-height:190px; padding:1.2rem; border-color:#e1e7ee; border-radius:18px; box-shadow:var(--shadow-sm); transition:.18s ease; }\n  .module-card:hover { transform:translateY(-3px); border-color:rgba(219,39,119,.35); box-shadow:0 14px 30px rgba(15,23,42,.09); }\n  .module-card-icon { width:46px; height:46px; border-radius:13px; font-size:1.25rem; }\n  .module-card h2 { margin:.85rem 0 .3rem; font-size:1.02rem; }\n  .module-card p { font-size:.82rem; line-height:1.65; }\n  .module-card-meta { margin-top:.9rem; padding-top:.75rem; }\n\n  \/* Dashboards and data *\/\n  .app-content { width:100%; padding-inline:0; }\n  .page-heading { gap:2rem; padding:.25rem 0 .2rem; }\n  .page-heading h1 { font-size:1.45rem; }\n  .page-heading .muted { font-size:.84rem; line-height:1.55; }\n  .stats-grid { gap:.8rem; margin:1rem 0; }\n  .stat-card { min-height:92px; padding:1rem; gap:.85rem; border-color:#e1e7ee; border-radius:16px; box-shadow:var(--shadow-sm); }\n  .stat-card strong { font-size:1.5rem; }\n  .stat-icon { width:44px; height:44px; border-radius:13px; }\n  .records-panel,.placeholder-panel { border-color:#e1e7ee; border-radius:18px; box-shadow:var(--shadow-sm); }\n  .records-panel { padding:1rem; }\n  .records-toolbar { gap:1.25rem; margin-bottom:.8rem; }\n  .records-toolbar h2 { font-size:1.02rem; }\n  .records-tools { gap:.55rem; }\n  .status-filters { display:flex; align-items:center; gap:.35rem; flex-wrap:wrap; }\n  .status-filter { min-height:36px; padding:.4rem .72rem; color:#475569; border:1px solid var(--line); border-radius:999px; background:#fff; font:inherit; font-size:.8rem; font-weight:700; }\n  .status-filter:hover { color:var(--primary); border-color:rgba(219,39,119,.4); background:var(--primary-soft); }\n  .status-filter.active { color:#fff; border-color:var(--primary); background:var(--primary); }\n  .sort-box select,.search-box input { min-height:38px; }\n  .search-box { width:min(390px,100%); }\n  .records-list { border-top:1px solid var(--line); }\n  .record-row { gap:.85rem; padding:.8rem .55rem; }\n  .record-row:hover { background:#fff7fb; }\n  .record-title strong { font-size:.88rem; }\n  .record-title small { margin-top:.18rem; font-size:.74rem; }\n  .status-badge { padding:.32rem .65rem; border-radius:999px; }\n  .pagination { gap:.8rem; padding-top:1rem; }\n  .empty-state { padding:3rem 1rem; }\n  \/* Overflow safety for long Thai labels, school names, and narrow screens *\/\n  .workspace-main,.module-view,.app-content,.placeholder-panel,.records-panel,\n  .page-heading>*,.heading-actions,.topbar-brand>div:last-child,.user-copy,\n  .module-card,.module-card-meta,.record-title { min-width:0; max-width:100%; }\n  .auth-brand h1,.topbar-brand strong,.user-copy strong,.page-heading h1,\n  .placeholder-panel h1,.module-card h2,.module-card p,.module-card-meta,\n  .record-title strong,.record-title small,\n  .future-steps li,.detail-cell div,.empty-state p { overflow-wrap:anywhere; word-break:normal; }\n  .topbar-brand strong,.user-copy strong { white-space:normal; }\n  .heading-actions,.download-group,.records-tools,.record-actions { flex-wrap:wrap; }\n  .heading-actions .btn,.download-group .btn,.record-actions .btn { max-width:100%; white-space:normal; }\n  select,input { max-width:100%; }\n  \/* Readability pass: stronger contrast, comfortable Thai sizing, consistent rhythm *\/\n  :root { --ink:#1e293b; --muted:#526173; --line:#dce3eb; font-family:\"Noto Sans Thai\",\"Sarabun\",system-ui,-apple-system,sans-serif; }\n  body { font-size:1rem; line-height:1.6; text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased; }\n  h1,h2,h3,strong { color:var(--ink); }\n  h1,h2,h3,p { overflow-wrap:anywhere; }\n  h1,h2,h3 { line-height:1.35; }\n  p,li { line-height:1.65; }\n  .muted { color:var(--muted); }\n  .eyebrow { font-size:.76rem; line-height:1.45; }\n  .auth-brand h1 { font-size:1.38rem; }\n  .auth-intro { font-size:.94rem; }\n  .section-heading h2 { font-size:1.25rem; }\n  .section-heading p { font-size:.9rem; }\n  .field { font-size:.9rem; }\n  .field small,.security-note { font-size:.8rem; }\n  input,select,.btn { font-size:.9rem; }\n  .btn { min-height:42px; font-weight:600; }\n  .btn-small { min-height:36px; font-size:.82rem; }\n  .topbar-brand strong { font-size:1rem; }\n  .topbar-brand small,.user-copy small { color:var(--muted); font-size:.76rem; }\n  .user-copy strong { font-size:.9rem; }\n  .app-nav-button { font-size:.9rem; }\n  .home-hero h1 { color:#fff; }\n  .home-hero .muted { color:rgba(255,255,255,.88); font-size:.92rem; }\n  .module-card h2 { font-size:1.08rem; }\n  .module-card p { color:var(--muted); font-size:.88rem; }\n  .module-card-meta { color:#475569; font-size:.84rem; }\n  .page-heading h1 { font-size:1.55rem; }\n  .page-heading .muted { font-size:.9rem; }\n  .compact-field,.sort-box { color:#475569; font-size:.82rem; }\n  .stat-card small { color:var(--muted); font-size:.82rem; }\n  .stat-card strong { font-size:1.55rem; }\n  .records-toolbar h2 { font-size:1.08rem; }\n  .records-toolbar .muted { color:var(--muted); font-size:.82rem; }\n  .record-title strong { font-size:.94rem; line-height:1.5; }\n  .record-title small { color:var(--muted); font-size:.8rem; line-height:1.5; }\n  .status-badge { font-size:.78rem; line-height:1.35; }\n  .pagination,.empty-state p { font-size:.86rem; }\n  .placeholder-panel h1 { font-size:1.2rem; }\n  .future-steps { color:#475569; font-size:.9rem; }\n  .toast { font-size:.9rem; line-height:1.5; }\n  .future-steps,.future-steps li,.future-steps li.done,.future-steps li.active,.future-steps strong { color:var(--ink)!important; }\n  \/* Dialogs and feedback \u2014 \u0e14\u0e35\u0e44\u0e0b\u0e19\u0e4c\u0e02\u0e2d\u0e07\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e23\u0e27\u0e21\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48\u0e1a\u0e25\u0e47\u0e2d\u0e01 \"Dialogs\" \u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e17\u0e35\u0e48\u0e40\u0e14\u0e35\u0e22\u0e27\u0e41\u0e25\u0e49\u0e27\n     \u0e40\u0e14\u0e34\u0e21\u0e01\u0e23\u0e30\u0e08\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19\u0e2a\u0e32\u0e21\u0e0a\u0e31\u0e49\u0e19 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e17\u0e35\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e25\u0e48\u0e2b\u0e32\u0e27\u0e48\u0e32\u0e04\u0e48\u0e32\u0e44\u0e2b\u0e19\u0e0a\u0e19\u0e30 *\/\n  .modal::backdrop { backdrop-filter:blur(3px); }\n  .loading-overlay { backdrop-filter:blur(4px); }\n  .toast { padding:.75rem .9rem; border-radius:11px; }\n\n  @media (max-width:900px) {\n    .topbar { flex-wrap:wrap; }\n    .user-menu { min-width:0; max-width:100%; flex-wrap:wrap; }\n    .topbar { position:relative; }\n    .workspace-shell { display:block; padding:0; }\n    .app-sidebar { position:fixed; inset:auto 0 0; z-index:40; padding:0; }\n    .app-nav { grid-template-columns:repeat(4,minmax(0,1fr)); gap:.25rem; padding:.4rem max(.4rem,env(safe-area-inset-right)) calc(.4rem + env(safe-area-inset-bottom)) max(.4rem,env(safe-area-inset-left)); border:0; border-top:1px solid var(--line); border-radius:0; box-shadow:0 -8px 24px rgba(15,23,42,.1); }\n    .app-nav-button { min-width:0; padding:.45rem .2rem; flex-direction:column; gap:.15rem; font-size:.7rem; text-align:center; }\n    .app-nav-button:hover { transform:none; }\n    .workspace-main { padding:0 .85rem 76px; }\n    .records-toolbar { align-items:stretch; flex-direction:column; }\n    .records-tools { justify-content:stretch; }\n  }\n  @media (max-width:640px) {\n    body { font-size:1rem; }\n    .app-nav-button { font-size:.76rem; }\n    .page-heading h1 { font-size:1.4rem; }\n    .home-hero h1 { font-size:1.5rem; }\n    .stat-card small { font-size:.8rem; }\n    .stat-card strong { font-size:1.3rem; }\n    .auth-shell { padding:.75rem; }\n    .auth-card { padding:1.15rem; border-radius:20px; }\n    .form-two-columns,.detail-grid { grid-template-columns:1fr; }\n    input,select { font-size:16px; }\n    .topbar { align-items:flex-start; padding:.65rem .75rem; flex-direction:column; gap:.65rem; }\n    .topbar-brand small { display:none; }\n    .user-menu { width:100%; display:grid; grid-template-columns:40px minmax(0,1fr) minmax(0,1fr); gap:.45rem; }\n    .user-copy { grid-column:1\/-1; text-align:left; }\n    .user-menu .btn { min-width:0; padding-inline:.45rem; font-size:.78rem; }\n    .workspace-main { padding-inline:.65rem; }\n    .home-hero { min-height:150px; padding:1.2rem; border-radius:18px; }\n    .module-card-grid { grid-template-columns:1fr; gap:.75rem; }\n    .module-card { min-height:0; padding:1rem; }\n    .page-heading { align-items:stretch; flex-direction:column; gap:.85rem; }\n    .heading-actions,.compact-field,.download-group { width:100%; }\n    .download-group { display:grid; grid-template-columns:1fr 1fr; }\n    .stats-grid { gap:.45rem; }\n    .stat-card { min-height:100px; padding:.7rem; flex-direction:column; align-items:flex-start; gap:.45rem; }\n    .records-panel { padding:.75rem; }\n    .records-tools,.sort-box,.search-box { width:100%; }\n    .status-filters { width:100%; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }\n    .status-filter { min-width:0; padding-inline:.35rem; }\n    .sort-box select { flex:1; }\n    .search-box { display:grid; grid-template-columns:auto minmax(0,1fr) auto; }\n    .record-row { display:flex; align-items:stretch; flex-direction:column; padding:.85rem .3rem; }\n    .record-title strong,.record-title small { overflow:visible; white-space:normal; overflow-wrap:anywhere; }\n    .record-actions .btn { flex:1; }\n    .pagination { display:grid; grid-template-columns:1fr auto 1fr; gap:.45rem; }\n    .modal,.modal-small { width:100%; max-width:none; max-height:calc(100dvh - .5rem); margin:auto auto 0; border-radius:18px 18px 0 0; }\n  }\n  @media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }\n  <\/style>\n  <style>\n  \/* ===== \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23: \u0e15\u0e32\u0e23\u0e32\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e41\u0e22\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e44\u0e14\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 ===== *\/\n  .records-list { border-top: 0; }\n  .records-head,\n  .record-row {\n    display: grid;\n    \/* \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e27\u0e49\u0e32\u0e07\u0e04\u0e07\u0e17\u0e35\u0e48 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 auto \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07\u0e01\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e25\u0e30\u0e41\u0e16\u0e27\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e19\u0e25\u0e30 grid\n       \u0e16\u0e49\u0e32\u0e43\u0e0a\u0e49 auto \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27 (\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27) \u0e08\u0e30\u0e44\u0e14\u0e49\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e15\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2a\u0e2d\u0e07\u0e1b\u0e38\u0e48\u0e21 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e48\u0e2d\u0e21\u0e01\u0e31\u0e19 *\/\n    grid-template-columns: 2.2rem 3.2rem minmax(0, 2.4fr) minmax(0, 1.7fr) minmax(0, 1.1fr) 8rem 13.5rem;\n    align-items: center;\n    gap: .75rem;\n  }\n  \/* \u0e41\u0e16\u0e1a\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e31\u0e1a\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19\u0e08\u0e2d\u0e15\u0e25\u0e2d\u0e14 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e1e\u0e2d\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e25\u0e07\u0e44\u0e1b\u0e15\u0e34\u0e4a\u0e01\u0e41\u0e16\u0e27\u0e17\u0e49\u0e32\u0e22 \u0e46 \u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\n     \u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e08\u0e30\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e1e\u0e49\u0e19\u0e08\u0e2d \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b\u0e2b\u0e32\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\n     \u0e43\u0e0a\u0e49 JS \u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19 fixed (syncRecordsPin) \u0e41\u0e17\u0e19 position: sticky \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e2b\u0e32\u0e22\u0e17\u0e31\u0e49\u0e07\u0e1a\u0e19\n     WordPress \u0e41\u0e25\u0e30 Apps Script \u2014 sticky \u0e15\u0e32\u0e22\u0e07\u0e48\u0e32\u0e22\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e1a\u0e23\u0e23\u0e1e\u0e1a\u0e38\u0e23\u0e38\u0e29\u0e15\u0e31\u0e49\u0e07 overflow \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 visible\n     \u0e2a\u0e48\u0e27\u0e19 fixed \u0e44\u0e21\u0e48\u0e02\u0e36\u0e49\u0e19\u0e01\u0e31\u0e1a\u0e1a\u0e23\u0e23\u0e1e\u0e1a\u0e38\u0e23\u0e38\u0e29 \u0e08\u0e36\u0e07\u0e04\u0e38\u0e21\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e44\u0e14\u0e49\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e01\u0e27\u0e48\u0e32\n     \u0e04\u0e48\u0e32 top\/left\/width \u0e02\u0e2d\u0e07\u0e15\u0e2d\u0e19\u0e1b\u0e31\u0e01\u0e15\u0e31\u0e49\u0e07\u0e08\u0e32\u0e01 JS \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e27\u0e31\u0e14\u0e02\u0e2d\u0e07\u0e08\u0e23\u0e34\u0e07\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e08\u0e2d\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e02\u0e19\u0e32\u0e14 *\/\n  .records-sticky { position: relative; z-index: 2; background: #fff; }\n  .records-sticky.is-pinned { position: fixed; z-index: 25; box-shadow: 0 8px 16px -10px rgba(15, 23, 42, .45); }\n  .records-head {\n    padding: .55rem .75rem;\n    color: #475569; background: #eef2f7;\n    border: 1px solid var(--line); border-bottom-width: 2px;\n    border-left: 4px solid #cbd5e1;\n    border-radius: 6px 6px 0 0;\n    font-size: .78rem; font-weight: 700;\n  }\n  .records-head span:nth-child(2) { text-align: center; }\n  .records-head span:last-child { text-align: right; }\n  .record-row {\n    padding: .7rem .75rem;\n    border: 1px solid var(--line); border-top: 0;\n    border-left: 4px solid #d97706;\n    border-radius: 0; background: #fff;\n    transition: background .12s;\n  }\n  .record-row:nth-child(even) { background: #fafbfd; }\n  .record-row:hover { background: #eef4fb; }\n  .record-row.is-confirmed { border-left-color: #16a34a; }\n  .record-row:last-child { border-radius: 0 0 6px 6px; }\n  .record-seq { color: var(--muted); font-size: .82rem; font-weight: 700; text-align: center; }\n  \/* break-word \u0e15\u0e31\u0e14\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e1a\u0e04\u0e33\u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e1a\u0e1a \"29\/7\/256 | 8 08:30\" \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48 anywhere \u0e17\u0e33 *\/\n  .record-name { min-width: 0; color: var(--ink); font-size: .95rem; font-weight: 700; line-height: 1.45; overflow-wrap: break-word; }\n  .record-meta, .record-date { min-width: 0; color: #475569; font-size: .84rem; line-height: 1.45; overflow-wrap: break-word; }\n  .record-meta-label { display: block; color: var(--muted); font-size: .74rem; font-weight: 600; }\n  .record-empty { color: #a3adba; }\n  .record-row .status-badge {\n    display: inline-flex; align-items: center; gap: .4rem; justify-self: start;\n    padding: .3rem .6rem; border: 1px solid; border-radius: 4px;\n    font-size: .8rem; font-weight: 700; white-space: nowrap;\n  }\n  .record-row .status-badge::before { content: \"\"; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }\n  .record-row .status-badge.pending { color: #92400e; border-color: #fcd34d; background: #fffbeb; }\n  .record-row .status-badge.confirmed { color: #15803d; border-color: #86efac; background: #f0fdf4; }\n  .record-actions { justify-content: flex-end; gap: .4rem; }\n\n  \/* ===== \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27 ===== *\/\n  .record-pick { display: flex; align-items: center; justify-content: center; }\n  .record-checkbox { width: 1.05rem; height: 1.05rem; accent-color: var(--primary); cursor: pointer; }\n  \/* !important \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e41\u0e16\u0e27\u0e04\u0e39\u0e48\/\u0e41\u0e16\u0e27\u0e04\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e17\u0e31\u0e1a\u0e08\u0e30\u0e40\u0e2b\u0e47\u0e19\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e15\u0e34\u0e4a\u0e01\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14 *\/\n  .record-row.is-picked { background: var(--primary-soft) !important; border-left-color: var(--primary); }\n  .bulk-bar {\n    display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;\n    margin-bottom: .45rem; padding: .55rem .75rem;\n    border: 1px solid var(--line-strong); border-radius: 8px; background: var(--primary-soft);\n  }\n  \/* \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e1a\u0e1a Gmail: \u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e01\u0e31\u0e1a\u0e25\u0e39\u0e01\u0e28\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e21\u0e19\u0e39\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e01\u0e23\u0e2d\u0e1a\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\n     \u0e01\u0e14\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01 = \u0e40\u0e25\u0e37\u0e2d\u0e01\/\u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e01\u0e14\u0e25\u0e39\u0e01\u0e28\u0e23 = \u0e40\u0e1b\u0e34\u0e14\u0e40\u0e21\u0e19\u0e39\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 *\/\n  .bulk-select { position: relative; display: flex; align-items: center; gap: .1rem; padding: .18rem .2rem .18rem .32rem; border: 1px solid var(--line-strong); border-radius: 6px; background: #fff; }\n  .bulk-select-box { width: 1.05rem; height: 1.05rem; margin: 0; accent-color: var(--primary); cursor: pointer; }\n  .bulk-select-box:disabled { cursor: not-allowed; }\n  .bulk-select-caret {\n    display: flex; align-items: center; justify-content: center;\n    width: 1.4rem; height: 1.4rem; padding: 0;\n    border: 0; border-radius: 4px; background: none; color: var(--muted); cursor: pointer;\n  }\n  .bulk-select-caret:hover:not(:disabled) { background: var(--primary-soft); color: var(--ink); }\n  .bulk-select-caret:disabled { opacity: .45; cursor: not-allowed; }\n  .bulk-select-caret .ui-icon { width: 1rem; height: 1rem; }\n  \/* \u0e40\u0e21\u0e19\u0e39\u0e25\u0e2d\u0e22\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 .records-sticky \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 stacking context \u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07 (z-index 2 \u0e15\u0e2d\u0e19\u0e1b\u0e01\u0e15\u0e34,\n     25 \u0e15\u0e2d\u0e19\u0e1b\u0e31\u0e01) \u0e04\u0e48\u0e32 20 \u0e15\u0e23\u0e07\u0e19\u0e35\u0e49\u0e08\u0e36\u0e07\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e19\u0e40\u0e2d\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19\u0e41\u0e16\u0e1a \u0e02\u0e2d\u0e41\u0e04\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07\u0e01\u0e47\u0e1e\u0e2d *\/\n  .bulk-select-menu {\n    position: absolute; top: calc(100% + .3rem); left: 0; z-index: 20;\n    min-width: 11rem; padding: .25rem;\n    border: 1px solid var(--line); border-radius: 8px; background: #fff; box-shadow: var(--shadow-md);\n  }\n  .bulk-select-item {\n    display: block; width: 100%; padding: .42rem .6rem;\n    border: 0; border-radius: 5px; background: none;\n    color: var(--ink); font: inherit; font-size: .86rem; text-align: left; white-space: nowrap; cursor: pointer;\n  }\n  .bulk-select-item:hover:not(:disabled), .bulk-select-item:focus-visible { background: var(--primary-soft); outline: none; }\n  .bulk-select-item:disabled { color: #a3adba; cursor: not-allowed; }\n  .bulk-count { color: var(--muted); font-size: .82rem; }\n  \/* \u0e08\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e44\u0e27\u0e49\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21 \u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e02\u0e22\u0e31\u0e1a\u0e15\u0e32\u0e21\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e19\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 *\/\n  .bulk-actions { display: flex; gap: .4rem; flex-wrap: wrap; margin-left: auto; }\n  @media (max-width: 640px) {\n    .bulk-actions { width: 100%; margin-left: 0; }\n    .bulk-actions .btn { flex: 1; }\n  }\n\n  \/* \u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 1100px \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e04\u0e1a\u0e08\u0e19\u0e15\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07\u0e40\u0e25\u0e02\u0e1b\u0e35 \u0e08\u0e36\u0e07\u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e0a\u0e48\u0e27\u0e07\u0e19\u0e35\u0e49 *\/\n  @media (max-width: 1100px) {\n    .records-head { display: none; }\n    .record-row {\n      grid-template-columns: 1.6rem minmax(0, 1fr) auto;\n      grid-template-areas: \"pick seq status\" \"name name name\" \"meta meta meta\" \"date date date\" \"actions actions actions\";\n      gap: .35rem .75rem;\n      margin-bottom: .55rem;\n      padding: .8rem .85rem;\n      border: 1px solid var(--line); border-left: 4px solid #d97706; border-radius: 8px;\n    }\n    .record-row.is-confirmed { border-left-color: #16a34a; }\n    .record-row:nth-child(even) { background: #fff; }\n    .record-row:last-child { margin-bottom: 0; border-radius: 8px; }\n    .record-pick { grid-area: pick; justify-content: flex-start; }\n    .record-checkbox { width: 1.25rem; height: 1.25rem; }\n    .record-seq { grid-area: seq; text-align: left; }\n    .record-seq::before { content: \"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48 \"; font-weight: 600; }\n    .record-name { grid-area: name; }\n    .record-meta { grid-area: meta; }\n    \/* \u0e42\u0e2b\u0e21\u0e14\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e40\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e30\u0e44\u0e23 *\/\n    .record-date { grid-area: date; }\n    .record-date::before { content: \"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e21\u0e37\u0e48\u0e2d \"; color: var(--muted); }\n    .record-row .status-badge { grid-area: status; justify-self: end; }\n    .record-actions { grid-area: actions; margin-top: .35rem; justify-content: stretch; }\n    .record-actions .btn { flex: 1; }\n  }\n\n\n\n  \/* ===== \u0e01\u0e23\u0e32\u0e1f =====\n     \u0e2a\u0e35\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e1c\u0e39\u0e01\u0e01\u0e31\u0e1a\u0e42\u0e17\u0e19\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c (--primary) \u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e09\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e31\u0e49\u0e07\u0e01\u0e23\u0e32\u0e1f\n     \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e39\u0e48\u0e40\u0e02\u0e35\u0e22\u0e27\/\u0e41\u0e14\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e04\u0e39\u0e48\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e2a\u0e35\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e32\u0e1a\u0e2d\u0e14\u0e2a\u0e35\u0e41\u0e14\u0e07-\u0e40\u0e02\u0e35\u0e22\u0e27 *\/\n  .viz { position: relative; --viz-track: #f0dbe6; --viz-grid: #e6e9ee; --viz-axis: #cbd5e1; }\n  @supports (color: color-mix(in srgb, red 10%, white)) {\n    .viz { --viz-track: color-mix(in srgb, var(--primary) 17%, #fff); }\n  }\n  .viz-meters { display: grid; gap: .55rem; }\n  .viz-meter { display: grid; grid-template-columns: minmax(5.5rem, 8.5rem) minmax(0, 1fr) auto; align-items: center; gap: .7rem; }\n  .viz-meter-label { color: var(--ink); font-size: .82rem; overflow-wrap: anywhere; }\n  .viz-track { height: 18px; border-radius: 3px; background: var(--viz-track); overflow: hidden; }\n  .viz-fill { height: 100%; border-radius: 0 4px 4px 0; background: var(--primary); transition: width .3s ease; }\n  .viz-fill.is-full { border-radius: 3px; }\n  .viz-meter-value { min-width: 3.4rem; color: var(--ink); font-size: .8rem; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }\n  .viz-meter:hover .viz-track { outline: 2px solid var(--primary-soft); outline-offset: 1px; }\n\n  .viz-plot svg { display: block; width: 100%; height: auto; }\n  .viz-grid-line { stroke: var(--viz-grid); stroke-width: 1; }\n  .viz-axis-line { stroke: var(--viz-axis); stroke-width: 1; }\n  .viz-tick { fill: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }\n  .viz-line { fill: none; stroke: var(--primary); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }\n  .viz-dot { fill: var(--primary); stroke: #fff; stroke-width: 2; }\n  .viz-end-label { fill: var(--ink); font-size: 12px; font-weight: 700; }\n  .viz-hit { fill: transparent; cursor: pointer; }\n  .viz-placeholder { margin: 0; padding: 1.2rem 0; text-align: center; font-size: .84rem; }\n  .viz-tip {\n    position: absolute; z-index: 5; display: none; padding: .45rem .6rem;\n    color: #fff; background: rgba(15,23,42,.94); border-radius: 6px;\n    font-size: .78rem; line-height: 1.5; white-space: nowrap; pointer-events: none;\n    transform: translate(-50%, -115%);\n  }\n  .viz-tip strong, .viz-tip span { display: block; }\n  .viz-tip strong { margin-bottom: .12rem; font-size: .8rem; }\n\n  @media (max-width: 640px) {\n    .viz-meter { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: \"label value\" \"track track\"; gap: .3rem .5rem; }\n    .viz-meter-label { grid-area: label; }\n    .viz-meter-value { grid-area: value; }\n    .viz-track { grid-area: track; }\n  }\n\n  @media (max-width: 640px) {\n    .stats-panel { padding: .75rem; }\n    .stats-table { min-width: 520px; }\n  }\n\n  \/* ===== \u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e41\u0e1a\u0e1a SVG: \u0e44\u0e21\u0e48\u0e1e\u0e36\u0e48\u0e07\u0e1f\u0e2d\u0e19\u0e15\u0e4c\u0e2d\u0e35\u0e42\u0e21\u0e08\u0e34 \u0e08\u0e36\u0e07\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 ===== *\/\n  .ui-icon {\n    width: 1em; height: 1em; display: block; flex: 0 0 auto;\n    fill: none; stroke: currentColor; stroke-width: 1.8;\n    stroke-linecap: round; stroke-linejoin: round;\n  }\n  .nav-icon { display: grid; place-items: center; }\n  .nav-icon .ui-icon { width: 1.15em; height: 1.15em; }\n  .module-card-icon .ui-icon, .stat-icon .ui-icon { width: 58%; height: 58%; }\n  .notification-bell .ui-icon { width: 19px; height: 19px; fill: none; }\n  .search-box .ui-icon { width: 1.05rem; height: 1.05rem; color: var(--muted); }\n  .empty-icon .ui-icon { width: 1.8rem; height: 1.8rem; margin: 0 auto; color: var(--muted); }\n  .security-note .ui-icon { width: .95rem; height: .95rem; }\n  \/* ===== \u0e2b\u0e19\u0e49\u0e32\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 ===== *\/\n  .stat-note { display: block; margin-top: .1rem; color: var(--muted); font-size: .76rem; font-weight: 600; }\n  .stats-panel {\n    margin-top: 1rem; padding: 1rem;\n    border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: var(--shadow-sm);\n  }\n  .stats-panel-head { margin-bottom: .7rem; }\n  .stats-panel-head h2 { margin: 0; font-size: 1rem; }\n  .stats-panel-head p { margin: .25rem 0 0; font-size: .8rem; line-height: 1.6; }\n  .stats-table-wrap { overflow-x: auto; }\n  .stats-table { width: 100%; border-collapse: collapse; min-width: 560px; }\n  .stats-table th, .stats-table td { padding: .5rem .6rem; border-bottom: 1px solid var(--line); text-align: right; font-size: .86rem; }\n  .stats-table th:first-child, .stats-table td:first-child { text-align: left; }\n  .stats-table thead th { color: #475569; background: #f1f5f9; font-size: .78rem; font-weight: 700; white-space: nowrap; }\n  .stats-table tbody tr:nth-child(even) { background: #fafbfd; }\n  .stats-table tbody tr:hover { background: #eef4fb; }\n  \/* \u0e41\u0e16\u0e27\u0e23\u0e27\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e2d\u0e01\u0e17\u0e31\u0e19\u0e17\u0e35\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2b\u0e21\u0e27\u0e14 *\/\n  .stats-table tr.stats-total-row { border-top: 2px solid var(--line-strong); background: #f8fafc!important; font-weight: 700; }\n  \/* \u0e41\u0e16\u0e27\u0e02\u0e2d\u0e07\u0e40\u0e17\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35\u0e27\u0e48\u0e32\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e21\u0e32\u0e08\u0e32\u0e01\u0e41\u0e16\u0e27\u0e44\u0e2b\u0e19 *\/\n  .stats-table tr.stats-active-row { background: var(--primary-soft)!important; font-weight: 700; }\n  .stats-table tr.stats-active-row td:first-child::after { content: \" (\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07)\"; color: var(--primary); font-size: .74rem; font-weight: 600; }\n  .stats-table td.stats-empty { color: #a3adba; }\n  .stats-rate { font-variant-numeric: tabular-nums; }\n  .stats-footnote { margin: .7rem 0 0; font-size: .78rem; line-height: 1.6; }\n\n  \/* \u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07 \u2014 \u0e40\u0e14\u0e34\u0e21\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e07\u0e21\u0e32\u0e41\u0e15\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e25\u0e22 *\/\n  .stats-warnings { margin: 0 0 1rem; padding: .85rem 1rem; border: 1px solid var(--line-strong);\n    border-left: 4px solid var(--warning); border-radius: 10px; background: var(--warning-soft); }\n  .stats-warnings-title { margin: 0 0 .4rem; font-size: .88rem; color: var(--warning); }\n  .stats-warnings ul { margin: 0; padding-left: 1.15rem; font-size: .82rem; line-height: 1.7; }\n\n\n  @media (max-width: 640px) {\n    .stats-panel { padding: .75rem; }\n    .stats-table { min-width: 520px; }\n  }\n\n  <\/style>\n  <style id=\"clean-ui-theme\">\n  \/* Shared visual theme for the Apps Script and WordPress frontends. *\/\n  :root { --primary:#be185d; --primary-hover:#9d174d; --primary-soft:#fdf2f8; --ink:#243247; --muted:#596779; --line:#e4e8ef; --line-strong:#cbd3df; --background:#f7f8fb; --shadow-sm:0 2px 8px rgba(24,39,60,.035); }\n  body { background:var(--background); }\n  h1,h2,h3,.btn,.auth-tab { font-family:inherit; }\n  .auth-shell { background:#f7f8fb; padding:2rem 1rem; }\n  .auth-card { width:min(480px,100%); padding:2rem; border:1px solid var(--line); border-radius:18px; box-shadow:0 12px 40px rgba(24,39,60,.06); }\n  .auth-brand { gap:1rem; margin-bottom:1.25rem; }\n  .auth-logo,.mini-mark { background:var(--primary); color:#fff; border:0; box-shadow:none; border-radius:12px; }\n  .auth-intro { margin-bottom:1.5rem; }\n  .auth-tabs { padding:4px; gap:4px; border-radius:10px; margin:1rem 0; }\n  .auth-tab { min-height:44px; border-radius:7px; }\n  .field { margin:1rem 0; gap:.45rem; }\n  .field small,.security-note { line-height:1.65; }\n  input,select { min-height:44px; border-radius:8px; padding:.6rem .75rem; }\n  input:focus,select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(190,24,93,.1); }\n  button:focus-visible,a:focus-visible { outline:3px solid var(--primary); outline-offset:3px; }\n  .btn { min-height:44px; border-radius:8px; padding:.6rem .9rem; box-shadow:none; }\n  .btn:hover:not(:disabled),.module-card:hover,.app-nav-button:hover { transform:none; }\n  .btn-primary { background:var(--primary); box-shadow:none; }\n  .btn-primary:hover { background:var(--primary-hover); }\n  .btn-excel { background:#15803d; box-shadow:none; }\n  .btn-small { min-height:38px; }\n  .topbar { position:relative; background:#fff; backdrop-filter:none; box-shadow:none; padding:.85rem clamp(1rem,3vw,2rem); }\n  .workspace-shell { grid-template-columns:196px minmax(0,1fr); gap:1.75rem; padding:0 1.5rem; }\n  .app-sidebar { top:1rem; padding:1.5rem 0; }\n  .app-nav { padding:.35rem; border:0; background:transparent; box-shadow:none; gap:.4rem; }\n  .app-nav-button { min-height:48px; border-radius:9px; color:var(--muted); }\n  .app-nav-button.active { color:var(--primary); background:#fce7f3; box-shadow:none; }\n  .workspace-main .app-content,.module-content { padding:1.5rem 0 3rem; }\n  .home-hero { display:flex; align-items:center; min-height:120px; padding:1.5rem 1.75rem; background:#fff; border:1px solid var(--line); border-left:4px solid var(--primary); border-radius:14px; box-shadow:none; }\n  .home-hero::after { display:none; }\n  .home-hero h1 { color:var(--ink); font-size:clamp(1.35rem,2.5vw,1.8rem); }\n  .home-hero .muted { color:var(--muted); }\n  .module-card-grid { gap:1.25rem; margin:1.25rem 0; }\n  .module-card { padding:1.5rem; border-radius:14px; box-shadow:var(--shadow-sm); }\n  .module-card:hover { border-color:var(--primary); box-shadow:0 4px 16px rgba(24,39,60,.06); }\n  .module-card-icon { background:var(--primary-soft); color:var(--primary); border-radius:12px; }\n  .module-card-meta { padding-top:1rem; margin-top:1.25rem; }\n  .page-heading { align-items:center; gap:1rem; flex-wrap:wrap; margin-bottom:1.25rem; }\n  .page-heading h1 { font-size:1.55rem; }\n  .eyebrow { color:var(--muted); letter-spacing:.08em; }\n  .stats-grid { gap:1rem; margin:1.25rem 0; }\n  .stat-card { padding:1.15rem; border-radius:12px; box-shadow:none; }\n  .stat-card strong { font-size:1.8rem; font-variant-numeric:tabular-nums; }\n  .records-panel,.stats-panel,.placeholder-panel { padding:1.25rem; border-radius:14px; box-shadow:var(--shadow-sm); }\n  .records-toolbar { flex-wrap:wrap; gap:1rem; margin-bottom:1.25rem; }\n  .records-tools { gap:.65rem; }\n  .sort-box select,.search-box input { min-height:44px; }\n  .status-filter { min-height:40px; border-radius:8px; font-weight:600; }\n  .status-filter.active { color:var(--primary); background:var(--primary-soft); border-color:#f3b5d0; }\n  .records-head { position:static; padding:.8rem .75rem; background:#f4f6f9; border-bottom-width:1px; }\n  .record-row { padding:1rem .75rem; }\n  .record-row:hover,.stats-table tbody tr:hover { background:#fdf7fa; }\n  .record-row .status-badge { border-radius:999px; font-size:.78rem; }\n  .record-name { line-height:1.65; }\n  .record-meta,.record-date { line-height:1.6; }\n  .stats-table th,.stats-table td { padding:.85rem .75rem; }\n  .notification-bell { width:44px; height:44px; flex-basis:44px; }\n  @media (max-width:1100px) {\n    .record-row { display:grid; border-radius:12px; margin-bottom:.75rem; gap:.5rem .75rem; }\n    .record-row:last-child { border-radius:12px; }\n    .record-actions { padding-top:.5rem; }\n  }\n  @media (max-width:900px) {\n    .workspace-shell { display:block; padding:0; }\n    .workspace-main { padding:0 1rem calc(88px + env(safe-area-inset-bottom)); }\n    .app-sidebar { position:fixed; inset:auto 0 0; padding:0; }\n    .app-nav { background:#fff; border-top:1px solid var(--line); padding:.4rem .5rem calc(.4rem + env(safe-area-inset-bottom)); gap:.4rem; border-radius:0; }\n    .app-nav-button { min-height:54px; }\n    .records-tools { width:100%; justify-content:flex-start; }\n    .search-box { flex:1; min-width:220px; }\n  }\n  @media (max-width:640px) {\n    .auth-card { padding:1.4rem; }\n    .workspace-main { padding-inline:.75rem; }\n    .workspace-main .app-content,.module-content { padding-top:1rem; }\n    .home-hero { padding:1.25rem; min-height:110px; }\n    .module-card { padding:1.25rem; }\n    .stats-grid { gap:.5rem; }\n    .stat-card { padding:.75rem .6rem; }\n    .stat-card strong { font-size:1.45rem; }\n    .stat-icon { width:36px; height:36px; }\n    .records-panel,.stats-panel { padding:.85rem; }\n    .record-row { padding:1rem; }\n    .search-box { min-width:0; flex-basis:100%; }\n    .status-filter,.btn-small { min-height:44px; }\n    input,select { font-size:16px; }\n    .modal-actions { flex-wrap:wrap; padding-bottom:calc(1rem + env(safe-area-inset-bottom)); }\n    \/* \u0e08\u0e2d\u0e40\u0e25\u0e47\u0e01\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e25\u0e14\u0e23\u0e30\u0e22\u0e30\u0e02\u0e2d\u0e1a\u0e25\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e22\u0e32\u0e27\u0e21\u0e35\u0e17\u0e35\u0e48\u0e2b\u0e32\u0e22\u0e43\u0e08 *\/\n    .modal-header { padding:.9rem 1rem .8rem; }\n    .modal-body,#changePasswordForm,.confirm-dialog-body { padding-inline:1rem; }\n    .modal-actions { padding-inline:1rem; }\n    .modal-header h2 { font-size:1.05rem; }\n    .detail-cell { padding:.7rem 0 .6rem; }\n  }\n  <\/style>\n\n  <style id=\"workflow-ui\">\n  .pending-callout { display:flex; align-items:center; justify-content:space-between; gap:1.25rem; margin:1.25rem 0; padding:1.25rem 1.5rem; background:var(--primary-soft); border:1px solid #f3cddd; border-radius:14px; }\n  .pending-callout h2 { margin:0 0 .35rem; font-size:1rem; }\n  .pending-callout p { margin:0; }\n  .pending-callout strong { color:var(--primary); font-size:1.5rem; font-variant-numeric:tabular-nums; }\n  .pending-callout small { display:block; margin-top:.3rem; }\n  .records-toolbar { display:grid; grid-template-columns:minmax(0,1fr); }\n  .records-tools { display:flex; width:100%; justify-content:flex-start; padding-top:1rem; border-top:1px solid var(--line); }\n  .records-tools .search-box { flex:1 1 280px; width:auto; }\n  .records-tools .sort-box { margin-left:auto; }\n  .record-audit { display:block; margin-top:.4rem; font-size:.76rem; font-weight:400; line-height:1.6; color:var(--muted); overflow-wrap:anywhere; }\n  #emptyStateAction { margin-top:1rem; }\n  #resultSummary { overflow-wrap:anywhere; }\n  @media(max-width:640px) {\n    .page-heading { align-items:stretch; }\n    .pending-callout { flex-direction:column; align-items:stretch; padding:1rem; gap:.85rem; }\n    .pending-callout .btn { width:100%; }\n    .records-tools .search-box { flex-basis:100%; }\n    .records-tools .sort-box { width:100%; }\n    #clearFiltersButton { width:100%; }\n  }\n  <\/style>\n  <style id=\"mail-list-ui\">\n  \/* ===== \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e41\u0e1a\u0e1a\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22 Gmail =====\n     \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e04\u0e38\u0e49\u0e19\u0e01\u0e31\u0e1a Gmail \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e08\u0e36\u0e07\u0e22\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e21\u0e32\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e38\u0e14: \u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e41\u0e17\u0e47\u0e1a\u0e01\u0e23\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\n     \u0e41\u0e16\u0e27\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e35\u0e48\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \"\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\" \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2d\u0e48\u0e32\u0e19 \u0e41\u0e25\u0e30\u0e0a\u0e35\u0e49\u0e41\u0e16\u0e27\u0e41\u0e25\u0e49\u0e27\u0e1b\u0e38\u0e48\u0e21\u0e42\u0e1c\u0e25\u0e48\u0e41\u0e17\u0e19\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\n     \u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e19\u0e35\u0e49\u0e27\u0e32\u0e07\u0e17\u0e49\u0e32\u0e22\u0e2a\u0e38\u0e14\u0e41\u0e25\u0e30\u0e1c\u0e39\u0e01\u0e17\u0e38\u0e01\u0e01\u0e0e\u0e44\u0e27\u0e49\u0e43\u0e15\u0e49 .mail-list \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19\u0e14\u0e35\u0e44\u0e0b\u0e19\u0e4c\u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e14\u0e34\u0e21\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e25\u0e48\u0e25\u0e1a\n     \u0e1b\u0e38\u0e48\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49 !important \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e18\u0e35\u0e21 WordPress \u0e23\u0e30\u0e1a\u0e32\u0e22\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e17\u0e31\u0e1a <button> \u0e17\u0e38\u0e01\u0e15\u0e31\u0e27 (\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a .icon-button) *\/\n  .mail-list { padding:0 !important; }\n  .mail-list .records-toolbar { display:flex; flex-direction:column; align-items:stretch; gap:.8rem; margin:0; padding:1.1rem 1.25rem .9rem; }\n  .mail-list .mail-heading h2 { margin:0; }\n  .mail-list .mail-heading .muted { margin:.2rem 0 0; }\n  .mail-list .records-tools { display:flex; align-items:center; gap:.65rem; flex-wrap:wrap; width:100%; padding:0; border:0; }\n\n  .mail-list .search-box {\n    flex:1 1 320px; width:auto; min-width:0; height:48px;\n    display:flex; align-items:center; gap:.2rem; padding:0 .4rem 0 .25rem;\n    border-radius:999px; background:#eef1f5; transition:background .15s, box-shadow .15s;\n  }\n  .mail-list .search-box:focus-within { background:#fff; box-shadow:0 1px 1px rgba(65,69,73,.3), 0 1px 3px 1px rgba(65,69,73,.15); }\n  .mail-list .search-box input {\n    flex:1; min-width:0; height:100%; min-height:0 !important; padding:0 .3rem;\n    border:0 !important; background:transparent !important; box-shadow:none !important; outline:0; font-size:.95rem;\n  }\n  .mail-list .sort-box { margin-left:0; display:flex; align-items:center; gap:.45rem; white-space:nowrap; }\n  .mail-list .sort-box select { min-height:40px; border-radius:999px; }\n\n  \/* \u0e1b\u0e38\u0e48\u0e21\u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e01\u0e25\u0e21 \u2014 \u0e43\u0e0a\u0e49\u0e17\u0e31\u0e49\u0e07\u0e43\u0e19\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d \u0e0a\u0e48\u0e2d\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e41\u0e25\u0e30\u0e1b\u0e38\u0e48\u0e21\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e42\u0e1c\u0e25\u0e48\u0e1a\u0e19\u0e41\u0e16\u0e27 *\/\n  .mail-list .mail-tool, .mail-list .mail-search-submit {\n    flex:0 0 auto; display:inline-grid; place-items:center;\n    width:40px !important; height:40px !important; min-height:0 !important; margin:0; padding:0 !important;\n    border:0 !important; border-radius:50% !important; background:transparent !important; box-shadow:none !important;\n    color:#5f6368 !important; transform:none !important; cursor:pointer;\n  }\n  .mail-list .mail-tool:hover:not(:disabled), .mail-list .mail-search-submit:hover { background:rgba(32,33,36,.08) !important; color:var(--ink) !important; }\n  .mail-list .mail-tool:focus-visible, .mail-list .mail-search-submit:focus-visible { outline:2px solid var(--primary); outline-offset:-2px; }\n  .mail-list .mail-tool:disabled { opacity:.38; cursor:default; }\n  .mail-list .mail-tool .ui-icon, .mail-list .mail-search-submit .ui-icon { width:20px; height:20px; }\n  .mail-list #clearFiltersButton {\n    flex:0 0 auto; width:auto; height:34px; min-height:0 !important; padding:0 .85rem !important;\n    border:0 !important; border-radius:999px !important; background:transparent !important; box-shadow:none !important;\n    color:var(--primary) !important; font:inherit; font-size:.85rem; font-weight:600; white-space:nowrap; cursor:pointer;\n  }\n  .mail-list #clearFiltersButton:hover { background:rgba(32,33,36,.08) !important; }\n  .mail-list #clearFiltersButton:disabled { display:none; } \/* \u0e42\u0e1c\u0e25\u0e48\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e15\u0e2d\u0e19\u0e21\u0e35\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e25\u0e49\u0e32\u0e07 *\/\n\n  \/* \u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d *\/\n  .mail-list .records-sticky { border-top:1px solid var(--line); background:#fff; }\n  .mail-list .bulk-bar { display:flex; align-items:center; flex-wrap:nowrap; gap:.1rem; min-height:52px; margin:0; padding:.25rem .75rem .25rem .55rem; border:0; border-radius:0; background:#fff; }\n  .mail-list .bulk-select { gap:0; height:40px; padding:0 0 0 .6rem; border:0; border-radius:4px; background:transparent; }\n  .mail-list .bulk-select:hover { background:rgba(32,33,36,.06); }\n  .mail-list .bulk-select-box { width:18px; height:18px; }\n  .mail-list .bulk-select-caret {\n    width:24px !important; height:40px !important; min-height:0 !important; padding:0 !important;\n    border:0 !important; border-radius:4px !important; background:transparent !important; box-shadow:none !important; color:#5f6368 !important;\n  }\n  .mail-list .mail-more { position:relative; }\n  .mail-list .bulk-select-menu {\n    top:calc(100% + 2px); min-width:12rem; padding:.4rem 0;\n    border:0; border-radius:4px; background:#fff;\n    box-shadow:0 2px 2px rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px rgba(0,0,0,.2);\n  }\n  .mail-list .bulk-select-item {\n    min-height:0 !important; padding:.6rem 1.75rem .6rem 1.5rem !important;\n    border:0 !important; border-radius:0 !important; background:transparent !important; box-shadow:none !important;\n    color:var(--ink) !important; font-size:.92rem; font-weight:400;\n  }\n  .mail-list .bulk-select-item:hover:not(:disabled), .mail-list .bulk-select-item:focus-visible { background:rgba(32,33,36,.08) !important; }\n  .mail-list .bulk-select-item:disabled { color:#a3adba !important; }\n  .mail-list .bulk-count { margin-left:.65rem; color:var(--ink); font-size:.86rem; white-space:nowrap; }\n  .mail-list .bulk-actions { margin-left:.6rem; }\n  .mail-list .mail-pager { display:flex; align-items:center; gap:0; margin-left:auto; padding:0; color:#5f6368; font-size:.82rem; white-space:nowrap; }\n  .mail-list #pageInfo { margin-right:.55rem; font-variant-numeric:tabular-nums; }\n\n  \/* \u0e41\u0e17\u0e47\u0e1a\u0e01\u0e23\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30 \u2014 \u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e41\u0e25\u0e30\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49\u0e41\u0e1a\u0e1a\u0e41\u0e17\u0e47\u0e1a \"\u0e2b\u0e25\u0e31\u0e01\/\u0e42\u0e1b\u0e23\u0e42\u0e21\u0e0a\u0e31\u0e19\" \u0e02\u0e2d\u0e07 Gmail *\/\n  .mail-list .mail-tabs { display:flex; flex-wrap:nowrap; gap:0; width:auto; padding:0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }\n  .mail-list .mail-tabs .status-filter {\n    position:relative; flex:0 1 230px; min-width:0; height:56px; min-height:0 !important;\n    display:flex; align-items:center; gap:.9rem; padding:0 1rem 0 1.25rem !important;\n    border:0 !important; border-radius:0 !important; background:transparent !important; box-shadow:none !important;\n    color:#5f6368 !important; font-size:.9rem; font-weight:600; text-align:left;\n  }\n  .mail-list .mail-tabs .status-filter:hover { background:rgba(32,33,36,.05) !important; }\n  .mail-list .mail-tabs .status-filter.active { color:var(--primary) !important; }\n  .mail-list .mail-tabs .status-filter.active::after { content:\"\"; position:absolute; left:.5rem; right:.5rem; bottom:0; height:3px; border-radius:3px 3px 0 0; background:var(--primary); }\n  .mail-list .mail-tabs .ui-icon { width:20px; height:20px; }\n  .mail-list .mail-tab-count { padding:0 .5rem; border-radius:999px; background:var(--primary); color:#fff; font-size:.72rem; font-weight:700; line-height:1.6; }\n\n  \/* \u0e41\u0e16\u0e27\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d *\/\n  .mail-list .records-head { display:none !important; }\n  .mail-list .records-list { border-top:0; }\n  .mail-list .record-row {\n    position:relative; display:grid;\n    grid-template-columns:44px minmax(9rem, 14rem) minmax(0, 1fr) auto;\n    grid-template-areas:\"pick name snippet end\";\n    align-items:center; gap:0 .75rem;\n    min-height:48px; margin:0; padding:0 1rem 0 .5rem;\n    border:0; border-bottom:1px solid #eceff1; border-radius:0 !important;\n    background:#fff; cursor:pointer; transition:none;\n  }\n  .mail-list .record-row:nth-child(even) { background:#fff; }\n  .mail-list .record-row.is-confirmed { background:#f4f6f8; } \/* \u0e40\u0e17\u0e35\u0e22\u0e1a \"\u0e2d\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\" *\/\n  .mail-list .record-row:hover { z-index:1; box-shadow:inset 1px 0 0 #dadce0, inset -1px 0 0 #dadce0, 0 1px 2px 0 rgba(60,64,67,.3), 0 1px 3px 1px rgba(60,64,67,.15); }\n  .mail-list .record-row.is-picked { background:var(--primary-soft) !important; }\n  .mail-list .record-pick { grid-area:pick; align-self:stretch; display:flex; align-items:center; justify-content:center; cursor:pointer; }\n  .mail-list .record-checkbox { width:18px; height:18px; }\n  .mail-list .record-name, .mail-list .record-snippet, .mail-list .record-date { min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }\n  .mail-list .record-name { grid-area:name; color:var(--ink); font-size:.92rem; font-weight:700; line-height:1.4; }\n  .mail-list .record-snippet { grid-area:snippet; color:#5f6368; font-size:.9rem; line-height:1.4; }\n  .mail-list .record-subject { color:var(--ink); font-weight:700; }\n  .mail-list .is-confirmed .record-name, .mail-list .is-confirmed .record-subject, .mail-list .is-confirmed .record-date { font-weight:400; }\n  .mail-list .record-audit { display:inline; margin:0; color:#5f6368; font-size:inherit; font-weight:400; line-height:inherit; }\n  .mail-list .record-row .status-badge { display:inline-flex; gap:.3rem; margin-right:.5rem; padding:0 .45rem; vertical-align:1px; border-radius:4px; font-size:.72rem; font-weight:600; line-height:1.55; }\n  .mail-list .record-row .status-badge::before { width:.4rem; height:.4rem; }\n  .mail-list .record-end { grid-area:end; position:relative; display:flex; align-items:center; justify-content:flex-end; min-width:7.5rem; align-self:stretch; }\n  .mail-list .record-date { color:var(--ink); font-size:.82rem; font-weight:700; }\n  .mail-list .record-date::before { content:none; }\n  .mail-list .record-date.record-empty { color:#a3adba; font-weight:400; }\n  .mail-list .record-actions { position:absolute; top:50%; right:-.35rem; display:none; gap:0; margin:0; padding:0; transform:translateY(-50%); }\n  .mail-list .record-row:hover .record-actions, .mail-list .record-row:focus-within .record-actions { display:flex; }\n  .mail-list .record-row:hover .record-date, .mail-list .record-row:focus-within .record-date { visibility:hidden; }\n  .mail-list .record-actions .mail-tool.is-confirm { color:var(--success) !important; }\n  .mail-list .record-actions .mail-tool.is-confirm:hover { background:var(--success-soft) !important; }\n\n  @media (max-width:760px) {\n    .mail-list .records-toolbar { padding:.9rem .85rem .75rem; }\n    .mail-list .sort-box { width:100%; }\n    .mail-list .sort-box select { flex:1; }\n    .mail-list .bulk-bar { padding:.2rem .35rem; }\n    .mail-list .bulk-count { display:none; } \/* \u0e08\u0e33\u0e19\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e02\u0e36\u0e49\u0e19\u0e1a\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 *\/\n    .mail-list .bulk-actions { width:auto; margin-left:.3rem; }\n    .mail-list .bulk-actions .btn { flex:0 0 auto; }\n    .mail-list #pageInfo { margin-right:.2rem; }\n    .mail-list .mail-tabs .status-filter { flex:1 1 0; justify-content:center; gap:.4rem; height:48px; padding:0 .3rem !important; font-size:.84rem; }\n    .mail-list .mail-tabs .ui-icon { display:none; }\n    \/* \u0e08\u0e2d\u0e40\u0e25\u0e47\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e2d\u0e07\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e41\u0e1a\u0e1a\u0e41\u0e2d\u0e1b Gmail: \u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e1a\u0e19 \u0e1b\u0e49\u0e32\u0e22\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e25\u0e48\u0e32\u0e07 *\/\n    .mail-list .record-row { grid-template-columns:36px minmax(0, 1fr) auto; grid-template-areas:\"pick name end\" \"pick snippet snippet\"; gap:.15rem .5rem; padding:.6rem .8rem .65rem .15rem; }\n    .mail-list .record-end { min-width:0; }\n    \/* \u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e43\u0e2b\u0e49\u0e0a\u0e35\u0e49 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1b\u0e38\u0e48\u0e21\u0e1a\u0e19\u0e41\u0e16\u0e27 \u2014 \u0e41\u0e15\u0e30\u0e41\u0e16\u0e27\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e08\u0e32\u0e01\u0e43\u0e19\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e19\u0e31\u0e49\u0e19 *\/\n    .mail-list .record-actions { display:none !important; }\n    .mail-list .record-row:hover .record-date, .mail-list .record-row:focus-within .record-date { visibility:visible; }\n    .mail-list .record-row:hover { box-shadow:none; }\n  }\n  \n  \/* Visible download actions, shared by both frontends. *\/\n  .download-panel { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:1.2rem 0; padding:1rem 1.2rem; border:1px solid #a7d8bc; border-radius:12px; background:#f0fdf4; }\n  .download-copy { min-width:0; }\n  .download-copy h2 { margin:0; color:#14532d; font-size:1.05rem; font-weight:700; }\n  .download-copy p { margin:.25rem 0 0; color:#365744; font-size:.85rem; line-height:1.6; }\n  .download-panel .download-group { display:flex; flex-wrap:wrap; flex-shrink:0; gap:.65rem; }\n  .download-panel .download-button { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; min-height:50px; padding:.75rem 1.1rem; font-size:1rem; font-weight:700; white-space:normal; }\n  .download-panel .download-button .ui-icon { width:22px; height:22px; flex:0 0 22px; }\n  .download-panel .btn-excel { color:#fff; background:#15803d; border-color:#15803d; box-shadow:0 3px 8px rgba(21,128,61,.16); }\n  .download-panel .btn-excel:hover { color:#fff; background:#166534; border-color:#166534; }\n  .download-panel .download-csv { color:#14532d; background:#fff; border:1px solid #528364; }\n  .download-panel .download-csv:hover { background:#dcfce7; border-color:#166534; }\n  .download-panel .download-button:focus-visible { outline:3px solid #14532d; outline-offset:3px; }\n  @media (max-width:1000px) {\n    .download-panel { align-items:stretch; flex-direction:column; }\n    .download-panel .download-group { width:100%; }\n    .download-panel .download-button { flex:1; }\n  }\n  @media (max-width:480px) {\n    .download-panel { padding:1rem; }\n    .download-panel .download-group { flex-direction:column; }\n    .download-panel .download-button { width:100%; }\n  }\n  \/* ===== \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e32\u0e22\u0e38\u0e42\u0e14\u0e22\u0e2a\u0e23\u0e38\u0e1b (\u0e0a\u0e48\u0e27\u0e07\u0e2d\u0e32\u0e22\u0e38 \/ \u0e19\u0e49\u0e2d\u0e22\u0e2a\u0e38\u0e14 \/ \u0e21\u0e32\u0e01\u0e2a\u0e38\u0e14 \/ \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22) ===== *\/\n  .age-facts { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:.6rem; margin:0 0 1rem; }\n  .age-fact { min-width:0; padding:.7rem .85rem; border:1px solid var(--line); border-radius:10px; background:#fafbfd; }\n  .age-fact small { display:block; color:var(--muted); font-size:.78rem; }\n  .age-fact strong { display:block; margin-top:.1rem; color:var(--ink); font-size:1.25rem; font-variant-numeric:tabular-nums; }\n  .age-fact span { display:block; color:var(--muted); font-size:.74rem; }\n  @media (max-width:760px) { .age-facts { grid-template-columns:repeat(2, minmax(0, 1fr)); } }\n  \/* ===== \u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01: \u0e2b\u0e31\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a + \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e07\u0e32\u0e19\u0e2a\u0e32\u0e21\u0e43\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e07\u0e41\u0e16\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27 ===== *\/\n  .home-hero { min-height:0 !important; padding:1.15rem 1.5rem !important; }\n  .home-hero h1 { margin:.15rem 0 0; }\n  .home-hero .eyebrow { margin:0; color:var(--muted); letter-spacing:.02em; }\n  .home-hero-sub { margin:.3rem 0 0; color:var(--muted); font-size:.88rem; }\n  .module-card-grid { grid-template-columns:repeat(auto-fit, minmax(min(15rem, 100%), 1fr)); }\n  .module-card { display:flex; flex-direction:column; }\n  .module-card p { flex:1; }\n  \/* \u0e18\u0e35\u0e21 WordPress \u0e15\u0e31\u0e49\u0e07 white-space:nowrap \u0e43\u0e2b\u0e49 <button> \u0e17\u0e38\u0e01\u0e15\u0e31\u0e27 \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e38\u0e48\u0e21 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e31\u0e14\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e41\u0e25\u0e49\u0e27\u0e25\u0e49\u0e19\u0e02\u0e2d\u0e1a *\/\n  .module-card, .module-card * { white-space:normal !important; }\n  .module-card { min-width:0; overflow:hidden; text-align:left !important; }\n  .module-card h2, .module-card p { overflow-wrap:break-word; }\n  .module-card-meta .home-card-go { color:var(--primary); font-weight:600; }\n  \/* ===== \u0e02\u0e31\u0e14\u0e40\u0e07\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32 (presentation only) =====\n     \u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e19\u0e35\u0e49\u0e27\u0e32\u0e07\u0e17\u0e49\u0e32\u0e22\u0e2a\u0e38\u0e14\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19\u0e14\u0e35\u0e44\u0e0b\u0e19\u0e4c\u0e40\u0e14\u0e34\u0e21\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e25\u0e48\u0e41\u0e01\u0e49\u0e17\u0e35\u0e25\u0e30\u0e0a\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e25\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\n     \u0e2a\u0e35\u0e02\u0e2d\u0e07\u0e01\u0e23\u0e32\u0e1f\u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e09\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21 (\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e15\u0e32\u0e1a\u0e2d\u0e14\u0e2a\u0e35) \u2014 \u0e2a\u0e35\u0e40\u0e2a\u0e23\u0e34\u0e21\u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e41\u0e22\u0e01\u0e2b\u0e21\u0e27\u0e14 *\/\n  :root { --accent-indigo:#4f46e5; --accent-indigo-soft:#eef2ff; --accent-teal:#0f766e; --accent-teal-soft:#e6f6f4;\n    --accent-amber:#b45309; --accent-amber-soft:#fef3e2; --radius-lg:16px; --radius-md:12px;\n    --shadow-card:0 1px 2px rgba(24,39,60,.04), 0 6px 20px rgba(24,39,60,.05);\n    --shadow-hover:0 2px 4px rgba(24,39,60,.05), 0 14px 32px rgba(24,39,60,.10); }\n  .app-shell { background:linear-gradient(180deg, #fbf6f9 0, var(--background) 320px); }\n  .topbar { box-shadow:0 1px 0 var(--line), 0 6px 18px rgba(24,39,60,.04) !important; border-bottom:0 !important; }\n  .mini-mark { box-shadow:0 0 0 3px var(--primary-soft) !important; }\n\n  \/* \u0e40\u0e21\u0e19\u0e39\u0e02\u0e49\u0e32\u0e07: \u0e41\u0e16\u0e1a\u0e2a\u0e35\u0e1a\u0e2d\u0e01\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2d\u0e22\u0e39\u0e48 *\/\n  .app-nav-button { position:relative; transition:background .15s ease, color .15s ease; }\n  .app-nav-button:hover:not(.active) { background:#fff !important; color:var(--ink) !important; box-shadow:var(--shadow-card); }\n  .app-nav-button.active { background:#fff !important; color:var(--primary) !important; box-shadow:var(--shadow-card) !important; }\n  .app-nav-button.active::before { content:\"\"; position:absolute; left:0; top:22%; bottom:22%; width:3px; border-radius:0 3px 3px 0; background:var(--primary); }\n  .app-nav-button.active .nav-icon { color:var(--primary); }\n\n  \/* \u0e2b\u0e31\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01 *\/\n  .home-hero { position:relative; overflow:hidden; border:1px solid var(--line) !important; border-left:4px solid var(--primary) !important;\n    border-radius:var(--radius-lg) !important; background:linear-gradient(115deg, #fff 55%, #fdf0f6 100%) !important; box-shadow:var(--shadow-card) !important; }\n  .home-hero::after { content:\"\" !important; display:block !important; position:absolute; right:-60px; top:-70px; width:220px; height:220px;\n    border:32px solid rgba(190,24,93,.06); border-radius:50%; pointer-events:none; }\n  .home-hero .eyebrow { color:var(--primary) !important; font-weight:600; }\n\n  \/* \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a *\/\n  .pending-callout { position:relative; border:1px solid #f4c9dc !important; border-radius:var(--radius-lg) !important;\n    background:linear-gradient(110deg, #fff5f9 0%, #fde7f1 100%) !important; box-shadow:var(--shadow-card); }\n  .pending-callout strong { font-size:1.9rem !important; line-height:1.1; letter-spacing:-.01em; }\n  .pending-callout .btn { padding-inline:1.2rem !important; box-shadow:0 6px 14px rgba(190,24,93,.22) !important; }\n\n  \/* \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e07\u0e32\u0e19: \u0e22\u0e01\u0e15\u0e31\u0e27\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e0a\u0e35\u0e49 \u0e41\u0e25\u0e30\u0e41\u0e22\u0e01\u0e2a\u0e35\u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e15\u0e32\u0e21\u0e2b\u0e21\u0e27\u0e14 *\/\n  .module-card { position:relative; border:1px solid var(--line) !important; border-radius:var(--radius-lg) !important;\n    background:#fff !important; box-shadow:var(--shadow-card) !important; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease !important; }\n  .module-card::before { content:\"\"; position:absolute; inset:0 0 auto; height:3px; background:var(--card-accent, var(--primary)); opacity:.85; }\n  .module-card:hover { transform:translateY(-3px) !important; box-shadow:var(--shadow-hover) !important; border-color:color-mix(in srgb, var(--card-accent, var(--primary)) 35%, var(--line)) !important; }\n  .module-card:focus-visible { outline:3px solid var(--card-accent, var(--primary)); outline-offset:3px; }\n  .module-card-icon { width:48px !important; height:48px !important; border-radius:14px !important;\n    color:var(--card-accent, var(--primary)) !important; background:var(--card-accent-soft, var(--primary-soft)) !important; }\n  .module-card h2 { color:var(--ink); font-weight:600; }\n  .module-card-meta strong, .module-card-meta .home-card-go { color:var(--card-accent, var(--primary)) !important; }\n  .module-card[data-open-module=\"applicants\"] { --card-accent:var(--primary); --card-accent-soft:var(--primary-soft); }\n  .module-card[data-open-module=\"stats\"] { --card-accent:var(--accent-indigo); --card-accent-soft:var(--accent-indigo-soft); }\n  .module-card[data-open-module=\"regstats\"] { --card-accent:var(--accent-teal); --card-accent-soft:var(--accent-teal-soft); }\n  @media (prefers-reduced-motion:reduce) { .module-card:hover { transform:none !important; } }\n\n  \/* \u0e2b\u0e31\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e15\u0e48\u0e25\u0e30\u0e2b\u0e19\u0e49\u0e32 *\/\n  .page-heading h1 { letter-spacing:-.01em; font-weight:600; }\n  .page-heading .eyebrow { color:var(--primary); font-weight:600; }\n\n  \/* \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e2a\u0e23\u0e38\u0e1b *\/\n  .stat-card { position:relative; overflow:hidden; border:1px solid var(--line) !important; border-radius:var(--radius-md) !important;\n    background:#fff !important; box-shadow:var(--shadow-card) !important; }\n  .stat-card small { font-weight:500; }\n  .stat-icon { border-radius:12px !important; }\n  .stat-icon.teal { color:var(--primary); background:var(--primary-soft) !important; }\n  .stat-icon.green { color:var(--accent-teal) !important; background:var(--accent-teal-soft) !important; }\n  .stat-icon.amber { color:var(--accent-amber) !important; background:var(--accent-amber-soft) !important; }\n\n  \/* \u0e41\u0e1c\u0e07\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e41\u0e25\u0e30\u0e15\u0e32\u0e23\u0e32\u0e07 *\/\n  .stats-panel, .records-panel { border:1px solid var(--line) !important; border-radius:var(--radius-lg) !important; box-shadow:var(--shadow-card) !important; }\n  .stats-panel-head { padding-bottom:.75rem; margin-bottom:1rem !important; border-bottom:1px solid var(--line); }\n  .stats-panel-head h2 { font-size:1.05rem !important; font-weight:600; }\n  .stats-table-wrap { border:1px solid var(--line); border-radius:var(--radius-md); }\n  .stats-table th, .stats-table td { border-bottom-color:#edf0f4 !important; }\n  .stats-table thead th { background:#f7f8fb !important; color:var(--muted) !important; text-transform:none; letter-spacing:.01em; }\n  .stats-table tbody tr:last-child td { border-bottom:0 !important; }\n  .stats-table td:not(:first-child) { font-variant-numeric:tabular-nums; }\n  .viz-track { height:14px !important; border-radius:999px !important; }\n  .viz-fill { border-radius:999px !important; }\n  .age-fact { border-radius:var(--radius-md) !important; background:linear-gradient(180deg, #fff 0%, #fafbfd 100%) !important; }\n  .age-fact strong { color:var(--primary) !important; }\n\n  \/* \u0e41\u0e16\u0e1a\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e30\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a *\/\n  .download-panel { border-radius:var(--radius-lg) !important; box-shadow:var(--shadow-card); }\n  .modal { border-radius:20px !important; }\n  .toast { box-shadow:0 12px 28px rgba(15,23,42,.18) !important; }\n  \/* ===== \u0e2b\u0e19\u0e49\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a =====\n     \u0e41\u0e17\u0e47\u0e1a \"\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \/ \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01\" \u0e22\u0e49\u0e32\u0e22\u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b\u0e44\u0e27\u0e49\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e14\u0e49\u0e27\u0e22 order (\u0e44\u0e21\u0e48\u0e41\u0e15\u0e30\u0e25\u0e33\u0e14\u0e31\u0e1a HTML)\n     \u0e04\u0e19\u0e21\u0e2d\u0e07\u0e2b\u0e32\u0e15\u0e31\u0e27\u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e23\u0e2d\u0e01 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e23\u0e2d\u0e01\u0e40\u0e2a\u0e23\u0e47\u0e08 *\/\n  .auth-shell { background:radial-gradient(circle at 15% 10%, rgba(190,24,93,.08), transparent 26rem),\n    radial-gradient(circle at 85% 90%, rgba(79,70,229,.06), transparent 24rem), #f7f8fb !important; }\n  .auth-card { display:flex; flex-direction:column; border-radius:20px !important; box-shadow:0 18px 50px rgba(24,39,60,.09) !important; }\n  .auth-card::before { content:\"\"; position:absolute; inset:0 0 auto; height:4px; background:linear-gradient(90deg, var(--primary), #ec4899) !important; }\n  .auth-brand { order:-3; }\n  .auth-intro { order:-2; }\n  .auth-tabs { order:-1; margin:0 0 .4rem !important; }\n  .auth-brand h1 { line-height:1.3; }\n  .auth-content .btn-primary { min-height:48px; font-size:.95rem; box-shadow:0 8px 18px rgba(190,24,93,.2) !important; }\n  .security-note { margin-top:1.1rem !important; padding-top:1rem; border-top:1px solid var(--line); }\n  <\/style>\n<\/head>\n\n<body>\n  <div id=\"toastRegion\" class=\"toast-region\" aria-live=\"polite\"><\/div>\n  <div id=\"loadingOverlay\" class=\"loading-overlay hidden\" aria-live=\"polite\" aria-busy=\"true\">\n    <div class=\"spinner\"><\/div>\n    <span id=\"loadingText\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14...<\/span>\n    <span id=\"loadingHint\" class=\"loading-hint hidden\"><\/span>\n    <button id=\"loadingEscape\" class=\"loading-escape hidden\" type=\"button\">\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48<\/button>\n  <\/div>\n\n  <main id=\"authView\" class=\"auth-shell\">\n    <section class=\"auth-card\" aria-labelledby=\"authTitle\">\n      <div class=\"auth-brand\">\n        <div class=\"auth-logo\" id=\"brandLogo\" aria-hidden=\"true\">\u0e2d<\/div>\n        <div>\n          <h1 id=\"authTitle\">Abhidhamma Student Information System - ASIS<\/h1>\n          <p class=\"brand-sub\">\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22<br>\u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22<\/p>\n        <\/div>\n      <\/div>\n\n      <div id=\"loginPanel\" class=\"auth-content\">\n        <form id=\"loginForm\" novalidate>\n          <label class=\"field\">\n            <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n            <input id=\"loginId\" name=\"login\" autocomplete=\"username\" placeholder=\"username@example.com\" required>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/span>\n            <span class=\"password-wrap\">\n              <input id=\"loginPassword\" name=\"password\" type=\"password\" autocomplete=\"current-password\" placeholder=\"\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\" required>\n              <button class=\"password-toggle\" type=\"button\" aria-label=\"\u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e0b\u0e48\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\">\u0e41\u0e2a\u0e14\u0e07<\/button>\n            <\/span>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/button>\n          <button id=\"forgotButton\" class=\"text-button btn-block\" type=\"button\">\u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19?<\/button>\n        <\/form>\n      <\/div>\n\n      <div id=\"registerPanel\" class=\"auth-content hidden\">\n        <div class=\"section-heading\">\n          <h2>\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01<\/h2>\n          <p>\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34<\/p>\n        <\/div>\n        <form id=\"registerForm\" novalidate>\n          <div class=\"form-two-columns\">\n            <label class=\"field\">\n              <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49<\/span>\n              <input name=\"username\" minlength=\"4\" maxlength=\"80\" autocomplete=\"username\" required>\n            <\/label>\n            <label class=\"field\">\n              <span>\u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n              <input name=\"email\" type=\"email\" maxlength=\"200\" autocomplete=\"email\" required>\n            <\/label>\n          <\/div>\n          <label class=\"field\">\n            <span>\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/span>\n            <select id=\"schoolSelect\" name=\"schoolName\" required>\n              <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014<\/option>\n              <option value=\"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\">\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\">\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\">\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\">\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\">\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01\">\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\">\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\">\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\">\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\">\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\">\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\">\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\">\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\">\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15<\/option>\n              <option value=\"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\">\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\">\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\">\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\">\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e2a\u0e31\u0e19\u0e15\u0e34\u0e19\u0e34\u0e27\u0e32\u0e2a (\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e2f)\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e2a\u0e31\u0e19\u0e15\u0e34\u0e19\u0e34\u0e27\u0e32\u0e2a (\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e2f)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\">\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21\">\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)\">\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25\">\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21<\/option>\n            <\/select>\n            <small>\u0e41\u0e15\u0e48\u0e25\u0e30\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e21\u0e35\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e41\u0e25\u0e49\u0e27\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 3 \u0e1a\u0e31\u0e0d\u0e0a\u0e35<\/small>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/span>\n            <span class=\"password-wrap\">\n              <input name=\"password\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n              <button class=\"password-toggle\" type=\"button\" aria-label=\"\u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e0b\u0e48\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\">\u0e41\u0e2a\u0e14\u0e07<\/button>\n            <\/span>\n            <small>\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 8 \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \u0e41\u0e25\u0e30\u0e21\u0e35\u0e17\u0e31\u0e49\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02<\/small>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/span>\n            <input name=\"confirmPassword\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01<\/button>\n        <\/form>\n      <\/div>\n\n      <div id=\"forgotPanel\" class=\"auth-content hidden\">\n        <button class=\"back-button\" type=\"button\" data-back-login>\u2190 \u0e01\u0e25\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/button>\n        <div class=\"section-heading\">\n          <h2>\u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/h2>\n          <p>\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e15\u0e31\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19<\/p>\n        <\/div>\n        <form id=\"forgotForm\">\n          <label class=\"field\">\n            <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n            <input name=\"loginId\" autocomplete=\"username\" required>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e2a\u0e48\u0e07\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15<\/button>\n        <\/form>\n      <\/div>\n\n      <div id=\"resetPanel\" class=\"auth-content hidden\">\n        <div class=\"section-heading\">\n          <h2>\u0e15\u0e31\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/h2>\n          <p>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 8 \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23<\/p>\n        <\/div>\n        <form id=\"resetForm\">\n          <label class=\"field\">\n            <span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span>\n            <input name=\"newPassword\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span>\n            <input name=\"confirmPassword\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/button>\n        <\/form>\n      <\/div>\n\n      <div class=\"auth-tabs\" role=\"tablist\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e27\u0e34\u0e18\u0e35\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\">\n        <button id=\"loginTab\" class=\"auth-tab active\" type=\"button\" data-auth-target=\"loginPanel\">\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/button>\n        <button id=\"registerTab\" class=\"auth-tab\" type=\"button\" data-auth-target=\"registerPanel\">\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01<\/button>\n      <\/div>\n      <div class=\"security-note\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"5\" y=\"10.5\" width=\"14\" height=\"9.5\" rx=\"1.5\"\/><path d=\"M8.5 10.5V7.5a3.5 3.5 0 0 1 7 0v3\"\/><\/svg> \u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07<\/div>\n    <\/section>\n  <\/main>\n  <main id=\"appView\" class=\"app-shell hidden\">\n    <header class=\"topbar\">\n      <div class=\"topbar-brand\">\n        <div class=\"mini-mark\" id=\"brandMark\">\u2713<\/div>\n        <div>\n          <strong id=\"appNameTopbar\">Abhidhamma Student Information System - ASIS<\/strong>\n          <small>Student Verification Portal<\/small>\n        <\/div>\n      <\/div>\n      <div class=\"user-menu\">\n        <div class=\"user-copy\">\n          <strong id=\"userDisplay\"><\/strong>\n          <small id=\"userRole\"><\/small>\n        <\/div>\n        <button id=\"notificationBell\" class=\"notification-bell\" type=\"button\" aria-label=\"\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\" title=\"\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6.5 10a5.5 5.5 0 0 1 11 0c0 4 1.5 5.5 1.5 5.5H5S6.5 14 6.5 10\"\/><path d=\"M10 18.5a2 2 0 0 0 4 0\"\/><\/svg><span id=\"notificationBadge\" class=\"notification-badge hidden\" aria-hidden=\"true\">0<\/span><\/button>\n        <button id=\"changePasswordButton\" class=\"btn btn-ghost\" type=\"button\">\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/button>\n        <button id=\"logoutButton\" class=\"btn btn-outline\" type=\"button\">\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a<\/button>\n      <\/div>\n    <\/header>\n\n    <div class=\"workspace-shell\">\n      <aside class=\"app-sidebar\">\n        <nav class=\"app-nav\" aria-label=\"\u0e40\u0e21\u0e19\u0e39\u0e2b\u0e25\u0e31\u0e01\">\n          <button class=\"app-nav-button active\" type=\"button\" data-module=\"home\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 10.5 12 3l9 7.5\"\/><path d=\"M5.5 9.5V20h13V9.5\"\/><path d=\"M10 20v-6h4v6\"\/><\/svg><\/span><span>\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01<\/span><\/button>\n          <button class=\"app-nav-button\" type=\"button\" data-module=\"applicants\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span><span>\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span><\/button>\n          <button class=\"app-nav-button\" type=\"button\" data-module=\"stats\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V4\"\/><path d=\"M4 20h16\"\/><path d=\"M8 20v-5M12.5 20V9M17 20v-8\"\/><\/svg><\/span><span>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/span><\/button>\n          <button class=\"app-nav-button\" type=\"button\" data-module=\"regstats\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8.5 4h7v3h-7z\"\/><path d=\"M8.5 5.5H5.5V20h13V5.5h-3\"\/><path d=\"M8.5 11.5h7M8.5 15h4.5\"\/><\/svg><\/span><span>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span><\/button>\n        <\/nav>\n      <\/aside>\n\n      <div class=\"workspace-main\">\n        <section id=\"homeModule\" class=\"module-view module-content\">\n          <div class=\"home-hero\">\n            <div>\n              <p id=\"homeGreeting\" class=\"eyebrow\">\u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e19\u0e23\u0e31\u0e1a<\/p>\n              <h1 id=\"homeSchoolName\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23<\/h1>\n              <p class=\"home-hero-sub\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e07\u0e32\u0e19\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 \u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e0a\u0e49\u0e40\u0e21\u0e19\u0e39\u0e14\u0e49\u0e32\u0e19\u0e02\u0e49\u0e32\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e25\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32<\/p>\n            <\/div>\n          <\/div>\n\n          <section class=\"pending-callout\" aria-labelledby=\"pendingHeading\">\n            <div><h2 id=\"pendingHeading\">\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/h2><p>\u0e23\u0e2d\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 <strong id=\"homePendingActionCount\">\u2014<\/strong> \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23<\/p><small id=\"homePendingScope\" class=\"muted\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/small><\/div>\n            <button id=\"openPendingButton\" class=\"btn btn-primary\" type=\"button\" disabled>\u0e14\u0e39\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e2d\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u2192<\/button>\n          <\/section>\n          <div class=\"module-card-grid\" aria-label=\"\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01\">\n            <button class=\"module-card\" type=\"button\" data-open-module=\"applicants\">\n              <span class=\"module-card-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span>\n              <h2>\u0e14\u0e39\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h2>\n              <p>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/p>\n              <span class=\"module-card-meta\"><span>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 <strong id=\"homeApplicantTotal\">0<\/strong><\/span><span>\u0e43\u0e2b\u0e21\u0e48 <strong id=\"homeApplicantPending\">0<\/strong><\/span><\/span>\n            <\/button>\n            <button class=\"module-card\" type=\"button\" data-open-module=\"stats\">\n              <span class=\"module-card-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V4\"\/><path d=\"M4 20h16\"\/><path d=\"M8 20v-5M12.5 20V9M17 20v-8\"\/><\/svg><\/span>\n              <h2>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/h2>\n              <p>\u0e14\u0e39\u0e08\u0e33\u0e19\u0e27\u0e19\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e41\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/p>\n              <span class=\"module-card-meta\"><span id=\"homeStatsLabel\">\u0e1c\u0e25\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e1b\u0e35<\/span><strong id=\"homeStatsYear\" class=\"home-card-go\">\u0e40\u0e1b\u0e34\u0e14\u0e14\u0e39 \u2192<\/strong><\/span>\n            <\/button>\n            <button class=\"module-card\" type=\"button\" data-open-module=\"regstats\">\n              <span class=\"module-card-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8.5 4h7v3h-7z\"\/><path d=\"M8.5 5.5H5.5V20h13V5.5h-3\"\/><path d=\"M8.5 11.5h7M8.5 15h4.5\"\/><\/svg><\/span>\n              <h2>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h2>\n              <p>\u0e14\u0e39\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e23\u0e32\u0e22\u0e1b\u0e35 \u0e23\u0e32\u0e22\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e0a\u0e48\u0e27\u0e07\u0e2d\u0e32\u0e22\u0e38 \u0e41\u0e25\u0e30\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23<\/p>\n              <span class=\"module-card-meta\"><span>\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 <strong id=\"homeRegYear\">\u2014<\/strong><\/span><span class=\"home-card-go\">\u0e40\u0e1b\u0e34\u0e14\u0e14\u0e39 \u2192<\/span><\/span>\n            <\/button>\n          <\/div>\n        <\/section>\n\n        <section id=\"applicantsModule\" class=\"module-view hidden\">\n    <div class=\"app-content\">\n      <section class=\"page-heading\">\n        <div>\n          <p class=\"eyebrow\">\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/p>\n          <h1>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h1>\n          <p id=\"schoolDescription\" class=\"muted\"><\/p>\n        <\/div>\n        <div class=\"heading-actions\">\n          <label id=\"scopeSchoolField\" class=\"compact-field hidden\">\n            <span>\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/span>\n            <select id=\"scopeSchoolSelect\"><\/select>\n          <\/label>\n          <label id=\"scopeYearField\" class=\"compact-field hidden\">\n            <span>\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/span>\n            <select id=\"scopeYearSelect\"><\/select>\n          <\/label>\n        <\/div>\n      <\/section>\n\n      <section class=\"download-panel\" aria-labelledby=\"downloadTitle\">\n        <div class=\"download-copy\">\n          <h2 id=\"downloadTitle\">\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<\/h2>\n          <p id=\"downloadHelp\">\u0e17\u0e38\u0e01\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e25\u0e30\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 \u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27\u0e41\u0e25\u0e30\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/p>\n        <\/div>\n        <div class=\"download-group\" role=\"group\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\" aria-describedby=\"downloadHelp\">\n          <button id=\"downloadXlsx\" class=\"btn btn-excel download-button\" type=\"button\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3v12m-4-4 4 4 4-4M4 16v5h16v-5\"\/><\/svg><span>\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 Excel<\/span><\/button>\n          <button id=\"downloadCsv\" class=\"btn btn-outline download-button download-csv\" type=\"button\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3v12m-4-4 4 4 4-4M4 16v5h16v-5\"\/><\/svg><span>\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 CSV<\/span><\/button>\n        <\/div>\n      <\/section>\n\n      <section class=\"stats-grid\" aria-label=\"\u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\">\n        <article class=\"stat-card\">\n          <span class=\"stat-icon teal\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span>\n          <div><small>\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/small><strong id=\"totalCount\">0<\/strong><\/div>\n        <\/article>\n        <article class=\"stat-card\">\n          <span class=\"stat-icon green\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12.5 4.5 4.5L19 7\"\/><\/svg><\/span>\n          <div><small>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27<\/small><strong id=\"confirmedCount\">0<\/strong><\/div>\n        <\/article>\n        <article class=\"stat-card\">\n          <span class=\"stat-icon amber\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/span>\n          <div><small>\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/small><strong id=\"pendingCount\">0<\/strong><\/div>\n        <\/article>\n      <\/section>\n\n      <section class=\"records-panel mail-list\">\n        <div class=\"records-toolbar\">\n          <div class=\"mail-heading\">\n            <h2 id=\"recordsTitle\">\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h2>\n            <p id=\"resultSummary\" class=\"muted\" role=\"status\" aria-live=\"polite\"><\/p>\n            <p id=\"liveStatus\" class=\"live-status hidden\" role=\"status\"><span class=\"live-dot\" aria-hidden=\"true\"><\/span><span id=\"liveStatusText\"><\/span><\/p>\n          <\/div>\n          <div class=\"records-tools\">\n            <form id=\"searchForm\" class=\"search-box\">\n              <button class=\"mail-search-submit\" type=\"submit\" title=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\" aria-label=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\">\n                <svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6\"\/><path d=\"m15 15 4.5 4.5\"\/><\/svg>\n              <\/button>\n              <input id=\"searchInput\" type=\"search\" placeholder=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e0a\u0e37\u0e48\u0e2d \u0e23\u0e2b\u0e31\u0e2a \u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\" aria-label=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\">\n              <button id=\"clearFiltersButton\" class=\"mail-search-clear\" type=\"button\" disabled>\u0e25\u0e49\u0e32\u0e07\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07<\/button>\n            <\/form>\n            <label class=\"sort-box\">\n              <span>\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a<\/span>\n              <select id=\"sortSelect\" aria-label=\"\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\">\n                <option value=\"latest\">\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19<\/option>\n                <option value=\"sheet\">\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e19\u0e0a\u0e35\u0e15<\/option>\n              <\/select>\n            <\/label>\n          <\/div>\n        <\/div>\n        <!-- \u0e01\u0e31\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e49\u0e07\u0e15\u0e2d\u0e19\u0e41\u0e16\u0e1a\u0e16\u0e39\u0e01\u0e1b\u0e31\u0e01\u0e44\u0e27\u0e49\u0e1a\u0e19\u0e08\u0e2d: \u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e2a\u0e39\u0e07\u0e40\u0e17\u0e48\u0e32\u0e41\u0e16\u0e1a\u0e1e\u0e2d\u0e14\u0e35\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e1b\u0e31\u0e01\n             \u0e41\u0e25\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e48\u0e2d\u0e19\u0e41\u0e16\u0e1a\u0e40\u0e2a\u0e21\u0e2d syncRecordsPin() \u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e02\u0e2d\u0e1a\u0e1a\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e41\u0e17\u0e19\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e1a\u0e44\u0e14\u0e49 -->\n        <div id=\"recordsStickySpacer\" aria-hidden=\"true\"><\/div>\n        <div class=\"records-sticky\">\n        <!-- \u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e1a\u0e1a Gmail: \u0e40\u0e25\u0e37\u0e2d\u0e01 \u00b7 \u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a \u00b7 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 \u0e17\u0e32\u0e07\u0e0b\u0e49\u0e32\u0e22 \u0e41\u0e25\u0e30\u0e0a\u0e48\u0e27\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e32\u0e07\u0e02\u0e27\u0e32 -->\n        <div id=\"bulkBar\" class=\"bulk-bar mail-toolbar hidden\">\n          <div id=\"bulkSelect\" class=\"bulk-select\">\n            <input id=\"bulkSelectAll\" class=\"bulk-select-box\" type=\"checkbox\"\n                   title=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32\">\n            <button id=\"bulkSelectMenuButton\" class=\"bulk-select-caret\" type=\"button\"\n                    title=\"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\"\n                    aria-haspopup=\"true\" aria-expanded=\"false\" aria-controls=\"bulkSelectMenu\" aria-label=\"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\">\n              <svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m7 10 5 5 5-5\"\/><\/svg>\n            <\/button>\n            <div id=\"bulkSelectMenu\" class=\"bulk-select-menu hidden\" role=\"menu\" aria-label=\"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\">\n              <button id=\"bulkSelectAllItem\" class=\"bulk-select-item\" type=\"button\" role=\"menuitem\" data-select=\"all\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/button>\n              <button id=\"bulkSelectNoneItem\" class=\"bulk-select-item\" type=\"button\" role=\"menuitem\" data-select=\"none\">\u0e44\u0e21\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e25\u0e22<\/button>\n            <\/div>\n          <\/div>\n          <button id=\"refreshListButton\" class=\"mail-tool\" type=\"button\" title=\"\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\" aria-label=\"\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\">\n            <svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M19.5 12a7.5 7.5 0 1 1-2.2-5.3\"\/><path d=\"M19.5 4.5v4h-4\"\/><\/svg>\n          <\/button>\n          <span id=\"bulkSelectedInfo\" class=\"bulk-count\" role=\"status\" aria-live=\"polite\"><\/span>\n          <div class=\"bulk-actions\">\n            <button id=\"bulkConfirmButton\" class=\"btn btn-primary btn-small hidden\" type=\"button\" disabled>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01<\/button>\n          <\/div>\n          <nav class=\"pagination mail-pager\" aria-label=\"\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32\">\n            <span id=\"pageInfo\">0 \u0e08\u0e32\u0e01 0<\/span>\n            <button id=\"prevPage\" class=\"mail-tool\" type=\"button\" title=\"\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\" aria-label=\"\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\">\n              <svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m14.5 6-6 6 6 6\"\/><\/svg>\n            <\/button>\n            <button id=\"nextPage\" class=\"mail-tool\" type=\"button\" title=\"\u0e2b\u0e19\u0e49\u0e32\u0e16\u0e31\u0e14\u0e44\u0e1b\" aria-label=\"\u0e2b\u0e19\u0e49\u0e32\u0e16\u0e31\u0e14\u0e44\u0e1b\">\n              <svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m9.5 6 6 6-6 6\"\/><\/svg>\n            <\/button>\n          <\/nav>\n        <\/div>\n        <div id=\"recordsHead\" class=\"records-head\" aria-hidden=\"true\"><\/div>\n        <\/div>\n        <div class=\"status-filters mail-tabs\" role=\"group\" aria-label=\"\u0e01\u0e23\u0e2d\u0e07\u0e15\u0e32\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\">\n          <button class=\"status-filter active\" type=\"button\" data-status=\"all\" aria-pressed=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3.5 13.5 6 5.5h12l2.5 8v5h-17z\"\/><path d=\"M3.5 13.5h5l1 2h5l1-2h5\"\/><\/svg><span>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/span><\/button>\n          <button class=\"status-filter\" type=\"button\" data-status=\"pending\" aria-pressed=\"false\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><span>\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/span><span id=\"tabPendingCount\" class=\"mail-tab-count hidden\">0<\/span><\/button>\n          <button class=\"status-filter\" type=\"button\" data-status=\"confirmed\" aria-pressed=\"false\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12.5 4.5 4.5L19 7\"\/><\/svg><span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27<\/span><\/button>\n        <\/div>\n        <div id=\"recordsList\" class=\"records-list\"><\/div>\n        <div id=\"emptyState\" class=\"empty-state hidden\" role=\"status\" aria-live=\"polite\">\n          <div class=\"empty-icon\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6\"\/><path d=\"m15 15 4.5 4.5\"\/><\/svg><\/div>\n          <h3 id=\"emptyStateTitle\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h3>\n          <p id=\"emptyStateMessage\">\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49<\/p>\n          <button id=\"emptyStateAction\" class=\"btn btn-outline hidden\" type=\"button\">\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48<\/button>\n        <\/div>\n      <\/section>\n    <\/div>\n        <\/section>\n\n        <section id=\"statsModule\" class=\"module-view module-content hidden\">\n          <section class=\"page-heading\">\n            <div>\n              <p class=\"eyebrow\">\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/p>\n              <h1>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e41\u0e25\u0e30\u0e1c\u0e25\u0e2a\u0e2d\u0e1a<\/h1>\n              <p id=\"statsSubtitle\" class=\"muted\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e2a\u0e16\u0e34\u0e15\u0e34<\/p>\n            <\/div>\n            <div class=\"heading-actions\">\n              <label class=\"compact-field\">\n                <span>\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/span>\n                <select id=\"statsYearSelect\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\"><\/select>\n              <\/label>\n              <label class=\"compact-field\">\n                <span>\u0e40\u0e17\u0e2d\u0e21<\/span>\n                <select id=\"statsTermSelect\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e17\u0e2d\u0e21\"><\/select>\n              <\/label>\n              <button id=\"statsRefreshButton\" class=\"btn btn-outline\" type=\"button\">\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48<\/button>\n              <button id=\"statsClearCacheButton\" class=\"btn btn-ghost btn-small\" type=\"button\">\u0e25\u0e49\u0e32\u0e07\u0e41\u0e04\u0e0a\u0e17\u0e38\u0e01\u0e1b\u0e35<\/button>\n            <\/div>\n          <\/section>\n\n          <section id=\"statsWarnings\" class=\"stats-warnings hidden\" role=\"status\">\n            <h2 class=\"stats-warnings-title\">\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e23\u0e23\u0e30\u0e27\u0e31\u0e07\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/h2>\n            <ul id=\"statsWarningsList\"><\/ul>\n          <\/section>\n\n          <section class=\"stats-grid\" aria-label=\"\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\">\n            <article class=\"stat-card\">\n              <span class=\"stat-icon teal\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span>\n              <div><small>\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/small><strong id=\"statsTotal\">0<\/strong><\/div>\n            <\/article>\n            <article class=\"stat-card\">\n              <span class=\"stat-icon green\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12.5 4.5 4.5L19 7\"\/><\/svg><\/span>\n              <div><small>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e27\u0e21<\/small><strong id=\"statsPassed\">0<\/strong><span id=\"statsPassedRate\" class=\"stat-note\"><\/span><\/div>\n            <\/article>\n            <article class=\"stat-card\">\n              <span class=\"stat-icon amber\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/span>\n              <div><small>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/small><strong id=\"statsAbsent\">0<\/strong><span id=\"statsAbsentRate\" class=\"stat-note\"><\/span><\/div>\n            <\/article>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n              <p class=\"muted\">\u0e41\u0e16\u0e1a\u0e40\u0e15\u0e47\u0e21\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27 = \u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e19\u0e31\u0e49\u0e19 \u00b7 \u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e32\u0e22\u0e2a\u0e35 = \u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/p>\n            <\/div>\n            <div id=\"statsGroupChart\" class=\"viz-meters\"><\/div>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e1b\u0e35<\/h2>\n              <p id=\"statsTrendScope\" class=\"muted\">\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35 \u2014 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e1b\u0e35\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/p>\n            <\/div>\n            <div id=\"statsTrendChart\" class=\"viz-plot\"><p class=\"viz-placeholder muted\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07...<\/p><\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n              <p class=\"muted\">\u0e08\u0e33\u0e41\u0e19\u0e01\u0e08\u0e32\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e25\u0e2a\u0e2d\u0e1a \u2014 \u0e41\u0e16\u0e27 \u201c\u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u201d \u0e04\u0e37\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e1a\u0e2d\u0e01\u0e40\u0e1e\u0e28 \u0e40\u0e0a\u0e48\u0e19 \u201c\u0e04\u0e38\u0e13\u201d \u0e22\u0e28\u0e17\u0e2b\u0e32\u0e23\/\u0e15\u0e33\u0e23\u0e27\u0e08 \u0e41\u0e25\u0e30\u0e0a\u0e37\u0e48\u0e2d\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29<\/p>\n            <\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\">\n                <thead><tr><th>\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17<\/th><th>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/th><th>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e2a\u0e2d\u0e1a\u0e15\u0e01<\/th><th>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/th><th>% \u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/th><\/tr><\/thead>\n                <tbody id=\"statsGroupBody\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\"><h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e0a\u0e31\u0e49\u0e19<\/h2><\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\">\n                <thead><tr><th>\u0e0a\u0e31\u0e49\u0e19<\/th><th>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/th><th>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e2a\u0e2d\u0e1a\u0e15\u0e01<\/th><th>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/th><th>% \u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/th><\/tr><\/thead>\n                <tbody id=\"statsClassBody\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\"><h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e40\u0e17\u0e2d\u0e21<\/h2><\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\">\n                <thead><tr><th>\u0e40\u0e17\u0e2d\u0e21<\/th><th>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/th><th>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e2a\u0e2d\u0e1a\u0e15\u0e01<\/th><th>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/th><th>% \u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/th><\/tr><\/thead>\n                <tbody id=\"statsTermBody\"><\/tbody>\n              <\/table>\n            <\/div>\n            <p id=\"statsFootnote\" class=\"stats-footnote muted\"><\/p>\n          <\/section>\n\n\n        <\/section>\n\n        <section id=\"regstatsModule\" class=\"module-view module-content hidden\">\n          <section class=\"page-heading\">\n            <div>\n              <p class=\"eyebrow\">\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/p>\n              <h1>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c<\/h1>\n              <p id=\"regStatsSubtitle\" class=\"muted\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e2a\u0e16\u0e34\u0e15\u0e34<\/p>\n            <\/div>\n            <div class=\"heading-actions\">\n              <label class=\"compact-field\">\n                <span>\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/span>\n                <select id=\"regStatsYearSelect\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e02\u0e2d\u0e07\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\"><\/select>\n              <\/label>\n              <button id=\"regStatsRefreshButton\" class=\"btn btn-outline\" type=\"button\">\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48<\/button>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-grid\" aria-label=\"\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\">\n            <article class=\"stat-card\">\n              <span class=\"stat-icon teal\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8.5 4h7v3h-7z\"\/><path d=\"M8.5 5.5H5.5V20h13V5.5h-3\"\/><path d=\"M8.5 11.5h7M8.5 15h4.5\"\/><\/svg><\/span>\n              <div><small>\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/small><strong id=\"regStatsTotal\">0<\/strong><\/div>\n            <\/article>\n            <article class=\"stat-card\">\n              <span class=\"stat-icon green\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 16.5 9.5 11l3.5 3.5L20 7.5\"\/><path d=\"M15 7.5h5v5\"\/><\/svg><\/span>\n              <div><small>\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e1b\u0e35\u0e01\u0e48\u0e2d\u0e19<\/small><strong id=\"regStatsChange\">\u2014<\/strong><span id=\"regStatsChangeNote\" class=\"stat-note\"><\/span><\/div>\n            <\/article>\n            <article class=\"stat-card\">\n              <span class=\"stat-icon amber\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 10.5 12 3l9 7.5\"\/><path d=\"M5.5 9.5V20h13V9.5\"\/><path d=\"M10 20v-6h4v6\"\/><\/svg><\/span>\n              <div><small>\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/small><strong id=\"regStatsSchools\">0<\/strong><\/div>\n            <\/article>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e23\u0e32\u0e22\u0e40\u0e14\u0e37\u0e2d\u0e19<\/h2>\n              <p class=\"muted\">\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e41\u0e16\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e21\u0e32\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e35\u0e49<\/p>\n            <\/div>\n            <div id=\"regStatsMonthChart\" class=\"viz-meters\"><\/div>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e0a\u0e48\u0e27\u0e07\u0e2d\u0e32\u0e22\u0e38\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h2>\n              <p id=\"regStatsAgeSummary\" class=\"muted\">\u0e2d\u0e32\u0e22\u0e38 \u0e13 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23<\/p>\n            <\/div>\n            <div id=\"regStatsAgeFacts\" class=\"age-facts\"><\/div>\n            <div id=\"regStatsAgeChart\" class=\"viz-meters\"><\/div>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e23\u0e32\u0e22\u0e1b\u0e35<\/h2>\n              <p class=\"muted\">\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e41\u0e22\u0e01\u0e1b\u0e35\u0e15\u0e32\u0e21\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23<\/p>\n            <\/div>\n            <div id=\"regStatsTrendChart\" class=\"viz-plot\"><\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n              <p class=\"muted\">\u0e08\u0e33\u0e41\u0e19\u0e01\u0e08\u0e32\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19\u0e43\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23<\/p>\n            <\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\" style=\"min-width:0\">\n                <thead><tr><th>\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17<\/th><th>\u0e08\u0e33\u0e19\u0e27\u0e19<\/th><th>\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30<\/th><\/tr><\/thead>\n                <tbody id=\"regStatsGroupBody\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\"><h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23<\/h2><\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\" style=\"min-width:0\">\n                <thead><tr><th>\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23<\/th><th>\u0e08\u0e33\u0e19\u0e27\u0e19<\/th><th>\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30<\/th><\/tr><\/thead>\n                <tbody id=\"regStatsSchoolBody\"><\/tbody>\n              <\/table>\n            <\/div>\n            <p id=\"regStatsFootnote\" class=\"stats-footnote muted\"><\/p>\n          <\/section>\n        <\/section>\n\n      <\/div>\n    <\/div>\n  <\/main>\n\n  <dialog id=\"detailDialog\" class=\"modal\">\n    <div class=\"modal-header\">\n      <div>\n        <p class=\"eyebrow\">\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/p>\n        <div class=\"modal-title-row\">\n          <h2 id=\"detailTitle\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/h2>\n          <span id=\"detailStatus\" class=\"status-badge pending\">\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/span>\n        <\/div>\n      <\/div>\n      <button class=\"icon-button\" type=\"button\" data-close-dialog=\"detailDialog\" aria-label=\"\u0e1b\u0e34\u0e14\">\u00d7<\/button>\n    <\/div>\n    <div class=\"modal-body\">\n      <div id=\"detailGrid\" class=\"detail-grid\"><\/div>\n    <\/div>\n    <div class=\"modal-actions\">\n      <button class=\"btn btn-outline\" type=\"button\" data-close-dialog=\"detailDialog\">\u0e1b\u0e34\u0e14<\/button>\n      <button id=\"detailConfirmButton\" class=\"btn btn-primary\" type=\"button\">\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/button>\n    <\/div>\n  <\/dialog>\n  <dialog id=\"passwordDialog\" class=\"modal modal-small\">\n    <div class=\"modal-header\">\n      <h2>\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/h2>\n      <button class=\"icon-button\" type=\"button\" data-close-dialog=\"passwordDialog\" aria-label=\"\u0e1b\u0e34\u0e14\">\u00d7<\/button>\n    <\/div>\n    <form id=\"changePasswordForm\">\n      <label class=\"field\"><span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19<\/span><input name=\"currentPassword\" type=\"password\" required><\/label>\n      <label class=\"field\"><span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span><input name=\"newPassword\" type=\"password\" minlength=\"8\" required><\/label>\n      <label class=\"field\"><span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span><input name=\"confirmPassword\" type=\"password\" minlength=\"8\" required><\/label>\n      <div class=\"modal-actions\">\n        <button class=\"btn btn-outline\" type=\"button\" data-close-dialog=\"passwordDialog\">\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01<\/button>\n        <button class=\"btn btn-primary\" type=\"submit\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/button>\n      <\/div>\n    <\/form>\n  <\/dialog>\n\n  <script>\n  (() => {\n    'use strict';\n\n    \/\/ ============================================================\n    \/\/ \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e15\u0e23\u0e07\u0e19\u0e35\u0e49: \u0e27\u0e32\u0e07 URL \u0e02\u0e2d\u0e07 Web App \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23 Deploy Apps Script\n    \/\/ (\u0e25\u0e07\u0e17\u0e49\u0e32\u0e22\u0e14\u0e49\u0e27\u0e22 \/exec) \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e33\u0e1e\u0e39\u0e14\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\n    const API_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbwRT8ri5Okru3PsZVvN4eVmHr61VY7l7jK0Wo7dNNA7hfUfbXY7rnxDCFX-CE33Lpeh\/exec';\n    const REQUIRED_BACKEND_VERSION = 'live-updates-v6';\n    \/\/ (\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a) \u0e27\u0e32\u0e07 URL \u0e23\u0e39\u0e1b\u0e42\u0e25\u0e42\u0e01\u0e49 \u0e21\u0e08\u0e23 \u0e16\u0e49\u0e32\u0e21\u0e35 \u2014 \u0e16\u0e49\u0e32\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \"\u0e2d\"\n    const LOGO_URL = 'data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAFDCAYAAAAEfIP9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7J0HmB1XefdN6pdAGoTQjHbPOVeycRKSUAKBUAIhhFQgOCGhJ6EFCL0XQ+gdY1vW3jszd+burmTJ3RgXbCNb0t5etqjZlrvl3uRuydZ+z+8959w9O7orycbGhX2fZx5p752ZO+Wc87b\/+38POGBRHtNy7hFDf5H\/bFEWZVEeBVIvqjecv2bp3RNR4c\/y3y3KoizKwyRnjejfyX+Wl2rpwCd2yvqqS09YNtuIdXfNmgN+Ob9PXjauOeQJ+c8WZVEW5UEUJmIj0lNTY+aEdnno4Pz3XmoltfLCY5fO1iM9u+24pbO1ovpSfh8v7XLhhTPjZl21pE7Lf7coi7IoD6I0IvUmJuYFa5bOdjNzV6+iv1MrqaeE+9Qi\/cYtxxRmm4lG+852UjPbq5j7mol5UbhftWQK3cyUexUze\/6apbMz44XZernwwnCfRVmURXmQZO1hL\/uVeqTPl4kW2YnJZO5VzDWNSH1k7doDfoX96rHubl5VkMnLxr7s14j0sXy\/ITrot1qx\/lo307ezELTKdp+tq5fOVov6J\/nfXZRFWZS9yOzsAY+rR8NfmVlZ+MR0pp93wWmFX8\/vgzQi\/XYmnJ+YMjljPTs9ZmTydVL1bParR+q0cAKzoWEbsT5Cvi+b115x8jI0uBzv90Fjy+JQVC\/J\/zayJTrot3pj+sVbjln6pXqsP5T\/flEW5RdWGpHatP1HB832MjPbSvQl7VQf08n0eyYrT3k836898pAn1GN12fTY\/InpNzdhX8e+9UgtdxN23gSul9SH7ff64\/mFwG+Y3o1IrZ897IBfYt\/Jiv6DjWOFD7fK+pRmoq+aGjWz1512EBP\/5NwtLMqi\/OJKI1ZttF8r0bOTo2Z26zGF2atOPWi2WlSH8z0TuBGri9knP+n8BG1G+uPsW4v0J\/MTmAleK+nX83091qXzV+9lAsd6rZ\/A9ZI6jYWFz\/GV0dJ2kltzfFEWZVFkAuupvHbFx+1meifBJvZpRvqN+YnpN0zoRqQj2S8x\/+YmomwsCjL5RtTz7W+pn25auedCwH5To4XZVkn9OfvVE\/0K9uPzcD8Wg3qkT8ndwqIsyi+uNGK9GV82nCj4p0zYWqTWsM\/sAfjKujdo8rnP1rLfxIh5EVo8jELXI3XPhuiZT+f7eqQvwhTOnwOtXCupE\/w11SPVzvvSwQQ+I7j8RVmUx67Ui0tUp6y\/3UzUf3Yr5kW9dOkzwu8ltxvra\/ITmI0I8dSY6WvFRqz+QVJEuf3chLyYfdqZXtKI1a52as83WZF\/t8\/OHvBL6+LCk+uRvotJHR7fLouWvm8i0n8k1xzrf19Y28ukboT3MPKuA361Vx4a7pXNy7upem89Vt9YP77k98J9FmVRHpVSXWGes43c7bFLxb9tlfUdU6N64\/qSepXfpxGrb5HqYcLmJwwTtlZS5\/p9ayVVzWtGq2X1XUzQ9shzf7URqWsxm\/nO+c1duZaS+nMmtNfObGh6glrVSI+yz2mHF369keiL8v42+xG5tjlm9T\/+euqxeev0mNnWTNTdLEIXH79M7qMbF57s91mURXnUSq009CwmAFqOicNkYwJOjZpd1Ui9ye\/XiPVXmUjsF04cHziaKKp\/YL96ZP4KkzmchPyfidn3X2M1433qzdYfFp+1UVL\/EfrHfvJ3Ur2zlRYM+1RL6sOSN85NXhYEfrda0u\/uX3OiP8m9bBwvzKLxuQ72q0fquvaafUM+F2VRHvFCEKoe6Xvb5TmzFeCEnxCtRH3E79uI9OfwRfMm7saVhVkmpY8O14rq7PxElL8T9R98j4\/qtbSYwpE+Uo6L1JfCFBITk8laK6mj+R6zt5XoG5zZ3b9W\/mZBQNv6a20l6vuy4KD9g+tg33qkr5qsPFtSYIuyKI9qmYiGh+qx2ul90nDyMFGdr\/ltv38jVh9lMuaBFpjg9Vj9F\/vU4uEXiG8caGF7HvVFvq\/HuuhTRZIDdimmRqRWkqLyx\/AbnbK+o+r88lrJmvJMWj958a8nR8191eLwv7IPiLBO2awEY52PUMsEFn9cXYEp3n8Ii7Ioj1bZEB30dCZv3m\/1G\/7ihcehyXTlMJ9\/Lar3bVo1fxJPjRG8Ulee6cAd1ZI6OcznElyqx2qc75qR+ozXtKKZy+pQOW+k65i7MjnntK8sHiw0ndTc1cnsQsPkRetOjpp7NowM\/xP7nPr1Jb\/XSc05XG\/+PvzGxCYoN7vm0H1WQC3KojzipD2+7PdnRs3LW\/HSF\/jPMD17mb7QYZfnaVY2osoM\/E5Zn3na4YXflmMi9Z8EkqxPafeTCVcc\/hzftxL1x93M7PY+MxOz7qLDFD1sPcZqSBu0sjngeqy2e\/NYcsNlfQvXy3e1kqow6bk2fo\/fnho1d2xYMfw3fL\/26KHhXmamFkJxYRGg7XsV067F+jX+3nuj5uVE3y9a9IkX5ZEqtUj9y9SoHmmWdb2Z6JsY\/JiSvYo+ph4P\/4nb7XGTmf5UN9M3Yg7nfUc\/Qbup7p5xlHkmB5DOmRo1uzmX+M2ZIci1A4ij\/G5RjftJ5yb6VXxO5RERYfGlI7VroqL\/gKqlRqx34Yt77Vsv6S+wf6M49Ke9il0M+B187smK3jGxYvilfH\/eCvOcXqavEC3vFhM2H5mW666YS3pl807\/TFqklCrmTPx8zPBWoq5tJfq8TeOFHxKI8\/styqI87FKP1Q+vP\/1g0VoMaKKxmMaYuN3U3NtNdUw+mH3POuLpT+pm+ohexezk+9CP9FVBvcxcuu4oW5xQLerXTY6aXUwCX1lULemj+K4jJYFa\/GsXJNvFRO1EBz29Eev7mMT1SF0LCKQW67\/EJJaItQA91HX1UavtayV9Jr\/L+Zlwk6PmhurRLqIdDf\/NZMXs4PO+b+yi6lLWmOod3bRw2GGH2WqoVmKe083MCfy2L2uU6HRmg3bXCpZavW\/eA1yURXk4pRsXDmmnZnc+jztvoGfmzk5mDp9YbrVnMxo+qJeZ45j0+fI\/\/N\/JirmpXtSvYN\/1I0OvmRw1dzEBOV8307saRbWM72qRGkGjc+z0eGGWiUq0uh7pGx3oYsr+nvpPgVw67UsJohxfUq\/yv8+\/vYq5el3JVzYNv2WqYu6VCLSbvExGztPNzH3dTI\/4++F6upkeZQHj+0EBLiZxPda39MpDvxs+v0VZlIddapHuXX7ysj1SQH4i8zkTrZuZW7qp\/sqZ37bBqE669KXdzGxg0M+43K34oGNieu6cKOp\/Z78NK4b+arKib2PCi7Ys6eP4vF4sHNgpmzv9xPGRauCZl5ywjL9Pt3+rb+GjWsSXuuKS8tD\/k+suqS4ms41868vPWT58kJw3Gv44C0nog6NB2XqZPqXpUFut0SVP61bM0VgCnD+fx\/Yb10eBRiPSAg1dlEV5REmtZF6+cdycio+K5vOpoPxE9j5jJzXX9lL9SX98p6Lf2MvM1n6gy+VfxXR19be1FcMvQDM7IMjshsiyTtZL+rsct+24ZbO1yNb9NiJdv3vdIeSGM\/k71meev6Yg1kA9Hn6XvWb1Zia9Ndv1hetH9BI+b6X6O+znEF4SjWZydjLT7JT1K+U3Dy\/8di\/T3+5m+rZB+WACc1w\/5+Z622V93fSYOdZP\/EVZlIdVVn\/3wN\/YuLLwhpls6bPCzwkwdTLzlnaqj2sn+gaQUDJBiPoGE5nBLRq5Yi5rl03fJ5zMzEe6mb6eCYlf63PFzbL6Bt+vP3r4T3qZufaKUw7CF17HZ0AoW4m5SyLEDrRB4f5lJy\/7MguL\/B3pH6GRG5G+ZO1hB\/yKQCYjfQlWQy\/Tm7wp3En1GBFxTOV+gCozF3dTC+IAu93N9Be6mbnRfdefuBzDwsL1otXbZX1lJzVpL9WvgwnE36P8Tqafx+fhZ4uyKD8X6ZT1G7uZ3sIAbiX6vnZZNzqZ+mKrMtxPHSGwWHQy\/fpOprN2WW9HmzK4GeQMdgY+\/3c+8lYmPsetLQ\/9v16qv9vN9D0emeUmdMr3645QyyZH9ZU2IDQsEwsmjW5l+E9mF2CgBCO9ebTwwqajmW3G5ss3\/eRgiXqjTZnQnVSf5awDf003d7PCp\/w5epn+UC\/T28VKYOJGdtKiodmffztlva1TVssnM\/NqftMfy3X1UvNXaPdWWU0z8e1v6FortamqRVmUh1QakX7e9Kg5D\/PYg\/3x+cjBMhjRqp1Ub+1m+sjJivlbJqI\/lsHMZ93UHN1J9UVzg95OZjFTVxdmuxXdbWXmnzmmmZhn9jKziu\/4TTRjO9WnH3roAb98zpHDQxesKTTJ+c67yP2URqw+Oz1m1mNJoH27melxfhug0vdOZvqIDd98kmjNyUz9ZzfTFzFxBXPt6He4fiyLdllv6qT6O1Oj8+l4Ljlx6He7qXpDp2zSVlld5o\/hfnyQCz97ZtywkJziI\/WLsigPidTLQy+0QZw9c7h5E5L92qm+ulPWq1upeev0yvnskRK8SvV322W9WcxpxwyJv+j85w2U58m+mX5eN9Nr8a2vPAU+K73Rwx9\/ViHtAzEe53XAkeOb8VLNd9208IZuZma4Nu4Hs1j83bIE5dqdivnS1Kh5Tni+TWPDQ52yfk871ae0y\/om7oVFIV8F1Y8LkHemGKKs76yVh4bDcy3KojzoUisN\/y+aaNBgnDeZHbgC7LFLq9zeTs3ZvYr68NSojfR66aTmud3MfLmT6k47tWmny05c5rXhmUwy2a9S+MdeRV\/UTfVVpKHCczxQaUTDL50aNbd3M9PuZEaCYt1K4VXdzDTQyJeeuEwWpFaid3VSs75d1p\/qZEPz\/P7WqHlOt6w\/3071RKtso9GDgniDNhYDSxKg\/j4856IsykMmpGaoe8U\/ZbASqMIsZMCSC84X3LPhV2IuMjlbZb2bydrL9Ff9pPEyPT50cDs1n26XZTLcd\/WPD5ol+NTN9MlM2jO+e+ATAYOEx+SlMzY81M3MP\/cq5l1o\/+6oer7HWQ+SnxzxzKevPfLJT4DkHc2PNr7ylINYpO5ql\/VZncx8YGaVRYchMGl2M\/XXndQcjgXBQsV92cDVnpOWxc6RBoiWZ3Lz3FigeI7VSC2ff0WLsigPoVBQML2y8KpWWb+nkejvUW\/biNV0I9Y34tv5YBUTXFI+Y\/BbzVUPMcnn\/EGDqX1Rp6xLnUT9Y0gry6Rh8rRTvZZBz1ZL9NL5VzMn64vmDydHC2u6qblTJolLEUlFUcVMd1L9jvwxXkBcMWnBV7fK+kfs63HSCFjmycz8Wyc14wTkmKw+rxzeF\/fJYsZ9+2fgCih2N2J1bSNWnVaij2vG6huwlExnhZftT+uXRVmUh1zoSUSes5mof2zF6sP1RC1vJvrMRqy3NmJ1K4PbD2wmFhOdCeB9S8mXJvqGVqpP7GTqP0O\/mf9XY\/26hQb7RFG9YXrM3E5qKg8mQQMyiSQ9VFbjgyqFSPO0U\/26sI53srJMtcr6fymyaJf1rfjgomnH7XVjUXgrRHx+q31vaiRqphmrUxux+kGzbN7XTsyrcRs8dHNRFuXnJq2y\/urMeKHTLOuTGon6fqM8\/AEmaDce\/hNwxwulbULB5JwGo5ya57Zi9YZmoj7dSlTSSPS5zURf3Iz1nRb0UBBz+aofHTR7xSkW1YVf2Un1J2H2yJ\/Xy4T1Y6XkMCw2yG9MZM5fLaly\/hxeoN3BH2+nuocmhVaW7eLj5\/m1tzVidWE9Vmc3Ej3STMzHWon5Zwo3GtnBezXvvcy2n\/urgtmO9POaiX49xAatRB\/ZStRpM2Om2yibD+SPWZRF2W+hfK5L7euxVuN4v22+tlG3MpCbifopE7KV6s+1EvUfrbJ+MSRvl68+8Dfy583L7NqX\/crUaOFAKoiasXpzq6y+2Cqr8UYilU3XMInI1zYiPclCkD+e\/G09UhfYQNCekza\/Ye5yD4OCRu2Rp\/1mPVa3Xnu6mNLc35XNRK1vJDprxeazUNZC23PeiiVP25tP7YWOh1D1dNLhlwIEaaXqS61EjzZjva4Z64vrsb4jtEq8y+HN805mVlKDnD\/voizKXgVqmsmKvm4hAnSCVN7fQ\/MxoTGJffTVskSqeyjAb8S62Uz0sa1EfasVq\/c2Y\/0azOz90VTglTFjzz9m6V8v1Oe3EQ\/\/K7+bv8a9bVLkH+k+UV4o7Vj\/5ebxwstgtwyBGIOEBQXkGQCSZjT8T81IfxCzuRHrk5ux7jVjfXUz1rts+5c514EJyjPCwhhU9CDPOLEsJJMVcwEFF\/nfXpRFWVAakUroH7Q\/Gm3QJlHXVAJH86KuPqDjUlA3NRO9uRHrn7QSPdJK9Cfb5cKhrXj4BVDP7mvyeGnEunJ\/J7CtE9Z3tVYseVr+fHlhESGqjVXRSvW\/t8rms1gbzUT\/tBmrC5qx2kGEuR+4c4uYJyPAUtlXym1vG4G1Rqz7aLBFWZR9CmZpM1FtBuIDmcRoaAZtuKFp0NpMbNHcY9Z0JCiEf4lvetFx1oS0x6jrmrGeIiLcjPURjfLQU\/PXidQjNYFGy1\/D3jbOLyQBA9qJ4msLOUGszqCiiYWGCcqzuMhf5\/FzrgSalPthonJ\/3Gf+3gel1fa1+drneqSOz1\/joizKPsX2z9W3MWB9pJXJxuY1jXzuNkxDBjkTUFBL4wVfEiiaSMxFV2pXj\/V9EN01Yn1nPVa31SN9cz1W18MlBe1NPVKX12N9aSPSF7fK+Nh6s6d9zQtVRw9kAgtLRkm\/OH8+MNUzY2ZLI1bbIIvnOtz1bJfri9QN1PQ2YnUbWpz74H44L\/fHfXK\/LFBoYZ4Dz8MjzMTVCDf3LOc929VLZy87aRm544vPGlmk4lmUBygbSvrvNh9jIip8GpH+Hh0H6iX15VqsP9+I9CfrpIpi9b5GNPzORqLfBgVOs6RfT4CoUdavpLh+YkQ9H\/4qCt4hjmscOfTU6fElv0e6Bqz02rUv+xUK8AkK4VNSKXTB4YVfJ61DlRHwQqK7Ia46lEasj2NS5Cfp3jaX7rl3EPaYVA+tSiktbI8s+30aq2GRkHri+uQ6DzvglzDx5fqPPOQJpM8IbHGtgE06JfVsotn1RL0E\/5WOEtAOwUtNm9R6bN5VL6n3QypQi\/WnGrH+fD3SX2lE6puNSH2\/EeujNq0slKrJknkwzUVZlJ+rkGK6YLTw2xTdt8tDB4OlbiTm1URz6yX9bhYBGbSJHqlH6oRapNfRarQe6asbsb65megbW2V9UausmwsBOFqRfo8wbAyYqAttlmdaTw2KajPpZlYW2s1ELICbuQ6rfdV0PVJra5E+th6ro+uR+jrpo1o0\/E5SY0xUItSNTC2jDxMRaM9jvSiL8nMVBjYpFQFmJOaZ+IUwOzZj9df04YUxEu3bSNSXmok6vBmrtBGpkxqxOqcRqbYANyJ1JaYxZiaTBj8RkxLzELOc3CrlgGyXn7TM9zC6EuAHpOnwQwOimKzor2xaWch814W8cI34qZis+Ym60IavjRbMnwtpltQ\/8nu9zHyxUzYfaMX6E\/QcbsZ6bTNW13IP5Kj9tRNkwofHCvBwUou60nfWI32TmN+R3kI\/pUakz2KhapV1XC+pHzRj\/YUaketEv62VDP8zHRHJlU+MDB1MIG\/98iW\/V\/3uvlNxi\/ILLvWjC4dMVsxKOI\/rker4CSioonACOoggBQp9P9ilRvDvbGmcxUWzr08voSHZ+LuZ6F2NWF1G9LmZqG8S2QWrPF1ednA3Uc9vl9WbOqk+ijpdaoR7o1JL\/HZPDTtIqqXht\/k63vxkDTcCQ8LbHKn1gxBdmPMUN4Chhq+rl5kLuqmuUyrYLKt\/mcwKf8Z12py1fgeLlwOj4B\/v5tn4e\/XpIp4Fm\/jCoR8cPD\/\/7IIFgO0OoKl+AajHqtWrmLN6FV06\/Xv7jp4vyi+INKPht\/Qq+lYGNhOMCYg2QyMymHzwyUdXwwlBdJUILfsK+MANTBdUurcZqyuaiT6vmaij22XzTsoCPT\/yJWuH\/l9vpflDmZxlkzZjfQnHCj90qifbmfqfamKeA3nAxvHChvoCeVsv9UgfJmmqBQJa3AeFA51Ud6GZzR+PVFcf+BssXjNj5lRw2aCk2qn6NPXLWA08n1ZZb2qV1XIhNUj0UhBVHLs5O\/hJPVJNaG3STLGuuTzwbp9ikknt0kt5AkB5ni5a78oV5fnbti7WemGSEwGfrOjLwW7nr39RfoGEIFGnrI9i9Xf9fPYYUPmJysBjgngN4ibLfU0xfdX6VqKL7UR\/EN6ojbm0D0Grblx4Wbesv9BK9FnNRF+Pxrrmx5ihEnG9spvqwwB51OPCId2KPmxq1Fw\/PWru6GXms2u\/s+z3G6n5w\/CcecEXnRw1m0NNzH1x3b3M3N5N9Q8JOuWPQ2iZwvnXHjn01KlRc\/jUqLlvatRc0i3r\/yUCjgXQSc3326m5+epTDxKCOjQm2rdV1qe0M\/3x3rj683z+moKMbqpf0yrrTzQTnWFKgzBjsvrqLJ6n5I1dNVf++YebEP65RZbg18Y1h\/xa+HuL8gsga9Yc8mu1WJ153ekHy4rf53RyqZD8REWDOL\/uqmaiNjQTHXVS9WEGJsElBn\/+NwRCmJm3MKlbZT3ZSvRdDFjMS2ps0Wjtsr4Nzqj2qHoJyCwmfq+iT\/LMF9D0fPfDB\/4GpuvMuDmvEasVg0zfUNYcdsivtRIahltNDNuF4KnHhofy+4YyWXnK4ymimBkrnEg0mbLFXqaWe63OdUoQLjv4Sa1M\/10nMye0y3oX98ImkFPrItwGxVArMYdDCJDvh4wIOCRb+qxmOvxP1Be3El0BsdZI1HU8f58fB701aGIziVmkrj\/jYPLElCLuEYxblMewEKRqlIf+tJPqtZisYUWNAx9c1YjVRLus41bZfLRVVn9PFHmhjntEXCcz\/Zftsv54qywD+2I0NguA1y5SceRI4DqpPrdXUW9qj+jfEVrWsvkolDVoYwFGVPRXRg572m+Smtm0yhy3cdxsmxot\/A9BNBaf\/O\/npV7SHX6TwW65odWq\/D552bjmyU+oJfrvpkcLn9o4bq7cOG6OXnPYIU9Yd3jhyd1UF5lQBKw6me5RKUXwjGKOblb4H2qb0Yi+UonN+7athM6Memu7bFZ2EvN+\/PyFtCbPY7Ki\/6hdNq\/FdG8leowIfCNW1\/vCf58r5l\/YTjx7yKL8Ysrj2qk+bGbMjDL5wPNivjIh8zuG4gvm22X1DWp1m7G+AT\/ND1rXyFsmKxMYzdtO9YWYyF4TtjP9l93UrGqX9W40CftC00pvpPJhQ\/9vZtwcvmmluWdmTI+ct2LJcxqRqz2ObLuTvUk90lN+AnM9tUidlN8nL\/XIvLYe6e8QEBPurzFzysbxwp3TY+bTfF89eukz0MKcD8ulk+rbuplZQc6Y77ujhUO6mf5eO9Xb2YfNxw9YlHzgT9g5E31Vq6zPwMLolM3fsojlrycUiOD5HQgC26n5zKbxwspmebG7w6Lsh1i2RvVsis9bZV1qJbqHOey1AVqbyecDXAxYH7TBX+xlOkM7cy40TDvTH+qkehNaH43bsR0Ojlg7YovnuxXzsY0rzc6ZMUP+98Vrlw+9kPagNADHXCT9spAl4IVcsjehuc5GpH6c3ycUUmX1SJfglG5E6ksALM458pl\/yCK1caW5aWbc3DjpGDPReCw8WBRcvzWvdb2b6bd5zTqNiZ3qk9qppbplMfHPh3+ZxP75cXyrrG9tlXW9XdZHUM1F7fC+XIVFWZSBsnH1IU+EcA6N3C6r45uJvsSbw0w6BmO+1y+DEg3MgATl1E71uZMV81Y\/oCcrS1\/QTfUYxG3kYMn7dlJzXy\/TETWx7NPN1H9Mj5nrpAIn059f\/eEDf4PyQhBLzVh\/txbpI6X+NtI1kFr56\/YibVVifb7PC7syw7Py+4ViG5+pbXRNYCLXY\/VlyOSrJfWPJ33zSb\/Vq5ijgTZOj5mtrcRWBvVS84eTmTmB58H9CO1tqm\/speYo\/FvZpzz0u92K\/t9ualpYJTwf3x0xfHZo6tDsblqq3q2UVXZS8\/5eqv4cit78dS\/Koswzh5uJXtsq6+u9Pxeaw+Gg8xuady7Io7f2KuZL3kQmJcPga2d6ytPO4m+LqZyqce+7SeBq1Mxce9rBDO7zzvvhEgWAoR6pz1Tj4X+tx2oVmhc\/lvahQBU590JEAiwajVhfYhttW2ugEVsC+EFC1JhjqiX9YkGBCcpKjzYTtRzoYy1WHwXeSRR6atRsRutOVvRaYggc34n083qZOY2JvO1Y65vy28KqWSn0KW+nxtQfdzLzg06qLw9N7PwzZWPBFLPbxSZCsxuXB87pjWsGF3csymNY0FwMpF6q34E5DOsExG2+oDxvDg\/afDCFidtJ9Q2dss7gdfK\/IRSwqSm3U32rNxEZiNJuNDPH+VRQo7z0T3uZ+QmkdbBCNsr67XwOlJHJK9DEsq7XSvrblAzWY30GQSzqb4FmMumYfATk6D7of3\/y2095fD3WVzHouV4mFiAI\/z0ixwjazOKZMaHJDTfBK8dqQz1Sh9cjlbQSffrECv1KcsyeEQR2EJ4TrJmY0hzL5+1EvaSbmXP4ToAZLi\/eSc01kN9NZrYZmz2H+Sei2K2yvqNvRu\/lme\/L7O6mtGEdPmgRuvkYFGB5U6P64+3U7GkO00lgAS2QH0CeiL1T1vd2hR5Wv90T0ImfnOn3YCqyH+dnIYCtkgnUzcypQATZlwHfyfQYJqdrhpb6pt74nsA0wUtPVsxVjUR\/shnrMUrqgDgSCWcBgIh9\/fiS3yOX7X1nL5it9Ujf4BFNXE+9pGbCfZi8G0uHPJGODPjlLAgE7zh3PVZvaETqHAJmzUR\/b2rUnD8xYl6ESc21cXzt6KHhTmZOQxtz\/l5mfuBbp9BloVcx6\/0kZuKxOHI93Uz\/lB5Q\/jpISWFi40N7ZktvOextG2R2E+1ulfVWSPc2jpv3g8cO73lRHoWCxm3E+lJ8tH2Zw4M28o\/e7yXwJFHkiin480Nq3i3rkU6qb\/TBGjSJLymkVQnRZvZlgHcz871eZu4l6tyrmC2NZPjVfEeQDI03EelXTo3qtxHEAqrYiNRK2C0akX4lJm69ZJ5LhJhJSmWTaM14ybw0CnXDUP34hUl84UhdkNdOaFRSQVQkcb5aPPwCkF9Euasl87f1WFXpaNhO1Wc2rizc0SgN\/W01Uoc2EjXiiQA6sXpzNzPX3nDmwTyrWzpl81l\/ftySyYpp+FyuBPeAoVrL5YpOpr8dPsteeemfCtF9qi8RuOrq\/Vtc\/SZmN8wfx1ger1pJn+fPvSiPUgEof38rdbyJzEBrp\/q6TqYjevr4c2K6diuF\/+qkeoIFwWsXjmXScmw30+f5YA\/SrZhPdzJ9I+B\/gjjtVH\/Ff4e53IzV+DmHF8zUmPk656tBT5OI5j0XAj3K8WQCJ\/oVaL8NKwpGAk+R+QtKDv25kE40PFSP1D0+0GZRZuryfDkiQBPKHDmfr5aqlYZezu\/I70fqX5qx2thM9FdaiX43BQuTmX4PzdXqsT7ZtzGlXpdFjOcFQqubmkt7mXln\/3rK+o2dzEz6hdBfkw346d3dTJ8+WVH\/El5bZ9T8UyfVa7wb4iCce7yrhTY09JZjljKJ\/y4876I8ioS6VqpnLD\/Vni85\/8IZXGIip3pnN9VnkDYJO+p1K0v\/BCgiPh2D0YM+OB6fDA1Po65OUvjH\/jGp+e9uqi8mggtaCRPSB38IYklUOdZfBfU0s7LwYybveSuGX9pJTbmVqBZ9j2qRfiMTt1VSr6pH5q8wn\/n3zG8\/+\/GNkn5bHoVEkItrYiHiX+sLq2vzUVyqfGjgTUAMvxvfGtO9Gqu\/riXqVdQ2t2Lz1lZZX9oq6883yupQgBzTY+aoU5cv+b1GrGNqkTHDOR\/1z93MTFGp5DDXk72yea3\/PdJMdEHkGROxB\/3mUVc2oKUvpm\/y9PgcMINFqlcx7+umZn3XNVyTxnAD3mF+4\/3UI90bVDK5KI8Cqcf6hwDf94Zx9v4ZfhzR4qlR8xkA+v4caFvgkEw8tCwDyAeH2Jj00pAs0512pXCoPw6KVaqJvJ\/bzfSN3VS9t\/89+OKyPr+V6L876wd6yaaV5qLNqwq71h459Kfdii52UnN+LdJvb5TUf9vyxeG\/kQCT+KiFQzB16TII+Z4\/pxcWCE9vwzVy3TBo5DU1AhnBBkvt+kohDkjNc\/GBCZZRgF+L1P9wHd3M3NTL9McnisOv5n5mxs26Nd\/Qv0NNs6R7YvUGd8rH0Xq0l+m74RRjYvYyc453I5Beqt9NL2I\/GT2M1XdpZAEFTkqga+5KabBW+LNupr7RTfWFTE4fZ8i\/03CTsslEvT88z6I8SoRIKqs72jFsRIZpycByvthVoIm6QRQZIcfZrZhv0bEeXwzfLTThmPBiOqdmplMeFoADInSyFXMWv3vxCctEu\/RSM37eUTZSi0aZrJgz0dQEnyaK+hWbV5mdG1eaHT\/6wTOWTmaFI6dGzbUTRf3vwvoRm3\/FFKeFKFFpoJVUT8GKQXdBmDrC60Ywq13aRa7V+ZF3+mhxKDCHVEvqv\/GBWSjwq2uxfg2an8WFSUwb0mpJctS72qn+4HlHmRexMM2Mm6t\/ctTQs\/Clu6nZOlnRo+CwOW81IWWkf8KERBtPjRLM0mtYfPieqDnn6mXmUsl7B1aS59\/i2blOj58Pcdykz4C2djMz1k71zT57kDexOcfGcbOrEZuPhve8KI8iQXNNVvRGD7R3ftfdnVT\/COBE2CmAlEo7Nf\/aTfXpnVTfJxHRHOjA54ep06U80B9rB7E+xmsR8r3U0oLp9fv0Rgtvnh4zN0xWzPfl2krqw2iz6XFz1Y++cuAzuhXz\/Zlxc\/eGkeF\/asa6BC4ZE7cZ6TeifSFvnygPHQy4g2slVzsoF4y57aqE+hMCzqpBjB5Q5tRKusL\/G5H5QCd6pmhjfgMQh1DfROrv67EqbigN\/xvPEUvizO8P\/enG8cK9TDImOceTIpseM5eR1\/bnty6EuZbnYTtG6F29VB\/lg2DSB7miP9HvOYy\/HjxvD47ppPrOXkUf06mYvw0uXwJ21C4DnMGfZl\/\/nnuZWbdhhX5euP+iPArllMOe9psUpG8cN01ymDM5cjjhcErN\/1HzKis\/KYncau5RRL3MXAQ4w5OaM4CAQXYzvRO\/GK3eqwjC6ts0C2OfE78\/9Lsz4+ZYtGyvbMnUW4kpgyeeHNXbVkvVj\/42A3j9yNBrGrE6noVHgBwErqLhj6MVwQsz6btx4clwQcPRFd6HFwJeUhXkrp17kS1Rf5zfFyHSjSZnY+LyPITHqqQ+S7MzYJxQAOHzViP1Jkofm7F511lHqGUzY+ZWTOVmov6PczG5N640d0+N6R8ecIBdXDYc8cyn0+Dck+PLAlgBYqq+COsJ+7CQTo7qz\/cyfZ0sErn2rVgRPFsBzGRmGrhpvsppKlF\/TBHIxpWFDii68LtFeYwJOFsBE6T4Wnqn98fCSSsTt2IEItjN9BXdzHx07WE2knvKyNN+E18P39AGZfyqrydCqlaKIzatLNw4M15o01GQydxNdfUGW7wwXfn2Ux7fSdXXSXucd\/TwP9vJpP6LvkpEhAXSmOhXNKLCoUSXa5H+GuetR\/pHnDu8Jy+Y3YJ\/9hM4sX4wJHP5fRGQVpDI8X9w1mJOR+pN5J35zuWF3wSZn\/B3xeq91512EOCQ\/8J\/x+S\/5rSDZoGdyjniJYdsHC9cTgUVqSn\/O5i9vYrZjCaW52Wf6+VUM\/l98NNdx8abB03kXLDxVnDmYYZgUR7jQpeDLoGqTG\/x0c98O0wGDPlfN4Cu6WTmsz7SigDY6PtuBMFs8+pbqA\/2+xx52JOfMD1WKFHzOzlqRFPCTompeN3pBwEGaYy864Bfpe8SkxlTuRHrbzciHRHNpXeSBK\/g3YoKh6Lp6yX9BSYEHQPJ64bXFEqtpN9hSwjnBr0sTgtUMdVKS59Vj\/VW\/u9ZI8lLC\/lepL6OTw1TJEyTTaLmJfXeZll\/geueGFH\/eeZy\/Qe9irmMFBlRaO\/vT48X1hBE6lWMaGfEWkPq673M7OLZe5ejl5lp3Be\/H5VPvYr+DrS+vllbvqE6n3kwDr2NexXzfiLp\/hyL8tiRx7Uz82pqR7uphe7hW+W1LQNEIs1WM9yIWR22P2ml6g29zEx6bc05JHWUmuPJy\/r9AGNsWmWu2LzS3EM+lc+I5E5WzC5YLCg\/5DPyqzefdTApno\/ia0KiDnoI1BWUrpKiwbQtqfcL4CLWx3AcwatGrH7qfy8vRJYZ2OEElvaeDjQySOqRPp9rJepej\/Vxs7MH\/BKmswBHYnUMYA\/YKPFdG5G6jmh0p6yWM4lrRf12csFEzrm\/XsXcSBSb87ZS9V7835lx0yN\/7H9PwCgVfa5M3qB7BZ+1E\/2K\/nUVl6hJcVFsVRMByPxE9vfntPKN1C53K+ZF\/hyL8igVwAmYvUw6j0cehOxhQPC5TNxU7+hm5pthy5Fe2bycNBIDTCqRyrZjwGTFXIJv6PejhhekFT7i9Jhp0DSbz1uJ+RYakYBVq2xO47NmpP7vlrOehXn7HSY8\/FmiZWM1jpatx+oH9aJ6Q72o3ifIqkh9ycMY65HaBqzR\/25e6iX9CSKz\/QE+V9Dwuvy+XpqxLvqKJcx0MaFH1PMbkToU6thGNPyBZlm\/ESpZSWEletfa5Qf+EekeLIoNxaG3Uz3VLusp7lNytZH+IOcjNTYzXriUiQztTvi7UmlUMTdyvR7BJho1NceDFff7gaPuZLrUI9ZgA5F7vEc2KS5xcMxOpicAlMDBHf7mojzChQlH0KST6h2symEt6sCJK1FlDe\/UD0ij+POg\/Uh94K95n5J0kq200UdQMeT3Jdg0NWq2SH1vqr\/DZ+Cj26k+hYGLKU1Taz6vRepLN\/\/kWZjuK9f+cOhgNJAEjSL9nmakv4N2qkfqNIjgoV21EWc1wfkkPZPiz85BEPPSiNUXwwnMxuJTK6k35\/f1gnZuJno3uGjR\/o5Ar5no77ha4TopLChhAZGwgHQzc+Nphz\/jwMkxXQOBVS0Ov\/XQQ4kt6Jp0s7CllSs4D+5CLzOrgJBOjprzwKf73+aZ8x3P2EfPJceb6nuFMCB4J82K\/qNuqiud1OzGysgHG\/3GOXxNdjczV\/cq+ocUmfjzLMojTMivspp3MtOUHO0+kvys4M7kuoda1zDF0h7RS3oVc1Q307s4D4OBczmt26RVpt\/3sMMO+JV22XyZXOfMuLmrVtKv5\/MNy4cP6mZ6I5OXDc4nPqeqxwaw9NqTf6CeMjVqbqRrIYO4Hqlpyvbqse5VV6g\/BqElaR3J9+rvcny1pIrQ3frfHySwauQnMPexEA80AtEdNbjVyPbkdRP1tROJeZHUI5NSitRpUvgQ662yOJXNaVOjpuvu4yIQWBMjNifeKeuf4v9eKOWT+qcgzfi8Gav3uRzyfa0cwKKT6NdPZvpCqSumh5R7R91MrKIvhwtmKzHP6WZ6te2pbLV3\/h37zRdJ+GKKPMJuUR5GoQcvjbgoJOclBZ3\/Bm6s2BaAoe+dzEzSdcACZK3QtpgvkeLAnPbBLQa\/MDpm+lNrDp3Lu5JjnKyYFr17exVdpY6XzyeK6h8mK+ZmzGYGI5SyfF4t6S9YLLTeRM\/b6bFCp5eZNt\/h\/zp\/87OkawA8+ElLwIoJzuRuJfp2HzFeSKjnDX1guQcmdKQ+kt83FHDXtZINZrUi81cQ1PP\/ZqzK5Ivhkq4nw\/9cg2TAmdssQL1Rs2rt4c84cGbM3ARcdIPT9J1Uncr9uyDVxT4ne97R6s+nRs02FjIqmtYvnyvGIDDXTQvf9aWDoOj84tnN9JWdzHwgZL0kzdVL9Uks2lgZ+3r3HuNO9HuyYr7VyJ6+zxavi\/IQSq2kziYFszdtKy\/Pm2UU01fMuMcjI2LeVcz7epm+vJ+6iOYKyrup+ZGvhfXSTMxnWCzQOpTczX0+\/DEGkw+qYILyeS0a\/hzXOTlqrjkNkriKPmbjuNmJBhcGjEgtl\/xupG8+k3reSKX48BRj1GN1upy7pP6Rqqp98SHXYz0WRqH7EzhWX8zvGwqaloIFf6\/1WM3Ui\/oV4KQbsf6aw27fwHcE0bi2c44cHgLnTVPysw8nfWR2YXFUi0oK+dtlvYZnKq5HxdwJvprPYflop2YVufCpUXNrq2wLI7xAHM+iKOCO4H04jbyR+t9wfxhUehVzmuSaXXfH\/BgINzQ3ddhVy2i5KA+HOIaIvZpP4k+5dEUv08e10vm50E5m\/o0Uho8sM1BYqa25rK9speat4f7rSurZ3cyssyAMcyuMGf67dqojfx7RgIn6Ep\/XSuqzgrgaNXee9b0lms\/xldFETEY6\/rEfRfekjZoj5kXQx9rP9FXkgfl\/taRO66b6nhA9NkgasTo1zAP7CdyMzOH5fUMBwCGTr9Q3199fj3WX\/0OK53zgtBGrCnlw4JngpzGb0aYbiupNFGLwDPi96gqL024lqszz5LkIJNU9F6QR6\/9l0lEk0U3V8SxawSU9DkbQXkXvkOt39L\/ENOzCCg\/3\/Mbf3US9ypMK8Ft7K3pgoYZQYLFu+GEQkFD1WJ\/Ci8y\/GD9xJWosEU39oxBMjwD3o+TP4mXtYGdw8OJtAb4eoeonPKaVmI9MVvTdTF7AGOuKlmGCgc25vLbgnESC+a5aUp\/2HQ2YsBtWqDdjck+U9KckZROpewlaCVAiUtdxTD3SZxA4Ih8LTxWf4eNPjZrdtdLeua0Q6niJuofPg+eEZs7vGwpVO7WSvlQoXEee+6tUKzUitYPra8bDL6vHKgUAU4\/07kZx6E\/rsXlr3S0+TFJSSOceMfQX65YPvZF7ZhGZGLHF+61EH+mtG\/k31cesdj2PIAuguMHWSOvraC0TXte5R+ul3UyfyHMVcgJXnCIRa\/uuTvRkCV7amfqHkFQgPz78+8ZVgrggPHZRfg5iSdj07flgDRPXFzD0Mv2TdmUup4hQwdOtmON58V5LeZJwmYAVM5Vf1TdEwwdBfYP5KgGp1BzufeH1xaEXTmbmUm+es+qTh+W7ejz8CQnkHLt0tjYy\/E8\/PVq\/GDO6XVY2lQS\/VayL\/B+tj6atJwY0VsZn0ou3ZAM9mKsMcDRWeG15YRISZMrnuZ0\/eUZ+\/7zQRpWIcjPWr+Fv\/OlGrGv2O3UO0eNmoj9Imab7vkpjN\/4\/WTFbzl9d2HXGd2gGpz56+ckHyeLorRT6QNlcrrVw8P\/PWfFMyZ9TnkieHkvFtpZR42f\/QD0lvDbqigGMcKw8r8hZWPbZA18t5ckNOmX1L73MNHEp\/EIdbhSckAPfG0ngojwEwkCVyZhaP4kJGBbT50HvmHpo1W6m7\/VRS7+Sbz2Giavvhm3jtA\/Mf5EAEeibJACFTO8AqeS\/Azc8OWruYmAQdEE7ANjgu3o0\/DFWdzTRxIj6HyCHW1cXdk6NmaupxKnH0mbkVjlPok6gSTf\/b0Sqg\/atCgpL7\/RY4WpxeApXgLYrc1e3pxBdbUTq2rDkkU14sUpKzOG9CX42i0y9ZFNe+L2ciyIKSR+5RQAebHxqrg\/TmMDd2d898BmbVxXunRk329GuoLeuONlS7lRHlJRa1mP9BdwLAoQC3Bg111ZHLOgDaSXqI72K2W3jGvpKGqoFlyedGGn8RlGJ16y8xyBifVsn01\/L0wy1MvUf3Yrp8duOAsjuX9Ynr89N+kX5OYrNO5r\/mxk3O+GjgsYl\/B78MUXiTD5Z\/csWycNL92waaNdayZKTezmvuERherM4oHm7mWmEgax2or9C0QMDgfNMjZp7oZvhu1pRfYSBQkQW4AODeXrMXIVmAdRw7lFDzxIfsaT+fP2I\/kt+QzipSvrd9UgJ2orevGg\/\/g9wgkWnVlLb8rQ4eSEF1ojV3XnACtcIKwfpn\/wxoYA8ayb6jk6q7\/IuRD3W582BPFStHeu\/rEdDf8XzxBISlNmomcUvXne0egP+Pe9CzhfpY9Gqk6Nm94YROxnBVzN5uUYm0+Soua8ZqT4eul6EHE9fRJGELMipjsMUEtIqm5f3KqYdBh09ks5+pq8C2hreL1ZTJ9XvoEpsatTc0SybRWL4R4p0x\/VSXyGEUJcqfMSZvrL\/kt1gRvu61Ma1YUmgl2aq3wGUkglo0Vv6KF\/nSr60k+ljxYxzRHdTo+auiRW2yghTFyoXjm0m1hSm7Qh+87oVw5Jj7Wb6em869zJzUyNSI\/y\/EelLAFGAzGKAe7AGdc0c7yf03kS6GdINIRfYs4Nc3caEyx+TFyL71ox2rkA0\/DcsSFybmPmx1eStWE+0yroj\/y\/rCfDd7vgf4udTVeW+WweD5WTF3DcR2fJKFivcHK7LY5qbiVQwiaBBO2VzggfBwGpClZX\/XvY57IBf6abmM5MVcwfvyQeseM\/96rGK3txJC\/MALFSJAdEMP1uUR5DA7N+t6I39yHLwYjF3hSkx09nZRx84rxyNv5mcDIaLT5CXf2szKNZfd4Ra1qtYlg1\/LiLRG1YMSTUM\/ioawzUt+wmfNWJ10o1nHoxpvYa\/W2U92quYW2T\/SH+H63OBocPAPvN5M1GbapHlcSaQVIv01QBFPEhkb8IgHxS0seWEep8mOAIG+ipI4SLd9J\/RgbBa9NVGuttM9Osx9blXYJTkb2XRKarPsA\/9jPDZq0VJoz2uk+ot+JuTFXMv9c7sAzKM+yelgy9ra6j16Wu\/87S++dsp609gUpPecsSCR5GC8t\/b61lySK9ifswi4DMJoevA+6RKjBYu4XGL8giTVlr4G7iT8Gk9eZqfuEGQajNlbXscG+t\/71XM1ezjivHbE8FgRwtNjZrrBJIYWUhlr2JuWLfClsvVYvVeJq\/gfVM9KZ+V1PcBbrQSTST5cRNF9QbSJURd0a6Y5vjHjoj9pnaml4CDJq\/qCw+YtJCl12N1x0I9fUOpldR7B0XmmSDCDFmaH6AbJABK\/MTyjB\/Vov4Qz0Z4syJ4otVlfF6L1IqZ8cJugkDVovovrp2ihbVHDj11sqJ3XHHKQQA73isAjcxcw\/OhqGMisu9gfUm\/fmrUEBuQiSd+acWcv6E4l6fHXO9WzCUc697hFl8sEQp9lnuZvsoHucL77wc2K4WTaa6WP3ZRHkYhhUBdLxoxn\/9kY9IxaChjo\/42PFbqTyu6Iggd1y2gXdYjvu4XgakCH47ILpNXfN+K2b7uKOs3V0v63Wg9F0S5HK1JDpXBPDVqdq0vmj8EvOHykiWOgYqnmxqZBIA4apGW5mNgjluJvtK7A7VI\/4jiCFBS\/Yvei+Bz5yPzfpNUkiuI2JsI9rqkL8F39WgwaoSnxsyuDSMq4e96pDaC3aZTIvEHoJdybGo2TI+Zq\/n\/uqL6B58TpnrpnMOfaTB3pdigYnauH7GRbr7DJ2WB8Yvj5Ki+1TN9yD7L9R90M30y5yOizAID5jx8T4hAajMdca58Ki2IWO\/uZirp7AVPvig\/ByFl0El1RApBfKDA72M17xOFV8y55DLzx1Od06voy9nHRURvx\/8NdsH0O9IB4mVwiTlW0RfVjrbYafikmLxyfKZ3rD28cOCGkv479oNQD63EfgTBgB3y\/w3F4Q+gmTG9BaIYq12ifUvq2UxWgmDsR2Crlai7MR+BWAbXtaA0ErUyj8LymwVzWOaMfQmADRuE01d6OtpaSUfcJwEltHAjVjv4HCuC+1k\/ov66ccTBTxJ\/NlbjfFctqW+4INZOgndYH0w+eV4Vfc8GhyoDADI1am5m0vGc2UdYRRJrkntplc1n8W9ZcJ02nqrF83P8CBZMr2KmfYYidKOCiPXtk5n5Rj7fvygPsdCvtpfpr0mxtystC2tEmcg2gGGo6d2DkXAtrBgVXWSlZ6UW0zCbX69KkXonNWdhvgoCKLITAFrUOYI6\/Q4GGRMY344WoGuX6z9C2zNoqyVVtvupL8JYsW5k+GVEeTevKuyGTpbvqP0FkML\/J0r6rOkxs5NUCX9TxudMztk8gmwhoWopr3n8JqZ1pEfzxwwSII\/sL6CUxEb28Z+Z1BMlZTm9Yr0V353\/EzWeHjOSG54oDb\/r+tMPnj3XIbGIYpNO6qb6ep49KSUPsAAY49NIYKUJLDI5mcTe7WmnukKppr82zGcWXt6Hc2V2w7NNUMvvg3BMp2K+1Mv0PVhX4bMII9a9zFzdTc3HsJzC4xflQRY0AamBXmbEzwkjy\/6leIAGSJ+wNNALAIVeRW\/zAS4xqVIdwxTh96muMM\/pjVraUzmv983wi31qpTj8Vkx2fo+BSB6Uiptuqm+wPqxtZXLeUUtehN9bK+lYjov0GUJ1Wlyi8IO5B66zkallRGqrRWuiun2nuM9apK7YV\/oHIVJej\/WlC7UmkeBWpNbnjxsk1XTpM0hHye+X5noL10pqApOZ\/skwh3BeeKVh10QLV4vqB+zXKitQULuqRx\/4DCLKEOQz+dtlvUnOX9Qf4plKILBi7pwoLhHAzfojn\/mHYNJl4XBADatpdZUouL8OfOxOan4si+9ofyI2gdf6fbyAGutm5mwx3XNBLolYY6nZ47fCg73Y1vQhEvwxJoO8hNzEJb\/rXvQ2ytLyx6458pAnQMrOhANe6bTmnZCzhfuBGqLRmCCq3IsWM6xs1sM6wT5U23AewTyTzx3R7+bzFpHW45cxEO7AxGbBIf9Ly1B8WvKgRGY3rBg+gv1dfvVH\/H9iRJ1ARNcHjVrx8As8A+a+IJBeJJcc7ZkD9ptM7EhfElbz7E1oY+rSM3dR1shnBNUo4K+OqC\/LPrG6AB+e\/9cj\/RMWIVwB4KWS681saokGacQQeD5NF6GvldS3sXB4lpOj5o7qyLBQ+1KdRK7W+ux2AbWui9k+sWI+LVC7rL9AKo9zO228CwqkPNk90kmEj\/p6nmk+zcbGeQgs4tvnj12Un1GYDLVIXeV73oYbGhd\/t53p7w3iiaI0juizNcf60ehpNO28\/cr68zKxg1VaoJNlfSYgBfaBr1nAB47sDqYMOTZRZ7Mvg5Z9+IzUEaAGfEM06OSouXGqYnZMVp7yeEAc\/BYIMTYGVbWoqv5ayPnagA0TeHheQcVC0oiG\/sKnZPLPiE18wUjflWdzXEgg1OMaZBEpWb4vIubNRG3vZfo26WoYq79mQSRCDq0QC1rLWR\/rV6j3Ce67OCxtZKjI4pnxnKjA4jMat\/EZE5AYxIbl6iV8TkoP\/5bz+UmMtiZi7Vu6eGmUzN\/2Kno7vrc3u7sVsz4PzkEsS4se9Zj3UBH4sVSPlKDiFuVBFPKbYYRZglR9H0bXKD\/LHyMdA1PzLQmI2A6B1o9NTeopXxGQUnS08xNcTDc3eQETjLzLaqxqUbSzLBYUqvuIMvW7kuI4TnoaiXZdP6L+U\/iiIosTrhaHY\/LBBHzkmMTMeO1bLaoK5idUsfwNWKReUtdJKizROwe5AoMEylcWkPzE9RsTW3iuI\/MX+WMHCWWELFay0JRUz3\/ORHS57U\/ydzNWF4C44v8TxeEjbjqTyqRhoc5pxHoCrea1K6QAPGe2IGd8FosEk5joM4EuPicf3M10nX2ZaD4wSZqwVdbf9teDYKp3K\/oMeYeOGB4Li2qmcD8v9JvCZBbrKghykX5qp2Z3o2hbwC7KgyT1SI2DR\/ZYVimyr+hb4bwaZC4xobsV3eMF8VKsZtV3t+K59iYIRfhEiNnPay4PKgB04c9NSoNqIMHQ2n1l8tVK+vMca8sHrblI9QyEduB8WURqI\/ov8f8asd7ijvk70WrFJQqu5+kxcx9lg75VKTxbaF4Wnborqt8fgapnoRSS3ySPHS9MrRMKOOd6pK+RnLA1vyWSjzk9OarvaSX6hrVrX\/Yr5MglXlBUy6QDY4VostkJ0IN64c0rC\/dOjZrtWEeQJrTL+gquQ6yVo621Qu6cv611o3dQJMLntF3tpHqtWDvOXeJ98n5IK0HTG15zKwFWa03qIPd\/Vkjh42XtYU9+Qjs136RbJL\/NcTw\/QCw+OLcoD5JAeUMnhXaiju5lZgYytUGdBize1XwJcnV8Il66fYl6c54XmTQOPXitmepWYBc08VxOSLWoXzc1au6T1d9CK8XEomgdbeAggTd7TQm8EDD+hqNtZ7xmoi4ksEXTMP7ulM1ltZI6Vc4RqeW05iRS7X+vFukzGFDOdP2G\/3xf0ojVqoVSSH4TkzS2\/uv+COgwoKEuoCfWBVIrqZXX4wtHFh4qWtgxZU4U1fuAfgLJ5O\/1K\/SH0NjVyCK5JkaWvAj8s\/N979uwYugvLBOHuUxMW4uPvpnyS\/aXaHKqTmXShvfiAk8z646eY1VBsNYmK+Zqz0riUn+3LoR9Zlz0MnMeQcp2WX93MtOvDwNmi\/JzEhBE3uQiqIXJzMDDPM77xgSvSP2IH+T8Xc822XTgBQTYH4UKnuKFxlqkGyhCANwhReorC7MeHlgtDn9H\/L6RYQk8EewhcDVRtKwa1dLw2wjk0NoTfmeagMG06AcM\/nCrrHeiPeTaAorVfQmEAINK5sLNmdgC69wfgUfLAS94Ttf0q6NK+sXOtN0ufZqS4VdLAMsRuTditVkWMUevQ0CMVFp1ZFgCfnUXheYe6SvM\/UvwqmJuQXu6z29aX7J1vkSGYfdgEntLifcG+wb0RXmcNOcj8uwtMF991KuYHy3ioB+B0k7Vp3sVvROUFC\/WRZl3tsqWpG3evmX9PTSVr2JhMAigPgd0AO43OWp2MXjtgNLXQzhOP12I3BloMogj9XX2r64Y+tuLjpfKpWvxY6lewjyeHjP3Yl4yCMlNe+0LFlo0VaT6E6qeqE87zcJ5r1+75pC+r743Ia0DIUC+jDC\/2cDNvssKvWDl0PmeBZFcKl0a\/HfVouri1vigUivR5zdjLb4yZjULVTvVN0GER8oMs5reT+uOXiIak4WESYWl1Mn0NlBVmM4EqrgPV6Z5w7nLh\/7M\/yYtafKTmPeA6Q2\/tt\/PS6esv4aFJFBNZ4EIb3Wyb0TaovwcBLxyNzPChuHTJ\/xf8LS5YA152k5mxBTzWFmf0MdMpEbX7wvMj4GE78cEJiDCQJKWKqm+iAXCmqtKSNpBVIH1xVTeUBwW4AOld9eeBqBfCZXNxMjwx\/CFmRQM6lZZ3yY+q2O5RJNVI7WZSSaaMprLv+5LIOeDFjaPAc5vjl\/qRn4\/f46FBLZMzFp5RpH6cf\/zWP0XnGC1krqIv+nfJLXEDueM1WFNaZsGqxaHP06wrpnoSRYzFrl2ai5ggmHukjuW46Kh1\/IZAUX+nazo6+aRwjt2j\/Ad8u4lPVTWpTygAyAK5\/BpKd9No5uZ41iQw30X5eco7bL+ENhan\/Tvm8yZXg3DQ7jvuSvUH0tfniDIw4tnQDMZPYsGsmHF8N9Mjpq7MY855xQF6aUhqWQB62sDaQYz\/drGkUNP5XO0qq2+sfW8tRH1P6Cx2om+ob1G\/w4acnrM3DmnfdX\/ob1qJVv4IMfE+i+ZvGgXZw30a2T3JQzSQTjw\/CZR1rLwUO+RYllIapH6Ps+NCdVK1D3e3CdgVY\/V9QK5dGR19Apup1omNBxbuCncC7zX9ly6yaTe4BY1QBZAKj0qCiio7FdS75VJ7fidsWrC4pKGZ\/cI2uL0K5oq+lxPqu+FYGUn1eeGi7czqa8Z1GN5UR5CgYuqWzFn8gI8Rtmu1ObeVtCfyEu9aP55qmJucbQydvK6lVhYNIqWRQMhZwvLBiYXL1qitu77RqyPsf61Nduo25VjivpDFJ93yvp6QP\/nrTj4aZ1U34ZPSECHfSaK6ptoZ6Kh7VOEEE4oWKmL9b9NXySnRdh207PIf7cvaST6k+HitLeN55BnutibEDUXFJcLHIWWCuAatC6WA3+DSCP3XS3pt9lj1Q\/5vhnri4lYi1sxanZxrezLPhuKw++0+WPtUnG+gZv6Px+4ciCNq735jTRi\/Xmf+w3vT8zkzFzqI9mB\/BLpJ+6FxdljrnnH3dSMLWKifw7SKtNYTO8QXK97YbZBtL6QdM0e+8f6Ex41FU5eVy7XZ9FANqwwRKXvZFJ7CF+jpD\/Fd0SDxfdyJjpMk3xO+w+wzxQuUC7IZ9WSPtmZkhuh\/qE1yqZVhfuqRWt+1kvq0wK3jOdMWVBe\/O2peeqR2syx\/RvZh1gq2f2bwBLdjvUX8udYSCheqEf6FhZLnmWtpGagBeI7IKDd1NxrYwG2WL+V6K30BN542CG\/xoLWTPSNLHAE+Pie\/C+IOhY8ng2f1SOViFnsrI+JkkXIQXzggB8esLM9TAnVIvURAlkhrFZAHxaQc9eglBm9licr5gZvUgt23pZKXk6dc37\/RXkQhBRNNzWnuCCEPHjxeyx9ynFQ54T7gwtul1WS72zHcS5NcRdVQ35\/Cg2A89lgiDXFYMLgu2px6D1i0roiCZ8DBokEIbttK+LappT069nXIrJsTS8leDJhbVnhrzdida3ld56jeaU7oU97iCaN9JH+u\/2ReqzaAvwYMGHz2\/2NRCP1SJ1BgJBnIM8oiC9Ad8sE9ZxbNEnDTMbnl2Nj9T4qqig68HzckMbz3EiZ8Tf1xK1ETzFJeV\/8xnnu+bUSfbIsmm4Sdyv6Ss8Ias8\/\/C5b6zt\/kZbMgb1mQYKFAmoMtJb3pW0wzOLoIcfLU\/gsys8gUqhdMTd4kIKssDZCubs5oJHzWuByFbM+jFaGx01WzI71paGX+\/0lJVTRt\/mUkhwXqdX2u6HX8GIZVBxLDtdXC1WLaoSB2y6jSZf9\/sYjD3lCK9FXCfLIBXvQUAwSr31hlURbd1LAG3P5y1pJneN9WFuNM7j37yCRdieRuhF\/Pj9ZB212Aqrp\/Hn2JnR1cJrb5YQtbzXSSvTfeWCGJyJoJHorhO1cm1AAR2qj4IxjC0yhdQwWkJD+RXaio1m7mbmdiecspNvqLsfbLusqv9ufxJm+fG1QzwsKDaBNvljBpwZhWgnRdwiYATISnM9baB4H0Mv0RdxXuP+i3E+hszv9b4j2hi9Ggg+ZubhWMv1J6EU4hik1y5mT3gSbrOjrQ0CHgAoq+lYxDV3VUausBZAgga\/M3G6LxwWNdN+GFVbzYC5jgvGyPfaZCS38TZneBYuj2+9k6VyQqD+eXXPALzdidQX7VKNhAfTLcSVT6JT1Lgab565aOzJHK7MvQatxfYMA+oM2\/xt0gsifayGhyILj+A3RdLG6nsAc33Ff9ZK64JIThajPUtDG+nWUFOL7y9+JeTXPn0osX+9MqxniAExkj\/LiWQKOYeGV4FVqLmsc8fQnkcenfanEJErWiuji5wZtWeDbInNgXZD59yyTsmK6oOT6N+WkWTL\/NlkxN0kw1FtpEAJYzukjiJbnj1mUfUgt0m8EJeVM1r7JbNNF+iRqgvPHNBL9NiKamFPhC+T\/vJzJirnSs2ggtRXDLyCf6yevRVmZaYAaMHV0U31FGLyZGLHtMoEItlN9s2haV2qH\/83AIffp00aeHgcTU\/6Oht\/J9ctAcakmBNie+NseTO9qhfdXiKLm6133tnlMdL1cyAd5FpS1hwGZVNtYzDiHQ6\/125tAo4vlIrXIrpE4Wpj2MeCU+ZvnwPPppOZO13HwcY1ITxKtbyb6fA8SIfDl\/V4W4nZqmsQDXBfDa3zRP88RTbn26KFhfx0QBJCZCAE64RjoVfT1g1rTkKenZJHqKG9S86+d+Hoz1VT5YxZlAakW9WG8QM+T5FdEtDCAjfz+SCtRX7cvaL4Jxf8dlG5b2JJzYkQ9HwQPq6ynccEsowzOon5Mi+P4zgZobHNtpB7ptWiOVqJvJgjD\/iCPXJDrBt+PtlrS6y49Ydms+H0QrkdqmwuAXeRL+ji2WlIXeN9bOgW4IoH9lUZkUyrhJOW+fb1z\/pn4CdhI1H\/nz7U3IUru3RiXuutbEVQjNRN9G8+gVrKQSgKEtnewrYUmAo11IvXQkUWmTURDfwbsVawSVwvNM2kmtpSR6+aZwZ3Nd+uXm+cyQX0U2WpivS2EPlqXyNws6cHcWLBYa7M73xkRoUdWO9U\/lMXeWXxsLBg2gzFHcLgoCwh9alqJvscSqtkHz+CcrJjLoHHJ7y9g97I5gfRDHsQgK7hrhuVZNBA3CG70K7l7qbfApsH3jVifFAZNQBh5M6pWHP4cg5Tz0g+Xz6po0OMsXrjmcreUuEl6paQkSEPrFLSJnDe2kW0EfmMWEbRi3zx18MH9FZqf5XPA1oVQMywGdHhwE27u+xy2eX+EZt8uACa+ZSvVO0NYoo8k8zxbzk2px9qZvTYlVo3U4Tw\/JmfVkeRXS+rLINiwIrC8+MwFLW\/y5aOikUuWLICcPDBWvzBxXCczFxD78NeyfvmS55LjDVOHfkz4qjTokkgt+WO8wGpKP6bQpBZLLFJX+oKTRVlAGpFa4c2nvsmcmVNhYMjva1ueWNaKcPDKi3ITH4Jx6HH6xwhwwNzgJ69DWe3yQS0izz73yAChY4NHAYH\/ZfUmCOUBGWgVIJxMGAI1js0B03AKc9FPxlqkNuHLQ5ruUyfu88xrNQmklPSl+1twjwgBXcDC4eGC9O6dXfsyQSR1ooOe3k11N5zEFryiz8ufb2+CddKM9Z0h4i3k6sKP5R74fY\/YorIK9NWEczUIAFLFxARulfV168eX\/J6zYGZscE\/v8A29qyX1j1ynLBYuAwDvtv1u+G1MTl\/+6dyfrcRN\/PWQM6YVS37xYuN8vGdI\/Qe5Y3JsZprco+\/iIeNiHy1af6HFla81eRmYWVOjBV7y5\/P7IbUR\/ZrJUXPDoJfjBxctVjyLBkJnQSB13rTqZBaqR52vnLNoI61oQ4+GmnAsjqCO2mV9Medtl\/UOD8FrRHodk5dzThSNjcBG6k0CZiiqM+W8Jf167olzV4tznFSY2vXY5le55q2SPrJk8HsTUiCeYAC0EwuN+G3Oh\/aQxEZx+NUbVxZ+SkqNtEgn1Rf5VJPDTN\/m\/U765OLb538rL\/VIbfBxAednbgkJ9WslVfUmaC218YZ6pC7gfW6IhiQASFqJZyHWSNHWSzdH1PPJKuCDhrQ\/E0X9Nb+g+kzA+uLQ6+Q8Jf0JCTq6CSbuQqY3hYs9QS5gtd4cz48TGxDVF+bJHZDDP1D49U6mlm9ZbUkIxO2I1fH3Jz\/\/CyeYKLSI3LKqUGw4pE5e2on+ICv9oGgjG4Ogm+rTQ5IyzGPgeJ4qhwHvzGApdmCSMZklZ+xWW1gY\/fG1SEnBfzip6yVbqcME9hpZGCtiLRzGfTOypLqSquB6A3QQFK9e+8oEtn7pPmF9RHinRs1FnVS9mfx3KzEzTBAmTTczd+EuAKBop\/pWyvh8f2GK6iWWULHUNuR2WQh6mf5QO9WX44\/mfysvBNzETw+4pn3QCmHx4j5EC7v+SqR46MVbKynR+JbIXm1kokvAca596jdwRXjOE8W5FqTNWJ1jtXofgHPXuSOW+6oR6e+52IN8Lxjn1MyEjdGAVfYyPSlpsNx4EfOY3O+ouR0XwR8TSitW\/7VxpTmKtq+gyfLfL8p+Cit9OzVCNYP29D6y3zyLRrusjvcsGogzpa72\/pBHWdVK+qt8T1oJYIcPXDCwWonueSK5DUX9dq9BffAFc7KT2gg2gZm2Sxth4lHAAMMkf+MLbz5mqcvt2oJ\/L\/WSPs\/7rpiCzVjdneuPO1BY5JqxvtmlYE479yj1\/MlMf0Guz3V3qMf6KCYN\/ZBAPdUTB6qI9NSmVYW7Opl+DxNvctS0wGQ3Yj2V\/51BAlECk8jn190CJEEqBIK7Rqy22+dCz6Phg0BtNSJ1gZQbutwq+WImjmjzRF3Is8YdABjDJBT8uWPxQKN2M3O1jywLaCMzV\/m4RiNSK72Wlkls4x5ToWksPbIyXRvobrk+Wc6yGGjxLcrPKO4lnuNpXvMvwQPZ24muhMeJn1wx28NghqzYidWuRC+Z3Jb9wr5I6Go90scSCZjbHXjgVm9mVkv6OAYKA6Lqgiuuwuh6GSQOqYRJybEy0BOLD5Z9y0MHA+bwgTebfrE51P0R6GgJ3shgHzU3glqikyCAElggaZkJ7JR92+XCofVI9yiDpPkZiwSLEqTz\/tr2lzgA9Fm9pLcLNc+cKX4TBRt+n0asv8pi4rSmuAzVonmrhZfqKW+CAm5hYZRnWLQlmZjZHp\/cKpvLYPDgc1gvPaBGzGVLqzPlXQmh5bHZgv4k7mS6FyL0aMnSTe0Yyo8flIHnS+ukesz3Ll6UB0FI+UCmHpqb4ebRM81kfvMvmCG7mb7CT142u5+FQp5ZecrjW6maZjDwnS9e8D4xnQCbiW4QfLKDfFjwuaCk2M8VPFzfTxsVh79y7ekHM6HPkf1KQy\/3wHkiwZOVZ\/e7QtQj\/RVvirJZ7WnuB1OG+mxoVoopWrSmqOSw48KTDzvggF\/aNG7xyZjUXrtDRs8i5n1v7oVgU\/43FhI6KFp\/0F471wEda\/97qILKeieTvJvqnZAU2Ibs6kL4oX06RgKAmd7lSjbv9YycsFXynng+vqcUUi2pT3sN6t9lI7E5dogC26nueV+XTSy1VHcoI\/XnoOa4U9Y\/8ho7v3nrrJvpRphfXpQHKPWi\/nfabuRzen4Tln2bfJ9Hckagp5eaywC6h6tyq6zr3jRuxkpI0ELNTOmcP0ctUt\/kezcoxCQGfdQu68unxy3lDWWD8nvRM5\/eSW3Dcd8poFpSP+X3bW7XIpIQTMVapC72TbjFl8RkjK3JuD+Cr+lTOmgPF1W+1Pv9WAq9ijmfel3fJQHhOpuJuttrUA\/qGEQKuJCI7x5MYHEPHJ2Ol1pJnejdjprrvggRPtfTiPUlvtsDqSGesVtkhaqI90NBBCY2z5NqJX9eSPC9pvXvzMM6WyuWPA10Vrhg20lsmhDK+3M4COUxzhLbY0xxHNcOkGgQ2m9R9lNaZfVF6ZMzAIjA5lk0WvEcnxQivX0zc4mPULPxf4rHMTHZh5aeod\/kIowTvv8uNcGY1dZs07ejRfgc1kkGnGi8kprxJOATkVrhiM2lwJ9gFT4b19hJ9a4QRAISyEdy2Ww+U13rI8L7I+B0uQY\/ALFCRKOm5g+5h0ZsuyjynSXUs2wVVAz5ic\/GAihItwCXvS\/BVG8lFvrpz9Eu63tDjjJy9gKFzADfwCt90NPXrDmU4NVFV0oDcVv2KWmlsr4eLWxNacugwiLomTZ6mbnTxxiIprfL5lK\/oAfxDMmtrz\/S\/CFUPN5f7k\/isq7naZVaiUr2Nok5B25GY0AL2kXZi9AloZuaVbwY35B73sPts2jIS5pXzCAAgMxcFE5eBrqlubGTiHI2Z0rL98JgmOkbvX9re9Pqq3iBToOIlgV6iNnMpLSrvIXk2VSO3iWLgIvIkgflb1gsaiVrsnsh6BJqMGvCW8K3\/ZVWol7F9fnBx78SXMoKfyZcW6SW3Hduwkq7Utql5iewLI5Bdc\/+CLQ8PiXFZs3ducgxfm4tUhvZRxYSZ9nA4gG8tJnY2mk+4\/kKjVBFFrvb5uIMc9q5GauOjwA7COy9voQQ35V9PCYd8vfJirmnj6ZyLkon1ROkA\/s3Yf11WZDzICA\/ifkN3iNkd+Fxi7KAOGKzltce+Y2HStWNBWLMZ6yQ9EmmLwwnr0s73IEfzT7VFeo\/eNm8dD+AOZdv0I3US+pkNDv5P8+0OLvmUMAG06z8vFC6Bvr9qyV9rJTGlSwwArAIVgODQqLMriwOwQJoJgo63P49iS8bW\/96fwVQSRgN5l+P4gK33Ih1X0u5lJEEiWpl\/cZwAttSy\/2LfofSiPW3mRT+PCyC9UhdSGGD34d+ybbcUxaT2\/DNLQ2tvmS7bTcjWQBJK8VqhvdgATG2VxTuAIyeWEKinUtzk4juj5zbWg\/23mmgBoyS7+mC4SLhdty4RYYcObEPfx6kmaivcy\/eoshvHvTRydSpi2WGexFoXiYr5pqFku58xqoqgyUImiAAK7qpOd8HpOSlQoczanbDKME+G4rqJaCubDWNPScvBihf\/zxuYLBPNzN3wh4pnzutjUUA8soXlZPr5XrsomGk0bdEqFcvFb+2Hqkts7NzQAcYOMKBLyijsr6vO4Aid28CmqseqXswMRmkXlN4uCm8VAz8S04QoMPF\/UBbpN\/DhPbHiCUR3z\/0F1KPCn8jJry7DyYSf7cDFs0QqCJmrmPagBHUNUG\/3QNisGa4FhY97sMTLeCD+onIghTWcGPJ+BiGN3khHiT+wfeQ6Dvt2Z\/E8g5Tfa6PXs+dS3+OfT3KbNDGuGiX9WbiCOGxi+IEGKVrabnHw\/PaFJ\/EM194ISfbzcwWosX+2Hbq6HAiS4eDD9qr6BtC38hFcSU4hbCA9Cqmz89UKw3\/r1wXFD6Zlp5D9vN5ga5zSI9MFNUG\/sZXI\/\/JQJRgS6w\/5Pd1+9c8XzUb1wPDRbjP\/kotUitnxguX0WybfO+mleaKWkAEsH6Ffv35qwvrvXZlklIUMDNurmB\/tPSWYwqX+Yl1f+SC0cJv1yN9U1iDHKaNvNA3iQWL\/ZqJvkmI3R38k+bf1ZIq+n0BwzCJeM+tRF\/tU0jV0rCQ2OG+wEPmG51LFiHRW8KglY116M0+aIVZ790lf53OZP5pPlXEu7Lpwj3dNhmDsZ4V8z\/3ThfFpWxqkT7fV+XkJy8DHQQOEMrwOPLDnVRvcqaX7C+42TCwYWGEW0PTWgJMZX2V50GykU81w+QSEzOyPiPSiNQ5Lipp8bvOjKLGlX3ZfMd4oJIMWAZBM1E7aCfqz0N7zm5q5jFHWm1s88j3R85dcdAfd6Lfe+P6H\/zq29Z+95fefO53f+k\/zv3eAf967vd\/6a3nfP2AV5z1tQOef\/rnDjjoxM8c8KenHXbAIWd\/5YA\/\/+l3Dnj1usN\/6S0\/\/c4B\/8b+637wS2\/e8MNffft0+cmH1o4+6H6nTBqxOjU0x625qnZsdIQHCIuiM6G9Fv6cO\/a9wtIR1k7bxU+CY9ZktpO7PfLc38SK4J1JKjFgxgQe2xs1d7l8tLxbnmmrrM7xEM8wYOk3zt8p67P2aBAeDb\/TkUUMVCQwfNRKWiCyixJIWDCen7yYZlOj5haPzPFiu7ab6XDysvGyfOWKy+WulTyr2wdNyiofnq9aVMt5qVxDr2Lu8kEdUh\/e5HXat9+aBYik6wMsTcloOE7eU1JbFhXV1y6IlP0Fvj3mJwuGN\/H3Vyai4Zf2KsN3bfvRy2e3nvpa2bb86LWzm3\/02tlNp7x29vwfv3b2gtPs5xtPfu0u\/zf\/8j37sb8c++PXzl50yotmu+mSqwd1utibwC4SugNs1p+f33ysGqm1aDZJV8XqWnK2LJhYAY69pB\/Aw7oRDdmHaS61tcWRfiXjwNfoVl0UW44p6rczBsKxY+GVtj8z0nQVZqFmdbW\/Z8Ld5fdDqJLypP35SewWqVvDhXlR7GD4FA84fFg8PMGpZvp6H4TyctrhhSd3Mj3pwQzhi6PFSP+8kc4Grb7V0hyzIq1TWFn94Jgo2ZQLplon1Tcy8GzaR037tFGjpP6DwRsGqWpFNcJnPqA0ERX62GIw0rWSutyBOvqDoRapHVTk+P32JfXRwm\/D6jGd\/v7s9RceP\/tgyBWd785uHn0S\/vrE\/emNC81rJ7UAGH9PgjUvze9BTF8pm6bzWthW9BDkAsMtmHaHEce6IUJNrMOlyTZTjOHOs0I0J+woFb0rLECol1Sf\/I7fmUsv2RSjWFhlPREu5HI9Ar01p+VjAHB7T46ae2xwbm5\/zmuDmPvP6vkLIY1YbeBl8tIwy1hR8Yd7FX0F1DbhvsDjOqnuhpNXTCeCDIk52xN7V4vq\/0L\/h33sIqFO9OciiCKT1MH36rGa8N\/hY0qks68pLbcxk7ER621ShF6yrSjxMyXf6VIatcAEl+8j9fc2HTI3GGTyx\/fPHCMQx3VWj34S9zHbO+bFs1PH\/tXsxpP+cXbjyf\/U36aOfcXs5OqXyneTq18yO3XcX8\/7fuakf5idXPPy2d4xL5qtFZ8x2xj5A5kYNPbO\/+ZCQnAOyKYHpLAxmdup3t0pDfUpcXle+LwuhiF1tQA5BJYZqSulL3Jk8+cIVo6LH1hwjSts2Hjkk5\/QTNRlaGYW1FaiN1\/iACFo0VZCyeTcmCDgKHEQRwvsxs0W70qFkxh0Vp4Qfn1JvYpe0Vwfk5b3hXktefVE77Nq7BdGALvDGTU1ql7CQG\/F+t8hNd84XviUz916YYWmCVV+8hLAapf1JAX+7EfFEBHpfgTSmeKUBIZdCaCvYbFg8HYzfQ\/wPj5vxvo1MuEoK5Rqo7m0Ua2k\/5eB5Sak+OQguLwFwcvOQxNrkT7WayG\/Of93j3YgC4ktclfdTvyU2c2n\/tvsld3DZ69of3d20ymvm11\/xBNmq0c\/eba64imz63\/4G7MzJ75m9qrp4uwNF50ye2XvhzLR+bw28tTZieVPmp046ndnt5z+lv45Zk78u9lu\/AdiUqLl87+9kICCEr80vK8g4uylFtsujn6h9U20Kf7IP0sBokQ2Zcd76WVm13rX7hOmTz73GhbN63+DQCV49dDKIXgGl5mnxAHmSWGEAHFylls70SeD0pq76gMOWLdi+AVbVxc+yfXyTuk+MTOmX0zuP9xvUfZDiCzS8T00g7yZDfmZT0lUR9RfSzfBIEKKuUoKKTTFQ2xtaFaDiGol+hIJdKUMAr3TvzAGN36ckLNFusln4I7Jc\/IbDJ5apK7wUEGkVlJPaST6jjBF4ZFT5Iz9fnsT5zO2z1\/51NnLGl\/LW8Gz23tHzlZX\/IFo5ovWfTz\/9ex99949u+W0N8nkrZcOnL1h20nzvt99367ZC8953+y21U9lcu035SxlmGEgi81RIV0SmqU0FW8lWCiWAaUe6YvIV1O9VI\/0VY5mp+cLHVol9SqJ1id6dotkF+bMcso8vWUl1khQBkiGguovb9YzPhzjys1+caZhWq9ibsuXozKJW2V1QljfvCgPklhWQl3LT17heK6Ymz0dTv3oJYf4xmN+P140x\/nm2rJfceiFsGv4dFMjsThcZKKov0eAw5vctaL+3txxtluANX9tvTLVN167OB+vj0hC4F\/KB3vsIFfb8mbbQkKUe\/P4M2d7q144O7t797zJ5wWTuZkUZu+959b8VyJ33LTVad43578SueeOq2c7GZpoSPo35a9hkBAnaMTq9nBx8i4HpZThvvWSWuW1tQ122Vw+PjHPzdVV94nYsXr8\/mjtatFqbRbRVllfIRPT1kDfHHJi8b7CuAfvhfdFAzUPpUWT+5ax8wJb4hNLs\/LFov0HS0765kG\/1U71hPhFfvLGFtQB+gZSdvZzTJIX+bygf3k2mGEbbCHwW7XKehtmlA2ImJ2+7w60MDKxyw6aWNbXecgfYHkaktnrsPzGrvPATQ4GyMu\/u53N7y1bK6kWvxVOYCl6KM3V0e5LKDbfNHag+LQLyfRxr5rtjD03\/3Ffdt1142xt5GmzF5z97vxXIvfes2O2U\/nD2W461G\/mvT9Sj9S5zp+fuz9LMdQnAkTC3k82H682S433yHN\/sxnpq90id3G\/2MRSJu0ENWcrm8wtYKr5DuScd3EcgOVc\/zvS7jRWG0JAEP\/yzJuJ2uAtg4mR4bfIxM6BN0QTJ1p4wRflZ5Qzv\/2Ux3dSvc5rOP+QhQ5nHPyrBXUQKCHKmPeNeUGtst4UIm9qJV2ZpzFdmxT34jt+ARCz2vlqCKAEPpMgSL8Dof6cP5eNTg6zevfFsS7ukR6zGOnh\/S7hg56GBaJefNrA6PPNl501Wxt5ukzQHds35L8WuXbL+OyGo353tlleNnvHjZvzX89e2fn+bKv0ZAJ59ytNQmlj3sKweXC9B\/d0PVIdv5gJHtyZv9Wi\/jjPUZ55cQ4oUYv09\/zz5TeqxSDlFKnUfyfBrtJcMT5BxU6qbxAzObguAlZhlgI6XJs3nv9+JA3lGq0tygMUJl0n1WvlJQUPF+0oq6trHIbUI72alxPuJ\/jYirmTliZ+P3rlMHAw86zvptre5\/GDiHNYHLGa9tVJDo21U9BeroUInRgkr+kwyRZaOD9X7Tv7hYNDVvxI34VGD\/fdmwh5eqy3zowNzdajodnL6l+e3bF9\/ezNl\/909tLal2ZrxafPThz9+7MTy5842ywfJMGre3feNrt7932zu+66afaaTalEmwl0TRz1e7PNZOnsFZ3vzd5y5brZm69YO3vReR+brY48bXbrMWJSCuvI\/gr817Ykcf4kkPsO8uYItcj+efCMa5GSfsJYRbScgaSgWVbX+UAjQUvAM\/4Z884gcOc7oQ0q6+1MUiLOWEweCy3HjujX2MDlfPMe9wj6Hr9fPRr+js0b7zmJW+X5yLJF2U8B5tYpm3Pyk7cffQwacQOQyOd60XiCqXXUr4j0w8n0bQw2F93sF5ELCCMzdzrNIYOr6tBVCE24GXhoTjip3Gfiu\/F7WAPVaD4tDSmOeqy2e8ZIv9naXQu9vD9Si8w7LzmBTn9DoknRtt2VL5jtjD3HpYxeMTt17Ctne6teNNtd9cLZ8898h0xMglfd8efP9lb\/5dw+x7xYjuNzmdTLnzjbSZVdGAM88\/6I5LgjdcXA+3RpNi9booN+qxGr6z1yyi2iNpYQ6U\/inljLZ7jfzwgryI8DYhv4v76qyJMr+AW0nehLwrJBUlB7jA340GRszFlXjUSP5vebo2gyQry3KPspwo9U1mf5yRFubqXspw4ITAkKJzCB+vnD0hxDh3QJjHVNusxjHksRw1yHvnqkz\/CILvFPi8NSEYPAmMjqLjC6yPbzZXICqPApC9Eqgbltzzm\/9tZvEohL9GHhvvsrsFZOj5n7qsufOLt9anneCp4nu++7V6LPaOG9iWjfo584O0MXhZG5wo77I80B3RF9pD3fi7iR6O\/5eIbk1x2VEJOykShhDW2V9e3e38UKwhry1VUywUv6KH8+4ht85kn4yd\/P+71YSyva0AXjutDcHppL+qiV6DO9Se7385O4kVjS+UXZh6yxvqwwZYSDwb84OtX5fQlksCJbeNvcfnZFVu0wjUHpGi\/C+8XNWPcoMOe7DSX1Zh\/ttJpZ7wzrY2sldTams2in2PrcTFYPi3TaZI+u97VInZQf1GiKacD6Jf3icN\/7I1CbzmRPmb1k4nOzd+24dPbuWy97wNtdt1w0u\/XMt89uGn0q1zeP1eT+CBHl\/L2ySU44d16CU\/CBeTIBiVi7KqpqpD7DMUw4kFf9Y2L11z7\/y3FMPvpgyTGlA5\/YLutrGAuSt5f2pPod\/liCm+1UC9FeGB8hE0A6yfN+Y8ZDwZOH5nJOpzhK\/pyLMkBGRg741XZZ\/Thvynit2Crrqs+vCkE7jcdyUDc0YjfTOzaseKaUlCEQovHy8IVkglbMfdXEwvAI1rRTfZ3HvbrVvV93KuwZsCdaJNYMmlyqaSJ9kS+8cKihH\/pjEBBNNu8536x07CJXhZS391fqsT4ZX7URm9nO+PPEDB68PW8f3z9fzOhGpJxboqV\/7wMRQCaNhIjx\/Ans8+K0Dw33h91TUFPOjPZMJiyCtKexJYR6VwiYqEX6FD+5bEWXmiaXLN9JPnoOxtrLzB3hIlwvqpdQWhq+D38eMARUtLGfrWzTF4eZjHASh10ZFyUQ8qEtyMYGaF5eMNVEPjIK+37HNR4LH7IvoF9fmmvSXC0dwup8pV99eQlh\/W+tpDJvNtkyNnWtL2NDiJrykq12MUJ21ygNv81rbH6zk5rdHinkRdpxDnABXGrjZ0pRNCP19YuPffrsjZecPrv7vp172e6xgaw9Pp+\/XT1TnN226snEFYTv+oFKPVYtYgH5e4YXrFlS\/xjui9\/r3QufVvJWCdFknp24MpHkZEVcJ46dTMLATep3hqhG6hiHAnO+tW6G2G4izrzrMFglysHWDDd9eWHtKLptmBtDje2v0ymXvvm+KHMkYycN0rwEJrqZuca3kQS500pMO8zx+c290HnmWj1Wx3v\/yJrOanrtWoeVdmaZT\/GIJi3pd\/tj6dPDy+UaaiW1Ce3r\/LHNUinjtEfNcUCHQnQ1n\/tlkzRX8rNNFOmiED2jce26Q2dv7H129urWZ2e3Nz4ze2X9M7NX1D8ze3ntM7OXVT8ze9nEp2cv2fBJ+\/+q\/Zzv2e+qxmdmr2l9dvamyc\/Obj\/7NbPVkaefRDAq\/1v3R1hY8hF3Nvuu5lMGsWDXInWht2Ik4Oi6OLrc+o1YV8L8GbSDxTryC65UjmX67g3LrZYGpBFaU248fCv83XqkTsj7ud7yaiZGGqi533nx5Ki+W2h5gnuRSSyLgJpncf3CiiTyy+r4QZNXfJRRc\/uGFXOgAt94LHyofhVtJvo8cNV+XwHFk7x3vEkANJqJhVJiijditc3zQUu1UaSnfEoJX5zvpQZVfF\/Lt9QoFw4NfT0mcCsx\/VahCL9htfn8gSzsG4neRcQ73P+ByMY1h\/5a4+jffGdz+W+eMHHUb09vOOq3L5046ne2Txz5O1dtOPJ3b9pw5O\/eseGo39tJcGriqN+7Z8NRv3v7+iN\/98YN8j3bb19SPeq3eo3lv7GydtTj9zsfvTches3zzKeT0Jj0VPJman\/\/yKbt2AdLRiaL6yXlW67afPkc46VM7vLcJLXvYu57KIH5zPvKLKKgrvq\/OVr47XZZX5S33tgkRuLKUGXfyLwWpF8YY2HzmZAHUsf9WJPHNcv62D0m71wOdzed6PzOYeOxcF9hjsz0dSHVycRy\/Uc0JuPh901nRx6OkAeUF+aipW4C97sfUurGS3Jm1GafD0azyr7ud6GHzZeiNSJ95CBN5M4lec8HW\/AFN64+5ImQBpAaA0kF8gkfHspYJgbRYFgrGcTed3wwhShyPZpLEYWbcyeE4cTLJC1JY327nyAOvSWaGjoeEG7EDATlldi+U4jQEgXuiY0wz1k1mN0+6gz9byfVV3kIJYJCoBF4fmIKEYTtX9UHklRLw+9mQcjzZXmCgnr8C0x213LcvPmX7Uvywhyubzy2h1ZLjUwMGjv7fakfbcZ6irSPaFcLudvUbtuJ1rAdCu8TX8pT65RUP7pNHrGV6GtY5UN8rvfbvA8lL7A0v19x+5Sn\/aYlcR8wiLEGfoZA0d4Eehny3I1YXd5J9dWkuBqRvqQRqwsp5aOED74xgCtMjvtDYXt\/pB6rkwelzmz1j4Wf5vYv+8UOLcx78cAbcv08Ywv40D1vXVnEnJ6y+XSrudtlcxNFI3zPwtAp6xu8lpbJHFuiPC\/kgOV9DLAWJKdftLl+2ddZA\/l9\/SRuxGaemf6YF2knmcz1s8k\/FLd69uliYRj0uOX8\/oK+CvK5CB3evZ\/jETphN\/p6pBue8J1zgrAKwfu1WH2xr31jvdUHQshXesyvmIWJviOPpgIaOCidIgB\/GcR7dod\/MARCPcrpqNphQbL+oUTc5V\/+pgdvLdYxHNA+Cv9gC2Wg+fJC\/16Fkij3u97d8JND0kcOt46vTxN17kHOGTR+a5T1K93CbCepXUz7EEnYR51bZceJgEMs57SXWkn1IbX+Ov2CACtLWLnWTNTygePVkUB41s9fCMEUpkg6\/zB8lC80S6jH7DceC\/adW1ltszEv9JR1+Oe+6RwGtiZGhj\/o\/S7OJ4CO4pxWhO2Rrn4M+LBiJhwwHGsx18N7wOzqkTptkAZiEtUjdVM+V\/xgCWYlk7iZqE8PMt\/lmu3C8jq6Onj004MtNPJuJXoe75ffnKl7+J7HzBH9YapChN9xRPjk73lfjrb2ojDQJvS\/LpjJe+G9h\/TAjZI60ZvSrpx0p0feIaTyWona6C01f5383wZP9VVhlVMrVsfnsyRs3CuLY95FeMwK5s+gCK2dvHNtQBxJe7\/x2LwHTF431VeEoHvJ4aX6el9K6CLMW30Okiohuix4H82njcJJBcLHDhhpNnZBP2JdVGvDtIeA5MtzrUKRTsUUWmV9T4i99RvH+qbXD4XUY\/WNWqz\/F2L5fGWQDLLEWg3nJeaZ+Oj12NwvHur9FcxbmpkPIid0bsVV+UWsGQBpWFRtXt0W6gPCaCVqBxOQ9wKZgj\/O49O9ZeYqnS71vM+2g6S+yRO8y8Ke6I1hTtqVn96Rd3nYX0giUj0JwIN9QQh2ynqdXxTC\/eX6I9vE\/DEt4r9E6gJeMBMhNHFaiT7Lm6u2obaZ8tDH8GHxMqnlDIHrCJA5X41k0Tqm36cIqUe2vtSfz5pdc4TqrhnaTqp+nCknaB7yk74MjuPEJyvZYv5QWol+ty1Mn3+98lvW\/5Xu8g+F0IuXQQ8jZDPRgnIKf99ZANcLpDRS6+vxA4NM7o8sFMRjk4Ush7W+nKL+WF\/lsdRMSMoyvfbDPGV82IIGdW3YtL2fVnKTDiUwEdD+EkfpLw7ue6rK\/PcIMQ7cnnx8hf3F9y3PLby2tYve7N0kP4btAr1nOvExJ4J3jdWtmD5MYjYeUqesO0Hbi8e1En36hQNWOh\/C31C0xGheqsXhfkpi4IuM59IL7OOizpNht3XqV3nZlqlBbfPRZfKToV9rV1vLsxQKGr5VtuZ3eM1e+zUrtub4oRCgoX4A1SN9dT4SLHlr1zzMckLP+YsPtlBgMMgKICIMl1i+vQnSiPXX5rk2tuWomNuwj\/rn6vzNfiELoJtWYq71mHQWLrIXof9KFw2\/cGPuutx9H+yDwEo6yMdlEzcsgHXStZCul36ssIkJHalN4TkfkyJNnKPhl7Yr+hWsxGxbVy97RdiyYhCPr7xYT0oXoHMQ2350LqosZX2JutDDFV23+qs9+ZpPG4WagLSLmNR9SlhLjUr6hZXfr84WCmmpUcNr8EKfXa8R\/DULkCHWl94fxsf7I5iEsFuyIPF3PdJNDzTxm2gI557UI3V7I7YlkQ+FEHyqR\/peuxDOXYNYIfEcRjmUycoS1XGUvOzLZG0m+vbGkUNP5ftarL7Fc+XzdlnfFgYPcQd8WonnbhcP1fWpP2CtkAH4Jnm8505qblobtJNxSMDmIIAQiz7nn3A848gZR5lnblu9rD+GJxnPjlnzF1pIy4jZMsCcIdDRKusLwxVc+KvK5gKfmGcAMHhDzudapEt25XagDwuUn+evgKaCBE8meaQv9sESCshd8McOwn2kDaCYaSdafDZ+i4kzOWpuggwtv++DJXA9ucXpYv4ml5oPpDkz8qsOx31vLVK35X3RB1NYAOmi4eMXdkFRF+Zz5qFUS3PFH14L++guwUXYUOZ84blKM+uW6Umfn2eTY4vD\/UxGyO8tY8ACQKSPsxdHeHeL1+bhhnJg\/E1E+o3hMYsSSL7xWLg5YMc9IRcwUo9UEk5Oa+4MH+G\/p8CeQeSjoi5tdA\/+rt8HulgfYbYBFOsXk4+kTYrXCvybb6M5SACJEN3mXJMV0zv3qDmK1YdCSK9cdLwEUa6TvyN9ZLjosLlF638ANGBNYM6GqbWHQoSAHlNztcM1L6B9vUjFURDp5503Y30z1UZ87\/1d3kM31bvCYoUJ187UH8tEp747LGqhgCKMgTgz\/TP+eznPiHmtjMFcDEHSSxWJvewEZhkesyiO75iHkycZY+Ol8OAnVszv4EfzbyKFfM8xbqJe5EEKaNFmrLf4ldmb4HvgpSPVZuDYpmn6Uh+lJB\/pAyBszrya1yp0kEjHiFSCYSeuOfLJEsF8KIWgDG1KGrG+jS6KkOqF1+2vvREP\/6vrnWw1VDzX3eChkrOPPvAZkxXTpAJrb9oXQZPWXUtSf93yvmJLldMaFU6y27uuLzQkC+HxWFUO9trXsmEbFNqWdjJ9q48PsJjjL2+IzF\/kzrMHQYQfP1xb2EBtUejzc7ReGjYem\/fQ5tJL\/TYZCA23KRv0kUs0rOBeQzikQ\/L4BcECBuanjWol829eW4l57IryyUOSj+yvxC7PmGdaXEjIX+c\/e6ikHukpgCmNWN0Nhxhc0\/kJ7GqgXwOIg2fmTMg+wf1DKWuPfPITGuX9o89tRMMfCGGSjqrnOs+y4fm3sSLc+5wLViU+i2DHBOAZWfij4bf4fSZK5l2hKc2YYdGHHsnvgzQSfa7PMc8bj2EDtaBq7RdW8o3HBj2sZllNhzzLRKlD1sFAs\/b9IlgmexWzK0Rv2VKz4X63ddslT13IwmFhd+py\/zsQhocDiX1qpTlU1iNFWMiow7WWi9opeOREvT8\/gX3QDjw098pWK+mrqe7Kn\/PhFMzlhmtJ6q+dd+sJ8Kvpgc9olfWdvFdJMZbU2eHxWFf5RbtV1teHWOh6rH\/iJ6cfO\/muigTJOqm5VgJxwXP049IG5Mw5PlD2CylMhlaifzooMc4mkLbM3O578XqhZUpo4jC5WmV9qU+4I\/VIbfAF4zKALXSyTxwu+xTV+7z\/7MADQpLXHgHwYeYV4\/+8TM77K5D0sZBJBN5P4Fi9L5zAczBO81e2A4aNtkuwJmc+PhKkHqujw8XTBpXUld418lBZvrOF93PwVCEESFQ\/rRQs7hW\/D4teCOgRFy3Hn4bQWoWxNSgmw8YYDBuo\/cLJoMZjfsNEIio8UbRlfF6ILkv1kXuoDMQ8xpgyQv+C\/QuyYHrbgBthoDdjW7DgBsgVPu1ESVm4iqMNQAOFq\/gjRRqxrjD45HlE+k7QQrUFTGgi4Y1MLWPgesx5w\/mXjySRPs0887ANq+W6EmJ+oYwtG9HCdmFWnXnHR8PvDIEkkjYMelshcKmFY8TyTuvbfUP3\/n6l4c8Pgk\/6ceUUwAPiN3tUy6DGy+GWjyYjjkb0cklNhKtrNNznKnLNynZ4aBz7SMCjNN\/fk3pTh5pyL9I28y4PPZX8Y2jCWQth7jceKeLYIKXjobveG\/m8kQwOYuHvSzommVv4QGXlz\/tIkFppPlm8Te+pfnqvXtJHeS0tkeVgocfKgnwwTCtJnTIN6QJXjDri0A3DJKdDR761SiNWP17ISiRGIsCQ4tAewJ7HrEyMqP+UQMAAzLA8SIuYqsOFHB5Hzx5v8rKvmM6JvmIejWhJnRA+bFbpTqrvoVIn2Ocp7bK+lVVeAiGBeeZhe\/56WGAw5avJkoekeudnkUY09Bc2kGPNTHi6+Jyo9KA0UiMyH5DOipH1IQUdFuu7fE+pR5JAHpiv6hKt6hBwFtdu3RyXY942r9ChqF8hASqnIHwwtFZU3\/T7CM1wau4Me2ixT1g3jghpXuoUx4BJ7MbRvetcA7XHtKx3jcfycEP\/kGHh6GTm5k40PBQe56OHXmPzYsQsDJpjV2P9Ok9sJueb83\/mAS\/Q7H4hkH9ds2heFHnHEIYoPlau3+0jRYiyey0UalNoYwYCOSI7eOuRusxH72WxjOf6ET1SxDVzu4zx4O\/BZSm2+EAivnLuPb4\/PAfAENHO7ngmO4g9umX4fWql4f8NF+w5INAcJzgCAyZdDklhhc\/VjzPcOnp0PdQ5\/4dV1h1dOKQnjccGr2Q8PHyVDSPD\/xQeB9KI+kw\/sfwLq5bmAgiuCP\/KsApGgjWJviZslyktKG2O1vm++ioPi\/QtMMNrEtPzEYq+qce64au6RFtFOpLPI93Mk8uJeejwz\/VIn+vNS6vlHjpc9M8i1HkPfB8l27rVBaPuZmI6S+ra0BqjOqyb6nt8vIRx4xa2Rti8rB7r8\/qmtFsooKH1ABIvMHWI25cbt\/7cLPadst62duRpj7hYyc8slIV1co3H8tsg82Xt2pf9im3cPHcck7RV1tvDPBxg9NC8ZhOTq6T+OzxftaRWeRPb7j\/8MT7nxTcTdV1YVmbNUtuMOjzHI0FqRw8NN6FxdW4ImqaZuCAP3SByxQwyoR2BeiMePsL7yOxXix556SREmqbnqHn7RShuAlZduq9vbeU6Q+bTSmyy+Ae0OSC6UBDeKuRcjJF83ASp5dy4cOMznmurrNbvC7TyqBLbeEzNazw26MYbse6Tk3mpldT3w0g15jGTmcJ9vw\/QNiZ1CH8blDaCDUJYIRyBWjPR12xcY1NPjZL6aH61ty\/K9CtfHkkC1thPQp6JxAPi4RdAl9OIAaDMn8BYL0xUjhVa3KAczua4h16e\/41HgkiFWM4Xtm6Sff8QBBLjEPPYRq5vI1Dnjyet5OmRwmfRSc3t1Jv7\/aBsCt8\/WlYmcdCSFmG8gL1fSBGxUNjzPDKtmgckjVgfk288Ft4wA6iTmmvCB4\/g30pRftCs2a1+\/aQ7GrqRqBmZsP7hu7RRq2zmDcpqpH\/iTSW3KvcbepNnDF8yJjbF+eFLfiQJBQuk2ey12hQSWtRjv\/NmHs+QOmEACs4l6ccKxCKJ55p9PZKknqiXMD7CbIVbnPs9l6olHYdWVdh2BZG0UjA5vcKoldSp4X71SE2E9eeWiogxML8M1DYV0PeEwa\/8ZjMcjwGanUGNx8KNwYf2pHtCeByRYo+E8fu6xlbXhL5JLRqW9p5+n+Dl9Dl+ERgnPVBetG+srp1rkKX+J3zBbILUKenjwnM8UqR9ynN\/k5JGHxOQKGy\/lHD44\/kUkt+gjsFycawZN\/gB6MzrPQjnHilSK6luyODCOwzzuuRugVACuGDLc5xhhdUj1fO0Pf4cFis91+K1XR46mAkbmtIWgqqm85zZ1aK1gBZKg7JgurjEvH5Zjyqh2mVQZUe4WX9kfkWIHBup08N0kDWdl842ArZA2m6ED5zNp43yCXmabHuzR7SvY5N0aZWLfa2w\/y3R4KX5GvyRIrQJ8X2AuF4xMX0AK96zlNBvEsX35XmxXtvnobLtUO4J+Z8eSZIHZrCB\/SZX7Peplyy7ZbCAz+t+UY+G\/ipMK7E5RBpNA\/q16NWS\/sQ8hdBvGDB8ZHg+hAbtgDwGmdJsrv54N0UU+WMfFdKKbbVQ\/sbkwbhAQSNH94nk\/RHZ1066eX5FPdJrvUns98N0oZok3C9kipTgTqKv97Qs5BXzg8Pm+4bntQp9JIk01A6ejzwDR75HNVXoCoSbCwCtY79apL8W3red9LZ1zCNNCDA2Yj2Pb9r77m1HmbQOfixXfGJhonKv\/YYACEGpMK3kF\/NayS5+Th4Hc0kYNOV8LP4bXFN3L1StNRM9NQjH768Ra4\/+yeFxjxoBODDInGMVRJu2U3NpuPoh0J1OVsyuUKu6lfK6EMoYNoqet1+irw7TRraAXV3gK53khUXDn+M78onkFS0QYO489rzzG1M\/3LKxPPTUjSv1KyDxa8T6OK9lGVytst5NxLYurBbzIYjhZp+p2oHVQWFDiFSyfrBlA6ViifPlr+HhlAaN0vMpJbo2RHOspLWSrngtjC+bb3mDVeYDXv4cUsXG2FgxB7OF\/B4Gy3A\/LJ5Oqm\/I0wjT1qWbmdvzfjobcQhhh3kIyRweUoHn6LKTlslNoCWYzKxkrKTTY4Vr1+coSGzfI1u\/G5rOaPFqpA7tn\/dIoX69OZ8qcQUJQoXjJcRFSwQ61jf49FNYSug35xfe9HCViuGvUfdKmVyrrP6rk+piu2xa7bK6VVyARL0EuJ83+W13RrWNY1l08gtmflDZoKB5uTQfj5TU1vK5nNtR9MKttWll4U7Sd+2yjrtl9V\/TmX7ew4kFxz\/tpPPJ+nxJode04lKl5l72yfvJXgD1uABm\/zzOtN4a+rm4dXkr0D3bn4TnQzaUhv9tZtzcyvhiYWU\/FhAWhotPWJhG6BEv4FW3HFO4ktI\/CheaifpMu6wO7aTmuWd8d36SHBHqm4DV0ZvZtdJ8DqxaSa8O\/WMZmBYx1Q3TRoT8m4m+ysEMne87RwJfK83Hy7LZmuD5GOyfh2ANOC5kito\/06voe6497aDZi49fJtdNwb4NupiXY1F4c9KWxSnpIF8v6X5XBO6Xxcj3T\/bPylkXQmgAcsvfv1gosWrJ57E+87rTD5J9Lz5h2ex1px88O1nRV\/Db8n02x4Tx85RapM7I+\/f2mczla+slPebHhit0mBecwzojfRi6GeLnWhetz9RJoK8Zq1aeM5p3MVHUnwzPiaxFqZQLL3Sc219sJmolcODzVy+lS4aUQj7qRHrv7mcLD1gjeTn5IAMtMmC48PtNFF17k2A\/jmEV9QOsf06H5OEFubTJTeRJ+Y48ogTFgsGAOdXJzG5MqPA8D5VMjZrn9DL91W5mjsOVwEzceow5t52af6XMr5Oa\/+tmejsEfe1UH0fgbUN00NOpW\/YTOESK1WN9jdQFO07seqzPx\/9vxmqHLGJ7TFT1RW+Whp\/TyG3jeOEkSjS7FX1lp6w\/QYVQJ9Xv2DhuJnGNYGbcuLJwUq+iPzE9vmxeuedDJUTQ8xOYd9bNzG56QrFPPV5ySEiDxARvOuSWF6y0vPuFuYzr5s+DcM98FprSbr\/7qkHHxL3JlpMO+i2KcPKfP6aE+ts8mZgP84dVJpOVZz++majLQp\/Vmzb59pX0x2mX1Q7hQ\/bULAFKp15S9TCtwMbgqOUKxB9sacZLNYO+m5oWmpEJdOUpB0n\/Y+lcn+nrcDs6md7Yraj3hpxOXuqRPh\/NKnWqidopRfCp+UOf2+U50nl+YsROLEotfQmmG4x3UDuNmc7nHOMi9GfkfwsmjW5qPtPN9OVX\/\/ig2XZZtZyPeMvlJy8TLd1O9L2dVJ\/bTdV787n8B1NoyFYPWpL6TaLO0VxDAIKdHjRkx8p8Mj1JK8W6G75\/xojUj0dqov+DTgmEaVC\/ODYTfeFCzKS\/cNIMsKj+IVnTeT6UrerrdAOThgHZpUdsjqMo7I\/kBvbNjSOeLl0cQhK7cCDgt1AQEZ7nQZLHdTP9d93UHN9JzZ3cG\/fLv5JnLOvrZsbMj8FpQwTHtc2MW96qXqYvbJTVm8KTwcvFYmNrnK2JSIzgfDoJODy5bzHSzWy9Lx0N+D2sFUuTq\/7Y9jq2Wts97z6Pthyb6g\/2KuZqrgN\/jubaLLaQ5W9cWfgpNdI+tsFiy790Quhmpjw1ql4SnuvBEsA3oW\/KRhqMCLTP\/bLAhFpYxkHRkjV4wVrLp5X8vr7uGHGkE90QeeXdsZpzXX6hpVq0dbnhQ2SAwdsbruaYLHweBjG8Zp0ISsSQEF7n96kWh7\/ivyd\/mDfFZFWP9B6tQn8WASiCVupmWlqSSnCDgU67ylTf1MnMym66Z4SSIg2\/+HBdouXKOvPX1kzMx9DcYgZG+mt8RuSYiXjpicuYiF+Uz0pq1Q1nHEyeXeCgaCm0fSNSO+jgwGdwbBMklFSI63O8dmTZ73czfSaax5vkXM+GXL6eoE9v1PxrJ9U\/apf1nfb+7PUSXOtmZl031f8+MnLAg\/ZMAfhIvXZg1vKO7QI03E8HQXjnU0Y+O5EnlAfsE6aV2CzMUt8aRuGrK5Y8x\/OO+\/1scFUKavoN137hhJVc\/NzwwXgispE5IjI0BZ0HbKR07mH300ZBBYqcN1LjEshwUeVmYm7xEVR+c1DI304Ysweg5IHIGaUDn9ir6E92U3MZ98Lk4HpYgLqpWd9J9bv94nTqkUNP3Thm3jczrt77kyNsf2P8YQAG3m\/lWglmUVgu5l9xiWqn+j7RtNHwS\/3v1iJ9RDOxJYXVkn4398SztfvpV3LsVMVsqgUtXoiQMunrkboBF0UaYKe6581GJq977j3P\/7TuCLVsZrzwwalR89+nHObqqCtLVC\/TH6eXENqaRYoBzr13M72xVzHvKh\/24BSFoPkG+bDtVN\/toa9YGPjG+Mj9RTzHnDEorbSg9edonMLxJ+8zY7IvUeG+vxAiIPOyvlTMwODhOd9lHrijFulP5s0mNhttnGvsjDSjwp\/5goU539dqKXsudbrHEIcvv5XoO\/M5vvsrsC8yiAk8iXnsJm6nrG9vl03SyebzT7Vi9YbpMXM3\/ZTgdaZ\/b79DvVDmzr9OOjrSrU++j\/RPGpG6h0opJp2vkeVfj1BzoH3HGWauYaFb7WiDOI4AI5pG0iOR\/h6f0xybNiHeXMTiYSHxYATapkyPmTv8NU+NmRvyTd7amXl1LzPHdVJ9L\/fvUyu9itnSrRT+K894cX8l35JUxo5fhEvqh34\/oLBew7KQQ+Lgewh7ocDfWzv+XD51GbZfEcx9pKZDzD3H2HekJsLsxy+EVCN1TP7BMfE6qbmlevSBfYYIqd\/N5kq9\/GZ9EuFCmvfgaiV1hkUm9V\/aDh\/F7rdPyWlf95KlJ+0DFSK03Uxv834t\/9IpsZvqr4TAEi8sYKCLXLRYNlnho7nBUCupn4pp665TuLnKeheDkDYejUhl7Me\/zUj3oYO1kqpuWY3mExoaoRdyJXdSBCKTPNFV34O5Hg2fwjl5PpInzhMiFC2dkBR9ROpKSa0E2qoRqc4gtk7Lw6yWd1N9h38uaOZupjud1Myr+b6\/Uh0QhLTcZfp2vxDX46V\/0qvM18JYKeF5XB351WEAlc2XrIbvjufD+UKNzWbLYOdctMe8oDWZNOEKKlFnm\/Odl\/QGTWNznfP3tQiXufYpiEcX8f3cC5vzj2GqyAM32Nf6vw+MnRFgRa9i1nPe\/sTNzI2kgPzC0S4XDt280iyfqujPkS\/kM6K7rqRx3gCsx\/oWz67p9rmvX43VL1Wz\/F1EQcl1oyXpUCHXU9Lv5hqcGXgqzCaNWM2wqIm1U9SvkA6FsdoGiTrH+JJK8vahpYMGb5fNLXP3AZhi\/gIocYZI3+XbvIJMmhotfG1mvHAknRb4TIoNUn1kJzN3eY3M5Otl+uQwbXN\/pB4Nv0Ush+Bd9rVwUFkl8Em3oLuA586QXgmhMCFvkvcXr4CqGMGay5vSZAMYQxtWDPXRXI9ZcdCzO0Nc65zprE4L960WzVt5sGFpXH\/fAZVCtPxkErGfW41v8yYTA8X7ROGLYsJT6JA\/177krCOe\/qRexRzFJBQT0WqWuycz871OdJD4sgha75ITbboFE7iTmsvgNpbUT6SlcbkffBJYi9SmUJtJd4hg0XEuRp9gr5no17cSfSOMmuQbW4m+gQFGD6mNh1lkEZqQNJ0lCrSTlkg8QPuwsguSN\/\/82MRFCYAvkquO1Q6fxuGanSV0kaR4UvPcyYq+FROcwW9brc51EmQB6GU66yOW3DPrZOaLUOj4\/fZHxPyP9NX++fnNxjz0LX5BcdDcvkvFPUHqkDsdLVc7eY3OMdxr2MaWQGIzUZvmmdL9klh9eR4a\/JgSa7qplpiFe5jO+tawaqM9vuz322V9Q960kVxmpu8mnxqeOyRB62vfku63UCGwlV+x2UTr30+oG5OmVzGX8hsMYBYBfD58z3A\/aGy5pr4Gjawf6\/vTkhJhUjGo+NdODPUP884RD2MG9rWw3KMznRF6DnuiN6wNAlIQ2gPuh097ZsycQ\/S1Whr6W65VglMl\/TY5d6ROCNNvITKLBbAZ6x10GvTfyzGJej\/mOPfOuWyBhIW5AsEM3SJPDUtWIDwHxAPdzBaicDzH9DIAInMBuf2RPAFh+O7Jbvj9qiV1sh8bXA+T3scavEgddS6txLnEoovVxlnX6B3BfWFcuiqu\/ru1BTd7KpbHjEBvMqg2WMy94lzHBLvv8FjeR+6bSANodwA3eB4o5yve7iO90nKDSpXggbNZLLW6NiSE35uc9Q39O53MRDJpMZftwNtKjtfvEwZoIFjPl5uJhnMVQUgrMf88M2biqbHCd89ZbheAtTlOpVqktqHN\/LNqxHN+nI\/ASw\/dRN\/KBPZ0Me2yuRQoZDNWVXeeFaSROB\/PDFRaqO2BUHoNDEijFs\/1FUI2ezN5xdBfTI9hfeiRsAukVEIFZZlsFhwxx9nN7\/r\/Ezcgz+zNalnIM\/3VQw\/d058eJCzi7XLQ\/iZ8r4m+3vuv+diHpH+Ke2Kaq5E63lk4885HmhNAR7gvmGoZyznXTjT8iH53uO9jQtAArHDz8riuARUR1XDfiaJ5NRMkH2ySyGO8Zz6vGun3eEhg3090UVWE\/GDex5EXw365RmcLCTW4vYrZyu8wyJ3V8B16EfF9u6yPmKyYSyYrZiuYbz5D0xDwCRcOJlh4bV7Iy\/Yy885OqtdtXlW4ia7x\/jsx\/1OznntAS5PS6caFl9WLhRfOBbz0p646VXK80\/ztc8m1krqLFBR1riwumNhYAU0XYT2z8pTHdxPzokYy\/OpGrIWVREzb1Bwf5kIbif7c1mMKN7bL5rTJzPzbIA4tACZhBNu9r3s5Dznjdll\/b7JiLpqsmAuasZ0Q561Y8jTMam\/JWG2sJ2r7ye5Yi3S\/JWn+3UJu0N+vpE71+zHRxFwO+mghLAhYd\/kgFQoBBg5cAL8vJn8j0Vt9ENLvi9UBvxaQzvDcj2pxhHZXz+T6zLik+e0QtPl98eVaib4oz6rIJpo6Z+4SyIFZ0pvaTvve0YlsTpW8YLu850thIensR6tQpFU2H8WM9UGqXsVsDov9Sb1ccfIyGbD4QpeftAzOJiEMABGGFma1Rhu2y3rKa3w0xGRm3tJN9Rntsr6Hcwvgww60S8m7evQY0k5sFwZfpMAg9JjcaqQ2X0Y+t6heAqiD5+eKGO4SJpNE3yNtV0rD76JIgq71cg2x\/nfSQb7oweHM+xFVrtGVMO5iAZZIsgWW3NbN9HHdzPyzr+LBVO5lZjuFF9yvuEqOspcgm39G\/BYaPqScocill5mrfP64l+kdtE313y8krWQwqk7GQ6K3eyw+zynUwtzHoNiHbw07z\/KTdJGklc6bvy9cbDlwke\/nFevegwkKeliFlVkCIjnTBG1GuV+476ByL\/\/AB9G+1IqWUof9+yZ2pA7vf+8hlbnzSS1pjhMpL5VvP+XxndQIKITBy4uhvC80uYmw8gJDLeuahF\/pB3YrgdvLfKlXKQgksiedFdU3uqm+gsHKvUFCxwQCzuncjO02Wqw\/v\/WYpdX1y60f2Ur06ZilDsQ\/i1aAmJ1BXCv1te9paNlGpC+BV4xgmfW99XfkHGV9UyPWt0Ocb4s67ARwgUTxzyn1PH9NYaZeVG9w6Ked3vqQOIRrLub+Ph+8NFbE4R8o\/Pr0qH73xpWFw2gZy7kI6jUifW+YCnTBpxvXugg4cvbRS59BZNo\/b87dSuw1LySOHmhTvqabzb73OQglzyXU1iwWFNGE53Mtd\/ZIK7G5ANg8ltOJku2WGI4v\/i+ppZL6Qbjvo1ImRvQH9wg0uAQ4ec5wX5p3kzbJN5OSaiMh256fNurGhSeT5vARbUHjlPWd3vTDPCMvmM8h+1ahtZE9YYxe1sdLdTfVHQat889uG0SAjnnL74fmvlCpxOr6fCUW1kAv0yW4jMV\/ljSNvRaeB0G7Tlmv7lXUm6gJ5hg0F+V83czQFnUJiDJpHeNSUNV06TNakfmrq350kFgnExX9BzwHiQCXrC+GyW7RVvpm23bEMn0y8ZtxQYI3MgESfZGU0SVCYn7PNT8+iPv5lNwnRRipeVcnNafyTJnsEvQB6DFm88wQ8k+Omm\/kI7Ecy\/MJmTKddXD7elcdFkqrrD\/BM\/QmdSc1Pz51L9HdWqz\/17tQ4SbuRqQv6bdjKRZe6Is3+N5yiakL8pqSNOcgl4trog49hPhSV90qqwtCQBIbz0UQcMX5QclHlcDeNzlqduYnEAO3l5k7wuikrRBx9ZfBvvzfrnzDe0T3wiZkXvvWojnuIvKB+dXRv7h6vHCr0HUl\/WKCKx7X263ojetK6tl81ymbv904XvjC1Kh+G9BA+Imhr8XPZGDw4jAPw651wPp6FTPeSc1uMT8dBSrnbpf1fZ2yPnOyYt66dXx+wfzaww6Q4BzaQO7DVUrVIv09\/ua5EkUmEMYiAwlBPdYfopqJZm1ozmpJfdgSoJu7OIbcLOkeGaBFtYx+xzxzm5qzDdRp0SK5WhuRnhfIQmZWmWf2KuZ9nVRPMKg51uZY7USmXUk300fwu\/4YItxYAUxknhHX6CO2QE+7WeF\/ZlYu\/ZzPx5PmCt9BLzMz9JEOr8OLpOSS+S1J\/WYtvzm0XrWkzgy1sCiXnBWIABLyAb3+WPQwy1xjcRSLRbvN\/21bMaavy6O\/HhUCVK+V6E08hLzpzEOrFoc\/EO7PQMtrajZA62is9blUBH+3AxyraN\/U3OWJ2fDbyAcOov6U1ToyHwnP56UemddOjpq7fJS5m+mTPX\/WRKRWcI3iz9oJ2yAKvCEaPqhXMS0mWi8zuzuZEUZMutP3UnNUN9O7GOSirUbtxIVGt1PR35msLAxkoKoGuhyOY+MeN0TPxBx9HgOGCYZvh4lei5RtbBbrM68mmBWbz2IeMlGAQZJPphywmZjDhcgvVvcwwerx8Fu5H0xkFgBSOb5O2k2ImwZpSS9To4UXYlV0U73DxQfkOu0Co3cAaDnpmwf9Flq5WzHrsRxkn7I+k1Qh7kQn1RfzPK3fLGgpKZin5ribmQbnFSto1FxdW6BxOhH2QVrYL9a+zxbWhUw2p4Ul0Jboq\/Zo8B0NvzSfVmJjkeZaQl5yZKI4fATXP0\/5eMxCrPu0P48a4YEODgaIaTcvGMBAAm6Xn2xzWnUOy9w\/xjMveC1tfV\/x3xDpPjhA+0p+M9G3Mnjmn1HO+Q7I0Hhx+Eetsun7MOR0+SwMWIimC2qMp1cue\/bUqDXfu5XCe3uZvp5rwHT0Exe4ZSczH8m37QjFD7ZGrF\/HAuiBLAwcWoTig9citVM0amL+DdOc9iAcRyrHBo\/Mc4nuO1\/4SPLLUokUq59aJk7VXnPYIb9GJ0OpYIrUFfwmPZD9RPCLBrloAmqHHbAwhpkcfg8CgtRcYxc+q5HdRL64k9mo9wWrCmbjaKEfoYUAXfxzd4\/OTJ31aCmKJTqZPjaI\/t+2YcVcWsqL5MtzLUn9xnsL2+OA7vN4eD\/G8mkipOqx1DkFZIth1GVhLAR3qVUeHHyVMVx6FLFy1CL1Lwyi\/MN0L\/WufOS3XlKn5eGSbNM2knhVPm0ExBBMqp9MVvvqu31DNImcJup6m+edf04xHR0FayjUgKJ1eQGSwnKk717ADW87dm6gsRHEaToeKS+QgHczs4GXhqbpm5WZuaSTmvfn\/WIv+FWY0b3MrCI9AVaayimeo\/89MemK6h\/wu5jAaFRfTojpKfcdq9uqJXVFL136DLSnxAciNS245FTfV4\/UNCkgb6oC5sDXpZGYnCfoLcz7k2dcHnpqNx7+k5kxs4WijKnRwhsWYpnAR+9m+gssXs5FEF+Uhbub6ROJS4T7ox3zAShZ5CPz2nC\/ZllLOxisDtyyvAZE6tH8lqR+s3XTesq3YyFSH1akuVjEDkggwvO5stQ9MhiMU97vRFA4gfQ7Ig4Y95MVc++GFfNZMh+RIs2XU3PToCieXenmd7mfKA79O5M330mAzU22PfquSkWRw7d67VstqhH\/Pfm\/Qeb4XDG7mdcqtFpS7+fF8\/DxW\/LEeEgrUn9vNd7cSwQi6ZkcCf50UvMlXpSLntoKnMzc0kn1507LlTzmpRarN5PH5VmIeR4N\/5P1gdXlVovZFFWttPRZcGdRBrd5VeGCkIDAYZyvqEXqJAJ8mKO2ObXaRaCmFqmL6\/F8xpF6Yt6\/dXXhcia77QhoXmuthn7OWkAn9Xj4E\/j2F65xEMlyYV4FUl4IwnUy84NeRe\/sR7lXU3Gld\/geTggZCjE93eLNZJGxM4DWqBWrL\/LeeU8851quCV5IH5zfxCoJaGFrJXWOXxz7ll5uQiL06hJLLqdc+lVaOZMe7HR+f\/4vRSJlvXVQ\/vwRJZhoeW3K\/61fpTaE+4IEapXVtXn0Dpv1nfdMG7XKQ8Kk4CcSLVDwhX1Npm2TorcPWkAk8hzNv4aJ0vC7\/OQVDl9naoGh3bzSvK+bFt4AzpfPmBgMahYWCciU9TZ+Dx+4WzEbmCwEqJhonK9b0ZUwkDNISEP5Ag60ES+afDF0t0w6fNzpUTM9M252gmNmoQDNdPXx87WFF3xKD0mlK0CrbD7rQSHkh\/PQSC8ev+0agF8zNSrliOu5fo5pJupW3qszR4V6h4m4L\/ZONHcvM6cRjMIiEovEuhInnrlc\/0G9uEzRlpPcMZ9z70TJORbk2\/Ro4c2bVhbe4wNYwE+ZeG4S7wIg5H+r35J0wLu3aTbd9PsSeJo\/jmxDgDyzi6SVIEbMjVEmvWj7SE+GwVBKSluJvjRvVXitDRl8eP5HlNRK6rN2xZ\/\/8HhpvYq+G2xuuH+1qJL8asWG9uIBhMXqXuCy8maSj1CH4H7yfoOCGWyysMRzHFvrjtb\/7icbL71atDlBgiiY0mgGtlaiawRh8AM7qXnXxpUmmho1n6G2tllW\/4JWEZchsS8JeCWBJf87CwkLA60ubUTWPNeTtnVSTF79PTSw3\/eWMw55Iqs35jOmHn4vtc8AShqJebUEshL9d62yfnGrpP68Aw3s+LLfB2nFpLTlh\/p51Xj4Zf19o+G\/IVjTSdWzpeCBtNzIc3+VQXvTWTZwJ9eJWVzRxXaqL2Qgg\/mGkvf60w8eVBgwULqpeauHTXrIYa9iLqPvLhOZCqaNY4VS0y+gJVOATsi\/g+lxXC9LTkdHSdwXMacr5k4AFf53fOwj\/+75TasU5vznkJnFj6VqSa3038\/tp98h1uCAMWVNaZtq87IhGv4bp3Hn7cv4sPiDuXYujxiZGFlC7nCPWkl\/k9WirT31Ui8uGegvMJl5WPlQPYJvHZpIaLtOqnf6VdO1SbkkT3rGJqtypK5kArAvDZwxw3wOtBpZ3qn1RSFss1Qy7liZYM5UDqWd6q8wANiX84vWzfQR+4utFqz0cTY404hVB+2K6cjEvnw11UXm5e1Uf7CdqqObsT6jWVYXNGJ1tw+Ioa1AfRGc2v4ju\/F\/PsNC8LlaFjT+xgTO78u9YbIL+snGDO5olfWmZqJ\/1E71D9Gyk5XhF4xgDaw+8Dcmlus\/ImILgwfPTSyrkulrwb0JjJrdTK\/murxLIICOAf2D6NghATg3ubgPIaV3wT+odzkPz65XMTfSsI3PWYhaA5B3bKTLaiXVD6ASmJRiBaeFGYu8+2bQAHxuX9Ue5F9LXKdi7qrlUlzUUA9SThKFz8wtj6imeazYrbK+WIIFucnoVjjpS+sFU6cZ6\/PtSxnwQDJzV56mBG3UiPQWH+Wb0762DhaBHmZvK2U9try\/TFKgephVkhIIBhBgiPyDd3hXmkKLSFFDqk4V7eyaWKFdyMf6ffYlzl\/t+JWa1dlXWBGM65TNW7pl\/QU0cTNRhwPGoFFcPdJfgQ6WMr9GpD9HmxUGM5SzgC5qbCX9Kf5PhBxyffaXz\/ks1p9i33qiPs1xHM95OB+snTB+gIbDjCXl1Iz1d0FZ9SqFQ9HQXB+5ZD+YXZpkjxz93qSV6HdPVswd3DsTjQWmleiij3JLcQqN13OmsIwvh+5CeB4cyyJC72kgu3xOD18HR523MVFtI7d5NETrmNh+TDmA0R7snFiDonByaSXGiTtmfmzh8MJvt8v68kGmtFNC\/YKWh1WkRDDWe1QOsZHD7VXMzkZxfkCCQZLPmfkH6PwEoY0JpR6bd4WTk9RMByZCt\/KtWXMoKZQ9IppsrlXoTpgaiO7yspm4YjLleJIoK8M88y+KewIr3IjVMXxv0VRm0g06lyYxZ5931P1rYEWtbj3W0oi7H+3NPacHKpjB8FuFn2EVhCb5zyKkpPwEFrBHNH+B3h8B5NPNzDTvgOfIeOik+gwf7CPN5QOVMpZciii\/sAOY4R2wkHg+MCLsM4FmDbctgQ+PVGP11yGWmn9lwc51y0RoMDAorcTG51VXptnfP9av8QHN\/P5i5ueakT8sgvnqIIwDL9J3AfRSBZWUmXsHmTiuXcgeSfUzK8+mYGG7DyR47VsrzdXFEnwatOqyCeY1shOQ1hgcKw8w2TOdhMAxjWnJAGLyoq2ZuOceNfSsXqYvt36qke87ZcG7PhA+JJpoTXIdzoQW4D3AiqnRwk9bsT5DeK9i9VMCb81ETzZjfXEj1psbsd7aiNX1wDUpesBtwPRtJnp3Pdb3zYyZO+uxPqWTLX3W9Hihwjvit\/AXG7G+rxnr3Y1Y3dqI1cWNWF1Wj9UNlFUSOGMRbMSaaHW3XlLr5fdL+sx2Wf9kctT8BIQUpYv0GuZ9SKT6fmpgLwA8OqnteM\/kdOm29tqRp\/0+TCe4QsRUeH+ObXNg5VgrUWczgWTxj9QKPquVVGeQhcdksuAN9Xx\/fD1SG0LzWIKdQcCrv19xmRqUVmJzjKk3eCvAS8gwmt8fLHh75LkD04o\/N6HNRj3W\/ZwsGxNMwvaxauXJvuqxqtrv9pxoomFzq5gcE83vUyOVRKm+1xfQOzjj1KAXJmYTq3Gk\/0iCbMfZAdEqa2lNifk\/OWY+vXHcjE6OFj5FFJHPe5n+0MyYOYG6V9Bd1je2HFZoTQAfzYA\/+IEIhQYzY+aajSvNrQ1HTwoYo1XW38b\/Y\/FAO+CvdlJ9fSPSnyRtgdaAWhZiARvMGj6I46fHzftppLX5mMILwUTXS\/oTs\/U\/lJQU+02Pm7\/g\/zPj+oOkizDZmdxgvCEGwCckqNSM1TeI7OMj8+yYPBKkS+dSgDzLLccU7pgaNdvIy8+7sfspmPnWDLaLYq+iN6\/9ztN+n7zp9Cgc0+a4RtmmE0GiTVb0V2fGzSh5dT4DKUeAjXOIVTWiDoUidyF3ykbS1Un+9wlsMWlDjW21v3pDeJ1Irai\/Zt2x+ef0UWZau4T7t9cIeeN2KvHC\/V284Zr9jZc8ZMIE7o3ayhReMiuhaK2K2U1rinBfyLXDiRhuEiF0rT1CIZIqkMgAlGF9X0vQhpDf89HE\/MYAxD+pR+rv8X\/4nXZZXwngAI1H2RcD1K\/yzVi187m6c4rPJLB1M+Y5VsLUqLkjn4N8IHLY24b+H9FtD2648Fjzcm8iNkvqH9GYBJg6mTkc1FQvVX9OszGKENiHgdtLCx+uZUslgENsAfCHPz8uA6CKkK4mLINspMMv3Thm3ukL6OlZNTVqjmZBwNXopvo4SgApEdzgG4hV9B910qXiQ\/ZWL33Gmm\/o3zns0PnNrx+I0JiNQQ6aSgKDmb4wX8AAxqCd6it8gI7ySV8WSXDN+9VQNqHB67G6cBCYB20PvVI4PiECDLWwg2CeHxIQIAulleS8vs44GX51eAzZBca9N\/XFfbOLQJ\/\/7GETVvFGrLdQiI6fSMkanMH5yiF5+GV9WzgRwxuXBxYEKLx44L5f8dC+3UzfGxZX1yPdkAc3YAJPjZr7mrH5ciPWl7iI5X1oGTku1h8CjBHuL7C+RMnKLr9fUs8mysn1sfUq5qYwbfFApbpi+G2XHL\/0+nrSrxg6lt+eGjV3Y3HIPiXzt9Qi8\/9mbFLqeJuxSrFqmon+zgXHFu5pxrpD1LqTmQ9QsYR2Bjy\/aeXSPsCAheriY5e+4MTvD\/0uKRHBFEfqX8jhdlJ93QVrCjd4hspWoqtEq6uRZVmcGjVfXHeUHej1RC3H\/KRonwCSfBbr715w7NKr4Z32v\/dAhTQemQEmnXNTzqcTpf++HqsfurJIeVdoTGue2i4UkKxzHFst0rVaSR85yCpjsz7rXApMijpyWlgAQgMi5LUBPaX95hBeF5+SQ9wxiSfHzEcbsfpBM9HH9iq6yjU+7BNYMLL7wfOLyeI057wb5m8eZi2a31EdQRvlfQ7ZN8jVDTJ\/\/MZxtUhfRddCtK\/4zUXVL2KoRWokbxG4v4\/ie2pwe5m+yqeaJivmekoe\/fFeyJPmP9ubwPnMOS2WWq9x4BPpiYwGkuKCwDxvxLpCSSF+MH\/XSqpCwQLFAo0jDn4SAT40JamwRjT8zslRc6NNwdh61EasTmXSTY7qyxnszcR8ht+mlJAFCqsCc5mFgwHVycw1tiDCtmWRa470d7BQCB7KYhupy4RwINKTLILiXw\/I2y8kLEIQA+Y\/X79C\/ePUqNnJJMaMhWTe0wY1Iv2T0NJiUbcoLvMxfzx4eN4hCw3uGrS6+VQlm3fDwk6LtWi4EWphBwi5atAkgwxgUFpJrskW6+y1jhkhAJx3MR+R4vO3gyYZgxa60UGIpX7D5uCh0\/MGRFGwz3kLmc\/8HowUHjjQiNSPw\/M3Ev02oZcJIpAu9\/g6VtBOqrdsWYXZbHONE8v3zA8yaVqJPj\/sLbsv4TrI4Tpal2PBFVPwzuRgQXPX0C\/jq0fqx0zgmmu8RTtRYdVwBfyNRH+S50t6qxHpUXzmK04RxgvBadPci8lHzTCTlGAcWtYT6DVjfYPQ8bja30asLuf8lGv2rzlW28QvdL2mgGxasnM9RTzg8pMP4j3tkStfSPDJp8bMtkHWDDW0aGJ+x0apbYoGlhNbKmnfFwu0xFOSOcuN99BKzIzl4tI8X3n\/+bHBZgOhc8goFjfOF8J6bWBMS0P4UPhNFrJBEWYpF62Y3XnivEel4KfhMwwCV\/i0UTWao3Dx4tgY+8Ex9nXat6+peYho1oVeEBvfURRBm9JBdZmA+T3ax67mtstdM9Fn8oIl8T5qbs83I0do7Dw1Znbj83szbn+kVrJw0GtPO1iKEQhcERVm4uLzYgoLeXus\/72VmrcKzrqsfwTyibYopIlaZbX++jMOZnAL7FC6A2Z6CxH8VmK+tXX10k3eVaBi6aLjl26CT5rz9ir61lZi8+dy3jMO5vpdlF6tuO40qVqSaG4rUR\/henkfaEaeEdq+HqsZt\/+JLC6dVN+ZL1LZm3AfLDSg2AZN4vUj6lAmCAu8TTlafuZWWa\/jefOZLO4DWC8moqE\/I9PhKs\/2GBN+I72IhRcqDzRr6I7ZQoc5buxQABsNtCodaKQeq\/ajQsPuTaSscEAYnQ3TrZno7YNMFLROmAdkIuO\/5vq3nkFeL3\/ecOMF2kS7ha+Bcd60qvBBuKjWul49vbJ57caV5tO+WwDtORggDAB86BBv66Uem7diYvGCWe1hNMzvszfZUFL\/vWll4XiCU\/wNOGLrMYU1U6P6O2cfvuSQdqoPQxuI356Z5Zi6G1fpt4cDdmZUf3zTKtPA7z3ssAN+pVcxILaEkRIBa97N9PeozfafNWL1rV7FSP4RX27rMYVqKzVCE2M7L+iRyUy\/vjVqntPJzLE8B557OzPvXHuEft7MmFkxPWZWQVLAMQTUth279JR1K\/Z8RnuTWqR7c3EF4e9+VX4f+jtZM9o4s9RIDXk3U\/8h76ts\/e7TDi88eWrMvHN61HzAY6Y91VJ+PIRbH3cQdGvoUwzl9qkW52iavEgtc2bu6gyoOWfjuIkVj6Iywry0XSOxQT4Im0XxDL81f5zn6A1XT+sn62P7+7j+OINMGL\/1\/WvXqKoaDX+A62FQUlHTTc1MvrzN414lpcHELO5ZmWTZQ\/RWMd8ia8o1H0BvJYJKM+Pms5OjQi4gK7XDAE94lJevaoI+tZmoE1tl9dFWOvw3nnIHWWiVb0SFQ28+6+BZMNP575AwdoEWIsXUzvSnyPmyeDnEUFCgb07w\/j4R4qkx\/Tlqm1\/2svsHEAGrbXOxc0AZFuz8fgigHvfbs0Sp9wiOxsN\/Mlkx23mfPDP6NjEJ+Q7\/HG2aT\/mEmwOI3BE+z3rJIuT8PoJzSPU9eS5yRK5vACjJnxvLJA8+eVSIZbDXmxwMcY+bs8nyPdNGSC1StTBA4LTvbl5Wf5+SGkgnGm6WHcJ2Z6DappXo3Ta4Yb93aaM+9Y1EnF1TMFmZS+pb\/YvKST3WP2Ri+d9y5ty8Usm9iSwCkVqPX+r8uu7atQf8SjNWxTvOPUTSWtwfiwSLGc+R33CTGRP38maszmnG6mhqeBux+VcQSGiFLa5+Gn8wLGSXzg1pweB6tBL1HwK3jHXcLOt1zXiuTzC\/4X9TUoOu9++d5x4Ck8kHICNop3o7z49gVz14hvsjRLPDKK57dv3If14AirAPbhhMJt4VEux4pNZ7VJ+YrraK7VrGHz6oLPILKBC2vhaO5941OXIW774W7ncs3LN\/Fi4LVuSgtJIoEIkbzO848qgQmPF5sPmbYuOBognDnKUXAkiUnoWBBIek6puoYevI\/LnDTUyYaFgilPa8869HYJeJ2sT3NvihN7JiO0TXHlxQEyv0K7euKXyI32dibFxZ2O2vU3C6kerlj1lIwBU3Yn2nj7Db9NXwP1M1BOcWhHTUt1JpBA0MFUNETAHrS8nfiiVPY1GC6I7WngLIiIYPIsDHQgTvFZoOlwN+agYz121LCtUy9kczcD6KDLBEOG8700sEGFIc+lPeD8AQfGgID2bGzRexEKjWciR5Dj2ntu1PJgIRattIXe\/TiZKTTfUu\/OBWqv78\/NVLP+7TVl7g3m4lejMLirwbNyHap0iztR1oOv9O0eoCT\/UmfkkVLVvLnuPDb9ZXVjt8C1oEEz\/UwlwnSmQQaAUIZbgghZu0y81VwT3ipVNa+iwKuQdBzljx7Gq2Z9rIBXM2h7k7XyFCYMLvV4vUylD7Ddpc0cMWn4hvlJf+KSt4PygGckYWGEstCwUoE94RkW0PX6Z8v0L9MXQuQdT6SnoL9V+Uw9DmycIXEglSRep2Z36LpvPNwPiuO6qe3y6b1wJwoBjB0eKson1JM9F17g14aSPSN9cjdQ\/PCW2DBuL5EgxjklGAz7+YqTwzQZJ514OmZDEUs+oKejK5joVnNBM9RgFFK9Gfa8bmXe1Y\/cNkVvizM77bbwr+Hr84u3TNhfs7gaX5WuCbWjNa7eJemEhUUnUyfcnZuYAjQA0I0711VC3a\/CzPwYKA7PkcRPEuz67hWvTcNAjQ4TevhRuuMTpCa9FwwWcfiaW4yH5e6tFcX678hnZul821e6NRekQJ\/EyYIINWPesXUH61Z9qokaj\/ztfyuofWh73BpEj+bhD22m+sekyIPO1KvaSKoHdYEfGZQFShkfCnfcSTf\/OgBJlQqblU\/Kmoj+SZ95tMRFuyuH+5UEnBxGobA84FUgRgXy0Nf2Jm3IB1hiVjeyNSV9A8zOGUe41Y1RqxXkuKqFFSJ9pJrVKixvBhE6RqxPqr9UQfRjcFqVJKpGrpi3zeiPW3AUQ0IjVSi1RWj9UxPF8mLu+tEek6sFSPiZbJHevtcEBNj5tNksOGS4uJ47oMNiJ1Tv7+FhLfVTCMXTCJhc\/K+cS8n3ZZV\/MNz2i\/w7FMYtBW+K1YCCxKPEMWLvLdnhSvf1xJfXRfAS0pI4z1DSDQOMa6OPPhuVynVCSV59Bs\/d\/w8Z4BMRlRFpaN5n65Gg+LQE26kDnhV7p6yZb1heJ7z4bpJh5GngKHvJ34TAPO7zcJLpVsZcqaQw\/45fOPWfon+H78Tcnh9HjhmMkxc5Q31Xxpo13Z5yfgGUSdVNesL7Pnb\/nN+cwScaRYfjKzCKq9CZMIPqpuqrf7ABir9EJBqb0Jx+D3+cbdVCNJBZLb+JvPLzi88OssHg\/sNw79ZSLb\/H8iKvwZGpFUUNO5KQsJEXKI3n0wDdoZ77fmnyMbnxN1biZzPY+9sGgxiV1OWlryENiaHDXJZMWsrEU2k9AdLRwSMn5S9OGKZRbc7Nic40IbRNFjfWxd9\/uEglU5KK3ExlhmjOWVwyNKxC8rm1sWMldc2ujKgWmjkvp0fpW06R+LdUXQ2nlkVn6TVVJWwiXPQbtOVsy0S\/fsaia6X73kBV8dU9pFvTeHgAzBSif6WHmxA36Lza+uVDDZYwS8fhVAiW6mT99bbhS3YMsxZlse3TW9Uj2FIvpOWb+xnZiPUQvcjNU4WhINibkLNJQKIvLH9VjdTRUS986zQUOx8PkoPf96kgJvsgMcERM6UjsA1TttO0O3eYIuoL\/Q5q1YfbhTVv8CTjrvVmBmUsyQr8AJBUrbXmaaDtklFT4sIK3EtMDPDxrsfrPPVX8nJF6XgGSqb+SebBZjvm+JdcBzR6O7ez6PRZGYxUKKxW\/O\/L4KFhPO5bjKZ\/JwTGcV\/kv4u4jwbw9oRu83GWOxuoBFNH\/sI0JI8yy0ArHJA4+G35I\/joHRSvTNIU7aD7yJoOyLfN3eJhOb5RW2fgqmJ\/szYMklAkBoxGYu2lhcoiAP4MWh+fNBNQJInhVi0MZ9SkF+ord5uB9FFn4h4kVTitguz7X3yEv08SdJxNilVg7vpKZNv19K\/hgILs3Bb91nfVa1AzYMeuPasj8pLZyGiJxiEHyxJqZwrM8k2APQoh6r06U0MVLr67Fuyn6UC8qE1VspR3Tnu9EvCJQdOuSbdRcSFgh1HWTundR83TNgnPRNe\/15QesKyV9mSf689eXpW6XTQ2ZucXDFgRuLjWitAPeOEDTCInJdFraHrKVoaKL6PgXnyh0lIAlJ\/vSAevFwk\/GV2ConhACeC2r2NxQEz91zpYUChnyhMSqWxXEEVvekSX7YpRYN\/xOTZyHki3uJfVaLUOol\/d38TVsTaS43SBkZ+bqFVjc276NgqlF3LIXawfcz4xIxvdCfEyQNi4pLEexBNiYd6GK1QUzyAb\/HtUxWzM71DjI3UVRvEKpZ9wyY4D4106uY0+jZm\/8NL6zeW1cuezZWxrrDC08WGtjomU\/3LTJDQYMJjnaBwBHXfdHJ6ilSQDKil9B+5aKV6ikL7P84OdeaA355UKcKtBfHcy65rnip3ji29E\/z+fNQROumpsU7ZRL6Z8f\/JyvmPl\/ZVC1a3utB2QSfugEaOsjcr0da+KxkUXBIPtc0\/c5wjABPZQxIE7xIvWlfWtiZ2Zd6\/5tnRu+lPN+zdeOMdLIIhXLUZoIrOHicOgvp3nyl3sMqllJHXZ6vefSbTxtBuJY\/1prF5q7QLGbl5AEwEPr7LdD0LNwkyFRS4p\/gN7vKkLnvLa+ShQDSM3asIBFCtP8gqByClu5VzK15s53z8hKrpWGpJnKm3fULaRRWcWCD\/qU7MMjJU6OmUY\/V2nqsjicYBZoq7GpPymfjSvNRcMDdiv6K73oo38V6zdSo2Yxm2XJM4SICVPZz9d6tqws7vZlMi09YLenkJ\/cUqdUbx8xFaJHNq8wmzwLJIKf3cisx\/0eOuFcpfJi6Yvvdsx\/fLuvvtstmBQ3GG5E+qRHpczetLDR9ET0aqRarL3pq3fwzYFJK4UmsNnpXpbpAz2iBMKb68oXMTd\/4XNyEVN8hbWRWH\/gblOiFLhyTuR6rnUxuFijiLAu9I7\/ZyTkH4KHWOp\/1cOfYnmc+QQAnLbRQ8Awsdl\/dbxaTh0xqRX1EvgtDeMEy0IsWa5sXWDXyQSlp5RiE60H\/LNQmJdxswMEIsySDqR6ptZhTvFAms\/A4u4ZfsPNLAfgAwj1oWDeOmeWNRGcM9lpJ3xw2XPN+b44RZGC1VXiMzRXrXfjW+Mr1SN\/LxGZhYWDzYjmHLZkzf8V5ITgg0MXnpIbEj3WtU5uxOpt7YjDZxc0tTsnwqzkXJjCDl+fGAkQgD3I6BjnfcxxFCB73DBCE3+BcbFyHxynXouF34sd6cAnXy3ULR7QjhafEU6CfASFgfvNmZD2ywULLDabX5YOETDy6RRBlB2yzaVXhyJBR0l1Tiecied6SrSCDtQNXydVtW7cpIPJvRPuGWEq1VUld4E1kJj5ZgLwWtj66Lf3MC9bmoEUsPDbfXuhhEWp4HZ3IHhfJJj5Uau4cxMLnARnhsWg2255zSDoHIKzq+3roko+M1GVhEIpew93MJJOj5rKpCppGf5DPhTPJ4XChlAmxwkyOVlnfx+BlsHoTzw9I0SIyOcwM55frc\/DLvPuA6RamFcScjNQ9YpaWTEH8tAHPzQIPrBZmIvuOev7ZeDghuVqvGdyA3yHMkbB0JPo+OXekJXdaj9R1DET8SRYj\/7sycZzPRxMwH3V1lVH3esbPekmtykdk\/e\/S9RCznnQcYyF8DoPSKrxvnr2\/DwApnUxf55qXyz48Z54XiwW\/a\/sJ66vCd4Vp3ynrOyR3X9Z343ZIE\/Oy\/mqvorf1Rs3FsJv4\/RFST61kDkCz0CZ+r2NJQSDez2thW+igbxnUpgdrc6G0UnDsbXke6p+71GN91Lbj5rcc8ZtPB4QmYSi+a\/o87Uv+tmjTAwiaivzcQpFtv4lGDEjCgBTSRa\/\/YwFvlS+UEI3pNLIX33rTT5j85iLad\/ggDpOlm+lbF7o+Bji\/hVVhgR7qNhYZ2xx6cCWVY0m0KZIV6o\/DiW4Hke2mB3TTp2MYKBJhjvQf4bcBJxSLJdJ3WSZG1bH3bl4bagYbCbaVVES7wwVBJqYjboedYpBfJy1DI30vwAkQXBxHrMFr6kETheuVfGqiL+43O18x\/Dc+F59\/5n7jXvP9pImfsOBZLTxX6BEyaZx\/3FLtrRZ7jFqVD0zlN66vVlIz3v\/2nSLtoj93H3bc6e\/5c4cCD9tCVhmfCTFC2RZoPGyCPzRoZWaTARrrKwf5CdL9Leej8v+8r0xebl\/alxUdsD8wQPy4dlmvgUie1BGMkWE\/V4JbaH0HfbwsBAvg77YS24meFTK\/MXnxs6tFyyGNAGLIm39s+Neke4Axtsp0SFDj02MG9NZV8luR+nsmdBhkk4lYdrDKWJ\/PfmiMeqT6qTMbybdN3HwHPRucsz4+VDzyXazamMMsLJ44wH0uvY+8L9ZM1N0epE+01k9uNCmN0uTzDNIAfQfvIb\/gcL1iQRXVMhZbJnOvYi7oZLqE+Y+FVo\/1DfngY98NKQ73SfmJUDPgfcorv8k4S\/T2MLAnGrWs77DxDrUjJFdgMZsaNS3et+3vbKuOBo29QZsol\/JcjyaJfue0MO+F1OagggXiO7bV6p6LGBvnqgWkCQ+LEIixTvngCxyUNkLqkZrwfLx+kxRQwK8rXQUG8APnN5dcF42Fv4Pfw4NlYAlmN9bn+QhrLdIj4jdZAP284gPwyRvH9V+CRx600UrTQzoh0iOgtFCwwl7TnrA7D2awxeNzxzKgfTqLrog0GGc\/ChNgn\/T+v0TEg5YzlBJOVvSVVsvPRUZhpeymusbznx4zF\/hie\/KqEnm3FT7TLGh87joWXucDPOIHRnqK7\/AFadrWSc2416reamIC8zcWCZo\/n9NGQG0NqgfHapCWJ+W5ggvSae1yYY9n77c2NeBr5uMIpLWouycWKD4jrccC7au6mETODJd4Rz1SFw66pnCz7VjmCm4sX7W6MK+FbYxnjqMtlGpJfXmh4KssBgto75+bNBKJRO5xcW5SDU4b5ao92FgN86TbVKjsS\/vKg3D+iguI2I587junnWnD+UxLXaN22IS6vmmhDnv7I0RHhU5mgTwx10SlEPvWY5VuGi8cCSmdP57VuZnoe3h2tchOGEjZAEeEvyP3FFk+L19a2IgsLZCvjQaj3M30eRT8w\/PFZ749JwJpne\/c2IjMCvbrptoHFR+3Ybll92xEcz1ubWRY\/dSfw0srMe\/HlLZ+dZ9c\/\/IQnNOtqFdtWlXI5niz1NmDOMt451ecTM9idYLvHPhAhOBZJzX3yYSLrOVST\/Qr8opFrC4X6IPkPw\/bzW9cn1gkiemT1BEnyC\/aUi2Xza+W84L12YwHp5Xsgvswwyt5INwkq7AErDK0iLHmXGIZIUJxofxNeXSLK4pf6\/eTRlX7AX+zgSF9O5NRysuSOS0iD5eADRjb0cJvU4TvtS+Ddf6V3X9BY9PMm0XGRnznrsuZR0JRQ9SXSLKl5tFn+DaTtHeZGjXXukj5LT7ii9bcurrQ8FhuYagcNfdJi5ei+jqfkXPevKpwX69i1q0t2p7EU6PmnFqs\/9df33krhl+6aZU5ZcOKZ\/YDJZRBdlIjZXFrV+jnTVbMlqlR+gvZxaUVm1XAI7uZuclTwlDQsGV1oQkzB383YiGf2411Qx8otLN8ngy\/ujdqpHfVjWfKYtKV34xUErpZTHwsCqk6S9TyhVqu3h+pReoMxpArKHkeeVZJWQVmsiiVWNlr8v2E92FGcwzdG\/zvSJlipC4KtTfvXSbjAjXNvE+i9bgGzA8IABi3F6yRc5yc3\/\/nJtwMaCDycQ4ldCtonk2rCteE7T5Dqcbqv\/IrmGhfghoB5Sl5uPx+gzZnUvYfHPA\/TGgXbBKziXwp30Edyv74RINWywcqrbL6ItdvI+H2umxwyLoPNNGeGSvcgVbmRdNVz2tKOKe3HFNY7TGyE0X1Pu77ylOIghdmN6ywqYYNxaG3t8q2idt5K5Y8hwmN9ie1A9kejeNG3nXAr\/q87cSIej7v5brTZTJe6zsW+i6E6+3icd9210upl+nriBWg8adG9TEbVgxJGqtW0t+++ASu5yDu7z5I59zn79i4UmeQs8szSMy3eAY8X+5z40pzA6knviOI6d+lT6dNVsw9LAzuEf7MQptVJrCLEaR8Bpkhi4xVKpbf2v+mq8fevC9klh+bNIXzv8V95cem3w8yivC6vNADGw5w5kc9UreBdtu4snAfgJT8vj83mZ094JekOqhkCgwQSaaXDnxi3kfx4kzYK\/JalZcOOZ3fb5Y2KbmI30KbvLAgkoyGZzD1KvqKyYq5mobUmDGYlO2y3i0TvjQYjP6zCPXGkxVzkzfbwjQJ4hg217CiM6Bc3vYb4TkmRoZeS163Vda7qpFqcw5xIQK3gkWzm+oLMf+ouqlF6ptUWHWk1anFDEPT0y5z\/3pHrTT8VRf86Q8U3hOVWLgsco6S+paQ2iX6LL8PQtDGkd3Bodxi\/5nxwn15P7eZqJWUK6JV2Keb6h+GwSS\/GHt\/sZuZi2mGF57jZxXSS\/VYbXeu282Ai0gz9Sr6pMmKxirbRlfD8Bhy0fmJOGgTgrwgM0K8oD6giZ7V1gsDNK5de8gTNpYOeaKvu+6O66Xr4yV7sHw8YoXBkvdpWbkwe\/BZ\/H4A1PcV5mfDbCVqvFAuLVxIaOIl6Qb7wvpm5oMpaMFupjsWc62uICLO52hZv0+rrE\/BVyOwIn6mK32D4H1q1NyyaVXhJm+SEujaurpwbz3SkgJCmsnwx5hUG4Jm1fAhY\/b6Ln8A7XuZvugnR9jUCRobHLMPwFFOKCmZAPuNRYCZ76PYF5xW+PV2Wd+4aWXhWj9hJ4rDr+b5tct6k4Nl0qBtBdFuO9DFRO03yfb3LSQBid6JBuxk5jTaifp9HkxpxPoIro\/4Cma+\/3zLSXNY6VCwemz0es+xFW4WGSidKfoxjHxds9+cq9Bvuv6YEVIRrWR+gIlN2Ptc6R\/iTJvpvI88aOPh1yLLlSy\/kaj\/nh41p2ACwp7R\/3E7QBu2aZm6ZxCo5MGSUw572m9OjxVOhm2Sv2kbctmJy+5quPxlCHZwyB5J1fic7llHqGU0\/tq0qiDm8tqjh17Ovj4q3Yj0RbXS8P8CIpms6E0sCHzuOg\/a\/5fUs2GxwFzcuNJcVBvRr8Ffb60oGBvoU+31Rw+9DmuFXkTtVEvsoVlWK3zgCtQTDa\/Xfn9oGP7mrccUyvx73vLhV4tbUtavtB0j1T3i19kqpzu8CQ+sk\/v2kERYL7uZEcTXQyWe6tXlyuf1LaY0cGpUnzg1ao73gUJpk0qEf4EcfriJj1tSfX+VBW5QiaJLT27Bigx\/\/1Ev1Nnmw+mifW2ovs9ISIQ6TK\/sbeNFNSMjbIFEPFnhBaAhLSclD3uonFOoY\/QuvgsDEg+liJlFKiPWt8ABDe6Yz6ulQ55YK6nbvV\/Gy+ZzaoPXF9V\/4YpMVvRt+JydVHds6sK8tV4svFACgLF6r3BnldU094n28y1WKW73v4\/fyYLQz59GtreQUAc5SCL+F\/sQYKnF6lTbadJWTqFFmMSYe71MX4GGb6f6Uss1pb5RT6w5Wo\/0LdyLBA4jdQGfWdocfTv37bDnjwsRVA+VUEpYi9Rl1hLQ1\/jgWD3Wn+BasOoYM5LP9um2SJ0WAlsW2rCYJPJ+9FzshHcxSAtb98aI\/\/+YEDReOzV30W40vFGXKxWyci95Xt69bbwous0TYabczSfMWSTkpURa+K5asXkrLw\/zykeGfx5CgQQgDMvkoS7nM0ulo6V4ww56fTETp5fafkdE9ZlUPCtMWsoB+TysJKrH5ss7zn6WDMiLj7eBsdBMR7h3otYMOks8Nz\/aibaCUI\/BzHO56SfPmgcd9AikeqQ2+ry6Lc2z18N92PuzsEQBfpSsNUF5KBhs9w4uHlRN9FAJOADuRxZH8saC\/Va3hpkJF1sBUPM4\/OL98YPZmPy+yyUifnekLs9rYff3lQ9GdP0RIbWiSn0Qw98kOeB8jo3\/50P\/+Y3v2AT9k+idBEs6paFn8dDC46xZpK7nvEQl+X3SBpC9zbu4h1CsO6DPve2nz0I7SeFDqzz0cgZQO+3XEs9SKsl3\/FuP1T2txMBVdc3MWOEC2r\/kzwsYZGal+T+AJFNj+hPNAcXlDJ6N48v+slUaevnmcdPHlYfSLuu39yr6EzT4FiK94rJ5aCKXZTh5sqK3AfKAsROKH0oP+b5eHnohg5qKLoFAlvVOn29mYb7tHO57cAvXh0oaZXUoCztcYKD4XPN5wDH9sWFTj+oesZKKQy90iMG9jjs2qY8OumIi9NEapIXF2sy11n1UCmADIQbPgfZF+7rSPy\/SLX0f2hciOTSY838laU8NZiNS19o8n93Pma3iE4K6seazuuL+tEB5MIQBvXW1+YgnNKtHerWP7LZTfUm7bE4jyOP3h93CB7\/2JWgAanSJsBMExOxtRsNvAQBTi9RHmpH+OME7tAzgDyHIk1Yw5p+JbONauKzBfj0TLB1PqYOQb904Xjibonre79U\/RtMboUsCnsl9eyz1z0uoW27E6m4Hb5XIMZVEoZa1PM4WYcX9k9Zx1tudIbho0CaKyLkscvzqA39jUIkiCoQy1TyLyaNOoMSRhxncnCWdWzoLd5Tfjzyb5NH2sgqSCMeXJJHuakj7jaXp8zM9VriFz3lBvYo531blmGfS+No9+PvVPeGhEDjDNq8uvIygkv+MdBwVLdT+duPhP8H3pKUKEepGpL5fj\/VYIxGGjbYQ3MX6BikTdF38MKMJLLEwYHbT18hv5Hhp4eL\/5nv8WT7H9\/VpLQY9WrYRqwtg9Wgk6rRGpDMhwYuGPyY80pF+JQEyyhJJh4T3RX75wtXmb+kVFX7+cAgAEjuB1Q02ml5Ay17L2KC4Zmq0cHk1WdJPhVHoYS1ENVOP1JULYZfZHET3nhD7TJVbPrvisd7V0v73i3rEyUJMfY7dcR7Msiqd5\/Y0RcJN8m4M6EhfQ96xGVt6Fi8nfO3pT9o4VviP6VHzr57qBS4kBjkviKbY4f4\/T0F72d66wy+lqRq56kaiT24mwgB5AwsX14mfyQRDmzEh8WO5drfCAwC5EV4lR4tzBtFWUjkE8QDGo3mp2GlE5p3cr5C+R\/o9gA\/QzJiVjUh9CWw0pO4sghRk1CPda1qKnlug04GcgcHuFwauh+sCPOJiFLupeGrEqtMs62Obif5Ki15OZf3iqdHhg\/bXingoxOPdWeA8wmztkUNPnV5ZePPUaOENZddSxws0SA4SO4XJvzcr0Fcg+fpjRPANkLvntLAUOtC4bwAD66NC6pGlowlvylO++s54iPBBkWfbi\/YV\/zXWl7bLhUNZIV3Osd9BnQm7\/ZRD5gVyEMASPHAb8bVF8j8PsTWu6j87qR6jeyH5aq6ZhYfrcagtfN1LhKguhiL2\/7f3HeBxHdX+Azw6AQKEEEhi3bkrxym0B38g8CB0AgESSugQEjqPFkoIEHBIj9Xdpb13m5otJ07ck9iJq7RNu+quknuT1ZvV9\/y\/38yd1dXVypYTOXZ4Pt83n63ZW+fOmTn1d\/gC6KNRj\/ZTWOPBDFBBBJi7f9ZbEZCCEFPopvLfy16HEFLA20BkxbFAMakt1j6r\/LniWXz6B5qWz\/wfgJLHPTwdBjOIdmAyK8kjaWTC39i1IFrivsjZxqID3zJEcKRshkzuBp42dq6IqR2CNKCCTvB+0o6hDUS9Wm3My90xv\/5t5459NgkWYKhM2IUr3Jqo+2Sno6uvnjHbqkkFAvqIjAHXuiMe\/vWIyftT5WmrhvmHDCgV1QaCG3DCLqws0jbgh5cMhQr0m53MiyaCNmzZNOJYt7bCHiubqlmZJveCaTFQWN3gL8X5KBRWW6QfqvILiJX99nQ\/hFlK8Zn3q8r2IOguzoii6SKBo+TWflVb5PJHPLwg6tWhh\/4w6NY\/CSbbvEC\/AiIzmA8NubTArgKDIXgDUkPYq\/8MEkbEw+cGDV4WNrVnJS400Ch5e9jQhkXkk1VyBYyD3RsW4471V2MyPq4s19iZW5+eJUqOYqeB6IzxxqImE\/e1QQlox\/cjQQNQOajaKHZ2kz8Y9eq\/BR40AN4RDy2qM7i1SyvL+JsQLAND0Xb\/rLfCEh5EBQkvRG1+O0JIo15uNpTongpbYMV0E3Rxu5UeYBBQt8ROaYwVJatw87sgSqNEbW2RvnObW6pwETf\/OuIRBJqpmfZh1KpONXdVU7tw2K0lwQIEFpbJjzl3YWH48uuIZDt\/MLBOR9Dp4H5IFYwhQN+MNIHdC0LJEGRynGrFs9LBErDSgonh+wwaWg+CGRAYgRVfieoyJtlF4YJ0wdzQmYUBw9B247nUfeXuwgcrvTrCGc+am+PIysteB6tlpV\/\/QtSHKgvQKfnSsMmDQANBDDk+OhjQcm+EIcbKbB+LsQy+D8W9YdmFYQ4ZLCjeDVEYhqqQqd2JNELsurDkV\/lcn7cntIMQmVQVcN1aUZD2LYjw2HUihgbsq4fCBp+HjCkwrQXuXo18ZIlUqXXLhH2hJx+G6I7Jjd3NSuDoRNirVacJ17gv7OU\/jvtdN1QHZmpUOQYJO91UNv+SN8T9ehHQRuzQs1gQUfXCsg5biJT6LQCewFhjnuAdgOIBPze+DxZDGbaq3QrEllMxMJrYhT28yw6pC1tBql1YGFDdsgLIS4JSpVyhid3XLbNBkscWaEucSdLOhsEMWuj\/SEyQ+orWKM53a7l2RBCRCidC+7R7BTKFW+sWaA0WwoUiVE4Es4sqhX6+0Z5+90IIO2m1X3805uXhqId3452xM0KXxHMr\/QqTLuzR6oBrBQzm2kL9USXiwyqMiCYnEzqJHL8H87Vf1xbzX0AMxN9YpLaXuPJV2iT8vHXFrl\/ZDU2Af0XU0Kl8tSh2rkqVgGDtrityZQn928M3AZo2ZPB2MDQSMPCeeF94AkQIooe3Vfn4ppiP32O3Yr8QCi4WeNN1Ej9MG1HuK5DISrMWbhVAEzG4AF1PMhYQMWAIdWs\/tXDC+mAMjJiy6EDQPT7jyNmSunDBGNoMpBFgdTvz19XGMtWqHeeULLP6BOc2Gj6uPU5UQLCcpkwKmqy2PkMgI4RMbZsVULBN\/O3mWU1gYCsLSEGVCAPO\/BnvwO4tV0UJ3KYIxh0pYsnnqvLr7fZAhudLIUP\/4fZSVwQ6YsTDs7cV8F9C34eksLngSg0uo1RQsYoMG84y\/Kz1xa6lNUWu8qBVeDxkark7l7jaELAf9XCgTHTAog3RFQxjAajvQ34u0B9FWp\/BC0VRcA8Xhijspgi1lD5QvTfs0bpxPXFdKxIr5NY2VAX4piqfXmy3uObPnjw4AXozYIw2ztdd2MWAZlHh1n6DlMGIyZ+qLdYj02GHiPm0O6sL9SFhDLWkOsAa249BDrK1G7Zbf\/vE91YMKBhYFCpXoZ4HxcbgkYn58AA4d1NnE+VYPLzN7ipLFe+PJhId3FqF7RHPT4KekeoFsAIFDQ1xy3ZsKk+qndrehLHHzfer3QgrqqyMpy3H38Iw49dFlhHEIIgriOGFoQZWcOg12IEjDvTAoMlvx84PUUihYeAaiAdWOxZ2JXwcGCuQdYX82IjpugHi2K6y9B\/b851\/eyObAH8KnXDPYzO\/DYkEroaGEv0+4D9D\/60p0pfDAry91LUU0gCOh\/61Z5nrsEI6hG4H4wqeUwR\/iKSAtD\/DIgwRG2OKd8aiGSzgDyH80lrcMrDLQtUQQQuAVV16zVsiJl+HSQrL9rYC7ftYQPGtMBGx4B5aeRXG9SboucrYJtA450tIoqCbG7VF+j5V0R72iF1L0pdGvdrjUa8ECCjP1z+6+zHXv1CGFOGb24v5d1ItWHZLcNDkX9y+RP8RmBCIGwhUQYYbKn3YQdvh4435+BMWmogAQkAQSW2RPmJPhgEBydJi2ASeH8+l8oWVuBz18jZVqhRWeJFuaNWoQj9iu3Gsc07aG64TdI9F98moQO1EKow0WS9sDKLnvCOswBiUlA8Pv1zBmNUYqzr8aVMZIECB4hyBW2zwYxZmVIG6VnkBfMB6vDqgt9UW6ZGtVmw1YoixOlvJ1neo4xUht7UqoLerZ8AOBSYIuiVOMiYqXCWwOMK1guMEWEGpS+xk0CVxXNTNP7ZrafqebW7tB\/brg9lhVIKopioEInIsaKTNw\/lKtEYJGMDWIPwRu6hY2a1oH8RKqxhvBXQH\/Vf4NCECevhta\/Ncb8Rz1Ra5YtC1xbMb\/PfH185KQtFCV0OaIarbby917Uf+rzjOnfYgfMKWeiMghiq9fKd6RxUMg2R9fAtrgRD6HAJC2p+ZJd4L4yZLovIPAvEDz4aFQubIji+MjQmP9D6oG\/J9+EN4VjwDFmzxPQw+EvfzXthSsECJ80xttZXfLZpVPmX\/pgVj1TuS9zD4Q3heXE9lXQEuuLZIb7DmyRbkTKvjsWPLjUGWf5HH88Dp1DuRmGLyY3bcNyzAk21iALNIBaB\/XtBk4OtWhkatXc+CHy3VsfaGDxn1jFmPRRyxqXWLAH5HLm0qgnEHO7yErRkvYokC5F7+nbhPbwZCgrrnbhn4L8L\/AMGKlR4MZaUuikAT\/Ct2bissE8djsgspI398eZaKAu1h5OsiuKSiQPsJ4GuqC\/WE3Pl4S4UFUAeGRXI57oWJFLSSDwBQjywasUOuEKVNRboeqtDDaAWmjHl5PY5BvyjGBonBO+MdcZ\/2qx1LXN9HeibSFQ88Kd0eWXde\/tqaQr0q7tcFcyJWHCIvvk+llz+JdwFETW2h7o1Y+aqwRoMhhaHN4P2ozStigd38sZiP94p8YL\/ese3Rqy6qcGuP7If\/WgT1y6R+RWAifD+BR22lUmInF9KPFc6ogPJwLxjJVFpoyOQb7T5aLEwxv77biRctjnVb3x5itkdPpl5ORiGTPyYY2OQ71TyFRIQd\/lTBRWgWsyZTVAWSqoenzHKyAkaSoPHnDUFcjPnGl7VQTe4eY24EUSbFx\/ucyQ3OBksnagGr8+AQDxnakAUmnhSJhZO+UP9WrZ9\/yS6aoQoiJpFMGhhvQEAQAz6YjIsdf0+1uwOoDX1OHV3BvAKLSV5LO4R7yA85Po0NVOnVvg8RDztldYA34b5Rn56H9Dx1jAXgt7c6oHfUF7uaAVZnvwaqKiC6TOz8Jq\/BLgbJpK7YdSDms0IGTe0R5BTXl7j6QwX800j3qy92CYNV2ODLdi5xDdYU6dsB3YO0x7hf31lfrFfDegr\/bsTk+xC0UeXn5RG\/BN9TFDbSfrZjSfqJumJXpzMBJVaUNiPmlSGiMZ8usr2iPu2bzvKuIFVH14oFEHYMJKQ4ETrRpO9fa1EiOAJO7IkuQvUJ6MJoFjb1f9jvAzcW5p1ARjHTfqT6gR9WVci\/VhvQb1FoIqCwR\/NYBrGD9sypoMHDqTDf7A2LKwD04D8fOy81gLw0jGmHzrtEh4oCzWNZe8c9sKX71tv9dEDPP93ui1UPO5LCiQKJCvQGT0A8i3gkSDsYo7aQn8D1rOibHdBXxW9W0W7BpBa+k6KQoW1N5SoQ4rYpoWvCBfq1akeY8GwAWLfKnoYMvlJUOJS7U0pEBoiWVX59NxiwwuCzVX\/Mz7++Z5nr\/rBPvxb5qbD4wj22tfjKi1FNsb5E34SwShy7euGVF8e8PCT04qVSR8VzLM26\/LVgltanZonFSmJxp30exjNRvtR0XRMytKcgDloicDeutw2VGJbLSC9cD9eFPqvsFDG\/9sedS11bYCiEGIuJrcqUAjpm3+Pp\/474xxYauJFwPxRAg8FO9dtJliORbjOF44wEBMtXP26cBQMbWiv8zfJc7blUzCTmkgWjk7yPod2KhUKmnGq\/Rh8gbmsK9WPJueLne6C+iN\/cfIFYCAyt2a6zAxr3dGI0mrDleMaCRmBHgYErlTqJ+ztrGJ9TAoIEnOPOnQpNQN4UjJWAhAEn6tG6Uu3U9maJ3eMCPgTIucf6YKb2E7gLQqZ2wB4EIvNjVRC7thDHguEUfKoiMHBKP7VNhEYUEu7nZGAwCQpeh\/1yB8VOF\/XymHXvHdAzawrHAwog2R4MhpIu+FtWjtfX4PlanppFUVP7CUqR7lyibxL+7gJtJsZu11KXLEViSiu0LHCOQAQXIdxRWjf53XiGSi9fAbETTKnCTBGlZdUsOoR7YYcOeazyMobmwyKGcyxkinYwKQxHEQ\/fCLeK2kVEZpKhX799iWujhf+cDQs3xivi4cY+74zXwP0VMfl2BI0Avla9O6SiqkLtJmQ\/hdzaCQFobvJk0fagO\/3quJ93Oe0hloGxvXahdD2hVE4qBra+2bhoJ6gYKsjFqsgBIIM9dmYUi4gpoZxg+JM7MG9X3xVkSUbHUzGivQlx39D22F1\/IYPPTrULW4kO7YiuU8eeU6pwayucCQtoogyjwbfblXYEH5xu90VLpSsg0B+LhPVRvgM9zzLljw2ODLnsxPFwX6gBVCutIgRMOGvdoInJ4JHZJvJ+Y2VIVBPv6k77hYhAKtU9AMhDdFXMzzvwPLA2gjHifn2bQv+AmGgZyIShCzsEdit8eGmY0TKwyOwqc9VXLLr8XRFT+yyMS2BQq76PQB4BLI6UQLQDKmhfLETW6h8L6K7aEv5BWGwhnTSUuN6P54PRcO+y9A9DdBZjY+oCr9jSM8OouQuG2ZiDyLBLXw8dThrPpLgrMM9M\/j87lrjqYRALm9oaMDh+w7+QMHBd6Pzy+6qdTf9AdUDfjufEsVYgRSN2cVi8q\/1cpEtWuLVcHGMfZ8HAiM22JjqYLRUDW+L4uNpbSJQRHgjMI4\/2G+yIlk3Fef0++Zza\/VYGW6c90QSEOPNUjOhsYnGw+dhlOOpEFJpkokPB2CJ3zqjiFDVgnC8EUWgqZVLE74Z2wu5CAMFlBIYS4oqhfb8y\/wOvi5jasH2A5Ae2gjxMrWBSBjZ4dapqimJHsbB6ISI7P7q6BxgJbhIKX4uPLrKiKtxpC9QkhD6HiQ3IHxhFBBKGR8TYJvXHkJH2l+pC3lhX7NoTsVAqsVPA4AQXFUIxawpdz1UXimgxIenEfHpzfbH+aN5vXa+GDhfxav8LJseYVHr5yqoiqXIAJwtGJ7F7W5bVWxl7RSzg+krMpwtfenWhyDv+GnzGMD7VFeklMT9v2JCrXfpEzow31xTqi2oC\/Dn8ixBQhS0lYHk82qN1xfq+2kJXvULflDq+vr\/cre3F32CasKm12RkTc6LcnSYMPrAwD2y5BovR\/8PzOvNqrSypLsVQp2JgFJezxk\/QOAY2tTslcD3vt889CeqnHcLxMNIJbC9j7H6KEOQT8\/HhVBKmvYkNy1aOBYRAj1TMD\/sPqnKeTXinKRHwrFLpktbKvtOODTQV5ziaWMFTpGEJkdYKzEhCopjaI5ioeAZMFDEJLPdOyOBuHCvE4AkiNKoFTFxIpDgmg8+xq6RiYDEhDf5jiLyNj6XvjXikiypo8PmYoDgeE8WqBCBE5nKrDAoYCpZeeznTslvZK6xJsheGpO2lrk4UlrY9Lt79j8CBjnol1lbMp\/u2l7r2Ih4ciQYw7mC3lDnRWl3Qzb8U8\/ERKSZqG3B9uI4wTiJwJaAPA5+6fLEAzjsc8co83kqv9viOJa72iOka5xJDPPXOpS5EW+2FK0RWWBwLX0QqZMzHQ4CgjftlMTuJ7a3tAdImmBGSEhiqwpBQuSGDP1Bf4tqNhRoeDOcObPmwe5SvFlUMUzGw9c7jqmDA64BjLd1aVGNAbDYWLjVXhCRjzaOIh2daO3BK0TZkpK2UYHkT56u9OYOVcK1UlTVFogMkyYLxuvuLSjCcKPO\/80WE7mtK4wtIiGUGP+YMM3M2rHKYeJgQ4++WtAoLI5YdwBzpctUB\/enqgGsFikYnjzf4fDCwWMktEQ8kcKYMrTXVYmLp0wEch1Q0K+Z13DFWeODO+rJL3nDDDUzoPBvzL3tbpU8Gs+OcuI8fifv5PAS55\/9cQMHurysGVrI2hAUn5uPHgIaBhHzxrGbah\/FBcb6sZSR93yGgbhS6mk+sm4WdStgEYCiD3gzRGhMROjPKiwAiBwsYfLMY+6Bb+wfE8KhP\/xTEwM4NV4tJA0NauZv\/Dm4SRG7BzQV91tIjXxbz8hYcU1ekNyksLeQkY\/JjERIFzax6U5vnAi5Xfzjm4z0CeN6tddcXu05WeqVuCVG+OqAXxn28BeMipDUvr8aihd8xfvAuVFoivH2cLX9wryomHvZMtFtgURDjZY75b8WxZtq3lBHL7uKBqlEVcD0F8MMKCzNNHs\/nWVboE8poZqdwQZpEi0kxZ+1N+NMdtpugmz+YSm3EXAfYhaqw8aKSiDM2tTrngKJZCv1uu0IPhkvFMM4mzP5ube34u0mCHoeoIhHAMAVsK+zOmNDYaVVVAZCEukn7YVVAr0QwiV2HtgwiIpwOoYaWwSHlcwKMD6IZ3BKVXl4jxVWtPh5Iey\/8s+p+QH1E1YTf\/hY7Utp74379KCaLiL318A5MUOxoEOfgihEGPAt4PmxqtbVF+mB9sasTerGoVevhq2JefRVE94ZSfRnUA5xfW+iaj5105xLXXQDBw\/lbFl0pVAckkNSXuv4a8\/KHUJZUXNs948ZdS9PLAHRQXaivUQsXwOV3LNG7dpS6hkOmRGJEWCQY2ArV3CLEaFjWA\/oo3hvvg1pLYGy4x6oC+k5gcqsxQI2n2mL9ejCIEPd9+gblv0X4piXqjxtji4FPwiZgjcU2+3zDd4v59JPVAb4R0VzqXiBIRcKNJMuXnNbvCreiFWN\/SJWNtZPIMDP4DivhZNKGZxKGRdvzSMMtn2C4BUMLV6mbrxp\/txeBEIoodNEULyF1VLlyg+Afg58slcg67uVVzKgNqcNOmBwQqTDxQ4YsMQKCqFYV0P+3odRVUOXnfwEaJPpV8TEJIJA6hC3m07badWHpN5QWX+ihznq34jmtMqMw0ACdQhiSLEtuyCrjCT0W+cD1JfoO7EZwAdWXuNZgXGDwivtkCZL6Er07aOgiyATW2L3LZ86GWGt\/RjBLqugd9MOFhBBLYFJvWsTTsZqjZAoWF6TwIUot6Na\/DSyurQv1D8BdBRxtSDMI+LBXZ7RTqgQHLHrbS13\/UiItXHk7lrj6kIqHEMf1sE6b2r1Rj14Kf2vMz\/dtL9E3xzz6txVsj8TW0qUaYnLCQhf2aN\/DuDvng7RKa6Lur7i\/qVXYGVhIAx59gt8dpKowysAPGYOwMe9dl9cU6vfWlbjyY159XNE9JMnISCxtN7wb9t8U4X2denqqJuawIX3cijBfU+3CmEti3ni0j9uPP6sEcRgpbqmyNaxJnKwSAILYMhmzjztXwqzuTjVZQdCVYNK3\/HUiOUEiA\/KNGHzcQwRJeHgVio8hmgkrsFjlHBFByPap9PJlwiVkewY5kTRRigWTHoOOiYJ3HWvSj4lV1qre3o7VVa7gsqA0kg4odC0mYadwwbj5bU2Pp++wuzv2rxgPIgewOAATALEfFlqMW8QrcK3mIBgfqXHAdIaRDv5K7E5iMSmSlm88q8gEenKmKM0CMRiGGfyLvyFqQs\/DcVB9LHUGGGO9InXQ0HbDOg8LM1xpmHTQvSMmvx0iJGouw0+tQO3UM6P+rvg\/KnWY2pqGEr0R\/nuI9pjMQ1uvSVbPCBvak9htrZ1MVD8EXhcis6xw0GTbvkQCEdpir6POHbimUB9BdJqzGkgE0pcVQ17u0T8qI9P4EYyPmCfLZ45LtA8b\/BnhI3eIv3aCeykCo9ppXKB4LhH\/4B2T+jDfol7enepcfAsY6JwL5lkjrN5AVXS6V9Asq19SZIEYjYlxOtEDTaxQjvIXdpJ+X75LDLSHL0MfomxUZQDVxO9u7adwe2D3lc80Hn4HOwXcOvbz8D6Y6CooIOq5EmGMcSsXtxbiccjUtsM4t73UtUcZK5Df27l+FhaOHXAdWGiUmXuXp+dsdMCpID8W7qmYL+2rsCBHPNoikZJnIFFf1MsRTAimg5sJIiuMYZj0IuEchdpMxGYDzobvRQlQREbJhH9tHSLBkCQCA17Yo+UD5QPWePwt8ogNXhYyOKB4ngsbWlDgQJl8v4h4QoikTxamwwIFHRv3R\/IExgp9lhSF++8JG3w9KjGAOaNe7SanpR+01a1\/4MATMwvCpi7KfsKPHQ\/orVJPl6l7sBLvWJK+B+MKAxmwpDHe0JWh2yrUzrChbYW+bl9wMR5CB\/aMzyRDBpYQ1b2cagB0Z2g5wkhlienot9xjIiEFC6MMchmfduokROlNZTMSTGn5\/BVNFmps2Wg6UiV9nBUCSBh0Q6doKTGr+F47yiGyYqYSyWJZKXvs1tlUBDFKrpQSoF346KROnGyWCD8f4i2eU1j73Nwcdx1D6kg4Hh8VCwwmbqVXX2xP0k5FKIUJnUhFl+E+u5e6\/rXBEi3tFPPzD0Y9\/K8RD18W9Wq7VSAK3gEhoQIOV6Ih7sO7hU3tcQSgAFpH7MCAsjH4Z2DUC8+b9Vbs5ggumAxJEllYIvLKh8yptBsQgokMH+ES86dfPdn4ChidpZe\/FiI1jtlaoF8rorkM7daoR+QYzwb4PHC8BOidqR0Kmxp0c7HL430sC\/xwpVdHnnNx3Mt\/h2dx3muTe8bV25e4ZiukTkgxlth6yh1I1Jfy68shUcHKj++mouKcRcVChrYJzxM0eB9UqqBbe84ZhilsMpaqBzQSmSQj1afJCK7Myewi9obfRYilZYuwzkV6q0LATLYxXX8MMeasEsQ77BRqJcTOpYLtgbqojhM7kVurSxUw4Wxil7TBdU5GSCO0rIWiCgCMKzL\/d+xaQpcxtZ88nfGe1wPVQupb42vdCv3WSlLAh6wq1PfGPBNjd8+UhA\/X1H8e9+vLUXAs6uEtUa92MOJBgr9WiiwZxBWHvfqNcG2pSXw6ws5VV6R\/Ku7Xb1axutDx64r11TtKXdXhAokxBqQPabiDfi2TI6QKYIUvqoguI+23u8rSY9tLXE8qiQk4WQ1F+s3bi103KL3zdARmx6RG2GYUsLVuLQNpkhGTx6IefhgBIZU+vrPKr5cA9G46YoCBGVYV0NvAoDKWfUxPBkGshxpnuQQPoC9i8ixrh00yjZjDBr9OBJUI24oQq5MwOZPRVOCP0XB\/p4EKKJXwFuC7qEUA\/IP5i0XTfuxZIwSKQ88CY+Ah8SBxP28Mu3nAbhSBiGn5xU7ZcL5MOBhz9UxGwDhSETMIFLCsoWWYnBAz8RGAcgEduExUOdQOWgaSvbRRunxAMSRUWFFdcZ9uTpWRTkcIioB7JubXr0eCx0YHAqKTooVXXtZQnP5ZGJvwN3S5iMkLkBTQUOI6AN0T\/RAfMeYyxc9KQjd5GDhXlirwoOizhY+KBdbg\/SrLx+oXMeRIboBoLrGcuagXjFKiEJlFaqClRsBFt3Opa191QN8Aq77S0wQ0jy\/tE9uXT\/SZ2gm7OuoTI8AEmVWTGc3OlLAbx336KowJ9He7zQXfFjuaZYEWSfQCw8vL6+GnxjzBIodyP\/htfHyBBDQ4FQU9+reV9HaqhmuKICMLu02c69Yujfn4kzEfP4idGDy0q0y6u140QxYc8TuXpDdEPbygMsB\/XOXTr7UPoKKplkkR9ZEcGS6TEXx6GGiREWQLzoh5tW9sL3XdHQuM30WBjGl9yGTVANBBiRyyFbuC\/fjpJCwwStSVAOJ89s4lrhKF\/BExhBV3CPqSSHl0a++xbAbNWIgsSUNgWWPnFB9bhqwKhkMfFidpBEke9xPb5ErIus1joiYC+uVxPA61Qepz2r3og04sgh\/ERJY2A0SSYcJb4ZwCiB95wMonXFesDyDuWFzTSPvzjiWuAIxSaj5Y4n7KcrPTQXGf\/mckk9j7kHmGDcGKBEwaquB7rg7w79SX6H+zpyCKoI9S+Q0Q8pq80CQECQix5WLTSTGf7U2I8W5tqfMa2PWxoMX8\/JeVPh6oK4FNZQyp9aySlbx8Sn1FoCxMgXnFSwL+c4qA4IgwwkCL6BuHawhB84efvOoqe21a7GaYpMJ66ZG7GQj66+kwp54vAUnCMnT1Kp82MKWw4sIwhSgw9CHhXwQHYHdEcIolvsEfCya09Lxjos\/NMzAZhDHQclXBMIM+AZkri4ipwt5KPEsysJU22Y\/IIDEBDd6hdgBlIQZ4Ac5VkWbC6m9IyCPLriCCSxC2iGNwzQis2AWuy63Y5l68X9DQWkUqI0qXuLW6hlK9CzYLu298Osna1ZPzEbsons8yXt6l+uFPPrx81oQAIRRqk\/HlPDFVMRaL3lTiGgQqpU8fUamnkxESTmDhd\/afM0KI5VQYWPhTDe2oQl04HSGlMOLhInjAnhOMqKOaQr0HzF1bpHeoeNugof0ak9zaacbljJ4twoSCuwuuHbzfWL1fvkPoXR6eQKgh3hmRS2AkMVbJLKq0P+OZrdjbBHZyJKijz4rlPYLjUKgNfTgfQAeiXGahMNiI6od2BoarSVUPhN4nQkSVJdZI+6qAgrGgakVorCftC\/BzY8FIBidYoAiwP0iXj6yUgT4Y2jD2ljQgwhqjnrSbMe6W5XUckP\/ZJLjcMC7ClWOhs6AQek2h3m\/ZA05sKxiLUwgbmgdqWdDQWpzx95PRVj+\/stKrDTgzqFI1YUQ9lyGTZ0rAP7Ym6oSXcTZrFRP621QIaWuoxG6VrhROfJTVxHVUoDqYBhMO6YdwbcDfKXXxFw\/aE+4I4cISemeyFOd6PJfcdaXYCbeJSA20BYHA8ozgCOyiAnXCDZA47fvYlSUIgtYjIHg8\/DbsNOI4\/1h+cthMxnknGVhKLJrAe1IFwFQQAQpXI1YaTK+QMAAGD3ESx0kbB5g17b2wwEPEx3NZ1xQShlp0pIivLRLvYfIC1ecEFTxbBB09aGgNcvPQBkTMgsm\/ZkWKifmB98PzJzOmTB6WsQVSRZgqBd182VR0YTA5cNoUusl5T8h5Fat4ipexN\/gcoz4+ZEc9nArBoix9elq99fdiuzgjoGUfE075f+P3kKGh0jxW2ObpsIJOhTCJlZFPhShiZ1CBJahygD6VpC4ZmFeJPqtyPHZIgenknnE1LP8YUwEyZ\/BhJPwrNQWMKMrSWGoIAj4s6SfJwMJIYjEWxD\/sCmBMTC5EZsGACKZXhhckakBFgY4NpgaQAmKWRQitIYtiC2Y1JPhB0BLnhd5pSTrwT2Mht3TRP9rH52wRmAS1oOXikiYDRUxeJp\/LPj\/E37+zfPYdlo9YvMtUCa6rqWxUInFBVmgQ439eU9RM\/7CYCKd5KTRpZpf1Zs+EQkZaJqzOWGGtGq33wZVkh5YVwR2eJObSBkx+iJEoV+K83tkgeygfAiesvjlqkiOVUPQZ2pPKiKWSy5HHCwaWiR0yEglwrMJPbYls24B7JZhOTiBrgopMJQRsWAvHeAa2VA7EUIvFAEkJhjYMAxsMP+qeYGKRT2ykfR7Pj3uGTD6qavwg6ARSjXVPqbcbWj7+tgyGFlQrJIHU9oqzRQLI0CrkrUqzYjzssdYKUlaAuBdoM7FICn3ZAjo4E4KRzx4dNlkD7lqll59UdaDPW4JFcCpiBVwbIjXMGI9cMRXCwGMCYmKUG\/wzAm7Ur\/cLMRqQMgIahrcr3yCML\/hAlq85CcR9NkllwwgLu+WDRoZRcpeydiT4tfEucsykSgCQNxlfLHZbASCnCsUJw5EA19OvgNiLHRKoHfAtjgW3cAMVCcWiZcHl4m9EPFn3PKxyhWGkkn7TGWKBsHS6UVmxgF8nfeUywyopohs8lNxZPdqj1jUX4m8heVlZPojWwjPjXDsC5NmksKGVYCwhkaiUTNTeqgroCTwf5odwNXq4SFpAIgXmjVARHLBLUyEw\/VQis7AL4z7ndbVC6EjCApoixNLZ8GEFVtbziP\/EjoTi3tiFkceJPsTe1hTpzwCutKZIX63qJoEQDYOJLJMaJo91nU6CeIUdX6oSUvdWyRXQxxXMLcRdHCNT8aTrBswAhoOPF8wmjvOkfeHQCpkuCAaG\/xiY1SFDWxf18lW1xa6yMV9w2g8bStKLrbDK4rBHK2ko0YvVYglRusrPl1UHdBQoE6CBCGzBYoBJJia\/mc6F\/ujhhHxeWJfh9pLn8yIVU4xnFecb2sP4GwuPqgwBFUfsvqZ2xmrS8yFpCefHZdiuNgB\/sPpt2+K0z9cU6puqMT8K9ceBDor+kMlXCOAFNz82VUOqnQS8kMnbnKgbqRoWCVTrcAIGnDcEf5dd1zhVEwB4bu03zmtMkV4Gt4mILLLh+E5GcGcE3dpBISL6+Ki9wvrZIokekjTSiTBOlPQEE2LyR8dS6Q4gpLIqwA8BUscKTMlGZlVdif5vlZmFjKPaEtcd1QH9RsDdOu83HYQFuNqvfVnkzFrg9vCTVwf4A9uXuLyq4nzYrd+I3GYEUYRNbaPoM\/nvEGSChWgMbIFvtlw5nacLT50OwnNhkbaMa1udv4PsGwZ24KChHRPZbRb+9fOhkMnnTiVLSe3CgO9xXuOcU6V3JjCUT1smBc1CJ+iAIcZ5nakSUARFbRtTG3SG\/cV8+s\/rimVqITCexPEGd2NxsXaNcVUazgYBcgcfC0B2Knc5bGqBXUtcOyNevqXC0oWEcapMiG4pU9gUqbhrEQ\/tnTELOzIC+ME4smojSpNqJRFTWyeTG3iNyFpC0oGpAbKnCoErEVNbjR3USkL4F3ymAl\/M4J+BSK7KhEyWEaYIaYx7SvWPIkcZfwuXU5GrAgD3aoIimqtj\/SyhLr0Yleqh6wr\/r0R0Ef5fpG4ihbCmiOdX+vRxFRKhlsBeI5iqIAlpdMYEazZAHacieVoYbm1qgTxvCAiHU9EF0Oyi1\/Ml+C6x0ood3y0hdBAoAJFSpRZC9It6tTqEN8JIAx1P4CC5ZdDD2SSxmwV4YU2R606VPzsZwYGPXGC4w5A4EPLwBzAZIyZ\/BplQqAqINLaQwUcwSSCKKV0YRb8RNiiqBJpaq4BFla01LIt1t1m\/tVgFuZHF1AbsJ2HgMjjS8SxXh2V8NLRhLLAIQw2ZWjzs0dZGZE1glHf9CRIkwOwoCuZ8FzvBko2op6iHB2B0c\/4+nYSEhZCptUFtqfTyUQHC552RFg\/oxwR07rJ0kUpZbqWhinMM\/gDsADEfFy7H8Vc8MwIS6lQ8L2jWLiykmfOCoC\/Bz4WBcD6ss6kJ+ELrpSJpABPTAnkXYYQwHAm92HY\/K4Bd7IBAvFA5p\/a6RmdKokBZwYyP2PNiT0fIpY169U9GvfyXAHWPevi6iIfXoywH\/LphZCR5wHDaYaTThU2+MWRqpSiQBiwxWRIURdL0jyIwxMJtEkn3diByEPoQyohdfvsSfh0WEESdOe0N8KnjXwFr49YuRWgq6jRhcQSiBSSViCnqEy8DCkfEwxsQGRbxaN1hj0gpREHsIxGT10S9fGXUwzOjXu0nuMaZWFuFJ8GjfRzIFc7fpkqwPmP3tSBtRDI9JJ5xKYQ+C67YMlYFDa3Kmj87Jkvinyqh+sNUGdjKwz6OjcV5nXNCKoDemeeYqsHIUWFIvemFUtjkK4Q7yeAdoqSkwe+x\/HvJJtwnFmokdEvszPjQqHvjvN7pCJX5Gkpci6sDvEGJjpMRIpsqPfqf4z6+JOrhFVGPVof81qgX5Ti1JUgMgOiKoltwZWDHQCSV8zqTESbhvuXphspJxvlAk7QfEzX4Lw+vnNkM3dDeDxyrCvc1InnDilRbhAXGfsypCIYbVGOALQFgfRGv\/kMsNCJl0qNtjXhFLi+YekvMx4ugE58uiQFwu8gIqyvShe\/+TCno1sqTud9j4AExu4sHjCzEa2PGLTK5QRf4arBNOK93poQFM2SgJOnpjVloL1RsnzbCKh9DmZQUSAOpGsILgaLovM7zIYWar\/CpUGRMuJBsPmgkgCt9CLs+ntOylPchZtl5zcnomXlXvLOhxFVXW6T3IMsIfZVe\/X93LHFtcJb1AMFAUmnyr0V9aZ+HKJkqRC\/q0X\/TUKr\/Y+siiX91KhKYWW5tLlZtgcts8H5YhiES43dUA4z59F32QBVYg+XCmp68PmB0aor0Y\/ArYweG2CwykgzeCD0bi4mKyT7drgTm3b3M9c9QwVjpEkXQ8aAWVPq1L0M1QOSY8xiADewqS1+J0jP4G4sZvmd9keupVLhUkxFgaeFlEJF4kA4sVEm402RqqZwL+PZgMMzZkMn\/gLGBNKaKn71QglhsDyg6VRNhqI4yLueEKtxpWVPdfUXcs8n3T5aMfqYEc3zY5D1g2qChCVxg1NFNphaKeq\/aVvukDrr5ZujOIjLGitQ6HSE5oq5I34GdGwgbz85Pm1Hl12tQhS\/u148hJ3Zj\/oxZu5am3wboFOf5iuC6qC\/WVyG9DOIwAOzwnPBbVuSn3QBVBEgSymCFeOmIhVCCxAUcKwDKjbQZmIxWJQiB+hB0a8uBVAn4G3U\/6OEVBj8OdSPZ59Ye6Vh\/NSQQ4XJCfLQEZte6YLgCEqdMMdR\/LuGCtL+rxUekOnr4MhQWh6VagBJYYw3GhzSwo9RVopA2UxGivhqXpd+2LvvKy+Bnhn8W1uu4T9+A1Muti2Z8EimNcb++IVWGWyoKubXSZPCGDbgByQtY1DAP8IyW50MV8K6z5k1jqsXl+RA2hIiX99mL5Z2qieexLPbnhMBAlVMok6IaGD1opv3TeZ0XQhCP8SEiHj6goFeQWlhb5HqwptCVLGeaPL5A+6bK9AmbPFk4azJCXnGll1eAWbfkz\/gOJmfcrzfDhRLz8VbshihnikLZneuvxo4o6v0oqljEP4YdCDphzKe3H151FcFHjTIlKqsKQfbYpSvcWoYVkCHyomFJjhhantgZDd4h\/d7aV2T4n9YDHGah6y7W3l3l10eQ6xqxMJCRxmdVUHgC5wMV0rqmKYx7Pt6BCCyIkrVF+iGFT4W4bSvnWBj6EISCxQH\/R5VDwM8GC\/iPYbUWgSoyBS8B\/RXVHgGVA8hdITGY2g+Ci3i6fTwQlYZjqgP60W0QwRfOeH91QB+RULu6uGdFgXafgNwxJqbhOQnjBtB1zEF8UxVsYqOX1Ra67qgt4g\/A+CbOMdNEtKCMzhoDR5wOChlphVN1paL2F3CzsSA6r\/OiEFazqe6+loWzX7lPpouwk2EiWc+RTB0DAaWxtkhfVluox6sLdQ9cCgJXy9AaITpNxRoY8WjLRYqcW4Y5Rr28AedVBfjg1gLXR7CL4G+BslCo90OcU+c+nXHp66NefhRlQCGyYccSPkpP2s2w4IYMbbi2iO9BCht22yq\/PixEMEDoGPyDInjCoz0MMQvWYik1SIQHGOxQCQGWd0DawoCCSQnxflsB\/+VY2KRMUAcIYPlC\/mlcWwSTCDxvbQ1+wzgBIQT\/R3CN5U0QGU8IQsHfUmzXf4uFq9LHT0CKQnBEQ4mrfawSBr8Lk1fs6B79C8iWghVbjYf1PN+EropAlZiPD9UWX3lxeQH\/Lnz00n4hnyni4fuBTwa7hf18J1W4NS+eD+8fdGvPog8qifjuRXq8pkg3Vz883l0J0Vpan\/UECtjZf3uhBOOmCm918kCqhvGKmOPrSr8ohPxW4c+aQgSKeFCRdzqx9OYLJZFzavL9Ync3+C7lv0RQRDwgwysxOcA8EVPbjR0LiCL4gHgm+K1VoWknRb2aB8eJyWGmfRigZNgFrXBBEUII\/+auZelfry123bouZ0Ya7qt8fMipPbFO1EP6HMD3hAFNhlGq8MObAhmXisLQlV4eF9lG0kJ\/KeK4sRMGrUAVpO1htwMOs0pPBFPFfLqojIHnxGSGhLC91AXXklQpFKKjwXdU+\/WjYrwMrVwlWqAsqBqzUEHazTAy4nohQzISIpssvOQvY3LiNznp5PWhTkCftt5HhIWKRapgxkeABY6FLQkiAHC5Am3mhkVXXlNXqn+7oVi\/RalT8CTgPMS04\/ug1ApUBHEvz1g1RzsB+QTfV0ky0KERoRb36cI7AZRTETTj4YeT1R3mSWRJa76I0NPpJnwzESacgg+cTZRjMbX6F10XxkfBAJ0OqR5Npa1Nl7HASSq5Gh8xakhMZQSyW5FayecQ2FnWageLIertxn18rprkioT\/0MtX4JoQN5HbDD8yVla4wcD0EQ\/fF\/HwVZBCyg3tjqCb\/66hxPU4giaA9mE912IwcNij\/RGTF8wp3BimzKICQYyN+fh6hFcKicBK+cMOiucXSf0AtDf4X9Q7QizG4oDqDvjbYsR6TM5KL4\/IaCgtqu6BkEi4f8Qi5uFLoRtWBfRWPAvuCzRNWMQB24rvhIUGqYRYeGB0xPVhEEMqIRZJ1YfyLsrQBVUDC7oIYzS0Hhn9xs3mtcLQJhApMQaiNlah7gV4fAWQQ908I+LhT8OdpmKuK328G2gVAM4DI2Kxifv1xfaqgaCwN\/19CNipL3YdDLqTceAPWbYB8c1FYgtyfdUzoOj7MisjzEJGmW4SaZ5TFKPxzvDvO4ORzjpNVjcoVcMkC7rHi1LTSZs9+hVRDx\/YIzNQhBgF3dg+iCrFUImWcIXYrwG9ssqnfajSx+fGfLxL7oYCx3c5Vm9cD0YniJ4wxmGiYhKAqbD7AXIGUVdKZBXPYPBMnBN0axvwd4XBa8A0GDeI7hFDuw\/lWLBrgWlifn2f0uOtqn6iv8KtlYJBYDnHBEfDCq9+rw7wehQ5j3r5UjyPYHo336+MQDKziPfjvsJeYGgPP7sw7aqagKyVhPdRzyXcIAYXxckQNy7HUOvDzoY+RJhVBfRunIcGpE34qZFOiDERSRmGhPwNurUmeAGilltHXNPUcrs2XC0kIjwrGs5RAAH4v1X94cEtBdpMVF2I+\/STeE\/gOsd8+n2RwMRSJBZKDNA4vEINsc0\/qevyB8T9Da1RqAiGdvhMLN1nQnLB1E5MBXJHJo9oPapUzYtGsHAKXKpThI8pJAexItrqJJ0NgvEAH07kz6JCgYd\/HZMEzns8i5iksgD3BxG0LnQvIFN49R9GvdrCSg+vB2NgwkItgKga82oLZ1shjsL36dN+UOXTiqNevh1iGLJ2rPKjo9UBvcmqQ5sk+DbxTFEvHxDRYG7tVypmVu2cYAIcU+XXn4VOaz8fYiV+s6LH3lNRwP+gdhc8KyZm3M9XFj985cWVXu6XOmSyumNygqqSNCp6Sz6Tdu+GLLETR3GeCoGVkz3t8+UF2jcxFuJvtyaqIyraOF93VQf0WqVe4D0U8qhUL9I+gRxm9IlJbOjXq3NhUIt6+YPVhfywkmbCpogGa4fvuMrPDSBvKr8xKjxgEcU3QQAEmA+IJlGPVlnp41mVXtetMGQhLFeoR4b2DUhayhKM8\/B8GD\/kT+P\/Qnw2+bQaU50UMfT7AFZ\/OkRWfMeQMVZC9UUjxH\/iAVLFPivGlTob3wQjjvP86SYZuqgLY1LI4JtEn6EtxASCmFhbpPeVG2mCwYDjXOnV9qgJiJ1UiMc2aSIZXujljTE\/z4gG0j5sv59IOvDPeiuMcvVWUISTMGmiXlmMDQYeMFTUw\/swqTA2mIxVAb1JlfmIefUbdy11RcDo4vxFM9JiPt5ribDb4e6IenkEqJEwogF3GWVA4359daNt15Erv7Yn6Y4K8LdjlbdSBcW74fi4T19k\/OWtF1X79Uewewrrs6Etgdso5uPt4r6mdkBFDAVNfQ4KfMeloe5lVQHtzqoAPwGGwPmisoab7xfHGppflsDhHVgsx4+MxNbeWTzzbcBC3vfExLjgygD\/dKVfX1wpisSN38nA+EoCwvdDbm\/Eo21TyKJAm6wp0ket7z5Qka\/9TQb6aIchKYkKCWc5uQLfCt815udVUDkmyxmW9ay1FhWD\/qIRVj0JeDY2uBIZQqJLwI+HzBnneWeTKtzaEzuW6PGQR\/+NChtEeODOZ678TD6xcSLzVqQ++vUQmEvgRaUYXDQwA3Yi\/IuwQUDloDgY9Dr4QisK+C8bSl0PIbJKGSJaWNYPEuzJizZuvOQNiEkGs0L3Qzhj0OBlmPAxP99YFXDdihjemJd\/Ju7XBdawBK3XahXzob4sJqoEMND\/ARF791JX\/taFV3KI2VV+Pq7qPJqlJwtVop0teI9V\/qXJKdKJnT\/AK3Ct8GL+wYYSl1uWBOVFQt9G0I1VkBwSiECueHymWOzifr4CsDsoZFZTqP807tdVZYN\/olhbzMtHxHNYhck72Fytmc0RATzQZZHSWFvkmg0c8bCh\/wwLHAqyI1INWNLYufDepzKSqvq\/WMAipe8cp0Ou6mPvalp35WcRsy2fX+RU\/xPJJFBt7MeeTcLCEffx78Z9ehS8Yc2F5DtY73f0TKLwpoUQegfQdAGL45E1hfBhq\/x8nfK3vdh0qnzOfmZ+tpvlFvWy3PVtbE5SpIsF9N9U+fW9YAJMuFQSBRoWJ7FzIoHCChoQ+toa1PRxUdh3+SdwvRaW8es2lknEisWuo8rK4FxYu2G9byhKmwFxr8qr3xL38yDyb9WHlSsyb4EehfNFcICH90nXjozxxa4JqUDp4s6qfkJELLxCQMWeYHMEmFrI1JYIw43tOJyHd477+UA8oCdL2iAeG++GgnRKj5bhntj9pBiuFmp87yqv\/klAttYUpl0FXTRq6J\/C+Mj8axlo0sKyP9jH8hLNbI5Y1AH\/AwsxXEW4F45XsczYcSdzw0CKkPq3YO6aqG8MFriLZd\/Uz\/K29LDchQm29EOq3075P2evnK5AojOlKq\/rVnxvIZ1aUEgSeVQ7qOLSXzSS4WjagNjBUBPXp69CHVrnceeSTrK5H+9mOfM7Wc7BYbaAEmwRjbKF1MNyqYflLGpli6RPmtjLYwF+O3bFqIePKL+ilfo1YRKhYZLBQoq46HVPXiTyi9tZ5u8TLJ9aWcZRYmXCNQMGtuB\/RFJ\/dWCmFvPyu2I+3oQJ69SRhFvB0GrtYYzIebb0W9QyegTirbAUA\/rG8Vzow3Ovj7ya97Ky9\/WwvMFWFnrj5uWXfN7JwGhgYjAFrlfp4wcjBp8N8dvStZeoZ7B24Hb7jqhUJas6YTXSOBGqKXZ8U6sT17AMeM1s\/js6WM7oSTZvsJVliACbrYWXfrImoB\/FgjPZwqlwwQSTC8s374v7+KpYkQQNALWx+df2sNyyQTafRthCIraIBtg86mDZu3pY3sMdLNsZ3HFOqSqg3xL36VvBxJaase9FD+ao8F3+rohHG6gp1Fei9o7z93NFbSzzih6W+6culhM\/yeaKj9nL8gi7YivLpBaWiQ9LxBZTN8vp7GJ5j\/axpcngkmDw1WnxQu3XKJcZ9fBDyvAjclq9csezjE59lSUzhHGHGL2mm+V4EmLyFFALyxAoF9D9YKAQriNDJDE8pxYIpzgrmEm4uibmKyMzCdfAJIekIwwfjnOVi0saaGRYaTPLMIkVUgvLlqiYbq0ODId3SnV\/ML4I8IBEJa3Jhv05kN9rWXQnnIv7W4sKspRWh9zSrw2ESHX+CZYRJpZvMVeOiID6U4K9Pl6cZiKfFs8OS7RiZmUkjXp4Y6VPL42XpN1W3siSoaoDzH11D8st6GI5Q1ic21mW+MZobSyL5PdfTF0sh7pY9tZulvOzLvbQi2ssOgUBPKG2yIXCdIfOJLNtWgiGDvjqnP3nirpZ9se6Wa6\/i+V046NhkuAjqg\/qbGDkbpYrPnAny+7rYjlFXSz3S2BGdU3oTdhVoNthtYx6+GA8oFXGnrjsLqVTd7GFt3WznAO4DiYQdvpWli2T3AskOB0mI\/RsiIfOnUZYYiXousQIM7WDqr4xSIZRartrClMbQZSPHb5l7I4xP+\/evPltl\/Wxgsu7WPZAP5uH5zpGrP5V20qu+KB8Hm0QVR5PFfX\/XOEAADZaSURBVGwARlfir6Kt5pVIGz0Ja7DauZ0SCvpwrkgYESL3GOpoC8v4JcbJtoDW9jK3QBx5IsGuiJVd\/mClX2sA7jeYXyw2Xv1Ge0w0sao397C8b3WynJWdLHsEC3Qnyxbf0\/mNVcN3GWLzxWLexXKae1luXjvLOm0CyYtFwAubatz3fxq9rJvlfqOL5W5Uuy1WW+cHPF3DOdg9IYINsvltLSwzR91g8xMXX1G18p23B6v\/68NGgol44gRLXNTH8n\/dybK3Y+XvY3PpBMsQ4vkJlpEsERN08yKxk6VgEOyg2AWFT9jgIxYI\/LAz2AXGwkovKv5NPB\/nYscOejSRGhnx8S8G3bImbQvLWIV3amEZglma2RwRkrgtX\/tG2H+FiLWO+LSNEOFSuQLBgAA6d+asooKGirYSuMtQn1JIBKphV1ZYX8TyX9fKsg5iUcFzYZHFgtfNckMnmed7xEhM4uUJ9tZw+A2fCD122U\/WrmXJxayFZS47yeZ2j7AFQlTGQuD8lqdrUJ+sRTvRw3Ke7LEW2wv0IlIZu\/UVXSznR90sJw6mwSSwi0\/Pt0njkxCBx+08mFiD7Mn3d7GFf+hgOc90sOyTWCz62dzkudgF+lgezhWx0KiLiyB9J+OpspMQRasL+QnEBsNS3lDq2oGYYPt9QUCvlAYs2zW8Moa2plAfCpdeIaBzW9mCq9U5zezRX2NhUWoDJjqYRhmQ7MdHi2fkYVcGUzp3UzBpKhdg0Ei7p8qvVwNwHr7v6oB+EuIvmNl5DSEV+PT28HwZqNDGsm7F2CnpCM+IhRPP28myOrpY3vJe5v5pgj1zNTEal87YyjIb8b2d3+35NIwJroVFpIflbOpi2RPe8wKdBepkOd\/tZrnV+OCDbN6ED\/NCG8TqFpbZ0MIyl7ayzM1tLHN3G8vqBbNi4kEUA7M6zwPjN7M5MkXPD9wq3gQmVbjIwspqlUGJFaXVRde8\/U83EEuK6xkBJqzObSz7Y63skcvxfwmiLrGVoYOryCtco6qIL1u9iwmk\/26W5xlii0Za2JybT7CMT\/SyvFG7JALxEhIKdP4WljmrlWXcOcgWj3axecJSvWnTa1FPaYPwrcI3bfldYZwKuiWmNaiVZVzTznIFkoq9jk9egl0SWXHZA7GA1gRVAc8oLMqlMsEC1uaIh29W1t8TLKMMujB2YfsY4pmxu9rsFl1tLHN7K8t4roVllrawzAPdz0PCOlXDQoINAK2H5W7uZDnJ+lkXaBqphWV+poflbcWqeTYYVzVMKohZuA+YFRMfE2syfVqJqG0sc9NsNvvlcGUBzrWuyNWJoAaAyUU92rpo0Yzcimfe\/L11xNLqb731VQm28bpBZs5tZZnJGj3tLPf32GWa2WwhtgJ6VkDJwiUjQh35wapCLW9LNRMFuk6ywEd7WV4d7o8J38oye1tZZh\/+79QJ8Zx4lxaW2d7CMoZ6WJ547h6Wu2mArRIpf5FNb\/x\/8ULNE\/PJEEvsqmiIrMLvnSybt7LMY60sO5mm2cIy7x5m5kPEIrysnr3q2QF2VWjt2+6IFF4Jn+76iKnVhk3tQF2x3gUM6dnEXt7OHnlTO8tqBNM4mVg1SFQYdzwzvgO+B\/6e7PgX2iAJ4HkgDfSw3JUn2KPnjX3nJU1H2f0zellOIURAaSCaOPjnqmEy4Zm6WPa+YyxDWEcr89krw2WXvCOf2ASjRIJtvfYkc\/+zi+XVSJ3djesMnGAZ32lnmeuI+eGCEpUq4KaD9bWh1FVZ6efZ8SVXJnW1BFur97K8YkgFmHBgVjyLtLZikk98Vvm8UsKwG32w43WznJFuNndugh0WFlo8e2XxjFsqvTwfZWThvlJJ\/S0so56YgQnvb2UZt0MEhfSB63azvIo+Zv4hwaonYECvTbBXY1yUe+wge\/jdvSyvG+9wtpjy+TQs1JDu5Jjk5hxgD0+IIrtAU6R2lvXrXpbXpiy8k03Mc9Ww0\/WyvN2Kee2UYNsu6mPuD3Sy3F93sJzSTpa9Xxna8C8mCt4H7wUmkFbSxZjMIqwS4Y+hFZeOY4STbPEnulnO0k6WM6rcJi90THA+GNpyt\/R2sdyCQeZNguKDIkvfeZUCPmhjGfeBYbFwpXoPa1cXPthOluPpYLm3DzLjOmL7JgQqHGYPv\/8km9v8fAyPZ7ONjUk+9bC8fR02ieMCTYH2s\/u1bpa7VomG59MKbW94thMsI9jGMu9vZZmZLSyjoJVlrGhjWfE2ltkmLZ4yeETqdKnFcPRbIvAJYvnjdu5eNv993Sx3difLrgWDwLIMA8wLZVxnw\/XASHhePHcnywl2CX\/6wnEg+O0s98pOljPceQq1AswMyzwWGTSpgmQ2t7GsSBvLevwEy1zUyjIyMG4nWMZO3M95jfOhYUwg+VlSiq+ezU4Z836BbIQonV6W14KJ5BzQ861hYQHj4VnRMFnxscFoECmnahmH\/jXEFoy2soy\/Qc\/sZFnf62BZizpYdoNkqsViIk3GMNPd8NwQzaVun5VoZ1nxTpaT3cFyvt7Kst7VzDIKhtj8hPO8yRquBybFuKhIKdVglDpfF2jV8PxyM8ndc5RlCHvAeU+AeKn283\/VFOkPB22xzVbGxynRCp8vdbCsB5Vodr5\/1OlsYOAWljnSyjL3trLMEezYStSe6iJwthp2eykaLxJicwvLGGhhmfvbWOaUGfg\/oWE+YlHrY3kjrSzj+ZYEOiV5Z894jR2jLWpq36wt1B+NevlddmDClIQMkWq\/fj9QCfG3FUSfOLhCotoHjWSpzjv3LHNVqYCB6aAKdudrO1n2Y9A5zoZ4+FJplu44of98ahCdIV04+\/8vNGUEtLwOec55\/EKowkz71o4lrt3K7x40tMVAEkGKJ\/DJVG53lU\/kav8bmW3jLoCAAoCoyewWidSH8h5IjoZfEEnrwHpCYj4QEwSubUHazeMu8jxoH5v95k6WswXM6xywC+1COx+bFKkLsNiWEpv9gqXRsFf\/Ldx1Et6XfxAooxLtRFYWAZySOM7kAfjpBTqp4Xr\/uIsE3XyVqkmLLJIKN78NmSXxgN6GE1qfngUMoZ\/iBnDQS+QFbTeCDZ4vrm4Te+RNXSwnLK2vEwfqQrvQztemovbaWOZyYnTGJXJByFmXxdX5SWycIi4+f+bbwiafB34DH1Z6+S7stuUF\/CEwMyL5wMRBO1onEAcBhAYGVjmmlT4+AJweoA5WF7ru3lOWno26PPAHAp7FYuATItje5CvHXXAKVM9mv6qDZW2WETkTB+hCu9BeCg1M3MoyC53z+zQEXO\/lgMwFA8vsrzE0k6hHv7nxsfTs2kL9t6iuqTZNhKqCP1VgT7K+WIVb+8rOJenLwob2bMSDcpT8pIBX8aSuIBgy+GyAtYVMrUBgFqug9TNIKzzBMooviM0X2ku9wTNghdFOueZv2J12G\/gnbPL9gBZC4TiA8k+GG4c0VIADAhYJ8MIoCl9XrC9TBQAmENABti\/Vr684RQEvgeCYz98kKsuZWgv04og5tWJNx9mcP4B5Xyy3yIV2oZ3NBsOjZaGfUkIE4IZR6SNk8Cr8jag7oH06jwNBzIZhq74o\/X2TphyCCSOG9vfaIv3ZKj9fFvfpP105eyxY\/XQUMrS8+mK9F3jKk97EojaWfW03yx3+v2rJvND+85oM+JhLHSzrxBGWOWmJVDCjSFDxuj6yu8w1jMqQzmMmo7V5rkuq\/PwPcR9fWR3QN4jaVbdaIAAhn\/4BlMyQWEMSzT7u5z1TreGLnfip+ZcL8LCIqS1CVTrnMYqaWcYWBDz8X\/LzXmj\/+U0mteTTCTbH45zzigDXq4rKPZ17+XUoi+M8JhWhPCzsUjAmI7NNZbklC8dLMZivBONCURZgZFadobDJf7dzqb5S+YcnI1EP18cfOIR6Nu6J5TZBSHez56leaBfaf1KDKA1ffvMkaB+oPAnmi\/n035wOWA8Y1rvK0p8aq\/\/M58L6jJRS8GnI1OaOK\/8K0bfSx42dS119SGOTJ+l\/rit2NTeU6quBNGi7\/jgSGMmGVoKKcgKTyeC7UonSzWxO5HzLKLrQLrTpahClrYQUgYlmJ1RvDJtaN\/hDVPCwypxORmGvduvOpa7nqgv1Y6gKiT5U8thV5uoLe05RFnezhV8EQDZUrNt9mvKbikRdHp\/+aHWhfnyciduiVpb1oZNJcDm7+Iz\/q+bssw\/Q+dyn\/j5XfervyfrmUAt7hFrYo7ZjHhV9+O1UfThH9qlrTrVP3RN9zud4IX3qHabal\/q9Jvahqb5Tnzv2rhP7ulgWjLP9zWzOuFIpIa9+CyKrAGGM0Eh7zepTUX3ZjHeEPWlfUJDJzjpe006I2dxerF9vB2YDHWd\/f5REIr78wC3sYWph99s+EgbhQWphD4wbwNR9D1h9agDx0dD3YLIPA3pCXP8h26RK3Sefw943Z8Jxqa6HZ5d9D5+mL9W7PuTom+pxk42Jsw\/Xw7kPUttrc6n9XYup\/VJgZGGcHqK2N86l9nflU9ubgU8lr9928Xxqvzyf2l6HLKv7xLXa3rpA9LW+Ksfqy6D2SxbKvpdnWX2Z4tqiT3yL+6nt1TnU\/s7F4r7yvR4Q1xjrA5PdT62vzJZ9lyMeQH6L1v\/KpvbLVB+Oe2Dseu\/EuY73egdsKlN414uRO22965vmyXcV728ddxGOW0xtb1HHPTx23BuBe2aNyVvUOOWKPjx3su\/1eTTKsqmZ3f8rInozEaUR0cVID21anv6hs1WP6ZQE\/Xd7qeupuF9\/FBXqVT+sadUpCk05KZFIvGvYOLiLtvQR7R6i\/vlV1PXuIhpe2EQUOUm0Z5B6f7WBuq5fSiOBQ0RVA0S7B6j7S8up53NP0MiSo0Q1g0Q7+6nr+lLqvWUtjS5vJqobokRDL3Ve66O+Hz5Ho6taiRqGabSygzqu9VP\/XVFKPNdFtHuUhkqbqO3ieTRwd4wSz3XKvqVN4sMM\/KWSEhs6iHaN0NAT+6jtjfNo4I8RSjzTQbRzhIbWHKCOywpo4O9VlNiI643QYOFO6ri8gAYfaKDE1m6iPSPUnxMXk0n0bekm2j1M\/fOqqPPdAfmu0ZNEjcPU+\/NnqOt9hTRs7CeK9RM1DlH3N1ZSZ7qHhuc2EoX7xJj0\/WEjdb23iIYL9hNV9osx6bltHXXf8DiNFB8hqh4g2tVPXf+zhHo+uTzZl9jTT50fLabOd\/tp9MlmohNENEI0XHGUer62hhIbO4k6iWiUaMCoo97vPyWfrVce1\/f3rdT38+fkmJ8komGi3l+sp5N\/riDaMUw0QESDRD3fXk0D98WIGhNEQySO7fneGhoy9xAdk9dP7OilzvcGaNi3l+io6uuhzuv8NGQ2ER22+vb2Ued1ARrKbyQ6JJ8jcXiAum5YRsOB\/cnrjdZ3UNcnymhk+TGiFtk3vPEIdX6wmEaeOCbfFX0Vx6jnllWU2Ngx9q6LaqjnayspUdFD1C37+v5VQd2fLKPEsx1EHfK+A4EGee62HqIu2dc\/N059d2wgivcT9Y2NSd\/tjr6fb6CBHzxHtHO0M5FItCQSicFEIvGQkycUVQfSP4yStOpv1DauDugLqgP6WiQUjT\/6eVL5Qv72qIe3n1g3C0auNhSJRn\/I5DWwXqM8R8jQf6jKgdgpkUh8dHTwRHP78TLaW\/dPOrQ9U7xs\/\/EmOn60kPZW\/4MO75pPdHyUTrbtoWOHvbQ3fjcd22MS7R2kvq6ddPSgm5pid1Hz3hKipkHq7amjI\/sXU1Pln6ll73JKNA1QT28VHd67gBqjf6T2g08TdSSo+2SUDjfmUWPlH6kj+hQlmvqoq7eCDu3OocbYH6krtoVGd3RRR\/dmOrQ7kxrjf6behjiN1LVSe8cGOrhzDjXF\/kL9x\/fRyP52amtfRwd2PCKeb+joURo+1EqtbavoQMODtLfmHhraeYyG9hymlpbltL\/+Ptpf829KdA3SUNsxam4uo321s+lA3cOUaOylgdZDdPxYMe2ruYcObc+mkWdP0MkDu+j4kQDtrf47HdmzmOjwCPUd3U7HDnlob\/yvdGyvn+jYKPW21dPRAwXi2U7sW0qJeA\/1tMTpyP5F1BT\/M7XsX04j8w\/QUNtxOnH8MdoX+xftj84WE2xopI2aD5fSvug\/6EDsIcGMg6PNdPxAgPaG76ZD1dmCkQcSR+jYPg81Be+iI\/ULRV9\/Yj8dbSygpoo\/0bHtXsGwfSO76cjuhdRYfied2L2UQL1D9XR4+1xq3PYHaok\/Jr5390CcDjXkUOO231N77TqizgR19YXoUEMWNW77HXXt3ErUNkydPVvpYH0G7dn6O+o9Vkc0MErtXc\/RwdpHxPX6jzdSYmiY2tqfpgPVD4pnGTh4gEZ7+qi1dTXtr7pfPPNIXzeN0klqOb6c9sdm077wP2i0tZeGE13UfGQp7Yv+k\/ZH\/02jde002HOcmg+X0N7oP+hg1SPy\/QeO0PGDfjEmh2vzxII1MHyQju0zqSn4FzrakC++xcmBPXSkKZ8aK\/5IzY2llNjbT51tFXR81zw6WP4nov56SiQSAqRBkSjFavI\/oLIEeEoB6AcN\/mMAFbYjbNnkNTjOft6USEC5ePl6XLwqwJdFvbLebiRf+3\/VAb2\/5SlcXOuGkSpsar9CMa6qQn0lwjGd10okEq9u3lm6v3HFh2nb\/DfS5pyXU+3jX6CWfcspHHDJvmxGDatvpea9pRTyzhB9m7IY7XrmJ3Ss0UtB4520bf6bRF\/j5j\/SkR0LqCL\/7bRtwZtoUyaj\/cHZdLD2USpf\/DbZl8XoUDyL9kXuofKFbxF9uMfR7fnUGLqTyhe+WVxvS+5\/UfPuQtq19WdUvuBN4r5b572OTjSW0fbnvifO2zbvIipfeDG17ltBdeu+Yh3zegoWvIvaDq6hmpWfkX1zX0sRTzq1HV5H8eXXi74tea+mWNF\/U9vBtVRZ+l7Zl\/tfVL30E9R6eBVFCmclx6Ru+U3UcuBxChfqyTHZsfZ71NxURCHvlckx2b3hV3R0l5uCxmXJMWnachcd3jGXKgreLvo2LmC0b\/Fd1BOPUOUTH7Ce5VUUK\/4gte1bTdHC65LPUrPsU9Sy70mK+NKt+76M6lfcQieayihkjn2LnU\/9iI7v8lOwAN9C9u157jd0tGERVSy+VD5LJqO92\/5OB+MZVLFo7FscjD1C+yvvHfsWWYyO1C0QTFC+4GLZl\/NyOrbDS7u3\/IrKF+D7yPFr3lVKO575gfwW8y8S\/S1Ny6l+9S3i\/9vmvUHcv\/XAaqpd8TnrW7wOIb7Utn8NVS39qOzLew1F\/ddR26G1FCt5v\/X+r6Sq4o9Q66E1FC26Jvktah\/\/vJyfPtv8XPVNat5TQiFj7FvsevoOOrbbmxwTHLdr9U9ob+RvVL74LWJMKhe\/mo5U5dUS0QR9N+rht1UH9PU7lrhCEY\/2FcRAA7wfpXpiPn4URd9wXKXX9f2qgL6mtlCvDZu8TJVRnZSezrj09QjdOrF2ljBXWzV5SvHblsVpH95e4noyZKRlpkpgiKNioU+\/VhX5Ol7r+9qeJ\/5bfNBg\/mVUvvCttHfr3RTxXkUVi98uBh\/9+7b9nULGDAoufgdVLHo7hdwzRB9+Q8P5Ee9McS6uAQbChKgMvJeatvxFfGD0bVvwZoqXfpgaN\/1BfNxQweVicKvLPkm7n\/21YL6QG31voLrlXxIfAR8cx22d\/3pqeOwW2r7qO\/I49M17He1Y8wNqWPE12jrvDRRE39zX0a5nfioWIlwb98W5u9f8gqqXfFxMQPlRL6LGTXcKxsGzivdf8Gbau+UuMZnkmLyDKha+jRqX\/Y7CHpdtTN5Jezf\/jULuK+Qxiy7BNxAMon6vWPRWipqzqOmpP1H5orfIMVn8Forku6jlHg\/Fiz8kFh8ci+ds2vwnsaCI8RPf4mLau\/WvFPVdI64v7rP47bR3298EIiXug7+D7svFfXF9+S0uoYhHF8eJ8wreKa4Z9V8r3g1MKb\/PxeLdmzb\/UYyF+BYL3kTVSz8umF+NMX4D0+x65mfyW7gx7q8XC8mOdT8c+z7zXkfb13yXGlbdOvZ95r6Odj59O9U9cZO4jvgWC15Pu5\/9FdUs+3RyXmyd\/wZq3Ph7ipd+RD4fxmTRm6lp\/Z1iDpXb5+eW8fOzIv8dyflZgfm5WM7PvZvuHj8\/PelU5\/2ieG88W\/n8i+jwhpuo63Dwq4o\/UMAsHkh777bFLn0c46jSNabuqy3SS\/E7\/o54+EaU7wEfolB6yNA8qaRcBp9UPOD6SW1xuoApBUU9\/J7qgH7EQujfcSrlm4i9POTR\/lZbpD9d5dfvLc+fMYuI3nC0Nn9vtf9yinhcVLX8Y3RiXxkdq\/eKQYx406l6xSep9eAqOhzPE5MbO0HNms9Rx5ENdCB0nzzON5Nqn\/oSdR7bRk2b\/yyYIeK\/iurX30LdzRHatf7nYgCjhVdTw\/pbqedEFW1f8x0x0NHia2nH5h9Rb0sd1T3xJTHY0ZLraFf5z0UfdkN84MqSd9Oe8B+ot7maYkUfoJD7SqoseS\/trfwb9TTHxCTHB4wteT\/tr76fuo6WC4ZCiy37IB3ankMdB54V18Lkjy\/7EB3ZsZja9q4SzwHmrHrio3S8MUAndi4REyXidVHVyk9Qy97H6Gh8sfjwYkxWforajqyjQ5WZcky8M6lmzeep49hG2lfxL3mcbybVPf1l6moOiokprue7ihq2fpO6tm6ljvJnqMJ\/GYV9OsVXXE\/H9hjU2rSCKhZfQhF\/OlWt\/jg1N5VQ885iKl\/0VooEZlL1uk9Ry\/4n6GjtInmPwquo5unPUfuhp+lg5aNUvuhiihTPotr1X6TOI5toX\/k\/xMIRLb2a6jZ8lbqOBQVjVuS\/jaJl11HDhm9Sz\/EY7Xz6R0I6iJa9m3Zs\/D71nqih+lW3UNB9mejbue0n1Heinmoe\/ywF3e+iyrL30p7wb6i3tVYwXMi8kiofez81Vf5FfNvKwndTyJNGseUfoH2Rf1L3sbBgnrBXo\/jKD9OB4EPUeWiz2C3F+6+6ng43zKe2\/U9RRcE7KOJ3UdWa\/6Fj9Sa17H6cKha\/TY7Jmk\/Qif1ldHy7X7yXHJNPy\/lZNdc2Jl+g9sMb6EDkQTkmhbOo7tmvUvuBZ2j72m+Je0SLrqUDlb+k7hPx+kQikeSbqE\/7EBL0qwP8ubCH3zaei8YTKjxGTN6BtN3qgN6ISpjqt2q\/6\/3bCngSzZRFPNodCK5GXZuIly+LB\/jvagq1j2\/N51ceXX31DGc1eyeVlV3zqkrvjFn2vkQi8QOhEAkrQBclmruEkSBBIzRAR2iQjtNIY5vQo0ZpkAboMA0mjtFwTbMwiIxQv+wbPU4jcVgm0Ncr+4aO00glLBhQ67plX98xShzoF31D1EEDdIgGmw\/RyGZ57hC1yeNajtLI+marr1X0DXU008h6edwgnRDPN9zVSolaWCbQ1yz7WlqIdg6KvgE6JvuOnKBEGBYR9B0VbfhYqzSc2Pt2HCNqxvsnxHnoG4odpsS2Thql4bExaWoXxyXHhJppZHe7NSYnrXFqpuHQcaJWvH+PfAdqoZGKZuq\/MyrPTRym\/r79NBjZR4lINyVolPpHDlJ\/1z4aeGoXUX0\/jdIQ9Q8foP7WvTRQ1kC0ZwhHUf\/wfupvbqKBonqi47hvH\/UP7af+w4004GsQOiLGvX9wH\/U37aahNfvFuw5TB\/X3NdHJqgYamFdvjXEb9fftpf6aHTSQXWf1tVD\/yb3U37CHBrPrMSjiPfv799HAjiYaLpHXG6Rj4tyBqj008hgsW3I8+3v30kB0jzREJfv20cnHqmi48KDsGz1E\/R1N1L+qXoxxgki+f3sT9T9WS8PmPkpg3EcPUn\/3fhpcv4cSWzvE2PWPHKD+zv00uGa3GBOMuxiTln00UFhHicpuMRfRN9C6Xxi9RtYcF\/MJ4zTYeQzzro+O0DiesBOiFccFYqQg2J4OP6VfsXnulVqtX\/ssiuJFPHxdpZcnkDucBNUIGXwVojwggyMHEdEistCU62B5wUTd1knQh0MFrst3LNG\/gJq16EskEu9NJBL\/SCQS\/0q0JH7d8a6Czr6PLqWT94ZpYHaMer\/1DLW\/aR51f3k59d8fof5\/VFLPl9dQ22vyqOfbq6j\/gUrqvztCPZ9bSW2vzqOeO56i\/gcrqf8vYer+xOPU9to86v3Ns9T\/YIz6\/xiirg8soY4rCqjvr1uo\/4EYnfzFVurUvNT+toVjfb\/cSp26j9rePF\/2PRink7\/eRp0z\/dT2hnnUd9cWGniwik7+Zht1zvJT+zsWU9\/dW2nggSo6+Yst1DHDpA5u0Ml\/lNPA\/XHqu30jdVyWT+1pBXTyHvRVUd8dm6jjnfnU+bFSOnlviPrxrt9+htovmkddny6jk\/eFqf+fldT79aeEa6TzA4VyTO6NU9\/31gu3Rtcnl1L\/fREa+FeMer\/xlHBvdH99hRyTv0ep54urqPUVWeP7vrRauo9ek0Pdn3+cer+6jro\/9Bi1vSJHuDi6b3yCer+8lrres0S6gq4soO6bnqTeL66hrquKhHuk4yoP9Xx5JfXcuJo6eUD0db7XTz1fWUU9n1tFnZd7Zd+Hiqjnq6uo59MrqeMSQONmU9enl1LPV1dT90eXU\/vrZLAO3nd8XwZ1fQrHraGe\/3mC2t+AKgtzxPv23LyWej7+BLVfJCsvdH1mGfV+dS11X7+c2l8zT7ibuj73mOzDe70yjzo\/VEy9dzxDfbc9R90ffky6sy5ZSN03Lqfem9aMvetli6j7S09Q75fWUNe1JeKe48bkfUvlcW9fSN1fepJ6b1pLXdfJ4zp0Q47JF9dQZ3ohtbJHqMM1vg\/upvbLF1PPF1ZSz+dX09DMJXSCPbzdySdg2FCB9vGGUv6ZoFu7dONsNkENdVKFm\/+iplBvBz+CLxFOqSp7hD1WCm\/I0DYCNgcA3CFTOxA2eSLi4UMNJa5jYU\/aPc6L2glV1YDcgQuqQtghM21CKFkLe6RygGULH6n0k0qfJXx38KXJPunHTd33gK0Pvljpbxzrg69R+mClb075TqX\/9vR90vc71ofrTTxu7B7yHZQDf2LfQ453xfOiTz2v6nvYcZw613lcqjFx9sHvLPuVb1P6iOU4yyb90\/JdVJ\/0MSt\/7en74HNVfnf4ncf80OrbTH9fqvdSPvIzeVf0Kf+\/87hUfXh\/1afeP9XYjfWNCky3OcucPAAEG8UnstSrJipjnIrCBs+vK9JPhE0+Gjb5SMjQmkImP2oVgs8XB6GAVm2x3DlBW0zXJY2P87fnpwiHBCEIe1dZ+vsQJYK\/EbwR8+nFMHhFPNogdmPnOS0sIwthZirI4EK70P5Tm4Xm+QsnDyCeAslCKD8T8+k5qKOM\/lhR2ozakpmTJg6hjE1tiXapBSjJYEDevsT1kQl8ho6q4vQP7Syd+ZnQItc1qh8FiVXVvIgx4\/1VAX4QhagrvbyrtlBfi\/KI+K3Gl\/6JsKFfb7+molaW9ZHzAWXxQrvQzmaTeNmZA4DfdfIAaJuR9nlVlrdisfaV2kJ9c9TD+0XpWZ9eHfHoV+C3kKHdFPbKeAtQDMXySvinY37+waDKQrITTNTbS1wjyEaCQStiypKQQSPNDWczUPLEcWByP3dDBIAsjq0cYnPQPWPSFEJFzWxO5YVkhgvtP7XJZIZFQOdY6pz7TkJqIXgHIjVSBcWG6OMPbPTOeLP8Xdt4eOVVhEqQ+BvJQvgb1R53LHENhU1Hxl\/Qk\/ZtyOaqolzMp70nZLquEdXqAsKUfbLSq9+ijg97eGFdsT4oduEiJBhP1HtBCABRgdjNLOPrF9IJL7T\/1IZ0QlmtI1Oga6BK5baCGePK1CiKmNpn64r1IDw\/9SWu\/pCR9oD6DSiV1YV6Ahsjir9XBy59fdCjfxubJrCzqvz6CPDpxl8RZusC7Zu1Rfqh5rWzCCfAjYTVAQyMkpa4YNyve5XsvTMwU4Nsrs7fkHflNcgfhl8Yf6MaXdjg\/dv9s0TRLNAJlrENwOUXgOwutP+kNpbQn+FXcz1ckP6+2iJ9QCFvIAMJKbqr50jbEWjX0vR3Vfr5lfh\/ucGvqw64ViD2AnWlsSsDn25tnuvVIVO7HzA81QG9YWv++CLw42j1wisv3rU0\/XcRk9+Ov0Nu7W91RfowDFSNy1Cblu+ImGMBH4qQeLx7WfrJsKlVqvMACo8VpNzmIz7O5rynh+WOTHed1\/OnwXIJi7myLMM66jxGNWVZVQ0W3emwEUgLrby\/stLKZ8J9pLXaec4LbSojTN7Pbi3H79JifKqxeOk2bEaw73Sw7FZ7oTukAUKChQsIVRYkGiVvh3cnVDDjI+o4RUEz7cNVfr0Zx4Pfagr1nrChfR+\/gfHri123o3qD87zTEgxadUX6D6sD+o2pnM8QkUOGduLIyqtg2l6DPgRjYyXBKlKeP367P84y\/iRB7SYOxku3oUqfdEd13\/wk9c0up74\/baLODwQmYZo51Pa2BdT1xcep68bHqfuLjwvfrD0d8Pk0yUTw1RZS7x+eo\/6F1TRQvJ0GPHXU94+t1HUDfKNy4XCe+3ybSB+8KJd6vrtKZO0MFG2nk49GqOvGZdT6OqQh\/luMSdfnllkpefYc3Jd+g+iMmk\/HWWZSxQSFzLQfKWYMGdrj6AubfPtRIL4aPGI\/VhFCmWsD+i31JenfBaSz8\/ezQthhgW0r4HQstICQoVUhUylkaI2pkpdbWcaS\/yxMaOSE5tHQcwdkeJCNTj5QMWH3AQOBee3U+\/vnZD7shGtPpUm\/eNcXl9FwOXL0JqfhyDHq+gyCDZ7vvVTDTn8\/dX9vFY3ss0LPHIT+wVW7k3\/33bOV2t4E6es\/g4kVwPtx9qioZmInqJpRL++R1RW05egLm3yJgGw2tFZ7HaRzSogugYUsYvKnkn2GFttemj4AuR5\/I+DDfk6C5b26g2VtsyBIJgzMS62BIQeKdiQn6ujhHqJRBPBJ6r5p+bhdTzDw55Ylfwf1\/nrD82RgGfhw8oHguOudjnpuX\/c876fu+QD13VvuvOxpqfsrT0yrBHAum8Q2z5oAoaOSfYJu\/iUUTYAVGX+DaeN+vW5HqQtJIcJldM4pZqTNqCnURbB1xODXITkiaKR9dcMC7T0I8qgK8CcjRtq4OrMgVD\/vYtmVL\/3SKo8KEIBEBzLdiQYf200nXn0f9fzk6eSkHfDWj2OW6WRgnNN358Zx10r0j1C\/WUM9d6yl7m88Sb1\/fo6GrZhyOyEs8vkwE+7Z+4tnxl1reNsR6v72k9T1pWXUd385jdSOv19iYIT6\/r6FWl42hkLyUm5WfaQVZezWcZsTCDnz1QFdMO2WxfwzYSPtE2DesF+bCV046tF\/c7ocgxedaov0x0KmtkdFmCAYO+7X92EFAnqH83jQQTb7Ld0sp\/ylXaXhUQG9kui0Eh1KdlAzu4d6vrs6OXnB1Nix1DnTxcDQu9tn5BMNjSavM3q0lzre66UT7F4rDBRGpX9TyyseEQghdhp6at8E8f50TdzzisVEJ4fHLjSaEPHlnR8rpI50g1pfgyqLj1C7VkA9tz8lUEg6ZhrWGLy0JS5Z3CwfQRvLiJVNYF5Q2K19D7nzEZMHFX5z3HRdglz6qE+f1sqG00Jhk69ok0gC8WSfwQ3I\/1YdJWFNS0WVbPbrulj2Ey\/l8qJggsHle5LzeWRnOyX6gDMjabBs11lhYOixffdWjLsODGLN7K\/JmGzFNDJe92EajstsLFCic8DCipq68Qz3PJkZHXdPJyX6hmk4eIT6\/raZ2tPyxYJ2pgvF+dZkeVFZcL2NZS9wzmM7Ic4ZxiuxebklRDNsQWGTtwkUDpNnOc85ZwTRIGTwDvmw2oZkP7KclkowaogQ48+aSO0sew4q3PexvJecXgzmaHvnAhqOArxpIp0tBoYxCFlEnR8pFtk5HdeZ1O4qoP6FVQIDa2jtXpHJJYPzpaFroLAhec\/E4Iiwfqug\/NO3DGp92RwaKj9Cid4hufOPJGQ7BZ28b6Ih76XUZIHveQjUSLSyrNOWEAqa\/HZkDsGNFDa0HPQh+yhk8CaRiGBqdc5zzhlFfS4du2xtkX7SHpEVNvljHeuvpgq35h1\/xuTUxrK+08ty2xGx5RzE87vBjfQwtb4yi7q+9gT1\/buCEjYR8+wxsFw8pN\/3XmrX8mm0BUh046l\/cU3SLztcM6abJlpOCv39jNxXL8sSqXdI02vX3CK9riPdpI73+KjrhlLq+ck6GijbOe7+oK4vPPa89O1z3WQBs8XUy3L3trBHJ8VHd1LI0DZ1rr8aNX+ToHaIcd6DVECD9yNJYfwZ54iAnlcV0FdtmKt9vNxwvV\/BfoRNfrdS5AFO7cSKnoya2UOuXpbzDAYNSPcvLZEaaYn\/FjtVonWMkc4mA49d8yEaWrdPXAuLR\/\/COA2HxySCrk+VCV3dri8Ph49a4vOZSjwyjVKJ5WMNKY4IYrmXen60ligxtjMDAfOFvN+L3bDrIkADkYPdLLdoJ5s9ad0jO4UM\/VNbFs+4EXxQV+xaFzT4d9Av4iXMtPduWpj21bCprU7lXj1ntGFR+rt2LHFtCJkTHdRBQ\/s33ExhQ7vV+dupqJ1l\/76H5XaCkV9KWUxyJ84ez8AlO6hFMLY6ZroZeA61vjybRg9KmAoYzY6x3wrxWlF\/diV1frzUdkei\/nnxafAHp2qPUOtrcynRLlFSQINP7HlJ7MDYMDpZtjBU9bLcg20sU1RGmCqFDX4PohDL3TKaUZEAvjD4sZoivRB1tu2\/nVOC1TlsaDFRMsKQvmCUW8G\/FWbat5oen0lNjwm5\/0\/Oc09Hx9nDvJvlLhlk80UJR+dgn29N7LKvyqSuGx+jRM+YEWvomf3UehF+R4ihTP6eXgaWCenKQDV6qJu6f7iCBkwJYwMaXNU00eB1y5PjJIPpa48KJBGI6Mn7L4cl\/vxmYIjL1o6b6GI586e669opZGqLAESHKERnTTHU9wWfAGHS3n9OCeUeggZPiMgrU+q7FQXa30UWhZtnAO0DUD0QqZ3nTpU6Wc4XelhuELrxgKjwMHHwz3XD5Oz54Woa2dU+jkkUIbjj5KNhart0nrDKdn22bNzvL4yB5eIhxNZJaPRAFw1X2SzQ3YPU\/lbUtT0D\/XcKDeOA9wA80Dgp5DxmYERUYYMYYgugtq1FKSDnHJwqSYSamapO2I9hI9q2WPuV9ds2Yew1+DHU4Xaee04obMy4HiJD3K8fBzNDzo\/59JPAuoU5XQDmeXj7dESedLHsH3az3HrkXZ5PjCyYxxHYMBmNNvdR97eeEEEUdnqhDCyf4yHq\/dV6GmnqJBoeFe4cgeiWggZXN007Q2Ecuj61hAZXNdLIjrZx1unzkYGx44JpEcvcw3LKu1juaTHgTkdhg3+wyq8nRASWV7sViQtVfr097J3xDgBe1BXrQ0jZBQa789xzQtHFLr2uyOVTZVfCRto8MHR1gL89bKT9bE+Zq7t88endSFOlSvbzV\/ayvDu6WW4txB18AHwI58d58dqj1PbmucKnqmigcLvY8ZJkC6tUNLTp4LgJPh0MrEIcW1+dQx28QADujR6w4BsdhNIgL\/x+Y02oBV8YrxbY6XxiYNhU5NyZjx13WzfL+bpznr0Q2lagfX9PWfoA8nYr3PxjrU\/PwiYmYHY25Wv\/L+rhRc76YeeMgMZRWzyWMojkhphf70ccNBR3950Sy2e6CVEwPSz3Oz0sZ2s\/m0cQr7vOQZoiJiVQKJMT9fHdQkS2+4TR13P76nF6sZOmh4FVU4B599HgykbnrcTC0THTYwN5e6Etg1pfMYdGLBcVpIy+f22m4W1jiRWDT5x7Bu5mucIlhH+7Wc6aTpZ3o3NeTReVWXm\/QUP7Rtynt1dZaBugxsf5dSGrEug5JSq79RVhUzsEeb\/Kr+9EuRX0VyxOuw0ic8jUvrlrWXpRxKP9LW66bkiFSj8d1MNyPtnNcoo7WXYfPhAY+sXalSG2dn6kJDlR4cppuzSPRptQLcuavEt3UTO7mzre55WJDikIMLnTx8CygYH7\/rbVeSsa2dlGrS\/HMWfqPkrdZIW+Bcnos5NZlXSU\/Yo6\/7swec9zZYXGbgsjqGTcnNYelruwl2ULXKrpJuA9Bz3a56I+\/b49ZemFwJKr8Oj\/DXhmGHZjPn4PMOUsVMmtzvPPCSHTAqBcwNOCIQshlMnfTF6D\/Edg\/wDRo75YHwm5pShxNqiD5aR1s9y7u1hOLXRk6MrwJTs\/6vS2OSIfdrR5zGCDomZ26l9ULZgTDNVxrWecuK2o96dPTzsDC7H20+ONZSDkCE+v9XkOtb4qi0b3S7VhpKGVOr9SSgP+saiv\/tzYWXJZTWwwSiGiT8USdLPcik6W\/b89toT76aagoT0qIalcYr4fX3MVPC8iDxgUNrRnoRcD3UZWPBmD0TmnFDLS\/lzp174cdGtP1xW7Eni4iEciVQYNvqWuSB9CvrCE5OHA0aKYccU7ndeZTiJGL+tg2Z\/uYbn5nSz7CEI0IWKfLWYWRqzvjSUvjKOhUep8vz8ZSohAj57vr3EeRR2zzGkUaWUTiQdvWzAueAOExAOZXD\/xnOfbMAa9\/7th3H2SNDRKHddNp8g+sUHiAiYVFm3suF0sp7GbZWf1vQCL8lQp6tY+hLDhqFcbAAxVyOCjAIlUXhkEMqHOEYonhE2+AMn+ISNtXNXCc0KINgkZfCXiPBFdEjS0vRGv9g0LQgShY2vDBg9BlKgtcvUHTf50xKM9GjG1+53XOlvUyvLeCCNFN8sp6mDZx+EuwEfGCj2dASLCAnvTY8I4lWjrF0EMQxsPUucNpQ7RUSYWDK5oFC6n4a2HqfubK85SrDBE5EdFYAdKtOB+aPBBT784K6F8+v6ySWRECRpN0HDlcer67NKzcD8pHvezuWKnhcTVybL3d7Hcxb0s7\/PIOXfOhbNFYUPzRD38r2GT74CIjAolYZMfDxk8U\/6e9rOoR78ZAO0RQ7sP0YsqR\/ickjCNm3wL\/h8yNF\/E4L\/H\/2G8Er8bmidk8Cr8f+vitNvwAsgXDhVo3zwXVrgOlvPmPpb3lS6WXdDBshuVmAVr5HQYwKQP9BFRukNWepdBG87jJGMhekpC8aQ+Zrqapee+PGusTZPuO7FJK3jbm+ZSx3v81DHTtPqm5\/0gGsMAJRfhxeKbdbKs+k6Wk9vJsj+bYFmTFuE7WwR3EGBiNy\/Qr4CUiSqe6Af+lQpeKiuTOcMhU5uLaieIxEKsdMpqgy8mhQu0mSGDr8f\/QwafrWojKYp40v6Mki3J401tm8pMslvlzgURm\/2qLpZzfTfLuaeTZW\/sYNndanfGao7J8fxwu+Sud\/oYY4uJT3nMdDV1L9Wcv093U6mMskTJxN+n1iAWI4UPCywYFhlB7SyzrYvlrOtiuX\/qZTnvIyaj\/s4VVeZfJqK1sMuGTP4Y\/g8GDRv8ZIVb+4r9WOzCIQ\/\/haiTZGobz3k8dHTxlZdh58X\/Qya\/K+y1lT2UL\/WJsKm1qQdFmcTzQvZPQb0s+7JulndzO8vO6WDZoQ6W3asmDhgb+vN0itwX2sSmsJVhs1BicTvL6uhgWZu7WPYDvSz7811sXhKm+HyiiJf\/pdKjf0H830i7KmRq3c7yJ0GT\/zNspn0L\/w8ZvHAqBc7OKsE0rkCmK9z8trCpjUOMR13hkMl3hQv0a8Xf+dpnQ4Z2h\/2Y85X62KJ3dbHsmzpY9gMdLOvpdpZ5FLtygi0UuzSYG5MNk845ES+0UzdINhg3qDBK6kE0FBbIDpa1v4NlrexmOf\/oYJmfSbC8S5zf5nwkSJsohoD\/hwr0m1Ml9oQNPj\/k0T6OHXiyMkTnjCJm2g0hg08wjYcM7b6gO+3b4v9m2o+Clp78UiNi89\/QwTLf38Vyb2tjmXmdLPu5dpZ5GGKe0snA3LCAYrfGBH2xfNHna8P7I7MHCx0WPHgC1OLXyjJH2ljWvg6W9VQ7y5zTyXK\/083yriHmPT9ihM+QQob2cNCti5q98MyEvfrPnMfAAr3Nd3ZiIV4wycANPgGtAPoAKiDi\/9h9oQM4j3mp0jGW8fpWlnFNO8u+uZtl393BsgLtLDPYxjKPYoKqCDEwtwrd62NzhV73Umdw7KJyx8wWhiXkzo4xqXxf9LWyzME2lnUAYnAny3J3sKw\/tbGsL3Wx3PQX01J8tini4bNRMgX\/R3QibZTIlHYKG\/yv500iv5NgTKgvu+YNzn47oeLaqfCx\/lOomc1\/QyfLcsEX3cFy7mhjWQ+0scziNpa5pY1l7W5lGR2tLDNhFyHRMPkVo0P\/w+\/YzaW1NVswC5gGjC\/bRMY6k4bzcR1cUzEjKuxhgcF9wYB4DsSb47nsz4nnxs6KhaqFZbS1sawdbSzzuQ6W5WtnmbPbWfYP21n2xxFc81LdVc+Ewkbab8M+qSpORudVHvDzIVieK\/PH4qb\/LxJiuLtZ5ttaWOYsOcGzv9nKMn7TxjLvb2dZi1pY5uNghFaWWdXKMhtbWcbxFpbZZe1kgpnB2IqxwEjQH8FgYCwlpjqb+g3H4XiZPicXCjDimBstY6CFZXa2sMxjrSxzdyvLjLWxzPVtLKusjWXNb2NZ97axjF92sJxb2ljmR7FQdbKHL0bwjPNd\/y9R1KO9e\/da14sqUfx\/\/d2YofOAiucAAAAASUVORK5CYII=';\n    \/\/ ============================================================\n\n    const state = {\n      sessionToken: localStorage.getItem('studentVerificationSession') || '',\n      session: null,\n      scopeRef: '',\n      dashboard: null,\n      scopes: [],              \/\/ \u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e14\u0e39\u0e44\u0e14\u0e49 (\u0e2a\u0e33\u0e19\u0e31\u0e01 + \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32) \u0e08\u0e32\u0e01\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\n      currentYear: 0,          \/\/ \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 (\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23) \u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e35\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e33\u0e19\u0e31\u0e01\n      fullData: null,          \/\/ \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e08\u0e32\u0e01\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c (\u0e21\u0e35\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e41\u0e1a\u0e47\u0e01\u0e40\u0e2d\u0e19\u0e14\u0e4c\u0e2a\u0e48\u0e07\u0e41\u0e1a\u0e1a full) \u0e43\u0e0a\u0e49\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\n      dashboardSignature: '',  \/\/ \u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07 \u0e43\u0e0a\u0e49\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e27\u0e48\u0e32\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\n      liveTimer: null,         \/\/ \u0e15\u0e31\u0e27\u0e08\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e16\u0e32\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\n      liveBusy: false,         \/\/ \u0e01\u0e31\u0e19\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e22\u0e34\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e0a\u0e49\u0e32\n      liveLastChangeAt: 0,     \/\/ \u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e43\u0e0a\u0e49\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e27\u0e48\u0e32\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e48\u0e32\u0e07\n      liveLastActivityAt: 0,   \/\/ \u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e41\u0e15\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d \u0e43\u0e0a\u0e49\u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\n      liveErrors: 0,           \/\/ \u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e15\u0e23\u0e27\u0e08\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e15\u0e34\u0e14\u0e01\u0e31\u0e19 \u0e43\u0e0a\u0e49\u0e16\u0e2d\u0e22\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e19\u0e47\u0e15\u0e21\u0e35\u0e1b\u0e31\u0e0d\u0e2b\u0e32\n      liveAsleep: false,       \/\/ \u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\n      liveEpoch: 0,            \/\/ \u0e23\u0e38\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 \u0e43\u0e0a\u0e49\u0e17\u0e34\u0e49\u0e07\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e49\u0e32\u0e07\u0e21\u0e32\u0e08\u0e32\u0e01\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\n      page: 1,\n      search: '',\n      sort: 'latest',\n      status: 'all',\n      dashboardRequest: 0,\n      foregroundRequest: 0,\n      selectedRecord: null,\n      \/\/ \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e15\u0e34\u0e4a\u0e01\u0e44\u0e27\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19 \u0e40\u0e01\u0e47\u0e1a\u0e40\u0e1b\u0e47\u0e19 \"\u0e40\u0e25\u0e02\u0e41\u0e16\u0e27\u0e43\u0e19\u0e0a\u0e35\u0e15\" \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 record.ref\n      \/\/ \u0e40\u0e1e\u0e23\u0e32\u0e30 ref \u0e16\u0e39\u0e01\u0e40\u0e0b\u0e47\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d \u0e16\u0e49\u0e32\u0e40\u0e01\u0e47\u0e1a ref \u0e01\u0e32\u0e23\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e08\u0e30\u0e25\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e34\u0e49\u0e07\u0e2b\u0e21\u0e14\n      selected: new Set(),\n      activeModule: 'home',\n      provisional: false, \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e08\u0e32\u0e01\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e33\u0e44\u0e27\u0e49 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19 (\u0e14\u0e39 init)\n      statsRequest: 0,\n      statsTrendRequest: 0,\n      stats: null,\n      statsYear: 0,\n      statsTerm: 0, \/\/ 0 = \u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35\n      statsTrend: null,\n      statsTrendComplete: false, \/\/ \u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e2d\u0e32\u0e08\u0e44\u0e14\u0e49\u0e21\u0e32\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e43\u0e19\u0e04\u0e33\u0e02\u0e2d\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\u0e04\u0e23\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\n      statsTrendLoading: false\n    };\n    let transportCheckPromise = null;\n\n    const $ = (selector, root = document) => root.querySelector(selector);\n    const $$ = (selector, root = document) => Array.from(root.querySelectorAll(selector));\n\n    document.addEventListener('DOMContentLoaded', init);\n\n    function init() {\n      applyLogo();\n      bindEvents();\n      const resetToken = new URLSearchParams(location.search).get('reset');\n      if (resetToken) {\n        showAuthPanel('resetPanel');\n        $('.auth-tabs').classList.add('hidden');\n        $('#resetForm').dataset.token = resetToken;\n        history.replaceState({}, '', location.pathname + location.hash);\n        return;\n      }\n      if (state.sessionToken) {\n        const token = state.sessionToken;\n        \/\/ \u0e21\u0e35\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e33\u0e44\u0e27\u0e49\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e23\u0e31\u0e49\u0e07\u0e01\u0e48\u0e2d\u0e19 = \u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e41\u0e25\u0e49\u0e27\u0e15\u0e23\u0e27\u0e08\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07\n        \/\/ \u0e40\u0e14\u0e34\u0e21\u0e21\u0e48\u0e32\u0e19 \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19...\" \u0e1b\u0e34\u0e14\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e44\u0e27\u0e49\u0e23\u0e32\u0e27 20 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\u0e43\u0e19\u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19 (Apps Script cold start)\n        \/\/ \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e37\u0e2d\u0e1a\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e22\u0e31\u0e07\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e23\u0e34\u0e07\u0e17\u0e38\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e22\u0e31\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e14\u0e34\u0e21\n        const provisional = showProvisionalApp(token);\n        if (!provisional) {\n          setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19...');\n          startSlowLoadNotice();\n        }\n        \/\/ \u0e40\u0e25\u0e34\u0e01\u0e23\u0e2d\u0e44\u0e14\u0e49\u0e40\u0e2d\u0e07: \u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e32\u0e16\u0e36\u0e07\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e01\u0e23\u0e30\u0e0a\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e02\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e01\u0e25\u0e32\u0e07\u0e04\u0e31\u0e19\n        \/\/ (\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e01\u0e47\u0e40\u0e0a\u0e48\u0e19\u0e01\u0e31\u0e19 \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e14\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 token \u0e08\u0e30\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21)\n        let abandoned = false;\n        onLoadingEscape = () => {\n          abandoned = true;\n          setLoading(false);\n          clearSession(false);\n          toast('\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07', 'info', 6000);\n        };\n        \/\/ \u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e21\u0e35 session token \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 = \u0e40\u0e04\u0e22\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 Apps Script \u0e21\u0e32\u0e15\u0e2d\u0e19\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\n        \/\/ \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e23\u0e2d JSONP 'config' \u0e43\u0e2b\u0e49\u0e08\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e2d\u0e1a \u0e0b\u0e36\u0e48\u0e07\u0e1a\u0e19 cold start \u0e01\u0e34\u0e19\u0e40\u0e27\u0e25\u0e32\u0e1e\u0e2d \u0e46 \u0e01\u0e31\u0e1a\u0e04\u0e33\u0e02\u0e2d\u0e08\u0e23\u0e34\u0e07\n        \/\/ \u0e41\u0e25\u0e30\u0e22\u0e34\u0e07\u0e04\u0e39\u0e48\u0e02\u0e19\u0e32\u0e19\u0e01\u0e47\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2a\u0e2d\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e08\u0e30\u0e44\u0e1b\u0e41\u0e22\u0e48\u0e07\u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c Sheets \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19 \u2014 \u0e22\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e2d\u0e38\u0e48\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07\u0e41\u0e17\u0e19\n        restoreSessionDirect(state.sessionToken)\n          .then(response => {\n            if (abandoned || state.sessionToken !== token) return;\n            \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2d\u0e32\u0e08\u0e01\u0e14\u0e44\u0e1b\u0e40\u0e21\u0e19\u0e39\u0e2d\u0e37\u0e48\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27 enterApp \u0e08\u0e30\u0e1e\u0e32\u0e01\u0e25\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01 \u0e08\u0e36\u0e07\u0e1e\u0e32\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e40\u0e14\u0e34\u0e21\n            const module = state.activeModule;\n            \/\/ \u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e49\u0e32\u0e27\u0e32\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e1e\u0e25\u0e32\u0e14\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e15\u0e01\u0e44\u0e1b\u0e17\u0e35\u0e48 catch \u0e02\u0e49\u0e32\u0e07\u0e25\u0e48\u0e32\u0e07\n            \/\/ \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e1a\u0e31\u0e4a\u0e01\u0e01\u0e32\u0e23\u0e40\u0e23\u0e19\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e08\u0e30\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27\u0e40\u0e15\u0e30\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2d\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\n            try {\n              enterApp(response);\n              if (provisional && module !== 'home') showModule(module);\n            } catch (error) {\n              handleError(error);\n            }\n          })\n          .catch(error => {\n            if (abandoned || state.sessionToken !== token) return;\n            clearSession(false);\n            toast(error && error.message ? error.message : '\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08', 'error', 9000);\n          })\n          .finally(() => {\n            onLoadingEscape = null;\n            if (!abandoned) setLoading(false);\n            \/\/ \u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e44\u0e27\u0e49\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u0e2b\u0e25\u0e31\u0e07\u0e1e\u0e49\u0e19\u0e17\u0e32\u0e07\u0e27\u0e34\u0e01\u0e24\u0e15 \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\n            ensurePostTransport().catch(() => {});\n          });\n      } else {\n        \/\/ \u0e2d\u0e38\u0e48\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07: \u0e22\u0e34\u0e07\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 Apps Script \u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\n        \/\/ \u0e1e\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e14\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e41\u0e04\u0e48\u0e23\u0e2d\u0e1a\u0e40\u0e14\u0e35\u0e22\u0e27 (\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d config \u0e01\u0e48\u0e2d\u0e19\u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22 login)\n        ensurePostTransport().catch(() => {});\n      }\n    }\n\n    function applyLogo() {\n      if (!LOGO_URL) return;\n      ['brandLogo', 'brandMark'].forEach(id => {\n        const box = document.getElementById(id);\n        if (!box) return;\n        box.textContent = '';\n        box.style.background = 'transparent';\n        box.style.border = '0';\n        const img = document.createElement('img');\n        img.src = LOGO_URL;\n        img.alt = '\u0e21\u0e08\u0e23';\n        img.style.width = '100%';\n        img.style.height = '100%';\n        img.style.objectFit = 'contain';\n        box.appendChild(img);\n      });\n    }\n\n    function bindEvents() {\n      \/\/ \u0e17\u0e32\u0e07\u0e2d\u0e2d\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e2d\u0e19\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 \u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e25\u0e34\u0e01\u0e23\u0e2d\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23 (\u0e14\u0e39 init)\n      $('#loadingEscape')?.addEventListener('click', () => {\n        if (onLoadingEscape) onLoadingEscape();\n      });\n      $$('.auth-tab').forEach(button => {\n        button.addEventListener('click', () => {\n          $$('.auth-tab').forEach(tab => tab.classList.toggle('active', tab === button));\n          showAuthPanel(button.dataset.authTarget);\n        });\n      });\n      $$('.password-toggle').forEach(button => {\n        button.addEventListener('click', () => {\n          const input = button.parentElement.querySelector('input');\n          input.type = input.type === 'password' ? 'text' : 'password';\n          button.textContent = input.type === 'password' ? '\u0e41\u0e2a\u0e14\u0e07' : '\u0e0b\u0e48\u0e2d\u0e19';\n        });\n      });\n      $('[data-back-login]').addEventListener('click', () => {\n        $('.auth-tabs').classList.remove('hidden');\n        $('#loginTab').click();\n      });\n      $('#forgotButton').addEventListener('click', () => {\n        $('.auth-tabs').classList.add('hidden');\n        showAuthPanel('forgotPanel');\n      });\n\n      $('#loginForm').addEventListener('submit', onLogin);\n      $('#registerForm').addEventListener('submit', onRegister);\n      $('#forgotForm').addEventListener('submit', onForgotPassword);\n      $('#resetForm').addEventListener('submit', onResetPassword);\n      $('#logoutButton').addEventListener('click', onLogout);\n      $('#changePasswordButton').addEventListener('click', () => $('#passwordDialog').showModal());\n      $('#notificationBell').addEventListener('click', onNotificationBell);\n      \/\/ \u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e17\u0e35\u0e48\u0e41\u0e17\u0e47\u0e1a\u0e19\u0e35\u0e49\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e23 \u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e04\u0e23\u0e1a\u0e23\u0e2d\u0e1a\n      document.addEventListener('visibilitychange', () => {\n        if (document.hidden) return;\n        noteUserActivity();\n        scheduleLivePoll(0);\n      });\n      \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d = \u0e22\u0e31\u0e07\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\u0e40\u0e09\u0e22 \u0e46 \u0e08\u0e30\u0e1e\u0e31\u0e01\u0e40\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e30\u0e2b\u0e22\u0e31\u0e14\u0e42\u0e04\u0e27\u0e15\u0e32\n      ['pointerdown', 'keydown', 'wheel'].forEach(type => {\n        window.addEventListener(type, noteUserActivity, {passive: true});\n      });\n      $$('.app-nav-button').forEach(button => button.addEventListener('click', () => showModule(button.dataset.module)));\n      $$('[data-open-module]').forEach(button => button.addEventListener('click', () => showModule(button.dataset.openModule)));\n      $('#changePasswordForm').addEventListener('submit', onChangePassword);\n      $('#scopeYearSelect').addEventListener('change', event => switchScope(event.target.value));\n      \/\/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e25\u0e49\u0e27\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e04\u0e07\u0e1b\u0e35\u0e40\u0e14\u0e34\u0e21\u0e44\u0e27\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e43\u0e19\u0e1b\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\n      $('#scopeSchoolSelect').addEventListener('change', event => {\n        const scopes = (state.scopes || []).filter(scope => scopeSchoolOf(scope) === event.target.value);\n        const current = (state.scopes || []).find(scope => scope.ref === state.scopeRef);\n        const sameYear = current && scopes.find(scope => scope.year === current.year);\n        const currentYear = scopes.find(scope => scope.year === state.currentYear);\n        const next = sameYear || currentYear || scopes[0];\n        if (next) switchScope(next.ref);\n      });\n      $$('.status-filter').forEach(button => {\n        button.addEventListener('click', () => {\n          if (!state.scopeRef || state.status === button.dataset.status) return;\n          state.status = button.dataset.status;\n          state.page = 1;\n          refreshView();\n        });\n      });\n      $('#openPendingButton').addEventListener('click', openPendingRecords);\n      $('#clearFiltersButton').addEventListener('click', clearRecordFilters);\n      $('#searchInput').addEventListener('input', syncClearFiltersButton);\n      $('#emptyStateAction').addEventListener('click', () => {\n        if ($('#emptyStateAction').dataset.action === 'clear') clearRecordFilters();\n        else loadDashboard();\n      });\n      $('#searchForm').addEventListener('submit', event => {\n        event.preventDefault();\n        if (!state.scopeRef) return;\n        state.search = $('#searchInput').value.trim();\n        state.page = 1;\n        refreshView();\n      });\n      $('#sortSelect').addEventListener('change', async event => {\n        if (!state.scopeRef) return;\n        const previous = state.sort;\n        state.sort = event.target.value;\n        state.page = 1;\n        await refreshView();\n        \/\/ \u0e42\u0e2b\u0e25\u0e14\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u2014 \u0e43\u0e2b\u0e49\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e23\u0e34\u0e07\n        const applied = state.dashboard && state.dashboard.sort;\n        if (applied && applied !== state.sort) {\n          state.sort = previous;\n          event.target.value = previous;\n        }\n      });\n      \/* \u0e01\u0e0e\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a Gmail: \u0e16\u0e49\u0e32\u0e21\u0e35\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48 (\u0e23\u0e27\u0e21\u0e01\u0e23\u0e13\u0e35\u0e15\u0e34\u0e4a\u0e01\u0e44\u0e27\u0e49\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19) \u0e01\u0e14\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e04\u0e37\u0e2d\u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\n         \u0e16\u0e49\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22\u0e04\u0e37\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e36\u0e07\u0e40\u0e14\u0e32\u0e1c\u0e25\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e39\u0e27\u0e48\u0e32\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e2d\u0e22\u0e39\u0e48\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e44\u0e2b\u0e19\n         (\u0e16\u0e49\u0e32\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e15\u0e32\u0e21 event.target.checked \u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e02\u0e35\u0e14\u0e01\u0e25\u0e32\u0e07\u0e08\u0e30\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19 \"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\" \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e27\u0e19\u0e04\u0e27\u0e32\u0e21\u0e04\u0e32\u0e14\u0e2b\u0e27\u0e31\u0e07) *\/\n      $('#bulkSelectAll').addEventListener('change', () => {\n        toggleBulkSelectMenu(false);\n        applyBulkSelectMode(state.selected.size ? 'none' : 'all');\n      });\n      $('#bulkSelectMenuButton').addEventListener('click', () => toggleBulkSelectMenu());\n      $('#bulkSelectMenu').addEventListener('click', event => {\n        const item = event.target.closest('.bulk-select-item');\n        if (!item || item.disabled) return;\n        applyBulkSelectMode(item.dataset.select);\n        toggleBulkSelectMenu(false);\n        $('#bulkSelectMenuButton').focus();\n      });\n      \/* \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e2d\u0e37\u0e48\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e14 Esc \u0e41\u0e25\u0e49\u0e27\u0e40\u0e21\u0e19\u0e39\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e34\u0e14 \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e21\u0e19\u0e39\u0e02\u0e2d\u0e07 Gmail\n         \u0e1c\u0e39\u0e01\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48 document \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e41\u0e16\u0e1a\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\/\u0e41\u0e2a\u0e14\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e25\u0e2d\u0e14\u0e15\u0e32\u0e21\u0e08\u0e33\u0e19\u0e27\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a *\/\n      document.addEventListener('click', event => {\n        if (event.target instanceof Element && event.target.closest('#bulkSelect')) return;\n        toggleBulkSelectMenu(false);\n      });\n      document.addEventListener('keydown', event => {\n        if (event.key !== 'Escape' || $('#bulkSelectMenu').classList.contains('hidden')) return;\n        toggleBulkSelectMenu(false);\n        $('#bulkSelectMenuButton').focus();\n      });\n      $('#bulkConfirmButton').addEventListener('click', confirmSelectedRecords);\n      $('#refreshListButton').addEventListener('click', () => loadDashboard());\n      window.addEventListener('scroll', queueRecordsPin, {passive: true});\n      window.addEventListener('resize', queueRecordsPin);\n      \/\/ \u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07\u0e41\u0e16\u0e1a\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e2d\u0e07\u0e44\u0e14\u0e49 (\u0e41\u0e16\u0e1a\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e1c\u0e25\u0e48\/\u0e2b\u0e32\u0e22, \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e48\u0e2d\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14) \u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e27\u0e31\u0e14\u0e15\u0e32\u0e21\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\n      if (window.ResizeObserver) new ResizeObserver(queueRecordsPin).observe($('.records-sticky'));\n      queueRecordsPin();\n      $('#prevPage').addEventListener('click', () => changePage(-1));\n      $('#nextPage').addEventListener('click', () => changePage(1));\n      $('#downloadCsv').addEventListener('click', () => download('csv'));\n      $('#downloadXlsx').addEventListener('click', () => download('xlsx'));\n      $('#statsYearSelect').addEventListener('change', event => loadStats(Number(event.target.value)));\n      \/\/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e17\u0e2d\u0e21\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e01\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e32\u0e22\u0e40\u0e17\u0e2d\u0e21\u0e21\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27\n      $('#statsTermSelect').addEventListener('change', event => {\n        state.statsTerm = Number(event.target.value) || 0;\n        if (state.stats) renderStats(state.stats);\n        if (state.statsTrend) renderTrendChart(state.statsTrend);\n      });\n      $('#statsRefreshButton').addEventListener('click', () => loadStats(state.statsYear, true));\n      $('#statsClearCacheButton').addEventListener('click', () => loadStats(state.statsYear, 'all'));\n      $('#regStatsYearSelect').addEventListener('change', event => loadRegStats(Number(event.target.value)));\n      $('#regStatsRefreshButton').addEventListener('click', () => loadRegStats(state.regStats ? state.regStats.year : 0, true));\n      $('#detailConfirmButton').addEventListener('click', confirmSelectedRecord);\n      $$('[data-close-dialog]').forEach(button => {\n        button.addEventListener('click', () => $('#' + button.dataset.closeDialog).close());\n      });\n      $$('.modal').forEach(dialog => {\n        dialog.addEventListener('click', event => {\n          if (event.target === dialog) dialog.close();\n        });\n      });\n    }\n\n    async function onLogin(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a...');\n      try {\n        const result = await serverAlongsideCheck('login', {\n          login: $('#loginId').value,\n          password: $('#loginPassword').value,\n          \/\/ \u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e17\u0e31\u0e19\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e1a\u0e1a inline \u0e15\u0e48\u0e2d\u0e14\u0e49\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e07\n          withDashboard: false\n        });\n        enterApp(result);\n        event.target.reset();\n        toast('\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27', 'success');\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onRegister(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      const data = Object.fromEntries(new FormData(event.target));\n      if (data.password !== data.confirmPassword) {\n        toast('\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19', 'error');\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01...');\n      try {\n        const result = await server('register', {\n          username: data.username,\n          email: data.email,\n          schoolName: data.schoolName,\n          password: data.password\n        });\n        toast(result.message, 'success', 6500);\n        event.target.reset();\n        $('#loginTab').click();\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onForgotPassword(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23...');\n      try {\n        const result = await server('requestPasswordReset', new FormData(event.target).get('loginId'));\n        toast(result.message, 'success', 7000);\n        event.target.reset();\n        $('[data-back-login]').click();\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onResetPassword(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      const data = Object.fromEntries(new FormData(event.target));\n      if (data.newPassword !== data.confirmPassword) {\n        toast('\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19', 'error');\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48...');\n      try {\n        const result = await server('resetPassword', {\n          token: event.target.dataset.token,\n          newPassword: data.newPassword\n        });\n        history.replaceState({}, '', location.pathname);\n        $('.auth-tabs').classList.remove('hidden');\n        $('#loginTab').click();\n        event.target.reset();\n        toast(result.message, 'success', 6000);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onChangePassword(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      const data = Object.fromEntries(new FormData(event.target));\n      if (data.newPassword !== data.confirmPassword) {\n        toast('\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19', 'error');\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19...');\n      try {\n        const result = await server('changePassword', state.sessionToken, {\n          currentPassword: data.currentPassword,\n          newPassword: data.newPassword\n        });\n        $('#passwordDialog').close();\n        event.target.reset();\n        clearSession(false);\n        toast(result.message, 'success', 6500);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function showModule(name) {\n      const target = $('#' + name + 'Module');\n      if (!target) return;\n      state.activeModule = name;\n      $$('.module-view').forEach(module => module.classList.toggle('hidden', module !== target));\n      $$('.app-nav-button').forEach(button => button.classList.toggle('active', button.dataset.module === name));\n      window.scrollTo({top: 0, behavior: 'smooth'});\n      \/\/ \u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27 (\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e22\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e44\u0e21\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08): \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e22\u0e34\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e44\u0e1b\u0e41\u0e22\u0e48\u0e07\u0e04\u0e34\u0e27 Apps Script \u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\n      \/\/ \u0e1e\u0e2d\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e1c\u0e48\u0e32\u0e19 init \u0e08\u0e30\u0e40\u0e23\u0e35\u0e22\u0e01 showModule \u0e0b\u0e49\u0e33\u0e43\u0e2b\u0e49 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e08\u0e36\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e15\u0e48\u0e2d\u0e40\u0e2d\u0e07\n      if (state.provisional) return;\n      \/\/ \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e2d\u0e48\u0e32\u0e19\u0e0a\u0e35\u0e15\u0e2b\u0e25\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e41\u0e16\u0e27 \u0e08\u0e36\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e15\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e42\u0e2b\u0e25\u0e14\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\n      if (name === 'stats' && !state.stats) loadStats();\n      if (name === 'regstats' && !state.regStats) loadRegStats();\n    }\n\n    \/* ---- \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32: \u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e23\u0e32\u0e22\u0e1b\u0e35 \u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19 \u0e0a\u0e31\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e40\u0e17\u0e2d\u0e21 ---- *\/\n    function resetStatsState() {\n      resetRegStatsState();\n      state.statsRequest++;\n      state.statsTrendRequest++;\n      state.stats = null;\n      state.statsYear = 0;\n      state.statsTerm = 0;\n      state.statsTrend = null;\n      state.statsTrendComplete = false;\n      state.statsTrendLoading = false;\n      ['statsYearSelect', 'statsTermSelect', 'statsGroupBody', 'statsClassBody',\n        'statsTermBody', 'statsFootnote', 'statsWarningsList', 'statsGroupChart', 'statsTrendChart'].forEach(id => {\n        const element = $('#' + id);\n        if (element) element.replaceChildren();\n      });\n      ['statsTotal', 'statsPassed', 'statsAbsent'].forEach(id => { $('#' + id).textContent = '0'; });\n      $('#homeStatsLabel').textContent = '\u0e1c\u0e25\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e1b\u0e35';\n      $('#homeStatsYear').textContent = '\u0e40\u0e1b\u0e34\u0e14\u0e14\u0e39 \u2192';\n      $('#homeStatsYear').classList.add('home-card-go');\n      ['statsPassedRate', 'statsAbsentRate'].forEach(id => { $('#' + id).textContent = ''; });\n      $('#statsWarnings').classList.add('hidden');\n      $('#statsSubtitle').textContent = '\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e2a\u0e16\u0e34\u0e15\u0e34';\n      $('#statsTrendScope').textContent = '\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35';\n    }\n\n    async function loadStats(year = 0, refresh = false) {\n      if (!state.sessionToken) return;\n      const token = state.sessionToken;\n      const request = ++state.statsRequest;\n      const isCurrent = () => token === state.sessionToken && request === state.statsRequest;\n      setLoading(true, refresh === 'all'\n        ? '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e38\u0e01\u0e1b\u0e35 \u0e2d\u0e32\u0e08\u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48...'\n        : '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e2a\u0e16\u0e34\u0e15\u0e34...');\n      try {\n        const data = await server('getStudentStats', token, {year, refresh});\n        if (!isCurrent()) return;\n        state.stats = data;\n        state.statsYear = data.year;\n        renderStats(data);\n        if (refresh) {\n          \/\/ \u0e22\u0e2d\u0e14\u0e23\u0e32\u0e22\u0e1b\u0e35\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e36\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e14\u0e49\u0e27\u0e22\n          state.statsTrendRequest++;\n          state.statsTrendLoading = false;\n          state.statsTrend = null;\n          state.statsTrendComplete = false;\n          toast(refresh === 'all'\n            ? '\u0e25\u0e49\u0e32\u0e07\u0e41\u0e04\u0e0a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e41\u0e25\u0e30\u0e2d\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e49\u0e27'\n            : '\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e08\u0e32\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27', 'success');\n        }\n        loadStatsTrend();\n      } catch (error) {\n        if (isCurrent()) handleError(error);\n      } finally {\n        if (isCurrent()) setLoading(false);\n      }\n    }\n\n    \/* ---- \u0e01\u0e23\u0e32\u0e1f: \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22 DOM \u0e25\u0e49\u0e27\u0e19 \u0e44\u0e21\u0e48\u0e1e\u0e36\u0e48\u0e07\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e1d\u0e31\u0e07\u0e43\u0e19 WordPress \u0e14\u0e49\u0e27\u0e22 ---- *\/\n    const SVG_NS = 'http:\/\/www.w3.org\/2000\/svg';\n\n    function svgEl(tag, attrs = {}) {\n      const node = document.createElementNS(SVG_NS, tag);\n      Object.keys(attrs).forEach(key => node.setAttribute(key, attrs[key]));\n      return node;\n    }\n\n    \/** \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e25\u0e2d\u0e22\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2d\u0e31\u0e19\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e41\u0e1c\u0e07 \u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e08\u0e38\u0e14\u0e43\u0e19\u0e01\u0e23\u0e32\u0e1f\u0e19\u0e31\u0e49\u0e19 *\/\n    function vizTooltip(panel) {\n      let tip = panel.querySelector('.viz-tip');\n      if (!tip) {\n        tip = document.createElement('div');\n        tip.className = 'viz-tip';\n        panel.appendChild(tip);\n      }\n      return tip;\n    }\n\n    \/** anchor \u0e41\u0e22\u0e01\u0e08\u0e32\u0e01 target \u0e44\u0e14\u0e49 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e14\u0e49\u0e27\u0e22\u0e41\u0e16\u0e1a\u0e2a\u0e39\u0e07\u0e40\u0e15\u0e47\u0e21\u0e1e\u0e25\u0e47\u0e2d\u0e15 \u0e41\u0e15\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e25\u0e2d\u0e22\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 *\/\n    function bindVizTip(panel, target, buildLines, anchor) {\n      const tip = vizTooltip(panel);\n      const show = () => {\n        tip.replaceChildren(...buildLines().map((line, index) => {\n          const el = document.createElement(index === 0 ? 'strong' : 'span');\n          el.textContent = line;\n          return el;\n        }));\n        const box = panel.getBoundingClientRect();\n        const spot = (anchor || target).getBoundingClientRect();\n        tip.style.left = (spot.left - box.left + spot.width \/ 2) + 'px';\n        tip.style.top = (spot.top - box.top) + 'px';\n        tip.style.display = 'block';\n      };\n      const hide = () => { tip.style.display = 'none'; };\n      target.addEventListener('mouseenter', show);\n      target.addEventListener('focus', show);\n      target.addEventListener('mouseleave', hide);\n      target.addEventListener('blur', hide);\n    }\n\n    \/** \u0e41\u0e16\u0e1a\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c: \u0e23\u0e32\u0e07\u0e40\u0e15\u0e47\u0e21 = \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u00b7 \u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e32\u0e22 = \u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 (\u0e40\u0e09\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e08\u0e36\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e14\u0e49\u0e17\u0e38\u0e01\u0e20\u0e32\u0e27\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e2a\u0e35) *\/\n    function renderGroupChart(groups) {\n      const host = $('#statsGroupChart');\n      const panel = host.closest('.viz');\n      host.replaceChildren();\n      const visible = groups.filter(group => group.counts.total > 0);\n      if (!visible.length) {\n        const empty = document.createElement('p');\n        empty.className = 'viz-placeholder muted';\n        empty.textContent = '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e35\u0e49';\n        host.appendChild(empty);\n        return;\n      }\n      visible.forEach(group => {\n        const pct = group.counts.total ? group.counts.passed * 100 \/ group.counts.total : 0;\n        const row = document.createElement('div');\n        row.className = 'viz-meter';\n\n        const label = document.createElement('span');\n        label.className = 'viz-meter-label';\n        label.textContent = group.label;\n\n        const track = document.createElement('div');\n        track.className = 'viz-track';\n        track.setAttribute('role', 'img');\n        track.setAttribute('aria-label',\n          `${group.label} \u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 ${formatNumber(group.counts.passed)} \u0e08\u0e32\u0e01 ${formatNumber(group.counts.total)} \u0e04\u0e19`);\n        track.tabIndex = 0;\n        const fill = document.createElement('div');\n        fill.className = 'viz-fill' + (pct >= 99.5 ? ' is-full' : '');\n        fill.style.width = pct.toFixed(1) + '%';\n        track.appendChild(fill);\n\n        const value = document.createElement('span');\n        value.className = 'viz-meter-value';\n        value.textContent = pct.toFixed(1) + '%';\n\n        row.append(label, track, value);\n        host.appendChild(row);\n        bindVizTip(panel, track, () => [\n          group.label,\n          `\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 ${formatNumber(group.counts.total)} \u0e04\u0e19`,\n          `\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 ${formatNumber(group.counts.passed)} \u0e04\u0e19 (${pct.toFixed(1)}%)`,\n          `\u0e2a\u0e2d\u0e1a\u0e15\u0e01 ${formatNumber(group.counts.failed)} \u00b7 \u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a ${formatNumber(group.counts.absent)}`\n        ]);\n      });\n    }\n\n    \/** \u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21 % \u0e1c\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e1b\u0e35 \u2014 \u0e0b\u0e35\u0e23\u0e35\u0e2a\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e2a\u0e35 *\/\n    function renderTrendChart(allPoints) {\n      const host = $('#statsTrendChart');\n      const panel = host.closest('.viz');\n      host.replaceChildren();\n\n      \/\/ \u0e01\u0e23\u0e32\u0e1f\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19 \u0e1b\u0e35\u0e44\u0e2b\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e17\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e47\u0e44\u0e21\u0e48\u0e27\u0e32\u0e14\u0e08\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e31\u0e49\u0e19\n      const points = (allPoints || []).map(point => {\n        if (!state.statsTerm) return point;\n        const term = (point.terms || []).find(item => item.term === state.statsTerm);\n        return term ? {year: point.year, counts: term.counts} : null;\n      }).filter(Boolean);\n\n      $('#statsTrendScope').textContent = state.statsTerm\n        ? `\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e17\u0e2d\u0e21 ${state.statsTerm} \u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35 \u2014 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e40\u0e17\u0e2d\u0e21\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a`\n        : '\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35 \u2014 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e1b\u0e35\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a';\n\n      if (!points || points.length < 2) {\n        const empty = document.createElement('p');\n        empty.className = 'viz-placeholder muted';\n        empty.textContent = '\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1e\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e27\u0e32\u0e14\u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21';\n        host.appendChild(empty);\n        return;\n      }\n\n      const W = 720, H = 250, padL = 42, padR = 46, padT = 14, padB = 32;\n      const plotW = W - padL - padR;\n      const plotH = H - padT - padB;\n      const svg = svgEl('svg', {viewBox: `0 0 ${W} ${H}`, role: 'img'});\n      svg.setAttribute('aria-label', '\u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32');\n\n      const xAt = index => padL + (points.length === 1 ? plotW \/ 2 : index * plotW \/ (points.length - 1));\n      const yAt = pct => padT + plotH - (pct \/ 100) * plotH;\n\n      [0, 25, 50, 75, 100].forEach(tick => {\n        const y = yAt(tick);\n        svg.appendChild(svgEl('line', {\n          x1: padL, x2: padL + plotW, y1: y, y2: y,\n          class: tick === 0 ? 'viz-axis-line' : 'viz-grid-line'\n        }));\n        const text = svgEl('text', {x: padL - 8, y: y + 4, 'text-anchor': 'end', class: 'viz-tick'});\n        text.textContent = tick + '%';\n        svg.appendChild(text);\n      });\n\n      const rates = points.map(point =>\n        point.counts.total ? point.counts.passed * 100 \/ point.counts.total : 0);\n\n      const path = svgEl('path', {class: 'viz-line', d: rates\n        .map((rate, index) => `${index ? 'L' : 'M'}${xAt(index).toFixed(1)},${yAt(rate).toFixed(1)}`)\n        .join(' ')});\n      svg.appendChild(path);\n\n      \/\/ \u0e1b\u0e49\u0e32\u0e22\u0e1b\u0e35\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1b\u0e35\u0e40\u0e22\u0e2d\u0e30 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19\n      const labelStep = points.length > 9 ? 2 : 1;\n      points.forEach((point, index) => {\n        const x = xAt(index);\n        const y = yAt(rates[index]);\n        if (index % labelStep === 0 || index === points.length - 1) {\n          const tick = svgEl('text', {x: x, y: H - 10, 'text-anchor': 'middle', class: 'viz-tick'});\n          tick.textContent = String(point.year);\n          svg.appendChild(tick);\n        }\n        const dot = svgEl('circle', {cx: x, cy: y, r: 4, class: 'viz-dot'});\n        svg.appendChild(dot);\n\n        \/\/ \u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e01\u0e27\u0e49\u0e32\u0e07\u0e01\u0e27\u0e48\u0e32\u0e08\u0e38\u0e14 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e25\u0e47\u0e07\u0e07\u0e48\u0e32\u0e22\n        const hit = svgEl('rect', {\n          x: x - plotW \/ (points.length * 2) - 6, y: padT,\n          width: plotW \/ points.length + 12, height: plotH, class: 'viz-hit', tabindex: '0'\n        });\n        svg.appendChild(hit);\n        bindVizTip(panel, hit, () => [\n          '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + point.year,\n          `\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 ${formatNumber(point.counts.total)} \u0e04\u0e19`,\n          `\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 ${formatNumber(point.counts.passed)} \u0e04\u0e19 (${rates[index].toFixed(1)}%)`,\n          `\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a ${formatNumber(point.counts.absent)} \u0e04\u0e19`\n        ], dot);\n      });\n\n      \/\/ \u0e1b\u0e49\u0e32\u0e22\u0e04\u0e48\u0e32\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e15\u0e34\u0e14\u0e1b\u0e49\u0e32\u0e22\u0e17\u0e38\u0e01\u0e08\u0e38\u0e14\n      const lastIndex = points.length - 1;\n      const endLabel = svgEl('text', {\n        x: xAt(lastIndex) + 9, y: yAt(rates[lastIndex]) + 4, class: 'viz-end-label'\n      });\n      endLabel.textContent = rates[lastIndex].toFixed(1) + '%';\n      svg.appendChild(endLabel);\n\n      host.appendChild(svg);\n    }\n\n    \/**\n     * \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e04\u0e37\u0e19\u0e40\u0e17\u0e48\u0e32\u0e17\u0e35\u0e48\u0e04\u0e33\u0e19\u0e27\u0e13\u0e17\u0e31\u0e19\u0e43\u0e19\u0e07\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d (\u0e01\u0e31\u0e19\u0e0a\u0e19\u0e40\u0e1e\u0e14\u0e32\u0e19 6 \u0e19\u0e32\u0e17\u0e35\u0e02\u0e2d\u0e07 Apps Script)\n     * \u0e16\u0e49\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e08\u0e30\u0e1a\u0e2d\u0e01 complete=false \u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e15\u0e48\u0e2d\u0e08\u0e19\u0e04\u0e23\u0e1a \u2014 \u0e1b\u0e35\u0e17\u0e35\u0e48\u0e17\u0e33\u0e41\u0e25\u0e49\u0e27\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e41\u0e04\u0e0a \u0e23\u0e2d\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e08\u0e36\u0e07\u0e40\u0e23\u0e47\u0e27\n     * \u0e27\u0e32\u0e14\u0e01\u0e23\u0e32\u0e1f\u0e17\u0e38\u0e01\u0e23\u0e2d\u0e1a\u0e40\u0e25\u0e22 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e30\u0e44\u0e14\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e49\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e1b\u0e25\u0e48\u0e32\n     * \u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e23\u0e2d\u0e1a\u0e44\u0e27\u0e49 \u0e01\u0e31\u0e19\u0e27\u0e19\u0e44\u0e21\u0e48\u0e08\u0e1a\u0e16\u0e49\u0e32\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e44\u0e21\u0e48\u0e04\u0e37\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e14\u0e49\u0e27\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e44\u0e21\u0e48\u0e16\u0e36\u0e07\n     *\/\n    const STATS_TREND_MAX_ROUNDS = 8;\n\n    async function loadStatsTrend() {\n      if (!state.sessionToken) return;\n      \/\/ \u0e21\u0e35\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e41\u0e25\u0e49\u0e27\u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e02\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e44\u0e14\u0e49 \u0e16\u0e49\u0e32\u0e44\u0e14\u0e49\u0e21\u0e32\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e15\u0e48\u0e2d \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e01\u0e23\u0e32\u0e1f\u0e08\u0e30\u0e04\u0e49\u0e32\u0e07\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e32\u0e27\u0e23\n      if (state.statsTrend && state.statsTrendComplete) {\n        renderTrendChart(state.statsTrend);\n        return;\n      }\n      if (state.statsTrendLoading) return; \/\/ \u0e25\u0e39\u0e1b\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e30\u0e27\u0e32\u0e14\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e34\u0e07\u0e0b\u0e49\u0e33\n      const token = state.sessionToken;\n      const request = ++state.statsTrendRequest;\n      const isCurrent = () => token === state.sessionToken && request === state.statsTrendRequest;\n      state.statsTrendLoading = true;\n      try {\n        for (let round = 0; round < STATS_TREND_MAX_ROUNDS; round++) {\n          const data = await server('getStudentStatsTrend', token);\n          if (!isCurrent()) return;\n          const points = data.points || [];\n          \/\/ \u0e01\u0e31\u0e19\u0e01\u0e23\u0e13\u0e35\u0e04\u0e37\u0e19\u0e21\u0e32\u0e19\u0e49\u0e2d\u0e22\u0e25\u0e07\u0e01\u0e27\u0e48\u0e32\u0e23\u0e2d\u0e1a\u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e16\u0e2d\u0e22\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e19\u0e01\u0e23\u0e32\u0e1f\u0e01\u0e30\u0e1e\u0e23\u0e34\u0e1a\n          if (!state.statsTrend || points.length >= state.statsTrend.length) {\n            state.statsTrend = points;\n          }\n          renderTrendChart(state.statsTrend);\n          if (data.complete !== false) {\n            state.statsTrendComplete = true;\n            return;\n          }\n        }\n      } catch (error) {\n        if (!isCurrent()) return;\n        const host = $('#statsTrendChart');\n        host.replaceChildren();\n        const message = document.createElement('p');\n        message.className = 'viz-placeholder muted';\n        message.textContent = '\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u2014 ' + (error.message || '\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07');\n        host.appendChild(message);\n      } finally {\n        if (isCurrent()) state.statsTrendLoading = false;\n      }\n    }\n\n    \/* ---- \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c: \u0e19\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e41\u0e17\u0e47\u0e1a \"\u0e2a\u0e21\u0e31\u0e04\u0e23\" \u0e41\u0e22\u0e01\u0e1b\u0e35\u0e15\u0e32\u0e21\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23 ---- *\/\n    const THAI_MONTHS = ['\u0e21.\u0e04.', '\u0e01.\u0e1e.', '\u0e21\u0e35.\u0e04.', '\u0e40\u0e21.\u0e22.', '\u0e1e.\u0e04.', '\u0e21\u0e34.\u0e22.',\n      '\u0e01.\u0e04.', '\u0e2a.\u0e04.', '\u0e01.\u0e22.', '\u0e15.\u0e04.', '\u0e1e.\u0e22.', '\u0e18.\u0e04.'];\n\n    function resetRegStatsState() {\n      state.regStatsRequest = (state.regStatsRequest || 0) + 1;\n      state.regStats = null;\n      ['regStatsYearSelect', 'regStatsMonthChart', 'regStatsTrendChart', 'regStatsGroupBody',\n        'regStatsSchoolBody', 'regStatsFootnote', 'regStatsChangeNote', 'regStatsAgeChart', 'regStatsAgeFacts'].forEach(id => {\n        const element = $('#' + id);\n        if (element) element.replaceChildren();\n      });\n      ['regStatsTotal', 'regStatsSchools'].forEach(id => { $('#' + id).textContent = '0'; });\n      $('#regStatsChange').textContent = '\u2014';\n      $('#regStatsSubtitle').textContent = '\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e2a\u0e16\u0e34\u0e15\u0e34';\n      $('#regStatsAgeSummary').textContent = '\u0e2d\u0e32\u0e22\u0e38 \u0e13 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23';\n    }\n\n    async function loadRegStats(year = 0, refresh = false) {\n      if (!state.sessionToken) return;\n      const token = state.sessionToken;\n      const request = state.regStatsRequest = (state.regStatsRequest || 0) + 1;\n      const isCurrent = () => token === state.sessionToken && request === state.regStatsRequest;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23...');\n      try {\n        const data = await server('getRegistrationStats', token, {year, refresh});\n        if (!isCurrent()) return;\n        state.regStats = data;\n        renderRegStats(data);\n        if (refresh) toast('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e41\u0e25\u0e49\u0e27', 'success');\n      } catch (error) {\n        if (isCurrent()) handleError(error);\n      } finally {\n        if (isCurrent()) setLoading(false);\n      }\n    }\n\n    function regStatsRow(label, count, total, isTotal = false) {\n      const tr = document.createElement('tr');\n      if (isTotal) tr.className = 'stats-total-row';\n      [label, formatNumber(count), total ? (count * 100 \/ total).toFixed(1) + '%' : '\u2014'].forEach((value, index) => {\n        const td = document.createElement('td');\n        td.textContent = value;\n        if (index === 2) td.className = 'stats-rate';\n        if (index > 0 && !count) td.classList.add('stats-empty');\n        tr.appendChild(td);\n      });\n      return tr;\n    }\n\n    function vizPlaceholder(host, text) {\n      const empty = document.createElement('p');\n      empty.className = 'viz-placeholder muted';\n      empty.textContent = text;\n      host.appendChild(empty);\n    }\n\n    \/** \u0e41\u0e16\u0e1a\u0e23\u0e32\u0e22\u0e40\u0e14\u0e37\u0e2d\u0e19 \u2014 \u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e41\u0e23\u0e01\u0e16\u0e36\u0e07\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 \u0e40\u0e14\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e07\u0e15\u0e23\u0e07\u0e01\u0e25\u0e32\u0e07\u0e22\u0e31\u0e07\u0e04\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07 *\/\n    function renderRegMonthChart(data) {\n      const host = $('#regStatsMonthChart');\n      const panel = host.closest('.viz');\n      host.replaceChildren();\n      const months = data.months || [];\n      const used = months.map((count, index) => count ? index : -1).filter(index => index !== -1);\n      if (!used.length) {\n        vizPlaceholder(host, data.total ? '\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49' : '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e19\u0e1b\u0e35\u0e19\u0e35\u0e49');\n        return;\n      }\n      const max = Math.max(...months);\n      for (let index = used[0]; index <= used[used.length - 1]; index++) {\n        const count = months[index];\n        const pct = max ? count * 100 \/ max : 0;\n        const row = document.createElement('div');\n        row.className = 'viz-meter';\n        const label = document.createElement('span');\n        label.className = 'viz-meter-label';\n        label.textContent = THAI_MONTHS[index] + ' ' + data.year;\n        const track = document.createElement('div');\n        track.className = 'viz-track';\n        track.setAttribute('role', 'img');\n        track.setAttribute('aria-label', THAI_MONTHS[index] + ' ' + data.year + ' \u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 ' + formatNumber(count) + ' \u0e04\u0e19');\n        track.tabIndex = 0;\n        const fill = document.createElement('div');\n        fill.className = 'viz-fill' + (pct >= 99.5 ? ' is-full' : '');\n        fill.style.width = pct.toFixed(1) + '%';\n        track.appendChild(fill);\n        const value = document.createElement('span');\n        value.className = 'viz-meter-value';\n        value.textContent = formatNumber(count);\n        row.append(label, track, value);\n        host.appendChild(row);\n        bindVizTip(panel, track, () => [\n          THAI_MONTHS[index] + ' ' + data.year,\n          '\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 ' + formatNumber(count) + ' \u0e04\u0e19',\n          data.total ? (count * 100 \/ data.total).toFixed(1) + '% \u0e02\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35' : ''\n        ].filter(Boolean));\n      }\n    }\n\n    \/** \u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e23\u0e32\u0e22\u0e1b\u0e35 \u2014 \u0e2a\u0e40\u0e01\u0e25\u0e41\u0e01\u0e19\u0e15\u0e31\u0e49\u0e07\u0e40\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e04\u0e48\u0e32\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e43\u0e2b\u0e49\u0e44\u0e14\u0e49\u0e40\u0e25\u0e02\u0e01\u0e25\u0e21 \u0e46 *\/\n    function renderRegTrendChart(points) {\n      const host = $('#regStatsTrendChart');\n      const panel = host.closest('.viz');\n      host.replaceChildren();\n      if (!points || points.length < 2) {\n        vizPlaceholder(host, '\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e2a\u0e2d\u0e07\u0e1b\u0e35\u0e08\u0e36\u0e07\u0e08\u0e30\u0e27\u0e32\u0e14\u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e44\u0e14\u0e49');\n        return;\n      }\n      const W = 720, H = 250, padL = 48, padR = 46, padT = 14, padB = 32;\n      const plotW = W - padL - padR;\n      const plotH = H - padT - padB;\n      const max = Math.max(1, ...points.map(point => point.total));\n      const rawStep = max \/ 4;\n      const pow = Math.pow(10, Math.floor(Math.log10(rawStep)));\n      const unit = rawStep \/ pow;\n      const step = Math.max(1, (unit <= 1 ? 1 : unit <= 2 ? 2 : unit <= 5 ? 5 : 10) * pow);\n      const top = Math.max(step, Math.ceil(max \/ step) * step);\n\n      const svg = svgEl('svg', {viewBox: `0 0 ${W} ${H}`, role: 'img'});\n      svg.setAttribute('aria-label', '\u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32');\n      const xAt = index => padL + index * plotW \/ (points.length - 1);\n      const yAt = value => padT + plotH - (value \/ top) * plotH;\n\n      for (let tick = 0; tick <= top; tick += step) {\n        const y = yAt(tick);\n        svg.appendChild(svgEl('line', {\n          x1: padL, x2: padL + plotW, y1: y, y2: y,\n          class: tick === 0 ? 'viz-axis-line' : 'viz-grid-line'\n        }));\n        const text = svgEl('text', {x: padL - 8, y: y + 4, 'text-anchor': 'end', class: 'viz-tick'});\n        text.textContent = formatNumber(tick);\n        svg.appendChild(text);\n      }\n\n      svg.appendChild(svgEl('path', {class: 'viz-line', d: points\n        .map((point, index) => `${index ? 'L' : 'M'}${xAt(index).toFixed(1)},${yAt(point.total).toFixed(1)}`)\n        .join(' ')}));\n\n      const labelStep = points.length > 9 ? 2 : 1;\n      points.forEach((point, index) => {\n        const x = xAt(index);\n        const y = yAt(point.total);\n        if (index % labelStep === 0 || index === points.length - 1) {\n          const tick = svgEl('text', {x: x, y: H - 10, 'text-anchor': 'middle', class: 'viz-tick'});\n          tick.textContent = String(point.year);\n          svg.appendChild(tick);\n        }\n        const dot = svgEl('circle', {cx: x, cy: y, r: 4, class: 'viz-dot'});\n        svg.appendChild(dot);\n        const hit = svgEl('rect', {\n          x: x - plotW \/ (points.length * 2) - 6, y: padT,\n          width: plotW \/ points.length + 12, height: plotH, class: 'viz-hit', tabindex: '0'\n        });\n        svg.appendChild(hit);\n        bindVizTip(panel, hit, () => [\n          '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + point.year,\n          '\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 ' + formatNumber(point.total) + ' \u0e04\u0e19'\n        ], dot);\n      });\n\n      const last = points[points.length - 1];\n      const endLabel = svgEl('text', {x: xAt(points.length - 1) + 9, y: yAt(last.total) + 4, class: 'viz-end-label'});\n      endLabel.textContent = formatNumber(last.total);\n      svg.appendChild(endLabel);\n      host.appendChild(svg);\n    }\n\n    \/** \u0e41\u0e16\u0e1a\u0e0a\u0e48\u0e27\u0e07\u0e2d\u0e32\u0e22\u0e38 \u2014 \u0e23\u0e32\u0e07\u0e40\u0e15\u0e47\u0e21 = \u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e17\u0e35\u0e48\u0e17\u0e23\u0e32\u0e1a\u0e2d\u0e32\u0e22\u0e38\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e35\u0e49 \u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e32\u0e22 = \u0e04\u0e19\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e2d\u0e32\u0e22\u0e38\u0e19\u0e31\u0e49\u0e19 *\/\n    function renderRegAgeChart(age) {\n      const host = $('#regStatsAgeChart');\n      const panel = host.closest('.viz');\n      const summary = $('#regStatsAgeSummary');\n      host.replaceChildren();\n      if (!age || !age.known) {\n        summary.textContent = '\u0e2d\u0e32\u0e22\u0e38 \u0e13 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23';\n        $('#regStatsAgeFacts').replaceChildren();\n        vizPlaceholder(host, '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e32\u0e22\u0e38\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e35\u0e49');\n        return;\n      }\n      const ageText = value => formatNumber(value) + ' \u0e1b\u0e35';\n      summary.textContent = '\u0e2d\u0e32\u0e22\u0e38 \u0e13 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23 \u00b7 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e17\u0e23\u0e32\u0e1a\u0e2d\u0e32\u0e22\u0e38 ' + formatNumber(age.known) + ' \u0e04\u0e19' +\n        (age.unknown ? ' \u00b7 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e2d\u0e32\u0e22\u0e38 ' + formatNumber(age.unknown) + ' \u0e04\u0e19' : '');\n      $('#regStatsAgeFacts').replaceChildren(...[\n        ['\u0e0a\u0e48\u0e27\u0e07\u0e2d\u0e32\u0e22\u0e38', formatNumber(age.min) + '\u2013' + ageText(age.max), '\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e19\u0e49\u0e2d\u0e22\u0e2a\u0e38\u0e14\u0e16\u0e36\u0e07\u0e21\u0e32\u0e01\u0e2a\u0e38\u0e14'],\n        ['\u0e2d\u0e32\u0e22\u0e38\u0e19\u0e49\u0e2d\u0e22\u0e2a\u0e38\u0e14', ageText(age.min), formatNumber(age.minCount) + ' \u0e04\u0e19'],\n        ['\u0e2d\u0e32\u0e22\u0e38\u0e21\u0e32\u0e01\u0e2a\u0e38\u0e14', ageText(age.max), formatNumber(age.maxCount) + ' \u0e04\u0e19'],\n        ['\u0e2d\u0e32\u0e22\u0e38\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22', ageText(age.average), '\u0e21\u0e31\u0e18\u0e22\u0e10\u0e32\u0e19 ' + ageText(age.median)]\n      ].map(([label, value, note]) => {\n        const box = document.createElement('div');\n        box.className = 'age-fact';\n        const title = document.createElement('small');\n        title.textContent = label;\n        const strong = document.createElement('strong');\n        strong.textContent = value;\n        const sub = document.createElement('span');\n        sub.textContent = note;\n        box.append(title, strong, sub);\n        return box;\n      }));\n      age.bands.forEach(band => {\n        const pct = band.count * 100 \/ age.known;\n        const row = document.createElement('div');\n        row.className = 'viz-meter';\n        const label = document.createElement('span');\n        label.className = 'viz-meter-label';\n        label.textContent = band.label;\n        const track = document.createElement('div');\n        track.className = 'viz-track';\n        track.setAttribute('role', 'img');\n        track.setAttribute('aria-label', band.label + ' ' + formatNumber(band.count) + ' \u0e04\u0e19 (' + pct.toFixed(1) + '%)');\n        track.tabIndex = 0;\n        const fill = document.createElement('div');\n        fill.className = 'viz-fill' + (pct >= 99.5 ? ' is-full' : '');\n        fill.style.width = pct.toFixed(1) + '%';\n        track.appendChild(fill);\n        const value = document.createElement('span');\n        value.className = 'viz-meter-value';\n        value.textContent = formatNumber(band.count);\n        row.append(label, track, value);\n        host.appendChild(row);\n        bindVizTip(panel, track, () => [\n          band.label,\n          '\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 ' + formatNumber(band.count) + ' \u0e04\u0e19',\n          pct.toFixed(1) + '% \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e17\u0e23\u0e32\u0e1a\u0e2d\u0e32\u0e22\u0e38'\n        ]);\n      });\n    }\n\n    function renderRegStats(data) {\n      const years = data.years && data.years.length ? data.years : [data.year];\n      const yearSelect = $('#regStatsYearSelect');\n      yearSelect.replaceChildren(...years.map(year => {\n        const option = document.createElement('option');\n        option.value = String(year);\n        option.textContent = '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + year;\n        option.selected = year === data.year;\n        return option;\n      }));\n      yearSelect.disabled = years.length < 2;\n\n      $('#regStatsSubtitle').textContent = '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + data.year + ' \u2022 \u0e19\u0e31\u0e1a\u0e15\u0e32\u0e21\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23' +\n        (data.generatedAt ? ' \u2022 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e13 ' + data.generatedAt : '');\n      $('#regStatsTotal').textContent = formatNumber(data.total);\n      $('#regStatsSchools').textContent = formatNumber(data.schoolCount);\n\n      const change = $('#regStatsChange');\n      const note = $('#regStatsChangeNote');\n      if (data.previous === null || data.previous === undefined) {\n        change.textContent = '\u2014';\n        note.textContent = '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e35 ' + (data.year - 1);\n      } else {\n        const diff = data.total - data.previous;\n        change.textContent = (diff > 0 ? '+' : '') + formatNumber(diff);\n        note.textContent = data.previous\n          ? (diff > 0 ? '+' : '') + (diff * 100 \/ data.previous).toFixed(1) + '% \u0e08\u0e32\u0e01\u0e1b\u0e35 ' + (data.year - 1) +\n            ' (' + formatNumber(data.previous) + ' \u0e04\u0e19)'\n          : '\u0e1b\u0e35 ' + (data.year - 1) + ' \u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23';\n      }\n\n      renderRegMonthChart(data);\n      renderRegTrendChart(data.trend);\n      renderRegAgeChart(data.age);\n\n      const groupBody = $('#regStatsGroupBody');\n      groupBody.replaceChildren(...data.groups.map(group => regStatsRow(group.label, group.count, data.total)));\n      groupBody.appendChild(regStatsRow('\u0e23\u0e27\u0e21', data.total, data.total, true));\n\n      const schoolBody = $('#regStatsSchoolBody');\n      schoolBody.replaceChildren(...data.schools.map(school => regStatsRow(school.label, school.count, data.total)));\n      schoolBody.appendChild(regStatsRow('\u0e23\u0e27\u0e21', data.total, data.total, true));\n\n      $('#regStatsFootnote').textContent =\n        '\u0e19\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e41\u0e17\u0e47\u0e1a \u201c\u0e2a\u0e21\u0e31\u0e04\u0e23\u201d \u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e23\u0e31\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c \u0e2b\u0e19\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e19 \u00b7 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 = \u0e1b\u0e35 \u0e1e.\u0e28. \u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23' +\n        (data.undated ? ' \u00b7 \u0e21\u0e35 ' + formatNumber(data.undated) + ' \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e2d\u0e48\u0e32\u0e19\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e19\u0e31\u0e1a\u0e43\u0e19\u0e1b\u0e35\u0e43\u0e14' : '');\n    }\n\n    function statsRate(counts) {\n      if (!counts || !counts.total) return '\u2014';\n      return (counts.passed * 100 \/ counts.total).toFixed(1) + '%';\n    }\n\n    \/** \u0e2b\u0e19\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27\u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e2a\u0e16\u0e34\u0e15\u0e34 \u2014 \u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e17\u0e31\u0e49\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 \u0e0a\u0e31\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e40\u0e17\u0e2d\u0e21 *\/\n    function statsRow(label, counts, isTotal = false) {\n      const tr = document.createElement('tr');\n      if (isTotal) tr.className = 'stats-total-row';\n      const cells = [\n        label,\n        formatNumber(counts.total),\n        formatNumber(counts.passed),\n        formatNumber(counts.failed),\n        formatNumber(counts.absent),\n        statsRate(counts),\n        \/\/ \u0e04\u0e48\u0e32\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22\u0e21\u0e32\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 \"\u0e23\u0e27\u0e21\" \u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e25\u0e2a\u0e2d\u0e1a \u0e19\u0e31\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e04\u0e19\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a\u0e08\u0e23\u0e34\u0e07\n        \/\/ \u0e41\u0e17\u0e47\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e27\u0e21 (\u0e1a\u0e32\u0e07\u0e40\u0e17\u0e2d\u0e21) \u0e08\u0e30\u0e44\u0e14\u0e49 null \u0e08\u0e36\u0e07\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e35\u0e14\u0e41\u0e17\u0e19\u0e40\u0e25\u0e02 0 \u0e17\u0e35\u0e48\u0e0a\u0e27\u0e19\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e1c\u0e34\u0e14\n        counts.average === null || counts.average === undefined ? '\u2013' : formatNumber(counts.average)\n      ];\n      cells.forEach((value, index) => {\n        const td = document.createElement('td');\n        td.textContent = value;\n        if (index === 5) td.className = 'stats-rate';\n        if (index > 0 && index < 5 && !counts.total) td.classList.add('stats-empty');\n        if (index === 6 && (counts.average === null || counts.average === undefined)) {\n          td.classList.add('stats-empty');\n        }\n        tr.appendChild(td);\n      });\n      return tr;\n    }\n\n    \/** \u0e0a\u0e38\u0e14\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07 \u2014 \u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e17\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 *\/\n    function activeStatsSlice() {\n      const data = state.stats;\n      if (!data) return null;\n      if (!state.statsTerm) {\n        return {label: '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35', overall: data.overall, groups: data.groups, classes: data.classes,\n                schoolCount: data.schoolCount};\n      }\n      const term = data.terms.find(item => item.term === state.statsTerm);\n      if (!term) return {label: '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35', overall: data.overall, groups: data.groups, classes: data.classes,\n                         schoolCount: data.schoolCount};\n      return {label: term.label, overall: term.counts, groups: term.groups || [],\n              classes: term.classes || [], schoolCount: term.schoolCount};\n    }\n\n    function renderStatsSelectors(data) {\n      const yearSelect = $('#statsYearSelect');\n      yearSelect.replaceChildren(...data.years.map(year => {\n        const option = document.createElement('option');\n        option.value = String(year);\n        option.textContent = '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + year;\n        option.selected = year === data.year;\n        return option;\n      }));\n\n      const termSelect = $('#statsTermSelect');\n      const options = [{value: 0, label: data.terms.length > 1 ? '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35 (\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21)' : '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35'}]\n        .concat(data.terms.map(term => ({value: term.term, label: term.label})));\n      termSelect.replaceChildren(...options.map(item => {\n        const option = document.createElement('option');\n        option.value = String(item.value);\n        option.textContent = item.label;\n        option.selected = item.value === state.statsTerm;\n        return option;\n      }));\n      \/\/ \u0e1b\u0e35\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e17\u0e2d\u0e21\u0e40\u0e14\u0e34\u0e21 \u0e08\u0e36\u0e07\u0e16\u0e2d\u0e22\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e40\u0e1b\u0e47\u0e19 \"\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35\"\n      if (state.statsTerm && !data.terms.some(term => term.term === state.statsTerm)) {\n        state.statsTerm = 0;\n        termSelect.value = '0';\n      }\n      termSelect.disabled = data.terms.length < 2;\n    }\n\n    \/**\n     * \u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07\n     * \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e04\u0e33\u0e19\u0e27\u0e13\u0e04\u0e48\u0e32\u0e1e\u0e27\u0e01\u0e19\u0e35\u0e49\u0e21\u0e32\u0e15\u0e25\u0e2d\u0e14 (source.layoutWarnings, source.skipped, unknownSchools)\n     * \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e21\u0e35\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a \u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e44\u0e1b\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e08\u0e36\u0e07\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e08\u0e23\u0e34\u0e07\u0e21\u0e32\u0e15\u0e25\u0e2d\u0e14\n     *\/\n    function renderStatsWarnings(data) {\n      const box = $('#statsWarnings');\n      const source = data.source || {};\n      const messages = [];\n\n      (source.layoutWarnings || []).forEach(warning => {\n        const missing = (warning.missing || []).join(', ') || '\u0e1a\u0e32\u0e07\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c';\n        messages.push(warning.counted === false\n          ? `\u0e41\u0e17\u0e47\u0e1a ${warning.sheetName}: \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e19\u0e31\u0e1a\u0e40\u0e25\u0e22 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e32\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c ${missing} \u0e44\u0e21\u0e48\u0e1e\u0e1a`\n          : `\u0e41\u0e17\u0e47\u0e1a ${warning.sheetName}: \u0e2b\u0e32\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c ${missing} \u0e44\u0e21\u0e48\u0e1e\u0e1a (\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e22\u0e31\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e15\u0e48\u0e15\u0e32\u0e23\u0e32\u0e07\u0e41\u0e22\u0e01\u0e0a\u0e31\u0e49\u0e19\/\u0e22\u0e2d\u0e14\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e08\u0e30\u0e02\u0e32\u0e14)`);\n      });\n      (source.gradeWarnings || []).forEach(warning => {\n        messages.push(`\u0e41\u0e17\u0e47\u0e1a ${warning.sheetName}: \u0e19\u0e31\u0e1a\u0e44\u0e14\u0e49 ${formatNumber(warning.total)} \u0e04\u0e19\u0e41\u0e15\u0e48\u0e40\u0e1b\u0e47\u0e19 \u201c\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a\u201d \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u2014 \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e01\u0e23\u0e14\u0e19\u0e48\u0e32\u0e08\u0e30\u0e0a\u0e35\u0e49\u0e1c\u0e34\u0e14\u0e0a\u0e48\u0e2d\u0e07`);\n      });\n      if ((source.skipped || []).length) {\n        messages.push(`\u0e02\u0e49\u0e32\u0e21\u0e41\u0e17\u0e47\u0e1a\u0e17\u0e35\u0e48\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e25\u0e02 4 \u0e2b\u0e25\u0e31\u0e01 ${source.skipped.length} \u0e41\u0e17\u0e47\u0e1a: ${source.skipped.join(', ')}`);\n      }\n      if (data.unknownSchoolCount) {\n        const sample = (data.unknownSchools || []).slice(0, 5).map(name => `\u201c${name}\u201d`).join(' \u00b7 ');\n        messages.push(`\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e17\u0e35\u0e48\u0e08\u0e31\u0e1a\u0e40\u0e02\u0e49\u0e32\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 ${formatNumber(data.unknownSchoolCount)} \u0e0a\u0e37\u0e48\u0e2d \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e19\u0e31\u0e1a\u0e43\u0e19\u0e22\u0e2d\u0e14\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19${sample ? ' \u0e40\u0e0a\u0e48\u0e19 ' + sample : ''}`);\n      }\n\n      box.classList.toggle('hidden', !messages.length);\n      $('#statsWarningsList').replaceChildren(...messages.map(text => {\n        const item = document.createElement('li');\n        item.textContent = text;\n        return item;\n      }));\n    }\n\n    function renderStats(data) {\n      renderStatsSelectors(data);\n      renderStatsWarnings(data);\n      const slice = activeStatsSlice();\n      const counts = slice.overall;\n\n      const scopeLabel = state.statsTerm\n        ? slice.label\n        : (data.terms.map(term => '\u0e40\u0e17\u0e2d\u0e21 ' + term.term).join(' \u0e41\u0e25\u0e30 ') || '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e17\u0e2d\u0e21');\n      $('#statsSubtitle').textContent =\n        \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e27\u0e48\u0e32 \"\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a\" \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 50 \u0e08\u0e30\u0e16\u0e39\u0e01\u0e2d\u0e48\u0e32\u0e19\u0e27\u0e48\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e32\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\n        \/\/ \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e41\u0e15\u0e48\u0e25\u0e30\u0e40\u0e17\u0e2d\u0e21\u0e21\u0e35\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1a\u0e32\u0e07\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e2a\u0e2d\u0e1a \u0e22\u0e2d\u0e14\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 50 \u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1b\u0e01\u0e15\u0e34\n        `\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ${data.year} \u2022 ${scopeLabel} \u2022 ${formatNumber(slice.schoolCount)} \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a`;\n      $('#homeStatsLabel').textContent = '\u0e1b\u0e35\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14';\n      $('#homeStatsYear').classList.remove('home-card-go');\n      $('#homeStatsYear').textContent = data.years.length ? String(data.years[0]) : '\u2014';\n\n      $('#statsTotal').textContent = formatNumber(counts.total);\n      $('#statsPassed').textContent = formatNumber(counts.passed);\n      $('#statsAbsent').textContent = formatNumber(counts.absent);\n\n      const attended = counts.total - counts.absent;\n      $('#statsPassedRate').textContent = counts.total\n        ? `${statsRate(counts)} \u0e02\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u2022 ` +\n          `${attended ? (counts.passed * 100 \/ attended).toFixed(1) : '0.0'}% \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a`\n        : '';\n      $('#statsAbsentRate').textContent = counts.total\n        ? `${(counts.absent * 100 \/ counts.total).toFixed(1)}% \u0e02\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14`\n        : '';\n\n      const fill = (bodyId, rows) => {\n        const body = $('#' + bodyId);\n        body.replaceChildren(...rows.map(row => statsRow(row.label, row.counts)));\n        body.appendChild(statsRow('\u0e23\u0e27\u0e21', counts, true));\n      };\n      renderGroupChart(slice.groups);\n      fill('statsGroupBody', slice.groups);\n      fill('statsClassBody', slice.classes);\n\n      \/\/ \u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e17\u0e2d\u0e21\u0e41\u0e2a\u0e14\u0e07\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e40\u0e2a\u0e21\u0e2d \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e40\u0e19\u0e49\u0e19\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48\n      const termBody = $('#statsTermBody');\n      termBody.replaceChildren(...data.terms.map(term => {\n        const row = statsRow(term.label, term.counts);\n        if (state.statsTerm === term.term) row.classList.add('stats-active-row');\n        return row;\n      }));\n      termBody.appendChild(statsRow('\u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35', data.overall, true));\n\n      $('#statsFootnote').textContent =\n        `\u0e19\u0e31\u0e1a \u201c\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u201d \u0e08\u0e32\u0e01\u0e40\u0e01\u0e23\u0e14 D \u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b \u00b7 \u201c\u0e2a\u0e2d\u0e1a\u0e15\u0e01\u201d \u0e04\u0e37\u0e2d\u0e40\u0e01\u0e23\u0e14 F \u00b7 \u201c\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a\u201d \u0e04\u0e37\u0e2d\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e21\u0e35\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a` +\n        (data.generatedAt ? ` \u2014 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e13 ${data.generatedAt}` : '');\n    }\n\n\n\n\n\n    \/* ---- \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e41\u0e25\u0e30\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ----\n       \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e07\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \"\u0e2a\u0e33\u0e19\u0e31\u0e01 + \u0e1b\u0e35\" \u0e40\u0e23\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e49\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e23\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\n       (\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e23\u0e01 \u0e1b\u0e35\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19) \u0e41\u0e1a\u0e47\u0e01\u0e40\u0e2d\u0e19\u0e14\u0e4c\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35 school\/year \u0e08\u0e36\u0e07\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e41\u0e15\u0e48\u0e25\u0e30\u0e41\u0e17\u0e47\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e1b\u0e35 *\/\n    function scopeSchoolOf(scope) {\n      return scope.school || scope.label;\n    }\n\n    function scopeYearLabel(scope) {\n      if (!scope.year) return '\u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e1b\u0e35';\n      return '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + scope.year + (scope.exists === false ? ' (\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23)' : '');\n    }\n\n    \/** \u0e0a\u0e37\u0e48\u0e2d\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e0a\u0e48\u0e19 \"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d \u00b7 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 2569\" *\/\n    function scopeDisplayName(scope) {\n      if (!scope) return '';\n      const school = scope.school || scope.label || '';\n      return scope.year ? school + ' \u00b7 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + scope.year : school;\n    }\n\n    function renderScopeSelectors() {\n      const scopes = state.scopes || [];\n      const current = scopes.find(scope => scope.ref === state.scopeRef) || scopes[0];\n      const schools = [];\n      scopes.forEach(scope => {\n        if (schools.indexOf(scopeSchoolOf(scope)) === -1) schools.push(scopeSchoolOf(scope));\n      });\n      const schoolSelect = $('#scopeSchoolSelect');\n      schoolSelect.replaceChildren(...schools.map(name => {\n        const option = document.createElement('option');\n        option.value = name;\n        option.textContent = name;\n        return option;\n      }));\n      const yearSelect = $('#scopeYearSelect');\n      const years = current ? scopes.filter(scope => scopeSchoolOf(scope) === scopeSchoolOf(current)) : [];\n      yearSelect.replaceChildren(...years.map(scope => {\n        const option = document.createElement('option');\n        option.value = scope.ref;\n        option.textContent = scopeYearLabel(scope);\n        return option;\n      }));\n      if (current) {\n        schoolSelect.value = scopeSchoolOf(current);\n        yearSelect.value = current.ref;\n      }\n      $('#scopeSchoolField').classList.toggle('hidden', schools.length < 2);\n      \/\/ \u0e41\u0e1a\u0e47\u0e01\u0e40\u0e2d\u0e19\u0e14\u0e4c\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1b\u0e35 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e2a\u0e14\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e14\u0e49\u0e41\u0e04\u0e48 \"\u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e1b\u0e35\"\n      $('#scopeYearField').classList.toggle('hidden', !scopes.some(scope => scope.year));\n    }\n\n    \/** \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e14\u0e39 \u0e41\u0e25\u0e49\u0e27\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e0a\u0e38\u0e14\u0e19\u0e31\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01 *\/\n    function switchScope(ref) {\n      if (!ref || ref === state.scopeRef) return;\n      state.scopeRef = ref;\n      state.page = 1;\n      state.search = '';\n      state.status = 'all';\n      $('#searchInput').value = '';\n      renderScopeSelectors();\n      loadDashboard();\n    }\n\n    \/\/ \u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e33\u0e44\u0e27\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e15\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e04\u0e23\u0e31\u0e49\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b \u2014 \u0e40\u0e01\u0e47\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e19\u0e2b\u0e31\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\n    \/\/ \u0e44\u0e21\u0e48\u0e40\u0e01\u0e47\u0e1a scopes\/\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d \u0e40\u0e1e\u0e23\u0e32\u0e30 scopeRef \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e43\u0e19 6 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e2a\u0e21\u0e2d\n    \/\/ \u0e1c\u0e39\u0e01\u0e01\u0e31\u0e1a\u0e17\u0e49\u0e32\u0e22 token \u0e44\u0e27\u0e49 \u0e16\u0e49\u0e32 token \u0e16\u0e39\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 (\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e2d\u0e37\u0e48\u0e19\u0e08\u0e32\u0e01\u0e2d\u0e35\u0e01\u0e41\u0e17\u0e47\u0e1a) \u0e08\u0e30\u0e44\u0e21\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e19\u0e40\u0e01\u0e48\u0e32\n    const SESSION_PROFILE_KEY = 'studentVerificationProfile';\n\n    function saveSessionProfile(result) {\n      try {\n        localStorage.setItem(SESSION_PROFILE_KEY, JSON.stringify({\n          tokenTail: String(result.sessionToken || '').slice(-12),\n          user: {\n            username: result.user.username, email: result.user.email,\n            role: result.user.role, schoolName: result.user.schoolName\n          },\n          currentYear: result.currentYear || 0\n        }));\n      } catch (_) {}\n    }\n\n    function showProvisionalApp(token) {\n      let profile = null;\n      try { profile = JSON.parse(localStorage.getItem(SESSION_PROFILE_KEY) || 'null'); } catch (_) {}\n      if (!profile || !profile.user || !profile.tokenTail || profile.tokenTail !== token.slice(-12)) return false;\n      state.provisional = true;\n      renderUserHeader(profile.user, profile.currentYear);\n      $('#authView').classList.add('hidden');\n      $('#appView').classList.remove('hidden');\n      $('.heading-actions').classList.add('hidden');\n      $('#recordsList').replaceChildren();\n      $('#recordsHead').classList.add('hidden');\n      $('.pagination').classList.add('hidden');\n      showRecordsEmpty('loading');\n      showModule('home');\n      return true;\n    }\n\n    function renderUserHeader(user, currentYear) {\n      $('#userDisplay').textContent = user.username || user.email;\n      $('#userRole').textContent = user.role === 'admin'\n        ? '\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a'\n        : (user.schoolName || '\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19');\n      $('#homeGreeting').textContent = '\u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e19\u0e23\u0e31\u0e1a, ' + (user.username || user.email || '\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19');\n      $('#homeRegYear').textContent = currentYear ? String(currentYear) : '\u2014';\n      $('#homeSchoolName').textContent = user.role === 'admin'\n        ? '\u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e38\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19'\n        : `\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19: ${user.schoolName || '\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19'}`;\n    }\n\n    function enterApp(result) {\n      state.provisional = false;\n      resetStatsState();\n      state.session = result;\n      state.sessionToken = result.sessionToken;\n      localStorage.setItem('studentVerificationSession', state.sessionToken);\n      saveSessionProfile(result);\n      $('#authView').classList.add('hidden');\n      $('#appView').classList.remove('hidden');\n      renderUserHeader(result.user, result.currentYear);\n      showModule('home');\n\n      state.scopes = result.scopes || [];\n      state.currentYear = result.currentYear || 0;\n      state.scopeRef = state.scopes.length ? state.scopes[0].ref : '';\n      renderScopeSelectors();\n      if (!state.scopes.length) {\n        $('.heading-actions').classList.add('hidden');\n        $('#recordsList').replaceChildren();\n        $('#recordsHead').classList.add('hidden');\n        clearRecordSelection();\n        showRecordsEmpty('access');\n        $('.pagination').classList.add('hidden');\n        toast('\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e41\u0e17\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e44\u0e14\u0e49', 'error');\n        return;\n      }\n      $('.heading-actions').classList.remove('hidden');\n      state.scopeRef = state.scopes[0].ref;\n      state.page = 1;\n      state.search = '';\n      $('#searchInput').value = '';\n      state.status = 'all';\n      \/\/ \u0e41\u0e1a\u0e47\u0e01\u0e40\u0e2d\u0e19\u0e14\u0e4c\u0e23\u0e38\u0e48\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e19\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e23\u0e01\u0e21\u0e32\u0e01\u0e31\u0e1a\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e42\u0e2b\u0e25\u0e14\u0e2d\u0e35\u0e01\u0e23\u0e2d\u0e1a\n      if (result.dashboard && result.dashboard.scope && result.dashboard.scope.ref === state.scopeRef) {\n        state.dashboardRequest++;\n        state.dashboardSignature = '';\n        state.liveEpoch++;\n        applyDashboard(result.dashboard);\n      } else {\n        \/\/ \u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1e\u0e48\u0e27\u0e07\u0e21\u0e32 (\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e01\u0e39\u0e49\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e15\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32) \u2014 \u0e42\u0e2b\u0e25\u0e14\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e01\u0e32\u0e07\u0e21\u0e48\u0e32\u0e19\u0e17\u0e31\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32\n        \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e1e\u0e49\u0e19\u0e08\u0e32\u0e01 \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19...\" \u0e21\u0e32 \u0e16\u0e49\u0e32\u0e40\u0e08\u0e2d\u0e21\u0e48\u0e32\u0e19\u0e0b\u0e49\u0e2d\u0e19\u0e2d\u0e35\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e01\u0e47\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e1a\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e2d\u0e30\u0e44\u0e23\n        loadDashboard({inline: true});\n      }\n      startLiveUpdates();\n    }\n\n    function clearRecordSelection() {\n      state.selected.clear();\n      $('#bulkBar').classList.add('hidden');\n    }\n\n    function syncClearFiltersButton() {\n      $('#clearFiltersButton').disabled = !state.search && !$('#searchInput').value && state.status === 'all' && state.sort === 'latest';\n    }\n    function clearRecordFilters() {\n      state.search = ''; state.status = 'all'; state.sort = 'latest'; state.page = 1;\n      $('#searchInput').value = ''; $('#sortSelect').value = 'latest';\n      syncClearFiltersButton(); refreshView();\n    }\n    async function openPendingRecords() {\n      if (!state.scopeRef) return;\n      state.search = ''; state.status = 'pending'; state.page = 1;\n      $('#searchInput').value = '';\n      showModule('applicants'); await refreshView();\n    }\n    function showRecordsEmpty(kind) {\n      const content = {\n        empty: ['\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23', '\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e19\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e19\u0e35\u0e49 \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48', ''],\n        filtered: ['\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07', '\u0e25\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e33\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14', '\u0e25\u0e49\u0e32\u0e07\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07'],\n        error: ['\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08', '\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48', '\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48'],\n        access: ['\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e44\u0e14\u0e49', '\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e02\u0e2d\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35', ''],\n        loading: ['\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23', '\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e08\u0e30\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e21\u0e19\u0e39\u0e2d\u0e37\u0e48\u0e19\u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e1b\u0e01\u0e15\u0e34', '']\n      }[kind];\n      $('#emptyStateTitle').textContent = content[0]; $('#emptyStateMessage').textContent = content[1];\n      const action = $('#emptyStateAction');\n      action.textContent = content[2]; action.dataset.action = kind === 'filtered' ? 'clear' : 'retry';\n      action.classList.toggle('hidden', !content[2]); $('#emptyState').classList.remove('hidden');\n    }\n\n    \/* ---- \u0e42\u0e17\u0e40\u0e04\u0e19\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 ----\n       scopeRef \u0e41\u0e25\u0e30 recordRef \u0e40\u0e1b\u0e47\u0e19\u0e42\u0e17\u0e40\u0e04\u0e19\u0e25\u0e07\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e32\u0e22\u0e38 6 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e41\u0e15\u0e48\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e14\u0e49\u0e16\u0e36\u0e07 30 \u0e27\u0e31\u0e19\n       \u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e02\u0e49\u0e32\u0e21\u0e04\u0e37\u0e19\u0e08\u0e36\u0e07\u0e16\u0e37\u0e2d\u0e42\u0e17\u0e40\u0e04\u0e19\u0e17\u0e35\u0e48\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e15\u0e2d\u0e1a \"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\"\n       \u0e0b\u0e36\u0e48\u0e07\u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e02\u0e2d\u0e07 handleError \u0e08\u0e36\u0e07\u0e44\u0e14\u0e49\u0e41\u0e04\u0e48 toast \u0e41\u0e14\u0e07 \u0e46 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e31\u0e49\u0e19\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e01\u0e14 F5\n       \u0e17\u0e32\u0e07\u0e41\u0e01\u0e49: \u0e02\u0e2d\u0e0a\u0e38\u0e14 scope \u0e43\u0e2b\u0e21\u0e48\u0e08\u0e32\u0e01 restoreSession \u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 *\/\n    const REF_EXPIRED = \/\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\/;\n\n    \/\/ \u0e23\u0e31\u0e1a\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e04\u0e33\u0e02\u0e2d \u0e41\u0e25\u0e30\u0e1c\u0e25\u0e23\u0e32\u0e22\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48 confirmRecords \u0e2a\u0e48\u0e07\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e43\u0e19 failed\n    function isRefExpired(error) {\n      return REF_EXPIRED.test((error && error.message) || '');\n    }\n\n    \/** \u0e02\u0e2d scopeRef \u0e0a\u0e38\u0e14\u0e43\u0e2b\u0e21\u0e48 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e23\u0e31\u0e01\u0e29\u0e32\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e27\u0e49 \u0e04\u0e37\u0e19 true \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e02\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27 *\/\n    async function refreshScopeRefs() {\n      if (!state.sessionToken) return false;\n      const token = state.sessionToken;\n      const selectedRef = state.scopeRef;\n      const previous = (state.scopes || []).find(scope => scope.ref === selectedRef);\n      const previousScope = previous || (state.dashboard && state.dashboard.scope) || {};\n      const previousLabel = previousScope.label || '';\n      const previousYear = previousScope.year || null;\n      const result = await server('restoreSession', token);\n      if (token !== state.sessionToken || selectedRef !== state.scopeRef) return false;\n      if (!result || !result.scopes || !result.scopes.length) return false;\n      state.session = result;\n      state.scopes = result.scopes;\n      state.currentYear = result.currentYear || state.currentYear;\n      const match = result.scopes.find(scope => scope.label === previousLabel && (scope.year || null) === previousYear) ||\n        result.scopes.find(scope => scope.label === previousLabel) || result.scopes[0];\n      state.scopeRef = match.ref;\n      renderScopeSelectors();\n      return true;\n    }\n\n    async function loadDashboard(options) {\n      if (!state.scopeRef) return;\n      \/\/ silent = \u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e48\u0e32\u0e19\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e30\u0e14\u0e38\u0e14\n      const silent = Boolean(options && options.silent);\n      \/\/ inline = \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2a\u0e31\u0e48\u0e07\u0e2d\u0e30\u0e44\u0e23 (\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e39\u0e49\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19) \u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e43\u0e19\u0e01\u0e23\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1e\u0e2d\n      \/\/ \u0e44\u0e21\u0e48\u0e01\u0e32\u0e07\u0e21\u0e48\u0e32\u0e19\u0e17\u0e31\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e21\u0e19\u0e39\u0e41\u0e25\u0e30\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01\u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d\n      const inline = !silent && Boolean(options && options.inline);\n      const request = ++state.dashboardRequest;\n      if (!silent) {\n        state.foregroundRequest = request;\n        state.dashboardSignature = ''; \/\/ \u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e1b\u0e01\u0e15\u0e34 \u0e43\u0e2b\u0e49\u0e15\u0e31\u0e49\u0e07\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e10\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19\u0e23\u0e2d\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e16\u0e31\u0e14\u0e44\u0e1b\n        state.liveEpoch++;             \/\/ \u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e23\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e40\u0e01\u0e48\u0e32\u0e41\u0e25\u0e49\u0e27\n        state.liveLastChangeAt = Date.now(); \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e25\u0e07\u0e21\u0e37\u0e2d\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23 \u0e43\u0e2b\u0e49\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\n        if (inline) showRecordsEmpty('loading');\n        else setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d...');\n      }\n      \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e35\u0e22\u0e01 \u0e40\u0e1e\u0e23\u0e32\u0e30 scopeRef \u0e2d\u0e32\u0e08\u0e16\u0e39\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e42\u0e14\u0e22 refreshScopeRefs()\n      const buildRequest = () => ({\n        scopeRef: state.scopeRef,\n        page: state.page,\n        pageSize: 25,\n        search: state.search,\n        sort: state.sort,\n        status: state.status,\n        all: true\n      });\n      try {\n        let result;\n        try {\n          result = await server('getDashboard', state.sessionToken, buildRequest());\n        } catch (error) {\n          if (!isRefExpired(error) || !(await refreshScopeRefs())) throw error;\n          result = await server('getDashboard', state.sessionToken, buildRequest());\n        }\n        if (request !== state.dashboardRequest) return;\n        applyDashboard(result);\n      } catch (error) {\n        if (request !== state.dashboardRequest) return;\n        if (silent) throw error;\n        $('#recordsList').replaceChildren(); $('#recordsHead').classList.add('hidden');\n        clearRecordSelection();\n        $('.pagination').classList.add('hidden'); $('#resultSummary').textContent = '\u0e22\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49';\n        showRecordsEmpty('error'); syncClearFiltersButton(); handleError(error);\n      } finally {\n        \/\/ \u0e42\u0e2b\u0e21\u0e14 inline \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e34\u0e14\u0e21\u0e48\u0e32\u0e19\u0e44\u0e27\u0e49 \u0e08\u0e36\u0e07\u0e2b\u0e49\u0e32\u0e21\u0e2a\u0e31\u0e48\u0e07\u0e1b\u0e34\u0e14 \u2014 \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2d\u0e37\u0e48\u0e19\u0e2d\u0e32\u0e08\u0e01\u0e33\u0e25\u0e31\u0e07\u0e43\u0e0a\u0e49\u0e21\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\n        if (!silent && !inline && state.foregroundRequest === request) setLoading(false);\n      }\n    }\n\n    \/* ---- \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 ----\n       Apps Script \u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e2b\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e40\u0e2d\u0e07 \u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e16\u0e32\u0e21\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e22\u0e30\n       \u0e14\u0e49\u0e27\u0e22\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e40\u0e1a\u0e32\u0e21\u0e32\u0e01 (getDashboardSignal \u0e2d\u0e48\u0e32\u0e19\u0e41\u0e04\u0e48\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27) \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07\n       \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e08\u0e36\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2b\u0e19\u0e49\u0e32 *\/\n    const LIVE_FAST_MS = 7000;                    \/\/ \u0e0a\u0e48\u0e27\u0e07\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e2b\u0e27 \u2014 \u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48 (\u0e15\u0e31\u0e49\u0e07 7 \u0e27\u0e34 \u0e40\u0e1c\u0e37\u0e48\u0e2d\u0e42\u0e04\u0e27\u0e15\u0e32 Apps Script \u0e15\u0e2d\u0e19\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19)\n    const LIVE_IDLE_MS = 30000;                   \/\/ \u0e40\u0e07\u0e35\u0e22\u0e1a\u0e21\u0e32\u0e2a\u0e31\u0e01\u0e1e\u0e31\u0e01 \u2014 \u0e1c\u0e48\u0e2d\u0e19\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e25\u0e07\n    const LIVE_SLOW_MS = 60000;                   \/\/ \u0e40\u0e07\u0e35\u0e22\u0e1a\u0e21\u0e32\u0e19\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e17\u0e47\u0e1a\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48\n    const LIVE_IDLE_AFTER_MS = 3 * 60 * 1000;\n    const LIVE_SLOW_AFTER_MS = 15 * 60 * 1000;\n    const LIVE_SLEEP_AFTER_MS = 30 * 60 * 1000;   \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e41\u0e15\u0e30\u0e40\u0e25\u0e22 \u0e43\u0e2b\u0e49\u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19\n\n    function startLiveUpdates() {\n      stopLiveUpdates();\n      if (!state.sessionToken) return;\n      const now = Date.now();\n      state.liveLastChangeAt = now;\n      state.liveLastActivityAt = now;\n      state.liveErrors = 0;\n      state.liveAsleep = false;\n      setLiveStatus('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2022 \u0e15\u0e23\u0e27\u0e08\u0e17\u0e38\u0e01 ' + Math.round(LIVE_FAST_MS \/ 1000) + ' \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35');\n      \/\/ \u0e44\u0e21\u0e48\u0e15\u0e23\u0e27\u0e08\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e41\u0e22\u0e48\u0e07\u0e01\u0e31\u0e19\u0e15\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\n      scheduleLivePoll(LIVE_FAST_MS);\n    }\n\n    function stopLiveUpdates() {\n      if (state.liveTimer) clearTimeout(state.liveTimer);\n      state.liveTimer = null;\n      state.liveBusy = false;\n      state.liveAsleep = false;\n      state.liveErrors = 0;\n      state.dashboardSignature = '';\n      setLiveStatus('');\n    }\n\n    function scheduleLivePoll(delay) {\n      if (state.liveTimer) clearTimeout(state.liveTimer);\n      state.liveTimer = null;\n      if (!state.sessionToken || state.liveAsleep) return;\n      state.liveTimer = setTimeout(runLivePoll, delay == null ? liveDelay() : delay);\n    }\n\n    \/* \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e1b\u0e23\u0e31\u0e1a\u0e15\u0e32\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e01\u0e32\u0e23\u0e13\u0e4c \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e47\u0e27\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e19\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\n       \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e1c\u0e32\u0e42\u0e04\u0e27\u0e15\u0e32 Apps Script \u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e40\u0e09\u0e22 \u0e46 *\/\n    function liveDelay() {\n      if (state.liveErrors) {\n        return Math.min(LIVE_SLOW_MS, LIVE_FAST_MS * Math.pow(2, Math.min(4, state.liveErrors)));\n      }\n      if (document.hidden) return LIVE_SLOW_MS;\n      const quiet = Date.now() - state.liveLastChangeAt;\n      if (quiet >= LIVE_SLOW_AFTER_MS) return LIVE_SLOW_MS;\n      if (quiet >= LIVE_IDLE_AFTER_MS) return LIVE_IDLE_MS;\n      return LIVE_FAST_MS;\n    }\n\n    async function runLivePoll() {\n      state.liveTimer = null;\n      if (!state.sessionToken) return;\n      if (Date.now() - state.liveLastActivityAt >= LIVE_SLEEP_AFTER_MS) {\n        state.liveAsleep = true;\n        setLiveStatus('\u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 (\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19) \u2014 \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e2b\u0e21\u0e48');\n        return;\n      }\n      await pollLiveUpdates();\n      scheduleLivePoll();\n    }\n\n    \/* \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e02\u0e22\u0e31\u0e1a = \u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e41\u0e25\u0e30\u0e1b\u0e25\u0e38\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e44\u0e27\u0e49 *\/\n    function noteUserActivity() {\n      state.liveLastActivityAt = Date.now();\n      if (!state.sessionToken || !state.liveAsleep) return;\n      state.liveAsleep = false;\n      setLiveStatus('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2022 \u0e15\u0e23\u0e27\u0e08\u0e17\u0e38\u0e01 ' + Math.round(LIVE_FAST_MS \/ 1000) + ' \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35');\n      scheduleLivePoll(0);\n    }\n\n    function setLiveStatus(text) {\n      const box = $('#liveStatus');\n      if (!box) return;\n      $('#liveStatusText').textContent = text;\n      box.classList.toggle('hidden', !text);\n    }\n\n    async function pollLiveUpdates() {\n      if (!state.sessionToken || !state.scopeRef) return;\n      if (state.liveBusy) return;\n      if (document.hidden) return;                        \/\/ \u0e41\u0e17\u0e47\u0e1a\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e1a\u0e01\u0e27\u0e19\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\n      if (document.querySelector('dialog[open]')) return; \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e33\u0e25\u0e31\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e43\u0e19\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a \u0e2d\u0e22\u0e48\u0e32\u0e2a\u0e25\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e15\u0e49\u0e21\u0e37\u0e2d\n      state.liveBusy = true;\n      \/\/ \u0e2a\u0e48\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22 \u0e16\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e08\u0e23\u0e34\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e41\u0e19\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e0a\u0e38\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e40\u0e25\u0e22\n      \/\/ \u0e1b\u0e23\u0e30\u0e2b\u0e22\u0e31\u0e14\u0e01\u0e32\u0e23\u0e27\u0e34\u0e48\u0e07\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e2d\u0e1a \u0e0b\u0e36\u0e48\u0e07\u0e1a\u0e19 Apps Script \u0e01\u0e34\u0e19\u0e40\u0e27\u0e25\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\n      const view = {\n        page: state.page, pageSize: 25, search: state.search,\n        sort: state.sort, status: state.status, all: true\n      };\n      \/\/ \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e25\u0e31\u0e1a\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e43\u0e2b\u0e21\u0e48 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e04\u0e33\u0e02\u0e2d\u0e19\u0e35\u0e49\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\n      \/\/ \u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e40\u0e01\u0e48\u0e32 \u0e15\u0e49\u0e2d\u0e07\u0e17\u0e34\u0e49\u0e07 \u0e44\u0e21\u0e48\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e31\u0e49\u0e19\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e10\u0e32\u0e19\u0e08\u0e30\u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19\u0e02\u0e49\u0e32\u0e21\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n      const epoch = state.liveEpoch;\n      try {\n        const signal = await server('getDashboardSignal', state.sessionToken, {\n          scopeRef: state.scopeRef,\n          since: state.dashboardSignature,\n          view: view\n        });\n        if (epoch !== state.liveEpoch) return;\n        state.liveErrors = 0;\n        const signature = String((signal && signal.signature) || '');\n        if (!signature) return;\n        if (!state.dashboardSignature) {          \/\/ \u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01 \u2014 \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e10\u0e32\u0e19\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n          state.dashboardSignature = signature;\n          return;\n        }\n        if (signature === state.dashboardSignature) return;\n        const previous = state.dashboardSignature;\n        state.dashboardSignature = signature;\n        const before = totalOf(state.dashboard);\n        const beforeDigest = viewDigest(state.dashboard);\n        try {\n          \/\/ \u0e43\u0e0a\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e41\u0e19\u0e1a\u0e21\u0e32\u0e44\u0e14\u0e49\u0e01\u0e47\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e14\u0e39\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e22\u0e39\u0e48 \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e33\u0e04\u0e49\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d\n          \/\/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e01\u0e31\u0e1a\u0e17\u0e38\u0e01\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07 \u0e2a\u0e48\u0e27\u0e19\u0e41\u0e1a\u0e1a\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e01\u0e47\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e14\u0e39\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e33\u0e04\u0e49\u0e19\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e22\u0e39\u0e48\n          if (signal.dashboard && signal.dashboard.scope && (signal.dashboard.full || sameView(view))) {\n            applyDashboard(signal.dashboard);\n          } else {\n            await loadDashboard({silent: true});\n          }\n        } catch (error) {\n          state.dashboardSignature = previous;   \/\/ \u0e42\u0e2b\u0e25\u0e14\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e43\u0e2b\u0e49\u0e23\u0e2d\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\n          throw error;\n        }\n        state.liveLastChangeAt = Date.now();\n        setLiveStatus('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 ' + new Intl.DateTimeFormat('th-TH', {\n          hour: '2-digit', minute: '2-digit', second: '2-digit'\n        }).format(new Date()) + ' \u0e19.');\n        \/\/ \u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e2d\u0e32\u0e08\u0e02\u0e22\u0e31\u0e1a\u0e42\u0e14\u0e22\u0e17\u0e35\u0e48\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 (\u0e40\u0e0a\u0e48\u0e19\u0e41\u0e01\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e2d\u0e37\u0e48\u0e19\n        \/\/ \u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e43\u0e19\u0e41\u0e04\u0e0a\u0e15\u0e32\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e23\u0e34\u0e07\u0e44\u0e21\u0e48\u0e17\u0e31\u0e19\u0e1e\u0e2d\u0e14\u0e35) \u0e01\u0e23\u0e13\u0e35\u0e19\u0e31\u0e49\u0e19\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e14\u0e49\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\n        if (viewDigest(state.dashboard) === beforeDigest) return;\n        const added = before == null ? null : totalOf(state.dashboard) - before;\n        if (added && added > 0) {\n          toast(`\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 ${formatNumber(added)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27`, 'success');\n        } else {\n          toast('\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27', 'info', 3000);\n        }\n      } catch (error) {\n        const message = error && error.message ? error.message : String(error || '');\n        if (\/\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19|\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48|\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\/.test(message)) {\n          stopLiveUpdates();\n          handleError(error);\n          return;\n        }\n        \/\/ scopeRef \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07 \u2014 \u0e02\u0e2d\u0e0a\u0e38\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e49\u0e27\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e23\u0e2d\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e15\u0e23\u0e27\u0e08\u0e15\u0e48\u0e2d\u0e15\u0e32\u0e21\u0e1b\u0e01\u0e15\u0e34\n        \/\/ \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e17\u0e33 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e08\u0e30\u0e25\u0e49\u0e21\u0e17\u0e38\u0e01\u0e23\u0e2d\u0e1a\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u0e08\u0e19\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e16\u0e2d\u0e22\u0e44\u0e1b\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48 60 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e27\u0e31\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e40\u0e2d\u0e07\n        if (isRefExpired(error)) {\n          try {\n            if (await refreshScopeRefs()) {\n              state.dashboardSignature = '';\n              state.liveErrors = 0;\n              return;\n            }\n          } catch (refreshError) {\n            handleError(refreshError);\n            stopLiveUpdates();\n            return;\n          }\n        }\n        \/\/ \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e2d\u0e37\u0e48\u0e19 \u0e46 (\u0e40\u0e19\u0e47\u0e15\u0e2b\u0e25\u0e38\u0e14) \u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22 \u0e46 \u0e16\u0e2d\u0e22\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e25\u0e07\n        state.liveErrors++;\n      } finally {\n        state.liveBusy = false;\n      }\n    }\n\n    \/* ---- \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e43\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c ----\n       \u0e41\u0e1a\u0e47\u0e01\u0e40\u0e2d\u0e19\u0e14\u0e4c\u0e23\u0e38\u0e48\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e21\u0e32\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 (full) \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32 \u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e01\u0e23\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30 \u0e41\u0e25\u0e30\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\n       \u0e08\u0e36\u0e07\u0e04\u0e33\u0e19\u0e27\u0e13\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e2d\u0e48\u0e32\u0e19\u0e0a\u0e35\u0e15\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e01\u0e14\n       \u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e01\u0e32\u0e23\u0e19\u0e31\u0e1a \u0e41\u0e25\u0e30\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a getDashboard \u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e38\u0e01\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e22\u0e31\u0e07\u0e2a\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e43\u0e0a\u0e49\n       \u0e42\u0e2b\u0e21\u0e14\u0e19\u0e31\u0e49\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e41\u0e17\u0e47\u0e1a\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19\u0e40\u0e1e\u0e14\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e41\u0e1a\u0e47\u0e01\u0e40\u0e2d\u0e19\u0e14\u0e4c\u0e22\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01 full *\/\n    const LOCAL_PAGE_SIZE = 25;\n\n    \/** \u0e23\u0e31\u0e1a\u0e04\u0e33\u0e15\u0e2d\u0e1a getDashboard \u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07\u0e41\u0e1a\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a (full) \u0e41\u0e25\u0e30\u0e41\u0e1a\u0e1a\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c \u0e41\u0e25\u0e49\u0e27\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 *\/\n    function applyDashboard(result) {\n      state.fullData = result && result.full ? result : null;\n      state.scopeRef = result.scope.ref;\n      state.dashboard = state.fullData ? buildLocalView() : result;\n      renderDashboard(state.dashboard);\n    }\n\n    \/** \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07 (\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e33\u0e04\u0e49\u0e19\/\u0e2a\u0e16\u0e32\u0e19\u0e30\/\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07) \u2014 \u0e04\u0e33\u0e19\u0e27\u0e13\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e16\u0e49\u0e32\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e02\u0e2d\u0e07\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 *\/\n    function refreshView() {\n      if (state.fullData && state.fullData.scope.ref === state.scopeRef) {\n        state.dashboard = buildLocalView();\n        renderDashboard(state.dashboard);\n        return Promise.resolve();\n      }\n      return loadDashboard();\n    }\n\n    function buildLocalView() {\n      const data = state.fullData;\n      const search = String(state.search || '').trim().slice(0, 200).trim().toLowerCase();\n      const status = state.status === 'confirmed' || state.status === 'pending' ? state.status : 'all';\n      const sort = state.sort === 'sheet' ? 'sheet' : 'latest';\n      const filtered = [];\n      let confirmedCount = 0;\n      let pendingCount = 0;\n      let notificationCount = 0;\n      data.records.forEach(record => {\n        if (!record.confirmed) notificationCount++;\n        if (search) {\n          if (record.searchText === undefined) record.searchText = record.values.join(' ').trim().toLowerCase();\n          if (record.searchText.indexOf(search) === -1) return;\n        }\n        if (record.confirmed) confirmedCount++;\n        else pendingCount++;\n        if (status === 'confirmed' && !record.confirmed) return;\n        if (status === 'pending' && record.confirmed) return;\n        filtered.push(record);\n      });\n\n      \/\/ \u0e2b\u0e32\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e23\u0e35\u0e22\u0e07 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e23\u0e13\u0e35\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e41\u0e16\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e40\u0e25\u0e37\u0e2d\u0e01\n      let latest = null;\n      filtered.forEach(record => {\n        if (record.appliedTime !== null && (!latest || record.appliedTime > latest.appliedTime)) latest = record;\n      });\n      if (sort === 'latest') {\n        filtered.sort((a, b) => {\n          if (a.appliedTime !== b.appliedTime) {\n            if (a.appliedTime === null) return 1;\n            if (b.appliedTime === null) return -1;\n            return b.appliedTime - a.appliedTime;\n          }\n          return b.rowNumber - a.rowNumber;\n        });\n      }\n\n      const total = filtered.length;\n      const totalPages = Math.max(1, Math.ceil(total \/ LOCAL_PAGE_SIZE));\n      const page = Math.min(Math.max(1, Number(state.page) || 1), totalPages);\n      state.page = page;\n      const records = filtered.slice((page - 1) * LOCAL_PAGE_SIZE, page * LOCAL_PAGE_SIZE);\n      \/\/ cells \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07 \u0e41\u0e25\u0e49\u0e27\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e01\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e48\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e31\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e0b\u0e49\u0e33\u0e21\u0e32\u0e17\u0e38\u0e01\u0e41\u0e16\u0e27\n      records.forEach(record => {\n        if (!record.cells) record.cells = data.headers.map((label, index) => ({label, value: record.values[index] || ''}));\n      });\n      return {\n        scope: data.scope,\n        headers: data.headers,\n        records,\n        page,\n        pageSize: LOCAL_PAGE_SIZE,\n        total,\n        matchingTotal: confirmedCount + pendingCount,\n        totalPages,\n        confirmedCount,\n        pendingCount,\n        notificationCount,\n        status,\n        sort,\n        sortColumn: data.sortColumn,\n        latestAppliedAt: latest ? latest.appliedAt : ''\n      };\n    }\n\n    function sameView(view) {\n      return view.page === state.page && view.search === state.search &&\n        view.sort === state.sort && view.status === state.status;\n    }\n\n    function totalOf(data) {\n      if (!data) return null;\n      return Number(data.matchingTotal == null ? data.total : data.matchingTotal) || 0;\n    }\n\n    \/* \u0e2a\u0e23\u0e38\u0e1b\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e2a\u0e31\u0e49\u0e19 \u0e46 \u0e43\u0e0a\u0e49\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e27\u0e48\u0e32\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e41\u0e25\u0e49\u0e27\u0e21\u0e35\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e08\u0e23\u0e34\u0e07\u0e44\u0e2b\u0e21 *\/\n    function viewDigest(data) {\n      if (!data) return '';\n      return [\n        data.total, data.matchingTotal, data.confirmedCount, data.pendingCount,\n        (data.records || []).map(record => record.rowNumber + ':' + (record.confirmed ? 1 : 0)).join(',')\n      ].join('|');\n    }\n\n    function renderDashboard(data) {\n      $('#schoolDescription').textContent = '\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19: ' + scopeDisplayName(data.scope);\n      $('#recordsTitle').textContent = '\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 \u2014 ' + scopeDisplayName(data.scope);\n      const matchingTotal = data.matchingTotal == null ? data.total : data.matchingTotal;\n      $('#totalCount').textContent = formatNumber(matchingTotal);\n      $('#confirmedCount').textContent = formatNumber(data.confirmedCount);\n      $('#pendingCount').textContent = formatNumber(data.pendingCount);\n      if (!state.search) $('#homeApplicantTotal').textContent = formatNumber(matchingTotal);\n      const pendingTotal = data.notificationCount == null ? data.pendingCount : data.notificationCount;\n      $('#homeApplicantPending').textContent = formatNumber(pendingTotal);\n      $('#homePendingActionCount').textContent = formatNumber(pendingTotal);\n      $('#homePendingScope').textContent = '\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25: ' + scopeDisplayName(data.scope);\n      $('#openPendingButton').disabled = false;\n      $('#openPendingButton').setAttribute('aria-label', '\u0e14\u0e39\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e2d\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 ' + formatNumber(pendingTotal) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23');\n      updateNotificationBadge(data.notificationCount == null ? data.pendingCount : data.notificationCount);\n      state.status = data.status || state.status || 'all';\n      $$('.status-filter').forEach(button => {\n        const active = button.dataset.status === state.status;\n        button.classList.toggle('active', active);\n        button.setAttribute('aria-pressed', String(active));\n      });\n      const statusLabel = state.status === 'pending' ? '\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a' : state.status === 'confirmed' ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27' : '';\n      $('#resultSummary').textContent = (state.search\n        ? `\u0e1e\u0e1a ${formatNumber(data.total)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23${statusLabel ? ` \u0e2a\u0e16\u0e32\u0e19\u0e30 \u201c${statusLabel}\u201d` : ''} \u0e08\u0e32\u0e01\u0e04\u0e33\u0e04\u0e49\u0e19 \u201c${state.search}\u201d`\n        : `${statusLabel || '\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14'} ${formatNumber(data.total)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23`) + sortSummary(data);\n      if (data.sort) $('#sortSelect').value = data.sort;\n      \/\/ \u0e1a\u0e2d\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a Gmail (\"1\u201325 \u0e08\u0e32\u0e01 57\") \u0e0b\u0e36\u0e48\u0e07\u0e1a\u0e2d\u0e01\u0e44\u0e14\u0e49\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e40\u0e25\u0e02\u0e2b\u0e19\u0e49\u0e32\u0e27\u0e48\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e39\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e44\u0e2b\u0e19\u0e2d\u0e22\u0e39\u0e48\n      const pageStart = data.total ? (data.page - 1) * (data.pageSize || 25) + 1 : 0;\n      const pageEnd = data.total ? pageStart + Math.max(data.records.length, 1) - 1 : 0;\n      $('#pageInfo').textContent = formatNumber(pageStart) + '\u2013' + formatNumber(pageEnd) + ' \u0e08\u0e32\u0e01 ' + formatNumber(data.total);\n      $('#tabPendingCount').textContent = formatNumber(pendingTotal);\n      $('#tabPendingCount').classList.toggle('hidden', !pendingTotal);\n      $('#prevPage').disabled = data.page <= 1;\n      $('#nextPage').disabled = data.page >= data.totalPages;\n      renderScopeSelectors();\n\n      \/\/ \u0e15\u0e31\u0e14\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49 \u2014 \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\n      \/\/ \u0e2b\u0e23\u0e37\u0e2d\u0e21\u0e35\u0e04\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e1b\u0e01\u0e48\u0e2d\u0e19 \u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e08\u0e30\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e40\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e47\u0e19\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e08\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\n      const pendingRows = new Set(data.records.filter(record => !record.confirmed).map(record => record.rowNumber));\n      state.selected.forEach(rowNumber => { if (!pendingRows.has(rowNumber)) state.selected.delete(rowNumber); });\n\n      const list = $('#recordsList');\n      const seqOffset = ((data.page || 1) - 1) * (data.pageSize || 25);\n      list.replaceChildren(...data.records.map(function (record, index) {\n        return createRecordElement(record, seqOffset + index + 1);\n      }));\n      $('#recordsHead').classList.toggle('hidden', data.records.length === 0);\n      syncBulkBar(data.records);\n      queueRecordsPin();\n      syncClearFiltersButton();\n      if (!data.records.length) showRecordsEmpty(state.search || state.status !== 'all' ? 'filtered' : 'empty');\n      else $('#emptyState').classList.add('hidden');\n      $('.pagination').classList.toggle('hidden', data.total === 0);\n    }\n\n    function sortSummary(data) {\n      if (!data.sort) return '';                    \/\/ \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\n      if (data.sort !== 'latest') return ' \u2022 \u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e19\u0e0a\u0e35\u0e15';\n      const label = data.sortColumn\n        ? `\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21 \u201c${data.sortColumn}\u201d \u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19`\n        : '\u0e40\u0e23\u0e35\u0e22\u0e07\u0e08\u0e32\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19';\n      return data.latestAppliedAt ? ` \u2022 ${label} (\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14: ${data.latestAppliedAt})` : ` \u2022 ${label}`;\n    }\n\n    function updateNotificationBadge(value) {\n      const count = Math.max(0, Number(value) || 0);\n      const bell = $('#notificationBell');\n      const badge = $('#notificationBadge');\n      badge.textContent = count > 99 ? '99+' : formatNumber(count);\n      badge.classList.toggle('hidden', count === 0);\n      bell.classList.toggle('has-notifications', count > 0);\n      bell.dataset.count = String(count);\n      bell.setAttribute('aria-label', count\n        ? `\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 ${formatNumber(count)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a`\n        : '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48');\n    }\n\n    async function onNotificationBell() {\n      const count = Number($('#notificationBell').dataset.count || 0);\n      toast(count\n        ? `\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 ${formatNumber(count)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a`\n        : '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a', 'info');\n      if (count) {\n        await openPendingRecords();\n        $('.records-panel').scrollIntoView({behavior: 'smooth', block: 'start'});\n      }\n    }\n\n    \/* ---- \u0e1b\u0e31\u0e01\u0e41\u0e16\u0e1a\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e1a\u0e19\u0e08\u0e2d\u0e15\u0e2d\u0e19\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e14\u0e39\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d ---- *\/\n\n    \/** \u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07\u0e02\u0e2d\u0e07\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e1b\u0e31\u0e01\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e08\u0e2d \u0e40\u0e0a\u0e48\u0e19 \u0e41\u0e16\u0e1a\u0e14\u0e33\u0e02\u0e2d\u0e07 WordPress \u0e2b\u0e23\u0e37\u0e2d topbar \u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e40\u0e2d\u0e07\n        \u0e16\u0e49\u0e32\u0e18\u0e35\u0e21\u0e21\u0e35\u0e41\u0e16\u0e1a\u0e2b\u0e31\u0e27\u0e1b\u0e31\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e2d\u0e35\u0e01\u0e0a\u0e31\u0e49\u0e19 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e30\u0e22\u0e30\u0e44\u0e14\u0e49\u0e14\u0e49\u0e27\u0e22 CSS: :root { --records-pin-extra-top: 48px } *\/\n    function pinnedTopOffset() {\n      let offset = 0;\n      $$('#wpadminbar, .topbar').forEach(element => {\n        const position = getComputedStyle(element).position;\n        if (position !== 'fixed' && position !== 'sticky') return;\n        const rect = element.getBoundingClientRect();\n        if (rect.top <= 1 && rect.bottom > offset) offset = rect.bottom;\n      });\n      const extra = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--records-pin-extra-top'));\n      return offset + (extra || 0);\n    }\n\n    function syncRecordsPin() {\n      const bar = $('.records-sticky');\n      const spacer = $('#recordsStickySpacer');\n      const panel = $('.records-panel');\n      if (!bar || !spacer || !panel) return;\n\n      const unpin = () => {\n        bar.classList.remove('is-pinned');\n        spacer.style.height = '';\n        bar.style.top = bar.style.left = bar.style.width = '';\n      };\n      \/\/ offsetParent \u0e40\u0e1b\u0e47\u0e19 null \u0e41\u0e1b\u0e25\u0e27\u0e48\u0e32\u0e42\u0e21\u0e14\u0e39\u0e25\u0e19\u0e35\u0e49\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e25\u0e14\u0e01\u0e32\u0e23\u0e1b\u0e31\u0e01\u0e17\u0e34\u0e49\u0e07 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e41\u0e16\u0e1a\u0e08\u0e30\u0e04\u0e49\u0e32\u0e07\u0e1a\u0e19\u0e08\u0e2d\u0e02\u0e49\u0e32\u0e21\u0e2b\u0e19\u0e49\u0e32\n      if (!panel.offsetParent) { unpin(); return; }\n\n      const offset = pinnedTopOffset();\n      const height = bar.offsetHeight;\n      const slot = spacer.getBoundingClientRect();\n      const panelBottom = panel.getBoundingClientRect().bottom;\n      \/\/ \u0e1b\u0e31\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e41\u0e16\u0e1a\u0e01\u0e33\u0e25\u0e31\u0e07\u0e08\u0e30\u0e1e\u0e49\u0e19\u0e02\u0e2d\u0e1a\u0e1a\u0e19 \u0e41\u0e25\u0e30\u0e40\u0e25\u0e34\u0e01\u0e1b\u0e31\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e1e\u0e49\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e41\u0e16\u0e1a\u0e08\u0e30\u0e25\u0e2d\u0e22\u0e04\u0e49\u0e32\u0e07\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e17\u0e35\u0e48\u0e27\u0e48\u0e32\u0e07\n      if (!(slot.top < offset && panelBottom > offset + height)) { unpin(); return; }\n\n      spacer.style.height = height + 'px';\n      bar.style.top = offset + 'px';\n      bar.style.left = slot.left + 'px';\n      bar.style.width = slot.width + 'px';\n      bar.classList.add('is-pinned');\n    }\n\n    let pinFrame = 0;\n    \/** \u0e23\u0e27\u0e1a\u0e01\u0e32\u0e23\u0e27\u0e31\u0e14\u0e44\u0e27\u0e49\u0e40\u0e1f\u0e23\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e08\u0e30\u0e04\u0e33\u0e19\u0e27\u0e13\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e38\u0e01\u0e2d\u0e35\u0e40\u0e27\u0e19\u0e15\u0e4c\u0e08\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e07 *\/\n    function queueRecordsPin() {\n      if (pinFrame) return;\n      pinFrame = requestAnimationFrame(() => { pinFrame = 0; syncRecordsPin(); });\n    }\n\n    \/* ---- \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19 ----\n       \u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e04\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e21\u0e35\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49 \u0e41\u0e25\u0e30 renderDashboard\n       \u0e15\u0e31\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2b\u0e25\u0e38\u0e14\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e49\u0e32\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e17\u0e34\u0e49\u0e07\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e36\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e04\u0e23\u0e1a\u0e40\u0e2a\u0e21\u0e2d\u0e27\u0e48\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e08\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07 *\/\n    function syncBulkBar(records) {\n      records = records || (state.dashboard && state.dashboard.records) || [];\n      const pending = records.filter(record => !record.confirmed);\n      const count = state.selected.size;\n      $('#bulkBar').classList.toggle('hidden', records.length === 0 && !(state.dashboard && state.dashboard.total));\n\n      const selectAll = $('#bulkSelectAll');\n      selectAll.checked = count > 0 && count === pending.length;\n      selectAll.indeterminate = count > 0 && count < pending.length;\n      selectAll.disabled = pending.length === 0;\n      $('#bulkSelectMenuButton').disabled = pending.length === 0;\n      if (pending.length === 0) toggleBulkSelectMenu(false);\n      \/\/ \u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e15\u0e32\u0e21\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e01\u0e34\u0e14\u0e08\u0e23\u0e34\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e14 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e07\u0e17\u0e35\u0e48\n      selectAll.title = count ? '\u0e25\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14' : '\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32';\n      selectAll.setAttribute('aria-label', count\n        ? '\u0e25\u0e49\u0e32\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14'\n        : '\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32 ' + formatNumber(pending.length) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23');\n      $('#bulkSelectAllItem').textContent = '\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (' + formatNumber(pending.length) + ')';\n      $('#bulkSelectNoneItem').disabled = count === 0;\n      $('#bulkSelectedInfo').textContent = count\n        ? '\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49 ' + formatNumber(count) + ' \u0e08\u0e32\u0e01 ' + formatNumber(pending.length) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23'\n        : '';\n\n      const confirmButton = $('#bulkConfirmButton');\n      confirmButton.disabled = count === 0;\n      confirmButton.classList.toggle('hidden', count === 0); \/\/ \u0e1b\u0e38\u0e48\u0e21\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e42\u0e1c\u0e25\u0e48\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19 Gmail\n      confirmButton.textContent = count ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 ' + formatNumber(count) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23' : '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01';\n    }\n\n    \/** \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a state.selected \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e19\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32 *\/\n    function syncRecordCheckboxes() {\n      $$('#recordsList .record-row').forEach(row => {\n        const checkbox = $('.record-checkbox', row);\n        if (!checkbox) return;\n        checkbox.checked = state.selected.has(Number(row.dataset.row));\n        row.classList.toggle('is-picked', checkbox.checked);\n      });\n    }\n\n    \/** \u0e40\u0e1b\u0e34\u0e14\/\u0e1b\u0e34\u0e14\u0e40\u0e21\u0e19\u0e39\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01 \u0e44\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e04\u0e48\u0e32\u0e21\u0e32\u0e04\u0e37\u0e2d\u0e2a\u0e25\u0e31\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30 *\/\n    function toggleBulkSelectMenu(open) {\n      const menu = $('#bulkSelectMenu');\n      const show = open === undefined ? menu.classList.contains('hidden') : Boolean(open);\n      menu.classList.toggle('hidden', !show);\n      $('#bulkSelectMenuButton').setAttribute('aria-expanded', show ? 'true' : 'false');\n      if (show) $('.bulk-select-item', menu).focus();\n    }\n\n\n\n    \/** \u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01 *\/\n    function applyBulkSelectMode(mode) {\n      const pending = ((state.dashboard && state.dashboard.records) || []).filter(record => !record.confirmed);\n      state.selected.clear();\n      if (mode !== 'none') pending.forEach(record => state.selected.add(record.rowNumber));\n      syncRecordCheckboxes();\n      syncBulkBar();\n    }\n\n    \/** \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e38\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e34\u0e4a\u0e01\u0e44\u0e27\u0e49\u0e43\u0e19\u0e04\u0e33\u0e02\u0e2d\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e22\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e32\u0e22\u0e41\u0e16\u0e27\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e14\u0e17\u0e35\u0e25\u0e30\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 *\/\n    async function confirmSelectedRecords() {\n      const records = ((state.dashboard && state.dashboard.records) || [])\n        .filter(record => !record.confirmed && state.selected.has(record.rowNumber));\n      if (!records.length) return;\n\n      const PREVIEW = 5;\n      const preview = records.slice(0, PREVIEW).map(record => '\u2022 ' + record.title).join('\\n');\n      const notice = '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49 ' + formatNumber(records.length) +\n        ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?\\n\\n' + preview +\n        (records.length > PREVIEW ? '\\n\u2026 \u0e41\u0e25\u0e30\u0e2d\u0e35\u0e01 ' + formatNumber(records.length - PREVIEW) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23' : '');\n      if (!confirm(notice)) return;\n\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 ' + formatNumber(records.length) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23...');\n      try {\n        const result = await server('confirmRecords', state.sessionToken, records.map(record => record.ref));\n        const failed = (result && result.failed) || [];\n        state.selected.clear();\n\n        \/\/ \u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e22\u0e01\u0e0a\u0e38\u0e14 (\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e40\u0e01\u0e34\u0e19 6 \u0e0a\u0e21.) \u2014 \u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e22\u0e34\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e0b\u0e49\u0e33\u0e40\u0e2d\u0e07\n        \/\/ \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e15\u0e2d\u0e19\u0e15\u0e34\u0e4a\u0e01\u0e2d\u0e32\u0e08\u0e40\u0e01\u0e48\u0e32\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\n        if (!result.confirmed && failed.length === records.length &&\n            failed.every(item => isRefExpired(item))) {\n          await refreshScopeRefs().catch(() => {});\n          await loadDashboard();\n          toast('\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e41\u0e25\u0e49\u0e27 \u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07',\n            'info', 7000);\n          return;\n        }\n\n        toast(result.message, failed.length ? 'info' : 'success', 6000);\n        reportBulkFailures(failed, records);\n        const failedRefs = new Set(failed.map(item => item.ref));\n        records.forEach(record => { if (!failedRefs.has(record.ref)) record.confirmed = true; });\n        if (state.fullData) refreshView();\n        else if (state.dashboard) renderDashboard(state.dashboard);\n        setLoading(false);\n        await loadDashboard({silent: true}).catch(() => {});\n      } catch (error) {\n        if (isRefExpired(error)) {\n          await refreshScopeRefs().catch(() => {});\n          await loadDashboard();\n          toast('\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e41\u0e25\u0e49\u0e27 \u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07',\n            'info', 7000);\n          return;\n        }\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    \/** \u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e27\u0e48\u0e32\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e44\u0e2b\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e41\u0e04\u0e48\u0e08\u0e33\u0e19\u0e27\u0e19 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e30\u0e44\u0e14\u0e49\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e15\u0e23\u0e27\u0e08\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e04\u0e19 *\/\n    function reportBulkFailures(failed, records) {\n      if (!failed.length) return;\n      const titleByRef = new Map(records.map(record => [record.ref, record.title]));\n      const names = failed.slice(0, 3).map(item => titleByRef.get(item.ref) || '\u0e44\u0e21\u0e48\u0e17\u0e23\u0e32\u0e1a\u0e0a\u0e37\u0e48\u0e2d');\n      toast('\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 ' + formatNumber(failed.length) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23: ' + names.join(', ') +\n        (failed.length > names.length ? ' \u0e41\u0e25\u0e30\u0e2d\u0e37\u0e48\u0e19 \u0e46' : '') + ' \u2014 ' + failed[0].message, 'error', 9000);\n    }\n\n    function createRecordElement(record, seqNumber) {\n      const row = document.createElement('article');\n      row.className = 'record-row' + (record.confirmed ? ' is-confirmed' : '');\n      row.dataset.row = String(record.rowNumber);\n      \/\/ \u0e04\u0e25\u0e34\u0e01\u0e15\u0e23\u0e07\u0e44\u0e2b\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27\u0e01\u0e47\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14 \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e43\u0e19 Gmail \u2014 \u0e22\u0e01\u0e40\u0e27\u0e49\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e41\u0e25\u0e30\u0e1b\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07\n      row.addEventListener('click', event => {\n        if (event.target instanceof Element && event.target.closest('input, button, label, a')) return;\n        showDetails(record);\n      });\n\n      \/\/ \u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e21\u0e35\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u0e43\u0e0a\u0e49 label \u0e2b\u0e48\u0e2d\u0e44\u0e27\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e14\u0e42\u0e14\u0e19\u0e07\u0e48\u0e32\u0e22\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e48\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e41\u0e04\u0e48\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e40\u0e25\u0e47\u0e01 \u0e46\n      const pick = document.createElement('label');\n      pick.className = 'record-pick';\n      if (!record.confirmed) {\n        const checkbox = document.createElement('input');\n        checkbox.type = 'checkbox';\n        checkbox.className = 'record-checkbox';\n        checkbox.checked = state.selected.has(record.rowNumber);\n        checkbox.setAttribute('aria-label', '\u0e40\u0e25\u0e37\u0e2d\u0e01 ' + record.title + ' \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19');\n        checkbox.addEventListener('change', () => {\n          if (checkbox.checked) state.selected.add(record.rowNumber);\n          else state.selected.delete(record.rowNumber);\n          row.classList.toggle('is-picked', checkbox.checked);\n          syncBulkBar();\n        });\n        row.classList.toggle('is-picked', checkbox.checked);\n        pick.appendChild(checkbox);\n      }\n\n      const name = document.createElement('div');\n      name.className = 'record-name';\n      name.textContent = record.title;\n      name.title = '\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48 ' + formatNumber(seqNumber || record.rowNumber - 1) + ' \u00b7 \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48 ' + record.rowNumber + ' \u0e43\u0e19\u0e0a\u0e35\u0e15';\n\n      \/\/ \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e41\u0e1a\u0e1a \"\u0e1b\u0e49\u0e32\u0e22 \u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 - \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e22\u0e48\u0e2d\" \u0e02\u0e2d\u0e07 Gmail\n      const snippet = document.createElement('div');\n      snippet.className = 'record-snippet';\n      const status = document.createElement('span');\n      status.className = 'status-badge ' + (record.confirmed ? 'confirmed' : 'pending');\n      status.textContent = record.confirmed ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27' : '\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a';\n      const subject = document.createElement('span');\n      subject.className = 'record-subject' + (record.subtitle ? '' : ' record-empty');\n      subject.textContent = record.subtitle || '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25';\n      snippet.append(status, subject);\n      if (record.confirmed) {\n        const cellValue = key => ((record.cells || []).find(cell => String(cell.label).trim().toLowerCase() === key) || {}).value;\n        const by = cellValue('confirmed_by'), at = cellValue('confirmed_at');\n        if (by || at) {\n          const audit = document.createElement('span');\n          audit.className = 'record-audit';\n          audit.textContent = ' - ' + [by ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e42\u0e14\u0e22 ' + by : '', at ? '\u0e40\u0e21\u0e37\u0e48\u0e2d ' + at : ''].filter(Boolean).join(' \u00b7 ');\n          snippet.appendChild(audit);\n        }\n      }\n      snippet.title = snippet.textContent;\n\n      const end = document.createElement('div');\n      end.className = 'record-end';\n      const date = document.createElement('span');\n      date.className = 'record-date';\n      date.textContent = record.appliedAt || '\u2014';\n      if (record.appliedAt) date.title = '\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e21\u0e37\u0e48\u0e2d ' + record.appliedAt;\n      else date.classList.add('record-empty');\n\n      \/\/ \u0e1b\u0e38\u0e48\u0e21\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e42\u0e1c\u0e25\u0e48\u0e41\u0e17\u0e19\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e15\u0e2d\u0e19\u0e0a\u0e35\u0e49\u0e41\u0e16\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e14\u0e49\u0e27\u0e22\u0e04\u0e35\u0e22\u0e4c\u0e1a\u0e2d\u0e23\u0e4c\u0e14 \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e01\u0e47\u0e1a\u0e16\u0e32\u0e27\u0e23\/\u0e25\u0e1a\u0e1a\u0e19\u0e41\u0e16\u0e27\u0e02\u0e2d\u0e07 Gmail\n      const actions = document.createElement('div');\n      actions.className = 'record-actions';\n      actions.append(iconButton('\u0e14\u0e39\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14', '\u0e14\u0e39\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e02\u0e2d\u0e07 ' + record.title,\n        ['M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z', 'M12 9a3 3 0 1 1 0 6 3 3 0 0 1 0-6Z'],\n        () => showDetails(record)));\n      if (!record.confirmed) {\n        actions.append(iconButton('\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25', '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07 ' + record.title,\n          ['m5 12.5 4.5 4.5L19 7'], () => confirmRecord(record), 'is-confirm'));\n      }\n      end.append(date, actions);\n\n      row.append(pick, name, snippet, end);\n      return row;\n    }\n\n    function iconButton(title, ariaLabel, paths, handler, extraClass) {\n      const element = document.createElement('button');\n      element.type = 'button';\n      element.className = 'mail-tool' + (extraClass ? ' ' + extraClass : '');\n      element.title = title;\n      element.setAttribute('aria-label', ariaLabel);\n      const svg = svgEl('svg', {class: 'ui-icon', viewBox: '0 0 24 24', 'aria-hidden': 'true'});\n      paths.forEach(d => svg.appendChild(svgEl('path', {d})));\n      element.appendChild(svg);\n      element.addEventListener('click', handler);\n      return element;\n    }\n\n    \/\/ \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e22\u0e32\u0e27\u0e01\u0e27\u0e48\u0e32\u0e19\u0e35\u0e49 (\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 \u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38) \u0e16\u0e39\u0e01\u0e1a\u0e35\u0e1a\u0e08\u0e19\u0e02\u0e36\u0e49\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e2d\u0e1a\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27\n    \/\/ \u0e08\u0e36\u0e07\u0e43\u0e2b\u0e49\u0e01\u0e34\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e15\u0e47\u0e21\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e41\u0e17\u0e19 \u0e15\u0e32\u0e23\u0e32\u0e07\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e2a\u0e39\u0e07\u0e1c\u0e34\u0e14\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e01\u0e31\u0e1a\u0e0a\u0e48\u0e2d\u0e07\u0e02\u0e49\u0e32\u0e07 \u0e46\n    const DETAIL_WIDE_LENGTH = 42;\n\n    function showDetails(record) {\n      state.selectedRecord = record;\n      $('#detailTitle').textContent = record.title;\n\n      const badge = $('#detailStatus');\n      badge.textContent = record.confirmed ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27' : '\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a';\n      badge.className = 'status-badge ' + (record.confirmed ? 'confirmed' : 'pending');\n\n      const grid = $('#detailGrid');\n      grid.replaceChildren(...record.cells.map(cell => {\n        const text = String(cell.value == null ? '' : cell.value);\n        const item = document.createElement('div');\n        item.className = 'detail-cell' +\n          (text.trim() ? '' : ' is-empty') +\n          (text.length > DETAIL_WIDE_LENGTH || text.indexOf('\\n') !== -1 ? ' is-wide' : '');\n        const label = document.createElement('small');\n        label.textContent = cell.label;\n        const value = document.createElement('div');\n        value.textContent = text.trim() || '\u2014';\n        item.append(label, value);\n        return item;\n      }));\n      $('#detailConfirmButton').classList.toggle('hidden', record.confirmed);\n      $('#detailDialog').showModal();\n      $('#detailDialog').querySelector('.modal-body').scrollTop = 0;\n    }\n\n    function confirmSelectedRecord() {\n      if (state.selectedRecord) confirmRecord(state.selectedRecord, true);\n    }\n\n    async function confirmRecord(record, closeDialog = false) {\n      if (!confirm(`\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07 \u201c${record.title}\u201d \u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?`)) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19...');\n      try {\n        const result = await server('confirmRecord', state.sessionToken, record.ref);\n        if (closeDialog && $('#detailDialog').open) $('#detailDialog').close();\n        toast(result.message, 'success');\n        \/\/ Only mark as confirmed after the server acknowledges the saved change.\n        record.confirmed = true;\n        if (state.fullData) refreshView();\n        else if (state.dashboard) renderDashboard(state.dashboard);\n        setLoading(false);\n        \/\/ \u0e14\u0e36\u0e07\u0e02\u0e2d\u0e07\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07 \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e08\u0e30\u0e15\u0e32\u0e21\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07\u0e43\u0e19\u0e23\u0e2d\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b\n        await loadDashboard({silent: true}).catch(() => {});\n      } catch (error) {\n        \/\/ record.ref \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 (\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e40\u0e01\u0e34\u0e19 6 \u0e0a\u0e21.) \u2014 \u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e44\u0e14\u0e49\u0e42\u0e17\u0e40\u0e04\u0e19\u0e0a\u0e38\u0e14\u0e43\u0e2b\u0e21\u0e48\n        \/\/ \u0e44\u0e21\u0e48\u0e22\u0e34\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e0b\u0e49\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e2d\u0e32\u0e08\u0e40\u0e01\u0e48\u0e32\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e40\u0e2d\u0e07\n        if (isRefExpired(error)) {\n          if (closeDialog && $('#detailDialog').open) $('#detailDialog').close();\n          await refreshScopeRefs().catch(() => {});\n          await loadDashboard();\n          toast('\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e41\u0e25\u0e49\u0e27 \u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07',\n            'info', 7000);\n          return;\n        }\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function changePage(delta) {\n      if (!state.dashboard) return;\n      const next = state.dashboard.page + delta;\n      if (next < 1 || next > state.dashboard.totalPages) return;\n      state.page = next;\n      refreshView();\n      scrollTo({top: 0, behavior: 'smooth'});\n    }\n\n    async function download(format) {\n      if (!state.scopeRef) return;\n      setLoading(true, format === 'csv' ? '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c CSV...' : '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c Excel...');\n      try {\n        let file;\n        try {\n          file = await server('downloadData', state.sessionToken, {scopeRef: state.scopeRef, format});\n        } catch (error) {\n          if (!isRefExpired(error) || !(await refreshScopeRefs())) throw error;\n          file = await server('downloadData', state.sessionToken, {scopeRef: state.scopeRef, format});\n        }\n        saveBase64File(file);\n        toast('\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27', 'success');\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function saveBase64File(file) {\n      const binary = atob(file.base64);\n      const bytes = new Uint8Array(binary.length);\n      for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n      const url = URL.createObjectURL(new Blob([bytes], {type: file.mimeType}));\n      const anchor = document.createElement('a');\n      anchor.href = url;\n      anchor.download = file.fileName;\n      document.body.appendChild(anchor);\n      anchor.click();\n      anchor.remove();\n      setTimeout(() => URL.revokeObjectURL(url), 1000);\n    }\n\n    async function onLogout() {\n      const token = state.sessionToken;\n      clearSession(false);\n      try { await server('logout', token); } catch (_) {}\n      toast('\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e49\u0e27', 'info');\n    }\n\n    function clearSession(showMessage = true) {\n      stopLiveUpdates();\n      resetStatsState();\n      setLoading(false);\n      localStorage.removeItem('studentVerificationSession');\n      try { localStorage.removeItem(SESSION_PROFILE_KEY); } catch (_) {}\n      state.provisional = false;\n      state.sessionToken = '';\n      state.session = null;\n      state.scopeRef = '';\n      state.scopes = [];\n      state.dashboard = null;\n      state.fullData = null;\n      state.activeModule = 'home';\n      state.status = 'all';\n      clearRecordSelection();\n      $('#homeApplicantTotal').textContent = '0';\n      $('#homeApplicantPending').textContent = '0';\n      $('#homePendingActionCount').textContent = '\u2014';\n      $('#homePendingScope').textContent = '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25';\n      $('#openPendingButton').disabled = true;\n      state.dashboardRequest++;\n      updateNotificationBadge(0);\n      $('#appView').classList.add('hidden');\n      $('#authView').classList.remove('hidden');\n      $('.auth-tabs').classList.remove('hidden');\n      $('#loginTab').click();\n      if (showMessage) toast('\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48', 'info');\n    }\n\n    function showAuthPanel(id) {\n      $$('.auth-content').forEach(panel => panel.classList.toggle('hidden', panel.id !== id));\n    }\n\n    function setLoading(show, text = '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14...') {\n      $('#loadingText').textContent = text;\n      $('#loadingOverlay').classList.toggle('hidden', !show);\n      if (!show) clearSlowLoadNotice();\n    }\n\n    \/* ---- \u0e41\u0e08\u0e49\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e2d\u0e19\u0e32\u0e19 ----\n       Apps Script \u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e15\u0e49\u0e2d\u0e07 cold start \u0e41\u0e25\u0e30 restoreSession \u0e22\u0e31\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e15\u0e48\u0e2d\n       \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e36\u0e07\u0e40\u0e2b\u0e47\u0e19 \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19...\" \u0e04\u0e49\u0e32\u0e07\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e32\u0e22\u0e2a\u0e34\u0e1a\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e31\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e49\u0e32\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\n       \u0e08\u0e36\u0e07\u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e22\u0e30 \u0e41\u0e25\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e19\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34\u0e43\u0e2b\u0e49\u0e1b\u0e38\u0e48\u0e21\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\n       \u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e34\u0e49\u0e07\u0e41\u0e25\u0e49\u0e27\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e2b\u0e21\u0e48 \u0e0b\u0e36\u0e48\u0e07\u0e44\u0e21\u0e48\u0e0a\u0e48\u0e27\u0e22\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21 cold start \u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e23\u0e2d\u0e1a *\/\n    let slowLoadTimers = [];\n    let onLoadingEscape = null;\n\n    \/\/ setLoading \u0e16\u0e39\u0e01\u0e40\u0e23\u0e35\u0e22\u0e01\u0e08\u0e32\u0e01\u0e17\u0e38\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e19\u0e41\u0e2d\u0e1b \u0e16\u0e49\u0e32\u0e2a\u0e2d\u0e07\u0e1b\u0e38\u0e48\u0e21\u0e19\u0e35\u0e49\u0e2b\u0e32\u0e22\u0e44\u0e1b (\u0e27\u0e32\u0e07 HTML \u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a) \u0e41\u0e25\u0e49\u0e27\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e42\u0e22\u0e19 error\n    \/\/ \u0e17\u0e38\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e08\u0e30\u0e1e\u0e31\u0e07\u0e15\u0e32\u0e21\u0e01\u0e31\u0e19\u0e2b\u0e21\u0e14 \u0e08\u0e36\u0e07\u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u2014 \u0e40\u0e2a\u0e35\u0e22\u0e41\u0e04\u0e48\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\n    function clearSlowLoadNotice() {\n      slowLoadTimers.forEach(clearTimeout);\n      slowLoadTimers = [];\n      const hint = $('#loadingHint');\n      if (hint) {\n        hint.textContent = '';\n        hint.classList.add('hidden');\n      }\n      $('#loadingEscape')?.classList.add('hidden');\n    }\n\n    function startSlowLoadNotice() {\n      clearSlowLoadNotice();\n      const hint = $('#loadingHint');\n      if (!hint) return;\n      slowLoadTimers.push(setTimeout(() => {\n        hint.textContent = '\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e08\u0e30\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34 \u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e33\u0e25\u0e31\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e2d\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48';\n        hint.classList.remove('hidden');\n      }, 8000));\n      slowLoadTimers.push(setTimeout(() => {\n        hint.textContent = '\u0e22\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e2d\u0e22\u0e39\u0e48 \u0e16\u0e49\u0e32\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e08\u0e33\u0e19\u0e27\u0e19\u0e21\u0e32\u0e01\u0e2d\u0e32\u0e08\u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e40\u0e01\u0e37\u0e2d\u0e1a\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e19\u0e32\u0e17\u0e35 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49';\n        hint.classList.remove('hidden');\n        $('#loadingEscape')?.classList.remove('hidden');\n      }, 20000));\n    }\n\n    function toast(message, type = 'info', duration = 4500) {\n      const item = document.createElement('div');\n      item.className = 'toast ' + type;\n      item.textContent = message;\n      $('#toastRegion').appendChild(item);\n      setTimeout(() => item.remove(), duration);\n    }\n\n    function handleError(error) {\n      const message = error && error.message ? error.message : String(error || '\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14');\n      if (\/\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19|\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48|\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\/.test(message)) {\n        clearSession(false);\n      }\n      toast(message.replace(\/^Exception:\\s*\/, ''), 'error', 6500);\n    }\n\n    function formatNumber(value) {\n      return new Intl.NumberFormat('th-TH').format(Number(value) || 0);\n    }\n\n    \/\/ \u0e40\u0e23\u0e35\u0e22\u0e01 backend \u0e1c\u0e48\u0e32\u0e19 form POST \u0e43\u0e19 iframe \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30 session token \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 URL\n    \/\/\n    \/\/ \u0e14\u0e48\u0e32\u0e19\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 (JSONP 'config') \u0e21\u0e35\u0e44\u0e27\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1a\u0e2d\u0e01\u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e21\u0e37\u0e48\u0e2d deployment \u0e40\u0e1b\u0e47\u0e19\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\n    \/\/ \u0e41\u0e15\u0e48\u0e1e\u0e2d\u0e21\u0e35\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e41\u0e1a\u0e1a postMessage \u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e01\u0e47\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e43\u0e19\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07\u0e27\u0e48\u0e32\n    \/\/ deployment \u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a transport \u0e19\u0e35\u0e49 \u2014 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2a\u0e35\u0e22\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e2d\u0e1a\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a\u0e16\u0e32\u0e21\u0e0b\u0e49\u0e33\n    \/\/ (\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e01\u0e31\u0e1a\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e01\u0e39\u0e49\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19: restoreSession \u0e02\u0e49\u0e32\u0e21\u0e14\u0e48\u0e32\u0e19\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e49\u0e32 getDashboard \u0e17\u0e35\u0e48\u0e15\u0e32\u0e21\u0e21\u0e32\n    \/\/  \u0e22\u0e31\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d config \u0e01\u0e48\u0e2d\u0e19 \u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e1a\u0e22\u0e49\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e2d\u0e44\u0e1b\u0e44\u0e27\u0e49\u0e15\u0e23\u0e07\u0e01\u0e25\u0e32\u0e07\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e31\u0e14\u0e2d\u0e2d\u0e01)\n    let postTransportProven = false;\n\n    function server(action, ...args) {\n      const params = buildParams(action, args);\n      if (postTransportProven) return callPostWithRetry(action, params, 0);\n      return ensurePostTransport().then(() => callPostWithRetry(action, params, 0));\n    }\n\n    \/**\n     * \u0e22\u0e34\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e04\u0e39\u0e48\u0e44\u0e1b\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 \u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e23\u0e2d\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e01\u0e48\u0e2d\u0e19\u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e22\u0e34\u0e07 (\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e14\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a)\n     * \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e21\u0e31\u0e01\u0e01\u0e14\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e13\u0e30 'config' \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\n     * \u0e0b\u0e36\u0e48\u0e07\u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e01\u0e34\u0e19\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e25\u0e32\u0e22\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u0e40\u0e14\u0e34\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e23\u0e2d\u0e1a\u0e19\u0e31\u0e49\u0e19\u0e08\u0e1a\u0e01\u0e48\u0e2d\u0e19 = \u0e23\u0e2d\u0e2a\u0e2d\u0e07\u0e23\u0e2d\u0e1a\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e19\n     * \u0e16\u0e49\u0e32\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19 \u0e22\u0e31\u0e07\u0e44\u0e14\u0e49\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1a\u0e2d\u0e01\u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e17\u0e31\u0e19\u0e17\u0e35\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e14\u0e34\u0e21 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e08\u0e19\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\n     *\/\n    function serverAlongsideCheck(action, ...args) {\n      const params = buildParams(action, args);\n      if (postTransportProven) return callPostWithRetry(action, params, 0);\n      return Promise.race([\n        callPostWithRetry(action, params, 0),\n        \/\/ \u0e15\u0e23\u0e27\u0e08\u0e1c\u0e48\u0e32\u0e19 = \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e30\u0e44\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19 \u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e1d\u0e48\u0e32\u0e22\u0e08\u0e1a\n        ensurePostTransport().then(() => new Promise(() => {}))\n      ]);\n    }\n\n    \/**\n     * restoreSession \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 Apps Script \u0e01\u0e48\u0e2d\u0e19 (\u0e14\u0e39\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e43\u0e19 init)\n     * \u0e16\u0e49\u0e32 deployment \u0e40\u0e1b\u0e47\u0e19\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e14\u0e49\u0e27\u0e22 postMessage \u0e04\u0e33\u0e02\u0e2d\u0e19\u0e35\u0e49\u0e08\u0e30\u0e40\u0e07\u0e35\u0e22\u0e1a\u0e08\u0e19\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\n     * \u0e08\u0e36\u0e07\u0e16\u0e2d\u0e22\u0e44\u0e1b\u0e16\u0e32\u0e21\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e31\u0e49\u0e19 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e44\u0e14\u0e49\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1a\u0e2d\u0e01\u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e08\u0e23\u0e34\u0e07\u0e41\u0e17\u0e19 \"\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\"\n     *\n     * \u0e44\u0e21\u0e48\u0e02\u0e2d withDashboard \u0e15\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e2d\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2a\u0e2d\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19:\n     * \u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e01\u0e14\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e23\u0e39\u0e49\u0e15\u0e31\u0e27\u0e27\u0e48\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e2d \u0e41\u0e15\u0e48\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e41\u0e04\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e02\u0e2d\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22\n     * \u0e01\u0e32\u0e23\u0e1e\u0e48\u0e27\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e41\u0e17\u0e47\u0e1a (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e04\u0e37\u0e2d\u0e41\u0e17\u0e47\u0e1a\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01) \u0e21\u0e32\u0e43\u0e19\u0e04\u0e33\u0e02\u0e2d\u0e40\u0e14\u0e35\u0e22\u0e27\n     * \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e21\u0e48\u0e32\u0e19 \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19...\" \u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e44\u0e27\u0e49\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e2d\u0e48\u0e32\u0e19\u0e0a\u0e35\u0e15\u0e40\u0e2a\u0e23\u0e47\u0e08\n     * \u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e2d\u0e1b\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e2a\u0e48\u0e27\u0e19\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e48\u0e2d\u0e22\u0e17\u0e22\u0e2d\u0e22\u0e21\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e43\u0e19\u0e15\u0e31\u0e27\u0e21\u0e31\u0e19\u0e40\u0e2d\u0e07\n     *\/\n    function restoreSessionDirect(sessionToken) {\n      const params = buildParams('restoreSession', [sessionToken]);\n      return callPostWithRetry('restoreSession', params, 0).catch(error => {\n        if (!\/\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32|\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\/.test((error && error.message) || '')) throw error;\n        return ensurePostTransport().then(() => { throw error; });\n      });\n    }\n\n    \/\/ \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e08\u0e2d\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27 (\u0e2d\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e02\u0e35\u0e22\u0e19\u0e41\u0e1a\u0e1a\u0e0b\u0e49\u0e33\u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19)\n    \/\/ login\/register\/resetPassword \u0e44\u0e21\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e01\u0e32\u0e23\u0e22\u0e34\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e32\u0e08\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1c\u0e25\u0e02\u0e49\u0e32\u0e07\u0e40\u0e04\u0e35\u0e22\u0e07\n    const RETRYABLE_ACTIONS = new Set(['getDashboard', 'getDashboardSignal', 'confirmRecord',\n      'confirmRecords', 'restoreSession']);\n\n    function callPostWithRetry(action, params, attempt) {\n      return callPost(action, params).catch(error => {\n        const message = (error && error.message) || '';\n        const transient = \/\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19|\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32|\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\/.test(message);\n        if (attempt < 2 && transient && RETRYABLE_ACTIONS.has(action)) {\n          return new Promise(resolve => setTimeout(resolve, 1500 * (attempt + 1)))\n            .then(() => callPostWithRetry(action, params, attempt + 1));\n        }\n        throw error;\n      });\n    }\n\n    \/\/ \u0e41\u0e1b\u0e25\u0e07 argument \u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e41\u0e1a\u0e1a query string\n    function buildParams(action, args) {\n      switch (action) {\n        case 'restoreSession':\n          return { sessionToken: args[0], withDashboard: args[1] && args[1].withDashboard ? 'true' : '' };\n        case 'logout':\n          return { sessionToken: args[0] };\n        case 'login':\n          return {\n            login: args[0].login, password: args[0].password,\n            withDashboard: args[0].withDashboard ? 'true' : ''\n          };\n        case 'register':\n          return {\n            username: args[0].username, email: args[0].email,\n            schoolName: args[0].schoolName, password: args[0].password\n          };\n        case 'requestPasswordReset':\n          return { loginId: args[0] };\n        case 'resetPassword':\n          return { token: args[0].token, newPassword: args[0].newPassword };\n        case 'changePassword':\n          return {\n            sessionToken: args[0],\n            currentPassword: args[1].currentPassword, newPassword: args[1].newPassword\n          };\n        case 'getStudentStatsTrend':\n          return { sessionToken: args[0] };\n        case 'getRegistrationStats':\n          return { sessionToken: args[0], year: args[1].year, refresh: args[1].refresh ? 'true' : '' };\n        case 'getStudentStats':\n          return { sessionToken: args[0], year: args[1].year, refresh: args[1].refresh };\n        case 'getDashboard':\n          return {\n            sessionToken: args[0], scopeRef: args[1].scopeRef,\n            page: args[1].page, pageSize: args[1].pageSize,\n            search: args[1].search, sort: args[1].sort, status: args[1].status,\n            all: args[1].all ? 'true' : ''\n          };\n        case 'getDashboardSignal':\n          \/\/ \u0e17\u0e38\u0e01\u0e04\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e15\u0e23\u0e34\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19 hidden input \u0e02\u0e2d\u0e07 form POST\n          return {\n            sessionToken: args[0], scopeRef: args[1].scopeRef,\n            since: args[1].since || '', view: JSON.stringify(args[1].view || null)\n          };\n        case 'confirmRecord':\n          return { sessionToken: args[0], recordRef: args[1] };\n        case 'confirmRecords':\n          \/\/ \u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19 hidden input \u0e02\u0e2d\u0e07 form POST \u0e44\u0e14\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2a\u0e15\u0e23\u0e34\u0e07 \u0e08\u0e36\u0e07\u0e2b\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e40\u0e1b\u0e47\u0e19 JSON\n          return { sessionToken: args[0], recordRefs: JSON.stringify(args[1] || []) };\n        case 'downloadData':\n          return { sessionToken: args[0], scopeRef: args[1].scopeRef, format: args[1].format };\n        default:\n          return {};\n      }\n    }\n\n    \/* ---- \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 ----\n       \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e2a\u0e33\u0e23\u0e2d\u0e07 \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07\u0e21\u0e32\u0e08\u0e32\u0e01\u0e41\u0e17\u0e47\u0e1a schools \u0e1c\u0e48\u0e32\u0e19 config\n       \u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e08\u0e36\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e43\u0e19\u0e0a\u0e35\u0e15\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e01\u0e49\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e41\u0e25\u0e49\u0e27\u0e27\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19 WordPress\n       \u0e16\u0e49\u0e32\u0e14\u0e36\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e1d\u0e31\u0e07\u0e21\u0e32\u0e01\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e22\u0e31\u0e07\u0e43\u0e0a\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21 *\/\n    function applySchoolOptions(schools) {\n      if (!Array.isArray(schools)) return;\n      const select = $('#schoolSelect');\n      if (!select) return;\n      const current = select.value;\n      const placeholder = document.createElement('option');\n      placeholder.value = '';\n      placeholder.textContent = '\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014';\n      select.replaceChildren(placeholder, ...schools.map(name => {\n        const option = document.createElement('option');\n        option.value = name;\n        option.textContent = name;\n        return option;\n      }));\n      \/\/ \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e2d\u0e32\u0e08\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e23\u0e31\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e2d\u0e22\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\n      select.value = schools.indexOf(current) === -1 ? '' : current;\n    }\n\n    function ensurePostTransport() {\n      if (!transportCheckPromise) {\n        transportCheckPromise = callPublicJsonp('config').then(config => {\n          if (!config || config.transport !== 'postMessage-v1') {\n            throw new Error('Apps Script \u0e22\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19 deployment \u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15 Code.gs \u0e41\u0e25\u0e49\u0e27 Deploy \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48');\n          }\n          if (config.backendVersion !== REQUIRED_BACKEND_VERSION ||\n              config.registrationApproval !== 'required') {\n            throw new Error(\n              'Apps Script \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e23\u0e38\u0e48\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e23\u0e2d\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e1a\u0e31\u0e0d\u0e0a\u0e35 ' +\n              '\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15 Code.gs \u0e41\u0e25\u0e49\u0e27 Deploy \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e31\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23'\n            );\n          }\n          applySchoolOptions(config.schools);\n          return true;\n        }).catch(error => {\n          transportCheckPromise = null;\n          throw error;\n        });\n      }\n      return transportCheckPromise;\n    }\n\n    \/\/ JSONP \u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2d\u0e48\u0e32\u0e19 public config \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d session token\n    function callPublicJsonp(action) {\n      return new Promise((resolve, reject) => {\n        if (!API_URL || API_URL.indexOf('http') !== 0) {\n          reject(new Error('\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 API_URL \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a (\u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e15\u0e49\u0e19\u0e44\u0e1f\u0e25\u0e4c)'));\n          return;\n        }\n        const callbackName = 'asis_public_' + Date.now() + '_' + Math.floor(Math.random() * 1e6);\n        const script = document.createElement('script');\n        let timer = null;\n        const cleanup = () => {\n          if (timer) clearTimeout(timer);\n          try { delete window[callbackName]; } catch (_) { window[callbackName] = undefined; }\n          script.remove();\n        };\n        window[callbackName] = response => {\n          cleanup();\n          if (response && response.success) resolve(response.data);\n          else reject(new Error((response && response.message) || '\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 Apps Script \u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08'));\n        };\n        script.onerror = () => {\n          cleanup();\n          reject(new Error('\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d Apps Script \u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a API_URL \u0e41\u0e25\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c Web App'));\n        };\n        timer = setTimeout(() => {\n          cleanup();\n          reject(new Error('Apps Script \u0e44\u0e21\u0e48\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a deployment'));\n        }, 15000);\n        script.src = API_URL + '?action=' + encodeURIComponent(action) + '&callback=' + encodeURIComponent(callbackName);\n        document.body.appendChild(script);\n      });\n    }\n\n    \/* ---- \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d ----\n       \u0e17\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e01\u0e04\u0e37\u0e2d fetch: Apps Script (mode=fetch) \u0e15\u0e2d\u0e1a JSON \u0e1c\u0e48\u0e32\u0e19 script.googleusercontent.com \u0e0b\u0e36\u0e48\u0e07\u0e40\u0e1b\u0e34\u0e14 CORS \u0e44\u0e27\u0e49\n       \u0e17\u0e32\u0e07\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e04\u0e37\u0e2d iframe + postMessage \u0e41\u0e1a\u0e1a\u0e40\u0e14\u0e34\u0e21 \u0e0b\u0e36\u0e48\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e23\u0e2d\u0e1a\u0e02\u0e2d\u0e07 HtmlService \u0e17\u0e38\u0e01\u0e04\u0e33\u0e02\u0e2d\n       \u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e23\u0e2d\u0e1a\u0e19\u0e31\u0e49\u0e19\u0e01\u0e34\u0e19\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e25\u0e32\u0e22\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\u0e15\u0e48\u0e2d\u0e04\u0e33\u0e02\u0e2d \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2b\u0e15\u0e38\u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e19\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\n       \u0e16\u0e49\u0e32 fetch \u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 (Code.gs \u0e22\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e38\u0e48\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01 mode=fetch \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e1a\u0e25\u0e47\u0e2d\u0e01) \u0e08\u0e30\u0e2a\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e32\u0e07\u0e40\u0e14\u0e34\u0e21\u0e40\u0e2d\u0e07 *\/\n    let fetchTransport = ''; \/\/ '' = \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49 \u00b7 'ok' = \u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e41\u0e25\u0e49\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07 \u00b7 'off' = \u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e43\u0e0a\u0e49 iframe\n    \/\/ \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e22\u0e34\u0e07\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e25\u0e02\u0e49\u0e32\u0e07\u0e40\u0e04\u0e35\u0e22\u0e07: \u0e16\u0e49\u0e32 fetch \u0e25\u0e49\u0e21\u0e01\u0e48\u0e2d\u0e19\u0e44\u0e14\u0e49\u0e04\u0e33\u0e15\u0e2d\u0e1a \u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e17\u0e32\u0e07 iframe \u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35\n    \/\/ \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2d\u0e37\u0e48\u0e19 (\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 \u0e2f\u0e25\u0e2f) \u0e2d\u0e32\u0e08\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c \u0e08\u0e36\u0e07\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e2d\u0e07\n    const FETCH_FALLBACK_SAFE = new Set(['login', 'logout', 'getDashboard', 'getDashboardSignal',\n      'restoreSession', 'getStudentStats', 'getStudentStatsTrend', 'getRegistrationStats', 'downloadData']);\n\n    function callPost(action, params) {\n      if (fetchTransport === 'off' || !window.fetch || !window.AbortController) {\n        return callPostFrame(action, params);\n      }\n      return callFetch(action, params).catch(error => {\n        if (!error || !error.fetchUnavailable) throw error;\n        fetchTransport = 'off';\n        console.info('[ASIS] \u0e43\u0e0a\u0e49 fetch \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e2a\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e1c\u0e48\u0e32\u0e19 iframe');\n        if (FETCH_FALLBACK_SAFE.has(action)) return callPostFrame(action, params);\n        throw new Error('\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07');\n      });\n    }\n\n    async function callFetch(action, params) {\n      const body = new URLSearchParams();\n      const fields = Object.assign({}, params || {}, {action, mode: 'fetch'});\n      Object.keys(fields).forEach(key => {\n        const value = fields[key];\n        if (value !== undefined && value !== null) body.append(key, String(value));\n      });\n      const startedAt = Date.now();\n      const logTiming = outcome => {\n        console.info('[ASIS] ' + action + ' ' + outcome + ' ' + ((Date.now() - startedAt) \/ 1000).toFixed(1) + ' \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 (fetch)');\n      };\n      \/\/ \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 = \u0e04\u0e27\u0e32\u0e21\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e2d\u0e32\u0e08\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e19\u0e35\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e16\u0e2d\u0e22\u0e44\u0e1b iframe\n      \/\/ \u0e40\u0e04\u0e22\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27 = \u0e19\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e19\u0e47\u0e15\u0e2a\u0e30\u0e14\u0e38\u0e14\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e34\u0e49\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e19\u0e35\u0e49\n      const unavailable = () => {\n        const error = new Error('\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07');\n        error.fetchUnavailable = fetchTransport !== 'ok';\n        return error;\n      };\n      const controller = new AbortController();\n      const timer = setTimeout(() => controller.abort(), requestTimeoutMs(action));\n      let envelope = null;\n      try {\n        \/\/ body \u0e41\u0e1a\u0e1a URLSearchParams \u0e40\u0e1b\u0e47\u0e19 simple request \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35 preflight \u0e17\u0e35\u0e48 Apps Script \u0e15\u0e2d\u0e1a\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\n        const response = await fetch(API_URL, {\n          method: 'POST', body, signal: controller.signal, credentials: 'omit', redirect: 'follow'\n        });\n        const text = await response.text();\n        try { envelope = JSON.parse(text); } catch (_) { envelope = null; }\n      } catch (error) {\n        clearTimeout(timer);\n        if (error && error.name === 'AbortError') {\n          logTiming('\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32');\n          throw new Error('\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07');\n        }\n        logTiming('\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49');\n        throw unavailable();\n      }\n      clearTimeout(timer);\n      if (!envelope || typeof envelope.success !== 'boolean') {\n        logTiming('\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 JSON');\n        throw unavailable();\n      }\n      fetchTransport = 'ok';\n      postTransportProven = true; \/\/ Code.gs \u0e17\u0e35\u0e48\u0e15\u0e2d\u0e1a mode=fetch \u0e44\u0e14\u0e49 \u0e04\u0e37\u0e2d\u0e23\u0e38\u0e48\u0e19\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\n      logTiming(envelope.success ? '\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08' : '\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08');\n      if (envelope.success) return envelope.data;\n      throw new Error(envelope.message || '\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14');\n    }\n\n    \/\/ \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2b\u0e19\u0e31\u0e01\u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e19\u0e32\u0e19\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34\n    \/\/ \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01 (\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35 cache) \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e17\u0e38\u0e01\u0e41\u0e17\u0e47\u0e1a\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e25\u0e2a\u0e2d\u0e1a \u0e16\u0e49\u0e32\u0e43\u0e2b\u0e49\u0e41\u0e04\u0e48 60 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\n    \/\/ \u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e08\u0e30\u0e02\u0e36\u0e49\u0e19 \"\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\" \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48 Apps Script \u0e22\u0e31\u0e07\u0e04\u0e33\u0e19\u0e27\u0e13\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e30\u0e08\u0e30\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e43\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\n    \/\/ \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2d\u0e32\u0e08\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e04\u0e34\u0e27\u0e25\u0e47\u0e2d\u0e01\u0e2a\u0e04\u0e23\u0e34\u0e1b\u0e15\u0e4c\u0e01\u0e48\u0e2d\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e2d\u0e48\u0e32\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e48\u0e27\u0e07\n    \/\/ restoreSession \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e25\u0e38\u0e48\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a login \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e23\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e04\u0e0a\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2d\u0e38\u0e48\u0e19 (\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19)\n    \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e25\u0e48\u0e2d\u0e48\u0e32\u0e19\u0e17\u0e38\u0e01\u0e41\u0e17\u0e47\u0e1a\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e33\u0e19\u0e31\u0e01 \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e34\u0e19\u0e40\u0e27\u0e25\u0e32\u0e1e\u0e2d \u0e46 \u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\n    function requestTimeoutMs(action) {\n      return ['login', 'restoreSession', 'register', 'resetPassword', 'changePassword',\n        'downloadData', 'confirmRecords',\n        'getStudentStats', 'getStudentStatsTrend', 'getRegistrationStats'].includes(action)\n        ? 180000 : 60000;\n    }\n\n    \/\/ \u0e17\u0e32\u0e07\u0e2a\u0e33\u0e23\u0e2d\u0e07: form POST + postMessage \u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e49\u0e32\u0e21\u0e42\u0e14\u0e40\u0e21\u0e19\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e1e\u0e36\u0e48\u0e07 CORS\n    function callPostFrame(action, params) {\n      return new Promise((resolve, reject) => {\n        if (!API_URL || API_URL.indexOf('http') !== 0) {\n          reject(new Error('\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 API_URL \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a (\u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e15\u0e49\u0e19\u0e44\u0e1f\u0e25\u0e4c)'));\n          return;\n        }\n        const requestId = window.crypto && crypto.randomUUID\n          ? 'req_' + crypto.randomUUID()\n          : 'req_' + Date.now() + '_' + Math.floor(Math.random() * 1e9);\n        const frameName = 'asis_frame_' + requestId;\n        const iframe = document.createElement('iframe');\n        const form = document.createElement('form');\n        \/\/ HtmlService \u0e22\u0e34\u0e07 postMessage \u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e08\u0e32\u0e01 sandbox iframe \u0e17\u0e35\u0e48\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19\n        \/\/   https:\/\/n-<hash>-....googleusercontent.com\n        \/\/ \u0e42\u0e14\u0e22 <hash> \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e41\u0e25\u0e30\u0e15\u0e32\u0e21 deployment\n        \/\/ \u0e40\u0e14\u0e34\u0e21\u0e2e\u0e32\u0e23\u0e4c\u0e14\u0e42\u0e04\u0e49\u0e14 hash \u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e44\u0e27\u0e49\u0e15\u0e31\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e04\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e08\u0e36\u0e07\u0e16\u0e39\u0e01\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e17\u0e34\u0e49\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e34\u0e49\u0e07\n        \/\/ \u0e41\u0e25\u0e49\u0e27\u0e17\u0e38\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e04\u0e49\u0e32\u0e07\u0e08\u0e19\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 60\/180 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\n        \/\/ \u0e08\u0e36\u0e07\u0e23\u0e31\u0e1a\u0e17\u0e38\u0e01\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e22\u0e48\u0e2d\u0e22\u0e02\u0e2d\u0e07 googleusercontent.com \u0e41\u0e17\u0e19 \u2014 \u0e22\u0e31\u0e07\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e22\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\n        \/\/ channel \u0e41\u0e25\u0e30 requestId \u0e17\u0e35\u0e48\u0e2a\u0e38\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e2d\u0e35\u0e01\u0e0a\u0e31\u0e49\u0e19\n        const apiOrigin = new URL(API_URL).origin;\n        const isAllowedMessageOrigin = origin =>\n          origin === apiOrigin ||\n          \/^https:\\\/\\\/[a-z0-9-]+\\.googleusercontent\\.com$\/i.test(String(origin || ''));\n        iframe.name = frameName;\n        iframe.hidden = true;\n        iframe.setAttribute('aria-hidden', 'true');\n        form.method = 'POST';\n        form.action = API_URL;\n        form.target = frameName;\n        form.hidden = true;\n\n        const fields = Object.assign({}, params || {}, {action, requestId});\n        Object.keys(fields).forEach(key => {\n          const value = fields[key];\n          if (value === undefined || value === null) return;\n          const input = document.createElement('input');\n          input.type = 'hidden';\n          input.name = key;\n          input.value = String(value);\n          form.appendChild(input);\n        });\n\n        \/\/ \u0e08\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e17\u0e38\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e44\u0e27\u0e49\u0e43\u0e19 console \u2014 \u0e40\u0e27\u0e25\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1a\u0e2d\u0e01\u0e27\u0e48\u0e32 \"\u0e0a\u0e49\u0e32\" \u0e08\u0e30\u0e44\u0e14\u0e49\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\n        \/\/ \u0e0a\u0e49\u0e32\u0e17\u0e35\u0e48\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e44\u0e2b\u0e19 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e14\u0e32\u0e08\u0e32\u0e01\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e49\u0e2a\u0e36\u0e01 (\u0e40\u0e1b\u0e34\u0e14 DevTools > Console \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39)\n        const startedAt = Date.now();\n        const logTiming = outcome => {\n          const seconds = ((Date.now() - startedAt) \/ 1000).toFixed(1);\n          console.info('[ASIS] ' + action + ' ' + outcome + ' ' + seconds + ' \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35');\n        };\n\n        let timer = null;\n        const cleanup = () => {\n          if (timer) clearTimeout(timer);\n          window.removeEventListener('message', onMessage);\n          form.remove();\n          iframe.remove();\n        };\n        const onMessage = event => {\n          \/\/ Apps Script HtmlService \u0e2a\u0e48\u0e07 postMessage \u0e08\u0e32\u0e01 sandbox iframe \u0e0a\u0e31\u0e49\u0e19\u0e43\u0e19\n          \/\/ \u0e08\u0e36\u0e07\u0e15\u0e23\u0e27\u0e08 origin \u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 + channel + requestId \u0e41\u0e17\u0e19 iframe \u0e0a\u0e31\u0e49\u0e19\u0e19\u0e2d\u0e01\n          if (!isAllowedMessageOrigin(event.origin)) return;\n          const envelope = event.data;\n          if (!envelope || envelope.channel !== 'asis-api-v1' ||\n              envelope.requestId !== requestId) return;\n          cleanup();\n          \/\/ \u0e0b\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e41\u0e25\u0e30 requestId \u0e15\u0e23\u0e07\u0e01\u0e31\u0e19 = deployment \u0e19\u0e35\u0e49\u0e1e\u0e39\u0e14 postMessage \u0e44\u0e14\u0e49\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e41\u0e25\u0e49\u0e27\n          \/\/ (\u0e08\u0e23\u0e34\u0e07\u0e41\u0e21\u0e49\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e04\u0e37\u0e2d\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c)\n          postTransportProven = true;\n          const response = envelope.response;\n          logTiming(response && response.success ? '\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08' : '\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08');\n          if (response && response.success) resolve(response.data);\n          else reject(new Error((response && response.message) || '\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14'));\n        };\n        window.addEventListener('message', onMessage);\n        iframe.addEventListener('error', () => {\n          cleanup();\n          logTiming('\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49');\n          reject(new Error('\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07'));\n        }, {once: true});\n        const timeoutMs = requestTimeoutMs(action);\n        timer = setTimeout(() => {\n          cleanup();\n          logTiming('\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32');\n          reject(new Error('\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07'));\n        }, timeoutMs);\n        document.body.append(iframe, form);\n        form.submit();\n      });\n    }\n\n  })();\n<\/script>\n\t\t\t\t<\/div>\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>\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14&#8230; \u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48 \u0e2d Abhidhamma Student Information System &#8211; ASIS \u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25 \u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 \u0e41\u0e2a\u0e14\u0e07 \u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19? \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34 \u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 \u0e2d\u0e35\u0e40\u0e21\u0e25 \u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3723","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3723"}],"version-history":[{"count":327,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3723\/revisions"}],"predecessor-version":[{"id":4248,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3723\/revisions\/4248"}],"wp:attachment":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}