{"id":2670,"date":"2026-06-13T10:50:52","date_gmt":"2026-06-13T10:50:52","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-movers-1-test-2-rw\/"},"modified":"2026-06-13T10:50:52","modified_gmt":"2026-06-13T10:50:52","slug":"cambridge-movers-1-test-2-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-movers-1-test-2-rw\/","title":{"rendered":"Cambridge Movers 1 &#8211; Test 2 (Reading &#038; Writing)"},"content":{"rendered":"<!--\n================================================================\nAE4U &#183; YLE MOVERS READING & WRITING &#8212; Test 2 (Movers 1)\n6 parts &#183; 40 questions &#183; auto-graded\nP1 copy-word &#183; P2 yes\/no &#183; P3 dialogue MCQ &#183; P4 story cloze+title &#183; P5 open cloze &#183; P6 grammar MCQ\n================================================================\n-->\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.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:root{\n  --accent-1:#8B5CF6; --accent-2:#EC4899; --gold:#FBBF24; --green:#10B981; --red:#EF4444;\n  --light-1:#F5F3FF; --light-2:#FAF5FF; --white:#FFFFFF;\n  --text:#0F172A; --muted:#475569; --subtle:#64748B; --border:#E2E8F0;\n  --r-10:10px; --r-16:16px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06);\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:980px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit !important;cursor:pointer;border:none;background:none}\n.hero{position:relative;min-height:240px;padding:64px 0 36px;background:linear-gradient(135deg,#8B5CF6 0%,#EC4899 60%,#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:12px}\n.hero h1{font-size:clamp(28px,5vw,44px);line-height:1.05;margin-bottom:12px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:15.5px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:16px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px}\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.mini-prog{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);padding:10px 0}\n.mini-prog-inner{display:flex;align-items:center;gap:14px}\n.mini-prog-bar{flex:1;height:6px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.mini-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.mini-prog-label{font-size:12px;color:var(--muted);font-weight:700;min-width:120px}\n.mini-prog-score{font-weight:800;color:var(--accent-1);font-size:14px;min-width:84px}\n.part-section{padding:44px 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:20px}\n.part-num{flex-shrink:0;width:56px;height:56px;border-radius:16px;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:24px;box-shadow:0 8px 22px rgba(139,92,246,.3)}\n.part-head-text h2{font-size:24px;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;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:14.5px;line-height:1.55;max-width:740px}\n.card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:20px;margin-top:14px}\n.show-ans-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;background:#FEF3C7;color:#7B5B00;font-weight:700;font-size:12px;border:1px solid #E8D88E;cursor:pointer}\n.show-ans-btn:hover{background:#FDE68A}\n.input-blank{display:inline-block;min-width:150px;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;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.input-blank.revealed{border-bottom-color:var(--gold);background:#FEF3C7;color:#7B5B00}\n\/* P1\/P4 word bank *\/\n.wbank{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}\n.wbank.b9{grid-template-columns:repeat(3,1fr)}\n.wchip{border:1.5px solid var(--border);border-radius:12px;padding:8px;text-align:center;background:#FAFBFC}\n.wchip img{width:100%;aspect-ratio:1\/1;object-fit:contain;border-radius:8px;background:#fff;display:block}\n.wchip .wlabel{margin-top:6px;font-weight:700;font-size:13.5px;color:var(--text)}\n.wchip.used{opacity:.4}\n.defrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 0;border-top:1px dashed var(--border)}\n.defrow:first-child{border-top:none}\n.defrow .qn{font-weight:800;color:var(--accent-1);min-width:26px}\n.defrow .dtext{flex:1;min-width:220px;font-size:15px}\n.defrow.example{opacity:.7}\n.defrow .ex-tag{background:var(--gold);color:#fff;padding:2px 8px;border-radius:6px;font-size:11px;margin-left:6px}\n\/* yes\/no + MCQ *\/\n.yn-row,.mcq-row{padding:14px 0;border-top:1px dashed var(--border)}\n.yn-row:first-child,.mcq-row:first-child{border-top:none}\n.yn-q,.mcq-q{font-size:15px;font-weight:600;margin-bottom:8px;display:flex;gap:10px}\n.yn-q .qn,.mcq-q .qn{color:var(--accent-1);font-weight:800;min-width:26px}\n.yn-opts{display:flex;gap:10px}\n.yn-btn{padding:8px 22px;border-radius:999px;border:2px solid var(--border);font-weight:700;font-size:14px;background:#fff;cursor:pointer;min-height:40px}\n.yn-btn.sel{border-color:var(--accent-1);background:linear-gradient(100deg,rgba(139,92,246,.12),rgba(236,72,153,.12))}\n.yn-btn.correct{border-color:var(--green);background:rgba(16,185,129,.12);color:#065F46}\n.yn-btn.wrong{border-color:var(--red);background:rgba(239,68,68,.10);color:#991B1B}\n.mcq-opts{display:flex;flex-direction:column;gap:8px;margin-left:36px}\n.mcq-opt{display:flex;align-items:center;gap:10px;padding:9px 13px;border-radius:10px;border:1.5px solid var(--border);background:#fff;cursor:pointer;font-size:14.5px;min-height:42px}\n.mcq-opt .ml{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;background:var(--light-1);color:var(--accent-1);font-weight:800;font-size:13px;flex-shrink:0}\n.mcq-opt.sel{border-color:var(--accent-1);background:var(--light-1)}\n.mcq-opt.correct{border-color:var(--green);background:rgba(16,185,129,.08)}\n.mcq-opt.wrong{border-color:var(--red);background:rgba(239,68,68,.08)}\n.story{font-size:15.5px;line-height:2.0;color:var(--text);background:#FAFBFC;border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin:12px 0}\n.story img{max-width:420px;width:100%;height:auto;border-radius:10px;display:block;margin:0 auto 14px}\n.gap-select{font-family:inherit !important;font-size:14.5px;font-weight:700;color:var(--accent-1);border:1.5px solid var(--accent-1);border-radius:8px;padding:3px 6px;background:#fff;cursor:pointer}\n.gap-select.correct{border-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.gap-select.wrong{border-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n.tickbox{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;margin-top:8px;cursor:pointer;font-weight:600;font-size:14.5px}\n.tickbox .tb{width:22px;height:22px;border-radius:6px;border:2px solid var(--border);display:grid;place-items:center;color:transparent}\n.tickbox.sel{border-color:var(--accent-1);background:var(--light-1)}\n.tickbox.sel .tb{background:var(--accent-1);color:#fff;border-color:transparent}\n.tickbox.correct{border-color:var(--green);background:rgba(16,185,129,.08)}\n.tickbox.wrong{border-color:var(--red);background:rgba(239,68,68,.08)}\n.hint{font-size:12.5px;color:var(--muted);text-align:center;margin-top:10px;background:var(--light-1);border:1px solid var(--border);border-radius:8px;padding:8px 12px}\n.submit-panel{background:linear-gradient(135deg,#fff,var(--light-1));border:1.5px solid var(--border);border-radius:20px;padding:28px;text-align:center;margin:36px 0}\n.submit-panel h3{font-family:'Fraunces',serif !important;font-size:22px;margin-bottom:6px}\n.submit-panel .intro{color:var(--muted);font-size:14px;margin-bottom:16px}\n.sp-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}\n.btn-submit-big{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:800;font-size:16px;box-shadow:0 10px 26px rgba(139,92,246,.35)}\n.btn-reset-big{padding:14px 24px;border-radius:999px;background:#fff;border:1.5px solid var(--border);font-weight:700;font-size:15px;color:var(--text)}\n.results-banner{display:none;background:linear-gradient(135deg,#8B5CF6,#EC4899);color:#fff;border-radius:20px;padding:30px;text-align:center;margin:24px 0}\n.results-banner.show{display:block}\n.results-banner h3{font-family:'Fraunces',serif !important;font-size:22px;margin-bottom:8px}\n.score-big{font-family:'Fraunces',serif !important;font-size:56px;line-height:1;margin:8px 0}\n.score-parts{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}\n.sp-item{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.26);border-radius:12px;padding:8px 14px;font-size:13px;font-weight:700}\n.sp-item b{display:block;font-size:18px;font-family:'Fraunces',serif}\n.footer{background:#0C1322;color:rgba(255,255,255,.7);padding:28px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold)}\n@media(max-width:720px){.wbank{grid-template-columns:repeat(2,1fr)}.wbank.b9{grid-template-columns:repeat(3,1fr)}}\n<\/style>\n\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge YLE &middot; Movers<\/span>\n    <h1 class=\"serif\">Movers 1 &mdash; Test 2 <span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">6 parts with 40 questions. Read carefully, choose or write your answers, then submit to grade. Each part has a <b>Show Answers<\/b> button to study.<\/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>6 Parts &middot; 40 Questions<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>Auto-grade + Show Answers<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"mini-prog\">\n  <div class=\"wrap mini-prog-inner\">\n    <div class=\"mini-prog-score\">Score <span id=\"scoreNow\">0<\/span>\/40<\/div>\n    <div class=\"mini-prog-bar\"><div class=\"mini-prog-fill\" id=\"progFill\"><\/div><\/div>\n    <div class=\"mini-prog-label\"><span id=\"answeredCount\">0<\/span> of 40 answered<\/div>\n  <\/div>\n<\/div>\n\n<section class=\"part-section\" id=\"part1\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">1<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 1&ndash;6 &middot; Look and write<\/span>\n    <h2 class=\"serif\">Choose the correct words and write them<\/h2>\n    <p>Look at the pictures and read the sentences. Choose the correct word and write it on the line. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"wbank\" id=\"p1Bank\"><\/div>\n    <div id=\"p1Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P1ALL\">&#128065; Show Answers (Part 1)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part2\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">2<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 7&ndash;12 &middot; Yes \/ No<\/span>\n    <h2 class=\"serif\">Look at the picture and read &mdash; yes or no?<\/h2>\n    <p>Look at the picture. Read the sentences. Are they right? Write <b>yes<\/b>. Are they wrong? Write <b>no<\/b>. There are two examples.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/06\/m1t2rw_p2_scene.jpg\" alt=\"Part 2 scene: people in a library\" style=\"max-width:640px;width:100%;border-radius:12px;display:block;margin:0 auto 16px\">\n    <div id=\"p2Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P2ALL\">&#128065; Show Answers (Part 2)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part3\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">3<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 13&ndash;18 &middot; Choose the answer<\/span>\n    <h2 class=\"serif\">Read the conversation. Choose the best answer<\/h2>\n    <p>Paul is talking to his friend Sally. What does Sally say? Choose the best answer (A, B or C). There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div id=\"p3Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P3ALL\">&#128065; Show Answers (Part 3)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part4\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">4<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 19&ndash;25 &middot; Story &amp; title<\/span>\n    <h2 class=\"serif\">Read the story. Choose a word for each gap<\/h2>\n    <p>Choose the right word from the pictures for each gap and pick it from the menu. Then choose the best name for the story. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"wbank b9\" id=\"p4Bank\"><\/div>\n    <div class=\"story\" id=\"p4Story\"><\/div>\n    <div style=\"margin-top:14px\"><b>(25) Now choose the best name for the story:<\/b><div id=\"p4Title\"><\/div><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P4ALL\">&#128065; Show Answers (Part 4)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part5\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">5<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 26&ndash;35 &middot; Complete the sentences<\/span>\n    <h2 class=\"serif\">Read the story. Write words to complete the sentences<\/h2>\n    <p>Look at the pictures and read the story <b>&ldquo;What a nice old woman!&rdquo;<\/b> Write words to complete the sentences. You can use 1, 2 or 3 words. There are two examples.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"story\" id=\"p5Story\"><\/div>\n    <div id=\"p5Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P5ALL\">&#128065; Show Answers (Part 5)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part6\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">6<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 36&ndash;40 &middot; Choose the right word<\/span>\n    <h2 class=\"serif\">Read the text. Choose the right words<\/h2>\n    <p>Read about <b>Snakes<\/b>. Choose the right word (A, B or C) for each gap. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/06\/m1t2rw_p6_snakes.jpg\" alt=\"Two snakes\" style=\"max-width:520px;width:100%;display:block;margin:0 auto 14px\">\n    <div class=\"story\" id=\"p6Story\" style=\"background:#fff;border:none;padding:0\"><\/div>\n    <div id=\"p6Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P6ALL\">&#128065; Show Answers (Part 6)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<div class=\"wrap\">\n  <div class=\"submit-panel\">\n    <h3>&#127919; Finished all 40 questions?<\/h3>\n    <p class=\"intro\">Submit to grade your whole test, or use &#128065; Show Answers per part.<\/p>\n    <div class=\"sp-buttons\">\n      <button class=\"btn-submit-big\" id=\"submitBtn\">&#10003; Submit &amp; Grade All<\/button>\n      <button class=\"btn-reset-big\" id=\"resetBtn\">&#128260; Reset Test<\/button>\n    <\/div>\n  <\/div>\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>&#128218; Your Movers 1 Test 2 Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/40<\/div>\n    <p id=\"resultsMsg\">Great work!<\/p>\n    <div class=\"score-parts\" id=\"scoreParts\"><\/div>\n  <\/div>\n<\/div>\n\n<footer class=\"footer\"><div class=\"wrap\"><p>&copy; 2026 All English 4U &middot; <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\">All Cambridge Tests<\/a> &middot; <a href=\"https:\/\/allenglish4u.com\/vi\/contact\/\">Li\u00ean h\u1ec7<\/a><\/p><\/div><\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewp2YXIgSU1HPSdodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDYvJzsKLyogPT09PT0gREFUQSA9PT09PSAqLwp2YXIgUDFfQkFOSz1bCiAge3c6J2Egc2FuZHdpY2gnLGltZzonbTF0MnJ3X3AxX3NhbmR3aWNoLmpwZyd9LHt3OidDRHMnLGltZzonbTF0MnJ3X3AxX2Nkcy5qcGcnfSwKICB7dzondmlkZW9zJyxpbWc6J20xdDJyd19wMV92aWRlb3MuanBnJ30se3c6J2Egd2hhbGUnLGltZzonbTF0MnJ3X3AxX3doYWxlLmpwZyd9LAogIHt3OidhIGRvbHBoaW4nLGltZzonbTF0MnJ3X3AxX2RvbHBoaW4uanBnJ30se3c6J3NvdXAnLGltZzonbTF0MnJ3X3AxX3NvdXAuanBnJ30sCiAge3c6J2NvZmZlZScsaW1nOidtMXQycndfcDFfY29mZmVlLmpwZyd9LHt3OidhIHNoYXJrJyxpbWc6J20xdDJyd19wMV9zaGFyay5qcGcnfQpdOwp2YXIgUDFfRVg9e2Q6J1RoaXMgaXMgdGhlIGJpZ2dlc3QgYW5pbWFsIGluIHRoZSB3b3JsZC4nLGE6J2Egd2hhbGUnfTsKdmFyIFAxPVsKICB7bjoxLGQ6J1lvdSBjYW4gbGlzdGVuIHRvIG11c2ljIHdpdGggdGhlc2UuJyxhOidDRHMnLGFjYzpbJ2NkcycsJ2NkJ119LAogIHtuOjIsZDonV2UgY2FuIHdhdGNoIHRoZXNlIGF0IGhvbWUgYXQgdGhlIHdlZWtlbmQuJyxhOid2aWRlb3MnLGFjYzpbJ3ZpZGVvcycsJ3ZpZGVvJ119LAogIHtuOjMsZDonT24gY29sZCBkYXlzIGl0IGlzIGdvb2QgdG8gaGF2ZSBhIGhvdCBib3dsIG9mIHRoaXMuJyxhOidzb3VwJyxhY2M6Wydzb3VwJ119LAogIHtuOjQsZDonUGVvcGxlIGFyZSBhZnJhaWQgb2YgdGhpcyBhbmltYWwsIHdoaWNoIGxpdmVzIGluIHRoZSBzZWEuJyxhOidhIHNoYXJrJyxhY2M6WydzaGFyaycsJ2Egc2hhcmsnXX0sCiAge246NSxkOidTb21lIHBlb3BsZSBkcmluayB0aGlzIGhvdCwgd2l0aCBtaWxrIGFuZCBzdWdhci4nLGE6J2NvZmZlZScsYWNjOlsnY29mZmVlJ119LAogIHtuOjYsZDonUHV0IGJ1dHRlciBhbmQgY2hlZXNlIGJldHdlZW4gYnJlYWQgYW5kIHlvdSBoYXZlIG9uZSBvZiB0aGVzZS4nLGE6J2Egc2FuZHdpY2gnLGFjYzpbJ3NhbmR3aWNoJywnYSBzYW5kd2ljaCddfQpdOwp2YXIgUDJfRVg9W3tkOidUaGUgbWFuIGF0IHRoZSB0YWJsZSBpcyB3ZWFyaW5nIGdsYXNzZXMuJyxhOid5ZXMnfSx7ZDonVGhlIGxpdHRsZSBnaXJsIGlzIGNhcnJ5aW5nIGEgZG9nLicsYTonbm8nfV07CnZhciBQMj1bCiAge246NyxkOidUaGUgd29tYW4gYmV0d2VlbiB0aGUgYm9va2Nhc2VzIGlzIHdlYXJpbmcgYSByZWQgZHJlc3MuJyxhOid5ZXMnfSwKICB7bjo4LGQ6J1RoZSBjYXQgdW5kZXIgdGhlIHRhYmxlIGlzIGxvb2tpbmcgYXQgdGhlIGJveS4nLGE6J3llcyd9LAogIHtuOjksZDonT25lIG9mIHRoZSBib3lzIGlzIHBsYXlpbmcgd2l0aCBhIHJvYm90LicsYTonbm8nfSwKICB7bjoxMCxkOidUaGUgd29tYW4gYXQgdGhlIHRhYmxlIGlzIHB1dHRpbmcgb24gaGVyIGphY2tldC4nLGE6J25vJ30sCiAge246MTEsZDoiSXQncyBhIGJlYXV0aWZ1bCBzdW5ueSBkYXkuIixhOidubyd9LAogIHtuOjEyLGQ6J09uZSBvZiB0aGUgd29tZW4gaGFzIGdvdCBicm93biBjdXJseSBoYWlyLicsYToneWVzJ30KXTsKdmFyIFAzX0VYPXtxOidIZWxsbywgU2FsbHkuIEhvdyBhcmUgeW91PycsYW5zOidBJyxvcHRzOlt7bDonQScsdDoiSSdtIHZlcnkgd2VsbCwgdGhhbmtzLiJ9LHtsOidCJyx0OiJJdCdzIGdvb2QsIHRoYW5rcy4ifSx7bDonQycsdDoiSSdtIGdvaW5nIHRvIHNjaG9vbC4ifV19Owp2YXIgUDM9WwogIHtuOjEzLHE6J1doYXQgZGlkIHlvdSBkbyBvbiB5b3VyIGJpcnRoZGF5PycsYW5zOidCJyxvcHRzOlt7bDonQScsdDonSXQgd2FzIG9uIFNhdHVyZGF5Lid9LHtsOidCJyx0OidJIGhhZCBhIHBhcnR5IGF0IGhvbWUuJ30se2w6J0MnLHQ6J1llcywgSSBkaWQuJ31dfSwKICB7bjoxNCxxOidEaWQgeW91IGhhdmUgYSBjYWtlPycsYW5zOidDJyxvcHRzOlt7bDonQScsdDonWWVzLCBJIGRvLid9LHtsOidCJyx0OidZZXMsIEkgaGF2ZSBvbmUuJ30se2w6J0MnLHQ6J1llcywgSSBkaWQuJ31dfSwKICB7bjoxNSxxOidIb3cgbWFueSBmcmllbmRzIGNhbWU\/JyxhbnM6J0EnLG9wdHM6W3tsOidBJyx0OiJJIGRvbid0IGtub3cuIn0se2w6J0InLHQ6IkkgZG9uJ3QgdGhpbmsuIn0se2w6J0MnLHQ6IkknbSBhZnJhaWQuIn1dfSwKICB7bjoxNixxOidIYXZlIHlvdSBnb3QgYW55IHBob3RvcyBvZiB0aGUgcGFydHk\/JyxhbnM6J0MnLG9wdHM6W3tsOidBJyx0OidZZXMsIGV4Y3VzZSBtZS4nfSx7bDonQicsdDonWWVzLCBwbGVhc2UuJ30se2w6J0MnLHQ6IlllcywgdGhleSdyZSBoZXJlLiJ9XX0sCiAge246MTcscToiVGhpcyBvbmUncyB2ZXJ5IGdvb2QuIixhbnM6J0InLG9wdHM6W3tsOidBJyx0OiJZZXMsIGl0J3Mgd2VsbC4ifSx7bDonQicsdDonWWVzLCBJIGxpa2UgaXQuJ30se2w6J0MnLHQ6IlllcywgaXQncyB1Z2x5LiJ9XX0sCiAge246MTgscTonT2gsIGxvb2ssIHRoZSBsZXNzb24gaXMgc3RhcnRpbmcuJyxhbnM6J0EnLG9wdHM6W3tsOidBJyx0OidPaCwgSSBtdXN0IGdvLid9LHtsOidCJyx0OidHb29kIG1vcm5pbmcuJ30se2w6J0MnLHQ6Ikl0J3MgbWluZS4ifV19Cl07CnZhciBQNF9CQU5LPVsnY2FyJywnY2FycmllZCcsJ2FwcGxlJywncXVpZXQnLCd3ZXQnLCdwaWNuaWMnLCd3YWxrZWQnLCdzYXcnLCdzaGVlcCddOwovKiBQNCBzdG9yeTogZ2FwcyAxOS0yNCwgRXg9Y2FyIHByZS1maWxsZWQgKi8KdmFyIFA0X1BBUlRTPVsKICB7dDonTGFzdCB3ZWVrZW5kLCBJIHdlbnQgdG8gdGhlIGNvdW50cnlzaWRlLiBNeSBmYXRoZXIgZHJvdmUgdGhlICd9LAogIHtleDonY2FyJ30sCiAge3Q6JyBvbiB0byBzb21lIGdyYXNzIGJldHdlZW4gdHdvIHRyZWVzLiBXZSBhbGwgZ290IG91dCBhbmQgJ30sCiAge2c6MTksYTond2Fsa2VkJ30sCiAge3Q6JyB0byBhIGZpZWxkIHRoZXJlLiBJIHRvb2sgYSBwaWN0dXJlIG9mIHNvbWUgZnVubnkgYmxhY2sgYW5kIHdoaXRlICd9LAogIHtnOjIwLGE6J3NoZWVwJ30sCiAge3Q6JyBiZWNhdXNlIEkgbG92ZSBmYXJtIGFuaW1hbHMuIFRoZW4gbXkgZmF0aGVyIHNob3V0ZWQgJmxzcXVvO0xvb2sgYmVoaW5kIHlvdSEmcnNxdW87IHNvIEkgZGlkLiBJICd9LAogIHtnOjIxLGE6J3Nhdyd9LAogIHt0OicgYSBiaWcgaG9yc2UuIEl0IHdhcyB2ZXJ5IG5lYXIgdG8gbWUuIEkgd2FzIGFmcmFpZCBhbmQgcmFuIHRvIHRoZSByaXZlciBhbmQganVtcGVkIGluISBNeSBwYXJlbnRzIGxhdWdoZWQuICZsc3F1bztUaGUgaG9yc2UgZG9lc24mcnNxdW87dCB3YW50IHRvIGh1cnQgeW91LiBJdCZyc3F1bztzIGEgbmljZSBob3JzZSwmcnNxdW87IG15IG11bSBzYWlkLiAmbHNxdW87WW91ciBjbG90aGVzIGFyZSAnfSwKICB7ZzoyMixhOid3ZXQnfSwKICB7dDonIG5vdy4gVGFrZSB0aGlzIHRvd2VsLiBBbmQgaGVyZSwgZ2l2ZSB0aGlzIG5pY2UsIGdyZWVuICd9LAogIHtnOjIzLGE6J2FwcGxlJ30sCiAge3Q6JyB0byB0aGUgaG9yc2UuJnJzcXVvOyBUaGUgaG9yc2UgYXRlIGl0LiBJIHdhcyBodW5ncnkgdG9vIGFuZCBJIGVuam95ZWQgb3VyICd9LAogIHtnOjI0LGE6J3BpY25pYyd9LAogIHt0OicgYnkgdGhlIHJpdmVyLiBXZSBoYWQgdGhyZWUgZGlmZmVyZW50IHNhbGFkcywgbXkgZmF2b3VyaXRlIGNoZWVzZSBhbmQgc29tZSB3YXRlcm1lbG9uLid9Cl07CnZhciBQNF9USVRMRT17bjoyNSxhOidUaGUgaG9yc2UgYXQgdGhlIHJpdmVyJyxvcHRzOlsnV29ya2luZyBvbiB0aGUgZmFybScsJ1RoZSBuZXcgc3dpbW1pbmcgcG9vbCcsJ1RoZSBob3JzZSBhdCB0aGUgcml2ZXInXX07CnZhciBQNV9TVE9SWT0iTXkgbmFtZSZyc3F1bztzIERhaXN5IGFuZCBJJnJzcXVvO20gdGVuLiBMYXN0IGhvbGlkYXkgSSB3YW50ZWQgdG8gc2VlIG15IGdyYW5kbWEuIFNoZSBsaXZlcyBpbiBhIHNtYWxsIHZpbGxhZ2UgYnkgdGhlIHNlYS4gSSBsaWtlIGl0IHRoZXJlIGJlY2F1c2UgSSBjYW4gc3dpbSBhbmQgcGxheSBvbiB0aGUgYmVhY2guIEkgd2VudCB0byBHcmFuZG1hJnJzcXVvO3MgYnkgYnVzLiBGaXJzdCwgSSB3ZW50IHdpdGggbXkgbW90aGVyIHRvIHRoZSBidXMgc3RvcCBhdCB0aGUgZW5kIG9mIG91ciBzdHJlZXQuIEkgY2F1Z2h0IHRoZSBudW1iZXIgMyBidXMgdG8gdGhlIGJpZyBidXMgc3RhdGlvbi4gVGhlbiBJIGhhZCB0byBjYXRjaCBhbm90aGVyIGJ1cyAmbmRhc2g7IHRoZSBudW1iZXIgMjAuIEJ1dCBJIHdhcyBodW5ncnkuIEkgd2VudCB0byBhIHNob3AgZmlyc3QgdG8gYnV5IGEgY2hpY2tlbiBzYW5kd2ljaCBhbmQgc29tZSBsZW1vbmFkZS4gV2hlbiBJIGNhbWUgb3V0LCBJIHNhdyB0aGUgYnVzIHN0YXJ0LiBJIHJhbiBhbmQganVtcGVkIG9uIGl0LiBJIHNhdCBuZXh0IHRvIGFuIG9sZCB3b21hbiB3aG8gdGFsa2VkIGEgbG90ISBJdCB3YXMgdmVyeSBob3QgYW5kIEkgd2VudCB0byBzbGVlcC4gV2hlbiBJIHdva2UgdXAsIEkgd2FzbiZyc3F1bzt0IGluIG15IGdyYW5kbW90aGVyJnJzcXVvO3MgdmlsbGFnZSAmbmRhc2g7IEkgd2FzIGluIGEgYmlnIHRvd24hIEkgd2FzIG9uIHRoZSB3cm9uZyBidXMhIEkgd2FzIGFmcmFpZC4gVGhlIG9sZCB3b21hbiBzYWlkLCAmbHNxdW87V2hhdCZyc3F1bztzIHRoZSBtYXR0ZXI\/JnJzcXVvOyBJIHRvbGQgaGVyIG15IHN0b3J5LiBXZSBnb3Qgb2ZmIHRoZSBidXMgYW5kIHNoZSBwaG9uZWQgbXkgZ3JhbmRtYS4gVGhlbiBzaGUgYm91Z2h0IG1lIGFub3RoZXIgYnVzIHRpY2tldCBhbmQgdG9vayBtZSB0byB0aGUgcmlnaHQgYnVzICZuZGFzaDsgdGhlIG9uZSB0aGF0IHdlbnQgdG8gbXkgZ3JhbmRtYSZyc3F1bztzIHZpbGxhZ2UuICZsc3F1bztUaGFuayB5b3UgdmVyeSBtdWNoISZyc3F1bzsgSSBzYWlkLiI7CnZhciBQNV9FWD1be2Q6J19fX19fIGlzIHRlbi4nLGE6J0RhaXN5J30se2Q6J0RhaXN5JnJzcXVvO3MgZ3JhbmRtb3RoZXIgbGl2ZXMgaW4nLGE6J2Egc21hbGwgdmlsbGFnZSd9XTsKdmFyIFA1PVsKICB7bjoyNixkOidEYWlzeSBsaWtlcyB0byBfX18gb24gdGhlIGJlYWNoLicsYWNjOlsnc3dpbSBhbmQgcGxheScsJ3BsYXkgYW5kIHN3aW0nXSxkaXNwOidzd2ltIGFuZCBwbGF5J30sCiAge246MjcsZDonRGFpc3kgZ290IG9uIGEgYnVzIGF0IHRoZSBlbmQgb2YgaGVyIF9fXy4nLGFjYzpbJ3N0cmVldCcsJ291ciBzdHJlZXQnLCd0aGUgc3RyZWV0J10sZGlzcDonc3RyZWV0J30sCiAge246MjgsZDonVGhlIG51bWJlciAzIGJ1cyB3ZW50IHRvIHRoZSBfX18uJyxhY2M6WydiaWcgYnVzIHN0YXRpb24nLCdidXMgc3RhdGlvbicsJ3RoZSBiaWcgYnVzIHN0YXRpb24nLCdzdGF0aW9uJ10sZGlzcDonKGJpZykgYnVzIHN0YXRpb24nfSwKICB7bjoyOSxkOidEYWlzeSBib3VnaHQgYSBfX18gdG8gZWF0IGJlY2F1c2Ugc2hlIHdhcyBodW5ncnkuJyxhY2M6WydjaGlja2VuIHNhbmR3aWNoJywnYSBjaGlja2VuIHNhbmR3aWNoJywnc2FuZHdpY2gnLCdhIHNhbmR3aWNoJ10sZGlzcDonKGNoaWNrZW4pIHNhbmR3aWNoJ30sCiAge246MzAsZDonVGhlIHBlcnNvbiBuZXh0IHRvIERhaXN5IG9uIHRoZSBidXMgd2FzIGFuIF9fXy4nLGFjYzpbJ29sZCB3b21hbicsJ2FuIG9sZCB3b21hbicsJ29sZCBsYWR5J10sZGlzcDonb2xkIHdvbWFuJ30sCiAge246MzEsZDonRGFpc3kgc2xlcHQgYmVjYXVzZSBpdCB3YXMgX19fIG9uIHRoZSBidXMuJyxhY2M6Wyd2ZXJ5IGhvdCcsJ2hvdCddLGRpc3A6Jyh2ZXJ5KSBob3QnfSwKICB7bjozMixkOidXaGVuIERhaXN5IHdva2UgdXAsIHRoZSBidXMgd2FzIGluIF9fXy4nLGFjYzpbJ2EgYmlnIHRvd24nLCdiaWcgdG93bicsJ3Rvd24nXSxkaXNwOidhIChiaWcpIHRvd24nfSwKICB7bjozMyxkOidEYWlzeSB3YXMgYWZyYWlkIGJlY2F1c2Ugc2hlIHdhcyBvbiBfX18uJyxhY2M6Wyd0aGUgd3JvbmcgYnVzJywnd3JvbmcgYnVzJ10sZGlzcDondGhlIHdyb25nIGJ1cyd9LAogIHtuOjM0LGQ6J1RoZSBvbGQgd29tYW4gcGhvbmVkIF9fXy4nLGFjYzpbImRhaXN5J3MgZ3JhbmRtYSIsImRhaXN5J3MgZ3JhbmRtb3RoZXIiLCdkYWlzeXMgZ3JhbmRtYScsJ2RhaXN5cyBncmFuZG1vdGhlcicsJ2dyYW5kbWEnLCdncmFuZG1vdGhlcicsJ2hlciBncmFuZG1hJywnaGVyIGdyYW5kbW90aGVyJywiZGFpc3kmcnNxdW87cyBncmFuZG1hIiwiZGFpc3kmcnNxdW87cyBncmFuZG1vdGhlciJdLGRpc3A6IkRhaXN5J3MgZ3JhbmRtYSJ9LAogIHtuOjM1LGQ6J1RoZSBvbGQgd29tYW4gZ290IGEgX19fIGZvciBEYWlzeSB0byBnbyB0byB0aGUgcmlnaHQgdmlsbGFnZSEnLGFjYzpbJ2J1cyB0aWNrZXQnLCdhIGJ1cyB0aWNrZXQnLCd0aWNrZXQnLCdhIHRpY2tldCcsJ2Fub3RoZXIgYnVzIHRpY2tldCddLGRpc3A6JyhidXMpIHRpY2tldCd9Cl07CnZhciBQNl9QQVJUUz1bCiAge3Q6J0EgbG90IG9mIHBlb3BsZSBhcmUgdmVyeSBhZnJhaWQgJ30se2V4OidvZid9LAogIHt0Oicgc25ha2VzLiBUaGV5IHRoaW5rIGFsbCBzbmFrZXMgJ30se2c6MzYsYTonYXJlJ30sCiAge3Q6JyB1Z2x5IGFuZCB3YW50IHRvIGh1cnQgdGhlbS4gQnV0IHRoaXMgaXMgd3JvbmcgYmVjYXVzZSBzb21lIHNuYWtlcyBhcmUgdmVyeSBiZWF1dGlmdWwgYW5kICd9LHtnOjM3LGE6J3RoZXknfSwKICB7dDonIGRvbiZyc3F1bzt0IGh1cnQgcGVvcGxlLiBTbmFrZXMgb2Z0ZW4gJ30se2c6MzgsYTonbGl2ZSd9LAogIHt0OicgaW4gdGhlIGdyYXNzIG9yIGluIGZvcmVzdHMuIFNvbWUgb2YgdGhlbSBlYXQgbWljZS4gU29tZSBzbmFrZXMgY2FuIGNsaW1iIHRyZWVzIHZlcnkgJ30se2c6MzksYToncXVpY2tseSd9LAogIHt0OicgYW5kIHRoZXkgY2FuIHN3aW0gJ30se2c6NDAsYTonaW4nfSwKICB7dDonIHJpdmVycy4gWW91IG11c3QgYWx3YXlzIGJlIGNhcmVmdWwgd2l0aCBzbmFrZXMgYW5kIHlvdSBtdXN0IG5ldmVyIHBpY2sgdGhlbSB1cC4nfQpdOwp2YXIgUDZfT1BUUz17MzY6WydpcycsJ2FyZScsJ3dlcmUnXSwzNzpbJ2l0Jywnc2hlJywndGhleSddLDM4OlsnbGl2ZScsJ2xpdmVzJywnbGl2ZWQnXSwzOTpbJ3F1aWNrJywncXVpY2tseScsJ3F1aWNrZXInXSw0MDpbJ2F0JywnYnknLCdpbiddfTsKdmFyIFRPVEFMPTQwOwoKLyogPT09PT0gaGVscGVycyA9PT09PSAqLwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9bJjw+Il0vZyxmdW5jdGlvbihjKXtyZXR1cm57JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnLCciJzonJnF1b3Q7J31bY119KX0KZnVuY3Rpb24gJChzLGMpe3JldHVybiAoY3x8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Iocyl9CmZ1bmN0aW9uICQkKHMsYyl7cmV0dXJuIFtdLnNsaWNlLmNhbGwoKGN8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHMpKX0KZnVuY3Rpb24gbm9ybSh2KXtyZXR1cm4gdi50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLiwhP10kLywnJykucmVwbGFjZSgvXHMrL2csJyAnKX0KCi8qID09PT09IHN0YXRlID09PT09ICovCnZhciBQMnNlbD17fSxQM3NlbD17fSxQNGdhcD17fSxQNHRpdGxlPW51bGwsUDZnYXA9e307CgovKiA9PT09PSBQQVJUIDEgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGJhbms9JCgnI3AxQmFuaycpOwogIFAxX0JBTksuZm9yRWFjaChmdW5jdGlvbihiKXtiYW5rLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0id2NoaXAiPjxpbWcgc3JjPSInK0lNRytiLmltZysnIiBhbHQ9IicrZXNjKGIudykrJyI+PGRpdiBjbGFzcz0id2xhYmVsIj4nK2VzYyhiLncpKyc8L2Rpdj48L2Rpdj4nKTt9KTsKICB2YXIgcm93cz0kKCcjcDFSb3dzJyk7CiAgcm93cy5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRlZnJvdyBleGFtcGxlIj48c3BhbiBjbGFzcz0icW4iPkV4PC9zcGFuPjxzcGFuIGNsYXNzPSJkdGV4dCI+Jytlc2MoUDFfRVguZCkrJzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM3QjVCMDAiPicrZXNjKFAxX0VYLmEpKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImV4LXRhZyI+RXg8L3NwYW4+PC9kaXY+Jyk7CiAgUDEuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHJvd3MuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJkZWZyb3ciPjxzcGFuIGNsYXNzPSJxbiI+JytxLm4rJzwvc3Bhbj48c3BhbiBjbGFzcz0iZHRleHQiPicrZXNjKHEuZCkrJzwvc3Bhbj48aW5wdXQgY2xhc3M9ImlucHV0LWJsYW5rIiBkYXRhLXE9IicrcS5uKyciIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSIuLi4iPjxidXR0b24gY2xhc3M9InNob3ctYW5zLWJ0biIgZGF0YS1zaG93PSInK3EubisnIj4mIzEyODA2NTs8L2J1dHRvbj48L2Rpdj4nKTsKICB9KTsKfSkoKTsKLyogPT09PT0gUEFSVCAyID09PT09ICovCihmdW5jdGlvbigpewogIHZhciByPSQoJyNwMlJvd3MnKTsKICBQMl9FWC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3IuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJ5bi1yb3ciIHN0eWxlPSJvcGFjaXR5Oi43Ij48ZGl2IGNsYXNzPSJ5bi1xIj48c3BhbiBjbGFzcz0icW4iPkV4PC9zcGFuPjxzcGFuPicrZXNjKGUuZCkrJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ5bi1vcHRzIj48c3BhbiBjbGFzcz0ieW4tYnRuICcrKGUuYT09PSd5ZXMnPydjb3JyZWN0JzonJykrJyI+eWVzPC9zcGFuPjxzcGFuIGNsYXNzPSJ5bi1idG4gJysoZS5hPT09J25vJz8nY29ycmVjdCc6JycpKyciPm5vPC9zcGFuPjwvZGl2PjwvZGl2PicpO30pOwogIFAyLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICByLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0ieW4tcm93IiBkYXRhLXE9IicrcS5uKyciPjxkaXYgY2xhc3M9InluLXEiPjxzcGFuIGNsYXNzPSJxbiI+JytxLm4rJzwvc3Bhbj48c3Bhbj4nK2VzYyhxLmQpKyc8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ieW4tb3B0cyI+PGJ1dHRvbiBjbGFzcz0ieW4tYnRuIiBkYXRhLXluPSJ5ZXMiPnllczwvYnV0dG9uPjxidXR0b24gY2xhc3M9InluLWJ0biIgZGF0YS15bj0ibm8iPm5vPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0ic2hvdy1hbnMtYnRuIiBkYXRhLXNob3c9IicrcS5uKyciIHN0eWxlPSJtYXJnaW4tbGVmdDphdXRvIj4mIzEyODA2NTs8L2J1dHRvbj48L2Rpdj48L2Rpdj4nKTsKICB9KTsKICAkJCgnI3AyUm93cyAueW4tYnRuW2RhdGEteW5dJykuZm9yRWFjaChmdW5jdGlvbihiKXtiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHJvdz1iLmNsb3Nlc3QoJy55bi1yb3cnKSxuPXJvdy5kYXRhc2V0LnE7CiAgICAkJCgnLnluLWJ0bltkYXRhLXluXScscm93KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnc2VsJyl9KTsKICAgIGIuY2xhc3NMaXN0LmFkZCgnc2VsJyk7UDJzZWxbbl09Yi5kYXRhc2V0LnluO3VwZGF0ZVByb2dyZXNzKCk7CiAgfSk7fSk7Cn0pKCk7Ci8qID09PT09IFBBUlQgMyA9PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcj0kKCcjcDNSb3dzJyk7CiAgci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9Im1jcS1yb3ciIHN0eWxlPSJvcGFjaXR5Oi43Ij48ZGl2IGNsYXNzPSJtY3EtcSI+PHNwYW4gY2xhc3M9InFuIj5FeDwvc3Bhbj48c3Bhbj48Yj5QYXVsOjwvYj4gJytlc2MoUDNfRVgucSkrJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJtY3Etb3B0cyI+JytQM19FWC5vcHRzLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gJzxkaXYgY2xhc3M9Im1jcS1vcHQgJysoby5sPT09UDNfRVguYW5zPydjb3JyZWN0JzonJykrJyI+PHNwYW4gY2xhc3M9Im1sIj4nK28ubCsnPC9zcGFuPjxzcGFuPicrby50Kyc8L3NwYW4+PC9kaXY+Jzt9KS5qb2luKCcnKSsnPC9kaXY+PC9kaXY+Jyk7CiAgUDMuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJtY3Etcm93IiBkYXRhLXE9IicrcS5uKyciPjxkaXYgY2xhc3M9Im1jcS1xIj48c3BhbiBjbGFzcz0icW4iPicrcS5uKyc8L3NwYW4+PHNwYW4+PGI+UGF1bDo8L2I+ICcrZXNjKHEucSkrJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJtY3Etb3B0cyI+JytxLm9wdHMubWFwKGZ1bmN0aW9uKG8pe3JldHVybiAnPGRpdiBjbGFzcz0ibWNxLW9wdCIgZGF0YS1sPSInK28ubCsnIj48c3BhbiBjbGFzcz0ibWwiPicrby5sKyc8L3NwYW4+PHNwYW4+JytvLnQrJzwvc3Bhbj48L2Rpdj4nO30pLmpvaW4oJycpKyc8L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YnV0dG9uIGNsYXNzPSJzaG93LWFucy1idG4iIGRhdGEtc2hvdz0iJytxLm4rJyI+JiMxMjgwNjU7PC9idXR0b24+PC9kaXY+PC9kaXY+Jyk7CiAgfSk7CiAgJCQoJyNwM1Jvd3MgLm1jcS1vcHRbZGF0YS1sXScpLmZvckVhY2goZnVuY3Rpb24obyl7by5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciByb3c9by5jbG9zZXN0KCcubWNxLXJvdycpLG49cm93LmRhdGFzZXQucTsKICAgICQkKCcubWNxLW9wdFtkYXRhLWxdJyxyb3cpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKX0pOwogICAgby5jbGFzc0xpc3QuYWRkKCdzZWwnKTtQM3NlbFtuXT1vLmRhdGFzZXQubDt1cGRhdGVQcm9ncmVzcygpOwogIH0pO30pOwp9KSgpOwovKiA9PT09PSBQQVJUIDQgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGJhbms9JCgnI3A0QmFuaycpOwogIFA0X0JBTksuZm9yRWFjaChmdW5jdGlvbih3LGkpe2JhbmsuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJ3Y2hpcCI+PGltZyBzcmM9IicrSU1HKydtMXQycndfcDRfJyt3KycuanBnIiBhbHQ9IicrdysnIj48ZGl2IGNsYXNzPSJ3bGFiZWwiPicrdysnPC9kaXY+PC9kaXY+Jyk7fSk7CiAgdmFyIHN0b3J5PSQoJyNwNFN0b3J5JyksaHRtbD0nJzsKICBQNF9QQVJUUy5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgaWYocC50KWh0bWwrPWVzYyhwLnQpLnJlcGxhY2UoJyZhbXA7bHNxdW87JywnJmxzcXVvOycpLnJlcGxhY2UoJyZhbXA7cnNxdW87JywnJnJzcXVvOycpOwogICAgZWxzZSBpZihwLmV4KWh0bWwrPSc8dSBzdHlsZT0iY29sb3I6dmFyKC0tYWNjZW50LTEpO2ZvbnQtd2VpZ2h0OjcwMCI+JytwLmV4Kyc8L3U+JzsKICAgIGVsc2UgaWYocC5nKXsKICAgICAgaHRtbCs9JzxzZWxlY3QgY2xhc3M9ImdhcC1zZWxlY3QiIGRhdGEtcT0iJytwLmcrJyI+PG9wdGlvbiB2YWx1ZT0iIj4oJytwLmcrJykgY2hvb3NlPC9vcHRpb24+JytQNF9CQU5LLm1hcChmdW5jdGlvbih3KXtyZXR1cm4gJzxvcHRpb24gdmFsdWU9IicrdysnIj4nK3crJzwvb3B0aW9uPic7fSkuam9pbignJykrJzwvc2VsZWN0Pic7CiAgICB9CiAgfSk7CiAgc3RvcnkuaW5uZXJIVE1MPWh0bWwucmVwbGFjZSgvJmFtcDsobHNxdW98cnNxdW98bGRxdW98cmRxdW8pOy9nLCcmJDE7Jyk7CiAgJCQoJyNwNFN0b3J5IC5nYXAtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZnVuY3Rpb24oKXtQNGdhcFtzLmRhdGFzZXQucV09cy52YWx1ZTt1cGRhdGVQcm9ncmVzcygpO30pO30pOwogIHZhciB0dD0kKCcjcDRUaXRsZScpOwogIFA0X1RJVExFLm9wdHMuZm9yRWFjaChmdW5jdGlvbihvLGkpe3R0Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0idGlja2JveCIgZGF0YS10aXRsZT0iJytvKyciPjxzcGFuIGNsYXNzPSJ0YiI+JiMxMDAwMzs8L3NwYW4+PHNwYW4+Jytlc2MobykrJzwvc3Bhbj48L2Rpdj4nKTt9KTsKICAkJCgnI3A0VGl0bGUgLnRpY2tib3gnKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAkJCgnI3A0VGl0bGUgLnRpY2tib3gnKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnc2VsJyl9KTsKICAgIGIuY2xhc3NMaXN0LmFkZCgnc2VsJyk7UDR0aXRsZT1iLmRhdGFzZXQudGl0bGU7dXBkYXRlUHJvZ3Jlc3MoKTsKICB9KTt9KTsKfSkoKTsKLyogPT09PT0gUEFSVCA1ID09PT09ICovCihmdW5jdGlvbigpewogICQoJyNwNVN0b3J5JykuaW5uZXJIVE1MPSc8aW1nIHNyYz0iJytJTUcrJ20xdDJyd19wNV9idXNzdG9wLmpwZyIgYWx0PSJEYWlzeSBhdCB0aGUgYnVzIHN0b3AiPicrUDVfU1RPUlk7CiAgdmFyIHI9JCgnI3A1Um93cycpOwogIFA1X0VYLmZvckVhY2goZnVuY3Rpb24oZSl7ci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRlZnJvdyBleGFtcGxlIj48c3BhbiBjbGFzcz0icW4iPkV4PC9zcGFuPjxzcGFuIGNsYXNzPSJkdGV4dCI+JytlLmQrJzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM3QjVCMDAiPicrZS5hKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImV4LXRhZyI+RXg8L3NwYW4+PC9kaXY+Jyk7fSk7CiAgUDUuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJkZWZyb3ciPjxzcGFuIGNsYXNzPSJxbiI+JytxLm4rJzwvc3Bhbj48c3BhbiBjbGFzcz0iZHRleHQiPicrcS5kKyc8L3NwYW4+PGlucHV0IGNsYXNzPSJpbnB1dC1ibGFuayIgZGF0YS1xPSInK3EubisnIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iMS0zIHdvcmRzIj48YnV0dG9uIGNsYXNzPSJzaG93LWFucy1idG4iIGRhdGEtc2hvdz0iJytxLm4rJyI+JiMxMjgwNjU7PC9idXR0b24+PC9kaXY+Jyk7CiAgfSk7Cn0pKCk7Ci8qID09PT09IFBBUlQgNiA9PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgc3Rvcnk9JCgnI3A2U3RvcnknKSxodG1sPScnOwogIFA2X1BBUlRTLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICBpZihwLnQpaHRtbCs9ZXNjKHAudCkucmVwbGFjZSgvJmFtcDsobHNxdW98cnNxdW8pOy9nLCcmJDE7Jyk7CiAgICBlbHNlIGlmKHAuZXgpaHRtbCs9Jzx1IHN0eWxlPSJjb2xvcjp2YXIoLS1hY2NlbnQtMSk7Zm9udC13ZWlnaHQ6NzAwIj4nK3AuZXgrJzwvdT4nOwogICAgZWxzZSBpZihwLmcpewogICAgICB2YXIgTD1bJ0EnLCdCJywnQyddOwogICAgICBodG1sKz0nPHNlbGVjdCBjbGFzcz0iZ2FwLXNlbGVjdCIgZGF0YS1xPSInK3AuZysnIj48b3B0aW9uIHZhbHVlPSIiPignK3AuZysnKTwvb3B0aW9uPicrUDZfT1BUU1twLmddLm1hcChmdW5jdGlvbih3LGkpe3JldHVybiAnPG9wdGlvbiB2YWx1ZT0iJytMW2ldKyciPicrdysnPC9vcHRpb24+Jzt9KS5qb2luKCcnKSsnPC9zZWxlY3Q+JzsKICAgIH0KICB9KTsKICBzdG9yeS5pbm5lckhUTUw9aHRtbDsKICAkJCgnI3A2U3RvcnkgLmdhcC1zZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3MuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxmdW5jdGlvbigpe1A2Z2FwW3MuZGF0YXNldC5xXT1zLnZhbHVlO3VwZGF0ZVByb2dyZXNzKCk7fSk7fSk7Cn0pKCk7CgovKiA9PT09PSBwcm9ncmVzcyA9PT09PSAqLwpmdW5jdGlvbiBhbnN3ZXJlZCgpewogIHZhciBuPTA7CiAgUDEuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoZWwmJmVsLnZhbHVlLnRyaW0oKSluKys7fSk7CiAgUDIuZm9yRWFjaChmdW5jdGlvbihxKXtpZihQMnNlbFtxLm5dKW4rKzt9KTsKICBQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKFAzc2VsW3Eubl0pbisrO30pOwogIFsxOSwyMCwyMSwyMiwyMywyNF0uZm9yRWFjaChmdW5jdGlvbihnKXtpZihQNGdhcFtnXSluKys7fSk7CiAgaWYoUDR0aXRsZSluKys7CiAgUDUuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoZWwmJmVsLnZhbHVlLnRyaW0oKSluKys7fSk7CiAgWzM2LDM3LDM4LDM5LDQwXS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKFA2Z2FwW2ddKW4rKzt9KTsKICByZXR1cm4gbjsKfQpmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcygpe3ZhciBhPWFuc3dlcmVkKCk7JCgnI2Fuc3dlcmVkQ291bnQnKS50ZXh0Q29udGVudD1hOyQoJyNwcm9nRmlsbCcpLnN0eWxlLndpZHRoPShhL1RPVEFMKjEwMCkrJyUnO30KZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQuY2xhc3NMaXN0JiZlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2lucHV0LWJsYW5rJykpdXBkYXRlUHJvZ3Jlc3MoKTt9KTsKCi8qID09PT09IHNob3cgYW5zd2VycyA9PT09PSAqLwpkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICB2YXIgYj1lLnRhcmdldC5jbG9zZXN0KCcuc2hvdy1hbnMtYnRuJyk7aWYoIWIpcmV0dXJuOwogIHZhciBrPWIuZGF0YXNldC5zaG93OwogIGlmKGs9PT0nUDFBTEwnKXtQMS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3JldmVhbElucHV0KHEubixxLmEpO30pO3JldHVybjt9CiAgaWYoaz09PSdQMkFMTCcpe1AyLmZvckVhY2goZnVuY3Rpb24ocSl7cmV2ZWFsWU4ocS5uLHEuYSk7fSk7cmV0dXJuO30KICBpZihrPT09J1AzQUxMJyl7UDMuZm9yRWFjaChmdW5jdGlvbihxKXtyZXZlYWxNQ1EocS5uLHEuYW5zKTt9KTtyZXR1cm47fQogIGlmKGs9PT0nUDRBTEwnKXtbMTksMjAsMjEsMjIsMjMsMjRdLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIGE9cDRhbnMoZyk7dmFyIHM9JCgnLmdhcC1zZWxlY3RbZGF0YS1xPSInK2crJyJdJyk7aWYocyl7cy52YWx1ZT1hO1A0Z2FwW2ddPWE7fX0pO3JldmVhbFRpdGxlKCk7dXBkYXRlUHJvZ3Jlc3MoKTtyZXR1cm47fQogIGlmKGs9PT0nUDVBTEwnKXtQNS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3JldmVhbElucHV0KHEubixxLmRpc3ApO30pO3JldHVybjt9CiAgaWYoaz09PSdQNkFMTCcpe1A2X1BBUlRTLmZvckVhY2goZnVuY3Rpb24ocCl7aWYocC5nKXt2YXIgTD1bJ0EnLCdCJywnQyddO3ZhciBpZHg9UDZfT1BUU1twLmddLmluZGV4T2YocC5hKTt2YXIgcz0kKCcuZ2FwLXNlbGVjdFtkYXRhLXE9IicrcC5nKyciXScpO2lmKHMpe3MudmFsdWU9TFtpZHhdO1A2Z2FwW3AuZ109TFtpZHhdO319fSk7dXBkYXRlUHJvZ3Jlc3MoKTtyZXR1cm47fQogIHZhciBxaWQ9cGFyc2VJbnQoayk7CiAgaWYocWlkPj0xJiZxaWQ8PTYpe3ZhciBxPVAxLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PXFpZH0pO3JldmVhbElucHV0KHFpZCxxLmEpO30KICBlbHNlIGlmKHFpZD49NyYmcWlkPD0xMil7dmFyIHE9UDIuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09cWlkfSk7cmV2ZWFsWU4ocWlkLHEuYSk7fQogIGVsc2UgaWYocWlkPj0xMyYmcWlkPD0xOCl7dmFyIHE9UDMuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09cWlkfSk7cmV2ZWFsTUNRKHFpZCxxLmFucyk7fQogIGVsc2UgaWYocWlkPj0yNiYmcWlkPD0zNSl7dmFyIHE9UDUuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09cWlkfSk7cmV2ZWFsSW5wdXQocWlkLHEuZGlzcCk7fQp9KTsKZnVuY3Rpb24gcmV2ZWFsSW5wdXQobix2YWwpe3ZhciBlbD0kKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK24rJyJdJyk7aWYoZWwpe2VsLnZhbHVlPXZhbDtlbC5jbGFzc0xpc3QuYWRkKCdyZXZlYWxlZCcpO3VwZGF0ZVByb2dyZXNzKCk7fX0KZnVuY3Rpb24gcmV2ZWFsWU4obixhKXt2YXIgcm93PSQoJy55bi1yb3dbZGF0YS1xPSInK24rJyJdJyk7aWYoIXJvdylyZXR1cm47JCQoJy55bi1idG5bZGF0YS15bl0nLHJvdykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbCcpO2lmKHguZGF0YXNldC55bj09PWEpeC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7fSk7UDJzZWxbbl09YTt1cGRhdGVQcm9ncmVzcygpO30KZnVuY3Rpb24gcmV2ZWFsTUNRKG4sYSl7dmFyIHJvdz0kKCcubWNxLXJvd1tkYXRhLXE9IicrbisnIl0nKTtpZighcm93KXJldHVybjskJCgnLm1jcS1vcHRbZGF0YS1sXScscm93KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnc2VsJyk7aWYoeC5kYXRhc2V0Lmw9PT1hKXguY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO30pO1Azc2VsW25dPWE7dXBkYXRlUHJvZ3Jlc3MoKTt9CmZ1bmN0aW9uIHA0YW5zKGcpe3ZhciBmPVA0X1BBUlRTLmZpbmQoZnVuY3Rpb24ocCl7cmV0dXJuIHAuZz09PWd9KTtyZXR1cm4gZj9mLmE6Jyc7fQpmdW5jdGlvbiByZXZlYWxUaXRsZSgpeyQkKCcjcDRUaXRsZSAudGlja2JveCcpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKTtpZih4LmRhdGFzZXQudGl0bGU9PT1QNF9USVRMRS5hKXt4LmNsYXNzTGlzdC5hZGQoJ3NlbCcpO319KTtQNHRpdGxlPVA0X1RJVExFLmE7fQoKLyogPT09PT0gc3VibWl0ID09PT09ICovCiQoJyNzdWJtaXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICB2YXIgc2NvcmU9MCxwYXJ0cz17MTowLDI6MCwzOjAsNDowLDU6MCw2OjB9OwogIFAxLmZvckVhY2goZnVuY3Rpb24ocSl7dmFyIGVsPSQoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcS5uKyciXScpO2lmKCFlbClyZXR1cm47aWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXZlYWxlZCcpKXJldHVybjt2YXIgdj1ub3JtKGVsLnZhbHVlKS5yZXBsYWNlKC9eKGF8YW58dGhlKVxzKy8sJycpO3ZhciBvaz1xLmFjYy5pbmRleE9mKG5vcm0oZWwudmFsdWUpKT49MHx8cS5hY2MuaW5kZXhPZih2KT49MDtpZihvayl7c2NvcmUrKztwYXJ0c1sxXSsrO2VsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZXtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO2VsLnRpdGxlPSdDb3JyZWN0OiAnK3EuYTt9fSk7CiAgUDIuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgcm93PSQoJy55bi1yb3dbZGF0YS1xPSInK3EubisnIl0nKTtpZighcm93KXJldHVybjskJCgnLnluLWJ0bltkYXRhLXluXScscm93KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciB5bj14LmRhdGFzZXQueW47eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKTtpZih5bj09PXEuYSl4LmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTtlbHNlIGlmKFAyc2VsW3Eubl09PT15bil4LmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7fSk7aWYoUDJzZWxbcS5uXT09PXEuYSl7c2NvcmUrKztwYXJ0c1syXSsrO319KTsKICBQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpe3ZhciByb3c9JCgnLm1jcS1yb3dbZGF0YS1xPSInK3EubisnIl0nKTtpZighcm93KXJldHVybjskJCgnLm1jcS1vcHRbZGF0YS1sXScscm93KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBsPXguZGF0YXNldC5sO3guY2xhc3NMaXN0LnJlbW92ZSgnc2VsJyk7aWYobD09PXEuYW5zKXguY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO2Vsc2UgaWYoUDNzZWxbcS5uXT09PWwpeC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO30pO2lmKFAzc2VsW3Eubl09PT1xLmFucyl7c2NvcmUrKztwYXJ0c1szXSsrO319KTsKICBbMTksMjAsMjEsMjIsMjMsMjRdLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIHM9JCgnLmdhcC1zZWxlY3RbZGF0YS1xPSInK2crJyJdJyk7aWYoIXMpcmV0dXJuO3ZhciBhPXA0YW5zKGcpO3MuY2xhc3NMaXN0LnJlbW92ZSgnY29ycmVjdCcsJ3dyb25nJyk7aWYoUDRnYXBbZ109PT1hKXtzY29yZSsrO3BhcnRzWzRdKys7cy5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7fWVsc2UgaWYoUDRnYXBbZ10pcy5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO30pOwogICQkKCcjcDRUaXRsZSAudGlja2JveCcpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTtpZih4LmRhdGFzZXQudGl0bGU9PT1QNF9USVRMRS5hKXguY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO2Vsc2UgaWYoUDR0aXRsZT09PXguZGF0YXNldC50aXRsZSl4LmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7fSk7CiAgaWYoUDR0aXRsZT09PVA0X1RJVExFLmEpe3Njb3JlKys7cGFydHNbNF0rKzt9CiAgUDUuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoIWVsKXJldHVybjtpZihlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JldmVhbGVkJykpcmV0dXJuO3ZhciB2PW5vcm0oZWwudmFsdWUpO3ZhciBvaz1xLmFjYy5pbmRleE9mKHYpPj0wfHxxLmFjYy5pbmRleE9mKHYucmVwbGFjZSgvXihhfGFufHRoZSlccysvLCcnKSk+PTA7aWYob2spe3Njb3JlKys7cGFydHNbNV0rKztlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7fWVsc2V7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTtlbC50aXRsZT0nQ29ycmVjdDogJytxLmRpc3A7fX0pOwogIFA2X1BBUlRTLmZvckVhY2goZnVuY3Rpb24ocCl7aWYoIXAuZylyZXR1cm47dmFyIHM9JCgnLmdhcC1zZWxlY3RbZGF0YS1xPSInK3AuZysnIl0nKTtpZighcylyZXR1cm47dmFyIEw9WydBJywnQicsJ0MnXTt2YXIgY29ycmVjdEw9TFtQNl9PUFRTW3AuZ10uaW5kZXhPZihwLmEpXTtzLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpO2lmKFA2Z2FwW3AuZ109PT1jb3JyZWN0TCl7c2NvcmUrKztwYXJ0c1s2XSsrO3MuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO31lbHNlIGlmKFA2Z2FwW3AuZ10pcy5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO30pOwogICQoJyNzY29yZU5vdycpLnRleHRDb250ZW50PXNjb3JlOyQoJyNmaW5hbFNjb3JlJykudGV4dENvbnRlbnQ9c2NvcmU7CiAgdmFyIHBjdD1NYXRoLnJvdW5kKHNjb3JlL1RPVEFMKjEwMCk7CiAgdmFyIG1zZz1wY3Q+PTg1PydFeGNlbGxlbnQhIFlvdXIgcmVhZGluZyBhbmQgd3JpdGluZyBpcyBzdHJvbmcuJzpwY3Q+PTcwPydHb29kIGpvYiEgS2VlcCBwcmFjdGlzaW5nLic6cGN0Pj01MD8nTmljZSB0cnkgJm1kYXNoOyByZXZpZXcgdGhlIHBhcnRzIHlvdSBtaXNzZWQuJzonS2VlcCBnb2luZyAmbWRhc2g7IHJlYWQgdGhlIHN0b3JpZXMgYWdhaW4gYW5kIHVzZSBTaG93IEFuc3dlcnMuJzsKICAkKCcjcmVzdWx0c01zZycpLmlubmVySFRNTD1tc2c7CiAgdmFyIHNwPSQoJyNzY29yZVBhcnRzJyk7c3AuaW5uZXJIVE1MPScnOwogIFsnV29yZHMnLCdZZXMvTm8nLCdEaWFsb2d1ZScsJ1N0b3J5JywnQ29tcGxldGUnLCdHcmFtbWFyJ10uZm9yRWFjaChmdW5jdGlvbihsYWIsaSl7c3AuaW5uZXJIVE1MKz0nPGRpdiBjbGFzcz0ic3AtaXRlbSI+PGI+JytwYXJ0c1tpKzFdKyc8L2I+UCcrKGkrMSkrJyAnK2xhYisnPC9kaXY+Jzt9KTsKICAkKCcjcmVzdWx0c0Jhbm5lcicpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgnI3Jlc3VsdHNCYW5uZXInKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J2NlbnRlcid9KTt9LDEyMCk7Cn0pOwokKCcjcmVzZXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtpZighY29uZmlybSgnUmVzZXQgYWxsIGFuc3dlcnM\/JykpcmV0dXJuO2xvY2F0aW9uLnJlbG9hZCgpO30pOwp1cGRhdGVQcm9ncmVzcygpOwp9KSgpOwo='));<\/script>","protected":false},"excerpt":{"rendered":"<p>Cambridge YLE &middot; Movers Movers 1 &mdash; Test 2 Reading &amp; Writing 6 parts with 40 questions. Read carefully, choose or write your answers, then submit to grade. Each part has a Show Answers button to study. ~30 minutes 6 Parts &middot; 40 Questions Auto-grade + Show Answers Score 0\/40 0 of 40 answered 1 [&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-2670","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/2670","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=2670"}],"version-history":[{"count":0,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/2670\/revisions"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=2670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}