{"id":4820,"date":"2026-06-25T14:04:22","date_gmt":"2026-06-25T14:04:22","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-flyers-3-test-2-rw\/"},"modified":"2026-06-25T14:04:22","modified_gmt":"2026-06-25T14:04:22","slug":"cambridge-flyers-3-test-2-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-flyers-3-test-2-rw\/","title":{"rendered":"Cambridge Flyers 3 &#8211; Test 2 &#8211; Reading and Writing"},"content":{"rendered":"<!--\n================================================================\nAE4U &#183; YLE FLYERS READING & WRITING &#8212; Test 2 (Flyers 3)\n7 parts &#183; 50 questions &#183; auto-graded\nP1 copy-word(text bank) &#183; P2 yes\/no &#183; P3 dialogue match A-H &#183; P4 story cloze+title\nP5 open cloze(story) &#183; P6 word-choice MCQ &#183; P7 open cloze(1 word)\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:#10B981; --accent-2:#0EA5E9; --gold:#FBBF24; --green:#10B981; --red:#EF4444;\n  --light-1:#ECFDF5; --light-2:#F0FDFA; --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,#10B981 0%,#0EA5E9 55%,#1E3A8A 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(14,165,233,.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:120px;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.input-mini{min-width:70px}\n\/* word bank (text only) *\/\n.wbank{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px}\n.wbank.b10{grid-template-columns:repeat(5,1fr)}\n.wchip{border:1.5px solid var(--border);border-radius:12px;padding:8px;text-align:center;background:#FAFBFC}\n.wchip.wtext{display:flex;align-items:center;justify-content:center;min-height:46px;font-weight:700;font-size:13.5px;color:var(--text)}\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:.75}\n.defrow .ex-tag{background:var(--gold);color:#fff;padding:2px 8px;border-radius:6px;font-size:11px;margin-left:6px}\n\/* yes\/no *\/\n.yn-row{padding:14px 0;border-top:1px dashed var(--border)}\n.yn-row:first-child{border-top:none}\n.yn-q{font-size:15px;font-weight:600;margin-bottom:8px;display:flex;gap:10px}\n.yn-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(16,185,129,.12),rgba(14,165,233,.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\/* Part 3 matching *\/\n.optbox{border:1.5px solid var(--border);border-radius:12px;background:#FAFBFC;padding:14px 16px;margin-bottom:16px}\n.optbox .oi{display:flex;gap:10px;padding:6px 0;font-size:14.5px;line-height:1.4}\n.optbox .ol{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.optbox .oi.ex{opacity:.6}\n.dlg-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 0;border-top:1px dashed var(--border)}\n.dlg-row:first-child{border-top:none}\n.dlg-row.example{opacity:.75}\n.dlg-row .qn{font-weight:800;color:var(--accent-1);min-width:26px}\n.dlg-q{flex:1;min-width:240px;font-size:15px}\n.match-select{font-family:inherit !important;font-size:15px;font-weight:800;color:var(--accent-1);border:1.5px solid var(--accent-1);border-radius:8px;padding:5px 8px;background:#fff;cursor:pointer}\n.match-select.correct{border-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.match-select.wrong{border-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n\/* story + selects *\/\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,.scene{max-width:560px;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.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(14,165,233,.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,#10B981,#0EA5E9);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,.wbank.b10{grid-template-columns:repeat(3,1fr)}}\n<\/style>\n\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge YLE &middot; Flyers<\/span>\n    <h1 class=\"serif\">Flyers 3 &mdash; Test 2 <span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">7 parts with 50 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>~40 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>7 Parts &middot; 50 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>\/50<\/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 50 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;10 &middot; Look and write<\/span>\n    <h2 class=\"serif\">Choose the correct words and write them<\/h2>\n    <p>Look at the words in the box. 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 11&ndash;17 &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\" class=\"scene\" src=\"\/wp-content\/uploads\/2026\/06\/f3t2rw_p2.jpg\" alt=\"Part 2 scene: people and monsters skating and playing in the snow\">\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 18&ndash;22 &middot; Choose the answer<\/span>\n    <h2 class=\"serif\">Read the conversation. Choose the best answer<\/h2>\n    <p>Robert is talking to his friend, Vicky, about homework. What does Vicky say to Robert? Choose the best answer and write a letter (A&ndash;H) for each one. You do not need to use all the letters. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"optbox\" id=\"p3Opts\"><\/div>\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 23&ndash;28 &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 box 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    <img decoding=\"async\" class=\"scene\" style=\"max-width:360px\" src=\"\/wp-content\/uploads\/2026\/06\/f3t2rw_p4.jpg\" alt=\"A girl holding a goldfish bowl\">\n    <div class=\"wbank b10\" id=\"p4Bank\"><\/div>\n    <div class=\"story\" id=\"p4Story\"><\/div>\n    <div style=\"margin-top:14px\"><b>(28) 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 29&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 picture and read the story <b>&ldquo;Betty tries to fly&rdquo;<\/b>. Write some words to complete the sentences. You can use 1, 2, 3 or 4 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;45 &middot; Choose the right word<\/span>\n    <h2 class=\"serif\">Read the text. Choose the right words<\/h2>\n    <p>Read about <b>Zoos<\/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\" class=\"scene\" style=\"max-width:380px\" src=\"\/wp-content\/uploads\/2026\/06\/f3t2rw_p6.jpg\" alt=\"A zoo with animals\">\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<section class=\"part-section\" id=\"part7\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">7<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 46&ndash;50 &middot; Write one word<\/span>\n    <h2 class=\"serif\">Read the diary. Write the missing words<\/h2>\n    <p>Read the diary about a horrible afternoon. Write one word for each gap. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"story\" id=\"p7Story\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P7ALL\">&#128065; Show Answers (Part 7)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<div class=\"wrap\">\n  <div class=\"submit-panel\">\n    <h3>&#127919; Finished all 50 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 Flyers 3 Test 2 Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/50<\/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('CihmdW5jdGlvbigpewovKiA9PT09PSBEQVRBIFx1MjAxNCBGbHllcnMgMyBUZXN0IDIgKHZlcmlmaWVkIGtleSBwMTUpID09PT09ICovCnZhciBQMV9CQU5LPVsnYSBjb21pYycsJ2EgdGVsZXBob25lJywnYSByZXN0YXVyYW50JywnZW52ZWxvcGVzJywnYSBydWNrc2FjaycsJ2EgZmFybScsJ2EgY2hlbWlzdFx1MjAxOXMnLCdhIGNpcmN1cycsJ3Bvc3RjYXJkcycsJ2EgZGlhcnknLCdmb290YmFsbCcsJ2dvbGYnLCdhIGJyaWRnZScsJ2EgdG9yY2gnLCdhIHJhY2UnXTsKdmFyIFAxX0VYPXtkOidZb3UgZ28gb3ZlciB0aGlzIHRvIGNyb3NzIGEgcm9hZCBvciBhIHJpdmVyLicsYTonYSBicmlkZ2UnfTsKdmFyIFAxPVsKICB7bjoxLGQ6J1lvdSBwdXQgbGV0dGVycyBpbiB0aGVzZSBhbmQgd3JpdGUgdGhlIGFkZHJlc3NlcyBvbiB0aGUgZnJvbnQgb2YgdGhlbS4nLGE6J2VudmVsb3BlcycsYWNjOlsnZW52ZWxvcGVzJ119LAogIHtuOjIsZDonV2hlbiB5b3UgZ28gb24gaG9saWRheSwgeW91IHdyaXRlIG9uIHRoZXNlIGFuZCBzZW5kIHRoZW0gdG8geW91ciBmcmllbmRzLiBUaGV5IGhhdmUgcGljdHVyZXMgb24gdGhlbS4nLGE6J3Bvc3RjYXJkcycsYWNjOlsncG9zdGNhcmRzJ119LAogIHtuOjMsZDonWW91IHB1dCB0aGluZ3MgaW4gdGhpcyBhbmQgY2FycnkgaXQgb24geW91ciBiYWNrLicsYTonYSBydWNrc2FjaycsYWNjOlsncnVja3NhY2snLCdhIHJ1Y2tzYWNrJ119LAogIHtuOjQsZDonSW4gdGhpcyBjb21wZXRpdGlvbiBldmVyeW9uZSBydW5zLCBhbmQgdGhlIHBlcnNvbiB0aGF0IGZpbmlzaGVzIGZpcnN0IHdpbnMuJyxhOidhIHJhY2UnLGFjYzpbJ3JhY2UnLCdhIHJhY2UnXX0sCiAge246NSxkOidZb3Ugd3JpdGUgaW4gdGhpcyBhYm91dCB0aGluZ3MgdGhhdCBoYXZlIGhhcHBlbmVkIHRvIHlvdSBvciB0aGluZ3MgdGhhdCB5b3UgYXJlIGdvaW5nIHRvIGRvLicsYTonYSBkaWFyeScsYWNjOlsnZGlhcnknLCdhIGRpYXJ5J119LAogIHtuOjYsZDonWW91IHVzdWFsbHkgcGxheSB0aGlzIGdhbWUgb3V0c2lkZSBpbiBhIHRlYW0gb2YgZWxldmVuIHBlb3BsZSBhbmQgeW91IHdlYXIgc2hvcnRzIGFuZCBhIHNoaXJ0LicsYTonZm9vdGJhbGwnLGFjYzpbJ2Zvb3RiYWxsJ119LAogIHtuOjcsZDonWW91IGNhbiBzZWUgY2xvd25zIGFuZCBhbmltYWxzIGxpa2UgaG9yc2VzIGFuZCBlbGVwaGFudHMgYXQgdGhpcyBwbGFjZS4nLGE6J2EgY2lyY3VzJyxhY2M6WydjaXJjdXMnLCdhIGNpcmN1cyddfSwKICB7bjo4LGQ6J1lvdSBjYW4gYnV5IG1lZGljaW5lLCBhbmQgc29tZXRpbWVzIGJydXNoZXMsIGNvbWJzIGFuZCBzb2FwIGF0IHRoaXMgcGxhY2UuJyxhOidhIGNoZW1pc3RcdTIwMTlzJyxhY2M6WyJjaGVtaXN0J3MiLCJhIGNoZW1pc3QncyIsJ2NoZW1pc3RcdTIwMTlzJywnYSBjaGVtaXN0XHUyMDE5cycsJ2NoZW1pc3RzJywnYSBjaGVtaXN0cycsJ2NoZW1pc3QnLCdhIGNoZW1pc3QnXX0sCiAge246OSxkOidZb3UgY2FuIHVzZSB0aGlzIHRvIHRhbGsgdG8geW91ciBmcmllbmRzIGFuZCB5b3VyIGZhbWlseSB3aGVuIHlvdSBhcmUgbm90IHdpdGggdGhlbS4nLGE6J2EgdGVsZXBob25lJyxhY2M6Wyd0ZWxlcGhvbmUnLCdhIHRlbGVwaG9uZSddfSwKICB7bjoxMCxkOidZb3UgY2FuIGVhdCBsdW5jaCBvciBkaW5uZXIgYXQgdGhpcyBwbGFjZS4gT3RoZXIgcGVvcGxlIGNvb2sgZm9vZCBmb3IgeW91IGFuZCBicmluZyBpdCB0byB5b3VyIHRhYmxlLicsYTonYSByZXN0YXVyYW50JyxhY2M6WydyZXN0YXVyYW50JywnYSByZXN0YXVyYW50J119Cl07CnZhciBQMl9FWD1be2Q6J1RoZSBwZXJzb24gd2hvIGlzIHNraWluZyBpcyB3ZWFyaW5nIGEgeWVsbG93IGhhdC4nLGE6J3llcyd9LHtkOidBIHBpbG90IGlzIGZseWluZyBhIGdyZWVuIHBsYW5lIGhpZ2ggaW4gdGhlIHNreS4nLGE6J25vJ31dOwp2YXIgUDI9WwogIHtuOjExLGQ6J1R3byBib3lzIGFyZSBkcmlua2luZyBob3QgY2hvY29sYXRlIHVuZGVyIHRoZSB0cmVlcy4nLGE6J25vJ30sCiAge246MTIsZDonQSBnaXJsIHdpdGggY3VybHkgaGFpciBpcyBza2F0aW5nIGFjcm9zcyB0aGUgbGFrZS4nLGE6J3llcyd9LAogIHtuOjEzLGQ6IlRoZSBzbWFsbCBtb25zdGVyJ3Mgc2thdGVzIGFyZSB0b28gYmlnIGZvciBpdHMgZmVldC4iLGE6J3llcyd9LAogIHtuOjE0LGQ6IlRoZSBzbm93bWFuJ3Mgbm9zZSBpcyBtYWRlIGZyb20gYSB0b21hdG8gYW5kIGhlJ3Mgd2VhcmluZyBhIHNjYXJmIHdpdGggc3BvdHMgb24gaXQuIixhOidubyd9LAogIHtuOjE1LGQ6J1RoZSBnaXJsIGluIHRoZSByZWQgamFja2V0IGhhcyBwdXQgaGVyIGZvb3QgdGhyb3VnaCB0aGUgaWNlLicsYTonbm8nfSwKICB7bjoxNixkOidBIGJveSBpcyBnb2luZyBkb3duIHRoZSBoaWxsIG9uIGEgc2xlZGdlLicsYToneWVzJ30sCiAge246MTcsZDonT25lIG9mIHRoZSBiaWdnZXIgbW9uc3RlcnMgaXMgdGhyb3dpbmcgYSBzbm93YmFsbCBhdCBhbm90aGVyIG1vbnN0ZXIuJyxhOid5ZXMnfQpdOwp2YXIgUDNfT1BUUz1bCiAge2w6J0EnLHQ6J1doeSBkbyB5b3UgdGhpbmsgdGhhdD8nfSwKICB7bDonQicsdDoiSXQmcnNxdW87cyBpbiB0aGUgbGVzc29uIG9uIFRodXJzZGF5LiJ9LAogIHtsOidDJyx0OiJJIGNhbiwgUm9iZXJ0LCBidXQgaXQmcnNxdW87cyBlYXN5IHlvdSBrbm93ISJ9LAogIHtsOidEJyx0OidPbiBwYWdlIG5pbmUgb2YgdGhhdCBib29rIG92ZXIgdGhlcmUuJ30sCiAge2w6J0UnLHQ6J0kgZGlkIGl0IGF0IHRoZSB3ZWVrZW5kLicsZXg6dHJ1ZX0sCiAge2w6J0YnLHQ6J1RoZSB0ZWFjaGVyIHRvbGQgdXMgd2hlcmUgdG8gZmluZCB0aGVtLid9LAogIHtsOidHJyx0OiJJIHRoaW5rIGhlJnJzcXVvO3MgdmVyeSBraW5kLiJ9LAogIHtsOidIJyx0OiImbHNxdW87QW5zd2VycyB0byBQcm9ibGVtcyZyc3F1bzsuIEl0JnJzcXVvO3MgdGhhdCBiaWcsIGJsdWUgb25lLiJ9Cl07CnZhciBQM19FWD17cTonSGVsbG8sIFZpY2t5LiBIYXZlIHlvdSBkb25lIHlvdXIgaG9tZXdvcmsgeWV0PycsYW5zOidFJ307CnZhciBQMz1bCiAge246MTgscToiV2VsbCwgSSBoYXZlbid0IGRvbmUgbWluZS4gQ2FuIHlvdSBoZWxwIG1lPyIsYW5zOidDJ30sCiAge246MTkscToiSXQgaXNuJ3QhIEkgdGhpbmsgaXQncyBoYXJkISIsYW5zOidBJ30sCiAge246MjAscToiQmVjYXVzZSBJIGRvbid0IGtub3cgdGhlIGFuc3dlcnMgdG8gYW55IG9mIHRoZSBxdWVzdGlvbnMhIixhbnM6J0YnfSwKICB7bjoyMSxxOidXaGVyZT8gSSBkb24mcnNxdW87dCByZW1lbWJlci4nLGFuczonRCd9LAogIHtuOjIyLHE6IldoYXQncyBpdCBjYWxsZWQ\/IixhbnM6J0gnfQpdOwp2YXIgUDRfQkFOSz1bJ2hhbmRzJywnc2hvdXRlZCcsJ3RlcnJpYmxlJywnYXJyaXZlZCcsJ2FuZ3J5Jywnc2hlbGYnLCdoYXBwZW4nLCdpZGVhJywndG9uaWdodCcsJ2NsaW1iJ107CnZhciBQNF9QQVJUUz1bCiAge3Q6IkphbmUncyBnb3QgYSBnb2xkZmlzaCBjYWxsZWQgU3VubnkgdGhhdCBsaXZlcyBpbiBhIGdsYXNzIGJvd2wuIEphbmUncyBsaXR0bGUgYnJvdGhlciwgVG9tLCBpcyBvbmx5IGVpZ2h0ZWVuIG1vbnRocyBvbGQgYW5kLCBvbmUgZGF5LCBoZSBwdXQgaGlzICJ9LAogIHtleDonaGFuZHMnfSwKICB7dDonIGluIHRoZSBib3dsIGFuZCB0cmllZCB0byBjYXRjaCBTdW5ueS4gT2YgY291cnNlLCBKYW5lIHdhcyB2ZXJ5ICd9LAogIHtnOjIzLGE6J2FuZ3J5J30sCiAge3Q6JyBhYm91dCB0aGlzLiBTaGUgZGVjaWRlZCB0byBwdXQgU3VubnkmcnNxdW87cyBib3dsIG9uIHRoZSBoaWdoZXN0ICd9LAogIHtnOjI0LGE6J3NoZWxmJ30sCiAge3Q6IiBpbiB0aGUga2l0Y2hlbi4gJmxzcXVvO0JlIGNhcmVmdWwhJnJzcXVvOyBzYWlkIEphbmUmcnNxdW87cyBkYWQgd2hlbiBzaGUgd2FzIHB1dHRpbmcgaXQgdXAgdGhlcmUuICZsc3F1bztUaGF0JnJzcXVvO3MgZGFuZ2Vyb3VzISZyc3F1bzsgQnV0IEphbmUgc2FpZCwgJmxzcXVvO0l0JnJzcXVvO3MgT0ssIERhZC4gVG9tIGNhbiZyc3F1bzt0ICJ9LAogIHtnOjI1LGE6J2NsaW1iJ30sCiAge3Q6IiB1cCB0aGVyZS4mcnNxdW87IFRoZSBuZXh0IG1vcm5pbmcsIHdoZW4gSmFuZSB3ZW50IGRvd25zdGFpcnMsIHNoZSBzYXcgaGVyIGNhdCBpbiB0aGUga2l0Y2hlbi4gSGUgd2FzIHBsYXlpbmcgd2l0aCBzb21ldGhpbmcgZ29sZC4gJmxzcXVvO0hlbHAhIERhZCEmcnNxdW87IHNoZSAifSwKICB7ZzoyNixhOidzaG91dGVkJ30sCiAge3Q6IiAuICZsc3F1bztUaGUgY2F0JnJzcXVvO3MgZ290IFN1bm55ISZyc3F1bzsgJmxzcXVvO1RoYXQmcnNxdW87cyBub3QgU3VubnksJnJzcXVvOyBoZSBzYWlkLiAmbHNxdW87SXQmcnNxdW87cyBvbmx5IGEgY2Fycm90LiZyc3F1bzsgJmxzcXVvO1dlbGwsJnJzcXVvOyBKYW5lIHNhaWQsICZsc3F1bztJJnJzcXVvO20gZ29pbmcgdG8gbW92ZSBTdW5ueSZyc3F1bztzIGJvd2wgYWdhaW4uIFRoZSBraXRjaGVuIGlzIHRvbyBkYW5nZXJvdXMuIFdoZXJlIGNhbiBJIHB1dCBpdD8mcnNxdW87ICZsc3F1bztJbiB5b3VyIGJlZHJvb20sJnJzcXVvOyBoZSBhbnN3ZXJlZCwgJmxzcXVvO2FuZCBkb24mcnNxdW87dCBsZXQgVG9tIG9yIHRoZSBjYXQgaW4gdGhlcmUhJnJzcXVvOyAmbHNxdW87R29vZCAifSwKICB7ZzoyNyxhOidpZGVhJ30sCiAge3Q6IiAhJnJzcXVvOyBzYWlkIEphbmUgLiJ9Cl07CnZhciBQNF9USVRMRT17bjoyOCxhOiJTdW5ueSdzIG5ldyBob21lIixvcHRzOlsnU3VubnkgaHVydHMgdGhlIGNhdCcsIlRvbSdzIGJlYXV0aWZ1bCBmaXNoIiwiU3VubnkncyBuZXcgaG9tZSJdfTsKdmFyIFA1X1NUT1JZPSJMYXN0IHdlZWtlbmQsIEJldHR5IHBsYXllZCB3aXRoIGhlciBmcmllbmRzLCBSaWNoYXJkIGFuZCBIZWxlbi4gRmlyc3QsIHRoZXkgcGxheWVkIHZvbGxleWJhbGwsIGFuZCB0aGVuIHRoZXkgd2VudCB0byB0aGUgcGFyayBhbmQgY2xpbWJlZCB0cmVlcy4gJmxzcXVvO1RoaXMgaXMgYm9yaW5nLCZyc3F1bzsgc2FpZCBIZWxlbi4gJmxzcXVvO0kga25vdyBhIGdhbWUgdGhhdCZyc3F1bztzIG1vcmUgZXhjaXRpbmcsIGJ1dCB3ZSBuZWVkIGFuIHVtYnJlbGxhLiZyc3F1bzsgVGhleSB3ZW50IHRvIGhlciBob3VzZSBhbmQgZm91bmQgYSBiaWcgcmVkIHVtYnJlbGxhLiBIZWxlbiBvcGVuZWQgaXQgYW5kIHN0b29kIG9uIGEgY2hhaXIuIFRoZW4gc2hlIGp1bXBlZCBvZmYuICZsc3F1bztMb29rISBJIGNhbiBmbHkhJnJzcXVvOyBzaGUgc2FpZC4gJmxzcXVvO1RoYXQgY2hhaXIgaXNuJnJzcXVvO3QgdmVyeSBoaWdoLCZyc3F1bzsgc2FpZCBSaWNoYXJkLiAmbHNxdW87V2F0Y2ggbWUhJnJzcXVvOyBIZSB0b29rIHRoZSB1bWJyZWxsYSBhbmQganVtcGVkIG9mZiBhIHRhYmxlLiBCZXR0eSB3YW50ZWQgdG8gZmx5LCB0b28uICZsc3F1bztJJnJzcXVvO20gZ29pbmcgdG8ganVtcCBvZmYgdGhlIGJhbGNvbnkgdXBzdGFpcnMhJnJzcXVvOyBzaGUgc2FpZC4gJmxzcXVvO05vISBEb24mcnNxdW87dCEmcnNxdW87IHNob3V0ZWQgUmljaGFyZC4gJmxzcXVvO0l0JnJzcXVvO3MgdG9vIGhpZ2ghJnJzcXVvOyAmbHNxdW87SXQgaXNuJnJzcXVvO3QgdmVyeSBoaWdoLCZyc3F1bzsgc2FpZCBCZXR0eS4gQmV0dHkgY291bGQgc2VlIHRoZSBzb2Z0IGdyYXNzIGp1c3QgYmVsb3cgaGVyLiBTaGUgd2FzIHZlcnkgYWZyYWlkLCBidXQgc2hlIG9wZW5lZCB0aGUgdW1icmVsbGEgYW5kIGp1bXBlZC4gU2hlIGZlbGwgaW50byBzb21lIGZsb3dlcnMuIEhlbGVuIGFuZCBSaWNoYXJkIHJhbiBkb3duc3RhaXJzLiAmbHNxdW87QmV0dHkhIEFyZSB5b3UgT0s\/JnJzcXVvOyB0aGV5IGFza2VkLiAmbHNxdW87Tm8hJnJzcXVvOyBzaGUgYW5zd2VyZWQuICZsc3F1bztNeSBsZWZ0IGxlZyBodXJ0cy4mcnNxdW87IEhlbGVuIHJhbiB0byB0ZWxsIEJldHR5JnJzcXVvO3MgbXVtLiBTaGUgdG9vayBCZXR0eSB0byB0aGUgaG9zcGl0YWwgd2hlcmUgYSBkb2N0b3IgbG9va2VkIGF0IEJldHR5JnJzcXVvO3MgbGVnLiAmbHNxdW87WW91ciBsZWcgaXMgT0ssIEJldHR5LiBCdXQgeW91IGhhdmVuJnJzcXVvO3QgZ290IHdpbmdzLiBEb24mcnNxdW87dCB0cnkgdG8gZmx5IGFnYWluISZyc3F1bzsgaGUgc2FpZC4gVGhlIG5leHQgZGF5LCB0aGUgY2hpbGRyZW4gaW4gaGVyIGNsYXNzIHBvc3RlZCBoZXIgYSBmdW5ueSBjYXJkLiBJbnNpZGUgaXQgc2FpZCwgJmxzcXVvO0dvIGJ5IHBsYW5lIG5leHQgdGltZSwgQmV0dHkhJnJzcXVvOyI7CnZhciBQNV9FWD1be2Q6IlRoZSBuYW1lcyBvZiBCZXR0eSdzIGZyaWVuZHMgYXJlIixhOidSaWNoYXJkIGFuZCBIZWxlbid9LHtkOidUaGUgdGhyZWUgY2hpbGRyZW4gY2xpbWJlZCB1cCB0aGUgX19fIGluIHRoZSBwYXJrLicsYTondHJlZXMnfV07CnZhciBQNT1bCiAge246MjksZDonSGVsZW4gd2FzIGJvcmVkIGFuZCB3YW50ZWQgdG8gcGxheSBhIGdhbWUgd2hpY2ggd2FzIG1vcmUgX19fIC4nLGFjYzpbJ2V4Y2l0aW5nJywnbW9yZSBleGNpdGluZyddLGRpc3A6J2V4Y2l0aW5nJ30sCiAge246MzAsZDonSGVsZW4gaGVsZCBfX18gaW4gaGVyIGhhbmQgYW5kIGp1bXBlZCBvZmYgYSBjaGFpci4nLGFjYzpbJ2EvdGhlIChiaWcpIChyZWQpIHVtYnJlbGxhL2FuIHVtYnJlbGxhJywnYW4gdW1icmVsbGEnLCdhIHVtYnJlbGxhJywndGhlIHVtYnJlbGxhJywnYSBiaWcgcmVkIHVtYnJlbGxhJywnYSByZWQgdW1icmVsbGEnLCd0aGUgYmlnIHJlZCB1bWJyZWxsYScsJ2EgYmlnIHVtYnJlbGxhJywndGhlIHJlZCB1bWJyZWxsYScsJ3VtYnJlbGxhJywndGhlIGJpZywgcmVkIHVtYnJlbGxhJywnYSBiaWcsIHJlZCB1bWJyZWxsYScsJ2EvdGhlIChiaWcpIChyZWQpIHVtYnJlbGxhJywnYS90aGUgdW1icmVsbGEnXSxkaXNwOidhL3RoZSAoYmlnKSAocmVkKSB1bWJyZWxsYS9hbiB1bWJyZWxsYSd9LAogIHtuOjMxLGQ6J1RoZW4gX19fIGp1bXBlZCBvZmYgYSB0YWJsZS4nLGFjYzpbJ3JpY2hhcmQnXSxkaXNwOidSaWNoYXJkJ30sCiAge246MzIsZDonUmljaGFyZCB0b2xkIEJldHR5IG5vdCB0byBqdW1wIG9mZiB0aGUgX19fIC4nLGFjYzpbJ3Vwc3RhaXJzIGJhbGNvbnknLCdiYWxjb255IHVwc3RhaXJzJywnYmFsY29ueScsJ3RoZSBiYWxjb255JywndGhlIHVwc3RhaXJzIGJhbGNvbnknLCcodXBzdGFpcnMpIGJhbGNvbnknLCcodXBzdGFpcnMpIGJhbGNvbnkvYmFsY29ueSB1cHN0YWlycyddLGRpc3A6Jyh1cHN0YWlycykgYmFsY29ueSAvIGJhbGNvbnkgdXBzdGFpcnMnfSwKICB7bjozMyxkOidCZXR0eSBmZWx0IF9fXyB3aGVuIHNoZSBsb29rZWQgZG93biBhdCB0aGUgZ3JvdW5kLicsYWNjOlsnYWZyYWlkJywndmVyeSBhZnJhaWQnLCcodmVyeSkgYWZyYWlkJywnc2NhcmVkJywnZnJpZ2h0ZW5lZCddLGRpc3A6Jyh2ZXJ5KSBhZnJhaWQnfSwKICB7bjozNCxkOidXaGVuIEJldHR5IGZlbGwgYW5kIGh1cnQgaGVyIF9fXyAsIEhlbGVuIHJhbiB0byB0ZWxsIGhlciBtb3RoZXIgYW5kIHRoZXkgdG9vayBoZXIgdG8gaG9zcGl0YWwuJyxhY2M6WydsZWZ0IGxlZycsJ2xlZycsJyhsZWZ0KSBsZWcnLCdoZXIgbGVmdCBsZWcnLCdoZXIgbGVnJ10sZGlzcDonKGxlZnQpIGxlZyd9LAogIHtuOjM1LGQ6J0JldHR5IHdhcyBPSyEgU2hlIGdvdCBhIGZ1bm55IGNhcmQgdGhlIG5leHQgZGF5IGZyb20gYWxsIHRoZSBfX18gLicsYWNjOlsiY2hpbGRyZW4gaW4gaGVyIGNsYXNzIiwiY2hpbGRyZW4gaW4gYmV0dHkncyBjbGFzcyIsImNoaWxkcmVuIGluIGhlci9iZXR0eSdzIGNsYXNzIiwiY2hpbGRyZW4gaW4gaGVyL2JldHR5XHUyMDE5cyBjbGFzcyIsImNoaWxkcmVuIGluIGJldHR5XHUyMDE5cyBjbGFzcyIsImNoaWxkcmVuIGluIHRoZSBjbGFzcyIsImNoaWxkcmVuIiwiY2hpbGRyZW4gaW4gaGVyIGNsYXNzLiIsInRoZSBjaGlsZHJlbiBpbiBoZXIgY2xhc3MiXSxkaXNwOiJjaGlsZHJlbiBpbiBoZXIgLyBCZXR0eSdzIGNsYXNzIn0KXTsKdmFyIFA2X1BBUlRTPVsKICB7dDonTWFueSBwZW9wbGUgdmlzaXQgem9vcyAnfSx7ZXg6J2V2ZXJ5J30sCiAge3Q6JyB5ZWFyLiBUaGV5IGdvIHRvIHpvb3MgJ30se2c6MzYsYTonYmVjYXVzZSd9LAogIHt0OicgdGhleSBlbmpveSBzZWVpbmcgYW5pbWFscyBhbmQgbGVhcm5pbmcgbW9yZSBhYm91dCB0aGVtLiBBbmltYWxzIGZyb20gbWFueSBkaWZmZXJlbnQgcGFydHMgJ30se2c6MzcsYTonb2YnfSwKICB7dDonIHRoZSB3b3JsZCBsaXZlIHRoZXJlLiBZb3UgY2FuIHVzdWFsbHkgc2VlIGxpb25zLCB0aWdlcnMsIGVsZXBoYW50cywgY2FtZWxzIGFuZCBtb25rZXlzLCBhbmQgYWxzbyBmaXNoLCBmcm9ncyBhbmQgc25ha2VzLiBZb3UgY2FuIGRyYXcgdGhlIGFuaW1hbHMgb3IgdGFrZSBwaG90b3Mgb2YgJ30se2c6MzgsYTondGhlbSd9LAogIHt0OicgLCBhbmQgaW4gc29tZSB6b29zIHlvdSBjYW4gd2F0Y2ggdmlkZW9zLCB0b28uIFNvbWV0aW1lcyB5b3UgY2FuIHJpZGUgZWxlcGhhbnRzIG9yIGNhbWVscy4gVGhlIHBlb3BsZSAnfSx7ZzozOSxhOid3aG8nfSwKICB7dDonIGdpdmUgdGhlIGFuaW1hbHMgZm9vZCBoYXZlIHRvIHdvcmsgdmVyeSAnfSx7Zzo0MCxhOidoYXJkJ30sCiAge3Q6JyAuIEV2ZXJ5IGRheSB0aGV5IGdpdmUgdGhlbSBmb29kIGFuZCB3YXRlciBhbmQgY2xlYW4gJ30se2c6NDEsYTondGhlaXInfSwKICB7dDonIGhvbWVzLiBTb21lIGFuaW1hbHMgZWF0IGxlYXZlcywgZnJ1aXQgYW5kIHZlZ2V0YWJsZXMsICd9LHtnOjQyLGE6J2J1dCd9LAogIHt0Oicgb3RoZXJzIGVhdCBtZWF0IG9yIGZpc2guIEF0IExvbmRvbiBab28sICd9LHtnOjQzLGE6J3RoZXJlJ30sCiAge3Q6JyBhcmUgYWxzbyBwZXRzLCBsaWtlIG1pY2UgYW5kIHJhYmJpdHMsIGFuZCBmYXJtIGFuaW1hbHMsIGxpa2Ugc2hlZXAgYW5kIGdvYXRzLiBDaGlsZHJlbiBjYW4gcGxheSB3aXRoICd9LHtnOjQ0LGE6J3RoZXNlJ30sCiAge3Q6JyBhbmltYWxzLiBNb3N0IGFuaW1hbHMgYXJlIGJlYXV0aWZ1bCwgYnV0IHNvbWUgb2YgdGhlbSBjYW4gJ30se2c6NDUsYTonYmUnfSwKICB7dDonIGRhbmdlcm91cy4nfQpdOwp2YXIgUDZfT1BUUz17MzY6WydiZWNhdXNlJywnc28nLCd3aGVuJ10sMzc6Wyd0bycsJ29uJywnb2YnXSwzODpbJ3VzJywnaXQnLCd0aGVtJ10sMzk6Wyd3aG8nLCd3aG9zZScsJ3doaWNoJ10sNDA6WydoYXJkJywnaGFyZGVyJywnaGFyZGVzdCddLDQxOlsnaXRzJywndGhlaXInLCd5b3VyJ10sNDI6WydvcicsJ2J1dCcsJ2lmJ10sNDM6Wyd0aGV5JywndGhlcmUnLCdoZXJlJ10sNDQ6Wyd0aGVzZScsJ3RoaXMnLCd0aGF0J10sNDU6WydiZScsJ2JlaW5nJywnYmVlbiddfTsKdmFyIFA3X1BBUlRTPVsKICB7dDonU29tZXRoaW5nIGhvcnJpYmxlIGhhcHBlbmVkIHRvIG1lIHllc3RlcmRheSEgJ30sCiAge2V4OidJbid9LAogIHt0OiIgdGhlIGFmdGVybm9vbiBJIHdlbnQgdG8gU3VlJnJzcXVvO3MgaG91c2UuICZsc3F1bztXb3VsZCB5b3UgIn0sCiAge2c6NDYsYTonbGlrZScsYWNjOlsnbGlrZSddfSwKICB7dDoiIGEgY3VwIG9mIHRlYT8mcnNxdW87IHNoZSBhc2tlZCBtZS4gJmxzcXVvO1llcywgcGxlYXNlLCZyc3F1bzsgIn0sCiAge2c6NDcsYTonSScsYWNjOlsnaSddfSwKICB7dDonIGFuc3dlcmVkLiBTaGUgd2VudCB0byB0aGUga2l0Y2hlbiBhbmQgbWFkZSB0aGUgdGVhLiAmbHNxdW87J30sCiAge2c6NDgsYTonRG8nLGFjYzpbJ2RvJ119LAogIHt0OiIgeW91IHRha2Ugc3VnYXI\/JnJzcXVvOyBzaGUgc2hvdXRlZCBmcm9tIHRoZXJlLiAmbHNxdW87WWVzLCB0aHJlZSBzcG9vbnMgb2Ygc3VnYXIgZm9yIG1lISZyc3F1bzsgSSBzYWlkLiBUaGVuIHNoZSBicm91Z2h0IG1lIHRoZSB0ZWEuIFdoZW4gSSBkcmFuayBpdCwgaXQgdGFzdGVkIHZlcnkgc3RyYW5nZS4gJmxzcXVvO1N1ZSwgeW91JnJzcXVvO3ZlICJ9LAogIHtnOjQ5LGE6J3B1dCcsYWNjOlsncHV0J119LAogIHt0OiIgc2FsdCBpbiBteSB0ZWEsIG5vdCBzdWdhciEmcnNxdW87IEkgc2FpZC4gJmxzcXVvO09oLCBubyEmcnNxdW87IHNhaWQgU3VlLiAmbHNxdW87SSAifSwKICB7Zzo1MCxhOidhbScsYWNjOlsnYW0nXX0sCiAge3Q6IiBzb3JyeSEmcnNxdW87In0KXTsKdmFyIFRPVEFMPTUwOwoKLyogPT09PT0gaGVscGVycyA9PT09PSAqLwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9bPD5dL2csZnVuY3Rpb24oYyl7cmV0dXJueyc8JzonJmx0OycsJz4nOicmZ3Q7J31bY119KX0KZnVuY3Rpb24gJChzLGMpe3JldHVybiAoY3x8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Iocyl9CmZ1bmN0aW9uICQkKHMsYyl7cmV0dXJuIFtdLnNsaWNlLmNhbGwoKGN8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHMpKX0KZnVuY3Rpb24gbm9ybSh2KXtyZXR1cm4gdi50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLiwhP10kLywnJykucmVwbGFjZSgvXHMrL2csJyAnKS5yZXBsYWNlKC9bXHUyMDE4XHUyMDE5XS9nLCInIil9CgovKiA9PT09PSBzdGF0ZSA9PT09PSAqLwp2YXIgUDJzZWw9e30sUDNzZWw9e30sUDRnYXA9e30sUDR0aXRsZT1udWxsLFA2Z2FwPXt9Owp2YXIgUDRfR0FQUz1bMjMsMjQsMjUsMjYsMjddLFA2X0dBUFM9WzM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1XSxQN19HQVBTPVs0Niw0Nyw0OCw0OSw1MF07CgovKiA9PT09PSBQQVJUIDEgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGJhbms9JCgnI3AxQmFuaycpOwogIFAxX0JBTksuZm9yRWFjaChmdW5jdGlvbih3KXtiYW5rLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0id2NoaXAgd3RleHQiPicrdysnPC9kaXY+Jyk7fSk7CiAgdmFyIHJvd3M9JCgnI3AxUm93cycpOwogIHJvd3MuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJkZWZyb3cgZXhhbXBsZSI+PHNwYW4gY2xhc3M9InFuIj5FeDwvc3Bhbj48c3BhbiBjbGFzcz0iZHRleHQiPicrZXNjKFAxX0VYLmQpKyc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojN0I1QjAwIj4nK2VzYyhQMV9FWC5hKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJleC10YWciPkV4PC9zcGFuPjwvZGl2PicpOwogIFAxLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICByb3dzLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0iZGVmcm93Ij48c3BhbiBjbGFzcz0icW4iPicrcS5uKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImR0ZXh0Ij4nK2VzYyhxLmQpKyc8L3NwYW4+PGlucHV0IGNsYXNzPSJpbnB1dC1ibGFuayIgZGF0YS1xPSInK3EubisnIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iLi4uIj48YnV0dG9uIGNsYXNzPSJzaG93LWFucy1idG4iIGRhdGEtc2hvdz0iJytxLm4rJyI+JiMxMjgwNjU7PC9idXR0b24+PC9kaXY+Jyk7CiAgfSk7Cn0pKCk7Ci8qID09PT09IFBBUlQgMiA9PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcj0kKCcjcDJSb3dzJyk7CiAgUDJfRVguZm9yRWFjaChmdW5jdGlvbihlKXtyLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0ieW4tcm93IiBzdHlsZT0ib3BhY2l0eTouNyI+PGRpdiBjbGFzcz0ieW4tcSI+PHNwYW4gY2xhc3M9InFuIj5FeDwvc3Bhbj48c3Bhbj4nK2VzYyhlLmQpKyc8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ieW4tb3B0cyI+PHNwYW4gY2xhc3M9InluLWJ0biAnKyhlLmE9PT0neWVzJz8nY29ycmVjdCc6JycpKyciPnllczwvc3Bhbj48c3BhbiBjbGFzcz0ieW4tYnRuICcrKGUuYT09PSdubyc\/J2NvcnJlY3QnOicnKSsnIj5ubzwvc3Bhbj48L2Rpdj48L2Rpdj4nKTt9KTsKICBQMi5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9InluLXJvdyIgZGF0YS1xPSInK3EubisnIj48ZGl2IGNsYXNzPSJ5bi1xIj48c3BhbiBjbGFzcz0icW4iPicrcS5uKyc8L3NwYW4+PHNwYW4+Jytlc2MocS5kKSsnPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InluLW9wdHMiPjxidXR0b24gY2xhc3M9InluLWJ0biIgZGF0YS15bj0ieWVzIj55ZXM8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJ5bi1idG4iIGRhdGEteW49Im5vIj5ubzwvYnV0dG9uPjxidXR0b24gY2xhc3M9InNob3ctYW5zLWJ0biIgZGF0YS1zaG93PSInK3EubisnIiBzdHlsZT0ibWFyZ2luLWxlZnQ6YXV0byI+JiMxMjgwNjU7PC9idXR0b24+PC9kaXY+PC9kaXY+Jyk7CiAgfSk7CiAgJCQoJyNwMlJvd3MgLnluLWJ0bltkYXRhLXluXScpLmZvckVhY2goZnVuY3Rpb24oYil7Yi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciByb3c9Yi5jbG9zZXN0KCcueW4tcm93Jyksbj1yb3cuZGF0YXNldC5xOwogICAgJCQoJy55bi1idG5bZGF0YS15bl0nLHJvdykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbCcpfSk7CiAgICBiLmNsYXNzTGlzdC5hZGQoJ3NlbCcpO1Ayc2VsW25dPWIuZGF0YXNldC55bjt1cGRhdGVQcm9ncmVzcygpOwogIH0pO30pOwp9KSgpOwovKiA9PT09PSBQQVJUIDMgKG1hdGNoIEEtSCkgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIG9iPSQoJyNwM09wdHMnKTsKICBQM19PUFRTLmZvckVhY2goZnVuY3Rpb24obyl7b2IuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJvaScrKG8uZXg\/JyBleCc6JycpKyciPjxzcGFuIGNsYXNzPSJvbCI+JytvLmwrJzwvc3Bhbj48c3Bhbj4nK28udCsoby5leD8nIDxiPihFeGFtcGxlKTwvYj4nOicnKSsnPC9zcGFuPjwvZGl2PicpO30pOwogIGZ1bmN0aW9uIHNlbChuKXt2YXIgaD0nPHNlbGVjdCBjbGFzcz0ibWF0Y2gtc2VsZWN0IiBkYXRhLXE9IicrbisnIj48b3B0aW9uIHZhbHVlPSIiPj88L29wdGlvbj4nO1snQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnXS5mb3JFYWNoKGZ1bmN0aW9uKEwpe2grPSc8b3B0aW9uIHZhbHVlPSInK0wrJyI+JytMKyc8L29wdGlvbj4nO30pO3JldHVybiBoKyc8L3NlbGVjdD4nO30KICB2YXIgcj0kKCcjcDNSb3dzJyk7CiAgci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRsZy1yb3cgZXhhbXBsZSI+PHNwYW4gY2xhc3M9InFuIj5FeDwvc3Bhbj48c3BhbiBjbGFzcz0iZGxnLXEiPjxiPlJvYmVydDo8L2I+ICcrZXNjKFAzX0VYLnEpKyc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojN0I1QjAwIj5WaWNreTogJytQM19FWC5hbnMrJzwvc3Bhbj48c3BhbiBjbGFzcz0iZXgtdGFnIj5FeDwvc3Bhbj48L2Rpdj4nKTsKICBQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRsZy1yb3ciIGRhdGEtcT0iJytxLm4rJyI+PHNwYW4gY2xhc3M9InFuIj4nK3EubisnPC9zcGFuPjxzcGFuIGNsYXNzPSJkbGctcSI+PGI+Um9iZXJ0OjwvYj4gJytxLnErJzwvc3Bhbj48Yj5WaWNreTo8L2I+ICcrc2VsKHEubikrJzxidXR0b24gY2xhc3M9InNob3ctYW5zLWJ0biIgZGF0YS1zaG93PSInK3EubisnIj4mIzEyODA2NTs8L2J1dHRvbj48L2Rpdj4nKTsKICB9KTsKICAkJCgnI3AzUm93cyAubWF0Y2gtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZnVuY3Rpb24oKXtQM3NlbFtzLmRhdGFzZXQucV09cy52YWx1ZTt1cGRhdGVQcm9ncmVzcygpO30pO30pOwp9KSgpOwovKiA9PT09PSBQQVJUIDQgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGJhbms9JCgnI3A0QmFuaycpOwogIFA0X0JBTksuZm9yRWFjaChmdW5jdGlvbih3KXtiYW5rLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0id2NoaXAgd3RleHQiPicrdysnPC9kaXY+Jyk7fSk7CiAgdmFyIHN0b3J5PSQoJyNwNFN0b3J5JyksaHRtbD0nJzsKICBQNF9QQVJUUy5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgaWYocC50KWh0bWwrPWVzYyhwLnQpOwogICAgZWxzZSBpZihwLmV4KWh0bWwrPSc8dSBzdHlsZT0iY29sb3I6dmFyKC0tYWNjZW50LTEpO2ZvbnQtd2VpZ2h0OjcwMCI+JytwLmV4Kyc8L3U+JzsKICAgIGVsc2UgaWYocC5nKXsKICAgICAgaHRtbCs9JzxzZWxlY3QgY2xhc3M9ImdhcC1zZWxlY3QiIGRhdGEtcT0iJytwLmcrJyI+PG9wdGlvbiB2YWx1ZT0iIj4oJytwLmcrJykgY2hvb3NlPC9vcHRpb24+JytQNF9CQU5LLm1hcChmdW5jdGlvbih3KXtyZXR1cm4gJzxvcHRpb24gdmFsdWU9IicrdysnIj4nK3crJzwvb3B0aW9uPic7fSkuam9pbignJykrJzwvc2VsZWN0Pic7CiAgICB9CiAgfSk7CiAgc3RvcnkuaW5uZXJIVE1MPWh0bWw7CiAgJCQoJyNwNFN0b3J5IC5nYXAtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZnVuY3Rpb24oKXtQNGdhcFtzLmRhdGFzZXQucV09cy52YWx1ZTt1cGRhdGVQcm9ncmVzcygpO30pO30pOwogIHZhciB0dD0kKCcjcDRUaXRsZScpOwogIFA0X1RJVExFLm9wdHMuZm9yRWFjaChmdW5jdGlvbihvKXt0dC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9InRpY2tib3giIGRhdGEtdGl0bGU9IicrZXNjKG8pKyciPjxzcGFuIGNsYXNzPSJ0YiI+JiMxMDAwMzs8L3NwYW4+PHNwYW4+Jytlc2MobykrJzwvc3Bhbj48L2Rpdj4nKTt9KTsKICAkJCgnI3A0VGl0bGUgLnRpY2tib3gnKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAkJCgnI3A0VGl0bGUgLnRpY2tib3gnKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnc2VsJyl9KTsKICAgIGIuY2xhc3NMaXN0LmFkZCgnc2VsJyk7UDR0aXRsZT1iLmRhdGFzZXQudGl0bGU7dXBkYXRlUHJvZ3Jlc3MoKTsKICB9KTt9KTsKfSkoKTsKLyogPT09PT0gUEFSVCA1ID09PT09ICovCihmdW5jdGlvbigpewogICQoJyNwNVN0b3J5JykuaW5uZXJIVE1MPSc8aW1nIGNsYXNzPSJzY2VuZSIgc3JjPSIvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDYvZjN0MnJ3X3A1LmpwZyIgYWx0PSJCZXR0eSBhbmQgZnJpZW5kcyBvbiB0aGUgYmFsY29ueSI+JytQNV9TVE9SWTsKICB2YXIgcj0kKCcjcDVSb3dzJyk7CiAgUDVfRVguZm9yRWFjaChmdW5jdGlvbihlKXtyLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0iZGVmcm93IGV4YW1wbGUiPjxzcGFuIGNsYXNzPSJxbiI+RXg8L3NwYW4+PHNwYW4gY2xhc3M9ImR0ZXh0Ij4nK2UuZCsnPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzdCNUIwMCI+JytlLmErJzwvc3Bhbj48c3BhbiBjbGFzcz0iZXgtdGFnIj5FeDwvc3Bhbj48L2Rpdj4nKTt9KTsKICBQNS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRlZnJvdyI+PHNwYW4gY2xhc3M9InFuIj4nK3EubisnPC9zcGFuPjxzcGFuIGNsYXNzPSJkdGV4dCI+JytxLmQrJzwvc3Bhbj48aW5wdXQgY2xhc3M9ImlucHV0LWJsYW5rIiBkYXRhLXE9IicrcS5uKyciIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSIxLTQgd29yZHMiPjxidXR0b24gY2xhc3M9InNob3ctYW5zLWJ0biIgZGF0YS1zaG93PSInK3EubisnIj4mIzEyODA2NTs8L2J1dHRvbj48L2Rpdj4nKTsKICB9KTsKfSkoKTsKLyogPT09PT0gUEFSVCA2ID09PT09ICovCihmdW5jdGlvbigpewogIHZhciBzdG9yeT0kKCcjcDZTdG9yeScpLGh0bWw9Jyc7CiAgUDZfUEFSVFMuZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIGlmKHAudClodG1sKz1lc2MocC50KTsKICAgIGVsc2UgaWYocC5leClodG1sKz0nPHUgc3R5bGU9ImNvbG9yOnZhcigtLWFjY2VudC0xKTtmb250LXdlaWdodDo3MDAiPicrcC5leCsnPC91Pic7CiAgICBlbHNlIGlmKHAuZyl7CiAgICAgIHZhciBMPVsnQScsJ0InLCdDJ107CiAgICAgIGh0bWwrPSc8c2VsZWN0IGNsYXNzPSJnYXAtc2VsZWN0IiBkYXRhLXE9IicrcC5nKyciPjxvcHRpb24gdmFsdWU9IiI+KCcrcC5nKycpPC9vcHRpb24+JytQNl9PUFRTW3AuZ10ubWFwKGZ1bmN0aW9uKHcsaSl7cmV0dXJuICc8b3B0aW9uIHZhbHVlPSInK0xbaV0rJyI+Jyt3Kyc8L29wdGlvbj4nO30pLmpvaW4oJycpKyc8L3NlbGVjdD4nOwogICAgfQogIH0pOwogIHN0b3J5LmlubmVySFRNTD1odG1sOwogICQkKCcjcDZTdG9yeSAuZ2FwLXNlbGVjdCcpLmZvckVhY2goZnVuY3Rpb24ocyl7cy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7UDZnYXBbcy5kYXRhc2V0LnFdPXMudmFsdWU7dXBkYXRlUHJvZ3Jlc3MoKTt9KTt9KTsKfSkoKTsKLyogPT09PT0gUEFSVCA3IChvcGVuIGNsb3plIDEgd29yZCkgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIHN0b3J5PSQoJyNwN1N0b3J5JyksaHRtbD0nJzsKICBQN19QQVJUUy5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgaWYocC50KWh0bWwrPWVzYyhwLnQpOwogICAgZWxzZSBpZihwLmV4KWh0bWwrPSc8dSBzdHlsZT0iY29sb3I6dmFyKC0tYWNjZW50LTEpO2ZvbnQtd2VpZ2h0OjcwMCI+JytwLmV4Kyc8L3U+JzsKICAgIGVsc2UgaWYocC5nKXsKICAgICAgaHRtbCs9JzxpbnB1dCBjbGFzcz0iaW5wdXQtYmxhbmsgaW5wdXQtbWluaSIgZGF0YS1xPSInK3AuZysnIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iKCcrcC5nKycpIj4nOwogICAgfQogIH0pOwogIHN0b3J5LmlubmVySFRNTD1odG1sOwp9KSgpOwoKLyogPT09PT0gcHJvZ3Jlc3MgPT09PT0gKi8KZnVuY3Rpb24gcDdmaW5kKGcpe3ZhciBmPW51bGw7UDdfUEFSVFMuZm9yRWFjaChmdW5jdGlvbihwKXtpZihwLmc9PT1nKWY9cDt9KTtyZXR1cm4gZjt9CmZ1bmN0aW9uIGFuc3dlcmVkKCl7CiAgdmFyIG49MDsKICBQMS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3ZhciBlbD0kKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3EubisnIl0nKTtpZihlbCYmZWwudmFsdWUudHJpbSgpKW4rKzt9KTsKICBQMi5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKFAyc2VsW3Eubl0pbisrO30pOwogIFAzLmZvckVhY2goZnVuY3Rpb24ocSl7aWYoUDNzZWxbcS5uXSluKys7fSk7CiAgUDRfR0FQUy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKFA0Z2FwW2ddKW4rKzt9KTsKICBpZihQNHRpdGxlKW4rKzsKICBQNS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3ZhciBlbD0kKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3EubisnIl0nKTtpZihlbCYmZWwudmFsdWUudHJpbSgpKW4rKzt9KTsKICBQNl9HQVBTLmZvckVhY2goZnVuY3Rpb24oZyl7aWYoUDZnYXBbZ10pbisrO30pOwogIFA3X0dBUFMuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytnKyciXScpO2lmKGVsJiZlbC52YWx1ZS50cmltKCkpbisrO30pOwogIHJldHVybiBuOwp9CmZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKCl7dmFyIGE9YW5zd2VyZWQoKTskKCcjYW5zd2VyZWRDb3VudCcpLnRleHRDb250ZW50PWE7JCgnI3Byb2dGaWxsJykuc3R5bGUud2lkdGg9KGEvVE9UQUwqMTAwKSsnJSc7fQpkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbihlKXtpZihlLnRhcmdldC5jbGFzc0xpc3QmJmUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnaW5wdXQtYmxhbmsnKSl1cGRhdGVQcm9ncmVzcygpO30pOwoKLyogPT09PT0gcmV2ZWFsIGhlbHBlcnMgPT09PT0gKi8KZnVuY3Rpb24gcmV2ZWFsSW5wdXQobix2YWwpe3ZhciBlbD0kKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK24rJyJdJyk7aWYoZWwpe2VsLnZhbHVlPXZhbDtlbC5jbGFzc0xpc3QuYWRkKCdyZXZlYWxlZCcpO3VwZGF0ZVByb2dyZXNzKCk7fX0KZnVuY3Rpb24gcmV2ZWFsWU4obixhKXt2YXIgcm93PSQoJy55bi1yb3dbZGF0YS1xPSInK24rJyJdJyk7aWYoIXJvdylyZXR1cm47JCQoJy55bi1idG5bZGF0YS15bl0nLHJvdykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbCcpO2lmKHguZGF0YXNldC55bj09PWEpeC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7fSk7UDJzZWxbbl09YTt1cGRhdGVQcm9ncmVzcygpO30KZnVuY3Rpb24gcmV2ZWFsTWF0Y2gobixhKXt2YXIgcz0kKCcubWF0Y2gtc2VsZWN0W2RhdGEtcT0iJytuKyciXScpO2lmKHMpe3MudmFsdWU9YTtzLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTtQM3NlbFtuXT1hO3VwZGF0ZVByb2dyZXNzKCk7fX0KZnVuY3Rpb24gcDRhbnMoZyl7dmFyIGY9bnVsbDtQNF9QQVJUUy5mb3JFYWNoKGZ1bmN0aW9uKHApe2lmKHAuZz09PWcpZj1wO30pO3JldHVybiBmP2YuYTonJzt9CmZ1bmN0aW9uIHJldmVhbFRpdGxlKCl7JCQoJyNwNFRpdGxlIC50aWNrYm94JykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbCcpO2lmKHguZGF0YXNldC50aXRsZT09PVA0X1RJVExFLmEpe3guY2xhc3NMaXN0LmFkZCgnc2VsJyk7fX0pO1A0dGl0bGU9UDRfVElUTEUuYTt9CgovKiA9PT09PSBzaG93IGFuc3dlcnMgPT09PT0gKi8KZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgdmFyIGI9ZS50YXJnZXQuY2xvc2VzdCgnLnNob3ctYW5zLWJ0bicpO2lmKCFiKXJldHVybjsKICB2YXIgaz1iLmRhdGFzZXQuc2hvdzsKICBpZihrPT09J1AxQUxMJyl7UDEuZm9yRWFjaChmdW5jdGlvbihxKXtyZXZlYWxJbnB1dChxLm4scS5hKTt9KTtyZXR1cm47fQogIGlmKGs9PT0nUDJBTEwnKXtQMi5mb3JFYWNoKGZ1bmN0aW9uKHEpe3JldmVhbFlOKHEubixxLmEpO30pO3JldHVybjt9CiAgaWYoaz09PSdQM0FMTCcpe1AzLmZvckVhY2goZnVuY3Rpb24ocSl7cmV2ZWFsTWF0Y2gocS5uLHEuYW5zKTt9KTtyZXR1cm47fQogIGlmKGs9PT0nUDRBTEwnKXtQNF9HQVBTLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIGE9cDRhbnMoZyk7dmFyIHM9JCgnLmdhcC1zZWxlY3RbZGF0YS1xPSInK2crJyJdJyk7aWYocyl7cy52YWx1ZT1hO1A0Z2FwW2ddPWE7fX0pO3JldmVhbFRpdGxlKCk7dXBkYXRlUHJvZ3Jlc3MoKTtyZXR1cm47fQogIGlmKGs9PT0nUDVBTEwnKXtQNS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3JldmVhbElucHV0KHEubixxLmRpc3ApO30pO3JldHVybjt9CiAgaWYoaz09PSdQNkFMTCcpe1A2X0dBUFMuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgTD1bJ0EnLCdCJywnQyddO3ZhciBpZHg9UDZfT1BUU1tnXS5pbmRleE9mKHA2YW5zKGcpKTt2YXIgcz0kKCcuZ2FwLXNlbGVjdFtkYXRhLXE9IicrZysnIl0nKTtpZihzKXtzLnZhbHVlPUxbaWR4XTtQNmdhcFtnXT1MW2lkeF07fX0pO3VwZGF0ZVByb2dyZXNzKCk7cmV0dXJuO30KICBpZihrPT09J1A3QUxMJyl7UDdfR0FQUy5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBmPXA3ZmluZChnKTtyZXZlYWxJbnB1dChnLGYuYSk7fSk7cmV0dXJuO30KICB2YXIgcWlkPXBhcnNlSW50KGspOwogIGlmKHFpZD49MSYmcWlkPD0xMCl7dmFyIHE9bnVsbDtQMS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubj09PXFpZClxPXg7fSk7cmV2ZWFsSW5wdXQocWlkLHEuYSk7fQogIGVsc2UgaWYocWlkPj0xMSYmcWlkPD0xNyl7dmFyIHE9bnVsbDtQMi5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubj09PXFpZClxPXg7fSk7cmV2ZWFsWU4ocWlkLHEuYSk7fQogIGVsc2UgaWYocWlkPj0xOCYmcWlkPD0yMil7dmFyIHE9bnVsbDtQMy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubj09PXFpZClxPXg7fSk7cmV2ZWFsTWF0Y2gocWlkLHEuYW5zKTt9CiAgZWxzZSBpZihxaWQ+PTI5JiZxaWQ8PTM1KXt2YXIgcT1udWxsO1A1LmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5uPT09cWlkKXE9eDt9KTtyZXZlYWxJbnB1dChxaWQscS5kaXNwKTt9Cn0pOwpmdW5jdGlvbiBwNmFucyhnKXt2YXIgZj1udWxsO1A2X1BBUlRTLmZvckVhY2goZnVuY3Rpb24ocCl7aWYocC5nPT09ZylmPXA7fSk7cmV0dXJuIGY\/Zi5hOicnO30KCi8qID09PT09IHN1Ym1pdCA9PT09PSAqLwokKCcjc3VibWl0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgdmFyIHNjb3JlPTAscGFydHM9ezE6MCwyOjAsMzowLDQ6MCw1OjAsNjowLDc6MH07CiAgUDEuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoIWVsKXJldHVybjtpZihlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JldmVhbGVkJykpcmV0dXJuO3ZhciB2PW5vcm0oZWwudmFsdWUpO3ZhciB2dj12LnJlcGxhY2UoL14oYXxhbnx0aGUpXHMrLywnJyk7dmFyIG9rPXEuYWNjLmluZGV4T2Yodik+PTB8fHEuYWNjLmluZGV4T2YodnYpPj0wO2lmKG9rKXtzY29yZSsrO3BhcnRzWzFdKys7ZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO31lbHNle2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7ZWwudGl0bGU9J0NvcnJlY3Q6ICcrcS5hO319KTsKICBQMi5mb3JFYWNoKGZ1bmN0aW9uKHEpe3ZhciByb3c9JCgnLnluLXJvd1tkYXRhLXE9IicrcS5uKyciXScpO2lmKCFyb3cpcmV0dXJuOyQkKCcueW4tYnRuW2RhdGEteW5dJyxyb3cpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIHluPXguZGF0YXNldC55bjt4LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbCcpO2lmKHluPT09cS5hKXguY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO2Vsc2UgaWYoUDJzZWxbcS5uXT09PXluKXguY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTt9KTtpZihQMnNlbFtxLm5dPT09cS5hKXtzY29yZSsrO3BhcnRzWzJdKys7fX0pOwogIFAzLmZvckVhY2goZnVuY3Rpb24ocSl7dmFyIHM9JCgnLm1hdGNoLXNlbGVjdFtkYXRhLXE9IicrcS5uKyciXScpO2lmKCFzKXJldHVybjtzLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpO2lmKFAzc2VsW3Eubl09PT1xLmFucyl7c2NvcmUrKztwYXJ0c1szXSsrO3MuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO31lbHNlIGlmKFAzc2VsW3Eubl0pcy5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO30pOwogIFA0X0dBUFMuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgcz0kKCcuZ2FwLXNlbGVjdFtkYXRhLXE9IicrZysnIl0nKTtpZighcylyZXR1cm47dmFyIGE9cDRhbnMoZyk7cy5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTtpZihQNGdhcFtnXT09PWEpe3Njb3JlKys7cGFydHNbNF0rKztzLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZSBpZihQNGdhcFtnXSlzLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7fSk7CiAgJCQoJyNwNFRpdGxlIC50aWNrYm94JykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpO2lmKHguZGF0YXNldC50aXRsZT09PVA0X1RJVExFLmEpeC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7ZWxzZSBpZihQNHRpdGxlPT09eC5kYXRhc2V0LnRpdGxlKXguY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTt9KTsKICBpZihQNHRpdGxlPT09UDRfVElUTEUuYSl7c2NvcmUrKztwYXJ0c1s0XSsrO30KICBQNS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3ZhciBlbD0kKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3EubisnIl0nKTtpZighZWwpcmV0dXJuO2lmKGVsLmNsYXNzTGlzdC5jb250YWlucygncmV2ZWFsZWQnKSlyZXR1cm47dmFyIHY9bm9ybShlbC52YWx1ZSk7dmFyIG9rPXEuYWNjLmluZGV4T2Yodik+PTB8fHEuYWNjLmluZGV4T2Yodi5yZXBsYWNlKC9eKGF8YW58dGhlKVxzKy8sJycpKT49MDtpZihvayl7c2NvcmUrKztwYXJ0c1s1XSsrO2VsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZXtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO2VsLnRpdGxlPSdDb3JyZWN0OiAnK3EuZGlzcDt9fSk7CiAgUDZfR0FQUy5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBzPSQoJy5nYXAtc2VsZWN0W2RhdGEtcT0iJytnKyciXScpO2lmKCFzKXJldHVybjt2YXIgTD1bJ0EnLCdCJywnQyddO3ZhciBjb3JyZWN0TD1MW1A2X09QVFNbZ10uaW5kZXhPZihwNmFucyhnKSldO3MuY2xhc3NMaXN0LnJlbW92ZSgnY29ycmVjdCcsJ3dyb25nJyk7aWYoUDZnYXBbZ109PT1jb3JyZWN0TCl7c2NvcmUrKztwYXJ0c1s2XSsrO3MuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO31lbHNlIGlmKFA2Z2FwW2ddKXMuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTt9KTsKICBQN19HQVBTLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIGVsPSQoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrZysnIl0nKTtpZighZWwpcmV0dXJuO2lmKGVsLmNsYXNzTGlzdC5jb250YWlucygncmV2ZWFsZWQnKSlyZXR1cm47dmFyIGY9cDdmaW5kKGcpO3ZhciB2PW5vcm0oZWwudmFsdWUpO3ZhciBvaz1mLmFjYy5pbmRleE9mKHYpPj0wO2lmKG9rKXtzY29yZSsrO3BhcnRzWzddKys7ZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO31lbHNle2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7ZWwudGl0bGU9J0NvcnJlY3Q6ICcrZi5hO319KTsKICAkKCcjc2NvcmVOb3cnKS50ZXh0Q29udGVudD1zY29yZTskKCcjZmluYWxTY29yZScpLnRleHRDb250ZW50PXNjb3JlOwogIHZhciBwY3Q9TWF0aC5yb3VuZChzY29yZS9UT1RBTCoxMDApOwogIHZhciBtc2c9cGN0Pj04NT8nRXhjZWxsZW50ISBZb3VyIHJlYWRpbmcgYW5kIHdyaXRpbmcgaXMgc3Ryb25nLic6cGN0Pj03MD8nR29vZCBqb2IhIEtlZXAgcHJhY3Rpc2luZy4nOnBjdD49NTA\/J05pY2UgdHJ5ICZtZGFzaDsgcmV2aWV3IHRoZSBwYXJ0cyB5b3UgbWlzc2VkLic6J0tlZXAgZ29pbmcgJm1kYXNoOyByZWFkIHRoZSBzdG9yaWVzIGFnYWluIGFuZCB1c2UgU2hvdyBBbnN3ZXJzLic7CiAgJCgnI3Jlc3VsdHNNc2cnKS5pbm5lckhUTUw9bXNnOwogIHZhciBzcD0kKCcjc2NvcmVQYXJ0cycpO3NwLmlubmVySFRNTD0nJzsKICBbJ1dvcmRzJywnWWVzL05vJywnRGlhbG9ndWUnLCdTdG9yeScsJ0NvbXBsZXRlJywnV29yZCBjaG9pY2UnLCdPbmUgd29yZCddLmZvckVhY2goZnVuY3Rpb24obGFiLGkpe3NwLmlubmVySFRNTCs9JzxkaXYgY2xhc3M9InNwLWl0ZW0iPjxiPicrcGFydHNbaSsxXSsnPC9iPlAnKyhpKzEpKycgJytsYWIrJzwvZGl2Pic7fSk7CiAgJCgnI3Jlc3VsdHNCYW5uZXInKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgc2V0VGltZW91dChmdW5jdGlvbigpeyQoJyNyZXN1bHRzQmFubmVyJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidjZW50ZXInfSk7fSwxMjApOwp9KTsKJCgnI3Jlc2V0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7aWYoIWNvbmZpcm0oJ1Jlc2V0IGFsbCBhbnN3ZXJzPycpKXJldHVybjtsb2NhdGlvbi5yZWxvYWQoKTt9KTsKdXBkYXRlUHJvZ3Jlc3MoKTsKfSkoKTsK'));<\/script>","protected":false},"excerpt":{"rendered":"<p>Cambridge YLE &middot; Flyers Flyers 3 &mdash; Test 2 Reading &amp; Writing 7 parts with 50 questions. Read carefully, choose or write your answers, then submit to grade. Each part has a Show Answers button to study. ~40 minutes 7 Parts &middot; 50 Questions Auto-grade + Show Answers Score 0\/50 0 of 50 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-4820","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4820","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=4820"}],"version-history":[{"count":0,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4820\/revisions"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=4820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}