{"id":3755,"date":"2026-10-08T03:55:49","date_gmt":"2026-10-08T03:55:49","guid":{"rendered":"https:\/\/www.somseaw.ac.th\/?page_id=3755"},"modified":"2026-10-08T03:56:24","modified_gmt":"2026-10-08T03:56:24","slug":"typing-testing","status":"publish","type":"page","link":"https:\/\/www.somseaw.ac.th\/?page_id=3755","title":{"rendered":"typing testing"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3755\" class=\"elementor elementor-3755\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-af723c7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"af723c7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-65364ed\" data-id=\"65364ed\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f652dfd elementor-widget elementor-widget-html\" data-id=\"f652dfd\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!doctype html>\n<html lang=\"th\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Thai Typing AI Interactive v7 \u2014 Orange Theme \u2014 PA Dashboard<\/title>\n<style>\n:root{--primary:#ea580c;--primary2:#f97316;--sky:#fff7ed;--line:#fed7aa;--text:#431407;--muted:#66788a;--green:#16a34a;--red:#dc2626;--amber:#d97706;--bg:#fffaf5;--card:#fff;--shadow:0 8px 28px rgba(249,115,22,.10)}*{box-sizing:border-box}body{margin:0;font-family:Tahoma,\"Noto Sans Thai\",sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}.top{background:linear-gradient(110deg,#9a3412,#f97316);color:#fff;padding:14px 20px;display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap;position:sticky;top:0;z-index:20}.brand b{font-size:20px}.brand small{display:block;opacity:.86;margin-top:2px}.nav{display:flex;gap:7px;flex-wrap:wrap}.nav button{border:0;border-radius:10px;padding:9px 12px;font-weight:800;cursor:pointer;background:#ffffff1f;color:#fff}.nav button.active,.nav button:hover{background:#fff;color:#ea580c}.wrap{max-width:1500px;margin:auto;padding:18px}.page{display:none}.page.active{display:block}.grid{display:grid;gap:14px}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:1.25fr .75fr}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}.toolbar{display:flex;gap:9px;flex-wrap:wrap;align-items:end}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;color:var(--muted);font-weight:800}.field select,.field input{border:1px solid var(--line);border-radius:9px;padding:9px;background:#fff;color:var(--text)}.btn{border:0;border-radius:9px;padding:9px 13px;font-weight:800;cursor:pointer}.primary{background:var(--primary2);color:#fff}.light{background:#fff7ed;color:var(--primary);border:1px solid var(--line)}.danger{background:#fee2e2;color:#991b1b}.stat small{color:var(--muted)}.stat b{font-size:27px;color:var(--primary)}.stat .sub{font-size:12px;color:var(--muted);margin-top:4px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:9px;border-bottom:1px solid #ffedd5;text-align:left}th{background:#fff7ed;color:#c2410c;position:sticky;top:73px;z-index:2}.scroll{overflow:auto;max-height:570px}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.ok{background:#dcfce7;color:#166534}.warn{background:#fef3c7;color:#92400e}.bad{background:#fee2e2;color:#991b1b}.title{margin:0 0 4px}.muted{color:var(--muted);font-size:13px}.hero{background:linear-gradient(135deg,#fff7ed,#fff);border:1px solid var(--line);border-radius:18px;padding:22px;margin-bottom:14px}.hero h1{margin:0 0 7px;color:#c2410c}.hero p{margin:0;color:#7c6f64}.section-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.section-title h2,.section-title h3{margin:0}.metric-row{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.metric{background:#fffaf5;border:1px solid var(--line);border-radius:12px;padding:11px}.metric small{display:block;color:var(--muted)}.metric b{font-size:21px;color:var(--primary)}.progress{height:10px;background:#ffedd5;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,#fb923c,#16a34a);border-radius:99px}.profile-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;flex-wrap:wrap}.profile-name{font-size:25px;font-weight:900;color:#c2410c}.pill{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:#fff7ed;color:#ea580c;font-size:12px;font-weight:800}.chartbox{height:310px;position:relative}.chartbox svg{width:100%;height:100%;overflow:visible}.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:12px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.pa-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pa-item{border:1px solid var(--line);border-radius:14px;padding:15px;background:#fbfdff}.pa-item .big{font-size:25px;font-weight:900}.pa-item.pass{border-color:#9fe0b1;background:#f4fff6}.pa-item.fail{border-color:#f5c2c2;background:#fff8f8}.summarybox{border-radius:14px;padding:15px;background:linear-gradient(135deg,#ea580c,#f97316);color:#fff}.summarybox b{font-size:29px}.practice{display:grid;grid-template-columns:1.65fr .8fr;gap:14px}.target{font-size:clamp(28px,4vw,54px);font-weight:900;text-align:center;line-height:1.55;min-height:120px;padding:20px;background:#fffaf5;border:2px dashed #8ec5ef;border-radius:14px;white-space:pre-wrap}.target .done{color:var(--green)}.target .current{background:#dbeafe;border-radius:6px}.keyboard{display:flex;flex-direction:column;gap:6px;margin-top:12px}.kr{display:flex;justify-content:center;gap:5px}.key{min-width:38px;height:43px;border:1px solid var(--line);border-radius:7px;background:#fffaf5;display:grid;place-items:center;font-weight:800}.key.space{min-width:45%}.key.correct{background:#bbf7d0;border-color:#16a34a}.key.wrong{background:#fecaca;border-color:#dc2626}.msg{padding:10px;border-radius:10px;background:#fff7ed;margin-top:10px}.footer{font-size:12px;color:var(--muted);margin-top:14px}.dbstate{font-size:12px;padding:6px 9px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:800}.modal{position:fixed;inset:0;background:#0008;display:none;align-items:center;justify-content:center;padding:20px;z-index:50}.modal.show{display:flex}.modalbox{background:#fff;padding:25px;border-radius:18px;max-width:520px;width:100%;text-align:center}.big{font-size:48px;font-weight:900;color:#f97316}.toast{position:fixed;right:18px;bottom:18px;background:#431407;color:#fff;padding:12px 16px;border-radius:10px;display:none;z-index:60}.toast.show{display:block}.small{font-size:12px}.nowrap{white-space:nowrap}@media(max-width:1000px){.g4,.g3,.g2,.practice,.pa-grid{grid-template-columns:1fr}.metric-row{grid-template-columns:repeat(2,1fr)}}\n.theme-orange{color:#c2410c}.orange-accent{background:#fff7ed;border-color:#fed7aa}\n<\/style><\/head><body>\n<header class=\"top\"><div class=\"brand\"><b>\u2328 Thai Typing AI Interactive v7<\/b><small>Dashboard \u0e04\u0e23\u0e39 \u00b7 \u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u00b7 \u0e01\u0e23\u0e32\u0e1f\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e01\u0e32\u0e23 \u00b7 \u0e2a\u0e23\u0e38\u0e1b\u0e40\u0e01\u0e13\u0e11\u0e4c PA<\/small><\/div><div class=\"nav\"><button class=\"active\" data-page=\"dash\">Dashboard \u0e04\u0e23\u0e39<\/button><button data-page=\"profile\">\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/button><button data-page=\"pa\">\u0e2a\u0e23\u0e38\u0e1b\u0e1c\u0e25 PA<\/button><button data-page=\"practice\">\u0e2b\u0e49\u0e2d\u0e07\u0e1d\u0e36\u0e01\u0e1e\u0e34\u0e21\u0e1e\u0e4c<\/button><button data-page=\"db\">\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/button><span class=\"dbstate\" id=\"dbstate\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u2026<\/span><\/div><\/header>\n<main class=\"wrap\">\n<section id=\"dash\" class=\"page active\">\n<div class=\"hero\"><h1>Dashboard \u0e04\u0e23\u0e39 \u2014 Thai Typing AI Interactive<\/h1><p>\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e1c\u0e25\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e23\u0e32\u0e22\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e41\u0e25\u0e30\u0e23\u0e32\u0e22\u0e2b\u0e49\u0e2d\u0e07\u0e08\u0e32\u0e01 Pre-test \u2192 \u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01 \u2192 Post-test \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e2a\u0e23\u0e38\u0e1b\u0e04\u0e27\u0e32\u0e21\u0e01\u0e49\u0e32\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e25\u0e30\u0e40\u0e01\u0e13\u0e11\u0e4c PA<\/p><\/div>\n<div class=\"card\"><div class=\"toolbar\"><div class=\"field\"><label>\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19<\/label><select id=\"dclass\"><option value=\"all\">\u0e17\u0e38\u0e01\u0e2b\u0e49\u0e2d\u0e07<\/option><option value=\"3\/1\">\u0e1b.3\/1<\/option><option value=\"3\/2\">\u0e1b.3\/2<\/option><\/select><\/div><div class=\"field\"><label>\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/label><input id=\"dno\" type=\"number\" min=\"1\" max=\"40\" placeholder=\"1\u201340\"><\/div><div class=\"field\"><label>\u0e2a\u0e16\u0e32\u0e19\u0e30 PA<\/label><select id=\"dstatus\"><option value=\"all\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/option><option value=\"both\">\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e17\u0e31\u0e49\u0e07 2<\/option><option value=\"acc\">\u0e1c\u0e48\u0e32\u0e19 Accuracy<\/option><option value=\"wpm\">WPM \u0e40\u0e1e\u0e34\u0e48\u0e21<\/option><option value=\"need\">\u0e15\u0e49\u0e2d\u0e07\u0e1e\u0e31\u0e12\u0e19\u0e32<\/option><\/select><\/div><button class=\"btn primary\" id=\"refresh\">\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a<\/button><button class=\"btn light\" id=\"export\">\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01 JSON<\/button><button class=\"btn light\" id=\"print\">\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19<\/button><\/div><\/div>\n<div class=\"grid g4\" style=\"margin-top:14px\"><div class=\"card stat\"><small>\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/small><br><b id=\"s1\">0<\/b><div class=\"sub\">\u0e01\u0e25\u0e38\u0e48\u0e21\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22<\/div><\/div><div class=\"card stat\"><small>Accuracy \u0e1c\u0e48\u0e32\u0e19 \u226570%<\/small><br><b id=\"s2\">0%<\/b><div class=\"sub\" id=\"s2sub\">0 \u0e04\u0e19<\/div><\/div><div class=\"card stat\"><small>WPM \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01 Pre-test<\/small><br><b id=\"s3\">0%<\/b><div class=\"sub\" id=\"s3sub\">0 \u0e04\u0e19<\/div><\/div><div class=\"card stat\"><small>\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e17\u0e31\u0e49\u0e07 2 \u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14<\/small><br><b id=\"s4\">0%<\/b><div class=\"sub\" id=\"s4sub\">0 \u0e04\u0e19<\/div><\/div><\/div>\n<div class=\"grid g2\" style=\"margin-top:14px\"><div class=\"card\"><div class=\"section-title\"><h3>\u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21 Accuracy \u0e41\u0e25\u0e30 WPM<\/h3><span class=\"pill\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e21\u0e21\u0e38\u0e15\u0e34<\/span><\/div><div class=\"metric-row\"><div class=\"metric\"><small>Pre Accuracy<\/small><b id=\"m1\">\u2014<\/b><\/div><div class=\"metric\"><small>Post Accuracy<\/small><b id=\"m2\">\u2014<\/b><\/div><div class=\"metric\"><small>Accuracy +<\/small><b id=\"m3\">\u2014<\/b><\/div><div class=\"metric\"><small>Pre WPM<\/small><b id=\"m4\">\u2014<\/b><\/div><div class=\"metric\"><small>Post WPM<\/small><b id=\"m5\">\u2014<\/b><\/div><\/div><div class=\"chartbox\" id=\"dashChart\"><\/div><\/div><div class=\"card\"><div class=\"section-title\"><h3>\u0e2a\u0e23\u0e38\u0e1b\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1c\u0e25 \/100<\/h3><\/div><div id=\"levelSummary\"><\/div><\/div><\/div>\n<div class=\"card\" style=\"margin-top:14px\"><div class=\"section-title\"><h3>\u0e1c\u0e25\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e23\u0e32\u0e22\u0e1a\u0e38\u0e04\u0e04\u0e25<\/h3><span class=\"muted\">\u0e04\u0e25\u0e34\u0e01 \u201c\u0e14\u0e39\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u201d \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/span><\/div><div class=\"scroll\"><table><thead><tr><th>\u0e2b\u0e49\u0e2d\u0e07<\/th><th>\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/th><th>\u0e0a\u0e37\u0e48\u0e2d-\u0e2a\u0e01\u0e38\u0e25<\/th><th>Pre Acc<\/th><th>Post Acc<\/th><th>Acc +<\/th><th>Pre WPM<\/th><th>Post WPM<\/th><th>WPM +<\/th><th>g%<\/th><th>PA<\/th><th><\/th><\/tr><\/thead><tbody id=\"tbody\"><\/tbody><\/table><\/div><\/div>\n<\/section>\n\n<section id=\"profile\" class=\"page\">\n<div class=\"card\"><div class=\"toolbar\"><div class=\"field\" style=\"min-width:180px\"><label>\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19<\/label><select id=\"pclass\"><option value=\"3\/1\">\u0e1b.3\/1<\/option><option value=\"3\/2\">\u0e1b.3\/2<\/option><\/select><\/div><div class=\"field\" style=\"min-width:260px\"><label>\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/label><select id=\"pstudent\"><\/select><\/div><\/div><\/div>\n<div id=\"profileContent\" style=\"margin-top:14px\"><\/div>\n<\/section>\n\n<section id=\"pa\" class=\"page\">\n<div class=\"hero\"><h1>\u0e2a\u0e23\u0e38\u0e1b\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 PA<\/h1><p>\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e2b\u0e25\u0e31\u0e01: \u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30 80 \u0e21\u0e35 Accuracy \u226570% \u0e41\u0e25\u0e30\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30 80 \u0e21\u0e35 WPM \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19\u0e08\u0e32\u0e01 Pre-test<\/p><\/div>\n<div class=\"pa-grid\"><div class=\"pa-item\" id=\"paAcc\"><h3>\u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48 1 \u2014 Accuracy<\/h3><div class=\"big\" id=\"paAccVal\">\u2014<\/div><p id=\"paAccText\">\u2014<\/p><div class=\"progress\"><span id=\"paAccBar\" style=\"width:0%\"><\/span><\/div><p><b>\u0e40\u0e01\u0e13\u0e11\u0e4c: \u226580%<\/b><\/p><\/div><div class=\"pa-item\" id=\"paWpm\"><h3>\u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48 2 \u2014 WPM<\/h3><div class=\"big\" id=\"paWpmVal\">\u2014<\/div><p id=\"paWpmText\">\u2014<\/p><div class=\"progress\"><span id=\"paWpmBar\" style=\"width:0%\"><\/span><\/div><p><b>\u0e40\u0e01\u0e13\u0e11\u0e4c: \u226580%<\/b><\/p><\/div><\/div>\n<div class=\"grid g3\" style=\"margin-top:14px\"><div class=\"summarybox\"><small>Accuracy \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/small><br><b id=\"paAvgAcc\">\u2014<\/b><p>Pre \u2192 Post<\/p><\/div><div class=\"summarybox\"><small>WPM \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/small><br><b id=\"paAvgWpm\">\u2014<\/b><p>Pre \u2192 Post<\/p><\/div><div class=\"summarybox\"><small>\u0e04\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e01\u0e49\u0e32\u0e27\u0e2b\u0e19\u0e49\u0e32 Accuracy<\/small><br><b id=\"paAvgG\">\u2014<\/b><p>g%<\/p><\/div><\/div>\n<div class=\"card\" style=\"margin-top:14px\"><div class=\"section-title\"><h3>\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e15\u0e32\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e30 PA<\/h3><select id=\"paFilter\"><option value=\"all\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/option><option value=\"both\">\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e17\u0e31\u0e49\u0e07 2<\/option><option value=\"accOnly\">\u0e1c\u0e48\u0e32\u0e19 Accuracy \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19<\/option><option value=\"wpmOnly\">\u0e1c\u0e48\u0e32\u0e19 WPM \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19<\/option><option value=\"none\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e31\u0e49\u0e07 2<\/option><\/select><\/div><div class=\"scroll\"><table><thead><tr><th>\u0e2b\u0e49\u0e2d\u0e07<\/th><th>\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/th><th>\u0e0a\u0e37\u0e48\u0e2d<\/th><th>Accuracy<\/th><th>WPM<\/th><th>g%<\/th><th>\u0e1c\u0e25<\/th><\/tr><\/thead><tbody id=\"paTbody\"><\/tbody><\/table><\/div><\/div>\n<\/section>\n\n<section id=\"practice\" class=\"page\"><div class=\"practice\"><div><div class=\"card\"><div class=\"toolbar\"><div class=\"field\"><label>\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19<\/label><select id=\"rclass\"><option value=\"\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19<\/option><option value=\"3\/1\">\u0e1b.3\/1<\/option><option value=\"3\/2\">\u0e1b.3\/2<\/option><\/select><\/div><div class=\"field\"><label>\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/label><select id=\"rno\"><option value=\"\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/option><\/select><\/div><div class=\"field\"><label>Level<\/label><select id=\"rlevel\"><option value=\"1\">Level 1<\/option><option value=\"2\">Level 2<\/option><option value=\"3\">Level 3<\/option><option value=\"4\">Level 4<\/option><option value=\"5\">Level 5<\/option><\/select><\/div><button class=\"btn primary\" id=\"start\">\u0e40\u0e23\u0e34\u0e48\u0e21\u0e1d\u0e36\u0e01<\/button><\/div><\/div><div class=\"card\" style=\"margin-top:14px\"><h3 id=\"rtitle\">Level 1 \u00b7 \u0e41\u0e16\u0e27\u0e40\u0e2b\u0e22\u0e49\u0e32<\/h3><div class=\"target\" id=\"target\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19\u0e41\u0e25\u0e30\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e23\u0e34\u0e48\u0e21<\/div><div class=\"metric-row\"><div class=\"metric\"><small>\u0e40\u0e27\u0e25\u0e32<\/small><b id=\"rtime\">0.0<\/b><\/div><div class=\"metric\"><small>\u0e16\u0e39\u0e01<\/small><b id=\"rcorrect\">0<\/b><\/div><div class=\"metric\"><small>\u0e1c\u0e34\u0e14<\/small><b id=\"rwrong\">0<\/b><\/div><div class=\"metric\"><small>Accuracy<\/small><b id=\"racc\">100%<\/b><\/div><div class=\"metric\"><small>WPM<\/small><b id=\"rwpm\">0.0<\/b><\/div><\/div><div class=\"msg\" id=\"rmsg\">\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e1c\u0e25\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e08\u0e1a\u0e41\u0e1a\u0e1a\u0e1d\u0e36\u0e01<\/div><\/div><div class=\"card\" style=\"margin-top:14px\"><h3>\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e08\u0e33\u0e25\u0e2d\u0e07<\/h3><div id=\"keyboard\" class=\"keyboard\"><\/div><\/div><\/div><aside><div class=\"card\"><h3>\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/h3><div id=\"studentInfo\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01<\/div><\/div><div class=\"card\" style=\"margin-top:14px\"><h3>\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33<\/h3><p class=\"small\">\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e2d\u0e07\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u0e41\u0e25\u0e30\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27<\/p><\/div><\/aside><\/div><\/section>\n\n<section id=\"db\" class=\"page\"><div class=\"grid g2\"><div class=\"card\"><div class=\"section-title\"><h3>\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 IndexedDB<\/h3><span class=\"badge ok\" id=\"dbbadge\">\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/span><\/div><table><tr><th>Store<\/th><th>\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/th><\/tr><tr><td>students<\/td><td>\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 63 \u0e04\u0e19<\/td><\/tr><tr><td>assessments<\/td><td>Pre\/Post \u0e41\u0e25\u0e30\u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14 PA<\/td><\/tr><tr><td>sessions<\/td><td>\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07<\/td><\/tr><tr><td>settings<\/td><td>\u0e04\u0e48\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e30\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19<\/td><\/tr><\/table><p class=\"footer\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e16\u0e39\u0e01\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e40\u0e1b\u0e47\u0e19 JSON \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e49\u0e32\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e14\u0e49<\/p><\/div><div class=\"card\"><h3>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/h3><div id=\"checks\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u2026<\/div><div class=\"toolbar\" style=\"margin-top:12px\"><button class=\"btn light\" id=\"seedBtn\">\u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e31\u0e49\u0e07\u0e15\u0e49\u0e19 63 \u0e04\u0e19<\/button><button class=\"btn danger\" id=\"clearBtn\">\u0e25\u0e49\u0e32\u0e07\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/button><\/div><\/div><\/div><div class=\"card\" style=\"margin-top:14px\"><h3>Session \u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14<\/h3><div class=\"scroll\"><table><thead><tr><th>\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32<\/th><th>\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/th><th>Level<\/th><th>Accuracy<\/th><th>WPM<\/th><th>\u0e1c\u0e34\u0e14<\/th><\/tr><\/thead><tbody id=\"sessions\"><\/tbody><\/table><\/div><\/div><\/section>\n<div class=\"footer\">v7 \u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e49\u0e19\u0e41\u0e1a\u0e1a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23 Thai Typing AI Interactive \u00b7 \u0e04\u0e30\u0e41\u0e19\u0e19\u0e43\u0e19\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e21\u0e21\u0e38\u0e15\u0e34\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e18\u0e34\u0e15\u0e23\u0e30\u0e1a\u0e1a<\/div><\/main>\n<div id=\"modal\" class=\"modal\"><div class=\"modalbox\"><h2>\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e1c\u0e25\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/h2><div class=\"big\" id=\"macc\">0%<\/div><p id=\"mtext\"><\/p><button class=\"btn primary\" id=\"close\">\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e1d\u0e36\u0e01\u0e15\u0e48\u0e2d<\/button><\/div><\/div><div id=\"toast\" class=\"toast\"><\/div>\n<script>\nconst STUDENTS=[{\"classroom\":\"3\/1\",\"id\":\"3\/1-1\",\"number\":1,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 1\",\"preAcc\":58.1,\"preWpm\":8.2,\"preTime\":146.3,\"preErr\":42,\"postAcc\":79.9,\"postWpm\":12.6,\"postTime\":95.2,\"postErr\":20,\"accInc\":21.8,\"wpmInc\":4.4,\"wpmPct\":53.6585365853659,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":52.0286396181384},{\"classroom\":\"3\/1\",\"id\":\"3\/1-2\",\"number\":2,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 2\",\"preAcc\":65.3,\"preWpm\":8.6,\"preTime\":139.5,\"preErr\":35,\"postAcc\":78.0,\"postWpm\":12.9,\"postTime\":93.0,\"postErr\":22,\"accInc\":12.7,\"wpmInc\":4.3,\"wpmPct\":50.0,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":36.5994236311239},{\"classroom\":\"3\/1\",\"id\":\"3\/1-3\",\"number\":3,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 3\",\"preAcc\":60.5,\"preWpm\":8.2,\"preTime\":146.3,\"preErr\":40,\"postAcc\":81.0,\"postWpm\":12.8,\"postTime\":93.8,\"postErr\":19,\"accInc\":20.5,\"wpmInc\":4.6,\"wpmPct\":56.0975609756098,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":88.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":51.8987341772152},{\"classroom\":\"3\/1\",\"id\":\"3\/1-4\",\"number\":4,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 4\",\"preAcc\":51.5,\"preWpm\":6.9,\"preTime\":173.9,\"preErr\":48,\"postAcc\":72.1,\"postWpm\":9.0,\"postTime\":133.3,\"postErr\":34,\"accInc\":20.6,\"wpmInc\":2.1,\"wpmPct\":30.4347826086956,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":24.0,\"consistency\":8,\"totalScore\":72.0,\"level\":\"\u0e14\u0e35\",\"g\":42.4742268041237},{\"classroom\":\"3\/1\",\"id\":\"3\/1-5\",\"number\":5,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 5\",\"preAcc\":67.2,\"preWpm\":6.7,\"preTime\":179.1,\"preErr\":33,\"postAcc\":91.7,\"postWpm\":12.9,\"postTime\":93.0,\"postErr\":8,\"accInc\":24.5,\"wpmInc\":6.2,\"wpmPct\":92.5373134328358,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":60.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":99.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":74.6951219512195},{\"classroom\":\"3\/1\",\"id\":\"3\/1-6\",\"number\":6,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 6\",\"preAcc\":53.4,\"preWpm\":5.4,\"preTime\":222.2,\"preErr\":47,\"postAcc\":70.7,\"postWpm\":10.9,\"postTime\":110.1,\"postErr\":29,\"accInc\":17.3,\"wpmInc\":5.5,\"wpmPct\":101.851851851852,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":79.0,\"level\":\"\u0e14\u0e35\",\"g\":37.1244635193133},{\"classroom\":\"3\/1\",\"id\":\"3\/1-7\",\"number\":7,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 7\",\"preAcc\":64.9,\"preWpm\":4.6,\"preTime\":260.9,\"preErr\":35,\"postAcc\":76.7,\"postWpm\":11.0,\"postTime\":109.1,\"postErr\":23,\"accInc\":11.8,\"wpmInc\":6.4,\"wpmPct\":139.130434782609,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":33.6182336182336},{\"classroom\":\"3\/1\",\"id\":\"3\/1-8\",\"number\":8,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 8\",\"preAcc\":49.0,\"preWpm\":5.0,\"preTime\":240.0,\"preErr\":51,\"postAcc\":72.0,\"postWpm\":11.2,\"postTime\":107.1,\"postErr\":28,\"accInc\":23.0,\"wpmInc\":6.2,\"wpmPct\":124.0,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":78.0,\"level\":\"\u0e14\u0e35\",\"g\":45.0980392156863},{\"classroom\":\"3\/1\",\"id\":\"3\/1-9\",\"number\":9,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 9\",\"preAcc\":57.6,\"preWpm\":4.3,\"preTime\":279.1,\"preErr\":42,\"postAcc\":77.9,\"postWpm\":9.0,\"postTime\":133.3,\"postErr\":22,\"accInc\":20.3,\"wpmInc\":4.7,\"wpmPct\":109.302325581395,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":47.8773584905661},{\"classroom\":\"3\/1\",\"id\":\"3\/1-10\",\"number\":10,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 10\",\"preAcc\":48.6,\"preWpm\":8.6,\"preTime\":139.5,\"preErr\":51,\"postAcc\":72.2,\"postWpm\":14.0,\"postTime\":85.7,\"postErr\":31,\"accInc\":23.6,\"wpmInc\":5.4,\"wpmPct\":62.7906976744186,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":78.0,\"level\":\"\u0e14\u0e35\",\"g\":45.9143968871595},{\"classroom\":\"3\/1\",\"id\":\"3\/1-11\",\"number\":11,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 11\",\"preAcc\":55.5,\"preWpm\":6.3,\"preTime\":190.5,\"preErr\":44,\"postAcc\":76.5,\"postWpm\":10.6,\"postTime\":113.2,\"postErr\":24,\"accInc\":21.0,\"wpmInc\":4.3,\"wpmPct\":68.2539682539683,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":47.1910112359551},{\"classroom\":\"3\/1\",\"id\":\"3\/1-12\",\"number\":12,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 12\",\"preAcc\":65.7,\"preWpm\":6.8,\"preTime\":176.5,\"preErr\":34,\"postAcc\":87.2,\"postWpm\":10.0,\"postTime\":120.0,\"postErr\":13,\"accInc\":21.5,\"wpmInc\":3.2,\"wpmPct\":47.0588235294118,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":27.0,\"consistency\":9,\"totalScore\":91.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":62.6822157434402},{\"classroom\":\"3\/1\",\"id\":\"3\/1-13\",\"number\":13,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 13\",\"preAcc\":63.4,\"preWpm\":6.6,\"preTime\":181.8,\"preErr\":37,\"postAcc\":79.7,\"postWpm\":12.8,\"postTime\":93.8,\"postErr\":20,\"accInc\":16.3,\"wpmInc\":6.2,\"wpmPct\":93.939393939394,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":44.5355191256831},{\"classroom\":\"3\/1\",\"id\":\"3\/1-14\",\"number\":14,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 14\",\"preAcc\":59.4,\"preWpm\":7.0,\"preTime\":171.4,\"preErr\":41,\"postAcc\":82.4,\"postWpm\":13.1,\"postTime\":91.6,\"postErr\":18,\"accInc\":23.0,\"wpmInc\":6.1,\"wpmPct\":87.1428571428571,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":30.0,\"consistency\":10,\"totalScore\":90.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":56.6502463054187},{\"classroom\":\"3\/1\",\"id\":\"3\/1-15\",\"number\":15,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 15\",\"preAcc\":52.0,\"preWpm\":4.3,\"preTime\":279.1,\"preErr\":48,\"postAcc\":78.4,\"postWpm\":7.1,\"postTime\":169.0,\"postErr\":22,\"accInc\":26.4,\"wpmInc\":2.8,\"wpmPct\":65.1162790697674,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":55.0},{\"classroom\":\"3\/1\",\"id\":\"3\/1-16\",\"number\":16,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 16\",\"preAcc\":67.3,\"preWpm\":5.5,\"preTime\":218.2,\"preErr\":33,\"postAcc\":87.0,\"postWpm\":8.6,\"postTime\":139.5,\"postErr\":13,\"accInc\":19.7,\"wpmInc\":3.1,\"wpmPct\":56.3636363636364,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":94.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":60.2446483180428},{\"classroom\":\"3\/1\",\"id\":\"3\/1-17\",\"number\":17,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 17\",\"preAcc\":67.2,\"preWpm\":6.7,\"preTime\":179.1,\"preErr\":33,\"postAcc\":76.5,\"postWpm\":12.1,\"postTime\":99.2,\"postErr\":24,\"accInc\":9.3,\"wpmInc\":5.4,\"wpmPct\":80.5970149253731,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":28.3536585365854},{\"classroom\":\"3\/1\",\"id\":\"3\/1-18\",\"number\":18,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 18\",\"preAcc\":54.3,\"preWpm\":5.2,\"preTime\":230.8,\"preErr\":46,\"postAcc\":79.4,\"postWpm\":11.3,\"postTime\":106.2,\"postErr\":21,\"accInc\":25.1,\"wpmInc\":6.1,\"wpmPct\":117.307692307692,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":54.9234135667396},{\"classroom\":\"3\/1\",\"id\":\"3\/1-19\",\"number\":19,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 19\",\"preAcc\":48.5,\"preWpm\":6.5,\"preTime\":184.6,\"preErr\":52,\"postAcc\":66.0,\"postWpm\":12.9,\"postTime\":93.0,\"postErr\":34,\"accInc\":17.5,\"wpmInc\":6.4,\"wpmPct\":98.4615384615385,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":69.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":33.9805825242718},{\"classroom\":\"3\/1\",\"id\":\"3\/1-20\",\"number\":20,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 20\",\"preAcc\":51.6,\"preWpm\":8.2,\"preTime\":146.3,\"preErr\":48,\"postAcc\":70.5,\"postWpm\":12.3,\"postTime\":97.6,\"postErr\":30,\"accInc\":18.9,\"wpmInc\":4.1,\"wpmPct\":50.0,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":78.0,\"level\":\"\u0e14\u0e35\",\"g\":39.0495867768595},{\"classroom\":\"3\/1\",\"id\":\"3\/1-21\",\"number\":21,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 21\",\"preAcc\":66.2,\"preWpm\":5.1,\"preTime\":235.3,\"preErr\":34,\"postAcc\":91.7,\"postWpm\":11.1,\"postTime\":108.1,\"postErr\":8,\"accInc\":25.5,\"wpmInc\":6.0,\"wpmPct\":117.647058823529,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":60.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":99.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":75.4437869822485},{\"classroom\":\"3\/1\",\"id\":\"3\/1-22\",\"number\":22,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 22\",\"preAcc\":51.8,\"preWpm\":5.8,\"preTime\":206.9,\"preErr\":48,\"postAcc\":71.7,\"postWpm\":10.4,\"postTime\":115.4,\"postErr\":28,\"accInc\":19.9,\"wpmInc\":4.6,\"wpmPct\":79.3103448275862,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":79.0,\"level\":\"\u0e14\u0e35\",\"g\":41.2863070539419},{\"classroom\":\"3\/1\",\"id\":\"3\/1-23\",\"number\":23,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 23\",\"preAcc\":52.2,\"preWpm\":7.4,\"preTime\":162.2,\"preErr\":48,\"postAcc\":67.6,\"postWpm\":13.0,\"postTime\":92.3,\"postErr\":32,\"accInc\":15.4,\"wpmInc\":5.6,\"wpmPct\":75.6756756756757,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":10,\"totalScore\":70.0,\"level\":\"\u0e14\u0e35\",\"g\":32.2175732217573},{\"classroom\":\"3\/1\",\"id\":\"3\/1-24\",\"number\":24,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 24\",\"preAcc\":59.7,\"preWpm\":8.5,\"preTime\":141.2,\"preErr\":40,\"postAcc\":74.4,\"postWpm\":13.2,\"postTime\":90.9,\"postErr\":26,\"accInc\":14.7,\"wpmInc\":4.7,\"wpmPct\":55.2941176470588,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":79.0,\"level\":\"\u0e14\u0e35\",\"g\":36.4764267990075},{\"classroom\":\"3\/1\",\"id\":\"3\/1-25\",\"number\":25,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 25\",\"preAcc\":48.6,\"preWpm\":7.3,\"preTime\":164.4,\"preErr\":51,\"postAcc\":59.5,\"postWpm\":10.0,\"postTime\":120.0,\"postErr\":40,\"accInc\":10.9,\"wpmInc\":2.7,\"wpmPct\":36.986301369863,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":20.0,\"wpmScore\":24.0,\"consistency\":8,\"totalScore\":52.0,\"level\":\"\u0e04\u0e27\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\",\"g\":21.2062256809338},{\"classroom\":\"3\/1\",\"id\":\"3\/1-26\",\"number\":26,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 26\",\"preAcc\":66.0,\"preWpm\":4.3,\"preTime\":279.1,\"preErr\":34,\"postAcc\":85.7,\"postWpm\":10.3,\"postTime\":116.5,\"postErr\":14,\"accInc\":19.7,\"wpmInc\":6.0,\"wpmPct\":139.53488372093,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":93.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":57.9411764705882},{\"classroom\":\"3\/1\",\"id\":\"3\/1-27\",\"number\":27,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 27\",\"preAcc\":64.5,\"preWpm\":6.6,\"preTime\":181.8,\"preErr\":36,\"postAcc\":88.5,\"postWpm\":12.1,\"postTime\":99.2,\"postErr\":12,\"accInc\":24.0,\"wpmInc\":5.5,\"wpmPct\":83.3333333333333,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":93.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":67.6056338028169},{\"classroom\":\"3\/1\",\"id\":\"3\/1-28\",\"number\":28,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 28\",\"preAcc\":64.7,\"preWpm\":4.9,\"preTime\":244.9,\"preErr\":35,\"postAcc\":67.1,\"postWpm\":8.2,\"postTime\":146.3,\"postErr\":33,\"accInc\":2.39999999999999,\"wpmInc\":3.3,\"wpmPct\":67.3469387755102,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":68.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":6.79886685552406},{\"classroom\":\"3\/1\",\"id\":\"3\/1-29\",\"number\":29,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 29\",\"preAcc\":60.8,\"preWpm\":6.8,\"preTime\":176.5,\"preErr\":39,\"postAcc\":87.1,\"postWpm\":9.6,\"postTime\":125.0,\"postErr\":13,\"accInc\":26.3,\"wpmInc\":2.8,\"wpmPct\":41.1764705882353,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":27.0,\"consistency\":8,\"totalScore\":90.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":67.0918367346939},{\"classroom\":\"3\/1\",\"id\":\"3\/1-30\",\"number\":30,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 30\",\"preAcc\":65.5,\"preWpm\":8.0,\"preTime\":150.0,\"preErr\":34,\"postAcc\":87.3,\"postWpm\":11.9,\"postTime\":100.8,\"postErr\":13,\"accInc\":21.8,\"wpmInc\":3.9,\"wpmPct\":48.75,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":27.0,\"consistency\":10,\"totalScore\":92.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":63.1884057971014},{\"classroom\":\"3\/1\",\"id\":\"3\/1-31\",\"number\":31,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/1 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 31\",\"preAcc\":65.0,\"preWpm\":4.8,\"preTime\":250.0,\"preErr\":35,\"postAcc\":75.5,\"postWpm\":7.5,\"postTime\":160.0,\"postErr\":24,\"accInc\":10.5,\"wpmInc\":2.7,\"wpmPct\":56.25,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":10,\"totalScore\":85.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":30.0},{\"classroom\":\"3\/2\",\"id\":\"3\/2-1\",\"number\":1,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 1\",\"preAcc\":53.6,\"preWpm\":7.4,\"preTime\":162.2,\"preErr\":46,\"postAcc\":65.1,\"postWpm\":12.8,\"postTime\":93.8,\"postErr\":35,\"accInc\":11.5,\"wpmInc\":5.4,\"wpmPct\":72.972972972973,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":68.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":24.7844827586207},{\"classroom\":\"3\/2\",\"id\":\"3\/2-2\",\"number\":2,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 2\",\"preAcc\":57.9,\"preWpm\":7.1,\"preTime\":169.0,\"preErr\":42,\"postAcc\":80.0,\"postWpm\":12.6,\"postTime\":95.2,\"postErr\":20,\"accInc\":22.1,\"wpmInc\":5.5,\"wpmPct\":77.4647887323944,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":30.0,\"consistency\":10,\"totalScore\":90.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":52.4940617577197},{\"classroom\":\"3\/2\",\"id\":\"3\/2-3\",\"number\":3,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 3\",\"preAcc\":58.6,\"preWpm\":5.8,\"preTime\":206.9,\"preErr\":41,\"postAcc\":74.4,\"postWpm\":9.7,\"postTime\":123.7,\"postErr\":26,\"accInc\":15.8,\"wpmInc\":3.9,\"wpmPct\":67.2413793103448,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":78.0,\"level\":\"\u0e14\u0e35\",\"g\":38.1642512077295},{\"classroom\":\"3\/2\",\"id\":\"3\/2-4\",\"number\":4,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 4\",\"preAcc\":65.4,\"preWpm\":5.6,\"preTime\":214.3,\"preErr\":35,\"postAcc\":80.6,\"postWpm\":9.9,\"postTime\":121.2,\"postErr\":19,\"accInc\":15.2,\"wpmInc\":4.3,\"wpmPct\":76.7857142857143,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":89.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":43.9306358381503},{\"classroom\":\"3\/2\",\"id\":\"3\/2-5\",\"number\":5,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 5\",\"preAcc\":49.1,\"preWpm\":7.4,\"preTime\":162.2,\"preErr\":51,\"postAcc\":68.9,\"postWpm\":12.9,\"postTime\":93.0,\"postErr\":31,\"accInc\":19.8,\"wpmInc\":5.5,\"wpmPct\":74.3243243243243,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":69.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":38.8998035363458},{\"classroom\":\"3\/2\",\"id\":\"3\/2-6\",\"number\":6,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 6\",\"preAcc\":49.5,\"preWpm\":6.3,\"preTime\":190.5,\"preErr\":50,\"postAcc\":62.4,\"postWpm\":10.9,\"postTime\":110.1,\"postErr\":38,\"accInc\":12.9,\"wpmInc\":4.6,\"wpmPct\":73.015873015873,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":69.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":25.5445544554455},{\"classroom\":\"3\/2\",\"id\":\"3\/2-7\",\"number\":7,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 7\",\"preAcc\":63.1,\"preWpm\":8.7,\"preTime\":137.9,\"preErr\":37,\"postAcc\":64.0,\"postWpm\":13.4,\"postTime\":89.6,\"postErr\":36,\"accInc\":0.899999999999999,\"wpmInc\":4.7,\"wpmPct\":54.0229885057471,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":68.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":2.4390243902439},{\"classroom\":\"3\/2\",\"id\":\"3\/2-8\",\"number\":8,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 8\",\"preAcc\":65.4,\"preWpm\":7.4,\"preTime\":162.2,\"preErr\":35,\"postAcc\":77.0,\"postWpm\":13.8,\"postTime\":87.0,\"postErr\":23,\"accInc\":11.6,\"wpmInc\":6.4,\"wpmPct\":86.4864864864865,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":10,\"totalScore\":85.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":33.5260115606936},{\"classroom\":\"3\/2\",\"id\":\"3\/2-9\",\"number\":9,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 9\",\"preAcc\":50.2,\"preWpm\":5.4,\"preTime\":222.2,\"preErr\":50,\"postAcc\":76.3,\"postWpm\":8.7,\"postTime\":137.9,\"postErr\":24,\"accInc\":26.1,\"wpmInc\":3.3,\"wpmPct\":61.1111111111111,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":52.4096385542169},{\"classroom\":\"3\/2\",\"id\":\"3\/2-10\",\"number\":10,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 10\",\"preAcc\":65.2,\"preWpm\":8.4,\"preTime\":142.9,\"preErr\":35,\"postAcc\":79.1,\"postWpm\":13.6,\"postTime\":88.2,\"postErr\":21,\"accInc\":13.9,\"wpmInc\":5.2,\"wpmPct\":61.9047619047619,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":39.9425287356322},{\"classroom\":\"3\/2\",\"id\":\"3\/2-11\",\"number\":11,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 11\",\"preAcc\":57.1,\"preWpm\":8.1,\"preTime\":148.1,\"preErr\":43,\"postAcc\":78.6,\"postWpm\":14.6,\"postTime\":82.2,\"postErr\":21,\"accInc\":21.5,\"wpmInc\":6.5,\"wpmPct\":80.2469135802469,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":83.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":50.1165501165501},{\"classroom\":\"3\/2\",\"id\":\"3\/2-12\",\"number\":12,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 12\",\"preAcc\":61.3,\"preWpm\":6.7,\"preTime\":179.1,\"preErr\":39,\"postAcc\":87.8,\"postWpm\":11.8,\"postTime\":101.7,\"postErr\":12,\"accInc\":26.5,\"wpmInc\":5.1,\"wpmPct\":76.1194029850746,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":93.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":68.4754521963824},{\"classroom\":\"3\/2\",\"id\":\"3\/2-13\",\"number\":13,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 13\",\"preAcc\":59.0,\"preWpm\":4.6,\"preTime\":260.9,\"preErr\":41,\"postAcc\":74.8,\"postWpm\":9.4,\"postTime\":127.7,\"postErr\":25,\"accInc\":15.8,\"wpmInc\":4.8,\"wpmPct\":104.347826086957,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":10,\"totalScore\":80.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":38.5365853658537},{\"classroom\":\"3\/2\",\"id\":\"3\/2-14\",\"number\":14,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 14\",\"preAcc\":62.8,\"preWpm\":6.2,\"preTime\":193.5,\"preErr\":37,\"postAcc\":89.2,\"postWpm\":10.7,\"postTime\":112.1,\"postErr\":11,\"accInc\":26.4,\"wpmInc\":4.5,\"wpmPct\":72.5806451612903,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":93.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":70.9677419354839},{\"classroom\":\"3\/2\",\"id\":\"3\/2-15\",\"number\":15,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 15\",\"preAcc\":67.7,\"preWpm\":6.3,\"preTime\":190.5,\"preErr\":32,\"postAcc\":85.1,\"postWpm\":8.8,\"postTime\":136.4,\"postErr\":15,\"accInc\":17.4,\"wpmInc\":2.5,\"wpmPct\":39.6825396825397,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":24.0,\"consistency\":8,\"totalScore\":87.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":53.8699690402477},{\"classroom\":\"3\/2\",\"id\":\"3\/2-16\",\"number\":16,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 16\",\"preAcc\":64.6,\"preWpm\":4.7,\"preTime\":255.3,\"preErr\":35,\"postAcc\":90.9,\"postWpm\":11.2,\"postTime\":107.1,\"postErr\":9,\"accInc\":26.3,\"wpmInc\":6.5,\"wpmPct\":138.297872340426,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":60.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":98.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":74.2937853107345},{\"classroom\":\"3\/2\",\"id\":\"3\/2-17\",\"number\":17,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 17\",\"preAcc\":50.2,\"preWpm\":6.5,\"preTime\":184.6,\"preErr\":50,\"postAcc\":76.3,\"postWpm\":9.4,\"postTime\":127.7,\"postErr\":24,\"accInc\":26.1,\"wpmInc\":2.9,\"wpmPct\":44.6153846153846,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":27.0,\"consistency\":9,\"totalScore\":81.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":52.4096385542169},{\"classroom\":\"3\/2\",\"id\":\"3\/2-18\",\"number\":18,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 18\",\"preAcc\":57.0,\"preWpm\":6.4,\"preTime\":187.5,\"preErr\":43,\"postAcc\":76.7,\"postWpm\":10.4,\"postTime\":115.4,\"postErr\":23,\"accInc\":19.7,\"wpmInc\":4.0,\"wpmPct\":62.5,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":45.8139534883721},{\"classroom\":\"3\/2\",\"id\":\"3\/2-19\",\"number\":19,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 19\",\"preAcc\":56.6,\"preWpm\":6.4,\"preTime\":187.5,\"preErr\":43,\"postAcc\":81.2,\"postWpm\":8.5,\"postTime\":141.2,\"postErr\":19,\"accInc\":24.6,\"wpmInc\":2.1,\"wpmPct\":32.8125,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":24.0,\"consistency\":10,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":56.6820276497696},{\"classroom\":\"3\/2\",\"id\":\"3\/2-20\",\"number\":20,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 20\",\"preAcc\":58.6,\"preWpm\":8.0,\"preTime\":150.0,\"preErr\":41,\"postAcc\":83.0,\"postWpm\":13.8,\"postTime\":87.0,\"postErr\":17,\"accInc\":24.4,\"wpmInc\":5.8,\"wpmPct\":72.5,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":88.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":58.9371980676329},{\"classroom\":\"3\/2\",\"id\":\"3\/2-21\",\"number\":21,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 21\",\"preAcc\":58.7,\"preWpm\":6.7,\"preTime\":179.1,\"preErr\":41,\"postAcc\":77.6,\"postWpm\":13.1,\"postTime\":91.6,\"postErr\":22,\"accInc\":18.9,\"wpmInc\":6.4,\"wpmPct\":95.5223880597015,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":84.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":45.7627118644068},{\"classroom\":\"3\/2\",\"id\":\"3\/2-22\",\"number\":22,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 22\",\"preAcc\":64.7,\"preWpm\":7.3,\"preTime\":164.4,\"preErr\":35,\"postAcc\":67.0,\"postWpm\":10.6,\"postTime\":113.2,\"postErr\":33,\"accInc\":2.3,\"wpmInc\":3.3,\"wpmPct\":45.2054794520548,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":27.0,\"consistency\":9,\"totalScore\":66.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":6.5155807365439},{\"classroom\":\"3\/2\",\"id\":\"3\/2-23\",\"number\":23,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 23\",\"preAcc\":52.4,\"preWpm\":8.8,\"preTime\":136.4,\"preErr\":48,\"postAcc\":64.6,\"postWpm\":14.3,\"postTime\":83.9,\"postErr\":35,\"accInc\":12.2,\"wpmInc\":5.5,\"wpmPct\":62.5,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":68.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":25.6302521008403},{\"classroom\":\"3\/2\",\"id\":\"3\/2-24\",\"number\":24,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 24\",\"preAcc\":64.9,\"preWpm\":5.9,\"preTime\":203.4,\"preErr\":35,\"postAcc\":86.9,\"postWpm\":10.6,\"postTime\":113.2,\"postErr\":13,\"accInc\":22.0,\"wpmInc\":4.7,\"wpmPct\":79.6610169491525,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":93.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":62.6780626780627},{\"classroom\":\"3\/2\",\"id\":\"3\/2-25\",\"number\":25,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 25\",\"preAcc\":61.4,\"preWpm\":5.4,\"preTime\":222.2,\"preErr\":39,\"postAcc\":87.6,\"postWpm\":9.1,\"postTime\":131.9,\"postErr\":12,\"accInc\":26.2,\"wpmInc\":3.7,\"wpmPct\":68.5185185185185,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":94.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":67.8756476683938},{\"classroom\":\"3\/2\",\"id\":\"3\/2-26\",\"number\":26,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 26\",\"preAcc\":49.5,\"preWpm\":6.2,\"preTime\":193.5,\"preErr\":50,\"postAcc\":73.8,\"postWpm\":10.4,\"postTime\":115.4,\"postErr\":26,\"accInc\":24.3,\"wpmInc\":4.2,\"wpmPct\":67.741935483871,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":79.0,\"level\":\"\u0e14\u0e35\",\"g\":48.1188118811881},{\"classroom\":\"3\/2\",\"id\":\"3\/2-27\",\"number\":27,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 27\",\"preAcc\":60.5,\"preWpm\":5.6,\"preTime\":214.3,\"preErr\":40,\"postAcc\":83.2,\"postWpm\":10.4,\"postTime\":115.4,\"postErr\":17,\"accInc\":22.7,\"wpmInc\":4.8,\"wpmPct\":85.7142857142857,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":50.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":88.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":57.4683544303798},{\"classroom\":\"3\/2\",\"id\":\"3\/2-28\",\"number\":28,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 28\",\"preAcc\":66.2,\"preWpm\":7.0,\"preTime\":171.4,\"preErr\":34,\"postAcc\":88.9,\"postWpm\":11.6,\"postTime\":103.4,\"postErr\":11,\"accInc\":22.7,\"wpmInc\":4.6,\"wpmPct\":65.7142857142857,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":55.0,\"wpmScore\":30.0,\"consistency\":8,\"totalScore\":93.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":67.1597633136095},{\"classroom\":\"3\/2\",\"id\":\"3\/2-29\",\"number\":29,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 29\",\"preAcc\":49.5,\"preWpm\":7.8,\"preTime\":153.8,\"preErr\":50,\"postAcc\":64.8,\"postWpm\":13.6,\"postTime\":88.2,\"postErr\":35,\"accInc\":15.3,\"wpmInc\":5.8,\"wpmPct\":74.3589743589744,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":69.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":30.2970297029703},{\"classroom\":\"3\/2\",\"id\":\"3\/2-30\",\"number\":30,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 30\",\"preAcc\":66.0,\"preWpm\":5.2,\"preTime\":230.8,\"preErr\":34,\"postAcc\":77.4,\"postWpm\":7.6,\"postTime\":157.9,\"postErr\":23,\"accInc\":11.4,\"wpmInc\":2.4,\"wpmPct\":46.1538461538461,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":45.0,\"wpmScore\":27.0,\"consistency\":9,\"totalScore\":81.0,\"level\":\"\u0e14\u0e35\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\",\"g\":33.5294117647059},{\"classroom\":\"3\/2\",\"id\":\"3\/2-31\",\"number\":31,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 31\",\"preAcc\":65.5,\"preWpm\":6.1,\"preTime\":196.7,\"preErr\":34,\"postAcc\":68.5,\"postWpm\":12.4,\"postTime\":96.8,\"postErr\":32,\"accInc\":3.0,\"wpmInc\":6.3,\"wpmPct\":103.27868852459,\"accPass\":false,\"wpmPass\":true,\"both\":false,\"accScore\":30.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":69.0,\"level\":\"\u0e1e\u0e2d\u0e43\u0e0a\u0e49\",\"g\":8.69565217391304},{\"classroom\":\"3\/2\",\"id\":\"3\/2-32\",\"number\":32,\"name\":\"\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 3\/2 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 32\",\"preAcc\":61.7,\"preWpm\":4.9,\"preTime\":244.9,\"preErr\":38,\"postAcc\":74.6,\"postWpm\":8.5,\"postTime\":141.2,\"postErr\":25,\"accInc\":12.9,\"wpmInc\":3.6,\"wpmPct\":73.469387755102,\"accPass\":true,\"wpmPass\":true,\"both\":true,\"accScore\":40.0,\"wpmScore\":30.0,\"consistency\":9,\"totalScore\":79.0,\"level\":\"\u0e14\u0e35\",\"g\":33.6814621409921}];\nconst PRACTICES=[{\"studentId\":\"3\/1-1\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":65,\"correct\":35,\"wrong\":65,\"accuracy\":65.0,\"wpm\":9.50118764845606,\"duration\":126.3},{\"studentId\":\"3\/1-1\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":10.8010801080108,\"duration\":111.1},{\"studentId\":\"3\/1-1\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":12.1951219512195,\"duration\":98.4},{\"studentId\":\"3\/1-2\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/1-2\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":11.2044817927171,\"duration\":107.1},{\"studentId\":\"3\/1-2\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":77,\"correct\":23,\"wrong\":77,\"accuracy\":77.0,\"wpm\":12.5,\"duration\":96.0},{\"studentId\":\"3\/1-3\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":67,\"correct\":33,\"wrong\":67,\"accuracy\":67.0,\"wpm\":9.6,\"duration\":125.0},{\"studentId\":\"3\/1-3\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":10.9990834097159,\"duration\":109.1},{\"studentId\":\"3\/1-3\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":12.2950819672131,\"duration\":97.6},{\"studentId\":\"3\/1-4\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":58,\"correct\":42,\"wrong\":58,\"accuracy\":58.0,\"wpm\":7.5,\"duration\":160.0},{\"studentId\":\"3\/1-4\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":8.20232399179768,\"duration\":146.3},{\"studentId\":\"3\/1-4\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":8.79765395894428,\"duration\":136.4},{\"studentId\":\"3\/1-5\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":75,\"correct\":25,\"wrong\":75,\"accuracy\":75.0,\"wpm\":8.60215053763441,\"duration\":139.5},{\"studentId\":\"3\/1-5\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":82,\"correct\":18,\"wrong\":82,\"accuracy\":82.0,\"wpm\":10.3986135181976,\"duration\":115.4},{\"studentId\":\"3\/1-5\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":90,\"correct\":10,\"wrong\":90,\"accuracy\":90.0,\"wpm\":12.2950819672131,\"duration\":97.6},{\"studentId\":\"3\/1-6\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":59,\"correct\":41,\"wrong\":59,\"accuracy\":59.0,\"wpm\":7.10059171597633,\"duration\":169.0},{\"studentId\":\"3\/1-6\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/1-6\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":10.3986135181976,\"duration\":115.4},{\"studentId\":\"3\/1-7\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":6.50054171180932,\"duration\":184.6},{\"studentId\":\"3\/1-7\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":8.39748075577327,\"duration\":142.9},{\"studentId\":\"3\/1-7\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":10.3986135181976,\"duration\":115.4},{\"studentId\":\"3\/1-8\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":56,\"correct\":44,\"wrong\":56,\"accuracy\":56.0,\"wpm\":6.90051753881541,\"duration\":173.9},{\"studentId\":\"3\/1-8\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":63,\"correct\":37,\"wrong\":63,\"accuracy\":63.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/1-8\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":10.6007067137809,\"duration\":113.2},{\"studentId\":\"3\/1-9\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":5.70071258907363,\"duration\":210.5},{\"studentId\":\"3\/1-9\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":7.10059171597633,\"duration\":169.0},{\"studentId\":\"3\/1-9\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":8.4985835694051,\"duration\":141.2},{\"studentId\":\"3\/1-10\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":56,\"correct\":44,\"wrong\":56,\"accuracy\":56.0,\"wpm\":10.2040816326531,\"duration\":117.6},{\"studentId\":\"3\/1-10\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":63,\"correct\":37,\"wrong\":63,\"accuracy\":63.0,\"wpm\":11.7994100294985,\"duration\":101.7},{\"studentId\":\"3\/1-10\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":13.4983127109111,\"duration\":88.9},{\"studentId\":\"3\/1-11\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":62,\"correct\":38,\"wrong\":62,\"accuracy\":62.0,\"wpm\":7.59974667511083,\"duration\":157.9},{\"studentId\":\"3\/1-11\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":8.90207715133531,\"duration\":134.8},{\"studentId\":\"3\/1-11\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":75,\"correct\":25,\"wrong\":75,\"accuracy\":75.0,\"wpm\":10.2040816326531,\"duration\":117.6},{\"studentId\":\"3\/1-12\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":7.80234070221066,\"duration\":153.8},{\"studentId\":\"3\/1-12\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/1-12\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":86,\"correct\":14,\"wrong\":86,\"accuracy\":86.0,\"wpm\":9.70088924818109,\"duration\":123.7},{\"studentId\":\"3\/1-13\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":8.4985835694051,\"duration\":141.2},{\"studentId\":\"3\/1-13\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":10.3004291845494,\"duration\":116.5},{\"studentId\":\"3\/1-13\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":12.1951219512195,\"duration\":98.4},{\"studentId\":\"3\/1-14\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":8.79765395894428,\"duration\":136.4},{\"studentId\":\"3\/1-14\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":10.7047279214987,\"duration\":112.1},{\"studentId\":\"3\/1-14\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":81,\"correct\":19,\"wrong\":81,\"accuracy\":81.0,\"wpm\":12.5,\"duration\":96.0},{\"studentId\":\"3\/1-15\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":60,\"correct\":40,\"wrong\":60,\"accuracy\":60.0,\"wpm\":5.09987250318742,\"duration\":235.3},{\"studentId\":\"3\/1-15\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":6.0,\"duration\":200.0},{\"studentId\":\"3\/1-15\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":6.79886685552408,\"duration\":176.5},{\"studentId\":\"3\/1-16\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":6.4,\"duration\":187.5},{\"studentId\":\"3\/1-16\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":7.39827373612824,\"duration\":162.2},{\"studentId\":\"3\/1-16\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":85,\"correct\":15,\"wrong\":85,\"accuracy\":85.0,\"wpm\":8.29875518672199,\"duration\":144.6},{\"studentId\":\"3\/1-17\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":8.29875518672199,\"duration\":144.6},{\"studentId\":\"3\/1-17\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/1-17\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":11.605415860735,\"duration\":103.4},{\"studentId\":\"3\/1-18\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":62,\"correct\":38,\"wrong\":62,\"accuracy\":62.0,\"wpm\":7.00116686114352,\"duration\":171.4},{\"studentId\":\"3\/1-18\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":8.90207715133531,\"duration\":134.8},{\"studentId\":\"3\/1-18\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":77,\"correct\":23,\"wrong\":77,\"accuracy\":77.0,\"wpm\":10.7047279214987,\"duration\":112.1},{\"studentId\":\"3\/1-19\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":54,\"correct\":46,\"wrong\":54,\"accuracy\":54.0,\"wpm\":8.39748075577327,\"duration\":142.9},{\"studentId\":\"3\/1-19\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":59,\"correct\":41,\"wrong\":59,\"accuracy\":59.0,\"wpm\":10.3004291845494,\"duration\":116.5},{\"studentId\":\"3\/1-19\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":65,\"correct\":35,\"wrong\":65,\"accuracy\":65.0,\"wpm\":12.2950819672131,\"duration\":97.6},{\"studentId\":\"3\/1-20\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":57,\"correct\":43,\"wrong\":57,\"accuracy\":57.0,\"wpm\":9.39702427564605,\"duration\":127.7},{\"studentId\":\"3\/1-20\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":63,\"correct\":37,\"wrong\":63,\"accuracy\":63.0,\"wpm\":10.7047279214987,\"duration\":112.1},{\"studentId\":\"3\/1-20\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":11.9047619047619,\"duration\":100.8},{\"studentId\":\"3\/1-21\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":6.90051753881541,\"duration\":173.9},{\"studentId\":\"3\/1-21\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":82,\"correct\":18,\"wrong\":82,\"accuracy\":82.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/1-21\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":90,\"correct\":10,\"wrong\":90,\"accuracy\":90.0,\"wpm\":10.498687664042,\"duration\":114.3},{\"studentId\":\"3\/1-22\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":58,\"correct\":42,\"wrong\":58,\"accuracy\":58.0,\"wpm\":7.19856028794241,\"duration\":166.7},{\"studentId\":\"3\/1-22\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":8.60215053763441,\"duration\":139.5},{\"studentId\":\"3\/1-22\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/1-23\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":57,\"correct\":43,\"wrong\":57,\"accuracy\":57.0,\"wpm\":9.09780136467021,\"duration\":131.9},{\"studentId\":\"3\/1-23\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":62,\"correct\":38,\"wrong\":62,\"accuracy\":62.0,\"wpm\":10.8010801080108,\"duration\":111.1},{\"studentId\":\"3\/1-23\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":12.396694214876,\"duration\":96.8},{\"studentId\":\"3\/1-24\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/1-24\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":11.2994350282486,\"duration\":106.2},{\"studentId\":\"3\/1-24\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":12.6984126984127,\"duration\":94.5},{\"studentId\":\"3\/1-25\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":52,\"correct\":48,\"wrong\":52,\"accuracy\":52.0,\"wpm\":8.10263335584065,\"duration\":148.1},{\"studentId\":\"3\/1-25\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":55,\"correct\":45,\"wrong\":55,\"accuracy\":55.0,\"wpm\":8.90207715133531,\"duration\":134.8},{\"studentId\":\"3\/1-25\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":59,\"correct\":41,\"wrong\":59,\"accuracy\":59.0,\"wpm\":9.70088924818109,\"duration\":123.7},{\"studentId\":\"3\/1-26\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":6.10066090493137,\"duration\":196.7},{\"studentId\":\"3\/1-26\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":7.89993416721527,\"duration\":151.9},{\"studentId\":\"3\/1-26\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":84,\"correct\":16,\"wrong\":84,\"accuracy\":84.0,\"wpm\":9.70088924818109,\"duration\":123.7},{\"studentId\":\"3\/1-27\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":8.20232399179768,\"duration\":146.3},{\"studentId\":\"3\/1-27\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/1-27\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":87,\"correct\":13,\"wrong\":87,\"accuracy\":87.0,\"wpm\":11.605415860735,\"duration\":103.4},{\"studentId\":\"3\/1-28\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":65,\"correct\":35,\"wrong\":65,\"accuracy\":65.0,\"wpm\":5.89970501474926,\"duration\":203.4},{\"studentId\":\"3\/1-28\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":6.90051753881541,\"duration\":173.9},{\"studentId\":\"3\/1-28\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":67,\"correct\":33,\"wrong\":67,\"accuracy\":67.0,\"wpm\":7.89993416721527,\"duration\":151.9},{\"studentId\":\"3\/1-29\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":7.59974667511083,\"duration\":157.9},{\"studentId\":\"3\/1-29\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":77,\"correct\":23,\"wrong\":77,\"accuracy\":77.0,\"wpm\":8.4985835694051,\"duration\":141.2},{\"studentId\":\"3\/1-29\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":85,\"correct\":15,\"wrong\":85,\"accuracy\":85.0,\"wpm\":9.30232558139535,\"duration\":129.0},{\"studentId\":\"3\/1-30\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":9.20245398773006,\"duration\":130.4},{\"studentId\":\"3\/1-30\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":10.3004291845494,\"duration\":116.5},{\"studentId\":\"3\/1-30\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":86,\"correct\":14,\"wrong\":86,\"accuracy\":86.0,\"wpm\":11.5052732502397,\"duration\":104.3},{\"studentId\":\"3\/1-31\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":5.5996266915539,\"duration\":214.3},{\"studentId\":\"3\/1-31\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":71,\"correct\":29,\"wrong\":71,\"accuracy\":71.0,\"wpm\":6.4,\"duration\":187.5},{\"studentId\":\"3\/1-31\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":75,\"correct\":25,\"wrong\":75,\"accuracy\":75.0,\"wpm\":7.19856028794241,\"duration\":166.7},{\"studentId\":\"3\/2-1\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":57,\"correct\":43,\"wrong\":57,\"accuracy\":57.0,\"wpm\":9.00225056264066,\"duration\":133.3},{\"studentId\":\"3\/2-1\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":61,\"correct\":39,\"wrong\":61,\"accuracy\":61.0,\"wpm\":10.6007067137809,\"duration\":113.2},{\"studentId\":\"3\/2-1\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":12.2950819672131,\"duration\":97.6},{\"studentId\":\"3\/2-2\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":65,\"correct\":35,\"wrong\":65,\"accuracy\":65.0,\"wpm\":8.79765395894428,\"duration\":136.4},{\"studentId\":\"3\/2-2\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":10.3986135181976,\"duration\":115.4},{\"studentId\":\"3\/2-2\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":12.0967741935484,\"duration\":99.2},{\"studentId\":\"3\/2-3\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":63,\"correct\":37,\"wrong\":63,\"accuracy\":63.0,\"wpm\":7.00116686114352,\"duration\":171.4},{\"studentId\":\"3\/2-3\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":8.10263335584065,\"duration\":148.1},{\"studentId\":\"3\/2-3\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":9.30232558139535,\"duration\":129.0},{\"studentId\":\"3\/2-4\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":6.90051753881541,\"duration\":173.9},{\"studentId\":\"3\/2-4\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":75,\"correct\":25,\"wrong\":75,\"accuracy\":75.0,\"wpm\":8.20232399179768,\"duration\":146.3},{\"studentId\":\"3\/2-4\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":9.50118764845606,\"duration\":126.3},{\"studentId\":\"3\/2-5\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":55,\"correct\":45,\"wrong\":55,\"accuracy\":55.0,\"wpm\":9.09780136467021,\"duration\":131.9},{\"studentId\":\"3\/2-5\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":61,\"correct\":39,\"wrong\":61,\"accuracy\":61.0,\"wpm\":10.7047279214987,\"duration\":112.1},{\"studentId\":\"3\/2-5\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":67,\"correct\":33,\"wrong\":67,\"accuracy\":67.0,\"wpm\":12.396694214876,\"duration\":96.8},{\"studentId\":\"3\/2-6\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":54,\"correct\":46,\"wrong\":54,\"accuracy\":54.0,\"wpm\":7.70218228498074,\"duration\":155.8},{\"studentId\":\"3\/2-6\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":57,\"correct\":43,\"wrong\":57,\"accuracy\":57.0,\"wpm\":9.09780136467021,\"duration\":131.9},{\"studentId\":\"3\/2-6\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":61,\"correct\":39,\"wrong\":61,\"accuracy\":61.0,\"wpm\":10.3986135181976,\"duration\":115.4},{\"studentId\":\"3\/2-7\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":63,\"correct\":37,\"wrong\":63,\"accuracy\":63.0,\"wpm\":10.1010101010101,\"duration\":118.8},{\"studentId\":\"3\/2-7\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":11.5052732502397,\"duration\":104.3},{\"studentId\":\"3\/2-7\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":12.9032258064516,\"duration\":93.0},{\"studentId\":\"3\/2-8\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":9.30232558139535,\"duration\":129.0},{\"studentId\":\"3\/2-8\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":11.2044817927171,\"duration\":107.1},{\"studentId\":\"3\/2-8\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":13.2013201320132,\"duration\":90.9},{\"studentId\":\"3\/2-9\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":58,\"correct\":42,\"wrong\":58,\"accuracy\":58.0,\"wpm\":6.4,\"duration\":187.5},{\"studentId\":\"3\/2-9\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":7.39827373612824,\"duration\":162.2},{\"studentId\":\"3\/2-9\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":8.39748075577327,\"duration\":142.9},{\"studentId\":\"3\/2-10\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":10.0,\"duration\":120.0},{\"studentId\":\"3\/2-10\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":11.5052732502397,\"duration\":104.3},{\"studentId\":\"3\/2-10\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":13.1004366812227,\"duration\":91.6},{\"studentId\":\"3\/2-11\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":10.0,\"duration\":120.0},{\"studentId\":\"3\/2-11\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":12.0,\"duration\":100.0},{\"studentId\":\"3\/2-11\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":77,\"correct\":23,\"wrong\":77,\"accuracy\":77.0,\"wpm\":13.9049826187717,\"duration\":86.3},{\"studentId\":\"3\/2-12\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":8.20232399179768,\"duration\":146.3},{\"studentId\":\"3\/2-12\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":9.80392156862745,\"duration\":122.4},{\"studentId\":\"3\/2-12\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":86,\"correct\":14,\"wrong\":86,\"accuracy\":86.0,\"wpm\":11.2994350282486,\"duration\":106.2},{\"studentId\":\"3\/2-13\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":6.0,\"duration\":200.0},{\"studentId\":\"3\/2-13\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":7.5,\"duration\":160.0},{\"studentId\":\"3\/2-13\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":8.90207715133531,\"duration\":134.8},{\"studentId\":\"3\/2-14\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":71,\"correct\":29,\"wrong\":71,\"accuracy\":71.0,\"wpm\":7.5,\"duration\":160.0},{\"studentId\":\"3\/2-14\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":8.90207715133531,\"duration\":134.8},{\"studentId\":\"3\/2-14\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":87,\"correct\":13,\"wrong\":87,\"accuracy\":87.0,\"wpm\":10.2040816326531,\"duration\":117.6},{\"studentId\":\"3\/2-15\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":7.00116686114352,\"duration\":171.4},{\"studentId\":\"3\/2-15\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":7.80234070221066,\"duration\":153.8},{\"studentId\":\"3\/2-15\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":84,\"correct\":16,\"wrong\":84,\"accuracy\":84.0,\"wpm\":8.60215053763441,\"duration\":139.5},{\"studentId\":\"3\/2-16\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":6.6006600660066,\"duration\":181.8},{\"studentId\":\"3\/2-16\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":81,\"correct\":19,\"wrong\":81,\"accuracy\":81.0,\"wpm\":8.60215053763441,\"duration\":139.5},{\"studentId\":\"3\/2-16\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":89,\"correct\":11,\"wrong\":89,\"accuracy\":89.0,\"wpm\":10.6007067137809,\"duration\":113.2},{\"studentId\":\"3\/2-17\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":58,\"correct\":42,\"wrong\":58,\"accuracy\":58.0,\"wpm\":7.39827373612824,\"duration\":162.2},{\"studentId\":\"3\/2-17\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":8.20232399179768,\"duration\":146.3},{\"studentId\":\"3\/2-17\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":9.09780136467021,\"duration\":131.9},{\"studentId\":\"3\/2-18\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":63,\"correct\":37,\"wrong\":63,\"accuracy\":63.0,\"wpm\":7.59974667511083,\"duration\":157.9},{\"studentId\":\"3\/2-18\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":8.79765395894428,\"duration\":136.4},{\"studentId\":\"3\/2-18\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":75,\"correct\":25,\"wrong\":75,\"accuracy\":75.0,\"wpm\":10.0,\"duration\":120.0},{\"studentId\":\"3\/2-19\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":7.00116686114352,\"duration\":171.4},{\"studentId\":\"3\/2-19\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":7.70218228498074,\"duration\":155.8},{\"studentId\":\"3\/2-19\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":79,\"correct\":21,\"wrong\":79,\"accuracy\":79.0,\"wpm\":8.29875518672199,\"duration\":144.6},{\"studentId\":\"3\/2-20\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":9.70088924818109,\"duration\":123.7},{\"studentId\":\"3\/2-20\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":11.5052732502397,\"duration\":104.3},{\"studentId\":\"3\/2-20\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":81,\"correct\":19,\"wrong\":81,\"accuracy\":81.0,\"wpm\":13.2013201320132,\"duration\":90.9},{\"studentId\":\"3\/2-21\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":8.60215053763441,\"duration\":139.5},{\"studentId\":\"3\/2-21\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":10.498687664042,\"duration\":114.3},{\"studentId\":\"3\/2-21\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":12.5,\"duration\":96.0},{\"studentId\":\"3\/2-22\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":65,\"correct\":35,\"wrong\":65,\"accuracy\":65.0,\"wpm\":8.29875518672199,\"duration\":144.6},{\"studentId\":\"3\/2-22\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":9.30232558139535,\"duration\":129.0},{\"studentId\":\"3\/2-22\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":67,\"correct\":33,\"wrong\":67,\"accuracy\":67.0,\"wpm\":10.3004291845494,\"duration\":116.5},{\"studentId\":\"3\/2-23\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":56,\"correct\":44,\"wrong\":56,\"accuracy\":56.0,\"wpm\":10.498687664042,\"duration\":114.3},{\"studentId\":\"3\/2-23\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":60,\"correct\":40,\"wrong\":60,\"accuracy\":60.0,\"wpm\":12.0967741935484,\"duration\":99.2},{\"studentId\":\"3\/2-23\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":13.7931034482759,\"duration\":87.0},{\"studentId\":\"3\/2-24\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":7.2992700729927,\"duration\":164.4},{\"studentId\":\"3\/2-24\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/2-24\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":85,\"correct\":15,\"wrong\":85,\"accuracy\":85.0,\"wpm\":10.1010101010101,\"duration\":118.8},{\"studentId\":\"3\/2-25\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":69,\"correct\":31,\"wrong\":69,\"accuracy\":69.0,\"wpm\":6.50054171180932,\"duration\":184.6},{\"studentId\":\"3\/2-25\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":78,\"correct\":22,\"wrong\":78,\"accuracy\":78.0,\"wpm\":7.59974667511083,\"duration\":157.9},{\"studentId\":\"3\/2-25\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":86,\"correct\":14,\"wrong\":86,\"accuracy\":86.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/2-26\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":57,\"correct\":43,\"wrong\":57,\"accuracy\":57.0,\"wpm\":7.5,\"duration\":160.0},{\"studentId\":\"3\/2-26\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":8.70195794053662,\"duration\":137.9},{\"studentId\":\"3\/2-26\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":72,\"correct\":28,\"wrong\":72,\"accuracy\":72.0,\"wpm\":10.0,\"duration\":120.0},{\"studentId\":\"3\/2-27\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":7.00116686114352,\"duration\":171.4},{\"studentId\":\"3\/2-27\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":8.4985835694051,\"duration\":141.2},{\"studentId\":\"3\/2-27\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":81,\"correct\":19,\"wrong\":81,\"accuracy\":81.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/2-28\",\"date\":\"2026-06-11 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":8.39748075577327,\"duration\":142.9},{\"studentId\":\"3\/2-28\",\"date\":\"2026-06-25 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":80,\"correct\":20,\"wrong\":80,\"accuracy\":80.0,\"wpm\":9.80392156862745,\"duration\":122.4},{\"studentId\":\"3\/2-28\",\"date\":\"2026-07-09 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":87,\"correct\":13,\"wrong\":87,\"accuracy\":87.0,\"wpm\":11.1008325624422,\"duration\":108.1},{\"studentId\":\"3\/2-29\",\"date\":\"2026-06-12 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":54,\"correct\":46,\"wrong\":54,\"accuracy\":54.0,\"wpm\":9.50118764845606,\"duration\":126.3},{\"studentId\":\"3\/2-29\",\"date\":\"2026-06-26 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":59,\"correct\":41,\"wrong\":59,\"accuracy\":59.0,\"wpm\":11.2994350282486,\"duration\":106.2},{\"studentId\":\"3\/2-29\",\"date\":\"2026-07-10 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":64,\"correct\":36,\"wrong\":64,\"accuracy\":64.0,\"wpm\":13.0010834236186,\"duration\":92.3},{\"studentId\":\"3\/2-30\",\"date\":\"2026-06-08 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":5.89970501474926,\"duration\":203.4},{\"studentId\":\"3\/2-30\",\"date\":\"2026-06-22 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":73,\"correct\":27,\"wrong\":73,\"accuracy\":73.0,\"wpm\":6.6006600660066,\"duration\":181.8},{\"studentId\":\"3\/2-30\",\"date\":\"2026-07-06 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":76,\"correct\":24,\"wrong\":76,\"accuracy\":76.0,\"wpm\":7.39827373612824,\"duration\":162.2},{\"studentId\":\"3\/2-31\",\"date\":\"2026-06-09 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":8.0,\"duration\":150.0},{\"studentId\":\"3\/2-31\",\"date\":\"2026-06-23 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":67,\"correct\":33,\"wrong\":67,\"accuracy\":67.0,\"wpm\":9.9009900990099,\"duration\":121.2},{\"studentId\":\"3\/2-31\",\"date\":\"2026-07-07 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":68,\"correct\":32,\"wrong\":68,\"accuracy\":68.0,\"wpm\":11.7994100294985,\"duration\":101.7},{\"studentId\":\"3\/2-32\",\"date\":\"2026-06-10 00:00:00\",\"attempt\":1,\"level\":2,\"text\":100,\"chars\":66,\"correct\":34,\"wrong\":66,\"accuracy\":66.0,\"wpm\":6.0,\"duration\":200.0},{\"studentId\":\"3\/2-32\",\"date\":\"2026-06-24 00:00:00\",\"attempt\":2,\"level\":3,\"text\":100,\"chars\":70,\"correct\":30,\"wrong\":70,\"accuracy\":70.0,\"wpm\":7.10059171597633,\"duration\":169.0},{\"studentId\":\"3\/2-32\",\"date\":\"2026-07-08 00:00:00\",\"attempt\":3,\"level\":4,\"text\":100,\"chars\":74,\"correct\":26,\"wrong\":74,\"accuracy\":74.0,\"wpm\":8.10263335584065,\"duration\":148.1}];\nconst DB_NAME='ThaiTypingAI_v7_DB',DB_VERSION=1;let db=null,timer=null,startAt=0,current=null,idx=0,correct=0,errors=0;\nconst levels={1:['\u0e01\u0e14\u0e01\u0e14 \u0e23\u0e1f\u0e23\u0e1f \u0e14\u0e23\u0e01\u0e14','\u0e1f\u0e01 \u0e1f\u0e01 \u0e14\u0e23 \u0e14\u0e23','\u0e01\u0e14 \u0e23\u0e1f \u0e14\u0e01 \u0e1f\u0e23'],2:['\u0e01\u0e32 \u0e01\u0e32 \u0e14\u0e35 \u0e14\u0e35','\u0e1b\u0e25\u0e32 \u0e1b\u0e25\u0e32','\u0e1a\u0e49\u0e32\u0e19 \u0e1a\u0e49\u0e32\u0e19\u0e40\u0e23\u0e32'],3:['\u0e04\u0e19 \u0e04\u0e19\u0e40\u0e01\u0e48\u0e07 \u0e40\u0e14\u0e47\u0e01','\u0e40\u0e14\u0e47\u0e01\u0e14\u0e35 \u0e04\u0e19\u0e14\u0e35','\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d \u0e1a\u0e19\u0e42\u0e15\u0e4a\u0e30'],4:['\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19','\u0e04\u0e38\u0e13\u0e04\u0e23\u0e39','\u0e42\u0e23\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19'],5:['\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1d\u0e36\u0e01\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22','\u0e09\u0e31\u0e19\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08\u0e1d\u0e36\u0e01\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e38\u0e01\u0e27\u0e31\u0e19','\u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01\u0e1d\u0e19\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e14\u0e49\u0e14\u0e35\u0e02\u0e36\u0e49\u0e19']};\nconst titles={1:'Level 1 \u00b7 \u0e41\u0e16\u0e27\u0e40\u0e2b\u0e22\u0e49\u0e32',2:'Level 2 \u00b7 \u0e41\u0e16\u0e27\u0e1a\u0e19',3:'Level 3 \u00b7 \u0e41\u0e16\u0e27\u0e25\u0e48\u0e32\u0e07',4:'Level 4 \u00b7 \u0e04\u0e33\u0e28\u0e31\u0e1e\u0e17\u0e4c',5:'Level 5 \u00b7 \u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04'};\nfunction q(req){return new Promise((res,rej)=>{req.onsuccess=()=>res(req.result);req.onerror=()=>rej(req.error)})}function store(n,m='readonly'){return db.transaction(n,m).objectStore(n)}async function all(n){return q(store(n).getAll())}\nfunction openDB(){return new Promise((res,rej)=>{const r=indexedDB.open(DB_NAME,DB_VERSION);r.onupgradeneeded=e=>{const d=e.target.result;if(!d.objectStoreNames.contains('students'))d.createObjectStore('students',{keyPath:'id'});if(!d.objectStoreNames.contains('assessments'))d.createObjectStore('assessments',{keyPath:'studentId'});if(!d.objectStoreNames.contains('sessions')){const s=d.createObjectStore('sessions',{keyPath:'id',autoIncrement:true});s.createIndex('studentId','studentId');s.createIndex('createdAt','createdAt')}if(!d.objectStoreNames.contains('settings'))d.createObjectStore('settings',{keyPath:'key'})};r.onsuccess=e=>{db=e.target.result;document.getElementById('dbstate').textContent='\u25cf \u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19';res(db)};r.onerror=()=>rej(r.error)})}\nasync function seed(force=false){const st=store('students','readwrite'),as=store('assessments','readwrite');for(const s of STUDENTS){st.put(s);as.put(s)}await q(st.transaction);await q(as.transaction);const settings=store('settings','readwrite');settings.put({key:'seeded',value:true,at:Date.now()});await q(settings.transaction);if(force)showToast('\u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 63 \u0e04\u0e19\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22');await refreshAll()}\nasync function seedPractices(){const ss=store('sessions','readwrite');for(const p of PRACTICES){ss.add({studentId:p.studentId,level:p.level,text:p.text,createdAt:Date.parse(p.date)||Date.now(),accuracy:p.accuracy,wpm:p.wpm,errors:p.wrong,correct:p.correct,durationSec:p.duration,source:'seed'})}await q(ss.transaction)}\nasync function bootstrap(){const st=await all('students');if(st.length===0){await seed(false);await seedPractices()}else{const as=await all('assessments');if(as.length<STUDENTS.length)await seed(false)}await refreshAll()}\nfunction avg(a,k){const v=a.map(x=>+x[k]).filter(Number.isFinite);return v.length?v.reduce((x,y)=>x+y,0)\/v.length:0}\nfunction filteredStudents(){let a=window._students||STUDENTS;const c=document.getElementById('dclass').value,n=document.getElementById('dno').value,s=document.getElementById('dstatus').value;if(c!=='all')a=a.filter(x=>x.classroom===c);if(n)a=a.filter(x=>x.number===+n);if(s==='both')a=a.filter(x=>x.both);if(s==='acc')a=a.filter(x=>x.accPass);if(s==='wpm')a=a.filter(x=>x.wpmPass);if(s==='need')a=a.filter(x=>!x.both);return a}\nfunction renderDash(a){document.getElementById('s1').textContent=a.length;const acc=a.filter(x=>x.accPass).length,wpm=a.filter(x=>x.wpmPass).length,both=a.filter(x=>x.both).length;document.getElementById('s2').textContent=(acc\/a.length*100||0).toFixed(2)+'%';document.getElementById('s2sub').textContent=acc+' \u0e04\u0e19';document.getElementById('s3').textContent=(wpm\/a.length*100||0).toFixed(2)+'%';document.getElementById('s3sub').textContent=wpm+' \u0e04\u0e19';document.getElementById('s4').textContent=(both\/a.length*100||0).toFixed(2)+'%';document.getElementById('s4sub').textContent=both+' \u0e04\u0e19';document.getElementById('m1').textContent=avg(a,'preAcc').toFixed(2)+'%';document.getElementById('m2').textContent=avg(a,'postAcc').toFixed(2)+'%';document.getElementById('m3').textContent='+'+avg(a,'accInc').toFixed(2);document.getElementById('m4').textContent=avg(a,'preWpm').toFixed(2);document.getElementById('m5').textContent=avg(a,'postWpm').toFixed(2);\nconst lv={};a.forEach(x=>lv[x.level]=(lv[x.level]||0)+1);document.getElementById('levelSummary').innerHTML=Object.entries(lv).map(([k,v])=>`<p><b>${k}<\/b> <span class=\"muted\">${v} \u0e04\u0e19 (${(v\/a.length*100).toFixed(1)}%)<\/span><\/p>`).join('');\ndocument.getElementById('tbody').innerHTML=a.map(x=>`<tr><td>\u0e1b.${x.classroom}<\/td><td>${x.number}<\/td><td>${x.name}<\/td><td>${x.preAcc.toFixed(1)}%<\/td><td>${x.postAcc.toFixed(1)}%<\/td><td>+${x.accInc.toFixed(1)}<\/td><td>${x.preWpm.toFixed(1)}<\/td><td>${x.postWpm.toFixed(1)}<\/td><td>+${x.wpmInc.toFixed(1)}<\/td><td>${x.g.toFixed(1)}%<\/td><td>${x.both?'<span class=\"badge ok\">\u0e1a\u0e23\u0e23\u0e25\u0e38 2 \u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14<\/span>':x.accPass?'<span class=\"badge ok\">\u0e1c\u0e48\u0e32\u0e19 Accuracy<\/span>':x.wpmPass?'<span class=\"badge warn\">\u0e1c\u0e48\u0e32\u0e19 WPM<\/span>':'<span class=\"badge bad\">\u0e15\u0e49\u0e2d\u0e07\u0e1e\u0e31\u0e12\u0e19\u0e32<\/span>'}<\/td><td><button class=\"btn light\" onclick=\"openProfile('${x.id}')\">\u0e14\u0e39\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c<\/button><\/td><\/tr>`).join('');renderBarChart('dashChart',a.map(x=>({label:`${x.classroom}-${x.number}`,pre:x.preAcc,post:x.postAcc})).slice(0,20));}\nfunction renderBarChart(id,data){const el=document.getElementById(id);if(!data.length){el.innerHTML='';return}const w=900,h=280,p=42,max=100,bw=Math.max(7,Math.min(18,(w-p*2)\/(data.length*2.8)));let svg=`<svg viewBox=\"0 0 ${w} ${h}\" role=\"img\"><line x1=\"${p}\" y1=\"${h-p}\" x2=\"${w-p}\" y2=\"${h-p}\" stroke=\"#fdba74\"\/>`;[0,25,50,75,100].forEach(v=>{const y=h-p-(v\/max)*(h-p-20);svg+=`<line x1=\"${p}\" y1=\"${y}\" x2=\"${w-p}\" y2=\"${y}\" stroke=\"#ffedd5\"\/><text x=\"${p-8}\" y=\"${y+4}\" text-anchor=\"end\" font-size=\"11\" fill=\"#66788a\">${v}<\/text>`});data.forEach((d,i)=>{const x=p+i*((w-p*2)\/data.length)+8;const bh1=(d.pre\/max)*(h-p-20),bh2=(d.post\/max)*(h-p-20);svg+=`<rect x=\"${x}\" y=\"${h-p-bh1}\" width=\"${bw}\" height=\"${bh1}\" rx=\"4\" fill=\"#fdba74\"\/><rect x=\"${x+bw+3}\" y=\"${h-p-bh2}\" width=\"${bw}\" height=\"${bh2}\" rx=\"4\" fill=\"#f97316\"\/><text x=\"${x+bw}\" y=\"${h-18}\" text-anchor=\"middle\" font-size=\"8\" fill=\"#66788a\">${d.label}<\/text>`});svg+='<\/svg>';el.innerHTML=svg}\nasync function refreshAll(){window._students=await all('assessments');if(window._students.length===0){window._students=STUDENTS;await seed(false);return}renderDash(filteredStudents());renderPA();renderProfileOptions();await checkDB();await showSessions()}\nfunction renderProfileOptions(){const c=document.getElementById('pclass').value,s=document.getElementById('pstudent');const a=(window._students||[]).filter(x=>x.classroom===c);s.innerHTML=a.map(x=>`<option value=\"${x.id}\">${x.number} \u2014 ${x.name}<\/option>`).join('');renderProfile(s.value)}\nfunction openProfile(id){document.querySelector('[data-page=\"profile\"]').click();const x=(window._students||[]).find(y=>y.id===id);document.getElementById('pclass').value=x.classroom;renderProfileOptions();document.getElementById('pstudent').value=id;renderProfile(id)}\nasync function renderProfile(id){if(!id)return;const x=(window._students||[]).find(y=>y.id===id);if(!x)return;const sessions=(await all('sessions')).filter(s=>s.studentId===id).sort((a,b)=>a.createdAt-b.createdAt);document.getElementById('profileContent').innerHTML=`<div class=\"card\"><div class=\"profile-head\"><div><div class=\"profile-name\">${x.name}<\/div><div class=\"muted\">\u0e0a\u0e31\u0e49\u0e19 \u0e1b.${x.classroom} \u00b7 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 ${x.number} \u00b7 \u0e23\u0e2b\u0e31\u0e2a ${x.id}<\/div><div style=\"margin-top:8px\">${x.both?'<span class=\"badge ok\">\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e17\u0e31\u0e49\u0e07 2 \u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14<\/span>':x.accPass?'<span class=\"badge ok\">\u0e1c\u0e48\u0e32\u0e19 Accuracy<\/span>':x.wpmPass?'<span class=\"badge warn\">WPM \u0e40\u0e1e\u0e34\u0e48\u0e21<\/span>':'<span class=\"badge bad\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e2b\u0e25\u0e31\u0e01<\/span>'}<\/div><\/div><div class=\"pill\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e21\u0e21\u0e38\u0e15\u0e34<\/div><\/div><div class=\"metric-row\" style=\"margin-top:15px\"><div class=\"metric\"><small>Pre Accuracy<\/small><b>${x.preAcc.toFixed(1)}%<\/b><\/div><div class=\"metric\"><small>Post Accuracy<\/small><b>${x.postAcc.toFixed(1)}%<\/b><\/div><div class=\"metric\"><small>Accuracy \u0e40\u0e1e\u0e34\u0e48\u0e21<\/small><b>+${x.accInc.toFixed(1)}<\/b><\/div><div class=\"metric\"><small>Pre WPM<\/small><b>${x.preWpm.toFixed(1)}<\/b><\/div><div class=\"metric\"><small>Post WPM<\/small><b>${x.postWpm.toFixed(1)}<\/b><\/div><\/div><div class=\"grid g2\" style=\"margin-top:14px\"><div class=\"card\"><div class=\"section-title\"><h3>\u0e01\u0e23\u0e32\u0e1f\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e01\u0e32\u0e23<\/h3><span class=\"muted\">Pre \u2192 \u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01 \u2192 Post<\/span><\/div><div class=\"chartbox\" id=\"profileChart\"><\/div><div class=\"legend\"><span><i class=\"dot\" style=\"background:#f97316\"><\/i>Accuracy<\/span><span><i class=\"dot\" style=\"background:#16a34a\"><\/i>WPM<\/span><\/div><\/div><div class=\"card\"><h3>\u0e2a\u0e23\u0e38\u0e1b\u0e04\u0e30\u0e41\u0e19\u0e19\u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e01\u0e49\u0e32\u0e27\u0e2b\u0e19\u0e49\u0e32<\/h3><p>Accuracy \u0e40\u0e1e\u0e34\u0e48\u0e21 <b>+${x.accInc.toFixed(1)} \u0e08\u0e38\u0e14<\/b><\/p><p>WPM \u0e40\u0e1e\u0e34\u0e48\u0e21 <b>+${x.wpmInc.toFixed(1)}<\/b> (${x.wpmPct.toFixed(1)}%)<\/p><p>\u0e04\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e01\u0e49\u0e32\u0e27\u0e2b\u0e19\u0e49\u0e32 Accuracy (g%) <b>${x.g.toFixed(1)}%<\/b><\/p><p>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e23\u0e27\u0e21\u0e20\u0e32\u0e22\u0e43\u0e19 <b>${x.totalScore.toFixed(0)}\/100<\/b> \u00b7 ${x.level}<\/p><hr><p>Accuracy \u226570%: ${x.accPass?'<span class=\"badge ok\">\u0e1c\u0e48\u0e32\u0e19<\/span>':'<span class=\"badge bad\">\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19<\/span>'}<\/p><p>WPM \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01 Pre-test: ${x.wpmPass?'<span class=\"badge ok\">\u0e1c\u0e48\u0e32\u0e19<\/span>':'<span class=\"badge bad\">\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19<\/span>'}<\/p><\/div><\/div><div class=\"card\" style=\"margin-top:14px\"><h3>\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01<\/h3><div class=\"scroll\"><table><thead><tr><th>\u0e04\u0e23\u0e31\u0e49\u0e07<\/th><th>\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48<\/th><th>Level<\/th><th>Accuracy<\/th><th>WPM<\/th><th>\u0e1c\u0e34\u0e14<\/th><\/tr><\/thead><tbody>${sessions.map((s,i)=>`<tr><td>${i+1}<\/td><td>${new Date(s.createdAt).toLocaleDateString('th-TH')}<\/td><td>${s.level}<\/td><td>${s.accuracy.toFixed(1)}%<\/td><td>${s.wpm.toFixed(1)}<\/td><td>${s.errors}<\/td><\/tr>`).join('')||'<tr><td colspan=\"6\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e1d\u0e36\u0e01<\/td><\/tr>'}<\/tbody><\/table><\/div><\/div><\/div>`;renderProfileChart('profileChart',x,sessions)}\nfunction renderProfileChart(id,x,sessions){const el=document.getElementById(id),w=900,h=280,p=48;const acc=[{l:'Pre',v:x.preAcc},{l:'\u0e1d\u0e36\u0e011',v:sessions[0]?.accuracy||x.preAcc},{l:'\u0e1d\u0e36\u0e012',v:sessions[1]?.accuracy||x.preAcc},{l:'\u0e1d\u0e36\u0e013',v:sessions[2]?.accuracy||x.preAcc},{l:'Post',v:x.postAcc}];const wpm=[{l:'Pre',v:x.preWpm},{l:'\u0e1d\u0e36\u0e011',v:sessions[0]?.wpm||x.preWpm},{l:'\u0e1d\u0e36\u0e012',v:sessions[1]?.wpm||x.preWpm},{l:'\u0e1d\u0e36\u0e013',v:sessions[2]?.wpm||x.preWpm},{l:'Post',v:x.postWpm}];const max=Math.max(100,...acc.map(a=>a.v));const minW=0,maxW=Math.max(15,...wpm.map(a=>a.v));const xstep=(w-p*2)\/(acc.length-1);let svg=`<svg viewBox=\"0 0 ${w} ${h}\">`;[0,25,50,75,100].forEach(v=>{const y=h-p-(v\/100)*(h-p-20);svg+=`<line x1=\"${p}\" y1=\"${y}\" x2=\"${w-p}\" y2=\"${y}\" stroke=\"#ffedd5\"\/><text x=\"${p-8}\" y=\"${y+4}\" text-anchor=\"end\" font-size=\"11\" fill=\"#66788a\">${v}%<\/text>`});const ptsA=acc.map((d,i)=>`${p+i*xstep},${h-p-(d.v\/100)*(h-p-20)}`).join(' ');const ptsW=wpm.map((d,i)=>`${p+i*xstep},${h-p-(d.v\/maxW)*(h-p-20)}`).join(' ');svg+=`<polyline points=\"${ptsA}\" fill=\"none\" stroke=\"#f97316\" stroke-width=\"4\"\/><polyline points=\"${ptsW}\" fill=\"none\" stroke=\"#f59e0b\" stroke-width=\"4\"\/>`;acc.forEach((d,i)=>{const xx=p+i*xstep,yy=h-p-(d.v\/100)*(h-p-20);svg+=`<circle cx=\"${xx}\" cy=\"${yy}\" r=\"5\" fill=\"#f97316\"\/><text x=\"${xx}\" y=\"${yy-9}\" text-anchor=\"middle\" font-size=\"10\" fill=\"#f97316\">${d.v.toFixed(1)}<\/text><text x=\"${xx}\" y=\"${h-14}\" text-anchor=\"middle\" font-size=\"11\" fill=\"#66788a\">${d.l}<\/text>`});wpm.forEach((d,i)=>{const xx=p+i*xstep,yy=h-p-(d.v\/maxW)*(h-p-20);svg+=`<circle cx=\"${xx}\" cy=\"${yy}\" r=\"5\" fill=\"#16a34a\"\/><text x=\"${xx}\" y=\"${yy+16}\" text-anchor=\"middle\" font-size=\"9\" fill=\"#16a34a\">${d.v.toFixed(1)}<\/text>`});svg+='<\/svg>';el.innerHTML=svg}\nfunction renderPA(){const a=window._students||[];const n=a.length||1,acc=a.filter(x=>x.accPass).length,w=a.filter(x=>x.wpmPass).length,b=a.filter(x=>x.both).length;const ap=acc\/n*100,wp=w\/n*100;document.getElementById('paAccVal').textContent=`${acc}\/${n} \u0e04\u0e19 (${ap.toFixed(2)}%)`;document.getElementById('paWpmVal').textContent=`${w}\/${n} \u0e04\u0e19 (${wp.toFixed(2)}%)`;document.getElementById('paAccText').textContent=ap>=80?'\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e0a\u0e34\u0e07\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13':'\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22';document.getElementById('paWpmText').textContent=wp>=80?'\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e0a\u0e34\u0e07\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13':'\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22';document.getElementById('paAccBar').style.width=Math.min(ap,100)+'%';document.getElementById('paWpmBar').style.width=Math.min(wp,100)+'%';document.getElementById('paAcc').className='pa-item '+(ap>=80?'pass':'fail');document.getElementById('paWpm').className='pa-item '+(wp>=80?'pass':'fail');document.getElementById('paAvgAcc').textContent=`${avg(a,'preAcc').toFixed(2)}% \u2192 ${avg(a,'postAcc').toFixed(2)}%`;document.getElementById('paAvgWpm').textContent=`${avg(a,'preWpm').toFixed(2)} \u2192 ${avg(a,'postWpm').toFixed(2)}`;document.getElementById('paAvgG').textContent=avg(a,'g').toFixed(2)+'%';renderPATable()}\nfunction renderPATable(){const f=document.getElementById('paFilter').value,a=(window._students||[]).filter(x=>f==='all'||f==='both'&&x.both||f==='accOnly'&&x.accPass&&!x.wpmPass||f==='wpmOnly'&&x.wpmPass&&!x.accPass||f==='none'&&!x.accPass&&!x.wpmPass);document.getElementById('paTbody').innerHTML=a.map(x=>`<tr><td>\u0e1b.${x.classroom}<\/td><td>${x.number}<\/td><td>${x.name}<\/td><td>${x.postAcc.toFixed(1)}%<\/td><td>${x.postWpm.toFixed(1)}<\/td><td>${x.g.toFixed(1)}%<\/td><td>${x.both?'<span class=\"badge ok\">\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e17\u0e31\u0e49\u0e07 2<\/span>':x.accPass?'<span class=\"badge ok\">\u0e1c\u0e48\u0e32\u0e19 Accuracy<\/span>':x.wpmPass?'<span class=\"badge warn\">\u0e1c\u0e48\u0e32\u0e19 WPM<\/span>':'<span class=\"badge bad\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19<\/span>'}<\/td><\/tr>`).join('')}\nasync function checkDB(){const st=await all('students'),as=await all('assessments'),ss=await all('sessions');document.getElementById('checks').innerHTML=`<p>\u2705 students: <b>${st.length}<\/b> \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23<\/p><p>\u2705 assessments: <b>${as.length}<\/b> \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23<\/p><p>\u2705 sessions: <b>${ss.length}<\/b> \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23<\/p><p>\ud83d\udd39 IndexedDB: <b>${DB_NAME}<\/b><\/p><p>\ud83d\udd39 \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19: <b>v7<\/b><\/p>`}\nasync function showSessions(){const ss=(await all('sessions')).sort((a,b)=>b.createdAt-a.createdAt).slice(0,50);document.getElementById('sessions').innerHTML=ss.map(s=>`<tr><td>${new Date(s.createdAt).toLocaleString('th-TH')}<\/td><td>${s.studentId}<\/td><td>${s.level}<\/td><td>${s.accuracy.toFixed(1)}%<\/td><td>${s.wpm.toFixed(1)}<\/td><td>${s.errors}<\/td><\/tr>`).join('')||'<tr><td colspan=\"6\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/td><\/tr>'}\nfunction fillNos(){document.getElementById('rno').innerHTML='<option value=\"\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/option>'+Array.from({length:40},(_,i)=>`<option>${i+1}<\/option>`).join('')}\nfunction keyboard(){document.getElementById('keyboard').innerHTML=['\u0e1f\u0e2b\u0e01\u0e14\u0e48\u0e32\u0e2a\u0e27','\u0e07\u0e08\u0e02\u0e0a\u0e27','\u0e21 \u0e1b \u0e17 \u0e32','space'].map(r=>`<div class=\"kr\">${r==='space'?'<div class=\"key space\" data-key=\" \">SPACE<\/div>':r.split('').map(c=>`<div class=\"key\" data-key=\"${c}\">${c}<\/div>`).join('')}<\/div>`).join('')}\nfunction renderTarget(text,at){return [...text].map((c,i)=>`<span class=\"${i<at?'done':i===at?'current':''}\">${c===' '?'\u2420':c}<\/span>`).join('')}\nfunction startPractice(){const c=document.getElementById('rclass').value,n=document.getElementById('rno').value;if(!c||!n){alert('\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19\u0e41\u0e25\u0e30\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48');return}const l=+document.getElementById('rlevel').value;current={studentId:`${c}-${n}`,level:l,text:levels[l][Math.floor(Math.random()*levels[l].length)]};idx=0;correct=0;errors=0;startAt=Date.now();clearInterval(timer);timer=setInterval(()=>{const sec=(Date.now()-startAt)\/1000;document.getElementById('rtime').textContent=sec.toFixed(1);document.getElementById('rwpm').textContent=((idx\/5)\/(sec\/60)||0).toFixed(1)},100);document.getElementById('target').innerHTML=renderTarget(current.text,idx);document.getElementById('rtitle').textContent=titles[l];document.getElementById('rmsg').textContent='\u0e40\u0e23\u0e34\u0e48\u0e21\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22';const x=(window._students||[]).find(s=>s.id===current.studentId);document.getElementById('studentInfo').innerHTML=x?`<b>${x.name}<\/b><br>\u0e1b.${x.classroom} \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 ${x.number}<br>Post Accuracy ${x.postAcc.toFixed(1)}% \u00b7 Post WPM ${x.postWpm.toFixed(1)}`:''}\nasync function finishPractice(){clearInterval(timer);const sec=(Date.now()-startAt)\/1000,acc=correct\/(correct+errors||1)*100,wpm=(current.text.length\/5)\/(sec\/60);await q(store('sessions','readwrite').add({studentId:current.studentId,level:current.level,text:current.text,createdAt:Date.now(),accuracy:acc,wpm,errors,correct,durationSec:sec,source:'practice'}));document.getElementById('macc').textContent=acc.toFixed(1)+'%';document.getElementById('mtext').textContent=`\u0e40\u0e27\u0e25\u0e32 ${sec.toFixed(1)} \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u00b7 WPM ${wpm.toFixed(1)} \u00b7 \u0e1c\u0e34\u0e14 ${errors} \u0e04\u0e23\u0e31\u0e49\u0e07`;document.getElementById('modal').classList.add('show');await showSessions()}\nwindow.addEventListener('keydown',async e=>{if(!current||document.getElementById('modal').classList.contains('show'))return;if(e.ctrlKey||e.altKey||e.metaKey)return;e.preventDefault();const want=current.text[idx];const key=[...document.querySelectorAll('.key')].find(k=>k.dataset.key===e.key);document.querySelectorAll('.key').forEach(k=>k.classList.remove('wrong','correct'));if(e.key===want){correct++;if(key)key.classList.add('correct');idx++;document.getElementById('target').innerHTML=renderTarget(current.text,idx)}else{errors++;if(key)key.classList.add('wrong');document.getElementById('rmsg').textContent=`\u0e01\u0e14\u0e1c\u0e34\u0e14: \u0e04\u0e27\u0e23\u0e40\u0e1b\u0e47\u0e19 \u201c${want===' '?'\u0e40\u0e27\u0e49\u0e19\u0e27\u0e23\u0e23\u0e04':want}\u201d`}const total=correct+errors;document.getElementById('rcorrect').textContent=correct;document.getElementById('rwrong').textContent=errors;document.getElementById('racc').textContent=(correct\/(total||1)*100).toFixed(1)+'%';if(idx>=current.text.length)await finishPractice()});\ndocument.querySelectorAll('.nav button').forEach(b=>b.onclick=()=>{document.querySelectorAll('.nav button').forEach(x=>x.classList.remove('active'));b.classList.add('active');document.querySelectorAll('.page').forEach(p=>p.classList.remove('active'));document.getElementById(b.dataset.page).classList.add('active');if(b.dataset.page==='profile')renderProfileOptions();if(b.dataset.page==='pa')renderPA();if(b.dataset.page==='db'){checkDB();showSessions()}});\ndocument.getElementById('dclass').onchange=()=>renderDash(filteredStudents());document.getElementById('dno').oninput=()=>renderDash(filteredStudents());document.getElementById('dstatus').onchange=()=>renderDash(filteredStudents());document.getElementById('refresh').onclick=refreshAll;document.getElementById('pclass').onchange=renderProfileOptions;document.getElementById('pstudent').onchange=e=>renderProfile(e.target.value);document.getElementById('paFilter').onchange=renderPATable;document.getElementById('rclass').onchange=fillNos;document.getElementById('start').onclick=startPractice;document.getElementById('close').onclick=()=>document.getElementById('modal').classList.remove('show');document.getElementById('seedBtn').onclick=()=>seed(true);document.getElementById('clearBtn').onclick=async()=>{if(confirm('\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 students, assessments \u0e41\u0e25\u0e30 sessions \u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?')){indexedDB.deleteDatabase(DB_NAME);location.reload()}};document.getElementById('export').onclick=async()=>{const payload={version:'v7',exportedAt:new Date().toISOString(),students:await all('students'),assessments:await all('assessments'),sessions:await all('sessions')};const a=document.createElement('a');a.href=URL.createObjectURL(new Blob([JSON.stringify(payload,null,2)],{type:'application\/json'}));a.download='ThaiTypingAI_v7_backup.json';a.click();URL.revokeObjectURL(a.href)};document.getElementById('print').onclick=()=>window.print();\nfunction showToast(t){const e=document.getElementById('toast');e.textContent=t;e.classList.add('show');setTimeout(()=>e.classList.remove('show'),2200)}\n(async()=>{await openDB();fillNos();keyboard();await bootstrap()})();\n<\/script><\/body><\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Thai Typing AI Interactive v7 \u2014 Orange Theme \u2014 PA Dashboard \u2328 Thai Typing AI Interactive v7Dashboard \u0e04\u0e23\u0e39 \u00b7 \u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3755","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3755"}],"version-history":[{"count":2,"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3755\/revisions"}],"predecessor-version":[{"id":3757,"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3755\/revisions\/3757"}],"wp:attachment":[{"href":"https:\/\/www.somseaw.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}