{"id":4658,"date":"2026-06-24T20:18:04","date_gmt":"2026-06-24T20:18:04","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-4-test-1-listening\/"},"modified":"2026-07-05T02:44:00","modified_gmt":"2026-07-05T02:44:00","slug":"cambridge-ket-4-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-4-test-1-listening\/","title":{"rendered":"Cambridge KET 4 Test 1 \u2013 Listening"},"content":{"rendered":"<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.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  --purple:#8B5CF6;\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  --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{font-family:'Plus Jakarta Sans',system-ui,sans-serif !important;color:var(--text);background:var(--light-2);-webkit-font-smoothing:antialiased;overflow-x:hidden}\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 *\/\n.header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .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)}\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;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{padding:9px 13px;font-size:14.5px;font-weight:600;color:rgba(255,255,255,.82);border-radius:var(--r-10);transition:all .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)}\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{position:relative;min-height:300px;padding:110px 0 40px;background:linear-gradient(135deg,#8B5CF6 0%,#F43F5E 55%,#7C2D12 100%);color:#fff;overflow:hidden}\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(32px,5vw,48px);line-height:1.05;margin-bottom:14px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:16px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:18px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}\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\n\/* PLAYER STICKY *\/\n.player-bar{position:sticky;top:72px;z-index:50;background:#0F172A;color:#fff;box-shadow:0 4px 16px rgba(0,0,0,.2)}\n.player-inner{display:grid;grid-template-columns:340px 1fr;gap:20px;align-items:center;padding:14px 24px;max-width:1200px;margin:0 auto}\n.player-vid{aspect-ratio:16\/9;background:#000;border-radius:10px;overflow:hidden;width:340px;min-height:191px}\n.player-vid iframe{width:100%;height:100%;border:0;display:block}\n.player-controls h4{font-family:'Fraunces',serif !important;font-size:18px;margin-bottom:4px}\n.player-controls .pc-sub{font-size:13px;opacity:.75;margin-bottom:12px}\n.part-jumps{display:flex;flex-wrap:wrap;gap:8px}\n.jump-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.1);color:#fff;font-weight:600;font-size:13px;border:1px solid rgba(255,255,255,.2);transition:all .15s ease;cursor:pointer}\n.jump-btn:hover{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));border-color:transparent;transform:translateY(-1px)}\n.jump-btn .jt{font-weight:800;color:var(--gold);font-size:12px}\n.jump-btn.active{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));border-color:transparent}\n.player-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}\n.player-actions .ctrl-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:8px;background:rgba(255,255,255,.08);color:#fff;font-size:12px;font-weight:600;border:1px solid rgba(255,255,255,.14);cursor:pointer;transition:background .15s ease}\n.player-actions .ctrl-btn:hover{background:rgba(255,255,255,.18)}\n\n\/* SCORE BAR *\/\n.score-bar{background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:14px 0;position:sticky;top:262px;z-index:40}\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);cursor:pointer}\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);cursor:pointer}\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{flex-shrink:0;width:60px;height:60px;border-radius:18px;background:linear-gradient(135deg,var(--accent-1),var(--accent-2));color:#fff;display:grid;place-items:center;font-family:'Fraunces',serif !important;font-weight:700;font-size:26px;box-shadow:0 8px 22px rgba(249,115,22,.3)}\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.part-actions{display:flex;gap:10px;margin:0 0 16px 78px;flex-wrap:wrap}\n.act-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:#fff;border:1.5px solid var(--border);font-weight:600;font-size:13px;color:var(--text);cursor:pointer;transition:all .15s ease}\n.act-pill:hover{border-color:var(--accent-1);color:var(--accent-1)}\n.act-pill.active{background:var(--light-1);border-color:var(--accent-1);color:var(--accent-1)}\n.act-pill svg{flex-shrink:0}\n\n\/* Q items *\/\n.q-list{display:flex;flex-direction:column;gap:14px;margin-top:8px}\n.q-item{background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;gap:12px;transition:border-color .2s ease,box-shadow .2s ease;scroll-margin-top:300px}\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-text{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;min-width:30px}\n.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.opt{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border-radius:12px;background:#F8FAFF;border:1.5px solid var(--border);font-weight:600;font-size:14px;color:var(--text);cursor:pointer;transition:all .15s ease;user-select:none;min-width:0}\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);flex-shrink:0}\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 matching *\/\n.match-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:18px 0}\n.match-letter{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1.5px solid var(--border);border-radius:12px;font-size:14px;font-weight:600;color:var(--text)}\n.match-letter b{color:var(--accent-1);background:var(--light-1);width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;font-weight:800}\n\n\/* input blanks *\/\n.input-blank{display:inline-block;min-width:140px;border:none;border-bottom:2px dashed var(--accent-1);background:transparent;font-family:inherit !important;font-size:15.5px;color:var(--text);font-weight:600;padding:2px 8px;margin:0 4px;text-align:center;outline:none}\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\/* Notes form *\/\n.form-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:14px;max-width:640px}\n.form-card h4{font-family:'Fraunces',serif !important;font-size:18px;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:12px;flex-wrap:wrap}\n.form-row label{flex:0 0 220px;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\/* transcript *\/\n.transcript-card{margin-top:18px;background:#FAFBFC;border:1.5px solid var(--border);border-radius:14px;padding:0;overflow:hidden;max-width:840px}\n.transcript-card.collapsed .ts-body{display:none}\n.transcript-card .ts-head{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;background:#fff;cursor:pointer;font-weight:700;font-size:14px;color:var(--accent-2);border-bottom:1px solid var(--border)}\n.transcript-card.collapsed .ts-head{border-bottom:none}\n.transcript-card .ts-head .chev{transition:transform .2s ease}\n.transcript-card.collapsed .ts-head .chev{transform:rotate(-90deg)}\n.transcript-card .ts-body{padding:16px 22px;font-size:14.5px;line-height:1.75;color:var(--text);max-height:380px;overflow-y:auto;background:#FAFBFC;font-family:'Courier New',monospace}\n.transcript-card .ts-body b{color:var(--accent-2);font-family:'Plus Jakarta Sans',sans-serif}\n.transcript-card .ts-body i{color:var(--muted);font-size:12.5px}\n\n\/* notes pad *\/\n.notes-pad{background:#FEF9E7;border:1.5px solid var(--gold);border-radius:14px;padding:14px 18px;margin-top:14px;max-width:640px}\n.notes-pad label{display:block;font-weight:700;font-size:13px;color:#7B5B00;margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}\n.notes-pad textarea{width:100%;min-height:80px;padding:10px;font-family:inherit !important;font-size:14px;line-height:1.5;border:1px solid #E8D88E;border-radius:8px;background:rgba(255,255,255,.7);color:var(--text);outline:none;resize:vertical}\n.notes-pad textarea:focus{border-color:var(--accent-1);background:#fff}\n\n\/* RESULTS *\/\n.results-banner{display:none;margin:32px auto;padding:30px;border-radius:22px;background:linear-gradient(135deg,#8B5CF6,#F43F5E);color:#fff;text-align:center;max-width:720px;box-shadow:0 16px 50px rgba(139,92,246,.3)}\n.results-banner.show{display:block}\n.results-banner h3{font-size:28px;font-family:'Fraunces',serif !important;margin-bottom:8px}\n.results-banner .score-big{font-size:60px;font-weight:800;line-height:1;margin:14px 0;font-family:'Fraunces',serif}\n.results-banner p{opacity:.95;font-size:15px}\n.score-parts{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:16px;background:rgba(0,0,0,.2);padding:12px;border-radius:12px}\n.score-parts .sp-item{text-align:center;font-size:12px;font-weight:600;opacity:.95}\n.score-parts .sp-item b{display:block;font-size:18px;font-family:'Fraunces',serif !important;margin-bottom:2px}\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:880px){\n  .nav{display:none}\n  .hamburger{display:flex}\n  .player-inner{grid-template-columns:1fr;padding:12px 18px}\n  .player-vid{width:100%;min-height:0}\n  .hero{padding:110px 0 30px}\n  .part-actions{margin-left:0}\n  .form-row label{flex:1 1 100%}\n  .form-row .input-blank{width:100%}\n  .score-bar{top:auto;position:relative}\n  .part-head{flex-direction:column;gap:10px}\n  .part-num{width:50px;height:50px;font-size:22px}\n  .score-parts{grid-template-columns:repeat(5,1fr);font-size:10px}\n  .score-parts .sp-item b{font-size:14px}\n}\n\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\/vi\/\" 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\/vi\/grammar\/\">Ng\u1eef ph\u00e1p<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/ielts\/\">IELTS<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/toefl\/\">TOEFL<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\" class=\"active\">Cambridge<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/celpip\/\">CELPIP<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/dictation\/\">Ch\u00ednh t\u1ea3 nghe<\/a>\n      <\/nav>\n    <div class=\"header-right\">\n      <a href=\"https:\/\/allenglish4u.com\/vi\/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\/vi\/grammar\/\">Ng\u1eef ph\u00e1p<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/ielts\/\">IELTS<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/toefl\/\">TOEFL<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\">Cambridge<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/celpip\/\">CELPIP<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/dictation\/\">Ch\u00ednh t\u1ea3 nghe<\/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) 4<\/span>\n    <h1 class=\"serif\">KET 4 &mdash; Test 1 <span>Listening<\/span><\/h1>\n    <p class=\"sub\">Listen to 5 parts with 25 questions. Use the YouTube audio above, jump to each part, take notes, and get instant auto-grading.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>~30 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>5 Parts &#183; 25 Questions<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>Auto-grade<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>Transcript &amp; Notes<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- STICKY PLAYER -->\n<div class=\"player-bar\" id=\"playerBar\">\n  <div class=\"player-inner\">\n    <div class=\"player-vid\">\n      <iframe id=\"ytPlayer\" src=\"https:\/\/www.youtube.com\/embed\/XZUoW5RydfQ?enablejsapi=1&#038;rel=0\" title=\"KET 4 Test 1 Listening\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n    <\/div>\n    <div class=\"player-controls\">\n      <h4>&#127911; Audio &mdash; KET 4 Listening Test 1<\/h4>\n      <div class=\"pc-sub\">Click a part below to jump to that section. Use YouTube&#8217;s speed control (gear icon) to slow down.<\/div>\n      <div class=\"part-jumps\">\n        <button class=\"jump-btn\" data-time=\"7\" data-part=\"intro\"><span class=\"jt\">0:07<\/span> Intro<\/button>\n        <button class=\"jump-btn\" data-time=\"23\" data-part=\"1\"><span class=\"jt\">0:23<\/span> Part 1<\/button>\n        <button class=\"jump-btn\" data-time=\"355\" data-part=\"2\"><span class=\"jt\">5:55<\/span> Part 2<\/button>\n        <button class=\"jump-btn\" data-time=\"571\" data-part=\"3\"><span class=\"jt\">9:31<\/span> Part 3<\/button>\n        <button class=\"jump-btn\" data-time=\"803\" data-part=\"4\"><span class=\"jt\">13:23<\/span> Part 4<\/button>\n        <button class=\"jump-btn\" data-time=\"1023\" data-part=\"5\"><span class=\"jt\">17:03<\/span> Part 5<\/button>\n      <\/div>\n      <div class=\"player-actions\">\n        <button class=\"ctrl-btn\" id=\"btnPause\">&#9208; Pause<\/button>\n        <button class=\"ctrl-btn\" id=\"btnPlay\">&#9654; Play<\/button>\n        <button class=\"ctrl-btn\" id=\"btnRewind\">&#9194; -10s<\/button>\n        <button class=\"ctrl-btn\" id=\"btnSlower\">&#128034; Slower<\/button>\n        <button class=\"ctrl-btn\" id=\"btnNormal\">&#9889; Normal<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\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>\/25<\/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 25 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 &#183; 0:23 in audio<\/span>\n        <h2 class=\"serif\">Five short conversations<\/h2>\n        <p>You will hear five short conversations. You will hear each conversation twice. There is one question for each conversation. For questions 1&#8211;5, choose the right answer (A, B or C).<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"23\" data-jump=\"1\">\n        <svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg>\n        Replay Part 1 from start\n      <\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts1\">&#128220; Show transcript<\/button>\n    <\/div>\n    <div class=\"q-list\" id=\"part1List\"><\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts1\">\n      <div class=\"ts-head\" data-toggle=\"ts1\"><span>&#128220; Part 1 transcript (for self-study after answering)<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p><i>This is the Cambridge Key English Test, Paper 2 Listening, Test 1.<\/i><\/p>\n<p><b>Example &#8212; How many people were at the meeting?<\/b> <i>(30 = C)<\/i><\/p>\n<p><b>Q1 &#8212; What music will they have at the party?<\/b><br>\n<b>Woman:<\/b> Are you going to bring your guitar to the party?<br>\n<b>Man:<\/b> It&#8217;s broken, I&#8217;m afraid. But you can play the piano for us.<br>\n<b>Woman:<\/b> I&#8217;m not good enough. Let&#8217;s just play your new CDs.<br>\n<b>Man:<\/b> All right. I&#8217;ll bring the guitar another time. <i>(C &#8212; CDs)<\/i><\/p>\n<p><b>Q2 &#8212; When will the man go on holiday?<\/b><br>\n<b>Man:<\/b> I can&#8217;t go on holiday in June because my parents are coming to stay with me then.<br>\n<b>Woman:<\/b> Why don&#8217;t you go in August? It&#8217;s a lovely month in the mountains.<br>\n<b>Man:<\/b> July&#8217;s better. There aren&#8217;t so many people, so I&#8217;ll leave on the twelfth and come back at the end of the month.<br>\n<b>Woman:<\/b> OK, then you&#8217;ll be back for my birthday party in August. <i>(B &#8212; July)<\/i><\/p>\n<p><b>Q3 &#8212; What will the weather be like tomorrow?<\/b><br>\n<b>Man:<\/b> It&#8217;s very hot, isn&#8217;t it?<br>\n<b>Woman:<\/b> Yes, I love it. I hope it doesn&#8217;t rain.<br>\n<b>Man:<\/b> Well, it&#8217;ll be cold and windy tomorrow.<br>\n<b>Woman:<\/b> Oh dear, we never have hot weather for long. <i>(B &#8212; cold and windy)<\/i><\/p>\n<p><b>Q4 &#8212; What colour is Mary&#8217;s coat?<\/b><br>\n<b>Friend:<\/b> Hi, Mary. What have you bought?<br>\n<b>Mary:<\/b> This coat. Do you like it?<br>\n<b>Friend:<\/b> Yes, yellow looks good on you.<br>\n<b>Mary:<\/b> Do you think I can use my blue bag with it?<br>\n<b>Friend:<\/b> Your brown one will look better. <i>(A &#8212; yellow)<\/i><\/p>\n<p><b>Q5 &#8212; What did the woman repair?<\/b><br>\n<b>Man:<\/b> Hi! What have you done today?<br>\n<b>Woman:<\/b> You know that broken shelf above my desk? Well, I repaired it and then I went shopping.<br>\n<b>Man:<\/b> What did you buy?<br>\n<b>Woman:<\/b> A new chair. <i>(B &#8212; a shelf)<\/i><\/p>\n      <\/div>\n    <\/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 &#183; 5:55 in audio<\/span>\n        <h2 class=\"serif\">Sarah&#x27;s holiday photographs &#8212; what place is each person in?<\/h2>\n        <p>Listen to Sarah talking to a friend about her holiday photographs. What place is each person in? For questions 6&#8211;10, write a letter A&#8211;H. You will hear the conversation twice.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"355\" data-jump=\"2\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 2 from start<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts2\">&#128220; Show transcript<\/button>\n    <\/div>\n\n    <div class=\"match-grid\">\n      <div class=\"match-letter\"><b>A<\/b> castle<\/div>\n      <div class=\"match-letter\"><b>B<\/b> cathedral<\/div>\n      <div class=\"match-letter\"><b>C<\/b> hotel<\/div>\n      <div class=\"match-letter\"><b>D<\/b> market<\/div>\n      <div class=\"match-letter\"><b>E<\/b> mountains<\/div>\n      <div class=\"match-letter\"><b>F<\/b> museum<\/div>\n      <div class=\"match-letter\"><b>G<\/b> restaurant<\/div>\n      <div class=\"match-letter\"><b>H<\/b> sea<\/div>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part2List\"><\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts2\">\n      <div class=\"ts-head\" data-toggle=\"ts2\"><span>&#128220; Part 2 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p><b>Sarah:<\/b> And this is my sister, Caroline, swimming. She preferred swimming here to the hotel pool. <i>(6 Caroline = H sea)<\/i><br>\n<b>Friend:<\/b> The sea looks very blue. And who&#8217;s this standing outside a castle?<br>\n<b>Sarah:<\/b> Jack. But it&#8217;s not a castle, it&#8217;s a cathedral. It&#8217;s one of the oldest in Spain. <i>(7 Jack = B cathedral)<\/i><br>\n<b>Friend:<\/b> And is this you, Sarah, buying bananas in a market?<br>\n<b>Sarah:<\/b> Yes, that wasn&#8217;t far from our hotel. The fruit was really cheap there. <i>(8 Sarah = D market)<\/i><br>\n<b>Friend:<\/b> And here&#8217;s Peter eating. Is he in the garden of your hotel?<br>\n<b>Sarah:<\/b> Actually, it&#8217;s a restaurant near the cathedral. We often went there. <i>(9 Peter = G restaurant)<\/i><br>\n<b>Friend:<\/b> What&#8217;s your father doing with the cassette recorder in this photo?<br>\n<b>Sarah:<\/b> Oh. He loves history. He&#8217;s in a museum here listening to information. <i>(10 father = F museum)<\/i><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- PART 3 -->\n<section class=\"part-section\" id=\"part3\">\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 &#183; 9:31 in audio<\/span>\n        <h2 class=\"serif\">Sue &amp; Jim &#8212; the new sports centre<\/h2>\n        <p>Listen to Sue talking to her friend Jim about the new sports centre. For questions 11&#8211;15, choose A, B or C.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"571\" data-jump=\"3\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 3 from start<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts3\">&#128220; Show transcript<\/button>\n    <\/div>\n    <div class=\"q-list\" id=\"part3List\"><\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts3\">\n      <div class=\"ts-head\" data-toggle=\"ts3\"><span>&#128220; Part 3 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p><b>Sue:<\/b> Have you been to the new sports centre, Jim?<br>\n<b>Jim:<\/b> Yes, Sue. It&#8217;s not cheap but it&#8217;s big and light.<br>\n<b>Sue:<\/b> Does bus eighteen go there?<br>\n<b>Jim:<\/b> That&#8217;s right. It takes fifteen minutes. Don&#8217;t get bus twenty-five because you have to walk a long way. <i>(11 = B bus 18)<\/i><br>\n<b>Sue:<\/b> I like doing sport early in the morning. Is it open at seven?<br>\n<b>Jim:<\/b> Yes, you can go there from six, except on Sundays. Then it doesn&#8217;t open until nine. The swimming pool has good hot showers; you have to bring your own towel but soap is free. <i>(12 = A 6 a.m.; 13 = C towel)<\/i><br>\n<b>Sue:<\/b> Do they sell things to eat there?<br>\n<b>Jim:<\/b> Only sandwiches; they don&#8217;t sell drinks. I usually take some fruit. <i>(14 = A sandwiches)<\/i><br>\n<b>Sue:<\/b> I&#8217;d love to go with you next week. How about Wednesday?<br>\n<b>Jim:<\/b> I&#8217;m free on Saturday but it&#8217;s too busy then. I&#8217;ll meet you on Thursday. <i>(15 = B Thursday)<\/i><br>\n<b>Sue:<\/b> OK. See you then.<\/p>\n      <\/div>\n    <\/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 16&#8211;20 &#183; 13:23 in audio<\/span>\n        <h2 class=\"serif\">Telephone message for Diana &#8212; fill in the notes<\/h2>\n        <p>You will hear a man making a telephone call, leaving a message for Diana. Listen and complete questions 16&#8211;20. You will hear the conversation twice.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"803\" data-jump=\"4\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 4 from start<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts4\">&#128220; Show transcript<\/button>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>&#128203; Telephone message for Diana &#8212; fill in the notes<\/h4>\n      <div class=\"form-row\"><label><b>To:<\/b><\/label><span style=\"font-weight:600\">Diana<\/span><\/div>\n      <div class=\"form-row\"><label><b>From:<\/b><\/label><span style=\"font-weight:600\">Ian<\/span><\/div>\n      <div class=\"form-row\"><label><b>16.<\/b> Name of hotel:<\/label>The <input class=\"input-blank\" data-q=\"16\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label><b>17.<\/b> Address:<\/label><input class=\"input-blank\" data-q=\"17\" type=\"text\">  Street<\/div>\n      <div class=\"form-row\"><label><b>18.<\/b> Meeting starts at:<\/label><input class=\"input-blank\" data-q=\"18\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label><b>19.<\/b> Bring:<\/label><input class=\"input-blank\" data-q=\"19\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label><b>20.<\/b> Visit factory on:<\/label><input class=\"input-blank\" data-q=\"20\" type=\"text\"><\/div>\n\n    <\/div>\n\n    <div class=\"notes-pad\">\n      <label>&#9999;&#65039; My notes for Part 4 (not graded)<\/label>\n      <textarea placeholder=\"Take notes while listening...\"><\/textarea>\n    <\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts4\">\n      <div class=\"ts-head\" data-toggle=\"ts4\"><span>&#128220; Part 4 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p><b>Woman:<\/b> Hello.<br>\n<b>Ian:<\/b> Hello, can I leave a message for Diana, please? It&#8217;s Ian.<br>\n<b>Woman:<\/b> Yes, of course.<br>\n<b>Ian:<\/b> Can you tell her the meeting is at the April Hotel. <i>(16 April)<\/i><br>\n<b>Woman:<\/b> The April Hotel. Where&#8217;s that?<br>\n<b>Ian:<\/b> It&#8217;s in Leith Street. That&#8217;s L-E-I-T-H. <i>(17 Leith)<\/i><br>\n<b>Woman:<\/b> And what time does the meeting start?<br>\n<b>Ian:<\/b> At ten twenty. Please don&#8217;t be late. <i>(18 10.20)<\/i><br>\n<b>Ian:<\/b> Ask her to bring her book &#8212; we&#8217;ll need it. <i>(19 book)<\/i><br>\n<b>Woman:<\/b> Anything else?<br>\n<b>Ian:<\/b> Yes &#8212; we&#8217;re going to visit the factory on Tuesday, not Monday. <i>(20 Tuesday)<\/i><\/p>\n      <\/div>\n    <\/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 21&#8211;25 &#183; 17:03 in audio<\/span>\n        <h2 class=\"serif\">Park Zoo &#8212; fill in the notes<\/h2>\n        <p><\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"1023\" data-jump=\"5\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 5 from start<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts5\">&#128220; Show transcript<\/button>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>&#128203; Park Zoo &#8212; fill in the notes<\/h4>\n      <div class=\"form-row\"><label><b>Open from (Monday&#8211;Sunday):<\/b><\/label><span style=\"font-weight:600\">9 a.m.<\/span><\/div>\n      <div class=\"form-row\"><label><b>21.<\/b> Open to:<\/label><input class=\"input-blank\" data-q=\"21\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label><b>22.<\/b> Name of nearest station:<\/label><input class=\"input-blank\" data-q=\"22\" type=\"text\">  Station<\/div>\n      <div class=\"form-row\"><label><b>23.<\/b> Elephant House closed on:<\/label><input class=\"input-blank\" data-q=\"23\" type=\"text\">  May<\/div>\n      <div class=\"form-row\"><label><b>24.<\/b> Shop sells books, postcards and:<\/label><input class=\"input-blank\" data-q=\"24\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label><b>25.<\/b> Cost of family ticket:<\/label>&#163; <input class=\"input-blank\" data-q=\"25\" type=\"text\"><\/div>\n\n    <\/div>\n\n    <div class=\"notes-pad\">\n      <label>&#9999;&#65039; My notes for Part 5 (not graded)<\/label>\n      <textarea placeholder=\"Take notes while listening...\"><\/textarea>\n    <\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts5\">\n      <div class=\"ts-head\" data-toggle=\"ts5\"><span>&#128220; Part 5 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p><b>Man:<\/b> Thank you for phoning Park Zoo. The zoo is open from Monday to Saturday, but also on Sunday now, from nine a.m. and we close at half past seven in the evening. <i>(21 7.30)<\/i><br>\nThe nearest station is North Station &#8212; it&#8217;s just a five-minute walk to the zoo. <i>(22 North)<\/i><br>\nPlease note the Elephant House will be closed on the third of May while we clean it. <i>(23 3rd)<\/i><br>\nOur shop sells books, postcards and T-shirts, and you can buy drinks and snacks at the caf&#233;. <i>(24 T-shirts)<\/i><br>\nA family ticket costs twelve pounds, which is cheaper than buying single tickets. <i>(25 &#163;12)<\/i> We hope you enjoy your visit to the zoo.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- RESULTS -->\n<div class=\"wrap\">\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>&#127911; Your KET 4 Listening &#8212; Test 1 score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/25<\/div>\n    <p id=\"resultsMsg\">Great work! Scroll up to review each question.<\/p>\n    <div class=\"score-parts\" id=\"scoreParts\"><\/div>\n    <div style=\"margin-top:16px\">\n      <button class=\"btn-submit\" onclick=\"window.scrollTo({top:0,behavior:'smooth'})\" style=\"background:#fff;color:var(--accent-2)\">&#11014; Back to top<\/button>\n    <\/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\/vi\/cambridge\/\">All Cambridge Tests<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge-ket-4-test-1-rw\/\">KET 4 Test 1 Reading &amp; Writing<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/vi\/contact\/\">Li\u00ean h\u1ec7<\/a><\/p>\n  <\/div>\n<\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewp2YXIgaGRyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZHInKTsKZnVuY3Rpb24gc2V0U29saWQoKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfQp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxzZXRTb2xpZCx7cGFzc2l2ZTp0cnVlfSk7c2V0U29saWQoKTsKCnZhciBoYW1iPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoYW1iJyksZHJhd2VyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcmF3ZXInKSxkQ2xvc2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlckNsb3NlJyk7CmlmKGhhbWIpaGFtYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LmFkZCgnb3BlbicpfSk7CmlmKGRDbG9zZSlkQ2xvc2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7ZHJhd2VyLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKX0pOwppZihkcmF3ZXIpZHJhd2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXtpZihlLnRhcmdldD09PWRyYXdlcilkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CgovLyA9PT09PSBZb3VUdWJlIElGcmFtZSBBUEkgPT09PT0KdmFyIHl0UmVhZHk9ZmFsc2UsIHl0UGxheWVyPW51bGw7CnZhciB0YWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IHRhZy5zcmM9J2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGknOwpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7CndpbmRvdy5vbllvdVR1YmVJZnJhbWVBUElSZWFkeT1mdW5jdGlvbigpewogIHl0UGxheWVyPW5ldyBZVC5QbGF5ZXIoJ3l0UGxheWVyJyx7ZXZlbnRzOntvblJlYWR5OmZ1bmN0aW9uKCl7eXRSZWFkeT10cnVlfX19KTsKfTsKZnVuY3Rpb24geXRTZWVrKHNlYyl7CiAgaWYoeXRSZWFkeSl7IHl0UGxheWVyLnNlZWtUbyhzZWMsIHRydWUpOyB5dFBsYXllci5wbGF5VmlkZW8oKTsgfQogIGVsc2V7IHZhciBmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5dFBsYXllcicpOyBmLnNyYz1mLnNyYy5zcGxpdCgnPycpWzBdKyc\/ZW5hYmxlanNhcGk9MSZyZWw9MCZhdXRvcGxheT0xJnN0YXJ0PScrc2VjOyB9Cn0KZnVuY3Rpb24geXRQYXVzZSgpeyBpZih5dFJlYWR5KXl0UGxheWVyLnBhdXNlVmlkZW8oKTsgfQpmdW5jdGlvbiB5dFBsYXkoKXsgaWYoeXRSZWFkeSl5dFBsYXllci5wbGF5VmlkZW8oKTsgfQpmdW5jdGlvbiB5dFJld2luZCgpeyBpZih5dFJlYWR5KXsgdmFyIHQ9eXRQbGF5ZXIuZ2V0Q3VycmVudFRpbWUoKTsgeXRQbGF5ZXIuc2Vla1RvKE1hdGgubWF4KDAsdC0xMCksdHJ1ZSk7IH0gfQpmdW5jdGlvbiB5dFJhdGUocil7IGlmKHl0UmVhZHkpeXRQbGF5ZXIuc2V0UGxheWJhY2tSYXRlKHIpOyB9CgovLyBqdW1wIGJ1dHRvbnMKZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmp1bXAtYnRuJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHQ9cGFyc2VJbnQoYi5kYXRhc2V0LnRpbWUpOwogICAgeXRTZWVrKHQpOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmp1bXAtYnRuJykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpfSk7CiAgICBiLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgaWYoYi5kYXRhc2V0LnBhcnQpaWYoYi5kYXRhc2V0LnBhcnQhPT0naW50cm8nKXsKICAgICAgdmFyIHNlYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydCcrYi5kYXRhc2V0LnBhcnQpOwogICAgICBpZihzZWMpc2VjLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgICB9CiAgfSk7Cn0pOwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWN0LXBpbGxbZGF0YS10aW1lXScpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsgeXRTZWVrKHBhcnNlSW50KGIuZGF0YXNldC50aW1lKSk7IH0pOwp9KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blBhdXNlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLHl0UGF1c2UpOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuUGxheScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyx5dFBsYXkpOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuUmV3aW5kJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLHl0UmV3aW5kKTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blNsb3dlcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3l0UmF0ZSgwLjc1KX0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuTm9ybWFsJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7eXRSYXRlKDEpfSk7CgovLyB0cmFuc2NyaXB0IHRvZ2dsZQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHMtdG9nZ2xlLCAudHMtaGVhZCcpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciB0YXJnZXQ9Yi5kYXRhc2V0LnRhcmdldHx8Yi5kYXRhc2V0LnRvZ2dsZTsKICAgIGlmKCF0YXJnZXQpeyB2YXIgY2FyZD1iLmNsb3Nlc3QoJy50cmFuc2NyaXB0LWNhcmQnKTsgaWYoY2FyZCl0YXJnZXQ9Y2FyZC5pZDsgfQogICAgdmFyIGNhcmQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KTsKICAgIGlmKGNhcmQpY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjb2xsYXBzZWQnKTsKICB9KTsKfSk7CgovLyA9PT09PSBRVUVTVElPTlMgREFUQSA9PT09PQp2YXIgUDEgPSBbCiAge246MSx0ZXh0OidXaGF0IG11c2ljIHdpbGwgdGhleSBoYXZlIGF0IHRoZSBwYXJ0eT8nLG9wdHM6W1snQScsJ0EgZ3VpdGFyJ10sWydCJywnQSBwaWFubyddLFsnQycsJ0NEcyddXSxhbnM6J0MnfSwKICB7bjoyLHRleHQ6J1doZW4gd2lsbCB0aGUgbWFuIGdvIG9uIGhvbGlkYXk\/JyxvcHRzOltbJ0EnLCdKdW5lJ10sWydCJywnSnVseSddLFsnQycsJ0F1Z3VzdCddXSxhbnM6J0InfSwKICB7bjozLHRleHQ6J1doYXQgd2lsbCB0aGUgd2VhdGhlciBiZSBsaWtlIHRvbW9ycm93Pycsb3B0czpbWydBJywnU3VubnknXSxbJ0InLCdDb2xkIGFuZCB3aW5keSddLFsnQycsJ1JhaW55J11dLGFuczonQid9LAogIHtuOjQsdGV4dDonV2hhdCBjb2xvdXIgaXMgTWFyeVwncyBjb2F0Pycsb3B0czpbWydBJywnWWVsbG93J10sWydCJywnQmx1ZSddLFsnQycsJ0Jyb3duJ11dLGFuczonQSd9LAogIHtuOjUsdGV4dDonV2hhdCBkaWQgdGhlIHdvbWFuIHJlcGFpcj8nLG9wdHM6W1snQScsJ0EgY2hhaXInXSxbJ0InLCdBIHNoZWxmJ10sWydDJywnQSBkZXNrJ11dLGFuczonQid9LApdOwoKdmFyIFAyID0gWwogIHtuOjYscGVyc29uOidDYXJvbGluZScsYW5zOidIJ30sCiAge246NyxwZXJzb246J0phY2snLGFuczonQid9LAogIHtuOjgscGVyc29uOidTYXJhaCcsYW5zOidEJ30sCiAge246OSxwZXJzb246J1BldGVyJyxhbnM6J0cnfSwKICB7bjoxMCxwZXJzb246J1NhcmFoXCdzIGZhdGhlcicsYW5zOidGJ30sCl07Cgp2YXIgUDMgPSBbCiAge246MTEsdGV4dDonV2hpY2ggYnVzIGdvZXMgdG8gdGhlIHNwb3J0cyBjZW50cmU\/JyxvcHRzOltbJ0EnLCcxNSddLFsnQicsJzE4J10sWydDJywnMjUnXV0sYW5zOidCJ30sCiAge246MTIsdGV4dDonRnJvbSBNb25kYXkgdG8gU2F0dXJkYXksIHRoZSBzcG9ydHMgY2VudHJlIGlzIG9wZW4gZnJvbScsb3B0czpbWydBJywnNiBhLm0uJ10sWydCJywnNyBhLm0uJ10sWydDJywnOSBhLm0uJ11dLGFuczonQSd9LAogIHtuOjEzLHRleHQ6J0lmIFN1ZSBnb2VzIHN3aW1taW5nLCBzaGUgbXVzdCB0YWtlJyxvcHRzOltbJ0EnLCdzb2FwJ10sWydCJywnYSBzd2ltbWluZyBoYXQnXSxbJ0MnLCdhIHRvd2VsJ11dLGFuczonQyd9LAogIHtuOjE0LHRleHQ6J0F0IHRoZSBzcG9ydHMgY2VudHJlLCB5b3UgY2FuIGJ1eScsb3B0czpbWydBJywnc2FuZHdpY2hlcyddLFsnQicsJ2ZydWl0J10sWydDJywnZHJpbmtzJ11dLGFuczonQSd9LAogIHtuOjE1LHRleHQ6J0ppbSBhbmQgU3VlIGFyZSBnb2luZyB0byBnbyB0byB0aGUgc3BvcnRzIGNlbnRyZSBuZXh0JyxvcHRzOltbJ0EnLCdXZWRuZXNkYXknXSxbJ0InLCdUaHVyc2RheSddLFsnQycsJ1NhdHVyZGF5J11dLGFuczonQid9LApdOwoKdmFyIFA0QW5zID0gewogIDE2OlsnYXByaWwnLCd0aGUgYXByaWwnLCdhcHJpbCBob3RlbCddLAogIDE3OlsnbGVpdGgnXSwKICAxODpbJzEwLjIwJywnMTA6MjAnLCd0ZW4gdHdlbnR5JywndHdlbnR5IHBhc3QgdGVuJywnMTAyMCddLAogIDE5OlsnYm9vaycsJ2EgYm9vaycsJ3RoZSBib29rJywnaWFuXCdzIGJvb2snLCdoaXMgYm9vayddLAogIDIwOlsndHVlc2RheSddLAp9Owp2YXIgUDVBbnMgPSB7CiAgMjE6Wyc3LjMwJywnNzozMCcsJzE5LjMwJywnc2V2ZW4gdGhpcnR5JywnaGFsZiBwYXN0IHNldmVuJywnNy4zMHBtJywnNy4zMCBwbSddLAogIDIyOlsnbm9ydGgnXSwKICAyMzpbJzNyZCcsJzMnLCd0aGlyZCcsJzAzJywnM3JkIG1heScsJ3RoZSB0aGlyZCddLAogIDI0OlsndC1zaGlydHMnLCd0IHNoaXJ0cycsJ3RzaGlydHMnLCd0ZWUgc2hpcnRzJywndC1zaGlydCcsJ3RzaGlydCddLAogIDI1OlsnMTInLCdcdTAwQTMxMicsJ3R3ZWx2ZScsJ3R3ZWx2ZSBwb3VuZHMnLCcxMiBwb3VuZHMnXSwKfTsKCi8vID09PT09IFJlbmRlciA9PT09PQpmdW5jdGlvbiBlc2NhcGVIdG1sKHMpe3JldHVybiBTdHJpbmcocykucmVwbGFjZSgvWyY8PiInXS9nLGZ1bmN0aW9uKGMpe3JldHVybnsnJic6JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicmcXVvdDsnLCInIjonJiMzOTsnfVtjXX0pfQpmdW5jdGlvbiByZW5kZXJNQ1EobGlzdEVsLCBkYXRhKXsKICBkYXRhLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkaXYuY2xhc3NOYW1lPSdxLWl0ZW0nOyBkaXYuaWQ9J3EnK3EubjsgZGl2LmRhdGFzZXQucWlkPXEubjsKICAgIHZhciBvcHRzSFRNTD0nJzsKICAgIHEub3B0cy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICBvcHRzSFRNTCArPSAnPGxhYmVsIGNsYXNzPSJvcHQiIGRhdGEtbGV0dGVyPSInK29bMF0rJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJxJytxLm4rJyIgdmFsdWU9Iicrb1swXSsnIj48c3BhbiBjbGFzcz0ib3B0LWxldHRlciI+JytvWzBdKyc8L3NwYW4+ICcrZXNjYXBlSHRtbChvWzFdKSsnPC9sYWJlbD4nOwogICAgfSk7CiAgICBkaXYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzY2FwZUh0bWwocS50ZXh0KSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InEtb3B0cyI+JytvcHRzSFRNTCsnPC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmVlZGJhY2siPjwvZGl2Pic7CiAgICBsaXN0RWwuYXBwZW5kQ2hpbGQoZGl2KTsKICB9KTsKfQovLyBQYXJ0IDIgbWF0Y2hpbmc6IGVhY2ggcGVyc29uIFx1MjE5MiBjaG9vc2UgQS1ICmZ1bmN0aW9uIHJlbmRlck1hdGNoaW5nKGxpc3RFbCwgZGF0YSl7CiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZGl2LmNsYXNzTmFtZT0ncS1pdGVtJzsgZGl2LmlkPSdxJytxLm47IGRpdi5kYXRhc2V0LnFpZD1xLm47CiAgICB2YXIgb3B0c0hUTUw9Jyc7CiAgICBbJ0EnLCdCJywnQycsJ0QnLCdFJywnRicsJ0cnLCdIJ10uZm9yRWFjaChmdW5jdGlvbihMKXsKICAgICAgb3B0c0hUTUwgKz0gJzxsYWJlbCBjbGFzcz0ib3B0IiBkYXRhLWxldHRlcj0iJytMKyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icScrcS5uKyciIHZhbHVlPSInK0wrJyI+PHNwYW4gY2xhc3M9Im9wdC1sZXR0ZXIiPicrTCsnPC9zcGFuPjwvbGFiZWw+JzsKICAgIH0pOwogICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJxLXRleHQiPjxiIGNsYXNzPSJxbiI+JytxLm4rJy48L2I+PHNwYW4+Jytlc2NhcGVIdG1sKHEucGVyc29uKSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InEtb3B0cyI+JytvcHRzSFRNTCsnPC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmVlZGJhY2siPjwvZGl2Pic7CiAgICBsaXN0RWwuYXBwZW5kQ2hpbGQoZGl2KTsKICB9KTsKfQoKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0MUxpc3QnKSxQMSk7CnJlbmRlck1hdGNoaW5nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0Mkxpc3QnKSxQMik7CnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDNMaXN0JyksUDMpOwoKLy8gPT09PT0gV2lyZSBjbGlja3MgPT09PT0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24ob3B0KXsKICBvcHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgdmFyIGlucHV0PW9wdC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOwogICAgdmFyIGdyb3VwPW9wdC5wYXJlbnRFbGVtZW50OwogICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7by5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpfSk7CiAgICBvcHQuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKICAgIGlucHV0LmNoZWNrZWQ9dHJ1ZTsKICAgIHVwZGF0ZVByb2dyZXNzKCk7CiAgfSk7Cn0pOwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5wdXQtYmxhbmsnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXsKICBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkYXRlUHJvZ3Jlc3MpOwp9KTsKCmZ1bmN0aW9uIGdldE1jcShxaWQpe3ZhciBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InEnK3FpZCsnIl06Y2hlY2tlZCcpOyByZXR1cm4gcz9zLnZhbHVlOm51bGx9CmZ1bmN0aW9uIGdldElucChxaWQpe3ZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKTsgcmV0dXJuIGVsP2VsLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1suLF0kLywnJyk6Jyd9CmZ1bmN0aW9uIGFuc3dlcmVkKCl7CiAgdmFyIG49MDsKICBmb3IodmFyIGk9MTtpPD0xNTtpKyspaWYoZ2V0TWNxKGkpKW4rKzsKICBmb3IodmFyIGo9MTY7ajw9MjU7aisrKWlmKGdldElucChqKSluKys7CiAgcmV0dXJuIG47Cn0KZnVuY3Rpb24gdXBkYXRlUHJvZ3Jlc3MoKXsKICB2YXIgYT1hbnN3ZXJlZCgpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJlZENvdW50JykudGV4dENvbnRlbnQ9YTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ0ZpbGwnKS5zdHlsZS53aWR0aD0oYS8yNSoxMDApKyclJzsKfQoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Ym1pdEJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIHZhciBzY29yZT0wLCBwYXJ0U2NvcmVzPXsxOjAsMjowLDM6MCw0OjAsNTowfTsKICAvLyBNQ1EgcGFydHMgMSwgMwogIFtQMSxQM10uZm9yRWFjaChmdW5jdGlvbihwYXJ0KXsKICAgIHBhcnQuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgICAgdmFyIHY9Z2V0TWNxKHEubiksIGl0ZW09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EnK3Eubik7CiAgICAgIGlmKCFpdGVtKXJldHVybjsKICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOwogICAgICBpdGVtLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIHZhciBMPW8uZGF0YXNldC5sZXR0ZXI7CiAgICAgICAgaWYoTD09PXEuYW5zKW8uY2xhc3NMaXN0LmFkZCgnY29ycmVjdC1vcHQnKTsKICAgICAgICBpZih2PT09TClpZihMIT09cS5hbnMpby5jbGFzc0xpc3QuYWRkKCd3cm9uZy1vcHQnKTsKICAgICAgfSk7CiAgICAgIHZhciBmYj1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpOwogICAgICBpZih2PT09cS5hbnMpe3Njb3JlKys7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE0IENvcnJlY3QgXHUyMDE0ICcrcS5hbnM7IGlmKHEubjw9NSlwYXJ0U2NvcmVzWzFdKys7IGVsc2UgcGFydFNjb3Jlc1szXSsrO30KICAgICAgZWxzZXtpdGVtLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGZiLnRleHRDb250ZW50PSdcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3QgYW5zd2VyOiAnK3EuYW5zKyh2PycgKHlvdSBjaG9zZSAnK3YrJyknOicgKG5vIGFuc3dlciknKX0KICAgIH0pOwogIH0pOwogIC8vIFBhcnQgMiBtYXRjaGluZwogIFAyLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgdj1nZXRNY3EocS5uKSwgaXRlbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncScrcS5uKTsKICAgIGlmKCFpdGVtKXJldHVybjsKICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsKICAgIGl0ZW0ucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgIHZhciBMPW8uZGF0YXNldC5sZXR0ZXI7CiAgICAgIGlmKEw9PT1xLmFucylvLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyk7CiAgICAgIGlmKHY9PT1MKWlmKEwhPT1xLmFucylvLmNsYXNzTGlzdC5hZGQoJ3dyb25nLW9wdCcpOwogICAgfSk7CiAgICB2YXIgZmI9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgIGlmKHY9PT1xLmFucyl7c2NvcmUrKzsgcGFydFNjb3Jlc1syXSsrOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgZmIudGV4dENvbnRlbnQ9J1x1MjcxNCBDb3JyZWN0IFx1MjAxNCAnK3EuYW5zO30KICAgIGVsc2V7aXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0IGFuc3dlcjogJytxLmFucysodj8nICh5b3UgY2hvc2UgJyt2KycpJzonIChubyBhbnN3ZXIpJyl9CiAgfSk7CiAgLy8gUGFydCA0IGlucHV0cwogIE9iamVjdC5rZXlzKFA0QW5zKS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgdj1nZXRJbnAocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFjY2VwdGVkPVA0QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgdmFyIG9rPWFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgcGFydFNjb3Jlc1s0XSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyl9IGVsc2Uge2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGVsLnRpdGxlPSdDb3JyZWN0OiAnK2FjY2VwdGVkLnNsaWNlKDAsMykuam9pbignIC8gJyl9CiAgfSk7CiAgLy8gUGFydCA1IGlucHV0cwogIE9iamVjdC5rZXlzKFA1QW5zKS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgdj1nZXRJbnAocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFjY2VwdGVkPVA1QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgdmFyIG9rPWFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgcGFydFNjb3Jlc1s1XSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyl9IGVsc2Uge2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGVsLnRpdGxlPSdDb3JyZWN0OiAnK2FjY2VwdGVkLnNsaWNlKDAsMykuam9pbignIC8gJyl9CiAgfSk7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZU5vdycpLnRleHRDb250ZW50PXNjb3JlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaW5hbFNjb3JlJykudGV4dENvbnRlbnQ9c2NvcmU7CiAgdmFyIHBjdD1NYXRoLnJvdW5kKHNjb3JlLzI1KjEwMCk7CiAgdmFyIG1zZyA9IHBjdD49ODUgPyAnXHV7MUYzQzZ9IEV4Y2VsbGVudCEgWW91ciBsaXN0ZW5pbmcgaXMgc3Ryb25nIFx1MjAxNCB5b3UgdW5kZXJzdGFuZCB0aGUgYXVkaW8gdmVyeSB3ZWxsLicKICAgICAgICAgIDogcGN0Pj03MCA\/ICdcdXsxRjQ0RH0gR29vZCBqb2IhIFRyeSB0aGUgaGFyZGVyIHBhcnRzICg0LTUpIG9uY2UgbW9yZSB0byBnZXQgZXZlbiBiZXR0ZXIuJwogICAgICAgICAgOiBwY3Q+PTUwID8gJ1x1ezFGNERBfSBLZWVwIHByYWN0aXNpbmcgXHUyMDE0IHJlLWxpc3RlbiB0byB0aGUgcGFydHMgd2hlcmUgeW91IG1pc3NlZCBhbnN3ZXJzLicKICAgICAgICAgIDogJ1x1ezFGNEFBfSBEb25cdTIwMTl0IHdvcnJ5LiBUcnkgc2xvd2luZyB0aGUgYXVkaW8gKFx1ezFGNDIyfSBidXR0b24pIGFuZCB1c2UgdGhlIHRyYW5zY3JpcHQgdG8gc3R1ZHkuJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c01zZycpLnRleHRDb250ZW50PW1zZzsKICB2YXIgc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmVQYXJ0cycpOwogIHNwLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJzcC1pdGVtIj48Yj4nK3BhcnRTY29yZXNbMV0rJy81PC9iPlBhcnQgMTwvZGl2PicrCiAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNwLWl0ZW0iPjxiPicrcGFydFNjb3Jlc1syXSsnLzU8L2I+UGFydCAyPC9kaXY+JysKICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3AtaXRlbSI+PGI+JytwYXJ0U2NvcmVzWzNdKycvNTwvYj5QYXJ0IDM8L2Rpdj4nKwogICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzcC1pdGVtIj48Yj4nK3BhcnRTY29yZXNbNF0rJy81PC9iPlBhcnQgNDwvZGl2PicrCiAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNwLWl0ZW0iPjxiPicrcGFydFNjb3Jlc1s1XSsnLzU8L2I+UGFydCA1PC9kaXY+JzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c0Jhbm5lcicpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNCYW5uZXInKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J2NlbnRlcid9KX0sMTIwKTsKfSk7Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICBpZighY29uZmlybSgnUmVzZXQgYWxsIGFuc3dlcnM\/IFlvdXIgbm90ZXMgd2lsbCBhbHNvIGJlIGNsZWFyZWQuJykpcmV0dXJuOwogIGxvY2F0aW9uLnJlbG9hZCgpOwp9KTsKfSkoKTsK'));<\/script>","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) 4 KET 4 &mdash; Test 1 Listening Listen to 5 parts with 25 questions. Use the YouTube audio above, jump to each part, take notes, and get instant auto-grading. ~30 minutes 5 Parts &#183; [&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-4658","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4658","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=4658"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4658\/revisions"}],"predecessor-version":[{"id":5860,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4658\/revisions\/5860"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=4658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}