{"id":49,"date":"2026-06-04T19:48:16","date_gmt":"2026-06-04T19:48:16","guid":{"rendered":"https:\/\/therapeuticatlas.com\/atlas-app\/"},"modified":"2026-11-01T22:04:11","modified_gmt":"2026-11-01T22:04:11","slug":"atlas-app","status":"publish","type":"page","link":"https:\/\/therapeuticatlas.com\/fr\/atlas-app\/","title":{"rendered":"Atlas App"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800;900&#038;display=swap\">\n<style>\n#ta{--bg:#FBF7ED;--green:#2E725C;--panel:#2E735C;--deep:#245c49;--cream:#FFFDF7;--brown:#30291F;--taupe:#6D6254;--line:#e6dcc6;--gold:#D9A53A;--font:\"Inter\",system-ui,-apple-system,\"Segoe UI\",sans-serif}\nhtml,body{background:#FBF7ED!important;margin:0!important}\n#ta,#ta *{box-sizing:border-box!important}\n#ta{background:var(--bg);color:var(--taupe);font-family:var(--font)!important;font-size:17px;line-height:1.6;overflow-x:hidden}\n#ta h1,#ta h2,#ta h3,#ta h4,#ta p,#ta li,#ta a,#ta span,#ta div{font-family:var(--font)!important;text-transform:none!important;letter-spacing:normal}\n#ta a{color:var(--green)}\n#ta .w{max-width:1120px!important;margin:0 auto!important;padding:0 20px!important;width:auto!important}\n\/* nav *\/\n#ta .nav{position:sticky;top:0;z-index:50;background:rgba(251,247,237,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}\n#ta .nav .w{display:flex!important;align-items:center;justify-content:space-between;gap:16px;padding-block:12px!important}\n#ta .brand{display:flex;align-items:center;gap:10px;text-decoration:none!important;color:var(--brown)!important;font-weight:900!important;font-size:19px!important}\n#ta .brand img{width:44px;height:44px;border-radius:50%;background:var(--cream);display:block}\n#ta .links{display:flex;align-items:center;gap:22px;flex-wrap:wrap}\n#ta .links .btn{padding:12px 18px!important}\n#ta .links a:not(.btn){text-decoration:none!important;color:var(--brown)!important;font-weight:600!important;font-size:15px!important}\n#ta .links a:not(.btn):hover{color:var(--green)!important}\n#ta #taMenu.menu{display:none!important}\n#ta .btn{display:inline-flex!important;align-items:center;justify-content:center;gap:8px;font:800 14px\/1 var(--font)!important;text-decoration:none!important;padding:15px 22px!important;border-radius:999px!important;border:2px solid var(--green)!important;transition:transform .15s,background .15s;white-space:nowrap}\n#ta .btn:hover{transform:translateY(-1px)}\n#ta .btn:focus-visible{outline:3px solid var(--brown);outline-offset:3px}\n#ta .solid{background:var(--green)!important;color:var(--cream)!important}\n#ta .solid:hover{background:var(--deep)!important}\n#ta .ghost{background:transparent!important;color:var(--green)!important}\n#ta .cream{background:var(--cream)!important;color:var(--green)!important;border-color:var(--cream)!important}\n#ta .eyebrow{display:block;font-size:13px!important;font-weight:800!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:var(--green)!important;margin:0 0 14px!important}\n\/* hero *\/\n#ta .top{padding:64px 0 56px}\n#ta .top .w{display:grid!important;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}\n#ta .top h1{font-size:clamp(38px,5.4vw,64px)!important;line-height:1.04!important;font-weight:900!important;color:var(--brown)!important;margin:0 0 20px!important;letter-spacing:-.025em!important;max-width:14ch}\n#ta .top h1 em{font-style:normal;color:var(--green)}\n#ta .lead{font-size:19px!important;max-width:40ch;margin:0 0 28px!important;color:var(--taupe)!important}\n#ta .ctas{display:flex;gap:12px;flex-wrap:wrap}\n#ta .photo{position:relative}\n#ta .photo img{width:100%;aspect-ratio:4\/5;object-fit:cover;object-position:50% 12%;border-radius:28px;display:block;box-shadow:0 24px 60px rgba(48,41,31,.18)}\n#ta .tag{position:absolute;left:-18px;bottom:28px;background:var(--panel);color:var(--cream);padding:16px 20px;border-radius:18px;box-shadow:0 14px 34px rgba(48,41,31,.22);max-width:260px}\n#ta .tag b{display:block;font-size:18px!important;font-weight:900!important;color:var(--cream)!important}\n#ta .tag span{font-size:14px!important;color:rgba(255,253,247,.85)!important}\n\/* sections *\/\n#ta section{padding:72px 0}\n#ta h2{font-size:clamp(30px,3.8vw,44px)!important;line-height:1.1!important;font-weight:900!important;color:var(--brown)!important;margin:0 0 14px!important;letter-spacing:-.02em!important;max-width:22ch}\n#ta .intro{max-width:58ch;font-size:18px!important;margin:0 0 36px!important}\n#ta .cards{display:grid!important;grid-template-columns:repeat(3,1fr);gap:20px}\n#ta .card{background:#fff;border:1px solid var(--line);border-radius:24px;padding:28px;display:flex;flex-direction:column;gap:12px}\n#ta .card.feat{background:var(--panel);border-color:var(--panel);color:var(--cream)}\n#ta .card h3{font-size:22px!important;line-height:1.2!important;font-weight:900!important;color:var(--brown)!important;margin:0!important}\n#ta .card.feat h3{color:var(--cream)!important}\n#ta .card p{margin:0!important;font-size:16px!important}\n#ta .card.feat p{color:rgba(255,253,247,.9)!important}\n#ta .card .k{font-size:12px!important;font-weight:800!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:var(--green)!important}\n#ta .card.feat .k{color:var(--gold)!important}\n#ta .card .price{font-size:14px!important;font-weight:700!important;background:rgba(255,253,247,.12);border-radius:12px;padding:10px 12px}\n#ta .card .btn{margin-top:auto;align-self:flex-start}\n\/* app *\/\n#ta .app{background:var(--brown);color:#efe8d8}\n#ta .app h2{color:var(--cream)!important}\n#ta .app .intro{color:#d9cfbd!important}\n#ta .app .eyebrow{color:var(--gold)!important}\n#ta .split{display:grid!important;grid-template-columns:1fr 1fr;gap:48px;align-items:center}\n#ta .feats{list-style:none!important;padding:0!important;margin:0 0 28px!important;display:grid;gap:14px}\n#ta .feats li{display:flex;gap:12px;align-items:flex-start;font-size:16px!important;color:#efe8d8!important;margin:0!important}\n#ta .feats li::before{content:\"\";flex:0 0 10px;height:10px;margin-top:8px;border-radius:50%;background:var(--gold)}\n#ta .feats b{color:var(--cream)!important}\n#ta .mock{background:#FFFDF7;border-radius:22px;padding:22px;box-shadow:0 24px 60px rgba(0,0,0,.35)}\n#ta .mock .bar{display:flex;gap:6px;margin-bottom:14px}\n#ta .mock .bar i{width:10px;height:10px;border-radius:50%;background:#d8cdb8;display:block}\n#ta .mock .row{display:flex;justify-content:space-between;font-size:14px!important;font-weight:700!important;color:var(--brown)!important;margin-bottom:12px}\n#ta .mock .row span{color:var(--taupe)!important;font-weight:500!important}\n#ta .wk{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-bottom:10px}\n#ta .wk i{display:block;height:34px;border-radius:6px;background:rgba(46,114,92,.18)}\n#ta .wk i.on{background:var(--green)}\n#ta .note{background:#f3ecdc;border-radius:14px;padding:14px;margin-top:14px;font-size:14px!important;color:var(--brown)!important}\n#ta .chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 28px}\n#ta .chips span{font-size:13px!important;font-weight:700!important;border:1px solid rgba(239,232,216,.3);border-radius:999px;padding:7px 12px;color:#efe8d8!important}\n\/* kim *\/\n#ta .kim .split{grid-template-columns:.8fr 1.2fr}\n#ta .kim img{width:100%;aspect-ratio:4\/5;object-fit:cover;object-position:50% 20%;border-radius:28px;display:block}\n#ta .kim p{font-size:18px!important;margin:0 0 16px!important;max-width:52ch}\n\/* youtube *\/\n#ta .yt{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}\n#ta .vids{display:grid!important;grid-template-columns:repeat(3,1fr);gap:20px}\n#ta .vid{display:block;text-decoration:none!important;background:var(--bg);border-radius:20px;padding:22px;border:1px solid var(--line);transition:transform .15s}\n#ta .vid:hover{transform:translateY(-2px)}\n#ta .vid .k{font-size:12px!important;font-weight:800!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:var(--green)!important}\n#ta .vid h3{font-size:20px!important;font-weight:900!important;color:var(--brown)!important;margin:8px 0 6px!important;line-height:1.25!important}\n#ta .vid p{margin:0!important;font-size:15px!important;color:var(--taupe)!important}\n\/* cta *\/\n#ta .cta{background:var(--panel);color:var(--cream);border-radius:32px;padding:56px 40px;text-align:center}\n#ta .cta h2{color:var(--cream)!important;margin:0 auto 12px!important}\n#ta .cta p{color:rgba(255,253,247,.9)!important;max-width:52ch;margin:0 auto 26px!important;font-size:18px!important}\n#ta .cta .ctas{justify-content:center}\n\/* footer *\/\n#ta footer{padding:48px 0 40px;border-top:1px solid var(--line);font-size:14px!important}\n#ta footer .w{display:grid!important;grid-template-columns:1.4fr 1fr 1fr;gap:28px}\n#ta footer h4{font-size:13px!important;font-weight:800!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:var(--brown)!important;margin:0 0 10px!important}\n#ta footer a{display:block;text-decoration:none!important;color:var(--taupe)!important;margin-bottom:6px}\n#ta footer a:hover{color:var(--green)!important}\n#ta footer p{margin:0 0 8px!important;font-size:14px!important}\n#ta .crisis{margin-top:28px;padding-top:20px;border-top:1px solid var(--line);font-size:13px!important;text-align:center}\n@media(max-width:900px){\n  #ta .top .w,#ta .split,#ta .kim .split{grid-template-columns:1fr!important}\n  #ta .cards,#ta .vids{grid-template-columns:1fr!important}\n  #ta .links{display:none}\n  #ta #taMenu.menu{display:inline-flex!important}\n  #ta .links.open{display:flex;position:absolute;left:0;right:0;top:100%;background:var(--bg);flex-direction:column;align-items:flex-start;padding:16px 20px;border-bottom:1px solid var(--line)}\n  #ta .photo{max-width:420px}\n  #ta .tag{left:12px}\n  #ta footer .w{grid-template-columns:1fr!important}\n  #ta .top{padding-top:36px}\n}\n@media(prefers-reduced-motion:reduce){#ta *{transition:none!important}}\n<\/style>\n<style>\n#ta .story{background:#fff;border:2px solid var(--line,#E6DECB);border-radius:24px;padding:28px;margin:0 0 8px}\n#ta .story p{font-size:18px!important;margin:0 0 12px!important}\n#ta .story .todo{font-size:14px!important;font-weight:800!important;color:#9a6b12!important;letter-spacing:.08em!important;text-transform:uppercase!important}\n#ta .vals{display:grid!important;grid-template-columns:repeat(4,1fr);gap:18px}\n#ta .val{background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px}\n#ta .val h3{font-size:19px!important;font-weight:900!important;color:var(--brown)!important;margin:0 0 6px!important}\n#ta .val p{font-size:15px!important;margin:0!important}\n@media(max-width:900px){#ta .vals{grid-template-columns:1fr 1fr!important}}\n@media(max-width:560px){#ta .vals{grid-template-columns:1fr!important}}\n<\/style>\n<div id=\"ta\">\n<header class=\"nav\"><div class=\"w\">\n  <a class=\"brand\" href=\"https:\/\/therapeuticatlas.com\/\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"skip-lazy\" data-skip-lazy=\"1\" loading=\"eager\" src=\"https:\/\/i0.wp.com\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png?ssl=1\" alt=\"Therapeutic Atlas logo\">Therapeutic Atlas<\/a>\n  <nav class=\"links\" id=\"taLinks\">\n    <a href=\"https:\/\/therapeuticatlas.com\/#paths\">Mentorship\/Inner Circle<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/#app\">Atlas app<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/about\/\">About<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/tools\/\">Mental health tools<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/autistic-atlas\/\">Autistic Atlas<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/contact\/\">Contact<\/a>\n    <a class=\"btn solid\" href=\"https:\/\/therapeuticatlas.com\/free-training\/\">Watch the free training<\/a>\n  <\/nav>\n  <button id=\"taMenu\" class=\"btn ghost menu\" type=\"button\" aria-controls=\"taLinks\" aria-expanded=\"false\" onclick=\"var l=document.getElementById('taLinks');var o=l.classList.toggle('open');this.setAttribute('aria-expanded',o)\">Menu<\/button>\n<\/div><\/header>\n\n<\/div>\n<style>#tavid{background:#FBF7ED;padding:56px 20px 8px}#tavid .w{max-width:960px;margin:0 auto;text-align:center}#tavid h2{color:#30291F;font-size:clamp(26px,3.4vw,38px);line-height:1.2;margin:0 0 10px}#tavid p{color:#5b5245;font-size:17px;margin:0 auto 22px;max-width:640px}#tavid video{width:100%;height:auto;border-radius:16px;box-shadow:0 10px 30px rgba(48,41,31,.14);background:#FBF7ED;display:block}html[lang^=\"fr\"] #tavid{display:none}<\/style>\n<section id=\"tavid\" data-no-translation><div class=\"w\"><h2>How Atlas works without keeping client information<\/h2><p>A two-minute walkthrough from Kim: where your client&#8217;s answers live, how a report reaches you, and why Therapeutic Atlas never holds the information in between.<\/p><video controls preload=\"metadata\" playsinline src=\"https:\/\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/ba8ff6ac-0140-461f-9cd7-f199c5e28a14.mp4#t=3\" title=\"How Atlas keeps nothing\"><\/video><\/div><\/section>\n<script>(function(){if(location.pathname.indexOf(\"\/fr\/\")===0||(document.documentElement.lang||\"\").indexOf(\"fr\")===0){var s=document.getElementById(\"tavid\");if(s)s.remove();}})();<\/script>\n<style>#tafs{background:#FBF7ED;padding:18px 20px 10px;text-align:center;font-size:16px;color:#5b5245}#tafs a{color:#2E725C;font-weight:600}#tafs .fr{display:none}html[lang^=\"fr\"] #tafs .fr{display:inline}html[lang^=\"fr\"] #tafs .en{display:none}<\/style>\n<div id=\"tafs\" data-no-translation><span class=\"en\">Doing a privacy review? Read the <a href=\"\/atlas-privacy-fact-sheet\/\">Atlas privacy fact sheet for therapists<\/a>.<\/span><span class=\"fr\">Vous faites une \u00e9valuation de la confidentialit\u00e9? Consultez la <a href=\"\/fr\/atlas-privacy-fact-sheet\/\">fiche de confidentialit\u00e9 Atlas pour les th\u00e9rapeutes<\/a>.<\/span><\/div>\n<style>#tdx{background:#F6F1E4;padding:8px 16px 48px;font-family:Inter,system-ui,sans-serif;color:#30291F}#tdx .in{max-width:1280px;margin:0 auto}#tdx .k{display:inline-block;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#2E725C;margin-bottom:8px}#tdx h1{font-size:clamp(30px,4vw,46px);line-height:1.1;margin:0 0 10px;font-weight:800}#tdx p{font-size:18px;line-height:1.6;max-width:62ch;margin:0 0 18px;color:#6D6254}#tdx iframe{width:100%;height:900px;border:0;display:block;background:#F6F1E4;border-radius:18px;box-shadow:0 1px 0 rgba(48,41,31,.08)}#tdx [data-l=fr]{display:none}<\/style><div id=\"tdx\" data-no-translation><div class=\"in\"><iframe id=\"tdxF\" title=\"Atlas Therapist Demo\" allow=\"clipboard-write\"><\/iframe><\/div><\/div><script>(function(){var b=atob(\"PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSI+PC9oZWFkPjxib2R5IHN0eWxlPSJtYXJnaW46MCI+PHRpdGxlPkF0bGFzIFRoZXJhcGlzdCBEZW1vPC90aXRsZT4KPG1ldGEgbmFtZT0iY2xhdWRlOnZpZXdwb3J0LWZpdC1zaWRlcyIgY29udGVudD0iY292ZXIiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vdGhlcmFwZXV0aWNhdGxhcy5jb20vd3AtY29udGVudC91cGxvYWRzL29tZ2Yvb21nZi1zdHlsZXNoZWV0LTkzL29tZ2Ytc3R5bGVzaGVldC05My5jc3MiPgo8c3R5bGU+Ci8qIExheW91dDogYW4gYXBwIHNoZWxsLiBDbGllbnQgbGlzdCBvbiB0aGUgbGVmdCwgdGhlIGNob3NlbiBjbGllbnQncyBwcm9ncmVzcyBzdG9yeSBvbiB0aGUgcmlnaHQsIHJlYWQgdG9wIHRvIGJvdHRvbTogc3RvcnksIG1lYXN1cmVzLCBwbGFuLCBjaGVjay1pbnMsIGdvYWxzLCBwcmFjdGljZSwgc2Vzc2lvbnMuIFRoZXJhcGV1dGljIEF0bGFzIGJyYW5kLiBCaWxpbmd1YWwgRU4vRlIuICovCjpyb290ewogIC0tYmc6I0Y2RjFFNDsgLS1wYW5lbDojRkZGRkZGOyAtLXN1bms6I0ZCRjdFRDsgLS1pbms6IzMwMjkxRjsgLS10ZXh0OiM2RDYyNTQ7IC0tbXV0ZWQ6Izk3OEM3QzsgLS1saW5lOiNFNkRDQzY7CiAgLS1ncmVlbjojMkU3MjVDOyAtLWdyZWVuMjojNUU5QzgzOyAtLW9uR3JlZW46I0ZGRkRGNzsgLS1zb2Z0OiNFNkVGRTg7IC0tZ29sZDojQjg4NjJBOyAtLWdvbGRTb2Z0OiNGNUVBRDI7CiAgLS1iYW5kMTojRUVGM0VDOyAtLWJhbmQyOiNGNkYwREY7IC0tYmFuZDM6I0Y3RTdERDsgLS13YXJuOiNBMjU2M0U7CiAgLS1mb250OiJJbnRlciIsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sIlNlZ29lIFVJIixSb2JvdG8sc2Fucy1zZXJpZjsgY29sb3Itc2NoZW1lOmxpZ2h0Owp9CkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7OnJvb3Q6bm90KFtkYXRhLXRoZW1lPSJsaWdodCJdKXsKICAtLWJnOiMxNjFCMTg7IC0tcGFuZWw6IzIwMjYyMjsgLS1zdW5rOiMxQTIwMUM7IC0taW5rOiNGMkVERTI7IC0tdGV4dDojQzdCRkIwOyAtLW11dGVkOiM4RTg4N0M7IC0tbGluZTojMzQzQzM2OwogIC0tZ3JlZW46IzZCQjg5ODsgLS1ncmVlbjI6IzRFOEY3NTsgLS1vbkdyZWVuOiMxMDIwMTg7IC0tc29mdDojMjQzMzJCOyAtLWdvbGQ6I0UyQjU1QTsgLS1nb2xkU29mdDojM0EzMjIyOwogIC0tYmFuZDE6IzFGMkIyNDsgLS1iYW5kMjojMkEyODIwOyAtLWJhbmQzOiMyRTI0MjA7IC0td2FybjojRTA4QzcwOyBjb2xvci1zY2hlbWU6ZGFya319Cjpyb290W2RhdGEtdGhlbWU9ImRhcmsiXXsKICAtLWJnOiMxNjFCMTg7IC0tcGFuZWw6IzIwMjYyMjsgLS1zdW5rOiMxQTIwMUM7IC0taW5rOiNGMkVERTI7IC0tdGV4dDojQzdCRkIwOyAtLW11dGVkOiM4RTg4N0M7IC0tbGluZTojMzQzQzM2OwogIC0tZ3JlZW46IzZCQjg5ODsgLS1ncmVlbjI6IzRFOEY3NTsgLS1vbkdyZWVuOiMxMDIwMTg7IC0tc29mdDojMjQzMzJCOyAtLWdvbGQ6I0UyQjU1QTsgLS1nb2xkU29mdDojM0EzMjIyOwogIC0tYmFuZDE6IzFGMkIyNDsgLS1iYW5kMjojMkEyODIwOyAtLWJhbmQzOiMyRTI0MjA7IC0td2FybjojRTA4QzcwOyBjb2xvci1zY2hlbWU6ZGFya30KKntib3gtc2l6aW5nOmJvcmRlci1ib3h9CmJvZHl7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS41NX0KaDEsaDIsaDN7Y29sb3I6dmFyKC0taW5rKTttYXJnaW46MDtsaW5lLWhlaWdodDoxLjI7dGV4dC13cmFwOmJhbGFuY2V9Cmgxe2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjkwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19Cmgye2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjgwMH0KaDN7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwfQpwe21hcmdpbjowfQoua3tmb250LXNpemU6MTFweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjEyZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLW11dGVkKX0KYnV0dG9uLHNlbGVjdCx0ZXh0YXJlYSxpbnB1dHtmb250OmluaGVyaXR9CmJ1dHRvbjpmb2N1cy12aXNpYmxlLHNlbGVjdDpmb2N1cy12aXNpYmxlLHRleHRhcmVhOmZvY3VzLXZpc2libGUsaW5wdXQ6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjNweCBzb2xpZCB2YXIoLS1nb2xkKTtvdXRsaW5lLW9mZnNldDoycHh9Ci50b3B7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nLWJsb2NrOjE0cHg7cGFkZGluZy1sZWZ0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwwcHgpKTtwYWRkaW5nLXJpZ2h0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQsMHB4KSk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCl9Ci5icmFuZHtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtd2VpZ2h0OjkwMDtjb2xvcjp2YXIoLS1pbmspO2ZvbnQtc2l6ZToxN3B4O2ZsZXgtd3JhcDp3cmFwfQoubWFya3t3aWR0aDozMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6OXB4O2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXJ9Ci5tYXJrIHN2Z3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fQouZGVtb3tmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7YmFja2dyb3VuZDp2YXIoLS1nb2xkU29mdCk7Y29sb3I6dmFyKC0taW5rKTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NHB4IDEwcHh9Ci50b2dnbGVze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwfQouc2Vne2Rpc3BsYXk6aW5saW5lLWZsZXg7YmFja2dyb3VuZDp2YXIoLS1zdW5rKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzozcHh9Ci5zZWcgYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tdGV4dCk7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0KLnNlZyBidXR0b25bYXJpYS1wcmVzc2VkPSJ0cnVlIl17YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6dmFyKC0tb25HcmVlbil9Ci5zaGVsbHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjI2MHB4IDFmcjtnYXA6MjBweDttYXgtd2lkdGg6MTI0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZy1ibG9jazoyMHB4IDQ4cHg7cGFkZGluZy1sZWZ0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwwcHgpKTtwYWRkaW5nLXJpZ2h0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQsMHB4KSl9Ci5zaGVsbD4qe21pbi13aWR0aDowfQphc2lkZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHh9Ci5jbHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjM2cHggMWZyIGF1dG87Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO3RleHQtYWxpZ246bGVmdDt3aWR0aDoxMDAlO2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxNHB4O3BhZGRpbmc6MTBweCAxMnB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWluayl9Ci5jbFthcmlhLWN1cnJlbnQ9InRydWUiXXtib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWdyZWVuKX0KLmF2e3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyLXJhZGl1czo1MCU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZDp2YXIoLS1zb2Z0KTtjb2xvcjp2YXIoLS1ncmVlbil9Ci5jbCBzbWFsbHtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MTJweH0KLnBpbGx7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzozcHggOHB4O3doaXRlLXNwYWNlOm5vd3JhcH0KLnAtcmVhZHl7YmFja2dyb3VuZDp2YXIoLS1zb2Z0KTtjb2xvcjp2YXIoLS1ncmVlbil9Ci5wLW5ld3tiYWNrZ3JvdW5kOnZhcigtLWdvbGRTb2Z0KTtjb2xvcjp2YXIoLS1nb2xkKX0KbWFpbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNnB4fQouY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjIwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTRweDttaW4td2lkdGg6MH0KLmhlYWR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxNnB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Ci5mYWN0c3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjE4cHg7Zm9udC1zaXplOjEzcHh9Ci5mYWN0cyBie2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0taW5rKTtmb250LXNpemU6MTVweH0KLnN0b3J5e2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOnZhcigtLW9uR3JlZW4pO2JvcmRlcjowfQouc3RvcnkgaDIsLnN0b3J5IGgzLC5zdG9yeSAua3tjb2xvcjp2YXIoLS1vbkdyZWVuKX0KLnN0b3J5IC5re29wYWNpdHk6Ljh9Ci5zdG9yeSBwe2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjEuNjttYXgtd2lkdGg6NjhjaH0KLnN0b3J5IC5tZXRhe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6MTNweDtvcGFjaXR5Oi45fQouc3RvcnkgLmFwcHJvdmV7YmFja2dyb3VuZDp2YXIoLS1vbkdyZWVuKTtjb2xvcjp2YXIoLS1ncmVlbik7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjdweCAxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcn0KLmdyaWQye2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZml0LG1pbm1heCgzMDBweCwxZnIpKTtnYXA6MTZweH0KLmNoYXJ0e3Bvc2l0aW9uOnJlbGF0aXZlfQouY2hhcnQgc3Zne2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztvdmVyZmxvdzp2aXNpYmxlfQouY2hhcnQgLmxhYntmb250LXNpemU6MTFweDtmaWxsOnZhcigtLW11dGVkKX0KLmNoYXJ0IC5iYW5kLWx7Zm9udC1zaXplOjEwcHg7ZmlsbDp2YXIoLS1tdXRlZCk7Zm9udC13ZWlnaHQ6NjAwfQoudGlwe3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZDp2YXIoLS1pbmspO2NvbG9yOnZhcigtLWJnKTtmb250LXNpemU6MTJweDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjZweCA5cHg7d2hpdGUtc3BhY2U6bm93cmFwO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtMTIwJSl9Ci5iaWd7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo4cHg7ZmxleC13cmFwOndyYXB9Ci5iaWcgYntmb250LXNpemU6MjhweDtmb250LXdlaWdodDo5MDA7Y29sb3I6dmFyKC0taW5rKTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9Ci5jaGd7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdyZWVuKX0KLndlZWtze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDEyLG1pbm1heCgwLDFmcikpO2dhcDo0cHh9Ci53a3thc3BlY3QtcmF0aW86MTttYXgtd2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjZweDtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6ZGVmYXVsdDtib3JkZXI6MH0KLndrLmV2OjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNnB4O2xlZnQ6NTAlO3dpZHRoOjdweDtoZWlnaHQ6N3B4O21hcmdpbi1sZWZ0Oi0zLjVweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tcGFuZWwpfQouc2NhbGV7ZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxMnB4O2ZsZXgtd3JhcDp3cmFwfQouc2NhbGUgaXt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrfQoud2xhYmVsc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxMixtaW5tYXgoMCwxZnIpKTtnYXA6NHB4O2ZvbnQtc2l6ZToxMHB4O2NvbG9yOnZhcigtLW11dGVkKTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9Ci5nb2Fse2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweH0KLmdvYWwgLmJhcntoZWlnaHQ6OHB4O2JhY2tncm91bmQ6dmFyKC0tc3Vuayk7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSl9Ci5nb2FsIC5iYXIgaXtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2JvcmRlci1yYWRpdXM6MCA0cHggNHB4IDB9Ci5nb2FsIC5yb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMHB4O2ZvbnQtc2l6ZToxM3B4fQoucHJhY3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMTUwcHgsMWZyKSk7Z2FwOjEwcHh9Ci5wcmFjIGRpdntiYWNrZ3JvdW5kOnZhcigtLXN1bmspO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxNHB4O3BhZGRpbmc6MTJweH0KLnByYWMgYntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToyMnB4O2NvbG9yOnZhcigtLWluayk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfQoudGx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufQoudGwgbGl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczo3MnB4IDE4cHggMWZyO2dhcDoxMHB4O3BhZGRpbmctYm90dG9tOjE0cHh9Ci50bCAuZHtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO3BhZGRpbmctdG9wOjJweH0KLnRsIC5kb3R7d2lkdGg6MTJweDtoZWlnaHQ6MTJweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTttYXJnaW4tdG9wOjVweDtwb3NpdGlvbjpyZWxhdGl2ZX0KLnRsIGxpOm5vdCg6bGFzdC1jaGlsZCkgLmRvdDo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjVweDt0b3A6MTRweDt3aWR0aDoycHg7aGVpZ2h0OmNhbGMoMTAwJSArIDMwcHgpO2JhY2tncm91bmQ6dmFyKC0tbGluZSl9Ci50YWd7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdyZWVuKTtiYWNrZ3JvdW5kOnZhcigtLXNvZnQpO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzoycHggOHB4O21hcmdpbi1sZWZ0OjZweH0KLnByaXZhdGV7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkIHZhcigtLWdvbGQpO3BhZGRpbmctbGVmdDoxMHB4O2ZvbnQtc2l6ZToxM3B4fQouY2xpZW50dmlldyAuY2xpbntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouY3Ytbm90ZXtkaXNwbGF5Om5vbmV9Ci5jbGllbnR2aWV3IC5jdi1ub3Rle2Rpc3BsYXk6YmxvY2t9Ci5mb290e2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLW11dGVkKX0KLmludHJve21heC13aWR0aDoxMjQwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nLWJsb2NrOjI4cHggNnB4O3BhZGRpbmctbGVmdDptYXgoMTZweCxlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQsMHB4KSk7cGFkZGluZy1yaWdodDptYXgoMTZweCxlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LDBweCkpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHh9Ci5pbnRybyBoMXtmb250LXNpemU6Y2xhbXAoMjZweCwzLjZ2dywzOHB4KX0KLmludHJvIHAubGVhZHtmb250LXNpemU6MTZweDttYXgtd2lkdGg6NzYwcHh9Ci52aWV3c3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpO2dhcDoxMHB4O21hcmdpbi10b3A6NnB4fQoudmlld3MgYnV0dG9ue3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtib3JkZXI6MS41cHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6MTRweCAxNnB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWluayk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6M3B4fQoudmlld3MgYnV0dG9uIGJ7Zm9udC1zaXplOjE2cHh9Ci52aWV3cyBidXR0b24gc3Bhbntmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS10ZXh0KX0KLnZpZXdzIGJ1dHRvblthcmlhLXByZXNzZWQ9InRydWUiXXtiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pfQoudmlld3MgYnV0dG9uW2FyaWEtcHJlc3NlZD0idHJ1ZSJdIGIsLnZpZXdzIGJ1dHRvblthcmlhLXByZXNzZWQ9InRydWUiXSBzcGFue2NvbG9yOnZhcigtLW9uR3JlZW4pfQouYXdyYXB7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCw0MDBweCkgbWlubWF4KDAsMWZyKTtnYXA6MjhweDthbGlnbi1pdGVtczpzdGFydH0KLnBob25le3dpZHRoOjEwMCU7bWF4LXdpZHRoOjM5MHB4O21hcmdpbjowIGF1dG87Ym9yZGVyOjEwcHggc29saWQgIzJhMjYyMjtib3JkZXItcmFkaXVzOjQycHg7YmFja2dyb3VuZDp2YXIoLS1iZyk7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxOHB4IDUwcHggcmdiYSg0OCw0MSwzMSwuMjUpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Ci5wYmFye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoxMHB4IDE4cHggNnB4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1pbmspfQouc2Nye2hlaWdodDo2NDBweDtvdmVyZmxvdzphdXRvO3BhZGRpbmc6NnB4IDE0cHggMThweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4fQouc2NyIC5jYXJke3BhZGRpbmc6MTRweDtnYXA6MTBweDtib3JkZXItcmFkaXVzOjE2cHh9Ci5oaXtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo5MDA7Y29sb3I6dmFyKC0taW5rKX0KLnRhYmJhcntkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LDFmcik7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCl9Ci50YWJiYXIgYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cGFkZGluZzoxMHB4IDJweCAxMnB4O2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6M3B4fQoudGFiYmFyIGJ1dHRvbiBzdmd7d2lkdGg6MjBweDtoZWlnaHQ6MjBweH0KLnRhYmJhciBidXR0b25bYXJpYS1jdXJyZW50PSJ0cnVlIl17Y29sb3I6dmFyKC0tZ3JlZW4pfQoudGFza3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjI0cHggMWZyIGF1dG87Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6OHB4IDA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSl9Ci50YXNrOmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXRvcDowfQoudGFzayBpbnB1dHt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2FjY2VudC1jb2xvcjp2YXIoLS1ncmVlbil9Ci50YXNrIHNtYWxse2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4fQoubWluaXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ3JlZW4pO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1ncmVlbik7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjRweCAxMHB4O3doaXRlLXNwYWNlOm5vd3JhcDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyfQoubWluaTpkaXNhYmxlZHtvcGFjaXR5Oi42O2N1cnNvcjpkZWZhdWx0fQoubXNne2JhY2tncm91bmQ6dmFyKC0tc29mdCk7Ym9yZGVyLXJhZGl1czoxNHB4O3BhZGRpbmc6MTJweDtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1pbmspfQouc2x7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O2ZvbnQtc2l6ZToxM3B4fQouc2wgaW5wdXR7d2lkdGg6MTAwJTthY2NlbnQtY29sb3I6dmFyKC0tZ3JlZW4pfQouY3Rhe2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOnZhcigtLW9uR3JlZW4pO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOjEwMCV9Ci5jdGE6ZGlzYWJsZWR7b3BhY2l0eTouNztjdXJzb3I6ZGVmYXVsdH0KLmNyaXNpc2Jhcntmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOnZhcigtLWdvbGRTb2Z0KTtjb2xvcjp2YXIoLS1pbmspO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjhweCAxMHB4fQouc2lkZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNHB4fQouc2lkZSB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHh9Ci53aG97ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9Ci53aG8gYnV0dG9ue2JvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtjb2xvcjp2YXIoLS1pbmspO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo3cHggMTRweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7Y3Vyc29yOnBvaW50ZXJ9Ci53aG8gYnV0dG9uW2FyaWEtcHJlc3NlZD0idHJ1ZSJde2JvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7YmFja2dyb3VuZDp2YXIoLS1zb2Z0KTtjb2xvcjp2YXIoLS1ncmVlbil9Ci5hcHBtb2RlIGFzaWRle2Rpc3BsYXk6bm9uZX0KLmFwcG1vZGUuc2hlbGx7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0KLnByaXZhY3l7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoyOHB4IDFmcjtnYXA6MTJweDthbGlnbi1pdGVtczpzdGFydDtiYWNrZ3JvdW5kOnZhcigtLXNvZnQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6MTRweCAxNnB4O2NvbG9yOnZhcigtLWluayk7Zm9udC1zaXplOjE0cHh9Ci5wcml2YWN5IHN2Z3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4O2NvbG9yOnZhcigtLWdyZWVuKX0KLnByaXZhY3kgYntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi1ib3R0b206MnB4fQoubG9ja3tkaXNwbGF5OmZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tZ3JlZW4pO2ZvbnQtd2VpZ2h0OjcwMH0KLmxvY2sgc3Zne3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7ZmxleDpub25lfQouZncgc3Zne3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87ZGlzcGxheTpibG9ja30KLmZ3IC5zZWctc3tjdXJzb3I6cG9pbnRlcn0KLmZ3IC5zZWctczpmb2N1cy12aXNpYmxle291dGxpbmU6bm9uZX0KLmZ3IC5zZWctczpmb2N1cy12aXNpYmxlIHBhdGh7c3Ryb2tlOnZhcigtLWluayk7c3Ryb2tlLXdpZHRoOjN9Ci5jaGlwc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweH0KLmNoaXBzIGJ1dHRvbntib3JkZXI6MS41cHggc29saWQgdmFyKC0tbGluZSk7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7Y29sb3I6dmFyKC0taW5rKTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyfQouY2hpcHMgYnV0dG9uW2FyaWEtcHJlc3NlZD0idHJ1ZSJde2NvbG9yOiNGRkZERjd9Ci5zaGVldHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMwMjkxRjtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O2ZvbnQtc2l6ZToxMnB4fQouc2hlZXQgaDN7Y29sb3I6IzMwMjkxRn0KLnNoZWV0IC5re2NvbG9yOiMyRTcyNUN9Ci5zaGVldCAucmx7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFNkRDQzY7cGFkZGluZzo0cHggMH0KLnNoZWV0IHVse21hcmdpbjowO3BhZGRpbmctbGVmdDoxNnB4fQoub3B0bHtkaXNwbGF5OmZsZXg7Z2FwOjhweDthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0taW5rKX0KLm9wdGwgaW5wdXR7d2lkdGg6MThweDtoZWlnaHQ6MThweDthY2NlbnQtY29sb3I6dmFyKC0tZ3JlZW4pO2ZsZXg6bm9uZX0KLyogUGxhbiBlZGl0b3IgKHRoZXJhcGlzdCkgKi8KLnBsYW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0KLnByb3d7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMnB4IG1pbm1heCgwLDFmcikgbWlubWF4KDAsMTkwcHgpO2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjlweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpfQoucHJvdzpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjB9Ci5wcm93IGlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7YWNjZW50LWNvbG9yOnZhcigtLWdyZWVuKX0KLnByb3cgbGFiZWx7Y29sb3I6dmFyKC0taW5rKTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7Y3Vyc29yOnBvaW50ZXI7bWluLXdpZHRoOjB9Ci5wcm93IGxhYmVsIHNtYWxse2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MTJweH0KLmZpZWxke3dpZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS1zdW5rKTtjb2xvcjp2YXIoLS1pbmspO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6N3B4IDlweDtmb250LXNpemU6MTNweH0KLmZpZWxkOmRpc2FibGVke29wYWNpdHk6LjQ1fQp0ZXh0YXJlYS5maWVsZHttaW4taGVpZ2h0Ojg0cHg7cmVzaXplOnZlcnRpY2FsO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0KLmJ0bnJvd3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyfQouYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOnZhcigtLW9uR3JlZW4pO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo5cHggMTZweDtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHh9Ci5va3tmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tZ3JlZW4pfQouZXJye2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS13YXJuKX0KLnJve2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4fQoucm8gbGl7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWluayk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7cGFkZGluZy1ib3R0b206OHB4fQoucm8gbGkgc3Bhbntjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpyaWdodH0KLyogU2Vzc2lvbiBwcmVwICsgam91cm5hbCAoY2xpZW50KSAqLwoucHJlcGx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufQoucHJlcGwgbGl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bztnYXA6OHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjdweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWluayl9Ci5wcmVwbCBsaTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjB9Ci54e2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzoycHggNnB4O2JvcmRlci1yYWRpdXM6OHB4fQouYWRkcm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG87Z2FwOjhweH0KLmR1ZXJ7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bztnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo4cHggMDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKX0KLmR1ZXI6Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wOjB9Ci5kdWVyIHNtYWxse2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4fQouZG9uZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ3JlZW4pO3doaXRlLXNwYWNlOm5vd3JhcH0KLmplbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpfQouamVudDpmaXJzdC1vZi10eXBle2JvcmRlci10b3A6MH0KLmplbnQgLmR7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKX0KLmplbnQgcHtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1pbmspfQoucC13YXJue2JhY2tncm91bmQ6dmFyKC0tYmFuZDMpO2NvbG9yOnZhcigtLXdhcm4pfQovKiBUcmlhZ2UgKi8KLnRyaXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Ci50cmkgbGl7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSl9Ci50cmkgbGk6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDowfQoudHJpIGJ1dHRvbnt3aWR0aDoxMDAlO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMS4yZnIpIG1pbm1heCgwLDFmcikgbWlubWF4KDAsMS42ZnIpO2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjEwcHggNnB4O2JvcmRlci1yYWRpdXM6MTBweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1pbmspO2ZvbnQtc2l6ZToxNHB4fQoudHJpIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXN1bmspfQoudHJpIGJ1dHRvblthcmlhLWN1cnJlbnQ9InRydWUiXXtiYWNrZ3JvdW5kOnZhcigtLXNvZnQpfQoudHJpIC53aGVue2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30KLmZsYWdze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4fQouZmxhZ3tmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6M3B4IDlweDt3aGl0ZS1zcGFjZTpub3dyYXB9Ci5mLXJlZHtiYWNrZ3JvdW5kOnZhcigtLWJhbmQzKTtjb2xvcjp2YXIoLS13YXJuKX0KLmYtZ29sZHtiYWNrZ3JvdW5kOnZhcigtLWdvbGRTb2Z0KTtjb2xvcjp2YXIoLS1nb2xkKX0KLmYtb2t7YmFja2dyb3VuZDp2YXIoLS1zb2Z0KTtjb2xvcjp2YXIoLS1ncmVlbil9Ci5zdW1yb3d7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxOHB4O2ZvbnQtc2l6ZToxM3B4fQouc3Vtcm93IGJ7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6OTAwO2NvbG9yOnZhcigtLWluayk7ZGlzcGxheTpibG9jaztmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9Ci8qIERBUCBub3RlICovCi5kYXB7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMTBweCBtaW5tYXgoMCwxZnIpO2dhcDoxMHB4IDE0cHg7YWxpZ24taXRlbXM6c3RhcnR9Ci5kYXAgLmxibHtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0taW5rKTtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHh9Ci5kYXAgLmxibCBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjEycHh9Ci5hdXRve2JhY2tncm91bmQ6dmFyKC0tc3Vuayk7Ym9yZGVyOjFweCBkYXNoZWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6OXB4IDExcHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0taW5rKX0KLyogR29hbCBlZGl0aW5nICovCi5nZWRpdHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztnYXA6OHB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpfQouZ2VkaXQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wOjB9Ci5nZWRpdCAucm5ne2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6MTNweDtncmlkLWNvbHVtbjoxLy0xfQouZ2VkaXQgLnJuZyBpbnB1dHtmbGV4OjE7YWNjZW50LWNvbG9yOnZhcigtLWdyZWVuKX0KLmxlZ2VuZHtkaXNwbGF5OmZsZXg7Z2FwOjE0cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZsZXgtd3JhcDp3cmFwfQoubGVnZW5kIGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MThweDtoZWlnaHQ6MDtib3JkZXItdG9wOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo1cHh9Ci5sZWdlbmQgaS5kYXNoe2JvcmRlci10b3Atc3R5bGU6ZGFzaGVkfQovKiBTYWZldHkgcGxhbiwgc2xlZXAsIHNldHRpbmdzICovCi5zdGVwe2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjZweCBtaW5tYXgoMCwxZnIpO2dhcDoxMHB4fQouc3RlcCAubnVte3dpZHRoOjI2cHg7aGVpZ2h0OjI2cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1zb2Z0KTtjb2xvcjp2YXIoLS1ncmVlbik7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxM3B4O2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXJ9Ci5saW5le2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTBweDtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1pbmspO3BhZGRpbmc6NnB4IDA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSl9Ci5saW5lOmZpcnN0LWNoaWxke2JvcmRlci10b3A6MH0KLmxpbmUgc3BhbjpsYXN0LWNoaWxke2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOnJpZ2h0fQouYmFycyBzdmd7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztkaXNwbGF5OmJsb2NrfQouYmFycyAubGFie2ZvbnQtc2l6ZToxMXB4O2ZpbGw6dmFyKC0tbXV0ZWQpfQoudGdse2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjhweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWluayl9Ci50Z2w6Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wOjB9Ci50Z2wgaW5wdXRbdHlwZT1jaGVja2JveF17d2lkdGg6MjBweDtoZWlnaHQ6MjBweDthY2NlbnQtY29sb3I6dmFyKC0tZ3JlZW4pfQoubm90aWZ7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjE0cHg7cGFkZGluZzoxMHB4IDEycHg7Ym94LXNoYWRvdzowIDZweCAxOHB4IHJnYmEoNDgsNDEsMzEsLjEyKTtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1pbmspO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjhweCAxZnI7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyfQoubm90aWYgLm1hcmt7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjhweH0KLm5vdGlmIHNtYWxse2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMXB4fQouZ2Vhcntib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWluayk7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzoycHg7Ym9yZGVyLXJhZGl1czo2cHg7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcn0KLmdlYXIgc3Zne3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9Ci5waG9uZS50eDEgLnNjcnt6b29tOjEuMTJ9Ci5waG9uZS50eDIgLnNjcnt6b29tOjEuMjV9Ci5waG9uZS5oY3stLXRleHQ6dmFyKC0taW5rKTstLW11dGVkOnZhcigtLWluayk7LS1saW5lOnZhcigtLWluayk7LS1zdW5rOnZhcigtLXBhbmVsKX0KLnBob25lLmhjIC5jYXJke2JvcmRlci13aWR0aDoycHh9Ci8qIFByaXZhY3kgdmlldyAqLwoucG1vZGUgYXNpZGV7ZGlzcGxheTpub25lfQoucG1vZGUuc2hlbGx7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0KLnB2e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZml0LG1pbm1heCgzMjBweCwxZnIpKTtnYXA6MTZweH0KLnB2IHVse21hcmdpbjowO3BhZGRpbmctbGVmdDoxOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjdweDtmb250LXNpemU6MTRweH0KLnB2IGxpIGJ7Y29sb3I6dmFyKC0taW5rKX0KLmxhd3tkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTFweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoycHggN3B4O2JhY2tncm91bmQ6dmFyKC0tZ29sZFNvZnQpO2NvbG9yOnZhcigtLWluayk7bWFyZ2luLXJpZ2h0OjZweH0KLyogUGlsb3QgKyB0b3VyICovCi5waWxvdHttYXgtd2lkdGg6MTI0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZy1ibG9jazowIDU2cHg7cGFkZGluZy1sZWZ0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwwcHgpKTtwYWRkaW5nLXJpZ2h0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQsMHB4KSl9Ci5waW57YmFja2dyb3VuZDp2YXIoLS1pbmspO2NvbG9yOnZhcigtLWJnKTtib3JkZXItcmFkaXVzOjIycHg7cGFkZGluZzoyOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MjBweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Ci5waW4gaDJ7Y29sb3I6dmFyKC0tYmcpO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjkwMH0KLnBpbiAua3tjb2xvcjp2YXIoLS1nb2xkKX0KLnBpbiBwe21heC13aWR0aDo2MmNoO21hcmdpbi10b3A6NnB4fQoucGJ0bnN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4fQoucGluIC5idG57dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjojMzAyOTFGfQoucGluIC5naG9zdHt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjp2YXIoLS1iZyk7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWJnKTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6OHB4IDE2cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNHB4fQoudG91cmJ0bnthbGlnbi1zZWxmOmZsZXgtc3RhcnQ7YmFja2dyb3VuZDp2YXIoLS1pbmspO2NvbG9yOnZhcigtLWJnKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6OXB4IDE2cHg7Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxNHB4fQoudG91ci1vbntvdXRsaW5lOjNweCBzb2xpZCB2YXIoLS1nb2xkKSFpbXBvcnRhbnQ7b3V0bGluZS1vZmZzZXQ6NHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NX0KLnRvdXJib3h7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo2MDtsZWZ0Om1heCgxNnB4LGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwwcHgpKTtyaWdodDptYXgoMTZweCxlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LDBweCkpO2JvdHRvbTpjYWxjKDE2cHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwwcHgpKTttYXJnaW46MCBhdXRvO21heC13aWR0aDo0NjBweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjE2cHggMThweDtib3gtc2hhZG93OjAgMThweCA1MHB4IHJnYmEoNDgsNDEsMzEsLjMpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEwcHg7Y29sb3I6dmFyKC0taW5rKX0KLnRvdXJib3ggcHtmb250LXNpemU6MTVweH0KLnRvdXJib3hbaGlkZGVuXSxbaGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQoudG91cmJveCAueHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6OHB4O3JpZ2h0OjhweH0KQG1lZGlhIChtYXgtd2lkdGg6MTEwMHB4KXsudmlld3N7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfX0KQG1lZGlhIChtYXgtd2lkdGg6NjQwcHgpey50cmkgYnV0dG9ue2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmRhcHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5kYXAgLmxibHtwYWRkaW5nLXRvcDowfX0KQG1lZGlhIChtYXgtd2lkdGg6ODIwcHgpey52aWV3c3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5hd3JhcHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zY3J7aGVpZ2h0OjYwMHB4fX0KQG1lZGlhIChtYXgtd2lkdGg6ODIwcHgpey5zaGVsbHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfWFzaWRle2ZsZXgtZGlyZWN0aW9uOnJvdztvdmVyZmxvdy14OmF1dG87cGFkZGluZy1ib3R0b206NHB4fS5jbHttaW4td2lkdGg6MjIwcHh9fQpAbWVkaWEgKG1heC13aWR0aDo1MjBweCl7LnByb3d7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIycHggbWlubWF4KDAsMWZyKX0ucHJvdyAuZmllbGR7Z3JpZC1jb2x1bW46Mn19CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upeyp7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH19Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJpbnRybyI+CiAgPHNwYW4gY2xhc3M9ImsiIGRhdGEtaT0iaW50cm9LIj48L3NwYW4+CiAgPGgxIGRhdGEtaT0iaW50cm9IIj48L2gxPgogIDxwIGNsYXNzPSJsZWFkIiBkYXRhLWk9ImludHJvTGVhZCI+PC9wPgogIDxkaXYgY2xhc3M9InZpZXdzIiByb2xlPSJncm91cCIgaWQ9InZpZXdzR3JvdXAiPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJ2VCIgYXJpYS1wcmVzc2VkPSJ0cnVlIj48YiBkYXRhLWk9InZUYiI+PC9iPjxzcGFuIGRhdGEtaT0idlRzIj48L3NwYW4+PC9idXR0b24+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InZDIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48YiBkYXRhLWk9InZDYiI+PC9iPjxzcGFuIGRhdGEtaT0idkNzIj48L3NwYW4+PC9idXR0b24+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InZBIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48YiBkYXRhLWk9InZBYiI+PC9iPjxzcGFuIGRhdGEtaT0idkFzIj48L3NwYW4+PC9idXR0b24+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InZQIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48YiBkYXRhLWk9InZQYiI+PC9iPjxzcGFuIGRhdGEtaT0idlBzIj48L3NwYW4+PC9idXR0b24+CiAgPC9kaXY+CiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ0b3VyYnRuIiBpZD0idG91ckdvIiBkYXRhLWk9InRvdXJHbyI+PC9idXR0b24+CiAgPGRpdiBjbGFzcz0icHJpdmFjeSI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cmVjdCB4PSI1IiB5PSIxMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIvPjxwYXRoIGQ9Ik04IDExVjdhNCA0IDAgMCAxIDggMHY0Ii8+PC9zdmc+PGRpdj48YiBkYXRhLWk9InByaXZCIj48L2I+PHNwYW4gZGF0YS1pPSJwcml2UCI+PC9zcGFuPjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj4KICA8ZGl2IGNsYXNzPSJicmFuZCI+PHNwYW4gY2xhc3M9Im1hcmsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ2YXIoLS1vbkdyZWVuKSIgc3Ryb2tlLXdpZHRoPSIyIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5Ii8+PHBhdGggZD0iTTEyIDVsMi4yIDdMMTIgMTlsLTIuMi03eiIgZmlsbD0idmFyKC0tb25HcmVlbikiLz48L3N2Zz48L3NwYW4+QXRsYXMgPHNwYW4gY2xhc3M9ImRlbW8iIGRhdGEtaT0iZGVtb1BpbGwiPjwvc3Bhbj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJ0b2dnbGVzIj4KICAgIDxkaXYgY2xhc3M9InNlZyIgcm9sZT0iZ3JvdXAiIGlkPSJhbm9uV3JhcCI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJhbm9uT24iIGFyaWEtcHJlc3NlZD0idHJ1ZSIgZGF0YS1pPSJhbm9uT24iPjwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iYW5vbk9mZiIgYXJpYS1wcmVzc2VkPSJmYWxzZSIgZGF0YS1pPSJhbm9uT2ZmIj48L2J1dHRvbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InNlZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9Ikxhbmd1YWdlIC8gTGFuZ3VlIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImxFbiIgbGFuZz0iZW4iIGFyaWEtcHJlc3NlZD0idHJ1ZSI+RW5nbGlzaDwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0ibEZyIiBsYW5nPSJmciIgYXJpYS1wcmVzc2VkPSJmYWxzZSI+RnJhbsOnYWlzPC9idXR0b24+PC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0ic2hlbGwiIGlkPSJhcHAiPgogIDxhc2lkZSBpZD0iY2xpZW50cyI+PC9hc2lkZT4KICA8bWFpbiBpZD0ibWFpbiI+PC9tYWluPgo8L2Rpdj4KCjxzZWN0aW9uIGNsYXNzPSJwaWxvdCIgaWQ9InBpbG90Ij48ZGl2IGNsYXNzPSJwaW4iPgogIDxkaXY+PHNwYW4gY2xhc3M9ImsiIGRhdGEtaT0icGlsb3RLIj48L3NwYW4+PGgyIGRhdGEtaT0icGlsb3RIIj48L2gyPjxwIGRhdGEtaT0icGlsb3RQIj48L3A+PC9kaXY+CiAgPGRpdiBjbGFzcz0icGJ0bnMiPjxhIGNsYXNzPSJidG4iIGhyZWY9Imh0dHBzOi8vdGhlcmFwZXV0aWNhdGxhcy5jb20iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLWk9InBpbG90QnRuIj48L2E+PGEgY2xhc3M9Imdob3N0IiBocmVmPSJodHRwczovL3RoZXJhcGV1dGljYXRsYXMuY29tL3Rvb2xzLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtaT0icGlsb3RUb29scyI+PC9hPjwvZGl2Pgo8L2Rpdj48L3NlY3Rpb24+Cgo8ZGl2IGNsYXNzPSJ0b3VyYm94IiBpZD0idG91ciIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InRvdXJUIiBoaWRkZW4+CiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ4IiBpZD0idG91clgiPiZ0aW1lczs8L2J1dHRvbj4KICA8c3BhbiBjbGFzcz0iayIgaWQ9InRvdXJOIj48L3NwYW4+CiAgPHAgaWQ9InRvdXJUIj48L3A+CiAgPGRpdiBjbGFzcz0iYnRucm93Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIGlkPSJ0b3VyQiI+PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIGlkPSJ0b3VyRiI+PC9idXR0b24+PC9kaXY+CjwvZGl2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKCl7Ci8qIC0tLS0tLS0tLS0gTGFuZ3VhZ2UgLS0tLS0tLS0tLSAqLwpsZXQgTD0oZnVuY3Rpb24oKXt0cnl7Y29uc3Qgcz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXRsYXMtbGFuZycpO2lmKHM9PT0nZW4nfHxzPT09J2ZyJylyZXR1cm4gczt9Y2F0Y2goZSl7fXJldHVybiAobmF2aWdhdG9yLmxhbmd1YWdlfHwnJykudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmcicpPT09MD8nZnInOidlbic7fSkoKTsKY29uc3QgdHI9bz0+KG8mJnR5cGVvZiBvPT09J29iamVjdCcmJignZW4nIGluIG8pKT9vW0xdOm87CmNvbnN0IFM9ewplbjp7CiBpbnRyb0s6J0F0bGFzIGFwcCDCtyBjb25jZXB0IGRlbW8gwrcgYWxsIGNsaWVudHMgZmljdGlvbmFsJyxpbnRyb0g6J1NlZSBBdGxhcyBmcm9tIGJvdGggc2lkZXMnLAogaW50cm9MZWFkOidDaG9vc2UgYSB2aWV3LiBUaGUgdGhlcmFwaXN0IGRhc2hib2FyZCBpcyB3aGF0IHlvdSBzZWUgYmV0d2VlbiBzZXNzaW9ucy4gUmV2aWV3IHRvZ2V0aGVyIGlzIHRoZSBzY3JlZW4geW91IHNoYXJlIHdpdGggYSBjbGllbnQgaW4gc2Vzc2lvbi4gVGhlIGNsaWVudCBhcHAgaXMgd2hhdCB5b3VyIGNsaWVudCBzZWVzIG9uIHRoZWlyIHBob25lLicsCiB2VGI6J1RoZXJhcGlzdCBkYXNoYm9hcmQnLHZUczonTWVhc3VyZXMsIHByb2dyZXNzIHN0b3J5LCB3ZWVrbHkgcGxhbiwgcHJpdmF0ZSBub3RlcycsdkNiOidSZXZpZXcgdG9nZXRoZXInLHZDczonU2hhcmVkIGluIHNlc3Npb24sIHByaXZhdGUgbm90ZXMgaGlkZGVuJyx2QWI6J0NsaWVudCBhcHAnLHZBczonV2hhdCB5b3VyIGNsaWVudCBzZWVzIG9uIHRoZWlyIHBob25lJywKIHByaXZCOiJUaGVyYXBldXRpYyBBdGxhcyBkb2VzIG5vdCBrZWVwIGFueW9uZSdzIHByaXZhdGUgaGVhbHRoIGluZm9ybWF0aW9uLiIsCiBwcml2UDoiQ2xpZW50cycgYW5zd2VycyBzdGF5IG9uIHRoZWlyIG93biBwaG9uZSBvciBjb21wdXRlci4gTm90aGluZyBpcyBzdG9yZWQgb24gb3VyIHNlcnZlcnMuIENsaWVudHMgY2hvb3NlIHdoYXQgdG8gc2hhcmUgYnkgZ2l2aW5nIHRoZWlyIHRoZXJhcGlzdCBhIHByb2dyZXNzIHJlcG9ydCwgdGhyb3VnaCB0aGUgdGhlcmFwaXN0J3Mgb3duIHNlY3VyZSBwb3J0YWwgb3IgaW4gc2Vzc2lvbi4gSW4gdGhpcyBkZW1vLCBldmVyeW9uZSBpcyBmaWN0aW9uYWwgYW5kIG5vdGhpbmcgeW91IHRhcCBpcyBzYXZlZCBvciBzZW50LiIsCiBkZW1vUGlsbDonRGVtbyDCtyBhbGwgY2xpZW50cyBmaWN0aW9uYWwnLGFub25PbjonQW5vbnltaXplZCcsYW5vbk9mZjonU2hvdyBuYW1lcycsdmlld3NMYWJlbDonQ2hvb3NlIGEgdmlldycsbmFtZXNMYWJlbDonTmFtZXMgb24gc2NyZWVuJyxjbGllbnRzTGFiZWw6J0NsaWVudHMnLAogY2xpZW50OidDbGllbnQnLGZpY3Q6J2ZpY3Rpb25hbCcscmVhZHk6J1JldmlldyByZWFkeScsbmV3Y2k6J05ldyByZXBvcnQgc2hhcmVkJywKIHN0YXJ0ZWQ6J1N0YXJ0ZWQnLHNlc3Npb25zOidTZXNzaW9ucycsbmV4dFNlc3Npb246J05leHQgc2Vzc2lvbicsCiBzdG9yeVlvdXI6J1lvdXIgcHJvZ3Jlc3Mgc28gZmFyJyxzdG9yeURyYWZ0OidQcm9ncmVzcyBzdG9yeSDCtyBkcmFmdCBmb3IgeW91ciByZXZpZXcnLAogc3RvcnlNZXRhOidEcmFmdGVkIGZyb20gdGhlIHByb2dyZXNzIHJlcG9ydHMgeW91ciBjbGllbnQgc2hhcmVkLiBOb3RoaW5nIGdvZXMgdG8geW91ciBjbGllbnQgdW50aWwgeW91IGNob29zZSB0byBzaGFyZSBpdC4nLAogc2hhcmU6J1NoYXJlIHdpdGggY2xpZW50JyxzaGFyZWQ6J1NoYXJlZCB3aXRoIGNsaWVudCcsCiBwaHFLOidEZXByZXNzaW9uIHN5bXB0b21zIMK3IFBIUS05JyxnYWRLOidBbnhpZXR5IHN5bXB0b21zIMK3IEdBRC03JyxzaW5jZTonc2luY2Ugd2VlayAxJywKIHBocUZvb3Q6J0xvd2VyIGlzIGJldHRlci4gU2NvcmVzIHN1cHBvcnQsIG5ldmVyIHJlcGxhY2UsIHlvdXIgY2xpbmljYWwganVkZ21lbnQuJyxnYWRGb290OidMb3dlciBpcyBiZXR0ZXIuIFdlZWtseSwgY29tcGxldGVkIGJ5IHRoZSBjbGllbnQgYmVmb3JlIHNlc3Npb24uJywKIGJNaW46J01pbmltYWwnLGJNaWxkOidNaWxkJyxiTW9kOidNb2RlcmF0ZScsYkhpZ2g6J0hpZ2hlcicsc2NvcmVzOidzY29yZXMgYnkgd2VlaycsCiBtb29kSzonRnJvbSBzaGFyZWQgcmVwb3J0cyDCtyBtb29kJyxsb3dlcjonTG93ZXInLGhpZ2hlcjonSGlnaGVyJyxsaWZlRXY6J0xpZmUgZXZlbnQnLHdrOidXJyx3ZWVrOidXZWVrJyxub3RZZXQ6J25vdCB5ZXQnLG1vb2RXOidtb29kJywKIGdvYWxzSzonR29hbHMnLHBjdDoncGVyY2VudCcscHJhY0s6J0JldHdlZW4tc2Vzc2lvbiBwcmFjdGljZScscHJhY0Zvb3Q6J0Zyb20gdGhlIGZyZWUgQXRsYXMgbWVudGFsIGhlYWx0aCB0b29scywgc2hhcmVkIGJ5IHRoZSBjbGllbnQuJywKIHNlc3NLOidTZXNzaW9ucycscHJpdkhpZGRlbjonUHJpdmF0ZSBzZXNzaW9uIG5vdGVzIGFyZSBoaWRkZW4gaW4gY2xpZW50IHZpZXcuJywKIGRhc2hGb290OiJEZW1vIHdpdGggZmljdGlvbmFsIGNsaWVudHMgYW5kIGRhdGEuIFdpdGggdGhlIGZyZWUgdG9vbHMgdG9kYXksIGEgdGhlcmFwaXN0IHNlZXMgdGhpcyBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gdGhlIGNsaWVudCBzaGFyZXMgYSBwcm9ncmVzcyByZXBvcnQuIFRoZXJhcGV1dGljIEF0bGFzIGRvZXMgbm90IHN0b3JlIGNsaWVudCBoZWFsdGggaW5mb3JtYXRpb247IGFueSBmdXR1cmUgdmVyc2lvbiB0aGF0IGRpZCB3b3VsZCBmaXJzdCBtZWV0IENhbmFkaWFuIGhlYWx0aCBwcml2YWN5IGxhdywgaW5jbHVkaW5nIE9udGFyaW8ncyBQSElQQSBhbmQgUXVlYmVjJ3MgcHJpdmFjeSBsYXdzLiIsCiBwbGFuSzoiVGhpcyB3ZWVrJ3MgcGxhbiIscGxhbkhpbnQ6J0Nob29zZSB0aGUgcHJhY3RpY2UgZm9yIHRoaXMgd2VlayBhbmQgd3JpdGUgYSBzaG9ydCBub3RlLiBZb3VyIGNsaWVudCBhZGRzIGl0IHRvIHRoZWlyIGFwcCBmcm9tIGEgY29kZSBvciBsaW5rIHlvdSBnaXZlIHRoZW0uJywKIHBsYW5Nc2c6J01lc3NhZ2UgdG8geW91ciBjbGllbnQnLHBsYW5TaGFyZTonU2hhcmUgcGxhbiB3aXRoIGNsaWVudCcscGxhblNoYXJlZDonUGxhbiByZWFkeS4gWW91ciBjbGllbnQgc2NhbnMgdGhlIGNvZGUgaW4gc2Vzc2lvbiwgb3Igb3BlbnMgdGhlIGxpbmsgeW91IHNlbmQgdGhyb3VnaCB5b3VyIHNlY3VyZSBwb3J0YWwuIFRoZSBwbGFuIHRyYXZlbHMgaW5zaWRlIHRoZSBsaW5rIGl0c2VsZjsgQXRsYXMgZG9lcyBub3Qgc3RvcmUgaXQuJyxwbGFuU2VlOidTZWUgaXQgaW4gdGhlIGNsaWVudCBhcHAnLHBsYW5Ob25lOidQaWNrIGF0IGxlYXN0IG9uZSBwcmFjdGljZSB0byBzaGFyZSBhIHBsYW4uJyxwbGFuTXNnTm9uZTonV3JpdGUgYSBzaG9ydCBtZXNzYWdlIGJlZm9yZSBzaGFyaW5nLicsCiBwbGFuRm9vdDonQSBwcmFjdGljZSBwbGFuIGhvbGRzIG5vIGFuc3dlcnMgb3Igc2NvcmVzLiBJbiB0aGUgZGVtbywgc2hhcmluZyBpdCB1cGRhdGVzIHRoZSBjbGllbnQgYXBwIHJpZ2h0IGF3YXkuJyxwbGFuUm9LOiJUaGlzIHdlZWsncyBwcmFjdGljZSIsCiBoaTonSGknLHN0YXlQaG9uZTonWW91ciBhbnN3ZXJzIHN0YXkgb24gdGhpcyBwaG9uZScsd2l0aFQ6J1dpdGggeW91ciB0aGVyYXBpc3QnLGZyb21UOidGcm9tIHlvdXIgdGhlcmFwaXN0Jyx3ZWVrUHJhYzoiVGhpcyB3ZWVrJ3MgcHJhY3RpY2UiLG9wZW46J09wZW4nLAogcXVpY2s6J1F1aWNrIGNoZWNrLWluJyxtb29kVG9kYXk6J01vb2QgdG9kYXknLHN0cmVzczonU3RyZXNzJyxzbGVlcEw6J1NsZWVwIGxhc3QgbmlnaHQnLHNhdmVDSTonU2F2ZSBteSBjaGVjay1pbicsCiBzYXZlZENJOidTYXZlZCBvbiB0aGlzIHBob25lIG9ubHkuIEFkZCBpdCB0byB5b3VyIHByb2dyZXNzIHJlcG9ydCB3aGVuIHlvdSB3YW50IHRvIHNoYXJlIGl0LiAoRGVtbzogbm90aGluZyBpcyBzYXZlZC4pJywKIHByZXBLOidUbyBicmluZyB1cCBvbicscHJlcEFkZDonQWRkJyxwcmVwUGg6J1NvbWV0aGluZyB0byB0YWxrIGFib3V0JyxwcmVwTGFiZWw6J0FkZCBzb21ldGhpbmcgdG8gdGFsayBhYm91dCcscHJlcFJlbW92ZTonUmVtb3ZlJyxwcmVwRW1wdHk6J05vdGhpbmcgeWV0LiBBZGQgYW55dGhpbmcgeW91IHdhbnQgdG8gdGFsayBhYm91dC4nLHByZXBGb290OidJbmNsdWRlIHRoZXNlIGluIHlvdXIgcHJvZ3Jlc3MgcmVwb3J0IHRvIHNoYXJlIHRoZW0gYmVmb3JlIHNlc3Npb24uJywKIGZlZWxLOidIb3cgYXJlIHlvdSBmZWVsaW5nPycsZmVlbFA6J0ZpbmQgdGhlIHJpZ2h0IHdvcmRzIHdpdGggdGhlIGZlZWxpbmdzIHdoZWVsLicsZmVlbE9wZW46J09wZW4gdGhlIGZlZWxpbmdzIHdoZWVsJywKIGR1ZUs6J0JlZm9yZScscGhxTmFtZTonTW9vZCBjaGVjayAoUEhRLTkpJyxwaHFTdWI6J05pbmUgcXVlc3Rpb25zLCBhYm91dCB0d28gbWludXRlcycsZ2FkTmFtZTonQW54aWV0eSBjaGVjayAoR0FELTcpJyxnYWRTdWI6J1NldmVuIHF1ZXN0aW9ucywgYWJvdXQgYSBtaW51dGUnLHN0YXJ0OidTdGFydCcsZG9uZVNjb3JlOidEb25lIMK3IHNjb3JlJywKIGNyaXNpczonSW4gY3Jpc2lzIGluIENhbmFkYSBvciB0aGUgVVM\/IENhbGwgb3IgdGV4dCA8Yj45ODg8L2I+LCBvciBjYWxsIDkxMS4nLAogYmFjazon4oaQIEJhY2snLHBocVRpdGxlOidNb29kIGNoZWNrJyxnYWRUaXRsZTonQW54aWV0eSBjaGVjaycsb3ZlcjI6J092ZXIgdGhlIGxhc3QgMiB3ZWVrcywgaG93IG9mdGVuIGhhdmUgeW91IGJlZW4gYm90aGVyZWQgYnk6JywKIHRoYW5rc0g6J1RoYW5rIHlvdSBmb3IgdGVsbGluZyB1cycsdGhhbmtzUDoiWW91IGRvbid0IGhhdmUgdG8gY2FycnkgdGhpcyBhbG9uZS4gSWYgeW91IG1pZ2h0IGFjdCBvbiB0aGVzZSB0aG91Z2h0cywgY2FsbCBvciB0ZXh0IDk4OCBub3csIG9yIGNhbGwgOTExLiBQbGVhc2UgdGVsbCB5b3VyIHRoZXJhcGlzdCBhYm91dCB0aGlzIGFuc3dlci4gSXQgd2lsbCBiZSBmbGFnZ2VkIGluIHlvdXIgcHJvZ3Jlc3MgcmVwb3J0LiIsCiBhbnN3ZXJlZDooYSxiKT0+J0Fuc3dlcmVkICcrYSsnIG9mICcrYix5b3VyU2NvcmU6J1lvdXIgc2NvcmUgdG9kYXknLG91dE9mOidvdXQgb2YnLHNhdmVSZXM6J1NhdmUgbXkgcmVzdWx0JywKIHNhdmVkUmVzOidTYXZlZCBvbiB0aGlzIHBob25lIG9ubHkuIEl0IGdvZXMgaW4geW91ciBwcm9ncmVzcyByZXBvcnQgb25seSBpZiB5b3UgY2hvb3NlIHRvIHNoYXJlIGl0LicsYmFja1RvZGF5OidCYWNrIHRvIFRvZGF5JyxzY3JlZW5pbmc6J0Egc2NyZWVuaW5nIHF1ZXN0aW9ubmFpcmUsIG5vdCBhIGRpYWdub3Npcy4nLAogck1pbjonbWluaW1hbCByYW5nZScsck1pbGQ6J21pbGQgcmFuZ2UnLHJNb2Q6J21vZGVyYXRlIHJhbmdlJyxyTW9kU2V2Oidtb2RlcmF0ZWx5IHNldmVyZSByYW5nZScsclNldjonc2V2ZXJlIHJhbmdlJywKIG9wdHM6WydOb3QgYXQgYWxsJywnU2V2ZXJhbCBkYXlzJywnTW9yZSB0aGFuIGhhbGYgdGhlIGRheXMnLCdOZWFybHkgZXZlcnkgZGF5J10sCiBmd1RpdGxlOidGZWVsaW5ncyB3aGVlbCcsZndIaW50OidUYXAgZXZlcnkgZmVlbGluZyB0aGF0IGZpdHMuIFRoZW4gcGljayB0aGUgd29yZHMgdGhhdCBmaXQgYmVzdC4nLGZ3QzE6J1RhcCBhbGwnLGZ3QzI6J3RoYXQgZml0Jyxmd0xhYmVsOidGZWVsaW5ncyB3aGVlbCcsCiBmZWVsTm93OidSaWdodCBub3cgSSBmZWVsICcsYW5kOicgYW5kICcsc2F2ZTonU2F2ZScsc2F2ZWRQaG9uZTonU2F2ZWQgb24gdGhpcyBwaG9uZSBvbmx5LiAoRGVtbzogbm90aGluZyBpcyBzYXZlZC4pJyxzYXZlZE9ubHk6J1NhdmVkIG9ubHkgb24gdGhpcyBwaG9uZScsCiByZXBUaXRsZTonTXkgcHJvZ3Jlc3MgcmVwb3J0JyxyZXBIaW50OidDaG9vc2Ugd2hhdCB0byBpbmNsdWRlLiBZb3UgZGVjaWRlIHdobyBzZWVzIGl0LicsCiBvUTonTW9vZCBhbmQgYW54aWV0eSBjaGVja3MnLG9DOidXZWVrbHkgY2hlY2staW5zJyxvRjonRmVlbGluZ3MnLG9QOidQcmFjdGljZScsb1M6J1RoaW5ncyBJIHdhbnQgdG8gdGFsayBhYm91dCcsb046J015IG5hbWUgb24gdGhlIHJlcG9ydCcscmVwR286J0NyZWF0ZSBteSBwcm9ncmVzcyByZXBvcnQnLAogcmVwU2hlZXRLOidUaGVyYXBldXRpYyBBdGxhcyDCtyBNZW50YWwgaGVhbHRoIHRvb2xzJyxyZXBTaGVldEg6J1Byb2dyZXNzIHJlcG9ydCcsY3JlYXRlZDonQ3JlYXRlZCBPY3QgMTgnLGF0R2xhbmNlOidBdCBhIGdsYW5jZScsdG9kYXlSZXM6J1RvZGF5JywKIHJldmlldzonUGxlYXNlIHJldmlldzonLHE5OidQSFEtOSBxdWVzdGlvbiA5IGFuc3dlcmVkJyxjaUs6J1dlZWtseSBjaGVjay1pbnMnLG1vb2RGTDonTW9vZCwgZmlyc3Qg4oaSIGxhdGVzdCcsZmVlbEVtcHR5OidUcnkgdGhlIGZlZWxpbmdzIHdoZWVsIHRvIGFkZCBmZWVsaW5ncyBoZXJlLicsCiB0YWxrSzonVGhpbmdzIEkgd2FudCB0byB0YWxrIGFib3V0JywKIHJlcEZpbmU6J1NlbGYtcmVwb3J0ZWQuIFNjcmVlbmluZyByZXN1bHRzLCBub3QgYSBkaWFnbm9zaXMuIENvbnRhaW5zIHBlcnNvbmFsIGhlYWx0aCBpbmZvcm1hdGlvbjogc3RvcmUgc2VjdXJlbHkuIEluIGNyaXNpczogY2FsbCBvciB0ZXh0IDk4OC4nLAogcmVwUGRmOidTYXZlIGFzIFBERicscmVwUGRmTXNnOidJbiB0aGUgcmVhbCB0b29scywgdGhpcyBzYXZlcyBhIFBERiBvbiB5b3VyIHBob25lLiAoRGVtbzogbm90aGluZyBpcyBzYXZlZC4pJywKIGhvd1NoYXJlOidIb3cgdG8gc2hhcmUgaXQnLGhvd1NoYXJlUDoiVXBsb2FkIHRoZSBQREYgdG8geW91ciB0aGVyYXBpc3QncyBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgcHJpbnQgaXQgYW5kIGJyaW5nIGl0IHRvIHlvdXIgc2Vzc2lvbi4gSXQgZ29lcyBvbmx5IHdoZXJlIHlvdSBzZW5kIGl0LiIsY3JlYXRlZEhlcmU6J0NyZWF0ZWQgb24gdGhpcyBwaG9uZS4gTmV2ZXIgc3RvcmVkIGJ5IFRoZXJhcGV1dGljIEF0bGFzLicsCiBwcm9nSDonWW91ciBwcm9ncmVzcycsc3RvcmVkT25seTonU3RvcmVkIG9ubHkgb24gdGhpcyBwaG9uZScsd3JpdHRlbldpdGg6J1dyaXR0ZW4gd2l0aCB5b3VyIHRoZXJhcGlzdCcsc3VtbWFyeUs6J1lvdXIgcHJvZ3Jlc3Mgc3VtbWFyeScsCiBzdW1tYXJ5V2FpdDoiWW91ciB0aGVyYXBpc3QgaXMgcHJlcGFyaW5nIHlvdXIgc3VtbWFyeS4gWW91J2xsIHNlZSBpdCBoZXJlIG9uY2UgaXQncyByZWFkeS4iLHN1bW1hcnlUaXA6J1RpcDogaW4gdGhlIHRoZXJhcGlzdCBkYXNoYm9hcmQsIHRhcCAiU2hhcmUgd2l0aCBjbGllbnQiIHRvIHNlZSBpdCBhcHBlYXIgaGVyZS4nLAogbW9vZENoZWNrSzonTW9vZCBjaGVjayDCtyBQSFEtOScsYW54Q2hlY2tLOidBbnhpZXR5IGNoZWNrIMK3IEdBRC03Jyxkb3duOihuKT0+J2Rvd24gJytuKycgc2luY2UgeW91IHN0YXJ0ZWQnLHNhbWU6J2Fib3V0IHRoZSBzYW1lIGFzIHdoZW4geW91IHN0YXJ0ZWQnLGZld2VyOidMb3dlciBtZWFucyBmZXdlciBzeW1wdG9tcy4nLG15R29hbHM6J015IGdvYWxzJywKIHByYWNIOidQcmFjdGljZScsZGlkSzoiV2hhdCB5b3UndmUgZG9uZSIsZndTaG9ydDonTmFtZSB3aGF0IHlvdSBmZWVsLiBUYXAgYXMgbWFueSBhcyBmaXQuJyxhbGxUb29sczonQWxsIHRvb2xzJyx0b29sc0Zvb3Q6J1RoZXNlIG9wZW4gdGhlIGZyZWUgQXRsYXMgbWVudGFsIGhlYWx0aCB0b29scyB5b3UgY2FuIHRyeSB0b2RheS4nLAogaks6J015IGpvdXJuYWwnLGpQOidXcml0ZSB3aGF0IGhhcHBlbmVkIGFuZCBob3cgaXQgZmVsdC4gT25seSB5b3UgY2FuIHJlYWQgaXQuJyxqT3BlbjonT3BlbiBteSBqb3VybmFsJyxqVGl0bGU6J015IGpvdXJuYWwnLGpQaDonV2hhdCBoYXBwZW5lZCB0b2RheSwgYW5kIGhvdyBkaWQgaXQgZmVlbD8nLGpMYWJlbDonTmV3IGpvdXJuYWwgZW50cnknLGpTYXZlOidTYXZlIGVudHJ5JyxqRW1wdHk6J1dyaXRlIGEgZmV3IHdvcmRzIHRvIHNhdmUgYW4gZW50cnkuJywKIGpQcml2OidQcml2YXRlLiBTdGF5cyBvbiB0aGlzIHBob25lIGFuZCBuZXZlciBnb2VzIGludG8gYSByZXBvcnQuJyxqVG9kYXk6J1RvZGF5JywKIHRUb2RheTonVG9kYXknLHRQcmFjdGljZTonUHJhY3RpY2UnLHRQcm9ncmVzczonUHJvZ3Jlc3MnLHRSZXBvcnQ6J1JlcG9ydCcsc2VjdGlvbnM6J0FwcCBzZWN0aW9ucycsYXBwUHJldjonQ2xpZW50IGFwcCBwcmV2aWV3JywKIHNob3dBczonU2hvdyB0aGUgYXBwIGFzJyxmaWN0Q2xpZW50OidGaWN0aW9uYWwgY2xpZW50JyxzZWVIOidXaGF0IGNsaWVudHMgc2VlJywKIHNlZTpbJ1RoZWlyIG5leHQgc2Vzc2lvbiBhbmQgYSBzaG9ydCBtZXNzYWdlIGZyb20geW91LicsJ1RoZSBwcmFjdGljZSB5b3UgYXNzaWduZWQgdGhpcyB3ZWVrLCB3aXRoIGEgbGluayBzdHJhaWdodCBpbnRvIGVhY2ggdG9vbC4nLCdBIHF1aWNrIGNoZWNrLWluLCBhbmQgdGhlIG1vb2QgYW5kIGFueGlldHkgY2hlY2tzIHdoZW4gdGhleSBhcmUgZHVlLicsJ0EgbGlzdCBvZiB0aGluZ3MgdG8gYnJpbmcgdXAgbmV4dCBzZXNzaW9uLCB3aGljaCB0aGV5IGNhbiBhZGQgdG8gdGhlaXIgcmVwb3J0LicsJ0EgcHJpdmF0ZSBqb3VybmFsIHRoYXQgbmV2ZXIgbGVhdmVzIHRoZWlyIHBob25lLicsJ1RoZWlyIHByb2dyZXNzIGluIHBsYWluLCBraW5kIGxhbmd1YWdlLCBvbmx5IGFmdGVyIHlvdSBjaG9vc2UgdG8gc2hhcmUgaXQuJywnQSBwcm9ncmVzcyByZXBvcnQgdGhleSBjcmVhdGUgYW5kIHNoYXJlIHdpdGggeW91LCB0aHJvdWdoIHlvdXIgc2VjdXJlIHBvcnRhbCBvciBpbiBzZXNzaW9uLicsJ05ldmVyIHlvdXIgcHJpdmF0ZSBub3RlcywgYW5kIGFsd2F5cyB0aGUgOTg4IGNyaXNpcyBsaW5lLiddLAogc2lkZUI6J05vdGhpbmcgaXMgc3RvcmVkIGJ5IFRoZXJhcGV1dGljIEF0bGFzLicsc2lkZVA6J0V2ZXJ5dGhpbmcgYSBjbGllbnQgZW50ZXJzIHN0YXlzIG9uIHRoZWlyIG93biBwaG9uZS4gVGhleSBzaGFyZSBpdCBvbmx5IGJ5IGdpdmluZyB5b3UgdGhlaXIgcHJvZ3Jlc3MgcmVwb3J0Licsc2lkZUZvb3Q6J0NvbmNlcHQgZGVtbyB3aXRoIGZpY3Rpb25hbCBwZW9wbGUuIE5vdGhpbmcgeW91IHRhcCBoZXJlIGlzIHNhdmVkIG9yIHNlbnQuJwp9LApmcjp7CiBpbnRyb0s6J0FwcGxpIEF0bGFzIMK3IGTDqW1vIGRlIGNvbmNlcHQgwrcgdG91cyBsZXMgY2xpZW50cyBzb250IGZpY3RpZnMnLGludHJvSDonVm95ZXogQXRsYXMgZGVzIGRldXggY8O0dMOpcycsCiBpbnRyb0xlYWQ6IkNob2lzaXNzZXogdW5lIHZ1ZS4gTGUgdGFibGVhdSBkZSBib3JkIGR1IHRow6lyYXBldXRlIGVzdCBjZSBxdWUgdm91cyB2b3lleiBlbnRyZSBsZXMgc8OpYW5jZXMuIMKrXHUwMEEwUmV2b2lyIGVuc2VtYmxlXHUwMEEwwrsgZXN0IGwnw6ljcmFuIHF1ZSB2b3VzIHBhcnRhZ2V6IGF2ZWMgdm90cmUgY2xpZW50IGVuIHPDqWFuY2UuIEwnYXBwbGkgY2xpZW50IGVzdCBjZSBxdWUgdm90cmUgY2xpZW50IHZvaXQgc3VyIHNvbiB0w6lsw6lwaG9uZS4iLAogdlRiOidUYWJsZWF1IGRlIGJvcmQgZHUgdGjDqXJhcGV1dGUnLHZUczonTWVzdXJlcywgcsOpY2l0IGRlcyBwcm9ncsOocywgcGxhbiBkZSBsYSBzZW1haW5lLCBub3RlcyBwcml2w6llcycsdkNiOidSZXZvaXIgZW5zZW1ibGUnLHZDczonUGFydGFnw6kgZW4gc8OpYW5jZSwgbm90ZXMgcHJpdsOpZXMgbWFzcXXDqWVzJyx2QWI6J0FwcGxpIGNsaWVudCcsdkFzOidDZSBxdWUgdm90cmUgY2xpZW50IHZvaXQgc3VyIHNvbiB0w6lsw6lwaG9uZScsCiBwcml2QjonVGhlcmFwZXV0aWMgQXRsYXMgbmUgY29uc2VydmUgbGVzIHJlbnNlaWduZW1lbnRzIGRlIHNhbnTDqSBkZSBwZXJzb25uZS4nLAogcHJpdlA6IkxlcyByw6lwb25zZXMgZGVzIGNsaWVudHMgcmVzdGVudCBzdXIgbGV1ciBwcm9wcmUgdMOpbMOpcGhvbmUgb3Ugb3JkaW5hdGV1ci4gUmllbiBuJ2VzdCBzdG9ja8OpIHN1ciBub3Mgc2VydmV1cnMuIExlcyBjbGllbnRzIGNob2lzaXNzZW50IGNlIHF1J2lscyBwYXJ0YWdlbnQgZW4gcmVtZXR0YW50IHVuIHJhcHBvcnQgZGUgcHJvZ3LDqHMgw6AgbGV1ciB0aMOpcmFwZXV0ZSwgcGFyIGxlIHBvcnRhaWwgc8OpY3VyaXPDqSBkdSB0aMOpcmFwZXV0ZSBvdSBlbiBzw6lhbmNlLiBEYW5zIGNldHRlIGTDqW1vLCB0b3V0IGxlIG1vbmRlIGVzdCBmaWN0aWYgZXQgcmllbiBkZSBjZSBxdWUgdm91cyB0b3VjaGV6IG4nZXN0IGVucmVnaXN0csOpIG5pIGVudm95w6kuIiwKIGRlbW9QaWxsOidEw6ltbyDCtyBjbGllbnRzIGZpY3RpZnMnLGFub25PbjonQW5vbnltaXPDqScsYW5vbk9mZjonQWZmaWNoZXIgbGVzIG5vbXMnLHZpZXdzTGFiZWw6J0Nob2lzaXIgdW5lIHZ1ZScsbmFtZXNMYWJlbDonTm9tcyDDoCBs4oCZw6ljcmFuJyxjbGllbnRzTGFiZWw6J0NsaWVudHMnLAogY2xpZW50OidDbGllbnQnLGZpY3Q6J2ZpY3RpZicscmVhZHk6J1Byw6p0IMOgIHJldm9pcicsbmV3Y2k6J05vdXZlYXUgcmFwcG9ydCBwYXJ0YWfDqScsCiBzdGFydGVkOidEw6lidXQnLHNlc3Npb25zOidTw6lhbmNlcycsbmV4dFNlc3Npb246J1Byb2NoYWluZSBzw6lhbmNlJywKIHN0b3J5WW91cjonVm9zIHByb2dyw6hzIGp1c3F14oCZaWNpJyxzdG9yeURyYWZ0OidSw6ljaXQgZGVzIHByb2dyw6hzIMK3IGJyb3VpbGxvbiDDoCByw6l2aXNlcicsCiBzdG9yeU1ldGE6IlLDqWRpZ8OpIMOgIHBhcnRpciBkZXMgcmFwcG9ydHMgZGUgcHJvZ3LDqHMgcGFydGFnw6lzIHBhciB2b3RyZSBjbGllbnQuIFJpZW4gbidlc3QgdHJhbnNtaXMgw6Agdm90cmUgY2xpZW50IGF2YW50IHF1ZSB2b3VzIGNob2lzaXNzaWV6IGRlIGxlIHBhcnRhZ2VyLiIsCiBzaGFyZTonUGFydGFnZXIgYXZlYyBsZSBjbGllbnQnLHNoYXJlZDonUGFydGFnw6kgYXZlYyBsZSBjbGllbnQnLAogcGhxSzonU3ltcHTDtG1lcyBkw6lwcmVzc2lmcyDCtyBQSFEtOScsZ2FkSzonU3ltcHTDtG1lcyBhbnhpZXV4IMK3IEdBRC03JyxzaW5jZTonZGVwdWlzIGxhIHNlbWFpbmUgMScsCiBwaHFGb290OidQbHVzIGJhcywgY+KAmWVzdCBtaWV1eC4gTGVzIHNjb3JlcyBhcHB1aWVudCB2b3RyZSBqdWdlbWVudCBjbGluaXF1ZSwgc2FucyBqYW1haXMgbGUgcmVtcGxhY2VyLicsZ2FkRm9vdDonUGx1cyBiYXMsIGPigJllc3QgbWlldXguIFJlbXBsaSBjaGFxdWUgc2VtYWluZSBwYXIgbGUgY2xpZW50IGF2YW50IGxhIHPDqWFuY2UuJywKIGJNaW46J01pbmltYWwnLGJNaWxkOidMw6lnZXInLGJNb2Q6J01vZMOpcsOpJyxiSGlnaDonUGx1cyDDqWxldsOpJyxzY29yZXM6J3Njb3JlcyBwYXIgc2VtYWluZScsCiBtb29kSzonU2Vsb24gbGVzIHJhcHBvcnRzIHBhcnRhZ8OpcyDCtyBodW1ldXInLGxvd2VyOidQbHVzIGJhcycsaGlnaGVyOidQbHVzIGhhdXQnLGxpZmVFdjonw4l2w6luZW1lbnQgZGUgdmllJyx3azonUycsd2VlazonU2VtYWluZScsbm90WWV0OidwYXMgZW5jb3JlJyxtb29kVzonaHVtZXVyJywKIGdvYWxzSzonT2JqZWN0aWZzJyxwY3Q6J3BvdXIgY2VudCcscHJhY0s6J1ByYXRpcXVlIGVudHJlIGxlcyBzw6lhbmNlcycscHJhY0Zvb3Q6J1RpcsOpIGRlcyBvdXRpbHMgZ3JhdHVpdHMgZGUgc2FudMOpIG1lbnRhbGUgQXRsYXMsIHBhcnRhZ8OpIHBhciBsZSBjbGllbnQuJywKIHNlc3NLOidTw6lhbmNlcycscHJpdkhpZGRlbjonTGVzIG5vdGVzIGRlIHPDqWFuY2UgcHJpdsOpZXMgc29udCBtYXNxdcOpZXMgZW4gdnVlIGNsaWVudC4nLAogZGFzaEZvb3Q6IkTDqW1vIGF2ZWMgZGVzIGNsaWVudHMgZXQgZGVzIGRvbm7DqWVzIGZpY3RpZnMuIEF2ZWMgbGVzIG91dGlscyBncmF0dWl0cyBhY3R1ZWxzLCB1biB0aMOpcmFwZXV0ZSB2b2l0IGNlcyByZW5zZWlnbmVtZW50cyBzZXVsZW1lbnQgcXVhbmQgbGUgY2xpZW50IHBhcnRhZ2UgdW4gcmFwcG9ydCBkZSBwcm9ncsOocy4gVGhlcmFwZXV0aWMgQXRsYXMgbmUgc3RvY2tlIGF1Y3VuIHJlbnNlaWduZW1lbnQgZGUgc2FudMOpIGRlcyBjbGllbnRzOyB0b3V0ZSB2ZXJzaW9uIGZ1dHVyZSBxdWkgbGUgZmVyYWl0IGRldnJhaXQgZCdhYm9yZCByZXNwZWN0ZXIgbGVzIGxvaXMgY2FuYWRpZW5uZXMgc3VyIGxhIHByb3RlY3Rpb24gZGVzIHJlbnNlaWduZW1lbnRzIGRlIHNhbnTDqSwgZG9udCBsYSBMUFJQUyBkZSBsJ09udGFyaW8gZXQgbGVzIGxvaXMgZHUgUXXDqWJlYyBzdXIgbGEgcHJvdGVjdGlvbiBkZXMgcmVuc2VpZ25lbWVudHMgcGVyc29ubmVscy4iLAogcGxhbks6J1BsYW4gZGUgbGEgc2VtYWluZScscGxhbkhpbnQ6J0Nob2lzaXNzZXogbGEgcHJhdGlxdWUgZGUgbGEgc2VtYWluZSBldCDDqWNyaXZleiB1bmUgY291cnRlIG5vdGUuIFZvdHJlIGNsaWVudCBs4oCZYWpvdXRlIMOgIHNvbiBhcHBsaSDDoCBwYXJ0aXIgZOKAmXVuIGNvZGUgb3UgZOKAmXVuIGxpZW4gcXVlIHZvdXMgbHVpIHJlbWV0dGV6LicsCiBwbGFuTXNnOidNZXNzYWdlIMOgIHZvdHJlIGNsaWVudCcscGxhblNoYXJlOidQYXJ0YWdlciBsZSBwbGFuIGF2ZWMgbGUgY2xpZW50JyxwbGFuU2hhcmVkOidQbGFuIHByw6p0LiBWb3RyZSBjbGllbnQgYmFsYWllIGxlIGNvZGUgZW4gc8OpYW5jZSwgb3Ugb3V2cmUgbGUgbGllbiBxdWUgdm91cyBlbnZveWV6IHBhciB2b3RyZSBwb3J0YWlsIHPDqWN1cmlzw6kuIExlIHBsYW4gdm95YWdlIGRhbnMgbGUgbGllbiBsdWktbcOqbWU7IEF0bGFzIG5lIGxlIHN0b2NrZSBwYXMuJyxwbGFuU2VlOidMZSB2b2lyIGRhbnMgbOKAmWFwcGxpIGNsaWVudCcscGxhbk5vbmU6J0Nob2lzaXNzZXogYXUgbW9pbnMgdW5lIHByYXRpcXVlIHBvdXIgcGFydGFnZXIgdW4gcGxhbi4nLHBsYW5Nc2dOb25lOifDiWNyaXZleiB1biBjb3VydCBtZXNzYWdlIGF2YW50IGRlIHBhcnRhZ2VyLicsCiBwbGFuRm9vdDonVW4gcGxhbiBkZSBwcmF0aXF1ZSBuZSBjb250aWVudCBhdWN1bmUgcsOpcG9uc2UgbmkgYXVjdW4gc2NvcmUuIERhbnMgbGEgZMOpbW8sIGxlIHBhcnRhZ2VyIG1ldCBs4oCZYXBwbGkgY2xpZW50IMOgIGpvdXIgdG91dCBkZSBzdWl0ZS4nLHBsYW5Sb0s6J1ByYXRpcXVlIGRlIGxhIHNlbWFpbmUnLAogaGk6J0JvbmpvdXInLHN0YXlQaG9uZTonVm9zIHLDqXBvbnNlcyByZXN0ZW50IHN1ciBjZSB0w6lsw6lwaG9uZScsd2l0aFQ6J0F2ZWMgdm90cmUgdGjDqXJhcGV1dGUnLGZyb21UOidEZSB2b3RyZSB0aMOpcmFwZXV0ZScsd2Vla1ByYWM6J1ByYXRpcXVlIGRlIGxhIHNlbWFpbmUnLG9wZW46J091dnJpcicsCiBxdWljazonQmlsYW4gcmFwaWRlJyxtb29kVG9kYXk6J0h1bWV1ciBhdWpvdXJk4oCZaHVpJyxzdHJlc3M6J1N0cmVzcycsc2xlZXBMOidTb21tZWlsIGxhIG51aXQgZGVybmnDqHJlJyxzYXZlQ0k6J0VucmVnaXN0cmVyIG1vbiBiaWxhbicsCiBzYXZlZENJOidFbnJlZ2lzdHLDqSBzdXIgY2UgdMOpbMOpcGhvbmUgc2V1bGVtZW50LiBBam91dGV6LWxlIMOgIHZvdHJlIHJhcHBvcnQgZGUgcHJvZ3LDqHMgcXVhbmQgdm91cyB2b3VsZXogbGUgcGFydGFnZXIuIChEw6ltbyA6IHJpZW4gbuKAmWVzdCBlbnJlZ2lzdHLDqS4pJywKIHByZXBLOifDgCBhYm9yZGVyJyxwcmVwQWRkOidBam91dGVyJyxwcmVwUGg6J1VuIHN1amV0IMOgIGFib3JkZXInLHByZXBMYWJlbDonQWpvdXRlciB1biBzdWpldCDDoCBhYm9yZGVyJyxwcmVwUmVtb3ZlOidSZXRpcmVyJyxwcmVwRW1wdHk6J1JpZW4gcG91ciBs4oCZaW5zdGFudC4gQWpvdXRleiB0b3V0IGNlIGRvbnQgdm91cyB2b3VsZXogcGFybGVyLicscHJlcEZvb3Q6J0luY2x1ZXotbGVzIGRhbnMgdm90cmUgcmFwcG9ydCBkZSBwcm9ncsOocyBwb3VyIGxlcyBwYXJ0YWdlciBhdmFudCBsYSBzw6lhbmNlLicsCiBmZWVsSzonQ29tbWVudCB2b3VzIHNlbnRlei12b3VzPycsZmVlbFA6J1Ryb3V2ZXogbGVzIGJvbnMgbW90cyBhdmVjIGxhIHJvdWUgZGVzIMOpbW90aW9ucy4nLGZlZWxPcGVuOidPdXZyaXIgbGEgcm91ZSBkZXMgw6ltb3Rpb25zJywKIGR1ZUs6J0F2YW50JyxwaHFOYW1lOidCaWxhbiBkZSBs4oCZaHVtZXVyIChQSFEtOSknLHBocVN1YjonTmV1ZiBxdWVzdGlvbnMsIGVudmlyb24gZGV1eCBtaW51dGVzJyxnYWROYW1lOidCaWxhbiBkZSBs4oCZYW54acOpdMOpIChHQUQtNyknLGdhZFN1YjonU2VwdCBxdWVzdGlvbnMsIGVudmlyb24gdW5lIG1pbnV0ZScsc3RhcnQ6J0NvbW1lbmNlcicsZG9uZVNjb3JlOidGYWl0IMK3IHNjb3JlJywKIGNyaXNpczonRW4gY3Jpc2UgYXUgQ2FuYWRhIG91IGF1eCDDiXRhdHMtVW5pcz8gQXBwZWxleiBvdSB0ZXh0ZXogbGUgPGI+OTg4PC9iPiwgb3UgY29tcG9zZXogbGUgOTExLicsCiBiYWNrOifihpAgUmV0b3VyJyxwaHFUaXRsZTonQmlsYW4gZGUgbOKAmWh1bWV1cicsZ2FkVGl0bGU6J0JpbGFuIGRlIGzigJlhbnhpw6l0w6knLG92ZXIyOidBdSBjb3VycyBkZXMgMiBkZXJuacOocmVzIHNlbWFpbmVzLCDDoCBxdWVsbGUgZnLDqXF1ZW5jZSBhdmV6LXZvdXMgw6l0w6kgZMOpcmFuZ8OpKGUpIHBhciBsZXMgcHJvYmzDqG1lcyBzdWl2YW50cz8nLAogdGhhbmtzSDonTWVyY2kgZGUgbm91cyBs4oCZYXZvaXIgZGl0Jyx0aGFua3NQOiJWb3VzIG4nYXZleiBwYXMgw6AgcG9ydGVyIGNlbGEgc2V1bChlKS4gU2kgdm91cyBwZW5zZXogcGFzc2VyIMOgIGwnYWN0ZSwgYXBwZWxleiBvdSB0ZXh0ZXogbGUgOTg4IG1haW50ZW5hbnQsIG91IGNvbXBvc2V6IGxlIDkxMS4gUGFybGV6IGRlIGNldHRlIHLDqXBvbnNlIMOgIHZvdHJlIHRow6lyYXBldXRlLiBFbGxlIHNlcmEgc2lnbmFsw6llIGRhbnMgdm90cmUgcmFwcG9ydCBkZSBwcm9ncsOocy4iLAogYW5zd2VyZWQ6KGEsYik9PmErJyByw6lwb25zZScrKGE+MT8ncyc6JycpKycgc3VyICcrYix5b3VyU2NvcmU6J1ZvdHJlIHNjb3JlIGF1am91cmTigJlodWknLG91dE9mOidzdXInLHNhdmVSZXM6J0VucmVnaXN0cmVyIG1vbiByw6lzdWx0YXQnLAogc2F2ZWRSZXM6J0VucmVnaXN0csOpIHN1ciBjZSB0w6lsw6lwaG9uZSBzZXVsZW1lbnQuIElsIG5lIHZhIGRhbnMgdm90cmUgcmFwcG9ydCBkZSBwcm9ncsOocyBxdWUgc2kgdm91cyBjaG9pc2lzc2V6IGRlIGxlIHBhcnRhZ2VyLicsYmFja1RvZGF5OidSZXRvdXIgw6AgQXVqb3VyZOKAmWh1aScsc2NyZWVuaW5nOidVbiBxdWVzdGlvbm5haXJlIGRlIGTDqXBpc3RhZ2UsIHBhcyB1biBkaWFnbm9zdGljLicsCiByTWluOid6b25lIG1pbmltYWxlJyxyTWlsZDonem9uZSBsw6lnw6hyZScsck1vZDonem9uZSBtb2TDqXLDqWUnLHJNb2RTZXY6J3pvbmUgbW9kw6lyw6ltZW50IHPDqXbDqHJlJyxyU2V2Oid6b25lIHPDqXbDqHJlJywKIG9wdHM6WydKYW1haXMnLCdQbHVzaWV1cnMgam91cnMnLCdQbHVzIGRlIGxhIG1vaXRpw6kgZHUgdGVtcHMnLCdQcmVzcXVlIHRvdXMgbGVzIGpvdXJzJ10sCiBmd1RpdGxlOidSb3VlIGRlcyDDqW1vdGlvbnMnLGZ3SGludDonVG91Y2hleiBjaGFxdWUgw6ltb3Rpb24gcXVpIHZvdXMgcGFybGUuIFB1aXMgY2hvaXNpc3NleiBsZXMgbW90cyBsZXMgcGx1cyBqdXN0ZXMuJyxmd0MxOidUb3VjaGV6Jyxmd0MyOid0b3V0IGNlIHF1aSB2YScsZndMYWJlbDonUm91ZSBkZXMgw6ltb3Rpb25zJywKIGZlZWxOb3c6J0VuIGNlIG1vbWVudCwgamUgbWUgc2VucyAnLGFuZDonIGV0ICcsc2F2ZTonRW5yZWdpc3RyZXInLHNhdmVkUGhvbmU6J0VucmVnaXN0csOpIHN1ciBjZSB0w6lsw6lwaG9uZSBzZXVsZW1lbnQuIChEw6ltbyA6IHJpZW4gbuKAmWVzdCBlbnJlZ2lzdHLDqS4pJyxzYXZlZE9ubHk6J0VucmVnaXN0csOpIHNldWxlbWVudCBzdXIgY2UgdMOpbMOpcGhvbmUnLAogcmVwVGl0bGU6J01vbiByYXBwb3J0IGRlIHByb2dyw6hzJyxyZXBIaW50OidDaG9pc2lzc2V6IGNlIHF1ZSB2b3VzIGluY2x1ZXouIEPigJllc3Qgdm91cyBxdWkgZMOpY2lkZXogcXVpIGxlIHZvaXQuJywKIG9ROidCaWxhbnMgZGUgbOKAmWh1bWV1ciBldCBkZSBs4oCZYW54acOpdMOpJyxvQzonQmlsYW5zIGhlYmRvbWFkYWlyZXMnLG9GOifDiW1vdGlvbnMnLG9QOidQcmF0aXF1ZScsb1M6J1N1amV0cyDDoCBhYm9yZGVyJyxvTjonTW9uIG5vbSBzdXIgbGUgcmFwcG9ydCcscmVwR286J0Nyw6llciBtb24gcmFwcG9ydCBkZSBwcm9ncsOocycsCiByZXBTaGVldEs6J1RoZXJhcGV1dGljIEF0bGFzIMK3IE91dGlscyBkZSBzYW50w6kgbWVudGFsZScscmVwU2hlZXRIOidSYXBwb3J0IGRlIHByb2dyw6hzJyxjcmVhdGVkOidDcsOpw6kgbGUgMTggb2N0LicsYXRHbGFuY2U6J0VuIHVuIGNvdXAgZOKAmcWTaWwnLHRvZGF5UmVzOidBdWpvdXJk4oCZaHVpJywKIHJldmlldzonw4AgcmV2b2lyIDonLHE5OidSw6lwb25zZSDDoCBsYSBxdWVzdGlvbiA5IGR1IFBIUS05IDonLGNpSzonQmlsYW5zIGhlYmRvbWFkYWlyZXMnLG1vb2RGTDonSHVtZXVyLCBwcmVtaWVyIOKGkiBkZXJuaWVyJyxmZWVsRW1wdHk6J0Vzc2F5ZXogbGEgcm91ZSBkZXMgw6ltb3Rpb25zIHBvdXIgYWpvdXRlciBkZXMgw6ltb3Rpb25zIGljaS4nLAogdGFsa0s6J1N1amV0cyDDoCBhYm9yZGVyJywKIHJlcEZpbmU6J0F1dG9kw6ljbGFyw6kuIFLDqXN1bHRhdHMgZGUgZMOpcGlzdGFnZSwgcGFzIHVuIGRpYWdub3N0aWMuIENvbnRpZW50IGRlcyByZW5zZWlnbmVtZW50cyBwZXJzb25uZWxzIHN1ciBsYSBzYW50w6kgOiDDoCBjb25zZXJ2ZXIgZW4gbGlldSBzw7tyLiBFbiBjcmlzZSA6IGFwcGVsZXogb3UgdGV4dGV6IGxlIDk4OC4nLAogcmVwUGRmOidFbnJlZ2lzdHJlciBlbiBQREYnLHJlcFBkZk1zZzonRGFucyBsZXMgdnJhaXMgb3V0aWxzLCBjZWNpIGVucmVnaXN0cmUgdW4gUERGIHN1ciB2b3RyZSB0w6lsw6lwaG9uZS4gKETDqW1vIDogcmllbiBu4oCZZXN0IGVucmVnaXN0csOpLiknLAogaG93U2hhcmU6J0NvbW1lbnQgbGUgcGFydGFnZXInLGhvd1NoYXJlUDonVMOpbMOpdmVyc2V6IGxlIFBERiBkYW5zIGxlIHBvcnRhaWwgY2xpZW50IHPDqWN1cmlzw6kgZGUgdm90cmUgdGjDqXJhcGV1dGUsIG91IGltcHJpbWV6LWxlIGV0IGFwcG9ydGV6LWxlIMOgIHZvdHJlIHPDqWFuY2UuIElsIG5lIHZhIHF1ZSBsw6Agb8O5IHZvdXMgbOKAmWVudm95ZXouJyxjcmVhdGVkSGVyZTonQ3LDqcOpIHN1ciBjZSB0w6lsw6lwaG9uZS4gSmFtYWlzIHN0b2Nrw6kgcGFyIFRoZXJhcGV1dGljIEF0bGFzLicsCiBwcm9nSDonVm9zIHByb2dyw6hzJyxzdG9yZWRPbmx5OidTdG9ja8OpIHNldWxlbWVudCBzdXIgY2UgdMOpbMOpcGhvbmUnLHdyaXR0ZW5XaXRoOidSw6lkaWfDqSBhdmVjIHZvdHJlIHRow6lyYXBldXRlJyxzdW1tYXJ5SzonUsOpc3Vtw6kgZGUgdm9zIHByb2dyw6hzJywKIHN1bW1hcnlXYWl0OidWb3RyZSB0aMOpcmFwZXV0ZSBwcsOpcGFyZSB2b3RyZSByw6lzdW3DqS4gVm91cyBsZSB2ZXJyZXogaWNpIGTDqHMgcXXigJlpbCBzZXJhIHByw6p0Licsc3VtbWFyeVRpcDonQXN0dWNlIDogZGFucyBsZSB0YWJsZWF1IGRlIGJvcmQgZHUgdGjDqXJhcGV1dGUsIHRvdWNoZXogwqtcdTAwQTBQYXJ0YWdlciBhdmVjIGxlIGNsaWVudFx1MDBBMMK7IHBvdXIgbGUgdm9pciBhcHBhcmHDrnRyZSBpY2kuJywKIG1vb2RDaGVja0s6J0JpbGFuIGRlIGzigJlodW1ldXIgwrcgUEhRLTknLGFueENoZWNrSzonQmlsYW4gZGUgbOKAmWFueGnDqXTDqSDCtyBHQUQtNycsZG93bjoobik9PidlbiBiYWlzc2UgZGUgJytuKycgZGVwdWlzIGxlIGTDqWJ1dCcsc2FtZTonw6AgcGV1IHByw6hzIGNvbW1lIGF1IGTDqWJ1dCcsZmV3ZXI6J1BsdXMgYmFzIHZldXQgZGlyZSBtb2lucyBkZSBzeW1wdMO0bWVzLicsbXlHb2FsczonTWVzIG9iamVjdGlmcycsCiBwcmFjSDonUHJhdGlxdWUnLGRpZEs6J0NlIHF1ZSB2b3VzIGF2ZXogZmFpdCcsZndTaG9ydDonTm9tbWV6IGNlIHF1ZSB2b3VzIHJlc3NlbnRlei4gVG91Y2hleiB0b3V0IGNlIHF1aSBz4oCZYXBwbGlxdWUuJyxhbGxUb29sczonVG91cyBsZXMgb3V0aWxzJyx0b29sc0Zvb3Q6J0NlcyBsaWVucyBvdXZyZW50IGxlcyBvdXRpbHMgZ3JhdHVpdHMgZGUgc2FudMOpIG1lbnRhbGUgQXRsYXMsIG9mZmVydHMgZMOocyBhdWpvdXJk4oCZaHVpLicsCiBqSzonTW9uIGpvdXJuYWwnLGpQOifDiWNyaXZleiBjZSBxdWkgc+KAmWVzdCBwYXNzw6kgZXQgY29tbWVudCB2b3VzIGzigJlhdmV6IHbDqWN1LiBWb3VzIHNldWwoZSkgcG91dmV6IGxlIGxpcmUuJyxqT3BlbjonT3V2cmlyIG1vbiBqb3VybmFsJyxqVGl0bGU6J01vbiBqb3VybmFsJyxqUGg6J1F1ZSBz4oCZZXN0LWlsIHBhc3PDqSBhdWpvdXJk4oCZaHVpLCBldCBjb21tZW50IGzigJlhdmV6LXZvdXMgdsOpY3U\/JyxqTGFiZWw6J05vdXZlbGxlIGVudHLDqWUgZGUgam91cm5hbCcsalNhdmU6J0VucmVnaXN0cmVyIGzigJllbnRyw6llJyxqRW1wdHk6J8OJY3JpdmV6IHF1ZWxxdWVzIG1vdHMgcG91ciBlbnJlZ2lzdHJlciB1bmUgZW50csOpZS4nLAogalByaXY6J1ByaXbDqS4gUmVzdGUgc3VyIGNlIHTDqWzDqXBob25lIGV0IG5lIHZhIGphbWFpcyBkYW5zIHVuIHJhcHBvcnQuJyxqVG9kYXk6J0F1am91cmTigJlodWknLAogdFRvZGF5OidBdWpvdXJk4oCZaHVpJyx0UHJhY3RpY2U6J1ByYXRpcXVlJyx0UHJvZ3Jlc3M6J1Byb2dyw6hzJyx0UmVwb3J0OidSYXBwb3J0JyxzZWN0aW9uczonU2VjdGlvbnMgZGUgbOKAmWFwcGxpJyxhcHBQcmV2OidBcGVyw6d1IGRlIGzigJlhcHBsaSBjbGllbnQnLAogc2hvd0FzOidBZmZpY2hlciBs4oCZYXBwbGkgY29tbWUnLGZpY3RDbGllbnQ6J0NsaWVudCBmaWN0aWYnLHNlZUg6J0NlIHF1ZSB2b2llbnQgbGVzIGNsaWVudHMnLAogc2VlOlsnTGV1ciBwcm9jaGFpbmUgc8OpYW5jZSBldCB1biBjb3VydCBtZXNzYWdlIGRlIHZvdHJlIHBhcnQuJywnTGEgcHJhdGlxdWUgYXNzaWduw6llIHBvdXIgbGEgc2VtYWluZSwgYXZlYyB1biBsaWVuIGRpcmVjdCB2ZXJzIGNoYXF1ZSBvdXRpbC4nLCdVbiBiaWxhbiByYXBpZGUsIGV0IGxlcyBiaWxhbnMgZGUgbOKAmWh1bWV1ciBldCBkZSBs4oCZYW54acOpdMOpIHF1YW5kIGlscyBzb250IGR1cy4nLCdVbmUgbGlzdGUgZGUgc3VqZXRzIMOgIGFib3JkZXIgw6AgbGEgcHJvY2hhaW5lIHPDqWFuY2UsIHF14oCZaWxzIHBldXZlbnQgYWpvdXRlciDDoCBsZXVyIHJhcHBvcnQuJywnVW4gam91cm5hbCBwcml2w6kgcXVpIG5lIHF1aXR0ZSBqYW1haXMgbGV1ciB0w6lsw6lwaG9uZS4nLCdMZXVycyBwcm9ncsOocyBlbiBtb3RzIHNpbXBsZXMgZXQgYmllbnZlaWxsYW50cywgc2V1bGVtZW50IGFwcsOocyBxdWUgdm91cyBjaG9pc2lzc2V6IGRlIGxlcyBwYXJ0YWdlci4nLCdVbiByYXBwb3J0IGRlIHByb2dyw6hzIHF14oCZaWxzIGNyw6llbnQgZXQgdm91cyByZW1ldHRlbnQsIHBhciB2b3RyZSBwb3J0YWlsIHPDqWN1cmlzw6kgb3UgZW4gc8OpYW5jZS4nLCdKYW1haXMgdm9zIG5vdGVzIHByaXbDqWVzLCBldCB0b3Vqb3VycyBsYSBsaWduZSBkZSBjcmlzZSA5ODguJ10sCiBzaWRlQjonVGhlcmFwZXV0aWMgQXRsYXMgbmUgc3RvY2tlIHJpZW4uJyxzaWRlUDonVG91dCBjZSBxdeKAmXVuIGNsaWVudCBzYWlzaXQgcmVzdGUgc3VyIHNvbiBwcm9wcmUgdMOpbMOpcGhvbmUuIElsIG5lIGxlIHBhcnRhZ2UgcXXigJllbiB2b3VzIHJlbWV0dGFudCBzb24gcmFwcG9ydCBkZSBwcm9ncsOocy4nLHNpZGVGb290OidEw6ltbyBkZSBjb25jZXB0IGF2ZWMgZGVzIHBlcnNvbm5lcyBmaWN0aXZlcy4gUmllbiBkZSBjZSBxdWUgdm91cyB0b3VjaGV6IGljaSBu4oCZZXN0IGVucmVnaXN0csOpIG5pIGVudm95w6kuJwp9fTsKY29uc3QgdD0oaywuLi5hKT0+e2NvbnN0IHM9KGsgaW4gU1tMXSk\/U1tMXVtrXTpTLmVuW2tdO3JldHVybiB0eXBlb2Ygcz09PSdmdW5jdGlvbic\/cyguLi5hKToocz09bnVsbD9rOnMpO307Ck9iamVjdC5hc3NpZ24oUy5lbix7CiB2UGI6J1ByaXZhY3kgYW5kIHRoZSBsYXcnLHZQczonRm9yIGNsaWVudHMsIGFuZCBQSElQQSwgTGF3IDI1IGFuZCBQSVBFREEgZm9yIHlvdScsbmVlZHM6J05lZWRzIGF0dGVudGlvbicsCiB0b3VyR286J1Rha2UgdGhlIDEtbWludXRlIHRvdXInLHRvdXJOZXh0OidOZXh0Jyx0b3VyQmFjazonQmFjaycsdG91ckRvbmU6J0ZpbmlzaCcsdG91ckNsb3NlOidDbG9zZSB0b3VyJywKIHRvdXIxOidBdGxhcyBoYXMgZm91ciB2aWV3cy4gU3RhcnQgd2l0aCB0aGUgdGhlcmFwaXN0IGRhc2hib2FyZCwgdGhlbiBvcGVuIHRoZSBjbGllbnQgYXBwIHRvIHNlZSB0aGUgc2FtZSB3ZWVrIGZyb20geW91ciBjbGllbnTigJlzIHNpZGUuJywKIHRvdXIyOidZb3VyIHdlZWsgYXQgYSBnbGFuY2UsIGJ1aWx0IG9ubHkgZnJvbSByZXBvcnRzIHlvdXIgY2xpZW50cyBjaG9zZSB0byBzaGFyZS4gUmlzaW5nIHNjb3JlcywgaXRlbSA5IGFuc3dlcnMgYW5kIGxvbmcgZ2FwcyBiZXR3ZWVuIHJlcG9ydHMgcmlzZSB0byB0aGUgdG9wLiBUaGlzIGlzIG5vdCBjcmlzaXMgbW9uaXRvcmluZzogeW91IHNlZSBhbiBhbnN3ZXIgb25seSBvbmNlIGEgcmVwb3J0IGlzIHNoYXJlZC4nLAogdG91cjM6J0Nob29zZSB0aGlzIHdlZWvigJlzIHByYWN0aWNlIGFuZCB3cml0ZSBhIHNob3J0IG5vdGUuIFlvdXIgY2xpZW50IGFkZHMgaXQgdG8gdGhlaXIgYXBwIGJ5IHNjYW5uaW5nIGEgY29kZSBpbiBzZXNzaW9uIG9yIG9wZW5pbmcgdGhlIGxpbmsgeW91IHNlbmQgdGhyb3VnaCB5b3VyIHNlY3VyZSBwb3J0YWwuJywKIHRvdXI0OidTZXNzaW9uIG5vdGVzIHN0YXJ0IHdpdGggdGhpcyB3ZWVr4oCZcyBzY29yZXMgYW5kIHByYWN0aWNlIGFscmVhZHkgZmlsbGVkIGluLiBBZGQgeW91ciBhc3Nlc3NtZW50IGFuZCBwbGFuLCB0aGVuIGNvcHkgdGhlIG5vdGUgaW50byB5b3VyIHJlY29yZHMuJywKIHRvdXI1OidUaGUgY2xpZW50IGFwcDogY2hlY2staW5zLCBwcmFjdGljZSwgYSBzYWZldHkgcGxhbiwgYSBzbGVlcCBkaWFyeSBhbmQgYSBwcml2YXRlIGpvdXJuYWwuIEV2ZXJ5dGhpbmcgc3RheXMgb24gdGhlIGNsaWVudOKAmXMgcGhvbmUuJywKIHRvdXI2OidQcml2YWN5IGluIHBsYWluIGxhbmd1YWdlIGZvciBjbGllbnRzLCBhbmQgd2hhdCBQSElQQSwgUXVlYmVj4oCZcyBsYXdzIGFuZCBQSVBFREEgbWVhbiBmb3IgeW91LicsCiB0b3VyNzonV2FudCBBdGxhcyBpbiB5b3VyIHByYWN0aWNlPyBKb2luIHRoZSBwaWxvdC4nLAogcGlsb3RLOidGb3IgdGhlcmFwaXN0cycscGlsb3RIOidCcmluZyBBdGxhcyB0byB5b3VyIHByYWN0aWNlJywKIHBpbG90UDonV2UgYXJlIGludml0aW5nIGEgc21hbGwgZ3JvdXAgb2YgdGhlcmFwaXN0cyBpbiBPbnRhcmlvIGFuZCBRdWViZWMgdG8gdHJ5IEF0bGFzIHdpdGggdGhlaXIgY2xpZW50cyBhbmQgaGVscCBzaGFwZSBpdCBiZWZvcmUgbGF1bmNoLiBQaWxvdCB0aGVyYXBpc3RzIGdldCBlYXJseSBhY2Nlc3MgYW5kIGEgZGlyZWN0IGxpbmUgdG8gdGhlIHRlYW0uJywKIHBpbG90QnRuOidKb2luIHRoZSBwaWxvdCcscGlsb3RUb29sczonVHJ5IHRoZSBmcmVlIHRvb2xzJywKIHRyaUs6J1RoaXMgd2VlayBhdCBhIGdsYW5jZScsdHJpRm9vdDonQnVpbHQgb25seSBmcm9tIHJlcG9ydHMgY2xpZW50cyBjaG9zZSB0byBzaGFyZS4gTm90IGNyaXNpcyBtb25pdG9yaW5nOiBpbiBhbiBlbWVyZ2VuY3ksIGNsaWVudHMgYXJlIGRpcmVjdGVkIHRvIDk4OCBvciA5MTEuJyx0cmlOZWVkOiduZWVkIGF0dGVudGlvbicsdHJpU2Vzczonc2Vzc2lvbnMgdGhpcyB3ZWVrJyx0cmlDaGVjazoncmVwb3J0cyBzaGFyZWQgdGhpcyB3ZWVrJywKIGZSaXNlOihuKT0+J1BIUS05IHVwICcrbisnIGluIDMgd2Vla3MnLGZSaXNlRzoobik9PidHQUQtNyB1cCAnK24rJyBpbiAzIHdlZWtzJyxmUTk6J0l0ZW0gOSBhbnN3ZXJlZCBpbiBzaGFyZWQgcmVwb3J0JyxmUXVpZXQ6KGQpPT4nTm8gcmVwb3J0IHNoYXJlZCBpbiAnK2QrJyBkYXlzJyxmTmV3OidOZXcgcmVwb3J0IHNoYXJlZCcsZk9rOidPbiB0cmFjaycsCiBkYXBLOidTZXNzaW9uIG5vdGUgwrcgREFQJyxkYXBQcml2OidQcml2YXRlLiBOZXZlciBzaG93biB0byB5b3VyIGNsaWVudC4nLGRhcEQ6J0RhdGEnLGRhcERzOidGaWxsZWQgaW4gZnJvbSB0aGUgbGF0ZXN0IHNoYXJlZCByZXBvcnQnLGRhcEE6J0Fzc2Vzc21lbnQnLGRhcEFzOidZb3VyIGNsaW5pY2FsIHZpZXcnLGRhcFA6J1BsYW4nLGRhcFBzOidOZXh0IHN0ZXBzJywKIGRhcEFwaDonSG93IGlzIHRoZSBjbGllbnQgZG9pbmcsIGFuZCB3aGF0IHN0YW5kcyBvdXQ\/JyxkYXBQcGg6J05leHQgc2Vzc2lvbiBmb2N1cywgcHJhY3RpY2UsIHJlZmVycmFscywgZm9sbG93LXVwLicsZGFwU2F2ZTonU2F2ZSBkcmFmdCcsZGFwU2F2ZWQ6J0RyYWZ0IHNhdmVkIGluIHRoaXMgZGVtbyBvbmx5LicsZGFwQ29weTonQ29weSBub3RlJyxkYXBDb3BpZWQ6J0NvcGllZC4gUGFzdGUgaXQgaW50byB5b3VyIGNsaW5pY2FsIHJlY29yZHMuJyxkYXBDb3B5RmFpbDonQ29weSBkaWQgbm90IHdvcmsgaGVyZS4gVGhlIG5vdGUgaXMgc2VsZWN0ZWQ7IHByZXNzIEN0cmwrQyBvciDijJhDLicsCiBkYXBEYXRhOihjLHgpPT5gUEhRLTkgJHt4LnB9ICgke3gucGJ9KSwgJHt4LnBkPj0wPyd1cCc6J2Rvd24nfSAke01hdGguYWJzKHgucGQpfSBzaW5jZSB3ZWVrIDEuIEdBRC03ICR7eC5nfSAoJHt4LmdifSksICR7eC5nZD49MD8ndXAnOidkb3duJ30gJHtNYXRoLmFicyh4LmdkKX0gc2luY2Ugd2VlayAxLiBMYXRlc3Qgc2hhcmVkIG1vb2QgY2hlY2staW4gJHt4Lm19LzEwLiBQcmFjdGljZTogJHt4LmRvbmV9IG9mICR7eC50b3R9IHRhc2tzIGRvbmUgdGhpcyB3ZWVrLiR7eC5xOT8nIFBIUS05IGl0ZW0gOSBhbnN3ZXJlZCBhYm92ZSB6ZXJvIGluIHRoZSBsYXRlc3Qgc2hhcmVkIHJlcG9ydC4nOicnfSR7eC5sYz49Nz8nIE5vIHJlcG9ydCBzaGFyZWQgaW4gJyt4LmxjKycgZGF5cy4nOicnfWAsCiBnRWRpdDonRWRpdCBnb2FscycsZ0RvbmU6J0RvbmUnLGdBZGQ6J0FkZCBhIGdvYWwnLGdOZXc6J05ldyBnb2FsJyxnTm90ZTonUHJvZ3Jlc3Mgbm90ZScsZ05hbWU6J0dvYWwnLGdSZW1vdmU6J1JlbW92ZSBnb2FsJywKIHBhcnRuZXJzOidQYXJ0bmVycycsc29saWQ6J3NvbGlkIGxpbmUnLGRhc2hlZDonZGFzaGVkIGxpbmUnLAogc2FmZXR5SDonTXkgc2FmZXR5IHBsYW4nLHNhZmV0eUludHJvOidTdGVwcyB0byB1c2UsIGluIG9yZGVyLCB3aGVuIHRoaW5ncyBmZWVsIHRvbyBoZWF2eS4gRmlsbCBpdCBpbiB3aXRoIHlvdXIgdGhlcmFwaXN0Licsc2FmZXR5T3BlbjonT3BlbiBteSBzYWZldHkgcGxhbicsCiBzV2FybjonV2FybmluZyBzaWducycsc1dhcm5IOidUaG91Z2h0cywgZmVlbGluZ3Mgb3Igc2l0dWF0aW9ucyB0aGF0IHRlbGwgbWUgYSBoYXJkIHRpbWUgbWF5IGJlIHN0YXJ0aW5nJywKIHNDb3BlOidUaGluZ3MgSSBjYW4gZG8gb24gbXkgb3duJyxzQ29wZUg6J1RvIHRha2UgbXkgbWluZCBvZmYgdGhpbmdzIHdpdGhvdXQgY29udGFjdGluZyBhbnlvbmUnLAogc0RpczonUGVvcGxlIGFuZCBwbGFjZXMgdGhhdCBoZWxwJyxzRGlzSDonV2hlcmUgSSBjYW4gZ28sIG9yIHdobyBJIGNhbiBiZSBhcm91bmQsIHRvIGZlZWwgYSBiaXQgYmV0dGVyJywKIHNQZW86J1Blb3BsZSBJIGNhbiBhc2sgZm9yIGhlbHAnLHNQZW9IOidQZW9wbGUgSSBjYW4gdGVsbCBob3cgSSBhbSByZWFsbHkgZG9pbmcnLAogc1BybzonUHJvZmVzc2lvbmFscyBhbmQgY3Jpc2lzIGxpbmVzJyxzUHJvSDonQ2FsbCBvciB0ZXh0IGFueSB0aW1lJywKIHNTYWZlOidNYWtpbmcgbXkgc3BhY2Ugc2FmZXInLHNTYWZlSDonU3RlcHMgdG8ga2VlcCBteXNlbGYgc2FmZSBhdCBob21lJywKIHNUaGVyOidNeSB0aGVyYXBpc3QnLHNUaGVyTjonTmV4dCBzZXNzaW9uOicsczk4ODonU3VpY2lkZSBDcmlzaXMgSGVscGxpbmUnLHM5ODhuOidDYWxsIG9yIHRleHQgOTg4JyxzOTExOidFbWVyZ2VuY3knLHM5MTFuOidDYWxsIDkxMScsczgxMTonUXVlYmVjOiBJbmZvLVNvY2lhbCcsczgxMW46J0NhbGwgODExLCBvcHRpb24gMicsc0tocDonS2lkcyBIZWxwIFBob25lJyxzS2hwTjonMS04MDAtNjY4LTY4NjgsIG9yIHRleHQgQ09OTkVDVCB0byA2ODY4NjgnLAogc0FkZFBoOidBZGQgYSBsaW5lJyxzQWRkOidBZGQnLAogc2xlZXBIOidTbGVlcCBkaWFyeScsc2xlZXBLOidIb3VycyBzbGVwdCDCtyBsYXN0IDcgbmlnaHRzJyxzbGVlcEF2ZzooaCk9PidBdmVyYWdlICcraCsnIGhvdXJzJyxzbGVlcEdvYWw6JzctaG91ciBnb2FsJyxzbGVlcExhc3Q6J0xhc3QgbmlnaHQgKFN1bmRheSknLHNsZWVwSHJzOidob3Vycycsc2xlZXBTYXZlOidTYXZlJyxzbGVlcFNhdmVkOidTYXZlZCBvbiB0aGlzIHBob25lIG9ubHkuJyxzbGVlcEJhZDonRW50ZXIgaG91cnMgYmV0d2VlbiAwIGFuZCAxNC4nLHNsZWVwT3BlbjonT3BlbiBteSBzbGVlcCBkaWFyeScsCiBkYXlzOlsnTW9uJywnVHVlJywnV2VkJywnVGh1JywnRnJpJywnU2F0JywnU3VuJ10sCiBzZXRIOidTZXR0aW5ncycsc2V0T3BlbjonUmVtaW5kZXJzIGFuZCBkaXNwbGF5JyxyZW1LOidSZW1pbmRlcnMnLHJlbVA6J1ByYWN0aWNlIHJlbWluZGVyJyxyZW1DOidXZWVrbHkgY2hlY2staW4gcmVtaW5kZXInLHJlbUF0OidhdCcscmVtT246J29uJywKIHJlbVByZXY6J1ByZXZpZXcnLHJlbU5vdGU6J1JlbWluZGVycyBjb21lIGZyb20geW91ciBvd24gcGhvbmUuIE5vIG1lc3NhZ2UgZ29lcyB0aHJvdWdoIFRoZXJhcGV1dGljIEF0bGFzLicscmVtUE1zZzooeCk9PidUaW1lIGZvciB5b3VyIHByYWN0aWNlOiAnK3gscmVtQ01zZzonWW91ciB3ZWVrbHkgY2hlY2staW4gdGFrZXMgYWJvdXQgYSBtaW51dGUuJywKIGRpc3BLOidEaXNwbGF5Jyx0eHRTaXplOidUZXh0IHNpemUnLHR4MDonU3RhbmRhcmQnLHR4MTonTGFyZ2UnLHR4MjonTGFyZ2VyJyxoYzonSGlnaCBjb250cmFzdCcsc2V0dGluZ3M6J1NldHRpbmdzJywKIHdkOnttb246J01vbmRheScsd2VkOidXZWRuZXNkYXknLGZyaTonRnJpZGF5JyxzdW46J1N1bmRheSd9LAogcHZDbGllbnRLOidGb3IgY2xpZW50cycscHZDbGllbnRIOidZb3VyIHByaXZhY3ksIGluIHBsYWluIHdvcmRzJywKIHB2Q2xpZW50OlsnPGI+V2hhdCB5b3UgdHlwZSBzdGF5cyBvbiB5b3VyIHBob25lLjwvYj4gQ2hlY2staW5zLCBzY29yZXMsIGZlZWxpbmdzLCB5b3VyIHNsZWVwIGRpYXJ5IGFuZCB5b3VyIGpvdXJuYWwgYXJlIHNhdmVkIG9uIHlvdXIgZGV2aWNlLiBUaGVyYXBldXRpYyBBdGxhcyBkb2VzIG5vdCBoYXZlIGEgY29weS4nLCc8Yj5Zb3UgZGVjaWRlIHdoYXQgdG8gc2hhcmUuPC9iPiBUbyBzaGFyZSwgeW91IGNyZWF0ZSBhIHByb2dyZXNzIHJlcG9ydCBhbmQgZ2l2ZSBpdCB0byB5b3VyIHRoZXJhcGlzdCwgdGhyb3VnaCB0aGVpciBzZWN1cmUgcG9ydGFsIG9yIGluIHNlc3Npb24uJywnPGI+WW91ciBqb3VybmFsIGlzIG5ldmVyIHNoYXJlZC48L2I+IEl0IGNhbm5vdCBiZSBhZGRlZCB0byBhIHJlcG9ydC4nLCc8Yj5EZWxldGluZyB0aGUgYXBwIGRlbGV0ZXMgeW91ciBlbnRyaWVzLjwvYj4gQmVjYXVzZSB3ZSBrZWVwIG5vIGNvcHksIHdlIGNhbm5vdCByZXN0b3JlIHRoZW0uJywnPGI+WW91ciB0aGVyYXBpc3Qga2VlcHMgdGhlaXIgb3duIHJlY29yZHMuPC9iPiBPbmNlIHlvdSBnaXZlIHRoZW0gYSByZXBvcnQsIGl0IGJlY29tZXMgcGFydCBvZiB0aGVpciBjbGluaWNhbCByZWNvcmQsIHByb3RlY3RlZCBieSB0aGVpciBvd24gcHJpdmFjeSBkdXRpZXMuJywnPGI+UXVlc3Rpb25zIG9yIGNvbXBsYWludHM\/PC9iPiBBc2sgeW91ciB0aGVyYXBpc3QsIG9yIGNvbnRhY3QgS2ltIExhdmlnbmUsIHRoZSBwZXJzb24gaW4gY2hhcmdlIG9mIHByaXZhY3kgYXQgVGhlcmFwZXV0aWMgQXRsYXMsIGF0IGtpbUB0aGVyYXBldXRpY2F0bGFzLmNvbS4nXSwKIHB2VGhlcks6J0ZvciB0aGVyYXBpc3RzJyxwdlRoZXJIOidXaGF0IHRoZSBsYXcgYXNrcyBvZiB5b3UsIGFuZCBob3cgQXRsYXMgaXMgYnVpbHQgZm9yIGl0JywKIHB2V2hvSDonV2hpY2ggbGF3IGFwcGxpZXMnLAogcHZXaG86Wyc8c3BhbiBjbGFzcz0ibGF3Ij5PbnRhcmlvPC9zcGFuPjxiPlBISVBBLjwvYj4gQXMgYSBoZWFsdGggaW5mb3JtYXRpb24gY3VzdG9kaWFuLCB5b3Ugc3RheSByZXNwb25zaWJsZSBmb3IgY2xpZW50IHJlY29yZHMgZXZlbiB3aGVuIGFuIGFnZW50IG9yIHZlbmRvciBoYW5kbGVzIHRoZW0sIGFuZCB5b3UgbmVlZCBhIGNvbmZpZGVudGlhbGl0eSBhZ3JlZW1lbnQgd2l0aCBhZ2VudHMuJywnPHNwYW4gY2xhc3M9ImxhdyI+UXVlYmVjPC9zcGFuPjxiPkhlYWx0aCBpbmZvcm1hdGlvbiBhY3QgKExhdyA1KTwvYj4sIGluIGZvcmNlIHNpbmNlIEp1bHkgMSwgMjAyNCwgY292ZXJzIGNsaWVudCBoZWFsdGggaW5mb3JtYXRpb24gaW4gcHJpdmF0ZSBwcmFjdGljZXMgc3VjaCBhcyBhIHBzeWNob2xvZ2lzdOKAmXMgb2ZmaWNlLiA8Yj5MYXcgMjU8L2I+IGNvdmVycyB5b3VyIG90aGVyIHBlcnNvbmFsIGluZm9ybWF0aW9uLCBzdWNoIGFzIG1haWxpbmcgbGlzdHMgYW5kIHN0YWZmIGZpbGVzLicsJzxzcGFuIGNsYXNzPSJsYXciPkZlZGVyYWw8L3NwYW4+PGI+UElQRURBPC9iPiBjb3ZlcnMgcGVyc29uYWwgaW5mb3JtYXRpb24gY29sbGVjdGVkIGluIGNvbW1lcmNpYWwgYWN0aXZpdHkgd2hlcmUgbm8gc3Vic3RhbnRpYWxseSBzaW1pbGFyIHByb3ZpbmNpYWwgbGF3IGFwcGxpZXMsIHN1Y2ggYXMgQXRsYXPigJlzIG93biBidXNpbmVzcyBkYXRhLiBCaWxsIEMtMzYsIHRhYmxlZCBpbiBKdW5lIDIwMjYsIHdvdWxkIHJlcGxhY2UgaXQgYnV0IGlzIG5vdCBsYXcgeWV0LiddLAogcHZEZXNpZ25IOidIb3cgQXRsYXPigJlzIGRlc2lnbiBoZWxwcycsCiBwdkRlc2lnbjpbJ0F0bGFzIGRvZXMgbm90IGNvbGxlY3Qgb3Igc3RvcmUgeW91ciBjbGllbnRz4oCZIGhlYWx0aCBpbmZvcm1hdGlvbiwgc28gaXQgaXMgbm90IGhvbGRpbmcgcmVjb3JkcyBvbiB5b3VyIGJlaGFsZi4nLCdBIGNsaWVudOKAmXMgcmVwb3J0IHJlYWNoZXMgeW91IG9ubHkgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGl0LCB0aHJvdWdoIHlvdXIgb3duIHNlY3VyZSBwb3J0YWwgb3IgaW4gc2Vzc2lvbi4gRnJvbSB0aGVuIG9uLCB5b3VyIHVzdWFsIHJlY29yZC1rZWVwaW5nIGR1dGllcyBhcHBseS4nLCdZb3VyIGRhc2hib2FyZCBydW5zIG9uIHlvdXIgb3duIGRldmljZS4gSXQgcmVhZHMgdGhlIHJlcG9ydHMgeW91IG9wZW4gYW5kIGtlZXBzIHRoZW0gd2l0aCB5b3VyIHJlY29yZHMsIG5vdCB3aXRoIEF0bGFzLicsJ0F0bGFzIGlzIG5vdCBhIGNyaXNpcy1tb25pdG9yaW5nIHRvb2wuIFlvdSBzZWUgYSBQSFEtOSBpdGVtIDkgYW5zd2VyIG9ubHkgYWZ0ZXIgdGhlIGNsaWVudCBzaGFyZXMgYSByZXBvcnQsIHNvIGtlZXAgeW91ciB1c3VhbCBzYWZldHkgcGxhbm5pbmcuIFRoZSBjbGllbnQgYXBwIGFsd2F5cyBzaG93cyA5ODggYW5kIDkxMS4nLCdQcml2YXRlIGpvdXJuYWxzIG5ldmVyIGxlYXZlIHRoZSBjbGllbnTigJlzIHBob25lIGFuZCBjYW5ub3QgYmUgYWRkZWQgdG8gYSByZXBvcnQuJywnVGhlIGFwcCBhbmQgdGhpcyBkZW1vIGFyZSBmdWxseSBhdmFpbGFibGUgaW4gRnJlbmNoIGFuZCBFbmdsaXNoLiddLAogcHZMaXN0SDonWW91ciBjaGVja2xpc3QnLAogcHZMaXN0OlsnPHNwYW4gY2xhc3M9ImxhdyI+T250YXJpbzwvc3Bhbj5Ob3RpZnkgdGhlIGNsaWVudCwgYW5kIHRoZSBJUEMgd2hlcmUgcmVxdWlyZWQsIHdoZW4gaGVhbHRoIGluZm9ybWF0aW9uIGlzIGxvc3QsIHN0b2xlbiBvciB1c2VkIG9yIGRpc2Nsb3NlZCB3aXRob3V0IGF1dGhvcml6YXRpb24uIFJlcG9ydCB5b3VyIHllYXJseSBicmVhY2ggc3RhdGlzdGljcyB0byB0aGUgSVBDLicsJzxzcGFuIGNsYXNzPSJsYXciPk9udGFyaW88L3NwYW4+SGF2ZSB3cml0dGVuIGFncmVlbWVudHMgd2l0aCBldmVyeSB2ZW5kb3IgdGhhdCBoYW5kbGVzIGNsaWVudCBpbmZvcm1hdGlvbi4nLCc8c3BhbiBjbGFzcz0ibGF3Ij5RdWViZWM8L3NwYW4+TmFtZSBhIHBlcnNvbiByZXNwb25zaWJsZSBmb3IgcHJpdmFjeSBhbmQgcHVibGlzaCB0aGVpciB0aXRsZSBhbmQgY29udGFjdCBkZXRhaWxzLiBBZG9wdCBhbmQgcHVibGlzaCBhIGdvdmVybmFuY2UgcG9saWN5LCBhbmQgdHJhaW4gc3RhZmYgeWVhcmx5LicsJzxzcGFuIGNsYXNzPSJsYXciPlF1ZWJlYzwvc3Bhbj5EbyBhIHByaXZhY3kgaW1wYWN0IGFzc2Vzc21lbnQgYmVmb3JlIGFkb3B0aW5nIGEgbmV3IHRlY2hub2xvZ3kgcHJvZHVjdCwgb3IgYmVmb3JlIGluZm9ybWF0aW9uIGlzIGhvc3RlZCBvciBzZW50IG91dHNpZGUgUXVlYmVjLiBLZWVwIGEgcmVnaXN0ZXIgb2YgdGhlIHRlY2hub2xvZ3kgcHJvZHVjdHMgeW91IHVzZS4nLCc8c3BhbiBjbGFzcz0ibGF3Ij5RdWViZWM8L3NwYW4+S2VlcCBhbiBpbmNpZGVudCByZWdpc3Rlci4gUmVwb3J0IGluY2lkZW50cyB0aGF0IHJpc2sgc2VyaW91cyBpbmp1cnkgdG8gdGhlIENvbW1pc3Npb24gZOKAmWFjY8OocyDDoCBs4oCZaW5mb3JtYXRpb24gKGFuZCB0aGUgTWluaXN0ZXIsIGZvciBoZWFsdGggaW5mb3JtYXRpb24pLicsJzxzcGFuIGNsYXNzPSJsYXciPlF1ZWJlYzwvc3Bhbj5PZmZlciBzb2Z0d2FyZSBhbmQgY2xpZW50IG1hdGVyaWFscyBpbiBGcmVuY2guJ10sCiBwdkZ1dHVyZUg6J0lmIEF0bGFzIGV2ZXIgc3RvcmVkIGRhdGEnLAogcHZGdXR1cmU6J0EgZnV0dXJlIHZlcnNpb24gdGhhdCBzeW5jZWQgb3Igc3RvcmVkIGNsaWVudCBpbmZvcm1hdGlvbiB3b3VsZCBtYWtlIEF0bGFzIGEgc2VydmljZSBwcm92aWRlciB0byB5b3UuIEJlZm9yZSB0aGF0LCBBdGxhcyB3b3VsZCBuZWVkIHdyaXR0ZW4gYWdyZWVtZW50cyB3aXRoIGVhY2ggdGhlcmFwaXN0LCBDYW5hZGlhbiBob3N0aW5nICh3aXRoIGEgcHJpdmFjeSBpbXBhY3QgYXNzZXNzbWVudCBmb3IgYW55IGhvc3Rpbmcgb3V0c2lkZSBRdWViZWMpLCBhY2Nlc3MgbG9ncywgYnJlYWNoIG5vdGlmaWNhdGlvbiB0byB5b3UsIGFuZCBhIHB1YmxpYyBkZXNjcmlwdGlvbiBvZiBpdHMgc2FmZWd1YXJkcy4nLAogcHZGaW5lOidQbGFpbi1sYW5ndWFnZSBzdW1tYXJ5IGFzIG9mIE5vdmVtYmVyIDIwMjYsIG5vdCBsZWdhbCBhZHZpY2UuIENvbmZpcm0geW91ciBvYmxpZ2F0aW9ucyB3aXRoIHlvdXIgY29sbGVnZSBvciBwcm9mZXNzaW9uYWwgb3JkZXIgYW5kIGEgcHJpdmFjeSBsYXd5ZXIuJwp9KTsKT2JqZWN0LmFzc2lnbihTLmZyLHsKIHZQYjonQ29uZmlkZW50aWFsaXTDqSBldCBsb2lzJyx2UHM6J1BvdXIgbGVzIGNsaWVudHMsIGV0IGxhIExQUlBTLCBsYSBMb2kgMjUgZXQgbGEgTFBSUERFIHBvdXIgdm91cycsbmVlZHM6J8OAIHN1cnZlaWxsZXInLAogdG91ckdvOidGYWlyZSBsYSB2aXNpdGUgKDEgbWludXRlKScsdG91ck5leHQ6J1N1aXZhbnQnLHRvdXJCYWNrOidSZXRvdXInLHRvdXJEb25lOidUZXJtaW5lcicsdG91ckNsb3NlOidGZXJtZXIgbGEgdmlzaXRlJywKIHRvdXIxOidBdGxhcyBvZmZyZSBxdWF0cmUgdnVlcy4gQ29tbWVuY2V6IHBhciBsZSB0YWJsZWF1IGRlIGJvcmQgZHUgdGjDqXJhcGV1dGUsIHB1aXMgb3V2cmV6IGzigJlhcHBsaSBjbGllbnQgcG91ciB2b2lyIGxhIG3Dqm1lIHNlbWFpbmUgZHUgY8O0dMOpIGRlIHZvdHJlIGNsaWVudC4nLAogdG91cjI6J1ZvdHJlIHNlbWFpbmUgZW4gdW4gY291cCBk4oCZxZNpbCwgY29uc3RydWl0ZSB1bmlxdWVtZW50IMOgIHBhcnRpciBkZXMgcmFwcG9ydHMgcXVlIHZvcyBjbGllbnRzIG9udCBjaG9pc2kgZGUgcGFydGFnZXIuIFNjb3JlcyBlbiBoYXVzc2UsIHLDqXBvbnNlcyDDoCBsYSBxdWVzdGlvbiA5IGV0IGxvbmdzIGTDqWxhaXMgZW50cmUgbGVzIHJhcHBvcnRzIG1vbnRlbnQgZW4gdMOqdGUuIENlIG7igJllc3QgcGFzIHVuZSBzdXJ2ZWlsbGFuY2UgZGUgY3Jpc2UgOiB2b3VzIHZveWV6IHVuZSByw6lwb25zZSBzZXVsZW1lbnQgdW5lIGZvaXMgbGUgcmFwcG9ydCBwYXJ0YWfDqS4nLAogdG91cjM6J0Nob2lzaXNzZXogbGEgcHJhdGlxdWUgZGUgbGEgc2VtYWluZSBldCDDqWNyaXZleiB1bmUgY291cnRlIG5vdGUuIFZvdHJlIGNsaWVudCBs4oCZYWpvdXRlIMOgIHNvbiBhcHBsaSBlbiBiYWxheWFudCB1biBjb2RlIGVuIHPDqWFuY2Ugb3UgZW4gb3V2cmFudCBsZSBsaWVuIHF1ZSB2b3VzIGVudm95ZXogcGFyIHZvdHJlIHBvcnRhaWwgc8OpY3VyaXPDqS4nLAogdG91cjQ6J0xlcyBub3RlcyBkZSBzw6lhbmNlIGNvbW1lbmNlbnQgYXZlYyBsZXMgc2NvcmVzIGV0IGxhIHByYXRpcXVlIGRlIGxhIHNlbWFpbmUgZMOpasOgIHJlbXBsaXMuIEFqb3V0ZXogdm90cmUgw6l2YWx1YXRpb24gZXQgdm90cmUgcGxhbiwgcHVpcyBjb3BpZXogbGEgbm90ZSBkYW5zIHZvcyBkb3NzaWVycy4nLAogdG91cjU6J0zigJlhcHBsaSBjbGllbnQgOiBiaWxhbnMsIHByYXRpcXVlLCBwbGFuIGRlIHPDqWN1cml0w6ksIGpvdXJuYWwgZHUgc29tbWVpbCBldCBqb3VybmFsIHByaXbDqS4gVG91dCByZXN0ZSBzdXIgbGUgdMOpbMOpcGhvbmUgZHUgY2xpZW50LicsCiB0b3VyNjonTGEgY29uZmlkZW50aWFsaXTDqSBlbiBtb3RzIHNpbXBsZXMgcG91ciBsZXMgY2xpZW50cywgZXQgY2UgcXVlIGxhIExQUlBTLCBsZXMgbG9pcyBkdSBRdcOpYmVjIGV0IGxhIExQUlBERSBzaWduaWZpZW50IHBvdXIgdm91cy4nLAogdG91cjc6J1ZvdXMgdm91bGV6IEF0bGFzIGRhbnMgdm90cmUgcHJhdGlxdWU\/IEpvaWduZXotdm91cyBhdSBwcm9qZXQgcGlsb3RlLicsCiBwaWxvdEs6J1BvdXIgbGVzIHRow6lyYXBldXRlcycscGlsb3RIOidJbnTDqWdyZXogQXRsYXMgw6Agdm90cmUgcHJhdGlxdWUnLAogcGlsb3RQOidOb3VzIGludml0b25zIHVuIHBldGl0IGdyb3VwZSBkZSB0aMOpcmFwZXV0ZXMgZGUgbOKAmU9udGFyaW8gZXQgZHUgUXXDqWJlYyDDoCBlc3NheWVyIEF0bGFzIGF2ZWMgbGV1cnMgY2xpZW50cyBldCDDoCBsZSBmYcOnb25uZXIgYXZhbnQgc29uIGxhbmNlbWVudC4gTGVzIHRow6lyYXBldXRlcyBkdSBwcm9qZXQgcGlsb3RlIG9idGllbm5lbnQgdW4gYWNjw6hzIGFudGljaXDDqSBldCB1biBsaWVuIGRpcmVjdCBhdmVjIGzigJnDqXF1aXBlLicsCiBwaWxvdEJ0bjonSm9pbmRyZSBsZSBwcm9qZXQgcGlsb3RlJyxwaWxvdFRvb2xzOidFc3NheWVyIGxlcyBvdXRpbHMgZ3JhdHVpdHMnLAogdHJpSzonVm90cmUgc2VtYWluZSBlbiB1biBjb3VwIGTigJnFk2lsJyx0cmlGb290OidDb25zdHJ1aXQgdW5pcXVlbWVudCDDoCBwYXJ0aXIgZGVzIHJhcHBvcnRzIHF1ZSBsZXMgY2xpZW50cyBvbnQgY2hvaXNpIGRlIHBhcnRhZ2VyLiBDZSBu4oCZZXN0IHBhcyB1bmUgc3VydmVpbGxhbmNlIGRlIGNyaXNlIDogZW4gY2FzIGTigJl1cmdlbmNlLCBsZXMgY2xpZW50cyBzb250IGRpcmlnw6lzIHZlcnMgbGUgOTg4IG91IGxlIDkxMS4nLHRyaU5lZWQ6J8OgIHN1cnZlaWxsZXInLHRyaVNlc3M6J3PDqWFuY2VzIGNldHRlIHNlbWFpbmUnLHRyaUNoZWNrOidyYXBwb3J0cyBwYXJ0YWfDqXMgY2V0dGUgc2VtYWluZScsCiBmUmlzZToobik9PidQSFEtOSBlbiBoYXVzc2UgZGUgJytuKycgZW4gMyBzZW1haW5lcycsZlJpc2VHOihuKT0+J0dBRC03IGVuIGhhdXNzZSBkZSAnK24rJyBlbiAzIHNlbWFpbmVzJyxmUTk6J1F1ZXN0aW9uIDkgcsOpcG9uZHVlIChyYXBwb3J0IHBhcnRhZ8OpKScsZlF1aWV0OihkKT0+J0F1Y3VuIHJhcHBvcnQgcGFydGFnw6kgZGVwdWlzICcrZCsnIGpvdXJzJyxmTmV3OidOb3V2ZWF1IHJhcHBvcnQgcGFydGFnw6knLGZPazonRW4gYm9ubmUgdm9pZScsCiBkYXBLOidOb3RlIGRlIHPDqWFuY2UgwrcgREFQJyxkYXBQcml2OidQcml2w6llLiBKYW1haXMgbW9udHLDqWUgw6Agdm90cmUgY2xpZW50LicsZGFwRDonRG9ubsOpZXMnLGRhcERzOidSZW1wbGllcyDDoCBwYXJ0aXIgZHUgZGVybmllciByYXBwb3J0IHBhcnRhZ8OpJyxkYXBBOifDiXZhbHVhdGlvbicsZGFwQXM6J1ZvdHJlIHJlZ2FyZCBjbGluaXF1ZScsZGFwUDonUGxhbicsZGFwUHM6J1Byb2NoYWluZXMgw6l0YXBlcycsCiBkYXBBcGg6J0NvbW1lbnQgdmEgbGUgY2xpZW50LCBldCBxdeKAmWVzdC1jZSBxdWkgcmVzc29ydD8nLGRhcFBwaDonVGjDqG1lIGRlIGxhIHByb2NoYWluZSBzw6lhbmNlLCBwcmF0aXF1ZSwgcsOpZsOpcmVuY2VzLCBzdWl2aS4nLGRhcFNhdmU6J0VucmVnaXN0cmVyIGxlIGJyb3VpbGxvbicsZGFwU2F2ZWQ6J0Jyb3VpbGxvbiBlbnJlZ2lzdHLDqSBkYW5zIGNldHRlIGTDqW1vIHNldWxlbWVudC4nLGRhcENvcHk6J0NvcGllciBsYSBub3RlJyxkYXBDb3BpZWQ6J0NvcGnDqWUuIENvbGxlei1sYSBkYW5zIHZvcyBkb3NzaWVycyBjbGluaXF1ZXMuJyxkYXBDb3B5RmFpbDonTGEgY29waWUgbuKAmWEgcGFzIGZvbmN0aW9ubsOpIGljaS4gTGEgbm90ZSBlc3Qgc8OpbGVjdGlvbm7DqWU7IGFwcHV5ZXogc3VyIEN0cmwrQyBvdSDijJhDLicsCiBkYXBEYXRhOihjLHgpPT5gUEhRLTkgJHt4LnB9ICgke3gucGJ9KSwgZW4gJHt4LnBkPj0wPydoYXVzc2UnOidiYWlzc2UnfSBkZSAke01hdGguYWJzKHgucGQpfSBkZXB1aXMgbGEgc2VtYWluZSAxLiBHQUQtNyAke3guZ30gKCR7eC5nYn0pLCBlbiAke3guZ2Q+PTA\/J2hhdXNzZSc6J2JhaXNzZSd9IGRlICR7TWF0aC5hYnMoeC5nZCl9IGRlcHVpcyBsYSBzZW1haW5lIDEuIERlcm5pZXIgYmlsYW4gZOKAmWh1bWV1ciBwYXJ0YWfDqSA6ICR7eC5tfS8xMC4gUHJhdGlxdWUgOiAke3guZG9uZX0gdMOiY2hlJHt4LmRvbmU+MT8ncyc6Jyd9IHN1ciAke3gudG90fSBmYWl0ZSR7eC5kb25lPjE\/J3MnOicnfSBjZXR0ZSBzZW1haW5lLiR7eC5xOT8nIFF1ZXN0aW9uIDkgZHUgUEhRLTkgY290w6llIGF1LWRlc3N1cyBkZSB6w6lybyBkYW5zIGxlIGRlcm5pZXIgcmFwcG9ydCBwYXJ0YWfDqS4nOicnfSR7eC5sYz49Nz8nIEF1Y3VuIHJhcHBvcnQgcGFydGFnw6kgZGVwdWlzICcreC5sYysnIGpvdXJzLic6Jyd9YCwKIGdFZGl0OidNb2RpZmllciBsZXMgb2JqZWN0aWZzJyxnRG9uZTonVGVybWluw6knLGdBZGQ6J0Fqb3V0ZXIgdW4gb2JqZWN0aWYnLGdOZXc6J05vdXZlbCBvYmplY3RpZicsZ05vdGU6J05vdGUgZGUgcHJvZ3LDqHMnLGdOYW1lOidPYmplY3RpZicsZ1JlbW92ZTonUmV0aXJlciBs4oCZb2JqZWN0aWYnLAogcGFydG5lcnM6J1BhcnRlbmFpcmVzJyxzb2xpZDonbGlnbmUgcGxlaW5lJyxkYXNoZWQ6J2xpZ25lIHBvaW50aWxsw6llJywKIHNhZmV0eUg6J01vbiBwbGFuIGRlIHPDqWN1cml0w6knLHNhZmV0eUludHJvOidEZXMgw6l0YXBlcyDDoCBzdWl2cmUsIGRhbnMgbOKAmW9yZHJlLCBxdWFuZCBj4oCZZXN0IHRyb3AgbG91cmQuIFJlbXBsaXNzZXotbGUgYXZlYyB2b3RyZSB0aMOpcmFwZXV0ZS4nLHNhZmV0eU9wZW46J091dnJpciBtb24gcGxhbiBkZSBzw6ljdXJpdMOpJywKIHNXYXJuOidTaWduYXV4IGTigJlhbGVydGUnLHNXYXJuSDonUGVuc8OpZXMsIMOpbW90aW9ucyBvdSBzaXR1YXRpb25zIHF1aSBt4oCZaW5kaXF1ZW50IHF14oCZdW4gbW9tZW50IGRpZmZpY2lsZSBjb21tZW5jZScsCiBzQ29wZTonQ2UgcXVlIGplIHBldXggZmFpcmUgc2V1bChlKScsc0NvcGVIOidQb3VyIG1lIGNoYW5nZXIgbGVzIGlkw6llcyBzYW5zIGNvbnRhY3RlciBwZXJzb25uZScsCiBzRGlzOidQZXJzb25uZXMgZXQgbGlldXggcXVpIG3igJlhaWRlbnQnLHNEaXNIOidPw7kgYWxsZXIsIG91IGF2ZWMgcXVpIMOqdHJlLCBwb3VyIG1lIHNlbnRpciB1biBwZXUgbWlldXgnLAogc1BlbzonUGVyc29ubmVzIMOgIHF1aSBkZW1hbmRlciBkZSBs4oCZYWlkZScsc1Blb0g6J0RlcyBnZW5zIMOgIHF1aSBqZSBwZXV4IGRpcmUgY29tbWVudCBqZSB2YWlzIHZyYWltZW50JywKIHNQcm86J1Byb2Zlc3Npb25uZWxzIGV0IGxpZ25lcyBkZSBjcmlzZScsc1Byb0g6J0FwcGVsZXogb3UgdGV4dGV6IGVuIHRvdXQgdGVtcHMnLAogc1NhZmU6J1JlbmRyZSBtb24gZW52aXJvbm5lbWVudCBwbHVzIHPDu3InLHNTYWZlSDonRGVzIG1lc3VyZXMgcG91ciBhc3N1cmVyIG1hIHPDqWN1cml0w6kgw6AgbGEgbWFpc29uJywKIHNUaGVyOidNb24gdGjDqXJhcGV1dGUnLHNUaGVyTjonUHJvY2hhaW5lIHPDqWFuY2UgOicsczk4ODonTGlnbmUgZOKAmWFpZGUgZW4gY2FzIGRlIGNyaXNlIHN1aWNpZGFpcmUnLHM5ODhuOidBcHBlbGV6IG91IHRleHRleiBsZSA5ODgnLHM5MTE6J1VyZ2VuY2UnLHM5MTFuOidDb21wb3NleiBsZSA5MTEnLHM4MTE6J1F1w6liZWMgOiBJbmZvLVNvY2lhbCcsczgxMW46J0NvbXBvc2V6IGxlIDgxMSwgb3B0aW9uIDInLHNLaHA6J0pldW5lc3NlLCBK4oCZw6ljb3V0ZScsc0tocE46JzEtODAwLTY2OC02ODY4LCBvdSB0ZXh0ZXogUEFSTEVSIGF1IDY4Njg2OCcsCiBzQWRkUGg6J0Fqb3V0ZXIgdW5lIGxpZ25lJyxzQWRkOidBam91dGVyJywKIHNsZWVwSDonSm91cm5hbCBkdSBzb21tZWlsJyxzbGVlcEs6J0hldXJlcyBkZSBzb21tZWlsIMK3IDcgZGVybmnDqHJlcyBudWl0cycsc2xlZXBBdmc6KGgpPT4nTW95ZW5uZSBkZSAnK1N0cmluZyhoKS5yZXBsYWNlKCcuJywnLCcpKycgaGV1cmVzJyxzbGVlcEdvYWw6J09iamVjdGlmIGRlIDcgaGV1cmVzJyxzbGVlcExhc3Q6J0xhIG51aXQgZGVybmnDqHJlIChkaW1hbmNoZSknLHNsZWVwSHJzOidoZXVyZXMnLHNsZWVwU2F2ZTonRW5yZWdpc3RyZXInLHNsZWVwU2F2ZWQ6J0VucmVnaXN0csOpIHN1ciBjZSB0w6lsw6lwaG9uZSBzZXVsZW1lbnQuJyxzbGVlcEJhZDonRW50cmV6IHVuIG5vbWJyZSBk4oCZaGV1cmVzIGVudHJlIDAgZXQgMTQuJyxzbGVlcE9wZW46J091dnJpciBtb24gam91cm5hbCBkdSBzb21tZWlsJywKIGRheXM6WydsdW4nLCdtYXInLCdtZXInLCdqZXUnLCd2ZW4nLCdzYW0nLCdkaW0nXSwKIHNldEg6J1BhcmFtw6h0cmVzJyxzZXRPcGVuOidSYXBwZWxzIGV0IGFmZmljaGFnZScscmVtSzonUmFwcGVscycscmVtUDonUmFwcGVsIGRlIHByYXRpcXVlJyxyZW1DOidSYXBwZWwgZHUgYmlsYW4gaGViZG9tYWRhaXJlJyxyZW1BdDonw6AnLHJlbU9uOidsZScsCiByZW1QcmV2OidBcGVyw6d1JyxyZW1Ob3RlOidMZXMgcmFwcGVscyB2aWVubmVudCBkZSB2b3RyZSBwcm9wcmUgdMOpbMOpcGhvbmUuIEF1Y3VuIG1lc3NhZ2UgbmUgcGFzc2UgcGFyIFRoZXJhcGV1dGljIEF0bGFzLicscmVtUE1zZzooeCk9PidD4oCZZXN0IGzigJloZXVyZSBkZSB2b3RyZSBwcmF0aXF1ZSA6ICcreCxyZW1DTXNnOidWb3RyZSBiaWxhbiBoZWJkb21hZGFpcmUgcHJlbmQgZW52aXJvbiB1bmUgbWludXRlLicsCiBkaXNwSzonQWZmaWNoYWdlJyx0eHRTaXplOidUYWlsbGUgZHUgdGV4dGUnLHR4MDonTm9ybWFsZScsdHgxOidHcmFuZGUnLHR4MjonVHLDqHMgZ3JhbmRlJyxoYzonQ29udHJhc3RlIMOpbGV2w6knLHNldHRpbmdzOidQYXJhbcOodHJlcycsCiB3ZDp7bW9uOidsdW5kaScsd2VkOidtZXJjcmVkaScsZnJpOid2ZW5kcmVkaScsc3VuOidkaW1hbmNoZSd9LAogcHZDbGllbnRLOidQb3VyIGxlcyBjbGllbnRzJyxwdkNsaWVudEg6J1ZvdHJlIHZpZSBwcml2w6llLCBlbiBtb3RzIHNpbXBsZXMnLAogcHZDbGllbnQ6Wyc8Yj5DZSBxdWUgdm91cyDDqWNyaXZleiByZXN0ZSBzdXIgdm90cmUgdMOpbMOpcGhvbmUuPC9iPiBCaWxhbnMsIHNjb3Jlcywgw6ltb3Rpb25zLCBqb3VybmFsIGR1IHNvbW1laWwgZXQgam91cm5hbCBwZXJzb25uZWwgc29udCBlbnJlZ2lzdHLDqXMgc3VyIHZvdHJlIGFwcGFyZWlsLiBUaGVyYXBldXRpYyBBdGxhcyBu4oCZZW4gYSBhdWN1bmUgY29waWUuJywnPGI+Q+KAmWVzdCB2b3VzIHF1aSBkw6ljaWRleiBjZSBxdWUgdm91cyBwYXJ0YWdlei48L2I+IFBvdXIgcGFydGFnZXIsIHZvdXMgY3LDqWV6IHVuIHJhcHBvcnQgZGUgcHJvZ3LDqHMgZXQgbGUgcmVtZXR0ZXogw6Agdm90cmUgdGjDqXJhcGV1dGUsIHBhciBzb24gcG9ydGFpbCBzw6ljdXJpc8OpIG91IGVuIHPDqWFuY2UuJywnPGI+Vm90cmUgam91cm5hbCBu4oCZZXN0IGphbWFpcyBwYXJ0YWfDqS48L2I+IElsIG5lIHBldXQgcGFzIMOqdHJlIGFqb3V0w6kgw6AgdW4gcmFwcG9ydC4nLCc8Yj5TdXBwcmltZXIgbOKAmWFwcGxpIHN1cHByaW1lIHZvcyBlbnRyw6llcy48L2I+IENvbW1lIG5vdXMgbuKAmWVuIGdhcmRvbnMgYXVjdW5lIGNvcGllLCBub3VzIG5lIHBvdXZvbnMgcGFzIGxlcyByw6ljdXDDqXJlci4nLCc8Yj5Wb3RyZSB0aMOpcmFwZXV0ZSB0aWVudCBzZXMgcHJvcHJlcyBkb3NzaWVycy48L2I+IFVuZSBmb2lzIHF1ZSB2b3VzIGx1aSByZW1ldHRleiB1biByYXBwb3J0LCBpbCBmYWl0IHBhcnRpZSBkZSBzb24gZG9zc2llciBjbGluaXF1ZSwgcHJvdMOpZ8OpIHBhciBzZXMgcHJvcHJlcyBvYmxpZ2F0aW9ucyBkZSBjb25maWRlbnRpYWxpdMOpLicsJzxiPlF1ZXN0aW9ucyBvdSBwbGFpbnRlcz88L2I+IFBhcmxlei1lbiDDoCB2b3RyZSB0aMOpcmFwZXV0ZSwgb3UgY29tbXVuaXF1ZXogYXZlYyBLaW0gTGF2aWduZSwgcGVyc29ubmUgcmVzcG9uc2FibGUgZGUgbGEgcHJvdGVjdGlvbiBkZXMgcmVuc2VpZ25lbWVudHMgcGVyc29ubmVscyBkZSBUaGVyYXBldXRpYyBBdGxhcywgw6Aga2ltQHRoZXJhcGV1dGljYXRsYXMuY29tLiddLAogcHZUaGVySzonUG91ciBsZXMgdGjDqXJhcGV1dGVzJyxwdlRoZXJIOidDZSBxdWUgbGEgbG9pIHZvdXMgZGVtYW5kZSwgZXQgY29tbWVudCBBdGxhcyBlc3QgY29uw6d1IGVuIGNvbnPDqXF1ZW5jZScsCiBwdldob0g6J1F1ZWxsZSBsb2kgc+KAmWFwcGxpcXVlJywKIHB2V2hvOlsnPHNwYW4gY2xhc3M9ImxhdyI+T250YXJpbzwvc3Bhbj48Yj5MUFJQUyAoUEhJUEEpLjwvYj4gw4AgdGl0cmUgZGUgZMOpcG9zaXRhaXJlIGRlIHJlbnNlaWduZW1lbnRzIHN1ciBsYSBzYW50w6ksIHZvdXMgcmVzdGV6IHJlc3BvbnNhYmxlIGRlcyBkb3NzaWVycyBkZSB2b3MgY2xpZW50cyBtw6ptZSBxdWFuZCB1biBtYW5kYXRhaXJlIG91IHVuIGZvdXJuaXNzZXVyIGxlcyB0cmFpdGUsIGV0IGlsIHZvdXMgZmF1dCB1bmUgZW50ZW50ZSBkZSBjb25maWRlbnRpYWxpdMOpIGF2ZWMgdm9zIG1hbmRhdGFpcmVzLicsJzxzcGFuIGNsYXNzPSJsYXciPlF1w6liZWM8L3NwYW4+TGEgPGI+TG9pIHN1ciBsZXMgcmVuc2VpZ25lbWVudHMgZGUgc2FudMOpIGV0IGRlIHNlcnZpY2VzIHNvY2lhdXggKExvaSA1KTwvYj4sIGVuIHZpZ3VldXIgZGVwdWlzIGxlIDFlciBqdWlsbGV0IDIwMjQsIGVuY2FkcmUgbGVzIHJlbnNlaWduZW1lbnRzIGRlIHNhbnTDqSBkZXMgY2xpZW50cyBlbiBwcmF0aXF1ZSBwcml2w6llLCBjb21tZSB1biBjYWJpbmV0IGRlIHBzeWNob2xvZ3VlLiBMYSA8Yj5Mb2kgMjU8L2I+IGVuY2FkcmUgdm9zIGF1dHJlcyByZW5zZWlnbmVtZW50cyBwZXJzb25uZWxzLCBjb21tZSB2b3MgbGlzdGVzIGTigJllbnZvaSBldCBsZXMgZG9zc2llcnMgZHUgcGVyc29ubmVsLicsJzxzcGFuIGNsYXNzPSJsYXciPkbDqWTDqXJhbDwvc3Bhbj5MYSA8Yj5MUFJQREU8L2I+IHPigJlhcHBsaXF1ZSBhdXggcmVuc2VpZ25lbWVudHMgcGVyc29ubmVscyByZWN1ZWlsbGlzIGRhbnMgbGUgY2FkcmUgZOKAmWFjdGl2aXTDqXMgY29tbWVyY2lhbGVzIGzDoCBvw7kgYXVjdW5lIGxvaSBwcm92aW5jaWFsZSBlc3NlbnRpZWxsZW1lbnQgc2ltaWxhaXJlIG5lIHPigJlhcHBsaXF1ZSwgY29tbWUgbGVzIGRvbm7DqWVzIGTigJlhZmZhaXJlcyBk4oCZQXRsYXMuIExlIHByb2pldCBkZSBsb2kgQy0zNiwgZMOpcG9zw6kgZW4ganVpbiAyMDI2LCBsYSByZW1wbGFjZXJhaXQsIG1haXMgbuKAmWVzdCBwYXMgZW5jb3JlIGVuIHZpZ3VldXIuJ10sCiBwdkRlc2lnbkg6J0NvbW1lbnQgbGEgY29uY2VwdGlvbiBk4oCZQXRsYXMgdm91cyBhaWRlJywKIHB2RGVzaWduOlsnQXRsYXMgbmUgcmVjdWVpbGxlIG5pIG5lIHN0b2NrZSBsZXMgcmVuc2VpZ25lbWVudHMgZGUgc2FudMOpIGRlIHZvcyBjbGllbnRzOyBpbCBuZSBkw6l0aWVudCBkb25jIHBhcyBkZSBkb3NzaWVycyBlbiB2b3RyZSBub20uJywnTGUgcmFwcG9ydCBk4oCZdW4gY2xpZW50IG5lIHZvdXMgcGFydmllbnQgcXVlIGxvcnNxdWUgbGUgY2xpZW50IGzigJllbnZvaWUsIHBhciB2b3RyZSBwcm9wcmUgcG9ydGFpbCBzw6ljdXJpc8OpIG91IGVuIHPDqWFuY2UuIMOAIHBhcnRpciBkZSBsw6AsIHZvcyBvYmxpZ2F0aW9ucyBoYWJpdHVlbGxlcyBkZSB0ZW51ZSBkZSBkb3NzaWVycyBz4oCZYXBwbGlxdWVudC4nLCdWb3RyZSB0YWJsZWF1IGRlIGJvcmQgZm9uY3Rpb25uZSBzdXIgdm90cmUgcHJvcHJlIGFwcGFyZWlsLiBJbCBsaXQgbGVzIHJhcHBvcnRzIHF1ZSB2b3VzIG91dnJleiBldCBsZXMgY29uc2VydmUgYXZlYyB2b3MgZG9zc2llcnMsIHBhcyBjaGV6IEF0bGFzLicsJ0F0bGFzIG7igJllc3QgcGFzIHVuIG91dGlsIGRlIHN1cnZlaWxsYW5jZSBkZSBjcmlzZS4gVm91cyB2b3lleiB1bmUgcsOpcG9uc2Ugw6AgbGEgcXVlc3Rpb24gOSBkdSBQSFEtOSBzZXVsZW1lbnQgYXByw6hzIHF1ZSBsZSBjbGllbnQgYSBwYXJ0YWfDqSB1biByYXBwb3J0OyBtYWludGVuZXogZG9uYyB2b3RyZSBwbGFuaWZpY2F0aW9uIGRlIHPDqWN1cml0w6kgaGFiaXR1ZWxsZS4gTOKAmWFwcGxpIGNsaWVudCBhZmZpY2hlIHRvdWpvdXJzIGxlIDk4OCBldCBsZSA5MTEuJywnTGVzIGpvdXJuYXV4IHByaXbDqXMgbmUgcXVpdHRlbnQgamFtYWlzIGxlIHTDqWzDqXBob25lIGR1IGNsaWVudCBldCBuZSBwZXV2ZW50IHBhcyDDqnRyZSBham91dMOpcyDDoCB1biByYXBwb3J0LicsJ0zigJlhcHBsaSBldCBjZXR0ZSBkw6ltbyBzb250IGVudGnDqHJlbWVudCBvZmZlcnRlcyBlbiBmcmFuw6dhaXMgZXQgZW4gYW5nbGFpcy4nXSwKIHB2TGlzdEg6J1ZvdHJlIGxpc3RlIGRlIHbDqXJpZmljYXRpb24nLAogcHZMaXN0OlsnPHNwYW4gY2xhc3M9ImxhdyI+T250YXJpbzwvc3Bhbj5BdmlzZXogbGUgY2xpZW50LCBldCBsZSBDSVBWUCBsb3JzcXVlIHJlcXVpcywgcXVhbmQgZGVzIHJlbnNlaWduZW1lbnRzIGRlIHNhbnTDqSBzb250IHBlcmR1cywgdm9sw6lzLCBvdSB1dGlsaXPDqXMgb3UgZGl2dWxndcOpcyBzYW5zIGF1dG9yaXNhdGlvbi4gRMOpY2xhcmV6IGNoYXF1ZSBhbm7DqWUgdm9zIHN0YXRpc3RpcXVlcyBk4oCZYXR0ZWludGVzIGF1IENJUFZQLicsJzxzcGFuIGNsYXNzPSJsYXciPk9udGFyaW88L3NwYW4+QXlleiBkZXMgZW50ZW50ZXMgw6ljcml0ZXMgYXZlYyBjaGFxdWUgZm91cm5pc3NldXIgcXVpIHRyYWl0ZSBkZXMgcmVuc2VpZ25lbWVudHMgZGUgY2xpZW50cy4nLCc8c3BhbiBjbGFzcz0ibGF3Ij5RdcOpYmVjPC9zcGFuPkTDqXNpZ25leiB1bmUgcGVyc29ubmUgcmVzcG9uc2FibGUgZGUgbGEgcHJvdGVjdGlvbiBkZXMgcmVuc2VpZ25lbWVudHMgcGVyc29ubmVscyBldCBwdWJsaWV6IHNvbiB0aXRyZSBldCBzZXMgY29vcmRvbm7DqWVzLiBBZG9wdGV6IGV0IHB1YmxpZXogdW5lIHBvbGl0aXF1ZSBkZSBnb3V2ZXJuYW5jZSwgZXQgZm9ybWV6IGxlIHBlcnNvbm5lbCBjaGFxdWUgYW5uw6llLicsJzxzcGFuIGNsYXNzPSJsYXciPlF1w6liZWM8L3NwYW4+RmFpdGVzIHVuZSDDqXZhbHVhdGlvbiBkZXMgZmFjdGV1cnMgcmVsYXRpZnMgw6AgbGEgdmllIHByaXbDqWUgYXZhbnQgZOKAmWFkb3B0ZXIgdW4gbm91dmVhdSBwcm9kdWl0IHRlY2hub2xvZ2lxdWUsIG91IGF2YW50IHF1ZSBkZXMgcmVuc2VpZ25lbWVudHMgc29pZW50IGjDqWJlcmfDqXMgb3UgY29tbXVuaXF1w6lzIGhvcnMgZHUgUXXDqWJlYy4gVGVuZXogdW4gcmVnaXN0cmUgZGVzIHByb2R1aXRzIHRlY2hub2xvZ2lxdWVzIHV0aWxpc8Opcy4nLCc8c3BhbiBjbGFzcz0ibGF3Ij5RdcOpYmVjPC9zcGFuPlRlbmV6IHVuIHJlZ2lzdHJlIGRlcyBpbmNpZGVudHMuIETDqWNsYXJleiBsZXMgaW5jaWRlbnRzIHF1aSBwcsOpc2VudGVudCB1biByaXNxdWUgZGUgcHLDqWp1ZGljZSBzw6lyaWV1eCDDoCBsYSBDb21taXNzaW9uIGTigJlhY2PDqHMgw6AgbOKAmWluZm9ybWF0aW9uIChldCBhdSBtaW5pc3RyZSwgcG91ciBsZXMgcmVuc2VpZ25lbWVudHMgZGUgc2FudMOpKS4nLCc8c3BhbiBjbGFzcz0ibGF3Ij5RdcOpYmVjPC9zcGFuPk9mZnJleiB2b3MgbG9naWNpZWxzIGV0IHZvcyBkb2N1bWVudHMgcG91ciBsZXMgY2xpZW50cyBlbiBmcmFuw6dhaXMuJ10sCiBwdkZ1dHVyZUg6J1NpIEF0bGFzIHN0b2NrYWl0IHVuIGpvdXIgZGVzIGRvbm7DqWVzJywKIHB2RnV0dXJlOidVbmUgZnV0dXJlIHZlcnNpb24gcXVpIHN5bmNocm9uaXNlcmFpdCBvdSBzdG9ja2VyYWl0IGRlcyByZW5zZWlnbmVtZW50cyBkZSBjbGllbnRzIGZlcmFpdCBk4oCZQXRsYXMgdW4gZm91cm5pc3NldXIgZGUgc2VydmljZXMgcG91ciB2b3VzLiBBdmFudCBjZWxhLCBBdGxhcyBkZXZyYWl0IGNvbmNsdXJlIHVuZSBlbnRlbnRlIMOpY3JpdGUgYXZlYyBjaGFxdWUgdGjDqXJhcGV1dGUsIGjDqWJlcmdlciBsZXMgZG9ubsOpZXMgYXUgQ2FuYWRhIChhdmVjIHVuZSDDqXZhbHVhdGlvbiBkZXMgZmFjdGV1cnMgcmVsYXRpZnMgw6AgbGEgdmllIHByaXbDqWUgcG91ciB0b3V0IGjDqWJlcmdlbWVudCBob3JzIGR1IFF1w6liZWMpLCB0ZW5pciBkZXMgam91cm5hdXggZOKAmWFjY8Oocywgdm91cyBhdmlzZXIgZW4gY2FzIGTigJlhdHRlaW50ZSBldCBwdWJsaWVyIHVuZSBkZXNjcmlwdGlvbiBkZSBzZXMgbWVzdXJlcyBkZSBzw6ljdXJpdMOpLicsCiBwdkZpbmU6J1LDqXN1bcOpIGVuIGxhbmdhZ2UgY2xhaXIgZW4gZGF0ZSBkZSBub3ZlbWJyZSAyMDI2LCBwYXMgdW4gYXZpcyBqdXJpZGlxdWUuIENvbmZpcm1leiB2b3Mgb2JsaWdhdGlvbnMgYXVwcsOocyBkZSB2b3RyZSBvcmRyZSBwcm9mZXNzaW9ubmVsIGV0IGTigJl1biBhdm9jYXQgc3DDqWNpYWxpc8OpIGVuIHByb3RlY3Rpb24gZGUgbGEgdmllIHByaXbDqWUuJwp9KTsKUy5lbi5zZWU9WydUaGVpciBuZXh0IHNlc3Npb24gYW5kIGEgc2hvcnQgbWVzc2FnZSBmcm9tIHlvdS4nLCdUaGUgcHJhY3RpY2UgeW91IGFzc2lnbmVkIHRoaXMgd2Vlaywgd2l0aCBhIGxpbmsgc3RyYWlnaHQgaW50byBlYWNoIHRvb2wuJywnQSBxdWljayBjaGVjay1pbiwgYW5kIHRoZSBtb29kIGFuZCBhbnhpZXR5IGNoZWNrcyB3aGVuIHRoZXkgYXJlIGR1ZS4nLCdBIHNhZmV0eSBwbGFuIHRoZXkgYnVpbGQgd2l0aCB5b3UsIG9uZSB0YXAgZnJvbSB0aGUgY3Jpc2lzIGxpbmUuJywnQSBzbGVlcCBkaWFyeSB3aXRoIGEgc2ltcGxlIHdlZWtseSBjaGFydC4nLCdBIGxpc3Qgb2YgdGhpbmdzIHRvIGJyaW5nIHVwIG5leHQgc2Vzc2lvbiwgd2hpY2ggdGhleSBjYW4gYWRkIHRvIHRoZWlyIHJlcG9ydC4nLCdBIHByaXZhdGUgam91cm5hbCB0aGF0IG5ldmVyIGxlYXZlcyB0aGVpciBwaG9uZS4nLCdSZW1pbmRlcnMsIGxhcmdlciB0ZXh0IGFuZCBoaWdoIGNvbnRyYXN0IGlmIHRoZXkgbmVlZCB0aGVtLicsJ1RoZWlyIHByb2dyZXNzIGluIHBsYWluLCBraW5kIGxhbmd1YWdlLCBvbmx5IGFmdGVyIHlvdSBjaG9vc2UgdG8gc2hhcmUgaXQuJywnTmV2ZXIgeW91ciBwcml2YXRlIG5vdGVzLCBhbmQgYWx3YXlzIHRoZSA5ODggY3Jpc2lzIGxpbmUuJ107ClMuZnIuc2VlPVsnTGV1ciBwcm9jaGFpbmUgc8OpYW5jZSBldCB1biBjb3VydCBtZXNzYWdlIGRlIHZvdHJlIHBhcnQuJywnTGEgcHJhdGlxdWUgYXNzaWduw6llIHBvdXIgbGEgc2VtYWluZSwgYXZlYyB1biBsaWVuIGRpcmVjdCB2ZXJzIGNoYXF1ZSBvdXRpbC4nLCdVbiBiaWxhbiByYXBpZGUsIGV0IGxlcyBiaWxhbnMgZGUgbOKAmWh1bWV1ciBldCBkZSBs4oCZYW54acOpdMOpIHF1YW5kIGlscyBzb250IGR1cy4nLCdVbiBwbGFuIGRlIHPDqWN1cml0w6kgcHLDqXBhcsOpIGF2ZWMgdm91cywgw6AgdW4gZ2VzdGUgZGUgbGEgbGlnbmUgZGUgY3Jpc2UuJywnVW4gam91cm5hbCBkdSBzb21tZWlsIGF2ZWMgdW4gZ3JhcGhpcXVlIGhlYmRvbWFkYWlyZSBzaW1wbGUuJywnVW5lIGxpc3RlIGRlIHN1amV0cyDDoCBhYm9yZGVyIMOgIGxhIHByb2NoYWluZSBzw6lhbmNlLCBxdeKAmWlscyBwZXV2ZW50IGFqb3V0ZXIgw6AgbGV1ciByYXBwb3J0LicsJ1VuIGpvdXJuYWwgcHJpdsOpIHF1aSBuZSBxdWl0dGUgamFtYWlzIGxldXIgdMOpbMOpcGhvbmUuJywnRGVzIHJhcHBlbHMsIHVuIHRleHRlIHBsdXMgZ3JhbmQgZXQgdW4gY29udHJhc3RlIMOpbGV2w6kgYXUgYmVzb2luLicsJ0xldXJzIHByb2dyw6hzIGVuIG1vdHMgc2ltcGxlcyBldCBiaWVudmVpbGxhbnRzLCBzZXVsZW1lbnQgYXByw6hzIHF1ZSB2b3VzIGNob2lzaXNzZXogZGUgbGVzIHBhcnRhZ2VyLicsJ0phbWFpcyB2b3Mgbm90ZXMgcHJpdsOpZXMsIGV0IHRvdWpvdXJzIGxhIGxpZ25lIGRlIGNyaXNlIDk4OC4nXTsKCi8qIC0tLS0tLS0tLS0gUXVlc3Rpb25uYWlyZXMgLS0tLS0tLS0tLSAqLwpjb25zdCBRWj17CiBwaHE6e21heDoyNyxuOjkscTp7ZW46WydMaXR0bGUgaW50ZXJlc3Qgb3IgcGxlYXN1cmUgaW4gZG9pbmcgdGhpbmdzJywnRmVlbGluZyBkb3duLCBkZXByZXNzZWQsIG9yIGhvcGVsZXNzJywnVHJvdWJsZSBmYWxsaW5nIG9yIHN0YXlpbmcgYXNsZWVwLCBvciBzbGVlcGluZyB0b28gbXVjaCcsJ0ZlZWxpbmcgdGlyZWQgb3IgaGF2aW5nIGxpdHRsZSBlbmVyZ3knLCdQb29yIGFwcGV0aXRlIG9yIG92ZXJlYXRpbmcnLCdGZWVsaW5nIGJhZCBhYm91dCB5b3Vyc2VsZiwgb3IgdGhhdCB5b3UgYXJlIGEgZmFpbHVyZSBvciBoYXZlIGxldCB5b3Vyc2VsZiBvciB5b3VyIGZhbWlseSBkb3duJywnVHJvdWJsZSBjb25jZW50cmF0aW5nIG9uIHRoaW5ncywgc3VjaCBhcyByZWFkaW5nIG9yIHdhdGNoaW5nIFRWJywnTW92aW5nIG9yIHNwZWFraW5nIHNsb3dseSwgb3IgYmVpbmcgZmlkZ2V0eSBvciByZXN0bGVzcycsJ1Rob3VnaHRzIHRoYXQgeW91IHdvdWxkIGJlIGJldHRlciBvZmYgZGVhZCwgb3Igb2YgaHVydGluZyB5b3Vyc2VsZiddLAogICBmcjpbIlBldSBkJ2ludMOpcsOqdCBvdSBkZSBwbGFpc2lyIMOgIGZhaXJlIGxlcyBjaG9zZXMiLCLDinRyZSB0cmlzdGUsIGTDqXByaW3DqShlKSBvdSBkw6lzZXNww6lyw6koZSkiLCJEaWZmaWN1bHTDqSDDoCBzJ2VuZG9ybWlyIG91IMOgIHJlc3RlciBlbmRvcm1pKGUpLCBvdSBkb3JtaXIgdHJvcCIsIlNlIHNlbnRpciBmYXRpZ3XDqShlKSBvdSBtYW5xdWVyIGQnw6luZXJnaWUiLCJBdm9pciBwZXUgZCdhcHDDqXRpdCBvdSBtYW5nZXIgdHJvcCIsIkF2b2lyIHVuZSBtYXV2YWlzZSBvcGluaW9uIGRlIHNvaS1tw6ptZSwgb3UgbGUgc2VudGltZW50IGQnw6p0cmUgdW4gw6ljaGVjIG91IGQnYXZvaXIgZMOpw6d1IHNhIGZhbWlsbGUgb3Ugc29pLW3Dqm1lIiwiQXZvaXIgZHUgbWFsIMOgIHNlIGNvbmNlbnRyZXIsIHBhciBleGVtcGxlIHBvdXIgbGlyZSBvdSByZWdhcmRlciBsYSB0w6lsw6l2aXNpb24iLCJCb3VnZXIgb3UgcGFybGVyIHNpIGxlbnRlbWVudCBxdWUgbGVzIGF1dHJlcyBhdXJhaWVudCBwdSBsZSByZW1hcnF1ZXIsIG91IGF1IGNvbnRyYWlyZSDDqnRyZSBzaSBhZ2l0w6koZSkgcXVlIHZvdXMgYXZpZXogZHUgbWFsIMOgIHRlbmlyIGVuIHBsYWNlIiwiUGVuc2VyIHF1J2lsIHZhdWRyYWl0IG1pZXV4IG1vdXJpciBvdSBlbnZpc2FnZXIgZGUgdm91cyBmYWlyZSBkdSBtYWwiXX0sCiAgIGJhbmRzOltbNCwnck1pbiddLFs5LCdyTWlsZCddLFsxNCwnck1vZCddLFsxOSwnck1vZFNldiddLFsyNywnclNldiddXX0sCiBnYWQ6e21heDoyMSxuOjcscTp7ZW46WydGZWVsaW5nIG5lcnZvdXMsIGFueGlvdXMsIG9yIG9uIGVkZ2UnLCdOb3QgYmVpbmcgYWJsZSB0byBzdG9wIG9yIGNvbnRyb2wgd29ycnlpbmcnLCdXb3JyeWluZyB0b28gbXVjaCBhYm91dCBkaWZmZXJlbnQgdGhpbmdzJywnVHJvdWJsZSByZWxheGluZycsJ0JlaW5nIHNvIHJlc3RsZXNzIHRoYXQgaXQgaXMgaGFyZCB0byBzaXQgc3RpbGwnLCdCZWNvbWluZyBlYXNpbHkgYW5ub3llZCBvciBpcnJpdGFibGUnLCdGZWVsaW5nIGFmcmFpZCwgYXMgaWYgc29tZXRoaW5nIGF3ZnVsIG1pZ2h0IGhhcHBlbiddLAogICBmcjpbIlNlIHNlbnRpciBuZXJ2ZXV4KHNlKSwgYW54aWV1eChzZSkgb3UgdGVuZHUoZSkiLCLDinRyZSBpbmNhcGFibGUgZCdhcnLDqnRlciBkZSBzJ2lucXVpw6l0ZXIgb3UgZGUgY29udHLDtGxlciBzZXMgaW5xdWnDqXR1ZGVzIiwiUydpbnF1acOpdGVyIGV4Y2Vzc2l2ZW1lbnQgw6AgcHJvcG9zIGRlIGRpZmbDqXJlbnRlcyBjaG9zZXMiLCJBdm9pciBkdSBtYWwgw6Agc2UgZMOpdGVuZHJlIiwiw4p0cmUgc2kgYWdpdMOpKGUpIHF1J2lsIGVzdCBkaWZmaWNpbGUgZGUgdGVuaXIgZW4gcGxhY2UiLCJEZXZlbmlyIGZhY2lsZW1lbnQgY29udHJhcmnDqShlKSBvdSBpcnJpdGFibGUiLCJBdm9pciBwZXVyIHF1ZSBxdWVscXVlIGNob3NlIGRlIHRlcnJpYmxlIHB1aXNzZSBhcnJpdmVyIl19LAogICBiYW5kczpbWzQsJ3JNaW4nXSxbOSwnck1pbGQnXSxbMTQsJ3JNb2QnXSxbMjEsJ3JTZXYnXV19Cn07CmNvbnN0IGJhbmQ9KHcscyk9PnQoUVpbd10uYmFuZHMuZmluZChiPT5zPD1iWzBdKVsxXSk7CgovKiAtLS0tLS0tLS0tIFRvb2xzIGFuZCB0aW1pbmcgLS0tLS0tLS0tLSAqLwpjb25zdCBUT09MUz0naHR0cHM6Ly90aGVyYXBldXRpY2F0bGFzLmNvbS90b29scy8jJzsKY29uc3QgVEw9e2dyb3VuZGluZzp7ZW46J0dyb3VuZGluZyBhbmQgYnJlYXRoaW5nJyxmcjonQW5jcmFnZSBldCByZXNwaXJhdGlvbid9LHRob3VnaHRzOntlbjonVGhvdWdodCByZWNvcmQnLGZyOidSZWdpc3RyZSBkZXMgcGVuc8OpZXMnfSx3b3JyeTp7ZW46J1dvcnJ5IHRpbWUnLGZyOidNb21lbnQgZOKAmWlucXVpw6l0dWRlJ30sYnJhdmU6e2VuOidCcmF2ZSBzdGVwcycsZnI6J1BldGl0cyBwYXMgY291cmFnZXV4J30sc2xlZXA6e2VuOidTbGVlcCBkaWFyeScsZnI6J0pvdXJuYWwgZHUgc29tbWVpbCd9LHZhbHVlczp7ZW46J1ZhbHVlcyBzb3J0JyxmcjonVHJpIGRlcyB2YWxldXJzJ30sY2FsbTp7ZW46J0NhbG0gcGxhbicsZnI6J1BsYW4gZGUgY2FsbWUnfSxwcmVwOntlbjonU2Vzc2lvbiBwcmVwJyxmcjonUHLDqXBhcmVyIG1hIHPDqWFuY2UnfSxzYWZldHk6e2VuOidNeSBzYWZldHkgcGxhbicsZnI6J01vbiBwbGFuIGRlIHPDqWN1cml0w6knfSxjaGVja2luOntlbjonV2Vla2x5IGNoZWNrLWluJyxmcjonQmlsYW4gaGViZG9tYWRhaXJlJ319Owpjb25zdCBQTEFOX1RPT0xTPVsnZ3JvdW5kaW5nJywndGhvdWdodHMnLCd3b3JyeScsJ2JyYXZlJywnc2xlZXAnLCd2YWx1ZXMnLCdjYWxtJywncHJlcCddOwpjb25zdCBXSEVOPXtkYXk6e2VuOidFYWNoIGRheScsZnI6J0NoYXF1ZSBqb3VyJ30sbW9ybmluZzp7ZW46J0VhY2ggbW9ybmluZycsZnI6J0NoYXF1ZSBtYXRpbid9LGV2ZW5pbmc6e2VuOidFYWNoIGV2ZW5pbmcnLGZyOidDaGFxdWUgc29pcid9LHR3aWNlOntlbjonVHdpY2UgdGhpcyB3ZWVrJyxmcjonRGV1eCBmb2lzIGNldHRlIHNlbWFpbmUnfSxiZWZvcmU6e2VuOidCZWZvcmUgbmV4dCBzZXNzaW9uJyxmcjonQXZhbnQgbGEgcHJvY2hhaW5lIHPDqWFuY2UnfX07CmNvbnN0IHdoZW5UZXh0PXRrPT50ay53az90cihXSEVOW3RrLndrXSk6dHIodGsud2hlbik7CmNvbnN0IHRhc2tOYW1lPXRrPT50cih0ay5sYWJlbCl8fHRyKFRMW3RrLnRvb2xdKTsKCi8qIC0tLS0tLS0tLS0gRmljdGlvbmFsIGNsaWVudHMgLS0tLS0tLS0tLSAqLwpjb25zdCBFPShlbixmcik9Pih7ZW4sZnJ9KTsKY29uc3QgQz1bCiB7aWQ6J0EtMTI0NycsbmFtZTonSm9yZGFuIFIuJyxmaXJzdDonSm9yZGFuJyxhZ2U6RSgnQWR1bHQnLCdBZHVsdGUnKSxmb2N1czpFKCdBbnhpZXR5IGFuZCB3b3JrIHN0cmVzcycsJ0FueGnDqXTDqSBldCBzdHJlc3MgYXUgdHJhdmFpbCcpLHN0YXJ0OkUoJ0p1bCA2JywnNiBqdWlsLicpLHNlc3Npb25zOjEyLG5leHQ6RSgnVGh1LCBPY3QgMjIgwrcgNDowMCBwbScsJ2pldS4gMjIgb2N0LiDCtyAxNiBoJyksc3RhdHVzOidyZWFkeScsZHVlOkUoJ1RodXJzZGF5JywnamV1ZGknKSwKICBwaHE6WzE0LDEzLDEzLDEyLDExLDExLDksMTAsOCw3LDcsNl0sZ2FkOlsxNSwxNSwxNCwxMywxMiwxMCwxMCwxMSw5LDgsNyw3XSxtb29kOlszLDQsNCw0LDUsNSw2LDUsNiw3LDcsN10sCiAgZXZlbnRzOns2OkUoJ1N0YXJ0ZWQgbmV3IHByb2plY3QgYXQgd29yaycsJ05vdXZlYXUgcHJvamV0IGF1IHRyYXZhaWwnKSw4OkUoJ0ZhbWlseSB2aXNpdCcsJ1Zpc2l0ZSBkZSBsYSBmYW1pbGxlJyl9LAogIHN0b3J5OkUoJ092ZXIgdGhlIGxhc3QgMTIgd2Vla3MsIEpvcmRhbiAoZmljdGlvbmFsIGNoYXJhY3RlcikgaGFzIG1vdmVkIGZyb20gZmVlbGluZyBvbiBlZGdlIG1vc3QgZGF5cyB0byBoYXZpbmcgbW9yZSBjYWxtIGRheXMgdGhhbiBoYXJkIG9uZXMuIENoZWNrLWlucyBzaG93IHN0ZWFkaWVyIHNsZWVwIHNpbmNlIHdlZWsgNiwgYW5kIGEgYnJpZWYgcmlzZSBpbiB3b3JyeSBkdXJpbmcgYSBmYW1pbHkgdmlzaXQgaW4gd2VlayA4LCB3aGljaCBzZXR0bGVkIHdpdGhpbiBhIHdlZWsuIEpvcmRhbiBoYXMgY29tcGxldGVkIHNpeCB0aG91Z2h0IHJlY29yZHMgYW5kIGNsaW1iZWQgdGhyZWUgc3RlcHMgb24gdGhlICJzcGVha2luZyB1cCBhdCB3b3JrIiBsYWRkZXIuJywKICAgIkF1IGNvdXJzIGRlcyAxMiBkZXJuacOocmVzIHNlbWFpbmVzLCBKb3JkYW4gKHBlcnNvbm5hZ2UgZmljdGlmKSBlc3QgcGFzc8OpIGQndW4gw6l0YXQgZGUgdGVuc2lvbiBwcmVzcXVlIHF1b3RpZGllbiDDoCBwbHVzIGRlIGpvdXJuw6llcyBjYWxtZXMgcXVlIGRlIGpvdXJuw6llcyBkaWZmaWNpbGVzLiBMZXMgYmlsYW5zIG1vbnRyZW50IHVuIHNvbW1laWwgcGx1cyBzdGFibGUgZGVwdWlzIGxhIHNlbWFpbmUgNiwgZXQgdW5lIGJyw6h2ZSBoYXVzc2UgZGVzIGlucXVpw6l0dWRlcyBwZW5kYW50IHVuZSB2aXNpdGUgZmFtaWxpYWxlIMOgIGxhIHNlbWFpbmUgOCwgcXVpIHMnZXN0IHLDqXNvcmLDqWUgZW4gdW5lIHNlbWFpbmUuIEpvcmRhbiBhIHJlbXBsaSBzaXggcmVnaXN0cmVzIGRlcyBwZW5zw6llcyBldCBmcmFuY2hpIHRyb2lzIMOpY2hlbG9ucyBkZSBzb24gw6ljaGVsbGUgwqtcdTAwQTBwcmVuZHJlIGxhIHBhcm9sZSBhdSB0cmF2YWlsXHUwMEEwwrsuIiksCiAgY3N0b3J5OkUoIllvdSd2ZSBiZWVuIHNob3dpbmcgdXAgZm9yIHlvdXJzZWxmLiBZb3VyIGNoZWNrLWlucyBzaG93IG1vcmUgY2FsbSB3ZWVrcyBsYXRlbHksIGFuZCBiZXR0ZXIgc2xlZXAgc2luY2UgbWlkLUF1Z3VzdC4gV2VlayA4IHdhcyBoYXJkZXIsIGFuZCB5b3UgY2FtZSBiYWNrIGZyb20gaXQuIFlvdSd2ZSBwcmFjdGlzZWQgc2l4IHRob3VnaHQgcmVjb3JkcyBhbmQgdGFrZW4gdGhyZWUgYnJhdmUgc3RlcHMgYXQgd29yay4iLAogICAiVm91cyBwcmVuZXogc29pbiBkZSB2b3VzLCBzZW1haW5lIGFwcsOocyBzZW1haW5lLiBWb3MgYmlsYW5zIG1vbnRyZW50IHBsdXMgZGUgc2VtYWluZXMgY2FsbWVzIGNlcyBkZXJuaWVycyB0ZW1wcywgZXQgdW4gbWVpbGxldXIgc29tbWVpbCBkZXB1aXMgbGEgbWktYW\/Du3QuIExhIHNlbWFpbmUgOCBhIMOpdMOpIHBsdXMgZGlmZmljaWxlLCBldCB2b3VzIGF2ZXogcmVib25kaS4gVm91cyBhdmV6IGZhaXQgc2l4IHJlZ2lzdHJlcyBkZXMgcGVuc8OpZXMgZXQgZnJhbmNoaSB0cm9pcyBwZXRpdHMgcGFzIGNvdXJhZ2V1eCBhdSB0cmF2YWlsLiIpLAogIGdvYWxzOltbRSgnU2xlZXAgNyBob3VycyBtb3N0IG5pZ2h0cycsJ0Rvcm1pciA3IGhldXJlcyBsYSBwbHVwYXJ0IGRlcyBudWl0cycpLDcwLEUoJzUgb2YgNyBuaWdodHMgbGFzdCB3ZWVrJywnNSBudWl0cyBzdXIgNyBsYSBzZW1haW5lIGRlcm5pw6hyZScpXSxbRSgnU3BlYWsgdXAgb25jZSBpbiB0ZWFtIG1lZXRpbmdzJywnUHJlbmRyZSBsYSBwYXJvbGUgdW5lIGZvaXMgcGFyIHLDqXVuaW9uIGTigJnDqXF1aXBlJyksNjAsRSgnMyBvZiA1IGxhZGRlciBzdGVwcyBkb25lJywnMyDDqWNoZWxvbnMgc3VyIDUgZnJhbmNoaXMnKV0sW0UoJ05vdGljZSB3b3JyeSBzcGlyYWxzIGVhcmxpZXInLCdSZXDDqXJlciBwbHVzIHTDtHQgbGVzIHNwaXJhbGVzIGTigJlpbnF1acOpdHVkZScpLDU1LEUoJ1VzaW5nIHdvcnJ5IHRpbWUgNCBkYXlzIGEgd2VlaycsJ01vbWVudCBk4oCZaW5xdWnDqXR1ZGUgNCBqb3VycyBwYXIgc2VtYWluZScpXV0sCiAgcHJhYzpbW0UoJ1Rob3VnaHQgcmVjb3JkcycsJ1JlZ2lzdHJlcyBkZXMgcGVuc8OpZXMnKSwnNiddLFtFKCdCb3ggYnJlYXRoaW5nJywnUmVzcGlyYXRpb24gY2FycsOpZScpLCcxNCddLFtFKCdCcmF2ZSBzdGVwcycsJ1BldGl0cyBwYXMgY291cmFnZXV4JyksJzMgLyA1J10sW0UoJ0NoZWNrLWlucycsJ0JpbGFucycpLCcxMiAvIDEyJ11dLAogIHNlc3M6W1tFKCdPY3QgMTUnLCcxNSBvY3QuJyksRSgnUmV2aWV3ZWQgYnJhdmUgc3RlcHM7IHBsYW5uZWQgc3RlcCA0IChzaGFyaW5nIGFuIGlkZWEpLicsJ1JldnVlIGRlcyBwZXRpdHMgcGFzOyDDqXRhcGUgNCBwbGFuaWZpw6llIChwYXJ0YWdlciB1bmUgaWTDqWUpLicpLEUoJ0NCVCcsJ1RDQycpXSxbRSgnT2N0IDgnLCc4IG9jdC4nKSxFKCdXb3JyeSB0aW1lIGludHJvZHVjZWQ7IHNvcnRpbmcgYWN0IC8gbGV0IGdvLicsJ01vbWVudCBk4oCZaW5xdWnDqXR1ZGUgcHLDqXNlbnTDqTsgdHJpZXIgOiBhZ2lyIC8gbGFpc3NlciBhbGxlci4nKSxFKCdTa2lsbHMnLCdIYWJpbGV0w6lzJyldLFtFKCdTZXAgMjQnLCcyNCBzZXB0LicpLEUoJ1dlZWsgOCByaXNlIGRpc2N1c3NlZDsgZmFtaWx5IHN0cmVzcywgY29waW5nIHBsYW4gdXBkYXRlZC4nLCdIYXVzc2UgZGUgbGEgc2VtYWluZSA4IGRpc2N1dMOpZTsgc3RyZXNzIGZhbWlsaWFsLCBwbGFuIGTigJlhZGFwdGF0aW9uIG1pcyDDoCBqb3VyLicpLEUoJ0NoZWNrLWluJywnQmlsYW4nKV0sW0UoJ0F1ZyAyNycsJzI3IGFvw7t0JyksRSgnU2xlZXAgcm91dGluZSBzZXQ7IHNjcmVlbnMgb2ZmIGJ5IDEwIHBtLicsJ1JvdXRpbmUgZGUgc29tbWVpbCDDqXRhYmxpZTsgw6ljcmFucyDDqXRlaW50cyDDoCAyMiBoLicpLEUoJ1NsZWVwJywnU29tbWVpbCcpXSxbRSgnSnVsIDYnLCc2IGp1aWwuJyksRSgnSW50YWtlLiBHb2FscyBhZ3JlZWQ7IGNvbnNlbnQgYW5kIHByaXZhY3kgcmV2aWV3ZWQuJywnQWNjdWVpbC4gT2JqZWN0aWZzIGNvbnZlbnVzOyBjb25zZW50ZW1lbnQgZXQgY29uZmlkZW50aWFsaXTDqSByZXZ1cy4nKSxFKCdJbnRha2UnLCdBY2N1ZWlsJyldXSwKICB0YXNrczpbe3Rvb2w6J3Rob3VnaHRzJyxsYWJlbDpudWxsLHdoZW46RSgnVHdvIHRoaXMgd2VlaycsJ0RldXggY2V0dGUgc2VtYWluZScpLGRvbmU6dHJ1ZX0se3Rvb2w6J2JyYXZlJyxsYWJlbDpFKCdCcmF2ZSBzdGVwIDQ6IHNoYXJlIG9uZSBpZGVhIGluIGEgbWVldGluZycsJ1BldGl0IHBhcyA0IDogcGFydGFnZXIgdW5lIGlkw6llIGVuIHLDqXVuaW9uJyksd2hlbjpFKCdCZWZvcmUgVGh1cnNkYXknLCdBdmFudCBqZXVkaScpLGRvbmU6ZmFsc2V9LHt0b29sOid3b3JyeScsbGFiZWw6RSgnV29ycnkgdGltZSwgMTUgbWludXRlcycsJ01vbWVudCBk4oCZaW5xdWnDqXR1ZGUsIDE1IG1pbnV0ZXMnKSx3azonZXZlbmluZycsZG9uZTpmYWxzZX1dLAogIG1zZzpFKCdHcmVhdCB3b3JrIG9uIHN0ZXAgMy4gV2hlbiB5b3Ugc2hhcmUgeW91ciBpZGVhIHRoaXMgd2Vlaywgbm90aWNlIHdoYXQgeW91ciB3b3JyeSBwcmVkaWN0cywgYW5kIHdoYXQgYWN0dWFsbHkgaGFwcGVucy4nLCdCcmF2byBwb3VyIGzigJnDqXRhcGUgMy4gUXVhbmQgdm91cyBwYXJ0YWdlcmV6IHZvdHJlIGlkw6llIGNldHRlIHNlbWFpbmUsIHJlbWFycXVleiBjZSBxdWUgdm90cmUgaW5xdWnDqXR1ZGUgcHLDqWRpdCwgZXQgY2UgcXVpIHNlIHBhc3NlIHZyYWltZW50LicpLAogIG5vdGU6RSgnUHJpdmF0ZSBub3RlOiBjb25zaWRlciBzcGFjaW5nIHNlc3Npb25zIHRvIGV2ZXJ5IHR3byB3ZWVrcyBhZnRlciB3ZWVrIDE2IGlmIGdhaW5zIGhvbGQuJywnTm90ZSBwcml2w6llIDogZW52aXNhZ2VyIGTigJllc3BhY2VyIGxlcyBzw6lhbmNlcyBhdXggZGV1eCBzZW1haW5lcyBhcHLDqHMgbGEgc2VtYWluZSAxNiBzaSBsZXMgZ2FpbnMgc2UgbWFpbnRpZW5uZW50LicpLAogIHByZXA6W0UoJ1RoZSBwcmVzZW50YXRpb24gb24gRnJpZGF5JywnTGEgcHLDqXNlbnRhdGlvbiBkZSB2ZW5kcmVkaScpLEUoJ1NsZWVwIHdhcyB3b3JzZSBvbiBTdW5kYXkgbmlnaHQnLCdNb24gc29tbWVpbCBhIMOpdMOpIG1vaW5zIGJvbiBkaW1hbmNoZSBzb2lyJyldLAogIGpvdXJuYWw6W3tkOkUoJ09jdCAxNycsJzE3IG9jdC4nKSx0eHQ6RSgnU2hhcmVkIGEgc21hbGwgaWRlYSBpbiBzdGFuZHVwLiBIZWFydCByYWNpbmcsIGJ1dCBub2JvZHkgcmVhY3RlZCBiYWRseS4nLCdK4oCZYWkgcGFydGFnw6kgdW5lIHBldGl0ZSBpZMOpZSDDoCBsYSByw6l1bmlvbiBkdSBtYXRpbi4gTGUgY8WTdXIgYmF0dGFpdCB2aXRlLCBtYWlzIHBlcnNvbm5lIG7igJlhIG1hbCByw6lhZ2kuJyl9LHtkOkUoJ09jdCAxMycsJzEzIG9jdC4nKSx0eHQ6RSgnV29rZSBhdCAzIGFtIHdvcnJ5aW5nIGFib3V0IHRoZSBkZWFkbGluZS4gU2F2ZWQgaXQgZm9yIHdvcnJ5IHRpbWUgdGhlIG5leHQgZXZlbmluZyBpbnN0ZWFkIG9mIHNwaXJhbGxpbmcuJywnUsOpdmVpbGzDqSDDoCAzIGgsIGlucXVpZXQgcG91ciBs4oCZw6ljaMOpYW5jZS4gSmUgbOKAmWFpIGdhcmTDqSBwb3VyIGxlIG1vbWVudCBk4oCZaW5xdWnDqXR1ZGUgZHUgbGVuZGVtYWluIHNvaXIgYXUgbGlldSBkZSB0b3VybmVyIGVuIHJvbmQuJyl9XX0sCiB7aWQ6J0ItMDgzMicsbmFtZTonUHJpeWEgUy4nLGZpcnN0OidQcml5YScsYWdlOkUoJ0FkdWx0JywnQWR1bHRlJyksZm9jdXM6RSgnTG93IG1vb2QgYWZ0ZXIgYSBtb3ZlJywnSHVtZXVyIGJhc3NlIGFwcsOocyB1biBkw6ltw6luYWdlbWVudCcpLHN0YXJ0OkUoJ0F1ZyAzJywnMyBhb8O7dCcpLHNlc3Npb25zOjEwLG5leHQ6RSgnRnJpLCBPY3QgMjMgwrcgMTA6MDAgYW0nLCd2ZW4uIDIzIG9jdC4gwrcgMTAgaCcpLHN0YXR1czoncmVhZHknLGR1ZTpFKCdGcmlkYXknLCd2ZW5kcmVkaScpLAogIHBocTpbMTgsMTgsMTcsMTcsMTYsMTQsMTUsMTMsMTIsMTJdLGdhZDpbOSw5LDgsOSw4LDcsNyw2LDYsNl0sbW9vZDpbMiwzLDMsMyw0LDQsNCw1LDUsNl0sZXZlbnRzOns1OkUoJ0pvaW5lZCBhIHdhbGtpbmcgZ3JvdXAnLCdT4oCZZXN0IGpvaW50ZSDDoCB1biBncm91cGUgZGUgbWFyY2hlJyl9LAogIHN0b3J5OkUoJ0ZvciBQcml5YSAoZmljdGlvbmFsIGNoYXJhY3RlciksIG1vb2Qgc2NvcmVzIGhhdmUgZWFzZWQgZ3JhZHVhbGx5IG92ZXIgdGVuIHdlZWtzLiBUaGUgY2xlYXJlc3QgY2hhbmdlIGZvbGxvd2VkIHdlZWsgNSwgd2hlbiBzaGUgam9pbmVkIGEgbG9jYWwgd2Fsa2luZyBncm91cCwgd2hpY2ggbWF0Y2hlcyBoZXIgb3duIGNoZWNrLWluIG5vdGVzLiBMb3cgZW5lcmd5IGluIHRoZSBtb3JuaW5ncyByZW1haW5zIGhlciBtYWluIGNvbmNlcm4uJywKICAgIlBvdXIgUHJpeWEgKHBlcnNvbm5hZ2UgZmljdGlmKSwgbGVzIHNjb3JlcyBkJ2h1bWV1ciBzZSBzb250IGFsbMOpZ8OpcyBncmFkdWVsbGVtZW50IGVuIGRpeCBzZW1haW5lcy4gTGUgY2hhbmdlbWVudCBsZSBwbHVzIG5ldCBhIHN1aXZpIGxhIHNlbWFpbmUgNSwgcXVhbmQgZWxsZSBzJ2VzdCBqb2ludGUgw6AgdW4gZ3JvdXBlIGRlIG1hcmNoZSBkZSBzb24gcXVhcnRpZXIsIGNlIHF1aSBjb25jb3JkZSBhdmVjIHNlcyBwcm9wcmVzIG5vdGVzIGRlIGJpbGFuLiBMZSBtYW5xdWUgZCfDqW5lcmdpZSBsZSBtYXRpbiByZXN0ZSBzYSBwcmluY2lwYWxlIHByw6lvY2N1cGF0aW9uLiIpLAogIGNzdG9yeTpFKCJZb3VyIHdlZWtzIGhhdmUgYmVlbiBnZXR0aW5nIGEgbGl0dGxlIGxpZ2h0ZXIuIEpvaW5pbmcgdGhlIHdhbGtpbmcgZ3JvdXAgaW4gd2VlayA1IHNlZW1zIHRvIGhhdmUgbWF0dGVyZWQ7IHlvdSBtZW50aW9uZWQgaXQgaW4gdGhyZWUgY2hlY2staW5zLiBNb3JuaW5ncyBhcmUgc3RpbGwgaGFyZCwgYW5kIHRoYXQncyB3aGF0IHdlJ2xsIGtlZXAgd29ya2luZyBvbi4iLAogICAiVm9zIHNlbWFpbmVzIGRldmllbm5lbnQgdW4gcGV1IHBsdXMgbMOpZ8OocmVzLiBWb3VzIGpvaW5kcmUgYXUgZ3JvdXBlIGRlIG1hcmNoZSDDoCBsYSBzZW1haW5lIDUgc2VtYmxlIGF2b2lyIGNvbXB0w6k7IHZvdXMgbCdhdmV6IG1lbnRpb25uw6kgZGFucyB0cm9pcyBiaWxhbnMuIExlcyBtYXRpbnMgcmVzdGVudCBkaWZmaWNpbGVzLCBldCBjJ2VzdCBsw6AtZGVzc3VzIHF1ZSBub3VzIGNvbnRpbnVlcm9ucyBkZSB0cmF2YWlsbGVyLiIpLAogIGdvYWxzOltbRSgnTGVhdmUgdGhlIGhvdXNlIGRhaWx5JywnU29ydGlyIGRlIGxhIG1haXNvbiBjaGFxdWUgam91cicpLDc1LEUoJzYgb2YgNyBkYXlzIGxhc3Qgd2VlaycsJzYgam91cnMgc3VyIDcgbGEgc2VtYWluZSBkZXJuacOocmUnKV0sW0UoJ1JlY29ubmVjdCB3aXRoIHR3byBwZW9wbGUnLCdSZW5vdWVyIGF2ZWMgZGV1eCBwZXJzb25uZXMnKSw1MCxFKCcxIG9mIDIgc28gZmFyJywnMSBzdXIgMiBqdXNxdeKAmWljaScpXSxbRSgnR2VudGxlciBtb3JuaW5ncycsJ0RlcyBtYXRpbnMgcGx1cyBkb3V4JyksMzAsRSgnVHJ5aW5nIHRoZSBuZXcgcm91dGluZScsJ0Vzc2FpIGRlIGxhIG5vdXZlbGxlIHJvdXRpbmUnKV1dLAogIHByYWM6W1tFKCdWYWx1ZXMgc29ydCcsJ1RyaSBkZXMgdmFsZXVycycpLEUoJ0RvbmUnLCdGYWl0JyldLFtFKCdXYWxrcyBsb2dnZWQnLCdNYXJjaGVzIG5vdMOpZXMnKSwnMjInXSxbRSgnQ2hlY2staW5zJywnQmlsYW5zJyksJzEwIC8gMTAnXSxbRSgnQ2FsbSBwbGFuJywnUGxhbiBkZSBjYWxtZScpLEUoJ1dyaXR0ZW4nLCdSw6lkaWfDqScpXV0sCiAgc2VzczpbW0UoJ09jdCAxNicsJzE2IG9jdC4nKSxFKCdNb3JuaW5nIHJvdXRpbmU7IHZhbHVlczogY29ubmVjdGlvbiBhbmQgbmF0dXJlLicsJ1JvdXRpbmUgZHUgbWF0aW47IHZhbGV1cnMgOiBsaWVuIGV0IG5hdHVyZS4nKSxFKCdWYWx1ZXMnLCdWYWxldXJzJyldLFtFKCdTZXAgMTgnLCcxOCBzZXB0LicpLEUoJ1dhbGtpbmcgZ3JvdXAgY2hlY2staW47IGJlaGF2aW91cmFsIGFjdGl2YXRpb24gcGxhbi4nLCdTdWl2aSBkdSBncm91cGUgZGUgbWFyY2hlOyBwbGFuIGTigJlhY3RpdmF0aW9uIGNvbXBvcnRlbWVudGFsZS4nKSxFKCdCQScsJ0FDJyldLFtFKCdBdWcgMycsJzMgYW\/Du3QnKSxFKCdJbnRha2UuIEdvYWxzIGFncmVlZDsgY29uc2VudCBhbmQgcHJpdmFjeSByZXZpZXdlZC4nLCdBY2N1ZWlsLiBPYmplY3RpZnMgY29udmVudXM7IGNvbnNlbnRlbWVudCBldCBjb25maWRlbnRpYWxpdMOpIHJldnVzLicpLEUoJ0ludGFrZScsJ0FjY3VlaWwnKV1dLAogIHRhc2tzOlt7dG9vbDonY2FsbScsbGFiZWw6RSgnTW9ybmluZyByb3V0aW5lOiB0aHJlZSBzbWFsbCBzdGVwcycsJ1JvdXRpbmUgZHUgbWF0aW4gOiB0cm9pcyBwZXRpdHMgcGFzJyksd2s6J21vcm5pbmcnLGRvbmU6dHJ1ZX0se3Rvb2w6J2NoZWNraW4nLGxhYmVsOkUoJ1dhbGsgd2l0aCB0aGUgZ3JvdXAnLCdNYXJjaGVyIGF2ZWMgbGUgZ3JvdXBlJyksd2s6J3R3aWNlJyxkb25lOnRydWV9LHt0b29sOid2YWx1ZXMnLGxhYmVsOkUoJ1JlYWNoIG91dCB0byBvbmUgcGVyc29uJywnQ29udGFjdGVyIHVuZSBwZXJzb25uZScpLHdoZW46RSgnQnkgRnJpZGF5JywnROKAmWljaSB2ZW5kcmVkaScpLGRvbmU6ZmFsc2V9XSwKICBtc2c6RSgnTW9ybmluZ3MgYXJlIGhhcmQsIHNvIHdlIGtlZXAgdGhlIHJvdXRpbmUgdGlueS4gVGhyZWUgc21hbGwgc3RlcHMgaXMgcGxlbnR5LiBUZWxsIG1lIG9uIEZyaWRheSB3aGF0IG1hZGUgaXQgZWFzaWVyLicsJ0xlcyBtYXRpbnMgc29udCBkaWZmaWNpbGVzLCBhbG9ycyBvbiBnYXJkZSBsYSByb3V0aW5lIHRvdXRlIHBldGl0ZS4gVHJvaXMgcGV0aXRzIHBhcywgY+KAmWVzdCBiaWVuIGFzc2V6LiBEaXRlcy1tb2kgdmVuZHJlZGkgY2UgcXVpIGzigJlhIHJlbmR1ZSBwbHVzIGZhY2lsZS4nKSwKICBub3RlOkUoJ1ByaXZhdGUgbm90ZTogbW9uaXRvciBlbmVyZ3k7IGRpc2N1c3MgZmFtaWx5IGRvY3RvciBmb2xsb3ctdXAgYWJvdXQgc2xlZXAuJywnTm90ZSBwcml2w6llIDogc3VydmVpbGxlciBs4oCZw6luZXJnaWU7IGRpc2N1dGVyIGTigJl1biBzdWl2aSBhdmVjIGxlIG3DqWRlY2luIGRlIGZhbWlsbGUgYXUgc3VqZXQgZHUgc29tbWVpbC4nKSwKICBwcmVwOltFKCdNb3JuaW5ncyB3ZXJlIGVhc2llciBvbiBkYXlzIEkgd2Fsa2VkJywnTGVzIG1hdGlucyDDqXRhaWVudCBwbHVzIGZhY2lsZXMgbGVzIGpvdXJzIG\/DuSBq4oCZYWkgbWFyY2jDqScpLEUoJ1Nob3VsZCBJIHNlZSBteSBmYW1pbHkgZG9jdG9yIGFib3V0IHNsZWVwPycsJ0RldnJhaXMtamUgdm9pciBtb24gbcOpZGVjaW4gZGUgZmFtaWxsZSBwb3VyIGxlIHNvbW1laWw\/JyldLAogIGpvdXJuYWw6W3tkOkUoJ09jdCAxNicsJzE2IG9jdC4nKSx0eHQ6RSgnV2Fsa2VkIGJ5IHRoZSByaXZlciB3aXRoIHRoZSBncm91cC4gRmlyc3QgbW9ybmluZyBpbiBhIHdoaWxlIEkgZGlkbuKAmXQgd2FudCB0byBnbyBiYWNrIHRvIGJlZC4nLCdNYXJjaGUgYXUgYm9yZCBkZSBsYSByaXZpw6hyZSBhdmVjIGxlIGdyb3VwZS4gUHJlbWllciBtYXRpbiBkZXB1aXMgbG9uZ3RlbXBzIG\/DuSBqZSBu4oCZYXZhaXMgcGFzIGVudmllIGRlIHJldG91cm5lciBhdSBsaXQuJyl9XX0sCiB7aWQ6J0MtMzgxMCcsbmFtZTonU2FtIFQuJyxmaXJzdDonU2FtJyxhZ2U6RSgnQWRvbGVzY2VudCcsJ0Fkb2xlc2NlbnQnKSxmb2N1czpFKCdFeGFtIHN0cmVzcycsJ1N0cmVzcyBkZXMgZXhhbWVucycpLHN0YXJ0OkUoJ1NlcCAxNCcsJzE0IHNlcHQuJyksc2Vzc2lvbnM6NSxuZXh0OkUoJ01vbiwgT2N0IDE5IMK3IDU6MDAgcG0nLCdsdW4uIDE5IG9jdC4gwrcgMTcgaCcpLHN0YXR1czonbmV3JyxkdWU6RSgnTW9uZGF5JywnbHVuZGknKSwKICBwaHE6WzgsOCw3LDcsNl0sZ2FkOlsxMywxMywxMiwxMSwxMF0sbW9vZDpbNSw0LDUsNiw2XSxldmVudHM6ezM6RSgnTWlkdGVybSB3ZWVrJywnU2VtYWluZSBkZXMgZXhhbWVucyBkZSBtaS1zZXNzaW9uJyl9LAogIHN0b3J5OkUoJ1NhbSAoZmljdGlvbmFsIGNoYXJhY3RlcikgaXMgZml2ZSB3ZWVrcyBpbi4gV29ycnkgc2NvcmVzIGFyZSBjb21pbmcgZG93biBzbG93bHksIHdpdGggYSBzbWFsbCBidW1wIGFyb3VuZCBtaWR0ZXJtcyBpbiB3ZWVrIDMuIFNhbSB1c2VzIGJveCBicmVhdGhpbmcgYmVmb3JlIHRlc3RzIGFuZCByZXBvcnRzIGl0IGhlbHBzLicsCiAgICJTYW0gKHBlcnNvbm5hZ2UgZmljdGlmKSBlbiBlc3Qgw6AgY2lucSBzZW1haW5lcy4gTGVzIHNjb3JlcyBkJ2lucXVpw6l0dWRlIGRpbWludWVudCBsZW50ZW1lbnQsIGF2ZWMgdW5lIHBldGl0ZSBoYXVzc2UgYXV0b3VyIGRlcyBleGFtZW5zIGRlIG1pLXNlc3Npb24gw6AgbGEgc2VtYWluZSAzLiBTYW0gdXRpbGlzZSBsYSByZXNwaXJhdGlvbiBjYXJyw6llIGF2YW50IGxlcyBleGFtZW5zIGV0IGRpdCBxdWUgw6dhIGwnYWlkZS4iKSwKICBjc3Rvcnk6RSgiRml2ZSB3ZWVrcyBpbiBhbmQgeW91J3JlIGFscmVhZHkgdXNpbmcgYm94IGJyZWF0aGluZyBiZWZvcmUgdGVzdHMuIE1pZHRlcm0gd2VlayB3YXMgdG91Z2gsIGFuZCB5b3VyIHNjb3JlcyBkaXBwZWQgYmFjayBkb3duIGFmdGVyIGl0LiIsCiAgICJDaW5xIHNlbWFpbmVzIGTDqWrDoCwgZXQgdm91cyB1dGlsaXNleiBsYSByZXNwaXJhdGlvbiBjYXJyw6llIGF2YW50IGxlcyBleGFtZW5zLiBMYSBzZW1haW5lIGRlcyBleGFtZW5zIGEgw6l0w6kgZGlmZmljaWxlLCBldCB2b3Mgc2NvcmVzIHNvbnQgcmVkZXNjZW5kdXMgZW5zdWl0ZS4iKSwKICBnb2FsczpbW0UoJ0JyZWF0aGluZyBiZWZvcmUgdGVzdHMnLCdSZXNwaXJlciBhdmFudCBsZXMgZXhhbWVucycpLDgwLEUoJ1VzZWQgYmVmb3JlIDQgb2YgNSB0ZXN0cycsJ1V0aWxpc8OpZSBhdmFudCA0IGV4YW1lbnMgc3VyIDUnKV0sW0UoJ1N0dWR5IHBsYW4gd2l0aCBicmVha3MnLCdQbGFuIGTigJnDqXR1ZGUgYXZlYyBwYXVzZXMnKSw0MCxFKCcyIHdlZWtzIG9mIDQnLCcyIHNlbWFpbmVzIHN1ciA0JyldLFtFKCdTbGVlcCBiZWZvcmUgbWlkbmlnaHQnLCdEb3JtaXIgYXZhbnQgbWludWl0JyksMzUsRSgnV29ya2luZyBvbiBpdCcsJ09uIHkgdHJhdmFpbGxlJyldXSwKICBwcmFjOltbRSgnQm94IGJyZWF0aGluZycsJ1Jlc3BpcmF0aW9uIGNhcnLDqWUnKSwnMTEnXSxbRSgnV29ycnkgdGltZScsJ01vbWVudHMgZOKAmWlucXVpw6l0dWRlJyksJzUnXSxbRSgnQ2hlY2staW5zJywnQmlsYW5zJyksJzUgLyA1J10sW0UoJ0JyYXZlIHN0ZXBzJywnUGV0aXRzIHBhcyBjb3VyYWdldXgnKSwnMSAvIDQnXV0sCiAgc2VzczpbW0UoJ09jdCAxMicsJzEyIG9jdC4nKSxFKCdFeGFtIHBsYW47IGJyZWFrcyBldmVyeSA0NSBtaW51dGVzLicsJ1BsYW4gZOKAmWV4YW1lbnM7IHBhdXNlcyBhdXggNDUgbWludXRlcy4nKSxFKCdTa2lsbHMnLCdIYWJpbGV0w6lzJyldLFtFKCdTZXAgMTQnLCcxNCBzZXB0LicpLEUoJ0ludGFrZSB3aXRoIHBhcmVudCBwcmVzZW50OyBjb25zZW50IHJldmlld2VkLicsJ0FjY3VlaWwgYXZlYyB1biBwYXJlbnQgcHLDqXNlbnQ7IGNvbnNlbnRlbWVudCByZXZ1LicpLEUoJ0ludGFrZScsJ0FjY3VlaWwnKV1dLAogIHRhc2tzOlt7dG9vbDonZ3JvdW5kaW5nJyxsYWJlbDpFKCdCb3ggYnJlYXRoaW5nIGJlZm9yZSBzdHVkeScsJ1Jlc3BpcmF0aW9uIGNhcnLDqWUgYXZhbnQgZOKAmcOpdHVkaWVyJyksd2hlbjpFKCdCZWZvcmUgZWFjaCBzdHVkeSBzZXNzaW9uJywnQXZhbnQgY2hhcXVlIHDDqXJpb2RlIGTigJnDqXR1ZGUnKSxkb25lOnRydWV9LHt0b29sOid3b3JyeScsbGFiZWw6RSgnV29ycnkgdGltZSwgMTAgbWludXRlcycsJ01vbWVudCBk4oCZaW5xdWnDqXR1ZGUsIDEwIG1pbnV0ZXMnKSx3azonZGF5Jyxkb25lOmZhbHNlfSx7dG9vbDoncHJlcCcsbGFiZWw6bnVsbCx3aGVuOkUoJ0JlZm9yZSBNb25kYXknLCdBdmFudCBsdW5kaScpLGRvbmU6ZmFsc2V9XSwKICBtc2c6RSgnWW91IG5vdGljZWQgYnJlYXRoaW5nIGhlbHBzIGJlZm9yZSB0ZXN0cy4gS2VlcCBpdCBnb2luZyB0aGlzIHdlZWssIGFuZCB0cnkgaXQgYmVmb3JlIHlvdSBzdGFydCBzdHVkeWluZyB0b28uJywnVm91cyBhdmV6IHJlbWFycXXDqSBxdWUgbGEgcmVzcGlyYXRpb24gYWlkZSBhdmFudCBsZXMgZXhhbWVucy4gQ29udGludWV6IGNldHRlIHNlbWFpbmUsIGV0IGVzc2F5ZXotbGEgYXVzc2kgYXZhbnQgZGUgY29tbWVuY2VyIMOgIMOpdHVkaWVyLicpLAogIG5vdGU6RSgnUHJpdmF0ZSBub3RlOiBpbnZpdGUgcGFyZW50IHRvIHNlc3Npb24gOCBmb3IgYSBzaG9ydCBjaGVjay1pbiwgd2l0aCBTYW3igJlzIGFncmVlbWVudC4nLCdOb3RlIHByaXbDqWUgOiBpbnZpdGVyIHVuIHBhcmVudCDDoCBsYSBzw6lhbmNlIDggcG91ciB1biBjb3VydCBzdWl2aSwgYXZlYyBs4oCZYWNjb3JkIGRlIFNhbS4nKSwKICBwcmVwOltFKCdGaW5hbHMgc2NoZWR1bGUgaXMgb3V0JywnTOKAmWhvcmFpcmUgZGVzIGV4YW1lbnMgZmluYXV4IGVzdCBzb3J0aScpXSwKICBqb3VybmFsOlt7ZDpFKCdPY3QgMTUnLCcxNSBvY3QuJyksdHh0OkUoJ0RpZCBib3ggYnJlYXRoaW5nIGJlZm9yZSB0aGUgY2hlbSBxdWl6LiBTdGlsbCBuZXJ2b3VzIGJ1dCBJIGZpbmlzaGVkLicsJ1Jlc3BpcmF0aW9uIGNhcnLDqWUgYXZhbnQgbGUgcXVpeiBkZSBjaGltaWUuIEVuY29yZSBuZXJ2ZXV4LCBtYWlzIGrigJlhaSBmaW5pLicpfV19Cl07CgpDLnB1c2goCiB7aWQ6J0QtNTUyMScsbmFtZTonQWxleCAmIE1vcmdhbiBLLicsZmlyc3Q6J0FsZXggJiBNb3JnYW4nLGNvdXBsZTp0cnVlLGFnZTpFKCdDb3VwbGUnLCdDb3VwbGUnKSxmb2N1czpFKCdDb21tdW5pY2F0aW9uIGFuZCBjb25mbGljdCcsJ0NvbW11bmljYXRpb24gZXQgY29uZmxpdHMnKSxzdGFydDpFKCdTZXAgMicsJzIgc2VwdC4nKSxzZXNzaW9uczo3LG5leHQ6RSgnV2VkLCBPY3QgMjEgwrcgNjowMCBwbScsJ21lci4gMjEgb2N0LiDCtyAxOCBoJyksc3RhdHVzOidyZWFkeScsZHVlOkUoJ1dlZG5lc2RheScsJ21lcmNyZWRpJyksbGFzdENJOjksCiAgcGhxOls5LDksOCw4LDcsNyw2XSxwaHEyOlsxMiwxMiwxMSwxMSwxMiwxMCw5XSxnYWQ6WzEwLDksOSw4LDgsNyw3XSxnYWQyOlsxMSwxMSwxMCwxMCwxMSw5LDhdLG1vb2Q6WzQsNCw1LDUsNCw2LDZdLAogIGV2ZW50czp7NTpFKCdBcmd1bWVudCBvdmVyIGhvbGlkYXkgcGxhbnMnLCdEaXNwdXRlIGF1IHN1amV0IGRlcyB2YWNhbmNlcycpfSwKICBzdG9yeTpFKCdBbGV4IGFuZCBNb3JnYW4gKGZpY3Rpb25hbCBjaGFyYWN0ZXJzKSBhcmUgc2V2ZW4gc2Vzc2lvbnMgaW50byBjb3VwbGVzIHdvcmsgb24gY29tbXVuaWNhdGlvbi4gQm90aCBwYXJ0bmVyc+KAmSBzY29yZXMgYXJlIGVhc2luZy4gVGhlIHdlZWsgNSBhcmd1bWVudCBvdmVyIGhvbGlkYXkgcGxhbnMgd2FzIHRoZSBmaXJzdCB0aW1lIHRoZXkgdXNlZCB0aGUgdGltZS1vdXQgYW5kIHJlcGFpciBzdGVwcyB0b2dldGhlciwgYW5kIGJvdGggcmF0ZWQgdGhlIHJlcGFpciBhcyBoZWxwZnVsLiBOZWl0aGVyIGhhcyBjaGVja2VkIGluIGZvciBuaW5lIGRheXMsIHNvIGl0IGlzIHdvcnRoIGFza2luZyBob3cgdGhlIHdlZWsgd2VudC4nLAogICAnQWxleCBldCBNb3JnYW4gKHBlcnNvbm5hZ2VzIGZpY3RpZnMpIGVuIHNvbnQgw6Agc2VwdCBzw6lhbmNlcyBkZSB0aMOpcmFwaWUgZGUgY291cGxlIHN1ciBsYSBjb21tdW5pY2F0aW9uLiBMZXMgc2NvcmVzIGRlcyBkZXV4IHBhcnRlbmFpcmVzIHPigJlhbcOpbGlvcmVudC4gTGEgZGlzcHV0ZSBkZSBsYSBzZW1haW5lIDUgYXUgc3VqZXQgZGVzIHZhY2FuY2VzIGEgw6l0w6kgbGEgcHJlbWnDqHJlIGZvaXMgcXXigJlpbHMgb250IHV0aWxpc8OpIGVuc2VtYmxlIGxlIHRlbXBzIGTigJlhcnLDqnQgZXQgbGEgcsOpcGFyYXRpb24sIGV0IHRvdXMgZGV1eCBvbnQganVnw6kgbGEgcsOpcGFyYXRpb24gdXRpbGUuIEF1Y3VuIGRlcyBkZXV4IG7igJlhIGZhaXQgZGUgYmlsYW4gZGVwdWlzIG5ldWYgam91cnM7IGlsIHZhdXQgbGEgcGVpbmUgZGUgZGVtYW5kZXIgY29tbWVudCBsYSBzZW1haW5lIHPigJllc3QgcGFzc8OpZS4nKSwKICBjc3Rvcnk6RSgnWW91IGhhdmUgYmVlbiBwcmFjdGlzaW5nIGEgbmV3IHdheSB0byBhcmd1ZS4gSW4gd2VlayA1IHlvdSB0b29rIGEgdGltZS1vdXQgYW5kIGNhbWUgYmFjayB0byByZXBhaXIsIHRvZ2V0aGVyLiBCb3RoIG9mIHlvdSBhcmUgcmVwb3J0aW5nIGNhbG1lciB3ZWVrcy4nLCdWb3VzIHByYXRpcXVleiB1bmUgbm91dmVsbGUgZmHDp29uIGRlIHZvdXMgZGlzcHV0ZXIuIMOAIGxhIHNlbWFpbmUgNSwgdm91cyBhdmV6IHByaXMgdW4gdGVtcHMgZOKAmWFycsOqdCBldCB2b3VzIMOqdGVzIHJldmVudXMgcG91ciByw6lwYXJlciwgZW5zZW1ibGUuIFZvdXMgcmFwcG9ydGV6IHRvdXMgbGVzIGRldXggZGVzIHNlbWFpbmVzIHBsdXMgY2FsbWVzLicpLAogIGdvYWxzOltbRSgnVXNlIHRpbWUtb3V0cyBpbiBoZWF0ZWQgbW9tZW50cycsJ1ByZW5kcmUgdW4gdGVtcHMgZOKAmWFycsOqdCBxdWFuZCBsZSB0b24gbW9udGUnKSw3MCxFKCdVc2VkIDMgdGltZXMsIGNhbWUgYmFjayBlYWNoIHRpbWUnLCdVdGlsaXPDqSAzIGZvaXMsIHJldG91ciBjaGFxdWUgZm9pcycpXSxbRSgnV2Vla2x5IDIwLW1pbnV0ZSBjaGVjay1pbiB0YWxrJywnRGlzY3Vzc2lvbiBoZWJkb21hZGFpcmUgZGUgMjAgbWludXRlcycpLDUwLEUoJzIgb2YgdGhlIGxhc3QgNCB3ZWVrcycsJzIgZGVzIDQgZGVybmnDqHJlcyBzZW1haW5lcycpXSxbRSgnU2hhcmUgb25lIGFwcHJlY2lhdGlvbiBhIGRheScsJ0V4cHJpbWVyIHVuZSBhcHByw6ljaWF0aW9uIHBhciBqb3VyJyksNDAsRSgnTW9zdCBkYXlzIGZvciBBbGV4LCBzb21lIGZvciBNb3JnYW4nLCdMYSBwbHVwYXJ0IGRlcyBqb3VycyBwb3VyIEFsZXgsIGNlcnRhaW5zIHBvdXIgTW9yZ2FuJyldXSwKICBwcmFjOltbRSgnVGltZS1vdXRzIHVzZWQnLCdUZW1wcyBk4oCZYXJyw6p0IHV0aWxpc8OpcycpLCczJ10sW0UoJ1JlcGFpciB0YWxrcycsJ0Rpc2N1c3Npb25zIGRlIHLDqXBhcmF0aW9uJyksJzQnXSxbRSgnQ2hlY2staW5zJywnQmlsYW5zJyksJzcgLyA5J10sW0UoJ0FwcHJlY2lhdGlvbnMnLCdBcHByw6ljaWF0aW9ucycpLCcxOCddXSwKICBzZXNzOltbRSgnT2N0IDE0JywnMTQgb2N0LicpLEUoJ1JlcGFpciBjb252ZXJzYXRpb24gYWZ0ZXIgd2VlayA1OyBwcmFjdGlzZWQgc29mdCBzdGFydC11cHMuJywnRGlzY3Vzc2lvbiBkZSByw6lwYXJhdGlvbiBhcHLDqHMgbGEgc2VtYWluZSA1OyBwcmF0aXF1ZSBkZXMgZMOpYnV0cyBlbiBkb3VjZXVyLicpLEUoJ0NvdXBsZXMnLCdDb3VwbGUnKV0sW0UoJ1NlcCAyJywnMiBzZXB0LicpLEUoJ0pvaW50IGludGFrZSwgdGhlbiBvbmUgaW5kaXZpZHVhbCBzZXNzaW9uIGVhY2g7IGNvbnNlbnQgZm9yIGNvdXBsZXMgd29yayByZXZpZXdlZC4nLCdBY2N1ZWlsIGNvbmpvaW50LCBwdWlzIHVuZSBzw6lhbmNlIGluZGl2aWR1ZWxsZSBjaGFjdW47IGNvbnNlbnRlbWVudCDDoCBsYSB0aMOpcmFwaWUgZGUgY291cGxlIHJldnUuJyksRSgnSW50YWtlJywnQWNjdWVpbCcpXV0sCiAgdGFza3M6W3t0b29sOidjYWxtJyxsYWJlbDpFKCdUaW1lLW91dDogMjAgbWludXRlcywgdGhlbiBjb21lIGJhY2snLCdUZW1wcyBk4oCZYXJyw6p0IDogMjAgbWludXRlcywgcHVpcyByZXZlbmlyJyksd2hlbjpFKCdXaGVuIHRoaW5ncyBoZWF0IHVwJywnUXVhbmQgbGUgdG9uIG1vbnRlJyksZG9uZTp0cnVlfSx7dG9vbDonY2hlY2tpbicsbGFiZWw6RSgnQ291cGxlIGNoZWNrLWluLCAyMCBtaW51dGVzJywnQmlsYW4gZGUgY291cGxlLCAyMCBtaW51dGVzJyksd2hlbjpFKCdTdW5kYXkgZXZlbmluZycsJ0RpbWFuY2hlIHNvaXInKSxkb25lOnRydWV9LHt0b29sOid2YWx1ZXMnLGxhYmVsOkUoJ09uZSBhcHByZWNpYXRpb24gYSBkYXknLCdVbmUgYXBwcsOpY2lhdGlvbiBwYXIgam91cicpLHdrOidkYXknLGRvbmU6ZmFsc2V9XSwKICBtc2c6RSgnWW91IGJvdGggZGlkIHRoZSBoYXJkIHBhcnQgaW4gd2VlayA1OiB5b3UgY2FtZSBiYWNrLiBUaGlzIHdlZWssIGtlZXAgdGhlIFN1bmRheSBjaGVjay1pbiBnb2luZywgZXZlbiBpZiB0aGUgd2VlayB3YXMgY2FsbS4nLCdWb3VzIGF2ZXogZmFpdCB0b3VzIGxlcyBkZXV4IGxhIHBhcnRpZSBkaWZmaWNpbGUgw6AgbGEgc2VtYWluZSA1IDogdm91cyDDqnRlcyByZXZlbnVzLiBDZXR0ZSBzZW1haW5lLCBnYXJkZXogbGUgYmlsYW4gZHUgZGltYW5jaGUsIG3Dqm1lIHNpIGxhIHNlbWFpbmUgYSDDqXTDqSBjYWxtZS4nKSwKICBub3RlOkUoJ1ByaXZhdGUgbm90ZTogaW5kaXZpZHVhbCBzZXNzaW9ucyBzaG93ZWQgbm8gc2FmZXR5IGNvbmNlcm5zLiBXYXRjaCB0aGUgcHVyc3VlLXdpdGhkcmF3IHBhdHRlcm47IE1vcmdhbiB3aXRoZHJhd3Mgd2hlbiBjcml0aWNpemVkLicsJ05vdGUgcHJpdsOpZSA6IGxlcyBzw6lhbmNlcyBpbmRpdmlkdWVsbGVzIG7igJlvbnQgcsOpdsOpbMOpIGF1Y3VuIGVuamV1IGRlIHPDqWN1cml0w6kuIFN1cnZlaWxsZXIgbGUgY3ljbGUgcG91cnN1aXRlLXJldHJhaXQ7IE1vcmdhbiBzZSByZXRpcmUgcXVhbmQgb24gbGUgY3JpdGlxdWUuJyksCiAgcHJlcDpbRSgnSG9saWRheSBwbGFucyB3aXRoIGJvdGggZmFtaWxpZXMnLCdMZXMgdmFjYW5jZXMgYXZlYyBub3MgZGV1eCBmYW1pbGxlcycpXSwKICBqb3VybmFsOlt7ZDpFKCdPY3QgMTgnLCcxOCBvY3QuJyksdHh0OkUoJ1dlIGRpZCB0aGUgU3VuZGF5IGNoZWNrLWluLiBTaG9ydCwgYnV0IG5vYm9keSB3YWxrZWQgYXdheS4nLCdPbiBhIGZhaXQgbGUgYmlsYW4gZHUgZGltYW5jaGUuIENvdXJ0LCBtYWlzIHBlcnNvbm5lIG7igJllc3QgcGFydGkuJyl9XX0sCiB7aWQ6J0UtMjA5MycsbmFtZTonQ2hyaXMgTC4nLGZpcnN0OidDaHJpcycsYWdlOkUoJ0FkdWx0JywnQWR1bHRlJyksZm9jdXM6RSgnR3JpZWYgYWZ0ZXIgYSBwYXJlbnTigJlzIGRlYXRoJywnRGV1aWwgYXByw6hzIGxlIGTDqWPDqHMgZOKAmXVuIHBhcmVudCcpLHN0YXJ0OkUoJ0F1ZyAyNCcsJzI0IGFvw7t0Jyksc2Vzc2lvbnM6OSxuZXh0OkUoJ1R1ZSwgT2N0IDIwIMK3IDE6MDAgcG0nLCdtYXIuIDIwIG9jdC4gwrcgMTMgaCcpLHN0YXR1czonbmVlZHMnLGR1ZTpFKCdUdWVzZGF5JywnbWFyZGknKSxsYXN0Q0k6MyxxOToxLAogIHBocTpbMTEsMTAsMTAsOSwxMCwxMSwxMywxNSwxN10sZ2FkOls4LDgsNyw3LDgsOSwxMSwxMiwxM10sbW9vZDpbNSw1LDYsNiw1LDQsNCwzLDJdLAogIGV2ZW50czp7NzpFKCdBbm5pdmVyc2FyeSBvZiBmYXRoZXLigJlzIGRlYXRoJywnQW5uaXZlcnNhaXJlIGR1IGTDqWPDqHMgZGUgc29uIHDDqHJlJyl9LAogIHN0b3J5OkUoJ0NocmlzIChmaWN0aW9uYWwgY2hhcmFjdGVyKSB3YXMgaW1wcm92aW5nIHRocm91Z2ggU2VwdGVtYmVyLCBidXQgc2NvcmVzIGhhdmUgcmlzZW4gdGhyZWUgd2Vla3MgaW4gYSByb3csIHN0YXJ0aW5nIGFyb3VuZCB0aGUgYW5uaXZlcnNhcnkgb2YgdGhlaXIgZmF0aGVy4oCZcyBkZWF0aCBpbiB3ZWVrIDcuIEluIGxhc3Qgd2Vla+KAmXMgc2hhcmVkIHJlcG9ydCwgQ2hyaXMgYW5zd2VyZWQgInNldmVyYWwgZGF5cyIgb24gUEhRLTkgaXRlbSA5LiBTbGVlcCBpcyBkb3duIHRvIGFib3V0IGZpdmUgaG91cnMuIENocmlzIGlzIHRoZSBjbGllbnQgdG8gc2VlIGZpcnN0IHRoaXMgd2Vlay4nLAogICAnQ2hyaXMgKHBlcnNvbm5hZ2UgZmljdGlmKSBz4oCZYW3DqWxpb3JhaXQgZW4gc2VwdGVtYnJlLCBtYWlzIGxlcyBzY29yZXMgb250IGF1Z21lbnTDqSB0cm9pcyBzZW1haW5lcyBkZSBzdWl0ZSwgw6AgcGFydGlyIGRlIGzigJlhbm5pdmVyc2FpcmUgZHUgZMOpY8OocyBkZSBzb24gcMOocmUgw6AgbGEgc2VtYWluZSA3LiBEYW5zIGxlIHJhcHBvcnQgcGFydGFnw6kgbGEgc2VtYWluZSBkZXJuacOocmUsIENocmlzIGEgcsOpcG9uZHUgwqvCoHBsdXNpZXVycyBqb3Vyc8Kgwrsgw6AgbGEgcXVlc3Rpb24gOSBkdSBQSFEtOS4gTGUgc29tbWVpbCBlc3QgdG9tYsOpIMOgIGVudmlyb24gY2lucSBoZXVyZXMuIEPigJllc3QgbGUgY2xpZW50IMOgIHZvaXIgZW4gcHJpb3JpdMOpIGNldHRlIHNlbWFpbmUuJyksCiAgY3N0b3J5OkUoJ0dyaWVmIG9mdGVuIGNvbWVzIGluIHdhdmVzLCBhbmQgYW5uaXZlcnNhcmllcyBjYW4gYnJpbmcgYSBiaWcgb25lLiBZb3UgaGF2ZSBrZXB0IGNoZWNraW5nIGluIHRocm91Z2ggYSB2ZXJ5IGhhcmQgZmV3IHdlZWtzLCBhbmQgdGhhdCBtYXR0ZXJzLicsJ0xlIGRldWlsIHZpZW50IHNvdXZlbnQgcGFyIHZhZ3VlcywgZXQgbGVzIGFubml2ZXJzYWlyZXMgcGV1dmVudCBlbiBhbWVuZXIgdW5lIGdyb3NzZS4gVm91cyBhdmV6IGNvbnRpbnXDqSDDoCBmYWlyZSB2b3MgYmlsYW5zIHBlbmRhbnQgcXVlbHF1ZXMgc2VtYWluZXMgdHLDqHMgZGlmZmljaWxlcywgZXQgY+KAmWVzdCBpbXBvcnRhbnQuJyksCiAgZ29hbHM6W1tFKCdLZWVwIGEgZGFpbHkgcm91dGluZScsJ0dhcmRlciB1bmUgcm91dGluZSBxdW90aWRpZW5uZScpLDQ1LEUoJ01vc3QgbW9ybmluZ3MsIGhhcmRlciBsYXRlbHknLCdMYSBwbHVwYXJ0IGRlcyBtYXRpbnMsIHBsdXMgZGlmZmljaWxlIGNlcyB0ZW1wcy1jaScpXSxbRSgnVGFsayBhYm91dCBEYWQgd2l0aCBzb21lb25lIGVhY2ggd2VlaycsJ1BhcmxlciBkZSBwYXBhIGF2ZWMgcXVlbHF14oCZdW4gY2hhcXVlIHNlbWFpbmUnKSw2MCxFKCdXaXRoIG15IHNpc3RlciwgdHdpY2UgdGhpcyBtb250aCcsJ0F2ZWMgbWEgc8WTdXIsIGRldXggZm9pcyBjZSBtb2lzLWNpJyldLFtFKCdTbGVlcCA3IGhvdXJzJywnRG9ybWlyIDcgaGV1cmVzJyksMjUsRSgnQWJvdXQgNSBob3VycyBsYXRlbHknLCdFbnZpcm9uIDUgaGV1cmVzIGNlcyB0ZW1wcy1jaScpXV0sCiAgcHJhYzpbW0UoJ0NoZWNrLWlucycsJ0JpbGFucycpLCc5IC8gOSddLFtFKCdTYWZldHkgcGxhbicsJ1BsYW4gZGUgc8OpY3VyaXTDqScpLEUoJ1VwZGF0ZWQnLCdNaXMgw6Agam91cicpXSxbRSgnR3JvdW5kaW5nJywnQW5jcmFnZScpLCc3J10sW0UoJ1NsZWVwIGRpYXJ5JywnSm91cm5hbCBkdSBzb21tZWlsJyksRSgnMTIgbmlnaHRzJywnMTIgbnVpdHMnKV1dLAogIHNlc3M6W1tFKCdPY3QgMTQnLCcxNCBvY3QuJyksRSgnQW5uaXZlcnNhcnkgd2Vlay4gUmlzayByZXZpZXdlZDogcGFzc2l2ZSB0aG91Z2h0cywgbm8gcGxhbiBvciBpbnRlbnQuIFNhZmV0eSBwbGFuIHVwZGF0ZWQgdG9nZXRoZXIuJywnU2VtYWluZSBkZSBs4oCZYW5uaXZlcnNhaXJlLiBSaXNxdWUgw6l2YWx1w6kgOiBwZW5zw6llcyBwYXNzaXZlcywgc2FucyBwbGFuIG5pIGludGVudGlvbi4gUGxhbiBkZSBzw6ljdXJpdMOpIG1pcyDDoCBqb3VyIGVuc2VtYmxlLicpLEUoJ1Jpc2snLCdSaXNxdWUnKV0sW0UoJ1NlcCAyMycsJzIzIHNlcHQuJyksRSgnR3JpZWYgbGV0dGVyOyBtZW1vcmllcyBvZiBEYWQuJywnTGV0dHJlIGRlIGRldWlsOyBzb3V2ZW5pcnMgZGUgcGFwYS4nKSxFKCdHcmllZicsJ0RldWlsJyldLFtFKCdBdWcgMjQnLCcyNCBhb8O7dCcpLEUoJ0ludGFrZS4gR29hbHMgYWdyZWVkOyBjb25zZW50IGFuZCBwcml2YWN5IHJldmlld2VkLicsJ0FjY3VlaWwuIE9iamVjdGlmcyBjb252ZW51czsgY29uc2VudGVtZW50IGV0IGNvbmZpZGVudGlhbGl0w6kgcmV2dXMuJyksRSgnSW50YWtlJywnQWNjdWVpbCcpXV0sCiAgdGFza3M6W3t0b29sOidzYWZldHknLGxhYmVsOkUoJ1JlYWQgbXkgc2FmZXR5IHBsYW4nLCdSZWxpcmUgbW9uIHBsYW4gZGUgc8OpY3VyaXTDqScpLHdoZW46RSgnV2hlbiB0aGluZ3MgZmVlbCBoZWF2eScsJ1F1YW5kIGPigJllc3QgbG91cmQnKSxkb25lOnRydWV9LHt0b29sOidncm91bmRpbmcnLGxhYmVsOm51bGwsd2s6J2RheScsZG9uZTpmYWxzZX0se3Rvb2w6J3NsZWVwJyxsYWJlbDpudWxsLHdrOidtb3JuaW5nJyxkb25lOmZhbHNlfV0sCiAgbXNnOkUoJ1RoaXMgaGFzIGJlZW4gYSBoZWF2eSBmZXcgd2Vla3MuIFlvdXIgc2FmZXR5IHBsYW4gaXMgaW4gdGhlIGFwcCwgYW5kIEkgd2lsbCBzZWUgeW91IFR1ZXNkYXkuIElmIHRoaW5ncyBnZXQgd29yc2UgYmVmb3JlIHRoZW4sIGNhbGwgb3IgdGV4dCA5ODguJywnQ2VzIGRlcm5pw6hyZXMgc2VtYWluZXMgb250IMOpdMOpIGxvdXJkZXMuIFZvdHJlIHBsYW4gZGUgc8OpY3VyaXTDqSBlc3QgZGFucyBs4oCZYXBwbGksIGV0IG9uIHNlIHZvaXQgbWFyZGkuIFNpIMOnYSBlbXBpcmUgZOKAmWljaSBsw6AsIGFwcGVsZXogb3UgdGV4dGV6IGxlIDk4OC4nKSwKICBub3RlOkUoJ1ByaXZhdGUgbm90ZTogbW92ZSB0byB3ZWVrbHkgc2Vzc2lvbnM7IHBob25lIGNoZWNrLWluIEZyaWRheTsgd2l0aCBjb25zZW50LCBjb29yZGluYXRlIHdpdGggZmFtaWx5IGRvY3RvciBhYm91dCBzbGVlcC4nLCdOb3RlIHByaXbDqWUgOiBwYXNzZXIgw6AgZGVzIHPDqWFuY2VzIGhlYmRvbWFkYWlyZXM7IGFwcGVsIGRlIHN1aXZpIHZlbmRyZWRpOyBhdmVjIGNvbnNlbnRlbWVudCwgY29vcmRvbm5lciBhdmVjIGxlIG3DqWRlY2luIGRlIGZhbWlsbGUgYXUgc3VqZXQgZHUgc29tbWVpbC4nKSwKICBwcmVwOltFKCdUaGUgYW5uaXZlcnNhcnkgd2FzIGhhcmRlciB0aGFuIEkgZXhwZWN0ZWQnLCdM4oCZYW5uaXZlcnNhaXJlIGEgw6l0w6kgcGx1cyBkdXIgcXVlIGplIHBlbnNhaXMnKV0sCiAgam91cm5hbDpbe2Q6RSgnT2N0IDE1JywnMTUgb2N0LicpLHR4dDpFKCdXZW50IHRocm91Z2ggRGFk4oCZcyB0b29scyBpbiB0aGUgZ2FyYWdlLiBDb3VsZCBub3QgZmluaXNoLicsJ0rigJlhaSB0cmnDqSBsZXMgb3V0aWxzIGRlIHBhcGEgZGFucyBsZSBnYXJhZ2UuIEplIG7igJlhaSBwYXMgcHUgZmluaXIuJyl9XX0KKTsKQ1swXS5sYXN0Q0k9MTtDWzFdLmxhc3RDST0yO0NbMl0ubGFzdENJPTA7CltbNi41LDcsNy41LDYsNyw3LjUsN10sWzgsOSw3LjUsOCw4LjUsOSw4XSxbNiw2LjUsNS41LDcsNiw2LjUsN10sWzcsNyw2LjUsNyw3LjUsNyw3XSxbNSw0LjUsNS41LDUsNCw1LDVdXS5mb3JFYWNoKChzLGkpPT57Q1tpXS5zbGVlcD1zO30pOwpjb25zdCBTUD0odyxjLGQscCxzKT0+KHt3YXJuOncsY29wZTpjLGRpczpkLHBlbzpwLHNhZmU6c30pOwpDWzBdLnNhZmV0eT1TUChbRSgnUmFjaW5nIHRob3VnaHRzIGF0IG5pZ2h0JywnUGVuc8OpZXMgcXVpIHPigJllbWJhbGxlbnQgbGEgbnVpdCcpLEUoJ1NuYXBwaW5nIGF0IHBlb3BsZScsJ8OKdHJlIGJydXNxdWUgYXZlYyBsZXMgZ2VucycpXSxbRSgnQm94IGJyZWF0aGluZycsJ1Jlc3BpcmF0aW9uIGNhcnLDqWUnKSxFKCdHbyBmb3IgYSBydW4nLCdBbGxlciBjb3VyaXInKV0sW0UoJ1RoZSBjbGltYmluZyBneW0nLCdMZSBjZW50cmUgZOKAmWVzY2FsYWRlJyldLFtFKCdUYXlsb3IgKHBhcnRuZXIpJywnVGF5bG9yIChjb25qb2ludCknKV0sW10pOwpDWzFdLnNhZmV0eT1TUChbRSgnU3RheWluZyBpbiBiZWQgYWxsIG1vcm5pbmcnLCdSZXN0ZXIgYXUgbGl0IHRvdXRlIGxhIG1hdGluw6llJyldLFtFKCdXYWxrIHRvIHRoZSByaXZlcicsJ01hcmNoZXIganVzcXXigJnDoCBsYSByaXZpw6hyZScpXSxbRSgnVGhlIHdhbGtpbmcgZ3JvdXAnLCdMZSBncm91cGUgZGUgbWFyY2hlJyldLFtFKCdNdW0sIGJ5IHBob25lJywnTWFtYW4sIGF1IHTDqWzDqXBob25lJyldLFtdKTsKQ1syXS5zYWZldHk9U1AoW0UoJ0NhbuKAmXQgc3RvcCB0aGlua2luZyBhYm91dCBncmFkZXMnLCdOZSBwYXMgYXJyw6p0ZXIgZGUgcGVuc2VyIGF1eCBub3RlcycpXSxbRSgnQm94IGJyZWF0aGluZycsJ1Jlc3BpcmF0aW9uIGNhcnLDqWUnKSxFKCdNdXNpYyB3aXRoIGhlYWRwaG9uZXMnLCdEZSBsYSBtdXNpcXVlIGF2ZWMgw6ljb3V0ZXVycycpXSxbRSgnVGhlIGJhc2tldGJhbGwgY291cnQnLCdMZSB0ZXJyYWluIGRlIGJhc2tldGJhbGwnKV0sW0UoJ01vbScsJ01hbWFuJyksRSgnU2Nob29sIGNvdW5zZWxsb3InLCdDb25zZWlsbGVyIMOgIGzigJnDqWNvbGUnKV0sW10pOwpDWzNdLnNhZmV0eT1TUChbRSgnUmFpc2VkIHZvaWNlcycsJ0xlIHRvbiBxdWkgbW9udGUnKV0sW0UoJ1RpbWUtb3V0IHdhbGsnLCdVbmUgbWFyY2hlIHBlbmRhbnQgbGUgdGVtcHMgZOKAmWFycsOqdCcpXSxbRSgnVGhlIHBhcmsnLCdMZSBwYXJjJyldLFtFKCdKZXNzIChmcmllbmQpJywnSmVzcyAoYW1pZSknKV0sW10pOwpDWzRdLnNhZmV0eT1TUChbRSgnTm90IHNsZWVwaW5nJywnTmUgcGFzIGRvcm1pcicpLEUoJ1NraXBwaW5nIG1lYWxzJywnU2F1dGVyIGRlcyByZXBhcycpLEUoJ1N0YXlpbmcgaW4gYmVkIHBhc3Qgbm9vbicsJ1Jlc3RlciBhdSBsaXQgYXByw6hzIG1pZGknKV0sW0UoJ1dhbGsgdGhlIGRvZycsJ1Byb21lbmVyIGxlIGNoaWVuJyksRSgnU2hvd2VyIGFuZCBnZXQgZHJlc3NlZCcsJ1ByZW5kcmUgdW5lIGRvdWNoZSBldCBt4oCZaGFiaWxsZXInKSxFKCdHcm91bmRpbmc6IDUgdGhpbmdzIEkgY2FuIHNlZScsJ0FuY3JhZ2UgOiA1IGNob3NlcyBxdWUgamUgdm9pcycpXSxbRSgnVGhlIGNvZmZlZSBzaG9wIG9uIE1haW4gU3RyZWV0JywnTGUgY2Fmw6kgZGUgbGEgcnVlIFByaW5jaXBhbGUnKSxFKCdNeSBzaXN0ZXLigJlzIGtpdGNoZW4nLCdMYSBjdWlzaW5lIGRlIG1hIHPFk3VyJyldLFtFKCdEYW5hIChzaXN0ZXIpJywnRGFuYSAoc8WTdXIpJyksRSgnTWFyYyAoZnJpZW5kKScsJ01hcmMgKGFtaSknKV0sW0UoJ0FzayBEYW5hIHRvIGtlZXAgbXkgZXh0cmEgbWVkaWNhdGlvbicsJ0RlbWFuZGVyIMOgIERhbmEgZGUgZ2FyZGVyIG1lcyBtw6lkaWNhbWVudHMgZW4gc3VycGx1cycpXSk7CgovKiAtLS0tLS0tLS0tIFN0YXRlIC0tLS0tLS0tLS0gKi8KbGV0IGN1cj0wLGFub249dHJ1ZSxjbGllbnRWaWV3PWZhbHNlLG1vZGU9J1QnLGF0YWI9J3RvZGF5JyxxdWl6PSdwaHEnLGFucz1bXSxmdz17Y29yZXM6W10sd29yZHM6W119LHJlcD1udWxsOwpsZXQgZ0VkaXQ9ZmFsc2Usc2FmZUZyb209J3ByYWN0aWNlJzsKY29uc3QgYXBwcm92ZWQ9ezA6dHJ1ZSwxOnRydWUsMjpmYWxzZSwzOnRydWUsNDpmYWxzZX07CmNvbnN0IHJlcz1DLm1hcCgoKT0+KHt9KSk7ICAgICAgIC8vIHNhdmVkIGNoZWNrcyB0aGlzIGRlbW8gc2Vzc2lvbiwgcGVyIGNsaWVudApjb25zdCBub3Rlcz17fTsgICAgICAgICAgICAgICAgICAgLy8gcHJpdmF0ZSBEQVAgZHJhZnRzLCBwZXIgY2xpZW50CmNvbnN0IHNldD17dHh0OjAsaGM6ZmFsc2UscmVtUDp0cnVlLHJlbVBUOicxOTowMCcscmVtQzp0cnVlLHJlbUNEOidzdW4nfTsKY29uc3QgZHJhZnRzPXt9LHBsYW5Ob3RlPXt9OyAgICAgIC8vIHRoZXJhcGlzdCBwbGFuIGVkaXRvciBzdGF0ZSwgcGVyIGNsaWVudApjb25zdCAkPXM9PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iocyk7CmNvbnN0IG5tPWM9PmFub24\/dCgnY2xpZW50JykrJyAnK2MuaWQ6Yy5uYW1lKycgKCcrdCgnZmljdCcpKycpJzsKY29uc3QgaW5pPWM9PmFub24\/Yy5pZC5zbGljZSgwLDEpOmMubmFtZS5zcGxpdCgnICcpLm1hcCh4PT54WzBdKS5qb2luKCcnKTsKZnVuY3Rpb24gZXNjKHMpe3JldHVybiBTdHJpbmcocz09bnVsbD8nJzpzKS5yZXBsYWNlKC9bJjw+Il0vZyxtPT4oeycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnIic6JyZxdW90Oyd9KVttXSk7fQpjb25zdCBqb2luTGlzdD1hPT5hLmxlbmd0aDwyP2Euam9pbignJyk6YS5zbGljZSgwLC0xKS5qb2luKCcsICcpK3QoJ2FuZCcpK2FbYS5sZW5ndGgtMV07CgpmdW5jdGlvbiBhcHBseVN0YXRpYygpewogIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPUw7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtaV0nKS5mb3JFYWNoKGU9PntlLnRleHRDb250ZW50PXQoZS5kYXRhc2V0LmkpO30pOwogICQoJyN2aWV3c0dyb3VwJykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0KCd2aWV3c0xhYmVsJykpOwogICQoJyNhbm9uV3JhcCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdCgnbmFtZXNMYWJlbCcpKTsKICAkKCcjY2xpZW50cycpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdCgnY2xpZW50c0xhYmVsJykpOwogICQoJyNsRW4nKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsTD09PSdlbicpOyQoJyNsRnInKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsTD09PSdmcicpOwp9CgpmdW5jdGlvbiByZW5kZXJMaXN0KCl7CiAgJCgnI2NsaWVudHMnKS5pbm5lckhUTUw9Qy5tYXAoKGMsaSk9PmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsIiBkYXRhLWk9IiR7aX0iIGFyaWEtY3VycmVudD0iJHtpPT09Y3VyfSI+PHNwYW4gY2xhc3M9ImF2Ij4ke2VzYyhpbmkoYykpfTwvc3Bhbj48c3Bhbj4ke2VzYyhubShjKSl9PHNtYWxsPiR7ZXNjKHRyKGMuZm9jdXMpKX08L3NtYWxsPjwvc3Bhbj48c3BhbiBjbGFzcz0icGlsbCAke2Muc3RhdHVzPT09J25ldyc\/J3AtbmV3JzpjLnN0YXR1cz09PSduZWVkcyc\/J3Atd2Fybic6J3AtcmVhZHknfSI+JHtlc2ModChjLnN0YXR1cz09PSduZXcnPyduZXdjaSc6Yy5zdGF0dXM9PT0nbmVlZHMnPyduZWVkcyc6J3JlYWR5JykpfTwvc3Bhbj48L2J1dHRvbj5gKS5qb2luKCcnKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2wnKS5mb3JFYWNoKGI9PmIub25jbGljaz0oKT0+e2N1cj0rYi5kYXRhc2V0Lmk7Z0VkaXQ9ZmFsc2U7cmVuZGVyKCk7fSk7Cn0KCmZ1bmN0aW9uIGxpbmVDaGFydCh2YWxzLG1heCxiYW5kcyxsYWJlbCxjb2xvcix2YWxzMil7CiAgaWYodmFsczIpe2NvbnN0IFc9NDIwLEg9MTcwLEwwPTMwLFI9MTIsVD0xMixCPTI2LG49dmFsczIubGVuZ3RoLHg9aT0+TDArKG49PT0xPzA6aSooVy1MMC1SKS8obi0xKSkseT12PT5UKygxLXYvbWF4KSooSC1ULUIpOwogICAgY29uc3QgZDI9dmFsczIubWFwKCh2LGkpPT4oaT8nTCc6J00nKSt4KGkpLnRvRml4ZWQoMSkrJyAnK3kodikudG9GaXhlZCgxKSkuam9pbignICcpOwogICAgcmV0dXJuIGxpbmVDaGFydCh2YWxzLG1heCxiYW5kcyxsYWJlbCxjb2xvcikucmVwbGFjZSgnPC9zdmc+JyxgPHBhdGggZD0iJHtkMn0iIGZpbGw9Im5vbmUiIHN0cm9rZT0idmFyKCR7Y29sb3J9KSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtZGFzaGFycmF5PSI1IDQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPiR7dmFsczIubWFwKCh2LGkpPT5gPGNpcmNsZSBjeD0iJHt4KGkpfSIgY3k9IiR7eSh2KX0iIHI9IiR7aT09PW4tMT80LjU6M30iIGZpbGw9InZhcigtLXBhbmVsKSIgc3Ryb2tlPSJ2YXIoJHtjb2xvcn0pIiBzdHJva2Utd2lkdGg9IjIiLz5gKS5qb2luKCcnKX08L3N2Zz5gKTt9CiAgY29uc3QgVz00MjAsSD0xNzAsTDA9MzAsUj0xMixUPTEyLEI9MjYsbj12YWxzLmxlbmd0aDsKICBjb25zdCB4PWk9PkwwKyhuPT09MT8wOmkqKFctTDAtUikvKG4tMSkpLCB5PXY9PlQrKDEtdi9tYXgpKihILVQtQik7CiAgbGV0IHM9YDxzdmcgdmlld0JveD0iMCAwICR7V30gJHtIfSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSIke2VzYyhsYWJlbCl9ICR7ZXNjKHQoJ3Njb3JlcycpKX0iPmA7CiAgYmFuZHMuZm9yRWFjaCgoW2EsYixuYW1lLGZpbGxdKT0+e3MrPWA8cmVjdCB4PSIke0wwfSIgeT0iJHt5KGIpfSIgd2lkdGg9IiR7Vy1MMC1SfSIgaGVpZ2h0PSIke3koYSkteShiKX0iIGZpbGw9InZhcigke2ZpbGx9KSIvPjx0ZXh0IGNsYXNzPSJiYW5kLWwiIHg9IiR7Vy1SLTR9IiB5PSIke3koYikrMTJ9IiB0ZXh0LWFuY2hvcj0iZW5kIj4ke2VzYyhuYW1lKX08L3RleHQ+YDt9KTsKICBbMCxNYXRoLnJvdW5kKG1heC8yKSxtYXhdLmZvckVhY2godGs9PntzKz1gPHRleHQgY2xhc3M9ImxhYiIgeD0iJHtMMC02fSIgeT0iJHt5KHRrKSs0fSIgdGV4dC1hbmNob3I9ImVuZCI+JHt0a308L3RleHQ+YDt9KTsKICB2YWxzLmZvckVhY2goKHYsaSk9PntpZihpPT09MHx8aT09PW4tMXx8aSUzPT09MClzKz1gPHRleHQgY2xhc3M9ImxhYiIgeD0iJHt4KGkpfSIgeT0iJHtILTZ9IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4ke3QoJ3drJyl9JHtpKzF9PC90ZXh0PmA7fSk7CiAgY29uc3QgZD12YWxzLm1hcCgodixpKT0+KGk\/J0wnOidNJykreChpKS50b0ZpeGVkKDEpKycgJyt5KHYpLnRvRml4ZWQoMSkpLmpvaW4oJyAnKTsKICBzKz1gPHBhdGggZD0iJHtkfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ2YXIoJHtjb2xvcn0pIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPmA7CiAgdmFscy5mb3JFYWNoKCh2LGkpPT57Y29uc3QgbGFzdD1pPT09bi0xO3MrPWA8Y2lyY2xlIGN4PSIke3goaSl9IiBjeT0iJHt5KHYpfSIgcj0iJHtsYXN0PzU6My41fSIgZmlsbD0idmFyKCR7Y29sb3J9KSIgc3Ryb2tlPSJ2YXIoLS1wYW5lbCkiIHN0cm9rZS13aWR0aD0iMiIvPjxyZWN0IGNsYXNzPSJoaXQiIGRhdGEtdD0iJHtlc2ModCgnd2VlaycpKX0gJHtpKzF9OiAke3Z9IiBkYXRhLXg9IiR7eChpKS9XfSIgZGF0YS15PSIke3kodikvSH0iIHg9IiR7eChpKS0xNH0iIHk9IiR7VH0iIHdpZHRoPSIyOCIgaGVpZ2h0PSIke0gtVC1CfSIgZmlsbD0idHJhbnNwYXJlbnQiLz5gO30pOwogIHJldHVybiBzKyc8L3N2Zz4nOwp9CmNvbnN0IGZ1bGxCYW5kcz0oKT0+W1swLDQsdCgnYk1pbicpLCctLWJhbmQxJ10sWzUsOSx0KCdiTWlsZCcpLCctLXN1bmsnXSxbMTAsMTQsdCgnYk1vZCcpLCctLWJhbmQyJ11dOwoKLyogLS0tLS0tLS0tLSBUaGVyYXBpc3QgcGxhbiBlZGl0b3IgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBnZXREcmFmdChjKXsKICBpZighZHJhZnRzW2N1cl0pe2NvbnN0IHNlbD17fTtjLnRhc2tzLmZvckVhY2godGs9PntzZWxbdGsudG9vbF09dGsud2t8fCdjdXInO30pO2RyYWZ0c1tjdXJdPXtzZWwsbXNnOm51bGx9O30KICByZXR1cm4gZHJhZnRzW2N1cl07Cn0KZnVuY3Rpb24gcGxhbkNhcmQoYyl7CiAgaWYoY2xpZW50Vmlldyl7CiAgICByZXR1cm4gYDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgncGxhblJvSycpKX08L3NwYW4+PHVsIGNsYXNzPSJybyI+JHtjLnRhc2tzLm1hcCh0az0+YDxsaT4ke2VzYyh0YXNrTmFtZSh0aykpfTxzcGFuPiR7ZXNjKHdoZW5UZXh0KHRrKSl9PC9zcGFuPjwvbGk+YCkuam9pbignJyl9PC91bD48ZGl2IGNsYXNzPSJtc2ciPiR7ZXNjKHRyKGMubXNnKSl9PC9kaXY+PC9zZWN0aW9uPmA7CiAgfQogIGNvbnN0IGQ9Z2V0RHJhZnQoYyk7CiAgY29uc3QgaWRzPVsuLi5uZXcgU2V0KFsuLi5jLnRhc2tzLm1hcCh4PT54LnRvb2wpLC4uLlBMQU5fVE9PTFNdKV07CiAgY29uc3Qgcm93cz1pZHMubWFwKGlkPT57CiAgICBjb25zdCBvbGQ9Yy50YXNrcy5maW5kKHg9PngudG9vbD09PWlkKSxvbj1pZCBpbiBkLnNlbCx3PWQuc2VsW2lkXXx8J2RheSc7CiAgICBjb25zdCBjdXJPcHQ9b2xkJiYhb2xkLndrP2A8b3B0aW9uIHZhbHVlPSJjdXIiICR7dz09PSdjdXInPydzZWxlY3RlZCc6Jyd9PiR7ZXNjKHRyKG9sZC53aGVuKSl9PC9vcHRpb24+YDonJzsKICAgIGNvbnN0IG9wdHM9Y3VyT3B0K09iamVjdC5rZXlzKFdIRU4pLm1hcChrPT5gPG9wdGlvbiB2YWx1ZT0iJHtrfSIgJHt3PT09az8nc2VsZWN0ZWQnOicnfT4ke2VzYyh0cihXSEVOW2tdKSl9PC9vcHRpb24+YCkuam9pbignJyk7CiAgICBjb25zdCBsYWI9b2xkJiZvbGQubGFiZWw\/YCR7ZXNjKHRyKG9sZC5sYWJlbCkpfTxzbWFsbD4ke2VzYyh0cihUTFtpZF0pKX08L3NtYWxsPmA6ZXNjKHRyKFRMW2lkXSkpOwogICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJwcm93Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwbC0ke2lkfSIgZGF0YS1wdD0iJHtpZH0iICR7b24\/J2NoZWNrZWQnOicnfT48bGFiZWwgZm9yPSJwbC0ke2lkfSI+JHtsYWJ9PC9sYWJlbD48c2VsZWN0IGNsYXNzPSJmaWVsZCIgaWQ9InB3LSR7aWR9IiBkYXRhLXB3PSIke2lkfSIgYXJpYS1sYWJlbD0iJHtlc2ModHIoVExbaWRdKSl9IiAke29uPycnOidkaXNhYmxlZCd9PiR7b3B0c308L3NlbGVjdD48L2Rpdj5gOwogIH0pLmpvaW4oJycpOwogIGNvbnN0IG5vdGU9cGxhbk5vdGVbY3VyXTsKICByZXR1cm4gYDxzZWN0aW9uIGNsYXNzPSJjYXJkIGNsaW4iIGlkPSJwbGFuQ2FyZCI+PGRpdiBjbGFzcz0iaGVhZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3BsYW5LJykpfTwvc3Bhbj48L2Rpdj4KICAgIDxwIGNsYXNzPSJmb290IiBzdHlsZT0iZm9udC1zaXplOjEzcHgiPiR7ZXNjKHQoJ3BsYW5IaW50JykpfTwvcD4KICAgIDxkaXYgY2xhc3M9InBsYW4iPiR7cm93c308L2Rpdj4KICAgIDxsYWJlbCBjbGFzcz0iayIgZm9yPSJwbXNnIj4ke2VzYyh0KCdwbGFuTXNnJykpfTwvbGFiZWw+CiAgICA8dGV4dGFyZWEgY2xhc3M9ImZpZWxkIiBpZD0icG1zZyI+JHtlc2MoZC5tc2chPW51bGw\/ZC5tc2c6dHIoYy5tc2cpKX08L3RleHRhcmVhPgogICAgPGRpdiBjbGFzcz0iYnRucm93Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgaWQ9InBTaGFyZSI+JHtlc2ModCgncGxhblNoYXJlJykpfTwvYnV0dG9uPiR7bm90ZT09PSdvayc\/YDxzcGFuIGNsYXNzPSJvayIgcm9sZT0ic3RhdHVzIj4ke2VzYyh0KCdwbGFuU2hhcmVkJykpfTwvc3Bhbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIGlkPSJwU2VlIj4ke2VzYyh0KCdwbGFuU2VlJykpfTwvYnV0dG9uPmA6bm90ZT9gPHNwYW4gY2xhc3M9ImVyciIgcm9sZT0iYWxlcnQiPiR7ZXNjKHQobm90ZSkpfTwvc3Bhbj5gOicnfTwvZGl2PgogICAgPHAgY2xhc3M9ImZvb3QiPiR7ZXNjKHQoJ3BsYW5Gb290JykpfTwvcD48L3NlY3Rpb24+YDsKfQpmdW5jdGlvbiBiaW5kUGxhbihjKXsKICBjb25zdCBkPWRyYWZ0c1tjdXJdO2lmKCFkKXJldHVybjsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1wdF0nKS5mb3JFYWNoKGNiPT5jYi5vbmNoYW5nZT0oKT0+e2NvbnN0IGlkPWNiLmRhdGFzZXQucHQsc2VsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwdy0nK2lkKTtpZihjYi5jaGVja2VkKXtkLnNlbFtpZF09c2VsLnZhbHVlO3NlbC5kaXNhYmxlZD1mYWxzZTt9ZWxzZXtkZWxldGUgZC5zZWxbaWRdO3NlbC5kaXNhYmxlZD10cnVlO319KTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1wd10nKS5mb3JFYWNoKHM9PnMub25jaGFuZ2U9KCk9PntpZihzLmRhdGFzZXQucHcgaW4gZC5zZWwpZC5zZWxbcy5kYXRhc2V0LnB3XT1zLnZhbHVlO30pOwogIGNvbnN0IHRhPSQoJyNwbXNnJyk7aWYodGEpdGEub25pbnB1dD0oKT0+e2QubXNnPXRhLnZhbHVlO307CiAgY29uc3Qgc2g9JCgnI3BTaGFyZScpO2lmKHNoKXNoLm9uY2xpY2s9KCk9PnsKICAgIGNvbnN0IGlkcz1bLi4ubmV3IFNldChbLi4uYy50YXNrcy5tYXAoeD0+eC50b29sKSwuLi5QTEFOX1RPT0xTXSldLmZpbHRlcihpZD0+aWQgaW4gZC5zZWwpOwogICAgY29uc3QgbXNnPShkLm1zZyE9bnVsbD9kLm1zZzp0cihjLm1zZykpLnRyaW0oKTsKICAgIGlmKCFpZHMubGVuZ3RoKXtwbGFuTm90ZVtjdXJdPSdwbGFuTm9uZSc7cmVuZGVyKCk7cmV0dXJuO30KICAgIGlmKCFtc2cpe3BsYW5Ob3RlW2N1cl09J3BsYW5Nc2dOb25lJztyZW5kZXIoKTtyZXR1cm47fQogICAgYy50YXNrcz1pZHMubWFwKGlkPT57Y29uc3Qgb2xkPWMudGFza3MuZmluZCh4PT54LnRvb2w9PT1pZCksdz1kLnNlbFtpZF07cmV0dXJuIHt0b29sOmlkLGxhYmVsOm9sZD9vbGQubGFiZWw6bnVsbCx3azp3PT09J2N1cic\/bnVsbDp3LHdoZW46dz09PSdjdXInJiZvbGQ\/b2xkLndoZW46bnVsbCxkb25lOm9sZD9vbGQuZG9uZTpmYWxzZX07fSk7CiAgICBpZihkLm1zZyE9bnVsbCYmbXNnIT09dHIoYy5tc2cpKWMubXNnPW1zZzsKICAgIGRyYWZ0c1tjdXJdPW51bGw7cGxhbk5vdGVbY3VyXT0nb2snO3JlbmRlcigpOwogIH07CiAgY29uc3Qgc2VlPSQoJyNwU2VlJyk7aWYoc2VlKXNlZS5vbmNsaWNrPSgpPT57YXRhYj0ndG9kYXknO3NldE1vZGUoJ0EnKTt9Owp9CgovKiAtLS0tLS0tLS0tIFRoZXJhcGlzdCBkYXNoYm9hcmQgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXIoKXsKICBjb25zdCBjPUNbY3VyXTtjb25zdCBhcHA9JCgnI2FwcCcpO2FwcC5jbGFzc0xpc3QudG9nZ2xlKCdjbGllbnR2aWV3JyxjbGllbnRWaWV3KTthcHAuY2xhc3NMaXN0LnRvZ2dsZSgnYXBwbW9kZScsbW9kZT09PSdBJyk7YXBwLmNsYXNzTGlzdC50b2dnbGUoJ3Btb2RlJyxtb2RlPT09J1AnKTskKCcjYW5vbldyYXAnKS5oaWRkZW49bW9kZT09PSdBJ3x8bW9kZT09PSdQJzsKICBpZihtb2RlPT09J0EnKXtyZW5kZXJBcHAoKTt0b3VyTWFyaygpO3JldHVybjt9CiAgaWYobW9kZT09PSdQJyl7cmVuZGVyUHJpdmFjeSgpO3RvdXJNYXJrKCk7cmV0dXJuO30KICByZW5kZXJMaXN0KCk7CiAgY29uc3Qgbj1jLnBocS5sZW5ndGgsZFA9Yy5waHFbbi0xXS1jLnBocVswXSxkRz1jLmdhZFtuLTFdLWMuZ2FkWzBdOwogIGNvbnN0IG1vb2RDb2xzPVsnLS1iYW5kMycsJy0tYmFuZDMnLCctLWJhbmQyJywnLS1iYW5kMicsJy0tYmFuZDInLCctLWJhbmQxJywnLS1iYW5kMScsJy0tc29mdCcsJy0tZ3JlZW4yJywnLS1ncmVlbjInLCctLWdyZWVuJ107CiAgY29uc3Qgd2Vla3M9QXJyYXkuZnJvbSh7bGVuZ3RoOjEyfSwoXyxpKT0+aTxuP2MubW9vZFtpXTpudWxsKTsKICBjb25zdCBldnM9T2JqZWN0LmVudHJpZXMoYy5ldmVudHMpOwogICQoJyNtYWluJykuaW5uZXJIVE1MPWAke2NsaWVudFZpZXc\/Jyc6dHJpYWdlQ2FyZCgpfQogIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJoZWFkIj48ZGl2PjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0cihjLmFnZSkpfSDCtyAke2VzYyh0cihjLmZvY3VzKSl9PC9zcGFuPjxoMT4ke2VzYyhubShjKSl9PC9oMT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZhY3RzIj48c3Bhbj4ke2VzYyh0KCdzdGFydGVkJykpfTxiPiR7ZXNjKHRyKGMuc3RhcnQpKX08L2I+PC9zcGFuPjxzcGFuPiR7ZXNjKHQoJ3Nlc3Npb25zJykpfTxiPiR7Yy5zZXNzaW9uc308L2I+PC9zcGFuPjxzcGFuPiR7ZXNjKHQoJ25leHRTZXNzaW9uJykpfTxiPiR7ZXNjKHRyKGMubmV4dCkpfTwvYj48L3NwYW4+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPgoKICA8c2VjdGlvbiBjbGFzcz0iY2FyZCBzdG9yeSI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoY2xpZW50Vmlldz8nc3RvcnlZb3VyJzonc3RvcnlEcmFmdCcpKX08L3NwYW4+CiAgICA8cD4ke2VzYyh0cihjbGllbnRWaWV3P2MuY3N0b3J5OmMuc3RvcnkpKX08L3A+CiAgICA8ZGl2IGNsYXNzPSJtZXRhIGNsaW4iPjxzcGFuPiR7ZXNjKHQoJ3N0b3J5TWV0YScpKX08L3NwYW4+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhcHByb3ZlIiBpZD0iYXBwcm92ZSIgJHthcHByb3ZlZFtjdXJdPydkaXNhYmxlZCc6Jyd9PiR7ZXNjKHQoYXBwcm92ZWRbY3VyXT8nc2hhcmVkJzonc2hhcmUnKSl9PC9idXR0b24+PC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8ZGl2IGNsYXNzPSJncmlkMiI+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3BocUsnKSl9PC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJiaWciPjxiPiR7Yy5waHFbbi0xXX0ke2MuY291cGxlPycgLyAnK2MucGhxMltuLTFdOicnfTwvYj48c3BhbiBjbGFzcz0iY2hnIiBzdHlsZT0iJHtkUD4wPydjb2xvcjp2YXIoLS13YXJuKSc6Jyd9Ij4ke2RQPD0wPyfilrwgJytNYXRoLmFicyhkUCk6J+KWsiAnK2RQfSAke2VzYyh0KCdzaW5jZScpKX08L3NwYW4+PC9kaXY+CiAgICAgICR7bGVnZW5kKGMpfTxkaXYgY2xhc3M9ImNoYXJ0Ij4ke2xpbmVDaGFydChjLnBocSwyNyxbLi4uZnVsbEJhbmRzKCksWzE1LDI3LHQoJ2JIaWdoJyksJy0tYmFuZDMnXV0sJ1BIUS05JywnLS1ncmVlbicsYy5waHEyKX08ZGl2IGNsYXNzPSJ0aXAiIGhpZGRlbj48L2Rpdj48L2Rpdj4KICAgICAgPHAgY2xhc3M9ImZvb3QiPiR7ZXNjKHQoJ3BocUZvb3QnKSl9PC9wPjwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnZ2FkSycpKX08L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImJpZyI+PGI+JHtjLmdhZFtuLTFdfSR7Yy5jb3VwbGU\/JyAvICcrYy5nYWQyW24tMV06Jyd9PC9iPjxzcGFuIGNsYXNzPSJjaGciIHN0eWxlPSIke2RHPjA\/J2NvbG9yOnZhcigtLXdhcm4pJzonJ30iPiR7ZEc8PTA\/J+KWvCAnK01hdGguYWJzKGRHKTon4payICcrZEd9ICR7ZXNjKHQoJ3NpbmNlJykpfTwvc3Bhbj48L2Rpdj4KICAgICAgJHtsZWdlbmQoYyl9PGRpdiBjbGFzcz0iY2hhcnQiPiR7bGluZUNoYXJ0KGMuZ2FkLDIxLFsuLi5mdWxsQmFuZHMoKSxbMTUsMjEsdCgnYkhpZ2gnKSwnLS1iYW5kMyddXSwnR0FELTcnLCctLWdvbGQnLGMuZ2FkMil9PGRpdiBjbGFzcz0idGlwIiBoaWRkZW4+PC9kaXY+PC9kaXY+CiAgICAgIDxwIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdnYWRGb290JykpfTwvcD48L3NlY3Rpb24+CiAgPC9kaXY+CgogICR7cGxhbkNhcmQoYyl9CgogIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJoZWFkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnbW9vZEsnKSl9PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InNjYWxlIj4ke2VzYyh0KCdsb3dlcicpKX0gPGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmFuZDMpIj48L2k+PGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmFuZDIpIj48L2k+PGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmFuZDEpIj48L2k+PGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tZ3JlZW4yKSI+PC9pPjxpIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKSI+PC9pPiAke2VzYyh0KCdoaWdoZXInKSl9IDxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4O2Rpc3BsYXk6aW5saW5lLWZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXIiPjxpIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjhweDtoZWlnaHQ6OHB4Ij48L2k+JHtlc2ModCgnbGlmZUV2JykpfTwvc3Bhbj48L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ3ZWVrcyI+JHt3ZWVrcy5tYXAoKG0saSk9Pm09PW51bGw\/YDxzcGFuIGNsYXNzPSJ3ayIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tc3Vuayk7Ym9yZGVyOjFweCBkYXNoZWQgdmFyKC0tbGluZSkiIHRpdGxlPSIke2VzYyh0KCd3ZWVrJykpfSAke2krMX06ICR7ZXNjKHQoJ25vdFlldCcpKX0iPjwvc3Bhbj5gOmA8c3BhbiBjbGFzcz0id2ske2MuZXZlbnRzW2krMV0\/JyBldic6Jyd9IiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoJHttb29kQ29sc1ttXX0pIiB0aXRsZT0iJHtlc2ModCgnd2VlaycpKX0gJHtpKzF9OiAke2VzYyh0KCdtb29kVycpKX0gJHttfS8xMCR7Yy5ldmVudHNbaSsxXT8nIMK3ICcrZXNjKHRyKGMuZXZlbnRzW2krMV0pKTonJ30iPjwvc3Bhbj5gKS5qb2luKCcnKX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9IndsYWJlbHMiPiR7QXJyYXkuZnJvbSh7bGVuZ3RoOjEyfSwoXyxpKT0+YDxzcGFuPiR7dCgnd2snKX0ke2krMX08L3NwYW4+YCkuam9pbignJyl9PC9kaXY+CiAgICA8cCBjbGFzcz0iZm9vdCI+JHtldnMubWFwKChbdyx4XSk9PmVzYyh0KCd3ZWVrJykpKycgJyt3KyhMPT09J2ZyJz8nwqA6ICc6JzogJykrZXNjKHRyKHgpKSkuam9pbignIMK3ICcpfTwvcD4KICA8L3NlY3Rpb24+CgogIDxkaXYgY2xhc3M9ImdyaWQyIj4KICAgICR7Z29hbHNDYXJkKGMpfQogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdwcmFjSycpKX08L3NwYW4+PGRpdiBjbGFzcz0icHJhYyI+JHtjLnByYWMubWFwKHA9PmA8ZGl2PjxiPiR7ZXNjKHRyKHBbMV0pKX08L2I+JHtlc2ModHIocFswXSkpfTwvZGl2PmApLmpvaW4oJycpfTwvZGl2PjxwIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdwcmFjRm9vdCcpKX08L3A+PC9zZWN0aW9uPgogIDwvZGl2PgoKICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3Nlc3NLJykpfTwvc3Bhbj4KICAgIDx1bCBjbGFzcz0idGwiPiR7Yy5zZXNzLm1hcChzPT5gPGxpPjxzcGFuIGNsYXNzPSJkIj4ke2VzYyh0cihzWzBdKSl9PC9zcGFuPjxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj48c3Bhbj4ke2VzYyh0cihzWzFdKSl9PHNwYW4gY2xhc3M9InRhZyI+JHtlc2ModHIoc1syXSkpfTwvc3Bhbj48L3NwYW4+PC9saT5gKS5qb2luKCcnKX08L3VsPgogICAgPHAgY2xhc3M9InByaXZhdGUgY2xpbiI+JHtlc2ModHIoYy5ub3RlKSl9PC9wPgogICAgPHAgY2xhc3M9ImZvb3QgY3Ytbm90ZSI+JHtlc2ModCgncHJpdkhpZGRlbicpKX08L3A+CiAgPC9zZWN0aW9uPgogICR7Y2xpZW50Vmlldz8nJzpkYXBDYXJkKGMpfQogIDxwIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdkYXNoRm9vdCcpKX08L3A+YDsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2hhcnQnKS5mb3JFYWNoKGNoPT57Y29uc3QgdGlwPWNoLnF1ZXJ5U2VsZWN0b3IoJy50aXAnKTtpZighdGlwKXJldHVybjtjaC5xdWVyeVNlbGVjdG9yQWxsKCcuaGl0JykuZm9yRWFjaChoPT57aC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywoKT0+e3RpcC50ZXh0Q29udGVudD1oLmRhdGFzZXQudDt0aXAuc3R5bGUubGVmdD0oaC5kYXRhc2V0LngqMTAwKSsnJSc7dGlwLnN0eWxlLnRvcD0oaC5kYXRhc2V0LnkqMTAwKSsnJSc7dGlwLmhpZGRlbj1mYWxzZTt9KTtoLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCgpPT50aXAuaGlkZGVuPXRydWUpO30pO30pOwogIGNvbnN0IGFwPSQoJyNhcHByb3ZlJyk7aWYoYXApYXAub25jbGljaz0oKT0+e2FwcHJvdmVkW2N1cl09dHJ1ZTthcC50ZXh0Q29udGVudD10KCdzaGFyZWQnKTthcC5kaXNhYmxlZD10cnVlO307CiAgYmluZFBsYW4oYyk7YmluZFRyaWFnZSgpO2JpbmREYXAoYyk7YmluZEdvYWxzKGMpO3RvdXJNYXJrKCk7Cn0KCi8qIC0tLS0tLS0tLS0gVHJpYWdlIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZmxhZ3NGb3IoYyxpKXsKICBjb25zdCBuPWMucGhxLmxlbmd0aCxmPVtdOwogIGNvbnN0IHE5PWMucTl8fChyZXNbaV0ucGhxJiZyZXNbaV0ucGhxLnE5PjApOwogIGlmKHE5KWYucHVzaChbJ2YtcmVkJyx0KCdmUTknKSw0XSk7CiAgY29uc3QgcnA9bj49ND9jLnBocVtuLTFdLWMucGhxW24tNF06MCxyZz1uPj00P2MuZ2FkW24tMV0tYy5nYWRbbi00XTowOwogIGlmKHJwPj0zKWYucHVzaChbJ2YtcmVkJyx0KCdmUmlzZScscnApLDNdKTtlbHNlIGlmKHJnPj0zKWYucHVzaChbJ2YtcmVkJyx0KCdmUmlzZUcnLHJnKSwzXSk7CiAgaWYoYy5sYXN0Q0k+PTcpZi5wdXNoKFsnZi1nb2xkJyx0KCdmUXVpZXQnLGMubGFzdENJKSwyXSk7CiAgaWYoYy5zdGF0dXM9PT0nbmV3JylmLnB1c2goWydmLWdvbGQnLHQoJ2ZOZXcnKSwxXSk7CiAgaWYoIWYubGVuZ3RoKWYucHVzaChbJ2Ytb2snLHQoJ2ZPaycpLDBdKTsKICByZXR1cm4gZjsKfQpmdW5jdGlvbiB0cmlhZ2VDYXJkKCl7CiAgY29uc3Qgcm93cz1DLm1hcCgoYyxpKT0+KHtjLGksZjpmbGFnc0ZvcihjLGkpfSkpLnNvcnQoKGEsYik9Pk1hdGgubWF4KC4uLmIuZi5tYXAoeD0+eFsyXSkpLU1hdGgubWF4KC4uLmEuZi5tYXAoeD0+eFsyXSkpKTsKICBjb25zdCBuZWVkPXJvd3MuZmlsdGVyKHI9PnIuZi5zb21lKHg9PnhbMF09PT0nZi1yZWQnKSkubGVuZ3RoOwogIHJldHVybiBgPHNlY3Rpb24gY2xhc3M9ImNhcmQgY2xpbiIgaWQ9InRyaWFnZSI+PGRpdiBjbGFzcz0iaGVhZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3RyaUsnKSl9PC9zcGFuPgogICAgPGRpdiBjbGFzcz0ic3Vtcm93Ij48c3Bhbj48YiBzdHlsZT0iY29sb3I6dmFyKC0td2FybikiPiR7bmVlZH08L2I+JHtlc2ModCgndHJpTmVlZCcpKX08L3NwYW4+PHNwYW4+PGI+JHtDLmxlbmd0aH08L2I+JHtlc2ModCgndHJpU2VzcycpKX08L3NwYW4+PHNwYW4+PGI+JHtDLmZpbHRlcihjPT5jLmxhc3RDSTw3KS5sZW5ndGh9PC9iPiR7ZXNjKHQoJ3RyaUNoZWNrJykpfTwvc3Bhbj48L2Rpdj48L2Rpdj4KICAgIDx1bCBjbGFzcz0idHJpIj4ke3Jvd3MubWFwKHI9PmA8bGk+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtdHJpPSIke3IuaX0iIGFyaWEtY3VycmVudD0iJHtyLmk9PT1jdXJ9Ij48c3Bhbj48Yj4ke2VzYyhubShyLmMpKX08L2I+PGJyPjxzcGFuIGNsYXNzPSJ3aGVuIj4ke2VzYyh0cihyLmMuZm9jdXMpKX08L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJ3aGVuIj4ke2VzYyh0cihyLmMubmV4dCkpfTwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhZ3MiPiR7ci5mLm1hcCh4PT5gPHNwYW4gY2xhc3M9ImZsYWcgJHt4WzBdfSI+JHtlc2MoeFsxXSl9PC9zcGFuPmApLmpvaW4oJycpfTwvc3Bhbj48L2J1dHRvbj48L2xpPmApLmpvaW4oJycpfTwvdWw+PHAgY2xhc3M9ImZvb3QiIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHgiPiR7ZXNjKHQoJ3RyaUZvb3QnKSl9PC9wPjwvc2VjdGlvbj5gOwp9CmZ1bmN0aW9uIGJpbmRUcmlhZ2UoKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10cmldJykuZm9yRWFjaChiPT5iLm9uY2xpY2s9KCk9PntjdXI9K2IuZGF0YXNldC50cmk7Z0VkaXQ9ZmFsc2U7cmVuZGVyKCk7fSk7fQpmdW5jdGlvbiBsZWdlbmQoYyl7cmV0dXJuIGMuY291cGxlP2A8ZGl2IGNsYXNzPSJsZWdlbmQiPjxzcGFuPjxpPjwvaT4ke2VzYyhjLmZpcnN0LnNwbGl0KCcgJiAnKVswXSl9LCAke2VzYyh0KCdzb2xpZCcpKX08L3NwYW4+PHNwYW4+PGkgY2xhc3M9ImRhc2giPjwvaT4ke2VzYyhjLmZpcnN0LnNwbGl0KCcgJiAnKVsxXSl9LCAke2VzYyh0KCdkYXNoZWQnKSl9PC9zcGFuPjwvZGl2PmA6Jyc7fQoKLyogLS0tLS0tLS0tLSBEQVAgc2Vzc2lvbiBub3RlIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZGFwVGV4dChjKXsKICBjb25zdCBuPWMucGhxLmxlbmd0aCxwPWMucGhxW24tMV0sZz1jLmdhZFtuLTFdOwogIHJldHVybiB0KCdkYXBEYXRhJyxjLHtwLHBiOmJhbmQoJ3BocScscCkscGQ6cC1jLnBocVswXSxnLGdiOmJhbmQoJ2dhZCcsZyksZ2Q6Zy1jLmdhZFswXSxtOmMubW9vZFtjLm1vb2QubGVuZ3RoLTFdLGRvbmU6Yy50YXNrcy5maWx0ZXIoeD0+eC5kb25lKS5sZW5ndGgsdG90OmMudGFza3MubGVuZ3RoLHE5OmMucTl8fChyZXNbY3VyXS5waHEmJnJlc1tjdXJdLnBocS5xOT4wKSxsYzpjLmxhc3RDSXx8MH0pOwp9CmZ1bmN0aW9uIGRhcENhcmQoYyl7CiAgY29uc3QgZD1ub3Rlc1tjdXJdfHx7YTonJyxwOicnLG1zZzonJ307CiAgcmV0dXJuIGA8c2VjdGlvbiBjbGFzcz0iY2FyZCBjbGluIiBpZD0iZGFwQ2FyZCI+PGRpdiBjbGFzcz0iaGVhZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2RhcEsnKSl9PC9zcGFuPiR7bG9ja05vdGUodCgnZGFwUHJpdicpKX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImRhcCI+CiAgICAgIDxzcGFuIGNsYXNzPSJsYmwiPiR7ZXNjKHQoJ2RhcEQnKSl9PHNtYWxsPiR7ZXNjKHQoJ2RhcERzJykpfTwvc21hbGw+PC9zcGFuPjxkaXYgY2xhc3M9ImF1dG8iIGlkPSJkYXBEIj4ke2VzYyhkYXBUZXh0KGMpKX08L2Rpdj4KICAgICAgPGxhYmVsIGNsYXNzPSJsYmwiIGZvcj0iZGFwQSI+JHtlc2ModCgnZGFwQScpKX08c21hbGw+JHtlc2ModCgnZGFwQXMnKSl9PC9zbWFsbD48L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iZmllbGQiIGlkPSJkYXBBIiBwbGFjZWhvbGRlcj0iJHtlc2ModCgnZGFwQXBoJykpfSI+JHtlc2MoZC5hKX08L3RleHRhcmVhPgogICAgICA8bGFiZWwgY2xhc3M9ImxibCIgZm9yPSJkYXBQIj4ke2VzYyh0KCdkYXBQJykpfTxzbWFsbD4ke2VzYyh0KCdkYXBQcycpKX08L3NtYWxsPjwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJmaWVsZCIgaWQ9ImRhcFAiIHBsYWNlaG9sZGVyPSIke2VzYyh0KCdkYXBQcGgnKSl9Ij4ke2VzYyhkLnApfTwvdGV4dGFyZWE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImJ0bnJvdyI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIGlkPSJkYXBTYXZlIj4ke2VzYyh0KCdkYXBTYXZlJykpfTwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWluaSIgaWQ9ImRhcENvcHkiPiR7ZXNjKHQoJ2RhcENvcHknKSl9PC9idXR0b24+PHNwYW4gY2xhc3M9Im9rIiBpZD0iZGFwTXNnIiByb2xlPSJzdGF0dXMiPjwvc3Bhbj48L2Rpdj4KICAgIDx0ZXh0YXJlYSBpZD0iZGFwT3V0IiBjbGFzcz0iZmllbGQiIGhpZGRlbiByZWFkb25seSBhcmlhLWxhYmVsPSIke2VzYyh0KCdkYXBLJykpfSI+PC90ZXh0YXJlYT48L3NlY3Rpb24+YDsKfQpmdW5jdGlvbiBiaW5kRGFwKGMpewogIGNvbnN0IGE9JCgnI2RhcEEnKSxwPSQoJyNkYXBQJyk7aWYoIWEpcmV0dXJuOwogIGNvbnN0IGtlZXBOPSgpPT57bm90ZXNbY3VyXT17YTphLnZhbHVlLHA6cC52YWx1ZX07fTthLm9uaW5wdXQ9a2VlcE47cC5vbmlucHV0PWtlZXBOOwogICQoJyNkYXBTYXZlJykub25jbGljaz0oKT0+e2tlZXBOKCk7JCgnI2RhcE1zZycpLnRleHRDb250ZW50PXQoJ2RhcFNhdmVkJyk7fTsKICAkKCcjZGFwQ29weScpLm9uY2xpY2s9KCk9PntrZWVwTigpO2NvbnN0IHR4dD1gJHt0KCdkYXBEJyl9OiAke2RhcFRleHQoYyl9XG5cbiR7dCgnZGFwQScpfTogJHthLnZhbHVlfVxuXG4ke3QoJ2RhcFAnKX06ICR7cC52YWx1ZX1gO2NvbnN0IG1zZz0kKCcjZGFwTXNnJyksb3V0PSQoJyNkYXBPdXQnKTsKICAgIGNvbnN0IGZhaWw9KCk9PntvdXQuaGlkZGVuPWZhbHNlO291dC52YWx1ZT10eHQ7b3V0LnNlbGVjdCgpO21zZy50ZXh0Q29udGVudD10KCdkYXBDb3B5RmFpbCcpO307CiAgICB0cnl7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodHh0KS50aGVuKCgpPT57b3V0LmhpZGRlbj10cnVlO21zZy50ZXh0Q29udGVudD10KCdkYXBDb3BpZWQnKTt9LGZhaWwpO31jYXRjaChlKXtmYWlsKCk7fX07Cn0KCi8qIC0tLS0tLS0tLS0gR29hbHMgKGVkaXRhYmxlKSAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGdvYWxzQ2FyZChjKXsKICBjb25zdCB2aWV3PWMuZ29hbHMubWFwKGc9PmA8ZGl2IGNsYXNzPSJnb2FsIj48ZGl2IGNsYXNzPSJyb3ciPjxoMz4ke2VzYyh0cihnWzBdKSl9PC9oMz48c3Bhbj4ke2dbMV19wqAlPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImJhciIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSIke2dbMV19ICR7ZXNjKHQoJ3BjdCcpKX0iPjxpIHN0eWxlPSJ3aWR0aDoke2dbMV19JSI+PC9pPjwvZGl2PjxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0cihnWzJdKSl9PC9zcGFuPjwvZGl2PmApLmpvaW4oJycpOwogIGNvbnN0IGVkaXQ9Yy5nb2Fscy5tYXAoKGcsaSk9PmA8ZGl2IGNsYXNzPSJnZWRpdCI+PGlucHV0IGNsYXNzPSJmaWVsZCIgaWQ9ImduLSR7aX0iIGRhdGEtZ249IiR7aX0iIHZhbHVlPSIke2VzYyh0cihnWzBdKSl9IiBhcmlhLWxhYmVsPSIke2VzYyh0KCdnTmFtZScpKX0gJHtpKzF9Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IngiIGRhdGEtZ3JtPSIke2l9IiBhcmlhLWxhYmVsPSIke2VzYyh0KCdnUmVtb3ZlJykpfTogJHtlc2ModHIoZ1swXSkpfSI+w5c8L2J1dHRvbj4KICAgIDxpbnB1dCBjbGFzcz0iZmllbGQiIGlkPSJndC0ke2l9IiBkYXRhLWd0PSIke2l9IiB2YWx1ZT0iJHtlc2ModHIoZ1syXSkpfSIgYXJpYS1sYWJlbD0iJHtlc2ModCgnZ05vdGUnKSl9ICR7aSsxfSIgc3R5bGU9ImdyaWQtY29sdW1uOjEvLTEiPgogICAgPGxhYmVsIGNsYXNzPSJybmciPjxpbnB1dCB0eXBlPSJyYW5nZSIgaWQ9ImdwLSR7aX0iIGRhdGEtZ3A9IiR7aX0iIG1pbj0iMCIgbWF4PSIxMDAiIHN0ZXA9IjUiIHZhbHVlPSIke2dbMV19IiBhcmlhLWxhYmVsPSIke2VzYyh0cihnWzBdKSl9ICUiPjxzcGFuIGlkPSJncHYtJHtpfSI+JHtnWzFdfcKgJTwvc3Bhbj48L2xhYmVsPjwvZGl2PmApLmpvaW4oJycpOwogIHJldHVybiBgPHNlY3Rpb24gY2xhc3M9ImNhcmQiIGlkPSJnb2Fsc0NhcmQiPjxkaXYgY2xhc3M9ImhlYWQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdnb2Fsc0snKSl9PC9zcGFuPiR7Y2xpZW50Vmlldz8nJzpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJtaW5pIGNsaW4iIGlkPSJnRWRpdEJ0biI+JHtlc2ModChnRWRpdD8nZ0RvbmUnOidnRWRpdCcpKX08L2J1dHRvbj5gfTwvZGl2PgogICAgJHtnRWRpdCYmIWNsaWVudFZpZXc\/ZWRpdCtgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJtaW5pIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0IiBpZD0iZ0FkZEJ0biI+KyAke2VzYyh0KCdnQWRkJykpfTwvYnV0dG9uPmA6dmlld308L3NlY3Rpb24+YDsKfQpmdW5jdGlvbiBiaW5kR29hbHMoYyl7CiAgY29uc3QgYj0kKCcjZ0VkaXRCdG4nKTtpZihiKWIub25jbGljaz0oKT0+e2lmKGdFZGl0KWMuZ29hbHM9Yy5nb2Fscy5maWx0ZXIoZz0+U3RyaW5nKHRyKGdbMF0pKS50cmltKCkpO2dFZGl0PSFnRWRpdDtyZW5kZXIoKTtjb25zdCBnYz0kKCcjZ29hbHNDYXJkJyk7aWYoZ2MpZ2Muc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiduZWFyZXN0J30pO307CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZ25dJykuZm9yRWFjaCh4PT54Lm9uaW5wdXQ9KCk9PntjLmdvYWxzWyt4LmRhdGFzZXQuZ25dWzBdPXgudmFsdWU7fSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZ3RdJykuZm9yRWFjaCh4PT54Lm9uaW5wdXQ9KCk9PntjLmdvYWxzWyt4LmRhdGFzZXQuZ3RdWzJdPXgudmFsdWU7fSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZ3BdJykuZm9yRWFjaCh4PT54Lm9uaW5wdXQ9KCk9PntjLmdvYWxzWyt4LmRhdGFzZXQuZ3BdWzFdPSt4LnZhbHVlOyQoJyNncHYtJyt4LmRhdGFzZXQuZ3ApLnRleHRDb250ZW50PXgudmFsdWUrJ8KgJSc7fSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZ3JtXScpLmZvckVhY2goeD0+eC5vbmNsaWNrPSgpPT57Yy5nb2Fscy5zcGxpY2UoK3guZGF0YXNldC5ncm0sMSk7cmVuZGVyKCk7fSk7CiAgY29uc3QgYWQ9JCgnI2dBZGRCdG4nKTtpZihhZClhZC5vbmNsaWNrPSgpPT57Yy5nb2Fscy5wdXNoKFt0KCdnTmV3JyksMCwnJ10pO3JlbmRlcigpO2NvbnN0IGk9Yy5nb2Fscy5sZW5ndGgtMSxlbD0kKCcjZ24tJytpKTtpZihlbCl7ZWwuZm9jdXMoKTtlbC5zZWxlY3QoKTt9fTsKfQoKLyogLS0tLS0tLS0tLSBQcml2YWN5IHZpZXcgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXJQcml2YWN5KCl7CiAgY29uc3QgdWw9YT0+YDx1bD4ke2EubWFwKHg9PmA8bGk+JHt4fTwvbGk+YCkuam9pbignJyl9PC91bD5gOwogICQoJyNtYWluJykuaW5uZXJIVE1MPWAKICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3B2Q2xpZW50SycpKX08L3NwYW4+PGgyPiR7ZXNjKHQoJ3B2Q2xpZW50SCcpKX08L2gyPiR7dWwodCgncHZDbGllbnQnKSl9PC9zZWN0aW9uPgogIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgncHZUaGVySycpKX08L3NwYW4+PGgyPiR7ZXNjKHQoJ3B2VGhlckgnKSl9PC9oMj48L3NlY3Rpb24+CiAgPGRpdiBjbGFzcz0icHYiPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxoMz4ke2VzYyh0KCdwdldob0gnKSl9PC9oMz4ke3VsKHQoJ3B2V2hvJykpfTwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48aDM+JHtlc2ModCgncHZEZXNpZ25IJykpfTwvaDM+JHt1bCh0KCdwdkRlc2lnbicpKX08L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PGgzPiR7ZXNjKHQoJ3B2TGlzdEgnKSl9PC9oMz4ke3VsKHQoJ3B2TGlzdCcpKX08L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PGgzPiR7ZXNjKHQoJ3B2RnV0dXJlSCcpKX08L2gzPjxwIHN0eWxlPSJmb250LXNpemU6MTRweCI+JHtlc2ModCgncHZGdXR1cmUnKSl9PC9wPjwvc2VjdGlvbj4KICA8L2Rpdj4KICA8cCBjbGFzcz0iZm9vdCI+JHtlc2ModCgncHZGaW5lJykpfTwvcD5gOwp9CgovKiAtLS0tLS0tLS0tIEZlZWxpbmdzIHdoZWVsIC0tLS0tLS0tLS0gKi8KY29uc3QgRlc9W1tFKCdIYXBweScsJ0pveWV1eCcpLCcjMkU3MjVDJywnIzdGQjU5QycsW0UoJ0NvbnRlbnQnLCdTYXRpc2ZhaXQnKSxFKCdQcm91ZCcsJ0ZpZXInKSxFKCdIb3BlZnVsJywnUGxlaW4gZOKAmWVzcG9pcicpLEUoJ0dyYXRlZnVsJywnUmVjb25uYWlzc2FudCcpLEUoJ1BlYWNlZnVsJywnUGFpc2libGUnKSxFKCdQbGF5ZnVsJywnRW5qb3XDqScpXV0sCiBbRSgnTG92ZWQnLCdBaW3DqScpLCcjNUU4RjVBJywnI0E5QzlBMScsW0UoJ0NhcmVkIGZvcicsJ1NvdXRlbnUnKSxFKCdBY2NlcHRlZCcsJ0FjY2VwdMOpJyksRSgnQ29ubmVjdGVkJywnTGnDqSBhdXggYXV0cmVzJyksRSgnU2FmZScsJ0VuIHPDqWN1cml0w6knKSxFKCdWYWx1ZWQnLCdWYWxvcmlzw6knKSxFKCdDbG9zZScsJ1Byb2NoZScpXV0sCiBbRSgnU3VycHJpc2VkJywnU3VycHJpcycpLCcjQjg4NjJBJywnI0UzQzI3QScsW0UoJ0FtYXplZCcsJ8OJbWVydmVpbGzDqScpLEUoJ0NvbmZ1c2VkJywnQ29uZnVzJyksRSgnU3RhcnRsZWQnLCdTYWlzaScpLEUoJ0V4Y2l0ZWQnLCdFbnRob3VzaWFzdGUnKSxFKCdVbnN1cmUnLCdJbmNlcnRhaW4nKV1dLAogW0UoJ0FmcmFpZCcsJ0VmZnJhecOpJyksJyM4QTZFM0MnLCcjQ0RCNTg1JyxbRSgnQW54aW91cycsJ0FueGlldXgnKSxFKCdXb3JyaWVkJywnSW5xdWlldCcpLEUoJ092ZXJ3aGVsbWVkJywnRMOpcGFzc8OpJyksRSgnSW5zZWN1cmUnLCdQZXUgc8O7ciBkZSBtb2knKSxFKCdOZXJ2b3VzJywnTmVydmV1eCcpLEUoJ0hlbHBsZXNzJywnSW1wdWlzc2FudCcpXV0sCiBbRSgnQW5ncnknLCdFbiBjb2zDqHJlJyksJyNBMjU2M0UnLCcjRDlBMDhCJyxbRSgnRnJ1c3RyYXRlZCcsJ0ZydXN0csOpJyksRSgnSXJyaXRhdGVkJywnSXJyaXTDqScpLEUoJ1Jlc2VudGZ1bCcsJ1JhbmN1bmllcicpLEUoJ0JldHJheWVkJywnVHJhaGknKSxFKCdKZWFsb3VzJywnSmFsb3V4JyksRSgnRGlzcmVzcGVjdGVkJywnTcOpcHJpc8OpJyldXSwKIFtFKCdTYWQnLCdUcmlzdGUnKSwnIzRGNkU4NicsJyM5REI0QzYnLFtFKCdMb25lbHknLCdTZXVsJyksRSgnRGlzYXBwb2ludGVkJywnRMOpw6d1JyksRSgnR3JpZXZpbmcnLCdFbiBkZXVpbCcpLEUoJ0hvcGVsZXNzJywnRMOpc2VzcMOpcsOpJyksRSgnRGlzY291cmFnZWQnLCdEw6ljb3VyYWfDqScpLEUoJ0h1cnQnLCdCbGVzc8OpJyldXSwKIFtFKCdBc2hhbWVkJywnSG9udGV1eCcpLCcjNkQ1RjdDJywnI0I0QThDMicsW0UoJ0VtYmFycmFzc2VkJywnR8OqbsOpJyksRSgnR3VpbHR5JywnQ291cGFibGUnKSxFKCdJbmFkZXF1YXRlJywnUGFzIMOgIGxhIGhhdXRldXInKSxFKCdFeHBvc2VkJywnRXhwb3PDqScpLEUoJ1JlZ3JldGZ1bCcsJ1BsZWluIGRlIHJlZ3JldHMnKV1dLAogW0UoJ1RpcmVkJywnRmF0aWd1w6knKSwnIzZENjI1NCcsJyNCOEFFOUYnLFtFKCdEcmFpbmVkJywnVmlkw6knKSxFKCdOdW1iJywnRW5nb3VyZGknKSxFKCdCdXJudCBvdXQnLCfDiXB1aXPDqScpLEUoJ1Jlc3RsZXNzJywnQWdpdMOpJyksRSgnVW5tb3RpdmF0ZWQnLCdEw6ltb3RpdsOpJyldXV07CmNvbnN0IGNvcmVPZj1rPT5GVy5maW5kKGY9PmZbMF0uZW49PT1rKTsKY29uc3Qgd29yZE5hbWU9az0+e2Zvcihjb25zdCBmIG9mIEZXKXtjb25zdCB3PWZbM10uZmluZCh4PT54LmVuPT09ayk7aWYodylyZXR1cm4gdHIodyk7fXJldHVybiBrO307CmNvbnN0IExPQ0s9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHJlY3QgeD0iNSIgeT0iMTEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiLz48cGF0aCBkPSJNOCAxMVY3YTQgNCAwIDAgMSA4IDB2NCIvPjwvc3ZnPic7CmNvbnN0IGxvY2tOb3RlPXg9PmA8c3BhbiBjbGFzcz0ibG9jayI+JHtMT0NLfSR7ZXNjKHgpfTwvc3Bhbj5gOwpmdW5jdGlvbiB3aGVlbCgpe2NvbnN0IGN4PTE1MCxjeT0xNTAsUj0xNDAscj01MixuPUZXLmxlbmd0aDtsZXQgZz0nJztGVy5mb3JFYWNoKChmLGkpPT57Y29uc3QgYTA9KGkvbikqMipNYXRoLlBJLU1hdGguUEkvMixhMT0oKGkrMSkvbikqMipNYXRoLlBJLU1hdGguUEkvMjtjb25zdCBQPShhLHJhZCk9PltjeCtyYWQqTWF0aC5jb3MoYSksY3krcmFkKk1hdGguc2luKGEpXTtjb25zdCBbeDAseTBdPVAoYTAsUiksW3gxLHkxXT1QKGExLFIpLFt4Mix5Ml09UChhMSxyKSxbeDMseTNdPVAoYTAscik7Y29uc3Qgb249ZncuY29yZXMuaW5jbHVkZXMoZlswXS5lbik7Y29uc3QgYW09KGEwK2ExKS8yLFt0eCx0eV09UChhbSwoUityKS8yKTsKICBnKz1gPGcgY2xhc3M9InNlZy1zIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBhcmlhLXByZXNzZWQ9IiR7b259IiBhcmlhLWxhYmVsPSIke2VzYyh0cihmWzBdKSl9IiBkYXRhLWM9IiR7ZXNjKGZbMF0uZW4pfSI+PHBhdGggZD0iTSR7eDB9ICR7eTB9IEEke1J9ICR7Un0gMCAwIDEgJHt4MX0gJHt5MX0gTCR7eDJ9ICR7eTJ9IEEke3J9ICR7cn0gMCAwIDAgJHt4M30gJHt5M31aIiBmaWxsPSIke29uP2ZbMV06ZlsyXX0iIHN0cm9rZT0idmFyKC0tcGFuZWwpIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIke3R4fSIgeT0iJHt0eSs0fSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iJHtvbj8nI0ZGRkRGNyc6JyMzMDI5MUYnfSIgc3R5bGU9InBvaW50ZXItZXZlbnRzOm5vbmUiPiR7ZXNjKHRyKGZbMF0pKX08L3RleHQ+PC9nPmA7fSk7CiAgcmV0dXJuIGA8c3ZnIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtlc2ModCgnZndMYWJlbCcpKX0iPiR7Z308Y2lyY2xlIGN4PSIke2N4fSIgY3k9IiR7Y3l9IiByPSIke3ItNH0iIGZpbGw9InZhcigtLXBhbmVsKSIvPjx0ZXh0IHg9IiR7Y3h9IiB5PSIke2N5LTJ9IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjExIiBmaWxsPSJ2YXIoLS1tdXRlZCkiPiR7ZXNjKHQoJ2Z3QzEnKSl9PC90ZXh0Pjx0ZXh0IHg9IiR7Y3h9IiB5PSIke2N5KzEyfSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMC41IiBmaWxsPSJ2YXIoLS1tdXRlZCkiPiR7ZXNjKHQoJ2Z3QzInKSl9PC90ZXh0Pjwvc3ZnPmA7fQoKY29uc3QgSUM9e3JlcG9ydDonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIGQ9Ik03IDNoN2w1IDV2MTNIN3oiLz48cGF0aCBkPSJNMTQgM3Y1aDVNMTAgMTNoNk0xMCAxN2g2Ii8+PC9zdmc+Jyx0b2RheTonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIGQ9Ik0zIDExbDktNyA5IDd2OWExIDEgMCAwIDEtMSAxaC01di02SDl2Nkg0YTEgMSAwIDAgMS0xLTF6Ii8+PC9zdmc+Jyxwcm9ncmVzczonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIGQ9Ik00IDE5bDUtNiA0IDMgNy05Ii8+PC9zdmc+JyxwcmFjdGljZTonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjkiLz48cGF0aCBkPSJNOCAxMmwzIDMgNS02Ii8+PC9zdmc+J307CgovKiAtLS0tLS0tLS0tIENsaWVudCBhcHAgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBkdWVSb3codyl7CiAgY29uc3Qgcj1yZXNbY3VyXVt3XTsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImR1ZXIiPjxzcGFuPjxiIHN0eWxlPSJjb2xvcjp2YXIoLS1pbmspIj4ke2VzYyh0KHcrJ05hbWUnKSl9PC9iPjxzbWFsbD4ke2VzYyh0KHcrJ1N1YicpKX08L3NtYWxsPjwvc3Bhbj4ke3I\/YDxzcGFuIGNsYXNzPSJkb25lIj7inJMgJHtlc2ModCgnZG9uZVNjb3JlJykpfSAke3Iuc2NvcmV9PC9zcGFuPmA6YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWluaSIgZGF0YS1xdWl6PSIke3d9Ij4ke2VzYyh0KCdzdGFydCcpKX08L2J1dHRvbj5gfTwvZGl2PmA7Cn0KZnVuY3Rpb24gcmVuZGVyQXBwKCl7CiAgY29uc3QgYz1DW2N1cl0sbj1jLnBocS5sZW5ndGg7CiAgbGV0IGJvZHk9Jyc7CiAgaWYoYXRhYj09PSd0b2RheScpewogICAgYm9keT1gPGRpdiBjbGFzcz0iaGkiPiR7ZXNjKHQoJ2hpJykpfSAke2VzYyhjLmZpcnN0KX08L2Rpdj4ke2xvY2tOb3RlKHQoJ3N0YXlQaG9uZScpKX0KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnbmV4dFNlc3Npb24nKSl9PC9zcGFuPjxoMz4ke2VzYyh0cihjLm5leHQpKX08L2gzPjxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCd3aXRoVCcpKX08L3NwYW4+PC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdmcm9tVCcpKX08L3NwYW4+PGRpdiBjbGFzcz0ibXNnIj4ke2VzYyh0cihjLm1zZykpfTwvZGl2Pjwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnd2Vla1ByYWMnKSl9PC9zcGFuPiR7Yy50YXNrcy5tYXAoKHRrLGkpPT5gPGxhYmVsIGNsYXNzPSJ0YXNrIj48aW5wdXQgdHlwZT0iY2hlY2tib3giICR7dGsuZG9uZT8nY2hlY2tlZCc6Jyd9IGRhdGEtdD0iJHtpfSI+PHNwYW4+JHtlc2ModGFza05hbWUodGspKX08c21hbGw+JHtlc2Mod2hlblRleHQodGspKX08L3NtYWxsPjwvc3Bhbj48YSBjbGFzcz0ibWluaSIgaHJlZj0iJHtUT09MU30ke3RrLnRvb2x9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+JHtlc2ModCgnb3BlbicpKX08L2E+PC9sYWJlbD5gKS5qb2luKCcnKX08L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2R1ZUsnKSl9ICR7ZXNjKHRyKGMuZHVlKSl9PC9zcGFuPiR7ZHVlUm93KCdwaHEnKX0ke2R1ZVJvdygnZ2FkJyl9PC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdwcmVwSycpKX0gJHtlc2ModHIoYy5kdWUpKX08L3NwYW4+CiAgICAgICR7Yy5wcmVwLmxlbmd0aD9gPHVsIGNsYXNzPSJwcmVwbCI+JHtjLnByZXAubWFwKChwLGkpPT5gPGxpPjxzcGFuPiR7ZXNjKHRyKHApKX08L3NwYW4+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ4IiBkYXRhLXJtPSIke2l9IiBhcmlhLWxhYmVsPSIke2VzYyh0KCdwcmVwUmVtb3ZlJykpfTogJHtlc2ModHIocCkpfSI+w5c8L2J1dHRvbj48L2xpPmApLmpvaW4oJycpfTwvdWw+YDpgPHAgY2xhc3M9ImZvb3QiPiR7ZXNjKHQoJ3ByZXBFbXB0eScpKX08L3A+YH0KICAgICAgPGZvcm0gY2xhc3M9ImFkZHJvdyIgaWQ9InByZXBGb3JtIj48aW5wdXQgY2xhc3M9ImZpZWxkIiBpZD0icHJlcEluIiBtYXhsZW5ndGg9IjE0MCIgcGxhY2Vob2xkZXI9IiR7ZXNjKHQoJ3ByZXBQaCcpKX0iIGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ3ByZXBMYWJlbCcpKX0iPjxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0ibWluaSI+JHtlc2ModCgncHJlcEFkZCcpKX08L2J1dHRvbj48L2Zvcm0+CiAgICAgIDxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdwcmVwRm9vdCcpKX08L3NwYW4+PC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdxdWljaycpKX08L3NwYW4+CiAgICAgIDxsYWJlbCBjbGFzcz0ic2wiPiR7ZXNjKHQoJ21vb2RUb2RheScpKX0gPGlucHV0IHR5cGU9InJhbmdlIiBpZD0ic01vb2QiIG1pbj0iMCIgbWF4PSIxMCIgdmFsdWU9IiR7Yy5tb29kW24tMV19Ij48L2xhYmVsPgogICAgICA8bGFiZWwgY2xhc3M9InNsIj4ke2VzYyh0KCdzdHJlc3MnKSl9IDxpbnB1dCB0eXBlPSJyYW5nZSIgaWQ9InNTdHJlc3MiIG1pbj0iMCIgbWF4PSIxMCIgdmFsdWU9IjQiPjwvbGFiZWw+CiAgICAgIDxsYWJlbCBjbGFzcz0ic2wiPiR7ZXNjKHQoJ3NsZWVwTCcpKX0gPGlucHV0IHR5cGU9InJhbmdlIiBpZD0ic1NsZWVwIiBtaW49IjAiIG1heD0iMTAiIHZhbHVlPSI2Ij48L2xhYmVsPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImN0YSIgaWQ9ImFTZW5kIj4ke2VzYyh0KCdzYXZlQ0knKSl9PC9idXR0b24+PHNwYW4gY2xhc3M9ImZvb3QiIGlkPSJhU2VudCIgYXJpYS1saXZlPSJwb2xpdGUiPjwvc3Bhbj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2ZlZWxLJykpfTwvc3Bhbj48cCBzdHlsZT0iZm9udC1zaXplOjE0cHgiPiR7ZXNjKHQoJ2ZlZWxQJykpfTwvcD48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGRhdGEtZ289ImZlZWwiPiR7ZXNjKHQoJ2ZlZWxPcGVuJykpfTwvYnV0dG9uPjwvc2VjdGlvbj4KICAgIDxkaXYgY2xhc3M9ImNyaXNpc2JhciI+JHt0KCdjcmlzaXMnKX0gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJtaW5pIiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiIGRhdGEtc2FmZT0idG9kYXkiPiR7ZXNjKHQoJ3NhZmV0eU9wZW4nKSl9PC9idXR0b24+PC9kaXY+YDsKICB9ZWxzZSBpZihhdGFiPT09J3NhZmV0eScpewogICAgY29uc3Qgc2VjPShudW0sa2V5LGgsaGludCk9PmA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0ic3RlcCI+PHNwYW4gY2xhc3M9Im51bSI+JHtudW19PC9zcGFuPjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttaW4td2lkdGg6MCI+PGgzPiR7ZXNjKHQoaCkpfTwvaDM+PHNwYW4gY2xhc3M9ImZvb3QiPiR7ZXNjKHQoaGludCkpfTwvc3Bhbj4KICAgICAgJHtjLnNhZmV0eVtrZXldLmxlbmd0aD9gPHVsIGNsYXNzPSJwcmVwbCI+JHtjLnNhZmV0eVtrZXldLm1hcCgocCxpKT0+YDxsaT48c3Bhbj4ke2VzYyh0cihwKSl9PC9zcGFuPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ieCIgZGF0YS1zcm09IiR7a2V5fToke2l9IiBhcmlhLWxhYmVsPSIke2VzYyh0KCdwcmVwUmVtb3ZlJykpfTogJHtlc2ModHIocCkpfSI+w5c8L2J1dHRvbj48L2xpPmApLmpvaW4oJycpfTwvdWw+YDonJ30KICAgICAgPGZvcm0gY2xhc3M9ImFkZHJvdyIgZGF0YS1zZj0iJHtrZXl9Ij48aW5wdXQgY2xhc3M9ImZpZWxkIiBpZD0ic2YtJHtrZXl9IiBtYXhsZW5ndGg9IjEwMCIgcGxhY2Vob2xkZXI9IiR7ZXNjKHQoJ3NBZGRQaCcpKX0iIGFyaWEtbGFiZWw9IiR7ZXNjKHQoaCkpfTogJHtlc2ModCgnc0FkZFBoJykpfSI+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJtaW5pIj4ke2VzYyh0KCdzQWRkJykpfTwvYnV0dG9uPjwvZm9ybT48L2Rpdj48L2Rpdj48L3NlY3Rpb24+YDsKICAgIGNvbnN0IHByb3M9W1t0KCdzVGhlcicpLHQoJ3NUaGVyTicpKycgJyt0cihjLm5leHQpXSxbdCgnczk4OCcpLHQoJ3M5ODhuJyldLFt0KCdzOTExJyksdCgnczkxMW4nKV0sW3QoJ3M4MTEnKSx0KCdzODExbicpXV07CiAgICBpZihjLmFnZS5lbj09PSdBZG9sZXNjZW50Jylwcm9zLnB1c2goW3QoJ3NLaHAnKSx0KCdzS2hwTicpXSk7CiAgICBib2R5PWA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGRhdGEtZ289IiR7c2FmZUZyb219Ij4ke2VzYyh0KCdiYWNrJykpfTwvYnV0dG9uPjxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KCdzYWZldHlIJykpfTwvZGl2PiR7bG9ja05vdGUodCgnc2F2ZWRPbmx5JykpfTxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdzYWZldHlJbnRybycpKX08L3NwYW4+CiAgICAke3NlYygxLCd3YXJuJywnc1dhcm4nLCdzV2FybkgnKX0ke3NlYygyLCdjb3BlJywnc0NvcGUnLCdzQ29wZUgnKX0ke3NlYygzLCdkaXMnLCdzRGlzJywnc0Rpc0gnKX0ke3NlYyg0LCdwZW8nLCdzUGVvJywnc1Blb0gnKX0KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJzdGVwIj48c3BhbiBjbGFzcz0ibnVtIj41PC9zcGFuPjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttaW4td2lkdGg6MCI+PGgzPiR7ZXNjKHQoJ3NQcm8nKSl9PC9oMz48c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgnc1Byb0gnKSl9PC9zcGFuPjxkaXY+JHtwcm9zLm1hcChwPT5gPGRpdiBjbGFzcz0ibGluZSI+PHNwYW4+JHtlc2MocFswXSl9PC9zcGFuPjxzcGFuPiR7ZXNjKHBbMV0pfTwvc3Bhbj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj48L2Rpdj48L2Rpdj48L3NlY3Rpb24+CiAgICAke3NlYyg2LCdzYWZlJywnc1NhZmUnLCdzU2FmZUgnKX1gOwogIH1lbHNlIGlmKGF0YWI9PT0nc2xlZXAnKXsKICAgIGNvbnN0IHM9Yy5zbGVlcCxXPTMyMCxIPTE3MCxMMD0yNixSPTgsVD0xMCxCPTI0LGJ3PShXLUwwLVIpLzcseT12PT5UKygxLXYvMTApKihILVQtQiksZGF5cz10KCdkYXlzJyk7CiAgICBjb25zdCBhdmc9TWF0aC5yb3VuZChzLnJlZHVjZSgoYSxiKT0+YStiLDApLzcqMTApLzEwOwogICAgbGV0IHN2Zz1gPHN2ZyB2aWV3Qm94PSIwIDAgJHtXfSAke0h9IiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ3NsZWVwSycpKX0iPmA7CiAgICBbMCw1LDEwXS5mb3JFYWNoKHY9PntzdmcrPWA8bGluZSB4MT0iJHtMMH0iIHgyPSIke1ctUn0iIHkxPSIke3kodil9IiB5Mj0iJHt5KHYpfSIgc3Ryb2tlPSJ2YXIoLS1saW5lKSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgY2xhc3M9ImxhYiIgeD0iJHtMMC02fSIgeT0iJHt5KHYpKzR9IiB0ZXh0LWFuY2hvcj0iZW5kIj4ke3Z9PC90ZXh0PmA7fSk7CiAgICBzLmZvckVhY2goKHYsaSk9Pntjb25zdCB4PUwwK2kqYncrYncqLjE4LHc9YncqLjY0O3N2Zys9YDxyZWN0IHg9IiR7eH0iIHk9IiR7eSh2KX0iIHdpZHRoPSIke3d9IiBoZWlnaHQ9IiR7eSgwKS15KHYpfSIgcng9IjQiIGZpbGw9InZhcigke3Y+PTc\/Jy0tZ3JlZW4nOictLWdyZWVuMid9KSI+PHRpdGxlPiR7ZGF5c1tpXX06ICR7dn0gaDwvdGl0bGU+PC9yZWN0Pjx0ZXh0IGNsYXNzPSJsYWIiIHg9IiR7eCt3LzJ9IiB5PSIke0gtNn0iIHRleHQtYW5jaG9yPSJtaWRkbGUiPiR7ZGF5c1tpXX08L3RleHQ+YDt9KTsKICAgIHN2Zys9YDxsaW5lIHgxPSIke0wwfSIgeDI9IiR7Vy1SfSIgeTE9IiR7eSg3KX0iIHkyPSIke3koNyl9IiBzdHJva2U9InZhcigtLWdvbGQpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIvPjx0ZXh0IGNsYXNzPSJsYWIiIHg9IiR7Vy1SfSIgeT0iJHt5KDcpLTV9IiB0ZXh0LWFuY2hvcj0iZW5kIiBzdHlsZT0iZmlsbDp2YXIoLS1nb2xkKTtmb250LXdlaWdodDo3MDAiPiR7ZXNjKHQoJ3NsZWVwR29hbCcpKX08L3RleHQ+PC9zdmc+YDsKICAgIGJvZHk9YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWluaSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydCIgZGF0YS1nbz0icHJhY3RpY2UiPiR7ZXNjKHQoJ2JhY2snKSl9PC9idXR0b24+PGRpdiBjbGFzcz0iaGkiPiR7ZXNjKHQoJ3NsZWVwSCcpKX08L2Rpdj4ke2xvY2tOb3RlKHQoJ3NhdmVkT25seScpKX0KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnc2xlZXBLJykpfTwvc3Bhbj48ZGl2IGNsYXNzPSJiaWciPjxiPiR7U3RyaW5nKGF2ZykucmVwbGFjZSgnLicsTD09PSdmcic\/JywnOicuJyl9PC9iPjxzcGFuIGNsYXNzPSJjaGciPmggwrcgJHtlc2ModCgnc2xlZXBBdmcnLGF2ZykpfTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJiYXJzIj4ke3N2Z308L2Rpdj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PGZvcm0gaWQ9InNsRm9ybSIgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweCI+PGxhYmVsIGNsYXNzPSJrIiBmb3I9InNsSW4iPiR7ZXNjKHQoJ3NsZWVwTGFzdCcpKX08L2xhYmVsPjxkaXYgY2xhc3M9ImFkZHJvdyI+PGlucHV0IGNsYXNzPSJmaWVsZCIgaWQ9InNsSW4iIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjE0IiBzdGVwPSIwLjUiIHZhbHVlPSIke3NbNl19IiBpbnB1dG1vZGU9ImRlY2ltYWwiPjxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0ibWluaSI+JHtlc2ModCgnc2xlZXBTYXZlJykpfTwvYnV0dG9uPjwvZGl2PjxzcGFuIGNsYXNzPSJmb290IiBpZD0ic2xNc2ciIGFyaWEtbGl2ZT0icG9saXRlIj48L3NwYW4+PC9mb3JtPjwvc2VjdGlvbj5gOwogIH1lbHNlIGlmKGF0YWI9PT0nc2V0dGluZ3MnKXsKICAgIGNvbnN0IHRzZWw9WycwNzowMCcsJzA4OjAwJywnMTI6MDAnLCcxOTowMCcsJzIxOjAwJ10ubWFwKHY9PmA8b3B0aW9uICR7c2V0LnJlbVBUPT09dj8nc2VsZWN0ZWQnOicnfT4ke0w9PT0nZnInP3YucmVwbGFjZSgnOicsJyBoICcpOnZ9PC9vcHRpb24+YCkuam9pbignJyk7CiAgICBjb25zdCBkc2VsPU9iamVjdC5rZXlzKFMuZW4ud2QpLm1hcChrPT5gPG9wdGlvbiB2YWx1ZT0iJHtrfSIgJHtzZXQucmVtQ0Q9PT1rPydzZWxlY3RlZCc6Jyd9PiR7ZXNjKHQoJ3dkJylba10pfTwvb3B0aW9uPmApLmpvaW4oJycpOwogICAgY29uc3QgZmlyc3RUYXNrPWMudGFza3NbMF0\/dGFza05hbWUoYy50YXNrc1swXSk6Jyc7CiAgICBjb25zdCBwdD1MPT09J2ZyJz9zZXQucmVtUFQucmVwbGFjZSgnOicsJyBoICcpOnNldC5yZW1QVDsKICAgIGJvZHk9YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWluaSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydCIgZGF0YS1nbz0icHJhY3RpY2UiPiR7ZXNjKHQoJ2JhY2snKSl9PC9idXR0b24+PGRpdiBjbGFzcz0iaGkiPiR7ZXNjKHQoJ3NldEgnKSl9PC9kaXY+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3JlbUsnKSl9PC9zcGFuPgogICAgICA8bGFiZWwgY2xhc3M9InRnbCIgZm9yPSJyUCI+PHNwYW4+JHtlc2ModCgncmVtUCcpKX08L3NwYW4+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iclAiICR7c2V0LnJlbVA\/J2NoZWNrZWQnOicnfT48L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJhZGRyb3ciIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnI7YWxpZ24taXRlbXM6Y2VudGVyIj48c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgncmVtQXQnKSl9PC9zcGFuPjxzZWxlY3QgY2xhc3M9ImZpZWxkIiBpZD0iclBUIiAke3NldC5yZW1QPycnOidkaXNhYmxlZCd9IGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ3JlbVAnKSl9Ij4ke3RzZWx9PC9zZWxlY3Q+PC9kaXY+CiAgICAgIDxsYWJlbCBjbGFzcz0idGdsIiBmb3I9InJDIj48c3Bhbj4ke2VzYyh0KCdyZW1DJykpfTwvc3Bhbj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJyQyIgJHtzZXQucmVtQz8nY2hlY2tlZCc6Jyd9PjwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9ImFkZHJvdyIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjthbGlnbi1pdGVtczpjZW50ZXIiPjxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdyZW1PbicpKX08L3NwYW4+PHNlbGVjdCBjbGFzcz0iZmllbGQiIGlkPSJyQ0QiICR7c2V0LnJlbUM\/Jyc6J2Rpc2FibGVkJ30gYXJpYS1sYWJlbD0iJHtlc2ModCgncmVtQycpKX0iPiR7ZHNlbH08L3NlbGVjdD48L2Rpdj4KICAgICAgJHtzZXQucmVtUHx8c2V0LnJlbUM\/YDxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdyZW1QcmV2JykpfTwvc3Bhbj5gOicnfQogICAgICAke3NldC5yZW1QP2A8ZGl2IGNsYXNzPSJub3RpZiI+PHNwYW4gY2xhc3M9Im1hcmsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ2YXIoLS1vbkdyZWVuKSIgc3Ryb2tlLXdpZHRoPSIyIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5Ii8+PHBhdGggZD0iTTEyIDVsMi4yIDdMMTIgMTlsLTIuMi03eiIgZmlsbD0idmFyKC0tb25HcmVlbikiLz48L3N2Zz48L3NwYW4+PHNwYW4+PHNtYWxsPkF0bGFzIMK3ICR7ZXNjKHB0KX08L3NtYWxsPiR7ZXNjKHQoJ3JlbVBNc2cnLGZpcnN0VGFzaykpfTwvc3Bhbj48L2Rpdj5gOicnfQogICAgICAke3NldC5yZW1DP2A8ZGl2IGNsYXNzPSJub3RpZiI+PHNwYW4gY2xhc3M9Im1hcmsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ2YXIoLS1vbkdyZWVuKSIgc3Ryb2tlLXdpZHRoPSIyIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5Ii8+PHBhdGggZD0iTTEyIDVsMi4yIDdMMTIgMTlsLTIuMi03eiIgZmlsbD0idmFyKC0tb25HcmVlbikiLz48L3N2Zz48L3NwYW4+PHNwYW4+PHNtYWxsPkF0bGFzIMK3ICR7ZXNjKHQoJ3dkJylbc2V0LnJlbUNEXSl9PC9zbWFsbD4ke2VzYyh0KCdyZW1DTXNnJykpfTwvc3Bhbj48L2Rpdj5gOicnfQogICAgICA8c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgncmVtTm90ZScpKX08L3NwYW4+PC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdkaXNwSycpKX08L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWluaykiPiR7ZXNjKHQoJ3R4dFNpemUnKSl9PC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJ3aG8iIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2VzYyh0KCd0eHRTaXplJykpfSI+JHtbMCwxLDJdLm1hcCh2PT5gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtdHg9IiR7dn0iIGFyaWEtcHJlc3NlZD0iJHtzZXQudHh0PT09dn0iPiR7ZXNjKHQoJ3R4Jyt2KSl9PC9idXR0b24+YCkuam9pbignJyl9PC9kaXY+CiAgICAgIDxsYWJlbCBjbGFzcz0idGdsIiBmb3I9ImhjVCI+PHNwYW4+JHtlc2ModCgnaGMnKSl9PC9zcGFuPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImhjVCIgJHtzZXQuaGM\/J2NoZWNrZWQnOicnfT48L2xhYmVsPjwvc2VjdGlvbj5gOwogIH1lbHNlIGlmKGF0YWI9PT0nY2hlY2snKXsKICAgIGNvbnN0IFo9UVpbcXVpel0sUT1aLnFbTF0sTz10KCdvcHRzJyk7CiAgICBjb25zdCBkb25lPWFucy5maWx0ZXIoeD0+eCE9bnVsbCkubGVuZ3RoLHNjPWFucy5yZWR1Y2UoKGEsYik9PmErKGJ8fDApLDApLHNhdmVkPXJlc1tjdXJdW3F1aXpdJiZyZXNbY3VyXVtxdWl6XS5mcmVzaDsKICAgIGJvZHk9YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWluaSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydCIgaWQ9ImFCYWNrIj4ke2VzYyh0KCdiYWNrJykpfTwvYnV0dG9uPjxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KHF1aXorJ1RpdGxlJykpfTwvZGl2PjxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdvdmVyMicpKX08L3NwYW4+CiAgICAke1EubWFwKChxLGkpPT5gPHNlY3Rpb24gY2xhc3M9ImNhcmQiIHN0eWxlPSJnYXA6OHB4Ij48aDM+JHtpKzF9LiAke2VzYyhxKX08L2gzPjxkaXYgY2xhc3M9IndobyI+JHtPLm1hcCgobyx2KT0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXE9IiR7aX0iIGRhdGEtdj0iJHt2fSIgYXJpYS1wcmVzc2VkPSIke2Fuc1tpXT09PXZ9Ij4ke2VzYyhvKX08L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj48L3NlY3Rpb24+YCkuam9pbignJyl9CiAgICAke3F1aXo9PT0ncGhxJyYmYW5zWzhdPjA\/YDxzZWN0aW9uIGNsYXNzPSJjYXJkIHN0b3J5IiByb2xlPSJhbGVydCI+PGgzPiR7ZXNjKHQoJ3RoYW5rc0gnKSl9PC9oMz48cCBzdHlsZT0iZm9udC1zaXplOjE0cHgiPiR7ZXNjKHQoJ3RoYW5rc1AnKSl9PC9wPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYXBwcm92ZSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydDtiYWNrZ3JvdW5kOnZhcigtLW9uR3JlZW4pO2NvbG9yOnZhcigtLWdyZWVuKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6N3B4IDE0cHg7Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyIiBkYXRhLXNhZmU9ImNoZWNrIj4ke2VzYyh0KCdzYWZldHlPcGVuJykpfTwvYnV0dG9uPjwvc2VjdGlvbj5gOicnfQogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2RvbmU8Wi5uP2VzYyh0KCdhbnN3ZXJlZCcsZG9uZSxaLm4pKTplc2ModCgneW91clNjb3JlJykpfTwvc3Bhbj4ke2RvbmU8Wi5uPycnOmA8ZGl2IGNsYXNzPSJiaWciPjxiPiR7c2N9PC9iPjxzcGFuIGNsYXNzPSJjaGciPiR7ZXNjKHQoJ291dE9mJykpfSAke1oubWF4fSDCtyAke2VzYyhiYW5kKHF1aXosc2MpKX08L3NwYW4+PC9kaXY+JHtzYXZlZD9gPHAgY2xhc3M9Im9rIiByb2xlPSJzdGF0dXMiPiR7ZXNjKHQoJ3NhdmVkUmVzJykpfTwvcD48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGlkPSJhQmFjazIiPiR7ZXNjKHQoJ2JhY2tUb2RheScpKX08L2J1dHRvbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImN0YSIgaWQ9ImFEb25lIj4ke2VzYyh0KCdzYXZlUmVzJykpfTwvYnV0dG9uPmB9YH08c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgnc2NyZWVuaW5nJykpfTwvc3Bhbj48L3NlY3Rpb24+YDsKICB9ZWxzZSBpZihhdGFiPT09J2ZlZWwnKXsKICAgIGNvbnN0IHdvcmRzPUZXLmZpbHRlcihmPT5mdy5jb3Jlcy5pbmNsdWRlcyhmWzBdLmVuKSk7CiAgICBjb25zdCBzaG93bj1mdy53b3Jkcy5sZW5ndGg\/Zncud29yZHMubWFwKHdvcmROYW1lKTpmdy5jb3Jlcy5tYXAoaz0+dHIoY29yZU9mKGspWzBdKSk7CiAgICBjb25zdCBzZW50ZW5jZT1zaG93bi5sZW5ndGg\/dCgnZmVlbE5vdycpK2pvaW5MaXN0KHNob3duLm1hcCh3PT53LnRvTG93ZXJDYXNlKCkpKSsnLic6Jyc7CiAgICBib2R5PWA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGRhdGEtZ289InByYWN0aWNlIj4ke2VzYyh0KCdiYWNrJykpfTwvYnV0dG9uPjxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KCdmd1RpdGxlJykpfTwvZGl2PjxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdmd0hpbnQnKSl9PC9zcGFuPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQgZnciPiR7d2hlZWwoKX08L3NlY3Rpb24+CiAgICAke3dvcmRzLm1hcChmPT5gPHNlY3Rpb24gY2xhc3M9ImNhcmQiIHN0eWxlPSJnYXA6OHB4Ij48c3BhbiBjbGFzcz0iayIgc3R5bGU9ImNvbG9yOiR7ZlsxXX0iPiR7ZXNjKHRyKGZbMF0pKX08L3NwYW4+PGRpdiBjbGFzcz0iY2hpcHMiPiR7ZlszXS5tYXAodz0+e2NvbnN0IG9uPWZ3LndvcmRzLmluY2x1ZGVzKHcuZW4pO3JldHVybiBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtdzI9IiR7ZXNjKHcuZW4pfSIgYXJpYS1wcmVzc2VkPSIke29ufSIgc3R5bGU9IiR7b24\/J2JhY2tncm91bmQ6JytmWzFdKyc7Ym9yZGVyLWNvbG9yOicrZlsxXTonJ30iPiR7ZXNjKHRyKHcpKX08L2J1dHRvbj5gO30pLmpvaW4oJycpfTwvZGl2Pjwvc2VjdGlvbj5gKS5qb2luKCcnKX0KICAgICR7c2VudGVuY2U\/YDxzZWN0aW9uIGNsYXNzPSJjYXJkIHN0b3J5Ij48cCBzdHlsZT0iZm9udC1zaXplOjE1cHgiPiR7ZXNjKHNlbnRlbmNlKX08L3A+PC9zZWN0aW9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY3RhIiBpZD0iZndTYXZlIj4ke2VzYyh0KCdzYXZlJykpfTwvYnV0dG9uPjxzcGFuIGNsYXNzPSJmb290IiBpZD0iZndNc2ciIGFyaWEtbGl2ZT0icG9saXRlIj48L3NwYW4+YDonJ30KICAgICR7bG9ja05vdGUodCgnc2F2ZWRPbmx5JykpfWA7CiAgfWVsc2UgaWYoYXRhYj09PSdqb3VybmFsJyl7CiAgICBib2R5PWA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGRhdGEtZ289InByYWN0aWNlIj4ke2VzYyh0KCdiYWNrJykpfTwvYnV0dG9uPjxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KCdqVGl0bGUnKSl9PC9kaXY+JHtsb2NrTm90ZSh0KCdqUHJpdicpKX0KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48Zm9ybSBpZD0iakZvcm0iIHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHgiPjx0ZXh0YXJlYSBjbGFzcz0iZmllbGQiIGlkPSJqSW4iIG1heGxlbmd0aD0iMTAwMCIgcGxhY2Vob2xkZXI9IiR7ZXNjKHQoJ2pQaCcpKX0iIGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ2pMYWJlbCcpKX0iPjwvdGV4dGFyZWE+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJjdGEiPiR7ZXNjKHQoJ2pTYXZlJykpfTwvYnV0dG9uPjxzcGFuIGNsYXNzPSJlcnIiIGlkPSJqRXJyIiBhcmlhLWxpdmU9InBvbGl0ZSI+PC9zcGFuPjwvZm9ybT48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCIgc3R5bGU9ImdhcDowIj4ke2Muam91cm5hbC5tYXAoaj0+YDxkaXYgY2xhc3M9ImplbnQiPjxzcGFuIGNsYXNzPSJkIj4ke2VzYyh0cihqLmQpKX08L3NwYW4+PHA+JHtlc2ModHIoai50eHQpKX08L3A+PC9kaXY+YCkuam9pbignJyl9PC9zZWN0aW9uPmA7CiAgfWVsc2UgaWYoYXRhYj09PSdyZXBvcnQnKXsKICAgIGNvbnN0IG4yPWMucGhxLmxlbmd0aCxyPXJlc1tjdXJdOwogICAgY29uc3Qgb3B0PVtbJ3JxJywncScsJ29RJywxXSxbJ3JjJywnYycsJ29DJywxXSxbJ3JmJywnZicsJ29GJywxXSxbJ3JwJywncCcsJ29QJywxXSxbJ3JzJywncycsJ29TJywxXSxbJ3JuJywnbmFtZScsJ29OJywwXV07CiAgICBib2R5PWA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGRhdGEtZ289InByb2dyZXNzIj4ke2VzYyh0KCdiYWNrJykpfTwvYnV0dG9uPjxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KCdyZXBUaXRsZScpKX08L2Rpdj48c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgncmVwSGludCcpKX08L3NwYW4+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCIgc3R5bGU9ImdhcDo4cHgiPiR7b3B0Lm1hcChvPT5gPGxhYmVsIGNsYXNzPSJvcHRsIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSIke29bMF19IiAkeyhyZXA\/cmVwW29bMV1dOm9bM10pPydjaGVja2VkJzonJ30+JHtlc2ModChvWzJdKSl9PC9sYWJlbD5gKS5qb2luKCcnKX0KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjdGEiIGlkPSJyZXBHbyI+JHtlc2ModCgncmVwR28nKSl9PC9idXR0b24+PC9zZWN0aW9uPgogICAgJHtyZXA\/YDxkaXYgY2xhc3M9InNoZWV0Ij48ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEwcHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzJFNzI1QztwYWRkaW5nLWJvdHRvbTo2cHgiPjxkaXY+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3JlcFNoZWV0SycpKX08L3NwYW4+PGgzIHN0eWxlPSJmb250LXNpemU6MTZweCI+JHtlc2ModCgncmVwU2hlZXRIJykpfTwvaDM+PC9kaXY+PHNwYW4gc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjExcHg7Y29sb3I6IzZENjI1NCI+JHtyZXAubmFtZT8nPGI+Jytlc2MoYy5maXJzdCkrJzwvYj48YnI+JzonJ30ke2VzYyh0KCdjcmVhdGVkJykpfTwvc3Bhbj48L2Rpdj4KICAgICAgJHtyZXAucT9gPHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2F0R2xhbmNlJykpfTwvc3Bhbj48ZGl2IGNsYXNzPSJybCI+PHNwYW4+UEhRLTk8L3NwYW4+PGI+JHtjLnBocVswXX0g4oaSICR7Yy5waHFbbjItMV19JHtyLnBocT8nIOKGkiAnK3IucGhxLnNjb3JlKycgKCcrZXNjKHQoJ3RvZGF5UmVzJykpKycpJzonJ308L2I+PC9kaXY+PGRpdiBjbGFzcz0icmwiPjxzcGFuPkdBRC03PC9zcGFuPjxiPiR7Yy5nYWRbMF19IOKGkiAke2MuZ2FkW24yLTFdfSR7ci5nYWQ\/JyDihpIgJytyLmdhZC5zY29yZSsnICgnK2VzYyh0KCd0b2RheVJlcycpKSsnKSc6Jyd9PC9iPjwvZGl2PiR7ci5waHEmJnIucGhxLnE5PjA\/JzxkaXYgc3R5bGU9ImJvcmRlcjoxLjVweCBzb2xpZCAjMzAyOTFGO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6NnB4Ij48Yj4nK2VzYyh0KCdyZXZpZXcnKSkrJzwvYj4gJytlc2ModCgncTknKSkrJyDCq8KgJytlc2ModCgnb3B0cycpW3IucGhxLnE5XSkrJ8Kgwrs8L2Rpdj4nOicnfTxkaXYgY2xhc3M9ImNoYXJ0Ij4ke2xpbmVDaGFydChjLnBocSwyNyxbWzAsNCwnJywnLS1iYW5kMSddLFs1LDksJycsJy0tc3VuayddLFsxMCwxNCwnJywnLS1iYW5kMiddLFsxNSwyNywnJywnLS1iYW5kMyddXSwnUEhRLTknLCctLWdyZWVuJyl9PC9kaXY+YDonJ30KICAgICAgJHtyZXAuYz9gPHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2NpSycpKX08L3NwYW4+PGRpdiBjbGFzcz0icmwiPjxzcGFuPiR7ZXNjKHQoJ21vb2RGTCcpKX08L3NwYW4+PGI+JHtjLm1vb2RbMF19IOKGkiAke2MubW9vZFtuMi0xXX0gLyAxMDwvYj48L2Rpdj5gOicnfQogICAgICAke3JlcC5mP2A8c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnb0YnKSl9PC9zcGFuPjxkaXY+JHtmdy53b3Jkcy5sZW5ndGh8fGZ3LmNvcmVzLmxlbmd0aD9lc2MoKGZ3LndvcmRzLmxlbmd0aD9mdy53b3Jkcy5tYXAod29yZE5hbWUpOmZ3LmNvcmVzLm1hcChrPT50cihjb3JlT2YoaylbMF0pKSkuam9pbignLCAnKSk6ZXNjKHQoJ2ZlZWxFbXB0eScpKX08L2Rpdj5gOicnfQogICAgICAke3JlcC5wP2A8c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnb1AnKSl9PC9zcGFuPiR7Yy5wcmFjLm1hcChwPT5gPGRpdiBjbGFzcz0icmwiPjxzcGFuPiR7ZXNjKHRyKHBbMF0pKX08L3NwYW4+PGI+JHtlc2ModHIocFsxXSkpfTwvYj48L2Rpdj5gKS5qb2luKCcnKX1gOicnfQogICAgICAke3JlcC5zJiZjLnByZXAubGVuZ3RoP2A8c3BhbiBjbGFzcz0iayI+JHtlc2ModCgndGFsa0snKSl9PC9zcGFuPjx1bD4ke2MucHJlcC5tYXAocD0+YDxsaT4ke2VzYyh0cihwKSl9PC9saT5gKS5qb2luKCcnKX08L3VsPmA6Jyd9CiAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MTBweDtjb2xvcjojNkQ2MjU0Ij4ke2VzYyh0KCdyZXBGaW5lJykpfTwvc3Bhbj48L2Rpdj4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY3RhIiBpZD0icmVwUGRmIj4ke2VzYyh0KCdyZXBQZGYnKSl9PC9idXR0b24+PHNwYW4gY2xhc3M9ImZvb3QiIGlkPSJyZXBNc2ciIGFyaWEtbGl2ZT0icG9saXRlIj48L3NwYW4+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2hvd1NoYXJlJykpfTwvc3Bhbj48cCBzdHlsZT0iZm9udC1zaXplOjE0cHgiPiR7ZXNjKHQoJ2hvd1NoYXJlUCcpKX08L3A+JHtsb2NrTm90ZSh0KCdjcmVhdGVkSGVyZScpKX08L3NlY3Rpb24+YDonJ31gOwogIH1lbHNlIGlmKGF0YWI9PT0ncHJvZ3Jlc3MnKXsKICAgIGNvbnN0IGRQPWMucGhxWzBdLWMucGhxW24tMV0sZEc9Yy5nYWRbMF0tYy5nYWRbbi0xXTsKICAgIGJvZHk9YDxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KCdwcm9nSCcpKX08L2Rpdj4ke2xvY2tOb3RlKHQoJ3N0b3JlZE9ubHknKSl9PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjdGEiIGRhdGEtZ289InJlcG9ydCI+JHtlc2ModCgncmVwR28nKSl9PC9idXR0b24+CiAgICAke2FwcHJvdmVkW2N1cl0\/YDxzZWN0aW9uIGNsYXNzPSJjYXJkIHN0b3J5Ij48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnc3RvcnlZb3VyJykpfTwvc3Bhbj48cCBzdHlsZT0iZm9udC1zaXplOjE1cHgiPiR7ZXNjKHRyKGMuY3N0b3J5KSl9PC9wPjxzcGFuIGNsYXNzPSJmb290IiBzdHlsZT0iY29sb3I6dmFyKC0tb25HcmVlbik7b3BhY2l0eTouODUiPiR7ZXNjKHQoJ3dyaXR0ZW5XaXRoJykpfTwvc3Bhbj48L3NlY3Rpb24+YDpgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdzdW1tYXJ5SycpKX08L3NwYW4+PHA+JHtlc2ModCgnc3VtbWFyeVdhaXQnKSl9PC9wPjxzcGFuIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdzdW1tYXJ5VGlwJykpfTwvc3Bhbj48L3NlY3Rpb24+YH0KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnbW9vZENoZWNrSycpKX08L3NwYW4+PGRpdiBjbGFzcz0iYmlnIj48Yj4ke2MucGhxW24tMV19PC9iPjxzcGFuIGNsYXNzPSJjaGciPiR7ZXNjKGRQPjA\/dCgnZG93bicsZFApOnQoJ3NhbWUnKSl9PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImNoYXJ0Ij4ke2xpbmVDaGFydChjLnBocSwyNyxbWzAsNCwnJywnLS1iYW5kMSddLFs1LDksJycsJy0tc3VuayddLFsxMCwxNCwnJywnLS1iYW5kMiddLFsxNSwyNywnJywnLS1iYW5kMyddXSwnUEhRLTknLCctLWdyZWVuJyl9PC9kaXY+PHNwYW4gY2xhc3M9ImZvb3QiPiR7ZXNjKHQoJ2Zld2VyJykpfTwvc3Bhbj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2FueENoZWNrSycpKX08L3NwYW4+PGRpdiBjbGFzcz0iYmlnIj48Yj4ke2MuZ2FkW24tMV19PC9iPjxzcGFuIGNsYXNzPSJjaGciPiR7ZXNjKGRHPjA\/dCgnZG93bicsZEcpOnQoJ3NhbWUnKSl9PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImNoYXJ0Ij4ke2xpbmVDaGFydChjLmdhZCwyMSxbWzAsNCwnJywnLS1iYW5kMSddLFs1LDksJycsJy0tc3VuayddLFsxMCwxNCwnJywnLS1iYW5kMiddLFsxNSwyMSwnJywnLS1iYW5kMyddXSwnR0FELTcnLCctLWdvbGQnKX08L2Rpdj48c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgnZmV3ZXInKSl9PC9zcGFuPjwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnbXlHb2FscycpKX08L3NwYW4+JHtjLmdvYWxzLm1hcChnPT5gPGRpdiBjbGFzcz0iZ29hbCI+PGRpdiBjbGFzcz0icm93Ij48aDM+JHtlc2ModHIoZ1swXSkpfTwvaDM+PHNwYW4+JHtnWzFdfcKgJTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJiYXIiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iJHtnWzFdfSAke2VzYyh0KCdwY3QnKSl9Ij48aSBzdHlsZT0id2lkdGg6JHtnWzFdfSUiPjwvaT48L2Rpdj48c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModHIoZ1syXSkpfTwvc3Bhbj48L2Rpdj5gKS5qb2luKCcnKX08L3NlY3Rpb24+YDsKICB9ZWxzZXsKICAgIGJvZHk9YDxkaXYgY2xhc3M9ImhpIj4ke2VzYyh0KCdwcmFjSCcpKX08L2Rpdj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnZGlkSycpKX08L3NwYW4+PGRpdiBjbGFzcz0icHJhYyI+JHtjLnByYWMubWFwKHA9PmA8ZGl2PjxiPiR7ZXNjKHRyKHBbMV0pKX08L2I+JHtlc2ModHIocFswXSkpfTwvZGl2PmApLmpvaW4oJycpfTwvZGl2Pjwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnc2FmZXR5SCcpKX08L3NwYW4+PHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4Ij4ke2VzYyh0KCdzYWZldHlJbnRybycpKX08L3A+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJtaW5pIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0IiBkYXRhLXNhZmU9InByYWN0aWNlIj4ke2VzYyh0KCdzYWZldHlPcGVuJykpfTwvYnV0dG9uPjwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48c3BhbiBjbGFzcz0iayI+JHtlc2ModCgnc2xlZXBIJykpfTwvc3Bhbj48cCBzdHlsZT0iZm9udC1zaXplOjE0cHgiPiR7ZXNjKHQoJ3NsZWVwQXZnJyxNYXRoLnJvdW5kKGMuc2xlZXAucmVkdWNlKChhLGIpPT5hK2IsMCkvNyoxMCkvMTApKX0gwrcgJHtlc2ModCgnc2xlZXBLJykpfTwvcD48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1pbmkiIHN0eWxlPSJhbGlnbi1zZWxmOmZsZXgtc3RhcnQiIGRhdGEtZ289InNsZWVwIj4ke2VzYyh0KCdzbGVlcE9wZW4nKSl9PC9idXR0b24+PC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdqSycpKX08L3NwYW4+PHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4Ij4ke2VzYyh0KCdqUCcpKX08L3A+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJtaW5pIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0IiBkYXRhLWdvPSJqb3VybmFsIj4ke2VzYyh0KCdqT3BlbicpKX08L2J1dHRvbj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2Z3VGl0bGUnKSl9PC9zcGFuPjxwIHN0eWxlPSJmb250LXNpemU6MTRweCI+JHtlc2ModCgnZndTaG9ydCcpKX08L3A+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJtaW5pIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0IiBkYXRhLWdvPSJmZWVsIj4ke2VzYyh0KCdmZWVsT3BlbicpKX08L2J1dHRvbj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ2FsbFRvb2xzJykpfTwvc3Bhbj4ke1snZ3JvdW5kaW5nJywndGhvdWdodHMnLCd3b3JyeScsJ2JyYXZlJywndmFsdWVzJywnY2FsbScsJ3ByZXAnXS5tYXAoaWQ9PmA8ZGl2IGNsYXNzPSJ0YXNrIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvIj48c3Bhbj4ke2VzYyh0cihUTFtpZF0pKX08L3NwYW4+PGEgY2xhc3M9Im1pbmkiIGhyZWY9IiR7VE9PTFN9JHtpZH0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj4ke2VzYyh0KCdvcGVuJykpfTwvYT48L2Rpdj5gKS5qb2luKCcnKX08c3BhbiBjbGFzcz0iZm9vdCI+JHtlc2ModCgndG9vbHNGb290JykpfTwvc3Bhbj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+PHNwYW4gY2xhc3M9ImsiPiR7ZXNjKHQoJ3NldEgnKSl9PC9zcGFuPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWluaSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydCIgZGF0YS1nbz0ic2V0dGluZ3MiPiR7ZXNjKHQoJ3NldE9wZW4nKSl9PC9idXR0b24+PC9zZWN0aW9uPmA7CiAgfQogIGNvbnN0IHRhYnM9W1sndG9kYXknLCd0VG9kYXknXSxbJ3ByYWN0aWNlJywndFByYWN0aWNlJ10sWydwcm9ncmVzcycsJ3RQcm9ncmVzcyddLFsncmVwb3J0JywndFJlcG9ydCddXTsKICBjb25zdCBjdXJUYWI9az0+YXRhYj09PWt8fChrPT09J3RvZGF5JyYmYXRhYj09PSdjaGVjaycpfHwoaz09PSdwcmFjdGljZScmJlsnZmVlbCcsJ2pvdXJuYWwnLCdzbGVlcCcsJ3NldHRpbmdzJ10uaW5jbHVkZXMoYXRhYikpfHwoaz09PXNhZmVGcm9tJiZhdGFiPT09J3NhZmV0eScpOwogICQoJyNtYWluJykuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJhd3JhcCI+CiAgICA8ZGl2IGNsYXNzPSJwaG9uZSB0eCR7c2V0LnR4dH0ke3NldC5oYz8nIGhjJzonJ30iIHJvbGU9InJlZ2lvbiIgYXJpYS1sYWJlbD0iJHtlc2ModCgnYXBwUHJldicpKX0iPjxkaXYgY2xhc3M9InBiYXIiPjxzcGFuPjk6NDE8L3NwYW4+PHNwYW4gc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2FsaWduLWl0ZW1zOmNlbnRlciI+QXRsYXMgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnZWFyIiBkYXRhLWdvPSJzZXR0aW5ncyIgYXJpYS1sYWJlbD0iJHtlc2ModCgnc2V0dGluZ3MnKSl9Ij48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiLz48cGF0aCBkPSJNMTkuNCAxNWExLjcgMS43IDAgMCAwIC4zIDEuOGwuMS4xYTIgMiAwIDEgMS0yLjggMi44bC0uMS0uMWExLjcgMS43IDAgMCAwLTEuOC0uMyAxLjcgMS43IDAgMCAwLTEgMS41VjIxYTIgMiAwIDEgMS00IDB2LS4xYTEuNyAxLjcgMCAwIDAtMS4xLTEuNSAxLjcgMS43IDAgMCAwLTEuOC4zbC0uMS4xYTIgMiAwIDEgMS0yLjgtMi44bC4xLS4xYTEuNyAxLjcgMCAwIDAgLjMtMS44IDEuNyAxLjcgMCAwIDAtMS41LTFIM2EyIDIgMCAxIDEgMC00aC4xYTEuNyAxLjcgMCAwIDAgMS41LTEuMSAxLjcgMS43IDAgMCAwLS4zLTEuOGwtLjEtLjFhMiAyIDAgMSAxIDIuOC0yLjhsLjEuMWExLjcgMS43IDAgMCAwIDEuOC4zSDlhMS43IDEuNyAwIDAgMCAxLTEuNVYzYTIgMiAwIDEgMSA0IDB2LjFhMS43IDEuNyAwIDAgMCAxIDEuNSAxLjcgMS43IDAgMCAwIDEuOC0uM2wuMS0uMWEyIDIgMCAxIDEgMi44IDIuOGwtLjEuMWExLjcgMS43IDAgMCAwLS4zIDEuOFY5YTEuNyAxLjcgMCAwIDAgMS41IDFIMjFhMiAyIDAgMSAxIDAgNGgtLjFhMS43IDEuNyAwIDAgMC0xLjUgMXoiLz48L3N2Zz48L2J1dHRvbj48L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNjciIgaWQ9ImFTY3IiPiR7Ym9keX08L2Rpdj4KICAgICAgPG5hdiBjbGFzcz0idGFiYmFyIiBhcmlhLWxhYmVsPSIke2VzYyh0KCdzZWN0aW9ucycpKX0iPiR7dGFicy5tYXAoKFtrLGxdKT0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWE9IiR7a30iIGFyaWEtY3VycmVudD0iJHtjdXJUYWIoayl9Ij4ke0lDW2tdfSR7ZXNjKHQobCkpfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvbmF2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic2lkZSI+CiAgICAgIDxzcGFuIGNsYXNzPSJrIj4ke2VzYyh0KCdzaG93QXMnKSl9PC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJ3aG8iIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2VzYyh0KCdmaWN0Q2xpZW50JykpfSI+JHtDLm1hcCgoeCxpKT0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXc9IiR7aX0iIGFyaWEtcHJlc3NlZD0iJHtpPT09Y3VyfSI+JHtlc2MoeC5maXJzdCl9ICgke2VzYyh0KCdmaWN0JykpfSk8L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj4KICAgICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxoMj4ke2VzYyh0KCdzZWVIJykpfTwvaDI+PHVsPiR7dCgnc2VlJykubWFwKHM9PmA8bGk+JHtlc2Mocyl9PC9saT5gKS5qb2luKCcnKX08L3VsPjwvc2VjdGlvbj4KICAgICAgPGRpdiBjbGFzcz0icHJpdmFjeSI+JHtMT0NLfTxkaXY+PGI+JHtlc2ModCgnc2lkZUInKSl9PC9iPiR7ZXNjKHQoJ3NpZGVQJykpfTwvZGl2PjwvZGl2PjxwIGNsYXNzPSJmb290Ij4ke2VzYyh0KCdzaWRlRm9vdCcpKX08L3A+CiAgICA8L2Rpdj48L2Rpdj5gOwogIGJpbmRBcHAoYyk7Cn0KY29uc3Qgc2NyPSgpPT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYVNjcicpOwpjb25zdCBrZWVwPWY9Pntjb25zdCBzPXNjcigpP3NjcigpLnNjcm9sbFRvcDowO2YoKTtyZW5kZXJBcHAoKTtpZihzY3IoKSlzY3IoKS5zY3JvbGxUb3A9czt9Owpjb25zdCBnbz10YWI9PnthdGFiPXRhYjtyZW5kZXJBcHAoKTtpZihzY3IoKSlzY3IoKS5zY3JvbGxUb3A9MDt9OwpmdW5jdGlvbiBiaW5kQXBwKGMpewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWJiYXIgYnV0dG9uJykuZm9yRWFjaChiPT5iLm9uY2xpY2s9KCk9PmdvKGIuZGF0YXNldC5hKSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLndobyBidXR0b25bZGF0YS13XScpLmZvckVhY2goYj0+Yi5vbmNsaWNrPSgpPT57Y3VyPStiLmRhdGFzZXQudztyZXA9bnVsbDtpZihhdGFiPT09J2NoZWNrJylhdGFiPSd0b2RheSc7cmVuZGVyQXBwKCk7fSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZ29dJykuZm9yRWFjaChiPT5iLm9uY2xpY2s9KCk9PmdvKGIuZGF0YXNldC5nbykpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXRdJykuZm9yRWFjaChjYj0+Y2Iub25jaGFuZ2U9KCk9PntjLnRhc2tzWytjYi5kYXRhc2V0LnRdLmRvbmU9Y2IuY2hlY2tlZDt9KTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1xdWl6XScpLmZvckVhY2goYj0+Yi5vbmNsaWNrPSgpPT57cXVpej1iLmRhdGFzZXQucXVpejthbnM9QXJyYXkoUVpbcXVpel0ubikuZmlsbChudWxsKTtpZihyZXNbY3VyXVtxdWl6XSlyZXNbY3VyXVtxdWl6XS5mcmVzaD1mYWxzZTtnbygnY2hlY2snKTt9KTsKICBjb25zdCBiaz0kKCcjYUJhY2snKTtpZihiayliay5vbmNsaWNrPSgpPT5nbygndG9kYXknKTsKICBjb25zdCBiazI9JCgnI2FCYWNrMicpO2lmKGJrMiliazIub25jbGljaz0oKT0+Z28oJ3RvZGF5Jyk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcV0nKS5mb3JFYWNoKGI9PmIub25jbGljaz0oKT0+a2VlcCgoKT0+e2Fuc1srYi5kYXRhc2V0LnFdPStiLmRhdGFzZXQudjtpZihyZXNbY3VyXVtxdWl6XSlyZXNbY3VyXVtxdWl6XS5mcmVzaD1mYWxzZTt9KSk7CiAgY29uc3QgZG49JCgnI2FEb25lJyk7aWYoZG4pZG4ub25jbGljaz0oKT0+a2VlcCgoKT0+e2NvbnN0IHNjPWFucy5yZWR1Y2UoKGEsYik9PmErKGJ8fDApLDApO3Jlc1tjdXJdW3F1aXpdPXtzY29yZTpzYyxxOTpxdWl6PT09J3BocSc\/YW5zWzhdOjAsZnJlc2g6dHJ1ZX07fSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcm1dJykuZm9yRWFjaChiPT5iLm9uY2xpY2s9KCk9PmtlZXAoKCk9PntjLnByZXAuc3BsaWNlKCtiLmRhdGFzZXQucm0sMSk7fSkpOwogIGNvbnN0IHBmPSQoJyNwcmVwRm9ybScpO2lmKHBmKXBmLm9uc3VibWl0PWU9PntlLnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgdj0kKCcjcHJlcEluJykudmFsdWUudHJpbSgpO2lmKCF2KXskKCcjcHJlcEluJykuZm9jdXMoKTtyZXR1cm47fWtlZXAoKCk9PntjLnByZXAucHVzaCh2KTt9KTtjb25zdCBwaT0kKCcjcHJlcEluJyk7aWYocGkpcGkuZm9jdXMoKTt9OwogIGNvbnN0IGpmPSQoJyNqRm9ybScpO2lmKGpmKWpmLm9uc3VibWl0PWU9PntlLnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgdj0kKCcjakluJykudmFsdWUudHJpbSgpO2lmKCF2KXskKCcjakVycicpLnRleHRDb250ZW50PXQoJ2pFbXB0eScpOyQoJyNqSW4nKS5mb2N1cygpO3JldHVybjt9a2VlcCgoKT0+e2Muam91cm5hbC51bnNoaWZ0KHtkOkUoJ1RvZGF5JywnQXVqb3VyZOKAmWh1aScpLHR4dDp2fSk7fSk7fTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VnLXMnKS5mb3JFYWNoKGc9Pntjb25zdCB0b2c9KCk9PmtlZXAoKCk9Pntjb25zdCBrPWcuZGF0YXNldC5jO2Z3LmNvcmVzPWZ3LmNvcmVzLmluY2x1ZGVzKGspP2Z3LmNvcmVzLmZpbHRlcih4PT54IT09ayk6Wy4uLmZ3LmNvcmVzLGtdO2NvbnN0IG9rPUZXLmZpbHRlcihmPT5mdy5jb3Jlcy5pbmNsdWRlcyhmWzBdLmVuKSkuZmxhdE1hcChmPT5mWzNdLm1hcCh3PT53LmVuKSk7Zncud29yZHM9Zncud29yZHMuZmlsdGVyKHc9Pm9rLmluY2x1ZGVzKHcpKTt9KTtnLm9uY2xpY2s9dG9nO2cub25rZXlkb3duPWU9PntpZihlLmtleT09PSdFbnRlcid8fGUua2V5PT09JyAnKXtlLnByZXZlbnREZWZhdWx0KCk7dG9nKCk7fX07fSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdzJdJykuZm9yRWFjaChiPT5iLm9uY2xpY2s9KCk9PmtlZXAoKCk9Pntjb25zdCB3PWIuZGF0YXNldC53Mjtmdy53b3Jkcz1mdy53b3Jkcy5pbmNsdWRlcyh3KT9mdy53b3Jkcy5maWx0ZXIoeD0+eCE9PXcpOlsuLi5mdy53b3Jkcyx3XTt9KSk7CiAgY29uc3QgZnM9JCgnI2Z3U2F2ZScpO2lmKGZzKWZzLm9uY2xpY2s9KCk9PnskKCcjZndNc2cnKS50ZXh0Q29udGVudD10KCdzYXZlZFBob25lJyk7ZnMuZGlzYWJsZWQ9dHJ1ZTt9OwogIGNvbnN0IHJnPSQoJyNyZXBHbycpO2lmKHJnKXJnLm9uY2xpY2s9KCk9Pntjb25zdCBzPXNjcigpLnNjcm9sbFRvcDtyZXA9e3E6JCgnI3JxJykuY2hlY2tlZCxjOiQoJyNyYycpLmNoZWNrZWQsZjokKCcjcmYnKS5jaGVja2VkLHA6JCgnI3JwJykuY2hlY2tlZCxzOiQoJyNycycpLmNoZWNrZWQsbmFtZTokKCcjcm4nKS5jaGVja2VkfTtyZW5kZXJBcHAoKTtzY3IoKS5zY3JvbGxUb3A9cyszMDA7fTsKICBjb25zdCBycD0kKCcjcmVwUGRmJyk7aWYocnApcnAub25jbGljaz0oKT0+eyQoJyNyZXBNc2cnKS50ZXh0Q29udGVudD10KCdyZXBQZGZNc2cnKTt9OwogIGNvbnN0IHNiPSQoJyNhU2VuZCcpO2lmKHNiKXNiLm9uY2xpY2s9KCk9PnskKCcjYVNlbnQnKS50ZXh0Q29udGVudD10KCdzYXZlZENJJyk7c2IuZGlzYWJsZWQ9dHJ1ZTt9OwogIC8vIFNhZmV0eSBwbGFuCiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc2FmZV0nKS5mb3JFYWNoKGI9PmIub25jbGljaz0oKT0+e3NhZmVGcm9tPWIuZGF0YXNldC5zYWZlO2dvKCdzYWZldHknKTt9KTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zcm1dJykuZm9yRWFjaChiPT5iLm9uY2xpY2s9KCk9PmtlZXAoKCk9Pntjb25zdCBbayxpXT1iLmRhdGFzZXQuc3JtLnNwbGl0KCc6Jyk7Yy5zYWZldHlba10uc3BsaWNlKCtpLDEpO30pKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zZl0nKS5mb3JFYWNoKGY9PmYub25zdWJtaXQ9ZT0+e2UucHJldmVudERlZmF1bHQoKTtjb25zdCBrPWYuZGF0YXNldC5zZixpbnA9JCgnI3NmLScrayksdj1pbnAudmFsdWUudHJpbSgpO2lmKCF2KXtpbnAuZm9jdXMoKTtyZXR1cm47fWtlZXAoKCk9PntjLnNhZmV0eVtrXS5wdXNoKHYpO30pO2NvbnN0IG5pPSQoJyNzZi0nK2spO2lmKG5pKW5pLmZvY3VzKCk7fSk7CiAgLy8gU2xlZXAgZGlhcnkKICBjb25zdCBzbD0kKCcjc2xGb3JtJyk7aWYoc2wpc2wub25zdWJtaXQ9ZT0+e2UucHJldmVudERlZmF1bHQoKTtjb25zdCB2PXBhcnNlRmxvYXQoU3RyaW5nKCQoJyNzbEluJykudmFsdWUpLnJlcGxhY2UoJywnLCcuJykpO2lmKGlzTmFOKHYpfHx2PDB8fHY+MTQpeyQoJyNzbE1zZycpLnRleHRDb250ZW50PXQoJ3NsZWVwQmFkJyk7JCgnI3NsTXNnJykuY2xhc3NOYW1lPSdlcnInO3JldHVybjt9a2VlcCgoKT0+e2Muc2xlZXBbNl09TWF0aC5yb3VuZCh2KjIpLzI7fSk7JCgnI3NsTXNnJykudGV4dENvbnRlbnQ9dCgnc2xlZXBTYXZlZCcpO307CiAgLy8gU2V0dGluZ3MKICBjb25zdCByUD0kKCcjclAnKTtpZihyUCl7CiAgICByUC5vbmNoYW5nZT0oKT0+a2VlcCgoKT0+e3NldC5yZW1QPXJQLmNoZWNrZWQ7fSk7CiAgICAkKCcjckMnKS5vbmNoYW5nZT0oKT0+a2VlcCgoKT0+e3NldC5yZW1DPSQoJyNyQycpLmNoZWNrZWQ7fSk7CiAgICAkKCcjclBUJykub25jaGFuZ2U9KCk9PmtlZXAoKCk9PntzZXQucmVtUFQ9WycwNzowMCcsJzA4OjAwJywnMTI6MDAnLCcxOTowMCcsJzIxOjAwJ11bJCgnI3JQVCcpLnNlbGVjdGVkSW5kZXhdO30pOwogICAgJCgnI3JDRCcpLm9uY2hhbmdlPSgpPT5rZWVwKCgpPT57c2V0LnJlbUNEPSQoJyNyQ0QnKS52YWx1ZTt9KTsKICAgICQoJyNoY1QnKS5vbmNoYW5nZT0oKT0+a2VlcCgoKT0+e3NldC5oYz0kKCcjaGNUJykuY2hlY2tlZDt9KTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXR4XScpLmZvckVhY2goYj0+Yi5vbmNsaWNrPSgpPT5rZWVwKCgpPT57c2V0LnR4dD0rYi5kYXRhc2V0LnR4O30pKTsKICB9Cn0KCi8qIC0tLS0tLS0tLS0gVG9wLWxldmVsIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KY29uc3Qgc2V0U2VnPShhLGIsb24pPT57YS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsb24pO2Iuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCFvbik7fTsKJCgnI2Fub25PbicpLm9uY2xpY2s9KCk9Pnthbm9uPXRydWU7c2V0U2VnKCQoJyNhbm9uT24nKSwkKCcjYW5vbk9mZicpLHRydWUpO3JlbmRlcigpO307CiQoJyNhbm9uT2ZmJykub25jbGljaz0oKT0+e2Fub249ZmFsc2U7c2V0U2VnKCQoJyNhbm9uT24nKSwkKCcjYW5vbk9mZicpLGZhbHNlKTtyZW5kZXIoKTt9OwpmdW5jdGlvbiBzZXRMYW5nKGwpe0w9bDt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F0bGFzLWxhbmcnLGwpO31jYXRjaChlKXt9YXBwbHlTdGF0aWMoKTtyZW5kZXIoKTt9CiQoJyNsRW4nKS5vbmNsaWNrPSgpPT5zZXRMYW5nKCdlbicpOyQoJyNsRnInKS5vbmNsaWNrPSgpPT5zZXRMYW5nKCdmcicpOwpmdW5jdGlvbiBzZXRNb2RlKG0pe21vZGU9bTtjbGllbnRWaWV3PW09PT0nQyc7WydUJywnQycsJ0EnLCdQJ10uZm9yRWFjaChrPT4kKCcjdicraykuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLGs9PT1tKSk7cmVuZGVyKCk7fQokKCcjdlQnKS5vbmNsaWNrPSgpPT5zZXRNb2RlKCdUJyk7JCgnI3ZDJykub25jbGljaz0oKT0+c2V0TW9kZSgnQycpOyQoJyN2QScpLm9uY2xpY2s9KCk9PnNldE1vZGUoJ0EnKTskKCcjdlAnKS5vbmNsaWNrPSgpPT5zZXRNb2RlKCdQJyk7CgovKiAtLS0tLS0tLS0tIEd1aWRlZCB0b3VyIC0tLS0tLS0tLS0gKi8KY29uc3QgVE9VUj1bWycjdmlld3NHcm91cCcsJ3RvdXIxJyxudWxsXSxbJyN0cmlhZ2UnLCd0b3VyMicsJ1QnXSxbJyNwbGFuQ2FyZCcsJ3RvdXIzJywnVCddLFsnI2RhcENhcmQnLCd0b3VyNCcsJ1QnXSxbJyN2QScsJ3RvdXI1JyxudWxsXSxbJyN2UCcsJ3RvdXI2JyxudWxsXSxbJyNwaWxvdCcsJ3RvdXI3JyxudWxsXV07CmxldCB0cz0tMTsKZnVuY3Rpb24gdG91ck1hcmsoKXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG91ci1vbicpLmZvckVhY2goZT0+ZS5jbGFzc0xpc3QucmVtb3ZlKCd0b3VyLW9uJykpOwogIGlmKHRzPDApcmV0dXJuO2NvbnN0IGVsPSQoVE9VUlt0c11bMF0pO2lmKGVsKWVsLmNsYXNzTGlzdC5hZGQoJ3RvdXItb24nKTsKfQpmdW5jdGlvbiB0b3VyU2hvdygpewogIGNvbnN0IGJveD0kKCcjdG91cicpOwogIGlmKHRzPDApe2JveC5oaWRkZW49dHJ1ZTt0b3VyTWFyaygpOyQoJyN0b3VyR28nKS5mb2N1cygpO3JldHVybjt9CiAgaWYoVE9VUlt0c11bMl0mJm1vZGUhPT1UT1VSW3RzXVsyXSlzZXRNb2RlKFRPVVJbdHNdWzJdKTsKICB0b3VyTWFyaygpOwogIGNvbnN0IGVsPSQoVE9VUlt0c11bMF0pOwogIGlmKGVsKXtjb25zdCBzdGlsbD1tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7ZWwuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOidjZW50ZXInLGJlaGF2aW9yOnN0aWxsPydhdXRvJzonc21vb3RoJ30pO30KICBib3guaGlkZGVuPWZhbHNlOwogICQoJyN0b3VyTicpLnRleHRDb250ZW50PSh0cysxKSsnIC8gJytUT1VSLmxlbmd0aDskKCcjdG91clQnKS50ZXh0Q29udGVudD10KFRPVVJbdHNdWzFdKTsKICAkKCcjdG91ckInKS50ZXh0Q29udGVudD10KCd0b3VyQmFjaycpOyQoJyN0b3VyQicpLmhpZGRlbj10cz09PTA7CiAgJCgnI3RvdXJGJykudGV4dENvbnRlbnQ9dCh0cz09PVRPVVIubGVuZ3RoLTE\/J3RvdXJEb25lJzondG91ck5leHQnKTsKICAkKCcjdG91clgnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLHQoJ3RvdXJDbG9zZScpKTsKfQokKCcjdG91ckdvJykub25jbGljaz0oKT0+e3RzPTA7dG91clNob3coKTskKCcjdG91ckYnKS5mb2N1cygpO307CiQoJyN0b3VyRicpLm9uY2xpY2s9KCk9Pnt0cz10cz49VE9VUi5sZW5ndGgtMT8tMTp0cysxO3RvdXJTaG93KCk7fTsKJCgnI3RvdXJCJykub25jbGljaz0oKT0+e2lmKHRzPjApe3RzLS07dG91clNob3coKTt9fTsKJCgnI3RvdXJYJykub25jbGljaz0oKT0+e3RzPS0xO3RvdXJTaG93KCk7fTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZT0+e2lmKGUua2V5PT09J0VzY2FwZScmJnRzPj0wKXt0cz0tMTt0b3VyU2hvdygpO319KTsKY29uc3QgX2FwcGx5U3RhdGljPWFwcGx5U3RhdGljO2FwcGx5U3RhdGljPWZ1bmN0aW9uKCl7X2FwcGx5U3RhdGljKCk7aWYodHM+PTApeyQoJyN0b3VyVCcpLnRleHRDb250ZW50PXQoVE9VUlt0c11bMV0pOyQoJyN0b3VyRicpLnRleHRDb250ZW50PXQodHM9PT1UT1VSLmxlbmd0aC0xPyd0b3VyRG9uZSc6J3RvdXJOZXh0Jyk7JCgnI3RvdXJCJykudGV4dENvbnRlbnQ9dCgndG91ckJhY2snKTt9fTsKYXBwbHlTdGF0aWMoKTtyZW5kZXIoKTsKfSkoKTsKPC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+\");var u=new Uint8Array(b.length);for(var i=0;i<b.length;i++){u[i]=b.charCodeAt(i);}var h=new TextDecoder(\"utf-8\").decode(u);var f=document.getElementById(\"tdxF\");var fr=\/^fr\/i.test(document.documentElement.lang||\"\");if(fr){var x=document.querySelectorAll(\"#tdx [data-l]\");for(var k=0;k<x.length;k++){x[k].style.display=(x[k].getAttribute(\"data-l\")===\"fr\")?\"block\":\"none\";}}f.addEventListener(\"load\",function(){var d=f.contentDocument;var lb=d.getElementById(fr?\"lFr\":\"lEn\");if(lb){lb.click();}var fit=function(){if(!d.body){return;}var hh=d.body.offsetHeight+24;if(hh<640){hh=640;}if(Math.abs(f.offsetHeight-hh)>6){f.style.height=hh+\"px\";}};fit();setInterval(fit,700);var pin=function(){var t=d.getElementById(\"tour\");if(!t){return;}var r=f.getBoundingClientRect();var vb=window.innerHeight-r.top;if(vb>r.height){vb=r.height;}if(vb<220){vb=220;}t.style.bottom=(r.height-vb+16)+\"px\";};window.addEventListener(\"scroll\",pin,{passive:true});window.addEventListener(\"resize\",pin);setInterval(pin,400);pin();});f.srcdoc=h;})();<\/script>\n\n<div id=\"ta\">\n<footer><div class=\"w\">\n  <div>\n    <a class=\"brand\" href=\"https:\/\/therapeuticatlas.com\/\" style=\"margin-bottom:10px\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"skip-lazy\" data-skip-lazy=\"1\" loading=\"eager\" src=\"https:\/\/i0.wp.com\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png?ssl=1\" alt=\"\">Therapeutic Atlas<\/a>\n    <p>Mentorship, training and tools for therapists growing beyond the session room.<\/p>\n    <p><a href=\"mailto:kim@therapeuticatlas.com\" style=\"display:inline\">kim@therapeuticatlas.com<\/a><\/p>\n  <\/div>\n  <div>\n    <h4>Grow<\/h4>\n    <a href=\"https:\/\/therapeuticatlas.com\/free-training\/\">Free training<\/a>\n    <a href=\"https:\/\/www.skool.com\/therapeutic-atlas-inner-circle-8901\/about\" target=\"_blank\" rel=\"noopener\">Inner Circle<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/contact\/\">Done for you<\/a>\n    <a href=\"https:\/\/www.youtube.com\/channel\/UCBeE8UJSO9yzi_KN3fGtdYw\" target=\"_blank\" rel=\"noopener\">YouTube<\/a>\n  <\/div>\n  <div>\n    <h4>Atlas app<\/h4>\n    <a href=\"https:\/\/therapeuticatlas.com\/atlas-app\/\">Concept (coming soon)<\/a>\n<a href=\"https:\/\/therapeuticatlas.com\/tools\/\">Free mental health tools<\/a>\n<a href=\"\/atlas-for-therapists\/\">Atlas for therapists<\/a>\n        <a href=\"https:\/\/therapeuticatlas.com\/contact\/\">Get launch updates<\/a>\n    <a href=\"https:\/\/therapeuticatlas.com\/privacy-policy\/\">Privacy Policy<\/a>\n  <\/div>\n<\/div>\n<div class=\"w\"><p class=\"crisis\">Therapeutic Atlas is not a crisis service. In crisis in Canada or the US, call or text 988, or contact your local emergency number. \u00a9 2026 Therapeutic Atlas<\/p><\/div>\n<\/footer>\n<\/div>\n<script id=\"ta-ext-links\">(function(){var H=location.hostname.replace(\/^www\\.\/,'');function f(a){try{var u=new URL(a.getAttribute('href'),location.href);if((u.protocol==='http:'||u.protocol==='https:')&&u.hostname.replace(\/^www\\.\/,'')!==H){a.target='_blank';var r=(a.rel||'').split(\/\\s+\/).filter(Boolean);if(r.indexOf('noopener')<0)r.push('noopener');a.rel=r.join(' ');}}catch(e){}}document.addEventListener('click',function(e){var a=e.target&#038;&#038;e.target.closest&#038;&#038;e.target.closest('a[href]');if(a)f(a);},true);function all(){document.querySelectorAll('a[href]').forEach(f);}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',all);else all();})();<\/script>\n<style id=\"ta-nav-fix\">#ta .brand,.ta-nav .brand{white-space:nowrap!important}@media(min-width:901px) and (max-width:1500px){#taLinks{gap:16px!important}}#taLinks{flex-wrap:nowrap!important}#taLinks a{white-space:nowrap!important;text-transform:none!important;letter-spacing:normal!important}.ta-nav .brand{white-space:nowrap!important;font-family:\"Inter\",system-ui,sans-serif!important}.ta-nav .links a{font-family:\"Inter\",system-ui,sans-serif!important}.ta-nav .btn{text-transform:none!important;letter-spacing:normal!important}@media(min-width:901px) and (max-width:1180px){#taLinks{gap:14px!important}#taLinks a:not(.btn){font-size:14px!important}#taLinks .btn{padding:10px 14px!important}}<\/style>\n","protected":false},"excerpt":{"rendered":"<p>Therapeutic Atlas Mentorship\/Inner Circle Atlas app About Mental health tools Autistic Atlas Contact Watch the free training Menu How Atlas works without keeping client information A two-minute walkthrough from Kim: where your client&#8217;s answers live, how a report reaches you, and why Therapeutic Atlas never holds the information in between. Doing a privacy review? Read [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-49","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Atlas App - Therapeutic Atlas<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/therapeuticatlas.com\/fr\/atlas-app\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Atlas App - Therapeutic Atlas\" \/>\n<meta property=\"og:description\" content=\"Therapeutic Atlas Mentorship\/Inner Circle Atlas app About Mental health tools Autistic Atlas Contact Watch the free training Menu How Atlas works without keeping client information A two-minute walkthrough from Kim: where your client&#8217;s answers live, how a report reaches you, and why Therapeutic Atlas never holds the information in between. Doing a privacy review? Read [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/therapeuticatlas.com\/fr\/atlas-app\/\" \/>\n<meta property=\"og:site_name\" content=\"Therapeutic Atlas\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-01T22:04:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimation du temps de lecture\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/\",\"url\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/\",\"name\":\"Atlas App - Therapeutic Atlas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.cdn.filesafe.space\\\/AwKw17la9qrDl3BQGO1h\\\/media\\\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png\",\"datePublished\":\"2026-06-04T19:48:16+00:00\",\"dateModified\":\"2026-11-01T22:04:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.cdn.filesafe.space\\\/AwKw17la9qrDl3BQGO1h\\\/media\\\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png\",\"contentUrl\":\"https:\\\/\\\/assets.cdn.filesafe.space\\\/AwKw17la9qrDl3BQGO1h\\\/media\\\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/atlas-app\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/therapeuticatlas.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Atlas App\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/#website\",\"url\":\"https:\\\/\\\/therapeuticatlas.com\\\/\",\"name\":\"Therapeutic Atlas\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/therapeuticatlas.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/#organization\",\"name\":\"Therapeutic Atlas\",\"url\":\"https:\\\/\\\/therapeuticatlas.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/therapeuticatlas.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/cropped-Therapeutic-Atlas-Compass-Logo.png?fit=1260%2C1015&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/therapeuticatlas.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/cropped-Therapeutic-Atlas-Compass-Logo.png?fit=1260%2C1015&ssl=1\",\"width\":1260,\"height\":1015,\"caption\":\"Therapeutic Atlas\"},\"image\":{\"@id\":\"https:\\\/\\\/therapeuticatlas.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Appli Atlas - Therapeutic Atlas","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/therapeuticatlas.com\/fr\/atlas-app\/","og_locale":"fr_CA","og_type":"article","og_title":"Atlas App - Therapeutic Atlas","og_description":"Therapeutic Atlas Mentorship\/Inner Circle Atlas app About Mental health tools Autistic Atlas Contact Watch the free training Menu How Atlas works without keeping client information A two-minute walkthrough from Kim: where your client&#8217;s answers live, how a report reaches you, and why Therapeutic Atlas never holds the information in between. Doing a privacy review? Read [&hellip;]","og_url":"https:\/\/therapeuticatlas.com\/fr\/atlas-app\/","og_site_name":"Therapeutic Atlas","article_modified_time":"2026-11-01T22:04:11+00:00","og_image":[{"url":"https:\/\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Estimation du temps de lecture":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/therapeuticatlas.com\/atlas-app\/","url":"https:\/\/therapeuticatlas.com\/atlas-app\/","name":"Appli Atlas - Therapeutic Atlas","isPartOf":{"@id":"https:\/\/therapeuticatlas.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/therapeuticatlas.com\/atlas-app\/#primaryimage"},"image":{"@id":"https:\/\/therapeuticatlas.com\/atlas-app\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png","datePublished":"2026-06-04T19:48:16+00:00","dateModified":"2026-11-01T22:04:11+00:00","breadcrumb":{"@id":"https:\/\/therapeuticatlas.com\/atlas-app\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/therapeuticatlas.com\/atlas-app\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/therapeuticatlas.com\/atlas-app\/#primaryimage","url":"https:\/\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png","contentUrl":"https:\/\/assets.cdn.filesafe.space\/AwKw17la9qrDl3BQGO1h\/media\/d0af0c2c-df3d-43e8-8ae6-54215feb1f3e.png"},{"@type":"BreadcrumbList","@id":"https:\/\/therapeuticatlas.com\/atlas-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/therapeuticatlas.com\/"},{"@type":"ListItem","position":2,"name":"Atlas App"}]},{"@type":"WebSite","@id":"https:\/\/therapeuticatlas.com\/#website","url":"https:\/\/therapeuticatlas.com\/","name":"Therapeutic Atlas","description":"","publisher":{"@id":"https:\/\/therapeuticatlas.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/therapeuticatlas.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"},{"@type":"Organization","@id":"https:\/\/therapeuticatlas.com\/#organization","name":"Therapeutic Atlas","url":"https:\/\/therapeuticatlas.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/therapeuticatlas.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/therapeuticatlas.com\/wp-content\/uploads\/2026\/10\/cropped-Therapeutic-Atlas-Compass-Logo.png?fit=1260%2C1015&ssl=1","contentUrl":"https:\/\/i0.wp.com\/therapeuticatlas.com\/wp-content\/uploads\/2026\/10\/cropped-Therapeutic-Atlas-Compass-Logo.png?fit=1260%2C1015&ssl=1","width":1260,"height":1015,"caption":"Therapeutic Atlas"},"image":{"@id":"https:\/\/therapeuticatlas.com\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/pages\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/comments?post=49"}],"version-history":[{"count":5,"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/pages\/49\/revisions"}],"predecessor-version":[{"id":285,"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/pages\/49\/revisions\/285"}],"wp:attachment":[{"href":"https:\/\/therapeuticatlas.com\/fr\/wp-json\/wp\/v2\/media?parent=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}