{"id":3955,"date":"2026-06-14T23:13:15","date_gmt":"2026-06-14T23:13:15","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-4-test-3-rw\/"},"modified":"2026-07-05T02:44:12","modified_gmt":"2026-07-05T02:44:12","slug":"cambridge-ket-4-test-3-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-4-test-3-rw\/","title":{"rendered":"KET 4 \u2014 Test 3 Reading &#038; Writing"},"content":{"rendered":"\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400%3B500%3B600%3B700%3B800&family=Fraunces:opsz,wght@9..144,700&display=swap');\n\n\/* escape WP wrapper *\/\n.entry-content,.wp-block-post-content,.is-layout-constrained{max-width:none !important;width:auto !important;margin-left:0 !important;margin-right:0 !important;padding-left:0 !important;padding-right:0 !important;}\n.wp-block-post-title{display:none !important;}\n\n:root{\n  --accent-1:#F97316;\n  --accent-2:#F43F5E;\n  --gold:#F9C74F;\n  --green:#10B981;\n  --red:#EF4444;\n  --light-1:#FFF7ED;\n  --light-2:#FFFBF5;\n  --white:#FFFFFF;\n  --text:#0F172A;\n  --muted:#475569;\n  --subtle:#64748B;\n  --border:#E2E8F0;\n  --dark-1:#1B0F02;\n  --dark-2:#2D1A06;\n  --r-10:10px; --r-16:16px; --r-22:22px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06);\n  --sh-lg:0 12px 40px rgba(0,0,0,.12);\n}\n*{margin:0;padding:0;box-sizing:border-box}\nhtml{scroll-behavior:smooth}\nbody{\n  font-family:'Plus Jakarta Sans',system-ui,sans-serif !important;\n  color:var(--text);\n  background:var(--light-2);\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n}\n.serif{font-family:'Fraunces',Georgia,serif !important;font-weight:700;letter-spacing:-.01em}\n.wrap{max-width:1080px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit !important;cursor:pointer;border:none;background:none}\n\n\/* HEADER (same pattern as cambridge index) *\/\n.header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .28s ease,box-shadow .28s ease;border-bottom:1px solid transparent;}\n.header.solid{background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgba(15,23,42,.02);}\n.header-inner{display:flex;align-items:center;gap:28px;height:72px;max-width:1200px;margin:0 auto;padding:0 24px}\n.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}\n.brand img{width:40px;height:40px;border-radius:11px;object-fit:cover;box-shadow:var(--sh-card)}\n.brand-name{font-weight:800;font-size:18px;letter-spacing:-.02em;color:#fff;transition:color .28s ease}\n.header.solid .brand-name{color:var(--text)}\n.nav{display:flex;align-items:center;gap:4px;margin-left:8px}\n.nav a{position:relative;padding:9px 13px;font-size:14.5px;font-weight:600;color:rgba(255,255,255,.82);border-radius:var(--r-10);transition:color .16s ease,background .16s ease;}\n.nav a:hover{color:#fff;background:rgba(255,255,255,.08)}\n.header.solid .nav a{color:var(--muted)}\n.header.solid .nav a:hover{color:var(--text);background:var(--light-1)}\n.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}\n.btn-back{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;font-weight:700;font-size:14px;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.22);transition:background .16s ease}\n.btn-back:hover{background:rgba(255,255,255,.22)}\n.header.solid .btn-back{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.hamburger{display:none;width:40px;height:40px;border-radius:50%;color:#fff;align-items:center;justify-content:center}\n.header.solid .hamburger{color:var(--text)}\n\n\/* HERO *\/\n.hero{\n  position:relative;min-height:380px;padding:120px 0 60px;\n  background:linear-gradient(135deg,#FB923C 0%,#F43F5E 55%,#7C2D12 100%);\n  color:#fff;overflow:hidden;\n}\n.hero::before{content:\"\";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.15) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.10) 0%,transparent 50%);pointer-events:none}\n.hero .wrap{position:relative;z-index:1}\n.kicker{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;opacity:.92;margin-bottom:14px}\n.hero h1{font-size:clamp(34px,5vw,52px);line-height:1.05;margin-bottom:14px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:17px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:22px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}\n.meta-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.24);font-size:13px;font-weight:600}\n.meta-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}\n.cta-row{display:flex;gap:12px;flex-wrap:wrap}\n.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:#fff;color:var(--text);font-weight:700;font-size:15px;box-shadow:0 10px 30px rgba(0,0,0,.2);transition:transform .16s ease}\n.btn-primary:hover{transform:translateY(-2px)}\n.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-weight:700;font-size:15px;border:1px solid rgba(255,255,255,.32);transition:background .16s ease}\n.btn-ghost:hover{background:rgba(255,255,255,.22)}\n\n\/* SCORE BAR *\/\n.score-bar{\n  position:sticky;top:72px;z-index:50;\n  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);\n  border-bottom:1px solid var(--border);\n  padding:14px 0;\n}\n.sb-inner{display:flex;align-items:center;gap:16px;flex-wrap:wrap}\n.sb-prog{flex:1;min-width:200px}\n.sb-prog-bar{height:8px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.sb-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.sb-prog-label{font-size:12px;color:var(--muted);margin-top:5px;font-weight:600}\n.sb-score{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px;color:var(--text)}\n.sb-score b{font-size:18px;color:var(--accent-1)}\n.btn-submit{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:14px;box-shadow:0 6px 18px rgba(249,115,22,.32);transition:transform .15s ease,opacity .15s ease}\n.btn-submit:hover{transform:translateY(-1px)}\n.btn-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}\n.btn-reset{padding:10px 16px;border-radius:999px;background:#fff;color:var(--muted);font-weight:600;font-size:13px;border:1px solid var(--border);transition:background .15s ease}\n.btn-reset:hover{background:var(--light-1);color:var(--text)}\n\n\/* PARTS *\/\n.part-section{padding:48px 0;border-bottom:1px solid var(--border)}\n.part-section:nth-of-type(even){background:#fff}\n.part-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:24px}\n.part-num{\n  flex-shrink:0;width:60px;height:60px;border-radius:18px;\n  background:linear-gradient(135deg,var(--accent-1),var(--accent-2));\n  color:#fff;display:grid;place-items:center;\n  font-family:'Fraunces',serif !important;font-weight:700;font-size:26px;\n  box-shadow:0 8px 22px rgba(249,115,22,.3);\n}\n.part-head-text h2{font-size:26px;line-height:1.15;margin-bottom:6px}\n.part-head-text .qrange{display:inline-block;font-size:12.5px;font-weight:700;color:var(--accent-1);background:var(--light-1);padding:4px 10px;border-radius:999px;letter-spacing:.04em;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:15px;line-height:1.55;max-width:740px}\n\n\/* PART 1 &#8212; notice match *\/\n.notices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin:20px 0 28px}\n.notice{\n  background:#fff;border:2px solid var(--border);border-radius:14px;padding:18px 14px;text-align:center;\n  font-weight:700;letter-spacing:.02em;color:var(--text);min-height:88px;display:grid;place-items:center;\n  font-size:14.5px;line-height:1.35;\n  box-shadow:0 1px 3px rgba(0,0,0,.04);\n}\n.notice-letter{position:absolute;top:6px;left:8px;font-size:11px;font-weight:800;color:var(--accent-1);background:var(--light-1);width:22px;height:22px;border-radius:50%;display:grid;place-items:center;}\n.notice{position:relative}\n\n\/* questions list *\/\n.q-list{display:flex;flex-direction:column;gap:14px;margin-top:8px}\n.q-item{\n  background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 20px;\n  display:flex;flex-direction:column;gap:12px;transition:border-color .2s ease,box-shadow .2s ease;\n}\n.q-item.correct{border-color:var(--green);box-shadow:0 0 0 3px rgba(16,185,129,.12)}\n.q-item.wrong{border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.12)}\n.q-num{font-weight:800;color:var(--accent-1);font-size:14px;min-width:30px}\n.q-text{flex:1;font-size:15.5px;line-height:1.55;color:var(--text);display:flex;gap:10px;align-items:flex-start}\n.q-text b.qn{color:var(--accent-1);font-weight:800}\n.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.opt{\n  display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:10px;\n  background:#F8FAFF;border:1.5px solid var(--border);font-weight:600;font-size:14px;color:var(--text);\n  cursor:pointer;transition:all .15s ease;user-select:none;\n}\n.opt:hover{background:var(--light-1);border-color:var(--accent-1)}\n.opt input{display:none}\n.opt .opt-letter{font-weight:800;color:var(--accent-1);background:#fff;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12.5px;border:1px solid var(--border)}\n.opt.selected{background:linear-gradient(100deg,rgba(249,115,22,.12),rgba(244,63,94,.12));border-color:var(--accent-1)}\n.opt.selected .opt-letter{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.opt.correct-opt{background:rgba(16,185,129,.12) !important;border-color:var(--green) !important}\n.opt.correct-opt .opt-letter{background:var(--green) !important;color:#fff !important;border-color:transparent !important}\n.opt.wrong-opt{background:rgba(239,68,68,.10) !important;border-color:var(--red) !important}\n.opt.wrong-opt .opt-letter{background:var(--red) !important;color:#fff !important;border-color:transparent !important}\n.feedback{font-size:13px;font-weight:600;display:none;padding:8px 12px;border-radius:8px;margin-top:4px}\n.q-item.answered .feedback{display:block}\n.q-item.correct .feedback{background:rgba(16,185,129,.12);color:#065F46}\n.q-item.wrong .feedback{background:rgba(239,68,68,.10);color:#991B1B}\n\n\/* PART 2 \/ cloze with input *\/\n.input-blank{\n  display:inline-block;min-width:90px;border:none;border-bottom:2px dashed var(--accent-1);\n  background:transparent;font-family:inherit !important;font-size:15.5px;color:var(--text);font-weight:600;\n  padding:2px 6px;margin:0 4px;text-align:center;outline:none;\n}\n.input-blank:focus{border-bottom-style:solid;background:var(--light-1)}\n.input-blank.correct{border-bottom-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.input-blank.wrong{border-bottom-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n\n\/* PART 4 &#8212; passage *\/\n.passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;\n  padding:24px 26px;margin:8px 0 20px;\n  font-size:15.5px;line-height:1.7;color:var(--text);\n  box-shadow:var(--sh-card);\n  position:relative;\n}\n.passage h3{font-family:'Fraunces',serif !important;font-size:22px;text-align:center;margin-bottom:14px;letter-spacing:.02em;color:var(--accent-2)}\n.passage p{margin-bottom:10px}\n\n\/* PART 5 &#8212; cloze passage *\/\n.cloze-passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px 26px;\n  font-size:16px;line-height:1.8;color:var(--text);box-shadow:var(--sh-card);margin-bottom:24px;\n}\n.cloze-passage h3{font-family:'Fraunces',serif !important;font-size:24px;text-align:center;color:var(--accent-2);margin-bottom:14px}\n\n\/* PART 6 &#8212; single word with first letter *\/\n.word-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}\n.first-letter{font-weight:700;color:var(--accent-1);font-size:18px;font-family:'Fraunces',serif}\n.dashes{color:var(--muted);letter-spacing:6px;font-weight:600}\n\n\/* PART 8 &#8212; form *\/\n.form-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px;max-width:560px}\n.form-card h4{font-family:'Fraunces',serif !important;font-size:20px;text-align:center;color:var(--accent-2);margin-bottom:6px;border-bottom:2px solid var(--accent-1);padding-bottom:8px;display:inline-block;width:100%}\n.form-row{display:flex;gap:12px;align-items:center;margin-top:14px;flex-wrap:wrap}\n.form-row label{flex:0 0 200px;font-weight:600;color:var(--text);font-size:14.5px}\n.form-row .input-blank{flex:1;min-width:200px;text-align:left;font-size:14.5px}\n\n\/* PART 9 &#8212; writing *\/\n.writing-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px}\n.prompt-box{background:var(--light-1);border-left:4px solid var(--accent-1);padding:14px 18px;border-radius:0 12px 12px 0;margin-bottom:18px;font-size:15px;line-height:1.6}\n.prompt-box ul{margin:10px 0 4px 22px}\n.prompt-box li{margin-bottom:4px}\n.writing-area{width:100%;min-height:160px;padding:14px;font-family:inherit !important;font-size:15px;line-height:1.55;border:2px solid var(--border);border-radius:12px;background:#FAFBFC;color:var(--text);outline:none;resize:vertical;transition:border-color .2s ease}\n.writing-area:focus{border-color:var(--accent-1);background:#fff}\n.wc-counter{display:flex;justify-content:space-between;margin-top:8px;font-size:13px;color:var(--muted);font-weight:600}\n.wc-counter.ok{color:var(--green)}\n.wc-counter.over{color:var(--red)}\n.sample-toggle{margin-top:14px;display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:13.5px;border:none;cursor:pointer}\n.sample-box{display:none;margin-top:14px;padding:14px 18px;background:#FEF3C7;border-left:4px solid var(--gold);border-radius:0 12px 12px 0;font-size:14.5px;line-height:1.6}\n.sample-box.show{display:block}\n.sample-box h5{font-family:'Fraunces',serif !important;font-size:16px;margin-bottom:8px;color:#92400E}\n\n\/* SHOW ANSWER PER-Q BUTTONS *\/\n.show-ans-btn{\n  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:8px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:12px;\n  border:1px solid rgba(249,115,22,.30);cursor:pointer;transition:all .15s ease;\n  font-family:inherit !important;align-self:flex-start;margin-top:4px;letter-spacing:.02em;\n}\n.show-ans-btn:hover{background:rgba(249,115,22,.18);border-color:var(--accent-1)}\n.show-ans-btn[disabled]{opacity:.45;cursor:not-allowed}\n.show-ans-btn .emoji{width:14px;height:14px}\n.show-ans-btn-inline{\n  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:11.5px;\n  border:1px solid rgba(249,115,22,.28);cursor:pointer;font-family:inherit !important;\n  margin-left:4px;vertical-align:middle;transition:all .15s ease;\n}\n.show-ans-btn-inline:hover{background:rgba(249,115,22,.18)}\n.show-ans-btn-inline[disabled]{opacity:.45;cursor:not-allowed}\n\n\/* RESULTS BANNER *\/\n.results-banner{\n  display:none;margin:32px auto;padding:30px;border-radius:22px;\n  background:linear-gradient(135deg,#FB923C,#F43F5E);color:#fff;text-align:center;max-width:720px;\n  box-shadow:0 16px 50px rgba(249,115,22,.3);\n}\n.results-banner.show{display:block}\n.results-banner h3{font-size:30px;font-family:'Fraunces',serif !important;margin-bottom:10px}\n.results-banner .score-big{font-size:64px;font-weight:800;line-height:1;margin:14px 0;font-family:'Fraunces',serif}\n.results-banner p{opacity:.95;font-size:15px}\n\n\/* FOOTER *\/\n.footer{background:var(--dark-1);color:#9CA3AF;padding:36px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold);font-weight:600}\n\n\/* MOBILE *\/\n@media (max-width:820px){\n  .nav{display:none}\n  .hamburger{display:flex}\n  .hero{padding:110px 0 50px}\n  .part-head{flex-direction:column;gap:12px}\n  .part-num{width:50px;height:50px;font-size:22px}\n  .notices-grid{grid-template-columns:repeat(2,1fr)}\n  .form-row label{flex:1 1 100%}\n  .form-row .input-blank{width:100%}\n  .sb-inner{gap:10px}\n  .sb-prog{order:3;flex:1 1 100%}\n}\n\n\/* mobile drawer *\/\n.drawer{position:fixed;inset:0;background:rgba(15,23,42,.65);z-index:200;display:none;align-items:flex-start;justify-content:flex-end}\n.drawer.open{display:flex}\n.drawer-panel{width:280px;background:#fff;height:100%;padding:24px;display:flex;flex-direction:column;gap:8px}\n.drawer-panel a{padding:12px 14px;border-radius:10px;font-weight:600;color:var(--text)}\n.drawer-panel a:hover{background:var(--light-1)}\n.drawer-close{align-self:flex-end;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}\n<\/style>\n\n<!-- HEADER -->\n<header class=\"header\" id=\"hdr\">\n  <div class=\"header-inner\">\n    <a href=\"https:\/\/allenglish4u.com\" class=\"brand\">\n      <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/04\/Transparent-background-MacBook-Pro-cua-Hang.png\" alt=\"AE4U\">\n      <span class=\"brand-name\">All English 4U<\/span>\n    <\/a>\n    <nav class=\"nav\">\n      <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"active\">Cambridge<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n      <\/nav>\n    <div class=\"header-right\">\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-back\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M19 12H5M11 18l-6-6 6-6\"\/><\/svg>\n        Back\n      <\/a>\n      <button class=\"hamburger\" id=\"hamb\" aria-label=\"Menu\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M3 6h18M3 12h18M3 18h18\"\/><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"drawer\" id=\"drawer\">\n  <div class=\"drawer-panel\">\n    <button class=\"drawer-close\" id=\"drawerClose\" aria-label=\"Close\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg>\n    <\/button>\n    <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">Cambridge<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n    <\/div>\n<\/div>\n\n<!-- HERO -->\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge English &#183; Key (KET)<\/span>\n    <h1 class=\"serif\">KET 4 &#8212; Test 3<br><span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn from instant feedback.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>1 hour 10 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>9 Parts<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>55 auto-graded<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>+ Writing prompt<\/span>\n    <\/div>\n    <div class=\"cta-row\">\n      <a href=\"#part1\" class=\"btn-primary\">\n        Start Test\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n      <\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-ghost\">All Cambridge Tests<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- SCORE BAR -->\n<div class=\"score-bar\" id=\"scoreBar\">\n  <div class=\"wrap sb-inner\">\n    <div class=\"sb-score\">Score <b><span id=\"scoreNow\">0<\/span>\/55<\/b><\/div>\n    <div class=\"sb-prog\">\n      <div class=\"sb-prog-bar\"><div class=\"sb-prog-fill\" id=\"progFill\"><\/div><\/div>\n      <div class=\"sb-prog-label\"><span id=\"answeredCount\">0<\/span> of 55 answered<\/div>\n    <\/div>\n    <button class=\"btn-submit\" id=\"submitBtn\">\n      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n      Submit &amp; Grade\n    <\/button>\n    <button class=\"btn-reset\" id=\"resetBtn\">Reset<\/button>\n  <\/div>\n<\/div>\n\n<!-- ============== PART 1 ============== -->\n<section class=\"part-section\" id=\"part1\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">1<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 1&#8211;5<\/span>\n        <h2 class=\"serif\">Match the notice<\/h2>\n        <p>Which notice (A&#8211;H) says this (1&#8211;5)? For questions 1&#8211;5, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"notices-grid\">\n      <div class=\"notice\"><span class=\"notice-letter\">A<\/span><b>ROAD CLOSED<\/b><br><sub style=\"font-size:10px;font-weight:700\">BECAUSE OF TRAFFIC ACCIDENT<\/sub><\/div>\n      <div class=\"notice\" style=\"opacity:.55\"><span class=\"notice-letter\">B<\/span><b style=\"font-style:italic\">SORRY &#8211;<br>CASH ONLY<\/b><br><sub style=\"font-size:10px;color:var(--muted);font-style:italic;font-weight:600\">(example)<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">C<\/span><b>SHORT STAY CAR PARK<\/b><br><sub style=\"font-size:11px;font-weight:600\">&#163;1.50 up to 2 hours<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">D<\/span><b style=\"font-size:12px\">TWO MEALS FOR THE PRICE OF ONE WITH THIS VOUCHER<\/b><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">E<\/span><b>PARKING FOR HOTEL GUESTS ONLY<\/b><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">F<\/span>CROSSROADS CAF&#201;<br><sub style=\"font-size:11px;font-weight:600;font-style:italic\">Good, cheap food 24 hours a day<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">G<\/span><b>All meals HALF-PRICE<\/b><br><b>5&#8211;6 pm<\/b><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">H<\/span>LAST PETROL STATION<br>BEFORE MOTORWAY<\/div>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part1List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 2 ============== -->\n<section class=\"part-section\" id=\"part2\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">2<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 6&#8211;10<\/span>\n        <h2 class=\"serif\">Going shopping<\/h2>\n        <p>Read the sentences (6&#8211;10) about going shopping. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> Susan <u>wanted<\/u> to go shopping last Saturday morning. <b>(Answer: B)<\/b>\n    <\/div>\n    <div class=\"q-list\" id=\"part2List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3a ============== -->\n<section class=\"part-section\" id=\"part3a\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 11&#8211;15<\/span>\n        <h2 class=\"serif\">Complete the conversations<\/h2>\n        <p>Complete the five conversations. Choose the correct answer (A, B or C).<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> How are you? &#8212; <b>C<\/b> I&#8217;m fine.\n    <\/div>\n    <div class=\"q-list\" id=\"part3aList\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3b ============== -->\n<section class=\"part-section\" id=\"part3b\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 16&#8211;20<\/span>\n        <h2 class=\"serif\">An interview: Sally &amp; the Journalist<\/h2>\n        <p>Complete the conversation. What does Sally say to the journalist? For each blank, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;margin-bottom:18px;font-size:14.5px;line-height:1.7\">\n      <p><b>Journalist:<\/b> I&#8217;m from the <i>Daily News<\/i>. Can you tell me what happened to you in the storm last night?<\/p>\n      <p><b>Sally:<\/b> <span style=\"color:var(--accent-1);font-weight:700\">(Example: D)<\/span><\/p>\n      <p><b>Journalist:<\/b> When did the thunderstorm start?<\/p>\n      <p><b>Sally:<\/b> <select class=\"q-select\" data-qid=\"16\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Journalist:<\/b> And when do you usually go to bed?<\/p>\n      <p><b>Sally:<\/b> <select class=\"q-select\" data-qid=\"17\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Journalist:<\/b> So before you went to sleep, you heard a noise in the garden?<\/p>\n      <p><b>Sally:<\/b> <select class=\"q-select\" data-qid=\"18\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Journalist:<\/b> Were you afraid?<\/p>\n      <p><b>Sally:<\/b> <select class=\"q-select\" data-qid=\"19\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Journalist:<\/b> And how old was the tree?<\/p>\n      <p><b>Sally:<\/b> <select class=\"q-select\" data-qid=\"20\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Journalist:<\/b> Well, it&#8217;s an interesting story. Thanks for talking to me.<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;font-size:14px;line-height:1.85\">\n      <b style=\"color:var(--accent-1);display:block;margin-bottom:6px\">Choices:<\/b>\n      <div><b>A<\/b> That&#8217;s right, I did. I ran out and saw a tree fall on the house.<\/div>\n      <div><b>B<\/b> When I was tired, yes.<\/div>\n      <div><b>C<\/b> At eleven most nights.<\/div>\n      <div style=\"opacity:.5\"><b>D<\/b> If you like. What do you want to know? <i>(example)<\/i><\/div>\n      <div><b>E<\/b> That&#8217;s the sad thing. It&#8217;s been in the garden for about two hundred years and many birds lived in it.<\/div>\n      <div><b>F<\/b> I&#8217;m not sure, but it was after I went to bed.<\/div>\n      <div><b>G<\/b> I don&#8217;t know. About ten minutes.<\/div>\n      <div><b>H<\/b> I was at first, until I saw nobody was hurt.<\/div>\n    <\/div>\n\n    <div id=\"part3bFeedback\" style=\"margin-top:14px\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 4 ============== -->\n<section class=\"part-section\" id=\"part4\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">4<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 21&#8211;27<\/span>\n        <h2 class=\"serif\">Ice-fishing<\/h2>\n        <p>Read the article about ice-fishing. Are sentences 21&#8211;27 <b>&#8216;Right&#8217; (A)<\/b> or <b>&#8216;Wrong&#8217; (B)<\/b>? If there is not enough information to answer &#8216;Right&#8217; or &#8216;Wrong&#8217;, choose <b>&#8216;Doesn&#8217;t say&#8217; (C)<\/b>.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"passage\">\n      <h3>ICE-FISHING<\/h3>\n      <p>If you drive north from Toronto for three hours, you come to Lake Nipissing. In winter, the lake becomes ice, and thousands of Canadian fishermen travel there each weekend. They build little houses of wood on the ice and paint them in bright colours. Then they sit inside to catch the fish that swim under the ice.<\/p>\n      <p>Bob Marvisch has come here at this time of year for twenty-five years. &#8216;You need clothes that are light but warm: two pairs of socks and gloves, several thin sweaters and a snow suit on top. Catching the fish is easy,&#8217; he says. &#8216;First you break the ice and make a small round hole in it. Next you take a fishing line and put some bread on it. Then you put the line through the hole and into the water. You pull the line up when the fish eat the bread. They are between ten and twenty centimetres long. Some people like to eat them, but when I have caught three or four fish, I prefer to have some chocolate or other snack! Today I have caught twenty-five! It&#8217;s a great sport and you can meet some nice people here!&#8217;<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 18px;margin-bottom:18px;font-size:14px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example (0):<\/b> People can travel to Lake Nipissing by car. &#8594; <b>A (Right)<\/b>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part4List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 5 ============== -->\n<section class=\"part-section\" id=\"part5\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">5<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 28&#8211;35<\/span>\n        <h2 class=\"serif\">The History of Farming &#8212; gap fill<\/h2>\n        <p>Read the article about farming. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"cloze-passage\">\n      <h3>The History of Farming<\/h3>\n      <p>Before people started farming, they went to the forest to look <u><b style=\"color:var(--accent-1)\">for<\/b><\/u> plants or fruit they could eat. This meant that people <span data-q=\"28\" class=\"cloze-blank\">[28]<\/span> moving all the time to find food. But about 12,000 years ago, in the Middle East, people <span data-q=\"29\" class=\"cloze-blank\">[29]<\/span> to grow food. These people were the first farmers. Farming made <span data-q=\"30\" class=\"cloze-blank\">[30]<\/span> possible for people to stay in <span data-q=\"31\" class=\"cloze-blank\">[31]<\/span> place and slowly their villages got bigger.<\/p>\n      <p>Some people in the villages became free to do other work, like making clothes, <span data-q=\"32\" class=\"cloze-blank\">[32]<\/span> the farmers could grow food for everyone. Unfortunately, farming was difficult when the weather was bad and then some people did not get <span data-q=\"33\" class=\"cloze-blank\">[33]<\/span> food to eat.<\/p>\n      <p>Today, farmers <span data-q=\"34\" class=\"cloze-blank\">[34]<\/span> grow more food and it travels thousands of kilometres from where it <span data-q=\"35\" class=\"cloze-blank\">[35]<\/span> grown to our homes.<\/p>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part5List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 6 ============== -->\n<section class=\"part-section\" id=\"part6\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">6<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 36&#8211;40<\/span>\n        <h2 class=\"serif\">Holiday words &#8212; spell the word<\/h2>\n        <p>Read the descriptions (36&#8211;40) of some holiday words. The first letter is given. Type the word. <b>Example (0):<\/b> You will need to buy this to travel on a bus or an aeroplane. &#8594; <b>ticket<\/b><\/p>\n      <\/div>\n    <\/div>\n    <div class=\"q-list\" id=\"part6List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 7 ============== -->\n<section class=\"part-section\" id=\"part7\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">7<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 41&#8211;50<\/span>\n        <h2 class=\"serif\">Complete this letter<\/h2>\n        <p>Read the letter from Mark Jones to a hotel. Type <b>ONE word<\/b> for each space (41&#8211;50). (Example: <i>would<\/i>)<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"max-width:600px;margin:0 auto\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:24px 26px;font-size:14.5px;line-height:1.95;font-family:'Courier New',monospace\">\n        <p style=\"text-align:right\">23 Oak Avenue<br>Manchester<\/p>\n        <p>Dear Sir or Madam,<\/p>\n        <p>I (Example: <u>would<\/u>) like a room at your hotel <input class=\"input-blank\" data-q=\"41\" type=\"text\"> three nights from September 15th <input class=\"input-blank\" data-q=\"42\" type=\"text\"> 17th.<\/p>\n        <p>I&#8217;d like a single room <input class=\"input-blank\" data-q=\"43\" type=\"text\"> a shower. I also need <input class=\"input-blank\" data-q=\"44\" type=\"text\"> telephone in my room. Please can I <input class=\"input-blank\" data-q=\"45\" type=\"text\"> a quiet room on <input class=\"input-blank\" data-q=\"46\" type=\"text\"> ground floor?<\/p>\n        <p>I am going to drive to the hotel. Is <input class=\"input-blank\" data-q=\"47\" type=\"text\"> a hotel car park?<\/p>\n        <p>I <input class=\"input-blank\" data-q=\"48\" type=\"text\"> arrive at about 10.30 p.m. What <input class=\"input-blank\" data-q=\"49\" type=\"text\"> does the restaurant close in the evening? If possible, I would like a meal <input class=\"input-blank\" data-q=\"50\" type=\"text\"> I arrive.<\/p>\n        <p>Thank you for your help.<\/p>\n        <p>Yours faithfully,<\/p>\n        <p><i>Mark Jones<\/i><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 8 ============== -->\n<section class=\"part-section\" id=\"part8\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">8<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 51&#8211;55<\/span>\n        <h2 class=\"serif\">City College &#8212; Registration Form<\/h2>\n        <p>Read the note and the information about language classes. Fill in the information on the registration form (51&#8211;55).<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:18px\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:16px 18px;font-size:14px;line-height:1.6\">\n        <div style=\"border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:10px\"><b>To:<\/b> Anna Dahlin<\/div>\n        <p style=\"margin-bottom:8px\">Here is the information about language classes at City College. The Russian class is full and so is the German one, but there are still places in the Italian one. Please send me your registration form tomorrow.<\/p>\n        <p style=\"margin-bottom:0\"><i>Elaine Smith<\/i><br>10.06.04<\/p>\n      <\/div>\n      <div style=\"background:#fff;border:2px solid var(--text);border-radius:12px;padding:16px 18px;font-size:14px;line-height:1.9;height:fit-content\">\n        <div style=\"display:grid;grid-template-columns:auto auto auto;gap:4px 14px\">\n          <b>Monday<\/b><span>Russian<\/span><span>7 pm &#8211; 8 pm<\/span>\n          <b>Tuesday<\/b><span>Italian<\/span><span>6 pm &#8211; 8 pm<\/span>\n          <b>Thursday<\/b><span>German<\/span><span>8 pm &#8211; 9 pm<\/span>\n        <\/div>\n        <div style=\"border-top:1px solid var(--border);margin-top:8px;padding-top:8px\"><b>One-hour classes:<\/b> &#163;120<br><b>Two-hour classes:<\/b> &#163;180<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>CITY COLLEGE &#8212; Registration Form<\/h4>\n      <div class=\"form-row\"><label>Date:<\/label><span style=\"font-weight:600;color:var(--accent-2);font-style:italic\">11 June 2004<\/span><\/div>\n      <div class=\"form-row\"><label>Name of student:<\/label><input class=\"input-blank\" data-q=\"51\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Language course:<\/label><input class=\"input-blank\" data-q=\"52\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Day:<\/label><input class=\"input-blank\" data-q=\"53\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Start time:<\/label><input class=\"input-blank\" data-q=\"54\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Price:<\/label><input class=\"input-blank\" data-q=\"55\" type=\"text\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 9 &#8212; WRITING ============== -->\n<section class=\"part-section\" id=\"part9\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">9<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Question 56<\/span>\n        <h2 class=\"serif\">Writing &#8212; birthday postcard<\/h2>\n        <p>This part is <b>not auto-graded<\/b>. Write your postcard, then click <i>Show Sample Answer<\/i> to see examples with examiner marks.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"writing-card\">\n      <div class=\"prompt-box\">\n        <b>You&#8217;ve just had a birthday. Write a postcard to your American friend about your favourite birthday present.<\/b>\n        <div style=\"margin-top:8px\">Say:<\/div>\n        <ul>\n          <li><b>what<\/b> the present is<\/li>\n          <li><b>who<\/b> gave it to you<\/li>\n          <li><b>why<\/b> you like it<\/li>\n        <\/ul>\n        Write 25&#8211;35 words.\n      <\/div>\n      <textarea class=\"writing-area\" id=\"writingArea\" placeholder=\"Type your postcard here...\"><\/textarea>\n      <div class=\"wc-counter\" id=\"wcCounter\">0 words &#183; target 25&#8211;35<\/div>\n      <button class=\"sample-toggle\" id=\"sampleToggle\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n        Show Sample Answer\n      <\/button>\n      <div class=\"sample-box\" id=\"sampleBox\">\n        <h5 style=\"margin-bottom:14px\">Sample answers &#8212; with examiner marks<\/h5>\n\n        <div style=\"background:#fff;border-left:3px solid var(--green);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--green);font-size:12.5px;letter-spacing:.05em\">SAMPLE A &#8212; Mark 5\/5 (all three points, no errors)<\/b>\n          <p style=\"margin-top:6px\">Hi Jack,<\/p>\n          <p>For my birthday I got a new mountain bike. My parents gave it to me. I love it because now I can ride to school with my friends and go to the park at the weekend. Write soon! Sam<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--accent-1);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--accent-1);font-size:12.5px;letter-spacing:.05em\">SAMPLE B &#8212; Mark 4\/5 (some spelling &amp; grammar errors, but clear)<\/b>\n          <p style=\"margin-top:6px\">Hello,<\/p>\n          <p>My favourite present is a new mobile phone. My uncle give it to me for my birthday. I like it because I can call my friends and take many photo with it. See you! Dani<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--red);padding:10px 14px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--red);font-size:12.5px;letter-spacing:.05em\">SAMPLE C &#8212; Mark 3\/5 (only two of the three points)<\/b>\n          <p style=\"margin-top:6px\">Dear friend,<\/p>\n          <p>I had a great birthday. My favourite present is a guitar from my sister. We had a big cake and a party with all my family and lots of my friends came. Bye! Lea<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- RESULTS BANNER -->\n<div class=\"wrap\">\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>Your KET 4 Test 3 &#8212; Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/55<\/div>\n    <p id=\"resultsMsg\">Great effort! Scroll up to review your answers &#8212; correct ones are highlighted in green and wrong ones in red.<\/p>\n    <div style=\"margin-top:18px\"><button class=\"btn-primary\" onclick=\"window.scrollTo({top:0,behavior:'smooth'})\" style=\"background:#fff;color:var(--accent-2)\">Back to top<\/button><\/div>\n  <\/div>\n<\/div>\n\n<!-- FOOTER -->\n<footer class=\"footer\">\n  <div class=\"wrap\">\n    <p>&#169; 2026 All English 4U &#183; <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">All Cambridge Tests<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/contact\/\">Contact<\/a><\/p>\n  <\/div>\n<\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewovLyA9PT09PSBIZWFkZXIgc2Nyb2xsID09PT09CnZhciBoZHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hkcicpOwp2YXIgc2V0U29saWQ9ZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsc2V0U29saWQse3Bhc3NpdmU6dHJ1ZX0pO3NldFNvbGlkKCk7CgovLyBkcmF3ZXIKdmFyIGhhbWI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hhbWInKSxkcmF3ZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlcicpLGRDbG9zZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhd2VyQ2xvc2UnKTsKaWYoaGFtYiloYW1iLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2RyYXdlci5jbGFzc0xpc3QuYWRkKCdvcGVuJyl9KTsKaWYoZENsb3NlKWRDbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CmlmKGRyYXdlcilkcmF3ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZHJhd2VyKWRyYXdlci5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyl9KTsKCi8vID09PT09IERBVEEgPT09PT0KdmFyIFAxID0gWwogIHtuOjEsdGV4dDoiWW91IGNhbid0IGxlYXZlIHlvdXIgY2FyIGhlcmUgYWxsIGRheS4iLG9wdHM6J0FDREVGR0gnLGFuczonQyd9LAogIHtuOjIsdGV4dDonWW91IHBheSBsZXNzIHRvIGVhdCBhdCB0aGlzIHRpbWUuJyxvcHRzOidBQ0RFRkdIJyxhbnM6J0cnfSwKICB7bjozLHRleHQ6J0lmIHlvdSBhcmUgc3RheWluZyBoZXJlLCB5b3UgbWF5IGxlYXZlIHlvdXIgY2FyIGluIHRoaXMgcGxhY2UuJyxvcHRzOidBQ0RFRkdIJyxhbnM6J0UnfSwKICB7bjo0LHRleHQ6J0JyaW5nIGEgZnJpZW5kIGhlcmUgZm9yIGx1bmNoIGFuZCB5b3Ugd2lsbCBwYXkgZm9yIG9ubHkgb25lIG1lYWwuJyxvcHRzOidBQ0RFRkdIJyxhbnM6J0QnfSwKICB7bjo1LHRleHQ6J1lvdSBjYW5ub3QgZHJpdmUgaGVyZSBhdCB0aGUgbW9tZW50Licsb3B0czonQUNERUZHSCcsYW5zOidBJ30sCl07CnZhciBQMiA9IFsKICB7bjo2LHRleHQ6IkhlciBmcmllbmQgQ2Fyb2wgX19fX18gc2hlJ2QgbGlrZSB0byBnbyB0b28uIixvcHRzOltbJ0EnLCdzYWlkJ10sWydCJywndG9sZCddLFsnQycsJ2Fza2VkJ11dLGFuczonQSd9LAogIHtuOjcsdGV4dDonQXQgdGhlIHNob3BwaW5nIGNlbnRyZSB0aGV5IHdlbnQgdXAgaW4gdGhlIF9fX19fIHRvIHRoZSBzaG9wcyBvbiB0aGUgc2Vjb25kIGZsb29yLicsb3B0czpbWydBJywnc3RyZWV0J10sWydCJywnc3RhaXJzJ10sWydDJywnbGlmdCddXSxhbnM6J0MnfSwKICB7bjo4LHRleHQ6J1N1c2FuIHRyaWVkIG9uIHNvbWUgc2hvZXMgYnV0IHRoZXkgd2VyZSB0aGUgX19fX18gY29sb3VyLicsb3B0czpbWydBJywnYmFkJ10sWydCJywnd3JvbmcnXSxbJ0MnLCdkYXJrJ11dLGFuczonQid9LAogIHtuOjksdGV4dDonVGhleSBzdG9wcGVkIGluIGEgY2FmXHUwMEU5IGZvciBhIGRyaW5rIGFuZCBhIF9fX19fIG9mIGNha2UuJyxvcHRzOltbJ0EnLCdwYXJ0J10sWydCJywnbGl0dGxlJ10sWydDJywncGllY2UnXV0sYW5zOidDJ30sCiAge246MTAsdGV4dDoiVGhlIGNhZlx1MDBFOSB3YXMgX19fX18gYnV0IHRoZXkgZGlkbid0IGhhdmUgdG8gd2FpdCBhIGxvbmcgdGltZS4iLG9wdHM6W1snQScsJ2Zhc3QnXSxbJ0InLCdidXN5J10sWydDJywnbGF0ZSddXSxhbnM6J0InfSwKXTsKdmFyIFAzYSA9IFsKICB7bjoxMSx0ZXh0OidIb3cgZGlkIHlvdSBnbyB0byBNYWRyaWQ\/JyxvcHRzOltbJ0EnLCdPbiBXZWRuZXNkYXkuJ10sWydCJywnQnkgcGxhbmUuJ10sWydDJywiSXQncyBleHBlbnNpdmUuIl1dLGFuczonQid9LAogIHtuOjEyLHRleHQ6J0kgcmVhbGx5IG11c3QgZ28gbm93IScsb3B0czpbWydBJywnSG93IGxvbmcgaXMgaXQ\/J10sWydCJywiQ2FuJ3QgeW91IHN0YXk\/Il0sWydDJywnV2hhdCB0aW1lPyddXSxhbnM6J0InfSwKICB7bjoxMyx0ZXh0OidJcyBNaWtlIHN0aWxsIGRvaW5nIGhpcyBob21ld29yaz8nLG9wdHM6W1snQScsJ1llcywgaGUgZG9lcy4nXSxbJ0InLCJJdCdzIHJlYWR5LiJdLFsnQycsIkxldCdzIGFzayBoaW0uIl1dLGFuczonQyd9LAogIHtuOjE0LHRleHQ6IkkgY2FuJ3QgdW5kZXJzdGFuZCB0aGlzIGxldHRlci4iLG9wdHM6W1snQScsJ1dvdWxkIHlvdSBsaWtlIHNvbWUgaGVscD8nXSxbJ0InLCJEb24ndCB5b3Uga25vdz8iXSxbJ0MnLCdJIHN1cHBvc2UgeW91IGNhbi4nXV0sYW5zOidBJ30sCiAge246MTUsdGV4dDonQXJlIHlvdSBzdXJlIHRoZSBmaWxtIHN0YXJ0cyBhdCAxMD8nLG9wdHM6W1snQScsJ1llcywgSSBhbS4nXSxbJ0InLCJObywgSSBkaWRuJ3QuIl0sWydDJywnWWVzLCBJIGRvLiddXSxhbnM6J0EnfSwKXTsKdmFyIFAzYkFucyA9IHsxNjonRicsMTc6J0MnLDE4OidBJywxOTonSCcsMjA6J0UnfTsKdmFyIFA0ID0gWwogIHtuOjIxLHRleHQ6J0Zpc2hlcm1lbiBvbmx5IHVzZSB0aGUgaG91c2VzIG9uIExha2UgTmlwaXNzaW5nIGluIHdpbnRlci4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyMix0ZXh0OidUaGUgZmlzaGVybWVuIHNpdCBpbiBib2F0cyB0byBjYXRjaCB0aGUgZmlzaC4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0InfSwKICB7bjoyMyx0ZXh0OidCb2IgZ29lcyB0byBMYWtlIE5pcGlzc2luZyBldmVyeSB3aW50ZXIuJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidBJ30sCiAge246MjQsdGV4dDonQm9iIHdlYXJzIG9sZCBjbG90aGVzIGZvciBpY2UtZmlzaGluZy4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0MnfSwKICB7bjoyNSx0ZXh0OidUaGUgZmlzaCBhcmUgdXN1YWxseSBsb25nZXIgdGhhbiB0d2VudHkgY2VudGltZXRyZXMuJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidCJ30sCiAge246MjYsdGV4dDonV2hlbiBCb2IgaGFzIGNhdWdodCBhIGZldyBmaXNoLCBoZSBjb29rcyB0aGVtIGFuZCBlYXRzIHRoZW0uJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidCJ30sCiAge246MjcsdGV4dDonQm9iIHRoaW5rcyBpY2UtZmlzaGluZyBpcyBhIHdheSBvZiBtYWtpbmcgbmV3IGZyaWVuZHMuJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidBJ30sCl07CnZhciBQNSA9IFsKICB7bjoyOCxvcHRzOltbJ0EnLCd3YXMnXSxbJ0InLCdiZWVuJ10sWydDJywnd2VyZSddXSxhbnM6J0MnfSwKICB7bjoyOSxvcHRzOltbJ0EnLCdiZWdhbiddLFsnQicsJ2JlZ2luJ10sWydDJywnYmVndW4nXV0sYW5zOidBJ30sCiAge246MzAsb3B0czpbWydBJywndGhpcyddLFsnQicsJ2l0J10sWydDJywndGhlbSddXSxhbnM6J0InfSwKICB7bjozMSxvcHRzOltbJ0EnLCdvbmUnXSxbJ0InLCd0aGUnXSxbJ0MnLCdvdGhlciddXSxhbnM6J0EnfSwKICB7bjozMixvcHRzOltbJ0EnLCdidXQnXSxbJ0InLCdvciddLFsnQycsJ2JlY2F1c2UnXV0sYW5zOidDJ30sCiAge246MzMsb3B0czpbWydBJywnZW5vdWdoJ10sWydCJywnYWxsJ10sWydDJywnbWFueSddXSxhbnM6J0EnfSwKICB7bjozNCxvcHRzOltbJ0EnLCduZWVkJ10sWydCJywnY2FuJ10sWydDJywnaGF2ZSddXSxhbnM6J0InfSwKICB7bjozNSxvcHRzOltbJ0EnLCdiZSddLFsnQicsJ2JlaW5nJ10sWydDJywnaXMnXV0sYW5zOidDJ30sCl07CnZhciBQNiA9IFsKICB7bjozNix0ZXh0OidZb3UgbWF5IG5lZWQgdG8gc2hvdyB0aGlzIHdoZW4geW91IHRyYXZlbCB0byBhIGZvcmVpZ24gY291bnRyeS4nLGZpcnN0OidwJyxhbnM6J3Bhc3Nwb3J0J30sCiAge246MzcsdGV4dDonVGhlIHBpY3R1cmVzIHlvdSB0YWtlIHdpdGggdGhpcyB3aWxsIGhlbHAgeW91IHJlbWVtYmVyIHlvdXIgaG9saWRheS4nLGZpcnN0OidjJyxhbnM6J2NhbWVyYSd9LAogIHtuOjM4LHRleHQ6J1lvdSBjYW4gc2l0IG9uIHRoaXMgb24gdGhlIGJlYWNoIG9yIHVzZSBpdCB0byBkcnkgeW91cnNlbGYuJyxmaXJzdDondCcsYW5zOid0b3dlbCd9LAogIHtuOjM5LHRleHQ6J01ha2Ugc3VyZSB0aGlzIGlzIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgeW91ciBjbG90aGVzIGZvciB5b3VyIGhvbGlkYXkuJyxmaXJzdDoncycsYW5zOidzdWl0Y2FzZSd9LAogIHtuOjQwLHRleHQ6Ikl0J3MgZ29vZCB0byByZWFkIHRoaXMgb24gdGhlIGJlYWNoIG9yIGluIGFuIGFlcm9wbGFuZS4iLGZpcnN0OidtJyxhbnM6J21hZ2F6aW5lJ30sCl07CnZhciBQN0FucyA9IHsKICA0MTpbJ2ZvciddLAogIDQyOlsndG8nLCd1bnRpbCcsJ3RpbGwnXSwKICA0MzpbJ3dpdGgnLCdhbmQnLCduZWFyJ10sCiAgNDQ6WydhJywndG8nXSwKICA0NTpbJ2hhdmUnLCdib29rJywncmVzZXJ2ZScsJ3JlcXVlc3QnLCdnZXQnLCd0YWtlJ10sCiAgNDY6Wyd0aGUnXSwKICA0NzpbJ3RoZXJlJ10sCiAgNDg6Wyd3aWxsJywnc2hvdWxkJywnc2hhbGwnLCInbGwiLCdsbCddLAogIDQ5OlsndGltZSddLAogIDUwOlsnd2hlbicsJ2FmdGVyJ10sCn07CnZhciBQOEFucyA9IHsKICA1MTpbJ2FubmEgZGFobGluJ10sCiAgNTI6WydpdGFsaWFuJ10sCiAgNTM6Wyd0dWVzZGF5J10sCiAgNTQ6Wyc2JywnNi4wMCcsJzZwbScsJzYgcG0nLCc2LjAwcG0nLCc2LjAwIHBtJywnNiBwLm0uJywnNi4wMCBwLm0uJywnMTguMDAnLCdzaXgnLCdzaXggb1wnY2xvY2snXSwKICA1NTpbJ1x1MDBBMzE4MCcsJzE4MCcsJ29uZSBodW5kcmVkIGFuZCBlaWdodHkgcG91bmRzJywnXHUwMEEzMTgwLjAwJywnMTgwIHBvdW5kcyddLAp9OwoKLy8gPT09PT0gUmVuZGVyaW5nID09PT09CmZ1bmN0aW9uIHJlbmRlck1DUShsaXN0RWwsIGRhdGEpewogIGRhdGEuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciBkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBkaXYuY2xhc3NOYW1lPSdxLWl0ZW0nOyBkaXYuZGF0YXNldC5xaWQ9cS5uOwogICAgdmFyIG9wdHNIVE1MPScnOwogICAgaWYoQXJyYXkuaXNBcnJheShxLm9wdHMpKXsKICAgICAgcS5vcHRzLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgICAgb3B0c0hUTUwgKz0gJzxsYWJlbCBjbGFzcz0ib3B0IiBkYXRhLWxldHRlcj0iJytvWzBdKyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icScrcS5uKyciIHZhbHVlPSInK29bMF0rJyI+PHNwYW4gY2xhc3M9Im9wdC1sZXR0ZXIiPicrb1swXSsnPC9zcGFuPiAnK2VzY2FwZUh0bWwob1sxXSkrJzwvbGFiZWw+JzsKICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICAvLyBzdHJpbmcgb2YgbGV0dGVycyAoUDEpCiAgICAgIGZvcih2YXIgaT0wO2k8cS5vcHRzLmxlbmd0aDtpKyspewogICAgICAgIHZhciBMPXEub3B0c1tpXTsKICAgICAgICBvcHRzSFRNTCArPSAnPGxhYmVsIGNsYXNzPSJvcHQiIGRhdGEtbGV0dGVyPSInK0wrJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJxJytxLm4rJyIgdmFsdWU9IicrTCsnIj48c3BhbiBjbGFzcz0ib3B0LWxldHRlciI+JytMKyc8L3NwYW4+PC9sYWJlbD4nOwogICAgICB9CiAgICB9CiAgICBkaXYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzY2FwZUh0bWwocS50ZXh0KSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InEtb3B0cyI+JytvcHRzSFRNTCsnPC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmVlZGJhY2siPjwvZGl2Pic7CiAgICBsaXN0RWwuYXBwZW5kQ2hpbGQoZGl2KTsKICB9KTsKfQpmdW5jdGlvbiBlc2NhcGVIdG1sKHMpe3JldHVybiBTdHJpbmcocykucmVwbGFjZSgvWyY8PiInXS9nLGZ1bmN0aW9uKGMpe3JldHVybiB7JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnLCciJzonJnF1b3Q7JywiJyI6JyYjMzk7J31bY119KX0KCnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDFMaXN0JyksUDEpOwpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQyTGlzdCcpLFAyKTsKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0M2FMaXN0JyksUDNhKTsKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0NExpc3QnKSxQNCk7CgovLyBQYXJ0IDUgXHUyMDE0IHJlbmRlciBhcyBNQ1EgbGlzdCB1bmRlciB0aGUgcGFzc2FnZQpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQ1TGlzdCcpLFA1Lm1hcChmdW5jdGlvbihxKXtyZXR1cm4ge246cS5uLHRleHQ6J1F1ZXN0aW9uICcrcS5uKycgXHUyMDE0IGNob29zZSB0aGUgYmVzdCB3b3JkIGZvciB0aGUgZ2FwLicsb3B0czpxLm9wdHMsYW5zOnEuYW5zfX0pKTsKCi8vIFBhcnQgNiBcdTIwMTQgZmlyc3QtbGV0dGVyICsgZGFzaGVzICsgaW5wdXQKKGZ1bmN0aW9uKCl7CiAgdmFyIGxpc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQ2TGlzdCcpOwogIFA2LmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgZGFzaENvdW50ID0gcS5hbnMubGVuZ3RoIC0gMTsKICAgIHZhciBkYXNoZXMgPSBuZXcgQXJyYXkoZGFzaENvdW50KS5maWxsKCdfJykuam9pbignICcpOwogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZGl2LmNsYXNzTmFtZT0ncS1pdGVtJzsgZGl2LmRhdGFzZXQucWlkPXEubjsKICAgIGRpdi5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzY2FwZUh0bWwocS50ZXh0KSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ3b3JkLXJvdyI+PHNwYW4gY2xhc3M9ImZpcnN0LWxldHRlciI+JytxLmZpcnN0Kyc8L3NwYW4+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJpbnB1dC1ibGFuayIgZGF0YS1xPSInK3EubisnIiBwbGFjZWhvbGRlcj0iJytkYXNoZXMrJyIgc3R5bGU9Im1pbi13aWR0aDoyMDBweCI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZlZWRiYWNrIj48L2Rpdj4nOwogICAgbGlzdC5hcHBlbmRDaGlsZChkaXYpOwogIH0pOwp9KSgpOwoKLy8gPT09PT0gV2lyZSBvcHRpb24gY2xpY2tzID09PT09CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG9wdCl7CiAgb3B0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIHZhciBpbnB1dD1vcHQucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKICAgIHZhciBncm91cD1vcHQucGFyZW50RWxlbWVudDsKICAgIGdyb3VwLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe28uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKX0pOwogICAgb3B0LmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICBpbnB1dC5jaGVja2VkPXRydWU7CiAgICB1cGRhdGVQcm9ncmVzcygpOwogIH0pOwp9KTsKCi8vIGlucHV0cwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5wdXQtYmxhbmssLnEtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihlbCl7CiAgZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLHVwZGF0ZVByb2dyZXNzKTsKICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLHVwZGF0ZVByb2dyZXNzKTsKfSk7CgovLyA9PT09PSBTdWJtaXQgJiBHcmFkZSA9PT09PQpmdW5jdGlvbiBnZXRNY3FBbnMocWlkKXsKICB2YXIgc2VsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InEnK3FpZCsnIl06Y2hlY2tlZCcpOwogIHJldHVybiBzZWw\/c2VsLnZhbHVlOm51bGw7Cn0KZnVuY3Rpb24gZ2V0SW5wdXRBbnMocWlkKXsKICB2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyk7CiAgcmV0dXJuIGVsP2VsLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpOicnOwp9CmZ1bmN0aW9uIGdldFNlbGVjdEFucyhxaWQpewogIHZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1zZWxlY3RbZGF0YS1xaWQ9IicrcWlkKyciXScpOwogIHJldHVybiBlbD9lbC52YWx1ZTonJzsKfQpmdW5jdGlvbiB0b3RhbFFzKCl7cmV0dXJuIDU1fQoKZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpewogIHZhciBuPTA7CiAgLy8gTUNROiBQMSgxLTUpIFAyKDYtMTApIFAzYSgxMS0xNSkgUDQoMjEtMjcpIFA1KDI4LTM1KQogIFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNV0uZm9yRWFjaChmdW5jdGlvbihxKXtpZihnZXRNY3FBbnMocSkpbisrfSk7CiAgWzE2LDE3LDE4LDE5LDIwXS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKGdldFNlbGVjdEFucyhxKSluKyt9KTsKICAvLyBpbnB1dHMKICBmb3IodmFyIGk9MzY7aTw9NTU7aSsrKXtpZihnZXRJbnB1dEFucyhpKSluKyt9CiAgcmV0dXJuIG47Cn0KZnVuY3Rpb24gdXBkYXRlUHJvZ3Jlc3MoKXsKICB2YXIgYT1hbnN3ZXJlZENvdW50KCksIHRvdGFsPXRvdGFsUXMoKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2VyZWRDb3VudCcpLnRleHRDb250ZW50PWE7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dGaWxsJykuc3R5bGUud2lkdGg9KGEvdG90YWwqMTAwKSsnJSc7Cn0KCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJtaXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICB2YXIgc2NvcmU9MDsKICAvLyBNQ1EgcGFydHMKICB2YXIgbWNxUGFydHM9W1AxLFAyLFAzYSxQNCxQNV07CiAgbWNxUGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0KXsKICAgIHBhcnQuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgICAgdmFyIHY9Z2V0TWNxQW5zKHEubiksIGl0ZW09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtaXRlbVtkYXRhLXFpZD0iJytxLm4rJyJdJyk7CiAgICAgIGlmKCFpdGVtKXJldHVybjsKICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOwogICAgICAvLyBtYXJrIGNvcnJlY3QvaW5jb3JyZWN0IG9wdHMKICAgICAgaXRlbS5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JykuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICB2YXIgTD1vLmRhdGFzZXQubGV0dGVyOwogICAgICAgIGlmKEw9PT1xLmFucyl7by5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0LW9wdCcpfQogICAgICAgIGlmKHY9PT1MKWlmKEwhPT1xLmFucyl7by5jbGFzc0xpc3QuYWRkKCd3cm9uZy1vcHQnKX0KICAgICAgfSk7CiAgICAgIHZhciBmYj1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpOwogICAgICBpZih2PT09cS5hbnMpe3Njb3JlKys7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE0IENvcnJlY3QgXHUyMDE0ICcrcS5hbnN9CiAgICAgIGVsc2V7aXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0IGFuc3dlcjogJytxLmFucyArICh2PygnICh5b3UgY2hvc2UgJyt2KycpJyk6JyAobm8gYW5zd2VyKScpfQogICAgfSk7CiAgfSk7CiAgLy8gUGFydCAzYiBzZWxlY3RzCiAgdmFyIHAzYkZiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0M2JGZWVkYmFjaycpOwogIHAzYkZiLmlubmVySFRNTD0nJzsKICBPYmplY3Qua2V5cyhQM2JBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldFNlbGVjdEFucyhxaWQpLCBjb3JyZWN0PVAzYkFuc1txaWRdOwogICAgdmFyIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLXNlbGVjdFtkYXRhLXFpZD0iJytxaWQrJyJdJyk7CiAgICBpZihlbCl7ZWwuc3R5bGUuYm9yZGVyQ29sb3I9KHY9PT1jb3JyZWN0PycjMTBCOTgxJzonI0VGNDQ0NCcpOyBlbC5zdHlsZS5ib3JkZXJXaWR0aD0nMnB4JzsgZWwuc3R5bGUuYm9yZGVyU3R5bGU9J3NvbGlkJ30KICAgIHZhciBub3RlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgbm90ZS5zdHlsZS5jc3NUZXh0PSdwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbi10b3A6NnB4O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjAwOycrKHY9PT1jb3JyZWN0PydiYWNrZ3JvdW5kOnJnYmEoMTYsMTg1LDEyOSwuMTIpO2NvbG9yOiMwNjVGNDYnOidiYWNrZ3JvdW5kOnJnYmEoMjM5LDY4LDY4LC4xMCk7Y29sb3I6Izk5MUIxQicpOwogICAgbm90ZS5pbm5lckhUTUw9JzxiPlEnK3FpZCsnPC9iPjogJysodj09PWNvcnJlY3Q\/J1x1MjcxNCBDb3JyZWN0ICgnK2NvcnJlY3QrJyknOidcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3Q6ICcrY29ycmVjdCsodj8nLCB5b3UgY2hvc2UgJyt2OicsIG5vIGFuc3dlcicpKTsKICAgIHAzYkZiLmFwcGVuZENoaWxkKG5vdGUpOwogICAgaWYodj09PWNvcnJlY3Qpc2NvcmUrKzsKICB9KTsKICAvLyBQYXJ0IDYKICBQNi5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIHY9Z2V0SW5wdXRBbnMocS5uKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyksIGl0ZW09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtaXRlbVtkYXRhLXFpZD0iJytxLm4rJyJdJyk7CiAgICBpZighZWx8fCFpdGVtKXJldHVybjsKICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsKICAgIHZhciBvaz0odj09PXEuYW5zLnRvTG93ZXJDYXNlKCkpOwogICAgaWYob2spe3Njb3JlKys7IGVsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaXRlbS5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJykudGV4dENvbnRlbnQ9J1x1MjcxNCBDb3JyZWN0J30KICAgIGVsc2V7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgaXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpLnRleHRDb250ZW50PSdcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3Q6ICcrcS5hbnN9CiAgfSk7CiAgLy8gUGFydCA3CiAgT2JqZWN0LmtleXMoUDdBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldElucHV0QW5zKHFpZCksIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcWlkKyciXScpLCBhY2NlcHRlZD1QN0Fuc1txaWRdOwogICAgaWYoIWVsKXJldHVybjsKICAgIHZhciBvaz1hY2NlcHRlZC5pbmRleE9mKHYpPj0wOwogICAgaWYob2spe3Njb3JlKys7IGVsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKX0gZWxzZSB7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgZWwudGl0bGU9J0NvcnJlY3Q6ICcrYWNjZXB0ZWQuam9pbignIC8gJyl9CiAgfSk7CiAgLy8gUGFydCA4CiAgT2JqZWN0LmtleXMoUDhBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldElucHV0QW5zKHFpZCksIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcWlkKyciXScpLCBhY2NlcHRlZD1QOEFuc1txaWRdOwogICAgaWYoIWVsKXJldHVybjsKICAgIHZhciBvaz1hY2NlcHRlZC5pbmRleE9mKHYpPj0wOwogICAgaWYob2spe3Njb3JlKys7IGVsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKX0gZWxzZSB7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgZWwudGl0bGU9J0NvcnJlY3Q6ICcrYWNjZXB0ZWQuam9pbignIC8gJyl9CiAgfSk7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZU5vdycpLnRleHRDb250ZW50PXNjb3JlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaW5hbFNjb3JlJykudGV4dENvbnRlbnQ9c2NvcmU7CiAgdmFyIHBjdD1NYXRoLnJvdW5kKHNjb3JlLzU1KjEwMCk7CiAgdmFyIG1zZz0nJzsKICBpZihwY3Q+PTg1KSBtc2c9J1x1ezFGM0M2fSBFeGNlbGxlbnQhIFlvdSBhcmUgd2VsbCBwcmVwYXJlZCBmb3IgdGhlIHJlYWwgS0VUIGV4YW0uJzsKICBlbHNlIGlmKHBjdD49NzApIG1zZz0nXHV7MUY0NER9IEdvb2Qgam9iISBBIGZldyBtb3JlIHRlc3RzIGFuZCB5b3Ugd2lsbCBiZSByZWFkeS4nOwogIGVsc2UgaWYocGN0Pj01MCkgbXNnPSdcdXsxRjREQX0gS2VlcCBwcmFjdGlzaW5nIFx1MjAxNCByZXZpZXcgdGhlIHdyb25nIGFuc3dlcnMgYWJvdmUuJzsKICBlbHNlIG1zZz0nXHV7MUY0QUF9IFN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gUmVyZWFkIHRoZSBwYXNzYWdlcyBhbmQgdHJ5IGFnYWluLic7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNNc2cnKS50ZXh0Q29udGVudD1tc2c7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNCYW5uZXInKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgc2V0VGltZW91dChmdW5jdGlvbigpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzQmFubmVyJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidjZW50ZXInfSl9LDEyMCk7Cn0pOwoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgaWYoIWNvbmZpcm0oJ1Jlc2V0IGFsbCBhbnN3ZXJzPycpKXJldHVybjsKICBsb2NhdGlvbi5yZWxvYWQoKTsKfSk7CgovLyBXcml0aW5nIHdvcmQgY291bnRlcgp2YXIgdGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyaXRpbmdBcmVhJyksd2M9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3djQ291bnRlcicpOwp0YS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oKXsKICB2YXIgdz10YS52YWx1ZS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7CiAgd2MudGV4dENvbnRlbnQ9dysnIHdvcmRzIFx1MDBCNyB0YXJnZXQgMjVcdTIwMTMzNSc7CiAgd2MuY2xhc3NMaXN0LnJlbW92ZSgnb2snLCdvdmVyJyk7CiAgaWYodz49MjUpaWYodzw9MzUpd2MuY2xhc3NMaXN0LmFkZCgnb2snKTsKICBlbHNlIGlmKHc+MzUpd2MuY2xhc3NMaXN0LmFkZCgnb3ZlcicpOwp9KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbXBsZVRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW1wbGVCb3gnKS5jbGFzc0xpc3QudG9nZ2xlKCdzaG93Jyk7Cn0pOwoKLy8gPT09PT0gU0hPVyBBTlNXRVIgUEVSLVEgRkVBVFVSRSA9PT09PQpmdW5jdGlvbiBnZXRBbnNGb3JRKG4pewogIGlmKG4+PTEpIGlmKG48PTUpIHJldHVybiAoUDEuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTYpIGlmKG48PTEwKSByZXR1cm4gKFAyLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICBpZihuPj0xMSkgaWYobjw9MTUpIHJldHVybiAoUDNhLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICBpZihuPj0yMSkgaWYobjw9MjcpIHJldHVybiAoUDQuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTI4KSBpZihuPD0zNSkgcmV0dXJuIChQNS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgcmV0dXJuIG51bGw7Cn0KLy8gTUNRIHEtaXRlbXM6IGFwcGVuZCBTaG93IEFuc3dlciBidXR0b24KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnEtaXRlbScpLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7CiAgaWYoaXRlbS5xdWVyeVNlbGVjdG9yKCcuc2hvdy1hbnMtYnRuJykpIHJldHVybjsKICB2YXIgcWlkPXBhcnNlSW50KGl0ZW0uZGF0YXNldC5xaWQpOwogIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgYnRuLmNsYXNzTmFtZT0nc2hvdy1hbnMtYnRuJzsgYnRuLnR5cGU9J2J1dHRvbic7CiAgYnRuLmlubmVySFRNTD0nXHV7MUY0NDF9IFNob3cgQW5zd2VyJzsKICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgaXNQNj1mYWxzZTsgaWYocWlkPj0zNikgaWYocWlkPD00MCkgaXNQNj10cnVlOwogICAgaWYoaXNQNil7CiAgICAgIC8vIFBhcnQgNiBzcGVsbCBpbnB1dAogICAgICB2YXIgcDZxPVA2LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PXFpZH0pOwogICAgICB2YXIgaW5wdXQ9aXRlbS5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmsnKTsKICAgICAgaWYoaW5wdXQpIGlmKHA2cSl7aW5wdXQudmFsdWU9cDZxLmFuczsgaW5wdXQuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7fQogICAgICB2YXIgZmI2PWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICAgIGlmKGZiNikgaWYocDZxKXtpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBmYjYudGV4dENvbnRlbnQ9J1x1ezFGNDQxfSBBbnN3ZXI6ICcrcDZxLmFuczt9CiAgICB9IGVsc2UgewogICAgICB2YXIgYW5zPWdldEFuc0ZvclEocWlkKTsKICAgICAgaWYoIWFucykgcmV0dXJuOwogICAgICAvLyBoaWdobGlnaHQgY29ycmVjdCBvcHRpb24KICAgICAgdmFyIGNvcnJlY3RPcHQ9aXRlbS5xdWVyeVNlbGVjdG9yKCcub3B0W2RhdGEtbGV0dGVyPSInK2FucysnIl0nKTsKICAgICAgaWYoY29ycmVjdE9wdCl7Y29ycmVjdE9wdC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0LW9wdCcpO30KICAgICAgLy8gc2ltdWxhdGUgY2xpY2sgc28gdXBkYXRlUHJvZ3Jlc3MgZmlyZXMKICAgICAgdmFyIGZiPWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICAgIGlmKGZiKXtpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7IGZiLnN0eWxlLmJhY2tncm91bmQ9J3JnYmEoMTYsMTg1LDEyOSwuMTIpJzsgZmIuc3R5bGUuY29sb3I9JyMwNjVGNDYnOyBmYi50ZXh0Q29udGVudD0nXHV7MUY0NDF9IEFuc3dlcjogJythbnM7fQogICAgfQogICAgYnRuLmRpc2FibGVkPXRydWU7CiAgfSk7CiAgaXRlbS5hcHBlbmRDaGlsZChidG4pOwp9KTsKLy8gUGFydCAzYiBzZWxlY3RzOiBhcHBlbmQgaW5saW5lIFNob3cgQW5zd2VyIGJ1dHRvbgpbMTYsMTcsMTgsMTksMjBdLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICB2YXIgc2VsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLXNlbGVjdFtkYXRhLXFpZD0iJytxaWQrJyJdJyk7CiAgaWYoIXNlbCkgcmV0dXJuOwogIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgYnRuLmNsYXNzTmFtZT0nc2hvdy1hbnMtYnRuLWlubGluZSc7IGJ0bi50eXBlPSdidXR0b24nOwogIHZhciBhbnM9UDNiQW5zW3FpZF07CiAgYnRuLmlubmVySFRNTD0nXHV7MUY0NDF9ICcrYW5zOwogIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHNlbC52YWx1ZT1hbnM7IHNlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAgc2VsLnN0eWxlLmJvcmRlckNvbG9yPScjMTBCOTgxJzsgc2VsLnN0eWxlLmJvcmRlcldpZHRoPScycHgnOyBzZWwuc3R5bGUuYm9yZGVyU3R5bGU9J3NvbGlkJzsKICAgIGJ0bi5kaXNhYmxlZD10cnVlOwogIH0pOwogIHNlbC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgYnRuKTsKfSk7Ci8vIFBhcnQgNyAmIDggaW5wdXRzOiBhcHBlbmQgaW5saW5lIFNob3cgQW5zd2VyIGJ1dHRvbgpmb3IodmFyIHFpPTQxO3FpPD01NTtxaSsrKXsKICAoZnVuY3Rpb24ocWlkKXsKICAgIHZhciBpbnA9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyk7CiAgICBpZighaW5wKSByZXR1cm47CiAgICB2YXIgYW5zPShxaWQ8PTUwKT9QN0Fuc1txaWRdWzBdOlA4QW5zW3FpZF1bMF07CiAgICB2YXIgYnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgYnRuLmNsYXNzTmFtZT0nc2hvdy1hbnMtYnRuLWlubGluZSc7IGJ0bi50eXBlPSdidXR0b24nOwogICAgYnRuLmlubmVySFRNTD0nXHV7MUY0NDF9ICcrYW5zOwogICAgYnRuLnRpdGxlPSdDbGljayB0byBmaWxsOiAnK2FuczsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgaW5wLnZhbHVlPWFuczsgaW5wLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaW5wLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTsKICAgICAgYnRuLmRpc2FibGVkPXRydWU7CiAgICB9KTsKICAgIGlucC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgYnRuKTsKICB9KShxaSk7Cn0KCn0pKCk7Cg=='));<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>All English 4U Grammar IELTS TOEFL Cambridge CELPIP Dictation Back Grammar IELTS TOEFL Cambridge CELPIP Dictation Cambridge English &#183; Key (KET) KET 4 &#8212; Test 3Reading &amp; Writing Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-3955","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=3955"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3955\/revisions"}],"predecessor-version":[{"id":5903,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3955\/revisions\/5903"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=3955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}