{"id":15032,"date":"2026-10-14T19:11:04","date_gmt":"2026-10-14T19:11:04","guid":{"rendered":"https:\/\/addicted-to.com\/?page_id=15032"},"modified":"2026-10-16T15:02:02","modified_gmt":"2026-10-16T15:02:02","slug":"home-2026","status":"publish","type":"page","link":"https:\/\/addicted-to.com\/en\/","title":{"rendered":"Home"},"content":{"rendered":"\n<script>[\"hello-elementor-css\",\"hello-elementor-theme-style-css\",\"hello-elementor-header-footer-css\"].forEach(function(i){var l=document.getElementById(i);if(l)l.disabled=true});<\/script>\n<style>#atn-home button{padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;text-transform:none;letter-spacing:inherit;line-height:inherit;box-shadow:none;min-height:0;text-decoration:none}#atn-home h1,#atn-home h2,#atn-home h3,#atn-home h4,#atn-home p,#atn-home a,#atn-home small,#atn-home b,#atn-home span{font-family:inherit;color:inherit;text-transform:none;text-decoration:none}#atn-home h1,#atn-home h2,#atn-home h3,#atn-home h4{margin:0;line-height:1.1;letter-spacing:normal}#atn-home{font-family:var(--sans);color:var(--ink);line-height:1.55}#atn-home img{max-width:100%;height:auto}\n\/* ---------- Brand-Schrift (liegt bereits auf addicted-to.com) ---------- *\/\n@font-face{font-family:Aspekta;font-weight:300;font-display:swap;src:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Aspekta-300.ttf) format(\"truetype\")}\n@font-face{font-family:Aspekta;font-weight:400;font-display:swap;src:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Aspekta-400.ttf) format(\"truetype\")}\n@font-face{font-family:Aspekta;font-weight:500;font-display:swap;src:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Aspekta-500.ttf) format(\"truetype\")}\n@font-face{font-family:Aspekta;font-weight:600;font-display:swap;src:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Aspekta-600.ttf) format(\"truetype\")}\n:root{\n  --forest:#0f261a;      \/* tiefes Waldgr\u00fcn *\/\n  --forest-2:#173a26;\n  --moss:#1f7a35;        \/* Gr\u00fcn aus dem Logo *\/\n  --mint:#cfeec2;        \/* Mint aus dem Button \/ A-Kreis *\/\n  --sand:#eee6d4;\n  --cream:#f6f1e6;       \/* Papier \/ Creme aus dem A-Kreis *\/\n  --ink:#152018;\n  --muted:#5d6b5f;\n  --serif:\"Fraunces\",Georgia,serif;\n  --sans:Aspekta,\"Helvetica Neue\",Arial,sans-serif;\n  --ease:cubic-bezier(.22,1,.36,1);\n}\n#atn-home *{box-sizing:border-box;margin:0;padding:0}\nhtml{-webkit-text-size-adjust:100%}\nhtml.lenis,html.lenis body{height:auto}\n.lenis.lenis-smooth{scroll-behavior:auto!important}\nbody{font-family:var(--sans);background:var(--cream);color:var(--ink);font-weight:400;line-height:1.55;overflow-x:hidden;-webkit-font-smoothing:antialiased}\n#atn-home img{display:block;max-width:100%}\n#atn-home a{color:inherit;text-decoration:none}\n#atn-home button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}\n#atn-home em,#atn-home .serif{font-family:var(--serif);font-style:italic;font-weight:300;letter-spacing:-.01em}\n#atn-home .wrap{width:min(1240px,100% - 48px);margin-inline:auto}\n#atn-home .eyebrow{font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;font-weight:600;display:inline-flex;align-items:center;gap:.7em}\n#atn-home .eyebrow::before{content:\"\";width:28px;height:1px;background:currentColor;opacity:.6}\n\/* Filmkorn \u2013 l\u00e4sst alles analoger, nat\u00fcrlicher wirken *\/\n#atn-home .grain{position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.07;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'\/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\");\n  animation:grain 1.2s steps(6) infinite}\n@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}\n\/* ---------- Cursor ---------- *\/\n#atn-home .cursor{position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid rgba(207,238,194,.9);border-radius:50%;pointer-events:none;z-index:95;transition:width .35s var(--ease),height .35s var(--ease),margin .35s var(--ease),background .35s,border-color .35s}\n#atn-home .cursor.big{width:76px;height:76px;margin:-38px 0 0 -38px;background:rgba(207,238,194,.18)}\n@media (hover:none),(pointer:coarse){#atn-home .cursor{display:none}}\n\/* ---------- Navigation ---------- *\/\n#atn-home .nav{position:fixed;inset:0 0 auto 0;z-index:80;transition:transform .6s var(--ease),background .5s,backdrop-filter .5s}\n#atn-home .nav.scrolled{background:rgba(15,38,26,.62);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2)}\n#atn-home .nav.hide{transform:translateY(-100%)}\n#atn-home .nav .wrap{display:flex;align-items:center;justify-content:space-between;height:84px;color:var(--cream)}\n#atn-home .nav .logo img{height:44px;width:auto}\n#atn-home .nav ul{display:flex;gap:34px;list-style:none;font-size:.82rem;letter-spacing:.14em;font-weight:500}\n#atn-home .nav ul a{position:relative;padding:6px 0}\n#atn-home .nav ul a::after{content:\"\";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--mint);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}\n#atn-home .nav ul a:hover::after{transform:scaleX(1);transform-origin:left}\n#atn-home .nav .tools{display:flex;align-items:center;gap:20px;font-size:.8rem;letter-spacing:.1em}\n#atn-home .nav .lang a{opacity:.55}#atn-home .nav .lang a.on{opacity:1}\n#atn-home .nav .cart{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid rgba(246,241,230,.3)}\n#atn-home .nav .cart svg{width:18px}\n#atn-home .nav .cart b{position:absolute;top:-4px;right:-4px;background:var(--mint);color:var(--forest);font-size:.62rem;width:17px;height:17px;border-radius:50%;display:grid;place-items:center}\n#atn-home .burger{display:none;width:40px;height:40px;position:relative}\n#atn-home .burger span{position:absolute;left:9px;right:9px;height:1.5px;background:var(--cream);transition:transform .4s var(--ease)}\n#atn-home .burger span:first-child{top:16px}#atn-home .burger span:last-child{top:23px}\n#atn-home .menu-open .burger span:first-child{transform:translateY(3.5px) rotate(45deg)}\n#atn-home .menu-open .burger span:last-child{transform:translateY(-3.5px) rotate(-45deg)}\n#atn-home .mobile-menu{position:fixed;inset:0;z-index:79;background:var(--forest);color:var(--cream);display:flex;flex-direction:column;justify-content:center;padding:0 32px;clip-path:circle(0% at calc(100% - 44px) 42px);transition:clip-path .8s var(--ease)}\n#atn-home .menu-open .mobile-menu{clip-path:circle(150% at calc(100% - 44px) 42px)}\n#atn-home .mobile-menu a{font-size:2.4rem;font-weight:300;line-height:1.4}\n#atn-home .mobile-menu a em{color:var(--mint)}\n@media (max-width:960px){#atn-home .nav ul,#atn-home .nav .lang{display:none}#atn-home .burger{display:block}}\n\/* ---------- HERO ---------- *\/\n#atn-home .hero{position:relative;height:100svh;min-height:600px;overflow:hidden;background:var(--forest);color:var(--cream)}\n#atn-home .hero canvas,#atn-home .hero .fallback,#atn-home .hero .poster{position:absolute;inset:0;width:100%;height:100%}\n#atn-home .hero .poster{object-fit:cover;object-position:center}\n#atn-home .hero canvas{opacity:0;transition:opacity 1.2s ease}\n#atn-home .hero canvas.on{opacity:1}\n#atn-home .sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n#atn-home .hero .fallback div{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.8s ease,transform 8s linear;transform:scale(1.08)}\n#atn-home .hero .fallback div.on{opacity:1;transform:scale(1)}\n#atn-home .hero::after{content:\"\";position:absolute;inset:0;background:radial-gradient(ellipse 60% 45% at 50% 52%,rgba(10,25,17,.42),rgba(10,25,17,0) 70%),linear-gradient(180deg,rgba(10,25,17,.45) 0%,rgba(10,25,17,0) 30%,rgba(10,25,17,0) 55%,rgba(10,25,17,.65) 100%);pointer-events:none}\n#atn-home .hero-inner{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:0 24px}\n#atn-home .hero h1{width:100%;text-shadow:0 2px 30px rgba(0,0,0,.35);font-weight:600;font-size:clamp(2.9rem,8.4vw,8rem);line-height:.95;letter-spacing:-.035em}\n#atn-home .hero h1 .to{font-family:var(--serif);font-style:italic;font-weight:300;letter-spacing:-.02em}\n#atn-home .rot{display:block;position:relative;height:1.05em;overflow:hidden;color:var(--mint)}\n#atn-home .rot span.w{position:absolute;left:0;right:0;top:0;white-space:nowrap}\n#atn-home .rot span.w i{display:inline-block;font-style:normal;will-change:transform}\n#atn-home .hero p.sub{text-shadow:0 1px 16px rgba(0,0,0,.5);margin-top:26px;font-size:clamp(1.02rem,1.5vw,1.3rem);font-weight:300;max-width:34ch;opacity:.92}\n#atn-home .btn{display:inline-flex;align-items:center;gap:12px;padding:16px 28px;border-radius:999px;background:var(--mint);color:var(--forest);font-weight:600;font-size:.98rem;letter-spacing:.01em;transition:background .4s,color .4s;will-change:transform}\n#atn-home .btn svg{width:16px;transition:transform .4s var(--ease)}\n#atn-home .btn:hover svg{transform:translateX(4px)}\n#atn-home .btn.ghost{background:transparent;color:inherit;border:1px solid currentColor}\n#atn-home .btn.dark{background:var(--forest);color:var(--cream)}\n#atn-home .hero .btn{margin-top:38px}\n#atn-home .hero-meta{position:absolute;z-index:3;left:0;right:0;bottom:30px}\n#atn-home .hero-meta .wrap{display:flex;justify-content:space-between;align-items:flex-end;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase}\n#atn-home .dots{display:flex;gap:10px}\n#atn-home .dots button{width:34px;height:2px;background:rgba(246,241,230,.3);position:relative;overflow:hidden}\n#atn-home .dots button i{position:absolute;inset:0;background:var(--mint);transform:scaleX(0);transform-origin:left}\n#atn-home .scroll-cue{display:flex;align-items:center;gap:12px}\n#atn-home .scroll-cue .line{width:1px;height:46px;background:rgba(246,241,230,.3);position:relative;overflow:hidden}\n#atn-home .scroll-cue .line::after{content:\"\";position:absolute;left:0;top:-50%;width:1px;height:50%;background:var(--mint);animation:cue 2.2s var(--ease) infinite}\n@keyframes cue{to{top:110%}}\n#atn-home .place{opacity:.75}\n@media (max-width:700px){#atn-home .place{display:none}}\n\/* ---------- VIVI O SOPRAVVIVI ---------- *\/\n#atn-home .vivi{position:relative;height:340vh;background:#1b1d1c}\n#atn-home .vivi .stage{position:sticky;top:0;height:100svh;overflow:hidden}\n#atn-home .vivi .bg{position:absolute;inset:-4%;background-size:cover;background-position:center;background-image:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_06-min-1536x720.jpg)}\n@media (max-width:760px){#atn-home .vivi .bg{background-image:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_06-min-1024x480.jpg)}}\n#atn-home .vivi .bg.grey{filter:grayscale(1) brightness(.42) contrast(.92) blur(2px)}\n#atn-home .vivi .bg.color{--r:0%;-webkit-mask-image:radial-gradient(circle at 50% 58%,#000 calc(var(--r) - 9%),transparent var(--r));mask-image:radial-gradient(circle at 50% 58%,#000 calc(var(--r) - 9%),transparent var(--r))}\n#atn-home .vivi .marquee{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:2vh;pointer-events:none}\n#atn-home .vivi .row{white-space:nowrap;font-size:clamp(3rem,11vw,10rem);font-weight:600;letter-spacing:-.04em;line-height:1;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.14)}\n#atn-home .vivi .row span{padding-right:.4em}\n#atn-home .vivi .txt{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:0 24px;color:var(--cream)}\n#atn-home .vivi .txt > div{grid-area:1\/1}\n#atn-home .vivi h2{font-size:clamp(2.6rem,7vw,6.4rem);font-weight:600;letter-spacing:-.035em;line-height:1}\n#atn-home .vivi h2 em{color:var(--mint)}\n#atn-home .vivi .t2 p{font-size:clamp(1.4rem,3vw,2.6rem);font-weight:300;line-height:1.25;max-width:22ch;margin:auto}\n#atn-home .vivi .t2 small{display:block;margin-top:22px;font-size:.85rem;letter-spacing:.2em;text-transform:uppercase;opacity:.6}\n#atn-home .vivi .t3 h2{text-shadow:0 2px 40px rgba(0,0,0,.35)}\n#atn-home .vivi .t3 p{margin:22px auto 0;max-width:40ch;font-size:clamp(1.05rem,1.6vw,1.3rem);font-weight:300;text-shadow:0 1px 20px rgba(0,0,0,.5)}\n\/* ---------- CICLO: Persone \u00b7 Societ\u00e0 \u00b7 Natura ---------- *\/\n#atn-home .ciclo{position:relative;height:420vh;background:var(--cream)}\n#atn-home .ciclo .stage{position:sticky;top:0;height:100svh;display:grid;align-items:center;overflow:hidden}\n#atn-home .ciclo .grid{display:grid;grid-template-columns:1fr 1.05fr;gap:6vw;align-items:center}\n#atn-home .ciclo .intro{font-size:clamp(1.05rem,1.4vw,1.2rem);color:var(--muted);max-width:44ch;margin:22px 0 34px}\n#atn-home .ciclo h2{font-size:clamp(2.3rem,4.6vw,4.2rem);font-weight:600;letter-spacing:-.03em;line-height:1.02;color:var(--forest)}\n#atn-home .ciclo h2 em{color:var(--moss)}\n#atn-home .steps{position:relative;min-height:190px}\n#atn-home .step{position:absolute;inset:0 0 auto 0;opacity:0;transform:translateY(-16px);transition:opacity .3s ease,transform .4s ease}\n#atn-home .step.on{opacity:1;transform:none;transition:opacity .7s .3s var(--ease),transform .9s .3s var(--ease)}\n#atn-home .step .num{font-family:var(--serif);font-style:italic;font-size:1.1rem;color:var(--moss)}\n#atn-home .step h3{font-size:clamp(1.8rem,3vw,2.6rem);font-weight:600;letter-spacing:-.02em;color:var(--forest);margin:4px 0 10px}\n#atn-home .step p{color:var(--muted);max-width:40ch;font-size:1.05rem}\n#atn-home .ring{position:relative;width:min(560px,44vw);aspect-ratio:1;margin-left:auto}\n#atn-home .ring svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}\n#atn-home .ring .window{position:absolute;inset:11%;border-radius:50%;overflow:hidden;background:var(--sand);box-shadow:0 40px 80px -30px rgba(15,38,26,.45)}\n#atn-home .ring .window img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.15);transition:opacity 1.1s ease,transform 2.4s var(--ease)}\n#atn-home .ring .window img.on{opacity:1;transform:scale(1)}\n#atn-home .ring .lbl{position:absolute;font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--muted);transition:color .5s;white-space:nowrap}\n#atn-home .ring .lbl.on{color:var(--forest)}\n#atn-home .ring .l0{top:-2%;left:50%;transform:translate(-50%,-100%)}\n#atn-home .ring .l1{right:2%;bottom:14%;transform:translateX(35%)}\n#atn-home .ring .l2{left:2%;bottom:14%;transform:translateX(-35%)}\n#atn-home .ring .node{fill:var(--cream);stroke:var(--moss);stroke-width:3;transition:fill .5s}\n#atn-home .ring .node.on{fill:var(--mint)}\n@media (max-width:860px){\n  #atn-home .ciclo .grid{grid-template-columns:1fr;gap:28px}\n  #atn-home .ring{width:min(78vw,380px);margin:0 auto;order:-1}\n  #atn-home .ciclo .intro{display:none}\n  #atn-home .steps{min-height:170px}\n}\n\/* ---------- IMPATTO ---------- *\/\n#atn-home .impatto{position:relative;color:var(--cream);overflow:hidden;padding:18vh 0}\n#atn-home .impatto .bg{position:absolute;inset:-15% 0;background-size:cover;background-position:center;will-change:transform;background-image:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_impatto-min-2-1536x720.jpg)}\n@media (max-width:760px){#atn-home .impatto .bg{background-image:url(https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_impatto-min-2-1024x480.jpg)}}\n#atn-home .impatto::before{content:\"\";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(15,38,26,.88),rgba(15,38,26,.55) 50%,rgba(15,38,26,.9))}\n#atn-home .impatto .wrap{position:relative;z-index:2}\n#atn-home .impatto h2{font-size:clamp(2.3rem,5vw,4.6rem);font-weight:600;letter-spacing:-.03em;line-height:1.02;max-width:16ch}\n#atn-home .impatto h2 em{color:var(--mint)}\n#atn-home .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:9vh;border-top:1px solid rgba(246,241,230,.2)}\n#atn-home .stat{padding:34px 26px 10px 0;border-right:1px solid rgba(246,241,230,.12)}\n#atn-home .stat:last-child{border-right:0}\n#atn-home .stat b{display:block;font-size:clamp(2.6rem,5vw,4.4rem);font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--mint)}\n#atn-home .stat span{display:block;margin-top:12px;font-size:.95rem;opacity:.8;max-width:18ch}\n#atn-home .impatto .note{margin-top:26px;font-size:.75rem;opacity:.45}\n#atn-home .impatto .btn{margin-top:46px}\n#atn-home .leafline{position:absolute;right:-4vw;top:8vh;width:min(520px,46vw);z-index:2;opacity:.55}\n#atn-home .leafline path{fill:none;stroke:var(--mint);stroke-width:1.2;stroke-linecap:round}\n@media (max-width:860px){#atn-home .stats{grid-template-columns:1fr 1fr}#atn-home .stat{border-right:0;border-bottom:1px solid rgba(246,241,230,.12)}#atn-home .leafline{display:none}}\n\/* ---------- CLEANUP-Spiel ---------- *\/\n#atn-home .cleanup{background:var(--forest);color:var(--cream);padding:4vh 0 16vh}\n#atn-home .cleanup .head{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:end;margin-bottom:6vh}\n#atn-home .cleanup h2{font-size:clamp(2.3rem,5vw,4.6rem);font-weight:600;letter-spacing:-.03em;line-height:1.02}\n#atn-home .cleanup h2 em{color:var(--mint)}\n#atn-home .cleanup .head p{opacity:.78;font-size:1.05rem;max-width:46ch}\n#atn-home .beach-wrap{position:relative;width:min(1240px,100% - 48px);margin:0 auto;height:min(80vh,740px);min-height:460px;border-radius:28px;overflow:hidden;background:#d9c39a;box-shadow:0 50px 90px -40px rgba(0,0,0,.6);user-select:none;-webkit-user-select:none}\n#atn-home .beach-wrap canvas{display:block;width:100%;height:100%;touch-action:none}\n#atn-home .hud{position:absolute;left:20px;bottom:20px;display:flex;align-items:center;gap:14px;padding:12px 18px 12px 16px;border-radius:18px;background:rgba(15,38,26,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--cream);pointer-events:none}\n#atn-home .hud .cnt b{font-size:2rem;font-weight:300;letter-spacing:-.03em;color:var(--mint)}\n#atn-home .hud .cnt span{opacity:.6;font-size:1rem}\n#atn-home .hud .cnt i{font-style:normal}\n#atn-home .hud small{display:block;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;opacity:.75;margin-bottom:7px}\n#atn-home .hud .bar{width:120px;height:3px;background:rgba(246,241,230,.2);border-radius:3px;overflow:hidden}\n#atn-home .hud .bar i{display:block;height:100%;width:0;background:var(--mint);transition:width .6s var(--ease)}\n#atn-home .hint{position:absolute;left:50%;top:13%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:999px;background:rgba(246,241,230,.92);color:var(--forest);font-weight:600;font-size:.92rem;pointer-events:none;box-shadow:0 12px 30px -12px rgba(0,0,0,.35);transition:opacity .5s,transform .5s}\n#atn-home .hint svg{width:22px;animation:tap 1.6s var(--ease) infinite}\n#atn-home .hint.off{opacity:0;transform:translate(-50%,-30%)}\n@keyframes tap{0%,100%{transform:translate(0,0)}50%{transform:translate(6px,-6px) rotate(-8deg)}}\n#atn-home .fact{position:absolute;right:20px;top:20px;max-width:min(340px,70%);padding:14px 18px;border-radius:16px;background:rgba(246,241,230,.94);color:var(--forest);font-size:.92rem;line-height:1.4;box-shadow:0 14px 30px -14px rgba(0,0,0,.35);opacity:0;transform:translateY(-10px);transition:opacity .45s,transform .45s var(--ease);pointer-events:none}\n#atn-home .fact.on{opacity:1;transform:none}\n#atn-home .fact b{display:block;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--moss);margin-bottom:4px}\n#atn-home .done{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:rgba(15,38,26,.25);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .8s}\n#atn-home .done.on{opacity:1;pointer-events:auto}\n#atn-home .card-done{background:var(--cream);color:var(--ink);border-radius:24px;padding:34px 34px 30px;max-width:480px;transform:translateY(20px) scale(.97);transition:transform .9s var(--ease);box-shadow:0 40px 80px -30px rgba(0,0,0,.5)}\n#atn-home .done.on .card-done{transform:none}\n#atn-home .card-done h3{font-size:2.2rem;font-weight:600;letter-spacing:-.03em;color:var(--forest);margin:10px 0 10px;line-height:1.05}\n#atn-home .card-done h3 em{color:var(--moss)}\n#atn-home .card-done p{color:var(--muted)}\n#atn-home .card-done .btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}\n#atn-home .card-done .btn.ghost{color:var(--forest)}\n@media (max-width:860px){\n  #atn-home .cleanup .head{grid-template-columns:1fr;gap:18px}\n  #atn-home .beach-wrap{height:68vh;min-height:420px;border-radius:20px}\n  #atn-home .hud{left:12px;bottom:12px;padding:10px 14px}\n  #atn-home .hud .bar{width:80px}\n  #atn-home .fact{right:12px;top:12px;font-size:.84rem}\n}\n\/* ---------- ALBERI ---------- *\/\n#atn-home .alberi{background:var(--sand);padding:16vh 0 12vh}\n#atn-home .alberi .head,#atn-home .ghiaccio .head{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:end;margin-bottom:6vh}\n#atn-home .alberi h2,#atn-home .ghiaccio h2,#atn-home .globo h2,#atn-home .quiz h2{font-size:clamp(2.3rem,5vw,4.6rem);font-weight:600;letter-spacing:-.03em;line-height:1.02}\n#atn-home .alberi h2{color:var(--forest)}#atn-home .alberi h2 em{color:var(--moss)}\n#atn-home .alberi .head p{color:var(--muted);font-size:1.05rem;max-width:46ch}\n#atn-home .tree-wrap,#atn-home .ice-wrap{position:relative;width:min(1240px,100% - 48px);margin:0 auto;height:min(76vh,700px);min-height:440px;border-radius:28px;overflow:hidden;box-shadow:0 50px 90px -40px rgba(15,38,26,.45);user-select:none;-webkit-user-select:none}\n#atn-home .tree-wrap canvas,#atn-home .ice-wrap canvas{display:block;width:100%;height:100%}\n#atn-home .tree-wrap canvas{cursor:crosshair;touch-action:manipulation}\n#atn-home .hud .co2{display:block;margin:8px 0 0;letter-spacing:.02em;text-transform:none;font-size:.78rem;opacity:.8}\n#atn-home .section-note{margin-top:18px;font-size:.78rem;opacity:.55}\n\/* ---------- GLOBO ---------- *\/\n#atn-home .globo{background:radial-gradient(ellipse at 70% 40%,#173a26 0%,var(--forest) 60%);color:var(--cream);padding:16vh 0;overflow:hidden}\n#atn-home .globo .grid{display:grid;grid-template-columns:1fr 1.1fr;gap:4vw;align-items:center}\n#atn-home .globo h2 em{color:var(--mint)}\n#atn-home .globo .gtext > p{opacity:.78;max-width:44ch;margin:20px 0 30px;font-size:1.05rem}\n#atn-home .gstats{display:flex;gap:44px;margin-bottom:30px}\n#atn-home .gstats b{display:block;font-size:clamp(2.8rem,5vw,4.2rem);font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--mint)}\n#atn-home .gstats span{font-size:.85rem;opacity:.75}\n#atn-home .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}\n#atn-home .tab{padding:9px 15px;border-radius:999px;border:1px solid rgba(246,241,230,.22);font-size:.85rem;transition:background .3s,color .3s,border-color .3s}\n#atn-home .tab i{font-style:normal;opacity:.55;margin-left:3px}\n#atn-home .tab.on,#atn-home .tab:hover{background:var(--mint);color:var(--forest);border-color:var(--mint)}\n#atn-home .chips{display:flex;flex-wrap:wrap;gap:6px;max-height:190px;overflow:auto;padding-right:6px;scrollbar-width:thin;scrollbar-color:rgba(207,238,194,.3) transparent}\n#atn-home .chip{font-size:.8rem;padding:6px 11px;border-radius:999px;background:rgba(246,241,230,.07);transition:background .25s,color .25s}\n#atn-home .chip:hover{background:rgba(207,238,194,.22)}\n#atn-home .chip.on{background:var(--mint);color:var(--forest)}\n#atn-home .globe-wrap{position:relative;aspect-ratio:1;width:100%;max-width:640px;margin-left:auto}\n#atn-home .globe-wrap canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:pan-y;opacity:0;transform:scale(.92);transition:opacity 1.2s,transform 1.6s var(--ease)}\n#atn-home .globe-wrap.ready canvas{opacity:1;transform:none}\n#atn-home .gload{position:absolute;inset:0;display:grid;place-items:center;font-size:.85rem;opacity:.6;pointer-events:none;transition:opacity .5s}\n#atn-home .globe-wrap.ready .gload{opacity:0}\n#atn-home .globe-wrap.failed .gload{opacity:.8}\n#atn-home .gtip{position:absolute;left:50%;bottom:6%;transform:translate(-50%,10px);background:rgba(246,241,230,.95);color:var(--forest);padding:10px 18px;border-radius:999px;font-size:.9rem;opacity:0;transition:opacity .3s,transform .4s var(--ease);pointer-events:none;white-space:nowrap}\n#atn-home .gtip.on{opacity:1;transform:translate(-50%,0)}\n#atn-home .gtip b{font-weight:600;margin-right:8px}#atn-home .gtip span{opacity:.6;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase}\n#atn-home .glegend{position:absolute;left:0;top:0;display:flex;flex-direction:column;gap:6px;font-size:.75rem;opacity:.7}\n#atn-home .glegend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px;vertical-align:-1px}\n#atn-home .glegend .v{background:#a9dc95}#atn-home .glegend .h{border:2px solid #f2c230}\n@media (max-width:900px){#atn-home .globo .grid{grid-template-columns:1fr}#atn-home .globe-wrap{margin:0 auto;max-width:520px;order:-1}#atn-home .chips{max-height:150px}}\n\/* ---------- GHIACCIO ---------- *\/\n#atn-home .ghiaccio{background:linear-gradient(180deg,var(--cream),#dfe9ee);padding:14vh 0 12vh;color:var(--ink)}\n#atn-home .ghiaccio h2{color:#10324a}#atn-home .ghiaccio h2 em{color:#2b7fa8}\n#atn-home .ghiaccio .head p{color:#4b5f6a;font-size:1.05rem;max-width:46ch}\n#atn-home .ice-wrap{box-shadow:0 50px 90px -40px rgba(16,50,74,.45)}\n#atn-home .ice-ui{position:absolute;left:0;right:0;bottom:22px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;pointer-events:none;color:#10324a}\n#atn-home .ice-ui .row{display:flex;align-items:center;gap:18px}\n#atn-home .ice-ui .temp{font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;background:rgba(255,255,255,.75);padding:6px 12px;border-radius:999px}\n#atn-home .ice-ui .timer b{font-size:clamp(2.8rem,6vw,4.6rem);font-weight:300;letter-spacing:-.04em;line-height:1}\n#atn-home .ice-ui .timer span{font-size:.85rem;margin-left:6px;opacity:.7}\n#atn-home .ice-ui p{min-height:1.4em;font-size:.98rem;font-weight:500;max-width:90%}\n#atn-home .ice-btn{pointer-events:auto;margin-top:4px;width:clamp(108px,11vw,128px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffffff,#cfe6f1 60%,#9cc6da);color:#10324a;font-weight:600;font-size:.95rem;box-shadow:0 0 0 8px rgba(255,255,255,.35),0 20px 40px -14px rgba(16,50,74,.55);transition:transform .25s var(--ease),box-shadow .25s;touch-action:none;-webkit-touch-callout:none;user-select:none}\n#atn-home .ice-btn:hover{transform:scale(1.04)}\n#atn-home .ice-btn.down{transform:scale(.94);box-shadow:0 0 0 14px rgba(207,230,241,.5),0 0 60px 10px rgba(180,220,240,.8)}\n#atn-home .ice-wrap.cold .ice-ui .timer{animation:shiver .12s linear infinite}\n@keyframes shiver{0%{transform:translate(0,0)}25%{transform:translate(1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}100%{transform:translate(0,0)}}\n#atn-home .card-done .rank b{font-size:1.15rem;color:#2b7fa8}\n#atn-home .card-done .best{margin-top:10px;font-size:.88rem}\n@media (max-width:860px){#atn-home .alberi .head,#atn-home .ghiaccio .head{grid-template-columns:1fr;gap:18px}#atn-home .tree-wrap,#atn-home .ice-wrap{height:68vh;min-height:420px;border-radius:20px}}\n\/* ---------- QUIZ ---------- *\/\n#atn-home .quiz{background:var(--cream);padding:16vh 0}\n#atn-home .quiz .qgrid{display:grid;grid-template-columns:.8fr 1.2fr;gap:6vw;align-items:center}\n#atn-home .quiz h2{color:var(--forest)}#atn-home .quiz h2 em{color:var(--moss)}\n#atn-home .quiz .qgrid > div > p{color:var(--muted);margin-top:20px;max-width:40ch;font-size:1.05rem}\n#atn-home .quiz-card{background:#fff;border-radius:28px;padding:30px;box-shadow:0 40px 80px -40px rgba(15,38,26,.35);min-height:440px;display:flex;flex-direction:column}\n#atn-home .qtop{display:flex;align-items:center;gap:16px;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--moss);margin-bottom:26px}\n#atn-home .qbar{flex:1;height:3px;background:rgba(15,38,26,.08);border-radius:3px;overflow:hidden}\n#atn-home .qbar i{display:block;height:100%;width:0;background:var(--moss);transition:width .6s var(--ease)}\n#atn-home .qbox{flex:1;position:relative}\n#atn-home .qbox > *{transition:opacity .35s,transform .45s var(--ease)}\n#atn-home .qbox > .enter{opacity:0;transform:translateX(30px)}\n#atn-home .qbox > .leave{opacity:0;transform:translateX(-30px)}\n#atn-home .qcard h3{font-size:clamp(1.5rem,2.6vw,2.1rem);font-weight:600;letter-spacing:-.02em;color:var(--forest);margin-bottom:22px;line-height:1.15}\n#atn-home .answers{display:grid;gap:12px}\n#atn-home .answers.imgs{grid-template-columns:repeat(3,1fr)}\n#atn-home .ans{display:flex;align-items:center;gap:14px;text-align:left;padding:16px 18px;border-radius:16px;border:1px solid rgba(15,38,26,.12);background:var(--cream);font-size:1rem;transition:border-color .3s,background .3s,transform .3s var(--ease)}\n#atn-home .ans:hover{border-color:var(--moss);transform:translateX(4px)}\n#atn-home .ans .l{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#fff;font-weight:600;font-size:.85rem;color:var(--moss);border:1px solid rgba(15,38,26,.12)}\n#atn-home .ans.picked{background:var(--mint);border-color:var(--moss)}\n#atn-home .answers.imgs .ans{flex-direction:column;align-items:stretch;padding:8px;gap:8px}\n#atn-home .answers.imgs .ans:hover{transform:translateY(-4px)}\n#atn-home .answers.imgs img{width:100%;aspect-ratio:3\/4;object-fit:cover;border-radius:10px}\n#atn-home .answers.imgs .t{text-align:center;font-weight:600;padding-bottom:4px}\n#atn-home .qres{display:grid;gap:22px}\n#atn-home .qres .ri{border-radius:18px;background-size:cover;background-position:center;min-height:190px;padding:24px;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;position:relative;overflow:hidden;isolation:isolate}\n#atn-home .qres .ri::after{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(10,25,17,.75));z-index:-1}\n#atn-home .qres .ri span{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;opacity:.85}\n#atn-home .qres .ri b{font-size:clamp(2rem,4vw,3rem);font-weight:600;letter-spacing:-.03em;line-height:1}\n#atn-home .qres .ri b em{color:var(--mint)}\n#atn-home .qres .rt p{color:var(--muted)}\n#atn-home .recs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}\n#atn-home .recs a{padding:14px 16px;border-radius:14px;background:var(--cream);font-weight:600;color:var(--forest);transition:background .3s}\n#atn-home .recs a:hover{background:var(--mint)}\n#atn-home .recs small{display:block;font-weight:500;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}\n#atn-home .ra{display:flex;gap:10px;flex-wrap:wrap}\n#atn-home .ra .btn.ghost{color:var(--forest)}\n@media (max-width:900px){#atn-home .quiz .qgrid{grid-template-columns:1fr}#atn-home .quiz-card{padding:22px}#atn-home .answers.imgs{gap:8px}#atn-home .recs{grid-template-columns:1fr}}\n\/* ---------- SOUND-BUTTON ---------- *\/\n#atn-home .sound-btn{position:fixed;right:20px;bottom:20px;z-index:85;display:flex;align-items:center;gap:10px;padding:11px 16px 11px 13px;border-radius:999px;background:rgba(15,38,26,.78);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--cream);font-size:.8rem;letter-spacing:.04em;border:1px solid rgba(207,238,194,.25);transition:background .4s,transform .3s var(--ease)}\n#atn-home .sound-btn:hover{transform:translateY(-2px)}\n#atn-home .sound-btn .bars{display:flex;align-items:flex-end;gap:2px;height:14px}\n#atn-home .sound-btn .bars i{width:2.5px;height:4px;background:var(--mint);border-radius:2px;transition:height .3s}\n#atn-home .sound-btn.on{background:rgba(31,122,53,.9)}\n#atn-home .sound-btn.on .bars i{animation:eq 1s ease-in-out infinite}\n#atn-home .sound-btn.on .bars i:nth-child(2){animation-delay:-.3s}#atn-home .sound-btn.on .bars i:nth-child(3){animation-delay:-.6s}#atn-home .sound-btn.on .bars i:nth-child(4){animation-delay:-.15s}\n@keyframes eq{0%,100%{height:4px}50%{height:14px}}\n@media (max-width:600px){#atn-home .sound-btn #soundLbl{display:none}#atn-home .sound-btn{padding:12px}}\n\/* Impatto: \"Gli Addicted non dicono \u2013 fanno\" *\/\n#atn-home .impatto h2.dicono{font-size:clamp(2.4rem,5.4vw,5rem);font-weight:600;letter-spacing:-.035em;line-height:1.02;max-width:none}\n#atn-home .dicono .strike{position:relative;display:inline-block;margin-right:.25em;transition:opacity .8s .9s}\n#atn-home .dicono .strike::after{content:\"\";position:absolute;left:-4%;right:-4%;top:54%;height:.09em;background:var(--mint);border-radius:.05em;transform:scaleX(0) rotate(-3deg);transform-origin:left;transition:transform .9s cubic-bezier(.7,0,.2,1) .3s}\n#atn-home .dicono .fanno{display:inline-block;color:var(--mint);opacity:0;transform:translateY(.35em) rotate(-4deg);transition:opacity .9s 1.1s,transform 1.1s cubic-bezier(.22,1,.36,1) 1.1s}\n#atn-home .dicono.on .strike::after{transform:scaleX(1) rotate(-3deg)}\n#atn-home .dicono.on .strike{opacity:.45}\n#atn-home .dicono.on .fanno{opacity:1;transform:none}\n#atn-home .imp-intro{max-width:56ch;margin-top:22px;font-size:clamp(1.05rem,1.5vw,1.25rem);opacity:.85;font-weight:300}\n#atn-home .acts{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:8vh}\n#atn-home .act{position:relative;display:flex;flex-direction:column;padding:26px 22px 22px;border-radius:22px;background:rgba(15,38,26,.55);border:1px solid rgba(246,241,230,.14);transition:background .4s,transform .5s var(--ease),border-color .4s}\n#atn-home .act:hover{background:rgba(246,241,230,.13);border-color:rgba(207,238,194,.45);transform:translateY(-6px)}\n#atn-home .act .ico{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--mint);color:var(--forest);margin-bottom:18px;transition:transform .6s var(--ease)}\n#atn-home .act:hover .ico{transform:rotate(-12deg) scale(1.08)}\n#atn-home .act .ico svg{width:24px}\n#atn-home .act .big{font-size:clamp(2.4rem,3.6vw,3.2rem);font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--mint)}\n#atn-home .act small{font-size:.78rem;opacity:.7;margin:2px 0 12px}\n#atn-home .act h3{font-size:1.12rem;font-weight:600;line-height:1.2;margin-bottom:8px}\n#atn-home .act p{font-size:.92rem;opacity:.78;flex:1}\n#atn-home .act .go{margin-top:16px;font-size:.82rem;font-weight:600;color:var(--mint)}\n#atn-home .adv{margin-top:7vh;padding-top:28px;border-top:1px solid rgba(246,241,230,.15)}\n#atn-home .adv-list{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}\n#atn-home .adv-list a{padding:16px 18px;border-radius:16px;background:rgba(10,25,17,.35);font-weight:500;transition:background .3s}\n#atn-home .adv-list a:hover{background:rgba(207,238,194,.18)}\n#atn-home .adv-list small{display:block;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mint);margin-bottom:6px}\n@media (max-width:1100px){#atn-home .acts{grid-template-columns:repeat(3,1fr)}}\n@media (max-width:760px){#atn-home .acts{grid-template-columns:1fr 1fr}#atn-home .adv-list{grid-template-columns:1fr}}\n@media (max-width:480px){#atn-home .acts{grid-template-columns:1fr}}\n\/* ---------- SHOP ---------- *\/\n#atn-home .shop{position:relative;background:var(--sand);overflow:hidden}\n#atn-home .shop .head{padding:16vh 0 6vh;display:flex;justify-content:space-between;align-items:flex-end;gap:40px;flex-wrap:wrap}\n#atn-home .shop h2{font-size:clamp(2.3rem,5vw,4.6rem);font-weight:600;letter-spacing:-.03em;line-height:1.02;color:var(--forest)}\n#atn-home .shop h2 em{color:var(--moss)}\n#atn-home .shop .head p{max-width:42ch;color:var(--muted);font-size:1.05rem}\n#atn-home .track-wrap{padding-bottom:14vh}\n#atn-home .track{display:flex;gap:28px;padding-left:max(24px,calc((100vw - 1240px)\/2));padding-right:10vw;width:max-content}\n#atn-home .card{position:relative;width:clamp(270px,26vw,360px);flex:none;perspective:900px}\n#atn-home .card .in{background:var(--cream);border-radius:22px;overflow:hidden;transform-style:preserve-3d;transition:transform .6s var(--ease),box-shadow .6s;box-shadow:0 1px 0 rgba(0,0,0,.04)}\n#atn-home .card:hover .in{box-shadow:0 40px 60px -30px rgba(15,38,26,.35)}\n#atn-home .card .img{aspect-ratio:1\/1.05;overflow:hidden;background:#e7dfcc;position:relative}\n#atn-home .card .img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}\n#atn-home .card:hover .img img{transform:scale(1.06)}\n#atn-home .card .tag{position:absolute;top:16px;left:16px;background:rgba(246,241,230,.9);backdrop-filter:blur(6px);padding:7px 13px;border-radius:999px;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--forest)}\n#atn-home .card .body{padding:22px 22px 24px;display:flex;justify-content:space-between;align-items:flex-end;gap:14px}\n#atn-home .card h3{font-size:1.08rem;font-weight:500;line-height:1.3;color:var(--forest)}\n#atn-home .card .price{font-family:var(--serif);font-style:italic;font-size:1.2rem;color:var(--moss);white-space:nowrap}\n#atn-home .card .go{position:absolute;right:18px;top:18px;width:44px;height:44px;border-radius:50%;background:var(--forest);color:var(--mint);display:grid;place-items:center;transform:scale(0) rotate(-45deg);transition:transform .5s var(--ease)}\n#atn-home .card:hover .go{transform:scale(1) rotate(0)}\n#atn-home .card .go svg{width:16px}\n#atn-home .card.feature .in{background:var(--forest);color:var(--cream);height:100%;display:flex;flex-direction:column;justify-content:space-between;min-height:100%}\n#atn-home .card.feature .feat{padding:30px;display:flex;flex-direction:column;justify-content:space-between;height:100%;gap:40px}\n#atn-home .card.feature h3{color:var(--cream);font-size:2.1rem;font-weight:300;letter-spacing:-.02em;line-height:1.05}\n#atn-home .card.feature h3 em{color:var(--mint)}\n#atn-home .card.feature p{opacity:.75;font-size:.98rem}\n#atn-home .progress{height:2px;background:rgba(15,38,26,.12);margin-top:44px;position:relative}\n#atn-home .progress i{position:absolute;inset:0;background:var(--moss);transform:scaleX(0);transform-origin:left}\n@media (max-width:800px){\n  #atn-home .track-wrap{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}\n  #atn-home .track-wrap::-webkit-scrollbar{display:none}\n  #atn-home .card{scroll-snap-align:start;width:78vw}\n  #atn-home .progress{display:none}\n}\n\/* ---------- EVENTI ---------- *\/\n#atn-home .eventi{background:var(--cream);padding:18vh 0 14vh}\n#atn-home .eventi .head{display:grid;grid-template-columns:1.1fr 1fr;gap:6vw;align-items:end;margin-bottom:9vh}\n#atn-home .eventi h2{font-size:clamp(2.6rem,6vw,5.6rem);font-weight:600;letter-spacing:-.035em;line-height:.98;color:var(--forest)}\n#atn-home .eventi h2 em{color:var(--moss)}\n#atn-home .eventi .head p{color:var(--muted);font-size:1.08rem;max-width:44ch}\n#atn-home .ev-grid{display:grid;grid-template-columns:1.25fr 1fr;grid-template-rows:auto auto;gap:28px}\n#atn-home .ev{position:relative;border-radius:26px;overflow:hidden;color:var(--cream);min-height:420px;display:flex;align-items:flex-end;isolation:isolate}\n#atn-home .ev:first-child{grid-row:span 2;min-height:680px}\n#atn-home .ev .img{position:absolute;inset:-12% 0;z-index:-2;will-change:transform}\n#atn-home .ev .img img{width:100%;height:100%;object-fit:cover;transition:transform 1.6s var(--ease)}\n#atn-home .ev:hover .img img{transform:scale(1.05)}\n#atn-home .ev::after{content:\"\";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(10,25,17,0) 35%,rgba(10,25,17,.82))}\n#atn-home .ev .c{padding:34px;width:100%}\n#atn-home .ev .kicker{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--mint)}\n#atn-home .ev h3{font-size:clamp(1.7rem,2.8vw,2.6rem);font-weight:600;letter-spacing:-.02em;line-height:1.05;margin:10px 0 10px}\n#atn-home .ev p{opacity:.85;max-width:40ch}\n#atn-home .ev .more{display:inline-flex;align-items:center;gap:10px;margin-top:20px;font-weight:600;font-size:.92rem;border-bottom:1px solid rgba(207,238,194,.5);padding-bottom:3px}\n#atn-home .ev .date{position:absolute;top:24px;right:24px;background:var(--mint);color:var(--forest);border-radius:999px;padding:9px 15px;font-size:.78rem;font-weight:600;letter-spacing:.04em}\n@media (max-width:860px){#atn-home .eventi .head,#atn-home .ev-grid{grid-template-columns:1fr}#atn-home .ev:first-child{grid-row:auto;min-height:480px}#atn-home .ev{min-height:380px}}\n\/* ---------- MANIFESTO ---------- *\/\n#atn-home .manifesto{background:var(--forest);color:var(--cream);padding:22vh 0 20vh;position:relative;overflow:hidden}\n#atn-home .manifesto .big{font-size:clamp(2.2rem,5.6vw,5.4rem);font-weight:500;letter-spacing:-.035em;line-height:1.08;max-width:18ch}\n#atn-home .manifesto .big .wd{opacity:.14;display:inline}\n#atn-home .manifesto .big em{color:var(--mint)}\n#atn-home .manifesto .row2{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-top:9vh;flex-wrap:wrap}\n#atn-home .manifesto .row2 p{max-width:44ch;opacity:.7}\n#atn-home .seal{position:absolute;right:6vw;top:12vh;width:clamp(120px,14vw,200px);opacity:.9}\n#atn-home .seal text{font-size:11.5px;letter-spacing:4.2px;fill:var(--mint);text-transform:uppercase;font-family:var(--sans);font-weight:600}\n@media (max-width:700px){#atn-home .seal{display:none}}\n\/* ---------- SOCIAL + FOOTER ---------- *\/\n#atn-home .social{background:var(--forest);color:var(--cream);padding:0 0 10vh}\n#atn-home .social .wrap{display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;border-top:1px solid rgba(246,241,230,.14);padding-top:6vh}\n#atn-home .social h3{font-size:clamp(1.5rem,2.6vw,2.2rem);font-weight:300;letter-spacing:-.02em;max-width:24ch}\n#atn-home .social .links{display:flex;gap:14px;flex-wrap:wrap}\n#atn-home .social .links a{border:1px solid rgba(246,241,230,.3);border-radius:999px;padding:12px 20px;font-size:.9rem;transition:background .4s,color .4s}\n#atn-home .social .links a:hover{background:var(--mint);color:var(--forest);border-color:var(--mint)}\n#atn-home .waves{display:block;width:100%;height:clamp(90px,14vw,190px);background:var(--forest)}\n#atn-home footer{background:#0a1a11;color:rgba(246,241,230,.8);padding:8vh 0 4vh;font-size:.92rem}\n#atn-home footer .top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px}\n#atn-home footer img{height:46px;width:auto;margin-bottom:18px}\n#atn-home footer h4{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mint);font-weight:600;margin-bottom:14px}\n#atn-home footer ul{list-style:none;display:grid;gap:8px}\n#atn-home footer a:hover{color:var(--mint)}\n#atn-home footer .bottom{margin-top:7vh;padding-top:22px;border-top:1px solid rgba(246,241,230,.1);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:.78rem;opacity:.6}\n@media (max-width:760px){#atn-home footer .top{grid-template-columns:1fr}}\n\/* Reveal-Utilities *\/\n#atn-home .split .ln{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}\n#atn-home .split .ln > span{display:inline-block;will-change:transform}\n#atn-home [data-reveal]{will-change:transform,opacity}\n@media (prefers-reduced-motion:reduce){\n  #atn-home .dicono .fanno{opacity:1;transform:none}#atn-home .dicono .strike::after{transform:scaleX(1)}\n  #atn-home .grain{animation:none}\n  #atn-home .vivi,#atn-home .ciclo{height:auto}\n  #atn-home .vivi .stage,#atn-home .ciclo .stage{position:relative;height:auto;min-height:100svh}\n}\n<\/style>\n<div id=\"atn-home\" data-no-translation data-no-dynamic-translation>\n<script type=\"application\/ld+json\">{\"@type\": \"SportsEvent\", \"name\": \"Zollhaus Open 2027 \u2013 Campionato tedesco di nuoto nel ghiaccio\", \"startDate\": \"2027-02-19\", \"endDate\": \"2027-02-20\", \"eventStatus\": \"https:\/\/schema.org\/EventScheduled\", \"eventAttendanceMode\": \"https:\/\/schema.org\/OfflineEventAttendanceMode\", \"url\": \"https:\/\/addicted-to.com\/en\/zollhaus-open-2027\/\", \"image\": \"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min.jpg\", \"description\": \"Campionato tedesco di nuoto nel ghiaccio al Landhotel Altes Zollhaus, organizzato con Addicted To Nature.\", \"organizer\": {\"@id\": \"https:\/\/addicted-to.com\/#organization\"}, \"location\": {\"@type\": \"Place\", \"name\": \"Landhotel Altes Zollhaus\", \"address\": {\"@type\": \"PostalAddress\", \"streetAddress\": \"Altenberger Str. 7\", \"postalCode\": \"01776\", \"addressLocality\": \"Hermsdorf\/Erzgebirge\", \"addressRegion\": \"Sachsen\", \"addressCountry\": \"DE\"}}, \"@context\": \"https:\/\/schema.org\"}<\/script>\n<div class=\"grain\" aria-hidden=\"true\"><\/div>\n<div class=\"cursor\" aria-hidden=\"true\"><\/div>\n<button class=\"sound-btn\" id=\"soundBtn\" aria-pressed=\"false\" aria-label=\"Attiva o disattiva i suoni della natura\"><span class=\"bars\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><i><\/i><\/span><span id=\"soundLbl\">Suoni della natura<\/span><\/button>\n<header class=\"nav\" id=\"nav\">\n  <div class=\"wrap\">\n    <a class=\"logo\" href=\"https:\/\/addicted-to.com\/\" aria-label=\"Addicted To Nature \u2013 Home\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/ATN_marchio_negativo.svg\" width=\"152\" height=\"44\" alt=\"Addicted To Nature\"><\/a>\n    <nav aria-label=\"Menu principale\">\n      <ul>\n        <li><a href=\"https:\/\/addicted-to.com\/manifesto\/\">MANIFESTO<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/impatto\/\">IMPATTO<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/shop-addicted\/\">SHOP<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/eventi\/\">EVENTI<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/contatti\/\">CONTATTI<\/a><\/li>\n      <\/ul>\n    <\/nav>\n    <div class=\"tools\">\n      <div class=\"lang\"><a class=\"on\" href=\"https:\/\/addicted-to.com\/\">IT<\/a> \u00b7 <a href=\"https:\/\/addicted-to.com\/en\/\">EN<\/a> \u00b7 <a href=\"https:\/\/addicted-to.com\/de\/\">DE<\/a><\/div>\n      <a class=\"cart\" href=\"https:\/\/addicted-to.com\/carrello\/\" aria-label=\"Carrello\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M5 8h14l-1.2 11.2a2 2 0 0 1-2 1.8H8.2a2 2 0 0 1-2-1.8L5 8z\"\/><path d=\"M9 8V6a3 3 0 0 1 6 0v2\"\/><\/svg><b>0<\/b>\n      <\/a>\n      <button class=\"burger\" id=\"burger\" aria-label=\"Apri menu\"><span><\/span><span><\/span><\/button>\n    <\/div>\n  <\/div>\n<\/header>\n<div class=\"mobile-menu\" id=\"mmenu\">\n  <a href=\"https:\/\/addicted-to.com\/manifesto\/\">Manifesto<\/a>\n  <a href=\"https:\/\/addicted-to.com\/impatto\/\">Impatto<\/a>\n  <a href=\"https:\/\/addicted-to.com\/shop-addicted\/\">Shop<\/a>\n  <a href=\"https:\/\/addicted-to.com\/eventi\/\">Eventi<\/a>\n  <a href=\"https:\/\/addicted-to.com\/contatti\/\"><em>Contatti<\/em><\/a>\n<\/div>\n<main>\n<section class=\"hero\" id=\"hero\" data-sound=\"ocean\">\n  <img fetchpriority=\"high\" class=\"poster\" id=\"poster\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min-1536x720.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min-768x360.jpg 768w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min-1024x480.jpg 1024w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min-1536x720.jpg 1536w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min.jpg 1920w\" sizes=\"(orientation: portrait) 120vh, 70vw\" width=\"1920\" height=\"900\" fetchpriority=\"high\" decoding=\"async\" alt=\"Surfista dentro un'onda gigante nell'oceano\">\n  <canvas id=\"gl\" aria-hidden=\"true\"><\/canvas>\n  <div class=\"fallback\" id=\"fallback\" aria-hidden=\"true\"><\/div>\n  <div class=\"hero-inner\">\n    <h1><span class=\"sr-only\">Addicted To Nature \u2013 la community di chi vive, rispetta e custodisce la Natura<\/span>\n      <span aria-hidden=\"true\"><span class=\"to\">Addicted to<\/span>\n      <span class=\"rot\" id=\"rot\"><span class=\"w\"><i>A<\/i><i>d<\/i><i>r<\/i><i>e<\/i><i>n<\/i><i>a<\/i><i>l<\/i><i>i<\/i><i>n<\/i><i>e<\/i><\/span><\/span><\/span>\n    <\/h1>\n    <p class=\"sub\" aria-hidden=\"true\">La community di chi vive, rispetta e custodisce la Natura<\/p>\n    <a class=\"btn magnetic\" href=\"#quiz\">Are you Addicted?\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/a>\n  <\/div>\n  <div class=\"hero-meta\">\n    <div class=\"wrap\">\n      <div class=\"dots\" id=\"dots\"><\/div>\n      <div class=\"place\" id=\"place\">Oceano \u00b7 L\u2019onda<\/div>\n      <div class=\"scroll-cue\"><span>Scorri<\/span><span class=\"line\"><\/span><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"vivi\" id=\"vivi\" data-sound=\"meadow\">\n  <div class=\"stage\">\n    <div class=\"bg grey\"><\/div>\n    <div class=\"bg color\"><\/div>\n    <div class=\"marquee\" aria-hidden=\"true\">\n      <div class=\"row r1\"><span>Casa \u00b7 lavoro \u00b7 casa \u00b7 lavoro \u00b7<\/span><span>Casa \u00b7 lavoro \u00b7 casa \u00b7 lavoro \u00b7<\/span><\/div>\n      <div class=\"row r2\"><span>Ogni giorno \u00b7 per sempre \u00b7 ogni giorno \u00b7<\/span><span>Ogni giorno \u00b7 per sempre \u00b7 ogni giorno \u00b7<\/span><\/div>\n      <div class=\"row r3\"><span>Casa \u00b7 lavoro \u00b7 casa \u00b7 lavoro \u00b7<\/span><span>Casa \u00b7 lavoro \u00b7 casa \u00b7 lavoro \u00b7<\/span><\/div>\n    <\/div>\n    <div class=\"txt\">\n      <div class=\"t1\"><h2>Vivi o <em>sopravvivi?<\/em><\/h2><\/div>\n      <div class=\"t2\"><p>Casa, lavoro, casa\u2026 Ogni giorno, per sempre. E questa sarebbe vita?<\/p><small>Continua a scorrere<\/small><\/div>\n      <div class=\"t3\"><h2>No. Per noi c\u2019\u00e8 <em>di pi\u00f9.<\/em><\/h2>\n        <p>Lo stile di vita moderno prova a ingabbiarci, ma il nostro corpo e la nostra anima vogliono solo una cosa: Natura.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"ciclo\" id=\"ciclo\" data-sound=\"forest\">\n  <div class=\"stage\">\n    <div class=\"wrap grid\">\n      <div>\n        <span class=\"eyebrow\" style=\"color:var(--moss)\">Dalla Natura alla Natura<\/span>\n        <h2 style=\"margin-top:18px\">Un circolo <em>virtuoso<\/em>.<\/h2>\n        <p class=\"intro\">\u00c8 un richiamo primordiale che, se assecondato, fa crescere Persone, Societ\u00e0 e Natura stessa. \u00c8 questo lo spirito di Addicted To Nature.<\/p>\n        <div class=\"steps\">\n          <div class=\"step on\"><span class=\"num\">01 \u2014<\/span><h3>Persone<\/h3><p>Chi torna nella Natura torna a sentirsi vivo: pi\u00f9 energia, pi\u00f9 coraggio, pi\u00f9 presenza. Il corpo si ricorda da dove viene.<\/p><\/div>\n          <div class=\"step\"><span class=\"num\">02 \u2014<\/span><h3>Societ\u00e0<\/h3><p>Persone pi\u00f9 consapevoli formano comunit\u00e0 pi\u00f9 forti, che scelgono, consumano e vivono in modo diverso.<\/p><\/div>\n          <div class=\"step\"><span class=\"num\">03 \u2014<\/span><h3>Natura<\/h3><p>E una societ\u00e0 che sceglie meglio restituisce alla Natura ci\u00f2 che le ha preso. Il cerchio si chiude \u2013 e ricomincia.<\/p><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"ring\" id=\"ring\">\n        <div class=\"window\">\n          <img loading=\"lazy\" class=\"on\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/07\/aaron-curcio-addicted-to-nature-planting-768x768.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/07\/aaron-curcio-addicted-to-nature-planting-600x600.jpg 600w, https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/07\/aaron-curcio-addicted-to-nature-planting-768x768.jpg 768w\" sizes=\"auto, (max-width:860px) 62vw, 440px\" width=\"768\" height=\"768\" loading=\"lazy\" decoding=\"async\" alt=\"Un Addicted pianta un giovane albero durante un Nature day\">\n          <img loading=\"lazy\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_eventi-min-1024x480.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_eventi-min-1024x480.jpg 1024w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_eventi-min-1536x720.jpg 1536w\" sizes=\"auto, (max-width:860px) 140vw, 940px\" width=\"1024\" height=\"480\" loading=\"lazy\" decoding=\"async\" alt=\"Escursionisti su una scogliera al tramonto\">\n          <img loading=\"lazy\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min-1024x480.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min-1024x480.jpg 1024w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min-1536x720.jpg 1536w\" sizes=\"auto, (max-width:860px) 140vw, 940px\" width=\"1024\" height=\"480\" loading=\"lazy\" decoding=\"async\" alt=\"Foresta di conifere vista dall'alto\">\n        <\/div>\n        <svg viewBox=\"0 0 500 500\" aria-hidden=\"true\">\n          <circle cx=\"250\" cy=\"250\" r=\"236\" fill=\"none\" stroke=\"rgba(15,38,26,.12)\" stroke-width=\"2\"\/>\n          <circle id=\"ringProg\" cx=\"250\" cy=\"250\" r=\"236\" fill=\"none\" stroke=\"#1f7a35\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-dasharray=\"1483\" stroke-dashoffset=\"1483\" transform=\"rotate(-90 250 250)\"\/>\n          <circle class=\"node on\" cx=\"250\" cy=\"14\"  r=\"12\"\/>\n          <circle class=\"node\"    cx=\"454.4\" cy=\"368\" r=\"12\"\/>\n          <circle class=\"node\"    cx=\"45.6\"  cy=\"368\" r=\"12\"\/>\n          <circle id=\"seed\" cx=\"250\" cy=\"14\" r=\"6\" fill=\"#0f261a\"\/>\n        <\/svg>\n        <span class=\"lbl l0 on\">Persone<\/span>\n        <span class=\"lbl l1\">Societ\u00e0<\/span>\n        <span class=\"lbl l2\">Natura<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"alberi\" id=\"alberi\" data-sound=\"meadow\">\n  <div class=\"wrap head\">\n    <div>\n      <span class=\"eyebrow\" style=\"color:var(--moss)\" data-reveal>Nature days \u00b7 Prova tu<\/span>\n      <h2 class=\"split\" style=\"margin-top:18px\">Pianta il tuo <em>bosco.<\/em><\/h2>\n    <\/div>\n    <p data-reveal>Durante i nostri Nature days piantiamo nuovo verde dove ce n\u2019\u00e8 pi\u00f9 bisogno. Qui puoi iniziare tu: clicca sulla collina per piantare un seme e guarda il bosco crescere \u2013 e tornare a vivere.<\/p>\n  <\/div>\n  <div class=\"tree-wrap\" id=\"treeWrap\">\n    <canvas id=\"treeCv\" aria-label=\"Gioco: clicca sulla collina per piantare alberi\"><\/canvas>\n    <div class=\"hud\">\n      <div class=\"cnt\"><b id=\"tCount\">0<\/b><span>\/<i id=\"tGoal\">20<\/i><\/span><\/div>\n      <div><small>alberi piantati<\/small><div class=\"bar\"><i id=\"tBar\"><\/i><\/div><small class=\"co2\">\u2248 <span id=\"tCo2\">0<\/span> kg di CO\u2082 all\u2019anno, da grandi*<\/small><\/div>\n    <\/div>\n    <div class=\"hint\" id=\"tHint\" style=\"top:14%\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M12 22V12m0 0c0-4 3-7 7-7 0 4-3 7-7 7zm0 0C12 8 9 5 5 5c0 4 3 7 7 7\"\/><\/svg>Clicca sulla collina per piantare<\/div>\n    <div class=\"done\" id=\"tDone\">\n      <div class=\"card-done\">\n        <span class=\"eyebrow\" style=\"color:var(--moss)\">Il bosco \u00e8 nato<\/span>\n        <h3>Ecco cosa pu\u00f2 fare <em>una persona.<\/em><\/h3>\n        <p>Ora immagina una giornata intera con tutta la community, pale in mano e terra sotto le unghie. Questo \u00e8 un Nature day di Addicted To Nature.<\/p>\n        <div class=\"btns\">\n          <a class=\"btn dark\" href=\"https:\/\/addicted-to.com\/eventi\/\">Partecipa a un Nature day <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/a>\n          <button class=\"btn ghost\" id=\"tAgain\">Ricomincia<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <p class=\"wrap section-note\">* Stima indicativa: un albero adulto assorbe in media circa 22 kg di CO\u2082 all\u2019anno, a seconda della specie e del clima.<\/p>\n<\/section>\n<section class=\"impatto\" id=\"impatto\" data-sound=\"forest\">\n  <div class=\"bg\" role=\"img\" aria-label=\"Bosco autunnale visto dall'alto\"><\/div>\n  <svg class=\"leafline\" viewBox=\"0 0 400 400\" aria-hidden=\"true\">\n    <path d=\"M200 390 C200 300 196 220 200 20\"\/>\n    <path d=\"M200 300 C160 280 120 250 96 200 C140 206 178 236 200 270\"\/>\n    <path d=\"M200 230 C240 210 282 182 304 130 C258 138 222 168 200 200\"\/>\n    <path d=\"M200 160 C170 140 146 112 136 70 C170 82 194 110 200 135\"\/>\n    <path d=\"M200 105 C222 88 238 64 244 34 C222 44 206 66 200 86\"\/>\n  <\/svg>\n  <div class=\"wrap\">\n    <span class=\"eyebrow\" style=\"color:var(--mint)\" data-reveal>Il nostro impatto<\/span>\n    <h2 class=\"dicono\" id=\"dicono\" style=\"margin-top:20px\">Gli Addicted non <span class=\"strike\">dicono<\/span><em class=\"fanno\">fanno.<\/em><\/h2>\n    <p class=\"imp-intro\" data-reveal>Conoscenza e consapevolezza sono sempre importanti, ma le parole non bastano. Noi Addicted non ci fermiamo alla retorica: per avere un vero impatto ambientale, noi Addicted\u2026<\/p>\n    <div class=\"acts\">\n      <a class=\"act\" href=\"#globo\" data-reveal>\n        <span class=\"ico\"><svg viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M9 4h8v11l7 3a4 4 0 0 1 3 4v3H5V4\"\/><path d=\"M5 25h22M12 9h5M12 13h5\"\/><\/svg><\/span>\n        <b class=\"big\"><span data-count=\"63\">0<\/span><\/b><small>paesi e territori<\/small>\n        <h3>Ci allacciamo gli scarponi<\/h3>\n        <p>Viviamo appieno tutto quello che la Natura ci offre.<\/p>\n        <span class=\"go\">Guarda il globo \u2192<\/span>\n      <\/a>\n      <a class=\"act\" href=\"https:\/\/addicted-to.com\/cleanup\/\" data-reveal>\n        <span class=\"ico\"><svg viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M10 28V15l-3-4a2 2 0 0 1 3-2.5l2 2.5V6a2 2 0 0 1 4 0v6-8a2 2 0 0 1 4 0v8-6a2 2 0 0 1 4 0v12a10 10 0 0 1-4 8v2\"\/><\/svg><\/span>\n        <h3>Ci infiliamo i guanti<\/h3>\n        <p>Ripuliamo dove le persone hanno lasciato \u201ctracce\u201d, come nel nostro cleanup di una grotta a Cefal\u00f9.<\/p>\n        <span class=\"go\">Il cleanup della grotta \u2192<\/span>\n      <\/a>\n      <a class=\"act\" href=\"https:\/\/addicted-to.com\/piantare-alberi-esotici\/\" data-reveal>\n        <span class=\"ico\"><svg viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M16 28V15\"\/><path d=\"M16 15c0-5 4-8 9-8 0 5-4 8-9 8z\"\/><path d=\"M16 18c0-4-3-7-8-7 0 4 3 7 8 7z\"\/><path d=\"M9 28h14\"\/><\/svg><\/span>\n        <b class=\"big\"><span data-count=\"400\">0<\/span><\/b><small>alberi piantati in Sicilia<\/small>\n        <h3>Ci sporchiamo le unghie di terra<\/h3>\n        <p>Ripopoliamo di alberi zone desertiche o deforestate.<\/p>\n        <span class=\"go\">Come li abbiamo piantati \u2192<\/span>\n      <\/a>\n      <a class=\"act\" href=\"https:\/\/addicted-to.com\/shop-addicted\/\" data-reveal>\n        <span class=\"ico\"><svg viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 18l6-5h6l4 3\"\/><path d=\"M28 18l-6-5\"\/><path d=\"M10 13l6 6a2 2 0 0 0 3-3l-3-3\"\/><path d=\"M4 18l8 8h6l10-8\"\/><\/svg><\/span>\n        <h3>Sosteniamo gli artigiani<\/h3>\n        <p>Scegliamo e gratifichiamo le piccole imprese locali, che realizzano i prodotti sostenibili del nostro shop.<\/p>\n        <span class=\"go\">Vai allo shop \u2192<\/span>\n      <\/a>\n      <a class=\"act\" href=\"https:\/\/addicted-to.com\/impatto\/\" data-reveal>\n        <span class=\"ico\"><svg viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"16\" cy=\"20\" r=\"7\"\/><path d=\"M12 13L8 4h5l3 6 3-6h5l-4 9\"\/><path d=\"M16 17v6M14 19l2-2\"\/><\/svg><\/span>\n        <h3>Supportiamo gli Atleti Addicted<\/h3>\n        <p>Sponsorizziamo solo gli sportivi che condividono i nostri valori.<\/p>\n        <span class=\"go\">Scopri di pi\u00f9 \u2192<\/span>\n      <\/a>\n    <\/div>\n    <div class=\"adv\">\n      <span class=\"eyebrow\" style=\"color:var(--mint)\">Le nostre avventure a impatto<\/span>\n      <div class=\"adv-list\">\n        <a href=\"https:\/\/addicted-to.com\/restaurare-un-vecchio-catamarano-e-riportarlo-in-vita\/\"><small>Ricerca<\/small>Restaurare un vecchio catamarano e riportarlo in vita<\/a>\n        <a href=\"https:\/\/addicted-to.com\/riconnettersi-alla-natura-con-il-metodo-wim-hof\/\"><small>Ricerca<\/small>Riconnettersi alla natura con il Metodo Wim Hof<\/a>\n        <a href=\"https:\/\/addicted-to.com\/riciclare-persiane-in-orti-sollevati\/\"><small>Ricerca<\/small>Riciclare persiane in orti sollevati<\/a>\n      <\/div>\n    <\/div>\n    <a class=\"btn magnetic\" href=\"https:\/\/addicted-to.com\/impatto\/\">Scopri il nostro impatto\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/a>\n  <\/div>\n<\/section>\n<section class=\"cleanup\" id=\"cleanup\" data-sound=\"ocean\">\n  <div class=\"wrap head\">\n    <div>\n      <span class=\"eyebrow\" style=\"color:var(--mint)\" data-reveal>Raccolta rifiuti \u00b7 Prova tu<\/span>\n      <h2 class=\"split\" style=\"margin-top:18px\">Pulisci la <em>spiaggia.<\/em><\/h2>\n    <\/div>\n    <p data-reveal>Il mare ci restituisce ogni giorno quello che gli buttiamo dentro. Prendi la plastica con il mouse e mettila nel cestino \u2013 o lanciala dentro. \u00c8 quello che facciamo nei nostri Cleanup, solo con le mani vere.<\/p>\n  <\/div>\n  <div class=\"beach-wrap\" id=\"beachWrap\">\n    <canvas id=\"beach\" aria-label=\"Gioco: raccogli la plastica sulla spiaggia e mettila nel cestino\"><\/canvas>\n    <div class=\"hud\">\n      <div class=\"cnt\"><b id=\"bCount\">0<\/b><span>\/<i id=\"bTotal\">16<\/i><\/span><\/div>\n      <div><small>rifiuti raccolti<\/small><div class=\"bar\"><i id=\"bBar\"><\/i><\/div><\/div>\n    <\/div>\n    <div class=\"hint\" id=\"bHint\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M8 13V5.5a1.5 1.5 0 0 1 3 0V12m0-1.5a1.5 1.5 0 0 1 3 0V12m0-1a1.5 1.5 0 0 1 3 0v1.5m0-.5a1.5 1.5 0 0 1 3 0V16a6 6 0 0 1-6 6h-1.6a6 6 0 0 1-4.6-2.2L4.4 16.6a1.5 1.5 0 0 1 2.3-1.9L8 16\"\/><\/svg>Trascina la plastica nel cestino<\/div>\n    <div class=\"fact\" id=\"bFact\"><\/div>\n    <div class=\"done\" id=\"bDone\">\n      <div class=\"card-done\">\n        <span class=\"eyebrow\" style=\"color:var(--moss)\">Spiaggia pulita<\/span>\n        <h3>Grazie, <em>Addicted!<\/em><\/h3>\n        <p>Hai tolto <b id=\"bGrams\">0 g<\/b> di plastica dalla spiaggia. Ora immagina di farlo in 50, per un\u2019intera mattina: questo \u00e8 un Cleanup di Addicted To Nature.<\/p>\n        <div class=\"btns\">\n          <a class=\"btn dark\" href=\"https:\/\/addicted-to.com\/eventi\/\">Partecipa a un Cleanup <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/a>\n          <button class=\"btn ghost\" id=\"bAgain\">Ricomincia<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"shop\" id=\"shop\" data-sound=\"meadow\">\n  <div class=\"wrap head\">\n    <div>\n      <span class=\"eyebrow\" style=\"color:var(--moss)\" data-reveal>Shop<\/span>\n      <h2 class=\"split\" style=\"margin-top:18px\">Sostenibilit\u00e0, qualit\u00e0, <em>esperienze.<\/em><\/h2>\n    <\/div>\n    <p data-reveal>L\u2019Addicted lifestyle si manifesta anche attraverso le nostre creazioni artigianali: prodotti sostenibili realizzati da piccoli artigiani, nel rispetto della Natura.<\/p>\n  <\/div>\n  <div class=\"track-wrap\" id=\"trackWrap\">\n    <div class=\"track\" id=\"track\">\n      <a class=\"card feature\" href=\"https:\/\/addicted-to.com\/product-category\/abbigliamento\/\">\n        <div class=\"in\"><div class=\"feat\">\n          <span class=\"eyebrow\" style=\"color:var(--mint)\">Abbigliamento<\/span>\n          <div><h3>Indossa la tua <em>dipendenza<\/em> per la Natura.<\/h3><p style=\"margin-top:14px\">Capi in materiali sostenibili, pensati per l\u2019avventura e per ogni giorno.<\/p><\/div>\n          <span class=\"btn\" style=\"align-self:flex-start\">Scopri la collezione <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/span>\n        <\/div><\/div>\n      <\/a>\n      <a class=\"card tilt\" href=\"https:\/\/addicted-to.com\/product\/sadhu-board-tavola-con-chiodi\/\">\n        <div class=\"in\"><div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/05\/sadhu-nail-board-600x600.jpg\" width=\"600\" height=\"600\" alt=\"Sadhu Board \u2013 tavola con chiodi in legno\"><span class=\"tag\">Accessori<\/span><\/div>\n        <div class=\"body\"><h3>Sadhu Board \u2013 Tavola con Chiodi<\/h3><span class=\"price\">79,00 \u20ac<\/span><\/div><\/div>\n        <span class=\"go\"><svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M4 12L12 4M5 4h7v7\"\/><\/svg><\/span>\n      <\/a>\n      <a class=\"card tilt\" href=\"https:\/\/addicted-to.com\/product\/sapone-cosmopolita-100-g\/\">\n        <div class=\"in\"><div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/05\/sapone-cosmopolitan-soap-min-600x600.jpg\" width=\"600\" height=\"600\" alt=\"Sapone cosmopolita artigianale da 100 g\"><span class=\"tag\">Cosmetici<\/span><\/div>\n        <div class=\"body\"><h3>Sapone cosmopolita \u2013 100 g<\/h3><span class=\"price\">4,80 \u20ac<\/span><\/div><\/div>\n        <span class=\"go\"><svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M4 12L12 4M5 4h7v7\"\/><\/svg><\/span>\n      <\/a>\n      <a class=\"card tilt\" href=\"https:\/\/addicted-to.com\/product\/miele-di-eucalipto-etna-volcano-250g\/\">\n        <div class=\"in\"><div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2020\/07\/eucalyptus-honey-etna-volcano-600x600.jpg\" width=\"600\" height=\"600\" alt=\"Miele di eucalipto dell'Etna, vasetto da 250 g\"><span class=\"tag\">Cibo<\/span><\/div>\n        <div class=\"body\"><h3>Miele di eucalipto dell\u2019Etna \u2013 250 g<\/h3><span class=\"price\">11,75 \u20ac<\/span><\/div><\/div>\n        <span class=\"go\"><svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M4 12L12 4M5 4h7v7\"\/><\/svg><\/span>\n      <\/a>\n      <a class=\"card tilt\" href=\"https:\/\/addicted-to.com\/product\/fiore-di-cioccolato\/\">\n        <div class=\"in\"><div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2020\/02\/plant-in-a-wooden-cube-chocolate-flowers-600x600.jpg\" width=\"600\" height=\"600\" alt=\"NatureCube, kit per coltivare il fiore di cioccolato\"><span class=\"tag\">Piante e Semi<\/span><\/div>\n        <div class=\"body\"><h3>NatureCube \u2013 Kit per coltivare il fiore di cioccolato<\/h3><span class=\"price\">9,95 \u20ac<\/span><\/div><\/div>\n        <span class=\"go\"><svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M4 12L12 4M5 4h7v7\"\/><\/svg><\/span>\n      <\/a>\n      <a class=\"card feature\" href=\"https:\/\/addicted-to.com\/shop-addicted\/\">\n        <div class=\"in\" style=\"background:var(--moss)\"><div class=\"feat\">\n          <span class=\"eyebrow\" style=\"color:var(--mint)\">Tutto lo shop<\/span>\n          <h3>Ogni acquisto <em>restituisce<\/em> qualcosa alla Natura.<\/h3>\n          <span class=\"btn\" style=\"align-self:flex-start\">Vai allo shop <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/span>\n        <\/div><\/div>\n      <\/a>\n    <\/div>\n    <div class=\"wrap\"><div class=\"progress\"><i id=\"shopProg\"><\/i><\/div><\/div>\n  <\/div>\n<\/section>\n<section class=\"globo\" id=\"globo\" data-sound=\"meadow\">\n  <div class=\"wrap grid\">\n    <div class=\"gtext\">\n      <span class=\"eyebrow\" style=\"color:var(--mint)\" data-reveal>Dove siamo stati<\/span>\n      <h2 class=\"split\" style=\"margin-top:18px\">Il mondo \u00e8 la nostra <em>palestra.<\/em><\/h2>\n      <p data-reveal>Dalla nostra casa base a Cefal\u00f9 fino a Tonga: in ognuno di questi posti abbiamo vissuto la Natura in prima persona. Gira il globo, tocca un paese e segui la rotta.<\/p>\n      <div class=\"gstats\" data-reveal><div><b id=\"gTotal\">63<\/b><span>paesi e territori<\/span><\/div><div><b id=\"gCont\">5<\/b><span>continenti<\/span><\/div><\/div>\n      <div class=\"tabs\" id=\"gTabs\" role=\"tablist\" aria-label=\"Continenti\"><\/div>\n      <div class=\"chips\" id=\"gChips\"><\/div>\n    <\/div>\n    <div class=\"globe-wrap\" id=\"globeWrap\">\n      <canvas id=\"globeCv\" aria-label=\"Globo interattivo con i paesi in cui \u00e8 stata Addicted To Nature\"><\/canvas>\n      <div class=\"glegend\"><span><i class=\"v\"><\/i>Paesi visitati<\/span><span><i class=\"h\"><\/i>Casa base: Cefal\u00f9<\/span><\/div>\n      <div class=\"gtip\" id=\"globeTip\"><\/div>\n      <p class=\"gload\">Il globo si sta caricando\u2026<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"eventi\" id=\"eventi\" data-sound=\"meadow\">\n  <div class=\"wrap\">\n    <div class=\"head\">\n      <div>\n        <span class=\"eyebrow\" style=\"color:var(--moss)\" data-reveal>Eventi<\/span>\n        <h2 class=\"split\" style=\"margin-top:18px\">Vuoi unirti <em>a noi?<\/em><\/h2>\n      <\/div>\n      <p data-reveal>Noi Addicted giriamo il mondo per partecipare ad avventure al cardiopalma e ad eventi legati alla sostenibilit\u00e0. Qualche esempio?<\/p>\n    <\/div>\n    <div class=\"ev-grid\">\n      <a class=\"ev\" href=\"https:\/\/addicted-to.com\/eventi\/\">\n        <div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_eventi-min-1536x720.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_eventi-min-1024x480.jpg 1024w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/04\/Header_eventi-min-1536x720.jpg 1536w\" sizes=\"auto, (max-width:860px) 200vw, 1100px\" width=\"1536\" height=\"720\" alt=\"Avventura in montagna: escursionisti su una scogliera al tramonto\"><\/div>\n        <div class=\"c\"><span class=\"kicker\">Avventure<\/span><h3>In giro per il mondo, col cuore in gola.<\/h3><p>Esperienze pazzesche e mozzafiato: onde, vette, ghiaccio e cieli aperti.<\/p><span class=\"more\">Scopri di pi\u00f9 \u2192<\/span><\/div>\n      <\/a>\n      <a class=\"ev\" href=\"https:\/\/addicted-to.com\/en\/zollhaus-open-2027\/\">\n        <div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min-1024x480.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min-1024x480.jpg 1024w, https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_01-min-1536x720.jpg 1536w\" sizes=\"auto, (max-width:860px) 100vw, 540px\" width=\"1024\" height=\"480\" alt=\"Foresta di conifere vista dall'alto\"><\/div>\n        <span class=\"date\">19\u201320 feb 2027<\/span>\n        <div class=\"c\"><span class=\"kicker\">Nuoto nel ghiaccio<\/span><h3>Zollhaus Open 2027<\/h3><p>Il campionato tedesco di nuoto nel ghiaccio al Landhotel Altes Zollhaus, Hermsdorf (Germania).<\/p><span class=\"more\">Partecipa \u2192<\/span><\/div>\n      <\/a>\n      <a class=\"ev\" href=\"https:\/\/addicted-to.com\/impatto\/\">\n        <div class=\"img\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/07\/aaron-curcio-addicted-to-nature-planting-768x768.jpg\" srcset=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/07\/aaron-curcio-addicted-to-nature-planting-768x768.jpg 768w, https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/07\/aaron-curcio-addicted-to-nature-planting.jpg 1000w\" sizes=\"auto, (max-width:860px) 100vw, 540px\" width=\"768\" height=\"768\" alt=\"Piantumazione di alberi durante un Nature day di Addicted To Nature\"><\/div>\n        <div class=\"c\"><span class=\"kicker\">Nature days e Cleanup<\/span><h3>Restituire, insieme.<\/h3><p>Dalla piantumazione di nuovo verde alla bonifica dei siti contaminati.<\/p><span class=\"more\">Scopri di pi\u00f9 \u2192<\/span><\/div>\n      <\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"ghiaccio\" id=\"ghiaccio\" data-sound=\"winter\">\n  <div class=\"wrap head\">\n    <div>\n      <span class=\"eyebrow\" style=\"color:#2b7fa8\" data-reveal>Zollhaus Open 2027 \u00b7 Prova tu<\/span>\n      <h2 class=\"split\" style=\"margin-top:18px\">Quanto <em>resisti?<\/em><\/h2>\n    <\/div>\n    <p data-reveal>19\u201320 febbraio 2027 a Hermsdorf, nei Monti Metalliferi: il campionato tedesco di nuoto nel ghiaccio al Landhotel Altes Zollhaus. Tieni premuto il pulsante per restare in acqua e scopri che tipo di nuotatore saresti.<\/p>\n  <\/div>\n  <div class=\"ice-wrap\" id=\"iceWrap\">\n    <canvas id=\"iceCv\" aria-hidden=\"true\"><\/canvas>\n    <div class=\"ice-ui\">\n      <div class=\"row\"><span class=\"temp\">Acqua \u00b7 2 \u00b0C<\/span><div class=\"timer\"><b id=\"iceTime\">0,0<\/b><span>secondi<\/span><\/div><\/div>\n      <p id=\"iceMsg\" aria-live=\"polite\"><\/p>\n      <button class=\"ice-btn\" id=\"iceBtn\" aria-label=\"Tieni premuto per restare in acqua (anche con la barra spaziatrice)\"><span>Tieni premuto<\/span><\/button>\n    <\/div>\n    <div class=\"done\" id=\"iceRes\">\n      <div class=\"card-done\">\n        <span class=\"eyebrow\" style=\"color:#2b7fa8\">Il tuo tempo<\/span>\n        <h3 id=\"iceResT\">0 s<\/h3>\n        <p class=\"rank\"><b id=\"iceRank\"><\/b><\/p>\n        <p id=\"iceRankTxt\"><\/p>\n        <p class=\"best\">Il tuo record: <b id=\"iceBest\">\u2013<\/b><\/p>\n        <div class=\"btns\">\n          <a class=\"btn dark\" href=\"https:\/\/addicted-to.com\/en\/zollhaus-open-2027\/\">Iscriviti ai Zollhaus Open <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/a>\n          <button class=\"btn ghost\" id=\"iceAgain\" style=\"color:var(--forest)\">Riprova<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <p class=\"wrap section-note\">\u00c8 solo un gioco: il nuoto nel ghiaccio vero si impara con gradualit\u00e0, preparazione e sempre con assistenza.<\/p>\n<\/section>\n<section class=\"quiz\" id=\"quiz\" data-sound=\"forest\">\n  <div class=\"wrap qgrid\">\n    <div>\n      <span class=\"eyebrow\" style=\"color:var(--moss)\" data-reveal>Quiz<\/span>\n      <h2 class=\"split\" style=\"margin-top:18px\">Quanto sei <em>Addicted?<\/em><\/h2>\n      <p data-reveal>Cinque domande, nessuna risposta sbagliata. Scopri se sei un Adrenaline, un Freedom o un Nature Addicted \u2013 e quale avventura fa per te.<\/p>\n    <\/div>\n    <div class=\"quiz-card\">\n      <div class=\"qtop\"><span id=\"quizStep\">1 \/ 5<\/span><div class=\"qbar\"><i id=\"quizBar\"><\/i><\/div><\/div>\n      <div id=\"quizBox\" class=\"qbox\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"manifesto\" id=\"manifesto\" data-sound=\"ocean\">\n  <svg class=\"seal\" id=\"seal\" viewBox=\"0 0 200 200\" aria-hidden=\"true\">\n    <defs><path id=\"cp\" d=\"M100 100 m-78 0 a78 78 0 1 1 156 0 a78 78 0 1 1 -156 0\"\/><\/defs>\n    <text><textPath href=\"#cp\" textLength=\"486\" lengthAdjust=\"spacing\">Adrenaline \u00b7 Freedom \u00b7 Nature \u00b7<\/textPath><\/text>\n    <circle cx=\"100\" cy=\"100\" r=\"44\" fill=\"#f6f1e6\"\/>\n    <image href=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/A_circle.svg\" x=\"62\" y=\"64\" width=\"76\" height=\"72\"\/>\n  <\/svg>\n  <div class=\"wrap\">\n    <span class=\"eyebrow\" style=\"color:var(--mint)\">Manifesto<\/span>\n    <p class=\"big\" id=\"bigText\" style=\"margin-top:26px\">Crediamo in uno stile di vita che mette al centro la <em>Natura<\/em>. Non da guardare, ma da vivere, rispettare e custodire.<\/p>\n    <div class=\"row2\">\n      <p>Siamo una community, non un marchio da seguire. Se senti anche tu quel richiamo, sei gi\u00e0 uno di noi.<\/p>\n      <a class=\"btn magnetic\" href=\"https:\/\/addicted-to.com\/manifesto\/\">Leggi il manifesto\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M2 8h12M9 3l5 5-5 5\"\/><\/svg><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"social\">\n  <div class=\"wrap\">\n    <h3>Per tutte le news, seguici anche sui nostri canali social.<\/h3>\n    <div class=\"links\">\n      <a href=\"https:\/\/www.instagram.com\/addicted_to_official\/\" target=\"_blank\" rel=\"noopener\">Instagram \u00b7 @addicted_to_official<\/a>\n      <a href=\"https:\/\/addicted-to.com\/contatti\/\">Scrivici<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<\/main>\n<svg class=\"waves\" id=\"waves\" viewBox=\"0 0 1440 190\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n  <path fill=\"#173a26\"\/><path fill=\"#12301f\"\/><path fill=\"#0a1a11\"\/>\n<\/svg>\n<footer>\n  <div class=\"wrap\">\n    <div class=\"top\">\n      <div>\n        <img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/ATN_marchio_negativo.svg\" width=\"152\" height=\"44\" alt=\"Addicted To Nature\">\n        <p style=\"max-width:36ch\">La community di chi vive, rispetta e custodisce la Natura.<\/p>\n      <\/div>\n      <div><h4>Esplora<\/h4><ul>\n        <li><a href=\"https:\/\/addicted-to.com\/manifesto\/\">Manifesto<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/impatto\/\">Impatto<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/shop-addicted\/\">Shop<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/eventi\/\">Eventi<\/a><\/li><\/ul><\/div>\n      <div><h4>Contatti<\/h4><ul>\n        <li><a href=\"mailto:info@addicted-to.com\">info@addicted-to.com<\/a><\/li>\n        <li><a href=\"https:\/\/addicted-to.com\/contatti\/\">Modulo di contatto<\/a><\/li>\n        <li><a href=\"https:\/\/www.instagram.com\/addicted_to_official\/\" target=\"_blank\" rel=\"noopener\">Instagram<\/a><\/li><\/ul><\/div>\n    <\/div>\n    <div class=\"bottom\">\n      <span>\u00a9 <span id=\"yr\">2026<\/span> Costa Caldura S.r.l. \u00b7 P.IVA IT06497310828<\/span>\n      <span><a href=\"https:\/\/addicted-to.com\/privacy-policy\/\">Privacy &amp; Cookie Policy<\/a><\/span>\n    <\/div>\n  <\/div>\n<\/footer>\n<script type=\"text\/atn-b64\">d2luZG93LkFUTl9ESUNUPXsiU3VvbmkgZGVsbGEgbmF0dXJhIjogWyJTb3VuZHMgb2YgbmF0dXJlIiwgIk5hdHVyZ2Vyw6R1c2NoZSJdLCAiTUFOSUZFU1RPIjogWyJNQU5JRkVTVE8iLCAiTUFOSUZFU1QiXSwgIklNUEFUVE8iOiBbIklNUEFDVCIsICJJTVBBQ1QiXSwgIkVWRU5USSI6IFsiRVZFTlRTIiwgIkVWRU5UUyJdLCAiQ09OVEFUVEkiOiBbIkNPTlRBQ1QiLCAiS09OVEFLVCJdLCAiTWFuaWZlc3RvIjogWyJNYW5pZmVzdG8iLCAiTWFuaWZlc3QiXSwgIkltcGF0dG8iOiBbIkltcGFjdCIsICJJbXBhY3QiXSwgIkV2ZW50aSI6IFsiRXZlbnRzIiwgIkV2ZW50cyJdLCAiQ29udGF0dGkiOiBbIkNvbnRhY3QiLCAiS29udGFrdCJdLCAiQWRkaWN0ZWQgVG8gTmF0dXJlIOKAkyBsYSBjb21tdW5pdHkgZGkgY2hpIHZpdmUsIHJpc3BldHRhIGUgY3VzdG9kaXNjZSBsYSBOYXR1cmEiOiBbIkFkZGljdGVkIFRvIE5hdHVyZSDigJMgdGhlIGNvbW11bml0eSBvZiBwZW9wbGUgd2hvIGxpdmUsIHJlc3BlY3QgYW5kIHByb3RlY3QgTmF0dXJlIiwgIkFkZGljdGVkIFRvIE5hdHVyZSDigJMgZGllIENvbW11bml0eSBmw7xyIGFsbGUsIGRpZSBkaWUgTmF0dXIgbGViZW4sIHJlc3Bla3RpZXJlbiB1bmQgc2Now7x0emVuIl0sICJMYSBjb21tdW5pdHkgZGkgY2hpIHZpdmUsIHJpc3BldHRhIGUgY3VzdG9kaXNjZSBsYSBOYXR1cmEiOiBbIlRoZSBjb21tdW5pdHkgb2YgcGVvcGxlIHdobyBsaXZlLCByZXNwZWN0IGFuZCBwcm90ZWN0IE5hdHVyZSIsICJEaWUgQ29tbXVuaXR5IGbDvHIgYWxsZSwgZGllIGRpZSBOYXR1ciBsZWJlbiwgcmVzcGVrdGllcmVuIHVuZCBzY2jDvHR6ZW4iXSwgIk9jZWFubyDCtyBM4oCZb25kYSI6IFsiT2NlYW4gwrcgVGhlIHdhdmUiLCAiT3plYW4gwrcgRGllIFdlbGxlIl0sICJTY29ycmkiOiBbIlNjcm9sbCIsICJTY3JvbGxlbiJdLCAiQ2FzYSDCtyBsYXZvcm8gwrcgY2FzYSDCtyBsYXZvcm8gwrciOiBbIkhvbWUgwrcgd29yayDCtyBob21lIMK3IHdvcmsgwrciLCAiWnVoYXVzZSDCtyBBcmJlaXQgwrcgWnVoYXVzZSDCtyBBcmJlaXQgwrciXSwgIk9nbmkgZ2lvcm5vIMK3IHBlciBzZW1wcmUgwrcgb2duaSBnaW9ybm8gwrciOiBbIkV2ZXJ5IGRheSDCtyBmb3JldmVyIMK3IGV2ZXJ5IGRheSDCtyIsICJKZWRlbiBUYWcgwrcgZsO8ciBpbW1lciDCtyBqZWRlbiBUYWcgwrciXSwgIlZpdmkgbyA8ZW0+c29wcmF2dml2aT88L2VtPiI6IFsiTGl2aW5nIG9yIGp1c3QgPGVtPnN1cnZpdmluZz88L2VtPiIsICJMZWJzdCBkdSBvZGVyIDxlbT7DvGJlcmxlYnN0IGR1PzwvZW0+Il0sICJDYXNhLCBsYXZvcm8sIGNhc2HigKYgT2duaSBnaW9ybm8sIHBlciBzZW1wcmUuIEUgcXVlc3RhIHNhcmViYmUgdml0YT8iOiBbIkhvbWUsIHdvcmssIGhvbWXigKYgRXZlcnkgZGF5LCBmb3JldmVyLiBBbmQgdGhhdCdzIHN1cHBvc2VkIHRvIGJlIGxpZmU\/IiwgIlp1aGF1c2UsIEFyYmVpdCwgWnVoYXVzZSDigKYgSmVkZW4gVGFnLCBmw7xyIGltbWVyLiBVbmQgZGFzIHNvbGwgTGViZW4gc2Vpbj8iXSwgIkNvbnRpbnVhIGEgc2NvcnJlcmUiOiBbIktlZXAgc2Nyb2xsaW5nIiwgIldlaXRlcnNjcm9sbGVuIl0sICJOby4gUGVyIG5vaSBj4oCZw6ggPGVtPmRpIHBpw7kuPC9lbT4iOiBbIk5vLiBGb3IgdXMsIHRoZXJlJ3MgPGVtPm1vcmUuPC9lbT4iLCAiTmVpbi4gRsO8ciB1bnMgZ2lidCBlcyA8ZW0+bWVoci48L2VtPiJdLCAiTG8gc3RpbGUgZGkgdml0YSBtb2Rlcm5vIHByb3ZhIGEgaW5nYWJiaWFyY2ksIG1hIGlsIG5vc3RybyBjb3JwbyBlIGxhIG5vc3RyYSBhbmltYSB2b2dsaW9ubyBzb2xvIHVuYSBjb3NhOiBOYXR1cmEuIjogWyJNb2Rlcm4gbGlmZSB0cmllcyB0byBjYWdlIHVzIGluLCBidXQgb3VyIGJvZHkgYW5kIHNvdWwgd2FudCBvbmx5IG9uZSB0aGluZzogTmF0dXJlLiIsICJEZXIgbW9kZXJuZSBMZWJlbnNzdGlsIHdpbGwgdW5zIGVpbnNwZXJyZW4sIGFiZXIgS8O2cnBlciB1bmQgU2VlbGUgd29sbGVuIG51ciBlaW5lczogTmF0dXIuIl0sICJEYWxsYSBOYXR1cmEgYWxsYSBOYXR1cmEiOiBbIkZyb20gTmF0dXJlIHRvIE5hdHVyZSIsICJWb24gZGVyIE5hdHVyIHp1ciBOYXR1ciJdLCAiVW4gY2lyY29sbyA8ZW0+dmlydHVvc288L2VtPi4iOiBbIkEgPGVtPnZpcnR1b3VzPC9lbT4gY2lyY2xlLiIsICJFaW4gPGVtPnBvc2l0aXZlcjwvZW0+IEtyZWlzbGF1Zi4iXSwgIsOIIHVuIHJpY2hpYW1vIHByaW1vcmRpYWxlIGNoZSwgc2UgYXNzZWNvbmRhdG8sIGZhIGNyZXNjZXJlIFBlcnNvbmUsIFNvY2lldMOgIGUgTmF0dXJhIHN0ZXNzYS4gw4ggcXVlc3RvIGxvIHNwaXJpdG8gZGkgQWRkaWN0ZWQgVG8gTmF0dXJlLiI6IFsiSXQncyBhIHByaW1hbCBjYWxsIHRoYXQsIHdoZW4gd2UgYW5zd2VyIGl0LCBoZWxwcyBQZW9wbGUsIFNvY2lldHkgYW5kIE5hdHVyZSBpdHNlbGYgZ3Jvdy4gVGhhdCBpcyB0aGUgc3Bpcml0IG9mIEFkZGljdGVkIFRvIE5hdHVyZS4iLCAiRXMgaXN0IGVpbiBVcmluc3Rpbmt0OiBXZXIgaWhtIGZvbGd0LCBsw6Rzc3QgTWVuc2NoZW4sIEdlc2VsbHNjaGFmdCB1bmQgZGllIE5hdHVyIHNlbGJzdCB3YWNoc2VuLiBEYXMgaXN0IGRlciBTcGlyaXQgdm9uIEFkZGljdGVkIFRvIE5hdHVyZS4iXSwgIlBlcnNvbmUiOiBbIlBlb3BsZSIsICJNZW5zY2hlbiJdLCAiQ2hpIHRvcm5hIG5lbGxhIE5hdHVyYSB0b3JuYSBhIHNlbnRpcnNpIHZpdm86IHBpw7kgZW5lcmdpYSwgcGnDuSBjb3JhZ2dpbywgcGnDuSBwcmVzZW56YS4gSWwgY29ycG8gc2kgcmljb3JkYSBkYSBkb3ZlIHZpZW5lLiI6IFsiVGhvc2Ugd2hvIHJldHVybiB0byBOYXR1cmUgZmVlbCBhbGl2ZSBhZ2FpbjogbW9yZSBlbmVyZ3ksIG1vcmUgY291cmFnZSwgbW9yZSBwcmVzZW5jZS4gVGhlIGJvZHkgcmVtZW1iZXJzIHdoZXJlIGl0IGNvbWVzIGZyb20uIiwgIldlciB6dXLDvGNrIGluIGRpZSBOYXR1ciBnZWh0LCBmw7xobHQgc2ljaCB3aWVkZXIgbGViZW5kaWc6IG1laHIgRW5lcmdpZSwgbWVociBNdXQsIG1laHIgUHLDpHNlbnouIERlciBLw7ZycGVyIGVyaW5uZXJ0IHNpY2gsIHdvaGVyIGVyIGtvbW10LiJdLCAiU29jaWV0w6AiOiBbIlNvY2lldHkiLCAiR2VzZWxsc2NoYWZ0Il0sICJQZXJzb25lIHBpw7kgY29uc2FwZXZvbGkgZm9ybWFubyBjb211bml0w6AgcGnDuSBmb3J0aSwgY2hlIHNjZWxnb25vLCBjb25zdW1hbm8gZSB2aXZvbm8gaW4gbW9kbyBkaXZlcnNvLiI6IFsiTW9yZSBtaW5kZnVsIHBlb3BsZSBidWlsZCBzdHJvbmdlciBjb21tdW5pdGllcyB0aGF0IGNob29zZSwgY29uc3VtZSBhbmQgbGl2ZSBkaWZmZXJlbnRseS4iLCAiQmV3dXNzdGVyZSBNZW5zY2hlbiBiaWxkZW4gc3TDpHJrZXJlIEdlbWVpbnNjaGFmdGVuLCBkaWUgYW5kZXJzIHfDpGhsZW4sIGtvbnN1bWllcmVuIHVuZCBsZWJlbi4iXSwgIk5hdHVyYSI6IFsiTmF0dXJlIiwgIk5hdHVyIl0sICJFIHVuYSBzb2NpZXTDoCBjaGUgc2NlZ2xpZSBtZWdsaW8gcmVzdGl0dWlzY2UgYWxsYSBOYXR1cmEgY2nDsiBjaGUgbGUgaGEgcHJlc28uIElsIGNlcmNoaW8gc2kgY2hpdWRlIOKAkyBlIHJpY29taW5jaWEuIjogWyJBbmQgYSBzb2NpZXR5IHRoYXQgbWFrZXMgYmV0dGVyIGNob2ljZXMgZ2l2ZXMgYmFjayB0byBOYXR1cmUgd2hhdCBpdCBoYXMgdGFrZW4uIFRoZSBjaXJjbGUgY2xvc2VzIOKAkyBhbmQgc3RhcnRzIGFnYWluLiIsICJVbmQgZWluZSBHZXNlbGxzY2hhZnQsIGRpZSBiZXNzZXIgd8OkaGx0LCBnaWJ0IGRlciBOYXR1ciB6dXLDvGNrLCB3YXMgc2llIGlociBnZW5vbW1lbiBoYXQuIERlciBLcmVpcyBzY2hsaWXDn3Qgc2ljaCDigJMgdW5kIGJlZ2lubnQgdm9uIHZvcm4uIl0sICJOYXR1cmUgZGF5cyDCtyBQcm92YSB0dSI6IFsiTmF0dXJlIGRheXMgwrcgVHJ5IGl0IHlvdXJzZWxmIiwgIk5hdHVyZSBEYXlzIMK3IFByb2JpZXIgZXMgYXVzIl0sICJQaWFudGEgaWwgdHVvIDxlbT5ib3Njby48L2VtPiI6IFsiUGxhbnQgeW91ciBvd24gPGVtPmZvcmVzdC48L2VtPiIsICJQZmxhbnogZGVpbmVuIGVpZ2VuZW4gPGVtPldhbGQuPC9lbT4iXSwgIkR1cmFudGUgaSBub3N0cmkgTmF0dXJlIGRheXMgcGlhbnRpYW1vIG51b3ZvIHZlcmRlIGRvdmUgY2UgbuKAmcOoIHBpw7kgYmlzb2duby4gUXVpIHB1b2kgaW5pemlhcmUgdHU6IGNsaWNjYSBzdWxsYSBjb2xsaW5hIHBlciBwaWFudGFyZSB1biBzZW1lIGUgZ3VhcmRhIGlsIGJvc2NvIGNyZXNjZXJlIOKAkyBlIHRvcm5hcmUgYSB2aXZlcmUuIjogWyJPbiBvdXIgTmF0dXJlIGRheXMgd2UgcGxhbnQgbmV3IGdyZWVuZXJ5IHdoZXJlIGl0J3MgbmVlZGVkIG1vc3QuIEhlcmUgeW91IGNhbiBtYWtlIGEgc3RhcnQ6IGNsaWNrIG9uIHRoZSBoaWxsIHRvIHBsYW50IGEgc2VlZCBhbmQgd2F0Y2ggdGhlIGZvcmVzdCBncm93IOKAkyBhbmQgY29tZSBiYWNrIHRvIGxpZmUuIiwgIkFuIHVuc2VyZW4gTmF0dXJlIERheXMgcGZsYW56ZW4gd2lyIG5ldWVzIEdyw7xuLCB3byBlcyBhbSBkcmluZ2VuZHN0ZW4gZ2VicmF1Y2h0IHdpcmQuIEhpZXIga2FubnN0IGR1IGFuZmFuZ2VuOiBLbGljayBhdWYgZGVuIEjDvGdlbCwgdW0gZWluZW4gU2FtZW4genUgcGZsYW56ZW4sIHVuZCBzaWVoIHp1LCB3aWUgZGVyIFdhbGQgd8OkY2hzdCDigJMgdW5kIHdpZWRlciBsZWJlbmRpZyB3aXJkLiJdLCAiYWxiZXJpIHBpYW50YXRpIjogWyJ0cmVlcyBwbGFudGVkIiwgIkLDpHVtZSBnZXBmbGFuenQiXSwgIuKJiCB7ezB9fSBrZyBkaSBDT+KCgiBhbGzigJlhbm5vLCBkYSBncmFuZGkqIjogWyLiiYgge3swfX0ga2cgb2YgQ0\/igoIgcGVyIHllYXIsIG9uY2UgZ3Jvd24qIiwgIuKJiCB7ezB9fSBrZyBDT+KCgiBwcm8gSmFociwgd2VubiBhdXNnZXdhY2hzZW4qIl0sICJ7ezB9fUNsaWNjYSBzdWxsYSBjb2xsaW5hIHBlciBwaWFudGFyZSI6IFsie3swfX1DbGljayBvbiB0aGUgaGlsbCB0byBwbGFudCIsICJ7ezB9fUtsaWNrIGF1ZiBkZW4gSMO8Z2VsLCB1bSB6dSBwZmxhbnplbiJdLCAiSWwgYm9zY28gw6ggbmF0byI6IFsiQSBmb3Jlc3QgaXMgYm9ybiIsICJFaW4gV2FsZCBpc3QgZW50c3RhbmRlbiJdLCAiRWNjbyBjb3NhIHB1w7IgZmFyZSA8ZW0+dW5hIHBlcnNvbmEuPC9lbT4iOiBbIlRoYXQncyB3aGF0IDxlbT5vbmUgcGVyc29uPC9lbT4gY2FuIGRvLiIsICJEYXMga2FubiA8ZW0+ZWluIGVpbnppZ2VyIE1lbnNjaDwvZW0+IGJld2lya2VuLiJdLCAiT3JhIGltbWFnaW5hIHVuYSBnaW9ybmF0YSBpbnRlcmEgY29uIHR1dHRhIGxhIGNvbW11bml0eSwgcGFsZSBpbiBtYW5vIGUgdGVycmEgc290dG8gbGUgdW5naGllLiBRdWVzdG8gw6ggdW4gTmF0dXJlIGRheSBkaSBBZGRpY3RlZCBUbyBOYXR1cmUuIjogWyJOb3cgaW1hZ2luZSBhIHdob2xlIGRheSB3aXRoIHRoZSBlbnRpcmUgY29tbXVuaXR5LCBzaG92ZWxzIGluIGhhbmQgYW5kIHNvaWwgdW5kZXIgeW91ciBuYWlscy4gVGhhdCdzIGFuIEFkZGljdGVkIFRvIE5hdHVyZSBOYXR1cmUgZGF5LiIsICJTdGVsbCBkaXIgamV0enQgZWluZW4gZ2FuemVuIFRhZyBtaXQgZGVyIGdhbnplbiBDb21tdW5pdHkgdm9yLCBTY2hhdWZlbCBpbiBkZXIgSGFuZCB1bmQgRXJkZSB1bnRlciBkZW4gTsOkZ2Vsbi4gRGFzIGlzdCBlaW4gTmF0dXJlIERheSB2b24gQWRkaWN0ZWQgVG8gTmF0dXJlLiJdLCAiUGFydGVjaXBhIGEgdW4gTmF0dXJlIGRheSB7ezB9fSI6IFsiSm9pbiBhIE5hdHVyZSBkYXkge3swfX0iLCAiTWFjaCBiZWkgZWluZW0gTmF0dXJlIERheSBtaXQge3swfX0iXSwgIlJpY29taW5jaWEiOiBbIlN0YXJ0IGFnYWluIiwgIk5ldSBzdGFydGVuIl0sICIqIFN0aW1hIGluZGljYXRpdmE6IHVuIGFsYmVybyBhZHVsdG8gYXNzb3JiZSBpbiBtZWRpYSBjaXJjYSAyMiBrZyBkaSBDT+KCgiBhbGzigJlhbm5vLCBhIHNlY29uZGEgZGVsbGEgc3BlY2llIGUgZGVsIGNsaW1hLiI6IFsiKiBSb3VnaCBlc3RpbWF0ZTogYSBtYXR1cmUgdHJlZSBhYnNvcmJzIGFib3V0IDIyIGtnIG9mIENP4oKCIHBlciB5ZWFyIG9uIGF2ZXJhZ2UsIGRlcGVuZGluZyBvbiBzcGVjaWVzIGFuZCBjbGltYXRlLiIsICIqIEdyb2JlIFNjaMOkdHp1bmc6IEVpbiBhdXNnZXdhY2hzZW5lciBCYXVtIG5pbW10IGltIFNjaG5pdHQgZXR3YSAyMiBrZyBDT+KCgiBwcm8gSmFociBhdWYsIGplIG5hY2ggQXJ0IHVuZCBLbGltYS4iXSwgIklsIG5vc3RybyBpbXBhdHRvIjogWyJPdXIgaW1wYWN0IiwgIlVuc2VyIEltcGFjdCJdLCAiR2xpIEFkZGljdGVkIG5vbiB7ezB9fXt7MX19IjogWyJBZGRpY3RlZCB7ezB9fXt7MX19IiwgIkFkZGljdGVkIHt7MH19e3sxfX0iXSwgImRpY29ubyI6IFsidGFsayIsICJyZWRlbiJdLCAiZmFubm8uIjogWyJhY3QuIiwgImhhbmRlbG4uIl0sICJDb25vc2NlbnphIGUgY29uc2FwZXZvbGV6emEgc29ubyBzZW1wcmUgaW1wb3J0YW50aSwgbWEgbGUgcGFyb2xlIG5vbiBiYXN0YW5vLiBOb2kgQWRkaWN0ZWQgbm9uIGNpIGZlcm1pYW1vIGFsbGEgcmV0b3JpY2E6IHBlciBhdmVyZSB1biB2ZXJvIGltcGF0dG8gYW1iaWVudGFsZSwgbm9pIEFkZGljdGVk4oCmIjogWyJLbm93bGVkZ2UgYW5kIGF3YXJlbmVzcyBhbHdheXMgbWF0dGVyLCBidXQgd29yZHMgYXJlbid0IGVub3VnaC4gV2UgQWRkaWN0ZWQgZG9uJ3Qgc3RvcCBhdCByaGV0b3JpYy4gVG8gbWFrZSBhIHJlYWwgZW52aXJvbm1lbnRhbCBpbXBhY3QsIHRoaXMgaXMgd2hhdCB3ZSBkbzoiLCAiV2lzc2VuIHVuZCBCZXd1c3N0c2VpbiBzaW5kIGltbWVyIHdpY2h0aWcsIGFiZXIgV29ydGUgcmVpY2hlbiBuaWNodC4gV2lyIEFkZGljdGVkIGJsZWliZW4gbmljaHQgYmVpIGRlciBSaGV0b3Jpay4gRsO8ciBlY2h0ZW4gSW1wYWN0IGF1ZiBkaWUgVW13ZWx0IGhlacOfdCBkYXMgYmVpIHVuczoiXSwgInBhZXNpIGUgdGVycml0b3JpIjogWyJjb3VudHJpZXMgYW5kIHRlcnJpdG9yaWVzIiwgIkzDpG5kZXIgdW5kIEdlYmlldGUiXSwgIkNpIGFsbGFjY2lhbW8gZ2xpIHNjYXJwb25pIjogWyJXZSBsYWNlIHVwIG91ciBib290cyIsICJXaXIgc2NobsO8cmVuIGRpZSBXYW5kZXJzY2h1aGUiXSwgIlZpdmlhbW8gYXBwaWVubyB0dXR0byBxdWVsbG8gY2hlIGxhIE5hdHVyYSBjaSBvZmZyZS4iOiBbIldlIGxpdmUgZXZlcnl0aGluZyBOYXR1cmUgaGFzIHRvIG9mZmVyIHRvIHRoZSBmdWxsZXN0LiIsICJXaXIgZXJsZWJlbiBhbGxlcywgd2FzIGRpZSBOYXR1ciB1bnMgYmlldGV0LCBtaXQgdm9sbGVyIEtyYWZ0LiJdLCAiR3VhcmRhIGlsIGdsb2JvIOKGkiI6IFsiU2VlIHRoZSBnbG9iZSDihpIiLCAiWnVtIEdsb2J1cyDihpIiXSwgIkNpIGluZmlsaWFtbyBpIGd1YW50aSI6IFsiV2UgcHV0IG9uIG91ciBnbG92ZXMiLCAiV2lyIHppZWhlbiBkaWUgSGFuZHNjaHVoZSBhbiJdLCAiUmlwdWxpYW1vIGRvdmUgbGUgcGVyc29uZSBoYW5ubyBsYXNjaWF0byDigJx0cmFjY2XigJ0sIGNvbWUgbmVsIG5vc3RybyBjbGVhbnVwIGRpIHVuYSBncm90dGEgYSBDZWZhbMO5LiI6IFsiV2UgY2xlYW4gdXAgd2hlcmUgcGVvcGxlIGhhdmUgbGVmdCDigJx0cmFjZXPigJ0sIGxpa2UgaW4gb3VyIGNsZWFudXAgb2YgYSBjYXZlIGluIENlZmFsw7kuIiwgIldpciByw6R1bWVuIGF1Ziwgd28gTWVuc2NoZW4g4oCeU3B1cmVu4oCcIGhpbnRlcmxhc3NlbiBoYWJlbiDigJMgd2llIGJlaSB1bnNlcmVtIENsZWFudXAgZWluZXIgSMO2aGxlIGluIENlZmFsw7kuIl0sICJJbCBjbGVhbnVwIGRlbGxhIGdyb3R0YSDihpIiOiBbIlRoZSBjYXZlIGNsZWFudXAg4oaSIiwgIkRhcyBIw7ZobGVuLUNsZWFudXAg4oaSIl0sICJhbGJlcmkgcGlhbnRhdGkgaW4gU2ljaWxpYSI6IFsidHJlZXMgcGxhbnRlZCBpbiBTaWNpbHkiLCAiQsOkdW1lIGluIFNpemlsaWVuIGdlcGZsYW56dCJdLCAiQ2kgc3BvcmNoaWFtbyBsZSB1bmdoaWUgZGkgdGVycmEiOiBbIldlIGdldCBzb2lsIHVuZGVyIG91ciBuYWlscyIsICJXaXIgYmVrb21tZW4gRXJkZSB1bnRlciBkaWUgTsOkZ2VsIl0sICJSaXBvcG9saWFtbyBkaSBhbGJlcmkgem9uZSBkZXNlcnRpY2hlIG8gZGVmb3Jlc3RhdGUuIjogWyJXZSBicmluZyB0cmVlcyBiYWNrIHRvIGJhcnJlbiBvciBkZWZvcmVzdGVkIGxhbmQuIiwgIldpciBicmluZ2VuIELDpHVtZSB6dXLDvGNrIGF1ZiBrYWhsZSBvZGVyIGFiZ2Vob2x6dGUgRmzDpGNoZW4uIl0sICJDb21lIGxpIGFiYmlhbW8gcGlhbnRhdGkg4oaSIjogWyJIb3cgd2UgcGxhbnRlZCB0aGVtIOKGkiIsICJTbyBoYWJlbiB3aXIgc2llIGdlcGZsYW56dCDihpIiXSwgIlNvc3RlbmlhbW8gZ2xpIGFydGlnaWFuaSI6IFsiV2Ugc3VwcG9ydCBhcnRpc2FucyIsICJXaXIgdW50ZXJzdMO8dHplbiBIYW5kd2Vya2VyIl0sICJTY2VnbGlhbW8gZSBncmF0aWZpY2hpYW1vIGxlIHBpY2NvbGUgaW1wcmVzZSBsb2NhbGksIGNoZSByZWFsaXp6YW5vIGkgcHJvZG90dGkgc29zdGVuaWJpbGkgZGVsIG5vc3RybyBzaG9wLiI6IFsiV2UgY2hvb3NlIGFuZCByZXdhcmQgc21hbGwgbG9jYWwgYnVzaW5lc3NlcyB0aGF0IG1ha2UgdGhlIHN1c3RhaW5hYmxlIHByb2R1Y3RzIGluIG91ciBzaG9wLiIsICJXaXIgd8OkaGxlbiB1bmQgZsO2cmRlcm4ga2xlaW5lIGxva2FsZSBCZXRyaWViZSwgZGllIGRpZSBuYWNoaGFsdGlnZW4gUHJvZHVrdGUgaW4gdW5zZXJlbSBTaG9wIGhlcnN0ZWxsZW4uIl0sICJWYWkgYWxsbyBzaG9wIOKGkiI6IFsiR28gdG8gdGhlIHNob3Ag4oaSIiwgIlp1bSBTaG9wIOKGkiJdLCAiU3VwcG9ydGlhbW8gZ2xpIEF0bGV0aSBBZGRpY3RlZCI6IFsiV2UgYmFjayBBZGRpY3RlZCBhdGhsZXRlcyIsICJXaXIgZsO2cmRlcm4gQWRkaWN0ZWQtQXRobGV0ZW4iXSwgIlNwb25zb3JpenppYW1vIHNvbG8gZ2xpIHNwb3J0aXZpIGNoZSBjb25kaXZpZG9ubyBpIG5vc3RyaSB2YWxvcmkuIjogWyJXZSBvbmx5IHNwb25zb3IgYXRobGV0ZXMgd2hvIHNoYXJlIG91ciB2YWx1ZXMuIiwgIldpciBzcG9uc2VybiBudXIgU3BvcnRsZXIsIGRpZSB1bnNlcmUgV2VydGUgdGVpbGVuLiJdLCAiU2NvcHJpIGRpIHBpw7kg4oaSIjogWyJMZWFybiBtb3JlIOKGkiIsICJNZWhyIGVyZmFocmVuIOKGkiJdLCAiTGUgbm9zdHJlIGF2dmVudHVyZSBhIGltcGF0dG8iOiBbIk91ciBpbXBhY3QgYWR2ZW50dXJlcyIsICJVbnNlcmUgSW1wYWN0LUFiZW50ZXVlciJdLCAie3swfX1SZXN0YXVyYXJlIHVuIHZlY2NoaW8gY2F0YW1hcmFubyBlIHJpcG9ydGFybG8gaW4gdml0YSI6IFsie3swfX1SZXN0b3JpbmcgYW4gb2xkIGNhdGFtYXJhbiBhbmQgYnJpbmdpbmcgaXQgYmFjayB0byBsaWZlIiwgInt7MH19RWluZW4gYWx0ZW4gS2F0YW1hcmFuIHJlc3RhdXJpZXJlbiB1bmQgd2llZGVyIHp1bSBMZWJlbiBlcndlY2tlbiJdLCAiUmljZXJjYSI6IFsiUmVzZWFyY2giLCAiUmVjaGVyY2hlIl0sICJ7ezB9fVJpY29ubmV0dGVyc2kgYWxsYSBuYXR1cmEgY29uIGlsIE1ldG9kbyBXaW0gSG9mIjogWyJ7ezB9fVJlY29ubmVjdGluZyB3aXRoIG5hdHVyZSB0aHJvdWdoIHRoZSBXaW0gSG9mIE1ldGhvZCIsICJ7ezB9fU1pdCBkZXIgV2ltLUhvZi1NZXRob2RlIHp1csO8Y2sgenVyIE5hdHVyIl0sICJ7ezB9fVJpY2ljbGFyZSBwZXJzaWFuZSBpbiBvcnRpIHNvbGxldmF0aSI6IFsie3swfX1VcGN5Y2xpbmcgb2xkIHNodXR0ZXJzIGludG8gcmFpc2VkIGdhcmRlbiBiZWRzIiwgInt7MH19QWx0ZSBGZW5zdGVybMOkZGVuIHp1IEhvY2hiZWV0ZW4gcmVjeWNlbG4iXSwgIlNjb3ByaSBpbCBub3N0cm8gaW1wYXR0byB7ezB9fSI6IFsiRGlzY292ZXIgb3VyIGltcGFjdCB7ezB9fSIsICJVbnNlcmVuIEltcGFjdCBlbnRkZWNrZW4ge3swfX0iXSwgIlJhY2NvbHRhIHJpZml1dGkgwrcgUHJvdmEgdHUiOiBbIkxpdHRlciBwaWNrIMK3IFRyeSBpdCB5b3Vyc2VsZiIsICJNw7xsbCBzYW1tZWxuIMK3IFByb2JpZXIgZXMgYXVzIl0sICJQdWxpc2NpIGxhIDxlbT5zcGlhZ2dpYS48L2VtPiI6IFsiQ2xlYW4gdGhlIDxlbT5iZWFjaC48L2VtPiIsICJSw6R1bSBkZW4gPGVtPlN0cmFuZDwvZW0+IGF1Zi4iXSwgIklsIG1hcmUgY2kgcmVzdGl0dWlzY2Ugb2duaSBnaW9ybm8gcXVlbGxvIGNoZSBnbGkgYnV0dGlhbW8gZGVudHJvLiBQcmVuZGkgbGEgcGxhc3RpY2EgY29uIGlsIG1vdXNlIGUgbWV0dGlsYSBuZWwgY2VzdGlubyDigJMgbyBsYW5jaWFsYSBkZW50cm8uIMOIIHF1ZWxsbyBjaGUgZmFjY2lhbW8gbmVpIG5vc3RyaSBDbGVhbnVwLCBzb2xvIGNvbiBsZSBtYW5pIHZlcmUuIjogWyJFdmVyeSBkYXkgdGhlIHNlYSBnaXZlcyBiYWNrIHdoYXQgd2UgdGhyb3cgaW50byBpdC4gR3JhYiB0aGUgcGxhc3RpYyB3aXRoIHlvdXIgbW91c2UgYW5kIGRyb3AgaXQgaW4gdGhlIGJhc2tldCDigJMgb3IgdGhyb3cgaXQgaW4uIFRoYXQncyB3aGF0IHdlIGRvIGF0IG91ciBDbGVhbnVwcywganVzdCB3aXRoIHJlYWwgaGFuZHMuIiwgIkRhcyBNZWVyIGdpYnQgdW5zIGplZGVuIFRhZyB6dXLDvGNrLCB3YXMgd2lyIGhpbmVpbndlcmZlbi4gU2NobmFwcCBkaXIgZGFzIFBsYXN0aWsgbWl0IGRlciBNYXVzIHVuZCBsZWcgZXMgaW4gZGVuIEtvcmIg4oCTIG9kZXIgd2lyZiBlcyBoaW5laW4uIEdlbmF1IGRhcyBtYWNoZW4gd2lyIGJlaSB1bnNlcmVuIENsZWFudXBzLCBudXIgbWl0IGVjaHRlbiBIw6RuZGVuLiJdLCAicmlmaXV0aSByYWNjb2x0aSI6IFsiaXRlbXMgY29sbGVjdGVkIiwgIlRlaWxlIGdlc2FtbWVsdCJdLCAie3swfX1UcmFzY2luYSBsYSBwbGFzdGljYSBuZWwgY2VzdGlubyI6IFsie3swfX1EcmFnIHRoZSBwbGFzdGljIGludG8gdGhlIGJhc2tldCIsICJ7ezB9fVppZWggZGFzIFBsYXN0aWsgaW4gZGVuIEtvcmIiXSwgIlNwaWFnZ2lhIHB1bGl0YSI6IFsiQmVhY2ggY2xlYW5lZCIsICJTdHJhbmQgc2F1YmVyIl0sICJHcmF6aWUsIDxlbT5BZGRpY3RlZCE8L2VtPiI6IFsiVGhhbmsgeW91LCA8ZW0+QWRkaWN0ZWQhPC9lbT4iLCAiRGFua2UsIDxlbT5BZGRpY3RlZCE8L2VtPiJdLCAiSGFpIHRvbHRvIHt7MH19IGRpIHBsYXN0aWNhIGRhbGxhIHNwaWFnZ2lhLiBPcmEgaW1tYWdpbmEgZGkgZmFybG8gaW4gNTAsIHBlciB1buKAmWludGVyYSBtYXR0aW5hOiBxdWVzdG8gw6ggdW4gQ2xlYW51cCBkaSBBZGRpY3RlZCBUbyBOYXR1cmUuIjogWyJZb3UgcmVtb3ZlZCB7ezB9fSBvZiBwbGFzdGljIGZyb20gdGhlIGJlYWNoLiBOb3cgaW1hZ2luZSBkb2luZyBpdCB3aXRoIDUwIHBlb3BsZSBmb3IgYSB3aG9sZSBtb3JuaW5nOiB0aGF0J3MgYW4gQWRkaWN0ZWQgVG8gTmF0dXJlIENsZWFudXAuIiwgIkR1IGhhc3Qge3swfX0gUGxhc3RpayB2b20gU3RyYW5kIGdlaG9sdC4gU3RlbGwgZGlyIHZvciwgaWhyIHNlaWQgenUgZsO8bmZ6aWcgdW5kIG1hY2h0IGRhcyBlaW5lbiBnYW56ZW4gVm9ybWl0dGFnIGxhbmc6IERhcyBpc3QgZWluIENsZWFudXAgdm9uIEFkZGljdGVkIFRvIE5hdHVyZS4iXSwgIlBhcnRlY2lwYSBhIHVuIENsZWFudXAge3swfX0iOiBbIkpvaW4gYSBDbGVhbnVwIHt7MH19IiwgIk1hY2ggYmVpIGVpbmVtIENsZWFudXAgbWl0IHt7MH19Il0sICJTb3N0ZW5pYmlsaXTDoCwgcXVhbGl0w6AsIDxlbT5lc3BlcmllbnplLjwvZW0+IjogWyJTdXN0YWluYWJpbGl0eSwgcXVhbGl0eSwgPGVtPmV4cGVyaWVuY2VzLjwvZW0+IiwgIk5hY2hoYWx0aWdrZWl0LCBRdWFsaXTDpHQsIDxlbT5FcmxlYm5pc3NlLjwvZW0+Il0sICJM4oCZQWRkaWN0ZWQgbGlmZXN0eWxlIHNpIG1hbmlmZXN0YSBhbmNoZSBhdHRyYXZlcnNvIGxlIG5vc3RyZSBjcmVhemlvbmkgYXJ0aWdpYW5hbGk6IHByb2RvdHRpIHNvc3RlbmliaWxpIHJlYWxpenphdGkgZGEgcGljY29saSBhcnRpZ2lhbmksIG5lbCByaXNwZXR0byBkZWxsYSBOYXR1cmEuIjogWyJUaGUgQWRkaWN0ZWQgbGlmZXN0eWxlIGFsc28gc2hvd3MgaW4gb3VyIGhhbmRtYWRlIGNyZWF0aW9uczogc3VzdGFpbmFibGUgcHJvZHVjdHMgbWFkZSBieSBzbWFsbCBhcnRpc2Fucywgd2l0aCByZXNwZWN0IGZvciBOYXR1cmUuIiwgIkRlciBBZGRpY3RlZC1MaWZlc3R5bGUgemVpZ3Qgc2ljaCBhdWNoIGluIHVuc2VyZW4gaGFuZGdlbWFjaHRlbiBQcm9kdWt0ZW46IG5hY2hoYWx0aWcsIHZvbiBrbGVpbmVuIEhhbmR3ZXJrc2JldHJpZWJlbiBoZXJnZXN0ZWxsdCwgbWl0IFJlc3Bla3Qgdm9yIGRlciBOYXR1ci4iXSwgIkFiYmlnbGlhbWVudG8iOiBbIkNsb3RoaW5nIiwgIkJla2xlaWR1bmciXSwgIkluZG9zc2EgbGEgdHVhIDxlbT5kaXBlbmRlbnphPC9lbT4gcGVyIGxhIE5hdHVyYS4iOiBbIldlYXIgeW91ciA8ZW0+YWRkaWN0aW9uPC9lbT4gdG8gTmF0dXJlLiIsICJUcmFnIGRlaW5lIDxlbT5TdWNodDwvZW0+IG5hY2ggTmF0dXIuIl0sICJDYXBpIGluIG1hdGVyaWFsaSBzb3N0ZW5pYmlsaSwgcGVuc2F0aSBwZXIgbOKAmWF2dmVudHVyYSBlIHBlciBvZ25pIGdpb3Juby4iOiBbIkdhcm1lbnRzIG1hZGUgZnJvbSBzdXN0YWluYWJsZSBtYXRlcmlhbHMsIGRlc2lnbmVkIGZvciBhZHZlbnR1cmUgYW5kIGV2ZXJ5ZGF5IGxpZmUuIiwgIktsZWlkdW5nIGF1cyBuYWNoaGFsdGlnZW4gTWF0ZXJpYWxpZW4sIGdlbWFjaHQgZsO8ciBBYmVudGV1ZXIgdW5kIEFsbHRhZy4iXSwgIlNjb3ByaSBsYSBjb2xsZXppb25lIHt7MH19IjogWyJEaXNjb3ZlciB0aGUgY29sbGVjdGlvbiB7ezB9fSIsICJLb2xsZWt0aW9uIGVudGRlY2tlbiB7ezB9fSJdLCAiQWNjZXNzb3JpIjogWyJBY2Nlc3NvcmllcyIsICJBY2Nlc3NvaXJlcyJdLCAiU2FkaHUgQm9hcmQg4oCTIFRhdm9sYSBjb24gQ2hpb2RpIjogWyJTYWRodSBCb2FyZCDigJMgTmFpbCBCb2FyZCIsICJTYWRodSBCb2FyZCDigJMgTmFnZWxicmV0dCJdLCAiQ29zbWV0aWNpIjogWyJDb3NtZXRpY3MiLCAiS29zbWV0aWsiXSwgIlNhcG9uZSBjb3Ntb3BvbGl0YSDigJMgMTAwIGciOiBbIkNvc21vcG9saXRhbiBzb2FwIOKAkyAxMDAgZyIsICJDb3Ntb3BvbGl0YW4tU2VpZmUg4oCTIDEwMCBnIl0sICJDaWJvIjogWyJGb29kIiwgIkxlYmVuc21pdHRlbCJdLCAiTWllbGUgZGkgZXVjYWxpcHRvIGRlbGzigJlFdG5hIOKAkyAyNTAgZyI6IFsiRXRuYSBldWNhbHlwdHVzIGhvbmV5IOKAkyAyNTAgZyIsICJFdWthbHlwdHVzaG9uaWcgdm9tIMOEdG5hIOKAkyAyNTAgZyJdLCAiUGlhbnRlIGUgU2VtaSI6IFsiUGxhbnRzICYgU2VlZHMiLCAiUGZsYW56ZW4gJiBTYW1lbiJdLCAiTmF0dXJlQ3ViZSDigJMgS2l0IHBlciBjb2x0aXZhcmUgaWwgZmlvcmUgZGkgY2lvY2NvbGF0byI6IFsiTmF0dXJlQ3ViZSDigJMgR3Jvdy15b3VyLW93biBjaG9jb2xhdGUgZmxvd2VyIGtpdCIsICJOYXR1cmVDdWJlIOKAkyBBbnp1Y2h0c2V0IGbDvHIgZGllIFNjaG9rb2xhZGVuYmx1bWUiXSwgIlR1dHRvIGxvIHNob3AiOiBbIlRoZSB3aG9sZSBzaG9wIiwgIkRlciBnYW56ZSBTaG9wIl0sICJPZ25pIGFjcXVpc3RvIDxlbT5yZXN0aXR1aXNjZTwvZW0+IHF1YWxjb3NhIGFsbGEgTmF0dXJhLiI6IFsiRXZlcnkgcHVyY2hhc2UgPGVtPmdpdmVzPC9lbT4gc29tZXRoaW5nIGJhY2sgdG8gTmF0dXJlLiIsICJKZWRlciBLYXVmIDxlbT5naWJ0PC9lbT4gZGVyIE5hdHVyIGV0d2FzIHp1csO8Y2suIl0sICJWYWkgYWxsbyBzaG9wIHt7MH19IjogWyJHbyB0byB0aGUgc2hvcCB7ezB9fSIsICJadW0gU2hvcCB7ezB9fSJdLCAiRG92ZSBzaWFtbyBzdGF0aSI6IFsiV2hlcmUgd2UndmUgYmVlbiIsICJXbyB3aXIgc2Nob24gd2FyZW4iXSwgIklsIG1vbmRvIMOoIGxhIG5vc3RyYSA8ZW0+cGFsZXN0cmEuPC9lbT4iOiBbIlRoZSB3b3JsZCBpcyBvdXIgPGVtPnBsYXlncm91bmQuPC9lbT4iLCAiRGllIFdlbHQgaXN0IHVuc2VyIDxlbT5UcmFpbmluZ3NwbGF0ei48L2VtPiJdLCAiRGFsbGEgbm9zdHJhIGNhc2EgYmFzZSBhIENlZmFsw7kgZmlubyBhIFRvbmdhOiBpbiBvZ251bm8gZGkgcXVlc3RpIHBvc3RpIGFiYmlhbW8gdmlzc3V0byBsYSBOYXR1cmEgaW4gcHJpbWEgcGVyc29uYS4gR2lyYSBpbCBnbG9ibywgdG9jY2EgdW4gcGFlc2UgZSBzZWd1aSBsYSByb3R0YS4iOiBbIkZyb20gb3VyIGhvbWUgYmFzZSBpbiBDZWZhbMO5IGFsbCB0aGUgd2F5IHRvIFRvbmdhOiBpbiBldmVyeSBvbmUgb2YgdGhlc2UgcGxhY2VzIHdlJ3ZlIGV4cGVyaWVuY2VkIE5hdHVyZSBmaXJzdC1oYW5kLiBTcGluIHRoZSBnbG9iZSwgdGFwIGEgY291bnRyeSBhbmQgZm9sbG93IHRoZSByb3V0ZS4iLCAiVm9uIHVuc2VyZW0gWnVoYXVzZSBpbiBDZWZhbMO5IGJpcyBuYWNoIFRvbmdhOiBBbiBqZWRlbSBkaWVzZXIgT3J0ZSBoYWJlbiB3aXIgZGllIE5hdHVyIGhhdXRuYWggZXJsZWJ0LiBEcmVoIGRlbiBHbG9idXMsIHRpcHBlIGF1ZiBlaW4gTGFuZCB1bmQgZm9sZ2UgZGVyIFJvdXRlLiJdLCAiY29udGluZW50aSI6IFsiY29udGluZW50cyIsICJLb250aW5lbnRlIl0sICJ7ezB9fVBhZXNpIHZpc2l0YXRpIjogWyJ7ezB9fUNvdW50cmllcyB2aXNpdGVkIiwgInt7MH19QmVzdWNodGUgTMOkbmRlciJdLCAie3swfX1DYXNhIGJhc2U6IENlZmFsw7kiOiBbInt7MH19SG9tZSBiYXNlOiBDZWZhbMO5IiwgInt7MH19WnVoYXVzZTogQ2VmYWzDuSJdLCAiSWwgZ2xvYm8gc2kgc3RhIGNhcmljYW5kb+KApiI6IFsiTG9hZGluZyB0aGUgZ2xvYmXigKYiLCAiRGVyIEdsb2J1cyB3aXJkIGdlbGFkZW4g4oCmIl0sICJWdW9pIHVuaXJ0aSA8ZW0+YSBub2k\/PC9lbT4iOiBbIldhbnQgdG8gPGVtPmpvaW4gdXM\/PC9lbT4iLCAiV2lsbHN0IGR1IDxlbT5kYWJlaSBzZWluPzwvZW0+Il0sICJOb2kgQWRkaWN0ZWQgZ2lyaWFtbyBpbCBtb25kbyBwZXIgcGFydGVjaXBhcmUgYWQgYXZ2ZW50dXJlIGFsIGNhcmRpb3BhbG1hIGUgYWQgZXZlbnRpIGxlZ2F0aSBhbGxhIHNvc3RlbmliaWxpdMOgLiBRdWFsY2hlIGVzZW1waW8\/IjogWyJXZSBBZGRpY3RlZCB0cmF2ZWwgdGhlIHdvcmxkIGZvciBoZWFydC1wb3VuZGluZyBhZHZlbnR1cmVzIGFuZCBzdXN0YWluYWJpbGl0eSBldmVudHMuIEEgZmV3IGV4YW1wbGVzPyIsICJXaXIgQWRkaWN0ZWQgcmVpc2VuIHVtIGRpZSBXZWx0IOKAkyBmw7xyIEFiZW50ZXVlciBtaXQgSGVyemtsb3BmZW4gdW5kIEV2ZW50cyBydW5kIHVtIE5hY2hoYWx0aWdrZWl0LiBFaW4gcGFhciBCZWlzcGllbGU\/Il0sICJBdnZlbnR1cmUiOiBbIkFkdmVudHVyZXMiLCAiQWJlbnRldWVyIl0sICJJbiBnaXJvIHBlciBpbCBtb25kbywgY29sIGN1b3JlIGluIGdvbGEuIjogWyJBcm91bmQgdGhlIHdvcmxkLCBoZWFydHMgcmFjaW5nLiIsICJVbSBkaWUgZ2FuemUgV2VsdCwgbWl0IEhlcnprbG9wZmVuLiJdLCAiRXNwZXJpZW56ZSBwYXp6ZXNjaGUgZSBtb3p6YWZpYXRvOiBvbmRlLCB2ZXR0ZSwgZ2hpYWNjaW8gZSBjaWVsaSBhcGVydGkuIjogWyJXaWxkLCBicmVhdGh0YWtpbmcgZXhwZXJpZW5jZXM6IHdhdmVzLCBwZWFrcywgaWNlIGFuZCBvcGVuIHNraWVzLiIsICJWZXJyw7xja3RlLCBhdGVtYmVyYXViZW5kZSBFcmxlYm5pc3NlOiBXZWxsZW4sIEdpcGZlbCwgRWlzIHVuZCB3ZWl0ZXIgSGltbWVsLiJdLCAiMTnigJMyMCBmZWIgMjAyNyI6IFsiMTnigJMyMCBGZWIgMjAyNyIsICIxOS7igJMyMC4gRmViLiAyMDI3Il0sICJOdW90byBuZWwgZ2hpYWNjaW8iOiBbIkljZSBzd2ltbWluZyIsICJFaXNzY2h3aW1tZW4iXSwgIklsIGNhbXBpb25hdG8gdGVkZXNjbyBkaSBudW90byBuZWwgZ2hpYWNjaW8gYWwgTGFuZGhvdGVsIEFsdGVzIFpvbGxoYXVzLCBIZXJtc2RvcmYgKEdlcm1hbmlhKS4iOiBbIlRoZSBHZXJtYW4gSWNlIFN3aW1taW5nIENoYW1waW9uc2hpcHMgYXQgTGFuZGhvdGVsIEFsdGVzIFpvbGxoYXVzLCBIZXJtc2RvcmYgKEdlcm1hbnkpLiIsICJEaWUgRGV1dHNjaGVuIE1laXN0ZXJzY2hhZnRlbiBpbSBFaXNzY2h3aW1tZW4gaW0gTGFuZGhvdGVsIEFsdGVzIFpvbGxoYXVzLCBIZXJtc2RvcmYuIl0sICJQYXJ0ZWNpcGEg4oaSIjogWyJUYWtlIHBhcnQg4oaSIiwgIkpldHp0IG1pdG1hY2hlbiDihpIiXSwgIk5hdHVyZSBkYXlzIGUgQ2xlYW51cCI6IFsiTmF0dXJlIGRheXMgJiBDbGVhbnVwcyIsICJOYXR1cmUgRGF5cyAmIENsZWFudXBzIl0sICJSZXN0aXR1aXJlLCBpbnNpZW1lLiI6IFsiR2l2aW5nIGJhY2ssIHRvZ2V0aGVyLiIsICJHZW1laW5zYW0genVyw7xja2dlYmVuLiJdLCAiRGFsbGEgcGlhbnR1bWF6aW9uZSBkaSBudW92byB2ZXJkZSBhbGxhIGJvbmlmaWNhIGRlaSBzaXRpIGNvbnRhbWluYXRpLiI6IFsiRnJvbSBwbGFudGluZyBuZXcgZ3JlZW5lcnkgdG8gY2xlYW5pbmcgdXAgcG9sbHV0ZWQgc2l0ZXMuIiwgIlZvbSBQZmxhbnplbiBuZXVlciBCw6R1bWUgYmlzIHp1ciBTw6R1YmVydW5nIHZlcnNjaG11dHp0ZXIgT3J0ZS4iXSwgIlpvbGxoYXVzIE9wZW4gMjAyNyDCtyBQcm92YSB0dSI6IFsiWm9sbGhhdXMgT3BlbiAyMDI3IMK3IFRyeSBpdCB5b3Vyc2VsZiIsICJab2xsaGF1cyBPcGVuIDIwMjcgwrcgUHJvYmllciBlcyBhdXMiXSwgIlF1YW50byA8ZW0+cmVzaXN0aT88L2VtPiI6IFsiSG93IGxvbmcgY2FuIHlvdSA8ZW0+bGFzdD88L2VtPiIsICJXaWUgbGFuZ2UgPGVtPmjDpGx0c3QgZHUgZHVyY2g\/PC9lbT4iXSwgIjE54oCTMjAgZmViYnJhaW8gMjAyNyBhIEhlcm1zZG9yZiwgbmVpIE1vbnRpIE1ldGFsbGlmZXJpOiBpbCBjYW1waW9uYXRvIHRlZGVzY28gZGkgbnVvdG8gbmVsIGdoaWFjY2lvIGFsIExhbmRob3RlbCBBbHRlcyBab2xsaGF1cy4gVGllbmkgcHJlbXV0byBpbCBwdWxzYW50ZSBwZXIgcmVzdGFyZSBpbiBhY3F1YSBlIHNjb3ByaSBjaGUgdGlwbyBkaSBudW90YXRvcmUgc2FyZXN0aS4iOiBbIjE54oCTMjAgRmVicnVhcnkgMjAyNyBpbiBIZXJtc2RvcmYsIGluIEdlcm1hbnkncyBPcmUgTW91bnRhaW5zOiB0aGUgR2VybWFuIEljZSBTd2ltbWluZyBDaGFtcGlvbnNoaXBzIGF0IExhbmRob3RlbCBBbHRlcyBab2xsaGF1cy4gUHJlc3MgYW5kIGhvbGQgdGhlIGJ1dHRvbiB0byBzdGF5IGluIHRoZSB3YXRlciBhbmQgZmluZCBvdXQgd2hhdCBraW5kIG9mIHN3aW1tZXIgeW91J2QgYmUuIiwgIjE5LuKAkzIwLiBGZWJydWFyIDIwMjcgaW4gSGVybXNkb3JmIGltIEVyemdlYmlyZ2U6IGRpZSBEZXV0c2NoZW4gTWVpc3RlcnNjaGFmdGVuIGltIEVpc3NjaHdpbW1lbiBpbSBMYW5kaG90ZWwgQWx0ZXMgWm9sbGhhdXMuIEhhbHQgZGVuIEtub3BmIGdlZHLDvGNrdCwgdW0gaW0gV2Fzc2VyIHp1IGJsZWliZW4sIHVuZCBmaW5kZSBoZXJhdXMsIHdhcyBmw7xyIGVpbiBTY2h3aW1tZXIgZHUgd8OkcnN0LiJdLCAiQWNxdWEgwrcgMiDCsEMiOiBbIldhdGVyIMK3IDIgwrBDIiwgIldhc3NlciDCtyAyIMKwQyJdLCAic2Vjb25kaSI6IFsic2Vjb25kcyIsICJTZWt1bmRlbiJdLCAiVGllbmkgcHJlbXV0byI6IFsiUHJlc3MgJiBob2xkIiwgIkdlZHLDvGNrdCBoYWx0ZW4iXSwgIklsIHR1byB0ZW1wbyI6IFsiWW91ciB0aW1lIiwgIkRlaW5lIFplaXQiXSwgIklsIHR1byByZWNvcmQ6IHt7MH19IjogWyJZb3VyIGJlc3Q6IHt7MH19IiwgIkRlaW4gUmVrb3JkOiB7ezB9fSJdLCAiSXNjcml2aXRpIGFpIFpvbGxoYXVzIE9wZW4ge3swfX0iOiBbIlNpZ24gdXAgZm9yIHRoZSBab2xsaGF1cyBPcGVuIHt7MH19IiwgIkbDvHIgZGllIFpvbGxoYXVzIE9wZW4gYW5tZWxkZW4ge3swfX0iXSwgIlJpcHJvdmEiOiBbIlRyeSBhZ2FpbiIsICJOb2NobWFsIl0sICLDiCBzb2xvIHVuIGdpb2NvOiBpbCBudW90byBuZWwgZ2hpYWNjaW8gdmVybyBzaSBpbXBhcmEgY29uIGdyYWR1YWxpdMOgLCBwcmVwYXJhemlvbmUgZSBzZW1wcmUgY29uIGFzc2lzdGVuemEuIjogWyJJdCdzIGp1c3QgYSBnYW1lOiByZWFsIGljZSBzd2ltbWluZyBpcyBsZWFybmVkIGdyYWR1YWxseSwgd2l0aCBwcmVwYXJhdGlvbiBhbmQgYWx3YXlzIHdpdGggc3VwZXJ2aXNpb24uIiwgIk51ciBlaW4gU3BpZWw6IEVjaHRlcyBFaXNzY2h3aW1tZW4gbGVybnQgbWFuIGxhbmdzYW0sIG1pdCBWb3JiZXJlaXR1bmcgdW5kIGltbWVyIG1pdCBCZWdsZWl0dW5nLiJdLCAiUXVhbnRvIHNlaSA8ZW0+QWRkaWN0ZWQ\/PC9lbT4iOiBbIkhvdyA8ZW0+QWRkaWN0ZWQ8L2VtPiBhcmUgeW91PyIsICJXaWUgPGVtPkFkZGljdGVkPC9lbT4gYmlzdCBkdT8iXSwgIkNpbnF1ZSBkb21hbmRlLCBuZXNzdW5hIHJpc3Bvc3RhIHNiYWdsaWF0YS4gU2NvcHJpIHNlIHNlaSB1biBBZHJlbmFsaW5lLCB1biBGcmVlZG9tIG8gdW4gTmF0dXJlIEFkZGljdGVkIOKAkyBlIHF1YWxlIGF2dmVudHVyYSBmYSBwZXIgdGUuIjogWyJGaXZlIHF1ZXN0aW9ucywgbm8gd3JvbmcgYW5zd2Vycy4gRmluZCBvdXQgd2hldGhlciB5b3UncmUgYW4gQWRyZW5hbGluZSwgRnJlZWRvbSBvciBOYXR1cmUgQWRkaWN0ZWQg4oCTIGFuZCB3aGljaCBhZHZlbnR1cmUgc3VpdHMgeW91LiIsICJGw7xuZiBGcmFnZW4sIGtlaW5lIGZhbHNjaGVuIEFudHdvcnRlbi4gRmluZGUgaGVyYXVzLCBvYiBkdSBlaW4gQWRyZW5hbGluZSwgRnJlZWRvbSBvZGVyIE5hdHVyZSBBZGRpY3RlZCBiaXN0IOKAkyB1bmQgd2VsY2hlcyBBYmVudGV1ZXIgenUgZGlyIHBhc3N0LiJdLCAiQ3JlZGlhbW8gaW4gdW5vIHN0aWxlIGRpIHZpdGEgY2hlIG1ldHRlIGFsIGNlbnRybyBsYSA8ZW0+TmF0dXJhPC9lbT4uIE5vbiBkYSBndWFyZGFyZSwgbWEgZGEgdml2ZXJlLCByaXNwZXR0YXJlIGUgY3VzdG9kaXJlLiI6IFsiV2UgYmVsaWV2ZSBpbiBhIGxpZmVzdHlsZSB0aGF0IHB1dHMgPGVtPk5hdHVyZTwvZW0+IGF0IGl0cyBoZWFydC4gTm90IHNvbWV0aGluZyB0byBsb29rIGF0LCBidXQgdG8gbGl2ZSwgcmVzcGVjdCBhbmQgcHJvdGVjdC4iLCAiV2lyIGdsYXViZW4gYW4gZWluZW4gTGViZW5zc3RpbCwgZGVyIGRpZSA8ZW0+TmF0dXI8L2VtPiBpbiBkZW4gTWl0dGVscHVua3Qgc3RlbGx0LiBOaWNodCB6dW0gQW5zY2hhdWVuLCBzb25kZXJuIHp1bSBMZWJlbiwgUmVzcGVrdGllcmVuIHVuZCBTY2jDvHR6ZW4uIl0sICJTaWFtbyB1bmEgY29tbXVuaXR5LCBub24gdW4gbWFyY2hpbyBkYSBzZWd1aXJlLiBTZSBzZW50aSBhbmNoZSB0dSBxdWVsIHJpY2hpYW1vLCBzZWkgZ2nDoCB1bm8gZGkgbm9pLiI6IFsiV2UncmUgYSBjb21tdW5pdHksIG5vdCBhIGJyYW5kIHRvIGZvbGxvdy4gSWYgeW91IGZlZWwgdGhhdCBjYWxsIHRvbywgeW91J3JlIGFscmVhZHkgb25lIG9mIHVzLiIsICJXaXIgc2luZCBlaW5lIENvbW11bml0eSwga2VpbmUgTWFya2UgenVtIEZvbGdlbi4gV2VubiBkdSBkaWVzZW4gUnVmIGF1Y2ggc3DDvHJzdCwgYmlzdCBkdSBzY2hvbiBlaW5lciB2b24gdW5zLiJdLCAiTGVnZ2kgaWwgbWFuaWZlc3RvIHt7MH19IjogWyJSZWFkIHRoZSBtYW5pZmVzdG8ge3swfX0iLCAiTWFuaWZlc3QgbGVzZW4ge3swfX0iXSwgIlBlciB0dXR0ZSBsZSBuZXdzLCBzZWd1aWNpIGFuY2hlIHN1aSBub3N0cmkgY2FuYWxpIHNvY2lhbC4iOiBbIkZvciBhbGwgdGhlIG5ld3MsIGZvbGxvdyB1cyBvbiBzb2NpYWwgbWVkaWEgdG9vLiIsICJBbGxlIE5ld3MgZ2lidCBlcyBhdWNoIGF1ZiB1bnNlcmVuIFNvY2lhbC1NZWRpYS1LYW7DpGxlbi4iXSwgIlNjcml2aWNpIjogWyJXcml0ZSB0byB1cyIsICJTY2hyZWliIHVucyJdLCAiTGEgY29tbXVuaXR5IGRpIGNoaSB2aXZlLCByaXNwZXR0YSBlIGN1c3RvZGlzY2UgbGEgTmF0dXJhLiI6IFsiVGhlIGNvbW11bml0eSBvZiBwZW9wbGUgd2hvIGxpdmUsIHJlc3BlY3QgYW5kIHByb3RlY3QgTmF0dXJlLiIsICJEaWUgQ29tbXVuaXR5IGbDvHIgYWxsZSwgZGllIGRpZSBOYXR1ciBsZWJlbiwgcmVzcGVrdGllcmVuIHVuZCBzY2jDvHR6ZW4uIl0sICJFc3Bsb3JhIjogWyJFeHBsb3JlIiwgIkVudGRlY2tlbiJdLCAiTW9kdWxvIGRpIGNvbnRhdHRvIjogWyJDb250YWN0IGZvcm0iLCAiS29udGFrdGZvcm11bGFyIl0sICJBdHRpdmEgbyBkaXNhdHRpdmEgaSBzdW9uaSBkZWxsYSBuYXR1cmEiOiBbIlR1cm4gbmF0dXJlIHNvdW5kcyBvbiBvciBvZmYiLCAiTmF0dXJnZXLDpHVzY2hlIGVpbi0gb2RlciBhdXNzY2hhbHRlbiJdLCAiTWVudSBwcmluY2lwYWxlIjogWyJNYWluIG1lbnUiLCAiSGF1cHRtZW7DvCJdLCAiQ2FycmVsbG8iOiBbIkNhcnQiLCAiV2FyZW5rb3JiIl0sICJBcHJpIG1lbnUiOiBbIk9wZW4gbWVudSIsICJNZW7DvCDDtmZmbmVuIl0sICJTdXJmaXN0YSBkZW50cm8gdW4nb25kYSBnaWdhbnRlIG5lbGwnb2NlYW5vIjogWyJTdXJmZXIgaW5zaWRlIGEgZ2lhbnQgb2NlYW4gd2F2ZSIsICJTdXJmZXIgaW4gZWluZXIgcmllc2lnZW4gT3plYW53ZWxsZSJdLCAiVW4gQWRkaWN0ZWQgcGlhbnRhIHVuIGdpb3ZhbmUgYWxiZXJvIGR1cmFudGUgdW4gTmF0dXJlIGRheSI6IFsiQW4gQWRkaWN0ZWQgcGxhbnRpbmcgYSB5b3VuZyB0cmVlIG9uIGEgTmF0dXJlIGRheSIsICJFaW4gQWRkaWN0ZWQgcGZsYW56dCBhbiBlaW5lbSBOYXR1cmUgRGF5IGVpbmVuIGp1bmdlbiBCYXVtIl0sICJFc2N1cnNpb25pc3RpIHN1IHVuYSBzY29nbGllcmEgYWwgdHJhbW9udG8iOiBbIkhpa2VycyBvbiBhIGNsaWZmIGF0IHN1bnNldCIsICJXYW5kZXJlciBhdWYgZWluZXIgS2xpcHBlIGJlaSBTb25uZW51bnRlcmdhbmciXSwgIkZvcmVzdGEgZGkgY29uaWZlcmUgdmlzdGEgZGFsbCdhbHRvIjogWyJDb25pZmVyIGZvcmVzdCBzZWVuIGZyb20gYWJvdmUiLCAiTmFkZWx3YWxkIHZvbiBvYmVuIl0sICJHaW9jbzogY2xpY2NhIHN1bGxhIGNvbGxpbmEgcGVyIHBpYW50YXJlIGFsYmVyaSI6IFsiR2FtZTogY2xpY2sgb24gdGhlIGhpbGwgdG8gcGxhbnQgdHJlZXMiLCAiU3BpZWw6IEtsaWNrIGF1ZiBkZW4gSMO8Z2VsLCB1bSBCw6R1bWUgenUgcGZsYW56ZW4iXSwgIkJvc2NvIGF1dHVubmFsZSB2aXN0byBkYWxsJ2FsdG8iOiBbIkF1dHVtbiBmb3Jlc3Qgc2VlbiBmcm9tIGFib3ZlIiwgIkhlcmJzdHdhbGQgdm9uIG9iZW4iXSwgIkdpb2NvOiByYWNjb2dsaSBsYSBwbGFzdGljYSBzdWxsYSBzcGlhZ2dpYSBlIG1ldHRpbGEgbmVsIGNlc3Rpbm8iOiBbIkdhbWU6IHBpY2sgdXAgdGhlIHBsYXN0aWMgb24gdGhlIGJlYWNoIGFuZCBwdXQgaXQgaW4gdGhlIGJhc2tldCIsICJTcGllbDogU2FtbWxlIGRhcyBQbGFzdGlrIGFtIFN0cmFuZCBlaW4gdW5kIGxlZyBlcyBpbiBkZW4gS29yYiJdLCAiU2FkaHUgQm9hcmQg4oCTIHRhdm9sYSBjb24gY2hpb2RpIGluIGxlZ25vIjogWyJTYWRodSBCb2FyZCDigJMgd29vZGVuIG5haWwgYm9hcmQiLCAiU2FkaHUgQm9hcmQg4oCTIE5hZ2VsYnJldHQgYXVzIEhvbHoiXSwgIlNhcG9uZSBjb3Ntb3BvbGl0YSBhcnRpZ2lhbmFsZSBkYSAxMDAgZyI6IFsiSGFuZG1hZGUgQ29zbW9wb2xpdGFuIHNvYXAsIDEwMCBnIiwgIkhhbmRnZW1hY2h0ZSBDb3Ntb3BvbGl0YW4tU2VpZmUsIDEwMCBnIl0sICJNaWVsZSBkaSBldWNhbGlwdG8gZGVsbCdFdG5hLCB2YXNldHRvIGRhIDI1MCBnIjogWyJFdG5hIGV1Y2FseXB0dXMgaG9uZXksIDI1MCBnIGphciIsICJFdWthbHlwdHVzaG9uaWcgdm9tIMOEdG5hLCAyNTAtZy1HbGFzIl0sICJOYXR1cmVDdWJlLCBraXQgcGVyIGNvbHRpdmFyZSBpbCBmaW9yZSBkaSBjaW9jY29sYXRvIjogWyJOYXR1cmVDdWJlLCBjaG9jb2xhdGUgZmxvd2VyIGdyb3dpbmcga2l0IiwgIk5hdHVyZUN1YmUsIEFuenVjaHRzZXQgZsO8ciBkaWUgU2Nob2tvbGFkZW5ibHVtZSJdLCAiQ29udGluZW50aSI6IFsiQ29udGluZW50cyIsICJLb250aW5lbnRlIl0sICJHbG9ibyBpbnRlcmF0dGl2byBjb24gaSBwYWVzaSBpbiBjdWkgw6ggc3RhdGEgQWRkaWN0ZWQgVG8gTmF0dXJlIjogWyJJbnRlcmFjdGl2ZSBnbG9iZSB3aXRoIHRoZSBjb3VudHJpZXMgQWRkaWN0ZWQgVG8gTmF0dXJlIGhhcyB2aXNpdGVkIiwgIkludGVyYWt0aXZlciBHbG9idXMgbWl0IGRlbiBMw6RuZGVybiwgaW4gZGVuZW4gQWRkaWN0ZWQgVG8gTmF0dXJlIHdhciJdLCAiQXZ2ZW50dXJhIGluIG1vbnRhZ25hOiBlc2N1cnNpb25pc3RpIHN1IHVuYSBzY29nbGllcmEgYWwgdHJhbW9udG8iOiBbIk1vdW50YWluIGFkdmVudHVyZTogaGlrZXJzIG9uIGEgY2xpZmYgYXQgc3Vuc2V0IiwgIkJlcmdhYmVudGV1ZXI6IFdhbmRlcmVyIGF1ZiBlaW5lciBLbGlwcGUgYmVpIFNvbm5lbnVudGVyZ2FuZyJdLCAiUGlhbnR1bWF6aW9uZSBkaSBhbGJlcmkgZHVyYW50ZSB1biBOYXR1cmUgZGF5IGRpIEFkZGljdGVkIFRvIE5hdHVyZSI6IFsiVHJlZSBwbGFudGluZyBhdCBhbiBBZGRpY3RlZCBUbyBOYXR1cmUgTmF0dXJlIGRheSIsICJCw6R1bWUgcGZsYW56ZW4gYW4gZWluZW0gTmF0dXJlIERheSB2b24gQWRkaWN0ZWQgVG8gTmF0dXJlIl0sICJUaWVuaSBwcmVtdXRvIHBlciByZXN0YXJlIGluIGFjcXVhIChhbmNoZSBjb24gbGEgYmFycmEgc3BhemlhdHJpY2UpIjogWyJQcmVzcyBhbmQgaG9sZCB0byBzdGF5IGluIHRoZSB3YXRlciAoc3BhY2ViYXIgd29ya3MgdG9vKSIsICJHZWRyw7xja3QgaGFsdGVuLCB1bSBpbSBXYXNzZXIgenUgYmxlaWJlbiAoZ2VodCBhdWNoIG1pdCBkZXIgTGVlcnRhc3RlKSJdfTs=<\/script>\n<script type=\"text\/atn-b64\">LyogLS0tLS0tLS0tLSDDnGJlcnNldHp1bmcgKElUIC8gRU4gLyBERSkgLS0tLS0tLS0tLSAqLwooZnVuY3Rpb24oKXsKdmFyIHJvb3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F0bi1ob21lJyl8fGRvY3VtZW50LmJvZHk7CnZhciBsYW5nPShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZ3x8J2l0Jykuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpOwppZihsYW5nIT09J2VuJyYmbGFuZyE9PSdkZScpbGFuZz0naXQnOwp3aW5kb3cuQVROX0xBTkc9bGFuZzsKd2luZG93Lkw9ZnVuY3Rpb24oaXQsZW4sZGUpe3JldHVybiBsYW5nPT09J2VuJz9lbjpsYW5nPT09J2RlJz9kZTppdH07CnZhciBJTkxJTkU9e0VNOjEsU1RST05HOjEsQlI6MX07CmZ1bmN0aW9uIGVzYyhzKXtyZXR1cm4gcy5yZXBsYWNlKC8mL2csJyZhbXA7JykucmVwbGFjZSgvPC9nLCcmbHQ7JykucmVwbGFjZSgvPi9nLCcmZ3Q7Jyl9CmZ1bmN0aW9uIG5vcm0ocyl7cmV0dXJuIHMucmVwbGFjZSgvXHMrL2csJyAnKS50cmltKCl9CmZ1bmN0aW9uIGhhc0xldHRlcnMocyl7cmV0dXJuIC9bQS1aYS16w4Atw79dLy50ZXN0KHMpfQpmdW5jdGlvbiBkaXJlY3RUZXh0KGVsKXtmb3IodmFyIGk9MDtpPGVsLmNoaWxkTm9kZXMubGVuZ3RoO2krKyl7dmFyIG49ZWwuY2hpbGROb2Rlc1tpXTtpZihuLm5vZGVUeXBlPT09MyYmaGFzTGV0dGVycyhuLm5vZGVWYWx1ZSkpcmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfQpmdW5jdGlvbiBzZXIoZWwsdG9rcyl7dmFyIG91dD0nJztmb3IodmFyIGk9MDtpPGVsLmNoaWxkTm9kZXMubGVuZ3RoO2krKyl7dmFyIG49ZWwuY2hpbGROb2Rlc1tpXTsKICBpZihuLm5vZGVUeXBlPT09MylvdXQrPWVzYyhuLm5vZGVWYWx1ZSk7CiAgZWxzZSBpZihuLm5vZGVUeXBlPT09MSl7dmFyIHQ9bi50YWdOYW1lOwogICAgaWYoSU5MSU5FW3RdJiYhbi5hdHRyaWJ1dGVzLmxlbmd0aCl7b3V0Kz10PT09J0JSJz8nPGJyPic6JzwnK3QudG9Mb3dlckNhc2UoKSsnPicrc2VyKG4sdG9rcykrJzwvJyt0LnRvTG93ZXJDYXNlKCkrJz4nfQogICAgZWxzZXtvdXQrPSd7eycrdG9rcy5sZW5ndGgrJ319Jzt0b2tzLnB1c2gobil9fX0KICByZXR1cm4gb3V0fQp2YXIgU0tJUD17U0NSSVBUOjEsU1RZTEU6MSxTVkc6MSxDQU5WQVM6MSxOT1NDUklQVDoxLHN2ZzoxfTsKZnVuY3Rpb24gd2FsayhlbCxmbil7aWYoU0tJUFtlbC50YWdOYW1lXSlyZXR1cm47aWYoZGlyZWN0VGV4dChlbCkpe2ZuKGVsKX1lbHNle2Zvcih2YXIgaT0wO2k8ZWwuY2hpbGRyZW4ubGVuZ3RoO2krKyl3YWxrKGVsLmNoaWxkcmVuW2ldLGZuKX19Ci8qIEV4dHJha3Rpb24gKG51ciB6dXIgVm9yYmVyZWl0dW5nIGRlciBXw7ZydGVyYsO8Y2hlcikgKi8Kd2luZG93LkFUTl9FWFRSQUNUPWZ1bmN0aW9uKHIpe3ZhciBrZXlzPVtdLHNlZW49e307ZnVuY3Rpb24gZih4LGssdG9rcyl7aWYoIXNlZW5ba10pe3NlZW5ba109MTtrZXlzLnB1c2goayl9dG9rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQubm9kZVR5cGU9PT0xJiYhU0tJUFt0LnRhZ05hbWVdKXdhbGsodCxmdW5jdGlvbih5KXt2YXIgdHQ9W107Zih5LG5vcm0oc2VyKHksdHQpKSx0dCl9KX0pfQogIHdhbGsocnx8cm9vdCxmdW5jdGlvbih4KXt2YXIgdG9rcz1bXTtmKHgsbm9ybShzZXIoeCx0b2tzKSksdG9rcyl9KTsKICAocnx8cm9vdCkucXVlcnlTZWxlY3RvckFsbCgnW2FsdF0sW2FyaWEtbGFiZWxdJykuZm9yRWFjaChmdW5jdGlvbihlKXtbJ2FsdCcsJ2FyaWEtbGFiZWwnXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciB2PWUuZ2V0QXR0cmlidXRlKGEpO2lmKHYmJmhhc0xldHRlcnModikmJiFzZWVuW3ZdKXtzZWVuW3ZdPTE7a2V5cy5wdXNoKHYpfX0pfSk7cmV0dXJuIGtleXN9OwppZihsYW5nPT09J2l0Jyl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2F0bi1yZWFkeScpO3JldHVybn0KdmFyIEQ9d2luZG93LkFUTl9ESUNUfHx7fTsKZnVuY3Rpb24gdHIoayl7dmFyIGU9RFtrXTtyZXR1cm4gZT9lW2xhbmc9PT0nZW4nPzA6MV06bnVsbH0KZnVuY3Rpb24gYXBwbHkoeCl7dmFyIHRva3M9W107dmFyIGs9bm9ybShzZXIoeCx0b2tzKSk7dmFyIHQ9dHIoayk7CiAgaWYodCE9PW51bGwmJnQhPT11bmRlZmluZWQpe3guaW5uZXJIVE1MPXQucmVwbGFjZSgvXHtceyhcZCspXH1cfS9nLCc8aSBkYXRhLWF0bi10b2s9IiQxIj48L2k+Jyk7CiAgICB4LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lbZGF0YS1hdG4tdG9rXScpLmZvckVhY2goZnVuY3Rpb24ocGgpe3ZhciBuPXRva3NbK3BoLmdldEF0dHJpYnV0ZSgnZGF0YS1hdG4tdG9rJyldO2lmKG4pcGgucmVwbGFjZVdpdGgobik7ZWxzZSBwaC5yZW1vdmUoKX0pfQogIHRva3MuZm9yRWFjaChmdW5jdGlvbihuKXtpZihuLm5vZGVUeXBlPT09MSYmIVNLSVBbbi50YWdOYW1lXSl3YWxrKG4sYXBwbHkpfSl9CndhbGsocm9vdCxhcHBseSk7CnJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2FsdF0sW2FyaWEtbGFiZWxdJykuZm9yRWFjaChmdW5jdGlvbihlKXtbJ2FsdCcsJ2FyaWEtbGFiZWwnXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciB2PWUuZ2V0QXR0cmlidXRlKGEpO3ZhciB0PXYmJnRyKHYpO2lmKHQpZS5zZXRBdHRyaWJ1dGUoYSx0KX0pfSk7Ci8qIEludGVybmUgTGlua3MgYXVmIGRpZSBTcHJhY2h2ZXJzaW9uIHVtc3RlbGxlbiAqLwpyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl49Imh0dHBzOi8vYWRkaWN0ZWQtdG8uY29tLyJdJykuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgaD1hLmdldEF0dHJpYnV0ZSgnaHJlZicpO2lmKC9cL3dwLWNvbnRlbnRcL3xcLyhlbnxkZSlcLy8udGVzdChoKSlyZXR1cm47aWYoYS5jbG9zZXN0KCcubGFuZycpKXJldHVybjthLnNldEF0dHJpYnV0ZSgnaHJlZicsaC5yZXBsYWNlKCdodHRwczovL2FkZGljdGVkLXRvLmNvbS8nLCdodHRwczovL2FkZGljdGVkLXRvLmNvbS8nK2xhbmcrJy8nKSl9KTsKdmFyIGxhbmdzPXJvb3QucXVlcnlTZWxlY3RvckFsbCgnLm5hdiAubGFuZyBhJyk7bGFuZ3MuZm9yRWFjaChmdW5jdGlvbihhKXthLmNsYXNzTGlzdC50b2dnbGUoJ29uJyxhLnRleHRDb250ZW50LnRyaW0oKS50b0xvd2VyQ2FzZSgpPT09bGFuZyl9KTsKZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2F0bi1yZWFkeScpOwp9KSgpOwo=<\/script>\n<script defer src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/gsap.min.js\"><\/script>\n<script defer src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/ScrollTrigger.min.js\"><\/script>\n<script defer src=\"https:\/\/cdn.jsdelivr.net\/npm\/lenis@1.1.13\/dist\/lenis.min.js\"><\/script>\n<script type=\"text\/atn-b64\">CihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CmNvbnN0IFU9J2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8nOwpjb25zdCByZWR1Y2U9bWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwpjb25zdCBmaW5lPW1hdGNoTWVkaWEoJyhob3Zlcjpob3ZlcikgYW5kIChwb2ludGVyOmZpbmUpJykubWF0Y2hlczsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3lyJykudGV4dENvbnRlbnQ9bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpOwoKLyogLS0tLS0tLS0tLSBTbGlkZXMgZGVzIEhlcm8gLS0tLS0tLS0tLSAqLwpjb25zdCBTTElERVM9WwogIHtiOicyMDI0LzAzL1Zpc3VhbF9ob21lXzAyLW1pbicsd29yZDonQWRyZW5hbGluZScscGxhY2U6TCgnT2NlYW5vIMK3IEzigJlvbmRhJywnT2NlYW4gwrcgVGhlIHdhdmUnLCdPemVhbiDCtyBEaWUgV2VsbGUnKX0sCiAge2I6JzIwMjQvMDMvVmlzdWFsX2hvbWVfMDUtbWluJyx3b3JkOidGcmVlZG9tJyxwbGFjZTpMKCdBbHBpIMK3IFBhcmFwZW5kaW8nLCdBbHBzIMK3IFBhcmFnbGlkaW5nJywnQWxwZW4gwrcgUGFyYWdsaWRpbmcnKX0sCiAge2I6JzIwMjQvMDMvVmlzdWFsX2hvbWVfMDEtbWluJyx3b3JkOidOYXR1cmUnLHBsYWNlOkwoJ0ZvcmVzdGEgwrcgRGFsbOKAmWFsdG8nLCdGb3Jlc3QgwrcgRnJvbSBhYm92ZScsJ1dhbGQgwrcgVm9uIG9iZW4nKX0sCiAge2I6JzIwMjQvMDQvSGVhZGVyX2V2ZW50aS1taW4nLHdvcmQ6J0FkdmVudHVyZScscGxhY2U6TCgnU2NvZ2xpZXJhIMK3IFRyYW1vbnRvJywnQ2xpZmYgwrcgU3Vuc2V0JywnS2xpcHBlIMK3IFNvbm5lbnVudGVyZ2FuZycpfSwKICB7YjonMjAyNC8wMy9WaXN1YWxfaG9tZV8wNC1taW4nLHdvcmQ6J1NpbGVuY2UnLHBsYWNlOkwoJ0Rlc2VydG8gwrcgRHVuZScsJ0Rlc2VydCDCtyBEdW5lcycsJ1fDvHN0ZSDCtyBEw7xuZW4nKX0KXTsKY29uc3QgRFVSPTY1MDA7Ci8qIEJpbGRncsO2w59lIHBhc3NlbmQgenVtIEJpbGRzY2hpcm06IGdyb8OfZSBNb25pdG9yZSBPcmlnaW5hbCwgc29uc3QgMTUzNnB4ICovCmNvbnN0IG5lZWRXPU1hdGgubWF4KGlubmVyV2lkdGgsaW5uZXJIZWlnaHQqMi4xMykqTWF0aC5taW4oZGV2aWNlUGl4ZWxSYXRpb3x8MSxpbm5lcldpZHRoPDgwMD8xOjEuMjUpOwpTTElERVMuZm9yRWFjaChzPT5zLmltZz1VK3MuYisobmVlZFc+MjAwMD8nLmpwZyc6Jy0xNTM2eDcyMC5qcGcnKSk7CgovKiBSb3RpZXJlbmRlcyBXb3J0ICovCmNvbnN0IHJvdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm90Jyk7CmZ1bmN0aW9uIHNldFdvcmQodyxmaXJzdCl7CiAgY29uc3Qgb2xkPXJvdC5xdWVyeVNlbGVjdG9yKCcudycpOwogIGNvbnN0IGVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtlbC5jbGFzc05hbWU9J3cnOwogIGVsLmlubmVySFRNTD1bLi4ud10ubWFwKGM9Pic8aT4nK2MrJzwvaT4nKS5qb2luKCcnKTsKICByb3QuYXBwZW5kQ2hpbGQoZWwpOwogIGNvbnN0IGxldHRlcnM9ZWwucXVlcnlTZWxlY3RvckFsbCgnaScpOwogIGlmKHdpbmRvdy5nc2FwJiYhcmVkdWNlKXsKICAgIGdzYXAuZnJvbVRvKGxldHRlcnMse3lQZXJjZW50OjExMCxvcGFjaXR5OjAsZmlsdGVyOidibHVyKDhweCknfSx7eVBlcmNlbnQ6MCxvcGFjaXR5OjEsZmlsdGVyOidibHVyKDBweCknLGR1cmF0aW9uOjEuMSxlYXNlOidleHBvLm91dCcsc3RhZ2dlcjouMDM1LGRlbGF5OmZpcnN0Py4xOi4yNX0pOwogICAgaWYob2xkKSBnc2FwLnRvKG9sZC5xdWVyeVNlbGVjdG9yQWxsKCdpJykse3lQZXJjZW50Oi0xMDAsb3BhY2l0eTowLGZpbHRlcjonYmx1cig4cHgpJyxkdXJhdGlvbjouNixlYXNlOidwb3dlcjIuaW4nLHN0YWdnZXI6LjAyLG9uQ29tcGxldGU6KCk9Pm9sZC5yZW1vdmUoKX0pOwogIH1lbHNlIGlmKG9sZCkgb2xkLnJlbW92ZSgpOwp9CgovKiBEb3RzICovCmNvbnN0IGRvdHNFbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG90cycpOwpTTElERVMuZm9yRWFjaCgocyxpKT0+e2NvbnN0IGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7Yi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCdJbW1hZ2luZSAnKyhpKzEpKTtiLmlubmVySFRNTD0nPGk+PC9pPic7Yi5vbmNsaWNrPSgpPT5nbyhpKTtkb3RzRWwuYXBwZW5kQ2hpbGQoYil9KTsKY29uc3QgZG90QmFycz1bLi4uZG90c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2knKV07CmNvbnN0IHBsYWNlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbGFjZScpOwoKLyogLS0tLS0tLS0tLSBXZWJHTDogb3JnYW5pc2NoZXIgw5xiZXJnYW5nICsgV2Fzc2VyLVdlbGxlIHVudGVyIGRlciBNYXVzIC0tLS0tLS0tLS0gKi8KY29uc3QgY2FudmFzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbCcpOwpsZXQgZ2w9bnVsbCxwcm9nPW51bGwsdGV4cz1bXSx1bmk9e30sZ2xPSz1mYWxzZTsKY29uc3QgdnM9J2F0dHJpYnV0ZSB2ZWMyIHA7dmFyeWluZyB2ZWMyIHY7dm9pZCBtYWluKCl7dj1wKi41Ky41O2dsX1Bvc2l0aW9uPXZlYzQocCwwLiwxLik7fSc7CmNvbnN0IGZzPVsncHJlY2lzaW9uIGhpZ2hwIGZsb2F0O3ZhcnlpbmcgdmVjMiB2OycsCid1bmlmb3JtIHNhbXBsZXIyRCB0MCx0MTt1bmlmb3JtIHZlYzIgcmVzLGlyMCxpcjEsbW91c2U7dW5pZm9ybSBmbG9hdCBwcix0aW1lLG1zdHIsejAsejEsaG92OycsCid1bmlmb3JtIHZlYzQgZHJvcHNbMTBdOycsCid2ZWMyIGNvdmVyKHZlYzIgdXYsdmVjMiBpLGZsb2F0IHope2Zsb2F0IHJzPXJlcy54L3Jlcy55LHJpPWkueC9pLnk7dmVjMiBzPXJzPnJpP3ZlYzIoMS4scmkvcnMpOnZlYzIocnMvcmksMS4pO3JldHVybiAodXYtLjUpKnMvKDEuK3opKy41O30nLAonZmxvYXQgaCh2ZWMyIHApe3JldHVybiBmcmFjdChzaW4oZG90KHAsdmVjMigxMjcuMSwzMTEuNykpKSo0Mzc1OC41NDUzKTt9JywKJ2Zsb2F0IG4odmVjMiBwKXt2ZWMyIGk9Zmxvb3IocCksZj1mcmFjdChwKTtmPWYqZiooMy4tMi4qZik7cmV0dXJuIG1peChtaXgoaChpKSxoKGkrdmVjMigxLDApKSxmLngpLG1peChoKGkrdmVjMigwLDEpKSxoKGkrdmVjMigxLDEpKSxmLngpLGYueSk7fScsCidmbG9hdCBmYm0odmVjMiBwKXtmbG9hdCBzPTAuLGE9LjU7Zm9yKGludCBrPTA7azw0O2srKyl7cys9YSpuKHApO3AqPTIuMDM7YSo9LjU7fXJldHVybiBzO30nLAondm9pZCBtYWluKCl7JywKJyAgdmVjMiB1dj12O3ZlYzIgYXNwPXZlYzIocmVzLngvcmVzLnksMS4pOycsCicgIHZlYzIgZHJpZnQ9dmVjMihmYm0odXYqMi40K3ZlYzIodGltZSouMDM1LDAuKSksZmJtKHV2KjIuNCt2ZWMyKDAuLHRpbWUqLjAzNSkrNy4pKS0uNTsnLAonICB2ZWMyIGQ9KHV2LW1vdXNlKSphc3A7ZmxvYXQgZGlzdD1sZW5ndGgoZCk7dmVjMiBkaXI9ZC8oZGlzdCsxZS00KTsnLAonICBmbG9hdCByaXA9c2luKGRpc3QqNDIuLXRpbWUqMy4yKSpleHAoLWRpc3QqNS41KSptc3RyOycsCicgIHZlYzIgb2ZmPWRyaWZ0Ki4wMTArKGRpci9hc3ApKnJpcCouMDA4OycsCicgIGZsb2F0IGdsaW50PTAuOycsCicgIGZvcihpbnQgaT0wO2k8MTA7aSsrKXsnLAonICAgIHZlYzQgZHI9ZHJvcHNbaV07ZmxvYXQgYWdlPXRpbWUtZHIuejsnLAonICAgIGlmKGFnZT4wLiYmYWdlPDMuMil7JywKJyAgICAgIHZlYzIgZGQ9KHV2LWRyLnh5KSphc3A7ZmxvYXQgZGw9bGVuZ3RoKGRkKTtmbG9hdCByPWFnZSouMzAqKC42K2RyLncqLjQpOycsCicgICAgICBmbG9hdCBmYWRlPSgxLi1hZ2UvMy4yKTtmYWRlKj1mYWRlOycsCicgICAgICBmbG9hdCByaW5nPWV4cCgtcG93KChkbC1yKSoyNC4sMi4pKSpmYWRlKmRyLnc7JywKJyAgICAgIGZsb2F0IHJpbmcyPWV4cCgtcG93KChkbC1yKi42MikqMzIuLDIuKSkqZmFkZSouNTUqZHIudzsnLAonICAgICAgdmVjMiBkZGlyPWRkLyhkbCsxZS00KTsnLAonICAgICAgb2ZmKz0oZGRpci9hc3ApKihyaW5nLXJpbmcyKi42KSouMDIwOycsCicgICAgICBnbGludCs9cmluZyouNityaW5nMiouMzsnLAonICAgIH0nLAonICB9JywKJyAgZmxvYXQgUj0uMTI7JywKJyAgZmxvYXQgbGVucz0oMS4tc21vb3Roc3RlcChSKi43OCxSLGRpc3QpKSpob3Y7JywKJyAgb2ZmLT0oZC9hc3ApKmxlbnMqLjMwOycsCicgIHZlYzIgcGFyPShtb3VzZS0uNSkqLjAyNSpob3Y7JywKJyAgZmxvYXQgdGg9ZmJtKHV2KnZlYzIoMi4zLDEuNykrNC4yKSouNzgrKDEuLXV2LnkpKi4yMjsnLAonICBmbG9hdCBlPXByKjEuMjUtLjEyOycsCicgIGZsb2F0IGE9c21vb3Roc3RlcCh0aC0uMDcsdGgrLjA3LGUpOycsCicgIHZlYzIgdTA9Y292ZXIodXYsaXIwLHowKStvZmYtcGFyK2RyaWZ0KnByKi4wNjsnLAonICB2ZWMyIHUxPWNvdmVyKHV2LGlyMSx6MSkrb2ZmLXBhci1kcmlmdCooMS4tcHIpKi4wNjsnLAonICB2ZWMzIGMwPXRleHR1cmUyRCh0MCx1MCkucmdiLGMxPXRleHR1cmUyRCh0MSx1MSkucmdiOycsCicgIHZlYzMgYz1taXgoYzAsYzEsYSk7JywKJyAgZmxvYXQgcmltPSgxLi1zbW9vdGhzdGVwKDAuLC4wNSxhYnMoZS10aCkpKSpzdGVwKC4wMDEscHIpKnN0ZXAocHIsLjk5OSk7JywKJyAgYys9dmVjMyguODIsMS4sLjg2KSpyaW0qLjE4OycsCicgIGM9bWl4KGMsYyp2ZWMzKDEuMDMsMS4wMSwuOTUpLC42KTsnLAonICBmbG9hdCB2aWc9c21vb3Roc3RlcCgxLjI1LC4zNSxsZW5ndGgoKHYtLjUpKnZlYzIoMS4yLDEuKSkpOycsCicgIGMqPW1peCguNzIsMS4sdmlnKTsnLAonICBjKj1taXgoMS4sLjg2LGhvdiooMS4tbGVucykqc21vb3Roc3RlcChSLFIqMi42LGRpc3QpKi42KTsnLAonICBmbG9hdCBsPWRvdChjLHZlYzMoLjI5OSwuNTg3LC4xMTQpKTsnLAonICBjPW1peChjLG1peCh2ZWMzKGwpLGMsMS4zKSoxLjEsbGVucyk7JywKJyAgZmxvYXQgcmltTD1leHAoLXBvdygoZGlzdC1SKi45KSo4MC4sMi4pKSpob3Y7JywKJyAgYys9dmVjMyguOSwxLiwuOTMpKnJpbUwqLjI4OycsCicgIGZsb2F0IHNwZWM9ZXhwKC1sZW5ndGgoZC12ZWMyKC0uMDQ1LC4wNSkpKjU1LikqaG92OycsCicgIGMrPXZlYzMoMS4pKnNwZWMqLjM1OycsCicgIGMrPXZlYzMoLjg1LDEuLC45KSpnbGludCouMTQ7JywKJyAgZ2xfRnJhZ0NvbG9yPXZlYzQoYywxLik7JywKJ30nXS5qb2luKCdcbicpOwpmdW5jdGlvbiBpbml0R0woKXsKICB0cnl7CiAgICBnbD1jYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnLHthbnRpYWxpYXM6ZmFsc2UscHJlbXVsdGlwbGllZEFscGhhOmZhbHNlfSk7CiAgICBpZighZ2wpIHJldHVybiBmYWxzZTsKICAgIGNvbnN0IHNoPSh0LHMpPT57Y29uc3Qgbz1nbC5jcmVhdGVTaGFkZXIodCk7Z2wuc2hhZGVyU291cmNlKG8scyk7Z2wuY29tcGlsZVNoYWRlcihvKTtpZighZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKG8sZ2wuQ09NUElMRV9TVEFUVVMpKXRocm93IGdsLmdldFNoYWRlckluZm9Mb2cobyk7cmV0dXJuIG99OwogICAgcHJvZz1nbC5jcmVhdGVQcm9ncmFtKCk7Z2wuYXR0YWNoU2hhZGVyKHByb2csc2goZ2wuVkVSVEVYX1NIQURFUix2cykpO2dsLmF0dGFjaFNoYWRlcihwcm9nLHNoKGdsLkZSQUdNRU5UX1NIQURFUixmcykpO2dsLmxpbmtQcm9ncmFtKHByb2cpO2dsLnVzZVByb2dyYW0ocHJvZyk7CiAgICBjb25zdCBiPWdsLmNyZWF0ZUJ1ZmZlcigpO2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLGIpO2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLDEsLTEsLTEsMSwxLDFdKSxnbC5TVEFUSUNfRFJBVyk7CiAgICBjb25zdCBsb2M9Z2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZywncCcpO2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvYyk7Z2wudmVydGV4QXR0cmliUG9pbnRlcihsb2MsMixnbC5GTE9BVCxmYWxzZSwwLDApOwogICAgWyd0MCcsJ3QxJywncmVzJywnaXIwJywnaXIxJywnbW91c2UnLCdwcicsJ3RpbWUnLCdtc3RyJywnejAnLCd6MScsJ2hvdiddLmZvckVhY2goaz0+dW5pW2tdPWdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9nLGspKTt1bmkuZHJvcHM9Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2csJ2Ryb3BzJyk7CiAgICBnbC51bmlmb3JtMWkodW5pLnQwLDApO2dsLnVuaWZvcm0xaSh1bmkudDEsMSk7CiAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLHRydWUpOwogICAgcmV0dXJuIHRydWU7CiAgfWNhdGNoKGUpe2NvbnNvbGUud2FybignV2ViR0wgb2ZmJyxlKTtyZXR1cm4gZmFsc2V9Cn0KZnVuY3Rpb24gbWFrZVRleChpbWcpewogIGNvbnN0IHQ9Z2wuY3JlYXRlVGV4dHVyZSgpO2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsdCk7CiAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELDAsZ2wuUkdCQSxnbC5SR0JBLGdsLlVOU0lHTkVEX0JZVEUsaW1nKTsgLy8gd2lyZnQgYmVpIGZyZW1kZXIgRG9tYWluIG9obmUgQ09SUwogIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCxnbC5URVhUVVJFX1dSQVBfUyxnbC5DTEFNUF9UT19FREdFKTsKICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsZ2wuVEVYVFVSRV9XUkFQX1QsZ2wuQ0xBTVBfVE9fRURHRSk7CiAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELGdsLlRFWFRVUkVfTUlOX0ZJTFRFUixnbC5MSU5FQVIpOwogIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCxnbC5URVhUVVJFX01BR19GSUxURVIsZ2wuTElORUFSKTsKICByZXR1cm4ge3QsdzppbWcubmF0dXJhbFdpZHRoLGg6aW1nLm5hdHVyYWxIZWlnaHR9Owp9CmZ1bmN0aW9uIGxvYWRJbWcoc3JjKXtyZXR1cm4gbmV3IFByb21pc2UoKHJlcyxyZWopPT57Y29uc3QgaT1uZXcgSW1hZ2UoKTtpLmRlY29kaW5nPSdhc3luYyc7aS5vbmxvYWQ9KCk9PnJlcyhpKTtpLm9uZXJyb3I9cmVqO2kuc3JjPXNyY30pfQoKLyogRmFsbGJhY2sgb2huZSBXZWJHTDogd2VpY2hlcyBDU1MtQ3Jvc3NmYWRlICovCmNvbnN0IGZiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYWxsYmFjaycpOwpmdW5jdGlvbiBpbml0RmFsbGJhY2soKXsKICBjYW52YXMuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgU0xJREVTLmZvckVhY2gocz0+e2NvbnN0IGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ZC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9J3VybCgnK3MuaW1nKycpJztmYi5hcHBlbmRDaGlsZChkKX0pOwp9CgpsZXQgY3VyPTAsbnh0PTAscHI9MCxzdGFydD1wZXJmb3JtYW5jZS5ub3coKSxzbGlkZVN0YXJ0PXBlcmZvcm1hbmNlLm5vdygpLHRpbWVyPW51bGwsYnVzeT1mYWxzZTsKY29uc3QgbW91c2U9e3g6LjUseTouNSx0eDouNSx0eTouNSxzOjB9Owpjb25zdCBkcm9wcz1uZXcgRmxvYXQzMkFycmF5KDQwKTtmb3IobGV0IGs9MDtrPDEwO2srKylkcm9wc1trKjQrMl09LTk5O2xldCBkcm9wSWR4PTAsaG92PTAsaG92VD0wLGxhc3REcm9wPXt4Oi0xLHk6LTF9OwpmdW5jdGlvbiBhZGREcm9wKHgseSxzdHIpe2Ryb3BzW2Ryb3BJZHgqNF09eDtkcm9wc1tkcm9wSWR4KjQrMV09eTtkcm9wc1tkcm9wSWR4KjQrMl09KHBlcmZvcm1hbmNlLm5vdygpLXN0YXJ0KS8xMDAwO2Ryb3BzW2Ryb3BJZHgqNCszXT1zdHI7ZHJvcElkeD0oZHJvcElkeCsxKSUxMH0KZnVuY3Rpb24gcmVzaXplKCl7CiAgaWYoIWdsT0spIHJldHVybjsKICBjb25zdCBkcHI9TWF0aC5taW4oZGV2aWNlUGl4ZWxSYXRpbyxpbm5lcldpZHRoPDgwMD8xOjEuMjUpOwogIGNhbnZhcy53aWR0aD1jYW52YXMuY2xpZW50V2lkdGgqZHByO2NhbnZhcy5oZWlnaHQ9Y2FudmFzLmNsaWVudEhlaWdodCpkcHI7CiAgZ2wudmlld3BvcnQoMCwwLGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KTsKfQpsZXQgaGVyb1Zpc2libGU9dHJ1ZTsKZnVuY3Rpb24gcmVuZGVyKG5vdyl7CiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7CiAgaWYoIWdsT0t8fCFoZXJvVmlzaWJsZSkgcmV0dXJuOwogIGNvbnN0IHQ9KG5vdy1zdGFydCkvMTAwMDsKICBtb3VzZS54Kz0obW91c2UudHgtbW91c2UueCkqLjA4O21vdXNlLnkrPShtb3VzZS50eS1tb3VzZS55KSouMDg7bW91c2Uucyo9Ljk2NTtob3YrPShob3ZULWhvdikqLjA3OwogIGNvbnN0IGE9dGV4c1tjdXJdLGI9dGV4c1tueHRdO2lmKCFhfHwhYikgcmV0dXJuOwogIGNvbnN0IGFnZT0obm93LXNsaWRlU3RhcnQpLzEwMDA7CiAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCk7Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCxhLnQpOwogIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTEpO2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsYi50KTsKICBnbC51bmlmb3JtMmYodW5pLnJlcyxjYW52YXMud2lkdGgsY2FudmFzLmhlaWdodCk7CiAgZ2wudW5pZm9ybTJmKHVuaS5pcjAsYS53LGEuaCk7Z2wudW5pZm9ybTJmKHVuaS5pcjEsYi53LGIuaCk7CiAgZ2wudW5pZm9ybTJmKHVuaS5tb3VzZSxtb3VzZS54LG1vdXNlLnkpOwogIGdsLnVuaWZvcm0xZih1bmkucHIscHIpO2dsLnVuaWZvcm0xZih1bmkudGltZSx0KTtnbC51bmlmb3JtMWYodW5pLm1zdHIscmVkdWNlPzA6TWF0aC5taW4obW91c2UucywxKSk7CiAgZ2wudW5pZm9ybTFmKHVuaS56MCwuMDgtTWF0aC5taW4oYWdlLzksMSkqLjA2KTtnbC51bmlmb3JtMWYodW5pLnoxLC4wOCk7Z2wudW5pZm9ybTFmKHVuaS5ob3YscmVkdWNlPzA6aG92KTtnbC51bmlmb3JtNGZ2KHVuaS5kcm9wcyxkcm9wcyk7CiAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRV9TVFJJUCwwLDQpOwp9CmZ1bmN0aW9uIGFuaW1hdGVCYXIoaSl7CiAgZG90QmFycy5mb3JFYWNoKChiLGspPT57Z3NhcC5raWxsVHdlZW5zT2YoYik7Z3NhcC5zZXQoYix7c2NhbGVYOms8aT8xOjB9KX0pOwogIGdzYXAuZnJvbVRvKGRvdEJhcnNbaV0se3NjYWxlWDowfSx7c2NhbGVYOjEsZHVyYXRpb246RFVSLzEwMDAsZWFzZTonbm9uZSd9KTsKfQpmdW5jdGlvbiBnbyhpKXsKICBpZihidXN5fHxpPT09Y3VyKSByZXR1cm47CiAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKICBzZXRXb3JkKFNMSURFU1tpXS53b3JkKTtwbGFjZS50ZXh0Q29udGVudD1TTElERVNbaV0ucGxhY2U7YW5pbWF0ZUJhcihpKTsKICBpZihnbE9LKXsKICAgIGJ1c3k9dHJ1ZTtueHQ9aTtwcj0wOwogICAgY29uc3Qgbz17cDowfTsKICAgIGdzYXAudG8obyx7cDoxLGR1cmF0aW9uOnJlZHVjZT8uMDE6Mi4yLGVhc2U6J3Bvd2VyMi5pbk91dCcsb25VcGRhdGU6KCk9PnByPW8ucCxvbkNvbXBsZXRlOigpPT57Y3VyPWk7bnh0PWk7cHI9MDtzbGlkZVN0YXJ0PXBlcmZvcm1hbmNlLm5vdygpO2J1c3k9ZmFsc2U7fX0pOwogIH1lbHNlewogICAgWy4uLmZiLmNoaWxkcmVuXS5mb3JFYWNoKChkLGspPT5kLmNsYXNzTGlzdC50b2dnbGUoJ29uJyxrPT09aSkpO2N1cj1pOwogIH0KICB0aW1lcj1zZXRUaW1lb3V0KCgpPT5nbygoaSsxKSVTTElERVMubGVuZ3RoKSxEVVIpOwp9CmNvbnN0IHRleExvYWRpbmc9e307CmZ1bmN0aW9uIGVuc3VyZVRleChpKXtpZighZ2xPS3x8dGV4c1tpXXx8dGV4TG9hZGluZ1tpXSlyZXR1cm47dGV4TG9hZGluZ1tpXT0xO2xvYWRJbWcoU0xJREVTW2ldLmltZykudGhlbihpbT0+e3RleHNbaV09bWFrZVRleChpbSl9KS5jYXRjaCgoKT0+e3RleExvYWRpbmdbaV09MH0pfQphc3luYyBmdW5jdGlvbiBzdGFydEhlcm8oKXsKICBnbE9LPWluaXRHTCgpOwogIGlmKGdsT0spewogICAgdHJ5ewogICAgICBjb25zdCBwb3N0ZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bvc3RlcicpOwogICAgICBjb25zdCBmaXJzdD0ocG9zdGVyLmNvbXBsZXRlJiZwb3N0ZXIubmF0dXJhbFdpZHRoKT9wb3N0ZXI6YXdhaXQgbG9hZEltZyhwb3N0ZXIuY3VycmVudFNyY3x8U0xJREVTWzBdLmltZyk7CiAgICAgIHRleHNbMF09bWFrZVRleChmaXJzdCk7cmVzaXplKCk7Y2FudmFzLmNsYXNzTGlzdC5hZGQoJ29uJyk7CiAgICAgIHNldFRpbWVvdXQoKCk9PmVuc3VyZVRleCgxKSwzNTAwKTsKICAgIH1jYXRjaChlKXtjb25zb2xlLndhcm4oJ1RleHR1cmUgZmFsbGJhY2snLGUpO2dsT0s9ZmFsc2V9CiAgfQogIGlmKCFnbE9LKSBpbml0RmFsbGJhY2soKTsKICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTsKICByZXR1cm4gdHJ1ZTsKfQovLyBOw6RjaHN0ZSBTbGlkZSBlcnN0LCB3ZW5uIGRpZSBUZXh0dXIgZ2VsYWRlbiBpc3QKY29uc3QgX2dvPWdvO2dvPWZ1bmN0aW9uKGkpe2lmKGdsT0smJiF0ZXhzW2ldKXtlbnN1cmVUZXgoaSk7Y2xlYXJUaW1lb3V0KHRpbWVyKTt0aW1lcj1zZXRUaW1lb3V0KCgpPT5nbyhpKSw0MDApO3JldHVybn1fZ28oaSk7aWYoZ2xPSylzZXRUaW1lb3V0KCgpPT5lbnN1cmVUZXgoKGkrMSklU0xJREVTLmxlbmd0aCksMjYwMCl9OwoKYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyxyZXNpemUpOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVybycpLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJyxlPT57CiAgY29uc3Qgcj1jYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgY29uc3Qgbng9KGUuY2xpZW50WC1yLmxlZnQpL3Iud2lkdGgsbnk9MS0oZS5jbGllbnRZLXIudG9wKS9yLmhlaWdodDsKICBjb25zdCB2PU1hdGguaHlwb3QobngtbW91c2UudHgsbnktbW91c2UudHkpOwogIG1vdXNlLnR4PW54O21vdXNlLnR5PW55O21vdXNlLnM9TWF0aC5taW4obW91c2Uucyt2KjYsMSk7CiAgaWYoZS5wb2ludGVyVHlwZT09PSdtb3VzZScpaG92VD0xOwogIGlmKE1hdGguaHlwb3QobngtbGFzdERyb3AueCwobnktbGFzdERyb3AueSkqci5oZWlnaHQvci53aWR0aCk+LjA1NSl7YWRkRHJvcChueCxueSxlLnBvaW50ZXJUeXBlPT09J21vdXNlJz8uNTU6LjkpO2xhc3REcm9wPXt4Om54LHk6bnl9fQp9KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlcm8nKS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCgpPT57aG92VD0wfSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZXJvJykuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLGU9PnsKICBpZihlLnRhcmdldC5jbG9zZXN0KCdhLGJ1dHRvbicpKXJldHVybjsKICBjb25zdCByPWNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCBueD0oZS5jbGllbnRYLXIubGVmdCkvci53aWR0aCxueT0xLShlLmNsaWVudFktci50b3ApL3IuaGVpZ2h0OwogIGFkZERyb3AobngsbnksMS42KTtzZXRUaW1lb3V0KCgpPT5hZGREcm9wKG54LG55LDEpLDE4MCk7Cn0pOwpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZXM9PntoZXJvVmlzaWJsZT1lc1swXS5pc0ludGVyc2VjdGluZ30pLm9ic2VydmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlcm8nKSk7CgovKiAtLS0tLS0tLS0tIE9obmUgR1NBUDogYWxsZXMgc2ljaHRiYXIgbGFzc2VuIC0tLS0tLS0tLS0gKi8KaWYoIXdpbmRvdy5nc2FwKXtzdGFydEhlcm8oKTtyZXR1cm59CmdzYXAucmVnaXN0ZXJQbHVnaW4oU2Nyb2xsVHJpZ2dlcik7CgovKiAtLS0tLS0tLS0tIFNtb290aCBzY3JvbGwgLS0tLS0tLS0tLSAqLwpsZXQgbGVuaXM9bnVsbDsKaWYoIXJlZHVjZSYmd2luZG93LkxlbmlzKXsKICBsZW5pcz1uZXcgTGVuaXMoe2xlcnA6LjA4NSxzbW9vdGhXaGVlbDp0cnVlfSk7CiAgbGVuaXMub24oJ3Njcm9sbCcsU2Nyb2xsVHJpZ2dlci51cGRhdGUpOwogIGdzYXAudGlja2VyLmFkZCh0PT5sZW5pcy5yYWYodCoxMDAwKSk7CiAgZ3NhcC50aWNrZXIubGFnU21vb3RoaW5nKDApOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl49IiMiXScpLmZvckVhY2goYT0+YS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZT0+e2NvbnN0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihhLmdldEF0dHJpYnV0ZSgnaHJlZicpKTtpZih0KXtlLnByZXZlbnREZWZhdWx0KCk7bGVuaXMuc2Nyb2xsVG8odCx7ZHVyYXRpb246MS42fSl9fSkpOwp9CgovKiAtLS0tLS0tLS0tIE5hdiAtLS0tLS0tLS0tICovCmNvbnN0IG5hdj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2Jyk7bGV0IGxhc3RZPTA7ClNjcm9sbFRyaWdnZXIuY3JlYXRlKHtzdGFydDowLGVuZDonbWF4JyxvblVwZGF0ZTpzPT57CiAgY29uc3QgeT1zLnNjcm9sbCgpO25hdi5jbGFzc0xpc3QudG9nZ2xlKCdzY3JvbGxlZCcseT40MCk7CiAgbmF2LmNsYXNzTGlzdC50b2dnbGUoJ2hpZGUnLHk+bGFzdFkmJnk+aW5uZXJIZWlnaHQqLjgmJiFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbWVudS1vcGVuJykpO2xhc3RZPXk7Cn19KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1cmdlcicpLm9uY2xpY2s9KCk9Pntkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21lbnUtb3BlbicpO2xlbmlzJiYoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ21lbnUtb3BlbicpP2xlbmlzLnN0b3AoKTpsZW5pcy5zdGFydCgpKX07CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNtbWVudSBhJykuZm9yRWFjaChhPT5hLm9uY2xpY2s9KCk9PmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbWVudS1vcGVuJykpOwoKLyogLS0tLS0tLS0tLSBDdXJzb3IgKyBtYWduZXRpc2NoZSBCdXR0b25zIC0tLS0tLS0tLS0gKi8KaWYoZmluZSl7CiAgY29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3Vyc29yJyk7CiAgY29uc3QgcXg9Z3NhcC5xdWlja1RvKGMsJ3gnLHtkdXJhdGlvbjouNDUsZWFzZToncG93ZXIzJ30pLHF5PWdzYXAucXVpY2tUbyhjLCd5Jyx7ZHVyYXRpb246LjQ1LGVhc2U6J3Bvd2VyMyd9KTsKICBhZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsZT0+e3F4KGUuY2xpZW50WCk7cXkoZS5jbGllbnRZKX0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EsYnV0dG9uJykuZm9yRWFjaChlbD0+e2VsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJlbnRlcicsKCk9PmMuY2xhc3NMaXN0LmFkZCgnYmlnJykpO2VsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsKCk9PmMuY2xhc3NMaXN0LnJlbW92ZSgnYmlnJykpfSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hZ25ldGljJykuZm9yRWFjaChlbD0+ewogICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLGU9Pntjb25zdCByPWVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2dzYXAudG8oZWwse3g6KGUuY2xpZW50WC1yLmxlZnQtci53aWR0aC8yKSouMyx5OihlLmNsaWVudFktci50b3Atci5oZWlnaHQvMikqLjQsZHVyYXRpb246LjYsZWFzZToncG93ZXIzJ30pfSk7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCgpPT5nc2FwLnRvKGVsLHt4OjAseTowLGR1cmF0aW9uOi45LGVhc2U6J2VsYXN0aWMub3V0KDEsLjQpJ30pKTsKICB9KTsKICAvKiAzRC1LaXBwZW4gZGVyIFByb2R1a3RrYXJ0ZW4gKi8KICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FyZCcpLmZvckVhY2goY2FyZD0+ewogICAgY29uc3QgaW5uPWNhcmQucXVlcnlTZWxlY3RvcignLmluJyk7CiAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJyxlPT57Y29uc3Qgcj1jYXJkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2NvbnN0IHg9KGUuY2xpZW50WC1yLmxlZnQpL3Iud2lkdGgtLjUseT0oZS5jbGllbnRZLXIudG9wKS9yLmhlaWdodC0uNTtpbm4uc3R5bGUudHJhbnNmb3JtPSdyb3RhdGVZKCcrKHgqMTApKydkZWcpIHJvdGF0ZVgoJysoLXkqMTApKydkZWcpIHRyYW5zbGF0ZVooMCknfSk7CiAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsKCk9Pmlubi5zdHlsZS50cmFuc2Zvcm09JycpOwogIH0pOwp9CgovKiAtLS0tLS0tLS0tIFRleHQgaW4gWmVpbGVuL1fDtnJ0ZXIgc3BsaXR0ZW4gLS0tLS0tLS0tLSAqLwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3BsaXQnKS5mb3JFYWNoKGVsPT57CiAgY29uc3QgaHRtbD1lbC5pbm5lckhUTUw7CiAgY29uc3Qgd29yZHM9W107CiAgZWwuY2hpbGROb2Rlcy5mb3JFYWNoKG49PnsKICAgIGlmKG4ubm9kZVR5cGU9PT0zKXtuLnRleHRDb250ZW50LnNwbGl0KC8oXHMrKS8pLmZvckVhY2godz0+e2lmKHcudHJpbSgpKXdvcmRzLnB1c2godyl9KX0KICAgIGVsc2V7bi50ZXh0Q29udGVudC5zcGxpdCgvXHMrLykuZm9yRWFjaCh3PT57aWYodyl3b3Jkcy5wdXNoKCc8JytuLnRhZ05hbWUudG9Mb3dlckNhc2UoKSsnPicrdysnPC8nK24udGFnTmFtZS50b0xvd2VyQ2FzZSgpKyc+Jyl9KX0KICB9KTsKICBlbC5pbm5lckhUTUw9d29yZHMubWFwKHc9Pic8c3BhbiBjbGFzcz0ibG4iIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jayI+PHNwYW4+Jyt3Kyc8L3NwYW4+PC9zcGFuPicpLmpvaW4oJyAnKTsKICBnc2FwLmZyb20oZWwucXVlcnlTZWxlY3RvckFsbCgnLmxuPnNwYW4nKSx7eVBlcmNlbnQ6MTE1LHJvdGF0ZTozLGR1cmF0aW9uOjEuMixlYXNlOidleHBvLm91dCcsc3RhZ2dlcjouMDYsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjplbCxzdGFydDondG9wIDg1JSd9fSk7Cn0pOwpnc2FwLnV0aWxzLnRvQXJyYXkoJ1tkYXRhLXJldmVhbF0nKS5mb3JFYWNoKGVsPT5nc2FwLmZyb20oZWwse3k6NDAsb3BhY2l0eTowLGR1cmF0aW9uOjEuMixlYXNlOidleHBvLm91dCcsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjplbCxzdGFydDondG9wIDg4JSd9fSkpOwoKLyogLS0tLS0tLS0tLSBIZXJvLUludHJvIChvaG5lIExhZGViaWxkc2NoaXJtOiBCaWxkIHVuZCBUZXh0IHNpbmQgc29mb3J0IGRhKSAtLS0tLS0tLS0tICovCnN0YXJ0SGVybygpLnRoZW4oKCk9PntpZighZ2xPSykgZmIuY2hpbGRyZW5bMF0uY2xhc3NMaXN0LmFkZCgnb24nKX0pOwphbmltYXRlQmFyKDApOwppZighcmVkdWNlKXsKICBnc2FwLmZyb20ocm90LnF1ZXJ5U2VsZWN0b3JBbGwoJy53IGknKSx7eVBlcmNlbnQ6MTAwLGZpbHRlcjonYmx1cig2cHgpJyxkdXJhdGlvbjoxLjEsZWFzZTonZXhwby5vdXQnLHN0YWdnZXI6LjAzNSxkZWxheTouMTV9KTsKICBnc2FwLmZyb20oJy5oZXJvIC50bycse3lQZXJjZW50OjMwLGR1cmF0aW9uOjEuMixlYXNlOidleHBvLm91dCd9KTsKICBnc2FwLmZyb20oJy5oZXJvIC5idG4sIC5oZXJvLW1ldGEnLHt5OjI0LG9wYWNpdHk6MCxkdXJhdGlvbjoxLjIsZWFzZTonZXhwby5vdXQnLHN0YWdnZXI6LjEyLGRlbGF5Oi4zfSk7Cn0KdGltZXI9c2V0VGltZW91dCgoKT0+Z28oMSksRFVSKTsKLy8gSGVybyBiZWltIFJhdXNzY3JvbGxlbiBzYW5mdCBhYnRhdWNoZW4KZ3NhcC50bygnLmhlcm8taW5uZXInLHt5UGVyY2VudDotMTgsb3BhY2l0eTowLGVhc2U6J25vbmUnLHNjcm9sbFRyaWdnZXI6e3RyaWdnZXI6JyNoZXJvJyxzdGFydDondG9wIHRvcCcsZW5kOidib3R0b20gdG9wJyxzY3J1Yjp0cnVlfX0pOwoKLyogLS0tLS0tLS0tLSBWaXZpIG8gc29wcmF2dml2aSAtLS0tLS0tLS0tICovCmlmKCFyZWR1Y2UpewogIGNvbnN0IHRsPWdzYXAudGltZWxpbmUoe3Njcm9sbFRyaWdnZXI6e3RyaWdnZXI6JyN2aXZpJyxzdGFydDondG9wIHRvcCcsZW5kOidib3R0b20gYm90dG9tJyxzY3J1YjoxfX0pOwogIGdzYXAuc2V0KCcudml2aSAudDIsIC52aXZpIC50Mycse29wYWNpdHk6MH0pOwogIHRsLmZyb21UbygnLnZpdmkgLnIxJyx7eFBlcmNlbnQ6MH0se3hQZXJjZW50Oi0zMCxlYXNlOidub25lJyxkdXJhdGlvbjoxfSwwKQogICAgLmZyb21UbygnLnZpdmkgLnIyJyx7eFBlcmNlbnQ6LTMwfSx7eFBlcmNlbnQ6MCxlYXNlOidub25lJyxkdXJhdGlvbjoxfSwwKQogICAgLmZyb21UbygnLnZpdmkgLnIzJyx7eFBlcmNlbnQ6LTV9LHt4UGVyY2VudDotMzUsZWFzZTonbm9uZScsZHVyYXRpb246MX0sMCkKICAgIC50bygnLnZpdmkgLnQxJyx7b3BhY2l0eTowLHk6LTQwLGZpbHRlcjonYmx1cig2cHgpJyxkdXJhdGlvbjouMTJ9LC4xNCkKICAgIC5mcm9tVG8oJy52aXZpIC50Micse29wYWNpdHk6MCx5OjQwfSx7b3BhY2l0eToxLHk6MCxkdXJhdGlvbjouMTJ9LC4yKQogICAgLnRvKCcudml2aSAudDInLHtvcGFjaXR5OjAseTotNDAsZmlsdGVyOidibHVyKDZweCknLGR1cmF0aW9uOi4xfSwuNDIpCiAgICAudG8oJy52aXZpIC5iZy5jb2xvcicseyctLXInOicxMzUlJyxlYXNlOidwb3dlcjIuaW4nLGR1cmF0aW9uOi4zNn0sLjQpCiAgICAudG8oJy52aXZpIC5tYXJxdWVlJyx7b3BhY2l0eTowLGR1cmF0aW9uOi4yfSwuNDUpCiAgICAuZnJvbVRvKCcudml2aSAuYmcnLHtzY2FsZToxLjEyfSx7c2NhbGU6MSxlYXNlOidub25lJyxkdXJhdGlvbjouNn0sLjQpCiAgICAuZnJvbVRvKCcudml2aSAudDMnLHtvcGFjaXR5OjAseTo1MH0se29wYWNpdHk6MSx5OjAsZHVyYXRpb246LjE0fSwuNzIpCiAgICAudG8oe30se2R1cmF0aW9uOi4xNH0pOwp9ZWxzZXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudml2aSAuYmcuY29sb3InKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yJywnMTUwJScpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52aXZpIC50MSwudml2aSAudDIsLnZpdmkgLm1hcnF1ZWUnKS5mb3JFYWNoKGU9PmUuc3R5bGUuZGlzcGxheT0nbm9uZScpfQoKLyogLS0tLS0tLS0tLSBLcmVpc2xhdWYgLS0tLS0tLS0tLSAqLwpjb25zdCBzdGVwcz1bLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN0ZXAnKV0saW1ncz1bLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJpbmcgLndpbmRvdyBpbWcnKV0sbm9kZXM9Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yaW5nIC5ub2RlJyldLGxibHM9Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yaW5nIC5sYmwnKV07CmNvbnN0IHJpbmdQcm9nPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyaW5nUHJvZycpLHNlZWQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlZWQnKTsKbGV0IGFjdGl2ZT0wOwpmdW5jdGlvbiBzZXRTdGVwKGkpe2lmKGk9PT1hY3RpdmUpcmV0dXJuO2FjdGl2ZT1pO1tzdGVwcyxpbWdzLGxibHNdLmZvckVhY2goYXJyPT5hcnIuZm9yRWFjaCgoZWwsayk9PmVsLmNsYXNzTGlzdC50b2dnbGUoJ29uJyxrPT09aSkpKTtub2Rlcy5mb3JFYWNoKChuLGspPT5uLmNsYXNzTGlzdC50b2dnbGUoJ29uJyxrPD1pKSl9ClNjcm9sbFRyaWdnZXIuY3JlYXRlKHt0cmlnZ2VyOicjY2ljbG8nLHN0YXJ0Oid0b3AgdG9wJyxlbmQ6J2JvdHRvbSBib3R0b20nLHNjcnViOnRydWUsb25VcGRhdGU6cz0+ewogIGNvbnN0IHA9cy5wcm9ncmVzczsKICByaW5nUHJvZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0PTE0ODMqKDEtcCk7CiAgY29uc3QgYW5nPSgtOTArcCozNjApKk1hdGguUEkvMTgwOwogIHNlZWQuc2V0QXR0cmlidXRlKCdjeCcsMjUwKzIzNipNYXRoLmNvcyhhbmcpKTtzZWVkLnNldEF0dHJpYnV0ZSgnY3knLDI1MCsyMzYqTWF0aC5zaW4oYW5nKSk7CiAgc2V0U3RlcChwPC4zND8wOnA8LjY3PzE6Mik7Cn19KTsKZ3NhcC5mcm9tKCcjcmluZycse3NjYWxlOi44NSxvcGFjaXR5OjAscm90YXRlOi0yMCxkdXJhdGlvbjoxLjYsZWFzZTonZXhwby5vdXQnLHNjcm9sbFRyaWdnZXI6e3RyaWdnZXI6JyNjaWNsbycsc3RhcnQ6J3RvcCA3MCUnfX0pOwoKLyogLS0tLS0tLS0tLSBJbXBhdHRvIC0tLS0tLS0tLS0gKi8KU2Nyb2xsVHJpZ2dlci5jcmVhdGUoe3RyaWdnZXI6JyNkaWNvbm8nLHN0YXJ0Oid0b3AgODAlJyxvbmNlOnRydWUsb25FbnRlcjooKT0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpY29ubycpLmNsYXNzTGlzdC5hZGQoJ29uJyl9KTsKZ3NhcC50bygnLmltcGF0dG8gLmJnJyx7eVBlcmNlbnQ6MTIsZWFzZTonbm9uZScsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjonLmltcGF0dG8nLHN0YXJ0Oid0b3AgYm90dG9tJyxlbmQ6J2JvdHRvbSB0b3AnLHNjcnViOnRydWV9fSk7CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sZWFmbGluZSBwYXRoJykuZm9yRWFjaChwPT57Y29uc3QgTD1wLmdldFRvdGFsTGVuZ3RoKCk7cC5zdHlsZS5zdHJva2VEYXNoYXJyYXk9TDtwLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQ9TH0pOwpnc2FwLnRvKCcubGVhZmxpbmUgcGF0aCcse3N0cm9rZURhc2hvZmZzZXQ6MCxkdXJhdGlvbjoyLjQsZWFzZToncG93ZXIyLmluT3V0JyxzdGFnZ2VyOi4yNSxzY3JvbGxUcmlnZ2VyOnt0cmlnZ2VyOicuaW1wYXR0bycsc3RhcnQ6J3RvcCA2MCUnfX0pOwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jb3VudF0nKS5mb3JFYWNoKGVsPT57CiAgY29uc3QgZW5kPStlbC5kYXRhc2V0LmNvdW50LHN1Zj1lbC5kYXRhc2V0LnN1ZmZpeHx8Jycsbz17djowfTsKICBTY3JvbGxUcmlnZ2VyLmNyZWF0ZSh7dHJpZ2dlcjplbCxzdGFydDondG9wIDg1JScsb25jZTp0cnVlLG9uRW50ZXI6KCk9PmdzYXAudG8obyx7djplbmQsZHVyYXRpb246Mi40LGVhc2U6J3Bvd2VyMy5vdXQnLG9uVXBkYXRlOigpPT5lbC50ZXh0Q29udGVudD1NYXRoLnJvdW5kKG8udikudG9Mb2NhbGVTdHJpbmcoJ2l0LUlUJykrc3VmfSl9KTsKfSk7CgovKiAtLS0tLS0tLS0tIFNob3A6IGhvcml6b250YWxlciBQZmFkIC0tLS0tLS0tLS0gKi8KY29uc3QgbW09Z3NhcC5tYXRjaE1lZGlhKCk7Cm1tLmFkZCgnKG1pbi13aWR0aDogODAxcHgpJywoKT0+ewogIGNvbnN0IHRyYWNrPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpOwogIGNvbnN0IGRpc3Q9KCk9PnRyYWNrLnNjcm9sbFdpZHRoLWlubmVyV2lkdGg7CiAgZ3NhcC50byh0cmFjayx7eDooKT0+LWRpc3QoKSxlYXNlOidub25lJyxzY3JvbGxUcmlnZ2VyOnt0cmlnZ2VyOicjdHJhY2tXcmFwJyxzdGFydDonY2VudGVyIGNlbnRlcicsZW5kOigpPT4nKz0nK2Rpc3QoKSxwaW46JyNzaG9wJyxwaW5TcGFjaW5nOnRydWUsc2NydWI6MSxpbnZhbGlkYXRlT25SZWZyZXNoOnRydWUsCiAgICBvblVwZGF0ZTpzPT5nc2FwLnNldCgnI3Nob3BQcm9nJyx7c2NhbGVYOnMucHJvZ3Jlc3N9KX19KTsKICBnc2FwLmZyb20oJy50cmFjayAuY2FyZCcse3k6ODAsb3BhY2l0eTowLGR1cmF0aW9uOjEuMixlYXNlOidleHBvLm91dCcsc3RhZ2dlcjouMDgsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjonI3RyYWNrV3JhcCcsc3RhcnQ6J3RvcCA4NSUnfX0pOwp9KTsKCi8qIC0tLS0tLS0tLS0gRXZlbnRpOiBQYXJhbGxheCBpbiBkZW4gQmlsZGVybiAtLS0tLS0tLS0tICovCmdzYXAudXRpbHMudG9BcnJheSgnLmV2IC5pbWcnKS5mb3JFYWNoKGVsPT5nc2FwLmZyb21UbyhlbCx7eVBlcmNlbnQ6LTh9LHt5UGVyY2VudDo4LGVhc2U6J25vbmUnLHNjcm9sbFRyaWdnZXI6e3RyaWdnZXI6ZWwucGFyZW50RWxlbWVudCxzdGFydDondG9wIGJvdHRvbScsZW5kOidib3R0b20gdG9wJyxzY3J1Yjp0cnVlfX0pKTsKZ3NhcC5mcm9tKCcuZXYnLHt5OjcwLG9wYWNpdHk6MCxkdXJhdGlvbjoxLjMsZWFzZTonZXhwby5vdXQnLHN0YWdnZXI6LjEyLHNjcm9sbFRyaWdnZXI6e3RyaWdnZXI6Jy5ldi1ncmlkJyxzdGFydDondG9wIDgwJSd9fSk7CgovKiAtLS0tLS0tLS0tIE1hbmlmZXN0bzogV8O2cnRlciBsZXVjaHRlbiBiZWltIFNjcm9sbGVuIGF1ZiAtLS0tLS0tLS0tICovCmNvbnN0IGJpZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmlnVGV4dCcpOwooZnVuY3Rpb24gd3JhcFdvcmRzKG5vZGUpewogIFsuLi5ub2RlLmNoaWxkTm9kZXNdLmZvckVhY2gobj0+ewogICAgaWYobi5ub2RlVHlwZT09PTMpe2NvbnN0IGZyYWc9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO24udGV4dENvbnRlbnQuc3BsaXQoLyhccyspLykuZm9yRWFjaCh3PT57aWYoIXcpcmV0dXJuO2lmKC9eXHMrJC8udGVzdCh3KSl7ZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3KSl9ZWxzZXtjb25zdCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtzLmNsYXNzTmFtZT0nd2QnO3MudGV4dENvbnRlbnQ9dztmcmFnLmFwcGVuZENoaWxkKHMpfX0pO24ucmVwbGFjZVdpdGgoZnJhZyl9CiAgICBlbHNlIGlmKG4ubm9kZVR5cGU9PT0xKXtuLmNsYXNzTGlzdC5hZGQoJ3dkJyl9CiAgfSk7Cn0pKGJpZyk7CmdzYXAudG8oYmlnLnF1ZXJ5U2VsZWN0b3JBbGwoJy53ZCcpLHtvcGFjaXR5OjEsc3RhZ2dlcjouMSxlYXNlOidub25lJyxzY3JvbGxUcmlnZ2VyOnt0cmlnZ2VyOmJpZyxzdGFydDondG9wIDc4JScsZW5kOidib3R0b20gNDUlJyxzY3J1Yjp0cnVlfX0pOwpnc2FwLnRvKCcjc2VhbCcse3JvdGF0ZTozNjAsZWFzZTonbm9uZScsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjonLm1hbmlmZXN0bycsc3RhcnQ6J3RvcCBib3R0b20nLGVuZDonYm90dG9tIHRvcCcsc2NydWI6dHJ1ZX19KTsKCi8qIC0tLS0tLS0tLS0gRm9vdGVyLVdlbGxlbiAtLS0tLS0tLS0tICovCmNvbnN0IHd2PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3YXZlcyBwYXRoJyk7bGV0IHdhdmVzT249ZmFsc2U7Cm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlcz0+e3dhdmVzT249ZXNbMF0uaXNJbnRlcnNlY3Rpbmd9KS5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3YXZlcycpKTsKZnVuY3Rpb24gd2F2ZXModCxmb3JjZSl7CiAgaWYoIXdhdmVzT24mJiFmb3JjZSkgcmV0dXJuOwogIHd2LmZvckVhY2goKHAsayk9PnsKICAgIGNvbnN0IGJhc2U9NjArayo0MixhbXA9MTQtayozLHNwPS4wMDA2K2sqLjAwMDI1OwogICAgbGV0IGQ9J00wIDE5MCBMMCAnK2Jhc2U7CiAgICBmb3IobGV0IHg9MDt4PD0xNDQwO3grPTQwKXtjb25zdCB5PWJhc2UrTWF0aC5zaW4oeCouMDA0K3Qqc3AraykqYW1wK01hdGguc2luKHgqLjAxMS10KnNwKjEuNikqYW1wKi40NTtkKz0nIEwnK3grJyAnK3kudG9GaXhlZCgxKX0KICAgIHAuc2V0QXR0cmlidXRlKCdkJyxkKycgTDE0NDAgMTkwIFonKTsKICB9KTsKfQp3YXZlcygwLHRydWUpOwpnc2FwLnRpY2tlci5hZGQoKCk9PndhdmVzKHBlcmZvcm1hbmNlLm5vdygpKSk7CgphZGRFdmVudExpc3RlbmVyKCdsb2FkJywoKT0+U2Nyb2xsVHJpZ2dlci5yZWZyZXNoKCkpOwp9KSgpOwo=<\/script>\n<script type=\"text\/atn-b64\">Ci8qIC0tLS0tLS0tLS0gQ0xFQU5VUDogUGxhc3RpayBhbSBTdHJhbmQgZWluc2FtbWVsbiAtLS0tLS0tLS0tICovCihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CmNvbnN0IGN2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZWFjaCcpO2lmKCFjdikgcmV0dXJuOwpjb25zdCBjdHg9Y3YuZ2V0Q29udGV4dCgnMmQnKTsKY29uc3Qgd3JhcD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVhY2hXcmFwJyk7CmNvbnN0IGVsQ291bnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JDb3VudCcpLGVsVG90YWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JUb3RhbCcpLGVsQmFyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiQmFyJyk7CmNvbnN0IGVsSGludD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYkhpbnQnKSxlbEZhY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JGYWN0JyksZWxEb25lPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiRG9uZScpLGVsR3JhbXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JHcmFtcycpOwpsZXQgVz0wLEg9MCxkcHI9MSxzYW5kQ3Y9bnVsbCxzZWFZPTAsdmlzaWJsZT1mYWxzZSxsYXN0PXBlcmZvcm1hbmNlLm5vdygpLFQ9MDsKY29uc3QgYmFza2V0PXt4OjAseTowLHc6MCxoOjAsYjowfTsKbGV0IGl0ZW1zPVtdLGRyYWc9bnVsbCxjb2xsZWN0ZWQ9MCxncmFtcz0wLFRPVEFMPTAsZmFjdFRpbWVyPW51bGwsc3RhcnRlZD1mYWxzZTsKY29uc3Qgcm5kPShhLGIpPT5hK01hdGgucmFuZG9tKCkqKGItYSk7CmNvbnN0IHBpY2s9YT0+YVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqYS5sZW5ndGgpXTsKCi8qIC0tLS0gUnVuZGVzIFJlY2h0ZWNrIC0tLS0gKi8KZnVuY3Rpb24gcnIoYyx4LHksdyxoLHIpe2MuYmVnaW5QYXRoKCk7Yy5tb3ZlVG8oeCtyLHkpO2MuYXJjVG8oeCt3LHkseCt3LHkraCxyKTtjLmFyY1RvKHgrdyx5K2gseCx5K2gscik7Yy5hcmNUbyh4LHkraCx4LHkscik7Yy5hcmNUbyh4LHkseCt3LHkscik7Yy5jbG9zZVBhdGgoKX0KCi8qIC0tLS0gRGllIEFiZsOkbGxlIC0tLS0gKi8KY29uc3QgVFlQRVM9ewogIGJvdHRsZTp7cjozNCxnOjI1LG5hbWU6TCgnQm90dGlnbGlhIGRpIHBsYXN0aWNhJywnUGxhc3RpYyBib3R0bGUnLCdQbGFzdGlrZmxhc2NoZScpLGZhY3Q6TCgnQ2kgbWV0dGUgY2lyY2EgNDUwIGFubmkgYSBkZWNvbXBvcnNpIOKAkyBlIG5vbiBzcGFyaXNjZSBtYWkgZGVsIHR1dHRvOiBkaXZlbnRhIG1pY3JvcGxhc3RpY2EuJywnSXQgdGFrZXMgYXJvdW5kIDQ1MCB5ZWFycyB0byBicmVhayBkb3duIOKAkyBhbmQgbmV2ZXIgZnVsbHkgZGlzYXBwZWFyczogaXQgdHVybnMgaW50byBtaWNyb3BsYXN0aWNzLicsJ1NpZSBicmF1Y2h0IHJ1bmQgNDUwIEphaHJlLCB1bSB6dSB6ZXJmYWxsZW4g4oCTIHVuZCB2ZXJzY2h3aW5kZXQgbmllIGdhbno6IFNpZSB3aXJkIHp1IE1pa3JvcGxhc3Rpay4nKSwKICAgIGRyYXcoYyxpdCl7CiAgICAgIGMuZmlsbFN0eWxlPSdyZ2JhKDE4NSwyMjIsMjM2LC42MiknO3JyKGMsLTMwLC0xMSw1MCwyMiw5KTtjLmZpbGwoKTsKICAgICAgYy5zdHJva2VTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuNjUpJztjLmxpbmVXaWR0aD0xLjI7Yy5zdHJva2UoKTsKICAgICAgYy5maWxsU3R5bGU9J3JnYmEoMTg1LDIyMiwyMzYsLjcpJztycihjLDE4LC02LDExLDEyLDMpO2MuZmlsbCgpOwogICAgICBjLmZpbGxTdHlsZT1pdC5jb2w7cnIoYywyOCwtNyw4LDE0LDIpO2MuZmlsbCgpOwogICAgICBjLmZpbGxTdHlsZT1pdC5jb2wyO2MuZmlsbFJlY3QoLTE0LC0xMSwyMCwyMik7CiAgICAgIGMuc3Ryb2tlU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjc1KSc7Yy5saW5lV2lkdGg9MjtjLmJlZ2luUGF0aCgpO2MubW92ZVRvKC0yNSwtNik7Yy5saW5lVG8oMTQsLTYpO2Muc3Ryb2tlKCk7CiAgICAgIGMuc3Ryb2tlU3R5bGU9J3JnYmEoNjAsMTEwLDEzMCwuMjUpJztjLmxpbmVXaWR0aD0xO2ZvcihsZXQgaT0tMjQ7aTwtMTQ7aSs9NCl7Yy5iZWdpblBhdGgoKTtjLm1vdmVUbyhpLC0xMCk7Yy5saW5lVG8oaSwxMCk7Yy5zdHJva2UoKX0KICAgIH19LAogIGNhcDp7cjoxNixnOjIsbmFtZTpMKCdUYXBwbyBkaSBwbGFzdGljYScsJ1BsYXN0aWMgYm90dGxlIGNhcCcsJ1BsYXN0aWtkZWNrZWwnKSxmYWN0OkwoJ1VjY2VsbGkgbWFyaW5pIGUgdGFydGFydWdoZSBsaSBzY2FtYmlhbm8gcGVyIGNpYm8uIFBpY2NvbGksIG1hIHRyYSBpIHJpZml1dGkgcGnDuSB0cm92YXRpIHN1bGxlIHNwaWFnZ2UuJywnU2VhYmlyZHMgYW5kIHR1cnRsZXMgbWlzdGFrZSB0aGVtIGZvciBmb29kLiBTbWFsbCwgYnV0IGFtb25nIHRoZSBtb3N0IGNvbW1vbiBpdGVtcyBmb3VuZCBvbiBiZWFjaGVzLicsJ1NlZXbDtmdlbCB1bmQgU2NoaWxka3LDtnRlbiBoYWx0ZW4gc2llIGbDvHIgRnV0dGVyLiBLbGVpbiwgYWJlciBlaW5lciBkZXIgaMOkdWZpZ3N0ZW4gRnVuZGUgYW4gU3Ryw6RuZGVuLicpLAogICAgZHJhdyhjLGl0KXsKICAgICAgYy5maWxsU3R5bGU9aXQuY29sO2MuYmVnaW5QYXRoKCk7Yy5hcmMoMCwwLDgsMCw3KTtjLmZpbGwoKTsKICAgICAgYy5zdHJva2VTdHlsZT0ncmdiYSgwLDAsMCwuMjIpJztjLmxpbmVXaWR0aD0xLjU7Yy5iZWdpblBhdGgoKTtjLmFyYygwLDAsNiwwLDcpO2Muc3Ryb2tlKCk7CiAgICAgIGMuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4zNSknO2MuYmVnaW5QYXRoKCk7Yy5hcmMoLTIuNSwtMi41LDIuNiwwLDcpO2MuZmlsbCgpOwogICAgfX0sCiAgYmFnOntyOjMwLGc6NyxuYW1lOkwoJ1NhY2NoZXR0byBkaSBwbGFzdGljYScsJ1BsYXN0aWMgYmFnJywnUGxhc3Rpa3TDvHRlJyksZmFjdDpMKCdVc2F0byBpbiBtZWRpYSAxMiBtaW51dGksIGluIG1hcmUgcHXDsiBkdXJhcmUgZGVjZW5uaS4gUGVyIHVuYSB0YXJ0YXJ1Z2Egc2VtYnJhIHVuYSBtZWR1c2EuJywnVXNlZCBmb3IgYWJvdXQgMTIgbWludXRlcyBvbiBhdmVyYWdlLCBpdCBjYW4gbGFzdCBmb3IgZGVjYWRlcyBpbiB0aGUgc2VhLiBUbyBhIHR1cnRsZSBpdCBsb29rcyBsaWtlIGEgamVsbHlmaXNoLicsJ0ltIFNjaG5pdHQgMTIgTWludXRlbiBiZW51dHp0LCBpbSBNZWVyIGphaHJ6ZWhudGVsYW5nIHZvcmhhbmRlbi4gRsO8ciBlaW5lIFNjaGlsZGtyw7Z0ZSBzaWVodCBzaWUgYXVzIHdpZSBlaW5lIFF1YWxsZS4nKSwKICAgIGRyYXcoYyxpdCl7CiAgICAgIGNvbnN0IHA9aXQuc2hhcGU7Yy5maWxsU3R5bGU9J3JnYmEoMjQ3LDI0NywyNDMsLjg2KSc7Yy5iZWdpblBhdGgoKTsKICAgICAgcC5mb3JFYWNoKChyLGkpPT57Y29uc3QgYT1pL3AubGVuZ3RoKk1hdGguUEkqMjtjb25zdCB4PU1hdGguY29zKGEpKnIqMS4xNSx5PU1hdGguc2luKGEpKnIqLjg1O2k\/Yy5saW5lVG8oeCx5KTpjLm1vdmVUbyh4LHkpfSk7Yy5jbG9zZVBhdGgoKTtjLmZpbGwoKTsKICAgICAgYy5zdHJva2VTdHlsZT0ncmdiYSgxNzAsMTcwLDE2NSwuNTUpJztjLmxpbmVXaWR0aD0xO2Muc3Ryb2tlKCk7CiAgICAgIGMuc3Ryb2tlU3R5bGU9J3JnYmEoMTUwLDE1MCwxNDUsLjM1KSc7Yy5iZWdpblBhdGgoKTtjLm1vdmVUbygtMTQsLTYpO2MucXVhZHJhdGljQ3VydmVUbygtMiwyLDEyLC04KTtjLm1vdmVUbygtMTAsOCk7Yy5xdWFkcmF0aWNDdXJ2ZVRvKDIsMiwxNiw4KTtjLnN0cm9rZSgpOwogICAgICBjLnN0cm9rZVN0eWxlPSdyZ2JhKDIzNSwyMzUsMjMwLC45NSknO2MubGluZVdpZHRoPTM7Yy5iZWdpblBhdGgoKTtjLmFyYygtOCwtMjAsNixNYXRoLlBJLDApO2MubW92ZVRvKDE0LC0yMCk7Yy5hcmMoOCwtMjAsNiwwLE1hdGguUEksdHJ1ZSk7Yy5zdHJva2UoKTsKICAgICAgaWYoaXQuY29sMil7Yy5maWxsU3R5bGU9aXQuY29sMjtjLmdsb2JhbEFscGhhPS41NTtjLmZpbGxSZWN0KC02LC00LDEyLDkpO2MuZ2xvYmFsQWxwaGE9MX0KICAgIH19LAogIHN0cmF3OntyOjI2LGc6MSxuYW1lOkwoJ0Nhbm51Y2NpYScsJ1N0cmF3JywnU3Ryb2hoYWxtJyksZmFjdDpMKCdTaSB1c2EgcGVyIHBvY2hpIG1pbnV0aSwgcmVzdGEgaW4gbmF0dXJhIGZpbm8gYSAyMDAgYW5uaS4nLCdVc2VkIGZvciBhIGZldyBtaW51dGVzLCBpdCBzdGF5cyBpbiBuYXR1cmUgZm9yIHVwIHRvIDIwMCB5ZWFycy4nLCdFaW4gcGFhciBNaW51dGVuIGJlbnV0enQsIGJpcyB6dSAyMDAgSmFocmUgaW4gZGVyIE5hdHVyLicpLAogICAgZHJhdyhjLGl0KXsKICAgICAgYy5zYXZlKCk7Yy5iZWdpblBhdGgoKTtycihjLC0yNCwtMi42LDQ4LDUuMiwyLjYpO2MuY2xpcCgpOwogICAgICBjLmZpbGxTdHlsZT1pdC5jb2w7Yy5maWxsUmVjdCgtMjUsLTQsNTAsOCk7CiAgICAgIGMuc3Ryb2tlU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjg1KSc7Yy5saW5lV2lkdGg9Mi4yO2ZvcihsZXQgeD0tMzA7eDwzMDt4Kz03KXtjLmJlZ2luUGF0aCgpO2MubW92ZVRvKHgsNCk7Yy5saW5lVG8oeCs2LC00KTtjLnN0cm9rZSgpfQogICAgICBjLnJlc3RvcmUoKTsKICAgIH19LAogIGN1cDp7cjoyNixnOjYsbmFtZTpMKCdCaWNjaGllcmUgdXNhIGUgZ2V0dGEnLCdEaXNwb3NhYmxlIGN1cCcsJ0VpbndlZ2JlY2hlcicpLGZhY3Q6TCgnVW5hIGZlc3RhIGluIHNwaWFnZ2lhIHB1w7IgbGFzY2lhcm5lIGNlbnRpbmFpYS4gSWwgdmVudG8gbGkgcG9ydGEgZHJpdHRpIGluIG1hcmUuJywnT25lIGJlYWNoIHBhcnR5IGNhbiBsZWF2ZSBodW5kcmVkcyBiZWhpbmQuIFRoZSB3aW5kIGNhcnJpZXMgdGhlbSBzdHJhaWdodCBpbnRvIHRoZSBzZWEuJywnRWluZSBTdHJhbmRwYXJ0eSBrYW5uIEh1bmRlcnRlIGRhdm9uIGhpbnRlcmxhc3Nlbi4gRGVyIFdpbmQgdHLDpGd0IHNpZSBkaXJla3QgaW5zIE1lZXIuJyksCiAgICBkcmF3KGMsaXQpewogICAgICBjLmZpbGxTdHlsZT1pdC5jb2w7Yy5iZWdpblBhdGgoKTtjLm1vdmVUbygtMTYsLTEzKTtjLmxpbmVUbygxNSwtOCk7Yy5saW5lVG8oMTUsOCk7Yy5saW5lVG8oLTE2LDEzKTtjLmNsb3NlUGF0aCgpO2MuZmlsbCgpOwogICAgICBjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMjUpJztjLmZpbGxSZWN0KC0xMiwtOSwyMiw0KTsKICAgICAgYy5maWxsU3R5bGU9JyNmM2VmZTYnO2MuYmVnaW5QYXRoKCk7Yy5lbGxpcHNlKC0xNiwwLDQsMTMsMCwwLDcpO2MuZmlsbCgpOwogICAgICBjLmZpbGxTdHlsZT0ncmdiYSgwLDAsMCwuMiknO2MuYmVnaW5QYXRoKCk7Yy5lbGxpcHNlKC0xNSwwLDIuMiwxMC41LDAsMCw3KTtjLmZpbGwoKTsKICAgIH19LAogIHJpbmdzOntyOjMwLGc6NCxuYW1lOkwoJ0FuZWxsaSBwZXIgbGF0dGluZScsJ1NpeC1wYWNrIHJpbmdzJywnU2l4cGFjay1SaW5nZScpLGZhY3Q6TCgnQ2lyY2EgNDAwIGFubmkgaW4gbmF0dXJhLiBQZXNjaSBlIHVjY2VsbGkgY2kgcmVzdGFubyBpbnRyYXBwb2xhdGk6IHRhZ2xpYWxpIHNlbXByZSBwcmltYSBkaSBidXR0YXJsaS4nLCdBYm91dCA0MDAgeWVhcnMgaW4gbmF0dXJlLiBGaXNoIGFuZCBiaXJkcyBnZXQgdHJhcHBlZCBpbiB0aGVtOiBhbHdheXMgY3V0IHRoZW0gYmVmb3JlIHRocm93aW5nIHRoZW0gYXdheS4nLCdSdW5kIDQwMCBKYWhyZSBpbiBkZXIgTmF0dXIuIEZpc2NoZSB1bmQgVsO2Z2VsIHZlcmZhbmdlbiBzaWNoIGRhcmluOiBTY2huZWlkZSBzaWUgaW1tZXIgYXVmLCBiZXZvciBkdSBzaWUgd2Vnd2lyZnN0LicpLAogICAgZHJhdyhjKXsKICAgICAgYy5zdHJva2VTdHlsZT0ncmdiYSgyMzYsMjQwLDIzMiwuOSknO2MubGluZVdpZHRoPTM7CiAgICAgIGZvcihsZXQgaT0wO2k8MztpKyspZm9yKGxldCBqPTA7ajwyO2orKyl7cnIoYywtMjcraSoxOCwtMTUraioxNSwxNiwxMyw2KTtjLnN0cm9rZSgpfQogICAgICBjLnN0cm9rZVN0eWxlPSdyZ2JhKDEyMCwxMzAsMTIwLC4zKSc7Yy5saW5lV2lkdGg9MTtjLnN0cm9rZVJlY3QoLTI4LC0xNiw1NCwzMCk7CiAgICB9fSwKICBmb3JrOntyOjI0LGc6MyxuYW1lOkwoJ1Bvc2F0YSB1c2EgZSBnZXR0YScsJ0Rpc3Bvc2FibGUgY3V0bGVyeScsJ0VpbndlZ2Jlc3RlY2snKSxmYWN0OkwoJ1VzYXRhIHBlciB1biBwcmFuem8sIHJlc3RhIHN1bGxhIHNwaWFnZ2lhIHBlciBzZWNvbGkuJywnVXNlZCBmb3Igb25lIGx1bmNoLCBpdCBzdGF5cyBvbiB0aGUgYmVhY2ggZm9yIGNlbnR1cmllcy4nLCdGw7xyIGVpbiBNaXR0YWdlc3NlbiBiZW51dHp0LCBibGVpYnQgZXMgamFocmh1bmRlcnRlbGFuZyBhbSBTdHJhbmQuJyksCiAgICBkcmF3KGMsaXQpewogICAgICBjLmZpbGxTdHlsZT1pdC5jb2w7Yy5zdHJva2VTdHlsZT0ncmdiYSgxMjAsMTIwLDExMCwuNDUpJztjLmxpbmVXaWR0aD0xOwogICAgICBycihjLC0yMywtMi42LDMwLDUuMiwyLjYpO2MuZmlsbCgpO2Muc3Ryb2tlKCk7CiAgICAgIHJyKGMsNSwtNiw5LDEyLDMpO2MuZmlsbCgpO2Muc3Ryb2tlKCk7CiAgICAgIGZvcihsZXQgaz0wO2s8NDtrKyspe2MuZmlsbFJlY3QoMTMsLTYrayozLjMsMTEsMil9CiAgICB9fSwKICBuZXQ6e3I6MzAsZzo4MCxuYW1lOkwoJ1JldGUgZGEgcGVzY2EnLCdGaXNoaW5nIG5ldCcsJ0Zpc2NoZXJuZXR6JyksZmFjdDpMKCdMZSByZXRpIGZhbnRhc21hIHNvbm8gcXVhc2kgbWV0w6AgZGVsbGEgcGxhc3RpY2EgY2hlIGdhbGxlZ2dpYSBuZWdsaSBvY2VhbmkuIFJlc3Rhbm8gbMOsIGZpbm8gYSA2MDAgYW5uaS4nLCdHaG9zdCBuZXRzIG1ha2UgdXAgYWxtb3N0IGhhbGYgb2YgdGhlIHBsYXN0aWMgZmxvYXRpbmcgaW4gdGhlIG9jZWFucy4gVGhleSBzdGF5IHRoZXJlIGZvciB1cCB0byA2MDAgeWVhcnMuJywnR2Vpc3Rlcm5ldHplIG1hY2hlbiBmYXN0IGRpZSBIw6RsZnRlIGRlcyBpbSBNZWVyIHRyZWliZW5kZW4gUGxhc3Rpa3MgYXVzLiBTaWUgYmxlaWJlbiBiaXMgenUgNjAwIEphaHJlIGRvcnQuJyksCiAgICBkcmF3KGMsaXQpewogICAgICBjLmxpbmVDYXA9J3JvdW5kJzsKICAgICAgaXQuc2hhcGUuZm9yRWFjaCgocyxrKT0+e2Muc3Ryb2tlU3R5bGU9ayUzPycjZGY2ZDJhJzonIzJmOGE1OCc7Yy5saW5lV2lkdGg9ayUzPzI6MS42O2MuYmVnaW5QYXRoKCk7Yy5tb3ZlVG8oc1swXSxzWzFdKTtjLmJlemllckN1cnZlVG8oc1syXSxzWzNdLHNbNF0sc1s1XSxzWzZdLHNbN10pO2Muc3Ryb2tlKCl9KTsKICAgICAgYy5zdHJva2VTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMjUpJztjLmxpbmVXaWR0aD0xO2MuYmVnaW5QYXRoKCk7Zm9yKGxldCB4PS0xODt4PD0xODt4Kz05KXtjLm1vdmVUbyh4LC0xNik7Yy5saW5lVG8oeCs0LDE2KX1jLnN0cm9rZSgpOwogICAgfX0KfTsKY29uc3QgTUlYPVsnYm90dGxlJywnYm90dGxlJywnYm90dGxlJywnY2FwJywnY2FwJywnY2FwJywnYmFnJywnYmFnJywnc3RyYXcnLCdzdHJhdycsJ2N1cCcsJ2N1cCcsJ3JpbmdzJywnZm9yaycsJ2ZvcmsnLCduZXQnXTsKY29uc3QgQ09MUz17Ym90dGxlOlsnIzJiNmZkNicsJyNlNmU2ZTYnLCcjMWY4YTRjJywnI2Q2M2EyYiddLGNhcDpbJyNlMjNiMmUnLCcjMmE2M2Q0JywnI2YyYzIzMCcsJyMyZjlhNWEnLCcjZjJmMmYyJ10sc3RyYXc6WycjZTk0MTdhJywnIzJhYTdkOCcsJyNmMmEzM2EnXSxjdXA6WycjYzkzMzNiJywnIzJmNmZkMCcsJyNmNGYxZWEnXSxmb3JrOlsnI2Y0ZjNlZScsJyNmMGYwZjAnXX07CgpmdW5jdGlvbiBtYWtlSXRlbSh0eXBlKXsKICBjb25zdCBpdD17dHlwZSx4OjAseTowLHJvdDpybmQoMCxNYXRoLlBJKjIpLHM6cm5kKDEuMywxLjYpLHZ4OjAsdnk6MCxsaWZ0OjAsc3Q6J3Jlc3QnLHA6MCxib2I6cm5kKDAsNil9OwogIGl0LmNvbD1waWNrKENPTFNbdHlwZV18fFsnI2ZmZiddKTsKICBpdC5jb2wyPXR5cGU9PT0nYm90dGxlJz9waWNrKFsncmdiYSgyNDAsMjQwLDIzNSwuODUpJywncmdiYSgyMjAsNjAsNTAsLjc1KScsJ3JnYmEoNDAsOTAsMTcwLC43KSddKTp0eXBlPT09J2JhZycmJk1hdGgucmFuZG9tKCk8LjU\/cGljayhbJyMyYTYzZDQnLCcjZDYzYTJiJywnIzFmOGE0YyddKTpudWxsOwogIGlmKHR5cGU9PT0nYmFnJykgaXQuc2hhcGU9QXJyYXkuZnJvbSh7bGVuZ3RoOjEwfSwoKT0+cm5kKDE3LDI1KSk7CiAgaWYodHlwZT09PSduZXQnKSBpdC5zaGFwZT1BcnJheS5mcm9tKHtsZW5ndGg6OX0sKCk9PkFycmF5LmZyb20oe2xlbmd0aDo4fSwoKT0+cm5kKC0yNCwyNCkpKTsKICByZXR1cm4gaXQ7Cn0KZnVuY3Rpb24gaW5CYXNrZXQoeCx5LHBhZCl7cGFkPXBhZHx8MDtyZXR1cm4geD5iYXNrZXQueC1wYWQmJng8YmFza2V0LngrYmFza2V0LncrcGFkJiZ5PmJhc2tldC55LWJhc2tldC5oKi4yNS1wYWQmJnk8YmFza2V0LnkrYmFza2V0LmgqLjc1fQpmdW5jdGlvbiBzaG9yZUF0KHgsdCl7cmV0dXJuIHNlYVkrTWF0aC5zaW4oeCouMDExK3QqLjgpKjYrTWF0aC5zaW4oeCouMDI3LXQqMS4yKSozK01hdGguc2luKHQqLjU1KSoxMytNYXRoLnNpbih0Ki4yMSkqNX0KCmZ1bmN0aW9uIHBsYWNlSXRlbXMoKXsKICBpdGVtcz1bXTtjb2xsZWN0ZWQ9MDtncmFtcz0wO1RPVEFMPU1JWC5sZW5ndGg7CiAgY29uc3QgcGxhY2VkPVtdOwogIE1JWC5mb3JFYWNoKHR5cGU9PnsKICAgIGNvbnN0IGl0PW1ha2VJdGVtKHR5cGUpO2xldCB4LHksb2ssdHJpZXM9MDsKICAgIGRvewogICAgICB4PXJuZCg1MCxXLTUwKTt5PXJuZChzZWFZKzcwLEgtNDQpO29rPSFpbkJhc2tldCh4LHksNjApJiYhKHg8MzIwJiZ5PkgtMTUwKTsKICAgICAgZm9yKGNvbnN0IHAgb2YgcGxhY2VkKXtpZihNYXRoLmh5cG90KHAueC14LHAueS15KTw4Mil7b2s9ZmFsc2U7YnJlYWt9fQogICAgICB0cmllcysrOwogICAgfXdoaWxlKCFvayYmdHJpZXM8NjApOwogICAgaXQueD14O2l0Lnk9eTtwbGFjZWQucHVzaChpdCk7aXRlbXMucHVzaChpdCk7CiAgfSk7CiAgZWxUb3RhbC50ZXh0Q29udGVudD1UT1RBTDt1cGRhdGVIdWQoKTsKfQpmdW5jdGlvbiB1cGRhdGVIdWQoKXtlbENvdW50LnRleHRDb250ZW50PWNvbGxlY3RlZDtlbEJhci5zdHlsZS53aWR0aD0oVE9UQUw\/Y29sbGVjdGVkL1RPVEFMKjEwMDowKSsnJSd9CgovKiAtLS0tIFNhbmQgKGVpbm1hbCBnZXplaWNobmV0KSAtLS0tICovCmZ1bmN0aW9uIGJ1aWxkU2FuZCgpewogIHNhbmRDdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtzYW5kQ3Yud2lkdGg9VypkcHI7c2FuZEN2LmhlaWdodD1IKmRwcjsKICBjb25zdCBzPXNhbmRDdi5nZXRDb250ZXh0KCcyZCcpO3Muc2NhbGUoZHByLGRwcik7CiAgY29uc3QgZz1zLmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsc2VhWS0zMCwwLEgpOwogIGcuYWRkQ29sb3JTdG9wKDAsJyNhODkxNmInKTtnLmFkZENvbG9yU3RvcCguMTIsJyNiZmE3N2YnKTtnLmFkZENvbG9yU3RvcCguMzIsJyNkY2M2OWQnKTtnLmFkZENvbG9yU3RvcCgxLCcjZTlkOGI0Jyk7CiAgcy5maWxsU3R5bGU9ZztzLmZpbGxSZWN0KDAsMCxXLEgpOwogIC8vIGZlaW5lIEvDtnJudW5nCiAgY29uc3Qgbj1NYXRoLmZsb29yKFcqSC8xNCk7CiAgZm9yKGxldCBpPTA7aTxuO2krKyl7Y29uc3QgeD1NYXRoLnJhbmRvbSgpKlcseT1zZWFZLTQwK01hdGgucmFuZG9tKCkqKEgtc2VhWSs0MCk7Y29uc3QgbD1NYXRoLnJhbmRvbSgpOwogICAgcy5maWxsU3R5bGU9bDwuNT8ncmdiYSgxMTAsODUsNTAsJytybmQoLjA1LC4xOCkrJyknOidyZ2JhKDI1NSwyNTAsMjM1LCcrcm5kKC4wOCwuMykrJyknO3MuZmlsbFJlY3QoeCx5LHJuZCguNiwxLjgpLHJuZCguNiwxLjgpKX0KICAvLyBXaW5kLVJpcHBlbCBpbSBTYW5kCiAgcy5zdHJva2VTdHlsZT0ncmdiYSgxNDAsMTEwLDcwLC4xMCknO3MubGluZVdpZHRoPTEuNDsKICBmb3IobGV0IHk9c2VhWSs1MDt5PEg7eSs9cm5kKDksMTYpKXtzLmJlZ2luUGF0aCgpO2NvbnN0IHBoPXJuZCgwLDYpO2ZvcihsZXQgeD0wO3g8PVc7eCs9MTIpe2NvbnN0IHl5PXkrTWF0aC5zaW4oeCouMDE4K3BoKSo0K01hdGguc2luKHgqLjA1KSoxLjU7eD9zLmxpbmVUbyh4LHl5KTpzLm1vdmVUbyh4LHl5KX1zLnN0cm9rZSgpfQogIC8vIEZ1w59zcHVyZW4KICBsZXQgZng9VypybmQoLjE1LC4zKSxmeT1ILTEwO2NvbnN0IGFuZz0tMS4xNTsKICBmb3IobGV0IGs9MDtrPDExO2srKyl7Y29uc3Qgc2lkZT1rJTI\/MTotMTtjb25zdCBweD1meCtNYXRoLmNvcyhhbmcrTWF0aC5QSS8yKSo3KnNpZGUscHk9ZnkrTWF0aC5zaW4oYW5nK01hdGguUEkvMikqNypzaWRlOwogICAgcy5zYXZlKCk7cy50cmFuc2xhdGUocHgscHkpO3Mucm90YXRlKGFuZytNYXRoLlBJLzIpO3MuZmlsbFN0eWxlPSdyZ2JhKDEyMCw5Miw1NSwuMTgpJztzLmJlZ2luUGF0aCgpO3MuZWxsaXBzZSgwLDAsNC41LDgsMCwwLDcpO3MuZmlsbCgpO3MuYmVnaW5QYXRoKCk7cy5lbGxpcHNlKDAsLTExLDMuNiwzLjYsMCwwLDcpO3MuZmlsbCgpO3MucmVzdG9yZSgpOwogICAgZngrPU1hdGguY29zKGFuZykqMjY7ZnkrPU1hdGguc2luKGFuZykqMjY7fQogIC8vIE11c2NoZWxuLCBTdGVpbmUsIFRyZWliaG9seiwgU2VlZ3JhcwogIGZvcihsZXQgaT0wO2k8MTQ7aSsrKXtjb25zdCB4PXJuZCgxMCxXLTEwKSx5PXJuZChzZWFZKzMwLEgtMTApO3Muc2F2ZSgpO3MudHJhbnNsYXRlKHgseSk7cy5yb3RhdGUocm5kKDAsNikpOwogICAgaWYoaSUzPT09MCl7cy5maWxsU3R5bGU9J3JnYmEoMTUwLDE0NSwxMzUsLjgpJztzLmJlZ2luUGF0aCgpO3MuZWxsaXBzZSgwLDAscm5kKDMsNykscm5kKDIsNSksMCwwLDcpO3MuZmlsbCgpfQogICAgZWxzZXtzLmZpbGxTdHlsZT1waWNrKFsnI2VmZDljZicsJyNmM2U2ZDYnLCcjZThjOWI4J10pO3MuYmVnaW5QYXRoKCk7cy5tb3ZlVG8oMCw0KTtmb3IobGV0IGE9LTEuMTthPD0xLjE7YSs9LjIyKXtzLmxpbmVUbyhNYXRoLnNpbihhKSo3LC1NYXRoLmNvcyhhKSo3KX1zLmNsb3NlUGF0aCgpO3MuZmlsbCgpOwogICAgICBzLnN0cm9rZVN0eWxlPSdyZ2JhKDE1MCwxMTAsOTAsLjM1KSc7cy5saW5lV2lkdGg9Ljc7Zm9yKGxldCBhPS0xO2E8PTE7YSs9LjMzKXtzLmJlZ2luUGF0aCgpO3MubW92ZVRvKDAsNCk7cy5saW5lVG8oTWF0aC5zaW4oYSkqNi41LC1NYXRoLmNvcyhhKSo2LjUpO3Muc3Ryb2tlKCl9fQogICAgcy5yZXN0b3JlKCl9CiAgcy5zYXZlKCk7cy50cmFuc2xhdGUoVyouNjIsSCouODYpO3Mucm90YXRlKC0uMjUpO3MuZmlsbFN0eWxlPScjOGY3NTU4JztycihzLC02MCwtNywxMjAsMTQsNyk7cy5maWxsKCk7cy5zdHJva2VTdHlsZT0ncmdiYSg3MCw1MCwzMCwuMzUpJztzLmxpbmVXaWR0aD0xOwogIGZvcihsZXQgeD0tNTA7eDw1NTt4Kz0xNCl7cy5iZWdpblBhdGgoKTtzLm1vdmVUbyh4LC01KTtzLmxpbmVUbyh4KzE4LDQpO3Muc3Ryb2tlKCl9cy5yZXN0b3JlKCk7CiAgcy5zdHJva2VTdHlsZT0ncmdiYSg2MCw4MCw0MCwuNTUpJztzLmxpbmVXaWR0aD0yO3MubGluZUNhcD0ncm91bmQnOwogIGZvcihsZXQgaT0wO2k8NTtpKyspe2NvbnN0IHg9cm5kKDMwLFctMzApLHk9c2VhWStybmQoMjUsNTUpO3MuYmVnaW5QYXRoKCk7cy5tb3ZlVG8oeCx5KTtzLmJlemllckN1cnZlVG8oeCsxMix5LTYseCsyMCx5KzgseCszOCx5KzIpO3Muc3Ryb2tlKCl9Cn0KCi8qIC0tLS0gTWVlciAoYW5pbWllcnQpIC0tLS0gKi8KY29uc3Qgc3BhcmtsZXM9QXJyYXkuZnJvbSh7bGVuZ3RoOjcwfSwoKT0+W01hdGgucmFuZG9tKCksTWF0aC5yYW5kb20oKSouOSxNYXRoLnJhbmRvbSgpKjZdKTsKZnVuY3Rpb24gZHJhd1NlYSh0KXsKICBjb25zdCBwdHM9W107Zm9yKGxldCB4PTA7eDw9VysyMDt4Kz0yMClwdHMucHVzaChbeCxzaG9yZUF0KHgsdCldKTsKICAvLyBuYXNzZXIgU2FuZC1HbGFuegogIGN0eC5maWxsU3R5bGU9J3JnYmEoOTUsNzUsNDUsLjE2KSc7Y3R4LmJlZ2luUGF0aCgpO2N0eC5tb3ZlVG8oMCwwKTtwdHMuZm9yRWFjaChwPT5jdHgubGluZVRvKHBbMF0scFsxXSsyNitNYXRoLnNpbih0Ki41NSkqLTYpKTtjdHgubGluZVRvKFcsMCk7Y3R4LmZpbGwoKTsKICAvLyBXYXNzZXIKICBjb25zdCBnPWN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLDAsMCxzZWFZKzIwKTsKICBnLmFkZENvbG9yU3RvcCgwLCcjMWI1YTczJyk7Zy5hZGRDb2xvclN0b3AoLjU1LCcjMmY4Nzk2Jyk7Zy5hZGRDb2xvclN0b3AoLjg1LCcjNTViM2IyJyk7Zy5hZGRDb2xvclN0b3AoMSwnIzhmZDNjNCcpOwogIGN0eC5maWxsU3R5bGU9ZztjdHguYmVnaW5QYXRoKCk7Y3R4Lm1vdmVUbygwLDApO3B0cy5mb3JFYWNoKHA9PmN0eC5saW5lVG8ocFswXSxwWzFdKSk7Y3R4LmxpbmVUbyhXLDApO2N0eC5jbG9zZVBhdGgoKTtjdHguZmlsbCgpOwogIC8vIEZsYWNod2Fzc2VyLVNhdW0KICBjdHguZmlsbFN0eWxlPSdyZ2JhKDE3MCwyMzAsMjE1LC4zNSknO2N0eC5iZWdpblBhdGgoKTtwdHMuZm9yRWFjaCgocCxpKT0+aT9jdHgubGluZVRvKHBbMF0scFsxXSk6Y3R4Lm1vdmVUbyhwWzBdLHBbMV0pKTtmb3IobGV0IGk9cHRzLmxlbmd0aC0xO2k+PTA7aS0tKWN0eC5saW5lVG8ocHRzW2ldWzBdLHB0c1tpXVsxXS0xNi1NYXRoLnNpbihwdHNbaV1bMF0qLjAyK3QpKjQpO2N0eC5jbG9zZVBhdGgoKTtjdHguZmlsbCgpOwogIC8vIEdpc2NodAogIFtbMCwzLjIsLjldLFstOSwyLC40NV0sWy0yMiwxLjQsLjI4XV0uZm9yRWFjaCgoW28sbHcsYV0sayk9PntjdHguc3Ryb2tlU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsJythKycpJztjdHgubGluZVdpZHRoPWx3O2N0eC5iZWdpblBhdGgoKTsKICAgIHB0cy5mb3JFYWNoKChwLGkpPT57Y29uc3QgeT1wWzFdK28rTWF0aC5zaW4ocFswXSouMDUrdCooMS40K2sqLjMpKSoxLjY7aT9jdHgubGluZVRvKHBbMF0seSk6Y3R4Lm1vdmVUbyhwWzBdLHkpfSk7Y3R4LnN0cm9rZSgpfSk7CiAgLy8gR2xpdHplcm4KICBzcGFya2xlcy5mb3JFYWNoKHM9Pntjb25zdCB5PXNbMV0qKHNlYVktMTApO2NvbnN0IGE9TWF0aC5tYXgoMCxNYXRoLnNpbih0KjIuNCtzWzJdKSkqLjU1O2lmKGE8LjA1KXJldHVybjtjdHguZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LCcrYSsnKSc7Y3R4LmZpbGxSZWN0KCgoc1swXSpXK3QqOCklVykseSxybmQoNSwxMCksMS4yKX0pOwp9CgovKiAtLS0tIEtvcmIgLS0tLSAqLwpmdW5jdGlvbiBkcmF3QmFza2V0QmFjaygpewogIGNvbnN0IHt4LHksdyxofT1iYXNrZXQ7Y29uc3QgY3g9eCt3LzIsb3k9eStoKi4xMjsKICBjdHguZmlsbFN0eWxlPSdyZ2JhKDcwLDQ1LDIwLC4yNSknO2N0eC5iZWdpblBhdGgoKTtjdHguZWxsaXBzZShjeCs2LHkraCs2LHcqLjUsaCouMSwwLDAsNyk7Y3R4LmZpbGwoKTsKICBjdHguZmlsbFN0eWxlPScjM2EyNDEwJztjdHguYmVnaW5QYXRoKCk7Y3R4LmVsbGlwc2UoY3gsb3ksdy8yLGgqLjEzLDAsMCw3KTtjdHguZmlsbCgpOwogIGN0eC5zdHJva2VTdHlsZT0nI2EyNzAzZSc7Y3R4LmxpbmVXaWR0aD03O2N0eC5iZWdpblBhdGgoKTtjdHguZWxsaXBzZShjeCxveSx3LzIsaCouMTMsMCxNYXRoLlBJLE1hdGguUEkqMik7Y3R4LnN0cm9rZSgpOwp9CmZ1bmN0aW9uIGRyYXdCYXNrZXRGcm9udCgpewogIGNvbnN0IHt4LHksdyxofT1iYXNrZXQ7Y29uc3QgY3g9eCt3LzIsb3k9eStoKi4xMixyeT1oKi4xMzsKICBjdHguc2F2ZSgpO2N0eC5iZWdpblBhdGgoKTtjdHgubW92ZVRvKHgsb3kpO2N0eC5lbGxpcHNlKGN4LG95LHcvMixyeSwwLE1hdGguUEksMCx0cnVlKTtjdHgubGluZVRvKHgrdyouOSx5K2gpO2N0eC5xdWFkcmF0aWNDdXJ2ZVRvKGN4LHkraCtoKi4wOCx4K3cqLjEseStoKTtjdHguY2xvc2VQYXRoKCk7CiAgY29uc3QgZz1jdHguY3JlYXRlTGluZWFyR3JhZGllbnQoeCwwLHgrdywwKTtnLmFkZENvbG9yU3RvcCgwLCcjOGU1YzJjJyk7Zy5hZGRDb2xvclN0b3AoLjQ1LCcjYzU4ZjUyJyk7Zy5hZGRDb2xvclN0b3AoMSwnIzdmNTEyNicpO2N0eC5maWxsU3R5bGU9ZztjdHguZmlsbCgpO2N0eC5jbGlwKCk7CiAgLy8gRmxlY2h0d2VyawogIGZvcihsZXQgeXk9b3k7eXk8eStoKzEwO3l5Kz0xMSl7Y3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDcwLDQwLDE1LC40NSknO2N0eC5saW5lV2lkdGg9MS4yO2N0eC5iZWdpblBhdGgoKTtjdHguZWxsaXBzZShjeCx5eSx3LzIscnksMCwwLE1hdGguUEkpO2N0eC5zdHJva2UoKTsKICAgIGNvbnN0IHJvdz1NYXRoLnJvdW5kKCh5eS1veSkvMTEpO2ZvcihsZXQgeHg9eCsocm93JTI\/MDo5KTt4eDx4K3c7eHgrPTE4KXtjdHguZmlsbFN0eWxlPSdyZ2JhKDI1NSwyMjUsMTcwLC4xNiknO3JyKGN0eCx4eCx5eStyeSouNiwxMCw3LDMpO2N0eC5maWxsKCl9fQogIGN0eC5zdHJva2VTdHlsZT0ncmdiYSg2MCwzNSwxMiwuMzUpJztjdHgubGluZVdpZHRoPTI7Zm9yKGxldCB4eD14Kzk7eHg8eCt3O3h4Kz0xOCl7Y3R4LmJlZ2luUGF0aCgpO2N0eC5tb3ZlVG8oeHgsb3kpO2N0eC5saW5lVG8oY3grKHh4LWN4KSouODIseStoKzEwKTtjdHguc3Ryb2tlKCl9CiAgY3R4LnJlc3RvcmUoKTsKICBjdHguc3Ryb2tlU3R5bGU9JyNiNTgyNGEnO2N0eC5saW5lV2lkdGg9OTtjdHguYmVnaW5QYXRoKCk7Y3R4LmVsbGlwc2UoY3gsb3ksdy8yLHJ5LDAsMCxNYXRoLlBJKTtjdHguc3Ryb2tlKCk7CiAgY3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDI1NSwyMzAsMTgwLC4zNSknO2N0eC5saW5lV2lkdGg9MjtjdHguYmVnaW5QYXRoKCk7Y3R4LmVsbGlwc2UoY3gsb3ktMix3LzItMixyeS0xLDAsLjIsTWF0aC5QSS0uMik7Y3R4LnN0cm9rZSgpOwogIC8vIGtsZWluZXMgU2NoaWxkCiAgY3R4LmZpbGxTdHlsZT0ncmdiYSgyNDYsMjQxLDIzMCwuOTIpJztycihjdHgsY3gtMzAseStoKi40NSw2MCwyMiwxMSk7Y3R4LmZpbGwoKTtjdHguZmlsbFN0eWxlPScjMWY3YTM1JztjdHguZm9udD0nNjAwIDExcHggQXNwZWt0YSwgQXJpYWwsIHNhbnMtc2VyaWYnO2N0eC50ZXh0QWxpZ249J2NlbnRlcic7Y3R4LnRleHRCYXNlbGluZT0nbWlkZGxlJztjdHguZmlsbFRleHQoTCgnUExBU1RJQ0EnLCdQTEFTVElDJywnUExBU1RJSycpLGN4LHkraCouNDUrMTEuNSk7Cn0KCi8qIC0tLS0gRWluIFRlaWwgemVpY2huZW4gLS0tLSAqLwpmdW5jdGlvbiBkcmF3SXRlbShpdCx0KXsKICBjb25zdCBUXz1UWVBFU1tpdC50eXBlXTtsZXQgeD1pdC54LHk9aXQueSxzYz1pdC5zLGFsPTE7CiAgaWYoaXQuc3Q9PT0nZmxvYXQnKXt5Kz1NYXRoLnNpbih0KjIraXQuYm9iKSozfQogIGlmKGl0LnN0PT09J2luJyl7Y29uc3QgcD1pdC5wO3g9aXQuc3grKGl0LnR4LWl0LnN4KSpwO3k9aXQuc3krKGl0LnR5LWl0LnN5KSpwLU1hdGguc2luKE1hdGguUEkqcCkqNjA7c2M9aXQucyooMS1wKi40NSk7YWw9cD4uNzU\/MS0ocC0uNzUpLy4yNToxfQogIC8vIFNjaGF0dGVuCiAgaWYoaXQuc3QhPT0naW4nKXtjdHguZmlsbFN0eWxlPSdyZ2JhKDcwLDUwLDIwLCcrKC4yMi1pdC5saWZ0Ki4wOCkrJyknO2N0eC5iZWdpblBhdGgoKTtjdHguZWxsaXBzZSh4KzMraXQubGlmdCoxMCx5KzUraXQubGlmdCoxNixUXy5yKnNjKi44NSxUXy5yKnNjKi4zOCwwLDAsNyk7Y3R4LmZpbGwoKX0KICBjdHguc2F2ZSgpO2N0eC5nbG9iYWxBbHBoYT1hbDtjdHgudHJhbnNsYXRlKHgseS1pdC5saWZ0KjEwKTtjdHgucm90YXRlKGl0LnJvdCk7Y3R4LnNjYWxlKHNjKigxK2l0LmxpZnQqLjA4KSxzYyooMStpdC5saWZ0Ki4wOCkpO1RfLmRyYXcoY3R4LGl0KTtjdHgucmVzdG9yZSgpOwp9CgovKiAtLS0tIFNwaWVsLUxvZ2lrIC0tLS0gKi8KZnVuY3Rpb24gc2hvd0ZhY3QoaXQsY3VzdG9tKXsKICBjb25zdCBUXz1UWVBFU1tpdC50eXBlXTtjbGVhclRpbWVvdXQoZmFjdFRpbWVyKTsKICBlbEZhY3QuaW5uZXJIVE1MPWN1c3RvbXx8KCc8Yj4nK1RfLm5hbWUrJzwvYj4nK1RfLmZhY3QpO2VsRmFjdC5jbGFzc0xpc3QuYWRkKCdvbicpOwogIGZhY3RUaW1lcj1zZXRUaW1lb3V0KCgpPT5lbEZhY3QuY2xhc3NMaXN0LnJlbW92ZSgnb24nKSwzODAwKTsKfQpmdW5jdGlvbiBjb2xsZWN0KGl0KXsKICBpdC5zdD0naW4nO2l0LnA9MDtpdC5zeD1pdC54O2l0LnN5PWl0LnktaXQubGlmdCoxMDtpdC50eD1iYXNrZXQueCtiYXNrZXQudy8yK3JuZCgtYmFza2V0LncqLjIsYmFza2V0LncqLjIpO2l0LnR5PWJhc2tldC55K2Jhc2tldC5oKi4xNDtpdC5saWZ0PTA7Cn0KZnVuY3Rpb24gZmluaXNoQ29sbGVjdChpdCl7CiAgaXRlbXMuc3BsaWNlKGl0ZW1zLmluZGV4T2YoaXQpLDEpO2NvbGxlY3RlZCsrO2dyYW1zKz1UWVBFU1tpdC50eXBlXS5nO2Jhc2tldC5iPTE7dXBkYXRlSHVkKCk7c2hvd0ZhY3QoaXQpOwogIGlmKGNvbGxlY3RlZD09PVRPVEFMKXtzZXRUaW1lb3V0KCgpPT57ZWxHcmFtcy50ZXh0Q29udGVudD1ncmFtcysnIGcnO2VsRG9uZS5jbGFzc0xpc3QuYWRkKCdvbicpO2VsRmFjdC5jbGFzc0xpc3QucmVtb3ZlKCdvbicpfSw3MDApfQp9CmZ1bmN0aW9uIHRvU2VhKGl0KXsKICBpdC5zdD0nZmxvYXQnO2l0LnZ4Kj0uMjtpdC52eT0wO2l0Lnk9TWF0aC5tYXgoaXQueSxzZWFZLTUwKTsKICBzaG93RmFjdChpdCxMKCc8Yj5Ob24gaW4gbWFyZSE8L2I+TGUgb25kZSByaXBvcnRhbm8gc2VtcHJlIGEgcml2YSBxdWVsbG8gY2hlIGNpIGJ1dHRpYW1vLiBSaXByb3ZhIGNvbCBjZXN0aW5vLicsJzxiPk5vdCBpbiB0aGUgc2VhITwvYj5UaGUgd2F2ZXMgYWx3YXlzIGJyaW5nIGJhY2sgd2hhdCB3ZSB0aHJvdyBpbi4gVHJ5IHRoZSBiYXNrZXQuJywnPGI+TmljaHQgaW5zIE1lZXIhPC9iPkRpZSBXZWxsZW4gc3DDvGxlbiBhbGxlcyB6dXLDvGNrLCB3YXMgd2lyIGhpbmVpbndlcmZlbi4gVmVyc3VjaCBlcyBtaXQgZGVtIEtvcmIuJykpOwp9CmZ1bmN0aW9uIHN0ZXAoZHQsdCl7CiAgYmFza2V0LmI9TWF0aC5tYXgoMCxiYXNrZXQuYi1kdCoyLjYpOwogIGl0ZW1zLmZvckVhY2goaXQ9PnsKICAgIGlmKGl0PT09ZHJhZykgcmV0dXJuOwogICAgaWYoaXQuc3Q9PT0naW4nKXtpdC5wKz1kdC8uNTU7aWYoaXQucD49MSlmaW5pc2hDb2xsZWN0KGl0KTtyZXR1cm59CiAgICBpZihpdC5zdD09PSdmbHknKXsKICAgICAgaXQueCs9aXQudngqZHQ7aXQueSs9aXQudnkqZHQ7Y29uc3QgZj1NYXRoLnBvdyguMDYsZHQpO2l0LnZ4Kj1mO2l0LnZ5Kj1mO2l0LnJvdCs9aXQudnIqZHQ7aXQudnIqPWY7aXQubGlmdD1NYXRoLm1heCgwLGl0LmxpZnQtZHQqMS41KTsKICAgICAgaWYoaXQueDwyMCl7aXQueD0yMDtpdC52eD1NYXRoLmFicyhpdC52eCkqLjV9aWYoaXQueD5XLTIwKXtpdC54PVctMjA7aXQudng9LU1hdGguYWJzKGl0LnZ4KSouNX1pZihpdC55PkgtMjApe2l0Lnk9SC0yMDtpdC52eT0tTWF0aC5hYnMoaXQudnkpKi41fQogICAgICBpZihpbkJhc2tldChpdC54LGl0LnksNikpe2NvbGxlY3QoaXQpO3JldHVybn0KICAgICAgaWYoaXQueTxzaG9yZUF0KGl0LngsdCktNil7dG9TZWEoaXQpO3JldHVybn0KICAgICAgaWYoTWF0aC5oeXBvdChpdC52eCxpdC52eSk8MTgpe2l0LnN0PSdyZXN0JztpdC5saWZ0PTB9CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmKGl0LnN0PT09J2Zsb2F0Jyl7IC8vIGRpZSBXZWxsZSBzcMO8bHQgZXMgenVyw7xjayBhbiBkZW4gU3RyYW5kCiAgICAgIGNvbnN0IHRhcmdldD1zaG9yZUF0KGl0LngsdCkrcm5kKDI2LDQwKTtpdC55Kz0odGFyZ2V0LWl0LnkpKk1hdGgubWluKDEsZHQqMS4xKTtpdC5yb3QrPU1hdGguc2luKHQraXQuYm9iKSpkdCouNDsKICAgICAgaWYoTWF0aC5hYnModGFyZ2V0LWl0LnkpPDYpe2l0LnN0PSdyZXN0J30KICAgIH0KICB9KTsKfQpmdW5jdGlvbiByZW5kZXIobm93KXsKICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTsKICBpZighdmlzaWJsZXx8IVcpIHJldHVybjsKICBjb25zdCBkdD1NYXRoLm1heCgwLE1hdGgubWluKC4wNSwobm93LWxhc3QpLzEwMDApKTtsYXN0PW5vdztUKz1kdDsKICBzdGVwKGR0LFQpOwogIGN0eC5kcmF3SW1hZ2Uoc2FuZEN2LDAsMCxXLEgpOwogIGRyYXdTZWEoVCk7CiAgaXRlbXMuZm9yRWFjaChpdD0+e2lmKGl0LnN0IT09J2luJyYmaXQhPT1kcmFnKWRyYXdJdGVtKGl0LFQpfSk7CiAgY29uc3QgYnM9MStNYXRoLnNpbihiYXNrZXQuYipNYXRoLlBJKjMpKmJhc2tldC5iKi4wNTsKICBjdHguc2F2ZSgpO2N0eC50cmFuc2xhdGUoYmFza2V0LngrYmFza2V0LncvMixiYXNrZXQueStiYXNrZXQuaCk7Y3R4LnNjYWxlKGJzLDItYnMpO2N0eC50cmFuc2xhdGUoLShiYXNrZXQueCtiYXNrZXQudy8yKSwtKGJhc2tldC55K2Jhc2tldC5oKSk7CiAgZHJhd0Jhc2tldEJhY2soKTtpdGVtcy5mb3JFYWNoKGl0PT57aWYoaXQuc3Q9PT0naW4nKWRyYXdJdGVtKGl0LFQpfSk7ZHJhd0Jhc2tldEZyb250KCk7Y3R4LnJlc3RvcmUoKTsKICBpZihkcmFnKSBkcmF3SXRlbShkcmFnLFQpOwogIC8vIEtvcmIgbGV1Y2h0ZXQsIHdlbm4gbWFuIGV0d2FzIGRyw7xiZXIgaMOkbHQKICBpZihkcmFnJiZpbkJhc2tldChkcmFnLngsZHJhZy55LDI0KSl7Y3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDIwNywyMzgsMTk0LC45KSc7Y3R4LmxpbmVXaWR0aD0zO2N0eC5zZXRMaW5lRGFzaChbNiw2XSk7Y3R4LmJlZ2luUGF0aCgpO2N0eC5lbGxpcHNlKGJhc2tldC54K2Jhc2tldC53LzIsYmFza2V0LnkrYmFza2V0LmgqLjEyLGJhc2tldC53LzIrMTQsYmFza2V0LmgqLjEzKzEyLDAsMCw3KTtjdHguc3Ryb2tlKCk7Y3R4LnNldExpbmVEYXNoKFtdKX0KfQoKLyogLS0tLSBNYXVzIC8gVG91Y2ggLS0tLSAqLwpmdW5jdGlvbiBwb3MoZSl7Y29uc3Qgcj1jdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57eDplLmNsaWVudFgtci5sZWZ0LHk6ZS5jbGllbnRZLXIudG9wfX0KZnVuY3Rpb24gaGl0KHApe2ZvcihsZXQgaT1pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSl7Y29uc3QgaXQ9aXRlbXNbaV07aWYoaXQuc3Q9PT0naW4nKWNvbnRpbnVlO2NvbnN0IHI9VFlQRVNbaXQudHlwZV0ucippdC5zKzg7aWYoTWF0aC5oeXBvdChwLngtaXQueCxwLnktaXQueSk8cilyZXR1cm4gaXR9cmV0dXJuIG51bGx9CmxldCBscD1udWxsLGx0PTAsdng9MCx2eT0wLG9mZng9MCxvZmZ5PTA7CmN2LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJyxlPT57CiAgY29uc3QgcD1wb3MoZSk7Y29uc3QgaXQ9aGl0KHApO2lmKCFpdCkgcmV0dXJuOwogIGUucHJldmVudERlZmF1bHQoKTtjdi5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7CiAgZHJhZz1pdDtpdC5zdD0ncmVzdCc7aXQubGlmdD0xO29mZng9aXQueC1wLng7b2ZmeT1pdC55LXAueTtscD1wO2x0PXBlcmZvcm1hbmNlLm5vdygpO3Z4PXZ5PTA7CiAgaXRlbXMuc3BsaWNlKGl0ZW1zLmluZGV4T2YoaXQpLDEpO2l0ZW1zLnB1c2goaXQpOwogIGN2LnN0eWxlLmN1cnNvcj0nZ3JhYmJpbmcnOwogIGlmKCFzdGFydGVkKXtzdGFydGVkPXRydWU7ZWxIaW50LmNsYXNzTGlzdC5hZGQoJ29mZicpfQp9KTsKY3YuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLGU9PnsKICBjb25zdCBwPXBvcyhlKTsKICBpZihkcmFnKXsKICAgIGNvbnN0IG5vdz1wZXJmb3JtYW5jZS5ub3coKSxkPU1hdGgubWF4KDEsbm93LWx0KTsKICAgIHZ4PXZ4Ki42KygocC54LWxwLngpL2QqMTAwMCkqLjQ7dnk9dnkqLjYrKChwLnktbHAueSkvZCoxMDAwKSouNDtscD1wO2x0PW5vdzsKICAgIGRyYWcueD1NYXRoLm1heCgxNixNYXRoLm1pbihXLTE2LHAueCtvZmZ4KSk7ZHJhZy55PU1hdGgubWF4KDE2LE1hdGgubWluKEgtMTYscC55K29mZnkpKTsKICAgIGRyYWcucm90Kz12eCouMDAwMDQ7CiAgfWVsc2V7Y3Yuc3R5bGUuY3Vyc29yPWhpdChwKT8nZ3JhYic6J2RlZmF1bHQnfQp9KTsKZnVuY3Rpb24gcmVsZWFzZSgpewogIGlmKCFkcmFnKSByZXR1cm47Y29uc3QgaXQ9ZHJhZztkcmFnPW51bGw7Y3Yuc3R5bGUuY3Vyc29yPSdkZWZhdWx0JzsKICBpZihpbkJhc2tldChpdC54LGl0LnksMjQpKXtjb2xsZWN0KGl0KTtyZXR1cm59CiAgY29uc3Qgc3A9TWF0aC5oeXBvdCh2eCx2eSk7CiAgaWYoc3A+MTQwKXtpdC5zdD0nZmx5JztpdC52eD12eCouOTtpdC52eT12eSouOTtpdC52cj1ybmQoLTYsNil9CiAgZWxzZXtpdC5saWZ0PTA7aWYoaXQueTxzaG9yZUF0KGl0LngsVCktNil0b1NlYShpdCl9Cn0KY3YuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJyxyZWxlYXNlKTtjdi5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyY2FuY2VsJyxyZWxlYXNlKTsKCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiQWdhaW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntlbERvbmUuY2xhc3NMaXN0LnJlbW92ZSgnb24nKTtwbGFjZUl0ZW1zKCl9KTsKCi8qIC0tLS0gR3LDtsOfZSAtLS0tICovCmZ1bmN0aW9uIGxheW91dCgpewogIGNvbnN0IG9sZFc9VyxvbGRIPUg7CiAgZHByPU1hdGgubWluKGRldmljZVBpeGVsUmF0aW98fDEsMik7Vz1jdi5jbGllbnRXaWR0aDtIPWN2LmNsaWVudEhlaWdodDtpZighV3x8IUgpIHJldHVybjsKICBjdi53aWR0aD1XKmRwcjtjdi5oZWlnaHQ9SCpkcHI7Y3R4LnNldFRyYW5zZm9ybShkcHIsMCwwLGRwciwwLDApOwogIHNlYVk9SCouMjc7CiAgYmFza2V0Lnc9TWF0aC5tYXgoMTIwLE1hdGgubWluKDIwMCxXKi4yNCkpO2Jhc2tldC5oPWJhc2tldC53Ki43MjtiYXNrZXQueD1XLWJhc2tldC53LU1hdGgubWF4KDIyLFcqLjA1KTtiYXNrZXQueT1ILWJhc2tldC5oLU1hdGgubWF4KDI2LEgqLjA2KTsKICBidWlsZFNhbmQoKTsKICBpZighaXRlbXMubGVuZ3RoJiYhY29sbGVjdGVkKSBwbGFjZUl0ZW1zKCk7CiAgZWxzZSBpZihvbGRXKXtpdGVtcy5mb3JFYWNoKGl0PT57aXQueCo9Vy9vbGRXO2l0LnkqPUgvb2xkSH0pfQp9CmxldCByejthZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCgpPT57Y2xlYXJUaW1lb3V0KHJ6KTtyej1zZXRUaW1lb3V0KGxheW91dCwxNTApfSk7Cm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlcz0+e3Zpc2libGU9ZXNbMF0uaXNJbnRlcnNlY3Rpbmc7aWYodmlzaWJsZSl7aWYoIVcpbGF5b3V0KCk7bGFzdD1wZXJmb3JtYW5jZS5ub3coKX19LHtyb290TWFyZ2luOicxMDBweCd9KS5vYnNlcnZlKHdyYXApOwppZihkb2N1bWVudC5mb250cyYmZG9jdW1lbnQuZm9udHMucmVhZHkpIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4oKCk9PntpZihXKWJ1aWxkU2FuZCgpfSk7CnJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpOwp9KSgpOwo=<\/script>\n<script type=\"text\/atn-b64\">Ci8qIC0tLS0tLS0tLS0gUElBTlRBIFVOIEFMQkVSTyAtLS0tLS0tLS0tICovCihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CmNvbnN0IGN2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmVlQ3YnKTtpZighY3YpIHJldHVybjsKY29uc3QgY3R4PWN2LmdldENvbnRleHQoJzJkJyksd3JhcD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJlZVdyYXAnKTsKY29uc3QgZWxOPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Q291bnQnKSxlbEc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RHb2FsJyksZWxCYXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RCYXInKSxlbENvMj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndENvMicpLGVsSGludD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndEhpbnQnKSxlbERvbmU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3REb25lJyk7CmNvbnN0IEdPQUw9MjA7ZWxHLnRleHRDb250ZW50PUdPQUw7CmxldCBXPTAsSD0wLGRwcj0xLHZpc2libGU9ZmFsc2UsbGFzdD1wZXJmb3JtYW5jZS5ub3coKSxUPTAsc3RhcnRlZD1mYWxzZSxkb25lU2hvd249ZmFsc2U7CmxldCB0cmVlcz1bXSxzZWVkcz1bXSxiaXJkcz1bXSxidXR0ZXJmbGllcz1bXSxncmFzcz1bXSxiZ0N2PW51bGw7CmNvbnN0IHJuZD0oYSxiKT0+YStNYXRoLnJhbmRvbSgpKihiLWEpOwpjb25zdCBsZXJwPShhLGIsdCk9PmErKGItYSkqdDsKY29uc3QgZWFzZT10PT4xLU1hdGgucG93KDEtdCwzKTsKZnVuY3Rpb24gbWl4KGMxLGMyLHQpe3JldHVybiAncmdiKCcrWzAsMSwyXS5tYXAoaT0+TWF0aC5yb3VuZChsZXJwKGMxW2ldLGMyW2ldLHQpKSkuam9pbignLCcpKycpJ30KCi8qIEjDvGdlbC1MaW5pZSAqLwpmdW5jdGlvbiBoaWxsWSh4KXtyZXR1cm4gSCouNTYrTWF0aC5zaW4oeC9XKk1hdGguUEkqMS4xKy4zKSpIKi0uMDcrTWF0aC5zaW4oeC9XKk1hdGguUEkqMy4yKSpIKi4wMjV9CgpmdW5jdGlvbiBidWlsZEJnKCl7CiAgYmdDdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtiZ0N2LndpZHRoPVcqZHByO2JnQ3YuaGVpZ2h0PUgqZHByO2NvbnN0IGI9YmdDdi5nZXRDb250ZXh0KCcyZCcpO2Iuc2NhbGUoZHByLGRwcik7CiAgY29uc3QgZz1iLmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsMCwwLEgqLjcpO2cuYWRkQ29sb3JTdG9wKDAsJyNiZmUwZTYnKTtnLmFkZENvbG9yU3RvcCguNiwnI2VmZTdjZicpO2cuYWRkQ29sb3JTdG9wKDEsJyNmNmUzYmQnKTtiLmZpbGxTdHlsZT1nO2IuZmlsbFJlY3QoMCwwLFcsSCk7CiAgLy8gU29ubmUKICBjb25zdCBzeD1XKi43OCxzeT1IKi4yO2NvbnN0IHNnPWIuY3JlYXRlUmFkaWFsR3JhZGllbnQoc3gsc3ksMCxzeCxzeSxIKi4zNSk7c2cuYWRkQ29sb3JTdG9wKDAsJ3JnYmEoMjU1LDI0NiwyMTQsLjk1KScpO3NnLmFkZENvbG9yU3RvcCguMTIsJ3JnYmEoMjU1LDIzNiwxOTAsLjgpJyk7c2cuYWRkQ29sb3JTdG9wKDEsJ3JnYmEoMjU1LDIzNiwxOTAsMCknKTsKICBiLmZpbGxTdHlsZT1zZztiLmZpbGxSZWN0KDAsMCxXLEgpOwogIC8vIGZlcm5lIEjDvGdlbAogIFtbJ3JnYmEoMTQwLDE3MCwxNzAsLjQ1KScsLjQ2LC4wNSwxLjddLFsncmdiYSgxMjAsMTU1LDEzNSwuNTUpJywuNSwuMDYsMi40XV0uZm9yRWFjaCgoW2MsYmFzZSxhbXAsZl0sayk9PnsKICAgIGIuZmlsbFN0eWxlPWM7Yi5iZWdpblBhdGgoKTtiLm1vdmVUbygwLEgpO2ZvcihsZXQgeD0wO3g8PVc7eCs9MTApe2IubGluZVRvKHgsSCpiYXNlK01hdGguc2luKHgvVypNYXRoLlBJKmYrayoyKSpIKmFtcCtNYXRoLnNpbih4Ki4wMitrKSozKX1iLmxpbmVUbyhXLEgpO2IuZmlsbCgpOwogIH0pOwp9CmZ1bmN0aW9uIGRyYXdIaWxsKGdyZWVuKXsKICBjb25zdCB0b3A9bWl4KFsxNzYsMTQ2LDk2XSxbMTEwLDE1MCw3MF0sZ3JlZW4pLGJvdD1taXgoWzE0MCwxMTAsNzBdLFs3MCwxMTIsNTJdLGdyZWVuKTsKICBjb25zdCBnPWN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLEgqLjQ1LDAsSCk7Zy5hZGRDb2xvclN0b3AoMCx0b3ApO2cuYWRkQ29sb3JTdG9wKDEsYm90KTsKICBjdHguZmlsbFN0eWxlPWc7Y3R4LmJlZ2luUGF0aCgpO2N0eC5tb3ZlVG8oMCxIKTtmb3IobGV0IHg9MDt4PD1XO3grPTgpY3R4LmxpbmVUbyh4LGhpbGxZKHgpKTtjdHgubGluZVRvKFcsSCk7Y3R4LmNsb3NlUGF0aCgpO2N0eC5maWxsKCk7CiAgLy8gR3JhcyB3w6RjaHN0IG1pdAogIGN0eC5zdHJva2VTdHlsZT0ncmdiYSg2MCwxMDAsNDAsJysoLjE1K2dyZWVuKi41KSsnKSc7Y3R4LmxpbmVXaWR0aD0xLjI7CiAgZ3Jhc3MuZm9yRWFjaChncj0+e2NvbnN0IGg9Z3IuaCpncmVlbjtpZihoPDEpcmV0dXJuO2NvbnN0IHN3PU1hdGguc2luKFQqMS42K2dyLnApKjIqZ3JlZW47Y3R4LmJlZ2luUGF0aCgpO2N0eC5tb3ZlVG8oZ3IueCxnci55KTtjdHgucXVhZHJhdGljQ3VydmVUbyhnci54K3N3Ki41LGdyLnktaCouNixnci54K3N3LGdyLnktaCk7Y3R4LnN0cm9rZSgpfSk7CiAgLy8gRXJkLUvDtnJudW5nCiAgY3R4LmZpbGxTdHlsZT0ncmdiYSg3MCw1MCwyNSwnKyguMTIqKDEtZ3JlZW4pKSsnKSc7Z3Jhc3MuZm9yRWFjaChncj0+Y3R4LmZpbGxSZWN0KGdyLngrMyxnci55KzIsMS41LDEuNSkpOwp9CgovKiAtLS0tIELDpHVtZSAtLS0tICovCmZ1bmN0aW9uIG1ha2VUcmVlKHgseSl7CiAgY29uc3QgZGVwdGg9KHktSCouNDUpLyhIKi41NSk7Y29uc3Qgc2NhbGU9bGVycCguNDUsMS4yNSxNYXRoLm1heCgwLE1hdGgubWluKDEsZGVwdGgpKSk7CiAgY29uc3QgY29uaWZlcj1NYXRoLnJhbmRvbSgpPC4zNTsKICBjb25zdCB0PXt4LHksc2NhbGUsY29uaWZlcixnOjAscGhhc2U6cm5kKDAsNiksaHVlOnJuZCgtMTIsMTIpLGxpZ2h0OnJuZCgtNiw2KX07CiAgaWYoIWNvbmlmZXIpewogICAgLy8gw4RzdGUgcmVrdXJzaXYgdm9yYmVyZWNobmVuCiAgICBjb25zdCBzZWdzPVtdOwogICAgKGZ1bmN0aW9uIGJyKHBhcmVudCxhbmcsbGVuLGQpewogICAgICBjb25zdCBzPXtwYXJlbnQsYW5nLGxlbixkLGtpZHM6W119O3NlZ3MucHVzaChzKTsKICAgICAgaWYoZDw1KXtjb25zdCBuPWQ8Mj8yOk1hdGgucmFuZG9tKCk8LjQ\/MzoyO2ZvcihsZXQgaT0wO2k8bjtpKyspe2JyKHMsYW5nK3JuZCgtLjU1LC41NSkrKGktKG4tMSkvMikqLjQ1LGxlbipybmQoLjY2LC44KSxkKzEpfX0KICAgICAgaWYocGFyZW50KXBhcmVudC5raWRzLnB1c2gocyk7cmV0dXJuIHM7CiAgICB9KShudWxsLC1NYXRoLlBJLzIrcm5kKC0uMDgsLjA4KSxybmQoMzQsNDQpLDApOwogICAgdC5zZWdzPXNlZ3M7dC5sZWF2ZXM9c2Vncy5maWx0ZXIocz0+cy5kPj0zKS5tYXAocz0+KHtzLGJsb2JzOkFycmF5LmZyb20oe2xlbmd0aDpzLmQ+PTU\/NjozfSwoKT0+W3JuZCgtMTEsMTEpLHJuZCgtMTEsOCkscm5kKDcsMTMpLHJuZCgtMTQsMTQpXSl9KSk7CiAgfWVsc2V7dC5sYXllcnM9TWF0aC5yb3VuZChybmQoNSw3KSk7dC5oPXJuZCg5NSwxMjUpfQogIHJldHVybiB0Owp9CmZ1bmN0aW9uIGRyYXdUcmVlKHQpewogIGNvbnN0IGc9ZWFzZShNYXRoLm1pbigxLHQuZykpO2lmKGc8PTApcmV0dXJuOwogIGN0eC5zYXZlKCk7Y3R4LnRyYW5zbGF0ZSh0LngsdC55KTtjdHguc2NhbGUodC5zY2FsZSx0LnNjYWxlKTsKICBjb25zdCB3aW5kPU1hdGguc2luKFQqMS4zK3QucGhhc2UpKi4wMjUrTWF0aC5zaW4oVCouNyt0LnBoYXNlKjIpKi4wMTU7CiAgLy8gU2NoYXR0ZW4KICBjdHguZmlsbFN0eWxlPSdyZ2JhKDQwLDUwLDIwLCcrKC4xOCpnKSsnKSc7Y3R4LmJlZ2luUGF0aCgpO2N0eC5lbGxpcHNlKDEwLDIsMzIqZyw3KmcsMCwwLDcpO2N0eC5maWxsKCk7CiAgaWYodC5jb25pZmVyKXsKICAgIGNvbnN0IGg9dC5oKmc7Y3R4LmZpbGxTdHlsZT0nIzViM2UyMic7Y3R4LmZpbGxSZWN0KC0zLC1oKi4xOCw2LGgqLjIpOwogICAgZm9yKGxldCBpPTA7aTx0LmxheWVycztpKyspe2NvbnN0IHA9aS90LmxheWVycztjb25zdCB5eT0taCouMTItcCpoKi44NTtjb25zdCB3PSgxLXApKjM0KmcrNjtjb25zdCBzd2F5PXdpbmQqKHAqNDApOwogICAgICBjdHguZmlsbFN0eWxlPSdoc2woJysoMTM1K3QuaHVlKSsnLDM4JSwnKygyMitwKjEwK3QubGlnaHQpKyclKSc7Y3R4LmJlZ2luUGF0aCgpO2N0eC5tb3ZlVG8oLXcrc3dheSouNSx5eSk7Y3R4LmxpbmVUbyh3K3N3YXkqLjUseXkpO2N0eC5saW5lVG8oc3dheSx5eS1oKi4yNik7Y3R4LmNsb3NlUGF0aCgpO2N0eC5maWxsKCk7fQogIH1lbHNlewogICAgY29uc3QgcG9zPW5ldyBNYXAoKTtjb25zdCBtYXhEPWcqNjsKICAgIGN0eC5saW5lQ2FwPSdyb3VuZCc7CiAgICB0LnNlZ3MuZm9yRWFjaChzPT57CiAgICAgIGlmKHMuZD5tYXhEKXJldHVybjtjb25zdCBwYXJ0PU1hdGgubWluKDEsbWF4RC1zLmQpOwogICAgICBjb25zdCBwMD1zLnBhcmVudD9wb3MuZ2V0KHMucGFyZW50KTp7eDowLHk6MCxhOjB9O2lmKCFwMClyZXR1cm47CiAgICAgIGNvbnN0IGE9cy5hbmcrd2luZCoocy5kKzEpO2NvbnN0IEw9cy5sZW4qcGFydDsKICAgICAgY29uc3QgeDE9cDAueCtNYXRoLmNvcyhhKSpMLHkxPXAwLnkrTWF0aC5zaW4oYSkqTDtwb3Muc2V0KHMse3g6eDEseTp5MX0pOwogICAgICBjdHguc3Ryb2tlU3R5bGU9cy5kPDI\/JyM1YTNkMjInOicjNmI0YTJiJztjdHgubGluZVdpZHRoPU1hdGgubWF4KDEsKDYtcy5kKSoxLjUqTWF0aC5taW4oMSxnKjEuNikpOwogICAgICBjdHguYmVnaW5QYXRoKCk7Y3R4Lm1vdmVUbyhwMC54LHAwLnkpO2N0eC5saW5lVG8oeDEseTEpO2N0eC5zdHJva2UoKTsKICAgIH0pOwogICAgY29uc3QgbGc9TWF0aC5tYXgoMCwoZy0uNTUpLy40NSk7CiAgICBpZihsZz4wKSB0LmxlYXZlcy5mb3JFYWNoKGw9Pntjb25zdCBwPXBvcy5nZXQobC5zKTtpZighcClyZXR1cm47bC5ibG9icy5mb3JFYWNoKGI9PnsKICAgICAgY3R4LmZpbGxTdHlsZT0naHNsYSgnKygxMDUrdC5odWUrYlszXSkrJyw0MiUsJysoMzArdC5saWdodCtiWzNdKi40KSsnJSwuODUpJztjdHguYmVnaW5QYXRoKCk7Y3R4LmFyYyhwLngrYlswXSpsZyxwLnkrYlsxXSpsZyxiWzJdKmxnLDAsNyk7Y3R4LmZpbGwoKX0pfSk7CiAgfQogIGN0eC5yZXN0b3JlKCk7Cn0KCi8qIC0tLS0gVGllcmUsIHdlbm4gZGVyIFdhbGQgd8OkY2hzdCAtLS0tICovCmZ1bmN0aW9uIHVwZGF0ZUZhdW5hKGR0KXsKICBjb25zdCBuPXRyZWVzLmxlbmd0aDsKICBpZihuPj04JiZiaXJkcy5sZW5ndGg8NSYmTWF0aC5yYW5kb20oKTxkdCouNCliaXJkcy5wdXNoKHt4Oi0zMCx5OnJuZChIKi4wOCxIKi4zKSx2OnJuZCg0MCw3MCkscDpybmQoMCw2KSxzOnJuZCguNywxLjEpfSk7CiAgaWYobj49MTQmJmJ1dHRlcmZsaWVzLmxlbmd0aDw0JiZNYXRoLnJhbmRvbSgpPGR0Ki41KWJ1dHRlcmZsaWVzLnB1c2goe3g6cm5kKDAsVykseTpybmQoSCouNTUsSCouOSkscDpybmQoMCw2KSxjOk1hdGgucmFuZG9tKCk8LjU\/JyNmMmMyMzAnOicjZjZmMWU2J30pOwogIGJpcmRzLmZvckVhY2goYj0+e2IueCs9Yi52KmR0fSk7YmlyZHM9YmlyZHMuZmlsdGVyKGI9PmIueDxXKzQwKTsKICBidXR0ZXJmbGllcy5mb3JFYWNoKGI9PntiLngrPU1hdGguc2luKFQqLjgrYi5wKSozMCpkdCsxMCpkdDtiLnkrPU1hdGguY29zKFQqMS4zK2IucCkqMjAqZHQ7aWYoYi54PlcrMjApYi54PS0yMH0pOwp9CmZ1bmN0aW9uIGRyYXdGYXVuYSgpewogIGN0eC5zdHJva2VTdHlsZT0ncmdiYSg0MCw1MCw0NSwuNzUpJztjdHgubGluZVdpZHRoPTEuNjsKICBiaXJkcy5mb3JFYWNoKGI9Pntjb25zdCBmPU1hdGguc2luKFQqOCtiLnApKjUqYi5zO2N0eC5iZWdpblBhdGgoKTtjdHgubW92ZVRvKGIueC04KmIucyxiLnktZik7Y3R4LnF1YWRyYXRpY0N1cnZlVG8oYi54LTMqYi5zLGIueS0yLGIueCxiLnkpO2N0eC5xdWFkcmF0aWNDdXJ2ZVRvKGIueCszKmIucyxiLnktMixiLngrOCpiLnMsYi55LWYpO2N0eC5zdHJva2UoKX0pOwogIGJ1dHRlcmZsaWVzLmZvckVhY2goYj0+e2NvbnN0IGY9TWF0aC5hYnMoTWF0aC5zaW4oVCoxNCtiLnApKTtjdHguZmlsbFN0eWxlPWIuYztjdHguYmVnaW5QYXRoKCk7Y3R4LmVsbGlwc2UoYi54LTMqZixiLnksNCpmKzEsMywwLDAsNyk7Y3R4LmVsbGlwc2UoYi54KzMqZixiLnksNCpmKzEsMywwLDAsNyk7Y3R4LmZpbGwoKX0pOwp9CgovKiAtLS0tIFNwaWVsIC0tLS0gKi8KY29uc3QgQ08yPTIyOyAvLyBrZyBDTzIgcHJvIEphaHIsIGdyb2JlciBNaXR0ZWx3ZXJ0IGbDvHIgZWluZW4gYXVzZ2V3YWNoc2VuZW4gQmF1bQpmdW5jdGlvbiB1cGRhdGVIdWQoKXsKICBjb25zdCBuPXRyZWVzLmxlbmd0aDtlbE4udGV4dENvbnRlbnQ9bjtlbEJhci5zdHlsZS53aWR0aD1NYXRoLm1pbigxMDAsbi9HT0FMKjEwMCkrJyUnO2VsQ28yLnRleHRDb250ZW50PShuKkNPMikudG9Mb2NhbGVTdHJpbmcoJ2l0LUlUJyk7CiAgaWYobj49R09BTCYmIWRvbmVTaG93bil7ZG9uZVNob3duPXRydWU7c2V0VGltZW91dCgoKT0+ZWxEb25lLmNsYXNzTGlzdC5hZGQoJ29uJyksMjYwMCl9Cn0KZnVuY3Rpb24gcGxhbnQocHgscHkpewogIGlmKCFzdGFydGVkKXtzdGFydGVkPXRydWU7ZWxIaW50LmNsYXNzTGlzdC5hZGQoJ29mZicpfQogIGNvbnN0IHN1cmY9aGlsbFkocHgpO2NvbnN0IHR5PU1hdGgubWF4KHB5LHN1cmYrNik7aWYodHk+SC0xMClyZXR1cm47CiAgc2VlZHMucHVzaCh7eDpweCx5Ok1hdGgubWluKHB5LHR5LTQwKSx0eSx2eTowfSk7Cn0KZnVuY3Rpb24gc3RlcChkdCl7CiAgVCs9ZHQ7CiAgc2VlZHMuZm9yRWFjaChzPT57cy52eSs9OTAwKmR0O3MueSs9cy52eSpkdDtpZihzLnk+PXMudHkpe3MuZG9uZT10cnVlO3RyZWVzLnB1c2gobWFrZVRyZWUocy54LHMudHkpKTt0cmVlcy5zb3J0KChhLGIpPT5hLnktYi55KTt1cGRhdGVIdWQoKX19KTsKICBzZWVkcz1zZWVkcy5maWx0ZXIocz0+IXMuZG9uZSk7CiAgdHJlZXMuZm9yRWFjaCh0PT57aWYodC5nPDEpdC5nKz1kdC8yLjZ9KTsKICB1cGRhdGVGYXVuYShkdCk7Cn0KZnVuY3Rpb24gcmVuZGVyKG5vdyl7CiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7aWYoIXZpc2libGV8fCFXKXJldHVybjsKICBjb25zdCBkdD1NYXRoLm1heCgwLE1hdGgubWluKC4wNSwobm93LWxhc3QpLzEwMDApKTtsYXN0PW5vdztzdGVwKGR0KTsKICBjdHguZHJhd0ltYWdlKGJnQ3YsMCwwLFcsSCk7CiAgZHJhd0ZhdW5hKCk7CiAgY29uc3QgZ3JlZW49TWF0aC5taW4oMSx0cmVlcy5sZW5ndGgvR09BTCk7CiAgZHJhd0hpbGwoZ3JlZW4pOwogIHRyZWVzLmZvckVhY2goZHJhd1RyZWUpOwogIGN0eC5maWxsU3R5bGU9JyM2YjRhMmInO3NlZWRzLmZvckVhY2gocz0+e2N0eC5iZWdpblBhdGgoKTtjdHguZWxsaXBzZShzLngscy55LDMsNC41LDAsMCw3KTtjdHguZmlsbCgpfSk7Cn0KY3YuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLGU9Pntjb25zdCByPWN2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3BsYW50KGUuY2xpZW50WC1yLmxlZnQsZS5jbGllbnRZLXIudG9wKX0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndEFnYWluJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpPT57dHJlZXM9W107YmlyZHM9W107YnV0dGVyZmxpZXM9W107ZG9uZVNob3duPWZhbHNlO2VsRG9uZS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpO3VwZGF0ZUh1ZCgpfSk7CgpmdW5jdGlvbiBsYXlvdXQoKXsKICBjb25zdCBvVz1XLG9IPUg7ZHByPU1hdGgubWluKGRldmljZVBpeGVsUmF0aW98fDEsMik7Vz1jdi5jbGllbnRXaWR0aDtIPWN2LmNsaWVudEhlaWdodDtpZighVylyZXR1cm47CiAgY3Yud2lkdGg9VypkcHI7Y3YuaGVpZ2h0PUgqZHByO2N0eC5zZXRUcmFuc2Zvcm0oZHByLDAsMCxkcHIsMCwwKTtidWlsZEJnKCk7CiAgZ3Jhc3M9W107Zm9yKGxldCBpPTA7aTxXKjEuMTtpKyspe2NvbnN0IHg9cm5kKDAsVyk7Y29uc3QgeT1ybmQoaGlsbFkoeCkrMixIKTtncmFzcy5wdXNoKHt4LHksaDpybmQoNCwxMSkqKC42Kyh5LUgqLjUpL0gpLHA6cm5kKDAsNil9KX0KICBpZihvVyl7dHJlZXMuZm9yRWFjaCh0PT57dC54Kj1XL29XO3QueSo9SC9vSH0pfQp9CmxldCByejthZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCgpPT57Y2xlYXJUaW1lb3V0KHJ6KTtyej1zZXRUaW1lb3V0KGxheW91dCwxNTApfSk7Cm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlcz0+e3Zpc2libGU9ZXNbMF0uaXNJbnRlcnNlY3Rpbmc7aWYodmlzaWJsZSl7aWYoIVcpbGF5b3V0KCk7bGFzdD1wZXJmb3JtYW5jZS5ub3coKX19LHtyb290TWFyZ2luOicxMDBweCd9KS5vYnNlcnZlKHdyYXApOwp1cGRhdGVIdWQoKTtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTsKfSkoKTsK<\/script>\n<script type=\"text\/atn-b64\">Ci8qIC0tLS0tLS0tLS0gRE9WRSBTSUFNTyBTVEFUSTogR2xvYnVzIC0tLS0tLS0tLS0gKi8KKGZ1bmN0aW9uKCl7CiJ1c2Ugc3RyaWN0IjsKY29uc3QgY3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dsb2JlQ3YnKTtpZighY3YpIHJldHVybjsKY29uc3QgY3R4PWN2LmdldENvbnRleHQoJzJkJyksd3JhcD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2xvYmVXcmFwJyksdGlwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbG9iZVRpcCcpOwovLyBbSVNPLU51bW1lciwgTmFtZSwgQnJlaXRlLCBMw6RuZ2UsIEtvbnRpbmVudF0KY29uc3QgQz1bClsnMDQ4JywnQmFocmVpbicsMjYuMDUsNTAuNTUsJ0FzaWEnXSxbJzE1NicsJ0NpbmEnLDM1LjksMTA0LjIsJ0FzaWEnXSxbJzM2MCcsJ0luZG9uZXNpYScsLTIuNSwxMTgsJ0FzaWEnXSxbJzQwMCcsJ0dpb3JkYW5pYScsMzEuMiwzNi41LCdBc2lhJ10sWyc0NTgnLCdNYWxlc2lhJyw0LjIsMTAxLjksJ0FzaWEnXSxbJzYzNCcsJ1FhdGFyJywyNS4zLDUxLjIsJ0FzaWEnXSxbJzE1OCcsJ1RhaXdhbicsMjMuNywxMjEsJ0FzaWEnXSxbJzc2NCcsJ1RoYWlsYW5kaWEnLDE1LjgsMTAxLCdBc2lhJ10sWyc3ODQnLCdFbWlyYXRpIEFyYWJpIFVuaXRpJywyNCw1NCwnQXNpYSddLFsnNzA0JywnVmlldG5hbScsMTYsMTA3LjgsJ0FzaWEnXSxbJzQxOCcsJ0xhb3MnLDE5LjgsMTAyLjUsJ0FzaWEnXSxbJzExNicsJ0NhbWJvZ2lhJywxMi42LDEwNC45LCdBc2lhJ10sWyc0MTAnLCdDb3JlYSBkZWwgU3VkJywzNi40LDEyNy45LCdBc2lhJ10sWyczOTInLCdHaWFwcG9uZScsMzYuMiwxMzguMywnQXNpYSddLApbJzEzMicsJ0NhcG8gVmVyZGUnLDE1LjEsLTIzLjYsJ0FmcmljYSddLFsnODE4JywnRWdpdHRvJywyNi44LDMwLjgsJ0FmcmljYSddLFsnNTA0JywnTWFyb2NjbycsMzEuOCwtNy4xLCdBZnJpY2EnXSxbJzUxNicsJ05hbWliaWEnLC0yMi42LDE3LjEsJ0FmcmljYSddLFsnNzEwJywnU3VkYWZyaWNhJywtMzAuNiwyMi45LCdBZnJpY2EnXSxbJzcxNicsJ1ppbWJhYndlJywtMTksMjkuMiwnQWZyaWNhJ10sWyc2OTAnLCdTZXljaGVsbGVzJywtNC42OCw1NS40OSwnQWZyaWNhJ10sClsnNjQzJywnUnVzc2lhJyw2MS41LDk2LCdFdXJvcGEnXSxbJzA0MCcsJ0F1c3RyaWEnLDQ3LjUsMTQuNiwnRXVyb3BhJ10sWycwNTYnLCdCZWxnaW8nLDUwLjUsNC41LCdFdXJvcGEnXSxbJzAyMCcsJ0FuZG9ycmEnLDQyLjUsMS41LCdFdXJvcGEnXSxbJzE5MScsJ0Nyb2F6aWEnLDQ1LjEsMTUuMiwnRXVyb3BhJ10sWycxOTYnLCdDaXBybycsMzUuMSwzMy40LCdFdXJvcGEnXSxbJzIwMycsJ1JlcHViYmxpY2EgQ2VjYScsNDkuOCwxNS41LCdFdXJvcGEnXSxbJzYxNicsJ1BvbG9uaWEnLDUxLjksMTkuMSwnRXVyb3BhJ10sWycyMDgnLCdEYW5pbWFyY2EnLDU2LjMsOS41LCdFdXJvcGEnXSxbJzIzMycsJ0VzdG9uaWEnLDU4LjYsMjUsJ0V1cm9wYSddLFsnMjUwJywnRnJhbmNpYScsNDYuMiwyLjIsJ0V1cm9wYSddLFsnMjc2JywnR2VybWFuaWEnLDUxLjIsMTAuNCwnRXVyb3BhJ10sWyczODAnLCdJdGFsaWEnLDQxLjksMTIuNiwnRXVyb3BhJ10sWycyOTInLCdHaWJpbHRlcnJhJywzNi4xNCwtNS4zNSwnRXVyb3BhJ10sWyc2NzQnLCdTYW4gTWFyaW5vJyw0My45NCwxMi40NiwnRXVyb3BhJ10sWyczMDAnLCdHcmVjaWEnLDM5LjEsMjEuOCwnRXVyb3BhJ10sWyczNDgnLCdVbmdoZXJpYScsNDcuMiwxOS41LCdFdXJvcGEnXSxbJzMzNicsJ0NpdHTDoCBkZWwgVmF0aWNhbm8nLDQxLjksMTIuNDUsJ0V1cm9wYSddLFsnNDI4JywnTGV0dG9uaWEnLDU2LjksMjQuNiwnRXVyb3BhJ10sWyc0MzgnLCdMaWVjaHRlbnN0ZWluJyw0Ny4xNyw5LjU1LCdFdXJvcGEnXSxbJzQ0MCcsJ0xpdHVhbmlhJyw1NS4yLDIzLjksJ0V1cm9wYSddLFsnNDQyJywnTHVzc2VtYnVyZ28nLDQ5LjgsNi4xLCdFdXJvcGEnXSxbJzQ3MCcsJ01hbHRhJywzNS45LDE0LjQsJ0V1cm9wYSddLFsnNDkyJywnTW9uYWNvJyw0My43NCw3LjQyLCdFdXJvcGEnXSxbJzUyOCcsJ1BhZXNpIEJhc3NpJyw1Mi4xLDUuMywnRXVyb3BhJ10sWyc1NzgnLCdOb3J2ZWdpYScsNjAuNSw4LjUsJ0V1cm9wYSddLFsnNjIwJywnUG9ydG9nYWxsbycsMzkuNCwtOC4yLCdFdXJvcGEnXSxbJzY0MicsJ1JvbWFuaWEnLDQ1LjksMjUsJ0V1cm9wYSddLFsnNzAzJywnU2xvdmFjY2hpYScsNDguNywxOS43LCdFdXJvcGEnXSxbJzcyNCcsJ1NwYWduYScsNDAuNSwtMy43LCdFdXJvcGEnXSxbJzcwNScsJ1Nsb3ZlbmlhJyw0Ni4xNSwxNC45OSwnRXVyb3BhJ10sWyc3NTInLCdTdmV6aWEnLDYwLjEsMTguNiwnRXVyb3BhJ10sWyc3NTYnLCdTdml6emVyYScsNDYuOCw4LjIsJ0V1cm9wYSddLFsnODI2JywnUmVnbm8gVW5pdG8nLDU0LC0yLCdFdXJvcGEnXSwKWycxMjQnLCdDYW5hZGEnLDU2LjEsLTEwNi4zLCdBbWVyaWNhJ10sWycxOTInLCdDdWJhJywyMS41LC03Ny44LCdBbWVyaWNhJ10sWyc4NDAnLCdTdGF0aSBVbml0aScsMzkuOCwtOTguNiwnQW1lcmljYSddLFsnMjE4JywnRWN1YWRvcicsLTEuOCwtNzguMiwnQW1lcmljYSddLApbJzAzNicsJ0F1c3RyYWxpYScsLTI1LjMsMTMzLjgsJ09jZWFuaWEnXSxbJzE4NCcsJ0lzb2xlIENvb2snLC0yMS4yLC0xNTkuOCwnT2NlYW5pYSddLFsnNTU0JywnTnVvdmEgWmVsYW5kYScsLTQwLjksMTc0LjksJ09jZWFuaWEnXSxbJzc3NicsJ1RvbmdhJywtMjEuMiwtMTc1LjIsJ09jZWFuaWEnXQpdOwpjb25zdCBOTT17IjA0OCI6IFsiQmFocmFpbiIsICJCYWhyYWluIl0sICIxNTYiOiBbIkNoaW5hIiwgIkNoaW5hIl0sICIzNjAiOiBbIkluZG9uZXNpYSIsICJJbmRvbmVzaWVuIl0sICI0MDAiOiBbIkpvcmRhbiIsICJKb3JkYW5pZW4iXSwgIjQ1OCI6IFsiTWFsYXlzaWEiLCAiTWFsYXlzaWEiXSwgIjYzNCI6IFsiUWF0YXIiLCAiS2F0YXIiXSwgIjE1OCI6IFsiVGFpd2FuIiwgIlRhaXdhbiJdLCAiNzY0IjogWyJUaGFpbGFuZCIsICJUaGFpbGFuZCJdLCAiNzg0IjogWyJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJWZXJlaW5pZ3RlIEFyYWJpc2NoZSBFbWlyYXRlIl0sICI3MDQiOiBbIlZpZXRuYW0iLCAiVmlldG5hbSJdLCAiNDE4IjogWyJMYW9zIiwgIkxhb3MiXSwgIjExNiI6IFsiQ2FtYm9kaWEiLCAiS2FtYm9kc2NoYSJdLCAiNDEwIjogWyJTb3V0aCBLb3JlYSIsICJTw7xka29yZWEiXSwgIjM5MiI6IFsiSmFwYW4iLCAiSmFwYW4iXSwgIjEzMiI6IFsiQ2FwZSBWZXJkZSIsICJLYXAgVmVyZGUiXSwgIjgxOCI6IFsiRWd5cHQiLCAiw4RneXB0ZW4iXSwgIjUwNCI6IFsiTW9yb2NjbyIsICJNYXJva2tvIl0sICI1MTYiOiBbIk5hbWliaWEiLCAiTmFtaWJpYSJdLCAiNzEwIjogWyJTb3V0aCBBZnJpY2EiLCAiU8O8ZGFmcmlrYSJdLCAiNzE2IjogWyJaaW1iYWJ3ZSIsICJTaW1iYWJ3ZSJdLCAiNjkwIjogWyJTZXljaGVsbGVzIiwgIlNleWNoZWxsZW4iXSwgIjY0MyI6IFsiUnVzc2lhIiwgIlJ1c3NsYW5kIl0sICIwNDAiOiBbIkF1c3RyaWEiLCAiw5ZzdGVycmVpY2giXSwgIjA1NiI6IFsiQmVsZ2l1bSIsICJCZWxnaWVuIl0sICIwMjAiOiBbIkFuZG9ycmEiLCAiQW5kb3JyYSJdLCAiMTkxIjogWyJDcm9hdGlhIiwgIktyb2F0aWVuIl0sICIxOTYiOiBbIkN5cHJ1cyIsICJaeXBlcm4iXSwgIjIwMyI6IFsiQ3plY2ggUmVwdWJsaWMiLCAiVHNjaGVjaGllbiJdLCAiNjE2IjogWyJQb2xhbmQiLCAiUG9sZW4iXSwgIjIwOCI6IFsiRGVubWFyayIsICJEw6RuZW1hcmsiXSwgIjIzMyI6IFsiRXN0b25pYSIsICJFc3RsYW5kIl0sICIyNTAiOiBbIkZyYW5jZSIsICJGcmFua3JlaWNoIl0sICIyNzYiOiBbIkdlcm1hbnkiLCAiRGV1dHNjaGxhbmQiXSwgIjM4MCI6IFsiSXRhbHkiLCAiSXRhbGllbiJdLCAiMjkyIjogWyJHaWJyYWx0YXIiLCAiR2licmFsdGFyIl0sICI2NzQiOiBbIlNhbiBNYXJpbm8iLCAiU2FuIE1hcmlubyJdLCAiMzAwIjogWyJHcmVlY2UiLCAiR3JpZWNoZW5sYW5kIl0sICIzNDgiOiBbIkh1bmdhcnkiLCAiVW5nYXJuIl0sICIzMzYiOiBbIlZhdGljYW4gQ2l0eSIsICJWYXRpa2Fuc3RhZHQiXSwgIjQyOCI6IFsiTGF0dmlhIiwgIkxldHRsYW5kIl0sICI0MzgiOiBbIkxpZWNodGVuc3RlaW4iLCAiTGllY2h0ZW5zdGVpbiJdLCAiNDQwIjogWyJMaXRodWFuaWEiLCAiTGl0YXVlbiJdLCAiNDQyIjogWyJMdXhlbWJvdXJnIiwgIkx1eGVtYnVyZyJdLCAiNDcwIjogWyJNYWx0YSIsICJNYWx0YSJdLCAiNDkyIjogWyJNb25hY28iLCAiTW9uYWNvIl0sICI1MjgiOiBbIk5ldGhlcmxhbmRzIiwgIk5pZWRlcmxhbmRlIl0sICI1NzgiOiBbIk5vcndheSIsICJOb3J3ZWdlbiJdLCAiNjIwIjogWyJQb3J0dWdhbCIsICJQb3J0dWdhbCJdLCAiNjQyIjogWyJSb21hbmlhIiwgIlJ1bcOkbmllbiJdLCAiNzAzIjogWyJTbG92YWtpYSIsICJTbG93YWtlaSJdLCAiNzI0IjogWyJTcGFpbiIsICJTcGFuaWVuIl0sICI3MDUiOiBbIlNsb3ZlbmlhIiwgIlNsb3dlbmllbiJdLCAiNzUyIjogWyJTd2VkZW4iLCAiU2Nod2VkZW4iXSwgIjc1NiI6IFsiU3dpdHplcmxhbmQiLCAiU2Nod2VpeiJdLCAiODI2IjogWyJVbml0ZWQgS2luZ2RvbSIsICJWZXJlaW5pZ3RlcyBLw7ZuaWdyZWljaCJdLCAiMTI0IjogWyJDYW5hZGEiLCAiS2FuYWRhIl0sICIxOTIiOiBbIkN1YmEiLCAiS3ViYSJdLCAiODQwIjogWyJVbml0ZWQgU3RhdGVzIiwgIlVTQSJdLCAiMjE4IjogWyJFY3VhZG9yIiwgIkVjdWFkb3IiXSwgIjAzNiI6IFsiQXVzdHJhbGlhIiwgIkF1c3RyYWxpZW4iXSwgIjE4NCI6IFsiQ29vayBJc2xhbmRzIiwgIkNvb2tpbnNlbG4iXSwgIjU1NCI6IFsiTmV3IFplYWxhbmQiLCAiTmV1c2VlbGFuZCJdLCAiNzc2IjogWyJUb25nYSIsICJUb25nYSJdfTtpZihBVE5fTEFORyE9PSdpdCcpQy5mb3JFYWNoKGM9Pntjb25zdCBuPU5NW2NbMF1dO2lmKG4pY1sxXT1BVE5fTEFORz09PSdlbic\/blswXTpuWzFdfSk7CmNvbnN0IENOPXtFdXJvcGE6TCgnRXVyb3BhJywnRXVyb3BlJywnRXVyb3BhJyksQXNpYTpMKCdBc2lhJywnQXNpYScsJ0FzaWVuJyksQWZyaWNhOkwoJ0FmcmljYScsJ0FmcmljYScsJ0FmcmlrYScpLEFtZXJpY2E6TCgnQW1lcmljYScsJ0FtZXJpY2FzJywnQW1lcmlrYScpLE9jZWFuaWE6TCgnT2NlYW5pYScsJ09jZWFuaWEnLCdPemVhbmllbicpLFR1dHRpOkwoJ1R1dHRpJywnQWxsJywnQWxsZScpfTsKY29uc3QgSE9NRT1bMTQuMDIsMzguMDRdOyAvLyBDZWZhbMO5CmNvbnN0IGJ5SWQ9bmV3IE1hcChDLm1hcChjPT5bY1swXSxjXSkpOwpjb25zdCBDT05UPVsnRXVyb3BhJywnQXNpYScsJ0FmcmljYScsJ0FtZXJpY2EnLCdPY2VhbmlhJ107CgovKiBaYWhsZW4gKyBMw6RuZGVybGlzdGUgaW5zIEhUTUwgKGF1Y2ggZ3V0IGbDvHIgR29vZ2xlKSAqLwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ1RvdGFsJykudGV4dENvbnRlbnQ9Qy5sZW5ndGg7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnQ29udCcpLnRleHRDb250ZW50PUNPTlQubGVuZ3RoOwpjb25zdCB0YWJzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnVGFicycpLGNoaXBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnQ2hpcHMnKTsKbGV0IGN1ckNvbnQ9J1R1dHRpJzsKZnVuY3Rpb24gcmVuZGVyQ2hpcHMoKXsKICBjaGlwcy5pbm5lckhUTUw9Jyc7CiAgQy5maWx0ZXIoYz0+Y3VyQ29udD09PSdUdXR0aSd8fGNbNF09PT1jdXJDb250KS5zb3J0KChhLGIpPT5hWzFdLmxvY2FsZUNvbXBhcmUoYlsxXSxBVE5fTEFORykpLmZvckVhY2goYz0+ewogICAgY29uc3QgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtiLmNsYXNzTmFtZT0nY2hpcCcrKHNlbCYmc2VsWzBdPT09Y1swXT8nIG9uJzonJyk7Yi50ZXh0Q29udGVudD1jWzFdO2Iub25jbGljaz0oKT0+c2VsZWN0KGMsdHJ1ZSk7Y2hpcHMuYXBwZW5kQ2hpbGQoYik7CiAgfSk7Cn0KWydUdXR0aScsLi4uQ09OVF0uZm9yRWFjaChrPT57Y29uc3QgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtiLmNsYXNzTmFtZT0ndGFiJysoaz09PSdUdXR0aSc\/JyBvbic6JycpOwogIGNvbnN0IG49az09PSdUdXR0aSc\/Qy5sZW5ndGg6Qy5maWx0ZXIoYz0+Y1s0XT09PWspLmxlbmd0aDtiLmlubmVySFRNTD1DTltrXSsnIDxpPicrbisnPC9pPic7CiAgYi5vbmNsaWNrPSgpPT57Y3VyQ29udD1rO1suLi50YWJzLmNoaWxkcmVuXS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnRvZ2dsZSgnb24nLHg9PT1iKSk7cmVuZGVyQ2hpcHMoKTsKICAgIGlmKGshPT0nVHV0dGknKXtjb25zdCBjcz1DLmZpbHRlcihjPT5jWzRdPT09ayk7Y29uc3QgbG9uPWNzLnJlZHVjZSgocyxjKT0+cytjWzNdLDApL2NzLmxlbmd0aCxsYXQ9Y3MucmVkdWNlKChzLGMpPT5zK2NbMl0sMCkvY3MubGVuZ3RoO3JvdGF0ZVRvKGxvbixsYXQpfX07CiAgdGFicy5hcHBlbmRDaGlsZChiKX0pOwpsZXQgc2VsPW51bGw7cmVuZGVyQ2hpcHMoKTsKCi8qIC0tLS0gQmlibGlvdGhla2VuIGVyc3QgbGFkZW4sIHdlbm4gZGVyIEdsb2J1cyBpbiBkaWUgTsOkaGUga29tbXQgLS0tLSAqLwpmdW5jdGlvbiBsb2FkU2NyaXB0KHNyYyl7cmV0dXJuIG5ldyBQcm9taXNlKChyZXMscmVqKT0+e2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7cy5zcmM9c3JjO3Mub25sb2FkPXJlcztzLm9uZXJyb3I9cmVqO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyl9KX0KbGV0IHJlYWR5PWZhbHNlLGxhbmQ9bnVsbCxmZWF0cz1bXSxXPTAsSD0wLFI9MCxkcHI9MSxwcm9qPW51bGwscGF0aD1udWxsLGdyYXQ9bnVsbCx2aXNpYmxlPWZhbHNlOwpsZXQgcm90PVstSE9NRVswXS0yMCwtMjUsMF0sdmVsPTAsZHJhZ2dpbmc9ZmFsc2UsaG92ZXI9bnVsbCxpZGxlPTAsYW5pbT1udWxsLGFyYz1udWxsLGxhc3Q9cGVyZm9ybWFuY2Uubm93KCksVD0wOwphc3luYyBmdW5jdGlvbiBpbml0KCl7CiAgdHJ5ewogICAgYXdhaXQgbG9hZFNjcmlwdCgnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9kMy1hcnJheUAzLjIuNC9kaXN0L2QzLWFycmF5Lm1pbi5qcycpOwogICAgYXdhaXQgbG9hZFNjcmlwdCgnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9kMy1nZW9AMy4xLjEvZGlzdC9kMy1nZW8ubWluLmpzJyk7CiAgICBhd2FpdCBsb2FkU2NyaXB0KCdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3RvcG9qc29uLWNsaWVudEAzLjEuMC9kaXN0L3RvcG9qc29uLWNsaWVudC5taW4uanMnKTsKICAgIGNvbnN0IHRvcG89YXdhaXQgZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vd29ybGQtYXRsYXNAMi4wLjIvY291bnRyaWVzLTExMG0uanNvbicpLnRoZW4ocj0+ci5qc29uKCkpOwogICAgZmVhdHM9dG9wb2pzb24uZmVhdHVyZSh0b3BvLHRvcG8ub2JqZWN0cy5jb3VudHJpZXMpLmZlYXR1cmVzOwogICAgZmVhdHMuZm9yRWFjaChmPT57Zi5pZD1TdHJpbmcoZi5pZHx8JycpLnBhZFN0YXJ0KDMsJzAnKTtmLnY9YnlJZC5oYXMoZi5pZCl9KTsKICAgIGxhbmQ9dG9wb2pzb24ubWVzaCh0b3BvLHRvcG8ub2JqZWN0cy5jb3VudHJpZXMsKGEsYik9PmEhPT1iKTsKICAgIGNvbnN0IGhhdmU9bmV3IFNldChmZWF0cy5tYXAoZj0+Zi5pZCkpO0MuZm9yRWFjaChjPT5jLmRvdD0haGF2ZS5oYXMoY1swXSkpOyAvLyBLbGVpbnN0YWF0ZW4gYWxzIFB1bmt0CiAgICBwcm9qPWQzLmdlb09ydGhvZ3JhcGhpYygpLmNsaXBBbmdsZSg5MCkucHJlY2lzaW9uKDEpO2ZlYXRzLmZvckVhY2goZj0+e2YuYz1kMy5nZW9DZW50cm9pZChmKX0pO3BhdGg9ZDMuZ2VvUGF0aChwcm9qLGN0eCk7Z3JhdD1kMy5nZW9HcmF0aWN1bGUxMCgpOwogICAgcmVhZHk9dHJ1ZTtsYXlvdXQoKTt3cmFwLmNsYXNzTGlzdC5hZGQoJ3JlYWR5Jyk7CiAgfWNhdGNoKGUpe2NvbnNvbGUud2FybignR2xvYm8gbm9uIGRpc3BvbmliaWxlJyxlKTt3cmFwLmNsYXNzTGlzdC5hZGQoJ2ZhaWxlZCcpfQp9CmZ1bmN0aW9uIGxheW91dCgpewogIGRwcj1NYXRoLm1pbihkZXZpY2VQaXhlbFJhdGlvfHwxLDEuNSk7Vz1jdi5jbGllbnRXaWR0aDtIPWN2LmNsaWVudEhlaWdodDtpZighVylyZXR1cm47CiAgY3Yud2lkdGg9VypkcHI7Y3YuaGVpZ2h0PUgqZHByO2N0eC5zZXRUcmFuc2Zvcm0oZHByLDAsMCxkcHIsMCwwKTtSPU1hdGgubWluKFcsSCkqLjQ2OwogIGlmKHByb2opcHJvai50cmFuc2xhdGUoW1cvMixILzJdKS5zY2FsZShSKTsKfQpmdW5jdGlvbiByb3RhdGVUbyhsb24sbGF0KXsKICBjb25zdCBmcm9tPXJvdC5zbGljZSgpLHRvPVstbG9uLE1hdGgubWF4KC01MCxNYXRoLm1pbig1MCwtbGF0KSksMF07CiAgbGV0IGQ9KCh0b1swXS1mcm9tWzBdKSUzNjArNTQwKSUzNjAtMTgwO3RvWzBdPWZyb21bMF0rZDthbmltPXtmcm9tLHRvLHQ6MH07dmVsPTA7aWRsZT0tNDsKfQpmdW5jdGlvbiBzZWxlY3QoYyxmcm9tQ2hpcCl7CiAgc2VsPWM7cmVuZGVyQ2hpcHMoKTtyb3RhdGVUbyhjWzNdLGNbMl0pOwogIGFyYz17dG86W2NbM10sY1syXV0sdDowfTsKICB0aXAuaW5uZXJIVE1MPSc8Yj4nK2NbMV0rJzwvYj48c3Bhbj4nK0NOW2NbNF1dKyc8L3NwYW4+Jzt0aXAuY2xhc3NMaXN0LmFkZCgnb24nKTsKICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2F0bjpnbG9iZScse2RldGFpbDpjWzFdfSkpOwp9CmZ1bmN0aW9uIGRyYXcoKXsKICBpZighcmVhZHl8fCFXKXJldHVybjsKICBwcm9qLnJvdGF0ZShyb3QpO2N0eC5jbGVhclJlY3QoMCwwLFcsSCk7CiAgLy8gQXRtb3NwaMOkcmUKICBjb25zdCBhZz1jdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoVy8yLEgvMixSKi45LFcvMixILzIsUioxLjE4KTthZy5hZGRDb2xvclN0b3AoMCwncmdiYSgyMDcsMjM4LDE5NCwuMjIpJyk7YWcuYWRkQ29sb3JTdG9wKDEsJ3JnYmEoMjA3LDIzOCwxOTQsMCknKTtjdHguZmlsbFN0eWxlPWFnO2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKFcvMixILzIsUioxLjIsMCw3KTtjdHguZmlsbCgpOwogIC8vIE1lZXIKICBjb25zdCBvZz1jdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoVy8yLVIqLjM1LEgvMi1SKi40LFIqLjEsVy8yLEgvMixSKTtvZy5hZGRDb2xvclN0b3AoMCwnIzFmNWQ2ZScpO29nLmFkZENvbG9yU3RvcCgxLCcjMGEyNDMwJyk7CiAgY3R4LmJlZ2luUGF0aCgpO3BhdGgoe3R5cGU6J1NwaGVyZSd9KTtjdHguZmlsbFN0eWxlPW9nO2N0eC5maWxsKCk7CiAgY3R4LmJlZ2luUGF0aCgpO3BhdGgoZ3JhdCk7Y3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDIwNywyMzgsMTk0LC4wOCknO2N0eC5saW5lV2lkdGg9LjY7Y3R4LnN0cm9rZSgpOwogIC8vIEzDpG5kZXIKICBjb25zdCBjdHI9Wy1yb3RbMF0sLXJvdFsxXV07ZmVhdHMuZm9yRWFjaChmPT57aWYoZi5jJiZkMy5nZW9EaXN0YW5jZShmLmMsY3RyKT4yLjMpcmV0dXJuO2N0eC5iZWdpblBhdGgoKTtwYXRoKGYpOwogICAgY3R4LmZpbGxTdHlsZT1mLnY\/KGhvdmVyPT09Znx8c2VsJiZzZWxbMF09PT1mLmlkPycjZWZmZGU2JzonI2E5ZGM5NScpOidyZ2JhKDI0NiwyNDEsMjMwLC4xNCknO2N0eC5maWxsKCl9KTsKICBjdHguYmVnaW5QYXRoKCk7cGF0aChsYW5kKTtjdHguc3Ryb2tlU3R5bGU9J3JnYmEoMTAsMzYsNDgsLjYpJztjdHgubGluZVdpZHRoPS42O2N0eC5zdHJva2UoKTsKICAvLyBQdW5rdGUgZsO8ciBLbGVpbnN0YWF0ZW4gJiBJbnNlbG4KICBjb25zdCBwdWxzZT0oTWF0aC5zaW4oVCozKSsxKS8yOwogIEMuZm9yRWFjaChjPT57aWYoIWMuZG90KXJldHVybjtjb25zdCBwPXByb2ooW2NbM10sY1syXV0pO2lmKCFwfHwhdmlzaWJsZU9uU3BoZXJlKGNbM10sY1syXSkpcmV0dXJuOwogICAgY3R4LmZpbGxTdHlsZT0ncmdiYSgyMDcsMjM4LDE5NCwnKyguMjUrLjI1KnB1bHNlKSsnKSc7Y3R4LmJlZ2luUGF0aCgpO2N0eC5hcmMocFswXSxwWzFdLDQrcHVsc2UqNCwwLDcpO2N0eC5maWxsKCk7CiAgICBjdHguZmlsbFN0eWxlPXNlbCYmc2VsWzBdPT09Y1swXT8nI2ZmZic6JyNjZmVlYzInO2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKHBbMF0scFsxXSwyLjYsMCw3KTtjdHguZmlsbCgpfSk7CiAgLy8gSGVpbWF0IENlZmFsw7kKICBpZih2aXNpYmxlT25TcGhlcmUoSE9NRVswXSxIT01FWzFdKSl7Y29uc3QgcD1wcm9qKEhPTUUpO2N0eC5zdHJva2VTdHlsZT0nI2YyYzIzMCc7Y3R4LmxpbmVXaWR0aD0yO2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKHBbMF0scFsxXSw1K3B1bHNlKjMsMCw3KTtjdHguc3Ryb2tlKCk7Y3R4LmZpbGxTdHlsZT0nI2YyYzIzMCc7Y3R4LmJlZ2luUGF0aCgpO2N0eC5hcmMocFswXSxwWzFdLDIuNiwwLDcpO2N0eC5maWxsKCl9CiAgLy8gRmx1Z2JvZ2VuIHZvbiBDZWZhbMO5IHp1bSBnZXfDpGhsdGVuIExhbmQKICBpZihhcmMpe2NvbnN0IGlwPWQzLmdlb0ludGVycG9sYXRlKEhPTUUsYXJjLnRvKTtjb25zdCBuPU1hdGgubWF4KDIsTWF0aC5mbG9vcig0OCpNYXRoLm1pbigxLGFyYy50KSkpO2NvbnN0IHB0cz1bXTtmb3IobGV0IGk9MDtpPD1uO2krKylwdHMucHVzaChpcChpLzQ4KSk7CiAgICBjdHguYmVnaW5QYXRoKCk7cGF0aCh7dHlwZTonTGluZVN0cmluZycsY29vcmRpbmF0ZXM6cHRzfSk7Y3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDI0MiwxOTQsNDgsLjkpJztjdHgubGluZVdpZHRoPTEuODtjdHguc2V0TGluZURhc2goWzUsNF0pO2N0eC5zdHJva2UoKTtjdHguc2V0TGluZURhc2goW10pOwogICAgY29uc3QgaGVhZD1wdHNbcHRzLmxlbmd0aC0xXTtpZih2aXNpYmxlT25TcGhlcmUoaGVhZFswXSxoZWFkWzFdKSl7Y29uc3QgcD1wcm9qKGhlYWQpO2N0eC5maWxsU3R5bGU9JyNmZmYnO2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKHBbMF0scFsxXSwzLjQsMCw3KTtjdHguZmlsbCgpfX0KICAvLyBHbGFuegogIGNvbnN0IHNoPWN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChXLzItUiouNDUsSC8yLVIqLjUsMCxXLzItUiouNDUsSC8yLVIqLjUsUioxLjEpO3NoLmFkZENvbG9yU3RvcCgwLCdyZ2JhKDI1NSwyNTUsMjU1LC4xMiknKTtzaC5hZGRDb2xvclN0b3AoMSwncmdiYSgyNTUsMjU1LDI1NSwwKScpOwogIGN0eC5iZWdpblBhdGgoKTtwYXRoKHt0eXBlOidTcGhlcmUnfSk7Y3R4LmZpbGxTdHlsZT1zaDtjdHguZmlsbCgpOwp9CmZ1bmN0aW9uIHZpc2libGVPblNwaGVyZShsb24sbGF0KXtyZXR1cm4gZDMuZ2VvRGlzdGFuY2UoW2xvbixsYXRdLFstcm90WzBdLC1yb3RbMV1dKTxNYXRoLlBJLzItLjAyfQpmdW5jdGlvbiBsb29wKG5vdyl7CiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO2lmKCF2aXNpYmxlfHwhcmVhZHkpcmV0dXJuOwogIGNvbnN0IGR0PU1hdGgubWF4KDAsTWF0aC5taW4oLjA1LChub3ctbGFzdCkvMTAwMCkpO2xhc3Q9bm93O1QrPWR0OwogIGlmKGFuaW0pe2FuaW0udD1NYXRoLm1pbigxLGFuaW0udCtkdC8xLjMpO2NvbnN0IGU9MS1NYXRoLnBvdygxLWFuaW0udCwzKTtyb3Q9W2FuaW0uZnJvbVswXSsoYW5pbS50b1swXS1hbmltLmZyb21bMF0pKmUsYW5pbS5mcm9tWzFdKyhhbmltLnRvWzFdLWFuaW0uZnJvbVsxXSkqZSwwXTtpZihhbmltLnQ+PTEpYW5pbT1udWxsfQogIGVsc2UgaWYoIWRyYWdnaW5nKXtyb3RbMF0rPXZlbCpkdDt2ZWwqPU1hdGgucG93KC4xNSxkdCk7aWRsZSs9ZHQ7aWYoaWRsZT4yJiYhaG92ZXIpcm90WzBdKz02KmR0O3JvdFsxXSs9KC0yMi1yb3RbMV0pKmR0Ki4zKihpZGxlPjI\/MTowKX0KICBpZihhcmMmJmFyYy50PDEpYXJjLnQrPWR0LzEuNDsKICBmcmFtZSsrO2lmKCFkcmFnZ2luZyYmIWFuaW0mJiEoYXJjJiZhcmMudDwxKSYmZnJhbWUlMilyZXR1cm47CiAgZHJhdygpOwp9CmxldCBmcmFtZT0wOwovKiAtLS0tIE1hdXMgLyBUb3VjaCAtLS0tICovCmxldCBseD0wLGx5PTAsbHQ9MDsKY3YuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLGU9PntpZighcmVhZHkpcmV0dXJuO2RyYWdnaW5nPXRydWU7YW5pbT1udWxsO2N2LnNldFBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKTtseD1lLmNsaWVudFg7bHk9ZS5jbGllbnRZO2x0PXBlcmZvcm1hbmNlLm5vdygpO3ZlbD0wO21vdmVkPTB9KTsKbGV0IG1vdmVkPTA7CmN2LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJyxlPT57CiAgaWYoIXJlYWR5KXJldHVybjsKICBpZihkcmFnZ2luZyl7Y29uc3QgZHg9ZS5jbGllbnRYLWx4LGR5PWUuY2xpZW50WS1seSxub3c9cGVyZm9ybWFuY2Uubm93KCk7bW92ZWQrPU1hdGguYWJzKGR4KStNYXRoLmFicyhkeSk7CiAgICBjb25zdCBrPTkwL1I7cm90WzBdKz1keCprO3JvdFsxXT1NYXRoLm1heCgtNjAsTWF0aC5taW4oNjAscm90WzFdLWR5KmspKTt2ZWw9ZHgqay9NYXRoLm1heCguMDE2LChub3ctbHQpLzEwMDApKi42O2x4PWUuY2xpZW50WDtseT1lLmNsaWVudFk7bHQ9bm93O2lkbGU9MDtyZXR1cm59CiAgY29uc3Qgcj1jdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCBwPVtlLmNsaWVudFgtci5sZWZ0LGUuY2xpZW50WS1yLnRvcF07CiAgY29uc3QgbGw9cHJvai5pbnZlcnQocCk7bGV0IGg9bnVsbDsKICBpZihsbCYmTWF0aC5oeXBvdChwWzBdLVcvMixwWzFdLUgvMik8Uil7aD1mZWF0cy5maW5kKGY9PmYudiYmZDMuZ2VvQ29udGFpbnMoZixsbCkpfHxudWxsOwogICAgaWYoIWgpe2NvbnN0IGQ9Qy5maW5kKGM9PmMuZG90JiZ2aXNpYmxlT25TcGhlcmUoY1szXSxjWzJdKSYmTWF0aC5oeXBvdChwcm9qKFtjWzNdLGNbMl1dKVswXS1wWzBdLHByb2ooW2NbM10sY1syXV0pWzFdLXBbMV0pPDEwKTtpZihkKWg9e2lkOmRbMF0sZG90OnRydWV9fX0KICBob3Zlcj1oJiYhaC5kb3Q\/aDpudWxsO2N2LnN0eWxlLmN1cnNvcj1oPydwb2ludGVyJzonZ3JhYic7CiAgaWYoaCl7Y29uc3QgYz1ieUlkLmdldChoLmlkKTt0aXAuaW5uZXJIVE1MPSc8Yj4nK2NbMV0rJzwvYj48c3Bhbj4nK0NOW2NbNF1dKyc8L3NwYW4+Jzt0aXAuY2xhc3NMaXN0LmFkZCgnb24nKTt9CiAgZWxzZSBpZighc2VsKXRpcC5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogIGN2Ll9ob3Y9aDsKfSk7CmN2LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsZT0+e2RyYWdnaW5nPWZhbHNlO2lmKG1vdmVkPDYmJmN2Ll9ob3Ype3NlbGVjdChieUlkLmdldChjdi5faG92LmlkKSl9fSk7CmN2LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsKCk9Pntob3Zlcj1udWxsO2lmKCFzZWwpdGlwLmNsYXNzTGlzdC5yZW1vdmUoJ29uJyl9KTsKCmxldCByejthZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCgpPT57Y2xlYXJUaW1lb3V0KHJ6KTtyej1zZXRUaW1lb3V0KGxheW91dCwxNTApfSk7CmxldCBzdGFydGVkPWZhbHNlOwpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZXM9Pnt2aXNpYmxlPWVzWzBdLmlzSW50ZXJzZWN0aW5nO2lmKHZpc2libGUpe2xhc3Q9cGVyZm9ybWFuY2Uubm93KCk7aWYoIXN0YXJ0ZWQpe3N0YXJ0ZWQ9dHJ1ZTtpbml0KCl9ZWxzZSBsYXlvdXQoKX19LHtyb290TWFyZ2luOiczMDBweCd9KS5vYnNlcnZlKHdyYXApOwpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7Cn0pKCk7Cg==<\/script>\n<script type=\"text\/atn-b64\">Ci8qIC0tLS0tLS0tLS0gUVVBTlRPIFJFU0lTVEk\/IChFaXNzY2h3aW1tZW4pIC0tLS0tLS0tLS0gKi8KKGZ1bmN0aW9uKCl7CiJ1c2Ugc3RyaWN0IjsKY29uc3QgY3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ljZUN2Jyk7aWYoIWN2KSByZXR1cm47CmNvbnN0IGN0eD1jdi5nZXRDb250ZXh0KCcyZCcpLHdyYXA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ljZVdyYXAnKSxidG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ljZUJ0bicpOwpjb25zdCBlbFRpbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ljZVRpbWUnKSxlbE1zZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNlTXNnJyksZWxSZXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ljZVJlcycpLGVsUmVzVD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNlUmVzVCcpLGVsUmFuaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNlUmFuaycpLGVsUmFua1R4dD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNlUmFua1R4dCcpLGVsQmVzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNlQmVzdCcpOwpsZXQgVz0wLEg9MCxkcHI9MSx2aXNpYmxlPWZhbHNlLGxhc3Q9cGVyZm9ybWFuY2Uubm93KCksVD0wLGJnQ3Y9bnVsbDsKbGV0IGhvbGRpbmc9ZmFsc2UsaGVsZD0wLGZyb3N0PVtdLHNub3c9W10scmlwcGxlPTA7CmNvbnN0IHJuZD0oYSxiKT0+YStNYXRoLnJhbmRvbSgpKihiLWEpOwpsZXQgYmVzdD0wO3RyeXtiZXN0PStsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXRuX2ljZV9iZXN0Jyl8fDB9Y2F0Y2goZSl7fQpjb25zdCBNU0c9W1swLEwoJ0VudHJhIHBpYW5vLiBM4oCZYWNxdWEgw6ggYSAyIMKwQy4nLCdHZXQgaW4gc2xvd2x5LiBUaGUgd2F0ZXIgaXMgMiDCsEMuJywnTGFuZ3NhbSByZWluLiBEYXMgV2Fzc2VyIGhhdCAyIMKwQy4nKV0sWzMsTCgnSWwgcmVzcGlybyBzaSBibG9jY2EuIEVzcGlyYSBsZW50YW1lbnRl4oCmJywnWW91ciBicmVhdGggY2F0Y2hlcy4gRXhoYWxlIHNsb3dseeKApicsJ0RlciBBdGVtIHN0b2NrdC4gTGFuZ3NhbSBhdXNhdG1lbiDigKYnKV0sWzgsTCgnTGEgcGVsbGUgYnJ1Y2lhLCBwb2kgc2kgY2FsbWEuJywnWW91ciBza2luIGJ1cm5zLCB0aGVuIGNhbG1zIGRvd24uJywnRGllIEhhdXQgYnJlbm50LCBkYW5uIHdpcmQgZXMgcnVoaWdlci4nKV0sWzE1LEwoJ0xlIG1hbmkgZm9ybWljb2xhbm8uIFJlc3RhIGNvbmNlbnRyYXRvLicsJ1lvdXIgaGFuZHMgYXJlIHRpbmdsaW5nLiBTdGF5IGZvY3VzZWQuJywnRGllIEjDpG5kZSBrcmliYmVsbi4gQmxlaWIga29uemVudHJpZXJ0LicpXSxbMjUsTCgnT3JhIHNlaSB0dSBjb250cm8gaWwgZnJlZGRvLicsJ05vdyBpdOKAmXMgeW91IGFnYWluc3QgdGhlIGNvbGQuJywnSmV0enQgaGVpw590IGVzOiBkdSBnZWdlbiBkaWUgS8OkbHRlLicpXSxbNDAsTCgnTWVudGUgZOKAmWFjY2lhaW8uIFF1YXNpIGRhIGNhbXBpb25hdG8uJywnTmVydmVzIG9mIHN0ZWVsLiBBbG1vc3QgY2hhbXBpb25zaGlwIGxldmVsLicsJ05lcnZlbiBhdXMgU3RhaGwuIEZhc3Qgc2Nob24gTWVpc3RlcnNjaGFmdHNuaXZlYXUuJyldLFs1NSxMKCdFc2NpIHF1YW5kbyB2dW9pOiBzZWkgZ2nDoCB1biBJY2UgQWRkaWN0ZWQuJywnR2V0IG91dCB3aGVuZXZlciB5b3UgbGlrZTogeW914oCZcmUgYWxyZWFkeSBhbiBJY2UgQWRkaWN0ZWQuJywnUmF1cywgd2FubiBkdSB3aWxsc3Q6IER1IGJpc3Qgc2Nob24gZWluIEljZSBBZGRpY3RlZC4nKV1dOwpjb25zdCBSQU5LUz1bWzAsTCgnUGluZ3Vpbm8gaW4gcHJvdmEnLCdUcmFpbmVlIHBlbmd1aW4nLCdQaW5ndWluIGluIEF1c2JpbGR1bmcnKSxMKCdJbCBwcmltbyBwYXNzbyDDqCBpbCBwacO5IGRpZmZpY2lsZS4gTGEgcHJvc3NpbWEgdm9sdGEgcmVzcGlyYSBsZW50byBlZCBlc3BpcmEgYSBsdW5nby4nLCdUaGUgZmlyc3Qgc3RlcCBpcyB0aGUgaGFyZGVzdC4gTmV4dCB0aW1lIGJyZWF0aGUgc2xvd2x5IGFuZCBleGhhbGUgZm9yIGxvbmdlci4nLCdEZXIgZXJzdGUgU2Nocml0dCBpc3QgZGVyIHNjaHdlcnN0ZS4gTsOkY2hzdGVzIE1hbCBsYW5nc2FtIGF0bWVuIHVuZCBsYW5nZSBhdXNhdG1lbi4nKV0sWzUsTCgnQnJpdmlkbycsJ1NoaXZlcicsJ0fDpG5zZWhhdXQnKSxMKCdJbCBjb3JwbyB2dW9sZSB1c2NpcmUsIGxhIHRlc3RhIGhhIHJlc2lzdGl0by4gT3R0aW1vIGluaXppby4nLCdZb3VyIGJvZHkgd2FudGVkIG91dCwgeW91ciBtaW5kIGhlbGQgb24uIEdyZWF0IHN0YXJ0LicsJ0RlciBLw7ZycGVyIHdvbGx0ZSByYXVzLCBkZXIgS29wZiBoYXQgZHVyY2hnZWhhbHRlbi4gU3RhcmtlciBBbmZhbmcuJyldLFsxNSxMKCdPcnNvIHBvbGFyZScsJ1BvbGFyIGJlYXInLCdFaXNiw6RyJyksTCgnSGFpIGxhIHRlc3RhIGdpdXN0YSBwZXIgaWwgZ2hpYWNjaW8uIFRpIHZlZGlhbW8gYmVuZSBpbiBnYXJhIScsJ1lvdeKAmXZlIGdvdCB0aGUgcmlnaHQgbWluZHNldCBmb3IgdGhlIGljZS4gV2UgY2FuIHNlZSB5b3UgcmFjaW5nIScsJ0R1IGhhc3QgZGVuIHJpY2h0aWdlbiBLb3BmIGbDvHJzIEVpcy4gV2lyIHNlaGVuIGRpY2ggc2Nob24gaW0gUmVubmVuIScpXSxbMzAsJ0ljZSBBZGRpY3RlZCcsTCgnUmVzaXN0ZW56YSBkYSBjYW1waW9uYXRvLiBBaSBab2xsaGF1cyBPcGVuIHNhcmVzdGkgYSBjYXNhLicsJ0NoYW1waW9uc2hpcCBlbmR1cmFuY2UuIFlvdeKAmWQgZmVlbCByaWdodCBhdCBob21lIGF0IHRoZSBab2xsaGF1cyBPcGVuLicsJ0F1c2RhdWVyIGF1ZiBNZWlzdGVyc2NoYWZ0c25pdmVhdS4gQmVpIGRlbiBab2xsaGF1cyBPcGVuIHfDpHJzdCBkdSB6dSBIYXVzZS4nKV1dOwoKZnVuY3Rpb24gYnVpbGRCZygpewogIGJnQ3Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7YmdDdi53aWR0aD1XKmRwcjtiZ0N2LmhlaWdodD1IKmRwcjtjb25zdCBiPWJnQ3YuZ2V0Q29udGV4dCgnMmQnKTtiLnNjYWxlKGRwcixkcHIpOwogIGNvbnN0IGc9Yi5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLDAsMCxIKTtnLmFkZENvbG9yU3RvcCgwLCcjZGZlYWYwJyk7Zy5hZGRDb2xvclN0b3AoMSwnI2I5Y2RkOCcpO2IuZmlsbFN0eWxlPWc7Yi5maWxsUmVjdCgwLDAsVyxIKTsKICAvLyBFaXMtU3RydWt0dXIKICBmb3IobGV0IGk9MDtpPFcqSC82MDtpKyspe2IuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LCcrcm5kKC4wNSwuMjUpKycpJztiLmZpbGxSZWN0KHJuZCgwLFcpLHJuZCgwLEgpLHJuZCgxLDMpLHJuZCgxLDIpKX0KICBiLnN0cm9rZVN0eWxlPSdyZ2JhKDEyMCwxNTAsMTcwLC4yNSknO2IubGluZVdpZHRoPTE7CiAgZm9yKGxldCBpPTA7aTwyNjtpKyspe2xldCB4PXJuZCgwLFcpLHk9cm5kKDAsSCk7Yi5iZWdpblBhdGgoKTtiLm1vdmVUbyh4LHkpO2ZvcihsZXQgaz0wO2s8NjtrKyspe3grPXJuZCgtNjAsNjApO3krPXJuZCgtNDAsNDApO2IubGluZVRvKHgseSl9Yi5zdHJva2UoKX0KICAvLyBTY2huZWUtV2VoZW4KICBmb3IobGV0IGk9MDtpPDE0O2krKyl7Y29uc3QgeD1ybmQoMCxXKSx5PXJuZCgwLEgpO2NvbnN0IHI9cm5kKDQwLDE0MCk7Y29uc3Qgc2c9Yi5jcmVhdGVSYWRpYWxHcmFkaWVudCh4LHksMCx4LHkscik7c2cuYWRkQ29sb3JTdG9wKDAsJ3JnYmEoMjU1LDI1NSwyNTUsLjU1KScpO3NnLmFkZENvbG9yU3RvcCgxLCdyZ2JhKDI1NSwyNTUsMjU1LDApJyk7Yi5maWxsU3R5bGU9c2c7Yi5maWxsUmVjdCh4LXIseS1yLHIqMixyKjIpfQogIC8vIE5hZGVsYsOkdW1lIGFtIFJhbmQsIHZvbiBvYmVuIGdlc2VoZW4sIG1pdCBTY2huZWUKICBmb3IobGV0IGk9MDtpPDIwO2krKyl7Y29uc3Qgc2lkZT1pJTI7Y29uc3QgeD1zaWRlP3JuZChXKi44NixXKzMwKTpybmQoLTMwLFcqLjE0KSx5PXJuZCgtMjAsSCsyMCkscj1ybmQoMjIsNDApOwogICAgYi5maWxsU3R5bGU9J3JnYmEoMjAsNDAsMzAsLjIyKSc7Yi5iZWdpblBhdGgoKTtiLmVsbGlwc2UoeCtyKi4yNSx5K3IqLjMscioxLjA1LHIqLjk1LDAsMCw3KTtiLmZpbGwoKTsKICAgIFtbMSwnIzFmM2YzMCddLFsuNzIsJyMyYTUyNDAnXSxbLjQ1LCcjM2E2YTUyJ11dLmZvckVhY2goKFtmLGNdKT0+e2IuZmlsbFN0eWxlPWM7Yi5iZWdpblBhdGgoKTtjb25zdCBuPTIyO2ZvcihsZXQgYT0wO2E8PW47YSsrKXtjb25zdCBhbmc9YS9uKk1hdGguUEkqMjtjb25zdCBycj1yKmYqKC44MitNYXRoLnJhbmRvbSgpKi4yMik7Yi5saW5lVG8oeCtNYXRoLmNvcyhhbmcpKnJyLHkrTWF0aC5zaW4oYW5nKSpycil9Yi5jbG9zZVBhdGgoKTtiLmZpbGwoKX0pOwogICAgZm9yKGxldCBrPTA7azw3O2srKyl7Y29uc3QgYW5nPXJuZCgwLDcpLGQ9cm5kKDAsciouNzUpO2NvbnN0IHNnPWIuY3JlYXRlUmFkaWFsR3JhZGllbnQoeCtNYXRoLmNvcyhhbmcpKmQseStNYXRoLnNpbihhbmcpKmQsMCx4K01hdGguY29zKGFuZykqZCx5K01hdGguc2luKGFuZykqZCxyKi4zMik7c2cuYWRkQ29sb3JTdG9wKDAsJ3JnYmEoMjU1LDI1NSwyNTUsLjg1KScpO3NnLmFkZENvbG9yU3RvcCgxLCdyZ2JhKDI1NSwyNTUsMjU1LDApJyk7Yi5maWxsU3R5bGU9c2c7Yi5iZWdpblBhdGgoKTtiLmFyYyh4K01hdGguY29zKGFuZykqZCx5K01hdGguc2luKGFuZykqZCxyKi4zMiwwLDcpO2IuZmlsbCgpfQogIH0KfQpmdW5jdGlvbiBwb29sKCl7Y29uc3Qgdz1NYXRoLm1pbihXKi42Miw3MjApLGg9TWF0aC5taW4oSCouMzQsMjMwKTtyZXR1cm57eDooVy13KS8yLHk6TWF0aC5tYXgoMzAsSCouMDcpLHcsaH19CmZ1bmN0aW9uIGRyYXdQb29sKHQpewogIGNvbnN0IHA9cG9vbCgpOwogIGN0eC5zYXZlKCk7Y3R4LmJlZ2luUGF0aCgpO2N0eC5yZWN0KHAueCxwLnkscC53LHAuaCk7Y3R4LmNsaXAoKTsKICBjb25zdCBnPWN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLHAueSwwLHAueStwLmgpO2cuYWRkQ29sb3JTdG9wKDAsJyMwZjNhNGMnKTtnLmFkZENvbG9yU3RvcCgxLCcjMGEyNjMzJyk7Y3R4LmZpbGxTdHlsZT1nO2N0eC5maWxsUmVjdChwLngscC55LHAudyxwLmgpOwogIC8vIEJhaG5lbgogIGNvbnN0IGxhbmVzPTQ7Zm9yKGxldCBpPTE7aTxsYW5lcztpKyspe2NvbnN0IHk9cC55K3AuaC9sYW5lcyppO2N0eC5zdHJva2VTdHlsZT0ncmdiYSgyMzAsOTAsNzAsLjg1KSc7Y3R4LnNldExpbmVEYXNoKFsxMCw4XSk7Y3R4LmxpbmVXaWR0aD0zO2N0eC5iZWdpblBhdGgoKTtjdHgubW92ZVRvKHAueCx5KTtjdHgubGluZVRvKHAueCtwLncseSk7Y3R4LnN0cm9rZSgpfQogIGN0eC5zZXRMaW5lRGFzaChbXSk7CiAgLy8gTGljaHRyZWZsZXhlCiAgZm9yKGxldCBpPTA7aTwzMDtpKyspe2NvbnN0IHg9cC54KygoaSo5Nyt0KjE0KSVwLncpLHk9cC55KygoaSo1MyklcC5oKStNYXRoLnNpbih0KjEuNStpKSozO2N0eC5maWxsU3R5bGU9J3JnYmEoMTgwLDIzMCwyNDAsJysoLjEyKy4xKk1hdGguc2luKHQqMitpKSkrJyknO2N0eC5maWxsUmVjdCh4LHksMTQsMS41KX0KICAvLyBXZWxsZSwgd2VubiBtYW4gZHJpbiBpc3QKICBpZihob2xkaW5nfHxyaXBwbGU+MCl7Y29uc3QgY3g9cC54K3AudyouMTgsY3k9cC55K3AuaCouNjI7Zm9yKGxldCBrPTA7azwzO2srKyl7Y29uc3Qgcj1NYXRoLmFicygodCozMCtrKjI4KSU4NCkrLjE7Y3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDIyMCwyNDUsMjU1LCcrKC40KigxLXIvODQpKSsnKSc7Y3R4LmxpbmVXaWR0aD0xLjU7Y3R4LmJlZ2luUGF0aCgpO2N0eC5lbGxpcHNlKGN4LGN5LHIqMS40LHIqLjYsMCwwLDcpO2N0eC5zdHJva2UoKX0KICAgIC8vIFNjaHdpbW1lci1Lb3BmIG1pdCBNw7x0emUKICAgIGN0eC5maWxsU3R5bGU9JyNlOGM0YTAnO2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKGN4LGN5LDksMCw3KTtjdHguZmlsbCgpO2N0eC5maWxsU3R5bGU9JyNjZmVlYzInO2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKGN4LGN5LTIsOS41LE1hdGguUEksMCk7Y3R4LmZpbGwoKX0KICBjdHgucmVzdG9yZSgpOwogIC8vIEVpc2thbnRlCiAgY3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC45NSknO2N0eC5saW5lV2lkdGg9NjtjdHguc3Ryb2tlUmVjdChwLngtMyxwLnktMyxwLncrNixwLmgrNik7CiAgY3R4LnN0cm9rZVN0eWxlPSdyZ2JhKDE0MCwxNzAsMTkwLC41KSc7Y3R4LmxpbmVXaWR0aD0xO2N0eC5zdHJva2VSZWN0KHAueC03LHAueS03LHAudysxNCxwLmgrMTQpOwogIC8vIExlaXRlcgogIGN0eC5zdHJva2VTdHlsZT0nI2M5ZDNkOCc7Y3R4LmxpbmVXaWR0aD0zO2N0eC5iZWdpblBhdGgoKTtjdHgubW92ZVRvKHAueCsxOCxwLnktMTQpO2N0eC5saW5lVG8ocC54KzE4LHAueSsxOCk7Y3R4Lm1vdmVUbyhwLngrMzQscC55LTE0KTtjdHgubGluZVRvKHAueCszNCxwLnkrMTgpO2ZvcihsZXQgeT1wLnktODt5PHAueSsxODt5Kz04KXtjdHgubW92ZVRvKHAueCsxOCx5KTtjdHgubGluZVRvKHAueCszNCx5KX1jdHguc3Ryb2tlKCk7Cn0KLyogRWlza3Jpc3RhbGxlIHdhY2hzZW4gdm9tIFJhbmQgaW5zIEJpbGQgKi8KZnVuY3Rpb24gbWFrZUZyb3N0KCl7CiAgZnJvc3Q9W107CiAgZm9yKGxldCBpPTA7aTwzNDtpKyspewogICAgY29uc3Qgc2lkZT1pJTQ7bGV0IHgseSxhOwogICAgaWYoc2lkZT09PTApe3g9cm5kKDAsVyk7eT0wO2E9TWF0aC5QSS8yfWVsc2UgaWYoc2lkZT09PTEpe3g9Vzt5PXJuZCgwLEgpO2E9TWF0aC5QSX1lbHNlIGlmKHNpZGU9PT0yKXt4PXJuZCgwLFcpO3k9SDthPS1NYXRoLlBJLzJ9ZWxzZXt4PTA7eT1ybmQoMCxIKTthPTB9CiAgICBhKz1ybmQoLS42LC42KTtjb25zdCBzZWdzPVtdOwogICAgKGZ1bmN0aW9uIGdyb3coeCx5LGEsbGVuLGQsc3RhcnQpewogICAgICBjb25zdCB4Mj14K01hdGguY29zKGEpKmxlbix5Mj15K01hdGguc2luKGEpKmxlbjtzZWdzLnB1c2goW3gseSx4Mix5MixzdGFydCxkXSk7CiAgICAgIGlmKGQ8NCl7Y29uc3Qgbj1kPDI\/MzoyO2ZvcihsZXQgaz0wO2s8bjtrKyspe2NvbnN0IGY9cm5kKC4zLC45KTtncm93KHgrKHgyLXgpKmYseSsoeTIteSkqZixhKyhrJTI\/MTotMSkqcm5kKC41LDEuMSksbGVuKnJuZCguMzUsLjYpLGQrMSxzdGFydCtmKi4yNSl9fQogICAgfSkoeCx5LGEscm5kKE1hdGgubWluKFcsSCkqLjE4LE1hdGgubWluKFcsSCkqLjM0KSwwLHJuZCgwLC4yNSkpOwogICAgZnJvc3QucHVzaChzZWdzKTsKICB9Cn0KZnVuY3Rpb24gZHJhd0Zyb3N0KHApewogIGlmKHA8PTApcmV0dXJuOwogIGNvbnN0IHZnPWN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChXLzIsSC8yLE1hdGgubWluKFcsSCkqKC42NS0uMzUqcCksVy8yLEgvMixNYXRoLm1heChXLEgpKi43NSk7CiAgdmcuYWRkQ29sb3JTdG9wKDAsJ3JnYmEoMjI1LDI0MCwyNTAsMCknKTt2Zy5hZGRDb2xvclN0b3AoMSwncmdiYSgyMjUsMjQwLDI1MCwnKyguODUqcCkrJyknKTtjdHguZmlsbFN0eWxlPXZnO2N0eC5maWxsUmVjdCgwLDAsVyxIKTsKICBjdHgubGluZUNhcD0ncm91bmQnOwogIGZyb3N0LmZvckVhY2goc2Vncz0+c2Vncy5mb3JFYWNoKHM9PnsKICAgIGNvbnN0IGxwPU1hdGgubWF4KDAsTWF0aC5taW4oMSwocCoxLjYtc1s0XSkvKC4zNStzWzVdKi4wNSkpKTtpZihscDw9MClyZXR1cm47CiAgICBjdHguc3Ryb2tlU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsJysoLjc1LXNbNV0qLjEyKSsnKSc7Y3R4LmxpbmVXaWR0aD1NYXRoLm1heCguNiwyLjQtc1s1XSouNSk7CiAgICBjdHguYmVnaW5QYXRoKCk7Y3R4Lm1vdmVUbyhzWzBdLHNbMV0pO2N0eC5saW5lVG8oc1swXSsoc1syXS1zWzBdKSpscCxzWzFdKyhzWzNdLXNbMV0pKmxwKTtjdHguc3Ryb2tlKCk7CiAgfSkpOwp9CmZ1bmN0aW9uIHN0ZXAoZHQpewogIFQrPWR0O3JpcHBsZT1NYXRoLm1heCgwLHJpcHBsZS1kdCk7CiAgaWYoaG9sZGluZyl7aGVsZD1NYXRoLm1pbig2MCxoZWxkK2R0KTtlbFRpbWUudGV4dENvbnRlbnQ9aGVsZC50b0ZpeGVkKDEpLnJlcGxhY2UoJy4nLEFUTl9MQU5HPT09J2VuJz8nLic6JywnKTsKICAgIGxldCBtPU1TR1swXVsxXTtNU0cuZm9yRWFjaCh4PT57aWYoaGVsZD49eFswXSltPXhbMV19KTtpZihlbE1zZy50ZXh0Q29udGVudCE9PW0pZWxNc2cudGV4dENvbnRlbnQ9bTsKICAgIGlmKGhlbGQ+PTYwKXN0b3AoKTt9CiAgaWYoc25vdy5sZW5ndGg8MTQwKXNub3cucHVzaCh7eDpybmQoMCxXKSx5Oi01LHY6cm5kKDIwLDUwKSxyOnJuZCgxLDIuNikscDpybmQoMCw2KX0pOwogIHNub3cuZm9yRWFjaChzPT57cy55Kz1zLnYqZHQ7cy54Kz1NYXRoLnNpbihUK3MucCkqMTIqZHR9KTtzbm93PXNub3cuZmlsdGVyKHM9PnMueTxIKzUpOwp9CmZ1bmN0aW9uIHJlbmRlcihub3cpewogIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpO2lmKCF2aXNpYmxlfHwhVylyZXR1cm47CiAgY29uc3QgZHQ9TWF0aC5tYXgoMCxNYXRoLm1pbiguMDUsKG5vdy1sYXN0KS8xMDAwKSk7bGFzdD1ub3c7c3RlcChkdCk7CiAgY3R4LmRyYXdJbWFnZShiZ0N2LDAsMCxXLEgpO2RyYXdQb29sKFQpOwogIGN0eC5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjkpJztzbm93LmZvckVhY2gocz0+e2N0eC5iZWdpblBhdGgoKTtjdHguYXJjKHMueCxzLnkscy5yLDAsNyk7Y3R4LmZpbGwoKX0pOwogIGRyYXdGcm9zdChob2xkaW5nP01hdGgubWluKDEsaGVsZC80NSk6MCk7Cn0KZnVuY3Rpb24gc3RhcnQoZSl7CiAgaWYoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfWlmKGhvbGRpbmcpcmV0dXJuOwogIGhvbGRpbmc9dHJ1ZTtoZWxkPTA7bWFrZUZyb3N0KCk7ZWxSZXMuY2xhc3NMaXN0LnJlbW92ZSgnb24nKTt3cmFwLmNsYXNzTGlzdC5hZGQoJ2NvbGQnKTtidG4uY2xhc3NMaXN0LmFkZCgnZG93bicpO2J0bi5xdWVyeVNlbGVjdG9yKCdzcGFuJykudGV4dENvbnRlbnQ9TCgnUmVzaXN0aeKApicsJ0hvbGQgb27igKYnLCdEdXJjaGhhbHRlbiDigKYnKTsKICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2F0bjppY2UnLHtkZXRhaWw6J2luJ30pKTsKfQpmdW5jdGlvbiBzdG9wKCl7CiAgaWYoIWhvbGRpbmcpcmV0dXJuO2hvbGRpbmc9ZmFsc2U7cmlwcGxlPTEuNTt3cmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2NvbGQnKTtidG4uY2xhc3NMaXN0LnJlbW92ZSgnZG93bicpO2J0bi5xdWVyeVNlbGVjdG9yKCdzcGFuJykudGV4dENvbnRlbnQ9TCgnVGllbmkgcHJlbXV0bycsJ1ByZXNzICYgaG9sZCcsJ0dlZHLDvGNrdCBoYWx0ZW4nKTsKICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2F0bjppY2UnLHtkZXRhaWw6J291dCd9KSk7CiAgaWYoaGVsZDwuNCl7ZWxNc2cudGV4dENvbnRlbnQ9TCgnVGllbmkgcHJlbXV0byBpbCBwdWxzYW50ZSBwZXIgZW50cmFyZSBpbiBhY3F1YS4nLCdQcmVzcyBhbmQgaG9sZCB0aGUgYnV0dG9uIHRvIGdldCBpbnRvIHRoZSB3YXRlci4nLCdIYWx0IGRlbiBLbm9wZiBnZWRyw7xja3QsIHVtIGlucyBXYXNzZXIgenUgZ2VoZW4uJyk7cmV0dXJufQogIGxldCByPVJBTktTWzBdO1JBTktTLmZvckVhY2goeD0+e2lmKGhlbGQ+PXhbMF0pcj14fSk7CiAgaWYoaGVsZD5iZXN0KXtiZXN0PWhlbGQ7dHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdhdG5faWNlX2Jlc3QnLFN0cmluZyhiZXN0KSl9Y2F0Y2goZSl7fX0KICBlbFJlc1QudGV4dENvbnRlbnQ9aGVsZC50b0ZpeGVkKDEpLnJlcGxhY2UoJy4nLEFUTl9MQU5HPT09J2VuJz8nLic6JywnKSsnIHMnO2VsUmFuay50ZXh0Q29udGVudD1yWzFdO2VsUmFua1R4dC50ZXh0Q29udGVudD1yWzJdO2VsQmVzdC50ZXh0Q29udGVudD1iZXN0LnRvRml4ZWQoMSkucmVwbGFjZSgnLicsQVROX0xBTkc9PT0nZW4nPycuJzonLCcpKycgcyc7CiAgZWxSZXMuY2xhc3NMaXN0LmFkZCgnb24nKTsKfQpidG4uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLGU9Pnt0cnl7YnRuLnNldFBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKX1jYXRjaChlcnIpe31zdGFydChlKX0pOwpidG4uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJyxzdG9wKTtidG4uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsc3RvcCk7YnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2xvc3Rwb2ludGVyY2FwdHVyZScsc3RvcCk7CmJ0bi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxlPT57aWYoKGUuY29kZT09PSdTcGFjZSd8fGUuY29kZT09PSdFbnRlcicpJiYhZS5yZXBlYXQpc3RhcnQoZSl9KTsKYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJyxlPT57aWYoZS5jb2RlPT09J1NwYWNlJ3x8ZS5jb2RlPT09J0VudGVyJylzdG9wKCl9KTsKYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JyxlPT5lLnByZXZlbnREZWZhdWx0KCkpOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNlQWdhaW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntlbFJlcy5jbGFzc0xpc3QucmVtb3ZlKCdvbicpO2VsVGltZS50ZXh0Q29udGVudD0nMCwwJztlbE1zZy50ZXh0Q29udGVudD1NU0dbMF1bMV19KTsKCmZ1bmN0aW9uIGxheW91dCgpe2Rwcj1NYXRoLm1pbihkZXZpY2VQaXhlbFJhdGlvfHwxLDIpO1c9Y3YuY2xpZW50V2lkdGg7SD1jdi5jbGllbnRIZWlnaHQ7aWYoIVcpcmV0dXJuO2N2LndpZHRoPVcqZHByO2N2LmhlaWdodD1IKmRwcjtjdHguc2V0VHJhbnNmb3JtKGRwciwwLDAsZHByLDAsMCk7YnVpbGRCZygpfQpsZXQgcno7YWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywoKT0+e2NsZWFyVGltZW91dChyeik7cno9c2V0VGltZW91dChsYXlvdXQsMTUwKX0pOwpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZXM9Pnt2aXNpYmxlPWVzWzBdLmlzSW50ZXJzZWN0aW5nO2lmKHZpc2libGUpe2lmKCFXKWxheW91dCgpO2xhc3Q9cGVyZm9ybWFuY2Uubm93KCl9fSx7cm9vdE1hcmdpbjonMTAwcHgnfSkub2JzZXJ2ZSh3cmFwKTsKZWxNc2cudGV4dENvbnRlbnQ9TVNHWzBdWzFdOwpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTsKfSkoKTsK<\/script>\n<script type=\"text\/atn-b64\">Ci8qIC0tLS0tLS0tLS0gUVVJWjogUXVhbnRvIHNlaSBBZGRpY3RlZD8gLS0tLS0tLS0tLSAqLwooZnVuY3Rpb24oKXsKInVzZSBzdHJpY3QiOwpjb25zdCBib3g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3F1aXpCb3gnKTtpZighYm94KSByZXR1cm47CmNvbnN0IFU9J2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8nOwpjb25zdCBRPVsKIHtxOkwoJ1NhYmF0bywgc3ZlZ2xpYSBhbGxlIDYuIENvc2EgZmFpPycsJ1NhdHVyZGF5LCBhbGFybSBhdCA2IGFtLiBXaGF0IGRvIHlvdSBkbz8nLCdTYW1zdGFnLCBXZWNrZXIgdW0gNi4gV2FzIG1hY2hzdCBkdT8nKSxhOltbJ0EnLEwoJ09uZGUgcGVyZmV0dGU6IHRhdm9sYSBzb3R0byBpbCBicmFjY2lvIGUgdmlhLicsJ1BlcmZlY3Qgd2F2ZXM6IGJvYXJkIHVuZGVyIG15IGFybSBhbmQgb2ZmIEkgZ28uJywnUGVyZmVrdGUgV2VsbGVuOiBCb2FyZCB1bnRlciBkZW4gQXJtIHVuZCBsb3MuJyldLFsnRicsTCgnWmFpbm8gaW4gc3BhbGxhLCB2ZXJzbyB1bmEgdmV0dGEgbWFpIHZpc3RhLicsJ0JhY2twYWNrIG9uLCBoZWFkaW5nIGZvciBhIHN1bW1pdCBJ4oCZdmUgbmV2ZXIgc2Vlbi4nLCdSdWNrc2FjayBhdWYsIHp1IGVpbmVtIEdpcGZlbCwgZGVuIGljaCBub2NoIG5pZSBnZXNlaGVuIGhhYmUuJyldLFsnTicsTCgnUGFzc2VnZ2lhdGEgbmVsIGJvc2NvLCB0ZWxlZm9ubyBzcGVudG8uJywnQSB3YWxrIGluIHRoZSB3b29kcywgcGhvbmUgc3dpdGNoZWQgb2ZmLicsJ1NwYXppZXJnYW5nIGltIFdhbGQsIEhhbmR5IGF1cy4nKV1dfSwKIHtxOkwoJ0lsIHR1byBlbGVtZW50bz8nLCdZb3VyIGVsZW1lbnQ\/JywnRGVpbiBFbGVtZW50PycpLGE6W1snQScsTCgnTOKAmWFjcXVhIGdlbGF0YS4nLCdJY2UtY29sZCB3YXRlci4nLCdFaXNrYWx0ZXMgV2Fzc2VyLicpXSxbJ0YnLEwoJ0lsIHZlbnRvIGluIHF1b3RhLicsJ1dpbmQgdXAgaGlnaC4nLCdXaW5kIGluIGRlciBIw7ZoZS4nKV0sWydOJyxMKCdMYSB0ZXJyYSBzb3R0byBpIHBpZWRpLicsJ0VhcnRoIHVuZGVyIG15IGZlZXQuJywnRXJkZSB1bnRlciBkZW4gRsO8w59lbi4nKV1dfSwKIHtxOkwoJ0luIHZhbGlnaWEgbm9uIG1hbmNhIG1haeKApicsJ015IGJhZyBhbHdheXMgaGFz4oCmJywnSW4gbWVpbmVtIEdlcMOkY2sgZmVobHQgbmllIOKApicpLGE6W1snQScsTCgnTGEgbXV0YSDigJMgZSB1biBwb+KAmSBkaSBjb3JhZ2dpby4nLCdBIHdldHN1aXQg4oCTIGFuZCBhIGJpdCBvZiBjb3VyYWdlLicsJ0RlciBOZW9wcmVuYW56dWcg4oCTIHVuZCBldHdhcyBNdXQuJyldLFsnRicsTCgnVW5hIG1hcHBhIGUgbmVzc3VuIHBpYW5vLicsJ0EgbWFwIGFuZCBubyBwbGFuLicsJ0VpbmUgS2FydGUgdW5kIGtlaW4gUGxhbi4nKV0sWydOJyxMKCdVbiBzYWNjaGV0dG8gcGVyIHJhY2NvZ2xpZXJlIGkgcmlmaXV0aSBjaGUgdHJvdm8uJywnQSBiYWcgZm9yIGFueSBsaXR0ZXIgSSBmaW5kLicsJ0VpbiBCZXV0ZWwgZsO8ciBkZW4gTcO8bGwsIGRlbiBpY2ggZmluZGUuJyldXX0sCiB7cTpMKCdJbCBjb21wbGltZW50byBwacO5IGJlbGxvPycsJ1RoZSBiZXN0IGNvbXBsaW1lbnQ\/JywnRGFzIHNjaMO2bnN0ZSBLb21wbGltZW50PycpLGE6W1snQScsTCgn4oCcU2VpIGZ1b3JpIGRpIHRlc3RhIeKAnScsJ+KAnFlvdeKAmXJlIGNyYXp5IeKAnScsJ+KAnkR1IGJpc3QgdmVycsO8Y2t0IeKAnCcpXSxbJ0YnLEwoJ+KAnE5vbiB0aSBmZXJtaSBtYWku4oCdJywn4oCcWW91IG5ldmVyIHN0b3Au4oCdJywn4oCeRHUgYmxlaWJzdCBuaWUgc3RlaGVuLuKAnCcpXSxbJ04nLEwoJ+KAnENvbiB0ZSBsYSBOYXR1cmEgw6ggaW4gYnVvbmUgbWFuaS7igJ0nLCfigJxOYXR1cmUgaXMgaW4gZ29vZCBoYW5kcyB3aXRoIHlvdS7igJ0nLCfigJ5CZWkgZGlyIGlzdCBkaWUgTmF0dXIgaW4gZ3V0ZW4gSMOkbmRlbi7igJwnKV1dfSwKIHtxOkwoJ1NjZWdsaSB1buKAmWltbWFnaW5lLicsJ1BpY2sgYW4gaW1hZ2UuJywnV8OkaGwgZWluIEJpbGQuJyksaW1nOnRydWUsYTpbWydBJyxMKCdM4oCZb25kYScsJ1RoZSB3YXZlJywnRGllIFdlbGxlJyksVSsnMjAyNC8wMy9WaXN1YWxfaG9tZV8wMi1taW4tNzY4eDM2MC5qcGcnXSxbJ0YnLEwoJ0lsIHZvbG8nLCdUaGUgZmxpZ2h0JywnRGVyIEZsdWcnKSxVKycyMDI0LzAzL1Zpc3VhbF9ob21lXzA1LW1pbi03Njh4MzYwLmpwZyddLFsnTicsTCgnSWwgYm9zY28nLCdUaGUgZm9yZXN0JywnRGVyIFdhbGQnKSxVKycyMDI0LzAzL1Zpc3VhbF9ob21lXzAxLW1pbi03Njh4MzYwLmpwZyddXX0KXTsKY29uc3QgUkVTPXsKIEE6e3Q6J0FkcmVuYWxpbmUnLGltZzpVKycyMDI0LzAzL1Zpc3VhbF9ob21lXzAyLW1pbi0xMDI0eDQ4MC5qcGcnLGQ6TCgnQ2VyY2hpIGlsIGJyaXZpZG8gZSBsbyB0cm92aSBkb3ZlIGdsaSBhbHRyaSBzaSBmZXJtYW5vOiBvbmRlIGFsdGUsIGFjcXVhIGdlbGF0YSwgY3VvcmUgaW4gZ29sYS4gTGEgTmF0dXJhIHBlciB0ZSDDqCB1bmEgc2ZpZGEg4oCTIGUgbGEgcmlzcGV0dGkgcHJvcHJpbyBwZXIgcXVlc3RvLicsJ1lvdSBjaGFzZSB0aGUgdGhyaWxsIGFuZCBmaW5kIGl0IHdoZXJlIG90aGVycyBzdG9wOiBiaWcgd2F2ZXMsIGljZS1jb2xkIHdhdGVyLCBoZWFydCBwb3VuZGluZy4gVG8geW91LCBOYXR1cmUgaXMgYSBjaGFsbGVuZ2Ug4oCTIGFuZCB0aGF04oCZcyBleGFjdGx5IHdoeSB5b3UgcmVzcGVjdCBpdC4nLCdEdSBzdWNoc3QgZGVuIEtpY2sgdW5kIGZpbmRlc3QgaWhuIGRvcnQsIHdvIGFuZGVyZSBhdWZow7ZyZW46IGhvaGUgV2VsbGVuLCBlaXNrYWx0ZXMgV2Fzc2VyLCBIZXJ6a2xvcGZlbi4gRGllIE5hdHVyIGlzdCBmw7xyIGRpY2ggZWluZSBIZXJhdXNmb3JkZXJ1bmcg4oCTIHVuZCBnZW5hdSBkZXNoYWxiIHJlc3Bla3RpZXJzdCBkdSBzaWUuJyksZXY6Wydab2xsaGF1cyBPcGVuIDIwMjcnLCdodHRwczovL2FkZGljdGVkLXRvLmNvbS9lbi96b2xsaGF1cy1vcGVuLTIwMjcvJ10scHI6WydTYWRodSBCb2FyZCcsJ2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tL3Byb2R1Y3Qvc2FkaHUtYm9hcmQtdGF2b2xhLWNvbi1jaGlvZGkvJ119LAogRjp7dDonRnJlZWRvbScsaW1nOlUrJzIwMjQvMDMvVmlzdWFsX2hvbWVfMDUtbWluLTEwMjR4NDgwLmpwZycsZDpMKCdQZXIgdGUgbGEgTmF0dXJhIMOoIHNwYXppbzogb3JpenpvbnRpIGFwZXJ0aSwgc3RyYWRlIG51b3ZlLCBuZXNzdW4gcHJvZ3JhbW1hIGZpc3NvLiBTZWkgZmVsaWNlIHF1YW5kbyBub24gc2FpIGRvdmUgZG9ybWlyYWkgc3Rhbm90dGUuJywnVG8geW91LCBOYXR1cmUgbWVhbnMgc3BhY2U6IG9wZW4gaG9yaXpvbnMsIG5ldyByb2Fkcywgbm8gZml4ZWQgcGxhbnMuIFlvdeKAmXJlIGhhcHBpZXN0IHdoZW4geW91IGRvbuKAmXQga25vdyB3aGVyZSB5b3XigJlsbCBzbGVlcCB0b25pZ2h0LicsJ0bDvHIgZGljaCBpc3QgTmF0dXIgRnJlaXJhdW06IHdlaXRlIEhvcml6b250ZSwgbmV1ZSBXZWdlLCBrZWluIGZlc3RlciBQbGFuLiBEdSBiaXN0IGdsw7xja2xpY2gsIHdlbm4gZHUgbmljaHQgd2Vpw590LCB3byBkdSBoZXV0ZSBOYWNodCBzY2hsw6Rmc3QuJyksZXY6W0woJ0F2dmVudHVyZSBuZWwgbW9uZG8nLCdBZHZlbnR1cmVzIGFyb3VuZCB0aGUgd29ybGQnLCdBYmVudGV1ZXIgd2VsdHdlaXQnKSwnaHR0cHM6Ly9hZGRpY3RlZC10by5jb20vZXZlbnRpLyddLHByOltMKCdBYmJpZ2xpYW1lbnRvJywnQ2xvdGhpbmcnLCdCZWtsZWlkdW5nJyksJ2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tL3Byb2R1Y3QtY2F0ZWdvcnkvYWJiaWdsaWFtZW50by8nXX0sCiBOOnt0OidOYXR1cmUnLGltZzpVKycyMDI0LzAzL1Zpc3VhbF9ob21lXzAxLW1pbi0xMDI0eDQ4MC5qcGcnLGQ6TCgnU2VpIGlsIGN1c3RvZGUgZGVsIGdydXBwbzogbm90aSBvZ25pIGZpb3JlLCByYWNjb2dsaSBvZ25pIHRhcHBvLCBwaWFudGkgYWxiZXJpIGFuY2hlIHF1YW5kbyBuZXNzdW5vIGd1YXJkYS4gU2VuemEgcGVyc29uZSBjb21lIHRlIGlsIGNlcmNoaW8gbm9uIHNpIGNoaXVkZS4nLCdZb3XigJlyZSB0aGUgZ3VhcmRpYW4gb2YgdGhlIGdyb3VwOiB5b3Ugbm90aWNlIGV2ZXJ5IGZsb3dlciwgcGljayB1cCBldmVyeSBib3R0bGUgY2FwIGFuZCBwbGFudCB0cmVlcyBldmVuIHdoZW4gbm9ib2R54oCZcyB3YXRjaGluZy4gV2l0aG91dCBwZW9wbGUgbGlrZSB5b3UsIHRoZSBjaXJjbGUgd291bGRu4oCZdCBjbG9zZS4nLCdEdSBiaXN0IGRlciBIw7x0ZXIgZGVyIEdydXBwZTogRHUgc2llaHN0IGplZGUgQmx1bWUsIGhlYnN0IGplZGVuIERlY2tlbCBhdWYgdW5kIHBmbGFuenQgQsOkdW1lLCBhdWNoIHdlbm4ga2VpbmVyIGhpbnNjaGF1dC4gT2huZSBNZW5zY2hlbiB3aWUgZGljaCBzY2hsaWXDn3Qgc2ljaCBkZXIgS3JlaXMgbmljaHQuJyksZXY6W0woJ05hdHVyZSBkYXlzIGUgQ2xlYW51cCcsJ05hdHVyZSBkYXlzICYgQ2xlYW51cHMnLCdOYXR1cmUgRGF5cyAmIENsZWFudXBzJyksJ2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tL2V2ZW50aS8nXSxwcjpbJ05hdHVyZUN1YmUnLCdodHRwczovL2FkZGljdGVkLXRvLmNvbS9wcm9kdWN0L2Zpb3JlLWRpLWNpb2Njb2xhdG8vJ119Cn07CmxldCBpPTAsc2NvcmU9e0E6MCxGOjAsTjowfTsKY29uc3QgYmFyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxdWl6QmFyJyksc3RlcEVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxdWl6U3RlcCcpOwpmdW5jdGlvbiBzaG93KCl7CiAgYmFyLnN0eWxlLndpZHRoPShpL1EubGVuZ3RoKjEwMCkrJyUnO3N0ZXBFbC50ZXh0Q29udGVudD0oaSsxKSsnIC8gJytRLmxlbmd0aDsKICBjb25zdCBxPVFbaV07CiAgY29uc3QgaHRtbD0nPGRpdiBjbGFzcz0icWNhcmQiPjxoMz4nK3EucSsnPC9oMz48ZGl2IGNsYXNzPSJhbnN3ZXJzJysocS5pbWc\/JyBpbWdzJzonJykrJyI+JysKICAgIHEuYS5tYXAoKGEsayk9Pic8YnV0dG9uIGNsYXNzPSJhbnMiIGRhdGEtaz0iJythWzBdKyciPicrKHEuaW1nPyc8aW1nIHNyYz0iJythWzJdKyciIGFsdD0iJythWzFdKyciIHdpZHRoPSI3NjgiIGhlaWdodD0iMzYwIiBsb2FkaW5nPSJsYXp5Ij4nOic8c3BhbiBjbGFzcz0ibCI+JysnQUJDJ1trXSsnPC9zcGFuPicpKyc8c3BhbiBjbGFzcz0idCI+JythWzFdKyc8L3NwYW4+PC9idXR0b24+Jykuam9pbignJykrJzwvZGl2PjwvZGl2Pic7CiAgc3dhcChodG1sLCgpPT5ib3gucXVlcnlTZWxlY3RvckFsbCgnLmFucycpLmZvckVhY2goYj0+Yi5vbmNsaWNrPSgpPT57Yi5jbGFzc0xpc3QuYWRkKCdwaWNrZWQnKTtzY29yZVtiLmRhdGFzZXQua10rKztzZXRUaW1lb3V0KCgpPT57aSsrO2k8US5sZW5ndGg\/c2hvdygpOnJlc3VsdCgpfSwzODApfSkpOwp9CmZ1bmN0aW9uIHN3YXAoaHRtbCxjYil7CiAgY29uc3Qgb2xkPWJveC5maXJzdEVsZW1lbnRDaGlsZDsKICBjb25zdCBwdXQ9KCk9Pntib3guaW5uZXJIVE1MPWh0bWw7Y29uc3Qgbj1ib3guZmlyc3RFbGVtZW50Q2hpbGQ7bi5jbGFzc0xpc3QuYWRkKCdlbnRlcicpO3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5uLmNsYXNzTGlzdC5yZW1vdmUoJ2VudGVyJykpKTtjYiYmY2IoKX07CiAgaWYob2xkKXtvbGQuY2xhc3NMaXN0LmFkZCgnbGVhdmUnKTtzZXRUaW1lb3V0KHB1dCwzMDApfWVsc2UgcHV0KCk7Cn0KZnVuY3Rpb24gcmVzdWx0KCl7CiAgYmFyLnN0eWxlLndpZHRoPScxMDAlJztzdGVwRWwudGV4dENvbnRlbnQ9TCgnUmlzdWx0YXRvJywnUmVzdWx0JywnRXJnZWJuaXMnKTsKICBjb25zdCBrPVsnTicsJ0YnLCdBJ10ucmVkdWNlKChtLHgpPT5zY29yZVt4XT5zY29yZVttXT94Om0sJ04nKTtjb25zdCByPVJFU1trXTtjb25zdCBmaXg9dT0+L1wvKGVufGRlKVwvLy50ZXN0KHUpfHxBVE5fTEFORz09PSdpdCc\/dTp1LnJlcGxhY2UoJ2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tLycsJ2h0dHBzOi8vYWRkaWN0ZWQtdG8uY29tLycrQVROX0xBTkcrJy8nKTtyLmV2WzFdPWZpeChyLmV2WzFdKTtyLnByWzFdPWZpeChyLnByWzFdKTsKICBjb25zdCBodG1sPSc8ZGl2IGNsYXNzPSJxcmVzIj48ZGl2IGNsYXNzPSJyaSIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKCcrci5pbWcrJykiPjxzcGFuPicrTCgnU2VpIHVuJywnWW91IGFyZScsJ0R1IGJpc3QgZWluJykrJzwvc3Bhbj48Yj4nK3IudCsnPGVtPiBBZGRpY3RlZDwvZW0+PC9iPjwvZGl2PicrCiAgICc8ZGl2IGNsYXNzPSJydCI+PHA+JytyLmQrJzwvcD48ZGl2IGNsYXNzPSJyZWNzIj48YSBocmVmPSInK3IuZXZbMV0rJyI+PHNtYWxsPicrTCgnSWwgdHVvIHByb3NzaW1vIGV2ZW50bycsJ1lvdXIgbmV4dCBldmVudCcsJ0RlaW4gbsOkY2hzdGVzIEV2ZW50JykrJzwvc21hbGw+JytyLmV2WzBdKycg4oaSPC9hPjxhIGhyZWY9Iicrci5wclsxXSsnIj48c21hbGw+JytMKCdEYWxsbyBzaG9wLCBwZXIgdGUnLCdGcm9tIHRoZSBzaG9wLCBmb3IgeW91JywnQXVzIGRlbSBTaG9wLCBmw7xyIGRpY2gnKSsnPC9zbWFsbD4nK3IucHJbMF0rJyDihpI8L2E+PC9kaXY+JysKICAgJzxkaXYgY2xhc3M9InJhIj48YnV0dG9uIGNsYXNzPSJidG4gZGFyayIgaWQ9InFTaGFyZSI+JytMKCdDb25kaXZpZGkgaWwgcmlzdWx0YXRvJywnU2hhcmUgeW91ciByZXN1bHQnLCdFcmdlYm5pcyB0ZWlsZW4nKSsnPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIGdob3N0IiBpZD0icUFnYWluIj4nK0woJ1JpZmFpIGlsIHF1aXonLCdUYWtlIHRoZSBxdWl6IGFnYWluJywnUXVpeiB3aWVkZXJob2xlbicpKyc8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nOwogIHN3YXAoaHRtbCwoKT0+ewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3FBZ2FpbicpLm9uY2xpY2s9KCk9PntpPTA7c2NvcmU9e0E6MCxGOjAsTjowfTtzaG93KCl9OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3FTaGFyZScpLm9uY2xpY2s9YXN5bmMgZT0+ewogICAgICBjb25zdCB0ZXh0PUwoJ1Nvbm8gdW4gJytyLnQrJyBBZGRpY3RlZCEgU2NvcHJpIGNoZSB0aXBvIGRpIEFkZGljdGVkIHNlaSB0dTonLCdJ4oCZbSAnKyhyLnQ9PT0nQWRyZW5hbGluZSc\/J2FuICc6J2EgJykrci50KycgQWRkaWN0ZWQhIEZpbmQgb3V0IHdoYXQga2luZCBvZiBBZGRpY3RlZCB5b3UgYXJlOicsJ0ljaCBiaW4gZWluICcrci50KycgQWRkaWN0ZWQhIEZpbmRlIGhlcmF1cywgd2FzIGbDvHIgZWluIEFkZGljdGVkIGR1IGJpc3Q6Jyk7Y29uc3QgdXJsPSdodHRwczovL2FkZGljdGVkLXRvLmNvbS8nKyhBVE5fTEFORz09PSdpdCc\/Jyc6QVROX0xBTkcrJy8nKSsnI3F1aXonOwogICAgICB0cnl7aWYobmF2aWdhdG9yLnNoYXJlKXthd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoe3RpdGxlOkwoJ1F1YW50byBzZWkgQWRkaWN0ZWQ\/JywnSG93IEFkZGljdGVkIGFyZSB5b3U\/JywnV2llIEFkZGljdGVkIGJpc3QgZHU\/JyksdGV4dCx1cmx9KTtyZXR1cm59YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCsnICcrdXJsKTtlLnRhcmdldC50ZXh0Q29udGVudD1MKCdMaW5rIGNvcGlhdG8g4pyTJywnTGluayBjb3BpZWQg4pyTJywnTGluayBrb3BpZXJ0IOKckycpfWNhdGNoKGVycil7fQogICAgfTsKICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnYXRuOnF1aXonLHtkZXRhaWw6ci50fSkpOwogIH0pOwp9CnNob3coKTsKfSkoKTsK<\/script>\n<script type=\"text\/atn-b64\">Ci8qIC0tLS0tLS0tLS0gU1VPTkkgREVMTEEgTkFUVVJBIChrb21wbGV0dCBpbSBCcm93c2VyIGVyemV1Z3QsIGtlaW5lIEF1ZGlvZGF0ZWllbikgLS0tLS0tLS0tLSAqLwooZnVuY3Rpb24oKXsKInVzZSBzdHJpY3QiOwpjb25zdCBidG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdW5kQnRuJyk7aWYoIWJ0bikgcmV0dXJuOwpjb25zdCBsYmw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdW5kTGJsJyk7CmxldCBhYz1udWxsLG9uPWZhbHNlLG1hc3RlcixMWT17fSxzY2VuZT0nb2NlYW4nLHRpbWVycz1bXTsKY29uc3QgU0NFTkVTPXsgLy8gTGF1dHN0w6Rya2UgamUgRWJlbmUKICBvY2VhbiA6e3dhdmVzOi45LHdpbmQ6LjEyLGJpcmRzOjAsICBpY2U6MH0sCiAgbWVhZG93Ont3YXZlczouMTUsd2luZDouNSxiaXJkczouMzUsaWNlOjB9LAogIGZvcmVzdDp7d2F2ZXM6MCx3aW5kOi4yOCxiaXJkczoxLCAgaWNlOjB9LAogIHdpbnRlcjp7d2F2ZXM6MCx3aW5kOi44NSxiaXJkczowLCAgaWNlOi44fQp9Owpjb25zdCBOQU1FUz17b2NlYW46TCgnT25kZSBkZWwgbWFyZScsJ09jZWFuIHdhdmVzJywnTWVlcmVzcmF1c2NoZW4nKSxtZWFkb3c6TCgnVmVudG8gc3VsIHByYXRvJywnV2luZCBpbiB0aGUgbWVhZG93JywnV2luZCBhdWYgZGVyIFdpZXNlJyksZm9yZXN0OkwoJ0Jvc2NvJywnRm9yZXN0JywnV2FsZCcpLHdpbnRlcjpMKCdWZW50byBk4oCZaW52ZXJubycsJ1dpbnRlciB3aW5kJywnV2ludGVyd2luZCcpfTsKZnVuY3Rpb24gbm9pc2VCdWYoKXtjb25zdCBuPWFjLnNhbXBsZVJhdGUqMyxiPWFjLmNyZWF0ZUJ1ZmZlcigxLG4sYWMuc2FtcGxlUmF0ZSksZD1iLmdldENoYW5uZWxEYXRhKDApO2xldCBsYXN0PTA7Zm9yKGxldCBpPTA7aTxuO2krKyl7Y29uc3Qgdz1NYXRoLnJhbmRvbSgpKjItMTtsYXN0PShsYXN0Ky4wMip3KS8xLjAyO2RbaV09bGFzdCozLjUrdyouMTV9cmV0dXJuIGJ9CmZ1bmN0aW9uIG5vaXNlU3JjKGJ1Zil7Y29uc3Qgcz1hYy5jcmVhdGVCdWZmZXJTb3VyY2UoKTtzLmJ1ZmZlcj1idWY7cy5sb29wPXRydWU7cy5zdGFydCgwLE1hdGgucmFuZG9tKCkqMik7cmV0dXJuIHN9CmZ1bmN0aW9uIGJ1aWxkKCl7CiAgYWM9bmV3ICh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSgpOwogIG1hc3Rlcj1hYy5jcmVhdGVHYWluKCk7bWFzdGVyLmdhaW4udmFsdWU9MDttYXN0ZXIuY29ubmVjdChhYy5kZXN0aW5hdGlvbik7CiAgY29uc3QgYnVmPW5vaXNlQnVmKCk7CiAgLy8gV2VsbGVuOiBSYXVzY2hlbiwgVGllZnBhc3MsIGxhbmdzYW0gYW4tIHVuZCBhYnNjaHdlbGxlbmQKICB7Y29uc3Qgcz1ub2lzZVNyYyhidWYpLGY9YWMuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Zi50eXBlPSdsb3dwYXNzJztmLmZyZXF1ZW5jeS52YWx1ZT02NTA7Y29uc3QgZz1hYy5jcmVhdGVHYWluKCksbHY9YWMuY3JlYXRlR2FpbigpO2x2LmdhaW4udmFsdWU9MDsKICAgcy5jb25uZWN0KGYpO2YuY29ubmVjdChnKTtnLmNvbm5lY3QobHYpO2x2LmNvbm5lY3QobWFzdGVyKTtMWS53YXZlcz17ZyxsdixmfTt9CiAgLy8gV2luZDogQmFuZHBhc3MsIGRlciBsYW5nc2FtIHdhbmRlcnQKICB7Y29uc3Qgcz1ub2lzZVNyYyhidWYpLGY9YWMuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Zi50eXBlPSdiYW5kcGFzcyc7Zi5mcmVxdWVuY3kudmFsdWU9NTAwO2YuUS52YWx1ZT0uODtjb25zdCBnPWFjLmNyZWF0ZUdhaW4oKSxsdj1hYy5jcmVhdGVHYWluKCk7bHYuZ2Fpbi52YWx1ZT0wO2cuZ2Fpbi52YWx1ZT0uNTsKICAgcy5jb25uZWN0KGYpO2YuY29ubmVjdChnKTtnLmNvbm5lY3QobHYpO2x2LmNvbm5lY3QobWFzdGVyKTtMWS53aW5kPXtnLGx2LGZ9O30KICAvLyBWw7ZnZWwgJiBFaXM6IGVpbnplbG5lIEtsw6RuZ2UKICB7Y29uc3QgbHY9YWMuY3JlYXRlR2FpbigpO2x2LmdhaW4udmFsdWU9MDtsdi5jb25uZWN0KG1hc3Rlcik7TFkuYmlyZHM9e2x2fTt9CiAge2NvbnN0IGx2PWFjLmNyZWF0ZUdhaW4oKTtsdi5nYWluLnZhbHVlPTA7bHYuY29ubmVjdChtYXN0ZXIpO0xZLmljZT17bHZ9O30KICAvLyBCZXdlZ3VuZyBkZXIgV2VsbGVuL1dpbmQKICBsZXQgcGg9MDt0aW1lcnMucHVzaChzZXRJbnRlcnZhbCgoKT0+e3BoKz0uMTtjb25zdCB0PWFjLmN1cnJlbnRUaW1lOwogICAgY29uc3Qgc3c9TWF0aC5wb3coKE1hdGguc2luKHBoKi41NSkrMSkvMiwyLjIpO0xZLndhdmVzLmcuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoLjEyK3N3Ki45LHQsLjQpO0xZLndhdmVzLmYuZnJlcXVlbmN5LnNldFRhcmdldEF0VGltZSg0MDArc3cqOTAwLHQsLjUpOwogICAgTFkud2luZC5mLmZyZXF1ZW5jeS5zZXRUYXJnZXRBdFRpbWUoMzgwKyhNYXRoLnNpbihwaCouMjEpKzEpKjMwMCsoTWF0aC5zaW4ocGgqLjkpKjYwKSx0LC42KTtMWS53aW5kLmcuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoLjM1KyhNYXRoLnNpbihwaCouMzMpKzEpKi4yNSx0LC42KTsKICB9LDEwMCkpOwogIC8vIFZvZ2VscnVmZQogIChmdW5jdGlvbiBjaGlycCgpe3RpbWVycy5wdXNoKHNldFRpbWVvdXQoKCk9PntpZihvbiYmU0NFTkVTW3NjZW5lXS5iaXJkcz4wKWJpcmQoKTtjaGlycCgpfSwzMDArTWF0aC5yYW5kb20oKSoxODAwKSl9KSgpOwogIC8vIGtuYWNrZW5kZXMgRWlzCiAgKGZ1bmN0aW9uIGNyYWNrKCl7dGltZXJzLnB1c2goc2V0VGltZW91dCgoKT0+e2lmKG9uJiZTQ0VORVNbc2NlbmVdLmljZT4wKWljZUNyYWNrKCk7Y3JhY2soKX0sMjUwMCtNYXRoLnJhbmRvbSgpKjUwMDApKX0pKCk7Cn0KZnVuY3Rpb24gYmlyZCgpewogIGNvbnN0IHQ9YWMuY3VycmVudFRpbWUsbj0xK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0KSxiYXNlPTIyMDArTWF0aC5yYW5kb20oKSoxODAwLHBhbj1hYy5jcmVhdGVTdGVyZW9QYW5uZXI\/YWMuY3JlYXRlU3RlcmVvUGFubmVyKCk6bnVsbDsKICBpZihwYW4pe3Bhbi5wYW4udmFsdWU9TWF0aC5yYW5kb20oKSoxLjYtLjg7cGFuLmNvbm5lY3QoTFkuYmlyZHMubHYpfQogIGZvcihsZXQgaz0wO2s8bjtrKyspe2NvbnN0IG89YWMuY3JlYXRlT3NjaWxsYXRvcigpLGc9YWMuY3JlYXRlR2FpbigpO2NvbnN0IHN0PXQrayooLjA5K01hdGgucmFuZG9tKCkqLjA2KTsKICAgIG8udHlwZT0nc2luZSc7by5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoYmFzZSxzdCk7by5mcmVxdWVuY3kuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShiYXNlKigxLjIrTWF0aC5yYW5kb20oKSouNSksc3QrLjA1KTtvLmZyZXF1ZW5jeS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGJhc2UqLjg1LHN0Ky4xKTsKICAgIGcuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLHN0KTtnLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoLjA1LHN0Ky4wMTIpO2cuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKC4wMDA1LHN0Ky4xMik7CiAgICBvLmNvbm5lY3QoZyk7Zy5jb25uZWN0KHBhbnx8TFkuYmlyZHMubHYpO28uc3RhcnQoc3QpO28uc3RvcChzdCsuMTQpfQp9CmZ1bmN0aW9uIGljZUNyYWNrKCl7CiAgY29uc3QgdD1hYy5jdXJyZW50VGltZSxsZW49LjI1LGI9YWMuY3JlYXRlQnVmZmVyKDEsYWMuc2FtcGxlUmF0ZSpsZW4sYWMuc2FtcGxlUmF0ZSksZD1iLmdldENoYW5uZWxEYXRhKDApOwogIGZvcihsZXQgaT0wO2k8ZC5sZW5ndGg7aSsrKXtkW2ldPShNYXRoLnJhbmRvbSgpKjItMSkqTWF0aC5wb3coMS1pL2QubGVuZ3RoLDYpKihNYXRoLnJhbmRvbSgpPC4wMj8zOjEpfQogIGNvbnN0IHM9YWMuY3JlYXRlQnVmZmVyU291cmNlKCk7cy5idWZmZXI9Yjtjb25zdCBmPWFjLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2YudHlwZT0naGlnaHBhc3MnO2YuZnJlcXVlbmN5LnZhbHVlPTEyMDA7Y29uc3QgZz1hYy5jcmVhdGVHYWluKCk7Zy5nYWluLnZhbHVlPS4zNTsKICBzLmNvbm5lY3QoZik7Zi5jb25uZWN0KGcpO2cuY29ubmVjdChMWS5pY2UubHYpO3Muc3RhcnQodCk7CiAgY29uc3Qgbz1hYy5jcmVhdGVPc2NpbGxhdG9yKCksb2c9YWMuY3JlYXRlR2FpbigpO28uZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKDE0MCx0KTtvLmZyZXF1ZW5jeS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDQwLHQrLjMpO29nLmdhaW4uc2V0VmFsdWVBdFRpbWUoLjIsdCk7b2cuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKC4wMDEsdCsuMzUpO28uY29ubmVjdChvZyk7b2cuY29ubmVjdChMWS5pY2UubHYpO28uc3RhcnQodCk7by5zdG9wKHQrLjQpOwp9CmZ1bmN0aW9uIGFwcGx5U2NlbmUoKXsKICBpZighYWMpcmV0dXJuO2NvbnN0IHM9U0NFTkVTW3NjZW5lXSx0PWFjLmN1cnJlbnRUaW1lOwogIE9iamVjdC5rZXlzKHMpLmZvckVhY2goaz0+TFlba10ubHYuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoc1trXSx0LDEuMikpOwogIGxibC50ZXh0Q29udGVudD1vbj9OQU1FU1tzY2VuZV06TCgnU3VvbmkgZGVsbGEgbmF0dXJhJywnU291bmRzIG9mIG5hdHVyZScsJ05hdHVyZ2Vyw6R1c2NoZScpOwp9CmJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsYXN5bmMoKT0+ewogIGlmKCFhYylidWlsZCgpOwogIG9uPSFvbjtidG4uY2xhc3NMaXN0LnRvZ2dsZSgnb24nLG9uKTtidG4uc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLG9uKTsKICBpZihvbil7YXdhaXQgYWMucmVzdW1lKCk7bWFzdGVyLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKC41NSxhYy5jdXJyZW50VGltZSwuNil9ZWxzZXttYXN0ZXIuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoMCxhYy5jdXJyZW50VGltZSwuMyl9CiAgYXBwbHlTY2VuZSgpOwp9KTsKLyogU3plbmUgamUgbmFjaCBBYnNjaG5pdHQgKi8KY29uc3QgaW89bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGVzPT57ZXMuZm9yRWFjaChlPT57aWYoZS5pc0ludGVyc2VjdGluZyl7Y29uc3Qgcz1lLnRhcmdldC5kYXRhc2V0LnNvdW5kO2lmKHMmJnMhPT1zY2VuZSl7c2NlbmU9czthcHBseVNjZW5lKCl9fX0pfSx7cm9vdE1hcmdpbjonLTQ1JSAwcHggLTQ1JSAwcHgnfSk7CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNvdW5kXScpLmZvckVhY2goZWw9PmlvLm9ic2VydmUoZWwpKTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsKCk9PntpZighYWMpcmV0dXJuO2RvY3VtZW50LmhpZGRlbj9hYy5zdXNwZW5kKCk6b24mJmFjLnJlc3VtZSgpfSk7Ci8qIEltIEVpc3dhc3NlciB3aXJkIGVzIHN0aWxsIOKAkyBudXIgV2luZCB1bmQgSGVyenNjaGxhZyAqLwp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYXRuOmljZScsZT0+e2lmKCFhY3x8IW9uKXJldHVybjtjb25zdCB0PWFjLmN1cnJlbnRUaW1lOwogIGlmKGUuZGV0YWlsPT09J2luJyl7TFkud2luZC5sdi5nYWluLnNldFRhcmdldEF0VGltZSguMjUsdCwuNCk7aGVhcnQodHJ1ZSl9ZWxzZXthcHBseVNjZW5lKCk7aGVhcnQoZmFsc2UpfX0pOwpsZXQgaGI9bnVsbDtmdW5jdGlvbiBoZWFydChzdGFydCl7Y2xlYXJJbnRlcnZhbChoYik7aWYoIXN0YXJ0KXJldHVybjtjb25zdCBiZWF0PSgpPT57Y29uc3QgdD1hYy5jdXJyZW50VGltZTtbMCwuMjJdLmZvckVhY2goKGQsayk9Pntjb25zdCBvPWFjLmNyZWF0ZU9zY2lsbGF0b3IoKSxnPWFjLmNyZWF0ZUdhaW4oKTtvLmZyZXF1ZW5jeS52YWx1ZT1rPzQ4OjU1O2cuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLHQrZCk7Zy5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKC41LHQrZCsuMDIpO2cuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKC4wMDEsdCtkKy4xOCk7by5jb25uZWN0KGcpO2cuY29ubmVjdChtYXN0ZXIpO28uc3RhcnQodCtkKTtvLnN0b3AodCtkKy4yKX0pfTtiZWF0KCk7aGI9c2V0SW50ZXJ2YWwoYmVhdCw4MjApfQp9KSgpOwo=<\/script>\n<\/div>\n<script>document.addEventListener(\"DOMContentLoaded\",function(){var L=document.querySelectorAll('script[type=\"text\/atn-b64\"]');for(var i=0;i<L.length;i++){var c=document.createElement(\"script\");c.text=decodeURIComponent(escape(atob(L[i].textContent.replace(\/\\s+\/g,\"\"))));L[i].parentNode.insertBefore(c,L[i].nextSibling)}});<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Suoni della natura MANIFESTO IMPATTO SHOP EVENTI CONTATTI IT \u00b7 EN \u00b7 DE 0 Manifesto Impatto Shop Eventi Contatti Addicted To Nature \u2013 la community di chi vive, rispetta e custodisce la Natura Addicted to Adrenaline La community di chi vive, rispetta e custodisce la Natura Are you Addicted? Oceano \u00b7 L\u2019onda Scorri Casa \u00b7 [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":11273,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-15032","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Home - Addicted To Nature<\/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:\/\/addicted-to.com\/en\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home - Addicted To Nature\" \/>\n<meta property=\"og:description\" content=\"Suoni della natura MANIFESTO IMPATTO SHOP EVENTI CONTATTI IT \u00b7 EN \u00b7 DE 0 Manifesto Impatto Shop Eventi Contatti Addicted To Nature \u2013 la community di chi vive, rispetta e custodisce la Natura Addicted to Adrenaline La community di chi vive, rispetta e custodisce la Natura Are you Addicted? Oceano \u00b7 L\u2019onda Scorri Casa \u00b7 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/addicted-to.com\/en\/\" \/>\n<meta property=\"og:site_name\" content=\"Addicted To Nature\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/addictedtoofficial\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-16T15:02:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@addicted2bamboo\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/\",\"name\":\"Home - Addicted To Nature\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Visual_home_02-min.jpg\",\"datePublished\":\"2026-10-14T19:11:04+00:00\",\"dateModified\":\"2026-10-16T15:02:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/addicted-to.com\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#primaryimage\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Visual_home_02-min.jpg\",\"contentUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Visual_home_02-min.jpg\",\"width\":1920,\"height\":900,\"caption\":\"Riconnettersi alla Natura\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/addicted-to.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#website\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/\",\"name\":\"Addicted To Nature\",\"description\":\"La community di chi vive, rispetta e custodisce la Natura\",\"publisher\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/addicted-to.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#organization\",\"name\":\"Addicted To Nature\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/ATN_marchio_positivo.svg\",\"contentUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/ATN_marchio_positivo.svg\",\"width\":1000,\"height\":290,\"caption\":\"Addicted To Nature\"},\"image\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/addictedtoofficial\",\"https:\\\/\\\/x.com\\\/addicted2bamboo\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Home - Addicted To Nature","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:\/\/addicted-to.com\/en\/","og_locale":"en_GB","og_type":"article","og_title":"Home - Addicted To Nature","og_description":"Suoni della natura MANIFESTO IMPATTO SHOP EVENTI CONTATTI IT \u00b7 EN \u00b7 DE 0 Manifesto Impatto Shop Eventi Contatti Addicted To Nature \u2013 la community di chi vive, rispetta e custodisce la Natura Addicted to Adrenaline La community di chi vive, rispetta e custodisce la Natura Are you Addicted? Oceano \u00b7 L\u2019onda Scorri Casa \u00b7 [&hellip;]","og_url":"https:\/\/addicted-to.com\/en\/","og_site_name":"Addicted To Nature","article_publisher":"https:\/\/www.facebook.com\/addictedtoofficial","article_modified_time":"2026-10-16T15:02:02+00:00","og_image":[{"width":1920,"height":900,"url":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@addicted2bamboo","twitter_misc":{"Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/addicted-to.com\/","url":"https:\/\/addicted-to.com\/","name":"Home - Addicted To Nature","isPartOf":{"@id":"https:\/\/addicted-to.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/addicted-to.com\/#primaryimage"},"image":{"@id":"https:\/\/addicted-to.com\/#primaryimage"},"thumbnailUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min.jpg","datePublished":"2026-10-14T19:11:04+00:00","dateModified":"2026-10-16T15:02:02+00:00","breadcrumb":{"@id":"https:\/\/addicted-to.com\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/addicted-to.com\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/addicted-to.com\/#primaryimage","url":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min.jpg","contentUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/Visual_home_02-min.jpg","width":1920,"height":900,"caption":"Riconnettersi alla Natura"},{"@type":"BreadcrumbList","@id":"https:\/\/addicted-to.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/addicted-to.com\/"},{"@type":"ListItem","position":2,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/addicted-to.com\/#website","url":"https:\/\/addicted-to.com\/","name":"Addicted To Nature","description":"The community of people who live, respect and protect Nature","publisher":{"@id":"https:\/\/addicted-to.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/addicted-to.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/addicted-to.com\/#organization","name":"Addicted To Nature","url":"https:\/\/addicted-to.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/addicted-to.com\/#\/schema\/logo\/image\/","url":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/ATN_marchio_positivo.svg","contentUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/ATN_marchio_positivo.svg","width":1000,"height":290,"caption":"Addicted To Nature"},"image":{"@id":"https:\/\/addicted-to.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/addictedtoofficial","https:\/\/x.com\/addicted2bamboo"]}]}},"_links":{"self":[{"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/pages\/15032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/comments?post=15032"}],"version-history":[{"count":10,"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/pages\/15032\/revisions"}],"predecessor-version":[{"id":15128,"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/pages\/15032\/revisions\/15128"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/media\/11273"}],"wp:attachment":[{"href":"https:\/\/addicted-to.com\/en\/wp-json\/wp\/v2\/media?parent=15032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}