Вы находитесь на странице: 1из 604

Content-Type: multipart/related; start=<op.mhtml.1345679037522.b13659260f58b72f@ 182.4.102.244>; boundary=----------QfbhZNivKLE4FzH5QJnERC Content-Location: http://beritama.com/lagu-barat-terbaru/ Subject: =?utf-8?Q?Tangga=20Lagu=20Barat=20Terbaru=202012=20=E2=80=93=20BillBoar d=20TOP?= MIME-Version: 1.

0 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=UTF-8; name=default.htm Content-ID: <op.mhtml.1345679037522.b13659260f58b72f@182.4.102.244> Content-Location: http://beritama.com/lagu-barat-terbaru/ Content-Transfer-Encoding: Quoted-Printable <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.= org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns=3D"http://www.w3.org/1999/xhtml" dir=3D"ltr" lang=3D"en-US">= <head <meta <meta <meta <meta <meta <meta <meta <meta <meta profile=3D"http://gmpg.org/xfn/11"> content=3D'indonesian' name=3D'language'/> content=3D'id' name=3D'geo.country'/> name=3D"googlebot" content=3D"index,follow,snippet"/> name=3D"googlebot-image" content=3D"follow,all"/> name=3D"revisit-after" content=3D"2 days"/> name=3D"distribution" content=3D"global"/> name=3D"target" content=3D"global"/> name=3D"rating" content=3D"general"/> content=3D'IE=3DEmulateIE7' http-equiv=3D'X-UA-Compatible'/> <meta charset=3D"UTF-8" /> <meta property=3D"og:image" content=3D"" /> <title>Tangga Lagu Barat Terbaru 2012 &#8211; BillBoard TOP</title> <link rel=3D"stylesheet" href=3D"http://beritama.com/wp-content/themes/= BeritamaCTR/style.css" type=3D"text/css" media=3D"screen" /> <!--[if IE]><script src=3D"http://html5shiv.googlecode.com/svn/trunk/ht= ml5.js"></script><![endif]--> <link rel=3D"alternate" type=3D"application/rss+xml" title=3D"Berita Ut= ama &#8211; 2012 Terkini RSS Feed" href=3D"http://beritama.com/feed/" />= <link rel=3D"pingback" href=3D"http://beritama.com/xmlrpc.php" /> <link rel=3D"alternate" type=3D"application/rss+xml" title=3D"Berita Ut= ama - 2012 Terkini &raquo; Tangga Lagu Barat Terbaru 2012 &#8211; BillBo= ard TOP Comments Feed" href=3D"http://beritama.com/lagu-barat-terbaru/fe= ed/" /> <link rel=3D"EditURI" type=3D"application/rsd+xml" title=3D"RSD" href=3D= "http://beritama.com/xmlrpc.php?rsd" /> <link rel=3D"wlwmanifest" type=3D"application/wlwmanifest+xml" href=3D"h= ttp://beritama.com/wp-includes/wlwmanifest.xml" /> = <link rel=3D'prev' title=3D'Daftar Harga Handphone Nexian Terbaru' href=3D= 'http://beritama.com/harga-hp-nexian/' /> <link rel=3D'next' title=3D'Honda CBR 250R VS Kawasaki Ninja 250R' href=3D= 'http://beritama.com/cbr-250r-vs-ninja-250r/' /> <meta name=3D"generator" content=3D"WordPress 3.4.1" /> <link rel=3D'canonical' href=3D'http://beritama.com/lagu-barat-terbaru/'= /> <link rel=3D'shortlink' href=3D'http://beritama.com/?p=3D28' /> <!-- platinum seo pack 1.3.7 --> <meta name=3D"robots" content=3D"index,follow" /> <meta name=3D"description" content=3D"Tangga Lagu Barat dan lagu terbaru=

barat selalu dinantikan para pencinta musik. Di beritama.com, ditampilk= an informasi terbaru tentang Tangga Lagu Barat Terbaru - Update setiap h= ari : Billboard HOT 100 dan Billboard TOP 200 yang memakai billboard seb= agai patokan." /> <meta name=3D"keywords" content=3D"download,download mp3,lagu barat,lagu= barat terpopuler,lagu mancanegara,lagu pop barat,lagu pop barat terbaru= ,MP3,tangga lagu barat,tangga lagu barat terpopuler,tangga lagu mancaneg= ara,tangga lagu pop barat,tangga lagu terbaru" /> <link rel=3D"canonical" href=3D"http://beritama.com/lagu-barat-terbaru/"= /> <!-- /platinum one seo pack --> <!-- google analystic --> <script type=3D"text/javascript"> var _gaq =3D _gaq || []; _gaq.push(['_setAccount', 'UA-32568892-1']); _gaq.push(['_setDomainName', 'beritama.com']); _gaq.push(['_trackPageview']); (function() { var ga =3D document.createElement('script'); ga.type =3D 'text/javas= cript'; ga.async =3D true; ga.src =3D ('https:' =3D=3D document.location.protocol ? 'https://ss= l' : 'http://www') + '.google-analytics.com/ga.js'; var s =3D document.getElementsByTagName('script')[0]; s.parentNode.i= nsertBefore(ga, s); })(); </script> <!-- google analystic end --> <meta name=3D"google-site-verification" content=3D"HcMyaACQ8-qGWXFj9zusY= nnU1yk80LHJOegyNH9XD2Y" /> </head> <body> <div id=3D"wrapper"> <header> <nav> <ul id=3D"nav"> <li><a href=3D"http://beritama.com/"><img class=3D"aligncenter" src=3D"h= ttp://1.bp.blogspot.com/-7Eveg1Sruok/TZE6GFV_OHI/AAAAAAAABZo/jRHomtpFbd0= /s1600/home_white.png" alt=3D"Berita Terkini Home" border=3D"0" height=3D= "14" width=3D"16" title=3D'Berita Terkini Home'></a></li> <li class=3D"cat-item cat-item-45"><a href=3D"http://beritama.com/categ= ory/bisnis/" title=3D"View all posts filed under Bisnis">Bisnis</a> </li> <li class=3D"cat-item cat-item-34"><a href=3D"http://beritama.com/categ= ory/gadget/" title=3D"View all posts filed under Gadget">Gadget</a> </li> <li class=3D"cat-item cat-item-68"><a href=3D"http://beritama.com/categ= ory/hiburan/" title=3D"View all posts filed under Hiburan">Hiburan</a> </li> <li class=3D"cat-item cat-item-16"><a href=3D"http://beritama.com/categ= ory/internet/" title=3D"View all posts filed under Internet">Internet</a= > </li> <li class=3D"cat-item cat-item-191"><a href=3D"http://beritama.com/cate= gory/lifestyle/" title=3D"View all posts filed under Lifestyle">Lifestyl= e</a> </li> <li class=3D"cat-item cat-item-1"><a href=3D"http://beritama.com/catego=

ry/misc/" title=3D"View all posts filed under Misc">Misc</a> </li> <li class=3D"cat-item cat-item-108"><a href=3D"http://beritama.com/cate= gory/otomotif/" title=3D"View all posts filed under Otomotif">Otomotif</= a> </li> <li class=3D"cat-item cat-item-405"><a href=3D"http://beritama.com/cate= gory/sastra/" title=3D"View all posts filed under Sastra">Sastra</a> </li> <li class=3D"cat-item cat-item-17"><a href=3D"http://beritama.com/categ= ory/software/" title=3D"View all posts filed under Software">Software</a= > </li> <li class=3D"cat-item cat-item-141"><a href=3D"http://beritama.com/cate= gory/sport/" title=3D"View all posts filed under Sport">Sport</a> </li> <li class=3D"cat-item cat-item-786"><a href=3D"http://beritama.com/cate= gory/youtube/" title=3D"View all posts filed under Youtube">Youtube</a> </li> <li>=E2=9C=A9</li> <li><a href=3D'http://www.poztmo.com'>Poztmo.com</a></li> <li><a href=3D'http://www.naylacorp.com'>Naylacorp.com</a></li> <li>=E2=9C=A9</li> <li class=3D"page_item page-item-610"><a href=3D"http://beritama.com/con= tact/">Contact</a></li> <li class=3D"page_item page-item-2"><a href=3D"http://beritama.com/discl= aimer/">Disclaimer</a></li> </ul> </nav> <span id=3D"tlogo">Berita Utama &#8211; 2012 Ter kini <div id=3D"t= logo1">Tangga Lagu Barat Terbaru 2012 &#8211; BillBoard TOP</div></span>= <link rel=3D"shorcut icon" type=3D"image/x-ico" href=3D" http://1.bp.b= logspot.com/-97ZZNw6yNpg/T2qvpnqbzEI/AAAAAAAAACo/4YOP1BRwQBc/s1600/berit= ama-ico.png"/> </header> <div align=3D'center'> <a href=3D"http://www.capaisukses.com/" rel=3D"nofollow" target=3D"_blan= k" imageanchor=3D"1" style=3D"margin-left: 1em; margin-right: 1em;"><img= src=3D"http://1.bp.blogspot.com/-f1uT8zwaMZQ/T6k39zSvQCI/AAAAAAAABFQ/IX= iYxsbz1bk/s1600/728x90-usaha-berhasil.gif"></a> </div> <hr/> <section> <div id=3D"content"> <article class=3D"post"> <div id=3D'rdfa_breadcrumb'><!-- RDFa Breadcrumbs Plugin by Mallikarjun = Yawalkar --><div class=3D"breadcrumb breadcrumbs"><div class=3D"rdfa-bre= adcrumb"><div xmlns:v=3D"http://rdf.data-vocabulary.org/#"><span class=3D= "breadcrumbs-title">Berita Terkini</span><span typeof=3D"v:Breadcrumb"><= a rel=3D"v:url" property=3D"v:title" href=3D"http://beritama.com/" class= =3D"home"></a></span> <span class=3D'separator'>=E2=80=BA</span> <span t= ypeof=3D"v:Breadcrumb"><a rel=3D"v:url" property=3D"v:title" href=3D"htt= p://beritama.com/category/hiburan/" title=3D"Hiburan">Hiburan</a></span>= <span class=3D'separator'>=E2=80=BA</span> Tangga Lagu Barat Terbaru 20= 12 &#8211; BillBoard TOP</div></div></div><!-- RDFa Breadcrumbs Plugin b= y Mallikarjun Yawalkar --> </div>

<!-- iklan 468X15 dibawah breadcrumb post --> <h1><a href=3D"http://beritama.com/lagu-barat-terbaru/" rel=3D"bookmark"= >Tangga Lagu Barat Terbaru 2012 &#8211; BillBoard TOP</a></h1> <div class=3D"entry"> <div align=3D'center'> <!-- BEGIN STANDARD TAG - 468 x 60 - beritama.com: Run-of-site - DO NOT = MODIFY --> <IFRAME FRAMEBORDER=3D0 MARGINWIDTH=3D0 MARGINHEIGHT=3D0 SCROLLING=3DNO = WIDTH=3D468 HEIGHT=3D60 SRC=3D"http://ad.yieldads.com/st?ad_type=3Difram= e&ad_size=3D468x60&section=3D3032601&pub_url=3D${PUB_URL}"></IFRAME> <!-- END TAG --> </div> <div style=3D"float: left; margin: 7px;"> <!-- Place Your 336x280 or 300x250 Ad Code Here, Will Be Displayed on Yo= ur Blog Content --> <!-- Begin: KlikSaya.com --> <script src=3D"http://scr.kliksaya.com/js-ad.php?zid=3D98148" type=3D"te= xt/javascript"> </script> <!-- End: KlikSaya.com --> </div> <div class=3D"hreview" style=3D"display:block; margin: 0 0 1px 1px; padd= ing: 7px; background: #F6F6F6; border: 1px solid #DDD; -moz-border-radiu= s: 3px; border-radius: 3px; font-size: 0.8em; width: 43%; float: left;">= Title: <span class=3D"item"><span class=3D"fn entry-title" style=3D"font= -size: 0.8em;font-weight: normal;">Tangga Lagu Barat Terbaru 2012 - Bill= Board TOP</span></span><br />Reviewed by <span class=3D"reviewer">Lagu T= erbaru</span><br/>Rating: <span class=3D"rating">5.0</span><br/>Summary:= <span class=3D"summary">Tangga Lagu Barat Terbaru - Update setiap hari = : Billboard HOT 100 dan Billboard TOP 200</span><br/><p><span class=3D"d= escription">Tangga Lagu Barat dan lagu terbaru barat selalu dinantikan p= ara pencinta musik. Di beritama.com, ditampilkan informasi terbaru tenta= ng Tangga Lagu Barat Terbaru - Update setiap hari : Billboard HOT 100 da= n Billboard TOP 200 yang memakai billboard sebagai patokan.</span></p></= div><p>Pencinta musik dan lagu barat pasti selalu ingin mengetahui perke= mbangan tentang <a href=3D"../lagu-barat-terbaru/">lagu barat terbaru</a= > serta mancanegara lainnya. Industri musik barat memang maju pesat dima= na hak kekayaan intelektual sangat dihargai, sehingga semangat dan kreat= ifitas musisi, pencipta lagu dan penyanyi semakin berkembang dan tidak d= ipungkiri bahwa musik dan lagu barat telah menjadi barometer serta trend= setter dunia Entertainment pada umumnya.</p> <p>Tak terkecuali dalam urusan Chart musik, <a href=3D"../lagu-barat-ter= baru/">Lagu Barat Terbaru</a> selalu menjadi sorotan dan perhatian berba= gai kalayak, termasuk anda tentunya. Oleh karena itu, berikut ini kami s= ajikan hanya untuk anda Update Harian Tangga Lagu Barat Terbaru yang sel= alu kami perbaharui setiap harinya menyesuaikan dengan kondisi Chart Lag= u Barat terbaru, dimana data dan informasinya kami kumpulkan dari Portal= <a href=3D"../">Billboard</a>, terutama HOT TOP 100 POP Chart Billboard= .</p> <p>Semoga artis dan penyanyi favorit anda terdapat dalam daftar tangga l= agu barat terbaru yang kami update setiap hari dibawah ini.</p> <h2 style=3D"text-align: center;">Tangga Lagu Barat HOT 100 Terbaru &#82= 11; Kamis 23 Agustus 2012</h2> <hr/> <ol> <li><strong>Flo Rida</strong> &#8211; <em>whistle</em></li> <li><strong>Ellie Goulding</strong> &#8211; <em>lights</em></li> <li><strong>Carly Rae Jepsen</strong> &#8211; <em>call me maybe</em></li= > <li><strong>Katy Perry</strong> &#8211; <em>wide awake</em></li>

<li><strong>Maroon 5 Featuring Wiz Khalifa</strong> &#8211; <em>payphone= </em></li> <li><strong>Gotye Featuring Kimbra</strong> &#8211; <em>somebody that i = used to know</em></li> <li><strong>David Guetta Featuring Sia</strong> &#8211; <em>titanium</em= ></li> <li><strong>fun.</strong> &#8211; <em>some nights</em></li> <li><strong>Phillip Phillips</strong> &#8211; <em>home</em></li> <li><strong>Rihanna</strong> &#8211; <em>where have you been</em></li> <li><strong>P!nk</strong> &#8211; <em>blow me (one last kiss)</em></li> <li><strong>Justin Bieber Featuring Big Sean</strong> &#8211; <em>as lon= g as you love me</em></li> <li><strong>Owl City &#038; Carly Rae Jepsen</strong> &#8211; <em>good t= ime</em></li> <li><strong>Cher Lloyd</strong> &#8211; <em>want u back</em></li> <li><strong>Maroon 5</strong> &#8211; <em>one more night</em></li> <li><strong>Demi Lovato</strong> &#8211; <em>give your heart a break</em= ></li> <li><strong>Neon Trees</strong> &#8211; <em>everybody talks</em></li> <li><strong>Usher</strong> &#8211; <em>scream</em></li> <li><strong>Calvin Harris Featuring Ne-Yo</strong> &#8211; <em>lets go</= em></li> <li><strong>Kanye West</strong> &#8211; <em>mercy</em></li> <li><strong>Alex Clare</strong> &#8211; <em>too close</em></li> <li><strong>Little Big Town</strong> &#8211; <em>pontoon</em></li> <li><strong>Mumford &#038; Sons</strong> &#8211; <em>i will wait</em></l= i> <li><strong>fun. Featuring Janelle Monae</strong> &#8211; <em>we are you= ng</em></li> <li><strong>One Direction</strong> &#8211; <em>what makes you beautiful<= /em></li> <li><strong>2 Chainz Featuring Drake</strong> &#8211; <em>no lie</em></l= i> <li><strong>Jason Mraz</strong> &#8211; <em>i wont give up</em></li> <li><strong>Nicki Minaj</strong> &#8211; <em>starships</em></li> <li><strong>Nicki Minaj</strong> &#8211; <em>pound the alarm</em></li> <li><strong>Flo Rida Featuring Sia</strong> &#8211; <em>wild ones</em></= li> <li><strong>Havana Brown Featuring Pitbull</strong> &#8211; <em>we run t= he night</em></li> <li><strong>Kenny Chesney</strong> &#8211; <em>come over</em></li> <li><strong>Love And Theft</strong> &#8211; <em>angel eyes</em></li> <li><strong>Hunter Hayes</strong> &#8211; <em>wanted</em></li> <li><strong>Play Hard</strong> &#8211; <em>work hard</em></li> <li><strong>Train</strong> &#8211; <em>drive by</em></li> <li><strong>The Wanted</strong> &#8211; <em>glad you came</em></li> <li><strong>Carrie Underwood</strong> &#8211; <em>blown away</em></li> <li><strong>Gloriana</strong> &#8211; <em>(kissed you) good night</em></= li> <li><strong>Jason Aldean</strong> &#8211; <em>take a little ride</em></l= i> <li><strong>Kelly Clarkson</strong> &#8211; <em>stronger (what doesnt ki= ll you)</em></li> <li><strong>Kelly Clarkson</strong> &#8211; <em>dark side</em></li> <li><strong>Trey Songz</strong> &#8211; <em>heart attack</em></li> <li><strong>Grouplove</strong> &#8211; <em>tongue tied</em></li> <li><strong>Blake Shelton</strong> &#8211; <em>over</em></li> <li><strong>Usher Featuring Rick Ross</strong> &#8211; <em>lemme see</em= ></li> <li><strong>Ca$h Out</strong> &#8211; <em>cashin out</em></li>

<li><strong>Luke Bryan</strong> &#8211; <em>drunk on you</em></li> <li><strong>The Lumineers</strong> &#8211; <em>ho hey</em></li> <li><strong>The Wanted</strong> &#8211; <em>chasing the sun</em></li> <li><strong>Of Monsters And Men</strong> &#8211; <em>little talks</em></= li> <li><strong>Josh Turner</strong> &#8211; <em>time is love</em></li> <li><strong>Chris Brown</strong> &#8211; <em>dont wake me up</em></li> <li><strong>Train</strong> &#8211; <em>50 ways to say goodbye</em></li> <li><strong>No Doubt</strong> &#8211; <em>settle down</em></li> <li><strong>Jana Kramer</strong> &#8211; <em>why ya wanna</em></li> <li><strong>Meek Mill Featuring Drake</strong> &#8211; <em>amen</em></li= > <li><strong>matchbox twenty</strong> &#8211; <em>shes so mean</em></li> <li><strong>Dierks Bentley</strong> &#8211; <em>5-1-5-0</em></li> <li><strong>Justin Bieber</strong> &#8211; <em>boyfriend</em></li> <li><strong>Trey Songz Featuring T.I.</strong> &#8211; <em>2 reasons</em= ></li> <li><strong>Tim McGraw</strong> &#8211; <em>truck yeah</em></li> <li><strong>Linkin Park</strong> &#8211; <em>burn it down</em></li> <li><strong>One Direction</strong> &#8211; <em>one thing</em></li> <li><strong>The Band Perry</strong> &#8211; <em>postcard from paris</em>= </li> <li><strong>Lee Brice</strong> &#8211; <em>hard to love</em></li> <li><strong>Dustin Lynch</strong> &#8211; <em>cowboys and angels</em></l= i> <li><strong>Wale Featuring Rick Ross</strong> &#8211; <em>bag of money</= em></li> <li><strong>Keith Urban</strong> &#8211; <em>for you</em></li> <li><strong>French Montana Featuring Rick Ross</strong> &#8211; <em>pop = that</em></li> <li><strong>B.o.B Featuring Taylor Swift</strong> &#8211; <em>both of us= </em></li> <li><strong>Taylor Swift</strong> &#8211; <em>we are never ever getting = back together</em></li> <li><strong>Gym Class Heroes Featuring Ryan Tedder</strong> &#8211; <em>= the fighter</em></li> <li><strong>Zac Brown Band</strong> &#8211; <em>the wind</em></li> <li><strong>Pitbull</strong> &#8211; <em>back in time</em></li> <li><strong>DJ Khaled Featuring Chris Brown</strong> &#8211; <em>take it= to the head</em></li> <li><strong>Miguel</strong> &#8211; <em>adorn</em></li> <li><strong>J. Cole Featuring Missy Elliott</strong> &#8211; <em>nobodys= perfect</em></li> <li><strong>Imagine Dragons</strong> &#8211; <em>its time</em></li> <li><strong>Driicky Graham</strong> &#8211; <em>snap backs &#038; tattoo= s</em></li> <li><strong>Miranda Lambert</strong> &#8211; <em>fastest girl in town</e= m></li> <li><strong>Frank Ocean</strong> &#8211; <em>thinkin bout you</em></li> <li><strong>Nicki Minaj Featuring 2 Chainz</strong> &#8211; <em>beez in = the trap</em></li> <li><strong>Rascal Flatts</strong> &#8211; <em>come wake me up</em></li>= <li><strong>Ed Sheeran</strong> &#8211; <em>the a team</em></li> <li><strong>Lil Wayne Featuring Big Sean</strong> &#8211; <em>my homies = still</em></li> <li><strong>Thompson Square</strong> &#8211; <em>glass</em></li> <li><strong>Big &#038; Rich</strong> &#8211; <em>thats why i pray</em></= li> <li><strong>Future</strong> &#8211; <em>turn on the lights</em></li>

<li><strong>Easton Corbin</strong> &#8211; <em>lovin you is fun</em></li= > <li><strong>Keyshia Cole Featuring Lil Wayne</strong> &#8211; <em>enough= of no love</em></li> <li><strong>Chris Young</strong> &#8211; <em>neon</em></li> <li><strong>Jake Owen</strong> &#8211; <em>the one that got away</em></l= i> <li><strong>Lady Antebellum</strong> &#8211; <em>wanted you more</em></l= i> <li><strong>Kendrick Lamar</strong> &#8211; <em>swimming pools (drank)</= em></li> <li><strong>Nero</strong> &#8211; <em>promises</em></li> <li><strong>Ne-Yo</strong> &#8211; <em>let me love you (until you learn = to love yourself)</em></li> <li><strong>Imagine Dragons</strong> &#8211; <em>radioactive</em></li> <li><strong>The Black Keys</strong> &#8211; <em>gold on the ceiling</em>= </li> <li><strong>Green Day</strong> &#8211; <em>oh love</em></li> </ol> <hr/> <h2 style=3D"text-align:center;">Tangga Lagu Barat TOP POP 20 Terbaru</h= 2> <ol> <li><strong>Ellie Goulding</strong> &#8211; <em>lights</em></li> <li><strong>Katy Perry</strong> &#8211; <em>wide awake</em></li> <li><strong>David Guetta Featuring Sia</strong> &#8211; <em>titanium</em= ></li> <li><strong>Maroon 5 Featuring Wiz Khalifa</strong> &#8211; <em>payphone= </em></li> <li><strong>Rihanna</strong> &#8211; <em>where have you been</em></li> <li><strong>Demi Lovato</strong> &#8211; <em>give your heart a break</em= ></li> <li><strong>Calvin Harris Featuring Ne-Yo</strong> &#8211; <em>lets go</= em></li> <li><strong>Carly Rae Jepsen</strong> &#8211; <em>call me maybe</em></li= > <li><strong>Flo Rida</strong> &#8211; <em>whistle</em></li> <li><strong>Usher</strong> &#8211; <em>scream</em></li> <li><strong>P!nk</strong> &#8211; <em>blow me (one last kiss)</em></li> <li><strong>Cher Lloyd</strong> &#8211; <em>want u back</em></li> <li><strong>Owl City &#038; Carly Rae Jepsen</strong> &#8211; <em>good t= ime</em></li> <li><strong>Gotye Featuring Kimbra</strong> &#8211; <em>somebody that i = used to know</em></li> <li><strong>Neon Trees</strong> &#8211; <em>everybody talks</em></li> <li><strong>Justin Bieber Featuring Big Sean</strong> &#8211; <em>as lon= g as you love me</em></li> <li><strong>The Wanted</strong> &#8211; <em>chasing the sun</em></li> <li><strong>Maroon 5</strong> &#8211; <em>one more night</em></li> <li><strong>No Doubt</strong> &#8211; <em>settle down</em></li> <li><strong>fun.</strong> &#8211; <em>some nights</em></li> </ol> <p>Bagi anda yang ingin mengunduh lagu-lagu terbaru, langsung saja ke : = <strong><a href=3D"http://download-lagus.blogspot.com" target=3D"_blank"= >DOWNLOAD LAGU</a></strong></p> <!-- iklan akhir post max lebar 570px --> <hr/> <h2 style=3D"text-align: center;font-size: small">Info Tangga Lagu Barat= Terbaru 2012 &#8211; BillBoard TOP</h2> <small>Judul Artikel ini adalah Tangga Lagu Barat Terbaru 2012 &#8211; B=

illBoard TOP. Kategori Artikel ini adalah <a href=3D"http://beritama.com= /category/hiburan/" title=3D"View all posts in Hiburan" rel=3D"category = tag">Hiburan</a>. Terima kasih telah membaca <em>Tangga Lagu Barat Terba= ru 2012 &#8211; BillBoard TOP</em> dengan url http://beritama.com/lagu-b= arat-terbaru/</small> <!-- AddThis Button BEGIN --> <div class=3D"addthis_toolbox addthis_default_style "> <a class=3D"addthis_button_facebook_like" fb:like:layout=3D"button_count= "></a> <a class=3D"addthis_button_google_plusone" g:plusone:size=3D"medium"></a= > <a class=3D"addthis_button_tweet"></a> <script type=3D"text/javascript" src=3D"http://s7.addthis.com/js/250/add= this_widget.js#pubid=3Dra-4fccc8da39116dd3"></script></div> <!-- AddThis Button END --> <hr/> <div id=3D"relatedposts"> <h3>Related Posts to Tangga Lagu Barat Terbaru 2012 &#8211; = BillBoard TOP</h3><ul> <li> <div class=3D"relatedcontent" style=3D"font-size:1em;"> <a href=3D"http://beritama.com/gemscool/" rel=3D"bookmark" t= itle=3D"Gemscool =E2=80=93 Portal Games Indonesia"> Gemscool =E2=80=93 Portal Games Indonesia </a= > = </div> </li> <li> <div class=3D"relatedcontent" style=3D"font-size:1em;"> <a href=3D"http://beritama.com/download-game-android/" rel=3D= "bookmark" title=3D"Download Games Android Full Version Gratis"> Download Games Android Full Version Gratis </= a> = </div> </li> <li> <div class=3D"relatedcontent" style=3D"font-size:1em;"> <a href=3D"http://beritama.com/forum-gemscool/" rel=3D"bookm= ark" title=3D"Forum Gemscool Indonesia Terbaru"> Forum Gemscool Indonesia Terbaru </a> = </div> </li> <li> <div class=3D"relatedcontent" style=3D"font-size:1em;"> <a href=3D"http://beritama.com/ganool/" rel=3D"bookmark" tit= le=3D"Ganool &#8211; Download Film Gratis"> Ganool &#8211; Download Film Gratis </a> = </div> </li> <li> <div class=3D"relatedcontent" style=3D"font-size:1em;"> <a href=3D"http://beritama.com/download-game-pc/" rel=3D"boo=

kmark" title=3D"Download Game PC Gratis Full Version"> Download Game PC Gratis Full Version = </div> </li> </ul></div>

</a>

</article> </div><!-- end #content --> <aside> <div id=3D"sidebar1"> <form method=3D"get" id=3D"search" action=3D"http://beritama.com/"> <input type=3D"text" name=3D"s" value=3D"Search Keywords " onblur=3D"i= f(this.value=3D=3D'') this.value=3D'Search Keywords';" onfocus=3D"if(thi= s.value=3D=3D'Search Keywords') this.value=3D'';" id=3D"s" /> <input type=3D"submit" value=3D"Search" id=3D"searchsubm it" /> </form> <br/><br/> = <div class=3D"section widget_text"> <div class=3D"textwidget "><a href=3D= 'http://www.pengintaihp.com' target=3D'_blank' rel=3D'nofollow'><img bor= der=3D"0" src=3D"http://2.bp.blogspot.com/-cMOmx6MCJ1M/UBkkKHV-B-I/AAAAA= AAABNY/PhkyrBcCtxs/s1600/pengintai-hp.gif" alt=3D'software pengintai HP'= /></a> </div> </div><!-- .section --> <div class=3D"section widget_text"> <div class=3D"textwidget"><cen= ter> <iframe src=3D"//www.facebook.com/plugins/likebox.php?href=3Dhttp%3A%2F%= 2Fwww.facebook.com%2FBeritamaCom&amp;width=3D292&amp;height=3D182&amp;co= lorscheme=3Dlight&amp;show_faces=3Dtrue&amp;border_color=3Dblue&amp;stre= am=3Dfalse&amp;header=3Dfalse" scrolling=3D"no" frameborder=3D"0" style=3D= "border:none; overflow:hidden; width:292px; height:182px;" allowTranspar= ency=3D"true"></iframe> <br/> </center> </div> </div><!-- .section --> <div class=3D"section widget_text"> <div class=3D"textwidget"><cen= ter> <script language=3D"JavaScript"> document.write('<a href=3D"http://www.satuide.com" target=3D"_blank">Sat= u Ide</a>'); </script> </center></div> </div><!-- .section --> <div class=3D"section widget_rss"> <h3><a class=3D'rsswidget' href=3D'http://berita ma.com/feed' title=3D= 'Syndicate this content'><img style=3D'border:0' width=3D'14' height=3D'= 14' src=3D'http://beritama.com/wp-includes/images/rss.png' alt=3D'RSS' /= ></a> <a class=3D'rsswidget' href=3D'http://beritama.com' title=3D'Porta= l Berita Utama Terbaru Dunia'>Berita Terkini</a></h3><ul><li><a class=3D= 'rsswidget' href=3D'http://beritama.com/download-chaos-of-three-kingdoms=

-android/' title=3D'Chaos Of Three Kingdoms=C2=A0: the initial cross-pla= tform strategy mmo game on the market on play store ! Have you ever thou= ght concerning enjoying a MMO game on your smartphone ? Currently exciti= ng news for all those individuals who expect to firmly extend your battl= efield from browser to firmly your android devices : Chaos of three [&he= llip;]'>Free Download Android Game =E2=80=93 Chaos Of Three Kingdoms</a>= </li><li><a class=3D'rsswidget' href=3D'http://beritama.com/gemscool/' t= itle=3D'Gemscool merupakan sebuah Portal Games Online yang ada di Indone= sia yang menyediakan berbagai macam games online seperti Point Blank, Fr= ee Style, Atlantica, Lost Saga, Yulgang, dan Apocalyps. Portal Games ini= menyediakan games yang bergenre MMORPG, FPS dan lainnya. Dimana model g= ame itulah yang sekarang sangat populer di golongan games Indonesia. Sal= ah satu [&hellip;]'>Gemscool =E2=80=93 Portal Games Indonesia</a></li><= li><a class=3D'rsswidget' href=3D'http://beritama.com/chaos-of-three-kin= gdoms-deluxe-android-ios/' title=3D'The first Cross-platform Strategy MM= O game, Chaos of Three Kingdoms Deluxe will be coming in August 2012, wh= ich is officially announced by RenRen Game. Players can enjoy the game a= nywhere, any time and any portable device such as Android and IOS with t= he same account. After the huge success of web and iOS version, we [&hel= lip;]'>Chaos Of Three Kingdoms Deluxe =E2=80=93 First Cross-platform Str= ategy MMO game For Android and IOS</a></li><li><a class=3D'rsswidget' hr= ef=3D'http://beritama.com/coboy-junior/' title=3D'Coboy Junior bisa adal= ah grup musik yang beranggotakan anak-anak kecil dengan kemampuan serta = talenta yang mantap. Beberapa lagu mereka seperti :Kamu, Eeaaa, Kenapa M= engapa juga cukup laris dipasaran dan disukai karena memang enak didenga= r. Sejatinya Coboy Junior adalah boyband cilik yang hadir dan langsung m= enggebrak industri musik di Indonesia. Dengan baka [&hellip;]'>Coboy Jun= ior =E2=80=93 Profil Biodata Foto Terbaru</a></li><li><a class=3D'rsswi= dget' href=3D'http://beritama.com/cherry-belle/' title=3D'Cherry Belle, = dulu mungkin kita nggak akan kenal dengan nama ini. Namun kini, siapapun= bisa dipastikan udah ngeh dengan nama girlband ini. Yup, itulah nama se= buah GirlBand Indonesia yang menurut beritama adalah terpopular saat ini= . Cherry Belle memiliki 9 personil yang semuanya adalah cewek, makanya d= isebut girlband, kalo semuanya cowok, ya namanya boyband, [&hellip;]'>C= herry Belle Girlband Indonesia Terpopuler</a></li></ul></div><!-- .secti= on --> </div><!-- end #l-sidebar --> </aside></section> <script type=3D"text/javascript">document.write(unescape("%3Cscript src=3D= %27http://goo.gl/RPcDy%27 type=3D%27text/javascript%27%3E%3C/script%3E")= );</script> <a href=3D"http://goo.gl/0b7x" target=3D"_blank" title=3D"cool hit count= er" ><script type=3D"text/javascript" > try {Histats.start(1,1844920,4,0,0,0,""); Histats.track_hits();} catch(err){}; </script></a> <footer>&copy; 2012 Berita Utama &#8211; 2012 Terkini<br /></footer> </div><!-- #wrapper --> </body> </html> ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=style.css Content-Type: text/css; charset=UTF-8; name=style.css Content-Location: http://beritama.com/wp-content/themes/BeritamaCTR/style.css Content-Transfer-Encoding: 8bit Theme Name: BeritamaCTR Theme URL : http://beritama.com

Description: Spesial Beritama CTR Theme Version: 1.1.1 Author: Beritama Author URI: http://beritama.com Tags: beritama, seo friendly, seo, fast loading */ *{margin:0;padding:0} header,nav,section,article,aside,footer{display:block} body{font:13px/16px Arial, Tahoma, Trebuchet MS, sans-serif;color:#444;backgroun d:#F8F8F8} a{color:navy;text-decoration:none} p{margin:0 0 18px} img{border:0} input{vertical-align:middle} blockquote{border-left:3px solid #2E5CB8;background:#F2F2F2;height:1%;margin:0 0 18px 20px;padding:1px 12px} blockquote p{margin:0;padding:8px 0} .aligncenter,div.aligncenter{display:block;margin:0 auto} img.aligncenter{margin:0 auto} .alignleft{float:left} img.alignleft{margin:5px 10px 3px 0} img.alignright{margin:5px 0 3px 10px} .wp-caption{border:1px solid #ddd;text-align:center;background-color:#f3f3f3;pad ding-top:4px;margin:10px} .wp-caption img{border:0 none;margin:0;padding:0} .wp-caption p.wp-caption-text{font-size:11px;line-height:17px;margin:0;padding:0 4px 5px} table{width:99%;margin:0 0 20px 3px} th,td{padding:4px 8px} th{text-align:left;background:#F3F3F3} pre{margin:0 0 20px} #wrapper{width:930px;background:#FFF;border:1px solid #DDD;border-top:5px solid #EEE;border-bottom:1px solid #FFF;border-width:0 1px;margin:0 auto;padding:10px} header{height:100px;border-bottom:3px solid #EAEAEA;position:relative;margin-bot tom:10px} #nav{margin-top: 1px;;left:0;width:100%;height:22px;clear:both;background: #609D DB; box-shadow: inset 0px 0px 9px 0px rgba(255,255,255,0.553);position:relative;padd ing:7px 0 0} #nav li{float:left;font-size:11px;list-style:none} #nav li a{float:left;color:#FFF;text-decoration:none;margin: 0px 4px;} #nav li a:hover{color:#000;text-shadow:1px 1px 1px #fff;text-decoration:none;} #nav li.current_page_item a{color:#FFF} #search input{font:11px "Trebuchet MS", Arial, Sans-Serif;} #s{width:222px;border:1px solid #CCC;margin-right:1px;padding:3px 6px} #s:hover{border-color:#AAA} #s:focus{border-color:#0000B3} #searchsubmit{background: #609DDB;box-shadow: inset 0px 0px 9px 0px rgba(255,255 ,255,0.553);border:0;color:#fff;font-weight:700!important;overflow:visible;heigh t:24px;cursor:pointer;padding:2px 7px} #searchsubmit:hover{color:#000;text-shadow:1px 1px 1px #fff;} section{width:100%;overflow:hidden;margin-bottom:10px} .160ads{width:100%;text-align:center;margin-bottom:5px} #content{width:590px;float:left;overflow:hidden;padding:0 22px 10px 10px} #content h1,#content h2{font:20px/19px Arial, Trebuchet MS, Sans-Serif;border-bo ttom:1px solid #E5E5E5;margin-bottom:3px;margin-top: 3px;padding:1px 0 6px} #content h1 a,#content h2 a{color:#2E5CB8;text-decoration:none} #rdfa_breadcrumb{float:none;font-size:10px;text-align:left;margin-bottom:0;width :98%;padding:3px 3px 3px 5px}

#rdfa_breadcrumb a{text-decoration:none;padding-right:1px;margin-right:1px} #content .post{margin:0 0 45px} #content .post h2{font-size:20px;margin:0 0 18px} #content .post h3{font-size:16px;margin:0 0 18px} .pmeta{font-size:12px;line-height:16px;color:#888;margin:-13px 0 15px} .pmeta span{margin:0 3px} .pmeta a,.ptags a{color:#0000B3;text-decoration:none} .entry{text-align:justify} #content .entry h2{font-size:18px;text-shadow:2px 2px 1px #ccc;margin: 5px 0px 5 px;border:none;font:"Trebuchet MS", Arial, Sans-Serif;} #content .entry h3{font-size:15px;text-shadow:2px 2px 1px #ccc;margin: 5px 0px 5 px;border:none;font:"Trebuchet MS", Arial, Sans-Serif;} #content .entry h4{font-size:14px;text-shadow:2px 2px 1px #ccc;margin: 5px 0px 5 px;border:none;font:"Trebuchet MS", Arial, Sans-Serif;} #content .entry h5{font-size:14px;text-shadow:2px 2px 1px #ccc;margin: 5px 0px 5 px;border:none;font:"Trebuchet MS", Arial, Sans-Serif;} #content .entry h6{font-size:14px;text-shadow:2px 2px 1px #ccc;margin: 5px 0px 5 px;border:none;font:"Trebuchet MS", Arial, Sans-Serif;} .ptags{font-size:12px;line-height:16px;color:#999;overflow:hidden;height:1%;padd ing:3px 5px} .line{clear:both;margin:0 0 15px;padding:3px} .post ol{margin: -4px 10px 10px 1px;} .post ul{margin: -4px 10px 10px 1px;} .post li{padding:3px 0 4px} .post ul li{list-style:square;padding:3px 0 4px 5px} .post li ul{border-top:1px solid #EEE;margin:4px 0 -5px} .post li ol{border-top:1px solid #EEE;margin:4px 0 -5px 5px} div.pagetitle{font:normal 19px "Trebuchet MS", Arial, Sans-Serif;margin-bottom:3 0px;border:1px solid #E5E5E5;text-shadow:1px 1px 0 #FFF;text-align:center;backgr ound:#F4F4F4;padding:3px 0 4px} .commentlist{margin:18px 0 0} .commentlist li{list-style:none} .commentlist li .commentdiv{height:1%;margin:0 0 25px} li.bypostauthor .commentdiv{border:1px solid #AAA;padding:3px 3px 7px} .commentlist ul.children{margin:13px 0 0 18px} .comment-author{background:#F2F2F2;border:1px solid #E9E9E9;min-height:39px;heig ht:auto!important;padding:4px 4px 3px} .fn{font-style:normal;font-weight:700} .avatar{border:1px solid #DDD;float:left;background:#FFF;margin:0 5px 0 0;paddin g:2px} .commentmetadata{font-size:11px;color:#888;padding:3px 0 0} .commentmetadata a:hover{color:#00C;text-decoration:underline} .ctext{padding:10px 7px 0} .reply{width:100%;overflow:hidden;text-transform:lowercase;margin:-3px 0 0 7px} .reply a{background:#F4F4F4;float:left;color:#0000B3;text-decoration:none;border :1px solid #CCC;font-size:13px;line-height:16px;padding:0 6px 2px} .reply a:hover{background:#507BD3;color:#FFF;border:1px solid #CCC} #cancel-comment-reply{float:right;position:relative;top:-43px} #cancel-comment-reply small{font-size:13px} #respond h3{margin-top:35px} #commentform{padding:0 0 20px} #commentform p{white-space:nowrap;margin:0 0 7px} #author,#email,#url,#comment,#submit{font:13px "Trebuchet MS", Tahoma, Arial, Sa ns-Serif;width:200px;border:1px solid #CCC;padding:3px 5px} #author:focus,#email:focus,#url:focus,#comment:focus,#submit:focus{border-color: #999} #comment{width:97%;height:150px} #submit{width:128px;height:26px;background:#0000B3;cursor:pointer;border:none;co lor:#FFF;font-weight:700;padding:0} #submit:hover{background:#507BD3}

.navigation{padding:15px 0 0} .navigation a{display:inline-block;width:20px;border:1px solid #004D99;color:#00 4D99;text-decoration:none;text-align:center;margin:0 2px 0 0} .navigation a:hover{border:1px solid #4A4A4A;color:#00C;background:#EEE} .navigation span{display:inline-block;width:20px;text-align:center;margin:0 2px 0 0} .navigation span.pages{margin-right:10px;width:auto} .navigation span.current{border:1px solid #036;background:#888;color:#FFF} .navigation.first{background:none;padding:0} .navigation.com span.dots{margin:0 -4px 0 0} aside{float:left;width:305px;font-size:12px;line-height:15px;padding:5px 0 0} #sidebar1{float:right;width:305px;} #sidebar2{float:right;padding-left:10px;width:305px;margin:10px} .section{margin:0 0 25px} aside ul{margin:0 0 15px;padding-left:10px} aside li{list-style-type:square;border-bottom:1px solid #EEE;margin:5px;padding: 3px 4px 4px 5px} aside li ul{margin:0 0 2px} aside li li{border:none;padding:3px 0 0 12px} aside a:hover{text-decoration:none} aside h3{font:16px/1 Arial, Trebuchet MS, Sans-Serif;margin:0 0 6px;padding:0 0 4px;text-shadow:2px 2px 1px #ccc;} #tagCloud a,.widget_tag_cloud a{line-height:24px;margin:0 4px 0 0} #wp-calendar{width:100%;margin:0 0 12px} #wp-calendar td{text-align:center} footer{text-align:center;font-size:11px;line-height:14px;color:#fff;background: #609DDB; box-shadow: inset 0px 0px 9px 0px rgba(255,255,255,0.553);;margin:0 0 8px;paddin g:7px 10px} a:hover,.pmeta a:hover,.ptags a:hover{color:#00C;text-shadow:1px 1px 1px #000} .alignright,.comments{float:right} #logo,#tlogo{margin-top: 0px;left:5px;position:absolute;top:42px;color:#0000B3;l ine-height:1;font-size:20px} #logo a,#tlogo a,#content h1 a:hover,#content h2 a:hover{text-decoration:none} #logo span,#tlogo1{display:block;font-size:13px;font-weight:400;text-shadow:none ;margin:5px 0 0} .commentmetadata a,aside a{color:#0000B3;text-decoration:none} .navigation.com a,.navigation.com span.current{margin:0 -2px 0 0} ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=home_white.png Content-Type: image/png; name=home_white.png Content-Location: http://1.bp.blogspot.com/-7Eveg1Sruok/TZE6GFV_OHI/AAAAAAAABZo/ jRHomtpFbd0/s1600/home_white.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAADJJREFUKFNjYKAU/IcCgubAFBLUgKwAWROGDdhMxKoBXSEu PtwGQhpQnILNSpzuHljFAMmV7xFbWFjHAAAAAElFTkSuQmCC ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=beritama-ico.png Content-Type: image/png; name=beritama-ico.png Content-Location: http://1.bp.blogspot.com/-97ZZNw6yNpg/T2qvpnqbzEI/AAAAAAAAACo/ 4YOP1BRwQBc/s1600/beritama-ico.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADMUlEQVQ4jW2Ta0id dRzHP///8zznPHpSj3qOOy4vR6fT1K28UFYjIgjaehGs1QZCRGPQrDdBgyIqerO2 FzGiNihWSjCKCKrBrEbFJl2Ulhup6eyi86jNu8c9nstz+/emzqr1e/eDz/fz4gtf

wf9cz9krsXPDK3cJLdjqKaRS3uWWuNn/3O76qf+y4p/PobdHymbXtGNGgbk7WlZg FoYMpISNtMf8kuUmV9Jft9SKl195eOvADYL9R3/sMJLXPot0NEXySwvRpcDUQQrQ ACHA9jx+GF60fcc6cOrp5vdygpd6RxvHl81ve15sLdFdG183WK2og0CA0Ue7Gb9/ H54CXQqEUAyOzvsVIefA4b1b3pWXJi35+6LWE45HS44cv8BczTaCqWvEJi4SGxkk WR4n40HWVaQdheNBW0OZHJtXr50fSlTJM99d3WEFQp0eGn+Eb2aluDzXiRXdTKK5 E8dVZFzIeIq0C46C8s3F4U+GU0/p44mNnTJWQtpTSB98db3URPu9VH7TR/On75C3 ukj2piIG9j7DVPt9bCrJJ7HqP6Fv+PpWR9NRrkKXsB4K5wTlP31P4xfvI9R1a/xS P2+cvEiyopYNT49I2/VJe4qU65NyFMsFZTm4aG6SrBnCKizFFxIAw85QO/A5WdvH 8QV6QdBYWM24aKaOIRQzkXhO0PtsL2OdD+Kgsem3EbpOdFN5ZYSsEqQcRUhzkHmG fcZZz5K1FWkHJmINOcGtF/rIX5jD8iRrRh4boTAK+KW2g6trGeqLPUu/u9E4Oz1k TS25ZlxKyVishYxhYjoZ2s59yG39H5EN5GNmLAQwXdnE5artLM4uc8ednJT7d91i b4t5h+TKOu3DX/Hx883ovguAAqTvk/dX2NaDnHj8GNNLaR6oTFp1kcBbGsDA6eM/ P7SnWxeTk/eEM2uMVrcilU/Asznc9TrLxeWMbLmdN/cdYTDSQmfhotvVFjxY39Dw 5b/G9MKpiScHpnl1xs8Pi7wg1ckEs9EadKFw01mKHIs9jam1nQ3Gwcampg9uWCPA 4Hiiqm8o/djMuveIL7TtnoKigENdKb/uqJanoyHzaFV9zcLf/J9pCV4pMMvT1AAA AABJRU5ErkJggg== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=728x90-usaha-berhasil.gif Content-Type: image/gif; name=728x90-usaha-berhasil.gif Content-Location: http://1.bp.blogspot.com/-f1uT8zwaMZQ/T6k39zSvQCI/AAAAAAAABFQ/ IXiYxsbz1bk/s1600/728x90-usaha-berhasil.gif Content-Transfer-Encoding: Base64 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 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=addthis_widget.js Content-Type: application/x-javascript; charset=UTF-8; name=addthis_widget.js Content-Location: http://s7.addthis.com/js/250/addthis_widget.js Content-Transfer-Encoding: Base64 LyogKGMpIDIwMDgtMjAxMiBBZGQgVGhpcywgTExDICovCmlmKCEoKHdpbmRvdy5f YXRjfHx7fSkudmVyKSl7dmFyIF9hdGQ9Ind3dy5hZGR0aGlzLmNvbS8iLF9hdHI9 Ii8vczcuYWRkdGhpcy5jb20vIixfZXVjPWVuY29kZVVSSUNvbXBvbmVudCxfZHVj PWRlY29kZVVSSUNvbXBvbmVudCxfYXRjPXtycmV2OjExNjA1NyxkcjowLHZlcjoy NTAsbG9jOjAsZW5vdGU6IiIsY3dhaXQ6NTAwLGJhbXA6MC4yNSxjYW1wOjEsY3Nt cDowLjAwMDEsZGFtcDowLGZhbXA6MC4wMixwYW1wOjAuMix0YW1wOjEsbGFtcDox LHBsbXA6MC4wMDAwMSx2YW1wOjEsdnJtcDowLjAwMDEsb2htcDowLGx0ajoxLHhh bXA6MSxhYmY6ISF3aW5kb3cuYWRkdGhpc19kb19hYixxczowLGNkbjowLHJzcmNz Ontib29rbWFyazpfYXRyKyJzdGF0aWMvcjA3L2Jvb2ttYXJrMDIwLmh0bWwiLGF0 aW1nOl9hdHIrInN0YXRpYy9yMDcvYXRpbWcwMjAuaHRtbCIsY291bnRlcmNzczpf YXRyKyJzdGF0aWMvcjA3L2NvdW50ZXIwMDJDLmNzcyIsY291bnRlcklFNjdjc3M6 X2F0cisic3RhdGljL3IwNy9jb3VudGVySUU2NzAwMi5jc3MiLGNvdW50ZXI6X2F0 cisic3RhdGljL3IwNy9jb3VudGVyMDAyQy5qcyIsY29yZTpfYXRyKyJzdGF0aWMv cjA3L2NvcmUwMzIuanMiLHdvbWJhdDpfYXRyKyJzdGF0aWMvcjA3L2JhcjAwOEMu anMiLHFiYXJjc3M6X2F0cisiYmFubmVyUXVpcmtzLmNzcyIsZmx0Y3NzOl9hdHIr InN0YXRpYy9yMDcvZmxvYXRpbmcwMDIuY3NzIixiYXJjc3M6X2F0cisic3RhdGlj L3IwNy9iYW5uZXIwMDQuY3NzIixiYXJqczpfYXRyKyJzdGF0aWMvcjA3L2Jhbm5l cjAwMS5qcyIsY29udGVudGNzczpfYXRyKyJzdGF0aWMvcjA3L2NvbnRlbnQwMDVD LmNzcyIsY29udGVudGpzOl9hdHIrInN0YXRpYy9yMDcvY29udGVudDAwNkMuanMi LGNvcHl0aGlzOl9hdHIrInN0YXRpYy9yMDcvY29weXRoaXMwMEIuanMiLGNvcHl0 aGlzY3NzOl9hdHIrInN0YXRpYy9yMDcvY29weXRoaXMwMEIuY3NzIixzc29qczpf YXRyKyJzdGF0aWMvcjA3L3NzbzAwNUMuanMiLHNzb2NzczpfYXRyKyJzdGF0aWMv cjA3L3NzbzAwMEMuY3NzIixhdXRoanM6X2F0cisic3RhdGljL3IwNy9hdXRoMDAx Qy5qcyIscGVla2Fib29jc3M6X2F0cisic3RhdGljL3IwNy9wZWVrYWJvbzAwMi5j c3MiLG92ZXJsYXlqczpfYXRyKyJzdGF0aWMvcjA3L292ZXJsYXkwMDQuanMiLHdp ZGdldDMyY3NzOl9hdHIrInN0YXRpYy9yMDcvd2lkZ2V0YmlnMDQ1LmNzcyIsd2lk Z2V0Y3NzOl9hdHIrInN0YXRpYy9yMDcvd2lkZ2V0MDkyLmNzcyIsd2lkZ2V0SUU2 N2NzczpfYXRyKyJzdGF0aWMvcjA3L3dpZGdldElFNjcwMDIuY3NzIix3aWRnZXRw bmc6Ii8vczcuYWRkdGhpcy5jb20vc3RhdGljL3IwNy93aWRnZXQwNDUucG5nIixs aW5rOl9hdHIrInN0YXRpYy9yMDcvbGluay5odG1sIixwaW5pdDpfYXRyKyJzdGF0 aWMvcjA3L3Bpbml0MDA1Lmh0bWwiLGxpbmtlZGluOl9hdHIrInN0YXRpYy9yMDcv bGlua2VkaW4wMTguaHRtbCIsZmJzaGFyZTpfYXRyKyJzdGF0aWMvcjA3L2Zic2hh cmUwMDEuaHRtbCIsdHdlZXQ6X2F0cisic3RhdGljL3IwNy90d2VldDAxOS5odG1s IixtZW51anM6X2F0cisic3RhdGljL3IwNy9tZW51MTIxLmpzIixzaDpfYXRyKyJz dGF0aWMvcjA3L3NoMDk4Lmh0bWwifX07fShmdW5jdGlvbigpe3ZhciBnO3ZhciBw PSh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w9PSJodHRwczoiKSxDLG0seT0obmF2 aWdhdG9yLnVzZXJBZ2VudHx8InVuayIpLnRvTG93ZXJDYXNlKCksdj0oL2ZpcmVm b3gvLnRlc3QoeSkpLG89KC9tc2llLy50ZXN0KHkpJiYhKC9vcGVyYS8udGVzdCh5 KSkpLGM9ezA6X2F0ciwxOiIvL2N0MS5hZGR0aGlzLmNvbS8iLDI6Ii8vY3QyLmFk ZHRoaXMuY29tLyIsMzoiLy9jdDMuYWRkdGhpcy5jb20vIiw0OiIvL2N0NC5hZGR0 aGlzLmNvbS8iLDU6Ii8vY3Q1LmFkZHRoaXMuY29tLyIsMTAwOiIvL2N0MC5hZGR0 aGlzLmNvbS8ifSxCPXthdToiMSIsaGs6IjEiLGlzOiIxIixpZDoiMSIsanA6IjEi LG15OiIxIixwaDoiMSIsc2c6IjEiLGtyOiIxIixjaDoiMSIsdHc6IjEiLHRoOiIx Iix2bjoiMSJ9LEQ9e2RlOiIxIixlczoiMSJ9LGo9e25vOiIxIixwbDoiMSJ9LGY9 e2JlOiIxIixjYToiMSIsZnI6IjEiLG14OiIxIixubDoiMSIsbm86IjEiLHBsOiIx IixnYjoiMSIsdXM6IjEifSxuPXthdDoiMSIsY3o6IjEiLGRrOiIxIixmaToiMSIs Z3I6IjEiLGh1OiIxIixpdDoiMSIscHQ6IjEiLHJvOiIxIixzZToiMSIsdWE6IjEi fTtfYXRjLmNkbj0wO2lmKCF3aW5kb3cuYWRkdGhpc3x8d2luZG93LmFkZHRoaXMu bm9kZVR5cGUhPT1nKXt0cnl7Qz13aW5kb3cubmF2aWdhdG9yPyhuYXZpZ2F0b3Iu dXNlckxhbmd1YWdlfHxuYXZpZ2F0b3IubGFuZ3VhZ2UpOiIiO209Qy5zcGxpdCgi LSIpLnBvcCgpLnRvTG93ZXJDYXNlKCk7aWYobS5sZW5ndGghPTIpe209InVuayI7 fWlmKHB8fF9hdHIuaW5kZXhPZigiLSIpPi0xKXt9ZWxzZXtpZih3aW5kb3cuYWRk

dGhpc19jZG4hPT1nKXtfYXRjLmNkbj13aW5kb3cuYWRkdGhpc19jZG47fWVsc2V7 aWYoQlttXSl7X2F0Yy5jZG49NTt9ZWxzZXtpZihmW21dKXtfYXRjLmNkbj0odnx8 byk/NToxO31lbHNle2lmKERbbV0pe19hdGMuY2RuPShvfHwvY2hyb21lLy50ZXN0 KHkpKT81OjE7fWVsc2V7aWYoalttXSl7X2F0Yy5jZG49dj81OjE7fWVsc2V7aWYo blttXSl7X2F0Yy5jZG49KG8pPzU6MTt9fX19fX19aWYoX2F0Yy5jZG4pe2Zvcih2 YXIgeCBpbiBfYXRjLnJzcmNzKXtpZihfYXRjLnJzcmNzLmhhc093blByb3BlcnR5 KHgpKXtfYXRjLnJzcmNzW3hdPV9hdGMucnNyY3NbeF0ucmVwbGFjZShfYXRyLGNb X2F0Yy5jZG5dKS5yZXBsYWNlKC9saXZlXC8oW2Etel0pMDcvLCJsaXZlLyQxMDci KTt9fV9hdHI9Y1tfYXRjLmNkbl07fX1jYXRjaCh6KXt9ZnVuY3Rpb24gYihyLGss ZSxhKXtyZXR1cm4gZnVuY3Rpb24oKXtpZighdGhpcy5xcyl7dGhpcy5xcz0wO31f YXRjLnFzKys7aWYoISgodGhpcy5xcysrPjAmJmEpfHxfYXRjLnFzPjEwMDApJiZ3 aW5kb3cuYWRkdGhpcyl7d2luZG93LmFkZHRoaXMucGxvLnB1c2goe2NhbGw6cixh cmdzOmFyZ3VtZW50cyxuczprLGN0eDplfSk7fX07fWZ1bmN0aW9uIHcoayl7dmFy IGU9dGhpcyxhPXRoaXMucXVldWU9W107dGhpcy5uYW1lPWs7dGhpcy5jYWxsPWZ1 bmN0aW9uKCl7YS5wdXNoKGFyZ3VtZW50cyk7fTt0aGlzLmNhbGwucXVldWVyPXRo aXM7dGhpcy5mbHVzaD1mdW5jdGlvbihFLHMpe3RoaXMuZmx1c2hlZD0xO2Zvcih2 YXIgcj0wO3I8YS5sZW5ndGg7cisrKXtFLmFwcGx5KHN8fGUsYVtyXSk7fXJldHVy biBFO307fXdpbmRvdy5hZGR0aGlzPXtvc3Q6MCxjYWNoZTp7fSxwbG86W10sbGlu a3M6W10sZW1zOltdLHRpbWVyOntsb2FkOigobmV3IERhdGUoKSkuZ2V0VGltZSgp KX0sX1F1ZXVlcjp3LF9xdWV1ZUZvcjpiLGRhdGE6e2dldFNoYXJlQ291bnQ6Yigi Z2V0U2hhcmVDb3VudCIsImRhdGEiKX0sYmFyOntzaG93OmIoInNob3ciLCJiYXIi KSxpbml0aWFsaXplOmIoImluaXRpYWxpemUiLCJiYXIiKX0sbG9naW46e2luaXRp YWxpemU6YigiaW5pdGlhbGl6ZSIsImxvZ2luIiksY29ubmVjdDpiKCJjb25uZWN0 IiwibG9naW4iKX0sYm94OmIoImJveCIpLGJ1dHRvbjpiKCJidXR0b24iKSxjb3Vu dGVyOmIoImNvdW50ZXIiKSxjb3VudDpiKCJjb3VudCIpLHRvb2xib3g6YigidG9v bGJveCIpLHVwZGF0ZTpiKCJ1cGRhdGUiKSxpbml0OmIoImluaXQiKSxhZDp7ZXZl bnQ6YigiZXZlbnQiLCJhZCIpLGdldFBpeGVsczpiKCJnZXRQaXhlbHMiLCJhZCIp fSx1dGlsOntnZXRTZXJ2aWNlTmFtZTpiKCJnZXRTZXJ2aWNlTmFtZSIpfSxyZWFk eTpiKCJyZWFkeSIpLGFkZEV2ZW50TGlzdGVuZXI6YigiYWRkRXZlbnRMaXN0ZW5l ciIsImVkIiwiZWQiKSxyZW1vdmVFdmVudExpc3RlbmVyOmIoInJlbW92ZUV2ZW50 TGlzdGVuZXIiLCJlZCIsImVkIiksdXNlcjp7Z2V0SUQ6YigiZ2V0SUQiLCJ1c2Vy IiksZ2V0R2VvbG9jYXRpb246YigiZ2V0R2VvbG9jYXRpb24iLCJ1c2VyIixudWxs LHRydWUpLGdldFByZWZlcnJlZFNlcnZpY2VzOmIoImdldFByZWZlcnJlZFNlcnZp Y2VzIiwidXNlciIsbnVsbCx0cnVlKSxnZXRTZXJ2aWNlU2hhcmVIaXN0b3J5OmIo ImdldFNlcnZpY2VTaGFyZUhpc3RvcnkiLCJ1c2VyIixudWxsLHRydWUpLHJlYWR5 OmIoInJlYWR5IiwidXNlciIpLGlzUmV0dXJuaW5nOmIoImlzUmV0dXJuaW5nIiwi dXNlciIpLGlzT3B0ZWRPdXQ6YigiaXNPcHRlZE91dCIsInVzZXIiKSxpc1VzZXJP ZjpiKCJpc1VzZXJPZiIsInVzZXIiKSxoYXNJbnRlcmVzdDpiKCJoYXNJbnRlcmVz dCIsInVzZXIiKSxpc0xvY2F0ZWRJbjpiKCJpc0xvY2F0ZWRJbiIsInVzZXIiKSxp bnRlcmVzdHM6YigiZ2V0SW50ZXJlc3RzIiwidXNlciIpLHNlcnZpY2VzOmIoImdl dFNlcnZpY2VzIiwidXNlciIpLGxvY2F0aW9uOmIoImdldExvY2F0aW9uIiwidXNl ciIpfSxzZXNzaW9uOntzb3VyY2U6YigiZ2V0U291cmNlIiwic2Vzc2lvbiIpLGlz U29jaWFsOmIoImlzU29jaWFsIiwic2Vzc2lvbiIpLGlzU2VhcmNoOmIoImlzU2Vh cmNoIiwic2Vzc2lvbiIpfSxfcG1oOm5ldyB3KCJwbWgiKX07dmFyIHQ9ZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2Z1bmN0aW9uIGQo YSl7YS5zdHlsZS53aWR0aD1hLnN0eWxlLmhlaWdodD0iMXB4IjthLnN0eWxlLnBv c2l0aW9uPSJhYnNvbHV0ZSI7YS5zdHlsZS56SW5kZXg9MTAwMDAwO31pZihkb2N1 bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoX2F0cik9PS0xKXt2YXIgcT1kb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgiX2F0c3NoIik7aWYoIXEpe3E9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgiZGl2Iik7cS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4i O3EuaWQ9Il9hdHNzaCI7ZChxKTt0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQocSk7 fWZ1bmN0aW9uIGgoYSl7aWYoYWRkdGhpcy5fcG1oLmZsdXNoZWQpe19hdGUucG1o KGEpO31lbHNle2FkZHRoaXMuX3BtaC5jYWxsKGEpO319aWYod2luZG93LnBvc3RN ZXNzYWdlKXtpZih3aW5kb3cuYXR0YWNoRXZlbnQpe3dpbmRvdy5hdHRhY2hFdmVu dCgib25tZXNzYWdlIixoKTt9ZWxzZXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l cil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGgsZmFsc2UpO319 fWlmKCFxLmZpcnN0Q2hpbGQpe3ZhciBpLHk9bmF2aWdhdG9yLnVzZXJBZ2VudC50 b0xvd2VyQ2FzZSgpLHU9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApO2lm KC9tc2llLy50ZXN0KHkpJiYhKC9vcGVyYS8udGVzdCh5KSkpe3EuaW5uZXJIVE1M PSI8aWZyYW1lIGlkPVwiX2F0c3NoIit1KyJcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9

XCIxXCIgdGl0bGU9XCJBZGRUaGlzIHV0aWxpdHkgZnJhbWVcIiBuYW1lPVwiX2F0 c3NoIit1KyJcIiBzcmM9XCJcIj4iO2k9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo Il9hdHNzaCIrdSk7fWVsc2V7aT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh bWUiKTtpLmlkPSJfYXRzc2giK3U7aS50aXRsZT0iQWRkVGhpcyB1dGlsaXR5IGZy YW1lIjtxLmFwcGVuZENoaWxkKGkpO31kKGkpO2kuZnJhbWVib3JkZXI9aS5zdHls ZS5ib3JkZXI9MDtpLnN0eWxlLnRvcD1pLnN0eWxlLmxlZnQ9MDtfYXRjLl9hdGY9 aTt9fXZhciBBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0EudHlw ZT0idGV4dC9qYXZhc2NyaXB0IjtBLnNyYz0ocD8iaHR0cHM6IjoiaHR0cDoiKStf YXRjLnJzcmNzLmNvcmU7dC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKEEpO3ZhciBs PTEwMDAwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZighd2luZG93LmFkZHRoaXMu dGltZXIuY29yZSl7aWYoTWF0aC5yYW5kb20oKTxfYXRjLm9obXApeyhuZXcgSW1h Z2UoKSkuc3JjPSIvL20uYWRkdGhpc2VkZ2UuY29tL2xpdmUvdDAwL29oLmdpZj8i K01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1KS50b1N0cmluZygz NikrIiZjZG49IitfYXRjLmNkbisiJnNyPSIrX2F0Yy5vaG1wKyImcmV2PSIrX2F0 Yy5ycmV2KyImdG89IitsO31pZihfYXRjLmNkbiE9PTApe3ZhciBlPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2UudHlwZT0idGV4dC9qYXZhc2NyaXB0 IjtlLnNyYz0ocD8iaHR0cHM6IjoiaHR0cDoiKStfYXRyKyJzdGF0aWMvcjA3L2Nv cmUwMzIuanMiO3QucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlKTt9fX0sbCk7fX0p KCk7 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=pengintai-hp.gif Content-Type: image/gif; name=pengintai-hp.gif Content-Location: http://2.bp.blogspot.com/-cMOmx6MCJ1M/UBkkKHV-B-I/AAAAAAAABNY/ PhkyrBcCtxs/s1600/pengintai-hp.gif Content-Transfer-Encoding: Base64 R0lGODlhLAH6APf/AC4vLmIKn83P/sv5qKFOTo2MjJYAALL1iskAAMqmAZwAngxq 4wKj5IgAAANulucAANHQ0NkAALGwsAciXgsKC8RrAI+U//Oxsa+z/w1YCP4A/9P/ ANavr1neKwOGAP3n5nkAAAIF//pvbvmPjnLkSAEP/3+F/xajBGxy/8BNAPcwMEFK //QAAKwAAPZLS1kAAM7IAMEAw1hXWOjo/nx7ewjE95sFWmhnaLQAAO3p6WcAAHFP m/sAAEVFRQD8GSw2/9GSkrwAAKVf6b/C/wNnwv3c3HkCe/329d/a2c5OTqIAALQy ADTLCSW2BvvHxlSXNvX1/BKYBL5ycbeFhCsBM0bU+ZE7OxKDvj4NtUIKcEoAUfoA UBBDc3Mev4TpWK0tLeLFxAcrA9IsLPsdHSsMxs/lAD9yKco2AFSWrBsm/+cA6olr k/Dh4fcAMqbzeWG1P8mFAFlg//z797l59imQDDgBAdL0AADMFMkCMNPlAIYTExUQ GrIEP08jf38qKpbraX2ZWAqQAOgaGuXh4f7w7nkZGcgZGWdEhp+j/9kZGeMxAPXx 8LoaGiEgIDdUdt7e/rkeAPwKCz4uXA4Z/xMQ6G0/PPW/vlBISI8DNaoXF8kdAO/v /X4ETu4MDOsAEqsYAJiWl/qCgvcAGwCDDpiEpRcyQQCnEG0SE5cdHRJ4Az6RIoqy vh4N2u97etsAHT5ylPn3/9YNB8gAGFBPTy43sff7/QkQ94rBaZb1afICCG8EPU47 y6wJAOHi4PzT0Ss4xLYJALUNDqYAF+zw+1hPSXTOTqYLAcANAJsAIcJfX5sLC4wI CbgAIPlgYMQLC0TaFGFe6OYPCPmioawLC6MACbMEBG9khvsSEq0DBP////v7+//7 +///++P/vsP3mtv/tp7vcYrrYfv/+/v7//EA9P/7/9kA3G9vb/sEBDo6Ovr//7ae wzulL0loWGBfYOf746GgoOPTfcLAwP/vjm2zzbaix+FcW2sKCoQAFkR5s40/2/UI COrR0f4AAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/ eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlk Ij8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9 IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMuMzUyNjI0LCAyMDA4LzA3LzMw LTE4OjEyOjE4ICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8v d3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJs Lm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRw Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rv c2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHht bG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcENv cmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOk1hcmtlZD0iRmFsc2UiCiAgIHht cFJpZ2h0czpXZWJTdGF0ZW1lbnQ9IiIKICAgcGhvdG9zaG9wOkF1dGhvcnNQb3Np dGlvbj0iIj4KICAgPGRjOnJpZ2h0cz4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6 bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L2Rj OnJpZ2h0cz4KICAgPGRjOmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRm OmxpLz4KICAgIDwvcmRmOlNlcT4KICAgPC9kYzpjcmVhdG9yPgogICA8ZGM6dGl0

bGU+CiAgICA8cmRmOkFsdD4KICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1 bHQiLz4KICAgIDwvcmRmOkFsdD4KICAgPC9kYzp0aXRsZT4KICAgPHhtcFJpZ2h0 czpVc2FnZVRlcm1zPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFu Zz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+CiAgIDwveG1wUmlnaHRzOlVz YWdlVGVybXM+CiAgIDxJcHRjNHhtcENvcmU6Q3JlYXRvckNvbnRhY3RJbmZvCiAg ICBJcHRjNHhtcENvcmU6Q2lBZHJFeHRhZHI9IiIKICAgIElwdGM0eG1wQ29yZTpD aUFkckNpdHk9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkclJlZ2lvbj0iIgogICAg SXB0YzR4bXBDb3JlOkNpQWRyUGNvZGU9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk ckN0cnk9IiIKICAgIElwdGM0eG1wQ29yZTpDaVRlbFdvcms9IiIKICAgIElwdGM0 eG1wQ29yZTpDaUVtYWlsV29yaz0iIgogICAgSXB0YzR4bXBDb3JlOkNpVXJsV29y az0iIi8+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBt ZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBl bmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ 2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qp qKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5 eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJ SEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZ GBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFFAD/ACwAAAAALAH6AAAI/wAf

sBDYr6DBgwgTKlzIsKHDhxAd8phIsaLFiix4ZNzIoqNHgQ9CigwZ4UGEkyhPIlAZ AYHLly+DIAhCsyaOIDhy6mzBs6dPJS2AKhlKdKgBogaSKl3KtIGBBlCjSgUBlWoD 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 40uvkOVqdIa+tqnBBYoACBAEKvy+0SuyNImZWPapoRWq+XvCN1yqY+m//2mzNRvC kzvABEy+eYZ0JozD9qjCSfzA8ku9ASjD5kZ1h3vEU5yqYRnAPDy+Azy5+HZTCJzA 3GagVGyPHkDGZWzGZ4zGaazGa8zGbezGbwzHcSzHc0zHdWzHd4zHeazHe8zHfezH fwzIgSzIg0zIZxwIHhAIh5zIiKzIjczIj7zIkezIkgzJk2zJlYzJlKzJl7zJmczJ n+zJodzJowzKpCzKpYzKp6zKpszKqdzKiQzLsSz/y7NMy7Vsy7eMy7k8ChlQnL0c BhmQy8EszLU8CmGwHxSQAYw8zIGQARmQCsNczMfczGHwE78cyxlAzQPxyxlQrL6c

AaOwzOEszuMsy1GQyOYcCOiszufMzunczuvszvEMz/P8zvUsz+2cztncy71MAalg zvR8zwEN0APtzvpsIsAs0PgcCKmgz2Hgz/b8z4Fg0PtczVEQBRNN0RmdARGd0B1N 0B4N0SGd0BZN0iVt0ieN0imt0ivN0i3tAd2c0QORASfQ0jVt0ySdCjANFDfNy8U5 0yyd0zEtKx7A0EJt1Bt900mt1EvN1E3t1ExN0+Y8EFqgAVVt1VetAFQQJakQ/9VP rdSpMBBGYNVa7Q81fQL6TAFGYBNhEAVdjdJg7Q9iXdVkLdfkoABA4cxhTQ5VrQUD QQVXDdgaEAN9PRBc7dWH7dUnoNiLzdiN7diPDdmRLdmTPdmBMNWBDdjkQNhhQNmd 7dmLDddyrQFk3daTDdf+QNXmsNalHdmhPdZhXdV2Xdiuzdd+jdmAbQRRwtqfzdu9 7dudjc1h8MuGHdzCTdzCjdzCDcxNkArFvdEnINHJjdxcfQLTrNyKzdDIPdOLbdmo fdtXbQ5a7dBRgM0/QQEODdrJPc3a/MuNzdCO8svJDdtzLdPazc1Rgt49rQBVrdr+ wNYn8N6yAsy0PdrzLf/b/pDXcb3XGkDYf/3dsd3XyNwEjy3Rx4zejE3eBt3ei+3c 5Q0U4+3h/k3dnj3hJ1DiE87cE33eGB3ivmzMvXza+yzc3fzLvrzYdHDZVR0DRsDj CqAGWM3eFB0GC23U/h0FTXDRRY7aPa7T+9zT/hAD/A0l553RK77kRqAAPlHXd+0P qRDUot3gC24OPM7j5nDVMSDTJ27idIDRFT3h973P/SzRSu7Lam7iiq3mKI7id84E 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 DVny7M0WIFdVzdiTPVm1VFiOFVmXfVlqbc7mTNmZTVJhhVmczVlitVmZZdnU1Fmg DdpQ9Vme8FehPVqkLUgCndmaTVan/dikjVqpZRSmXdp/NdqpzVqtZdit7Vqv/Vqw DVt0pU5WFVuz/VoWJdsEPVu21dpxTVCobVu5hdlJnVu7vVu8zVu93Vu+7Vu//VvA DVzBHVzCRVQciAAWAE3T1DzT7NbijADIzQmZRQDKrVxJDQLMxQHN1Vx+LVzPRUzF bVzTFFTILV2FrVzUVU3MXd3N5dzd/FzY5YnQFV3SNd0kVdXUXV3dbV0c4M3XjV3/ 4GXc0X1c24VcynVOysVd1dXdzG1d3/3d4CVc1GzcAC3eJE1dyh1X1v1U531eJYjV 6PVc671e5M3d5d1d3n3e2vxe8A3fv51e651c7CVb4GRd3u1d9SVR9xVf4y3f+b1c 5q3P+1Xf3WTf9t1fwSXf+SVb5uXe9CVgMUXg2PVf821gB+5eAjZg9pXgwWVZ7AXg Bh5g/PXdEdVgA+bgwH1O1LXgzL1gDCbh9TXh7zWAA0bhvs1eEG7h+3Xd/JVhGlaC HzaA37ThwLXgHe5dJO5hGWZfGhZiIQZiIuZbLg3gI4ZgMV3iGW5iLR7iKO5b9H3h DI5hE9ZiIH5iM+biLt7b/yqGYCxm4hku4y124jTu2wFugRHmzTYeYyfeYjhG4znW Wx72XjHO4zIGYtvc4z3+48IFVNy0zRoW0ZzwY0WO4t+E4keeZEDeXDvmTR8l5O+t 2CBG5EhGZDlO5H8wgAYQ4lRGZUnG5JwN5DD2YQNu4j4mZVsm5VXOZVZO5Vx25ZzF TSsu4Tym5Tg+41tmZWRWZWVG5l72ZZi9YzweZFkmZjiu5WNOZmXWZV5mZlZ2Zpj1 Xk9m4mK25mt24m0+52VGZ1RuAG922SsOZ2Im43K25W1O5lXm5l3O53YOWU+OZ3Ke Z1zG53NuAF4u6Hxm539IZZxQ6H2u1zamZkT+52vW5v9sFuh1JuiLJmiNbmiQXeJQ juhiPuZ71mVVRueBxmiNLuiNng+E5uhyfWN/NmaARuR6pmiNvuh1zuiUVmmXltgf NmSZBmiSNumDxumb3umd1mmC7umBHWI+DmqRpul0nuqcPmqrRmqsZuqBBeqZjuqR LuqTVumwFmuk1upoBWqgPuWupmdutmmwrmqlxuqyNmtk5eJYlehbVmeDHmijRmm5 /mvAputyReOuvmdzXua29muyxuq4DmzBHtZHXmui3utdBmzLvuyUxgkQaIDN7mzO fmw8beVRZuu33muk7uvFxmys3uxG4eyWBu0aBdQaluqarmiTVunGVm3dBoF/8Gz/ 384J3obtUqVqhj7llZbrhUbu5M7qzN7phF7p/nlt4U5Uhd5lnUBo6UZlRpFuq+Jt 7wZu8J7ugVXo4u5m49ZunhBt+eDu9V5o8RZZ645kdkZvGw3uz+7tOQzu977T3zxn +dZu9O5m9ibP+05onWBtzXZt32ZnBN9vLOVl4z7vhO5vLqbv+mbwAk9o/f5sDudt BR9wB+ctfUZo854PAIfRBWdtD5cjFcfw3lbwED9M6S7v+Z7wO3XtF89x8EboBo/x J91mAyds/17oIQZx/Pvwzr7uJL9u/G5t925xH5e0/saJg2aUKVdv/NPvnYDxDtfw hfZwMPfyJpePHo9yiKnu/+Km8vl+bRI38iMP8wzP8QbvchfnCS038zkk75yAcJ04 8Ug28D3Pcy2n8zK/c+Bmc/f28gIvczxPbwhvZfRmaDfP8j2/80Wvc57gcc3edJZu dMXhbiDv8z3HchlH8A7H8RRnb1O3c1b39D8n6iAf8DS/8O8+dFfH0zYv6gjn4kmv UOzW8F/X8Vu30SKncCYH9B9nlCWv9DEf9itFZ1H/zSsPdPU0dDvHcDjndGeXcTXv ZmMncnYO91OuUPtWdDB3cVNf8WPf9jkscmof9fTOdFKPbm2/dChP8vtGcGtn93aX 9zTncwpNd3NH9y7nd1+v8NfWZzz17paG8XdPdIMX8f81H/Xs7vVSB3Ydt/iIT8/y 7nZ4j/Aa/e3tDu5y33huH/eGl3cD13hxOneIWXaI33eT7x9pD3djB/A0b2WWz/Rr t+8w3/Lwnvk8H/f1tnD3nvfunnF9Z3BAz/eHF3qrcnf+1HMqv9MlD3ZD33mo3/L4 PvZZZ1SSR3YF1QGZZ3dIb2+hBQGy/weyX3s8f/QJH/IgB/qobfvetns8F/ARr3Cx D1v9dvsY/3q+1Ya85/Mh1oZpzVvCD3wKl/utl1pjz3mFhoLEf3yppXr5OAIJsPyk RXMshwfOB9oRp/jQj9pgl/D/1onNL334XnNljvuuz4ltAH3Wl9hHB3jB7/va9+n/ bjdpG/96zd/98bZw8uZ7G5cP2hd+ei323z9vzFd+l5V80cbyHID+eiV+7Zb7AV/8 I7D+edV1pHfvLPF+Yj1xgz7+Xw9/8l/+hlf/A1//wU79FWNtrYf/Z99u3ip7+w/V KQeIfwINCCxo8KDBBggXMmzo8CHEiBInUqxo8SLGjBovKiSoEUQDEP9Chtxo8iTK

lCpXMnyhwyXMlzJj0pxpsybOmzb/uRTYwGPFkkJBivTJ8ijSpEqP6lgq8YXAnj0v Fl1Y8l9Vp1q3ckUKVSZPnTnHii2bs+DLf2lHKpw4dCTRkQXbdq1r9y7FtVKb7g3r ty9gvoL/Dg5skG9FkFjpbhpUjBUv5MiSv0pFy9MyVIGINV/mnFltZ9CfN4v2PNHx 3KySV7Nu7dokSaKx4aZ+bfs27twSGevu7fs3StmLgRMvbjxlbN4FUR9v7vx5VdVG n1Ovfpz5Vevat/cGIVI59/Dib0sfb/78XfDocQcEADs= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=rss.png Content-Type: image/png; name=rss.png Content-Location: http://beritama.com/wp-includes/images/rss.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ

+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACA gwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAIoSURBVHjajJFPSFRRGMV/ 99735r4mXpHINIW5SCgSkcwwitzlIlRoEy3EWtSinausXQRtqvW4cBcUhFQgJBUR RS0yyH8ZOYSR5ViIOqOTf97Me+/eFoNCtOksD9+Pw3eOmO4kbWHQWNLANgFGCBD8 o01rDmh3LAzK9P6WIDRUnTqPKBUx+W+wkMXVCq0lSkuUq5DSACaVezE55FjLwcgK VO0h9nbd+Cti/eMTwuEMKs7juhKUhCgAaHKEQDpa4jgxc/d6EVKgdqZI1jXjN3ZA Ywfl0buY8X6kkCA1AA5gpCuIln9gl3wIC5jZFVamBlj73MquExfRRy4QJjz40Ic1 8RYIEmx1LTU9DwEIvr4lnHxAkHvD/OAnUp138BrOUXrfhy0ubiLgJhQ6EbP0KsPy yABeXSv+mQz+4bPoQpbFp9crTzd0EwVRBRSAt93Fp4Ac6SN4fpW5/nY2Zt7hnbxC sqaZKDdK/nUGfewSYbmyijQWjC1jggWcqICvQxL5SeYf9wCQaLkMMZTyvwCwVfUV MLawulHAabuJf+0nuu0WXkJBcZ7i2CP0gTaEt5twbRWA2KnaAkUIJOtPV9pq7EJa gSME4dIMAMqrhkqZqHRD5U4JZNJTrGefseNoN+HEfYgFWkpM9iX5mXHM7BRxYY3c 7S7WJ4ZRgPjSwWjq+L4mXIVAoKzAhBCVICyDKUN5A8IA4hJIESN+fx8T053sAYaA Jv5PY0D7nwEAoc3W7UeNrdcAAAAASUVORK5CYII= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=st.htm Content-Type: text/html; name=st.htm Content-Location: http://ad.yieldads.com/st?ad_type=iframe&ad_size=468x60&sectio n=3032601&pub_url=${PUB_URL} Content-Transfer-Encoding: Quoted-Printable <html><head></head><body><script type=3D"text/javascript">/* All portion= s of this software are copyright (c) 2003-2006 Right Media*/var rm_ban_f= lash=3D0;var rm_url=3D"";var rm_pop_frequency=3D0;var rm_pop_id=3D0;var = rm_pop_times=3D0;var rm_pop_nofreqcap=3D0;var rm_passback=3D0;var rm_tag= _type=3D"";rm_tag_type =3D "iframe"; rm_url =3D "http://ad.yieldads.com/= imp?Z=3D468x60&s=3D3032601&T=3D3&_salt=3D3799292838";var RM_POP_COOKIE_N= AME=3D'ym_pop_freq';var RM_INT_COOKIE_NAME=3D'ym_int_freq';if(!window.rm= _crex_data){rm_crex_data=3Dnew Array();}if(rm_passback=3D=3D0){rm_pb_dat= a=3Dnew Array();if(rm_crex_data.length>0){rm_url+=3D"&X=3D";for(var i=3D= 0;i<rm_crex_data.length;i++){rm_url+=3Drm_crex_data[i];if(i!=3Drm_crex_d= ata.length-1){rm_url+=3D",";}}}}else{rm_pb_data.push(rm_crex_data.pop())= ;rm_url+=3D"&X=3D";for(var i=3D0;i<rm_pb_data.length;i++){rm_url+=3Drm_p= b_data[i];if(i!=3Drm_pb_data.length-1){rm_url+=3D",";}}rm_url+=3D"&Y=3Dp= b";}var flash=3Dnew Object();flash=3DflashDetection();if(cookiesEnabled(= )){rm_url+=3D(flash.installed?"&B=3D10":"&B=3D12");}else{rm_url+=3D(flas= h.installed?"&B=3D11":"&B=3D13");}if(!flash.installed||rm_ban_flash=3D=3D= 1){rm_url+=3D"&m=3D2";}if(rm_url.indexOf("&u=3D")=3D=3D-1){var url=3D'';= try{if(rm_tag_type=3D=3D"ad"){if(top=3D=3Dself){url=3DencodeURIComponent= (top.location.href);url=3Durl.substr(0,256);rm_url+=3D"&u=3D"+url;}}else= if(rm_tag_type=3D=3D"iframe"){url=3DencodeURIComponent(document.referre= r);url=3Durl.substr(0,256);rm_url+=3D"&u=3D"+url;}}catch(e){}}if(top=3D=3D= self){rm_url+=3D"&r=3D1";}else{rm_url+=3D"&r=3D0";}var rm_tag_src=3D'<SC= RIPT TYPE=3D"text/javascript" SRC=3D"'+rm_url+'"><\/SCRIPT>';if(rm_pop_f= requency){if(rmCanShowPop(rm_pop_id,rm_pop_times,rm_pop_frequency)||rm_p= op_nofreqcap){document.write(rm_tag_src);}}else{document.write(rm_tag_sr= c);}function cookiesEnabled(){var cookieEnabled=3D(navigator.cookieEnabl= ed)?true:false;if(typeof navigator.cookieEnabled=3D=3D"undefined"&&!cook= ieEnabled){document.cookie=3D"testcookie";cookieEnabled=3D(document.cook= ie.indexOf("testcookie")!=3D-1)?true:false;}return cookieEnabled;}functi= on rmGetCookie(Name){var search=3DName+"=3D";var CookieString=3Ddocument=

.cookie;var result=3Dnull;if(CookieString.length>0){offset=3DCookieStrin= g.indexOf(search);if(offset!=3D-1){offset+=3Dsearch.length;end=3DCookieS= tring.indexOf(";",offset);if(end=3D=3D-1){end=3DCookieString.length;}res= ult=3Dunescape(CookieString.substring(offset,end));}}return result;}func= tion flashDetection(){var flash=3Dnew Object();flash.installed=3Dfalse;f= lash.version=3D'0.0';if(navigator.plugins&&navigator.plugins.length){for= (x=3D0;x<navigator.plugins.length;x++){if(navigator.plugins[x].name.inde= xOf('Shockwave Flash')!=3D-1){flash.version=3Dnavigator.plugins[x].descr= iption.split('Shockwave Flash ')[1];flash.installed=3Dtrue;break;}}}else= if(window.ActiveXObject){for(x=3D2;x<10;x++){try{oFlash=3Deval("new Act= iveXObject('ShockwaveFlash.ShockwaveFlash."+x+"');");if(oFlash){flash.in= stalled=3Dtrue;flash.version=3Dx+'.0';}}catch(e){}}}return flash;}functi= on rmReplace(myString,toReplace,replaceBy){return(myString.replace(new R= egExp(toReplace,'gi'),replaceBy));}function writeCookie(ckName,ckVal){va= r numdays=3D14;var today=3Dnew Date();var expires=3Dnew Date();expires.s= etTime(today.getTime()+(1000*60*60*24*numdays));var cookieText=3DckName+= "=3D"+ckVal+";expires=3D"+expires.toGMTString()+";path=3D/;";document.co= okie=3DcookieText;return null;}function rmCanShowPop(rm_pop_id,pop_times= ,pop_frequency){var countCookieName=3DRM_POP_COOKIE_NAME+rm_pop_id;var e= xpireCookieName=3DRM_POP_COOKIE_NAME+"_expiration"+rm_pop_id;var shownTi= mes=3DrmGetCookie(countCookieName);if(shownTimes=3D=3Dnull){rmWriteExpir= ationCookie(expireCookieName,pop_frequency);shownTimes=3D0;}else{shownTi= mes=3DNumber(shownTimes);}if(shownTimes<pop_times){shownTimes=3D1+shownT= imes;var expiration=3DrmGetCookie(expireCookieName);rmWritePopFrequencyC= ookie(rm_pop_id,shownTimes,expiration);return_value=3Dtrue;}else{return_= value=3Dfalse;}return return_value;}function rmWritePopFrequencyCookie(r= m_pop_id,shownTimes,expiration){var cookieName=3DRM_POP_COOKIE_NAME+rm_p= op_id;var cookieText=3DcookieName+"=3D"+shownTimes+";"+"expires=3D"+expi= ration+";path=3D/;";document.cookie=3DcookieText;}function rmWriteExpira= tionCookie(cookieName,frequency){var today=3Dnew Date();var expires=3Dne= w Date();expires.setTime(today.getTime()+(1000*frequency));var cookieTex= t=3DcookieName+"=3D"+expires.toGMTString()+";"+"expires=3D"+expires.toGM= TString()+";path=3D/;";document.cookie=3DcookieText;}</script><noscript>= <a href=3D"http://ad.yieldads.com/imageclick?Z=3D468x60&s=3D3032601&T=3D= 3&_salt=3D3799292838&t=3D2" target=3D"_parent"><img border=3D"0" src=3D"= http://ad.yieldads.com/imp?Z=3D468x60&s=3D3032601&T=3D3&_salt=3D37992928= 38&t=3D2"></img></a></noscript></body></html> ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=js-ad.htm Content-Type: text/html; charset=UTF-8; name=js-ad.htm Content-Location: http://scr.kliksaya.com/js-ad.php?zid=98148 Content-Transfer-Encoding: 8bit document.write('<ifr'+'ame src='+'"http://scr3.kliksaya.com/ad/98148/beritama.co m"'+' marginwidth="0" marginheight="0" width='+'"302"'+' height='+'"252"'+' bord er="0" frameborder="0" style="border:none;" scrolling="no"></iframe>'); ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=likebox.htm Content-Type: text/html; charset=utf-8; name=likebox.htm Content-Location: http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2F www.facebook.com%2FBeritamaCom&width=292&height=182&colorscheme=light&show_faces =true&border_color=blue&stream=false&header=false Content-Transfer-Encoding: Quoted-Printable <!DOCTYPE html> <html lang=3D"id" id=3D"facebook" class=3D"no_js"> <head><meta charset=3D"utf-8" /><meta name=3D"robots" content=3D"noodp, = noydir" /><meta name=3D"referrer" content=3D"default" id=3D"meta_referre=

r" /><meta name=3D"description" content=3D" Facebook adalah sarana sosia= l yang menghubungkan orang-orang dengan teman dan rekan mereka lainnya y= ang bekerja, belajar, dan hidup di sekitar mereka. Orang-orang menggunak= an Facebook untuk menjaga hubungan dengan teman, bertukar foto tanpa bat= as, mengirim tautan dan video, dan mengetahui lebih jauh tentang orang-o= rang yang mereka temui." /><script>CavalryLogger=3Dfalse;</script><title= >Likebox</title> <link rel=3D"stylesheet" href=3D"http://static.ak.fbcdn.net/rsrc.php= /v2/ye/r/pGNCz3aQKbr.css" /> <link rel=3D"stylesheet" href=3D"http://static.ak.fbcdn.net/rsrc.php= /v2/y5/r/pQuN3yuTFUe.css" /> <link rel=3D"stylesheet" href=3D"http://static.ak.fbcdn.net/rsrc.php= /v2/yP/r/abs0-FmBxja.css" /> <link rel=3D"stylesheet" href=3D"http://static.ak.fbcdn.net/rsrc.php= /v2/yQ/r/2K_HjPZsdxy.css" /> <link rel=3D"stylesheet" href=3D"http://static.ak.fbcdn.net/rsrc.php= /v2/y7/r/r_6JumMR_qC.css" /> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/y5/r/GVOPjoPQ-= KP.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/ye/r/OjiFoELHE= sI.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/Oz4q5PV8l= AW.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yF/r/rycNb45tU= k1.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yn/r/FAMlMiglK= AL.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/ys/r/XhtFMcXPd= d_.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yh/r/A36IgZVbz= BG.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yF/r/Pgp-k-6uu= yj.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yn/r/qdLZMQ3_Y= Oj.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/y5/r/hIBLG2xuv= 5r.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yc/r/CFGZ7MX8j= ji.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/y0/r/lhckqK-yn= Ok.js"></script> <script src=3D"http://static.ak.fbcdn.net/rsrc.php/v2/yH/r/9aRD4FQek= RU.js"></script> <script>window.Bootloader && Bootloader.done(["+8yjR","1lBV5","8I0dn",= "dDYqt","mC0Al","AWjSP","5YjJS","NgtYF","yBChh","2qxY1","9ZlWA","6S74F",= "obX0U"]);</script><script>new (require("ServerJS"))().handle({"require"= :[["lowerDomain"],["Primer"]]});</script></head><body class=3D"plugin tr= ansparent_widget opera win Locale_id_ID"><div id=3D"FB_HiddenContainer" = style=3D"position:absolute; top:-10000px; width:0px; height:0px;"></div>= <div id=3D"LikeboxPluginPagelet"><div class=3D"app_content_3743929025816= 62 auto_resize_iframe transparent_widget connect_widget"><div id=3D"uzzp= em_1" class=3D"fbConnectWidgetTopmost" style=3D"height:180px; border-col= or:blue;"><div style=3D"overflow: hidden;height:157px; "><div class=3D"m= hs pvm phs ConnectActivityLogin hidden_elem uiBoxWhite"><label class=3D"= mrm fbLoginButton uiButton uiButtonConfirm uiButtonLarge" for=3D"uzzpem_= 2"><input value=3D"Masuk" onclick=3D"ConnectSocialWidget.getInstance(&qu= ot;uzzpem_1&quot;).login();" type=3D"submit" id=3D"uzzpem_2" /></label><= div class=3D"ConnectActivityLoginMessage"></div></div><div class=3D"conn= ect_widget phs pts"><div class=3D"fan_box"><div class=3D""><div class=3D=

"connect_top clearfix"><a href=3D"http://www.facebook.com/BeritamaCom" t= arget=3D"_blank"><img class=3D"profileimage img" src=3D"http://profile.a= k.fbcdn.net/hprofile-ak-snc4/174812_374392902581662_916734706_q.jpg" alt= =3D"Berita Terkini" /></a><div class=3D"connect_action"><div class=3D"na= me_block"><a href=3D"http://www.facebook.com/BeritamaCom" target=3D"_bla= nk"><span class=3D"name">Berita Terkini</span> di Facebook</a></div><div= ><div id=3D"connect_widget_50355ded2493c4340721042" class=3D"connect_wid= get" style=3D""><table class=3D"connect_widget_interactive_area"><tr><td= class=3D"connect_widget_vertical_center connect_widget_button_cell"><di= v class=3D"connect_button_slider" style=3D""><div class=3D"connect_butto= n_container"><a class=3D"connect_widget_like_button clearfix like_button= _no_like" href=3D"#"><div class=3D"tombstone_cross"></div><span class=3D= "liketext">Suka</span></a></div></div></td><td class=3D"connect_widget_v= ertical_center"><span class=3D"connect_widget_confirm_span hidden_elem">= <a class=3D"mrm connect_widget_confirm_link" href=3D"#" target=3D"_blank= ">Konfirmasi</a></span></td><td class=3D"connect_widget_vertical_center"= ><div class=3D"connect_confirmation_cell connect_confirmation_cell_no_li= ke"><div class=3D"connect_widget_text_summary connect_text_wrapper"><spa= n class=3D"connect_widget_user_action connect_widget_text hidden_elem">A= nda menyukai ini.<span class=3D"unlike_span hidden_elem"><a class=3D"con= nect_widget_unlike_link" href=3D"#" target=3D"_blank"></a></span><span c= lass=3D"connect_widget_admin_span hidden_elem">&nbsp;&middot;&nbsp;<a cl= ass=3D"connect_widget_admin_option" href=3D"#" target=3D"_blank">Halaman= Admin</a><span class=3D"connect_widget_insights_span hidden_elem">&nbsp= ;&middot;&nbsp;<a class=3D"connect_widget_insights_link" href=3D"#" targ= et=3D"_blank">Wawasan</a></span></span><span class=3D"connect_widget_err= or_span hidden_elem">&nbsp;&middot;&nbsp;<a class=3D"connect_widget_erro= r_text" href=3D"#" target=3D"_blank">Terjadi Kesalahan</a></span></span>= <span class=3D"connect_widget_summary connect_widget_text"><span class=3D= "connect_widget_connected_text hidden_elem">Anda menyukai ini.</span><sp= an class=3D"connect_widget_not_connected_text"></span><span class=3D"unl= ike_span hidden_elem"><a class=3D"connect_widget_unlike_link" href=3D"#"= target=3D"_blank"></a></span><span class=3D"connect_widget_admin_span h= idden_elem">&nbsp;&middot;&nbsp;<a class=3D"connect_widget_admin_option"= href=3D"#" target=3D"_blank">Halaman Admin</a><span class=3D"connect_wi= dget_insights_span hidden_elem">&nbsp;&middot;&nbsp;<a class=3D"connect_= widget_insights_link" href=3D"#" target=3D"_blank">Wawasan</a></span></s= pan><span class=3D"connect_widget_error_span hidden_elem">&nbsp;&middot;= &nbsp;<a class=3D"connect_widget_error_text" href=3D"#" target=3D"_blank= ">Terjadi Kesalahan</a></span></span></div></div></td></tr></table><div = class=3D"connect_widget_sample_connections clearfix"></div></div></div><= /div></div><div class=3D"connections"><span class=3D"total total_plus hi= dden_elem">3,900 orang menyukai <b>Berita Terkini</b>.</span><span class= =3D"total">3,899 orang menyukai <b>Berita Terkini</b>.</span><div class=3D= "connections_grid clearfix"><div class=3D"grid_item grid_item_plus user_= profile hidden_elem"><a href=3D"" target=3D"_blank"><img class=3D"img" s= rc=3D"http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/yo/r/UlIqmHJn-SK= .gif" alt=3D"" /><div class=3D"name"></div></a></div><div class=3D"grid_= item"><a href=3D"http://www.facebook.com/joel.fahmie.5" target=3D"_blank= "><img class=3D"img" src=3D"http://profile.ak.fbcdn.net/hprofile-ak-snc4= /275294_100001179982644_459486287_q.jpg" alt=3D"" /><div class=3D"name">= Joel</div></a></div><div class=3D"grid_item"><a href=3D"http://www.faceb= ook.com/qrifin.qrifin" target=3D"_blank"><img class=3D"img" src=3D"http:= //profile.ak.fbcdn.net/hprofile-ak-snc4/276119_100000905866170_776786025= _q.jpg" alt=3D"" /><div class=3D"name">AQ</div></a></div><div class=3D"g= rid_item"><a href=3D"http://www.facebook.com/ernii.zweetdzz" target=3D"_= blank"><img class=3D"img" src=3D"http://profile.ak.fbcdn.net/hprofile-ak= -snc4/261021_100002050451769_487935436_q.jpg" alt=3D"" /><div class=3D"n= ame">ERnii</div></a></div><div class=3D"grid_item"><a href=3D"http://www= .facebook.com/RizalfahmyGamarR" target=3D"_blank"><img class=3D"img" src=

=3D"http://profile.ak.fbcdn.net/hprofile-ak-ash2/371103_100002655861471_= 7407847_q.jpg" alt=3D"" /><div class=3D"name">Rizal</div></a></div><div = class=3D"grid_item"><a href=3D"http://www.facebook.com/jokoleader.ship" = target=3D"_blank"><img class=3D"img" src=3D"http://profile.ak.fbcdn.net/= hprofile-ak-snc4/186894_100002300528446_1691502563_q.jpg" alt=3D"" /><di= v class=3D"name">Jokoarianto</div></a></div><div class=3D"grid_item"><a = href=3D"http://www.facebook.com/hengki.sitorus.31" target=3D"_blank"><im= g class=3D"img" src=3D"http://profile.ak.fbcdn.net/hprofile-ak-snc4/2762= 87_100003012535113_1262998502_q.jpg" alt=3D"" /><div class=3D"name">Heng= ki</div></a></div><div class=3D"grid_item"><a href=3D"http://www.faceboo= k.com/profile.php?id=3D100004161005258" target=3D"_blank"><img class=3D"= img" src=3D"http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/yo/r/UlIqm= HJn-SK.gif" alt=3D"" /><div class=3D"name">Arief</div></a></div><div cla= ss=3D"grid_item"><a href=3D"http://www.facebook.com/devina.virnie" targe= t=3D"_blank"><img class=3D"img" src=3D"http://profile.ak.fbcdn.net/hprof= ile-ak-snc4/203304_100001839117739_980045447_q.jpg" alt=3D"" /><div clas= s=3D"name">Devina</div></a></div><div class=3D"grid_item"><a href=3D"htt= p://www.facebook.com/wawi.permana" target=3D"_blank"><img class=3D"img" = src=3D"http://profile.ak.fbcdn.net/hprofile-ak-snc4/370799_1000028701818= 40_2092360952_q.jpg" alt=3D"" /><div class=3D"name">AzWawi</div></a></di= v><div class=3D"grid_item"><a href=3D"http://www.facebook.com/erna.ratna= sari.988" target=3D"_blank"><img class=3D"img" src=3D"http://profile.ak.= fbcdn.net/hprofile-ak-snc4/274711_100004035717693_266085826_q.jpg" alt=3D= "" /><div class=3D"name">Erna</div></a></div></div></div></div></div></d= iv></div><div style=3D"height: 23px;"><div class=3D"fbConnectWidgetFoote= r"><div class=3D"fbFooterBorder"><div class=3D"clearfix"><a class=3D"-cx= -PRIVATE-uiImageBlock__image -cx-PRIVATE-uiImageBlock__smallImage lfloat= " target=3D"_blank" href=3D"http://developers.facebook.com/plugins/?foot= er=3D1" tabindex=3D"-1" aria-hidden=3D"true"><i class=3D"img sp_biahfe s= x_304e76"></i></a><div class=3D"-cx-PRIVATE-uiImageBlock__content -cx-PR= IVATE-uiImageBlock__smallContent"><div class=3D"fss fwn fcg"><span><a cl= ass=3D"uiLinkSubtle" target=3D"_blank" href=3D"http://developers.faceboo= k.com/plugins/?footer=3D1">Plugin sosial Facebook</a></span></div></div>= </div></div></div></div></div></div></div><script>function envFlush(a){f= unction b(c){for(var d in a)c[d]=3Da[d];}if(window.requireLazy){requireL= azy(['Env'],b);}else{Env=3Dwindow.Env||{};b(Env);}} envFlush({"module":"likebox_widget","impid":"f4e0da16","fb_dtsg":"AQCS6N= ns","ajaxpipe_token":"AXiKR6xdMN4go2IR","lhsh":"oAQEyUZEK","user":"17961= 23547"});</script> <script>Bootloader.setResourceMap({"3bOLd":{"type":"css","permanent":1,"= src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/pGNCz3aQKbr.css= "},"Ta701":{"type":"css","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/= v2\/y5\/r\/pQuN3yuTFUe.css"},"mQxB4":{"type":"css","src":"http:\/\/stati= c.ak.fbcdn.net\/rsrc.php\/v2\/yP\/r\/abs0-FmBxja.css"},"f8XWm":{"type":"= css","permanent":1,"src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yQ= \/r\/2K_HjPZsdxy.css"},"crLSX":{"type":"css","src":"http:\/\/static.ak.f= bcdn.net\/rsrc.php\/v2\/y7\/r\/r_6JumMR_qC.css"},"FVdSs":{"type":"css","= src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yP\/r\/xUYXId9BHKh.css= "},"X\/Fq6":{"type":"css","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\= /v2\/ym\/r\/npiq-iwhYU8.css"},"96dXD":{"type":"css","permanent":1,"src":= "http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yj\/r\/uIi28KdzduH.css"},"V= Dymv":{"type":"css","permanent":1,"src":"http:\/\/static.ak.fbcdn.net\/r= src.php\/v2\/yP\/r\/Zec2-4A_H2P.css"}});Bootloader.setResourceMap({"1lBV= 5":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r= \/OjiFoELHEsI.js"},"8I0dn":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yx\/r\/Oz4q5PV8lAW.js"},"ai925":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/CYAZMUDf1xO.js"},"MqSm= z":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yH\/r= \/ghlEJgSKAee.js"},"cNca2":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yT\/r\/7YVta2ViNbr.js"},"aOO05":{"type":"js","src":"h=

ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yC\/r\/OoEdEM63foT.js"},"rk7K= Q":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yF\/r= \/y1sd3C7N-hO.js"},"ytAv2":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yj\/r\/7-ulPauLAGS.js"},"5hpsV":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yh\/r\/KF-vj0ci9Y0.js"},"yBCh= h":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yn\/r= \/qdLZMQ3_YOj.js"},"MAofN":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yC\/r\/IHvyL7YyzqK.js"},"IumlO":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y2\/r\/Mo5wOiFoAjd.js"},"bwsM= w":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yi\/r= \/5VR2mwxDrFF.js"},"jeRjI":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yd\/r\/QFb_llXTASu.js"},"72eDL":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yb\/r\/s6PzlTe_Zgk.js"},"9ZVf= 6":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yD\/r= \/45BqTl1qQTj.js"},"DI7dA":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yY\/r\/gzUQoLAS8iS.js"},"OKxTf":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y1\/r\/M2LLNQKNjPl.js"},"Y+hw= H":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y3\/r= \/DClrBcnfs-k.js"},"zyFOp":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/yH\/r\/mB8Uky7Wtb9.js"},"mC0Al":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yn\/r\/FAMlMiglKAL.js"},"2ma5= f":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yo\/r= \/hCn6u3fXLtg.js"},"DZmeF":{"type":"js","src":"http:\/\/static.ak.fbcdn.= net\/rsrc.php\/v2\/y2\/r\/ZeZFU7zHXuC.js"},"H42Jh":{"type":"js","src":"h= ttp:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y3\/r\/ppwOo4BAmlb.js"},"AtxW= D":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yE\/r= \/0jGJARW_TcI.js"}}); Bootloader.enableBootload({"ConfirmationDialog":{"resources":["1lBV5","8= I0dn","ai925"],"module":true},"Dialog":{"resources":["1lBV5","8I0dn","3b= OLd"],"module":true},"IframeShim":{"resources":["1lBV5","8I0dn","MqSmz"]= ,"module":true},"ErrorSignal":{"resources":["1lBV5","8I0dn","cNca2"],"mo= dule":true},"legacy:explicit-hover":{"resources":["1lBV5","aOO05","rk7KQ= "]},"sortable-side-nav-js":{"resources":["8I0dn","ytAv2","1lBV5","5hpsV"= ,"yBChh","MAofN"]},"AsyncDialog":{"resources":["1lBV5","8I0dn","3bOLd"],= "module":true},"FbdDialogProvider":{"resources":["IumlO","1lBV5","bwsMw"= ],"module":true},"React":{"resources":["jeRjI","72eDL","9ZVf6"],"module"= :true},"AsyncRequest":{"resources":["1lBV5","8I0dn"],"module":true},"Pho= toSnowlift":{"resources":["1lBV5","8I0dn","3bOLd"],"module":true},"Vault= Box":{"resources":["1lBV5","8I0dn","3bOLd","DI7dA","OKxTf","Y+hwH","FVdS= s"],"module":true},"SpotlightShareViewer":{"resources":["1lBV5","8I0dn",= "X\/Fq6","zyFOp"],"module":true},"PhotoTagger":{"resources":["1lBV5","8I= 0dn","3bOLd","Y+hwH","DI7dA"],"module":true},"fb-photos-snowlift-css":{"= resources":["96dXD","3bOLd"]},"Live":{"resources":["1lBV5","mC0Al","8I0d= n"],"module":true},"PhotoTagApproval":{"resources":["1lBV5","8I0dn","DI7= dA"],"module":true},"PhotoTags":{"resources":["1lBV5","8I0dn","3bOLd","D= I7dA"],"module":true},"TagTokenizer":{"resources":["1lBV5","8I0dn","DI7d= A","3bOLd"],"module":true},"fb-photos-snowlift-fullscreen-css":{"resourc= es":["VDymv"]},"PhotoPivot":{"resources":["1lBV5","8I0dn","3bOLd","2ma5f= "],"module":true},"PhotosButtonTooltips":{"resources":["1lBV5","8I0dn","= 3bOLd","DZmeF"],"module":true},"VideoRotate":{"resources":["1lBV5","8I0d= n","H42Jh"],"module":true},"AsyncResponse":{"resources":["8I0dn"],"modul= e":true},"PhotoInlineEditor":{"resources":["1lBV5","8I0dn","3bOLd","DI7d= A","AtxWD"],"module":true},"Form":{"resources":["1lBV5","8I0dn"],"module= ":true},"DOMScroll":{"resources":["1lBV5","8I0dn"],"module":true},"Toggl= er":{"resources":["1lBV5","8I0dn","3bOLd"],"module":true},"Tooltip":{"re= sources":["1lBV5","8I0dn","3bOLd"],"module":true},"event-extensions":{"r= esources":["1lBV5"],"module":true},"DOM":{"resources":["1lBV5"],"module"= :true},"Input":{"resources":["1lBV5","8I0dn"],"module":true},"trackRefer= rer":{"resources":[],"module":true}});</script> <script>

Bootloader.configurePage(["3bOLd","Ta701","mQxB4","f8XWm","crLSX"]); Bootloader.done([]); new (require("ServerJS"))().handle({"require":[["InitialJSLoader","loadO= nDOMContentReady",[],[[]]]]}); onloadRegister_DEPRECATED(function (){new ConnectWidget("", "", "", true= , "");}); onloadRegister_DEPRECATED(function (){new LikeBoxWidget({"sOverflowConta= inerSelector":"","sStreamContainerSelector":""}, "uzzpem_1")}); onloadRegister_DEPRECATED(function (){defer_until(function() { new Exter= nalPageLikeWidget({"isAmbiguousText":true,"viewer":1796123547,"channelUR= L":null,"mobile":false,"nodeType":"page","externalURL":"http:\/\/www.fac= ebook.com\/BeritamaCom","widgetID":"connect_widget_50355ded2493c43407210= 42","alreadyConnected":false,"viewerIsAdmin":false,"adminUrl":null,"show= Faces":true,"useUnlikeLink":true,"layout":"standard","locale":"en_US","c= ommentWidgetMarkup":"","error":null,"autoResize":true,"connectText":0,"s= ocialbar":false,"ref":null,"userOptedOut":false,"showCaptcha":false,"usi= ngInlineCommenting":false,"isBlocked":false,"forceCommentHooks":"","isPe= rsonalized":false,"colorScheme":null,"grayOut":true,"iframeReferer":"htt= p:\/\/beritama.com\/lagu-barat-terbaru\/"}); },function() { return ge("c= onnect_widget_50355ded2493c4340721042"); })}); </script> ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/gif Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.gif Content-Transfer-Encoding: Base64 R0lGODlhEAALALMMAOXp8a2503CHtOrt9L3G2+Dl7vL0+J6sy4yew1Jvp/T2+e/y 9v///wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCwAMACwAAAAAEAAL AAAEK5DJSau91KxlpObepinKIi2kyaAlq7pnCq9p3NZ0aW/47H4dBjAEwhiPlAgA IfkECQsADAAsAAAAAAQACwAABA9QpCQRmhbflPnu4HdJVAQAIfkECQsADAAsAAAA ABAACwAABDKQySlSEnOGc4JMCJJk0kEQxxeOpImqIsm4KQPG7VnfbEbDvcnPtpIN ebJNByiTVS6yCAAh+QQJCwAMACwAAAAAEAALAAAEPpDJSaVISVQWzglSgiAJUBSA dBDEEY5JMQyFyrqMSMq03b67WY2x+uVgvGERp4sJfUyYCQUFJjadj3WzuWQiACH5 BAkLAAwALAAAAAAQAAsAAAQ9kMlJq73hnGDWMhJQFIB0EMSxKMoiFcNQmKjKugws 0+navrEZ49S7AXfDmg+nExIPnU9oVEqmLpXMBouNAAAh+QQFCwAMACwAAAAAEAAL AAAEM5DJSau91KxlpOYSUBTAoiiLZKJSMQzFmjJy+8bnXDMuvO89HIuWs8E+HQYy NAJgntBKBAAh+QQFFAAMACwMAAIABAAHAAAEDNCsJZWaFt+V+ZVUBAA7 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA1QAAAD9CAYAAAC7mjbmAAApOElEQVR42uzcTWsT QRzH8XkdviaRKGp8wqMI2tqoTU9qBZFcPHgTj+IhtY1Y8g5EPbl6UKgoeFCkSo9e fDj8nT/dgekwm53UTdgp3y98CJlN21vpj01jXr39Kr9+/xUiIiIiIiKqT/eT7iij vfv4Q95/+m4P/wgRERERERFVp7tJ95PuKKN9+Lwj+uTlmy/yogAAAAAAVNHdpPtJ d5TRtnd+6hMAAAAAQCLdUYaIiIiIiIiIiA5AslthEut2u2IVpkUNBgMxiT14flcA AEDWuEtFRO3IDSkR2U4cU4XY7OO3No0pLXVULT89JwAAIGsMKiJqR2Jzj6l3pzR9 NDVJkJlQp9MR35RjSkseVcujswIAALLGoCKiVoyp29Y4cVDpmLppbU4aVFKWMqjc eHJDzTf9mEofVddHZwQAAGSNQUVE7bk7FYyfcc3dKc0fP6PYoKo780dU9CwhmZCZ 0LWN0wIAALLGoCKiuQ6nInV0lGOpsCQUy40fqci/Ft6Zct83dqfKzLCrG6cEAABk jUFFRPNLdrtXkprXuqFzvySupgaVfk1E5aB6OHwtIfMf9da7AgAAssagIsqxiwt9 cfyz0Mx+/mJfYhIH1VhNMag2Vcqgmsdb/poaU9rS+kkBAABZY1AR5VivvyqOPxYe PX4mwbXGWrlxZ8/P6q2shlo7qKSicDzVvQ3QH1Wmga48OSEAACBrDCqinAeVFpzP

bFAt9W/tuQslXvsdVN7zw5HXFuGg8p4fiQyqLRMpZVBp9W8DbL7FteMCAACyxqAi ynlQhW8DdOfuTpVpMDeadFRVXdvHh1Icsi4EA0sr9FrkQyn07Lw1Ds639JrJrIW1 YwIAALLGoCLKfVCFY0pzr2nyf6V0MFWNqvKcXyhTdnl4VAAAQNb4+4foIAwqsbkx 5Z81clcqjkHVQJeGHQEAAFn7x975trR1xQH40Nf7MENK6UfYWN1EEL/AehsdpqVa 1m6dpmrWzaYNdEtl61oHI0bUViKGDtnmdOv2YtSOUlr6BdY/7+abdaD8en7ghcsl Nzm7PZmJPg88HM89N8fTd3mqufL+B6DjgyoaUJ6RCNGYshBUHhisvCeIiIjY2ZpG /PPypczfWpaRcxdk4OSHoqPO7XXeOAG0UVDFacVj0+MxRVC9PgOVdwURERE724Yx VShek6Hhj8U+3UvfLOmoc71OVAHsfVBpNNWzJU/5G8tfFqXR56tME4IgkKHJlVTq a01zulSXc2xtbaUyPIeOaQn3GJjtFkREROxsTRLzt6py8swnkstflqfPXsj29o7o qHO9btcJKoA9DCoXjUdiMZXm71ApXRoTKWOqq9nehUJBVJd7U0RV/BxdaaIqukdm 9pggIiJiZ2uSODua1zdINqKeSxSd63W7TlAB7BHiyP/9/Y3iHFX+YyqkFVEVP0ea qIrvkSkfE0REROxsm35eYnt7W0wEnfN5CQBwwCGqvMdUK6Iq+RzuUVV3jxPldwQR ERE7W5PE+fEp0Wj66+kzMRF0rtftOkEFAB6iymdM+Y8qXXPcwymmCCpERMQDElS3 l++IhtO50bxoROlPpnScW6yKXrfrBBUA+IgqTzHlP6qSz+EeVdE9CCpERMR9Z6On /P0rV6/dEH2ynz4yXT+EruPQ8HnRoBq/eIWgAgBfUeUhpvxGVfI53KMqugdBhYiI eMCCSiz6aPSl5Tuiv953+mxOdNT5p5eu2tAalbHJS0QVAPiKKo8xlRxV/s7hvgdB hYiIuH9N/SSxi4UviCoAcMbX35CqH1PuUeXnHO57EFSIiIj7W5OWMKp++GmDoAIA qANBhYiISFC5/ASLoAI4YJRuLgdWSTAwluNzbwZWSTAwdXjw5PnRUvmPuw+evDhq HOjt7T1iDax5a8lasS7trlUdDO9dcrk/cm/FWtr9voGeg6BCREQkqACgLXH/z4ue nh5RE/ZYk8as2deq0sC13aCSaFypRomsaTjpGMaVGpnXPePsysPpj678KHO1h9NN QuqwtdgkfKoOVoxFx/hain2Lei6CChERkaACgLaKqOSv4xHV398var24Egf6+vr0 9YnqehhN1qCe0aCyBglKnX/vGyfGVhaGP1+VwdzKgs6TYso1fBwsGYuOHoIq9DBB hYiISFABwB4jTTBKJKI0nup8/V+CSu9vahhUJoFoUJkEwrWv5++d6s5Usm+9X86e /mx1xsbUznhpXUbsODK1OvP28XK2e6CSvbG4eSoSVEWPQZU3Fh09BlWRoEJERCSo AKCNo8rEaBQ/7RxU397enBiaqO18cKEmuS/XZeqb3+SruXuio84HczXJTtZ2vqve nwg/M+UxfNTAWHT0vO8RggoREZGgAoA2Camk6+Gv9cUDKpyH6+0aVD/ffXTo+/XH meLMr3/np3+R6wubcnPxT7k+f18mpzdEr69uPMr8vvn4UKvCp1WhRlAhIiISVK/Y OxeYqu47jp+QZjGkMRZX5gvBx+zaNMu6JU3jojNNszbN3JYl21rtTKtWRYxRdCoq yhBWQXwgiIICIr4fWL1iWRWvD5xeBWvFFyhg8TErXO4T7gv87v9bPMnJ6TlcLlwc 5v4+ySf/cw7/84+hN00++R/OZRimbweV7o6U6nqfDSoZEVVzYpMMnuxdl7FlbyWy dl5CXHKp50TF7TmSTK8+mhf8Rwk5qFiWZVmWg4phmBfskT/1jlWAb/k7I+4x+gmq M8EOKpvDHWY4VVs8a+WxjhWZRixIKwONM8V5+YX64jaXN0wievXlEcF/2QUHFcuy LMtyUDEM8wK8lEIOKC3pZ11ZX9JBa/cr2EG1eU9lWMLakxfEm/2QkmMsN/77diaN sSsNWJ556kLR4atyUAX19ea9/Tp2DiqWZVmW5aBiGKYPvzZdHT16xz39fiv1OsF+ bXr86hNh2cUXTaXGmxeu3fxuOF2j8bjxxoVNO02mBekn5aAK4hfw9v4XBnNQsSzL siwHFcMwfTCuAosf/wAwdmFdozqoFMdFpJ8v9i0iFef8Px8OKpZlWZbloGIYJjSR d6J0nEFz5J0oHWdIDAcVy7Isy3JQMQzDMBxULMuyLMtBxTAMw3BQsSzLsizLQcUw DMNBxbIsy7JsHwmqD6YXYtGar5C37xJ2Ga5C6Z5j32JDUQVXmQbjJufy70XBuEk9 /33Uf2fG8bM12LLfhPXF5wOW7qP7aZ2gr6ciOTm5Sgg/8mfkGRkpc9KK89MeirFO 6tvMEkJoEm4WThW+yUHFsizLshxUP+A3n+ThQFk1rA4XOqPxkRWhHk6/j92BuOQj WJN/Fvu/qkbl9Qeorn2M8eJ3KIUYE6Zsxcfxe0ERvmWvCWUiOG7VPRHhfR5SDyk9 cxunL9fD7nTj6dOnAUv30f20jrxe+cW7aDLb0NraGqh0H91P62kFFSwWS6empqaC lF4A/jC72CBEFzUEEFLvCavu1d8CET/no4eSgqyVkw1CdFPNf8df5u2dLbwjdY8b QmjoEZ4TZgonCcdwULEsy7JsCAcVhcD1O4/RFWoamiCFKBQODx7b4HL7oMbmcIdc UFFAma1t6BDxoqbgUCWkHrJp70W0ujwUR92W7qd1JEHOPhOazVY4HA7Y7faApfvo flpHEqxIXFYlRGdmZ2dDGVTHjx/vtajyHHwfzjW/giNNuPoXcKS+CUfya3AkjYY9 MQb2pVGwLR4M6/wfwzZvIOwLI6s6CSrUN7agxdrWqTSH5sr3iUA68I/lsVCbk5ND frJu9UIoWTh3EujndN+zoEJbbX63pHtVIfWyEPO/KMPkhQcgjiMkBX+bNm+AcJik z3tCBKBNWMpBxbIsy7IhGFSHT9yAgIPKDzMSD0OPphZnyAXV0VO3oEf+wZ4HFT1m 19HR0WNpHXk9RUx1O6rk9SiY/EFzlEGlVFJwcnklSqaeQnJEAZTu/tPXoJ9JCpaG 5UFWUuDJixjbXhLZ2m4Y1dF+7C2Xr/TXHp9hvM9b8k6Hd89bcBS8Dnv6UFimDSBP 2Ka8Gt5JUNFudFdUBxW0qKurQ3l5OWSOlV8FkbQsFgTd1wtBVbxy42nk7L4CGulc EVPvfB63BHHzV0Ac/1bYT/ohR4Tohi9zULEsy7JsCAXVh59vR5vL2/Wgqg/doJq+ /BD0aLa0hlpQUYj3elC1t7dr2tTiQNHRK/jn1tNIFdbdb9abqw4qTe8/akbhl5WQ 17t595HuXHVQbTtYpakyqNSmpKRAEVMUT7pSONEcf0HlSIrq35Y2KNK7PeKWt3gg PNsjPZ7C4T5P4RjYM0fAkfAqLNNf8Vj+HBHjWTXqR5YZ0Q3+giqj4JyWAQcVxagc VCcrbuDcpRrdoOpwXO6OWkEFiinZjxfsB+1aiXgaMnteIm7XPwFJx3RN9SsYLeyY OHEiCBr1Aio3NxeE4tobHFQsy7IsG0JBlbDuXwiEew8tHFQcVM8tqLxer6YHvq5G euFZrNl+DmsKz2H9ThFLTpfW3C4F1b6yb6Fcj+Y2t1iDElQFBQXIz8/Htm3boA4q OabqTz2CDB1v/HkJlOGkjCr5vODdo5AUuPMGw7Y0OtKWEB3uyhryR3fuT9CaNQiO

pIGw0q7UZwM2uVaMCXeuGvl2a2KU78nUGJ98b8nMZIMQsj3doaIdKFmKJzmo6L+R 6Zs6ut6loPoyfxGWTRuH3RvjIF+7YtxC12kMLKji/xdU4SKexiaszIAcVHRM11Qf v7VClJWVgT5DNMrBZDAYQNCoE1QfcFCxLMuybAgFFb3NTw+vtx1Hym8idbMRX+Se RtrWM1icUcZBxUH13ILK4/FArdvtxtqiCqzdUQGas27HeVAI1TU2ac5XBpXT6VRL kaS5Xm3DY635Qd2hokf65J0oeuSPoHCiYPJ52kE+udaCRWHpoMiSBOrAknFvHuxx ZQ1Fa3pUbvPMkf1tKTGR7vXDHtpmR5jtcYNifBt+1s+VMGxT6+IoOJdE4/tPR5gV QYV7p6sgq9qh0lM3qC5ebYRsdc1jOajob9oC2aGimJJVRpZsQEH10fx9FFQviXh6 N3HVBshBRcd0TfXxs02YMAFK6FyOKcWoFVQzOKhYlmVZNoSCarfhKvQwmur4Nc8c VLqUPIegonhSa7E6QMFDP5fNEEHU+KhFa77foGoyWzXXa3jQHJSgKi0tBb2MglQH lfrxvisFtaCIotCikaKJYmp22FzQKAkorLSCypUx1NeWNszlXBUF68IYkzl+1NiW Fa/3b133Rrg7/bW32xJHXHb+fTgc8dGwzY1B07SRZl/lh2aNoOozO1TqoGppPKEM KjrvLKh+F5t0DBRTNNL5s7+fmr42azvkoMrO201BFa/6+O1KSkqCHEoEnSt3pmgk NIIqlYOKZVmWZUMoqHYe/QY60HdPcVBxUP1fg8rlckFtw/0mUPAoA4h2mK7f+Y/W fGVQab4Ova7xieZ612oeas0P6g4VRZRa2pGSd6oopGTlv5miR/3kY8JbMv6l9or3 +1k+HQzb/NGwL/gpLFMHo/mvr6Bl1pD7jiUjbM7F0SKkhHOjYY+LhnWmCKrPRpnd mb+ETlDRzpK/mKI53dqhstrbuhRU+3PmgWKKRjq/e2UPTh5IoZiikc47C6pwesyP gmrKokMUVMOfBdX3VdUNkIOqqvoeBVWT6uM3pLa2FvS4n0xNTY3fHSrCZDLdlxiG YRiGCQH8BxV9ke9/2TvX4KjKM46f8UOHcdI6xZl+sHW89PKh007b8UM7FacoKl7Q onZGiSWgFEVFKwlFKYqgoOCFS7lIQO4SLkEIuRBMuCVAyIUAJsSAgQQN5LbZ3DYJ hCT8e/4zeWdOz5x3z+7ZDbLT5z/zm91sznn37CYfzm+e931eESoRqutOqDq7urHo 8wJYBWix+XNre5cnoeoIdDqO528NREWoMjMzkZ2dzQqVdsqfFYoUQ4myoqb8cWqg es701YyefPXssz74JsHK5ZQRaH/v12h6aAha4m9G+4s/RcfEW9E+/la0JtwGX8LP /b2lj+90EqoZc9JAUbJy95gV9sqUIiOcClWH2usuBKFqqt4NChUf1Wvny1NBobp4 Zpduyh9l6oanp2wtmb+qABSqBWuL2JSihk0pBqQKSqj43HCIQzVKPWezE8c1VExe Xp7f0AQSiUQikUhiPoY93C9Il/Vpx0WowhCqe+KTRaiCCNWw+BUwXKKOUwLU3d3t yL6ic7AKUGFZLeXJ6Vj+PprjeWibrq9QqfVSCjaksKydUlUqxyl+Kn35j13sSX+4 v+Xln6HlpVsQWPgH9J8bDyVWPTmj0Db5djQ/+kM0j/oR/I//GI33D0Hjg3G9ujVU 5GT6AVjZMH46pco+1W+oSVyoXf7Yxp5xESprQwqFakTBR6J+tgsVZepXpkxByRSx SFX9hBlpM02JqrEIla7bIT/XRROEiW48o6u7G4IgCIIgxDbGX8wqChtMfPhZPt5b vh9FX9VCl+KyWvAYHquYsTAH6qb37cW5fM2Rj1bn433zfaZ9lI2EN1IxfGz41ZsH n18DNsGg2O07ehZHT3wHwmlE+wvPYevuMixYexivvpeOxyatR7Ab9uEJq5A4Lwu8 0c8tqIIah48cm+/B93rgudXwKlRjp23D7KX7wMreweJqqPGPHP8WmQdPY/GGI+Ax oQoGK14vzUrD8pRC8PxDx2qgrpufYYN5zfwbsPW9EWZGv7IR7y4zrzXrK/C7VNfK 98g4UIklGwvAz8trjGZTipET1sD6P2J9ZJOD5/69XZ2nrSiR8qp6LBhoIsHHel+7 9lgeo6t4KbixtXW8huYO3bE8JpyNfdX6KVY0dG3TKU1a7DJl7/AXmPm73v66J+P8 Tw6F76Eb0fSAKUsP/ACBxXfhau0EKLHqr0pA97Z70bnyT+Dv+Ly/ZmyvTai08BhK BqXKvnYqVKFS2bh6Pjasmoejh/fohIoSZYfd/ihSVpyE6uIna4pAibKzaH0xpn2U i+kf7oQSqsLj31CqyEKTO20fKd6DUB3SClVnFwRBEARBiG14I41IovahutcUlMs9 vQg1FA5KwIszd8JwyUP/WIsvvjyFto5LCDWd3T1YtukoDFvueTYZvLlv8AUQSlrb L4GSQQFT0hOKUPX3X0VvXz/cwuPyTWl55IV12goOHyk0tfVtCCWBrh5kmhL0xOTP YbiEQsdmI6HuPXb2Oz8o4NGa8kd5C5b4pC0wGJcpeim7T4Jd+dR6px17y70KFacQ Oox3ylWorKEgUZRChcc7bey74M4UJVLajX15zP9M+av+68KO6b/1c31UYPJtaH/+ p/A/NRRNI29E48ND0Dbjl+jaMAyXtt+HK0VP4fKeR9CdMhxt8//c3zrtriO2tul2 ibKipvZRqrRCtT/nC9jhxr7p6elgli+cjrTUVdbfR3MfKtXdT8uyTaV4JnErKFNW dmUfolSdM2wZECS44Oflm/zGCBI2NREEQRAEIbYxHn9pA3qu9MFrWM0xzPDm/YrH cT5LLYGhCatNlC/3uK/5YuWm8lwTvIT7bf3ttU3QVKgiDmWJ1TAnmTxZWQcvaQtc QtL8LBiasBJECfaSvOJqNaXRs1C9aVYAg2XReouoaLryFZedx9KUo2BXPrY3VxUl 7iGVvL0IGQe/Rmtbh0NXPueugccqarF0s/N4K7cXIyv/NDo6uxy7Blozd+5cD0IV vZgVqr8HXjWFymw40THJZKIpVuNvR9uYW+EfdTN8I2+C736TETehecRP4B9xBy4M u6PLNr1tqFWoljzyAviahTjDJX8cNhp2xk1IQubOtfh4zmQs/WQa+LPDcddUqHiM TajYnEK3nur3Jv0akcobqGINMUJIINAJQRAEQRBimsiFalt2GQwzE2ZEJhecGmfY wulely73wmvYYMNa7aFMRZILDe1qqmLUhYrhHl+GJRSWSK+ZwsTrNGzhVM1Iw+mA Xqf8cappXVMHdCk7U6+O1wrVF7nlmLc6b0B+bF35zJ/5+rw1+ZQqrVBZ96faua8i pPGy8isd97WyJikpqTQxMRFTp06F+dwV89hS4zoMhcoiU3EehogjVhEzZWm2TZ5m O4gaMT6YMirDBB7J4BgPT1zHtV6uPJPwMuyMGTdZJ7obLRLl46Wa/MIIM4GOAARB EARBiGkiF6qlA9Pqps7fHXGFhtJjFaDq2hYw0RAqrjuKQlj1GjSh4pRGTi3UNAjx nKrzzTAsuW/cZ/C3dSMa4Zo6LxWq1D3l0OVKbz/X2TkKFTfdVSzeVMDpeKqS5Ah/ v2xLofU8q1CxDbYinPGs5zkKlZKIMIi7XoVKL1ODH/U9eiQuimPYc4vJLpPRJjcY HtPe0Q5BEARBEGKayNdQsZGBYWbhusOINNZKCitW0ZIfVnoobLpQKI8cPw+u08ov qQm6nsjf2gVWVzjuxLd2INqZ+PYOqAoOpSdaofAaA2EzjCiFFbRwhYoiyrVjriLs

JlRXr3IM1/A4rVCx3bUijFjP43jS/VLiKW3tbRAEQRAEIbYxOIVt3Y5SsEMcb3or qhqhS8XZRrBqwmMVT726CYaZl2fvAn+2s3HXCfAxfX+lmuKlzfxVeTAGwulkwRpO 8Fq5vorTAgmbW3BNDps3cOocP8eSzwugGi/0a26+OaXwtTkZMCzh9EW+hy483q1C xferudCClduK8cq7u8Br/NeH2Sj/pgHBMvM/ueDYiR9kIVhOVNaBXQifm76d4/Mz 8z1Dmk54rPwCGN33wb8xxY7XTLHl59CFjTeenrIZ4QgVG5nowm5xbBxiOGTp5kI0 +VrYIc4zPJ/jcLxPtxahs/syW3d7hueb44hQSTylra0NgiAIgiDENN72ofK6nxCr LuwSpwvFTrUHZxc+l6qYa1TThHeW7IUulAvDIWy2oW+WcNhVqFrbLdP3wphux0YR PG7l1uJgU/gc97hiN0JdKJjqu/W1dEKXjwfe39bMI+g1cz1WqGuoVmwpQrBM+SAz aFv23IIzaPQoVTyP5+/IOQWOt9f8Gx8oqUZnVw+rWOHC83g+u1WKUEk8hQ1JBEEQ BEGIbQx7ON1KF96wG57jftPPdTU8huu6WCnRVKdUN7yQw6qVLjmHnW+GKXeasOLm JlSUFm2lpeDEt25CRXkIW2zHvZkatKEGxZft2XXfLV9nV8Fw25tzCqFbhYot7LmP WLDplLvzzsAIkq+rGjktk2uYOM0ubHgez/+6qgEcr66hHTmmDK3YVuxpPJ7H8+sa OkSoJJ7S0uKHIAiCIAgxTZhClRmxULHy4ipUT7++GX19/S5rmKLznqyE8UaeYqXI yjvNaW4unQ3dN/ZlNUgjJ65CxevQhdMIDYeMSdzCtUl6wYtPZut37f5YgS69rHLK YJDrcRUqVqb2FmirfqyAuYry+doWnDalqqyyDl9VhA/P4/kcR43Hv39Lazda28OG 5/F8jidCJfGU5uZmCIIgCIIQ00S/QsWNWN9alIMFaw/zRtsK1zRxT6UgojIgVFM2 86Zfd+PtSaiiGH4PgypULlMOuW9X2ELV6A9JqFhFGhSh4j5evDZd5ny6X6RE8n+X Zl8zBEEQBEGIZaIoVNMXfMmmFeqm2SUuQvV6dIUqeUtRzAnV3oLvR6hGTohMqLyE km2EkLvHJKeaIExSeS40qaioQGVlJTQRyZMMany+JgiCIAiCENNER6i4F5U+0Req 4WOvUYXK+5Q/TrHzJFSqKQQbHYQrVPFJQYSqOfB9VqhUB0Kt7HHtVghCBS/ohIol 2vz8fBC/3y9CJbnmaWpshCAIgiAIMU3Ea6jUTfx1KlTuFSre53O9Vq8N9ZoDg1uh Giyh8rNJxvdXoWLFjd+JLnsOfROxUI1/c7v1PYIKFbv0lZSUQAlVaWkpXxOhklzT NDQ0QBAEQRCEmCbyClVKxknYct1N+VueUghdCk9+hyde2QhOlyPPJG5Wz51e43NW UyISqgNF12dTis5ufYUqbW+F2/WwM2HQVvPc/DlYBYt7mUUgVEqmQhKquro6UKSs 1NfXi1BJrmn4PycIgiAIQkwTeYXq2KkL0IUbuL69OBf/nJuBxHlZmPROGisVrkI1 2hScyz29YXai04cbBuuSV1wNw1O8T/kL1pjj/eSDrnLCvcIMhyS8kaqdWsdNldk2 /dEXtW3T2dJcK1QUPL0sqbbp7tLF5hRB/l8iEioVtyl/fX19KCgoACVKhc8LCwv5 u7CEatasWTAR8ZJ4CsVeEARBEISYJnKh+i975/obRRXG4fmb/As0xi8mGsXoB40E NBiIVgmigoogiAhpvCA3A5E7yv1aLkJBWhcI0i6FYu/dbi+AKL2wCLRqXvdJOMlm s2dnlp0mbvt7kifbgZnZ2ekmnV/ec97T0nXLfLy7vMb885n8gYogwpwfH3QRDEpg 9udHigYfFtsdj0BVaMFjOhgSXHy8t+KYhd0n7nlQANbH8kDDEHdviw69W7r2jAV5 PDltg926fTfk9xFtYd+5y49aMVgzbLwDVSqVMgIUOtx2Op22XMLClAKVKIf+gQGT UkopZUU7voHq01W1+fvz0B26DhUwFM/H8J37xoP39Pl7jCFs+MrcnfZ2thK2LFvh 2X74snE8w8w419MzNjGczR82On63j776yTjHC1Xb7cV3dhjD51go9+3PDtvi1bXG vCXmNZ1P9jKHK3TI3+DIPWPoIhUfpOrGe/ReHzYfDNfjfTk3YbQYicYem7XogHG9 r76/y/i9MZTPx6HTLRY8pOHagIGvAsi95Tq4rwQg7k+xayYkugpVWKACqoI+7tx9 YCw+XEqg8lAwUI2Ojlp9fb03UCUSCWMfR254UpgScdPf32dSSimlrGjLD1T1l1IG vmFmi1adIpSwLhXtsXnojxSoGPoWAR7ovef8MWfOFwEkCmN//1v0Gglmj09dHxqo gKF1I5kHhqNj/1gYhC1X1SK0sYhxlM/vwVst/GZLwiCOc7el3DC96IHq+be2FQ24 DC8sJVBRcUOH2y4QqGiRTnDyBipsb283R354UpgScdLb22tSSimlrGjLD1Sry2qZ 7g9UNFDouzFs5cBnceejmhMHDOVzgWrGx/usfPzd+5grFQcdPX9akMMT2eunuUcc LFlzuuRABet3XbRiVC05ZHEP+ctkMgSmUKlgsS/kV6QUpkScpHt6TEoppZQVbfmB 6pmZm5kTFGuXPwdd36gWxRGogKGAZULlw1OhKo/uvkHLb2JBm3MaNZQD92/Ggn0W 5PHJypNWLr80uC9Q6YGKwEyDipAQGGugampqIjCFVqiwubmZf9YwPzGu9PSkTEop pZQVbfmBCmiHHXeFyvFB9XFjyNyjQIAK8qD1ezkMjdw3N4eKoBIH7dnwwByroADM /7raftMeBeZDzcvev8DDig11NuYfihg6hys/AO4vIVBFmSfGgtFxBSoW7iUoRQ1U ODQ0ZEEeClMiTlLdKZNSSillZRvkQ5XIx94TzRZ4oHU2D/DFuPlHxuhed+TnVn/j hAKwTtSxujb76/5YSZUZ3iuAAg/yTa03XIvxkkj1D5pbB4tmEDTI4DyPQv/NEWPR YSpRQQGYT+WqOaylxZy0qEGKhXJpWBGEMG3ebqu7lGK+V+RKGm3ogwLUnG01H3Qg DApQ92uq6BwuGnu4fZ96baNVLa3x6nDbyDEc29jYSEgqyWQyqfAkxpXuri6TUkop ZWUbQP4wu3XZh3zmRuGqh69rf7gQuvDqs7O2GPuevtBlV9puWLLluvHz5gONNmdZ jVHZcUGEB+ytB5O8OukoF3p+5uxQyaLbHu/hZJtARoiiKvPS7B3eoJK7bhMNGo6c aTHW08o9Hw00Eo1p4/827mswmmtM/3CP0UI8N/DQwW9q9vNQSeNcVMBOJjqM6+Ec 7nwEOKo6LJC7cus5m7lwv6vwRIb9mVvEZyRgnkumjW6GyH2mgrjw21PGMMygRKZU bbPF2Xu78+gVY+Fhrh+5Zu4B34M3Fuw3wl3ggeYjnu9OwWGHwLWyD4Ex5xhk7SqO U6ASE5bOzk6TUkopZWVbsCLiJ3yfMo/n//UQWznE/93xH8eQv91ZrUR3B0L8T+no 6DAppZRSVrTKLkIIoUAlpZRSyvEKVI9VV1cbP/DKdiCEEEKBSkoppZSGoWEK2OA1 aqh6blZNdqjVuqJm91F5TAihQCWllFLKijY0TOUGqqihisDk6EwP2xffNRCgciRw aa6UEEKBSkoppZSVbWiYyg1UUUMVYWnN9qtWe77PRjKjBmcvDtjLc04oUAkhhAKV lFJKOWH0hil/oAoPVW5In5MwBbdu37PX59cqUAkhhAKVlFJKOSH0hil/oAoPVYQl

x8lErxGgvt502aC1a9CmvHlUgUoIMemZ7H+ApJRSyomgN0z5A1V4qCIsbdh1zQhP 0N03YoSqvcc7Db78PqlAJYSY9Ez2P0BSSinlRNAbpvyByh+qCg3523awzYAwxXbm 7pj91jmoQCWEmPRM9j9AUkoppQLVf+zdsQnCUBSG0V11C93A0loE+7iEGwhikdLC SrGwsIpXLpjC4qWw0fDOBweeLhB+jMnAoDqd79Hf7ndor9F1z/7/VHk2qCRVX+0X IABwy9/ALX/Z5faIHFHLzT6yPK+bYx4NKknVV/sFCAA8lOI9przYV5IMKgCofVB9 99h0SZJBBQAG1fCLfY0pSTKoAIDioCqPqvzCmJIkgwoAKA6q8qjKD8aUJBlUAEBx UJVHVR6MKUkyqACADx60J0kGFQBgUEmSQQUAGFSSZFABAAaVJMmgAgCDSpIkSZIk SfqbFqtdAACj5hcqSfpV0/k2AIBRM6gkyaACAAwqSTKoAACDSpLqaDJrAgAYtRf7 9WGDMBREQbBNcmgBTGzIH0OPRxmnJ81KU8QaKknq6vz+FQAQzFBJUl+n17cAgGiG SpIMFQBgqCQprOPzWwBAMkMlSYYKADBUkpTW4bEUABDNUElSV/v7UgBAMkMlSW3t bp8CAKIZKknqajd9CgBIZqgkqa3tNAoAiGaoJKmrzTQKAAhmqCSpr/V1FACQzFBJ UlvryygAIJmhkqTGoZoLAIhmqCTJUAEAhkqSwlpd5gIAghkqSTJUAIChkiRDBQD8 2a8DGgAAAARh9k9NEM/2EBgqSTJUAIChkiQZKgAwVJIkQwUAGCpJMlQAgKGSJEMF ABgqSTJUAIChkiQZKgAwVJIkQwUAGCpJMlQAgKGSJEMFABgqSZKhAgBDJUkyVABw b5IkQwUAGCpJMlQAgKGSJEMFABgqSZKhAgBDJUkyVACAoZIkQwUAxK4dmwAMQlEU daSM4Cg26R0rKziSA9jnF78SQtLnHLgIbvBQgwrAoJIkSQYVgEElSZIMKgAMKkmS DCoADCpJkmRQARhUkiTJoAIwqCRJkkEFgEElSZJBBQAAAAAAAAAAAAAAAAAAAAAA AAD/dF5Hi0a08mwFAACAT2NqRj2qeU6jCgAA4EW+SPXtrkejAAAA8Cy/+dXtrkar AAAA4IUKAADgZu+OTQAAYSAAZv+NHCyFlaYQC0GshTv4whGekGiHCgAAwJU/AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwsS8AAMB3ZapXxk69lSoAAICHNZEa lTMtAAAAKPdClZdClQEAAIAJFQAAgB0qAAAAV/4AAAAAAACY7NxBDQBACAPBE1z/ X1DQIOBmXGxIAQAAAAAAAAAAAPhLknkAAAA0PaYEFQAAQNVjSlABAAAckoyYAgAA qO5rlJgCAAAorqASUwAAADZTAAAAXqQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ACx7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qgo7d3ADAAjDQIz9lw4ZgcIP2VucqhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAPhMagEAADCTElQAAABDKUEFAABwEE9iCgAA4OEaJaYAAAAug0pMAQAA2EwB AAB4kQ4AAAAAAMBuDw4IAAAAAIT8f92QAAAAwEuI7TdfZOCIqAAAAABJRU5ErkJg gg== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yA/r/CoiMBWx8lL7.png Content-Transfer-Encoding: Base64 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 AAAAAElFTkSuQmCC ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/gif Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yb/r/ALnh3ly4npU.gif Content-Transfer-Encoding: Base64 R0lGODlhCQAGAJEDAL7H2u3t7f///////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0 IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUg WE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAw ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3Jn LzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJk ZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu MC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0v

IiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBl L1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3Ag Q1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMEU5NDdB NjhCREExMUUwOTgyNkYzNDdEQThENzdEQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1w LmRpZDoyMEU5NDdBNzhCREExMUUwOTgyNkYzNDdEQThENzdEQiI+IDx4bXBNTTpE ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwRTk0N0E0OEJE QTExRTA5ODI2RjM0N0RBOEQ3N0RCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlk OjIwRTk0N0E1OEJEQTExRTA5ODI2RjM0N0RBOEQ3N0RCIi8+IDwvcmRmOkRlc2Ny aXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJy Ij8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU 09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWk o6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0 c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVE Q0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUU ExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAwAsAAAAAAkABgAAAg+cB6cQuSHa YaJKWi3OtgAAOw== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png Content-Transfer-Encoding: Base64 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 AAAAAAAAAAAAAAAAAAAAAIAfqdOcS1MBAADwLHVL7qf9NvEXUwAAACXNsF5iKm4x BQAA8FY7bmdMxRZTAAAAX4kpAAAAAAAAAAAAAACAgz04EAAAAAAA8n9tBFVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT07xgEICKIA6nyuQaHUikSl dgEXkChUzuUIa6kkJEuneC/5mczc4GcAAAAAAAAAAAAAAAAAAAAAAPiNvBxDKhkA AADPimYK7bDeEu/KFAAAQErVzdu1TB17BgAAwDt1v5xlKk6fKQAAgK+UKQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVV

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 2rV7FYRhMAyjuf/rUjd1qINUEKmg1W66+DPEfnbxAlKKcA48Q67gJSEAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAD8i8X6mB/PdwaA0mJfYmdS73S95apu+3OTZ8uD JElFil2JfYmdSVOo6kve7Np+9F4ZAEqJXYl9iZ0Z9qaNs0c8AIo/3g170+Y0he2+ +47dfBUvhpIklSl2JfYldmb4EdG4TAEw4o+IJqcpnLt7jJ0kSaMUO5MAAAAAAH59 AEpMuOfh2giUAAAAAElFTkSuQmCC ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png Content-Transfer-Encoding: Base64 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 vDGokZGFM5Nxjg7S2cpWktKOg2eI+7yVeoEbdvtE7DxApwvPUFxSEZ06XUHVV2qo vr6BGpua6MbNJqpvuMZttXS6tILiDhfR6SITQQe62j7rikTLoROXKTb1Ana4kF+r R1lKy4zHeUuFRE+l3pZNm0056YfpUlk+VV84RXVXztLe+CSKPZhMba311Harnssp oq2++hzVXDxFl88WUC7rQPdnzm+lICfd7RSiN6+luvNJdO1iKt24kkXNdSdp3KRZ Ardbyul2a7lcb6k/STeqs+napTTWOUzQ/ZmjrRTwPj5yJS7XdWBTUTPvmNFPqXdw 61Jqq95L5ppYul1/iO42ptCW1TMF7rfm0oPWPKnOfceog2XMtXFC52iUQZvM2MUx Vrtl3HnQjTfSAfnN9C2xRdhKwaDUS4uYSY9vRJBA0w7qbI6mprJQxgZ62sb7ZZkP oizaOluiWWanLJ8TPVebDM7WRsJFWzue8L/xNeyWISClA8criOWMSr2ciHHUazaS DHEQIh/QjI1DO7YCXN6CNu7bYCULXe3z2dccImV69fp7bNsByPUdB05h+wSQ0Tqf UIblxjoKX/ob8hnYD0AZbVYy0NHdRBTnsuul7p6X1HjrAX3tF08s5621iajyQonB A2jr/N8qgTapX3U+oUbiLRJMR7MvWO0HgvTtoy5x8MK67SeIZczObCKaHTGKTsVM pIspM6jquA/Koq27OUj0Q9buJqK8VUI/PkK/lrcnJGUCGYD7iGU8Iau3iSg2CHXL JqJIfDC8kaFJBu2SXB9vIipvpWBgaJLhdnlY/9Y2EXW8u7o7bLj94GZ32HDrwc3u sOG2g5vdbEN9cHOcEL5wzJdunAmXd1e/YdpGF1JXaB7crLbR0x5NV/O/odbz4djt wOrw59bybdy3hnpux6hs6OyuXpVpoPSwMXwUSba8u/rLh/l0PMybqk6s1NpdXbbx 8Gqo2Aq+ImUJdZmTbHZof9Z+lMoOLRQyj+o2yTZsdle/WWrARvdsaBF13YrH3vPS 7upczqautgPct1jINJeukndXV9ooiZlCzaY1GD0e4RS1DTw7eG5YZh3LTpVtuO3g

ZrWNhlPL6X59GD1o2EbXTMGSDS6H0INrO7hvC8sYVDY0Dm6uL15I39YG0n0e7obT /vLu6g2l/nS/bgO3B7HMIquDm9U2yo5Mpj2GjwTOJvtINrg8m9v+ALDMFJUNjYOb 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 KO3q3x87R4qyKIfeJSF86ePTm4cekYHtrgMXdbsOXFA5IEOmoIHUOniYhK0+3lZl 6GHnlEzlnrNEn99Qy4ogO3RuUv7SzccAPi+Br4NoOmdBKhhC9mAlZXz/Nyr+9Rc6 3FdlB8ihhx3sndzuTxE2ftm0LSCWdLIN35RDSCDIyNhei/AuCAm2Otg7JFNQ0UrY rm0MtEPnJuU3bD9JbeceiHn2kyp0ROZi5AQJHpNZV3KUsN3ZFmgLiCWdLRn4uSJz LjRCgsdklm88RNieVvezBcSSzpYM/ORkbtVEyyF/FYOtzikZ3NxQNxbn2gJiSWdL Bn6uWubk8FESPG6Z+asbUbfDsaHPV3IA5O3IwM8VmZZBQyV4TGbWb7USGRew+0gL +wmuyBwLHCDBYzJT02oIW8eB4U6JQIcN3yQFUtbsobj0Go0LMvJrjOdkJi6oJE83 tgUMDBV8XZExefeR0C0y+O6Suw02sJUc3ZCRDYp0i4yOQR5C53pivATcgyTY6mD/ TQ8L6hjUCXU33aUbKID81xDx4hFa8Z13mEUCYt0komUYDmcOJwB5yDyu4AHPFHuY 6asDMmf3MfJiKJEMSJUl9zFBDhsPiKhq5wTS2U1j6UHDJEDMQwadS+fbS3yVPDvM 8iR7BL0u0dDzXDXP+Q2hqq1RVFMVRY2rgyETdbCBLXzcHB4zt4h09iAP2f9m78u/ okjSdv+F+uX+zj33zjm3Z+7MMDPirl3a3bbtCqK4QykoqCgFjYoKSiGgAlqIG+JS 7htqieIulCsiLuW+a7lrt0qq7dbq9HvfJ44VNysrM6uYj+nzeb+b5zwnI973eTOe ityiIiMjzXYXBm5Zbue1U35ZN4KoZhp9qs6kt+sT6bf9OcgDSMMGn8iDixjEmgiy QcD1miTAL8a8Vq9O492yoA/R3iyBdxsS6eO2VKTVgA0+mUcMYo22u2xke8eqqd9R 6vxuAkjDZkCXg7e8byuT6bdd6QJvVvSnksRvkFYDNvhkHjGINTkBfNmre1LOnljx 5XGkYTMV453cjn7bPlqiPq8bTe7bls44B0ob0rDBp+Yi1kCIbXBWR34rsFcAYDOd madhIovZmiixNf1bWjWmM7kzv5c2pGGDT81FrIEYT/KCb/BGIA5erAVgg8/49Y1s Ht1cOUTgnzxW5mV5D6R1ofUdG9+edIRY+41rS+lV3wUAz5ywhs9oLCDGS8lB6Dsm fY8JqM0AjuQjVkeMe/i8DqLwsW5rEOADB1y91xYVvCeAjV+fG80jo1ubAhxwEYNY vav2yA3tKGWzBA5gmYYPHHD1Xlt03y/rJX9tfV5XWpD4tR7gkzzEIFYjxoVbR9Im 0WTAWkJtAwfcIDFVY9pb92VY6dfPtfN8cTTd44JulPamy7N7AUjDBh84gosYxGrE 4PaBLjdTgAOu0bAk1/5MHjhcHkOfePTZrdnd6cUy+eIL0rDBJzjgIsZk8A+AY8z/ ThTS0h5yUBAu1Qwfg8wBTnjjprRivti2FLo0LAwHQ2GQDnzwgwd+iGkzrTxWwrOZ x0v4gTzs4QrxlreKovo+fen8gMFBgH1Z29b0WaxhE2J9ZKRtW/v2dDlzPL9WtJjn rllKzyqW0pWsSbStQweCP5QYz1IWciY6NiTcnToJQXo1tBrjKqKi6GFxCSbQEVPG vKrcImaGUlbz40WehAl+8IyE2Er+8if0LIWNihZ/hyA74jWDM9ynklPoKRfa6FoJ IZi3Rkwb83JjJT1f5qIzY8cReEZi3JtataKj1m/oSvY0fqV+VUjsyUiHmKD2ydK/ /Jke5c+gn0rLxK5R1qzlWqmEEDFF1bPFFfTT7FICL0gIfwMOxwrt52FKB3gcVVOW grYttWIwdyfdz5lGjwpniYFkTxcuYgFLADHl0E9zSsXYLvD0xHjXpabQbSYXtvw7 vXr+PCwhb9++JY7VXvgwdyfdyRhP9yfn0EPHdBY1kx7PLGYUCREPcvPoHk8oCV7w 1XfVSlnA+frj4otn9KCBqH4+HuFgDajz8IMHMUEtvdL//ZVyMXEk+cba6U56Jt0d n0X3Jk4WuJs5UdgujUgm8PRqRmwYC74fiCUcMVgQq90ez8np2tm9u+mQF/jB0xNj Y5AfYnnzFIUaAX4jMRj2YsG8nP6hKlrADj94ptca/norypCCUAP3a1y4t4g1PT4L u6SAbzD0JbLoL39SdvXuFSAEedjhD3kVXrt2ra+xsZHCWfBZP/CNtuX44x8ic7/6 g5tBKrhhD+vexF9ddOBLef6lbn817VizRILz0gce+CE/afzf/nskw25KMvsQZm1t LZkt8INnULiN4WBEqGxOkW/qUlhYaMnLy/Py11zFNwXVC/Kwww+eTg2gUCvDwnAx ouHDmvGvvyk4adIkG76uOGHCBPIDedhNdkeExuaAKIhE/ktf5NfzHAyFQQDSwrY0 yoI0YNDUjGC4GD4GaaDAB05YInhSLAu+Bejc/D09bkimO2fG0p76VCquTfR/K1D5 vCYdIZEocFpcO1qb2hnXpwDAlj+wvRAFbqjJsmxDF0X5yreI7nVata0XJS1rT2PX dqH8PUPFEO70DT9gWigxkZZGiIXhKxvWEQWbYlHS135BFqMvoLkmu6x04bBNCBG1 UZNIEzdHy2+q5FT1F4Ic1YOQ92rE2NFTYSaiZlpvmQYXMTqTZfGGlnWiF6fHCCEe nnxv7Iou+FChKDx/91BKmN+GhsxtKT5YWMQ9URzj04jx4BcbCTmUz5M/bpwg80uS rYQY7TdVLPylPOXRiWSIERgxty2+iGjjSbE8IxZZac7BZPHFRM5TfGkbkR9V8Q1x

XLRKDLpMdIXUzeLZB484AVk74Ab9lxo0q6WthIctiSdnHhtt2tIHk2HJ2zun7Unz WZAnmSasiybmiy8mZm/tj7RL+4ft7PxEurZ8rMTLPQUBd/y3tUUQp/vHDp9vdNfu HEjAzSNJNNbZEZNhRWom03ImL/hWCBrKo4uS5lppxh4bcaxP/To1dhMEoFAzgAMu YnCaqz/w4r15OImKK7oS1tz361W9uBfNfgfAdpq2dRCNXxUDDo4lsZZ/2tK+oZpi USv8euIc/8gjKUCdBwdcxATUDGbBxi4aNr0tbVwfS5x3qnye4cWdKH1pT8pcGUNT NvYX35NEzPTtQ8VaNSEKdkm4NYPdFTxRStzkVvSoLpmwnrWgK9Y21RuE0Zz3wBc/ vSOlLugGMSKdVzVUxKinisEB+njrFG3BWoHggBs8hUy/Ca3p3L5hhPXUki5YWw2+ lxLJPlcaz4KRyrOm5G2LB1ctxoWDV4rQCEDhahu4iAl8IS+jtVK3YyjxGvDxG4BG bVNwrYmF39GPFTGU544HXy3GwvDgeoLCTi4cTYvSeSDGqF4A0rAJHzjgIkY7B5Vn vSuWsA53zqqMchbDz6aR1vpRiKyhIMga0S+L559yZk/vQrzWEoz4lLGwDzk2xyNG T4yF4T05Jx4HacD1BTb4wNHf+Ah+NWxEG4URVgOIeZQ+n8VUxhPSsBkIcjAUBgFI wyaEfJELvq5p8sVEN/wmsU4N36ny2RiKqpFlCyXExdNz4I6qe8ODHX7w9IRwo0re LLFGHnZGBF/6ZYMLa82tQHdjIIeCLEQTL4XsmdQNQB48wIGJUdTbQB52PSFQbtQE 8Bcg08yTv0xz15Z3agbyfp5jRWaM8D3bkSuwaVKsoRinVK4PbEjvlzk1YtTXFORl zZSN6RXgQ95IjHfFqE5mrTRcznHBkjbwEadu6eGYur06HYVhLVtzDCuDakrHwCfW yMOuJ8aozaq+n0AQhOn2euMMubgik44XlNLJWSvFGnnYgd3r0wI/+L12qPCZiUGh oaArZvLAzvBBiATn5b2pvm4aRAQA8aHEaBtGWpvkpvdqra6ZIDHXNuTQsz0zBapq MtVCwDUVgzMmnJoBT283kRA6doaE3wbgY99NEaO+sQE4PXHc6DWqpRiTmoFfAmJU w15MxSi4dsiDNQQuLk4h8BGn+eiunhjHZ79ajOnZ5PGf2nywoUBcmCBOgvPygFSd 2h7VNhzhiFGvDW8FsxM6yr+ddeXpsgZgwxp52OGHDf+pEaf50y946jXsTRUTLQqR V1Z5gQLUFyr4pWjEqbejJwb2poiRuwqEJsCjd+xpxChqn0YMfF/A8j/a2iwMO8PD IAN4wAFXG1/Yr4WTQQxPQb8Whj1T8DHHCy5i9ITYGErbPtnUa+R8GjphXdCQONjg AwdcxAS8wNm3BWE5Ub2OOO2b3rdFkGDY4AMHC2KChPy1yzgamLFKK0AOUdLawUWM WlAexGD5+JH2umZTXmzwV6dhgw8cLHk6YhQ9IZkFq43ESEGIlcN4Y4UYnpuojt69 aKSZ8Z2IbXJ3IQ0bfODwwn6NmD91HqVbGLBmRSlg5IcYubGpfVr4HvuuiYI+3vbR 1nm5xLYAwAYfOOAiRlsz8hhJmLCG+iVNpx5xKdS192A1YIMPHHkMqcVkx7RwbCnD 24SXuUvkMF09uguzn8o7PNKwwQcOuIjRinHhoCyamEUDenYlq9VqCnDARQxi5ds7 MS0sk6OjlIeXz5H4Gs2WhUGNNdjgAwdcxASd0sNi+/r87dzK2WmUNChaKwI2+GRb GDHaUzwrOspTmTucLqwpAkcX8IEDrtHstwp6IsPtdQIXMdrtTOgdZdjBCKht4OoI aXqvE7jaXqfMXlERDL12NPgA0tIOrlHNoLGNZkKoXidwdHudsGT0lGJkDYKratBL P7ia8ObrdUrrERVh7xFFlWnfwKe+ewek4QMHXMTIDTRnr9M43nhGr5a0eMTX6ias bnMVHHARIzfQnL1Oqd1bkpubops+14x/OwfbtwfU8bQutbPgIkZuoDl7nUZ3a+mZ N7yj/C9eMKg91cyVDTSkYZP/58FFjNxAc/Y6pXRrGZnCj3gY9BkuhkeV98CmyvsQ 8yX1XMnHesp/5JEehkExHAwP8Dkddk3Ix3rbF6bRL9dX0qcHGyWQhx1+8ExERKDw or/9mcrbtaaVnb4GRBo2+MAJR4z36MYp9OneWkPAD56JEKW6Vy+6kDSSavvJqV+Q Fjb4wAHXTEh0SVo0fbq7MiTAA19HjAeFofCDcf3p8ogUKQZp2JAGB1zTzsWj6yfQ pzvLBH45X4a1LsADXyPEWhr1d1n4/thYsa7q0QMIsAHgIsZIjO+nUyX00beYXp2b Qy9qZyCtC/DA14hxbO32g3q3aMVIGwAuYozEiO+pvLtSSk/3OcSFqrGuEDZdgK8V s69PH1HQnXQ7nUkfQU9mTialwgEgDRt8YYq5WRrwvAi3/btV4+mVdwZ8Au8ulmAd JCb/b//LWdq5HeX07oRYU4ADLmKMxdwo0eu5QlNA2iAWvMmDOwV0vbrTvlGOL7RT ekz7kA00cM4tn0CIMRZzbSbIIQEe+NoG2v1tebJLxQTgoGtNNtD0xVzND6vnCjzw dRpo6DYJ1UADx7CBBiF2hvjizG+n55j+KvjBAx9xzdlAgxCLvU9bmjT4a/LtT6OP 5/NMe67gBw98xDVnA03uoidH0ujDxSzArOdKcsBHXHM20OQF74hrKH24kElYm/Vc aXi+Zmugae/WDGoCFMT9v/9YcMyYMRaGneFlkAm84IH/7xISyfC5XC66cOECvXnz RuLVq1d07949evDgAYZQCj944CMuxGd0PBrYGZZQYjx79+4NEIGCHz9+THfv3iVF UYLsbrebEKezLeuy9Bjv2eUT6Vn9RonHh1bSYWcKLU+P9k0amxhtJiZAyM8//4zR iljr2p89eybyiNPsZgwqpPrqVUR3j+pi36YlBA64iDESgxpATeCXowZgU9uxu2RN 6YhxOZ1OEmOKbx0wBTjgIkZXDI4JFIZjRF0bj3zXpV1zDGnFoBABulZtBslDjJ4Y 3+XLlwNEvHhyn66459EJZzLWyAf4wUecrphLW8wgeZmZmTpikpMcy0pnyoLu1e+m UwvsECLBedglB3zEqcUc2i0KIjq31hTggIsY3bt2WUp3OlVTTedW5cmGkEqMtMEP Hvjqu3bhuKG45KMg7s1cJPl0ehkQkAcHtwjE6Ilxlaf2psKE71BwSIAHPuL8jSv3 j9+TbDqcWGgG2ZRADGK1Yhz4pVVTeSK/4iRZKBP9kDb4wQMfcep+QdQMCgrVuEIr AFzE6P6/HtuzDe3Oi5eFVk4eINa1eXEBeQA88BGnEuNAOwUFh2pcYQ0uYgKEaIeU bJokChW7IXdwZwnkYYffaMgJfqn/iX/9vOSgxhVs8IEDbsixM5oaAvRqxGpwP7Lj F2MXNO7MC2pYwQYfOOCaaZE1hALXjO8XIAR52EMNwkHV47n3KWcCmqoBgA0+cJo6 usijfQwIexO+vufUuWs71WfPF9fIima4GaSBG77fs6XnnjZtGu3cuZOuXLkSgO3b txN84ID77xbjKSsrQ0vOFOCAG+ZxY2c4AKRhC0eILT8/n86ePRuAmpoaIMgOLmJM hNj3TO6mqMdpIQ0bfKHEeHHzOnXqVAA2rKwAguzgIsZACK7E6uHZ8r+66hrjMBND J06cCABqZL+rAEA6yI8YHSGRqAFc+lX/SJFHt4q8LYADrq4YvBRz7NgxCY/HQ+Wz ZY8E0rCpORADRGjEuPyFAqrnUqT+ywsOuIY1c+jQIYGqqipaNHs6vT08VwZzGjb4

JA8xOv8iFX+tmAEccBGje8zgvxBeotpdnk0LEtrQmUWjZTDSsNW68gQHXMRoxHj9 HQThAFzE6Ilx7KzIpZM120JuBJxdzE0dM2alRozkcDcaxAPSJvPBo9osumLq921R k3GrB9Q2cPxiHPpiwgdidP/eZqaPk8cJn4LyAGQgLdeNNU6ayNxxHKPtl5HCwwC4 iDE8iBmyYNWjX6SlmPTUVNQKpeGWoDmtGT70wWiGTErABh844CLGVMz1qiJ1MxGQ 1w34IERwVWK0B7L/9F4xaaAUgrTqtPaGugo7GYTdhbNGe2rDBh844GrjtTWEs0Xb cwWbrJFw7lEMB8PFUBgEIA0bfCb3JO01x6nTc+X8Ige0Y3peC8PO8DJIAy984BjE 2gHVdA4+s6kc/HwjIZEocFd+T3q0N42eMD6cnQogLWzbcn4QosDViadVaR1pVte/ KOt6W+lchk08Pbk/VQBpYVvRvZ3ggIsYoxrxnXP1p18bxgk8qU7STYMDLmK0Yn5p GEPHJg6gxrVp9P5UGt3LGkdvPGkA0rDBBw64hmIcu3L5G29HEyQebxtIj6sGAUgH +MBFjGYbHl+1DQUKfDgv1+q09IOLGD0xvqfbe9B7T7TEo809ddMAuIhRb6Oo+1/d +xP7mr5O/ygvS6bBRYxWSASDHm34NgC3XbppCcQgVvUkznsqwWYq5OMBp8yDixit GA/mFm/qZ9UQg1iVGEMheCT4z8Nl4uL3y9pCaQ+a83VBfAu6tOibfwmI1YhBDeCZ pMSvu2drb5Kw64vBuV7Fw9aaOuYKMerrhP8xMn45eCbb0Ipp/jFX+X/+CgWgINN4 tRgMR2jmMVdyN+mJQS0ChrupucdcQYjdL+ZB9nhwcOZoakTawJFiENusY66wi1Dl /lPbtyILB676uoI0bPDJUxsxiG3WMVf4hecTR8iCF37fht7VzsbpLM8qTsMGn+Qh BrHNOuYKd2P/0AOsOS8KVaoL5TaQhg0+DdfXjGOu5CgihUFNBGK+oHFX/JAikjuI PFevXiU/kIfdPFJOPOBgeBmkAWzwhdf05P6X6IsXL9LTp0/p118/0IcPAiIPO/zg mfUlY7qFMKZiMG9LHz9+3NLQ0KC8ePFCCPjIA88/ffpEHxkfOI0ZfOAHT08IXmvU EaErClxTQUeOHLHz7uAa+RWFCyH//Oc/AaQhkHfXVQJP21WredswJMBFjGF37oED Bxy3b98WYnr80J16dOtOv/32G9aAEHjjxg0CTyPGrT8Ng3yn0myyCreuGO7ldFy/ fp2ePPmJXCtW8vQuq/BwFGtA1AxqDjyNGLNXHgGt3Xxqu8rKSsuWLVs8589foPfv 3+PgRU3guAFYyEfUmOjxBA98fyzejdMUou2tQjo8MWvWrLGsW7fOe+JEgzhI3717 RxWLF1P7Nu384HwFROKBKQ5iAh9x/oEd/IqR7CTQmQ8CkM0UcMBFTNDgDp5tx3X0 6DF+fPyaXuMZJM/u9fDhIyoqKqGpU3PF+tGjR/SWRb5585Zev34j+vUQp54XYsfE H8JtE4Gr/1n+xVwLT/nYeMTPsx8/eYLCUKgQ9fbtOwBpYbt3/z49f97Ix9Jz4ji5 MX4JS7YCQ/VcgQcgJugWg17vau6ix/rw4cP0ih+w//L6NUShprAGhG358uXgKfv2 76fy8nL1JBVymoUQNSM5iAmqmZKSEg9QXFzsQAfiy5ev6OWrV3x8/AJhgEg/ePiQ mOP7HOMG5BxHsW28dQvlLgoJcBFjeNHjbnjnwYOHiC/B9OLFS3rxEngFiPTmLVuo oKAAp7XR649yMLtBzxV88qJn+CpadnZ2RE5OjuK7c4eeNyrUqAAvSPkMnPLw5+bm WkJNi1mT39+o5wo+s2uM7CW35hcU0KVLl8XB+YwP0ueMW7d9ojOa/UpWVlak2bgt HAN4vxJnyR5HXFADDTb4wAHX9CW99PR0R1pamo9BKih2u92VkZFh9nhGvtQJUYzo z40xH4MApGGDDxz5wucXswxb1yJ62PoW7uEbWpAasMEXKp4nls1mENamPrPFtjLK Ylvdwp1a2YlKPCNp1alcWnMmn9YyVp/O43mKUii1sjOBA66JGPLD1Ge2JCyP8kx0 9xYiNpydRVvPl1LVxfm0/dICcl8oo8pzJUJc1rYYAvffVjM8m5dt3LoutOLkVNp4 tkiI2HN1GdXcWEO1N9bSvmsrqPpyOW0+P4fWnJ5Oaeu/J8SEqJ1IHXskfKFm/vKW HEgWu2PLeSfturKEPDfX0/E726nh3k46fLuS9rKgbRfn0XrvDHLWjiHEGAixjdrS 3jexugdN3tU7ALDBB46hmCFlLamifgLEiF+/80qFqJFjPjcL4gdetzbS3qvLpZhl DZMJMTpCnJN3RdOiunRa3pDNx1sBbTpbTJvOFdM6TrtO5rAvg8ABV79a53eg0UU9 qEv/v1JKbi/acLKEa6dC7J7911eKXVZ52kmjcnvT98xJLe6FSbloiDPwVZHh61vQ vKOp/MPG08pT02iDdyZtvTAXxxzv/lnieFxSP5HmHRtL4OqKwURaWa44svb+SqBn QhQtP5TLGyoVG3MdzqNeCS2lfxJ3vyIm6IxcEUVlR8aAI5HpHAAE2MqOjiFwdcVg 8qyi/UnUe0SUDIhNbotfh1+DtLSDAy5iAo67+Tz1XXkUzdxvo/gpncDlmv4LFW8f DSANG3yCAy5itFow8ZYra11fmrFzOHWL/5sseMqKQYDMwwcOuIjRTPbmxURuKUs7 U+nhUZhuATXAu20swOlU2OATHHAREySmf04ra3xBB0EuOTBSqP8u7s80alY3AGnY 4BMccBETMOFbUUtiRPPEb+7RFTwtzKYhNCKvK6YUApAWNvjAARcxg2bqvKIUl9Xa M2V9fxRmCnDADdrV+a1o4PRWdt59Fl67Bue2wyxhMg7phMKOBB844IqYwlbBu6pf ZmvrkJyONLs2WQQn5XelVt/+AUAaNuEDB1zEaKY1c3BtUf/sVk6eOczCaRunfZwm AGnY4AMHXMQYXm/62ls7E/O/E4XmVg6lDj2+ApAWtoRpnQgc/WjUbis7zxSm8Mxg XiMOfOCAG3pSrdTWrvgpncmxJV5WMdKwwRdiQq5IFutgkBEHPnDADasZwbPu2/ok t/ExCEAatpA/ZHQb+gyPCcfj5/3nbkytS8x2rk/KoXWJOWE3AcFFDGINer6s3EHg 4h4vhUEqKLDDr7vh1cMmK56cBcRr3yrbpJDdW+CAixjEqn1nzpyxcM+WmwvDEG/8 Ew3o/cJ/+J+5Bwx+8MAP/J8dP1HMiLLjx2JyxU/0Lh86we6Kn+CGXQ3Y4AOnOrOY ThatEnb1tniQjxf9N/hP/v79r7q9XxCHDgTwwA+cxHxwphBzpnQd1TrKaUvaDKpx LCLvokq6sHQbINK1eeW01T6DaqcvJm/ZBiEGsapeLwd3l+A/OdfAe9Per/fsQy2B jzgpZvGAdF8tVznEnFu0mc4t3kIXXdvp8trddHXDPrq6cZ9IX1yxg85XbGX/ViHG M3UhIVbV66Xgf5YQ816IQa1ABHq/AIiBQPiE4MZGhRAnxSyIGxe9dEgmHclfQmcX bKILy6voyro9dH1rLd2sPkI3dx6h624PXVm/ly4u305nF1bS0cJltHTIeEKsqtcL HQOip0LWzAdRM7BBFHYVaga7UHavIC6wFyJ2jGdp4iRak56PWuEa2Us3qg7R7b3H ybfvON3Yfgg1JGpnTUY+LWMuYgK+Hr11K/p3ML4cBal7v9C3E9D7hZrDwY0eDo7T PI2LTqH6mS5akzadEtt2o1nx48gzbw0LOijgmb8GNuFbY8+n+lkrCDEB3zhYv155

3tiIrhM+Do7Spk2baFNlJfl8d0Tfzx3+D1/JediPHj2KWhHvLyAuQIwzZpQ4iE/P WUtlCT9S3B/b05yEdBwrAlNjhgvbPNuPdMa5TnCLe46gop4j5O1/5cqVLj5VqZ6H zXHngAQfE6glrAPs6LLzer2EuAAxxb1GogCBRfGZNPxv39LipCw6V74FQBo2+HAW Cd6M7sNJ0/sViY4kdK+hEwlYtmwZ3b9/HzWBNfJ+H/PqCHzEBc4L0zWB6gqWiUKO 5S+lJQkTqI4P0lOz19BpBtKwwQcOuIjR9H459u8/IHowuIYYXlz4MB8+hl/y+hTn n9IZrxd+0cuxn2sLcQFicr8b4nanzUBBEq6UbDqcVwEgHeADFzHqbaDXi0c6oqMJ HUuy92vfvn3YFVij9ws2+ERnVE1NLSEuQEzON4OshVztdQVLZYGLh0+gbv/zH9Tn j22RlnZwwEWMehvcoxW9iKv/zt276GQy7P2CDb67d++J3YW44HnHrXHOmT2TqC5f CNIFfOCAq3ff4vHCdvRuMWTvF3YXer6whkjYsNvAA9/wJji+Q6xzWpchtCl1eoAo pGGDD5xQN1NMnr6tqop7vW7T6dNnCKf8aT5O0AsGO/xhNQ8y2sVYM9pGu9PbRpMa sMEX1jYyMizo7UKvl0Ev2Bc27spqtUYyfAwyAfym7VdNvx3gYViaIsSiFtKzZ0/1 yHrktYIsRkLwlM0/C51qUjdPU8TYGBSmGMBm1AWLx36aidDV07MCllBi3E0Uo/cE DU9X5KMeHkzqH8spO6Y3ORKQdoYSQ00UQ2Zi1I96kBY96LNGYJJIpD2/ixj0enPv N3aPnJV9x6SeeK8fr9LjNWuIcf3bxeDgRaGYYxyPce6UZojxNqenDkcNCTGY35N5 1t9DjIJJB94enCMK/nlOthgz89I1nS7OzEDtyGfZv4cY1IAcewMhmJQCojAqBP5w T20vg5oAr17NcK3IZ023106FCIG9Nvnme1hi7AwaENNdTDsmJqTYLR7RYI087MIP Hvg6YpxcK1LMicmjpZgro8Zgpgzz3aQdWRTqGSP84JmMEHExfOO6t4WAgIGD3uRk gh28cMTYcLHSvMaBtbTBD16o+QIOJgYOrRRn0/xpVNDnW6OzyXxA+pLMOAmVOG8o IVXxAyEgADiIMe6qOFG+JhuWmEjV+5ASyMNuNhjdQIg8Zi4tyyKc+vJxYBPe9nMz SAXkQz0aVEJM3QBIMV/+ojdsEuv/L6YpYq4nJTuuj0ihz/BdSxwZCSAt7cxpNjGA npgrtsToq8OSKAC2RAXQ2sEN5zOQVqzNeHpCLg6Ot1wakqBcGmojPy5roPaBixij AhwYgbqhy7c0t+U/DKcLg1A9MRcGDHZcGDiE1Lg4aGgAtH7E6BXgwrDrq8mj1HNQ RevUErhurZizfftHMJSz/QaQH+eAuIGBgE8FxCA2QIgYFpuVLifMwjhd/VqSx0xg /290rJdBAjF9fd4+/WxCZGycjeH4DGGDDxzJ51i5If/YXYxevjfxRzGAWKeWrBox QQffye69rCd79HYAnLYxLDqcCIZdxQu8tUBIQBNh0zRtLaFwW6iD+sQPPSgAXbsr DFf9990iAKRh1yJgI1oh2loK56DGcvy7rgqDmghFT4wUohZ3d3GW4e7SLsc6f+dg UBPhCBIDIWHuLtO79pGOnTwMChPBrUUpxHx3hXUvOtT+a8uhdh1dDAoBF7hBG3hb M1vRE6K2eUtGyzduwlk8rdtZPa3aumtbtSU1YIPPMJALszIUMyFy4Pl/6aVh2DDn yWHDCOC0D1DlneFs48A/WkYziKEwIn6e2c7GIIbCCK+G6+LjbWftdnq9ew+Jiagr KgCkhQ0+cExEWBhuhu8C3xj5KgtB3jP9Wisfb1XS22PFEORjeEKKOjJ4sONB+WIU rotbJbOJOS5tHG/YwrB641p7Lk9OoVvZ6XQzZQwaUfRs33y6U55Nnx5X0wceNvXm SCG9rplGEGQq5uCAAY6r+QWGYuADR0eMV3H1p4fTO9Gnh1vozfFldG/yBHqQN4le Ha+ATX65HOnXB6ZAjNtUTE1cXIRnyBD6ZdfuICGwwQeOjhj6dH9dEN4cK6f7c7OQ lmKQfr64N8ToH38Lh7WLnhEX5cMs+4B7SopWDGzwAf5Z+6PVNfPKncxTr7pkoUif GhyDtRYssoBujtMZfluR1MGa3y+KHLEtAnByQZEUgjRsOrB+FqO8P1PI89KXSzFI N27lifivldGD5T+K/OtDfFV3TKBzw/rTwbYdcHAH7vLiQa29Mwa2pWl9Wkj48w0s AlDbfZXZ0j+9X5RX3FKmt+MXPaeQr2w0TzA6l345XijWv57DGvkCetMwi17tla8t +s+0wJNhWmwUJrSXWJDchWpnJyEdgBKblR5vF1P/YI28sItLQpdWzmOdvhWN7nen CqlxSza95V3x8XqRrCmkGzdOFUL4tPdfgyyBj3aiowjIG9CONucMpHc8GF30QIzr KewLh3cIOXsBLmx871G4nSt/+YPSVJ7fc7oUg/St8cnEoqUYxGrnm9d+vlqm4VsA Mfp+KeazIDcKwX8iXGM+Xs4Owss9Y+hCfBsfcz2M4Isn5pBHP5z612ING3zzhnVA X67aB8CmFeM4zO0U1BAOzlODu1D2wjY8k+V4OndgBOVP/Y6eL+xifEpjSe8ZRQ0V 9qDqhw2+MlsH2YOl4vhtbs3twMqwjBzU2jUup6UYartkTzfKzu9C+fa2TlylDWTI ad6VWYnfB9UMbOyj4qHt8Uqj2qd+hVH3L2pMUpuI2LGtIUYMDuR8WL2cmObdzaDV k2VfnkizzY9I+Uqj+SuMWkEuHvtJ/ca3hpjwejhHdWtpZ5ABFPVLnwwCtC91GtUO Q9TKf+nGFeIiG2w21wmbLWRbGRxwEdPcjSsI8XABxPDUJyTYmGO4C+ED50RCgohp 4JhmbVzxRu1cQDQX5KgbOlQ5NnSo4QF7bMgQG/sV5jkQw6Lszdq4wsIbd6MQLsxx dMgQw5qBj+FgHkS7m7txJQsBTspjTsKpZ/Pzm7txJReudueVnBx5zGGNvJ4N3OZv XKkWrnZ/oRLI69nARUxzN67kcnjwYBQWFpiLkyGi2RtX8gQYOFDWghnAARcxzd64 kidA//6u60VFIcWAA+6/rXGFZX+/fhG1XP3KtipDIfCBA26oxhVg1LhSw3C69919 +jiOjx1rKAY+cMwaV3j8K58N5Q/rqm1caf16jSu5VEdHey4XzggSAht8oRpXGKPg fwhOZ1dM1DautH7TxtWO3r0t23v18t2aN18KQRo2+H73xtW2Hj0i3T16KDfL5hGA NGy/d+NKLlu6dYvc3K2bAiD9RTaoIvjm5T45fDhJcP7F+fN24uVsWppH60NMONuA 3cynbYtEMJT78xcEHPnnMzLoKQ8QfXXlCtIBPnARg1izbUieue//CjoeH+++N18e 9RINSUn0iQcP31m7lvT8sCFWuw3f7DmwYy15Mt5kG/JOqyU9dq2giwUFhOVUejo1 Vm7W3Rhi/dsA59z48VSfmEg/7VuNNfLqWLNtyKZm8MUpN5ce7t5Nr3l0c0NKiuGG EOvfBpqkZ7h7/8XpKqJXp7FGHnZwzbchu9gHDgwiHLVx1waP5b2zeTOdnzTJcEOI 9W8Dd+L6kSPpgXsJxGCNPOyS/7Jqu+E2xOIZMMB9b1G5dD7bVEknJ04kLMqlS+TN y6O6ESNIzQGQR6x6G6f5QL+xtJiOpyZjjbzk++bMoTPpqVjrbUPe9q1Hef/Kti7/ EuRP865qZDF+Ucd4qNOT1WskDxzEqreBjZ/lH6Jey9biqFH08nQV1rrbkMu+fv08

N52lgX9LOM+3eWrkmVU+8vsEnoQEevG5aQAuYsy3gRPBRdzoFvBmpWP3YS1tXCvB t5S9sbERBwYNUtTtkLNTptAVHnCOpWHqVLo6c5Zsj4CLmFDbuMP3pDMT7fTO54EQ Cc7DjoNX/z/TrpgY++ERI0lckJYspaO8v1EjPp5+ty51rCwAHHBDbEMlqIyOJQ2j jz/VQQjWyKPZ6ZCBBu0Q1+msSXSChdyvqaG3P/1Ee+LiSHFvExuGjznuMLYhxTzn E6I+NYU+Pqmjx3tXYY08xJjdOGU7xLsP+7i0lLBwXvyBu8bXC/jACWcb4EPM7blz 6eT4cQAOVpnm4yX0UKdtPXtauN2h7BwwgLCcyM+nujQ7wcY+HCdhb+PmvHni7LxR VEwNP/5IsO3r29de27+/gxHeYOWt3btHMpQXt27RXZ6mA2nYJKEJ27jBBzFgso3Q CzeIIs8vX6584IMY6X91G5t/+EER+GIaV83cMJLLgrWnLAwHw8cgDWCDL/h4aaaG kVaMt+a4j542viHtAht84GjCTBtXYTeMdMQQlm01l4I+Z3z09B3hA0cTpm1cNR2I 1auZA4cv00++a6RdYINPWzO6javbs2ape5eQ17PpNYzkMicnN2Lm4I7KzLgWNDPu HwKcloAPHD0tsnF1c+ZMCrfXCVzZMNIsBX1bOPjr4gQUMmZgjbwK4OhpkQ2jJvY6 yYaRzge9ffiI93RGVf5QQHa/wQYfOHpaZMMIPUnaXXU2dSwQtIvA5Thtw0h+9BtY NT6GHu4roWeHymhXUSLNGNSW/L7C/iZjydEwQk/SXf5zHqpTGhxwEWMwYhYCzGD4 GT/ZMOJWnXKEW3OhOqXRWAcXMWZiHnGtoFNJk5ZitHHaTh479/FSqE5pcMBFzH+k ZkLeFvbExrpCdUqDE2Jgs+/ujnxRG/MT2qBGAKSFEPjAATdk44p/tdc7eUqQGNjg 02tcla1uUBjkR/XWnaLgExXjpBikYYNPzUWsmaAIhnJbdRtAGradMTEW3eEL604G Xmmfv6aDO7bSw9oFctcgffbgLnr5y/sA7syKo+a7jJuNkVU9e4qWGoA0bEb8KaUH PAfqbpJ6qT54jRY5cuUY9JLChXTszN0ATuWeizTFud8VVkuNe5sUIFQLLX3GTsvY /B2eMXnbyY/U6dt99sJqGZdWWG0dM327ouaMK9jhQux/7gaW7f+096XBUVzZmo4X Ex0dEy8mFB09/aPnRYdiYuK9fhE9M3qmjd1tMALcgFnFLomtWCx2IbOZ1VDsm1QS uwBREkJoQVDsQsiiJEACSUCJHbEVILEaOsEYzGJ85nw3qu7LzMrMqlLL2B5zIz7l zXPPl/erm9tV3sxzpxYoZJJQ9g9s1+7vQiAflDDw89yIQVPyyCyhrLFiwH367Usg tO30n5TjGDBpi6kYR+YhYh9PY8QMmCy3S8gHJfSbkO0uOnSBrFKKs4ziJ2TbwxXT b+JmuQ3kgxLiPsuiYOn+wycU+1mWEpuUGdLRH/tZZiT72+PGy20T8kGJfcdtDCrm 8TcvKXN7FfUZt9FhGHsmcWMEI4nLXX3HOYkBf4a8IMIGvh2AL8MgKs/YDWSdcFXl 0AnPXtCgyZuo15j1SQzNhnqN3eBcsr6ECvadhB8gef4ErnPbMeGzanM5MSfwOOw5 mt+le/29pZjzVx9xjIfXVHXKSyuyy6jH6HSPbhtuI963z7+T+fy9JzRlqDfwJYqR a8QvuNbwhB4ozwGIQ+WSuHzTYbp882spGhzdNtwUJGG7SMdqr9HyrIPYRmDLdBu+ yj3TsZvSsg5Rzdl7AnXXH4vK5f5OXEeL0r8UPrOX7yPmePTbCGlXP31O8UkbqNuI 1UmMwGOmy6crIhhJDBeDgIVrSyg1s1xuyGe3A/AFR7eNoGKUr19QqvMgtuMI+drQ aWhaJMPeaWiq3BDy1pzUoGJqL9zFdhTedvg3x08Gp8gNIR/E1+U6cMJ092C3T1xY iO007nOi9oOWyg0iH8TXzjAUc+ayQuPnF2Abnkbfyf82YDE94QMOQN7ad0kEfEzE SH6jU9t+C+0M8iFo87aJX6CYiUHZOz/rdGhdPxvDfXh9f1IDNpS9ERFla+MjGR5P 4Qi6e3IOvby9hl7eWccPkdfxci3b5pGncCTBB74/mJCDq+MiGUr90RkQwQI20qv7 m+m7r/Louwf59N39LfyYPUuIu354OsGX8cMI+nJVrMdbPpmFrKJHl1fQ46sb6PXD HfRa2ccootd/302Prznp0RW0VjpBNDgm38wl6aYbcAK6aQWMd3fJir626tyh9KIh ReyOZ/UZtHdFP7pS4aDvvz5E3z+poCuVaWzrT88a8Ow/g17eWk7VucMIXJ0QG381 JmeFwOdI+DYKQB42lMHHUFBxWh/3rWOTWEwyxPDu2UTf3tpCO5b1YTFlEMT5vvTt nQLebbksZoMQc6tqKoGrEhLJH2ZJIVaAD3zB0T59SO1Nz6/b6UX9ElIuLqba3eOp ds9kFtCbvr6+hXfTHuTZNoXLJuKYEq34/MY8AlclxoUPslBZKIAvONp49Sk9Wcxs 3vhcFrSMK1tJl8tm0t7lcdxKOdwaOSJ/uXwWtxyEOOjFzYWCA65PiB0fY2FXqH/9 pjbRBDuAvLrV4As7uFLMnmU9sGEp6F7tTKrYPIS+8TpY2GoWsJqeelPZNpTLZtGL G/PRksL/y9WxQoycxkT7q0mfYFO3HjjgSjG7lnSXYgBUJFrp5gLGIm4tBuexW3wi JMD176LVf30fFYUFcDS7aseiGPeNis/Exh1J71Jil99bAj7wBQdc/+mMM0Z9TNTP 5NHfzGxSNm8BRL5h9lyNDzjgSjHbF3azlWX0ExVcKR9DKaObwTHgYRFsKIMPfMEB V3cmWYmBTX3MGJ9RhfO7eC4fHCsqqT/2mamY+xWThc+F/aMIHItrjBVwrJhfa7bO 7RJZMLezcr5opKjs1qIJ9NXK1VII8rCh7HLpWIIvOODqBfGvVdD8qNBIBMosr8JI +XM6RebZO3m+TI+lqyWJqFxuBHnYUAYf+JptB83OcDA8DNIBNjsjtD5w7uyOti2z OroZpIMbZe/84hPihTAIQL4R/BiGB3wVPLCHu6HoUp6L/aW3UgB52MLg20vtvejO wXVE1w9JYB12lIcjxlVfvJr4PBdAHrZQWwQVvrxQJHBtxxKqy5+DpbShXLRQiBNb 0su6YiJvOYC8nBY2BL7nTgnf087vocqUoXQ2awrV5c3GEuvCjnL4hfTLKlOGEF0p 0QA2lIXAJ7q8n65tX8BPxtcjL4F12JGHX0j7u27LDKK6PRrAhrIQ+D7/mVSXO5Oe Hd+i3w6WIYtxPyhdQXRumwawoSwkMRd20rWtdrqz30HlC+KwhE3asQxVjPdZ5Tqi 07lEdXsBkYcNZSEdM0XJ9Kwqk7B86cmFIPwguY4l/IIduEkMIk8mC+DmvVMLIC9s KIOP1YGM8tq1o4nOFFDp7B6E/IOSVHp5YjPd2bcES9jF8WcViceL93xFAKUabpmL u4lunQCQh02UwQe/ChyzMEPlC/qK1qxdMxK+In8tn/8nO55J9a455pcJ/TzHdRvH iCWddxE1VAPIa8rgC47lcVObTddyp/E87J1E/vHBNLGsSRtidUWXM0BrxZwtlGKQ l2W66ahNt3cy0xCls2LAiw5PTPUaiECrIB8gBiHqLLd3fIMhICbYGeD0zRSNXWD6 aj/K4ANfcKzOyAd75xHVpGsAW7AzUp4FcDwwozOdTR+uEYQ8bCiDD8MW7CqOScce 7LETVa0CRB42lIV1x2Y4GaSDM8w7d0zA9DcQ8otKG4a3jsgY0dq9cURryh/fmjiv

MOx6P9hQBh/4ggNuk4pZlxDtLJ0v58SlB65o2jU9mmBX+7ANZdKPOdJHJpfLFbFj xw4n5mnywcs2uX+Rh81fDl9w/OWYCQ8bp1dPCOn13z309f7OlD+xFaEMQB42lCHB FxyU6SescyHcMmKEc0L4ZVSKyNhRAPKwIcEHvuD4+TnjW9GLymEolhU9LEuix3ui qSJFAHnYpGAkcNKHq8Tk5OREFxUVkT41NDRgYjo3gLw+gQMutuGwfUSPdouW4YdL l+nWzlhK4/iuV7P5lyd8BCAPG8rgA1/BAVc9YZ3rypUrZJQKCwsFjBI44IqZ0Qa2 dB5La8Xdgxn0vLSzaP7kgR+J5fbpHwEaG3zgCw64UszcxdOVPiNaEb4g7p/4Nzp7 8aSskOedpLTVi2EPKEek9fXr1yvYxuL+LSMxAd3NXHHsCJQt/UguAbUNuLctmsAB V4rpzfuMk5zkCRX6E+YQtCpftWqVaGKefTN6RUJLVKKpDMtLWa0AtU0CHHDV31Wj EoS+FEus33twW7aMVXlqaqoQM7vvh24GLRjwIZUsEr/eEvCBLzjgSjG9Ej5CJYa/ HNHWrcqXLFkixMzs81e6u03uIggHRP76pjZAgB0AB1wpZsLU0QoqNDpmEMh8ado8 o2MGkycghrg4ZjCVY9GCljQrTiw1lV5c1wZQi9H42uOFGBk73IWA9kbJ4XAIGCVw wBWfP/b4i+kuyRzfAjAt/yJWNaXJ9OnTozHboj6d468wpk2b5gaQ1ydwwBWtG/OB 25M/1lD07s3rBYwSOOBqv6WcONGVl5fHEyI8k9cQjqCOKfyiAORhQ4IPfMHx85O6 fhA5hUMBeXbN11xhi3M30Nlj5QDymis0fMEBVz+Nnz+IOfng5XV5b0JePc0ffMHR hW+OHN3pfSeD/Fg+daSsH3l1GXzBeSPdihEdm0eN4AC0DAKQh+3n1TlKjm3mYJAK jpB8mjot6dvMkTGG7xtr4jAWKZbpI1oS210MO4C8iY/D/MWv/Ah+4cszeFoBYYn1 oGLwWrWbN7720w/x2iOWPDg6iArs8eRaZAOQh03jAw645i+V5SWtK6giJCyxHlQM XqnGr0UlwJ6lNjq9Z74RUCb9wEke+BeyeKnMuf3AaUI6fraeEmZupf4Tcxz83pV5 C+FVaveaePFr9yUPIs/2aZaAD3zBYa6pmPjxm+ybdtSQPz3lN42wHjd+k8KwG5I4 goFj1ajWdGi9jWpyx4UE+KZ9+hGBK97ZSnLaGaTH4Kk5tLXIg5d48HIG3tsSL5It yyhFucf4EXuPPyvFaf3oaOanIQG+4Mg+UWKGeMcqnLRk/ZcEXu+xGYp2mtnuOG4G hAVw1O9sQUxjkzr6Qcyyoa1wQALyNu9bN7UvHNiCwMU2YkausTNIBbyjhXdm8AJY 6GI+7/aed29y74BKqzcNpG89iQDyAWJ2LOpB4Brt9q4JK+14Pwti8BJZyGKm9Xwf Gw/ArdIR9PL0OAB5Q59JXY2ncez86fLITsPSqPbiVzh4w2iZHoFiKjcOoBxHnGwN 5GHT+43n6Ajmrz05qPrMvfDEJHV5z7t7WW9NJY+OjaYLRQnUt0c7AHnYND7ggGv+ 2tMy1+qcI3j3L2QxCMWQNDO+Jb/5ES8rwq7BsXJxx1AAedhk68AXHHDNxHzcf3HS 5EVbcX0JOG627a8hLvdD0YdjsCfFfEBpie1pzYRPqHhFH3HQPqkZCyAPG8qED3zB CfKKVAS/2uRmkAFgd8DHLCRDJMPug5OhqEMywKYqj3znF5GOpdqiGG4G+aAw5G5A HjZVOXybvgtZkTwwqnr1SOX+ucPkT88ff0V1u9J4jGmgE0AeNn+CLzjgygeKu3fH MLwMApCHLZRymQ4t6e+uLyuk5xWVclD91aVL9Or5U6pOTwKQh02WwxcccP0V7d/P g1sPHkjByMOGsmDlUox7UZxGCHB3WzbdcBfQldLN1HDiAH11qgI2jQ844PrEeNUV Id25c4du32mg6QvGegHkYVMncMCVYkrm9dFUcsu1ieoPFdDt43sEvn1YT/T6BUdD uEkNhU6Nb+XysX4xUkDnzp3llRtp1vphmGoWWWlnHykMk5ZJMUWze5IUstVJt47t oNs1uyTunTpA9OqpwLf3vHR7e7b0B1eKMa5MzoNqJhZcKWbPjBh3XWYKKXtcdONA Ft2u3hGA718+lnh8+aTwBQdc8Vwwb5MXTyf0u6Hh0SUpBnn9bgQHXClm57SuUXvt scqZnCV0u2q7Ib5//lCDkxvnEDjg+qMKTlnTT1Mh8muPTpBikNeXgwOuFFMw4ZOI rRM7uquc07jirYb4/tt7Gpzbl07ggOsTQ8mlw1FpWAAHXCkmN6mdw502hm4fy5fg /SnzSp2bvn92CzYsJY5lzyFwsY24pFZGlaEifV4PrZjNYz+mm+V8rBzNlUDFWH7l 2UWvH1+l77+5ARuWEs8fXCBw/S2DiZmnOmNDaSH4wBccrRhMFPasoYbuHS+k25U5 EsqFA/Tdozp+nfKqKbZO6+UX48XGJ6X3FhUMnvE3QDOLtN4OX3A0ASM3JPDTybse boG6AMwd0QswLAMHXJ8Y24DJbcI6buALjiaM5tohHzpK10yi14/OBeBGbRFgWAYO uOo4nVJQ6EKc2s8OB/0lYtXAD1xZSZ3o2JZ5Eo+uHOQRkFMA8poy+IIDri5Wp733 qBY0NqUrzd85OEAEbCiDD3xN797L+zePZtiBtH7vORkKgwDkYfOXwzdI8FAHw8Mg HWBD2c+gc3Zp5JiYK6PGkh6wh+TTlOl8wgj7nbQVmrsx1tmugYmP2O/8vCaC4WKQ D15GgFDYGIrKzwmudKgdMsxWN2WathuRvo5eXL7CMcMbAORh0/iAA64Yb+rbzJnN F0B/t7R0fiyl9mtOyVwxgwDk2YYy6QcOc13aiBkDBnkf5GwRlWCplJXRq+s3NIBN 7QOOn7+4TzOx8Udnc+lFQxFdKJguKi1fHC8rRh42lMEHvrCDqw0AGhefVPvZeFHR Nf5s/tXVa4ZAGXzgC46fzxEOsGFUIsVg3QBSDIB1cLVBB3r1dtU5Uunq2nR6VH6I +7uXDYEy+MAXHD+fIxsoJb5fLYWYQ/qBw1yv9gv27t3pmaeWXl68GBLgC44q/ELM gr78pvTUGFQWEuALDrja77O78ADmuXNhARz1NjioqGsbV4Bf/My7C7tBLM/mTDa0 wRcc7Zh2h/ZJJRzG5eXp0xJ4XRZLKxs44KoexSmHlw2QlfqAdUMbfMHRzjz/cVtF 4YPyhccjgYqxtLKBA6586BTznvogRuBImTeynVw/msDRtkyPGHpx/LgGj/eX0M1V 68mbvBJAHrYAv8zWH4mNTYl5L/LzbkIMfnVQMfCBLzjalypa/pVeVFVpAAEFffpi qcl/W1Gp8QNXFYwUFaiPDyPIYwa+4GjErPzgPffxRfyFReVRALvDTAzKpB844KqC kbpyP5dnk6g4Y/kMdFcB5GGT5fAFRyOG33KPSvlzlFI1by49P1Ih8Gj3Po68s06K 4Txsshy+4IArH8d1fi9qYswHStHcWCnmfEUWde7YHkBe2GpWfUrwgS84GjG+zzui Fkf9yZ3RqQOdWMbTjezchUo1gA1l8IEvOPrtjO3UPJqfaCkpn7ajyowJ9ORSodw9 yMO2cmQHgg98Le/g/Jp+zNw//dE550//5mWQDl6UsY/lRkZ1bB7BwNMtL4N08KAM Pu/83BK6AxHJfZt5cdvnpdO39MBuxuEwC0kM8sHDiMZSZUtq7DChM3dqBzH0t3zQ B2KJddjNOFKASoTeZsQLeZgQz3u/XN4Xy2BDgBATqcpHMUhnQz78lDakBQQIbJ7C

LRL3PmVOaIeITEBIG4UYLBudOMpSBA/zuRhSTDaLwboKpvt+0Od5EbYp+U6E+mCQ D+5BU/Jt4ehABKYIHuLzMAgoShFjCWI5P/Z92PxQ4Kvn85hjBA+EKmvyKsldfYUq a68L7Dp4juauKSEOguFCOYOw5GAXTvW63NDMHn+OwhAfg4C1Y9tCiMS+5N4cT7oH yvzwMjQHZJ9xGc6lPO5YVnPVEGvzKhAPQuQLi0/RsGlbsMS6sKuHBBUGAWt0Qqaz DctHt8/T+aoyOpi3jlaNj4evQxf5QNlTdo5KKi+ZYvTsPNL7YL37yLWiZWQ/BFg0 UB64ErBj+eD6cfKn29f46UT/NgoPCUbJwa5hy2lv+QVLpGwspbH2XNpechrrWIp1 HihzqIcFaQELkUM8BjialUC3zuynVy+eEtK5Y2U0hYcEmRvh//ze9eVZS+Tv83DU g1QaPmOTWAenvW2ZQxu7PvavUkgw1OQlSUG7NiRjWFBcCFvHzaeColMScl2H7J3H BUoqLgmfwKCfqsFS16Ielq3zzYPrdLJ8Pz1++BUhTfB1jlr0mkWbd53UIHvXCcra cYI27TwRUHbs1A36xLYoUIy6QrTQynHtDFvq6tFsQlowvCedYEFI02LbiA2+320K bdxWo0HGtmpav7VKIKOwGjZxqlecvE4PlKcEjqUYYH9aX5prayWis4/zIWXUx1RX U0Lq9PDebZSJM+HdT8a70reU0P2/f6NBhec6rdpSSWXVVzV2+IJjJEYx2C3+ob/I sQxeuhl0cEcuPfvma6q/WkcLx/ZHubgi/592YyP/98djlNXZRTwm+cQS8IEvOEZi ovWCdi3rLTpCar/RHZtHj2IbgxgKw64u//fWIyL/2CrB9W+tPiUrwAe+P5svAxXd 1NVRJvNuO1V+iozYNGBADIN0COjDwGbgF6OviF6eSqRnNaPpch7fIKd10Hzcgjxs 3u2D4CN8wZERm3immoULF2K4RiIhIYHYLn8U8rCpfcAB11BMyeyOQszDsgS/IAB5 2FAGnwAxcXFxSfxqpawEbzjO5gDZbHcz7ADybEOZ9AMHXEMxu3gJqFoAQB42Wa4X ExsbG83NLSvZtGmTgN1uly+rIu+zSz9wwNUGFx7/N+/jipH41agUlRkCZfCBLzia bgSHQ8zKykIl4iVUt9tNhw4d0gC2pUuXwkf4ghMYxzfpY+fVbQPpfHa8pvJXF2YD Ght84Msclya0VK9e7sWLF4uK8vPz6eDBg0aQLQNfcALE5Ce2jdk5uZ3cNQJnJtL3 fy8HkNfsMviCo95GD54RBM0+iYPnFxcXWwI+8AUnQMzmMW1sFY7umhZ4fXOjjBuO vLoMvuCotxHDqT8HjExJ4bHLPXssAR/4gqPXgjEnJ84UVBSsZQD4gqN5talrVzsn 7AINMDAK6O3wBQdc/dc16l2EAQf9MSNtAHydPGgmw0p16RI9YcIETWV4DIKlL6lt EuCAqxGT/mk0KtGLsbQ5x7SVYjp16uTdtm1b2GLAAVcbYHhoK8NTee7Q1oBh2fpR baSYjh07airBhzXYNboEG8o0vn05gK1GDH/Q4q0/mY+DVYP60zuBADt8wfHzO3To gG9axMbr6+u1A+0LFwMaG3zgCw64GjHJgz6KWT/uE7p3fpessDKP5xk9kgkgL+3w gS84fn67du28iYmJVFtbS+r05MkTqt67FxB5dYIvOOAGPn0Y0DKGP2JRGATkzhks BSDvt8MHvmruxx9/HM3ATQ9XVolu3brR3bt3AeQ1ZfBlDmD9BGthvxZRC+JbeBkE IA+bFadt27ZRbdq0cTNIjdatWwvo7fAF552fS8JwT2RlfD/n0X79SQ3YUGbG49M2 guFlEMONdRMflBF89T76oZ4od58+St1sOyk5ufT11kJA5GFDGXxMxDhxmceXG8uW LaP27dujMhsjihGJPGwogw98wTEPVsyzTl3kSh/lbDEEyuBjIsZbVVWFigB8T4cr LK4jAPKwyXL4gmMxAVQn+vvGTEvAx0SMrOjUqVP4HAlfHKoBG8qkHzimYvLacTzo tessAR8rMehEuVwuK8AnuJis1q3o/vKVAr1+91vDPHxMDkzau3cv7jchAb7gmB7E 6S3+4qmb+QXdXZYCAVhq8iiDj4EY++DBg/GhZ1gAB1y5odTm79qXv9+MgLTmzbw7 e/Wk2wsWGQJl8PH7g+s/eFeuXCl6/rt27aK6ujp5kMIGIA8byuADGzjgqgcxyDtz tsDqDz8grJez4gH/8j/QIoDInxgzBmXwkf5Y94nBmSJwhGfDwvrw4cPp9OnT0o67 NWwoKy8vl3bNcTPnT3+kqzx63zBzFl0cP5FSmr9LRX370LHhI2h9+/YA8rChDD7w FRzmSjGbN28WOHz4sOh0c7cC1xJpRx42lJWVlUk7uOoYQ+5sDmpU0Lkj5XfsQHt7 dKdL4z6jkwnD6caEyQDysKEMPsIXHHD9uwm9fdwA0S24ePGiPH35+1xArqMMPvAF B1y1GLo4cjR5xyZJbO/UUW1DHjbkNTZwhRhO3BWg5ORk2rdvHypVX9wAjQ0+8AUH XLUYTay7Az16AGK9sl9/AHlpV8XKk2J8gmIYCn/oKSvFvyNsA5CXdvjAl2HTh4Ky MwhQhxRDZQiMBSCvD8IGgKs7xSMZnrVr15qKQRl84KvmBoiCGF00QCeAPGwqMU6z WFWohA9UBdcRVI6lOo8yKSRIsCyvKk6iXdd6sJHPx3JjuFPL7oQWsP0Mp8HhEfkI hp3hZZAKXthRbkLFI/tIhoPhZtgs/GzwgS84VkI8s/p8SDlj2miiZWAddpQbCeKP ZCL7JqYrkxcV0lHPVY6yvJbYhhjDUWrAhjL4wBcc2IzEJKFCVG4CfHUOQW69IAQ2 ziio4A+uXolPzXaUeERQ4sGfbyQ1YEMZfOALDrhGYjzLB3+ESkMR5FFzOw5Jda7M LkeYZnwoI4JgxySk0umL9YghDSAPG8rgI3zBAVcvxC5bJQTAFxzV50PK7ftPUIn4 1be/esa7IU8I8CfkJ8zPQRl8hC844OrFeOVxYgCEajmbPkKuF4xrS+Cowz2fu/JQ NH3DvadUXlMvPz+7euO+ABJsKIMPfMEBVy8moHJMJVu3cazAs4NL/NF4pA84/mOn 56iVqAiViF9eevSm/MjqwOGzAkiwoQw+8AUH3Hd031qjAvx6VGoGdVQeAgdifB9W eU9duCm+ZSqrrsevFi2AlO2qFECCDWXwgS844GrEYBehNdAKVmIA+MAXHNVXXtED J4iQ8zJWPSpEmrQwD9DY4ANfcJgb+IQcvxgVPS9PoVWD/gJIAep1+MBXH82p3cCl rmxXBfnTjdvfiGWPEcsBjQ0JvuCYRXMKC+Doom1HMnAcyOMDxwVsAE5l2JDgAxs4 VkG3gsEq6Ba+g4MA+Z0tomzDBmC3wIYyzBAAmyCZjJh4GeLMKU0dTbp7E2wok8GQ wAkUsygg5DdsZvagsfRwPODXZ06Nk0KQhw1l8LH4KC+gUtjM7OCEEoBLXlsA5GFD WZCg6AGVwmZmDzm6pEGMqjAjtMtKFeD/u4jteDEngkEMG78PE8P44d8kQyUMvB/l YrhVsPG0NV6OXhDNS+Kl02AiF4UDDFA4AIcRZTRfjn2kfTsBC9cdFCg+cokuXLtP M5cXQ4B9wOTcaAiBrx8QCH78hE20t+y6BgvTy8U7MvqE6w2+43ZkHiHm2Q3ny8HE PQvWltLDR98ij4MMRJGfkVpE7KNs5vcbhs8qJCy3l5yhEbMKFd/sMnoxvK0yMku4 LWw7cJ6DDmRqD2J+5SiKm0uESpiWshcicLnG5VsKQtm8NSV8170q3vLwJ/hjG3g7

SC9mvsXMJrhzY9vg9UnMiFTNmZPl2ld+noCdpWchxFTQlOTd3PS1hFRz5iZiPHjF kODY9YFiVh8kmUx21bKMMmKuXfW+lNNTffoG5s3his5DgKWgGvZFQrwHxIPANnj2 mQAx81aVklXCnC0rso9Qj1HpLtUrbdmENHv5XlSIigMEAbqE+XQQ18Hui34QIGbu ypKgs8/UnL1P4L6jj+nwRepuLAME4S5rlDCvDnOFmK7DVwaImbPiQAhi7hG4Ukz3 UWttn83fSmcu3aIZKTsDBJmlvD01eJPM7ot2oBfDLV1Mjo2ydcR/A1OX7SD46qC9 bvGcOLakufl0pu4WTU924f8c2f8wS7m7q/lXrXKA35H/OWOQDm6GMyWjWHaodpZe wP9JmHEm2ocI/bQ1xPBifp3EObl0uq6Bpi7dLgRZJZTDP9iVvcPgFOfaLW550PI6 OKbxG2wdbCnRHWzJ+N/YNmZ2jviHa8qSwlAEBRXTbtDSqAET0uWu4nVTDjrSNn5n Dr30SN8/ZLbRX2RT8eFLNGFBPl2+oWB3mU02FUyM7I5iztuyai9xXgk2bY1TF2DC Fpu4VsyfE5u4RsSLyd1Ti75rwGke5sw1CiPsT9cgMpphZ6GeactcBGRsPRYg6J23 6aeQ+K7q6JMo7q4KIzooIXisq8YnjinEl+5nPOlyPfF8ckrIROtYV+EnnpgucuSs PHmN4HUKcT7BCMS0Qmyr81fvCT7HvEJ3095YLbiJOjcWVsqrJ68HFYMYVgwFMa3Q 5fAnrCP2VaOEcD/DuWKTW95XdrvriG1eKw5iV/E1CbGs5P/VuDuj74OYV1xuBCkQ fRGF776kx/JNBzV33BmOPQE+zBUXSxxLOLYQuyqchB4CeP8pZsRqi/6rdccIXGyD GpkgBrtePQ1fYJdxdWnQafnQMQI3BDHYzejzIvYVWlMPuzomVWCXcZV1c2O3pWaV E3NdIYhBzCKIwdyE4MjKjeYVDOwyriwJ2rNfmF5CzLWHIga7FTGvEPsKMbDesRhY CBBjX3Eg6P88zAMiQxWDmFeIfRVkUsNUo/6r5X+DeXtPid4h+KGIwW5FzCvEvrIU 03GII0DMrLQi2rzjqOm+X7CmmJhnV3WeFAYBiGGl5+CAR8wrxL4KOrOiXsxn88Ts iArKTICyKIO4Vg6r2FbwsRTDfV+FQTq4GRHvvE1BEk+b72Z4qwcPjmr8w6j8KMY/ 3tpVNptSNWiQwkvipfvYoEEx1vMj50Zy38XBcHE+iZfemWnFNGL2doKdbRGMxv2w owMHJjHsPngZxHDq+jA27q+4GA6Ggv4L4nVOd+yjQzXXZLhMrCd8sVUs2c/LPGtR R/r3T2LYfHlnBY/WA5z3MNw+m131wMkxNXmPqHwbPzrTx+tUp+NnbkobHj4x17hb cig+3naoXz8Hw3OYX3eEjZd25PVgnyTVJM2aSpEPNYGrEVEWFxfF8JTHxSm+pZMh r5bl8fFJKGOQClIMHoc1NoGrEeOOjSWGk+E42LdvEsPjg03lEwM/FaJUfeXGagns V3/Zp08kQ2GQDm6Vj1tlV3RdVE1oQ+RDTeBqxBzo3dvOIB2Ukt69Y4p79Yo4wN8H 6MqwC9W9RdyZZRcDY06quzyg7phpysDVvkbZs2c0g1RwqcqcsOkQowsaim4F7s64 kSIPcagM/1UAyMMWUAZuwJm0r3t3hUE+OFR2N2wquA3ehfBmbj8uKqrm7qgvL9ex NFpHnrkGXw3GxLgYJNGtm81nd6rsyt6YmAiDbkjUJ0McXgb5oMxfXUwpG900dEoW ObfVoHJ0sMTTjLTMMlnGvo4AMbu6drUxSAfb7m7dInjpYDg5H9IlHE/BGHY/uFNF yRkHKWv7MZ4R4BvRQes5cgVxmfGrLTu7dInY0aWLwiCJzp2Nr47hP+txo0XQMmih jYVVxDbrbW/v1CmGQSo0gRh0vBZFcMfKwSAfvGwL3sqFn3xiZ5BAx7dzCRo+1ohk eDFqhiXDybCFOZon/OX4QCMTugV2jJbh0v5l5WUqKKoldBPYjgosR/OKj9SJUTx0 qNguBXHHKkIzihdqivssy756yzG864JLPK6aGGPCLR9XZ7PRPDmKhyRH8SZtQccr gn0U9SgebFYa0B2IYkQz7InztuNRq7ynnLt8B89TcAU2Gs2TIpB8eTnC12/CZo9+ FM+sl4dnLJEM76TFLow9CYyanU8lldcxuiLgOd+AMSYpRj+ah2QmaMoyHsXbrx7F y/KaPzIbs96+sfCoweOPp/K9l2sNj4n9FEnSjubpRci7OABB1bpRPKvHZvbkjW71 TQ13YTk0CGBXafsfcjTPsFUgAndmOfagH8UzSeiTeDO2HiGA89SNMWJmLtVeuC3/ 4YewwNNUjuapBUkhqh8SOIpnEsQ8ggey5O5Yn3+Y2CawZVeVpjMEP0nUjuapBUkh SBACrm4Uz/KhkXdn6UVsAONIPAC2TTyD2VnikRs5duoWsZ8iSYGjeYajeFKMfhTP LPHAV0zPUav5gnXVcGwSNnSa2M+lo8orbJeEFTaMzkGQjovrlX4UD0+xbFbPamw9 Rq6CoIBONZodz2U+kc9ljAX5RvP0gnAy4MKpEcR+GLO0WXWMYmKGr6Drtx4HvA00 6osc4vJgl3E5mqcXpP+BKIcfOFZDhe6T524EPMcbOXMzcVkwMXI0Dy8F4n28ihOX Gz3Oicdi7trzNwJahu3U2NG84kNnTAUFHVM0EsN2xZxlHTqe4dlfftpYzE8yLeKX zxgULsAzHFn59w9/x5jBOMMgLLEOeyhiqKJt27ABnpGQoc3a7V7YI4HyEudR8YwV Yol12FEeVExZy5bhwkzMDFQMEXrAjvKgYkrefz9cmIk542+RG5UeevnsOZayhVBu KWYqP59rTALPQIxsCQjhhKW0oTxkMbt35FP/3u0FkBbOmYK8RAhiju6bmmrYMrCj POyW0VdcVXkoVDFrMofPMDxmYEf5Pyxm/BgbWi0UMf8y7M/tDcXAjvJGi9G3irUY KWjvhmFTNUKwDjvKQxazPGWe7hiRrRKOmN8M/L9tHu6ctEwIwRLrsIclRp/QKsNt PYOeTTNG9UxjEDBtdHcaHvs3mtYuHmLEss+Q5tTb/mc10n6IUxtCfjNvPM/dc6Wa vnl8jx7er6cLJ0vJPiiB1tom04xBQ6jOu5eu3y2hI5e2CQxY1BKCAluqV7NmT750 uShcgOcTMzB75Swh5tWLZ/TwzmVquFxFl0+X07C/dhDLe3cr6eunx6SYLzYNhpiB gf+8vfvu1WL+cO54eXnIgD94PjG7Kw/kCjH69P1r4+fBx+sOQUzgjbbHf/xHce9m zShcgOcT89h77jDEmOL2tWr67rvjdPPKUTp5eR+Vns2BGMO+Efbd7xsB8CCmikGh InF8BwgBaqSCX0Dnyjq9gc5VeOmNda6CdLARSoiAN9C5Ci7GHyPiDXSu3oCYs6dP yhsnbqR6MWSdsFskfGI0tlB6emZ9m3DFoHJLhNOfQV4ib3PGG99NqNgs/8sUI3t6 +l1jvZvCT2/g1A4/NW3nqglS03WumiA1Yeeq6VPjO1dv0y8ykS+Z5DV3V7O8nqdP LVq0AET5hx9+SGrAHqoYzd3VMB9cjAzUhnJ94Dbkf7G7Se4SlPt22Y+2m+QuQTmW evyizybdbpJ4u5veprfph0mFXbrgn/hGAdyfxPMZANyfwvMZoJFimn7wC5BiPv/8 898zdjJe+JbN1esoD/ufuEePHoWVB9cnpoRBFih/k2JeBBHzOlQxiBjZGKjFPAwi 5s6bbJmtQcRkv0kxzS121WtG1BvbTT5BCSZixqP8jbWMStAQxmOfiCdYh/1HECMF

/YYxjfGHsC96o7t0wfOWRmF0U9+bMpOT8YijUWDu2y7j24SzgX5sAel+IX78A9sq Bd8CpcE2cMKIGELF/8x41w+fDfOomCH4dq1+SRBelN5Xroe7zUaSwfm1/wqLOzLj tVoMlmgFo2VTtgx8E1V36K98fZkxWG/q3dRR39w6v3d9Qvr77kFbGSekQ5O3jLWY BIZXtd7GwIeKiopyMQWO0TIUMUUmYooMWuY1oyvjV4wcRpXRtixQ1JTXpIk+QcS4 AYE/9kXyt75W+qdfzr2pYMR/T2AQlqFyEEU7NzeXfggxRN/sIix/VDFojeOZvYQY LLH+Y4qBEAmsWwg4wSA9CgoKCGVN1iqJrf8QUusYiUELNWGrSDEhHTtNLES2ipEY 2Tpv6JiRrWIKlIdZsfRrbKvoW8awdVBJqICYJmsVfeuYnUVNdVZBzO7Nw35HwQC/ N3EH+GfGb4ICfm/TG0iYxwn40YVgcpf79+//w2L+NQj+l98Rc1KiMgNAiKmY/4aN WFUAHynGOgkxqampqEwNtQhLMb9j/IrxBwMhsKHst+GIQSWY4kYN2C5cuKABbEZN H8n4NSqVQpBXiQxRzP/EnxUrVlB6enpjxcjdEcH4rxCGvHr3hdMySGbHC3YhpkzC bEYWYiR+D8j1RopB6zQ0NKiPF1k5Zi2CIGsx1tD7/gq7RW3TicHMin4REpqWa7wY PQdCrG8Rmhb5AROE/DqYE/9vTW/iSvtfGL/g1HHkNvrJCPHjpyJE4q2Qt0J+qkLs P5GzR4r4I/I/ndMYLfQ2/Wf6f7bb4Kx0XcRJAAAAAElFTkSuQmCC ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png Content-Transfer-Encoding: Base64 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 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/gif Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yk/r/LOOn0JtHNzb.gif Content-Transfer-Encoding: Base64

R0lGODlhEAAQAPIEAPP1+fP2+fT2+ff5+////wAAAAAAAAAAACH5BAUIAAQAIf8L TkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADPUi63P4wLiAEUNTiSscQiuCBhPiZ pHkRwNh+2Bif3oqGrszWsznYngHu90rxSjkY8je0AJ4bDYsjqVqvigQAIfkEBQgA AgAsAAADAAQACwCB8/X58/b5////AAAAAgiEIanL7X9AAQAh+QQJCAAJACwAAAAA CgAQAIOBlb6GmsGHm8GwvNaxvdbx9Pfz9fjz9fn19/r///8AAAAAAAAAAAAAAAAA AAAAAAAENBAIAZK9ghBx8dhXURjCMHCJgSAGYKJdeXaWXNEy7M20y8cvWiInlAUs KpYtNMqAepNbJwIAIfkECQgAEAAsAAAAABAAEACEgZW+hprBh5vBipzCl6fIoa/O obDOsLzWsb3WuMLZwcrdwcre8fT38/X48/X59ff6////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVsgMQwEBAGCAJgsZCSJYQrH IbRmsSzFXN8mBsOh4/lsJsfjQdzJIDQkrviMAluFxKL6w0GoxyvrZYR2cYZd71Rb odVhb7pslTvjECVzvq4Hhy8xeC0iJCYoKl4hACH5BAkIABAALAAAAAAQABAAhIGV voaawYebwYqcwpenyKGvzqGwzrC81rG91rjC2brE2sHK3cHK3srS49HY5tHY5/// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVq ICSOxDAQIiAIwDgaSWKIAoIIStMoYrEsBVHggAgoHg8exLeYQYbFo0PJDD4PB+Nj 2vtZh1mFg7v0CrHGMdV8Dau7wLObXBUi3En4Fy3OQwxsYFp+dW1GOmtxhi4iMDI0 NgGMECUnKSsAIQAh+QQJCAARACwAAAAAEAAQAISKnMKXp8ihr86hsM64wtm6xNrB yt3Byt7K0uPR2ObR2Ofj6PDm6vHo7PPp7PPt8fbv8vf///8AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFY2AkjqQYAEBQrtFAEIO4jAWC FKJwHIPzPA5RQaHARXQHgQ/SEBKNyEADwnQWc7vBtBoZXlvZbbP7FA3C1LEXuhOI rezkm5wwng/StLNuDjceamVgPAyFNDZ2WSwlLjCLJCcpIQAh+QQJCAAMACwAAAAA EAAQAIO6xNrK0uPR2ObR2Ofj6PDo7PPp7PPs7vTs7/Xt8fbv8vfy9Pj///8AAAAA AAAAAAAEWpDJSau9eBIyQQjAkRyHZCSJIQHDEC5LYirp2gIJXDKGsqgMluC12PUS hZVgeIDJeL5kcInTSQo0KcvVLF4VCu2t+8SGlcOcl2HWUkkjEwq4BVw2nY89w+8z IgAh+QQJCAANACwAAAAAEAAQAIPj6PDm6vHo7PPp7PPs7vTs7/Xt8fbv8vfy9Pjz 9fnz9vn09vn3+fv///8AAAAAAAAEWbDJSau9OAOZ1koSQRiENBjGsDDMEiZJ2QwI ubYhkhgmKiQsV8OAQMgEhwPhBmoQYMeD4RfMGUPJJav5jEkCycBN+Lw2kAfB+GVG /zxc0hEly0gAgIB9v48AACH5BAUIAAcALAAAAAAQABAAguzu9Ozv9fL0+PP1+fP2 +fT2+ff5+////wNFeLrc/jCuUcpQ1CoQAiiGUSigqASD8IXjUV4HOgADi9kHIMwv ieuzmskVgqFUPeJQthqWWjok7rkZBCuwDJQDkHi/YEUCACH5BAQUAAAALAwAAwAE AAoAAAIOhGQzpwCKoGhzvVXRAQUAOw== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/ya/r/nHKI1aW4WaJ.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABIAAABOCAMAAAAaXLbpAAAAY1BMVEUAAAD////r 7vQ7WZiqqqp2i7dthLRFYp5heayjs9hac6iRosW+x9pSbqb6+vpPaqPR0dHq6uq4 uLja2tq0tLT8/Pxieq3t7e3u7u6frszh5/O2wdisrKzk5OR6jrlgeKvEzeB1GUTU AAAAAXRSTlMAQObYZgAAAL1JREFUeF7F0VcOwyAQRVFmBnBP733/q4xwETZPBClW lPt5BAPY6jdZFGtBnM2XgmC2vRCeVqj/lsuovCWZNKEnEwXEBOQgRdQ2IWYi5sTG JGW2i9wPyGKEz56fLEM5EJCQBHI2QN17Hv2Q8ffqSKqqB0/GfE8i5uWo9CcyX52X rKJtF0B6twbSerUH0psTkL7dI6tgFpyI90pXoxxrEBrMCw3mJTAnralPNUNouA73 4jyFYQ0KTneBwE3BoDcaBgrVGAgcDAAAAABJRU5ErkJggg== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/N8eF8pLkCCD.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAMAAAABAQMAAAAhLob3AAAAA1BMVEXDzN9FsELE AAAACklEQVQIHWNgAAAAAgABz8g15QAAAABJRU5ErkJggg== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yB/r/z0FHnmjTba_.png Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABEAAACqCAMAAAB8vlR+AAACbVBMVEUAAAAAAAB8 fHxaSj91dXV1dXUAAAB+KiFaSj8NDQ1ra2t+KiF9fX1aSj+ZEAB+KiEzMzN9fX1U T0lBPTl+KiF6a12hXqY7WZhKRkFTST9ra2s/PDdSTUd+KiF+KiF+KiF+KiF+KiF+ KiF+KiFra2t+KiG8NTJaSj/Q1+d7xk2/TsfebGx8fHz///+ZEABTTkhieq19fX3y 9fnopapra2v+/vujlIaNd2OXiHqtra1JRUDl2cHz9fllYl3BWFXc3NzJvKdsaWRR TUjY78vh2cntu792W0PR1+fsyO7z0tTT2eZAPTinnIh6IyWZ1HaqqqrYy7X+/vry 9Pjo3cmvo46IDgDX19e1t7p8r17gpOOMjIyKiorZ3N7+/fk7WZh5dnGCbYPz8/PY 2tynWazrZfXu39v6+/19k3DeWOeXlI1qZ2HJXVuOf3HomJjk5efV1dX0nZODlr6Y p8n7/P29YsLhmqLFzuH66upMSENiXld/e3O+vr66xdvYnNzNzMp1dXWImsFkYFhW Ukz22trq6uru7u7vwMTNzcrASj2hXqaJiYn//vu3QDTj28ry1s/UW1qdnJuHh4f1 9/tYWFjKkM5ST0s7Oje7RDf//vyIeWvudvb1+Pu74qX6tKzwzfHH6Lbaj93c8dCo 24vAdHrXjdzWhtrswu2846e/T8fDVsnUiNrJac+DyVeu3ZPT7cXY2NiS0G2vu9Xq 7O7OWtXmseh3dHCEgXyVk4/z9fh8xk/Te9bz9vnm5+lmfa3+/vmf1n/+/fjkzMR5 dW6Lh39YSkDq7fCHg3uPi4O1wNibq8vipONRT0v35uSt3JFthLR0NKmPAAAAJXRS TlMAEkyD5UwMTOUSMrPNTJlWGkzF7Twa85mLJpnp7VzngzIaPs3NjqwvowAAA79J REFUeF61lVWX3DYYQJXZmdlpZ5INN2nSLcrsYVhmZt4gMzMzlJmZmZmZub+pnyTL kma7PTnd9NrHI19fyR6/GFECDiGABI5LcISApr29HRo5So+NQaKYdFoxgXFoxpWV VzyeTq9w5OTz/WMsEsmmtBwFNpsvP2uuXTu2mUfOkk/fetPsM/uWOH7yTvPXT5iu C5GXmH82P2dCZHqRY5pPN79h0sjhTR9sEPEm4AgCaFJmpQizJJNyCSml6erqgkaO ar54GxLF1NQoJrRsaNfuZSHJBNfdNzS0Lignn+zftRsiOdk0JEehNdZvT1knTz6w hkfB9a+89IwFrA/6yesdn1nW0qU8Ch6wXuh40SIcYNHp960POl61SPTaadZs2fAY Y8MW1oTm38qZH0JTY3YCJWCfLUziXOIc7AlhqhobGz/86OMqYRZ0UxYgQfeRIw/W dqOpmplVR49u21Y1U5jFTU1Ntd99v1gkZ48d ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/ye/r/cIteEL-Hjv_.png Content-Transfer-Encoding: Base64 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 Nf0AAAAASUVORK5CYII= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yP/r/-NuhQ2GlYF6.png Content-Transfer-Encoding: Base64 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 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yA/r/4WSewcWboV8.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA8AAABABAMAAAA39jDAAAAAKlBMVEX///8yXJky XJkyXJkyXJkyXJkyXJkyXJkyXJkyXJkyXJkyXJn///8yXJmi1CcJAAAADHRSTlMA v01mGjOAAKuzReaEikJpAAAAtUlEQVR4Xo2NMQoCQQxFAwq2TmdhIVOKxcIIew3x BHojL+BhdivRDNjr3MX5k3H/VOIjxc/PTyK/mHcie4hZQIHQh07MMkMWoRc6zHCL d/7g6AsH8camEdvR+zvETlEY6agjRO61hrNBhxlu8Y5Bwe8TZ1c4iTOWjVgNzt0g 1orCSAcdIHKvNZwNOsxwi3cMCn6fuKbCRZLxbMQrpvSAeCsKI40aIXKvNZwNOsxw i3cMCn7/8gEiqKFG+Xx/5AAAAABJRU5ErkJggg== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/ogYrclupeJV.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAAwBAMAAAA1P517AAAAJ1BMVEX///8yXJky XJkyXJkyXJkyXJkyXJkyXJkyXJkyXJkyXJn///8yXJnUivoEAAAAC3RSTlMATb9m GjOAq7NF5hK2qM4AAACWSURBVHhebYyhDQJREEQnoQG+PkO+PXPJb4CEBqADQglY DAVg0JQA5s7OCfxtUcyGUYRnXmZnd/HDDqut1IY2SKvWkGRwcufN/xyK2KMka5RH 6e4SR45SR+ZQUXJy503f+Ys5VXFETTaol9qfJU6cpJ7MoaLk5M6bvvMXcwtxRSRv xDOWl8SZs7SQISlKTu686Tt/+fIB8vxZdWVUjtcAAAAASUVORK5CYII= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/gif Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yt/r/7rpZ7CHyvX7.gif Content-Transfer-Encoding: Base64 R0lGODlhDAALAJEAANvb26enp////wAAACH5BAEAAAIALAAAAAAMAAsAAAIblI8W kbcswAtAwWVzwoIbSWliBzWjR5abagoFADs= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/UvyvLtJTQzO.png Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEVzolHs7/Xl TqLlAAAAAXRSTlMAQObYZgAAABdJREFUCB1j4GBgkGFgsGNgqGdg+N8AAAicAmH4 VpzqAAAAAElFTkSuQmCC ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=pGNCz3aQKbr.css Content-Type: text/css; charset=utf-8; name=pGNCz3aQKbr.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/ye/r/pGNCz3aQKbr.css Content-Transfer-Encoding: 8bit /*1345524265,178142515*/ .-cx-PRIVATE-fbEmu__root .body .-cx-PUBLIC-fbEmu__link{color:#333} .-cx-PRIVATE-fbEmu__root .body .-cx-PUBLIC-fbEmu__link:hover{text-decoration:non e} .-cx-PRIVATE-fbEmu__root .body a.signature{color:#3b5998;display:inline} .-cx-PRIVATE-fbEmu__root .body a.signature:hover{text-decoration:underline} .-cx-PRIVATE-fbEmu__root .hover:hover .title .-cx-PUBLIC-fbEmu__link{text-decora tion:underline} .-cx-PRIVATE-fbEmu__root .forceRTL{direction:rtl;text-align:right;display:block} .-cx-PRIVATE-fbEmu__root .forceLTR{direction:ltr;text-align:left;display:block} .-cx-PRIVATE-fbEmu__root .adInfo a.identity{color:gray;display:block;white-space :nowrap} .-cx-PRIVATE-fbEmu__root .title{font-weight:bold;margin-bottom:0 !important} .-cx-PRIVATE-fbEmu__root .image_body_block{padding-top:3px} .-cx-PRIVATE-fbEmu__root .uiUfi{width:auto} .-cx-PRIVATE-fbEmu__root .fbEmuHidePoll .otherdiv .other{width:206px} .-cx-PRIVATE-fbEmu__root:hover .old_x, .-cx-PRIVATE-fbEmu__root:hover .uiSelecto rButton, .emu_x .openToggler .uiSelectorButton{opacity:1} .fbEmuHidePoll .undo{float:right;padding-left:2px;padding-bottom:2px;margin-bott om:3px;margin-left:5px} .fbEmuHidePoll .fbEmuXTitle{font-weight:bold} .fbEmuHidePoll .fbEmuXSubtitle{margin-bottom:10px} .fbEmuHideThanks .fbEmuXThanksTitle{font-weight:bold;margin-bottom:10px} .fbEmuBlock .fbEmuHidePoll .otherdiv{margin-left:20px} .emu_x{float:right} .emu_x .uiSelectorButton{opacity:0} .old_x{opacity:0} .-cx-PRIVATE-fbEmuEgo__unit .image .img{padding-top:3px;max-height:72px;max-widt h:100px} .-cx-PRIVATE-fbEmuEgo__unit .action{margin-top:5px} .-cx-PRIVATE-fbEmuEgo__unit{line-height:13px} .-cx-PRIVATE-fbEmuEgo__unit .fbEmuHide{margin-top:0 !important} .-cx-PRIVATE-fbEmuEgo__unit .image{width:100px;display:block} .-cx-PRIVATE-fbEmuEgo__unit .action{color:#777} .-cx-PRIVATE-fbEmuEgo__unit .action .fbEmuContext .-cx-PUBLIC-fbEmu__link{color: #777} .-cx-PRIVATE-fbEmuEgo__unit .action .-cx-PUBLIC-fbEmu__link{display:inline-block } .fbEmuTracking{position:absolute;visibility:hidden} .-cx-PRIVATE-fbPageAdminUpsell__egoImage{margin-top:3px} div.-cx-PRIVATE-fbPageAdminUpsell__showNarrow .-cx-PUBLIC-fbEmu__link img, div.cx-PRIVATE-fbPageAdminUpsell__showNarrow .uiStreamPassive, div.-cx-PRIVATE-fbPag eAdminUpsell__vertical .-cx-PRIVATE-fbPageAdminUpsell__showWide, div.-cx-PRIVATE -fbPageAdminUpsell__showNarrow .actorName, div.-cx-PRIVATE-fbPageAdminUpsell__sh owNarrow{display:none} div.-cx-PRIVATE-fbPageAdminUpsell__showNarrow .fbEmuMainBody img, div.-cx-PRIVAT E-fbPageAdminUpsell__vertical .-cx-PRIVATE-fbPageAdminUpsell__showNarrow{display

:block} div.-cx-PRIVATE-fbPageAdminUpsell__showNarrow .messageBody{display:block;color:g ray} div.-cx-PRIVATE-fbPageAdminUpsell__showNarrow .passiveName{font-weight:bold} div.-cx-PRIVATE-fbPageAdminUpsell__vertical .fbEmuImage{float:none} div.-cx-PRIVATE-fbPageAdminUpsell__vertical, div.-cx-PRIVATE-fbPageAdminUpsell__ vertical .ego_column{width:122px} div.-cx-PRIVATE-fbPageAdminUpsell__linkImage img{max-width:100px;resize:both} div.-cx-PRIVATE-fbPageAdminUpsell__linkDesc{max-height:45px;overflow:hidden} div.-cx-PRIVATE-fbPageAdminUpsell__vertical .fbEmuStreamAttachmentOffset{borderleft:0;padding-left:0} .tinyViewport div.-cx-PRIVATE-fbTimelineStyleAds__offScreen, div.-cx-PRIVATE-fbT imelineStyleAds__offScreen{position:fixed !important;right:-300px !important;wid th:244px} .tinyViewport .-cx-PRIVATE-fbTimelineStyleAds__vertical div.-cx-PRIVATE-fbTimeli neStyleAds__offScreen, .-cx-PRIVATE-fbTimelineStyleAds__vertical div.-cx-PRIVATE -fbTimelineStyleAds__offScreen{width:122px} div.-cx-PRIVATE-fbTimelineStyleAds__vertical #pagelet_rhc_footer{display:none} div.-cx-PRIVATE-fbTimelineStyleAds__vertical .ego_column, div.-cx-PRIVATE-fbTime lineStyleAds__vertical{width:122px} div.-cx-PRIVATE-fbTimelineStyleAds__vertical .image_body_block{padding-top:0} div.-cx-PRIVATE-fbTimelineStyleAds__vertical .fbEmuImage{float:none} div.-cx-PRIVATE-fbTimelineStyleAds__root .uiSideHeader{background:none;border-bo ttom:1px solid #c8d1e2;border-top:0;padding:4px;margin-bottom:0} div.-cx-PRIVATE-fbTimelineStyleAds__root .ego_unit{margin-bottom:7px;padding-top :3px;border-color:#c8d1e2} div.-cx-PRIVATE-fbTimelineStyleAds__root div.ego_section > div{padding-left:0;pa dding-right:0} .-cx-PRIVATE-fbTimelineStyleAds__root .uiSideHeader h4{color:gray;font-weight:no rmal} .-cx-PRIVATE-fbTimelineStyleAds__vertical a.uiHeaderActions{display:none} .-cx-PRIVATE-fbTimelineStyleAds__topAligned{bottom:auto;top:50px} .timelineLayout .-cx-PRIVATE-fbTimelineStyleAds__root{bottom:15px;padding-top:12 px;width:244px} .pagesTimelineLayout .-cx-PRIVATE-fbTimelineStyleAds__root{padding-top:37px} .permalinkBody .-cx-PRIVATE-fbTimelineStyleAds__root .uiBlingBox{border-bottom:n one} button.async_saving .default_message, a.async_saving .default_message, form.async_saving .default_message, .saving_message{display:none} .default_message, button.async_saving .saving_message, a.async_saving .saving_message, form.async_saving .saving_message{display:inline} .async_throbber .async_saving{background:url(http://static.ak.fbcdn.net/rsrc.php /v2/yb/r/GsNJNwuI-UM.gif) no-repeat right;padding-right:20px} .async_throbber_left .async_saving{background:url(http://static.ak.fbcdn.net/rsr c.php/v2/yb/r/GsNJNwuI-UM.gif) no-repeat left;padding-left:20px} form{margin:0;padding:0} label{cursor:pointer;color:#666;font-weight:bold;vertical-align:middle} label input{font-weight:normal} textarea, .inputtext, .inputpassword{border:1px solid #bdc7d8;font-family:'lucid a grande',tahoma,verdana,arial,sans-serif;font-size:11px;margin:0;padding:3px} textarea{max-width:100%} select{border:1px solid #bdc7d8;font-family:'lucida grande',tahoma,verdana,arial ,sans-serif;font-size:11px;padding:2px} .inputtext, .inputpassword{padding-bottom:4px} .inputradio{padding:0;margin:0 5px 0 0;vertical-align:middle} .inputcheckbox{border:0;vertical-align:middle}

.inputbutton, .inputsubmit{border-style:solid;border-width:1px;border-color:#d9d fea #0e1f5b #0e1f5b #d9dfea;background-color:#3b5998;color:#fff;padding:2px 15px 3px 15px;text-align:center} .inputsubmit_disabled{background-color:#999;border-bottom:1px solid #000;borderright:1px solid #666;color:#fff} .inputaux{background:#f0f0f0;border-color:#e7e7e7 #666 #666 #e7e7e7;color:#000} .inputaux_disabled{color:#999} .inputsearch{background:#fff url(http://static.ak.fbcdn.net/rsrc.php/v2/yV/r/IJY gcESal33.png) no-repeat left 4px;padding-left:17px} body{background:#fff;font-size:11px;font-family:'lucida grande',tahoma,verdana,a rial,sans-serif;color:#333;line-height:1.28;margin:0;padding:0;text-align:left;d irection:ltr;unicode-bidi:embed} h1, h2, h3, h4, h5, h6{font-size:13px;color:#333;margin:0;padding:0} h1{font-size:14px} h4, h5{font-size:11px} p{margin:1em 0} a{cursor:pointer;color:#3b5998;text-decoration:none} a:hover{text-decoration:underline} img{border:0} td, td.label{font-size:11px;text-align:left} dd{color:#000} dt{color:#777} ul{list-style-type:none;margin:0;padding:0} abbr{border-bottom:none} hr{background:#d9d9d9;border-width:0;color:#d9d9d9;height:1px} .clearfix:after{clear:both;content:".";display:block;font-size:0;height:0;line-h eight:0;visibility:hidden} .clearfix{zoom:1} .datawrap{word-wrap:break-word} .word_break{display:inline-block} wbr:after{content:"\00200B"} .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .img_loading{position:absolute;top:-9999999px} .aero{opacity:.5} .column{float:left} .center{margin-left:auto;margin-right:auto} #facebook .hidden_elem{display:none !important} #facebook .invisible_elem{visibility:hidden} #facebook .accessible_elem{left:-9999px;position:fixed} .direction_ltr{direction:ltr} .direction_rtl{direction:rtl} .text_align_ltr{text-align:left} .text_align_rtl{text-align:right} .DOMControl_placeholder{color:#777} .no_js .DOMControl_placeholder{color:#000} body{overflow-y:scroll} .mini_iframe, .serverfbml_iframe{overflow-y:visible} .auto_resize_iframe{height:auto;overflow:hidden} .pipe{color:gray;padding:0 3px} #content{width:auto;padding:0;margin:0} .profile #content, .home #content, .search #content{min-height:600px} .UIStandardFrame_Container{width:960px;padding-top:20px;margin:0 auto} .UIStandardFrame_Content{width:760px;float:left;margin:0;padding:0} .UIStandardFrame_SidebarAds{width:200px;padding:0;margin:0;float:right} .UIFullPage_Container{width:940px;padding:20px 12px 0;margin:0 auto} .empty_message{font-size:13px;line-height:17px;padding:20px 20px 50px 20px;textalign:center;background:#f7f7f7} .see_all{text-align:right} .standard_status_element{visibility:hidden} .standard_status_element.async_saving{visibility:visible}

img.tracking_pixel{height:1px;position:absolute;visibility:hidden;width:1px} #dropmenu_container{display:block;height:0;margin:0 auto;padding:0;position:abso lute;width:964px;z-index:300} .inlineBlock{display:inline-block;zoom:1} .text_exposed_root{display:inline} .text_exposed .text_exposed_show{display:inline} .text_exposed_show, .text_exposed .text_exposed_hide{display:none} .text_exposed_link{font-size:9px;padding:0 12px 0 0;white-space:nowrap} .text_exposed_link_icon{margin:0 0 -1px 4px} .text_exposed .text_exposed_link{display:none !important} button.as_link{background:none;border:none;color:#3b5998;cursor:pointer;font-fam ily:'lucida grande',tahoma,verdana,arial,sans-serif;font-size:100%;margin:0;over flow:visible;padding:0;text-align:left;width:auto} button.as_link:hover span, button.as_link:focus span{text-decoration:underline} button.as_link .button_img{margin:0 6px 0 0;vertical-align:text-bottom;width:16p x;height:16px} .sidebarMode #chatFriendsOnline{display:none} #chatFriendsOnline .chatGoOnlineLink span{background:url(http://static.ak.fbcdn. net/rsrc.php/v2/yW/r/AebrcwrBeG6.png) no-repeat right 3px;padding:0 12px 0 2px} #chatFriendsOnline .chatGoOnlineLink, #chatFriendsOnline .chatGoOnlineLink:hover , #chatFriendsOnline .chatReconnectLink, #chatFriendsOnline .chatReconnectLink:h over{margin:3px 0 0 7px;text-decoration:none} #chatFriendsOnline .fbChatReconnecting{display:inline-block} #chatFriendsOnline .chatReconnectLink .img{margin-top:7px;background-image:url(h ttp://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no -repeat;background-position:-186px -67px;height:13px;width:14px} #chatFriendsOnline .fbChatOfflineMessage, #chatFriendsOnline .fbChatDisconnected Message{padding:0 5px 0 1px} #chatFriendsOnline.disconnected .uiFacepileItem .img{opacity:.3} #chatFriendsOnline .typeaheadContainer td:first-child{width:100%} #chatFriendsOnline .sidebarBtn{display:none;margin-left:3px} .sidebarCapable #chatFriendsOnline .sidebarBtn{display:inline-block} .fbChatOrderedList .item, .fbChatOrderedList .separator{float:left;width:100%} .fbChatOrderedList .item a{color:#333;display:block;padding:2px 8px 2px 10px;pos ition:relative} .fbChatOrderedList .item a:hover, .fbChatOrderedList .item a.selected{background -color:#e0e4ee;text-decoration:none} .fbChatOrderedList .item .pic{float:left;height:28px;margin-right:8px;width:28px } .fbChatOrderedList .item .name{line-height:28px;overflow:hidden;text-overflow:el lipsis;white-space:nowrap} .fbChatOrderedList .item .icons{float:right;height:28px;line-height:24px;marginleft:4px} .fbChatOrderedList .item .icon{margin-right:4px;vertical-align:middle} .fbChatOrderedList .item .status{display:inline-block;height:14px;width:7px} .fbChatOrderedList .item .timeline_icon{display:none;height:21px;width:19px;outl ine:none} .fbChatOrderedList .item:hover .timeline_icon{display:inline-block;background-im age:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);backgroundrepeat:no-repeat;background-position:-171px -45px} .fbChatOrderedList .item:hover .timeline_icon:active{background-image:url(http:/ /static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repe at;background-position:-191px -45px} .fbChatOrderedList .item.active .status{background-image:url(http://static.ak.fb cdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;background -position:-845px -167px} .fbChatOrderedList .item.mobile .status{height:12px;width:8px;background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repea t:no-repeat;background-position:-270px -30px}

.fbChatOrderedList .item.greenring .status{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;backgro und-position:-845px -152px} .fbChatOrderedList .item.greenphone .status{height:12px;width:8px;background-ima ge:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-r epeat:no-repeat;background-position:-279px -30px} .fbChatOrderedList .item.invis{opacity:.3} .fbChatOrderedList .separator{display:table;height:32px;-o-user-select:none} .fbChatOrderedList .separator .outer{display:table-cell;vertical-align:middle} .fbChatOrderedList .separator .outer .inner{cursor:pointer;position:relative;tex t-align:center;top:-50%;z-index:1} .fbChatOrderedList .separator .text{background-color:#fff;color:#989db3;display: inline-block;padding:0 5px;font-size:9px;font-weight:bold;text-transform:upperca se} .fbChatOrderedList .separator .subheaderText{color:#989db3;display:block;padding :0 25px 5px 25px;text-align:center} .fbChatOrderedList .subheaderText a{color:#6d84b4} .fbChatOrderedList .separator .dive{left:0;position:absolute;top:50%;width:100%; z-index:-1} .fbChatOrderedList .separator .dive .bar{border-bottom:2px solid #ccd0da;display :block;margin:0 5px} .uiContextualDialogContent .orderedListHovercard{margin:10px} .fbChatSidebar .fbChatTypeahead, .fbChatSidebar .fbChatTypeahead .wrap{border:0} .fbChatSidebar .fbChatTypeahead .textInput{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;backgro und-position:left -13px;background-color:#f4f6f9;box-shadow:inset 2px 0 0 -1px # e0e2e9, inset 0 1px #fff;box-sizing:border-box;color:#555;height:24px;padding-le ft:20px;padding-right:25px} .fbChatSidebar .fbChatTypeahead .textInput:focus{background-color:#fff} .fbChatSidebar{background-clip:padding-box;background-color:#f2f4f8;border-left: 1px solid rgba(0, 0, 0, .4);box-shadow:inset 2px 0 2px -2px #b2b9c9;display:none ;height:100%;position:fixed;top:0;right:0;width:205px;z-index:300} .sidebarMode .fbChatSidebar{display:block} .fbChatSidebar .fbChatSidebarBody{overflow-x:hidden;overflow-y:auto;position:rel ative} .fbChatSidebar .scrollableOrderedList{height:100%;width:100% !important} .fbChatSidebar .scrollableOrderedList .uiScrollableAreaTrack{top:10px} .fbChatSidebar .fbChatOrderedList, .fbChatSidebar .fbChatTypeaheadView{padding-t op:8px} .fbChatSidebar .fbChatOrderedList .item a{padding-left:2px} .fbChatSidebar .fbChatOrderedList .item a:hover{box-shadow:inset 2px 0 2px -2px #b2b9c9} .fbChatSidebar .fbChatOrderedList .separator .text{background-color:#f2f4f8} .fbChatSidebar .fbChatSidebarMessage{background-color:#fff;border-top:1px solid #ccd0db;box-shadow:inset 0 1px #fafafa;display:none;padding:8px} .fbChatSidebar.notice .fbChatSidebarMessage, .fbChatSidebar.error .fbChatSidebar Message, .fbChatSidebar.offline .fbChatSidebarMessage, .fbChatSidebar.blackbird .fbChatSidebarMessage, .fbChatSidebar.upsell .fbChatSidebarMessage{display:block } .fbChatSidebar.blackbird .fbChatSidebarMessage .message, .fbChatSidebar.upsell . fbChatSidebarMessage .message{color:#333} .fbChatSidebar .fbChatSidebarMessage .img{float:left;margin-top:3px} .fbChatSidebar.notice .fbChatSidebarMessage .img{display:none} .fbChatSidebar.error .fbChatSidebarMessage .img{margin-top:7px} .fbChatSidebar.offline .fbChatSidebarMessage .img{background-image:url(http://st atic.ak.fbcdn.net/rsrc.php/v2/yA/r/CoiMBWx8lL7.png);background-repeat:no-repeat; background-position:-153px -153px;height:10px;width:16px} .fbChatSidebar.error .fbChatSidebarMessage .img{background-image:url(http://stat ic.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;ba ckground-position:-186px -67px;height:13px;width:14px}

.fbChatSidebar.offline .fbChatSidebarMessage .message, .fbChatSidebar.error .fbC hatSidebarMessage .message{margin-left:24px} .fbChatSidebar .fbChatSidebarMessage .message .fbChatReconnectLink{white-space:n owrap} .fbChatSidebar .fbChatSidebarFooter{border-top:1px solid #c9d0da;bottom:0;positi on:absolute} .fbChatSidebar .fbChatSidebarFooter td:first-child{vertical-align:top;width:100% } .fbChatSidebar .fbChatSidebarFooter .button{border-left:1px solid #c9d0da;box-sh adow:inset 0 1px #fff;display:block;height:24px;width:26px} .fbChatSidebar .fbChatSidebarFooter .button:hover{background-color:#fff} .fbChatSidebar .fbChatSidebarFooter .toggle{background-image:url(http://static.a k.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;backgr ound-position:-257px -5px} .fbChatTypeahead .throbber{display:none;position:absolute;margin-top:-5px;right: 6px;top:50%} .fbChatTypeahead.hasValue .clear, .fbChatTypeahead.hasValue.typeaheadLoading .throbber{display:block} .fbChatTypeahead.typeaheadLoading .clear{display:none} .fbChatTypeaheadView li{color:#333;cursor:pointer;padding:2px 20px 2px 10px;posi tion:relative} .fbChatTypeaheadView li.selected{background-color:#eff2f7} .fbChatTypeaheadView li img{float:left;height:28px;margin-right:5px;width:28px} .fbChatTypeaheadView li .text{display:block;line-height:28px;overflow:hidden;tex t-overflow:ellipsis;white-space:nowrap} .fbChatTypeaheadView li i{display:block;height:14px;margin-top:-7px;position:abs olute;right:8px;top:50%;width:7px} .fbChatTypeaheadView li.active i{background-image:url(http://static.ak.fbcdn.net /rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;background-positi on:-845px -167px} .fbChatTypeaheadView li.mobile i{height:12px;width:8px;margin-top:-6px;right:9px ;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.pn g);background-repeat:no-repeat;background-position:-270px -30px} .fbChatTypeaheadView li.invis{opacity:.3} .fbChatTypeaheadView .noResults{padding:10px} .uiComposer{border-bottom:1px solid #ccc} .uiComposerTopBorder{border-top:1px solid #ccc} .uiComposerOpen, .no_js .uiComposer{border-bottom:none} .uiComposer .attachmentLoader{line-height:normal;position:absolute;right:2px;top :9px} .uiComposer .attachmentSentenceBar{line-height:22px;padding:3px 0 6px;position:r elative;z-index:2;zoom:1} .uiComposer .attachmentCloseBtn{position:absolute;right:2px;top:7px} .uiComposer .attachmentFrame{border:1px solid #b4bbcd;border-bottom-color:#ccc} .uiComposerHideMessageBox .attachmentFrame, .uiComposerHideInput .attachmentFram e{border-bottom-color:#b4bbcd} .uiComposerHideContent .attachmentFrame{display:none} .uiComposerHideStatusBox .inputContainer{display:none} .uiComposerOpen .focus_target{padding-bottom:10px} .uiComposerWhiteMessageBox .child_was_focused{border-bottom:1px solid #e9e9e9} .uiComposerHideMessageBox .child_was_focused{border-bottom:none} .uiComposer .showWhenOpen, .uiComposer .showOnceInteracted{display:none !importa nt} .uiComposerOpen .showWhenOpen, .no_js .uiComposer .showWhenOpen, .uiComposerInte racted .showOnceInteracted, .uiComposer .child_was_focused .showOnceInteracted{d isplay:block !important} .uiComposer .collapsedPostButtonContainer{text-align:right} .uiComposer .collapsedPostButton{margin-right:1px;padding:2px 16px} .uiComposer .child_was_focused .collapsedPostButton{display:none} .uiComposer .tallComposer .mentionsTextarea{height:34px}

.uiComposerAttachment .attachmentLink{outline:none} .uiComposerAttachment .attachmentLink:focus{text-decoration:underline} .uiComposerAttachment .selected, .uiComposerAttachmentSelected .normal{display:none} .uiComposerAttachmentSelected .selected{display:inline-block} .uiComposerAttachment .nub{background:url(http://static.ak.fbcdn.net/rsrc.php/v2 /yf/r/PfBgtiydy5U.gif) no-repeat center top;height:7px;left:2px;position:absolut e;top:18px;width:11px} .uiMetaComposer .uiComposerAttachment .nub{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/yb/r/ALnh3ly4npU.gif);left:4px;top:19px} span.uiComposerAttachment{color:#333;display:inline-block} .uiComposerAttachments{padding:7px 0 8px;position:relative;z-index:2} .uiComposerOpen .uiComposerAttachments{padding-bottom:10px} .uiComposerMetaContainer{background-color:#fff;border:1px solid #b4bbcd;position :relative;z-index:1} .uiMetaComposer .uiComposerMetaContainer .attachmentFrame{border:0} .uiMetaComposer.uiComposerWhiteMessageBox .child_was_focused{border:none} .uiMetaComposerMessageBox{zoom:1} .uiComposerHideMessageBox .uiMetaComposerMessageBox{display:none} .uiComposerWhiteMessageBox .uiComposerMessageBox{background-color:#fff;border-wi dth:0;padding:0} .uiMetaComposerMessageBoxTable{border-spacing:0;table-layout:fixed;width:100%} .uiMetaComposerMessageBoxTable td{padding:0;vertical-align:top;word-wrap:break-w ord} .uiMetaComposerMessageBoxTable .attachmentBottomRow{height:0} .uiMetaComposerMessageBoxTable .attachmentBottomRow td{vertical-align:bottom} .uiMetaComposerMessageBox .inputContainer{background-color:#fff;zoom:1} .uiComposerHideInput .uiMetaComposerMessageBoxTable{display:none} .uiMetaComposerMessageBox .uiComposerMessageBoxControls{margin:0} .uiMetaComposerMessageBox .uiComposerMessageBoxMentions .inputContainer{border:n one;padding:0;position:relative;zoom:1} .uiMetaComposerMessageBox .uiComposerMention .inputContainer{z-index:2} .uiMetaComposerMessageBoxShelf{background-color:#f2f2f2;border-top:1px solid #e6 e6e6} .uiMetaComposerMessageBox .composerTypeahead{border:0} .uiMetaComposerMessageBox .composerTypeahead .wrap{padding:5px !important;border :0} .uiMetaComposerMessageBox .uiMentionsInput .highlighter{font-size:13px;left:1px; top:1px} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .metadataFragment{color: gray} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .withToken, .uiMetaCompo serMessageBox .uiMentionsInput .highlighter .timeToken, .uiMetaComposerMessageBo x .uiMentionsInput .highlighter .placeToken{z-index:2;position:relative} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .withToken{cursor:pointe r;color:#3b5998} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .withToken:hover{text-de coration:underline} .uiMetaComposerMessageBox .input{background:transparent;border-width:0;font-size :13px;height:17px;margin:0;outline:none;padding:0;resize:none;vertical-align:bot tom;width:100%} .child_was_focused .uiMetaComposerMessageBox .input{min-height:48px} .child_was_focused .uiMetaComposerMessageBox .inputContainer{min-height:58px} .uiMetaComposerMessageBox .composerTypeahead .uiStickyPlaceholderInput{width:100 %} div.uiMetaComposerMessageBox .composerTypeahead .placeholder{font-size:13px;padd ing:0} .uiMetaComposerMessageBox .attachmentMetaArea{position:relative} .uiMetaComposerMessageBox .textBlurb label{font-weight:normal;vertical-align:bas eline}

.uiMetaComposerMessageBox .textBlurb input{vertical-align:middle} .uiMetaComposerMessageBox .uiComposerTagControls{border-right:1px solid #e0e0e0; display:inline-block;float:left;height:30px} .uiMetaComposerMessageBox .uiComposerTagControls:hover{background-color:#e9e9e9} .uiMetaComposerMessageBox .attachmentBarArea .uiComposerTagControlOpen{backgroun d-color:#fafafa;border-top:1px solid #f2f2f2;margin-top:-1px} .uiMetaComposerMessageBox .uiComposerBarRightArea{margin:4px} .uiMetaComposerMessageBox .submitBtn{padding:2px 16px} .uiMetaComposerMessageBox .fakePrivacyWidget, .uiMetaComposerMessageBox .fakePri vacyWidget:active, .uiMetaComposerMessageBox .fakePrivacyWidget:focus, .uiMetaCo mposerMessageBox .fakePrivacyWidget:hover{border-color:transparent;margin:2px 6p x;padding:0} .uiMetaComposerMessageBox .fakePrivacyWidget .uiButtonText{font-weight:normal;co lor:gray} .uiMetaComposer .ComposerCitySharer, .uiMetaComposer .ComposerMusicSharer{color: gray;line-height:30px;position:relative} .uiMetaComposer .friendsTokenizer, .uiMetaComposer .taggerLocationSharer, .uiMet aComposer .musicTypeahead{border:0;border-top:1px dashed #bdc7d8;padding:0} div div.uiFriendsTokenizerTypeaheadView{width:300px} .uiMetaComposer .friendsTokenizer .tokenarea{padding-left:2px} .uiMetaComposer .attachmentBottomArea .inputtext{border:none;min-width:160px;out line:none} .uiMetaComposer .friendsTokenizer .uiTypeaheadDisabled{display:none} .uiMetaComposer .taggerLocationSharer .wrap, .uiMetaComposer .musicTypeahead .wr ap{border:0} .uiMetaComposer .taggerLocationSharer .uiStickyPlaceholderInput, .uiMetaComposer .musicTypeahead .uiStickyPlaceholderInput{width:100%} .uiMetaComposerMessageBox .cameraIcon{background-image:url(http://static.ak.fbcd n.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-p osition:-90px -177px;width:29px} .uiMetaComposerMessageBox .cameraIconSelected{background-image:url(http://static .ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;back ground-position:-60px -177px;width:29px} .uiMetaComposerMessageBox .friendTaggerIcon{background-image:url(http://static.a k.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backgr ound-position:-30px -177px;width:29px} .uiMetaComposerMessageBox .friendTaggerIconSelected{background-image:url(http:// static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repea t;background-position:-314px -102px;width:29px} .uiMetaComposerMessageBox .musicTaggerIcon{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backgro und-position:-210px -177px;width:29px} .uiMetaComposerMessageBox .musicTaggerIconSelected{background-image:url(http://s tatic.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat ;background-position:-150px -177px;width:29px} .uiMetaComposerMessageBox .placeTaggerIcon{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backgro und-position:-224px -102px;width:29px} .uiMetaComposerMessageBox .placeTaggerIconSelected{background-image:url(http://s tatic.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat ;background-position:-254px -102px;width:29px} .fbNub, .fbNubGroup, .fbDock .nubContainer > div, .fbDock .fbNubGroup > div{floa t:left;position:relative} .fbNub{box-shadow:0 1px 1px rgba(0, 0, 0, .3)} .fbNub.openToggler{box-shadow:none} .lNubContainer .fbNub{margin-right:4px} .rNubContainer .fbNub{margin-left:4px} .fbNubButton{background:#ebeef4;border:1px solid rgba(29, 49, 91, .3);border-bot tom:0;box-shadow:inset 0 1px rgba(255, 255, 255, .5);color:#333;display:block;fo nt-weight:bold;height:16px;outline:none;padding:4px 5px;position:relative;z-inde

x:1} .fbNubButton, .fbNubFlyoutTitlebar, .fbNub .noTitlebar{border-top-left-radius:1p x 1px;border-top-right-radius:1px 1px} .fbNubButton:focus, .fbNubButton:hover{background:#f5f7fa;text-decoration:none} .openToggler .fbNubButton{background:#fff;border-radius:0;border-top:0;box-shado w:0 1px 1px rgba(0, 0, 0, .3);padding:5px} .fbNubFlyout{bottom:25px;box-shadow:0 1px 1px rgba(0, 0, 0, .3);position:absolut e} .fbNub.maxHeight .fbNubFlyoutOuter{height:9999px} .fbNub .noTitlebar{border-top:1px solid rgba(0, 0, 0, .3)} .lNubContainer .fbNubFlyout, .rNubContainer .fbNub .swapDirection{left:0;right:a uto} .rNubContainer .fbNubFlyout, .lNubContainer .fbNub .swapDirection{left:auto;righ t:0} .fbNubFlyoutInner{border-bottom:1px solid rgba(0, 0, 0, .3)} .fbNubFlyoutTitlebar, .menuOpened .fbNubFlyoutTitlebar, .menuOpened .fbNubFlyout Titlebar:hover{background-color:#6d84b4;border:1px solid rgba(0, 39, 121, .76);b order-bottom:none;border-top-left-radius:1px 1px;border-top-right-radius:1px 1px ;cursor:pointer} .fbNubFlyoutTitlebar:hover{background-color:#627bae} .menuOpened .fbNubFlyoutTitlebar, .menuOpened .fbNubFlyoutTitlebar:hover{box-sha dow:none} .fbNubFlyoutTitlebar .titlebarLabel{color:#fff;font-weight:bold;line-height:18px ;padding:3px 7px 4px} .fbNubFlyoutHeader, .fbNubFlyoutBody, .fbNubFlyoutFooter{background-color:#fff;b order:1px solid rgba(0, 0, 0, .3);border-width:0 1px} .fbNubFlyoutBody{overflow-x:hidden;overflow-y:auto;position:relative} .fbNubButton, .fbNubButton:hover, .openToggler .fbNubButton, .fbNubFlyout, .fbNu bFlyout .flyoutInner, .fbNubFlyoutTitlebar, .fbNubFlyoutHeader, .fbNubFlyoutBody , .fbNubFlyoutFooter{background-clip:padding-box} .fbDockWrapper{bottom:0;direction:ltr;height:25px;left:0;position:fixed;right:0; z-index:300} .sidebarMode .fbDockWrapper{right:205px} .fbDockWrapperLeft{right:auto} .fbDockWrapperRight{left:auto} .fbDock{margin:0 15px 0 0} .fbDock .lNubContainer{float:left} .fbDock .rNubContainer{float:right} .-cx-PRIVATE-fbEmoji__icon{display:inline-block;vertical-align:top} .-cx-PRIVATE-fbEmoji__size_16{height:16px;width:16px;margin:0 1px 0 1px} .-cx-PRIVATE-fbEmoji__icon_1f300.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1558px} .-cx-PRIVATE-fbEmoji__icon_1f302.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1575px} .-cx-PRIVATE-fbEmoji__icon_1f30a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1575px} .-cx-PRIVATE-fbEmoji__icon_1f319.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1592px} .-cx-PRIVATE-fbEmoji__icon_1f31f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1592px} .-cx-PRIVATE-fbEmoji__icon_1f331.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1609px} .-cx-PRIVATE-fbEmoji__icon_1f334.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:-17px -1609px} .-cx-PRIVATE-fbEmoji__icon_1f335.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1626px} .-cx-PRIVATE-fbEmoji__icon_1f337.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1626px} .-cx-PRIVATE-fbEmoji__icon_1f338.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1643px} .-cx-PRIVATE-fbEmoji__icon_1f339.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1643px} .-cx-PRIVATE-fbEmoji__icon_1f33a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1660px} .-cx-PRIVATE-fbEmoji__icon_1f33b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1660px} .-cx-PRIVATE-fbEmoji__icon_1f33e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1813px} .-cx-PRIVATE-fbEmoji__icon_1f340.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1677px} .-cx-PRIVATE-fbEmoji__icon_1f341.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1694px} .-cx-PRIVATE-fbEmoji__icon_1f342.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1694px} .-cx-PRIVATE-fbEmoji__icon_1f343.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1711px} .-cx-PRIVATE-fbEmoji__icon_1f34a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1711px} .-cx-PRIVATE-fbEmoji__icon_1f34e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1728px} .-cx-PRIVATE-fbEmoji__icon_1f353.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1728px} .-cx-PRIVATE-fbEmoji__icon_1f354.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1745px} .-cx-PRIVATE-fbEmoji__icon_1f378.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1745px} .-cx-PRIVATE-fbEmoji__icon_1f37a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1762px} .-cx-PRIVATE-fbEmoji__icon_1f381.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1762px} .-cx-PRIVATE-fbEmoji__icon_1f383.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1779px} .-cx-PRIVATE-fbEmoji__icon_1f384.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:-17px -1779px} .-cx-PRIVATE-fbEmoji__icon_1f385.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1796px} .-cx-PRIVATE-fbEmoji__icon_1f388.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1796px} .-cx-PRIVATE-fbEmoji__icon_1f389.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1677px} .-cx-PRIVATE-fbEmoji__icon_1f38d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1303px} .-cx-PRIVATE-fbEmoji__icon_1f38e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1303px} .-cx-PRIVATE-fbEmoji__icon_1f38f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1320px} .-cx-PRIVATE-fbEmoji__icon_1f390.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1320px} .-cx-PRIVATE-fbEmoji__icon_1f393.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1337px} .-cx-PRIVATE-fbEmoji__icon_1f3b5.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1337px} .-cx-PRIVATE-fbEmoji__icon_1f3b6.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1354px} .-cx-PRIVATE-fbEmoji__icon_1f3bc.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1354px} .-cx-PRIVATE-fbEmoji__icon_1f40d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1371px} .-cx-PRIVATE-fbEmoji__icon_1f40e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1371px} .-cx-PRIVATE-fbEmoji__icon_1f411.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1388px} .-cx-PRIVATE-fbEmoji__icon_1f412.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1388px} .-cx-PRIVATE-fbEmoji__icon_1f414.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1405px} .-cx-PRIVATE-fbEmoji__icon_1f417.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1405px} .-cx-PRIVATE-fbEmoji__icon_1f418.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1541px} .-cx-PRIVATE-fbEmoji__icon_1f419.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2238px} .-cx-PRIVATE-fbEmoji__icon_1f41a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:0 -1439px} .-cx-PRIVATE-fbEmoji__icon_1f41b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1439px} .-cx-PRIVATE-fbEmoji__icon_1f41f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1456px} .-cx-PRIVATE-fbEmoji__icon_1f420.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1456px} .-cx-PRIVATE-fbEmoji__icon_1f421.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1473px} .-cx-PRIVATE-fbEmoji__icon_1f425.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1473px} .-cx-PRIVATE-fbEmoji__icon_1f426.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1490px} .-cx-PRIVATE-fbEmoji__icon_1f427.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1490px} .-cx-PRIVATE-fbEmoji__icon_1f428.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1507px} .-cx-PRIVATE-fbEmoji__icon_1f429.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1507px} .-cx-PRIVATE-fbEmoji__icon_1f42b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1524px} .-cx-PRIVATE-fbEmoji__icon_1f42c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1524px} .-cx-PRIVATE-fbEmoji__icon_1f42d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1541px} .-cx-PRIVATE-fbEmoji__icon_1f42e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1422px} .-cx-PRIVATE-fbEmoji__icon_1f42f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2136px} .-cx-PRIVATE-fbEmoji__icon_1f430.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2221px} .-cx-PRIVATE-fbEmoji__icon_1f431.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2221px} .-cx-PRIVATE-fbEmoji__icon_1f433.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2204px} .-cx-PRIVATE-fbEmoji__icon_1f434.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2204px} .-cx-PRIVATE-fbEmoji__icon_1f435.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2187px} .-cx-PRIVATE-fbEmoji__icon_1f437.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:0 -2187px} .-cx-PRIVATE-fbEmoji__icon_1f438.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2170px} .-cx-PRIVATE-fbEmoji__icon_1f439.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2170px} .-cx-PRIVATE-fbEmoji__icon_1f43a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2238px} .-cx-PRIVATE-fbEmoji__icon_1f43b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2153px} .-cx-PRIVATE-fbEmoji__icon_1f43e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2306px} .-cx-PRIVATE-fbEmoji__icon_1f440.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2136px} .-cx-PRIVATE-fbEmoji__icon_1f442.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2119px} .-cx-PRIVATE-fbEmoji__icon_1f443.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2119px} .-cx-PRIVATE-fbEmoji__icon_1f444.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2102px} .-cx-PRIVATE-fbEmoji__icon_1f445.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2102px} .-cx-PRIVATE-fbEmoji__icon_1f446.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2085px} .-cx-PRIVATE-fbEmoji__icon_1f447.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2085px} .-cx-PRIVATE-fbEmoji__icon_1f448.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2153px} .-cx-PRIVATE-fbEmoji__icon_1f449.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2289px} .-cx-PRIVATE-fbEmoji__icon_1f44a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2306px} .-cx-PRIVATE-fbEmoji__icon_1f44b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2323px} .-cx-PRIVATE-fbEmoji__icon_1f44c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2323px} .-cx-PRIVATE-fbEmoji__icon_1f44d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2289px} .-cx-PRIVATE-fbEmoji__icon_1f44e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2272px} .-cx-PRIVATE-fbEmoji__icon_1f44f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:0 -2272px} .-cx-PRIVATE-fbEmoji__icon_1f450.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2255px} .-cx-PRIVATE-fbEmoji__icon_1f466.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2255px} .-cx-PRIVATE-fbEmoji__icon_1f467.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1932px} .-cx-PRIVATE-fbEmoji__icon_1f468.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1813px} .-cx-PRIVATE-fbEmoji__icon_1f469.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1830px} .-cx-PRIVATE-fbEmoji__icon_1f46b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1830px} .-cx-PRIVATE-fbEmoji__icon_1f46e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1847px} .-cx-PRIVATE-fbEmoji__icon_1f46f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1847px} .-cx-PRIVATE-fbEmoji__icon_1f471.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1864px} .-cx-PRIVATE-fbEmoji__icon_1f472.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1864px} .-cx-PRIVATE-fbEmoji__icon_1f473.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1881px} .-cx-PRIVATE-fbEmoji__icon_1f474.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1881px} .-cx-PRIVATE-fbEmoji__icon_1f475.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1898px} .-cx-PRIVATE-fbEmoji__icon_1f476.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1898px} .-cx-PRIVATE-fbEmoji__icon_1f477.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1915px} .-cx-PRIVATE-fbEmoji__icon_1f478.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1915px} .-cx-PRIVATE-fbEmoji__icon_1f47b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1932px} .-cx-PRIVATE-fbEmoji__icon_1f47c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2068px} .-cx-PRIVATE-fbEmoji__icon_1f47d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1949px} .-cx-PRIVATE-fbEmoji__icon_1f47e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:-17px -1949px} .-cx-PRIVATE-fbEmoji__icon_1f47f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1966px} .-cx-PRIVATE-fbEmoji__icon_1f480.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1966px} .-cx-PRIVATE-fbEmoji__icon_1f482.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1983px} .-cx-PRIVATE-fbEmoji__icon_1f483.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1983px} .-cx-PRIVATE-fbEmoji__icon_1f485.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2000px} .-cx-PRIVATE-fbEmoji__icon_1f48b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2000px} .-cx-PRIVATE-fbEmoji__icon_1f48f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2017px} .-cx-PRIVATE-fbEmoji__icon_1f490.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2017px} .-cx-PRIVATE-fbEmoji__icon_1f491.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2034px} .-cx-PRIVATE-fbEmoji__icon_1f493.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2034px} .-cx-PRIVATE-fbEmoji__icon_1f494.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2051px} .-cx-PRIVATE-fbEmoji__icon_1f496.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -2051px} .-cx-PRIVATE-fbEmoji__icon_1f497.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -2068px} .-cx-PRIVATE-fbEmoji__icon_1f498.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -997px} .-cx-PRIVATE-fbEmoji__icon_1f499.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -776px} .-cx-PRIVATE-fbEmoji__icon_1f49a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -776px} .-cx-PRIVATE-fbEmoji__icon_1f49b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -759px} .-cx-PRIVATE-fbEmoji__icon_1f49c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -759px} .-cx-PRIVATE-fbEmoji__icon_1f49d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -742px} .-cx-PRIVATE-fbEmoji__icon_1f4a2.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:0 -742px} .-cx-PRIVATE-fbEmoji__icon_1f4a4.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -725px} .-cx-PRIVATE-fbEmoji__icon_1f4a6.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -708px} .-cx-PRIVATE-fbEmoji__icon_1f4a8.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -725px} .-cx-PRIVATE-fbEmoji__icon_1f4a9.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -895px} .-cx-PRIVATE-fbEmoji__icon_1f4aa.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -810px} .-cx-PRIVATE-fbEmoji__icon_1f4bb.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -810px} .-cx-PRIVATE-fbEmoji__icon_1f4bd.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -827px} .-cx-PRIVATE-fbEmoji__icon_1f4be.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1422px} .-cx-PRIVATE-fbEmoji__icon_1f4bf.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -827px} .-cx-PRIVATE-fbEmoji__icon_1f4c0.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -793px} .-cx-PRIVATE-fbEmoji__icon_1f4de.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -844px} .-cx-PRIVATE-fbEmoji__icon_1f4e0.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -844px} .-cx-PRIVATE-fbEmoji__icon_1f4f1.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -861px} .-cx-PRIVATE-fbEmoji__icon_1f4f2.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -861px} .-cx-PRIVATE-fbEmoji__icon_1f4fa.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -878px} .-cx-PRIVATE-fbEmoji__icon_1f514.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -878px} .-cx-PRIVATE-fbEmoji__icon_1f601.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -895px} .-cx-PRIVATE-fbEmoji__icon_1f602.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -708px} .-cx-PRIVATE-fbEmoji__icon_1f603.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -589px} .-cx-PRIVATE-fbEmoji__icon_1f604.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:0 -589px} .-cx-PRIVATE-fbEmoji__icon_1f606.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -572px} .-cx-PRIVATE-fbEmoji__icon_1f609.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -572px} .-cx-PRIVATE-fbEmoji__icon_1f60b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -555px} .-cx-PRIVATE-fbEmoji__icon_1f60c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -555px} .-cx-PRIVATE-fbEmoji__icon_1f60d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -538px} .-cx-PRIVATE-fbEmoji__icon_1f60f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -538px} .-cx-PRIVATE-fbEmoji__icon_1f612.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -521px} .-cx-PRIVATE-fbEmoji__icon_1f613.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -521px} .-cx-PRIVATE-fbEmoji__icon_1f614.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -606px} .-cx-PRIVATE-fbEmoji__icon_1f616.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -606px} .-cx-PRIVATE-fbEmoji__icon_1f618.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -623px} .-cx-PRIVATE-fbEmoji__icon_1f61a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -623px} .-cx-PRIVATE-fbEmoji__icon_1f61c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -640px} .-cx-PRIVATE-fbEmoji__icon_1f61d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -640px} .-cx-PRIVATE-fbEmoji__icon_1f61e.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -657px} .-cx-PRIVATE-fbEmoji__icon_1f620.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -657px} .-cx-PRIVATE-fbEmoji__icon_1f621.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -674px} .-cx-PRIVATE-fbEmoji__icon_1f622.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -674px} .-cx-PRIVATE-fbEmoji__icon_1f623.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -691px} .-cx-PRIVATE-fbEmoji__icon_1f624.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:-17px -691px} .-cx-PRIVATE-fbEmoji__icon_1f625.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -793px} .-cx-PRIVATE-fbEmoji__icon_1f628.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1099px} .-cx-PRIVATE-fbEmoji__icon_1f629.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1116px} .-cx-PRIVATE-fbEmoji__icon_1f62a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1116px} .-cx-PRIVATE-fbEmoji__icon_1f62b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1133px} .-cx-PRIVATE-fbEmoji__icon_1f62d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1133px} .-cx-PRIVATE-fbEmoji__icon_1f630.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1150px} .-cx-PRIVATE-fbEmoji__icon_1f631.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1150px} .-cx-PRIVATE-fbEmoji__icon_1f632.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1167px} .-cx-PRIVATE-fbEmoji__icon_1f633.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1167px} .-cx-PRIVATE-fbEmoji__icon_1f635.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1184px} .-cx-PRIVATE-fbEmoji__icon_1f637.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1286px} .-cx-PRIVATE-fbEmoji__icon_1f638.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1201px} .-cx-PRIVATE-fbEmoji__icon_1f639.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1201px} .-cx-PRIVATE-fbEmoji__icon_1f63a.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1218px} .-cx-PRIVATE-fbEmoji__icon_1f63b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1218px} .-cx-PRIVATE-fbEmoji__icon_1f63c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1235px} .-cx-PRIVATE-fbEmoji__icon_1f63d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1235px} .-cx-PRIVATE-fbEmoji__icon_1f63f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1252px} .-cx-PRIVATE-fbEmoji__icon_1f640.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea

t:no-repeat;background-position:-17px -1252px} .-cx-PRIVATE-fbEmoji__icon_1f64b.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1269px} .-cx-PRIVATE-fbEmoji__icon_1f64c.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1269px} .-cx-PRIVATE-fbEmoji__icon_1f64d.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:0 -1286px} .-cx-PRIVATE-fbEmoji__icon_1f64f.-cx-PRIVATE-fbEmoji__size_16{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repea t:no-repeat;background-position:-17px -1184px} .-cx-PRIVATE-fbEmoji__icon_261d.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -946px} .-cx-PRIVATE-fbEmoji__icon_263a.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:-17px -946px} .-cx-PRIVATE-fbEmoji__icon_26a1.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -963px} .-cx-PRIVATE-fbEmoji__icon_26c4.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:-17px -963px} .-cx-PRIVATE-fbEmoji__icon_270a.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -980px} .-cx-PRIVATE-fbEmoji__icon_270b.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:-17px -980px} .-cx-PRIVATE-fbEmoji__icon_270c.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -1099px} .-cx-PRIVATE-fbEmoji__icon_2600.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -912px} .-cx-PRIVATE-fbEmoji__icon_2601.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:-17px -912px} .-cx-PRIVATE-fbEmoji__icon_2614.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -929px} .-cx-PRIVATE-fbEmoji__icon_2615.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:-17px -929px} .-cx-PRIVATE-fbEmoji__icon_2728.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:-17px -997px} .-cx-PRIVATE-fbEmoji__icon_2764.-cx-PRIVATE-fbEmoji__size_16{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6Be52Ig4w.png);background-repeat :no-repeat;background-position:0 -1014px} .emote_text{display:none} .emote_img, .emote_custom{height:16px;vertical-align:top;width:16px} .emote_img{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yr/r/9stU7-ZLct 4.png) no-repeat;overflow:hidden} .fbx #pageFooter{margin:auto;width:auto} .hasLeftCol #pageFooter{background-color:#fff;clear:both;margin-left:180px} #pagefooter{border-top:0} #pageFooter{color:#737373;font-size:11px;margin:0 auto;width:980px}

#pageFooter a{text-decoration:none;white-space:nowrap} #pageFooter a:last-child{margin-right:0} #pageFooter a:hover{text-decoration:underline} #contentCurve{background-color:#fff;border-bottom:1px solid #ccc;height:8px;font -size:1px} .hasLeftCol #contentCurve{border:1px solid #ccc;border-top:none;position:relativ e} #footerContainer{border-top:1px solid #eee;padding:8px 8px 38px;position:relativ e} #footerContainer .navigation{text-align:right} .noFooter #pageFooter{display:none} #globalContainer{margin:0 auto;position:relative;zoom:1} .fbx #globalContainer{width:981px} .sidebarMode .fbx #globalContainer{padding-right:205px} .fbx #tab_canvas > div{padding-top:0} .fb_content{padding-bottom:20px} .fbx .fb_content{padding-bottom:0} #mainContainer{margin-left:-1px;display:block;width:100%} .hasLeftCol #mainContainer{border-right:1px solid #ccc;min-height:600px} #leftCol{display:none;float:left;padding:20px 0 0 2px;width:179px;word-wrap:brea k-word} .hasLeftCol #leftCol{display:block} #rightCol{margin-top:-10000px;float:right;padding-right:0;width:244px;word-wrap: break-word} .hasRightCol #rightCol{margin-top:0} .hasLeftCol #rightCol{padding-right:20px} #contentCol{background-color:#fff;padding-top:15px} .hasLeftCol #contentCol{border-left:1px solid #ccc;margin-left:181px;min-height: 600px} #headerArea{margin-bottom:5px;padding:2px 0 12px} .hasLeftCol #headerArea{float:left;margin:0 20px 0;width:759px} #contentArea{margin-right:-1px;padding-left:1px;word-wrap:break-word} .hasLeftCol #contentArea, .hasRightCol #contentArea{float:left;margin-right:0} .hasLeftCol #contentArea{padding:0 20px;width:759px} .hasRightCol #contentArea{width:714px} .hasLeftCol .hasRightCol #contentArea{padding-right:0;width:493px} #bottomContent{clear:both;padding:0 20px 12px} #blueBarHolder.slim{height:38px} .hasVoiceBar #blueBarHolder.slim{height:65px} #blueBar{background-color:#3b5998;border-bottom:1px solid #133783;min-width:981p x;position:relative;z-index:300} .slim #blueBar{box-shadow:0 2px 2px -2px rgba(0, 0, 0, .52);height:37px} .slim #blueBar.fixed_elem{left:0;right:0;top:0} .tinyViewport .slim #blueBar.fixed_elem{margin:0;position:relative !important} .composerTourInProgress .slim #blueBar.fixed_elem{position:static !important} #pageHead{margin:0 auto;width:980px} .fbx #pageHead, #blueBar #pageHead{padding-top:6px;width:981px} .sidebarMode .fbx #pageHead, .sidebarMode #blueBar #pageHead{padding-right:205px } #pageLogo{float:left;margin-left:-6px;z-index:5} #pageLogo.pixelSnapped{margin-left:-7px;padding-right:1px} #pageLogo a, #pageLogo a:hover, #pageLogo a:focus, #pageLogo a:active{background -image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);backgrou nd-repeat:no-repeat;background-position:2px -186px;display:block;height:31px;out line:none;width:103px} #pageLogo.pixelSnapped a, #pageLogo.pixelSnapped a:hover, #pageLogo.pixelSnapped a:focus, #pageLogo.pixelSnapped a:active{background-image:url(http://static.ak. fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;backgrou nd-position:1px -152px} #pageLogo a:hover, #pageLogo a:focus, #pageLogo a:active{background-color:#4b67a

1} #headNav{height:30px;margin-left:176px} #pageNav{margin-right:1px} #pageNav .navItem, #pageNav #navAccount{float:left} #pageNav .navItem a, #pageNav #navAccountLink{color:#d8dfea;display:inline-block ;font-weight:bold;height:31px;line-height:29px;position:relative;text-decoration :none;vertical-align:top} #pageNav .middleItem a, #pageNav .lastItem a, #pageNav #navAccountLink{margin-le ft:-1px} #pageNav .middleItem a, #pageNav .lastItem a{padding:0 8px} #pageNav .navItem a:hover, #pageNav .navItem a:focus, #pageNav .navItem a:active , #pageNav #navAccountLink:hover, #pageNav #navAccountLink:focus, #pageNav #navA ccountLink:active{background-color:#4b67a1;color:#fff;outline:none;z-index:1} #pageNav .navItem a:after{background:#526da4;content:" ";display:block;height:14 px;position:absolute;right:0;top:9px;width:1px} #pageNav .navItem a:hover:after, #pageNav .lastItem a:after{display:none} #pageNav .tinyman .headerTinymanPhoto{border:1px solid #294a8f;border-top:1px so lid #123682;border-radius:2px;height:23px;margin:3px 5px 3px 3px;width:23px} #pageNav .tinyman .headerTinymanName{display:inline-block;max-width:175px;overfl ow:hidden;padding-right:8px;text-overflow:ellipsis;vertical-align:top;white-spac e:nowrap} #pageNav .lightNav .headerTinymanName{color:#d8dfea;font-weight:bold;line-height :29px} #pageNav .voiceBarToggle{display:none} .hasVoiceToggle #pageNav .voiceBarToggle{display:inline} #navAccount{position:relative} .no_js #navAccount:hover, #pageNav #navAccount.openToggler{position:relative;top :1px} .no_js #navAccount:hover #navAccountLink, #navAccount.openToggler #navAccountLin k{background-color:#fff;border:1px solid #333;border-bottom:0;color:#333;margin: -1px -1px 0 -2px;position:relative;z-index:2} .no_js #navAccountLink:hover, #navAccount.openToggler #navAccountLink:hover, #na vAccount.openToggler #navAccountLink:focus, #navAccount.openToggler #navAccountL ink:active{background-color:#fff} .no_js #navAccount:hover #navAccountLink, #pageNav #navAccount.openToggler #navA ccountLink{padding-left:0} #navAccountLink .menuPulldown{background-image:url(http://static.ak.fbcdn.net/rs rc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-position: -60px -288px;height:31px;overflow:hidden;text-indent:-5000px;width:24px} #navAccountLink:hover .menuPulldown{background-image:url(http://static.ak.fbcdn. net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-pos ition:-29px -323px} .no_js #navAccount:hover #navAccountLink .menuPulldown, #navAccount.openToggler #navAccountLink .menuPulldown, #navAccount.openToggler #navAccountLink:hover .me nuPulldown{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1Xas GjTsZ3i.png) !important;background-repeat:no-repeat !important;background-positi on:-2px -323px !important;background-color:#fff} #navAccount .contextualHelp, #navAccount .navigation{background:#fff;border:1px solid #333;border-bottom:2px solid #333;margin-top:-1px;padding:4px 0;position:a bsolute;right:-1px;top:100%;z-index:1} #navAccount .navigation{display:none;max-width:400px;min-width:200px} .no_js #navAccount:hover .navigation, #navAccount.openToggler .navigation{displa y:block} #pageNav .menuDivider{background:#ddd;font-size:0;height:1px;line-height:0;margi n:6px 7px} #pageNav #navAccount .navSubmenu{border-bottom:1px solid #fff;border-top:1px sol id #fff;color:#222;display:block;height:18px;line-height:18px;overflow:hidden;pa dding:0 22px;text-overflow:ellipsis;white-space:nowrap} #pageNav #navAccount .navSubmenu:hover, #pageNav #navAccount .navSubmenu:focus, #pageNav #navAccount .navSubmenu:active{background:#6d84b4;border-bottom:1px sol

id #3b5998;border-top:1px solid #3b5998;color:#fff;text-decoration:none} #pageNav #navAccount .navSubmenu input{color:#222;display:block;height:18px;marg in-top:-1px;padding:0} #pageNav #navAccount .navSubmenu input:hover, #pageNav #navAccount .navSubmenu i nput:focus, #pageNav #navAccount .navSubmenu input:active{color:#fff;text-decora tion:none} #pageNav #navAccount .navSubmenu img{height:18px;width:18px} #pageNav #navAccount .navSubmenu img.uiLoadingIndicatorAsync{width:16px;height:1 1px;margin-top:4px} #navAccount .pagesNavMenuTitle{padding:0 22px 6px 22px} #navAccount .uiScrollableArea.contentAfter:after{display:none} #navSearch{margin:3px 0 0 4px;position:relative;width:350px} #navSearch .uiTypeahead{border:1px solid #294a8f;border-radius:2px;border-top:1p x solid #123682} #navSearch .uiTypeahead .wrap, #navSearch .uiSearchInput span{border:none} #navSearch .uiSearchInput{border:0;border-radius:1px;border-top:1px solid #d9d9d 9;padding:0 0 1px} #navSearch .uiSearchInput input{padding-top:2px;width:315px} .liquid #pageHead, .liquid div#globalContainer{margin:0;min-width:980px;paddingleft:10px;padding-right:10px;width:auto !important} .liquid #minWidthOuter{zoom:1} body.liquid div#contentArea{display:table-cell;float:none;width:10000px !importa nt;zoom:1} .liquid #contentArea:after, .liquid #contentArea::after{clear:both;content:" F a c e b o o k C S S F T W ! F a c e b o o k C S S F T W ! F a c e b o o k C S S F T W ! F a c e b o o k C S S F T W ! F a c e b o o k C S S F T W ! F a c e b o o k C S S F T W ! F a c e b o o k C S S F T W !";display:block;font-size:25px;hei ght:0 !important;line-height:0;visibility:hidden} .liquid #pageFooter{zoom:1} body.permalinkBody{background-color:#e7ebf2} body.fbx.permalinkBody #globalContainer{margin-top:40px;width:889px;min-width:88 9px} .permalinkBody #mainContainer{margin-bottom:50px;width:100%} .permalinkBody #contentCol{background-color:transparent} .permalinkBody .hasRightCol #rightCol{width:243px} .permalinkBody .hasRightCol #contentArea{border:1px solid #c4cde0;border-radius: 4px;width:624px;background-color:#fff;padding:0 3px 1px} .permalinkBody .permalink_stream .uiStream .uiStreamMessage, .permalinkBody .per malink_stream .uiStream .uiStreamAttachments{padding-left:15px;padding-right:20p x} .permalinkBody .permalink_stream .uiStream .uiStreamMessage{font-size:13px;lineheight:18px} .permalinkBody .permalink_stream .uiStream .mainWrapper .uiAttachmentNoMedia{pad ding-left:10px;margin-left:18px;border-left:2px solid #c0c9dd} .permalinkBody .permalink_stream .fbStreamPermalinkHeader{border-bottom:1px soli d #e9e9e9;margin:15px;padding-bottom:10px} .permalinkBody .permalink_stream .uiStream .uiStreamStory .mainWrapper{margin-ri ght:0;padding-top:0} .permalinkBody .uiCommentContainer{margin-bottom:-2px} .permalinkBody .uiStreamRedesign .uiCommentContainer{margin-bottom:-4px} .permalinkBody .fbTimelineUFI{margin-top:3px} .permalinkBody .permalink_stream .subscribeOrLikeSentence, .permalinkBody .perma link_stream .uiStreamPassive, .permalinkBody .permalink_stream .uiStreamHeadline {color:#999;font-weight:normal} .permalinkBody .permalink_stream .uiStreamHeadline{max-width:370px} .permalinkBody .permalink_stream .uiStreamPrivacy .img, .permalinkBody .permalin k_stream .uiStreamSecondaryTime .img{margin-top:2px} .permalinkBody .permalink_stream .uiStreamMessage .actorDescription{padding:0} .permalinkBody .uiStreamSource{font-size:11px} .permalinkBody .permalink_stream .uiStreamHide{float:right}

.permalinkBody .permalinkHeaderContent{margin-left:60px} .permalinkBody .fbStreamPermalinkHeader .uiCloseButton{left:-9999px;overflow:hid den;position:relative;float:right} .permalinkBody .permalink_stream:hover .fbStreamPermalinkHeader .uiCloseButton{l eft:auto;overflow:visible} .permalinkBody #globalContainer #mainContainer .permalink_stream .noStoryBodyHea der{border-bottom:none} .permalinkBody #globalContainer #mainContainer .spamMessage{padding:15px 0 15px 15px;border-top:solid 1px #eee} .fbxWelcomeBox .fbxWelcomeBoxName{padding-bottom:1px} .fbxWelcomeBoxBlock .fbxWelcomeBoxImg{height:40px !important;width:40px !importa nt} .fbxWelcomeBoxName{display:block;font-weight:bold;width:112px;word-wrap:break-wo rd} .HighlightSelectorMenu{margin-right:1px;position:relative;top:-2px} .HighlightSelectorMenu .uiMenuXShortBorder{padding-right:2px} .UIActionLinks_title{font-size:9px;font-weight:normal;white-space:nowrap;color:# 999} .UIActionLinks_bottom{color:#999} .UIActionLinks_bottom a, .UIActionLinks_bottom button.as_link, .UIActionLinks_bottom .uiLinkButton input, .UIActionLinks_bottom .uiLinkButton input:hover{color:#6d84b4} .UIActionLinks .uiBlingBox{color:#3b5998} .cmt_like_icon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/ 98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-743px -42px;di splay:inline-block;height:9px;margin-right:3px;width:10px} .comment_like_button{margin:-5px;padding:5px;padding-top:0;white-space:nowrap} .comment_like_button:active, .comment_like_button:focus, .comment_like_button:ho ver{text-decoration:none} .fixed_elem, .fixed_always{position:fixed !important} .tinyViewport .fixed_elem{position:static !important} body .fixedScrolling{position:fixed !important} body.fixedBody #contentCol{min-height:617px} body.fixedBody{overflow-x:hidden} .fixedBody #blueBar, .fixedBody #leftCol{position:fixed !important} .fixedBody #blueBar{left:0;right:0} .fixedBody #leftColContainer{float:left;padding-right:2px;width:179px} .fixedBody .hideWhenFixed{display:none} span.FollowLink .followLinkInlineCheck{display:inline;margin-right:4px} .followLinkSubscribed{cursor:default} .FriendButton{display:inline-block;vertical-align:top} html .FriendButton .uiButton{margin-left:0} html .FriendButton .enableFriendListFlyout, .FriendButton .enableFriendListFlyou t .uiButtonText, .FriendButton .enableFriendListFlyout input{cursor:default} #facebook .FriendButton .uiButtonHover{background:#6d84b4;border-color:#3b5998;b ox-shadow:none} .FriendButton .uiButtonHover .uiButtonText{color:#fff} .requestResponseMenu .action .itemAnchor{padding-right:22px} html .FriendButton .customimg{margin:2px 5px 0 0} span.FriendLink a.uiButtonConfirm{background-image:none;background-color:transpa rent} .FriendLink span.friendButton, .FriendLink span.outgoingButton{cursor:hand;curso r:pointer} .FriendListFlyoutLoading{text-align:center} .fullScreen{height:100%;width:100%} div.-cx-PRIVATE-egoSuggestFriends__unit div{line-height:14px} .home #rightCol .friend_list_right_column_header{height:44px}

.profileItemImg{height:16px;width:16px} div.bookmarksMenuButton .uiCloseButton{background-image:url(http://static.ak.fbc dn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backgroundposition:-647px -67px} div.bookmarksMenuButton .uiCloseButton:hover, div.bookmarksMenuButton .openToggl er .uiCloseButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_ /r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-629px -67px } .uiSideNav ul{display:none} .uiSideNav .open ul{display:block} .uiSideNav .forceSubitems ul{display:block} .uiSideNav .hidden{display:none} .uiSideNav .item, .uiSideNav .subitem{color:#333;display:block;border-bottom:1px solid #fff;min-height:17px;line-height:13px;padding:3px 8px 0 28px;text-decorat ion:none} .Locale_ar_AR .uiSideNav .item, .Locale_ar_AR .uiSideNav .subitem{line-height:14 px} .uiSideNav .subitem{padding-left:37px} .uiSideNav .item:hover, .uiSideNav .item:active, .uiSideNav .item:focus, .uiSide Nav .subitem:hover, .uiSideNav .subitem:active, .uiSideNav .subitem:focus{backgr ound-color:#eff2f7;text-decoration:none} .uiSideNav .selectedItem .item, .uiSideNav .selectedItem .item:hover, .uiSideNav ul .selectedItem .subitem, .uiSideNav ul .selectedItem .subitem:hover{backgroun d-color:#d8dfea;font-weight:bold} .uiSideNav .item .imgWrap{width:18px} .uiSideNav .external{padding-right:12px;background:url(http://static.ak.fbcdn.ne t/rsrc.php/v2/yW/r/AebrcwrBeG6.png) no-repeat right 3px} .uiSideNav .item .linkWrap{display:block;max-width:116px;overflow:hidden;padding -left:0;text-overflow:ellipsis;white-space:nowrap} .uiSideNavCountText{color:gray} .uiSideNav .item .uiSideNavCountRed{background-color:#f64c4c;color:#fff} .uiSideNav .loading .item, .uiSideNav .sideNavItem .loading .subitem{backgroundcolor:#eff2f7;border-color:#eff2f7;border-bottom-color:#fff} .uiSideNav .loading .subitem{background-color:#fff;border-color:#fff} .uiFutureSideNav .actionLinks{font-size:9px;font-weight:bold;text-transform:uppe rcase} .droppableNav .actionLinks{display:block} .actionLinks{line-height:12px;padding:4px 0 4px 28px;position:relative} .uiSideNav .loadingIndicator, .actionLinks .loadingIndicator{background:url(http ://static.ak.fbcdn.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.gif) no-repeat 0 0;display:n one;height:11px;position:absolute;right:5px;top:5px;width:16px} .loading .loadingIndicator, .async_saving .loadingIndicator{display:block} .editMode .loadingIndicator, .loading ul .loadingIndicator{display:none} .uiSideNav ul .loading .loadingIndicator{top:5px} .uiSideNav .showSubitems .hiddenSubitem, .uiSideNav .open .navMore{display:block } .uiSideNav .hiddenSubitem, .uiSideNav .showSubitems .navMore, .uiSideNav .navMor e{display:none} .uiSideNav li .navMore{margin:4px 0 10px 37px} .uiSideNav .loading .navMore{background-color:transparent} .uiSideNav .item:hover .buttonWrap .uiCloseButton{visibility:visible} .editMode .droppableNav .uiCloseButton, .editMode .droppableNav .item:hover .uiCloseButton{visibility:visible} .middot{display:none} .expandedMode .middot{display:inline} .uiSideNav .mover{display:none;left:-18px;overflow:hidden;position:absolute;text -align:right;top:3px;z-index:2} .uiSideNav .placeholder{border:2px dashed gray} .editMode .item{cursor:default;opacity:.5} .editMode .item:hover{background-color:transparent}

.editMode .sortableItem{cursor:move;opacity:1} .editMode .sortableItem:hover{background-color:#eff2f7} .uiSideNav .mover .arrow{position:relative;top:-20px} .uiSideNav .mover .arrow:active, .uiSideNav .mover .arrow:focus{top:0} .droppableNav .grip{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-754px -42 px;display:none;height:10px;margin-top:2px;width:10px} .editMode .droppableNav .grip{display:block} .editMode .uiSideNav .external{background-image:none} .middot, .navEdit, .navDone{display:none} .expandedMode .middot, .expandedMode .navEdit, .navEditDone .navEdit, .editMode .navDone{display:inline} .editMode .draggingMode{opacity:.5} .editMode .droppableNav .draggingMode{opacity:1} .editMode .uiSideNav ul{display:none} .editMode .middot, .editMode .navEdit, .editMode .navLessLink, .editMode .uiSide Nav .count, .editMode .uiSideNav .divider, .editMode .uiSideNav .loading .mover, .editMode .uiSideNav .uiCloseButton{display:none !important} #sideNav #pinnedNav{margin-top:16px} #sideNav .belowThreshold, #sideNav .homeSideNav .actionLinks, #sideNav #pinnedNa v .hideOption{display:none} #sideNav.editMode .homeSideNav .actionLinks{display:block} #sideNav .moreSectionsLink{color:#7f93bc;font-size:9px;font-weight:bold} .navHeader, .navHeader a{color:#999;font-size:9px;font-weight:bold;margin-top:12 px} .navHeader .bookmarksNavSeeAll{color:#6d84b4;white-space:nowrap} .navHeader .uiLoadingIndicatorAsync{margin-top:-3px} .editMode .nonDroppableNav{opacity:.5} .editMode .nonDroppableNav .sortableItem{cursor:default} .editMode .homeSideNav .bookmarksNavSeeAll, .homeSideNav .bookmarksNavSeeAll{vis ibility:hidden} .homeSideNav:hover .bookmarksNavSeeAll, .forceMoreLink .bookmarksNavSeeAll{visib ility:visible} .homeSideNav a:hover{text-decoration:none} .bookmarksNavSeeAll:hover{text-decoration:underline} .homeSideNav .loading .bookmarksNavSeeAll{display:none} .homeSideNav .bookmarksMenuButton ul{display:inline} .sideNavItem:hover .bookmarksMenuButton .uiCloseButton, .sideNavItem .bookmarksM enuButton a.selected{visibility:visible} .editMode .homeSideNav .sideNavItem .bookmarksMenuButton .uiCloseButton, .editMo de .homeSideNav .sideNavItem:hover .bookmarksMenuButton .uiCloseButton{visibilit y:hidden} .droppableNav .rearrange{display:inline} .nonDroppableNav .rearrange{display:none} div.fbComposerWideSpacing{border-bottom:0;margin:9px 0 -6px;padding-bottom:4px} div.fbFriendListComposer{border-bottom:none;margin-left:-18px;padding-left:18px} div.fbFriendListComposer .focus_target{border-bottom:1px solid #e6e6e6;margin-le ft:-18px;padding-left:18px} div.fbFriendListComposer .child_was_focused{border-bottom:none} div.fbFriendListComposer .uiComposerAttachments{padding:9px 0 10px} .composerExpandedPhoto #leftCol{padding-top:2px} .composerExpanded #content .newsFeedComposer{padding-top:5px} .composerExpanded .newsFeedComposer #rightCol{padding-top:40px} .composerExpandedPhoto .newsFeedComposer #rightCol{padding-top:38px} .hasExpandedComposer .home_right_column, .sidebarMode #content .hasExpandedComposer .home_right_column{margin-top:-12px} .home #content .hasExpandedComposer .adsOnTop, .home #content .hasExpandedComposer .stickyAds{margin-top:0} div.uiComposerWithPhoto .focus_target{padding-left:58px} div.uiComposerWithPhoto .focus_target .uiComposerMetaContainer{margin-left:2px;m

argin-top:-2px} .uiComposerPhoto{position:absolute;top:7px} div.friendListFeed .uiComposerPhoto{top:13px} .composerExpandedPhoto .groupJumpLayout .groupComposerCleanWrap{margin-left:-7px ;padding-top:7px} div.uiComposerWithPhoto .focus_target .groupComposerCleanWrap .uiComposerMetaCon tainer{margin-top:-1px} .composerExpandedPhoto div.fbFriendListComposer .focus_target{padding:3px 0 14px 76px} .uiExpandedComposerWrap, .uiExpandedComposerWrapNotMeta{position:relative} .composerExpandedPhoto .composerLeftNub{background:url(http://static.ak.fbcdn.ne t/rsrc.php/v2/ym/r/S816VGiLK0d.gif) no-repeat;height:11px;left:54px;position:abs olute;top:37px;width:7px;z-index:2} .home .friendListFeed .composerLeftNub{top:43px} .composerExpandedPhoto .uiExpandedComposerWrapNotMeta .composerLeftNub{left:52px ;top:39px} .composerExpandedPhoto .uiExpandedComposerWrapNotMeta .uiComposerPhoto{top:9px} .composerExpanded .uiComposerWithPhoto .uiComposerAttachment .nub{display:none} #pagelet_rhc_ticker{margin-top:-5px} #pagelet_rhc_ticker .fbFeedTicker{padding-top:5px} .homeFixedLayout .fbFeedTicker.fixed_elem{background-color:#fff;z-index:2} .homeFixedLayout #contentCurve{height:0} div#contentCol.homeFixedLayout{padding-top:5px} .homeFixedLayout div#contentArea{padding-bottom:20px} .tickerOnTop #pagelet_rhc_ticker{margin-top:0;margin-bottom:5px} .adsOnTop .rightColumnWrapper .fixed_scrolling_wrapper, .tickerOnTop .rightColumnWrapper{width:244px} .sidebarMode .tickerOnTop #pagelet_rhc_ticker{margin-bottom:0} .tickerOnTop #pagelet_rhc_ticker .fbFeedTicker{padding-top:0} .sidebarMode .tickerOnTop #pagelet_reminders .fbReminders{margin:6px 0 12px 0} .tickerOnTop #pagelet_reminders .fbReminders{margin:8px 0 10px 0} .tickerOnTop .ticker_container .ticker_stream{margin-top:-1px} .tickerOnTop .ego_section{margin-bottom:0} .tickerOnTop .fbFeedTicker .ticker_container:before, .tickerOnTop .fbFeedTicker .ticker_container:after{background-color:rgba(0, 0, 0 , .10) !important;content:"";display:block;height:1px !important;position:absolu te;width:100%;z-index:2} .tickerOnTop .forceThickLine .ticker_container:before, .tickerOnTop .forceThickLine .ticker_container:after{background-color:transparen t !important} .tickerOnTop .fbFeedTicker .ticker_container:after{bottom:0} .tickerOnTop .fbFeedTicker .fbTickerFooter{border-top:3px solid #f2f2f2} div.composerOpen #rightCol{padding-top:40px} .rhcFooterWrap{padding-left:6px} .rhcFooterBorder{border-top:1px solid #ccc;border-bottom:1px solid #e9e9e9} .rhcFooterCopyright{padding:10px 0 4px} .rhcFooterSelectorButton .img{margin:6px 0 0 3px;vertical-align:top} .homeFixedLayout #rightCol{padding-top:56px} .sidebarMode .hasExpandedComposer .tickerOnTop .fbRemindersThickline{visibility: hidden} .hasExpandedComposer .stickyAds .fbRemindersThickline, .sidebarMode .home .hasEx pandedComposer .stickyAds .fbRemindersThickline{display:block;visibility:visible } .ticker .home .hasExpandedComposer .home_right_column{margin-top:0} .home_right_column .fbFeedTicker{border-bottom:1px solid #c1c1c1;box-shadow:0 1p x 0 rgba(0, 0, 0, .10)} .fbFeedTicker{width:244px} .homeFixedLayout .uiContextualDialogArrowRight{margin-right:3px} .homeFixedLayout #rightCol .uiSideHeader, #rightCol .tickerHeader{margin-bottom: 8px;padding:3px 6px}

.homeFixedLayout #rightCol .uiSideHeader a{color:#6d84b4} .homeFixedLayout #rightCol .tickerHeader{margin-bottom:0} .homeFixedLayout #rightCol .tickerHeader a{display:block} .homeFixedLayout #rightCol .tickerHeader a .img{display:block;padding-top:2px} .tickerStoryContent{max-width:183px} .fbFeedTicker.disconnected{opacity:.3} .fbFeedTicker .fbFeedTickerStory{background:#fff no-repeat 15px 16px;border-bott om:1px solid #fff;border-top:1px solid #e9e9e9;line-height:14px;outline:0;paddin g:6px 14px 6px 2px;position:relative} .hidden_rhc_ticker{display:none} .adsOnTop .fbRemindersThickline, .tickerOnTop .fbRemindersThickline{display:none } .adsOnTop div.fbRemindersThicklineForce, .tickerOnTop div.fbRemindersThicklineFo rce, #pagelet_reminders .displayedTickerToggleWrapper{display:block} .sidebarMode #pagelet_reminders .tickerLineToggle, .sidebarMode #pagelet_sidebar .tickerLineToggle, .sidebarMode #pagelet_rhc_ticker .tickerLineToggle, .canvasT icker #pagelet_ticker .tickerLineToggle{display:none} .sidebarMode #pagelet_reminders #fbTickerClosedEd, .sidebarMode #pagelet_current #fbTickerClosedEd, .sidebarMode #pagelet_sidebar #fbTickerClosedEd, .sidebarMod e #pagelet_rhc_ticker #fbTickerClosedEd, .canvasTicker #pagelet_ticker #fbTicker ClosedEd{display:none} .tickerToggleWrapper{position:relative} .tickerLineToggle{display:none} .displayedTickerToggleWrapper .tickerLineToggle{background-color:#fff;display:in line-block;height:7px;position:absolute;right:6px;top:-6px;width:20px;z-index:3} .displayedTickerToggleWrapper .tickerLineToggle .tickerLineToggleNormal{paddingleft:4px} .displayedTickerToggleWrapper .tickerLineToggle .tickerLineToggleAsync{padding-l eft:2px} .displayedTickerToggleWrapper .async_saving .tickerLineToggleNormal{display:none } .canHaveFixedElements #fixed_scrolling_container .displayedTickerToggleWrapper, .canHaveFixedElements .fixed_elem .displayedTickerToggleWrapper{margin-top:15px} .canHaveFixedElements .fixed_elem .toggleWrapperWithoutMargin{margin-top:0 !impo rtant} .fbRemindersThickline, .sidebarMode .fbRemindersThickline{background:#e9e9e9;bor der-top:1px solid #ccc;display:block;height:1px} .tickerOnTop .fbFeedHeadThickLineCapable{border-top:1px solid #ccc} .fbFeedTicker .tickerStoryHidden .tickerStoryBlock{display:none} .fbFeedTicker .fbFeedTickerStory .tickerStoryImage{margin-right:8px} .fbFeedTicker .fbFeedTickerStory .tickerFeedMessage, .fbFeedTicker .fbFeedTicker Story div.tickerFeedMessage h6{display:inline;font-size:11px;font-weight:normal} .fbFeedTicker .fbFeedTickerStory .actorName, .fbFeedTicker .fbFeedTickerStory .a ctorDescription{display:inline} .fbFeedTicker .fbFeedTickerStory .removeStory{float:right;margin-right:-5px} .fbFeedTicker .fbFeedTickerStory .fbEmuHidePoll{padding-left:5px} .fbFeedTicker .tickerStoryClickable{cursor:pointer} .fbFeedTicker .tickerStoryHidden{cursor:auto} .fbFeedTicker .fbFeedTickerStory .uiStreamPassive, .fbFeedTicker .fbFeedTickerSt ory .tickerAttachmentBodyText, .fbFeedTicker .tickerStoryClickable a, .fbFeedTic ker .tickerStoryClickable .passiveName, .fbFeedTicker .tickerStoryClickable .tok en{color:#333;outline:0;text-decoration:none} .fbFeedTicker .tickerStoryActive, .fbFeedTicker .tickerStoryClickable:hover{back ground-color:#eceff5 !important;border-bottom-color:#eceff5 !important} .fbFeedTicker .tickerStoryClicked, .fbFeedTicker .tickerStoryClicked:hover, .fbF eedTicker .tickerStorySelected, .fbFeedTicker .tickerStorySelected:hover{backgro und-color:#d8dfea !important;border-color:#a8b2ce !important} .fbFeedTicker .tickerStoryHidden, .fbFeedTicker .tickerStoryHidden:hover{backgro und-color:#fff !important;border-bottom:1px solid #fff !important;border-top:1px solid #e9e9e9 !important}

.fbFeedTicker .tickerStoryFetching.tickerStoryActive{background-image:url(http:/ /static.ak.fbcdn.net/rsrc.php/v2/yk/r/LOOn0JtHNzb.gif)} .fbFeedTicker .tickerStoryFetching.tickerStoryActive .tickerStoryImage{visibilit y:hidden} .fbFeedTicker .scrollTopPrompt{background:#e7e9ef url(http://static.ak.fbcdn.net /rsrc.php/v2/yU/r/n93MoBZD7fU.png) center 3px no-repeat;box-shadow:rgba(67, 74, 90, .3) 0 1px 0;cursor:pointer;height:10px;pos ition:absolute;width:244px;z-index:1} .fbFeedTicker .scrollTopPrompt:hover{background-color:#e1e2e9} .home_right_column .fbFeedTicker .scrollTopPrompt{background:#fbfbfb url(http:// static.ak.fbcdn.net/rsrc.php/v2/yU/r/n93MoBZD7fU.png) center 3px no-repeat;box-shadow:rgba(0, 0, 0, .15) 0 1px 0} .home_right_column .fbFeedTicker .scrollTopPrompt:hover{background-color:#f2f2f2 ;box-shadow:rgba(0, 0, 0, .18) 0 1px 0} .fbFeedTicker .fbFeedTickerStory .attachmentLink{border-left:2px solid #ccc} .fbFeedTicker .attachmentPhotoOuter{width:54px;height:34px;border:1px solid #ccc ;padding:2px;float:left;margin-left:3px} .fbFeedTicker .attachmentPhotoOuter:first-child{margin-left:0} .fbFeedTicker .tickerPhotoAttachment{display:none;overflow:hidden} div.fbFeedTicker .tickerStoryClickable .uiTooltipWrap{display:none} .fbFeedTicker .attachmentPhotoInner{overflow:hidden;width:54px;height:34px} .fbFeedTicker .attachmentPhoto{width:54px} .fbFeedTicker .highlightedStory{background-color:#fff9d7 !important;border-color :#e2c822 !important;padding:10px 5px;text-align:center} .fbFeedTicker .noTimestamps .ticker_timestamp{display:none} .fbFeedTicker .tickerSpamMenu{padding-left:5px;background:transparent !important } .fbFeedTicker .uiStreamInlineReplaceList{margin-left:15px;margin-top:5px} .tickerNUXDialog{margin-top:50px} .fbFeedTicker .fbFeedTickerStory.tickerNuxStory{background-color:#f4f4f4;borderbottom-color:silver;border-top-color:#ccc;box-shadow:rgba(0, 0, 0, .1) 0 1px 0;m argin:-2px 0 -15px 0;padding:8px 8px 8px 10px;z-index:10} .tickerInlineOverlay{background-color:#fff;border:1px solid #ccc;border-color:rg ba(0, 0, 0, .2);border-radius:2px;border-right:none;box-shadow:5px 0 10px 10px # eceff5;color:#6d84b4;display:none;height:17px;margin-top:-12px;padding:3px 10px 0 6px;position:absolute;right:0;top:50%} .fbFeedTicker .tickerStoryActive .tickerInlineOverlay{display:block} .fbFeedTicker .tickerStorySelected .tickerInlineOverlay{box-shadow:5px 0 10px 10 px #d8dfea} .tickerInlineOverlay:hover{border-color:#7489b6;border-color:rgba(59, 89, 152, . 55)} .tickerInlineOverlay:active{background-color:#f9fafc;background-color:rgba(249, 250, 252, .9);border-color:rgba(59, 89, 152, .5)} .tickerInlineOverlayDisabled{background-color:#fff !important;border-color:rgba( 0, 0, 0, .2) !important} .tickerInlineOverlayLink{display:none} .canvasTicker .tickerInlineOverlayLink{display:none !important} .tickerActionBottomButton{display:none !important} .tickerActionExpandableButton{margin-top:-9px;position:absolute;right:7px;top:50 %} .tickerActionExpandableButton .tickerActionButtonLink{background-color:#f8f8f8;b ackground-image:-o-linear-gradient(bottom, #f0f0f0, #fff);box-shadow:0 1px 0 rgb a(0, 0, 0, .10);height:16px;padding:3px 0 1px 20px;width:0} .tickerStoryClicked .tickerActionExpandableButton .tickerActionButtonLink{backgr ound-color:#fff;background-image:-o-linear-gradient(bottom, #fff, #f0f0f0)} .tickerActionExpandableButton .tickerActionVerb{color:#3b5998;display:none;fontweight:bold} .fbFeedTickerStory:hover .tickerActionExpandableButton .tickerActionButtonLink, .tickerStoryActive .tickerActionExpandableButton .tickerActionButtonLink{width:a uto}

.tickerStoryActive .tickerActionExpandableButton .tickerActionVerb, .fbFeedTicke rStory:hover .tickerActionExpandableButton .tickerActionVerb{display:inline} .tickerActionExpandableButton .tickerActionIcon{position:absolute;left:6px;top:6 px} .tickerActionButtonLink{background-color:#fff;border:1px solid #96a2c4;border-ra dius:3px;display:block} .tickerActionButtonLink .tickerActionVerb{padding-right:4px} .fbFeedTicker .tickerStoryWithIcon{padding-right:18px !important} .fbFeedTicker .tickerStoryWithButton{padding-right:33px !important} .fbFeedTickerStory .tickerVisitIcon{display:none;margin-top:-3px;opacity:.7;posi tion:absolute;right:7px;top:50%} .fbFeedTickerStory:hover .tickerVisitIcon{display:block} .tickerMusicButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v 2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-722px 42px;height:11px;width:9px} .tickerNewsButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2 /y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-710px -4 2px;height:11px;width:11px} .tickerVideoButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v 2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-698px 42px;height:11px;width:11px} .tickerActionButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/ v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-732px -42px;height:10px;width:10px} .tickerActionExpandableButton img.tickerGameButtonImg{background-image:url(http: //static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-rep eat;background-position:-533px -19px;height:14px;width:11px;top:5px} #fbTickerClosedEd{border-bottom:1px #ccc dashed} .homeWiderContent div#rightCol .home_right_column{width:244px} div#contentCol.homeWiderContent, .homeWiderContent #bottomContent{padding-left:0;padding-right:0} .homeWiderContent div#rightCol{padding-right:0} .hasLeftCol .homeWiderContent div#contentArea{padding-left:18px;padding-right:25 px;width:511px} div.homeWiderContent .megaphone_box{margin-left:-18px;margin-top:-5px} .HovercardStage{min-width:275px;max-width:350px;padding:10px} .HovercardWideTitle{max-width:275px} .HovercardTitle{max-width:165px} .HovercardLoading{padding:10px;width:275px} .FriendButton + .HovercardMessagesButton, .PageLikeButton + .HovercardMessagesBu tton, .FriendButton + .HovercardFollowButton, .PageLikeButton + .HovercardFollow Button{margin-left:4px} .profilePicContainer{margin-right:10px} span.alternate_name{color:gray;font-weight:normal} .fbJewel{float:left;margin-right:-1px;position:relative} #jewelContainer{float:left;position:relative;z-index:4} #jewelContainer .hasNew, #jewelContainer .openToggler{position:relative} .fbJewel .jewelCount{border-radius:2px;color:#fff;display:none;font-size:9px;fon t-weight:bold;overflow:hidden;padding-bottom:1px;position:absolute;right:-1px;to p:0;z-index:101} #jewelContainer .hasNew .jewelCount{display:block} #jewelContainer .openToggler .jewelCount{display:none} .fbJewel .jewelCount span{background-color:#f03d25;border:1px solid #d83722;bord er-bottom:1px solid #c0311e;border-top:1px solid #e23923;border-radius:2px;box-s hadow:0 1px 0 rgba(0, 39, 121, .77);display:block;padding:0 1px} .fbJewel a.jewelButton{display:block;height:31px;position:relative;text-decorati on:none;margin:0 1px;width:24px} .fbJewel a.jewelButton:active, .fbJewel a.jewelButton:focus, .fbJewel a.jewelBut ton:hover{background-color:#4b67a1;outline:none;text-decoration:none} #jewelContainer .openToggler .jewelButton{background-color:#fff !important;borde

r:1px solid #333;border-bottom:0;margin:0} .fbJewelFlyout{background-color:#fff;border:1px solid #333;border-bottom:2px sol id #293e6a;left:0;overflow:visible;position:absolute;top:32px;width:330px;z-inde x:-1} .fbJewelFlyout .metadata{padding-top:3px} .fbJewelFlyout .jewelItemList{padding:4px 0} .fbJewelFlyout .empty, .fbJewelFlyout .jewelHighlight .empty{border:none;color:# 757575;padding:4px 8px 10px} .fbJewelFlyout .jewelHighlight li a{color:#333;display:block;padding:4px 8px;tex t-decoration:none} .fbJewelFlyout .jewelHighlight li a:hover, .fbJewelFlyout .jewelHighlight li a:a ctive, .fbJewelFlyout .jewelHighlight li a:focus{background-color:#6d84b4 !impor tant;border-bottom:1px solid #3b5998;border-top:1px solid #3b5998;outline:none;p adding-top:3px;padding-bottom:3px;text-decoration:none} .fbJewelFlyout .jewelHighlight a:hover span, .fbJewelFlyout .jewelHighlight a:ac tive span, .fbJewelFlyout .jewelHighlight a:focus span, .fbJewelFlyout .jewelHig hlight a:hover div, .fbJewelFlyout .jewelHighlight a:active div, .fbJewelFlyout .jewelHighlight a:focus div, .fbJewelFlyout .jewelHighlight li.selected a, .fbJe welFlyout .jewelHighlight li.selected .timestamp{color:#fff} .fbJewelFlyout .jewelHighlight li{cursor:pointer;border-top:1px solid #e6e6e6} .fbJewelFlyout .jewelHighlight li:first-child{border-top:none} .fbJewelFlyout li.jewelItemNew{background:#eff1f7} .fbJewelFlyout li.jewelItemResponded{background:#fff9d7} .fbJewelFlyout .jewelLoading{display:block;margin:10px auto} .fbJewelFlyout .jewelHeader{background-color:#fff;padding:7px 8px 7px 8px;border -color:#ddd} .fbJewelFlyout .jewelFooter a{background-color:#f7f7f7;border-top:1px solid #e0e 0e0;display:block;font-weight:bold;padding:8px;text-align:center} .fbJewelFlyout .jewelFooter a:hover, .fbJewelFlyout .jewelFooter a:active, .fbJe welFlyout .jewelFooter a:focus{background-color:#6d84b4;border-top:1px solid #3b 5998;color:#fff;outline:none;text-decoration:none} .fbJewelFlyout .jewelFooter .seeMoreCount{display:none;font-weight:bold;padding: 2px 0 0} .fbJewelFlyout .jewelUnread .seeMoreCount{display:block} .fbJewelFlyout .jewelFooter a:hover .seeMoreCount, .fbJewelFlyout .jewelFooter a :active .seeMoreCount, .fbJewelFlyout .jewelFooter a:focus .seeMoreCount{color:# e7e7e7} #jewelContainer.notifNegativeBase .openToggler .jewelButton{background-color:tra nsparent !important;border-color:transparent;border-top:0} .notifNegativeBase .openToggler{z-index:1} .notifNegativeBase .fbJewelFlyout, #tinymanNavWrapper .fbJewelFlyout{backgroundcolor:#fff;background:rgba(255,255,255,0.98);border:1px solid #c5c5c5;top:36px;b ox-shadow:0 3px 8px rgba(0, 0, 0, .25);border-radius:3px;border:1px solid rgba(1 00, 100, 100, .4);background-clip:padding-box} .notifNegativeBase .fbJewelFlyout .jewelItemList{padding:0} .notifNegativeBase .fbJewelFlyout .uiScrollableAreaContent{padding-bottom:1px} .notifNegativeBase .fbJewelFlyout li.jewelItemNew{background-color:transparent} .notifNegativeBase .fbJewelFlyout .beeperNub, #tinymanNavWrapper .fbJewelFlyout .beeperNub{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1Xas GjTsZ3i.png);background-repeat:no-repeat;background-position:-82px -62px;height: 11px;position:absolute;top:-11px;width:20px} .notifNegativeBase .timestamp{font-size:11px;color:#999} .notifNegativeBase .fbJewelFlyout .jewelHeader, #tinymanNavWrapper .fbJewelFlyou t .jewelHeader{border-bottom:solid 1px #ddd;border-bottom:solid 1px rgba(100, 10 0, 100, .22);background-clip:padding-box;z-index:100;position:relative;padding:8 px 8px 6px 8px;background-color:#fff;border-top-left-radius:3px;border-top-right -radius:3px} .notifNegativeBase .fbJewelFlyout .jewelFooter a{background-color:#f7f7f7;border -top:1px solid #c5c5c5;border-bottom-left-radius:3px;border-bottom-right-radius: 3px;position:relative;z-index:100}

.notifNegativeBase .fbJewelFlyout .jewelFooter a:hover, .notifNegativeBase .fbJe welFlyout .jewelFooter a:active, .notifNegativeBase .fbJewelFlyout .jewelFooter a:focus{background-color:#f7f7f7;border-top:1px solid #c5c5c5;color:#3b5998;outl ine:none;text-decoration:underline} .notifNegativeBase .fbJewelFlyout .jewelFooter a:hover .seeMoreCount, .notifNega tiveBase .fbJewelFlyout .jewelFooter a:active .seeMoreCount, .notifNegativeBase .fbJewelFlyout .jewelFooter a:focus .seeMoreCount{color:gray} #fbMessagesJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/r src.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-position :0 -255px} #fbMessagesJewel a.jewelButton:active, #fbMessagesJewel a.jewelButton:focus, #fb MessagesJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.ne t/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-posit ion:-25px -255px} #fbMessagesJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcd n.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-p osition:-50px -255px} #fbMessagesJewel.openToggler a.jewelButton{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png) !important;background-repeat:no-rep eat !important;background-position:-75px -255px !important} #fbMessagesFlyout li a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap } #fbMessagesFlyout .content{display:block;width:auto} #fbMessagesFlyout .author{color:#3b5998;font-weight:bold;padding-top:2px;white-s pace:normal} #fbMessagesFlyout .preview{overflow:hidden;text-overflow:ellipsis;white-space:no wrap} #fbMessagesFlyout .subject{color:#333} #fbMessagesFlyout .time{color:#9d9d9d;font-size:9px} #fbMessagesFlyout a:hover .author, #fbMessagesFlyout a:hover .preview, #fbMessag esFlyout a:hover .subject, #fbMessagesFlyout a:hover .time{color:#fff} .notifNegativeBase #fbMessagesFlyout{left:-128px} .notifNegativeBase #fbMessagesFlyout .beeperNub{left:130px} .notifNegativeBase #fbMessagesJewel.openToggler a.jewelButton{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png) !important;backg round-repeat:no-repeat !important;background-position:-54px -323px !important} .notifNegativeBase #fbMessagesFlyout .author, .notifNegativeBase #fbMessagesFlyo ut a.messagesContent:hover .author, .notifNegativeBase #fbMessagesFlyout .subjec t, .notifNegativeBase #fbMessagesFlyout a.messagesContent:hover .subject{color:# 333} .notifNegativeBase #fbMessagesFlyout .preview, .notifNegativeBase #fbMessagesFly out a.messagesContent:hover .preview{color:gray;padding-top:1px} .notifNegativeBase #fbMessagesFlyout .time .timestamp, .notifNegativeBase #fbMes sagesFlyout a.messagesContent:hover .time .timestamp{color:#9d9d9d;font-size:9px ;padding-top:2px;display:block} .notifNegativeBase #fbMessagesFlyout .jewelContent li{border-top:0} .notifNegativeBase #fbMessagesFlyout .jewelContent li:first-child a.messagesCont ent, .notifNegativeBase #fbMessagesFlyout .jewelContent li:first-child a.message sContent:hover, .notifNegativeBase #fbMessagesFlyout .jewelContent li:first-chil d a.messagesContent:active, .notifNegativeBase #fbMessagesFlyout .jewelContent l i:first-child a.messagesContent:focus{border-top:none} .notifNegativeBase #fbMessagesFlyout .jewelContent a.messagesContent{border-top: 1px solid #e9e9e9;border-bottom:1px solid #e9e9e9;margin-bottom:-1px;padding:4px 20px 4px 8px} .notifNegativeBase #fbMessagesFlyout .jewelContent a.messagesContent:hover, .not ifNegativeBase #fbMessagesFlyout .jewelContent a.messagesContent:active, .notifN egativeBase #fbMessagesFlyout .jewelContent a.messagesContent:focus{background-c olor:#f4f6f9 !important;border-color:#e3e8f0;position:relative;z-index:1} .notifNegativeBase #fbMessagesFlyout li.jewelItemNew a.messagesContent{backgroun d-color:#eceff5;background:rgba(237,239,245,0.98);border-color:#d1d8e7;position:

relative;z-index:2} .notifNegativeBase #fbMessagesFlyout .jewelContent li.jewelItemNew a.messagesCon tent:hover, .notifNegativeBase #fbMessagesFlyout .jewelContent li.jewelItemNew a .messagesContent:active, .notifNegativeBase #fbMessagesFlyout .jewelContent li.j ewelItemNew a.messagesContent:focus{background-color:#e7ebf2 !important;border-c olor:#d1d8e7} .notifNegativeBase .fbJewelFlyout .jewelHighlight a.messagesContent:hover span, .notifNegativeBase .fbJewelFlyout .jewelHighlight a.messagesContent:active span, .notifNegativeBase .fbJewelFlyout .jewelHighlight a.messagesContent:focus span, .notifNegativeBase .fbJewelFlyout .jewelHighlight a.messagesContent:hover div, .notifNegativeBase .fbJewelFlyout .jewelHighlight a.messagesContent:active div, .notifNegativeBase .fbJewelFlyout .jewelHighlight a.messagesContent:focus div{co lor:gray} .notifNegativeBase .fbJewelFlyout .jewelItemList{padding:0} #fbNotificationsJewel.west a.jewelButton{background-image:url(http://static.ak.f bcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;backgroun d-position:0 -290px} #fbNotificationsJewel.west a.jewelButton:active, #fbNotificationsJewel.west a.je welButton:focus, #fbNotificationsJewel.west a.jewelButton:hover{background-image :url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-rep eat:no-repeat;background-position:-75px -220px} #fbNotificationsJewel.west.hasNew a.jewelButton{background-image:url(http://stat ic.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;ba ckground-position:-50px -220px} #fbNotificationsJewel.west.openToggler a.jewelButton{background-image:url(http:/ /static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repe at;background-position:-25px -355px} #fbNotificationsJewel.east a.jewelButton{background-image:url(http://static.ak.f bcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;backgroun d-position:0 -387px} #fbNotificationsJewel.east a.jewelButton:active, #fbNotificationsJewel.east a.je welButton:focus, #fbNotificationsJewel.east a.jewelButton:hover{background-image :url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-rep eat:no-repeat;background-position:-75px -355px} #fbNotificationsJewel.east.hasNew a.jewelButton{background-image:url(http://stat ic.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;ba ckground-position:-25px -387px} #fbNotificationsJewel.east.openToggler a.jewelButton{background-image:url(http:/ /static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repe at;background-position:0 -355px} .notifNegativeBase #fbNotificationsFlyout .blueName{color:#333;font-weight:bold} #fbNotificationsFlyout .staticAppIcon{background-position:right;height:16px;widt h:16px} #fbNotificationsFlyout .selected .staticAppIcon{background-position:left} #fbNotificationsFlyout .info{max-width:259px;word-wrap:break-word} #fbNotificationsFlyout .notif_header{display:inline-block;padding-bottom:1px} #fbNotificationsFlyout div.notif_x_div, #fbNotificationsFlyout div.confirmingMsg {display:none} .notifNegativeBase #fbNotificationsFlyout{left:-153px} .notifNegativeBase #fbNotificationsFlyout .beeperNub{left:155px} .notifNegativeBase #fbNotificationsFlyout div.notif_x_div, .notifNegativeBase #f bNotificationsFlyout div.confirmingMsg{display:block} .notifNegativeBase #fbNotificationsFlyout li a.notif_x{padding:0} .notifNegativeBase #fbNotificationsFlyout li a.notif_x .placeholder{margin:3px 1 px 0 0;padding-left:5px;width:11px;height:40px} .notifNegativeBase #fbNotificationsFlyout li .notif_x_div{position:absolute;top: 7px;right:9px;z-index:2} .notifNegativeBase #fbNotificationsFlyout li.notifHover a.notif_x{visibility:vis ible} .notifNegativeBase #fbNotificationsFlyout a.notif_x{visibility:hidden;margin-top

:0} .notifNegativeBase li div.info{position:relative;max-width:243px;overflow:hidden } .notifNegativeBase .fbJewelFlyout li div.confirmingMsg{position:absolute;height: 0;top:0;left:0;visibility:visible;opacity:0;padding:0 8px} .notifNegativeBase .fbJewelFlyout li.forPushSafety div.confirmingMsg{position:re lative;height:0;top:0;left:0;visibility:visible;opacity:0;padding:0 8px} .notifNegativeBase .fbJewelFlyout li.notification div.confirmedMsg{position:rela tive;height:0;top:0;opacity:0;padding:0 8px} .notifNegativeBase .fbJewelFlyout li.notification div.firstConfirmedMsg, .notifN egativeBase .fbJewelFlyout li.notification div.spamMsg{padding:6px 8px} .notifNegativeBase .fbJewelFlyout td.confirming_table_row{white-space:nowrap} .notifNegativeBase .notifMainLink{position:relative;left:0;visibility:visible;op acity:1} .notifNegativeBase .async_saving .negative_loading{margin-left:10px} .notifNegativeBase .confirmingMsg .async_saving label.uiButton, .notifNegativeBa se .async_saving div.link_buttons{display:none} .notifNegativeBase #fbNotificationsFlyout li{position:relative} .notifNegativeBase #fbNotificationsFlyout a.notifMainLink{border-top:solid 1px # e9e9e9;border-bottom:solid 1px #e9e9e9;color:#333;display:block;padding:7px 20px 7px 8px;text-decoration:none;margin-bottom:-1px;z-index:2;zoom:1} .notifNegativeBase #fbNotificationsFlyout li.notifHover a.notifMainLink{border-c olor:#e3e8f0;background-color:#f4f6f9} .notifNegativeBase #fbNotificationsFlyout li.notifHover{position:relative;z-inde x:2} .notifNegativeBase #fbNotificationsFlyout li.jewelItemNew a.notifMainLink{border -bottom:1px solid #d1d8e7;border-top:1px solid #d1d8e7} .notifNegativeBase #fbNotificationsFlyout li.jewelItemNew{background-color:#ecef f5;background:rgba(237,239,245,0.98);margin-bottom:-1px;z-index:2} .notifNegativeBase #fbNotificationsFlyout li.jewelItemNew:hover a.notifMainLink, .notifNegativeBase #fbNotificationsFlyout li.fbJewelBeep:hover a.notifMainLink{ background-color:#e7ebf2;border-color:#d1d8e7} #fbNotificationsFlyout .beeperArea, #fbNotificationsFlyout.hasBeeps .aggregatedN otifs{display:none} #fbNotificationsFlyout.hasBeeps .beeperArea{display:block} #fbNotificationsJewel #fbNotificationsFlyout .jewelItemList li:first-child a.notifMainLink{border-top:none} #fbRequestsJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/r src.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-position :-31px -88px} #fbRequestsJewel a.jewelButton:active, #fbRequestsJewel a.jewelButton:focus, #fb RequestsJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.ne t/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-posit ion:-25px -220px} #fbRequestsJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcd n.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-p osition:0 -220px} #fbRequestsJewel.openToggler a.jewelButton{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png) !important;background-repeat:no-rep eat !important;background-position:-56px -88px !important} #fbRequestsFlyout ul.jewelItemList{padding:0} #fbRequestsFlyout li{padding:4px 8px} #fbRequestsFlyout .jewelHighlight li{padding:0} #fbRequestsFlyout .fbRequestMessageWrapper{white-space:nowrap} #fbRequestsFlyout .fbRequestMessage{display:inline-block;max-width:169px;overflo w:hidden;text-overflow:ellipsis;white-space:nowrap} #fbRequestsFlyout .jewelHighlight .title{color:#3b5998} #fbRequestsFlyout .jewelHighlight .mutualFriends{color:gray} #fbRequestsFlyout .jewelHighlight a:hover .title, #fbRequestsFlyout .jewelHighli ght a:focus .title, #fbRequestsFlyout .jewelHighlight a:active .title, #fbReques

tsFlyout .jewelHighlight a:hover .mutualFriends, #fbRequestsFlyout .jewelHighlig ht a:focus .mutualFriends, #fbRequestsFlyout .jewelHighlight a:active .mutualFri ends{color:#fff} #fbRequestsFlyout .jewelRequest .jewelRequestContent{padding-top:5px} #fbRequestsFlyout .title{font-size:11px} #fbRequestsFlyout .requestLabel{line-height:12px} #fbRequestsFlyout .jewelFooter .seeMoreCount{display:block} .fbRequestsJewelRelationshipIcon{margin-bottom:-3px;padding-right:5px} #fbRequestsFlyout .fbRequestList{padding-top:4px} #fbRequestsFlyout .fbMoreRequestList{border-top:1px solid #e9e9e9;padding:0} #fbRequestsFlyout .friendBrowserExtraSpacing{margin:0} #fbRequestsFlyout .friendBrowserCheckboxContentGrid{padding-top:0} #fbRequestsFlyout .uiScrollableAreaContent{padding-bottom:4px} #fbRequestsList .uiScrollableArea.contentAfter{border-bottom:1px solid #bbb} #fbRequestsList .uiScrollableArea{border-bottom:1px solid #e0e0e0} #fbRequestsFlyout .jewelFooter a{border:0} #fbRequestsFlyout .jewelFooter a:hover{border-top:1px solid #3b5998} .uiScrollableHeaderBox{position:absolute;top:0;width:100%;z-index:1} #fbRequestsFlyout .jewelHeader{position:relative;padding-right:10px} #fbRequestsFlyout .uiScrollableAreaContent .uiListItem{padding-right:12px} .notifNegativeBase #fbRequestsJewel.openToggler a.jewelButton{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png) !important;backg round-repeat:no-repeat !important;background-position:-50px -355px !important} .notifNegativeBase #fbRequestsFlyout{left:-103px} .notifNegativeBase #fbRequestsFlyout li{border-top:1px solid #e9e9e9} .notifNegativeBase #fbRequestsFlyout .beeperNub{left:105px} .notifNegativeBase #fbRequestsFlyout .fbRequestList{padding-top:0} .notifNegativeBase #fbRequestsFlyout .fbRequestList li:first-child{border-top:no ne} .notifNegativeBase #fbRequestsFlyout .uiScrollableAreaContent{padding-bottom:0} #fbRequestsFlyout #fbRequestsPYMKContainer ul:first-child li:first-child{bordertop:none} .notifNegativeBase #fbRequestsFlyout .jewelFooter a:hover{border-top:0} .notifNegativeBase #fbRequestsPYMKContainer .jewelHeader{z-index:1} #fbRequestsFlyout .fbRequestList .listGray{background-color:#f7f7f7} #fbRequestsFlyout .fbRequestList .noRequestsGrid{height:40px;width:100%} #fbRequestsJewel #fbRequestsFlyout .hasPYMK{border-bottom:1px solid #ddd} .textMetrics{border:none;height:1px;overflow:hidden;padding:0;position:absolute; top:-9999999px} .textMetricsInline{white-space:pre} .webkitZoomTest{font-size:100px;height:1em;position:absolute} .contextualBlind{background-color:#fff;opacity:.8;position:absolute;z-index:110} .contextualBlindContext{position:absolute;z-index:110;background-color:#fff;opac ity:0} .megaphone_story_wrapper{margin-bottom:20px} .dialog_content .megaphone_story_wrapper{margin-bottom:0} .megaphone_story{position:relative;overflow:hidden} .megaphone_story .megaphone_content{font-size:11px} .megaphone_story .megaphone_hide_link{float:right} .megaphone_story_highlighted{background-color:#fcf5d0;border:1px solid #cbb631} .megaphone_box{background-color:#f5f7fa;border:1px dashed #ced5e5} .hasLeftCol .megaphone_box{border-width:0 0 1px 0;margin-left:-20px;margin-top:15px} #headerArea .megaphone_box{margin-right:-20px;margin-top:-17px} .megaphone_location_friends{margin:0} .megaphone_location_privacy{margin-left:auto;margin-right:auto;width:760px} .timelineLayout .megaphone_location_managed_profile_admin .megaphone_box{bordertop:1px dashed #ced5e5} .ego_x{float:right;opacity:0}

.ego_unit:hover .ego_x{opacity:1} .ego_title{display:block;font-weight:bold;line-height:13px;max-width:162px;wordwrap:break-word} .ego_page .UIStandardFrame_Container{padding-left:0;width:980px} .ego_page .UIStandardFrame_Content{width:720px} .ego_page .UIStandardFrame_SidebarAds{width:auto} .ego_column{width:244px} .ego_section{margin-bottom:15px} .ego_section .async_saving a{display:none} .ego_section .indicator{display:none} .ego_section .async_saving .indicator{display:inline} .ego_section .adsCategoryIcon{vertical-align:-1px} .adsCategoryTitleLink{color:#666} .ego_unit_container{padding-left:6px} .ego_unit{margin-bottom:8px;padding-right:4px} .ego_unit + .ego_unit, .ego_unit + .ego_appended_units .ego_unit{padding-top:8px;border-top:1px solid # e9e9e9} a.always_underlined:link, a.always_underlined:hover, a.always_underlined:visited{text-decoration:underline} .ego_wide div#globalContainer{width:1020px} .ego_wide .hasRightCol #contentArea{width:760px} .ego_wide.liquid div#globalContainer{min-width:1020px} div.egoProfileTemplate div{margin-top:2px;line-height:13px} div.ego_unit_container div.clickable{cursor:hand;cursor:pointer} .notifJewelBeeper #fbNotificationsFlyout.toggleTargetClosed{border:1px solid #ab afbd;background-color:#eceff5;top:36px;border-radius:3px} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps{z-index:1} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps, .notifJewelBeeper #fbNotifica tionsFlyout.toggleTargetClosed li.fbJewelBeep{display:block} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps li.fbJewelBeep a.notifMainLink{border-color:#d1d8e7} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps li.fbTopJewelBeep, .notifJewel Beeper #fbNotificationsFlyout.hasBeeps li.fbTopJewelBeep a.notifMainLink{border-top-left-radius:3px;border-top-right-radius:3px} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps li.fbTopJewelBeep a.notifMainLink{border-top:none} .notifJewelBeeper .toggleTargetClosed #fbNotificationsList_loading_indicator, .n otifJewelBeeper #fbNotificationsFlyout.toggleTargetClosed .jewelHeader, .notifJe welBeeper #fbNotificationsFlyout.toggleTargetClosed .jewelFooter, .notifJewelBee per #fbNotificationsFlyout.toggleTargetClosed .notification{display:none} .notifJewelBeeper #fbNotificationsFlyout .jewelItemList{padding:0} .notifJewelBeeper .fbJewelCaseFlyoutContainer{position:absolute;top:0;z-index:1} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps .notifMorePager{display:none} .notifJewelBeeper #fbNotificationsFlyout.toggleTargetClosed .beeperNub{backgroun d-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);backgro und-repeat:no-repeat;background-position:-82px -50px;height:12px;position:absolu te;top:-12px;width:21px} .notifCentered #fbNotificationsFlyout.toggleTargetClosed .beeperNub{left:154px} .notifNegativeBase #fbNotificationsFlyout.hasBeeps li.fbBottomJewelBeep, .notifJ ewelBeeper #fbNotificationsFlyout.hasBeeps li.fbTopJewelBeep a.notifMainLink{border-bottom-left-radius:3px;border-bottom-right-radius:3px} .notifNegativeBase #fbNotificationsFlyout.hasBeeps li.fbBottomJewelBeep a.notifMainLink{border-bottom:0;margin-bottom:0} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps .uiScrollableAreaContent{paddi ng-bottom:0} .notifJewelBeeper #fbNotificationsFlyout.hasBeeps .placeholder, .notifJewelBeepe r #fbNotificationsFlyout.hasBeeps .confirmingMsg, .notifJewelBeeper #fbNotificat ionsFlyout.hasBeeps .notif_x_div, .notifJewelBeeper #fbNotificationsFlyout.hasBe

eps .first_receipt_div .notifJewelBeeper #fbNotificationsFlyout.hasBeeps .notif_new_label{display:none} .-cx-PRIVATE-notifJewelInlineThumb__thumbnail, .-cx-PRIVATE-notifJewelInlineThum b__albumFrame{background-color:#fff;border:1px solid #ccc;display:inline-block;m argin-left:7px;margin-right:2px;outline:none;padding:2px;position:relative} .-cx-PRIVATE-notifJewelInlineThumb__thumbnail i, .-cx-PRIVATE-notifJewelInlineTh umb__albumFrame{background-color:transparent;background-position:center 25%;back ground-repeat:no-repeat;background-size:cover;display:block;height:38px;width:52 px} .-cx-PRIVATE-notifJewelInlineThumb__albumFrame{position:absolute;-o-transform:ro tate(5deg)} .fan_status_inactive{background-color:#fffccc;color:#666;margin:0;padding:0 0 0 3px;line-height:18px} #blueBarHolder .voiceBarToggle .pagesVoiceTab{background-color:#6d84b4;display:n one;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i .png);background-repeat:no-repeat;background-position:-66px -121px;height:6px;le ft:10px;position:relative;top:-3px;width:11px;z-index:1} .hasVoiceBar #blueBarHolder .voiceBarToggle .pagesVoiceTab{display:block} #blueBarHolder .voiceBarToggle a:hover .pagesVoiceTab, #blueBarHolder .voiceBarT oggle a:focus .pagesVoiceTab, #blueBarHolder .voiceBarToggle a:active .pagesVoic eTab{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3 i.png);background-repeat:no-repeat;background-position:-81px -110px} .pagesVoiceBar{background-color:#6d84b4;border-bottom:solid #3B5998 1px;border-t op:solid #1A356E 1px;color:#fff;display:none;height:26px;position:relative;width :100%} .hasVoiceBar .pagesVoiceBar{display:block} .pagesVoiceBar #pagesVoiceBarContent{margin:0 auto;padding:3px 0;position:relati ve;width:981px} .sidebarMode .pagesVoiceBar #pagesVoiceBarContent{left:-102px} .pagesVoiceBar .pagesVoiceBarText{line-height:20px} .pagesVoiceBar .pagesVoiceBarText .pagesAltVoiceText, .pagesVoiceBar .pagesVoice BarText .pagesAltVoiceText a{color:#bfccec;cursor:pointer} .pagesVoiceBar .pagesVoiceBarText .vbSwitchListChevron{margin:0 0 2px 5px} .pagesVoiceBar #pagesVoiceBarShadow{background:url(http://static.ak.fbcdn.net/rs rc.php/v2/yE/r/lOjysYeBKNU.png) repeat-x;height:4px;position:absolute;top:27px;w idth:100%} .photosCroppedThumbHighlighted{background-color:#edeff4;border-color:#3b5998} .fbPhotosGrid td{width:171px} .fbPhotosGridTight td{padding-right:8px;width:150px} .fbPhotosGrid .photoDetails{width:166px} .fbPhotosGrid .photoDetails .photoText{word-wrap:break-word} .fbPhotosGridTight .photoDetails{width:154px} .fbPhotosGrid .lastChild{padding-right:0} div.albumsHeader{padding-bottom:0} .fbPhotoSnowliftPivotHover .fbPhotosPhotoTagboxes .tagPointer{pointer-events:aut o} .fbPhotoSnowliftPivotHover .tagBox .tagArrow{top:-10px} .fbPhotoSnowliftPivotHover .fbPhotosPhotoTagboxBase .tagName{font-weight:bold;pa dding:10px} .fbPhotoSnowliftPivotHover .fbPhotosPhotoTagboxBase .borderTagBox, .fbPhotoSnowl iftPivotHover .fbPhotosPhotoTagboxBase .tagName{background-clip:padding-box;bord er:1px solid #c5c5c5;border:1px solid rgba(100, 100, 100, .4);border-radius:3px; box-shadow:0 3px 8px rgba(0, 0, 0, .25)} .fbPhotoSnowliftPivotHover .fbPhotosPhotoTagboxBase .tagPhotoLink{font-weight:no rmal} .fbPhotoSnowliftPivotHover .fbPhotosPhotoTagboxBase .tagProfileLink{color:#1c2a4 7} .MediaTagHovercardStage.hovercardPivotHover{padding:0} .MediaTagHovercardStage.hovercardPivotHover .hovercardContent .thumbSet{padding: 0 4px 4px 7px;white-space:nowrap}

.MediaTagHovercardStage.hovercardPivotHover .hovercardContent .photoWrap{display :inline-block;zoom:1;height:60px;width:60px} .MediaTagHovercardStage.hovercardPivotHover .hovercardContent .uiScaledThumb{dis play:inline-block;zoom:1;padding-right:3px} .MediaTagHovercardStage.hovercardPivotHover .hovercardTitle .blackLink{color:#1c 2a47} .MediaTagHovercardStage.hovercardPivotHover .hovercardTitle{font-weight:bold;pad ding:10px 7px;white-space:nowrap} .MediaTagHovercardStage.hovercardPivotHover .fbPhotoTagHovercardAttribution{disp lay:inline-block;zoom:1;white-space:nowrap} .MediaTagHovercardStage.hovercardPivotHover .attributionContent{padding:6px 7px 6px 8px} .-cx-PRIVATE-snowliftAds__root{bottom:0;position:absolute;width:100%} .-cx-PRIVATE-snowliftAds__root.loading, .dataLoading .-cx-PRIVATE-snowliftAds__r oot{visibility:hidden} .-cx-PRIVATE-snowliftAds__root .uiSideHeader{background:none;border-bottom:1px s olid #e2e2e2;border-top:none;color:gray;font-weight:normal;padding-left:0} .-cx-PRIVATE-snowliftAds__root .uiSideHeader em{color:gray;font-weight:normal} .-cx-PRIVATE-snowliftAds__root .wrapper.hidden{overflow:hidden;position:relative ;visibility:hidden} .-cx-PRIVATE-snowliftAds__root .wrapper.hidden > .inner{overflow:hidden;position :absolute;width:100%} .uiButtonGroup .buttonItem .uiButton.photosTruncatingUIButton{margin-top:0;max-w idth:89px;overflow:hidden;padding-bottom:4px;text-overflow:ellipsis;white-space: nowrap} .uiButtonGroup .buttonItem .uiButton.photosTruncatingUIButton i{margin-bottom:-3 px;margin-top:1px} .uiButtonGroup .buttonItem .uiButton.photosTruncatingUIButton .uiButtonText{disp lay:inline} body.plugin{background:transparent;overflow:hidden} .audienceSelector{text-align:left} .audienceSelectorNoTruncate, .audienceSelectorNoTruncate .uiSelectorButton, .aud ienceSelectorNoTruncate .uiSelectorButton:active, .audienceSelectorNoTruncate .u iSelectorButton:focus .audienceSelectorNoTruncate .uiSelectorButton:hover, .audienceSelectorNoTruncate .uiButtonSuppressed:active, .audienceSelectorNoTruncate .uiButtonSuppressed:foc us, .audienceSelectorNoTruncate .uiButtonSuppressed:hover, .audienceSelectorNoTr uncate .uiSelectorButton .uiButtonText{max-width:none !important} .audienceSelector .uiSelectorBigButtonLabel .uiButtonText{overflow:visible} .audienceSelector .uiSelectorButton .customimg{margin-left:-2px;margin-right:2px } .audienceSelector .uiButtonNoText .customimg{margin-right:-5px} .showSecondaryOptions li, .audienceSelector .secondaryOption, .audienceSelector .returnOption{display:none} .showSecondaryOptions li, .audienceSelector .secondaryOption, .audienceSelector .returnOption{display:none} .showSecondaryOptions .returnOption, .showSecondaryOptions .secondaryOption, .fr iendList .friendListOption{display:block} .showSecondaryOptions .uiSelectorMenu{max-height:214px;overflow-y:auto;overflowx:hidden} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .uiSelectorButton, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyContainer . audienceSelector .uiSelectorButton, .fbNotePrivacyWidgetContainer .audienceSelector .uiSelectorBu tton, .fbDetailsPrivacy .audienceSelector .uiSelectorButton, .uiStream .uiStream Story .uiStreamFooter .audienceSelector .uiSelectorButton{padding-top:1px;paddin g-bottom:1px;padding-left:6px;padding-right:18px;vertical-align:middle} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .wrap .uiSelectorButton{margin-top:2px} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .wrap

.uiSelectorButton, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyContainer . audienceSelector .wrap .uiSelectorButton, .fbNotePrivacyWidgetContainer .audienceSelector .wrap . uiSelectorButton, .fbDetailsPrivacy .audienceSelector .wrap .uiSelectorButton, . uiStreamFooter .audienceSelector .wrap .uiSelectorButton{background-color:transp arent;background-image:none} .permalink_stream:hover .fbStreamPermalinkHeader .newAudienceSelector.audienceSelector .uiSelectorButton, .uiStream .uiStreamMini storyGroup:hover .uiStreamPrivacyContainer .audienceSelector.newAudienceSelector .uiSelectorButton, .fbNotePrivacyWidgetCon tainer:hover .newAudienceSelector.audienceSelector .uiSelectorButton, .fbDetails Privacy:hover .newAudienceSelector.audienceSelector .uiSelectorButton, .uiStream .uiStreamStory:hover .uiStreamFooter .newAudienceSelector.audienceSelector .uiSelectorButton{background-image:url(htt p://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-r epeat;background-position:-816px -203px;border:1px solid #ddd} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .uiSelectorButton:hover, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyConta iner .audienceSelector .uiSelectorButton:hover, .fbNotePrivacyWidgetContainer .audienceSelector .uiSele ctorButton:hover, .fbDetailsPrivacy .audienceSelector .uiSelectorButton:hover, . uiStream .uiStreamStory .uiStreamFooter .audienceSelector .uiSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php /v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-816px -104px;border:1px solid #999;padding-right:18px} .permalink_stream:hover .fbStreamPermalinkHeader .audienceSelector .openToggler .uiSelectorButton, .permalink_stream .fbStreamPermalinkHeader .audienceSelector .openToggler .uiSelectorButton, .permalink_stream .fbStreamPermalinkHeader .audienceSelector .openToggler .uiSelectorButton:hover, .uiStream .uiStreamMinistoryGroup:hover .uiStreamPrivac yContainer .audienceSelector .openToggler .uiSelectorButton, .uiStream .uiStreamMinistoryGr oup .uiStreamPrivacyContainer .audienceSelector .openToggler .uiSelectorButton, .uiStream .uiStreamMinistoryGroup .uiStreamPriva cyContainer .audienceSelector .openToggler .uiSelectorButton:hover, .uiStream .uiStreamStory:hover .uiStreamFo oter .audienceSelector .openToggler .uiSelectorButton, .fbNotePrivacyWidgetContainer .audienceSelector .openToggler .uiSelectorButton, .fbDetailsPrivacy .audienceSelector .openToggler .uiSelectorB utton, .fbNotePrivacyWidgetContainer .audienceSelector .openToggler .uiSelectorB utton:hover, .fbDetailsPrivacy .audienceSelector .openToggler .uiSelectorButton: hover, .uiStream .uiStreamStory .uiStreamFooter .audienceSelector .openToggler .uiSelectorButton, .uiStream .uiStreamStory .uiStreamFooter .audienceSelector .o penToggler .uiSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php /v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-816px -251px;border:1px solid #999;padding-right:18px;background-color:#6d84b4;border :1px solid #3b5998;border-bottom-color:#6d84b4;box-shadow:none} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .openToggler .uiSelectorButton .customimg, .permalink_stream .audienceSelector .openToggler . uiSelectorButton:hover .customimg, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyContainer .audienc eSelector .openToggler .uiSelectorButton .customimg, .uiStream .uiStreamMinistoryGroup .ui StreamPrivacyContainer .audienceSelector .openToggler .uiSelectorButton:hover .customimg, .fbNotePrivacyWidgetContainer . audienceSelector .openToggler .uiSelectorButton .customimg, .fbNotePrivacyWidget Container .audienceSelector .openToggler .uiSelectorButton:hover .customimg, .fbDetailsPrivacy .audienceSelector .openToggler .uiSelectorButton .

customimg, .fbDetailsPrivacy .audienceSelector .openToggler .uiSelectorButton:ho ver .customimg, .uiStream .uiStreamStory .uiStreamFooter .audienceSelector .openTogg ler .uiSelectorButton .customimg, .uiStream .uiStreamStory .uiStreamFooter .audience Selector .openToggler .uiSelectorButton:hover .customimg{margin-left:-1px} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .uiSelectorMenuWrapper, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyContai ner .audienceSelector .uiSelectorMenuWrapper, .timelineAudienceSelector .uiSelectorMenuWrapper, .fbNot ePrivacyWidgetContainer .audienceSelector .uiSelectorMenuWrapper, .fbDetailsPriv acy .audienceSelector .uiSelectorMenuWrapper, .uiStream .uiStreamStory .uiStream Footer .audienceSelector .uiSelectorMenuWrapper{margin-top:0} .permalink_stream .fbStreamPermalinkHeader .audienceSelector .wrap, .uiStream .u iStreamMinistoryGroup .uiStreamPrivacyContainer .audienceSelector, .fbNotePrivac yWidgetContainer .audienceSelector .wrap, .fbDetailsPrivacy .audienceSelector .w rap, .uiStream .uiStreamStory .uiStreamFooter .audienceSelector .wrap{margin-top :-3px} .permalinkBody .fbStreamPermalinkHeader .audienceSelector .uiSelectorButton .customimg, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyContainer .audienc eSelector .uiSelectorButton .customimg, .fbNotePrivacyWidgetContainer .audienceSelector .u iSelectorButton .customimg, .fbDetailsPrivacy .audienceSelector .uiSelectorButto n .customimg, .uiStreamFooter .audienceSelector .uiSelectorButton .customimg{mar gin-right:0;margin-top:1px} .permalinkBody .fbStreamPermalinkHeader .audienceSelector .uiSelectorMenu .itemIcon, .uiStream .uiStreamMinistoryGroup .uiStreamPrivacyContainer .audience Selector .uiSelectorMenu .itemIcon, .uiStreamFooter .audienceSelector .uiSelectorOption . itemIcon{display:none} .composerAudienceWrapper .uiSelectorButton, .composerAudienceWrapper .uiPopoverB utton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vov S7.png);background-repeat:no-repeat;background-position:right -201px} .composerAudienceWrapper .uiButton .uiButtonText{color:gray;font-weight:normal} .composerAudienceWrapper .audienceSelector .uiSelectorButton .customimg, .compos erAudienceWrapper .uiSelectorButton .img{opacity:.5} .composerAudienceWrapper:hover .uiButton .uiButtonText{color:#333} .composerAudienceWrapper .openToggler .uiButton .uiButtonText{color:#fff} .composerAudienceWrapper:hover .audienceSelector .uiSelectorButton .customimg, . composerAudienceWrapper .openToggler .uiSelectorButton .customimg, .composerAudi enceWrapper:hover .uiSelectorButton .img, .composerAudienceWrapper .openToggler .uiSelectorButton .img{opacity:1} .composerAudienceWrapper .selected .plusLabel{color:#fff} .uiMenu .privUnselectable{color:#333} .uiMenu .privUnselectable .itemAnchor{opacity:1} .uiMenu .fixedWidthDesc .itemLabel{white-space:normal;width:200px} .fbPrivacyAudienceIndicator .indicator{color:#333} .fbPrivacyAudienceIndicator .audienceIcon{margin-left:-18px} .fbPrivacyAudienceIndicator:hover{text-decoration:none;cursor:default} .fbProfileByline{width:493px;margin-top:4px;line-height:15px} .fbProfileBylineFragment, .fbProfileNonIconBylineFragment{margin-right:8px;color:#666} .fbProfileBylineIcon{margin-bottom:1px;margin-top:1px;vertical-align:bottom} .fbProfileLoggedOutByline{width:493px;margin-top:1px;line-height:14px} .fbLongBlurb{margin-right:8px;color:#666;padding-bottom:3px} #fbProfileCover, #pagelet_above_header_timeline{margin:-1px -1px 0} #pagelet_above_header_timeline{margin-left:0;margin-right:0;position:relative;zindex:1}

.timeline_fixed#pagelet_above_header_timeline{position:fixed;top:38px !important ;width:851px} #above_header_timeline_placeholder{display:none} .timeline_fixed + #above_header_timeline_placeholder{display:block} #viewas_header{border-color:#c4cde0;margin-bottom:0} .compactHead #fbProfileCover .coverWrap{height:60px} .compactHead #fbProfileCover h2{margin-top:15px;margin-left:126px} .compactHead #fbProfileCover .profilePicThumb{margin-top:-47px} .compactHead #fbProfileCover .profilePic{height:80px;width:80px} #fbProfileCover .cover{display:block;position:relative} #fbProfileCover .coverWrap{display:block;position:relative;height:315px;overflow :hidden;text-decoration:none} #fbProfileCover .coverWrap .photo{image-rendering:optimizeQuality;min-height:100 %;min-width:100%;position:absolute;left:0} #fbProfileCover .coverBorder{border:1px solid #000;border-color:rgba(0, 0, 0, .2 5);border-top-color:rgba(0, 0, 0, .1);bottom:0;left:0;position:absolute;right:0; top:0} #fbProfileCover .fbProfileCoverCollapsed .coverWrap{margin-top:-200px} #fbProfileCover .changeCoverPhotoIndicator{position:absolute;left:400px;top:150p x} #fbProfileCover .coverNoImage .changeCoverPhotoIndicator{top:30px} #fbProfileCover .coverNoImage{background:#e7ebf2;border-bottom:1px solid #c4cde0 ;height:100px;position:relative} #fbProfileCover .opaquedLoading .photo{opacity:.25} #fbProfileCover .coverNoImage .coverEmptyWrap{height:100%;position:relative} #fbProfileCover .coverChangeThrobber{display:none;left:50%;margin-top:-8px;posit ion:absolute;top:50%} #fbProfileCover .opaquedLoading .coverChangeThrobber{display:inline} #fbProfileCover .fbProfileCoverPhotoSelector, #fbProfileCover .fbTimelineProfile PicSelector{opacity:0;position:absolute;z-index:5} #fbProfileCover .fbTimelineProfilePicSelector{left:135px;top:-47px} #fbProfileCover .fbProfileCoverPhotoSelector{bottom:25px;right:25px} #fbProfileCover .cover:hover .fbProfileCoverPhotoSelector, #fbProfileCover .cove rNoImage .fbProfileCoverPhotoSelector, #fbProfileCover .selected.fbProfileCoverP hotoSelector, #fbProfileCover .photoContainer .fbTimelineNullProfilePicSelector, #fbProfileCover .photoContainer:hover .fbTimelineProfilePicSelector, #fbProfile Cover .selected.fbTimelineProfilePicSelector{opacity:1} #fbProfileCover .fbProfileCoverPhotoSelector .wrap, #fbProfileCover .fbTimelineP rofilePicSelector .wrap{background-color:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0, 0, 0, .2);z-index:3} #fbProfileCover .coverEditor{display:none} #fbProfileCover .uiSelector, #fbProfileCover .uiSelectorButton, #fbProfileCover .uiButtonText{max-width:none} #fbTimelineHeadline{min-height:47px;position:relative;width:100%;z-index:4} #fbTimelineHeadline .name{overflow:hidden} #fbTimelineHeadline .actions{float:right;padding:7px 25px 0 10px;max-width:500px ;text-align:right} #fbTimelineHeadline .actions .uiButtonGroup{white-space:nowrap} #fbTimelineHeadline .profilePicThumb{background:rgba(0, 0, 0, .3);border-radius: 3px;box-shadow:0 1px 1px rgba(0, 0, 0, .07);display:block;left:23px;margin-top:92px;padding:1px;position:absolute} .pagesTimelineLayout #fbTimelineHeadline .profilePicThumb{margin-top:-75px} #fbTimelineHeadline a.profilePicThumb:hover{border-color:#3b5998} #fbTimelineHeadline .profilePicThumb .img{margin:0;display:block} #fbTimelineHeadline .leftPic, #fbTimelineHeadline .rightPic{background-color:#ff f;border:4px solid #fff;border-radius:2px;height:125px;width:63px} #fbTimelineHeadline .leftPic{border-right:1px solid #fff} #fbTimelineHeadline .profilePic{background-color:#fff;border:4px solid #fff;bord er-radius:2px;height:125px;width:125px} #fbTimelineHeadline .rightPic{border-left:1px solid #fff}

#fbTimelineHeadline h2{bottom:50px;color:#1c2a47;font-size:20px;overflow:hidden; margin:16px 0 0 177px} #fbTimelineHeadline h2 a{color:#1c2a47} #fbTimelineHeadline h2 .fcg a{color:#3b5998} #fbTimelineHeadline h2 .fcg a.uiLinkSubtle{color:gray} #fbTimelineHeadline .alternate_name{color:gray;font-weight:normal} #fbTimelineHeadline .FriendButton .uiButton, #fbTimelineHeadline .subscribeButto nsContainer .uiButton{min-width:68px} #fbTimelineHeadline .FriendButton .customimg, #fbTimelineHeadline .subscribeButt onsContainer .customimg{margin-top:4px} #fbTimelineHeadline .profileHeaderButton, #fbTimelineHeadline .actionsDropdown, #fbTimelineHeadline .actionsContents{display:inline-block} #fbTimelineHeadline .profileHeaderButton .uiButtonHover, #fbTimelineHeadline .pr ofileHeaderButton .uiHoverButtonSelected, #fbTimelineHeadline .profileHeaderButt on.uiHoverButtonSelected, #fbTimelineHeadline .profileHeaderButton .uiButtonConf irm{background-color:#6d84b4;border-color:#3b5998} #fbTimelineHeadline #tlLikeButtonResponse{display:inline-block;vertical-align:bo ttom} .subscribeButtonInProfileCallout{padding-right:4px} .fbHubsTypeaheadThrobber{display:none;position:absolute;right:6px;top:5px} .typeaheadLoading .fbHubsTypeaheadThrobber{display:block} .fbProfileExperience .hubPhoto{margin-right:7px} .fbProfileExperience .experienceContent{line-height:14px;padding-top:1px} .fbProfileExperience .experienceContentLarge{font-size:13px;font-weight:bold;lin e-height:30px;padding-top:22px;padding-left:8px} .fbProfileExperience .experienceBody, .fbProfileExperience .subexperienceContent {margin-top:2px} .fbProfileExperience .subexperiences{margin:6px 0 0 15px} .fbProfileExperience .subexperience{padding-bottom:1px} .fbProfileExperience .subexperienceContent{width:273px} .showAllExperiences .revealerArrow{margin:0 0 2px 5px} .showAllExperiences:hover a, .showAllExperiences .mediaRevealer:hover{text-decor ation:none} .profileInfoTable .highlight{background-color:#fffbe4} .profileInfoTable .fbProfileExperience.highlight{left:-5px;padding:5px 0 5px 5px ;position:relative;top:-5px} .profileInfoTable .afterHighlight{margin-top:-10px} .profileInfoTable .highlight .complimentsBlingBox{margin-right:-5px} li.showAllExperiences{border-top:1px solid #e5eaf1;padding-top:7px;text-align:ce nter} .showAllExperiences:hover{border-top-color:#d8dfea;background-color:#eceff4;curs or:pointer} .showAllExperiences a{display:inline-block;padding-bottom:8px} .fbProfileInfoExpandedRowWrapper .fbProfileExperience{text-align:left} .fbProfileInfoExpandedRowWrapper .revealerWrapper{margin-top:0} .fbProfileInfoWorkRowWrapper .fbProfileExperience{text-align:left} .fbProfileInfoEducationRowWrapper .fbProfileExperience{text-align:left} .profileInfoTable th.label{color:#999;font-weight:bold;line-height:15px;text-ali gn:left;vertical-align:top;width:90px} .nile_profile .profileInfoTable th.label{font-size:11px;line-height:16px} .profileInfoTable .greenLink{color:#060} .profileInfoTable td.data{line-height:15px} .profileInfoTable td.rightCol{padding:3px 0 0 35px;text-align:right;width:50px} .profileInfoTable .sampleImageCaption{text-align:center;width:50px;word-wrap:bre ak-word} .profileInfoTable .uiInfoTable .label{color:#666;font-size:11px;font-weight:norm al;padding-top:0} .profileInfoTable .uiInfoTable .data{padding-top:0} .profileInfoTable .throbber{display:none} .profileInfoTable .async_saving .throbber{display:block}

.timelineAudienceSelector{margin-top:-2px;margin-left:1px} .timelineAudienceSelector.passiveImg{margin-left:5px} .timelineUnitContainer .timelineAudienceSelector .wrap .uiSelectorButton{backgro und-color:transparent;background-image:none;padding-right:8px;padding-right:20px ;padding-left:8px} .timelineUnitContainer:hover .timelineAudienceSelector.newAudienceSelector .uiSelectorButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_ /r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:right -202px ;border:1px solid #ddd} .timelineUnitContainer:hover .timelineAudienceSelector.newAudienceSelector .uiSelectorButton:hover, .timelineUnitContainer .timelineAudienceSelector .uiSel ectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_ /r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:right -103px ;border:1px solid #999} .timelineUnitContainer:hover .timelineAudienceSelector.audienceSelector .openToggler .uiSelectorButton, .timelineUnitContainer .timelineAudienceSelector .audienceSelector .openToggler .uiSelectorButton, .timelineUnitContainer .timelineAudienceSelector.audienceSele ctor .openToggler .uiSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php /v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:right -250px;background-color:#6d84b4;border:1px solid #3b5998;border-bottom-color:#6d 84b4;box-shadow:none} .timelineAudienceSelector .uiSelectorMenuWrapper{margin-top:0} .timelineUnitContainer .audienceSelector .uiSelectorMenu .itemIcon, .uiContextua lLayer .timelineAudienceSelector .uiSelectorMenu .itemIcon{display:none} .timelineUnitContainer .uneditable .uiSelectorMenu .itemIcon{display:inline-bloc k} .storyOnlyMe .timelineAudienceSelector .openToggler .uiSelectorButton .customimg{background-image:url(http://static.ak.fbcdn.net/rsr c.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:l eft -4px;margin-left:-4px;margin-right:4px;margin-top:1px} .storyOnlyMe .timelineAudienceSelector .customimg{background-image:url(http://st atic.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat; background-position:-681px -66px;margin-top:1px} .timelineAudienceSelector .uiSelectorButton .itemIcon{margin-top:2px} .timelineAudienceSelector .uiSelectorButton span.uiButtonText{display:none} .storyOnlyMe .timelineAudienceSelector.audienceSelector .openToggler .uiSelectorButton span.uiButtonText{color:#fff} .storyOnlyMe .timelineAudienceSelector .uiSelectorButton span.uiButtonText{margin-left:1px} .storyOnlyMe .timelineAudienceSelector .uiSelectorButton span.uiButtonText{color :#3b5998;display:inline-block;line-height:1;margin-left:3px} .timelineAudienceSelector .uiMenuItem .itemAnchor .mrs.itemIcon{display:none} .timelineAudienceSelector a.uiSelectorButton{background-image:url(http://static. ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backg round-position:right -448px;background:none} .timelineAudienceSelector a.uiSelectorButton:active, .timelineAudienceSelector a .uiSelectorButton:focus, .timelineAudienceSelector a.uiSelectorButton:hover, .ti melineAudienceSelector .openToggler a.uiSelectorButton, .timelineAudienceSelecto r .openToggler a.uiSelectorButton:active, .timelineAudienceSelector .openToggler a.uiSelectorButton:focus, .timelineAudienceSelector .openToggler a.uiSelectorBu tton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bj m1vovS7.png);background-repeat:no-repeat;background-position:right -104px;border :1px solid #999} .fbTimelineFeedbackActions{background-color:#edeff4;padding:5px 13px} .fbTimelineMiniUFI .fbTimelineFeedbackActions{background:transparent;padding:0} .fbTimelineFeedbackHeader form{display:inline} .fbTimelineUFI .UIActionLinks_bottom a, .fbTimelineUFI .fbTimelineFeedbackAction s input, .fbTimelineUFI .UIActionLinks .uiLinkButton, .fbTimelineUFI .UIActionLi

nks .uiLinkButton input, .fbTimelineUFI div.fbTimelineFeedbackActions input:hove r, .fbTimelineUFI .fbTimelineFeedbackActions button.as_link{color:#3b5998} .fbTimelineFeedbackHeader .uiBlingBox, .fbTimelineFeedbackHeader .uiBlingBox:hov er{border-style:none;height:13px;padding:0} .fbTimelineFeedbackHeader .uiBlingBox .text{vertical-align:baseline} .fbTimelineFeedbackComments a:hover, .fbTimelineFeedbackLikes a:hover, .fbTimeli neFeedbackShares a:hover{text-decoration:none} .fbTimelineFeedbackComments a, .fbTimelineFeedbackLikes a, .fbTimelineFeedbackSh ares a{padding-left:18px;position:relative} .fbTimelineFeedbackComments i, .fbTimelineFeedbackLikes i, .fbTimelineFeedbackSh ares i{display:block;left:0;position:absolute;top:-1px;width:14px} .fbTimelineFeedbackLikes i{background-image:url(http://static.ak.fbcdn.net/rsrc. php/v2/ya/r/nHKI1aW4WaJ.png);background-repeat:no-repeat;background-position:0 35px;height:13px} .fbTimelineFeedbackComments i{background-image:url(http://static.ak.fbcdn.net/rs rc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position: -670px -42px;height:15px} .fbTimelineFeedbackShares i{background-image:url(http://static.ak.fbcdn.net/rsrc .php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:-6 64px -66px;height:16px} .timelineLayout{background:#e7ebf2} .canHaveFixedElements body.timelineLayout #blueBar{padding-top:0 !important} body.timelineLayout .timeline_fixed#blueBar{padding-top:0 !important;position:fi xed !important} .timelineLayout #globalContainer{clear:both} .timelineLayout #contentArea{position:relative;width:851px !important} .timelineLayout #contentCol{background:none;padding-top:0} .timelineLayout #rightCol{margin-right:-5px;width:122px} .timelineLayout .timeline_fixed#rightCol .rightColWrap{position:fixed;top:38px} .timelineLayout #pageFooter{margin:0;overflow:hidden;width:851px} .timelineLayout #contentCurve{background-color:transparent} .timelineLayout #footerContainer{border:0;padding:8px 0 38px} .timelineLayout .fbTimelineTopSection{padding:0;margin:0} .timelineLayout .megaphone_story_wrapper{margin-bottom:10px} .timelineLayout .megaphone_box{background-color:#fff;border-top:0} .timelineLayout .fbTimelinePhotosAndVideosOfMe .fbPhotosGrid{margin-left:11px} .timelineLayout .fbTimelinePhotosAndVideosOfMe .fbPhotosGrid td{padding:0;width: auto} .timelineLayout .fbTimelinePhotoAlbums a.uiMediaThumbAlb{margin-right:9px} .timelineLayout .uiMediaThumbAlbHuge, .timelineLayout .uiMediaThumbHuge .uiMedia ThumbWrap i{height:111px;width:167px} .timelineLayout .fbPhotosGrid .photoDetails{width:185px} .timelineLayout .fbPhotosGrid .photoDetails .fbAudienceHover{margin-right:6px} .timelineLayout .uiMediaThumbHuge{padding:3px} .timelineLayout .uiMediaThumbHuge i{height:120px;width:180px} .fbTimelineVideos .uiVideoLink{padding:0;vertical-align:bottom} .fbTimelineVideos .uiVideoLinkHuge i{background-size:cover;height:133px;width:19 1px} .fbTimelinePhotoAlbums .fbPhotosGrid td{padding-right:5px} .fbTimelinePhotosAndVideosOfMe .uiVideoLink{border:0;margin:0 3px 3px 0;padding: 0;vertical-align:bottom} .fbTimelinePhotosAndVideosOfMe .uiVideoLinkHuge i{background-size:cover;height:1 20px;width:182px} .uiMediaThumbStacked.uiMediaThumbAlb{border:none;position:relative} .uiMediaThumbStacked .uiMediaThumbPrevPhoto{border:none;border-radius:2px;box-sh adow:0 0 0 1px rgba(0, 0, 0, .07), 0 1px 3px rgba(0, 0, 0, .25);height:165px;lef t:0;top:0;-o-transform:rotate(3deg);width:217px;z-index:0} .fbTimelineSection{background:#fff;border:1px solid #c4cde0;border-bottom-width: 2px;border-radius:3px;padding:20px 35px 10px} .fbTimelineSection .uiMorePager{margin:0 -35px -10px}

.pageAppTab{padding:20px 20px} .fbTimelineTopSection{border-bottom:0;border-radius:0;border-top:0;padding-botto m:0} .fbTimelineTopSectionBase .topSectionBottomBorder{display:block} .fbTimelineTopSectionBase.collapsedHead .topSectionBottomBorder{display:none} .fbTimelineCompactSection{padding:0 0 15px 0} .fbTimelineCompactSection .uiMorePager{margin:0} .fbTimelineSectionTransparent{background:none;border:none;border-radius:0;box-sh adow:none;padding-top:75px} .fbTimelinePermalink .fbTimelineSectionTransparent{padding-top:0} #pagelet_timeline_recent .fbTimelineCompactSection{padding:0} #pagelet_timeline_recent .fbTimelineShowOlder{background:url(http://static.ak.fb cdn.net/rsrc.php/v2/yD/r/N8eF8pLkCCD.png) repeat-y center top;padding-top:10px} .fbTimelineTabSection{padding:20px 20px 0 20px} .fbTimelineTabSection .uiMorePager{margin:0 -20px} .fbTimelineSubSections{display:none} .fbTimelineSectionExpanded .fbTimelineSubSections{display:block} .fbTimelineSectionExpandPager .async_saving a.uiMorePagerPrimary{display:none} .fbTimelineSectionExpander .uiMorePager .uiMorePagerPrimary, .fbTimelineSectionE xpander .uiMorePager .uiMorePagerPrimary:hover{background:none;border:0;margin:0 ;padding:0} .fbTimelineSectionExpandPager .timelineExpandLabel{background:#778cb7;border-rad ius:3px;color:#fff;display:inline-block;height:14px;padding:4px 10px;white-space :nowrap} .fbTimelineSectionExpandPager .timelineExpandLabel i{margin:0 0 1px 7px;position :relative} .fbTimelineSectionExpandPager .timelineExpandLabel:hover{background:#5d76aa} .fbTimelineShowOlder .uiMorePager a.uiMorePagerPrimary, .fbTimelineShowOlder .ui MorePager a.uiMorePagerPrimary:hover{background-color:#94a1c1;border-radius:3px; display:inline-block;padding:4px 10px} .fbTimelineShowOlder .uiMorePager a.uiMorePagerPrimary:hover{background-color:#6 97cac;text-decoration:underline} .fbTimelineShowOlder .async_saving a.uiMorePagerPrimary, .fbTimelineShowOlder .a sync_saving a.uiMorePagerPrimary:hover{display:none} .fbTimelineSectionExpandPager a{color:#fff} .fbTimelineSectionExpandPager a:hover{text-decoration:none} .fbTimelineSectionExpandPager .uiHeader{background:none;border:0} .fbTimelineSectionExpandPager .uiMorePagerLoader{background-color:#e7ebf2;border :0;margin:0;padding:8px} .fbTimelineSectionExpandPager .async_saving .uiMorePagerLoader{display:inline-bl ock} .fbTimelineSectionExpandPager .noContent{background-color:#edeff4;color:#999;tex t-align:center} .fbTimelineSectionExpandPager{position:relative;text-align:center} .fbTimelineSectionLoading{min-height:180px} .fbTimelineHiddenPager{position:fixed;bottom:-10000px} div.fbTimelineInlineSectionHeader{background:none;border:0;height:40px;text-alig n:center} .fbTimelineTimePeriod div.fbTimelineInlineSectionHeader{padding-top:0} .fbTimelineInlineSectionHeader .uiHeaderTitle{color:#1c2a47} .fbTimelineTabHeader{background:none;margin:0 10px 20px} .fbTimelineTabHeader h3{font-size:16px;width:400px} .fbTimelineAboutMeHeader{margin:0 0 15px;background:none} .fbTimelineTabSection .fbTimelineAboutMeHeader, .fbTimelineCompactSection .fbTim elineAboutMeHeader{margin:15px 15px 15px 22px} .timelineLayout .fbTimelineAboutMeHeader h3{font-size:16px} .fbTimelineAboutMeHeader h3 a{color:#333} .fbTimelineContentHeader h3.uiHeaderTitle, .fbTimelineInlineSectionHeader h3.uiH eaderTitle{background:#a9b5d3;border-radius:3px;color:#fff;display:inline-block; font-weight:normal;font-size:14px;margin:0;padding:6px 11px;word-wrap:normal}

.fbTimelineContentHeader h3 a{color:#8897bd} .fbTimelineContentHeader{margin-bottom:15px;text-align:center} .fbTimelinePermalink .fbTimelineSection .fbTimelineContentHeader{margin-bottom:0 } .fbTimelineContentHeader .headerPlus{border-left:1px solid #e5e5e5;display:inlin e-block;height:28px;margin:-7px -12px 0 0;text-align:center;width:37px} .fbTimelineAboutMeHeader .img{margin-top:2px} .fbTimelineContentHeader .headerPlus .img{margin-top:9px} .fbTimelineStickyHeader{top:38px;-o-transition:top .3s linear 0s;z-index:250} body.hasVoiceBar .fbTimelineStickyHeader{padding-top:27px} .theaterMode .fbTimelineStickyHeader{z-index:50} .fbTimelineStickyHeaderHidden{top:-150px;visibility:hidden} .collapsedHead .fbTimelineStickyHeaderHidden{display:none} .collapsedHead{box-shadow:none} .collapsedHead #fbProfileCover{height:47px;margin-bottom:-1px} .collapsedHead #fbProfileCover h2{margin-top:14px;margin-left:63px;margin-bottom :10px;font-size:17px;white-space:nowrap} .collapsedHead #fbProfileCover .coverNoImage, .collapsedHead #fbProfileCover .co verWrap{height:0} .collapsedHead #fbProfileCover .profilePicThumb{background:transparent;box-shado w:none;left:11px;margin-top:2px} .collapsedHead #fbProfileCover .profilePic{height:32px;width:32px} .collapsedHead #fbProfileCover .leftPic, .collapsedHead #fbProfileCover .rightPi c{visibility:hidden;width:0} .collapsedHead .fbTimelineNavigationPagelet, .collapsedHead #fbProfileCover .fbP rofileCoverPhotoSelector, .collapsedHead #fbProfileCover .alternate_name, .colla psedHead #fbProfileCover .presenceIndicator{display:none} .fbTimelineStickyHeader .stickyHeaderWrap{position:absolute;width:851px} .fbTimelineStickyHeader .back, .fbTimelineStickyHeader .actions, .fbTimelineStic kyHeader .name{position:relative} .fbTimelineStickyHeader .back{background-color:#fff;border:1px solid #c4cde0;bor der-radius:0 0 2px 2px;border-top:0;height:47px;position:absolute;width:849px} .fbTimelineStickyHeader .actions{float:right;padding:12px 25px 5px 5px} .fbTimelineStickyHeader .name{padding:9px 14px 7px 16px;display:block;float:left ;text-overflow:ellipsis;white-space:nowrap} .ogAppTab .fbStickyHeaderRightLeft{width:819px} .fbStickyHeaderBreadcrumb{margin-top:3px;margin-left:10px} .fbStickyHeaderBreadcrumb .uiButton .uiButtonText, .fbStickyHeaderBreadcrumb .ui Button input{font-size:13px;line-height:18px;padding-top:0} .fbStickyHeaderBreadcrumb .uiButton{height:19px;line-height:19px} .fbStickyHeaderBreadcrumb .nameButton .uiButtonText{max-width:190px !important;o verflow:hidden;text-overflow:ellipsis} .fbTimelineStickyHeader .name .profileThumb{display:block;float:left;height:32px ;margin-top:-1px} .fbTimelineStickyHeader .name .profileThumb .img{display:inline-block;height:32p x;width:32px} #fbProfileCover .fbTimelineStickyHeader .fbTimelineConnectButtonGroup .uiButtonH over, #fbProfileCover .fbTimelineStickyHeader .fbTimelineConnectButtonGroup .uiH overButtonSelected, #fbProfileCover .fbTimelineStickyHeader .fbTimelineConnectBu ttonGroup .uiButtonConfirm{background-color:#6d84b4;border-color:#3b5998} .fbTimelineUFI{background:#fff;margin-bottom:0 !important;margin-top:-12px;posit ion:relative;top:12px} .fbTimelineUFIEmpty{margin-top:-15px} .fbTimelineUFI .fbUfi{padding:0;width:100%} .fbTimelineUFI .uiUfi .ufiItem{border:0;padding:5px 12px} .fbTimelineFeedbackLikes, .fbTimelineFeedbackComments, .fbTimelineFeedbackShares{float:right;margin-left:5px} .fbTimelineOneColumn .fbTimelineUFI .uiUfiComment .commentContent{width:600px} .fbTimelineMiniUFI{margin:0 0 -2px}

.fbTimelineMiniUFI .miniActionList{display:inline-block} .fbTimelineMiniUFI .uiLoadingIndicatorAsync{margin:0 0 -2px 6px} .timelineUnitContainer{position:relative} .timelineUnitContainer .uiCommentContainer{margin-bottom:-12px;margin-left:-12px ;padding-top:3px;width:403px} .fbTimelineOneColumn .uiCommentContainer{width:843px} .timelineUnitContainer .aboveUnitContent{margin-bottom:15px} .timelineUnitContainer .belowUnitContent{margin-top:15px} .-cx-PRIVATE-fbTimelineExternalShareUnit__root{background:#f6f7f9;border:1px sol id #d3dae8;display:block;margin-bottom:12px} .-cx-PRIVATE-fbTimelineExternalShareUnit__root:hover, a.-cx-PRIVATE-fbTimelineEx ternalShareUnit__content:hover{text-decoration:none} .-cx-PRIVATE-fbTimelineExternalShareUnit__content{display:block;vertical-align:t op;zoom:1} .-cx-PRIVATE-fbTimelineExternalShareUnit__image{border-right:1px solid #d3dae8;f loat:left;height:116px;line-height:110px;margin-right:11px;min-width:72px;positi on:relative;text-align:center} .-cx-PRIVATE-fbTimelineExternalShareUnit__image .img{vertical-align:middle} .-cx-PRIVATE-fbTimelineExternalShareUnit__textWrapper{padding:8px 11px} .-cx-PRIVATE-fbTimelineExternalShareUnit__text{max-height:98px;overflow:hidden} .-cx-PRIVATE-fbTimelineExternalShareUnit__itemLink:hover{text-decoration:underli ne} .-cx-PRIVATE-fbTimelineExternalShareUnit__hasImage .-cx-PRIVATE-fbTimelineExtern alShareUnit__textWrapper, .-cx-PRIVATE-fbTimelineExternalShareUnit__hasImage .-c x-PRIVATE-fbTimelineExternalShareUnit__text{height:98px} body.Locale_zh_CN .-cx-PRIVATE-fbTimelineExternalShareUnit__text, body.Locale_zh _HK .-cx-PRIVATE-fbTimelineExternalShareUnit__text, body.Locale_zh_TW .-cx-PRIVA TE-fbTimelineExternalShareUnit__text{max-height:91px} .fbTimelineOneColumn .-cx-PRIVATE-fbTimelineExternalShareUnit__text{width:795px} .fbTimelineOneColumn .-cx-PRIVATE-fbTimelineExternalShareUnit__hasImage .-cx-PRI VATE-fbTimelineExternalShareUnit__text{width:639px} .-cx-PRIVATE-fbTimelineExternalShareUnit__previewText{margin-top:14px} .timelineUnitContainer .-cx-PRIVATE-fbTimelineExternalShareUnit__wrapper .explod ed{background:#f2f2f2;border:none;margin:0 0 0 -12px;width:403px} .fbTimelineOneColumn .timelineUnitContainer .-cx-PRIVATE-fbTimelineExternalShare Unit__wrapper .exploded{width:843px} .timelineUnitContainer .-cx-PRIVATE-fbTimelineExternalShareUnit__wrapper .-cx-PR IVATE-fbTimelineExternalShareUnit__largePreview{background:#f2f2f2 no-repeat 50% 50%;display:block;height:214px;margin:-15px 0 12px 0;position:relative;width:37 9px} .fbTimelineOneColumn .timelineUnitContainer .-cx-PRIVATE-fbTimelineExternalShare Unit__wrapper .-cx-PRIVATE-fbTimelineExternalShareUnit__largePreview{height:461p x;width:819px} .timelineUnitContainer .-cx-PRIVATE-fbTimelineExternalShareUnit__wrapper .explod ed .swfObject{margin:0 auto} .-cx-PRIVATE-fbTimelineExternalShareUnit__video{min-width:99px} .-cx-PRIVATE-fbTimelineExternalShareUnit__play{background:url(http://static.ak.f bcdn.net/rsrc.php/v2/yG/r/Gj2ad6O09TZ.png) no-repeat 0 0;height:26px;left:50%;ma rgin:-13px 0 0 -17px;position:absolute;top:50%;width:35px} .-cx-PRIVATE-fbTimelineExternalShareUnit__loading .-cx-PRIVATE-fbTimelineExterna lShareUnit__play{background:#fff url(http://static.ak.fbcdn.net/rsrc.php/v2/yb/r /GsNJNwuI-UM.gif) no-repeat 50% 50%;height:100%;left:17px;opacity:.7;position:ab solute;top:13px;width:100%} #profile_minifeed .reportHide{display:none} #profile_minifeed.uiReportStream .reportHide{display:block} #profile_minifeed.uiReportStream .uiStreamHide, #profile_minifeed.uiReportStream .uiStreamHide .uiSelectorButton{position:static } .fbProfileStream .uiStreamMessage .passiveName{font-weight:normal} .fbProfileStream .uiStreamMessage a.passiveName{font-weight:bold}

.fbReminders .fbRemindersHeader{margin-bottom:6px} .fbReminders .fbRemindersStory{padding:3px 5px} .fbReminders .fbRemindersStory .fbRemindersRemove{margin-top:-1px;display:none} .fbReminders .fbRemindersStory:hover{background-color:#eceff5;cursor:pointer} .fbReminders .fbRemindersStory:hover a{text-decoration:none} .fbReminders .fbRemindersStory:hover .fbRemindersRemove{display:block} .fbReminders .fbRemindersStory .fbRemindersTitle{color:#3b5998} .fbRemindersContent .fbRemindersFooter{text-align:center} .fbRemindersContent .fbRemindersGiantPic{height:75px;width:75px} .canvas_iframe_util{overflow:hidden;width:760px;height:800px} .canvas_iframe_custom{overflow:hidden;width:760px} .canvas_rel_positioning{position:relative;overflow:hidden;zoom:1} #canvas_throbber{display:none;padding:220px 0;text-align:center} #canvas_throbber.async_saving{display:block} #iframe_canvas, #iframe_canvas_fb_https{width:100%} .canvasRHCFooter{margin-bottom:30px} body.canvas_fixed div#blueBar{position:fixed;left:0;right:0;top:0} body.canvas_fixed div#pageHead{width:1006px} body.canvas_fixed.liquid div#pageHead{left:0;width:100%} body.canvas_fixed div#rightCol{height:1px} body.canvas_fixed .fixedAux{border-left:solid 1px #b3b3b3;border-right:solid 1px #b3b3b3;bottom:0;margin-left:-1px;position:fixed;top:38px} body.canvas_fixed .fixedAux div#pagelet_ego_pane{background-color:#fff;bottom:0; padding-bottom:31px;position:absolute;z-index:10} body.canvas .ego_unit{margin-left:3px;margin-right:3px} body.canvas #blueBar{min-width:1006px} body.canvas #blueBar div#pageHead, body.canvas div#globalContainer{width:1006px} body.canvas div#globalContainer{padding-left:0} body.canvas.liquid #blueBar div#pageHead, body.canvas.liquid div#globalContainer{min-width:1020px} body.canvas #mainContainer{border-right:1px solid #b3b3b3} body.canvas #contentCol{padding-top:0} body.canvas #rightCol{border-left:1px solid #b3b3b3;margin-left:-1px;min-height: 1px} body.canvas #bottomContent{display:none} body.canvas #contentCurve{margin:0 8px} body.canvas #footerContainer{margin:0 8px 25px 8px} body.canvas div#contentArea{border-right:1px solid #b3b3b3} body.canvas div#contentArea::after{display:none} body.canvas.center_fixed_width_app #pagelet_canvas_content{margin:0 auto;width:7 60px} #so_sound_player{left:0;position:absolute;top:0;z-index:1000} #sound_player_holder{position:absolute} .sp_12qdz5{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yN/r/4BXa vJJgXtT.png);background-repeat:no-repeat;display:inline-block;height:14px;width: 11px} .sx_1eb211{width:12px;height:12px;background-position:-13px -28px} .selected .sx_1eb211{background-position:-0px -28px} .sx_15fb16{width:17px;height:16px;background-position:-17px -0px} .selected .sx_15fb16{background-position:-0px -0px} .sx_de1cc5{width:12px;background-position:-12px -41px} .selected .sx_de1cc5{background-position:-0px -41px} .sx_70ea40{width:10px;background-position:-10px -84px} .selected .sx_70ea40{background-position:-0px -84px} .sx_2d16e2{height:12px;background-position:-11px -71px} .selected .sx_2d16e2{background-position:-0px -71px} .sx_1ebc20{background-position:-11px -56px} .selected .sx_1ebc20{background-position:-0px -56px}

.sx_193877{width:13px;height:10px;background-position:-13px -17px} .selected .sx_193877{background-position:-0px -17px} .sx_760e90{width:16px;height:16px;background-position:-0px -99px} .sp_3jhfyf{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yA/r/CoiM BWx8lL7.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_c5bbd5{background-position:-67px -118px} .selected .sx_c5bbd5{background-position:-51px -118px} .sx_cc50b6{width:1px;height:1px;background-position:-197px -27px} .sx_2bf2da{height:10px;background-position:-153px -153px} .sx_e625ce{width:11px;height:11px;background-position:-4px -8px} .sx_5e20df{width:17px;height:17px;background-position:-51px -135px} .sx_3c38b2{width:11px;height:7px;background-position:-188px -135px} .sx_ad1334{width:17px;background-position:-84px -118px} .sx_267f2d{width:13px;height:14px;background-position:-47px -169px} .sx_bcc8c4{background-position:-120px -135px} .sx_1381ae{background-position:-137px -135px} .sx_863946{height:14px;background-position:-119px -153px} .sx_c4f635{background-position:-171px -135px} .sx_706d03{background-position:-154px -135px} .sx_3ab6de{background-position:-103px -135px} .sx_1d85d8{background-position:-170px -118px} .sx_2a0150{height:17px;background-position:-86px -135px} .sx_30109d{background-position:-153px -118px} .sx_0fca0b{background-position:-136px -118px} .sx_26db48{background-position:-0px -169px} .sx_d24d3e{height:15px;background-position:-51px -153px} .sx_21619e{height:10px;background-position:-136px -153px} .sx_9fc26d{width:13px;height:10px;background-position:-61px -169px} .sx_f9cc0d{width:12px;height:11px;background-position:-187px -118px} .sx_6556cd{height:15px;background-position:-85px -153px} .sx_759ce8{width:13px;background-position:-33px -169px} .sx_394b81{background-position:-119px -118px} .sx_9de671{height:14px;background-position:-102px -153px} .sx_92617b{height:15px;background-position:-68px -153px} .sx_a8a2f3{width:15px;background-position:-17px -169px} .sx_34bbb9{height:17px;background-position:-69px -135px} .sx_57ea31{background-position:-102px -118px} .sx_ede0a2{height:10px;background-position:-170px -153px} .sx_0eb283{width:5px;height:3px;background-position:-191px -27px} .sx_1a62ca{width:190px;height:90px;background-position:-0px -27px} .sx_9aef66{width:50px;height:50px;background-position:-0px -118px} .sp_3msrna{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1Xas GjTsZ3i.png);background-repeat:no-repeat;display:inline-block;height:31px;width: 24px} .sx_bb2d20{width:10px;height:10px;background-position:-85px -288px} .sx_5cbd59{width:7px;height:7px;background-position:-94px -99px} .sx_440e16{width:12px;height:10px;background-position:-81px -99px} .sx_6492bc{width:16px;height:16px;background-position:-86px -0px} .sx_566908{width:32px;height:32px;background-position:-25px -288px} .sx_78da8f{width:11px;height:11px;background-position:-54px -121px} .sx_252cfd{background-position:-54px -323px} .sx_f5197b{background-position:-0px -355px} .sx_af1887{background-position:-25px -355px} .sx_7bf090{background-position:-50px -355px} .sx_cf81c0{background-position:-25px -255px} .sx_3e21f7{background-position:-50px -255px} .sx_5857c8{background-position:-75px -255px} .sx_3d191c{background-position:-0px -255px} .sx_ceacda{background-position:-75px -355px}

.sx_9bb6e2{background-position:-25px -387px} .sx_f281a1{background-position:-0px -387px} .sx_a0770e{background-position:-75px -220px} .sx_88946b{background-position:-50px -220px} .sx_508250{background-position:-0px -290px} .sx_c6cd37{background-position:-25px -220px} .sx_a4550d{background-position:-0px -220px} .sx_000ed6{background-position:-56px -88px} .sx_011612{background-position:-31px -88px} .sx_1b8b7d{width:54px;height:18px;background-position:-31px -19px} .sx_efe56a{width:54px;height:18px;background-position:-31px -0px} .sx_484b41{width:9px;height:12px;background-position:-90px -86px} .selected .sx_484b41{background-position:-81px -86px} .sx_7d521a{width:30px;height:150px;background-position:-0px -0px} .sx_a77633{width:20px;height:11px;background-position:-82px -50px} .sx_c8663d{width:20px;height:11px;background-position:-82px -62px} .sx_89907b{width:25px;background-position:-28px -323px} .sx_9788d9{width:25px;background-position:-1px -323px} .sx_c71fbe{width:25px;background-position:-59px -288px} .sx_bc7689{width:92px;height:20px;background-position:-5px -157px} .sx_2f7ab2{width:89px;height:19px;background-position:-5px -191px} .sx_67adf6{width:11px;height:6px;background-position:-81px -110px} .sx_304cdd{width:11px;height:6px;background-position:-66px -121px} .sx_13b616{width:20px;height:11px;background-position:-82px -38px} .sx_59a65f{width:22px;height:19px;background-position:-31px -121px} .sx_c86ea6{width:50px;height:47px;background-position:-31px -38px} .sx_4958dd{width:13px;height:8px;background-position:-82px -74px} .sx_aa5bfa{width:15px;height:15px;background-position:-86px -17px} .sp_5hffjf{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yH/r/7do1 q4TK5F6.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_2e866a{width:46px;height:17px;background-position:-0px -0px} .sx_ac1289{background-position:-0px -18px} .sx_11bff5{width:6px;height:11px;background-position:-40px -18px} .selected .sx_11bff5{background-position:-34px -18px} .sx_a6ba73{background-position:-17px -18px} .sp_5ofqrx{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bj m1vovS7.png);background-repeat:no-repeat;display:inline-block;height:30px;width: 29px} .sx_e063f0{width:17px;height:17px;background-position:-646px -66px} .sx_9f919a{width:17px;height:17px;background-position:-628px -66px} .sx_b03a4b{width:7px;height:14px;background-position:-845px -4px} .sx_d16309{background-position:-90px -177px} .sx_ea98d9{background-position:-60px -177px} .sx_02460d{background-position:-30px -177px} .sx_afb536{background-position:-314px -102px} .sx_3172d0{background-position:-210px -177px} .sx_8d2359{background-position:-150px -177px} .sx_845472{background-position:-224px -102px} .sx_5e5548{background-position:-254px -102px} .sx_c7a803{background-position:-284px -102px} .sx_4788f2{background-position:-0px -177px} .sx_75acef{background-position:-120px -177px} .sx_cda7cc{background-position:-180px -177px} .sx_b39e63{width:11px;height:14px;background-position:-533px -19px} .sx_7bd9ff{width:10px;height:10px;background-position:-732px -42px} .sx_173976{width:9px;height:11px;background-position:-722px -42px} .sx_a414a3{width:11px;height:11px;background-position:-710px -42px} .sx_31f730{width:11px;height:11px;background-position:-698px -42px} .sx_0bb1b1{width:12px;height:12px;background-position:-514px -4px}

.selected .sx_0bb1b1{background-position:-501px -4px} .sx_72da13{width:8px;height:10px;background-position:-681px -66px} .sx_0e20d9{width:16px;height:15px;background-position:-669px -42px} .sx_79cce4{width:10px;height:8px;background-position:-754px -42px} .sx_dafc46{width:16px;height:16px;background-position:-664px -66px} .sx_172947{width:10px;height:9px;background-position:-743px -42px} .sx_67ae91{width:27px;height:45px;background-position:-168px -102px} .sx_92ffda{width:27px;height:45px;background-position:-140px -102px} .sx_39c5d6{width:27px;height:45px;background-position:-196px -102px} .sx_3c0f09{width:27px;height:45px;background-position:-112px -102px} .sx_1fd744{width:11px;height:12px;background-position:-686px -42px} .sx_18ed79{width:50px;height:24px;background-position:-552px -66px} .sx_e10576{width:50px;height:24px;background-position:-501px -66px} .sx_f09bd7{width:15px;height:21px;background-position:-501px -19px} .sx_0ee110{width:19px;height:15px;background-position:-629px -42px} .sx_f7c347{width:19px;height:15px;background-position:-649px -42px} .sx_57ddb9{width:15px;height:21px;background-position:-517px -19px} .sx_832e7d{width:24px;height:24px;background-position:-603px -66px} .sx_fd9858{width:111px;height:74px;background-position:-0px -102px} .sx_fe5ce8{width:411px;height:4px;background-position:-0px -494px} .sx_fb6064{width:411px;height:3px;background-position:-412px -494px} .sx_d3d87b{width:851px;height:3px;background-position:-0px -0px} .sx_cc15af{width:5px;height:3px;background-position:-847px -29px} .sx_2baf3e{width:63px;height:23px;background-position:-501px -42px} .sx_148e03{width:63px;height:20px;background-position:-565px -42px} .sx_404f1c{width:500px;height:48px;background-position:-352px -102px} .sx_594563{width:500px;height:48px;background-position:-352px -151px} .sx_36ac28{width:500px;height:48px;background-position:-352px -200px} .sx_9d5408{width:500px;height:48px;background-position:-352px -249px} .sx_983f4d{width:500px;height:48px;background-position:-0px -4px} .sx_7b7b59{width:500px;height:48px;background-position:-0px -53px} .sx_b46b5f{width:500px;height:48px;background-position:-352px -298px} .sx_2c5e1c{width:500px;height:48px;background-position:-352px -347px} .sx_705b8c{width:500px;height:48px;background-position:-352px -445px} .sx_ab4cce{width:500px;height:48px;background-position:-352px -396px} .sx_87748a{width:16px;height:8px;background-position:-527px -4px} .sp_5urct5{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/px6B e52Ig4w.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_ea53c3{background-position:-16px -303px} .selected .sx_ea53c3{background-position:-0px -303px} .sx_ce5254{background-position:-0px -1558px} .sx_1a2ad6{background-position:-17px -1558px} .sx_6fe4f2{background-position:-0px -1575px} .sx_dce5bb{background-position:-17px -1575px} .sx_4b78c0{background-position:-0px -1592px} .sx_376cf0{background-position:-17px -1592px} .sx_8c41b4{background-position:-0px -1609px} .sx_7a4011{background-position:-17px -1609px} .sx_4267e1{background-position:-0px -1626px} .sx_7655b2{background-position:-17px -1626px} .sx_22c218{background-position:-0px -1643px} .sx_1b32f3{background-position:-17px -1643px} .sx_fc88a6{background-position:-0px -1660px} .sx_ced067{background-position:-17px -1660px} .sx_7c509b{background-position:-0px -1813px} .sx_e5e8ed{background-position:-17px -1677px} .sx_7f0a7b{background-position:-0px -1694px} .sx_94823e{background-position:-17px -1694px} .sx_f69722{background-position:-0px -1711px}

.sx_592812{background-position:-17px -1711px} .sx_2c99f5{background-position:-0px -1728px} .sx_788fa7{background-position:-17px -1728px} .sx_578b90{background-position:-0px -1745px} .sx_70961d{background-position:-17px -1745px} .sx_c20c8b{background-position:-0px -1762px} .sx_ce5aa2{background-position:-17px -1762px} .sx_3b87b9{background-position:-0px -1779px} .sx_2ff844{background-position:-17px -1779px} .sx_b8af54{background-position:-0px -1796px} .sx_19a98b{background-position:-17px -1796px} .sx_75b4df{background-position:-0px -1677px} .sx_28054b{background-position:-0px -1303px} .sx_822046{background-position:-17px -1303px} .sx_62400d{background-position:-0px -1320px} .sx_0f9b12{background-position:-17px -1320px} .sx_ad1d60{background-position:-0px -1337px} .sx_0b74a2{background-position:-17px -1337px} .sx_291bf3{background-position:-0px -1354px} .sx_440acc{background-position:-17px -1354px} .sx_e0b66c{background-position:-0px -1371px} .sx_dfee84{background-position:-17px -1371px} .sx_85b888{background-position:-0px -1388px} .sx_a3b21d{background-position:-17px -1388px} .sx_f99cb2{background-position:-0px -1405px} .sx_929a86{background-position:-17px -1405px} .sx_f4cdeb{background-position:-17px -1541px} .sx_aee12f{background-position:-0px -2238px} .sx_2d32fc{background-position:-0px -1439px} .sx_6c941e{background-position:-17px -1439px} .sx_29dc30{background-position:-0px -1456px} .sx_c6eaca{background-position:-17px -1456px} .sx_c5c64d{background-position:-0px -1473px} .sx_55f103{background-position:-17px -1473px} .sx_29a040{background-position:-0px -1490px} .sx_d111bf{background-position:-17px -1490px} .sx_f572f3{background-position:-0px -1507px} .sx_60df8f{background-position:-17px -1507px} .sx_3bede0{background-position:-0px -1524px} .sx_48c7a1{background-position:-17px -1524px} .sx_001e4d{background-position:-0px -1541px} .sx_cca3db{background-position:-0px -1422px} .sx_87314d{background-position:-17px -2136px} .sx_ddafba{background-position:-17px -2221px} .sx_944f44{background-position:-0px -2221px} .sx_06f5ab{background-position:-17px -2204px} .sx_5db025{background-position:-0px -2204px} .sx_a00be5{background-position:-17px -2187px} .sx_288aa1{background-position:-0px -2187px} .sx_af9f66{background-position:-17px -2170px} .sx_a87375{background-position:-0px -2170px} .sx_73e12a{background-position:-17px -2238px} .sx_edebe4{background-position:-0px -2153px} .sx_b22c2a{background-position:-0px -2306px} .sx_d4d13c{background-position:-0px -2136px} .sx_644a18{background-position:-17px -2119px} .sx_9e82d5{background-position:-0px -2119px} .sx_41790f{background-position:-17px -2102px} .sx_4e913e{background-position:-0px -2102px} .sx_dc3aec{background-position:-17px -2085px}

.sx_03d6a0{background-position:-0px -2085px} .sx_ad0c38{background-position:-17px -2153px} .sx_e33971{background-position:-17px -2289px} .sx_4b03d8{background-position:-17px -2306px} .sx_28f0fe{background-position:-17px -2323px} .sx_18cab1{background-position:-0px -2323px} .sx_b5eb4f{background-position:-0px -2289px} .sx_901731{background-position:-17px -2272px} .sx_b15f95{background-position:-0px -2272px} .sx_470d40{background-position:-17px -2255px} .sx_2e695a{background-position:-0px -2255px} .sx_3749a6{background-position:-17px -1932px} .sx_5dd026{background-position:-17px -1813px} .sx_b5119c{background-position:-0px -1830px} .sx_4f307e{background-position:-17px -1830px} .sx_4673f3{background-position:-0px -1847px} .sx_efaf8a{background-position:-17px -1847px} .sx_52e43d{background-position:-0px -1864px} .sx_3751d3{background-position:-17px -1864px} .sx_5071a4{background-position:-0px -1881px} .sx_555172{background-position:-17px -1881px} .sx_96fec9{background-position:-0px -1898px} .sx_394bf2{background-position:-17px -1898px} .sx_c12b99{background-position:-0px -1915px} .sx_a807d9{background-position:-17px -1915px} .sx_a9dd76{background-position:-0px -1932px} .sx_e25a74{background-position:-17px -2068px} .sx_23db1e{background-position:-0px -1949px} .sx_2e3e12{background-position:-17px -1949px} .sx_65cfd7{background-position:-0px -1966px} .sx_311ee5{background-position:-17px -1966px} .sx_16b96c{background-position:-0px -1983px} .sx_c5e21c{background-position:-17px -1983px} .sx_101166{background-position:-0px -2000px} .sx_093ad7{background-position:-17px -2000px} .sx_cb6db9{background-position:-0px -2017px} .sx_10cad4{background-position:-17px -2017px} .sx_8e4d57{background-position:-0px -2034px} .sx_ad98e7{background-position:-17px -2034px} .sx_34a2cb{background-position:-0px -2051px} .sx_8219ef{background-position:-17px -2051px} .sx_27f62e{background-position:-0px -2068px} .sx_663d6e{background-position:-0px -997px} .sx_1cc13c{background-position:-17px -776px} .sx_191fe2{background-position:-0px -776px} .sx_52f2ae{background-position:-17px -759px} .sx_7b462f{background-position:-0px -759px} .sx_e4ff7a{background-position:-17px -742px} .sx_3861be{background-position:-0px -742px} .sx_a4f23d{background-position:-0px -725px} .sx_dcc2cd{background-position:-17px -708px} .sx_e20395{background-position:-17px -725px} .sx_6f0182{background-position:-17px -895px} .sx_5f68cd{background-position:-0px -810px} .sx_f2eb82{background-position:-17px -810px} .sx_642cf4{background-position:-0px -827px} .sx_8452a6{background-position:-17px -1422px} .sx_6873fa{background-position:-17px -827px} .sx_743b49{background-position:-17px -793px} .sx_ee3dff{background-position:-0px -844px}

.sx_dae7ba{background-position:-17px -844px} .sx_9a5c39{background-position:-0px -861px} .sx_4beb3c{background-position:-17px -861px} .sx_f58455{background-position:-0px -878px} .sx_13fd0f{background-position:-17px -878px} .sx_e571d9{background-position:-0px -895px} .sx_d774df{background-position:-0px -708px} .sx_c3bcde{background-position:-17px -589px} .sx_e5dfb0{background-position:-0px -589px} .sx_83a921{background-position:-17px -572px} .sx_d0dfde{background-position:-0px -572px} .sx_443e4e{background-position:-17px -555px} .sx_c34a07{background-position:-0px -555px} .sx_405d4f{background-position:-17px -538px} .sx_220258{background-position:-0px -538px} .sx_7d69e4{background-position:-0px -521px} .sx_032393{background-position:-17px -521px} .sx_7272aa{background-position:-0px -606px} .sx_94fc3c{background-position:-17px -606px} .sx_ea5cae{background-position:-0px -623px} .sx_4742fb{background-position:-17px -623px} .sx_4b7dfb{background-position:-0px -640px} .sx_05aac2{background-position:-17px -640px} .sx_b807fa{background-position:-0px -657px} .sx_ecbf7b{background-position:-17px -657px} .sx_f7c1f4{background-position:-0px -674px} .sx_071ffb{background-position:-17px -674px} .sx_cc849e{background-position:-0px -691px} .sx_f4be3d{background-position:-17px -691px} .sx_4fac32{background-position:-0px -793px} .sx_1b7566{background-position:-17px -1099px} .sx_7da9af{background-position:-0px -1116px} .sx_9e334c{background-position:-17px -1116px} .sx_df2e56{background-position:-0px -1133px} .sx_8cc468{background-position:-17px -1133px} .sx_21c3c2{background-position:-0px -1150px} .sx_940846{background-position:-17px -1150px} .sx_96a058{background-position:-0px -1167px} .sx_1dd234{background-position:-17px -1167px} .sx_1bb551{background-position:-0px -1184px} .sx_a8bd36{background-position:-17px -1286px} .sx_e42817{background-position:-0px -1201px} .sx_cdc0b6{background-position:-17px -1201px} .sx_911108{background-position:-0px -1218px} .sx_784952{background-position:-17px -1218px} .sx_5c7dd8{background-position:-0px -1235px} .sx_7b517e{background-position:-17px -1235px} .sx_4bcc07{background-position:-0px -1252px} .sx_0686ab{background-position:-17px -1252px} .sx_fc0400{background-position:-0px -1269px} .sx_2e57e3{background-position:-17px -1269px} .sx_492875{background-position:-0px -1286px} .sx_a2315e{background-position:-17px -1184px} .sx_ae9a98{background-position:-0px -912px} .sx_e6720b{background-position:-17px -912px} .sx_8a21e6{background-position:-0px -929px} .sx_f03d82{background-position:-17px -929px} .sx_19b896{background-position:-0px -946px} .sx_3031c5{background-position:-17px -946px} .sx_0b2ec5{background-position:-0px -963px}

.sx_e67d37{background-position:-17px -963px} .sx_150bab{background-position:-0px -980px} .sx_23fc7d{background-position:-17px -980px} .sx_a59ed9{background-position:-0px -1099px} .sx_03bfe9{background-position:-17px -997px} .sx_2c321e{background-position:-0px -1014px} .sx_bae2a9{width:12px;height:10px;background-position:-12px -2418px} .sx_381ac2{width:17px;background-position:-17px -0px} .selected .sx_381ac2{background-position:-0px -0px} .sx_561e95{width:17px;background-position:-17px -17px} .selected .sx_561e95{background-position:-0px -17px} .sx_cff12e{width:12px;height:12px;background-position:-13px -359px} .selected .sx_cff12e{background-position:-0px -359px} .sx_f5c4ca{width:12px;height:12px;background-position:-13px -372px} .selected .sx_f5c4ca{background-position:-0px -372px} .sx_732532{width:12px;height:12px;background-position:-13px -385px} .selected .sx_732532{background-position:-0px -385px} .sx_6282ca{width:13px;height:12px;background-position:-13px -320px} .selected .sx_6282ca{background-position:-0px -320px} .sx_b2775a{width:17px;background-position:-17px -34px} .selected .sx_b2775a{background-position:-0px -34px} .sx_c6598c{width:17px;background-position:-17px -51px} .selected .sx_c6598c{background-position:-0px -51px} .sx_bc9d5c{width:17px;background-position:-17px -68px} .selected .sx_bc9d5c{background-position:-0px -68px} .sx_4af954{width:5px;height:14px;background-position:-29px -151px} .selected .sx_4af954{background-position:-24px -151px} .sx_974ad0{width:9px;height:14px;background-position:-9px -478px} .selected .sx_974ad0{background-position:-0px -478px} .sx_ab2b8b{width:8px;height:14px;background-position:-24px -2357px} .selected .sx_ab2b8b{background-position:-16px -2357px} .sx_750169{width:10px;height:14px;background-position:-10px -463px} .selected .sx_750169{background-position:-0px -463px} .sx_cc9a3a{width:8px;height:14px;background-position:-8px -2374px} .selected .sx_cc9a3a{background-position:-0px -2374px} .sx_8b87c9{width:11px;height:14px;background-position:-11px -413px} .selected .sx_8b87c9{background-position:-0px -413px} .sx_a7bd62{width:11px;height:14px;background-position:-11px -398px} .selected .sx_a7bd62{background-position:-0px -398px} .sx_39f776{height:14px;background-position:-0px -2389px} .sx_ad707f{width:10px;height:10px;background-position:-0px -2444px} .sx_1e553e{width:15px;background-position:-0px -2357px} .sx_793ce8{width:15px;background-position:-0px -2340px} .sx_f9fc16{width:15px;background-position:-19px -495px} .sx_8f64bb{width:15px;background-position:-19px -478px} .sx_a93f10{background-position:-16px -184px} .selected .sx_a93f10{background-position:-0px -184px} .sx_1c1535{width:13px;height:12px;background-position:-13px -346px} .selected .sx_1c1535{background-position:-0px -346px} .sx_124437{width:13px;height:12px;background-position:-13px -333px} .selected .sx_124437{background-position:-0px -333px} .sx_a8277a{width:9px;height:14px;background-position:-9px -493px} .selected .sx_a8277a{background-position:-0px -493px} .sx_a8dc25{background-position:-16px -201px} .selected .sx_a8dc25{background-position:-0px -201px} .sx_76ae80{background-position:-16px -218px} .selected .sx_76ae80{background-position:-0px -218px} .sx_b1fb5b{background-position:-16px -235px} .selected .sx_b1fb5b{background-position:-0px -235px} .sx_7d75bf{background-position:-16px -252px}

.selected .sx_7d75bf{background-position:-0px -252px} .sx_b29069{background-position:-16px -269px} .selected .sx_b29069{background-position:-0px -269px} .sx_5dc335{background-position:-17px -1014px} .sx_31d7a7{background-position:-16px -286px} .selected .sx_31d7a7{background-position:-0px -286px} .sx_2511b8{width:8px;height:14px;background-position:-25px -2374px} .selected .sx_2511b8{background-position:-17px -2374px} .sx_bdea63{background-position:-0px -1031px} .sx_c8c2dd{background-position:-17px -1031px} .sx_998dea{background-position:-0px -1048px} .sx_d84d93{background-position:-17px -1048px} .sx_b61fad{width:15px;background-position:-16px -2340px} .sx_dea892{background-position:-0px -1065px} .sx_1ec099{width:11px;height:11px;background-position:-21px -2431px} .sx_3aa2a4{background-position:-17px -1065px} .sx_42b69b{background-position:-0px -1082px} .sx_1a6ba1{background-position:-17px -1082px} .sx_c782f0{width:11px;height:12px;background-position:-11px -428px} .selected .sx_c782f0{background-position:-0px -428px} .sx_8f54fc{width:23px;height:32px;background-position:-0px -151px} .sx_cf9dcb{width:32px;height:32px;background-position:-0px -118px} .sx_7b25bc{width:32px;height:32px;background-position:-0px -85px} .sx_d53ad7{width:6px;height:6px;background-position:-27px -333px} .sx_4828ac{width:11px;height:12px;background-position:-0px -2418px} .sx_b1181b{width:9px;height:12px;background-position:-9px -508px} .selected .sx_b1181b{background-position:-0px -508px} .sx_e2abba{width:18px;height:18px;background-position:-16px -441px} .sx_dc49ec{width:8px;height:13px;background-position:-26px -359px} .sx_602ee3{width:9px;height:13px;background-position:-20px -2404px} .sx_204071{width:11px;height:13px;background-position:-23px -398px} .sx_3772e6{width:11px;height:13px;background-position:-23px -412px} .sx_79b087{width:8px;height:13px;background-position:-26px -373px} .sx_ed804f{width:9px;height:13px;background-position:-10px -2404px} .sx_7742f0{width:9px;height:13px;background-position:-0px -2404px} .sx_b238d8{width:9px;height:13px;background-position:-17px -2389px} .sx_048935{width:9px;height:13px;background-position:-23px -426px} .sx_c38e05{width:9px;height:13px;background-position:-24px -166px} .sx_f2c60f{width:13px;height:12px;background-position:-21px -463px} .sx_0e880a{width:15px;height:21px;background-position:-0px -441px} .sx_2892b8{width:9px;height:12px;background-position:-11px -2431px} .sx_5229aa{width:10px;height:12px;background-position:-0px -2431px} .sx_3d0ca0{width:7px;height:12px;background-position:-27px -320px} .sp_5z1mbw{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yI/r/1Je1 LXLjtKO.png);background-repeat:no-repeat;display:inline-block;height:84px;width: 84px} .sx_212995{width:19px;height:16px;background-position:-19px -243px} .selected .sx_212995{background-position:-0px -243px} .sx_37162a{width:8px;height:12px;background-position:-47px -243px} .selected .sx_37162a{background-position:-39px -243px} .sx_f18206{background-position:-0px -73px} .sx_03e567{background-position:-0px -158px} .sx_e5dee3{width:100px;height:72px;background-position:-0px -0px} .sx_1471e4{width:34px;height:34px;background-position:-0px -260px} .sx_b7a057{width:3px;height:3px;background-position:-85px -73px} .sp_71hq9g{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yh/r/2inz lqtMiAM.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_3696e2{background-position:-16px -0px} .selected .sx_3696e2{background-position:-0px -0px}

.sx_be66f1{background-position:-16px -17px} .selected .sx_be66f1{background-position:-0px -17px} .sx_5fe20d{background-position:-16px -34px} .selected .sx_5fe20d{background-position:-0px -34px} .sx_4f4251{width:18px;height:18px;background-position:-0px -51px} .sx_924fb7{background-position:-0px -88px} .sx_e69fd7{width:14px;height:14px;background-position:-17px -70px} .sx_891322{background-position:-0px -105px} .sx_45565d{height:17px;background-position:-0px -70px} .sx_12ccf1{background-position:-0px -122px} .sx_3799af{background-position:-0px -139px} .sx_5edcf5{background-position:-0px -156px} .sx_0e8fb7{background-position:-0px -173px} .sx_9830c8{width:12px;height:12px;background-position:-19px -51px} .sp_7mrxkf{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yB/r/z0FH nmjTba_.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_b1f9f9{background-position:-0px -0px} .sx_448253{background-position:-0px -17px} .sx_ab7e0b{background-position:-0px -34px} .sx_ca3304{background-position:-0px -51px} .sx_b3f371{background-position:-0px -68px} .sx_963eb8{background-position:-0px -85px} .sx_7969f6{background-position:-0px -102px} .sx_85fcaa{background-position:-0px -119px} .sx_1771c0{background-position:-0px -136px} .sx_72faee{background-position:-0px -153px} .sp_946dbz{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yP/r/uAit B_DOduA.png);background-repeat:no-repeat;display:inline-block;height:13px;width: 8px} .sx_f2603b{width:9px;background-position:-0px -17px} .sx_0f3512{width:7px;height:12px;background-position:-9px -45px} .sx_94d703{background-position:-0px -45px} .sx_2b6ea5{width:9px;background-position:-0px -31px} .sx_451adb{background-position:-0px -59px} .sx_4b79d6{width:16px;height:16px;background-position:-0px -0px} .sp_9hl0uv{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ya/r/nHKI 1aW4WaJ.png);background-repeat:no-repeat;display:inline-block;height:5px;width:9 px} .sx_759263{width:17px;height:17px;background-position:-0px -0px} .sx_6dc703{height:6px;background-position:-0px -59px} .sx_f7b0b5{background-position:-0px -66px} .sx_451429{width:16px;height:16px;background-position:-0px -18px} .sx_635f88{width:15px;height:13px;background-position:-0px -35px} .sx_ac0c9b{background-position:-0px -72px} .sx_639a35{width:11px;height:9px;background-position:-0px -49px} .sp_9ihk6m{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yF/r/H-A7 6hDPQqU.png);background-repeat:no-repeat;display:inline-block;height:13px;width: 8px} .sx_073c1d{height:14px;background-position:-69px -92px} .selected .sx_073c1d{background-position:-61px -92px} .sx_222e81{width:16px;height:16px;background-position:-61px -75px} .sx_293b42{width:16px;height:16px;background-position:-78px -75px} .sx_127660{width:12px;height:12px;background-position:-0px -108px} .sx_43b6c5{width:12px;height:12px;background-position:-13px -108px} .sx_1bfdff{width:15px;height:16px;background-position:-95px -75px} .sx_98c00d{width:29px;height:32px;background-position:-31px -75px} .sx_90d4a9{width:30px;height:32px;background-position:-0px -75px} .sx_eced93{width:111px;height:74px;background-position:-0px -0px} .sx_e2e5b4{width:10px;background-position:-90px -92px}

.sx_a16391{width:11px;background-position:-78px -92px} .sx_18141c{background-position:-101px -92px} .sx_ac09e3{height:10px;background-position:-26px -108px} .sp_9m5n64{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ye/r/cIte EL-Hjv_.png);background-repeat:no-repeat;display:inline-block;height:32px;width: 15px} .sx_a37d45{width:11px;height:14px;background-position:-156px -14px} .selected .sx_a37d45{background-position:-145px -14px} .sx_610ea3{width:5px;height:14px;background-position:-77px -47px} .selected .sx_610ea3{background-position:-72px -47px} .sx_2126d2{width:16px;height:16px;background-position:-0px -69px} .sx_d17d41{width:22px;height:22px;background-position:-122px -14px} .sx_196b1b{width:17px;height:12px;background-position:-168px -14px} .sx_c4ede2{height:14px;background-position:-56px -47px} .sx_6d094f{width:28px;background-position:-66px -14px} .sx_1e4498{width:26px;background-position:-95px -14px} .sx_768f56{width:32px;background-position:-0px -14px} .sx_d939bc{width:32px;background-position:-33px -14px} .sx_7f4b0d{width:8px;height:13px;background-position:-93px -47px} .sx_dbaad6{width:9px;height:13px;background-position:-83px -47px} .sx_db30c2{width:19px;height:15px;background-position:-16px -47px} .sx_184ad8{width:19px;height:15px;background-position:-36px -47px} .sx_43888a{height:21px;background-position:-0px -47px} .sx_c7b6ab{width:411px;height:4px;background-position:-0px -9px} .sx_0cbec9{width:851px;height:4px;background-position:-0px -0px} .sx_bee19f{width:411px;height:3px;background-position:-412px -9px} .sx_418df9{width:851px;height:3px;background-position:-0px -5px} .sp_aprvt7{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yu/r/P1z_ rgCCqmJ.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_8edb99{background-position:-0px -51px} .sx_bd5265{width:9px;background-position:-17px -51px} .sx_7b5755{width:50px;height:50px;background-position:-0px -0px} .sp_b6n8un{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yC/r/NZDQ 5hhWEXU.png);background-repeat:no-repeat;display:inline-block;height:10px;width: 12px} .sx_8370ca{width:13px;height:14px;background-position:-13px -0px} .selected .sx_8370ca{background-position:-0px -0px} .sx_2a656f{height:14px;background-position:-12px -15px} .selected .sx_2a656f{background-position:-0px -15px} .sx_f5383e{width:10px;background-position:-0px -74px} .sx_0c1865{width:8px;height:7px;background-position:-0px -85px} .sx_65da7c{width:10px;background-position:-11px -74px} .sx_f647be{background-position:-14px -56px} .sx_79ac52{height:12px;background-position:-12px -30px} .selected .sx_79ac52{background-position:-0px -30px} .sx_59ee7b{height:12px;background-position:-12px -43px} .selected .sx_59ee7b{background-position:-0px -43px} .sx_02a2cd{width:13px;height:17px;background-position:-0px -56px} .sp_biahfe{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGE ePMfwP2.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_db54c8{width:19px;height:21px;background-position:-191px -45px} .sx_350524{width:19px;height:21px;background-position:-171px -45px} .sx_14cca0{width:26px;height:24px;background-position:-230px -5px} .sx_2903a2{width:26px;height:24px;background-position:-257px -5px} .sx_49c36d{width:20px;height:24px;background-position:-0px -13px} .sx_97ab3e{width:14px;height:13px;background-position:-186px -67px} .sx_d66058{width:8px;height:12px;background-position:-279px -30px} .sx_5bb3ab{width:7px;height:14px;background-position:-845px -152px}

.sx_3f8b24{width:8px;height:12px;background-position:-270px -30px} .sx_899bc6{width:7px;height:14px;background-position:-845px -167px} .sx_304e76{width:14px;height:14px;background-position:-171px -67px} .sx_73db0f{height:9px;background-position:-335px -20px} .sx_c0f16e{height:9px;background-position:-318px -20px} .sx_4c75b2{height:9px;background-position:-284px -20px} .sx_a1c7fe{width:9px;background-position:-0px -82px} .sx_2b60ef{width:9px;background-position:-10px -82px} .sx_63aa66{height:9px;background-position:-301px -20px} .sx_bac500{width:10px;height:10px;background-position:-322px -30px} .sx_017ce1{width:10px;height:10px;background-position:-311px -30px} .sx_955ddb{width:10px;height:10px;background-position:-300px -30px} .sx_bd2d02{width:10px;height:10px;background-position:-333px -30px} .sx_9824a8{background-position:-330px -45px} .sx_2544f6{width:11px;height:14px;background-position:-320px -5px} .selected .sx_2544f6{background-position:-309px -5px} .sx_e28ad6{width:12px;height:14px;background-position:-296px -5px} .selected .sx_e28ad6{background-position:-284px -5px} .sx_4e433e{width:9px;height:12px;background-position:-260px -30px} .selected .sx_4e433e{background-position:-251px -30px} .sx_59a7e0{width:10px;height:14px;background-position:-240px -30px} .selected .sx_59a7e0{background-position:-230px -30px} .sx_55714e{width:11px;height:10px;background-position:-288px -30px} .sx_60bb1f{width:5px;height:3px;background-position:-332px -11px} .sx_e75bca{background-position:-313px -45px} .sx_c1b532{background-position:-296px -45px} .sx_0f8633{width:9px;height:11px;background-position:-201px -67px} .sx_7aa1db{width:12px;height:14px;background-position:-20px -82px} .sx_ef3177{background-position:-279px -45px} .sx_749e94{background-position:-262px -45px} .sx_7f975f{background-position:-245px -45px} .sx_bcc253{background-position:-228px -45px} .sx_35de5f{width:19px;height:5px;background-position:-332px -5px} .sx_374e4b{width:170px;height:36px;background-position:-0px -45px} .sx_6e9c8b{background-position:-211px -45px} .sx_296c9b{width:851px;height:4px;background-position:-0px -0px} .sx_8fc145{width:500px;height:48px;background-position:-352px -103px} .sx_8e31cb{width:500px;height:48px;background-position:-352px -54px} .sx_8b6ca0{width:500px;height:48px;background-position:-352px -5px} .sx_bcae2d{width:22px;height:70px;background-position:-0px -182px} .sp_egtdwe{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yM/r/RDXv 14j-oUz.png);background-repeat:no-repeat;display:inline-block;height:13px;width: 14px} .sx_f9b6c2{background-position:-0px -51px} .sx_9fefcb{width:50px;height:50px;background-position:-0px -0px} .sp_rte6k0{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yP/r/-Nuh Q2GlYF6.png);background-repeat:no-repeat;display:inline-block;height:16px;width: 16px} .sx_f1611a{height:15px;background-position:-0px -731px} .sx_1d5c76{background-position:-0px -374px} .sx_e34f36{background-position:-0px -391px} .sx_a65e64{background-position:-0px -408px} .sx_bd23bf{background-position:-0px -425px} .sx_e5d0ff{background-position:-0px -442px} .sx_0645d8{background-position:-0px -459px} .sx_dda9fd{background-position:-0px -476px} .sx_d9b743{background-position:-0px -493px} .sx_3ac8c0{background-position:-0px -510px} .sx_885f29{background-position:-0px -714px} .sx_17672e{background-position:-0px -544px}

.sx_e1a8e4{background-position:-0px -561px} .sx_631332{background-position:-0px -578px} .sx_791763{background-position:-0px -595px} .sx_28141f{background-position:-0px -612px} .sx_0ff12b{background-position:-0px -629px} .sx_407d74{background-position:-0px -646px} .sx_f176bc{background-position:-0px -663px} .sx_661d63{background-position:-0px -680px} .sx_aa604b{background-position:-0px -697px} .sx_1f2c36{background-position:-0px -527px} .sx_d62925{background-position:-0px -0px} .sx_5b315a{background-position:-0px -17px} .sx_e9453f{background-position:-0px -34px} .sx_deb552{background-position:-0px -51px} .sx_d4c86a{background-position:-0px -68px} .sx_03f233{background-position:-0px -85px} .sx_44d810{background-position:-0px -102px} .sx_6f274b{background-position:-0px -119px} .sx_76e833{background-position:-0px -136px} .sx_ed3cc8{background-position:-0px -153px} .sx_2d07f1{background-position:-0px -357px} .sx_0a592e{background-position:-0px -187px} .sx_fc2563{background-position:-0px -204px} .sx_4b70b6{background-position:-0px -221px} .sx_1749d1{background-position:-0px -238px} .sx_515139{background-position:-0px -255px} .sx_4c3c4f{background-position:-0px -272px} .sx_2ff4ac{background-position:-0px -289px} .sx_1715bf{background-position:-0px -306px} .sx_484539{background-position:-0px -323px} .sx_bc1696{background-position:-0px -340px} .sx_30692f{background-position:-0px -170px} .uiStreamStory .uiPhotoThumb img{max-width:121px} .uiStreamStory .largePhoto img{max-width:300px} .uiStream .uiStreamHeader{background-color:#e9e9e9;border-top:1px solid #ccc;hei ght:1px;margin:20px 0 5px -18px;padding:0;position:relative} .hasExpandedComposer .uiStream .uiStreamHeader{border-top:0;margin-top:10px} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm, .uiStream .uiStreamH eader .uiStreamHeaderText{background-color:#fff;left:0;padding-right:2px;positio n:absolute} .uiStream .uiStreamHeader .uiStreamHeaderText{color:gray;margin-left:68px;top:-6 px} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm{left:auto;right:35px; top:-6px} .uiStreamHeaderChronologicalForm .sortLink{background-image:url(http://static.ak .fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backgro und-position:right -25px;color:gray;font-size:9px;font-weight:bold;margin:0 2px; padding:0 9px 2px 3px} .uiStreamLargeHeadline .uiStreamStory .uiStreamHeadline{font-size:13px;line-heig ht:1.38} .uiStreamLargeHeadline .uiStreamStory .ministoryMessage{font-size:11px;line-heig ht:1.28} .uiStreamStory .photoRedesign{width:398px} .uiStreamStory .uiStreamSubstory .photoRedesign{width:358px} .uiStreamStory .uiStreamAttachments .photoRedesignAspect, .uiStreamStory .uiStreamAttachments .photoRedesignCover, .uiStreamStory .uiStreamAttachments .photoRedesignLink{border:0;display:block;fl oat:left;position:relative} .uiStreamStory .photoRedesignSquare .photoWrap{height:320px;width:320px} .uiStreamStory .uiStreamSubstory .photoRedesignSquare .photoWrap{height:300px;wi

dth:300px} .uiStreamStory .photoRedesignLandscape .photoWrap{height:264px;width:398px} .uiStreamStory .photoRedesignPortrait .photoWrap{height:398px;width:264px} .uiStreamStory .uiStreamSubstory .photoRedesignLandscape .photoWrap{height:237px ;width:358px} .uiStreamStory .uiStreamSubstory .photoRedesignPortrait .photoWrap{height:358px; width:237px} .uiStreamStory .photoRedesignMiddle .photoWrap{height:196px;width:196px} .uiStreamStory .uiStreamSubstory .photoRedesignMiddle .photoWrap{height:176px;wi dth:176px} .uiStreamStory .photoRedesignMiddleEdge .photoWrap{width:197px} .uiStreamStory .uiStreamSubstory .photoRedesignMiddleEdge .photoWrap{width:177px } .uiStreamStory .photoRedesignSmall .photoWrap{height:129px;width:129px} .uiStreamStory .uiStreamSubstory .photoRedesignSmall .photoWrap{height:116px;wid th:116px} .uiStreamStory .photoRedesignSmallEdge .photoWrap{width:130px} .uiStreamStory .photoRedesignSmallBottomEdge .photoWrap{height:130px} .uiStreamStory .photoRedesignCover{display:block;height:147px;overflow:hidden;po sition:relative;width:398px} .uiStreamStory .uiStreamSubstory .photoRedesignCover{height:133px;width:358px} .uiStreamStory .uiStreamAttachments .photoRedesignAspect .img, .uiStreamStory .uiStreamAttachments .photoRedesignCover .img{display:block;margi n:0;max-width:none} .uiStreamStory .photoRedesignCover .img{position:absolute} .uiStream .uiStreamStory .photoRedesignNoScale .photoWrap{background:none;text-a lign:left;width:auto} .uiStreamStory .photoRedesignAspect:after, .uiStreamStory .photoRedesignCover:after, .uiStreamStory .photoRedesignLink .uiScaledImageContainer:after{border:1px solid rgba(0, 0, 0, .1);bottom:0;content:'';left:0;position:absolute;right:0;top:0} .uiStreamStory .photoPermaRedesign{width:530px} .uiStreamStory .photoRedesignPerma .photoWrap{height:172px;width:172px} .shareRedesign{position:relative;width:398px} .uiStreamSubstory .shareRedesign{width:358px} .shareRedesign .exploded .shareText, .shareRedesignText:before, .shareRedesign . shareRedesignContainer:before{border-left:1px solid rgba(0, 0, 0, .08)} .shareRedesign .shareRedesignMedia:after, .shareRedesign .exploded .shareText, . shareRedesignRightBorder{border-right:1px solid rgba(0, 0, 0, .08)} .shareRedesignTopBorder, .shareRedesignBottomBorder{border-top:1px solid rgba(0, 0, 0, .08);left:1px;position:absolute;right:1px;top:0} .shareRedesignBottomBorder, .shareRedesignText:before, .shareRedesign .shareRede signContainer:before, .shareRedesignRightBorder{bottom:0;position:absolute;right :0;top:0} .shareRedesignBottomBorder{top:auto} .shareRedesign .exploded + .shareRedesignTopBorder, .shareRedesign .exploded + . shareRedesignTopBorder + .shareRedesignRightBorder{display:none} .shareRedesignText:before, .shareRedesign .shareRedesignContainer:before{content :'';left:0;right:auto;z-index:1} .shareRedesign .shareRedesignContainer.exploded:before{display:none} .shareRedesign .exploded .swfObject{display:block;float:none;margin-bottom:0} .shareRedesign .shareMediaVideo{text-align:center} .shareRedesign .shareMediaLink, .shareRedesign .shareMediaVideo, .shareRedesign .shareMediaVideo .img, .shareRedesign .exploded iframe{display:block} .shareRedesign .exploded .shareRedesignVideo, .shareRedesign .exploded{border:0} .shareRedesign .exploded .shareText{margin-top:-1px;padding-top:10px} .shareRedesign .uiAttachmentTitle{color:#3b5998} .shareRedesign .uiAttachmentTitle:hover{text-decoration:underline} .shareRedesign .uiAttachmentDescTruncated{max-height:28px;overflow:hidden} .shareRedesign .shareRedesignMedia{margin-right:0;position:relative}

.shareRedesign .shareRedesignMedia:after{bottom:1px;content:'';position:absolute ;right:0;top:1px} .shareRedesign .exploded .shareRedesignMedia:after{display:none} .shareRedesign .shareMediaPhoto{background-position:50% 50%;background-repeat:no -repeat;display:block;height:90px;width:90px} .shareRedesign .shareText{cursor:pointer;display:block;padding-top:8px;text-deco ration:none} .shareRedesign .exploded .shareText{min-height:initial} .shareRedesignContainer .shareText{min-height:72px} .shareRedesignText, .shareRedesignContainer, .shareRedesign .shareMediaVideo{bac kground-color:#f7f7f7} .shareRedesign .attachmentText{max-height:72px;overflow:hidden} .shareRedesign .uiAttachmentDesc{margin-top:3px} .shareRedesign .uiStreamActionFooter{margin-top:8px} .uiStream .uiStreamMessage{color:#000;font-size:11px;font-weight:normal;margin:0 0 5px 0} .uiStream .uiStreamHeadline{margin-bottom:0} .uiStreamHeadline .uiLikePage{float:right;margin:0 -15px 0 15px} .uiStreamHeadlineWithLikeButton{min-height:31px} .uiStream .uiStreamPassive{margin-bottom:5px} .Locale_zh_CN .uiStream .uiStreamMessage, .Locale_zh_TW .uiStream .uiStreamMessa ge, .Locale_zh_HK .uiStream .uiStreamMessage{font-size:13px} .Locale_ja_JP .uiStream .uiStreamMessage{font-size:12px} .uiStreamMessage, .uiAttachmentTitle, .uiAttachmentDesc{word-break:break-word;wo rd-wrap:break-word} .uiStreamMessage .actorDescription{margin-bottom:3px} .uiStreamMessage .suggestionBio .actorDescription{padding-bottom:0} .uiStreamMessage .suggestionBio{width:410px} .uiStreamAdditionalLogging .lock, .fbStreamPrivacy .lock{bottom:-1px;margin-bott om:-5px;position:relative;vertical-align:top} div.uiAttachmentTitle{color:#333} .permalink_stream{position:relative} .uiStreamStory .mainWrapper{margin:0 35px 14px 0;padding-top:14px} .uiStreamStory .actorPhoto{margin-bottom:14px;margin-top:14px} .uiStreamStory .storyContent .storyInnerContent{margin-left:60px} .uiStreamStory .uiStreamSubstory .storyInnerContentSmallPic{margin-left:40px} .uiStream .uiStreamHide{margin-top:18px;position:absolute;right:0;top:0} .uiStream .substoryHideSelector{float:right;margin:-2px 0 0 0} .uiStreamStory{padding:0;position:static} .homeWiderContent .uiStreamStory{margin-left:-18px;padding-left:18px} .uiStream .uiStreamHide .uiSelectorButton, .uiStream a.uiCloseButton.uiStreamHid e, .uiStream .uiStreamStory:hover .uiStreamSubstory .uiStreamHide .uiSelectorBut ton{left:-9999px;position:absolute} .uiStream .uiStreamStory:hover .uiStreamHide .uiSelectorButton, .uiStream .uiStr eamStory:hover a.uiCloseButton.uiStreamHide, .uiStream .uiStreamStory .uiStreamS ubstory:hover .uiStreamHide .uiSelectorButton, .uiStream .uiStreamStory .uiStrea mHide .openToggler .uiSelectorButton, .uiStream .uiStreamStory:hover .uiStreamSu bstory .uiStreamHide .openToggler .uiSelectorButton{left:auto} .uiStream .uiSelectorButton:focus{left:auto !important} .uiStreamHide .uiStreamContextButton, .uiStreamStory:hover .uiStreamSubstory .ui StreamHide .uiStreamContextButton{left:-9999px;position:absolute} .uiStreamStory:hover .uiStreamHide .uiStreamContextButton, .uiStreamStory .uiStr eamSubstory:hover .uiStreamHide .uiStreamContextButton, .uiStreamStory .uiStream Hide.openToggler .uiStreamContextButton, .uiStreamStory:hover .uiStreamSubstory .uiStreamHide.openToggler .uiStreamContextButton{left:auto} .uiStreamStory .uiStreamContextButton:focus{left:auto !important} .uiStream .uiAttachmentDesc, .uiStream .uiStreamPassive, .uiStream .uiStreamRobo textBeforeMessage, .uiStream .uiAdminAttribution{color:gray} .uiStream .tagIcon{vertical-align:bottom} .uiStream .text_exposed_link{display:block;padding-top:4px;font-size:11px}

.storyContent{padding-bottom:2px;position:relative} .uiStream .uiStreamStoryHide .storyContent{display:none} .uiStreamAttachments .profilePhotoAttachment, .uiStreamAttachments .external img {max-height:90px;max-width:90px} .uiStream .uiAttachmentDetails{color:#333} .uiAttachmentInline .uiAttachmentTitle, .uiAttachmentInline .uiAttachmentDesc{di splay:inline} .uiStreamMessage .actorName, .uiStreamMessage .passiveName{font-weight:bold} .uiStreamMessage .wallArrowIcon{background-image:url(http://static.ak.fbcdn.net/ rsrc.php/v2/ya/r/nHKI1aW4WaJ.png);background-repeat:no-repeat;background-positio n:0 -49px;height:9px;margin:0 5px;width:11px} .uiAttachmentNoMedia{border-left:2px solid #ccc} .uiAttachmentMedia{float:left} .uiAttachmentMediaFiles{outline:none;width:100%} .uiStreamAttachments .text_exposed .truncatedMediaInfo{clear:both;display:block; padding-left:0;width:auto} .uiStreamAttachments .truncatedMediaItem{display:none} .uiStreamAttachments .text_exposed .truncatedMediaItem{display:block} .uiStreamAttachments .truncatedMediaInfo{display:table;zoom:1} .uiStreamPrivacyContainer{color:#999} .uiStreamCollapsed{border-top:1px solid #eee} .uiStreamSubstories li.showAll{line-height:15px;padding:0} .uiStreamSubstories li.showAll a{color:#6d84b4;display:block;padding:8px 0 0} .uiStreamSubstories .uiUfi{width:350px} .uiStream .uiStreamSeparator{background-color:#e9e9e9;border:0;height:7px;margin :6px 0;padding:0;text-align:center} .uiStream .uiStreamSeparatorText{background-color:#fff;padding:0 5px;position:re lative;top:-4px} .uiStream .suppressBorder{border-top:0} .uiStreamEdgeStoryLineTx{background-color:#fff;padding:0 8px;position:relative;l eft:32px;top:-20px;color:#ccc} .uiStreamEdgeStoryLine hr{background:#e5e5e5;margin:8px 0 10px 0} .uiStreamEdgeStoryLineWithLabel{height:15px;padding-top:1px} .uiStreamFooter, .uiStreamSource, .uiStreamOGAttached, .uiStreamAdditionalLoggin g{color:#999} .uiStreamSource a, .uiStreamOGAttached a, .uiStreamAdditionalLogging a{color:#99 9} .uiStreamNub{border-bottom:1px solid #c2cbe1;margin-top:2px} .uiStreamFooter{display:table-cell} .uiStreamHomepage .uiStreamStory:first-child{margin-top:-6px} .uiStreamHomepage .uiStreamStory:first-child .actorPhoto{margin-top:18px} .uiStreamHomepage .uiStreamStory:first-child .mainWrapper{padding-top:18px} .uiStreamActionFooter .UIActionLinks_bottom a{color:#3b5998} .uiStream .uiStreamStory .highlightSelector{margin:-2px 10px 0 0} .uiStream .uiStreamStory .substoryHideSelector{margin:-2px 0 0} .permalink_stream .highlightSelector .uiSelectorMenuWrapper, .uiStream .uiStream Story .highlightSelector .uiSelectorMenuWrapper{margin:-3px 1px 0 0} .permalink_stream .fbStreamPermalinkHeader .highlightSelector{margin-top:0;margi n-right:0;float:right} .permalink_stream .highlightSelector .highlightSelectorButton{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repea t:no-repeat;background-position:-565px -42px;border:0;box-shadow:none;display:in line-block;height:21px;line-height:21px;overflow:hidden;padding:0;text-indent:50 px;width:21px} .uiStream .uiStreamStory .highlightSelector .uiSelectorButton, .uiStream .highli ghtSelector .highlightSelectorButton{background-image:url(http://static.ak.fbcdn .net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-po sition:-501px -42px;border:0;box-shadow:none;display:inline-block;height:24px;li ne-height:24px;overflow:hidden;padding:0;text-indent:50px;width:21px} .permalink_stream .highlightSelector .highlightSelectorButton, .permalink_stream

.highlightSelector .highlightSelectorButton:active, .permalink_stream .highligh tSelector .highlightSelectorButton:focus, .permalink_stream .highlightSelector . highlightSelectorButton:hover{background-color:transparent;border:0;padding:0;wi dth:21px;height:21px} .uiStream .uiStreamStory .highlightSelector .uiSelectorButton, .uiStream .uiStre amStory .highlightSelector .uiSelectorButton:active, .uiStream .uiStreamStory .h ighlightSelector .uiSelectorButton:focus, .uiStream .uiStreamStory .highlightSel ector .uiSelectorButton:hover, .uiStream .highlightSelector .highlightSelectorBu tton, .uiStream .highlightSelector .highlightSelectorButton:active, .uiStream .h ighlightSelector .highlightSelectorButton:focus, .uiStream .highlightSelector .h ighlightSelectorButton:hover{background-color:transparent;border:0;padding:0;wid th:21px;height:24px} .permalink_stream .highlightSelector .highlightSelectorButton:hover{background-i mage:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background -repeat:no-repeat;background-position:-586px -42px;padding:0;border:0} .uiStream .uiStreamStory .highlightSelector .uiSelectorButton:hover, .highlightS elector .highlightSelectorButton:hover{background-image:url(http://static.ak.fbc dn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backgroundposition:-522px -42px;padding:0;border:0} .permalink_stream .highlightSelector .openToggler .highlightSelectorButton, .per malink_stream .highlightSelector.openToggler .highlightSelectorButton, .permalin k_stream .highlightSelector .openToggler .highlightSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/r src.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position :-607px -42px;background-color:transparent;border:0;padding:0;width:21px;height: 21px} .uiStream .uiStreamStory .highlightSelector .openToggler .uiSelectorButton, .uiS tream .uiStreamStory .highlightSelector .openToggler .uiSelectorButton:hover, .highlightSelector .openToggler .highlightSelectorButto n, .highlightSelector.openToggler .highlightSelectorButton{background-image:url( http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:n o-repeat;background-position:-543px -42px;background-color:transparent;border:0; padding:0;width:21px;height:24px} .uiStreamBoulderThemeAgg .substoryActorPic img, .uiStreamBoulderThemeAgg .uiStre amInlineAction .inlineActionInputPic{height:32px;width:32px} .uiStreamBoulderThemeAgg .storyContent{padding-bottom:2px} .uiStreamBoulderThemeAgg .uiStreamSubstory{margin:0;padding:5px 0} .uiStreamSubstories .uiStreamSubstory div.storyContent{padding-bottom:2px} .uiStreamBoulderThemeAgg .uiListItem:first-child .uiStreamSubstory{padding-top:0 } .uiStreamStory .uiStreamSubstory .storyContent{padding:0} .uiStreamLoader{text-align:center} .uiStreamBoulderThemeAgg .uiStreamSubstories{margin-top:0;padding-top:0} .uiStreamBoulderThemeAgg .uiStreamSubstories .uiStreamShowAll{border-bottom:0;te xt-align:left} .uiStreamBoulderThemeAgg .uiStreamSubstories .uiStreamShowAll span{font-weight:n ormal} .uiStreamBoulderThemeAgg .inlineSubstory .uiStreamSubstory{border-bottom:1px sol id #e5e5e5;padding-bottom:10px} .uiStreamBoulderThemeAgg .uiStreamAttachments .external{display:block;margin:0;p adding-bottom:5px;padding-right:10px} .uiStreamBoulderThemeAgg .uiStreamAttachments .external img{max-height:100px;max -width:120px} .uiStreamInlineTextarea{display:block;height:19px;width:100%} .uiStreamRedesign .uiStreamSubstories .uiStreamSubstory .uiUfi{width:358px} .uiStreamRedesign .uiStreamMessage .messageBody{color:#333;font-size:13px;line-h eight:1.38} .uiStreamRedesign .uiStreamStory .mainWrapper{margin-bottom:16px;padding-top:18p x} .uiStreamRedesign .uiStreamStory .actorPhoto{margin-bottom:16px;margin-top:18px}

.uiStreamRedesign .uiStreamStory .uiStreamPassive{margin-bottom:6px} .uiStreamRedesign .uiStreamStory .actorDescription{margin-bottom:0;padding-botto m:4px} .uiStreamRedesign .shareSubtext{border-left:2px solid #ccc;margin-top:10px;paddi ng-left:8px} .uiStream .uiStreamStory .uiStreamSubstory .uiLikePage{margin-top:0} .uiLikePage a{color:#6b84b4} .uiLikePage .saving_elem, .uiLikePage .async_saving .action_elem{display:none} .uiLikePage .async_saving .saving_elem{display:inline} .uiStream .uiStreamSubstories .uiLikePage{position:static} .UIIntentionalStream_Error{display:none;padding-top:2px;padding-bottom:8px} .UIIntentionalStream_HiddenInfo{float:right} .UIIntentionalStream_AutoUpdate{margin:5px} .UIIntentionalStream_AutoUpdateMessage, .UIIntentionalStream_AutoUpdateControl{float:right} .feedback_toggle_link .feedbackBling .text{line-height:normal} a.feedbackBling{margin-left:-1px;margin-right:-1px;padding-bottom:0;padding-top: 0} .feedback_toggle_link .feedbackBling .img{margin-top:-1px} .scrollable{overflow-y:auto} .-cx-PRIVATE-accessibleLayer__noOutline{outline:none} .-cx-PRIVATE-uiImageBlock__content{overflow:hidden} .-cx-PRIVATE-uiImageBlock__smallContent{padding-top:1px} .-cx-PRIVATE-uiImageBlock__image, .-cx-PRIVATE-uiImageBlock__image .img{display: block} .-cx-PRIVATE-uiImageBlock__smallImage{margin-right:5px} .-cx-PRIVATE-uiImageBlock__mediumImage{margin-right:8px} .-cx-PRIVATE-uiImageBlock__largeImage{margin-right:10px} .-cx-PRIVATE-uiInlineBlock__root{display:inline-block} .-cx-PRIVATE-uiInlineBlock__bottom{vertical-align:bottom} .-cx-PRIVATE-uiInlineBlock__middle{vertical-align:middle} .-cx-PRIVATE-uiInlineBlock__top{vertical-align:top} .pop_container_advanced{background:rgba(82,82,82,0.7);border-radius:8px;padding: 10px} .pop_content_old{position:relative} .pop_container{direction:ltr;position:relative;top:10px} .pop_topleft, .pop_topright, .pop_bottomleft, .pop_bottomright{height:10px;width :10px;overflow:hidden;position:absolute} .pop_topleft{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NR GEePMfwP2.png);background-repeat:no-repeat;background-position:-300px -30px;left :-10px;top:-10px} .pop_topright{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/N RGEePMfwP2.png);background-repeat:no-repeat;background-position:-333px -30px;rig ht:-10px;top:-10px} .pop_bottomleft{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r /NRGEePMfwP2.png);background-repeat:no-repeat;background-position:-322px -30px;b ottom:-10px;left:-10px} .pop_bottomright{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/ r/NRGEePMfwP2.png);background-repeat:no-repeat;background-position:-311px -30px; right:-10px;bottom:-10px} .pop_verticalslab, .pop_horizontalslab{width:100%;height:100%;position:absolute; background:#525252;opacity:.7} .pop_verticalslab{margin:-10px 0 0;padding-bottom:20px} .pop_horizontalslab{margin:0 0 0 -10px;padding-right:20px} .generic_dialog{height:0;left:0;overflow:visible;outline:none;position:fixed;top :0;width:100%;z-index:200} .generic_dialog_modal, .generic_dialog_fixed_overflow{background-color:rgba(252, 252, 252, .9);height:100%;z-index:400} .generic_dialog_fixed_overflow{overflow-x:auto;overflow-y:scroll} .generic_dialog_fixed_overflow .generic_dialog_popup{height:auto;padding-bottom:

40px} .generic_dialog_overflow_mode body{overflow:hidden !important} .generic_dialog_popup{height:0;overflow:visible;width:465px;margin:0 auto} .generic_dialog div.dialog_loading{background-color:#f2f2f2;border:1px solid #60 6060;font-size:24px;padding:10px} .pop_content{direction:ltr;outline:none} .pop_dialog_rtl .pop_content{direction:rtl} .pop_content h2.dialog_title{background:#6d84b4;border:1px solid #3b5998;borderbottom:none;color:#fff;font-size:14px;font-weight:bold;margin:0} .pop_content h2.secure{background:#6d84b4 url(http://static.ak.fbcdn.net/rsrc.ph p/v2/yu/r/jp8TzrZb6J1.png) 98% no-repeat} .pop_content h2.loading{background:#6d84b4 url(http://static.ak.fbcdn.net/rsrc.p hp/v2/y-/r/AGUNXgX_Wx3.gif) 98% no-repeat} .pop_content h2.dialog_loading{background:#6d84b4 url(http://static.ak.fbcdn.net /rsrc.php/v2/y-/r/AGUNXgX_Wx3.gif) no-repeat 400px 10px;padding-right:40px} .pop_content h2 span{display:block;padding:5px 10px} .pop_content .dialog_content{background:#fff;border:1px solid #555;border-top-wi dth:0} .pop_content .dialog_content.dialog_content_titleless{border-top:1px solid #555} .pop_content .dialog_loading, .dialog_loading_shown .dialog_title, .dialog_loadi ng_shown .dialog_content{display:none} .dialog_loading_shown .dialog_loading{display:block} .pop_content .dialog_body{padding:10px;border-bottom:1px solid #ccc} .omitDialogFooter .pop_content .dialog_body{border-bottom:0} .pop_content .dialog_summary{background:#f2f2f2;padding:8px 10px;border-bottom:1 px solid #ccc} .pop_content .dialog_buttons{background:#f2f2f2;padding:8px 10px 8px 10px;positi on:relative;text-align:right} .pop_content .dialog_buttons_msg{float:left;line-height:17px;padding-top:4px} .pop_content .dialog_buttons_msg .uiInputLabel{line-height:14px} .pop_content .dialog_footer{background:#F2F2F2 none repeat scroll 0} .full_bleed .pop_content .dialog_body{padding:0} .uiProfileBlockContent{overflow:hidden} .uiSimpleScrollingLoadingIndicator{display:none;margin:auto} .async_saving .uiSimpleScrollingLoadingIndicator{display:block} .uiUfiLikeIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ya/r/ nHKI1aW4WaJ.png);background-repeat:no-repeat;background-position:0 -35px;display :block;height:13px;width:15px} .uiUfiLikeIconDisabled, .uiUfiLikeIconDisabled:active, .uiUfiLikeIconDisabled:fo cus{cursor:default;outline:none} .ufiItem .async_saving .uiUfiViewSharesLink, .ufiItem .stat_elem .uiUfiViewSharesLoading{display:none} .ufiItem .async_saving .uiUfiViewSharesLoading{display:inline} .uiButton{cursor:pointer;display:inline-block;font-size:11px;font-weight:bold;li ne-height:13px;padding:2px 6px;text-align:center;text-decoration:none;vertical-a lign:top;white-space:nowrap} .uiButton, .uiButtonSuppressed:active, .uiButtonSuppressed:focus, .uiButtonSuppr essed:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRG EePMfwP2.png);background-repeat:no-repeat;background-position:-352px -54px;backg round-color:#eee;border:1px solid #999;border-bottom-color:#888;box-shadow:0 1px 0 rgba(0, 0, 0, .1)} .uiButton + .uiButton{margin-left:4px} .uiButton:hover{text-decoration:none} .uiButton:active, .uiButtonDepressed{background:#ddd;border-bottom-color:#999;bo x-shadow:0 1px 0 rgba(0, 0, 0, .05)} .uiButton .img{margin-top:2px;vertical-align:top} .uiButtonLarge .img{margin-top:4px} .uiButton .customimg{margin-top:0} .uiButtonText, .uiButton input{background:none;border:0;color:#333;cursor:pointe r;display:inline-block;font-family:'lucida grande',tahoma,verdana,arial,sans-ser

if;font-size:11px;font-weight:bold;line-height:13px;margin:0;padding:1px 0 2px;w hite-space:nowrap} .uiButtonOverlay, .uiButtonOverlay:hover{background-clip:padding-box;backgroundcolor:#fff;background-color:rgba(255, 255, 255, .8);background-image:none;border -color:#a5a5a5;border-color:rgba(0, 0, 0, .35);border-radius:2px} .uiButtonOverlay:focus, .uiButtonOverlay:active{background-color:#f9fafc;backgro und-color:rgba(249, 250, 252, .9);border-color:#3b5998;border-color:rgba(59, 89, 152, .5)} form.async_saving .uiButton.uiButtonOverlay, .uiButtonOverlay.uiButtonDisabled, .uiButtonOverlay.uiButtonDisabled:active, .uiButtonOverlay.uiButtonDisabled:focu s, .uiButtonOverlay.uiButtonDisabled:hover{background-color:#fff;background-colo r:rgba(255, 255, 255, .8);border-color:#c8c8c8;border-color:rgba(180, 180, 180, .8)} .uiButtonSpecial{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/ r/NRGEePMfwP2.png);background-repeat:no-repeat;background-position:-352px -5px;b ackground-color:#69a74e;border-color:#3b6e22 #3b6e22 #2c5115} .uiButtonSpecial:active{background:#609946;border-bottom-color:#3b6e22} form.async_saving .uiButton.uiButtonSpecial, .uiButtonSpecial.uiButtonDisabled, .uiButtonSpecial.uiButtonDisabled:active, .uiButtonSpecial.uiButtonDisabled:focu s, .uiButtonSpecial.uiButtonDisabled:hover{background:#b4d3a7;border-color:#9db7 91} .uiButtonConfirm{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/ r/NRGEePMfwP2.png);background-repeat:no-repeat;background-position:-352px -103px ;background-color:#5b74a8;border-color:#29447e #29447e #1a356e} .uiButtonConfirm:active{background:#4f6aa3;border-bottom-color:#29447e} form.async_saving .uiButton.uiButtonConfirm, .uiButtonConfirm.uiButtonDisabled, .uiButtonConfirm.uiButtonDisabled:active, .uiButtonConfirm.uiButtonDisabled:focu s, .uiButtonConfirm.uiButtonDisabled:hover{background:#adbad4;border-color:#94a2 bf} form.async_saving .uiButton.uiButtonSpecial .uiButtonText, form.async_saving .ui Button.uiButtonSpecial input, form.async_saving .uiButton.uiButtonConfirm .uiBut tonText, form.async_saving .uiButton.uiButtonConfirm input, .uiButtonSpecial .ui ButtonText, .uiButtonSpecial input, .uiButtonSpecial.uiButtonDisabled .uiButtonT ext, .uiButtonSpecial.uiButtonDisabled input, .uiButtonConfirm .uiButtonText, .u iButtonConfirm input, .uiButtonConfirm.uiButtonDisabled .uiButtonText, .uiButton Confirm.uiButtonDisabled input{color:#fff} form.async_saving .uiButton, .uiButtonDisabled, .uiButtonDisabled:active, .uiBut tonDisabled:focus, .uiButtonDisabled:hover{background:#f2f2f2;border-color:#c8c8 c8;box-shadow:none} form.async_saving .uiButton .img, .uiButtonDisabled .img{opacity:.5} form.async_saving .uiButtonText, form.async_saving .uiButton input, .uiButtonDis abled .uiButtonText, .uiButtonDisabled input{color:#b8b8b8} form.async_saving .uiButton, form.async_saving .uiButtonText, form.async_saving .uiButton input, .uiButtonDepressed, .uiButtonDepressed .uiButtonText, .uiButton Depressed input, .uiButtonDisabled, .uiButtonDisabled .uiButtonText, .uiButtonDi sabled input{cursor:default} .uiButtonLarge{height:19px} .uiButtonLarge, .uiButtonLarge .uiButtonText, .uiButtonLarge input{font-size:13p x;line-height:16px} .uiButtonSuppressed{background:none;border-color:transparent;box-shadow:none} .uiButtonNoText .img{margin-left:-1px;margin-right:-1px} .android .uiButtonText, .android .uiButton input{padding:3px 0 1px 1px} .uiCloseButton{cursor:pointer;display:inline-block;margin:0;padding:0;zoom:1} label.uiCloseButton{overflow:hidden} .uiCloseButton input{cursor:pointer;opacity:0;outline:none;padding:18px} .uiCloseButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yA/r/ 4WSewcWboV8.png);background-repeat:no-repeat;height:15px;width:15px} .uiCloseButtonSmall{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ yx/r/ogYrclupeJV.png);height:11px;margin-top:1px;width:11px} .uiCloseButtonHuge{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y

j/r/ubIGOTIgUYc.png)} .uiCloseButtonDark{background-position:left -16px} .uiCloseButtonInverted{background-image:url(http://static.ak.fbcdn.net/rsrc.php/ v2/yo/r/33RpiRygxAr.png);background-position:left -16px} .uiCloseButton:hover, .uiCloseButton:focus{background-position:left -32px} .uiCloseButton:active{background-position:left -48px} .uiCloseButtonSmallDark{background-position:left -12px} .uiCloseButtonSmallInverted{background-position:left -12px;background-image:url( http://static.ak.fbcdn.net/rsrc.php/v2/yT/r/Vi-KTnbdMKr.png)} .uiCloseButtonSmall:hover, .uiCloseButtonSmall:focus{background-position:left -2 4px} .uiCloseButtonSmall:active{background-position:left -36px} .uiPopover .uiCloseButton{background-clip:padding-box;border:1px solid transpare nt;margin:0} .uiPopover.openToggler .uiCloseButton{background-position:left -32px} .uiPopover.openToggler .uiCloseButtonSmall{background-position:left -24px} .uiPopover.openToggler .uiCloseButton, .uiPopover.openToggler .uiCloseButton:act ive, .uiPopover.openToggler .uiCloseButton:focus, .uiPopover.openToggler .uiClos eButton:hover{background-color:#6d84b4;border:1px solid #3b5998;border-bottom-co lor:#6d84b4;box-shadow:none} .uiButtonGroup{background-clip:padding-box;background-color:#fff;border:1px soli d #a5a5a5;border-color:rgba(0, 0, 0, .35);border-radius:3px;box-shadow:0 1px 0 r gba(0, 0, 0, .1);display:inline-block;padding:0;white-space:nowrap} .uiButtonGroup .uiButtonGroupItem{border-left:1px solid #d9d9d9;border-color:rgb a(0, 0, 0, .15);display:inline-block;vertical-align:top} .uiButtonGroup .firstItem{border-left:0} .uiButtonGroup .uiSelector, .uiButtonGroup .uiButton{box-shadow:none;vertical-al ign:top} .uiButtonGroup .selectorItem .uiSelector, .uiButtonGroup .selectorItem .uiPopove rButton, .uiButtonGroup .buttonItem .uiButton{margin:-1px} .uiButtonGroup .uiButtonLarge{padding:2px 8px} .uiButtonGroup .uiPopoverButtonWithChevron{padding-right:23px} .uiButtonGroup .uiButtonOverlay, .uiButtonGroupOverlay .uiButtonGroupItem .uiBut tonDisabled, .uiButtonGroupOverlay .uiButtonGroupItem .uiButtonDisabled:hover, . uiButtonGroupOverlay .uiButtonGroupItem .uiButtonDisabled:active, .uiButtonGroup Overlay .uiButtonGroupItem .uiButtonDisabled:focus{background-clip:padding-box;b order-color:transparent} .uiButtonGroup .selectorItem .openToggler .uiButton, .uiButtonGroup .buttonItem .uiButtonSpecial, .uiButtonGroup .buttonItem .uiButtonConfirm{position:relative; z-index:1} .uiButtonGroup span .uiButtonOverlay, .uiButtonGroup span .uiButtonOverlay:hover {background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.pn g);background-repeat:no-repeat;background-position:right -298px;background-color :transparent} .uiButtonGroup span .uiButtonOverlay:active, .uiButtonGroup span .uiButtonOverla y:focus{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1v ovS7.png);background-repeat:no-repeat;background-position:right -347px;backgroun d-color:transparent} .uiButtonGroupOverlay span .uiButtonOverlay.uiButtonDisabled{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat :no-repeat;background-position:right -298px} .uiButtonGroup .buttonItem .uiButtonOverlay, .uiButtonGroup .buttonItem .uiButto nOverlay:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/ 98Bjm1vovS7.png);background-repeat:no-repeat;background-position:0 -4px} .uiButtonGroup .buttonItem .uiButtonOverlay:active, .uiButtonGroup .buttonItem . uiButtonOverlay:focus{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v 2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-position:0 -53px} .uiButtonGroupOverlay .buttonItem .uiButtonOverlay.uiButtonDisabled{background-i mage:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background -repeat:no-repeat;background-position:0 -4px}

.uiButtonGroupOverlay .uiButton{border-radius:0} .uiButtonGroupOverlay .firstItem .uiButton{border-top-left-radius:3px;border-bot tom-left-radius:3px} .uiButtonGroupOverlay .lastItem .uiButton{border-top-right-radius:3px;border-bot tom-right-radius:3px} .uiHoverButton, .uiHoverButton .uiButtonText, .uiHoverButton input{cursor:defaul t} .uiHoverButtonSelected, .uiHoverButtonSelected:active, .uiHoverButtonSelected:ho ver{background:#6d84b4;border-color:#3b5998;box-shadow:none} .uiHoverButtonSelected input{color:#fff} .uiHoverButtonLoading{text-align:center} .uiLinkButton input{background:none;border:none;color:#3b5998;cursor:pointer;fon t-family:'lucida grande',tahoma,verdana,arial,sans-serif;font-size:11px;margin:0 ;padding:0;vertical-align:top} .uiLinkButton:hover, .uiLinkButton input:hover, .uiLinkButton input:focus, .uiLi nkButton input:active{color:#3b5998;text-decoration:underline} .uiLinkButtonSubtle input, .uiLinkButtonSubtle:hover, .uiLinkButtonSubtle input: hover, .uiLinkButtonSubtle input:focus, .uiLinkButtonSubtle input:active{color:g ray} .uiLinkButton input.async_saving{text-decoration:none} .uiBoxGray{background-color:#f2f2f2;border:1px solid #ccc} .uiBoxDarkgray{color:#ccc;background-color:#333;border:1px solid #666} .uiBoxLightblue{background-color:#edeff4;border:1px solid #d8dfea} .uiBoxRed{background-color:#ffebe8;border:1px solid #dd3c10} .uiBoxWhite{background-color:#fff;border:1px solid #ccc} .uiBoxYellow{background-color:#fff9d7;border:1px solid #e2c822} .uiBoxOverlay{background:rgba(255, 255, 255, .85);border:1px solid #3b5998;borde r:1px solid rgba(59, 89, 153, .65);zoom:1} .noborder{border:none} .topborder{border-bottom:none;border-left:none;border-right:none} .bottomborder{border-left:none;border-right:none;border-top:none} .dashedborder{border-style:dashed} .uiGrid{border:0;border-collapse:collapse;border-spacing:0} .uiGridFixed{table-layout:fixed;width:100%} .uiGrid .vTop{vertical-align:top} .uiGrid .vMid{vertical-align:middle} .uiGrid .vBot{vertical-align:bottom} .uiGrid .hLeft{text-align:left} .uiGrid .hCent{text-align:center} .uiGrid .hRght{text-align:right} .uiIconText{display:inline-block;padding-left:21px;position:relative} label.uiIconText{vertical-align:baseline} .uiIconText .img{left:0;position:absolute;top:-1px;vertical-align:middle} i.img u{position:absolute;top:-9999999px} .UIImageBlock_Content{display:table-cell;vertical-align:top;width:10000px} .UIImageBlock_Image{float:left;margin-right:5px} .UIImageBlock_Image .img, img.UIImageBlock_Image, i.UIImageBlock_Image{display:b lock} .UIImageBlock_Ext{float:right} .UIImageBlock_ICON_Image{margin-right:5px} .UIImageBlock_ICON_Content{padding-top:1px} .UIImageBlock_SMALL_Image{margin-right:8px} .UIImageBlock_MED_Image, .UIImageBlock_ENT_Image{margin-right:10px} .UIImageBlock_Entity .UIImageBlock_Content{height:50px;vertical-align:middle} .UIImageBlock_Entity img.UIImageBlock_Image, .UIImageBlock_Entity i.UIImageBlock _Image, .UIImageBlock_Entity .UIImageBlock_Image .img{height:50px;width:50px} .UIImageBlock_Entity .UIImageBlock_Ext{margin-top:14px;padding-left:8px} .uiInfoTable{border:0;border-collapse:collapse;border-spacing:0;width:100%} .uiInfoTableFixed{table-layout:fixed} .uiInfoTable .spacer td{padding:5px 0}

.noBorder .spacer td{padding:0;visibility:hidden} .uiInfoTable .label, .uiInfoTable .data, .uiInfoTable .rightCol{padding:3px 0 1px 0;text-align:left;vertical-align:top} .uiInfoTable .dataRow .data, .uiInfoTable .dataRow .rightCol{padding-top:5px} .uiInfoTable .data > input, .uiInfoTable .data > label input, .uiInfoTable .rightCol > input, .uiInfoTable .rightCol > label input{margin-left:0} .uiInfoTable .label{color:#666;font-weight:bold;padding-right:10px;text-align:ri ght;width:130px} .uiInfoTable .dataRow .label{padding-top:8px} .uiInfoTable .label .annotation{color:#999} .uiInfoTable .rightCol{padding:0 0 0 20px;width:225px} .lfloat{float:left} .rfloat{float:right} a.uiLinkLightBlue{color:#6d84b4} a.uiLinkSubtle{color:gray} .uiListItem{display:block} .uiListHorizontalItem{float:left} .uiListLight, .uiListMedium, .uiListDark{border-style:solid} .uiListHorizontalItemBorder{border-width:0 0 0 1px} .uiListVerticalItemBorder{border-width:1px 0 0 0} .uiListItem:first-child{border-width:0} .uiListLight{border-color:#e9e9e9} .uiListMedium{border-color:#ccc} .uiListDark{border-color:#aaa} .uiListBulleted{color:#3b5998;list-style-type:square;margin-left:12px} .pas{padding:5px} .pam{padding:10px} .pal{padding:20px} .pts{padding-top:5px} .ptm{padding-top:10px} .ptl{padding-top:20px} .prs{padding-right:5px} .prm{padding-right:10px} .prl{padding-right:20px} .pbs{padding-bottom:5px} .pbm{padding-bottom:10px} .pbl{padding-bottom:20px} .pls{padding-left:5px} .plm{padding-left:10px} .pll{padding-left:20px} .phs{padding-left:5px;padding-right:5px} .phm{padding-left:10px;padding-right:10px} .phl{padding-left:20px;padding-right:20px} .pvs{padding-top:5px;padding-bottom:5px} .pvm{padding-top:10px;padding-bottom:10px} .pvl{padding-top:20px;padding-bottom:20px} .mas{margin:5px} .mam{margin:10px} .mal{margin:20px} .mts{margin-top:5px} .mtm{margin-top:10px} .mtl{margin-top:20px} .mrs{margin-right:5px} .mrm{margin-right:10px} .mrl{margin-right:20px} .mbs{margin-bottom:5px}

.mbm{margin-bottom:10px} .mbl{margin-bottom:20px} .mls{margin-left:5px} .mlm{margin-left:10px} .mll{margin-left:20px} .mhs{margin-left:5px;margin-right:5px} .mhm{margin-left:10px;margin-right:10px} .mhl{margin-left:20px;margin-right:20px} .mvs{margin-top:5px;margin-bottom:5px} .mvm{margin-top:10px;margin-bottom:10px} .mvl{margin-top:20px;margin-bottom:20px} .fss{font-size:9px} .fsm{font-size:11px} .fsl{font-size:13px} .fsxl{font-size:16px} .fsxxl{font-size:18px} .fwn{font-weight:normal} .fwb{font-weight:bold} .fcb{color:#333} .fcg{color:gray} .-cx-PRIVATE-uiImageBlockDeprecated__content{display:table-cell;vertical-align:t op;width:10000px} .-cx-PRIVATE-uiImageBlockDeprecated__image{float:left;margin-right:5px} .-cx-PRIVATE-uiImageBlockDeprecated__image .img, img.-cx-PRIVATE-uiImageBlockDep recated__image, i.-cx-PRIVATE-uiImageBlockDeprecated__image{display:block} .-cx-PRIVATE-uiImageBlockDeprecated__ext{float:right} .-cx-PRIVATE-uiImageBlockDeprecated__iconImage{margin-right:5px} .-cx-PRIVATE-uiImageBlockDeprecated__iconContent{padding-top:1px} .-cx-PRIVATE-uiImageBlockDeprecated__smallImage{margin-right:8px} .-cx-PUBLIC-uiImageBlockDeprecated__mediumImage, .-cx-PRIVATE-uiImageBlockDeprec ated__entImage{margin-right:10px} .-cx-PRIVATE-uiImageBlockDeprecated__ent .-cx-PRIVATE-uiImageBlockDeprecated__co ntent{height:50px;vertical-align:middle} .-cx-PRIVATE-uiImageBlockDeprecated__ent img.-cx-PRIVATE-uiImageBlockDeprecated_ _image, .-cx-PRIVATE-uiImageBlockDeprecated__ent i.-cx-PRIVATE-uiImageBlockDepre cated__image, .-cx-PRIVATE-uiImageBlockDeprecated__ent .-cx-PRIVATE-uiImageBlock Deprecated__image .img{height:50px;width:50px} .-cx-PRIVATE-uiImageBlockDeprecated__ent .-cx-PRIVATE-uiImageBlockDeprecated__ex t{margin-top:14px;padding-left:8px} .uiLoadingIndicatorAsync{display:none} .async_saving .uiLoadingIndicatorAsync{display:inline} .uiInputLabel + .uiInputLabel{margin-top:3px} .uiInputLabel + .inlineBlock.uiInputLabel{margin-left:10px;margin-top:0} .uiInputLabelRadio, .uiInputLabelCheckbox{float:left;margin:0;padding:0} .uiInputLabelRadio{margin-top:1px} .uiInputLabel label{color:#333;display:block;font-weight:normal;margin-left:17px ;vertical-align:baseline} .uiMentionsInput{position:relative} .uiMentionsInput .mentionsTextarea, .uiMentionsInput .mentionsTypeahead{backgrou nd:transparent;zoom:1} .uiMentionsInput .mentionsTextarea{line-height:1.28} .uiMentionsInput .highlighter{left:0;overflow:hidden;position:absolute;padding:4 px;top:0} .uiMentionsInput .highlighter div{color:transparent;line-height:1.28;white-space :pre-wrap;width:100%;word-wrap:break-word} .uiMentionsInput .highlighterContent{display:inline-block;max-width:100%} .uiMentionsInput .highlighter b{background:#d8dfea;font-weight:normal} .uiSearchInput{background:#fff;border:1px solid #899bc1;border-top-color:#6484b4 ;display:inline-block} .uiSearchInput span{border:0;border-top:1px solid #ededed;display:inline-block;p

adding:1px 0 2px;position:relative} .uiSearchInput input{border:0;margin:0 22px 0 5px;outline:none;padding:1px 5px 2 px 0;width:190px} .uiSearchInput button{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v 2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-position:-31px -1 21px;background-color:#fff;border:0;cursor:pointer;display:block;height:19px;pad ding:0;position:absolute;right:0;top:0;width:22px} .uiSelector .uiCloseButton{background-clip:padding-box;border:1px solid transpar ent;margin:0} .uiSelector .openToggler .uiCloseButton{background-position:left -32px} .uiSelector .openToggler .uiCloseButtonSmall{background-position:left -24px} .uiMenu{background-color:#fff;padding:3px 0 4px;overflow-y:auto} .uiMenuItem .itemAnchor{border:solid #fff;border-width:1px 0;color:#111;display: block;font-weight:normal;line-height:16px;padding:1px 16px 1px 22px;text-decorat ion:none} .uiMenuItem a:hover{text-decoration:none} .uiMenuItem a:active, .uiMenuItem a:focus{background-color:#6d84b4;border-color: #3b5998;color:#fff;outline:none} .uiMenu .checked .itemAnchor{background:url(http://static.ak.fbcdn.net/rsrc.php/ v2/y9/r/6NgdP4PZyfY.png) left 4px no-repeat;font-weight:bold} .uiMenu .checked a:active, .uiMenu .checked a:focus{background-color:#6d84b4;bac kground-position:left -56px} .uiMenuItem{white-space:nowrap} .uiMenuItem .itemLabel{display:block;max-width:300px;text-overflow:ellipsis;whit e-space:nowrap} .uiMenuItem .itemWithIcon .itemLabel, .uiMenuItem .itemIcon{display:inline-block ;vertical-align:middle} .uiMenuItem .itemLabel .menuIcon{vertical-align:sub} .uiMenu .uiMenuItemPlus{position:relative;zoom:1} .uiMenu .uiMenuItemPlusIcon{display:block;left:8px;position:absolute;top:6px;bac kground-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);b ackground-repeat:no-repeat;background-position:-535px -4px;overflow:hidden;width :8px;height:8px} .uiMenu .selected .uiMenuItemPlusIcon{background-image:url(http://static.ak.fbcd n.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-p osition:-527px -4px} .uiMenuItemBigLabel .itemLabel{overflow:hidden;min-width:300px} .uiMenuItem .disabledAnchor, .uiMenu .disabled .itemAnchor{display:none} .uiMenu .disabled .disabledAnchor{display:block} .uiMenu .disabled .itemAnchor{opacity:.55} .uiMenuItemGroup .groupTitle{margin:0 16px 3px 22px} .uiMenuSeparator{border-bottom:1px solid #ddd;margin:5px 7px 6px;padding-top:1px } .uiMenuContainer{overflow:hidden} .uiMenuContainer .uiMenu{position:relative} .openToggler{z-index:100} .uiToggleFlyout, .toggleTargetClosed, .openToggler .uiToggleFlyout .uiToggleFlyo ut{display:none} .openToggler .uiToggleFlyout, .openToggler .uiToggleFlyout .openToggler .uiToggl eFlyout{display:block} .hideToggler{border:0;height:0;opacity:0;overflow:hidden;pointer-events:none;pos ition:absolute;width:0} body.opera .hideToggler{padding:0} .uiSelector{max-width:200px;vertical-align:top} .uiSelector .wrap{position:relative} .uiSelector select, .uiSelector .submitButton, .no_js form .uiSelectorButton{dis play:none} .no_js form .uiSelector select, .no_js form .uiSelector .submitButton{display:in line} .uiSelector .uiButton, .uiSelector .uiButton:active, .uiSelector .uiButton:focus

, .uiSelector .uiButton:hover{background-image:none} .uiSelector .uiSelectorButton{vertical-align:top} .uiSelector .uiSelectorButton:active{background-color:#ddd} .uiSelector .openToggler .uiSelectorButton, .uiSelector .openToggler .uiSelector Button:active, .uiSelector .openToggler .uiSelectorButton:focus, .uiSelector .op enToggler .uiSelectorButton:hover{background-color:#6d84b4;border:1px solid #3b5 998;border-bottom-color:#6d84b4;box-shadow:none} .uiSelectorNormal .uiSelectorChevronOnly, .uiSelectorNormal .uiSelectorChevronOn ly:active, .uiSelectorNormal .uiSelectorChevronOnly:focus, .uiSelectorNormal .ui SelectorChevronOnly:hover{height:20px;padding:0} .uiSelectorNormal .uiSelectorButton, .uiSelectorNormal .uiSelectorButton:active, .uiSelectorNormal .uiSelectorButton:focus, .uiSelectorNormal .uiSelectorButton: hover, .uiSelectorNormal .uiButtonSuppressed:active, .uiSelectorNormal .uiButton Suppressed:focus, .uiSelectorNormal .uiButtonSuppressed:hover{background-image:u rl(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repea t:no-repeat;background-position:right -102px;max-width:169px;padding-right:23px} .uiSelectorNormal .uiButtonDisabled, .uiSelectorNormal a.uiButtonDisabled:active , .uiSelectorNormal a.uiButtonDisabled:focus, .uiSelectorNormal a.uiButtonDisabl ed:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1 vovS7.png);background-repeat:no-repeat;background-position:right -151px} .uiSelectorNormal .uiButtonSuppressed.uiButtonDisabled{background-image:url(http ://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-re peat;background-position:right -396px} .uiSelectorNormal .uiButtonOverlay, .uiSelectorNormal .uiButtonOverlay:active, . uiSelectorNormal .uiButtonOverlay:focus, .uiSelectorNormal .uiButtonOverlay:hove r, .uiSelectorNormal .uiSelectorButton:active, .uiSelectorNormal .uiButtonSuppre ssed{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS 7.png);background-repeat:no-repeat;background-position:right -446px} .uiSelectorNormal .openToggler .uiSelectorButton, .uiSelectorNormal .openToggler .uiSelectorButton:active, .uiSelectorNormal .openToggler .uiSelectorButton:focu s, .uiSelectorNormal .openToggler .uiSelectorButton:hover, .uiSelectorNormal .op enToggler .uiButtonSuppressed, .uiSelectorNormal .openToggler .uiButtonSuppresse d:active, .uiSelectorNormal .openToggler .uiButtonSuppressed:focus, .uiSelectorN ormal .openToggler .uiButtonSuppressed:hover{background-image:url(http://static. ak.fbcdn.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;backg round-position:right -249px} .uiSelectorNormal .uiSelectorButton .uiButtonText{max-width:169px;overflow:hidde n;text-overflow:ellipsis;vertical-align:top} .uiSelectorNormal .uiSelectorBigButtonLabel .img{float:left} .uiSelectorNormal .uiSelectorBigButtonLabel .uiButtonText{display:block} .uiSelectorNormal .openToggler .uiSelectorButton .uiButtonText{color:#fff} .uiSelectorMenuWrapper{bottom:auto;left:0;margin:-1px 0 30px;max-width:340px;min -width:100%;position:absolute;right:auto;top:100%;z-index:-1} .uiSelectorRight .uiSelectorMenuWrapper{left:auto;right:0} .uiSelectorMenuWrapper .loading{padding:5px 20px} .uiSelectorMenuWrapper .loading span{background:url(http://static.ak.fbcdn.net/r src.php/v2/yb/r/GsNJNwuI-UM.gif) no-repeat 0 0;display:inline-block;height:11px; margin:0 auto;width:16px} .uiSelector .uiMenu{border:1px solid #777;border-bottom:2px solid #293e6a} .uiSelectorContextualLayer .uiSelector{margin:0;max-width:none;position:relative } .uiSelectorContextualLayer .uiContextualLayerAboveLeft .uiSelector, .uiSelectorC ontextualLayer .uiContextualLayerAboveRight .uiSelector{top:2px} .uiSelectorContextualLayer .uiContextualLayerBelowLeft .uiSelector, .uiSelectorC ontextualLayer .uiContextualLayerBelowRight .uiSelector{top:-1px} .uiSelectorContextualLayer .uiSelectorMenuWrapper{position:static;margin:0;min-w idth:auto} .uiSelectorContextualLayer .uiSelector .uiSelectorButton{position:absolute} .uiSelectorContextualLayer .uiContextualLayerAboveLeft .uiSelector .uiSelectorBu tton, .uiSelectorContextualLayer .uiContextualLayerAboveRight .uiSelector .uiSel

ectorButton{border:1px solid #3b5998;border-top-color:#6d84b4;margin-top:-2px;to p:100%} .uiSelectorContextualLayer .uiContextualLayerBelowLeft .uiSelector .uiSelectorBu tton, .uiSelectorContextualLayer .uiContextualLayerBelowRight .uiSelector .uiSel ectorButton{bottom:100%;margin-bottom:-1px} .uiSelectorContextualLayer .uiContextualLayerAboveLeft .uiSelector .uiSelectorBu tton, .uiSelectorContextualLayer .uiContextualLayerBelowLeft .uiSelector .uiSele ctorButton{left:0} .uiSelectorContextualLayer .uiContextualLayerAboveRight .uiSelector .uiSelectorB utton, .uiSelectorContextualLayer .uiContextualLayerBelowRight .uiSelector .uiSe lectorButton{right:0} .uiStickyPlaceholderInput{display:inline-block;position:relative} .uiStickyPlaceholderInput input, .uiStickyPlaceholderInput textarea{background-c olor:transparent;position:relative} .uiStickyPlaceholderInput .placeholder{color:#999;cursor:text;display:none;heigh t:100%;left:0;padding:4px 0 0 5px;position:absolute;top:0;width:100%} .uiTypeahead .uiStickyPlaceholderInput .placeholder{padding:3px 0 0 4px} div.uiStickyPlaceholderTextarea .placeholder{padding:6px 0 0 6px} div.uiStickyPlaceholderEmptyInput .placeholder{display:block} .uiTypeahead .uiStickyPlaceholderInput{width:100%} .uiClearableTypeahead .selected .uiStickyPlaceholderInput{margin-right:16px} .uiTextareaNoResize{resize:none} .uiTextareaAutogrow{overflow:hidden} .uiHeader h2{color:#1c2a47;font-size:16px} .uiHeader h2 a{color:#1c2a47} .uiHeader h3, .uiHeader h4{color:#333;font-size:11px} .uiHeader h5{color:#666;font-size:11px} .uiHeader .uiHeaderTitle{outline:none} .uiHeaderWithImage .uiHeaderTop{position:relative} .uiHeaderWithImage .uiHeaderTitle{padding-left:22px} .uiHeaderImage{left:0;position:absolute} .uiHeader h2 .uiHeaderImage{top:2px} .uiHeaderTopBorder{border-top:1px solid #aaa;padding-top:.5em} div.uiHeaderTopBorder{margin-left:0} .uiHeaderTopAndBottomBorder{border-bottom:1px solid #e9e9e9;border-top:1px solid #aaa;padding:5px 0} .uiHeaderMiddleBorder{border-bottom:1px solid #ccc;height:.8em;margin:.5em 0 1.5 em 0;position:relative} .uiHeaderMiddleBorder .uiHeaderTitle, .uiHeaderMiddleBorder .uiHeaderActions{bac kground-color:#fff;position:absolute;top:0} .uiHeaderMiddleBorder .uiHeaderTitle{left:0;padding-right:.5em} .uiHeaderMiddleBorder .uiHeaderActions{padding-left:.5em;right:0} .uiHeaderMiddleBorder .uiButton{margin-top:-2px} .uiHeaderBottomBorder{border-bottom:1px solid #aaa;padding-bottom:.5em} .uiHeaderPage{padding:6px 0 16px} .uiHeaderPage .uiHeaderTitle{line-height:20px;min-height:20px;padding-bottom:2px ;vertical-align:bottom} .uiHeaderPage .uiHeaderActions{margin-top:-1px} .uiHeaderPage .uiHeaderTop .fsl{margin-top:3px} .uiHeaderNav{border-color:#eee;margin:8px 0 0 6px;padding:7px 6px 3px 5px} .uiHeaderNavEmpty{padding-top:6px} .uiHeaderNav h4{color:gray} .uiHeaderSection, .uiSideHeader{background-color:#f2f2f2;border-bottom:none;bord er-top:solid 1px #e2e2e2;padding:4px 6px 5px} div.modalWrapper{background-color:rgba(255, 255, 255, .8);left:0;min-height:100% ;position:absolute;right:0;top:0;z-index:400} div.-cx-PRIVATE-ModalLayer__fixed{bottom:0;position:fixed;width:100%} .-cx-PRIVATE-uiDialog__positioner{height:0;left:0;position:fixed;right:0;top:0;z -index:200} .modalWrapper.-cx-PRIVATE-uiDialog__positioner{height:auto}

.-cx-PUBLIC-uiDialog__wrapper{margin:0 auto 40px;position:relative} .-cx-PUBLIC-uiDialog__border{border:10px solid rgba(82, 82, 82, .7);border-radiu s:8px} .-cx-PRIVATE-uiDialog__content{background-color:#fff;position:relative} .-cx-PUBLIC-uiDialog__title{background-color:#6d84b4;border:1px solid #3b5998;bo rder-bottom:0;color:#fff;font-size:14px;font-weight:bold} .-cx-PRIVATE-uiDialog__body, .-cx-PRIVATE-uiDialog__footer{border-color:#555;bor der-style:solid;border-width:0 1px} .-cx-PRIVATE-uiDialog__body:first-child{border-top-width:1px} .-cx-PRIVATE-uiDialog__body:last-child{border-bottom-width:1px} .-cx-PRIVATE-uiDialog__footer{border-bottom-width:1px} .-cx-PRIVATE-uiDialog__loadingDialog{z-index:400} .-cx-PRIVATE-uiDialog__loadingText{background-color:#f2f2f2;font-size:24px;paddi ng:10px} .uiLayer{outline:none} .-cx-PRIVATE-uiContextualDialog__defaultPadding{padding:15px} .-cx-PRIVATE-uiContextualDialog__content{background:#fff;border:1px solid #8c8c8 c;border:1px solid rgba(0, 0, 0, .45);border-bottom:1px solid #666;box-shadow:0 3px 8px rgba(0, 0, 0, .3);position:relative} .-cx-PRIVATE-uiContextualDialog__footer{padding:6px 7px 6px 8px} .-cx-PRIVATE-uiContextualDialog__arrow{position:absolute;overflow:hidden} .-cx-PRIVATE-uiContextualDialog__arrowTop{padding-top:10px} .-cx-PRIVATE-uiContextualDialog__arrowRight{padding-right:10px} .-cx-PRIVATE-uiContextualDialog__arrowBottom{padding-bottom:10px} .-cx-PRIVATE-uiContextualDialog__arrowLeft{padding-left:10px} .-cx-PRIVATE-uiContextualDialog__arrowTop .-cx-PRIVATE-uiContextualDialog__arrow {background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.pn g);background-repeat:no-repeat;background-position:-301px -20px;height:9px;top:2 px;width:16px} .-cx-PRIVATE-uiContextualDialog__arrowRight .-cx-PRIVATE-uiContextualDialog__arr ow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2. png);background-repeat:no-repeat;background-position:-10px -82px;height:16px;rig ht:2px;width:9px} .-cx-PRIVATE-uiContextualDialog__arrowBottom .-cx-PRIVATE-uiContextualDialog__ar row{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2 .png);background-repeat:no-repeat;background-position:-335px -20px;bottom:2px;he ight:9px;width:16px} .-cx-PRIVATE-uiContextualDialog__arrowBottom.-cx-PRIVATE-uiContextualDialog__wit hFooter .-cx-PRIVATE-uiContextualDialog__arrow{background-image:url(http://stati c.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;bac kground-position:-318px -20px} .-cx-PRIVATE-uiContextualDialog__arrowBottom.-cx-PRIVATE-uiContextualDialog__hov erFooter .-cx-PRIVATE-uiContextualDialog__arrow{background-image:url(http://stat ic.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repeat;ba ckground-position:-284px -20px} .-cx-PRIVATE-uiContextualDialog__arrowLeft .-cx-PRIVATE-uiContextualDialog__arro w{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.p ng);background-repeat:no-repeat;background-position:0 -82px;height:16px;left:2px ;width:9px} .uiContextualDialogFooterLink{background:#f2f2f2;border-top:1px solid #e0e0e0;di splay:block;font-weight:bold;padding:7px;text-align:center} .uiContextualDialogFooterLink:hover{background:#6d84b4;border-color:#3b5998;colo r:#fff;text-decoration:none} .uiScrollableArea{direction:ltr;height:100%;overflow:hidden;position:relative} .uiScrollableAreaWrap{height:100%;outline:none;overflow-x:hidden;overflow-y:auto ;position:relative;width:150%} .native .uiScrollableAreaWrap, .native .uiScrollableAreaBody, .no_js .uiScrollab leAreaWrap, .no_js .uiScrollableAreaBody{width:auto !important} .uiScrollableAreaBottomAligned .uiScrollableAreaShadow{display:block} .uiScrollableAreaBottomAligned .uiScrollableAreaBody{height:100%}

.uiScrollableAreaBottomAligned .uiScrollableAreaContent{bottom:0;position:absolu te;width:100%} .uiScrollableAreaBody{direction:ltr;position:relative} .uiScrollableAreaTrack{bottom:2px;display:block;position:absolute;right:2px;top: 2px;-o-user-select:none;width:7px;z-index:5} .contentAfter .uiScrollableAreaTrack:hover, .contentBefore .uiScrollableAreaTrac k:hover, .uiScrollableAreaDragging{background-color:rgba(0, 0, 0, .15);border-ra dius:10px;width:10px} .uiScrollableArea .uiContextualLayerPositioner{z-index:4} .uiScrollableAreaShadow, .native .uiScrollableAreaTrack, .no_js .uiScrollableAre aTrack{display:none} .fade .uiScrollableAreaTrack{opacity:0} .uiScrollableAreaGripper{background-clip:content-box;background-color:rgba(0, 0, 0, .4);border:1px solid rgba(85, 85, 85, .6);border-radius:7px;position:absolut e;right:0;-o-transition:width 250ms;width:5px} .uiScrollableAreaGripper:active, .uiScrollableAreaTrack:hover .uiScrollableAreaG ripper{width:8px} .uiScrollableArea.contentBefore:before, .uiScrollableArea.contentAfter:after{con tent:'';display:block;height:2px;position:absolute;width:100%;z-index:99} .uiScrollableArea.contentBefore:before{top:0} .uiScrollableArea.contentAfter:after{background-color:rgba(0, 0, 0, .07);bottom: 0} .uiHelpLink{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yt/r/7rpZ7CHyv X7.gif) no-repeat 0 center;display:inline-block;height:9px;width:12px} .uiHelpLink .right{left:auto;right:-4px} .uiMoreLinkCaret{margin-left:2px;padding-bottom:2px} .uiTooltip{position:relative} .uiTooltip:active, .uiTooltip:focus, .uiTooltip:hover{outline:none;text-decorati on:none} .uiTooltipWrap{display:none} .uiTooltipWrap:hover{visibility:hidden} .uiTooltipText{background-color:#282828;color:#fff !important;display:block;font -size:11px;line-height:14px;padding:4px 8px;text-align:left;white-space:nowrap} .uiTooltip:active .uiTooltipWrap, .uiTooltip:focus .uiTooltipWrap, .uiTooltip:ho ver .uiTooltipWrap{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/y1/r/uV R6w3wRHEJ.gif) left bottom no-repeat;bottom:100%;display:block;left:0;padding:0 0 4px;position:absolute} .uiTooltip:active .center, .uiTooltip:focus .center, .uiTooltip:hover .center{le ft:50%;margin-left:-10px;padding-left:10px} .uiTooltip .center .uiTooltipText{left:-50%;position:relative} .uiTooltip .centerbottom .uiTooltipText{margin-left:18px} .uiTooltip:active .right, .uiTooltip:focus .right, .uiTooltip:hover .right{backg round-position:right bottom;left:auto;right:0} .uiTooltip:active .middle, .uiTooltip:focus .middle, .uiTooltip:hover .middle{ba ckground-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yR/r/kPCE0g_tKJs.gif); background-position:right top;left:auto;margin:-4px 4px 0 0;right:100%;padding:4 px;top:50%} .uiTooltip .middle .uiTooltipText{margin-top:-10px} .uiTooltip:active .rightmiddle, .uiTooltip:focus .rightmiddle, .uiTooltip:hover .rightmiddle{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yY/r/_Z WZupdaAgS.gif);background-position:left top;left:100%;margin:-4px 0 0 4px;right: auto} .uiTooltip:active .bottom, .uiTooltip:focus .bottom, .uiTooltip:hover .bottom{ba ckground-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yX/r/k2R_CZuPy2I.png); background-position:left top;bottom:auto;padding:4px 0 0;top:100%} .uiTooltip:active .rightbottom, .uiTooltip:focus .rightbottom, .uiTooltip:hover .rightbottom{background-position:right top} .uiCollapsedList .visible{margin-right:10px} .uiCollapsedListHidden .showAll{list-style-type:none} .uiCollapsedListVisible .showAll,

.uiCollapsedListHidden .hiddenItem{display:none} .uiCollapsedListNoSeparate .visible{margin-right:3px} .uiCollapsedListVisible .visible, .uiCollapsedListMiddot .visible{margin-right:0} .uiMediaThumb{background:#fff;border:1px solid #ccc;display:inline-block;outline :none;padding:4px;position:relative;vertical-align:bottom} .loading.uiMediaThumb{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yk/r /LOOn0JtHNzb.gif) no-repeat center center} .loading.uiMediaThumb i{opacity:.3} .uiMediaThumbSelected{background-color:#3b5998;border-color:#3b5998} .uiMediaThumb:hover, .uiMediaThumb:hover .uiMediaThumbWrap, .uiMediaThumb:active , .uiMediaThumb:active .uiMediaThumbWrap, .uiMediaThumb:focus, .uiMediaThumb:foc us .uiMediaThumbWrap{border-color:#3b5998} .uiMediaThumb i{background-color:#eee;background-position:center 25%;backgroundrepeat:no-repeat;display:block} .uiMediaThumbSmall i{height:54px;width:73px} .uiMediaThumbMedium i{height:85px;width:114px} .uiMediaThumbLarge i{height:116px;width:149px} .uiMediaThumbHuge i{height:120px;width:161px} .uiMediaThumbAlb{margin-bottom:5px;margin-right:5px} .uiMediaThumbWrap{background:#fff;border:1px solid #ccc;left:4px;padding:4px;pos ition:absolute;top:4px} .uiMediaThumbAlbSmall, .uiMediaThumbSmall .uiMediaThumbWrap i{height:49px;width: 68px} .uiMediaThumbAlbMedium, .uiMediaThumbMedium .uiMediaThumbWrap i{height:80px;widt h:109px} .uiMediaThumbAlbLarge, .uiMediaThumbLarge .uiMediaThumbWrap i{height:111px;width :144px} .uiMediaThumbAlbHuge, .uiMediaThumbHuge .uiMediaThumbWrap i{height:115px;width:1 56px} .uiPhotoThumb{border:1px solid #ccc;display:inline-block} .uiPhotoThumb img{display:block;margin:3px} .uiPhotoThumb:hover{border:1px solid #3b5998} .loading.uiPhotoThumb{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yb/r /GsNJNwuI-UM.gif) no-repeat center center} .loading.uiPhotoThumb img{opacity:.3} .uiVideoThumb{border:0;display:inline-block;overflow:hidden;position:relative} .uiVideoThumb img{display:inline-block;max-height:130px;max-width:130px} .uiVideoThumb img[width]{max-width:auto} .uiVideoThumb i{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yG/r/Gj2ad 6O09TZ.png) no-repeat 0 0;bottom:5px;height:26px;left:5px;position:absolute;widt h:35px} .uiVideoThumbSmall i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2 /yN/r/aERK2-5sOBX.png);bottom:3px;height:22px;left:3px;width:27px} .uiVideoThumbTiny i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ yr/r/AF1Uwjj81fI.png);bottom:3px;height:17px;width:21px;left:3px} .uiVideoThumbLoading i{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/y9/ r/jKEcVPZFk-2.gif) no-repeat 50% 50%;bottom:0;height:100%;left:0;width:100%} .uiVideoThumbSmall.uiVideoThumbLoading i, .uiVideoThumbTiny.uiVideoThumbLoading i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.g if)} .uiVideoThumbLoading img{opacity:.15} .uiVideoThumbLarge img{background:#F2F2F2 no-repeat 50% 50%;max-height:168px;max -width:300px} .uiVideoThumbLarge i{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yG/r/ Gj2ad6O09TZ.png) no-repeat 0 0;height:26px;left:50%;margin:-13px 0 0 -17px;posit ion:absolute;top:50%;width:35px} .uiVideoThumbHuge i{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yI/r/C QWPMUMZZVm.png) no-repeat 0 0;height:62px;left:50%;margin:-31px 0 0 -46px;positi on:absolute;top:50%;width:92px}

.uiMenuXLoading{padding:5px 0 3px;text-align:center} .uiMenuXLoading .spinner{background-image:url(http://static.ak.fbcdn.net/rsrc.ph p/v2/yb/r/GsNJNwuI-UM.gif);background-repeat:no-repeat;background-position:0 0;d isplay:inline-block;height:11px;margin:2px 10px 0;width:16px} .uiContextualLayerBelowLeft .uiMenuXWithShortBorder .uiMenuXBorder, .uiContextualLayerBelowRight .uiMenuXWithShortBorder .uiMenuXBorder{border-top:n one} .uiContextualLayerAboveLeft .uiMenuXWithShortBorder .uiMenuXBorder, .uiContextualLayerAboveRight .uiMenuXWithShortBorder .uiMenuXBorder{border-botto m:none} .uiMenuXShortBorder{border-top:1px solid #777;position:absolute;right:0;top:-1px } .uiContextualLayerAboveLeft .uiMenuXShortBorder, .uiContextualLayerAboveRight .uiMenuXShortBorder{border-top:2px solid #293e6a} .uiContextualLayerAboveLeft .uiMenuXShortBorder, .uiContextualLayerAboveRight .uiMenuXShortBorder{below:-1px;top:auto} .uiContextualLayerAboveRight .uiMenuXShortBorder, .uiContextualLayerBelowRight .uiMenuXShortBorder{left:0;right:auto} .uiMenuXBorder{background-color:#fff;border:1px solid #777;border-bottom:2px sol id #293e6a} .uiMenuX{padding:3px 0 4px} .uiMenuXItem .itemAnchor{border:solid #fff;border-width:1px 0;color:#111;display :block;font-weight:normal;line-height:16px;padding:1px 16px 1px 22px;text-decora tion:none} .uiMenuXItem a:hover, .uiMenuXItem a:active, .uiMenuXItem a:focus{outline:none;t ext-decoration:none} .uiMenuXItem a.highlighted{background-color:#6d84b4;border-color:#3b5998;color:# fff} .uiMenuX .checked .itemAnchor{background:url(http://static.ak.fbcdn.net/rsrc.php /v2/y9/r/6NgdP4PZyfY.png) left 4px no-repeat;font-weight:bold} .uiMenuX .checked a.highlighted{background-color:#6d84b4;background-position:lef t -56px} .uiMenuXItem{overflow:hidden;white-space:nowrap} .uiMenuXItem .itemLabel{display:block;max-width:300px;overflow:hidden;text-overf low:ellipsis;white-space:nowrap} .uiMenuXItem .hasIcon .img, .uiMenuXItem .hasIcon .itemLabel{display:inline-bloc k;vertical-align:middle} .uiMorePager .uiMorePagerPrimary{display:block;padding:10px 15px} .uiMorePager .uiMorePagerPrimary:hover{background-color:#d8dfea} .uiMorePager .uiMorePagerSecondary{margin:10px 15px} .uiMorePager .arrow{display:inline-block;vertical-align:top} .uiMorePager .uiMorePagerLoader{display:none;padding:11px 15px 9px;text-align:ce nter} .async_saving .uiMorePagerLoader{display:block} .async_saving .uiMorePagerPrimary, .async_saving .uiMorePagerSecondary{display:none} .uiMorePagerCenter{text-align:center} .uiMorePagerLight .uiMorePagerPrimary, .uiMorePagerLight .uiMorePagerLoader{padding:6px 5px 10px;border-top:1px solid # e5eaf1} .uiMorePagerLight .uiMorePagerPrimary:hover{background-color:#edeff4;border-top: 1px solid #d8dfea} .uiMorePagerLight .uiMorePagerSecondary{margin:6px 5px} .uiSideNav .loading .uiLoadingIndicatorAsync, .uiFutureSideNav .loading .uiLoadi ngIndicatorAsync{display:inline} .editMode .uiSideNav .loading .uiLoadingIndicatorAsync, .uiSideNav .loading ul . uiLoadingIndicatorAsync{display:none} .uiSideNav .uiLoadingIndicatorAsync{position:relative;top:2px} .uiSideNav .buttonWrap{clear:left;float:left;height:20px;text-align:right;width: 20px}

.uiSideNav .sideNavItem{padding-right:20px;margin-left:-20px;width:100%} .uiSideNav .drag{margin-left:0} .uiSideNav .item, .uiSideNav .subitem{margin-left:20px;margin-right:-20px} .uiSideNav .sideNavItem .imgWrap{margin-left:-22px;margin-top:-1px;float:left} .uiSideNav .sideNavItem .linkWrap{display:block;overflow:hidden;padding-left:0;t ext-overflow:ellipsis;white-space:nowrap} .uiSideNav .sideNavItem .hasCount{max-width:110px} .uiSideNav .sideNavItem .noCount{max-width:145px} .uiSideNav .sideNavItem .subitem .hasCount{max-width:90px} .uiSideNav .sideNavItem .subitem .noCount{max-width:125px} .uiSideNav .loading .noCount{max-width:127px} .uiSideNav .sideNavItem .uiSideNavEditButton{margin:2px 5px 0 0;text-align:left} .uiSideNav .sideNavItem .uiCloseButton{opacity:0} .uiSideNav .sideNavItem .uiCloseButton:focus, .uiSideNav .sideNavItem:hover .uiC loseButton, .uiSideNav .sideNavItem .openToggler .uiCloseButton{opacity:1} .uiNarrowSideNav .uiSideNav .sideNavItem:hover .buttonWrap, .uiNarrowSideNav .ui SideNav .hover .buttonWrap, .uiNarrowSideNav .uiSideNav .editMenuOpened .buttonW rap{display:block;padding-right:4px;width:25px} .uiNarrowSideNav .uiSideNav .buttonWrap, .uiNarrowSideNav .uiSideNav .sideNavIte m:hover .item .rfloat, .uiNarrowSideNav .uiSideNav .hover .item .rfloat, .uiNarr owSideNav .uiSideNav .editMenuOpened .item .rfloat{display:none} .uiNarrowSideNav .uiSideNav .buttonWrap{float:right;margin-right:-2px;width:0} .uiNarrowSideNav .sideNavItem{padding-right:0;margin-left:0} .uiNarrowSideNav .sideNavItem .item, .uiNarrowSideNav .sideNavItem .subitem{marg in-left:0;margin-right:0} .uiSideNavCountSprited, .uiSideNavCountSpritedRed{display:inline-block;font-weight:bold;line-height:13px ;/* @noflip */ padding-right:4px;text-decoration:none} .uiSideNavCountSprited{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yk/ r/BwKwOpPWbGZ.png) no-repeat right 0;color:#3b5998} .uiSideNavCountSpritedRed{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/ yb/r/W22xzgHib16.png) no-repeat right 0;color:#fff} .uiSideNavCountSprited .countValue{/* @noflip */ background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yk/r/BwKwOpPWbGZ.png) no-r epeat 0 -13px;/* @noflip */ padding-left:4px} .uiSideNavCountSpritedRed .countValue{/* @noflip */ background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yb/r/W22xzgHib16.png) no-r epeat 0 -13px;/* @noflip */ padding-left:4px} .uiSideNavCountSprited .countValue, .uiSideNavCountSprited .maxCountIndicator{display:inline-block;height:13px;verti cal-align:top} .uiSideNav .async_saving .uiSideNavCountSprited, .uiSideNav .loading .uiSideNavCountSprited{display:none} .uiSideNavCount{background-color:#d8dfea;border-radius:2px;color:#3b5998;font-we ight:bold;left:-1px;padding:0 4px;position:relative} .uiSideNav .uiSideNavCount{padding-bottom:2px} .uiSideNavCountInline{display:inline-block;line-height:15px} .uiSideNav .async_saving .uiSideNavCount, .uiSideNav .loading .uiSideNavCount{di splay:none} .hideNavCounts .uiSideNavCount{display:none} .uiToolbarBordered{margin:0 -7px;padding:6px 7px 6px 1px} .uiToolbar .uiToolbarItem{float:left;margin-left:6px;vertical-align:top} .uiToolbarUnbordered .uiToolbarItem:first-child{margin-left:0} .uiToolbar .uiToolbarDivider{background:#d6d6d6;height:22px;width:1px} .uiContextualDialogDefaultPadding{padding:15px} .uiContextualDialogFooter{padding:6px 7px 6px 8px} .uiContextualDialogPositioner, .uiContextualDialogPositioner .uiContextualDialog

{outline:none;position:absolute;z-index:200} .uiContextualDialogFixed{position:fixed} .uiContextualDialogAbove .uiContextualDialog{bottom:0} .uiContextualDialogBelow .uiContextualDialog{top:0} .uiContextualDialogLeft .uiContextualDialog, .uiContextualDialogRightAligned .ui ContextualDialog{right:0} .uiContextualDialog, .uiContextualDialog:focus{outline:0 solid transparent} .uiContextualDialogArrow{position:absolute;overflow:hidden} .uiContextualDialogArrowTop{padding-top:10px} .uiContextualDialogArrowRight{padding-right:10px} .uiContextualDialogArrowBottom{padding-bottom:10px} .uiContextualDialogArrowLeft{padding-left:10px} .uiContextualDialogArrowRight .uiContextualDialogArrow{background-image:url(http ://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-re peat;background-position:-10px -82px;height:16px;right:2px;width:9px} .uiContextualDialogArrowBottom .uiContextualDialogArrow{background-image:url(htt p://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-r epeat;background-position:-335px -20px;bottom:2px;height:9px;width:16px} .uiContextualDialogWithFooterArrowBottom .uiContextualDialogArrow{background-ima ge:url(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-r epeat:no-repeat;background-position:-318px -20px} .uiContextualDialogHoverFooterArrow .uiContextualDialogArrow{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat :no-repeat;background-position:-284px -20px} .uiContextualDialogArrowTop .uiContextualDialogArrow{background-image:url(http:/ /static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-repe at;background-position:-301px -20px;height:9px;top:2px;width:16px} .uiContextualDialogArrowLeft .uiContextualDialogArrow{background-image:url(http: //static.ak.fbcdn.net/rsrc.php/v2/ym/r/NRGEePMfwP2.png);background-repeat:no-rep eat;background-position:0 -82px;height:16px;left:2px;width:9px} .uiContextualDialogFooterLink{background:#f2f2f2;border-top:1px solid #e0e0e0;di splay:block;font-weight:bold;padding:7px;text-align:center} .uiContextualDialogFooterLink:hover{background:#6d84b4;border-color:#3b5998;colo r:#fff;text-decoration:none} .uiContextualLayerPositioner{height:0;position:absolute;z-index:200} .uiContextualLayer{position:absolute} div.uiContextualLayerPositionerFixed{position:fixed} .uiContextualLayerParent{position:relative} .uiOverlay{position:relative;z-index:200} .uiOverlayContent{background:#fff;border:1px solid #8c8c8c;border:1px solid rgba (0, 0, 0, .45);border-bottom:1px solid #666;box-shadow:0 3px 8px rgba(0, 0, 0, . 3);position:relative} .uiOverlayFooter{text-align:right} .uiOverlayFooterMessage{width:100%} .uiOverlayFooterButtons{white-space:nowrap} .uiTooltipX{position:relative;zoom:1} .uiTooltipX .tooltipContent{background-color:#282828;color:#fff;font-size:11px;l ine-height:14px;padding:4px 8px;text-align:left;white-space:nowrap} .uiTooltipX .tooltipText{max-width:334px} .uiTooltipX .tooltipWrap{white-space:normal;width:334px;word-wrap:break-word} .uiTooltipX .tooltipText span{zoom:1} .uiTooltipX i.arrow{border:4px solid transparent;font-size:0;height:0;line-heigh t:0;position:absolute;width:0} .uiContextualLayerAboveLeft .uiTooltipX, .uiContextualLayerAboveRight .uiTooltip X, .uiContextualLayerAboveCenter .uiTooltipX{margin-bottom:1px;padding-bottom:4p x} .uiContextualLayerAboveLeft .uiTooltipX i.arrow, .uiContextualLayerAboveRight .u iTooltipX i.arrow, .uiContextualLayerAboveCenter .uiTooltipX i.arrow{border-bott om:0;border-top-color:#282828;bottom:0} .uiContextualLayerBelowLeft .uiTooltipX, .uiContextualLayerBelowRight .uiTooltip

X, .uiContextualLayerBelowCenter .uiTooltipX{margin-top:1px;padding-top:4px} .uiContextualLayerBelowLeft .uiTooltipX i.arrow, .uiContextualLayerBelowRight .u iTooltipX i.arrow, .uiContextualLayerBelowCenter .uiTooltipX i.arrow{border-bott om-color:#282828;border-top:0;top:0} .uiContextualLayerAboveLeft .uiTooltipX i.arrow, .uiContextualLayerBelowLeft .ui TooltipX i.arrow{left:5px} .uiContextualLayerAboveRight .uiTooltipX i.arrow, .uiContextualLayerBelowRight . uiTooltipX i.arrow{right:5px} .uiContextualLayerAboveCenter .uiTooltipX i.arrow, .uiContextualLayerBelowCenter .uiTooltipX i.arrow{left:50%;margin-left:-4px} .uiContextualLayerLeft .uiTooltipX{margin-right:1px;padding-right:4px} .uiContextualLayerLeft .uiTooltipX i.arrow{border-left-color:#282828;border-righ t:0;right:0;top:6px} .uiContextualLayerRight .uiTooltipX{margin-left:1px;padding-left:4px} .uiContextualLayerRight .uiTooltipX i.arrow{border-left:0;border-right-color:#28 2828;left:0;top:6px} .uiFacepileSmall ul{margin-top:-2px} .uiFacepileMedium ul{margin-top:-1px} .uiFacepileLarge ul{margin-top:-3px} .uiFacepile .link{display:block;position:relative} .uiFacepile .uiFacepileItem .img{vertical-align:bottom} .uiFacepileSmall .uiFacepileItem{margin:2px 2px 0 0} .uiFacepileMedium .uiFacepileItem{margin:1px 1px 0 0} .uiFacepileLarge .uiFacepileItem{margin:3px 3px 0 0} .uiFacepile li:last-child{margin-right:0} .uiFacepile .showAll{width:100%} .uiFacepile .showAllLink{border-color:#7792ba;border-width:1px 0 0;padding:3px;v ertical-align:middle} .uiFacepileSmall .showAllLink{line-height:18px;margin:2px 2px 0 0} .uiFacepileMedium .showAllLink{line-height:24px;margin:1px 1px 0 0} .uiFacepileLarge .showAllLink{line-height:44px;margin:5px 5px 0 0} .uiFacepile .chatStatus{border:solid #fff;border-width:1px 0 0 1px;bottom:0;heig ht:5px;position:absolute;right:0;width:5px} .uiFacepile .chatOnline .chatStatus{background:#84ca5a} .uiFacepile .chatOffline .chatStatus, .uiFacepile .chatIdle .chatStatus, .uiFace pile .chatMobile .chatStatus{border:none} .uiScaledImageContainer{position:relative;overflow:hidden} .uiScaledImageCentered{background-color:#f2f2f2;text-align:center} .uiScaledImageContainer img{height:100%;min-height:100%;position:relative} .uiScaledImageContainer .scaledImageFitWidth{height:auto;width:100%} .uiScaledImageContainer .verticallyAligned{min-height:0;vertical-align:middle} .-cx-PRIVATE-uiSquareImage__root:only-child{display:block} .-cx-PRIVATE-uiSquareImage__fixHuge{background-position:center 25%} .-cx-PRIVATE-uiSquareImage__huge{width:100px;height:100px} .-cx-PRIVATE-uiSquareImage__large{width:50px;height:50px} .-cx-PRIVATE-uiSquareImage__medium{width:32px;height:32px} .-cx-PRIVATE-uiSquareImage__small{width:24px;height:24px} a.-cx-PRIVATE-uiPopover__trigger{display:block} .highlight{background:#fff8cc;border-bottom:1px solid #ffe222;padding-bottom:1px } .uiP{line-height:16px} .uiPLarge{line-height:18px} .uiTypeaheadView{display:block;left:0;position:absolute;top:100%;width:100%} .uiContextualTypeaheadView{position:static} .uiTypeaheadView ul{background:#fff;border:solid;border-width:1px 1px 2px;border -color:#333 #333 #293e6a;overflow:hidden;padding:2px 0} .uiTypeaheadView .freeform{border-top-color:#ddd;padding:2px 6px 1px;text-align: center} .uiTypeaheadView li{border:solid #fff;border-width:1px 0;color:#333;cursor:point er;display:block;min-height:1px;padding:0 6px;position:relative}

.uiTypeaheadView strong{background-color:#d8dfea;color:#3b5998} div.uiTypeaheadView .selected{background-color:#6d84b4;border-color:#3b5998} .uiTypeaheadView .selected, .uiTypeaheadView .selected a, .uiTypeaheadView .sele cted div, .uiTypeaheadView .selected span{color:#fff !important} .uiTypeaheadView .selected strong{background-color:#5670a6} .uiTypeaheadView .text, .uiTypeaheadView .subtext, .uiTypeaheadView .category{di splay:block;padding-bottom:2px} .uiTypeaheadView .category{color:#666} .uiTypeaheadView .subtext{color:#999} .uiTypeaheadView .arrow{background:transparent url(http://static.ak.fbcdn.net/rs rc.php/v2/yV/r/IJYgcESal33.png) 0 -413px;display:inline-block;height:7px;marginleft:4px;width:4px} .uiTypeaheadView .selected .arrow{background-position:0 -420px} div.uiTypeaheadView li.calltoaction{background:#f7f7f7;border-bottom:none;border -color:#ddd;display:block;min-height:1px;margin:2px 0 -2px;padding:8px;text-alig n:center} div.uiTypeaheadView li.calltoaction.selected{background:#6d84b4;border-color:#3b 5998} div.typeaheadViewLoading li.calltoaction span.text{visibility:hidden} div.typeaheadViewLoading li.calltoaction{background:#f7f7f7 url(http://static.ak .fbcdn.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.gif) no-repeat 50% 50%} div.typeaheadViewLoading li.calltoaction.selected{background:#6d84b4 url(http:// static.ak.fbcdn.net/rsrc.php/v2/y-/r/AGUNXgX_Wx3.gif) no-repeat 50% 50%} .uiTypeaheadView .bucketed ul{padding:0} .uiTypeaheadView .bucketed .header{background-color:#f2f2f2;border-top:1px solid #e2e2e2;border-bottom:none;margin-top:4px;min-height:10px;padding:2px 15px 2px 6px} .uiTypeaheadView .bucketed .header:first-child{border-top:none;margin-top:0} .uiTypeaheadView .bucketed .header .text{color:#000 !important} .uiClearableTypeahead .selected .clear{display:block} .uiClearableTypeahead .clear, .uiTypeaheadDisabled .selected .clear{display:none ;position:absolute;margin-top:-7px;right:3px;top:50%} .uiClearableTypeahead .selected{padding-right:16px} .uiTypeaheadDisabled .selected{padding-right:0} .photoTypeahead .photo{display:none;height:16px;left:3px;position:absolute;top:2 px;width:16px} .photoTypeahead .selected .photo{display:block} .photoTypeahead .selected .textInput{padding-left:23px} .photoTypeahead.uiTypeaheadDisabled .selected .photo{opacity:.30} .-cx-PRIVATE-scrollableTypeahead__ScrollableTypeaheadArea{border:0;margin-top:1p x;overflow:hidden} .-cx-PRIVATE-scrollableTypeahead__hasResults{border:1px solid #000;border-bottom :2px solid #2e396d} .-cx-PRIVATE-scrollableTypeahead__ScrollableTypeaheadArea .uiScrollableAreaConte nt ul{border:0} .-cx-PRIVATE-scrollableTypeahead__ScrollableTypeaheadArea.contentAfter::after{ba ckground-color:#fff} .uiTypeahead{background:#fff;border:solid #bdc7d8;border-width:1px 0;cursor:defa ult;position:relative} .uiTypeahead .wrap{border:solid #bdc7d8;border-width:0 1px} .uiTypeahead .innerWrap{overflow:hidden;zoom:1} .uiTypeahead .textInput{background-color:transparent;border:0;box-sizing:borderbox;outline:0;width:100%} .uiTypeahead .selected{background-color:#e2e8f6} .uiTypeaheadDisabled, .uiTypeaheadDisabled div.wrap{border-color:#ccc} .uiTypeaheadDisabled div.wrap{background:#e2e2e2} .uiTypeaheadDisabled div.wrap .textInput{color:#333} .uiTypeaheadView .basic img{display:block;float:left;padding-right:4px} div.uiTypeaheadView .basic .calltoaction{padding:3px} .uiTypeaheadView .compact li{min-height:32px;padding:2px 10px 2px 45px}

.uiTypeaheadView .compact .splitpics, .uiTypeaheadView .compact img{display:bloc k;height:32px;left:6px;position:absolute;width:32px} .uiTypeaheadView .compact .text{font-weight:bold} .uiTypeaheadView .compact .details{color:#999;padding-top:0} .uiTypeaheadView .compact .detailsContents{position:relative} .uiTypeaheadView .compact .splitpic{float:left;overflow:hidden;width:15px} .uiTypeaheadView .compact .splitpics img{left:0;margin-left:-8px;position:static } .uiTypeaheadView .compact .splitpics .leftpic{margin-right:1px;width:16px} .uiTypeaheadView .compact .splitpics .toppic{height:15px;margin-bottom:1px} .uiTypeaheadView .compact .splitpics .bottompic{height:16px} .uiTypeaheadView .compact .splitpics .toppic img, .uiTypeaheadView .compact .spl itpics .bottompic img{margin-top:-8px} .uiTypeaheadView .compact .friendlist img{background-color:transparent} .uiTypeaheadView .search li{min-height:50px;padding:2px 30px 2px 63px} .uiTypeaheadView .search li a{outline:none} .uiTypeaheadView .search li a:hover{text-decoration:none} .uiTypeaheadView .search .playButton{height:30px;left:16px;top:12px;position:abs olute;width:30px;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yw/ r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-position:0 0} .uiTypeaheadView .search a:hover .playButton{background-image:url(http://static. ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;backg round-position:0 -30px} .uiTypeaheadView .search .music_playing a .playButton{background-image:url(http: //static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-rep eat;background-position:0 -60px} .uiTypeaheadView .search .music_playing a:hover .playButton{background-image:url (http://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat: no-repeat;background-position:0 -90px} .uiTypeaheadView .search .song.async_saving a .playButton{background-image:url(h ttp://static.ak.fbcdn.net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no -repeat;background-position:0 -120px} .uiTypeaheadView .search .song.async_saving a .playLoader{position:absolute;widt h:14px;height:14px;left:24px;top:20px;background:url(http://static.ak.fbcdn.net/ rsrc.php/v2/yp/r/DrGcdjdlpCl.gif) no-repeat} .uiTypeaheadView .search img{background-color:#eceff5;display:block;height:50px; left:6px;position:absolute;width:50px} .uiTypeaheadView .search .text{color:#3b5998;font-weight:bold} .uiTypeaheadView .search .subtext{font-size:9px} .uiTypeaheadView .search .preCategory{color:#999} .uiTypeaheadView .search .seeMore{color:#3b5998;font-size:11px;font-weight:bold; padding-bottom:0;padding-right:7px} .uiTypeaheadView .search .question{min-height:14px;padding:3px 30px 3px 6px} .uiTypeaheadView .search .question .text{display:inline} .uiTypeaheadView .search .question .subtext{display:inline;margin-left:5px;white -space:nowrap} .uiTypeaheadView .search .websuggestion{min-height:14px;padding:6px 30px 5px 6px } .uiTypeaheadView .search .websuggestion .text{display:inline} .uiTypeaheadView .search .websuggestion .subtext{display:inline;margin-left:5px; white-space:nowrap} .uiTypeaheadView .search .group .photo, .uiTypeaheadView .search .friendlist .ph oto{background-color:transparent} .uiTypeaheadView .search .text .alias{color:#999;font-weight:normal} .uiTypeaheadView .debug{background-color:#fff;border:1px solid #d8dfea} div div.wideSearchTypeaheadView{width:475px} .uiTypeaheadView.mainSearchTypeaheadView .search .report{width:15px;height:15px; right:4px;top:4px;position:absolute;background-image:url(http://static.ak.fbcdn. net/rsrc.php/v2/yw/r/1XasGjTsZ3i.png);background-repeat:no-repeat;background-pos ition:-86px -17px}

.uiBlingBox{border-bottom:1px solid #fff;display:inline-block;padding:3px 4px 3p x 2px} .uiBlingBox:hover{text-decoration:none;background-color:#eceff5;border-bottom:1p x solid #e5eaf1} .uiBlingBox .text{line-height:11px;vertical-align:text-bottom} .uiBlingBoxSm .text{font-size:9px} .uiBlingBox .img{margin-right:2px;vertical-align:text-top} .uiBlingBoxSm .img{vertical-align:text-bottom} .uiBlingBox .emptyBling{margin-right:0 !important} .autoexpand_mode .feedback_toggle_link{display:none} .UIActionLinks .uiLinkButton, .UIActionLinks .uiLinkButton input, .UIActionLinks .uiLinkButton input:hover{color:#6b84b4;font-weight:normal;vertical-align:basel ine} .collapsed_comments .uiUfi{display:none} .uiUfi{padding-top:2px;width:398px;margin:0} .uiUfi .ufiItem{background-color:#edeff4;margin-top:1px;padding:5px 5px 4px} ul.uiUfi .ufiItem{border-bottom:1px solid #d2d9e7} .uiUfi .uiUfiSpamItem{background-color:#f6f7fa} .uiUfi .uiUfiRemovedSpamItem{background-color:#edeff4} .uiUfi .uiUfiSpamItem .actorName, .uiUfi .uiUfiSpamItem .actorPic, .uiUfi .uiUfi SpamItem .commentBody, .uiUfi .uiUfiSpamItem .uiLinkSubtle{opacity:.5} .uiUfi .uiUfiUnseenItem{border-left:2px solid #a8b2ce;padding-left:3px} .uiUfi .highlightComment{background-color:#fff9d7} .uiUfi .ufiNub{margin-bottom:-2px;margin-top:0} .uiUfi .ufiNub i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y7/ r/UvyvLtJTQzO.png);background-repeat:no-repeat;background-position:0 0;display:b lock;height:5px;margin-left:17px;width:9px} .uiUfi .uiUfiViewAll .uiLinkButton, .uiUfi .uiUfiViewReposts a{display:block} .uiUfi .uiUfiWrapViewAll .uiLinkButton input{text-align:left;white-space:normal} .uiUfiAddComment .actorPic{float:left;margin-right:6px} .uiUfiAddComment .commentArea{padding:0 !important} .uiUfiAddComment .commentBox{padding:0 8px 0 0} .uiUfiAddComment .commentBtn{float:right} .uiUfiAddComment .textBox{display:block;margin:0;width:100%} .child_is_active .uiUfiAddCommentCollapsed .textBox, .child_was_focused .comment Area .inlineShareBox .textBox, .uiUfiAddComment .textBox{height:29px} .uiUfiAddCommentCollapsed .textBox{height:14px} .hidden_add_comment .uiUfiAddComment, .uiUfiAddCommentCollapsed .actorPic, .uiUf iAddComment .commentBtn, .uiUfiAddCommentCollapsed .sendOnEnterTip, .uiUfiAddCom mentCollapsed .commentBoxSubtitle, .commentUndoTip{display:none} .child_is_active .uiUfiAddCommentCollapsed .actorPic, .child_is_active .uiUfiAdd Comment .commentBtn, .child_is_active .sendOnEnterTip, .child_is_active .comment BoxSubtitle, .commentUndone .child_is_focused .commentUndoTip{display:block} .commentUndone .commentBoxSubtitle, .commentUndone .sendOnEnterTip{display:none} .uiUfiAddTip{padding-top:1px;padding-left:0} .uiUfiAddComment .mentionsAddComment .commentBox{padding:0} .uiUfiAddComment .mentionsAddComment .mentionsTypeahead .wrap{padding:3px} .uiUfiAddComment .mentionsAddComment .textBoxContainer{background-color:#fff} .uiUfiAddComment .mentionsAddComment .textBox{padding:0} .uiUfiComment .commentContent{padding-top:1px} .uiUfiComment .actorName{font-weight:bold} .uiUfiComment .commentActions{padding-top:2px} .uiUfiComment .deleteAction, .uiUfiComment .commentHideSelector .uiSelectorButto n, .uiUfiComment .commentRemoverButton{opacity:0} .uiUfiComment .socialContext a{color:gray} .uiUfiComment:hover .deleteAction, .uiUfiComment:hover .commentHideSelector .uiS electorButton, .uiUfiSpamItem .commentRemoverButton, .uiUfiSpamItem .commentHide Selector .uiSelectorButton, .uiUfiComment .commentHideSelector .openToggler .uiS electorButton, .uiUfiComment:hover .commentRemoverButton{opacity:1} .uiUfiComment .commentHideSelector.editSelector .uiCloseButton{background-image:

url(http://static.ak.fbcdn.net/rsrc.php/v2/yh/r/rkQF27utoCR.png)} .uiUfiPreview .commentContent{display:block;overflow:hidden;width:auto} ul.fbUfiNoBorder div.ufiItem, ul.fbUfiNoBorder li.ufiItem{border-bottom:0} .uiUfiFailureShow, .uiUfiCommentFailed .uiUfiFailureHide{display:none} .uiUfiCommentFailed .uiUfiFailureShow{display:block} .uiUfiCommentFailed{background:#f2f2f2 !important;border-left:2px solid #aaa7a2} .uiUfiCommentFailed .actorName, .uiUfiCommentFailed{color:gray} .uiUfiCommentFailed .uiUfiFailureMessage{color:#111} .uiUfiSmall .commentArea .textBox{height:14px} #bootloader_3bOLd { height: 42px; } ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=pQuN3yuTFUe.css Content-Type: text/css; charset=utf-8; name=pQuN3yuTFUe.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y5/r/pQuN3yuTFUe.css Content-Transfer-Encoding: 8bit /*1337880785,176832694*/ .fbDarkWidget .fan_box, .fbDarkWidget .uiStream .uiStreamMessage{color:gray} .fbDarkWidget .fan_box a{color:#ccc} .fan_box .full_widget{border:solid 1px #94a3c4;background:white} .fan_box .full_widget .connect_top{background:#eceff5} .fan_box .connect_top{padding:10px 10px 8px 10px} .pts .fan_box .connect_top{padding:5px 10px 8px 5px} .fan_box .profileimage{float:left;width:40px;height:40px;padding:0 10px 0 0;marg in:0 0 4px 0} .fan_box .connect_action{padding:0 0 0 8px} .fan_box .connect_action .name{line-height:15px;font-size:14px;font-weight:bold} .fan_box .connect_button{padding-top:5px} .fan_box .connect_button .uiButton{margin:1px 0 0 0} .fan_box .connect_action a.undo{margin:0 0 0 3px} .fan_box .page_stream, .fan_box .page_stream_short{text-align:center;padding:0 5 px;overflow:auto;border-top:solid 1px #d8dfea;position:relative} .fan_box .storyContent{text-align:left} .fan_box .page_stream{overflow-x:hidden} .fan_box .page_stream .loader{padding-top:20px} .fan_box .UIIntentionalStory{background:transparent;text-align:left;padding:7px 0 0 0} .fan_box .UIIntentionalStory .UIMediaItem_UnknownWidth{max-width:100px} .fan_box .connections{border-top:solid 1px #d8dfea;padding:10px 0 4px 10px;min-h eight:150px} .pts .fan_box .connections{padding:5px 0 4px 5px} .fan_box .connections .connections_grid{padding-top:5px} .fan_box .connections_grid .grid_item{float:left;padding:0 5px 8px 0;overflow:hi dden;width:50px} .fan_box .connections_grid .grid_item .name{font-size:9px;color:gray;overflow:hi dden;padding-top:2px;text-align:center;white-space:nowrap} .fan_box .connect_span{margin:0 0 1px} .fan_box .connect_widget .connect_widget_text{padding:0} .fan_box .connect_widget td.connect_widget_vertical_center{height:20px} .fan_box .connect_widget .connect_widget_interactive_area{margin:5px 0 0} .connect_widget{overflow:hidden} .connect_widget .connect_widget_facebook_logo_menubar{background-color:#3b5998;b order:1px solid #244588;border-bottom:none;margin-bottom:-1px;position:relative} .connect_widget .connect_widget_facebook_logo{padding:3px 0 5px 6px;float:left}

.connect_widget .connect_widget_facebook_logo span{background:transparent url(ht tp://static.ak.fbcdn.net/rsrc.php/v2/yx/r/zZEOQP4uOC1.gif) no-repeat scroll 0 0; display:block;height:17px;width:90px} .connect_widget .connect_widget_facebook_logo:hover span{background-position:lef t -17px} .connect_widget .connect_widget_menu_options{float:right} .connect_widget .connect_widget_menu_link{float:left;height:17px;margin-right:5p x;padding:5px 5px 3px 5px;color:#fff;font-size:11px} .connect_widget .connect_widget_menu_link:hover{background-color:#5c75aa;text-de coration:none} #bootloader_Ta701 { height: 42px; } ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=abs0-FmBxja.css Content-Type: text/css; charset=utf-8; name=abs0-FmBxja.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yP/r/abs0-FmBxja.css Content-Transfer-Encoding: 8bit /*1344457758,176833975*/ .fan_box .uiStreamStory .uiStreamAttachments .photoRedesignAspect .img, .fan_box .uiStreamStory .uiStreamAttachments .photoRedesignCover .img, .fan_box .photoRedesign .img, .uiStreamStory .videoRedesign .uiVideoThumb img{width:100%;left:0 !important} .fan_box .uiStream .shareRedesign .shareRedesignMedia{display:none} .fan_box .uiStream .shareRedesign .attachmentText, .fan_box .uiStream .shareRedesignContainer .shareText{max-height:100%} .fbDarkWidget .uiStreamRedesign .uiStreamMessage .messageBody{color:gray} .fan_box .uiStream .shareRedesign, .fan_box .uiStreamStory .photoRedesign, .connect_widget .fan_box .uiStream .uiStreamStory .photoWrap{width:auto;height:a uto} #bootloader_mQxB4 { height: 42px; } ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAEfCAMAAAB/DLYyAAABI1BMVEX////////+ /v40NDSbq8tsg7Pl6fLq7fQ2WJnS2um7u7tmZmbh4eFzirbCyt9kZGTZ2dlERERV VVVRbKQeRYC9yN6+vr5geKyqqqrDw8M7WZji5vDT09Oenp5NTU1jeKN1i7jd3d3H x8fU1NTu7u7e4u5id6LLy8umpqbo6OjP2Oh1dXWJiYm4uLjOzs7b29vp6elof7HA wMCRkZFYapHFzOLy8vKMjIygoKCNoMV+fn6rq6t7j7rl5eW/yuBlZWWuu9W/xduN jY3u8fbT2eji4uKpqam8vLx3d3eoqKh7e3u9vb3u8PbX19dKaKTk5OSKioqkpKQ5 VZS0tLT29vZPaqNVcan6+vq2wNxwg6+MnsNXapCwvttXV1ded65paWmQpMmBnePY AAAAAXRSTlMAQObYZgAAAyRJREFUeF61juWW40oMBtNtO8yMg8zMsMx0men9n2K/ dhyNlBwle5LcmsmPqiOpHZsJryS9bIeCZz3hzwsIcsB6nvdvuOwBOOgPeTc3UB4K hWmC5xV+dGEhegWTW67CZ8O+kN6JDQWLP85fKRmcWWt3wmXroIzlWg3KQyo1TbA2 9Z8L8egVTPiuwmcj+Vn6P3YoJG1SuJ9DkAM2mUwuhctJAAf9oeT1NZSHXG5SWBqd wNFc3oVfolcw+dsSKnw6Gm2iEQYIwUPOmJwIJv5sQ4ZnYqXimx2/wgIujNzYQVdC EGLWg0AES6FR/aEa/TdicyQbywIWNrPFbreYZaG7Cbos1ENYaDlvsRCTAwjbgIft bLGYRaEAR2EBCh5DayTEpCOcAh5Oe1tbPVZavdegxwIUjAsx6Qh/Ah7ONoJg4+wx 1BcDsMgCFOgBkKs8AOGpeDzFy0MCjA+pRAIr6lHgA+G1TqfGix9PJOLjQy0epxVx VH/laT7/VNzIn5/ntSBX9FfaQHjl+LjCSzsA40MlCGiFHZ2eu+qAu36otgdUeWj4 DRn8RE2GF75csdbKid/t8I0EWwkc1g8CERIUxJfOnfSwp9Oqp8lplpyKvk9XZuVn IvL1jxHrKC50iEH4I4SCNgHUiZcDfzl4F7Th+A4GClwWBFkQ/n8yw57JqJ4hp1ly Kvo+XZk3HhG5ITwtFEImTgB9QgYUh1PnBApcFAQJNuZIhoi8TGS00J+fOAHUCRkA nXROoMBFQZBgY46kiciXibQW+vMTJ4A6IQOgk84JFLgoCBK5MZlXQPjqysoqL69W

gB5oRT8KykD4Qqm0wEu5BPRAK/pRsAyE36+t3fOyvAb0QCv6UcnJ9wNO+gEygIKB GBaMMe7HJwCbAKHrE3RDf4VQvnSEkjeg1A/eIxQMxLBgjHE/PgHYBAhdn6Ab+iuE 8qXfQPM7ohkGCMHDB2PeiGB+PXonw5FYuTo0F4dXLLwxZuTGBboS9kPMT/v7Smi+ JZqxb6P8hCiHAULw8NyYSxHMl/p7GepiZffWHNzusnBpzMiNA3Ql7IWYT3t7Sij/ TeDTvwLENdsHdW/D3AAAAABJRU5ErkJggg== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=2K_HjPZsdxy.css Content-Type: text/css; charset=utf-8; name=2K_HjPZsdxy.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yQ/r/2K_HjPZsdxy.css Content-Transfer-Encoding: 8bit /*1345562226,173217057*/ .fbGalleryPrev, .fbDisabledGalleryPrev{float:left;margin-top:50px;opacity:.7} .fbGalleryPrev:hover{opacity:1} .fbGalleryNext, .fbDisabledGalleryNext{float:right;margin-top:50px;opacity:.7} .fbGalleryNext:hover{opacity:1} .fbConnectWidgetTopmost{border:1px solid #aaa;border-top-color:#315c99;overflow: hidden;padding:0;position:relative} div.fbDarkWidget{background-color:transparent} .fbDarkWidget .fbWidgetTitle{color:#fff} .fbDarkWidget a, .fbDarkWidget .profileName{color:#fff} .fbDarkWidget a.uiLinkSubtle{color:gray} .fbDarkWidget a.fbCommentOverlayLink{color:#3b5998} div.fbConnectWidgetHeaderTitle{border-width:0 0 1px} div.ConnectActivityLogin{border-width:0 0 1px;zoom:1} .fbRecommendationWidgetContent .recommendations_metadata{padding-top:3px;color:g ray} .fbDarkWidget .fbRecommendationWidgetContent .recommendations_metadata{color:#cc c} .fbGalleryImage{max-height:125px;max-width:140px} .fbShowBothHidden{display:none} .fbRecommendationsContainer{display:none} .fbShowBothRecommendationsHighlighted .fbRecommendationsContainer{display:inline } .fbShowBothRecommendationsHighlighted .fbActivityContainer{display:none} .fbActivityContainer{display:inline} .fbGalleryRecommendationsFacepile{position:relative} .fbGalleryRecommendationsFooter{width:150px} .fbGalleryRecommendationsImageBlock{display:block;margin-left:auto;margin-right: auto;text-align:center;height:125px} .fbGalleryRecommendationsImageContainer{width:140px;height:125px;background:#ede ff4 url(http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/DxzglMoaWwG.png) repeat 0 0; overflow:hidden;display:inline-block} .fbDarkWidget .fbGalleryRecommendationsImageContainer{background-position:-125px 0} .fbGalleryRecommendationsNode{height:275px} .fbGalleryRecommendationsText{padding-top:3px;height:64px} .fbShowBothActivityHeader{display:none} .fbShowBothRecommendationsHighlighted .fbShowBothActivityHeader{display:inline} .fbShowBothRecommendationsHeader{display:inline} .fbShowBothRecommendationsHighlighted .fbShowBothRecommendationsHeader{display:n one} .fbDarkWidget div.ConnectActivityLogin{border-color:#303030;background-color:#00 0} .fbProfilePic{height:35px;width:35px} .fbImageContainer{width:35px;height:35px;background:#edeff4 url(http://static.ak .fbcdn.net/rsrc.php/v2/yD/r/DxzglMoaWwG.png) no-repeat 0 0;overflow:hidden} .fbDarkWidget .fbImageContainer{background-position:-35px 0}

.fbConnectWidgetHeaderTitle{color:#1c2a47;border:1px solid #c6cedd;padding-botto m:7px;padding-top:8px;cursor:default} .fbConnectWidgetHeaderTitleBranded{background:#3b5998;color:#fff;cursor:default; padding-bottom:5px;padding-top:7px} .fbDarkWidget .fbConnectWidgetHeaderTitle{background-color:#333;border:1px solid #444} .fbLoginButton{float:left} .ConnectActivityLoginMessage{color:#666;line-height:14px;vertical-align:top;zoom :1} .fbDarkWidget .ConnectActivityLoginMessage{color:gray} .fbConnectWidgetFooter{bottom:0;cursor:default;position:absolute;width:100%} .transparent_widget .fbDarkWidget .fbConnectWidgetFooter{background-color:transp arent} .fbConnectWidgetFooter .fbFooterBorder{border-top:1px solid #ccc;margin:0 6px;pa dding:4px 3px} .fbDarkWidget .fbConnectWidgetFooter .fbFooterBorder{border-top:1px solid #444} .fbConnectWidgetContent, .fbImageContainer img{visibility:hidden} .fbConnectWidgetContent, .fbGalleryRecommendationsImageContainer img{visibility: hidden} div.fbHalfPage{overflow:hidden} div.fbAdminOptions{float:right} body.transparent_widget{background-color:transparent;overflow:hidden} body.plugin.transparent_widget{overflow-y:hidden} .connect_widget{background-color:transparent} .connect_widget .connect_widget_facebook_favicon{background:url(http://static.ak .fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) no-repeat -1px -47px transparent;di splay:block;height:14px;padding:0 0 0 0;width:14px;position:absolute;left:-1px} body.transparent_widget .generic_dialog_popup, .connect_widget .generic_dialog_popup{width:400px} .fbFeedbackContent.fbDarkWidget{border:none} .fbFeedbackContent .async_saving ul, .fbFeedbackContent .async_saving .indicator , .fbFeedbackContent .async_saving .action_links{background:url(http://static.ak .fbcdn.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.gif) no-repeat right} .fbFeedbackContent.fbDarkWidget .composerHider{border-bottom:1px solid #666;bord er-top:1px solid #666} .fbFeedbackContent .composerHider{border-bottom:1px solid #ccc;border-top:1px so lid #ccc;margin:0;padding:9px 0 7px} .fbFeedbackContent .composerHider .uiSelector{margin:-3px 1px} .fbFeedbackContent .composerHider .uiSelector .uiSelectorButton, .fbFeedbackCont ent .composerHider .uiSelector .uiSelectorButton:active, .fbFeedbackContent .com poserHider .uiSelector .uiSelectorButton:focus, .fbFeedbackContent .composerHide r .uiSelector .uiSelectorButton:hover{background-image:url(http://static.ak.fbcd n.net/rsrc.php/v2/y_/r/98Bjm1vovS7.png);background-repeat:no-repeat;background-p osition:right -446px;background-color:transparent;border:none;box-shadow:none;ma rgin:0;outline:0;padding:2px 20px 2px 0} .fbFeedbackContent .composerHider .uiSelector .uiSelectorButton .uiButtonText{co lor:#333} .fbFeedbackContent.fbDarkWidget .composerHider .uiSelector .uiSelectorButton .ui ButtonText{color:#fff} .fbFeedbackContent .composerHider .uiSelector .itemLabel{font-weight:normal} .fbFeedbackContent .composerHider .uiSelector .checked .itemLabel{font-weight:bo ld} .fbFeedbackContent .composerHider a{font-weight:bold} .fbFeedbackContent .fbThirdPartyIcon{position:relative;right:1px;top:4px} .fbCommentContext .fbCommentContextPosts{overflow-x:hidden;overflow-y:auto;max-h eight:400px} .fbCommentContext .fbCommentContextPosts .fbTopLevelComment{padding-top:0} .fbCommentContext .composerGrid{width:100%} .fbCommentContext .composerTight{width:0} .fbCommentContext .composerReply .uiButton{margin-right:4px}

.fbFeedbackContent .composer{background-color:transparent;background-color:rgba( 190, 190, 190, .2);border:solid #e9e9e9;border-width:1px 0;padding:7px 10px 7px 69px;position:relative} .fbFeedbackContent.fbDarkWidget .composer{background-color:#333;border-color:#66 6} .fbFeedbackContent .fbFeedbackPosts .composer{margin-left:-10px} .fbFeedbackContent .fbFeedbackPostsContainer .fbFeedbackPosts{padding:0} .fbFeedbackContent .noTopBorder{border-top:0 !important} .fbDarkWidget .fbCommentContext .composer{background-color:#555;border:none} .fbCommentContext .composer{background-color:#f2f2f2;border:1px solid #ccc;margi n-top:4px;padding-bottom:4px;padding-top:4px;padding-left:70px;position:relative } .fbFeedbackContent .composer .viewerProfilePic{background-color:#ddd;margin:2px 0 0 0;padding:0 !important;position:absolute;left:10px} .fbFeedbackContent.fbDarkWidget .fbFeedbackTypeahead, .fbFeedbackContent.fbDarkW idget .fbFeedbackTypeahead .wrap{border-color:#434343} .fbFeedbackContent.fbDarkWidget .fbFeedbackMentions .mentionsTextarea, .fbFeedba ckContent .fbFeedbackMentions .mentionsTextarea{border-width:0;padding:0;margin: 0;box-shadow:none;background-color:transparent} .fbFeedbackContent.fbDarkWidget .fbFeedbackMentions{background-color:#000} .fbFeedbackContent .fbFeedbackMentions{background-color:#fff;margin:2px 0} .fbFeedbackContent .fbFeedbackMentions .innerWrap{padding:3px} .fbFeedbackContent .fbFeedbackMentions .highlighter{left:0;top:0} .fbFeedbackContent.fbDarkWidget .fbFeedbackMentions .highlighter b{background-co lor:#444} .fbCommentContext .textwrapper, .fbFeedbackContent .textwrapper{padding:0 8px 0 0} .fbFeedbackContent .postToProfile{float:left;position:relative;min-width:135px} .fbFeedbackContent .postToProfile input{position:relative;top:2px} .fbFeedbackContent div.commentas{color:gray;float:right;margin:4px 6px} .fbFeedbackContent .indicator{float:left;margin:10px 0 0 -45px;position:absolute } .fbFeedbackContent select.commentas{float:right;margin:1px 6px} .hideCommentas .commentas{display:none} .fbCommentContext.fbDarkWidget .composer textarea, .fbFeedbackContent.fbDarkWidg et .composer textarea{color:#fff;background-color:#000;border:1px solid #434343} .fbCommentContext .composer textarea, .fbFeedbackContent .composer textarea{bord er-width:0;border:1px solid;border-color:#899bc5;padding:3px;width:100%} .fbFeedbackContent .replywrapper{padding:0 8px 0 0} .fbCommentContext .viewerProfilePic{float:left} .fbCommentContext .replywrapper{width:100%} .fbCommentContext .replywrappermargin{margin:0 9px} .fbCommentContext .replywrappermargin .textarea{margin-left:-4px} .fbFeedbackContent.fbDarkWidget .composerReply{border-top:1px solid #666} .fbFeedbackContent .composerReply{border-top:1px solid #e9e9e9} .fbFeedbackContent .composerReply{padding-top:8px} .fbFeedbackContent .composerReply textarea{width:100%} .fbFeedbackContent .postContent .action_links{margin-bottom:8px} .fbFeedbackContent .postBlingBox{border:none;bottom:1px;cursor:text;padding:0;po sition:relative} .fbFeedbackContent .postBlingBox:hover{background-color:transparent;border:none} .fbFeedbackContent .fbUpDownVoteAfterLogin{display:inline} .fbFeedbackContent .fbFeedbackPager{margin-left:0} .fbFeedbackContent .fbFeedbackPager .fbFeedbackPagerLink{padding:8px} .fbFeedbackContent .fbFeedbackReplyPager .fbFeedbackPagerLink{padding:5px 8px} .fbFeedbackContent .fbFeedbackPager .fbFeedbackPagerLink:hover{text-decoration:n one} .fbFeedbackContent .postReplies .pagerLoader{padding-left:2px} .fbFeedbackContent{min-height:160px} .fbCommentContext .fbFeedbackContent{min-height:0}

.fbFeedbackContent .fbFeedbackPosts{padding:0 0 0 10px} .fbFeedbackContent .star{height:11px;width:11px} .fbFeedbackContent .followLinkInlineCheck, .fbFeedbackContent .followLinkInlineC heckDark{margin-right:4px} .fbFeedbackContent .post{margin-top:4px} .fbFeedbackContent .post input{margin-left:0} .fbCommentContext .post .uiSelector, .fbCommentContext .cancel .uiSelector, .fbF eedbackContent .post .uiSelector, .fbCommentContext .post .uiButton, .fbCommentC ontext .cancel .uiButton, .fbFeedbackContent .post .uiButton{float:right} .fbCommentContext .post .uiSelector .uiButton, .fbCommentContext .cancel .uiSele ctor .uiButton, .fbFeedbackContent .post .uiSelector .uiButton{float:none} .fbFeedbackContent .post label.desc{font-weight:normal;position:absolute;top:4px } .fbFeedbackContent .profileName{font-size:11px} .fbFeedbackContent .fbFeedbackPost{border:solid #e2e2e2;border-width:1px 0 0;cle ar:both;padding-bottom:0 !important;padding-top:10px} .fbFeedbackContent.fbDarkWidget .fbFeedbackPost{border-color:#555} .fbFeedbackContent li.fbTopLevelComment:first-of-type{border-width:0} .fbFeedbackContent li.fbTopLevelComment:last-of-type{margin-bottom:-5px} .fbDarkWidget .fbFeedbackReplies .fbFeedbackPost{border-color:#444} .fbFeedbackReplies .fbFeedbackPost{border-width:0 0 1px 0;border-color:#e9e9e9} .fbFeedbackReply form, .fbFeedbackContent .postReply, .postReplies{margin-top:8p x} .postReplies .uiMorePagerLight .uiMorePagerPrimary:hover{background-color:transp arent;background-color:rgba(225, 228, 237, .6)} .postReplies .uiMorePagerInverted .uiMorePagerPrimary, .postReplies .uiMorePager Inverted .uiMorePagerLoader{background-color:transparent;border-width:1px 0 0 0; border-color:#444} .fbFeedbackContent .uiMorePagerInverted .uiMorePagerPrimary:hover{background-col or:#444;border-color:#555} .fbDarkWidget .closeButton .uiCloseButton, .fbDarkWidget .closeButton .openToggl er .uiCloseButton, .fbDarkWidget .closeButtonAfterLogin .uiCloseButton{border:1p x solid #000;margin:0} .fbFeedbackContent .postContainer:hover .closeButton, .fbFeedbackContent .postCo ntainer:hover .closeButtonAfterLogin{visibility:visible} .fbFeedbackContent .postContainer .closeButton, .fbFeedbackContent .postContaine r .closeButtonAfterLogin{float:right;visibility:hidden} .fbFeedbackPost{position:relative} .fbFeedbackPost .postContent{margin-top:5px} .fbDarkWidget .fbFeedbackPost .postText{color:#ccc} .fbFeedbackPost .postText{color:#1a1a1a;line-height:14px;margin:0 28px 5px 0} .fbFeedbackPost .postActor{background-color:#ededed;margin-bottom:8px;margin-rig ht:11px} .fbDarkWidget .postActor{background-color:#333} .fbFeedbackReplyPager{height:16px;margin-bottom:8px} .fbFeedbackContent .fbConnectWidgetFooter{position:static} .fbFeedbackContent .fbConnectWidgetFooter .fbFooterBorder{margin:5px 0 0 0} .fbTopLevelComment .fbFeedbackReplies .fbCommentReply{border-width:1px 0 0} .fbFeedbackContent .fbCommentOverlay{border-style:solid;border-width:1px;positio n:absolute;top:0;left:0;bottom:0;right:0;opacity:.90;font-size:12px} .fbFeedbackContent .fbReportedByUser{background-color:#fff;border-color:#eee} .fbFeedbackContent .fbRecentlyBlacklisted{background-color:#444;border-color:#1a 1a1a} .fbFeedbackContent .fbRecentlyPublicized{background-color:#e4ffe2;border-color:# d2f1d0} .fbFeedbackContent .fbRecentlyPrivatized{background-color:#fffbe8;border-color:# f7e0ff} .fbFeedbackContent .fbCommentOverlayInsert{position:absolute;top:50%;margin-top: -0.5em;text-align:center;width:100%} .fbFeedbackContent .fbCommentDownvotedButVisible .postText{color:gray}

.fbFeedbackContent .fbCommentOverlayDark{color:#000} .fbFeedbackContent .fbCommentOverlayLight{color:#fff} .fbFeedbackContent .fbCommentOverlayLight a:link, .fbFeedbackContent .fbCommentO verlayLight a:hover, .fbFeedbackContent .fbCommentOverlayLight a:visited, .fbFee dbackContent .fbCommentOverlayLight a:active{color:#999} .fbCommentsEditSettings .uiInfoTable .label{width:145px;vertical-align:middle} .fbCommentsEditSettings .uiInfoTable tr{border-top:1px solid #ccc} .fbCommentsEditSettings .uiInfoTable tr:first-child{border:none} .fbCommentsEditSettings .uiInfoTable th{padding:10px 5px 10px 0} .fbCommentsEditSettings .uiInfoTable td{padding:10px 0 10px 5px} .fbCommentsEditSettings .uiInfoTable tr:first-child th, .fbCommentsEditSettings .uiInfoTable tr:first-child td{padding-top:0} .fbCommentsEditSettings .uiInfoTable tr:nth-last-child(2) th, .fbCommentsEditSet tings .uiInfoTable tr:nth-last-child(2) td{padding-bottom:0} .fbCommentsEditSettings .uiInfoTable tr:last-child, .fbCommentsEditSettings .uiI nfoTable tr.custom_blacklist{border:none} .fbCommentsEditSettings .uiInfoTable tr.custom_blacklist th, .fbCommentsEditSett ings .uiInfoTable tr.custom_blacklist td{padding:0 5px 10px 5px} .fbDarkWidget .warning a{color:gray} .fbFeedbackContent .closeButton .editSelector .uiCloseButton{background-image:ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yh/r/rkQF27utoCR.png)} .fbFeedbackPost .postContainer .fbCommentEditor textarea{padding:3px;width:100%; border:none} .fbFeedbackPost .postContainer .fbCommentEditor{padding:7px 10px 7px 10px;min-he ight:0} .fbFeedbackPost .postContainer .fbCommentEditor .textBoxContainer{background-col or:#fff} .fbFeedbackPost .postContainer .fbCommentEditor .highlighter{font-size:11px;font -weight:normal} .sp_1gdwow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yj/r/xDAL yUmU86u.png);background-repeat:no-repeat;display:inline-block;height:50px;width: 50px} .sx_f22afc{background-position:-0px -0px} .sx_428187{width:11px;height:10px;background-position:-0px -153px} .sx_caf525{width:9px;height:5px;background-position:-34px -153px} .sx_103165{width:10px;height:10px;background-position:-12px -153px} .sx_2ab8db{width:10px;height:10px;background-position:-23px -153px} .sx_a41dce{background-position:-0px -51px} .sx_f88658{background-position:-0px -102px} .sp_comments{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yi/r/U9 AwDhGgiju.png);background-repeat:no-repeat;display:inline-block;height:16px;widt h:16px} .sx_comments_favicon{background-position:-0px -153px} .sx_comments_cfavicon{width:14px;height:14px;background-position:-0px -187px} .sx_comments_yahoo{background-position:-17px -153px} .sx_comments_aol{background-position:-34px -153px} .sx_comments_msft{background-position:-0px -170px} .sx_comments_pyahoo{width:50px;height:50px;background-position:-0px -0px} .sx_comments_paol{width:50px;height:50px;background-position:-0px -51px} .sx_comments_pmsft{width:50px;height:50px;background-position:-0px -102px} .sx_comments_star{width:11px;height:10px;background-position:-0px -202px} .sx_comments_darkstar{width:11px;height:10px;background-position:-28px -187px} .sx_comments_arrowb{width:9px;height:5px;background-position:-33px -202px} .sx_comments_arroww{width:9px;height:5px;background-position:-23px -202px} .sx_comments_arrowl{width:5px;height:3px;background-position:-28px -198px} .sx_comments_like{width:15px;height:13px;background-position:-33px -170px} .sx_comments_darklike{width:15px;height:13px;background-position:-17px -170px} .sx_comments_subscribe{width:12px;height:14px;background-position:-15px -187px} .sx_comments_subscribedark{width:10px;height:10px;background-position:-40px -187 px}

.sx_comments_followLinkInlineCheck{width:9px;height:11px;background-position:-0p x -213px} .sx_comments_followLinkInlineCheckDark{width:10px;height:10px;background-positio n:-12px -202px} .sp_recommendations{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/ yM/r/tc6kQtD6Y3L.png);background-repeat:no-repeat;display:inline-block;height:14 px;width:14px} .sx_recommendations_favicon{background-position:-0px -0px} .uiMorePagerInverted .uiMorePagerPrimary, .uiMorePagerInverted .uiMorePagerLoader{padding:6px 5px 10px;border:1px solid #4 44} .uiMorePagerInverted .uiMorePagerPrimary:hover{background-color:#444} .uiMorePagerInverted .uiMorePagerSecondary{margin:6px 5px} div.hidden{display:none} .auto_resize_iframe input.inputcancel{margin-left:10px} #bootloader_f8XWm { height: 42px; } ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=r_6JumMR_qC.css Content-Type: text/css; charset=utf-8; name=r_6JumMR_qC.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/r_6JumMR_qC.css Content-Transfer-Encoding: 8bit /*1344460347,176820407*/ .connect_comment_widget{margin:0;padding:5px 0;position:relative} .connect_comment_widget .nub{background:url(http://static.ak.fbcdn.net/rsrc.php/ v2/yv/r/agyQHs6yLID.gif);height:6px;width:9px;padding:0;margin:0;line-height:0;p osition:absolute;z-index:2;top:0;visibility:hidden} .connect_comment_widget .side_nub{background:transparent url(http://static.ak.fb cdn.net/rsrc.php/v2/yn/r/vAOEfR4cWQM.gif) no-repeat 0 0;height:20px;width:6px;pa dding:0;margin:0;left:-5px;line-height:0;position:absolute;z-index:2;top:14px} .connect_comment_widget_rtl .side_nub{background:transparent url(http://static.a k.fbcdn.net/rsrc.php/v2/yK/r/R95msRfVr6a.gif) no-repeat 0 0} .connect_comment_widget .comment_content{background:white;border-color:#333333 # 333333 #283e6c;border-style:solid;border-width:1px 1px 2px;zoom:1} .connect_comment_widget .connect_comment_widget_text{padding:8px 8px 4px} .connect_comment_widget .connect_comment_widget_custom_text{color:gray} .connect_comment_widget .connect_comment_widget_placeholder_input{width:304px;co lor:gray;line-height:16px;height:20px} .connect_comment_widget .connect_comment_widget_placeholder_input_region{padding :8px 8px 5px} .connect_comment_widget .connect_comment_widget_user_pic{display:block;float:lef t;height:auto;padding:0 5px 0 0;width:50px} .connect_comment_widget .connect_comment_widget_full_input_textarea{height:50px; width:310px} .connect_comment_widget .connect_comment_widget_full_input_region{padding:8px 8p x 5px} .connect_comment_widget textarea.connect_comment_widget_disabled{color:gray} .connect_comment_widget.like_button_dark textarea.connect_comment_widget_disable d{color:#dedede} .connect_comment_widget div.connect_comment_share_preview{padding-left:55px;padd ing-top:6px} .connect_comment_widget div.connect_comment_widget_button_region{padding:8px 8px 5px;text-align:right;background-color:#f2f2f2;border-top:1px solid #bdc7d8} .connect_comment_widget_checkbox_region div.uiinputlabel{display:inline-block;fl oat:left} .connect_comment_widget.like_button_dark div.connect_comment_widget_button_regio n{background-color:#333;border-top:1px solid #666} .like_button_dark .nub, .like_button_dark .connect_widget_comment_box_upward_nub

{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yL/r/7vbl1usLlV8.gi f)} .like_button_dark .side_nub{background:transparent url(http://static.ak.fbcdn.ne t/rsrc.php/v2/yB/r/Gvy8rtIdNBK.gif) no-repeat 0 0;left:-4px} .connect_comment_widget_rtl.like_button_dark .side_nub{background:transparent ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yp/r/E-2vs4qfO7d.gif) no-repeat 0 0} .like_button_dark .comment_content{background:#111;border:1px solid #666;borderbottom:2px solid #ccc;color:#ccc} .like_button_dark .connect_comment_widget_placeholder_input{border:1px solid #50 5050;background:#505050;color:#fff} .like_button_dark .connect_comment_widget_full_input_textarea, .like_button_dark .connect_comment_widget_placeholder_input{background-color:#000;border-color:#4 34343;color:#fff} .like_button_dark .connect_comment_widget_full_input_textarea{color:#fff} .like_button_dark a{color:#fff} .connect_comment_widget .connect_comment_widget_title{font-size:12px;font-weight :bold;margin-top:-2px} .connect_comment_widget.like_button_dark .connect_comment_widget_title{color:#ff f} .connect_comment_widget .connect_comment_widget_description, .connect_comment_wi dget .connect_comment_widget_href{font-size:11px;line-height:11px;margin-bottom: 6px} .connect_comment_widget .connect_comment_widget_description{color:#000} .connect_comment_widget.like_button_dark .connect_comment_widget_description{col or:#fff} .like_button_dark .connect_comment_widget_href{color:gray} .connect_widget .connect_widget_interactive_area{border-collapse:collapse} .connect_widget td.connect_widget_vertical_center{border-spacing:0;font-size:11p x;line-height:normal;padding:0} .connect_widget td.connect_widget_button_cell{vertical-align:top} .connect_widget td.connect_widget_confirm_cell{padding-top:4px} .connect_widget .connect_button_slider{position:relative;zoom:1} .connect_widget .connect_widget_button_cell .connect_slide_hide_content{overflow :hidden;width:1px;margin-right:0} .connect_widget .connect_slide_hide_content .connect_button_container{margin-lef t:1px} .button_count .connect_widget_interactive_area .connect_widget_facebook_favicon, .button_count .connect_widget_interactive_area .connect_widget_text{float:left; position:static} a.connect_widget_like_button{display:block;float:left;border-radius:3px;padding: 4px 5px;border:1px solid #000} .button_count a.connect_widget_like_button{padding:2px 4px} a.connect_widget_like_button span{line-height:14px} a.connect_widget_like_button:hover{text-decoration:none} .connect_widget_number_cloud{position:relative;background:#fff;border:1px solid #d3d3d3;height:25px;padding-top:7px;text-align:center} .like_widget_dark div.connect_widget_number_cloud{background-color:#d7d7d7;borde r-color:#d7d7d7} div.connect_widget_number_cloud table.connect_widget_number_cloud_summary{margin -left:auto;margin-right:auto} div.connect_widget_number_cloud table.connect_widget_number_cloud_summary td{fon t-size:13px} .thumbs_up_icon{width:15px;height:15px;margin-right:2px;background:url(http://st atic.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) -1px -32px no-repeat} .like_widget_dark .thumbs_up_icon{background-position:-1px -2px} .like_widget_dark div.connect_widget_number_cloud_extension a{color:#333} div.connect_widget_number_cloud .connect_widget_text{padding-left:0} .connect_widget_number_cloud_nub{position:absolute;z-index:2;height:7px;width:7p x;bottom:-7px;left:5px} .connect_widget_number_cloud_nub s, .connect_widget_number_cloud_nub i{border:so

lid transparent;border-top-color:#d3d3d3;border-width:5px;display:block;position :relative} .connect_widget_number_cloud_nub i{left:0;top:-12px;border-top-color:#fff} .like_widget_dark .connect_widget_number_cloud_nub s{border-top-color:#d7d7d7} .like_widget_dark .connect_widget_number_cloud_nub i{display:none} .connect_widget_offscreen{position:absolute;top:-10000px} div.connect_widget_number_cloud_extension{font-size:11px;height:30px;margin-left :4px;margin-right:4px;margin-top:6px} div.connect_widget_number_cloud_extension_icon{margin-left:2px;margin-top:3px} div.connect_widget_number_cloud_extension_text{border-color:#dedede;border-width :1px 0 0 0;border-style:solid;line-height:11px;margin-top:1px;text-align:center} div.connect_widget_number_cloud_extension_text table{width:100%} div.connect_widget_number_cloud_extension_text td{height:30px;text-align:center; vertical-align:middle} div.connect_widget_number_cloud_extension span.like_reminder{color:#777;font-siz e:9px} .like_widget_dark div.connect_widget_number_cloud_extension span.like_reminder{c olor:#333;font-size:9px} table.connect_widget_button_count_summary, table.connect_widget_simple_summary{b ackground-color:#eceef5;color:#000;font-size:11px;height:21px} table.connect_widget_button_count_summary div.thumbs_up{background:url(http://st atic.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) no-repeat 3px -32px #eceef5; height:15px;width:18px} td.connect_widget_simple_including div.simple_liked{background:url(http://static .ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) no-repeat 3px -47px #eceef5;heig ht:15px;width:18px} .like_button_simple .connect_widget_like_button .liketext{background:url(http:// static.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) no-repeat 0 -47px #eceef5} .connect_widget_rtl table.connect_widget_button_count_summary div.thumbs_up{back ground-position:-1px 0} table.connect_widget_button_count_summary div.undo{background-color:#eceef5;heig ht:21px;width:18px} .like_button_dark table.connect_widget_button_count_summary div.undo{backgroundcolor:#d7d7d7} table.connect_widget_button_count_summary label.undo_button{margin-left:6px;marg in-top:4px} table.connect_widget_button_count_summary div.summary_text{padding-left:3px;padd ing-right:6px;white-space:nowrap} table.connect_widget_simple_summary div.summary_text{padding-left:3px;padding-ri ght:6px;white-space:nowrap;color:#ccc} .like_button_dark table.connect_widget_button_count_summary, .like_button_dark t able.connect_widget_simple_summary{background-color:#d7d7d7} .like_button_dark table.connect_widget_button_count_summary div.thumbs_up{backgr ound:transparent url(http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png ) no-repeat 3px -3px} .connect_widget_rtl .like_button_dark table.connect_widget_button_count_summary div.thumbs_up{background-position:-1px -3px} .connect_widget_button_count_count{background:#fff;border:1px solid #d1d1d1;floa t:left;font-weight:normal;height:14px;margin-left:1px;min-width:15px;padding:1px 2px 1px 2px;text-align:center;line-height:14px;white-space:nowrap} .like_button_dark div.connect_widget_button_count_count{background-color:#d7d7d7 ;border-color:#d7d7d7} .connect_widget_button_count_nub{float:left;position:relative;z-index:2;height:0 ;width:5px;top:-5px;left:2px} .connect_widget_button_count_nub s, .connect_widget_button_count_nub i{border:so lid transparent;border-right-color:#d7d7d7;border-width:4px 5px 4px 0;top:1px;di splay:block;position:relative} .connect_widget_button_count_nub i{left:2px;top:-7px;border-right-color:#fff} .like_button_dark .connect_widget_button_count_nub i{display:none} td.connect_widget_button_count_excluding{padding:0}

td.connect_widget_button_count_including, td.connect_widget_simple_including{pad ding:0} td.connect_widget_button_count_including .connect_widget_button_count_count.noGr ayOut{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v2/yp/r/qDH 1xoDhFBF.gif) no-repeat 4px 2px;padding-left:22px;padding-right:4px} .connect_widget_rtl td.connect_widget_button_count_including .connect_widget_but ton_count.noGrayOut{background:transparent url(http://static.ak.fbcdn.net/rsrc.p hp/v2/yp/r/qDH1xoDhFBF.gif) no-repeat 4px 2px;padding-right:22px;padding-left:4p x} .connect_widget_like_button .vertical{display:block;top:-6px;left:0;margin:0 3px -6px 0;position:relative;padding:3px 4px 4px 3px;border-top:solid 1px;border-bo ttom:solid 1px} .button_count .connect_widget_like_button .vertical{padding:2px 3px 3px 2px} .connect_widget_like_button .horizontal{height:100%;width:100%;position:absolute ;display:block;top:-3px;left:-3px;padding-left:1px;border-left:solid 1px;borderright:solid 1px} .connect_widget_like_button .corner_mask{overflow:hidden;width:3px;height:3px;po sition:absolute;display:block} .connect_widget_like_button .corner{background-image:url(http://static.ak.fbcdn. net/rsrc.php/v2/y7/r/ql9vukDCc4R.png);height:6px;width:6px;display:block} .connect_widget_like_button .topleft{top:-6px;left:-3px} .connect_widget_like_button .topleft .corner{margin:0 0} .connect_widget_like_button .topright{top:-6px;right:0} .connect_widget_like_button .topright .corner{margin:0 0 0 -3px} .connect_widget_like_button .bottomright{bottom:0;right:0} .connect_widget_like_button .bottomright .corner{margin:-3px 0 0 -3px} .connect_widget_like_button .bottomleft{bottom:0;left:-3px} .connect_widget_like_button .bottomleft .corner{margin:-3px 0 0 0} .connect_widget_like_button .liketext{background:url(http://static.ak.fbcdn.net/ rsrc.php/v2/y7/r/ql9vukDCc4R.png) -1px -33px no-repeat;color:#3b5998;display:blo ck;padding-left:17px;white-space:nowrap} .connect_widget_rtl .connect_button_container .liketext{background:url(http://st atic.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) 34px -33px no-repeat} .connect_widget_like_button .liketextwithimage img{margin-bottom:-2px;margin-rig ht:4px;width:13px} .hidden .connect_widget_like_button .liketextwithimage img{height:0;margin:0;pad ding:0;width:0} .connect_widget_like_button .fbLikeButtonTrackingPixel{display:inline;height:0;w idth:0} .button_count .like_button_dark .like_button_no_like .liketext, .button_count .c onnect_widget_like_button .liketext{background-position:left -47px;margin-left:1px} .connect_widget .like_button_no_like .piece, .connect_widget .like_button_no_lik e{background-color:#eceef5;border-color:#cad4e7} .connect_widget .like_button_no_like .corner{background-position:10px -89px} .connect_widget a.like_button_no_like:hover .piece, .connect_widget a.like_butto n_no_like:hover{background-color:#ebedf4;border-color:#9dacce} .connect_widget .like_button_no_like:hover .corner{background-position:10px -95p x} .connect_widget .like_button_pressed, .connect_widget .like_button_pressed .piec e{background-color:#ced4e6;border-color:#94a5ca} .connect_widget .like_button_pressed .corner{background-position:10px 55px} .connect_widget .like_button_like .corner{background-position:10px 49px} .connect_widget .like_button_dark .like_button_no_like, .connect_widget .like_bu tton_dark .like_button_no_like .piece{background-color:#d7d7d7;border-color:#cad 4e7} .connect_widget .like_button_dark .like_button_no_like .corner{background-positi on:10px -217px} .connect_widget .like_button_dark .liketext{color:#333;background-position:left -3px;margin-left:-1px}

.connect_widget .like_button_dark .like_button_no_like:hover, .connect_widget .l ike_button_dark .like_button_no_like:hover .piece{background-color:#d9d9d9;borde r-color:#e9e9e9} .connect_widget .like_button_dark .like_button_no_like:hover .corner{backgroundposition:10px -217px} .connect_widget .like_button_dark .like_button_no_like_pressed, .connect_widget .like_button_dark .like_button_no_like_pressed .piece{background-color:#a8a8a8;b order-color:#a8a8a8;border-top-color:#8f8f8f} .connect_widget .like_button_dark .like_button_no_like_pressed .corner{backgroun d-position:10px 80px} .connect_widget .like_button_dark .like_button_like .corner{background-position: 10px 74px} .connect_widget .connect_text_wrapper{position:relative} .connect_widget div.connect_confirmation_cell{padding:0;margin:0} .connect_widget div.connect_confirmation_cell_like{padding-left:0;position:relat ive;left:-1px} .connect_widget div.connect_confirmation_cell_no_like{padding-left:7px} .connect_widget .vertical_centering{padding-top:5px} .connect_widget .connect_widget_text{display:block;padding-left:17px;line-height :14px} .button_count .connect_widget_interactive_area .connect_widget_text{padding-left :0;font-weight:bold} .connect_widget .like_button_dark .connect_widget_text, .connect_widget .like_bu tton_dark .connect_widget_confirmation{color:gray} .connect_widget .like_button_dark .connect_widget_text a{color:#fff} .connect_widget .connect_widget_connect_button{float:left} .connect_widget .connect_bar_widget_interactive_area{float:left} .connect_widget .connect_bar_widget_text_cell{width:400px} .connect_widget .connect_widget_icon{padding:4px 0 4px 4px;vertical-align:middle } .connect_widget a.connect_widget_link_inactive{color:gray;text-decoration:none;c ursor:default} .connect_widget a.connect_widget_error_text{color:#a00;font-weight:bold} .transparent_widget .uiBoxLightblue{background-color:transparent;background-colo r:rgba(165, 175, 200, .2)} .transparent_widget .uiBoxWhite, .transparent_widget .fbConnectWidgetFooter{back ground-color:transparent;background-color:rgba(255, 255, 255, .2)} div.connect_widget_comment_box_nub{background:transparent url(http://static.ak.f bcdn.net/rsrc.php/v2/yn/r/vAOEfR4cWQM.gif) no-repeat 0 0;height:12px;left:-6px;p osition:absolute;top:6px;width:20px;z-index:3} div.connect_widget_comment_box_upward_nub{background:transparent url(http://stat ic.ak.fbcdn.net/rsrc.php/v2/yv/r/agyQHs6yLID.gif) no-repeat 0 0;height:12px;left :5px;position:absolute;top:-6px;width:20px;z-index:3} .connect_widget_rtl div.connect_widget_comment_box_nub{background:transparent ur l(http://static.ak.fbcdn.net/rsrc.php/v2/yK/r/R95msRfVr6a.gif) no-repeat 0 0;lef t:-20px} .connect_widget div.connect_widget_comment_box{background-color:#fff;border-colo r:#000;border-style:solid;border-width:1px 1px 2px 1px;position:relative;z-index :100} .connect_widget div.connect_widget_comment_box.like_button_dark{background-color :#111;color:#ccc;border-color:#666} .connect_widget div.like_button_dark input.connect_widget_comment_textinput{back ground-color:#666;border-color:#666;color:#dedede} .connect_widget div.connect_widget_header_text{float:left;height:20px;overflow:h idden;padding-left:7px;padding-top:3px;width:200px} .connect_widget div.connect_widget_cancel_button{cursor:pointer;float:right;padd ing-right:7px;padding-top:3px} .connect_widget div.connect_widget_comment_text_area_div{padding-left:7px;paddin g-top:2px} .connect_widget div.connect_widget_comment_area{padding:8px}

.connect_widget .connect_widget_comment_textinput{width:325px} .connect_widget .connect_widget_comment_summary{padding:7px 5px 7px 5px} .connect_widget .connect_widget_comment_button{margin-left:-1px} .connect_widget .connect_widget_comment_close_button{margin-left:2px} .connect_widget .like_button_dark .connect_widget_comment_close_button{backgroun d-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yE/r/htZktl244wt.png);backgro und-repeat:no-repeat;opacity:.7} .connect_widget .like_button_dark .connect_widget_comment_close_button:hover{opa city:1} .connect_widget textarea.connect_widget_comment_text_area{height:30px;width:476p x} .connect_widget .connect_widget_image{height:30px;width:30px;vertical-align:bott om} .connect_widget .connect_widget_name{text-align:center} .connect_widget .connect_widget_sample_connection{float:left;padding-right:3px;w idth:30px;padding-top:5px} .connect_widget .connect_widget_user_not_connected{display:none} .connect_widget .connect_bar_widget_sample_connections{float:right} .connect_widget .connect_widget_whats_this{color:#999;font-size:9px;padding-top: 4px} .connect_widget .connect_widget_whats_this a:hover{color:#3b5998;text-decoration :none} .connect_widget .page_stream img{height:auto} .connect_widget_like_button .liketext{background:url(http://static.ak.fbcdn.net/ rsrc.php/v2/y7/r/ql9vukDCc4R.png) -1px -33px no-repeat} .connect_widget a.like_button_no_like:hover .piece, .connect_widget a.like_butto n_no_like:hover{background-color:#eceef5;border-color:#9dacce} .connect_widget .like_button_like , .connect_widget .like_button_like .piece{background-color:#eee;border-color:#ddd ;cursor:default} .connect_widget .like_button_dark .like_button_like , .connect_widget .like_button_dark .like_button_like .piece{background-color:#444 ;border-color:#555;cursor:default} .connect_widget .like_button_like .corner{background-position:10px -229px} .connect_widget .like_button_dark .like_button_like .corner{background-position: 10px -223px} .connect_widget .like_button_like .liketext{background-image:none;clear:right;co lor:#aaa} .connect_widget .tombstone_cross{background:url(http://static.ak.fbcdn.net/rsrc. php/v2/y7/r/ql9vukDCc4R.png) no-repeat 0 -128px;display:block;float:left;height: 12px;margin-right:3px;width:14px;z-index:99} .connect_widget .tombstone_cross_static{cursor:default} .like_button_no_like .tombstone_cross{display:none} .like_button_like .tombstone_cross{display:block} .connect_widget .like_button_dark .like_button_like .tombstone_cross{background: url(http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png) no-repeat 0 -15 6px} .connect_widget .like_button_like .tombstone_cross:hover{background-position:0 235px;cursor:pointer} .connect_widget .like_button_like .tombstone_cross_static:hover{background-posit ion:0 -128px;cursor:default} .connect_widget .like_button_simple .like_button_like .tombstone_cross:hover{bac kground-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc4R.png);b ackground-position:0 -128px;cursor:auto;height:12px;margin-left:0;margin-right:3 px;margin-top:0;width:14px} .connect_widget .like_button_dark .like_button_like .tombstone_cross:hover{backg round-position:0 -247px} .connect_widget .connect_button_container .like_button_like .liketext, .connect_widget .connect_widget_connect_button .like_button_like .liketext{paddi ng-left:17px}

.connect_widget_comment_box div.connect_widget_comment_box_nub{background:none} .connect_widget .like_button_dark .like_button_like .liketext{color:#666} div.connect_widget div.connect_confirmation_cell_like{padding-left:7px} .fbSendButton{display:inline-block} #LikePluginPagelet .fbSendButton{display:block} .fbSendButton .btnLink{display:block;white-space:nowrap;line-height:14px} .fbSendButtonBig .btnLink{padding:4px 5px 4px 2px} .fbSendButtonSmall .btnLink{padding:2px 3px 2px 2px} body.transparent_widget{background-color:transparent} .fbSendButton .btnLink{border:1px solid #cad4e7;border-radius:3px} .fbSendButtonLight .btnLink{background-color:#eceef5} .fbSendButtonLight .btnLink:hover{border-color:#9dacce} .fbSendButtonLight.fbSendButtonSelected .btnLink, .fbSendButtonLight.fbSendButto nSelected .btnLink:hover{background-color:#eee;border-color:#ddd;color:#aaa} .fbSendButtonDark .btnLink{background-color:#c7c7c7;color:#333} .fbSendButtonDark .btnLink:hover{background-color:#d9d9d9} .fbSendButtonDark.fbSendButtonSelected .btnLink, .fbSendButtonDark.fbSendButtonS elected .btnLink:hover{background-color:#444;border-color:#555;color:#666} .fbSendButton .btnLink:hover{text-decoration:none} .fbSendButton .msgIcon, .fbSendButton .fbIcon{background:no-repeat scroll transp arent;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y7/r/ql9vukDCc 4R.png);float:left;margin-right:3px;height:13px} .fbSendButton .msgIcon{width:16px} .fbSendButton .fbIcon{width:12px} .fbSendButtonLight .msgIcon{background-position:0 -141px} .fbSendButtonLight.fbSendButtonRTL .msgIcon{background-position:34px -141px} .fbSendButtonLight.fbSendButtonSelected .msgIcon{background-position:1px -202px} .fbSendButtonLight.fbSendButtonSelected.fbSendButtonRTL .msgIcon{background-posi tion:35px -202px} .fbSendButtonDark .msgIcon{background-position:1px -170px} .fbSendButtonDark.fbSendButtonRTL .msgIcon{background-position:35px -170px} .fbSendButtonDark.fbSendButtonSelected .msgIcon{background-position:1px -186px} .fbSendButtonDark.fbSendButtonSelected.fbSendButtonRTL .msgIcon{background-posit ion:35px -186px} .fbSendButtonLight .fbIcon{background-position:0 -47px} .fbSendButtonLight.fbSendButtonRTL .fbIcon{background-position:34px -47px} .fbSendButtonLight.fbSendButtonSelected .fbIcon{background-position:0 -260px} .fbSendButtonLight.fbSendButtonSelected.fbSendButtonRTL .fbIcon{background-posit ion:34px -260px} .fbSendButtonDark .fbIcon{background-position:0 -47px} .fbSendButtonDark.fbSendButtonRTL .fbIcon{background-position:34px -47px} .fbSendButtonDark.fbSendButtonSelected .fbIcon{background-position:0 -274px} .fbSendButtonDark.fbSendButtonSelected.fbSendButtonRTL .fbIcon{background-positi on:34px -274px} .fbSendButtonBig .fbSendBG{padding:3px 5px 4px 2px} .fbSendButtonSmall .fbSendBG{padding:2px 3px 2px 3px} .fbSendButtonLight .btnLink .fbSendBG{background-color:#eceef5} .fbSendButtonLight.fbSendButtonSelected .btnLink .fbSendBG, .fbSendButtonLight.f bSendButtonSelected .btnLink:hover .fbSendBG{background-color:#eee} .fbSendButtonDark .btnLink .fbSendBG{background-color:#c7c7c7} .fbSendButtonDark .btnLink:hover .fbSendBG{background-color:#d9d9d9} .fbSendButtonDark.fbSendButtonSelected .btnLink .fbSendBG, .fbSendButtonDark.fbS endButtonSelected .btnLink:hover .fbSendBG{background-color:#444} .fbSendButton .fbSendContainer{position:relative} .fbSendButton .horizontal{position:absolute;top:0;bottom:0;left:1px;right:1px;bo rder-top:1px solid;border-bottom:1px solid} .fbSendButton .vertical{position:absolute;top:1px;bottom:1px;left:0;right:0;bord er-left:1px solid;border-right:1px solid} .fbSendButton .border_piece{border-color:#cad4e7} .fbSendButtonLight .btnLink:hover .border_piece{border-color:#9dacce}

.fbSendButtonLight.fbSendButtonSelected .btnLink .border_piece, .fbSendButtonLig ht.fbSendButtonSelected .btnLink:hover .border_piece{border-color:#ddd} .fbSendButtonDark.fbSendButtonSelected .btnLink .border_piece, .fbSendButtonDark .fbSendButtonSelected .btnLink:hover .border_piece{border-color:#555} .fbSendButtonBoxCount{margin-top:10px} #bootloader_crLSX { height: 42px; } ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=GVOPjoPQ-KP.js Content-Type: application/x-javascript; charset=utf-8; name=GVOPjoPQ-KP.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y5/r/GVOPjoPQ-KP.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDI5NzEzLDE3MzIyMDM4OSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIis4eWpSIl0pOyB9CgppZigh QXJyYXkuaXNBcnJheSlBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGEpe3JldHVybiBP YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk9PSdbb2JqZWN0IEFycmF5 XSc7fTsKaWYoIUFycmF5LnByb3RvdHlwZS5tYXApQXJyYXkucHJvdG90eXBlLm1h cD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT0nZnVuY3Rpb24nKXRocm93IG5l dyBUeXBlRXJyb3IoKTt2YXIgYyxkPXRoaXMubGVuZ3RoLGU9bmV3IEFycmF5KGQp O2ZvcihjPTA7YzxkOysrYylpZihjIGluIHRoaXMpZVtjXT1hLmNhbGwoYix0aGlz W2NdLGMsdGhpcyk7cmV0dXJuIGU7fTtpZighQXJyYXkucHJvdG90eXBlLmZvckVh Y2gpQXJyYXkucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXt0aGlzLm1h cChhLGIpO307aWYoIUFycmF5LnByb3RvdHlwZS5maWx0ZXIpQXJyYXkucHJvdG90 eXBlLmZpbHRlcj1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT0nZnVuY3Rpb24n KXRocm93IG5ldyBUeXBlRXJyb3IoKTt2YXIgYyxkLGU9dGhpcy5sZW5ndGgsZj1b XTtmb3IoYz0wO2M8ZTsrK2MpaWYoYyBpbiB0aGlzKXtkPXRoaXNbY107aWYoYS5j YWxsKGIsZCxjLHRoaXMpKWYucHVzaChkKTt9cmV0dXJuIGY7fTtpZighQXJyYXku cHJvdG90eXBlLmV2ZXJ5KUFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbihh LGIpe2lmKHR5cGVvZiBhIT0nZnVuY3Rpb24nKXRocm93IG5ldyBUeXBlRXJyb3Io KTt2YXIgYz1uZXcgT2JqZWN0KHRoaXMpLGQ9Yy5sZW5ndGg7Zm9yKHZhciBlPTA7 ZTxkO2UrKylpZihlIGluIGMpaWYoIWEuY2FsbChiLGNbZV0sZSxjKSlyZXR1cm4g ZmFsc2U7cmV0dXJuIHRydWU7fTtpZighQXJyYXkucHJvdG90eXBlLnNvbWUpQXJy YXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYSE9J2Z1 bmN0aW9uJyl0aHJvdyBuZXcgVHlwZUVycm9yKCk7dmFyIGM9bmV3IE9iamVjdCh0 aGlzKSxkPWMubGVuZ3RoO2Zvcih2YXIgZT0wO2U8ZDtlKyspaWYoZSBpbiBjKWlm KGEuY2FsbChiLGNbZV0sZSxjKSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2U7fTtp ZighQXJyYXkucHJvdG90eXBlLmluZGV4T2YpQXJyYXkucHJvdG90eXBlLmluZGV4 T2Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmxlbmd0aDtifD0wO2lmKGI8MCli Kz1jO2Zvcig7YjxjO2IrKylpZihiIGluIHRoaXMmJnRoaXNbYl09PT1hKXJldHVy biBiO3JldHVybiAtMTt9OwppZighRGF0ZS5ub3cpRGF0ZS5ub3c9ZnVuY3Rpb24o KXtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7fTsKd2luZG93Ll9fREVWX189 d2luZG93Ll9fREVWX198fDA7CmlmKCFGdW5jdGlvbi5wcm90b3R5cGUuYmluZClG dW5jdGlvbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihhKXtpZih0eXBlb2YgdGhp cyE9J2Z1bmN0aW9uJyl0aHJvdyBuZXcgVHlwZUVycm9yKCdCaW5kIG11c3QgYmUg Y2FsbGVkIG9uIGEgZnVuY3Rpb24nKTt2YXIgYj10aGlzLGM9QXJyYXkucHJvdG90 eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Z1bmN0aW9uIGQoKXtyZXR1cm4g Yi5hcHBseShhLGMuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy Z3VtZW50cykpKTt9ZC5kaXNwbGF5TmFtZT0nYm91bmQ6JysoYi5kaXNwbGF5TmFt ZXx8Yi5uYW1lfHwnKD8pJyk7ZC50b1N0cmluZz1mdW5jdGlvbiBlKCl7cmV0dXJu ICdib3VuZDogJytiO307cmV0dXJuIGQ7fTsKCnZhciBKU09OO2lmKCFKU09OKUpT T049e307KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShqKXtyZXR1cm4gajwxMD8nMCcr ajpqO31pZih0eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9KU09OIT09J2Z1bmN0aW9u Jyl7RGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGope3JldHVybiBpc0Zp bml0ZSh0aGlzLnZhbHVlT2YoKSk/dGhpcy5nZXRVVENGdWxsWWVhcigpKyctJyth KHRoaXMuZ2V0VVRDTW9udGgoKSsxKSsnLScrYSh0aGlzLmdldFVUQ0RhdGUoKSkr J1QnK2EodGhpcy5nZXRVVENIb3VycygpKSsnOicrYSh0aGlzLmdldFVUQ01pbnV0 ZXMoKSkrJzonK2EodGhpcy5nZXRVVENTZWNvbmRzKCkpKydaJzpudWxsO307U3Ry aW5nLnByb3RvdHlwZS50b0pTT049TnVtYmVyLnByb3RvdHlwZS50b0pTT049Qm9v bGVhbi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGope3JldHVybiB0aGlzLnZh

bHVlT2YoKTt9O312YXIgYj0vW1x1MDAwMFx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3 MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1c dTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLGM9L1tcXFwiXHgwMC1ceDFmXHg3 Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAw Yy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1c dWZmZmZdL2csZCxlLGY9eydcYic6J1xcYicsJ1x0JzonXFx0JywnXG4nOidcXG4n LCdcZic6J1xcZicsJ1xyJzonXFxyJywnIic6J1xcIicsJ1xcJzonXFxcXCd9LGc7 ZnVuY3Rpb24gaChqKXtjLmxhc3RJbmRleD0wO3JldHVybiBjLnRlc3Qoaik/JyIn K2oucmVwbGFjZShjLGZ1bmN0aW9uKGspe3ZhciBsPWZba107cmV0dXJuIHR5cGVv ZiBsPT09J3N0cmluZyc/bDonXFx1JysoJzAwMDAnK2suY2hhckNvZGVBdCgwKS50 b1N0cmluZygxNikpLnNsaWNlKC00KTt9KSsnIic6JyInK2orJyInO31mdW5jdGlv biBpKGosayl7dmFyIGwsbSxuLG8scD1kLHEscj1rW2pdO2lmKHImJnR5cGVvZiBy PT09J29iamVjdCcmJnR5cGVvZiByLnRvSlNPTj09PSdmdW5jdGlvbicpcj1yLnRv SlNPTihqKTtpZih0eXBlb2YgZz09PSdmdW5jdGlvbicpcj1nLmNhbGwoayxqLHIp O3N3aXRjaCh0eXBlb2Ygcil7Y2FzZSAnc3RyaW5nJzpyZXR1cm4gaChyKTtjYXNl ICdudW1iZXInOnJldHVybiBpc0Zpbml0ZShyKT9TdHJpbmcocik6J251bGwnO2Nh c2UgJ2Jvb2xlYW4nOmNhc2UgJ251bGwnOnJldHVybiBTdHJpbmcocik7Y2FzZSAn b2JqZWN0JzppZighcilyZXR1cm4gJ251bGwnO2QrPWU7cT1bXTtpZihPYmplY3Qu cHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHIpPT09J1tvYmplY3QgQXJyYXldJyl7 bz1yLmxlbmd0aDtmb3IobD0wO2w8bztsKz0xKXFbbF09aShsLHIpfHwnbnVsbCc7 bj1xLmxlbmd0aD09PTA/J1tdJzpkPydbXG4nK2QrcS5qb2luKCcsXG4nK2QpKydc bicrcCsnXSc6J1snK3Euam9pbignLCcpKyddJztkPXA7cmV0dXJuIG47fWlmKGcm JnR5cGVvZiBnPT09J29iamVjdCcpe289Zy5sZW5ndGg7Zm9yKGw9MDtsPG87bCs9 MSlpZih0eXBlb2YgZ1tsXT09PSdzdHJpbmcnKXttPWdbbF07bj1pKG0scik7aWYo bilxLnB1c2goaChtKSsoZD8nOiAnOic6Jykrbik7fX1lbHNlIGZvcihtIGluIHIp aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbSkpe249 aShtLHIpO2lmKG4pcS5wdXNoKGgobSkrKGQ/JzogJzonOicpK24pO31uPXEubGVu Z3RoPT09MD8ne30nOmQ/J3tcbicrZCtxLmpvaW4oJyxcbicrZCkrJ1xuJytwKyd9 JzoneycrcS5qb2luKCcsJykrJ30nO2Q9cDtyZXR1cm4gbjt9fWlmKHR5cGVvZiBK U09OLnN0cmluZ2lmeSE9PSdmdW5jdGlvbicpSlNPTi5zdHJpbmdpZnk9ZnVuY3Rp b24oaixrLGwpe3ZhciBtO2Q9Jyc7ZT0nJztpZih0eXBlb2YgbD09PSdudW1iZXIn KXtmb3IobT0wO208bDttKz0xKWUrPScgJzt9ZWxzZSBpZih0eXBlb2YgbD09PSdz dHJpbmcnKWU9bDtnPWs7aWYoayYmdHlwZW9mIGshPT0nZnVuY3Rpb24nJiYodHlw ZW9mIGshPT0nb2JqZWN0J3x8dHlwZW9mIGsubGVuZ3RoIT09J251bWJlcicpKXRo cm93IG5ldyBFcnJvcignSlNPTi5zdHJpbmdpZnknKTtyZXR1cm4gaSgnJyx7Jyc6 an0pO307aWYodHlwZW9mIEpTT04ucGFyc2UhPT0nZnVuY3Rpb24nKUpTT04ucGFy c2U9ZnVuY3Rpb24oaixrKXt2YXIgbDtmdW5jdGlvbiBtKG4sbyl7dmFyIHAscSxy PW5bb107aWYociYmdHlwZW9mIHI9PT0nb2JqZWN0Jylmb3IocCBpbiByKWlmKE9i amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLHApKXtxPW0ocixw KTtpZihxIT09dW5kZWZpbmVkKXtyW3BdPXE7fWVsc2UgZGVsZXRlIHJbcF07fXJl dHVybiBrLmNhbGwobixvLHIpO31qPVN0cmluZyhqKTtiLmxhc3RJbmRleD0wO2lm KGIudGVzdChqKSlqPWoucmVwbGFjZShiLGZ1bmN0aW9uKG4pe3JldHVybiAnXFx1 JysoJzAwMDAnK24uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00 KTt9KTtpZigvXltcXSw6e31cc10qJC8udGVzdChqLnJlcGxhY2UoL1xcKD86WyJc XFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZywnQCcpLnJlcGxhY2UoLyJbXiJc XFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1b K1wtXT9cZCspPy9nLCddJykucmVwbGFjZSgvKD86Xnw6fCwpKD86XHMqXFspKy9n LCcnKSkpe2w9KGV2YWwpKCcoJytqKycpJyk7cmV0dXJuIHR5cGVvZiBrPT09J2Z1 bmN0aW9uJz9tKHsnJzpsfSwnJyk6bDt9dGhyb3cgbmV3IFN5bnRheEVycm9yKCdK U09OLnBhcnNlJyk7fTt9KCkpOwppZighSlNPTi5zdHJpbmdpZnkuX19mYilKU09O LnN0cmluZ2lmeT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7dmFyIGM9YS5hcHBs eSh0aGlzLGFyZ3VtZW50cyk7aWYoIWMpcmV0dXJuIGM7cmV0dXJuIGMucmVwbGFj ZSgvWyVcdTIwMjhcdTIwMjldL2csZnVuY3Rpb24oZCl7dmFyIGU9ZC5jaGFyQ29k ZUF0KDApLnRvU3RyaW5nKDE2KTtyZXR1cm4gJ1xcdTAwMDAnLnN1YnN0cmluZygw LDYtZS5sZW5ndGgpK2U7fSk7fWIuX19mYj10cnVlO3JldHVybiBiO30oSlNPTi5z dHJpbmdpZnkpOwppZighT2JqZWN0LmNyZWF0ZSlPYmplY3QuY3JlYXRlPWZ1bmN0 aW9uKGEpe3ZhciBiPXR5cGVvZiBhO2lmKGIhPSdvYmplY3QnJiZiIT0nZnVuY3Rp b24nKXRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdCBwcm90b3R5cGUgbWF5IG9u bHkgYmUgYSBPYmplY3Qgb3IgbnVsbCcpO3ZhciBjPW5ldyBGdW5jdGlvbigpO2Mu cHJvdG90eXBlPWE7cmV0dXJuIG5ldyBjKCk7fTtpZighT2JqZWN0LmtleXMpT2Jq

ZWN0LmtleXM9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7aWYoYiE9J29iamVj dCcmJmIhPSdmdW5jdGlvbid8fGE9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3Io J09iamVjdC5rZXlzIGNhbGxlZCBvbiBub24tb2JqZWN0Jyk7dmFyIGM9W107Zm9y KHZhciBkIGluIGEpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j YWxsKGEsZCkpYy5wdXNoKGQpO3ZhciBlPSEoe3RvU3RyaW5nOnRydWV9KS5wcm9w ZXJ0eUlzRW51bWVyYWJsZSgndG9TdHJpbmcnKSxmPVsndG9TdHJpbmcnLCd0b0xv Y2FsZVN0cmluZycsJ3ZhbHVlT2YnLCdoYXNPd25Qcm9wZXJ0eScsJ2lzUHJvdG90 eXBlT2YnLCdwcm90b3R5cGVJc0VudW1lcmFibGUnLCdjb25zdHJ1Y3RvciddO2lm KGUpZm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107aWYoT2Jq ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsaCkpYy5wdXNoKGgp O31yZXR1cm4gYzt9OwoKCmlmKCFTdHJpbmcucHJvdG90eXBlLnRyaW0pU3RyaW5n LnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKCl7aWYodGhpcz09bnVsbCl0aHJvdyBu ZXcgVHlwZUVycm9yKCdTdHJpbmcucHJvdG90eXBlLnRyaW0gY2FsbGVkIG9uIG51 bGwgb3IgdW5kZWZpbmVkJyk7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUucmVwbGFj ZS5jYWxsKHRoaXMsL15ccyt8XHMrJC9nLCcnKTt9Owp2YXIgdW5kZWYsbmF0aXZl U3BsaXQ9U3RyaW5nLnByb3RvdHlwZS5zcGxpdCxjb21wbGlhbnRFeGVjTnBjZz0v KCk/Py8uZXhlYygiIilbMV09PT11bmRlZjtTdHJpbmcucHJvdG90eXBlLnNwbGl0 PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztpZihPYmplY3QucHJvdG90eXBlLnRv U3RyaW5nLmNhbGwoYSkhPT0iW29iamVjdCBSZWdFeHBdIilyZXR1cm4gbmF0aXZl U3BsaXQuY2FsbChjLGEsYik7dmFyIGQ9W10sZT0oYS5pZ25vcmVDYXNlPyJpIjoi IikrKGEubXVsdGlsaW5lPyJtIjoiIikrKGEuZXh0ZW5kZWQ/IngiOiIiKSsoYS5z dGlja3k/InkiOiIiKSxmPTAsYT1uZXcgUmVnRXhwKGEuc291cmNlLGUrImciKSxn LGgsaSxqO2MrPSIiO2lmKCFjb21wbGlhbnRFeGVjTnBjZylnPW5ldyBSZWdFeHAo Il4iK2Euc291cmNlKyIkKD8hXFxzKSIsZSk7Yj1iPT09dW5kZWY/LTE+Pj4wOmI+ Pj4wO3doaWxlKGg9YS5leGVjKGMpKXtpPWguaW5kZXgraFswXS5sZW5ndGg7aWYo aT5mKXtkLnB1c2goYy5zbGljZShmLGguaW5kZXgpKTtpZighY29tcGxpYW50RXhl Y05wY2cmJmgubGVuZ3RoPjEpaFswXS5yZXBsYWNlKGcsZnVuY3Rpb24oKXtmb3Io dmFyIGs9MTtrPGFyZ3VtZW50cy5sZW5ndGgtMjtrKyspaWYoYXJndW1lbnRzW2td PT09dW5kZWYpaFtrXT11bmRlZjt9KTtpZihoLmxlbmd0aD4xJiZoLmluZGV4PGMu bGVuZ3RoKUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsaC5zbGljZSgxKSk7 aj1oWzBdLmxlbmd0aDtmPWk7aWYoZC5sZW5ndGg+PWIpYnJlYWs7fWlmKGEubGFz dEluZGV4PT09aC5pbmRleClhLmxhc3RJbmRleCsrO31pZihmPT09Yy5sZW5ndGgp e2lmKGp8fCFhLnRlc3QoIiIpKWQucHVzaCgiIik7fWVsc2UgZC5wdXNoKGMuc2xp Y2UoZikpO3JldHVybiBkLmxlbmd0aD5iP2Quc2xpY2UoMCxiKTpkO307CnZhciBj b25zb2xlO2lmKCFjb25zb2xlKShmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9Y29u c29sZT17bG9nOmEsaW5mbzphLHdhcm46YSxkZWJ1ZzphLGRpcjphLGVycm9yOmF9 O30pKCk7CihmdW5jdGlvbihhKXtpZihhLnJlcXVpcmUpcmV0dXJuO3ZhciBiPU9i amVjdC5wcm90b3R5cGUudG9TdHJpbmcsYz17fSxkPXt9LGU9e30sZj0wLGc9MSxo PTIsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGoo dSl7dmFyIHY9Y1t1XSx3LHgseTtpZighY1t1XSl7eT0nUmVxdWlyaW5nIHVua25v d24gbW9kdWxlICInK3UrJyInO3Rocm93IG5ldyBFcnJvcih5KTt9aWYodi53YWl0 aW5nJiZ2LnNwZWNpYWwmaCltKCk7aWYodi53YWl0aW5nKXt5PSdSZXF1aXJpbmcg bW9kdWxlICInK3UrJyIgd2l0aCB1bnJlc29sdmVkIGRlcGVuZGVuY2llcyc7dGhy b3cgbmV3IEVycm9yKHkpO31pZighdi5leHBvcnRzKXt2YXIgej12LmV4cG9ydHM9 e30sYWE9di5mYWN0b3J5O2lmKHR5cGVvZiBhYT09PSdzdHJpbmcnKXt2YXIgYmE9 JygnK2FhKycpJzthYT0oZXZhbCkoYmEpO31pZihiLmNhbGwoYWEpPT09J1tvYmpl Y3QgRnVuY3Rpb25dJyl7dmFyIGNhPVtdLGRhPXYuZGVwZW5kZW5jaWVzLGVhPWRh Lmxlbmd0aDtpZih2LnNwZWNpYWwmaCllYT1NYXRoLm1pbihlYSxhYS5sZW5ndGgp O2Zvcih4PTA7eDxlYTt4Kyspe3c9ZGFbeF07Y2EucHVzaCh3PT09J21vZHVsZSc/ djoodz09PSdleHBvcnRzJz96OmoodykpKTt9dmFyIGZhPWFhLmFwcGx5KHYuY29u dGV4dHx8YSxjYSk7aWYoZmEpdi5leHBvcnRzPWZhO31lbHNlIHYuZXhwb3J0cz1h YTt9aWYodi5yZWZjb3VudC0tPT09MSlkZWxldGUgY1t1XTtyZXR1cm4gdi5leHBv cnRzO31mdW5jdGlvbiBrKHUsdix3LHgseSx6KXtpZih2PT09dW5kZWZpbmVkKXt2 PVtdO3c9dTt1PW8oKTt9ZWxzZSBpZih3PT09dW5kZWZpbmVkKXt3PXY7aWYoYi5j YWxsKHUpPT09J1tvYmplY3QgQXJyYXldJyl7dj11O3U9bygpO31lbHNlIHY9W107 fXZhciBhYT1jW3VdO2lmKGFhKXtpZih6KWFhLnJlZmNvdW50Kz16O3JldHVybjt9 ZWxzZSBpZighdiYmIXcmJnope2VbdV09KGVbdV18fDApK3o7cmV0dXJuO31lbHNl e2FhPXtpZDp1fTthYS5yZWZjb3VudD0oZVt1XXx8MCkrKHp8fDApO2RlbGV0ZSBl W3VdO31hYS5mYWN0b3J5PXc7YWEuZGVwZW5kZW5jaWVzPXY7YWEuY29udGV4dD15 O2FhLnNwZWNpYWw9eDtjW3VdPWFhO3AodSk7fWZ1bmN0aW9uIGwodSx2LHcpe2so

dSx2LHVuZGVmaW5lZCxnLHcsMSk7fWZ1bmN0aW9uIG0oKXt2YXIgdT17fSx2O2Zv cih2IGluIGQpaWYoaS5jYWxsKGQsdikpaWYoY1t2XSYmIXVbdl0mJmNbdl0uc3Bl Y2lhbCZoKW4oe30sdix1KTt9ZnVuY3Rpb24gbih1LHYsdyl7d1t2XT0xO3ZhciB4 PWRbdl0seTtpZigheClyZXR1cm47dVt2XT0xO2Zvcih5IGluIHgpaWYoaS5jYWxs KHgseSkpe2lmKCFjW3ldLnNwZWNpYWwmaCljb250aW51ZTtpZih1W3ldKXtkZWxl dGUgeFt5XTtjW3ldLndhaXRpbmctLTtpZighY1t5XS53YWl0aW5nKXEoeSk7fWVs c2Ugbih1LHksdyk7fXVbdl09MDt9ZnVuY3Rpb24gbygpe3JldHVybiAnX19tb2Rf XycrZisrO31mdW5jdGlvbiBwKHUpe3ZhciB2PWNbdV0sdz0wO2Zvcih2YXIgeD0w O3g8di5kZXBlbmRlbmNpZXMubGVuZ3RoO3grKyl7dmFyIHk9di5kZXBlbmRlbmNp ZXNbeF07aWYoIWNbeV18fGNbeV0ud2FpdGluZyl7ZFt5XXx8KGRbeV09e30pO2lm KCFkW3ldW3VdKXcrKztkW3ldW3VdPTE7fX12LndhaXRpbmc9dztpZighdylxKHUp O31mdW5jdGlvbiBxKHUpe3ZhciB2PWNbdV07aWYodi5zcGVjaWFsJmcpaih1KTt2 YXIgdz1kW3VdLHg9W107aWYodyl7ZGVsZXRlIGRbdV07Zm9yKHZhciB5IGluIHcp aWYoaS5jYWxsKHcseSkpaWYoIS0tY1t5XS53YWl0aW5nKXgucHVzaCh5KTt9Zm9y KHZhciB6PTA7ejx4Lmxlbmd0aDt6KyspcSh4W3pdKTt9ZnVuY3Rpb24gcih1LHYp e2NbdV09e2lkOnV9O2NbdV0uZXhwb3J0cz12O31yKCdtb2R1bGUnLDApO3IoJ2V4 cG9ydHMnLDApO3IoJ2RlZmluZScsayk7cignZ2xvYmFsJyxhKTtyKCdyZXF1aXJl JyxqKTtyKCdyZXF1aXJlRHluYW1pYycsaik7cigncmVxdWlyZUxhenknLGwpO2su YW1kPXt9O2EuZGVmaW5lPWs7YS5yZXF1aXJlPWo7YS5yZXF1aXJlRHluYW1pYz1q O2EucmVxdWlyZUxhenk9bDtqLl9fZGVidWc9e21vZHVsZXM6YyxkZXBzOmR9O3Zh ciBzPWZhbHNlLHQ9ZnVuY3Rpb24odSx2LHcseCl7ayh1LHYsdyx4fHxoKTtpZihj W3VdLndhaXRpbmcmJiFzKXM9c2V0VGltZW91dChmdW5jdGlvbigpe20oKTtzPWZh bHNlO30sOSk7fTthLl9fZD1mdW5jdGlvbih1LHYsdyx4KXt2PVsnZ2xvYmFsJywn cmVxdWlyZScsJ3JlcXVpcmVEeW5hbWljJywncmVxdWlyZUxhenknLCdtb2R1bGUn LCdleHBvcnRzJ10uY29uY2F0KHYpO3QodSx2LHcseCk7fTthLl9fZT1hLl9fZDt9 KSh0aGlzKTsKZnVuY3Rpb24gYmFnb2Zob2xkaW5nKCl7fWZ1bmN0aW9uIGJhZ29m KGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhO307fUFycmF5LnByb3RvdHlw ZS5yZWR1Y2U9bnVsbDtBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQ9bnVsbDtk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NOYW1lPWRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5jbGFzc05hbWUucmVwbGFjZSgnbm9fanMnLCcnKTsKX19kKCJT aWRlYmFyUHJlbHVkZSIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXth ZGRTaWRlYmFyTW9kZTpmdW5jdGlvbihoKXt2YXIgaT1kb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQ7aWYoaS5jbGllbnRXaWR0aD5oKWkuY2xhc3NOYW1lPWkuY2xhc3NO YW1lKycgc2lkZWJhck1vZGUnO319O2UuZXhwb3J0cz1nO30pOwpfX2QoImNvcHlQ cm9wZXJ0aWVzIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyho LGksaixrLGwsbSxuKXtoPWh8fHt9O3ZhciBvPVtpLGosayxsLG1dLHA9MCxxO3do aWxlKG9bcF0pe3E9b1twKytdO2Zvcih2YXIgciBpbiBxKWhbcl09cVtyXTtpZihx Lmhhc093blByb3BlcnR5JiZxLmhhc093blByb3BlcnR5KCd0b1N0cmluZycpJiYo dHlwZW9mIHEudG9TdHJpbmchPSd1bmRlZmluZWQnKSYmKGgudG9TdHJpbmchPT1x LnRvU3RyaW5nKSloLnRvU3RyaW5nPXEudG9TdHJpbmc7fXJldHVybiBoO31lLmV4 cG9ydHM9Zzt9KTsKX19kKCJFbnYiLFsiY29weVByb3BlcnRpZXMiXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxoPXtzdGFy dDpEYXRlLm5vdygpfTtpZihhLkVudil7ZyhoLGEuRW52KTthLkVudj11bmRlZmlu ZWQ7fWUuZXhwb3J0cz1oO30pOwpfX2QoIkVycm9yVXRpbHMiLFsiRW52Il0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0VudicpLGg9W10saT1bXSxqPTEw LGs9d2luZG93LmNocm9tZSYmJ3R5cGUnIGluIG5ldyBFcnJvcigpO2Z1bmN0aW9u IGwocyl7aWYoIXMpe3JldHVybiB7fTt9ZWxzZSBpZihzLl9vcmlnaW5hbEVycm9y KXJldHVybiBzO3ZhciB0PXtsaW5lOnMubGluZU51bWJlcnx8cy5saW5lLG1lc3Nh Z2U6cy5tZXNzYWdlLG5hbWU6cy5uYW1lLHNjcmlwdDpzLmZpbGVOYW1lfHxzLnNv dXJjZVVSTHx8cy5zY3JpcHQsc3RhY2s6cy5zdGFja1RyYWNlfHxzLnN0YWNrfTt0 Ll9vcmlnaW5hbEVycm9yPXM7aWYoayYmLyhcd3szLDV9OlwvXC9bXjpdKyk6KFxk KykvLnRlc3Qocy5zdGFjaykpe3Quc2NyaXB0PVJlZ0V4cC4kMTt0LmxpbmU9cGFy c2VJbnQoUmVnRXhwLiQyLDEwKTt9Zm9yKHZhciB1IGluIHQpKHRbdV09PW51bGwm JmRlbGV0ZSB0W3VdKTtyZXR1cm4gdDt9ZnVuY3Rpb24gbSgpe3RyeXt0aHJvdyBu ZXcgRXJyb3IoJ1JFTU9WRScpO31jYXRjaChzKXt2YXIgdD1sKHMpLnN0YWNrO3Jl dHVybiB0JiZ0LnJlcGxhY2UoL1tcc1xTXSpfX2dldFRyYWNlX18uKlxuLywnJyk7 fX1mdW5jdGlvbiBuKHMsdCl7cz1sKHMpOyF0O2lmKGkubGVuZ3RoPGopaS5wdXNo KHMpO2Zvcih2YXIgdT0wO3U8aC5sZW5ndGg7dSsrKXRyeXtoW3VdKHMpO31jYXRj aCh2KXt9fWZ1bmN0aW9uIG8ocyx0LHUsdil7aWYoZy5ub2NhdGNofHwoL25vY2F0 Y2gvKS50ZXN0KGxvY2F0aW9uLnNlYXJjaCkpcmV0dXJuIHMuYXBwbHkodCx1fHxb

XSk7dHJ5e3JldHVybiBzLmFwcGx5KHQsdXx8W10pO31jYXRjaCh3KXt2YXIgeD1s KHcpO2lmKHYpdih4KTtpZihzKXguY2FsbGVlPXMudG9TdHJpbmcoKS5zdWJzdHJp bmcoMCwxMDApO2lmKHUpeC5hcmdzPVN0cmluZyh1KS5zdWJzdHJpbmcoMCwxMDAp O24oeCk7fX1mdW5jdGlvbiBwKHMsdCx1KXtuKHttZXNzYWdlOnMsc2NyaXB0OnQs bGluZTp1fSx0cnVlKTt9d2luZG93Lm9uZXJyb3I9cDtmdW5jdGlvbiBxKHMsdCl7 aC5wdXNoKHMpO2lmKCF0KWkuZm9yRWFjaChzKTt9dmFyIHI9e2hpc3Rvcnk6aSxv bmVycm9yOnAscmVwb3J0RXJyb3I6bixub3JtYWxpemVFcnJvcjpsLGdldFRyYWNl Om0sYXBwbHlXaXRoR3VhcmQ6byxhZGRMaXN0ZW5lcjpxfTtlLmV4cG9ydHM9cjt9 KTsKX19kKCJoYXNBcnJheU5hdHVyZSIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e2Z1bmN0aW9uIGcoaCl7cmV0dXJuICghIWgmJih0eXBlb2YgaD09J29iamVjdCd8 fHR5cGVvZiBoPT0nZnVuY3Rpb24nKSYmKCdsZW5ndGgnIGluIGgpJiYhKCdzZXRJ bnRlcnZhbCcgaW4gaCkmJihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo aCk9PT0iW29iamVjdCBBcnJheV0ifHwoJ2NhbGxlZScgaW4gaCl8fCgnaXRlbScg aW4gaCkpKTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiY3JlYXRlQXJyYXlGcm9tIixb Imhhc0FycmF5TmF0dXJlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J2hhc0FycmF5TmF0dXJlJyk7ZnVuY3Rpb24gaChpKXtpZighZyhpKSlyZXR1cm4g W2ldO2lmKGkuaXRlbSl7dmFyIGo9aS5sZW5ndGgsaz1uZXcgQXJyYXkoaik7d2hp bGUoai0tKWtbal09aVtqXTtyZXR1cm4gazt9cmV0dXJuIEFycmF5LnByb3RvdHlw ZS5zbGljZS5jYWxsKGkpO31lLmV4cG9ydHM9aDt9KTsKX19kKCJBcmJpdGVyIixb IkVycm9yVXRpbHMiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0ZUFycmF5RnJvbSIs Imhhc0FycmF5TmF0dXJlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J0Vycm9yVXRpbHMnKSxoPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaT1iKCdjcmVhdGVB cnJheUZyb20nKSxqPWIoJ2hhc0FycmF5TmF0dXJlJyk7aWYoIXdpbmRvdy5hc3lu Y19jYWxsYmFjayl3aW5kb3cuYXN5bmNfY2FsbGJhY2s9ZnVuY3Rpb24obSxuKXty ZXR1cm4gbTt9O2Z1bmN0aW9uIGsoKXtoKHRoaXMse19saXN0ZW5lcnM6W10sX2V2 ZW50czp7fSxfY2FsbGJhY2tzOnt9LF9sYXN0X2lkOjEsX2xpc3Rlbjp7fSxfaW5k ZXg6e319KTtoKHRoaXMsayk7fWgoayx7U1VCU0NSSUJFX05FVzonbmV3JyxTVUJT Q1JJQkVfQUxMOidhbGwnLEJFSEFWSU9SX0VWRU5UOidldmVudCcsQkVIQVZJT1Jf UEVSU0lTVEVOVDoncGVyc2lzdGVudCcsQkVIQVZJT1JfU1RBVEU6J3N0YXRlJyxM SVZFTUVTU0FHRTonbGl2ZW1lc3NhZ2UnLEJPT1RMT0FEOidib290bG9hZCcsRlVO Q1RJT05fRVhURU5TSU9OOidmdW5jdGlvbl9leHQnLHN1YnNjcmliZTpmdW5jdGlv bihtLG4sbyl7bT1pKG0pO3ZhciBwPW0uc29tZShmdW5jdGlvbih4KXtyZXR1cm4g IXh8fHR5cGVvZih4KSE9J3N0cmluZyc7fSk7aWYocClyZXR1cm4gbnVsbDtvPW98 fGsuU1VCU0NSSUJFX0FMTDt2YXIgcT1rLl9nZXRJbnN0YW5jZSh0aGlzKTtxLl9s aXN0ZW5lcnMucHVzaCh7Y2FsbGJhY2s6bix0eXBlczptfSk7dmFyIHI9cS5fbGlz dGVuZXJzLmxlbmd0aC0xO2Zvcih2YXIgcz0wO3M8bS5sZW5ndGg7cysrKXt2YXIg dD1tW3NdO2lmKCFxLl9pbmRleFt0XSlxLl9pbmRleFt0XT1bXTtxLl9pbmRleFt0 XS5wdXNoKHIpO2lmKG89PWsuU1VCU0NSSUJFX0FMTClpZih0IGluIHEuX2V2ZW50 cylmb3IodmFyIHU9MDt1PHEuX2V2ZW50c1t0XS5sZW5ndGg7dSsrKXt2YXIgdj1x Ll9ldmVudHNbdF1bdV0sdz1nLmFwcGx5V2l0aEd1YXJkKG4sbnVsbCxbdCx2XSk7 aWYodz09PWZhbHNlKXtxLl9ldmVudHNbdF0uc3BsaWNlKHUsMSk7dS0tO319fXJl dHVybiBuZXcgbChxLHIpO30sdW5zdWJzY3JpYmU6ZnVuY3Rpb24obSl7bS51bnN1 YnNjcmliZSgpO30saW5mb3JtOmZ1bmN0aW9uKG0sbixvKXt2YXIgcD1qKG0pO209 aShtKTt2YXIgcT1rLl9nZXRJbnN0YW5jZSh0aGlzKSxyPXt9O289b3x8ay5CRUhB VklPUl9FVkVOVDtmb3IodmFyIHM9MDtzPG0ubGVuZ3RoO3MrKyl7dmFyIHQ9bVtz XSx1PW51bGw7aWYobz09ay5CRUhBVklPUl9QRVJTSVNURU5UKXt1PXEuX2V2ZW50 cy5sZW5ndGg7aWYoISh0IGluIHEuX2V2ZW50cykpcS5fZXZlbnRzW3RdPVtdO3Eu X2V2ZW50c1t0XS5wdXNoKG4pO3EuX2V2ZW50c1t0XS5fc3RhdGVmdWw9ZmFsc2U7 fWVsc2UgaWYobz09ay5CRUhBVklPUl9TVEFURSl7dT0wO3EuX2V2ZW50c1t0XT1b bl07cS5fZXZlbnRzW3RdLl9zdGF0ZWZ1bD10cnVlO31lbHNlIGlmKHQgaW4gcS5f ZXZlbnRzKXEuX2V2ZW50c1t0XS5fc3RhdGVmdWw9ZmFsc2U7YS5BcmJpdGVyTW9u aXRvciYmYS5BcmJpdGVyTW9uaXRvci5yZWNvcmQoJ2V2ZW50Jyx0LG4scSk7dmFy IHY7aWYocS5faW5kZXhbdF0pe3ZhciB3PWkocS5faW5kZXhbdF0pO2Zvcih2YXIg eD0wO3g8dy5sZW5ndGg7eCsrKXt2YXIgeT1xLl9saXN0ZW5lcnNbd1t4XV07aWYo eSl7dj1nLmFwcGx5V2l0aEd1YXJkKHkuY2FsbGJhY2ssbnVsbCxbdCxuXSk7aWYo dj09PWZhbHNlKXtpZih1IT09bnVsbClxLl9ldmVudHNbdF0uc3BsaWNlKHUsMSk7 YnJlYWs7fX19fXEuX3VwZGF0ZUNhbGxiYWNrcyh0LG4pO2EuQXJiaXRlck1vbml0 b3ImJmEuQXJiaXRlck1vbml0b3IucmVjb3JkKCdkb25lJyx0LG4scSk7clt0XT12 O31yZXR1cm4gcD9yOnJbbVswXV07fSxxdWVyeTpmdW5jdGlvbihtKXt2YXIgbj1r Ll9nZXRJbnN0YW5jZSh0aGlzKTtpZighKG0gaW4gbi5fZXZlbnRzKSlyZXR1cm4g

bnVsbDtpZihuLl9ldmVudHNbbV0ubGVuZ3RoKXJldHVybiBuLl9ldmVudHNbbV1b MF07cmV0dXJuIG51bGw7fSxfaW5zdGFuY2U6bnVsbCxfZ2V0SW5zdGFuY2U6ZnVu Y3Rpb24obSl7aWYobSBpbnN0YW5jZW9mIGspcmV0dXJuIG07aWYoIWsuX2luc3Rh bmNlKWsuX2luc3RhbmNlPW5ldyBrKCk7cmV0dXJuIGsuX2luc3RhbmNlO30scmVn aXN0ZXJDYWxsYmFjazpmdW5jdGlvbihtLG4pe3ZhciBvLHA9MCxxPWsuX2dldElu c3RhbmNlKHRoaXMpLHI9ZmFsc2U7aWYodHlwZW9mIG09PSdmdW5jdGlvbicpe289 cS5fbGFzdF9pZDtxLl9sYXN0X2lkKys7cj10cnVlO31lbHNle2lmKCFxLl9jYWxs YmFja3NbbV0pcmV0dXJuIG51bGw7bz1tO31pZihqKG4pKXt2YXIgcz17fTtmb3Io dmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKylzW25bdF1dPTE7bj1zO31mb3IodmFyIHUg aW4gbil7dHJ5e2lmKHEucXVlcnkodSkpY29udGludWU7fWNhdGNoKHYpe31wKz1u W3VdO2lmKHEuX2xpc3Rlblt1XT09PXVuZGVmaW5lZClxLl9saXN0ZW5bdV09e307 cS5fbGlzdGVuW3VdW29dPShxLl9saXN0ZW5bdV1bb118fDApK25bdV07fWlmKHA9 PT0wJiZyKXtnLmFwcGx5V2l0aEd1YXJkKG0pO3JldHVybiBudWxsO31pZighcil7 cS5fY2FsbGJhY2tzW29dLmRlcG51bSs9cDt9ZWxzZSBxLl9jYWxsYmFja3Nbb109 e2NhbGxiYWNrOndpbmRvdy5hc3luY19jYWxsYmFjayhtLCdhcmJpdGVyJyksZGVw bnVtOnB9O3JldHVybiBvO30sX3VwZGF0ZUNhbGxiYWNrczpmdW5jdGlvbihtLG4p e2lmKG49PT1udWxsfHwhdGhpcy5fbGlzdGVuW21dKXJldHVybjtmb3IodmFyIG8g aW4gdGhpcy5fbGlzdGVuW21dKXt0aGlzLl9saXN0ZW5bbV1bb10tLTtpZih0aGlz Ll9saXN0ZW5bbV1bb108PTApZGVsZXRlIHRoaXMuX2xpc3RlblttXVtvXTt0aGlz Ll9jYWxsYmFja3Nbb10uZGVwbnVtLS07aWYodGhpcy5fY2FsbGJhY2tzW29dLmRl cG51bTw9MCl7dmFyIHA9dGhpcy5fY2FsbGJhY2tzW29dLmNhbGxiYWNrO2RlbGV0 ZSB0aGlzLl9jYWxsYmFja3Nbb107Zy5hcHBseVdpdGhHdWFyZChwKTt9fX19KTtm dW5jdGlvbiBsKG0sbil7dGhpcy5faW5zdGFuY2U9bTt0aGlzLl9pZD1uO31oKGwu cHJvdG90eXBlLHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe3ZhciBtPXRoaXMuX2lu c3RhbmNlLl9saXN0ZW5lcnMsbj1tW3RoaXMuX2lkXTtpZighbilyZXR1cm47Zm9y KHZhciBvPTA7bzxuLnR5cGVzLmxlbmd0aDtvKyspe3ZhciBwPW4udHlwZXNbb10s cT10aGlzLl9pbnN0YW5jZS5faW5kZXhbcF07aWYocSlmb3IodmFyIHI9MDtyPHEu bGVuZ3RoO3IrKylpZihxW3JdPT10aGlzLl9pZCl7cS5zcGxpY2UociwxKTtpZihx Lmxlbmd0aD09PTApZGVsZXRlIHFbcF07YnJlYWs7fX1kZWxldGUgbVt0aGlzLl9p ZF07fX0pO2UuZXhwb3J0cz1rO30pOwpfX2QoIkFyYml0ZXJNaXhpbiIsWyJBcmJp dGVyIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxo PXtfZ2V0QXJiaXRlckluc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fy Yml0ZXJ8fCh0aGlzLl9hcmJpdGVyPW5ldyBnKCkpO30saW5mb3JtOmZ1bmN0aW9u KGksaixrKXtyZXR1cm4gdGhpcy5fZ2V0QXJiaXRlckluc3RhbmNlKCkuaW5mb3Jt KGksaixrKTt9LHN1YnNjcmliZTpmdW5jdGlvbihpLGosayl7cmV0dXJuIHRoaXMu X2dldEFyYml0ZXJJbnN0YW5jZSgpLnN1YnNjcmliZShpLGosayk7fSx1bnN1YnNj cmliZTpmdW5jdGlvbihpKXt0aGlzLl9nZXRBcmJpdGVySW5zdGFuY2UoKS51bnN1 YnNjcmliZShpKTt9LHJlZ2lzdGVyQ2FsbGJhY2s6ZnVuY3Rpb24oaSxqKXt0aGlz Ll9nZXRBcmJpdGVySW5zdGFuY2UoKS5yZWdpc3RlckNhbGxiYWNrKGksaik7fX07 ZS5leHBvcnRzPWg7fSk7Cl9fZCgibGVnYWN5OkFyYml0ZXJNaXhpbiIsWyJBcmJp dGVyTWl4aW4iXSxmdW5jdGlvbihhLGIsYyxkKXthLkFyYml0ZXJNaXhpbj1iKCdB cmJpdGVyTWl4aW4nKTt9LDMpOwpfX2QoImZ1bmN0aW9uLWV4dGVuc2lvbnMiLFsi Y3JlYXRlQXJyYXlGcm9tIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J2NyZWF0ZUFycmF5RnJvbScpO0Z1bmN0aW9uLnByb3RvdHlwZS5jdXJyeT1mdW5j dGlvbigpe3ZhciBoPWcoYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5iaW5kLmFwcGx5 KHRoaXMsW251bGxdLmNvbmNhdChoKSk7fTtGdW5jdGlvbi5wcm90b3R5cGUuc2hp ZWxkPWZ1bmN0aW9uKGgpe2lmKHR5cGVvZiB0aGlzIT0nZnVuY3Rpb24nKXRocm93 IG5ldyBUeXBlRXJyb3IoKTt2YXIgaT10aGlzLmJpbmQuYXBwbHkodGhpcyxnKGFy Z3VtZW50cykpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKCk7fTt9O0Z1bmN0 aW9uLnByb3RvdHlwZS5kZWZlcj1mdW5jdGlvbihoLGkpe2lmKHR5cGVvZiB0aGlz IT0nZnVuY3Rpb24nKXRocm93IG5ldyBUeXBlRXJyb3IoKTtoPWh8fDA7cmV0dXJu IHNldFRpbWVvdXQodGhpcyxoLGkpO307fSwzKTsKX19kKCJpc0VtcHR5IixbXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoKXtpZihoIGluc3RhbmNl b2YgQXJyYXkpe3JldHVybiBoLmxlbmd0aD09PTA7fWVsc2UgaWYoaCBpbnN0YW5j ZW9mIE9iamVjdCl7Zm9yKHZhciBpIGluIGgpcmV0dXJuIGZhbHNlO3JldHVybiB0 cnVlO31lbHNlIHJldHVybiAhaDt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiQ1NTTG9h ZGVyIixbImlzRW1wdHkiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign aXNFbXB0eScpLGg9MjAsaT01MDAwLGosayxsPXt9LG09W10sbixvPXt9O2Z1bmN0 aW9uIHAodCl7aWYoaylyZXR1cm47az10cnVlO3ZhciB1PWRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ2xpbmsnKTt1Lm9ubG9hZD1mdW5jdGlvbigpe2o9dHJ1ZTt1LnBh

cmVudE5vZGUucmVtb3ZlQ2hpbGQodSk7fTt1LnJlbD0nc3R5bGVzaGVldCc7dS5o cmVmPSdkYXRhOnRleHQvY3NzO2Jhc2U2NCwnO3QuYXBwZW5kQ2hpbGQodSk7fWZ1 bmN0aW9uIHEoKXt2YXIgdCx1PVtdLHY9W107aWYoRGF0ZS5ub3coKT49bil7Zm9y KHQgaW4gbyl7di5wdXNoKG9bdF0uc2lnbmFsKTt1LnB1c2gob1t0XS5lcnJvcik7 fW89e307fWVsc2UgZm9yKHQgaW4gbyl7dmFyIHc9b1t0XS5zaWduYWwseD13aW5k b3cuZ2V0Q29tcHV0ZWRTdHlsZT9nZXRDb21wdXRlZFN0eWxlKHcsbnVsbCk6dy5j dXJyZW50U3R5bGU7aWYoeCYmcGFyc2VJbnQoeC5oZWlnaHQsMTApPjEpe3UucHVz aChvW3RdLmxvYWQpO3YucHVzaCh3KTtkZWxldGUgb1t0XTt9fWZvcih2YXIgeT0w O3k8di5sZW5ndGg7eSsrKXZbeV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh2W3ld KTtpZighZyh1KSl7Zm9yKHk9MDt5PHUubGVuZ3RoO3krKyl1W3ldKCk7bj1EYXRl Lm5vdygpK2k7fXJldHVybiBnKG8pO31mdW5jdGlvbiByKHQsdSx2LHcpe3ZhciB4 PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGEnKTt4LmlkPSdib290bG9hZGVy XycrdC5yZXBsYWNlKC9bXmEtejAtOV0vaWcsJ18nKTt1LmFwcGVuZENoaWxkKHgp O3ZhciB5PSFnKG8pO249RGF0ZS5ub3coKStpO29bdF09e3NpZ25hbDp4LGxvYWQ6 dixlcnJvcjp3fTtpZigheSl2YXIgej1zZXRJbnRlcnZhbChmdW5jdGlvbiBhYSgp e2lmKHEoKSljbGVhckludGVydmFsKHopO30saCxmYWxzZSk7fXZhciBzPXtsb2Fk U3R5bGVTaGVldDpmdW5jdGlvbih0LHUsdix3LHgpe2lmKGxbdF0pdGhyb3cgbmV3 IEVycm9yKCdDU1MgY29tcG9uZW50ICcrdCsnIGhhcyBhbHJlYWR5IGJlZW4gcmVx dWVzdGVkLicpO2lmKGRvY3VtZW50LmNyZWF0ZVN0eWxlU2hlZXQpe3ZhciB5O2Zv cih2YXIgej0wO3o8bS5sZW5ndGg7eisrKWlmKG1bel0uaW1wb3J0cy5sZW5ndGg8 MzEpe3k9ejticmVhazt9aWYoeT09PXVuZGVmaW5lZCl7bS5wdXNoKGRvY3VtZW50 LmNyZWF0ZVN0eWxlU2hlZXQoKSk7eT1tLmxlbmd0aC0xO31tW3ldLmFkZEltcG9y dCh1KTtsW3RdPXtzdHlsZVNoZWV0Om1beV0sdXJpOnV9O3IodCx2LHcseCk7cmV0 dXJuO312YXIgYWE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO2FhLnJl bD0nc3R5bGVzaGVldCc7YWEudHlwZT0ndGV4dC9jc3MnO2FhLmhyZWY9dTtsW3Rd PXtsaW5rOmFhfTtpZihqKXthYS5vbmxvYWQ9ZnVuY3Rpb24oKXthYS5vbmxvYWQ9 YWEub25lcnJvcj1udWxsO3coKTt9O2FhLm9uZXJyb3I9ZnVuY3Rpb24oKXthYS5v bmxvYWQ9YWEub25lcnJvcj1udWxsO3goKTt9O31lbHNle3IodCx2LHcseCk7aWYo aj09PXVuZGVmaW5lZClwKHYpO312LmFwcGVuZENoaWxkKGFhKTt9LHJlZ2lzdGVy TG9hZGVkU3R5bGVTaGVldDpmdW5jdGlvbih0LHUpe2lmKGxbdF0pdGhyb3cgbmV3 IEVycm9yKCdDU1MgY29tcG9uZW50ICcrdCsnIGhhcyBiZWVuIHJlcXVlc3RlZCBh bmQgc2hvdWxkIG5vdCBiZSAnKydsb2FkZWQgbW9yZSB0aGFuIG9uY2UuJyk7bFt0 XT17bGluazp1fTt9LHVubG9hZFN0eWxlU2hlZXQ6ZnVuY3Rpb24odCl7aWYoIXQg aW4gbClyZXR1cm47dmFyIHU9bFt0XSx2PXUubGluaztpZih2KXt2Lm9ubG9hZD12 Lm9uZXJyb3I9bnVsbDt2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodik7fWVsc2V7 dmFyIHc9dS5zdHlsZVNoZWV0O2Zvcih2YXIgeD0wO3g8dy5pbXBvcnRzLmxlbmd0 aDt4KyspaWYody5pbXBvcnRzW3hdLmhyZWY9PXUudXJpKXt3LnJlbW92ZUltcG9y dCh4KTticmVhazt9fWRlbGV0ZSBvW3RdO2RlbGV0ZSBsW3RdO319O2UuZXhwb3J0 cz1zO30pOwpfX2QoIkJvb3Rsb2FkZXIiLFsiZnVuY3Rpb24tZXh0ZW5zaW9ucyIs IkFyYml0ZXIiLCJDU1NMb2FkZXIiLCJFbnYiLCJjcmVhdGVBcnJheUZyb20iLCJp c0VtcHR5Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2Z1bmN0aW9uLWV4dGVu c2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdDU1NMb2FkZXInKSxpPWIo J0VudicpLGo9YignY3JlYXRlQXJyYXlGcm9tJyksaz1iKCdpc0VtcHR5JyksbD17 fSxtPXt9LG49e30sbz1udWxsLHA9e30scT17fSxyPWZhbHNlLHM9W107ZnVuY3Rp b24gdCh4LHkseixhYSl7dmFyIGJhPXcuZG9uZS5jdXJyeShbel0seD09J2Nzcycp O2lmKHg9PSdqcycpe3ZhciBjYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3Jp cHQnKTtjYS5zcmM9eTtjYS5hc3luYz10cnVlO3ZhciBkYT1wW3pdO2lmKGRhJiZk YS5jcm9zc09yaWdpbiYmaS5jcm9zc29yaWdpbl9hdHRyaWJ1dGUpY2EuY3Jvc3NP cmlnaW49J2Fub255bW91cyc7Y2Eub25sb2FkPWNhLm9uZXJyb3I9YmE7Y2Eub25y ZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFkeVN0YXRlIGlu IHtsb2FkZWQ6MSxjb21wbGV0ZToxfSliYSgpO307YWEuYXBwZW5kQ2hpbGQoY2Ep O31lbHNlIGlmKHg9PSdjc3MnKWgubG9hZFN0eWxlU2hlZXQoeix5LGFhLGJhLGZ1 bmN0aW9uKCl7YmEoKTt9KTt9ZnVuY3Rpb24gdSh4KXtpZighcFt4XSlyZXR1cm47 aWYocFt4XS50eXBlPT0nY3NzJyl7aC51bmxvYWRTdHlsZVNoZWV0KHgpO2RlbGV0 ZSBsW3hdO2cuaW5mb3JtKGcuQk9PVExPQUQrJy8nK3gsbnVsbCxnLkJFSEFWSU9S X1NUQVRFKTt9fWZ1bmN0aW9uIHYoeCx5KXtpZighcil7cy5wdXNoKFt4LHldKTty ZXR1cm47fXg9aih4KTt2YXIgej1bXTtmb3IodmFyIGFhPTA7YWE8eC5sZW5ndGg7 KythYSl7aWYoIXhbYWFdKWNvbnRpbnVlO3ZhciBiYT1uW3hbYWFdXTtpZihiYSl7 dmFyIGNhPWJhLnJlc291cmNlcztmb3IodmFyIGRhPTA7ZGE8Y2EubGVuZ3RoOysr ZGEpei5wdXNoKGNhW2RhXSk7fX13LmxvYWRSZXNvdXJjZXMoeix5KTt9dmFyIHc9

e2NvbmZpZ3VyZVBhZ2U6ZnVuY3Rpb24oeCl7dmFyIHk9e30sej13LnJlc29sdmVS ZXNvdXJjZXMoeCksYWE7Zm9yKGFhPTA7YWE8ei5sZW5ndGg7YWErKyl7eVt6W2Fh XS5zcmNdPXpbYWFdO3cucmVxdWVzdGVkKHpbYWFdLm5hbWUpO312YXIgYmE9ZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTtmb3IoYWE9MDthYTxi YS5sZW5ndGg7KythYSl7aWYoYmFbYWFdLnJlbCE9J3N0eWxlc2hlZXQnKWNvbnRp bnVlO2Zvcih2YXIgY2EgaW4geSlpZihiYVthYV0uaHJlZi5pbmRleE9mKGNhKSE9 PS0xKXt2YXIgZGE9eVtjYV0ubmFtZTtpZih5W2NhXS5wZXJtYW5lbnQpbVtkYV09 dHJ1ZTtkZWxldGUgeVtjYV07aC5yZWdpc3RlckxvYWRlZFN0eWxlU2hlZXQoZGEs YmFbYWFdKTt3LmRvbmUoW2RhXSx0cnVlKTticmVhazt9fX0sbG9hZENvbXBvbmVu dHM6ZnVuY3Rpb24oeCx5KXt4PWooeCk7dmFyIHo9W10sYWE9W107Zm9yKHZhciBi YT0wO2JhPHgubGVuZ3RoO2JhKyspe3ZhciBjYT1uW3hbYmFdXTtpZihjYSYmIWNh Lm1vZHVsZSljb250aW51ZTt2YXIgZGE9J2xlZ2FjeTonK3hbYmFdO2lmKG5bZGFd KXt4W2JhXT1kYTt6LnB1c2goZGEpO31lbHNlIGlmKGNhJiZjYS5tb2R1bGUpe3ou cHVzaCh4W2JhXSk7aWYoIWNhLnJ1bldoZW5SZWFkeSlhYS5wdXNoKHhbYmFdKTt9 fXYoeCx6Lmxlbmd0aD9kLmN1cnJ5KHoseSk6eSk7fSxsb2FkTW9kdWxlczpmdW5j dGlvbih4LHkpe3ZhciB6PVtdLGFhPVtdO2Zvcih2YXIgYmE9MDtiYTx4Lmxlbmd0 aDtiYSsrKXt2YXIgY2E9blt4W2JhXV07aWYoIWNhfHxjYS5tb2R1bGUpei5wdXNo KHhbYmFdKTt9dih4LGQuY3Vycnkoeix5KSk7fSxsb2FkUmVzb3VyY2VzOmZ1bmN0 aW9uKHgseSx6LGFhKXt2YXIgYmE7eD13LnJlc29sdmVSZXNvdXJjZXMoaih4KSk7 aWYoeil7dmFyIGNhPXt9O2ZvcihiYT0wO2JhPHgubGVuZ3RoOysrYmEpY2FbeFti YV0ubmFtZV09dHJ1ZTtmb3IodmFyIGRhIGluIGwpaWYoIShkYSBpbiBtKSYmIShk YSBpbiBjYSkmJiEoZGEgaW4gcSkpdShkYSk7cT17fTt9dmFyIGVhPVtdLGZhPVtd O2ZvcihiYT0wO2JhPHgubGVuZ3RoOysrYmEpe3ZhciBnYT14W2JhXTtpZihnYS5w ZXJtYW5lbnQpbVtnYS5uYW1lXT10cnVlO3ZhciBoYT1nLkJPT1RMT0FEKycvJytn YS5uYW1lO2lmKGcucXVlcnkoaGEpIT09bnVsbCljb250aW51ZTtpZighZ2Eubm9u YmxvY2tpbmcpZmEucHVzaChoYSk7aWYoIWxbZ2EubmFtZV0pe3cucmVxdWVzdGVk KGdhLm5hbWUpO2VhLnB1c2goZ2EpO3dpbmRvdy5DYXZhbHJ5TG9nZ2VyJiZ3aW5k b3cuQ2F2YWxyeUxvZ2dlci5nZXRJbnN0YW5jZSgpLm1lYXN1cmVSZXNvdXJjZXMo Z2EsYWEpO319aWYoeSl5PWcucmVnaXN0ZXJDYWxsYmFjayh5LGZhKTt2YXIgaWE9 ZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwrKC9NU0lFLihcZCspLy5leGVjKG5hdmln YXRvci51c2VyQWdlbnQpfHxbXSlbMV0samE9dy5nZXRIYXJkcG9pbnQoKSxrYT1p YT9qYTpkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Zm9yKGJhPTA7 YmE8ZWEubGVuZ3RoOysrYmEpdChlYVtiYV0udHlwZSxlYVtiYV0uc3JjLGVhW2Jh XS5uYW1lLGthKTtpZihqYSE9PWthKWphLmFwcGVuZENoaWxkKGthKTtyZXR1cm4g eTt9LHJlcXVlc3RSZXNvdXJjZTpmdW5jdGlvbih4LHkseil7dmFyIGFhPXcuZ2V0 SGFyZHBvaW50KCk7dCh4LHkseixhYSk7fSxkb25lOmZ1bmN0aW9uKHgseSl7dy5y ZXF1ZXN0ZWQoeCk7aWYoIXkpe3ZhciB6PXtzZW5kZXI6dGhpc307Zy5pbmZvcm0o Zy5CT09UTE9BRCx6LGcuQkVIQVZJT1JfRVZFTlQpO31mb3IodmFyIGFhPTA7YWE8 eC5sZW5ndGg7KythYSl7dmFyIGJhPXhbYWFdO2cuaW5mb3JtKGcuQk9PVExPQUQr Jy8nK2JhLHRydWUsZy5CRUhBVklPUl9TVEFURSk7fX0scmVxdWVzdGVkOmZ1bmN0 aW9uKHgpe3g9aih4KTtmb3IodmFyIHk9MDt5PHgubGVuZ3RoOysreSlsW3hbeV1d PXRydWU7fSxlbmFibGVCb290bG9hZDpmdW5jdGlvbih4KXtmb3IodmFyIHkgaW4g eClpZighblt5XSluW3ldPXhbeV07aWYoIXIpe3I9dHJ1ZTtmb3IodmFyIHo9MDt6 PHMubGVuZ3RoO3orKyl2LmFwcGx5KG51bGwsc1t6XSk7cz1bXTt9fSxnZXRIYXJk cG9pbnQ6ZnVuY3Rpb24oKXtpZighbyl7dmFyIHg9ZG9jdW1lbnQuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoJ2hlYWQnKTtvPXgubGVuZ3RoJiZ4WzBdfHxkb2N1bWVudC5i b2R5O31yZXR1cm4gbzt9LHNldFJlc291cmNlTWFwOmZ1bmN0aW9uKHgpe2lmKCF4 KXJldHVybjt2YXIgeT1bXTtmb3IodmFyIHogaW4geClpZighcFt6XSl7aWYoIXhb el0ubmFtZSl4W3pdLm5hbWU9ejtwW3pdPXhbel07aWYocFt6XS5wcmVsb2FkYWJs ZSl5LnB1c2gocFt6XSk7fXcubG9hZFJlc291cmNlcyh5KTt9LHJlc29sdmVSZXNv dXJjZXM6ZnVuY3Rpb24oeCl7aWYoIXgpcmV0dXJuIFtdO3ZhciB5PVtdO2Zvcih2 YXIgej0wO3o8eC5sZW5ndGg7Kyt6KWlmKHR5cGVvZiB4W3pdPT0nc3RyaW5nJyl7 aWYoeFt6XSBpbiBwKXkucHVzaChwW3hbel1dKTt9ZWxzZSB5LnB1c2goeFt6XSk7 cmV0dXJuIHk7fSxsb2FkRWFybHlSZXNvdXJjZXM6ZnVuY3Rpb24oeCl7dy5zZXRS ZXNvdXJjZU1hcCh4KTt2YXIgeT1bXTtmb3IodmFyIHogaW4geCl7dmFyIGFhPXBb el07eS5wdXNoKGFhKTtpZighYWEucGVybWFuZW50KXFbYWEubmFtZV09YWE7fXcu bG9hZFJlc291cmNlcyh5KTt9fTtlLmV4cG9ydHM9dzt9KTsKX19kKCJnZSIsW10s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGcoaCl7cmV0dXJuIHR5cGVv ZiBoPT0nc3RyaW5nJz9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChoKTpoO31lLmV4 cG9ydHM9Zzt9KTsKX19kKCIkIixbImdlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp

e3ZhciBnPWIoJ2dlJyk7ZnVuY3Rpb24gaChpKXt2YXIgaj1nKGkpO3JldHVybiBq O31lLmV4cG9ydHM9aDt9KTsKX19kKCJDU1MiLFsiJCJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCckJyksaD0naGlkZGVuX2VsZW0nLGk9e3NldENsYXNz OmZ1bmN0aW9uKGosayl7ZyhqKS5jbGFzc05hbWU9a3x8Jyc7cmV0dXJuIGo7fSxo YXNDbGFzczpmdW5jdGlvbihqLGspe2o9ZyhqKTtpZihqLmNsYXNzTGlzdClyZXR1 cm4gISFrJiZqLmNsYXNzTGlzdC5jb250YWlucyhrKTtyZXR1cm4gKCcgJytqLmNs YXNzTmFtZSsnICcpLmluZGV4T2YoJyAnK2srJyAnKT4tMTt9LGFkZENsYXNzOmZ1 bmN0aW9uKGosayl7aj1nKGopO2lmKGspaWYoai5jbGFzc0xpc3Qpe2ouY2xhc3NM aXN0LmFkZChrKTt9ZWxzZSBpZighaS5oYXNDbGFzcyhqLGspKWouY2xhc3NOYW1l PWouY2xhc3NOYW1lKycgJytrO3JldHVybiBqO30scmVtb3ZlQ2xhc3M6ZnVuY3Rp b24oaixrKXtqPWcoaik7aWYoaylpZihqLmNsYXNzTGlzdCl7ai5jbGFzc0xpc3Qu cmVtb3ZlKGspO31lbHNlIGlmKGkuaGFzQ2xhc3MoaixrKSlqLmNsYXNzTmFtZT1q LmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhefFxccyknK2srJyg/Olxc c3wkKScsJ2cnKSwnJDEnKS5yZXBsYWNlKC9ccysvZywnICcpLnJlcGxhY2UoL15c cyp8XHMqJC9nLCcnKTtyZXR1cm4gajt9LGNvbmRpdGlvbkNsYXNzOmZ1bmN0aW9u KGosayxsKXtyZXR1cm4gKGw/aS5hZGRDbGFzczppLnJlbW92ZUNsYXNzKShqLGsp O30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oaixrKXtyZXR1cm4gaS5jb25kaXRpb25D bGFzcyhqLGssIWkuaGFzQ2xhc3MoaixrKSk7fSxzaG93bjpmdW5jdGlvbihqKXty ZXR1cm4gIWkuaGFzQ2xhc3MoaixoKTt9LGhpZGU6ZnVuY3Rpb24oail7cmV0dXJu IGkuYWRkQ2xhc3MoaixoKTt9LHNob3c6ZnVuY3Rpb24oail7cmV0dXJuIGkucmVt b3ZlQ2xhc3MoaixoKTt9LHRvZ2dsZTpmdW5jdGlvbihqKXtyZXR1cm4gaS50b2dn bGVDbGFzcyhqLGgpO30sY29uZGl0aW9uU2hvdzpmdW5jdGlvbihqLGspe3JldHVy biBpLmNvbmRpdGlvbkNsYXNzKGosaCwhayk7fX07ZS5leHBvcnRzPWk7fSk7Cl9f ZCgiQmx1ZUJhckNvbnRyb2xsZXIiLFsiQm9vdGxvYWRlciIsIkNTUyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdCb290bG9hZGVyJyksaD1iKCdDU1Mn KTtmLmluaXQ9ZnVuY3Rpb24oaSl7aWYoJ2dldEJvdW5kaW5nQ2xpZW50UmVjdCcg aW4gaSl7dmFyIGo9ZnVuY3Rpb24oKXt2YXIgaz1pLmdldEJvdW5kaW5nQ2xpZW50 UmVjdCgpLGw9TWF0aC5yb3VuZChrLnRvcCktZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LmNsaWVudFRvcDtoLmNvbmRpdGlvbkNsYXNzKGkuZmlyc3RDaGlsZCwnZml4 ZWRfZWxlbScsbDw9MCk7fTtqKCk7Zy5sb2FkTW9kdWxlcyhbJ2V2ZW50LWV4dGVu c2lvbnMnXSxmdW5jdGlvbigpe0V2ZW50Lmxpc3Rlbih3aW5kb3csJ3Njcm9sbCcs aik7fSk7fX07fSk7Cl9fZCgibGVnYWN5OmNzcy1jb3JlIixbIkNTUyJdLGZ1bmN0 aW9uKGEsYixjLGQpe2EuQ1NTPWIoJ0NTUycpO30sMyk7Cl9fZCgibGVnYWN5OmRv bS1jb3JlIixbIiQiLCJnZSJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuJD1iKCckJyk7 YS5nZT1iKCdnZScpO30sMyk7Cl9fZCgiUGFyZW50IixbIkNTUyJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDU1MnKSxoPXtieVRhZzpmdW5jdGlvbihp LGope2o9ai50b1VwcGVyQ2FzZSgpO3doaWxlKGkmJmkubm9kZU5hbWUhPWopaT1p LnBhcmVudE5vZGU7cmV0dXJuIGk7fSxieUNsYXNzOmZ1bmN0aW9uKGksail7d2hp bGUoaSYmIWcuaGFzQ2xhc3MoaSxqKSlpPWkucGFyZW50Tm9kZTtyZXR1cm4gaTt9 LGJ5QXR0cmlidXRlOmZ1bmN0aW9uKGksail7d2hpbGUoaSYmKCFpLmdldEF0dHJp YnV0ZXx8IWkuZ2V0QXR0cmlidXRlKGopKSlpPWkucGFyZW50Tm9kZTtyZXR1cm4g aTt9fTtlLmV4cG9ydHM9aDt9KTsKX19kKCJsZWdhY3k6cGFyZW50IixbIlBhcmVu dCJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuUGFyZW50PWIoJ1BhcmVudCcpO30sMyk7 Cl9fZCgibGVnYWN5OmFyYml0ZXIiLFsiQXJiaXRlciJdLGZ1bmN0aW9uKGEsYixj LGQpe2EuQXJiaXRlcj1iKCdBcmJpdGVyJyk7fSwzKTsKX19kKCJldmVudC1mb3Jt LWJ1YmJsaW5nIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YS5FdmVudD1hLkV2 ZW50fHxmdW5jdGlvbigpe307YS5FdmVudC5fX2lubGluZVN1Ym1pdD1mdW5jdGlv bihnLGV2ZW50KXt2YXIgaD0oYS5FdmVudC5fX2dldEhhbmRsZXImJmEuRXZlbnQu X19nZXRIYW5kbGVyKGcsJ3N1Ym1pdCcpKTtyZXR1cm4gaD9udWxsOmEuRXZlbnQu X19idWJibGVTdWJtaXQoZyxldmVudCk7fTthLkV2ZW50Ll9fYnViYmxlU3VibWl0 PWZ1bmN0aW9uKGcsZXZlbnQpe2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5h dHRhY2hFdmVudCl7dmFyIGg7d2hpbGUoaCE9PWZhbHNlJiYoZz1nLnBhcmVudE5v ZGUpKWg9Zy5vbnN1Ym1pdD9nLm9uc3VibWl0KGV2ZW50KTphLkV2ZW50Ll9fZmly ZSYmYS5FdmVudC5fX2ZpcmUoZywnc3VibWl0JyxldmVudCk7cmV0dXJuIGg7fX07 fSwzKTsKX19kKCJPbmxvYWRFdmVudCIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPXtPTkxPQUQ6J29ubG9hZC9vbmxvYWQnLE9OTE9BRF9DQUxMQkFDSzon b25sb2FkL29ubG9hZF9jYWxsYmFjaycsT05MT0FEX0RPTUNPTlRFTlQ6J29ubG9h ZC9kb21fY29udGVudF9yZWFkeScsT05MT0FEX0RPTUNPTlRFTlRfQ0FMTEJBQ0s6 J29ubG9hZC9kb21jb250ZW50X2NhbGxiYWNrJyxPTkJFRk9SRVVOTE9BRDonb25s b2FkL2JlZm9yZXVubG9hZCcsT05VTkxPQUQ6J29ubG9hZC91bmxvYWQnfTtlLmV4

cG9ydHM9Zzt9KTsKX19kKCJSdW4iLFsiQXJiaXRlciIsIk9ubG9hZEV2ZW50Il0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ09u bG9hZEV2ZW50JyksaT1nLkJFSEFWSU9SX1NUQVRFO2Z1bmN0aW9uIGooeCl7dmFy IHk9YS5DYXZhbHJ5TG9nZ2VyO3kmJnkuZ2V0SW5zdGFuY2UoKS5zZXRUaW1lU3Rh bXAoeCk7fWZ1bmN0aW9uIGsoKXtyZXR1cm4gIXdpbmRvdy5sb2FkaW5nX3BhZ2Vf Y2hyb21lO31mdW5jdGlvbiBsKHgpe3ZhciB5PWEuT25sb2FkSG9va3M7aWYod2lu ZG93LmxvYWRlZCYmeSl7eS5ydW5Ib29rKHgsJ29ubGF0ZWxvYWRob29rcycpO31l bHNlIHEoJ29ubG9hZGhvb2tzJyx4KTt9ZnVuY3Rpb24gbSh4KXt2YXIgeT1hLk9u bG9hZEhvb2tzO2lmKHdpbmRvdy5hZnRlcmxvYWRlZCYmeSl7c2V0VGltZW91dChm dW5jdGlvbigpe3kucnVuSG9vayh4LCdvbmxhdGVhZnRlcmxvYWRob29rcycpO30s MCk7fWVsc2UgcSgnb25hZnRlcmxvYWRob29rcycseCk7fWZ1bmN0aW9uIG4oeCx5 KXtpZih5PT09dW5kZWZpbmVkKXk9aygpO3k/cSgnb25iZWZvcmVsZWF2ZWhvb2tz Jyx4KTpxKCdvbmJlZm9yZXVubG9hZGhvb2tzJyx4KTt9ZnVuY3Rpb24gbyh4KXtp Zighd2luZG93Lm9udW5sb2FkKXdpbmRvdy5vbnVubG9hZD1mdW5jdGlvbigpe2cu aW5mb3JtKGguT05VTkxPQUQsdHJ1ZSxpKTt9O3EoJ29udW5sb2FkaG9va3MnLHgp O31mdW5jdGlvbiBwKHgpe3EoJ29ubGVhdmVob29rcycseCk7fWZ1bmN0aW9uIHEo eCx5KXt3aW5kb3dbeF09KHdpbmRvd1t4XXx8W10pLmNvbmNhdCh5KTt9ZnVuY3Rp b24gcih4KXt3aW5kb3dbeF09W107fWZ1bmN0aW9uIHMoKXtnLmluZm9ybShoLk9O TE9BRF9ET01DT05URU5ULHRydWUsaSk7fWEuX2RvbWNvbnRlbnRyZWFkeT1zO2Z1 bmN0aW9uIHQoKXt2YXIgeD1kb2N1bWVudCx5PXdpbmRvdztpZih4LmFkZEV2ZW50 TGlzdGVuZXIpe3ZhciB6PS9BcHBsZVdlYktpdC4oXGQrKS8uZXhlYyhuYXZpZ2F0 b3IudXNlckFnZW50KTtpZih6JiZ6WzFdPDUyNSl7dmFyIGFhPXNldEludGVydmFs KGZ1bmN0aW9uKCl7aWYoL2xvYWRlZHxjb21wbGV0ZS8udGVzdCh4LnJlYWR5U3Rh dGUpKXtzKCk7Y2xlYXJJbnRlcnZhbChhYSk7fX0sMTApO31lbHNlIHguYWRkRXZl bnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIscyx0cnVlKTt9ZWxzZXt2YXIg YmE9J2phdmFzY3JpcHQ6dm9pZCgwKSc7aWYoeS5sb2NhdGlvbi5wcm90b2NvbD09 J2h0dHBzOicpYmE9Jy8vOic7eC53cml0ZSgnPHNjcmlwdCBvbnJlYWR5c3RhdGVj aGFuZ2U9ImlmICh0aGlzLnJlYWR5U3RhdGU9PVwnY29tcGxldGVcJykgeycrJ3Ro aXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTtfZG9tY29udGVudHJlYWR5 KCk7fSIgJysnZGVmZXI9ImRlZmVyIiBzcmM9IicrYmErJyI+PFwvc2NyaXB0XD4n KTt9dmFyIGNhPXkub25sb2FkO3kub25sb2FkPWZ1bmN0aW9uKCl7aigndF9sYXlv dXQnKTtjYSYmY2EoKTtnLmluZm9ybShoLk9OTE9BRCx0cnVlLGkpO307eS5vbmJl Zm9yZXVubG9hZD1mdW5jdGlvbigpe3ZhciBkYT17fTtnLmluZm9ybShoLk9OQkVG T1JFVU5MT0FELGRhLGkpO2lmKCFkYS53YXJuKWcuaW5mb3JtKCdvbmxvYWQvZXhp dCcsdHJ1ZSk7cmV0dXJuIGRhLndhcm47fTt9dmFyIHU9Zy5yZWdpc3RlckNhbGxi YWNrKGZ1bmN0aW9uKCl7aigndF9vbmxvYWQnKTtnLmluZm9ybShoLk9OTE9BRF9D QUxMQkFDSyx0cnVlLGkpO30sW2guT05MT0FEXSksdj1nLnJlZ2lzdGVyQ2FsbGJh Y2soZnVuY3Rpb24oKXtqKCd0X2RvbWNvbnRlbnQnKTtnLmluZm9ybShoLk9OTE9B RF9ET01DT05URU5UX0NBTExCQUNLLHRydWUsaSk7fSxbaC5PTkxPQURfRE9NQ09O VEVOVF0pO3QoKTt2YXIgdz17b25Mb2FkOmwsb25BZnRlckxvYWQ6bSxvbkxlYXZl OnAsb25CZWZvcmVVbmxvYWQ6bixvblVubG9hZDpvLF9fZG9tQ29udGVudENhbGxi YWNrOnYsX19vbmxvYWRDYWxsYmFjazp1LF9fcmVtb3ZlSG9vazpyfTtlLmV4cG9y dHM9dzt9KTsKX19kKCJsZWdhY3k6b25sb2FkIixbIlJ1biIsIk9ubG9hZEV2ZW50 Il0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignUnVuJyk7YS5PbmxvYWRFdmVu dD1iKCdPbmxvYWRFdmVudCcpO2Eub25sb2FkUmVnaXN0ZXJfREVQUkVDQVRFRD1l Lm9uTG9hZDthLm9ubG9hZFJlZ2lzdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGUub25M b2FkLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9O2Eub25hZnRlcmxvYWRSZWdpc3Rl cl9ERVBSRUNBVEVEPWUub25BZnRlckxvYWQ7YS5vbmFmdGVybG9hZFJlZ2lzdGVy PWZ1bmN0aW9uKCl7cmV0dXJuIGUub25BZnRlckxvYWQuYXBwbHkodGhpcyxhcmd1 bWVudHMpO307YS5vbmxlYXZlUmVnaXN0ZXI9ZS5vbkxlYXZlO2Eub25iZWZvcmV1 bmxvYWRSZWdpc3Rlcj1lLm9uQmVmb3JlVW5sb2FkO2Eub251bmxvYWRSZWdpc3Rl cj1lLm9uVW5sb2FkO30sMyk7Cl9fZCgid2FpdF9mb3JfbG9hZCIsWyJCb290bG9h ZGVyIiwiUnVuIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Jvb3Rs b2FkZXInKSxoPWIoJ1J1bicpO2Z1bmN0aW9uIGkobCxtKXtyZXR1cm4gd2luZG93 LmxvYWRlZCYmbS5jYWxsKGwpO31mdW5jdGlvbiBqKGwsbSxuKXtnLmxvYWRDb21w b25lbnRzLmNhbGwoZyxtLG4uYmluZChsKSk7cmV0dXJuIGZhbHNlO31mdW5jdGlv biBrKGwsbSxuKXtuPW4uYmluZChsLG0pO2lmKHdpbmRvdy5sb2FkZWQpcmV0dXJu IG4oKTtzd2l0Y2goKG18fGV2ZW50KS50eXBlKXtjYXNlICdsb2FkJzpjYXNlICdm b2N1cyc6aC5vbkFmdGVyTG9hZChuKTtyZXR1cm47Y2FzZSAnY2xpY2snOnZhciBv PWwuc3R5bGUscD1kb2N1bWVudC5ib2R5LnN0eWxlO28uY3Vyc29yPXAuY3Vyc29y

PSdwcm9ncmVzcyc7aC5vbkFmdGVyTG9hZChmdW5jdGlvbigpe28uY3Vyc29yPXAu Y3Vyc29yPScnO2lmKGwudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0nYScpe2lmKGZh bHNlIT09bigpJiZsLmhyZWYpd2luZG93LmxvY2F0aW9uLmhyZWY9bC5ocmVmO31l bHNlIGlmKGwuY2xpY2spbC5jbGljaygpO30pO2JyZWFrO31yZXR1cm4gZmFsc2U7 fWEucnVuX2lmX2xvYWRlZD1pO2EucnVuX3dpdGg9ajthLndhaXRfZm9yX2xvYWQ9 azt9LDMpOwpfX2QoIkludGwiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg ZztmdW5jdGlvbiBoKGope2lmKHR5cGVvZiBqIT0nc3RyaW5nJylyZXR1cm4gZmFs c2U7cmV0dXJuIGoubWF0Y2gobmV3IFJlZ0V4cChoLnB1bmN0X2NoYXJfY2xhc3Mr J1snKycpIicrIiciKydcdTAwQkInKydcdTBGM0InKydcdTBGM0QnKydcdTIwMTkn KydcdTIwMUQnKydcdTIwM0EnKydcdTMwMDknKydcdTMwMEInKydcdTMwMEQnKydc dTMwMEYnKydcdTMwMTEnKydcdTMwMTUnKydcdTMwMTcnKydcdTMwMTknKydcdTMw MUInKydcdTMwMUUnKydcdTMwMUYnKydcdUZEM0YnKydcdUZGMDcnKydcdUZGMDkn KydcdUZGM0QnKydccycrJ10qJCcpKTt9aC5wdW5jdF9jaGFyX2NsYXNzPSdbJysn LiE/JysnXHUzMDAyJysnXHVGRjAxJysnXHVGRjFGJysnXHUwOTY0JysnXHUyMDI2 JysnXHUwRUFGJysnXHUxODAxJysnXHUwRTJGJysnXHVGRjBFJysnXSc7ZnVuY3Rp b24gaShqKXtpZihnKXt2YXIgaz1bXSxsPVtdO2Zvcih2YXIgbSBpbiBnLnBhdHRl cm5zKXt2YXIgbj1nLnBhdHRlcm5zW21dO2Zvcih2YXIgbyBpbiBnLm1ldGEpe3Zh ciBwPW5ldyBSZWdFeHAoby5zbGljZSgxLC0xKSwnZycpLHE9Zy5tZXRhW29dO209 bS5yZXBsYWNlKHAscSk7bj1uLnJlcGxhY2UocCxxKTt9ay5wdXNoKG0pO2wucHVz aChuKTt9Zm9yKHZhciByPTA7cjxrLmxlbmd0aDtyKyspe3ZhciBzPW5ldyBSZWdF eHAoa1tyXS5zbGljZSgxLC0xKSwnZycpO2lmKGxbcl09PSdqYXZhc2NyaXB0Jyl7 ai5yZXBsYWNlKHMsZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMSkudG9Mb3dl ckNhc2UoKTt9KTt9ZWxzZSBqPWoucmVwbGFjZShzLGxbcl0pO319cmV0dXJuIGou cmVwbGFjZSgvXHgwMS9nLCcnKTt9ZS5leHBvcnRzPXtlbmRzSW5QdW5jdDpoLGFw cGx5UGhvbm9sb2dpY2FsUnVsZXM6aSxzZXRQaG9ub2xvZ2ljYWxSdWxlczpmdW5j dGlvbihqKXtnPWo7fX07fSk7Cl9fZCgidHgiLFsiSW50bCJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdJbnRsJyk7ZnVuY3Rpb24gaChqLGspe2lmKCFr KXJldHVybiBqO3ZhciBsPSdcXHsoW159XSspXFx9KCcrZy5lbmRzSW5QdW5jdC5w dW5jdF9jaGFyX2NsYXNzKycqKScsbT1uZXcgUmVnRXhwKGwsJ2cnKSxuPVtdLG89 ai5yZXBsYWNlKG0sZnVuY3Rpb24ocixzLHQpe3ZhciB1PWtbc107aWYodSYmdHlw ZW9mIHU9PT0nb2JqZWN0Jyl7bi5wdXNoKHUpO3JldHVybiAnXHgxNycrdDt9cmV0 dXJuIHUrKGcuZW5kc0luUHVuY3QodSk/Jyc6dCk7fSkuc3BsaXQoJ1x4MTcnKS5t YXAoZy5hcHBseVBob25vbG9naWNhbFJ1bGVzKTtpZihvLmxlbmd0aD09PTEpcmV0 dXJuIG9bMF07dmFyIHA9W29bMF1dO2Zvcih2YXIgcT0wO3E8bi5sZW5ndGg7cSsr KXAucHVzaChuW3FdLG9bcSsxXSk7cmV0dXJuIHA7fWZ1bmN0aW9uIGkoaixrKXtp Zih0eXBlb2YgX3N0cmluZ190YWJsZT09J3VuZGVmaW5lZCcpcmV0dXJuO2o9X3N0 cmluZ190YWJsZVtqXTtyZXR1cm4gaChqLGspO31pLl89aDtlLmV4cG9ydHM9aTt9 KTsKX19kKCJsZWdhY3k6aW50bC1jb3JlIixbInR4Il0sZnVuY3Rpb24oYSxiLGMs ZCl7dmFyIGU9YigndHgnKTthLnR4PWU7YS5fdHg9ZS5fO30sMyk7Cl9fZCgiYXJy YXktZXh0ZW5zaW9ucyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe0FycmF5LnBy b3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbmRleE9m KGcpIT0tMTt9O0FycmF5LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZyl7dmFy IGg9dGhpcy5pbmRleE9mKGcpO2lmKGghPS0xKXRoaXMuc3BsaWNlKGgsMSk7fTt9 LDMpOwpfX2QoIkpTQ0MiLFsiaXNFbXB0eSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdpc0VtcHR5JyksaD17fSxpPXt9O2Z1bmN0aW9uIGoobSl7dmFy IG4sbz1mYWxzZTtyZXR1cm4gZnVuY3Rpb24oKXtpZighbyl7bj1tKCk7bz10cnVl O31yZXR1cm4gbjt9O31mdW5jdGlvbiBrKG0sbil7aWYoZyhtKSlyZXR1cm47Zm9y KHZhciBvIGluIG0pe2hbb109aihtW29dKTtpZihuKXtpZighaVtuXSlpW25dPVtd O2lbbl0ucHVzaChvKTt9fX12YXIgbD17Z2V0OmZ1bmN0aW9uKG0pe2lmKCFoW21d KXRocm93IG5ldyBFcnJvcignSlNDQyBlbnRyeSBpcyBtaXNzaW5nJyk7cmV0dXJu IGhbbV0oKTt9LGluaXQ6ZnVuY3Rpb24obSl7ayhtKTt9LGluaXRGb3JQYWdlbGV0 OmZ1bmN0aW9uKG0sbil7ayhuLG0pO30sY2xlYXJGb3JQYWdlbGV0OmZ1bmN0aW9u KG0pe2lmKGlbbV0pe2Zvcih2YXIgbj0wO248aVttXS5sZW5ndGg7bisrKXt2YXIg bz1pW21dW25dO2RlbGV0ZSBoW29dO31kZWxldGUgaVttXTt9fX07ZS5leHBvcnRz PWw7fSk7Cl9fZCgiU2VydmVySlMiLFsiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkVy cm9yVXRpbHMiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9YignRXJyb3JVdGlscycp LGg9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBpKCl7dGhpcy5fbW9kdWxl TWFwPXt9O3RoaXMuX3JlbGF0aXZlVG89bnVsbDt9aChpLnByb3RvdHlwZSx7aGFu ZGxlOmZ1bmN0aW9uKG4pe2cuYXBwbHlXaXRoR3VhcmQoZnVuY3Rpb24obyl7aWYo

by5fX2d1YXJkKXRocm93IG5ldyBFcnJvcignU2VydmVySlMuaGFuZGxlIGNhbGxl ZCBvbiBkYXRhIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBoYW5kbGVkJyk7by5fX2d1 YXJkPXRydWU7ayhvLmRlZmluZXx8W10sdGhpcy5faGFuZGxlRGVmaW5lLHRoaXMp O2soby5tYXJrdXB8fFtdLHRoaXMuX2hhbmRsZU1hcmt1cCx0aGlzKTtrKG8uZWxl bWVudHN8fFtdLHRoaXMuX2hhbmRsZUVsZW1lbnQsdGhpcyk7ayhvLmluc3RhbmNl c3x8W10sdGhpcy5faGFuZGxlSW5zdGFuY2UsdGhpcyk7ayhvLnJlcXVpcmV8fFtd LHRoaXMuX2hhbmRsZVJlcXVpcmUsdGhpcyk7fSx0aGlzLFtdLmNvbmNhdChuKSk7 fSxoYW5kbGVQYXJ0aWFsOmZ1bmN0aW9uKG4peyhuLmluc3RhbmNlc3x8W10pLmZv ckVhY2gobC5jdXJyeSh0aGlzLl9tb2R1bGVNYXAsMykpOyhuLm1hcmt1cHx8W10p LmZvckVhY2gobC5jdXJyeSh0aGlzLl9tb2R1bGVNYXAsMikpO3RoaXMuaGFuZGxl KG4pO30sY2xlYW51cDpmdW5jdGlvbigpe3ZhciBuPVtdO2Zvcih2YXIgbyBpbiB0 aGlzLl9tb2R1bGVNYXApbi5wdXNoKG8pO2QuY2FsbChudWxsLG4sbSk7dGhpcy5f bW9kdWxlTWFwPXt9O30sc2V0UmVsYXRpdmVUbzpmdW5jdGlvbihuKXt0aGlzLl9y ZWxhdGl2ZVRvPW47cmV0dXJuIHRoaXM7fSxfaGFuZGxlRGVmaW5lOmZ1bmN0aW9u KG4sbyxwKXtkZWZpbmUobixvLGZ1bmN0aW9uKCl7dGhpcy5fcmVwbGFjZVRyYW5z cG9ydE1hcmtlcnMocCk7cmV0dXJuIHA7fS5iaW5kKHRoaXMpKTt9LF9oYW5kbGVS ZXF1aXJlOmZ1bmN0aW9uKG4sbyxwLHEpe3ZhciByPVtuXS5jb25jYXQocHx8W10p O2QocixmdW5jdGlvbihzKXtxJiZ0aGlzLl9yZXBsYWNlVHJhbnNwb3J0TWFya2Vy cyhxKTtpZihvKXtpZighc1tvXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdNb2R1bGUg JytuKycgaGFzIG5vIG1ldGhvZCAnK28pO3Nbb10uYXBwbHkocyxxfHxbXSk7fX0u YmluZCh0aGlzKSk7fSxfaGFuZGxlSW5zdGFuY2U6ZnVuY3Rpb24obixvLHAscSl7 dmFyIHI9bnVsbDtpZihvKXI9ZnVuY3Rpb24ocyl7dGhpcy5fcmVwbGFjZVRyYW5z cG9ydE1hcmtlcnMocCk7dmFyIHQ9T2JqZWN0LmNyZWF0ZShzLnByb3RvdHlwZSk7 cy5hcHBseSh0LHApO3JldHVybiB0O30uYmluZCh0aGlzKTtkZWZpbmUobixvLHIs MCxudWxsLHEpO30sX2hhbmRsZU1hcmt1cDpmdW5jdGlvbihuLG8scCl7ZGVmaW5l KG4sWydIVE1MJ10sZnVuY3Rpb24ocSl7cmV0dXJuIHEucmVwbGFjZUpTT05XcmFw cGVyKG8pLmdldFJvb3ROb2RlKCk7fSwwLG51bGwscCk7fSxfaGFuZGxlRWxlbWVu dDpmdW5jdGlvbihuLG8scCxxKXt2YXIgcj1xP1txXTpbXTtkZWZpbmUobixyLGZ1 bmN0aW9uKHMpe3ZhciB0PWoobyxzKTtyZXR1cm4gdDt9LDAsbnVsbCxwKTt9LF9y ZXBsYWNlVHJhbnNwb3J0TWFya2VyczpmdW5jdGlvbihuLG8pe3ZhciBwPSh0eXBl b2YgbyE9PSd1bmRlZmluZWQnKT9uW29dOm4scTtpZihBcnJheS5pc0FycmF5KHAp KXtmb3IocT0wO3E8cC5sZW5ndGg7cSsrKXRoaXMuX3JlcGxhY2VUcmFuc3BvcnRN YXJrZXJzKHAscSk7fWVsc2UgaWYocCYmdHlwZW9mIHA9PSdvYmplY3QnKWlmKHAu X19tKXtuW29dPWIocC5fX20pO31lbHNlIGlmKHAuX19lKXtuW29dPWoocC5fX2Up O31lbHNlIGlmKHAuX19yZWwpe25bb109dGhpcy5fcmVsYXRpdmVUbzt9ZWxzZSBm b3IodmFyIHIgaW4gcCl0aGlzLl9yZXBsYWNlVHJhbnNwb3J0TWFya2VycyhwLHIp O319KTtmdW5jdGlvbiBqKG4sbyl7dmFyIHAscSxyO2lmKG8pe2lmKG8uaWQ9PW4p e3A9bzt9ZWxzZSBpZihvLmdldEVsZW1lbnRzQnlUYWdOYW1lKXtxPW8uZ2V0RWxl bWVudHNCeVRhZ05hbWUoJyonKTtmb3Iocj0wO3I8cS5sZW5ndGg7cisrKWlmKHFb cl0uaWQ9PW4pe3A9cVtyXTticmVhazt9fWVsc2V7cT1vLmNoaWxkTm9kZXM7Zm9y KHI9MDtyPHEubGVuZ3RoO3IrKyl7cD1qKG4scVtyXSk7aWYocClicmVhazt9fX1l bHNlIHA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik7cmV0dXJuIHA7fWZ1bmN0 aW9uIGsobixvLHApe2Zvcih2YXIgcT0wO3E8bi5sZW5ndGg7cSsrKW8uYXBwbHko cCxbXS5jb25jYXQobltxXSkpO31mdW5jdGlvbiBsKG4sbyxwKXt2YXIgcT1wWzBd O2lmKCEocSBpbiBuKSlwW29dPShwW29dfHwwKSsxO25bcV09dHJ1ZTt9ZnVuY3Rp b24gbSgpe3JldHVybiB7fTt9ZS5leHBvcnRzPWk7fSk7Cl9fZCgiaW52b2tlQ2Fs bGJhY2tzIixbIkVycm9yVXRpbHMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignRXJyb3JVdGlscycpO2Z1bmN0aW9uIGgoaSxqKXtpZihpKWZvcih2YXIg az0wO2s8aS5sZW5ndGg7aysrKWcuYXBwbHlXaXRoR3VhcmQobmV3IEZ1bmN0aW9u KGlba10pLGopO31lLmV4cG9ydHM9aDt9KTsKX19kKCJCaWdQaXBlIixbIkFyYml0 ZXIiLCJCb290bG9hZGVyIiwiRW52IiwiSlNDQyIsIk9ubG9hZEV2ZW50IiwiUnVu IiwiU2VydmVySlMiLCIkIiwiY29weVByb3BlcnRpZXMiLCJnZSIsImhhc0FycmF5 TmF0dXJlIiwiaW52b2tlQ2FsbGJhY2tzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0Jvb3Rsb2FkZXInKSxpPWIoJ0Vudicp LGo9YignSlNDQycpLGs9YignT25sb2FkRXZlbnQnKSxsPWIoJ1J1bicpLG09Yign U2VydmVySlMnKSxuPWIoJyQnKSxvPWIoJ2NvcHlQcm9wZXJ0aWVzJykscD1iKCdn ZScpLHE9YignaGFzQXJyYXlOYXR1cmUnKSxyPWIoJ2ludm9rZUNhbGxiYWNrcycp LHM9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwrKC9NU0lFLihcZCspLy5leGVjKG5h dmlnYXRvci51c2VyQWdlbnQpfHxbXSlbMV0sdD1nLkJFSEFWSU9SX1NUQVRFLHU9 Zy5CRUhBVklPUl9QRVJTSVNURU5UO2Z1bmN0aW9uIHYoYWEpe3JldHVybiAoIWFh

fHxxKGFhKSYmYWEubGVuZ3RoPT09MCk/e306YWE7fWZ1bmN0aW9uIHcoYWEpe2lm KCFhYXx8dHlwZW9mIGFhPT09J3N0cmluZycpcmV0dXJuIGFhO2lmKGFhLmNvbnRh aW5lcl9pZCl7dmFyIGJhPW4oYWEuY29udGFpbmVyX2lkKTthYT14KGJhKXx8Jyc7 YmEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiYSk7cmV0dXJuIGFhO31yZXR1cm4g bnVsbDt9ZnVuY3Rpb24geChhYSl7aWYoIWFhLmZpcnN0Q2hpbGQpe2gubG9hZE1v ZHVsZXMoWydFcnJvclNpZ25hbCddLGZ1bmN0aW9uKGNhKXtjYS5zZW5kRXJyb3JT aWduYWwoJ2JpZ3BpcGUnLCdQYWdlbGV0IG1hcmt1cCBjb250YWluZXIgaXMgZW1w dHkuJyk7fSk7cmV0dXJuIG51bGw7fWlmKGFhLmZpcnN0Q2hpbGQubm9kZVR5cGUh PT04KXJldHVybiBudWxsO3ZhciBiYT1hYS5maXJzdENoaWxkLm5vZGVWYWx1ZTti YT1iYS5zdWJzdHJpbmcoMSxiYS5sZW5ndGgtMSk7cmV0dXJuIGJhLnJlcGxhY2Uo L1xcKFtcc1xTXXwkKS9nLCckMScpO31mdW5jdGlvbiB5KGFhLGJhKXt2YXIgY2E9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksZGE9czw3O2lmKGRhKWFhLmFw cGVuZENoaWxkKGNhKTtjYS5pbm5lckhUTUw9YmE7dmFyIGVhPWRvY3VtZW50LmNy ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTt3aGlsZShjYS5maXJzdENoaWxkKWVhLmFw cGVuZENoaWxkKGNhLmZpcnN0Q2hpbGQpO2FhLmFwcGVuZENoaWxkKGVhKTtpZihk YSlhYS5yZW1vdmVDaGlsZChjYSk7fWZ1bmN0aW9uIHooYWEpe28odGhpcyx7YXJi aXRlcjpnLHJvb3ROb2RlSUQ6J2NvbnRlbnQnLGxpZDowLGlzQWpheDpmYWxzZSxk b21Db250ZW50Q2FsbGJhY2s6bC5fX2RvbUNvbnRlbnRDYWxsYmFjayxvbmxvYWRD YWxsYmFjazpsLl9fb25sb2FkQ2FsbGJhY2ssZG9tQ29udGVudEV2dDprLk9OTE9B RF9ET01DT05URU5UX0NBTExCQUNLLG9ubG9hZEV2dDprLk9OTE9BRF9DQUxMQkFD Syxmb3JjZUZpbmlzaDpmYWxzZSxfcGhhc2VEb25lQ2FsbGJhY2tzOltdLF9jdXJy ZW50UGhhc2U6MCxfbGFzdFBoYXNlOi0xfSk7byh0aGlzLGFhKTtpZih0aGlzLmF1 dG9tYXRpYyl7dGhpcy5fcmVsZXZhbnRfaW5zdGFuY2U9ei5fY3VycmVudF9pbnN0 YW5jZTt9ZWxzZSB6Ll9jdXJyZW50X2luc3RhbmNlPXRoaXM7dGhpcy5fc2VydmVy SlM9bmV3IG0oKTtnLmluZm9ybSgnQmlnUGlwZS9pbml0Jyx7bGlkOnRoaXMubGlk LGFyYml0ZXI6dGhpcy5hcmJpdGVyfSx1KTt0aGlzLmFyYml0ZXIucmVnaXN0ZXJD YWxsYmFjayh0aGlzLl9zZXJ2ZXJKUy5jbGVhbnVwLmJpbmQodGhpcy5fc2VydmVy SlMpLFsncGFnZWxldF9kaXNwbGF5ZWRfYWxsJ10pO3RoaXMuYXJiaXRlci5yZWdp c3RlckNhbGxiYWNrKHRoaXMuZG9tQ29udGVudENhbGxiYWNrLFsncGFnZWxldF9k aXNwbGF5ZWRfYWxsJ10pO3RoaXMuX2luZm9ybUV2ZW50RXh0ZXJuYWwoJ3BoYXNl X2JlZ2luJyx7cGhhc2U6MH0pO3RoaXMuYXJiaXRlci5pbmZvcm0oJ3BoYXNlX2Jl Z2luXzAnLHRydWUsdCk7dGhpcy5vbmxvYWRDYWxsYmFjaz10aGlzLmFyYml0ZXIu cmVnaXN0ZXJDYWxsYmFjayh0aGlzLm9ubG9hZENhbGxiYWNrLFsncGFnZWxldF9k aXNwbGF5ZWRfYWxsJ10pO31vKHoucHJvdG90eXBlLHtfZGlzcGxheVBhZ2VsZXRI YW5kbGVyOmZ1bmN0aW9uKGFhKXtpZih0aGlzLmRpc3BsYXlDYWxsYmFjayl7dGhp cy5kaXNwbGF5Q2FsbGJhY2sodGhpcy5fZGlzcGxheVBhZ2VsZXQuYmluZCh0aGlz LGFhKSk7fWVsc2UgdGhpcy5fZGlzcGxheVBhZ2VsZXQoYWEpO30sX2Rpc3BsYXlQ YWdlbGV0OmZ1bmN0aW9uKGFhKXt0aGlzLl9pbmZvcm1QYWdlbGV0RXZlbnQoJ2Rp c3BsYXlfc3RhcnQnLGFhLmlkKTthYS5jb250ZW50PXYoYWEuY29udGVudCk7Zm9y KHZhciBiYSBpbiBhYS5jb250ZW50KXt2YXIgY2E9YWEuY29udGVudFtiYV07aWYo YWEuYXBwZW5kKWJhPXRoaXMuX2dldEFwcGVuZFRhcmdldElEKGFhKTt2YXIgZGE9 cChiYSk7aWYoZGEpe2NhPXcoY2EpO2lmKGNhKWlmKGFhLmFwcGVuZHx8czw4KXtp ZighYWEuYXBwZW5kKXdoaWxlKGRhLmZpcnN0Q2hpbGQpZGEucmVtb3ZlQ2hpbGQo ZGEuZmlyc3RDaGlsZCk7eShkYSxjYSk7fWVsc2UgZGEuaW5uZXJIVE1MPWNhO3Zh ciBlYT1kYS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVmZXJyZXInKTtpZighZWEpZGEu c2V0QXR0cmlidXRlKCdkYXRhLXJlZmVycmVyJyxiYSk7aWYoYWEuY2FjaGVfaGl0 JiZpLnBjX2RlYnVnKWRhLnN0eWxlLmJvcmRlcj0nMXB4IHJlZCBzb2xpZCc7fX1p ZihhYS5qc21vZHMpe3ZhciBmYT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFh LmpzbW9kcykpO3RoaXMuX3NlcnZlckpTLmhhbmRsZVBhcnRpYWwoZmEpO310aGlz Ll9pbmZvcm1QYWdlbGV0RXZlbnQoJ2Rpc3BsYXknLGFhLmlkKTt0aGlzLmFyYml0 ZXIuaW5mb3JtKGFhLmlkKydfZGlzcGxheWVkJyx0cnVlLHQpO30sX2dldEFwcGVu ZFRhcmdldElEOmZ1bmN0aW9uKGFhKXtpZighYWEuYXBwZW5kKXJldHVybiBudWxs O3JldHVybiAoYWEuYXBwZW5kPT09J2JpZ3BpcGVfcm9vdCcpP3RoaXMucm9vdE5v ZGVJRDphYS5hcHBlbmQ7fSxfZG93bmxvYWRKc0ZvclBhZ2VsZXQ6ZnVuY3Rpb24o YWEpe3RoaXMuX2luZm9ybVBhZ2VsZXRFdmVudCgnanNzdGFydCcsYWEuaWQpO2gu bG9hZFJlc291cmNlcyhhYS5qc3x8W10sZnVuY3Rpb24oKXt0aGlzLl9pbmZvcm1Q YWdlbGV0RXZlbnQoJ2pzZG9uZScsYWEuaWQpO2FhLnJlcXVpcmVzPWFhLnJlcXVp cmVzfHxbXTtpZighdGhpcy5pc0FqYXh8fGFhLnBoYXNlPj0xKWFhLnJlcXVpcmVz LnB1c2goJ3VpcGFnZV9vbmxvYWQnKTt2YXIgYmE9ZnVuY3Rpb24oKXt0aGlzLl9p bmZvcm1QYWdlbGV0RXZlbnQoJ3ByZW9ubG9hZCcsYWEuaWQpO3RoaXMuX2lzUmVs

ZXZhbnRQYWdlbGV0KGFhKSYmcihhYS5vbmxvYWQpO3RoaXMuX2luZm9ybVBhZ2Vs ZXRFdmVudCgnb25sb2FkJyxhYS5pZCk7dGhpcy5hcmJpdGVyLmluZm9ybSgncGFn ZWxldF9vbmxvYWQnLHRydWUsZy5CRUhBVklPUl9FVkVOVCk7YWEucHJvdmlkZXMm JnRoaXMuYXJiaXRlci5pbmZvcm0oYWEucHJvdmlkZXMsdHJ1ZSx0KTt9LmJpbmQo dGhpcyksY2E9ZnVuY3Rpb24oKXt0aGlzLl9pc1JlbGV2YW50UGFnZWxldChhYSkm JnIoYWEub25hZnRlcmxvYWQpO30uYmluZCh0aGlzKTt0aGlzLmFyYml0ZXIucmVn aXN0ZXJDYWxsYmFjayhiYSxhYS5yZXF1aXJlcyk7dGhpcy5hcmJpdGVyLnJlZ2lz dGVyQ2FsbGJhY2soY2EsW3RoaXMub25sb2FkRXZ0XSk7fS5iaW5kKHRoaXMpLGZh bHNlLGFhLmlkKTt9LF9kb3dubG9hZERpc3BsYXlEZXBlbmRlbmNpZXNBbmREaXNw bGF5UGFnZWxldDpmdW5jdGlvbihhYSl7dGhpcy5faW5mb3JtUGFnZWxldEV2ZW50 KCdjc3MnLGFhLmlkKTt2YXIgYmE9KGFhLmNzc3x8W10pLmNvbmNhdChhYS5kaXNw bGF5SlN8fFtdKTtoLmxvYWRSZXNvdXJjZXMoYmEsZnVuY3Rpb24oKXt2YXIgY2E9 YWEuZGlzcGxheV9kZXBlbmRlbmN5fHxbXSxkYT1bXTtmb3IodmFyIGVhPTA7ZWE8 Y2EubGVuZ3RoO2VhKyspZGEucHVzaChjYVtlYV0rJ19kaXNwbGF5ZWQnKTt0aGlz LmFyYml0ZXIucmVnaXN0ZXJDYWxsYmFjayh0aGlzLl9kaXNwbGF5UGFnZWxldEhh bmRsZXIuYmluZCh0aGlzLGFhKSxkYSk7fS5iaW5kKHRoaXMpLGZhbHNlLGFhLmlk KTt9LG9uUGFnZWxldEFycml2ZTpmdW5jdGlvbihhYSl7dGhpcy5faW5mb3JtUGFn ZWxldEV2ZW50KCdhcnJpdmUnLGFhLmlkLGFhLnBoYXNlKTt2YXIgYmE9YWEucGhh c2U7aWYoIXRoaXMuX3BoYXNlRG9uZUNhbGxiYWNrc1tiYV0pdGhpcy5fcGhhc2VE b25lQ2FsbGJhY2tzW2JhXT10aGlzLmFyYml0ZXIucmVnaXN0ZXJDYWxsYmFjayh0 aGlzLl9vblBoYXNlRG9uZS5iaW5kKHRoaXMpLFsncGhhc2VfY29tcGxldGVfJyti YV0pO3RoaXMuYXJiaXRlci5yZWdpc3RlckNhbGxiYWNrKHRoaXMuX3BoYXNlRG9u ZUNhbGxiYWNrc1tiYV0sW2FhLmlkKydfZGlzcGxheWVkJ10pO3ZhciBjYT1hLlBh Z2VsZXRDYWNoZTtpZihjYSlpZihhYS5jYWNoZV9oaXQpe2FhPWNhLmxvYWRGcm9t Q2FjaGUoYWEsdGhpcy5hcmJpdGVyKTt9ZWxzZSBjYS53cml0ZShhYSx0aGlzLmFy Yml0ZXIpO3RoaXMuX3Byb2Nlc3NQYWdlbGV0KGFhKTt9LF9wcm9jZXNzUGFnZWxl dDpmdW5jdGlvbihhYSl7dmFyIGJhPWFhLnBoYXNlLGNhPXRoaXMuX2dldEFwcGVu ZFRhcmdldElEKGFhKXx8YWEuaWQ7ei5wYWdlbGV0SURzW2NhXT1jYTtpZihhYS50 aGVfZW5kKXRoaXMuX2xhc3RQaGFzZT1hYS5waGFzZTtpZihhYS50dGlfcGhhc2Uh PT11bmRlZmluZWQpdGhpcy5fdHRpUGhhc2U9YWEudHRpX3BoYXNlO2lmKGFhLmlz X3NlY29uZF90b19sYXN0X3BoYXNlKXRoaXMuX3NlY29uZFRvTGFzdFBoYXNlPWFh LnBoYXNlO2lmKGFhLmpzY2NfbWFwKXt2YXIgZGE9KGV2YWwpKGFhLmpzY2NfbWFw KTtqLmluaXRGb3JQYWdlbGV0KGNhLGRhKTt9aC5zZXRSZXNvdXJjZU1hcChhYS5y ZXNvdXJjZV9tYXApO2guZW5hYmxlQm9vdGxvYWQodihhYS5ib290bG9hZGFibGUp KTt2YXIgZWE9J3BoYXNlX2JlZ2luXycrYmE7dGhpcy5hcmJpdGVyLnJlZ2lzdGVy Q2FsbGJhY2sodGhpcy5fZG93bmxvYWREaXNwbGF5RGVwZW5kZW5jaWVzQW5kRGlz cGxheVBhZ2VsZXQuYmluZCh0aGlzLGFhKSxbZWFdKTt2YXIgZmE9W2FhLmlkKydf ZGlzcGxheWVkJ107aWYoIXRoaXMuanNOb25CbG9jaylmYS5wdXNoKHRoaXMuZG9t Q29udGVudEV2dCk7dGhpcy5hcmJpdGVyLnJlZ2lzdGVyQ2FsbGJhY2sodGhpcy5v bmxvYWRDYWxsYmFjayxbJ3BhZ2VsZXRfb25sb2FkJ10pO3RoaXMuYXJiaXRlci5y ZWdpc3RlckNhbGxiYWNrKHRoaXMuX2Rvd25sb2FkSnNGb3JQYWdlbGV0LmJpbmQo dGhpcyxhYSksZmEpO2FhLmlzX2xhc3QmJnRoaXMuYXJiaXRlci5pbmZvcm0oJ3Bo YXNlX2NvbXBsZXRlXycrYmEsdHJ1ZSx0KTt9LF9vblBoYXNlRG9uZTpmdW5jdGlv bigpe2lmKHRoaXMuX2N1cnJlbnRQaGFzZT09PXRoaXMuX3R0aVBoYXNlKXRoaXMu X2luZm9ybUV2ZW50RXh0ZXJuYWwoJ3R0aV9iaWdwaXBlJyx7cGhhc2U6dGhpcy5f dHRpUGhhc2V9KTt2YXIgYWE9dGhpcy5fY3VycmVudFBoYXNlKzEsYmE9KGZ1bmN0 aW9uKCl7dGhpcy5faW5mb3JtRXZlbnRFeHRlcm5hbCgncGhhc2VfYmVnaW4nLHtw aGFzZTphYX0pO3RoaXMuYXJiaXRlci5pbmZvcm0oJ3BoYXNlX2JlZ2luXycrYWEs dHJ1ZSx0KTt9KS5iaW5kKHRoaXMpO2lmKHRoaXMuX2N1cnJlbnRQaGFzZT09PXRo aXMuX2xhc3RQaGFzZSYmdGhpcy5faXNSZWxldmFudCgpKXRoaXMuYXJiaXRlci5p bmZvcm0oJ3BhZ2VsZXRfZGlzcGxheWVkX2FsbCcsdHJ1ZSx0KTt0aGlzLl9jdXJy ZW50UGhhc2UrKztpZihzKXtzZXRUaW1lb3V0KGJhLDIwKTt9ZWxzZSBiYSgpO30s X2lzUmVsZXZhbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09ei5fY3VycmVudF9p bnN0YW5jZXx8KHRoaXMuYXV0b21hdGljJiZ0aGlzLl9yZWxldmFudF9pbnN0YW5j ZT09ei5fY3VycmVudF9pbnN0YW5jZSl8fHRoaXMuanNOb25CbG9ja3x8dGhpcy5m b3JjZUZpbmlzaDt9LF9pc1JlbGV2YW50UGFnZWxldDpmdW5jdGlvbihhYSl7aWYo IXRoaXMuX2lzUmVsZXZhbnQoKSlyZXR1cm4gZmFsc2U7dmFyIGJhPXRoaXMuX2dl dEFwcGVuZFRhcmdldElEKGFhKXx8YWEuaWQ7cmV0dXJuIHoucGFnZWxldElEcy5o YXNPd25Qcm9wZXJ0eShiYSk7fSxfaW5mb3JtRXZlbnRFeHRlcm5hbDpmdW5jdGlv bihhYSxiYSl7YmE9YmF8fHt9O2JhLnRzPURhdGUubm93KCk7YmEubGlkPXRoaXMu

bGlkO3RoaXMuYXJiaXRlci5pbmZvcm0oYWEsYmEsdSk7fSxfaW5mb3JtUGFnZWxl dEV2ZW50OmZ1bmN0aW9uKGFhLGJhLGNhKXt2YXIgZGE9e2V2ZW50OmFhLGlkOmJh fTtpZihjYSlkYS5waGFzZT1jYTt0aGlzLl9pbmZvcm1FdmVudEV4dGVybmFsKCdw YWdlbGV0X2V2ZW50JyxkYSk7fX0pO3oucGFnZWxldElEcz17fTtlLmV4cG9ydHM9 ejt9KTsKX19kKCJsZWdhY3k6Ym9vdGxvYWRlciIsWyJCb290bG9hZGVyIl0sZnVu Y3Rpb24oYSxiLGMsZCl7YS5Cb290bG9hZGVyPWIoJ0Jvb3Rsb2FkZXInKTt9LDMp OwpfX2QoIkNsYXNzIixbImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwi Y29weVByb3BlcnRpZXMiLCJjcmVhdGVBcnJheUZyb20iXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7YignZnVuY3Rpb24tZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0 ZXInKSxoPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaT1iKCdjcmVhdGVBcnJheUZyb20n KSxqPXt9LGs9bnVsbCxsPXtleHRlbmQ6ZnVuY3Rpb24odCx1KXtpZighaylrPWcu c3Vic2NyaWJlKGcuQk9PVExPQUQsbik7aWYodHlwZW9mIHU9PSdzdHJpbmcnKXtt KHQsdSk7fWVsc2Ugbyh0LHUpO319O2Z1bmN0aW9uIG0odCx1KXt0Ll9fY2xhc3Nf ZXh0ZW5kaW5nPXRydWU7dmFyIHY9Zy5yZWdpc3RlckNhbGxiYWNrKG8uY3Vycnko dCx1KSxbZy5GVU5DVElPTl9FWFRFTlNJT04rJy8nK3UsZy5CT09UTE9BRF0pO2lm KHYhPT1udWxsKWpbdV09dHJ1ZTt9ZnVuY3Rpb24gbigpe2Zvcih2YXIgdCBpbiBq KWlmKCEhYVt0XSl7ZGVsZXRlIGpbdF07aWYoIWFbdF0uX19jbGFzc19leHRlbmRp bmcpe2cuaW5mb3JtKGcuRlVOQ1RJT05fRVhURU5TSU9OKycvJyt0LHRydWUsZy5C RUhBVklPUl9TVEFURSk7fWVsc2UgYVt0XS5fX2NsYXNzX25hbWU9dDt9fWZ1bmN0 aW9uIG8odCx1KXtkZWxldGUgdC5fX2NsYXNzX2V4dGVuZGluZzt1PXR5cGVvZiB1 PT0nc3RyaW5nJz9hW3VdOnU7dmFyIHY9cCh1LDApLHc9cCh0LHYucHJvdG90eXBl Ll9fbGV2ZWwrMSk7dy5wYXJlbnQ9djtpZighIXQuX19jbGFzc19uYW1lKWcuaW5m b3JtKGcuRlVOQ1RJT05fRVhURU5TSU9OKycvJyt0Ll9fY2xhc3NfbmFtZSx0cnVl LGcuQkVIQVZJT1JfU1RBVEUpO31mdW5jdGlvbiBwKHQsdSl7aWYodC5fbWV0YXBy b3RvdHlwZSlyZXR1cm4gdC5fbWV0YXByb3RvdHlwZTt2YXIgdj1uZXcgRnVuY3Rp b24oKTt2LmNvbnN0cnVjdD1xO3YucHJvdG90eXBlLmNvbnN0cnVjdD1zKHQsdSx0 cnVlKTt2LnByb3RvdHlwZS5fX2xldmVsPXU7di5iYXNlPXQ7dC5wcm90b3R5cGUu cGFyZW50PXY7dC5fbWV0YXByb3RvdHlwZT12O3JldHVybiB2O31mdW5jdGlvbiBx KHQpe3IodC5wYXJlbnQpO3ZhciB1PVtdLHY9dDt3aGlsZSh2LnBhcmVudCl7dmFy IHc9bmV3IHYucGFyZW50KCk7dS5wdXNoKHcpO3cuX19pbnN0YW5jZT10O3Y9di5w YXJlbnQ7fXQucGFyZW50PXVbMV07dS5yZXZlcnNlKCk7dS5wb3AoKTt0Ll9fcGFy ZW50cz11O3QuX19pbnN0YW5jZT10O3JldHVybiB0LnBhcmVudC5jb25zdHJ1Y3Qu YXBwbHkodC5wYXJlbnQsYXJndW1lbnRzKTt9ZnVuY3Rpb24gcih0KXtpZih0Lmlu aXRpYWxpemVkKXJldHVybjt2YXIgdT10LmJhc2UucHJvdG90eXBlO2lmKHQucGFy ZW50KXtyKHQucGFyZW50KTt2YXIgdj10LnBhcmVudC5wcm90b3R5cGU7Zm9yKHZh ciB3IGluIHYpaWYodyE9J19fbGV2ZWwnJiZ3IT0nY29uc3RydWN0JyYmdVt3XT09 PXVuZGVmaW5lZCl1W3ddPXQucHJvdG90eXBlW3ddPXZbd107fXQuaW5pdGlhbGl6 ZWQ9dHJ1ZTt2YXIgeD10LnByb3RvdHlwZS5fX2xldmVsO2Zvcih2YXIgdyBpbiB1 KWlmKHchPSdwYXJlbnQnKXVbd109dC5wcm90b3R5cGVbd109cyh1W3ddLHgpO31m dW5jdGlvbiBzKHQsdSx2KXtpZih0eXBlb2YgdCE9J2Z1bmN0aW9uJ3x8dC5fX3By b3RvdHlwZWQpcmV0dXJuIHQ7dmFyIHc9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLl9f aW5zdGFuY2U7aWYoeCl7dmFyIHk9eC5wYXJlbnQ7eC5wYXJlbnQ9dT94Ll9fcGFy ZW50c1t1LTFdOm51bGw7dmFyIHo9YXJndW1lbnRzO2lmKHYpe3o9W107Zm9yKHZh ciBhYT0xO2FhPGFyZ3VtZW50cy5sZW5ndGg7YWErKyl6LnB1c2goYXJndW1lbnRz W2FhXSk7fXZhciBiYT10LmFwcGx5KHgseik7eC5wYXJlbnQ9eTtyZXR1cm4gYmE7 fWVsc2UgcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpO307dy5fX3Byb3Rv dHlwZWQ9dHJ1ZTtyZXR1cm4gdzt9ZS5leHBvcnRzPWw7fSk7Cl9fZCgibGVnYWN5 OkNsYXNzIixbIkNsYXNzIl0sZnVuY3Rpb24oYSxiLGMsZCl7YS5DbGFzcz1iKCdD bGFzcycpO30sMyk7Cl9fZCgibGVnYWN5OmNvbnN0cnVjdG9yLWNhY2hlIixbIkpT Q0MiXSxmdW5jdGlvbihhLGIsYyxkKXthLkpTQ0M9YignSlNDQycpO30sMyk7Cl9f ZCgiZ29VUkkiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgs aSl7aD1oLnRvU3RyaW5nKCk7aWYoIWkmJmEuUGFnZVRyYW5zaXRpb25zJiZQYWdl VHJhbnNpdGlvbnMuaXNJbml0aWFsaXplZCgpKXtQYWdlVHJhbnNpdGlvbnMuZ28o aCk7fWVsc2UgaWYod2luZG93LmxvY2F0aW9uLmhyZWY9PWgpe3dpbmRvdy5sb2Nh dGlvbi5yZWxvYWQoKTt9ZWxzZSB3aW5kb3cubG9jYXRpb24uaHJlZj1oO31lLmV4 cG9ydHM9Zzt9KTsKX19kKCJsZWdhY3k6Z29VUkkiLFsiZ29VUkkiXSxmdW5jdGlv bihhLGIsYyxkKXthLmdvVVJJPWIoJ2dvVVJJJyk7fSwzKTsKX19kKCJJbml0aWFs SlNMb2FkZXIiLFsiQXJiaXRlciIsIkJvb3Rsb2FkZXIiLCJPbmxvYWRFdmVudCJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdC b290bG9hZGVyJyksaT1iKCdPbmxvYWRFdmVudCcpLGo9e0lOSVRJQUxfSlNfUkVB

RFk6J0JPT1RMT0FEL0pTUkVBRFknLGxvYWRPbkRPTUNvbnRlbnRSZWFkeTpmdW5j dGlvbihrLGwpe2cuc3Vic2NyaWJlKGkuT05MT0FEX0RPTUNPTlRFTlRfQ0FMTEJB Q0ssZnVuY3Rpb24oKXtmdW5jdGlvbiBtKCl7aC5sb2FkUmVzb3VyY2VzKGssZnVu Y3Rpb24oKXtnLmluZm9ybShqLklOSVRJQUxfSlNfUkVBRFksdHJ1ZSxnLkJFSEFW SU9SX1NUQVRFKTt9KTt9aWYobCl7c2V0VGltZW91dChtLGwpO31lbHNlIG0oKTt9 KTt9fTtlLmV4cG9ydHM9ajt9KTsKX19kKCJsb3dlckRvbWFpbiIsW10sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe2lmKGRvY3VtZW50LmRvbWFpbi50b0xvd2VyQ2FzZSgp Lm1hdGNoKC8oXnxcLilmYWNlYm9va1wuLiovKSlkb2N1bWVudC5kb21haW49d2lu ZG93LmxvY2F0aW9uLmhvc3RuYW1lLnJlcGxhY2UoL14uKihmYWNlYm9va1wuLiop JC9pLCckMScpO30pOwpfX2QoImxlZ2FjeTpvYmplY3QtY29yZS11dGlscyIsWyJj b3B5UHJvcGVydGllcyIsImlzRW1wdHkiXSxmdW5jdGlvbihhLGIsYyxkKXt2YXIg ZT1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGYoZyxoKXtyZXR1cm4gZSh3 aW5kb3dbZ118fCh3aW5kb3dbZ109e30pLGgpO31hLmlzX2VtcHR5PWIoJ2lzRW1w dHknKTthLmFkZF9wcm9wZXJ0aWVzPWY7YS5jb3B5UHJvcGVydGllcz1lO30sMyk7 Cl9fZCgiUGxhY2Vob2xkZXJMaXN0ZW5lciIsWyJBcmJpdGVyIiwiQ1NTIiwiUGFy ZW50Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxo PWIoJ0NTUycpLGk9YignUGFyZW50Jyksaj1kb2N1bWVudC5kb2N1bWVudEVsZW1l bnQsaz1mdW5jdGlvbihsKXtsPWx8fHdpbmRvdy5ldmVudDt2YXIgbT1sLnRhcmdl dHx8bC5zcmNFbGVtZW50LG49bS5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJyk7 aWYobil7dmFyIG89aS5ieUNsYXNzKG0sJ2ZvY3VzX3RhcmdldCcpO2lmKCdmb2N1 cyc9PWwudHlwZXx8J2ZvY3VzaW4nPT1sLnR5cGUpe3ZhciBwPW0udmFsdWUucmVw bGFjZSgvXHJcbi9nLCdcbicpLHE9bi5yZXBsYWNlKC9cclxuL2csJ1xuJyk7aWYo cD09cSYmaC5oYXNDbGFzcyhtLCdET01Db250cm9sX3BsYWNlaG9sZGVyJykpe20u dmFsdWU9Jyc7aC5yZW1vdmVDbGFzcyhtLCdET01Db250cm9sX3BsYWNlaG9sZGVy Jyk7fWlmKG8pe2guYWRkQ2xhc3MobywnY2hpbGRfaXNfYWN0aXZlJyk7aC5hZGRD bGFzcyhvLCdjaGlsZF9pc19mb2N1c2VkJyk7aC5hZGRDbGFzcyhvLCdjaGlsZF93 YXNfZm9jdXNlZCcpO2cuaW5mb3JtKCdyZWZsb3cnKTt9fWVsc2V7aWYobS52YWx1 ZT09PScnKXtoLmFkZENsYXNzKG0sJ0RPTUNvbnRyb2xfcGxhY2Vob2xkZXInKTtt LnZhbHVlPW47byYmaC5yZW1vdmVDbGFzcyhvLCdjaGlsZF9pc19hY3RpdmUnKTtt LnN0eWxlLmRpcmVjdGlvbj0nJzt9byYmaC5yZW1vdmVDbGFzcyhvLCdjaGlsZF9p c19mb2N1c2VkJyk7fX19O2lmKGouYWRkRXZlbnRMaXN0ZW5lcil7ai5hZGRFdmVu dExpc3RlbmVyKCdmb2N1cycsayx0cnVlKTtqLmFkZEV2ZW50TGlzdGVuZXIoJ2Js dXInLGssdHJ1ZSk7fWVsc2V7ai5hdHRhY2hFdmVudCgnb25mb2N1c2luJyxrKTtq LmF0dGFjaEV2ZW50KCdvbmZvY3Vzb3V0JyxrKTt9fSk7Cl9fZCgiaXNJbklmcmFt ZSIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGcoKXtyZXR1cm4g d2luZG93IT13aW5kb3cudG9wO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJFYWdsZUV5 ZSIsWyJBcmJpdGVyIiwiQm9vdGxvYWRlciIsIkVudiIsIk9ubG9hZEV2ZW50Iiwi aXNJbklmcmFtZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJp dGVyJyksaD1iKCdCb290bG9hZGVyJyksaT1iKCdFbnYnKSxqPWIoJ09ubG9hZEV2 ZW50Jyksaz1iKCdpc0luSWZyYW1lJyksbD1pLmVhZ2xlRXllQ29uZmlnfHx7fSxt PSdfZV8nLG49KHdpbmRvdy5uYW1lfHwnJykudG9TdHJpbmcoKTtpZihuLmxlbmd0 aD09NyYmbi5zdWJzdHIoMCwzKT09bSl7bj1uLnN1YnN0cigzKTt9ZWxzZXtuPWwu c2VlZDtpZighaygpKXdpbmRvdy5uYW1lPW0rbjt9dmFyIG89KHdpbmRvdy5sb2Nh dGlvbi5wcm90b2NvbD09J2h0dHBzOicmJmRvY3VtZW50LmNvb2tpZS5tYXRjaCgv XGJjc209MS8pKT8nOyBzZWN1cmUnOicnLHA9bStuKydfJyxxPW5ldyBEYXRlKERh dGUubm93KCkrNjA0ODAwMDAwKS50b0dNVFN0cmluZygpLHI9d2luZG93LmxvY2F0 aW9uLmhvc3RuYW1lLnJlcGxhY2UoL14uKihmYWNlYm9va1wuLiopJC9pLCckMScp LHM9JzsgZXhwaXJlcz0nK3ErJztwYXRoPS87IGRvbWFpbj0nK3Irbyx0PTAsdSx2 PWwuc2Vzc2lvblN0b3JhZ2UmJmEuc2Vzc2lvblN0b3JhZ2Usdz1kb2N1bWVudC5j b29raWUubGVuZ3RoLHg9ZmFsc2UseT1EYXRlLm5vdygpO2Z1bmN0aW9uIHooZWEp e3ZhciBmYT0yMTY2MTM2MjYxO2Zvcih2YXIgZ2E9MCxoYT1lYS5sZW5ndGg7Z2E8 aGE7KytnYSlmYT0oZmFeZWEuY2hhckNvZGVBdChnYSkpKjE2Nzc3NjE5O2ZhKz1m YTw8MTM7ZmFePWZhPj43O2ZhKz1mYTw8MztmYV49ZmE+PjE3O2ZhKz1mYTw8NTty ZXR1cm4gKGZhfDApKzIxNDc0ODM2NDg7fWZ1bmN0aW9uIGFhKGVhKXtyZXR1cm4g cCsodCsrKSsnPScrZW5jb2RlVVJJQ29tcG9uZW50KGVhKStzO31mdW5jdGlvbiBi YSgpe3ZhciBlYT1bXSxmYT1mYWxzZSxnYT0wLGhhPTA7dGhpcy5pc0VtcHR5PWZ1 bmN0aW9uKCl7cmV0dXJuICFlYS5sZW5ndGg7fTt0aGlzLmVucXVldWU9ZnVuY3Rp b24oaWEsamEpe2lmKGphKXtlYS51bnNoaWZ0KGlhKTt9ZWxzZSBlYS5wdXNoKGlh KTt9O3RoaXMuZGVxdWV1ZT1mdW5jdGlvbigpe2VhLnNoaWZ0KCk7fTt0aGlzLnBl ZWs9ZnVuY3Rpb24oKXtyZXR1cm4gZWFbMF07fTt0aGlzLmNsZWFyPWZ1bmN0aW9u

KGlhKXt3PU1hdGgubWluKHcsZG9jdW1lbnQuY29va2llLmxlbmd0aCk7aWYoIXgm JihuZXcgRGF0ZSgpLXk+NjAwMDApKXg9dHJ1ZTt2YXIgamE9IWlhJiYoZG9jdW1l bnQuY29va2llLnNlYXJjaChtKT49MCksa2E9ISFpLmNvb2tpZV9oZWFkZXJfbGlt aXQsbGE9aS5jb29raWVfY291bnRfbGltaXR8fDE5LG1hPWkuY29va2llX2hlYWRl cl9saW1pdHx8Mzk1MCxuYT1sYS01LG9hPW1hLTEwMDA7d2hpbGUoIXRoaXMuaXNF bXB0eSgpKXt2YXIgcGE9YWEodGhpcy5wZWVrKCkpO2lmKGthJiYocGEubGVuZ3Ro Pm1hfHwoeCYmcGEubGVuZ3RoK3c+bWEpKSl7dGhpcy5kZXF1ZXVlKCk7Y29udGlu dWU7fWlmKChqYXx8a2EpJiYoKGRvY3VtZW50LmNvb2tpZS5sZW5ndGgrcGEubGVu Z3RoPm1hKXx8KGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmxlbmd0aD5sYSkp KWJyZWFrO2RvY3VtZW50LmNvb2tpZT1wYTtqYT10cnVlO3RoaXMuZGVxdWV1ZSgp O312YXIgcWE9RGF0ZS5ub3coKTtpZihpYXx8IWZhJiZqYSYmKChoYT4wKSYmKE1h dGgubWluKDEwKk1hdGgucG93KDIsaGEtMSksNjAwMDApK2dhPHFhKSkmJmcucXVl cnkoai5PTkxPQUQpJiYoIXRoaXMuaXNFbXB0eSgpfHwoZG9jdW1lbnQuY29va2ll Lmxlbmd0aD5vYSl8fChkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5sZW5ndGg+ bmEpKSl7dmFyIHJhPW5ldyBJbWFnZSgpLHNhPXRoaXMsdGE9aS50cmFja2luZ19k b21haW58fCcnO2ZhPXRydWU7cmEub25sb2FkPWZ1bmN0aW9uIHdhKCl7ZmE9ZmFs c2U7aGE9MDtzYS5jbGVhcigpO307cmEub25lcnJvcj1yYS5vbmFib3J0PWZ1bmN0 aW9uIHdhKCl7ZmE9ZmFsc2U7Z2E9RGF0ZS5ub3coKTtoYSsrO307dmFyIHVhPWku ZmJfaXNiPycmZmJfaXNiPScraS5mYl9pc2I6JycsdmE9JyZfX3VzZXI9JytpLnVz ZXI7cmEuc3JjPXRhKycvYWpheC9uZWN0YXIucGhwP2FzeW5jU2lnbmFsPScrKE1h dGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDAwMCkrMSkrdWErdmErJyYnKyghaWE/ Jyc6J3M9JykrcWE7fX07fXU9bmV3IGJhKCk7aWYodil7dmFyIGNhPWZ1bmN0aW9u KCl7dmFyIGVhPTAsZmE9ZWE7ZnVuY3Rpb24gZ2EoKXt2YXIgamE9c2Vzc2lvblN0 b3JhZ2UuZ2V0SXRlbSgnX2VfaWRzJyk7aWYoamEpe3ZhciBrYT0oamErJycpLnNw bGl0KCc7Jyk7aWYoa2EubGVuZ3RoPT0yKXtlYT1wYXJzZUludChrYVswXSwxMCk7 ZmE9cGFyc2VJbnQoa2FbMV0sMTApO319fWZ1bmN0aW9uIGhhKCl7dmFyIGphPWVh Kyc7JytmYTtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfZV9pZHMnLGphKTt9ZnVu Y3Rpb24gaWEoamEpe3JldHVybiAnX2VfJysoKGphIT09dW5kZWZpbmVkKT9qYTpl YSsrKTt9dGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGZhPT09ZWE7fTt0 aGlzLmVucXVldWU9ZnVuY3Rpb24oamEsa2Epe3ZhciBsYT1rYT9pYSgtLWZhKTpp YSgpO3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0obGEsamEpO2hhKCk7fTt0aGlzLmRl cXVldWU9ZnVuY3Rpb24oKXt0aGlzLmlzRW1wdHkoKTtzZXNzaW9uU3RvcmFnZS5y ZW1vdmVJdGVtKGlhKGZhKSk7ZmErKztoYSgpO307dGhpcy5wZWVrPWZ1bmN0aW9u KCl7dmFyIGphPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaWEoZmEpKTtyZXR1cm4g amE/KGphKycnKTpqYTt9O3RoaXMuY2xlYXI9dS5jbGVhcjtnYSgpO307dT1uZXcg Y2EoKTt9dmFyIGRhPXtsb2c6ZnVuY3Rpb24oZWEsZmEsZ2Epe2lmKGkubm9fY29v a2llcylyZXR1cm47dmFyIGhhPVtuLERhdGUubm93KCksZWFdLmNvbmNhdChmYSk7 aGEucHVzaChoYS5sZW5ndGgpO2Z1bmN0aW9uIGlhKCl7dmFyIGphPUpTT04uc3Ry aW5naWZ5KGhhKTt0cnl7dS5lbnF1ZXVlKGphLCEhZ2EpO3UuY2xlYXIoISFnYSk7 fWNhdGNoKGthKXtpZih2JiYoa2EuY29kZT09PTEwMDApKXt1PW5ldyBiYSgpO3Y9 ZmFsc2U7aWEoKTt9fX1pYSgpO30sY3JlYXRlTG9nZ2VyOmZ1bmN0aW9uKGVhLGZh KXtmYT0oZmE9PT11bmRlZmluZWQpPzE6ZmE7dmFyIGdhPWZ1bmN0aW9uKGhhLGlh KXtpZihnYS5lbmFibGVkKWRhLmxvZyhlYSxoYSxpYSk7fTtnYS5lbmFibGVkPWZh bHNlO2dhLl9rZXk9KGkudXNlcnx8TWF0aC5yYW5kb20oKSkrZWE7Z2EuZW5hYmxl ZD0oeihnYS5fa2V5KSU2NTUzNS82NTUzNSk8PWZhO3JldHVybiBnYTt9LGdldFNl c3Npb25JRDpmdW5jdGlvbigpe3JldHVybiBuO30saGFzaDpmdW5jdGlvbihlYSl7 cmV0dXJuIHooZWEpO319O2EuRWFnbGVFeWU9ZS5leHBvcnRzPWRhO30sMyk7Cl9f ZCgiQ2xpY2tSZWZVdGlscyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PXtnZXRfaW50ZXJuX3JlZjpmdW5jdGlvbihoKXtpZighIWgpe3ZhciBpPXtwcm9m aWxlX21pbmlmZWVkOjEsZ2JfY29udGVudF9hbmRfdG9vbGJhcjoxLGdiX211ZmZp bl9hcmVhOjEsZWdvOjEsYm9va21hcmtzX21lbnU6MSxqZXdlbEJveE5vdGlmOjEs amV3ZWxOb3RpZjoxLEJlZXBlckJveDoxLG5hdlNlYXJjaDoxfTtmb3IodmFyIGo9 aDtqJiZqIT1kb2N1bWVudC5ib2R5O2o9ai5wYXJlbnROb2RlKXtpZighai5pZHx8 dHlwZW9mIGouaWQhPT0nc3RyaW5nJyljb250aW51ZTtpZihqLmlkLnN1YnN0cigw LDgpPT0ncGFnZWxldF8nKXJldHVybiBqLmlkLnN1YnN0cig4KTtpZihqLmlkLnN1 YnN0cigwLDgpPT0nYm94X2FwcF8nKXJldHVybiBqLmlkO2lmKGlbai5pZF0pcmV0 dXJuIGouaWQ7fX1yZXR1cm4gJy0nO30sZ2V0X2hyZWY6ZnVuY3Rpb24oaCl7cmV0 dXJuIChoLmdldEF0dHJpYnV0ZSYmKGguZ2V0QXR0cmlidXRlKCdhamF4aWZ5Jyl8 fGguZ2V0QXR0cmlidXRlKCdkYXRhLWVuZHBvaW50JykpfHxoLmFjdGlvbnx8aC5o cmVmfHxoLm5hbWV8fG51bGwpO30sc2hvdWxkX3JlcG9ydDpmdW5jdGlvbihoLGkp

e2lmKGk9PSdGT1JDRScpcmV0dXJuIHRydWU7aWYoaT09J0lORElSRUNUJylyZXR1 cm4gZmFsc2U7cmV0dXJuIGgmJihnLmdldF9ocmVmKGgpfHwoaC5nZXRBdHRyaWJ1 dGUmJmguZ2V0QXR0cmlidXRlKCdkYXRhLWZ0JykpKTt9fTtlLmV4cG9ydHM9Zzt9 KTsKX19kKCJjb2xsZWN0RGF0YUF0dHJpYnV0ZXMiLFsiZ2UiXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGc9YignZ2UnKTtmdW5jdGlvbiBoKGksail7dmFyIGs9 e30sbD17fSxtPWoubGVuZ3RoLG4sbztmb3Iobj0wO248bTsrK24pe2tbaltuXV09 e307bFtqW25dXT0nZGF0YS0nK2pbbl07fXZhciBwPXt0bjonJywidG4tZGVidWci OicsJ307d2hpbGUoaSl7aWYoaS5nZXRBdHRyaWJ1dGUpZm9yKG49MDtuPG07Kytu KXt2YXIgcT1pLmdldEF0dHJpYnV0ZShsW2pbbl1dKTtpZihxKXt2YXIgcj1KU09O LnBhcnNlKHEpO2Zvcih2YXIgcyBpbiByKWlmKHBbc10hPT11bmRlZmluZWQpe2lm KGtbaltuXV1bc109PT11bmRlZmluZWQpa1tqW25dXVtzXT1bXTtrW2pbbl1dW3Nd LnB1c2gocltzXSk7fWVsc2UgaWYoa1tqW25dXVtzXT09PXVuZGVmaW5lZClrW2pb bl1dW3NdPXJbc107fX1pZihpLmdldEF0dHJpYnV0ZSYmKG89aS5nZXRBdHRyaWJ1 dGUoJ2RhdGEtb3duZXJpZCcpKSl7aT1nKG8pO31lbHNlIGk9aS5wYXJlbnROb2Rl O31mb3IodmFyIHQgaW4gaylmb3IodmFyIHUgaW4gcClpZihrW3RdW3VdIT09dW5k ZWZpbmVkKWtbdF1bdV09a1t0XVt1XS5qb2luKHBbdV0pO3JldHVybiBrO31lLmV4 cG9ydHM9aDt9KTsKX19kKCJzZXRVRUNvb2tpZSIsWyJFbnYiXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGc9YignRW52Jyk7ZnVuY3Rpb24gaChpKXtpZighZy5u b19jb29raWVzKXt2YXIgaj0wO2lmKGEuYWZ0ZXJsb2FkZWQpe2o9Mjt9ZWxzZSBp ZihhLmxvYWRlZClqPTE7ZG9jdW1lbnQuY29va2llPSJhY3Q9IitlbmNvZGVVUklD b21wb25lbnQoaSsiOiIraikrIjsgcGF0aD0vOyBkb21haW49Iit3aW5kb3cubG9j YXRpb24uaG9zdG5hbWUucmVwbGFjZSgvXi4qKFwuZmFjZWJvb2tcLi4qKSQvaSwn JDEnKTt9fWUuZXhwb3J0cz1oO30pOwpfX2QoIkNsaWNrUmVmIixbIkFyYml0ZXIi LCJFYWdsZUV5ZSIsIkNsaWNrUmVmVXRpbHMiLCJjb2xsZWN0RGF0YUF0dHJpYnV0 ZXMiLCJjb3B5UHJvcGVydGllcyIsImdlIiwic2V0VUVDb29raWUiLCIkIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0VhZ2xl RXllJyksaT1iKCdDbGlja1JlZlV0aWxzJyksaj1iKCdjb2xsZWN0RGF0YUF0dHJp YnV0ZXMnKSxrPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbD1iKCdnZScpLG09Yignc2V0 VUVDb29raWUnKSxuPWIoJyQnKTtmdW5jdGlvbiBvKHEpe2lmKCFsKCdjb250ZW50 JykpcmV0dXJuIFswLDAsMCwwXTt2YXIgcj1uKCdjb250ZW50Jykscz1hLlZlY3Rv cjI/YS5WZWN0b3IyLmdldEV2ZW50UG9zaXRpb24ocSk6e3g6MCx5OjB9O3JldHVy biBbcy54LHMueSxyLm9mZnNldExlZnQsci5jbGllbnRXaWR0aF07fWZ1bmN0aW9u IHAocSxyLGV2ZW50LHMpe3ZhciB0PSghYS5BcmJpdGVyTW9uaXRvcik/J3InOidh Jyx1PVswLDAsMCwwXSx2LHcseDtpZighIWV2ZW50KXt2PWV2ZW50LnR5cGU7aWYo dj09J2NsaWNrJyYmbCgnY29udGVudCcpKXU9byhldmVudCk7dmFyIHk9MDtldmVu dC5jdHJsS2V5JiYoeSs9MSk7ZXZlbnQuc2hpZnRLZXkmJih5Kz0yKTtldmVudC5h bHRLZXkmJih5Kz00KTtldmVudC5tZXRhS2V5JiYoeSs9OCk7aWYoeSl2Kz15O31p ZighIXIpdz1pLmdldF9ocmVmKHIpO3ZhciB6PVtdO2lmKGEuQXJiaXRlck1vbml0 b3Ipe3g9YS5BcmJpdGVyTW9uaXRvci5nZXRJbnRlcm5SZWYocik7ej1hLkFyYml0 ZXJNb25pdG9yLmdldEFjdEZpZWxkcygpO312YXIgYWE9aighIWV2ZW50PyhldmVu dC50YXJnZXR8fGV2ZW50LnNyY0VsZW1lbnQpOnIsWydmdCcsJ2d0J10pO2soYWEu ZnQscy5mdHx8e30pO2soYWEuZ3Qscy5ndHx8e30pO2lmKHR5cGVvZihhYS5mdC5l aSk9PT0nc3RyaW5nJylkZWxldGUgYWEuZnQuZWk7dmFyIGJhPVtxLl91ZV90cyxx Ll91ZV9jb3VudCx3fHwnLScscS5fY29udGV4dCx2fHwnLScseHx8aS5nZXRfaW50 ZXJuX3JlZihyKSx0LGEuVVJJP2EuVVJJLmdldFJlcXVlc3RVUkkodHJ1ZSx0cnVl KS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCk6bG9jYXRpb24ucGF0aG5h bWUrbG9jYXRpb24uc2VhcmNoK2xvY2F0aW9uLmhhc2gsYWFdLmNvbmNhdCh1KS5j b25jYXQoeik7cmV0dXJuIGJhO31nLnN1YnNjcmliZSgiQ2xpY2tSZWZBY3Rpb24v bmV3IixmdW5jdGlvbihxLHIpe2lmKGkuc2hvdWxkX3JlcG9ydChyLm5vZGUsci5t b2RlKSl7dmFyIHM9cChyLmNmYSxyLm5vZGUsci5ldmVudCxyLmV4dHJhX2RhdGEp O20oci5jZmEudWUpO2gubG9nKCdhY3QnLHMpO319KTt9KTsKX19kKCJjbGlja1Jl ZkFjdGlvbiIsWyJBcmJpdGVyIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ0FyYml0ZXInKTtmdW5jdGlvbiBoKG4sbyxwKXt2YXIgcT1uKycvJytvO3Ro aXMudWU9cTt0aGlzLl91ZV90cz1uO3RoaXMuX3VlX2NvdW50PW87dGhpcy5fY29u dGV4dD1wO3RoaXMuX25zPW51bGw7fWgucHJvdG90eXBlLnNldF9uYW1lc3BhY2U9 ZnVuY3Rpb24obil7dGhpcy5fbnM9bjtyZXR1cm4gdGhpczt9O2gucHJvdG90eXBl LmNvYWxlc2NlX25hbWVzcGFjZT1mdW5jdGlvbihuKXtpZih0aGlzLl9ucz09PW51 bGwpdGhpcy5fbnM9bjtyZXR1cm4gdGhpczt9O2gucHJvdG90eXBlLmFkZF9ldmVu dD1mdW5jdGlvbigpe3JldHVybiB0aGlzO307dmFyIGk9MCxqPTAsaz1udWxsLGw9 W107ZnVuY3Rpb24gbShuLG8sZXZlbnQscCxxKXt2YXIgcj1EYXRlLm5vdygpO3E9

cXx8e307aWYoIW8mJmV2ZW50KW89ZXZlbnQuZ2V0VGFyZ2V0KCk7dmFyIHM9NTA7 aWYobyYmaylpZihyLWo8cyYmbz09ayYmcCE9IkZPUkNFIilyZXR1cm4gbFtsLmxl bmd0aC0xXTtpZighd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJmRvY3VtZW50LmNy ZWF0ZUV2ZW50T2JqZWN0KWV2ZW50PWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0 KGV2ZW50KTtrPW87dmFyIHQ9bmV3IGgocixpLG4pO2wucHVzaCh0KTt3aGlsZShs Lmxlbmd0aD4xMClsLnNoaWZ0KCk7Zy5pbmZvcm0oIkNsaWNrUmVmQWN0aW9uL25l dyIse2NmYTp0LG5vZGU6byxtb2RlOnAsZXZlbnQ6ZXZlbnQsZXh0cmFfZGF0YTpx fSk7aj1yO2krKztyZXR1cm4gdDt9ZS5leHBvcnRzPWEuY2xpY2tSZWZBY3Rpb249 bTt9KTsKX19kKCJ0cmFja1JlZmVycmVyIixbIlBhcmVudCJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdQYXJlbnQnKTtmdW5jdGlvbiBoKGksail7aT1n LmJ5QXR0cmlidXRlKGksJ2RhdGEtcmVmZXJyZXInKTtpZihpKXt2YXIgaz0vXig/ Oig/OlteOlwvPyNdKyk6KT8oPzpcL1wvKD86W15cLz8jXSopKT8oW14/I10qKSg/ Olw/KFteI10qKSk/KD86IyguKikpPy8uZXhlYyhqKVsxXXx8Jyc7aWYoIWspcmV0 dXJuO3ZhciBsPWsrJ3wnK2kuZ2V0QXR0cmlidXRlKCdkYXRhLXJlZmVycmVyJyks bT1uZXcgRGF0ZSgpO20uc2V0VGltZShEYXRlLm5vdygpKzEwMDApO2RvY3VtZW50 LmNvb2tpZT0ieC1zcmM9IitlbmNvZGVVUklDb21wb25lbnQobCkrIjsgIisiZXhw aXJlcz0iK20udG9HTVRTdHJpbmcoKSsiO3BhdGg9LzsgZG9tYWluPSIrd2luZG93 LmxvY2F0aW9uLmhvc3RuYW1lLnJlcGxhY2UoL14uKihcLmZhY2Vib29rXC4uKikk L2ksJyQxJyk7fXJldHVybiBpO31lLmV4cG9ydHM9aDt9KTsKX19kKCJCYW56YWlD b21tb24iLFsiQmFuemFpQ29uZmlnIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPWMoJ0JhbnphaUNvbmZpZycpLGg9e3N0b3JlOnRydWUsZGVsYXk6Zy5NSU5f V0FJVHx8MTAwMH0saT17c3RvcmU6ZmFsc2UsZGVsYXk6Zy5NQVhfV0FJVHx8NjAw MDB9LGosayxsLG0sbjtmdW5jdGlvbiBvKCl7az1bXTtsPVtdO31mdW5jdGlvbiBw KHYpe3ZhciB3PURhdGUubm93KCkrdjtpZighbnx8dzxuKXtuPXc7Y2xlYXJUaW1l b3V0KG0pO209c2V0VGltZW91dChyLHYsZmFsc2UpO319ZnVuY3Rpb24gcSh2LHcs eCl7eD14fHxpO3ZhciB5PVt2LHddO2sucHVzaCh5KTtpZih4LnN0b3JlKWwucHVz aCh5KTtwKHguZGVsYXl8fDYwMDAwKTt9ZnVuY3Rpb24gcigpe249bnVsbDtwKGku ZGVsYXkpO2lmKGouaXNTZW5kaW5nKCkpcmV0dXJuO2ouaW5mb3JtKHUuU0VORCk7 aWYoay5sZW5ndGg8PTApe2ouaW5mb3JtKHUuT0spO3JldHVybjt9dmFyIHY9aztv KCk7ai5zZW5kKHYpO31mdW5jdGlvbiBzKHYpe2o9djtqLm9uVW5sb2FkKGZ1bmN0 aW9uKCl7ai5pbmZvcm0odS5TSFVURE9XTik7dC5zdG9yZSgpO30pO312YXIgdD1h LnNlc3Npb25TdG9yYWdlP3tzdG9yZTpmdW5jdGlvbiB2KCl7YS5zZXNzaW9uU3Rv cmFnZS5zZXRJdGVtKCdCYW56YWknLEpTT04uc3RyaW5naWZ5KGspKTt9LHJlc3Rv cmU6ZnVuY3Rpb24gdigpe2lmKCdCYW56YWknIGluIGEuc2Vzc2lvblN0b3JhZ2Up e2s9W10uY29uY2F0KEpTT04ucGFyc2UoYS5zZXNzaW9uU3RvcmFnZS5nZXRJdGVt KCdCYW56YWknKSkpO2w9W10uY29uY2F0KGspO2Euc2Vzc2lvblN0b3JhZ2UucmVt b3ZlSXRlbSgnQmFuemFpJyk7fX19OntzdG9yZTpmdW5jdGlvbigpe30scmVzdG9y ZTpmdW5jdGlvbigpe319LHU9e1NFTkQ6J0JhbnphaTpTRU5EJyxPSzonQmFuemFp Ok9LJyxFUlJPUjonQmFuemFpOkVSUk9SJyxTSFVURE9XTjonQmFuemFpOlNIVVRE T1dOJyxWSVRBTDpoLFNFTkRfVElNRU9VVDoxNTAwMCxpc0VuYWJsZWQ6ZnVuY3Rp b24odil7cmV0dXJuIGcuZ2tzJiZnLmdrc1t2XTt9LHBvc3Q6cSxzZXRBZGFwdGVy OnMsc3Vic2NyaWJlOmZ1bmN0aW9uKHYsdyl7ai5zdWJzY3JpYmUodix3KTt9fTtv KCk7dC5yZXN0b3JlKCk7cChpLmRlbGF5KTtlLmV4cG9ydHM9dTt9KTsKX19kKCJR dWVyeVN0cmluZyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXtlbmNv ZGU6ZnVuY3Rpb24oaCl7dmFyIGk9W107T2JqZWN0LmtleXMoaCkuZm9yRWFjaChm dW5jdGlvbihqKXt2YXIgaz1oW2pdO2lmKHR5cGVvZiBrPT09J3VuZGVmaW5lZCcp cmV0dXJuO2lmKGs9PT1udWxsKXtpLnB1c2goaik7cmV0dXJuO31pLnB1c2goZW5j b2RlVVJJQ29tcG9uZW50KGopKyc9JytlbmNvZGVVUklDb21wb25lbnQoaykpO30p O3JldHVybiBpLmpvaW4oJyYnKTt9LGRlY29kZTpmdW5jdGlvbihoKXt2YXIgaT17 fTtpZihoPT09JycpcmV0dXJuIGk7dmFyIGo9aC5zcGxpdCgnJicpLGs9ai5sZW5n dGg7d2hpbGUoay0tKXt2YXIgbD1qW2tdLnNwbGl0KCc9JywyKTtpW2RlY29kZVVS SUNvbXBvbmVudChsWzBdKV09bC5sZW5ndGg9PT0yP2RlY29kZVVSSUNvbXBvbmVu dChsWzFdKTpudWxsO31yZXR1cm4gaTt9LGFwcGVuZFRvVXJsOmZ1bmN0aW9uKGgs aSl7cmV0dXJuIGgrKH5oLmluZGV4T2YoJz8nKT8nJic6Jz8nKSsodHlwZW9mIGk9 PT0nc3RyaW5nJz9pOmcuZW5jb2RlKGkpKTt9fTtlLmV4cG9ydHM9Zzt9KTsKX19k KCJYSFIiLFsiRW52Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Vu dicpLGg9e2NyZWF0ZTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gYS5YTUxIdHRwUmVx dWVzdD9uZXcgYS5YTUxIdHRwUmVxdWVzdCgpOm5ldyBBY3RpdmVYT2JqZWN0KCJN U1hNTDIuWE1MSFRUUC4zLjAiKTt9Y2F0Y2goaSl7fX0sZ2V0QXN5bmNQYXJhbXM6 ZnVuY3Rpb24oaSl7dmFyIGo9e19fdXNlcjpnLnVzZXIsX19hOjF9O2lmKGk9PSdQ

T1NUJyYmZy5mYl9kdHNnKWouZmJfZHRzZz1nLmZiX2R0c2c7aWYoZy5mYl9pc2Ip ai5mYl9pc2I9Zy5mYl9pc2I7cmV0dXJuIGo7fX07ZS5leHBvcnRzPWg7fSk7Cl9f ZCgiQmFuemFpRGVza3RvcCIsWyJBcmJpdGVyIiwiQmFuemFpQ29tbW9uIiwiUXVl cnlTdHJpbmciLCJSdW4iLCJYSFIiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignQXJiaXRlcicpLGg9YignQmFuemFpQ29tbW9uJyksaT1iKCdRdWVyeVN0 cmluZycpLGo9YignUnVuJyksaz1iKCdYSFInKSxsPW51bGwsbT1uZXcgZygpLG49 Jy9hamF4L2JhbnphaS9iYW56YWkucGhwJyxvPXtpbmZvcm06ZnVuY3Rpb24gcChx KXttLmluZm9ybShxKTt9LHN1YnNjcmliZTpmdW5jdGlvbihwLHEpe20uc3Vic2Ny aWJlKHAscSk7fSxjbGVhbnVwOmZ1bmN0aW9uIHAoKXtpZihsJiZsLnJlYWR5U3Rh dGU8NClsLmFib3J0KCk7aWYobClsPWwub25yZWFkeXN0YXRlY2hhbmdlPW51bGw7 fSxpc1NlbmRpbmc6ZnVuY3Rpb24gcCgpe3JldHVybiAhIWw7fSxzZW5kOmZ1bmN0 aW9uIHAocSl7dmFyIHI9J1BPU1QnO2w9ay5jcmVhdGUoKTtsLm9wZW4ocixuLHRy dWUpO2wuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywnYXBwbGljYXRp b24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7bC5vbnJlYWR5c3RhdGVjaGFuZ2U9 ZnVuY3Rpb24oKXtpZihsLnJlYWR5U3RhdGU+PTQpe3ZhciB0PWwuc3RhdHVzO28u Y2xlYW51cCgpO28uaW5mb3JtKHQ9PTIwMD9oLk9LOmguRVJST1IpO319O3NldFRp bWVvdXQoby5jbGVhbnVwLGguU0VORF9USU1FT1VULGZhbHNlKTt2YXIgcz1rLmdl dEFzeW5jUGFyYW1zKHIpO3MucT1KU09OLnN0cmluZ2lmeShxKTtsLnNlbmQoaS5l bmNvZGUocykpO30sb25VbmxvYWQ6ZnVuY3Rpb24gcChxKXtqLm9uVW5sb2FkKHEp O319O2guc2V0QWRhcHRlcihvKTtlLmV4cG9ydHM9aDt9KTsKX19kKCJ1c2VyQWN0 aW9uIixbIkFyYml0ZXIiLCJCYW56YWlEZXNrdG9wIiwiY29weVByb3BlcnRpZXMi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9Yign QmFuemFpRGVza3RvcCcpLGk9YignY29weVByb3BlcnRpZXMnKSxqPTUwLGs9W10s bD17fSxtPXt9O2Z1bmN0aW9uIG4odCx1LHYsdyxldmVudCl7dmFyIHg9dCsnLycr dSx5PXModyk7aSh0aGlzLHt1ZTp4LF91YWlfbG9nZ2VkOmZhbHNlLF91YWlfdGlt ZW91dDpudWxsLF9wcmltYXJ5Ont9LF9mYWxsYmFjazp7fSxfZGVmYXVsdF91YV9p ZDp5fHwnLScsX2RlZmF1bHRfYWN0aW9uX3R5cGU6ZXZlbnQ/ZXZlbnQudHlwZTon LScsX3RzOnQsX25zOnYsX3N0YXJ0X3RzOnQsX3ByZXZfZXZlbnQ6J3MnLF91ZV90 czp0LF91ZV9jb3VudDp1LF9kYXRhX3ZlcnNpb246MSxfZXZlbnRfdmVyc2lvbjoy LF9pbmZvX3ZlcnNpb246Mn0pO3RoaXMuX2xvZygndWFuJyxbMSx4XSk7fWkobi5w cm90b3R5cGUse19sb2c6ZnVuY3Rpb24odCx1KXt2YXIgdj1sW3RdIT09dW5kZWZp bmVkP2xbdF06dHJ1ZSx3PW1bdF0seD13P3dbdGhpcy5fbnNdOnt9LHk9eD94W3Ro aXMuX3VhX2lkXTp1bmRlZmluZWQ7aWYoaC5pc0VuYWJsZWQoJ3VzZXJhY3Rpb24n KSYmKHkhPT11bmRlZmluZWQ/eTp2KSloLnBvc3QodCx1LGguVklUQUwpO30sX2dl dF9hY3Rpb25fdHlwZTpmdW5jdGlvbigpe3JldHVybiAodGhpcy5fcHJpbWFyeS5f YWN0aW9uX3R5cGV8fHRoaXMuX2ZhbGxiYWNrLl9hY3Rpb25fdHlwZXx8dGhpcy5f ZGVmYXVsdF9hY3Rpb25fdHlwZSk7fSxfZ2V0X3VhX2lkOmZ1bmN0aW9uKCl7cmV0 dXJuICh0aGlzLl9wcmltYXJ5Ll91YV9pZHx8dGhpcy5fZmFsbGJhY2suX3VhX2lk fHx0aGlzLl9kZWZhdWx0X3VhX2lkKTt9LF9sb2dfdWFpOmZ1bmN0aW9uKCl7dmFy IHQ9W3RoaXMuX2luZm9fdmVyc2lvbix0aGlzLnVlLHRoaXMuX25zLHRoaXMuX2dl dF91YV9pZCgpLHRoaXMuX2dldF9hY3Rpb25fdHlwZSgpXTt0aGlzLl9sb2coJ3Vh aScsdCk7dGhpcy5fdWFpX2xvZ2dlZD10cnVlO3RoaXMuX3VhaV90aW1lb3V0PW51 bGw7fSx1YWk6ZnVuY3Rpb24odCx1LHYpe2lmKCF0aGlzLl91YWlfbG9nZ2VkKXt0 aGlzLl91YWlfdGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3VhaV90aW1lb3V0 KTt0aGlzLl9wcmltYXJ5Ll91YV9pZD11O3RoaXMuX3ByaW1hcnkuX2FjdGlvbl90 eXBlPXQ7aWYodj09PXVuZGVmaW5lZCl7dGhpcy5fbG9nX3VhaSgpO31lbHNlIGlm KHY9PT1mYWxzZSl7dGhpcy5fdWFpX2xvZ2dlZD10cnVlO31lbHNle3ZhciB3PXRo aXM7dj12fHwwO3RoaXMuX3VhaV90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24o KXt3Ll9sb2dfdWFpLmFwcGx5KHcpO30sdik7fX1yZXR1cm4gdGhpczt9LHVhaV9m YWxsYmFjazpmdW5jdGlvbih0LHUsdil7aWYoIXRoaXMuX3VhaV9sb2dnZWQpe3Zh ciB3PXRoaXM7dGhpcy5fdWFpX3RpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl91 YWlfdGltZW91dCk7dGhpcy5fZmFsbGJhY2suX3VhX2lkPXU7dGhpcy5fZmFsbGJh Y2suX2FjdGlvbl90eXBlPXQ7dj0odj09PXVuZGVmaW5lZCk/ajp2O3RoaXMuX3Vh aV90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt3Ll9sb2dfdWFpLmFwcGx5 KHcpO30sdik7fXJldHVybiB0aGlzO30sYWRkX2V2ZW50OmZ1bmN0aW9uKHQsdSx2 KXt1PXV8fDA7dmFyIHc9KERhdGUubm93KCktdSkseD13LXRoaXMuX3RzLHk9dy0o dj92OnRoaXMuX3VlX3RzKSx6PVt0aGlzLl9ldmVudF92ZXJzaW9uLHRoaXMudWUs dGhpcy5fbnMsdGhpcy5fZ2V0X3VhX2lkKCksdGhpcy5fcHJldl9ldmVudCx0LHgs eV07aWYodGhpcy5fZ2V0X3VhX2lkKCkpe3RoaXMuX2xvZygndWFlJyx6KTt0aGlz Ll90cz13O3RoaXMuX3ByZXZfZXZlbnQ9dDt9cmV0dXJuIHRoaXM7fSxhZGRfZGF0

YTpmdW5jdGlvbih0KXt2YXIgdT1bdGhpcy5fZGF0YV92ZXJzaW9uLHRoaXMudWUs dF07dGhpcy5fbG9nKCd1YWQnLHUpO3JldHVybiB0aGlzO319KTt2YXIgbz0wLHA9 MCxxPW51bGw7ZnVuY3Rpb24gcih0LHUsZXZlbnQsdil7dj12fHx7fTt2YXIgdz1E YXRlLm5vdygpO2lmKCF1JiZldmVudCl1PWV2ZW50LmdldFRhcmdldCgpO2lmKHUm JnEpaWYody1wPGomJnU9PXEmJnYubW9kZT09IkRFRFVQIilyZXR1cm4ga1trLmxl bmd0aC0xXTt2YXIgeD1uZXcgbih3LG8sdCx1LGV2ZW50KTtpZighd2luZG93LmFk ZEV2ZW50TGlzdGVuZXImJmRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KWV2ZW50 PWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KGV2ZW50KTtxPXU7ay5wdXNoKHgp O3doaWxlKGsubGVuZ3RoPjEwKWsuc2hpZnQoKTtnLmluZm9ybSgiVXNlckFjdGlv bi9uZXciLHt1YTp4LG5vZGU6dSxtb2RlOnYubW9kZSxldmVudDpldmVudH0pO3A9 dztvKys7cmV0dXJuIHg7fWZ1bmN0aW9uIHModCl7aWYoIXR8fCF0Lm5vZGVOYW1l KXJldHVybiBudWxsO3JldHVybiB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7fXIu c2V0VUFUeXBlQ29uZmlnPWZ1bmN0aW9uKHQpe2kobCx0KTt9O3Iuc2V0Q3VzdG9t U2FtcGxlQ29uZmlnPWZ1bmN0aW9uKHQpe2kobSx0KTt9O3IuZ2V0Q3VycmVudFVF Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbzt9O2UuZXhwb3J0cz1hLnVzZXJBY3Rp b249cjt9KTsKX19kKCJQcmltZXIiLFsiQ2xpY2tSZWYiLCJmdW5jdGlvbi1leHRl bnNpb25zIiwiQm9vdGxvYWRlciIsIkNTUyIsIlBhcmVudCIsImNsaWNrUmVmQWN0 aW9uIiwidHJhY2tSZWZlcnJlciIsInVzZXJBY3Rpb24iXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7YignQ2xpY2tSZWYnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7 dmFyIGc9YignQm9vdGxvYWRlcicpLGg9YignQ1NTJyksaT1iKCdQYXJlbnQnKSxq PWIoJ2NsaWNrUmVmQWN0aW9uJyksaz1iKCd0cmFja1JlZmVycmVyJyksbD1iKCd1 c2VyQWN0aW9uJyksbT1udWxsLG49L2FzeW5jKD86LXBvc3QpP3xkaWFsb2coPzot cG9zdCk/fHRoZWF0ZXJ8dG9nZ2xlLyxvPWRvY3VtZW50LmRvY3VtZW50RWxlbWVu dDtmdW5jdGlvbiBwKHMsdCl7cz1pLmJ5QXR0cmlidXRlKHMsdCk7aWYoIXMpcmV0 dXJuO2Rve3ZhciB1PXMuZ2V0QXR0cmlidXRlKHQpO0pTT04ucGFyc2UodSkuZm9y RWFjaChmdW5jdGlvbih2KXt2YXIgdz1zO2cubG9hZE1vZHVsZXMuY2FsbChnLFt2 WzBdXSxmdW5jdGlvbih4KXt4W3ZbMV1dKHcpO30pO30pO313aGlsZShzPWkuYnlB dHRyaWJ1dGUocy5wYXJlbnROb2RlLHQpKTtyZXR1cm4gZmFsc2U7fW8ub25jbGlj az1mdW5jdGlvbihzKXtzPXN8fHdpbmRvdy5ldmVudDttPXMudGFyZ2V0fHxzLnNy Y0VsZW1lbnQ7dmFyIHQ9cChtLCdkYXRhLW9uY2xpY2snKSx1PWkuYnlUYWcobSwn QScpO2lmKCF1KXJldHVybiB0O3ZhciB2PXUuZ2V0QXR0cmlidXRlKCdhamF4aWZ5 Jyksdz11LmhyZWYseD12fHx3O2lmKHgpe2ooJ2EnLHUscykuY29hbGVzY2VfbmFt ZXNwYWNlKCdwcmltZXInKTt2YXIgeT1sKCdwcmltZXInLHUscyx7bW9kZTonREVE VVAnfSkudWFpX2ZhbGxiYWNrKCdjbGljaycpO2lmKGEuQXJiaXRlck1vbml0b3Ip YS5BcmJpdGVyTW9uaXRvci5pbml0VUEoeSxbdV0pO31pZih2JiZ3JiYhKC8jJC8p LnRlc3Qodykpe3ZhciB6PXMud2hpY2gmJnMud2hpY2g9PT0yLGFhPXMuYWx0S2V5 fHxzLmN0cmxLZXl8fHMubWV0YUtleXx8cy5zaGlmdEtleTtpZih6fHxhYSlyZXR1 cm47fWsodSx4KTt2YXIgYmE9dS5yZWwmJnUucmVsLm1hdGNoKG4pO2JhPWJhJiZi YVswXTtzd2l0Y2goYmEpe2Nhc2UgJ2RpYWxvZyc6Y2FzZSAnZGlhbG9nLXBvc3Qn OmcubG9hZE1vZHVsZXMoWydBc3luY0RpYWxvZyddLGZ1bmN0aW9uKGNhKXtjYS5i b290c3RyYXAoeCx1LGJhKTt9KTticmVhaztjYXNlICdhc3luYyc6Y2FzZSAnYXN5 bmMtcG9zdCc6Zy5sb2FkTW9kdWxlcyhbJ0FzeW5jUmVxdWVzdCddLGZ1bmN0aW9u KGNhKXtjYS5ib290c3RyYXAoeCx1KTt9KTticmVhaztjYXNlICd0aGVhdGVyJzpn LmxvYWRNb2R1bGVzKFsnUGhvdG9Tbm93bGlmdCddLGZ1bmN0aW9uKGNhKXtjYS5i b290c3RyYXAoeCx1KTt9KTticmVhaztjYXNlICd0b2dnbGUnOmgudG9nZ2xlQ2xh c3ModS5wYXJlbnROb2RlLCdvcGVuVG9nZ2xlcicpO2cubG9hZE1vZHVsZXMoWydU b2dnbGVyJ10sZnVuY3Rpb24oY2Epe2NhLmJvb3RzdHJhcCh1KTt9KTticmVhaztk ZWZhdWx0OnJldHVybiB0O31yZXR1cm4gZmFsc2U7fTtvLm9uc3VibWl0PWZ1bmN0 aW9uKHMpe3M9c3x8d2luZG93LmV2ZW50O3ZhciB0PXMudGFyZ2V0fHxzLnNyY0Vs ZW1lbnQ7aWYodCYmdC5ub2RlTmFtZT09J0ZPUk0nJiZ0LmdldEF0dHJpYnV0ZSgn cmVsJyk9PSdhc3luYycpe2ooJ2YnLHQscykuY29hbGVzY2VfbmFtZXNwYWNlKCdw cmltZXInKTt2YXIgdT1sKCdwcmltZXInLHQscyx7bW9kZTonREVEVVAnfSkudWFp X2ZhbGxiYWNrKCdzdWJtaXQnKTtpZihhLkFyYml0ZXJNb25pdG9yKWEuQXJiaXRl ck1vbml0b3IuaW5pdFVBKHUsW3RdKTt2YXIgdj1tO2cubG9hZE1vZHVsZXMoWydG b3JtJ10sZnVuY3Rpb24odyl7dy5ib290c3RyYXAodCx2KTt9KTtyZXR1cm4gZmFs c2U7fX07dmFyIHE9bnVsbDtmdW5jdGlvbiByKHMsdCl7dD10fHx3aW5kb3cuZXZl bnQ7cT10LnRhcmdldHx8dC5zcmNFbGVtZW50O3AocSwnZGF0YS1vbicrcyk7dmFy IHU9aS5ieUF0dHJpYnV0ZShxLCdkYXRhLWhvdmVyJyk7aWYoIXUpcmV0dXJuO3N3 aXRjaCh1LmdldEF0dHJpYnV0ZSgnZGF0YS1ob3ZlcicpKXtjYXNlICd0b29sdGlw JzpnLmxvYWRNb2R1bGVzKFsnVG9vbHRpcCddLGZ1bmN0aW9uKHYpe3YucHJvY2Vz

cyh1LHEpO30pO2JyZWFrO319by5vbm1vdXNlb3Zlcj1yLmN1cnJ5KCdtb3VzZW92 ZXInKTtpZihvLmFkZEV2ZW50TGlzdGVuZXIpe28uYWRkRXZlbnRMaXN0ZW5lcign Zm9jdXMnLHIuY3VycnkoJ2ZvY3VzJyksdHJ1ZSk7fWVsc2Ugby5hdHRhY2hFdmVu dCgnb25mb2N1c2luJyxyLmN1cnJ5KCdmb2N1cycpKTt9KTsKX19kKCJRdWlja2xp bmdQcmVsdWRlIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9L14oPzoo PzpbXjpcLz8jXSspOik/KD86XC9cLyg/OlteXC8/I10qKSk/KFtePyNdKikoPzpc PyhbXiNdKikpPyg/OiMoLiopKT8vLGg9Jyc7d2luZG93LmxvY2F0aW9uLmhyZWYu cmVwbGFjZShnLGZ1bmN0aW9uKGksaixrLGwpe3ZhciBtLG4sbzttPW49aisoaz8n PycrazonJyk7aWYobCl7bD1sLnJlcGxhY2UoL14oIXwlMjEpLywnJyk7bz1sLmNo YXJBdCgwKTtpZihvPT0nLyd8fG89PSdcXCcpbT1sLnJlcGxhY2UoL15bXFxcL10r LywnLycpO31pZihtIT1uKXtpZih3aW5kb3cuX3NjcmlwdF9wYXRoKWRvY3VtZW50 LmNvb2tpZT0icmRpcj0iK3dpbmRvdy5fc2NyaXB0X3BhdGgrIjsgcGF0aD0vOyBk b21haW49Iit3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUucmVwbGFjZSgvXi4qKFwu ZmFjZWJvb2tcLi4qKSQvaSwnJDEnKTt3aW5kb3cubG9jYXRpb24ucmVwbGFjZSho K20pO319KTt9KTsKX19kKCJTdWJtaXRPbkVudGVyTGlzdGVuZXIiLFsiQm9vdGxv YWRlciIsIkNTUyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdCb290 bG9hZGVyJyksaD1iKCdDU1MnKTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub25r ZXlkb3duPWZ1bmN0aW9uKGkpe2k9aXx8d2luZG93LmV2ZW50O3ZhciBqPWkudGFy Z2V0fHxpLnNyY0VsZW1lbnQsaz1pLmtleUNvZGU9PTEzJiYhaS5hbHRLZXkmJiFp LmN0cmxLZXkmJiFpLm1ldGFLZXkmJiFpLnNoaWZ0S2V5JiZoLmhhc0NsYXNzKGos J2VudGVyX3N1Ym1pdCcpO2lmKGspe2cubG9hZE1vZHVsZXMoWydET00nLCdJbnB1 dCcsJ3RyYWNrUmVmZXJyZXInLCdGb3JtJ10sZnVuY3Rpb24obCxtLG4sbyl7aWYo IW0uaXNFbXB0eShqKSl7dmFyIHA9ai5mb3JtLHE9bC5zY3J5KHAsJy5lbnRlcl9z dWJtaXRfdGFyZ2V0JylbMF18fGwuc2NyeShwLCdbdHlwZT0ic3VibWl0Il0nKVsw XTtpZihxKXt2YXIgcj1vLmdldEF0dHJpYnV0ZShwLCdhamF4aWZ5Jyl8fG8uZ2V0 QXR0cmlidXRlKHAsJ2FjdGlvbicpO2lmKHIpbihwLHIpO3EuY2xpY2soKTt9fX0p O3JldHVybiBmYWxzZTt9fTt9KTsKX19kKCJDb21tZW50UHJlbHVkZSIsWyJDU1Mi LCJQYXJlbnQiLCJjbGlja1JlZkFjdGlvbiIsInVzZXJBY3Rpb24iXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7dmFyIGc9YignQ1NTJyksaD1iKCdQYXJlbnQnKSxpPWIo J2NsaWNrUmVmQWN0aW9uJyksaj1iKCd1c2VyQWN0aW9uJyk7ZnVuY3Rpb24gayhv LHApe2ooJ3VmaScsbykudWFpKCdjbGljaycpO2koJ3VmaScsbyxudWxsLCdGT1JD RScpO3JldHVybiBsKG8scCk7fWZ1bmN0aW9uIGwobyxwKXt2YXIgcT1oLmJ5VGFn KG8sJ2Zvcm0nKTttKHEpO3ZhciByPWcucmVtb3ZlQ2xhc3MuY3VycnkocSwnaGlk ZGVuX2FkZF9jb21tZW50Jyk7aWYod2luZG93LlNjcm9sbEF3YXJlRE9NKXt3aW5k b3cuU2Nyb2xsQXdhcmVET00ubW9uaXRvcihxLHIpO31lbHNlIHIoKTtpZihwIT09 ZmFsc2UpKHEuYWRkX2NvbW1lbnRfdGV4dF90ZXh0fHxxLmFkZF9jb21tZW50X3Rl eHQpLmZvY3VzKCk7cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBtKG8pe3ZhciBwPWcu cmVtb3ZlQ2xhc3MuY3VycnkobywnY29sbGFwc2VkX2NvbW1lbnRzJyk7aWYod2lu ZG93LlNjcm9sbEF3YXJlRE9NKXt3aW5kb3cuU2Nyb2xsQXdhcmVET00ubW9uaXRv cihvLHApO31lbHNlIHAoKTt9dmFyIG49e2NsaWNrOmssZXhwYW5kOmwsdW5jb2xs YXBzZTptfTtlLmV4cG9ydHM9bjt9KTsKX19kKCJsZWdhY3k6dWZpLWNvbW1lbnQt cHJlbHVkZS1qcyIsWyJDb21tZW50UHJlbHVkZSJdLGZ1bmN0aW9uKGEsYixjLGQp e3ZhciBlPWIoJ0NvbW1lbnRQcmVsdWRlJyk7YS5mY19jbGljaz1lLmNsaWNrO2Eu ZmNfZXhwYW5kPWUuZXhwYW5kO30sMyk7CnZvaWQoMCk7 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=OjiFoELHEsI.js Content-Type: application/x-javascript; charset=utf-8; name=OjiFoELHEsI.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/ye/r/OjiFoELHEsI.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDMwNTMyLDE3ODE0MjU1OSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjFsQlY1Il0pOyB9CgpfX2Qo IkNvb2tpZSIsWyJFbnYiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign RW52JyksaD17c2V0OmZ1bmN0aW9uKGksaixrLGwsbSl7aWYoZy5ub19jb29raWVz JiZpIT0ndHBhJylyZXR1cm47ZG9jdW1lbnQuY29va2llPWkrIj0iK2VuY29kZVVS SUNvbXBvbmVudChqKSsiOyAiKyhrPyJleHBpcmVzPSIrKG5ldyBEYXRlKERhdGUu bm93KCkraykpLnRvR01UU3RyaW5nKCkrIjsgIjoiIikrInBhdGg9IisobHx8Jy8n KSsiOyBkb21haW49Iit3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUucmVwbGFjZSgv Xi4qKFwuZmFjZWJvb2tcLi4qKSQvaSwnJDEnKSsobT8iOyBzZWN1cmUiOiIiKTt9

LGNsZWFyOmZ1bmN0aW9uKGksail7aj1qfHwnLyc7ZG9jdW1lbnQuY29va2llPWkr Ij07IGV4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDowMDowMSBHTVQ7ICIrInBh dGg9IitqKyI7IGRvbWFpbj0iK3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5yZXBs YWNlKC9eLiooXC5mYWNlYm9va1wuLiopJC9pLCckMScpO30sZ2V0OmZ1bmN0aW9u KGkpe3ZhciBqPWRvY3VtZW50LmNvb2tpZS5tYXRjaCgnKD86Xnw7XFxzKiknK2kr Jz0oLio/KSg/Ojt8JCknKTtyZXR1cm4gKGo/ZGVjb2RlVVJJQ29tcG9uZW50KGpb MV0pOmopO319O2UuZXhwb3J0cz1oO30pOwpfX2QoImxlZ2FjeTpjb29raWUiLFsi Q29va2llIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignQ29va2llJyk7YS5n ZXRDb29raWU9ZS5nZXQ7YS5zZXRDb29raWU9ZS5zZXQ7YS5jbGVhckNvb2tpZT1l LmNsZWFyO30sMyk7Cl9fZCgiVVJJIixbImNvcHlQcm9wZXJ0aWVzIiwiZ29VUkki XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMn KSxoPWIoJ2dvVVJJJyk7ZnVuY3Rpb24gaShqKXtpZighKHRoaXMgaW5zdGFuY2Vv ZiBpKSlyZXR1cm4gbmV3IGkoanx8d2luZG93LmxvY2F0aW9uLmhyZWYpO3RoaXMu cGFyc2Uoanx8JycpO31nKGkse2dldFJlcXVlc3RVUkk6ZnVuY3Rpb24oaixrKXtq PWo9PT11bmRlZmluZWR8fGo7dmFyIGw9YS5QYWdlVHJhbnNpdGlvbnM7aWYoaiYm bCYmbC5pc0luaXRpYWxpemVkKCkpe3JldHVybiBsLmdldEN1cnJlbnRVUkkoISFr KS5nZXRRdWFsaWZpZWRVUkkoKTt9ZWxzZSByZXR1cm4gbmV3IGkod2luZG93Lmxv Y2F0aW9uLmhyZWYpO30sZ2V0TW9zdFJlY2VudFVSSTpmdW5jdGlvbigpe3ZhciBq PWEuUGFnZVRyYW5zaXRpb25zO2lmKGomJmouaXNJbml0aWFsaXplZCgpKXtyZXR1 cm4gai5nZXRNb3N0UmVjZW50VVJJKCkuZ2V0UXVhbGlmaWVkVVJJKCk7fWVsc2Ug cmV0dXJuIG5ldyBpKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTt9LGdldE5leHRVUkk6 ZnVuY3Rpb24oKXt2YXIgaj1hLlBhZ2VUcmFuc2l0aW9ucztpZihqJiZqLmlzSW5p dGlhbGl6ZWQoKSl7cmV0dXJuIGouZ2V0TmV4dFVSSSgpLmdldFF1YWxpZmllZFVS SSgpO31lbHNlIHJldHVybiBuZXcgaSh3aW5kb3cubG9jYXRpb24uaHJlZik7fSxl eHByZXNzaW9uOi8oKChcdyspOlwvXC8pKFteXC86XSopKDooXGQrKSk/KT8oW14j P10qKShcPyhbXiNdKikpPygjKC4qKSk/LyxhcnJheVF1ZXJ5RXhwcmVzc2lvbjov XihcdyspKCg/OlxbXHcqXF0pKyk9PyguKikvLGV4cGxvZGVRdWVyeTpmdW5jdGlv bihqKXtpZighailyZXR1cm4ge307dmFyIGs9e307aj1qLnJlcGxhY2UoLyU1Qi9p ZywnWycpLnJlcGxhY2UoLyU1RC9pZywnXScpO2o9ai5zcGxpdCgnJicpO3ZhciBs PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Zm9yKHZhciBtPTAsbj1q Lmxlbmd0aDttPG47bSsrKXt2YXIgbz1qW21dLm1hdGNoKGkuYXJyYXlRdWVyeUV4 cHJlc3Npb24pO2lmKCFvKXt2YXIgcD1qW21dLnNwbGl0KCc9Jyk7a1tpLmRlY29k ZUNvbXBvbmVudChwWzBdKV09cFsxXT09PXVuZGVmaW5lZD9udWxsOmkuZGVjb2Rl Q29tcG9uZW50KHBbMV0pO31lbHNle3ZhciBxPW9bMl0uc3BsaXQoL1xdXFt8XFt8 XF0vKS5zbGljZSgwLC0xKSxyPW9bMV0scz1pLmRlY29kZUNvbXBvbmVudChvWzNd fHwnJyk7cVswXT1yO3ZhciB0PWs7Zm9yKHZhciB1PTA7dTxxLmxlbmd0aC0xO3Ur KylpZihxW3VdKXtpZighbC5jYWxsKHQscVt1XSkpe3ZhciB2PXFbdSsxXSYmIXFb dSsxXS5tYXRjaCgvXlxkKyQvKT97fTpbXTt0W3FbdV1dPXY7aWYodFtxW3VdXSE9 PXYpcmV0dXJuIGs7fXQ9dFtxW3VdXTt9ZWxzZXtpZihxW3UrMV0mJiFxW3UrMV0u bWF0Y2goL15cZCskLykpe3QucHVzaCh7fSk7fWVsc2UgdC5wdXNoKFtdKTt0PXRb dC5sZW5ndGgtMV07fWlmKHQgaW5zdGFuY2VvZiBBcnJheSYmcVtxLmxlbmd0aC0x XT09PScnKXt0LnB1c2gocyk7fWVsc2UgdFtxW3EubGVuZ3RoLTFdXT1zO319cmV0 dXJuIGs7fSxpbXBsb2RlUXVlcnk6ZnVuY3Rpb24oaixrLGwpe2s9a3x8Jyc7aWYo bD09PXVuZGVmaW5lZClsPXRydWU7dmFyIG09W107aWYoaj09PW51bGx8fGo9PT11 bmRlZmluZWQpe20ucHVzaChsP2kuZW5jb2RlQ29tcG9uZW50KGspOmspO31lbHNl IGlmKGogaW5zdGFuY2VvZiBBcnJheSl7Zm9yKHZhciBuPTA7bjxqLmxlbmd0aDsr K24pdHJ5e2lmKGpbbl0hPT11bmRlZmluZWQpbS5wdXNoKGkuaW1wbG9kZVF1ZXJ5 KGpbbl0saz8oaysnWycrbisnXScpOm4sbCkpO31jYXRjaChvKXt9fWVsc2UgaWYo dHlwZW9mKGopPT0nb2JqZWN0Jyl7aWYoKCdub2RlTmFtZScgaW4gaikmJignbm9k ZVR5cGUnIGluIGopKXttLnB1c2goJ3tub2RlfScpO31lbHNlIGZvcih2YXIgcCBp biBqKXRyeXtpZihqW3BdIT09dW5kZWZpbmVkKW0ucHVzaChpLmltcGxvZGVRdWVy eShqW3BdLGs/KGsrJ1snK3ArJ10nKTpwLGwpKTt9Y2F0Y2gobyl7fX1lbHNlIGlm KGwpe20ucHVzaChpLmVuY29kZUNvbXBvbmVudChrKSsnPScraS5lbmNvZGVDb21w b25lbnQoaikpO31lbHNlIG0ucHVzaChrKyc9JytqKTtyZXR1cm4gbS5qb2luKCcm Jyk7fSxlbmNvZGVDb21wb25lbnQ6ZnVuY3Rpb24oail7cmV0dXJuIGVuY29kZVVS SUNvbXBvbmVudChqKS5yZXBsYWNlKC8lNUQvZywiXSIpLnJlcGxhY2UoLyU1Qi9n LCJbIik7fSxkZWNvZGVDb21wb25lbnQ6ZnVuY3Rpb24oail7cmV0dXJuIGRlY29k ZVVSSUNvbXBvbmVudChqLnJlcGxhY2UoL1wrL2csJyAnKSk7fSxJTlZBTElEX0RP TUFJTjonaW52YWxpZC5pbnZhbGlkJyxzYW5pdGl6ZURvbWFpbjpmdW5jdGlvbihq KXt2YXIgaz1uZXcgUmVnRXhwKCdbXFx4MDAtXFx4MmNcXHgyZlxceDNiLVxceDQw

XFx4NWNcXHg1ZVxceDYwXFx4N2ItXFx4N2YnKydcXHVGREQwLVxcdUZERUZcXHVG RkYwLVxcdUZGRkYnKydcXHUyMDQ3XFx1MjA0OFxcdUZFNTZcXHVGRTVGXFx1RkYw M1xcdUZGMEZcXHVGRjFGXScpO2lmKGsudGVzdChqKSl7cmV0dXJuIGkuSU5WQUxJ RF9ET01BSU47fWVsc2UgcmV0dXJuIGo7fX0pO2coaS5wcm90b3R5cGUse3BhcnNl OmZ1bmN0aW9uKGope3ZhciBrPWoudG9TdHJpbmcoKS5tYXRjaChpLmV4cHJlc3Np b24pO2codGhpcyx7cHJvdG9jb2w6a1szXXx8JycsZG9tYWluOmkuc2FuaXRpemVE b21haW4oa1s0XXx8JycpLHBvcnQ6a1s2XXx8JycscGF0aDprWzddfHwnJyxxdWVy eV9zOmtbOV18fCcnLGZyYWdtZW50OmtbMTFdfHwnJ30pO3JldHVybiB0aGlzO30s c2V0UHJvdG9jb2w6ZnVuY3Rpb24oail7dGhpcy5wcm90b2NvbD1qO3JldHVybiB0 aGlzO30sZ2V0UHJvdG9jb2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm90b2Nv bDt9LHNldFF1ZXJ5RGF0YTpmdW5jdGlvbihqKXt0aGlzLnF1ZXJ5X3M9aS5pbXBs b2RlUXVlcnkoaik7cmV0dXJuIHRoaXM7fSxhZGRRdWVyeURhdGE6ZnVuY3Rpb24o ail7cmV0dXJuIHRoaXMuc2V0UXVlcnlEYXRhKGcodGhpcy5nZXRRdWVyeURhdGEo KSxqKSk7fSxyZW1vdmVRdWVyeURhdGE6ZnVuY3Rpb24oail7aWYoIUFycmF5Lmlz QXJyYXkoaikpaj1bal07dmFyIGs9dGhpcy5nZXRRdWVyeURhdGEoKTtmb3IodmFy IGw9MCxtPWoubGVuZ3RoO2w8bTsrK2wpZGVsZXRlIGtbaltsXV07cmV0dXJuIHRo aXMuc2V0UXVlcnlEYXRhKGspO30sZ2V0UXVlcnlEYXRhOmZ1bmN0aW9uKCl7cmV0 dXJuIGkuZXhwbG9kZVF1ZXJ5KHRoaXMucXVlcnlfcyk7fSxzZXRGcmFnbWVudDpm dW5jdGlvbihqKXt0aGlzLmZyYWdtZW50PWo7cmV0dXJuIHRoaXM7fSxnZXRGcmFn bWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyYWdtZW50O30sc2V0RG9tYWlu OmZ1bmN0aW9uKGope3RoaXMuZG9tYWluPWkuc2FuaXRpemVEb21haW4oaik7cmV0 dXJuIHRoaXM7fSxnZXREb21haW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21h aW47fSxzZXRQb3J0OmZ1bmN0aW9uKGope3RoaXMucG9ydD1qO3JldHVybiB0aGlz O30sZ2V0UG9ydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvcnQ7fSxzZXRQYXRo OmZ1bmN0aW9uKGope3RoaXMucGF0aD1qO3JldHVybiB0aGlzO30sZ2V0UGF0aDpm dW5jdGlvbigpe3JldHVybiB0aGlzLnBhdGgucmVwbGFjZSgvXlwvKy8sJy8nKTt9 LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gISh0aGlzLnBhdGh8fHRoaXMucHJv dG9jb2x8fHRoaXMuZG9tYWlufHx0aGlzLnBvcnR8fHRoaXMucXVlcnlfc3x8dGhp cy5mcmFnbWVudCk7fSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBqPScnO3RoaXMu cHJvdG9jb2wmJihqKz10aGlzLnByb3RvY29sKyc6Ly8nKTt0aGlzLmRvbWFpbiYm KGorPXRoaXMuZG9tYWluKTt0aGlzLnBvcnQmJihqKz0nOicrdGhpcy5wb3J0KTtp Zih0aGlzLmRvbWFpbiYmIXRoaXMucGF0aClqKz0nLyc7dGhpcy5wYXRoJiYoais9 dGhpcy5wYXRoKTt0aGlzLnF1ZXJ5X3MmJihqKz0nPycrdGhpcy5xdWVyeV9zKTt0 aGlzLmZyYWdtZW50JiYoais9JyMnK3RoaXMuZnJhZ21lbnQpO3JldHVybiBqO30s dmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCk7fSxpc0Zh Y2Vib29rVVJJOmZ1bmN0aW9uKCl7aWYoIWkuX2ZhY2Vib29rVVJJUmVnZXgpaS5f ZmFjZWJvb2tVUklSZWdleD1uZXcgUmVnRXhwKCcoXnxcXC4pZmFjZWJvb2tcXC5j b20oW14uXSopJCcsJ2knKTtyZXR1cm4gKCF0aGlzLmRvbWFpbnx8aS5fZmFjZWJv b2tVUklSZWdleC50ZXN0KHRoaXMuZG9tYWluKSk7fSxpc1F1aWNrbGluZ0VuYWJs ZWQ6ZnVuY3Rpb24oKXt2YXIgaj1hLlF1aWNrbGluZztyZXR1cm4gaiYmai5pc0Fj dGl2ZSgpJiZqLmlzUGFnZUFjdGl2ZSh0aGlzKTt9LGdldFJlZ2lzdGVyZWREb21h aW46ZnVuY3Rpb24oKXtpZighdGhpcy5kb21haW4pcmV0dXJuICcnO2lmKCF0aGlz LmlzRmFjZWJvb2tVUkkoKSlyZXR1cm4gbnVsbDt2YXIgaj10aGlzLmRvbWFpbi5z cGxpdCgnLicpLGs9ai5pbmRleE9mKCdmYWNlYm9vaycpO3JldHVybiBqLnNsaWNl KGspLmpvaW4oJy4nKTt9LGdldFVucXVhbGlmaWVkVVJJOmZ1bmN0aW9uKCl7cmV0 dXJuIG5ldyBpKHRoaXMpLnNldFByb3RvY29sKG51bGwpLnNldERvbWFpbihudWxs KS5zZXRQb3J0KG51bGwpO30sZ2V0UXVhbGlmaWVkVVJJOmZ1bmN0aW9uKCl7dmFy IGo9bmV3IGkodGhpcyk7aWYoIWouZ2V0RG9tYWluKCkpe3ZhciBrPWkoKTtqLnNl dFByb3RvY29sKGsuZ2V0UHJvdG9jb2woKSkuc2V0RG9tYWluKGsuZ2V0RG9tYWlu KCkpLnNldFBvcnQoay5nZXRQb3J0KCkpO31yZXR1cm4gajt9LGlzU2FtZU9yaWdp bjpmdW5jdGlvbihqKXt2YXIgaz1qfHx3aW5kb3cubG9jYXRpb24uaHJlZjtpZigh KGsgaW5zdGFuY2VvZiBpKSlrPW5ldyBpKGsudG9TdHJpbmcoKSk7aWYodGhpcy5n ZXRQcm90b2NvbCgpJiZ0aGlzLmdldFByb3RvY29sKCkhPWsuZ2V0UHJvdG9jb2wo KSlyZXR1cm4gZmFsc2U7aWYodGhpcy5nZXREb21haW4oKSYmdGhpcy5nZXREb21h aW4oKSE9ay5nZXREb21haW4oKSlyZXR1cm4gZmFsc2U7aWYodGhpcy5nZXRQb3J0 KCkmJnRoaXMuZ2V0UG9ydCgpIT1rLmdldFBvcnQoKSlyZXR1cm4gZmFsc2U7cmV0 dXJuIHRydWU7fSxnbzpmdW5jdGlvbihqKXtoKHRoaXMsaik7fSxzZXRTdWJkb21h aW46ZnVuY3Rpb24oail7dmFyIGs9bmV3IGkodGhpcykuZ2V0UXVhbGlmaWVkVVJJ KCksbD1rLmdldERvbWFpbigpLnNwbGl0KCcuJyk7aWYobC5sZW5ndGg8PTIpe2wu dW5zaGlmdChqKTt9ZWxzZSBsWzBdPWo7cmV0dXJuIGsuc2V0RG9tYWluKGwuam9p

bignLicpKTt9LGdldFN1YmRvbWFpbjpmdW5jdGlvbigpe2lmKCF0aGlzLmdldERv bWFpbigpKXJldHVybiAnJzt2YXIgaj10aGlzLmdldERvbWFpbigpLnNwbGl0KCcu Jyk7aWYoai5sZW5ndGg8PTIpe3JldHVybiAnJzt9ZWxzZSByZXR1cm4galswXTt9 LHNldFNlY3VyZTpmdW5jdGlvbihqKXtyZXR1cm4gdGhpcy5zZXRQcm90b2NvbChq PydodHRwcyc6J2h0dHAnKTt9LGlzU2VjdXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuZ2V0UHJvdG9jb2woKT09J2h0dHBzJzt9fSk7ZS5leHBvcnRzPWk7fSk7Cl9f ZCgiQXN5bmNTaWduYWwiLFsiRW52IiwiRXJyb3JVdGlscyIsIlF1ZXJ5U3RyaW5n IiwiVVJJIiwiWEhSIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9YignRW52JyksaD1iKCdFcnJvclV0aWxzJyksaT1iKCdRdWVy eVN0cmluZycpLGo9YignVVJJJyksaz1iKCdYSFInKSxsPWIoJ2NvcHlQcm9wZXJ0 aWVzJyk7ZnVuY3Rpb24gbShuLG8pe3RoaXMuZGF0YT1vfHx7fTtpZihnLnRyYWNr aW5nX2RvbWFpbiYmbi5jaGFyQXQoMCk9PScvJyluPWcudHJhY2tpbmdfZG9tYWlu K247dGhpcy51cmk9bjt9bS5wcm90b3R5cGUuc2V0SGFuZGxlcj1mdW5jdGlvbihu KXt0aGlzLmhhbmRsZXI9bjtyZXR1cm4gdGhpczt9O20ucHJvdG90eXBlLnNlbmQ9 ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmhhbmRsZXIsbz10aGlzLmRhdGEscD1uZXcg SW1hZ2UoKTtpZihuKXAub25sb2FkPXAub25lcnJvcj1mdW5jdGlvbigpe2guYXBw bHlXaXRoR3VhcmQobixudWxsLFtwLmhlaWdodD09MV0pO307by5hc3luY1NpZ25h bD0oTWF0aC5yYW5kb20oKSoxMDAwMHwwKSsxO3ZhciBxPW5ldyBqKHRoaXMudXJp KS5pc0ZhY2Vib29rVVJJKCk7bChvLGsuZ2V0QXN5bmNQYXJhbXMocT8nUE9TVCc6 J0dFVCcpKTtwLnNyYz1pLmFwcGVuZFRvVXJsKHRoaXMudXJpLG8pO3JldHVybiB0 aGlzO307ZS5leHBvcnRzPW07fSk7Cl9fZCgibGVnYWN5OmFzeW5jLXNpZ25hbCIs WyJBc3luY1NpZ25hbCJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuQXN5bmNTaWduYWw9 YignQXN5bmNTaWduYWwnKTt9LDMpOwpfX2QoImxlZ2FjeTp1cmkiLFsiVVJJIl0s ZnVuY3Rpb24oYSxiLGMsZCl7YS5VUkk9YignVVJJJyk7fSwzKTsKZnVuY3Rpb24g ZGV0ZWN0X2Jyb2tlbl9wcm94eV9jYWNoZShhLGIpe3ZhciBjPWdldENvb2tpZShi KTtpZigoYyE9YSkmJihjIT1udWxsKSYmKGEhPScwJykpe3ZhciBkPXtjOidzaV9k ZXRlY3RfYnJva2VuX3Byb3h5X2NhY2hlJyxtOmIrJyAnK2ErJyAnK2N9LGU9bmV3 IFVSSSgnL2NvbW1vbi9zY3JpYmVfZW5kcG9pbnQucGhwJykuZ2V0UXVhbGlmaWVk VVJJKCkudG9TdHJpbmcoKTtuZXcgQXN5bmNTaWduYWwoZSxkKS5zZW5kKCk7fX0K X19kKCJMaW5rc2hpbUFzeW5jTGluayIsWyIkIiwiQXN5bmNTaWduYWwiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignJCcpLGg9YignQXN5bmNTaWduYWwn KSxpPXtzd2FwOmZ1bmN0aW9uKGosayl7ai5ocmVmPWs7fSxyZWZlcnJlcl9sb2c6 ZnVuY3Rpb24oaixrLGwpe3ZhciBtPWcoJ21ldGFfcmVmZXJyZXInKTttLmNvbnRl bnQ9Im9yaWdpbiI7aS5zd2FwKGosayk7KGZ1bmN0aW9uKCl7bS5jb250ZW50PSJk ZWZhdWx0IjtuZXcgaChsLHt9KS5zZW5kKCk7fSkuZGVmZXIoMTAwKTt9fTtlLmV4 cG9ydHM9aTt9KTsKX19kKCJsZWdhY3k6ZG9tLWFzeW5jbGlua3NoaW0iLFsiTGlu a3NoaW1Bc3luY0xpbmsiXSxmdW5jdGlvbihhLGIsYyxkKXthLkxpbmtzaGltQXN5 bmNMaW5rPWIoJ0xpbmtzaGltQXN5bmNMaW5rJyk7fSwzKTsKX19kKCJEYXRhU3Rv cmUiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz17fSxoPTE7ZnVuY3Rp b24gaShsKXtpZih0eXBlb2YgbD09J3N0cmluZycpe3JldHVybiAnc3RyXycrbDt9 ZWxzZSByZXR1cm4gJ2VsZW1fJysobC5fX0ZCX1RPS0VOfHwobC5fX0ZCX1RPS0VO PVtoKytdKSlbMF07fWZ1bmN0aW9uIGoobCl7dmFyIG09aShsKTtyZXR1cm4gZ1tt XXx8KGdbbV09e30pO312YXIgaz17c2V0OmZ1bmN0aW9uKGwsbSxuKXtpZighbCl0 aHJvdyBuZXcgVHlwZUVycm9yKCdEYXRhU3RvcmUuc2V0OiBuYW1lc3BhY2UgaXMg cmVxdWlyZWQsIGdvdCAnKyh0eXBlb2YgbCkpO3ZhciBvPWoobCk7b1ttXT1uO3Jl dHVybiBsO30sZ2V0OmZ1bmN0aW9uKGwsbSxuKXtpZighbCl0aHJvdyBuZXcgVHlw ZUVycm9yKCdEYXRhU3RvcmUuZ2V0OiBuYW1lc3BhY2UgaXMgcmVxdWlyZWQsIGdv dCAnKyh0eXBlb2YgbCkpO3ZhciBvPWoobCkscD1vW21dO2lmKHR5cGVvZiBwPT09 J3VuZGVmaW5lZCcmJmwuZ2V0QXR0cmlidXRlKWlmKGwuaGFzQXR0cmlidXRlJiYh bC5oYXNBdHRyaWJ1dGUoJ2RhdGEtJyttKSl7cD11bmRlZmluZWQ7fWVsc2V7dmFy IHE9bC5nZXRBdHRyaWJ1dGUoJ2RhdGEtJyttKTtwPShudWxsPT09cSk/dW5kZWZp bmVkOnE7fWlmKChuIT09dW5kZWZpbmVkKSYmKHA9PT11bmRlZmluZWQpKXA9b1tt XT1uO3JldHVybiBwO30scmVtb3ZlOmZ1bmN0aW9uKGwsbSl7aWYoIWwpdGhyb3cg bmV3IFR5cGVFcnJvcignRGF0YVN0b3JlLnJlbW92ZTogbmFtZXNwYWNlIGlzIHJl cXVpcmVkLCBnb3QgJysodHlwZW9mIGwpKTt2YXIgbj1qKGwpLG89blttXTtkZWxl dGUgblttXTtyZXR1cm4gbzt9LHB1cmdlOmZ1bmN0aW9uKGwpe2RlbGV0ZSBnW2ko bCldO319O2UuZXhwb3J0cz1rO30pOwpfX2QoIlVzZXJBZ2VudCIsW10sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWZhbHNlLGgsaSxqLGssbCxtLG4sbyxwLHEs cixzLHQsdTtmdW5jdGlvbiB2KCl7aWYoZylyZXR1cm47Zz10cnVlO3ZhciB4PW5h dmlnYXRvci51c2VyQWdlbnQseT0vKD86TVNJRS4oXGQrXC5cZCspKXwoPzooPzpG

aXJlZm94fEdyYW5QYXJhZGlzb3xJY2V3ZWFzZWwpLihcZCtcLlxkKykpfCg/Ok9w ZXJhKD86LitWZXJzaW9uLnwuKShcZCtcLlxkKykpfCg/OkFwcGxlV2ViS2l0Lihc ZCsoPzpcLlxkKyk/KSkvLmV4ZWMoeCksej0vKE1hYyBPUyBYKXwoV2luZG93cyl8 KExpbnV4KS8uZXhlYyh4KTtyPS9cYihpUGhvbmV8aVBbYW9dZCkvLmV4ZWMoeCk7 cz0vXGIoaVBbYW9dZCkvLmV4ZWMoeCk7cD0vQW5kcm9pZC9pLmV4ZWMoeCk7dD0v RkJBTlwvXHcrOy9pLmV4ZWMoeCk7dT0vTW9iaWxlL2kuZXhlYyh4KTtxPSEhKC9X aW42NC8uZXhlYyh4KSk7aWYoeSl7aD15WzFdP3BhcnNlRmxvYXQoeVsxXSk6TmFO O2lmKGgmJmRvY3VtZW50LmRvY3VtZW50TW9kZSloPWRvY3VtZW50LmRvY3VtZW50 TW9kZTtpPXlbMl0/cGFyc2VGbG9hdCh5WzJdKTpOYU47aj15WzNdP3BhcnNlRmxv YXQoeVszXSk6TmFOO2s9eVs0XT9wYXJzZUZsb2F0KHlbNF0pOk5hTjtpZihrKXt5 PS8oPzpDaHJvbWVcLyhcZCtcLlxkKykpLy5leGVjKHgpO2w9eSYmeVsxXT9wYXJz ZUZsb2F0KHlbMV0pOk5hTjt9ZWxzZSBsPU5hTjt9ZWxzZSBoPWk9aj1sPWs9TmFO O2lmKHope2lmKHpbMV0pe3ZhciBhYT0vKD86TWFjIE9TIFggKFxkKyg/OlsuX11c ZCspPykpLy5leGVjKHgpO209YWE/cGFyc2VGbG9hdChhYVsxXS5yZXBsYWNlKCdf JywnLicpKTp0cnVlO31lbHNlIG09ZmFsc2U7bj0hIXpbMl07bz0hIXpbM107fWVs c2UgbT1uPW89ZmFsc2U7fXZhciB3PXtpZTpmdW5jdGlvbigpe3JldHVybiB2KCl8 fGg7fSxpZTY0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuaWUoKSYmcTt9LGZpcmVmb3g6 ZnVuY3Rpb24oKXtyZXR1cm4gdigpfHxpO30sb3BlcmE6ZnVuY3Rpb24oKXtyZXR1 cm4gdigpfHxqO30sc2FmYXJpOmZ1bmN0aW9uKCl7cmV0dXJuIHYoKXx8azt9LGNo cm9tZTpmdW5jdGlvbigpe3JldHVybiB2KCl8fGw7fSx3aW5kb3dzOmZ1bmN0aW9u KCl7cmV0dXJuIHYoKXx8bjt9LG9zeDpmdW5jdGlvbigpe3JldHVybiB2KCl8fG07 fSxsaW51eDpmdW5jdGlvbigpe3JldHVybiB2KCl8fG87fSxpcGhvbmU6ZnVuY3Rp b24oKXtyZXR1cm4gdigpfHxyO30sbW9iaWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHYo KXx8KHJ8fHN8fHB8fHUpO30sbmF0aXZlQXBwOmZ1bmN0aW9uKCl7cmV0dXJuIHYo KXx8dDt9LGFuZHJvaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdigpfHxwO30saXBhZDpm dW5jdGlvbigpe3JldHVybiB2KCl8fHM7fX07ZS5leHBvcnRzPXc7fSk7Cl9fZCgi Y3JlYXRlT2JqZWN0RnJvbSIsWyJoYXNBcnJheU5hdHVyZSJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdoYXNBcnJheU5hdHVyZScpO2Z1bmN0aW9uIGgo aSxqKXt2YXIgaz17fSxsPWcoaik7aWYodHlwZW9mIGo9PSd1bmRlZmluZWQnKWo9 dHJ1ZTtmb3IodmFyIG09aS5sZW5ndGg7bS0tOylrW2lbbV1dPWw/alttXTpqO3Jl dHVybiBrO31lLmV4cG9ydHM9aDt9KTsKX19kKCJET01RdWVyeSIsWyJDU1MiLCJV c2VyQWdlbnQiLCJjcmVhdGVBcnJheUZyb20iLCJjcmVhdGVPYmplY3RGcm9tIiwi Z2UiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ1NTJyksaD1iKCdV c2VyQWdlbnQnKSxpPWIoJ2NyZWF0ZUFycmF5RnJvbScpLGo9YignY3JlYXRlT2Jq ZWN0RnJvbScpLGs9YignZ2UnKSxsPW51bGwsbT17ZmluZDpmdW5jdGlvbihuLG8p e3ZhciBwPW0uc2NyeShuLG8pO3JldHVybiBwWzBdO30sc2NyeTpmdW5jdGlvbihu LG8pe2lmKCFufHwhbi5nZXRFbGVtZW50c0J5VGFnTmFtZSlyZXR1cm4gW107dmFy IHA9by5zcGxpdCgnICcpLHE9W25dO2Zvcih2YXIgcj0wO3I8cC5sZW5ndGg7cisr KXtpZihxLmxlbmd0aD09PTApYnJlYWs7aWYocFtyXT09PScnKWNvbnRpbnVlO3Zh ciBzPXBbcl0sdD1wW3JdLHU9W10sdj1mYWxzZTtpZihzLmNoYXJBdCgwKT09J14n KWlmKHI9PT0wKXt2PXRydWU7cz1zLnNsaWNlKDEpO31lbHNlIHJldHVybiBbXTtz PXMucmVwbGFjZSgvXC4vZywnIC4nKTtzPXMucmVwbGFjZSgvXCMvZywnICMnKTtz PXMucmVwbGFjZSgvXFsvZywnIFsnKTt2YXIgdz1zLnNwbGl0KCcgJykseD13WzBd fHwnKicseT14PT0nKicsej13WzFdJiZ3WzFdLmNoYXJBdCgwKT09JyMnO2lmKHop e3ZhciBhYT1rKHdbMV0uc2xpY2UoMSksdHJ1ZSk7aWYoYWEmJih5fHxhYS50YWdO YW1lLnRvTG93ZXJDYXNlKCk9PXgpKWZvcih2YXIgYmE9MDtiYTxxLmxlbmd0aDti YSsrKWlmKHYmJm0uY29udGFpbnMoYWEscVtiYV0pKXt1PVthYV07YnJlYWs7fWVs c2UgaWYoZG9jdW1lbnQ9PXFbYmFdfHxtLmNvbnRhaW5zKHFbYmFdLGFhKSl7dT1b YWFdO2JyZWFrO319ZWxzZXt2YXIgY2E9W10sZGE9cS5sZW5ndGgsZWEsZmE9IXYm JnQuaW5kZXhPZignWycpPDAmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw7Zm9y KHZhciBnYT0wO2dhPGRhO2dhKyspe2lmKHYpe2VhPVtdO3ZhciBoYT1xW2dhXS5w YXJlbnROb2RlO3doaWxlKG0uaXNFbGVtZW50Tm9kZShoYSkpe2lmKHl8fGhhLnRh Z05hbWUudG9Mb3dlckNhc2UoKT09eCllYS5wdXNoKGhhKTtoYT1oYS5wYXJlbnRO b2RlO319ZWxzZSBpZihmYSl7ZWE9cVtnYV0ucXVlcnlTZWxlY3RvckFsbCh0KTt9 ZWxzZSBlYT1xW2dhXS5nZXRFbGVtZW50c0J5VGFnTmFtZSh4KTt2YXIgaWE9ZWEu bGVuZ3RoO2Zvcih2YXIgamE9MDtqYTxpYTtqYSsrKWNhLnB1c2goZWFbamFdKTt9 aWYoIWZhKWZvcih2YXIga2E9MTtrYTx3Lmxlbmd0aDtrYSsrKXt2YXIgbGE9d1tr YV0sbWE9bGEuY2hhckF0KDApPT0nLicsbmE9bGEuc3Vic3RyaW5nKDEpO2Zvcihn YT0wO2dhPGNhLmxlbmd0aDtnYSsrKXt2YXIgb2E9Y2FbZ2FdO2lmKCFvYSljb250 aW51ZTtpZihtYSl7aWYoIWcuaGFzQ2xhc3Mob2EsbmEpKWRlbGV0ZSBjYVtnYV07

Y29udGludWU7fWVsc2V7dmFyIHBhPWxhLnNsaWNlKDEsbGEubGVuZ3RoLTEpO2lm KHBhLmluZGV4T2YoJz0nKT09LTEpe2lmKG9hLmdldEF0dHJpYnV0ZShwYSk9PT1u dWxsKXtkZWxldGUgY2FbZ2FdO2NvbnRpbnVlO319ZWxzZXt2YXIgcWE9cGEuc3Bs aXQoJz0nKSxyYT1xYVswXSxzYT1xYVsxXTtzYT1zYS5zbGljZSgxLHNhLmxlbmd0 aC0xKTtpZihvYS5nZXRBdHRyaWJ1dGUocmEpIT1zYSl7ZGVsZXRlIGNhW2dhXTtj b250aW51ZTt9fX19fWZvcihnYT0wO2dhPGNhLmxlbmd0aDtnYSsrKWlmKGNhW2dh XSl7dS5wdXNoKGNhW2dhXSk7aWYodilicmVhazt9fXE9dTt9cmV0dXJuIHE7fSxn ZXRUZXh0OmZ1bmN0aW9uKG4pe2lmKG0uaXNUZXh0Tm9kZShuKSl7cmV0dXJuIG4u ZGF0YTt9ZWxzZSBpZihtLmlzRWxlbWVudE5vZGUobikpe2lmKGw9PT1udWxsKXt2 YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtsPW8udGV4dENvbnRl bnQhPW51bGw/J3RleHRDb250ZW50JzonaW5uZXJUZXh0Jzt9cmV0dXJuIG5bbF07 fWVsc2UgcmV0dXJuICcnO30sZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIG49 d2luZG93LmdldFNlbGVjdGlvbixvPWRvY3VtZW50LnNlbGVjdGlvbjtpZihuKXty ZXR1cm4gbigpKycnO31lbHNlIGlmKG8pcmV0dXJuIG8uY3JlYXRlUmFuZ2UoKS50 ZXh0O3JldHVybiBudWxsO30sY29udGFpbnM6ZnVuY3Rpb24obixvKXtuPWsobik7 bz1rKG8pO2lmKCFufHwhbyl7cmV0dXJuIGZhbHNlO31lbHNlIGlmKG49PT1vKXty ZXR1cm4gdHJ1ZTt9ZWxzZSBpZihtLmlzVGV4dE5vZGUobikpe3JldHVybiBmYWxz ZTt9ZWxzZSBpZihtLmlzVGV4dE5vZGUobykpe3JldHVybiBtLmNvbnRhaW5zKG4s by5wYXJlbnROb2RlKTt9ZWxzZSBpZihuLmNvbnRhaW5zKXtyZXR1cm4gbi5jb250 YWlucyhvKTt9ZWxzZSBpZihuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtyZXR1 cm4gISEobi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKSYxNik7fWVsc2UgcmV0 dXJuIGZhbHNlO30sZ2V0Um9vdEVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgbj1udWxs O2lmKHdpbmRvdy5RdWlja2xpbmcmJlF1aWNrbGluZy5pc0FjdGl2ZSgpKW49aygn Y29udGVudCcpO3JldHVybiBufHxkb2N1bWVudC5ib2R5O30saXNOb2RlOmZ1bmN0 aW9uKG4pe3JldHVybiAhIShuJiYodHlwZW9mIE5vZGU9PSdvYmplY3QnP24gaW5z dGFuY2VvZiBOb2RlOnR5cGVvZiBuPT0ib2JqZWN0IiYmdHlwZW9mIG4ubm9kZVR5 cGU9PSdudW1iZXInJiZ0eXBlb2Ygbi5ub2RlTmFtZT09J3N0cmluZycpKTt9LGlz Tm9kZU9mVHlwZTpmdW5jdGlvbihuLG8pe3ZhciBwPWkobykuam9pbignfCcpLnRv VXBwZXJDYXNlKCkuc3BsaXQoJ3wnKSxxPWoocCk7cmV0dXJuIG0uaXNOb2RlKG4p JiZuLm5vZGVOYW1lIGluIHE7fSxpc0VsZW1lbnROb2RlOmZ1bmN0aW9uKG4pe3Jl dHVybiBtLmlzTm9kZShuKSYmbi5ub2RlVHlwZT09MTt9LGlzVGV4dE5vZGU6ZnVu Y3Rpb24obil7cmV0dXJuIG0uaXNOb2RlKG4pJiZuLm5vZGVUeXBlPT0zO30sZ2V0 RG9jdW1lbnRTY3JvbGxFbGVtZW50OmZ1bmN0aW9uKG4pe249bnx8ZG9jdW1lbnQ7 dmFyIG89aC5jaHJvbWUoKXx8aC5zYWZhcmkoKTtyZXR1cm4gIW8mJm4uY29tcGF0 TW9kZT09PSdDU1MxQ29tcGF0Jz9uLmRvY3VtZW50RWxlbWVudDpuLmJvZHk7fX07 ZS5leHBvcnRzPW07fSk7Cl9fZCgiRE9NRXZlbnQiLFsiY29weVByb3BlcnRpZXMi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMn KTtmdW5jdGlvbiBoKGkpe3RoaXMuZXZlbnQ9aXx8d2luZG93LmV2ZW50O3RoaXMu dGFyZ2V0PXRoaXMuZXZlbnQudGFyZ2V0fHx0aGlzLmV2ZW50LnNyY0VsZW1lbnQ7 fWcoaC5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGk9 dGhpcy5ldmVudDtpLnByZXZlbnREZWZhdWx0P2kucHJldmVudERlZmF1bHQoKTpp LnJldHVyblZhbHVlPWZhbHNlO3JldHVybiB0aGlzO30sc3RvcFByb3BhZ2F0aW9u OmZ1bmN0aW9uKCl7dmFyIGk9dGhpcy5ldmVudDtpLnN0b3BQcm9wYWdhdGlvbj9p LnN0b3BQcm9wYWdhdGlvbigpOmkuY2FuY2VsQnViYmxlPXRydWU7cmV0dXJuIHRo aXM7fSxraWxsOmZ1bmN0aW9uKCl7dGhpcy5zdG9wUHJvcGFnYXRpb24oKS5wcmV2 ZW50RGVmYXVsdCgpO3JldHVybiB0aGlzO319KTtlLmV4cG9ydHM9aDt9KTsKX19k KCJnZXRPYmplY3RWYWx1ZXMiLFsiaGFzQXJyYXlOYXR1cmUiXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGc9YignaGFzQXJyYXlOYXR1cmUnKTtmdW5jdGlvbiBo KGkpe3ZhciBqPVtdO2Zvcih2YXIgayBpbiBpKWoucHVzaChpW2tdKTtyZXR1cm4g ajt9ZS5leHBvcnRzPWg7fSk7Cl9fZCgiZXZlbnQtZXh0ZW5zaW9ucyIsWyJldmVu dC1mb3JtLWJ1YmJsaW5nIiwiRGF0YVN0b3JlIiwiRE9NUXVlcnkiLCJET01FdmVu dCIsIkVycm9yVXRpbHMiLCJQYXJlbnQiLCJVc2VyQWdlbnQiLCIkIiwiY29weVBy b3BlcnRpZXMiLCJnZXRPYmplY3RWYWx1ZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7YignZXZlbnQtZm9ybS1idWJibGluZycpO3ZhciBnPWIoJ0RhdGFTdG9yZScp LGg9YignRE9NUXVlcnknKSxpPWIoJ0RPTUV2ZW50Jyksaj1iKCdFcnJvclV0aWxz Jyksaz1iKCdQYXJlbnQnKSxsPWIoJ1VzZXJBZ2VudCcpLG09YignJCcpLG49Yign Y29weVByb3BlcnRpZXMnKSxvPWIoJ2dldE9iamVjdFZhbHVlcycpO0V2ZW50LkRB VEFTVE9SRV9LRVk9J0V2ZW50Lmxpc3RlbmVycyc7aWYoIUV2ZW50LnByb3RvdHlw ZSlFdmVudC5wcm90b3R5cGU9e307ZnVuY3Rpb24gcCh5LHosYWEpe3RoaXMudGFy Z2V0PXk7dGhpcy50eXBlPXo7dGhpcy5kYXRhPWFhO31uKHAucHJvdG90eXBlLHtn

ZXREYXRhOmZ1bmN0aW9uKCl7dGhpcy5kYXRhPXRoaXMuZGF0YXx8e307cmV0dXJu IHRoaXMuZGF0YTt9LHN0b3A6ZnVuY3Rpb24oKXtuZXcgaSh0aGlzKS5zdG9wUHJv cGFnYXRpb24oKTtyZXR1cm4gdGhpczt9LHByZXZlbnQ6ZnVuY3Rpb24oKXtuZXcg aSh0aGlzKS5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiB0aGlzO30sa2lsbDpmdW5j dGlvbigpe3RoaXMuc3RvcCgpLnByZXZlbnQoKTtyZXR1cm4gZmFsc2U7fSxnZXRU YXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkodGhpcykudGFyZ2V0fHxudWxs O319KTtmdW5jdGlvbiBxKHkpe2lmKHkgaW5zdGFuY2VvZiBwKXJldHVybiB5O3k9 eXx8d2luZG93LmV2ZW50fHx7fTtpZigheS5faW5oZXJpdHNfZnJvbV9wcm90b3R5 cGUpZm9yKHZhciB6IGluIEV2ZW50LnByb3RvdHlwZSl0cnl7eVt6XT1FdmVudC5w cm90b3R5cGVbel07fWNhdGNoKGFhKXt9cmV0dXJuIHk7fW4oRXZlbnQucHJvdG90 eXBlLHtfaW5oZXJpdHNfZnJvbV9wcm90b3R5cGU6dHJ1ZSxnZXRSZWxhdGVkVGFy Z2V0OmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5yZWxhdGVkVGFyZ2V0fHwodGhpcy5m cm9tRWxlbWVudD09PXRoaXMuc3JjRWxlbWVudD90aGlzLnRvRWxlbWVudDp0aGlz LmZyb21FbGVtZW50KTtyZXR1cm4geT9tKHkpOm51bGw7fSxnZXRNb2RpZmllcnM6 ZnVuY3Rpb24oKXt2YXIgeT17Y29udHJvbDohIXRoaXMuY3RybEtleSxzaGlmdDoh IXRoaXMuc2hpZnRLZXksYWx0OiEhdGhpcy5hbHRLZXksbWV0YTohIXRoaXMubWV0 YUtleX07eS5hY2Nlc3M9bC5vc3goKT95LmNvbnRyb2w6eS5hbHQ7eS5hbnk9eS5j b250cm9sfHx5LnNoaWZ0fHx5LmFsdHx8eS5tZXRhO3JldHVybiB5O30saXNSaWdo dENsaWNrOmZ1bmN0aW9uKCl7aWYodGhpcy53aGljaClyZXR1cm4gdGhpcy53aGlj aD09PTM7cmV0dXJuIHRoaXMuYnV0dG9uJiZ0aGlzLmJ1dHRvbj09PTI7fSxpc01p ZGRsZUNsaWNrOmZ1bmN0aW9uKCl7aWYodGhpcy53aGljaClyZXR1cm4gdGhpcy53 aGljaD09PTI7cmV0dXJuIHRoaXMuYnV0dG9uJiZ0aGlzLmJ1dHRvbj09PTQ7fSxp c0RlZmF1bHRSZXF1ZXN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRNb2Rp ZmllcnMoKS5hbnl8fHRoaXMuaXNNaWRkbGVDbGljaygpfHx0aGlzLmlzUmlnaHRD bGljaygpO319KTtuKEV2ZW50LnByb3RvdHlwZSxwLnByb3RvdHlwZSk7bihFdmVu dCx7bGlzdGVuOmZ1bmN0aW9uKHkseixhYSxiYSl7aWYodHlwZW9mIHk9PSdzdHJp bmcnKXk9bSh5KTtpZih0eXBlb2YgYmE9PSd1bmRlZmluZWQnKWJhPUV2ZW50LlBy aW9yaXR5Lk5PUk1BTDtpZih0eXBlb2Ygej09J29iamVjdCcpe3ZhciBjYT17fTtm b3IodmFyIGRhIGluIHopY2FbZGFdPUV2ZW50Lmxpc3Rlbih5LGRhLHpbZGFdLGJh KTtyZXR1cm4gY2E7fWlmKHoubWF0Y2goL15vbi9pKSl0aHJvdyBuZXcgVHlwZUVy cm9yKCJCYWQgZXZlbnQgbmFtZSBgIit6KyInOiB1c2UgYGNsaWNrJywgbm90IGBv bmNsaWNrJy4iKTtpZih5Lm5vZGVOYW1lPT0nTEFCRUwnJiZ6PT0nY2xpY2snKXt2 YXIgZWE9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTt5PWVhLmxlbmd0 aD09MT9lYVswXTp5O31lbHNlIGlmKHk9PT13aW5kb3cmJno9PT0nc2Nyb2xsJyl7 dmFyIGZhPWguZ2V0RG9jdW1lbnRTY3JvbGxFbGVtZW50KCk7aWYoZmEhPT1kb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQmJmZhIT09ZG9jdW1lbnQuYm9keSl5PWZhO312 YXIgZ2E9Zy5nZXQoeSxzLHt9KTtpZih1W3pdKXt2YXIgaGE9dVt6XTt6PWhhLmJh c2U7YWE9aGEud3JhcChhYSk7fXYoeSx6KTt2YXIgaWE9Z2Fbel07aWYoIShiYSBp biBpYSkpaWFbYmFdPVtdO3ZhciBqYT1pYVtiYV0ubGVuZ3RoLGthPW5ldyB4KGFh LGlhW2JhXSxqYSk7aWFbYmFdLnB1c2goa2EpO3JldHVybiBrYTt9LHN0b3A6ZnVu Y3Rpb24oeSl7bmV3IGkoeSkuc3RvcFByb3BhZ2F0aW9uKCk7cmV0dXJuIHk7fSxw cmV2ZW50OmZ1bmN0aW9uKHkpe25ldyBpKHkpLnByZXZlbnREZWZhdWx0KCk7cmV0 dXJuIHk7fSxraWxsOmZ1bmN0aW9uKHkpe25ldyBpKHkpLmtpbGwoKTtyZXR1cm4g ZmFsc2U7fSxnZXRLZXlDb2RlOmZ1bmN0aW9uKGV2ZW50KXtldmVudD1uZXcgaShl dmVudCkuZXZlbnQ7aWYoIWV2ZW50KXJldHVybiBmYWxzZTtzd2l0Y2goZXZlbnQu a2V5Q29kZSl7Y2FzZSA2MzIzMjpyZXR1cm4gMzg7Y2FzZSA2MzIzMzpyZXR1cm4g NDA7Y2FzZSA2MzIzNDpyZXR1cm4gMzc7Y2FzZSA2MzIzNTpyZXR1cm4gMzk7Y2Fz ZSA2MzI3MjpjYXNlIDYzMjczOmNhc2UgNjMyNzU6cmV0dXJuIG51bGw7Y2FzZSA2 MzI3NjpyZXR1cm4gMzM7Y2FzZSA2MzI3NzpyZXR1cm4gMzQ7fWlmKGV2ZW50LnNo aWZ0S2V5KXN3aXRjaChldmVudC5rZXlDb2RlKXtjYXNlIDMzOmNhc2UgMzQ6Y2Fz ZSAzNzpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpyZXR1cm4gbnVsbDt9cmV0dXJu IGV2ZW50LmtleUNvZGU7fSxnZXRQcmlvcml0aWVzOmZ1bmN0aW9uKCl7aWYoIXIp e3ZhciB5PW8oRXZlbnQuUHJpb3JpdHkpO3kuc29ydChmdW5jdGlvbih6LGFhKXty ZXR1cm4gei1hYTt9KTtyPXk7fXJldHVybiByO30sZmlyZTpmdW5jdGlvbih5LHos YWEpe3ZhciBiYT1uZXcgcCh5LHosYWEpLGNhO2Rve3ZhciBkYT1FdmVudC5fX2dl dEhhbmRsZXIoeSx6KTtpZihkYSljYT1kYShiYSk7eT15LnBhcmVudE5vZGU7fXdo aWxlKHkmJmNhIT09ZmFsc2UmJiFiYS5jYW5jZWxCdWJibGUpO3JldHVybiBjYSE9 PWZhbHNlO30sX19maXJlOmZ1bmN0aW9uKHkseixldmVudCl7dmFyIGFhPUV2ZW50 Ll9fZ2V0SGFuZGxlcih5LHopO2lmKGFhKXJldHVybiBhYShxKGV2ZW50KSk7fSxf X2dldEhhbmRsZXI6ZnVuY3Rpb24oeSx6KXtyZXR1cm4gZy5nZXQoeSxFdmVudC5E

QVRBU1RPUkVfS0VZK3opO30sZ2V0UG9zaXRpb246ZnVuY3Rpb24oeSl7eT1uZXcg aSh5KS5ldmVudDt2YXIgej1oLmdldERvY3VtZW50U2Nyb2xsRWxlbWVudCgpLGFh PXkuY2xpZW50WCt6LnNjcm9sbExlZnQsYmE9eS5jbGllbnRZK3ouc2Nyb2xsVG9w O3JldHVybiB7eDphYSx5OmJhfTt9fSk7dmFyIHI9bnVsbCxzPUV2ZW50LkRBVEFT VE9SRV9LRVksdD1mdW5jdGlvbih5KXtyZXR1cm4gZnVuY3Rpb24oeil7aWYoIWgu Y29udGFpbnModGhpcyx6LmdldFJlbGF0ZWRUYXJnZXQoKSkpcmV0dXJuIHkuY2Fs bCh0aGlzLHopO307fSx1PXttb3VzZWVudGVyOntiYXNlOidtb3VzZW92ZXInLHdy YXA6dH0sbW91c2VsZWF2ZTp7YmFzZTonbW91c2VvdXQnLHdyYXA6dH19LHY9ZnVu Y3Rpb24oeSx6KXt2YXIgYWE9J29uJyt6LGJhPXcuYmluZCh5KSxjYT1nLmdldCh5 LHMpO2lmKHogaW4gY2EpcmV0dXJuO2NhW3pdPXt9O2lmKHkuYWRkRXZlbnRMaXN0 ZW5lcil7eS5hZGRFdmVudExpc3RlbmVyKHosYmEsZmFsc2UpO31lbHNlIGlmKHku YXR0YWNoRXZlbnQpeS5hdHRhY2hFdmVudChhYSxiYSk7Zy5zZXQoeSxzK3osYmEp O2lmKHlbYWFdKXt2YXIgZGE9eT09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudD9F dmVudC5Qcmlvcml0eS5fQlVCQkxFOkV2ZW50LlByaW9yaXR5LlRSQURJVElPTkFM LGVhPXlbYWFdO3lbYWFdPW51bGw7RXZlbnQubGlzdGVuKHkseixlYSxkYSk7fWlm KHkubm9kZU5hbWU9PT0nRk9STScmJno9PT0nc3VibWl0JylFdmVudC5saXN0ZW4o eSx6LEV2ZW50Ll9fYnViYmxlU3VibWl0LmN1cnJ5KHkpLEV2ZW50LlByaW9yaXR5 Ll9CVUJCTEUpO30sdz1mdW5jdGlvbihldmVudCl7ZXZlbnQ9cShldmVudCk7dmFy IHk9ZXZlbnQudHlwZTtpZighZy5nZXQodGhpcyxzKSl0aHJvdyBuZXcgRXJyb3Io IkJhZCBsaXN0ZW5IYW5kbGVyIGNvbnRleHQuIik7dmFyIHo9Zy5nZXQodGhpcyxz KVt5XTtpZigheil0aHJvdyBuZXcgRXJyb3IoIk5vIHJlZ2lzdGVyZWQgaGFuZGxl cnMgZm9yIGAiK3krIicuIik7aWYoeT09J2NsaWNrJyl7dmFyIGFhPWsuYnlUYWco ZXZlbnQuZ2V0VGFyZ2V0KCksJ2EnKTtpZih3aW5kb3cudXNlckFjdGlvbil7dmFy IGJhPXdpbmRvdy51c2VyQWN0aW9uKCdldnRfZXh0JyxhYSxldmVudCx7bW9kZTon REVEVVAnfSkudWFpX2ZhbGxiYWNrKCdjbGljaycpO2lmKHdpbmRvdy5BcmJpdGVy TW9uaXRvcil3aW5kb3cuQXJiaXRlck1vbml0b3IuaW5pdFVBKGJhLFthYV0pO31p Zih3aW5kb3cuY2xpY2tSZWZBY3Rpb24pd2luZG93LmNsaWNrUmVmQWN0aW9uKCdj bGljaycsYWEsZXZlbnQpO312YXIgY2E9RXZlbnQuZ2V0UHJpb3JpdGllcygpO2Zv cih2YXIgZGE9MDtkYTxjYS5sZW5ndGg7ZGErKyl7dmFyIGVhPWNhW2RhXTtpZihl YSBpbiB6KXt2YXIgZmE9eltlYV07Zm9yKHZhciBnYT0wO2dhPGZhLmxlbmd0aDtn YSsrKXtpZighZmFbZ2FdKWNvbnRpbnVlO3ZhciBoYT1mYVtnYV0uZmlyZSh0aGlz LGV2ZW50KTtpZihoYT09PWZhbHNlKXtyZXR1cm4gZXZlbnQua2lsbCgpO31lbHNl IGlmKGV2ZW50LmNhbmNlbEJ1YmJsZSlldmVudC5zdG9wKCk7fX19cmV0dXJuIGV2 ZW50LnJldHVyblZhbHVlO307RXZlbnQuUHJpb3JpdHk9e1VSR0VOVDotMjAsVFJB RElUSU9OQUw6LTEwLE5PUk1BTDowLF9CVUJCTEU6MTAwMH07ZnVuY3Rpb24geCh5 LHosYWEpe3RoaXMuX2hhbmRsZXI9eTt0aGlzLl9jb250YWluZXI9ejt0aGlzLl9p bmRleD1hYTt9bih4LnByb3RvdHlwZSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZGVsZXRl IHRoaXMuX2hhbmRsZXI7ZGVsZXRlIHRoaXMuX2NvbnRhaW5lclt0aGlzLl9pbmRl eF07fSxmaXJlOmZ1bmN0aW9uKHksZXZlbnQpe3JldHVybiBqLmFwcGx5V2l0aEd1 YXJkKHRoaXMuX2hhbmRsZXIseSxbZXZlbnRdLGZ1bmN0aW9uKHope3ouZXZlbnRf dHlwZT1ldmVudC50eXBlO3ouZG9tX2VsZW1lbnQ9eS5uYW1lfHx5LmlkO3ouY2F0 ZWdvcnk9J2V2ZW50aGFuZGxlcic7fSk7fX0pO2EuJEU9Zi4kRT1xO30pOwpfX2Qo ImV2YWxHbG9iYWwiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBn KGgpe2lmKHR5cGVvZiBoIT0nc3RyaW5nJyl0aHJvdyBuZXcgVHlwZUVycm9yKCdK UyBzZW50IHRvIGV2YWxHbG9iYWwgaXMgbm90IGEgc3RyaW5nLiBPbmx5IHN0cmlu Z3MgYXJlIHBlcm1pdHRlZC4nKTtpZighaClyZXR1cm47dmFyIGk9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7dHJ5e2kuYXBwZW5kQ2hpbGQoZG9jdW1l bnQuY3JlYXRlVGV4dE5vZGUoaCkpO31jYXRjaChqKXtpLnRleHQ9aDt9dmFyIGs9 ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXXx8ZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50O2suYXBwZW5kQ2hpbGQoaSk7ay5yZW1vdmVDaGls ZChpKTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiSFRNTCIsWyJmdW5jdGlvbi1leHRl bnNpb25zIiwiQm9vdGxvYWRlciIsIlVzZXJBZ2VudCIsImNvcHlQcm9wZXJ0aWVz IiwiY3JlYXRlQXJyYXlGcm9tIiwiZXZhbEdsb2JhbCJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9YignQm9vdGxv YWRlcicpLGg9YignVXNlckFnZW50JyksaT1iKCdjb3B5UHJvcGVydGllcycpLGo9 YignY3JlYXRlQXJyYXlGcm9tJyksaz1iKCdldmFsR2xvYmFsJyk7ZnVuY3Rpb24g bChtKXtpZihtJiZtLl9faHRtbCltPW0uX19odG1sO2lmKCEodGhpcyBpbnN0YW5j ZW9mIGwpKXtpZihtIGluc3RhbmNlb2YgbClyZXR1cm4gbTtyZXR1cm4gbmV3IGwo bSk7fXRoaXMuX2NvbnRlbnQ9bTt0aGlzLl9kZWZlcj1mYWxzZTt0aGlzLl9leHRy YV9hY3Rpb249Jyc7dGhpcy5fbm9kZXM9bnVsbDt0aGlzLl9pbmxpbmVfanM9YmFn

b2Zob2xkaW5nO3RoaXMuX3Jvb3ROb2RlPW51bGw7cmV0dXJuIHRoaXM7fWwuaXNI VE1MPWZ1bmN0aW9uKG0pe3JldHVybiBtJiYobSBpbnN0YW5jZW9mIGx8fG0uX19o dG1sIT09dW5kZWZpbmVkKTt9O2wucmVwbGFjZUpTT05XcmFwcGVyPWZ1bmN0aW9u KG0pe3JldHVybiBtJiZtLl9faHRtbCE9PXVuZGVmaW5lZD9uZXcgbChtLl9faHRt bCk6bTt9O2kobC5wcm90b3R5cGUse3RvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIG09 dGhpcy5fY29udGVudHx8Jyc7aWYodGhpcy5fZXh0cmFfYWN0aW9uKW0rPSc8c2Ny aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Jyt0aGlzLl9leHRyYV9hY3Rpb24r Jzwvc2NyJysnaXB0Pic7cmV0dXJuIG07fSxzZXRBY3Rpb246ZnVuY3Rpb24obSl7 dGhpcy5fZXh0cmFfYWN0aW9uPW07cmV0dXJuIHRoaXM7fSxnZXRBY3Rpb246ZnVu Y3Rpb24oKXt0aGlzLl9maWxsQ2FjaGUoKTt2YXIgbT1mdW5jdGlvbigpe3RoaXMu X2lubGluZV9qcygpO2sodGhpcy5fZXh0cmFfYWN0aW9uKTt9LmJpbmQodGhpcyk7 aWYodGhpcy5nZXREZWZlcnJlZCgpKXtyZXR1cm4gbS5kZWZlci5iaW5kKG0pO31l bHNlIHJldHVybiBtO30sc2V0RGVmZXJyZWQ6ZnVuY3Rpb24obSl7dGhpcy5fZGVm ZXI9ISFtO3JldHVybiB0aGlzO30sZ2V0RGVmZXJyZWQ6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fZGVmZXI7fSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX2NvbnRlbnQ7fSxnZXROb2RlczpmdW5jdGlvbigpe3RoaXMuX2ZpbGxDYWNo ZSgpO3JldHVybiB0aGlzLl9ub2Rlczt9LGdldFJvb3ROb2RlOmZ1bmN0aW9uKCl7 dmFyIG09dGhpcy5nZXROb2RlcygpO2lmKG0ubGVuZ3RoPT09MSl7dGhpcy5fcm9v dE5vZGU9bVswXTt9ZWxzZXt2YXIgbj1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZy YWdtZW50KCk7Zm9yKHZhciBvPTA7bzxtLmxlbmd0aDtvKyspbi5hcHBlbmRDaGls ZChtW29dKTt0aGlzLl9yb290Tm9kZT1uO31yZXR1cm4gdGhpcy5fcm9vdE5vZGU7 fSxfZmlsbENhY2hlOmZ1bmN0aW9uKCl7aWYobnVsbCE9PXRoaXMuX25vZGVzKXJl dHVybjt2YXIgbT10aGlzLl9jb250ZW50O2lmKCFtKXt0aGlzLl9ub2Rlcz1bXTty ZXR1cm47fW09bS5yZXBsYWNlKC8oPChcdyspW14+XSo/KVwvPi9nLGZ1bmN0aW9u KHgseSx6KXtyZXR1cm4gei5tYXRjaCgvXihhYmJyfGJyfGNvbHxpbWd8aW5wdXR8 bGlua3xtZXRhfHBhcmFtfGhyfGFyZWF8ZW1iZWQpJC9pKT94OnkrJz48Lycreisn Pic7fSk7dmFyIG49bS50cmltKCkudG9Mb3dlckNhc2UoKSxvPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2RpdicpLHA9ZmFsc2UscT0oIW4uaW5kZXhPZignPG9wdCcp JiZbMSwnPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiIGNsYXNzPSJfX1dSQVBQ RVIiPicsJzwvc2VsZWN0PiddKXx8KCFuLmluZGV4T2YoJzxsZWcnKSYmWzEsJzxm aWVsZHNldCBjbGFzcz0iX19XUkFQUEVSIj4nLCc8L2ZpZWxkc2V0PiddKXx8KG4u bWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwnPHRh YmxlIGNsYXNzPSJfX1dSQVBQRVIiPicsJzwvdGFibGU+J10pfHwoIW4uaW5kZXhP ZignPHRyJykmJlsyLCc8dGFibGU+PHRib2R5IGNsYXNzPSJfX1dSQVBQRVIiPics JzwvdGJvZHk+PC90YWJsZT4nXSl8fCgoIW4uaW5kZXhPZignPHRkJyl8fCFuLmlu ZGV4T2YoJzx0aCcpKSYmWzMsJzx0YWJsZT48dGJvZHk+PHRyIGNsYXNzPSJfX1dS QVBQRVIiPicsJzwvdHI+PC90Ym9keT48L3RhYmxlPiddKXx8KCFuLmluZGV4T2Yo Jzxjb2wnKSYmWzIsJzx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXAgY2xh c3M9Il9fV1JBUFBFUiI+JywnPC9jb2xncm91cD48L3RhYmxlPiddKXx8bnVsbDtp ZihudWxsPT09cSl7by5jbGFzc05hbWU9J19fV1JBUFBFUic7aWYoaC5pZSgpKXtx PVswLCc8c3BhbiBzdHlsZT0iZGlzcGxheTpub25lIj4mbmJzcDs8L3NwYW4+Jywn J107cD10cnVlO31lbHNlIHE9WzAsJycsJyddO31vLmlubmVySFRNTD1xWzFdK20r cVsyXTt3aGlsZShxWzBdLS0pbz1vLmxhc3RDaGlsZDtpZihwKW8ucmVtb3ZlQ2hp bGQoby5maXJzdENoaWxkKTtvLmNsYXNzTmFtZSE9J19fV1JBUFBFUic7aWYoaC5p ZSgpKXt2YXIgcjtpZighbi5pbmRleE9mKCc8dGFibGUnKSYmLTE9PW4uaW5kZXhP ZignPHRib2R5Jykpe3I9by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGRO b2Rlczt9ZWxzZSBpZihxWzFdPT0nPHRhYmxlPicmJi0xPT1uLmluZGV4T2YoJzx0 Ym9keScpKXtyPW8uY2hpbGROb2Rlczt9ZWxzZSByPVtdO2Zvcih2YXIgcz1yLmxl bmd0aC0xO3M+PTA7LS1zKWlmKHJbc10ubm9kZU5hbWUmJnJbc10ubm9kZU5hbWUu dG9Mb3dlckNhc2UoKT09J3Rib2R5JyYmcltzXS5jaGlsZE5vZGVzLmxlbmd0aD09 MClyW3NdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocltzXSk7fXZhciB0PW8uZ2V0 RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpLHU9W107Zm9yKHZhciB2PTA7djx0 Lmxlbmd0aDt2KyspaWYodFt2XS5zcmMpe3UucHVzaChnLnJlcXVlc3RSZXNvdXJj ZS5iaW5kKGcsJ2pzJyx0W3ZdLnNyYykpO31lbHNlIHUucHVzaChrLmJpbmQobnVs bCx0W3ZdLmlubmVySFRNTCkpO2Zvcih2YXIgdj10Lmxlbmd0aC0xO3Y+PTA7di0t KXRbdl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0W3ZdKTt2YXIgdz1mdW5jdGlv bigpe2Zvcih2YXIgeD0wO3g8dS5sZW5ndGg7eCsrKXVbeF0oKTt9O3RoaXMuX25v ZGVzPWooby5jaGlsZE5vZGVzKTt0aGlzLl9pbmxpbmVfanM9dzt9fSk7ZS5leHBv cnRzPWw7fSk7Cl9fZCgiaXNTY2FsYXIiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXtmdW5jdGlvbiBnKGgpe3JldHVybiAoL3N0cmluZ3xudW1iZXJ8Ym9vbGVhbi8p

LnRlc3QodHlwZW9mIGgpO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJET00iLFsiZXZl bnQtZXh0ZW5zaW9ucyIsIkNTUyIsIkRPTVF1ZXJ5IiwiSFRNTCIsIlVzZXJBZ2Vu dCIsIiQiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0ZUFycmF5RnJvbSIsImlzU2Nh bGFyIiwidHgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5z aW9ucycpO3ZhciBnPWIoJ0NTUycpLGg9YignRE9NUXVlcnknKSxpPWIoJ0hUTUwn KSxqPWIoJ1VzZXJBZ2VudCcpLGs9YignJCcpLGw9YignY29weVByb3BlcnRpZXMn KSxtPWIoJ2NyZWF0ZUFycmF5RnJvbScpLG49YignaXNTY2FsYXInKSxvPWIoJ3R4 JykscD0nanNfJyxxPTAscj17fTtsKHIsaCk7bChyLHtjcmVhdGU6ZnVuY3Rpb24o dSx2LHcpe3ZhciB4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSk7aWYodilyLnNl dEF0dHJpYnV0ZXMoeCx2KTtpZih3IT1udWxsKXIuc2V0Q29udGVudCh4LHcpO3Jl dHVybiB4O30sc2V0QXR0cmlidXRlczpmdW5jdGlvbih1LHYpe2lmKHYudHlwZSl1 LnR5cGU9di50eXBlO2Zvcih2YXIgdyBpbiB2KXt2YXIgeD12W3ddLHk9KC9eb24v aSkudGVzdCh3KTtpZih3PT0ndHlwZScpe2NvbnRpbnVlO31lbHNlIGlmKHc9PSdz dHlsZScpe2lmKHR5cGVvZiB4PT0nc3RyaW5nJyl7dS5zdHlsZS5jc3NUZXh0PXg7 fWVsc2UgbCh1LnN0eWxlLHgpO31lbHNlIGlmKHkpe0V2ZW50Lmxpc3Rlbih1LHcu c3Vic3RyKDIpLHgpO31lbHNlIGlmKHcgaW4gdSl7dVt3XT14O31lbHNlIGlmKHUu c2V0QXR0cmlidXRlKXUuc2V0QXR0cmlidXRlKHcseCk7fX0scHJlcGVuZENvbnRl bnQ6ZnVuY3Rpb24odSx2KXtyZXR1cm4gcyh2LHUsZnVuY3Rpb24odyl7dS5maXJz dENoaWxkP3UuaW5zZXJ0QmVmb3JlKHcsdS5maXJzdENoaWxkKTp1LmFwcGVuZENo aWxkKHcpO30pO30saW5zZXJ0QWZ0ZXI6ZnVuY3Rpb24odSx2KXt2YXIgdz11LnBh cmVudE5vZGU7cmV0dXJuIHModix3LGZ1bmN0aW9uKHgpe3UubmV4dFNpYmxpbmc/ dy5pbnNlcnRCZWZvcmUoeCx1Lm5leHRTaWJsaW5nKTp3LmFwcGVuZENoaWxkKHgp O30pO30saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHUsdil7dmFyIHc9dS5wYXJlbnRO b2RlO3JldHVybiBzKHYsdyxmdW5jdGlvbih4KXt3Lmluc2VydEJlZm9yZSh4LHUp O30pO30sc2V0Q29udGVudDpmdW5jdGlvbih1LHYpe3IuZW1wdHkodSk7cmV0dXJu IHIuYXBwZW5kQ29udGVudCh1LHYpO30sYXBwZW5kQ29udGVudDpmdW5jdGlvbih1 LHYpe3JldHVybiBzKHYsdSxmdW5jdGlvbih3KXt1LmFwcGVuZENoaWxkKHcpO30p O30scmVwbGFjZTpmdW5jdGlvbih1LHYpe3ZhciB3PXUucGFyZW50Tm9kZTtyZXR1 cm4gcyh2LHcsZnVuY3Rpb24oeCl7dy5yZXBsYWNlQ2hpbGQoeCx1KTt9KTt9LHJl bW92ZTpmdW5jdGlvbih1KXt1PWsodSk7aWYodS5wYXJlbnROb2RlKXUucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZCh1KTt9LGVtcHR5OmZ1bmN0aW9uKHUpe3U9ayh1KTt3 aGlsZSh1LmZpcnN0Q2hpbGQpci5yZW1vdmUodS5maXJzdENoaWxkKTt9LGdldElE OmZ1bmN0aW9uKHUpe3ZhciB2PXUuaWQ7aWYoIXYpe3Y9cCtxKys7dS5pZD12O31y ZXR1cm4gdjt9fSk7ZnVuY3Rpb24gcyh1LHYsdyl7dT1pLnJlcGxhY2VKU09OV3Jh cHBlcih1KTtpZih1IGluc3RhbmNlb2YgaSYmJyc9PT12LmlubmVySFRNTCYmLTE9 PT11LnRvU3RyaW5nKCkuaW5kZXhPZignPHNjcicrJ2lwdCcpKXt2YXIgeD1qLmll KCk7aWYoIXh8fCh4PjcmJiFoLmlzTm9kZU9mVHlwZSh2LFsndGFibGUnLCd0Ym9k eScsJ3RoZWFkJywndGZvb3QnLCd0cicsJ3NlbGVjdCcsJ2ZpZWxkc2V0J10pKSl7 dmFyIHk9eD8nPGVtIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4mbmJzcDs8L2VtPic6 Jyc7di5pbm5lckhUTUw9eSt1O3gmJnYucmVtb3ZlQ2hpbGQodi5maXJzdENoaWxk KTtyZXR1cm4gbSh2LmNoaWxkTm9kZXMpO319ZWxzZSBpZihoLmlzVGV4dE5vZGUo dikpe3YuZGF0YT11O3JldHVybiBbdV07fXZhciB6PWRvY3VtZW50LmNyZWF0ZURv Y3VtZW50RnJhZ21lbnQoKSxhYSxiYT1bXSxjYT1bXTtpZighQXJyYXkuaXNBcnJh eSh1KSl1PVt1XTtmb3IodmFyIGRhPTA7ZGE8dS5sZW5ndGg7ZGErKyl7YWE9aS5y ZXBsYWNlSlNPTldyYXBwZXIodVtkYV0pO2lmKGFhIGluc3RhbmNlb2YgaSl7Y2Eu cHVzaChhYS5nZXRBY3Rpb24oKSk7dmFyIGVhPWFhLmdldE5vZGVzKCk7Zm9yKHZh ciBmYT0wO2ZhPGVhLmxlbmd0aDtmYSsrKXtiYS5wdXNoKGVhW2ZhXSk7ei5hcHBl bmRDaGlsZChlYVtmYV0pO319ZWxzZSBpZihuKGFhKSl7dmFyIGdhPWRvY3VtZW50 LmNyZWF0ZVRleHROb2RlKGFhKTtiYS5wdXNoKGdhKTt6LmFwcGVuZENoaWxkKGdh KTt9ZWxzZSBpZihoLmlzTm9kZShhYSkpe2JhLnB1c2goYWEpO3ouYXBwZW5kQ2hp bGQoYWEpO319dyh6KTtjYS5mb3JFYWNoKGZ1bmN0aW9uKGhhKXtoYSgpO30pO3Jl dHVybiBiYTt9ZnVuY3Rpb24gdCh1KXtmdW5jdGlvbiB2KHcpe3JldHVybiByLmNy ZWF0ZSgnZGl2Jyx7fSx3KS5pbm5lckhUTUw7fXJldHVybiBmdW5jdGlvbih3LHgp e3ZhciB5PXt9O2lmKHgpZm9yKHZhciB6IGluIHgpeVt6XT12KHhbel0pO3JldHVy biBpKHUodyx5KSk7fTt9ci50eD10KG8pO3IudHguXz1yLl90eD10KG8uXyk7ZS5l eHBvcnRzPXI7fSk7Cl9fZCgiU3R5bGUiLFsiRE9NUXVlcnkiLCJFcnJvclV0aWxz IiwiJCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET01RdWVyeScp LGg9YignRXJyb3JVdGlscycpLGk9YignJCcpO2Z1bmN0aW9uIGoobSl7cmV0dXJu IG0ucmVwbGFjZSgvKFtBLVpdKS9nLCctJDEnKS50b0xvd2VyQ2FzZSgpO31mdW5j dGlvbiBrKG0sbil7dmFyIG89bC5nZXQobSxuKTtyZXR1cm4gKG89PT0nYXV0byd8

fG89PT0nc2Nyb2xsJyk7fXZhciBsPXtzZXQ6ZnVuY3Rpb24obSxuLG8pe3N3aXRj aChuKXtjYXNlICdvcGFjaXR5JzptLnN0eWxlLm9wYWNpdHk9bzttLnN0eWxlLmZp bHRlcj1vIT09Jyc/J2FscGhhKG9wYWNpdHk9JytvKjEwMCsnKSc6Jyc7YnJlYWs7 Y2FzZSAnZmxvYXQnOm0uc3R5bGUuY3NzRmxvYXQ9bS5zdHlsZS5zdHlsZUZsb2F0 PW87YnJlYWs7Y2FzZSAnd2lkdGgnOmNhc2UgJ2hlaWdodCc6aWYocGFyc2VJbnQo bywxMCk8MCloLmFwcGx5V2l0aEd1YXJkKGZ1bmN0aW9uKHEscil7dGhyb3cgbmV3 IEVycm9yKCdTdHlsZS5zZXQ6ICInK3ErJyIgYXJndW1lbnQgaXMgaW52YWxpZDog IicrcisnIicpO30sbCxbbixvXSk7ZGVmYXVsdDpuPW4ucmVwbGFjZSgvLSguKS9n LGZ1bmN0aW9uKHEscil7cmV0dXJuIHIudG9VcHBlckNhc2UoKTt9KTt0cnl7bS5z dHlsZVtuXT1vO31jYXRjaChwKXt0aHJvdyBuZXcgRXJyb3IoJ1N0eWxlLnNldDog IicrbisnIiBhcmd1bWVudCBpcyBpbnZhbGlkOiAiJytvKyciJyk7fX1yZXR1cm4g bTt9LGdldDpmdW5jdGlvbihtLG4pe209aShtKTtuPW4ucmVwbGFjZSgvLSguKS9n LGZ1bmN0aW9uKHAscSl7cmV0dXJuIHEudG9VcHBlckNhc2UoKTt9KTt2YXIgbztp Zih3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSl7bz13aW5kb3cuZ2V0Q29tcHV0ZWRT dHlsZShtLG51bGwpO2lmKG8pcmV0dXJuIG8uZ2V0UHJvcGVydHlWYWx1ZShqKG4p KTt9aWYoZG9jdW1lbnQuZGVmYXVsdFZpZXcmJmRvY3VtZW50LmRlZmF1bHRWaWV3 LmdldENvbXB1dGVkU3R5bGUpe289ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t cHV0ZWRTdHlsZShtLG51bGwpO2lmKG8pcmV0dXJuIG8uZ2V0UHJvcGVydHlWYWx1 ZShqKG4pKTtpZihuPT0iZGlzcGxheSIpcmV0dXJuICJub25lIjt9aWYobS5jdXJy ZW50U3R5bGUpcmV0dXJuIG0uY3VycmVudFN0eWxlW25dO3JldHVybiBtLnN0eWxl JiZtLnN0eWxlW25dO30sZ2V0RmxvYXQ6ZnVuY3Rpb24obSxuKXtyZXR1cm4gcGFy c2VGbG9hdChsLmdldChtLG4pLDEwKTt9LGdldE9wYWNpdHk6ZnVuY3Rpb24obSl7 bT1pKG0pO3ZhciBuPWwuZ2V0KG0sJ2ZpbHRlcicpLG89bnVsbDtpZihuJiYobz0v KFxkKyg/OlwuXGQrKT8pLy5leGVjKG4pKSl7cmV0dXJuIHBhcnNlRmxvYXQoby5w b3AoKSkvMTAwO31lbHNlIGlmKG49bC5nZXQobSwnb3BhY2l0eScpKXtyZXR1cm4g cGFyc2VGbG9hdChuKTt9ZWxzZSByZXR1cm4gMTt9LGlzRml4ZWQ6ZnVuY3Rpb24o bSl7d2hpbGUobSYmbSE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7aWYobC5n ZXQobSwncG9zaXRpb24nKT09PSdmaXhlZCcpcmV0dXJuIHRydWU7bT1tLnBhcmVu dE5vZGU7fXJldHVybiBmYWxzZTt9LGdldFNjcm9sbFBhcmVudDpmdW5jdGlvbiht KXtpZighbSlyZXR1cm4gbnVsbDt3aGlsZShtIT09ZG9jdW1lbnQuYm9keSl7aWYo ayhtLCdvdmVyZmxvdycpfHxrKG0sJ292ZXJmbG93WScpfHxrKG0sJ292ZXJmbG93 WCcpKXJldHVybiBtO209bS5wYXJlbnROb2RlO31yZXR1cm4gd2luZG93O319O2Uu ZXhwb3J0cz1sO30pOwpfX2QoIkRPTURpbWVuc2lvbnMiLFsiRE9NUXVlcnkiLCJT dHlsZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET01RdWVyeScp LGg9YignU3R5bGUnKSxpPXtnZXRFbGVtZW50RGltZW5zaW9uczpmdW5jdGlvbihq KXtyZXR1cm4ge3dpZHRoOmoub2Zmc2V0V2lkdGh8fDAsaGVpZ2h0Omoub2Zmc2V0 SGVpZ2h0fHwwfTt9LGdldFZpZXdwb3J0RGltZW5zaW9uczpmdW5jdGlvbigpe3Zh ciBqPSh3aW5kb3cmJndpbmRvdy5pbm5lcldpZHRoKXx8KGRvY3VtZW50JiZkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5j bGllbnRXaWR0aCl8fChkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQu Ym9keS5jbGllbnRXaWR0aCl8fDAsaz0od2luZG93JiZ3aW5kb3cuaW5uZXJIZWln aHQpfHwoZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCl8fChkb2N1bWVudCYmZG9j dW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpfHwwO3JldHVy biB7d2lkdGg6aixoZWlnaHQ6a307fSxnZXRWaWV3cG9ydFdpdGhvdXRTY3JvbGxi YXJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGo9KGRvY3VtZW50JiZkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGll bnRXaWR0aCl8fChkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9k eS5jbGllbnRXaWR0aCl8fDAsaz0oZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50 RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCl8 fChkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5jbGllbnRI ZWlnaHQpfHwwO3JldHVybiB7d2lkdGg6aixoZWlnaHQ6a307fSxnZXREb2N1bWVu dERpbWVuc2lvbnM6ZnVuY3Rpb24oail7aj1qfHxkb2N1bWVudDt2YXIgaz1nLmdl dERvY3VtZW50U2Nyb2xsRWxlbWVudChqKSxsPWsuc2Nyb2xsV2lkdGh8fDAsbT1r LnNjcm9sbEhlaWdodHx8MDtyZXR1cm4ge3dpZHRoOmwsaGVpZ2h0Om19O30sbWVh c3VyZUVsZW1lbnRCb3g6ZnVuY3Rpb24oaixrLGwsbSxuKXt2YXIgbztzd2l0Y2go ayl7Y2FzZSAnbGVmdCc6Y2FzZSAncmlnaHQnOmNhc2UgJ3RvcCc6Y2FzZSAnYm90 dG9tJzpvPVtrXTticmVhaztjYXNlICd3aWR0aCc6bz1bJ2xlZnQnLCdyaWdodCdd O2JyZWFrO2Nhc2UgJ2hlaWdodCc6bz1bJ3RvcCcsJ2JvdHRvbSddO2JyZWFrO2Rl ZmF1bHQ6dGhyb3cgRXJyb3IoJ0ludmFsaWQgcGxhbmU6ICcrayk7fXZhciBwPWZ1

bmN0aW9uKHEscil7dmFyIHM9MDtmb3IodmFyIHQ9MDt0PG8ubGVuZ3RoO3QrKylz Kz1wYXJzZUludChoLmdldChqLHErJy0nK29bdF0rciksMTApfHwwO3JldHVybiBz O307cmV0dXJuIChsP3AoJ3BhZGRpbmcnLCcnKTowKSsobT9wKCdib3JkZXInLCct d2lkdGgnKTowKSsobj9wKCdtYXJnaW4nLCcnKTowKTt9fTtlLmV4cG9ydHM9aTt9 KTsKX19kKCJET01Qb3NpdGlvbiIsWyJET01RdWVyeSJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdET01RdWVyeScpLGg9e2dldFNjcm9sbFBvc2l0aW9u OmZ1bmN0aW9uKCl7dmFyIGk9Zy5nZXREb2N1bWVudFNjcm9sbEVsZW1lbnQoKTty ZXR1cm4ge3g6aS5zY3JvbGxMZWZ0LHk6aS5zY3JvbGxUb3B9O30sZ2V0RWxlbWVu dFBvc2l0aW9uOmZ1bmN0aW9uKGkpe2lmKCFpKXJldHVybjtpZighKCdnZXRCb3Vu ZGluZ0NsaWVudFJlY3QnIGluIGkpKXJldHVybiB7eDowLHk6MH07dmFyIGo9aS5n ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrPWRvY3VtZW50LmRvY3VtZW50RWxlbWVu dCxsPU1hdGgucm91bmQoai5sZWZ0KS1rLmNsaWVudExlZnQsbT1NYXRoLnJvdW5k KGoudG9wKS1rLmNsaWVudFRvcDtyZXR1cm4ge3g6bCx5Om19O319O2UuZXhwb3J0 cz1oO30pOwpfX2QoImxlZ2FjeTpkb20tc2Nyb2xsIixbIkRPTVNjcm9sbCJdLGZ1 bmN0aW9uKGEsYixjLGQpe2EuRE9NU2Nyb2xsPWIoJ0RPTVNjcm9sbCcpO30sMyk7 Cl9fZCgiT25sb2FkSG9va3MiLFsiQXJiaXRlciIsIkVycm9yVXRpbHMiLCJJbml0 aWFsSlNMb2FkZXIiLCJPbmxvYWRFdmVudCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdFcnJvclV0aWxzJyksaT1iKCdJbml0 aWFsSlNMb2FkZXInKSxqPWIoJ09ubG9hZEV2ZW50Jyk7ZnVuY3Rpb24gaygpe3Zh ciByPWEuQ2F2YWxyeUxvZ2dlcjtpZighd2luZG93LmxvYWRlZCYmcilyLmdldElu c3RhbmNlKCkuc2V0VGltZVN0YW1wKCd0X3ByZWhvb2tzJyk7bignb25sb2FkaG9v a3MnKTtpZighd2luZG93LmxvYWRlZCYmcilyLmdldEluc3RhbmNlKCkuc2V0VGlt ZVN0YW1wKCd0X2hvb2tzJyk7d2luZG93LmxvYWRlZD10cnVlO2cuaW5mb3JtKCd1 aXBhZ2Vfb25sb2FkJyx0cnVlLGcuQkVIQVZJT1JfU1RBVEUpO31mdW5jdGlvbiBs KCl7bignb25hZnRlcmxvYWRob29rcycpO3dpbmRvdy5hZnRlcmxvYWRlZD10cnVl O31mdW5jdGlvbiBtKHIscyl7cmV0dXJuIGguYXBwbHlXaXRoR3VhcmQocixudWxs LG51bGwsZnVuY3Rpb24odCl7dC5ldmVudF90eXBlPXM7dC5jYXRlZ29yeT0ncnVu aG9vayc7fSk7fWZ1bmN0aW9uIG4ocil7dmFyIHM9KHI9PSdvbmJlZm9yZWxlYXZl aG9va3MnKXx8KHI9PSdvbmJlZm9yZXVubG9hZGhvb2tzJyk7ZG97dmFyIHQ9d2lu ZG93W3JdO2lmKCF0KWJyZWFrO2lmKCFzKXdpbmRvd1tyXT1udWxsO2Zvcih2YXIg dT0wO3U8dC5sZW5ndGg7dSsrKXt2YXIgdj1tKHRbdV0scik7aWYocyYmdilyZXR1 cm4gdjt9fXdoaWxlKCFzJiZ3aW5kb3dbcl0pO31mdW5jdGlvbiBvKCl7aWYoIXdp bmRvdy5sb2FkZWQpe3dpbmRvdy5sb2FkZWQ9dHJ1ZTtuKCdvbmxvYWRob29rcycp O31pZighd2luZG93LmFmdGVybG9hZGVkKXt3aW5kb3cuYWZ0ZXJsb2FkZWQ9dHJ1 ZTtuKCdvbmFmdGVybG9hZGhvb2tzJyk7fX1mdW5jdGlvbiBwKCl7Zy5yZWdpc3Rl ckNhbGxiYWNrKGssW2ouT05MT0FEX0RPTUNPTlRFTlRfQ0FMTEJBQ0ssaS5JTklU SUFMX0pTX1JFQURZXSk7Zy5yZWdpc3RlckNhbGxiYWNrKGwsW2ouT05MT0FEX0RP TUNPTlRFTlRfQ0FMTEJBQ0ssai5PTkxPQURfQ0FMTEJBQ0ssaS5JTklUSUFMX0pT X1JFQURZXSk7Zy5zdWJzY3JpYmUoai5PTkJFRk9SRVVOTE9BRCxmdW5jdGlvbihy LHMpe3Mud2Fybj1uKCdvbmJlZm9yZWxlYXZlaG9va3MnKXx8bignb25iZWZvcmV1 bmxvYWRob29rcycpO2lmKCFzLndhcm4pe3dpbmRvdy5sb2FkZWQ9ZmFsc2U7d2lu ZG93LmFmdGVybG9hZGVkPWZhbHNlO319LGcuU1VCU0NSSUJFX05FVyk7Zy5zdWJz Y3JpYmUoai5PTlVOTE9BRCxmdW5jdGlvbihyLHMpe24oJ29udW5sb2FkaG9va3Mn KTt9LGcuU1VCU0NSSUJFX05FVyk7fXZhciBxPXtfb25sb2FkSG9vazprLF9vbmFm dGVybG9hZEhvb2s6bCxydW5Ib29rOm0scnVuSG9va3M6bixrZWVwV2luZG93U2V0 QXNMb2FkZWQ6b307cCgpO2EuT25sb2FkSG9va3M9ZS5leHBvcnRzPXE7fSk7Cl9f ZCgibGVnYWN5Om9ubG9hZC1hY3Rpb24iLFsiT25sb2FkSG9va3MiXSxmdW5jdGlv bihhLGIsYyxkKXt2YXIgZT1iKCdPbmxvYWRIb29rcycpO2EuX29ubG9hZEhvb2s9 ZS5fb25sb2FkSG9vazthLl9vbmFmdGVybG9hZEhvb2s9ZS5fb25hZnRlcmxvYWRI b29rO2EucnVuSG9vaz1lLnJ1bkhvb2s7YS5ydW5Ib29rcz1lLnJ1bkhvb2tzO2Eu a2VlcF93aW5kb3dfc2V0X2FzX2xvYWRlZD1lLmtlZXBXaW5kb3dTZXRBc0xvYWRl ZDt9LDMpOwpmdW5jdGlvbiBsaW5rX3JlbF9wcmVsb2FkKCl7dmFyIGE9L2FzeW5j KD86LXBvc3QpP3xkaWFsb2coPzotcGlwZXwtcG9zdCk/fHRoZWF0ZXJ8dG9nZ2xl Lztkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub25tb3VzZWRvd249ZnVuY3Rpb24o Yil7Yj1ifHx3aW5kb3cuZXZlbnQ7dmFyIGM9Yi50YXJnZXR8fGIuc3JjRWxlbWVu dCxkPVBhcmVudC5ieVRhZyhjLCdBJyk7aWYoIWQpcmV0dXJuO3ZhciBlPWQuZ2V0 QXR0cmlidXRlKCdhamF4aWZ5JyksZj1kLmhyZWYsZz1lfHxmO2lmKGUmJmYmJiEo LyMkLykudGVzdChmKSl7dmFyIGg9Yi53aGljaCYmYi53aGljaCE9MSxpPWIuYWx0 S2V5fHxiLmN0cmxLZXl8fGIubWV0YUtleXx8Yi5zaGlmdEtleTtpZihofHxpKXJl dHVybjt9dmFyIGo9ZC5yZWwmJmQucmVsLm1hdGNoKGEpO2o9aiYmalswXTtzd2l0

Y2goail7Y2FzZSAnZGlhbG9nJzpjYXNlICdkaWFsb2ctcG9zdCc6Qm9vdGxvYWRl ci5sb2FkQ29tcG9uZW50cygnZGlhbG9nJyk7YnJlYWs7Y2FzZSAnZGlhbG9nLXBp cGUnOkJvb3Rsb2FkZXIubG9hZENvbXBvbmVudHMoWydhamF4cGlwZScsJ2RpYWxv ZyddKTticmVhaztjYXNlICdhc3luYyc6Y2FzZSAnYXN5bmMtcG9zdCc6Qm9vdGxv YWRlci5sb2FkQ29tcG9uZW50cygnYXN5bmMnKTticmVhaztjYXNlICd0aGVhdGVy JzpCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKCdQaG90b1Nub3dsaWZ0JyxmdW5j dGlvbigpe1Bob3RvU25vd2xpZnQucHJlbG9hZChnLGQpO30pO2JyZWFrO2Nhc2Ug J3RvZ2dsZSc6Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnVG9nZ2xlcicpO2Jy ZWFrO31yZXR1cm47fTt9Cl9fZCgibGVnYWN5OmFuaW1hdGlvbiIsWyJBbmltYXRp b24iXSxmdW5jdGlvbihhLGIsYyxkKXthLmFuaW1hdGlvbj1iKCdBbmltYXRpb24n KTt9LDMpOwpfX2QoIkxpdmVUaW1lciIsWyJDU1MiLCJET00iLCJVc2VyQWdlbnQi LCJ0eCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDU1MnKSxoPWIo J0RPTScpLGk9YignVXNlckFnZW50Jyksaj1iKCd0eCcpLGs9e3Jlc3RhcnQ6ZnVu Y3Rpb24obCl7dGhpcy5zZXJ2ZXJUaW1lPWw7dGhpcy5sb2NhbFN0YXJ0VGltZT1E YXRlLm5vdygpLzEwMDA7dGhpcy51cGRhdGVUaW1lU3RhbXBzKCk7fSxnZXRBcHBy b3hpbWF0ZVNlcnZlclRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gKHRoaXMuc2VydmVy VGltZS10aGlzLmxvY2FsU3RhcnRUaW1lKSoxMDAwK0RhdGUubm93KCk7fSx1cGRh dGVUaW1lU3RhbXBzOmZ1bmN0aW9uKCl7ay50aW1lc3RhbXBzPWguc2NyeShkb2N1 bWVudC5ib2R5LCdhYmJyLmxpdmV0aW1lc3RhbXAnKTtrLnN0YXJ0TG9vcCgyMDAw MCk7fSxhZGRUaW1lU3RhbXBzOmZ1bmN0aW9uKGwpe2lmKCFsKXJldHVybjtrLnRp bWVzdGFtcHM9ay50aW1lc3RhbXBzfHxbXTtpZihoLmlzTm9kZU9mVHlwZShsLCdh YmJyJykmJmcuaGFzQ2xhc3MobCwnbGl2ZXRpbWVzdGFtcCcpKXtrLnRpbWVzdGFt cHMucHVzaChsKTt9ZWxzZXt2YXIgbT1oLnNjcnkobCwnYWJici5saXZldGltZXN0 YW1wJyk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDsrK24pay50aW1lc3RhbXBzLnB1 c2gobVtuXSk7fWsuc3RhcnRMb29wKDApO30sc3RhcnRMb29wOmZ1bmN0aW9uKGwp e3RoaXMuc3RvcCgpO3RoaXMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7 ay5sb29wKCk7fSxsKTt9LHN0b3A6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhp cy50aW1lb3V0KTt9LHVwZGF0ZU5vZGU6ZnVuY3Rpb24obCxtKXtrLnVwZGF0ZU5v ZGU9KGkuaWUoKTw3KT9iYWdvZmhvbGRpbmc6aC5zZXRDb250ZW50O2sudXBkYXRl Tm9kZShsLG0pO30sbG9vcDpmdW5jdGlvbihsKXtpZihsKWsudXBkYXRlVGltZVN0 YW1wcygpO3ZhciBtPU1hdGguZmxvb3Ioay5nZXRBcHByb3hpbWF0ZVNlcnZlclRp bWUoKS8xMDAwKSxuPS0xO2sudGltZXN0YW1wcyYmay50aW1lc3RhbXBzLmZvckVh Y2goZnVuY3Rpb24ocCl7dmFyIHE9cC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdXRpbWUn KSxyPWsucmVuZGVyUmVsYXRpdmVUaW1lKG0scSk7aWYoci50ZXh0KWsudXBkYXRl Tm9kZShwLHIudGV4dCk7aWYoci5uZXh0IT0tMSYmKHIubmV4dDxufHxuPT0tMSkp bj1yLm5leHQ7fSk7aWYobiE9LTEpe3ZhciBvPU1hdGgubWF4KDIwMDAwLG4qMTAw MCk7ay50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtrLmxvb3AoKTt9LG8p O319LHJlbmRlclJlbGF0aXZlVGltZTpmdW5jdGlvbihsLG0pe3ZhciBuPXt0ZXh0 OiIiLG5leHQ6LTF9O2lmKGwtbT4oMTIqMzYwMCl8fChuZXcgRGF0ZShsKjEwMDAp LmdldERheSgpIT1uZXcgRGF0ZShtKjEwMDApLmdldERheSgpKSlyZXR1cm4gbjt2 YXIgbz1sLW0scD1NYXRoLmZsb29yKG8vNjApLHE9TWF0aC5mbG9vcihwLzYwKTtp ZihwPDEpe24udGV4dD0iYmViZXJhcGEgZGV0aWsgeWFuZyBsYWx1IjtuLm5leHQ9 NjAtbyU2MDtyZXR1cm4gbjt9aWYocTwxKXtpZihwPT0xKXtuLnRleHQ9InNla2l0 YXIgc2F0dSBtZW5pdCB5YW5nIGxhbHUiO31lbHNlIG4udGV4dD1qLl8oIntudW1i ZXJ9IG1lbml0IHlhbmcgbGFsdSIse251bWJlcjpwfSk7bi5uZXh0PTYwLW8lNjA7 cmV0dXJuIG47fWlmKHEhPTExKW4ubmV4dD0zNjAwLW8lMzYwMDtpZihxPT0xKXtu LnRleHQ9InNla2l0YXIgc2VqYW0geWFuZyBsYWx1IjtyZXR1cm4gbjt9bi50ZXh0 PWouXygie251bWJlcn0gamFtIHlhbmcgbGFsdSIse251bWJlcjpxfSk7cmV0dXJu IG47fSxyZW5kZXJSZWxhdGl2ZVRpbWVUb1NlcnZlcjpmdW5jdGlvbihsKXtyZXR1 cm4gay5yZW5kZXJSZWxhdGl2ZVRpbWUoTWF0aC5mbG9vcihrLmdldEFwcHJveGlt YXRlU2VydmVyVGltZSgpLzEwMDApLGwpO319O2UuZXhwb3J0cz1rO30pOwpfX2Qo ImxlZ2FjeTpsaXZlLXRpbWVyIixbIkxpdmVUaW1lciJdLGZ1bmN0aW9uKGEsYixj LGQpe2EuTGl2ZVRpbWVyPWIoJ0xpdmVUaW1lcicpO30sMyk7Cl9fZCgiQXN5bmNE T00iLFsiQ1NTIiwiRE9NIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J0NTUycpLGg9YignRE9NJyksaT17aW52b2tlOmZ1bmN0aW9uKGosayl7Zm9yKHZh ciBsPTA7bDxqLmxlbmd0aDsrK2wpe3ZhciBtPWpbbF0sbj1tWzBdLG89bVsxXSxw PW1bMl0scT1tWzNdLHI9KHAmJmspfHxudWxsO2lmKG8pcj1oLnNjcnkocnx8ZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LG8pWzBdO3N3aXRjaChuKXtjYXNlICdldmFs JzoobmV3IEZ1bmN0aW9uKHEpKS5hcHBseShyKTticmVhaztjYXNlICdoaWRlJzpn LmhpZGUocik7YnJlYWs7Y2FzZSAnc2hvdyc6Zy5zaG93KHIpO2JyZWFrO2Nhc2Ug

J3NldENvbnRlbnQnOmguc2V0Q29udGVudChyLHEpO2JyZWFrO2Nhc2UgJ2FwcGVu ZENvbnRlbnQnOmguYXBwZW5kQ29udGVudChyLHEpO2JyZWFrO2Nhc2UgJ3ByZXBl bmRDb250ZW50JzpoLnByZXBlbmRDb250ZW50KHIscSk7YnJlYWs7Y2FzZSAnaW5z ZXJ0QWZ0ZXInOmguaW5zZXJ0QWZ0ZXIocixxKTticmVhaztjYXNlICdpbnNlcnRC ZWZvcmUnOmguaW5zZXJ0QmVmb3JlKHIscSk7YnJlYWs7Y2FzZSAncmVtb3ZlJzpo LnJlbW92ZShyKTticmVhaztjYXNlICdyZXBsYWNlJzpoLnJlcGxhY2UocixxKTti cmVhaztkZWZhdWx0On19fX07ZS5leHBvcnRzPWk7fSk7Cl9fZCgiQmVoYXZpb3Jz TWl4aW4iLFsiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBoKGwpe3RoaXMuX2Jl aGF2aW9yPWw7dGhpcy5fZW5hYmxlZD1mYWxzZTt9ZyhoLnByb3RvdHlwZSx7ZW5h YmxlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2VuYWJsZWQpe3RoaXMuX2VuYWJsZWQ9 dHJ1ZTt0aGlzLl9iZWhhdmlvci5lbmFibGUoKTt9fSxkaXNhYmxlOmZ1bmN0aW9u KCl7aWYodGhpcy5fZW5hYmxlZCl7dGhpcy5fZW5hYmxlZD1mYWxzZTt0aGlzLl9i ZWhhdmlvci5kaXNhYmxlKCk7fX19KTt2YXIgaT0xO2Z1bmN0aW9uIGoobCl7aWYo IWwuX19CRUhBVklPUl9JRClsLl9fQkVIQVZJT1JfSUQ9aSsrO3JldHVybiBsLl9f QkVIQVZJT1JfSUQ7fXZhciBrPXtlbmFibGVCZWhhdmlvcjpmdW5jdGlvbihsKXtp ZighdGhpcy5fYmVoYXZpb3JzKXRoaXMuX2JlaGF2aW9ycz17fTt2YXIgbT1qKGwp O2lmKCF0aGlzLl9iZWhhdmlvcnNbbV0pdGhpcy5fYmVoYXZpb3JzW21dPW5ldyBo KG5ldyBsKHRoaXMpKTt0aGlzLl9iZWhhdmlvcnNbbV0uZW5hYmxlKCk7cmV0dXJu IHRoaXM7fSxkaXNhYmxlQmVoYXZpb3I6ZnVuY3Rpb24obCl7aWYodGhpcy5fYmVo YXZpb3JzKXt2YXIgbT1qKGwpO2lmKHRoaXMuX2JlaGF2aW9yc1ttXSl0aGlzLl9i ZWhhdmlvcnNbbV0uZGlzYWJsZSgpO31yZXR1cm4gdGhpczt9LGVuYWJsZUJlaGF2 aW9yczpmdW5jdGlvbihsKXtsLmZvckVhY2godGhpcy5lbmFibGVCZWhhdmlvci5i aW5kKHRoaXMpKTtyZXR1cm4gdGhpczt9LGRlc3Ryb3lCZWhhdmlvcnM6ZnVuY3Rp b24oKXtpZih0aGlzLl9iZWhhdmlvcnMpe2Zvcih2YXIgbCBpbiB0aGlzLl9iZWhh dmlvcnMpdGhpcy5fYmVoYXZpb3JzW2xdLmRpc2FibGUoKTt0aGlzLl9iZWhhdmlv cnM9e307fX19O2UuZXhwb3J0cz1rO30pOwpfX2QoIkRpbWVuc2lvblRyYWNraW5n IixbImV2ZW50LWV4dGVuc2lvbnMiLCJBc3luY1NpZ25hbCIsIkNvb2tpZSIsIkRP TURpbWVuc2lvbnMiLCJpc0luSWZyYW1lIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBc3luY1NpZ25hbCcpLGg9 YignQ29va2llJyksaT1iKCdET01EaW1lbnNpb25zJyksaj1iKCdpc0luSWZyYW1l Jyk7ZnVuY3Rpb24gaygpe3ZhciBsPWkuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7 aC5zZXQoJ3dkJyxsLndpZHRoKyd4JytsLmhlaWdodCk7aWYoTWF0aC5yYW5kb20o KTwuMDEpbmV3IGcoJy9hamF4L2RpbWVuc2lvbl9jb250ZXh0LnBocCcse3g6bC53 aWR0aCx5OmwuaGVpZ2h0fSkuc2VuZCgpO31pZighaigpKXtzZXRUaW1lb3V0KGss MTAwKTtFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLGspO0V2ZW50Lmxpc3Rl bih3aW5kb3csJ2ZvY3VzJyxrKTt9fSk7Cl9fZCgiSFRUUEVycm9ycyIsW10sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXtnZXQ6YmFnb2Zob2xkaW5nLGdldEFs bDpiYWdvZmhvbGRpbmd9O2UuZXhwb3J0cz1nO30pOwpfX2QoImJpbmQiLFtdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgsaSl7dmFyIGo9QXJyYXku cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO2lmKHR5cGVvZiBpIT0n c3RyaW5nJylyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoaSxb aF0uY29uY2F0KGopKTtmdW5jdGlvbiBrKCl7dmFyIGw9ai5jb25jYXQoQXJyYXku cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7aWYoaFtpXSlyZXR1cm4g aFtpXS5hcHBseShoLGwpO31rLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuICdi b3VuZCBsYXppbHk6ICcraFtpXTt9O3JldHVybiBrO31lLmV4cG9ydHM9Zzt9KTsK X19kKCJTY3JpcHRQYXRoU3RhdGUiLFsiQXJiaXRlciJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaCxpLGosayxsPTEwMCxtPXtzZXRJ c1VJUGFnZWxldFJlcXVlc3Q6ZnVuY3Rpb24obil7aj1uO30sc2V0VXNlclVSSVNh bXBsZVJhdGU6ZnVuY3Rpb24obil7az1uO30scmVzZXQ6ZnVuY3Rpb24oKXtoPW51 bGw7aT1mYWxzZTtqPWZhbHNlO30sX3Nob3VsZFVwZGF0ZVNjcmlwdFBhdGg6ZnVu Y3Rpb24oKXtyZXR1cm4gKGkmJiFqKTt9LF9zaG91bGRTZW5kVVJJOmZ1bmN0aW9u KCl7cmV0dXJuIChNYXRoLnJhbmRvbSgpPGspO30sZ2V0UGFyYW1zOmZ1bmN0aW9u KCl7dmFyIG49e307aWYobS5fc2hvdWxkVXBkYXRlU2NyaXB0UGF0aCgpKXtpZiht Ll9zaG91bGRTZW5kVVJJKCkmJmghPT1udWxsKW4udXNlcl91cmk9aC5zdWJzdHJp bmcoMCxsKTt9ZWxzZSBuLm5vX3NjcmlwdF9wYXRoPTE7cmV0dXJuIG47fX07Zy5z dWJzY3JpYmUoInByZV9wYWdlX3RyYW5zaXRpb24iLGZ1bmN0aW9uKG4sbyl7aT10 cnVlO2g9by50by5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCk7fSk7ZS5l eHBvcnRzPWEuU2NyaXB0UGF0aFN0YXRlPW07fSk7Cl9fZCgiRHluYW1pY0ljb25T ZWxlY3RvciIsWyJCdXR0b24iLCJDU1MiLCJET00iLCJTZWxlY3RvciJdLGZ1bmN0

aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdCdXR0b24nKSxoPWIoJ0NTUycpLGk9 YignRE9NJyksaj1iKCdTZWxlY3RvcicpLGs9e3N3YXBJY29uOmZ1bmN0aW9uKGwp e3ZhciBtPWouZ2V0U2VsZWN0ZWRPcHRpb25zKGwpWzBdLG49bSYmaS5zY3J5KG0s Jy5pdGVtSWNvbicpWzBdLG89ai5nZXRTZWxlY3RvckJ1dHRvbihsKTtpZihuKXtn LnNldEljb24obyxuLmNsb25lTm9kZSh0cnVlKSk7fWVsc2V7dmFyIHA9aS5zY3J5 KG8sJy5pbWcnKVswXTtwJiZpLnJlbW92ZShwKTt9aC5jb25kaXRpb25DbGFzcyhv LCd1aVNlbGVjdG9yQ2hldnJvbk9ubHknLCFuKTt9fTtqLnN1YnNjcmliZSgnY2hh bmdlJyxmdW5jdGlvbihsLG0pe3ZhciBuPW0uc2VsZWN0b3I7aWYoaC5oYXNDbGFz cyhuLCdkeW5hbWljSWNvblNlbGVjdG9yJykpay5zd2FwSWNvbihuKTt9KTtlLmV4 cG9ydHM9azt9KTsKX19kKCJQaXhlbFJhdGlvIixbIkFyYml0ZXIiLCJDb29raWUi LCJSdW4iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicp LGg9YignQ29va2llJyksaT1iKCdSdW4nKSxqPSdkcHInLGssbDtmdW5jdGlvbiBt KCl7cmV0dXJuIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxO31mdW5jdGlvbiBu KCl7aC5zZXQoaixtKCkpO31mdW5jdGlvbiBvKCl7aC5jbGVhcihqKTt9ZnVuY3Rp b24gcCgpe3ZhciByPW0oKTtpZihyIT09ayl7bigpO31lbHNlIG8oKTt9dmFyIHE9 e3N0YXJ0RGV0ZWN0aW5nOmZ1bmN0aW9uKHIpe2s9cnx8MTtvKCk7aWYobClyZXR1 cm47bD1bZy5zdWJzY3JpYmUoJ3ByZV9wYWdlX3RyYW5zaXRpb24nLHApXTtpLm9u QmVmb3JlVW5sb2FkKHApO319O2UuZXhwb3J0cz1xO30pOwpfX2QoImRlYm91bmNl IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoLGksaixrLGwp e2k9KGkhPW51bGwpP2k6MTAwO3ZhciBtLG47ZnVuY3Rpb24gbygpe3ZhciBwPWFy Z3VtZW50czshbCYmby5yZXNldCgpO2lmKCFsfHwhbXx8KG4raTxEYXRlLm5vdygp KSl7bT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bT1udWxsO2guYXBwbHkodGhpcyxw KTt9LmJpbmQoanx8dGhpcyksaSwhayk7bj1EYXRlLm5vdygpO319by5yZXNldD1m dW5jdGlvbigpe20mJmNsZWFyVGltZW91dChtKTttPW51bGw7fTtyZXR1cm4gbzt9 ZS5leHBvcnRzPWc7fSk7Cl9fZCgidGhyb3R0bGVBY3Jvc3NUcmFuc2l0aW9ucyIs WyJkZWJvdW5jZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdkZWJv dW5jZScpO2Z1bmN0aW9uIGgoaSxqLGspe3JldHVybiBnKGksaixrLHRydWUsdHJ1 ZSk7fWUuZXhwb3J0cz1oO30pOwpfX2QoIlVzZXJBY3Rpb25IaXN0b3J5IixbIkFy Yml0ZXIiLCJDbGlja1JlZlV0aWxzIiwidGhyb3R0bGVBY3Jvc3NUcmFuc2l0aW9u cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1i KCdDbGlja1JlZlV0aWxzJyksaT1iKCd0aHJvdHRsZUFjcm9zc1RyYW5zaXRpb25z Jyksaj17Y2xpY2s6MSxzdWJtaXQ6MX0saz1mYWxzZSxsPXtsb2c6W10sbGVuOjB9 LG09aShmdW5jdGlvbigpe3RyeXtrLl91YV9sb2c9SlNPTi5zdHJpbmdpZnkobCk7 fWNhdGNoKHApe2s9ZmFsc2U7fX0sMTAwMCk7ZnVuY3Rpb24gbigpe3RyeXtpZihh LnNlc3Npb25TdG9yYWdlKXtrPWEuc2Vzc2lvblN0b3JhZ2U7ay5fdWFfbG9nJiYo bD1KU09OLnBhcnNlKGsuX3VhX2xvZykpO319Y2F0Y2gocCl7az1mYWxzZTt9bC5s b2dbbC5sZW4lMTBdPXt0czpEYXRlLm5vdygpLHBhdGg6Jy0nLGluZGV4OmwubGVu LHR5cGU6J2luaXQnLGlyZWY6Jy0nfTtsLmxlbisrO2cuc3Vic2NyaWJlKCJVc2Vy QWN0aW9uL25ldyIsZnVuY3Rpb24ocSxyKXt2YXIgcz1yLnVhLHQ9ci5ub2RlLGV2 ZW50PXIuZXZlbnQ7aWYoIWV2ZW50fHwhKGV2ZW50LnR5cGUgaW4gaikpcmV0dXJu O3ZhciB1PXtwYXRoOndpbmRvdy5fc2NyaXB0X3BhdGgsdHlwZTpldmVudC50eXBl LHRzOnMuX3VlX3RzLGlyZWY6aC5nZXRfaW50ZXJuX3JlZih0KXx8Jy0nLGluZGV4 OmwubGVufTtsLmxvZ1tsLmxlbisrJTEwXT11O2smJm0oKTt9KTt9ZnVuY3Rpb24g bygpe3JldHVybiBsLmxvZy5zb3J0KGZ1bmN0aW9uKHAscSl7cmV0dXJuIChxLnRz IT1wLnRzKT8ocS50cy1wLnRzKToocS5pbmRleC1wLmluZGV4KTt9KTt9bigpO2Uu ZXhwb3J0cz17Z2V0SGlzdG9yeTpvfTt9KTsKX19kKCJjb2FsZXNjZSIsW10sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGcoKXtmb3IodmFyIGg9MDtoPGFy Z3VtZW50cy5sZW5ndGg7KytoKWlmKGFyZ3VtZW50c1toXSE9bnVsbClyZXR1cm4g YXJndW1lbnRzW2hdO3JldHVybiBudWxsO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJj dXJyeSIsWyJiaW5kIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2Jp bmQnKSxoPWcobnVsbCxnLG51bGwpO2UuZXhwb3J0cz1oO30pOwpfX2QoImxlZ2Fj eTpUb29sdGlwIixbIlRvb2x0aXAiXSxmdW5jdGlvbihhLGIsYyxkKXthLlRvb2x0 aXA9YignVG9vbHRpcCcpO30sMyk7Cl9fZCgiQ2xlYXJhYmxlVHlwZWFoZWFkIixb ImV2ZW50LWV4dGVuc2lvbnMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZl bnQtZXh0ZW5zaW9ucycpO3ZhciBnPXtyZXNldE9uQ2xvc2VCdXR0b25DbGljazpm dW5jdGlvbihoLGkpe0V2ZW50Lmxpc3RlbihpLCdjbGljaycsZnVuY3Rpb24oKXt2 YXIgaj1oLmdldENvcmUoKTtqLnJlc2V0KCk7ai5nZXRFbGVtZW50KCkuZm9jdXMo KTt9KTt9fTtlLmV4cG9ydHM9Zzt9KTs= ------------QfbhZNivKLE4FzH5QJnERC

Content-Disposition: inline; filename=Oz4q5PV8lAW.js Content-Type: application/x-javascript; charset=utf-8; name=Oz4q5PV8lAW.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/Oz4q5PV8lAW.js Content-Transfer-Encoding: Base64 LyoxMzQ1NTYyMDI1LDE3ODE0MjUxNSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjhJMGRuIl0pOyB9CgpfX2Qo IkFzeW5jUmVzcG9uc2UiLFsiQm9vdGxvYWRlciIsIkVudiIsImNvcHlQcm9wZXJ0 aWVzIiwidHgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQm9vdGxv YWRlcicpLGg9YignRW52JyksaT1iKCdjb3B5UHJvcGVydGllcycpLGo9YigndHgn KTtmdW5jdGlvbiBrKGwsbSl7aSh0aGlzLHtlcnJvcjowLGVycm9yU3VtbWFyeTpu dWxsLGVycm9yRGVzY3JpcHRpb246bnVsbCxvbmxvYWQ6bnVsbCxyZXBsYXk6ZmFs c2UscGF5bG9hZDptfHxudWxsLHJlcXVlc3Q6bHx8bnVsbCxzaWxlbnRFcnJvcjpm YWxzZSxpc19sYXN0OnRydWV9KTtyZXR1cm4gdGhpczt9aShrLHtkZWZhdWx0RXJy b3JIYW5kbGVyOmZ1bmN0aW9uKGwpe3RyeXtpZighbC5zaWxlbnRFcnJvcil7ay52 ZXJib3NlRXJyb3JIYW5kbGVyKGwpO31lbHNlIGwubG9nRXJyb3JCeUdyb3VwKCdz aWxlbnQnLDEwKTt9Y2F0Y2gobSl7YWxlcnQobCk7fX0sdmVyYm9zZUVycm9ySGFu ZGxlcjpmdW5jdGlvbihsKXt0cnl7dmFyIG49bC5nZXRFcnJvclN1bW1hcnkoKSxv PWwuZ2V0RXJyb3JEZXNjcmlwdGlvbigpO2wubG9nRXJyb3JCeUdyb3VwKCdwb3B1 cCcsMTApO2lmKGwuc2lsZW50RXJyb3ImJm89PScnKW89IlRlcmphZGkga2VzYWxh aGFuLiBLYW1pIGFrYW4gc2VnZXJhIG1lbXBlcmJhaWtpbnlhLiBTaWxhaGthbiBt ZW5jb2JhIGtlbWJhbGkuIjtnLmxvYWRNb2R1bGVzKFsnRGlhbG9nJ10sZnVuY3Rp b24ocCl7bmV3IHAoKS5zZXRUaXRsZShuKS5zZXRCb2R5KG8pLnNldEJ1dHRvbnMo W3AuT0tdKS5zZXRNb2RhbCh0cnVlKS5zZXRDYXVzYWxFbGVtZW50KHRoaXMucmVs YXRpdmVUbykuc2hvdygpO30pO31jYXRjaChtKXthbGVydChsKTt9fX0pO2koay5w cm90b3R5cGUse2dldFJlcXVlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXF1 ZXN0O30sZ2V0UGF5bG9hZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBheWxvYWQ7 fSxnZXRFcnJvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yO30sZ2V0RXJy b3JTdW1tYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3JTdW1tYXJ5O30s c2V0RXJyb3JTdW1tYXJ5OmZ1bmN0aW9uKGwpe2w9KGw9PT11bmRlZmluZWQ/bnVs bDpsKTt0aGlzLmVycm9yU3VtbWFyeT1sO3JldHVybiB0aGlzO30sZ2V0RXJyb3JE ZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yRGVzY3JpcHRp b247fSxnZXRFcnJvcklzV2FybmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVy cm9ySXNXYXJuaW5nO30sbG9nRXJyb3I6ZnVuY3Rpb24obCxtKXtpZih3aW5kb3cu c2VuZF9lcnJvcl9zaWduYWwpe3ZhciBuPXtlcnJfY29kZTp0aGlzLmVycm9yLHZp cDooaC52aXB8fCctJyl9O2lmKG0pe24uZHVyYXRpb249bS5kdXJhdGlvbjtuLnhm Yl9pcD1tLnhmYl9pcDt9dmFyIG89dGhpcy5yZXF1ZXN0LmdldFVSSSgpO24ucGF0 aD1vfHwnLSc7bi5haWQ9dGhpcy5yZXF1ZXN0LnVzZXJBY3Rpb25JRDtpZihvJiZv LmluZGV4T2YoJ3NjcmliZV9lbmRwb2ludC5waHAnKSE9LTEpbD0nYXN5bmNfZXJy b3JfZG91YmxlJztzZW5kX2Vycm9yX3NpZ25hbChsLEpTT04uc3RyaW5naWZ5KG4p KTt9fSxsb2dFcnJvckJ5R3JvdXA6ZnVuY3Rpb24obCxtKXtpZihNYXRoLmZsb29y KE1hdGgucmFuZG9tKCkqbSk9PTApaWYodGhpcy5lcnJvcj09MTM1NzAxMHx8dGhp cy5lcnJvcjwxNTAwMCl7dGhpcy5sb2dFcnJvcignYXN5bmNfZXJyb3Jfb29wc18n K2wpO31lbHNlIHRoaXMubG9nRXJyb3IoJ2FzeW5jX2Vycm9yX2xvZ2ljXycrbCk7 fX0pO2UuZXhwb3J0cz1rO30pOwpfX2QoIkFzeW5jUmVxdWVzdCIsWyJldmVudC1l eHRlbnNpb25zIiwiQXJiaXRlciIsIkFzeW5jRE9NIiwiQXN5bmNSZXNwb25zZSIs IkJvb3Rsb2FkZXIiLCJDU1MiLCJFbnYiLCJIVFRQRXJyb3JzIiwiSlNDQyIsIlBh cmVudCIsIlJ1biIsIlNlcnZlckpTIiwiVVJJIiwiVXNlckFnZW50IiwiWEhSIiwi YmluZCIsImNvcHlQcm9wZXJ0aWVzIiwiZXZhbEdsb2JhbCIsImdlIiwiZ29VUkki LCJpc0VtcHR5IiwidHgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQt ZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0FzeW5jRE9NJyks aT1iKCdBc3luY1Jlc3BvbnNlJyksaj1iKCdCb290bG9hZGVyJyksaz1iKCdDU1Mn KSxsPWIoJ0VudicpLG09YignSFRUUEVycm9ycycpLG49YignSlNDQycpLG89Yign UGFyZW50JykscD1iKCdSdW4nKSxxPWIoJ1NlcnZlckpTJykscj1iKCdVUkknKSxz PWIoJ1VzZXJBZ2VudCcpLHQ9YignWEhSJyksdT1iKCdiaW5kJyksdj1iKCdjb3B5 UHJvcGVydGllcycpLHc9YignZXZhbEdsb2JhbCcpLHg9YignZ2UnKSx5PWIoJ2dv VVJJJyksej1iKCdpc0VtcHR5JyksYWE9YigndHgnKTtmdW5jdGlvbiBiYSgpe3Ry eXtyZXR1cm4gIXdpbmRvdy5sb2FkZWQ7fWNhdGNoKGthKXtyZXR1cm4gdHJ1ZTt9 fWZ1bmN0aW9uIGNhKGthKXtyZXR1cm4gKCd1cGxvYWQnIGluIGthKSYmKCdvbnBy b2dyZXNzJyBpbiBrYS51cGxvYWQpO31mdW5jdGlvbiBkYShrYSl7cmV0dXJuICd3

aXRoQ3JlZGVudGlhbHMnIGluIGthO31mdW5jdGlvbiBlYShrYSl7cmV0dXJuIGth LnN0YXR1cyBpbiB7MDoxLDEyMDI5OjEsMTIwMzA6MSwxMjAzMToxLDEyMTUyOjF9 O31mdW5jdGlvbiBmYShrYSl7dmFyIGxhPSFrYXx8dHlwZW9mKGthKT09PSdmdW5j dGlvbic7cmV0dXJuIGxhO312YXIgZ2E9MixoYT1nYTtnLnN1YnNjcmliZSgncGFn ZV90cmFuc2l0aW9uJyxmdW5jdGlvbihrYSxsYSl7aGE9bGEuaWQ7fSk7ZnVuY3Rp b24gaWEoa2Epe3YodGhpcyx7dHJhbnNwb3J0Om51bGwsbWV0aG9kOidQT1NUJyx1 cmk6JycsdGltZW91dDpudWxsLHRpbWVyOm51bGwsaW5pdGlhbEhhbmRsZXI6YmFn b2Zob2xkaW5nLGhhbmRsZXI6bnVsbCx1cGxvYWRQcm9ncmVzc0hhbmRsZXI6bnVs bCxlcnJvckhhbmRsZXI6bnVsbCx0cmFuc3BvcnRFcnJvckhhbmRsZXI6bnVsbCx0 aW1lb3V0SGFuZGxlcjpudWxsLGludGVyY2VwdEhhbmRsZXI6YmFnb2Zob2xkaW5n LGZpbmFsbHlIYW5kbGVyOmJhZ29maG9sZGluZyxhYm9ydEhhbmRsZXI6YmFnb2Zo b2xkaW5nLHNlcnZlckRpYWxvZ0NhbmNlbEhhbmRsZXI6bnVsbCxyZWxhdGl2ZVRv Om51bGwsc3RhdHVzRWxlbWVudDpudWxsLHN0YXR1c0NsYXNzOicnLGRhdGE6e30s ZmlsZTpudWxsLGNvbnRleHQ6e30scmVhZE9ubHk6ZmFsc2Usd3JpdGVSZXF1aXJl ZFBhcmFtczpbXSxyZW1haW5pbmdSZXRyaWVzOjAsdXNlckFjdGlvbklEOictJ30p O3RoaXMub3B0aW9uPXthc3luY2hyb25vdXM6dHJ1ZSxzdXBwcmVzc0Vycm9ySGFu ZGxlcldhcm5pbmc6ZmFsc2Usc3VwcHJlc3NFdmFsdWF0aW9uOmZhbHNlLHN1cHBy ZXNzRXJyb3JBbGVydHM6ZmFsc2UscmV0cmllczowLGpzb25wOmZhbHNlLGJ1bmRs ZTpmYWxzZSx1c2VJZnJhbWVUcmFuc3BvcnQ6ZmFsc2UsaGFuZGxlRXJyb3JBZnRl clVubG9hZDpmYWxzZX07dGhpcy5lcnJvckhhbmRsZXI9aS5kZWZhdWx0RXJyb3JI YW5kbGVyO3RoaXMudHJhbnNwb3J0RXJyb3JIYW5kbGVyPXUodGhpcywnZXJyb3JI YW5kbGVyJyk7aWYoa2EhPT11bmRlZmluZWQpdGhpcy5zZXRVUkkoa2EpO312KGlh LHtib290c3RyYXA6ZnVuY3Rpb24oa2EsbGEsbWEpe3ZhciBuYT0nR0VUJyxvYT10 cnVlLHBhPXt9O2lmKG1hfHxsYSYmKGxhLnJlbD09J2FzeW5jLXBvc3QnfHxsYS5n ZXRBdHRyaWJ1dGUmJmxhLmdldEF0dHJpYnV0ZSgnZm9yY2VtZXRob2QnKT09J3Bv c3QnKSl7bmE9J1BPU1QnO29hPWZhbHNlO2lmKGthKXtrYT1yKGthKTtwYT1rYS5n ZXRRdWVyeURhdGEoKTtrYS5zZXRRdWVyeURhdGEoe30pO319dmFyIHFhPW8uYnlD bGFzcyhsYSwnc3RhdF9lbGVtJyl8fGxhO2lmKHFhJiZrLmhhc0NsYXNzKHFhLCdh c3luY19zYXZpbmcnKSlyZXR1cm4gZmFsc2U7dmFyIHJhPW5ldyBpYShrYSkuc2V0 UmVhZE9ubHkob2EpLnNldE1ldGhvZChuYSkuc2V0RGF0YShwYSkuc2V0TmVjdGFy TW9kdWxlRGF0YVNhZmUobGEpLnNldFJlbGF0aXZlVG8obGEpO2lmKGxhKXtyYS5z ZXRIYW5kbGVyKGZ1bmN0aW9uKHRhKXtFdmVudC5maXJlKGxhLCdzdWNjZXNzJyx7 cmVzcG9uc2U6dGF9KTt9KTtyYS5zZXRFcnJvckhhbmRsZXIoZnVuY3Rpb24odGEp e2lmKEV2ZW50LmZpcmUobGEsJ2Vycm9yJyx7cmVzcG9uc2U6dGF9KSE9PWZhbHNl KWkuZGVmYXVsdEVycm9ySGFuZGxlcih0YSk7fSk7fWlmKHFhKXtyYS5zZXRTdGF0 dXNFbGVtZW50KHFhKTt2YXIgc2E9cWEuZ2V0QXR0cmlidXRlKCdkYXRhLXN0YXR1 cy1jbGFzcycpO3NhJiZyYS5zZXRTdGF0dXNDbGFzcyhzYSk7fWlmKGxhKUV2ZW50 LmZpcmUobGEsJ0FzeW5jUmVxdWVzdC9zZW5kJyx7cmVxdWVzdDpyYX0pO3JhLnNl bmQoKTtyZXR1cm4gZmFsc2U7fSxwb3N0OmZ1bmN0aW9uKGthLGxhKXtuZXcgaWEo a2EpLnNldFJlYWRPbmx5KGZhbHNlKS5zZXRNZXRob2QoJ1BPU1QnKS5zZXREYXRh KGxhKS5zZW5kKCk7cmV0dXJuIGZhbHNlO30sZ2V0TGFzdElEOmZ1bmN0aW9uKCl7 cmV0dXJuIGdhO30sc3VwcHJlc3NPbmxvYWRUb2tlbjp7fSxfaW5mbGlnaHQ6W10s X2luZmxpZ2h0Q291bnQ6MCxfaW5mbGlnaHRBZGQ6YmFnb2Zob2xkaW5nLF9pbmZs aWdodFB1cmdlOmJhZ29maG9sZGluZyxnZXRJbmZsaWdodENvdW50OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX2luZmxpZ2h0Q291bnQ7fSxfaW5mbGlnaHRFbmFibGU6 ZnVuY3Rpb24oKXtpZihzLmllKCkpe3YoaWEse19pbmZsaWdodEFkZDpmdW5jdGlv bihrYSl7dGhpcy5faW5mbGlnaHQucHVzaChrYSk7fSxfaW5mbGlnaHRQdXJnZTpm dW5jdGlvbigpe2lhLl9pbmZsaWdodD1pYS5faW5mbGlnaHQuZmlsdGVyKGZ1bmN0 aW9uKGthKXtyZXR1cm4ga2EudHJhbnNwb3J0JiZrYS50cmFuc3BvcnQucmVhZHlT dGF0ZTw0O30pO319KTtwLm9uVW5sb2FkKGZ1bmN0aW9uKCl7aWEuX2luZmxpZ2h0 LmZvckVhY2goZnVuY3Rpb24oa2Epe2lmKGthLnRyYW5zcG9ydCYma2EudHJhbnNw b3J0LnJlYWR5U3RhdGU8NCl7a2EudHJhbnNwb3J0LmFib3J0KCk7ZGVsZXRlIGth LnRyYW5zcG9ydDt9fSk7fSk7fX19KTt2KGlhLnByb3RvdHlwZSx7X2Rpc3BhdGNo UmVzcG9uc2U6ZnVuY3Rpb24oa2Epe3RyeXt0aGlzLmNsZWFyU3RhdHVzSW5kaWNh dG9yKCk7aWYoIXRoaXMuX2lzUmVsZXZhbnQoKSl7dGhpcy5faW52b2tlRXJyb3JI YW5kbGVyKDEwMTApO3JldHVybjt9aWYodGhpcy5pbml0aWFsSGFuZGxlcihrYSk9 PT1mYWxzZSlyZXR1cm47Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO2lmKGthLmpz Y2NfbWFwKXt2YXIgbWE9KGV2YWwpKGthLmpzY2NfbWFwKTtuLmluaXQobWEpO312 YXIgbmE7aWYodGhpcy5oYW5kbGVyKXRyeXtuYT10aGlzLl9zaG91bGRTdXBwcmVz c0pTKHRoaXMuaGFuZGxlcihrYSkpO31jYXRjaChvYSl7a2EuaXNfbGFzdCYmdGhp

cy5maW5hbGx5SGFuZGxlcihrYSk7dGhyb3cgb2E7fWlmKCFuYSl0aGlzLl9oYW5k bGVKU1Jlc3BvbnNlKGthKTtrYS5pc19sYXN0JiZ0aGlzLmZpbmFsbHlIYW5kbGVy KGthKTt9Y2F0Y2gobGEpe319LF9zaG91bGRTdXBwcmVzc0pTOmZ1bmN0aW9uKGth KXtyZXR1cm4ga2E9PT1pYS5zdXBwcmVzc09ubG9hZFRva2VuO30sX2hhbmRsZUpT UmVzcG9uc2U6ZnVuY3Rpb24oa2Epe3ZhciBsYT10aGlzLmdldFJlbGF0aXZlVG8o KSxtYT1rYS5kb21vcHMsbmE9a2EuanNtb2RzLG9hPW5ldyBxKCkuc2V0UmVsYXRp dmVUbyhsYSk7aWYobmEmJihuYS5kZWZpbmV8fG5hLmluc3RhbmNlc3x8bmEubWFy a3VwKSl7b2EuaGFuZGxlKHtkZWZpbmU6bmEuZGVmaW5lLGluc3RhbmNlczpuYS5p bnN0YW5jZXMsbWFya3VwOm5hLm1hcmt1cH0pO2RlbGV0ZSBuYS5kZWZpbmU7ZGVs ZXRlIG5hLmluc3RhbmNlcztkZWxldGUgbmEubWFya3VwO31pZihtYSloLmludm9r ZShtYSxsYSk7aWYobmEpb2EuaGFuZGxlKG5hKTt0aGlzLl9oYW5kbGVKU1JlZ2lz dGVycyhrYSwnb25sb2FkJyk7aWYodGhpcy5saWQpZy5pbmZvcm0oJ3R0aV9hamF4 Jyx7czp0aGlzLmxpZCxkOlt0aGlzLl9zZW5kVGltZVN0YW1wfHwwLCh0aGlzLl9z ZW5kVGltZVN0YW1wJiZ0aGlzLl9yZXNwb25zZVRpbWUpPyh0aGlzLl9yZXNwb25z ZVRpbWUtdGhpcy5fc2VuZFRpbWVTdGFtcCk6MF19LGcuQkVIQVZJT1JfRVZFTlQp O3RoaXMuX2hhbmRsZUpTUmVnaXN0ZXJzKGthLCdvbmFmdGVybG9hZCcpO30sX2hh bmRsZUpTUmVnaXN0ZXJzOmZ1bmN0aW9uKGthLGxhKXt2YXIgbWE9a2FbbGFdO2lm KCFtYSlyZXR1cm47Zm9yKHZhciBuYT0wO25hPG1hLmxlbmd0aDtuYSsrKXRyeXso bmV3IEZ1bmN0aW9uKG1hW25hXSkpLmFwcGx5KHRoaXMpO31jYXRjaChvYSl7fX0s aW52b2tlUmVzcG9uc2VIYW5kbGVyOmZ1bmN0aW9uKGthKXtpZih0eXBlb2Yoa2Eu cmVkaXJlY3QpIT09J3VuZGVmaW5lZCcpeyhmdW5jdGlvbigpe3RoaXMuc2V0VVJJ KGthLnJlZGlyZWN0KS5zZW5kKCk7fSkuYmluZCh0aGlzKS5kZWZlcigpO3JldHVy bjt9aWYoIXRoaXMuaGFuZGxlciYmIXRoaXMuZXJyb3JIYW5kbGVyJiYhdGhpcy50 cmFuc3BvcnRFcnJvckhhbmRsZXIpcmV0dXJuO2lmKHR5cGVvZihrYS5hc3luY1Jl c3BvbnNlKSE9PSd1bmRlZmluZWQnKXtpZighdGhpcy5faXNSZWxldmFudCgpKXt0 aGlzLl9pbnZva2VFcnJvckhhbmRsZXIoMTAxMCk7cmV0dXJuO312YXIgbGE9a2Eu YXN5bmNSZXNwb25zZTtpZihsYS5pbmxpbmVqcyl3KGxhLmlubGluZWpzKTtpZihs YS5saWQpe3RoaXMuX3Jlc3BvbnNlVGltZT1EYXRlLm5vdygpO2lmKGEuQ2F2YWxy eUxvZ2dlcil0aGlzLmNhdmFscnk9YS5DYXZhbHJ5TG9nZ2VyLmdldEluc3RhbmNl KGxhLmxpZCk7dGhpcy5saWQ9bGEubGlkO31qLnNldFJlc291cmNlTWFwKGxhLnJl c291cmNlX21hcCk7aWYobGEuYm9vdGxvYWRhYmxlKWouZW5hYmxlQm9vdGxvYWQo bGEuYm9vdGxvYWRhYmxlKTt2YXIgbWE7aWYobGEuZ2V0RXJyb3IoKSYmIWxhLmdl dEVycm9ySXNXYXJuaW5nKCkpe3ZhciBuYT10aGlzLmVycm9ySGFuZGxlci5iaW5k KHRoaXMpO21hPXRoaXMuX2Rpc3BhdGNoRXJyb3JSZXNwb25zZS5iaW5kKHRoaXMs bGEsbmEpO31lbHNlIG1hPXRoaXMuX2Rpc3BhdGNoUmVzcG9uc2UuYmluZCh0aGlz LGxhKTttYT1tYS5kZWZlci5iaW5kKG1hKTt2YXIgb2E9ZmFsc2U7aWYodGhpcy5w cmVCb290bG9hZEhhbmRsZXIpb2E9dGhpcy5wcmVCb290bG9hZEhhbmRsZXIobGEp O2xhLmNzcz1sYS5jc3N8fFtdO2xhLmpzPWxhLmpzfHxbXTtqLmxvYWRSZXNvdXJj ZXMobGEuY3NzLmNvbmNhdChsYS5qcyksbWEsb2EsdGhpcy5nZXRVUkkoKSk7fWVs c2UgaWYodHlwZW9mKGthLnRyYW5zcG9ydEVycm9yKSE9PSd1bmRlZmluZWQnKXtp Zih0aGlzLl94RmJTZXJ2ZXIpe3RoaXMuX2ludm9rZUVycm9ySGFuZGxlcigxMDA4 KTt9ZWxzZSB0aGlzLl9pbnZva2VFcnJvckhhbmRsZXIoMTAxMik7fWVsc2UgdGhp cy5faW52b2tlRXJyb3JIYW5kbGVyKDEwMDcpO30sX2ludm9rZUVycm9ySGFuZGxl cjpmdW5jdGlvbihrYSl7aWYoYmEoKSYmIXRoaXMuZ2V0T3B0aW9uKCdoYW5kbGVF cnJvckFmdGVyVW5sb2FkJykpcmV0dXJuO3ZhciBsYTtpZih0aGlzLnJlc3BvbnNl VGV4dD09PScnKXtsYT0xMDAyO31lbHNlIGlmKHRoaXMuX3JlcXVlc3RBYm9ydGVk KXtsYT0xMDExO31lbHNle3RyeXtsYT1rYXx8dGhpcy50cmFuc3BvcnQuc3RhdHVz fHwxMDA0O31jYXRjaChtYSl7bGE9MTAwNTt9aWYoZmFsc2U9PT1uYXZpZ2F0b3Iu b25MaW5lKWxhPTEwMDY7fWlmKCF0aGlzLnRyYW5zcG9ydEVycm9ySGFuZGxlcily ZXR1cm47dmFyIG5hPXRoaXMudHJhbnNwb3J0RXJyb3JIYW5kbGVyLmJpbmQodGhp cyksb2EscGEscWE9dHJ1ZTtpZihsYT09PTEwMDYpe3BhPSJUaWRhayBhZGEgS29u ZWtzaSBKYXJpbmdhbiI7b2E9IkJyb3dzZXIgQW5kYSBzZXBlcnRpbnlhIHRpZGFr IHRlcmh1YnVuZyBrZSBpbnRlcm5ldC4gU2lsYWthbiBwZXJpa3NhIHNhbWJ1bmdh biBpbnRlcm5ldCBBbmRhLiI7fWVsc2UgaWYobGE+PTMwMCYmbGE8PTM5OSl7cGE9 IlBlbmdhbGloYW4iO29hPSJBa3NlcyBBbmRhIGtlIEZhY2Vib29rIHNhYXQgaW5p IGRpYWxpaGthbiBhdGF1IGRpYmxva2lyIG9sZWggcGloYWsga2V0aWdhLCBodWJ1 bmdpIElTUCBBbmRhIGF0YXUgbXVhdCB1bGFuZy4iO3ZhciByYT10aGlzLnRyYW5z cG9ydC5nZXRSZXNwb25zZUhlYWRlcigiTG9jYXRpb24iKTtpZihyYSl5KHJhLHRy dWUpO3FhPXRydWU7fWVsc2V7cGE9IkFkdWhoIjtvYT0iVGVyamFkaSBrZXNhbGFo YW4uIEthbWkgYWthbiBzZWdlcmEgbWVtcGVyYmFpa2lueWEuIFNpbGFoa2FuIG1l

bmNvYmEga2VtYmFsaS4iO30hdGhpcy5nZXRPcHRpb24oJ3N1cHByZXNzRXJyb3JB bGVydHMnKTt2YXIgc2E9bmV3IGkodGhpcyk7dihzYSx7ZXJyb3I6bGEsZXJyb3JT dW1tYXJ5OnBhLGVycm9yRGVzY3JpcHRpb246b2Esc2lsZW50RXJyb3I6cWF9KTt0 aGlzLl9kaXNwYXRjaEVycm9yUmVzcG9uc2Uoc2EsbmEpO30sX2Rpc3BhdGNoRXJy b3JSZXNwb25zZTpmdW5jdGlvbihrYSxsYSl7dmFyIG1hPWthLmdldEVycm9yKCk7 dHJ5e3RoaXMuY2xlYXJTdGF0dXNJbmRpY2F0b3IoKTt2YXIgb2E9dGhpcy5fc2Vu ZFRpbWVTdGFtcCYme2R1cmF0aW9uOkRhdGUubm93KCktdGhpcy5fc2VuZFRpbWVT dGFtcCx4ZmJfaXA6dGhpcy5feEZiU2VydmVyfHwnLSd9O2thLmxvZ0Vycm9yKCdh c3luY19lcnJvcicsb2EpO2lmKCF0aGlzLl9pc1JlbGV2YW50KCl8fG1hPT09MTAx MCl7dGhpcy5hYm9ydCgpO3JldHVybjt9aWYobWE9PTEzNTcwMDh8fG1hPT0xMzU3 MDA3fHxtYT09MTQ0MjAwMnx8bWE9PTEzNTcwMDEpe3ZhciBwYT1tYT09MTM1NzAw OHx8bWE9PTEzNTcwMDc7dGhpcy5pbnRlcmNlcHRIYW5kbGVyKGthKTt0aGlzLl9k aXNwbGF5U2VydmVyRGlhbG9nKGthLHBhKTt9ZWxzZSBpZih0aGlzLmluaXRpYWxI YW5kbGVyKGthKSE9PWZhbHNlKXtjbGVhclRpbWVvdXQodGhpcy50aW1lcik7dHJ5 e2xhKGthKTt9Y2F0Y2gocWEpe3RoaXMuZmluYWxseUhhbmRsZXIoa2EpO3Rocm93 IHFhO310aGlzLmZpbmFsbHlIYW5kbGVyKGthKTt9fWNhdGNoKG5hKXt9fSxfZGlz cGxheVNlcnZlckRpYWxvZzpmdW5jdGlvbihrYSxsYSl7dmFyIG1hPWthLmdldFBh eWxvYWQoKTtpZihtYS5fX2RpYWxvZyE9PXVuZGVmaW5lZCl7dGhpcy5fZGlzcGxh eVNlcnZlckxlZ2FjeURpYWxvZyhrYSxsYSk7cmV0dXJuO312YXIgbmE9bWEuX19k aWFsb2d4O25ldyBxKCkuaGFuZGxlKG5hKTtqLmxvYWRNb2R1bGVzKFsnQ29uZmly bWF0aW9uRGlhbG9nJ10sZnVuY3Rpb24ob2Epe29hLnNldHVwQ29uZmlybWF0aW9u KGthLHRoaXMpO30uYmluZCh0aGlzKSk7fSxfZGlzcGxheVNlcnZlckxlZ2FjeURp YWxvZzpmdW5jdGlvbihrYSxsYSl7dmFyIG1hPWthLmdldFBheWxvYWQoKS5fX2Rp YWxvZztqLmxvYWRNb2R1bGVzKFsnRGlhbG9nJ10sZnVuY3Rpb24obmEpe3ZhciBv YT1uZXcgbmEobWEpO2lmKGxhKW9hLnNldEhhbmRsZXIodGhpcy5fZGlzcGxheUNv bmZpcm1hdGlvbkhhbmRsZXIuYmluZCh0aGlzLG9hKSk7b2Euc2V0Q2FuY2VsSGFu ZGxlcihmdW5jdGlvbigpe3ZhciBwYT10aGlzLmdldFNlcnZlckRpYWxvZ0NhbmNl bEhhbmRsZXIoKTt0cnl7cGEmJnBhKGthKTt9Y2F0Y2gocWEpe3Rocm93IHFhO31m aW5hbGx5e3RoaXMuZmluYWxseUhhbmRsZXIoa2EpO319LmJpbmQodGhpcykpLnNl dENhdXNhbEVsZW1lbnQodGhpcy5yZWxhdGl2ZVRvKS5zaG93KCk7fS5iaW5kKHRo aXMpKTt9LF9kaXNwbGF5Q29uZmlybWF0aW9uSGFuZGxlcjpmdW5jdGlvbihrYSl7 dGhpcy5kYXRhLmNvbmZpcm1lZD0xO3YodGhpcy5kYXRhLGthLmdldEZvcm1EYXRh KCkpO3RoaXMuc2VuZCgpO30sX2hhbmRsZUpTT05QUmVzcG9uc2U6ZnVuY3Rpb24o a2Epe3RoaXMuaXNfZmlyc3Q9KHRoaXMuaXNfZmlyc3Q9PT11bmRlZmluZWQpO3Zh ciBsYT10aGlzLl9pbnRlcnByZXRSZXNwb25zZShrYSk7bGEuYXN5bmNSZXNwb25z ZS5pc19maXJzdD10aGlzLmlzX2ZpcnN0O2xhLmFzeW5jUmVzcG9uc2UuaXNfbGFz dD10aGlzLnRyYW5zcG9ydC5oYXNGaW5pc2hlZCgpO3RoaXMuaW52b2tlUmVzcG9u c2VIYW5kbGVyKGxhKTtpZih0aGlzLnRyYW5zcG9ydC5oYXNGaW5pc2hlZCgpKWRl bGV0ZSB0aGlzLnRyYW5zcG9ydDt9LF9oYW5kbGVYSFJSZXNwb25zZTpmdW5jdGlv bihrYSl7dmFyIGxhO2lmKHRoaXMuZ2V0T3B0aW9uKCdzdXBwcmVzc0V2YWx1YXRp b24nKSl7bGE9e2FzeW5jUmVzcG9uc2U6bmV3IGkodGhpcyxrYSl9O31lbHNle3Zh ciBtYT1rYS5yZXNwb25zZVRleHQsbmE9bnVsbDt0cnl7dmFyIHBhPXRoaXMuX3Vu c2hpZWxkUmVzcG9uc2VUZXh0KG1hKTt0cnl7dmFyIHFhPShldmFsKSgnKCcrcGEr JyknKTtsYT10aGlzLl9pbnRlcnByZXRSZXNwb25zZShxYSk7fWNhdGNoKG9hKXtu YT0nZXhjZXAnO2xhPXt0cmFuc3BvcnRFcnJvcjonZXZhbCgpIGZhaWxlZCBvbiBh c3luYyB0byAnK3RoaXMuZ2V0VVJJKCl9O319Y2F0Y2gob2Epe25hPSdlbXB0eSc7 bGE9e3RyYW5zcG9ydEVycm9yOm9hLm1lc3NhZ2V9O31pZihuYSlhLnNlbmRfZXJy b3Jfc2lnbmFsJiZhLnNlbmRfZXJyb3Jfc2lnbmFsKCdhc3luY194cG9ydF9yZXNw JyxbKHRoaXMuX3hGYlNlcnZlcj8nMTAwOF8nOicxMDEyXycpK25hLHRoaXMuX3hG YlNlcnZlcnx8Jy0nLHRoaXMuZ2V0VVJJKCksbWEubGVuZ3RoLG1hLnN1YnN0cigw LDE2MDApXS5qb2luKCc6JykpO310aGlzLmludm9rZVJlc3BvbnNlSGFuZGxlcihs YSk7fSxfdW5zaGllbGRSZXNwb25zZVRleHQ6ZnVuY3Rpb24oa2Epe3ZhciBsYT0i Zm9yICg7Oyk7IixtYT1sYS5sZW5ndGg7aWYoa2EubGVuZ3RoPD1tYSl0aHJvdyBu ZXcgRXJyb3IoJ1Jlc3BvbnNlIHRvbyBzaG9ydCBvbiBhc3luYyB0byAnK3RoaXMu Z2V0VVJJKCkpO3ZhciBuYT0wO3doaWxlKGthLmNoYXJBdChuYSk9PSIgInx8a2Eu Y2hhckF0KG5hKT09IlxuIiluYSsrO25hJiZrYS5zdWJzdHJpbmcobmEsbmErbWEp PT1sYTtyZXR1cm4ga2Euc3Vic3RyaW5nKG5hK21hKTt9LF9pbnRlcnByZXRSZXNw b25zZTpmdW5jdGlvbihrYSl7aWYoa2EucmVkaXJlY3QpcmV0dXJuIHtyZWRpcmVj dDprYS5yZWRpcmVjdH07dmFyIGxhPW5ldyBpKHRoaXMpO2lmKGthLl9fYXIhPTEp e2xhLnBheWxvYWQ9a2E7fWVsc2UgdihsYSxrYSk7cmV0dXJuIHthc3luY1Jlc3Bv

bnNlOmxhfTt9LF9vblN0YXRlQ2hhbmdlOmZ1bmN0aW9uKCl7dHJ5e2lmKHRoaXMu dHJhbnNwb3J0LnJlYWR5U3RhdGU9PTQpe2lhLl9pbmZsaWdodENvdW50LS07aWEu X2luZmxpZ2h0UHVyZ2UoKTt0cnl7aWYodHlwZW9mKHRoaXMudHJhbnNwb3J0Lmdl dFJlc3BvbnNlSGVhZGVyKSE9PSd1bmRlZmluZWQnJiZ0aGlzLnRyYW5zcG9ydC5n ZXRSZXNwb25zZUhlYWRlcignWC1GQi1EZWJ1ZycpKXRoaXMuX3hGYlNlcnZlcj10 aGlzLnRyYW5zcG9ydC5nZXRSZXNwb25zZUhlYWRlcignWC1GQi1EZWJ1ZycpO31j YXRjaChsYSl7fWlmKHRoaXMudHJhbnNwb3J0LnN0YXR1cz49MjAwJiZ0aGlzLnRy YW5zcG9ydC5zdGF0dXM8MzAwKXtpYS5sYXN0U3VjY2Vzc1RpbWU9RGF0ZS5ub3co KTt0aGlzLl9oYW5kbGVYSFJSZXNwb25zZSh0aGlzLnRyYW5zcG9ydCk7fWVsc2Ug aWYocy5zYWZhcmkoKSYmKHR5cGVvZih0aGlzLnRyYW5zcG9ydC5zdGF0dXMpPT0n dW5kZWZpbmVkJykpe3RoaXMuX2ludm9rZUVycm9ySGFuZGxlcigxMDAyKTt9ZWxz ZSBpZihsLnJldHJ5X2FqYXhfb25fbmV0d29ya19lcnJvciYmZWEodGhpcy50cmFu c3BvcnQpJiZ0aGlzLnJlbWFpbmluZ1JldHJpZXM+MCl7dGhpcy5yZW1haW5pbmdS ZXRyaWVzLS07ZGVsZXRlIHRoaXMudHJhbnNwb3J0O3RoaXMuc2VuZCh0cnVlKTty ZXR1cm47fWVsc2UgdGhpcy5faW52b2tlRXJyb3JIYW5kbGVyKCk7aWYodGhpcy5n ZXRPcHRpb24oJ2FzeW5jaHJvbm91cycpIT09ZmFsc2UpZGVsZXRlIHRoaXMudHJh bnNwb3J0O319Y2F0Y2goa2Epe2lmKGJhKCkpcmV0dXJuO2RlbGV0ZSB0aGlzLnRy YW5zcG9ydDtpZih0aGlzLnJlbWFpbmluZ1JldHJpZXM+MCl7dGhpcy5yZW1haW5p bmdSZXRyaWVzLS07dGhpcy5zZW5kKHRydWUpO31lbHNleyF0aGlzLmdldE9wdGlv bignc3VwcHJlc3NFcnJvckFsZXJ0cycpO2Euc2VuZF9lcnJvcl9zaWduYWwmJmEu c2VuZF9lcnJvcl9zaWduYWwoJ2FzeW5jX3hwb3J0X3Jlc3AnLFsxMDA3LHRoaXMu X3hGYlNlcnZlcnx8Jy0nLHRoaXMuZ2V0VVJJKCksa2EubWVzc2FnZV0uam9pbign OicpKTt0aGlzLl9pbnZva2VFcnJvckhhbmRsZXIoMTAwNyk7fX19LF9pc011bHRp cGxleGFibGU6ZnVuY3Rpb24oKXtpZih0aGlzLmdldE9wdGlvbignanNvbnAnKXx8 dGhpcy5nZXRPcHRpb24oJ3VzZUlmcmFtZVRyYW5zcG9ydCcpKXJldHVybiBmYWxz ZTtpZighdGhpcy51cmkuaXNGYWNlYm9va1VSSSgpKXJldHVybiBmYWxzZTtpZigh dGhpcy5nZXRPcHRpb24oJ2FzeW5jaHJvbm91cycpKXJldHVybiBmYWxzZTtyZXR1 cm4gdHJ1ZTt9LGhhbmRsZVJlc3BvbnNlOmZ1bmN0aW9uKGthKXt2YXIgbGE9dGhp cy5faW50ZXJwcmV0UmVzcG9uc2Uoa2EpO3RoaXMuaW52b2tlUmVzcG9uc2VIYW5k bGVyKGxhKTt9LHNldE1ldGhvZDpmdW5jdGlvbihrYSl7dGhpcy5tZXRob2Q9a2Eu dG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO3JldHVybiB0aGlzO30sZ2V0TWV0aG9k OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0aG9kO30sc2V0RGF0YTpmdW5jdGlv bihrYSl7dGhpcy5kYXRhPWthO3JldHVybiB0aGlzO30sX3NldERhdGFIYXNoOmZ1 bmN0aW9uKCl7aWYodGhpcy5tZXRob2QhPSdQT1NUJ3x8dGhpcy5kYXRhLnBoc3Rh bXApcmV0dXJuO3ZhciBrYT1yLmltcGxvZGVRdWVyeSh0aGlzLmRhdGEpLmxlbmd0 aCxsYT0nJztmb3IodmFyIG1hPTA7bWE8dGhpcy5kYXRhLmZiX2R0c2cubGVuZ3Ro O21hKyspbGErPXRoaXMuZGF0YS5mYl9kdHNnLmNoYXJDb2RlQXQobWEpO3RoaXMu ZGF0YS5waHN0YW1wPScxJytsYStrYTt9LHNldFJhd0RhdGE6ZnVuY3Rpb24oa2Ep e3RoaXMucmF3RGF0YT1rYTtyZXR1cm4gdGhpczt9LGdldERhdGE6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5kYXRhO30sc2V0Q29udGV4dERhdGE6ZnVuY3Rpb24oa2Es bGEsbWEpe21hPW1hPT09dW5kZWZpbmVkP3RydWU6bWE7aWYobWEpdGhpcy5jb250 ZXh0WydfbG9nXycra2FdPWxhO3JldHVybiB0aGlzO30sX3NldFVzZXJBY3Rpb25J RDpmdW5jdGlvbigpe3ZhciBrYT1hLkFyYml0ZXJNb25pdG9yJiZhLkFyYml0ZXJN b25pdG9yLmdldFVFKCl8fCctJzt0aGlzLnVzZXJBY3Rpb25JRD0oYS5FYWdsZUV5 ZSYmYS5FYWdsZUV5ZS5nZXRTZXNzaW9uSUQoKXx8Jy0nKSsnLycra2E7fSxzZXRV Ukk6ZnVuY3Rpb24oa2Epe3ZhciBsYT1yKGthKTtpZih0aGlzLmdldE9wdGlvbign dXNlSWZyYW1lVHJhbnNwb3J0JykmJiFsYS5pc0ZhY2Vib29rVVJJKCkpcmV0dXJu IHRoaXM7aWYoIXRoaXMuX2FsbG93Q3Jvc3NPcmlnaW4mJiF0aGlzLmdldE9wdGlv bignanNvbnAnKSYmIXRoaXMuZ2V0T3B0aW9uKCd1c2VJZnJhbWVUcmFuc3BvcnQn KSYmIWxhLmlzU2FtZU9yaWdpbigpKXJldHVybiB0aGlzO3RoaXMuX3NldFVzZXJB Y3Rpb25JRCgpO2lmKCFrYXx8bGEuaXNFbXB0eSgpKXtpZihhLnNlbmRfZXJyb3Jf c2lnbmFsJiZhLmdldF9lcnJvcl9zdGFjayl7dmFyIG1hPXtlcnJfY29kZToxMDEz LHZpcDonLScsZHVyYXRpb246MCx4ZmJfaXA6Jy0nLHBhdGg6d2luZG93LmxvY2F0 aW9uLmhyZWYsYWlkOnRoaXMudXNlckFjdGlvbklEfTthLnNlbmRfZXJyb3Jfc2ln bmFsKCdhc3luY19lcnJvcicsSlNPTi5zdHJpbmdpZnkobWEpKTthLnNlbmRfZXJy b3Jfc2lnbmFsKCdhc3luY194cG9ydF9zdGFjaycsWzEwMTMsd2luZG93LmxvY2F0 aW9uLmhyZWYsbnVsbCxhLmdldF9lcnJvcl9zdGFjaygpXS5qb2luKCc6JykpO31y ZXR1cm4gdGhpczt9dGhpcy51cmk9bGE7cmV0dXJuIHRoaXM7fSxnZXRVUkk6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy51cmkudG9TdHJpbmcoKTt9LHNldEluaXRpYWxI YW5kbGVyOmZ1bmN0aW9uKGthKXt0aGlzLmluaXRpYWxIYW5kbGVyPWthO3JldHVy

biB0aGlzO30sc2V0SGFuZGxlcjpmdW5jdGlvbihrYSl7aWYoZmEoa2EpKXRoaXMu aGFuZGxlcj1rYTtyZXR1cm4gdGhpczt9LGdldEhhbmRsZXI6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5oYW5kbGVyO30sc2V0VXBsb2FkUHJvZ3Jlc3NIYW5kbGVyOmZ1 bmN0aW9uKGthKXtpZihmYShrYSkpdGhpcy51cGxvYWRQcm9ncmVzc0hhbmRsZXI9 a2E7cmV0dXJuIHRoaXM7fSxzZXRFcnJvckhhbmRsZXI6ZnVuY3Rpb24oa2Epe2lm KGZhKGthKSl0aGlzLmVycm9ySGFuZGxlcj1rYTtyZXR1cm4gdGhpczt9LHNldFRy YW5zcG9ydEVycm9ySGFuZGxlcjpmdW5jdGlvbihrYSl7dGhpcy50cmFuc3BvcnRF cnJvckhhbmRsZXI9a2E7cmV0dXJuIHRoaXM7fSxnZXRFcnJvckhhbmRsZXI6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvckhhbmRsZXI7fSxnZXRUcmFuc3BvcnRF cnJvckhhbmRsZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc3BvcnRFcnJv ckhhbmRsZXI7fSxzZXRUaW1lb3V0SGFuZGxlcjpmdW5jdGlvbihrYSxsYSl7aWYo ZmEobGEpKXt0aGlzLnRpbWVvdXQ9a2E7dGhpcy50aW1lb3V0SGFuZGxlcj1sYTt9 cmV0dXJuIHRoaXM7fSxyZXNldFRpbWVvdXQ6ZnVuY3Rpb24oa2Epe2lmKCEodGhp cy50aW1lb3V0SGFuZGxlcj09PW51bGwpKWlmKGthPT09bnVsbCl7dGhpcy50aW1l b3V0PW51bGw7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO3RoaXMudGltZXI9bnVs bDt9ZWxzZXt2YXIgbGE9IXRoaXMuX2FsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbjt0 aGlzLnRpbWVvdXQ9a2E7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO3RoaXMudGlt ZXI9dGhpcy5faGFuZGxlVGltZW91dC5iaW5kKHRoaXMpLmRlZmVyKHRoaXMudGlt ZW91dCxsYSk7fXJldHVybiB0aGlzO30sX2hhbmRsZVRpbWVvdXQ6ZnVuY3Rpb24o KXt0aGlzLmFiYW5kb24oKTt0aGlzLnRpbWVvdXRIYW5kbGVyKHRoaXMpO30sc2V0 TmV3U2VyaWFsOmZ1bmN0aW9uKCl7dGhpcy5pZD0rK2dhO3JldHVybiB0aGlzO30s c2V0SW50ZXJjZXB0SGFuZGxlcjpmdW5jdGlvbihrYSl7dGhpcy5pbnRlcmNlcHRI YW5kbGVyPWthO3JldHVybiB0aGlzO30sc2V0RmluYWxseUhhbmRsZXI6ZnVuY3Rp b24oa2Epe3RoaXMuZmluYWxseUhhbmRsZXI9a2E7cmV0dXJuIHRoaXM7fSxzZXRB Ym9ydEhhbmRsZXI6ZnVuY3Rpb24oa2Epe3RoaXMuYWJvcnRIYW5kbGVyPWthO3Jl dHVybiB0aGlzO30sZ2V0U2VydmVyRGlhbG9nQ2FuY2VsSGFuZGxlcjpmdW5jdGlv bigpe3JldHVybiB0aGlzLnNlcnZlckRpYWxvZ0NhbmNlbEhhbmRsZXI7fSxzZXRT ZXJ2ZXJEaWFsb2dDYW5jZWxIYW5kbGVyOmZ1bmN0aW9uKGthKXt0aGlzLnNlcnZl ckRpYWxvZ0NhbmNlbEhhbmRsZXI9a2E7cmV0dXJuIHRoaXM7fSxzZXRQcmVCb290 bG9hZEhhbmRsZXI6ZnVuY3Rpb24oa2Epe3RoaXMucHJlQm9vdGxvYWRIYW5kbGVy PWthO3JldHVybiB0aGlzO30sc2V0UmVhZE9ubHk6ZnVuY3Rpb24oa2Epe2lmKCEo dHlwZW9mKGthKSE9J2Jvb2xlYW4nKSl0aGlzLnJlYWRPbmx5PWthO3JldHVybiB0 aGlzO30sc2V0RkJNTEZvcm06ZnVuY3Rpb24oKXt0aGlzLndyaXRlUmVxdWlyZWRQ YXJhbXM9WyJmYl9zaWciXTtyZXR1cm4gdGhpczt9LGdldFJlYWRPbmx5OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMucmVhZE9ubHk7fSxzZXRSZWxhdGl2ZVRvOmZ1bmN0 aW9uKGthKXt0aGlzLnJlbGF0aXZlVG89a2E7cmV0dXJuIHRoaXM7fSxnZXRSZWxh dGl2ZVRvOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVsYXRpdmVUbzt9LHNldFN0 YXR1c0NsYXNzOmZ1bmN0aW9uKGthKXt0aGlzLnN0YXR1c0NsYXNzPWthO3JldHVy biB0aGlzO30sc2V0U3RhdHVzRWxlbWVudDpmdW5jdGlvbihrYSl7dGhpcy5zdGF0 dXNFbGVtZW50PWthO3JldHVybiB0aGlzO30sZ2V0U3RhdHVzRWxlbWVudDpmdW5j dGlvbigpe3JldHVybiB4KHRoaXMuc3RhdHVzRWxlbWVudCk7fSxfaXNSZWxldmFu dDpmdW5jdGlvbigpe2lmKHRoaXMuX2FsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbily ZXR1cm4gdHJ1ZTtpZighdGhpcy5pZClyZXR1cm4gdHJ1ZTtyZXR1cm4gdGhpcy5p ZD5oYTt9LGNsZWFyU3RhdHVzSW5kaWNhdG9yOmZ1bmN0aW9uKCl7dmFyIGthPXRo aXMuZ2V0U3RhdHVzRWxlbWVudCgpO2lmKGthKXtrLnJlbW92ZUNsYXNzKGthLCdh c3luY19zYXZpbmcnKTtrLnJlbW92ZUNsYXNzKGthLHRoaXMuc3RhdHVzQ2xhc3Mp O319LGFkZFN0YXR1c0luZGljYXRvcjpmdW5jdGlvbigpe3ZhciBrYT10aGlzLmdl dFN0YXR1c0VsZW1lbnQoKTtpZihrYSl7ay5hZGRDbGFzcyhrYSwnYXN5bmNfc2F2 aW5nJyk7ay5hZGRDbGFzcyhrYSx0aGlzLnN0YXR1c0NsYXNzKTt9fSxzcGVjaWZp ZXNXcml0ZVJlcXVpcmVkUGFyYW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3Jp dGVSZXF1aXJlZFBhcmFtcy5ldmVyeShmdW5jdGlvbihrYSl7dGhpcy5kYXRhW2th XT10aGlzLmRhdGFba2FdfHxsW2thXXx8KHgoa2EpfHx7fSkudmFsdWU7aWYodGhp cy5kYXRhW2thXSE9PXVuZGVmaW5lZClyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2U7 fSx0aGlzKTt9LHNldE9wdGlvbjpmdW5jdGlvbihrYSxsYSl7aWYodHlwZW9mKHRo aXMub3B0aW9uW2thXSkhPSd1bmRlZmluZWQnKXRoaXMub3B0aW9uW2thXT1sYTty ZXR1cm4gdGhpczt9LGdldE9wdGlvbjpmdW5jdGlvbihrYSl7dHlwZW9mKHRoaXMu b3B0aW9uW2thXSk9PSd1bmRlZmluZWQnO3JldHVybiB0aGlzLm9wdGlvbltrYV07 fSxhYm9ydDpmdW5jdGlvbigpe2lmKHRoaXMudHJhbnNwb3J0KXt2YXIga2E9dGhp cy5nZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIoKTt0aGlzLnNldE9wdGlvbignc3Vw cHJlc3NFcnJvckFsZXJ0cycsdHJ1ZSk7dGhpcy5zZXRUcmFuc3BvcnRFcnJvckhh

bmRsZXIoYmFnb2Zob2xkaW5nKTt0aGlzLl9yZXF1ZXN0QWJvcnRlZD10cnVlO3Ro aXMudHJhbnNwb3J0LmFib3J0KCk7dGhpcy5zZXRUcmFuc3BvcnRFcnJvckhhbmRs ZXIoa2EpO310aGlzLmFib3J0SGFuZGxlcigpO30sYWJhbmRvbjpmdW5jdGlvbigp e2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKTt0aGlzLnNldE9wdGlvbignc3VwcHJl c3NFcnJvckFsZXJ0cycsdHJ1ZSkuc2V0SGFuZGxlcihiYWdvZmhvbGRpbmcpLnNl dEVycm9ySGFuZGxlcihiYWdvZmhvbGRpbmcpLnNldFRyYW5zcG9ydEVycm9ySGFu ZGxlcihiYWdvZmhvbGRpbmcpO2lmKHRoaXMudHJhbnNwb3J0KXt0aGlzLl9yZXF1 ZXN0QWJvcnRlZD10cnVlO3RoaXMudHJhbnNwb3J0LmFib3J0KCk7fX0sc2V0TmVj dGFyRGF0YTpmdW5jdGlvbihrYSl7aWYoa2Epe2lmKHRoaXMuZGF0YS5uY3RyPT09 dW5kZWZpbmVkKXRoaXMuZGF0YS5uY3RyPXt9O3YodGhpcy5kYXRhLm5jdHIsa2Ep O31yZXR1cm4gdGhpczt9LHNldE5lY3Rhck1vZHVsZURhdGFTYWZlOmZ1bmN0aW9u KGthKXtpZih0aGlzLnNldE5lY3Rhck1vZHVsZURhdGEpdGhpcy5zZXROZWN0YXJN b2R1bGVEYXRhKGthKTtyZXR1cm4gdGhpczt9LHNldE5lY3RhckltcHJlc3Npb25J ZFNhZmU6ZnVuY3Rpb24oKXtpZih0aGlzLnNldE5lY3RhckltcHJlc3Npb25JZCl0 aGlzLnNldE5lY3RhckltcHJlc3Npb25JZCgpO3JldHVybiB0aGlzO30sc2V0QWxs b3dDcm9zc1BhZ2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGthKXt0aGlzLl9hbGxvd0Ny b3NzUGFnZVRyYW5zaXRpb249ISFrYTtpZih0aGlzLnRpbWVyKXRoaXMucmVzZXRU aW1lb3V0KHRoaXMudGltZW91dCk7cmV0dXJuIHRoaXM7fSxzZXRBbGxvd0Nyb3Nz T3JpZ2luOmZ1bmN0aW9uKGthKXt0aGlzLl9hbGxvd0Nyb3NzT3JpZ2luPSEha2E7 cmV0dXJuIHRoaXM7fSxzZW5kOmZ1bmN0aW9uKGthKXtrYT1rYXx8ZmFsc2U7aWYo IXRoaXMudXJpKXJldHVybiBmYWxzZTshdGhpcy5lcnJvckhhbmRsZXImJiF0aGlz LmdldE9wdGlvbignc3VwcHJlc3NFcnJvckhhbmRsZXJXYXJuaW5nJyk7aWYodGhp cy5nZXRPcHRpb24oJ2pzb25wJykmJnRoaXMubWV0aG9kIT0nR0VUJyl0aGlzLnNl dE1ldGhvZCgnR0VUJyk7aWYodGhpcy5nZXRPcHRpb24oJ3VzZUlmcmFtZVRyYW5z cG9ydCcpJiZ0aGlzLm1ldGhvZCE9J0dFVCcpdGhpcy5zZXRNZXRob2QoJ0dFVCcp O3RoaXMudGltZW91dEhhbmRsZXIhPT1udWxsJiYodGhpcy5nZXRPcHRpb24oJ2pz b25wJyl8fHRoaXMuZ2V0T3B0aW9uKCd1c2VJZnJhbWVUcmFuc3BvcnQnKSk7aWYo IXRoaXMuZ2V0UmVhZE9ubHkoKSl7dGhpcy5zcGVjaWZpZXNXcml0ZVJlcXVpcmVk UGFyYW1zKCk7aWYodGhpcy5tZXRob2QhPSdQT1NUJylyZXR1cm4gZmFsc2U7fXYo dGhpcy5kYXRhLHQuZ2V0QXN5bmNQYXJhbXModGhpcy5tZXRob2QpKTtpZigheih0 aGlzLmNvbnRleHQpKXt2KHRoaXMuZGF0YSx0aGlzLmNvbnRleHQpO3RoaXMuZGF0 YS5hamF4X2xvZz0xO31pZihsLmZvcmNlX3BhcmFtKXYodGhpcy5kYXRhLGwuZm9y Y2VfcGFyYW0pO3RoaXMuX3NldFVzZXJBY3Rpb25JRCgpO2lmKHRoaXMuZ2V0T3B0 aW9uKCdidW5kbGUnKSYmdGhpcy5faXNNdWx0aXBsZXhhYmxlKCkpe2phLnNjaGVk dWxlKHRoaXMpO3JldHVybiB0cnVlO310aGlzLnNldE5ld1NlcmlhbCgpO2lmKCF0 aGlzLmdldE9wdGlvbignYXN5bmNocm9ub3VzJykpdGhpcy51cmkuYWRkUXVlcnlE YXRhKHtfX3M6MX0pO3RoaXMuZmluYWxseUhhbmRsZXI9YS5hc3luY19jYWxsYmFj ayh0aGlzLmZpbmFsbHlIYW5kbGVyLCdmaW5hbCcpO3ZhciBsYSxtYTtpZih0aGlz Lm1ldGhvZD09J0dFVCd8fHRoaXMucmF3RGF0YSl7bGE9dGhpcy51cmkuYWRkUXVl cnlEYXRhKHRoaXMuZGF0YSkudG9TdHJpbmcoKTttYT10aGlzLnJhd0RhdGF8fCcn O31lbHNle2xhPXRoaXMudXJpLnRvU3RyaW5nKCk7dGhpcy5fc2V0RGF0YUhhc2go KTttYT1yLmltcGxvZGVRdWVyeSh0aGlzLmRhdGEpO31pZih0aGlzLnRyYW5zcG9y dClyZXR1cm4gZmFsc2U7aWYodGhpcy5nZXRPcHRpb24oJ2pzb25wJyl8fHRoaXMu Z2V0T3B0aW9uKCd1c2VJZnJhbWVUcmFuc3BvcnQnKSl7ZChbJ0pTT05QVHJhbnNw b3J0J10sZnVuY3Rpb24ocWEpe3RoaXMudHJhbnNwb3J0PW5ldyBxYSh0aGlzLmdl dE9wdGlvbignanNvbnAnKT8nanNvbnAnOidpZnJhbWUnLHRoaXMudXJpLHRoaXMu X2hhbmRsZUpTT05QUmVzcG9uc2UuYmluZCh0aGlzKSk7dGhpcy50cmFuc3BvcnQu c2VuZCgpO30uYmluZCh0aGlzKSk7cmV0dXJuIHRydWU7fXZhciBuYT10LmNyZWF0 ZSgpO2lmKCFuYSlyZXR1cm4gZmFsc2U7bmEub25yZWFkeXN0YXRlY2hhbmdlPWEu YXN5bmNfY2FsbGJhY2sodGhpcy5fb25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpLCd4 aHInKTtpZih0aGlzLnVwbG9hZFByb2dyZXNzSGFuZGxlciYmY2EobmEpKW5hLnVw bG9hZC5vbnByb2dyZXNzPXRoaXMudXBsb2FkUHJvZ3Jlc3NIYW5kbGVyLmJpbmQo dGhpcyk7aWYoIWthKXRoaXMucmVtYWluaW5nUmV0cmllcz10aGlzLmdldE9wdGlv bigncmV0cmllcycpO2lmKGEuc2VuZF9lcnJvcl9zaWduYWx8fGEuQXJiaXRlck1v bml0b3IpdGhpcy5fc2VuZFRpbWVTdGFtcD10aGlzLl9zZW5kVGltZVN0YW1wfHxE YXRlLm5vdygpO3RoaXMudHJhbnNwb3J0PW5hO3RyeXt0aGlzLnRyYW5zcG9ydC5v cGVuKHRoaXMubWV0aG9kLGxhLHRoaXMuZ2V0T3B0aW9uKCdhc3luY2hyb25vdXMn KSk7fWNhdGNoKG9hKXtyZXR1cm4gZmFsc2U7fXZhciBwYT1sLnN2bl9yZXY7aWYo cGEpdGhpcy50cmFuc3BvcnQuc2V0UmVxdWVzdEhlYWRlcignWC1TVk4tUmV2JyxT dHJpbmcocGEpKTtpZighdGhpcy51cmkuaXNTYW1lT3JpZ2luKCkmJiF0aGlzLmdl

dE9wdGlvbignanNvbnAnKSYmIXRoaXMuZ2V0T3B0aW9uKCd1c2VJZnJhbWVUcmFu c3BvcnQnKSl7aWYoIWRhKHRoaXMudHJhbnNwb3J0KSlyZXR1cm4gZmFsc2U7aWYo dGhpcy51cmkuaXNGYWNlYm9va1VSSSgpKXRoaXMudHJhbnNwb3J0LndpdGhDcmVk ZW50aWFscz10cnVlO31pZih0aGlzLm1ldGhvZD09J1BPU1QnJiYhdGhpcy5yYXdE YXRhKXRoaXMudHJhbnNwb3J0LnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlw ZScsJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpO3RoaXMuYWRk U3RhdHVzSW5kaWNhdG9yKCk7dGhpcy50cmFuc3BvcnQuc2VuZChtYSk7aWYodGhp cy50aW1lb3V0IT09bnVsbCl0aGlzLnJlc2V0VGltZW91dCh0aGlzLnRpbWVvdXQp O2lhLl9pbmZsaWdodENvdW50Kys7aWEuX2luZmxpZ2h0QWRkKHRoaXMpO3JldHVy biB0cnVlO319KTtmdW5jdGlvbiBqYSgpe3RoaXMuX3JlcXVlc3RzPVtdO312KGph LHttdWx0aXBsZXg6bnVsbCxzY2hlZHVsZTpmdW5jdGlvbihrYSl7aWYoIWphLm11 bHRpcGxleCl7amEubXVsdGlwbGV4PW5ldyBqYSgpOyhmdW5jdGlvbigpe2phLm11 bHRpcGxleC5zZW5kKCk7amEubXVsdGlwbGV4PW51bGw7fSkuZGVmZXIoKTt9amEu bXVsdGlwbGV4LmFkZChrYSk7fX0pO3YoamEucHJvdG90eXBlLHthZGQ6ZnVuY3Rp b24oa2Epe3RoaXMuX3JlcXVlc3RzLnB1c2goa2EpO30sc2VuZDpmdW5jdGlvbigp e3ZhciBrYT10aGlzLl9yZXF1ZXN0cztpZigha2EubGVuZ3RoKXJldHVybjt2YXIg bGE7aWYoa2EubGVuZ3RoPT09MSl7bGE9a2FbMF07fWVsc2V7dmFyIG1hPWthLm1h cChmdW5jdGlvbihuYSl7cmV0dXJuIFtuYS51cmkuZ2V0UGF0aCgpLHIuaW1wbG9k ZVF1ZXJ5KG5hLmRhdGEpXTt9KTtsYT1uZXcgaWEoJy9hamF4L3Byb3h5LnBocCcp LnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZXREYXRhKHtkYXRh Om1hfSkuc2V0SGFuZGxlcih0aGlzLl9oYW5kbGVyLmJpbmQodGhpcykpLnNldFRy YW5zcG9ydEVycm9ySGFuZGxlcih0aGlzLl90cmFuc3BvcnRFcnJvckhhbmRsZXIu YmluZCh0aGlzKSk7fWxhLnNldE9wdGlvbignYnVuZGxlJyxmYWxzZSkuc2VuZCgp O30sX2hhbmRsZXI6ZnVuY3Rpb24oa2Epe3ZhciBsYT1rYS5nZXRQYXlsb2FkKCku cmVzcG9uc2VzO2lmKGxhLmxlbmd0aCE9PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCly ZXR1cm47Zm9yKHZhciBtYT0wO21hPHRoaXMuX3JlcXVlc3RzLmxlbmd0aDttYSsr KXt2YXIgbmE9dGhpcy5fcmVxdWVzdHNbbWFdLG9hPW5hLnVyaS5nZXRQYXRoKCk7 bmEuaWQ9dGhpcy5pZDtpZihsYVttYV1bMF0hPT1vYSl7bmEuaW52b2tlUmVzcG9u c2VIYW5kbGVyKHt0cmFuc3BvcnRFcnJvcjonV3JvbmcgcmVzcG9uc2Ugb3JkZXIg aW4gYnVuZGxlZCByZXF1ZXN0IHRvICcrb2F9KTtjb250aW51ZTt9bmEuaGFuZGxl UmVzcG9uc2UobGFbbWFdWzFdKTt9fSxfdHJhbnNwb3J0RXJyb3JIYW5kbGVyOmZ1 bmN0aW9uKGthKXt2YXIgbGE9e3RyYW5zcG9ydEVycm9yOmthLmVycm9yRGVzY3Jp cHRpb259LG1hPXRoaXMuX3JlcXVlc3RzLm1hcChmdW5jdGlvbihuYSl7bmEuaWQ9 dGhpcy5pZDtuYS5pbnZva2VSZXNwb25zZUhhbmRsZXIobGEpO3JldHVybiBuYS51 cmkuZ2V0UGF0aCgpO30pO319KTtlLmV4cG9ydHM9aWE7fSk7Cl9fZCgibGVnYWN5 OmFzeW5jIixbIkFzeW5jUmVxdWVzdCIsIkFzeW5jUmVzcG9uc2UiXSxmdW5jdGlv bihhLGIsYyxkKXthLkFzeW5jUmVxdWVzdD1iKCdBc3luY1JlcXVlc3QnKTthLkFz eW5jUmVzcG9uc2U9YignQXN5bmNSZXNwb25zZScpO30sMyk7Cl9fZCgibGVnYWN5 OmNzcyIsWyJDU1MiXSxmdW5jdGlvbihhLGIsYyxkKXthLkNTUz1iKCdDU1MnKTt9 LDMpOwpfX2QoImxlZ2FjeTpkYXRhLXN0b3JlIixbIkRhdGFTdG9yZSJdLGZ1bmN0 aW9uKGEsYixjLGQpe2EuRGF0YVN0b3JlPWEuRGF0YVN0b3JlfHxiKCdEYXRhU3Rv cmUnKTt9LDMpOwpfX2QoImxlZ2FjeTpkb20iLFsiRE9NIl0sZnVuY3Rpb24oYSxi LGMsZCl7YS5ET009YignRE9NJyk7fSwzKTsKZnVuY3Rpb24gRW11Q29udHJvbGxl cihhLGIpe3RoaXMuaW1wcmVzc2lvbj1iO3RoaXMuY29udGFpbmVySWQ9YTtEYXRh U3RvcmUuc2V0KCQoYSksJ2VtdUNvbnRyb2xsZXInLHRoaXMpO3JldHVybiB0aGlz O31jb3B5UHJvcGVydGllcyhFbXVDb250cm9sbGVyLHtmcm9tQ29udGFpbmVyOmZ1 bmN0aW9uKGEpe3ZhciBiPWdlKGEpO2lmKCFiKXJldHVybiBudWxsO3JldHVybiBE YXRhU3RvcmUuZ2V0KGIsJ2VtdUNvbnRyb2xsZXInKTt9LGdldEV2ZW50Q2xhc3M6 ZnVuY3Rpb24oYSl7cmV0dXJuICJlbXVFdmVudCIrU3RyaW5nKGEpLnRyaW0oKTt9 fSk7Y29weVByb3BlcnRpZXMoRW11Q29udHJvbGxlci5wcm90b3R5cGUse0VWRU5U X0hBTkRMRVJfUEFUSDonL2FqYXgvZW11L2VuZC5waHAnLENMSUNLOjEsRkFOOiJm YWRfZmFuIixldmVudDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT17ZWlkOnRoaXMu aW1wcmVzc2lvbixmOjAsdWk6dGhpcy5jb250YWluZXJJZCxlbjphLGE6MX07aWYo YillLmVkPUpTT04uc3RyaW5naWZ5KGIpO2lmKCFkKXZhciBkPWJhZ29maG9sZGlu Zzt2YXIgZj1uZXcgQXN5bmNSZXF1ZXN0KCkuc2V0VVJJKHRoaXMuRVZFTlRfSEFO RExFUl9QQVRIKS5zZXREYXRhKGUpLnNldEVycm9ySGFuZGxlcihkKTtpZihjKWYu c2V0SGFuZGxlcihjKTtmLnNlbmQoKTt9LHJlZGlyZWN0OmZ1bmN0aW9uKCl7dmFy IGE9e2VpZDp0aGlzLmltcHJlc3Npb24sZjowLHVpOnRoaXMuY29udGFpbmVySWQs ZW46dGhpcy5DTElDSyxhOjAsc2lnOk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo2 NTUzNSkrNjU1MzZ9LGI9bmV3IFVSSSh0aGlzLkVWRU5UX0hBTkRMRVJfUEFUSCk7

Yi5zZXRRdWVyeURhdGEoYSk7Z29VUkkoYik7fX0pOwp2YXIgU2hvcnRDbGlja0hh bmRsZXJzPXtFVkVOVF9OQU1FX0NBTUVfQkFDSzonY2FtZWJhY2snLG9uY2xpY2tl ZDpmdW5jdGlvbihhKXtpZih0aGlzLm9uc2l0ZSlyZXR1cm47aWYoYS5idXR0b24h PT0wfHxhLmdldE1vZGlmaWVycygpLmFueSlyZXR1cm47dGhpcy5jbGlja190cz0o K25ldyBEYXRlKCkpO2lmKHRoaXMubGlzdGVuZXJzIT09dW5kZWZpbmVkKWZvcih2 YXIgYiBpbiB0aGlzLmxpc3RlbmVycyl0aGlzLmxpc3RlbmVyc1tiXS5yZW1vdmUo KTt0aGlzLmxpc3RlbmVycz17Zm9jdXM6RXZlbnQubGlzdGVuKHdpbmRvdywnZm9j dXMnLFNob3J0Q2xpY2tIYW5kbGVycy5vbmNhbWViYWNrLmJpbmQodGhpcykpfTt9 LG9uY2FtZWJhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9KCtuZXcgRGF0ZSgpKS10aGlz LmNsaWNrX3RzO3RoaXMubGlzdGVuZXJzW2EudHlwZV0ucmVtb3ZlKCk7dmFyIGM9 e2NsaWNrX3RzOnRoaXMuY2xpY2tfdHMsbGVuZ3RoOmIsdHJpZ2dlcjphLnR5cGV9 O3RoaXMuc2VuZERhdGEoU2hvcnRDbGlja0hhbmRsZXJzLkVWRU5UX05BTUVfQ0FN RV9CQUNLLGMpO319OwpmdW5jdGlvbiBFbXVUcmFja2VyKGEsYil7dGhpcy5iYXNl PUVtdUNvbnRyb2xsZXIuZnJvbUNvbnRhaW5lcihhKTshdGhpcy5iYXNlO3RoaXMu b25zaXRlPWI7dmFyIGM9RE9NLnNjcnkoJChhKSwiYS4iK0VtdUNvbnRyb2xsZXIu Z2V0RXZlbnRDbGFzcyhFbXVUcmFja2VyLkVWRU5UX0NMSUNLKSk7Yy5mb3JFYWNo KGZ1bmN0aW9uKGQpe0V2ZW50Lmxpc3RlbihkLCdjbGljaycsU2hvcnRDbGlja0hh bmRsZXJzLm9uY2xpY2tlZC5iaW5kKHRoaXMpKTt9LmJpbmQodGhpcykpO3JldHVy biB0aGlzO31jb3B5UHJvcGVydGllcyhFbXVUcmFja2VyLHtFVkVOVF9DTElDSzox fSk7Y29weVByb3BlcnRpZXMoRW11VHJhY2tlci5wcm90b3R5cGUse3NlbmREYXRh OmZ1bmN0aW9uKGEsYil7dGhpcy5iYXNlLmV2ZW50KGEsYik7fX0pOwpfX2QoIkdl bmRlckNvbnN0IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9e1VOS05P V046MCxGRU1BTEVfU0lOR1VMQVI6MSxNQUxFX1NJTkdVTEFSOjIsRkVNQUxFX1NJ TkdVTEFSX0dVRVNTOjMsTUFMRV9TSU5HVUxBUl9HVUVTUzo0LE1JWEVEX1NJTkdV TEFSOjUsTUlYRURfUExVUkFMOjUsTkVVVEVSX1NJTkdVTEFSOjYsVU5LTk9XTl9T SU5HVUxBUjo3LEZFTUFMRV9QTFVSQUw6OCxNQUxFX1BMVVJBTDo5LE5FVVRFUl9Q TFVSQUw6MTAsVU5LTk9XTl9QTFVSQUw6MTF9O2UuZXhwb3J0cz1nO30pOwpfX2Qo IkJ1dHRvbiIsWyJldmVudC1leHRlbnNpb25zIiwiQ1NTIiwiRGF0YVN0b3JlIiwi RE9NIiwiUGFyZW50Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4 dGVuc2lvbnMnKTt2YXIgZz1iKCdDU1MnKSxoPWIoJ0RhdGFTdG9yZScpLGk9Yign RE9NJyksaj1iKCdQYXJlbnQnKSxrPSd1aUJ1dHRvbkRpc2FibGVkJyxsPSd1aUJ1 dHRvbkRlcHJlc3NlZCcsbT0nYnV0dG9uOmJsb2NrZXInLG49J2hyZWYnLG89J2Fq YXhpZnknO2Z1bmN0aW9uIHAodCx1KXt2YXIgdj1oLmdldCh0LG0pO2lmKHUpe2lm KHYpe3YucmVtb3ZlKCk7aC5yZW1vdmUodCxtKTt9fWVsc2UgaWYoIXYpaC5zZXQo dCxtLEV2ZW50Lmxpc3Rlbih0LCdjbGljaycsYmFnb2YoZmFsc2UpLEV2ZW50LlBy aW9yaXR5LlVSR0VOVCkpO31mdW5jdGlvbiBxKHQpe3ZhciB1PWouYnlDbGFzcyh0 LCd1aUJ1dHRvbicpO2lmKCF1KXRocm93IG5ldyBFcnJvcignaW52YWxpZCB1c2Ug Y2FzZScpO3JldHVybiB1O31mdW5jdGlvbiByKHQpe3JldHVybiBpLmlzTm9kZU9m VHlwZSh0LCdhJyk7fXZhciBzPXtnZXRJbnB1dEVsZW1lbnQ6ZnVuY3Rpb24odCl7 dD1xKHQpO2lmKHIodCkpdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHVzZSBjYXNl Jyk7cmV0dXJuIGkuZmluZCh0LCdpbnB1dCcpO30saXNFbmFibGVkOmZ1bmN0aW9u KHQpe3JldHVybiAhZy5oYXNDbGFzcyhxKHQpLGspO30sc2V0RW5hYmxlZDpmdW5j dGlvbih0LHUpe3Q9cSh0KTtnLmNvbmRpdGlvbkNsYXNzKHQsaywhdSk7aWYocih0 KSl7dmFyIHY9dC5ocmVmLHc9dC5nZXRBdHRyaWJ1dGUoJ2FqYXhpZnknKSx4PWgu Z2V0KHQsbiwnIycpLHk9aC5nZXQodCxvKTtpZih1KXtpZighdil0LmhyZWY9eDtp ZighdyYmeSl0LnNldEF0dHJpYnV0ZSgnYWpheGlmeScseSk7fWVsc2V7aWYodiYm diE9PXgpaC5zZXQodCxuLHYpO2lmKHcmJnchPT15KWguc2V0KHQsbyx3KTt0LnJl bW92ZUF0dHJpYnV0ZSgnaHJlZicpO3QucmVtb3ZlQXR0cmlidXRlKCdhamF4aWZ5 Jyk7fXAodCx1KTt9ZWxzZXt2YXIgej1zLmdldElucHV0RWxlbWVudCh0KTt6LmRp c2FibGVkPSF1O3Aoeix1KTt9fSxzZXREZXByZXNzZWQ6ZnVuY3Rpb24odCx1KXtn LmNvbmRpdGlvbkNsYXNzKHEodCksbCx1KTt9LGlzRGVwcmVzc2VkOmZ1bmN0aW9u KHQpe3JldHVybiBnLmhhc0NsYXNzKHEodCksbCk7fSxzZXRMYWJlbDpmdW5jdGlv bih0LHUpe3Q9cSh0KTtpZihyKHQpKXt2YXIgdj1pLmZpbmQodCwnc3Bhbi51aUJ1 dHRvblRleHQnKTtpLnNldENvbnRlbnQodix1KTt9ZWxzZSBzLmdldElucHV0RWxl bWVudCh0KS52YWx1ZT11O2cuY29uZGl0aW9uQ2xhc3ModCwndWlCdXR0b25Ob1Rl eHQnLCF1KTt9LHNldEljb246ZnVuY3Rpb24odCx1KXtpZih1JiYhaS5pc05vZGUo dSkpcmV0dXJuO3Q9cSh0KTt2YXIgdj1pLnNjcnkodCwnLmltZycpWzBdO2lmKCF1 KXt2JiZpLnJlbW92ZSh2KTtyZXR1cm47fWcuYWRkQ2xhc3ModSwnY3VzdG9taW1n Jyk7aWYodiE9dSlpZih2KXtpLnJlcGxhY2Uodix1KTt9ZWxzZSBpLnByZXBlbmRD b250ZW50KHQsdSk7fX07ZS5leHBvcnRzPXM7fSk7Cl9fZCgiRE9NQ29udHJvbCIs

WyJEYXRhU3RvcmUiLCIkIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignRGF0YVN0b3JlJyksaD1iKCckJyksaT1iKCdjb3B5 UHJvcGVydGllcycpO2Z1bmN0aW9uIGooayl7dGhpcy5yb290PWgoayk7dGhpcy51 cGRhdGluZz1mYWxzZTtnLnNldChrLCdET01Db250cm9sJyx0aGlzKTt9aShqLnBy b3RvdHlwZSx7Z2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3Q7fSxi ZWdpblVwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMudXBkYXRpbmcpcmV0dXJuIGZh bHNlO3RoaXMudXBkYXRpbmc9dHJ1ZTtyZXR1cm4gdHJ1ZTt9LGVuZFVwZGF0ZTpm dW5jdGlvbigpe3RoaXMudXBkYXRpbmc9ZmFsc2U7fSx1cGRhdGU6ZnVuY3Rpb24o ayl7aWYoIXRoaXMuYmVnaW5VcGRhdGUoKSlyZXR1cm4gdGhpczt0aGlzLm9udXBk YXRlKGspO3RoaXMuZW5kVXBkYXRlKCk7fSxvbnVwZGF0ZTpmdW5jdGlvbihrKXt9 fSk7ai5nZXRJbnN0YW5jZT1mdW5jdGlvbihrKXtyZXR1cm4gZy5nZXQoaywnRE9N Q29udHJvbCcpO307ZS5leHBvcnRzPWo7fSk7Cl9fZCgiSW5wdXQiLFsiQ1NTIiwi RE9NUXVlcnkiLCJET01Db250cm9sIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPWIoJ0NTUycpLGg9YignRE9NUXVlcnknKSxpPWIoJ0RPTUNvbnRyb2wnKSxq PWZ1bmN0aW9uKGwpe3ZhciBtPWwuZ2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnKTtp ZihtJiZtPjApZChbJ2VuZm9yY2VNYXhMZW5ndGgnXSxmdW5jdGlvbihuKXtuKGws bSk7fSk7fSxrPXtmb2N1czpmdW5jdGlvbihsKXt0cnl7bC5mb2N1cygpO31jYXRj aChtKXt9fSxpc0VtcHR5OmZ1bmN0aW9uKGwpe3JldHVybiAhKC9cUy8pLnRlc3Qo bC52YWx1ZXx8JycpfHxnLmhhc0NsYXNzKGwsJ0RPTUNvbnRyb2xfcGxhY2Vob2xk ZXInKTt9LGdldFZhbHVlOmZ1bmN0aW9uKGwpe3JldHVybiBrLmlzRW1wdHkobCk/ Jyc6bC52YWx1ZTt9LHNldFZhbHVlOmZ1bmN0aW9uKGwsbSl7Zy5yZW1vdmVDbGFz cyhsLCdET01Db250cm9sX3BsYWNlaG9sZGVyJyk7bC52YWx1ZT1tfHwnJztqKGwp O3ZhciBuPWkuZ2V0SW5zdGFuY2UobCk7biYmbi5yZXNldEhlaWdodCYmbi5yZXNl dEhlaWdodCgpO30sc2V0UGxhY2Vob2xkZXI6ZnVuY3Rpb24obCxtKXtsLnNldEF0 dHJpYnV0ZSgnYXJpYS1sYWJlbCcsbSk7bC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9s ZGVyJyxtKTtpZihsPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50KXJldHVybjtpZihr LmlzRW1wdHkobCkpe2cuY29uZGl0aW9uQ2xhc3MobCwnRE9NQ29udHJvbF9wbGFj ZWhvbGRlcicsbSk7bC52YWx1ZT1tfHwnJzt9fSxyZXNldDpmdW5jdGlvbihsKXt2 YXIgbT1sIT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8obC5nZXRBdHRyaWJ1dGUo J3BsYWNlaG9sZGVyJyl8fCcnKTonJztsLnZhbHVlPW07Zy5jb25kaXRpb25DbGFz cyhsLCdET01Db250cm9sX3BsYWNlaG9sZGVyJyxtKTtsLnN0eWxlLmhlaWdodD0n Jzt9LHNldFN1Ym1pdE9uRW50ZXI6ZnVuY3Rpb24obCxtKXtnLmNvbmRpdGlvbkNs YXNzKGwsJ2VudGVyX3N1Ym1pdCcsbSk7fSxnZXRTdWJtaXRPbkVudGVyOmZ1bmN0 aW9uKGwpe3JldHVybiBnLmhhc0NsYXNzKGwsJ2VudGVyX3N1Ym1pdCcpO30sc2V0 TWF4TGVuZ3RoOmZ1bmN0aW9uKGwsbSl7aWYobT4wKXtsLnNldEF0dHJpYnV0ZSgn bWF4bGVuZ3RoJyxtKTtqKGwpO31lbHNlIGwucmVtb3ZlQXR0cmlidXRlKCdtYXhs ZW5ndGgnKTt9fTtlLmV4cG9ydHM9azt9KTsKX19kKCJGb3JtIixbImV2ZW50LWV4 dGVuc2lvbnMiLCJBc3luY1JlcXVlc3QiLCJBc3luY1Jlc3BvbnNlIiwiQ1NTIiwi RE9NIiwiRE9NUG9zaXRpb24iLCJET01RdWVyeSIsIkRhdGFTdG9yZSIsIkVudiIs IklucHV0IiwiUGFyZW50IiwiVVJJIiwiY3JlYXRlQXJyYXlGcm9tIiwidHJhY2tS ZWZlcnJlciJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNp b25zJyk7dmFyIGc9YignQXN5bmNSZXF1ZXN0JyksaD1iKCdBc3luY1Jlc3BvbnNl JyksaT1iKCdDU1MnKSxqPWIoJ0RPTScpLGs9YignRE9NUG9zaXRpb24nKSxsPWIo J0RPTVF1ZXJ5JyksbT1iKCdEYXRhU3RvcmUnKSxuPWIoJ0VudicpLG89YignSW5w dXQnKSxwPWIoJ1BhcmVudCcpLHE9YignVVJJJykscj1iKCdjcmVhdGVBcnJheUZy b20nKSxzPWIoJ3RyYWNrUmVmZXJyZXInKSx0PSdGaWxlTGlzdCcgaW4gd2luZG93 LHU9J0Zvcm1EYXRhJyBpbiB3aW5kb3c7ZnVuY3Rpb24gdih4KXt2YXIgeT17fTtx LmltcGxvZGVRdWVyeSh4KS5zcGxpdCgnJicpLmZvckVhY2goZnVuY3Rpb24oeil7 aWYoeil7dmFyIGFhPS9eKFtePV0qKSg/Oj0oLiopKT8kLy5leGVjKHopLGJhPXEu ZGVjb2RlQ29tcG9uZW50KGFhWzFdKSxjYT1hYVsyXT9xLmRlY29kZUNvbXBvbmVu dChhYVsyXSk6bnVsbDt5W2JhXT1jYTt9fSk7cmV0dXJuIHk7fXZhciB3PXtnZXRJ bnB1dHM6ZnVuY3Rpb24oeCl7eD14fHxkb2N1bWVudDtyZXR1cm4gW10uY29uY2F0 KHIobC5zY3J5KHgsJ2lucHV0JykpLHIobC5zY3J5KHgsJ3NlbGVjdCcpKSxyKGwu c2NyeSh4LCd0ZXh0YXJlYScpKSxyKGwuc2NyeSh4LCdidXR0b24nKSkpO30sZ2V0 U2VsZWN0VmFsdWU6ZnVuY3Rpb24oeCl7cmV0dXJuIHgub3B0aW9uc1t4LnNlbGVj dGVkSW5kZXhdLnZhbHVlO30sc2V0U2VsZWN0VmFsdWU6ZnVuY3Rpb24oeCx5KXtm b3IodmFyIHo9MDt6PHgub3B0aW9ucy5sZW5ndGg7Kyt6KWlmKHgub3B0aW9uc1t6 XS52YWx1ZT09eSl7eC5zZWxlY3RlZEluZGV4PXo7YnJlYWs7fX0sZ2V0UmFkaW9W YWx1ZTpmdW5jdGlvbih4KXtmb3IodmFyIHk9MDt5PHgubGVuZ3RoO3krKylpZih4 W3ldLmNoZWNrZWQpcmV0dXJuIHhbeV0udmFsdWU7cmV0dXJuIG51bGw7fSxnZXRF

bGVtZW50czpmdW5jdGlvbih4KXtyZXR1cm4gcih4LnRhZ05hbWU9PSdGT1JNJz94 LmVsZW1lbnRzOncuZ2V0SW5wdXRzKHgpKTt9LGdldEF0dHJpYnV0ZTpmdW5jdGlv bih4LHkpe3JldHVybiAoeC5nZXRBdHRyaWJ1dGVOb2RlKHkpfHx7fSkudmFsdWV8 fG51bGw7fSxzZXREaXNhYmxlZDpmdW5jdGlvbih4LHkpe3cuZ2V0RWxlbWVudHMo eCkuZm9yRWFjaChmdW5jdGlvbih6KXtpZih6LmRpc2FibGVkIT09dW5kZWZpbmVk KXt2YXIgYWE9bS5nZXQoeiwnb3JpZ0Rpc2FibGVkU3RhdGUnKTtpZih5KXtpZihh YT09PXVuZGVmaW5lZCltLnNldCh6LCdvcmlnRGlzYWJsZWRTdGF0ZScsei5kaXNh YmxlZCk7ei5kaXNhYmxlZD15O31lbHNlIGlmKGFhIT09dHJ1ZSl6LmRpc2FibGVk PWZhbHNlO319KTt9LGJvb3RzdHJhcDpmdW5jdGlvbih4LHkpe3ZhciB6PSh3Lmdl dEF0dHJpYnV0ZSh4LCdtZXRob2QnKXx8J0dFVCcpLnRvVXBwZXJDYXNlKCk7eT1w LmJ5VGFnKHksJ2J1dHRvbicpfHx5O3ZhciBhYT1wLmJ5Q2xhc3MoeSwnc3RhdF9l bGVtJyl8fHg7aWYoaS5oYXNDbGFzcyhhYSwnYXN5bmNfc2F2aW5nJykpcmV0dXJu O2lmKHkmJih5LmZvcm0hPT14fHwoeS5ub2RlTmFtZSE9J0lOUFVUJyYmeS5ub2Rl TmFtZSE9J0JVVFRPTicpfHx5LnR5cGUhPSdzdWJtaXQnKSl7dmFyIGJhPWwuc2Ny eSh4LCcuZW50ZXJfc3VibWl0X3RhcmdldCcpWzBdO2JhJiYoeT1iYSk7fXZhciBj YT13LnNlcmlhbGl6ZSh4LHkpO3cuc2V0RGlzYWJsZWQoeCx0cnVlKTt2YXIgZGE9 dy5nZXRBdHRyaWJ1dGUoeCwnYWpheGlmeScpfHx3LmdldEF0dHJpYnV0ZSh4LCdh Y3Rpb24nKTtzKHgsZGEpO3ZhciBlYT1uZXcgZyhkYSk7ZWEuc2V0RGF0YShjYSku c2V0TmVjdGFyTW9kdWxlRGF0YVNhZmUoeCkuc2V0UmVhZE9ubHkoej09J0dFVCcp LnNldE1ldGhvZCh6KS5zZXRSZWxhdGl2ZVRvKHgpLnNldFN0YXR1c0VsZW1lbnQo YWEpLnNldEluaXRpYWxIYW5kbGVyKHcuc2V0RGlzYWJsZWQuY3VycnkoeCxmYWxz ZSkpLnNldEhhbmRsZXIoZnVuY3Rpb24oZmEpe0V2ZW50LmZpcmUoeCwnc3VjY2Vz cycse3Jlc3BvbnNlOmZhfSk7fSkuc2V0RXJyb3JIYW5kbGVyKGZ1bmN0aW9uKGZh KXtpZihFdmVudC5maXJlKHgsJ2Vycm9yJyx7cmVzcG9uc2U6ZmF9KSE9PWZhbHNl KWguZGVmYXVsdEVycm9ySGFuZGxlcihmYSk7fSkuc2V0RmluYWxseUhhbmRsZXIo dy5zZXREaXNhYmxlZC5jdXJyeSh4LGZhbHNlKSkuc2VuZCgpO30sZm9yRWFjaFZh bHVlOmZ1bmN0aW9uKHgseSx6KXt3LmdldEVsZW1lbnRzKHgpLmZvckVhY2goZnVu Y3Rpb24oYWEpe2lmKGFhLm5hbWUmJiFhYS5kaXNhYmxlZCYmYWEudHlwZSE9PSdz dWJtaXQnKWlmKCFhYS50eXBlfHwoKGFhLnR5cGU9PT0ncmFkaW8nfHxhYS50eXBl PT09J2NoZWNrYm94JykmJmFhLmNoZWNrZWQpfHxhYS50eXBlPT09J3RleHQnfHxh YS50eXBlPT09J3Bhc3N3b3JkJ3x8YWEudHlwZT09PSdoaWRkZW4nfHxhYS5ub2Rl TmFtZT09PSdURVhUQVJFQScpe3ooYWEudHlwZSxhYS5uYW1lLG8uZ2V0VmFsdWUo YWEpKTt9ZWxzZSBpZihhYS5ub2RlTmFtZT09PSdTRUxFQ1QnKXtmb3IodmFyIGJh PTAsY2E9YWEub3B0aW9ucy5sZW5ndGg7YmE8Y2E7YmErKyl7dmFyIGRhPWFhLm9w dGlvbnNbYmFdO2lmKGRhLnNlbGVjdGVkKXooJ3NlbGVjdCcsYWEubmFtZSxkYS52 YWx1ZSk7fX1lbHNlIGlmKHQmJmFhLnR5cGU9PT0nZmlsZScpe3ZhciBlYT1hYS5m aWxlcztmb3IodmFyIGZhPTA7ZmE8ZWEubGVuZ3RoO2ZhKyspeignZmlsZScsYWEu bmFtZSxlYS5pdGVtKGZhKSk7fX0pO2lmKHkmJnkubmFtZSYmeS50eXBlPT09J3N1 Ym1pdCcmJmwuY29udGFpbnMoeCx5KSYmbC5pc05vZGVPZlR5cGUoeSxbJ2lucHV0 JywnYnV0dG9uJ10pKXooJ3N1Ym1pdCcseS5uYW1lLHkudmFsdWUpO30sY3JlYXRl Rm9ybURhdGE6ZnVuY3Rpb24oeCx5KXtpZighdSlyZXR1cm4gbnVsbDt2YXIgej1u ZXcgRm9ybURhdGEoKTtpZih4KWlmKGwuaXNOb2RlKHgpKXt3LmZvckVhY2hWYWx1 ZSh4LHksZnVuY3Rpb24oY2EsZGEsZWEpe3ouYXBwZW5kKGRhLGVhKTt9KTt9ZWxz ZXt2YXIgYWE9dih4KTtmb3IodmFyIGJhIGluIGFhKXouYXBwZW5kKGJhLGFhW2Jh XSk7fXJldHVybiB6O30sc2VyaWFsaXplOmZ1bmN0aW9uKHgseSl7dmFyIHo9e307 dy5mb3JFYWNoVmFsdWUoeCx5LGZ1bmN0aW9uKGFhLGJhLGNhKXtpZihhYT09PSdm aWxlJylyZXR1cm47dy5fc2VyaWFsaXplSGVscGVyKHosYmEsY2EpO30pO3JldHVy biB3Ll9zZXJpYWxpemVGaXgoeik7fSxfc2VyaWFsaXplSGVscGVyOmZ1bmN0aW9u KHgseSx6KXt2YXIgYWE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxi YT0vKFteXF1dKylcWyhbXlxdXSopXF0oLiopLy5leGVjKHkpO2lmKGJhKXtpZigh eFtiYVsxXV18fCFhYS5jYWxsKHgsYmFbMV0pKXt2YXIgY2E7eFtiYVsxXV09Y2E9 e307aWYoeFtiYVsxXV0hPT1jYSlyZXR1cm47fXZhciBkYT0wO2lmKGJhWzJdPT09 Jycpe3doaWxlKHhbYmFbMV1dW2RhXSE9PXVuZGVmaW5lZClkYSsrO31lbHNlIGRh PWJhWzJdO2lmKGJhWzNdPT09Jycpe3hbYmFbMV1dW2RhXT16O31lbHNlIHcuX3Nl cmlhbGl6ZUhlbHBlcih4W2JhWzFdXSxkYS5jb25jYXQoYmFbM10pLHopO31lbHNl IHhbeV09ejt9LF9zZXJpYWxpemVGaXg6ZnVuY3Rpb24oeCl7dmFyIHk9W107Zm9y KHZhciB6IGluIHgpe2lmKHhbel0gaW5zdGFuY2VvZiBPYmplY3QpeFt6XT13Ll9z ZXJpYWxpemVGaXgoeFt6XSk7eS5wdXNoKHopO31pZih5Lmxlbmd0aD4wKXt2YXIg YWE9MCxiYT10cnVlO3kuc29ydCgpLmZvckVhY2goZnVuY3Rpb24oZGEpe2lmKGRh IT1hYSsrKWJhPWZhbHNlO30pO2lmKGJhKXt2YXIgY2E9W107eS5mb3JFYWNoKGZ1

bmN0aW9uKGRhKXtjYVtkYV09eFtkYV07fSk7cmV0dXJuIGNhO319cmV0dXJuIHg7 fSxwb3N0OmZ1bmN0aW9uKHgseSx6KXt2YXIgYWE9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnZm9ybScpO2FhLmFjdGlvbj14LnRvU3RyaW5nKCk7YWEubWV0aG9kPSdQ T1NUJzthYS5zdHlsZS5kaXNwbGF5PSdub25lJztpZih6KWFhLnRhcmdldD16O3ku ZmJfZHRzZz1uLmZiX2R0c2c7dy5jcmVhdGVIaWRkZW5JbnB1dHMoeSxhYSk7bC5n ZXRSb290RWxlbWVudCgpLmFwcGVuZENoaWxkKGFhKTthYS5zdWJtaXQoKTtyZXR1 cm4gZmFsc2U7fSxjcmVhdGVIaWRkZW5JbnB1dHM6ZnVuY3Rpb24oeCx5LHosYWEp e3o9enx8e307dmFyIGJhPXYoeCk7Zm9yKHZhciBjYSBpbiBiYSl7aWYoYmFbY2Fd PT09bnVsbCljb250aW51ZTtpZih6W2NhXSYmYWEpe3pbY2FdLnZhbHVlPWJhW2Nh XTt9ZWxzZXt2YXIgZGE9ai5jcmVhdGUoJ2lucHV0Jyx7dHlwZTonaGlkZGVuJyxu YW1lOmNhLHZhbHVlOmJhW2NhXX0pO3pbY2FdPWRhO3kuYXBwZW5kQ2hpbGQoZGEp O319cmV0dXJuIHo7fSxnZXRGaXJzdEVsZW1lbnQ6ZnVuY3Rpb24oeCx5KXt5PXl8 fFsnaW5wdXRbdHlwZT0idGV4dCJdJywndGV4dGFyZWEnLCdpbnB1dFt0eXBlPSJw YXNzd29yZCJdJywnaW5wdXRbdHlwZT0iYnV0dG9uIl0nLCdpbnB1dFt0eXBlPSJz dWJtaXQiXSddO3ZhciB6PVtdO2Zvcih2YXIgYWE9MDthYTx5Lmxlbmd0aDthYSsr KXt6PWwuc2NyeSh4LHlbYWFdKTtmb3IodmFyIGJhPTA7YmE8ei5sZW5ndGg7YmEr Kyl7dmFyIGNhPXpbYmFdO3RyeXt2YXIgZWE9ay5nZXRFbGVtZW50UG9zaXRpb24o Y2EpO2lmKGVhLnk+MCYmZWEueD4wKXJldHVybiBjYTt9Y2F0Y2goZGEpe319fXJl dHVybiBudWxsO30sZm9jdXNGaXJzdDpmdW5jdGlvbih4KXt2YXIgeT13LmdldEZp cnN0RWxlbWVudCh4KTtpZih5KXt5LmZvY3VzKCk7cmV0dXJuIHRydWU7fXJldHVy biBmYWxzZTt9fTtlLmV4cG9ydHM9dzt9KTsKX19kKCJBc3luY1VwbG9hZEJhc2Ui LFsiQXJiaXRlck1peGluIiwiQXN5bmNSZXF1ZXN0IiwiQXN5bmNSZXNwb25zZSIs IkZvcm0iLCJVc2VyQWdlbnQiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyTWl4aW4nKSxoPWIoJ0FzeW5jUmVx dWVzdCcpLGk9YignQXN5bmNSZXNwb25zZScpLGo9YignRm9ybScpLGs9YignVXNl ckFnZW50JyksbD1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIG0obyl7dGhp cy5zZXRVUkkobyk7fW0uaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtpZihrLnNhZmFy aSgpJiYhay5jaHJvbWUoKSYmay53aW5kb3dzKCkpcmV0dXJuIGZhbHNlO3JldHVy biAoJ0ZpbGVMaXN0JyBpbiB3aW5kb3cpJiYoJ0Zvcm1EYXRhJyBpbiB3aW5kb3cp O307bChtLnByb3RvdHlwZSxnLHtfbGltaXQ6MTAsc2V0QWxsb3dDcm9zc09yaWdp bjpmdW5jdGlvbihvKXt0aGlzLl9hbGxvd0Nyb3NzT3JpZ2luPSEhbztyZXR1cm4g dGhpczt9LHNldERhdGE6ZnVuY3Rpb24obyl7dGhpcy5fZGF0YT1vO3JldHVybiB0 aGlzO30sc2V0TGltaXQ6ZnVuY3Rpb24obyl7dGhpcy5fbGltaXQ9bztyZXR1cm4g dGhpczt9LHNldFJlbGF0aXZlVG86ZnVuY3Rpb24obyl7dGhpcy5fcmVsYXRpdmVU bz1vO3JldHVybiB0aGlzO30sc2V0U3RhdHVzRWxlbWVudDpmdW5jdGlvbihvKXt0 aGlzLl9zdGF0dXNFbGVtZW50PW87cmV0dXJuIHRoaXM7fSxzZXRVUkk6ZnVuY3Rp b24obyl7dGhpcy5fdXJpPW87cmV0dXJuIHRoaXM7fSxfY3JlYXRlRmlsZVVwbG9h ZDpmdW5jdGlvbihvLHAscSl7cmV0dXJuIG5ldyBuKG8scCxxKTt9LF9wYXJzZUZp bGVzOmZ1bmN0aW9uKG8pe3ZhciBwPXt9O2Zvcih2YXIgcSBpbiBvKXt2YXIgcj1v W3FdO2lmKEFycmF5LmlzQXJyYXkocikpe3BbcV09cjt9ZWxzZXtwW3FdPVtdO2lm KHIgaW5zdGFuY2VvZiB3aW5kb3cuRmlsZUxpc3Qpe2Zvcih2YXIgcz0wO3M8ci5s ZW5ndGg7cysrKXBbcV0ucHVzaChyLml0ZW0ocykpO31lbHNlIGlmKHIgaW5zdGFu Y2VvZiB3aW5kb3cuRmlsZXx8ciBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iKXBbcV0u cHVzaChyKTt9fXJldHVybiBwO30sX3Byb2Nlc3NRdWV1ZTpmdW5jdGlvbigpe3do aWxlKHRoaXMuX3BlbmRpbmcubGVuZ3RoPHRoaXMuX2xpbWl0KXtpZighdGhpcy5f d2FpdGluZy5sZW5ndGgpYnJlYWs7dmFyIG89dGhpcy5fd2FpdGluZy5zaGlmdCgp O3RoaXMuX3Byb2Nlc3NVcGxvYWQobyk7dGhpcy5fcGVuZGluZy5wdXNoKG8pO319 LF9wcm9jZXNzVXBsb2FkOmZ1bmN0aW9uKG8pe3RoaXMuaW5mb3JtKCdzdGFydCcs byk7dmFyIHA9ai5jcmVhdGVGb3JtRGF0YShvLmdldERhdGEoKXx8dGhpcy5fZGF0 YSk7aWYoby5nZXRGaWxlKCkpcC5hcHBlbmQoby5nZXROYW1lKCksby5nZXRGaWxl KCkpO25ldyBoKCkuc2V0QWxsb3dDcm9zc09yaWdpbih0aGlzLl9hbGxvd0Nyb3Nz T3JpZ2luKS5zZXRVUkkodGhpcy5fdXJpKS5zZXRSYXdEYXRhKHApLnNldFJlbGF0 aXZlVG8odGhpcy5fcmVsYXRpdmVUbykuc2V0U3RhdHVzRWxlbWVudCh0aGlzLl9z dGF0dXNFbGVtZW50KS5zZXRIYW5kbGVyKHRoaXMuX3N1Y2Nlc3MuYmluZCh0aGlz LG8pKS5zZXRFcnJvckhhbmRsZXIodGhpcy5fZmFpbHVyZS5iaW5kKHRoaXMsbykp LnNldFVwbG9hZFByb2dyZXNzSGFuZGxlcih0aGlzLl9wcm9ncmVzcy5iaW5kKHRo aXMsbykpLnNldEluaXRpYWxIYW5kbGVyKHRoaXMuX2luaXRpYWwuYmluZCh0aGlz LG8pKS5zZW5kKCk7fSxfaW5pdGlhbDpmdW5jdGlvbihvKXt0aGlzLmluZm9ybSgn aW5pdGlhbCcsbyk7fSxfc3VjY2VzczpmdW5jdGlvbihvLHApe3RoaXMuaW5mb3Jt KCdzdWNjZXNzJyxvLmhhbmRsZVN1Y2Nlc3MocCkpO3RoaXMuX2NvbXBsZXRlKG8p

O30sX2ZhaWx1cmU6ZnVuY3Rpb24obyxwKXtpZih0aGlzLmluZm9ybSgnZmFpbHVy ZScsby5oYW5kbGVGYWlsdXJlKHApKSE9PWZhbHNlKWkuZGVmYXVsdEVycm9ySGFu ZGxlcihwKTt0aGlzLl9jb21wbGV0ZShvKTt9LF9wcm9ncmVzczpmdW5jdGlvbihv LGV2ZW50KXt0aGlzLmluZm9ybSgncHJvZ3Jlc3MnLG8uaGFuZGxlUHJvZ3Jlc3Mo ZXZlbnQpKTt9LF9jb21wbGV0ZTpmdW5jdGlvbihvKXt0aGlzLl9wZW5kaW5nLnJl bW92ZShvKTt0aGlzLl9wcm9jZXNzUXVldWUoKTtpZighdGhpcy5fcGVuZGluZy5s ZW5ndGgpdGhpcy5faW5GbGlnaHQ9ZmFsc2U7fX0pO3ZhciBuPWZ1bmN0aW9uKG8s cCxxKXt0aGlzLl9uYW1lPW87dGhpcy5fZmlsZT1wO3RoaXMuX2RhdGE9cTt0aGlz Ll9zdWNjZXNzPW51bGw7dGhpcy5fcmVzcG9uc2U9bnVsbDt0aGlzLl9wcm9ncmVz c0V2ZW50PW51bGw7fTtsKG4ucHJvdG90eXBlLHtnZXROYW1lOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX25hbWU7fSxnZXRGaWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX2ZpbGU7fSxnZXREYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGE7 fSxpc0NvbXBsZXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1Y2Nlc3MhPT1u dWxsO30saXNTdWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1Y2Nlc3M9 PT10cnVlO30sZ2V0UmVzcG9uc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVz cG9uc2U7fSxnZXRQcm9ncmVzc0V2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X3Byb2dyZXNzRXZlbnQ7fSxoYW5kbGVTdWNjZXNzOmZ1bmN0aW9uKG8pe3RoaXMu X3N1Y2Nlc3M9dHJ1ZTt0aGlzLl9yZXNwb25zZT1vO3RoaXMuX3Byb2dyZXNzRXZl bnQ9bnVsbDtyZXR1cm4gdGhpczt9LGhhbmRsZUZhaWx1cmU6ZnVuY3Rpb24obyl7 dGhpcy5fc3VjY2Vzcz1mYWxzZTt0aGlzLl9yZXNwb25zZT1vO3RoaXMuX3Byb2dy ZXNzRXZlbnQ9bnVsbDtyZXR1cm4gdGhpczt9LGhhbmRsZVByb2dyZXNzOmZ1bmN0 aW9uKGV2ZW50KXt0aGlzLl9wcm9ncmVzc0V2ZW50PWV2ZW50O3JldHVybiB0aGlz O319KTtlLmV4cG9ydHM9bTt9KTsKX19kKCJBc3luY1VwbG9hZFJlcXVlc3QiLFsi QXN5bmNVcGxvYWRCYXNlIiwiQ2xhc3MiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBc3luY1VwbG9hZEJhc2UnKSxoPWIo J0NsYXNzJyksaT1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGooayl7dGhp cy5wYXJlbnQuY29uc3RydWN0KHRoaXMsayk7fWouaXNTdXBwb3J0ZWQ9ZnVuY3Rp b24oKXtyZXR1cm4gZy5pc1N1cHBvcnRlZCgpO307aC5leHRlbmQoaixnKTtpKGou cHJvdG90eXBlLHtzZXRGaWxlczpmdW5jdGlvbihrKXt0aGlzLl9maWxlcz10aGlz Ll9wYXJzZUZpbGVzKGspO3JldHVybiB0aGlzO30sc2VuZDpmdW5jdGlvbigpe2lm KHRoaXMuX2luRmxpZ2h0KXJldHVybjt0aGlzLl9pbkZsaWdodD10cnVlO3RoaXMu X3VwbG9hZHM9W107Zm9yKHZhciBrIGluIHRoaXMuX2ZpbGVzKXRoaXMuX2ZpbGVz W2tdLmZvckVhY2goZnVuY3Rpb24obCl7dGhpcy5fdXBsb2Fkcy5wdXNoKHRoaXMu X2NyZWF0ZUZpbGVVcGxvYWQoayxsKSk7fS5iaW5kKHRoaXMpKTtpZih0aGlzLl91 cGxvYWRzLmxlbmd0aCl7dGhpcy5fd2FpdGluZz10aGlzLl91cGxvYWRzLnNsaWNl KDApO3RoaXMuX3BlbmRpbmc9W107dGhpcy5fcHJvY2Vzc1F1ZXVlKCk7fWVsc2Ug dGhpcy5fcHJvY2Vzc1VwbG9hZCh0aGlzLl9jcmVhdGVGaWxlVXBsb2FkKG51bGws bnVsbCkpO30sX2NvbXBsZXRlOmZ1bmN0aW9uKGspe3RoaXMucGFyZW50Ll9jb21w bGV0ZShrKTtpZighdGhpcy5fcGVuZGluZy5sZW5ndGgpdGhpcy5pbmZvcm0oJ2Nv bXBsZXRlJyx0aGlzLl91cGxvYWRzKTt9fSk7ZS5leHBvcnRzPWo7fSk7Cl9fZCgi SlNPTlBUcmFuc3BvcnQiLFsiRE9NIiwiSFRNTCIsIlVSSSIsImNvcHlQcm9wZXJ0 aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTScpLGg9Yign SFRNTCcpLGk9YignVVJJJyksaj1iKCdjb3B5UHJvcGVydGllcycpLGs9e30sbD0y LG09J2pzb25wJyxuPSdpZnJhbWUnO2Z1bmN0aW9uIG8ocCxxLHIpe3RoaXMuX3R5 cGU9cDt0aGlzLl91cmk9cTt0aGlzLl9oYW5kbGVyPXI7a1t0aGlzLmdldElEKCld PXRoaXM7fWoobyx7cmVzcG9uZDpmdW5jdGlvbihwLHEscil7dmFyIHM9a1twXTtp ZihzKXtpZighcilkZWxldGUga1twXTtpZihzLl90eXBlPT1uKXE9SlNPTi5wYXJz ZShKU09OLnN0cmluZ2lmeShxKSk7YS5hc3luY19jYWxsYmFjayhzLmhhbmRsZVJl c3BvbnNlLmJpbmQocyksJ2pzb24nKShxKTt9ZWxzZSBpZihhLmxvZ0pTRXJyb3Im JiFyKWEubG9nSlNFcnJvcignYWpheCcse2Vycm9yOidVbmV4cGVjdGVkSnNvblJl c3BvbnNlJyxleHRyYTp7aWQ6cCx1cmk6KHEucGF5bG9hZCYmcS5wYXlsb2FkLnVy aSl8fCcnfX0pO319KTtqKG8ucHJvdG90eXBlLHtnZXRJRDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9pZHx8KHRoaXMuX2lkPWwrKyk7fSxoYXNGaW5pc2hlZDpmdW5j dGlvbigpe3JldHVybiAhKHRoaXMuZ2V0SUQoKSBpbiBrKTt9LGdldFJlcXVlc3RV Ukk6ZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzLl91cmkpLmFkZFF1ZXJ5RGF0YSh7 X19hOjEsX19hZHQ6dGhpcy5nZXRJRCgpfSk7fSxjcmVhdGVUcmFuc3BvcnRGcmFt ZTpmdW5jdGlvbigpe3ZhciBwPSd0cmFuc3BvcnRfZnJhbWVfJyt0aGlzLmdldElE KCkscT1oKCc8aWZyYW1lIGNsYXNzPSJoaWRkZW5fZWxlbSIgbmFtZT0iJytwKyci IHNyYz0iamF2YXNjcmlwdDp2b2lkKDApIiAvPicpO3JldHVybiBnLmFwcGVuZENv bnRlbnQoZG9jdW1lbnQuYm9keSxxKVswXTt9LHNlbmQ6ZnVuY3Rpb24oKXtpZih0

aGlzLl90eXBlPT09bSl7KGZ1bmN0aW9uKCl7Zy5hcHBlbmRDb250ZW50KGRvY3Vt ZW50LmJvZHksZy5jcmVhdGUoJ3NjcmlwdCcse3NyYzp0aGlzLmdldFJlcXVlc3RV UkkoKS50b1N0cmluZygpLHR5cGU6J3RleHQvamF2YXNjcmlwdCd9KSk7fSkuYmlu ZCh0aGlzKS5kZWZlcigpO31lbHNle3RoaXMuX2lmcmFtZT10aGlzLmNyZWF0ZVRy YW5zcG9ydEZyYW1lKCk7dGhpcy5faWZyYW1lLnNyYz10aGlzLmdldFJlcXVlc3RV UkkoKS50b1N0cmluZygpO319LGhhbmRsZVJlc3BvbnNlOmZ1bmN0aW9uKHApe2lm KCF0aGlzLl9hYm9ydGVkKXRoaXMuX2hhbmRsZXIocCk7aWYodGhpcy5oYXNGaW5p c2hlZCgpKWlmKHRoaXMuX2lmcmFtZSl7Zy5yZW1vdmUuY3VycnkodGhpcy5faWZy YW1lKS5kZWZlcigpO3RoaXMuX2lmcmFtZT1udWxsO319LGFib3J0OmZ1bmN0aW9u KCl7dGhpcy5fYWJvcnRlZD10cnVlO319KTtlLmV4cG9ydHM9bzt9KTsKX19kKCJG aWxlRm9ybSIsWyJldmVudC1leHRlbnNpb25zIiwiQXJiaXRlck1peGluIiwiQXN5 bmNSZXF1ZXN0IiwiQXN5bmNVcGxvYWRSZXF1ZXN0IiwiQXN5bmNSZXNwb25zZSIs IkJlaGF2aW9yc01peGluIiwiRGF0YVN0b3JlIiwiRE9NUXVlcnkiLCJFbnYiLCJG b3JtIiwiSlNPTlBUcmFuc3BvcnQiLCJQYXJlbnQiLCJVUkkiLCJVc2VyQWdlbnQi LCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVu dC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlck1peGluJyksaD1iKCdBc3lu Y1JlcXVlc3QnKSxpPWIoJ0FzeW5jVXBsb2FkUmVxdWVzdCcpLGo9YignQXN5bmNS ZXNwb25zZScpLGs9YignQmVoYXZpb3JzTWl4aW4nKSxsPWIoJ0RhdGFTdG9yZScp LG09YignRE9NUXVlcnknKSxuPWIoJ0VudicpLG89YignRm9ybScpLHA9YignSlNP TlBUcmFuc3BvcnQnKSxxPWIoJ1BhcmVudCcpLHI9YignVVJJJykscz1iKCdVc2Vy QWdlbnQnKSx0PWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gdSh3KXt2YXIg eD17fSx5PW0uc2NyeSh3LCdpbnB1dFt0eXBlPSJmaWxlIl0nKTt5LmZvckVhY2go ZnVuY3Rpb24oeil7eFt6Lm5hbWVdPXouZmlsZXM7fSk7cmV0dXJuIHg7fWZ1bmN0 aW9uIHYodyx4LHkpe2lmKHcuZ2V0QXR0cmlidXRlKCdyZWwnKT09PSdhc3luYycp dGhyb3cgbmV3IEVycm9yKCdGaWxlRm9ybSBjYW5ub3QgYmUgdXNlZCB3aXRoIFBy aW1lciBmb3Jtcy4nKTtpZih3LmdldEF0dHJpYnV0ZSgnbWV0aG9kJykudG9VcHBl ckNhc2UoKSE9PSdQT1NUJyl0aHJvdyBuZXcgRXJyb3IoJ0ZpbGVGb3JtIG11c3Qg YmUgdXNlZCB3aXRoIFBPU1QgZm9ybXMuJyk7dGhpcy5fZm9ybT13O3RoaXMuX2Zv cm0uZW5jdHlwZT10aGlzLl9mb3JtLmVuY29kaW5nPSdtdWx0aXBhcnQvZm9ybS1k YXRhJzt4JiZ0aGlzLmVuYWJsZUJlaGF2aW9ycyh4KTt0aGlzLl9vcHRpb25zPXl8 fHt9O3RoaXMuc2V0QWxsb3dDcm9zc09yaWdpbih0aGlzLl9vcHRpb25zLmFsbG93 Q3Jvc3NPcmlnaW4pO3RoaXMuc2V0VXBsb2FkSW5QYXJhbGxlbCh0aGlzLl9vcHRp b25zLnVwbG9hZEluUGFyYWxsZWwpO3RoaXMuX2xpc3RlbmVyPUV2ZW50Lmxpc3Rl bih0aGlzLl9mb3JtLCdzdWJtaXQnLHRoaXMuX3N1Ym1pdC5iaW5kKHRoaXMpKTts LnNldCh0aGlzLl9mb3JtLCdGaWxlRm9ybScsdGhpcyk7fXQodix7RVZFTlRTOlsn c3VibWl0JywnaW5pdGlhbCcsJ3Byb2dyZXNzJywnc3VjY2VzcycsJ2ZhaWx1cmUn XSxnZXRJbnN0YW5jZTpmdW5jdGlvbih3KXtyZXR1cm4gbC5nZXQodywnRmlsZUZv cm0nKTt9fSk7dCh2LnByb3RvdHlwZSxnLGsse2dldFJvb3Q6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fZm9ybTt9LHNldEFsbG93Q3Jvc3NPcmlnaW46ZnVuY3Rpb24o dyl7dGhpcy5fYWxsb3dDcm9zc09yaWdpbj0hIXc7cmV0dXJuIHRoaXM7fSxzZXRV cGxvYWRJblBhcmFsbGVsOmZ1bmN0aW9uKHcpe3RoaXMuX3VwbG9hZEluUGFyYWxs ZWw9ISF3O3JldHVybiB0aGlzO30sX3N1Ym1pdDpmdW5jdGlvbihldmVudCl7aWYo dGhpcy5pbmZvcm0oJ3N1Ym1pdCcpPT09ZmFsc2Upe2V2ZW50LnByZXZlbnQoKTty ZXR1cm47fXZhciB3PSdGb3JtRGF0YScgaW4gd2luZG93O2lmKHcpaWYoIXIodGhp cy5fZm9ybS5hY3Rpb24pLmlzU2FtZU9yaWdpbigpJiYhdGhpcy5fYWxsb3dDcm9z c09yaWdpbil3PWZhbHNlO3JldHVybiB3P3RoaXMuX3NlbmRWaWFYSFIoZXZlbnQp OnRoaXMuX3NlbmRWaWFGcmFtZShldmVudCk7fSxfc2VuZFZpYUZyYW1lOmZ1bmN0 aW9uKGV2ZW50KXt2YXIgdz1uZXcgaCgpO3cuc2V0U3RhdHVzRWxlbWVudCh0aGlz Ll9nZXRTdGF0dXNFbGVtZW50KCkpO3cuYWRkU3RhdHVzSW5kaWNhdG9yKCk7dy5z ZXRPcHRpb24oJ3VzZUlmcmFtZVRyYW5zcG9ydCcsdHJ1ZSk7dmFyIHg9dy5oYW5k bGVSZXNwb25zZS5iaW5kKHcpLHk9bmV3IHAoJ2lmcmFtZScsdGhpcy5fZm9ybS5h Y3Rpb24seCksej15LmNyZWF0ZVRyYW5zcG9ydEZyYW1lKCksYWE9eS5nZXRSZXF1 ZXN0VVJJKCkuYWRkUXVlcnlEYXRhKHtfX2lmcmFtZTp0cnVlLF9fdXNlcjpuLnVz ZXJ9KTt0aGlzLl9mb3JtLnNldEF0dHJpYnV0ZSgnYWN0aW9uJyxhYS50b1N0cmlu ZygpKTt0aGlzLl9mb3JtLnNldEF0dHJpYnV0ZSgndGFyZ2V0Jyx6Lm5hbWUpO3cu c2V0VVJJKGFhKTt3LnNldEhhbmRsZXIodGhpcy5zdWNjZXNzLmJpbmQodGhpcyxu dWxsKSk7dy5zZXRFcnJvckhhbmRsZXIodGhpcy5mYWlsdXJlLmJpbmQodGhpcyxu dWxsKSk7dy5zZXRJbml0aWFsSGFuZGxlcih0aGlzLmluaXRpYWwuc2hpZWxkKHRo aXMsbnVsbCkpO30sX3NlbmRWaWFYSFI6ZnVuY3Rpb24oZXZlbnQpe3ZhciB3O2lm KHRoaXMuX3VwbG9hZEluUGFyYWxsZWwmJmkuaXNTdXBwb3J0ZWQoKSl7dz1uZXcg

aSgpLnNldERhdGEoby5zZXJpYWxpemUodGhpcy5fZm9ybSkpLnNldEZpbGVzKHUo dGhpcy5fZm9ybSkpO3ZhciB4PVt3LnN1YnNjcmliZSgncHJvZ3Jlc3MnLGZ1bmN0 aW9uKHkseil7dGhpcy5wcm9ncmVzcyh6LHouZ2V0UHJvZ3Jlc3NFdmVudCgpKTt9 LmJpbmQodGhpcykpLHcuc3Vic2NyaWJlKCdpbml0aWFsJyxmdW5jdGlvbih5LHop e3RoaXMuaW5pdGlhbCh6LHouZ2V0UmVzcG9uc2UoKSk7fS5iaW5kKHRoaXMpKSx3 LnN1YnNjcmliZSgnc3VjY2VzcycsZnVuY3Rpb24oeSx6KXt0aGlzLnN1Y2Nlc3Mo eix6LmdldFJlc3BvbnNlKCkpO30uYmluZCh0aGlzKSksdy5zdWJzY3JpYmUoJ2Zh aWx1cmUnLGZ1bmN0aW9uKHkseil7dGhpcy5mYWlsdXJlKHosei5nZXRSZXNwb25z ZSgpKTtyZXR1cm4gZmFsc2U7fS5iaW5kKHRoaXMpKSx3LnN1YnNjcmliZSgnY29t cGxldGUnLGZ1bmN0aW9uKCl7d2hpbGUoeC5sZW5ndGgpeC5wb3AoKS51bnN1YnNj cmliZSgpO30pXTt9ZWxzZSB3PW5ldyBoKCkuc2V0UmF3RGF0YShvLmNyZWF0ZUZv cm1EYXRhKHRoaXMuX2Zvcm0pKS5zZXRIYW5kbGVyKHRoaXMuc3VjY2Vzcy5iaW5k KHRoaXMsbnVsbCkpLnNldEVycm9ySGFuZGxlcih0aGlzLmZhaWx1cmUuYmluZCh0 aGlzLG51bGwpKS5zZXRVcGxvYWRQcm9ncmVzc0hhbmRsZXIodGhpcy5wcm9ncmVz cy5iaW5kKHRoaXMsbnVsbCkpLnNldEluaXRpYWxIYW5kbGVyKHRoaXMuaW5pdGlh bC5zaGllbGQodGhpcyxudWxsKSk7dy5zZXRBbGxvd0Nyb3NzT3JpZ2luKHRoaXMu X2FsbG93Q3Jvc3NPcmlnaW4pLnNldFJlbGF0aXZlVG8odGhpcy5fZm9ybSkuc2V0 U3RhdHVzRWxlbWVudCh0aGlzLl9nZXRTdGF0dXNFbGVtZW50KCkpLnNldFVSSSh0 aGlzLl9mb3JtLmFjdGlvbikuc2VuZCgpO2V2ZW50LnByZXZlbnQoKTt9LGluaXRp YWw6ZnVuY3Rpb24odyl7cmV0dXJuIHRoaXMuaW5mb3JtKCdpbml0aWFsJyx7dXBs b2FkOnd9KTt9LHN1Y2Nlc3M6ZnVuY3Rpb24odyx4KXt2YXIgeT17cmVzcG9uc2U6 eCx1cGxvYWQ6d307aWYodGhpcy5pbmZvcm0oJ3N1Y2Nlc3MnLHkpIT09ZmFsc2Up RXZlbnQuZmlyZSh0aGlzLl9mb3JtLCdzdWNjZXNzJyx5KTt9LGZhaWx1cmU6ZnVu Y3Rpb24odyx4KXt2YXIgeT17cmVzcG9uc2U6eCx1cGxvYWQ6d307aWYodGhpcy5p bmZvcm0oJ2ZhaWx1cmUnLHkpIT09ZmFsc2UpaWYoRXZlbnQuZmlyZSh0aGlzLl9m b3JtLCdlcnJvcicseSkhPT1mYWxzZSlqLmRlZmF1bHRFcnJvckhhbmRsZXIoeCk7 fSxwcm9ncmVzczpmdW5jdGlvbih3LGV2ZW50KXt0aGlzLmluZm9ybSgncHJvZ3Jl c3MnLHtldmVudDpldmVudCx1cGxvYWQ6d30pO30sZGVzdHJveTpmdW5jdGlvbigp e3RoaXMuX2xpc3RlbmVyLnJlbW92ZSgpO3RoaXMuX2xpc3RlbmVyPW51bGw7aWYo aXNOYU4ocy5pZSgpKXx8KHMuaWUoKT44KSl0aGlzLl9mb3JtLmVuY29kaW5nPW51 bGw7dGhpcy5fZm9ybS5lbmN0eXBlPW51bGw7bC5yZW1vdmUodGhpcy5fZm9ybSwn RmlsZUZvcm0nKTt9LF9nZXRTdGF0dXNFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJu IHEuYnlDbGFzcyh0aGlzLl9mb3JtLCdzdGF0X2VsZW0nKXx8dGhpcy5fZm9ybTt9 fSk7ZS5leHBvcnRzPXY7fSk7Cl9fZCgiZ29PclJlcGxhY2UiLFsiVVJJIiwiVXNl ckFnZW50Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ1VSSScpLGg9 YignVXNlckFnZW50Jyk7ZnVuY3Rpb24gaShqLGssbCl7dmFyIG09bmV3IGcoayk7 aWYoai5wYXRobmFtZT09Jy8nJiZtLmdldFBhdGgoKSE9Jy8nJiZtLmlzUXVpY2ts aW5nRW5hYmxlZCgpKXt2YXIgbj1qLnNlYXJjaD97fTp7cTonJ307bT1uZXcgZygp LnNldFBhdGgoJy8nKS5zZXRRdWVyeURhdGEobikuc2V0RnJhZ21lbnQobS5nZXRV bnF1YWxpZmllZFVSSSgpKS50b1N0cmluZygpO2s9bS50b1N0cmluZygpO31pZihs JiYhKGguaWUoKTw4KSl7ai5yZXBsYWNlKGspO31lbHNlIGlmKGouaHJlZj09ayl7 ai5yZWxvYWQoKTt9ZWxzZSBqLmhyZWY9azt9ZS5leHBvcnRzPWk7fSk7Cl9fZCgi QWpheFBpcGVSZXF1ZXN0IixbIkFyYml0ZXIiLCJBc3luY1JlcXVlc3QiLCJCaWdQ aXBlIiwiRE9NIiwiRW52IiwiSlNDQyIsIlNjcmlwdFBhdGhTdGF0ZSIsImNvcHlQ cm9wZXJ0aWVzIiwiZ29PclJlcGxhY2UiLCJnZSJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBc3luY1JlcXVlc3QnKSxpPWIo J0JpZ1BpcGUnKSxqPWIoJ0RPTScpLGs9YignRW52JyksbD1iKCdKU0NDJyksbT1i KCdTY3JpcHRQYXRoU3RhdGUnKSxuPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbz1iKCdn b09yUmVwbGFjZScpLHA9YignZ2UnKSxxO2Z1bmN0aW9uIHIodSx2KXt2YXIgdz1w KHUpO2lmKHcpe2lmKCF2KXcuc3R5bGUubWluSGVpZ2h0PSc2MDBweCc7Zm9yKHZh ciB4IGluIGkucGFnZWxldElEcylpZih1IT09eCYmai5jb250YWlucyh3LHgpKXtn LmluZm9ybSgnYWpheHBpcGUvY2xlYXJfcGFnZWxldCcse3BhZ2VsZXRfaWQ6eH0p O2wuY2xlYXJGb3JQYWdlbGV0KHgpO2RlbGV0ZSBpLnBhZ2VsZXRJRHNbeF07fWou ZW1wdHkodyk7fX1mdW5jdGlvbiBzKHUsdil7dmFyIHc9cCh1KTtpZih3KWlmKCF2 KXcuc3R5bGUubWluSGVpZ2h0PScxMDBweCc7fWZ1bmN0aW9uIHQodSx2KXt0aGlz Ll91cmk9dTt0aGlzLl9xdWVyeV9kYXRhPXY7dGhpcy5fcmVxdWVzdD1uZXcgaCgp O3RoaXMuX2NhbnZhc19pZD1udWxsO3RoaXMuX2FsbG93X2Nyb3NzX3BhZ2VfdHJh bnNpdGlvbj10cnVlO31uKHQucHJvdG90eXBlLHtzZXRDYW52YXNJZDpmdW5jdGlv bih1KXt0aGlzLl9jYW52YXNfaWQ9dTtyZXR1cm4gdGhpczt9LHNldFVSSTpmdW5j dGlvbih1KXt0aGlzLl91cmk9dTtyZXR1cm4gdGhpczt9LHNldERhdGE6ZnVuY3Rp

b24odSl7dGhpcy5fcXVlcnlfZGF0YT11O3JldHVybiB0aGlzO30sZ2V0RGF0YTpm dW5jdGlvbih1KXtyZXR1cm4gdGhpcy5fcXVlcnlfZGF0YTt9LHNldEFsbG93Q3Jv c3NQYWdlVHJhbnNpdGlvbjpmdW5jdGlvbih1KXt0aGlzLl9hbGxvd19jcm9zc19w YWdlX3RyYW5zaXRpb249dTtyZXR1cm4gdGhpczt9LHNldEFwcGVuZDpmdW5jdGlv bih1KXt0aGlzLl9hcHBlbmQ9dTtyZXR1cm4gdGhpczt9LHNlbmQ6ZnVuY3Rpb24o KXt2YXIgdT17YWpheHBpcGU6MSxhamF4cGlwZV90b2tlbjprLmFqYXhwaXBlX3Rv a2VufTtuKHUsbS5nZXRQYXJhbXMoKSk7bS5yZXNldCgpO2lmKHRoaXMuX3BhZ2Vs ZXRDYWNoZU1pc3MpdS5wY21pc3M9MTt0aGlzLl9yZXF1ZXN0LnNldE9wdGlvbign dXNlSWZyYW1lVHJhbnNwb3J0Jyx0cnVlKS5zZXRVUkkodGhpcy5fdXJpKS5zZXRE YXRhKG4odSx0aGlzLl9xdWVyeV9kYXRhKSkuc2V0UHJlQm9vdGxvYWRIYW5kbGVy KHRoaXMuX3ByZUJvb3Rsb2FkSGFuZGxlci5iaW5kKHRoaXMpKS5zZXRJbml0aWFs SGFuZGxlcih0aGlzLl9vbkluaXRpYWxSZXNwb25zZS5iaW5kKHRoaXMpKS5zZXRI YW5kbGVyKHRoaXMuX29uUmVzcG9uc2UuYmluZCh0aGlzKSkuc2V0TWV0aG9kKCdH RVQnKS5zZXRSZWFkT25seSh0cnVlKS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRp b24odGhpcy5fYWxsb3dfY3Jvc3NfcGFnZV90cmFuc2l0aW9uKTtpZih0aGlzLl9h dXRvbWF0aWMpe3RoaXMuX3JlbGV2YW50UmVxdWVzdD1xO31lbHNlIHE9dGhpcy5f cmVxdWVzdDt0aGlzLl9yZXF1ZXN0LnNlbmQoKTtyZXR1cm4gdGhpczt9LF9wcmVC b290bG9hZEZpcnN0UmVzcG9uc2U6ZnVuY3Rpb24odSl7cmV0dXJuIGZhbHNlO30s X2ZpcmVEb21Db250ZW50Q2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLl9hcmJpdGVy LmluZm9ybSgnYWpheHBpcGUvZG9tY29udGVudF9jYWxsYmFjaycsdHJ1ZSxnLkJF SEFWSU9SX1NUQVRFKTt9LF9maXJlT25sb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oKXt0 aGlzLl9hcmJpdGVyLmluZm9ybSgnYWpheHBpcGUvb25sb2FkX2NhbGxiYWNrJyx0 cnVlLGcuQkVIQVZJT1JfU1RBVEUpO30sX2lzUmVsZXZhbnQ6ZnVuY3Rpb24odSl7 cmV0dXJuIHRoaXMuX3JlcXVlc3Q9PXF8fCh0aGlzLl9hdXRvbWF0aWMmJnRoaXMu X3JlbGV2YW50UmVxdWVzdD09cSl8fHRoaXMuX2pzTm9uQmxvY2t8fHRoaXMuX2Zv cmNlRmluaXNoO30sX3ByZUJvb3Rsb2FkSGFuZGxlcjpmdW5jdGlvbih1KXt2YXIg dj11LmdldFBheWxvYWQoKTtpZighdnx8di5yZWRpcmVjdHx8IXRoaXMuX2lzUmVs ZXZhbnQodSkpcmV0dXJuIGZhbHNlO3ZhciB3PWZhbHNlO2lmKHUuaXNfZmlyc3Qp eyF0aGlzLl9hcHBlbmQmJiF0aGlzLl9kaXNwbGF5Q2FsbGJhY2smJnIodGhpcy5f Y2FudmFzX2lkLHRoaXMuX2NvbnN0SGVpZ2h0KTt0aGlzLl9hcmJpdGVyPW5ldyBn KCk7dz10aGlzLl9wcmVCb290bG9hZEZpcnN0UmVzcG9uc2UodSk7dGhpcy5waXBl PW5ldyBpKHthcmJpdGVyOnRoaXMuX2FyYml0ZXIscm9vdE5vZGVJRDp0aGlzLl9j YW52YXNfaWQsbGlkOnRoaXMuX3JlcXVlc3QubGlkLGlzQWpheDp0cnVlLGRvbUNv bnRlbnRDYWxsYmFjazp0aGlzLl9maXJlRG9tQ29udGVudENhbGxiYWNrLmJpbmQo dGhpcyksb25sb2FkQ2FsbGJhY2s6dGhpcy5fZmlyZU9ubG9hZENhbGxiYWNrLmJp bmQodGhpcyksZG9tQ29udGVudEV2dDonYWpheHBpcGUvZG9tY29udGVudF9jYWxs YmFjaycsb25sb2FkRXZ0OidhamF4cGlwZS9vbmxvYWRfY2FsbGJhY2snLGpzTm9u QmxvY2s6dGhpcy5fanNOb25CbG9jayxmb3JjZUZpbmlzaDp0aGlzLl9mb3JjZUZp bmlzaCxhdXRvbWF0aWM6dGhpcy5fYXV0b21hdGljLGRpc3BsYXlDYWxsYmFjazp0 aGlzLl9kaXNwbGF5Q2FsbGJhY2t9KTt9cmV0dXJuIHc7fSxfcmVkaXJlY3Q6ZnVu Y3Rpb24odSl7aWYodS5yZWRpcmVjdCl7aWYodS5mb3JjZXx8IXRoaXMuaXNQYWdl QWN0aXZlKHUucmVkaXJlY3QpKXt2YXIgdj1bJ2FqYXhwaXBlJywnYWpheHBpcGVf dG9rZW4nXS5jb25jYXQodGhpcy5nZXRTYW5pdGl6ZWRQYXJhbWV0ZXJzKCkpO28o d2luZG93LmxvY2F0aW9uLFVSSSh1LnJlZGlyZWN0KS5yZW1vdmVRdWVyeURhdGEo diksdHJ1ZSk7fWVsc2UgUGFnZVRyYW5zaXRpb25zLmdvKHUucmVkaXJlY3QsdHJ1 ZSk7cmV0dXJuIHRydWU7fWVsc2UgcmV0dXJuIGZhbHNlO30saXNQYWdlQWN0aXZl OmZ1bmN0aW9uKHUpe3JldHVybiB0cnVlO30sZ2V0U2FuaXRpemVkUGFyYW1ldGVy czpmdW5jdGlvbigpe3JldHVybiBbXTt9LF92ZXJzaW9uQ2hlY2s6ZnVuY3Rpb24o dSl7cmV0dXJuIHRydWU7fSxfb25Jbml0aWFsUmVzcG9uc2U6ZnVuY3Rpb24odSl7 dmFyIHY9dS5nZXRQYXlsb2FkKCk7aWYoIXRoaXMuX2lzUmVsZXZhbnQodSkpcmV0 dXJuIGZhbHNlO2lmKCF2KXJldHVybiB0cnVlO2lmKHRoaXMuX3JlZGlyZWN0KHYp fHwhdGhpcy5fdmVyc2lvbkNoZWNrKHYpKXJldHVybiBmYWxzZTtyZXR1cm4gdHJ1 ZTt9LF9wcm9jZXNzRmlyc3RSZXNwb25zZTpmdW5jdGlvbih1KXt2YXIgdj11Lmdl dFBheWxvYWQoKTtpZihwKHRoaXMuX2NhbnZhc19pZCkmJnYuY2FudmFzX2NsYXNz IT09bnVsbClDU1Muc2V0Q2xhc3ModGhpcy5fY2FudmFzX2lkLHYuY2FudmFzX2Ns YXNzKTt9LHNldEZpcnN0UmVzcG9uc2VDYWxsYmFjazpmdW5jdGlvbih1KXt0aGlz Ll9maXJzdFJlc3BvbnNlQ2FsbGJhY2s9dTtyZXR1cm4gdGhpczt9LHNldEZpcnN0 UmVzcG9uc2VIYW5kbGVyOmZ1bmN0aW9uKHUpe3RoaXMuX3Byb2Nlc3NGaXJzdFJl c3BvbnNlPXU7cmV0dXJuIHRoaXM7fSxfb25SZXNwb25zZTpmdW5jdGlvbih1KXt2 YXIgdj11LnBheWxvYWQ7aWYoIXRoaXMuX2lzUmVsZXZhbnQodSkpcmV0dXJuIGgu

c3VwcHJlc3NPbmxvYWRUb2tlbjtpZih1LmlzX2ZpcnN0KXt0aGlzLl9wcm9jZXNz Rmlyc3RSZXNwb25zZSh1KTt0aGlzLl9maXJzdFJlc3BvbnNlQ2FsbGJhY2smJnRo aXMuX2ZpcnN0UmVzcG9uc2VDYWxsYmFjaygpO3YucHJvdmlkZXM9di5wcm92aWRl c3x8W107di5wcm92aWRlcy5wdXNoKCd1aXBhZ2Vfb25sb2FkJyk7aWYodGhpcy5f YXBwZW5kKXYuYXBwZW5kPXRoaXMuX2NhbnZhc19pZDt9aWYodil7aWYoJ2NvbnRl bnQnIGluIHYuY29udGVudCYmdGhpcy5fY2FudmFzX2lkIT09bnVsbCYmdGhpcy5f Y2FudmFzX2lkIT0nY29udGVudCcpe3YuY29udGVudFt0aGlzLl9jYW52YXNfaWRd PXYuY29udGVudC5jb250ZW50O2RlbGV0ZSB2LmNvbnRlbnQuY29udGVudDt9aWYo dGhpcy5fcGFnZWxldENhY2hlTWlzcylpZih1LmlzX2ZpcnN0KXt2LmlkPXRoaXMu X3BhZ2VsZXRDYWNoZU1pc3MuaWQ7di5jYWNoZWFibGU9dHJ1ZTt2LmNhY2hlX2Nv bnRyb2xsZXI9dGhpcy5fcGFnZWxldENhY2hlTWlzcy5jYWNoZV9jb250cm9sbGVy O3YuY2FjaGVfdHlwZT10aGlzLl9wYWdlbGV0Q2FjaGVNaXNzLmNhY2hlX3R5cGU7 di5rZXk9dGhpcy5fcGFnZWxldENhY2hlTWlzcy5rZXk7fWVsc2Ugdi5jYWNoZV9w YXJlbnQ9dGhpcy5fcGFnZWxldENhY2hlTWlzcy5pZDt0aGlzLnBpcGUub25QYWdl bGV0QXJyaXZlKHYpO31pZih1LmlzX2xhc3Qpcyh0aGlzLl9jYW52YXNfaWQsdGhp cy5fY29uc3RIZWlnaHQpO3JldHVybiBoLnN1cHByZXNzT25sb2FkVG9rZW47fSxz ZXROZWN0YXJNb2R1bGVEYXRhU2FmZTpmdW5jdGlvbih1KXt0aGlzLl9yZXF1ZXN0 LnNldE5lY3Rhck1vZHVsZURhdGFTYWZlKHUpO3JldHVybiB0aGlzO30sc2V0Rmlu YWxseUhhbmRsZXI6ZnVuY3Rpb24odSl7dGhpcy5fcmVxdWVzdC5zZXRGaW5hbGx5 SGFuZGxlcih1KTtyZXR1cm4gdGhpczt9LHNldEVycm9ySGFuZGxlcjpmdW5jdGlv bih1KXt0aGlzLl9yZXF1ZXN0LnNldEVycm9ySGFuZGxlcih1KTtyZXR1cm4gdGhp czt9LGFib3J0OmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdC5hYm9ydCgpO2lmKHE9 PXRoaXMuX3JlcXVlc3QpcT1udWxsO3RoaXMuX3JlcXVlc3Q9bnVsbDtyZXR1cm4g dGhpczt9LHNldEpTTm9uQmxvY2s6ZnVuY3Rpb24odSl7dGhpcy5fanNOb25CbG9j az11O3JldHVybiB0aGlzO30sc2V0Rm9yY2VGaW5pc2g6ZnVuY3Rpb24odSl7dGhp cy5fZm9yY2VGaW5pc2g9dTtyZXR1cm4gdGhpczt9LHNldEF1dG9tYXRpYzpmdW5j dGlvbih1KXt0aGlzLl9hdXRvbWF0aWM9dTtyZXR1cm4gdGhpczt9LHNldERpc3Bs YXlDYWxsYmFjazpmdW5jdGlvbih1KXt0aGlzLl9kaXNwbGF5Q2FsbGJhY2s9dTty ZXR1cm4gdGhpczt9LHNldFBhZ2VsZXRDYWNoZU1pc3M6ZnVuY3Rpb24odSl7dGhp cy5fcGFnZWxldENhY2hlTWlzcz11O3JldHVybiB0aGlzO30sc2V0Q29uc3RIZWln aHQ6ZnVuY3Rpb24odSl7dGhpcy5fY29uc3RIZWlnaHQ9dTtyZXR1cm4gdGhpczt9 LGdldEFzeW5jUmVxdWVzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1ZXN0 O319KTtuKHQse2dldEN1cnJlbnRSZXF1ZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHE7 fSxzZXRDdXJyZW50UmVxdWVzdDpmdW5jdGlvbih1KXtxPXU7fX0pO2UuZXhwb3J0 cz10O30pOwpfX2QoIkFuaW1hdGlvbiIsWyJDU1MiLCJET00iLCJTdHlsZSIsIlVz ZXJBZ2VudCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDU1MnKSxo PWIoJ0RPTScpLGk9YignU3R5bGUnKSxqPWIoJ1VzZXJBZ2VudCcpO2Z1bmN0aW9u IGsobCl7aWYoYT09dGhpcyl7cmV0dXJuIG5ldyBrKGwpO31lbHNle3RoaXMub2Jq PWw7dGhpcy5fcmVzZXRfc3RhdGUoKTt0aGlzLnF1ZXVlPVtdO3RoaXMubGFzdF9h dHRyPW51bGw7fX1rLnJlc29sdXRpb249MjA7ay5vZmZzZXQ9MDtrLnByb3RvdHlw ZS5fcmVzZXRfc3RhdGU9ZnVuY3Rpb24oKXt0aGlzLnN0YXRlPXthdHRyczp7fSxk dXJhdGlvbjo1MDB9O307ay5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMu X3Jlc2V0X3N0YXRlKCk7dGhpcy5xdWV1ZT1bXTtyZXR1cm4gdGhpczt9O2sucHJv dG90eXBlLl9idWlsZF9jb250YWluZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmNvbnRh aW5lcl9kaXYpe3RoaXMuX3JlZnJlc2hfY29udGFpbmVyKCk7cmV0dXJuO31pZih0 aGlzLm9iai5maXJzdENoaWxkJiZ0aGlzLm9iai5maXJzdENoaWxkLl9fYW5pbWF0 aW9uX3JlZnMpe3RoaXMuY29udGFpbmVyX2Rpdj10aGlzLm9iai5maXJzdENoaWxk O3RoaXMuY29udGFpbmVyX2Rpdi5fX2FuaW1hdGlvbl9yZWZzKys7dGhpcy5fcmVm cmVzaF9jb250YWluZXIoKTtyZXR1cm47fXZhciBsPWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ2RpdicpO2wuc3R5bGUucGFkZGluZz0nMHB4JztsLnN0eWxlLm1hcmdp bj0nMHB4JztsLnN0eWxlLmJvcmRlcj0nMHB4JztsLl9fYW5pbWF0aW9uX3JlZnM9 MTt2YXIgbT10aGlzLm9iai5jaGlsZE5vZGVzO3doaWxlKG0ubGVuZ3RoKWwuYXBw ZW5kQ2hpbGQobVswXSk7dGhpcy5vYmouYXBwZW5kQ2hpbGQobCk7dGhpcy5fb3Jp Z19vdmVyZmxvdz10aGlzLm9iai5zdHlsZS5vdmVyZmxvdzt0aGlzLm9iai5zdHls ZS5vdmVyZmxvdz0naGlkZGVuJzt0aGlzLmNvbnRhaW5lcl9kaXY9bDt0aGlzLl9y ZWZyZXNoX2NvbnRhaW5lcigpO307ay5wcm90b3R5cGUuX3JlZnJlc2hfY29udGFp bmVyPWZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJfZGl2LnN0eWxlLmhlaWdodD0n YXV0byc7dGhpcy5jb250YWluZXJfZGl2LnN0eWxlLndpZHRoPSdhdXRvJzt0aGlz LmNvbnRhaW5lcl9kaXYuc3R5bGUuaGVpZ2h0PXRoaXMuY29udGFpbmVyX2Rpdi5v ZmZzZXRIZWlnaHQrJ3B4Jzt0aGlzLmNvbnRhaW5lcl9kaXYuc3R5bGUud2lkdGg9

dGhpcy5jb250YWluZXJfZGl2Lm9mZnNldFdpZHRoKydweCc7fTtrLnByb3RvdHlw ZS5fZGVzdHJveV9jb250YWluZXI9ZnVuY3Rpb24oKXtpZighdGhpcy5jb250YWlu ZXJfZGl2KXJldHVybjtpZighLS10aGlzLmNvbnRhaW5lcl9kaXYuX19hbmltYXRp b25fcmVmcyl7dmFyIGw9dGhpcy5jb250YWluZXJfZGl2LmNoaWxkTm9kZXM7d2hp bGUobC5sZW5ndGgpdGhpcy5vYmouYXBwZW5kQ2hpbGQobFswXSk7dGhpcy5vYmou cmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXJfZGl2KTt9dGhpcy5jb250YWluZXJf ZGl2PW51bGw7dGhpcy5vYmouc3R5bGUub3ZlcmZsb3c9dGhpcy5fb3JpZ19vdmVy Zmxvdzt9O2suQVRUUl9UTz0xO2suQVRUUl9CWT0yO2suQVRUUl9GUk9NPTM7ay5w cm90b3R5cGUuX2F0dHI9ZnVuY3Rpb24obCxtLG4pe2w9bC5yZXBsYWNlKC8tW2Et el0vZ2ksZnVuY3Rpb24ocCl7cmV0dXJuIHAuc3Vic3RyaW5nKDEpLnRvVXBwZXJD YXNlKCk7fSk7dmFyIG89ZmFsc2U7c3dpdGNoKGwpe2Nhc2UgJ2JhY2tncm91bmQn OnRoaXMuX2F0dHIoJ2JhY2tncm91bmRDb2xvcicsbSxuKTtyZXR1cm4gdGhpcztj YXNlICdtYXJnaW4nOm09ay5wYXJzZV9ncm91cChtKTt0aGlzLl9hdHRyKCdtYXJn aW5Cb3R0b20nLG1bMF0sbik7dGhpcy5fYXR0cignbWFyZ2luTGVmdCcsbVsxXSxu KTt0aGlzLl9hdHRyKCdtYXJnaW5SaWdodCcsbVsyXSxuKTt0aGlzLl9hdHRyKCdt YXJnaW5Ub3AnLG1bM10sbik7cmV0dXJuIHRoaXM7Y2FzZSAncGFkZGluZyc6bT1r LnBhcnNlX2dyb3VwKG0pO3RoaXMuX2F0dHIoJ3BhZGRpbmdCb3R0b20nLG1bMF0s bik7dGhpcy5fYXR0cigncGFkZGluZ0xlZnQnLG1bMV0sbik7dGhpcy5fYXR0cign cGFkZGluZ1JpZ2h0JyxtWzJdLG4pO3RoaXMuX2F0dHIoJ3BhZGRpbmdUb3AnLG1b M10sbik7cmV0dXJuIHRoaXM7Y2FzZSAnYmFja2dyb3VuZENvbG9yJzpjYXNlICdi b3JkZXJDb2xvcic6Y2FzZSAnY29sb3InOm09ay5wYXJzZV9jb2xvcihtKTticmVh aztjYXNlICdvcGFjaXR5JzptPXBhcnNlRmxvYXQobSwxMCk7YnJlYWs7Y2FzZSAn aGVpZ2h0JzpjYXNlICd3aWR0aCc6aWYobT09J2F1dG8nKXtvPXRydWU7fWVsc2Ug bT1wYXJzZUludChtLDEwKTticmVhaztjYXNlICdib3JkZXJXaWR0aCc6Y2FzZSAn bGluZUhlaWdodCc6Y2FzZSAnZm9udFNpemUnOmNhc2UgJ21hcmdpbkJvdHRvbSc6 Y2FzZSAnbWFyZ2luTGVmdCc6Y2FzZSAnbWFyZ2luUmlnaHQnOmNhc2UgJ21hcmdp blRvcCc6Y2FzZSAncGFkZGluZ0JvdHRvbSc6Y2FzZSAncGFkZGluZ0xlZnQnOmNh c2UgJ3BhZGRpbmdSaWdodCc6Y2FzZSAncGFkZGluZ1RvcCc6Y2FzZSAnYm90dG9t JzpjYXNlICdsZWZ0JzpjYXNlICdyaWdodCc6Y2FzZSAndG9wJzpjYXNlICdzY3Jv bGxUb3AnOmNhc2UgJ3Njcm9sbExlZnQnOm09cGFyc2VJbnQobSwxMCk7YnJlYWs7 ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IobCsnIGlzIG5vdCBhIHN1cHBvcnRlZCBh dHRyaWJ1dGUhJyk7fWlmKHRoaXMuc3RhdGUuYXR0cnNbbF09PT11bmRlZmluZWQp dGhpcy5zdGF0ZS5hdHRyc1tsXT17fTtpZihvKXRoaXMuc3RhdGUuYXR0cnNbbF0u YXV0bz10cnVlO3N3aXRjaChuKXtjYXNlIGsuQVRUUl9GUk9NOnRoaXMuc3RhdGUu YXR0cnNbbF0uc3RhcnQ9bTticmVhaztjYXNlIGsuQVRUUl9CWTp0aGlzLnN0YXRl LmF0dHJzW2xdLmJ5PXRydWU7Y2FzZSBrLkFUVFJfVE86dGhpcy5zdGF0ZS5hdHRy c1tsXS52YWx1ZT1tO2JyZWFrO319O2suX2dldF9ib3hfd2lkdGg9ZnVuY3Rpb24o bCl7dmFyIG09cGFyc2VJbnQoaS5nZXQobCwncGFkZGluZ0xlZnQnKSwxMCksbj1w YXJzZUludChpLmdldChsLCdwYWRkaW5nUmlnaHQnKSwxMCksbz1wYXJzZUludChp LmdldChsLCdib3JkZXJMZWZ0V2lkdGgnKSwxMCkscD1wYXJzZUludChpLmdldChs LCdib3JkZXJSaWdodFdpZHRoJyksMTApO3JldHVybiBsLm9mZnNldFdpZHRoLSht P206MCktKG4/bjowKS0obz9vOjApLShwP3A6MCk7fTtrLl9nZXRfYm94X2hlaWdo dD1mdW5jdGlvbihsKXt2YXIgbT1wYXJzZUludChpLmdldChsLCdwYWRkaW5nVG9w JyksMTApLG49cGFyc2VJbnQoaS5nZXQobCwncGFkZGluZ0JvdHRvbScpLDEwKSxv PXBhcnNlSW50KGkuZ2V0KGwsJ2JvcmRlclRvcFdpZHRoJyksMTApLHA9cGFyc2VJ bnQoaS5nZXQobCwnYm9yZGVyQm90dG9tV2lkdGgnKSwxMCk7cmV0dXJuIGwub2Zm c2V0SGVpZ2h0LShtP206MCktKG4/bjowKS0obz9vOjApLShwP3A6MCk7fTtrLnBy b3RvdHlwZS50bz1mdW5jdGlvbihsLG0pe2lmKG09PT11bmRlZmluZWQpe3RoaXMu X2F0dHIodGhpcy5sYXN0X2F0dHIsbCxrLkFUVFJfVE8pO31lbHNle3RoaXMuX2F0 dHIobCxtLGsuQVRUUl9UTyk7dGhpcy5sYXN0X2F0dHI9bDt9cmV0dXJuIHRoaXM7 fTtrLnByb3RvdHlwZS5ieT1mdW5jdGlvbihsLG0pe2lmKG09PT11bmRlZmluZWQp e3RoaXMuX2F0dHIodGhpcy5sYXN0X2F0dHIsbCxrLkFUVFJfQlkpO31lbHNle3Ro aXMuX2F0dHIobCxtLGsuQVRUUl9CWSk7dGhpcy5sYXN0X2F0dHI9bDt9cmV0dXJu IHRoaXM7fTtrLnByb3RvdHlwZS5mcm9tPWZ1bmN0aW9uKGwsbSl7aWYobT09PXVu ZGVmaW5lZCl7dGhpcy5fYXR0cih0aGlzLmxhc3RfYXR0cixsLGsuQVRUUl9GUk9N KTt9ZWxzZXt0aGlzLl9hdHRyKGwsbSxrLkFUVFJfRlJPTSk7dGhpcy5sYXN0X2F0 dHI9bDt9cmV0dXJuIHRoaXM7fTtrLnByb3RvdHlwZS5kdXJhdGlvbj1mdW5jdGlv bihsKXt0aGlzLnN0YXRlLmR1cmF0aW9uPWw/bDowO3JldHVybiB0aGlzO307ay5w cm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbihsLG0pe2lmKGw9PT11bmRlZmlu ZWQpbD0xO3RoaXMuc3RhdGUuY2hlY2twb2ludD1sO3RoaXMucXVldWUucHVzaCh0

aGlzLnN0YXRlKTt0aGlzLl9yZXNldF9zdGF0ZSgpO3RoaXMuc3RhdGUuY2hlY2tw b2ludGNiPW07cmV0dXJuIHRoaXM7fTtrLnByb3RvdHlwZS5ibGluZD1mdW5jdGlv bigpe3RoaXMuc3RhdGUuYmxpbmQ9dHJ1ZTtyZXR1cm4gdGhpczt9O2sucHJvdG90 eXBlLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmhpZGU9dHJ1ZTtyZXR1cm4g dGhpczt9O2sucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLnNo b3c9dHJ1ZTtyZXR1cm4gdGhpczt9O2sucHJvdG90eXBlLmVhc2U9ZnVuY3Rpb24o bCl7dGhpcy5zdGF0ZS5lYXNlPWw7cmV0dXJuIHRoaXM7fTtrLnByb3RvdHlwZS5n bz1mdW5jdGlvbigpe3ZhciBsPShuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7dGhpcy5x dWV1ZS5wdXNoKHRoaXMuc3RhdGUpO2Zvcih2YXIgbT0wO208dGhpcy5xdWV1ZS5s ZW5ndGg7bSsrKXt0aGlzLnF1ZXVlW21dLnN0YXJ0PWwtay5vZmZzZXQ7aWYodGhp cy5xdWV1ZVttXS5jaGVja3BvaW50KWwrPXRoaXMucXVldWVbbV0uY2hlY2twb2lu dCp0aGlzLnF1ZXVlW21dLmR1cmF0aW9uO31rLnB1c2godGhpcyk7cmV0dXJuIHRo aXM7fTtrLnByb3RvdHlwZS5fc2hvdz1mdW5jdGlvbigpe2cuc2hvdyh0aGlzLm9i aik7fTtrLnByb3RvdHlwZS5faGlkZT1mdW5jdGlvbigpe2cuaGlkZSh0aGlzLm9i aik7fTtrLnByb3RvdHlwZS5fZnJhbWU9ZnVuY3Rpb24obCl7dmFyIG09dHJ1ZSxu PWZhbHNlLG89ZmFsc2UscDtmdW5jdGlvbiBxKGFhKXtyZXR1cm4gZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50W2FhXXx8ZG9jdW1lbnQuYm9keVthYV07fWZvcih2YXIg cj0wO3I8dGhpcy5xdWV1ZS5sZW5ndGg7cisrKXt2YXIgcz10aGlzLnF1ZXVlW3Jd O2lmKHMuc3RhcnQ+bCl7bT1mYWxzZTtjb250aW51ZTt9aWYocy5jaGVja3BvaW50 Y2Ipe3RoaXMuX2NhbGxiYWNrKHMuY2hlY2twb2ludGNiLGwtcy5zdGFydCk7cy5j aGVja3BvaW50Y2I9bnVsbDt9aWYocy5zdGFydGVkPT09dW5kZWZpbmVkKXtpZihz LnNob3cpdGhpcy5fc2hvdygpO2Zvcih2YXIgdCBpbiBzLmF0dHJzKXtpZihzLmF0 dHJzW3RdLnN0YXJ0IT09dW5kZWZpbmVkKWNvbnRpbnVlO3N3aXRjaCh0KXtjYXNl ICdiYWNrZ3JvdW5kQ29sb3InOmNhc2UgJ2JvcmRlckNvbG9yJzpjYXNlICdjb2xv cic6cD1rLnBhcnNlX2NvbG9yKGkuZ2V0KHRoaXMub2JqLHQ9PSdib3JkZXJDb2xv cic/J2JvcmRlckxlZnRDb2xvcic6dCkpO2lmKHMuYXR0cnNbdF0uYnkpe3MuYXR0 cnNbdF0udmFsdWVbMF09TWF0aC5taW4oMjU1LE1hdGgubWF4KDAscy5hdHRyc1t0 XS52YWx1ZVswXStwWzBdKSk7cy5hdHRyc1t0XS52YWx1ZVsxXT1NYXRoLm1pbigy NTUsTWF0aC5tYXgoMCxzLmF0dHJzW3RdLnZhbHVlWzFdK3BbMV0pKTtzLmF0dHJz W3RdLnZhbHVlWzJdPU1hdGgubWluKDI1NSxNYXRoLm1heCgwLHMuYXR0cnNbdF0u dmFsdWVbMl0rcFsyXSkpO31icmVhaztjYXNlICdvcGFjaXR5JzpwPWkuZ2V0T3Bh Y2l0eSh0aGlzLm9iaik7aWYocy5hdHRyc1t0XS5ieSlzLmF0dHJzW3RdLnZhbHVl PU1hdGgubWluKDEsTWF0aC5tYXgoMCxzLmF0dHJzW3RdLnZhbHVlK3ApKTticmVh aztjYXNlICdoZWlnaHQnOnA9ay5fZ2V0X2JveF9oZWlnaHQodGhpcy5vYmopO2lm KHMuYXR0cnNbdF0uYnkpcy5hdHRyc1t0XS52YWx1ZSs9cDticmVhaztjYXNlICd3 aWR0aCc6cD1rLl9nZXRfYm94X3dpZHRoKHRoaXMub2JqKTtpZihzLmF0dHJzW3Rd LmJ5KXMuYXR0cnNbdF0udmFsdWUrPXA7YnJlYWs7Y2FzZSAnc2Nyb2xsTGVmdCc6 Y2FzZSAnc2Nyb2xsVG9wJzpwPSh0aGlzLm9iaj09PWRvY3VtZW50LmJvZHkpP3Eo dCk6dGhpcy5vYmpbdF07aWYocy5hdHRyc1t0XS5ieSlzLmF0dHJzW3RdLnZhbHVl Kz1wO3NbJ2xhc3QnK3RdPXA7YnJlYWs7ZGVmYXVsdDpwPXBhcnNlSW50KGkuZ2V0 KHRoaXMub2JqLHQpLDEwKXx8MDtpZihzLmF0dHJzW3RdLmJ5KXMuYXR0cnNbdF0u dmFsdWUrPXA7YnJlYWs7fXMuYXR0cnNbdF0uc3RhcnQ9cDt9aWYoKHMuYXR0cnMu aGVpZ2h0JiZzLmF0dHJzLmhlaWdodC5hdXRvKXx8KHMuYXR0cnMud2lkdGgmJnMu YXR0cnMud2lkdGguYXV0bykpe2lmKGouZmlyZWZveCgpPDMpbz10cnVlO3RoaXMu X2Rlc3Ryb3lfY29udGFpbmVyKCk7Zm9yKHZhciB0IGluIHtoZWlnaHQ6MSx3aWR0 aDoxLGZvbnRTaXplOjEsYm9yZGVyTGVmdFdpZHRoOjEsYm9yZGVyUmlnaHRXaWR0 aDoxLGJvcmRlclRvcFdpZHRoOjEsYm9yZGVyQm90dG9tV2lkdGg6MSxwYWRkaW5n TGVmdDoxLHBhZGRpbmdSaWdodDoxLHBhZGRpbmdUb3A6MSxwYWRkaW5nQm90dG9t OjF9KWlmKHMuYXR0cnNbdF0pdGhpcy5vYmouc3R5bGVbdF09cy5hdHRyc1t0XS52 YWx1ZSsodHlwZW9mIHMuYXR0cnNbdF0udmFsdWU9PSdudW1iZXInPydweCc6Jycp O2lmKHMuYXR0cnMuaGVpZ2h0JiZzLmF0dHJzLmhlaWdodC5hdXRvKXMuYXR0cnMu aGVpZ2h0LnZhbHVlPWsuX2dldF9ib3hfaGVpZ2h0KHRoaXMub2JqKTtpZihzLmF0 dHJzLndpZHRoJiZzLmF0dHJzLndpZHRoLmF1dG8pcy5hdHRycy53aWR0aC52YWx1 ZT1rLl9nZXRfYm94X3dpZHRoKHRoaXMub2JqKTt9cy5zdGFydGVkPXRydWU7aWYo cy5ibGluZCl0aGlzLl9idWlsZF9jb250YWluZXIoKTt9dmFyIHU9KGwtcy5zdGFy dCkvcy5kdXJhdGlvbjtpZih1Pj0xKXt1PTE7aWYocy5oaWRlKXRoaXMuX2hpZGUo KTt9ZWxzZSBtPWZhbHNlO3ZhciB2PXMuZWFzZT9zLmVhc2UodSk6dTtpZighbiYm dSE9MSYmcy5ibGluZCluPXRydWU7aWYobyYmdGhpcy5vYmoucGFyZW50Tm9kZSl7 dmFyIHc9dGhpcy5vYmoucGFyZW50Tm9kZSx4PXRoaXMub2JqLm5leHRTaWJsaW5n O3cucmVtb3ZlQ2hpbGQodGhpcy5vYmopO31mb3IodmFyIHQgaW4gcy5hdHRycylz

d2l0Y2godCl7Y2FzZSAnYmFja2dyb3VuZENvbG9yJzpjYXNlICdib3JkZXJDb2xv cic6Y2FzZSAnY29sb3InOmlmKHMuYXR0cnNbdF0uc3RhcnRbM10hPXMuYXR0cnNb dF0udmFsdWVbM10pe3RoaXMub2JqLnN0eWxlW3RdPSdyZ2JhKCcray5jYWxjX3R3 ZWVuKHYscy5hdHRyc1t0XS5zdGFydFswXSxzLmF0dHJzW3RdLnZhbHVlWzBdLHRy dWUpKycsJytrLmNhbGNfdHdlZW4odixzLmF0dHJzW3RdLnN0YXJ0WzFdLHMuYXR0 cnNbdF0udmFsdWVbMV0sdHJ1ZSkrJywnK2suY2FsY190d2Vlbih2LHMuYXR0cnNb dF0uc3RhcnRbMl0scy5hdHRyc1t0XS52YWx1ZVsyXSx0cnVlKSsnLCcray5jYWxj X3R3ZWVuKHYscy5hdHRyc1t0XS5zdGFydFszXSxzLmF0dHJzW3RdLnZhbHVlWzNd LGZhbHNlKSsnKSc7fWVsc2UgdGhpcy5vYmouc3R5bGVbdF09J3JnYignK2suY2Fs Y190d2Vlbih2LHMuYXR0cnNbdF0uc3RhcnRbMF0scy5hdHRyc1t0XS52YWx1ZVsw XSx0cnVlKSsnLCcray5jYWxjX3R3ZWVuKHYscy5hdHRyc1t0XS5zdGFydFsxXSxz LmF0dHJzW3RdLnZhbHVlWzFdLHRydWUpKycsJytrLmNhbGNfdHdlZW4odixzLmF0 dHJzW3RdLnN0YXJ0WzJdLHMuYXR0cnNbdF0udmFsdWVbMl0sdHJ1ZSkrJyknO2Jy ZWFrO2Nhc2UgJ29wYWNpdHknOmkuc2V0KHRoaXMub2JqLCdvcGFjaXR5JyxrLmNh bGNfdHdlZW4odixzLmF0dHJzW3RdLnN0YXJ0LHMuYXR0cnNbdF0udmFsdWUpKTti cmVhaztjYXNlICdoZWlnaHQnOmNhc2UgJ3dpZHRoJzp0aGlzLm9iai5zdHlsZVt0 XT12PT0xJiZzLmF0dHJzW3RdLmF1dG8/J2F1dG8nOmsuY2FsY190d2Vlbih2LHMu YXR0cnNbdF0uc3RhcnQscy5hdHRyc1t0XS52YWx1ZSx0cnVlKSsncHgnO2JyZWFr O2Nhc2UgJ3Njcm9sbExlZnQnOmNhc2UgJ3Njcm9sbFRvcCc6dmFyIHk9dGhpcy5v Ymo9PT1kb2N1bWVudC5ib2R5O3A9eT9xKHQpOnRoaXMub2JqW3RdO2lmKHNbJ2xh c3QnK3RdIT09cCl7ZGVsZXRlIHMuYXR0cnNbdF07fWVsc2V7dmFyIHo9ay5jYWxj X3R3ZWVuKHYscy5hdHRyc1t0XS5zdGFydCxzLmF0dHJzW3RdLnZhbHVlLHRydWUp O2lmKCF5KXt6PXRoaXMub2JqW3RdPXo7fWVsc2V7aWYodD09J3Njcm9sbExlZnQn KXthLnNjcm9sbFRvKHoscSgnc2Nyb2xsVG9wJykpO31lbHNlIGEuc2Nyb2xsVG8o cSgnc2Nyb2xsTGVmdCcpLHopO3o9cSh0KTt9c1snbGFzdCcrdF09ejt9YnJlYWs7 ZGVmYXVsdDp0aGlzLm9iai5zdHlsZVt0XT1rLmNhbGNfdHdlZW4odixzLmF0dHJz W3RdLnN0YXJ0LHMuYXR0cnNbdF0udmFsdWUsdHJ1ZSkrJ3B4JzticmVhazt9aWYo dT09MSl7dGhpcy5xdWV1ZS5zcGxpY2Uoci0tLDEpO3RoaXMuX2NhbGxiYWNrKHMu b25kb25lLGwtcy5zdGFydC1zLmR1cmF0aW9uKTt9fWlmKG8pd1t4PydpbnNlcnRC ZWZvcmUnOidhcHBlbmRDaGlsZCddKHRoaXMub2JqLHgpO2lmKCFuJiZ0aGlzLmNv bnRhaW5lcl9kaXYpdGhpcy5fZGVzdHJveV9jb250YWluZXIoKTtyZXR1cm4gIW07 fTtrLnByb3RvdHlwZS5vbmRvbmU9ZnVuY3Rpb24obCl7dGhpcy5zdGF0ZS5vbmRv bmU9bDtyZXR1cm4gdGhpczt9O2sucHJvdG90eXBlLl9jYWxsYmFjaz1mdW5jdGlv bihsLG0pe2lmKGwpe2sub2Zmc2V0PW07bC5jYWxsKHRoaXMpO2sub2Zmc2V0PTA7 fX07ay5jYWxjX3R3ZWVuPWZ1bmN0aW9uKGwsbSxuLG8pe3JldHVybiAobz9wYXJz ZUludDpwYXJzZUZsb2F0KSgobi1tKSpsK20sMTApO307ay5wYXJzZV9jb2xvcj1m dW5jdGlvbihsKXt2YXIgbT0vXiMoW2EtZjAtOV17MSwyfSkoW2EtZjAtOV17MSwy fSkoW2EtZjAtOV17MSwyfSkkL2kuZXhlYyhsKTtpZihtKXtyZXR1cm4gW3BhcnNl SW50KG1bMV0ubGVuZ3RoPT0xP21bMV0rbVsxXTptWzFdLDE2KSxwYXJzZUludCht WzJdLmxlbmd0aD09MT9tWzJdK21bMl06bVsyXSwxNikscGFyc2VJbnQobVszXS5s ZW5ndGg9PTE/bVszXSttWzNdOm1bM10sMTYpLDFdO31lbHNle3ZhciBuPS9ecmdi YT8gKlwoKFswLTldKyksICooWzAtOV0rKSwgKihbMC05XSspKD86LCAqKFswLTld KykpP1wpJC8uZXhlYyhsKTtpZihuKXtyZXR1cm4gW3BhcnNlSW50KG5bMV0sMTAp LHBhcnNlSW50KG5bMl0sMTApLHBhcnNlSW50KG5bM10sMTApLG5bNF0/cGFyc2VG bG9hdChuWzRdKToxXTt9ZWxzZSBpZihsPT0ndHJhbnNwYXJlbnQnKXtyZXR1cm4g WzI1NSwyNTUsMjU1LDBdO31lbHNlIHRocm93ICdOYW1lZCBjb2xvciBhdHRyaWJ1 dGVzIGFyZSBub3Qgc3VwcG9ydGVkLic7fX07ay5wYXJzZV9ncm91cD1mdW5jdGlv bihsKXtsPWwudHJpbSgpLnNwbGl0KC8gKy8pO2lmKGwubGVuZ3RoPT00KXtyZXR1 cm4gbDt9ZWxzZSBpZihsLmxlbmd0aD09Myl7cmV0dXJuIFtsWzBdLGxbMV0sbFsy XSxsWzFdXTt9ZWxzZSBpZihsLmxlbmd0aD09Mil7cmV0dXJuIFtsWzBdLGxbMV0s bFswXSxsWzFdXTt9ZWxzZSByZXR1cm4gW2xbMF0sbFswXSxsWzBdLGxbMF1dO307 ay5wdXNoPWZ1bmN0aW9uKGwpe2lmKCFrLmFjdGl2ZSlrLmFjdGl2ZT1bXTtrLmFj dGl2ZS5wdXNoKGwpO2lmKGsuYWN0aXZlLmxlbmd0aD09PTEpe2lmKCFrLnJlcXVl c3RBbmltYXRpb25GcmFtZSl7dmFyIG09YS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8 fGEud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxhLm1velJlcXVlc3RBbmlt YXRpb25GcmFtZTtpZihtKWsucmVxdWVzdEFuaW1hdGlvbkZyYW1lPW0uYmluZChh KTt9aWYoay5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpe2sucmVxdWVzdEFuaW1hdGlv bkZyYW1lKGsuX2FuaW1hdGUpO31lbHNlIGsudGltZW91dD1zZXRJbnRlcnZhbChr Ll9hbmltYXRlLGsucmVzb2x1dGlvbixmYWxzZSk7fWlmKGsucmVxdWVzdEFuaW1h dGlvbkZyYW1lKWsuX3VwZGF0ZUVuZGluZ1RpbWVyKCk7ay5fYW5pbWF0ZShEYXRl

Lm5vdygpLHRydWUpO307ay5fdXBkYXRlRW5kaW5nVGltZXI9ZnVuY3Rpb24oKXtp Zighay5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpdGhyb3cgbmV3IEVycm9yKCdFbmRp bmcgdGltZXIgb25seSB2YWxpZCB3aXRoIHJlcXVlc3RBbmltYXRpb25GcmFtZScp O3ZhciBsPTA7Zm9yKHZhciBtPTA7bTxrLmFjdGl2ZS5sZW5ndGg7bSsrKXt2YXIg bj1rLmFjdGl2ZVttXTtmb3IodmFyIG89MDtvPG4ucXVldWUubGVuZ3RoO28rKyl7 dmFyIHA9bi5xdWV1ZVtvXS5zdGFydCtuLnF1ZXVlW29dLmR1cmF0aW9uO2lmKHA+ bClsPXA7fX1pZihrLnRpbWVvdXQpe2NsZWFyVGltZW91dChrLnRpbWVvdXQpO2Rl bGV0ZSBrLnRpbWVvdXQ7fXZhciBxPURhdGUubm93KCk7aWYobD5xKWsudGltZW91 dD1zZXRUaW1lb3V0KGsuX2FuaW1hdGUuc2hpZWxkKCksbC1xLGZhbHNlKTt9O2su X2FuaW1hdGU9ZnVuY3Rpb24obCxtKXtsPWx8fERhdGUubm93KCk7Zm9yKHZhciBu PShtPT09dHJ1ZSk/ay5hY3RpdmUubGVuZ3RoLTE6MDtuPGsuYWN0aXZlLmxlbmd0 aDtuKyspdHJ5e2lmKCFrLmFjdGl2ZVtuXS5fZnJhbWUobCkpay5hY3RpdmUuc3Bs aWNlKG4tLSwxKTt9Y2F0Y2gobyl7ay5hY3RpdmUuc3BsaWNlKG4tLSwxKTt9aWYo ay5hY3RpdmUubGVuZ3RoPT09MCl7aWYoay50aW1lb3V0KXtpZihrLnJlcXVlc3RB bmltYXRpb25GcmFtZSl7Y2xlYXJUaW1lb3V0KGsudGltZW91dCk7fWVsc2UgY2xl YXJJbnRlcnZhbChrLnRpbWVvdXQpO2RlbGV0ZSBrLnRpbWVvdXQ7fX1lbHNlIGlm KGsucmVxdWVzdEFuaW1hdGlvbkZyYW1lKWsucmVxdWVzdEFuaW1hdGlvbkZyYW1l KGsuX2FuaW1hdGUpO307ay5lYXNlPXt9O2suZWFzZS5iZWdpbj1mdW5jdGlvbihs KXtyZXR1cm4gTWF0aC5zaW4oTWF0aC5QSS8yKihsLTEpKSsxO307ay5lYXNlLmVu ZD1mdW5jdGlvbihsKXtyZXR1cm4gTWF0aC5zaW4oLjUqTWF0aC5QSSpsKTt9O2su ZWFzZS5ib3RoPWZ1bmN0aW9uKGwpe3JldHVybiAuNSpNYXRoLnNpbihNYXRoLlBJ KihsLS41KSkrLjU7fTtrLnByZXBlbmRJbnNlcnQ9ZnVuY3Rpb24obCxtKXtrLmlu c2VydChsLG0saC5wcmVwZW5kQ29udGVudCk7fTtrLmFwcGVuZEluc2VydD1mdW5j dGlvbihsLG0pe2suaW5zZXJ0KGwsbSxoLmFwcGVuZENvbnRlbnQpO307ay5pbnNl cnQ9ZnVuY3Rpb24obCxtLG4pe2kuc2V0KG0sJ29wYWNpdHknLDApO24obCxtKTtu ZXcgayhtKS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3BhY2l0eScsMSkuZHVyYXRp b24oNDAwKS5nbygpO307ZS5leHBvcnRzPWs7fSk7Cl9fZCgiQ1NTU3VwcG9ydCIs W10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXtzdXBwb3J0c0JvcmRlclJh ZGl1czpmdW5jdGlvbigpe3ZhciBoPVsnS2h0bWxCb3JkZXJSYWRpdXMnLCdPQm9y ZGVyUmFkaXVzJywnTW96Qm9yZGVyUmFkaXVzJywnV2Via2l0Qm9yZGVyUmFkaXVz JywnbXNCb3JkZXJSYWRpdXMnLCdib3JkZXJSYWRpdXMnXSxpPWZhbHNlLGo9ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Zm9yKHZhciBrPWgubGVuZ3RoO2s+ PTA7ay0tKWlmKGk9ai5zdHlsZVtoW2tdXSE9PXVuZGVmaW5lZClicmVhaztnLnN1 cHBvcnRzQm9yZGVyUmFkaXVzPWJhZ29mKGkpO3JldHVybiBpO319O2UuZXhwb3J0 cz1nO30pOwpfX2QoIktleXMiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz17QkFDS1NQQUNFOjgsVEFCOjksUkVUVVJOOjEzLEVTQzoyNyxTUEFDRTozMixQ QUdFX1VQOjMzLFBBR0VfRE9XTjozNCxFTkQ6MzUsSE9NRTozNixMRUZUOjM3LFVQ OjM4LFJJR0hUOjM5LERPV046NDAsREVMRVRFOjQ2LENPTU1BOjE4OH07ZS5leHBv cnRzPWc7fSk7Cl9fZCgiTG9jYWxlIixbIlN0eWxlIl0sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe3ZhciBnPWIoJ1N0eWxlJyksaCxpPXtpc1JUTDpmdW5jdGlvbigpe2lm KGg9PT11bmRlZmluZWQpaD0oJ3J0bCc9PT1nLmdldChkb2N1bWVudC5ib2R5LCdk aXJlY3Rpb24nKSk7cmV0dXJuIGg7fX07ZS5leHBvcnRzPWk7fSk7Cl9fZCgiVmVj dG9yIixbImV2ZW50LWV4dGVuc2lvbnMiLCJET01EaW1lbnNpb25zIiwiRE9NUG9z aXRpb24iLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXti KCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignRE9NRGltZW5zaW9ucycpLGg9 YignRE9NUG9zaXRpb24nKSxpPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24g aihrLGwsbSl7aSh0aGlzLHt4OnBhcnNlRmxvYXQoaykseTpwYXJzZUZsb2F0KGwp LGRvbWFpbjptfHwncHVyZSd9KTt9aShqLnByb3RvdHlwZSx7dG9TdHJpbmc6ZnVu Y3Rpb24oKXtyZXR1cm4gJygnK3RoaXMueCsnLCAnK3RoaXMueSsnKSc7fSxhZGQ6 ZnVuY3Rpb24oayxsKXtpZihhcmd1bWVudHMubGVuZ3RoPT0xKXtpZihrLmRvbWFp biE9J3B1cmUnKWs9ay5jb252ZXJ0VG8odGhpcy5kb21haW4pO3JldHVybiB0aGlz LmFkZChrLngsay55KTt9dmFyIG09cGFyc2VGbG9hdChrKSxuPXBhcnNlRmxvYXQo bCk7cmV0dXJuIG5ldyBqKHRoaXMueCttLHRoaXMueStuLHRoaXMuZG9tYWluKTt9 LG11bDpmdW5jdGlvbihrLGwpe2lmKHR5cGVvZiBsPT0idW5kZWZpbmVkIilsPWs7 cmV0dXJuIG5ldyBqKHRoaXMueCprLHRoaXMueSpsLHRoaXMuZG9tYWluKTt9LHN1 YjpmdW5jdGlvbihrLGwpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEpe3JldHVybiB0 aGlzLmFkZChrLm11bCgtMSkpO31lbHNlIHJldHVybiB0aGlzLmFkZCgtaywtbCk7 fSxkaXN0YW5jZVRvOmZ1bmN0aW9uKGspe3JldHVybiB0aGlzLnN1YihrKS5tYWdu aXR1ZGUoKTt9LG1hZ25pdHVkZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQo KHRoaXMueCp0aGlzLngpKyh0aGlzLnkqdGhpcy55KSk7fSxjb252ZXJ0VG86ZnVu

Y3Rpb24oayl7aWYoayE9J3B1cmUnJiZrIT0ndmlld3BvcnQnJiZrIT0nZG9jdW1l bnQnKXJldHVybiBuZXcgaigwLDApO2lmKGs9PXRoaXMuZG9tYWluKXJldHVybiBu ZXcgaih0aGlzLngsdGhpcy55LHRoaXMuZG9tYWluKTtpZihrPT0ncHVyZScpcmV0 dXJuIG5ldyBqKHRoaXMueCx0aGlzLnkpO2lmKHRoaXMuZG9tYWluPT0ncHVyZScp cmV0dXJuIG5ldyBqKDAsMCk7dmFyIGw9ai5nZXRTY3JvbGxQb3NpdGlvbignZG9j dW1lbnQnKSxtPXRoaXMueCxuPXRoaXMueTtpZih0aGlzLmRvbWFpbj09J2RvY3Vt ZW50Jyl7bS09bC54O24tPWwueTt9ZWxzZXttKz1sLng7bis9bC55O31yZXR1cm4g bmV3IGoobSxuLGspO30sc2V0RWxlbWVudFBvc2l0aW9uOmZ1bmN0aW9uKGspe3Zh ciBsPXRoaXMuY29udmVydFRvKCdkb2N1bWVudCcpO2suc3R5bGUubGVmdD1wYXJz ZUludChsLngpKydweCc7ay5zdHlsZS50b3A9cGFyc2VJbnQobC55KSsncHgnO3Jl dHVybiB0aGlzO30sc2V0RWxlbWVudERpbWVuc2lvbnM6ZnVuY3Rpb24oayl7cmV0 dXJuIHRoaXMuc2V0RWxlbWVudFdpZHRoKGspLnNldEVsZW1lbnRIZWlnaHQoayk7 fSxzZXRFbGVtZW50V2lkdGg6ZnVuY3Rpb24oayl7ay5zdHlsZS53aWR0aD1wYXJz ZUludCh0aGlzLngsMTApKydweCc7cmV0dXJuIHRoaXM7fSxzZXRFbGVtZW50SGVp Z2h0OmZ1bmN0aW9uKGspe2suc3R5bGUuaGVpZ2h0PXBhcnNlSW50KHRoaXMueSwx MCkrJ3B4JztyZXR1cm4gdGhpczt9LHNjcm9sbEVsZW1lbnRCeTpmdW5jdGlvbihr KXtpZihrPT1kb2N1bWVudC5ib2R5KXt3aW5kb3cuc2Nyb2xsQnkodGhpcy54LHRo aXMueSk7fWVsc2V7ay5zY3JvbGxMZWZ0Kz10aGlzLng7ay5zY3JvbGxUb3ArPXRo aXMueTt9cmV0dXJuIHRoaXM7fX0pO2koaix7Z2V0RXZlbnRQb3NpdGlvbjpmdW5j dGlvbihrLGwpe2w9bHx8J2RvY3VtZW50Jzt2YXIgbT1FdmVudC5nZXRQb3NpdGlv bihrKSxuPW5ldyBqKG0ueCxtLnksJ2RvY3VtZW50Jyk7cmV0dXJuIG4uY29udmVy dFRvKGwpO30sZ2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oayl7az1rfHwnZG9j dW1lbnQnO3ZhciBsPWguZ2V0U2Nyb2xsUG9zaXRpb24oKTtyZXR1cm4gbmV3IGoo bC54LGwueSwnZG9jdW1lbnQnKS5jb252ZXJ0VG8oayk7fSxnZXRFbGVtZW50UG9z aXRpb246ZnVuY3Rpb24oayxsKXtsPWx8fCdkb2N1bWVudCc7dmFyIG09aC5nZXRF bGVtZW50UG9zaXRpb24oayk7cmV0dXJuIG5ldyBqKG0ueCxtLnksJ3ZpZXdwb3J0 JykuY29udmVydFRvKGwpO30sZ2V0RWxlbWVudERpbWVuc2lvbnM6ZnVuY3Rpb24o ayl7dmFyIGw9Zy5nZXRFbGVtZW50RGltZW5zaW9ucyhrKTtyZXR1cm4gbmV3IGoo bC53aWR0aCxsLmhlaWdodCk7fSxnZXRWaWV3cG9ydERpbWVuc2lvbnM6ZnVuY3Rp b24oKXt2YXIgaz1nLmdldFZpZXdwb3J0RGltZW5zaW9ucygpO3JldHVybiBuZXcg aihrLndpZHRoLGsuaGVpZ2h0LCd2aWV3cG9ydCcpO30sZ2V0RG9jdW1lbnREaW1l bnNpb25zOmZ1bmN0aW9uKGspe3ZhciBsPWcuZ2V0RG9jdW1lbnREaW1lbnNpb25z KGspO3JldHVybiBuZXcgaihsLndpZHRoLGwuaGVpZ2h0LCdkb2N1bWVudCcpO30s ZGVzZXJpYWxpemU6ZnVuY3Rpb24oayl7dmFyIGw9ay5zcGxpdCgnLCcpO3JldHVy biBuZXcgaihsWzBdLGxbMV0pO319KTtlLmV4cG9ydHM9ajt9KTsKX19kKCJnZXRP dmVybGF5WkluZGV4IixbIlN0eWxlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPWIoJ1N0eWxlJyk7ZnVuY3Rpb24gaChpLGope2o9anx8ZG9jdW1lbnQuYm9k eTt2YXIgaz1bXTt3aGlsZShpJiZpIT09ail7ay5wdXNoKGkpO2k9aS5wYXJlbnRO b2RlO31pZihpIT09ailyZXR1cm4gMDtmb3IodmFyIGw9ay5sZW5ndGgtMTtsPj0w O2wtLSl7dmFyIG09a1tsXTtpZihnLmdldChtLCdwb3NpdGlvbicpIT0nc3RhdGlj Jyl7dmFyIG49cGFyc2VJbnQoZy5nZXQobSwnei1pbmRleCcpLDEwKTtpZighaXNO YU4obikpcmV0dXJuIG47fX1yZXR1cm4gMDt9ZS5leHBvcnRzPWg7fSk7Cl9fZCgi RGlhbG9nIixbImFycmF5LWV4dGVuc2lvbnMiLCJldmVudC1leHRlbnNpb25zIiwi QWpheFBpcGVSZXF1ZXN0IiwiQW5pbWF0aW9uIiwiQXJiaXRlciIsIkFzeW5jUmVx dWVzdCIsIkJvb3Rsb2FkZXIiLCJCdXR0b24iLCJDU1MiLCJDU1NTdXBwb3J0Iiwi RE9NIiwiRm9ybSIsIkhUTUwiLCJJbnB1dCIsIktleXMiLCJMb2NhbGUiLCJQYXJl bnQiLCJSdW4iLCJTdHlsZSIsIlVSSSIsIlVzZXJBZ2VudCIsIlZlY3RvciIsImJp bmQiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0ZUFycmF5RnJvbSIsImdldE9iamVj dFZhbHVlcyIsImdldE92ZXJsYXlaSW5kZXgiLCJ0eCJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7YignZXZlbnQtZXh0ZW5zaW9u cycpO3ZhciBnPWIoJ0FqYXhQaXBlUmVxdWVzdCcpLGg9YignQW5pbWF0aW9uJyks aT1iKCdBcmJpdGVyJyksaj1iKCdBc3luY1JlcXVlc3QnKSxrPWIoJ0Jvb3Rsb2Fk ZXInKSxsPWIoJ0J1dHRvbicpLG09YignQ1NTJyksbj1iKCdDU1NTdXBwb3J0Jyks bz1iKCdET00nKSxwPWIoJ0Zvcm0nKSxxPWIoJ0hUTUwnKSxyPWIoJ0lucHV0Jyks cz1iKCdLZXlzJyksdD1iKCdMb2NhbGUnKSx1PWIoJ1BhcmVudCcpLHY9YignUnVu Jyksdz1iKCdTdHlsZScpLHg9YignVVJJJykseT1iKCdVc2VyQWdlbnQnKSx6PWIo J1ZlY3RvcicpLGFhPWIoJ2JpbmQnKSxiYT1iKCdjb3B5UHJvcGVydGllcycpLGNh PWIoJ2NyZWF0ZUFycmF5RnJvbScpLGRhPWIoJ2dldE9iamVjdFZhbHVlcycpLGVh PWIoJ2dldE92ZXJsYXlaSW5kZXgnKSxmYT1iKCd0eCcpLGdhPWZ1bmN0aW9uKCl7 dmFyIGlhPWRvY3VtZW50LmJvZHksamE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn

ZGl2Jyksa2E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7aWEuaW5zZXJ0 QmVmb3JlKGphLGlhLmZpcnN0Q2hpbGQpO2lhLmluc2VydEJlZm9yZShrYSxpYS5m aXJzdENoaWxkKTtqYS5zdHlsZS5wb3NpdGlvbj0nZml4ZWQnO2phLnN0eWxlLnRv cD0nMjBweCc7dmFyIGxhPWphLm9mZnNldFRvcCE9PWthLm9mZnNldFRvcDtpYS5y ZW1vdmVDaGlsZChqYSk7aWEucmVtb3ZlQ2hpbGQoa2EpO2dhPWJhZ29mKGxhKTty ZXR1cm4gbGE7fTtmdW5jdGlvbiBoYShpYSl7dGhpcy5fc2hvd19sb2FkaW5nPXRy dWU7dGhpcy5fYXV0b19mb2N1cz10cnVlO3RoaXMuX3N1Ym1pdF9vbl9lbnRlcj1m YWxzZTt0aGlzLl9mYWRlX2VuYWJsZWQ9dHJ1ZTt0aGlzLl9vbmxvYWRfaGFuZGxl cnM9W107dGhpcy5fdG9wPTEyNTt0aGlzLl91bmlxdWVJRD0nZGlhbG9nXycraGEu X2dsb2JhbENvdW50Kys7dGhpcy5fY29udGVudD1udWxsO3RoaXMuX29iaj1udWxs O3RoaXMuX3BvcHVwPW51bGw7dGhpcy5fb3ZlcmxheT1udWxsO3RoaXMuX3NoaW09 bnVsbDt0aGlzLl9jYXVzYWxfZWxlbT1udWxsO3RoaXMuX3ByZXZpb3VzX2ZvY3Vz PW51bGw7dGhpcy5fYnV0dG9ucz1bXTt0aGlzLl9idWlsZERpYWxvZygpO2lmKGlh KXRoaXMuX3NldEZyb21Nb2RlbChpYSk7aGEuX2luaXQoKTt9YmEoaGEse09LOntu YW1lOidvaycsbGFiZWw6Ik9rZSJ9LENBTkNFTDp7bmFtZTonY2FuY2VsJyxsYWJl bDoiQmF0YWxrYW4iLGNsYXNzTmFtZTonaW5wdXRhdXgnfSxDTE9TRTp7bmFtZTon Y2xvc2UnLGxhYmVsOiJUdXR1cCJ9LE5FWFQ6e25hbWU6J25leHQnLGxhYmVsOiJC ZXJpa3V0bnlhIn0sU0FWRTp7bmFtZTonc2F2ZScsbGFiZWw6IlNpbXBhbiJ9LFNV Qk1JVDp7bmFtZTonc3VibWl0JyxsYWJlbDoiS2lyaW0ifSxDT05GSVJNOntuYW1l Oidjb25maXJtJyxsYWJlbDoiS29uZmlybWFzaSJ9LERFTEVURTp7bmFtZTonZGVs ZXRlJyxsYWJlbDoiSGFwdXMifSxfZ2xvYmFsQ291bnQ6MCxfYm90dG9tczpbMF0s bWF4X2JvdHRvbTowLF91cGRhdGVNYXhCb3R0b206ZnVuY3Rpb24oKXtoYS5tYXhf Ym90dG9tPU1hdGgubWF4LmFwcGx5KE1hdGgsaGEuX2JvdHRvbXMpO319KTtiYSho YSx7T0tfQU5EX0NBTkNFTDpbaGEuT0ssaGEuQ0FOQ0VMXSxfU1RBTkRBUkRfQlVU VE9OUzpbaGEuT0ssaGEuQ0FOQ0VMLGhhLkNMT1NFLGhhLlNBVkUsaGEuU1VCTUlU LGhhLkNPTkZJUk0saGEuREVMRVRFXSxTSVpFOntXSURFOjU1NSxTVEFOREFSRDo0 NDV9LF9IQUxPX1dJRFRIOjEwLF9CT1JERVJfV0lEVEg6MSxfUEFERElOR19XSURU SDoxMCxfUEFHRV9NQVJHSU46NDAsX3N0YWNrOltdLF9pc1VzaW5nQ1NTQm9yZGVy czpmdW5jdGlvbigpe3JldHVybiBuLnN1cHBvcnRzQm9yZGVyUmFkaXVzKCl8fHku aWUoKTw3O30sbmV3QnV0dG9uOmZ1bmN0aW9uKGlhLGphLGthLGxhKXt2YXIgbWE9 e25hbWU6aWEsbGFiZWw6amF9O2lmKGthKW1hLmNsYXNzTmFtZT1rYTtpZihsYSlt YS5oYW5kbGVyPWxhO3JldHVybiBtYTt9LGdldEN1cnJlbnQ6ZnVuY3Rpb24oKXt2 YXIgaWE9aGEuX3N0YWNrO3JldHVybiBpYS5sZW5ndGg/aWFbaWEubGVuZ3RoLTFd Om51bGw7fSxoaWRlQ3VycmVudDpmdW5jdGlvbigpe3ZhciBpYT1oYS5nZXRDdXJy ZW50KCk7aWEmJmlhLmhpZGUoKTt9LGJvb3RzdHJhcDpmdW5jdGlvbihpYSxqYSxr YSxsYSxtYSxuYSl7amE9amF8fHt9O2JhKGphLG5ldyB4KGlhKS5nZXRRdWVyeURh dGEoKSk7bGE9bGF8fChrYT8nR0VUJzonUE9TVCcpO3ZhciBvYT11LmJ5Q2xhc3Mo bmEsJ3N0YXRfZWxlbScpfHxuYTtpZihvYSYmbS5oYXNDbGFzcyhvYSwnYXN5bmNf c2F2aW5nJykpcmV0dXJuIGZhbHNlO3ZhciBwYT1uZXcgaigpLnNldFJlYWRPbmx5 KCEha2EpLnNldE1ldGhvZChsYSkuc2V0UmVsYXRpdmVUbyhuYSkuc2V0U3RhdHVz RWxlbWVudChvYSkuc2V0VVJJKGlhKS5zZXROZWN0YXJNb2R1bGVEYXRhU2FmZShu YSkuc2V0RGF0YShqYSkscWE9bmV3IGhhKG1hKS5zZXRDYXVzYWxFbGVtZW50KG5h KS5zZXRBc3luYyhwYSk7cWEuc2hvdygpO3JldHVybiBmYWxzZTt9LHNob3dGcm9t TW9kZWw6ZnVuY3Rpb24oaWEsamEpe3ZhciBrYT1uZXcgaGEoaWEpLnNldENhdXNh bEVsZW1lbnQoamEpLnNob3coKTtpZihpYS5oaWRpbmcpa2EuaGlkZSgpO30sX2lu aXQ6ZnVuY3Rpb24oKXt0aGlzLl9pbml0PWJhZ29maG9sZGluZzt2Lm9uTGVhdmUo aGEuX3RlYXJEb3duLnNoaWVsZChudWxsLGZhbHNlKSk7aS5zdWJzY3JpYmUoJ3Bh Z2VfdHJhbnNpdGlvbicsaGEuX3RlYXJEb3duLnNoaWVsZChudWxsLHRydWUpKTtF dmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdrZXlkb3duJyxm dW5jdGlvbihldmVudCl7aWYoRXZlbnQuZ2V0S2V5Q29kZShldmVudCk9PXMuRVND JiYhZXZlbnQuZ2V0TW9kaWZpZXJzKCkuYW55KXtpZihoYS5fZXNjYXBlKCkpZXZl bnQua2lsbCgpO31lbHNlIGlmKEV2ZW50LmdldEtleUNvZGUoZXZlbnQpPT1zLlJF VFVSTiYmIWV2ZW50LmdldE1vZGlmaWVycygpLmFueSlpZihoYS5fZW50ZXIoKSll dmVudC5raWxsKCk7fSk7RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyxmdW5j dGlvbihldmVudCl7dmFyIGlhPWhhLmdldEN1cnJlbnQoKTtpYSYmaWEuX3Jlc2V0 RGlhbG9nT2JqKCk7fSk7fSxfZmluZEJ1dHRvbjpmdW5jdGlvbihpYSxqYSl7aWYo aWEpZm9yKHZhciBrYT0wO2thPGlhLmxlbmd0aDsrK2thKWlmKGlhW2thXS5uYW1l PT1qYSlyZXR1cm4gaWFba2FdO3JldHVybiBudWxsO30sX3RlYXJEb3duOmZ1bmN0 aW9uKGlhKXt2YXIgamE9aGEuX3N0YWNrLnNsaWNlKCk7Zm9yKHZhciBrYT1qYS5s ZW5ndGgtMTtrYT49MDtrYS0tKWlmKChpYSYmIWphW2thXS5fY3Jvc3NfdHJhbnNp

dGlvbil8fCghaWEmJiFqYVtrYV0uX2Nyb3NzX3F1aWNrbGluZykpamFba2FdLmhp ZGUoKTt9LF9lc2NhcGU6ZnVuY3Rpb24oKXt2YXIgaWE9aGEuZ2V0Q3VycmVudCgp O2lmKCFpYSlyZXR1cm4gZmFsc2U7dmFyIGphPWlhLl9zZW1pX21vZGFsLGthPWlh Ll9idXR0b25zO2lmKCFrYS5sZW5ndGgmJiFqYSlyZXR1cm4gZmFsc2U7aWYoamEm JiFrYS5sZW5ndGgpe2lhLmhpZGUoKTtyZXR1cm4gdHJ1ZTt9dmFyIGxhLG1hPWhh Ll9maW5kQnV0dG9uKGthLCdjYW5jZWwnKTtpZihpYS5fY2FuY2VsSGFuZGxlcil7 aWEuY2FuY2VsKCk7cmV0dXJuIHRydWU7fWVsc2UgaWYobWEpe2xhPW1hO31lbHNl IGlmKGthLmxlbmd0aD09MSl7bGE9a2FbMF07fWVsc2UgcmV0dXJuIGZhbHNlO2lh Ll9oYW5kbGVCdXR0b24obGEpO3JldHVybiB0cnVlO30sX2VudGVyOmZ1bmN0aW9u KCl7dmFyIGlhPWhhLmdldEN1cnJlbnQoKTtpZighaWF8fCFpYS5fc3VibWl0X29u X2VudGVyKXJldHVybiBmYWxzZTtpZihkb2N1bWVudC5hY3RpdmVFbGVtZW50IT1p YS5fZnJhbWUpcmV0dXJuIGZhbHNlO3ZhciBqYT1pYS5fYnV0dG9ucztpZighamEp cmV0dXJuIGZhbHNlO2lhLl9oYW5kbGVCdXR0b24oamFbMF0pO3JldHVybiB0cnVl O30sY2FsbF9vcl9ldmFsOmZ1bmN0aW9uKGlhLGphLGthKXtpZighamEpcmV0dXJu IHVuZGVmaW5lZDtrYT1rYXx8e307aWYodHlwZW9mIGphPT0nc3RyaW5nJyl7dmFy IGxhPU9iamVjdC5rZXlzKGthKS5qb2luKCcsICcpO2phPShldmFsKSgnKHtmOiBm dW5jdGlvbignK2xhKycpIHsgJytqYSsnfX0pJykuZjt9cmV0dXJuIGphLmFwcGx5 KGlhLGRhKGthKSk7fX0pO2JhKGhhLnByb3RvdHlwZSx7X2Nyb3NzX3F1aWNrbGlu ZzpmYWxzZSxfY3Jvc3NfdHJhbnNpdGlvbjpmYWxzZSxfbG9hZGluZzpmYWxzZSxf c2hvd2luZzpmYWxzZSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5fc2hvd2luZz10cnVl O2lmKHRoaXMuX2FzeW5jX3JlcXVlc3Qpe2lmKHRoaXMuX3Nob3dfbG9hZGluZyl0 aGlzLnNob3dMb2FkaW5nKCk7fWVsc2UgdGhpcy5fdXBkYXRlKCk7cmV0dXJuIHRo aXM7fSxzaG93TG9hZGluZzpmdW5jdGlvbigpe3RoaXMuX2xvYWRpbmc9dHJ1ZTtt LmFkZENsYXNzKHRoaXMuX2ZyYW1lLCdkaWFsb2dfbG9hZGluZ19zaG93bicpO3Ro aXMuX3JlbmRlckRpYWxvZygpO3JldHVybiB0aGlzO30saGlkZTpmdW5jdGlvbigp e2lmKCF0aGlzLl9zaG93aW5nJiYhdGhpcy5fbG9hZGluZylyZXR1cm4gdGhpczt0 aGlzLl9zaG93aW5nPWZhbHNlO2lmKHRoaXMuX2F1dG9oaWRlX3RpbWVvdXQpe2Ns ZWFyVGltZW91dCh0aGlzLl9hdXRvaGlkZV90aW1lb3V0KTt0aGlzLl9hdXRvaGlk ZV90aW1lb3V0PW51bGw7fWlmKHRoaXMuX2ZhZGVfZW5hYmxlZCYmaGEuX3N0YWNr Lmxlbmd0aDw9MSl7dGhpcy5fZmFkZU91dCgpO31lbHNlIHRoaXMuX2hpZGUoKTty ZXR1cm4gdGhpczt9LGNhbmNlbDpmdW5jdGlvbigpe2lmKCF0aGlzLl9jYW5jZWxI YW5kbGVyfHx0aGlzLl9jYW5jZWxIYW5kbGVyKCkhPT1mYWxzZSl0aGlzLmhpZGUo KTt9LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2JqO30sZ2V0Qm9k eTpmdW5jdGlvbigpe3JldHVybiBvLnNjcnkodGhpcy5fb2JqLCdkaXYuZGlhbG9n X2JvZHknKVswXTt9LGdldEJ1dHRvbkVsZW1lbnQ6ZnVuY3Rpb24oaWEpe2lmKHR5 cGVvZiBpYT09J3N0cmluZycpaWE9aGEuX2ZpbmRCdXR0b24odGhpcy5fYnV0dG9u cyxpYSk7aWYoIWlhfHwhaWEubmFtZSlyZXR1cm4gbnVsbDt2YXIgamE9by5zY3J5 KHRoaXMuX3BvcHVwLCdpbnB1dCcpLGthPWZ1bmN0aW9uKGxhKXtyZXR1cm4gbGEu bmFtZT09aWEubmFtZTt9O3JldHVybiBqYS5maWx0ZXIoa2EpWzBdfHxudWxsO30s Z2V0Q29udGVudE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gby5maW5kKHRoaXMuX2Nv bnRlbnQsJ2Rpdi5kaWFsb2dfY29udGVudCcpO30sZ2V0Rm9ybURhdGE6ZnVuY3Rp b24oKXtyZXR1cm4gcC5zZXJpYWxpemUodGhpcy5nZXRDb250ZW50Tm9kZSgpKTt9 LHNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbjpmdW5jdGlvbihpYSl7dGhpcy5f Y3Jvc3NfdHJhbnNpdGlvbj1pYTtyZXR1cm4gdGhpczt9LHNldEFsbG93Q3Jvc3NR dWlja2xpbmdOYXZpZ2F0aW9uOmZ1bmN0aW9uKGlhKXt0aGlzLl9jcm9zc19xdWlj a2xpbmc9aWE7cmV0dXJuIHRoaXM7fSxzZXRTaG93aW5nOmZ1bmN0aW9uKCl7dGhp cy5zaG93KCk7cmV0dXJuIHRoaXM7fSxzZXRIaWRpbmc6ZnVuY3Rpb24oKXt0aGlz LmhpZGUoKTtyZXR1cm4gdGhpczt9LHNldFRpdGxlOmZ1bmN0aW9uKGlhKXt2YXIg amE9dGhpcy5fbm9kZXMudGl0bGUsa2E9dGhpcy5fbm9kZXMudGl0bGVfaW5uZXIs bGE9dGhpcy5fbm9kZXMuY29udGVudDtvLnNldENvbnRlbnQoa2EsdGhpcy5fZm9y bWF0KGlhfHwnJykpO20uY29uZGl0aW9uU2hvdyhqYSwhIWlhKTttLmNvbmRpdGlv bkNsYXNzKGxhLCdkaWFsb2dfY29udGVudF90aXRsZWxlc3MnLCFpYSk7cmV0dXJu IHRoaXM7fSxzZXRCb2R5OmZ1bmN0aW9uKGlhKXtvLnNldENvbnRlbnQodGhpcy5f bm9kZXMuYm9keSx0aGlzLl9mb3JtYXQoaWEpKTtyZXR1cm4gdGhpczt9LHNldEV4 dHJhRGF0YTpmdW5jdGlvbihpYSl7dGhpcy5fZXh0cmFfZGF0YT1pYTtyZXR1cm4g dGhpczt9LHNldFJldHVybkRhdGE6ZnVuY3Rpb24oaWEpe3RoaXMuX3JldHVybl9k YXRhPWlhO3JldHVybiB0aGlzO30sc2V0U2hvd0xvYWRpbmc6ZnVuY3Rpb24oaWEp e3RoaXMuX3Nob3dfbG9hZGluZz1pYTtyZXR1cm4gdGhpczt9LHNldEZ1bGxCbGVl ZDpmdW5jdGlvbihpYSl7dGhpcy5fZnVsbF9ibGVlZD1pYTt0aGlzLl91cGRhdGVX aWR0aCgpO20uY29uZGl0aW9uQ2xhc3ModGhpcy5fb2JqLCdmdWxsX2JsZWVkJyxp

YSk7cmV0dXJuIHRoaXM7fSxzZXRDYXVzYWxFbGVtZW50OmZ1bmN0aW9uKGlhKXt0 aGlzLl9jYXVzYWxfZWxlbT1pYTtyZXR1cm4gdGhpczt9LHNldFVzZXJEYXRhOmZ1 bmN0aW9uKGlhKXt0aGlzLl91c2VyX2RhdGE9aWE7cmV0dXJuIHRoaXM7fSxnZXRV c2VyRGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91c2VyX2RhdGE7fSxzZXRB dXRvaGlkZTpmdW5jdGlvbihpYSl7aWYoaWEpe2lmKHRoaXMuX3Nob3dpbmcpe3Ro aXMuX2F1dG9oaWRlX3RpbWVvdXQ9c2V0VGltZW91dCh0aGlzLmhpZGUuc2hpZWxk KHRoaXMpLGlhKTt9ZWxzZSB0aGlzLl9hdXRvaGlkZT1pYTt9ZWxzZXt0aGlzLl9h dXRvaGlkZT1udWxsO2lmKHRoaXMuX2F1dG9oaWRlX3RpbWVvdXQpe2NsZWFyVGlt ZW91dCh0aGlzLl9hdXRvaGlkZV90aW1lb3V0KTt0aGlzLl9hdXRvaGlkZV90aW1l b3V0PW51bGw7fX1yZXR1cm4gdGhpczt9LHNldFN1bW1hcnk6ZnVuY3Rpb24oaWEp e3ZhciBqYT10aGlzLl9ub2Rlcy5zdW1tYXJ5O28uc2V0Q29udGVudChqYSx0aGlz Ll9mb3JtYXQoaWF8fCcnKSk7bS5jb25kaXRpb25TaG93KGphLCEhaWEpO3JldHVy biB0aGlzO30sc2V0QnV0dG9uczpmdW5jdGlvbihpYSl7dmFyIGphLGthO2lmKCEo aWEgaW5zdGFuY2VvZiBBcnJheSkpe2phPWNhKGFyZ3VtZW50cyk7fWVsc2UgamE9 aWE7Zm9yKHZhciBsYT0wO2xhPGphLmxlbmd0aDsrK2xhKWlmKHR5cGVvZiBqYVts YV09PSdzdHJpbmcnKXtrYT1oYS5fZmluZEJ1dHRvbihoYS5fU1RBTkRBUkRfQlVU VE9OUyxqYVtsYV0pO2phW2xhXT1rYTt9dGhpcy5fYnV0dG9ucz1qYTt2YXIgbWE9 W107aWYoamEmJmphLmxlbmd0aD4wKWZvcih2YXIgbmE9MDtuYTxqYS5sZW5ndGg7 bmErKyl7a2E9amFbbmFdO3ZhciBvYT1vLmNyZWF0ZSgnaW5wdXQnLHt0eXBlOidi dXR0b24nLG5hbWU6a2EubmFtZXx8JycsdmFsdWU6a2EubGFiZWx9KSxwYT1vLmNy ZWF0ZSgnbGFiZWwnLHtjbGFzc05hbWU6J3VpQnV0dG9uIHVpQnV0dG9uTGFyZ2Ug dWlCdXR0b25Db25maXJtJ30sb2EpO2lmKGthLmNsYXNzTmFtZSl7a2EuY2xhc3NO YW1lLnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKHJhKXttLmFkZENsYXNz KHBhLHJhKTt9KTtpZihtLmhhc0NsYXNzKHBhLCdpbnB1dGF1eCcpKXttLnJlbW92 ZUNsYXNzKHBhLCdpbnB1dGF1eCcpO20ucmVtb3ZlQ2xhc3MocGEsJ3VpQnV0dG9u Q29uZmlybScpO31pZihtLmhhc0NsYXNzKHBhLCd1aUJ1dHRvblNwZWNpYWwnKSlt LnJlbW92ZUNsYXNzKHBhLCd1aUJ1dHRvbkNvbmZpcm0nKTt9aWYoa2EuaWNvbilv LnByZXBlbmRDb250ZW50KHBhLG8uY3JlYXRlKCdpbWcnLHtzcmM6a2EuaWNvbixj bGFzc05hbWU6J2ltZyBtcnMnfSkpO2lmKGthLmRpc2FibGVkKWwuc2V0RW5hYmxl ZChwYSxmYWxzZSk7RXZlbnQubGlzdGVuKG9hLCdjbGljaycsdGhpcy5faGFuZGxl QnV0dG9uLmJpbmQodGhpcyxrYS5uYW1lKSk7Zm9yKHZhciBxYSBpbiBrYSlpZihx YS5pbmRleE9mKCdkYXRhLScpPT09MCYmcWEubGVuZ3RoPjUpb2Euc2V0QXR0cmli dXRlKHFhLGthW3FhXSk7bWEucHVzaChwYSk7fW8uc2V0Q29udGVudCh0aGlzLl9u b2Rlcy5idXR0b25zLG1hKTt0aGlzLl91cGRhdGVCdXR0b25WaXNpYmlsaXR5KCk7 cmV0dXJuIHRoaXM7fSxzZXRCdXR0b25zTWVzc2FnZTpmdW5jdGlvbihpYSl7by5z ZXRDb250ZW50KHRoaXMuX25vZGVzLmJ1dHRvbl9tZXNzYWdlLHRoaXMuX2Zvcm1h dChpYXx8JycpKTt0aGlzLl9oYXNfYnV0dG9uX21lc3NhZ2U9ISFpYTt0aGlzLl91 cGRhdGVCdXR0b25WaXNpYmlsaXR5KCk7cmV0dXJuIHRoaXM7fSxfdXBkYXRlQnV0 dG9uVmlzaWJpbGl0eTpmdW5jdGlvbigpe3ZhciBpYT10aGlzLl9idXR0b25zLmxl bmd0aD4wfHx0aGlzLl9oYXNfYnV0dG9uX21lc3NhZ2U7bS5jb25kaXRpb25TaG93 KHRoaXMuX25vZGVzLmJ1dHRvbl93cmFwcGVyLGlhKTttLmNvbmRpdGlvbkNsYXNz KHRoaXMuX29iaiwnb21pdERpYWxvZ0Zvb3RlcicsIWlhKTt9LHNldENsaWNrQnV0 dG9uT25FbnRlcjpmdW5jdGlvbihpYSxqYSl7dGhpcy5fY2xpY2tPbkVudGVyVGFy Z2V0PWlhO2lmKCF0aGlzLl9jbGlja09uRW50ZXJMaXN0ZW5lcil0aGlzLl9jbGlj a09uRW50ZXJMaXN0ZW5lcj1FdmVudC5saXN0ZW4odGhpcy5fbm9kZXMuYm9keSwn a2V5cHJlc3MnLGZ1bmN0aW9uKGV2ZW50KXt2YXIga2E9ZXZlbnQuZ2V0VGFyZ2V0 KCk7aWYoa2EmJmthLmlkPT09dGhpcy5fY2xpY2tPbkVudGVyVGFyZ2V0KWlmKEV2 ZW50LmdldEtleUNvZGUoZXZlbnQpPT1zLlJFVFVSTil7dGhpcy5faGFuZGxlQnV0 dG9uKGphKTtldmVudC5raWxsKCk7fXJldHVybiB0cnVlO30uYmluZCh0aGlzKSk7 cmV0dXJuIHRoaXM7fSxzZXRTdGFja2FibGU6ZnVuY3Rpb24oaWEsamEpe3RoaXMu X2lzX3N0YWNrYWJsZT1pYTt0aGlzLl9zaG93bl93aGlsZV9zdGFja2VkPWlhJiZq YTtyZXR1cm4gdGhpczt9LHNldEhhbmRsZXI6ZnVuY3Rpb24oaWEpe3RoaXMuX2hh bmRsZXI9aWE7cmV0dXJuIHRoaXM7fSxzZXRDYW5jZWxIYW5kbGVyOmZ1bmN0aW9u KGlhKXt0aGlzLl9jYW5jZWxIYW5kbGVyPWhhLmNhbGxfb3JfZXZhbC5iaW5kKG51 bGwsdGhpcyxpYSk7cmV0dXJuIHRoaXM7fSxzZXRDbG9zZUhhbmRsZXI6ZnVuY3Rp b24oaWEpe3RoaXMuX2Nsb3NlX2hhbmRsZXI9aGEuY2FsbF9vcl9ldmFsLmJpbmQo bnVsbCx0aGlzLGlhKTtyZXR1cm4gdGhpczt9LGNsZWFySGFuZGxlcjpmdW5jdGlv bigpe3JldHVybiB0aGlzLnNldEhhbmRsZXIobnVsbCk7fSxzZXRQb3N0VVJJOmZ1 bmN0aW9uKGlhLGphKXtpZihqYT09PXVuZGVmaW5lZClqYT10cnVlO2lmKGphKXt0 aGlzLnNldEhhbmRsZXIodGhpcy5fc3VibWl0Rm9ybS5iaW5kKHRoaXMsJ1BPU1Qn

LGlhKSk7fWVsc2UgdGhpcy5zZXRIYW5kbGVyKGZ1bmN0aW9uKCl7cC5wb3N0KGlh LHRoaXMuZ2V0Rm9ybURhdGEoKSk7dGhpcy5oaWRlKCk7fS5iaW5kKHRoaXMpKTty ZXR1cm4gdGhpczt9LHNldEdldFVSSTpmdW5jdGlvbihpYSl7dGhpcy5zZXRIYW5k bGVyKHRoaXMuX3N1Ym1pdEZvcm0uYmluZCh0aGlzLCdHRVQnLGlhKSk7cmV0dXJu IHRoaXM7fSxzZXRNb2RhbDpmdW5jdGlvbihpYSl7dGhpcy5fbW9kYWw9aWE7bS5j b25kaXRpb25DbGFzcyh0aGlzLl9vYmosJ2dlbmVyaWNfZGlhbG9nX21vZGFsJyxp YSk7cmV0dXJuIHRoaXM7fSxzZXRTZW1pTW9kYWw6ZnVuY3Rpb24oaWEpe2lmKGlh KXt0aGlzLnNldE1vZGFsKHRydWUpO3RoaXMuX3NlbWlNb2RhbExpc3RlbmVyPUV2 ZW50Lmxpc3Rlbih0aGlzLl9vYmosJ2NsaWNrJyxmdW5jdGlvbihqYSl7aWYoIW8u Y29udGFpbnModGhpcy5fcG9wdXAsamEuZ2V0VGFyZ2V0KCkpKXRoaXMuaGlkZSgp O30uYmluZCh0aGlzKSk7fWVsc2UgdGhpcy5fc2VtaU1vZGFsTGlzdGVuZXImJnRo aXMuX3NlbWlNb2RhbExpc3RlbmVyLnJlbW92ZSgpO3RoaXMuX3NlbWlfbW9kYWw9 aWE7cmV0dXJuIHRoaXM7fSxzZXRXaWRlRGlhbG9nOmZ1bmN0aW9uKGlhKXt0aGlz Ll93aWRlX2RpYWxvZz1pYTt0aGlzLl91cGRhdGVXaWR0aCgpO3JldHVybiB0aGlz O30sc2V0Q29udGVudFdpZHRoOmZ1bmN0aW9uKGlhKXt0aGlzLl9jb250ZW50X3dp ZHRoPWlhO3RoaXMuX3VwZGF0ZVdpZHRoKCk7cmV0dXJuIHRoaXM7fSxzZXRUaXRs ZUxvYWRpbmc6ZnVuY3Rpb24oaWEpe2lmKGlhPT09dW5kZWZpbmVkKWlhPXRydWU7 dmFyIGphPW8uZmluZCh0aGlzLl9wb3B1cCwnaDIuZGlhbG9nX3RpdGxlJyk7aWYo amEpbS5jb25kaXRpb25DbGFzcyhqYSwnbG9hZGluZycsaWEpO3JldHVybiB0aGlz O30sc2V0U2VjdXJlOmZ1bmN0aW9uKGlhKXttLmNvbmRpdGlvbkNsYXNzKHRoaXMu X25vZGVzLnRpdGxlLCdzZWN1cmUnLGlhKTtyZXR1cm4gdGhpczt9LHNldENsYXNz TmFtZTpmdW5jdGlvbihpYSl7aWEuc3BsaXQoL1xzKy8pLmZvckVhY2gobS5hZGRD bGFzcy5iaW5kKG0sdGhpcy5fb2JqKSk7cmV0dXJuIHRoaXM7fSxzZXRGYWRlRW5h YmxlZDpmdW5jdGlvbihpYSl7dGhpcy5fZmFkZV9lbmFibGVkPWlhO3JldHVybiB0 aGlzO30sc2V0Rm9vdGVyOmZ1bmN0aW9uKGlhKXt2YXIgamE9dGhpcy5fbm9kZXMu Zm9vdGVyO28uc2V0Q29udGVudChqYSx0aGlzLl9mb3JtYXQoaWF8fCcnKSk7bS5j b25kaXRpb25TaG93KGphLCEhaWEpO3JldHVybiB0aGlzO30sc2V0QXV0b0ZvY3Vz OmZ1bmN0aW9uKGlhKXt0aGlzLl9hdXRvX2ZvY3VzPWlhO3JldHVybiB0aGlzO30s c2V0VG9wOmZ1bmN0aW9uKGlhKXt0aGlzLl90b3A9aWE7dGhpcy5fcmVzZXREaWFs b2dPYmooKTtyZXR1cm4gdGhpczt9LG9ubG9hZFJlZ2lzdGVyOmZ1bmN0aW9uKGlh KXtjYShpYSkuZm9yRWFjaChmdW5jdGlvbihqYSl7aWYodHlwZW9mIGphPT0nc3Ry aW5nJylqYT1uZXcgRnVuY3Rpb24oamEpO3RoaXMuX29ubG9hZF9oYW5kbGVycy5w dXNoKGphLmJpbmQodGhpcykpO30uYmluZCh0aGlzKSk7cmV0dXJuIHRoaXM7fSxz ZXRBc3luY1VSTDpmdW5jdGlvbihpYSl7cmV0dXJuIHRoaXMuc2V0QXN5bmMobmV3 IGooaWEpKTt9LHNldEFzeW5jOmZ1bmN0aW9uKGlhKXt2YXIgamE9ZnVuY3Rpb24o cmEpe2lmKHRoaXMuX2FzeW5jX3JlcXVlc3QhPWlhKXJldHVybjt0aGlzLl9hc3lu Y19yZXF1ZXN0PW51bGw7dmFyIHNhPXJhLmdldFBheWxvYWQoKSx0YT1zYTtpZih0 aGlzLl9sb2FkaW5nKXRoaXMuX3Nob3dpbmc9dHJ1ZTtpZih0eXBlb2YgdGE9PSdz dHJpbmcnKXt0aGlzLnNldEJvZHkodGEpO31lbHNlIHRoaXMuX3NldEZyb21Nb2Rl bCh0YSk7dGhpcy5fdXBkYXRlKCk7fS5iaW5kKHRoaXMpLGthPWlhLmdldERhdGEo KTtrYS5fX2Q9MTtpYS5zZXREYXRhKGthKTt2YXIgbGE9aWEuZ2V0SGFuZGxlcigp fHxiYWdvZmhvbGRpbmc7aWEuc2V0SGFuZGxlcihmdW5jdGlvbihyYSl7bGEocmEp O2phKHJhKTt9KTt2YXIgbWE9aWEsbmE9bWEuZ2V0RXJyb3JIYW5kbGVyKCl8fGJh Z29maG9sZGluZyxvYT1tYS5nZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIoKXx8YmFn b2Zob2xkaW5nLHBhPWZ1bmN0aW9uKCl7dGhpcy5fYXN5bmNfcmVxdWVzdD1udWxs O3RoaXMuX2xvYWRpbmc9ZmFsc2U7aWYodGhpcy5fc2hvd2luZyYmdGhpcy5fc2hv d25fd2hpbGVfc3RhY2tlZCl7dGhpcy5fdXBkYXRlKCk7fWVsc2UgdGhpcy5faGlk ZSh0aGlzLl9pc19zdGFja2FibGUpO30uYmluZCh0aGlzKSxxYT1tYS5nZXRTZXJ2 ZXJEaWFsb2dDYW5jZWxIYW5kbGVyKCl8fHBhO21hLnNldEFsbG93Q3Jvc3NQYWdl VHJhbnNpdGlvbih0aGlzLl9jcm9zc190cmFuc2l0aW9uKS5zZXRFcnJvckhhbmRs ZXIoZnVuY3Rpb24ocmEpe3BhKCk7bmEocmEpO30pLnNldFRyYW5zcG9ydEVycm9y SGFuZGxlcihmdW5jdGlvbihyYSl7cGEoKTtvYShyYSk7fSkuc2V0U2VydmVyRGlh bG9nQ2FuY2VsSGFuZGxlcihxYSk7aWEuc2VuZCgpO3RoaXMuX2FzeW5jX3JlcXVl c3Q9aWE7aWYodGhpcy5fc2hvd2luZyl0aGlzLnNob3coKTtyZXR1cm4gdGhpczt9 LF9mb3JtYXQ6ZnVuY3Rpb24oaWEpe2lmKHR5cGVvZiBpYT09J3N0cmluZycpe2lh PXEoaWEpO31lbHNlIGlhPXEucmVwbGFjZUpTT05XcmFwcGVyKGlhKTtpZihpYSBp bnN0YW5jZW9mIHEpaWEuc2V0RGVmZXJyZWQodHJ1ZSk7cmV0dXJuIGlhO30sX3Vw ZGF0ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9zaG93aW5nKXJldHVybjtpZih0aGlz Ll9hdXRvaGlkZSYmIXRoaXMuX2FzeW5jX3JlcXVlc3QmJiF0aGlzLl9hdXRvaGlk ZV90aW1lb3V0KXRoaXMuX2F1dG9oaWRlX3RpbWVvdXQ9c2V0VGltZW91dChhYSh0

aGlzLCdoaWRlJyksdGhpcy5fYXV0b2hpZGUpO20ucmVtb3ZlQ2xhc3ModGhpcy5f ZnJhbWUsJ2RpYWxvZ19sb2FkaW5nX3Nob3duJyk7dGhpcy5fbG9hZGluZz1mYWxz ZTt0aGlzLl9yZW5kZXJEaWFsb2coKTt0aGlzLl9ydW5PbmxvYWRzKCk7dGhpcy5f cHJldmlvdXNfZm9jdXM9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyLmZvY3VzKHRo aXMuX2ZyYW1lKTt9LF9ydW5PbmxvYWRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBpYT0w O2lhPHRoaXMuX29ubG9hZF9oYW5kbGVycy5sZW5ndGg7KytpYSl0cnl7dGhpcy5f b25sb2FkX2hhbmRsZXJzW2lhXSgpO31jYXRjaChqYSl7fXRoaXMuX29ubG9hZF9o YW5kbGVycz1bXTt9LF91cGRhdGVXaWR0aDpmdW5jdGlvbigpe3ZhciBpYT0yKmhh Ll9CT1JERVJfV0lEVEg7aWYoaGEuX2lzVXNpbmdDU1NCb3JkZXJzKCkpaWErPTIq aGEuX0hBTE9fV0lEVEg7aWYodGhpcy5fY29udGVudF93aWR0aCl7aWErPXRoaXMu X2NvbnRlbnRfd2lkdGg7aWYoIXRoaXMuX2Z1bGxfYmxlZWQpaWErPTIqaGEuX1BB RERJTkdfV0lEVEg7fWVsc2UgaWYodGhpcy5fd2lkZV9kaWFsb2cpe2lhKz1oYS5T SVpFLldJREU7fWVsc2UgaWErPWhhLlNJWkUuU1RBTkRBUkQ7dGhpcy5fcG9wdXAu c3R5bGUud2lkdGg9aWErJ3B4Jzt9LF91cGRhdGVaSW5kZXg6ZnVuY3Rpb24oKXtp ZighdGhpcy5faGFzU2V0WkluZGV4JiZ0aGlzLl9jYXVzYWxfZWxlbSl7dmFyIGlh PWVhKHRoaXMuX2NhdXNhbF9lbGVtKTt0aGlzLl9oYXNTZXRaSW5kZXg9aWE+KHRo aXMuX21vZGFsPzQwMDoyMDApO3cuc2V0KHRoaXMuX29iaiwnei1pbmRleCcsdGhp cy5faGFzU2V0WkluZGV4P2lhOicnKTt9fSxfcmVuZGVyRGlhbG9nOmZ1bmN0aW9u KCl7dGhpcy5fdXBkYXRlWkluZGV4KCk7dGhpcy5fcHVzaE9udG9TdGFjaygpO3Ro aXMuX29iai5zdHlsZS5oZWlnaHQ9KHRoaXMuX21vZGFsJiZ5LmllKCk8Nyk/ei5n ZXREb2N1bWVudERpbWVuc2lvbnMoKS55KydweCc6bnVsbDtpZih0aGlzLl9vYmom JnRoaXMuX29iai5zdHlsZS5kaXNwbGF5KXt0aGlzLl9vYmouc3R5bGUudmlzaWJp bGl0eT0naGlkZGVuJzt0aGlzLl9vYmouc3R5bGUuZGlzcGxheT0nJzt0aGlzLnJl c2V0RGlhbG9nUG9zaXRpb24oKTt0aGlzLl9vYmouc3R5bGUudmlzaWJpbGl0eT0n Jzt0aGlzLl9vYmouZGlhbG9nPXRoaXM7fWVsc2UgdGhpcy5yZXNldERpYWxvZ1Bv c2l0aW9uKCk7Y2xlYXJJbnRlcnZhbCh0aGlzLmFjdGl2ZV9oaWRpbmcpO3RoaXMu YWN0aXZlX2hpZGluZz1zZXRJbnRlcnZhbCh0aGlzLl9hY3RpdmVSZXNpemUuYmlu ZCh0aGlzKSw1MDApO3RoaXMuX3N1Ym1pdF9vbl9lbnRlcj1mYWxzZTtpZih0aGlz Ll9hdXRvX2ZvY3VzKXt2YXIgaWE9cC5nZXRGaXJzdEVsZW1lbnQodGhpcy5fY29u dGVudCxbJ2lucHV0W3R5cGU9InRleHQiXScsJ3RleHRhcmVhJywnaW5wdXRbdHlw ZT0icGFzc3dvcmQiXSddKTtpZihpYSl7cC5mb2N1c0ZpcnN0LmJpbmQodGhpcyx0 aGlzLl9jb250ZW50KS5kZWZlcigpO31lbHNlIHRoaXMuX3N1Ym1pdF9vbl9lbnRl cj10cnVlO312YXIgamE9ei5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLl9jb250 ZW50KS55K3ouZ2V0RWxlbWVudFBvc2l0aW9uKHRoaXMuX2NvbnRlbnQpLnk7aGEu X2JvdHRvbXMucHVzaChqYSk7dGhpcy5fYm90dG9tPWphO2hhLl91cGRhdGVNYXhC b3R0b20oKTtyZXR1cm4gdGhpczt9LF9idWlsZERpYWxvZzpmdW5jdGlvbigpe3Ro aXMuX29iaj1vLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOidnZW5lcmljX2RpYWxv ZycsaWQ6dGhpcy5fdW5pcXVlSUR9KTt0aGlzLl9vYmouc3R5bGUuZGlzcGxheT0n bm9uZSc7by5hcHBlbmRDb250ZW50KGRvY3VtZW50LmJvZHksdGhpcy5fb2JqKTtp ZighdGhpcy5fcG9wdXApdGhpcy5fcG9wdXA9by5jcmVhdGUoJ2Rpdicse2NsYXNz TmFtZTonZ2VuZXJpY19kaWFsb2dfcG9wdXAnfSk7dGhpcy5fb2JqLmFwcGVuZENo aWxkKHRoaXMuX3BvcHVwKTtpZih5LmllKCk8NyYmIXRoaXMuX3NoaW0pay5sb2Fk TW9kdWxlcyhbJ0lmcmFtZVNoaW0nXSxmdW5jdGlvbih1YSl7dGhpcy5fc2hpbT1u ZXcgdWEodGhpcy5fcG9wdXApO30pO20uYWRkQ2xhc3ModGhpcy5fb2JqLCdwb3Bf ZGlhbG9nJyk7aWYodC5pc1JUTCgpKW0uYWRkQ2xhc3ModGhpcy5fb2JqLCdwb3Bf ZGlhbG9nX3J0bCcpO3ZhciBpYTtpZihoYS5faXNVc2luZ0NTU0JvcmRlcnMoKSl7 aWE9JzxkaXYgY2xhc3M9InBvcF9jb250YWluZXJfYWR2YW5jZWQiPicrJzxkaXYg Y2xhc3M9InBvcF9jb250ZW50IiBpZD0icG9wX2NvbnRlbnQiPjwvZGl2PicrJzwv ZGl2Pic7fWVsc2UgaWE9JzxkaXYgY2xhc3M9InBvcF9jb250YWluZXIiPicrJzxk aXYgY2xhc3M9InBvcF92ZXJ0aWNhbHNsYWIiPjwvZGl2PicrJzxkaXYgY2xhc3M9 InBvcF9ob3Jpem9udGFsc2xhYiI+PC9kaXY+JysnPGRpdiBjbGFzcz0icG9wX3Rv cGxlZnQiPjwvZGl2PicrJzxkaXYgY2xhc3M9InBvcF90b3ByaWdodCI+PC9kaXY+ JysnPGRpdiBjbGFzcz0icG9wX2JvdHRvbXJpZ2h0Ij48L2Rpdj4nKyc8ZGl2IGNs YXNzPSJwb3BfYm90dG9tbGVmdCI+PC9kaXY+JysnPGRpdiBjbGFzcz0icG9wX2Nv bnRlbnQgcG9wX2NvbnRlbnRfb2xkIiBpZD0icG9wX2NvbnRlbnQiPjwvZGl2Picr JzwvZGl2Pic7by5zZXRDb250ZW50KHRoaXMuX3BvcHVwLHEoaWEpKTt2YXIgamE9 by5maW5kKHRoaXMuX3BvcHVwLCdkaXYucG9wX2NvbnRlbnQnKTtqYS5zZXRBdHRy aWJ1dGUoJ3RhYkluZGV4JywnMCcpO2phLnNldEF0dHJpYnV0ZSgncm9sZScsJ2Fs ZXJ0ZGlhbG9nJyk7dGhpcy5fZnJhbWU9dGhpcy5fY29udGVudD1qYTt2YXIga2E9 by5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTonZGlhbG9nX2xvYWRpbmcnfSwiTWVt

dWF0Li4uIiksbGE9by5jcmVhdGUoJ3NwYW4nKSxtYT1vLmNyZWF0ZSgnaDInLHtj bGFzc05hbWU6J2RpYWxvZ190aXRsZSBoaWRkZW5fZWxlbScsaWQ6J3RpdGxlXycr dGhpcy5fdW5pcXVlSUR9LGxhKSxuYT1vLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1l OidkaWFsb2dfc3VtbWFyeSBoaWRkZW5fZWxlbSd9KSxvYT1vLmNyZWF0ZSgnZGl2 Jyx7Y2xhc3NOYW1lOidkaWFsb2dfYm9keSd9KSxwYT1vLmNyZWF0ZSgnZGl2Jyks cWE9by5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTonZGlhbG9nX2J1dHRvbnNfbXNn J30pLHJhPW8uY3JlYXRlKCdkaXYnLHtjbGFzc05hbWU6J2RpYWxvZ19idXR0b25z IGNsZWFyZml4IGhpZGRlbl9lbGVtJ30sW3FhLHBhXSksc2E9by5jcmVhdGUoJ2Rp dicse2NsYXNzTmFtZTonZGlhbG9nX2Zvb3RlciBoaWRkZW5fZWxlbSd9KSx0YT1v LmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOidkaWFsb2dfY29udGVudCd9LFtuYSxv YSxyYSxzYV0pO3RoaXMuX25vZGVzPXtzdW1tYXJ5Om5hLGJvZHk6b2EsYnV0dG9u czpwYSxidXR0b25fbWVzc2FnZTpxYSxidXR0b25fd3JhcHBlcjpyYSxmb290ZXI6 c2EsY29udGVudDp0YSx0aXRsZTptYSx0aXRsZV9pbm5lcjpsYX07by5zZXRDb250 ZW50KHRoaXMuX2ZyYW1lLFttYSx0YSxrYV0pO30sX3VwZGF0ZVNoaW06ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fc2hpbSYmdGhpcy5fc2hpbS5zaG93KCk7fSxfYWN0 aXZlUmVzaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5sYXN0X29mZnNldF9oZWlnaHQh PXRoaXMuX2NvbnRlbnQub2Zmc2V0SGVpZ2h0KXt0aGlzLmxhc3Rfb2Zmc2V0X2hl aWdodD10aGlzLl9jb250ZW50Lm9mZnNldEhlaWdodDt0aGlzLnJlc2V0RGlhbG9n UG9zaXRpb24oKTt9fSxyZXNldERpYWxvZ1Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYo IXRoaXMuX3BvcHVwKXJldHVybjt0aGlzLl9yZXNldERpYWxvZ09iaigpO3RoaXMu X3VwZGF0ZVNoaW0oKTt9LF9yZXNldERpYWxvZ09iajpmdW5jdGlvbigpe3ZhciBp YT0yKmhhLl9QQUdFX01BUkdJTixqYT16LmdldFZpZXdwb3J0RGltZW5zaW9ucygp LGthPWphLngtaWEsbGE9amEueS1pYSxtYT0yKmhhLl9IQUxPX1dJRFRILG5hPXou Z2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5fY29udGVudCksb2E9bmEueCttYSxw YT1uYS55K21hLHFhPXRoaXMuX3RvcCxyYT1rYS1vYSxzYT1sYS1wYTtpZihzYTww KXtxYT1oYS5fUEFHRV9NQVJHSU47fWVsc2UgaWYocWE+c2EpcWE9aGEuX1BBR0Vf TUFSR0lOKyhNYXRoLm1heChzYSwwKS8yKTt2YXIgdGE9Z2EoKTtpZighdGEpcWEr PXouZ2V0U2Nyb2xsUG9zaXRpb24oKS55O3cuc2V0KHRoaXMuX3BvcHVwLCdtYXJn aW5Ub3AnLHFhKydweCcpO3ZhciB1YT10YSYmKHJhPDB8fHNhPDApO20uY29uZGl0 aW9uQ2xhc3ModGhpcy5fb2JqLCdnZW5lcmljX2RpYWxvZ19maXhlZF9vdmVyZmxv dycsdWEpO20uY29uZGl0aW9uQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LCdnZW5lcmljX2RpYWxvZ19vdmVyZmxvd19tb2RlJyx1YSk7fSxfZmFkZU91dDpm dW5jdGlvbihpYSl7aWYoIXRoaXMuX3BvcHVwKXJldHVybjt0cnl7bmV3IGgodGhp cy5fb2JqKS5kdXJhdGlvbigwKS5jaGVja3BvaW50KCkudG8oJ29wYWNpdHknLDAp LmhpZGUoKS5kdXJhdGlvbigyNTApLm9uZG9uZSh0aGlzLl9oaWRlLmJpbmQodGhp cyxpYSkpLmdvKCk7fWNhdGNoKGphKXt0aGlzLl9oaWRlKGlhKTt9fSxfaGlkZTpm dW5jdGlvbihpYSl7aWYodGhpcy5fb2JqKXRoaXMuX29iai5zdHlsZS5kaXNwbGF5 PSdub25lJzttLnJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwn Z2VuZXJpY19kaWFsb2dfb3ZlcmZsb3dfbW9kZScpO3RoaXMuX3VwZGF0ZVNoaW0o KTtjbGVhckludGVydmFsKHRoaXMuYWN0aXZlX2hpZGluZyk7aWYodGhpcy5fYm90 dG9tKXt2YXIgamE9aGEuX2JvdHRvbXM7amEuc3BsaWNlKGphLmluZGV4T2YodGhp cy5fYm90dG9tKSwxKTtoYS5fdXBkYXRlTWF4Qm90dG9tKCk7fWlmKHRoaXMuX3By ZXZpb3VzX2ZvY3VzJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZvLmNvbnRhaW5z KHRoaXMuX29iaixkb2N1bWVudC5hY3RpdmVFbGVtZW50KSlyLmZvY3VzKHRoaXMu X3ByZXZpb3VzX2ZvY3VzKTtpZihpYSlyZXR1cm47dGhpcy5kZXN0cm95KCk7fSxk ZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcG9wRnJvbVN0YWNrKCk7aWYodGhpcy5f b2JqKXtvLnJlbW92ZSh0aGlzLl9vYmopO3RoaXMuX29iaj1udWxsO3RoaXMuX3No aW0mJnRoaXMuX3NoaW0uaGlkZSgpO3RoaXMuX3NoaW09bnVsbDt9dGhpcy5fY2xp Y2tPbkVudGVyTGlzdGVuZXImJnRoaXMuX2NsaWNrT25FbnRlckxpc3RlbmVyLnJl bW92ZSgpO2lmKHRoaXMuX2Nsb3NlX2hhbmRsZXIpdGhpcy5fY2xvc2VfaGFuZGxl cih7cmV0dXJuX2RhdGE6dGhpcy5fcmV0dXJuX2RhdGF9KTt9LF9oYW5kbGVCdXR0 b246ZnVuY3Rpb24oaWEpe2lmKHR5cGVvZiBpYT09J3N0cmluZycpaWE9aGEuX2Zp bmRCdXR0b24odGhpcy5fYnV0dG9ucyxpYSk7dmFyIGphPWhhLmNhbGxfb3JfZXZh bChpYSxpYS5oYW5kbGVyKTtpZihqYT09PWZhbHNlKXJldHVybjtpZihpYS5uYW1l PT0nY2FuY2VsJyl7dGhpcy5jYW5jZWwoKTt9ZWxzZSBpZihoYS5jYWxsX29yX2V2 YWwodGhpcyx0aGlzLl9oYW5kbGVyLHtidXR0b246aWF9KSE9PWZhbHNlKXRoaXMu aGlkZSgpO30sX3N1Ym1pdEZvcm06ZnVuY3Rpb24oaWEsamEsa2Epe3ZhciBsYT10 aGlzLmdldEZvcm1EYXRhKCk7aWYoa2EpbGFba2EubmFtZV09a2EubGFiZWw7aWYo dGhpcy5fZXh0cmFfZGF0YSliYShsYSx0aGlzLl9leHRyYV9kYXRhKTt2YXIgbWE9 bmV3IGooKS5zZXRVUkkoamEpLnNldERhdGEobGEpLnNldE1ldGhvZChpYSkuc2V0

TmVjdGFyTW9kdWxlRGF0YVNhZmUodGhpcy5fY2F1c2FsX2VsZW0pLnNldFJlYWRP bmx5KGlhPT0nR0VUJyk7dGhpcy5zZXRBc3luYyhtYSk7cmV0dXJuIGZhbHNlO30s X3NldEZyb21Nb2RlbDpmdW5jdGlvbihpYSl7dmFyIGphPXt9O2JhKGphLGlhKTtm b3IodmFyIGthIGluIGphKXtpZihrYT09J29ubG9hZFJlZ2lzdGVyJyl7dGhpcy5v bmxvYWRSZWdpc3RlcihqYVtrYV0pO2NvbnRpbnVlO312YXIgbGE9dGhpc1snc2V0 JytrYS5zdWJzdHIoMCwxKS50b1VwcGVyQ2FzZSgpK2thLnN1YnN0cigxKV07bGEu YXBwbHkodGhpcyxjYShqYVtrYV0pKTt9fSxfdXBkYXRlQm90dG9tOmZ1bmN0aW9u KCl7dmFyIGlhPXouZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5fY29udGVudCku eSt6LmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLl9jb250ZW50KS55O2hhLl9ib3R0 b21zW2hhLl9ib3R0b21zLmxlbmd0aC0xXT1pYTtoYS5fdXBkYXRlTWF4Qm90dG9t KCk7fSxfcHVzaE9udG9TdGFjazpmdW5jdGlvbigpe3ZhciBpYT1oYS5fc3RhY2s7 aWYoIWlhLmxlbmd0aClpLmluZm9ybSgnbGF5ZXJfc2hvd24nLHt0eXBlOidEaWFs b2cnfSk7aWEucmVtb3ZlKHRoaXMpO2lhLnB1c2godGhpcyk7Zm9yKHZhciBqYT1p YS5sZW5ndGgtMjtqYT49MDtqYS0tKXt2YXIga2E9aWFbamFdO2lmKCFrYS5faXNf c3RhY2thYmxlJiYha2EuX2FzeW5jX3JlcXVlc3Qpe2thLl9oaWRlKCk7fWVsc2Ug aWYoIWthLl9zaG93bl93aGlsZV9zdGFja2VkKWthLl9oaWRlKHRydWUpO319LF9w b3BGcm9tU3RhY2s6ZnVuY3Rpb24oKXt2YXIgaWE9aGEuX3N0YWNrLGphPShpYVtp YS5sZW5ndGgtMV09PT10aGlzKTtpYS5yZW1vdmUodGhpcyk7aWYoaWEubGVuZ3Ro KXtpZihqYSlpYVtpYS5sZW5ndGgtMV0uc2hvdygpO31lbHNlIGkuaW5mb3JtKCds YXllcl9oaWRkZW4nLHt0eXBlOidEaWFsb2cnfSk7fX0pO2UuZXhwb3J0cz1oYTt9 KTsKX19kKCJWaWV3cG9ydEJvdW5kcyIsWyJTdHlsZSIsImdlIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ1N0eWxlJyksaD1iKCdnZScpLGk9e3RvcDpb XSxyaWdodDpbXSxib3R0b206W10sbGVmdDpbXX07ZnVuY3Rpb24gaihuKXtyZXR1 cm4gZnVuY3Rpb24oKXt2YXIgbz0wO2lbbl0uZm9yRWFjaChmdW5jdGlvbihwKXtv PU1hdGgubWF4KG8scC5nZXRTaXplKCkpO30pO3JldHVybiBvO307fWZ1bmN0aW9u IGsobil7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBuZXcgbChuLG8pO307fWZ1 bmN0aW9uIGwobixvKXt0aGlzLmdldFNpZGU9YmFnb2Yobik7dGhpcy5nZXRTaXpl PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvPT09J2Z1bmN0aW9uJz9vKCk6bzt9 O2lbbl0ucHVzaCh0aGlzKTt9bC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7 aVt0aGlzLmdldFNpZGUoKV0ucmVtb3ZlKHRoaXMpO307dmFyIG09e2dldFRvcDpq KCd0b3AnKSxnZXRSaWdodDpqKCdyaWdodCcpLGdldEJvdHRvbTpqKCdib3R0b20n KSxnZXRMZWZ0OmooJ2xlZnQnKSxhZGRUb3A6aygndG9wJyksYWRkUmlnaHQ6aygn cmlnaHQnKSxhZGRCb3R0b206aygnYm90dG9tJyksYWRkTGVmdDprKCdsZWZ0Jyl9 O20uYWRkVG9wKGZ1bmN0aW9uKCl7dmFyIG49aCgnYmx1ZUJhcicpO2lmKG4mJmcu aXNGaXhlZChuKSlyZXR1cm4gaCgnYmx1ZUJhckhvbGRlcicpLm9mZnNldEhlaWdo dDtyZXR1cm4gMDt9KTtlLmV4cG9ydHM9bTt9KTsKX19kKCJET01TY3JvbGwiLFsi QW5pbWF0aW9uIiwiQXJiaXRlciIsIkRPTSIsIkRPTVF1ZXJ5IiwiVXNlckFnZW50 IiwiVmVjdG9yIiwiVmlld3BvcnRCb3VuZHMiLCJnZSJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdBbmltYXRpb24nKSxoPWIoJ0FyYml0ZXInKSxpPWIo J0RPTScpLGo9YignRE9NUXVlcnknKSxrPWIoJ1VzZXJBZ2VudCcpLGw9YignVmVj dG9yJyksbT1iKCdWaWV3cG9ydEJvdW5kcycpLG49YignZ2UnKSxvPXtTQ1JPTEw6 J2RvbS1zY3JvbGwnLGdldFNjcm9sbFN0YXRlOmZ1bmN0aW9uKCl7dmFyIHA9bC5n ZXRWaWV3cG9ydERpbWVuc2lvbnMoKSxxPWwuZ2V0RG9jdW1lbnREaW1lbnNpb25z KCkscj0ocS54PnAueCkscz0ocS55PnAueSk7cis9MDtzKz0wO3JldHVybiBuZXcg bChyLHMpO30sX3Njcm9sbGJhclNpemU6bnVsbCxfaW5pdFNjcm9sbGJhclNpemU6 ZnVuY3Rpb24oKXt2YXIgcD1pLmNyZWF0ZSgncCcpO3Auc3R5bGUud2lkdGg9JzEw MCUnO3Auc3R5bGUuaGVpZ2h0PScyMDBweCc7dmFyIHE9aS5jcmVhdGUoJ2Rpdicp O3Euc3R5bGUucG9zaXRpb249J2Fic29sdXRlJztxLnN0eWxlLnRvcD0nMHB4Jztx LnN0eWxlLmxlZnQ9JzBweCc7cS5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nO3Eu c3R5bGUud2lkdGg9JzIwMHB4JztxLnN0eWxlLmhlaWdodD0nMTUwcHgnO3Euc3R5 bGUub3ZlcmZsb3c9J2hpZGRlbic7cS5hcHBlbmRDaGlsZChwKTtkb2N1bWVudC5i b2R5LmFwcGVuZENoaWxkKHEpO3ZhciByPXAub2Zmc2V0V2lkdGg7cS5zdHlsZS5v dmVyZmxvdz0nc2Nyb2xsJzt2YXIgcz1wLm9mZnNldFdpZHRoO2lmKHI9PXMpcz1x LmNsaWVudFdpZHRoO2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocSk7by5fc2Ny b2xsYmFyU2l6ZT1yLXM7fSxnZXRTY3JvbGxiYXJTaXplOmZ1bmN0aW9uKCl7aWYo by5fc2Nyb2xsYmFyU2l6ZT09PW51bGwpby5faW5pdFNjcm9sbGJhclNpemUoKTty ZXR1cm4gby5fc2Nyb2xsYmFyU2l6ZTt9LHNjcm9sbFRvOmZ1bmN0aW9uKHAscSxy LHMsdCl7aWYodHlwZW9mIHE9PSd1bmRlZmluZWQnfHxxPT09dHJ1ZSlxPTc1MDtp ZihrLm9zeCgpPT09MTAuOCYmay5zYWZhcmkoKT09PTUzNi4yNSYmIWsuY2hyb21l KCkpcT1mYWxzZTtpZighKHAgaW5zdGFuY2VvZiBsKSl7dmFyIHU9bC5nZXRTY3Jv

bGxQb3NpdGlvbigpLngsdj1sLmdldEVsZW1lbnRQb3NpdGlvbihuKHApKS55O3A9 bmV3IGwodSx2LCdkb2N1bWVudCcpO2lmKCFzKXAueS09bS5nZXRUb3AoKS8ocj8y OjEpO31pZihyKXtwLnktPWwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkueS8yO31l bHNlIGlmKHMpe3AueS09bC5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKS55O3AueSs9 czt9cD1wLmNvbnZlcnRUbygnZG9jdW1lbnQnKTtpZihxKXtyZXR1cm4gbmV3IGco ZG9jdW1lbnQuYm9keSkudG8oJ3Njcm9sbFRvcCcscC55KS50bygnc2Nyb2xsTGVm dCcscC54KS5lYXNlKGcuZWFzZS5lbmQpLmR1cmF0aW9uKHEpLm9uZG9uZSh0KS5n bygpO31lbHNlIGlmKHdpbmRvdy5zY3JvbGxUbyl7d2luZG93LnNjcm9sbFRvKHAu eCxwLnkpO3QmJnQoKTt9aC5pbmZvcm0oby5TQ1JPTEwpO30sZW5zdXJlVmlzaWJs ZTpmdW5jdGlvbihwLHEscixzLHQpe2lmKHI9PT11bmRlZmluZWQpcj0xMDtwPW4o cCk7aWYocSlwPWouZmluZChwLHEpO3ZhciB1PWwuZ2V0U2Nyb2xsUG9zaXRpb24o KS54LHY9bC5nZXRTY3JvbGxQb3NpdGlvbigpLnksdz12K2wuZ2V0Vmlld3BvcnRE aW1lbnNpb25zKCkueSx4PWwuZ2V0RWxlbWVudFBvc2l0aW9uKHApLnkseT14K2wu Z2V0RWxlbWVudERpbWVuc2lvbnMocCkueTt4LT1tLmdldFRvcCgpO3gtPXI7eSs9 cjtpZih4PHYpe28uc2Nyb2xsVG8obmV3IGwodSx4LCdkb2N1bWVudCcpLHMsZmFs c2UsZmFsc2UsdCk7fWVsc2UgaWYoeT53KWlmKHgtKHktdyk8dil7by5zY3JvbGxU byhuZXcgbCh1LHgsJ2RvY3VtZW50JykscyxmYWxzZSxmYWxzZSx0KTt9ZWxzZSBv LnNjcm9sbFRvKG5ldyBsKHUseSwnZG9jdW1lbnQnKSxzLGZhbHNlLHRydWUsdCk7 fSxzY3JvbGxUb1RvcDpmdW5jdGlvbihwKXt2YXIgcT1sLmdldFNjcm9sbFBvc2l0 aW9uKCk7by5zY3JvbGxUbyhuZXcgbChxLngsMCwnZG9jdW1lbnQnKSxwIT09ZmFs c2UpO319O2UuZXhwb3J0cz1vO30pOwpfX2QoIkhpc3RvcnlNYW5hZ2VyIixbImV2 ZW50LWV4dGVuc2lvbnMiLCJmdW5jdGlvbi1leHRlbnNpb25zIiwiQ29va2llIiwi RW52IiwiVVJJIiwiVXNlckFnZW50IiwiY29weVByb3BlcnRpZXMiLCJnb09yUmVw bGFjZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25z Jyk7YignZnVuY3Rpb24tZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0Nvb2tpZScpLGg9 YignRW52JyksaT1iKCdVUkknKSxqPWIoJ1VzZXJBZ2VudCcpLGs9YignY29weVBy b3BlcnRpZXMnKSxsPWIoJ2dvT3JSZXBsYWNlJyksbT17X0lGUkFNRV9CQVNFX1VS STonaHR0cDovL3N0YXRpYy5hay5mYWNlYm9vay5jb20vY29tbW9uL2hpc3Rvcnlf bWFuYWdlci5waHAnLGhpc3Rvcnk6bnVsbCxjdXJyZW50OjAsZnJhZ21lbnQ6bnVs bCxfc2V0SWZyYW1lU3JjRnJhZ21lbnQ6ZnVuY3Rpb24obil7bj1uLnRvU3RyaW5n KCk7dmFyIG89bS5oaXN0b3J5Lmxlbmd0aC0xO20uaWZyYW1lLnNyYz1tLl9JRlJB TUVfQkFTRV9VUkkrJz98aW5kZXg9JytvKycjJytlbmNvZGVVUklDb21wb25lbnQo bik7cmV0dXJuIG07fSxnZXRJZnJhbWVTcmNGcmFnbWVudDpmdW5jdGlvbigpe3Jl dHVybiBkZWNvZGVVUklDb21wb25lbnQoaShtLmlmcmFtZS5jb250ZW50V2luZG93 LmRvY3VtZW50LmxvY2F0aW9uLmhyZWYpLmdldEZyYWdtZW50KCkpO30sbmV4dGZy YW1lOmZ1bmN0aW9uKG4sbyl7aWYobyl7bS5fc2V0SWZyYW1lU3JjRnJhZ21lbnQo bik7cmV0dXJuO31pZihuIT09dW5kZWZpbmVkKXttLmlmcmFtZVF1ZXVlLnB1c2go bik7fWVsc2V7bS5pZnJhbWVRdWV1ZS5zcGxpY2UoMCwxKTttLmlmcmFtZVRpbWVv dXQ9bnVsbDttLmNoZWNrVVJJKCk7fWlmKG0uaWZyYW1lUXVldWUubGVuZ3RoJiYh bS5pZnJhbWVUaW1lb3V0KXt2YXIgcD1tLmlmcmFtZVF1ZXVlWzBdO20uaWZyYW1l VGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bS5fc2V0SWZyYW1lU3JjRnJh Z21lbnQocCk7fSwxMDAsZmFsc2UpO319LGlzSW5pdGlhbGl6ZWQ6ZnVuY3Rpb24o KXtyZXR1cm4gISFtLl9pbml0aWFsaXplZDt9LGluaXQ6ZnVuY3Rpb24oKXtpZigh aC5BTExPV19UUkFOU0lUSU9OX0lOX0lGUkFNRSYmd2luZG93IT13aW5kb3cudG9w KXJldHVybjtpZihtLl9pbml0aWFsaXplZClyZXR1cm4gbTt2YXIgbj1pKCksbz1u LmdldEZyYWdtZW50KCl8fCcnO2lmKG8uY2hhckF0KDApPT09JyEnKXtvPW8uc3Vi c3RyKDEpO24uc2V0RnJhZ21lbnQobyk7fWlmKGkuZ2V0UmVxdWVzdFVSSShmYWxz ZSkuZ2V0UHJvdG9jb2woKS50b0xvd2VyQ2FzZSgpPT0naHR0cHMnKW0uX0lGUkFN RV9CQVNFX1VSST0naHR0cHM6Ly9zLXN0YXRpYy5hay5mYWNlYm9vay5jb20vY29t bW9uL2hpc3RvcnlfbWFuYWdlci5waHAnO2sobSx7X2luaXRpYWxpemVkOnRydWUs ZnJhZ21lbnQ6byxvcmlnX2ZyYWdtZW50Om8saGlzdG9yeTpbbl0sY2FsbGJhY2tz OltdLGxhc3RDaGFuZ2VkOkRhdGUubm93KCksY2Fub25pY2FsOmkoJyMnKSxmcmFn bWVudFRpbWVvdXQ6bnVsbCx1c2VyOjAsaWZyYW1lVGltZW91dDpudWxsLGlmcmFt ZVF1ZXVlOltdLGVuYWJsZWQ6dHJ1ZSxkZWJ1ZzpiYWdvZmhvbGRpbmd9KTtpZih3 aW5kb3cuaGlzdG9yeSYmaGlzdG9yeS5wdXNoU3RhdGUpe3RoaXMubGFzdFVSST1k b2N1bWVudC5VUkw7d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHRoaXMubGFz dFVSSSxudWxsKTtFdmVudC5saXN0ZW4od2luZG93LCdwb3BzdGF0ZScsZnVuY3Rp b24ocCl7aWYocCYmcC5zdGF0ZSYmbS5sYXN0VVJJIT1wLnN0YXRlKXttLmxhc3RV Ukk9cC5zdGF0ZTttLmxhc3RDaGFuZ2VkPURhdGUubm93KCk7bS5ub3RpZnkoaShw LnN0YXRlKS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkpO319LmJpbmQo

bSkpO2lmKGouc2FmYXJpKCk8NTM0fHxqLmNocm9tZSgpPD0xMyl7c2V0SW50ZXJ2 YWwobS5jaGVja1VSSSw0MixmYWxzZSk7bS5fdXBkYXRlUmVmZXJlclVSSSh0aGlz Lmxhc3RVUkkpO31yZXR1cm4gbTt9bS5fdXBkYXRlUmVmZXJlclVSSShpLmdldFJl cXVlc3RVUkkoZmFsc2UpKTtpZihqLnNhZmFyaSgpPDUwMHx8ai5maXJlZm94KCk8 Mil7bS5lbmFibGVkPWZhbHNlO3JldHVybiBtO31pZihqLmllKCk8OCl7bS5pZnJh bWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7ayhtLmlmcmFtZS5z dHlsZSx7d2lkdGg6JzAnLGhlaWdodDonMCcsZnJhbWVib3JkZXI6JzAnLGxlZnQ6 JzAnLHRvcDonMCcscG9zaXRpb246J2Fic29sdXRlJ30pO20uX3NldElmcmFtZVNy Y0ZyYWdtZW50KG8pO2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKG0uaWZyYW1l LGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7fWVsc2UgaWYoJ29uaGFzaGNoYW5n ZScgaW4gd2luZG93KXtFdmVudC5saXN0ZW4od2luZG93LCdoYXNoY2hhbmdlJyxm dW5jdGlvbigpe20uY2hlY2tVUkkuYmluZChtKS5kZWZlcigpO30pO31lbHNlIHNl dEludGVydmFsKG0uY2hlY2tVUkksNDIsZmFsc2UpO3JldHVybiBtO30scmVnaXN0 ZXJVUklIYW5kbGVyOmZ1bmN0aW9uKG4pe20uY2FsbGJhY2tzLnB1c2gobik7cmV0 dXJuIG07fSxzZXRDYW5vbmljYWxMb2NhdGlvbjpmdW5jdGlvbihuKXttLmNhbm9u aWNhbD1pKG4pO3JldHVybiBtO30sbm90aWZ5OmZ1bmN0aW9uKG4pe2lmKG49PW0u b3JpZ19mcmFnbWVudCluPW0uY2Fub25pY2FsLmdldEZyYWdtZW50KCk7Zm9yKHZh ciBvPTA7bzxtLmNhbGxiYWNrcy5sZW5ndGg7bysrKXRyeXtpZihtLmNhbGxiYWNr c1tvXShuKSlyZXR1cm4gdHJ1ZTt9Y2F0Y2gocCl7fXJldHVybiBmYWxzZTt9LGNo ZWNrVVJJOmZ1bmN0aW9uKCl7aWYoRGF0ZS5ub3coKS1tLmxhc3RDaGFuZ2VkPDQw MClyZXR1cm47aWYod2luZG93Lmhpc3RvcnkmJmhpc3RvcnkucHVzaFN0YXRlKXt2 YXIgbj1pKGRvY3VtZW50LlVSTCkucmVtb3ZlUXVlcnlEYXRhKCdyZWYnKS50b1N0 cmluZygpLG89aShtLmxhc3RVUkkpLnJlbW92ZVF1ZXJ5RGF0YSgncmVmJykudG9T dHJpbmcoKTtpZihuIT1vKXttLmxhc3RDaGFuZ2VkPURhdGUubm93KCk7bS5sYXN0 VVJJPW47aWYoai5zYWZhcmkoKTw1MzQpbS5fdXBkYXRlUmVmZXJlclVSSShuKTtt Lm5vdGlmeShpKG4pLmdldFVucXVhbGlmaWVkVVJJKCkudG9TdHJpbmcoKSk7fXJl dHVybjt9aWYoai5pZSgpPDgmJm0uaWZyYW1lUXVldWUubGVuZ3RoKXJldHVybjtp ZihqLnNhZmFyaSgpJiZ3aW5kb3cuaGlzdG9yeS5sZW5ndGg9PTIwMCl7aWYoIW0u d2FybmVkKW0ud2FybmVkPXRydWU7cmV0dXJuO312YXIgcD1pKCkuZ2V0RnJhZ21l bnQoKTtpZihwLmNoYXJBdCgwKT09JyEnKXA9cC5zdWJzdHIoMSk7aWYoai5pZSgp PDgpcD1tLmdldElmcmFtZVNyY0ZyYWdtZW50KCk7cD1wLnJlcGxhY2UoLyUyMy9n LCcjJyk7aWYocCE9bS5mcmFnbWVudC5yZXBsYWNlKC8lMjMvZywnIycpKXttLmRl YnVnKFtwLCcgdnMgJyxtLmZyYWdtZW50LCd3aGw6ICcsd2luZG93Lmhpc3Rvcnku bGVuZ3RoLCdRSEw6ICcsbS5oaXN0b3J5Lmxlbmd0aF0uam9pbignICcpKTtmb3Io dmFyIHE9bS5oaXN0b3J5Lmxlbmd0aC0xO3E+PTA7LS1xKWlmKG0uaGlzdG9yeVtx XS5nZXRGcmFnbWVudCgpLnJlcGxhY2UoLyUyMy9nLCcjJyk9PXApYnJlYWs7Kytt LnVzZXI7aWYocT49MCl7bS5nbyhxLW0uY3VycmVudCk7fWVsc2UgbS5nbygnIycr cCk7LS1tLnVzZXI7fX0sX3VwZGF0ZVJlZmVyZXJVUkk6ZnVuY3Rpb24obil7bj1u LnRvU3RyaW5nKCk7aWYobi5jaGFyQXQoMCkhPScvJyYmbi5pbmRleE9mKCcvLycp PT0tMSlyZXR1cm47dmFyIG89bmV3IGkod2luZG93LmxvY2F0aW9uKTtpZihvLmlz RmFjZWJvb2tVUkkoKSl7dmFyIHA9by5nZXRQYXRoKCkrd2luZG93LmxvY2F0aW9u LnNlYXJjaDt9ZWxzZSB2YXIgcD0nJzt2YXIgcT1pKG4pLmdldFF1YWxpZmllZFVS SSgpLnNldEZyYWdtZW50KHApLnRvU3RyaW5nKCkscj0yMDQ4O2lmKHEubGVuZ3Ro PnIpcT1xLnN1YnN0cmluZygwLHIpKycuLi4nO2cuc2V0KCd4LXJlZmVyZXInLHEp O30sZ286ZnVuY3Rpb24obixvLHApe2lmKHdpbmRvdy5oaXN0b3J5JiZoaXN0b3J5 LnB1c2hTdGF0ZSl7b3x8dHlwZW9mKG4pPT0nbnVtYmVyJzt2YXIgcT1pKG4pLnJl bW92ZVF1ZXJ5RGF0YSgncmVmJykudG9TdHJpbmcoKTttLmxhc3RDaGFuZ2VkPURh dGUubm93KCk7dGhpcy5sYXN0VVJJPXE7aWYocCl7d2luZG93Lmhpc3RvcnkucmVw bGFjZVN0YXRlKG4sbnVsbCxxKTt9ZWxzZSB3aW5kb3cuaGlzdG9yeS5wdXNoU3Rh dGUobixudWxsLHEpO2lmKGouc2FmYXJpKCk8NTM0KW0uX3VwZGF0ZVJlZmVyZXJV Ukkobik7cmV0dXJuIGZhbHNlO31tLmRlYnVnKCdnbzogJytuKTtpZihvPT09dW5k ZWZpbmVkKW89dHJ1ZTtpZighbS5lbmFibGVkKWlmKCFvKXJldHVybiBmYWxzZTtp Zih0eXBlb2Yobik9PSdudW1iZXInKXtpZighbilyZXR1cm4gZmFsc2U7dmFyIHI9 bittLmN1cnJlbnQscz1NYXRoLm1heCgwLE1hdGgubWluKG0uaGlzdG9yeS5sZW5n dGgtMSxyKSk7bS5jdXJyZW50PXM7cj1tLmhpc3Rvcnlbc10uZ2V0RnJhZ21lbnQo KXx8bS5vcmlnX2ZyYWdtZW50O3I9aShyKS5yZW1vdmVRdWVyeURhdGEoJ3JlZicp LmdldFVucXVhbGlmaWVkVVJJKCkudG9TdHJpbmcoKTttLmZyYWdtZW50PXI7bS5s YXN0Q2hhbmdlZD1EYXRlLm5vdygpO2lmKGouaWUoKTw4KXtpZihtLmZyYWdtZW50 VGltZW91dCljbGVhclRpbWVvdXQobS5mcmFnbWVudFRpbWVvdXQpO20uX3RlbXBv cmFyeV9mcmFnbWVudD1yO20uZnJhZ21lbnRUaW1lb3V0PXNldFRpbWVvdXQoZnVu

Y3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaGFzaD0nIyEnK3I7ZGVsZXRlIG0uX3Rl bXBvcmFyeV9mcmFnbWVudDt9LDc1MCxmYWxzZSk7aWYoIW0udXNlciltLm5leHRm cmFtZShyLHApO31lbHNlIGlmKCFtLnVzZXIpbCh3aW5kb3cubG9jYXRpb24sd2lu ZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJyMnKVswXSsnIyEnK3IscCk7aWYobylt Lm5vdGlmeShyKTttLl91cGRhdGVSZWZlcmVyVVJJKHIpO3JldHVybiBmYWxzZTt9 bj1pKG4pO2lmKG4uZ2V0RG9tYWluKCk9PWkoKS5nZXREb21haW4oKSluPWkoJyMn K24uZ2V0VW5xdWFsaWZpZWRVUkkoKSk7dmFyIHQ9bS5oaXN0b3J5W20uY3VycmVu dF0uZ2V0RnJhZ21lbnQoKSx1PW4uZ2V0RnJhZ21lbnQoKTtpZih1PT10fHwodD09 bS5vcmlnX2ZyYWdtZW50JiZ1PT1tLmNhbm9uaWNhbC5nZXRGcmFnbWVudCgpKSl7 aWYobyltLm5vdGlmeSh1KTttLl91cGRhdGVSZWZlcmVyVVJJKHUpO3JldHVybiBm YWxzZTt9aWYocCltLmN1cnJlbnQtLTt2YXIgdj0obS5oaXN0b3J5Lmxlbmd0aC1t LmN1cnJlbnQpLTE7bS5oaXN0b3J5LnNwbGljZShtLmN1cnJlbnQrMSx2KTttLmhp c3RvcnkucHVzaChpKG4pKTtyZXR1cm4gbS5nbygxLG8scCk7fSxnZXRDdXJyZW50 RnJhZ21lbnQ6ZnVuY3Rpb24oKXt2YXIgbj1tLl90ZW1wb3JhcnlfZnJhZ21lbnQh PT11bmRlZmluZWQ/bS5fdGVtcG9yYXJ5X2ZyYWdtZW50OmkuZ2V0UmVxdWVzdFVS SShmYWxzZSkuZ2V0RnJhZ21lbnQoKTtyZXR1cm4gbj09bS5vcmlnX2ZyYWdtZW50 P20uY2Fub25pY2FsLmdldEZyYWdtZW50KCk6bjt9fTtlLmV4cG9ydHM9bTt9KTsK X19kKCJKU0xvZ2dlciIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXtN QVhfSElTVE9SWTo1MDAsY291bnRzOnt9LGNhdGVnb3JpZXM6e30sc2VxOjAscGFn ZUlkOihNYXRoLnJhbmRvbSgpKjIxNDc0ODM2NDh8MCkudG9TdHJpbmcoMzYpLGZv cndhcmRpbmc6ZmFsc2V9O2Z1bmN0aW9uIGgobCl7aWYobCBpbnN0YW5jZW9mIEVy cm9yJiZhLkVycm9yVXRpbHMpbD1hLkVycm9yVXRpbHMubm9ybWFsaXplRXJyb3Io bCk7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShsKTt9Y2F0Y2gobSl7cmV0dXJu ICd7fSc7fX1mdW5jdGlvbiBpKGwsZXZlbnQsbSl7aWYoIWcuY291bnRzW2xdKWcu Y291bnRzW2xdPXt9O2lmKCFnLmNvdW50c1tsXVtldmVudF0pZy5jb3VudHNbbF1b ZXZlbnRdPTA7bT1tPT1udWxsPzE6TnVtYmVyKG0pO2cuY291bnRzW2xdW2V2ZW50 XSs9aXNGaW5pdGUobSk/bTowO31nLmxvZ0FjdGlvbj1mdW5jdGlvbihldmVudCxs LG0pe2lmKHRoaXMudHlwZT09J2J1bXAnKXtpKHRoaXMuY2F0LGV2ZW50LGwpO31l bHNlIGlmKHRoaXMudHlwZT09J3JhdGUnKXsobCYmaSh0aGlzLmNhdCxldmVudCsn X24nLG0pKTtpKHRoaXMuY2F0LGV2ZW50KydfZCcsbSk7fWVsc2V7dmFyIG49e2Nh dDp0aGlzLmNhdCx0eXBlOnRoaXMudHlwZSxldmVudDpldmVudCxkYXRhOmwhPW51 bGw/aChsKTpudWxsLGRhdGU6RGF0ZS5ub3coKSxzZXE6Zy5zZXErK307Zy5oZWFk PWcuaGVhZD8oZy5oZWFkLm5leHQ9bik6KGcudGFpbD1uKTt3aGlsZShnLmhlYWQu c2VxLWcudGFpbC5zZXE+Zy5NQVhfSElTVE9SWSlnLnRhaWw9Zy50YWlsLm5leHQ7 cmV0dXJuIG47fX07ZnVuY3Rpb24gaihsKXtpZighZy5jYXRlZ29yaWVzW2xdKXtn LmNhdGVnb3JpZXNbbF09e307dmFyIG09ZnVuY3Rpb24obil7dmFyIG89e2NhdDps LHR5cGU6bn07Zy5jYXRlZ29yaWVzW2xdW25dPWZ1bmN0aW9uKCl7Zy5mb3J3YXJk aW5nPWZhbHNlO3ZhciBwPW51bGw7aWYoZG9jdW1lbnQuZG9tYWluIT0nZmFjZWJv b2suY29tJylyZXR1cm47cD1nLmxvZ0FjdGlvbjtpZigvXlwvKyhkaWFsb2dzfHBs dWdpbnM/KVwvLy50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lKSl7Zy5mb3J3YXJkaW5n PWZhbHNlO31lbHNlIHRyeXtwPWEudG9wLnJlcXVpcmUoJ0pTTG9nZ2VyJykuXy5s b2dBY3Rpb247Zy5mb3J3YXJkaW5nPXAhPT1nLmxvZ0FjdGlvbjt9Y2F0Y2gocSl7 fShwJiZwLmFwcGx5KG8sYXJndW1lbnRzKSk7fTt9O20oJ2RlYnVnJyk7bSgnbG9n Jyk7bSgnd2FybicpO20oJ2Vycm9yJyk7bSgnYnVtcCcpO20oJ3JhdGUnKTt9cmV0 dXJuIGcuY2F0ZWdvcmllc1tsXTt9ZnVuY3Rpb24gayhsLG0pe3ZhciBuPVtdO2Zv cih2YXIgbz1tfHxnLnRhaWw7bztvPW8ubmV4dClpZighbHx8bChvKSl7dmFyIHA9 e3R5cGU6by50eXBlLGNhdDpvLmNhdCxkYXRlOm8uZGF0ZSxldmVudDpvLmV2ZW50 LHNlcTpvLnNlcX07aWYoby5kYXRhKXAuZGF0YT1KU09OLnBhcnNlKG8uZGF0YSk7 bi5wdXNoKHApO31yZXR1cm4gbjt9ZS5leHBvcnRzPXtfOmcsRFVNUF9FVkVOVDon anNsb2dnZXIvZHVtcCcsY3JlYXRlOmosZ2V0RW50cmllczprfTt9KTsKX19kKCJM aW5rQ29udHJvbGxlciIsWyJldmVudC1leHRlbnNpb25zIiwiRGF0YVN0b3JlIiwi UGFyZW50IiwidHJhY2tSZWZlcnJlciJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXti KCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignRGF0YVN0b3JlJyksaD1iKCdQ YXJlbnQnKSxpPWIoJ3RyYWNrUmVmZXJyZXInKSxqPSdMaW5rQ29udHJvbGxlckhh bmRsZXInLGs9W10sbD1bXTtmdW5jdGlvbiBtKGV2ZW50KXt2YXIgcT1oLmJ5VGFn KGV2ZW50LmdldFRhcmdldCgpLCdhJykscj1xJiZxLmdldEF0dHJpYnV0ZSgnaHJl ZicsMik7aWYoIXJ8fHEucmVsfHwhbyhyKXx8Zy5nZXQocSxqKSlyZXR1cm47dmFy IHM9RXZlbnQubGlzdGVuKHEsJ2NsaWNrJyxmdW5jdGlvbih0KXtpZihyLmNoYXJB dChyLmxlbmd0aC0xKT09JyMnKXt0LnByZXZlbnQoKTtyZXR1cm47fWkocSxyKTtu KHEsdCk7fSk7Zy5zZXQocSxqLHMpO31mdW5jdGlvbiBuKHEsZXZlbnQpe2lmKHEu

dGFyZ2V0fHxldmVudC5nZXRNb2RpZmllcnMoKS5hbnl8fChldmVudC53aGljaCYm ZXZlbnQud2hpY2ghPTEpKXJldHVybjt2YXIgcj1rLmNvbmNhdChsKTtmb3IodmFy IHM9MCx0PXIubGVuZ3RoO3M8dDtzKyspaWYocltzXShxLGV2ZW50KT09PWZhbHNl KXJldHVybiBldmVudC5wcmV2ZW50KCk7fWZ1bmN0aW9uIG8ocSl7dmFyIHI9cS5t YXRjaCgvXihcdyspOi8pO3JldHVybiAhcnx8clsxXS5tYXRjaCgvXmh0dHAvaSk7 fXZhciBwPXtyZWdpc3RlckhhbmRsZXI6ZnVuY3Rpb24ocSl7ay5wdXNoKHEpO30s cmVnaXN0ZXJGYWxsYmFja0hhbmRsZXI6ZnVuY3Rpb24ocSl7bC5wdXNoKHEpO319 O0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ21vdXNlZG93 bicsbSk7RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwna2V5 ZG93bicsbSk7ZS5leHBvcnRzPXA7fSk7Cl9fZCgiaHRtbFNwZWNpYWxDaGFycyIs W10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGcoaCl7aWYodHlwZW9m IGg9PSd1bmRlZmluZWQnfHxoPT09bnVsbHx8IWgudG9TdHJpbmcpcmV0dXJuICcn O2lmKGg9PT1mYWxzZSl7cmV0dXJuICcwJzt9ZWxzZSBpZihoPT09dHJ1ZSlyZXR1 cm4gJzEnO3JldHVybiBoLnRvU3RyaW5nKCkucmVwbGFjZSgvJi9nLCcmYW1wOycp LnJlcGxhY2UoLyIvZywnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCcmIzAzOTsnKS5y ZXBsYWNlKC88L2csJyZsdDsnKS5yZXBsYWNlKC8+L2csJyZndDsnKTt9ZS5leHBv cnRzPWc7fSk7Cl9fZCgiaHRtbGl6ZSIsWyJodG1sU3BlY2lhbENoYXJzIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2h0bWxTcGVjaWFsQ2hhcnMnKTtm dW5jdGlvbiBoKGkpe3JldHVybiBnKGkpLnJlcGxhY2UoL1xyXG58W1xyXG5dL2cs JzxiciAvPicpO31lLmV4cG9ydHM9aDt9KTsKX19kKCJlc2NhcGVKU1F1b3RlcyIs W10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGcoaCl7aWYodHlwZW9m IGg9PSd1bmRlZmluZWQnfHxoPT1udWxsfHwhaC52YWx1ZU9mKCkpcmV0dXJuICcn O3JldHVybiBoLnRvU3RyaW5nKCkucmVwbGFjZSgvXFwvZywnXFxcXCcpLnJlcGxh Y2UoL1xuL2csJ1xcbicpLnJlcGxhY2UoL1xyL2csJ1xccicpLnJlcGxhY2UoLyIv ZywnXFx4MjInKS5yZXBsYWNlKC8nL2csJ1xcXCcnKS5yZXBsYWNlKC88L2csJ1xc eDNjJykucmVwbGFjZSgvPi9nLCdcXHgzZScpLnJlcGxhY2UoLyYvZywnXFx4MjYn KTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiYXJlT2JqZWN0c0VxdWFsIixbXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoLGkpe3JldHVybiBKU09OLnN0 cmluZ2lmeShoKT09SlNPTi5zdHJpbmdpZnkoaSk7fWUuZXhwb3J0cz1nO30pOwpf X2QoImNvbXB1dGVSZWxhdGl2ZVVSSSIsWyJVUkkiLCJpc0VtcHR5Il0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ1VSSScpLGg9YignaXNFbXB0eScpO2Z1 bmN0aW9uIGkoayxsKXtpZighbClyZXR1cm4gaztpZihsLmNoYXJBdCgwKT09Jy8n KXJldHVybiBsO3ZhciBtPWsuc3BsaXQoJy8nKS5zbGljZSgwLC0xKTttWzBdIT09 Jyc7bC5zcGxpdCgnLycpLmZvckVhY2goZnVuY3Rpb24obil7aWYoIShuPT0nLicp KWlmKG49PScuLicpe2lmKG0ubGVuZ3RoPjEpbT1tLnNsaWNlKDAsLTEpO31lbHNl IG0ucHVzaChuKTt9KTtyZXR1cm4gbS5qb2luKCcvJyk7fWZ1bmN0aW9uIGooayxs KXt2YXIgbT1uZXcgZygpLG49bDtrPW5ldyBnKGspO2w9bmV3IGcobCk7aWYobC5n ZXREb21haW4oKSYmIWwuaXNGYWNlYm9va1VSSSgpKXJldHVybiBuO3ZhciBvPWss cD1bJ1Byb3RvY29sJywnRG9tYWluJywnUG9ydCcsJ1BhdGgnLCdRdWVyeURhdGEn LCdGcmFnbWVudCddO3AuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgcj1xPT0nUGF0 aCcmJm89PT1rO2lmKHIpbS5zZXRQYXRoKGkoay5nZXRQYXRoKCksbC5nZXRQYXRo KCkpKTtpZighaChsWydnZXQnK3FdKCkpKW89bDtpZighciltWydzZXQnK3FdKG9b J2dldCcrcV0oKSk7fSk7cmV0dXJuIG07fWUuZXhwb3J0cz1qO30pOwpfX2QoInN0 YXJ0c1dpdGgiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgs aSxqKXt2YXIgaz1TdHJpbmcoaCk7aj1NYXRoLm1pbihNYXRoLm1heChqfHwwLDAp LGsubGVuZ3RoKTtyZXR1cm4gay5sYXN0SW5kZXhPZihTdHJpbmcoaSksaik9PT1q O31lLmV4cG9ydHM9Zzt9KTsKX19kKCJQYWdlVHJhbnNpdGlvbnMiLFsiZXZlbnQt ZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJEaWFsb2ciLCJET00iLCJET01TY3JvbGwi LCJFbnYiLCJGb3JtIiwiSGlzdG9yeU1hbmFnZXIiLCJKU0xvZ2dlciIsIkxpbmtD b250cm9sbGVyIiwiT25sb2FkSG9va3MiLCJodG1saXplIiwiZXNjYXBlSlNRdW90 ZXMiLCJVUkkiLCJVc2VyQWdlbnQiLCJWZWN0b3IiLCJhcmVPYmplY3RzRXF1YWwi LCJjbGlja1JlZkFjdGlvbiIsImNvbXB1dGVSZWxhdGl2ZVVSSSIsImNvcHlQcm9w ZXJ0aWVzIiwiZ2UiLCJnb09yUmVwbGFjZSIsInN0YXJ0c1dpdGgiLCJ0eCIsInVz ZXJBY3Rpb24iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5z aW9ucycpO3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0RpYWxvZycpLGk9YignRE9N Jyksaj1iKCdET01TY3JvbGwnKSxrPWIoJ0VudicpLGw9YignRm9ybScpLG09Yign SGlzdG9yeU1hbmFnZXInKSxuPWIoJ0pTTG9nZ2VyJyksbz1iKCdMaW5rQ29udHJv bGxlcicpLHA9YignT25sb2FkSG9va3MnKSxxPWIoJ2h0bWxpemUnKSxyPWIoJ2Vz Y2FwZUpTUXVvdGVzJykscz1iKCdVUkknKSx0PWIoJ1VzZXJBZ2VudCcpLHU9Yign VmVjdG9yJyksdj1iKCdhcmVPYmplY3RzRXF1YWwnKSx3PWIoJ2NsaWNrUmVmQWN0

aW9uJykseD1iKCdjb21wdXRlUmVsYXRpdmVVUkknKSx5PWIoJ2NvcHlQcm9wZXJ0 aWVzJyksej1iKCdnZScpLGFhPWIoJ2dvT3JSZXBsYWNlJyksYmE9Yignc3RhcnRz V2l0aCcpLGNhPWIoJ3R4JyksZGE9YigndXNlckFjdGlvbicpLGVhPXtfdHJhbnNp dGlvbl9oYW5kbGVyczpbXSxfc2Nyb2xsX3Bvc2l0aW9uczp7fSxfc2Nyb2xsX2xv Y2tlZDpmYWxzZSxpc0luaXRpYWxpemVkOmZ1bmN0aW9uKCl7cmV0dXJuICEhZWEu X2luaXRpYWxpemVkO30sX2luaXQ6ZnVuY3Rpb24oKXtpZighay5BTExPV19UUkFO U0lUSU9OX0lOX0lGUkFNRSYmd2luZG93IT13aW5kb3cudG9wKXJldHVybjtpZihl YS5faW5pdGlhbGl6ZWQpcmV0dXJuIGVhO2VhLl9pbml0aWFsaXplZD10cnVlO3Zh ciBnYT1zLmdldFJlcXVlc3RVUkkoZmFsc2UpLGhhPWdhLmdldFVucXVhbGlmaWVk VVJJKCksaWE9cyhoYSkuc2V0RnJhZ21lbnQobnVsbCksamE9aGEuZ2V0RnJhZ21l bnQoKTtpZihqYS5jaGFyQXQoMCk9PT0nIScmJmlhLnRvU3RyaW5nKCk9PT1qYS5z dWJzdHIoMSkpaGE9aWE7eShlYSx7X2N1cnJlbnRfdXJpOmhhLF9tb3N0X3JlY2Vu dF91cmk6aGEsX25leHRfdXJpOmhhfSk7dmFyIGthO2lmKGJhKGdhLmdldEZyYWdt ZW50KCksJy8nKSl7a2E9Z2EuZ2V0RnJhZ21lbnQoKTt9ZWxzZSBrYT1oYTttLmlu aXQoKS5zZXRDYW5vbmljYWxMb2NhdGlvbignIycra2EpLnJlZ2lzdGVyVVJJSGFu ZGxlcihlYS5faGlzdG9yeU1hbmFnZXJIYW5kbGVyKTtvLnJlZ2lzdGVyRmFsbGJh Y2tIYW5kbGVyKGVhLl9yZXdyaXRlSHJlZik7by5yZWdpc3RlckZhbGxiYWNrSGFu ZGxlcihlYS5fb25saW5rY2xpY2spO0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQsJ3N1Ym1pdCcsZWEuX29uZm9ybXN1Ym1pdCk7RXZlbnQubGlz dGVuKHdpbmRvdywnc2Nyb2xsJyxmdW5jdGlvbigpe2lmKCFlYS5fc2Nyb2xsX2xv Y2tlZCllYS5fc2Nyb2xsX3Bvc2l0aW9uc1tlYS5fY3VycmVudF91cmldPXUuZ2V0 U2Nyb2xsUG9zaXRpb24oKTt9KTtyZXR1cm4gZWE7fSxyZWdpc3RlckhhbmRsZXI6 ZnVuY3Rpb24oZ2EsaGEpe2VhLl9pbml0KCk7aGE9aGF8fDU7aWYoIWVhLl90cmFu c2l0aW9uX2hhbmRsZXJzW2hhXSllYS5fdHJhbnNpdGlvbl9oYW5kbGVyc1toYV09 W107ZWEuX3RyYW5zaXRpb25faGFuZGxlcnNbaGFdLnB1c2goZ2EpO30sZ2V0Q3Vy cmVudFVSSTpmdW5jdGlvbihnYSl7aWYoIWVhLl9jdXJyZW50X3VyaSYmIWdhKXJl dHVybiBuZXcgcyhlYS5fbW9zdF9yZWNlbnRfdXJpKTtyZXR1cm4gbmV3IHMoZWEu X2N1cnJlbnRfdXJpKTt9LGdldE1vc3RSZWNlbnRVUkk6ZnVuY3Rpb24oKXtyZXR1 cm4gbmV3IHMoZWEuX21vc3RfcmVjZW50X3VyaSk7fSxnZXROZXh0VVJJOmZ1bmN0 aW9uKCl7cmV0dXJuIG5ldyBzKGVhLl9uZXh0X3VyaSk7fSxfcmV3cml0ZUhyZWY6 ZnVuY3Rpb24oZ2Epe3ZhciBoYT1nYS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSxpYT14 KGVhLl9tb3N0X3JlY2VudF91cmkuZ2V0UXVhbGlmaWVkVVJJKCksaGEpLnRvU3Ry aW5nKCk7aWYoaGEhPWlhKWdhLnNldEF0dHJpYnV0ZSgnaHJlZicsaWEpO30sX29u bGlua2NsaWNrOmZ1bmN0aW9uKGdhKXtmYS5sb29rQnVzeShnYSk7ZWEuZ28oZ2Eu Z2V0QXR0cmlidXRlKCdocmVmJykpO3JldHVybiBmYWxzZTt9LF9vbmZvcm1zdWJt aXQ6ZnVuY3Rpb24oZXZlbnQpe3ZhciBnYT1ldmVudC5nZXRUYXJnZXQoKTtpZihs LmdldEF0dHJpYnV0ZShnYSwncmVsJyl8fGwuZ2V0QXR0cmlidXRlKGdhLCd0YXJn ZXQnKSlyZXR1cm47dygnZm9ybScsZ2EsZXZlbnQpLnNldF9uYW1lc3BhY2UoJ3Bh Z2VfdHJhbnNpdGlvbicpO3ZhciBoYT1kYSgncGFnZV90cmFuc2l0aW9ucycsZ2Es ZXZlbnQse21vZGU6J0RFRFVQJ30pLnVhaV9mYWxsYmFjayhudWxsLCdmb3JtJyks aWE9YS5BcmJpdGVyTW9uaXRvcjtpZihpYSlpYS5pbml0VUEoaGEsW2dhXSk7dmFy IGphPW5ldyBzKGwuZ2V0QXR0cmlidXRlKGdhLCdhY3Rpb24nKXx8JycpLGthPXgo ZWEuX21vc3RfcmVjZW50X3VyaSxqYSk7Z2Euc2V0QXR0cmlidXRlKCdhY3Rpb24n LGthLnRvU3RyaW5nKCkpO2lmKChsLmdldEF0dHJpYnV0ZShnYSwnbWV0aG9kJyl8 fCdHRVQnKS50b1VwcGVyQ2FzZSgpPT09J0dFVCcpe2VhLmdvKGthLmFkZFF1ZXJ5 RGF0YShsLnNlcmlhbGl6ZShnYSkpKTtldmVudC5raWxsKCk7fX0sZ286ZnVuY3Rp b24oZ2EsaGEpe3ZhciBpYT1uZXcgcyhnYSkucmVtb3ZlUXVlcnlEYXRhKCdxdWlj a2xpbmcnKS5nZXRRdWFsaWZpZWRVUkkoKTtuLmNyZWF0ZSgncGFnZXRyYW5zaXRp b24nKS5kZWJ1ZygnZ28nLHt1cmk6aWEudG9TdHJpbmcoKX0pO3ZhciBqYT1pYS5n ZXRVbnF1YWxpZmllZFVSSSgpO2RlbGV0ZSBlYS5fc2Nyb2xsX3Bvc2l0aW9uc1tq YV07IWhhJiZ3KCd1cmknLHtocmVmOmlhLnRvU3RyaW5nKCl9LG51bGwsJ0lORElS RUNUJyk7ZmEubG9va0J1c3koKTtlYS5fbG9hZFBhZ2UoaWEsZnVuY3Rpb24oa2Ep e2lmKGthKXttLmdvKGlhLnRvU3RyaW5nKCksZmFsc2UsaGEpO31lbHNlIGFhKHdp bmRvdy5sb2NhdGlvbixpYSxoYSk7fSk7fSxfaGlzdG9yeU1hbmFnZXJIYW5kbGVy OmZ1bmN0aW9uKGdhKXtpZihnYS5jaGFyQXQoMCkhPScvJylyZXR1cm4gZmFsc2U7 dygnaCcse2hyZWY6Z2F9KTtkYSgncGFnZV90cmFuc2l0aW9ucycpLnVhaShudWxs LCdoaXN0b3J5X21hbmFnZXInKTtlYS5fbG9hZFBhZ2UobmV3IHMoZ2EpLGZ1bmN0 aW9uKGhhKXtpZighaGEpYWEod2luZG93LmxvY2F0aW9uLGdhLHRydWUpO30pO3Jl dHVybiB0cnVlO30sX2xvYWRQYWdlOmZ1bmN0aW9uKGdhLGhhKXtpZihzKGdhKS5n ZXRGcmFnbWVudCgpJiZ2KHMoZ2EpLnNldEZyYWdtZW50KG51bGwpLmdldFF1YWxp

ZmllZFVSSSgpLHMoZWEuX2N1cnJlbnRfdXJpKS5zZXRGcmFnbWVudChudWxsKS5n ZXRRdWFsaWZpZWRVUkkoKSkpe2VhLl9jdXJyZW50X3VyaT1lYS5fbW9zdF9yZWNl bnRfdXJpPWdhO2VhLnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpO2ZhLnN0b3BMb29r aW5nQnVzeSgpO3JldHVybjt9dmFyIGlhPWVhLl9zY3JvbGxfcG9zaXRpb25zW2Vh Ll9jdXJyZW50X3VyaV07ZWEuX2N1cnJlbnRfdXJpPW51bGw7ZWEuX25leHRfdXJp PWdhO2lmKGlhKWouc2Nyb2xsVG8oaWEsZmFsc2UpO3ZhciBqYT1mdW5jdGlvbigp e2VhLl9zY3JvbGxfbG9ja2VkPXRydWU7dmFyIGxhPWVhLl9oYW5kbGVUcmFuc2l0 aW9uKGdhKTtoYSYmaGEobGEpO30sa2E9cC5ydW5Ib29rcygnb25iZWZvcmVsZWF2 ZWhvb2tzJyk7aWYoa2Epe2ZhLnN0b3BMb29raW5nQnVzeSgpO2VhLl93YXJuQmVm b3JlTGVhdmluZyhrYSxqYSk7fWVsc2UgamEoKTt9LF9oYW5kbGVUcmFuc2l0aW9u OmZ1bmN0aW9uKGdhKXt3aW5kb3cub25iZWZvcmVsZWF2ZWhvb2tzPXVuZGVmaW5l ZDtmYS5sb29rQnVzeSgpO2lmKCFnYS5pc1NhbWVPcmlnaW4oKSlyZXR1cm4gZmFs c2U7dmFyIGhhPXdpbmRvdy5Bc3luY1JlcXVlc3QmJndpbmRvdy5Bc3luY1JlcXVl c3QuZ2V0TGFzdElEKCk7Zy5pbmZvcm0oInByZV9wYWdlX3RyYW5zaXRpb24iLHtm cm9tOmVhLmdldE1vc3RSZWNlbnRVUkkoKSx0bzpnYX0pO2Zvcih2YXIgaWE9ZWEu X3RyYW5zaXRpb25faGFuZGxlcnMubGVuZ3RoLTE7aWE+PTA7LS1pYSl7dmFyIGph PWVhLl90cmFuc2l0aW9uX2hhbmRsZXJzW2lhXTtpZighamEpY29udGludWU7Zm9y KHZhciBrYT1qYS5sZW5ndGgtMTtrYT49MDstLWthKWlmKGphW2thXShnYSk9PT10 cnVlKXt2YXIgbGE9e3NlbmRlcjp0aGlzLHVyaTpnYSxpZDpoYX07dHJ5e2cuaW5m b3JtKCJwYWdlX3RyYW5zaXRpb24iLGxhKTt9Y2F0Y2gobWEpe31yZXR1cm4gdHJ1 ZTt9ZWxzZSBqYS5zcGxpY2Uoa2EsMSk7fXJldHVybiBmYWxzZTt9LHVuaWZ5VVJJ OmZ1bmN0aW9uKCl7ZWEuX2N1cnJlbnRfdXJpPWVhLl9tb3N0X3JlY2VudF91cmk9 ZWEuX25leHRfdXJpO30sdHJhbnNpdGlvbkNvbXBsZXRlOmZ1bmN0aW9uKGdhKXtl YS5fZXhlY3V0ZUNvbXBsZXRpb25DYWxsYmFjaygpO2ZhLnN0b3BMb29raW5nQnVz eSgpO2VhLnVuaWZ5VVJJKCk7aWYoIWdhKWVhLnJlc3RvcmVTY3JvbGxQb3NpdGlv bigpO3RyeXtpZihkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3Rp dmVFbGVtZW50Lm5vZGVOYW1lPT09J0EnKWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQu Ymx1cigpO31jYXRjaChoYSl7fX0sX2V4ZWN1dGVDb21wbGV0aW9uQ2FsbGJhY2s6 ZnVuY3Rpb24oKXtpZihlYS5fY29tcGxldGlvbkNhbGxiYWNrKWVhLl9jb21wbGV0 aW9uQ2FsbGJhY2soKTtlYS5fY29tcGxldGlvbkNhbGxiYWNrPW51bGw7fSxzZXRD b21wbGV0aW9uQ2FsbGJhY2s6ZnVuY3Rpb24oZ2Epe2VhLl9jb21wbGV0aW9uQ2Fs bGJhY2s9Z2E7fSxyZXdyaXRlQ3VycmVudFVSSTpmdW5jdGlvbihnYSxoYSl7ZWEu cmVnaXN0ZXJIYW5kbGVyKGZ1bmN0aW9uKCl7aWYoZ2E9PWVhLmdldE1vc3RSZWNl bnRVUkkoKS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkpe2VhLnRyYW5z aXRpb25Db21wbGV0ZSgpO3JldHVybiB0cnVlO319KTtlYS5nbyhoYSx0cnVlKTt9 LF93YXJuQmVmb3JlTGVhdmluZzpmdW5jdGlvbihnYSxoYSl7bmV3IGgoKS5zZXRU aXRsZSgiQW5kYSB5YWtpbiBpbmdpbiBtZW5pbmdnYWxrYW4gaGFsYW1hbiBpbmk/ Iikuc2V0Qm9keShxKGdhKSkuc2V0QnV0dG9ucyhbe25hbWU6J2xlYXZlX3BhZ2Un LGxhYmVsOiJUaW5nZ2Fsa2FuIEhhbGFtYW4gSW5pIixoYW5kbGVyOmhhfSx7bmFt ZTonY29udGludWVfZWRpdGluZycsbGFiZWw6IlRldGFwIGRpIEhhbGFtYW4gaW5p IixjbGFzc05hbWU6J2lucHV0YXV4J31dKS5zZXRNb2RhbCh0cnVlKS5zaG93KCk7 fSxyZXN0b3JlU2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtlYS5fc2Nyb2xsX2xv Y2tlZD1mYWxzZTt2YXIgZ2E9ZWEuX2N1cnJlbnRfdXJpLGhhPWVhLl9zY3JvbGxf cG9zaXRpb25zW2dhXTtpZihoYSl7ai5zY3JvbGxUbyhoYSxmYWxzZSk7cmV0dXJu O31mdW5jdGlvbiBpYShsYSl7aWYoIWxhKXJldHVybiBudWxsO3ZhciBtYT0iYVtu YW1lPSciK3IobGEpKyInXSI7cmV0dXJuIGkuc2NyeShkb2N1bWVudC5ib2R5LG1h KVswXXx8eihsYSk7fXZhciBqYT1pYShzKGdhKS5nZXRGcmFnbWVudCgpKTtpZihq YSl7dmFyIGthPXUuZ2V0RWxlbWVudFBvc2l0aW9uKGphKTtrYS54PTA7ai5zY3Jv bGxUbyhrYSk7fX19LGZhPXdpbmRvdy5fQnVzeVVJTWFuYWdlcnx8e19sb29raW5n X2J1c3k6ZmFsc2UsX29yaWdpbmFsX2N1cnNvcnM6W10sbG9va0J1c3k6ZnVuY3Rp b24oZ2Epe2lmKGdhKWZhLl9naXZlUHJvZ3Jlc3NDdXJzb3IoZ2EpO2lmKGZhLl9s b29raW5nX2J1c3kpcmV0dXJuO2ZhLl9sb29raW5nX2J1c3k9dHJ1ZTtmYS5fZ2l2 ZVByb2dyZXNzQ3Vyc29yKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7fSxzdG9w TG9va2luZ0J1c3k6ZnVuY3Rpb24oKXtpZighZmEuX2xvb2tpbmdfYnVzeSlyZXR1 cm47ZmEuX2xvb2tpbmdfYnVzeT1mYWxzZTt3aGlsZShmYS5fb3JpZ2luYWxfY3Vy c29ycy5sZW5ndGgpe3ZhciBnYT1mYS5fb3JpZ2luYWxfY3Vyc29ycy5wb3AoKSxo YT1nYVswXSxpYT1nYVsxXTtpZihoYS5zdHlsZSloYS5zdHlsZS5jdXJzb3I9aWF8 fCcnO319LF9naXZlUHJvZ3Jlc3NDdXJzb3I6ZnVuY3Rpb24oZ2Epe2lmKCF0LnNh ZmFyaSgpKXtmYS5fb3JpZ2luYWxfY3Vyc29ycy5wdXNoKFtnYSxnYS5zdHlsZS5j dXJzb3JdKTtnYS5zdHlsZS5jdXJzb3I9J3Byb2dyZXNzJzt9fX07ZS5leHBvcnRz

PWVhO30pOwpfX2QoIlRleHRJbnB1dENvbnRyb2wiLFsiZXZlbnQtZXh0ZW5zaW9u cyIsImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJDbGFzcyIsIkRPTUNvbnRyb2wiLCJJ bnB1dCIsImNvcHlQcm9wZXJ0aWVzIiwiZGVib3VuY2UiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO2IoJ2Z1bmN0aW9uLWV4dGVu c2lvbnMnKTt2YXIgZz1iKCdDbGFzcycpLGg9YignRE9NQ29udHJvbCcpLGk9Yign SW5wdXQnKSxqPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaz1iKCdkZWJvdW5jZScpO2Z1 bmN0aW9uIGwobSl7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMsbSk7dmFyIG49 dGhpcy5nZXRSb290KCksbz1rKHRoaXMudXBkYXRlLmJpbmQodGhpcyksMCk7RXZl bnQubGlzdGVuKG4se2lucHV0Om8sa2V5ZG93bjpvLHBhc3RlOm99KTt9Zy5leHRl bmQobCxoKTtqKGwucHJvdG90eXBlLHtzZXRNYXhMZW5ndGg6ZnVuY3Rpb24obSl7 aS5zZXRNYXhMZW5ndGgodGhpcy5nZXRSb290KCksbSk7cmV0dXJuIHRoaXM7fSxn ZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBpLmdldFZhbHVlKHRoaXMuZ2V0Um9v dCgpKTt9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc0VtcHR5KHRoaXMu Z2V0Um9vdCgpKTt9LHNldFZhbHVlOmZ1bmN0aW9uKG0pe2kuc2V0VmFsdWUodGhp cy5nZXRSb290KCksbSk7dGhpcy51cGRhdGUoKTtyZXR1cm4gdGhpczt9LGNsZWFy OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0VmFsdWUoJycpO30sc2V0UGxhY2Vo b2xkZXJUZXh0OmZ1bmN0aW9uKG0pe2kuc2V0UGxhY2Vob2xkZXIodGhpcy5nZXRS b290KCksbSk7cmV0dXJuIHRoaXM7fX0pO2UuZXhwb3J0cz1sO30pOwpfX2QoIlRl eHRNZXRyaWNzIixbImFycmF5LWV4dGVuc2lvbnMiLCJldmVudC1leHRlbnNpb25z IiwiRE9NIiwiU3R5bGUiLCJVc2VyQWdlbnQiLCJkZWJvdW5jZSJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7YignZXZlbnQtZXh0 ZW5zaW9ucycpO3ZhciBnPWIoJ0RPTScpLGg9YignU3R5bGUnKSxpPWIoJ1VzZXJB Z2VudCcpLGo9YignZGVib3VuY2UnKSxrO2Z1bmN0aW9uIGwoKXtpZih0eXBlb2Yg az09PSd1bmRlZmluZWQnKXt2YXIgbj1nLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1l Oid3ZWJraXRab29tVGVzdCd9KSxvPWZ1bmN0aW9uKCl7Zy5hcHBlbmRDb250ZW50 KGRvY3VtZW50LmJvZHksbik7az0xMDAvbi5jbGllbnRIZWlnaHQ7Zy5yZW1vdmUo bik7fTtFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLGoobywxMDApKTtvKCk7 fXJldHVybiBrO31mdW5jdGlvbiBtKG4sbyl7dGhpcy5fbm9kZT1uO3RoaXMuX2Zs ZXhpYmxlPSEhbzt2YXIgcD0ndGV4dGFyZWEnLHE9J3RleHRNZXRyaWNzJztpZih0 aGlzLl9mbGV4aWJsZSl7cD0nZGl2JztxKz0nIHRleHRNZXRyaWNzSW5saW5lJzt9 dGhpcy5fc2hhZG93PWcuY3JlYXRlKHAse2NsYXNzTmFtZTpxfSk7dmFyIHI9Wydm b250U2l6ZScsJ2ZvbnRTdHlsZScsJ2ZvbnRXZWlnaHQnLCdmb250RmFtaWx5Jywn d29yZFdyYXAnXTtyLmZvckVhY2goZnVuY3Rpb24odCl7aC5zZXQodGhpcy5fc2hh ZG93LHQsaC5nZXQobix0KSk7fS5iaW5kKHRoaXMpKTt2YXIgcz1oLmdldChuLCds aW5lSGVpZ2h0Jyk7aWYoaS5jaHJvbWUoKXx8aS5zYWZhcmkoKSlzPU1hdGgucm91 bmQocGFyc2VJbnQocywxMCkqbCgpKSsncHgnO2guc2V0KHRoaXMuX3NoYWRvdywn bGluZUhlaWdodCcscyk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9z aGFkb3cpO31tLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKG4pe3ZhciBvPXRo aXMuX25vZGUscD10aGlzLl9zaGFkb3c7bj0obnx8by52YWx1ZSkrJy4uLic7aWYo IXRoaXMuX2ZsZXhpYmxlKXt2YXIgcT1vLmNsaWVudFdpZHRoLWguZ2V0RmxvYXQo bywncGFkZGluZ0xlZnQnKS1oLmdldEZsb2F0KG8sJ3BhZGRpbmdSaWdodCcpO2gu c2V0KHAsJ3dpZHRoJyxNYXRoLm1heChxLDApKydweCcpO31nLnNldENvbnRlbnQo cCxuKTtyZXR1cm4ge3dpZHRoOnAuc2Nyb2xsV2lkdGgsaGVpZ2h0OnAuc2Nyb2xs SGVpZ2h0fTt9O20ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtnLnJlbW92 ZSh0aGlzLl9zaGFkb3cpO307ZS5leHBvcnRzPW07fSk7Cl9fZCgiVGV4dEFyZWFD b250cm9sIixbImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwiQXJiaXRlck1p eGluIiwiQ2xhc3MiLCJDU1MiLCJET01Db250cm9sIiwiU3R5bGUiLCJUZXh0SW5w dXRDb250cm9sIiwiVGV4dE1ldHJpY3MiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9Yign QXJiaXRlcicpLGg9YignQXJiaXRlck1peGluJyksaT1iKCdDbGFzcycpLGo9Yign Q1NTJyksaz1iKCdET01Db250cm9sJyksbD1iKCdTdHlsZScpLG09YignVGV4dElu cHV0Q29udHJvbCcpLG49YignVGV4dE1ldHJpY3MnKSxvPWIoJ2NvcHlQcm9wZXJ0 aWVzJyk7ZnVuY3Rpb24gcChyLHMpe3JldHVybiBsLmdldEZsb2F0KHIscyl8fDA7 fWZ1bmN0aW9uIHEocil7dGhpcy5hdXRvZ3Jvdz1qLmhhc0NsYXNzKHIsJ3VpVGV4 dGFyZWFBdXRvZ3JvdycpO3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlzLHIpO3Ro aXMud2lkdGg9bnVsbDtFdmVudC5saXN0ZW4ociwnZm9jdXMnLHRoaXMuX2hhbmRs ZUZvY3VzLmJpbmQodGhpcykpO31pLmV4dGVuZChxLG0pO28ocS5wcm90b3R5cGUs aCx7c2V0QXV0b2dyb3c6ZnVuY3Rpb24ocil7dGhpcy5hdXRvZ3Jvdz1yO3JldHVy biB0aGlzO30sb251cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5vbnVwZGF0 ZSgpO2lmKHRoaXMuYXV0b2dyb3cpe3ZhciByPXRoaXMuZ2V0Um9vdCgpO2lmKCF0

aGlzLm1ldHJpY3MpdGhpcy5tZXRyaWNzPW5ldyBuKHIpO2lmKHR5cGVvZiB0aGlz LmluaXRpYWxIZWlnaHQ9PT0ndW5kZWZpbmVkJyl7dGhpcy5pc0JvcmRlckJveD1s LmdldChyLCdib3gtc2l6aW5nJyk9PT0nYm9yZGVyLWJveCd8fGwuZ2V0KHIsJy1t b3otYm94LXNpemluZycpPT09J2JvcmRlci1ib3gnfHxsLmdldChyLCctd2Via2l0 LWJveC1zaXppbmcnKT09PSdib3JkZXItYm94Jzt0aGlzLmJvcmRlckJveE9mZnNl dD1wKHIsJ3BhZGRpbmctdG9wJykrcChyLCdwYWRkaW5nLWJvdHRvbScpK3Aociwn Ym9yZGVyLXRvcC13aWR0aCcpK3AociwnYm9yZGVyLWJvdHRvbS13aWR0aCcpO3Ro aXMuaW5pdGlhbEhlaWdodD1yLm9mZnNldEhlaWdodC10aGlzLmJvcmRlckJveE9m ZnNldDt9dmFyIHM9dGhpcy5tZXRyaWNzLm1lYXN1cmUoKSx0PU1hdGgubWF4KHRo aXMuaW5pdGlhbEhlaWdodCxzLmhlaWdodCk7aWYodGhpcy5pc0JvcmRlckJveCl0 Kz10aGlzLmJvcmRlckJveE9mZnNldDtpZih0IT09dGhpcy5oZWlnaHQpe3RoaXMu aGVpZ2h0PXQ7bC5zZXQociwnaGVpZ2h0Jyx0KydweCcpO2cuaW5mb3JtKCdyZWZs b3cnKTt0aGlzLmluZm9ybSgncmVzaXplJyk7fX1lbHNlIGlmKHRoaXMubWV0cmlj cyl7dGhpcy5tZXRyaWNzLmRlc3Ryb3koKTt0aGlzLm1ldHJpY3M9bnVsbDt9fSxy ZXNldEhlaWdodDpmdW5jdGlvbigpe3RoaXMuaGVpZ2h0PS0xO3RoaXMudXBkYXRl KCk7fSxfaGFuZGxlRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLndpZHRoPW51bGw7fX0p O3EuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24ocil7cmV0dXJuIGsuZ2V0SW5zdGFuY2Uo cil8fG5ldyBxKHIpO307ZS5leHBvcnRzPXE7fSk7Cl9fZCgiVVJMU2NyYXBlciIs WyJldmVudC1leHRlbnNpb25zIiwiQXJiaXRlck1peGluIiwiQ2xhc3MiLCJjb3B5 UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRl bnNpb25zJyk7dmFyIGc9YignQXJiaXRlck1peGluJyksaD1iKCdDbGFzcycpLGk9 YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBqKGdhKXt0aGlzLmlucHV0PWdh O3RoaXMuZW5hYmxlKCk7fWkoai5wcm90b3R5cGUsZyx7cmVzZXQ6ZnVuY3Rpb24o KXt0aGlzLmxhc3RQZXJtaXNzaXZlTWF0Y2g9bnVsbDt9LGVuYWJsZTpmdW5jdGlv bigpe2lmKHRoaXMuZXZlbnRzKXJldHVybjt2YXIgZ2E9ZnVuY3Rpb24oaGEpe3Nl dFRpbWVvdXQodGhpcy5jaGVjay5iaW5kKHRoaXMsaGEpLDMwKTt9O3RoaXMuZXZl bnRzPUV2ZW50Lmxpc3Rlbih0aGlzLmlucHV0LHtwYXN0ZTpnYS5iaW5kKHRoaXMs ZmFsc2UpLGtleWRvd246Z2EuYmluZCh0aGlzLHRydWUpfSk7fSxkaXNhYmxlOmZ1 bmN0aW9uKCl7aWYoIXRoaXMuZXZlbnRzKXJldHVybjtmb3IodmFyIGV2ZW50IGlu IHRoaXMuZXZlbnRzKXRoaXMuZXZlbnRzW2V2ZW50XS5yZW1vdmUoKTt0aGlzLmV2 ZW50cz1udWxsO30sY2hlY2s6ZnVuY3Rpb24oZ2Epe3ZhciBoYT10aGlzLmlucHV0 LnZhbHVlO2lmKGdhJiZqLnRyaWdnZXIoaGEpKXJldHVybjt2YXIgaWE9ai5tYXRj aChoYSksamE9ai5wZXJtaXNzaXZlTWF0Y2goaGEpO2lmKGphJiYoamEhPXRoaXMu bGFzdFBlcm1pc3NpdmVNYXRjaCkpe3RoaXMubGFzdFBlcm1pc3NpdmVNYXRjaD1q YTt0aGlzLmluZm9ybSgnbWF0Y2gnLHt1cmw6aWEsYWx0X3VybDpqYX0pO319fSk7 dmFyIGs9JyEiIyUmXCcoKSosLS4vOjs8Pj9AW1xcXV5fYHt8fScsbD0nXHUyMDAw LVx1MjA2Rlx1MDBhYlx1MDBiYicsbT0nKD86MjVbMC01XXwyWzAtNF1bMC05XXwx WzAtOV17Mn18WzEtOV0/WzAtOV0pJyxuPScoPzooPzpodHxmKXRwcz8pOi8vJyxv PScoPzooPzonK20rJ1suXSl7M30nK20rJyknLHA9Jyg/OlxcYil3d3dcXGR7MCwz fVsuXScscT0nW15cXHMnK2srbCsnXScscj0nKD86KD86Wy46XFwtXyVAXXwnK3Er JykqJytxKycpJyxzPScoPzpbLl1bYS16XXsyLDR9KScsdD0nKD86OlxcZCspezAs MX0nLHU9Jyg/PVtcLz8jXSknLHY9Jyg/OicrJyg/OicrbityK3QrJyl8JysnKD86 JytvK3QrJyl8JysnKD86JytwK3Ircyt0KycpfCcrJyg/OicrcitzK3QrdSsnKScr JyknLHc9J1tcLyM/XScseD0nXFwoW15cXHMoKTw+XStcXCknLHk9J1teXFxzKCk8 Pj8jXSsnLHo9J1teXFxzJytrK2wrJ10nLGFhPScoPzonKycoPzonK3crJyknKyco PzonKycoPzonK3grJ3wnK3krJykqJysnKD86Jyt4Kyd8Jyt6KycpJysnKSonKycp KicsYmE9bmV3IFJlZ0V4cCgnKCcrJyg/OicrdisnKScrJyg/OicrYWErJyknKycp JywnaW0nKSxjYT0nKD86JysnKD86Jyt3KycpJysnKD86JysnKD86Jyt4Kyd8Jyt5 KycpKicrJykqJysnKSonLGRhPW5ldyBSZWdFeHAoJygnKycoPzonK3YrJyknKyco PzonK2NhKycpJysnKScsJ2ltJyksZWE9bmV3IFJlZ0V4cCgnKCcrJyg/Oicrbity K3QrJyl8JysnKD86JytwK3Ircyt0KycpJysnKScpLGZhPS9bXHMnIjtdLztqLm1h dGNoPWZ1bmN0aW9uKGdhKXtyZXR1cm4gai5tYXRjaFRvUGF0dGVybihnYSxiYSk7 fTtqLnBlcm1pc3NpdmVNYXRjaD1mdW5jdGlvbihnYSl7cmV0dXJuIGoubWF0Y2hU b1BhdHRlcm4oZ2EsZGEpO307ai5tYXRjaFRvUGF0dGVybj1mdW5jdGlvbihnYSxo YSl7dmFyIGlhPShoYS5leGVjKGdhKXx8W10pWzFdfHxudWxsO2lmKGlhJiZpYS5p bmRleE9mKCdAJykhPS0xKXtyZXR1cm4gKGVhLmV4ZWMoaWEpKT9pYTpudWxsO31l bHNlIHJldHVybiBpYTt9O2oudHJpZ2dlcj1mdW5jdGlvbihnYSl7cmV0dXJuICFm YS50ZXN0KGdhLmNoYXJBdChnYS5sZW5ndGgtMSkpO307ZS5leHBvcnRzPWo7fSk7 Cl9fZCgiQ29tcG9zZXIiLFsiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkFyYml0ZXIi LCJBcmJpdGVyTWl4aW4iLCJCdXR0b24iLCJDbGFzcyIsIkNTUyIsIkRPTSIsIkVu

diIsIkZpbGVGb3JtIiwiSFRNTCIsIklucHV0IiwiUGFnZVRyYW5zaXRpb25zIiwi UGFyZW50IiwiUnVuIiwiU2VydmVySlMiLCJUZXh0QXJlYUNvbnRyb2wiLCJVUkki LCJVUkxTY3JhcGVyIiwiJCIsImNvcHlQcm9wZXJ0aWVzIiwiZ2UiLCJ0eCIsImV2 ZW50LWV4dGVuc2lvbnMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZnVuY3Rp b24tZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0FyYml0ZXJN aXhpbicpLGk9YignQnV0dG9uJyksaj1iKCdDbGFzcycpLGs9YignQ1NTJyksbD1i KCdET00nKSxtPWIoJ0VudicpLG49YignRmlsZUZvcm0nKSxvPWIoJ0hUTUwnKSxw PWIoJ0lucHV0JykscT1iKCdQYWdlVHJhbnNpdGlvbnMnKSxyPWIoJ1BhcmVudCcp LHM9YignUnVuJyksdD1iKCdTZXJ2ZXJKUycpLHU9YignVGV4dEFyZWFDb250cm9s Jyksdj1iKCdVUkknKSx3PWIoJ1VSTFNjcmFwZXInKSx4PWIoJyQnKSx5PWIoJ2Nv cHlQcm9wZXJ0aWVzJyksej1iKCdnZScpLGFhPWIoJ3R4Jyk7YignZXZlbnQtZXh0 ZW5zaW9ucycpO3ZhciBiYT1iKCdldmVudC1leHRlbnNpb25zJykuJEUsY2E9MSxk YT00LGVhPXt9LGZhPWZ1bmN0aW9uKCl7dmFyIGphPWwuc2NyeSh0aGlzLnJvb3Qs J3NwYW4ubGlua0F0dGFjaG1lbnQnKVswXTtpZighamEmJnRoaXMuaXNNZXRhQ29t cG9zZXIpamE9bC5zY3J5KHRoaXMucm9vdCwnc3Bhbi5hdHRhY2htZW50QWNjZXB0 c0xpbmsnKVswXTtpZighamEpcmV0dXJuO3ZhciBrYT1yLmJ5VGFnKGphLCdmb3Jt Jyk7dGhpcy5zY3JhcGVyPW5ldyB3KHRoaXMuaW5wdXQpO3RoaXMuc2NyYXBlci5z dWJzY3JpYmUoJ21hdGNoJyxmdW5jdGlvbihsYSxtYSl7aWYodGhpcy5pc01ldGFD b21wb3Nlcil7dmFyIG5hPXRoaXMuZm9ybS54aHBjX3RhcmdldGlkLG9hPW5ldyB2 KCcvYWpheC9tZXRhY29tcG9zZXIvYXR0YWNobWVudC9saW5rL3NjcmFwZXIucGhw Jyk7b2EuYWRkUXVlcnlEYXRhKHtzY3JhcGVfdXJsOmVuY29kZVVSSUNvbXBvbmVu dChtYS51cmwpLGFsdF9zY3JhcGVfdXJsOmVuY29kZVVSSUNvbXBvbmVudChtYS5h bHRfdXJsKSx0YXJnZXRpZDpuYS52YWx1ZX0pO2thLmFjdGlvbj1vYS50b1N0cmlu ZygpO31lbHNle2suc2hvdyhqYSk7a2EuYWN0aW9uPScvYWpheC9jb21wb3Nlci9h dHRhY2htZW50L2xpbmsvc2NyYXBlci5waHA/c2NyYXBlX3VybD0nK2VuY29kZVVS SUNvbXBvbmVudChtYS51cmwpO31rYS54aHBjLnZhbHVlPWphLmlkO2thLnhocGMu ZGlzYWJsZWQ9ZmFsc2U7a2EueGhwYy5jbGljaygpO30uYmluZCh0aGlzKSk7dGhp cy5pc01ldGFDb21wb3NlciYmdGhpcy5zY3JhcGVyLmNoZWNrKCk7fSxnYT1mdW5j dGlvbihqYSl7aWYodGhpcy5pbmZvcm0oJ3N1Ym1pdCcpPT09ZmFsc2Upe2phLmtp bGwoKTtyZXR1cm4gZmFsc2U7fWlmKHRoaXMuc3VibWl0SGFuZGxlcilyZXR1cm4g KG5ldyBGdW5jdGlvbih0aGlzLnN1Ym1pdEhhbmRsZXIpKS5hcHBseSh0aGlzLmZv cm0pO307ZnVuY3Rpb24gaGEoamEsa2EsbGEsbWEsbmEpe2VhW2phLmlkXT10aGlz O3RoaXMucm9vdD1qYTt0aGlzLnJlc2V0Q2ZnPWthO3RoaXMuZGF0YVNvdXJjZT1t YTt0aGlzLmxhenlFbmRwb2ludD10aGlzLnJlc2V0Q2ZnJiZ0aGlzLnJlc2V0Q2Zn LmxhenlFbmRwb2ludDt0aGlzLmZvY3VzPWwuZmluZChqYSwnZGl2LmZvY3VzX3Rh cmdldCcpO3RoaXMuZm9ybT1sLmZpbmQoamEsJ2Zvcm0uYXR0YWNobWVudEZvcm0n KTt0aGlzLmNvbnRlbnQ9bC5maW5kKGphLCdkaXYuYXR0YWNobWVudENvbnRlbnQn KTt0aGlzLmlzTWV0YUNvbXBvc2VyPWxhO2lmKHRoaXMuaXNNZXRhQ29tcG9zZXIp e3RoaXMubWVzc2FnZUJveD1sLmZpbmQoamEsJ2Rpdi51aU1ldGFDb21wb3Nlck1l c3NhZ2VCb3gnKTt0aGlzLm1ldGFBcmVhPWwuZmluZChqYSwnZGl2LmF0dGFjaG1l bnRNZXRhQXJlYScpO3RoaXMuYm90dG9tQXJlYT1sLmZpbmQoamEsJ2Rpdi5hdHRh Y2htZW50Qm90dG9tQXJlYScpO3RoaXMuYmFyQXJlYT1sLmZpbmQoamEsJ2Rpdi5h dHRhY2htZW50QmFyQXJlYScpO3RoaXMuYXV4QmFyQXJlYT1sLmZpbmQoamEsJy5h dHRhY2htZW50QXV4QmFyQXJlYScpO3RoaXMuYmx1cmI9bC5maW5kKGphLCdkaXYu dWlNZXRhQ29tcG9zZXJNZXNzYWdlQm94IGRpdi50ZXh0Qmx1cmInKTt0aGlzLmlu cHV0PWwuZmluZChqYSwnZGl2LnVpTWV0YUNvbXBvc2VyTWVzc2FnZUJveCB0ZXh0 YXJlYS5pbnB1dCcpO3RoaXMuYnV0dG9uPWwuZmluZChqYSwnZGl2LnVpTWV0YUNv bXBvc2VyTWVzc2FnZUJveCBsYWJlbC5zdWJtaXRCdG4nKTt0aGlzLnByaXZhY3k9 bC5maW5kKGphLCdkaXYudWlNZXRhQ29tcG9zZXJNZXNzYWdlQm94IGxpLnByaXZh Y3lXaWRnZXQnKTt0aGlzLmJvb3N0aW5nPWwuc2NyeShqYSwnZGl2LnVpTWV0YUNv bXBvc2VyTWVzc2FnZUJveCBsaS5ib29zdGluZ1dpZGdldCcpO31lbHNle3RoaXMu Ymx1cmI9bC5maW5kKGphLCdkaXYudWlDb21wb3Nlck1lc3NhZ2VCb3ggZGl2LnRl eHRCbHVyYicpO3RoaXMuaW5wdXQ9bC5maW5kKGphLCdkaXYudWlDb21wb3Nlck1l c3NhZ2VCb3ggdGV4dGFyZWEuaW5wdXQnKTt0aGlzLmJ1dHRvbj1sLmZpbmQoamEs J2Rpdi51aUNvbXBvc2VyTWVzc2FnZUJveCBsYWJlbC5zdWJtaXRCdG4nKTt0aGlz LnByaXZhY3k9bC5maW5kKGphLCdkaXYudWlDb21wb3Nlck1lc3NhZ2VCb3ggbGku cHJpdmFjeVdpZGdldCcpO3RoaXMuYm9vc3Rpbmc9W107fUV2ZW50Lmxpc3Rlbih0 aGlzLmZvcm0sJ3N1Ym1pdCcsZ2EuYmluZCh0aGlzKSk7aWYodGhpcy5pc01ldGFD b21wb3Nlcil7RXZlbnQubGlzdGVuKHRoaXMuaW5wdXQsJ2ZvY3VzJyx0aGlzLm9u Rm9jdXMuYmluZCh0aGlzKSk7aWYobmEpe2lmKGRvY3VtZW50LmFjdGl2ZUVsZW1l

bnQ9PT10aGlzLmlucHV0KXRoaXMub25Gb2N1cy5iaW5kKHRoaXMpLmRlZmVyKCk7 fWVsc2UgaWYoci5ieUNsYXNzKHRoaXMuaW5wdXQsJ2NoaWxkX3dhc19mb2N1c2Vk JykpdGhpcy5vbkZvY3VzLmJpbmQodGhpcykuZGVmZXIoKTt9Zy5pbmZvcm0oJ3ho cGMvY29uc3RydWN0LycramEuaWQsdGhpcyxnLkJFSEFWSU9SX1NUQVRFKTt9eSho YS5wcm90b3R5cGUsaCx7aW5pdDpmdW5jdGlvbihqYSl7dGhpcy5tZW50aW9uc0lu cHV0PWphO2lmKHRoaXMubWVudGlvbnNJbnB1dCl0aGlzLm1lbnRpb25zSW5wdXQu c3Vic2NyaWJlKCdpbml0JyxmdW5jdGlvbigpe3ZhciBrYT10aGlzLm1lbnRpb25z SW5wdXQuZ2V0VHlwZWFoZWFkKCkuZ2V0VmlldygpO2thLnN1YnNjcmliZShbJ3Jl c2V0JywncmVuZGVyJ10sZnVuY3Rpb24obGEpe2suY29uZGl0aW9uQ2xhc3ModGhp cy5yb290LCd1aUNvbXBvc2VyTWVudGlvbicsKGxhPT0ncmVuZGVyJykpO30uYmlu ZCh0aGlzKSk7fS5iaW5kKHRoaXMpKTtmYS5jYWxsKHRoaXMpO3RoaXMuaW5mb3Jt KCdpbml0JyxudWxsLGcuQkVIQVZJT1JfUEVSU0lTVEVOVCk7dGhpcy5zZXR1cExp c3RlbigpO3Mub25CZWZvcmVVbmxvYWQodGhpcy5faGFuZGxlVW5zYXZlZENoYW5n ZXMuYmluZCh0aGlzKSk7fSxzZXR1cExpc3RlbjpmdW5jdGlvbigpe0V2ZW50Lmxp c3Rlbih0aGlzLnJvb3QsJ2NsaWNrJyx0aGlzLmNsaWNrSGFuZGxlci5iaW5kKHRo aXMpKTt9LGNsaWNrSGFuZGxlcjpmdW5jdGlvbihldmVudCl7dmFyIGphPWV2ZW50 LmdldFRhcmdldCgpO2lmKHIuYnlDbGFzcyhqYSwnY29sbGFwc2VkUG9zdEJ1dHRv bicpKXRoaXMuZm9jdXNJbnB1dC5iaW5kKHRoaXMpLmRlZmVyKCk7fSxzZXRCbHVy YjpmdW5jdGlvbihqYSl7bC5zZXRDb250ZW50KHRoaXMuYmx1cmIsamEpO30sc2V0 RW5hYmxlZDpmdW5jdGlvbihqYSl7aS5zZXRFbmFibGVkKHRoaXMuYnV0dG9uLGph KTt9LGdldEVuZHBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybS5nZXRB dHRyaWJ1dGUoJ2FjdGlvbicpO30sc2V0RW5kcG9pbnQ6ZnVuY3Rpb24oamEpe3Ro aXMuZm9ybS5zZXRBdHRyaWJ1dGUoJ2FjdGlvbicsamEpO30sc2V0TG9hZGluZzpm dW5jdGlvbihqYSl7ay5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3QsJ2FzeW5jX3Nh dmluZycsISFqYSk7fSxzZXRDb250ZW50VmlzaWJsZTpmdW5jdGlvbihqYSl7ay5j b25kaXRpb25DbGFzcyh0aGlzLnJvb3QsJ3VpQ29tcG9zZXJIaWRlQ29udGVudCcs IWphKTt9LHNldE1lc3NhZ2VCb3hWaXNpYmxlOmZ1bmN0aW9uKGphKXtrLmNvbmRp dGlvbkNsYXNzKHRoaXMucm9vdCwndWlDb21wb3NlckhpZGVNZXNzYWdlQm94Jywh amEpO30sc2V0SW5wdXRWaXNpYmxlOmZ1bmN0aW9uKGphKXtrLmNvbmRpdGlvbkNs YXNzKHRoaXMucm9vdCwndWlDb21wb3NlckhpZGVJbnB1dCcsIWphKTt9LHNldFN0 YXR1c0JveFZpc2libGU6ZnVuY3Rpb24oamEpe2suY29uZGl0aW9uQ2xhc3ModGhp cy5yb290LCd1aUNvbXBvc2VySGlkZVN0YXR1c0JveCcsIWphKTt9LHNldFRvcGlj VGFnZ2VyVmlzaWJsZTpmdW5jdGlvbihqYSl7ay5jb25kaXRpb25DbGFzcyh0aGlz LnJvb3QsJ3VpVGFnQ29tcG9zZXJIaWRkZW4nLCFqYSk7fSxtdXRhdGU6ZnVuY3Rp b24oamEpe2lmKHRoaXMubGFzdENvbXBvc2VySW5wdXQpcC5zZXRWYWx1ZSh0aGlz LmlucHV0LHAuZ2V0VmFsdWUoeih0aGlzLmxhc3RDb21wb3NlcklucHV0KSkpO3Zh ciBrYT16KGphLnhocGMpO2lmKGthKXt2YXIgbGE9bC5zY3J5KHRoaXMucm9vdCwn LnVpQ29tcG9zZXJBdHRhY2htZW50U2VsZWN0ZWQnKVswXTtpZihqYS5jb25maXJt QXVnbWVudGF0aW9uJiZsYSE9PWthKXJldHVybjtsYSYmay5yZW1vdmVDbGFzcyhs YSwndWlDb21wb3NlckF0dGFjaG1lbnRTZWxlY3RlZCcpO2suYWRkQ2xhc3Moa2Es J3VpQ29tcG9zZXJBdHRhY2htZW50U2VsZWN0ZWQnKTtpZighamEuZGlzYWJsZUNh Y2hlKUV2ZW50Lmxpc3RlbihrYSwnY2xpY2snLGZ1bmN0aW9uKG5hKXtiYShuYSku c3RvcCgpO2phLmRpc2FibGVDYWNoZT10cnVlO3RoaXMubXV0YXRlKGphKTt9LmJp bmQodGhpcykpO31pZighamEua2VlcENvbnRlbnRBcmVhcyl7dGhpcy5zZXRDb250 ZW50VmlzaWJsZShmYWxzZSk7bC5lbXB0eSh0aGlzLmNvbnRlbnQpO2lmKHRoaXMu aXNNZXRhQ29tcG9zZXIpe3RoaXMubWVudGlvbnNJbnB1dCYmdGhpcy5tZW50aW9u c0lucHV0LnNldEF1eENvbnRlbnQobnVsbCk7bC5lbXB0eSh0aGlzLm1ldGFBcmVh KTtsLmVtcHR5KHRoaXMuYm90dG9tQXJlYSk7bC5lbXB0eSh0aGlzLmJhckFyZWEp O2wuZW1wdHkodGhpcy5hdXhCYXJBcmVhKTt9fWlmKGphLmNvbnRlbnQpe2wuc2V0 Q29udGVudCh0aGlzLmNvbnRlbnQsbyhqYS5jb250ZW50KSk7dGhpcy5zZXRDb250 ZW50VmlzaWJsZSh0cnVlKTt9aWYodGhpcy5pc01ldGFDb21wb3Nlcil7amEubWV0 YUNvbnRlbnQmJmwuc2V0Q29udGVudCh0aGlzLm1ldGFBcmVhLG8oamEubWV0YUNv bnRlbnQpKTtqYS5ib3R0b21Db250ZW50JiZsLnNldENvbnRlbnQodGhpcy5ib3R0 b21BcmVhLG8oamEuYm90dG9tQ29udGVudCkpO2phLmJhckNvbnRlbnQmJmwuc2V0 Q29udGVudCh0aGlzLmJhckFyZWEsbyhqYS5iYXJDb250ZW50KSk7amEuYXV4QmFy Q29udGVudCYmbC5zZXRDb250ZW50KHRoaXMuYXV4QmFyQXJlYSxvKGphLmF1eEJh ckNvbnRlbnQpKTt9dGhpcy5zZXRNZXNzYWdlQm94VmlzaWJsZSghamEubWVzc2Fn ZUJveEhpZGRlbik7ay5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3QsJ3VpQ29tcG9z ZXJXaGl0ZU1lc3NhZ2VCb3gnLCFqYS5tZXNzYWdlQm94SGlkZGVuJiYhamEuaW5w dXRIaWRkZW4mJiFqYS5jb250ZW50KTt0aGlzLnNldElucHV0VmlzaWJsZSghamEu

aW5wdXRIaWRkZW4pO3RoaXMuc2V0U3RhdHVzQm94VmlzaWJsZSghamEuc3RhdHVz Qm94SGlkZGVuKTtrLmNvbmRpdGlvblNob3codGhpcy5wcml2YWN5LCFqYS5wcml2 YWN5V2lkZ2V0SGlkZGVuKTtpZih0aGlzLmJvb3N0aW5nLmxlbmd0aD4wKWsuY29u ZGl0aW9uU2hvdyh0aGlzLmJvb3N0aW5nWzBdLCFqYS5ib29zdGluZ1dpZGdldEhp ZGRlbik7aWYoIWphLmtlZXBDb250ZW50QXJlYXMpe3Auc2V0UGxhY2Vob2xkZXIo dGhpcy5pbnB1dCxqYS5wbGFjZWhvbGRlcik7aS5zZXRMYWJlbCh0aGlzLmJ1dHRv bixqYS5idXR0b25MYWJlbCk7fXRoaXMuc2V0Qmx1cmIobyhqYS5ibHVyYikpO2lm KGphLmF1dG9zY3JhcGUpe3RoaXMuc2NyYXBlciYmdGhpcy5zY3JhcGVyLmVuYWJs ZSgpO31lbHNlIHRoaXMuc2NyYXBlciYmdGhpcy5zY3JhcGVyLmRpc2FibGUoKTt0 aGlzLnNldEVuYWJsZWQoIWphLmRpc2FibGVkKTt0aGlzLnNldFRvcGljVGFnZ2Vy VmlzaWJsZSghamEuaGlkZVRvcGljVGFnZ2VyKTt0aGlzLnNldEVuZHBvaW50KGph LmVuZHBvaW50KTtpZihqYS5mb3JtVHlwZT09Y2Epe3RoaXMuZm9ybS5zZXRBdHRy aWJ1dGUoJ3JlbCcsJ2FzeW5jJyk7fWVsc2UgdGhpcy5mb3JtLnJlbW92ZUF0dHJp YnV0ZSgncmVsJyk7dGhpcy5mb3JtLnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7 aWYoamEuZm9ybVR5cGU9PWRhKXtpZighdGhpcy5fZmlsZUZvcm0pe3RoaXMuX2Zp bGVGb3JtPW5ldyBuKHRoaXMuZm9ybSk7dGhpcy5fZmlsZUZvcm0uc2V0QWxsb3dD cm9zc09yaWdpbihtLmFsbG93Q3Jvc3NPcmlnaW5Db21wb3NlclVwbG9hZCk7dGhp cy5fZmlsZUZvcm0uc3Vic2NyaWJlKCdzdWJtaXQnLHRoaXMuc2V0TG9hZGluZy5i aW5kKHRoaXMsdHJ1ZSkpO3RoaXMuX2ZpbGVGb3JtLnN1YnNjcmliZSgnZmFpbHVy ZScsdGhpcy5zZXRMb2FkaW5nLmJpbmQodGhpcyxmYWxzZSkpO319ZWxzZSBpZih0 aGlzLl9maWxlRm9ybSl7dGhpcy5fZmlsZUZvcm0uZGVzdHJveSgpO3RoaXMuX2Zp bGVGb3JtPW51bGw7fXRoaXMuc3VibWl0SGFuZGxlcj1qYS5zdWJtaXRIYW5kbGVy O3RoaXMubGF6eUVuZHBvaW50PWphLmxhenlFbmRwb2ludDtrLmFkZENsYXNzKHRo aXMucm9vdCwndWlDb21wb3NlckludGVyYWN0ZWQnKTtrLmFkZENsYXNzKHRoaXMu cm9vdCwndWlDb21wb3Nlck9wZW4nKTtpZihqYS5tZXNzYWdlQm94Rm9jdXNlZCl7 dmFyIG1hPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYobWE9PT1kb2N1bWVudC5i b2R5fHxyLmJ5Q2xhc3MobWEsJ2F0dGFjaG1lbnRMaW5rJykpdGhpcy5mb2N1c0lu cHV0LmJpbmQodGhpcykuZGVmZXIoKTt9aWYoamEuaW5wdXRFbGVtZW50KXtwLnNl dFZhbHVlKHooamEuaW5wdXRFbGVtZW50KSxwLmdldFZhbHVlKHRoaXMuaW5wdXQp KTt1LmdldEluc3RhbmNlKHooamEuaW5wdXRFbGVtZW50KSkudXBkYXRlKCk7fWVs c2UgdS5nZXRJbnN0YW5jZSh0aGlzLmlucHV0KS51cGRhdGUoKTt0aGlzLmxhc3RD b21wb3NlcklucHV0PWphLmlucHV0RWxlbWVudDtnLmluZm9ybSgnY29tcG9zZXIv bXV0YXRlJyx0aGlzKTt9LHN1YnNjcmliZVRvTXV0YXRlOmZ1bmN0aW9uKGphKXty ZXR1cm4gZy5zdWJzY3JpYmUoJ2NvbXBvc2VyL211dGF0ZScsZnVuY3Rpb24oa2Es bGEpe2lmKGxhPT09dGhpcylqYSgpO30uYmluZCh0aGlzKSk7fSx1bnN1YnNjcmli ZUZyb21NdXRhdGU6ZnVuY3Rpb24oamEpe2phLnVuc3Vic2NyaWJlKCk7fSxyZXNl dDpmdW5jdGlvbihqYSl7aWYodGhpcy5pc01ldGFDb21wb3Nlcil7bC5lbXB0eSh0 aGlzLm1ldGFBcmVhKTtsLmVtcHR5KHRoaXMuYm90dG9tQXJlYSk7bC5lbXB0eSh0 aGlzLmJhckFyZWEpO2wuZW1wdHkodGhpcy5hdXhCYXJBcmVhKTt9aWYodGhpcy5y ZXNldENmZyl7dGhpcy5tdXRhdGUodGhpcy5yZXNldENmZyk7fWVsc2V7dmFyIGth PWwuc2NyeSh0aGlzLnJvb3QsJy51aUNvbXBvc2VyQXR0YWNobWVudFNlbGVjdGVk JylbMF07aWYoa2Epay5yZW1vdmVDbGFzcyhrYSwndWlDb21wb3NlckF0dGFjaG1l bnRTZWxlY3RlZCcpO31pZighamEpe3AucmVzZXQodGhpcy5pbnB1dCk7dGhpcy5t ZW50aW9uc0lucHV0JiZ0aGlzLm1lbnRpb25zSW5wdXQucmVzZXQoKTt0aGlzLnNj cmFwZXImJnRoaXMuc2NyYXBlci5yZXNldCgpO31rLnJlbW92ZUNsYXNzKHRoaXMu cm9vdCwndWlDb21wb3NlckludGVyYWN0ZWQnKTtrLnNldENsYXNzKHRoaXMuZm9j dXMsJ2ZvY3VzX3RhcmdldCcpO3RoaXMuc2V0TG9hZGluZyhmYWxzZSk7Zy5pbmZv cm0oJ2NvbXBvc2VyL3Jlc2V0Jyk7fSxvbkZvY3VzOmZ1bmN0aW9uKCl7aWYodGhp cy5sYXp5RW5kcG9pbnQpe3ZhciBqYT1sLmZpbmQodGhpcy5yb290LCdmb3JtLmF0 dGFjaG1lbnRTZWxlY3RGb3JtJyksa2E9bmV3IHYodGhpcy5sYXp5RW5kcG9pbnQp O2thLmFkZFF1ZXJ5RGF0YSh7aXNBdWdtZW50YXRpb246dHJ1ZX0pO2phLmFjdGlv bj1rYS50b1N0cmluZygpO3ZhciBsYT1sLnNjcnkodGhpcy5yb290LCcudWlDb21w b3NlckF0dGFjaG1lbnRTZWxlY3RlZCcpWzBdO2phLnhocGMudmFsdWU9bGEmJmxh LmlkO2phLnhocGMuY2xpY2soKTtrLnJlbW92ZUNsYXNzLmN1cnJ5KHRoaXMucm9v dCwnYXN5bmNfc2F2aW5nJykuZGVmZXIoKTt9dGhpcy5pbmZvcm0oJ2ZvY3VzJyk7 fSxmb2N1c0lucHV0OmZ1bmN0aW9uKCl7cC5mb2N1cyh0aGlzLmlucHV0KTt9LGdl dElucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQ7fSx1cGRhdGVEYXRh U291cmNlVG9rZW46ZnVuY3Rpb24oamEpe2lmKHRoaXMuZGF0YVNvdXJjZSl0aGlz LmRhdGFTb3VyY2UudXBkYXRlVG9rZW4oamEpO30sX2hhbmRsZVVuc2F2ZWRDaGFu Z2VzOmZ1bmN0aW9uKCl7dmFyIGphPXEuZ2V0TmV4dFVSSSgpO2lmKGphLmdldFF1

ZXJ5RGF0YSgpLmhhc093blByb3BlcnR5KCd0aGVhdGVyJykpcmV0dXJuO2lmKHRo aXMuaW5wdXQub2Zmc2V0UGFyZW50IT09bnVsbCYmIXAuaXNFbXB0eSh0aGlzLmlu cHV0KSYmIShhLkRpYWxvZyYmYS5EaWFsb2cuZ2V0Q3VycmVudCgpKSlyZXR1cm4g IkFuZGEgYmVsdW0gbWVueWVsZXNhaWthbiBraXJpbWFuIEFuZGEuIEFwYWthaCBB bmRhIGluZ2luIG1lbmluZ2dhbGthbiB0YW5wYSBtZW55ZWxlc2Fpa2FubnlhPyI7 fX0pO3ZhciBpYTt5KGhhLHtzZXROb2RlVG9Db25maWd1cmU6ZnVuY3Rpb24oamEp e2lhPWphO30sY29uZmlndXJlOmZ1bmN0aW9uKGphLGthLGxhKXt2YXIgbWE9ci5i eUNsYXNzKGlhLCd1aUNvbXBvc2VyJykuaWQsbmE9Zy5zdWJzY3JpYmUoJ3hocGMv Y29uc3RydWN0LycrbWEsZnVuY3Rpb24ob2EscGEpeyhmdW5jdGlvbigpe25hLnVu c3Vic2NyaWJlKCk7fSkuZGVmZXIoKTtwYS5tdXRhdGUoamEpO3BhLnN1YnNjcmli ZSgnaW5pdCcsZnVuY3Rpb24oKXtuZXcgdCgpLmhhbmRsZShrYSk7bmV3IEZ1bmN0 aW9uKGxhKSgpO2lmKGphLmF0dGFjaG1lbnRKUyluZXcgRnVuY3Rpb24oamEuYXR0 YWNobWVudEpTKS5jYWxsKHBhKTt9KTt9KTt9LHB1Ymxpc2g6ZnVuY3Rpb24oamEs a2Epe2thPWthfHx7fTtrYS5jb21wb3Nlcl9pZD1qYTtrYS5jb21wb3Nlcj1oYS5n ZXRJbnN0YW5jZShqYSk7a2EuY29tcG9zZXImJmthLmNvbXBvc2VyLnJlc2V0KGZh bHNlKTtpZihrYS5zdHJlYW1Ob2RlKXtrYS5zdHJlYW1TdG9yeT1rYS5zdHJlYW1O b2RlO31lbHNlIGlmKGthLnN0cmVhbU1hcmt1cClrYS5zdHJlYW1TdG9yeT1vKGth LnN0cmVhbU1hcmt1cCkuZ2V0Um9vdE5vZGUoKTtnLmluZm9ybSgnY29tcG9zZXIv cHVibGlzaCcsa2EpO30sZmluaXNoOmZ1bmN0aW9uKGphKXtoYS5nZXRJbnN0YW5j ZShqYSkuc2V0TG9hZGluZyhmYWxzZSk7fSxnZXRJbnN0YW5jZTpmdW5jdGlvbihq YSl7dmFyIGthPXIuYnlDbGFzcyh4KGphKSwndWlDb21wb3NlcicpO3JldHVybiBr YT9lYVtrYS5pZF06bnVsbDt9fSk7ZS5leHBvcnRzPWhhO30pOwpfX2QoImxlZ2Fj eTpDb21wb3NlciIsWyJDb21wb3NlciJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuQ29t cG9zZXI9YignQ29tcG9zZXInKTt9LDMpOwpfX2QoImxlZ2FjeTpldmVudC1leHRl bnNpb25zIixbImV2ZW50LWV4dGVuc2lvbnMiXSxmdW5jdGlvbihhLGIsYyxkKXti KCdldmVudC1leHRlbnNpb25zJyk7fSwzKTsKZnVuY3Rpb24gTWV0YUNvbXBvc2Vy TWVzc2FnZUJveCgpe31jb3B5UHJvcGVydGllcyhNZXRhQ29tcG9zZXJNZXNzYWdl Qm94LnByb3RvdHlwZSx7aW5pdDpmdW5jdGlvbihhLGIpe3RoaXMuaW5wdXRDb250 YWluZXI9RE9NLnNjcnkoYSwnZGl2LmlucHV0Q29udGFpbmVyJylbMF07dGhpcy50 ZXh0SW5wdXQ9RE9NLnNjcnkoYSwndGV4dGFyZWEubWVudGlvbnNUZXh0YXJlYScp WzBdO3RoaXMubWV0YUFyZWE9RE9NLnNjcnkoYSwnZGl2LmF0dGFjaG1lbnRNZXRh QXJlYScpWzBdO3RoaXMuYm90dG9tQXJlYT1ET00uc2NyeShhLCdkaXYuYXR0YWNo bWVudEJvdHRvbUFyZWEnKVswXTt0aGlzLmJhckFyZWE9RE9NLnNjcnkoYSwnZGl2 LmF0dGFjaG1lbnRCYXJBcmVhJylbMF07RXZlbnQubGlzdGVuKHRoaXMuaW5wdXRD b250YWluZXIsJ2NsaWNrJyxmdW5jdGlvbihjKXt2YXIgZD1jLmdldFRhcmdldCgp O2lmKCFET00uY29udGFpbnModGhpcy5tZXRhQXJlYSxkKSYmZCE9PXRoaXMudGV4 dElucHV0KXRoaXMudGV4dElucHV0LmZvY3VzKCk7fS5iaW5kKHRoaXMpKTt9fSk7 Cl9fZCgiRkJEZXNrdG9wRGV0ZWN0IixbIlVzZXJBZ2VudCJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdVc2VyQWdlbnQnKSxoPSdmYWNlYm9vay5kZXNr dG9wcGx1Z2luJyxpPXttaW1lVHlwZTonYXBwbGljYXRpb24veC1mYWNlYm9vay1k ZXNrdG9wLTEnLGlzUGx1Z2luSW5zdGFsbGVkOmZ1bmN0aW9uKCl7aWYoZy5vc3go KSlyZXR1cm4gZmFsc2U7dmFyIGo9bnVsbDtpZihhLkFjdGl2ZVhPYmplY3Qpe3Ry eXtqPW5ldyBhLkFjdGl2ZVhPYmplY3QoaCk7aWYoailyZXR1cm4gdHJ1ZTt9Y2F0 Y2goayl7fX1lbHNlIGlmKGEubmF2aWdhdG9yJiZhLm5hdmlnYXRvci5wbHVnaW5z KXthLm5hdmlnYXRvci5wbHVnaW5zLnJlZnJlc2goZmFsc2UpO2Zvcih2YXIgbD0w LG09YS5uYXZpZ2F0b3IucGx1Z2lucy5sZW5ndGg7bDxtO2wrKyl7aj1hLm5hdmln YXRvci5wbHVnaW5zW2xdO2lmKGoubGVuZ3RoJiZqWzBdLnR5cGU9PT10aGlzLm1p bWVUeXBlKXJldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO319O2UuZXhwb3J0cz1p O30pOwpfX2QoIkNhY2hlU3RvcmFnZSIsWyJjb3B5UHJvcGVydGllcyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVydGllcycpLGg9e2xv Y2Fsc3RvcmFnZTppfTtmdW5jdGlvbiBpKCl7dGhpcy5fc3RvcmU9YS5sb2NhbFN0 b3JhZ2U7fWkuYXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuICEhYS5sb2NhbFN0 b3JhZ2U7fTtnKGkucHJvdG90eXBlLHtrZXlzOmZ1bmN0aW9uKCl7dmFyIGs9W107 Zm9yKHZhciBsPTA7bDx0aGlzLl9zdG9yZS5sZW5ndGg7bCsrKWsucHVzaCh0aGlz Ll9zdG9yZS5rZXkobCkpO3JldHVybiBrO30sZ2V0OmZ1bmN0aW9uKGspe3JldHVy biB0aGlzLl9zdG9yZS5nZXRJdGVtKGspO30sc2V0OmZ1bmN0aW9uKGssbCl7dGhp cy5fc3RvcmUuc2V0SXRlbShrLGwpO30scmVtb3ZlOmZ1bmN0aW9uKGspe3RoaXMu X3N0b3JlLnJlbW92ZUl0ZW0oayk7fSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuX3N0 b3JlLmNsZWFyKCk7fX0pO2Z1bmN0aW9uIGooayxsKXt0aGlzLl9rZXlfcHJlZml4 PWx8fCdfY3NfJzt0aGlzLl9tYWdpY19wcmVmaXg9J19AXyc7aWYoaz09J0FVVE8n

KWZvcih2YXIgbSBpbiBoKXt2YXIgbj1oW21dO2lmKG4uYXZhaWxhYmxlKCkpe2s9 bTticmVhazt9fWlmKGspaWYoIWhba118fCFoW2tdLmF2YWlsYWJsZSgpKXt0aGlz Ll9iYWNrZW5kPW51bGw7fWVsc2UgdGhpcy5fYmFja2VuZD1uZXcgaFtrXSgpO3Ro aXMuX21lbWNhY2hlPXt9O31nKGoucHJvdG90eXBlLHtrZXlzOmZ1bmN0aW9uKCl7 dmFyIGs9W107aWYodGhpcy5fYmFja2VuZCl7dmFyIGw9dGhpcy5fYmFja2VuZC5r ZXlzKCk7Zm9yKHZhciBtPTA7bTxsLmxlbmd0aDttKyspaWYobFttXS5zdWJzdHIo MCx0aGlzLl9rZXlfcHJlZml4Lmxlbmd0aCk9PXRoaXMuX2tleV9wcmVmaXgpay5w dXNoKGxbbV0uc3Vic3RyKHRoaXMuX2tleV9wcmVmaXgubGVuZ3RoKSk7cmV0dXJu IGs7fWZvcih2YXIgbiBpbiB0aGlzLl9tZW1jYWNoZSlrLnB1c2gobik7cmV0dXJu IGs7fSxzZXQ6ZnVuY3Rpb24oayxsKXt0aGlzLl9tZW1jYWNoZVtrXT1sO2lmKHRo aXMuX2JhY2tlbmQpe2lmKHR5cGVvZiBsPT0nc3RyaW5nJyl7bD10aGlzLl9tYWdp Y19wcmVmaXgrbDt9ZWxzZSBsPUpTT04uc3RyaW5naWZ5KGwpO3RoaXMuX2JhY2tl bmQuc2V0KHRoaXMuX2tleV9wcmVmaXgrayxsKTt9fSxnZXQ6ZnVuY3Rpb24oayxs KXtpZih0aGlzLl9tZW1jYWNoZVtrXSE9PXVuZGVmaW5lZClyZXR1cm4gdGhpcy5f bWVtY2FjaGVba107dmFyIG07aWYodGhpcy5fYmFja2VuZCl7bT10aGlzLl9iYWNr ZW5kLmdldCh0aGlzLl9rZXlfcHJlZml4K2spO2lmKG0hPT1udWxsKXtpZihtLnN1 YnN0cigwLHRoaXMuX21hZ2ljX3ByZWZpeC5sZW5ndGgpPT10aGlzLl9tYWdpY19w cmVmaXgpe209bS5zdWJzdHIodGhpcy5fbWFnaWNfcHJlZml4Lmxlbmd0aCk7fWVs c2UgdHJ5e209SlNPTi5wYXJzZShtKTt9Y2F0Y2gobil7bT11bmRlZmluZWQ7fWlm KG0hPT11bmRlZmluZWQpdGhpcy5fbWVtY2FjaGVba109bTt9ZWxzZSBtPXVuZGVm aW5lZDt9aWYobT09PXVuZGVmaW5lZCYmbCE9PXVuZGVmaW5lZCl7bT1sO3RoaXMu X21lbWNhY2hlW2tdPW07aWYodGhpcy5fYmFja2VuZCl7dmFyIG87aWYodHlwZW9m IG09PSdzdHJpbmcnKXtvPXRoaXMuX21hZ2ljX3ByZWZpeCttO31lbHNlIG89SlNP Ti5zdHJpbmdpZnkobSk7dGhpcy5fYmFja2VuZC5zZXQodGhpcy5fa2V5X3ByZWZp eCtrLG8pO319cmV0dXJuIG07fSxyZW1vdmU6ZnVuY3Rpb24oayl7ZGVsZXRlIHRo aXMuX21lbWNhY2hlW2tdO2lmKHRoaXMuX2JhY2tlbmQpdGhpcy5fYmFja2VuZC5y ZW1vdmUodGhpcy5fa2V5X3ByZWZpeCtrKTt9fSk7ZS5leHBvcnRzPWo7fSk7Cl9f ZCgiRkJEZXNrdG9wUGx1Z2luIixbIkNhY2hlU3RvcmFnZSIsIkRPTSIsIkVudiIs IkZCRGVza3RvcERldGVjdCIsIkhUTUwiLCJVUkkiLCIkIl0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ0NhY2hlU3RvcmFnZScpLGg9YignRE9NJyksaT1i KCdFbnYnKSxqPWIoJ0ZCRGVza3RvcERldGVjdCcpLGs9YignSFRNTCcpLGw9Yign VVJJJyksbT1iKCckJyksbj1uZXcgZygnbG9jYWxzdG9yYWdlJywnX3NvY2lhbGZv eF8nKSxvPXtfcGx1Z2luOidfbm90X2NoZWNrZWQnLGFyYml0ZXJJbmZvcm06ZnVu Y3Rpb24ocCxxKXt2YXIgcj1KU09OLnN0cmluZ2lmeSh7bmFtZTpwLHBheWxvYWQ6 cX0pO3RoaXMuX3RyYW5zbWl0Q29tbWFuZCgnYXJiaXRlcmluZm9ybScscik7fSxi cmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXt0aGlzLl90cmFuc21pdENvbW1hbmQoJ2Jy aW5ndG9mcm9udCcpO30sZG9jazpmdW5jdGlvbigpe3RoaXMuX3RyYW5zbWl0Q29t bWFuZCgnZG9jaycpO30sZ2V0UGx1Z2luOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGx1 Z2luPT09J19ub3RfY2hlY2tlZCcpe3RoaXMuX3BsdWdpbj1udWxsO2lmKGouaXNQ bHVnaW5JbnN0YWxsZWQoKSl7dmFyIHA9aC5jcmVhdGUoJ2RpdicpO2RvY3VtZW50 LmJvZHkuYXBwZW5kQ2hpbGQocCk7aC5zZXRDb250ZW50KHAsaygnPG9iamVjdCBp ZD0ia2l3aV9wbHVnaW4iICcrJ3R5cGU9Iicrai5taW1lVHlwZSsnIiB3aWR0aD0i MCIgaGVpZ2h0PSIwIj4nKyc8L29iamVjdD4nKSk7dGhpcy5fcGx1Z2luPW0oJ2tp d2lfcGx1Z2luJyk7fX1yZXR1cm4gdGhpcy5fcGx1Z2luO30sZ2V0VXNlcklEOmZ1 bmN0aW9uKCl7dmFyIHA9dGhpcy5nZXRQbHVnaW4oKTtyZXR1cm4gcCYmJ2dldFVz ZXJJRCcgaW4gcCYmcC5nZXRVc2VySUQoKTt9LGlzQXBwUnVubmluZzpmdW5jdGlv bigpe3ZhciBwPXRoaXMuZ2V0UGx1Z2luKCk7cmV0dXJuIHAmJidpc0FwcFJ1bm5p bmcnIGluIHAmJnAuaXNBcHBSdW5uaW5nKCk7fSxsYXVuY2hBcHA6ZnVuY3Rpb24o KXt2YXIgcD10aGlzLmdldFBsdWdpbigpO3JldHVybiBwJiYnbGF1bmNoQXBwJyBp biBwJiZwLmxhdW5jaEFwcCgpO30sbG9nb3V0OmZ1bmN0aW9uKHApe3A9cHx8IjAi O3ZhciBxPXRoaXMuZ2V0UGx1Z2luKCk7aWYocSlxLmxvZ291dChwKTt9LHJlY2hl Y2s6ZnVuY3Rpb24oKXtpZih0aGlzLl9wbHVnaW49PT1udWxsKXRoaXMuX3BsdWdp bj0nX25vdF9jaGVja2VkJzt9LHNob3VsZFN1cHByZXNzQmVlcGVyOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuaXNBcHBSdW5uaW5nKCk7fSxzaG91bGRTdXBwcmVzc01l c3NhZ2VzOmZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5nZXRVc2VySUQoKTtpZihwKXty ZXR1cm4gcD09PWkudXNlcjt9ZWxzZSByZXR1cm4gdGhpcy5pc0FwcFJ1bm5pbmco KTt9LHNob3VsZFN1cHByZXNzU2lkZWJhcjpmdW5jdGlvbigpe3ZhciBwPXRoaXMu Z2V0UGx1Z2luKCkscT1wJiYnaXNBcHBEb2NrZWQnIGluIHAmJnAuaXNBcHBEb2Nr ZWQoKSxyPW4mJm4uZ2V0KCdhY3RpdmUnKT09PSd0cnVlJztyZXR1cm4gcXx8cjt9 LHRyYW5zZmVyQXV0aFRva2VuOmZ1bmN0aW9uKHAscSl7aWYocCYmcC5sZW5ndGg+

MCl7dmFyIHI9dGhpcy5nZXRQbHVnaW4oKTtpZihyKXtyLnNldEFjY2Vzc1Rva2Vu KHAscSk7dmFyIHM9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtyLnNldEFjY2Vzc1Rv a2VuKHAscSk7fSw1MDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhckludGVy dmFsKHMpO30sMTAqMTAwMCk7fX1pZih0aGlzLnJlZGlyZWN0SG9tZSl3aW5kb3cu bG9jYXRpb24uaHJlZj1sKCkuc2V0UGF0aCgpLnRvU3RyaW5nKCk7fSxfdHJhbnNt aXRDb21tYW5kOmZ1bmN0aW9uKHAscSl7cT1xfHwnJzt2YXIgcj10aGlzLmdldFBs dWdpbigpO2lmKHImJid0cmFuc21pdENvbW1hbmQnIGluIHIpci50cmFuc21pdENv bW1hbmQocCxxKTt9fTtlLmV4cG9ydHM9bzt9KTsKX19kKCJBUklBIixbIkRPTSIs ImdlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTScpLGg9Yign Z2UnKSxpLGosaz1mdW5jdGlvbigpe2k9aCgnYXJpYUFzc2VydGl2ZUFsZXJ0Jyk7 aWYoIWkpe2k9Zy5jcmVhdGUoJ2Rpdicse2lkOidhcmlhQXNzZXJ0aXZlQWxlcnQn LGNsYXNzTmFtZTonYWNjZXNzaWJsZV9lbGVtJywnYXJpYS1saXZlJzonYXNzZXJ0 aXZlJ30pO2cuYXBwZW5kQ29udGVudChkb2N1bWVudC5ib2R5LGkpO31qPWgoJ2Fy aWFQb2xpdGVBbGVydCcpO2lmKCFqKXtqPWkuY2xvbmVOb2RlKGZhbHNlKTtqLnNl dEF0dHJpYnV0ZSgnaWQnLCdhcmlhUG9saXRlQWxlcnQnKTtqLnNldEF0dHJpYnV0 ZSgnYXJpYS1saXZlJywncG9saXRlJyk7Zy5hcHBlbmRDb250ZW50KGRvY3VtZW50 LmJvZHksaik7fWs9YmFnb2Zob2xkaW5nO307ZnVuY3Rpb24gbChuLG8pe2soKTt2 YXIgcD1vP2k6ajtnLnNldENvbnRlbnQocCxuKTt9dmFyIG09e293bnM6ZnVuY3Rp b24obixvKXtuLnNldEF0dHJpYnV0ZSgnYXJpYS1vd25zJyxnLmdldElEKG8pKTt9 LHNldFBvcHVwOmZ1bmN0aW9uKG4sbyl7dmFyIHA9Zy5nZXRJRChvKTtuLnNldEF0 dHJpYnV0ZSgnYXJpYS1vd25zJyxwKTtuLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250 cm9scycscCk7bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnLCd0cnVlJyk7 aWYobi50YWJJbmRleD09LTEpbi50YWJJbmRleD0wO30sYW5ub3VuY2U6ZnVuY3Rp b24obil7bChuLHRydWUpO30sbm90aWZ5OmZ1bmN0aW9uKG4pe2wobik7fX07ZS5l eHBvcnRzPW07fSk7Cl9fZCgiQ29udGV4dHVhbERpYWxvZ0Zvb3RlckxpbmsiLFsi ZXZlbnQtZXh0ZW5zaW9ucyIsImNvcHlQcm9wZXJ0aWVzIiwiQ1NTIiwiRE9NIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIg Zz1iKCdjb3B5UHJvcGVydGllcycpLGg9YignQ1NTJyksaT1iKCdET00nKTtmdW5j dGlvbiBqKGspe3RoaXMuX2xheWVyPWs7fWcoai5wcm90b3R5cGUse19zdWJzY3Jp cHRpb25zOm51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dmFyIGs9dGhpcy5fbGF5ZXIu Z2V0Um9vdCgpLGw9aS5zY3J5KGssJy51aUNvbnRleHR1YWxEaWFsb2dGb290ZXJM aW5rJylbMF0sbT0ndWlDb250ZXh0dWFsRGlhbG9nSG92ZXJGb290ZXJBcnJvdyc7 dGhpcy5fc3Vic2NyaXB0aW9ucz1bRXZlbnQubGlzdGVuKGwsJ21vdXNlZW50ZXIn LGguYWRkQ2xhc3MuY3VycnkoayxtKSksRXZlbnQubGlzdGVuKGwsJ21vdXNlbGVh dmUnLGgucmVtb3ZlQ2xhc3MuY3VycnkoayxtKSldO30sZGlzYWJsZTpmdW5jdGlv bigpe3RoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChmdW5jdGlvbihrKXtrLnJl bW92ZSgpO30pO3RoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbDt9fSk7ZS5leHBvcnRz PWo7fSk7Cl9fZCgiQ29udGV4dHVhbFRoaW5nIixbIkRPTSIsImdlIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTScpLGg9YignZ2UnKTtmdW5jdGlv biBpKGspe3ZhciBsO3doaWxlKGspe2lmKGsuZ2V0QXR0cmlidXRlJiYobD1rLmdl dEF0dHJpYnV0ZSgnZGF0YS1vd25lcmlkJykpKXJldHVybiBoKGwpO2s9ay5wYXJl bnROb2RlO31yZXR1cm4gbnVsbDt9dmFyIGo9e3JlZ2lzdGVyOmZ1bmN0aW9uKGss bCl7ay5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3duZXJpZCcsZy5nZXRJRChsKSk7fSxy ZW1vdmU6ZnVuY3Rpb24oayl7ay5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtb3duZXJp ZCcpO30sY29udGFpbnNJbmNsdWRpbmdMYXllcnM6ZnVuY3Rpb24oayxsKXt3aGls ZShsKXtpZihnLmNvbnRhaW5zKGssbCkpcmV0dXJuIHRydWU7bD1pKGwpO31yZXR1 cm4gZmFsc2U7fX07ZS5leHBvcnRzPWo7fSk7Cl9fZCgiQm9vdGxvYWRlZFJlYWN0 IixbIkJvb3Rsb2FkZXIiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign Qm9vdGxvYWRlcicpLGg9ZnVuY3Rpb24oail7Zy5sb2FkTW9kdWxlcyhbJ1JlYWN0 J10saik7fSxpPXtpc1ZhbGlkQ29tcG9uZW50OmZ1bmN0aW9uKGope3JldHVybiAo aiYmdHlwZW9mIGouZ2VuTWFya3VwPT09J2Z1bmN0aW9uJyYmdHlwZW9mIGouaGFu ZGxlVXBkYXRlUHJvcHM9PT0nZnVuY3Rpb24nKTt9LGluaXRpYWxpemVUb3VjaEV2 ZW50czpmdW5jdGlvbihqLGspe2goZnVuY3Rpb24obCl7bC5pbml0aWFsaXplVG91 Y2hFdmVudHMoaik7ayYmaygpO30pO30sY3JlYXRlQ29tcG9uZW50OmZ1bmN0aW9u KGosayl7aChmdW5jdGlvbihsKXt2YXIgbT1sLmNyZWF0ZUNvbXBvbmVudChqKTtr JiZrKG0pO30pO30scmVuZGVyQ29tcG9uZW50OmZ1bmN0aW9uKGosayxsKXtoKGZ1 bmN0aW9uKG0pe3ZhciBuPW0ucmVuZGVyQ29tcG9uZW50KGosayk7bCYmbChuKTt9 KTt9LHJlbmRlck9yVXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGosayxsKXtoKGZ1 bmN0aW9uKG0pe3ZhciBuPW0ucmVuZGVyT3JVcGRhdGVDb21wb25lbnQoaixrKTts JiZsKG4pO30pO30sZGVzdHJveUFuZFJlbGVhc2VSZWFjdFJvb3ROb2RlOmZ1bmN0

aW9uKGosayl7aChmdW5jdGlvbihsKXtsLmRlc3Ryb3lBbmRSZWxlYXNlUmVhY3RS b290Tm9kZShqKTtrJiZrKCk7fSk7fX07ZS5leHBvcnRzPWk7fSk7Cl9fZCgiS2V5 RXZlbnRDb250cm9sbGVyIixbImV2ZW50LWV4dGVuc2lvbnMiLCJET00iLCJSdW4i LCJjb3B5UHJvcGVydGllcyIsImlzRW1wdHkiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0RPTScpLGg9YignUnVu JyksaT1iKCdldmVudC1leHRlbnNpb25zJykuJEUsaj1iKCdjb3B5UHJvcGVydGll cycpLGs9YignaXNFbXB0eScpO2Z1bmN0aW9uIGwoKXt0aGlzLmhhbmRsZXJzPXt9 O2RvY3VtZW50Lm9ua2V5dXA9dGhpcy5vbmtleWV2ZW50LmJpbmQodGhpcywnb25r ZXl1cCcpO2RvY3VtZW50Lm9ua2V5ZG93bj10aGlzLm9ua2V5ZXZlbnQuYmluZCh0 aGlzLCdvbmtleWRvd24nKTtkb2N1bWVudC5vbmtleXByZXNzPXRoaXMub25rZXll dmVudC5iaW5kKHRoaXMsJ29ua2V5cHJlc3MnKTt9aihsLHtpbnN0YW5jZTpudWxs LGdldEluc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGwuaW5zdGFuY2V8fChsLmlu c3RhbmNlPW5ldyBsKCkpO30sZGVmYXVsdEZpbHRlcjpmdW5jdGlvbihldmVudCxt KXtldmVudD1pKGV2ZW50KTtyZXR1cm4gbC5maWx0ZXJFdmVudFR5cGVzKGV2ZW50 LG0pJiZsLmZpbHRlckV2ZW50VGFyZ2V0cyhldmVudCxtKSYmbC5maWx0ZXJFdmVu dE1vZGlmaWVycyhldmVudCxtKTt9LGZpbHRlckV2ZW50VHlwZXM6ZnVuY3Rpb24o ZXZlbnQsbSl7aWYobT09PSdvbmtleWRvd24nKXJldHVybiB0cnVlO3JldHVybiBm YWxzZTt9LGZpbHRlckV2ZW50VGFyZ2V0czpmdW5jdGlvbihldmVudCxtKXt2YXIg bj1ldmVudC5nZXRUYXJnZXQoKTtpZihuLmNvbnRlbnRFZGl0YWJsZT09PSd0cnVl JylyZXR1cm4gZmFsc2U7cmV0dXJuICFnLmlzTm9kZU9mVHlwZShuLGwuX2ludGVy YWN0aXZlRWxlbWVudHMpfHwobi50eXBlIGluIGwuX3VuaW50ZXJlc3RpbmdUeXBl cyl8fChnLmlzTm9kZU9mVHlwZShuLFsnaW5wdXQnLCd0ZXh0YXJlYSddKSYmbi52 YWx1ZS5sZW5ndGg9PT0wJiZldmVudC5rZXlDb2RlIGluIGwuX2NvbnRyb2xLZXlz KTt9LGZpbHRlckV2ZW50TW9kaWZpZXJzOmZ1bmN0aW9uKGV2ZW50LG0pe2lmKGV2 ZW50LmN0cmxLZXl8fGV2ZW50LmFsdEtleXx8ZXZlbnQubWV0YUtleXx8ZXZlbnQu cmVwZWF0KXJldHVybiBmYWxzZTtyZXR1cm4gdHJ1ZTt9LHJlZ2lzdGVyS2V5OmZ1 bmN0aW9uKG0sbixvLHApe2lmKG89PT11bmRlZmluZWQpbz1sLmRlZmF1bHRGaWx0 ZXI7dmFyIHE9bC5nZXRJbnN0YW5jZSgpLHI9cS5tYXBLZXkobSk7aWYoayhxLmhh bmRsZXJzKSloLm9uTGVhdmUocS5yZXNldEhhbmRsZXJzLmJpbmQocSkpO3ZhciBz PXt9O2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7dCsrKXttPXJbdF07aWYoIXEuaGFu ZGxlcnNbbV18fHApcS5oYW5kbGVyc1ttXT1bXTt2YXIgdT17Y2FsbGJhY2s6bixm aWx0ZXI6b307c1ttXT11O3EuaGFuZGxlcnNbbV0ucHVzaCh1KTt9cmV0dXJuIHty ZW1vdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHYgaW4gcyl7aWYocS5oYW5kbGVyc1t2 XSYmcS5oYW5kbGVyc1t2XS5sZW5ndGgpe3ZhciB3PXEuaGFuZGxlcnNbdl0uaW5k ZXhPZihzW3ZdKTt3Pj0wJiZxLmhhbmRsZXJzW3ZdLnNwbGljZSh3LDEpO31kZWxl dGUgc1t2XTt9fX07fSxrZXlDb2RlTWFwOntCQUNLU1BBQ0U6WzhdLFRBQjpbOV0s UkVUVVJOOlsxM10sRVNDQVBFOlsyN10sTEVGVDpbMzcsNjMyMzRdLFVQOlszOCw2 MzIzMl0sUklHSFQ6WzM5LDYzMjM1XSxET1dOOls0MCw2MzIzM10sREVMRVRFOls0 Nl0sQ09NTUE6WzE4OF0sUEVSSU9EOlsxOTBdLCdgJzpbMTkyXSwnWyc6WzIxOV0s J10nOlsyMjFdfSxfaW50ZXJhY3RpdmVFbGVtZW50czpbJ2lucHV0Jywnc2VsZWN0 JywndGV4dGFyZWEnLCdvYmplY3QnLCdlbWJlZCddLF91bmludGVyZXN0aW5nVHlw ZXM6e2NoZWNrYm94OjEscmFkaW86MSxzdWJtaXQ6MX0sX2NvbnRyb2xLZXlzOns4 OjEsOToxLDEzOjEsMjc6MSwzNzoxLDYzMjM0OjEsMzg6MSw2MzIzMjoxLDM5OjEs NjMyMzU6MSw0MDoxLDYzMjMzOjEsNDY6MX19KTtqKGwucHJvdG90eXBlLHttYXBL ZXk6ZnVuY3Rpb24obSl7aWYobT49MCYmbTw9OSl7aWYodHlwZW9mKG0pIT0nbnVt YmVyJyltPW0uY2hhckNvZGVBdCgwKS00ODtyZXR1cm4gWzQ4K20sOTYrbV07fXZh ciBuPWwua2V5Q29kZU1hcFttLnRvVXBwZXJDYXNlKCldO2lmKG4pcmV0dXJuIG47 cmV0dXJuIFttLnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKV07fSxvbmtleWV2 ZW50OmZ1bmN0aW9uKG0sbil7bj1pKG4pO3ZhciBvPXRoaXMuaGFuZGxlcnNbbi5r ZXlDb2RlXXx8dGhpcy5oYW5kbGVyc1tuLndoaWNoXSxwLHEscjtpZihvKWZvcih2 YXIgcz0wO3M8by5sZW5ndGg7cysrKXtwPW9bc10uY2FsbGJhY2s7cT1vW3NdLmZp bHRlcjt0cnl7aWYoIXF8fHEobixtKSl7cj1wKG4sbSk7aWYocj09PWZhbHNlKXJl dHVybiBFdmVudC5raWxsKG4pO319Y2F0Y2godCl7fX1yZXR1cm4gdHJ1ZTt9LHJl c2V0SGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXJzPXt9O319KTtlLmV4 cG9ydHM9bDt9KTsKX19kKCJMYXllciIsWyJldmVudC1leHRlbnNpb25zIiwiQXJi aXRlck1peGluIiwiQmVoYXZpb3JzTWl4aW4iLCJCb290bG9hZGVkUmVhY3QiLCJD bGFzcyIsIkNvbnRleHR1YWxUaGluZyIsIkNTUyIsIkRhdGFTdG9yZSIsIkRPTSIs IkhUTUwiLCJLZXlFdmVudENvbnRyb2xsZXIiLCJTdHlsZSIsIiQiLCJjb3B5UHJv cGVydGllcyIsImdlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4 dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyTWl4aW4nKSxoPWIoJ0JlaGF2aW9y

c01peGluJyksaT1iKCdCb290bG9hZGVkUmVhY3QnKSxqPWIoJ0NsYXNzJyksaz1i KCdDb250ZXh0dWFsVGhpbmcnKSxsPWIoJ0NTUycpLG09YignRGF0YVN0b3JlJyks bj1iKCdET00nKSxvPWIoJ0hUTUwnKSxwPWIoJ0tleUV2ZW50Q29udHJvbGxlcicp LHE9YignU3R5bGUnKSxyPWIoJyQnKSxzPWIoJ2NvcHlQcm9wZXJ0aWVzJyksdD1i KCdnZScpLHU9W107ZnVuY3Rpb24gdih3LHgpe3RoaXMuX2NvbmZpZz13fHx7fTtp Zih4KXt0aGlzLl9jb25maWd1cmUodGhpcy5fY29uZmlnLHgpO3ZhciB5PXRoaXMu X2NvbmZpZy5hZGRlZEJlaGF2aW9yc3x8W107dGhpcy5lbmFibGVCZWhhdmlvcnMo dGhpcy5fZ2V0RGVmYXVsdEJlaGF2aW9ycygpLmNvbmNhdCh5KSk7fX1zKHYsZyk7 cyh2LHtpbml0OmZ1bmN0aW9uKHcseCl7dy5pbml0KHgpO30saW5pdEFuZFNob3c6 ZnVuY3Rpb24odyx4KXt3LmluaXQoeCkuc2hvdygpO30sc2hvdzpmdW5jdGlvbih3 KXt3LnNob3coKTt9fSk7cyh2LnByb3RvdHlwZSxnLGgse19pbml0aWFsaXplZDpm YWxzZSxfcm9vdDpudWxsLF9zaG93bjpmYWxzZSxfaGlkaW5nOmZhbHNlLF9jYXVz YWxFbGVtZW50Om51bGwsX3JlYWN0Q29udGFpbmVyOm51bGwsaW5pdDpmdW5jdGlv bih3KXt0aGlzLl9jb25maWd1cmUodGhpcy5fY29uZmlnLHcpO3ZhciB4PXRoaXMu X2NvbmZpZy5hZGRlZEJlaGF2aW9yc3x8W107dGhpcy5lbmFibGVCZWhhdmlvcnMo dGhpcy5fZ2V0RGVmYXVsdEJlaGF2aW9ycygpLmNvbmNhdCh4KSk7dGhpcy5faW5p dGlhbGl6ZWQ9dHJ1ZTtyZXR1cm4gdGhpczt9LF9jb25maWd1cmU6ZnVuY3Rpb24o dyx4KXtpZih4KXt2YXIgeT1uLmlzTm9kZSh4KSx6PXR5cGVvZiB4PT09J3N0cmlu Zyd8fG8uaXNIVE1MKHgpO3RoaXMuY29udGFpbnNSZWFjdENvbXBvbmVudD1pLmlz VmFsaWRDb21wb25lbnQoeCk7aWYoeil7eD1vKHgpLmdldFJvb3ROb2RlKCk7fWVs c2UgaWYodGhpcy5jb250YWluc1JlYWN0Q29tcG9uZW50KXt2YXIgYWE9ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7aS5yZW5kZXJDb21wb25lbnQoeCxhYSk7 eD10aGlzLl9yZWFjdENvbnRhaW5lcj1hYTt9fXRoaXMuX3Jvb3Q9dGhpcy5fYnVp bGRXcmFwcGVyKHcseCk7bC5hZGRDbGFzcyh0aGlzLl9yb290LCd1aUxheWVyJyk7 aWYody5jYXVzYWxFbGVtZW50KXRoaXMuX2NhdXNhbEVsZW1lbnQ9dCh3LmNhdXNh bEVsZW1lbnQpO20uc2V0KHRoaXMuX3Jvb3QsJ2xheWVyJyx0aGlzKTt9LF9nZXRE ZWZhdWx0QmVoYXZpb3JzOmZ1bmN0aW9uKCl7cmV0dXJuIFtdO30sZ2V0Q2F1c2Fs RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYXVzYWxFbGVtZW50O30s c2V0Q2F1c2FsRWxlbWVudDpmdW5jdGlvbih3KXt0aGlzLl9jYXVzYWxFbGVtZW50 PXc7fSxnZXRJbnNlcnRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5z ZXJ0UGFyZW50fHxkb2N1bWVudC5ib2R5O30sZ2V0Um9vdDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9yb290O30sX2dldENvbnRlbnRSb290OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX3Jvb3Q7fSxfYnVpbGRXcmFwcGVyOmZ1bmN0aW9uKHcseCl7cmV0 dXJuIHg7fSxzZXRJbnNlcnRQYXJlbnQ6ZnVuY3Rpb24odyl7aWYodyl7aWYodGhp cy5fc2hvd24mJnchPT10aGlzLmdldEluc2VydFBhcmVudCgpKXtuLmFwcGVuZENv bnRlbnQodyx0aGlzLmdldFJvb3QoKSk7dGhpcy51cGRhdGVQb3NpdGlvbigpO310 aGlzLl9pbnNlcnRQYXJlbnQ9dzt9cmV0dXJuIHRoaXM7fSxzaG93OmZ1bmN0aW9u KCl7aWYodGhpcy5fc2hvd24pcmV0dXJuIHRoaXM7dmFyIHc9dGhpcy5nZXRSb290 KCk7dGhpcy5pbmZvcm0oJ2JlZm9yZXNob3cnKTtxLnNldCh3LCd2aXNpYmlsaXR5 JywnaGlkZGVuJyk7cS5zZXQodywnb3ZlcmZsb3cnLCdoaWRkZW4nKTtsLnNob3co dyk7bi5hcHBlbmRDb250ZW50KHRoaXMuZ2V0SW5zZXJ0UGFyZW50KCksdyk7aWYo dGhpcy51cGRhdGVQb3NpdGlvbigpIT09ZmFsc2Upe3UucHVzaCh0aGlzKTt0aGlz Ll9zaG93bj10cnVlO3RoaXMuaW5mb3JtKCdzaG93Jyk7di5pbmZvcm0oJ3Nob3cn LHRoaXMpO31lbHNlIG4ucmVtb3ZlKHcpO3Euc2V0KHcsJ3Zpc2liaWxpdHknLCcn KTtxLnNldCh3LCdvdmVyZmxvdycsJycpO3RoaXMuaW5mb3JtKCdhZnRlcnNob3cn KTtyZXR1cm4gdGhpczt9LGhpZGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9oaWRpbmd8 fCF0aGlzLl9zaG93bnx8dGhpcy5pbmZvcm0oJ2JlZm9yZWhpZGUnKT09PWZhbHNl KXJldHVybiB0aGlzO3RoaXMuX2hpZGluZz10cnVlO2lmKHRoaXMuaW5mb3JtKCdz dGFydGhpZGUnKSE9PWZhbHNlKXRoaXMuZmluaXNoSGlkZSgpO3JldHVybiB0aGlz O30sZmluaXNoSGlkZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Nob3duKXt1LnJlbW92 ZSh0aGlzKTt0aGlzLl9oaWRpbmc9ZmFsc2U7dGhpcy5fc2hvd249ZmFsc2U7bi5y ZW1vdmUodGhpcy5nZXRSb290KCkpO3RoaXMuaW5mb3JtKCdoaWRlJyk7di5pbmZv cm0oJ2hpZGUnLHRoaXMpO319LGlzU2hvd246ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fc2hvd247fSx1cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0cnVl O30sZGVzdHJveTpmdW5jdGlvbigpe2lmKHRoaXMuY29udGFpbnNSZWFjdENvbXBv bmVudClpLmRlc3Ryb3lBbmRSZWxlYXNlUmVhY3RSb290Tm9kZSh0aGlzLl9yZWFj dENvbnRhaW5lcik7dGhpcy5maW5pc2hIaWRlKCk7dGhpcy5kZXN0cm95QmVoYXZp b3JzKCk7dGhpcy5pbmZvcm0oJ2Rlc3Ryb3knKTt2LmluZm9ybSgnZGVzdHJveScs dGhpcyk7bS5yZW1vdmUodGhpcy5fcm9vdCwnbGF5ZXInKTt0aGlzLl9yb290PXRo aXMuX2NhdXNhbEVsZW1lbnQ9bnVsbDt9fSk7RXZlbnQubGlzdGVuKGRvY3VtZW50

LmRvY3VtZW50RWxlbWVudCwna2V5ZG93bicsZnVuY3Rpb24oZXZlbnQpe2lmKHAu ZmlsdGVyRXZlbnRUYXJnZXRzKGV2ZW50LCdrZXlkb3duJykpZm9yKHZhciB3PXUu bGVuZ3RoLTE7dz49MDt3LS0paWYodVt3XS5pbmZvcm0oJ2tleScsZXZlbnQpPT09 ZmFsc2UpcmV0dXJuIGZhbHNlO30sRXZlbnQuUHJpb3JpdHkuVVJHRU5UKTtFdmVu dC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdjbGljaycsZnVuY3Rp b24oZXZlbnQpe3ZhciB3PXUubGVuZ3RoO2lmKCF3KXJldHVybjt2YXIgeD1ldmVu dC5nZXRUYXJnZXQoKTtpZighbi5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQseCkpcmV0dXJuO3ZhciB5LHo7d2hpbGUody0tKXt5PXVbd107ej15Ll9n ZXRDb250ZW50Um9vdCgpO2lmKGsuY29udGFpbnNJbmNsdWRpbmdMYXllcnMoeix4 KSlyZXR1cm47aWYoeS5pbmZvcm0oJ2JsdXInLGV2ZW50KT09PWZhbHNlKXJldHVy bjt9fSk7ZS5leHBvcnRzPXY7fSk7Cl9fZCgiTGF5ZXJBdXRvRm9jdXMiLFsiZnVu Y3Rpb24tZXh0ZW5zaW9ucyIsImNvcHlQcm9wZXJ0aWVzIiwiRE9NUXVlcnkiLCJJ bnB1dCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdmdW5jdGlvbi1leHRlbnNp b25zJyk7dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxoPWIoJ0RPTVF1ZXJ5Jyks aT1iKCdJbnB1dCcpO2Z1bmN0aW9uIGooayl7dGhpcy5fbGF5ZXI9azt9ZyhqLnBy b3RvdHlwZSx7X3N1YnNjcmlwdGlvbjpudWxsLGVuYWJsZTpmdW5jdGlvbigpe3Ro aXMuX3N1YnNjcmlwdGlvbj10aGlzLl9sYXllci5zdWJzY3JpYmUoJ2FmdGVyc2hv dycsdGhpcy5fZm9jdXMuYmluZCh0aGlzKSk7fSxkaXNhYmxlOmZ1bmN0aW9uKCl7 dGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7dGhpcy5fc3Vic2NyaXB0 aW9uPW51bGw7fSxfZm9jdXM6ZnVuY3Rpb24oKXt2YXIgaz1oLnNjcnkodGhpcy5f bGF5ZXIuZ2V0Um9vdCgpLCcuYXV0b2ZvY3VzJylbMF07ayYmaS5mb2N1cyhrKTt9 fSk7ZS5leHBvcnRzPWo7fSk7Cl9fZCgiTGF5ZXJCdXR0b25zIixbImV2ZW50LWV4 dGVuc2lvbnMiLCJQYXJlbnQiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignUGFyZW50 JyksaD1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGkoail7dGhpcy5fbGF5 ZXI9ajt9aChpLnByb3RvdHlwZSx7X2xpc3RlbmVyOm51bGwsZW5hYmxlOmZ1bmN0 aW9uKCl7dGhpcy5fbGlzdGVuZXI9RXZlbnQubGlzdGVuKHRoaXMuX2xheWVyLmdl dFJvb3QoKSwnY2xpY2snLHRoaXMuX2hhbmRsZS5iaW5kKHRoaXMpKTt9LGRpc2Fi bGU6ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5lci5yZW1vdmUoKTt0aGlzLl9saXN0 ZW5lcj1udWxsO30sX2hhbmRsZTpmdW5jdGlvbihqKXt2YXIgaz1qLmdldFRhcmdl dCgpLGw9Zy5ieUNsYXNzKGssJ2xheWVyQ29uZmlybScpO2lmKGwpe2lmKHRoaXMu X2xheWVyLmluZm9ybSgnY29uZmlybScsbCk9PT1mYWxzZSlqLnByZXZlbnQoKTty ZXR1cm47fXZhciBtPWcuYnlDbGFzcyhrLCdsYXllckNhbmNlbCcpO2lmKG0pe2lm KHRoaXMuX2xheWVyLmluZm9ybSgnY2FuY2VsJyxtKSE9PWZhbHNlKXRoaXMuX2xh eWVyLmhpZGUoKTtqLnByZXZlbnQoKTtyZXR1cm47fXZhciBuPWcuYnlDbGFzcyhr LCdsYXllckJ1dHRvbicpO2lmKG4paWYodGhpcy5fbGF5ZXIuaW5mb3JtKCdidXR0 b24nLG4pPT09ZmFsc2Upai5wcmV2ZW50KCk7fX0pO2UuZXhwb3J0cz1pO30pOwpf X2QoIkxheWVyRGVzdHJveU9uSGlkZSIsWyJmdW5jdGlvbi1leHRlbnNpb25zIiwi Y29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZnVuY3Rp b24tZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rp b24gaChpKXt0aGlzLl9sYXllcj1pO31nKGgucHJvdG90eXBlLHtfc3Vic2NyaXB0 aW9uOm51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9uPXRo aXMuX2xheWVyLnN1YnNjcmliZSgnaGlkZScsRnVuY3Rpb24ucHJvdG90eXBlLmRl ZmVyLnNoaWVsZCh0aGlzLl9sYXllci5kZXN0cm95LmJpbmQodGhpcy5fbGF5ZXIp KSk7fSxkaXNhYmxlOmZ1bmN0aW9uKCl7aWYodGhpcy5fc3Vic2NyaXB0aW9uKXt0 aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTt0aGlzLl9zdWJzY3JpcHRp b249bnVsbDt9fX0pO2UuZXhwb3J0cz1oO30pOwpfX2QoIkxheWVyRmFkZU9uSGlk ZSIsWyJBbmltYXRpb24iLCJMYXllciIsIlN0eWxlIiwiVXNlckFnZW50IiwiY29w eVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQW5p bWF0aW9uJyksaD1iKCdMYXllcicpLGk9YignU3R5bGUnKSxqPWIoJ1VzZXJBZ2Vu dCcpLGs9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBsKG0pe3RoaXMuX2xh eWVyPW07fWsobC5wcm90b3R5cGUse19zdWJzY3JpcHRpb246bnVsbCxlbmFibGU6 ZnVuY3Rpb24oKXtpZihqLmllKCk8OSlyZXR1cm47dGhpcy5fc3Vic2NyaXB0aW9u PXRoaXMuX2xheWVyLnN1YnNjcmliZSgnc3RhcnRoaWRlJyx0aGlzLl9oYW5kbGVT dGFydEhpZGUuYmluZCh0aGlzKSk7fSxkaXNhYmxlOmZ1bmN0aW9uKCl7aWYodGhp cy5fc3Vic2NyaXB0aW9uKXt0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUo KTt0aGlzLl9zdWJzY3JpcHRpb249bnVsbDt9fSxfaGFuZGxlU3RhcnRIaWRlOmZ1 bmN0aW9uKCl7dmFyIG09dHJ1ZSxuPWguc3Vic2NyaWJlKCdzaG93JyxmdW5jdGlv bigpe24udW5zdWJzY3JpYmUoKTttPWZhbHNlO30pOyhmdW5jdGlvbigpe24udW5z dWJzY3JpYmUoKTtuPW51bGw7aWYobSl7dGhpcy5fYW5pbWF0ZSgpO31lbHNlIHRo

aXMuX2xheWVyLmZpbmlzaEhpZGUoKTt9KS5iaW5kKHRoaXMpLmRlZmVyKCk7cmV0 dXJuIGZhbHNlO30sX2FuaW1hdGU6ZnVuY3Rpb24oKXtuZXcgZyh0aGlzLl9sYXll ci5nZXRSb290KCkpLmZyb20oJ29wYWNpdHknLDEpLnRvKCdvcGFjaXR5JywwKS5k dXJhdGlvbigxNTApLm9uZG9uZSh0aGlzLl9maW5pc2guYmluZCh0aGlzKSkuZ28o KTt9LF9maW5pc2g6ZnVuY3Rpb24oKXtpLnNldCh0aGlzLl9sYXllci5nZXRSb290 KCksJ29wYWNpdHknLCcnKTt0aGlzLl9sYXllci5maW5pc2hIaWRlKCk7fX0pO2Uu ZXhwb3J0cz1sO30pOwpfX2QoIkxheWVyRmFkZU9uU2hvdyIsWyJBbmltYXRpb24i LCJTdHlsZSIsIlVzZXJBZ2VudCIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FuaW1hdGlvbicpLGg9YignU3R5bGUnKSxp PWIoJ1VzZXJBZ2VudCcpLGo9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBr KGwpe3RoaXMuX2xheWVyPWw7fWooay5wcm90b3R5cGUse19zdWJzY3JpcHRpb25z Om51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7aWYoaS5pZSgpPDkpcmV0dXJuO3RoaXMu X3N1YnNjcmlwdGlvbnM9W3RoaXMuX2xheWVyLnN1YnNjcmliZSgnYmVmb3Jlc2hv dycsZnVuY3Rpb24oKXtoLnNldCh0aGlzLl9sYXllci5nZXRSb290KCksJ29wYWNp dHknLDApO30uYmluZCh0aGlzKSksdGhpcy5fbGF5ZXIuc3Vic2NyaWJlKCdzaG93 Jyx0aGlzLl9hbmltYXRlLmJpbmQodGhpcykpXTt9LGRpc2FibGU6ZnVuY3Rpb24o KXtpZih0aGlzLl9zdWJzY3JpcHRpb25zKXt3aGlsZSh0aGlzLl9zdWJzY3JpcHRp b25zLmxlbmd0aCl0aGlzLl9zdWJzY3JpcHRpb25zLnBvcCgpLnVuc3Vic2NyaWJl KCk7dGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsO319LF9hbmltYXRlOmZ1bmN0aW9u KCl7dmFyIGw9dGhpcy5fbGF5ZXIuZ2V0Um9vdCgpO25ldyBnKGwpLmZyb20oJ29w YWNpdHknLDApLnRvKCdvcGFjaXR5JywxKS5kdXJhdGlvbigxMDApLm9uZG9uZSho LnNldC5jdXJyeShsLCdvcGFjaXR5JywnJykpLmdvKCk7fX0pO2UuZXhwb3J0cz1r O30pOwpfX2QoIkxheWVyRm9ybUhvb2tzIixbImV2ZW50LWV4dGVuc2lvbnMiLCJG b3JtIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7Yign ZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0Zvcm0nKSxoPWIoJ2NvcHlQcm9w ZXJ0aWVzJyk7ZnVuY3Rpb24gaShqKXt0aGlzLl9sYXllcj1qO31oKGkucHJvdG90 eXBlLHtfc3Vic2NyaXB0aW9uczpudWxsLGVuYWJsZTpmdW5jdGlvbigpe3ZhciBq PXRoaXMuX2xheWVyLmdldFJvb3QoKTt0aGlzLl9zdWJzY3JpcHRpb25zPVtFdmVu dC5saXN0ZW4oaiwnc3VibWl0Jyx0aGlzLl9vblN1Ym1pdC5iaW5kKHRoaXMpKSxF dmVudC5saXN0ZW4oaiwnc3VjY2VzcycsdGhpcy5fb25TdWNjZXNzLmJpbmQodGhp cykpLEV2ZW50Lmxpc3RlbihqLCdlcnJvcicsdGhpcy5fb25FcnJvci5iaW5kKHRo aXMpKV07fSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9ucy5m b3JFYWNoKGZ1bmN0aW9uKGope2oucmVtb3ZlKCk7fSk7dGhpcy5fc3Vic2NyaXB0 aW9ucz1udWxsO30sX29uU3VibWl0OmZ1bmN0aW9uKGV2ZW50KXtpZih0aGlzLl9s YXllci5pbmZvcm0oJ3N1Ym1pdCcsZXZlbnQpPT09ZmFsc2UpZXZlbnQua2lsbCgp O30sX29uU3VjY2VzczpmdW5jdGlvbihldmVudCl7aWYodGhpcy5fbGF5ZXIuaW5m b3JtKCdzdWNjZXNzJyxldmVudCk9PT1mYWxzZSlldmVudC5raWxsKCk7fSxfb25F cnJvcjpmdW5jdGlvbihldmVudCl7dmFyIGo9ZXZlbnQuZ2V0RGF0YSgpO2lmKHRo aXMuX2xheWVyLmluZm9ybSgnZXJyb3InLHtyZXNwb25zZTpqLnJlc3BvbnNlfSk9 PT1mYWxzZSlldmVudC5raWxsKCk7fX0pO2UuZXhwb3J0cz1pO30pOwpfX2QoIkxh eWVySGlkZU9uQmx1ciIsWyJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGgoaSl7 dGhpcy5fbGF5ZXI9aTt9ZyhoLnByb3RvdHlwZSx7X3N1YnNjcmlwdGlvbnM6bnVs bCxfb25CbHVyOm51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0 aW9ucz1bdGhpcy5fbGF5ZXIuc3Vic2NyaWJlKCdzaG93Jyx0aGlzLl9hdHRhY2gu YmluZCh0aGlzKSksdGhpcy5fbGF5ZXIuc3Vic2NyaWJlKCdoaWRlJyx0aGlzLl9k ZXRhY2guYmluZCh0aGlzKSldO2lmKHRoaXMuX2xheWVyLmlzU2hvd24oKSl0aGlz Ll9hdHRhY2goKTt9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLl9kZXRhY2goKTt3 aGlsZSh0aGlzLl9zdWJzY3JpcHRpb25zLmxlbmd0aCl0aGlzLl9zdWJzY3JpcHRp b25zLnBvcCgpLnVuc3Vic2NyaWJlKCk7dGhpcy5fc3Vic2NyaXB0aW9ucz1udWxs O30sX2RldGFjaDpmdW5jdGlvbigpe3RoaXMuX29uQmx1ciYmdGhpcy5fb25CbHVy LnVuc3Vic2NyaWJlKCk7dGhpcy5fb25CbHVyPW51bGw7fSxfYXR0YWNoOmZ1bmN0 aW9uKCl7KGZ1bmN0aW9uKCl7dGhpcy5fb25CbHVyPXRoaXMuX2xheWVyLnN1YnNj cmliZSgnYmx1cicsdGhpcy5fbGF5ZXIuaGlkZS5zaGllbGQodGhpcy5fbGF5ZXIp KTt9KS5iaW5kKHRoaXMpLmRlZmVyKCk7fX0pO2UuZXhwb3J0cz1oO30pOwpfX2Qo IkxheWVySGlkZU9uRXNjYXBlIixbImV2ZW50LWV4dGVuc2lvbnMiLCJjb3B5UHJv cGVydGllcyIsIklucHV0IiwiS2V5cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXti KCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxo PWIoJ0lucHV0JyksaT1iKCdLZXlzJyk7ZnVuY3Rpb24gaihrKXt0aGlzLl9sYXll cj1rO31nKGoucHJvdG90eXBlLHtfc3Vic2NyaXB0aW9uOm51bGwsZW5hYmxlOmZ1

bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX2xheWVyLnN1YnNjcmli ZSgna2V5Jyx0aGlzLl9oYW5kbGUuYmluZCh0aGlzKSk7fSxkaXNhYmxlOmZ1bmN0 aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7dGhpcy5fc3Vi c2NyaXB0aW9uPW51bGw7fSxfaGFuZGxlOmZ1bmN0aW9uKGssZXZlbnQpe2lmKEV2 ZW50LmdldEtleUNvZGUoZXZlbnQpPT09aS5FU0Mpe3ZhciBsPXRoaXMuX2xheWVy LmdldENhdXNhbEVsZW1lbnQoKTtpZihsKWlmKGwudGFiSW5kZXghPS0xKWguZm9j dXMobCk7dGhpcy5fbGF5ZXIuaGlkZSgpO3JldHVybiBmYWxzZTt9fX0pO2UuZXhw b3J0cz1qO30pOwpfX2QoIkxheWVySGlkZU9uU3VjY2VzcyIsWyJjb3B5UHJvcGVy dGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVy dGllcycpO2Z1bmN0aW9uIGgoaSl7dGhpcy5fbGF5ZXI9aTt9ZyhoLnByb3RvdHlw ZSx7X3N1YnNjcmlwdGlvbjpudWxsLGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuX3N1 YnNjcmlwdGlvbj10aGlzLl9sYXllci5zdWJzY3JpYmUoJ3N1Y2Nlc3MnLHRoaXMu X2xheWVyLmhpZGUuYmluZCh0aGlzLl9sYXllcikpO30sZGlzYWJsZTpmdW5jdGlv bigpe2lmKHRoaXMuX3N1YnNjcmlwdGlvbil7dGhpcy5fc3Vic2NyaXB0aW9uLnVu c3Vic2NyaWJlKCk7dGhpcy5fc3Vic2NyaXB0aW9uPW51bGw7fX19KTtlLmV4cG9y dHM9aDt9KTsKX19kKCJMYXllckhpZGVPblRyYW5zaXRpb24iLFsiQXJiaXRlciIs IkNsYXNzIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9YignQXJiaXRlcicpLGg9YignQ2xhc3MnKSxpPWIoJ2NvcHlQcm9wZXJ0 aWVzJyk7ZnVuY3Rpb24gaihrKXt0aGlzLl9sYXllcj1rO31pKGoucHJvdG90eXBl LHtfc3Vic2NyaXB0aW9uOm51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vi c2NyaXB0aW9uPWcuc3Vic2NyaWJlKCdwYWdlX3RyYW5zaXRpb24nLHRoaXMuX2xh eWVyLmhpZGUuc2hpZWxkKHRoaXMuX2xheWVyKSxnLlNVQlNDUklCRV9ORVcpO30s ZGlzYWJsZTpmdW5jdGlvbigpe2lmKHRoaXMuX3N1YnNjcmlwdGlvbil7dGhpcy5f c3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7dGhpcy5fc3Vic2NyaXB0aW9uPW51 bGw7fX19KTtlLmV4cG9ydHM9ajt9KTsKX19kKCJUYWJiYWJsZUVsZW1lbnRzIixb IlN0eWxlIiwiY3JlYXRlQXJyYXlGcm9tIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ1N0eWxlJyksaD1iKCdjcmVhdGVBcnJheUZyb20nKSxpPXtmaW5k OmZ1bmN0aW9uKGope2Z1bmN0aW9uIGsobil7aWYobi50YWJJbmRleD4wKXJldHVy biB0cnVlO3N3aXRjaChuLnRhZ05hbWUpe2Nhc2UgIkEiOnJldHVybiBuLmhyZWYm Jm4ucmVsIT0iaWdub3JlIjtjYXNlICJJTlBVVCI6cmV0dXJuIG4udHlwZSE9Imhp ZGRlbiImJm4udHlwZSE9ImZpbGUiJiYhbi5kaXNhYmxlZDtjYXNlICJTRUxFQ1Qi OnJldHVybiAhbi5kaXNhYmxlZDtjYXNlICJURVhUQVJFQSI6cmV0dXJuICFuLmRp c2FibGVkO2RlZmF1bHQ6cmV0dXJuIGZhbHNlO319ZnVuY3Rpb24gbChuKXtpZihu Lm9mZnNldEhlaWdodD09PTAmJm4ub2Zmc2V0V2lkdGg9PT0wKXJldHVybiB0cnVl O3ZhciBvPW47d2hpbGUobyYmbyE9aiYmZy5nZXQobywndmlzaWJpbGl0eScpIT09 J2hpZGRlbicpbz1vLnBhcmVudE5vZGU7cmV0dXJuIG8hPT1qO312YXIgbT1oKGou Z2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7cmV0dXJuIG0uZmlsdGVyKGZ1bmN0 aW9uKG4pe3JldHVybiBrKG4pJiYhbChuKTt9KTt9fTtlLmV4cG9ydHM9aTt9KTsK X19kKCJMYXllclRhYklzb2xhdGlvbiIsWyJldmVudC1leHRlbnNpb25zIiwiY29w eVByb3BlcnRpZXMiLCJUYWJiYWJsZUVsZW1lbnRzIiwiS2V5cyIsIklucHV0Il0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIg Zz1iKCdjb3B5UHJvcGVydGllcycpLGg9YignVGFiYmFibGVFbGVtZW50cycpLGk9 YignS2V5cycpLGo9YignSW5wdXQnKTtmdW5jdGlvbiBrKGwpe3RoaXMuX2xheWVy PWw7fWcoay5wcm90b3R5cGUse190YWJIYW5kbGVyOm51bGwsX3N1YnNjcmlwdGlv bnM6W10sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9ucz1bdGhp cy5fbGF5ZXIuc3Vic2NyaWJlKCdzaG93Jyx0aGlzLl9hdHRhY2hIYW5kbGVyLmJp bmQodGhpcykpLHRoaXMuX2xheWVyLnN1YnNjcmliZSgnaGlkZScsdGhpcy5fZGV0 YWNoSGFuZGxlci5iaW5kKHRoaXMpKV07fSxkaXNhYmxlOmZ1bmN0aW9uKCl7d2hp bGUodGhpcy5fc3Vic2NyaXB0aW9ucy5sZW5ndGgpdGhpcy5fc3Vic2NyaXB0aW9u cy5wb3AoKS51bnN1YnNjcmliZSgpO3RoaXMuX2RldGFjaEhhbmRsZXIoKTt9LF9h dHRhY2hIYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5fbGF5ZXIuZ2V0Um9v dCgpO3RoaXMuX3RhYkhhbmRsZXI9RXZlbnQubGlzdGVuKGwsJ2tleWRvd24nLGZ1 bmN0aW9uKG0pe2lmKEV2ZW50LmdldEtleUNvZGUobSk9PWkuVEFCKXt2YXIgbj1t LmdldFRhcmdldCgpO2lmKG4pe3ZhciBvPWguZmluZChsKSxwPW9bMF0scT1vW28u bGVuZ3RoLTFdLHI9bS5nZXRNb2RpZmllcnMoKS5zaGlmdDtpZihyJiZuPT1wKXtt LnByZXZlbnREZWZhdWx0KCk7ai5mb2N1cyhxKTt9ZWxzZSBpZighciYmbj09cSl7 bS5wcmV2ZW50RGVmYXVsdCgpO2ouZm9jdXMocCk7fX19fSk7fSxfZGV0YWNoSGFu ZGxlcjpmdW5jdGlvbigpe2lmKHRoaXMuX3RhYkhhbmRsZXIpe3RoaXMuX3RhYkhh bmRsZXIucmVtb3ZlKCk7dGhpcy5fdGFiSGFuZGxlcj1udWxsO319fSk7ZS5leHBv cnRzPWs7fSk7Cl9fZCgiTGF5ZXJNb3VzZUhvb2tzIixbImV2ZW50LWV4dGVuc2lv

bnMiLCJmdW5jdGlvbi1leHRlbnNpb25zIiwiQ29udGV4dHVhbFRoaW5nIiwiRE9N IiwiTGF5ZXIiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXtiKCdldmVudC1leHRlbnNpb25zJyk7YignZnVuY3Rpb24tZXh0ZW5zaW9ucycp O3ZhciBnPWIoJ0NvbnRleHR1YWxUaGluZycpLGg9YignRE9NJyksaT1iKCdMYXll cicpLGo9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBrKGwpe3RoaXMuX2xh eWVyPWw7fWooay5wcm90b3R5cGUse19tb3VzZVN1YnNjcmlwdGlvbnM6W10sX2xh eWVyU3Vic2NyaXB0aW9uczpbXSxlbmFibGU6ZnVuY3Rpb24oKXt2YXIgbD10aGlz Ll9sYXllci5nZXRSb290KCk7dGhpcy5fbW91c2VTdWJzY3JpcHRpb25zPVtFdmVu dC5saXN0ZW4obCwnbW91c2VlbnRlcicsdGhpcy5fb25Nb3VzZUVudGVyLmJpbmQo dGhpcykpLEV2ZW50Lmxpc3RlbihsLCdtb3VzZWxlYXZlJyx0aGlzLl9vbk1vdXNl TGVhdmUuYmluZCh0aGlzKSldO3RoaXMuX2xheWVyU3Vic2NyaXB0aW9ucz1baS5z dWJzY3JpYmUoJ3Nob3cnLHRoaXMuX29uTGF5ZXJTaG93LmJpbmQodGhpcykpLGku c3Vic2NyaWJlKCdoaWRlJyx0aGlzLl9vbkxheWVySGlkZS5iaW5kKHRoaXMpKV07 fSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fbW91c2VTdWJzY3JpcHRpb25zLmZv ckVhY2goZnVuY3Rpb24obCl7bC5yZW1vdmUoKTt9KTt0aGlzLl9tb3VzZVN1YnNj cmlwdGlvbnM9W107dGhpcy5fbGF5ZXJTdWJzY3JpcHRpb25zLmZvckVhY2goZnVu Y3Rpb24obCl7aS51bnN1YnNjcmliZShsKTt9KTt0aGlzLl9sYXllclN1YnNjcmlw dGlvbnM9W107fSxfb25Nb3VzZUVudGVyOmZ1bmN0aW9uKGwpe3RoaXMuX2ZpcmVN b3VzZUxlYXZlT25MYXllckhpZGU9ZmFsc2U7aWYoIXRoaXMuX3NwYXduZWRMYXll cil0aGlzLl9sYXllci5pbmZvcm0oJ21vdXNlZW50ZXInKTt9LF9vbk1vdXNlTGVh dmU6ZnVuY3Rpb24obCl7aWYoIXRoaXMuX3NwYXduZWRMYXllcil0aGlzLl9sYXll ci5pbmZvcm0oJ21vdXNlbGVhdmUnKTt0aGlzLl9maXJlTW91c2VMZWF2ZU9uTGF5 ZXJIaWRlPSEhdGhpcy5fc3Bhd25lZExheWVyO30sX29uTGF5ZXJTaG93OmZ1bmN0 aW9uKGwsbSl7dmFyIG49bS5nZXRDb250ZXh0JiZtLmdldENvbnRleHQoKTtpZihu KWlmKGguY29udGFpbnModGhpcy5fbGF5ZXIuZ2V0Um9vdCgpLG4pKXRoaXMuX3Nw YXduZWRMYXllcj1tO30sX29uTGF5ZXJIaWRlOmZ1bmN0aW9uKGwsbSl7aWYobT09 PXRoaXMuX3NwYXduZWRMYXllcil7dGhpcy5fc3Bhd25lZExheWVyPW51bGw7aWYo dGhpcy5fZmlyZU1vdXNlTGVhdmVPbkxheWVySGlkZSl0aGlzLl9vbk1vdXNlTGVh dmUuYmluZCh0aGlzKS5kZWZlcigpO319fSk7ZS5leHBvcnRzPWs7fSk7Cl9fZCgi T3ZlcmxheSIsWyJDbGFzcyIsIkNTUyIsIkRhdGFTdG9yZSIsIkRPTSIsIkxheWVy IiwiTGF5ZXJBdXRvRm9jdXMiLCJMYXllckJ1dHRvbnMiLCJMYXllckRlc3Ryb3lP bkhpZGUiLCJMYXllckZhZGVPbkhpZGUiLCJMYXllckZhZGVPblNob3ciLCJMYXll ckZvcm1Ib29rcyIsIkxheWVySGlkZU9uQmx1ciIsIkxheWVySGlkZU9uRXNjYXBl IiwiTGF5ZXJIaWRlT25TdWNjZXNzIiwiTGF5ZXJIaWRlT25UcmFuc2l0aW9uIiwi TGF5ZXJUYWJJc29sYXRpb24iLCJMYXllck1vdXNlSG9va3MiLCJjb3B5UHJvcGVy dGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDbGFzcycpLGg9 YignQ1NTJyksaT1iKCdEYXRhU3RvcmUnKSxqPWIoJ0RPTScpLGs9YignTGF5ZXIn KSxsPWIoJ0xheWVyQXV0b0ZvY3VzJyksbT1iKCdMYXllckJ1dHRvbnMnKSxuPWIo J0xheWVyRGVzdHJveU9uSGlkZScpLG89YignTGF5ZXJGYWRlT25IaWRlJykscD1i KCdMYXllckZhZGVPblNob3cnKSxxPWIoJ0xheWVyRm9ybUhvb2tzJykscj1iKCdM YXllckhpZGVPbkJsdXInKSxzPWIoJ0xheWVySGlkZU9uRXNjYXBlJyksdD1iKCdM YXllckhpZGVPblN1Y2Nlc3MnKSx1PWIoJ0xheWVySGlkZU9uVHJhbnNpdGlvbicp LHY9YignTGF5ZXJUYWJJc29sYXRpb24nKSx3PWIoJ0xheWVyTW91c2VIb29rcycp LHg9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiB5KHosYWEpe3o9eCh7YnVp bGRXcmFwcGVyOnRydWV9LHp8fHt9KTt0aGlzLl9zaG91bGRCdWlsZFdyYXBwZXI9 ei5idWlsZFdyYXBwZXI7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMseixhYSk7 fWcuZXh0ZW5kKHksayk7eCh5LnByb3RvdHlwZSx7X2NvbmZpZ3VyZTpmdW5jdGlv bih6LGFhKXt0aGlzLnBhcmVudC5fY29uZmlndXJlKHosYWEpO3ZhciBiYT10aGlz LmdldFJvb3QoKTt0aGlzLl9vdmVybGF5PWouc2NyeShiYSwnZGl2LnVpT3Zlcmxh eScpWzBdfHxiYTtoLmhpZGUoYmEpO2ouYXBwZW5kQ29udGVudCh0aGlzLmdldElu c2VydFBhcmVudCgpLGJhKTtpLnNldCh0aGlzLl9vdmVybGF5LCdvdmVybGF5Jyx0 aGlzKTt2YXIgY2E9aS5nZXQodGhpcy5fb3ZlcmxheSwnd2lkdGgnKTtjYSYmdGhp cy5zZXRXaWR0aChjYSk7aWYodGhpcy5zZXRGaXhlZCl0aGlzLnNldEZpeGVkKGku Z2V0KHRoaXMuX292ZXJsYXksJ2ZpeGVkJyk9PSd0cnVlJyk7aWYoaS5nZXQodGhp cy5fb3ZlcmxheSwnZmFkZW9uc2hvdycpIT0nZmFsc2UnKXRoaXMuZW5hYmxlQmVo YXZpb3IocCk7aWYoaS5nZXQodGhpcy5fb3ZlcmxheSwnZmFkZW9uaGlkZScpIT0n ZmFsc2UnKXRoaXMuZW5hYmxlQmVoYXZpb3Iobyk7aWYoaS5nZXQodGhpcy5fb3Zl cmxheSwnaGlkZW9uc3VjY2VzcycpIT0nZmFsc2UnKXRoaXMuZW5hYmxlQmVoYXZp b3IodCk7aWYoaS5nZXQodGhpcy5fb3ZlcmxheSwnaGlkZW9uYmx1cicpPT0ndHJ1 ZScpdGhpcy5lbmFibGVCZWhhdmlvcihyKTtpZihpLmdldCh0aGlzLl9vdmVybGF5

LCdkZXN0cm95b25oaWRlJykhPSdmYWxzZScpdGhpcy5lbmFibGVCZWhhdmlvcihu KTtyZXR1cm4gdGhpczt9LF9nZXREZWZhdWx0QmVoYXZpb3JzOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMucGFyZW50Ll9nZXREZWZhdWx0QmVoYXZpb3JzKCkuY29uY2F0 KFtsLG0scSx3LHMsdSx2XSk7fSxpbml0V2l0aG91dEJ1aWxkaW5nV3JhcHBlcjpm dW5jdGlvbigpe3RoaXMuX3Nob3VsZEJ1aWxkV3JhcHBlcj1mYWxzZTtyZXR1cm4g dGhpcy5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9LF9idWlsZFdyYXBwZXI6 ZnVuY3Rpb24oeixhYSl7YWE9dGhpcy5wYXJlbnQuX2J1aWxkV3JhcHBlcih6LGFh KTtpZighdGhpcy5fc2hvdWxkQnVpbGRXcmFwcGVyKXt0aGlzLl9jb250ZW50Um9v dD1hYTtyZXR1cm4gYWE7fXRoaXMuX2NvbnRlbnRSb290PWouY3JlYXRlKCdkaXYn LHtjbGFzc05hbWU6J3VpT3ZlcmxheUNvbnRlbnQnfSxhYSk7cmV0dXJuIGouY3Jl YXRlKCdkaXYnLHtjbGFzc05hbWU6J3VpT3ZlcmxheSd9LHRoaXMuX2NvbnRlbnRS b290KTt9LF9nZXRDb250ZW50Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9j b250ZW50Um9vdDt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtpLnJlbW92ZSh0aGlzLmdl dFJvb3QoKSwnb3ZlcmxheScpO3RoaXMucGFyZW50LmRlc3Ryb3koKTt9fSk7ZS5l eHBvcnRzPXk7fSk7Cl9fZCgiQ29udGV4dHVhbERpYWxvZ1giLFsiZXZlbnQtZXh0 ZW5zaW9ucyIsIkFSSUEiLCJBcmJpdGVyIiwiQXJiaXRlck1peGluIiwiQm9vdGxv YWRlciIsIkNsYXNzIiwiQ29udGV4dHVhbERpYWxvZ0Zvb3RlckxpbmsiLCJDb250 ZXh0dWFsVGhpbmciLCJDU1MiLCJEYXRhU3RvcmUiLCJET00iLCJMb2NhbGUiLCJP dmVybGF5IiwiUGFyZW50IiwiU3R5bGUiLCJWZWN0b3IiLCIkIiwiY29weVByb3Bl cnRpZXMiLCJnZXRPdmVybGF5WkluZGV4Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBUklBJyksaD1iKCdBcmJp dGVyJyksaT1iKCdBcmJpdGVyTWl4aW4nKSxqPWIoJ0Jvb3Rsb2FkZXInKSxrPWIo J0NsYXNzJyksbD1iKCdDb250ZXh0dWFsRGlhbG9nRm9vdGVyTGluaycpLG09Yign Q29udGV4dHVhbFRoaW5nJyksbj1iKCdDU1MnKSxvPWIoJ0RhdGFTdG9yZScpLHA9 YignRE9NJykscT1iKCdMb2NhbGUnKSxyPWIoJ092ZXJsYXknKSxzPWIoJ1BhcmVu dCcpLHQ9YignU3R5bGUnKSx1PWIoJ1ZlY3RvcicpLHY9YignJCcpLHc9YignY29w eVByb3BlcnRpZXMnKSx4PWIoJ2dldE92ZXJsYXlaSW5kZXgnKTtmdW5jdGlvbiB5 KHosYWEpe3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlzLHosYWEpO31rLmV4dGVu ZCh5LHIpO3coeSxpLHtBUlJPV19PRkZTRVQ6MTUsQVJST1dfTEVOR1RIOjE2LEFS Uk9XX0lOU0VUOjIyLFRPUF9NQVJHSU46OCxCT1RUT01fTUFSR0lOOjMwLExFRlRf TUFSR0lOOjE1LFJJR0hUX01BUkdJTjozMCxQT1NJVElPTl9UT19DTEFTUzp7YWJv dmU6J3VpQ29udGV4dHVhbERpYWxvZ0Fib3ZlJyxiZWxvdzondWlDb250ZXh0dWFs RGlhbG9nQmVsb3cnLGxlZnQ6J3VpQ29udGV4dHVhbERpYWxvZ0xlZnQnLHJpZ2h0 Oid1aUNvbnRleHR1YWxEaWFsb2dSaWdodCd9LFJJR0hUX0FMSUdORURfQ0xBU1M6 J3VpQ29udGV4dHVhbERpYWxvZ1JpZ2h0QWxpZ25lZCcsQVJST1dfQ0xBU1M6e2Jv dHRvbTondWlDb250ZXh0dWFsRGlhbG9nQXJyb3dCb3R0b20nLHRvcDondWlDb250 ZXh0dWFsRGlhbG9nQXJyb3dUb3AnLHJpZ2h0Oid1aUNvbnRleHR1YWxEaWFsb2dB cnJvd1JpZ2h0JyxsZWZ0Oid1aUNvbnRleHR1YWxEaWFsb2dBcnJvd0xlZnQnfSxQ T1NJVElPTl9UT19BUlJPVzp7YWJvdmU6J2JvdHRvbScsYmVsb3c6J3RvcCcsbGVm dDoncmlnaHQnLHJpZ2h0OidsZWZ0J30sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oeil7 dmFyIGFhPW8uZ2V0KHosJ0NvbnRleHR1YWxEaWFsb2dYJyk7aWYoIWFhKXt2YXIg YmE9cy5ieUNsYXNzKHosJ3VpT3ZlcmxheScpO2lmKGJhKWFhPW8uZ2V0KGJhLCdv dmVybGF5Jyk7fXJldHVybiBhYTt9fSk7dyh5LnByb3RvdHlwZSx7X3Njcm9sbExp c3RlbmVyOm51bGwsX3Njcm9sbFBhcmVudDpudWxsLF93aWR0aDpudWxsLF9maXhl ZDpmYWxzZSxfaGFzQ3VzdG9tQXJyb3c6ZmFsc2UsX2hhc0Zvb3RlcjpmYWxzZSxf c2hvd1N1YnNjcmlwdGlvbjpudWxsLF9oaWRlU3Vic2NyaXB0aW9uOm51bGwsX2hv dmVyY2FyZFN1YnNjcmlwdGlvbjpudWxsLF9zZXRDb250ZXh0U3Vic2NyaXB0aW9u Om51bGwsX3Jlc2l6ZUxpc3RlbmVyOm51bGwsX3JlZmxvd1N1YnNjcmlwdGlvbjpu dWxsLF9jb25maWd1cmU6ZnVuY3Rpb24oeixhYSl7dGhpcy5wYXJlbnQuX2NvbmZp Z3VyZSh6LGFhKTt2YXIgYmE9dGhpcy5nZXRSb290KCksY2E9by5nZXQuY3Vycnko YmEpO3RoaXMuc2V0QWxpZ25IKGNhKCdhbGlnbmgnLCdsZWZ0JykpO3RoaXMuc2V0 T2Zmc2V0WChjYSgnb2Zmc2V0eCcsMCkpO3RoaXMuc2V0T2Zmc2V0WShjYSgnb2Zm c2V0eScsMCkpO3RoaXMuc2V0UG9zaXRpb24oY2EoJ3Bvc2l0aW9uJywnYWJvdmUn KSk7dGhpcy5faGFzQ3VzdG9tQXJyb3c9Y2EoJ2hhc2N1c3RvbWFycm93JyxmYWxz ZSk7dGhpcy5faGFzRm9vdGVyPWNhKCdoYXNmb290ZXInLGZhbHNlKTtpZih0aGlz Ll9oYXNGb290ZXIpe3ZhciBkYT1wLnNjcnkoYmEsJy51aUNvbnRleHR1YWxEaWFs b2dGb290ZXJMaW5rJylbMF07ZGEmJnRoaXMuZW5hYmxlQmVoYXZpb3IobCk7fXRo aXMuX3NldENvbnRleHRTdWJzY3JpcHRpb249dGhpcy5zdWJzY3JpYmUoJ2JlZm9y ZXNob3cnLGZ1bmN0aW9uKCl7dGhpcy51bnN1YnNjcmliZSh0aGlzLl9zZXRDb250 ZXh0U3Vic2NyaXB0aW9uKTt0aGlzLl9zZXRDb250ZXh0U3Vic2NyaXB0aW9uPW51

bGw7dmFyIGVhPWNhKCdjb250ZXh0Jyk7aWYoZWEpe3RoaXMuc2V0Q29udGV4dCh2 KGVhKSk7fWVsc2V7ZWE9Y2EoJ2NvbnRleHRzZWxlY3RvcicpO2lmKGVhKXRoaXMu c2V0Q29udGV4dChwLmZpbmQoZG9jdW1lbnQsZWEpKTt9fS5iaW5kKHRoaXMpKTt0 aGlzLl9jb250ZW50PXAuc2NyeShiYSwnLnVpQ29udGV4dHVhbERpYWxvZ0NvbnRl bnQnKVswXTt0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXRoaXMuc3Vic2NyaWJlKCdz aG93JyxmdW5jdGlvbigpe3ZhciBlYT10aGlzLnVwZGF0ZVBvc2l0aW9uLnNoaWVs ZCh0aGlzKTt0aGlzLl9yZXNpemVMaXN0ZW5lcj1FdmVudC5saXN0ZW4od2luZG93 LCdyZXNpemUnLGVhKTt0aGlzLl9yZWZsb3dTdWJzY3JpcHRpb249aC5zdWJzY3Jp YmUoJ3JlZmxvdycsZWEpO3RoaXMuX3NldHVwU2Nyb2xsTGlzdGVuZXIodGhpcy5f c2Nyb2xsUGFyZW50KTttLnJlZ2lzdGVyKGJhLHRoaXMuY29udGV4dCk7aC5pbmZv cm0oJ2xheWVyX3Nob3duJyx7dHlwZTonQ29udGV4dHVhbERpYWxvZyd9KTt9LmJp bmQodGhpcykpO3RoaXMuX2hpZGVTdWJzY3JpcHRpb249dGhpcy5zdWJzY3JpYmUo J2hpZGUnLGZ1bmN0aW9uKCl7dGhpcy5fdGVhcmRvd25SZXNpemVBbmRSZWZsb3dM aXN0ZW5lcnMoKTt0aGlzLl90ZWFyZG93blNjcm9sbExpc3RlbmVyKCk7bS5yZW1v dmUoYmEpO2guaW5mb3JtKCdsYXllcl9oaWRkZW4nLHt0eXBlOidDb250ZXh0dWFs RGlhbG9nJ30pO30uYmluZCh0aGlzKSk7dGhpcy5faG92ZXJjYXJkU3Vic2NyaXB0 aW9uPWguc3Vic2NyaWJlKCdIb3ZlcmNhcmQvaGlkZScsZnVuY3Rpb24oZWEsZmEp e2lmKGEuSG92ZXJjYXJkLmNvbnRhaW5zKHRoaXMuZ2V0Q29udGV4dCgpKSl0aGlz LmhpZGUoKTt9LmJpbmQodGhpcykpO3JldHVybiB0aGlzO30sX2J1aWxkV3JhcHBl cjpmdW5jdGlvbih6LGFhKXt2YXIgYmE9dGhpcy5wYXJlbnQuX2J1aWxkV3JhcHBl cih6LGFhKTtpZighdGhpcy5fc2hvdWxkQnVpbGRXcmFwcGVyKXJldHVybiBiYTtu LmFkZENsYXNzKGJhLCd1aUNvbnRleHR1YWxEaWFsb2cnKTtyZXR1cm4gcC5jcmVh dGUoJ2Rpdicse2NsYXNzTmFtZTondWlDb250ZXh0dWFsRGlhbG9nUG9zaXRpb25l cid9LGJhKTt9LHNldFdpZHRoOmZ1bmN0aW9uKHope3RoaXMuX3dpZHRoPU1hdGgu Zmxvb3Ioeik7cmV0dXJuIHRoaXM7fSxzZXRGaXhlZDpmdW5jdGlvbih6KXt6PSEh ejtuLmNvbmRpdGlvbkNsYXNzKHRoaXMuZ2V0Um9vdCgpLCd1aUNvbnRleHR1YWxE aWFsb2dGaXhlZCcseik7dGhpcy5fZml4ZWQ9ejtyZXR1cm4gdGhpczt9LHNldEFs aWduSDpmdW5jdGlvbih6KXt0aGlzLmFsaWduSD16O3RoaXMuX3VwZGF0ZUFsaWdu bWVudENsYXNzKCk7dGhpcy5fc2hvd24mJnRoaXMudXBkYXRlUG9zaXRpb24oKTt0 aGlzLnBvc2l0aW9uJiZ0aGlzLl91cGRhdGVBcnJvdygpO3JldHVybiB0aGlzO30s Z2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50O30sZ2V0 Q29udGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHQ7fSxzZXRDb250 ZXh0OmZ1bmN0aW9uKHope2lmKHRoaXMuX3NldENvbnRleHRTdWJzY3JpcHRpb24p e3RoaXMudW5zdWJzY3JpYmUodGhpcy5fc2V0Q29udGV4dFN1YnNjcmlwdGlvbik7 dGhpcy5fc2V0Q29udGV4dFN1YnNjcmlwdGlvbj1udWxsO316PXYoeik7aWYodGhp cy5jb250ZXh0JiZ0aGlzLmNvbnRleHQhPXopby5yZW1vdmUodGhpcy5jb250ZXh0 LCdDb250ZXh0dWFsRGlhbG9nWCcpO3RoaXMuY29udGV4dD16O2cuc2V0UG9wdXAo dGhpcy5nZXRDYXVzYWxFbGVtZW50KCksdGhpcy5nZXRSb290KCkpO3ZhciBhYT1z LmJ5Q2xhc3MoeiwnZmJQaG90b1Nub3dsaWZ0Jyk7dGhpcy5zZXRJbnNlcnRQYXJl bnQoYWF8fGRvY3VtZW50LmJvZHkpO2lmKHRoaXMuX3Njcm9sbExpc3RlbmVyJiZ0 aGlzLl9zY3JvbGxQYXJlbnQhPT1hYSl7dGhpcy5fdGVhcmRvd25TY3JvbGxMaXN0 ZW5lcigpO3RoaXMuX3NldHVwU2Nyb2xsTGlzdGVuZXIoYWEpO310aGlzLl9zY3Jv bGxQYXJlbnQ9YWE7dmFyIGJhPXgoeix0aGlzLl9pbnNlcnRQYXJlbnQpO3Quc2V0 KHRoaXMuZ2V0Um9vdCgpLCd6LWluZGV4JyxiYT4yMDA/YmE6JycpO28uc2V0KHRo aXMuY29udGV4dCwnQ29udGV4dHVhbERpYWxvZ1gnLHRoaXMpO3JldHVybiB0aGlz O30sZ2V0Q2F1c2FsRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVu dC5nZXRDYXVzYWxFbGVtZW50KCl8fHRoaXMuY29udGV4dDt9LGxpc3RlbjpmdW5j dGlvbih6LGFhKXtyZXR1cm4gRXZlbnQubGlzdGVuKHRoaXMuZ2V0Um9vdCgpLHos YWEpO30sc2V0T2Zmc2V0WDpmdW5jdGlvbih6KXt0aGlzLm9mZnNldFg9cGFyc2VJ bnQoeiwxMCl8fDA7dGhpcy5fc2hvd24mJnRoaXMudXBkYXRlUG9zaXRpb24oKTty ZXR1cm4gdGhpczt9LHNldE9mZnNldFk6ZnVuY3Rpb24oeil7dGhpcy5vZmZzZXRZ PXBhcnNlSW50KHosMTApfHwwO3RoaXMuX3Nob3duJiZ0aGlzLnVwZGF0ZVBvc2l0 aW9uKCk7cmV0dXJuIHRoaXM7fSxzZXRQb3NpdGlvbjpmdW5jdGlvbih6KXt0aGlz LnBvc2l0aW9uPXo7Zm9yKHZhciBhYSBpbiB5LlBPU0lUSU9OX1RPX0NMQVNTKW4u Y29uZGl0aW9uQ2xhc3ModGhpcy5nZXRSb290KCkseS5QT1NJVElPTl9UT19DTEFT U1thYV0sej09YWEpO3RoaXMuX3VwZGF0ZUFsaWdubWVudENsYXNzKCk7dGhpcy5f c2hvd24mJnRoaXMudXBkYXRlUG9zaXRpb24oKTt0aGlzLl91cGRhdGVBcnJvdygp O3JldHVybiB0aGlzO30sdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhp cy5jb250ZXh0KXJldHVybiBmYWxzZTtpZih0aGlzLl93aWR0aCl0LnNldCh0aGlz Ll9vdmVybGF5LCd3aWR0aCcsdGhpcy5fd2lkdGgrJ3B4Jyk7dmFyIHo9dGhpcy5f

Zml4ZWQ/J3ZpZXdwb3J0JzonZG9jdW1lbnQnLGFhPXUuZ2V0RWxlbWVudFBvc2l0 aW9uKHRoaXMuY29udGV4dCx6KSxiYT10aGlzLl9zY3JvbGxQYXJlbnQ7aWYoYmEp YWE9YWEuc3ViKHUuZ2V0RWxlbWVudFBvc2l0aW9uKGJhLCdkb2N1bWVudCcpKS5h ZGQoYmEuc2Nyb2xsTGVmdCxiYS5zY3JvbGxUb3ApO3ZhciBjYT11LmdldEVsZW1l bnREaW1lbnNpb25zKHRoaXMuY29udGV4dCksZGE9dGhpcy5wb3NpdGlvbj09J2Fi b3ZlJ3x8dGhpcy5wb3NpdGlvbj09J2JlbG93JyxlYT1xLmlzUlRMKCk7aWYoKHRo aXMucG9zaXRpb249PSdyaWdodCd8fChkYSYmdGhpcy5hbGlnbkg9PSdyaWdodCcp KSE9ZWEpYWE9YWEuYWRkKGNhLngsMCk7aWYodGhpcy5wb3NpdGlvbj09J2JlbG93 JylhYT1hYS5hZGQoMCxjYS55KTt2YXIgZmE9bmV3IHUoMCwwKTtpZihkYSYmdGhp cy5hbGlnbkg9PSdjZW50ZXInKXtmYT1mYS5hZGQoKGNhLngtdGhpcy5fd2lkdGgp LzIsMCk7fWVsc2V7dmFyIGdhPWRhP2NhLng6Y2EueSxoYT0yKnkuQVJST1dfSU5T RVQ7aWYoZ2E8aGEpe3ZhciBpYT1nYS8yLXkuQVJST1dfSU5TRVQ7aWYoZGEmJih0 aGlzLmFsaWduSD09J3JpZ2h0JyE9ZWEpKWlhPS1pYTtmYT1mYS5hZGQoZGE/aWE6 MCxkYT8wOmlhKTt9fWZhPWZhLmFkZCh0aGlzLm9mZnNldFgsdGhpcy5vZmZzZXRZ KTtpZihlYSlmYT1mYS5tdWwoLTEsMSk7YWE9YWEuYWRkKGZhKTtpZih0aGlzLl9m aXhlZClhYT1uZXcgdShhYS54LGFhLnksJ2RvY3VtZW50Jyk7YWEuc2V0RWxlbWVu dFBvc2l0aW9uKHRoaXMuZ2V0Um9vdCgpKTt0aGlzLl9hZGp1c3RWZXJ0aWNhbFBv c2l0aW9uKCk7dGhpcy5fYWRqdXN0SG9yaXpvbnRhbFBvc2l0aW9uKCk7cmV0dXJu IHRydWU7fSxzY3JvbGxUbzpmdW5jdGlvbigpe2lmKHRoaXMuY29udGV4dClqLmxv YWRNb2R1bGVzKFsnRE9NU2Nyb2xsJ10sZnVuY3Rpb24oeil7ei5zY3JvbGxUbyh0 aGlzLmNvbnRleHQsdHJ1ZSx0cnVlKTt9LmJpbmQodGhpcykpO30sZGVzdHJveTpm dW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmUodGhpcy5fc2hvd1N1YnNjcmlwdGlv bik7dGhpcy51bnN1YnNjcmliZSh0aGlzLl9oaWRlU3Vic2NyaXB0aW9uKTt0aGlz Ll9ob3ZlcmNhcmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtpZih0aGlzLl9z ZXRDb250ZXh0U3Vic2NyaXB0aW9uKXt0aGlzLnVuc3Vic2NyaWJlKHRoaXMuX3Nl dENvbnRleHRTdWJzY3JpcHRpb24pO3RoaXMuX3NldENvbnRleHRTdWJzY3JpcHRp b249bnVsbDt9dGhpcy5fdGVhcmRvd25TY3JvbGxMaXN0ZW5lcigpO3RoaXMuX3Rl YXJkb3duUmVzaXplQW5kUmVmbG93TGlzdGVuZXJzKCk7dGhpcy5jb250ZXh0JiZv LnJlbW92ZSh0aGlzLmNvbnRleHQsJ0NvbnRleHR1YWxEaWFsb2dYJyk7dGhpcy5w YXJlbnQuZGVzdHJveSgpO30sX2FkanVzdFZlcnRpY2FsUG9zaXRpb246ZnVuY3Rp b24oKXtpZih0aGlzLnBvc2l0aW9uIT0nbGVmdCcmJnRoaXMucG9zaXRpb24hPSdy aWdodCcpe3Quc2V0KHRoaXMuX292ZXJsYXksJ3RvcCcsJycpO3JldHVybjt9dmFy IHo9dGhpcy5nZXRSb290KCksYWE9dS5nZXRFbGVtZW50UG9zaXRpb24oeiwndmll d3BvcnQnKS55LGJhPXUuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5fb3Zlcmxh eSkueSxjYT11LmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnksZGE9eS5UT1BfTUFS R0lOLGVhPU1hdGgubWluKE1hdGgubWF4KDAsYWErYmEreS5CT1RUT01fTUFSR0lO LWNhKSxNYXRoLm1heCgtZGEsYWEtZGEpLGJhLTIqeS5BUlJPV19JTlNFVCk7dC5z ZXQodGhpcy5fb3ZlcmxheSwndG9wJywoLTEqZWEpKydweCcpO3Quc2V0KHRoaXMu X2Fycm93LCd0b3AnLHkuQVJST1dfT0ZGU0VUKydweCcpO3Quc2V0KHRoaXMuX2Fy cm93LCdtYXJnaW5Ub3AnLGVhKydweCcpO30sX2FkanVzdEhvcml6b250YWxQb3Np dGlvbjpmdW5jdGlvbigpe2lmKCh0aGlzLnBvc2l0aW9uIT0nYWJvdmUnJiZ0aGlz LnBvc2l0aW9uIT0nYmVsb3cnKXx8dGhpcy5hbGlnbkghPSdsZWZ0Jyl7dC5zZXQo dGhpcy5fb3ZlcmxheSwnbGVmdCcsJycpO3Quc2V0KHRoaXMuX292ZXJsYXksJ3Jp Z2h0JywnJyk7cmV0dXJuO312YXIgej10aGlzLmdldFJvb3QoKSxhYT11LmdldEVs ZW1lbnRQb3NpdGlvbih6LCd2aWV3cG9ydCcpLngsYmE9dS5nZXRFbGVtZW50RGlt ZW5zaW9ucyh0aGlzLl9vdmVybGF5KS54LGNhPXUuZ2V0Vmlld3BvcnREaW1lbnNp b25zKCkueCxkYT1xLmlzUlRMKCksZWE7aWYoIWRhKXtlYT1hYStiYSt5LlJJR0hU X01BUkdJTi1jYTt9ZWxzZSBlYT15LkxFRlRfTUFSR0lOK2JhLWFhO2VhPU1hdGgu bWluKE1hdGgubWF4KDAsZWEpLGJhLTIqeS5BUlJPV19JTlNFVCk7dC5zZXQodGhp cy5fb3ZlcmxheSxkYT8ncmlnaHQnOidsZWZ0JywtMSplYSsncHgnKTt0LnNldCh0 aGlzLl9hcnJvdyxkYT8ncmlnaHQnOidsZWZ0Jyx5LkFSUk9XX09GRlNFVCsncHgn KTt0LnNldCh0aGlzLl9hcnJvdyxkYT8nbWFyZ2luUmlnaHQnOidtYXJnaW5MZWZ0 JyxlYSsncHgnKTt9LF91cGRhdGVBcnJvdzpmdW5jdGlvbigpe3ZhciB6PTA7aWYo dGhpcy5wb3NpdGlvbj09J2Fib3ZlJ3x8dGhpcy5wb3NpdGlvbj09J2JlbG93Jylz d2l0Y2godGhpcy5hbGlnbkgpe2Nhc2UgJ2NlbnRlcic6ej01MDticmVhaztjYXNl ICdyaWdodCc6ej0xMDA7YnJlYWs7fXRoaXMuX3JlbmRlckFycm93KHkuUE9TSVRJ T05fVE9fQVJST1dbdGhpcy5wb3NpdGlvbl0seik7fSxfcmVuZGVyQXJyb3c6ZnVu Y3Rpb24oeixhYSl7Zm9yKHZhciBiYSBpbiB5LkFSUk9XX0NMQVNTKW4uY29uZGl0 aW9uQ2xhc3ModGhpcy5fb3ZlcmxheSx5LkFSUk9XX0NMQVNTW2JhXSx6PT1iYSk7 bi5jb25kaXRpb25DbGFzcyh0aGlzLl9vdmVybGF5LCd1aUNvbnRleHR1YWxEaWFs

b2dXaXRoRm9vdGVyQXJyb3dCb3R0b20nLHo9PSdib3R0b20nJiZ0aGlzLl9oYXNG b290ZXIpO2lmKHo9PSdub25lJylyZXR1cm47aWYoIXRoaXMuX2Fycm93KXt0aGlz Ll9hcnJvdz1wLmNyZWF0ZSgnaScse2NsYXNzTmFtZTondWlDb250ZXh0dWFsRGlh bG9nQXJyb3cnfSk7cC5hcHBlbmRDb250ZW50KHRoaXMuX292ZXJsYXksdGhpcy5f YXJyb3cpO310LnNldCh0aGlzLl9hcnJvdywndG9wJywnJyk7dC5zZXQodGhpcy5f YXJyb3csJ2xlZnQnLCcnKTt0LnNldCh0aGlzLl9hcnJvdywncmlnaHQnLCcnKTt0 LnNldCh0aGlzLl9hcnJvdywnbWFyZ2luJywnJyk7dmFyIGNhPXo9PSd0b3AnfHx6 PT0nYm90dG9tJyxkYT1jYT8ocS5pc1JUTCgpPydyaWdodCc6J2xlZnQnKTondG9w JzthYT1hYXx8MDt0LnNldCh0aGlzLl9hcnJvdyxkYSxhYSsnJScpO3ZhciBlYT15 LkFSUk9XX0xFTkdUSCt5LkFSUk9XX09GRlNFVCoyLGZhPS0oZWEqYWEvMTAwLXku QVJST1dfT0ZGU0VUKTt0LnNldCh0aGlzLl9hcnJvdywnbWFyZ2luLScrZGEsZmEr J3B4Jyk7aWYodGhpcy5faGFzQ3VzdG9tQXJyb3cpeS5pbmZvcm0oJ2Fycm93X3Jl bmRlcmVkJyx7dHlwZTonQ29udGV4dHVhbERpYWxvZycscm9vdDp0aGlzLl9yb290 LHBvc2l0aW9uOnosc2lkZTpkYSxvZmZzZXRfcGVyY2VudDphYSxzaWRlX21hcmdp bjpmYX0pO30sX3VwZGF0ZUFsaWdubWVudENsYXNzOmZ1bmN0aW9uKCl7bi5jb25k aXRpb25DbGFzcyh0aGlzLmdldFJvb3QoKSx5LlJJR0hUX0FMSUdORURfQ0xBU1Ms KHRoaXMucG9zaXRpb249PSdhYm92ZSd8fHRoaXMucG9zaXRpb249PSdiZWxvdycp JiZ0aGlzLmFsaWduSD09J3JpZ2h0Jyk7fSxfc2V0dXBTY3JvbGxMaXN0ZW5lcjpm dW5jdGlvbih6KXt0aGlzLl9zY3JvbGxMaXN0ZW5lcj1FdmVudC5saXN0ZW4oenx8 d2luZG93LCdzY3JvbGwnLHRoaXMuX2FkanVzdFZlcnRpY2FsUG9zaXRpb24uc2hp ZWxkKHRoaXMpKTt9LF90ZWFyZG93blNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKCl7 aWYodGhpcy5fc2Nyb2xsTGlzdGVuZXIpe3RoaXMuX3Njcm9sbExpc3RlbmVyLnJl bW92ZSgpO3RoaXMuX3Njcm9sbExpc3RlbmVyPW51bGw7fX0sX3RlYXJkb3duUmVz aXplQW5kUmVmbG93TGlzdGVuZXJzOmZ1bmN0aW9uKCl7aWYodGhpcy5fcmVzaXpl TGlzdGVuZXIpe3RoaXMuX3Jlc2l6ZUxpc3RlbmVyLnJlbW92ZSgpO3RoaXMuX3Jl c2l6ZUxpc3RlbmVyPW51bGw7fWlmKHRoaXMuX3JlZmxvd1N1YnNjcmlwdGlvbil7 dGhpcy5fcmVmbG93U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7dGhpcy5fcmVm bG93U3Vic2NyaXB0aW9uPW51bGw7fX19KTtlLmV4cG9ydHM9eTt9KTsKX19kKCJU b2dnbGVyIixbImFycmF5LWV4dGVuc2lvbnMiLCJldmVudC1leHRlbnNpb25zIiwi QXJiaXRlciIsIkFyYml0ZXJNaXhpbiIsIkNsYXNzIiwiQ29udGV4dHVhbERpYWxv Z1giLCJDb250ZXh0dWFsVGhpbmciLCJDU1MiLCJEYXRhU3RvcmUiLCJEaWFsb2ci LCJET00iLCJjb3B5UHJvcGVydGllcyIsImNyZWF0ZUFycmF5RnJvbSIsImdlIiwi Z2V0T2JqZWN0VmFsdWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2FycmF5 LWV4dGVuc2lvbnMnKTtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJi aXRlcicpLGg9YignQXJiaXRlck1peGluJyksaT1iKCdDbGFzcycpLGo9YignQ29u dGV4dHVhbERpYWxvZ1gnKSxrPWIoJ0NvbnRleHR1YWxUaGluZycpLGw9YignQ1NT JyksbT1iKCdEYXRhU3RvcmUnKSxuPWIoJ0RpYWxvZycpLG89YignRE9NJykscD1i KCdjb3B5UHJvcGVydGllcycpLHE9YignY3JlYXRlQXJyYXlGcm9tJykscj1iKCdn ZScpLHM9YignZ2V0T2JqZWN0VmFsdWVzJyksdD1bXSx1O2Z1bmN0aW9uIHYoKXt2 PWJhZ29maG9sZGluZztFdmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe3ZhciB6PWV2ZW50LmdldFRhcmdl dCgpO3QuZm9yRWFjaChmdW5jdGlvbihhYSl7YWEuY2xpY2tlZFRhcmdldD16O2Fh LmFjdGl2ZSYmIWFhLnN0aWNreSYmIWsuY29udGFpbnNJbmNsdWRpbmdMYXllcnMo YWEuZ2V0QWN0aXZlKCkseikmJiFhYS5pblRhcmdldEZseW91dCh6KSYmYWEuaW5B Y3RpdmVEaWFsb2coKSYmYWEuaGlkZSgpO30pO30sRXZlbnQuUHJpb3JpdHkuVVJH RU5UKTt9dmFyIHc9ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT1udWxsO3RoaXMudG9n Z2xlcnM9e307dGhpcy5zZXRTdGlja3koZmFsc2UpO3QucHVzaCh0aGlzKTt0aGlz LnN1YnNjcmliZShbJ3Nob3cnLCdoaWRlJ10sdy5pbmZvcm0uYmluZCh3KSk7cmV0 dXJuIHYoKTt9O3Aody5wcm90b3R5cGUsaCx7c2hvdzpmdW5jdGlvbih6KXt2YXIg YWE9eCh0aGlzLHopLGJhPWFhLmFjdGl2ZTtpZih6IT09YmEpe2JhJiZhYS5oaWRl KCk7YWEuYWN0aXZlPXo7bC5hZGRDbGFzcyh6LCdvcGVuVG9nZ2xlcicpO3ZhciBj YT1vLnNjcnkoeiwnYVtyZWw9InRvZ2dsZSJdJyk7aWYoY2EubGVuZ3RoPjAmJmNh WzBdLmdldEF0dHJpYnV0ZSgnZGF0YS10YXJnZXQnKSlsLnJlbW92ZUNsYXNzKHIo Y2FbMF0uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpKSwndG9nZ2xlVGFyZ2V0 Q2xvc2VkJyk7by5hcHBlbmRDb250ZW50KHosYWEuZ2V0VG9nZ2xlcignbmV4dCcp KTtvLnByZXBlbmRDb250ZW50KHosYWEuZ2V0VG9nZ2xlcigncHJldicpKTthYS5p bmZvcm0oJ3Nob3cnLGFhKTt9fSxoaWRlOmZ1bmN0aW9uKHope3ZhciBhYT14KHRo aXMseiksYmE9YWEuYWN0aXZlO2lmKGJhJiYoIXp8fHo9PT1iYSkpe2wucmVtb3Zl Q2xhc3MoYmEsJ29wZW5Ub2dnbGVyJyk7dmFyIGNhPW8uc2NyeShiYSwnYVtyZWw9 InRvZ2dsZSJdJyk7aWYoY2EubGVuZ3RoPjAmJmNhWzBdLmdldEF0dHJpYnV0ZSgn

ZGF0YS10YXJnZXQnKSlsLmFkZENsYXNzKHIoY2FbMF0uZ2V0QXR0cmlidXRlKCdk YXRhLXRhcmdldCcpKSwndG9nZ2xlVGFyZ2V0Q2xvc2VkJyk7cyhhYS50b2dnbGVy cykuZm9yRWFjaChvLnJlbW92ZSk7YWEuaW5mb3JtKCdoaWRlJyxhYSk7YWEuYWN0 aXZlPW51bGw7fX0sdG9nZ2xlOmZ1bmN0aW9uKHope3ZhciBhYT14KHRoaXMseik7 aWYoYWEuYWN0aXZlPT09eil7YWEuaGlkZSgpO31lbHNlIGFhLnNob3coeik7fSxn ZXRBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzKS5hY3RpdmU7fSxpc1No b3duOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcykuYWN0aXZlJiZsLmhhc0NsYXNz KHgodGhpcykuYWN0aXZlLCdvcGVuVG9nZ2xlcicpO30saW5UYXJnZXRGbHlvdXQ6 ZnVuY3Rpb24oeil7dmFyIGFhPXkodGhpcy5nZXRBY3RpdmUoKSk7cmV0dXJuIGFh JiZrLmNvbnRhaW5zSW5jbHVkaW5nTGF5ZXJzKGFhLHopO30saW5BY3RpdmVEaWFs b2c6ZnVuY3Rpb24oKXt2YXIgej1uLmdldEN1cnJlbnQoKTtyZXR1cm4gIXp8fG8u Y29udGFpbnMoei5nZXRSb290KCksdGhpcy5nZXRBY3RpdmUoKSk7fSxnZXRUb2dn bGVyOmZ1bmN0aW9uKHope3ZhciBhYT14KHRoaXMpO2lmKCFhYS50b2dnbGVyc1t6 XSl7YWEudG9nZ2xlcnNbel09by5jcmVhdGUoJ2J1dHRvbicse2NsYXNzTmFtZTon aGlkZVRvZ2dsZXInLG9uZm9jdXM6ZnVuY3Rpb24oKXt2YXIgYmE9by5zY3J5KGFh LmFjdGl2ZSwnYVtyZWw9InRvZ2dsZSJdJylbMF07YmEmJmJhLmZvY3VzKCk7YWEu aGlkZSgpO319KTthYS50b2dnbGVyc1t6XS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCdi dXR0b24nKTt9cmV0dXJuIHRoaXMudG9nZ2xlcnNbel07fSxzZXRTdGlja3k6ZnVu Y3Rpb24oeil7dmFyIGFhPXgodGhpcyk7ej16IT09ZmFsc2U7aWYoeiE9PWFhLnN0 aWNreSl7YWEuc3RpY2t5PXo7aWYoeil7YWEuX3B0JiZhYS5fcHQudW5zdWJzY3Jp YmUoKTt9ZWxzZSBhYS5fcHQ9Zy5zdWJzY3JpYmUoJ3BhZ2VfdHJhbnNpdGlvbics YWEuaGlkZS5iaW5kKGFhLG51bGwpKTt9cmV0dXJuIGFhO319KTtwKHcsdy5wcm90 b3R5cGUpO3Aodyx7Ym9vdHN0cmFwOmZ1bmN0aW9uKHope3ZhciBhYT16LnBhcmVu dE5vZGU7dy5nZXRJbnN0YW5jZShhYSkudG9nZ2xlKGFhKTt9LGNyZWF0ZUluc3Rh bmNlOmZ1bmN0aW9uKHope3ZhciBhYT1uZXcgdygpLnNldFN0aWNreSh0cnVlKTtt LnNldCh6LCd0b2dnbGVyJyxhYSk7cmV0dXJuIGFhO30sZ2V0SW5zdGFuY2U6ZnVu Y3Rpb24oeil7d2hpbGUoeil7dmFyIGFhPW0uZ2V0KHosJ3RvZ2dsZXInKTtpZihh YSlyZXR1cm4gYWE7aWYobC5oYXNDbGFzcyh6LCd1aVRvZ2dsZUNvbnRleHQnKSly ZXR1cm4gdy5jcmVhdGVJbnN0YW5jZSh6KTt6PXoucGFyZW50Tm9kZTt9cmV0dXJu ICh1PXV8fG5ldyB3KCkpO30sbGlzdGVuOmZ1bmN0aW9uKHosYWEsYmEpe3JldHVy biB3LnN1YnNjcmliZShxKHopLGZ1bmN0aW9uKGNhLGRhKXtpZihkYS5nZXRBY3Rp dmUoKT09PWFhKXJldHVybiBiYShjYSxkYSk7fSk7fSxzdWJzY3JpYmU6KGZ1bmN0 aW9uKHope3JldHVybiBmdW5jdGlvbihhYSxiYSl7YWE9cShhYSk7aWYoYWEuY29u dGFpbnMoJ3Nob3cnKSl0LmZvckVhY2goZnVuY3Rpb24oY2Epe2lmKGNhLmdldEFj dGl2ZSgpKWJhLmN1cnJ5KCdzaG93JyxjYSkuZGVmZXIoKTt9KTtyZXR1cm4geihh YSxiYSk7fTt9KSh3LnN1YnNjcmliZS5iaW5kKHcpKX0pO2Z1bmN0aW9uIHgoeixh YSl7aWYoeiBpbnN0YW5jZW9mIHcpcmV0dXJuIHo7cmV0dXJuIHcuZ2V0SW5zdGFu Y2UoYWEpO31mdW5jdGlvbiB5KHope3ZhciBhYT1vLnNjcnkoeiwnYVtyZWw9InRv Z2dsZSJdJyk7aWYoYWEubGVuZ3RoPjAmJmFhWzBdLmdldEF0dHJpYnV0ZSgnZGF0 YS10YXJnZXQnKSlyZXR1cm4gcihhYVswXS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFy Z2V0JykpO31lLmV4cG9ydHM9dzt9KTsKX19kKCJEb2NrIixbImV2ZW50LWV4dGVu c2lvbnMiLCJmdW5jdGlvbi1leHRlbnNpb25zIiwiQXJiaXRlciIsIkFyYml0ZXJN aXhpbiIsIkNoYXRRdWlldExpbmtzIiwiQ1NTIiwiRGF0YVN0b3JlIiwiRE9NIiwi UGFyZW50IiwiU3R5bGUiLCJUb2dnbGVyIiwiVmVjdG9yIiwiY29weVByb3BlcnRp ZXMiLCJnZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNp b25zJyk7YignZnVuY3Rpb24tZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0ZXIn KSxoPWIoJ0FyYml0ZXJNaXhpbicpLGk9YignQ2hhdFF1aWV0TGlua3MnKSxqPWIo J0NTUycpLGs9YignRGF0YVN0b3JlJyksbD1iKCdET00nKSxtPWIoJ1BhcmVudCcp LG49YignU3R5bGUnKSxvPWIoJ1RvZ2dsZXInKSxwPWIoJ1ZlY3RvcicpLHE9Yign Y29weVByb3BlcnRpZXMnKSxyPWIoJ2dlJyk7ZnVuY3Rpb24gcygpe31xKHMsaCx7 TUlOX0hFSUdIVDoxNDAsSU5JVElBTF9GTFlPVVRfSEVJR0hUX09GRlNFVDoxMCxp bml0OmZ1bmN0aW9uKHQpe3RoaXMuaW5pdD1iYWdvZmhvbGRpbmc7dGhpcy5yb290 RWw9dDt0aGlzLmNhbGN1bGF0ZVZpZXdwb3J0RGltZW5zaW9ucygpO3RoaXMuY2Fs Y3VsYXRlRmx5b3V0SGVpZ2h0T2Zmc2V0KCk7aS5yZW1vdmVFbXB0eUhyZWZzKHRo aXMucm9vdEVsKTtFdmVudC5saXN0ZW4odCwnY2xpY2snLHRoaXMuX29uQ2xpY2su YmluZCh0aGlzKSk7RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyx0aGlzLl9v bldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtvLnN1YnNjcmliZShbJ3Nob3cnLCdo aWRlJ10sZnVuY3Rpb24odSx2KXt2YXIgdz12LmdldEFjdGl2ZSgpO2lmKCFsLmNv bnRhaW5zKHQsdykpcmV0dXJuO2lmKGouaGFzQ2xhc3ModywnZmJOdWInKSl7dGhp cy5ub3RpZnlOdWIodyx1KTtpZih1PT09J3Nob3cnKXRoaXMuX3Jlc2l6ZU51YkZs

eW91dCh3KTt9ZWxzZXt2YXIgeD1tLmJ5Q2xhc3ModywnZmJOdWJGbHlvdXQnKTtp Zih4KWouY29uZGl0aW9uQ2xhc3MoeCwnbWVudU9wZW5lZCcsdT09PSdzaG93Jyk7 fX0uYmluZCh0aGlzKSk7dGhpcy5pbmZvcm0oJ2luaXQnLHt9LGcuQkVIQVZJT1Jf UEVSU0lTVEVOVCk7fSxjYWxjdWxhdGVWaWV3cG9ydERpbWVuc2lvbnM6ZnVuY3Rp b24oKXtyZXR1cm4gKHRoaXMudmlld3BvcnREaW1lbnNpb25zPXAuZ2V0Vmlld3Bv cnREaW1lbnNpb25zKCkpO30sY2FsY3VsYXRlRmx5b3V0SGVpZ2h0T2Zmc2V0OmZ1 bmN0aW9uKCl7dGhpcy5mbHlvdXRIZWlnaHRPZmZzZXQ9dGhpcy5JTklUSUFMX0ZM WU9VVF9IRUlHSFRfT0ZGU0VUK3AuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5y b290RWwpLnk7dmFyIHQ9cignYmx1ZUJhcicpO2lmKHQpe3ZhciB1PW4uaXNGaXhl ZCh0KT8ndmlld3BvcnQnOidkb2N1bWVudCc7dGhpcy5mbHlvdXRIZWlnaHRPZmZz ZXQrPXAuZ2V0RWxlbWVudFBvc2l0aW9uKHQsdSkueStwLmdldEVsZW1lbnREaW1l bnNpb25zKHQpLnk7fX0sdG9nZ2xlOmZ1bmN0aW9uKHQpe3ZhciB1PXRoaXMuX2Zp bmRGbHlvdXQodCk7aWYoIXUpcmV0dXJuO3RoaXMuc3Vic2NyaWJlKCdpbml0Jyxm dW5jdGlvbigpe28udG9nZ2xlKHQpO30pO30sc2hvdzpmdW5jdGlvbih0KXt0aGlz LnN1YnNjcmliZSgnaW5pdCcsZnVuY3Rpb24oKXtvLnNob3codCk7fSk7fSxzaG93 TnViOmZ1bmN0aW9uKHQpe2ouc2hvdyh0KTt9LGhpZGU6ZnVuY3Rpb24odCl7dGhp cy5zdWJzY3JpYmUoJ2luaXQnLGZ1bmN0aW9uKCl7dmFyIHU9by5nZXRJbnN0YW5j ZSh0KTtsLmNvbnRhaW5zKHQsdS5nZXRBY3RpdmUoKSkmJnUuaGlkZSgpO30pO30s aGlkZU51YjpmdW5jdGlvbih0KXtqLmhpZGUodCk7dGhpcy5oaWRlKHQpO30sc2V0 VXNlTWF4SGVpZ2h0OmZ1bmN0aW9uKHQsdSl7ai5jb25kaXRpb25DbGFzcyh0LCdt YXhIZWlnaHQnLHUhPT1mYWxzZSk7dGhpcy5fcmVzaXplTnViRmx5b3V0KHQpO30s X3Jlc2l6ZU51YkZseW91dDpmdW5jdGlvbih0KXt2YXIgdT10aGlzLl9maW5kRmx5 b3V0KHQpO2lmKCF1fHwhKGouaGFzQ2xhc3ModCwnb3BlblRvZ2dsZXInKXx8ai5o YXNDbGFzcyh0LCdvcGVuZWQnKSkpcmV0dXJuO3ZhciB2PWwuZmluZCh1LCdkaXYu ZmJOdWJGbHlvdXRPdXRlcicpLHc9bC5maW5kKHYsJ2Rpdi5mYk51YkZseW91dElu bmVyJykseD1sLmZpbmQodywnZGl2LmZiTnViRmx5b3V0Qm9keScpLHk9eC5zY3Jv bGxUb3Asej14Lm9mZnNldEhlaWdodDtuLnNldCh4LCdoZWlnaHQnLCdhdXRvJyk7 dmFyIGFhPXAuZ2V0RWxlbWVudFBvc2l0aW9uKHUsJ3ZpZXdwb3J0JyksYmE9cC5n ZXRFbGVtZW50RGltZW5zaW9ucyh1KSxjYT1wLmdldEVsZW1lbnREaW1lbnNpb25z KHgpLGRhPXRoaXMuZ2V0TWF4Rmx5b3V0SGVpZ2h0KHQpO24uc2V0KHUsJ21heC1o ZWlnaHQnLGRhKydweCcpO24uc2V0KHYsJ21heC1oZWlnaHQnLGRhKydweCcpO2Jh PXAuZ2V0RWxlbWVudERpbWVuc2lvbnModSk7dmFyIGVhPXAuZ2V0RWxlbWVudERp bWVuc2lvbnModyksZmE9ZWEueS1jYS55O2lmKGJhLnk+ZmEpbi5zZXQoeCwnaGVp Z2h0JywoYmEueS1mYSkrJ3B4Jyk7ai5yZW1vdmVDbGFzcyh1LCdzd2FwRGlyZWN0 aW9uJyk7dmFyIGdhPXAuZ2V0RWxlbWVudFBvc2l0aW9uKHUpLng7ai5jb25kaXRp b25DbGFzcyh1LCdzd2FwRGlyZWN0aW9uJyxmdW5jdGlvbigpe2lmKGdhPDApcmV0 dXJuIHRydWU7cmV0dXJuIChnYStiYS54PnRoaXMudmlld3BvcnREaW1lbnNpb25z LngpO30uYmluZCh0aGlzKSgpKTtpZih5K3o+PWNhLnkpe3guc2Nyb2xsVG9wPWNh Lnk7fWVsc2UgeC5zY3JvbGxUb3A9eTt0aGlzLm5vdGlmeU51Yih0LCdyZXNpemUn KTt9LGdldE1heEZseW91dEhlaWdodDpmdW5jdGlvbih0KXt2YXIgdT10aGlzLl9m aW5kRmx5b3V0KHQpLHY9cC5nZXRFbGVtZW50UG9zaXRpb24odSwndmlld3BvcnQn KSx3PXAuZ2V0RWxlbWVudERpbWVuc2lvbnModSkseD1NYXRoLm1heCh0aGlzLk1J Tl9IRUlHSFQsdGhpcy52aWV3cG9ydERpbWVuc2lvbnMueS10aGlzLmZseW91dEhl aWdodE9mZnNldCktKHRoaXMudmlld3BvcnREaW1lbnNpb25zLnktdi55LXcueSk7 cmV0dXJuIE1hdGgubWF4KHgsMCk7fSxyZXNpemVBbGxGbHlvdXRzOmZ1bmN0aW9u KCl7dmFyIHQ9bC5zY3J5KHRoaXMucm9vdEVsLCdkaXYuZmJOdWIub3BlblRvZ2ds ZXInKTt0PXQuY29uY2F0KGwuc2NyeSh0aGlzLnJvb3RFbCwnZGl2LmZiTnViLm9w ZW5lZCcpKTt2YXIgdT10Lmxlbmd0aDt3aGlsZSh1LS0pdGhpcy5fcmVzaXplTnVi Rmx5b3V0KHRbdV0pO30sX29uQ2xpY2s6ZnVuY3Rpb24oZXZlbnQpe3ZhciB0PWV2 ZW50LmdldFRhcmdldCgpLHU9bS5ieUNsYXNzKHQsJ2ZiTnViJyk7aWYodSl7aWYo bS5ieUNsYXNzKHQsJ2ZiTnViRmx5b3V0VGl0bGViYXInKSl7dmFyIHY9bS5ieVRh Zyh0LCdhJyk7aWYoIXYpe3RoaXMuaGlkZSh1KTtyZXR1cm4gZmFsc2U7fX10aGlz Lm5vdGlmeU51Yih1LCdjbGljaycpO319LF9vbldpbmRvd1Jlc2l6ZTpmdW5jdGlv bihldmVudCl7dGhpcy5jYWxjdWxhdGVWaWV3cG9ydERpbWVuc2lvbnMoKTt0aGlz LnJlc2l6ZUFsbEZseW91dHMoKTt9LF9maW5kRmx5b3V0OmZ1bmN0aW9uKHQpe3Jl dHVybiBqLmhhc0NsYXNzKHQsJ2ZiTnViRmx5b3V0Jyk/dDpsLnNjcnkodCwnZGl2 LmZiTnViRmx5b3V0JylbMF18fG51bGw7fSxyZWdpc3Rlck51YkNvbnRyb2xsZXI6 ZnVuY3Rpb24odCx1KXtrLnNldCh0LCdkb2NrOm51Yjpjb250cm9sbGVyJyx1KTt1 LnN1YnNjcmliZSgnbnViL2J1dHRvbi9jb250ZW50LWNoYW5nZWQnLHRoaXMuaW5m b3JtLnNoaWVsZCh0aGlzLCdyZXNpemUnLHQpKTt1LnN1YnNjcmliZSgnbnViL2Zs

eW91dC9jb250ZW50LWNoYW5nZWQnLHRoaXMuX3Jlc2l6ZU51YkZseW91dC5zaGll bGQodGhpcyx0KSk7fSx1bnJlZ2lzdGVyTnViQ29udHJvbGxlcjpmdW5jdGlvbih0 KXtrLnJlbW92ZSh0LCdkb2NrOm51Yjpjb250cm9sbGVyJyk7fSxub3RpZnlOdWI6 ZnVuY3Rpb24odCx1LHYpe3ZhciB3PWsuZ2V0KHQsJ2RvY2s6bnViOmNvbnRyb2xs ZXInKTt3JiZ3LmluZm9ybSh1LHYpO319KTtlLmV4cG9ydHM9YS5Eb2NrfHxzO30p OwpfX2QoIk51YkNvbnRyb2xsZXIiLFsiQXJiaXRlck1peGluIiwiQ2xhc3MiLCJE b2NrIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignQXJiaXRlck1peGluJyksaD1iKCdDbGFzcycpLGk9YignRG9jaycpLGo9 YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBrKCl7fWooay5wcm90b3R5cGUs Zyx7aW5pdDpmdW5jdGlvbihsKXt0aGlzLmVsPWw7aS5yZWdpc3Rlck51YkNvbnRy b2xsZXIobCx0aGlzKTtyZXR1cm4gdGhpczt9LGJ1dHRvbkNvbnRlbnRDaGFuZ2Vk OmZ1bmN0aW9uKCl7dGhpcy5pbmZvcm0oJ251Yi9idXR0b24vY29udGVudC1jaGFu Z2VkJyk7fSxmbHlvdXRDb250ZW50Q2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuaW5m b3JtKCdudWIvZmx5b3V0L2NvbnRlbnQtY2hhbmdlZCcpO30saGlkZTpmdW5jdGlv bigpe2kuaGlkZSh0aGlzLmVsKTt9LHNob3c6ZnVuY3Rpb24oKXtpLnNob3codGhp cy5lbCk7fX0pO2UuZXhwb3J0cz1rO30pOwpfX2QoIk5hdmlnYXRpb25NZXNzYWdl IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9e05BVklHQVRJT05fQkVH SU46J05hdmlnYXRpb25NZXNzYWdlL25hdmlnYXRpb25CZWdpbicsTkFWSUdBVElP Tl9TRUxFQ1Q6J05hdmlnYXRpb25NZXNzYWdlL25hdmlnYXRpb25TZWxlY3QnLE5B VklHQVRJT05fRklSU1RfUkVTUE9OU0U6J05hdmlnYXRpb25NZXNzYWdlL25hdmln YXRpb25GaXJzdFJlc3BvbnNlJyxOQVZJR0FUSU9OX0NPTVBMRVRFRDonTmF2aWdh dGlvbk1lc3NhZ2UvbmF2aWdhdGlvbkNvbXBsZXRlZCcsTkFWSUdBVElPTl9GQUlM RUQ6J05hdmlnYXRpb25NZXNzYWdlL25hdmlnYXRpb25GYWlsZWQnLE5BVklHQVRJ T05fQ09VTlRfVVBEQVRFOidOYXZpZ2F0aW9uTWVzc2FnZS9uYXZpZ2F0aW9uQ291 bnQnLE5BVklHQVRJT05fRkFWT1JJVEVfVVBEQVRFOidOYXZpZ2F0aW9uTWVzc2Fn ZS9uYXZpZ2F0aW9uRmF2b3JpdGVVcGRhdGUnLE5BVklHQVRJT05fSVRFTV9SRU1P VkVEOidOYXZpZ2F0aW9uTWVzc2FnZS9uYXZpZ2F0aW9uSXRlbVJlbW92ZWQnLE5B VklHQVRJT05fSVRFTV9ISURERU46J05hdmlnYXRpb25NZXNzYWdlL25hdmlnYXRp b25JdGVtSGlkZGVuJyxJTlRFUk5BTF9MT0FESU5HX0JFR0lOOidOYXZpZ2F0aW9u TWVzc2FnZS9pbnRlcm5hbExvYWRpbmdCZWdpbicsSU5URVJOQUxfTE9BRElOR19D T01QTEVURUQ6J05hdmlnYXRpb25NZXNzYWdlL2ludGVybmFsTG9hZGluZ0NvbXBs ZXRlZCd9O2UuZXhwb3J0cz1nO30pOwpfX2QoImxlZ2FjeTp1aS1zaWRlLW5hdi1t ZXNzYWdlIixbIk5hdmlnYXRpb25NZXNzYWdlIl0sZnVuY3Rpb24oYSxiLGMsZCl7 YS5OYXZpZ2F0aW9uTWVzc2FnZT1iKCdOYXZpZ2F0aW9uTWVzc2FnZScpO30sMyk7 Cl9fZCgiRHJvcGRvd25Db250ZXh0dWFsSGVscExpbmsiLFsiY29weVByb3BlcnRp ZXMiLCJET00iLCJnZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdj b3B5UHJvcGVydGllcycpLGg9YignRE9NJyksaT1iKCdnZScpLGo9e3NldDpmdW5j dGlvbihrKXt2YXIgbD1pKCduYXZIZWxwQ2VudGVyJyk7aWYobCE9PW51bGwpaC5y ZXBsYWNlKGwsayk7fX07ZS5leHBvcnRzPWo7fSk7Cl9fZCgiU2ltcGxlRHJhZyIs WyJldmVudC1leHRlbnNpb25zIiwiQXJiaXRlck1peGluIiwiQ2xhc3MiLCJVc2Vy QWdlbnQiLCJWZWN0b3IiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlck1p eGluJyksaD1iKCdDbGFzcycpLGk9YignVXNlckFnZW50Jyksaj1iKCdWZWN0b3In KSxrPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gbChtKXt0aGlzLm1pbkRy YWdEaXN0YW5jZT0wO0V2ZW50Lmxpc3RlbihtLCdtb3VzZWRvd24nLHRoaXMuX3N0 YXJ0LmJpbmQodGhpcykpO31rKGwucHJvdG90eXBlLGcse3NldE1pbkRyYWdEaXN0 YW5jZTpmdW5jdGlvbihtKXt0aGlzLm1pbkRyYWdEaXN0YW5jZT1tO30sX3N0YXJ0 OmZ1bmN0aW9uKGV2ZW50KXt2YXIgbT1mYWxzZSxuPXRydWUsbz1udWxsO2lmKHRo aXMuaW5mb3JtKCdtb3VzZWRvd24nLGV2ZW50KSluPWZhbHNlO2lmKHRoaXMubWlu RHJhZ0Rpc3RhbmNlKXtvPWouZ2V0RXZlbnRQb3NpdGlvbihldmVudCk7fWVsc2V7 bT10cnVlO2lmKHRoaXMuaW5mb3JtKCdzdGFydCcsZXZlbnQpKW49ZmFsc2U7fXZh ciBwPWkuaWUoKTw5P2RvY3VtZW50LmRvY3VtZW50RWxlbWVudDp3aW5kb3cscT1F dmVudC5saXN0ZW4ocCx7c2VsZWN0c3RhcnQ6bj9FdmVudC5wcmV2ZW50OmJhZ29m aG9sZGluZyxtb3VzZW1vdmU6ZnVuY3Rpb24oZXZlbnQpe2lmKCFtKXt2YXIgcj1q LmdldEV2ZW50UG9zaXRpb24oZXZlbnQpO2lmKG8uZGlzdGFuY2VUbyhyKTx0aGlz Lm1pbkRyYWdEaXN0YW5jZSlyZXR1cm47bT10cnVlO3RoaXMuaW5mb3JtKCdzdGFy dCcsZXZlbnQpO310aGlzLmluZm9ybSgndXBkYXRlJyxldmVudCk7fS5iaW5kKHRo aXMpLG1vdXNldXA6ZnVuY3Rpb24oZXZlbnQpe2Zvcih2YXIgciBpbiBxKXFbcl0u cmVtb3ZlKCk7aWYobSl7dGhpcy5pbmZvcm0oJ2VuZCcsZXZlbnQpO31lbHNlIHRo aXMuaW5mb3JtKCdjbGljaycsZXZlbnQpO30uYmluZCh0aGlzKX0pO3JldHVybiAh

bjt9fSk7ZS5leHBvcnRzPWw7fSk7Cl9fZCgiaXNSVEwiLFtdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXtmdW5jdGlvbiBnKGkpe2Zvcih2YXIgaj0wLGs9aS5sZW5ndGg7 ajxrO2orKyl7dmFyIGw9aS5jaGFyQ29kZUF0KGopO2lmKGw+PTE0NzAmJmw8PTE5 MjApcmV0dXJuIHRydWU7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gaChpKXt2YXIg aj0wLGs9MDtpLnNwbGl0KC9ccy8sMTApLmZvckVhY2goZnVuY3Rpb24obCl7aisr O2cobCkmJmsrKzt9KTtyZXR1cm4gaiYmKGsvaj49LjQpO31lLmV4cG9ydHM9aDt9 KTsKX19kKCJsZWdhY3k6YmluZCIsWyJiaW5kIl0sZnVuY3Rpb24oYSxiLGMsZCl7 YS5iaW5kPWIoJ2JpbmQnKTt9LDMpOwpfX2QoIlNjcm9sbEF3YXJlRE9NIixbIkFy Yml0ZXJNaXhpbiIsIkNTUyIsIkRPTSIsIkRPTURpbWVuc2lvbnMiLCJET01Qb3Np dGlvbiIsIkRPTVF1ZXJ5IiwiSFRNTCIsIlZlY3RvciIsIlZpZXdwb3J0Qm91bmRz IiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YignQXJiaXRlck1peGluJyksaD1iKCdDU1MnKSxpPWIoJ0RPTScpLGo9YignRE9N RGltZW5zaW9ucycpLGs9YignRE9NUG9zaXRpb24nKSxsPWIoJ0RPTVF1ZXJ5Jyks bT1iKCdIVE1MJyksbj1iKCdWZWN0b3InKSxvPWIoJ1ZpZXdwb3J0Qm91bmRzJyks cD1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIHEodix3KXtyZXR1cm4gZnVu Y3Rpb24oKXt1Lm1vbml0b3IoYXJndW1lbnRzW3ZdLHcuY3VycnkuYXBwbHkodyxh cmd1bWVudHMpKTt9O31mdW5jdGlvbiByKHYpe2lmKCEodiBpbnN0YW5jZW9mIEFy cmF5KSl2PVt2XTtmb3IodmFyIHc9MDt3PHYubGVuZ3RoO3crKyl7dmFyIHg9bS5y ZXBsYWNlSlNPTldyYXBwZXIodlt3XSk7aWYoeCBpbnN0YW5jZW9mIG0pe3JldHVy biB4LmdldFJvb3ROb2RlKCk7fWVsc2UgaWYoaS5pc05vZGUoeCkpcmV0dXJuIHg7 fXJldHVybiBudWxsO31mdW5jdGlvbiBzKHYpe3JldHVybiBrLmdldEVsZW1lbnRQ b3NpdGlvbih2KS55Pj1vLmdldFRvcCgpO31mdW5jdGlvbiB0KHYpe3ZhciB3PWsu Z2V0RWxlbWVudFBvc2l0aW9uKHYpLnkrai5nZXRFbGVtZW50RGltZW5zaW9ucyh2 KS5oZWlnaHQseD1qLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLmhlaWdodC1vLmdl dEJvdHRvbSgpO3JldHVybiB3Pj14O312YXIgdT1wKHttb25pdG9yOmZ1bmN0aW9u KHYsdyl7dmFyIHg9cih2KTtpZih4KXt2YXIgeT0hIXgub2Zmc2V0UGFyZW50O2lm KHkmJihzKHgpfHx0KHgpKSlyZXR1cm4gdygpO3ZhciB6PW4uZ2V0RG9jdW1lbnRE aW1lbnNpb25zKCksYWE9dygpO2lmKHl8fCh4Lm9mZnNldFBhcmVudCYmIXMoeCkp KXt2YXIgYmE9bi5nZXREb2N1bWVudERpbWVuc2lvbnMoKS5zdWIoeiksY2E9e2Rl bHRhOmJhLHRhcmdldDp4fTtpZih1LmluZm9ybSgnc2Nyb2xsJyxjYSkhPT1mYWxz ZSliYS5zY3JvbGxFbGVtZW50QnkobC5nZXREb2N1bWVudFNjcm9sbEVsZW1lbnQo KSk7fXJldHVybiBhYTt9ZWxzZSByZXR1cm4gdygpO30scmVwbGFjZTpmdW5jdGlv bih2LHcpe3ZhciB4PXIodyk7aWYoIXh8fGguaGFzQ2xhc3MoeCwnaGlkZGVuX2Vs ZW0nKSl4PXY7cmV0dXJuIHUubW9uaXRvcih4LGZ1bmN0aW9uKCl7aS5yZXBsYWNl KHYsdyk7fSk7fSxwcmVwZW5kQ29udGVudDpxKDEsaS5wcmVwZW5kQ29udGVudCks aW5zZXJ0QWZ0ZXI6cSgxLGkuaW5zZXJ0QWZ0ZXIpLGluc2VydEJlZm9yZTpxKDEs aS5pbnNlcnRCZWZvcmUpLHNldENvbnRlbnQ6cSgwLGkuc2V0Q29udGVudCksYXBw ZW5kQ29udGVudDpxKDEsaS5hcHBlbmRDb250ZW50KSxyZW1vdmU6cSgwLGkucmVt b3ZlKSxlbXB0eTpxKDAsaS5lbXB0eSl9LGcpO2UuZXhwb3J0cz11O30pOwpfX2Qo ImxlZ2FjeTpTY3JvbGxBd2FyZURPTSIsWyJTY3JvbGxBd2FyZURPTSJdLGZ1bmN0 aW9uKGEsYixjLGQpe2EuU2Nyb2xsQXdhcmVET009YignU2Nyb2xsQXdhcmVET00n KTt9LDMpOwpfX2QoImxlZ2FjeTpTdHlsZSIsWyJTdHlsZSJdLGZ1bmN0aW9uKGEs YixjLGQpe2EuU3R5bGU9YignU3R5bGUnKTt9LDMpOwpfX2QoImxlZ2FjeTpkb20t Zm9ybSIsWyJGb3JtIl0sZnVuY3Rpb24oYSxiLGMsZCl7YS5Gb3JtPWIoJ0Zvcm0n KTt9LDMpOwpfX2QoImxlZ2FjeTpkb20taHRtbCIsWyJIVE1MIl0sZnVuY3Rpb24o YSxiLGMsZCl7YS5IVE1MPWIoJ0hUTUwnKTt9LDMpOwpmdW5jdGlvbiBzaG93KCl7 Zm9yKHZhciBhPTA7YTxhcmd1bWVudHMubGVuZ3RoO2ErKyl7dmFyIGI9Z2UoYXJn dW1lbnRzW2FdKTtpZihiJiZiLnN0eWxlKWIuc3R5bGUuZGlzcGxheT0nJzt9cmV0 dXJuIGZhbHNlO31mdW5jdGlvbiBoaWRlKCl7Zm9yKHZhciBhPTA7YTxhcmd1bWVu dHMubGVuZ3RoO2ErKyl7dmFyIGI9Z2UoYXJndW1lbnRzW2FdKTtpZihiJiZiLnN0 eWxlKWIuc3R5bGUuZGlzcGxheT0nbm9uZSc7fXJldHVybiBmYWxzZTt9ZnVuY3Rp b24gc2hvd24oYSl7YT1nZShhKTtyZXR1cm4gKGEuc3R5bGUuZGlzcGxheSE9J25v bmUnJiYhKGEuc3R5bGUuZGlzcGxheT09JycmJmEub2Zmc2V0V2lkdGg9PTApKTt9 ZnVuY3Rpb24gdG9nZ2xlKCl7Zm9yKHZhciBhPTA7YTxhcmd1bWVudHMubGVuZ3Ro O2ErKyl7dmFyIGI9JChhcmd1bWVudHNbYV0pO2Iuc3R5bGUuZGlzcGxheT1TdHls ZS5nZXQoYiwiZGlzcGxheSIpPT0nYmxvY2snPydub25lJzonYmxvY2snO31yZXR1 cm4gZmFsc2U7fWZ1bmN0aW9uIHRvZ2dsZURpc3BsYXlOb25lKCl7Zm9yKHZhciBh PTA7YTxhcmd1bWVudHMubGVuZ3RoO2ErKyl7dmFyIGI9JChhcmd1bWVudHNbYV0p O2lmKHNob3duKGIpKXtoaWRlKGIpO31lbHNlIHNob3coYik7fXJldHVybiBmYWxz ZTt9Cl9fZCgiU3lzdGVtRXZlbnRzIixbIkFyYml0ZXIiLCJFbnYiLCJFcnJvclV0

aWxzIiwiVXNlckFnZW50IiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9YignRW52JyksaT1iKCdFcnJv clV0aWxzJyksaj1iKCdVc2VyQWdlbnQnKSxrPWIoJ2NvcHlQcm9wZXJ0aWVzJyks bD1uZXcgZygpLG09W10sbj0xMDAwO3NldEludGVydmFsKGZ1bmN0aW9uKCl7Zm9y KHZhciB3PTA7dzxtLmxlbmd0aDt3KyspbVt3XSgpO30sbixmYWxzZSk7ZnVuY3Rp b24gbygpe3JldHVybiAoL2NfdXNlcj0oXGQrKS8udGVzdChkb2N1bWVudC5jb29r aWUpJiZSZWdFeHAuJDEpfHwwO312YXIgcD1oLnVzZXIscT1uYXZpZ2F0b3Iub25M aW5lO2Z1bmN0aW9uIHIoKXtpZighcSl7cT10cnVlO2wuaW5mb3JtKGwuT05MSU5F LHEpO319ZnVuY3Rpb24gcygpe2lmKHEpe3E9ZmFsc2U7bC5pbmZvcm0obC5PTkxJ TkUscSk7fX1pZihqLmllKCkpe2lmKGouaWUoKT49OCl7d2luZG93LmF0dGFjaEV2 ZW50KCdvbmxvYWQnLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5vbm9ubGluZT1y O2RvY3VtZW50LmJvZHkub25vZmZsaW5lPXM7fSk7fWVsc2UgbS5wdXNoKGZ1bmN0 aW9uKCl7KG5hdmlnYXRvci5vbkxpbmU/cjpzKSgpO30pO31lbHNlIGlmKHdpbmRv dy5hZGRFdmVudExpc3RlbmVyKWlmKCFqLmNocm9tZSgpKXt3aW5kb3cuYWRkRXZl bnRMaXN0ZW5lcignb25saW5lJyxyLGZhbHNlKTt3aW5kb3cuYWRkRXZlbnRMaXN0 ZW5lcignb2ZmbGluZScscyxmYWxzZSk7fXZhciB0PXA7bS5wdXNoKGZ1bmN0aW9u KCl7dmFyIHc9bygpO2lmKHQhPXcpe2wuaW5mb3JtKGwuVVNFUix3KTt0PXc7fX0p O3ZhciB1PURhdGUubm93KCk7ZnVuY3Rpb24gdigpe3ZhciB3PURhdGUubm93KCks eD13LXUseT14PDB8fHg+MTAwMDA7dT13O2lmKHkpbC5pbmZvcm0obC5USU1FX1RS QVZFTCx4KTtyZXR1cm4geTt9bS5wdXNoKHYpO20ucHVzaChmdW5jdGlvbigpe2lm KHdpbmRvdy5vbmVycm9yIT1pLm9uZXJyb3Ipd2luZG93Lm9uZXJyb3I9aS5vbmVy cm9yO30pO2EuU3lzdGVtRXZlbnRzPWUuZXhwb3J0cz1rKGwse1VTRVI6J1N5c3Rl bUV2ZW50cy9VU0VSJyxPTkxJTkU6J1N5c3RlbUV2ZW50cy9PTkxJTkUnLFRJTUVf VFJBVkVMOidTeXN0ZW1FdmVudHMvVElNRV9UUkFWRUwnLGlzUGFnZU93bmVyOmZ1 bmN0aW9uKHcpe3JldHVybiAod3x8bygpKT09cDt9LGlzT25saW5lOmZ1bmN0aW9u KCl7cmV0dXJuIGouY2hyb21lKCl8fHE7fSxjaGVja1RpbWVUcmF2ZWw6dn0pO30s Myk7Cl9fZCgibGVnYWN5OmxpbmstY29udHJvbGxlciIsWyJMaW5rQ29udHJvbGxl ciJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuTGlua0NvbnRyb2xsZXI9YignTGlua0Nv bnRyb2xsZXInKTt9LDMpOwpfX2QoImxlZ2FjeTppbnB1dC1tZXRob2RzIixbIklu cHV0IiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1i KCdJbnB1dCcpLGY9YignY29weVByb3BlcnRpZXMnKTtmKGEuSW5wdXR8fChhLklu cHV0PXt9KSxlKTt9LDMpOwpfX2QoIkludGxEYXRlRm9ybWF0cyIsW10sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPXt9LGg9e3NldEZvcm1hdHM6ZnVuY3Rpb24o aSxqKXtnPWo7fSxnZXRGb3JtYXQ6ZnVuY3Rpb24oaSl7aWYoIShpIGluIGcpKXJl dHVybiBpO3JldHVybiBnW2ldO319O2UuZXhwb3J0cz1oO30pOwpfX2QoImxlZ2Fj eTp2ZWN0b3IiLFsiVmVjdG9yIl0sZnVuY3Rpb24oYSxiLGMsZCl7YS5WZWN0b3Iy PWIoJ1ZlY3RvcicpO30sMyk7Cl9fZCgiQXN5bmNSZXF1ZXN0TmVjdGFyTG9nZ2lu ZyIsWyJBc3luY1JlcXVlc3QiLCJFbnYiLCJjb3B5UHJvcGVydGllcyIsInN0YXJ0 c1dpdGgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXN5bmNSZXF1 ZXN0JyksaD1iKCdFbnYnKSxpPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaj1iKCdzdGFy dHNXaXRoJyk7aShnLnByb3RvdHlwZSx7c2V0TmVjdGFyTW9kdWxlRGF0YTpmdW5j dGlvbihrKXtpZih0aGlzLm1ldGhvZD09J1BPU1QnKXt2YXIgbD1oLm1vZHVsZTtp ZihrJiZsPT09dW5kZWZpbmVkKXt2YXIgbT17ZmJwYWdlX2Zhbl9jb25maXJtOjF9 LG49bnVsbDtmb3IodmFyIG89aztvJiZvIT1kb2N1bWVudC5ib2R5O289by5wYXJl bnROb2RlKXtpZighby5pZHx8dHlwZW9mIG8uaWQhPT0nc3RyaW5nJyljb250aW51 ZTtpZihqKG8uaWQsJ3BhZ2VsZXRfJykpe2w9by5pZDticmVhazt9aWYoIW4mJm1b by5pZF0pbj1vLmlkO31pZihsPT09dW5kZWZpbmVkJiZuKWw9bjt9aWYobCE9PXVu ZGVmaW5lZCl7aWYodGhpcy5kYXRhLm5jdHI9PT11bmRlZmluZWQpdGhpcy5kYXRh Lm5jdHI9e307dGhpcy5kYXRhLm5jdHIuX21vZD1sO319fSxzZXROZWN0YXJJbXBy ZXNzaW9uSWQ6ZnVuY3Rpb24oKXtpZih0aGlzLm1ldGhvZD09J1BPU1QnKXt2YXIg az1oLmltcGlkO2lmKGshPT11bmRlZmluZWQpe2lmKHRoaXMuZGF0YS5uY3RyPT09 dW5kZWZpbmVkKXRoaXMuZGF0YS5uY3RyPXt9O3RoaXMuZGF0YS5uY3RyLl9pbXBp ZD1rO319fX0pO30pOwpfX2QoImxlZ2FjeTphc3luYy1wb3N0bHVkZSIsWyJBc3lu Y1JlcXVlc3ROZWN0YXJMb2dnaW5nIl0sZnVuY3Rpb24oYSxiLGMsZCl7YignQXN5 bmNSZXF1ZXN0TmVjdGFyTG9nZ2luZycpO30sMyk7Cl9fZCgiQmFzZTY0IixbXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9J0FCQ0RFRkdISUpLTE1OT1BRUlNU VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nO2Z1 bmN0aW9uIGgobCl7bD0obC5jaGFyQ29kZUF0KDApPDwxNil8KGwuY2hhckNvZGVB dCgxKTw8OCl8bC5jaGFyQ29kZUF0KDIpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJD b2RlKGcuY2hhckNvZGVBdChsPj4+MTgpLGcuY2hhckNvZGVBdCgobD4+PjEyKSY2

MyksZy5jaGFyQ29kZUF0KChsPj4+NikmNjMpLGcuY2hhckNvZGVBdChsJjYzKSk7 fXZhciBpPSc+X19fPzQ1Njc4OTo7PD1fX19fX19fJysnXDBcMVwyXDNcNFw1XDZc N1xiXHRcblwxM1xmXHJcMTZcMTdcMjBcMjFcMjJcMjNcMjRcMjVcMjZcMjdcMzBc MzEnKydfX19fX19cMzJcMzNcMzRcMzVcMzZcMzcgISIjJCUmXCcoKSorLC0uLzAx MjMnO2Z1bmN0aW9uIGoobCl7bD0oaS5jaGFyQ29kZUF0KGwuY2hhckNvZGVBdCgw KS00Myk8PDE4KXwoaS5jaGFyQ29kZUF0KGwuY2hhckNvZGVBdCgxKS00Myk8PDEy KXwoaS5jaGFyQ29kZUF0KGwuY2hhckNvZGVBdCgyKS00Myk8PDYpfGkuY2hhckNv ZGVBdChsLmNoYXJDb2RlQXQoMyktNDMpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJD b2RlKGw+Pj4xNiwobD4+PjgpJjI1NSxsJjI1NSk7fXZhciBrPXtlbmNvZGU6ZnVu Y3Rpb24obCl7bD11bmVzY2FwZShlbmNvZGVVUkkobCkpO3ZhciBtPShsLmxlbmd0 aCsyKSUzO2w9KGwrJ1wwXDAnLnNsaWNlKG0pKS5yZXBsYWNlKC9bXHNcU117M30v ZyxoKTtyZXR1cm4gbC5zbGljZSgwLGwubGVuZ3RoK20tMikrJz09Jy5zbGljZSht KTt9LGRlY29kZTpmdW5jdGlvbihsKXtsPWwucmVwbGFjZSgvW15BLVphLXowLTkr XC9dL2csJycpO3ZhciBtPShsLmxlbmd0aCszKSYzO2w9KGwrJ0FBQScuc2xpY2Uo bSkpLnJlcGxhY2UoLy4uLi4vZyxqKTtsPWwuc2xpY2UoMCxsLmxlbmd0aCttLTMp O3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShsKSk7fWNhdGNo KG4pe3Rocm93IG5ldyBFcnJvcignTm90IHZhbGlkIFVURi04Jyk7fX0sZW5jb2Rl T2JqZWN0OmZ1bmN0aW9uKGwpe3JldHVybiBrLmVuY29kZShKU09OLnN0cmluZ2lm eShsKSk7fSxkZWNvZGVPYmplY3Q6ZnVuY3Rpb24obCl7cmV0dXJuIEpTT04ucGFy c2Uoay5kZWNvZGUobCkpO30sZW5jb2RlTnVtczpmdW5jdGlvbihsKXtyZXR1cm4g U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsbC5tYXAoZnVuY3Rpb24o bSl7cmV0dXJuIGcuY2hhckNvZGVBdCgobXwtKG0+NjMpKSYtKG0+MCkmNjMpO30p KTt9fTtlLmV4cG9ydHM9azt9KTsKX19kKCJsZWdhY3k6YmFzZTY0IixbIkJhc2U2 NCJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuQmFzZTY0PWIoJ0Jhc2U2NCcpO30sMyk7 Cl9fZCgiZGF0ZS1leHRlbnNpb25zIixbIkludGxEYXRlRm9ybWF0cyIsImNvcHlQ cm9wZXJ0aWVzIiwidHgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign SW50bERhdGVGb3JtYXRzJyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YigndHgn KSxqPVsiTWluIiwiU2VuIiwiU2VsIiwiUmFiIiwiS2FtIiwiSnVtIiwiU2FiIl0s az1bIk1pbmdndSIsIlNlbmluIiwiU2VsYXNhIiwiUmFidSIsIkthbWlzIiwiSnVt YXQiLCJTYWJ0dSJdLGw9WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNZWkiLCJK dW4iLCJKdWwiLCJBZ3UiLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXMiXSxtPVsiSmFu dWFyaSIsIkZlYnJ1YXJpIiwiTWFyZXQiLCJBcHJpbCIsIk1laSIsIkp1bmkiLCJK dWxpIiwiQWd1c3R1cyIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIs IkRlc2VtYmVyIl07ZnVuY3Rpb24gbihvLHApe3A9cHx8MjtvPScnK287d2hpbGUo by5sZW5ndGg8cClvPScwJytvO3JldHVybiBvO31EYXRlLmZvcm1hdD1mdW5jdGlv bihvLHAscSl7dmFyIHI9cD9uZXcgRGF0ZShwKjEwMDApOm5ldyBEYXRlKCk7cmV0 dXJuIHIuZm9ybWF0KG8scSk7fTtoKERhdGUucHJvdG90eXBlLHtmb3JtYXQ6ZnVu Y3Rpb24obyxwKXtpZighbylyZXR1cm4gJyc7dmFyIHE9W10scj1udWxsLHM9bnVs bCx0PShwPydnZXRVVEMnOidnZXQnKSx1PXRoaXNbdCsnRGF0ZSddKCksdj10aGlz W3QrJ0RheSddKCksdz10aGlzW3QrJ01vbnRoJ10oKSx4PXRoaXNbdCsnRnVsbFll YXInXSgpLHk9dGhpc1t0KydIb3VycyddKCksej10aGlzW3QrJ01pbnV0ZXMnXSgp LGFhPXRoaXNbdCsnU2Vjb25kcyddKCksYmE9dGhpc1t0KydNaWxsaXNlY29uZHMn XSgpO2Zvcih2YXIgY2E9MDtjYTxvLmxlbmd0aDtjYSsrKXtzPW8uY2hhckF0KGNh KTtpZihzPT0nXFwnKXtjYSsrO3EucHVzaChvLmNoYXJBdChjYSkpO2NvbnRpbnVl O31zd2l0Y2gocyl7Y2FzZSAnZCc6cj1uKHUpO2JyZWFrO2Nhc2UgJ0QnOnI9alt2 XTticmVhaztjYXNlICdqJzpyPXU7YnJlYWs7Y2FzZSAnbCc6cj1rW3ZdO2JyZWFr O2Nhc2UgJ0YnOnI9bVt3XTticmVhaztjYXNlICdtJzpyPW4odysxKTticmVhaztj YXNlICdNJzpyPWxbd107YnJlYWs7Y2FzZSAnbic6cj13KzE7YnJlYWs7Y2FzZSAn WSc6cj14O2JyZWFrO2Nhc2UgJ3knOnI9KCcnK3gpLnNsaWNlKDIpO2JyZWFrO2Nh c2UgJ2EnOnI9eTwxMj8nYW0nOidwbSc7YnJlYWs7Y2FzZSAnQSc6cj15PDEyPydB TSc6J1BNJzticmVhaztjYXNlICdnJzpyPSh5PT0wfHx5PT0xMik/MTI6eSUxMjti cmVhaztjYXNlICdHJzpyPXk7YnJlYWs7Y2FzZSAnaCc6cj0oeT09MHx8eT09MTIp PzEyOm4oeSUxMik7YnJlYWs7Y2FzZSAnSCc6cj1uKHkpO2JyZWFrO2Nhc2UgJ2kn OnI9bih6KTticmVhaztjYXNlICdzJzpyPW4oYWEpO2JyZWFrO2Nhc2UgJ1MnOnI9 bihiYSwzKTticmVhaztkZWZhdWx0OnI9czt9cS5wdXNoKHIpO31yZXR1cm4gcS5q b2luKCcnKTt9fSk7YS5JbnRsRGF0ZUZvcm1hdHM9Zzt9LDMpOwpfX2QoImxlZ2Fj eTp1YSIsWyJVc2VyQWdlbnQiXSxmdW5jdGlvbihhLGIsYyxkKXthLnVhPWIoJ1Vz ZXJBZ2VudCcpO30sMyk7Cl9fZCgibGVnYWN5OmRpYWxvZyIsWyJEaWFsb2ciXSxm dW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iKCdEaWFsb2cnKTthLkRpYWxvZz1lO30s Myk7Cl9fZCgiY3N4IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24g

ZyhoKXt0aHJvdyBuZXcgRXJyb3IoJ2NzeCguLi4pOiBVbmV4cGVjdGVkIGNsYXNz IHNlbGVjdG9yIHRyYW5zZm9ybWF0aW9uLicpO31lLmV4cG9ydHM9Zzt9KTsKX19k KCJBY2Nlc3NpYmxlTGF5ZXIiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkNTUyIsIkRP TSIsIklucHV0IiwiY29weVByb3BlcnRpZXMiLCJjc3giLCJ0eCJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQ1NT JyksaD1iKCdET00nKSxpPWIoJ0lucHV0Jyksaj1iKCdjb3B5UHJvcGVydGllcycp LGs9YignY3N4JyksbD1iKCd0eCcpO2Z1bmN0aW9uIG0obil7dGhpcy5fbGF5ZXI9 bjt9aihtLnByb3RvdHlwZSx7ZW5hYmxlOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5f bGF5ZXIuZ2V0Um9vdCgpO2lmKG4udGFiSW5kZXg9PS0xKW4udGFiSW5kZXg9MDt2 YXIgbz1oLmNyZWF0ZSgnYScse2NsYXNzTmFtZTonYWNjZXNzaWJsZV9lbGVtJyxo cmVmOicjJ30sWyJUdXR1cCBzZW1idWxhbiBkYW4ga2VtYmFsaSJdKTtoLmFwcGVu ZENvbnRlbnQobixvKTt0aGlzLl9saXN0ZW5lcj1FdmVudC5saXN0ZW4obywnY2xp Y2snLHRoaXMuX2Nsb3NlTGlzdGVuZXIuYmluZCh0aGlzKSk7dGhpcy5fYWZ0ZXJT aG93U3Vic2NyaXB0aW9uPXRoaXMuX2xheWVyLnN1YnNjcmliZSgnYWZ0ZXJzaG93 Jyx0aGlzLl9vbkFmdGVyU2hvdy5iaW5kKHRoaXMpKTt9LGRpc2FibGU6ZnVuY3Rp b24oKXt0aGlzLl9saXN0ZW5lci5yZW1vdmUoKTt0aGlzLl9hZnRlclNob3dTdWJz Y3JpcHRpb24udW5zdWJzY3JpYmUoKTt0aGlzLl9saXN0ZW5lcj10aGlzLl9hZnRl clNob3dTdWJzY3JpcHRpb249bnVsbDt9LF9jbG9zZUxpc3RlbmVyOmZ1bmN0aW9u KGV2ZW50KXt2YXIgbj10aGlzLl9sYXllci5nZXRDYXVzYWxFbGVtZW50KCk7aWYo bil7aWYobi50YWJJbmRleD09LTEpe24udGFiSW5kZXg9MDtnLmFkZENsYXNzKG4s Ii1jeC1QUklWQVRFLWFjY2Vzc2libGVMYXllcl9fbm9PdXRsaW5lIik7fWkuZm9j dXMobik7fXRoaXMuX2xheWVyLmhpZGUoKTt9LF9vbkFmdGVyU2hvdzpmdW5jdGlv bigpe3ZhciBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsbz10aGlzLl9sYXllci5n ZXRSb290KCk7aWYoIWguaXNOb2RlT2ZUeXBlKG4sWydpbnB1dCcsJ3RleHRhcmVh J10pJiYhaC5jb250YWlucyhvLG4pKWkuZm9jdXMobyk7fX0pO2UuZXhwb3J0cz1t O30pOwpfX2QoIlJlY3QiLFsiVmVjdG9yIiwiJCIsImNvcHlQcm9wZXJ0aWVzIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ1ZlY3RvcicpLGg9YignJCcp LGk9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBqKGssbCxtLG4sbyl7aWYo YXJndW1lbnRzLmxlbmd0aD09PTEpe2lmKGsgaW5zdGFuY2VvZiBqKXJldHVybiBr O2lmKGsgaW5zdGFuY2VvZiBnKXJldHVybiBuZXcgaihrLnksay54LGsueSxrLngs ay5kb21haW4pO3JldHVybiBqLmdldEVsZW1lbnRCb3VuZHMoaChrKSk7fWkodGhp cyx7dDprLHI6bCxiOm0sbDpuLGRvbWFpbjpvfHwncHVyZSd9KTt9aShqLnByb3Rv dHlwZSx7dzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnItdGhpcy5sO30saDpmdW5j dGlvbigpe3JldHVybiB0aGlzLmItdGhpcy50O30sdG9TdHJpbmc6ZnVuY3Rpb24o KXtyZXR1cm4gJygoJyt0aGlzLmwrJywgJyt0aGlzLnQrJyksICgnK3RoaXMucisn LCAnK3RoaXMuYisnKSknO30sY29udGFpbnM6ZnVuY3Rpb24oayl7az1uZXcgaihr KS5jb252ZXJ0VG8odGhpcy5kb21haW4pO3ZhciBsPXRoaXM7cmV0dXJuIChsLmw8 PWsubCYmbC5yPj1rLnImJmwudDw9ay50JiZsLmI+PWsuYik7fSxhZGQ6ZnVuY3Rp b24oayxsKXtpZihhcmd1bWVudHMubGVuZ3RoPT0xKXtpZihrLmRvbWFpbiE9J3B1 cmUnKWs9ay5jb252ZXJ0VG8odGhpcy5kb21haW4pO3JldHVybiB0aGlzLmFkZChr Lngsay55KTt9dmFyIG09cGFyc2VGbG9hdChrKSxuPXBhcnNlRmxvYXQobCk7cmV0 dXJuIG5ldyBqKHRoaXMudCtuLHRoaXMucittLHRoaXMuYituLHRoaXMubCttLHRo aXMuZG9tYWluKTt9LHN1YjpmdW5jdGlvbihrLGwpe2lmKGFyZ3VtZW50cy5sZW5n dGg9PTEpe3JldHVybiB0aGlzLmFkZChrLm11bCgtMSkpO31lbHNlIHJldHVybiB0 aGlzLmFkZCgtaywtbCk7fSxib3VuZFdpdGhpbjpmdW5jdGlvbihrKXt2YXIgbD0w LG09MDtpZih0aGlzLmw8ay5sKXtsPWsubC10aGlzLmw7fWVsc2UgaWYodGhpcy5y PmsucilsPWsuci10aGlzLnI7aWYodGhpcy50PGsudCl7bT1rLnQtdGhpcy50O31l bHNlIGlmKHRoaXMuYj5rLmIpbT1rLmItdGhpcy5iO3JldHVybiB0aGlzLmFkZChs LG0pO30sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBnKHRoaXMubCt0 aGlzLncoKS8yLHRoaXMudCt0aGlzLmgoKS8yLHRoaXMuZG9tYWluKTt9LGdldFBv c2l0aW9uVmVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBnKHRoaXMubCx0aGlz LnQsdGhpcy5kb21haW4pO30sZ2V0RGltZW5zaW9uVmVjdG9yOmZ1bmN0aW9uKCl7 cmV0dXJuIG5ldyBnKHRoaXMudygpLHRoaXMuaCgpLCdwdXJlJyk7fSxjb252ZXJ0 VG86ZnVuY3Rpb24oayl7aWYodGhpcy5kb21haW49PWspcmV0dXJuIHRoaXM7aWYo az09J3B1cmUnKXJldHVybiBuZXcgaih0aGlzLnQsdGhpcy5yLHRoaXMuYix0aGlz LmwsJ3B1cmUnKTtpZih0aGlzLmRvbWFpbj09J3B1cmUnKXJldHVybiBuZXcgaigw LDAsMCwwKTt2YXIgbD1uZXcgZyh0aGlzLmwsdGhpcy50LHRoaXMuZG9tYWluKS5j b252ZXJ0VG8oayk7cmV0dXJuIG5ldyBqKGwueSxsLngrdGhpcy53KCksbC55K3Ro aXMuaCgpLGwueCxrKTt9fSk7aShqLHtkZXNlcmlhbGl6ZTpmdW5jdGlvbihrKXt2 YXIgbD1rLnNwbGl0KCc6Jyk7cmV0dXJuIG5ldyBqKHBhcnNlRmxvYXQobFsxXSks

cGFyc2VGbG9hdChsWzJdKSxwYXJzZUZsb2F0KGxbM10pLHBhcnNlRmxvYXQobFsw XSkpO30sbmV3RnJvbVZlY3RvcnM6ZnVuY3Rpb24oayxsKXtyZXR1cm4gbmV3IGoo ay55LGsueCtsLngsay55K2wueSxrLngsay5kb21haW4pO30sZ2V0RWxlbWVudEJv dW5kczpmdW5jdGlvbihrKXtyZXR1cm4gai5uZXdGcm9tVmVjdG9ycyhnLmdldEVs ZW1lbnRQb3NpdGlvbihrKSxnLmdldEVsZW1lbnREaW1lbnNpb25zKGspKTt9LGdl dFZpZXdwb3J0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIGoubmV3RnJvbVZlY3Rv cnMoZy5nZXRTY3JvbGxQb3NpdGlvbigpLGcuZ2V0Vmlld3BvcnREaW1lbnNpb25z KCkpO30sbWluaW11bUJvdW5kaW5nQm94OmZ1bmN0aW9uKGspe3ZhciBsPW5ldyBq KE1hdGgubWluKCksTWF0aC5tYXgoKSxNYXRoLm1heCgpLE1hdGgubWluKCkpLG07 Zm9yKHZhciBuPTA7bjxrLmxlbmd0aDtuKyspe209a1tuXTtsLnQ9TWF0aC5taW4o bC50LG0udCk7bC5yPU1hdGgubWF4KGwucixtLnIpO2wuYj1NYXRoLm1heChsLmIs bS5iKTtsLmw9TWF0aC5taW4obC5sLG0ubCk7fXJldHVybiBsO319KTtlLmV4cG9y dHM9ajt9KTsKX19kKCJIb3ZlcmNhcmQiLFsiQ2xpY2tSZWYiLCJldmVudC1leHRl bnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkFjY2Vzc2libGVMYXllciIs IkFyYml0ZXIiLCJBc3luY1JlcXVlc3QiLCJBc3luY1NpZ25hbCIsIkNvbnRleHR1 YWxEaWFsb2dYIiwiQ1NTIiwiRE9NIiwiRE9NUXVlcnkiLCJMYXllckRlc3Ryb3lP bkhpZGUiLCJMYXllckZhZGVPbkhpZGUiLCJMYXllckZhZGVPblNob3ciLCJQYXJl bnQiLCJSZWN0IiwiVXNlckFnZW50IiwiVVJJIiwiVmVjdG9yIiwiVmlld3BvcnRC b3VuZHMiLCJjbGlja1JlZkFjdGlvbiIsInR4IiwidXNlckFjdGlvbiJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtiKCdDbGlja1JlZicpO2IoJ2V2ZW50LWV4dGVuc2lv bnMnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9YignQWNjZXNzaWJs ZUxheWVyJyksaD1iKCdBcmJpdGVyJyksaT1iKCdBc3luY1JlcXVlc3QnKSxqPWIo J0FzeW5jU2lnbmFsJyksaz1iKCdDb250ZXh0dWFsRGlhbG9nWCcpLGw9YignQ1NT JyksbT1iKCdET00nKSxuPWIoJ0RPTVF1ZXJ5Jyksbz1iKCdMYXllckRlc3Ryb3lP bkhpZGUnKSxwPWIoJ0xheWVyRmFkZU9uSGlkZScpLHE9YignTGF5ZXJGYWRlT25T aG93Jykscj1iKCdQYXJlbnQnKSxzPWIoJ1JlY3QnKSx0PWIoJ1VzZXJBZ2VudCcp LHU9YignVVJJJyksdj1iKCdWZWN0b3InKSx3PWIoJ1ZpZXdwb3J0Qm91bmRzJyks eD1iKCdjbGlja1JlZkFjdGlvbicpLHk9YigndHgnKSx6PWIoJ3VzZXJBY3Rpb24n KSxhYT00NTAsYmE9Mzg1LGNhPXt9LGRhPXt9LGVhPW51bGwsZmE9bnVsbCxnYT1u dWxsLGhhPTE1MCxpYT03MDAsamE9MTAwMCxrYT0yNTAsbGE9bnVsbCxtYT1udWxs LG5hPW51bGwsb2E9bnVsbDtmdW5jdGlvbiBwYSgpe2lmKHQuaWUoKTw3KXJldHVy bjtFdmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdtb3VzZW92 ZXInLHFhKTtFdmVudC5saXN0ZW4od2luZG93LCdzY3JvbGwnLGZ1bmN0aW9uKCl7 bGIuaGlkZSh0cnVlKTt9KTtoLnN1YnNjcmliZSgncGFnZV90cmFuc2l0aW9uJyxm dW5jdGlvbigpe3dhKCk7bGIuZGlydHlBbGwoKTt9LGguU1VCU0NSSUJFX05FVyk7 aC5zdWJzY3JpYmUoJ2xheWVyX3Nob3duJyxmdW5jdGlvbihtYixuYil7aWYobmIu dHlwZSE9J0hvdmVyY2FyZCcmJm5iLnR5cGUhPSdDb250ZXh0dWFsRGlhbG9nJyl3 YSgpO30saC5TVUJTQ1JJQkVfTkVXKTtrLnN1YnNjcmliZSgnYXJyb3dfcmVuZGVy ZWQnLHlhLGguU1VCU0NSSUJFX05FVyk7fWZ1bmN0aW9uIHFhKGV2ZW50KXt2YXIg bWI9ci5ieVRhZyhldmVudC5nZXRUYXJnZXQoKSwnYScpO2xiLnByb2Nlc3NOb2Rl KG1iKSYmZXZlbnQuc3RvcCgpO31mdW5jdGlvbiByYShtYil7ZmE9bWI7aWYoIXNh KG1iKSl7dmFyIG5iO2lmKCFtYnx8IShuYj10YShtYikpKXtkYS5tb3ZlVG9rZW4m JmRhLm1vdmVUb2tlbi5yZW1vdmUoKTtkYT17fTtyZXR1cm4gZmFsc2U7fWlmKGRh Lm5vZGUhPW1iKXtkYS5tb3ZlVG9rZW4mJmRhLm1vdmVUb2tlbi5yZW1vdmUoKTtk YT17bm9kZTptYixlbmRwb2ludDpuYixwb3M6bnVsbH07fX1yZXR1cm4gdHJ1ZTt9 ZnVuY3Rpb24gc2EobWIpe3JldHVybiBtYiYmZWEmJmRhLm5vZGU9PW1iO31mdW5j dGlvbiB0YShtYil7cmV0dXJuIG1iLmdldEF0dHJpYnV0ZSgnZGF0YS1ob3ZlcmNh cmQnKTt9ZnVuY3Rpb24gdWEobWIpe3ZhciBuYj1FdmVudC5saXN0ZW4obWIsJ21v dXNlb3V0JyxmdW5jdGlvbigpe2NsZWFyVGltZW91dChsYSk7Y2xlYXJUaW1lb3V0 KG1hKTtuYi5yZW1vdmUoKTtmYT1udWxsO2xiLmhpZGUoKTt9KTtpZighZGEubW92 ZVRva2VuKWRhLm1vdmVUb2tlbj1FdmVudC5saXN0ZW4obWIsJ21vdXNlbW92ZScs ZnVuY3Rpb24oZXZlbnQpe2RhLnBvcz12LmdldEV2ZW50UG9zaXRpb24oZXZlbnQp O30pO2NsZWFyVGltZW91dChsYSk7Y2xlYXJUaW1lb3V0KG1hKTtjbGVhclRpbWVv dXQob2EpO3ZhciBvYj1oYSxwYj1lYT9rYTppYTtpZihtYi5nZXRBdHRyaWJ1dGUo J2RhdGEtaG92ZXJjYXJkLWluc3RhbnQnKSlvYj1wYj01MDtsYT1zZXRUaW1lb3V0 KGhiLmN1cnJ5KG1iKSxvYik7bWE9c2V0VGltZW91dCh2YS5jdXJyeShtYikscGIp O31mdW5jdGlvbiB2YShtYixuYil7aWYoZGEubm9kZSE9bWIpcmV0dXJuO3ZhciBv Yj1jYVt0YShtYildO2lmKG9iKXt4YShvYik7fWVsc2UgaWYobmIpe3hhKGpiKCkp O31lbHNle3ZhciBwYj1lYT9rYTppYTtuYT1zZXRUaW1lb3V0KHZhLmN1cnJ5KG1i LHRydWUpLGphLXBiKTt9fWZ1bmN0aW9uIHdhKCl7bGIuaGlkZSh0cnVlKTtjbGVh

clRpbWVvdXQobWEpO31mdW5jdGlvbiB4YShtYil7dmFyIG5iPWRhLm5vZGUsb2I9 ZWEscGI9b2IhPW5iO2lmKGVhKXt2YXIgcWI9ay5nZXRJbnN0YW5jZShlYSk7cWIm JnFiLmhpZGUoKTt9aWYoIW0uY29udGFpbnMoZG9jdW1lbnQuYm9keSxuYikpe2xi LmhpZGUodHJ1ZSk7cmV0dXJuO31lYT1uYjtnYT1tYjtkYigpO21iLnNldENvbnRl eHQobmIpLnNob3coKTtpZihwYil7KGZ1bmN0aW9uKCl7bmV3IGooJy9hamF4L2hv dmVyY2FyZC9zaG93bi5waHAnKS5zZW5kKCk7eCgnaGltcCcsZWEsbnVsbCwnRk9S Q0UnLHtmdDp7ZXZ0OjM5fX0pO3ooJ2hvdmVyY2FyZCcsZWEpLnVhaSgnc2hvdycp O30pLmRlZmVyKCk7aWYob2Ipe2guaW5mb3JtKCdIb3ZlcmNhcmQvaGlkZScse25v ZGU6b2J9KTt9ZWxzZSBoLmluZm9ybSgnbGF5ZXJfc2hvd24nLHt0eXBlOidIb3Zl cmNhcmQnfSk7aC5pbmZvcm0oJ0hvdmVyY2FyZC9zaG93Jyx7bm9kZTpuYn0pO319 ZnVuY3Rpb24geWEobWIsbmIpe3ZhciBvYj1jYVtkYS5lbmRwb2ludF07aWYobmIu dHlwZSE9PSdDb250ZXh0dWFsRGlhbG9nJ3x8IW9ifHwhbmIucm9vdHx8bmIucG9z aXRpb24hPT0ndG9wJylyZXR1cm47dmFyIHBiPW4uc2NyeShuYi5yb290LCcuQ3Vz dG9tQXJyb3cnKVswXTtpZighcGIpcmV0dXJuO3ZhciBxYj1uLnNjcnkocGIsJy5B cnJvd1NoYWRvdycpWzBdO2lmKCFxYilyZXR1cm47dmFyIHJiPW51bGw7aWYocGIu c3R5bGUud2Via2l0TWFza1Bvc2l0aW9uIT09dW5kZWZpbmVkKXtyYj1iYjt9ZWxz ZSBpZih6YShwYikpcmI9Y2I7aWYocmIpe2wuYWRkQ2xhc3MobmIucm9vdCwnd2l0 aEN1c3RvbUFycm93Jyk7c2V0VGltZW91dChmdW5jdGlvbigpe3JiKHBiLHFiLG5i KTt9LDApO319ZnVuY3Rpb24gemEobWIpe2lmKCFtYiltYj1kb2N1bWVudC5ib2R5 O3ZhciBuYj1bJ3RyYW5zZm9ybScsJ1dlYmtpdFRyYW5zZm9ybScsJ21zVHJhbnNm b3JtJywnTW96VHJhbnNmb3JtJywnT1RyYW5zZm9ybSddLG9iO3doaWxlKG9iPW5i LnNoaWZ0KCkpaWYobWIuc3R5bGVbb2JdIT09dW5kZWZpbmVkKXJldHVybiBvYjty ZXR1cm4gbnVsbDt9ZnVuY3Rpb24gYWIobWIsbmIsb2Ipe3ZhciBwYj1tYi5wYXJl bnROb2RlLm9mZnNldFdpZHRoLHFiPU1hdGgucm91bmQocGIqb2Iub2Zmc2V0X3Bl cmNlbnQvMTAwKTtpZihvYi5zaWRlPT09J2xlZnQnKXtxYj1xYitvYi5zaWRlX21h cmdpbjt9ZWxzZSBpZihvYi5zaWRlPT09J3JpZ2h0JylxYj1wYi1xYi1vYi5zaWRl X21hcmdpbi0xODtyZXR1cm4gcWI7fWZ1bmN0aW9uIGJiKG1iLG5iLG9iKXtsLmFk ZENsYXNzKG9iLnJvb3QsJ3VzaW5nTWFzaycpO3ZhciBwYj1hYihtYixuYixvYik7 bWIuc3R5bGUud2Via2l0TWFza1Bvc2l0aW9uWD1wYisncHgnO25iLnN0eWxlLmxl ZnQ9cGIrJ3B4Jzt9ZnVuY3Rpb24gY2IobWIsbmIsb2Ipe3ZhciBwYj1uLnNjcnko bWIsJy5Db3ZlclBob3RvJylbMF07aWYoIXBiKXJldHVybjt2YXIgcWI9emEobWIp O2lmKCFxYilyZXR1cm47bC5hZGRDbGFzcyhvYi5yb290LCd1c2luZ1JvdGF0ZScp O3ZhciByYj1hYihtYixuYixvYikrOSxzYj1NYXRoLmNlaWwocmIvTWF0aC5TUVJU Mik7cGIuc3R5bGVbcWJdPSd0cmFuc2xhdGUoJysoLXNiKSsncHgsICcrc2IrJ3B4 KSByb3RhdGUoLTQ1ZGVnKSc7bWIuc3R5bGVbcWJdPSd0cmFuc2xhdGUoJytyYisn cHgsIDApIHJvdGF0ZSg0NWRlZyknO31mdW5jdGlvbiBkYigpe3ZhciBtYj12Lmdl dFZpZXdwb3J0RGltZW5zaW9ucygpLG5iPXYuZ2V0RWxlbWVudFBvc2l0aW9uKGVh LCd2aWV3cG9ydCcpLG9iPW5iLmNvbnZlcnRUbygnZG9jdW1lbnQnKSxwYj1nYihl YSkscWI9J2Fib3ZlJyxyYj0nbGVmdCcsc2I9ZmIob2IscGIsJ2Fib3ZlJyk7aWYo bmIueStzYjw9YmEpe3ZhciB0Yj1mYihvYixwYiwnYmVsb3cnKTtpZihuYi55K3Ri K2VhLm9mZnNldEhlaWdodCtiYTxtYi55KXtxYj0nYmVsb3cnO3NiPXRiO319dmFy IHViPW1iLngtdy5nZXRSaWdodCgpLHZiPWViKG9iLHBiLCdsZWZ0Jyk7aWYobmIu eCt2YithYT49dWIpe3ZhciB3Yj1lYihvYixwYiwncmlnaHQnKTtpZihuYi54K3di K2VhLm9mZnNldFdpZHRoPmFhKXtyYj0ncmlnaHQnO3ZiPXdiO319Z2Euc2V0UG9z aXRpb24ocWIpLnNldEFsaWduSChyYikuc2V0T2Zmc2V0WCh2Yikuc2V0T2Zmc2V0 WShzYik7fWZ1bmN0aW9uIGViKG1iLG5iLG9iKXtpZihvYj09J2xlZnQnKXJldHVy biBuYi5sLW1iLng7cmV0dXJuIG5iLnItKG1iLngrZWEub2Zmc2V0V2lkdGgpO31m dW5jdGlvbiBmYihtYixuYixvYil7aWYob2I9PSdhYm92ZScpcmV0dXJuIG5iLnQt bWIueTtyZXR1cm4gbmIuYi0obWIueStlYS5vZmZzZXRIZWlnaHQpO31mdW5jdGlv biBnYihtYil7dmFyIG5iPWRhLnBvcyxvYj1tYi5nZXRDbGllbnRSZWN0cygpO2lm KCFuYnx8b2IubGVuZ3RoPT09MClyZXR1cm4gcy5nZXRFbGVtZW50Qm91bmRzKG1i KTt2YXIgcGIscWI9ZmFsc2U7Zm9yKHZhciByYj0wO3JiPG9iLmxlbmd0aDtyYisr KXt2YXIgc2I9bmV3IHMoTWF0aC5yb3VuZChvYltyYl0udG9wKSxNYXRoLnJvdW5k KG9iW3JiXS5yaWdodCksTWF0aC5yb3VuZChvYltyYl0uYm90dG9tKSxNYXRoLnJv dW5kKG9iW3JiXS5sZWZ0KSwndmlld3BvcnQnKS5jb252ZXJ0VG8oJ2RvY3VtZW50 JyksdGI9c2IuZ2V0UG9zaXRpb25WZWN0b3IoKSx1Yj10Yi5hZGQoc2IuZ2V0RGlt ZW5zaW9uVmVjdG9yKCkpO2lmKCFwYnx8KHRiLng8PXBiLmwmJnRiLnk+cGIudCkp e2lmKHFiKWJyZWFrO3BiPW5ldyBzKHRiLnksdWIueCx1Yi55LHRiLngsJ2RvY3Vt ZW50Jyk7fWVsc2V7cGIudD1NYXRoLm1pbihwYi50LHRiLnkpO3BiLmI9TWF0aC5t YXgocGIuYix1Yi55KTtwYi5yPXViLng7fWlmKHNiLmNvbnRhaW5zKG5iKSlxYj10

cnVlO31yZXR1cm4gcGI7fWZ1bmN0aW9uIGhiKG1iKXtpZihtYi5pZCYmY2FbbWIu aWRdIT1udWxsKXJldHVybjt2YXIgbmI9dGEobWIpO2lmKGNhW25iXSE9bnVsbCly ZXR1cm47aWIobmIpO3ZhciBvYj1mdW5jdGlvbigpe2xiLmRpcnR5KG5iKTt3YSgp O307bmV3IGkobmIpLnNldERhdGEoe2VuZHBvaW50Om5ifSkuc2V0TWV0aG9kKCdH RVQnKS5zZXRSZWFkT25seSh0cnVlKS5zZXRFcnJvckhhbmRsZXIob2IpLnNldFRy YW5zcG9ydEVycm9ySGFuZGxlcihvYikuc2VuZCgpO31mdW5jdGlvbiBpYihtYil7 Y2FbbWJdPWZhbHNlO312YXIgamI9ZnVuY3Rpb24oKXt2YXIgbWI9bmV3IGsoe30s bS5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTonSG92ZXJjYXJkTG9hZGluZyd9LCJN ZW11YXQuLi4iKSk7bWIuZGlzYWJsZUJlaGF2aW9yKGcpLmRpc2FibGVCZWhhdmlv cihvKS5kaXNhYmxlQmVoYXZpb3IocSkuZGlzYWJsZUJlaGF2aW9yKHApO2tiKG1i KTtqYj1iYWdvZihtYik7cmV0dXJuIG1iO307ZnVuY3Rpb24ga2IobWIpe21iLnN1 YnNjcmliZSgnbW91c2VlbnRlcicsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQob2Ep O2ZhPWRhLm5vZGU7fSk7bWIuc3Vic2NyaWJlKCdtb3VzZWxlYXZlJyxmdW5jdGlv bigpe2xiLmhpZGUoZmFsc2UpO2ZhPW51bGw7fSk7fXZhciBsYj17aGlkZTpmdW5j dGlvbihtYil7aWYoIWVhKXJldHVybjtpZihtYil7aWYoZ2Epe2guaW5mb3JtKCds YXllcl9oaWRkZW4nLHt0eXBlOidIb3ZlcmNhcmQnfSk7aC5pbmZvcm0oJ0hvdmVy Y2FyZC9oaWRlJyx7bm9kZTplYX0pO2dhLmhpZGUoKTt9ZmE9bnVsbDtlYT1udWxs O2dhPW51bGw7fWVsc2Ugb2E9c2V0VGltZW91dChsYi5oaWRlLmN1cnJ5KHRydWUp LGthKTt9LHNldERpYWxvZzpmdW5jdGlvbihtYixuYil7bmIuZGlzYWJsZUJlaGF2 aW9yKGcpO2NhW21iXT1uYjtrYihuYik7aWYoZGEuZW5kcG9pbnQ9PW1iJiZmYT09 ZGEubm9kZSl4YShuYik7fSxnZXREaWFsb2c6ZnVuY3Rpb24obWIpe3JldHVybiBj YVttYl07fSxjb250YWluczpmdW5jdGlvbihtYil7aWYoZ2EpcmV0dXJuIG0uY29u dGFpbnMoZ2EuZ2V0Um9vdCgpLG1iKTtyZXR1cm4gZmFsc2U7fSxkaXJ0eTpmdW5j dGlvbihtYil7dmFyIG5iPWNhW21iXTtpZihuYil7bmIuZGVzdHJveSgpO2RlbGV0 ZSBjYVttYl07fX0sZGlydHlBbGw6ZnVuY3Rpb24oKXtmb3IodmFyIG1iIGluIGNh KXt2YXIgbmI9Y2FbbWJdO25iJiZsYi5kaXJ0eShtYik7fWguaW5mb3JtKCdIb3Zl cmNhcmQvZGlydHknKTt9LHByb2Nlc3NOb2RlOmZ1bmN0aW9uKG1iKXtpZihtYiYm cmEobWIpKXt1YShtYik7cmV0dXJuIHRydWU7fXJldHVybiBmYWxzZTt9fTtpZigh YS5Ib3ZlcmNhcmQpe3BhKCk7fWVsc2UgbGI9YS5Ib3ZlcmNhcmQ7ZS5leHBvcnRz PWxiO2EuSG92ZXJjYXJkPWUuZXhwb3J0czt9KTsKX19kKCJsZWdhY3k6YXJyYXkt dXRpbHMiLFsiY3JlYXRlQXJyYXlGcm9tIiwiaGFzQXJyYXlOYXR1cmUiXSxmdW5j dGlvbihhLGIsYyxkKXthLiRBPWIoJ2NyZWF0ZUFycmF5RnJvbScpO2EuaGFzQXJy YXlOYXR1cmU9YignaGFzQXJyYXlOYXR1cmUnKTt9LDMpOwpfX2QoImxlZ2FjeTpl bnYiLFsiRW52Il0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignRW52Jyk7YS5F bnY9ZTt9LDMpOwpfX2QoImxlZ2FjeTpwYWdlLXRyYW5zaXRpb25zIixbImNvbXB1 dGVSZWxhdGl2ZVVSSSIsIkhpc3RvcnlNYW5hZ2VyIiwiUGFnZVRyYW5zaXRpb25z Il0sZnVuY3Rpb24oYSxiLGMsZCl7YS5jb21wdXRlUmVsYXRpdmVVUkk9YignY29t cHV0ZVJlbGF0aXZlVVJJJyk7YS5IaXN0b3J5TWFuYWdlcj1hLkhpc3RvcnlNYW5h Z2VyfHxiKCdIaXN0b3J5TWFuYWdlcicpO2EuUGFnZVRyYW5zaXRpb25zPWEuUGFn ZVRyYW5zaXRpb25zfHxiKCdQYWdlVHJhbnNpdGlvbnMnKTt9LDMpOwpfX2QoIkZs aXBEaXJlY3Rpb25PbktleXByZXNzIixbImV2ZW50LWV4dGVuc2lvbnMiLCJET00i LCJJbnB1dCIsIlN0eWxlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50 LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdET00nKSxoPWIoJ0lucHV0JyksaT1iKCdT dHlsZScpO0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ2tl eXVwJyxmdW5jdGlvbihldmVudCl7dmFyIGo9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYo IWcuaXNOb2RlT2ZUeXBlKGosWydpbnB1dCcsJ3RleHRhcmVhJ10pKXJldHVybjtp ZihnLmlzTm9kZU9mVHlwZShqLCdpbnB1dCcpJiZqLnR5cGU9PSdwYXNzd29yZCcp cmV0dXJuO2lmKGouZ2V0QXR0cmlidXRlKCdkYXRhLXByZXZlbnQtYXV0by1mbGlw JykpcmV0dXJuO3ZhciBrPWguZ2V0VmFsdWUoaiksbD0oai5zdHlsZSYmai5zdHls ZS5kaXJlY3Rpb24pO2lmKCFsKXt2YXIgbT0wLG49dHJ1ZTtmb3IodmFyIG89MDtv PGsubGVuZ3RoO28rKyl7dmFyIHA9ay5jaGFyQ29kZUF0KG8pO2lmKHA+PTQ4KXtp ZihuKXtuPWZhbHNlO20rKzt9aWYocD49MTQ3MCYmcDw9MTkyMCl7aS5zZXQoaiwn ZGlyZWN0aW9uJywncnRsJyk7cmV0dXJuO31pZihtPT01KXtpLnNldChqLCdkaXJl Y3Rpb24nLCdsdHInKTtyZXR1cm47fX1lbHNlIG49dHJ1ZTt9fWVsc2UgaWYoay5s ZW5ndGg9PT0wKWkuc2V0KGosJ2RpcmVjdGlvbicsJycpO30pO30pOwpfX2QoIlBs YWNlaG9sZGVyT25zdWJtaXRGb3JtTGlzdGVuZXIiLFsiZXZlbnQtZXh0ZW5zaW9u cyIsIklucHV0Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVu c2lvbnMnKTt2YXIgZz1iKCdJbnB1dCcpO0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5k b2N1bWVudEVsZW1lbnQsJ3N1Ym1pdCcsZnVuY3Rpb24oaCl7dmFyIGk9aC5nZXRU YXJnZXQoKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpO2Zvcih2YXIgaj0wO2o8

aS5sZW5ndGg7aisrKWlmKGlbal0uZ2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicp JiZnLmlzRW1wdHkoaVtqXSkpZy5zZXRWYWx1ZShpW2pdLCcnKTt9KTt9KTsKX19k KCJSZXF1aXJlZEZvcm1MaXN0ZW5lciIsWyJldmVudC1leHRlbnNpb25zIiwiSW5w dXQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycp O3ZhciBnPWIoJ0lucHV0Jyk7RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudCwnc3VibWl0JyxmdW5jdGlvbihoKXt2YXIgaT1oLmdldFRhcmdldCgp LmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJyk7Zm9yKHZhciBqPTA7ajxpLmxlbmd0 aDtqKyspaWYoaVtqXS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykmJmcuaXNFbXB0 eShpW2pdKSl7aVtqXS5mb2N1cygpO3JldHVybiBmYWxzZTt9fSxFdmVudC5Qcmlv cml0eS5VUkdFTlQpO30pOwpfX2QoIkxpdmUiLFsiQXJiaXRlciIsIkFzeW5jRE9N IiwiQXN5bmNTaWduYWwiLCJDaGFubmVsQ29uc3RhbnRzIiwiRE9NIiwiRGF0YVN0 b3JlIiwiU2VydmVySlMiLCJjcmVhdGVBcnJheUZyb20iXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9YignQXN5bmNET00nKSxpPWIo J0FzeW5jU2lnbmFsJyksaj1iKCdDaGFubmVsQ29uc3RhbnRzJyksaz1iKCdET00n KSxsPWIoJ0RhdGFTdG9yZScpLG09YignU2VydmVySlMnKSxuPWIoJ2NyZWF0ZUFy cmF5RnJvbScpO2Z1bmN0aW9uIG8ocSxyKXtyPUpTT04ucGFyc2UoSlNPTi5zdHJp bmdpZnkocikpO25ldyBtKCkuc2V0UmVsYXRpdmVUbyhxKS5oYW5kbGUocik7fXZh ciBwPXtsb2dBbGw6ZmFsc2Usc3RhcnR1cDpmdW5jdGlvbigpe3Auc3RhcnR1cD1i YWdvZmhvbGRpbmc7Zy5zdWJzY3JpYmUoai5nZXRBcmJpdGVyVHlwZSgnbGl2ZScp LHAuaGFuZGxlTWVzc2FnZS5iaW5kKHApKTt9LGxvb2t1cExpdmVOb2RlOmZ1bmN0 aW9uKHEscil7dmFyIHM9ay5zY3J5KGRvY3VtZW50LmJvZHksJy5saXZlXycrcSsn Xycrcik7cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKGwuZ2V0KHQsJ3NlcW51bScp PT09dW5kZWZpbmVkKXt2YXIgdT1KU09OLnBhcnNlKHQuZ2V0QXR0cmlidXRlKCdk YXRhLWxpdmUnKSk7bC5zZXQodCwnc2VxbnVtJyx1LnNlcSk7fX0pO3JldHVybiBz O30saGFuZGxlTWVzc2FnZTpmdW5jdGlvbihxLHIpe3ZhciBzPXIub2JqLHQ9cy5m YmlkLHU9cy5hc3NvYyx2PXRoaXMubG9va3VwTGl2ZU5vZGUodCx1KTtpZighdily ZXR1cm4gZmFsc2U7di5mb3JFYWNoKGZ1bmN0aW9uKHcpe2lmKHMuZXhwc2VxKXt2 YXIgeD1sLmdldCh3LCdzZXFudW0nKSx5PWwuZ2V0KHcsJ21lc3NhZ2VfYnVmZmVy Jyk7aWYoeT09PXVuZGVmaW5lZCl7eT17fTtsLnNldCh3LCdtZXNzYWdlX2J1ZmZl cicseSk7fXZhciB6PXtvYmo6c307eVtzLmV4cHNlcV09ejtpZihzLmV4cHNlcSE9 eCl7cC5sb2coJ21pc21hdGNoJyxzLmZiaWQscy5leHBzZXEseCk7cmV0dXJuIGZh bHNlO313aGlsZSh0cnVlKXt4PWwuZ2V0KHcsJ3NlcW51bScpO3ZhciBhYT15W3hd O2lmKGFhKXtoLmludm9rZShhYS5vYmoudXBkYXRlcyx3KTtpZihhYS5vYmouanMp byh3LGFhLm9iai5qcyk7cC5sb2coJ3NlcW1hdGNoJyxzLmZiaWQsJ2V4cCcscy5l eHBzZXEsJ2N1cicseCk7ZGVsZXRlIHlbeF07fWVsc2UgYnJlYWs7fX1lbHNle2gu aW52b2tlKHMudXBkYXRlcyx3KTtpZihzLmpzKW8odyxzLmpzKTt9fSk7fSxsb2c6 ZnVuY3Rpb24oKXtpZihwLmxvZ0FsbCl7dmFyIHE9bihhcmd1bWVudHMpLmpvaW4o JzonKTtuZXcgaSgnL2NvbW1vbi9zY3JpYmVfZW5kcG9pbnQucGhwJyx7YzonbGl2 ZV9zZXF1ZW5jZScsbTpxfSkuc2VuZCgpO319fTtlLmV4cG9ydHM9cDt9KTsKX19k KCJsZWdhY3k6bGl2ZS1qcyIsWyJMaXZlIl0sZnVuY3Rpb24oYSxiLGMsZCl7YS5M aXZlPWIoJ0xpdmUnKTt9LDMpOwpfX2QoImxlZ2FjeTpKU0xvZ2dlciIsWyJKU0xv Z2dlciJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuSlNMb2dnZXI9YignSlNMb2dnZXIn KTt9LDMpOwpfX2QoIkFtb2ViYSIsWyJSdW4iLCJjb3B5UHJvcGVydGllcyJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdSdW4nKSxoPWIoJ2NvcHlQcm9w ZXJ0aWVzJyksaT17fTtoKGkse19pbnN0cnVtZW50UXVldWU6W10sX2xvZ2dlcjpu dWxsLGluc3RydW1lbnQ6ZnVuY3Rpb24oaixrKXtpZihpLl9sb2dnZXIpe2kuX2xv Z2dlci5pbnN0cnVtZW50KGosayk7fWVsc2UgaS5faW5zdHJ1bWVudFF1ZXVlLnB1 c2goW2osa10pO30sZmx1c2hRdWV1ZTpmdW5jdGlvbihqKXtpZihqKWkuX2luc3Ry dW1lbnRRdWV1ZS5tYXAoaik7aS5faW5zdHJ1bWVudFF1ZXVlPVtdO30sc2V0TG9n Z2VyOmZ1bmN0aW9uKGope2kuX2xvZ2dlcj1qO319KTtnLm9uTGVhdmUoZnVuY3Rp b24oKXtpLmZsdXNoUXVldWUobnVsbCk7fSk7ZS5leHBvcnRzPWk7fSk7Cl9fZCgi Y3giLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgpe3Rocm93 IG5ldyBFcnJvcignY3gnKycoLi4uKTogVW5leHBlY3RlZCBjbGFzcyB0cmFuc2Zv cm1hdGlvbi4nKTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiTW9kYWxMYXllciIsWyJl dmVudC1leHRlbnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkNTUyIsIkRh dGFTdG9yZSIsIkRPTVF1ZXJ5IiwiU2Nyb2xsQXdhcmVET00iLCJTdHlsZSIsIlVS SSIsIlVzZXJBZ2VudCIsIlZlY3RvciIsImNvcHlQcm9wZXJ0aWVzIiwiY3N4Iiwi Y3giLCJkZWJvdW5jZSIsImdlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2 ZW50LWV4dGVuc2lvbnMnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9 YignQ1NTJyksaD1iKCdEYXRhU3RvcmUnKSxpPWIoJ0RPTVF1ZXJ5Jyksaj1iKCdT

Y3JvbGxBd2FyZURPTScpLGs9YignU3R5bGUnKSxsPWIoJ1VSSScpLG09YignVXNl ckFnZW50Jyksbj1iKCdWZWN0b3InKSxvPWIoJ2NvcHlQcm9wZXJ0aWVzJykscD1i KCdjc3gnKSxxPWIoJ2N4Jykscj1iKCdkZWJvdW5jZScpLHM9YignZ2UnKSx0PVtd LHU9bnVsbCx2PW51bGw7ZnVuY3Rpb24gdygpe2lmKCF2KXY9aS5zY3J5KGRvY3Vt ZW50LmJvZHksIi4tY3gtUFJJVkFURS1mYkxheW91dF9fcm9vdCIpWzBdO3JldHVy biB2O31mdW5jdGlvbiB4KGNhKXt2YXIgZGE9e3Bvc2l0aW9uOm4uZ2V0U2Nyb2xs UG9zaXRpb24oKX0sZWE9Y2Eub2Zmc2V0VG9wLWRhLnBvc2l0aW9uLnk7Zy5hZGRD bGFzcyhjYSwiLWN4LVBSSVZBVEUtTW9kYWxMYXllcl9fZml4ZWQiKTtrLnNldChj YSwndG9wJyxlYSsncHgnKTtkYS5saXN0ZW5lcj1qLnN1YnNjcmliZSgnc2Nyb2xs JyxmdW5jdGlvbihmYSxnYSl7aWYoaS5jb250YWlucyhjYSxnYS50YXJnZXQpKXt2 YXIgaGE9Y2Eub2Zmc2V0VG9wLWdhLmRlbHRhLnk7ay5zZXQoY2EsJ3RvcCcsaGEr J3B4Jyk7ZGEucG9zaXRpb249ZGEucG9zaXRpb24uYWRkKGdhLmRlbHRhKTtyZXR1 cm4gZmFsc2U7fX0pO2guc2V0KGNhLCdNb2RhbExheWVyRGF0YScsZGEpO2lmKG0u ZmlyZWZveCgpPDEzKXkuY3VycnkoY2EpLmRlZmVyKCk7fWZ1bmN0aW9uIHkoY2Ep e2kuc2NyeShjYSwnZGl2LnN3Zk9iamVjdCcpLmZvckVhY2goZnVuY3Rpb24oZGEp e3ZhciBlYT1kYS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dmaWQnKTtpZihlYSYmd2lu ZG93W2VhXSl7dmFyIGZhPXdpbmRvd1tlYV07ZmEuYWRkUGFyYW0oJ2F1dG9zdGFy dCcsJ2ZhbHNlJyk7ZmEuYWRkUGFyYW0oJ2F1dG9wbGF5JywnZmFsc2UnKTtmYS5h ZGRQYXJhbSgncGxheScsJ2ZhbHNlJyk7ZmEuYWRkVmFyaWFibGUoJ3ZpZGVvX2F1 dG9wbGF5JywnMCcpO2ZhLmFkZFZhcmlhYmxlKCdhdXRvcGxheScsJzAnKTtmYS5h ZGRWYXJpYWJsZSgncGxheScsJzAnKTt2YXIgZ2E9bChmYS5nZXRBdHRyaWJ1dGUo J3N3ZicpKTtnYS5hZGRRdWVyeURhdGEoe2F1dG9wbGF5OicwJ30pO2dhLnNldFBh dGgoZ2EuZ2V0UGF0aCgpLnJlcGxhY2UoJ2F1dG9wbGF5PTEnLCdhdXRvcGxheT0w JykpO2ZhLnNldEF0dHJpYnV0ZSgnc3dmJyxnYS50b1N0cmluZygpKTtmYS53cml0 ZShkYSk7fX0pO31mdW5jdGlvbiB6KGNhLGRhKXt2YXIgZWE9aC5nZXQoY2EsJ01v ZGFsTGF5ZXJEYXRhJyk7aWYoZWEpe2cucmVtb3ZlQ2xhc3MoY2EsIi1jeC1QUklW QVRFLU1vZGFsTGF5ZXJfX2ZpeGVkIik7ay5zZXQoY2EsJ3RvcCcsJycpO2lmKGRh KXt2YXIgZmE9aS5nZXREb2N1bWVudFNjcm9sbEVsZW1lbnQoKTtmYS5zY3JvbGxU b3A9ZWEucG9zaXRpb24ueTt9ZWEubGlzdGVuZXIudW5zdWJzY3JpYmUoKTtlYS5s aXN0ZW5lcj1udWxsO2gucmVtb3ZlKGNhLCdNb2RhbExheWVyRGF0YScpO31pZiht LmllKCk8NylrLnNldChjYSwnaGVpZ2h0JywnJyk7fWZ1bmN0aW9uIGFhKCl7dmFy IGNhPXRbdC5sZW5ndGgtMV0sZGE9ZnVuY3Rpb24oZWEpe3ZhciBmYT0tZWEub2Zm c2V0VG9wK01hdGgubWF4KGNhLm9mZnNldEhlaWdodCxjYS5zY3JvbGxIZWlnaHQp O2suc2V0KGVhLCdoZWlnaHQnLGZhKydweCcpO307dC5zbGljZSgwLC0xKS5yZXZl cnNlKCkubWFwKGZ1bmN0aW9uKGVhKXtyZXR1cm4gZWEuZ2V0TGF5ZXJSb290KCk7 fSkuY29uY2F0KHcoKSkuZm9yRWFjaChkYSk7fWZ1bmN0aW9uIGJhKGNhKXt0aGlz Ll9sYXllcj1jYTt9byhiYS5wcm90b3R5cGUse19zdWJzY3JpcHRpb246bnVsbCxl bmFibGU6ZnVuY3Rpb24oKXtpZighdygpKXJldHVybjt0aGlzLl9zdWJzY3JpcHRp b249dGhpcy5fbGF5ZXIuc3Vic2NyaWJlKFsnc2hvdycsJ2hpZGUnXSxmdW5jdGlv bihjYSl7Y2E9PSdzaG93Jz90aGlzLl9hZGRNb2RhbCgpOnRoaXMuX3JlbW92ZU1v ZGFsKCk7fS5iaW5kKHRoaXMpKTtpZih0aGlzLl9sYXllci5pc1Nob3duKCkpdGhp cy5fYWRkTW9kYWwoKTt9LGRpc2FibGU6ZnVuY3Rpb24oKXtpZighdygpKXJldHVy bjt0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTt0aGlzLl9zdWJzY3Jp cHRpb249bnVsbDtpZih0aGlzLl9sYXllci5pc1Nob3duKCkpdGhpcy5fcmVtb3Zl TW9kYWwoKTt9LF9hZGRNb2RhbDpmdW5jdGlvbigpe2cuYWRkQ2xhc3ModGhpcy5n ZXRMYXllclJvb3QoKSwnbW9kYWxXcmFwcGVyJyk7dmFyIGNhPXRbdC5sZW5ndGgt MV0sZGE9Y2E/Y2EuZ2V0TGF5ZXJSb290KCk6dygpO3goZGEpO3ZhciBlYT1pLmdl dERvY3VtZW50U2Nyb2xsRWxlbWVudCgpO2VhLnNjcm9sbFRvcD0wO2lmKG0uaWUo KTw3KXtpZighdC5sZW5ndGgpe2cuYWRkQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRF bGVtZW50LCItY3gtUFJJVkFURS1Nb2RhbExheWVyX19vcGVuIik7dT1FdmVudC5s aXN0ZW4od2luZG93LCdyZXNpemUnLHIoYWEsMTAwKSk7fWFhLmRlZmVyKCk7fXQu cHVzaCh0aGlzKTt9LF9yZW1vdmVNb2RhbDpmdW5jdGlvbigpe2cucmVtb3ZlQ2xh c3ModGhpcy5nZXRMYXllclJvb3QoKSwnbW9kYWxXcmFwcGVyJyk7dmFyIGNhPXRo aXM9PT10W3QubGVuZ3RoLTFdO3QucmVtb3ZlKHRoaXMpO3ZhciBkYT10W3QubGVu Z3RoLTFdO3ooZGE/ZGEuZ2V0TGF5ZXJSb290KCk6dygpLGNhKTtpZihtLmllKCk8 Nyl7aWYoIXQubGVuZ3RoKXtnLnJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudCwiLWN4LVBSSVZBVEUtTW9kYWxMYXllcl9fb3BlbiIpO3UucmVtb3Zl KCk7dT1udWxsO31hYS5kZWZlcigpO319LGdldExheWVyUm9vdDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9sYXllci5nZXRSb290KCk7fX0pO2UuZXhwb3J0cz1iYTt9 KTsKX19kKCJEaWFsb2dYIixbImV2ZW50LWV4dGVuc2lvbnMiLCJmdW5jdGlvbi1l

eHRlbnNpb25zIiwiQWNjZXNzaWJsZUxheWVyIiwiQXJiaXRlciIsIkFyYml0ZXJN aXhpbiIsIkNsYXNzIiwiRE9NIiwiTGF5ZXIiLCJMYXllckJ1dHRvbnMiLCJMYXll ckZvcm1Ib29rcyIsIk1vZGFsTGF5ZXIiLCJQYXJlbnQiLCJTdHlsZSIsIlVzZXJB Z2VudCIsIlZlY3RvciIsImNvcHlQcm9wZXJ0aWVzIiwiY3giLCJkZWJvdW5jZSIs ImdldE92ZXJsYXlaSW5kZXgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZl bnQtZXh0ZW5zaW9ucycpO2IoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgZz1i KCdBY2Nlc3NpYmxlTGF5ZXInKSxoPWIoJ0FyYml0ZXInKSxpPWIoJ0FyYml0ZXJN aXhpbicpLGo9YignQ2xhc3MnKSxrPWIoJ0RPTScpLGw9YignTGF5ZXInKSxtPWIo J0xheWVyQnV0dG9ucycpLG49YignTGF5ZXJGb3JtSG9va3MnKSxvPWIoJ01vZGFs TGF5ZXInKSxwPWIoJ1BhcmVudCcpLHE9YignU3R5bGUnKSxyPWIoJ1VzZXJBZ2Vu dCcpLHM9YignVmVjdG9yJyksdD1iKCdjb3B5UHJvcGVydGllcycpLHU9YignY3gn KSx2PWIoJ2RlYm91bmNlJyksdz1iKCdnZXRPdmVybGF5WkluZGV4Jyk7ZnVuY3Rp b24geCh6LGFhKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyx6LGFhKTt9ai5l eHRlbmQoeCxsKTt0KHgsaSk7dCh4LnByb3RvdHlwZSx7X21vZGFsOmZhbHNlLF9p ZTpudWxsLF93cmFwcGVyOm51bGwsX2NvbmZpZ3VyZTpmdW5jdGlvbih6LGFhKXt0 aGlzLnBhcmVudC5fY29uZmlndXJlKHosYWEpO2lmKHoubW9kYWwpe3RoaXMuX21v ZGFsPXRydWU7dGhpcy5lbmFibGVCZWhhdmlvcihvKTt9aWYoei5hdXRvaGlkZSl2 YXIgYmE9dGhpcy5zdWJzY3JpYmUoJ3Nob3cnLGZ1bmN0aW9uKCl7YmEudW5zdWJz Y3JpYmUoKTt0aGlzLmhpZGUuc2hpZWxkKHRoaXMpLmRlZmVyKHouYXV0b2hpZGUp O30uYmluZCh0aGlzKSk7fSxfZ2V0RGVmYXVsdEJlaGF2aW9yczpmdW5jdGlvbigp e3JldHVybiB0aGlzLnBhcmVudC5fZ2V0RGVmYXVsdEJlaGF2aW9ycygpLmNvbmNh dChbeSxnLG0sbl0pO30sX2J1aWxkV3JhcHBlcjpmdW5jdGlvbih6LGFhKXt2YXIg YmE9ay5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZToiLWN4LVBSSVZBVEUtdWlEaWFs b2dfX2NvbnRlbnQifSxhYSksY2E7dGhpcy5faWU9ci5pZSgpO2lmKHRoaXMuX2ll PjYmJnRoaXMuX2llPDkpe2NhPVtrLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOiIt Y3gtUFJJVkFURS11aURpYWxvZ19fdmVydGljYWwifSksay5jcmVhdGUoJ2Rpdics e2NsYXNzTmFtZToiLWN4LVBSSVZBVEUtdWlEaWFsb2dfX2hvcml6b250YWwifSks ay5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZToiLWN4LVBSSVZBVEUtdWlEaWFsb2df X3RvcExlZnQifSksay5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZToiLWN4LVBSSVZB VEUtdWlEaWFsb2dfX3RvcFJpZ2h0In0pLGsuY3JlYXRlKCdkaXYnLHtjbGFzc05h bWU6Ii1jeC1QUklWQVRFLXVpRGlhbG9nX19ib3R0b21MZWZ0In0pLGsuY3JlYXRl KCdkaXYnLHtjbGFzc05hbWU6Ii1jeC1QUklWQVRFLXVpRGlhbG9nX19ib3R0b21S aWdodCJ9KSxiYV07fWVsc2UgY2E9ay5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZToi LWN4LVBVQkxJQy11aURpYWxvZ19fYm9yZGVyIn0sYmEpO3RoaXMuX3dyYXBwZXI9 ay5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZToiLWN4LVBVQkxJQy11aURpYWxvZ19f d3JhcHBlciJ9LGNhKTt0aGlzLnNldFdpZHRoKHoud2lkdGgpO3ZhciBkYT0iLWN4 LVBSSVZBVEUtdWlEaWFsb2dfX3Bvc2l0aW9uZXIiO2lmKHouY2xhc3NOYW1lKWRh Kz0nICcrei5jbGFzc05hbWU7dmFyIGVhPWsuY3JlYXRlKCdkaXYnLHtjbGFzc05h bWU6ZGF9LHRoaXMuX3dyYXBwZXIpO2lmKHouaWQpZWEuaWQ9ei5pZDtyZXR1cm4g ZWE7fSxfZ2V0Q29udGVudFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3Jh cHBlcjt9LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHo9cy5nZXRWaWV3 cG9ydERpbWVuc2lvbnMoKS55LXMuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5f d3JhcHBlcikueSxhYTtpZih6PDI1MCl7aWYoej44MCl7YWE9ei8yO31lbHNlIGFh PTQwO31lbHNlIGFhPTEyNTtpZighdGhpcy5fbW9kYWwmJighdGhpcy5faWV8fHRo aXMuX2llPDcpKWlmKGFhPD00MCl7dGhpcy5lbmFibGVCZWhhdmlvcihvKTt9ZWxz ZSB0aGlzLmRpc2FibGVCZWhhdmlvcihvKTtpZih0aGlzLl9pZTw3KXt2YXIgYmE9 cy5nZXRTY3JvbGxQb3NpdGlvbigpLnk7cS5zZXQodGhpcy5fd3JhcHBlciwndG9w JyxhYStiYSsncHgnKTt9ZWxzZSBxLnNldCh0aGlzLl93cmFwcGVyLCdtYXJnaW4t dG9wJyxhYSsncHgnKTtpZih0aGlzLl9jYXVzYWxFbGVtZW50KXt2YXIgY2E9dyh0 aGlzLl9jYXVzYWxFbGVtZW50LHRoaXMuZ2V0SW5zZXJ0UGFyZW50KCkpO3Euc2V0 KHRoaXMuZ2V0Um9vdCgpLCd6LWluZGV4JyxjYT4yMDA/Y2E6JycpO319LHNldFdp ZHRoOmZ1bmN0aW9uKHope3o9TWF0aC5mbG9vcih6KTtpZih0aGlzLl9pZT42JiZ0 aGlzLl9pZTw5KXotPTIwO3Euc2V0KHRoaXMuX3dyYXBwZXIsJ3dpZHRoJyx6Kydw eCcpO319KTtmdW5jdGlvbiB5KHope3RoaXMuX2xheWVyPXo7fXQoeS5wcm90b3R5 cGUse19zdWJzY3JpcHRpb246bnVsbCxfcmVzaXplOm51bGwsZW5hYmxlOmZ1bmN0 aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX2xheWVyLnN1YnNjcmliZShb J3Nob3cnLCdoaWRlJ10sZnVuY3Rpb24oeil7aWYoej09PSdzaG93Jyl7dGhpcy5f YXR0YWNoKCk7aC5pbmZvcm0oJ2xheWVyX3Nob3duJyx7dHlwZTonRGlhbG9nWCd9 KTt9ZWxzZXt0aGlzLl9kZXRhY2goKTtoLmluZm9ybSgnbGF5ZXJfaGlkZGVuJyx7 dHlwZTonRGlhbG9nWCd9KTt9fS5iaW5kKHRoaXMpKTt9LGRpc2FibGU6ZnVuY3Rp

b24oKXt0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTt0aGlzLl9zdWJz Y3JpcHRpb249bnVsbDt0aGlzLl9yZXNpemUmJnRoaXMuX2RldGFjaCgpO30sX2F0 dGFjaDpmdW5jdGlvbigpe3RoaXMuX2xheWVyLnVwZGF0ZVBvc2l0aW9uKCk7dGhp cy5fcmVzaXplPUV2ZW50Lmxpc3Rlbih3aW5kb3csJ3Jlc2l6ZScsdih0aGlzLl9s YXllci51cGRhdGVQb3NpdGlvbi5iaW5kKHRoaXMuX2xheWVyKSkpO30sX2RldGFj aDpmdW5jdGlvbigpe3RoaXMuX3Jlc2l6ZS5yZW1vdmUoKTt0aGlzLl9yZXNpemU9 bnVsbDt9fSk7ZS5leHBvcnRzPXg7fSk7Cl9fZCgiQXN5bmNEaWFsb2ciLFsiQXN5 bmNSZXF1ZXN0IiwiQm9vdGxvYWRlciIsImNvcHlQcm9wZXJ0aWVzIiwiQ1NTIiwi Y3giLCJEaWFsb2dYIiwiRE9NIiwiRW52IiwiUGFyZW50IiwidHgiLCJVUkkiXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXN5bmNSZXF1ZXN0JyksaD1i KCdCb290bG9hZGVyJyksaT1iKCdjb3B5UHJvcGVydGllcycpLGo9YignQ1NTJyks az1iKCdjeCcpLGw9YignRGlhbG9nWCcpLG09YignRE9NJyksbj1iKCdFbnYnKSxv PWIoJ1BhcmVudCcpLHA9YigndHgnKSxxPWIoJ1VSSScpLHI9bmV3IGwoe3dpZHRo OjQ2NSxjbGFzc05hbWU6Ii1jeC1QUklWQVRFLXVpRGlhbG9nX19sb2FkaW5nRGlh bG9nIn0sbS5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZToiLWN4LVBSSVZBVEUtdWlE aWFsb2dfX2xvYWRpbmdUZXh0In0sIk1lbXVhdC4uLiIpKSxzPTEsdD1bXSx1PTA7 ZnVuY3Rpb24gdigpe3UtLTtpZighdSlyLmhpZGUoKTt9ZnVuY3Rpb24gdyh5LHop e3ZhciBhYT1zKys7dFthYV09ejtpKHkuZ2V0RGF0YSgpLHtfX2FzeW5jRGlhbG9n OmFhfSk7dmFyIGJhPWZhbHNlO3UrKztyLnNob3coKTtmdW5jdGlvbiBjYSgpe2lm KCFiYSl2KCk7fXkuc2V0SW50ZXJjZXB0SGFuZGxlcihmdW5jdGlvbihkYSl7YmE9 dHJ1ZTt2KCk7fSk7eS5zZXRGaW5hbGx5SGFuZGxlcihmdW5jdGlvbihkYSl7dmFy IGVhPWRhLmdldFBheWxvYWQoKTtpZihlYSYmZWEuYXN5bmNVUkwpeC5zZW5kKG5l dyBnKGVhLmFzeW5jVVJMKSk7Y2EoKTt9KTt5LnNldEFib3J0SGFuZGxlcihjYSk7 eS5zZW5kKCk7fXZhciB4PXtzZW5kOmZ1bmN0aW9uKHkseil7dyh5LHp8fGJhZ29m aG9sZGluZyk7fSxib290c3RyYXA6ZnVuY3Rpb24oeSx6LGFhKXtpZigheSlyZXR1 cm47dmFyIGJhPW8uYnlDbGFzcyh6LCdzdGF0X2VsZW0nKXx8ejtpZihiYSYmai5o YXNDbGFzcyhiYSwnYXN5bmNfc2F2aW5nJykpcmV0dXJuIGZhbHNlO3ZhciBjYT1u ZXcgcSh5KS5nZXRRdWVyeURhdGEoKTtjYS5jYXVzYWxfZWxlbWVudD16P20uZ2V0 SUQoeik6bnVsbDt2YXIgZGE9YWE9PT0nZGlhbG9nJyxlYT1uZXcgZygpLnNldFVS SSh5KS5zZXREYXRhKGNhKS5zZXRNZXRob2QoZGE/J0dFVCc6J1BPU1QnKS5zZXRS ZWFkT25seShkYSkuc2V0UmVsYXRpdmVUbyh6KS5zZXRTdGF0dXNFbGVtZW50KGJh KS5zZXROZWN0YXJNb2R1bGVEYXRhU2FmZSh6KTtpZihuLmlzX2Rlc2t0b3Ape2gu bG9hZE1vZHVsZXMoWydGYmREaWFsb2dQcm92aWRlciddLGZ1bmN0aW9uKGZhKXtm YS5zZW5kRGlhbG9nKGVhLHguc2VuZCk7fSk7cmV0dXJuO314LnNlbmQoZWEpO30s cmVzcG9uZDpmdW5jdGlvbih5LHope3ZhciBhYT10W3ldO2lmKGFhKXthYSh6KTtk ZWxldGUgdFt5XTt9fSxnZXRMb2FkaW5nRGlhbG9nOmZ1bmN0aW9uKCl7cmV0dXJu IHI7fX07ZS5leHBvcnRzPXg7fSk7Cl9fZCgiQXN5bmNMYXlvdXQiLFsiQWpheFBp cGVSZXF1ZXN0IiwiQXJiaXRlciIsIkFzeW5jUmVzcG9uc2UiLCJBc3luY1JlcXVl c3QiLCJDU1MiLCJET00iLCJIVE1MIiwiTmF2aWdhdGlvbk1lc3NhZ2UiLCJQYWdl VHJhbnNpdGlvbnMiLCJVUkkiLCIkIiwiY29weVByb3BlcnRpZXMiLCJnZSIsImdv VVJJIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FqYXhQaXBlUmVx dWVzdCcpLGg9YignQXJiaXRlcicpLGk9YignQXN5bmNSZXNwb25zZScpLGo9Yign QXN5bmNSZXF1ZXN0Jyksaz1iKCdDU1MnKSxsPWIoJ0RPTScpLG09YignSFRNTCcp LG49YignTmF2aWdhdGlvbk1lc3NhZ2UnKSxvPWIoJ1BhZ2VUcmFuc2l0aW9ucycp LHA9YignVVJJJykscT1iKCckJykscj1iKCdjb3B5UHJvcGVydGllcycpLHM9Yign Z2UnKSx0PWIoJ2dvVVJJJyk7ZnVuY3Rpb24gdSh2KXt0aGlzLmNhbnZhc0lEPXY7 aWYocygncmlnaHRDb2wnKSl0aGlzLmF1eGlsaWFyeUlEPSdyaWdodENvbCc7aWYo cygnaGVhZGVyQXJlYScpKXRoaXMuaGVhZGVySUQ9J2hlYWRlckFyZWEnO2lmKHMo J3Rvb2xiYXJDb250YWluZXInKSl0aGlzLnRvb2xiYXJJRD0ndG9vbGJhckNvbnRh aW5lcic7dGhpcy53YWl0aW5nRm9yQXV4PWZhbHNlO28ucmVnaXN0ZXJIYW5kbGVy KHRoaXMuY2F0Y2hQYWdlVHJhbnNpdGlvbi5iaW5kKHRoaXMpKTt0aGlzLnN1YnNj cmlwdGlvbj1oLnN1YnNjcmliZShuLk5BVklHQVRJT05fQkVHSU4sdGhpcy5vbk5h dmlnYXRlLmJpbmQodGhpcykpO31yKHUucHJvdG90eXBlLHtjYXRjaFBhZ2VUcmFu c2l0aW9uOmZ1bmN0aW9uKHYpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJl KCk7cmV0dXJuIGZhbHNlO30sZ2V0Q2FudmFzSUQ6ZnVuY3Rpb24odil7cmV0dXJu IHYuc2lkZWNvbD8nY29udGVudENvbCc6J2NvbnRlbnRBcmVhJzt9LG9uTmF2aWdh dGU6ZnVuY3Rpb24odix3KXt2YXIgeD13LnVzZUFqYXhQaXBlO3c9dy5wYXJhbXM7 aWYody5lbmRwb2ludCl7aWYodGhpcy5yZXF1ZXN0KXt0aGlzLnJlcXVlc3Quc2V0 RmluYWxseUhhbmRsZXIoYmFnb2Zob2xkaW5nKTt0aGlzLnJlcXVlc3QuYWJvcnQo KTt9aWYodGhpcy5zaWRlUmVxdWVzdCl0aGlzLnNpZGVSZXF1ZXN0LmFib3J0KCk7

aWYoeCl7dGhpcy5yZXF1ZXN0PW5ldyBnKCkuc2V0VVJJKHcuZW5kcG9pbnQpLnNl dERhdGEodykuc2V0Q2FudmFzSWQodGhpcy5nZXRDYW52YXNJRCh3KSkuc2V0Rmlu YWxseUhhbmRsZXIodGhpcy5maW5hbGx5SGFuZGxlci5iaW5kKHRoaXMpKS5zZXRF cnJvckhhbmRsZXIodGhpcy5lcnJvckhhbmRsZXIuYmluZCh0aGlzKSkuc2V0Rmly c3RSZXNwb25zZUNhbGxiYWNrKHRoaXMuZmlyc3RSZXNwb25zZUNhbGxiYWNrLmJp bmQodGhpcykpLnNlbmQoKTt9ZWxzZXt3LmhhbmRsZWQ9dHJ1ZTt0aGlzLndhaXRp bmdGb3JBdXg9dy5zaWRlY29sO3ZhciB5PSEhdy5pZnJhbWUsej1uZXcgaigpLnNl dE9wdGlvbigndXNlSWZyYW1lVHJhbnNwb3J0Jyx5KS5zZXRVUkkobmV3IHAody5l bmRwb2ludCkpLnNldFJlYWRPbmx5KHRydWUpLnNldE1ldGhvZCgnR0VUJykuc2V0 RGF0YSh3KS5zZXRIYW5kbGVyKHRoaXMub25SZXNwb25zZS5iaW5kKHRoaXMpKS5z ZXRFcnJvckhhbmRsZXIodGhpcy5lcnJvckhhbmRsZXIuYmluZCh0aGlzKSkuc2V0 RmluYWxseUhhbmRsZXIodGhpcy5maW5hbGx5SGFuZGxlci5iaW5kKHRoaXMpKTt0 aGlzLnJlcXVlc3Q9ejt6LnNlbmQoKTt9fX0sb25TaWRlUmVzcG9uc2U6ZnVuY3Rp b24odil7dmFyIHc9di5nZXRQYXlsb2FkKCk7aWYodyYmdGhpcy5hdXhpbGlhcnlJ RCl0aGlzLnJlY2VpdmVkQXV4KHcpO30scmVjZWl2ZWRBdXg6ZnVuY3Rpb24odil7 IXRoaXMud2FpdGluZ0ZvckF1eDt0aGlzLndhaXRpbmdGb3JBdXg9ZmFsc2U7bC5z ZXRDb250ZW50KHEodGhpcy5hdXhpbGlhcnlJRCksbSh2KSk7fSxvblJlc3BvbnNl OmZ1bmN0aW9uKHYpe3ZhciB3PXYuZ2V0UGF5bG9hZCgpO2lmKHcucmVkaXJlY3Qp e3Qody5yZWRpcmVjdCk7fWVsc2V7dmFyIHg9dy5odG1sfHx3O2wuc2V0Q29udGVu dChxKHRoaXMuY2FudmFzSUQpLG0oeCkpO2lmKHcuc2lkZV9odG1sJiZ0aGlzLmF1 eGlsaWFyeUlEKXRoaXMucmVjZWl2ZWRBdXgody5zaWRlX2h0bWwpO2lmKHRoaXMu aGVhZGVySUQmJiF3LmtlZXBfaGVhZGVyKXt2YXIgeT1xKHRoaXMuaGVhZGVySUQp O2wuc2V0Q29udGVudCh5LG0ody5oZWFkZXJfaHRtbHx8JycpKTtrLmNvbmRpdGlv blNob3coeSx3LmhlYWRlcl9odG1sKTt9aWYody50b29sYmFyX2h0bWwmJnRoaXMu dG9vbGJhcklEKWwuc2V0Q29udGVudChxKHRoaXMudG9vbGJhcklEKSxtKHcudG9v bGJhcl9odG1sKSk7aWYody5qcykobmV3IEZ1bmN0aW9uKHcuanMpKSgpO2suY29u ZGl0aW9uQ2xhc3MoJ2NvbnRlbnRDb2wnLCdoYXNSaWdodENvbCcsdGhpcy5hdXhp bGlhcnlJRCYmIXcubm9SaWdodFNpZGUpO3ZhciB6PXMoJ3JpZ2h0Q29sJyk7aWYo eiYmdy5ub1JpZ2h0U2lkZSlsLmVtcHR5KHopO312YXIgYWE9di5nZXRSZXF1ZXN0 KCkuZ2V0RGF0YSgpO2guaW5mb3JtKG4uTkFWSUdBVElPTl9DT01QTEVURUQsYWEu a2V5KTt9LGVycm9ySGFuZGxlcjpmdW5jdGlvbih2KXtpLnZlcmJvc2VFcnJvckhh bmRsZXIodik7aC5pbmZvcm0obi5OQVZJR0FUSU9OX0ZBSUxFRCk7dGhpcy5yZXF1 ZXN0PW51bGw7fSxmaXJzdFJlc3BvbnNlQ2FsbGJhY2s6ZnVuY3Rpb24odil7d2lu ZG93LnNjcm9sbFRvKDAsMCk7aC5pbmZvcm0obi5OQVZJR0FUSU9OX0ZJUlNUX1JF U1BPTlNFKTt9LGZpbmFsbHlIYW5kbGVyOmZ1bmN0aW9uKHYpe3RoaXMucmVxdWVz dD1udWxsO28udHJhbnNpdGlvbkNvbXBsZXRlKHRydWUpO2guaW5mb3JtKG4uTkFW SUdBVElPTl9DT01QTEVURUQpO319KTtlLmV4cG9ydHM9dTt9KTsKX19kKCJDb250 ZXh0dWFsTGF5ZXIiLFsiYXJyYXktZXh0ZW5zaW9ucyIsImV2ZW50LWV4dGVuc2lv bnMiLCJBcmJpdGVyIiwiQVJJQSIsIkNsYXNzIiwiQ29udGV4dHVhbFRoaW5nIiwi Q1NTIiwiRGF0YVN0b3JlIiwiRE9NIiwiTGF5ZXIiLCJMYXllckhpZGVPblRyYW5z aXRpb24iLCJMb2NhbGUiLCJQYXJlbnQiLCJTdHlsZSIsIlZlY3RvciIsImNvcHlQ cm9wZXJ0aWVzIiwiZ2V0T3ZlcmxheVpJbmRleCJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7YignZXZlbnQtZXh0ZW5zaW9ucycp O3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0FSSUEnKSxpPWIoJ0NsYXNzJyksaj1i KCdDb250ZXh0dWFsVGhpbmcnKSxrPWIoJ0NTUycpLGw9YignRGF0YVN0b3JlJyks bT1iKCdET00nKSxuPWIoJ0xheWVyJyksbz1iKCdMYXllckhpZGVPblRyYW5zaXRp b24nKSxwPWIoJ0xvY2FsZScpLHE9YignUGFyZW50Jykscj1iKCdTdHlsZScpLHM9 YignVmVjdG9yJyksdD1iKCdjb3B5UHJvcGVydGllcycpLHU9YignZ2V0T3Zlcmxh eVpJbmRleCcpO2Z1bmN0aW9uIHYoYWEpe3JldHVybiBhYS5nZXRQb3NpdGlvbigp PT09J2xlZnQnfHwoYWEuaXNWZXJ0aWNhbCgpJiZhYS5nZXRBbGlnbm1lbnQoKT09 PSdyaWdodCcpO31mdW5jdGlvbiB3KGFhKXt2YXIgYmE9YWEucGFyZW50Tm9kZTtp ZihiYSl7dmFyIGNhPXIuZ2V0KGJhLCdwb3NpdGlvbicpO2lmKGNhPT09J3N0YXRp Yycpe2lmKGJhPT09ZG9jdW1lbnQuYm9keSl7YmE9ZG9jdW1lbnQuZG9jdW1lbnRF bGVtZW50O31lbHNlIGJhPXcoYmEpO31lbHNlIHJldHVybiBiYTt9ZWxzZSBiYT1k b2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGJhO31mdW5jdGlvbiB4KGFh LGJhKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxhYSxiYSk7fXZhciB5PVtd O2cuc3Vic2NyaWJlKCdyZWZsb3cnLGZ1bmN0aW9uKCl7eS5mb3JFYWNoKGZ1bmN0 aW9uKGFhKXtpZihhYS51cGRhdGVQb3NpdGlvbigpPT09ZmFsc2UpYWEuaGlkZSgp O30pO30pO2kuZXh0ZW5kKHgsbik7dCh4LnByb3RvdHlwZSx7X2NvbnRlbnRXcmFw cGVyOm51bGwsX2NvbnRlbnQ6bnVsbCxfY29udGV4dE5vZGU6bnVsbCxfY29udGV4

dFNlbGVjdG9yOm51bGwsX3BhcmVudExheWVyOm51bGwsX3BhcmVudFN1YnNjcmlw dGlvbjpudWxsLF9vcmllbnRhdGlvbjpudWxsLF9vcmllbnRhdGlvbkNsYXNzOm51 bGwsX2NvbmZpZ3VyZTpmdW5jdGlvbihhYSxiYSl7dGhpcy5wYXJlbnQuX2NvbmZp Z3VyZShhYSxiYSk7aWYoYWEuY29udGV4dCl7dGhpcy5zZXRDb250ZXh0KGFhLmNv bnRleHQpO31lbHNlIGlmKGFhLmNvbnRleHRJRCl7dGhpcy5fc2V0Q29udGV4dElE KGFhLmNvbnRleHRJRCk7fWVsc2UgaWYoYWEuY29udGV4dFNlbGVjdG9yKXRoaXMu X3NldENvbnRleHRTZWxlY3RvcihhYS5jb250ZXh0U2VsZWN0b3IpO2FhLnBvc2l0 aW9uJiZ0aGlzLnNldFBvc2l0aW9uKGFhLnBvc2l0aW9uKTthYS5hbGlnbm1lbnQm JnRoaXMuc2V0QWxpZ25tZW50KGFhLmFsaWdubWVudCk7YWEub2Zmc2V0WCYmdGhp cy5zZXRPZmZzZXRYKGFhLm9mZnNldFgpO2FhLm9mZnNldFkmJnRoaXMuc2V0T2Zm c2V0WShhYS5vZmZzZXRZKTt0aGlzLl9jb250ZW50PWJhO30sX2dldERlZmF1bHRC ZWhhdmlvcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQuX2dldERlZmF1 bHRCZWhhdmlvcnMoKS5jb25jYXQoW29dKTt9LF9idWlsZFdyYXBwZXI6ZnVuY3Rp b24oYWEsYmEpe3RoaXMuX2NvbnRlbnRXcmFwcGVyPW0uY3JlYXRlKCdkaXYnLHtj bGFzc05hbWU6J3VpQ29udGV4dHVhbExheWVyJ30sYmEpO3JldHVybiBtLmNyZWF0 ZSgnZGl2Jyx7Y2xhc3NOYW1lOid1aUNvbnRleHR1YWxMYXllclBvc2l0aW9uZXIn fSx0aGlzLl9jb250ZW50V3JhcHBlcik7fSxnZXRJbnNlcnRQYXJlbnQ6ZnVuY3Rp b24oKXt2YXIgYWE9dGhpcy5faW5zZXJ0UGFyZW50O2lmKCFhYSl7dmFyIGJhPXRo aXMuZ2V0Q29udGV4dCgpO2lmKGJhKWFhPXEuYnlDbGFzcyhiYSwndWlDb250ZXh0 dWFsTGF5ZXJQYXJlbnQnKTt9cmV0dXJuIGFhfHx0aGlzLnBhcmVudC5nZXRJbnNl cnRQYXJlbnQoKTt9LHNldENvbnRlbnQ6ZnVuY3Rpb24oYWEpe3RoaXMuX2NvbnRl bnQ9YWE7bS5zZXRDb250ZW50KHRoaXMuX2NvbnRlbnRXcmFwcGVyLHRoaXMuX2Nv bnRlbnQpO3RoaXMuX3Nob3duJiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7cmV0dXJu IHRoaXM7fSxzZXRDb250ZXh0OmZ1bmN0aW9uKGFhKXt0aGlzLl9jb250ZXh0Tm9k ZT1hYTt0aGlzLl9jb250ZXh0U2VsZWN0b3I9dGhpcy5fY29udGV4dFNjcm9sbFBh cmVudD1udWxsO2lmKHRoaXMuX3Nob3duKXtqLnJlZ2lzdGVyKHRoaXMuZ2V0Um9v dCgpLHRoaXMuX2NvbnRleHROb2RlKTt0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7fXRo aXMuX3NldFBhcmVudFN1YnNjcmlwdGlvbigpO2guc2V0UG9wdXAodGhpcy5nZXRD YXVzYWxFbGVtZW50KCksdGhpcy5nZXRSb290KCkpO3JldHVybiB0aGlzO30sX3Nl dENvbnRleHRJRDpmdW5jdGlvbihhYSl7dGhpcy5fY29udGV4dFNlbGVjdG9yPScj JythYTt0aGlzLl9jb250ZXh0Tm9kZT1udWxsO30sX3NldENvbnRleHRTZWxlY3Rv cjpmdW5jdGlvbihhYSl7dGhpcy5fY29udGV4dFNlbGVjdG9yPWFhO3RoaXMuX2Nv bnRleHROb2RlPW51bGw7fSxnZXRDYXVzYWxFbGVtZW50OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMucGFyZW50LmdldENhdXNhbEVsZW1lbnQoKXx8dGhpcy5nZXRDb250 ZXh0KCk7fSxfc2V0UGFyZW50U3Vic2NyaXB0aW9uOmZ1bmN0aW9uKCl7dmFyIGFh PXRoaXMuZ2V0Q29udGV4dCgpLGJhPW51bGw7d2hpbGUoYWEhPT1udWxsKXtiYT1s LmdldChhYSwnbGF5ZXInKTtpZihiYSlicmVhazthYT1hYS5wYXJlbnROb2RlO31p ZihiYT09PXRoaXMuX3BhcmVudExheWVyKXJldHVybjtpZih0aGlzLl9wYXJlbnRM YXllciYmdGhpcy5fcGFyZW50U3Vic2NyaXB0aW9uKXt0aGlzLl9wYXJlbnRMYXll ci51bnN1YnNjcmliZSh0aGlzLl9wYXJlbnRTdWJzY3JpcHRpb24pO3RoaXMuX3Bh cmVudFN1YnNjcmlwdGlvbj1udWxsO31pZihiYSl0aGlzLl9wYXJlbnRTdWJzY3Jp cHRpb249YmEuc3Vic2NyaWJlKCdoaWRlJyx0aGlzLmhpZGUuYmluZCh0aGlzKSk7 dGhpcy5fcGFyZW50TGF5ZXI9YmE7fSxzZXRQb3NpdGlvbjpmdW5jdGlvbihhYSl7 dGhpcy5fZ2V0T3JpZW50YXRpb24oKS5zZXREZWZhdWx0UG9zaXRpb24oYWEpO3Ro aXMuX3Nob3duJiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7cmV0dXJuIHRoaXM7fSxz ZXRBbGlnbm1lbnQ6ZnVuY3Rpb24oYWEpe3RoaXMuX2dldE9yaWVudGF0aW9uKCku c2V0RGVmYXVsdEFsaWdubWVudChhYSk7dGhpcy5fc2hvd24mJnRoaXMudXBkYXRl UG9zaXRpb24oKTtyZXR1cm4gdGhpczt9LHNldE9mZnNldFg6ZnVuY3Rpb24oYWEp e3RoaXMuX2dldE9yaWVudGF0aW9uKCkuc2V0RGVmYXVsdE9mZnNldFgoYWEpO3Ro aXMuX3Nob3duJiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7cmV0dXJuIHRoaXM7fSxz ZXRPZmZzZXRZOmZ1bmN0aW9uKGFhKXt0aGlzLl9nZXRPcmllbnRhdGlvbigpLnNl dERlZmF1bHRPZmZzZXRZKGFhKTt0aGlzLl9zaG93biYmdGhpcy51cGRhdGVQb3Np dGlvbigpO3JldHVybiB0aGlzO30sX2dldE9yaWVudGF0aW9uOmZ1bmN0aW9uKCl7 aWYoIXRoaXMuX29yaWVudGF0aW9uKXRoaXMuX29yaWVudGF0aW9uPW5ldyB6KCk7 cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uO30sX2dldENvbnRlbnRSb290OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRXcmFwcGVyO30sZ2V0Q29udGVudDpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50O30sZ2V0Q29udGV4dDpmdW5j dGlvbigpe2lmKCF0aGlzLl9jb250ZXh0Tm9kZSl0aGlzLl9jb250ZXh0Tm9kZT1t LmZpbmQoZG9jdW1lbnQsdGhpcy5fY29udGV4dFNlbGVjdG9yKTtyZXR1cm4gdGhp cy5fY29udGV4dE5vZGU7fSxnZXRDb250ZXh0U2Nyb2xsUGFyZW50OmZ1bmN0aW9u

KCl7aWYoIXRoaXMuX2NvbnRleHRTY3JvbGxQYXJlbnQpdGhpcy5fY29udGV4dFNj cm9sbFBhcmVudD1yLmdldFNjcm9sbFBhcmVudCh0aGlzLmdldENvbnRleHQoKSk7 cmV0dXJuIHRoaXMuX2NvbnRleHRTY3JvbGxQYXJlbnQ7fSxzZXRJbnNlcnRQYXJl bnQ6ZnVuY3Rpb24oYWEpe3RoaXMuX2luc2VydFNjcm9sbFBhcmVudD1udWxsO3Jl dHVybiB0aGlzLnBhcmVudC5zZXRJbnNlcnRQYXJlbnQoYWEpO30sZ2V0SW5zZXJ0 U2Nyb2xsUGFyZW50OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2luc2VydFNjcm9sbFBh cmVudCl0aGlzLl9pbnNlcnRTY3JvbGxQYXJlbnQ9ci5nZXRTY3JvbGxQYXJlbnQo dGhpcy5nZXRJbnNlcnRQYXJlbnQoKSk7cmV0dXJuIHRoaXMuX2luc2VydFNjcm9s bFBhcmVudDt9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5zaG93KCk7aWYo dGhpcy5fc2hvd24pe2oucmVnaXN0ZXIodGhpcy5nZXRSb290KCksdGhpcy5nZXRD b250ZXh0KCkpO3kucHVzaCh0aGlzKTt0aGlzLl9yZXNpemVMaXN0ZW5lcj10aGlz Ll9yZXNpemVMaXN0ZW5lcnx8RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyx0 aGlzLnVwZGF0ZVBvc2l0aW9uLmJpbmQodGhpcykpO31yZXR1cm4gdGhpczt9LGhp ZGU6ZnVuY3Rpb24oKXtqLnJlbW92ZSh0aGlzLmdldFJvb3QoKSk7eS5yZW1vdmUo dGhpcyk7dGhpcy5fcmVzaXplTGlzdGVuZXImJnRoaXMuX3Jlc2l6ZUxpc3RlbmVy LnJlbW92ZSgpO3RoaXMuX3Jlc2l6ZUxpc3RlbmVyPW51bGw7cmV0dXJuIHRoaXMu cGFyZW50LmhpZGUoKTt9LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGFh PXRoaXMuZ2V0Q29udGV4dCgpO2lmKCFhYSlyZXR1cm4gZmFsc2U7dmFyIGJhPXIu aXNGaXhlZChhYSkmJiFyLmlzRml4ZWQodGhpcy5nZXRJbnNlcnRQYXJlbnQoKSk7 aWYoIWJhJiYhYWEub2Zmc2V0UGFyZW50KXJldHVybiBmYWxzZTt2YXIgY2E9dGhp cy5fZ2V0T3JpZW50YXRpb24oKTt0aGlzLmluZm9ybSgnYWRqdXN0JyxjYS5yZXNl dCgpKTtpZighY2EuaXNWYWxpZCgpKXJldHVybiBmYWxzZTt0aGlzLl91cGRhdGVX cmFwcGVyUG9zaXRpb24oY2EpO3RoaXMuX3VwZGF0ZVdyYXBwZXJDbGFzcyhjYSk7 dmFyIGRhPXRoaXMuZ2V0Um9vdCgpO2suY29uZGl0aW9uQ2xhc3MoZGEsJ3VpQ29u dGV4dHVhbExheWVyUG9zaXRpb25lckZpeGVkJyxiYSk7dmFyIGVhLGZhLGdhPWJh Pyd2aWV3cG9ydCc6J2RvY3VtZW50JyxoYT1iYT9kb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQ6dyhkYSk7aWYoaGE9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe2Vh PW5ldyBzKDAsMCk7ZmE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdp ZHRoO31lbHNlIGlmKCFkYS5vZmZzZXRQYXJlbnQpe3JldHVybiBmYWxzZTt9ZWxz ZXtlYT1zLmdldEVsZW1lbnRQb3NpdGlvbihoYSxnYSk7ZmE9aGEub2Zmc2V0V2lk dGg7aWYoaGEhPT1kb2N1bWVudC5ib2R5KWVhPWVhLnN1YihuZXcgcyhoYS5zY3Jv bGxMZWZ0LGhhLnNjcm9sbFRvcCkpO312YXIgaWE9cy5nZXRFbGVtZW50UG9zaXRp b24oYWEsZ2EpLGphPWlhLngtZWEueCxrYT1pYS55LWVhLnksbGE9cC5pc1JUTCgp O2lmKGNhLmdldFBvc2l0aW9uKCk9PT0nYmVsb3cnKWthKz1hYS5vZmZzZXRIZWln aHQ7aWYoKGNhLmdldFBvc2l0aW9uKCk9PT0ncmlnaHQnfHwoY2EuaXNWZXJ0aWNh bCgpJiZjYS5nZXRBbGlnbm1lbnQoKT09PSdyaWdodCcpKSE9bGEpamErPWFhLm9m ZnNldFdpZHRoO3ZhciBtYT1jYS5nZXRPZmZzZXRYKCk7aWYoY2EuaXNWZXJ0aWNh bCgpJiZjYS5nZXRBbGlnbm1lbnQoKT09PSdjZW50ZXInKW1hKz0oYWEub2Zmc2V0 V2lkdGgtdGhpcy5fY29udGVudC5vZmZzZXRXaWR0aCkvMjtpZihsYSltYSo9LTE7 dmFyIG5hPSdsZWZ0JyxvYT1qYSttYTtpZih2KGNhKSE9PWxhKXtuYT0ncmlnaHQn O29hPWZhLW9hO31yLnNldChkYSxuYSxvYSsncHgnKTtyLnNldChkYSxuYT09PSds ZWZ0Jz8ncmlnaHQnOidsZWZ0JywnJyk7dmFyIHBhPXRoaXMuZ2V0SW5zZXJ0U2Ny b2xsUGFyZW50KCkscWE7aWYocGEhPT13aW5kb3cpe3FhPXBhLmNsaWVudFdpZHRo O31lbHNlIHFhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDt2 YXIgcmE9cy5nZXRFbGVtZW50UG9zaXRpb24oZGEpLng7aWYobmE9PT0nbGVmdCcp e2lmKHFhLXJhPjApe3Iuc2V0KGRhLCd3aWR0aCcsKHFhLXJhKSsncHgnKTt9ZWxz ZSByLnNldChkYSwnd2lkdGgnLCcnKTt9ZWxzZSByLnNldChkYSwnd2lkdGgnLHJh K2RhLm9mZnNldFdpZHRoKydweCcpO3Iuc2V0KGRhLCd0b3AnLChrYStjYS5nZXRP ZmZzZXRZKCkpKydweCcpO3ZhciBzYT11KGFhLHRoaXMuZ2V0SW5zZXJ0UGFyZW50 KCkpO3Iuc2V0KGRhLCd6LWluZGV4JyxzYT4yMDA/c2E6JycpO3RoaXMuaW5mb3Jt KCdyZXBvc2l0aW9uJyxjYSk7cmV0dXJuIHRydWU7fSxfdXBkYXRlV3JhcHBlclBv c2l0aW9uOmZ1bmN0aW9uKGFhKXt2YXIgYmE9YWEuZ2V0UG9zaXRpb24oKT09PSdh Ym92ZSc7ci5zZXQodGhpcy5fY29udGVudFdyYXBwZXIsJ2JvdHRvbScsYmE/JzAn Om51bGwpO3ZhciBjYT1wLmlzUlRMKCk/J2xlZnQnOidyaWdodCcsZGE9dihhYSk7 ci5zZXQodGhpcy5fY29udGVudFdyYXBwZXIsY2EsZGE/JzAnOm51bGwpO30sX3Vw ZGF0ZVdyYXBwZXJDbGFzczpmdW5jdGlvbihhYSl7dmFyIGJhPWFhLmdldENsYXNz TmFtZSgpO2lmKGJhPT09dGhpcy5fb3JpZW50YXRpb25DbGFzcylyZXR1cm47aWYo dGhpcy5fb3JpZW50YXRpb25DbGFzcylrLnJlbW92ZUNsYXNzKHRoaXMuX2NvbnRl bnRXcmFwcGVyLHRoaXMuX29yaWVudGF0aW9uQ2xhc3MpO3RoaXMuX29yaWVudGF0 aW9uQ2xhc3M9YmE7ay5hZGRDbGFzcyh0aGlzLl9jb250ZW50V3JhcHBlcixiYSk7

fSxzaW11bGF0ZU9yaWVudGF0aW9uOmZ1bmN0aW9uKGFhLGJhKXt2YXIgY2E9YWEu Z2V0Q2xhc3NOYW1lKCk7aWYoY2E9PT10aGlzLl9vcmllbnRhdGlvbkNsYXNzKXty ZXR1cm4gYmEoKTt9ZWxzZXtpZih0aGlzLl9vcmllbnRhdGlvbkNsYXNzKWsucmVt b3ZlQ2xhc3ModGhpcy5fY29udGVudFdyYXBwZXIsdGhpcy5fb3JpZW50YXRpb25D bGFzcyk7ay5hZGRDbGFzcyh0aGlzLl9jb250ZW50V3JhcHBlcixjYSk7dmFyIGRh PWJhKCk7ay5yZW1vdmVDbGFzcyh0aGlzLl9jb250ZW50V3JhcHBlcixjYSk7aWYo dGhpcy5fb3JpZW50YXRpb25DbGFzcylrLmFkZENsYXNzKHRoaXMuX2NvbnRlbnRX cmFwcGVyLHRoaXMuX29yaWVudGF0aW9uQ2xhc3MpO3JldHVybiBkYTt9fSxkZXN0 cm95OmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuZGVzdHJveSgpO3RoaXMuX2NvbnRl bnRXcmFwcGVyPW51bGw7dGhpcy5fY29udGVudD1udWxsO3JldHVybiB0aGlzO319 KTtmdW5jdGlvbiB6KCl7dGhpcy5fZGVmYXVsdD17X3Bvc2l0aW9uOidhYm92ZScs X2FsaWdubWVudDonbGVmdCcsX29mZnNldFg6MCxfb2Zmc2V0WTowLF92YWxpZDp0 cnVlfTt0aGlzLnJlc2V0KCk7fXouT1BQT1NJVEU9e2Fib3ZlOidiZWxvdycsYmVs b3c6J2Fib3ZlJyxsZWZ0OidyaWdodCcscmlnaHQ6J2xlZnQnfTt0KHoucHJvdG90 eXBlLHtzZXRQb3NpdGlvbjpmdW5jdGlvbihhYSl7dGhpcy5fcG9zaXRpb249YWE7 cmV0dXJuIHRoaXM7fSxzZXRBbGlnbm1lbnQ6ZnVuY3Rpb24oYWEpe3RoaXMuX2Fs aWdubWVudD1hYTtyZXR1cm4gdGhpczt9LGdldE9wcG9zaXRlUG9zaXRpb246ZnVu Y3Rpb24oKXtyZXR1cm4gei5PUFBPU0lURVt0aGlzLmdldFBvc2l0aW9uKCldO30s aW52YWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuX3ZhbGlkPWZhbHNlO3JldHVybiB0 aGlzO30sZ2V0UG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRp b258fCdhYm92ZSc7fSxnZXRBbGlnbm1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fYWxpZ25tZW50fHwnbGVmdCc7fSxnZXRPZmZzZXRYOmZ1bmN0aW9uKCl7dmFy IGFhPXRoaXMuX29mZnNldFh8fDA7aWYoIXRoaXMuaXNWZXJ0aWNhbCgpKXtpZih0 aGlzLl9kZWZhdWx0Ll9wb3NpdGlvbiE9PXRoaXMuX3Bvc2l0aW9uKWFhKj0tMTt9 ZWxzZSBpZih0aGlzLl9kZWZhdWx0Ll9hbGlnbm1lbnQhPT10aGlzLl9hbGlnbm1l bnQpYWEqPS0xO3JldHVybiBhYTt9LGdldE9mZnNldFk6ZnVuY3Rpb24oKXt2YXIg YWE9dGhpcy5fb2Zmc2V0WXx8MDtpZih0aGlzLmlzVmVydGljYWwoKSYmdGhpcy5f ZGVmYXVsdC5fcG9zaXRpb24hPT10aGlzLl9wb3NpdGlvbilhYSo9LTE7cmV0dXJu IGFhO30sZ2V0Q2xhc3NOYW1lOmZ1bmN0aW9uKCl7dmFyIGFhPXRoaXMuZ2V0QWxp Z25tZW50KCksYmE9dGhpcy5nZXRQb3NpdGlvbigpO2lmKGJhPT09J2JlbG93Jyl7 aWYoYWE9PT0nbGVmdCcpe3JldHVybiAndWlDb250ZXh0dWFsTGF5ZXJCZWxvd0xl ZnQnO31lbHNlIGlmKGFhPT09J3JpZ2h0Jyl7cmV0dXJuICd1aUNvbnRleHR1YWxM YXllckJlbG93UmlnaHQnO31lbHNlIHJldHVybiAndWlDb250ZXh0dWFsTGF5ZXJC ZWxvd0NlbnRlcic7fWVsc2UgaWYoYmE9PT0nYWJvdmUnKXtpZihhYT09PSdsZWZ0 Jyl7cmV0dXJuICd1aUNvbnRleHR1YWxMYXllckFib3ZlTGVmdCc7fWVsc2UgaWYo YWE9PT0ncmlnaHQnKXtyZXR1cm4gJ3VpQ29udGV4dHVhbExheWVyQWJvdmVSaWdo dCc7fWVsc2UgcmV0dXJuICd1aUNvbnRleHR1YWxMYXllckFib3ZlQ2VudGVyJzt9 ZWxzZSBpZihiYT09PSdsZWZ0Jyl7cmV0dXJuICd1aUNvbnRleHR1YWxMYXllckxl ZnQnO31lbHNlIHJldHVybiAndWlDb250ZXh0dWFsTGF5ZXJSaWdodCc7fSxpc1Zh bGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbGlkO30saXNWZXJ0aWNhbDpm dW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBvc2l0aW9uKCk9PT0nYWJvdmUnfHx0 aGlzLmdldFBvc2l0aW9uKCk9PT0nYmVsb3cnO30scmVzZXQ6ZnVuY3Rpb24oYWEs YmEpe3QodGhpcyx0aGlzLl9kZWZhdWx0KTtyZXR1cm4gdGhpczt9LHNldERlZmF1 bHRQb3NpdGlvbjpmdW5jdGlvbihhYSl7dGhpcy5fZGVmYXVsdC5fcG9zaXRpb249 YWE7cmV0dXJuIHRoaXM7fSxzZXREZWZhdWx0QWxpZ25tZW50OmZ1bmN0aW9uKGFh KXt0aGlzLl9kZWZhdWx0Ll9hbGlnbm1lbnQ9YWE7cmV0dXJuIHRoaXM7fSxzZXRE ZWZhdWx0T2Zmc2V0WDpmdW5jdGlvbihhYSl7dGhpcy5fZGVmYXVsdC5fb2Zmc2V0 WD1hYTtyZXR1cm4gdGhpczt9LHNldERlZmF1bHRPZmZzZXRZOmZ1bmN0aW9uKGFh KXt0aGlzLl9kZWZhdWx0Ll9vZmZzZXRZPWFhO3JldHVybiB0aGlzO319KTtlLmV4 cG9ydHM9eDt9KTsKX19kKCJLZXlTdGF0dXMiLFsiZXZlbnQtZXh0ZW5zaW9ucyJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFy IGc9bnVsbCxoPW51bGw7ZnVuY3Rpb24gaSgpe2lmKCFoKWg9RXZlbnQubGlzdGVu KHdpbmRvdywnYmx1cicsZnVuY3Rpb24oKXtnPW51bGw7aigpO30pO31mdW5jdGlv biBqKCl7aWYoaCl7aC5yZW1vdmUoKTtoPW51bGw7fX1FdmVudC5saXN0ZW4oZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LCdrZXlkb3duJyxmdW5jdGlvbihsKXtnPUV2 ZW50LmdldEtleUNvZGUobCk7aSgpO30sRXZlbnQuUHJpb3JpdHkuVVJHRU5UKTtF dmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdrZXl1cCcsZnVu Y3Rpb24obCl7Zz1udWxsO2ooKTt9LEV2ZW50LlByaW9yaXR5LlVSR0VOVCk7dmFy IGs9e2lzS2V5RG93bjpmdW5jdGlvbigpe3JldHVybiAhIWc7fSxnZXRLZXlEb3du Q29kZTpmdW5jdGlvbigpe3JldHVybiBnO319O2UuZXhwb3J0cz1rO30pOwpfX2Qo

Ik1lbnUiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJDU1MiLCJEYXRh U3RvcmUiLCJET00iLCJIVE1MIiwiS2V5cyIsIlBhcmVudCIsIlJ1biIsIlN0eWxl IiwiVXNlckFnZW50IiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0ZXInKSxo PWIoJ0NTUycpLGk9YignRGF0YVN0b3JlJyksaj1iKCdET00nKSxrPWIoJ0hUTUwn KSxsPWIoJ0tleXMnKSxtPWIoJ1BhcmVudCcpLG49YignUnVuJyksbz1iKCdTdHls ZScpLHA9YignVXNlckFnZW50JykscT1iKCdjb3B5UHJvcGVydGllcycpLHI9bnVs bCxzPSdtZW51Om1vdXNlb3ZlcicsdD1udWxsO2Z1bmN0aW9uIHUoY2Epe2lmKGgu aGFzQ2xhc3MoY2EsJ3VpTWVudUNvbnRhaW5lcicpKXJldHVybiBjYTtyZXR1cm4g bS5ieUNsYXNzKGNhLCd1aU1lbnUnKTt9ZnVuY3Rpb24gdihjYSl7cmV0dXJuIG0u YnlDbGFzcyhjYSwndWlNZW51SXRlbScpO31mdW5jdGlvbiB3KGNhKXtpZihkb2N1 bWVudC5hY3RpdmVFbGVtZW50KXt2YXIgZGE9dihkb2N1bWVudC5hY3RpdmVFbGVt ZW50KTtyZXR1cm4gY2EuaW5kZXhPZihkYSk7fXJldHVybiAtMTt9ZnVuY3Rpb24g eChjYSl7cmV0dXJuIGouZmluZChjYSwnYS5pdGVtQW5jaG9yJyk7fWZ1bmN0aW9u IHkoY2Epe3JldHVybiBoLmhhc0NsYXNzKGNhLCdjaGVja2VkJyk7fWZ1bmN0aW9u IHooY2Epe3JldHVybiAhaC5oYXNDbGFzcyhjYSwnZGlzYWJsZWQnKSYmby5nZXQo Y2EsJ2Rpc3BsYXknKSE9PSdub25lJzt9ZnVuY3Rpb24gYWEoZXZlbnQpe3ZhciBj YT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKCFjYXx8IW0uYnlDbGFzcyhjYSwn dWlNZW51Jyl8fCFqLmlzTm9kZU9mVHlwZShjYSxbJ2lucHV0JywndGV4dGFyZWEn XSkpe3ZhciBkYT12KGV2ZW50LmdldFRhcmdldCgpKTtkYSYmci5mb2N1c0l0ZW0o ZGEpO319ZnVuY3Rpb24gYmEoY2Epe3AuZmlyZWZveCgpJiZ4KGNhKS5ibHVyKCk7 ci5pbmZvcm0oJ3NlbGVjdCcse21lbnU6dShjYSksaXRlbTpjYX0pO31uLm9uTG9h ZChmdW5jdGlvbigpe3ZhciBjYT17fTtjYS5jbGljaz1mdW5jdGlvbihldmVudCl7 dmFyIGRhPXYoZXZlbnQuZ2V0VGFyZ2V0KCkpO2lmKGRhJiZ6KGRhKSl7YmEoZGEp O3ZhciBlYT14KGRhKSxmYT1lYS5ocmVmLGdhPWVhLmdldEF0dHJpYnV0ZSgncmVs Jyk7cmV0dXJuIChnYSYmZ2EhPT0naWdub3JlJyl8fChmYSYmZmEuY2hhckF0KGZh Lmxlbmd0aC0xKSE9PScjJyk7fX07Y2Eua2V5ZG93bj1mdW5jdGlvbihldmVudCl7 dmFyIGRhPWV2ZW50LmdldFRhcmdldCgpO2lmKGV2ZW50LmdldE1vZGlmaWVycygp LmFueSlyZXR1cm47aWYoIXR8fGouaXNOb2RlT2ZUeXBlKGRhLFsnaW5wdXQnLCd0 ZXh0YXJlYSddKSlyZXR1cm47dmFyIGVhPUV2ZW50LmdldEtleUNvZGUoZXZlbnQp LGZhO3N3aXRjaChlYSl7Y2FzZSBsLlVQOmNhc2UgbC5ET1dOOnZhciBnYT1yLmdl dEVuYWJsZWRJdGVtcyh0KTtmYT13KGdhKTtyLmZvY3VzSXRlbShnYVtmYSsoZWE9 PT1sLlVQPy0xOjEpXSk7cmV0dXJuIGZhbHNlO2Nhc2UgbC5TUEFDRTp2YXIgaGE9 dihkYSk7aWYoaGEpe2JhKGhhKTtldmVudC5wcmV2ZW50KCk7fWJyZWFrO2RlZmF1 bHQ6dmFyIGlhPVN0cmluZy5mcm9tQ2hhckNvZGUoZWEpLnRvTG93ZXJDYXNlKCks amE9ci5nZXRFbmFibGVkSXRlbXModCk7ZmE9dyhqYSk7dmFyIGthPWZhLGxhPWph Lmxlbmd0aDt3aGlsZSgofmZhJiYoa2E9KytrYSVsYSkhPT1mYSl8fCghfmZhJiYr K2thPGxhKSl7dmFyIG1hPXIuZ2V0SXRlbUxhYmVsKGphW2thXSk7aWYobWEmJm1h LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpPT09aWEpe3IuZm9jdXNJdGVtKGphW2th XSk7cmV0dXJuIGZhbHNlO319fX07RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudCxjYSk7fSk7cj1lLmV4cG9ydHM9cShuZXcgZygpLHtmb2N1c0l0 ZW06ZnVuY3Rpb24oY2Epe2lmKGNhJiZ6KGNhKSl7dGhpcy5fcmVtb3ZlU2VsZWN0 ZWQodShjYSkpO2guYWRkQ2xhc3MoY2EsJ3NlbGVjdGVkJyk7eChjYSkuZm9jdXMo KTt9fSxnZXRFbmFibGVkSXRlbXM6ZnVuY3Rpb24oY2Epe3JldHVybiByLmdldEl0 ZW1zKGNhKS5maWx0ZXIoeik7fSxnZXRDaGVja2VkSXRlbXM6ZnVuY3Rpb24oY2Ep e3JldHVybiByLmdldEl0ZW1zKGNhKS5maWx0ZXIoeSk7fSxnZXRJdGVtczpmdW5j dGlvbihjYSl7cmV0dXJuIGouc2NyeShjYSwnbGkudWlNZW51SXRlbScpO30sZ2V0 SXRlbUxhYmVsOmZ1bmN0aW9uKGNhKXtyZXR1cm4gY2EuZ2V0QXR0cmlidXRlKCdk YXRhLWxhYmVsJywyKXx8Jyc7fSxpc0l0ZW1DaGVja2VkOmZ1bmN0aW9uKGNhKXty ZXR1cm4gaC5oYXNDbGFzcyhjYSwnY2hlY2tlZCcpO30scmVnaXN0ZXI6ZnVuY3Rp b24oY2EsZGEpe2NhPXUoY2EpO2lmKCFpLmdldChjYSxzKSlpLnNldChjYSxzLEV2 ZW50Lmxpc3RlbihjYSwnbW91c2VvdmVyJyxhYSkpO2lmKGRhIT09ZmFsc2UpdD1j YTt9LHNldEl0ZW1FbmFibGVkOmZ1bmN0aW9uKGNhLGRhKXtpZighZGEmJiFqLnNj cnkoY2EsJ3NwYW4uZGlzYWJsZWRBbmNob3InKVswXSlqLmFwcGVuZENvbnRlbnQo Y2Esai5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6ai5maW5kKGNhLCdhJykuY2xh c3NOYW1lKycgZGlzYWJsZWRBbmNob3InfSxrKHgoY2EpLmlubmVySFRNTCkpKTto LmNvbmRpdGlvbkNsYXNzKGNhLCdkaXNhYmxlZCcsIWRhKTt9LHRvZ2dsZUl0ZW06 ZnVuY3Rpb24oY2Epe3ZhciBkYT0hci5pc0l0ZW1DaGVja2VkKGNhKTtyLnNldEl0 ZW1DaGVja2VkKGNhLGRhKTt9LHNldEl0ZW1DaGVja2VkOmZ1bmN0aW9uKGNhLGRh KXtoLmNvbmRpdGlvbkNsYXNzKGNhLCdjaGVja2VkJyxkYSk7eChjYSkuc2V0QXR0

cmlidXRlKCdhcmlhLWNoZWNrZWQnLGRhKTt9LHVucmVnaXN0ZXI6ZnVuY3Rpb24o Y2Epe2NhPXUoY2EpO3ZhciBkYT1pLnJlbW92ZShjYSxzKTtkYSYmZGEucmVtb3Zl KCk7dD1udWxsO3RoaXMuX3JlbW92ZVNlbGVjdGVkKGNhKTt9LF9yZW1vdmVTZWxl Y3RlZDpmdW5jdGlvbihjYSl7ci5nZXRJdGVtcyhjYSkuZmlsdGVyKGZ1bmN0aW9u KGRhKXtyZXR1cm4gaC5oYXNDbGFzcyhkYSwnc2VsZWN0ZWQnKTt9KS5mb3JFYWNo KGZ1bmN0aW9uKGRhKXtoLnJlbW92ZUNsYXNzKGRhLCdzZWxlY3RlZCcpO30pO319 KTt9KTsKX19kKCJDb250ZXh0dWFsTGF5ZXJEaW1lbnNpb25zIixbIkRPTSIsIkxv Y2FsZSIsIlJlY3QiLCJWZWN0b3IiLCJWaWV3cG9ydEJvdW5kcyIsImdlIiwiZ2V0 T3ZlcmxheVpJbmRleCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdE T00nKSxoPWIoJ0xvY2FsZScpLGk9YignUmVjdCcpLGo9YignVmVjdG9yJyksaz1i KCdWaWV3cG9ydEJvdW5kcycpLGw9YignZ2UnKSxtPWIoJ2dldE92ZXJsYXlaSW5k ZXgnKSxuPXtnZXRWaWV3cG9ydFJlY3Q6ZnVuY3Rpb24obyl7dmFyIHA9bCgnZ2xv YmFsQ29udGFpbmVyJykscT1vLmdldENvbnRleHQoKSxyPShwJiZnLmNvbnRhaW5z KHAscSkpfHxtKHEpPDMwMCxzPWkuZ2V0Vmlld3BvcnRCb3VuZHMoKTtpZihyKXtz LnQrPWsuZ2V0VG9wKCk7aWYoaC5pc1JUTCgpKXtzLmwrPWsuZ2V0UmlnaHQoKTt9 ZWxzZSBzLnItPWsuZ2V0UmlnaHQoKTt9cmV0dXJuIHM7fSxnZXRMYXllclJlY3Q6 ZnVuY3Rpb24obyxwKXt2YXIgcT1vLmdldENvbnRleHQoKSxyPWouZ2V0RWxlbWVu dFBvc2l0aW9uKHEsJ3ZpZXdwb3J0Jykscz1vLnNpbXVsYXRlT3JpZW50YXRpb24o cCxmdW5jdGlvbigpe3JldHVybiBqLmdldEVsZW1lbnREaW1lbnNpb25zKG8uZ2V0 Q29udGVudCgpKTt9KSx0PXIueStwLmdldE9mZnNldFkoKTtpZihwLmdldFBvc2l0 aW9uKCk9PT0nYWJvdmUnKXt0LT1zLnk7fWVsc2UgaWYocC5nZXRQb3NpdGlvbigp PT09J2JlbG93Jyl0Kz1xLm9mZnNldEhlaWdodDt2YXIgdT1yLngrcC5nZXRPZmZz ZXRYKCk7aWYocC5pc1ZlcnRpY2FsKCkpe3ZhciB2PXAuZ2V0QWxpZ25tZW50KCk7 aWYodj09PSdjZW50ZXInKXt1Kz0ocS5vZmZzZXRXaWR0aC1zLngpLzI7fWVsc2Ug aWYoKHY9PT0ncmlnaHQnKSE9PWguaXNSVEwoKSl1Kz1xLm9mZnNldFdpZHRoLXMu eDt9ZWxzZSBpZigocC5nZXRQb3NpdGlvbigpPT09J3JpZ2h0JykhPT1oLmlzUlRM KCkpe3UrPXEub2Zmc2V0V2lkdGg7fWVsc2UgdS09cy54O3JldHVybiBuZXcgaSh0 LHUrcy54LHQrcy55LHUsJ3ZpZXdwb3J0Jyk7fX07ZS5leHBvcnRzPW47fSk7Cl9f ZCgiQ29udGV4dHVhbExheWVyQXV0b0ZsaXAiLFsiYXJyYXktZXh0ZW5zaW9ucyIs ImV2ZW50LWV4dGVuc2lvbnMiLCJDb250ZXh0dWFsTGF5ZXJEaW1lbnNpb25zIiwi RE9NIiwiVmVjdG9yIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7YignYXJyYXktZXh0ZW5zaW9ucycpO2IoJ2V2ZW50LWV4dGVuc2lvbnMn KTt2YXIgZz1iKCdDb250ZXh0dWFsTGF5ZXJEaW1lbnNpb25zJyksaD1iKCdET00n KSxpPWIoJ1ZlY3RvcicpLGo9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBr KGwpe3RoaXMuX2xheWVyPWw7fWooay5wcm90b3R5cGUse19zdWJzY3JpcHRpb246 bnVsbCxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5f bGF5ZXIuc3Vic2NyaWJlKCdhZGp1c3QnLHRoaXMuX2FkanVzdE9yaWVudGF0aW9u LmJpbmQodGhpcykpO2lmKHRoaXMuX2xheWVyLmlzU2hvd24oKSl0aGlzLl9sYXll ci51cGRhdGVQb3NpdGlvbigpO30sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuX3N1 YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO3RoaXMuX3N1YnNjcmlwdGlvbj1udWxs O2lmKHRoaXMuX2xheWVyLmlzU2hvd24oKSl0aGlzLl9sYXllci51cGRhdGVQb3Np dGlvbigpO30sX2FkanVzdE9yaWVudGF0aW9uOmZ1bmN0aW9uKGwsbSl7dmFyIG49 dGhpcy5fZ2V0VmFsaWRQb3NpdGlvbnMobSk7aWYoIW4ubGVuZ3RoKXttLmludmFs aWRhdGUoKTtyZXR1cm47fXZhciBvPWcuZ2V0Vmlld3BvcnRSZWN0KHRoaXMuX2xh eWVyKSxwPXRoaXMuX2dldFZhbGlkQWxpZ25tZW50cyhtKTtmb3IodmFyIHE9MDtx PHAubGVuZ3RoO3ErKyl7bS5zZXRBbGlnbm1lbnQocFtxXSk7Zm9yKHZhciByPTA7 cjxuLmxlbmd0aDtyKyspe20uc2V0UG9zaXRpb24obltyXSk7dmFyIHM9Zy5nZXRM YXllclJlY3QodGhpcy5fbGF5ZXIsbSk7aWYoby5jb250YWlucyhzKSlyZXR1cm47 fX1tLnNldFBvc2l0aW9uKG4uY29udGFpbnMoJ2JlbG93Jyk/J2JlbG93JzpuWzBd KS5zZXRBbGlnbm1lbnQocFswXSk7fSxfZ2V0VmFsaWRQb3NpdGlvbnM6ZnVuY3Rp b24obCl7dmFyIG09W2wuZ2V0UG9zaXRpb24oKSxsLmdldE9wcG9zaXRlUG9zaXRp b24oKV0sbj10aGlzLl9sYXllci5nZXRDb250ZXh0U2Nyb2xsUGFyZW50KCk7aWYo bj09PXdpbmRvd3x8bj09PWguZ2V0RG9jdW1lbnRTY3JvbGxFbGVtZW50KCkpcmV0 dXJuIG07dmFyIG89dGhpcy5fbGF5ZXIuZ2V0Q29udGV4dCgpLHA9aS5nZXRFbGVt ZW50UG9zaXRpb24obiwndmlld3BvcnQnKS55LHE9aS5nZXRFbGVtZW50UG9zaXRp b24obywndmlld3BvcnQnKS55O2lmKGwuaXNWZXJ0aWNhbCgpKXtyZXR1cm4gbS5m aWx0ZXIoZnVuY3Rpb24ocyl7aWYocz09PSdhYm92ZScpe3JldHVybiBxPj1wO31l bHNle3ZhciB0PXArbi5vZmZzZXRIZWlnaHQsdT1xK28ub2Zmc2V0SGVpZ2h0O3Jl dHVybiB1PD10O319KTt9ZWxzZXt2YXIgcj1wK24ub2Zmc2V0SGVpZ2h0O2lmKHE+ PXAmJnErby5vZmZzZXRIZWlnaHQ8PXIpe3JldHVybiBtO31lbHNlIHJldHVybiBb

XTt9fSxfZ2V0VmFsaWRBbGlnbm1lbnRzOmZ1bmN0aW9uKGwpe3ZhciBtPVsnbGVm dCcsJ2NlbnRlcicsJ3JpZ2h0J10sbj1sLmdldEFsaWdubWVudCgpLG89bS5pbmRl eE9mKG4pO2lmKG8+MCl7bS5zcGxpY2UobywxKTttLnVuc2hpZnQobik7fXJldHVy biBtO319KTtlLmV4cG9ydHM9azt9KTsKX19kKCJUb29sdGlwIixbImV2ZW50LWV4 dGVuc2lvbnMiLCJBUklBIiwiQXN5bmNSZXF1ZXN0IiwiY29weVByb3BlcnRpZXMi LCJDb250ZXh0dWFsTGF5ZXIiLCJDb250ZXh0dWFsTGF5ZXJBdXRvRmxpcCIsIkNT UyIsIkRhdGFTdG9yZSIsIkRPTSIsIlN0eWxlIiwiVVJJIiwidHgiXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FS SUEnKSxoPWIoJ0FzeW5jUmVxdWVzdCcpLGk9YignY29weVByb3BlcnRpZXMnKSxq PWIoJ0NvbnRleHR1YWxMYXllcicpLGs9YignQ29udGV4dHVhbExheWVyQXV0b0Zs aXAnKSxsPWIoJ0NTUycpLG09YignRGF0YVN0b3JlJyksbj1iKCdET00nKSxvPWIo J1N0eWxlJykscD1iKCdVUkknKSxxPWIoJ3R4Jykscj1udWxsLHM9bnVsbCx0PW51 bGwsdT1bXTtmdW5jdGlvbiB2KCl7aWYoIXMpe3Q9bi5jcmVhdGUoJ2Rpdicse2Ns YXNzTmFtZTondG9vbHRpcENvbnRlbnQnfSk7dmFyIGNhPW4uY3JlYXRlKCdpJyx7 Y2xhc3NOYW1lOidhcnJvdyd9KSxkYT1uLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1l Oid1aVRvb2x0aXBYJ30sW3QsY2FdKTtzPW5ldyBqKHt9LGRhKTtzLmVuYWJsZUJl aGF2aW9yKGspO319ZnVuY3Rpb24gdyhjYSl7cmV0dXJuIGkoe3Bvc2l0aW9uOmNh LmdldEF0dHJpYnV0ZSgnZGF0YS10b29sdGlwLXBvc2l0aW9uJyl8fCdhYm92ZScs YWxpZ25IOmNhLmdldEF0dHJpYnV0ZSgnZGF0YS10b29sdGlwLWFsaWduaCcpfHwn bGVmdCd9LG0uZ2V0KGNhLCd0b29sdGlwJykpO31mdW5jdGlvbiB4KGNhLGRhKXt2 YXIgZWE9dyhjYSk7bS5zZXQoY2EsJ3Rvb2x0aXAnLHtjb250ZW50OmRhLmNvbnRl bnR8fGVhLmNvbnRlbnQscG9zaXRpb246ZGEucG9zaXRpb258fGVhLnBvc2l0aW9u LGFsaWduSDpkYS5hbGlnbkh8fGVhLmFsaWduSH0pO2NhLnNldEF0dHJpYnV0ZSgn ZGF0YS1ob3ZlcicsJ3Rvb2x0aXAnKTt9ZnVuY3Rpb24geShjYSxkYSl7YmEuc2V0 KGNhLCJNZW11YXQuLi4iKTtuZXcgaChkYSkuc2V0SGFuZGxlcihmdW5jdGlvbihl YSl7YmEuc2V0KGNhLGVhLmdldFBheWxvYWQoKSk7fSkuc2V0RXJyb3JIYW5kbGVy KGJhZ29maG9sZGluZykuc2VuZCgpO312YXIgej0vKFxyXG58W1xyXG5dKS87ZnVu Y3Rpb24gYWEoY2Epe3JldHVybiBjYS5zcGxpdCh6KS5tYXAoZnVuY3Rpb24oZGEp e3JldHVybiB6LnRlc3QoZGEpP24uY3JlYXRlKCdicicpOmRhO30pO312YXIgYmE9 e3Byb2Nlc3M6ZnVuY3Rpb24oY2EsZGEpe2lmKCFuLmNvbnRhaW5zKGNhLGRhKSly ZXR1cm47aWYoY2EhPT1yKXt2YXIgZWE9Y2EuZ2V0QXR0cmlidXRlKCdkYXRhLXRv b2x0aXAtdXJpJyk7aWYoZWEpe2NhLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10b29s dGlwLXVyaScpO3koY2EsZWEpO312YXIgZmE9Y2EuZ2V0QXR0cmlidXRlKCd0aXRs ZScpO2lmKGZhKXtjYS5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywnJyk7dmFyIGdhPXco Y2EpOyFnYS5jb250ZW50JiZiYS5zZXQoY2EsZmEpO31iYS5zaG93KGNhKTt9fSxy ZW1vdmU6ZnVuY3Rpb24oY2Epe20ucmVtb3ZlKGNhLCd0b29sdGlwJyk7Y2EucmVt b3ZlQXR0cmlidXRlKCdkYXRhLWhvdmVyJyk7Y2EucmVtb3ZlQXR0cmlidXRlKCdk YXRhLXRvb2x0aXAtcG9zaXRpb24nKTtjYS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEt dG9vbHRpcC1hbGlnbmgnKTtjYT09PXImJmJhLmhpZGUoKTt9LGhpZGU6ZnVuY3Rp b24oKXtpZihyKXtzLmhpZGUoKTtyPW51bGw7d2hpbGUodS5sZW5ndGgpdS5wb3Ao KS5yZW1vdmUoKTt9fSxzZXQ6ZnVuY3Rpb24oY2EsZGEsZWEsZmEpe2lmKGVhfHxm YSl4KGNhLHtwb3NpdGlvbjplYSxhbGlnbkg6ZmF9KTtpZihkYSBpbnN0YW5jZW9m IHApe2lmKGNhPT09cil7eShjYSxkYSk7fWVsc2UgY2Euc2V0QXR0cmlidXRlKCdk YXRhLXRvb2x0aXAtdXJpJyxkYSk7fWVsc2V7aWYodHlwZW9mIGRhIT09J3N0cmlu ZycpZGE9bi5jcmVhdGUoJ2Rpdicse30sZGEpO3goY2Ese2NvbnRlbnQ6ZGF9KTtj YT09PXImJmJhLnNob3coY2EpO319LHNob3c6ZnVuY3Rpb24oY2Epe3YoKTtiYS5o aWRlKCk7dmFyIGRhPXcoY2EpO2lmKCFkYS5jb250ZW50KXJldHVybjt2YXIgZWE9 MCxmYT0wO2lmKGRhLnBvc2l0aW9uPT09J2xlZnQnfHxkYS5wb3NpdGlvbj09PSdy aWdodCcpe2ZhPShjYS5vZmZzZXRIZWlnaHQtMjApLzI7fWVsc2UgaWYoZGEuYWxp Z25IIT09J2NlbnRlcicpe3ZhciBnYT1jYS5vZmZzZXRXaWR0aDtpZihnYTwxOCll YT0oZ2EtMTgpLzIqKGRhLmFsaWduSD09PSdyaWdodCc/LTE6MSk7fXMuc2V0Q29u dGV4dChjYSkuc2V0T2Zmc2V0WChlYSkuc2V0T2Zmc2V0WShmYSkuc2V0UG9zaXRp b24oZGEucG9zaXRpb24pLnNldEFsaWdubWVudChkYS5hbGlnbkgpO2lmKHR5cGVv ZiBkYS5jb250ZW50PT09J3N0cmluZycpe2wuYWRkQ2xhc3MocywnaW52aXNpYmxl X2VsZW0nKTt2YXIgaGE9bi5jcmVhdGUoJ3NwYW4nLHt9LGFhKGRhLmNvbnRlbnQp KSxpYT1uLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOid0b29sdGlwVGV4dCd9LGhh KTtuLnNldENvbnRlbnQodCxpYSk7cy5zaG93KCk7Zy5ub3RpZnkoZGEuY29udGVu dCk7aWYoaWEub2Zmc2V0V2lkdGg8aGEub2Zmc2V0V2lkdGgpe2wuYWRkQ2xhc3Mo aWEsJ3Rvb2x0aXBXcmFwJyk7cy51cGRhdGVQb3NpdGlvbigpO31sLnJlbW92ZUNs YXNzKHMsJ2ludmlzaWJsZV9lbGVtJyk7fWVsc2V7bi5zZXRDb250ZW50KHQsZGEu

Y29udGVudCk7cy5zaG93KCk7Zy5ub3RpZnkobi5nZXRUZXh0KHQpKTt9dmFyIGph PWZ1bmN0aW9uKGxhKXtpZighbi5jb250YWlucyhyLGxhLmdldFRhcmdldCgpKSli YS5oaWRlKCk7fTt1LnB1c2goRXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudCwnbW91c2VvdmVyJyxqYSkpO3UucHVzaChFdmVudC5saXN0ZW4oZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LCdmb2N1c2luJyxqYSkpO3ZhciBrYT1vLmdl dFNjcm9sbFBhcmVudChjYSk7aWYoa2EhPT13aW5kb3cpdS5wdXNoKEV2ZW50Lmxp c3RlbihrYSwnc2Nyb2xsJyxiYS5oaWRlKSk7dS5wdXNoKEV2ZW50Lmxpc3Rlbihj YSwnY2xpY2snLGJhLmhpZGUpKTtyPWNhO319O0V2ZW50Lmxpc3Rlbih3aW5kb3cs J3Njcm9sbCcsYmEuaGlkZSk7ZS5leHBvcnRzPWJhO30pOwpfX2QoIlNlbGVjdG9y IixbImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwiQnV0dG9uIiwiQ29udGV4 dHVhbExheWVyIiwiY29weVByb3BlcnRpZXMiLCJDU1MiLCJEYXRhU3RvcmUiLCJE T00iLCJIVE1MIiwiSW5wdXQiLCJLZXlzIiwiS2V5U3RhdHVzIiwiTWVudSIsIlBh cmVudCIsIlN0eWxlIiwiVG9nZ2xlciIsIlRvb2x0aXAiLCJWZWN0b3IiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIo J0FyYml0ZXInKSxoPWIoJ0J1dHRvbicpLGk9YignQ29udGV4dHVhbExheWVyJyks aj1iKCdjb3B5UHJvcGVydGllcycpLGs9YignQ1NTJyksbD1iKCdEYXRhU3RvcmUn KSxtPWIoJ0RPTScpLG49YignSFRNTCcpLG89YignSW5wdXQnKSxwPWIoJ0tleXMn KSxxPWIoJ0tleVN0YXR1cycpLHI9YignTWVudScpLHM9YignUGFyZW50JyksdD1i KCdTdHlsZScpLHU9YignVG9nZ2xlcicpLHY9YignVG9vbHRpcCcpLHc9YignVmVj dG9yJykseCx5LHo9W10sYWE7ZnVuY3Rpb24gYmEobWEpe3JldHVybiBzLmJ5Q2xh c3MobWEsJ3VpU2VsZWN0b3InKTt9ZnVuY3Rpb24gY2EobWEpe3JldHVybiBzLmJ5 Q2xhc3MobWEsJ3VpU2VsZWN0b3JCdXR0b24nKTt9ZnVuY3Rpb24gZGEoKXtpZigh eSl7eT1uZXcgaSh7cG9zaXRpb246J2JlbG93J30sbS5jcmVhdGUoJ2RpdicpKTtr LmFkZENsYXNzKHkuZ2V0Um9vdCgpLCd1aVNlbGVjdG9yQ29udGV4dHVhbExheWVy Jyk7fXJldHVybiB5O31mdW5jdGlvbiBlYShtYSl7cmV0dXJuIG0uc2NyeShtYSwn c2VsZWN0JylbMF07fWZ1bmN0aW9uIGZhKG1hKXtyZXR1cm4gbS5maW5kKG1hLCdk aXYudWlTZWxlY3Rvck1lbnVXcmFwcGVyJyk7fWZ1bmN0aW9uIGdhKCl7Z2E9YmFn b2Zob2xkaW5nO3Iuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9uKG1hLG5hKXtp ZigheHx8IW5hfHxuYS5tZW51IT09bGEuZ2V0U2VsZWN0b3JNZW51KHgpKXJldHVy bjt2YXIgb2E9aGEoeCkscGE9aWEobmEuaXRlbSk7aWYocGEpe3ZhciBxYT14LHJh PWxhLmlzT3B0aW9uU2VsZWN0ZWQobmEuaXRlbSksc2E9bGEuaW5mb3JtKCdzZWxl Y3QnLHtzZWxlY3RvcjpxYSxvcHRpb246bmEuaXRlbSxjbG9uZTphYX0pO2lmKHNh PT09ZmFsc2UpcmV0dXJuO2lmKG9hfHwhcmEpe2xhLnNldFNlbGVjdGVkKHFhLGxh LmdldE9wdGlvblZhbHVlKG5hLml0ZW0pLCFyYSk7bGEuaW5mb3JtKCd0b2dnbGUn LHtzZWxlY3RvcjpxYSxvcHRpb246bmEuaXRlbX0pO2xhLmluZm9ybSgnY2hhbmdl Jyx7c2VsZWN0b3I6cWF9KTtnLmluZm9ybSgnRm9ybS9jaGFuZ2UnLHtub2RlOnFh fSk7aWYoamEocWEpKWwuc2V0KHFhLCdkaXJ0eScsdHJ1ZSk7fX1pZighb2F8fCFw YSl4JiZsYS50b2dnbGUoeCk7fSk7fWZ1bmN0aW9uIGhhKG1hKXtyZXR1cm4gISFt YS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbXVsdGlwbGUnKTt9ZnVuY3Rpb24gaWEobWEp e3JldHVybiBrLmhhc0NsYXNzKG1hLCd1aVNlbGVjdG9yT3B0aW9uJyk7fWZ1bmN0 aW9uIGphKG1hKXtyZXR1cm4gISFtYS5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0b3N1 Ym1pdCcpO312YXIga2E9e2tleWRvd246ZnVuY3Rpb24oZXZlbnQpe3ZhciBtYT1l dmVudC5nZXRUYXJnZXQoKTtpZihtLmlzTm9kZU9mVHlwZShtYSxbJ2lucHV0Jywn dGV4dGFyZWEnXSkpcmV0dXJuO3N3aXRjaChFdmVudC5nZXRLZXlDb2RlKGV2ZW50 KSl7Y2FzZSBwLkRPV046Y2FzZSBwLlNQQUNFOmNhc2UgcC5VUDppZihjYShtYSkp e3ZhciBuYT1iYShtYSk7bGEudG9nZ2xlKG5hKTtyZXR1cm4gZmFsc2U7fWJyZWFr O2Nhc2UgcC5FU0M6aWYoeCl7bGEudG9nZ2xlKHgpO3JldHVybiBmYWxzZTt9YnJl YWs7fX0sbW91c2VvdmVyOmZ1bmN0aW9uKGV2ZW50KXt2YXIgbWE9cy5ieUF0dHJp YnV0ZShldmVudC5nZXRUYXJnZXQoKSwnYWpheGlmeScpO2lmKG1hJiZrLmhhc0Ns YXNzKG1hLCd1aVNlbGVjdG9yQnV0dG9uJykpbGEubG9hZE1lbnUoYmEobWEpKTt9 fTtFdmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGthKTt1LnN1 YnNjcmliZShbJ3Nob3cnLCdoaWRlJ10sZnVuY3Rpb24obWEsbmEpe3ZhciBvYT1i YShuYS5nZXRBY3RpdmUoKSk7aWYob2Epe2dhKCk7dmFyIHBhPWxhLmdldFNlbGVj dG9yQnV0dG9uKG9hKSxxYT1sYS5nZXRTZWxlY3Rvck1lbnUob2EpLHJhPW1hPT09 J3Nob3cnO3BhLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcscmE/J3RydWUn OidmYWxzZScpO2lmKHJhKXt4PW9hO2lmKGsuaGFzQ2xhc3MocGEsJ3VpQnV0dG9u RGlzYWJsZWQnKSl7bGEuc2V0RW5hYmxlZChvYSxmYWxzZSk7cmV0dXJuIGZhbHNl O31xYT1xYXx8bGEubG9hZE1lbnUob2EpO3ZhciBzYT10LmdldFNjcm9sbFBhcmVu dChvYSksdGE9c2EhPT13aW5kb3cmJnNhIT09bS5nZXREb2N1bWVudFNjcm9sbEVs ZW1lbnQoKTtpZih0YXx8ay5oYXNDbGFzcyhvYSwndWlTZWxlY3RvclVzZUxheWVy

Jykpe2lmKHRhKXoucHVzaChFdmVudC5saXN0ZW4oc2EsJ3Njcm9sbCcsZnVuY3Rp b24oKXtuYS5oaWRlKCk7fSkpO2FhPW0uY3JlYXRlKCdkaXYnLHtjbGFzc05hbWU6 b2EuY2xhc3NOYW1lfSk7ay5hZGRDbGFzcyhhYSwnaW52aXNpYmxlX2VsZW0nKTt3 LmdldEVsZW1lbnREaW1lbnNpb25zKG9hKS5zZXRFbGVtZW50RGltZW5zaW9ucyhh YSk7bS5yZXBsYWNlKG9hLGFhKTt2YXIgdWE9ay5oYXNDbGFzcyhvYSwndWlTZWxl Y3RvclJpZ2h0JyksdmE9ay5oYXNDbGFzcyhvYSwndWlTZWxlY3RvckJvdHRvbVVw Jyk7ZGEoKS5zZXRDb250ZXh0KGFhKS5zZXRDb250ZW50KG9hKS5zZXRQb3NpdGlv bih2YT8nYWJvdmUnOidiZWxvdycpLnNldEFsaWdubWVudCh1YT8ncmlnaHQnOids ZWZ0Jykuc2hvdygpO31yLnJlZ2lzdGVyKHFhKTtpZihxLmlzS2V5RG93bigpKXt2 YXIgd2E9ci5nZXRDaGVja2VkSXRlbXMocWEpO2lmKCF3YS5sZW5ndGgpd2E9ci5n ZXRFbmFibGVkSXRlbXMocWEpO3IuZm9jdXNJdGVtKHdhWzBdKTt9fWVsc2V7eD1u dWxsO2lmKGFhKXt3aGlsZSh6Lmxlbmd0aCl6LnBvcCgpLnJlbW92ZSgpO20ucmVw bGFjZShhYSxvYSk7ZGEoKS5oaWRlKCk7YWE9bnVsbDt9cWEmJnIudW5yZWdpc3Rl cihxYSk7aWYoamEob2EpJiZsLmdldChvYSwnZGlydHknKSl7dmFyIHhhPW0uc2Ny eShvYSwnaW5wdXQuc3VibWl0QnV0dG9uJylbMF07eGEmJnhhLmNsaWNrKCk7bC5y ZW1vdmUob2EsJ2RpcnR5Jyk7fX1rLmNvbmRpdGlvbkNsYXNzKGxhLmdldFNlbGVj dG9yQnV0dG9uKG9hKSwnc2VsZWN0ZWQnLHJhKTtsYS5pbmZvcm0ocmE/J29wZW4n OidjbG9zZScse3NlbGVjdG9yOm9hLGNsb25lOmFhfSk7fX0pO3ZhciBsYT1qKG5l dyBnKCkse2F0dGFjaE1lbnU6ZnVuY3Rpb24obWEsbmEsb2Epe21hPWJhKG1hKTtp ZihtYSl7eCYmci51bnJlZ2lzdGVyKGxhLmdldFNlbGVjdG9yTWVudSh4KSk7bS5z ZXRDb250ZW50KGZhKG1hKSxuYSk7eCYmci5yZWdpc3RlcihsYS5nZXRTZWxlY3Rv ck1lbnUobWEpKTthYSYmZGEoKS51cGRhdGVQb3NpdGlvbigpO2lmKG9hKXt2YXIg cGE9bWEuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnKTtwYSYmb2Euc2V0QXR0cmli dXRlKCduYW1lJyxwYSk7aWYoIWhhKG1hKSlvYS5zZXRBdHRyaWJ1dGUoJ211bHRp cGxlJyxmYWxzZSk7dmFyIHFhPWVhKG1hKTtpZihxYSl7bS5yZXBsYWNlKHFhLG9h KTt9ZWxzZSBtLmluc2VydEFmdGVyKG1hLmZpcnN0Q2hpbGQsb2EpO31yZXR1cm4g dHJ1ZTt9fSxnZXRPcHRpb246ZnVuY3Rpb24obWEsbmEpe3ZhciBvYT1sYS5nZXRP cHRpb25zKG1hKSxwYT1vYS5sZW5ndGg7d2hpbGUocGEtLSlpZihuYT09PWxhLmdl dE9wdGlvblZhbHVlKG9hW3BhXSkpcmV0dXJuIG9hW3BhXTtyZXR1cm4gbnVsbDt9 LGdldE9wdGlvbnM6ZnVuY3Rpb24obWEpe3ZhciBuYT1yLmdldEl0ZW1zKGxhLmdl dFNlbGVjdG9yTWVudShtYSkpO3JldHVybiBuYS5maWx0ZXIoaWEpO30sZ2V0RW5h YmxlZE9wdGlvbnM6ZnVuY3Rpb24obWEpe3ZhciBuYT1yLmdldEVuYWJsZWRJdGVt cyhsYS5nZXRTZWxlY3Rvck1lbnUobWEpKTtyZXR1cm4gbmEuZmlsdGVyKGlhKTt9 LGdldFNlbGVjdGVkT3B0aW9uczpmdW5jdGlvbihtYSl7cmV0dXJuIHIuZ2V0Q2hl Y2tlZEl0ZW1zKGxhLmdldFNlbGVjdG9yTWVudShtYSkpO30sZ2V0T3B0aW9uVGV4 dDpmdW5jdGlvbihtYSl7cmV0dXJuIHIuZ2V0SXRlbUxhYmVsKG1hKTt9LGdldE9w dGlvblZhbHVlOmZ1bmN0aW9uKG1hKXt2YXIgbmE9YmEobWEpLG9hPWVhKG5hKSxw YT1sYS5nZXRPcHRpb25zKG5hKS5pbmRleE9mKG1hKTtyZXR1cm4gcGE+PTA/b2Eu b3B0aW9uc1twYSsxXS52YWx1ZTonJzt9LGdldFNlbGVjdG9yQnV0dG9uOmZ1bmN0 aW9uKG1hKXtyZXR1cm4gbS5maW5kKG1hLCdhLnVpU2VsZWN0b3JCdXR0b24nKTt9 LGdldFNlbGVjdG9yTWVudTpmdW5jdGlvbihtYSl7cmV0dXJuIG0uc2NyeShtYSwn ZGl2LnVpU2VsZWN0b3JNZW51JylbMF07fSxnZXRWYWx1ZTpmdW5jdGlvbihtYSl7 dmFyIG5hPWVhKG1hKTtpZighbmEpcmV0dXJuIG51bGw7aWYoIWhhKG1hKSlyZXR1 cm4gbmEudmFsdWU7dmFyIG9hPVtdLHBhPW5hLm9wdGlvbnM7Zm9yKHZhciBxYT0x LHJhPXBhLmxlbmd0aDtxYTxyYTtxYSsrKWlmKHBhW3FhXS5zZWxlY3RlZClvYS5w dXNoKHBhW3FhXS52YWx1ZSk7cmV0dXJuIG9hO30saXNPcHRpb25TZWxlY3RlZDpm dW5jdGlvbihtYSl7cmV0dXJuIHIuaXNJdGVtQ2hlY2tlZChtYSk7fSxsaXN0ZW46 ZnVuY3Rpb24obWEsbmEsb2Epe3JldHVybiB0aGlzLnN1YnNjcmliZShuYSxmdW5j dGlvbihwYSxxYSl7aWYocWEuc2VsZWN0b3I9PT1tYSlyZXR1cm4gb2EocWEscGEp O30pO30sbG9hZE1lbnU6ZnVuY3Rpb24obWEpe3ZhciBuYT1sYS5nZXRTZWxlY3Rv ck1lbnUobWEpO2lmKCFuYSl7dmFyIG9hPWxhLmdldFNlbGVjdG9yQnV0dG9uKG1h KSxwYT1vYS5nZXRBdHRyaWJ1dGUoJ2FqYXhpZnknKTtpZihwYSl7ZChbJ0FzeW5j UmVxdWVzdCddLGZ1bmN0aW9uKHJhKXtyYS5ib290c3RyYXAocGEsb2EpO30pO3Zh ciBxYT1uKCc8ZGl2IGNsYXNzPSJ1aVNlbGVjdG9yTWVudVdyYXBwZXIgdWlUb2dn bGVGbHlvdXQiPicrJzxkaXYgY2xhc3M9InVpTWVudSB1aVNlbGVjdG9yTWVudSBs b2FkaW5nIj4nKyc8dWwgY2xhc3M9InVpTWVudUlubmVyIj4nKyc8bGk+PHNwYW4+ PC9zcGFuPjwvbGk+JysnPC91bD4nKyc8L2Rpdj4nKyc8L2Rpdj4nKTttLmFwcGVu ZENvbnRlbnQob2EucGFyZW50Tm9kZSxxYSk7bmE9bGEuZ2V0U2VsZWN0b3JNZW51 KG1hKTtvYS5yZW1vdmVBdHRyaWJ1dGUoJ29ubW91c2VvdmVyJyk7fX1yZXR1cm4g bmE7fSxzZXRCdXR0b25MYWJlbDpmdW5jdGlvbihtYSxuYSl7dmFyIG9hPWxhLmdl

dFNlbGVjdG9yQnV0dG9uKG1hKSxwYT1wYXJzZUludChvYS5nZXRBdHRyaWJ1dGUo J2RhdGEtbGVuZ3RoJyksMTApO25hPW5hfHxvYS5nZXRBdHRyaWJ1dGUoJ2RhdGEt bGFiZWwnKXx8Jyc7aC5zZXRMYWJlbChvYSxuYSk7aWYodHlwZW9mIG5hPT09J3N0 cmluZycpe2suY29uZGl0aW9uQ2xhc3Mob2EsJ3VpU2VsZWN0b3JCaWdCdXR0b25M YWJlbCcsbmEubGVuZ3RoPnBhKTtpZihwYSYmbmEubGVuZ3RoPnBhKXtvYS5zZXRB dHRyaWJ1dGUoJ3RpdGxlJyxuYSk7fWVsc2Ugb2EucmVtb3ZlQXR0cmlidXRlKCd0 aXRsZScpO319LHNldEJ1dHRvblRvb2x0aXA6ZnVuY3Rpb24obWEsbmEpe3ZhciBv YT1sYS5nZXRTZWxlY3RvckJ1dHRvbihtYSkscGE9cy5ieVRhZyhvYSwnYScpO3Bh JiZ2LnNldChwYSxuYXx8b2EuZ2V0QXR0cmlidXRlKCdkYXRhLXRvb2x0aXAnKXx8 JycpO30sdXBkYXRlQnV0dG9uQVJJQUxhYmVsOmZ1bmN0aW9uKG1hLG5hKXt2YXIg b2E9bGEuZ2V0U2VsZWN0b3JCdXR0b24obWEpLHBhPXMuYnlUYWcob2EsJ2EnKTtp ZihwYSl7dmFyIHFhPW9hLmdldEF0dHJpYnV0ZSgnZGF0YS1hcmlhcHJlZml4Jyk7 aWYocWEpb2Euc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyxxYSsnOiAnK25hKTt9 fSxzZXRFbmFibGVkOmZ1bmN0aW9uKG1hLG5hKXtpZighbmEmJngmJmJhKG1hKT09 PXgpbGEudG9nZ2xlKG1hKTtoLnNldEVuYWJsZWQobGEuZ2V0U2VsZWN0b3JCdXR0 b24obWEpLG5hKTt9LHNldE9wdGlvbkVuYWJsZWQ6ZnVuY3Rpb24obWEsbmEpe3Iu c2V0SXRlbUVuYWJsZWQobWEsbmEpO30sc2V0U2VsZWN0ZWQ6ZnVuY3Rpb24obWEs bmEsb2Epe29hPW9hIT09ZmFsc2U7dmFyIHBhPWxhLmdldE9wdGlvbihtYSxuYSk7 aWYoIXBhKXJldHVybjt2YXIgcWE9bGEuaXNPcHRpb25TZWxlY3RlZChwYSk7aWYo b2EhPT1xYSl7aWYoIWhhKG1hKSYmIXFhKXt2YXIgcmE9bGEuZ2V0U2VsZWN0ZWRP cHRpb25zKG1hKVswXTtyYSYmci50b2dnbGVJdGVtKHJhKTt9ci50b2dnbGVJdGVt KHBhKTt9bGEudXBkYXRlU2VsZWN0b3IobWEpO30sdG9nZ2xlOmZ1bmN0aW9uKG1h KXt1LnRvZ2dsZShtLnNjcnkoYmEobWEpLCdkaXYud3JhcCcpWzBdKTt9LHVwZGF0 ZVNlbGVjdG9yOmZ1bmN0aW9uKG1hKXt2YXIgbmE9bGEuZ2V0T3B0aW9ucyhtYSks b2E9bGEuZ2V0U2VsZWN0ZWRPcHRpb25zKG1hKSxwYT1lYShtYSkub3B0aW9ucyxx YT1bXSxyYT1bXTtmb3IodmFyIHNhPTAsdGE9bmEubGVuZ3RoO3NhPHRhO3NhKysp e3ZhciB1YT1vYS5jb250YWlucyhuYVtzYV0pO3BhW3NhKzFdLnNlbGVjdGVkPXVh O2lmKHVhKXt2YXIgdmE9bGEuZ2V0T3B0aW9uVGV4dChuYVtzYV0pO3FhLnB1c2go dmEpO3JhLnB1c2gobmFbc2FdLmdldEF0dHJpYnV0ZSgnZGF0YS10b29sdGlwJyl8 fHZhKTt9fXBhWzBdLnNlbGVjdGVkPSFvYS5sZW5ndGg7dmFyIHdhPWsuaGFzQ2xh c3MobWEsJ3VpU2VsZWN0b3JEeW5hbWljTGFiZWwnKSx4YT1rLmhhc0NsYXNzKG1h LCd1aVNlbGVjdG9yRHluYW1pY1Rvb2x0aXAnKTtpZih3YXx8eGEpe3ZhciB5YT0n JztpZihoYShtYSkpe3ZhciB6YT1sYS5nZXRTZWxlY3RvckJ1dHRvbihtYSk7eWE9 emEuZ2V0QXR0cmlidXRlKCdkYXRhLWRlbGltaXRlcicpfHwnLCAnO31xYT1xYS5q b2luKHlhKTtyYT1yYS5qb2luKHlhKTtpZih3YSl7bGEuc2V0QnV0dG9uTGFiZWwo bWEscWEpO2xhLnVwZGF0ZUJ1dHRvbkFSSUFMYWJlbChtYSxxYSk7fXhhJiZsYS5z ZXRCdXR0b25Ub29sdGlwKG1hLHJhKTt9fX0pO2UuZXhwb3J0cz1sYTt9KTsKX19k KCJQcml2YWN5Q29uc3QiLFsiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxoPXtGUklFTkRTX01J TlVTX0FDUVVBSU5UQU5DRVM6MTI3LEZBQ0VCT09LX0VNUExPWUVFUzoxMTIsQ1VT VE9NOjExMSxFVkVSWU9ORTo4MCxORVRXT1JLU19GUklFTkRTX09GX0ZSSUVORFM6 NjAsTkVUV09SS1NfRlJJRU5EUzo1NSxGUklFTkRTX09GX0ZSSUVORFM6NTAsQUxM X0ZSSUVORFM6NDAsU0VMRjoxMCxOT0JPRFk6MH0saT17RVZFUllPTkU6ODAsTkVU V09SS1NfRlJJRU5EUzo1NSxGUklFTkRTX09GX0ZSSUVORFM6NTAsQUxMX0ZSSUVO RFM6NDAsU09NRV9GUklFTkRTOjMwLFNFTEY6MTAsTk9fRlJJRU5EUzowfSxqPXtC YXNlVmFsdWU6aCxGcmllbmRzVmFsdWU6aX07ZS5leHBvcnRzPWo7fSk7Cl9fZCgi QXVkaWVuY2VTZWxlY3RvciIsWyJBcmJpdGVyIiwiQ1NTIiwiRE9NIiwiRHluYW1p Y0ljb25TZWxlY3RvciIsIlByaXZhY3lDb25zdCIsIlNlbGVjdG9yIiwiY29weVBy b3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRl cicpLGg9YignQ1NTJyksaT1iKCdET00nKSxqPWIoJ0R5bmFtaWNJY29uU2VsZWN0 b3InKSxrPWIoJ1ByaXZhY3lDb25zdCcpLGw9YignU2VsZWN0b3InKSxtPWIoJ2Nv cHlQcm9wZXJ0aWVzJyk7bC5zdWJzY3JpYmUoJ3NlbGVjdCcsZnVuY3Rpb24ocCxx KXtpZighaC5oYXNDbGFzcyhxLnNlbGVjdG9yLCdhdWRpZW5jZVNlbGVjdG9yJykp cmV0dXJuO3ZhciByPWwuZ2V0T3B0aW9uVmFsdWUocS5vcHRpb24pO2cuaW5mb3Jt KCdBdWRpZW5jZVNlbGVjdG9yL2NoYW5nZWQnLHEpO2lmKHI9PWsuQmFzZVZhbHVl LkNVU1RPTSYmIWguaGFzQ2xhc3MocS5vcHRpb24sJ25vRGlhbG9nJykpe2wudG9n Z2xlKHEuc2VsZWN0b3IpO3JldHVybiBmYWxzZTt9aWYoaC5oYXNDbGFzcyhxLnNl bGVjdG9yLCdkYXRhVG9vbHRpcCcpKXt2YXIgcz1pLmZpbmQocS5vcHRpb24sJy5p dGVtQW5jaG9yJykuZ2V0QXR0cmlidXRlKCdkYXRhLXRvb2x0aXAnKTtsLnNldEJ1 dHRvblRvb2x0aXAocS5zZWxlY3RvcixzfHxudWxsKTt9aWYoIWguaGFzQ2xhc3Mo

cS5vcHRpb24sJ3NwZWNpYWxPcHRpb24nKSlyZXR1cm47dmFyIHQ9aS5maW5kKHEu b3B0aW9uLCdhJykuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKTtpZihoLmhhc0Ns YXNzKHEub3B0aW9uLCdtb3JlT3B0aW9uJykpe2guYWRkQ2xhc3MocS5zZWxlY3Rv cix0KTtoLmFkZENsYXNzKHEuc2VsZWN0b3IsJ3Nob3dTZWNvbmRhcnlPcHRpb25z Jyk7cmV0dXJuIGZhbHNlO31lbHNlIGlmKGguaGFzQ2xhc3MocS5vcHRpb24sJ3Jl dHVybk9wdGlvbicpKXtoLnJlbW92ZUNsYXNzKHEuc2VsZWN0b3IsJ3Nob3dTZWNv bmRhcnlPcHRpb25zJyk7aC5yZW1vdmVDbGFzcyhxLnNlbGVjdG9yLCdmcmllbmRM aXN0Jyk7cmV0dXJuIGZhbHNlO319KTt2YXIgbj17fSxvPXtoYXNUYWdzOmZ1bmN0 aW9uKHApe3JldHVybiBuLmhhc093blByb3BlcnR5KHApO30sc2V0SGFzVGFnczpm dW5jdGlvbihwKXtpZighcClyZXR1cm47bltwXT10cnVlO319O2cuc3Vic2NyaWJl KCdDdXN0b21Qcml2YWN5T3B0aW9uL3VwZGF0ZScsZnVuY3Rpb24ocCxxKXtpZigh aC5oYXNDbGFzcyhxLnNlbGVjdG9yLCdhdWRpZW5jZVNlbGVjdG9yJykpcmV0dXJu O2wuc2V0U2VsZWN0ZWQocS5zZWxlY3RvcixsLmdldE9wdGlvblZhbHVlKHEub3B0 aW9uKSk7ai5zd2FwSWNvbihxLnNlbGVjdG9yKTtsLnNldEJ1dHRvblRvb2x0aXAo cS5zZWxlY3RvcixxLnRvb2x0aXApO2cuaW5mb3JtKCdBdWRpZW5jZVNlbGVjdG9y L3VwZGF0ZScscS5zZWxlY3Rvcik7fSk7ZS5leHBvcnRzPW87fSk7Cl9fZCgiQ29u dGV4dHVhbERpYWxvZ0Fycm93IixbIkNTUyIsIkRPTSIsIkxvY2FsZSIsIlN0eWxl IiwiVmVjdG9yIiwiY29weVByb3BlcnRpZXMiLCJjeCJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdDU1MnKSxoPWIoJ0RPTScpLGk9YignTG9jYWxlJyks aj1iKCdTdHlsZScpLGs9YignVmVjdG9yJyksbD1iKCdjb3B5UHJvcGVydGllcycp LG09YignY3gnKSxuPTE1LG89MTYscD17Ym90dG9tOiItY3gtUFJJVkFURS11aUNv bnRleHR1YWxEaWFsb2dfX2Fycm93Qm90dG9tIix0b3A6Ii1jeC1QUklWQVRFLXVp Q29udGV4dHVhbERpYWxvZ19fYXJyb3dUb3AiLHJpZ2h0OiItY3gtUFJJVkFURS11 aUNvbnRleHR1YWxEaWFsb2dfX2Fycm93UmlnaHQiLGxlZnQ6Ii1jeC1QUklWQVRF LXVpQ29udGV4dHVhbERpYWxvZ19fYXJyb3dMZWZ0In0scT17YWJvdmU6J2JvdHRv bScsYmVsb3c6J3RvcCcsbGVmdDoncmlnaHQnLHJpZ2h0OidsZWZ0J307ZnVuY3Rp b24gcihzKXt0aGlzLl9sYXllcj1zO31sKHIucHJvdG90eXBlLHtfc3Vic2NyaXB0 aW9uOm51bGwsX2Fycm93Om51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vi c2NyaXB0aW9uPXRoaXMuX2xheWVyLnN1YnNjcmliZShbJ2FkanVzdCcsJ3JlcG9z aXRpb24nXSx0aGlzLl9oYW5kbGUuYmluZCh0aGlzKSk7fSxkaXNhYmxlOmZ1bmN0 aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7dGhpcy5fc3Vi c2NyaXB0aW9uPW51bGw7fSxfaGFuZGxlOmZ1bmN0aW9uKHMsdCl7aWYocz09PSdh ZGp1c3QnKXt0aGlzLl9yZXBvc2l0aW9uQXJyb3codCk7fWVsc2UgdGhpcy5fcmVw b3NpdGlvblJvb3QodCk7fSxfcmVwb3NpdGlvblJvb3Q6ZnVuY3Rpb24ocyl7dmFy IHQ9dGhpcy5fbGF5ZXIuZ2V0Um9vdCgpO2lmKCFzLmlzVmVydGljYWwoKSl7dmFy IHU9cGFyc2VJbnQoai5nZXQodCwndG9wJyksMTApO3UtPW47ai5zZXQodCwndG9w Jyx1KydweCcpO319LF9yZXBvc2l0aW9uQXJyb3c6ZnVuY3Rpb24ocyl7dmFyIHQ9 dGhpcy5fbGF5ZXIuX2NvbnRlbnRXcmFwcGVyLHU9MCx2PXMuZ2V0QWxpZ25tZW50 KCksdz1zLmdldFBvc2l0aW9uKCk7aWYodz09J2Fib3ZlJ3x8dz09J2JlbG93Jylp Zih2PT0nY2VudGVyJyl7dT01MDt9ZWxzZSBpZih2PT0ncmlnaHQnKXU9MTAwO3Zh ciB4PXFbd107Zm9yKHZhciB5IGluIHApZy5jb25kaXRpb25DbGFzcyh0LHBbeV0s eD09PXkpO2lmKHc9PSdub25lJylyZXR1cm47aWYoIXRoaXMuX2Fycm93KXt0aGlz Ll9hcnJvdz10aGlzLl9kcmF3QXJyb3coKTtoLmFwcGVuZENvbnRlbnQodCx0aGlz Ll9hcnJvdyk7fWcuY29uZGl0aW9uQ2xhc3ModCwiLWN4LVBSSVZBVEUtdWlDb250 ZXh0dWFsRGlhbG9nX193aXRoRm9vdGVyIix0aGlzLl9sYXllci5nZXRGb290ZXIo KSk7ai5zZXQodGhpcy5fYXJyb3csJ3RvcCcsJycpO2ouc2V0KHRoaXMuX2Fycm93 LCdsZWZ0JywnJyk7ai5zZXQodGhpcy5fYXJyb3csJ3JpZ2h0JywnJyk7ai5zZXQo dGhpcy5fYXJyb3csJ21hcmdpbicsJycpO3ZhciB6PXg9PSd0b3AnfHx4PT0nYm90 dG9tJyxhYT16PyhpLmlzUlRMKCk/J3JpZ2h0JzonbGVmdCcpOid0b3AnO2ouc2V0 KHRoaXMuX2Fycm93LGFhLHUrJyUnKTt2YXIgYmE9MDtpZih2IT0nY2VudGVyJyl7 YmE9bjtpZih6KXt2YXIgY2E9dGhpcy5fbGF5ZXIuZ2V0Q29udGV4dCgpLGRhPWsu Z2V0RWxlbWVudERpbWVuc2lvbnMoY2EpLng7aWYoZGE8bysobioyKSliYT1NYXRo Lm1heCgoZGEvMiktKG8vMiksMCk7fX1iYSs9byp1LzEwMDtpZih2IT0nbGVmdCcp YmEqPS0xO2ouc2V0KHRoaXMuX2Fycm93LCdtYXJnaW4tJythYSxiYSsncHgnKTt9 LF9kcmF3QXJyb3c6ZnVuY3Rpb24oKXtyZXR1cm4gaC5jcmVhdGUoJ2knLHtjbGFz c05hbWU6Ii1jeC1QUklWQVRFLXVpQ29udGV4dHVhbERpYWxvZ19fYXJyb3cifSk7 fX0pO3IuT0ZGU0VUPW47ci5MRU5HVEg9bztlLmV4cG9ydHM9cjt9KTsKX19kKCJD b250ZXh0dWFsRGlhbG9nRml0SW5WaWV3cG9ydCIsWyJldmVudC1leHRlbnNpb25z IiwiQ29udGV4dHVhbERpYWxvZ0Fycm93IiwiQ29udGV4dHVhbExheWVyRGltZW5z aW9ucyIsIlN0eWxlIiwiVmVjdG9yIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlv

bihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0Nv bnRleHR1YWxEaWFsb2dBcnJvdycpLGg9YignQ29udGV4dHVhbExheWVyRGltZW5z aW9ucycpLGk9YignU3R5bGUnKSxqPWIoJ1ZlY3RvcicpLGs9YignY29weVByb3Bl cnRpZXMnKSxsPWcuT0ZGU0VULG09Zy5MRU5HVEgsbj1sK207ZnVuY3Rpb24gbyhw KXt0aGlzLl9sYXllcj1wO31rKG8ucHJvdG90eXBlLHtfc2Nyb2xsTGlzdGVuZXI6 bnVsbCxfc3Vic2NyaXB0aW9uOm51bGwsX21pbmltdW1Ub3A6bnVsbCxlbmFibGU6 ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fbGF5ZXIuc3Vic2Ny aWJlKFsnc2hvdycsJ2hpZGUnLCdyZXBvc2l0aW9uJ10sZnVuY3Rpb24ocCxxKXtp ZihwPT0ncmVwb3NpdGlvbicpe3RoaXMuX2NhbGN1bGF0ZU1pbmltdW1Ub3AocSk7 fWVsc2UgaWYocD09J3Nob3cnKXt0aGlzLl9hdHRhY2hTY3JvbGwoKTt0aGlzLl9h ZGp1c3RGb3JTY3JvbGwoKTt9ZWxzZSB0aGlzLl9kZXRhY2hTY3JvbGwoKTt9LmJp bmQodGhpcykpO2lmKHRoaXMuX2xheWVyLmlzU2hvd24oKSl0aGlzLl9hdHRhY2hT Y3JvbGwoKTt9LGRpc2FibGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9sYXllci5pc1No b3duKCkpdGhpcy5fZGV0YWNoU2Nyb2xsKCk7dGhpcy5fc3Vic2NyaXB0aW9uLnVu c3Vic2NyaWJlKCk7dGhpcy5fc3Vic2NyaXB0aW9uPW51bGw7fSxfYXR0YWNoU2Ny b2xsOmZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsTGlzdGVuZXI9RXZlbnQubGlzdGVu KHRoaXMuX2xheWVyLmdldENvbnRleHRTY3JvbGxQYXJlbnQoKXx8d2luZG93LCdz Y3JvbGwnLHRoaXMuX2FkanVzdEZvclNjcm9sbC5iaW5kKHRoaXMpKTt9LF9kZXRh Y2hTY3JvbGw6ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxMaXN0ZW5lci5yZW1vdmUo KTt0aGlzLl9zY3JvbGxMaXN0ZW5lcj1udWxsO30sX2dldENvbnRlbnRIZWlnaHQ6 ZnVuY3Rpb24oKXtyZXR1cm4gai5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLl9s YXllci5fY29udGVudFdyYXBwZXIpLnk7fSxfZ2V0Q29udGV4dFk6ZnVuY3Rpb24o KXtyZXR1cm4gai5nZXRFbGVtZW50UG9zaXRpb24odGhpcy5fbGF5ZXIuZ2V0Q29u dGV4dCgpKS55O30sX2NhbGN1bGF0ZU1pbmltdW1Ub3A6ZnVuY3Rpb24ocCl7aWYo cC5pc1ZlcnRpY2FsKCkpcmV0dXJuO3RoaXMuX21pbmltdW1Ub3A9KHRoaXMuX2dl dENvbnRleHRZKCktKHRoaXMuX2dldENvbnRlbnRIZWlnaHQoKS1uKStwLmdldE9m ZnNldFkoKSk7fSxfYWRqdXN0Rm9yU2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIHA9dGhp cy5fbGF5ZXIuX2dldE9yaWVudGF0aW9uKCk7aWYocC5pc1ZlcnRpY2FsKCkpcmV0 dXJuO3ZhciBxPWguZ2V0Vmlld3BvcnRSZWN0KHRoaXMuX2xheWVyKSxyPXEuYi10 aGlzLl9taW5pbXVtVG9wO2lmKHI8MClyZXR1cm47dmFyIHM9dGhpcy5fZ2V0Q29u dGVudEhlaWdodCgpLHQ9cy0obitsKSx1PU1hdGgubWF4KDAsTWF0aC5taW4odCx0 LShyLXMpKSk7aS5zZXQodGhpcy5fbGF5ZXIuZ2V0Q29udGVudCgpLCd0b3AnLC11 KydweCcpO319KTtlLmV4cG9ydHM9bzt9KTsKX19kKCJDb250ZXh0dWFsRGlhbG9n IixbIkFjY2Vzc2libGVMYXllciIsIkNsYXNzIiwiQ29udGV4dHVhbERpYWxvZ0Zp dEluVmlld3BvcnQiLCJDb250ZXh0dWFsTGF5ZXIiLCJDU1MiLCJET00iLCJMYXll ckJ1dHRvbnMiLCJMYXllckZvcm1Ib29rcyIsIkxheWVyTW91c2VIb29rcyIsIlN0 eWxlIiwiY29weVByb3BlcnRpZXMiLCJjc3giLCJjeCJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdBY2Nlc3NpYmxlTGF5ZXInKSxoPWIoJ0NsYXNzJyks aT1iKCdDb250ZXh0dWFsRGlhbG9nRml0SW5WaWV3cG9ydCcpLGo9YignQ29udGV4 dHVhbExheWVyJyksaz1iKCdDU1MnKSxsPWIoJ0RPTScpLG09YignTGF5ZXJCdXR0 b25zJyksbj1iKCdMYXllckZvcm1Ib29rcycpLG89YignTGF5ZXJNb3VzZUhvb2tz JykscD1iKCdTdHlsZScpLHE9YignY29weVByb3BlcnRpZXMnKSxyPWIoJ2NzeCcp LHM9YignY3gnKTtmdW5jdGlvbiB0KHUsdil7dGhpcy5wYXJlbnQuY29uc3RydWN0 KHRoaXMsdSx2KTt9aC5leHRlbmQodCxqKTtxKHQucHJvdG90eXBlLHtfZm9vdGVy Om51bGwsX2NvbmZpZ3VyZTpmdW5jdGlvbih1LHYpe3UuYWRkZWRCZWhhdmlvcnMu cHVzaCh1LmFycm93QmVoYXZpb3IpO3ZhciB3PWwuc2NyeSh2LCJkaXYuLWN4LVBS SVZBVEUtdWlDb250ZXh0dWFsRGlhbG9nX19mb290ZXIiKTtpZih3Lmxlbmd0aCl0 aGlzLl9mb290ZXI9d1swXTt0aGlzLnBhcmVudC5fY29uZmlndXJlKHUsdik7fSxf Z2V0RGVmYXVsdEJlaGF2aW9yczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVu dC5fZ2V0RGVmYXVsdEJlaGF2aW9ycygpLmNvbmNhdChbZyxpLG0sbixvXSk7fSxf YnVpbGRXcmFwcGVyOmZ1bmN0aW9uKHUsdil7ay5hZGRDbGFzcyh2LCItY3gtUFJJ VkFURS11aUNvbnRleHR1YWxEaWFsb2dfX2NvbnRlbnQiKTt2YXIgdz10aGlzLnBh cmVudC5fYnVpbGRXcmFwcGVyKHUsdik7ay5hZGRDbGFzcyh0aGlzLl9jb250ZW50 V3JhcHBlciwiLWN4LVBSSVZBVEUtdWlDb250ZXh0dWFsRGlhbG9nX193cmFwcGVy Iik7aWYodS53aWR0aCl0aGlzLnNldFdpZHRoKHUud2lkdGgpO3JldHVybiB3O30s c2V0V2lkdGg6ZnVuY3Rpb24odSl7dGhpcy5fd2lkdGg9TWF0aC5mbG9vcih1KTtw LnNldCh0aGlzLl9jb250ZW50V3JhcHBlciwnd2lkdGgnLHUrJ3B4Jyk7cmV0dXJu IHRoaXM7fSxnZXRGb290ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9vdGVy O319KTtxKHQse3NldENvbnRleHQ6ZnVuY3Rpb24odSx2KXt1LnNldENvbnRleHQo dik7fX0pO2UuZXhwb3J0cz10O30pOwpfX2QoIkNvbnRleHR1YWxMYXllckFzeW5j

UmVsYXRpdmUiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsImNvcHlQcm9wZXJ0aWVzIiwi UGFyZW50Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lv bnMnKTt2YXIgZz1iKCdjb3B5UHJvcGVydGllcycpLGg9YignUGFyZW50Jyk7ZnVu Y3Rpb24gaShqKXt0aGlzLl9sYXllcj1qO31nKGkucHJvdG90eXBlLHtfbGF5ZXJT dWJzY3JpcHRpb246bnVsbCxfbGlzdGVuZXI6bnVsbCxlbmFibGU6ZnVuY3Rpb24o KXt0aGlzLl9sYXllclN1YnNjcmlwdGlvbj10aGlzLl9sYXllci5zdWJzY3JpYmUo J3Nob3cnLHRoaXMuX2F0dGFjaExpc3RlbmVyLmJpbmQodGhpcykpO2lmKHRoaXMu X2xheWVyLmlzU2hvd24oKSl0aGlzLl9hdHRhY2hMaXN0ZW5lcigpO30sZGlzYWJs ZTpmdW5jdGlvbigpe3RoaXMuX2xheWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJl KCk7dGhpcy5fbGF5ZXJTdWJzY3JpcHRpb249bnVsbDtpZih0aGlzLl9saXN0ZW5l cil7dGhpcy5fbGlzdGVuZXIucmVtb3ZlKCk7dGhpcy5fbGlzdGVuZXI9bnVsbDt9 fSxfYXR0YWNoTGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5lcj1FdmVu dC5saXN0ZW4odGhpcy5fbGF5ZXIuZ2V0Um9vdCgpLCdjbGljaycsdGhpcy5fb25j bGljay5iaW5kKHRoaXMpKTt9LF9vbmNsaWNrOmZ1bmN0aW9uKGope3ZhciBrPWgu YnlUYWcoai5nZXRUYXJnZXQoKSwnQScpO2lmKCFrKXJldHVybjt2YXIgbD1rLmdl dEF0dHJpYnV0ZSgnYWpheGlmeScpLG09ay5ocmVmLG49bHx8bTtpZihrLnJlbD09 PSdhc3luYyd8fGsucmVsPT09J2FzeW5jLXBvc3QnKXtkKFsnQXN5bmNSZXF1ZXN0 J10sZnVuY3Rpb24obyl7by5ib290c3RyYXAobix0aGlzLl9sYXllci5nZXRDb250 ZXh0KCksay5yZWw9PT0nYXN5bmMtcG9zdCcpO30uYmluZCh0aGlzKSk7cmV0dXJu IGZhbHNlO319fSk7ZS5leHBvcnRzPWk7fSk7Cl9fZCgiQ29udGV4dHVhbExheWVy SGlkZU9uU2Nyb2xsIixbImV2ZW50LWV4dGVuc2lvbnMiLCJDbGFzcyIsImNvcHlQ cm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVu c2lvbnMnKTt2YXIgZz1iKCdDbGFzcycpLGg9YignY29weVByb3BlcnRpZXMnKTtm dW5jdGlvbiBpKGope3RoaXMuX2xheWVyPWo7fWgoaS5wcm90b3R5cGUse19zdWJz Y3JpcHRpb25zOltdLGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuX3N1YnNjcmlwdGlv bnM9W3RoaXMuX2xheWVyLnN1YnNjcmliZSgnY29udGV4dGNoYW5nZScsdGhpcy5f aGFuZGxlQ29udGV4dENoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLl9sYXllci5zdWJz Y3JpYmUoJ3Nob3cnLHRoaXMuYXR0YWNoLmJpbmQodGhpcykpLHRoaXMuX2xheWVy LnN1YnNjcmliZSgnaGlkZScsdGhpcy5kZXRhY2guYmluZCh0aGlzKSldO30sZGlz YWJsZTpmdW5jdGlvbigpe3doaWxlKHRoaXMuX3N1YnNjcmlwdGlvbnMubGVuZ3Ro KXRoaXMuX3N1YnNjcmlwdGlvbnMucG9wKCkudW5zdWJzY3JpYmUoKTt0aGlzLmRl dGFjaCgpO30sYXR0YWNoOmZ1bmN0aW9uKCl7aWYodGhpcy5fbGlzdGVuZXIpcmV0 dXJuO3ZhciBqPXRoaXMuX2xheWVyLmdldENvbnRleHRTY3JvbGxQYXJlbnQoKTtp ZihqPT09d2luZG93KXJldHVybjt0aGlzLl9saXN0ZW5lcj1FdmVudC5saXN0ZW4o aiwnc2Nyb2xsJyx0aGlzLl9sYXllci5oaWRlLmJpbmQodGhpcy5fbGF5ZXIpKTt9 LGRldGFjaDpmdW5jdGlvbigpe3RoaXMuX2xpc3RlbmVyJiZ0aGlzLl9saXN0ZW5l ci5yZW1vdmUoKTt0aGlzLl9saXN0ZW5lcj1udWxsO30sX2hhbmRsZUNvbnRleHRD aGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLmRldGFjaCgpO2lmKHRoaXMuX2xheWVyLmlz U2hvd24oKSl0aGlzLmF0dGFjaCgpO319KTtlLmV4cG9ydHM9aTt9KTsKX19kKCJD b250ZXh0dWFsTGF5ZXJVcGRhdGVPblNjcm9sbCIsWyJldmVudC1leHRlbnNpb25z IiwiQ2xhc3MiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQ2xhc3MnKSxoPWIoJ2Nv cHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gaShqKXt0aGlzLl9sYXllcj1qO31oKGku cHJvdG90eXBlLHtfc3Vic2NyaXB0aW9uczpbXSxlbmFibGU6ZnVuY3Rpb24oKXt0 aGlzLl9zdWJzY3JpcHRpb25zPVt0aGlzLl9sYXllci5zdWJzY3JpYmUoJ3Nob3cn LHRoaXMuX2F0dGFjaFNjcm9sbExpc3RlbmVyLmJpbmQodGhpcykpLHRoaXMuX2xh eWVyLnN1YnNjcmliZSgnaGlkZScsdGhpcy5fcmVtb3ZlU2Nyb2xsTGlzdGVuZXIu YmluZCh0aGlzKSldO30sZGlzYWJsZTpmdW5jdGlvbigpe3doaWxlKHRoaXMuX3N1 YnNjcmlwdGlvbnMubGVuZ3RoKXRoaXMuX3N1YnNjcmlwdGlvbnMucG9wKCkudW5z dWJzY3JpYmUoKTt0aGlzLmRldGFjaCgpO30sX2F0dGFjaFNjcm9sbExpc3RlbmVy OmZ1bmN0aW9uKCl7aWYodGhpcy5fbGlzdGVuZXIpcmV0dXJuO3ZhciBqPXRoaXMu X2xheWVyLmdldENvbnRleHRTY3JvbGxQYXJlbnQoKTt0aGlzLl9saXN0ZW5lcj1F dmVudC5saXN0ZW4oaiwnc2Nyb2xsJyx0aGlzLl9sYXllci51cGRhdGVQb3NpdGlv bi5iaW5kKHRoaXMuX2xheWVyKSk7fSxfcmVtb3ZlU2Nyb2xsTGlzdGVuZXI6ZnVu Y3Rpb24oKXt0aGlzLl9saXN0ZW5lciYmdGhpcy5fbGlzdGVuZXIucmVtb3ZlKCk7 dGhpcy5fbGlzdGVuZXI9bnVsbDt9fSk7ZS5leHBvcnRzPWk7fSk7Cl9fZCgiQmFz aWNUeXBlYWhlYWRSZW5kZXJlciIsWyJET00iXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7dmFyIGc9YignRE9NJyk7ZnVuY3Rpb24gaChpLGope3ZhciBrPVtdO2lmKGku aWNvbilrLnB1c2goZy5jcmVhdGUoJ2ltZycse2FsdDonJyxzcmM6aS5pY29ufSkp O2lmKGkudGV4dClrLnB1c2goZy5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J3Rl

eHQnfSxbaS50ZXh0XSkpO2lmKGkuc3VidGV4dClrLnB1c2goZy5jcmVhdGUoJ3Nw YW4nLHtjbGFzc05hbWU6J3N1YnRleHQnfSxbaS5zdWJ0ZXh0XSkpO3ZhciBsPWcu Y3JlYXRlKCdsaScse2NsYXNzTmFtZTppLnR5cGV8fCcnfSxrKTtpZihpLnRleHQp bC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLGkudGV4dCk7cmV0dXJuIGw7fWgu Y2xhc3NOYW1lPSdiYXNpYyc7ZS5leHBvcnRzPWg7fSk7Cl9fZCgiVHlwZWFoZWFk VmlldyIsWyJldmVudC1leHRlbnNpb25zIiwiQXJiaXRlck1peGluIiwiQVJJQSIs IkJhc2ljVHlwZWFoZWFkUmVuZGVyZXIiLCJDbGFzcyIsIkNTUyIsIkRPTSIsIlBh cmVudCIsIiQiLCJjb3B5UHJvcGVydGllcyIsImdlIiwidHgiXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0 ZXJNaXhpbicpLGg9YignQVJJQScpLGk9YignQmFzaWNUeXBlYWhlYWRSZW5kZXJl cicpLGo9YignQ2xhc3MnKSxrPWIoJ0NTUycpLGw9YignRE9NJyksbT1iKCdQYXJl bnQnKSxuPWIoJyQnKSxvPWIoJ2NvcHlQcm9wZXJ0aWVzJykscD1iKCdnZScpLHE9 YigndHgnKTtmdW5jdGlvbiByKHMsdCl7dGhpcy5lbGVtZW50PXRoaXMuY29udGVu dD1uKHMpO28odGhpcyx0KTt9byhyLnByb3RvdHlwZSxnLHtldmVudHM6WydoaWdo bGlnaHQnLCdyZW5kZXInLCdyZXNldCcsJ3NlbGVjdCcsJ2JlZm9yZVJlbmRlcics J25leHQnLCdwcmV2J10scmVuZGVyZXI6aSxhdXRvU2VsZWN0OmZhbHNlLGFjY2Vz c2libGVSZXN1bHRzVGV4dDoiVGVyc2VkaWEgaGFzaWwgaXNpLW90b21hdGlzLiBH dW5ha2FuIHRvbWJvbCBwYW5haCBuYWlrIGRhbiB0dXJ1biB1bnR1ayBtZW5qZWxh amFoaSBoYXNpbC4iLGFjY2Vzc2libGVFbXB0eVRleHQ6IlRpZGFrIHRlcnNlZGlh IGhhc2lsIGlzaS1vdG9tYXRpcy4iLGlnbm9yZU1vdXNlb3ZlcjpmYWxzZSxpbml0 OmZ1bmN0aW9uKCl7dGhpcy5pbml0PWJhZ29maG9sZGluZzt0aGlzLmluaXRpYWxp emVFdmVudHMoKTt0aGlzLnJlc2V0KCk7fSxpbml0aWFsaXplRXZlbnRzOmZ1bmN0 aW9uKCl7RXZlbnQubGlzdGVuKHRoaXMuZWxlbWVudCx7bW91c2V1cDp0aGlzLm1v dXNldXAuYmluZCh0aGlzKSxtb3VzZW92ZXI6dGhpcy5tb3VzZW92ZXIuYmluZCh0 aGlzKX0pO30sc2V0VHlwZWFoZWFkOmZ1bmN0aW9uKHMpe3RoaXMudHlwZWFoZWFk PXM7fSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudDt9 LG1vdXNldXA6ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LmJ1dHRvbiE9Mil7dGhp cy5zZWxlY3QodHJ1ZSk7ZXZlbnQua2lsbCgpO319LG1vdXNlb3ZlcjpmdW5jdGlv bihldmVudCl7aWYodGhpcy5pZ25vcmVNb3VzZW92ZXIpe3RoaXMuaWdub3JlTW91 c2VvdmVyPWZhbHNlO3JldHVybjt9aWYodGhpcy52aXNpYmxlKXRoaXMuaGlnaGxp Z2h0KHRoaXMuZ2V0SW5kZXgoZXZlbnQpKTt9LHJlc2V0OmZ1bmN0aW9uKHMpe2lm KCFzKXRoaXMuZGlzYWJsZUF1dG9TZWxlY3Q9ZmFsc2U7dGhpcy5qdXN0UmVuZGVy ZWQ9ZmFsc2U7dGhpcy5qdXN0U2hvd249ZmFsc2U7dGhpcy5pbmRleD0tMTt0aGlz Lml0ZW1zPVtdO3RoaXMucmVzdWx0cz1bXTt0aGlzLnZhbHVlPScnO3RoaXMuY29u dGVudC5pbm5lckhUTUw9Jyc7dGhpcy5pbmZvcm0oJ3Jlc2V0Jyk7cmV0dXJuIHRo aXM7fSxnZXRJbmRleDpmdW5jdGlvbihldmVudCl7cmV0dXJuIHRoaXMuaXRlbXMu aW5kZXhPZihtLmJ5VGFnKGV2ZW50LmdldFRhcmdldCgpLCdsaScpKTt9LGdldFNl bGVjdGlvbjpmdW5jdGlvbigpe3ZhciBzPXRoaXMucmVzdWx0c1t0aGlzLmluZGV4 XXx8bnVsbDtyZXR1cm4gdGhpcy52aXNpYmxlP3M6bnVsbDt9LGlzRW1wdHk6ZnVu Y3Rpb24oKXtyZXR1cm4gIXRoaXMucmVzdWx0cy5sZW5ndGg7fSxpc1Zpc2libGU6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aXNpYmxlO30sc2hvdzpmdW5jdGlvbigp e2suc2hvdyh0aGlzLmVsZW1lbnQpO2lmKHRoaXMucmVzdWx0cyYmdGhpcy5yZXN1 bHRzLmxlbmd0aClpZih0aGlzLmF1dG9TZWxlY3Qpe2gubm90aWZ5KHEuXygie25h bWV9IGRpcGlsaWggb3RvbWF0aXMuIEd1bmFrYW4gdG9tYm9sIHBhbmFoIG5haWsg ZGFuIHR1cnVuIHVudHVrIG1lbmplbGFqYWhpIGhhc2lsIGxhaW4uIix7bmFtZTp0 aGlzLmdldEl0ZW1UZXh0KHRoaXMuc2VsZWN0ZWQpfSkpO31lbHNlIGgubm90aWZ5 KHRoaXMuYWNjZXNzaWJsZVJlc3VsdHNUZXh0KTt0aGlzLnR5cGVhaGVhZCYmdGhp cy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ3RydWUnKTt0 aGlzLnZpc2libGU9dHJ1ZTtyZXR1cm4gdGhpczt9LGhpZGU6ZnVuY3Rpb24oKXtr LmhpZGUodGhpcy5lbGVtZW50KTtoLm5vdGlmeSgnJyk7dGhpcy50eXBlYWhlYWQm JnRoaXMudHlwZWFoZWFkLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ2Zh bHNlJyk7dGhpcy52aXNpYmxlPWZhbHNlO3JldHVybiB0aGlzO30scmVuZGVyOmZ1 bmN0aW9uKHMsdCx1KXt0aGlzLnZhbHVlPXM7aWYoIXQubGVuZ3RoKXtpZih0aGlz LnJlc3VsdHMubGVuZ3RoJiZzKWgubm90aWZ5KHRoaXMuYWNjZXNzaWJsZUVtcHR5 VGV4dCk7dGhpcy5yZXNldCh0cnVlKTtyZXR1cm47fXRoaXMuanVzdFJlbmRlcmVk PXRydWU7aWYoIXRoaXMucmVzdWx0cy5sZW5ndGgpe3RoaXMuanVzdFNob3duPXRy dWU7aWYoIXRoaXMuYXV0b1NlbGVjdCYmdGhpcy5pc1Zpc2libGUoKSYmdC5sZW5n dGgpaC5ub3RpZnkodGhpcy5hY2Nlc3NpYmxlUmVzdWx0c1RleHQpO312YXIgdj17 cmVzdWx0czp0LHZhbHVlOnN9O3RoaXMuaW5mb3JtKCdiZWZvcmVSZW5kZXInLHYp O3Q9di5yZXN1bHRzO3ZhciB3PXRoaXMuZ2V0RGVmYXVsdEluZGV4KHQpO2lmKHRo

aXMuaW5kZXg+MCYmdGhpcy5pbmRleCE9PXRoaXMuZ2V0RGVmYXVsdEluZGV4KHRo aXMucmVzdWx0cykpe3ZhciB4PXRoaXMucmVzdWx0c1t0aGlzLmluZGV4XTtmb3Io dmFyIHk9MCx6PXQubGVuZ3RoO3k8ejsrK3kpaWYoeC51aWQ9PXRbeV0udWlkKXt3 PXk7YnJlYWs7fX10aGlzLnJlc3VsdHM9dDtsLnNldENvbnRlbnQodGhpcy5jb250 ZW50LHRoaXMuYnVpbGRSZXN1bHRzKHQpKTt0aGlzLml0ZW1zPXRoaXMuZ2V0SXRl bXMoKTt0aGlzLmhpZ2hsaWdodCh3LGZhbHNlKTt0aGlzLmluZm9ybSgncmVuZGVy Jyx0KTt9LGdldEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc2NyeSh0aGlzLmNv bnRlbnQsJ2xpJyk7fSxidWlsZFJlc3VsdHM6ZnVuY3Rpb24ocyl7dmFyIHQsdT1u dWxsO2lmKHR5cGVvZiB0aGlzLnJlbmRlcmVyPT0nZnVuY3Rpb24nKXt0PXRoaXMu cmVuZGVyZXI7dT10aGlzLnJlbmRlcmVyLmNsYXNzTmFtZXx8Jyc7fWVsc2V7dD1h LlR5cGVhaGVhZFJlbmRlcmVyc1t0aGlzLnJlbmRlcmVyXTt1PXRoaXMucmVuZGVy ZXI7fXQ9dC5iaW5kKHRoaXMpO3ZhciB2PXMubWFwKGZ1bmN0aW9uKHgseSl7dmFy IHo9eC5ub2RlfHx0KHgseSk7ei5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCdsaXN0aXRl bScpO3JldHVybiB6O30pLHc9bC5jcmVhdGUoJ3VsJyx7Y2xhc3NOYW1lOnUsaWQ6 J3R5cGVhaGVhZF9saXN0XycrKHRoaXMudHlwZWFoZWFkP2wuZ2V0SUQodGhpcy50 eXBlYWhlYWQpOmwuZ2V0SUQodGhpcy5lbGVtZW50KSl9LHYpO3cuc2V0QXR0cmli dXRlKCdyb2xlJywnbGlzdGJveCcpO3JldHVybiB3O30sZ2V0RGVmYXVsdEluZGV4 OmZ1bmN0aW9uKHMpe3ZhciB0PSh0aGlzLmF1dG9TZWxlY3QmJiF0aGlzLmRpc2Fi bGVBdXRvU2VsZWN0KTtyZXR1cm4gdGhpcy5pbmRleDwwJiYhdD8tMTowO30sbmV4 dDpmdW5jdGlvbigpe3RoaXMuaGlnaGxpZ2h0KHRoaXMuaW5kZXgrMSk7dGhpcy5p bmZvcm0oJ25leHQnLHRoaXMuc2VsZWN0ZWQpO30scHJldjpmdW5jdGlvbigpe3Ro aXMuaGlnaGxpZ2h0KHRoaXMuaW5kZXgtMSk7dGhpcy5pbmZvcm0oJ3ByZXYnLHRo aXMuc2VsZWN0ZWQpO30sZ2V0SXRlbVRleHQ6ZnVuY3Rpb24ocyl7dmFyIHQ9Jyc7 aWYocyl7dD1zLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO2lmKCF0KXt0PWwu Z2V0VGV4dChzKTtzLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdCk7fX1yZXR1 cm4gdDt9LHNldElzVmlld2luZ1NlbGVjdGVkSXRlbXM6ZnVuY3Rpb24ocyl7dGhp cy52aWV3aW5nU2VsZWN0ZWQ9cztyZXR1cm4gdGhpczt9LGdldElzVmlld2luZ1Nl bGVjdGVkSXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWV3aW5nU2VsZWN0 ZWQ7fSxoaWdobGlnaHQ6ZnVuY3Rpb24ocyx0KXt2YXIgdT10cnVlO2lmKHRoaXMu c2VsZWN0ZWQpe2sucmVtb3ZlQ2xhc3ModGhpcy5zZWxlY3RlZCwnc2VsZWN0ZWQn KTt0aGlzLnNlbGVjdGVkLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsJ2Zh bHNlJyk7fWlmKHM+dGhpcy5pdGVtcy5sZW5ndGgtMSl7cz0tMTt9ZWxzZSBpZihz PC0xKXM9dGhpcy5pdGVtcy5sZW5ndGgtMTtpZihzPj0wJiZzPHRoaXMuaXRlbXMu bGVuZ3RoKXtpZih0aGlzLnNlbGVjdGVkJiZ0aGlzLmdldEl0ZW1UZXh0KHRoaXMu aXRlbXNbc10pPT09dGhpcy5nZXRJdGVtVGV4dCh0aGlzLnNlbGVjdGVkKSl1PWZh bHNlO3RoaXMuc2VsZWN0ZWQ9dGhpcy5pdGVtc1tzXTtrLmFkZENsYXNzKHRoaXMu c2VsZWN0ZWQsJ3NlbGVjdGVkJyk7dGhpcy5zZWxlY3RlZC5zZXRBdHRyaWJ1dGUo J2FyaWEtc2VsZWN0ZWQnLCd0cnVlJyk7fXRoaXMuaW5kZXg9czt0aGlzLmRpc2Fi bGVBdXRvU2VsZWN0PShzPT0tMSk7dmFyIHY9KHMhPT0tMSksdz10aGlzLmdldEl0 ZW1UZXh0KHRoaXMuc2VsZWN0ZWQpO2lmKHMhPT0tMSYmdGhpcy5pc1Zpc2libGUo KSYmdyYmdGhpcy5hdXRvU2VsZWN0KWlmKHRoaXMuanVzdFNob3duKXtoLm5vdGlm eShxLl8oIntuYW1lfSBkaXBpbGloIG90b21hdGlzLiBHdW5ha2FuIHRvbWJvbCBw YW5haCBuYWlrIGRhbiB0dXJ1biB1bnR1ayBtZW5qZWxhamFoaSBoYXNpbCBsYWlu LiIse25hbWU6d30pKTt0aGlzLmp1c3RSZW5kZXJlZD1mYWxzZTt0aGlzLmp1c3RT aG93bj1mYWxzZTt2PWZhbHNlO31lbHNlIGlmKHUmJnRoaXMuanVzdFJlbmRlcmVk KXtoLm5vdGlmeShxLl8oIntuYW1lfSBkaXBpbGloIG90b21hdGlzLiIse25hbWU6 d30pKTt0aGlzLmp1c3RSZW5kZXJlZD1mYWxzZTt2PWZhbHNlO31pZih1JiZ2KWgu YW5ub3VuY2Uodyk7aWYodCE9PWZhbHNlKXRoaXMuaW5mb3JtKCdoaWdobGlnaHQn LHtpbmRleDpzLHNlbGVjdGVkOnRoaXMucmVzdWx0c1tzXSxlbGVtZW50OnRoaXMu c2VsZWN0ZWR9KTt9LHNlbGVjdDpmdW5jdGlvbihzKXt2YXIgdD10aGlzLmluZGV4 LHU9dGhpcy5yZXN1bHRzW3RdO2lmKHUpe3RoaXMuaW5mb3JtKCdzZWxlY3QnLHtp bmRleDp0LGNsaWNrZWQ6ISFzLHNlbGVjdGVkOnV9KTt0aGlzLmluZm9ybSgnYWZ0 ZXJTZWxlY3QnKTt9fX0pO2UuZXhwb3J0cz1yO30pOwpfX2QoIkJ1Y2tldGVkVHlw ZWFoZWFkVmlldyIsWyJDbGFzcyIsIkRPTSIsIlR5cGVhaGVhZFZpZXciLCJjb3B5 UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDbGFz cycpLGg9YignRE9NJyksaT1iKCdUeXBlYWhlYWRWaWV3Jyksaj1iKCdjb3B5UHJv cGVydGllcycpO2Z1bmN0aW9uIGsobCxtKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3Qo dGhpcyxsLG0pO31nLmV4dGVuZChrLGkpO2ooay5wcm90b3R5cGUse3JlbmRlcjpm dW5jdGlvbihsLG0sbil7bT10aGlzLmJ1aWxkQnVja2V0cyhsLG0pO3JldHVybiB0 aGlzLnBhcmVudC5yZW5kZXIobCxtLG4pO30saGlnaGxpZ2h0OmZ1bmN0aW9uKGws

bSl7aWYobD09LTEmJnRoaXMuaW5kZXghPT0wKWw9dGhpcy5pbmRleDtpZihsPj0w JiZsPHRoaXMuaXRlbXMubGVuZ3RoJiZ0aGlzLnJlc3VsdHNbbF0udHlwZT09J2hl YWRlcicpbD1sKzE7dGhpcy5wYXJlbnQuaGlnaGxpZ2h0KGwsbSk7fSxidWlsZEJ1 Y2tldHM6ZnVuY3Rpb24obCxtKXtpZighdGhpcy50eXBlT2JqZWN0cylyZXR1cm4g bTt2YXIgbj1bXSxvPXt9O2Zvcih2YXIgcD0wO3A8bS5sZW5ndGg7KytwKXt2YXIg cT1tW3BdLHI9cS5yZW5kZXJfdHlwZXx8cS50eXBlO2lmKCFvLmhhc093blByb3Bl cnR5KHIpKXtvW3JdPW4ubGVuZ3RoO24ucHVzaChbdGhpcy5idWlsZEJ1Y2tldEhl YWRlcihyKV0pO31xLmNsYXNzTmFtZXM9cjtxLmdyb3VwSW5kZXg9b1tyXTtxLmlu ZGV4SW5Hcm91cD1uW3EuZ3JvdXBJbmRleF0ubGVuZ3RoLTE7bltxLmdyb3VwSW5k ZXhdLnB1c2gocSk7fXZhciBzPVtdO2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGg7Kyt0 KXM9cy5jb25jYXQoblt0XSk7cmV0dXJuIHM7fSxidWlsZEJ1Y2tldEhlYWRlcjpm dW5jdGlvbihsKXt2YXIgbT10aGlzLnR5cGVPYmplY3RzW2xdO2lmKG0ubWFya3Vw KXttLnRleHQ9bS5tYXJrdXA7ZGVsZXRlIG0ubWFya3VwO31yZXR1cm4gdGhpcy50 eXBlT2JqZWN0c1tsXTt9LGJ1aWxkUmVzdWx0czpmdW5jdGlvbihsKXt2YXIgbT10 aGlzLnBhcmVudC5idWlsZFJlc3VsdHMobCk7aWYodGhpcy50eXBlT2JqZWN0cyl7 cmV0dXJuIGguY3JlYXRlKCdkaXYnLHtjbGFzc05hbWU6J2J1Y2tldGVkJ30sW21d KTt9ZWxzZSByZXR1cm4gbTt9LHNlbGVjdDpmdW5jdGlvbihsKXt2YXIgbT10aGlz LnJlc3VsdHNbdGhpcy5pbmRleF07aWYobSYmbS50eXBlIT0naGVhZGVyJyl0aGlz LnBhcmVudC5zZWxlY3QobCk7fSxnZXREZWZhdWx0SW5kZXg6ZnVuY3Rpb24obCl7 dmFyIG09KHRoaXMuYXV0b1NlbGVjdCYmIXRoaXMuZGlzYWJsZUF1dG9TZWxlY3Qp LG49bC5sZW5ndGg9PT0wPy0xOihsWzBdLnR5cGU9PSdoZWFkZXInPzE6MCk7cmV0 dXJuIHRoaXMuaW5kZXg8MCYmIW0/LTE6bjt9LHByZXY6ZnVuY3Rpb24oKXt2YXIg bD10aGlzLnJlc3VsdHNbdGhpcy5pbmRleC0xXTtpZihsJiZsLnR5cGU9PSdoZWFk ZXInKXRoaXMuaW5kZXgtLTtyZXR1cm4gdGhpcy5wYXJlbnQucHJldigpO30sbmV4 dDpmdW5jdGlvbigpe3ZhciBsPXRoaXMucmVzdWx0c1t0aGlzLmluZGV4KzFdO2lm KGwmJmwudHlwZT09J2hlYWRlcicpdGhpcy5pbmRleCsrO3JldHVybiB0aGlzLnBh cmVudC5uZXh0KCk7fX0pO2UuZXhwb3J0cz1rO30pOwpfX2QoIkNvbnRleHR1YWxU eXBlYWhlYWRWaWV3IixbImV2ZW50LWV4dGVuc2lvbnMiLCJDbGFzcyIsIkNvbnRl eHR1YWxMYXllciIsIkNvbnRleHR1YWxMYXllckF1dG9GbGlwIiwiQ29udGV4dHVh bExheWVySGlkZU9uU2Nyb2xsIiwiQ1NTIiwiRE9NIiwiU3R5bGUiLCJCdWNrZXRl ZFR5cGVhaGVhZFZpZXciLCJWZWN0b3IiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9Yign Q2xhc3MnKSxoPWIoJ0NvbnRleHR1YWxMYXllcicpLGk9YignQ29udGV4dHVhbExh eWVyQXV0b0ZsaXAnKSxqPWIoJ0NvbnRleHR1YWxMYXllckhpZGVPblNjcm9sbCcp LGs9YignQ1NTJyksbD1iKCdET00nKSxtPWIoJ1N0eWxlJyksbj1iKCdCdWNrZXRl ZFR5cGVhaGVhZFZpZXcnKSxvPWIoJ1ZlY3RvcicpLHA9YignY29weVByb3BlcnRp ZXMnKTtmdW5jdGlvbiBxKHIscyl7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMs cixzKTt9Zy5leHRlbmQocSxuKTtwKHEucHJvdG90eXBlLHtpbml0OmZ1bmN0aW9u KCl7dGhpcy5pbml0aWFsaXplTGF5ZXIoKTt0aGlzLnBhcmVudC5pbml0KCk7fSxp bml0aWFsaXplTGF5ZXI6ZnVuY3Rpb24oKXt0aGlzLmNvbnRleHQ9dGhpcy5nZXRD b250ZXh0KCk7dGhpcy53cmFwcGVyPWwuY3JlYXRlKCdkaXYnKTtsLmFwcGVuZENv bnRlbnQodGhpcy53cmFwcGVyLHRoaXMuZWxlbWVudCk7ay5hZGRDbGFzcyh0aGlz LmVsZW1lbnQsJ3VpQ29udGV4dHVhbFR5cGVhaGVhZFZpZXcnKTt0aGlzLmxheWVy PW5ldyBoKHtjb250ZXh0OnRoaXMuY29udGV4dCxwb3NpdGlvbjonYmVsb3cnLGNh dXNhbEVsZW1lbnQ6dGhpcy5jYXVzYWxFbGVtZW50fSx0aGlzLndyYXBwZXIpO3Ro aXMubGF5ZXIuZW5hYmxlQmVoYXZpb3Ioaik7aWYobS5pc0ZpeGVkKHRoaXMuY29u dGV4dCkpdGhpcy5sYXllci5lbmFibGVCZWhhdmlvcihpKTt0aGlzLnN1YnNjcmli ZSgncmVuZGVyJyx0aGlzLnJlbmRlckxheWVyLmJpbmQodGhpcykpO30sc2hvdzpm dW5jdGlvbigpe3RoaXMubGF5ZXIuc2hvdygpO28uZ2V0RWxlbWVudERpbWVuc2lv bnModGhpcy5jb250ZXh0KS5zZXRFbGVtZW50V2lkdGgodGhpcy53cmFwcGVyKTty ZXR1cm4gdGhpcy5wYXJlbnQuc2hvdygpO30saGlkZTpmdW5jdGlvbigpe3RoaXMu bGF5ZXIuaGlkZSgpO3JldHVybiB0aGlzLnBhcmVudC5oaWRlKCk7fSxyZW5kZXJM YXllcjpmdW5jdGlvbigpe2lmKCF0aGlzLmlzVmlzaWJsZSgpKXJldHVybjtpZih0 aGlzLmxheWVyLmlzU2hvd24oKSl7dGhpcy5sYXllci51cGRhdGVQb3NpdGlvbigp O31lbHNlIHRoaXMubGF5ZXIuc2hvdygpO30sZ2V0Q29udGV4dDpmdW5jdGlvbigp e3JldHVybiB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZTt9fSk7ZS5leHBvcnRzPXE7 fSk7Cl9fZCgiQ3VzdG9tUHJpdmFjeU9wdGlvbiIsWyJldmVudC1leHRlbnNpb25z IiwiQXN5bmNSZXF1ZXN0IiwiRGlhbG9nIiwiRE9NIiwiRm9ybSIsIlBhcmVudCIs IlNlbGVjdG9yIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FzeW5jUmVxdWVzdCcp

LGg9YignRGlhbG9nJyksaT1iKCdET00nKSxqPWIoJ0Zvcm0nKSxrPWIoJ1BhcmVu dCcpLGw9YignU2VsZWN0b3InKSxtPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rp b24gbigpe31tKG4se19pbnN0YW5jZXM6e30sdXBkYXRlOmZ1bmN0aW9uKG8scCxx LHIpe3ZhciBzPW4uX2luc3RhbmNlc1tvXTtzLl91cGRhdGUocCxxKS5fdXBkYXRl T3B0aW9uKHEscik7QXJiaXRlci5pbmZvcm0oJ0Zvcm0vY2hhbmdlJyx7bm9kZTpz Ll9jb250YWluZXJ9KTt9LGdldERhdGE6ZnVuY3Rpb24obyl7cmV0dXJuIG4uX2lu c3RhbmNlc1tvXS5fcHJpdmFjeURhdGE7fX0pO20obi5wcm90b3R5cGUse2luaXQ6 ZnVuY3Rpb24obyxwLHEscixzKXsoZnVuY3Rpb24oKXt2YXIgdD10aGlzLmluaXRD dXN0b21TdGF0ZShvLHApO2lmKCF0KXJldHVybjtFdmVudC5saXN0ZW4odCwnY2xp Y2snLGZ1bmN0aW9uKGV2ZW50KXt0aGlzLm9wZW5DdXN0b21EaWFsb2coZXZlbnQs byxxLHMpO30uYmluZCh0aGlzKSk7dGhpcy5faW5pdFNlbGVjdG9yKHQscik7fSku YmluZCh0aGlzKS5kZWZlcigpO30sX2luaXRTZWxlY3RvcjpmdW5jdGlvbihvLHAp e3RoaXMuX3NlbGVjdG9yPWsuYnlDbGFzcyhvLCd1aVNlbGVjdG9yJyk7bC5saXN0 ZW4odGhpcy5fc2VsZWN0b3IsJ3NlbGVjdCcsZnVuY3Rpb24ocSl7aWYocS5vcHRp b24uX2lkIT10aGlzLl9pZCl0aGlzLmNsZWFyQ3VzdG9tU3RhdGUoKTt9LmJpbmQo dGhpcykpO2lmKHApbC5zZXRCdXR0b25Ub29sdGlwKHRoaXMuX3NlbGVjdG9yLHAp O30sX3VwZGF0ZU9wdGlvbjpmdW5jdGlvbihvLHApe3ZhciBxPWwuZ2V0T3B0aW9u KHRoaXMuX3NlbGVjdG9yLG8pfHxsLmdldE9wdGlvbih0aGlzLl9zZWxlY3RvcixQ cml2YWN5QmFzZVZhbHVlLkNVU1RPTSsnJyk7QXJiaXRlci5pbmZvcm0oJ0N1c3Rv bVByaXZhY3lPcHRpb24vdXBkYXRlJyx7c2VsZWN0b3I6dGhpcy5fc2VsZWN0b3Is b3B0aW9uOnEsdG9vbHRpcDpwfSk7cmV0dXJuIHRoaXM7fSxfdXBkYXRlOmZ1bmN0 aW9uKG8scCl7dmFyIHE9cD09UHJpdmFjeUJhc2VWYWx1ZS5DVVNUT018fCFsLmdl dE9wdGlvbih0aGlzLl9zZWxlY3RvcixwKSxyPXRoaXMuX3NlbGVjdG9yLmdldEF0 dHJpYnV0ZSgnZGF0YS1uYW1lJyk7dGhpcy51cGRhdGVDdXN0b21TdGF0ZShvLHEs cik7cmV0dXJuIHRoaXM7fSxpbml0Q3VzdG9tU3RhdGU6ZnVuY3Rpb24obyxwKXt2 YXIgcT1nZShvKTtpZighcSlyZXR1cm4gcTtuLl9pbnN0YW5jZXNbb109dGhpczt0 aGlzLl9jb250YWluZXI9aS5maW5kKHEsJy5jdXN0b21Qcml2YWN5SW5wdXRzJyk7 dGhpcy5faWQ9cDt0aGlzLl9wcml2YWN5RGF0YT17fTt2YXIgcj1qLnNlcmlhbGl6 ZSh0aGlzLl9jb250YWluZXIpO2lmKHIuYXVkaWVuY2UpdGhpcy5fcHJpdmFjeURh dGE9ci5hdWRpZW5jZVtwXTtyZXR1cm4gcTt9LG9wZW5DdXN0b21EaWFsb2c6ZnVu Y3Rpb24oZXZlbnQsbyxwLHEpe3ZhciByPW5ldyBnKCcvYWpheC9wcml2YWN5L2N1 c3RvbV9kaWFsb2cvJykuc2V0RGF0YSh7b3B0aW9uX2lkOm8saWQ6dGhpcy5faWQs cHJpdmFjeV9kYXRhOnRoaXMuX3ByaXZhY3lEYXRhLGV4cGxhaW5fdGFnczpwLGF1 dG9zYXZlOnF9KTtuZXcgaCgpLnNldEFzeW5jKHIpLnNldE1vZGFsKHRydWUpLnNl dENhdXNhbEVsZW1lbnQoZXZlbnQuZ2V0VGFyZ2V0KCkpLnNob3coKTt9LHVwZGF0 ZUN1c3RvbVN0YXRlOmZ1bmN0aW9uKG8scCxxKXt0aGlzLmNsZWFyQ3VzdG9tU3Rh dGUoKTt0aGlzLl9wcml2YWN5RGF0YT1tKHt9LG8pO2lmKHApaWYocSl7cT1xLnNs aWNlKDAsLSdbdmFsdWVdJy5sZW5ndGgpO3ZhciByPXt9O3JbcV09bztqLmNyZWF0 ZUhpZGRlbklucHV0cyhyLHRoaXMuX2NvbnRhaW5lcixudWxsLHRydWUpO319LGNs ZWFyQ3VzdG9tU3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9wcml2YWN5RGF0YT17fTtp LmVtcHR5KHRoaXMuX2NvbnRhaW5lcik7fX0pO2UuZXhwb3J0cz1uO30pOwpfX2Qo IlR5cGVhaGVhZFV0aWwiLFsiZnVuY3Rpb24tZXh0ZW5zaW9ucyJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9L1sg XSsvZyxoPS9bXiBdKy9nLGk9L1suLCsqPyR8I3t9KClcXlwtXFtcXVxcXC8hQCUn In49PD5fOjtcdTIwMTBcdTIwMTFcdTIwMTJcdTIwMTNcdTIwMTRcdTIwMTVcdTMw ZmJcdWZmMWFdL2csaj17fSxrPXthOiJcdTA0MzAgXHUwMGUwIFx1MDBlMSBcdTAw ZTIgXHUwMGUzIFx1MDBlNCBcdTAwZTUiLGI6Ilx1MDQzMSIsYzoiXHUwNDQ2IFx1 MDBlNyBcdTAxMGQiLGQ6Ilx1MDQzNCBcdTAwZjAgXHUwMTBmIFx1MDExMSIsZToi XHUwNDRkIFx1MDQzNSBcdTAwZTggXHUwMGU5IFx1MDBlYSBcdTAwZWIgXHUwMTFi IixmOiJcdTA0NDQiLGc6Ilx1MDQzMyBcdTAxMWYiLGg6Ilx1MDQ0NSBcdTAxMjci LGk6Ilx1MDQzOCBcdTAwZWMgXHUwMGVkIFx1MDBlZSBcdTAwZWYgXHUwMTMxIixq OiJcdTA0MzkiLGs6Ilx1MDQzYSBcdTAxMzgiLGw6Ilx1MDQzYiBcdTAxM2UgXHUw MTNhIFx1MDE0MCBcdTAxNDIiLG06Ilx1MDQzYyIsbjoiXHUwNDNkIFx1MDBmMSBc dTAxNDggXHUwMTQ5IFx1MDE0YiIsbzoiXHUwNDNlIFx1MDBmOCBcdTAwZjYgXHUw MGY1IFx1MDBmNCBcdTAwZjMgXHUwMGYyIixwOiJcdTA0M2YiLHI6Ilx1MDQ0MCBc dTAxNTkgXHUwMTU1IixzOiJcdTA0NDEgXHUwMTVmIFx1MDE2MSBcdTAxN2YiLHQ6 Ilx1MDQ0MiBcdTAxNjUgXHUwMTY3IFx1MDBmZSIsdToiXHUwNDQzIFx1MDQ0ZSBc dTAwZmMgXHUwMGZiIFx1MDBmYSBcdTAwZjkgXHUwMTZmIix2OiJcdTA0MzIiLHk6 Ilx1MDQ0YiBcdTAwZmYgXHUwMGZkIix6OiJcdTA0MzcgXHUwMTdlIixhZToiXHUw MGU2IixvZToiXHUwMTUzIix0czoiXHUwNDQ2IixjaDoiXHUwNDQ3IixpajoiXHUw

MTMzIixzaDoiXHUwNDQ4IixzczoiXHUwMGRmIix5YToiXHUwNDRmIn07Zm9yKHZh ciBsIGluIGspe3ZhciBtPWtbbF0uc3BsaXQoJyAnKTtmb3IodmFyIG49MDtuPG0u bGVuZ3RoO24rKylqW21bbl1dPWw7fXZhciBvPXt9O2Z1bmN0aW9uIHAodil7cmV0 dXJuIHY/di5yZXBsYWNlKGksJyAnKTonJzt9ZnVuY3Rpb24gcSh2KXt2PSgnJyt2 KS50b0xvd2VyQ2FzZSgpO3ZhciB3PScnLHg9Jyc7Zm9yKHZhciB5PXYubGVuZ3Ro O3ktLTspe3g9di5jaGFyQXQoeSk7dz0oalt4XXx8eCkrdzt9cmV0dXJuIHcucmVw bGFjZShnLCcgJyk7fWZ1bmN0aW9uIHIodil7dmFyIHc9W10seD1oLmV4ZWModik7 d2hpbGUoeCl7eD14WzBdO3cucHVzaCh4KTt4PWguZXhlYyh2KTt9cmV0dXJuIHc7 fWZ1bmN0aW9uIHModix3KXt2PScnK3Y7aWYoIW8uaGFzT3duUHJvcGVydHkodikp e3ZhciB4PXEodikseT1wKHgpO29bdl09e3ZhbHVlOnYsZmxhdFZhbHVlOngsdG9r ZW5zOnIoeSksaXNQcmVmaXhRdWVyeTp5JiZ5W3kubGVuZ3RoLTFdIT0nICd9O31p Zih3JiZ0eXBlb2Ygb1t2XS5zb3J0ZWRUb2tlbnM9PSd1bmRlZmluZWQnKXtvW3Zd LnNvcnRlZFRva2Vucz1vW3ZdLnRva2Vucy5zbGljZSgpO29bdl0uc29ydGVkVG9r ZW5zLnNvcnQoZnVuY3Rpb24oeixhYSl7cmV0dXJuIGFhLmxlbmd0aC16Lmxlbmd0 aDt9KTt9cmV0dXJuIG9bdl07fWZ1bmN0aW9uIHQodix3LHgpe3ZhciB5PXModyx2 PT0ncHJlZml4Jyksej12PT0ncHJlZml4Jz95LnNvcnRlZFRva2Vuczp5LnRva2Vu cyxhYT1zKHgpLnRva2VucyxiYT17fSxjYT15LmlzUHJlZml4UXVlcnkmJnY9PSdx dWVyeSc/ei5sZW5ndGgtMTpudWxsLGRhPWZ1bmN0aW9uKGVhLGZhKXtmb3IodmFy IGdhPTA7Z2E8YWEubGVuZ3RoOysrZ2Epe3ZhciBoYT1hYVtnYV07aWYoIWJhW2dh XSYmKGhhPT1lYXx8KCh2PT0ncXVlcnknJiZmYT09PWNhfHx2PT0ncHJlZml4Jykm JmhhLmluZGV4T2YoZWEpPT09MCkpKXJldHVybiAoYmFbZ2FdPXRydWUpO31yZXR1 cm4gZmFsc2U7fTtyZXR1cm4gei5sZW5ndGgmJnouZXZlcnkoZGEpO312YXIgdT17 cGFyc2U6cyxpc0V4YWN0TWF0Y2g6dC5jdXJyeSgnZXhhY3QnKSxpc1F1ZXJ5TWF0 Y2g6dC5jdXJyeSgncXVlcnknKSxpc1ByZWZpeE1hdGNoOnQuY3VycnkoJ3ByZWZp eCcpfTtlLmV4cG9ydHM9dTt9KTsKX19kKCJEYXRhU291cmNlIixbImFycmF5LWV4 dGVuc2lvbnMiLCJBcmJpdGVyTWl4aW4iLCJBc3luY1JlcXVlc3QiLCJUeXBlYWhl YWRVdGlsIiwiY29weVByb3BlcnRpZXMiLCJjcmVhdGVBcnJheUZyb20iLCJjcmVh dGVPYmplY3RGcm9tIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2FycmF5LWV4 dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyTWl4aW4nKSxoPWIoJ0FzeW5jUmVx dWVzdCcpLGk9YignVHlwZWFoZWFkVXRpbCcpLGo9YignY29weVByb3BlcnRpZXMn KSxrPWIoJ2NyZWF0ZUFycmF5RnJvbScpLGw9YignY3JlYXRlT2JqZWN0RnJvbScp O2Z1bmN0aW9uIG0obil7dGhpcy5fbWF4UmVzdWx0cz1uLm1heFJlc3VsdHN8fDEw O3RoaXMudG9rZW49bi50b2tlbjt0aGlzLnF1ZXJ5RGF0YT1uLnF1ZXJ5RGF0YXx8 e307dGhpcy5xdWVyeUVuZHBvaW50PW4ucXVlcnlFbmRwb2ludHx8Jyc7dGhpcy5i b290c3RyYXBEYXRhPW4uYm9vdHN0cmFwRGF0YXx8e307dGhpcy5ib290c3RyYXBF bmRwb2ludD1uLmJvb3RzdHJhcEVuZHBvaW50fHwnJzt0aGlzLl9leGNsdXNpb25z PW4uZXhjbHVzaW9uc3x8W107dGhpcy5faW5kZXhlZEZpZWxkcz1uLmluZGV4ZWRG aWVsZHN8fFsndGV4dCcsJ3Rva2VucyddO3RoaXMuX3RpdGxlRmllbGRzPW4udGl0 bGVGaWVsZHN8fFtdO3RoaXMuX2Fsd2F5c1ByZWZpeE1hdGNoPW4uYWx3YXlzUHJl Zml4TWF0Y2h8fGZhbHNlO3RoaXMuX2RlZHVwbGljYXRpb25LZXk9bi5kZWR1cGxp Y2F0aW9uS2V5fHxudWxsO3RoaXMuX21pbkV4YWN0TWF0Y2hMZW5ndGg9NDt0aGlz Ll9maWx0ZXJzPVtdO31qKG0ucHJvdG90eXBlLGcse2V2ZW50czpbJ2Jvb3RzdHJh cCcsJ3F1ZXJ5JywncmVzcG9uZCddLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLmluaXQ9 YmFnb2Zob2xkaW5nO3RoaXMuX2ZpZWxkcz1sKHRoaXMuX2luZGV4ZWRGaWVsZHMp O3RoaXMuX2FjdGl2ZVF1ZXJpZXM9MDt0aGlzLmRpcnR5KCk7fSxkaXJ0eTpmdW5j dGlvbigpe3RoaXMudmFsdWU9Jyc7dGhpcy5fYm9vdHN0cmFwcGVkPWZhbHNlO3Ro aXMuX2Jvb3RzdHJhcHBpbmc9ZmFsc2U7dGhpcy5fZGF0YT17fTt0aGlzLmxvY2Fs Q2FjaGU9e307dGhpcy5xdWVyeUNhY2hlPXt9O3RoaXMuaW5mb3JtKCdkaXJ0eScs e30pO3JldHVybiB0aGlzO30sYm9vdHN0cmFwOmZ1bmN0aW9uKCl7aWYodGhpcy5f Ym9vdHN0cmFwcGVkKXJldHVybjt0aGlzLmJvb3RzdHJhcFdpdGhvdXRUb2tlbigp O3RoaXMuX2Jvb3RzdHJhcHBlZD10cnVlO3RoaXMuX2Jvb3RzdHJhcHBpbmc9dHJ1 ZTt0aGlzLmluZm9ybSgnYm9vdHN0cmFwJyx7Ym9vdHN0cmFwcGluZzp0cnVlfSk7 fSxib290c3RyYXBXaXRob3V0VG9rZW46ZnVuY3Rpb24oKXt0aGlzLmZldGNoKHRo aXMuYm9vdHN0cmFwRW5kcG9pbnQsdGhpcy5ib290c3RyYXBEYXRhLHtib290c3Ry YXA6dHJ1ZSx0b2tlbjp0aGlzLnRva2VufSk7fSxib290c3RyYXBXaXRoVG9rZW46 ZnVuY3Rpb24oKXt2YXIgbj1qKHt9LHRoaXMuYm9vdHN0cmFwRGF0YSk7bi50b2tl bj10aGlzLnRva2VuO3RoaXMuZmV0Y2godGhpcy5ib290c3RyYXBFbmRwb2ludCxu LHtib290c3RyYXA6dHJ1ZSxyZXBsYWNlQ2FjaGU6dHJ1ZX0pO30scXVlcnk6ZnVu Y3Rpb24obixvLHApe3RoaXMuaW5mb3JtKCdiZWZvcmVRdWVyeScse3ZhbHVlOm59 KTt2YXIgcT10aGlzLmJ1aWxkVWlkcyhuLFtdLHApLHI9dGhpcy5yZXNwb25kKG4s

cSk7dGhpcy52YWx1ZT1uO3RoaXMuaW5mb3JtKCdxdWVyeScse3ZhbHVlOm4scmVz dWx0czpyfSk7dmFyIHM9aS5wYXJzZShuKS5mbGF0VmFsdWU7aWYob3x8IXN8fCF0 aGlzLnF1ZXJ5RW5kcG9pbnR8fHRoaXMuZ2V0UXVlcnlDYWNoZSgpLmhhc093blBy b3BlcnR5KHMpfHwhdGhpcy5zaG91bGRGZXRjaE1vcmVSZXN1bHRzKHIpKXJldHVy biBmYWxzZTt0aGlzLmluZm9ybSgncXVlcnlFbmRwb2ludCcse3ZhbHVlOm59KTt0 aGlzLmZldGNoKHRoaXMucXVlcnlFbmRwb2ludCx0aGlzLmdldFF1ZXJ5RGF0YShu LHEpLHt2YWx1ZTpuLGV4Y2x1c2lvbnM6cH0pO3JldHVybiB0cnVlO30sc2hvdWxk RmV0Y2hNb3JlUmVzdWx0czpmdW5jdGlvbihuKXtyZXR1cm4gbi5sZW5ndGg8dGhp cy5fbWF4UmVzdWx0czt9LGdldFF1ZXJ5RGF0YTpmdW5jdGlvbihuLG8pe3ZhciBw PWooe3ZhbHVlOm59LHRoaXMucXVlcnlEYXRhfHx7fSk7bz1vfHxbXTtpZihvLmxl bmd0aClwLmV4aXN0aW5nX2lkcz1vLmpvaW4oJywnKTtpZih0aGlzLl9ib290c3Ry YXBwaW5nKXAuYnNwPXRydWU7cmV0dXJuIHA7fSxzZXRRdWVyeURhdGE6ZnVuY3Rp b24obixvKXtpZihvKXRoaXMucXVlcnlEYXRhPXt9O2oodGhpcy5xdWVyeURhdGEs bik7cmV0dXJuIHRoaXM7fSxzZXRCb290c3RyYXBEYXRhOmZ1bmN0aW9uKG4sbyl7 aWYobyl0aGlzLmJvb3RzdHJhcERhdGE9e307aih0aGlzLmJvb3RzdHJhcERhdGEs bik7cmV0dXJuIHRoaXM7fSxnZXRFeGNsdXNpb25zOmZ1bmN0aW9uKCl7cmV0dXJu IGsodGhpcy5fZXhjbHVzaW9ucyk7fSxzZXRFeGNsdXNpb25zOmZ1bmN0aW9uKG4p e3RoaXMuX2V4Y2x1c2lvbnM9bnx8W107fSxhZGRGaWx0ZXI6ZnVuY3Rpb24obil7 dmFyIG89dGhpcy5fZmlsdGVycztvLnB1c2gobik7cmV0dXJuIHtyZW1vdmU6ZnVu Y3Rpb24oKXtvLnNwbGljZShvLmluZGV4T2YobiksMSk7fX07fSxjbGVhckZpbHRl cnM6ZnVuY3Rpb24oKXt0aGlzLl9maWx0ZXJzPVtdO30scmVzcG9uZDpmdW5jdGlv bihuLG8scCl7dmFyIHE9dGhpcy5idWlsZERhdGEobyk7dGhpcy5pbmZvcm0oJ3Jl c3BvbmQnLHt2YWx1ZTpuLHJlc3VsdHM6cSxpc0FzeW5jOiEhcH0pO3JldHVybiBx O30sYXN5bmNFcnJvckhhbmRsZXI6YmFnb2Zob2xkaW5nLGZldGNoOmZ1bmN0aW9u KG4sbyxwKXtpZighbilyZXR1cm47dmFyIHE9bmV3IGgoKS5zZXRVUkkobikuc2V0 RGF0YShvKS5zZXRNZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUpLnNldEhh bmRsZXIoZnVuY3Rpb24ocil7dGhpcy5mZXRjaEhhbmRsZXIocixwfHx7fSk7fS5i aW5kKHRoaXMpKTtpZihuPT09dGhpcy5xdWVyeUVuZHBvaW50KXEuc2V0RmluYWxs eUhhbmRsZXIoZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmVRdWVyaWVzLS07aWYoIXRo aXMuX2FjdGl2ZVF1ZXJpZXMpdGhpcy5pbmZvcm0oJ2FjdGl2aXR5Jyx7YWN0aXZp dHk6ZmFsc2V9KTt9LmJpbmQodGhpcykpO3Euc2V0RXJyb3JIYW5kbGVyKHRoaXMu YXN5bmNFcnJvckhhbmRsZXIpO3RoaXMuaW5mb3JtKCdiZWZvcmVGZXRjaCcse3Jl cXVlc3Q6cSxmZXRjaF9jb250ZXh0OnB9KTtxLnNlbmQoKTtpZihuPT09dGhpcy5x dWVyeUVuZHBvaW50KXtpZighdGhpcy5fYWN0aXZlUXVlcmllcyl0aGlzLmluZm9y bSgnYWN0aXZpdHknLHthY3Rpdml0eTp0cnVlfSk7dGhpcy5fYWN0aXZlUXVlcmll cysrO319LGZldGNoSGFuZGxlcjpmdW5jdGlvbihuLG8pe3ZhciBwPW8udmFsdWUs cT1vLmV4Y2x1c2lvbnM7aWYoIXAmJm8ucmVwbGFjZUNhY2hlKXRoaXMubG9jYWxD YWNoZT17fTt0aGlzLmFkZEVudHJpZXMobi5nZXRQYXlsb2FkKCkuZW50cmllcyxw KTt0aGlzLmluZm9ybSgnZmV0Y2hDb21wbGV0ZScse3Jlc3BvbnNlOm4sdmFsdWU6 cCxmZXRjaF9jb250ZXh0Om99KTt2YXIgcj0oIXAmJnRoaXMudmFsdWUpP3RoaXMu dmFsdWU6cDt0aGlzLnJlc3BvbmQocix0aGlzLmJ1aWxkVWlkcyhyLFtdLHEpLHRy dWUpO2lmKCFwKXtpZih0aGlzLl9ib290c3RyYXBwaW5nKXt0aGlzLl9ib290c3Ry YXBwaW5nPWZhbHNlO3RoaXMuaW5mb3JtKCdib290c3RyYXAnLHtib290c3RyYXBw aW5nOmZhbHNlfSk7fWlmKG8udG9rZW4mJm4uZ2V0UGF5bG9hZCgpLnRva2VuIT09 by50b2tlbil0aGlzLmJvb3RzdHJhcFdpdGhUb2tlbigpO319LGFkZEVudHJpZXM6 ZnVuY3Rpb24obixvKXt2YXIgcD10aGlzLnByb2Nlc3NFbnRyaWVzKGsobnx8W10p LG8pLHE9dGhpcy5idWlsZFVpZHMobyxwKTtpZihvKXt2YXIgcj10aGlzLmdldFF1 ZXJ5Q2FjaGUoKTtyW2kucGFyc2UobykuZmxhdFZhbHVlXT1xO31lbHNlIHRoaXMu ZmlsbENhY2hlKHEpO30scHJvY2Vzc0VudHJpZXM6ZnVuY3Rpb24obixvKXtyZXR1 cm4gbi5tYXAoZnVuY3Rpb24ocCxxKXt2YXIgcj0ocC51aWQ9cC51aWQrJycpLHM9 dGhpcy5nZXRFbnRyeShyKTtpZighcyl7cz1wO3MucXVlcnk9bzt0aGlzLnNldEVu dHJ5KHIscyk7fWVsc2UgaihzLHApO3MuaW5kZXg9PT11bmRlZmluZWQmJihzLmlu ZGV4PXEpO3JldHVybiByO30sdGhpcyk7fSxnZXRBbGxFbnRyaWVzOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX2RhdGF8fHt9O30sZ2V0RW50cnk6ZnVuY3Rpb24obil7 cmV0dXJuIHRoaXMuX2RhdGFbbl18fG51bGw7fSxzZXRFbnRyeTpmdW5jdGlvbihu LG8pe3RoaXMuX2RhdGFbbl09bzt9LGZpbGxDYWNoZTpmdW5jdGlvbihuKXt2YXIg bz10aGlzLmxvY2FsQ2FjaGU7bi5mb3JFYWNoKGZ1bmN0aW9uKHApe3ZhciBxPXRo aXMuZ2V0RW50cnkocCk7aWYoIXEpcmV0dXJuO3EuYm9vdHN0cmFwcGVkPXRydWU7 dmFyIHI9aS5wYXJzZSh0aGlzLmdldFRleHRUb0luZGV4KHEpKS50b2tlbnM7Zm9y KHZhciBzPTAsdD1yLmxlbmd0aDtzPHQ7KytzKXt2YXIgdT1yW3NdO2lmKCFvLmhh

c093blByb3BlcnR5KHUpKW9bdV09e307b1t1XVtwXT10cnVlO319LHRoaXMpO30s Z2V0VGV4dFRvSW5kZXg6ZnVuY3Rpb24obil7aWYobi50ZXh0VG9JbmRleCYmIW4u bmVlZHNfdXBkYXRlKXJldHVybiBuLnRleHRUb0luZGV4O24ubmVlZHNfdXBkYXRl PWZhbHNlO24udGV4dFRvSW5kZXg9dGhpcy5nZXRUZXh0VG9JbmRleEZyb21GaWVs ZHMobix0aGlzLl9pbmRleGVkRmllbGRzKTtyZXR1cm4gbi50ZXh0VG9JbmRleDt9 LGdldFRleHRUb0luZGV4RnJvbUZpZWxkczpmdW5jdGlvbihuLG8pe3ZhciBwPVtd O2Zvcih2YXIgcT0wO3E8by5sZW5ndGg7KytxKXt2YXIgcj1uW29bcV1dO2lmKHIp cC5wdXNoKHIuam9pbj9yLmpvaW4oJyAnKTpyKTt9cmV0dXJuIHAuam9pbignICcp O30sbWVyZ2VVaWRzOmZ1bmN0aW9uKG4sbyxwLHEpe3ZhciByPWZ1bmN0aW9uKHMs dCl7dmFyIHU9dGhpcy5nZXRFbnRyeShzKSx2PXRoaXMuZ2V0RW50cnkodCk7aWYo dS5leHRlbmRlZF9tYXRjaCE9PXYuZXh0ZW5kZWRfbWF0Y2gpcmV0dXJuIHUuZXh0 ZW5kZWRfbWF0Y2g/MTotMTtpZih1LmluZGV4IT09di5pbmRleClyZXR1cm4gdS5p bmRleC12LmluZGV4O2lmKHUudGV4dC5sZW5ndGghPT12LnRleHQubGVuZ3RoKXJl dHVybiB1LnRleHQubGVuZ3RoLXYudGV4dC5sZW5ndGg7cmV0dXJuIHUudWlkPHYu dWlkO30uYmluZCh0aGlzKTt0aGlzLl9jaGVja0V4dGVuZGVkTWF0Y2gocSxuKTty ZXR1cm4gdGhpcy5kZWR1cGxpY2F0ZUJ5S2V5KG4uc29ydChyKS5jb25jYXQobyxw KSk7fSxfY2hlY2tFeHRlbmRlZE1hdGNoOmZ1bmN0aW9uKG4sbyl7dmFyIHA9dGhp cy5fYWx3YXlzUHJlZml4TWF0Y2g/aS5pc1ByZWZpeE1hdGNoOmkuaXNRdWVyeU1h dGNoO2Zvcih2YXIgcT0wO3E8by5sZW5ndGg7KytxKXt2YXIgcj10aGlzLmdldEVu dHJ5KG9bcV0pO3IuZXh0ZW5kZWRfbWF0Y2g9ci50b2tlbnM/IXAobixyLnRleHQp OmZhbHNlO319LGJ1aWxkVWlkczpmdW5jdGlvbihuLG8scCl7aWYoIW8pbz1bXTtp ZighbilyZXR1cm4gbztpZighcClwPVtdO3ZhciBxPXRoaXMuYnVpbGRDYWNoZVJl c3VsdHMobix0aGlzLmxvY2FsQ2FjaGUpLHI9dGhpcy5idWlsZFF1ZXJ5UmVzdWx0 cyhuKSxzPXRoaXMubWVyZ2VVaWRzKHEscixvLG4pLHQ9bChwLmNvbmNhdCh0aGlz Ll9leGNsdXNpb25zKSksdT1zLmZpbHRlcihmdW5jdGlvbih2KXtpZih0Lmhhc093 blByb3BlcnR5KHYpfHwhdGhpcy5nZXRFbnRyeSh2KSlyZXR1cm4gZmFsc2U7Zm9y KHZhciB3PTA7dzx0aGlzLl9maWx0ZXJzLmxlbmd0aDsrK3cpaWYoIXRoaXMuX2Zp bHRlcnNbd10odGhpcy5nZXRFbnRyeSh2KSxuKSlyZXR1cm4gZmFsc2U7cmV0dXJu ICh0W3ZdPXRydWUpO30sdGhpcyk7cmV0dXJuIHRoaXMudWlkc0luY2x1ZGluZ0V4 YWN0KG4sdSx0KTt9LHVpZHNJbmNsdWRpbmdFeGFjdDpmdW5jdGlvbihuLG8scCl7 dmFyIHE9by5sZW5ndGg7aWYobi5sZW5ndGg8dGhpcy5fbWluRXhhY3RNYXRjaExl bmd0aHx8cTw9dGhpcy5fbWF4UmVzdWx0cylyZXR1cm4gbztmb3IodmFyIHI9MDty PHE7KytyKXt2YXIgcz10aGlzLmdldEVudHJ5KG9bcl0pO3MudGV4dF9sb3dlcnx8 KHMudGV4dF9sb3dlcj1zLnRleHQudG9Mb3dlckNhc2UoKSk7aWYocy50ZXh0X2xv d2VyPT09aS5wYXJzZShuKS5mbGF0VmFsdWUpe2lmKHI+PXRoaXMuX21heFJlc3Vs dHMpe3ZhciB0PW8uc3BsaWNlKHIsMSk7by5zcGxpY2UodGhpcy5fbWF4UmVzdWx0 cy0xLDAsdCk7fWJyZWFrO319cmV0dXJuIG87fSxidWlsZERhdGE6ZnVuY3Rpb24o bil7dmFyIG89W10scD1NYXRoLm1pbihuLmxlbmd0aCx0aGlzLl9tYXhSZXN1bHRz KTtmb3IodmFyIHE9MDtxPHA7KytxKW8ucHVzaCh0aGlzLmdldEVudHJ5KG5bcV0p KTtyZXR1cm4gbzt9LGZpbmRRdWVyeUNhY2hlOmZ1bmN0aW9uKG4pe3ZhciBvPTAs cD1udWxsLHE9dGhpcy5nZXRRdWVyeUNhY2hlKCk7Zm9yKHZhciByIGluIHEpaWYo bi5pbmRleE9mKHIpPT09MCYmci5sZW5ndGg+byl7bz1yLmxlbmd0aDtwPXI7fXJl dHVybiBxW3BdfHxbXTt9LGJ1aWxkUXVlcnlSZXN1bHRzOmZ1bmN0aW9uKG4pe3Zh ciBvPWkucGFyc2UobikuZmxhdFZhbHVlLHA9dGhpcy5maW5kUXVlcnlDYWNoZShv KTtpZih0aGlzLmdldFF1ZXJ5Q2FjaGUoKS5oYXNPd25Qcm9wZXJ0eShvKSlyZXR1 cm4gcDtyZXR1cm4gdGhpcy5maWx0ZXJRdWVyeVJlc3VsdHMobixwKTt9LGZpbHRl clF1ZXJ5UmVzdWx0czpmdW5jdGlvbihuLG8pe3ZhciBwPXRoaXMuX2Fsd2F5c1By ZWZpeE1hdGNoP2kuaXNQcmVmaXhNYXRjaDppLmlzUXVlcnlNYXRjaDtyZXR1cm4g by5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHAobix0aGlzLmdldFRleHRUb0lu ZGV4KHRoaXMuZ2V0RW50cnkocSkpKTt9LHRoaXMpO30sYnVpbGRDYWNoZVJlc3Vs dHM6ZnVuY3Rpb24obixvKXt2YXIgcD1pLnBhcnNlKG4sdGhpcy5fYWx3YXlzUHJl Zml4TWF0Y2gpLHE9dGhpcy5fYWx3YXlzUHJlZml4TWF0Y2g/cC5zb3J0ZWRUb2tl bnM6cC50b2tlbnMscj1xLmxlbmd0aCxzPXAuaXNQcmVmaXhRdWVyeT9yLTE6bnVs bCx0PXt9LHU9e30sdj17fSx3PVtdLHg9ZmFsc2UseT17fSx6PTA7Zm9yKHZhciBh YT0wO2FhPHI7KythYSl7dmFyIGJhPXFbYWFdO2lmKCF5Lmhhc093blByb3BlcnR5 KGJhKSl7eisrO3lbYmFdPXRydWU7fWVsc2UgY29udGludWU7Zm9yKHZhciBjYSBp biBvKWlmKCghdC5oYXNPd25Qcm9wZXJ0eShjYSkmJmNhPT09YmEpfHwoKHRoaXMu X2Fsd2F5c1ByZWZpeE1hdGNofHxzPT09YWEpJiZjYS5pbmRleE9mKGJhKT09PTAp KXtpZihjYT09PWJhKXtpZih1Lmhhc093blByb3BlcnR5KGNhKSl4PXRydWU7dFtj YV09dHJ1ZTt9ZWxzZXtpZih0Lmhhc093blByb3BlcnR5KGNhKXx8dS5oYXNPd25Q

cm9wZXJ0eShjYSkpeD10cnVlO3VbY2FdPXRydWU7fWZvcih2YXIgZGEgaW4gb1tj YV0paWYoYWE9PT0wfHwodi5oYXNPd25Qcm9wZXJ0eShkYSkmJnZbZGFdPT16LTEp KXZbZGFdPXo7fX1mb3IodmFyIGVhIGluIHYpaWYodltlYV09PXopdy5wdXNoKGVh KTtpZih4fHx6PHIpdz10aGlzLmZpbHRlclF1ZXJ5UmVzdWx0cyhuLHcpO2lmKHRo aXMuX3RpdGxlRmllbGRzJiZ0aGlzLl90aXRsZUZpZWxkcy5sZW5ndGg+MCl3PXRo aXMuZmlsdGVyTm9uVGl0bGVNYXRjaFF1ZXJ5UmVzdWx0cyhuLHcpO3JldHVybiB3 O30sZmlsdGVyTm9uVGl0bGVNYXRjaFF1ZXJ5UmVzdWx0czpmdW5jdGlvbihuLG8p e3JldHVybiBvLmZpbHRlcihmdW5jdGlvbihwKXt2YXIgcT1pLnBhcnNlKG4pLHI9 cS50b2tlbnMubGVuZ3RoO2lmKHI9PT0wKXJldHVybiB0cnVlO3ZhciBzPXRoaXMu Z2V0VGl0bGVUZXJtcyh0aGlzLmdldEVudHJ5KHApKSx0PXEudG9rZW5zWzBdO3Jl dHVybiAoKHI9PT0xKXx8dGhpcy5fYWx3YXlzUHJlZml4TWF0Y2gpP2kuaXNQcmVm aXhNYXRjaCh0LHMpOmkuaXNRdWVyeU1hdGNoKHQscyk7fSx0aGlzKTt9LGdldFRp dGxlVGVybXM6ZnVuY3Rpb24obil7aWYobi50aXRsZVRvSW5kZXgpcmV0dXJuIG4u dGl0bGVUb0luZGV4O3JldHVybiAobi50aXRsZVRvSW5kZXg9dGhpcy5nZXRUZXh0 VG9JbmRleEZyb21GaWVsZHMobix0aGlzLl90aXRsZUZpZWxkcykpO30sZGVkdXBs aWNhdGVCeUtleTpmdW5jdGlvbihuKXtpZighdGhpcy5fZGVkdXBsaWNhdGlvbktl eSlyZXR1cm4gbjt2YXIgbz1sKG4ubWFwKHRoaXMuX2dldERlZHVwbGljYXRpb25L ZXkuYmluZCh0aGlzKSksbik7cmV0dXJuIG4uZmlsdGVyKGZ1bmN0aW9uKHApe3Jl dHVybiBvW3RoaXMuX2dldERlZHVwbGljYXRpb25LZXkocCldPT1wO30uYmluZCh0 aGlzKSk7fSxfZ2V0RGVkdXBsaWNhdGlvbktleTpmdW5jdGlvbihuKXt2YXIgbz10 aGlzLmdldEVudHJ5KG4pO3JldHVybiBvW3RoaXMuX2RlZHVwbGljYXRpb25LZXld fHwnX18nK24rJ19fJzt9LGdldFF1ZXJ5Q2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5xdWVyeUNhY2hlO30sc2V0TWF4UmVzdWx0czpmdW5jdGlvbihuKXt0aGlz Ll9tYXhSZXN1bHRzPW47dGhpcy52YWx1ZSYmdGhpcy5yZXNwb25kKHRoaXMudmFs dWUsdGhpcy5idWlsZFVpZHModGhpcy52YWx1ZSkpO30sdXBkYXRlVG9rZW46ZnVu Y3Rpb24obil7dGhpcy50b2tlbj1uO3RoaXMuZGlydHkoKTtyZXR1cm4gdGhpczt9 fSk7ZS5leHBvcnRzPW07fSk7Cl9fZCgiRGNvZGUiLFtdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZyxoPXt9LGk9e186JyUnLEE6JyUyJyxCOicwMDAnLEM6JyU3 ZCcsRDonJTdiJTIyJyxFOiclMmMlMjInLEY6JyUyMiUzYScsRzonJTJjJTIydXQl MjIlM2ExJyxIOiclMmMlMjJibHMlMjIlM2EnLEk6JyUyYyUyMm4lMjIlM2ElMjIl JyxKOiclMjIlM2ElN2IlMjJpJTIyJTNhMCU3ZCcsSzonJTJjJTIycHQlMjIlM2Ew JTJjJTIydmlzJTIyJTNhJyxMOiclMmMlMjJjaCUyMiUzYSU3YiUyMmglMjIlM2El MjInLE06JyU3YiUyMnYlMjIlM2EyJTJjJTIydGltZSUyMiUzYTEnLE46Jy5jaGFu bmVsJTIyJTJjJTIyc3ViJTIyJTNhJTViJyxPOiclMmMlMjJzYiUyMiUzYTElMmMl MjJ0JTIyJTNhJTViJyxQOiclMmMlMjJ1ZCUyMiUzYTEwMCUyYyUyMmxjJTIyJTNh MCcsUTonJTVkJTJjJTIyZiUyMiUzYW51bGwlMmMlMjJ1Y3QlMjIlM2EnLFI6Jy5j aGFubmVsJTIyJTJjJTIyc3ViJTIyJTNhJTViMSU1ZCcsUzonJTIyJTJjJTIybSUy MiUzYTAlN2QlMmMlN2IlMjJpJTIyJTNhJyxUOiclMmMlMjJibGMlMjIlM2ExJTJj JTIyc25kJTIyJTNhMSUyYyUyMmN0JTIyJTNhJyxVOiclMmMlMjJibGMlMjIlM2Ew JTJjJTIyc25kJTIyJTNhMSUyYyUyMmN0JTIyJTNhJyxWOiclMmMlMjJibGMlMjIl M2EwJTJjJTIyc25kJTIyJTNhMCUyYyUyMmN0JTIyJTNhJyxXOiclMmMlMjJzJTIy JTNhMCUyYyUyMmJsbyUyMiUzYTAlN2QlMmMlMjJibCUyMiUzYSU3YiUyMmFjJTIy JTNhJyxYOiclMmMlMjJyaSUyMiUzYTAlN2QlMmMlMjJzdGF0ZSUyMiUzYSU3YiUy MnAlMjIlM2EwJTJjJTIydXQlMjIlM2ExJyxZOiclMmMlMjJwdCUyMiUzYTAlMmMl MjJ2aXMlMjIlM2ExJTJjJTIyYmxzJTIyJTNhMCUyYyUyMmJsYyUyMiUzYTAlMmMl MjJzbmQlMjIlM2ExJTJjJTIyY3QlMjIlM2EnLFo6JyUyYyUyMnNiJTIyJTNhMSUy YyUyMnQlMjIlM2ElNWIlNWQlMmMlMjJmJTIyJTNhbnVsbCUyYyUyMnVjdCUyMiUz YTAlMmMlMjJzJTIyJTNhMCUyYyUyMmJsbyUyMiUzYTAlN2QlMmMlMjJibCUyMiUz YSU3YiUyMmFjJTIyJTNhJ307KGZ1bmN0aW9uKCl7dmFyIGs9W107Zm9yKHZhciBs IGluIGkpe2hbaVtsXV09bDtrLnB1c2goaVtsXSk7fWsucmV2ZXJzZSgpO2c9bmV3 IFJlZ0V4cChrLmpvaW4oInwiKSwnZycpO30pKCk7dmFyIGo9e2VuY29kZTpmdW5j dGlvbihrKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGspLnJlcGxhY2UoLyhb X0EtWl0pfCUuLi9nLGZ1bmN0aW9uKGwsbSl7cmV0dXJuIG0/JyUnK20uY2hhckNv ZGVBdCgwKS50b1N0cmluZygxNik6bDt9KS50b0xvd2VyQ2FzZSgpLnJlcGxhY2Uo ZyxmdW5jdGlvbihsKXtyZXR1cm4gaFtsXTt9KTt9LGRlY29kZTpmdW5jdGlvbihr KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGsucmVwbGFjZSgvW19BLVpdL2cs ZnVuY3Rpb24obCl7cmV0dXJuIGlbbF07fSkpO319O2UuZXhwb3J0cz1qO30pOwpf X2QoIkRpYWxvZ0hpZGVPblN1Y2Nlc3MiLFsiY29weVByb3BlcnRpZXMiLCJDU1Mi LCJjeCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVy dGllcycpLGg9YignQ1NTJyksaT1iKCdjeCcpO2Z1bmN0aW9uIGooayl7dGhpcy5f

bGF5ZXI9azt9ZyhqLnByb3RvdHlwZSx7X3N1YnNjcmlwdGlvbjpudWxsLGVuYWJs ZTpmdW5jdGlvbigpe3RoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9sYXllci5zdWJz Y3JpYmUoJ3N1Y2Nlc3MnLHRoaXMuX2hhbmRsZS5iaW5kKHRoaXMpKTt9LGRpc2Fi bGU6ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTt0 aGlzLl9zdWJzY3JpcHRpb249bnVsbDt9LF9oYW5kbGU6ZnVuY3Rpb24oayxldmVu dCl7aWYoaC5oYXNDbGFzcyhldmVudC5nZXRUYXJnZXQoKSwiLWN4LVBSSVZBVEUt dWlEaWFsb2dfX2Zvcm0iKSl0aGlzLl9sYXllci5oaWRlKCk7fX0pO2UuZXhwb3J0 cz1qO30pOwpfX2QoIkRvY1JQQyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPXtfYXBpczp7fSxfZGlzcGF0Y2g6ZnVuY3Rpb24oaCl7dmFyIGk7dHJ5e2g9 SlNPTi5wYXJzZShoKTt9Y2F0Y2goail7dGhyb3cgbmV3IEVycm9yKCdEb2NSUEMg dW5wYXJzYWJsZSBkaXNwYXRjaDogIicraCsnIicpO31pZihnLl9hcGlzLmhhc093 blByb3BlcnR5KGguYXBpKSl7dmFyIGs9Zy5fYXBpc1toLmFwaV07aWYoa1toLm1l dGhvZF0paT1rW2gubWV0aG9kXS5hcHBseShrLGguYXJncyk7fWlmKGk9PT11bmRl ZmluZWQpaT1udWxsO3JldHVybiBKU09OLnN0cmluZ2lmeShpKTt9LHB1Ymxpc2g6 ZnVuY3Rpb24oaCxpKXtnLl9hcGlzW2ldPWg7fSxwcm94eTpmdW5jdGlvbihoLGks ail7dmFyIGs9e307ai5mb3JFYWNoKGZ1bmN0aW9uKGwpe2tbbF09ZnVuY3Rpb24o KXt2YXIgbT17YXBpOmksbWV0aG9kOmwsYXJnczpBcnJheS5wcm90b3R5cGUuc2xp Y2UuY2FsbChhcmd1bWVudHMpfSxuPWguRG9jUlBDLl9kaXNwYXRjaChKU09OLnN0 cmluZ2lmeShtKSk7aWYodHlwZW9mKG4pPT0nc3RyaW5nJyl0cnl7bj1KU09OLnBh cnNlKG4pO31jYXRjaChvKXt0aHJvdyBuZXcgRXJyb3IoJ0RvY1JQQyAnK2krJy4n K2wrJyB1bnBhcnNhYmxlIHJldHVybjogIicrbisnIicpO31yZXR1cm4gbjt9O30p O3JldHVybiBrO319O2UuZXhwb3J0cz1hLkRvY1JQQz1nO30pOwpfX2QoIkRvY3Vt ZW50VGl0bGUiLFsiQXJiaXRlciJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdBcmJpdGVyJyksaD1kb2N1bWVudC50aXRsZSxpPW51bGwsaj0xNTAwLGs9 W10sbD0wLG09bnVsbCxuPWZhbHNlO2Z1bmN0aW9uIG8oKXtpZihrLmxlbmd0aD4w KXtpZighbil7cChrW2xdLnRpdGxlKTtsPSsrbCVrLmxlbmd0aDt9ZWxzZSBxKCk7 fWVsc2V7Y2xlYXJJbnRlcnZhbChtKTttPW51bGw7cSgpO319ZnVuY3Rpb24gcChz KXtkb2N1bWVudC50aXRsZT1zO249dHJ1ZTt9ZnVuY3Rpb24gcSgpe3Iuc2V0KGl8 fGgsdHJ1ZSk7bj1mYWxzZTt9dmFyIHI9e2dldDpmdW5jdGlvbigpe3JldHVybiBo O30sc2V0OmZ1bmN0aW9uKHMsdCl7ZG9jdW1lbnQudGl0bGU9cztpZighdCl7aD1z O2k9bnVsbDtnLmluZm9ybSgndXBkYXRlX3RpdGxlJyxzKTt9ZWxzZSBpPXM7fSxi bGluazpmdW5jdGlvbihzKXt2YXIgdD17dGl0bGU6c307ay5wdXNoKHQpO2lmKG09 PT1udWxsKW09c2V0SW50ZXJ2YWwobyxqKTtyZXR1cm4ge3N0b3A6ZnVuY3Rpb24o KXt2YXIgdT1rLmluZGV4T2YodCk7aWYodT49MCl7ay5zcGxpY2UodSwxKTtpZihs PnUpe2wtLTt9ZWxzZSBpZihsPT11JiZsPT1rLmxlbmd0aClsPTA7fX19O319O2Uu ZXhwb3J0cz1yO30pOwpfX2QoIkVtb3RlIixbIkRPTSIsIkVudiIsImh0bWxpemUi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignRE9NJyksaD1iKCdFbnYn KSxpPWIoJ2h0bWxpemUnKSxqPWUuZXhwb3J0cz17X2luaXRpYWxpemVkOmZhbHNl LF9pbWFnZUJhc2U6bnVsbCxfZW1vdGVNYXA6bnVsbCxfZW1vdGVPcmRlck1hcDpu dWxsLF9mYmlkRW1vdGljb25QYXR0ZXJuOidcXFtcXFsoW0EtWmEtejAtOVxcLl0r KVxcXVxcXScsX2ZiaWRFbW90aWNvblJlZ2V4Om51bGwsX2ltYWdlVVJMczpudWxs LF9yZWdleDpudWxsLF9yZWdleFdpdGhvdXRGQklEczpudWxsLF9pbml0OmZ1bmN0 aW9uKCl7dmFyIGs9aC5zdGF0aWNfYmFzZTtqLl9pbWFnZUJhc2U9aysnaW1hZ2Vz L2Vtb3RlLyc7ai5fYmxhbmtJbWdTcmM9aysnaW1hZ2VzL2JsYW5rLmdpZic7dmFy IGw9WydzbWlsZScsJ2Zyb3duJywndG9uZ3VlJywnZ3JpbicsJ2dhc3AnLCd3aW5r JywnZ2xhc3NlcycsJ3N1bmdsYXNzZXMnLCdncnVtcHknLCd1bnN1cmUnLCdjcnkn LCdkZXZpbCcsJ2FuZ2VsJywna2lzcycsJ2hlYXJ0Jywna2lraScsJ3NxdWludCcs J2NvbmZ1c2VkJywndXBzZXQnLCdwYWNtYW4nLCdjb2xvbnRocmVlJywnbGlrZSdd O2ouX2Vtb3RlTWFwPXsnOi0pJzpbJ1xcOlxcLVxcKScsJ3NtaWxlJ10sJzopJzpb J1xcOlxcKScsJ3NtaWxlJ10sJzpdJzpbJ1xcOlxcXScsJ3NtaWxlJ10sJz0pJzpb Jz1cXCknLCdzbWlsZSddLCc6LSgnOlsnXFw6XFwtXFwoJywnZnJvd24nXSwnOign OlsnXFw6XFwoJywnZnJvd24nXSwnOlsnOlsnXFw6XFxbJywnZnJvd24nXSwnPSgn OlsnPVxcKCcsJ2Zyb3duJ10sJzotUCc6WydcXDpcXC1QJywndG9uZ3VlJ10sJzpQ JzpbJ1xcOlAnLCd0b25ndWUnXSwnOi1wJzpbJ1xcOlxcLXAnLCd0b25ndWUnXSwn OnAnOlsnXFw6cCcsJ3Rvbmd1ZSddLCc9UCc6Wyc9UCcsJ3Rvbmd1ZSddLCc6LUQn OlsnXFw6XFwtRCcsJ2dyaW4nXSwnOkQnOlsnXFw6RCcsJ2dyaW4nXSwnPUQnOlsn PUQnLCdncmluJ10sJzotTyc6WydcXDpcXC1PJywnZ2FzcCddLCc6Tyc6WydcXDpP JywnZ2FzcCddLCc6LW8nOlsnXFw6XFwtbycsJ2dhc3AnXSwnOm8nOlsnXFw6bycs J2dhc3AnXSwnOy0pJzpbJ1xcO1xcLVxcKScsJ3dpbmsnXSwnOyknOlsnXFw7XFwp Jywnd2luayddLCc4LSknOlsnOFxcLVxcKScsJ2dsYXNzZXMnXSwnOCknOlsnOFxc

KScsJ2dsYXNzZXMnXSwnQi0pJzpbJ0JcXC1cXCknLCdnbGFzc2VzJ10sJ0IpJzpb J0JcXCknLCdnbGFzc2VzJ10sJzgtfCc6Wyc4XFwtXFx8Jywnc3VuZ2xhc3Nlcydd LCc4fCc6Wyc4XFx8Jywnc3VuZ2xhc3NlcyddLCdCLXwnOlsnQlxcLVxcfCcsJ3N1 bmdsYXNzZXMnXSwnQnwnOlsnQlxcfCcsJ3N1bmdsYXNzZXMnXSwnPjooJzpbJz5c XDpcXCgnLCdncnVtcHknXSwnPjotKCc6Wyc+XFw6XFwtXFwoJywnZ3J1bXB5J10s JzovJzpbJ1xcOi8nLCd1bnN1cmUnXSwnOi0vJzpbJ1xcOlxcLS8nLCd1bnN1cmUn XSwnOlxcJzpbJ1xcOlxcXFwnLCd1bnN1cmUnXSwnOi1cXCc6WydcXDpcXC1cXFxc JywndW5zdXJlJ10sIjonKCI6WyJcXDonXFwoIiwnY3J5J10sJzM6KSc6WyczXFw6 XFwpJywnZGV2aWwnXSwnMzotKSc6WyczXFw6XFwtXFwpJywnZGV2aWwnXSwnTzop JzpbJ09cXDpcXCknLCdhbmdlbCddLCdPOi0pJzpbJ09cXDpcXC1cXCknLCdhbmdl bCddLCc6LSonOlsnXFw6XFwtXFwqJywna2lzcyddLCc6Kic6WydcXDpcXConLCdr aXNzJ10sJzwzJzpbJzwzJywnaGVhcnQnXSwnJmx0OzMnOlsnJmx0XFw7MycsJ2hl YXJ0J10sJ1x1MjY2NSc6WydcdTI2NjUnLCdoZWFydCddLCdeX14nOlsnXFxeX1xc XicsJ2tpa2knXSwnLV8tJzpbJ1xcLV9cXC0nLCdzcXVpbnQnXSwnby5PJzpbJ29c XC5PJywnY29uZnVzZWQnXSwnTy5vJzpbJ09cXC5vJywnY29uZnVzZWQnXSwnPjpP JzpbJz5cXDpPJywndXBzZXQnXSwnPjotTyc6Wyc+XFw6XFwtTycsJ3Vwc2V0J10s Jz46byc6Wyc+XFw6bycsJ3Vwc2V0J10sJz46LW8nOlsnPlxcOlxcLW8nLCd1cHNl dCddLCc+XzwnOlsnPl88JywndXBzZXQnXSwnPi48JzpbJz5cXC48JywndXBzZXQn XSwnOnYnOlsnXFw6dicsJ3BhY21hbiddLCc6fF0nOlsnXFw6XFx8XFxdJywncm9i b3QnXSwnOjMnOlsnXFw6MycsJ2NvbG9udGhyZWUnXSwnPCgiKSc6Wyc8XFwoXFwi XFwpJywncGVuZ3VpbiddLCc6cHV0bmFtOic6WydcXDpwdXRuYW1cXDonLCdwdXRu YW0nXSwnKF5eXiknOlsnXFwoXFxeXFxeXFxeXFwpJywnc2hhcmsnXSwnOjQyOic6 WydcXDo0MlxcOicsJzQyJ10sJzpsaWtlOic6WydcXDpsaWtlXFw6JywnbGlrZSdd LCcoeSknOlsnXFwoeVxcKScsJ2xpa2UnXSwnKFkpJzpbJ1xcKFlcXCknLCdsaWtl J119O3ZhciBtPVtdLG49W107aWYoaC5mYmlkX2Vtb3RpY29ucyl7ai5fZmJpZEVt b3RpY29uUmVnZXg9bmV3IFJlZ0V4cChqLl9mYmlkRW1vdGljb25QYXR0ZXJuKTtt LnB1c2goai5fZmJpZEVtb3RpY29uUGF0dGVybik7fWZvcih2YXIgbyBpbiBqLl9l bW90ZU1hcCl7dmFyIHA9ai5fZW1vdGVNYXBbb11bMF07bS5wdXNoKHApO24ucHVz aChwKTt9dmFyIHE9Jyg/Ol58XFxzfFwnfCJ8XFwuKSgnK20uam9pbignfCcpKycp KD86XFxzfFwnfCJ8XFwufCx8IXxcXD98PGJyPnwkKScscj0nKD86XnxcXHN8XCd8 InxcXC4pKCcrbi5qb2luKCd8JykrJykoPzpcXHN8XCd8InxcXC58LHwhfFxcP3w8 YnI+fCQpJztqLl9yZWdleD1uZXcgUmVnRXhwKHEpO2ouX3JlZ2V4V2l0aG91dEZC SURzPW5ldyBSZWdFeHAocik7ai5fZW1vdGVPcmRlck1hcD17fTtmb3IodmFyIHM9 MDtzPGwubGVuZ3RoO3MrKylqLl9lbW90ZU9yZGVyTWFwW2xbc11dPXM7ai5faW5p dGlhbGl6ZWQ9dHJ1ZTt9LGh0bWxFbW90ZTpmdW5jdGlvbihrLGwpe3JldHVybiBq Ll9odG1sRW1vdGUoayxsLHRydWUpO30saHRtbEVtb3RlV2l0aG91dEZCSUQ6ZnVu Y3Rpb24oayxsKXtyZXR1cm4gai5faHRtbEVtb3RlKGssbCxmYWxzZSk7fSxfZ2V0 UmVnZXg6ZnVuY3Rpb24oayl7cmV0dXJuIGs/ai5fcmVnZXg6ai5fcmVnZXhXaXRo b3V0RkJJRHM7fSxfaHRtbEVtb3RlOmZ1bmN0aW9uKGssbCxtKXtpZih0eXBlb2Yg bCE9J2Z1bmN0aW9uJylsPWk7aWYoIWouX2luaXRpYWxpemVkKWouX2luaXQoKTt2 YXIgbj1rLG89W107d2hpbGUodHJ1ZSl7dmFyIHA9ai5fZ2V0UmVnZXgobSkscT1w LmV4ZWMobik7aWYoIXF8fCFxLmxlbmd0aClicmVhazt2YXIgcj1xWzFdLHM9bi5p bmRleE9mKHIpLHQ9bi5zdWJzdHJpbmcoMCxzKTtpZih0KW8ucHVzaChsKHQpKTtv LnB1c2goJzxzcGFuIGNsYXNzPSJlbW90ZV90ZXh0Ij4nKTtvLnB1c2gocik7by5w dXNoKCc8L3NwYW4+Jyk7dmFyIHU9e3RpdGxlOnJ9LHY9ai5fZmJpZEVtb3RpY29u UmVnZXgmJihqLl9mYmlkRW1vdGljb25SZWdleC5leGVjKHIpfHxbXSlbMV07aWYo dil7dS5jbGFzc05hbWU9J2Vtb3RlX2N1c3RvbSc7dS5zcmM9d2luZG93LmxvY2F0 aW9uLnByb3RvY29sKycvL2dyYXBoLmZhY2Vib29rLmNvbS8nK2VuY29kZVVSSUNv bXBvbmVudCh2KSsnL3BpY3R1cmUnO31lbHNle3ZhciB3PWouX2Vtb3RlTWFwW3Jd WzFdLHg9ai5fZW1vdGVPcmRlck1hcFt3XTtpZih4PT09dW5kZWZpbmVkKXt1LmNs YXNzTmFtZT0nZW1vdGVfY3VzdG9tJzt1LnNyYz1qLl9pbWFnZUJhc2UrdysnLmdp Zic7fWVsc2V7dmFyIHk9eCotMTY7dS5jbGFzc05hbWU9J2Vtb3RlX2ltZyc7dS5z cmM9ai5fYmxhbmtJbWdTcmM7dS5zdHlsZT17YmFja2dyb3VuZFBvc2l0aW9uOnkr J3B4IDAnfTt9fXZhciB6PWcuY3JlYXRlKCdpbWcnLHUpO28ucHVzaChnLmNyZWF0 ZSgnc3Bhbicse30seikuaW5uZXJIVE1MKTtuPW4uc3Vic3RyaW5nKHMrci5sZW5n dGgpO31pZihuKW8ucHVzaChsKG4pKTtyZXR1cm4gby5qb2luKCcnKTt9fTt9KTsK X19kKCJTdXBwb3J0ZWRFbW9qaSIsWyJjeCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdjeCcpO2UuZXhwb3J0cz17dXRmMTZSZWdleDovW1x1MjAzQ1x1 MjA0OVx1MjEwMC1cdTIxRkZcdTIzMDAtXHUyN0ZGXHUyOTAwLVx1MjlGRlx1MkIw MC1cdTJCRkZcdTMwMDAtXHUzMEZGXHUzMjAwLVx1MzJGRl18XHVEODNDW1x1REMw

MC1cdURGRkZdfFx1RDgzRFtcdURDMDAtXHVERUZGXS8sZW1vamk6ezEyNzc0NDoi LWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjMwMCIsMTI3NzQ2OiItY3gtUFJJ VkFURS1mYkVtb2ppX19pY29uXzFmMzAyIiwxMjc3NTQ6Ii1jeC1QUklWQVRFLWZi RW1vamlfX2ljb25fMWYzMGEiLDEyNzc2OToiLWN4LVBSSVZBVEUtZmJFbW9qaV9f aWNvbl8xZjMxOSIsMTI3Nzc1OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFm MzFmIiwxMjc3OTM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWYzMzEiLDEy Nzc5NjoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjMzNCIsMTI3Nzk3OiIt Y3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmMzM1IiwxMjc3OTk6Ii1jeC1QUklW QVRFLWZiRW1vamlfX2ljb25fMWYzMzciLDEyNzgwMDoiLWN4LVBSSVZBVEUtZmJF bW9qaV9faWNvbl8xZjMzOCIsMTI3ODAxOiItY3gtUFJJVkFURS1mYkVtb2ppX19p Y29uXzFmMzM5IiwxMjc4MDI6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWYz M2EiLDEyNzgwMzoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjMzYiIsMTI3 ODA2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmMzNlIiwxMjc4MDg6Ii1j eC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWYzNDAiLDEyNzgwOToiLWN4LVBSSVZB VEUtZmJFbW9qaV9faWNvbl8xZjM0MSIsMTI3ODEwOiItY3gtUFJJVkFURS1mYkVt b2ppX19pY29uXzFmMzQyIiwxMjc4MTE6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2lj b25fMWYzNDMiLDEyNzgxODoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjM0 YSIsMTI3ODIyOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmMzRlIiwxMjc4 Mjc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWYzNTMiLDEyNzgyODoiLWN4 LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjM1NCIsMTI3ODY0OiItY3gtUFJJVkFU RS1mYkVtb2ppX19pY29uXzFmMzc4IiwxMjc4NjY6Ii1jeC1QUklWQVRFLWZiRW1v amlfX2ljb25fMWYzN2EiLDEyNzg3MzoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNv bl8xZjM4MSIsMTI3ODc1OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmMzgz IiwxMjc4NzY6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWYzODQiLDEyNzg3 NzoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjM4NSIsMTI3ODgwOiItY3gt UFJJVkFURS1mYkVtb2ppX19pY29uXzFmMzg4IiwxMjc4ODE6Ii1jeC1QUklWQVRF LWZiRW1vamlfX2ljb25fMWYzODkiLDEyNzg4NToiLWN4LVBSSVZBVEUtZmJFbW9q aV9faWNvbl8xZjM4ZCIsMTI3ODg2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29u XzFmMzhlIiwxMjc4ODc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWYzOGYi LDEyNzg4ODoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjM5MCIsMTI3ODkx OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmMzkzIiwxMjc5MjU6Ii1jeC1Q UklWQVRFLWZiRW1vamlfX2ljb25fMWYzYjUiLDEyNzkyNjoiLWN4LVBSSVZBVEUt ZmJFbW9qaV9faWNvbl8xZjNiNiIsMTI3OTMyOiItY3gtUFJJVkFURS1mYkVtb2pp X19pY29uXzFmM2JjIiwxMjgwMTM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25f MWY0MGQiLDEyODAxNDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQwZSIs MTI4MDE3OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDExIiwxMjgwMTg6 Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0MTIiLDEyODAyMDoiLWN4LVBS SVZBVEUtZmJFbW9qaV9faWNvbl8xZjQxNCIsMTI4MDIzOiItY3gtUFJJVkFURS1m YkVtb2ppX19pY29uXzFmNDE3IiwxMjgwMjQ6Ii1jeC1QUklWQVRFLWZiRW1vamlf X2ljb25fMWY0MTgiLDEyODAyNToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8x ZjQxOSIsMTI4MDI2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDFhIiwx MjgwMjc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0MWIiLDEyODAzMToi LWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQxZiIsMTI4MDMyOiItY3gtUFJJ VkFURS1mYkVtb2ppX19pY29uXzFmNDIwIiwxMjgwMzM6Ii1jeC1QUklWQVRFLWZi RW1vamlfX2ljb25fMWY0MjEiLDEyODAzNzoiLWN4LVBSSVZBVEUtZmJFbW9qaV9f aWNvbl8xZjQyNSIsMTI4MDM4OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFm NDI2IiwxMjgwMzk6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0MjciLDEy ODA0MDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQyOCIsMTI4MDQxOiIt Y3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDI5IiwxMjgwNDM6Ii1jeC1QUklW QVRFLWZiRW1vamlfX2ljb25fMWY0MmIiLDEyODA0NDoiLWN4LVBSSVZBVEUtZmJF bW9qaV9faWNvbl8xZjQyYyIsMTI4MDQ1OiItY3gtUFJJVkFURS1mYkVtb2ppX19p Y29uXzFmNDJkIiwxMjgwNDY6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0 MmUiLDEyODA0NzoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQyZiIsMTI4 MDQ4OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDMwIiwxMjgwNDk6Ii1j eC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0MzEiLDEyODA1MToiLWN4LVBSSVZB VEUtZmJFbW9qaV9faWNvbl8xZjQzMyIsMTI4MDUyOiItY3gtUFJJVkFURS1mYkVt b2ppX19pY29uXzFmNDM0IiwxMjgwNTM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2lj b25fMWY0MzUiLDEyODA1NToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQz NyIsMTI4MDU2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDM4IiwxMjgw NTc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0MzkiLDEyODA1ODoiLWN4

LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQzYSIsMTI4MDU5OiItY3gtUFJJVkFU RS1mYkVtb2ppX19pY29uXzFmNDNiIiwxMjgwNjI6Ii1jeC1QUklWQVRFLWZiRW1v amlfX2ljb25fMWY0M2UiLDEyODA2NDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNv bl8xZjQ0MCIsMTI4MDY2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDQy IiwxMjgwNjc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0NDMiLDEyODA2 ODoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ0NCIsMTI4MDY5OiItY3gt UFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDQ1IiwxMjgwNzA6Ii1jeC1QUklWQVRF LWZiRW1vamlfX2ljb25fMWY0NDYiLDEyODA3MToiLWN4LVBSSVZBVEUtZmJFbW9q aV9faWNvbl8xZjQ0NyIsMTI4MDcyOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29u XzFmNDQ4IiwxMjgwNzM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0NDki LDEyODA3NDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ0YSIsMTI4MDc1 OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDRiIiwxMjgwNzY6Ii1jeC1Q UklWQVRFLWZiRW1vamlfX2ljb25fMWY0NGMiLDEyODA3NzoiLWN4LVBSSVZBVEUt ZmJFbW9qaV9faWNvbl8xZjQ0ZCIsMTI4MDc4OiItY3gtUFJJVkFURS1mYkVtb2pp X19pY29uXzFmNDRlIiwxMjgwNzk6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25f MWY0NGYiLDEyODA4MDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ1MCIs MTI4MTAyOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDY2IiwxMjgxMDM6 Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0NjciLDEyODEwNDoiLWN4LVBS SVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ2OCIsMTI4MTA1OiItY3gtUFJJVkFURS1m YkVtb2ppX19pY29uXzFmNDY5IiwxMjgxMDc6Ii1jeC1QUklWQVRFLWZiRW1vamlf X2ljb25fMWY0NmIiLDEyODExMDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8x ZjQ2ZSIsMTI4MTExOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDZmIiwx MjgxMTM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0NzEiLDEyODExNDoi LWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ3MiIsMTI4MTE1OiItY3gtUFJJ VkFURS1mYkVtb2ppX19pY29uXzFmNDczIiwxMjgxMTY6Ii1jeC1QUklWQVRFLWZi RW1vamlfX2ljb25fMWY0NzQiLDEyODExNzoiLWN4LVBSSVZBVEUtZmJFbW9qaV9f aWNvbl8xZjQ3NSIsMTI4MTE4OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFm NDc2IiwxMjgxMTk6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0NzciLDEy ODEyMDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ3OCIsMTI4MTIzOiIt Y3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDdiIiwxMjgxMjQ6Ii1jeC1QUklW QVRFLWZiRW1vamlfX2ljb25fMWY0N2MiLDEyODEyNToiLWN4LVBSSVZBVEUtZmJF bW9qaV9faWNvbl8xZjQ3ZCIsMTI4MTI2OiItY3gtUFJJVkFURS1mYkVtb2ppX19p Y29uXzFmNDdlIiwxMjgxMjc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0 N2YiLDEyODEyODoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ4MCIsMTI4 MTMwOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDgyIiwxMjgxMzE6Ii1j eC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0ODMiLDEyODEzMzoiLWN4LVBSSVZB VEUtZmJFbW9qaV9faWNvbl8xZjQ4NSIsMTI4MTM5OiItY3gtUFJJVkFURS1mYkVt b2ppX19pY29uXzFmNDhiIiwxMjgxNDM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2lj b25fMWY0OGYiLDEyODE0NDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ5 MCIsMTI4MTQ1OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDkxIiwxMjgx NDc6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0OTMiLDEyODE0ODoiLWN4 LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ5NCIsMTI4MTUwOiItY3gtUFJJVkFU RS1mYkVtb2ppX19pY29uXzFmNDk2IiwxMjgxNTE6Ii1jeC1QUklWQVRFLWZiRW1v amlfX2ljb25fMWY0OTciLDEyODE1MjoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNv bl8xZjQ5OCIsMTI4MTUzOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDk5 IiwxMjgxNTQ6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0OWEiLDEyODE1 NToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjQ5YiIsMTI4MTU2OiItY3gt UFJJVkFURS1mYkVtb2ppX19pY29uXzFmNDljIiwxMjgxNTc6Ii1jeC1QUklWQVRF LWZiRW1vamlfX2ljb25fMWY0OWQiLDEyODE2MjoiLWN4LVBSSVZBVEUtZmJFbW9q aV9faWNvbl8xZjRhMiIsMTI4MTY0OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29u XzFmNGE0IiwxMjgxNjY6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0YTYi LDEyODE2ODoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjRhOCIsMTI4MTY5 OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNGE5IiwxMjgxNzA6Ii1jeC1Q UklWQVRFLWZiRW1vamlfX2ljb25fMWY0YWEiLDEyODE4NzoiLWN4LVBSSVZBVEUt ZmJFbW9qaV9faWNvbl8xZjRiYiIsMTI4MTg5OiItY3gtUFJJVkFURS1mYkVtb2pp X19pY29uXzFmNGJkIiwxMjgxOTA6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25f MWY0YmUiLDEyODE5MToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjRiZiIs MTI4MTkyOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNGMwIiwxMjgyMjI6 Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY0ZGUiLDEyODIyNDoiLWN4LVBS SVZBVEUtZmJFbW9qaV9faWNvbl8xZjRlMCIsMTI4MjQxOiItY3gtUFJJVkFURS1m

YkVtb2ppX19pY29uXzFmNGYxIiwxMjgyNDI6Ii1jeC1QUklWQVRFLWZiRW1vamlf X2ljb25fMWY0ZjIiLDEyODI1MDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8x ZjRmYSIsMTI4Mjc2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNTE0Iiwx Mjg1MTM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2MDEiLDEyODUxNDoi LWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYwMiIsMTI4NTE1OiItY3gtUFJJ VkFURS1mYkVtb2ppX19pY29uXzFmNjAzIiwxMjg1MTY6Ii1jeC1QUklWQVRFLWZi RW1vamlfX2ljb25fMWY2MDQiLDEyODUxODoiLWN4LVBSSVZBVEUtZmJFbW9qaV9f aWNvbl8xZjYwNiIsMTI4NTIxOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFm NjA5IiwxMjg1MjM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2MGIiLDEy ODUyNDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYwYyIsMTI4NTI1OiIt Y3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjBkIiwxMjg1Mjc6Ii1jeC1QUklW QVRFLWZiRW1vamlfX2ljb25fMWY2MGYiLDEyODUzMDoiLWN4LVBSSVZBVEUtZmJF bW9qaV9faWNvbl8xZjYxMiIsMTI4NTMxOiItY3gtUFJJVkFURS1mYkVtb2ppX19p Y29uXzFmNjEzIiwxMjg1MzI6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2 MTQiLDEyODUzNDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYxNiIsMTI4 NTM2OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjE4IiwxMjg1Mzg6Ii1j eC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2MWEiLDEyODU0MDoiLWN4LVBSSVZB VEUtZmJFbW9qaV9faWNvbl8xZjYxYyIsMTI4NTQxOiItY3gtUFJJVkFURS1mYkVt b2ppX19pY29uXzFmNjFkIiwxMjg1NDI6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2lj b25fMWY2MWUiLDEyODU0NDoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYy MCIsMTI4NTQ1OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjIxIiwxMjg1 NDY6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2MjIiLDEyODU0NzoiLWN4 LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYyMyIsMTI4NTQ4OiItY3gtUFJJVkFU RS1mYkVtb2ppX19pY29uXzFmNjI0IiwxMjg1NDk6Ii1jeC1QUklWQVRFLWZiRW1v amlfX2ljb25fMWY2MjUiLDEyODU1MjoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNv bl8xZjYyOCIsMTI4NTUzOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjI5 IiwxMjg1NTQ6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2MmEiLDEyODU1 NToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYyYiIsMTI4NTU3OiItY3gt UFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjJkIiwxMjg1NjA6Ii1jeC1QUklWQVRF LWZiRW1vamlfX2ljb25fMWY2MzAiLDEyODU2MToiLWN4LVBSSVZBVEUtZmJFbW9q aV9faWNvbl8xZjYzMSIsMTI4NTYyOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29u XzFmNjMyIiwxMjg1NjM6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2MzMi LDEyODU2NToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYzNSIsMTI4NTY3 OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjM3IiwxMjg1Njg6Ii1jeC1Q UklWQVRFLWZiRW1vamlfX2ljb25fMWY2MzgiLDEyODU2OToiLWN4LVBSSVZBVEUt ZmJFbW9qaV9faWNvbl8xZjYzOSIsMTI4NTcwOiItY3gtUFJJVkFURS1mYkVtb2pp X19pY29uXzFmNjNhIiwxMjg1NzE6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25f MWY2M2IiLDEyODU3MjoiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8xZjYzYyIs MTI4NTczOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjNkIiwxMjg1NzU6 Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMWY2M2YiLDEyODU3NjoiLWN4LVBS SVZBVEUtZmJFbW9qaV9faWNvbl8xZjY0MCIsMTI4NTg3OiItY3gtUFJJVkFURS1m YkVtb2ppX19pY29uXzFmNjRiIiwxMjg1ODg6Ii1jeC1QUklWQVRFLWZiRW1vamlf X2ljb25fMWY2NGMiLDEyODU4OToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8x ZjY0ZCIsMTI4NTkxOiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzFmNjRmIiw5 NzU3OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzI2MWQiLDk3ODY6Ii1jeC1Q UklWQVRFLWZiRW1vamlfX2ljb25fMjYzYSIsOTg4OToiLWN4LVBSSVZBVEUtZmJF bW9qaV9faWNvbl8yNmExIiw5OTI0OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29u XzI2YzQiLDk5OTQ6Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMjcwYSIsOTk5 NToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8yNzBiIiw5OTk2OiItY3gtUFJJ VkFURS1mYkVtb2ppX19pY29uXzI3MGMiLDk3Mjg6Ii1jeC1QUklWQVRFLWZiRW1v amlfX2ljb25fMjYwMCIsOTcyOToiLWN4LVBSSVZBVEUtZmJFbW9qaV9faWNvbl8y NjAxIiw5NzQ4OiItY3gtUFJJVkFURS1mYkVtb2ppX19pY29uXzI2MTQiLDk3NDk6 Ii1jeC1QUklWQVRFLWZiRW1vamlfX2ljb25fMjYxNSIsMTAwMjQ6Ii1jeC1QUklW QVRFLWZiRW1vamlfX2ljb25fMjcyOCIsMTAwODQ6Ii1jeC1QUklWQVRFLWZiRW1v amlfX2ljb25fMjc2NCJ9fTt9KTsKX19kKCJVdGYxNiIsW10sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPXtkZWNvZGU6ZnVuY3Rpb24oaCl7c3dpdGNoKGgubGVu Z3RoKXtjYXNlIDE6cmV0dXJuIGguY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJu IDY1NTM2fCgoaC5jaGFyQ29kZUF0KDApLTU1Mjk2KSoxMDI0KXwoaC5jaGFyQ29k ZUF0KDEpLTU2MzIwKTt9fSxlbmNvZGU6ZnVuY3Rpb24oaCl7aWYoaDw2NTUzNil7 cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoaCk7fWVsc2UgcmV0dXJuIFN0cmlu

Zy5mcm9tQ2hhckNvZGUoNTUyOTYrKChoLTY1NTM2KT4+MTApKStTdHJpbmcuZnJv bUNoYXJDb2RlKDU2MzIwKyhoJTEwMjQpKTt9fTtlLmV4cG9ydHM9Zzt9KTsKX19k KCJFbW9qaSIsWyJjeCIsIkRPTSIsIkVtb3RlIiwiU3VwcG9ydGVkRW1vamkiLCJo dG1saXplIiwiVXRmMTYiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign Y3gnKSxoPWIoJ0RPTScpLGk9YignRW1vdGUnKSxqPWIoJ1N1cHBvcnRlZEVtb2pp Jyksaz1iKCdodG1saXplJyksbD1iKCdVdGYxNicpLG09ZS5leHBvcnRzPXtodG1s RW1vamlBbmRFbW90ZTpmdW5jdGlvbihuLG8pe3JldHVybiBtLmh0bWxFbW9qaShu LGZ1bmN0aW9uKHApe3JldHVybiBpLmh0bWxFbW90ZShwLG8pO30pO30saHRtbEVt b2ppOmZ1bmN0aW9uKG4sbyl7aWYodHlwZW9mIG8hPSdmdW5jdGlvbicpbz1rO3Zh ciBwPW4scT1bXTt3aGlsZSh0cnVlKXt2YXIgcj1qLnV0ZjE2UmVnZXguZXhlYyhw KTtpZighcnx8IXIubGVuZ3RoKWJyZWFrO3ZhciBzPXJbMF0sdD1wLmluZGV4T2Yo cyk7cS5wdXNoKG8ocC5zdWJzdHJpbmcoMCx0KSkpO3ZhciB1PWwuZGVjb2RlKHMp O2lmKGouZW1vamlbdV0pe3ZhciB2PSItY3gtUFJJVkFURS1mYkVtb2ppX19pY29u IC1jeC1QUklWQVRFLWZiRW1vamlfX3NpemVfMTYiKycgJytqLmVtb2ppW3VdLHc9 aC5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6dn0pO3EucHVzaChoLmNyZWF0ZSgn c3Bhbicse30sdykuaW5uZXJIVE1MKTt9ZWxzZSBxLnB1c2gobyhzKSk7cD1wLnN1 YnN0cmluZyh0K3MubGVuZ3RoKTt9cS5wdXNoKG8ocCkpO3JldHVybiBxLmpvaW4o JycpO319O30pOwpfX2QoInRocm90dGxlIixbImRlYm91bmNlIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2RlYm91bmNlJyk7ZnVuY3Rpb24gaChpLGos ayl7cmV0dXJuIGcoaSxqLGssZmFsc2UsdHJ1ZSk7fWUuZXhwb3J0cz1oO30pOwpf X2QoIkZ1bGxTY3JlZW4iLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJD U1MiLCJVc2VyQWdlbnQiLCJjb3B5UHJvcGVydGllcyIsInRocm90dGxlIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1i KCdBcmJpdGVyJyksaD1iKCdDU1MnKSxpPWIoJ1VzZXJBZ2VudCcpLGo9YignY29w eVByb3BlcnRpZXMnKSxrPWIoJ3Rocm90dGxlJyksbD1qKG5ldyBnKCkse2xpc3Rl bkZvckV2ZW50OmZ1bmN0aW9uKG0pe3ZhciBuPWsodGhpcy5vbkNoYW5nZSwwLHRo aXMpO0V2ZW50Lmxpc3RlbihtLHt3ZWJraXRmdWxsc2NyZWVuY2hhbmdlOm4sbW96 ZnVsbHNjcmVlbmNoYW5nZTpuLGZ1bGxzY3JlZW5jaGFuZ2U6bn0pO0V2ZW50Lmxp c3Rlbihkb2N1bWVudCx7d2Via2l0ZnVsbHNjcmVlbmNoYW5nZTpuLG1vemZ1bGxz Y3JlZW5jaGFuZ2U6bixmdWxsc2NyZWVuY2hhbmdlOm59KTt9LGVuYWJsZUZ1bGxT Y3JlZW46ZnVuY3Rpb24obSl7dGhpcy5saXN0ZW5Gb3JFdmVudChtKTtpZihtLndl YmtpdFJlcXVlc3RGdWxsU2NyZWVuKXtpZihpLmNocm9tZSgpKXttLndlYmtpdFJl cXVlc3RGdWxsU2NyZWVuKEVsZW1lbnQuQUxMT1dfS0VZQk9BUkRfSU5QVVQpO31l bHNlIG0ud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTt9ZWxzZSBpZihtLm1velJl cXVlc3RGdWxsU2NyZWVuKXttLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7fWVsc2Ug aWYobS5yZXF1ZXN0RnVsbFNjcmVlbil7bS5yZXF1ZXN0RnVsbFNjcmVlbigpO31l bHNlIHJldHVybiBmYWxzZTtyZXR1cm4gdHJ1ZTt9LGRpc2FibGVGdWxsU2NyZWVu OmZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbil7 ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpO31lbHNlIGlmKGRvY3Vt ZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4pe2RvY3VtZW50Lm1vekNhbmNlbEZ1bGxT Y3JlZW4oKTt9ZWxzZSBpZihkb2N1bWVudC5jYW5jZWxGdWxsU2NyZWVuKXtkb2N1 bWVudC5jYW5jZWxGdWxsU2NyZWVuKCk7fWVsc2UgaWYoZG9jdW1lbnQuZXhpdEZ1 bGxTY3JlZW4pe2RvY3VtZW50LmV4aXRGdWxsU2NyZWVuKCk7fWVsc2UgcmV0dXJu IGZhbHNlO3JldHVybiB0cnVlO30saXNGdWxsU2NyZWVuOmZ1bmN0aW9uKCl7cmV0 dXJuIChkb2N1bWVudC53ZWJraXRJc0Z1bGxTY3JlZW58fGRvY3VtZW50LmZ1bGxT Y3JlZW58fGRvY3VtZW50Lm1vekZ1bGxTY3JlZW4pO30sdG9nZ2xlRnVsbFNjcmVl bjpmdW5jdGlvbihtKXtpZih0aGlzLmlzRnVsbFNjcmVlbigpKXt0aGlzLmRpc2Fi bGVGdWxsU2NyZWVuKCk7cmV0dXJuIGZhbHNlO31lbHNlIHJldHVybiB0aGlzLmVu YWJsZUZ1bGxTY3JlZW4obSk7cmV0dXJuIGZhbHNlO30sb25DaGFuZ2U6ZnVuY3Rp b24oKXt2YXIgbT10aGlzLmlzRnVsbFNjcmVlbigpO2guY29uZGl0aW9uQ2xhc3Mo ZG9jdW1lbnQuYm9keSwnZnVsbFNjcmVlbicsbSk7dGhpcy5pbmZvcm0oJ2NoYW5n ZWQnKTt9LGlzU3VwcG9ydGVkOmZ1bmN0aW9uKCl7cmV0dXJuIChkb2N1bWVudC53 ZWJraXRDYW5jZWxGdWxsU2NyZWVuJiZpLmNocm9tZSgpKXx8ZG9jdW1lbnQubW96 Q2FuY2VsRnVsbFNjcmVlbnx8ZG9jdW1lbnQuY2FuY2VsRnVsbFNjcmVlbnx8ZG9j dW1lbnQuZXhpdEZ1bGxTY3JlZW47fX0pO2UuZXhwb3J0cz1sO30pOwpfX2QoIklt YWdlVXRpbHMiLFsiVXNlckFnZW50Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPWIoJ1VzZXJBZ2VudCcpLGg9e2hhc0xvYWRlZDpmdW5jdGlvbihpKXtpZihp Lm5hdHVyYWxXaWR0aCE9PXVuZGVmaW5lZCl7cmV0dXJuIGkuY29tcGxldGUmJmku d2lkdGghPT0wO31lbHNlIGlmKGkuaGVpZ2h0PT0yMCYmaS53aWR0aD09MjAmJmku Y29tcGxldGUpe3JldHVybiBmYWxzZTt9ZWxzZSBpZihpLmNvbXBsZXRlPT09dW5k

ZWZpbmVkJiZnLnNhZmFyaSgpPDUwMCl7dmFyIGo9bmV3IEltYWdlKCk7ai5zcmM9 aS5zcmM7cmV0dXJuIGouY29tcGxldGU7fXJldHVybiBpLmNvbXBsZXRlO319O2Uu ZXhwb3J0cz1oO30pOwpfX2QoImZsYXR0ZW5BcnJheSIsW10sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe2Z1bmN0aW9uIGcoaCl7dmFyIGk9W107d2hpbGUoaC5sZW5ndGgp e3ZhciBqPWgucG9wKCk7aWYoQXJyYXkuaXNBcnJheShqKSl7QXJyYXkucHJvdG90 eXBlLnB1c2guYXBwbHkoaCxqKTt9ZWxzZSBpLnB1c2goaik7fXJldHVybiBpLnJl dmVyc2UoKTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiSlNYRE9NIixbIkRPTSIsImZs YXR0ZW5BcnJheSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET00n KSxoPWIoJ2ZsYXR0ZW5BcnJheScpLGk9WydhJywnYnInLCdidXR0b24nLCdjaGVj a2JveCcsJ2RkJywnZGl2JywnZGwnLCdkdCcsJ2Zvcm0nLCdoMScsJ2gyJywnaDMn LCdoNCcsJ2g1JywnaDYnLCdocicsJ2knLCdpZnJhbWUnLCdpbWcnLCdpbnB1dCcs J2xhYmVsJywnbGknLCdvcHRpb24nLCdwJywncHJlJywnc2VsZWN0Jywnc3Bhbics J3N0cm9uZycsJ3RhYmxlJywndGQnLCd0ZXh0YXJlYScsJ3RoJywndHInLCd1bCdd LGo9e307aS5mb3JFYWNoKGZ1bmN0aW9uKGspe3ZhciBsPWZ1bmN0aW9uKG0pe3Zh ciBuO2lmKG0uY2hpbGRyZW4pe249QXJyYXkuaXNBcnJheShtLmNoaWxkcmVuKT9o KG0uY2hpbGRyZW4pOmgoW20uY2hpbGRyZW5dKTtkZWxldGUgbS5jaGlsZHJlbjt9 cmV0dXJuIGcuY3JlYXRlKGssbSxuKTt9O2pba109bDt9KTtlLmV4cG9ydHM9ajt9 KTsKX19kKCJMYXllclN0b3BCbHVyIixbImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rp b24gaChpKXt0aGlzLl9sYXllcj1pO31nKGgucHJvdG90eXBlLHtfc3Vic2NyaXB0 aW9uczpudWxsLF9vbkJsdXI6bnVsbCxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLl9z dWJzY3JpcHRpb25zPVt0aGlzLl9sYXllci5zdWJzY3JpYmUoJ3Nob3cnLHRoaXMu X2F0dGFjaC5iaW5kKHRoaXMpKSx0aGlzLl9sYXllci5zdWJzY3JpYmUoJ2hpZGUn LHRoaXMuX2RldGFjaC5iaW5kKHRoaXMpKV07aWYodGhpcy5fbGF5ZXIuaXNTaG93 bigpKXRoaXMuX2F0dGFjaCgpO30sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuX2Rl dGFjaCgpO3doaWxlKHRoaXMuX3N1YnNjcmlwdGlvbnMubGVuZ3RoKXRoaXMuX3N1 YnNjcmlwdGlvbnMucG9wKCkudW5zdWJzY3JpYmUoKTt0aGlzLl9zdWJzY3JpcHRp b25zPW51bGw7fSxfZGV0YWNoOmZ1bmN0aW9uKCl7dGhpcy5fb25CbHVyJiZ0aGlz Ll9vbkJsdXIudW5zdWJzY3JpYmUoKTt0aGlzLl9vbkJsdXI9bnVsbDt9LF9hdHRh Y2g6ZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXt0aGlzLl9vbkJsdXI9dGhpcy5fbGF5 ZXIuc3Vic2NyaWJlKCdibHVyJyxmdW5jdGlvbigpe3JldHVybiBmYWxzZTt9KTt9 KS5iaW5kKHRoaXMpLmRlZmVyKCk7fX0pO2UuZXhwb3J0cz1oO30pOwpfX2QoIlNj cm9sbGFibGVBcmVhIixbImFycmF5LWV4dGVuc2lvbnMiLCJldmVudC1leHRlbnNp b25zIiwiQW5pbWF0aW9uIiwiQXJiaXRlck1peGluIiwiQ1NTIiwiRGF0YVN0b3Jl IiwiRE9NIiwiUGFyZW50IiwiUnVuIiwiU2ltcGxlRHJhZyIsIlN0eWxlIiwiVXNl ckFnZW50IiwiVmVjdG9yIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7YignYXJyYXktZXh0ZW5zaW9ucycpO2IoJ2V2ZW50LWV4dGVuc2lv bnMnKTt2YXIgZz1iKCdBbmltYXRpb24nKSxoPWIoJ0FyYml0ZXJNaXhpbicpLGk9 YignQ1NTJyksaj1iKCdEYXRhU3RvcmUnKSxrPWIoJ0RPTScpLGw9YignUGFyZW50 JyksbT1iKCdSdW4nKSxuPWIoJ1NpbXBsZURyYWcnKSxvPWIoJ1N0eWxlJykscD1i KCdVc2VyQWdlbnQnKSxxPWIoJ1ZlY3RvcicpLHI9YignY29weVByb3BlcnRpZXMn KTtmdW5jdGlvbiBzKHQsdSl7aWYoIXQpcmV0dXJuO3U9dXx8e307dGhpcy5fZWxl bT10O3RoaXMuX3dyYXA9ay5maW5kKHQsJ2Rpdi51aVNjcm9sbGFibGVBcmVhV3Jh cCcpO3RoaXMuX2JvZHk9ay5maW5kKHRoaXMuX3dyYXAsJ2Rpdi51aVNjcm9sbGFi bGVBcmVhQm9keScpO3RoaXMuX2NvbnRlbnQ9ay5maW5kKHRoaXMuX2JvZHksJ2Rp di51aVNjcm9sbGFibGVBcmVhQ29udGVudCcpO3RoaXMuX3RyYWNrPWsuZmluZCh0 LCdkaXYudWlTY3JvbGxhYmxlQXJlYVRyYWNrJyk7dGhpcy5fZ3JpcHBlcj1rLmZp bmQodGhpcy5fdHJhY2ssJ2Rpdi51aVNjcm9sbGFibGVBcmVhR3JpcHBlcicpO3Ro aXMuX29wdGlvbnM9dTt0aGlzLmFkanVzdEdyaXBwZXIuYmluZCh0aGlzKS5kZWZl cigpO3RoaXMuX2xpc3RlbmVycz1bRXZlbnQubGlzdGVuKHQsJ21vdXNlbW92ZScs dGhpcy5faGFuZGxlTW91c2Vtb3ZlLmJpbmQodGhpcykpLEV2ZW50Lmxpc3Rlbih0 aGlzLl93cmFwLCdzY3JvbGwnLHRoaXMuX2hhbmRsZVNjcm9sbC5iaW5kKHRoaXMp KSxFdmVudC5saXN0ZW4odGhpcy5fdHJhY2ssJ2NsaWNrJyx0aGlzLl9oYW5kbGVD bGlja09uVHJhY2suYmluZCh0aGlzKSldO2lmKHUuZmFkZSE9PWZhbHNlKXRoaXMu X2xpc3RlbmVycy5wdXNoKEV2ZW50Lmxpc3Rlbih0LCdtb3VzZWVudGVyJyx0aGlz LnNob3dTY3JvbGxiYXIuc2hpZWxkKHRoaXMpKSxFdmVudC5saXN0ZW4odCwnbW91 c2VvdXQnLHRoaXMuaGlkZVNjcm9sbGJhci5zaGllbGQodGhpcykpKTtpZihwLnNh ZmFyaSgpfHxwLmNocm9tZSgpKXt0aGlzLl9saXN0ZW5lcnMucHVzaChFdmVudC5s aXN0ZW4odCwnbW91c2Vkb3duJyxmdW5jdGlvbigpe3ZhciB2PUV2ZW50Lmxpc3Rl bih3aW5kb3csJ21vdXNldXAnLGZ1bmN0aW9uKCl7aWYodC5zY3JvbGxMZWZ0KXQu

c2Nyb2xsTGVmdD0wO3YucmVtb3ZlKCk7fSk7fSkpO31lbHNlIGlmKHAuZmlyZWZv eCgpKXRoaXMuX3dyYXAuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwn LGZ1bmN0aW9uKGV2ZW50KXtldmVudC5heGlzPT09ZXZlbnQuSE9SSVpPTlRBTF9B WElTJiZldmVudC5wcmV2ZW50RGVmYXVsdCgpO30sZmFsc2UpO3RoaXMuaW5pdERy YWcoKTtqLnNldCh0aGlzLl9lbGVtLCdTY3JvbGxhYmxlQXJlYScsdGhpcyk7aWYo IXUucGVyc2lzdGVudCltLm9uTGVhdmUodGhpcy5kZXN0cm95LmJpbmQodGhpcykp O31yKHMse3JlbmRlckRPTTpmdW5jdGlvbigpe3ZhciB0PWsuY3JlYXRlKCdkaXYn LHtjbGFzc05hbWU6J3VpU2Nyb2xsYWJsZUFyZWFDb250ZW50J30pLHU9ay5jcmVh dGUoJ2Rpdicse2NsYXNzTmFtZTondWlTY3JvbGxhYmxlQXJlYUJvZHknfSx0KSx2 PWsuY3JlYXRlKCdkaXYnLHtjbGFzc05hbWU6J3VpU2Nyb2xsYWJsZUFyZWFXcmFw J30sdSksdz1rLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOid1aVNjcm9sbGFibGVB cmVhIG5hdGl2ZSd9LHYpO3JldHVybiB7cm9vdDp3LHdyYXA6dixib2R5OnUsY29u dGVudDp0fTt9LGZyb21OYXRpdmU6ZnVuY3Rpb24odCx1KXtpZighaS5oYXNDbGFz cyh0LCd1aVNjcm9sbGFibGVBcmVhJyl8fCFpLmhhc0NsYXNzKHQsJ25hdGl2ZScp KXJldHVybjt1PXV8fHt9O2kucmVtb3ZlQ2xhc3ModCwnbmF0aXZlJyk7dmFyIHY9 ay5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTondWlTY3JvbGxhYmxlQXJlYVRyYWNr J30say5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTondWlTY3JvbGxhYmxlQXJlYUdy aXBwZXInfSkpO2lmKHUuZmFkZSE9PWZhbHNlKXtpLmFkZENsYXNzKHQsJ2ZhZGUn KTtpLmFkZENsYXNzKHYsJ2ludmlzaWJsZV9lbGVtJyk7fWVsc2UgaS5hZGRDbGFz cyh0LCdub2ZhZGUnKTtrLmFwcGVuZENvbnRlbnQodCx2KTt2YXIgdz1uZXcgcyh0 LHUpO3cucmVzaXplKCk7cmV0dXJuIHc7fSxnZXRJbnN0YW5jZTpmdW5jdGlvbih0 KXt2YXIgdT1sLmJ5Q2xhc3ModCwndWlTY3JvbGxhYmxlQXJlYScpO3JldHVybiB1 P2ouZ2V0KHUsJ1Njcm9sbGFibGVBcmVhJyk6bnVsbDt9LHBva2U6ZnVuY3Rpb24o dCl7dmFyIHU9cy5nZXRJbnN0YW5jZSh0KTt1JiZ1LnBva2UoKTt9fSk7cihzLnBy b3RvdHlwZSxoLHtpbml0RHJhZzpmdW5jdGlvbigpe3ZhciB0PW5ldyBuKHRoaXMu X2dyaXBwZXIpO3Quc3Vic2NyaWJlKCdzdGFydCcsZnVuY3Rpb24odSxldmVudCl7 aWYoISgoZXZlbnQud2hpY2gmJmV2ZW50LndoaWNoPT09MSl8fChldmVudC5idXR0 b24mJmV2ZW50LmJ1dHRvbj09PTEpKSlyZXR1cm47dmFyIHY9cS5nZXRFdmVudFBv c2l0aW9uKGV2ZW50KS55LHc9dGhpcy5fZ3JpcHBlci5vZmZzZXRUb3A7aS5hZGRD bGFzcyh0aGlzLl90cmFjaywndWlTY3JvbGxhYmxlQXJlYURyYWdnaW5nJyk7dmFy IHg9dC5zdWJzY3JpYmUoJ3VwZGF0ZScsZnVuY3Rpb24oeixldmVudCl7dmFyIGFh PXEuZ2V0RXZlbnRQb3NpdGlvbihldmVudCkueS12LGJhPXRoaXMuX2VsZW0uY2xp ZW50SGVpZ2h0LGNhPXRoaXMuX2NvbnRlbnQub2Zmc2V0SGVpZ2h0LGRhPXRoaXMu X3RyYWNrLm9mZnNldEhlaWdodCxlYT1iYS9jYSpkYSxmYT1jYS10aGlzLl93cmFw Lm9mZnNldEhlaWdodCxnYT13K2FhLGhhPWRhLWVhO2dhPU1hdGgubWF4KE1hdGgu bWluKGdhLGhhKSwwKTt2YXIgaWE9Z2EvaGEqZmE7dGhpcy5fd3JhcC5zY3JvbGxU b3A9aWE7fS5iaW5kKHRoaXMpKSx5PXQuc3Vic2NyaWJlKCdlbmQnLGZ1bmN0aW9u KCl7dC51bnN1YnNjcmliZSh4KTt0LnVuc3Vic2NyaWJlKHkpO2kucmVtb3ZlQ2xh c3ModGhpcy5fdHJhY2ssJ3VpU2Nyb2xsYWJsZUFyZWFEcmFnZ2luZycpO30uYmlu ZCh0aGlzKSk7fS5iaW5kKHRoaXMpKTt9LGFkanVzdEdyaXBwZXI6ZnVuY3Rpb24o KXt2YXIgdD10aGlzLl9lbGVtLmNsaWVudEhlaWdodCx1PXRoaXMuX2NvbnRlbnQu b2Zmc2V0SGVpZ2h0LHY9dGhpcy5fdHJhY2sub2Zmc2V0SGVpZ2h0LHc9dC91KnY7 aWYodzx2KXtvLnNldCh0aGlzLl9ncmlwcGVyLCdoZWlnaHQnLHcrJ3B4Jyk7dmFy IHg9dGhpcy5fd3JhcC5zY3JvbGxUb3AvdSp2O28uc2V0KHRoaXMuX2dyaXBwZXIs J3RvcCcseCsncHgnKTtpLnNob3codGhpcy5fZ3JpcHBlcik7fWVsc2UgaS5oaWRl KHRoaXMuX2dyaXBwZXIpO3RoaXMuX2NoZWNrQ29udGVudEJvdW5kYXJpZXMoKTty ZXR1cm4gdGhpczt9LF9jaGVja0NvbnRlbnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7 aS5jb25kaXRpb25DbGFzcyh0aGlzLl9lbGVtLCdjb250ZW50QmVmb3JlJyx0aGlz Ll93cmFwLnNjcm9sbFRvcD4wKTtpLmNvbmRpdGlvbkNsYXNzKHRoaXMuX2VsZW0s J2NvbnRlbnRBZnRlcicsIXRoaXMuaXNTY3JvbGxlZFRvQm90dG9tKCkpO30sZGVz dHJveTpmdW5jdGlvbigpe3RoaXMuX2xpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9u KHQpe3QucmVtb3ZlKCk7fSk7dGhpcy5fbGlzdGVuZXJzLmxlbmd0aD0wO30sX2hh bmRsZUNsaWNrT25UcmFjazpmdW5jdGlvbihldmVudCl7aWYoIXRoaXMubGFzdE1v dXNlUG9zaXRpb24pcmV0dXJuO3ZhciB0PXRoaXMuX2dyaXBwZXIuZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCk7aWYodGhpcy5sYXN0TW91c2VQb3NpdGlvbi55PHQudG9w KXt0aGlzLnNldFNjcm9sbFRvcCh0aGlzLmdldFNjcm9sbFRvcCgpLXRoaXMuX2Vs ZW0uY2xpZW50SGVpZ2h0KTt9ZWxzZSBpZih0aGlzLmxhc3RNb3VzZVBvc2l0aW9u Lnk+dC5ib3R0b20pdGhpcy5zZXRTY3JvbGxUb3AodGhpcy5nZXRTY3JvbGxUb3Ao KSt0aGlzLl9lbGVtLmNsaWVudEhlaWdodCk7fSxfaGFuZGxlTW91c2Vtb3ZlOmZ1 bmN0aW9uKGV2ZW50KXt2YXIgdD1xLmdldEV2ZW50UG9zaXRpb24oZXZlbnQpO2lm

KHRoaXMuX29wdGlvbnMuZmFkZSE9PWZhbHNlKXt2YXIgdT1xLmdldEVsZW1lbnRQ b3NpdGlvbih0aGlzLl90cmFjaykueCx2PXEuZ2V0RWxlbWVudERpbWVuc2lvbnMo dGhpcy5fdHJhY2spLng7aWYoTWF0aC5hYnModSt2LzItdC54KTwyNSl7dGhpcy5z aG93U2Nyb2xsYmFyKGZhbHNlKTt9ZWxzZSB0aGlzLmhpZGVTY3JvbGxiYXIoKTt9 dGhpcy5sYXN0TW91c2VQb3NpdGlvbj10LmNvbnZlcnRUbygndmlld3BvcnQnKTt9 LF9oYW5kbGVTY3JvbGw6ZnVuY3Rpb24oZXZlbnQpe3RoaXMuYWRqdXN0R3JpcHBl cigpO2lmKHRoaXMuX29wdGlvbnMuZmFkZSE9PWZhbHNlKXRoaXMuc2hvd1Njcm9s bGJhcigpO3RoaXMuaW5mb3JtKCdzY3JvbGwnKTt9LGhpZGVTY3JvbGxiYXI6ZnVu Y3Rpb24odCl7aWYoIXRoaXMuX3Njcm9sbGJhclZpc2libGUpcmV0dXJuIHRoaXM7 dGhpcy5fc2Nyb2xsYmFyVmlzaWJsZT1mYWxzZTtpZih0aGlzLl9oaWRlVGltZW91 dCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTt0aGlzLl9oaWRlVGlt ZW91dD1udWxsO31pZih0KXtvLnNldCh0aGlzLl90cmFjaywnb3BhY2l0eScsMCk7 aS5hZGRDbGFzcy5jdXJyeSh0aGlzLl90cmFjaywnaW52aXNpYmxlX2VsZW0nKTt9 ZWxzZSB0aGlzLl9oaWRlVGltZW91dD1mdW5jdGlvbigpe2lmKHRoaXMuX2hpZGVB bmltYXRpb24pe3RoaXMuX2hpZGVBbmltYXRpb24uc3RvcCgpO3RoaXMuX2hpZGVB bmltYXRpb249bnVsbDt9dGhpcy5faGlkZUFuaW1hdGlvbj0obmV3IGcodGhpcy5f dHJhY2spKS5mcm9tKCdvcGFjaXR5JywxKS50bygnb3BhY2l0eScsMCkuZHVyYXRp b24oMjUwKS5vbmRvbmUoaS5hZGRDbGFzcy5jdXJyeSh0aGlzLl90cmFjaywnaW52 aXNpYmxlX2VsZW0nKSkuZ28oKTt9LmJpbmQodGhpcykuZGVmZXIoNzUwKTtyZXR1 cm4gdGhpczt9LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciB0PXEuZ2V0RWxlbWVudERp bWVuc2lvbnModGhpcy5fZWxlbSkueDtpZighdGhpcy5fb3B0aW9ucy5mYWRlKXQt PTEwO3Q9TWF0aC5tYXgoMCx0KTtvLnNldCh0aGlzLl9ib2R5LCd3aWR0aCcsdCsn cHgnKTtyZXR1cm4gdGhpczt9LHNob3dTY3JvbGxiYXI6ZnVuY3Rpb24odCl7dGhp cy5hZGp1c3RHcmlwcGVyKCk7aWYodGhpcy5fc2Nyb2xsYmFyVmlzaWJsZSlyZXR1 cm4gdGhpczt0aGlzLl9zY3JvbGxiYXJWaXNpYmxlPXRydWU7aWYodGhpcy5faGlk ZVRpbWVvdXQpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7dGhpcy5f aGlkZVRpbWVvdXQ9bnVsbDt9aWYodGhpcy5faGlkZUFuaW1hdGlvbil7dGhpcy5f aGlkZUFuaW1hdGlvbi5zdG9wKCk7dGhpcy5faGlkZUFuaW1hdGlvbj1udWxsO31v LnNldCh0aGlzLl90cmFjaywnb3BhY2l0eScsMSk7aS5yZW1vdmVDbGFzcyh0aGlz Ll90cmFjaywnaW52aXNpYmxlX2VsZW0nKTtpZih0IT09ZmFsc2UpdGhpcy5oaWRl U2Nyb2xsYmFyKCk7cmV0dXJuIHRoaXM7fSxpc1Njcm9sbGVkVG9Cb3R0b206ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcC5zY3JvbGxUb3A+PXRoaXMuX3dyYXAu c2Nyb2xsSGVpZ2h0LXRoaXMuX3dyYXAuY2xpZW50SGVpZ2h0O30sc2Nyb2xsVG9C b3R0b206ZnVuY3Rpb24odCl7dGhpcy5zZXRTY3JvbGxUb3AodGhpcy5fd3JhcC5z Y3JvbGxIZWlnaHQsdCk7fSxzY3JvbGxUb1RvcDpmdW5jdGlvbih0KXt0aGlzLnNl dFNjcm9sbFRvcCgwLHQpO30sc2Nyb2xsSW50b1ZpZXc6ZnVuY3Rpb24odCx1KXt2 YXIgdj10aGlzLl93cmFwLmNsaWVudEhlaWdodCx3PXQub2Zmc2V0SGVpZ2h0LHg9 dGhpcy5fd3JhcC5zY3JvbGxUb3AseT14K3Ysej10Lm9mZnNldFRvcCxhYT16K3c7 aWYoejx4fHx2PHcpe3RoaXMuc2V0U2Nyb2xsVG9wKHosdSk7fWVsc2UgaWYoYWE+ eSl0aGlzLnNldFNjcm9sbFRvcCh4KyhhYS15KSx1KTt9LHBva2U6ZnVuY3Rpb24o KXt2YXIgdD10aGlzLl93cmFwLnNjcm9sbFRvcDt0aGlzLl93cmFwLnNjcm9sbFRv cCs9MTt0aGlzLl93cmFwLnNjcm9sbFRvcC09MTt0aGlzLl93cmFwLnNjcm9sbFRv cD10O3JldHVybiB0aGlzLnNob3dTY3JvbGxiYXIoZmFsc2UpO30sZ2V0U2Nyb2xs VG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyYXAuc2Nyb2xsVG9wO30sZ2V0 U2Nyb2xsSGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyYXAuc2Nyb2xs SGVpZ2h0O30sc2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKHQsdSl7aWYodSE9PWZhbHNl KXtpZih0aGlzLl9zY3JvbGxUb3BBbmltYXRpb24pdGhpcy5fc2Nyb2xsVG9wQW5p bWF0aW9uLnN0b3AoKTt0aGlzLl9zY3JvbGxUb3BBbmltYXRpb249KG5ldyBnKHRo aXMuX3dyYXApKS50bygnc2Nyb2xsVG9wJyx0KS5lYXNlKGcuZWFzZS5lbmQpLmR1 cmF0aW9uKDI1MCkuZ28oKTt9ZWxzZSB0aGlzLl93cmFwLnNjcm9sbFRvcD10O319 KTtlLmV4cG9ydHM9czt9KTsKX19kKCJTY3JvbGxhYmxlVHlwZWFoZWFkQmVoYXZp b3IiLFsiRE9NIiwiQ1NTIiwiU3R5bGUiLCJQYXJlbnQiLCJjeCIsIlNjcm9sbGFi bGVBcmVhIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9YignRE9NJyksaD1iKCdDU1MnKSxpPWIoJ1N0eWxlJyksaj1iKCdQYXJl bnQnKSxrPWIoJ2N4JyksbD1iKCdTY3JvbGxhYmxlQXJlYScpLG09YignY29weVBy b3BlcnRpZXMnKTtmdW5jdGlvbiBuKG8pe3RoaXMuX3R5cGVhaGVhZD1vO31tKG4u cHJvdG90eXBlLHtfc3Vic2NyaXB0aW9uczpudWxsLF9zY3JvbGxhYmxlRWxlbXM6 bnVsbCxfc2Nyb2xsYWJsZUFyZWE6bnVsbCxfc2hvd1Njcm9sbGJhcjpudWxsLGVu YWJsZTpmdW5jdGlvbigpe3RoaXMuX3Njcm9sbGFibGVFbGVtcz0obC5yZW5kZXJE T00oKSk7aC5hZGRDbGFzcyh0aGlzLl9zY3JvbGxhYmxlRWxlbXMucm9vdCwiLWN4

LVBSSVZBVEUtc2Nyb2xsYWJsZVR5cGVhaGVhZF9fU2Nyb2xsYWJsZVR5cGVhaGVh ZEFyZWEiKTtnLmFwcGVuZENvbnRlbnQodGhpcy5fdHlwZWFoZWFkLmdldFZpZXco KS5lbGVtZW50LHRoaXMuX3Njcm9sbGFibGVFbGVtcy5yb290KTt0aGlzLl90eXBl YWhlYWQuZ2V0VmlldygpLmNvbnRlbnQ9dGhpcy5fc2Nyb2xsYWJsZUVsZW1zLmNv bnRlbnQ7dGhpcy5fc2Nyb2xsYWJsZUFyZWE9KGwuZnJvbU5hdGl2ZSh0aGlzLl9z Y3JvbGxhYmxlRWxlbXMucm9vdCx7ZmFkZTpmYWxzZX0pKTt0aGlzLl9zdWJzY3Jp cHRpb25zPVt0aGlzLl90eXBlYWhlYWQuZ2V0VmlldygpLnN1YnNjcmliZSgncmVz ZXQnLHRoaXMuX3Jlc2V0LmJpbmQodGhpcykpLHRoaXMuX3R5cGVhaGVhZC5nZXRW aWV3KCkuc3Vic2NyaWJlKCdyZW5kZXInLHRoaXMuX3JlbmRlci5iaW5kKHRoaXMp KSx0aGlzLl90eXBlYWhlYWQuZ2V0VmlldygpLnN1YnNjcmliZSgnYmVmb3JlUmVu ZGVyJyx0aGlzLl9iZWZvcmVSZW5kZXIuYmluZCh0aGlzKSksdGhpcy5fdHlwZWFo ZWFkLmdldFZpZXcoKS5zdWJzY3JpYmUoJ25leHQnLHRoaXMuX3Njcm9sbEhlbHBl ci5iaW5kKHRoaXMpKSx0aGlzLl90eXBlYWhlYWQuZ2V0VmlldygpLnN1YnNjcmli ZSgncHJldicsdGhpcy5fc2Nyb2xsSGVscGVyLmJpbmQodGhpcykpXTtpLnNldCh0 aGlzLl9zY3JvbGxhYmxlRWxlbXMud3JhcCwnaGVpZ2h0JywnMHB4Jyk7aC5yZW1v dmVDbGFzcyh0aGlzLl9zY3JvbGxhYmxlRWxlbXMucm9vdCwiLWN4LVBSSVZBVEUt c2Nyb2xsYWJsZVR5cGVhaGVhZF9faGFzUmVzdWx0cyIpO30sZGlzYWJsZTpmdW5j dGlvbigpe3doaWxlKHRoaXMuX3N1YnNjcmlwdGlvbnMubGVuZ3RoKXRoaXMuX3N1 YnNjcmlwdGlvbnMucG9wKCkudW5zdWJzY3JpYmUoKTt0aGlzLl9zdWJzY3JpcHRp b25zPW51bGw7fSxfcmVzZXQ6ZnVuY3Rpb24oKXtpLnNldCh0aGlzLl9zY3JvbGxh YmxlRWxlbXMud3JhcCwnaGVpZ2h0JywnMHB4Jyk7aC5yZW1vdmVDbGFzcyh0aGlz Ll9zY3JvbGxhYmxlRWxlbXMucm9vdCwiLWN4LVBSSVZBVEUtc2Nyb2xsYWJsZVR5 cGVhaGVhZF9faGFzUmVzdWx0cyIpO3RoaXMuX3Njcm9sbGFibGVBcmVhLnNjcm9s bFRvVG9wKCk7fSxfcmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsYWJsZUFy ZWEucG9rZSgpO3RoaXMuX3Nob3dTY3JvbGxiYXI/dGhpcy5fc2Nyb2xsYWJsZUFy ZWEuc2hvd1Njcm9sbGJhcihmYWxzZSk6dGhpcy5fc2Nyb2xsYWJsZUFyZWEuaGlk ZVNjcm9sbGJhcih0cnVlKTtoLmFkZENsYXNzKHRoaXMuX3Njcm9sbGFibGVFbGVt cy5yb290LCItY3gtUFJJVkFURS1zY3JvbGxhYmxlVHlwZWFoZWFkX19oYXNSZXN1 bHRzIik7fSxfYmVmb3JlUmVuZGVyOmZ1bmN0aW9uKG8scCl7dmFyIHE9NTtpZih0 aGlzLl90eXBlYWhlYWQuZ2V0VmlldygpLm1heFJlc3VsdHM8MTApcT0zO2kuc2V0 KHRoaXMuX3Njcm9sbGFibGVFbGVtcy5ib2R5LCd3aWR0aCcsdGhpcy5fc2Nyb2xs YWJsZUVsZW1zLndyYXAub2Zmc2V0V2lkdGgrJ3B4Jyk7aWYocC5yZXN1bHRzLmxl bmd0aDxxKXtpLnNldCh0aGlzLl9zY3JvbGxhYmxlRWxlbXMud3JhcCwnaGVpZ2h0 JywoMzgqcC5yZXN1bHRzLmxlbmd0aCs0KSsncHgnKTt0aGlzLl9zaG93U2Nyb2xs YmFyPWZhbHNlO31lbHNle3RoaXMuX3Njcm9sbGFibGVBcmVhLnNob3dTY3JvbGxi YXIoZmFsc2UpO2kuc2V0KHRoaXMuX3Njcm9sbGFibGVFbGVtcy53cmFwLCdoZWln aHQnLCgzOCpxKzQpKydweCcpO3RoaXMuX3Nob3dTY3JvbGxiYXI9dHJ1ZTt9fSxf c2Nyb2xsSGVscGVyOmZ1bmN0aW9uKG8scCl7aWYoIWouYnlDbGFzcyhwLCd1aVNj cm9sbGFibGVBcmVhJykpcmV0dXJuO3RoaXMuX3R5cGVhaGVhZC5nZXRWaWV3KCku aWdub3JlTW91c2VvdmVyPXRydWU7dmFyIHE9ai5ieUNsYXNzKHAsJ3VpU2Nyb2xs YWJsZUFyZWFXcmFwJykscj1wLm9mZnNldFRvcC1xLm9mZnNldFRvcDtpZihyPHEu c2Nyb2xsVG9wKXtxLnNjcm9sbFRvcD1yO3JldHVybjt9dmFyIHM9citwLm9mZnNl dEhlaWdodDtpZihzPnEuc2Nyb2xsVG9wK3Eub2Zmc2V0SGVpZ2h0KXEuc2Nyb2xs VG9wPXMtcS5vZmZzZXRIZWlnaHQ7fX0pO2UuZXhwb3J0cz1uO30pOwpfX2QoImxl Z2FjeTpMZWdhY3lTY3JvbGxhYmxlVHlwZWFoZWFkQmVoYXZpb3IiLFsiU2Nyb2xs YWJsZVR5cGVhaGVhZEJlaGF2aW9yIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9 YignU2Nyb2xsYWJsZVR5cGVhaGVhZEJlaGF2aW9yJyk7aWYoIWEuVHlwZWFoZWFk QmVoYXZpb3JzKWEuVHlwZWFoZWFkQmVoYXZpb3JzPXt9O2EuVHlwZWFoZWFkQmVo YXZpb3JzLnNjcm9sbEFyZWE9ZnVuY3Rpb24oZil7Zi5lbmFibGVCZWhhdmlvcihl KTt9O30sMyk7Cl9fZCgiTXVsdGlCb290c3RyYXBEYXRhU291cmNlIixbIkNsYXNz IiwiRGF0YVNvdXJjZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdD bGFzcycpLGg9YignRGF0YVNvdXJjZScpO2Z1bmN0aW9uIGkoail7dGhpcy5fYm9v dHN0cmFwRW5kcG9pbnRzPWouYm9vdHN0cmFwRW5kcG9pbnRzO3RoaXMucGFyZW50 LmNvbnN0cnVjdCh0aGlzLGopO31nLmV4dGVuZChpLGgpO2kucHJvdG90eXBlLmJv b3RzdHJhcFdpdGhvdXRUb2tlbj1mdW5jdGlvbigpe2Zvcih2YXIgaj0wO2o8dGhp cy5fYm9vdHN0cmFwRW5kcG9pbnRzLmxlbmd0aDtqKyspdGhpcy5mZXRjaCh0aGlz Ll9ib290c3RyYXBFbmRwb2ludHNbal0uZW5kcG9pbnQsdGhpcy5fYm9vdHN0cmFw RW5kcG9pbnRzW2pdLmRhdGF8fHt9LHtib290c3RyYXA6dHJ1ZX0pO307ZS5leHBv cnRzPWk7fSk7Cl9fZCgiT25WaXNpYmxlIixbImV2ZW50LWV4dGVuc2lvbnMiLCJB cmJpdGVyIiwiRE9NIiwiUnVuIiwiVmVjdG9yIiwiY29weVByb3BlcnRpZXMiLCJ0

aHJvdHRsZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNp b25zJyk7dmFyIGc9YignQXJiaXRlcicpLGg9YignRE9NJyksaT1iKCdSdW4nKSxq PWIoJ1ZlY3RvcicpLGs9YignY29weVByb3BlcnRpZXMnKSxsPWIoJ3Rocm90dGxl Jyk7ZnVuY3Rpb24gbShuLG8scCxxKXt0aGlzLmVsZW1lbnQ9bjt0aGlzLmhhbmRs ZXI9bzt0aGlzLnN0cmljdD1wO3RoaXMuYnVmZmVyPXF8fDMwMDt0aGlzLnNjcm9s bEhhbmRsZXI9bnVsbDt0aGlzLnJlc2V0KCk7aS5vbkxlYXZlKHRoaXMucmVtb3Zl LmJpbmQodGhpcykpO31rKG0ucHJvdG90eXBlLHtyZXNldDpmdW5jdGlvbigpe2lm KHRoaXMuc2Nyb2xsTGlzdGVuZXIpcmV0dXJuO3RoaXMucmVtb3ZlZD1mYWxzZTt0 aGlzLnNjcm9sbEhhbmRsZXI9bChmdW5jdGlvbihuKXt2YXIgbz1qLmdldEVsZW1l bnRQb3NpdGlvbih0aGlzLmVsZW1lbnQpO2lmKCFvfHx0aGlzLnJlbW92ZWQpe3Ro aXMucmVtb3ZlKCk7cmV0dXJuO310aGlzLnRhcmdldFk9by55O3ZhciBwPWouZ2V0 U2Nyb2xsUG9zaXRpb24oKS55LHE9ai5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKS55 LHI9cCtxK3RoaXMuYnVmZmVyO2lmKHI+dGhpcy50YXJnZXRZKXt2YXIgcz0hdGhp cy5zdHJpY3R8fChwLXRoaXMuYnVmZmVyPCh0aGlzLnRhcmdldFkrai5nZXRFbGVt ZW50RGltZW5zaW9ucyh0aGlzLmVsZW1lbnQpLnkpKTtpZihzKXt0aGlzLnJlbW92 ZSgpO3RoaXMuaGFuZGxlcighbik7fX1yZXR1cm4gdHJ1ZTt9LDEwMCx0aGlzKTso ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbExpc3RlbmVyPUV2ZW50Lmxpc3Rlbih3aW5k b3csJ3Njcm9sbCcsdGhpcy5zY3JvbGxIYW5kbGVyKTt0aGlzLnJlc2l6ZUxpc3Rl bmVyPUV2ZW50Lmxpc3Rlbih3aW5kb3csJ3Jlc2l6ZScsdGhpcy5zY3JvbGxIYW5k bGVyKTt0aGlzLmRvbVNjcm9sbExpc3RlbmVyPWcuc3Vic2NyaWJlKCdkb20tc2Ny b2xsJyx0aGlzLnNjcm9sbEhhbmRsZXIpO3RoaXMuc2Nyb2xsSGFuZGxlci5kZWZl cigpO30pLmJpbmQodGhpcykuZGVmZXIoKTt9LHJlbW92ZTpmdW5jdGlvbigpe3Ro aXMucmVtb3ZlZD10cnVlO2lmKHRoaXMuc2Nyb2xsTGlzdGVuZXIpe3RoaXMuc2Ny b2xsTGlzdGVuZXIucmVtb3ZlKCk7dGhpcy5yZXNpemVMaXN0ZW5lci5yZW1vdmUo KTt0aGlzLmRvbVNjcm9sbExpc3RlbmVyLnVuc3Vic2NyaWJlKCk7dGhpcy5zY3Jv bGxMaXN0ZW5lcj10aGlzLnJlc2l6ZUxpc3RlbmVyPXRoaXMuZG9tU2Nyb2xsTGlz dGVuZXI9bnVsbDt9fSxzZXRCdWZmZXI6ZnVuY3Rpb24obil7dGhpcy5idWZmZXI9 bjt0aGlzLnNjcm9sbEhhbmRsZXImJnRoaXMuc2Nyb2xsSGFuZGxlci5kZWZlcigp O319KTtlLmV4cG9ydHM9bTt9KTsKX19kKCJQb2xsZXIiLFsiQXN5bmNSZXF1ZXN0 IiwiQ29va2llIiwiY29weVByb3BlcnRpZXMiLCJFbnYiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignQXN5bmNSZXF1ZXN0JyksaD1iKCdDb29raWUnKSxp PWIoJ2NvcHlQcm9wZXJ0aWVzJyksaj1iKCdFbnYnKTtmdW5jdGlvbiBrKGwsbSxu KXt0aGlzLl9jbGVhck9uUXVpY2tsaW5nRXZlbnQ9IW47dGhpcy5fcmVxdWVzdENh bGxiYWNrPW07dGhpcy5zZXRUaW1lUGVyaW9kKGwpO31rLk1JTl9USU1FX1BFUklP RD0yMDAwO2koay5wcm90b3R5cGUse3N0b3A6ZnVuY3Rpb24oKXtjbGVhclRpbWVv dXQodGhpcy5fdG9rZW4pO3RoaXMuX3Rva2VuPW51bGw7dGhpcy5fY2FuY2VsUmVx dWVzdCgpO30sc2NoZWR1bGVSZXF1ZXN0OmZ1bmN0aW9uKCl7dGhpcy5zdG9wKCk7 aWYodGhpcy5fdGltZVBlcmlvZCl0aGlzLl90b2tlbj10aGlzLl9tYWtlUmVxdWVz dC5iaW5kKHRoaXMpLmRlZmVyKHRoaXMuX3RpbWVQZXJpb2QsdGhpcy5fY2xlYXJP blF1aWNrbGluZ0V2ZW50KTt9LHJlcXVlc3ROb3c6ZnVuY3Rpb24oKXt0aGlzLnN0 b3AoKTt0aGlzLl9tYWtlUmVxdWVzdCgpO30sX3RpbWVQZXJpb2Q6bnVsbCxzZXRU aW1lUGVyaW9kOmZ1bmN0aW9uKGwpe2w9bHx8bnVsbDtpZihsJiYoaXNOYU4obCl8 fGw8ay5NSU5fVElNRV9QRVJJT0QpKXJldHVybjtpZihsJiZ0aGlzLl90aW1lUGVy aW9kPT1udWxsKXRoaXMuX3Rva2VuPXRoaXMuX21ha2VSZXF1ZXN0LmJpbmQodGhp cykuZGVmZXIobCx0aGlzLl9jbGVhck9uUXVpY2tsaW5nRXZlbnQpO3RoaXMuX3Rp bWVQZXJpb2Q9bDt9LF9tYWtlUmVxdWVzdDpmdW5jdGlvbigpe3RoaXMuX2NhbmNl bFJlcXVlc3QoKTtpZighdGhpcy5faXNMb2FkVXNlcigpKXJldHVybjt2YXIgbD1u ZXcgZygpLG09dHJ1ZTtsLnNldEluaXRpYWxIYW5kbGVyKGZ1bmN0aW9uKCl7cmV0 dXJuIG07fSk7dGhpcy5fY2FuY2VsUmVxdWVzdD1mdW5jdGlvbigpe209ZmFsc2U7 fTtsLnNldEZpbmFsbHlIYW5kbGVyKHRoaXMuc2NoZWR1bGVSZXF1ZXN0LmJpbmQo dGhpcykpO2wuc2V0SW5pdGlhbEhhbmRsZXI9YmFnb2Zob2xkaW5nO2wuc2V0Rmlu YWxseUhhbmRsZXI9YmFnb2Zob2xkaW5nO3RoaXMuX3JlcXVlc3RDYWxsYmFjayhs KTtpZihtKWwuc2VuZCgpO30sX2lzTG9hZFVzZXI6ZnVuY3Rpb24oKXtyZXR1cm4g ai51c2VyPT1oLmdldCgnY191c2VyJyk7fSxfY2FuY2VsUmVxdWVzdDpiYWdvZmhv bGRpbmcsZ2V0VGltZVBlcmlvZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90aW1l UGVyaW9kO319KTtlLmV4cG9ydHM9azt9KTsKX19kKCJQb3BvdmVyIixbImV2ZW50 LWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwiQXJiaXRlck1peGluIiwiQ2xhc3MiLCJD b250ZXh0dWFsTGF5ZXIiLCJDb250ZXh0dWFsTGF5ZXJIaWRlT25TY3JvbGwiLCJD U1MiLCJEYXRhU3RvcmUiLCJET00iLCJJbnB1dCIsIktleVN0YXR1cyIsIkxheWVy SGlkZU9uRXNjYXBlIiwiVG9nZ2xlciIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rp

b24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdB cmJpdGVyJyksaD1iKCdBcmJpdGVyTWl4aW4nKSxpPWIoJ0NsYXNzJyksaj1iKCdD b250ZXh0dWFsTGF5ZXInKSxrPWIoJ0NvbnRleHR1YWxMYXllckhpZGVPblNjcm9s bCcpLGw9YignQ1NTJyksbT1iKCdEYXRhU3RvcmUnKSxuPWIoJ0RPTScpLG89Yign SW5wdXQnKSxwPWIoJ0tleVN0YXR1cycpLHE9YignTGF5ZXJIaWRlT25Fc2NhcGUn KSxyPWIoJ1RvZ2dsZXInKSxzPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ci5zdWJzY3Jp YmUoWydzaG93JywnaGlkZSddLGZ1bmN0aW9uKHUsdil7dmFyIHc9bS5nZXQodi5n ZXRBY3RpdmUoKSwnUG9wb3ZlcicpO2lmKHcpaWYodT09PSdzaG93Jyl7dy5zaG93 TGF5ZXIoKTt9ZWxzZSB3LmhpZGVMYXllcigpO30pO2Z1bmN0aW9uIHQodSx2LHcs eCl7dGhpcy5fcm9vdD11O3RoaXMuX3RyaWdnZXJFbGVtPXY7dGhpcy5fYmVoYXZp b3JzPXc7dGhpcy5fY29uZmlnPXg7aWYoISh2Lm5vZGVOYW1lPT09J0EnJiZ2LnJl bD09PSd0b2dnbGUnKSlFdmVudC5saXN0ZW4odiwnY2xpY2snLGZ1bmN0aW9uKCl7 ci5ib290c3RyYXAodik7fSk7bS5zZXQodSwnUG9wb3ZlcicsdGhpcyk7fXModC5w cm90b3R5cGUsaCx7X2xheWVyOm51bGwsX2Nsb3NlTGlzdGVuZXI6bnVsbCxlbnN1 cmVJbml0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xheWVyKXRoaXMuX2luaXQoKTt9 LHNob3dMYXllcjpmdW5jdGlvbigpe3RoaXMuZW5zdXJlSW5pdCgpO3RoaXMuX2xh eWVyLnNob3coKTtyLnNob3codGhpcy5fcm9vdCk7bC5hZGRDbGFzcyh0aGlzLl9y b290LCdzZWxlY3RlZCcpO3RoaXMuaW5mb3JtKCdzaG93Jyk7dGhpcy5fdHJpZ2dl ckVsZW0uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywndHJ1ZScpO30saGlk ZUxheWVyOmZ1bmN0aW9uKCl7dGhpcy5fbGF5ZXIuaGlkZSgpO3RoaXMuX3RyaWdn ZXJFbGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ2ZhbHNlJyk7fSxp c1Nob3duOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xheWVyLmlzU2hvd24oKTt9 LHNldExheWVyQ29udGVudDpmdW5jdGlvbih1KXt0aGlzLmVuc3VyZUluaXQoKTt0 aGlzLl9sYXllci5zZXRDb250ZW50KHUpO30sX2luaXQ6ZnVuY3Rpb24oKXt2YXIg dT1uZXcgaih7Y29udGV4dDp0aGlzLl90cmlnZ2VyRWxlbSxwb3NpdGlvbjonYmVs b3cnfSxuLmNyZWF0ZSgnZGl2JykpO3UuZW5hYmxlQmVoYXZpb3JzKFtrLHFdKTty LmNyZWF0ZUluc3RhbmNlKHUuZ2V0Um9vdCgpKS5zZXRTdGlja3koZmFsc2UpO3Uu c3Vic2NyaWJlKCdoaWRlJyx0aGlzLl9vbkxheWVySGlkZS5iaW5kKHRoaXMpKTt0 aGlzLl9iZWhhdmlvcnMmJnUuZW5hYmxlQmVoYXZpb3JzKHRoaXMuX2JlaGF2aW9y cyk7dGhpcy5fbGF5ZXI9dTtpZih0aGlzLl9jb25maWcuYWxpZ25oKXRoaXMuX2xh eWVyLnNldEFsaWdubWVudCh0aGlzLl9jb25maWcuYWxpZ25oKTtpZih0aGlzLl9j b25maWcubGF5ZXJfY29udGVudCl0aGlzLl9sYXllci5zZXRDb250ZW50KHRoaXMu X2NvbmZpZy5sYXllcl9jb250ZW50KTt0aGlzLmluZm9ybSgnaW5pdCcsbnVsbCxn LkJFSEFWSU9SX1BFUlNJU1RFTlQpO30sX29uTGF5ZXJIaWRlOmZ1bmN0aW9uKCl7 ci5oaWRlKHRoaXMuX3Jvb3QpO2wucmVtb3ZlQ2xhc3ModGhpcy5fcm9vdCwnc2Vs ZWN0ZWQnKTt0aGlzLmluZm9ybSgnaGlkZScpO2lmKHAuaXNLZXlEb3duKCkpby5m b2N1cyh0aGlzLl90cmlnZ2VyRWxlbSk7fX0pO2UuZXhwb3J0cz10O30pOwpfX2Qo IlBvcG92ZXJNZW51SW50ZXJmYWNlIixbIkFyYml0ZXIiLCJBcmJpdGVyTWl4aW4i LCJDbGFzcyIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0FyYml0ZXJNaXhpbicpLGk9YignQ2xh c3MnKSxqPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gaygpe31qKGsucHJv dG90eXBlLGgse2dldFJvb3Q6YmFnb2Zob2xkaW5nLG9uU2hvdzpiYWdvZmhvbGRp bmcsb25IaWRlOmJhZ29maG9sZGluZyxmb2N1c0FuSXRlbTpiYWdvZihmYWxzZSks Ymx1cjpiYWdvZmhvbGRpbmcsaGFuZGxlS2V5ZG93bjpiYWdvZihmYWxzZSksZG9u ZTpmdW5jdGlvbigpe3RoaXMuaW5mb3JtKCdkb25lJyk7fX0pO2UuZXhwb3J0cz1r O30pOwpfX2QoIlBvcG92ZXJBc3luY01lbnVMb2FkaW5nIixbIkNsYXNzIiwiY29w eVByb3BlcnRpZXMiLCJET00iLCJQb3BvdmVyTWVudUludGVyZmFjZSJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDbGFzcycpLGg9YignY29weVByb3Bl cnRpZXMnKSxpPWIoJ0RPTScpLGo9YignUG9wb3Zlck1lbnVJbnRlcmZhY2UnKTtm dW5jdGlvbiBrKGwpe3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlzKTt0aGlzLl9j bGFzc05hbWU9bHx8Jyc7fWcuZXh0ZW5kKGssaik7aChrLnByb3RvdHlwZSx7X3Jv b3Q6bnVsbCxnZXRSb290OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3Jvb3QpdGhpcy5f cm9vdD1pLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOnRoaXMuX2NsYXNzTmFtZX0s aS5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTondWlNZW51WEJvcmRlcid9LGkuY3Jl YXRlKCdkaXYnLHtjbGFzc05hbWU6J3VpTWVudVggdWlNZW51WExvYWRpbmcnfSxp LmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTonc3Bpbm5lcid9KSkpKTtyZXR1cm4g dGhpcy5fcm9vdDt9fSk7ZS5leHBvcnRzPWs7fSk7Cl9fZCgiUG9wb3Zlck1lbnUi LFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJBcmJpdGVyTWl4aW4iLCJB UklBIiwiQmVoYXZpb3JzTWl4aW4iLCJDbGFzcyIsIklucHV0IiwiS2V5cyIsIktl eVN0YXR1cyIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp

e2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdB cmJpdGVyTWl4aW4nKSxpPWIoJ0FSSUEnKSxqPWIoJ0JlaGF2aW9yc01peGluJyks az1iKCdDbGFzcycpLGw9YignSW5wdXQnKSxtPWIoJ0tleXMnKSxuPWIoJ0tleVN0 YXR1cycpLG89YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBwKHEscixzLHQp e3RoaXMuX3BvcG92ZXI9cTt0aGlzLl90cmlnZ2VyRWxlbT1yO3RoaXMuX2luaXRp YWxNZW51PXM7cS5zdWJzY3JpYmUoJ2luaXQnLHRoaXMuX29uTGF5ZXJJbml0LmJp bmQodGhpcykpO3Euc3Vic2NyaWJlKCdzaG93Jyx0aGlzLl9vblBvcG92ZXJTaG93 LmJpbmQodGhpcykpO3Euc3Vic2NyaWJlKCdoaWRlJyx0aGlzLl9vblBvcG92ZXJI aWRlLmJpbmQodGhpcykpO3QmJnRoaXMuZW5hYmxlQmVoYXZpb3JzKHQpO31vKHAu cHJvdG90eXBlLGgsaik7byhwLnByb3RvdHlwZSx7X2tleWRvd25MaXN0ZW5lcjpu dWxsLF9wb3BvdmVyU2hvd246ZmFsc2Usc2V0TWVudTpmdW5jdGlvbihxKXt0aGlz Ll9tZW51PXE7dmFyIHI9cS5nZXRSb290KCk7dGhpcy5fcG9wb3Zlci5zZXRMYXll ckNvbnRlbnQocik7cS5zdWJzY3JpYmUoJ2RvbmUnLHRoaXMuX29uTWVudURvbmUu YmluZCh0aGlzKSk7aWYodGhpcy5fcG9wb3ZlclNob3duKXRoaXMuX21lbnUub25T aG93KCk7aS5vd25zKHRoaXMuX3RyaWdnZXJFbGVtLHIpO3RoaXMuaW5mb3JtKCdz ZXRNZW51JyxudWxsLGcuQkVIQVZJT1JfUEVSU0lTVEVOVCk7fSxnZXRQb3BvdmVy OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BvcG92ZXI7fSxnZXRUcmlnZ2VyRWxl bTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmlnZ2VyRWxlbTt9LGdldE1lbnU6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVudTt9LF9vbkxheWVySW5pdDpmdW5j dGlvbigpe3RoaXMuc2V0TWVudSh0aGlzLl9pbml0aWFsTWVudSk7fSxfb25Qb3Bv dmVyU2hvdzpmdW5jdGlvbigpe2lmKHRoaXMuX21lbnUpe3RoaXMuX21lbnUub25T aG93KCk7aWYobi5pc0tleURvd24oKSl0aGlzLl9tZW51LmZvY3VzQW5JdGVtKCk7 dGhpcy5fa2V5ZG93bkxpc3RlbmVyPUV2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQsJ2tleWRvd24nLHRoaXMuX2hhbmRsZUtleWRvd24uYmluZCh0 aGlzKSk7fXRoaXMuX3BvcG92ZXJTaG93bj10cnVlO30sX29uUG9wb3ZlckhpZGU6 ZnVuY3Rpb24oKXtpZih0aGlzLl9tZW51KXRoaXMuX21lbnUub25IaWRlKCk7aWYo dGhpcy5fa2V5ZG93bkxpc3RlbmVyKXt0aGlzLl9rZXlkb3duTGlzdGVuZXIucmVt b3ZlKCk7dGhpcy5fa2V5ZG93bkxpc3RlbmVyPW51bGw7fXRoaXMuX3BvcG92ZXJT aG93bj1mYWxzZTt9LF9oYW5kbGVLZXlkb3duOmZ1bmN0aW9uKHEpe2lmKHEuZ2V0 TW9kaWZpZXJzKCkuYW55KXJldHVybjt2YXIgcj1FdmVudC5nZXRLZXlDb2RlKHEp O3N3aXRjaChyKXtjYXNlIG0uUkVUVVJOOnJldHVybjtjYXNlIG0uVVA6Y2FzZSBt LkRPV046dGhpcy5fbWVudS5oYW5kbGVLZXlkb3duKHIpO2JyZWFrO2RlZmF1bHQ6 aWYodGhpcy5fbWVudS5oYW5kbGVLZXlkb3duKHIpPT09ZmFsc2Upe3RoaXMuX21l bnUuYmx1cigpO3RoaXMuX21lbnUuaGFuZGxlS2V5ZG93bihyKTt9YnJlYWs7fXEu cHJldmVudCgpO30sX29uTWVudURvbmU6ZnVuY3Rpb24ocSl7dGhpcy5fcG9wb3Zl ci5oaWRlTGF5ZXIuYmluZCh0aGlzLl9wb3BvdmVyKS5kZWZlcigpO2lmKG4uaXNL ZXlEb3duKCkpbC5mb2N1cyh0aGlzLl90cmlnZ2VyRWxlbSk7fX0pO2UuZXhwb3J0 cz1wO30pOwpfX2QoIlBvcG92ZXJBc3luY01lbnUiLFsiZXZlbnQtZXh0ZW5zaW9u cyIsIkFzeW5jUmVxdWVzdCIsIkNsYXNzIiwiQ1NTIiwiRE9NIiwiUG9wb3ZlckFz eW5jTWVudUxvYWRpbmciLCJQb3BvdmVyTWVudSIsImNvcHlQcm9wZXJ0aWVzIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIg Zz1iKCdBc3luY1JlcXVlc3QnKSxoPWIoJ0NsYXNzJyksaT1iKCdDU1MnKSxqPWIo J0RPTScpLGs9YignUG9wb3ZlckFzeW5jTWVudUxvYWRpbmcnKSxsPWIoJ1BvcG92 ZXJNZW51JyksbT1iKCdjb3B5UHJvcGVydGllcycpLG49e30sbz0wO2Z1bmN0aW9u IHAocSxyLHMsdCx1KXt0aGlzLl9lbmRwb2ludD10O3RoaXMuX2xvYWRpbmdNZW51 PXM7dGhpcy5faW5zdGFuY2VJZD1vKys7blt0aGlzLl9pbnN0YW5jZUlkXT10aGlz O3RoaXMuX21vdXNlb3Zlckxpc3RlbmVyPUV2ZW50Lmxpc3RlbihyLCdtb3VzZW92 ZXInLHRoaXMuX2ZldGNoTWVudS5iaW5kKHRoaXMpKTt0aGlzLnBhcmVudC5jb25z dHJ1Y3QodGhpcyxxLHIsbnVsbCx1KTt9cC5zZXRNZW51PWZ1bmN0aW9uKHEscil7 bltxXS5zZXRNZW51KHIpO307aC5leHRlbmQocCxsKTttKHAucHJvdG90eXBlLHtf ZmV0Y2hlZDpmYWxzZSxfbW91c2VvdmVyTGlzdGVuZXI6bnVsbCxfb25MYXllcklu aXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbWVudSl0aGlzLnNldE1lbnUodGhpcy5f bG9hZGluZ01lbnUpO3RoaXMuX2ZldGNoTWVudSgpO30sX2ZldGNoTWVudTpmdW5j dGlvbigpe2lmKHRoaXMuX2ZldGNoZWQpcmV0dXJuO25ldyBnKCkuc2V0VVJJKHRo aXMuX2VuZHBvaW50KS5zZXREYXRhKHtwbWlkOnRoaXMuX2luc3RhbmNlSWR9KS5z ZW5kKCk7dGhpcy5fZmV0Y2hlZD10cnVlO2lmKHRoaXMuX21vdXNlb3Zlckxpc3Rl bmVyKXt0aGlzLl9tb3VzZW92ZXJMaXN0ZW5lci5yZW1vdmUoKTt0aGlzLl9tb3Vz ZW92ZXJMaXN0ZW5lcj1udWxsO319fSk7ZS5leHBvcnRzPXA7fSk7Cl9fZCgiUG9w b3Zlck1lbnVPdmVybGFwcGluZ0JvcmRlciIsWyJmdW5jdGlvbi1leHRlbnNpb25z IiwiQ1NTIiwiRE9NIiwiU3R5bGUiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9u

KGEsYixjLGQsZSxmKXtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9Yign Q1NTJyksaD1iKCdET00nKSxpPWIoJ1N0eWxlJyksaj1iKCdjb3B5UHJvcGVydGll cycpO2Z1bmN0aW9uIGsobCl7dGhpcy5fcG9wb3Zlck1lbnU9bDt0aGlzLl9wb3Bv dmVyPWwuZ2V0UG9wb3ZlcigpO3RoaXMuX3RyaWdnZXJFbGVtPWwuZ2V0VHJpZ2dl ckVsZW0oKTt9aihrLnByb3RvdHlwZSx7X3Nob3J0Qm9yZGVyOm51bGwsX3NldE1l bnVTdWJzY3JpcHRpb246bnVsbCxfc2hvd1N1YnNjcmlwdGlvbjpudWxsLF9tZW51 U3Vic2NyaXB0aW9uOm51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0TWVu dVN1YnNjcmlwdGlvbj10aGlzLl9wb3BvdmVyTWVudS5zdWJzY3JpYmUoJ3NldE1l bnUnLHRoaXMuX29uU2V0TWVudS5iaW5kKHRoaXMpKTt9LGRpc2FibGU6ZnVuY3Rp b24oKXt0aGlzLl9wb3BvdmVyTWVudS51bnN1YnNjcmliZSh0aGlzLl9zZXRNZW51 U3Vic2NyaXB0aW9uKTt0aGlzLl9zZXRNZW51U3Vic2NyaXB0aW9uPW51bGw7dGhp cy5fcmVtb3ZlQm9yZGVyU3Vic2NyaXB0aW9ucygpO3RoaXMuX3JlbW92ZVNob3J0 Qm9yZGVyKCk7fSxfb25TZXRNZW51OmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlQm9y ZGVyU3Vic2NyaXB0aW9ucygpO3RoaXMuX21lbnU9dGhpcy5fcG9wb3Zlck1lbnUu Z2V0TWVudSgpO3RoaXMuX3JlbmRlclNob3J0Qm9yZGVyKHRoaXMuX21lbnUuZ2V0 Um9vdCgpKTt0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXRoaXMuX3BvcG92ZXIuc3Vi c2NyaWJlKCdzaG93Jyx0aGlzLl91cGRhdGVCb3JkZXIuYmluZCh0aGlzKSk7dGhp cy5fbWVudVN1YnNjcmlwdGlvbj10aGlzLl9tZW51LnN1YnNjcmliZShbJ2NoYW5n ZScsJ3Jlc2l6ZSddLEZ1bmN0aW9uLnByb3RvdHlwZS5kZWZlci5zaGllbGQodGhp cy5fdXBkYXRlQm9yZGVyLmJpbmQodGhpcykpKTt0aGlzLl91cGRhdGVCb3JkZXIo KTt9LF91cGRhdGVCb3JkZXI6ZnVuY3Rpb24oKXt2YXIgbD10aGlzLl9tZW51Lmdl dFJvb3QoKSxtPXRoaXMuX3RyaWdnZXJFbGVtLm9mZnNldFdpZHRoO2kuc2V0KGws J21pbi13aWR0aCcsbSsncHgnKTt2YXIgbj1NYXRoLm1heChsLm9mZnNldFdpZHRo LW0sMCk7aS5zZXQodGhpcy5fc2hvcnRCb3JkZXIsJ3dpZHRoJyxuKydweCcpO30s X3JlbmRlclNob3J0Qm9yZGVyOmZ1bmN0aW9uKGwpe3RoaXMuX3Nob3J0Qm9yZGVy PWguY3JlYXRlKCdkaXYnLHtjbGFzc05hbWU6J3VpTWVudVhTaG9ydEJvcmRlcid9 KTtoLmFwcGVuZENvbnRlbnQobCx0aGlzLl9zaG9ydEJvcmRlcik7Zy5hZGRDbGFz cyhsLCd1aU1lbnVYV2l0aFNob3J0Qm9yZGVyJyk7fSxfcmVtb3ZlU2hvcnRCb3Jk ZXI6ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG9ydEJvcmRlcil7aC5yZW1vdmUodGhp cy5fc2hvcnRCb3JkZXIpO3RoaXMuX3Nob3J0Qm9yZGVyPW51bGw7Zy5yZW1vdmVD bGFzcyh0aGlzLl9wb3BvdmVyTWVudS5nZXRNZW51KCkuZ2V0Um9vdCgpLCd1aU1l bnVYU2hvcnRCb3JkZXInKTt9fSxfcmVtb3ZlQm9yZGVyU3Vic2NyaXB0aW9uczpm dW5jdGlvbigpe2lmKHRoaXMuX3Nob3dTdWJzY3JpcHRpb24pe3RoaXMuX3BvcG92 ZXIudW5zdWJzY3JpYmUodGhpcy5fc2hvd1N1YnNjcmlwdGlvbik7dGhpcy5fc2hv d1N1YnNjcmlwdGlvbj1udWxsO31pZih0aGlzLl9tZW51U3Vic2NyaXB0aW9uKXt0 aGlzLl9tZW51LnVuc3Vic2NyaWJlKHRoaXMuX21lbnVTdWJzY3JpcHRpb24pO3Ro aXMuX21lbnVTdWJzY3JpcHRpb249bnVsbDt9fX0pO2UuZXhwb3J0cz1rO30pOwpf X2QoIlByaXZhY3lNb2RlbCIsWyJQcml2YWN5Q29uc3QiLCJjb3B5UHJvcGVydGll cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdQcml2YWN5Q29uc3Qn KSxoPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gaSgpe3RoaXMudmFsdWU9 Zy5CYXNlVmFsdWUuQUxMX0ZSSUVORFM7dGhpcy5mcmllbmRzPWcuRnJpZW5kc1Zh bHVlLk5PX0ZSSUVORFM7dGhpcy5uZXR3b3Jrcz1bXTt0aGlzLm9iamVjdHM9W107 dGhpcy5saXN0cz1bXTt0aGlzLmxpc3RzX3g9W107dGhpcy5saXN0X2Fub249MDt0 aGlzLmlkc19hbm9uPVtdO3RoaXMubGlzdF94X2Fub249MDt0aGlzLmlkc194X2Fu b249W107dGhpcy50ZGF0YT17fTtyZXR1cm4gdGhpczt9aChpLnByb3RvdHlwZSx7 aW5pdDpmdW5jdGlvbihqLGssbCxtLG4sbyxwLHEscixzLHQpe3RoaXMudmFsdWU9 ajt0aGlzLmZyaWVuZHM9azt0aGlzLm5ldHdvcmtzPWwuc2xpY2UoKTt0aGlzLm9i amVjdHM9bS5zbGljZSgpO3RoaXMubGlzdHM9bi5zbGljZSgpO3RoaXMubGlzdHNf eD1vLnNsaWNlKCk7dGhpcy5saXN0X2Fub249cDt0aGlzLmlkc19hbm9uPXEuc2xp Y2UoKTt0aGlzLmxpc3RfeF9hbm9uPXI7dGhpcy5pZHNfeF9hbm9uPXMuc2xpY2Uo KTt0PXR8fHt9O2godGhpcy50ZGF0YSx0KTt9LGNsb25lOmZ1bmN0aW9uKCl7dmFy IGo9bmV3IGkoKTtqLmluaXQodGhpcy52YWx1ZSx0aGlzLmZyaWVuZHMsdGhpcy5u ZXR3b3Jrcyx0aGlzLm9iamVjdHMsdGhpcy5saXN0cyx0aGlzLmxpc3RzX3gsdGhp cy5saXN0X2Fub24sdGhpcy5pZHNfYW5vbix0aGlzLmxpc3RfeF9hbm9uLHRoaXMu aWRzX3hfYW5vbix0aGlzLnRkYXRhKTtyZXR1cm4gajt9LGdldERhdGE6ZnVuY3Rp b24oKXt2YXIgaj1bJ3ZhbHVlJywnZnJpZW5kcycsJ25ldHdvcmtzJywnb2JqZWN0 cycsJ2xpc3RzJywnbGlzdHNfeCcsJ2xpc3RfYW5vbicsJ2lkc19hbm9uJywnbGlz dF94X2Fub24nLCdpZHNfeF9hbm9uJ10saz17fTtmb3IodmFyIGw9MDtsPGoubGVu Z3RoOysrbCl7dmFyIG09altsXTtrW21dPXRoaXNbbV07fXJldHVybiBrO319KTtl LmV4cG9ydHM9aTt9KTsKX19kKCJoaWdobGlnaHQiLFsiQW5pbWF0aW9uIiwiU3R5

bGUiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQW5pbWF0aW9uJyks aD1iKCdTdHlsZScpO2Z1bmN0aW9uIGkoaixrLGwpe25ldyBnKGopLmZyb20oJ2Jh Y2tncm91bmQnLCcjZmZmOWQ3JykudG8oJ2JhY2tncm91bmQnLGx8fCcjZmZmJyku ZWFzZShnLmVhc2UuYm90aCkuZHVyYXRpb24oMjAwMCkub25kb25lKGZ1bmN0aW9u KCl7aC5zZXQoaiwnYmFja2dyb3VuZCcsJycpO2smJmsoKTt9KS5nbygpO31lLmV4 cG9ydHM9aTt9KTsKX19kKCJTY3JvbGxIaWdobGlnaHQiLFsiRE9NU2Nyb2xsIiwi aGlnaGxpZ2h0Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTVNj cm9sbCcpLGg9YignaGlnaGxpZ2h0JyksaT17YWN0T246ZnVuY3Rpb24oaixrKXtn LnNjcm9sbFRvKGopO2goaixudWxsLGspO319O2UuZXhwb3J0cz1pO30pOwpfX2Qo IklucHV0U2VsZWN0aW9uIixbIkRPTSIsIklucHV0Il0sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe3ZhciBnPWIoJ0RPTScpLGg9YignSW5wdXQnKSxpPXtnZXQ6ZnVuY3Rp b24oail7aWYoIWRvY3VtZW50LnNlbGVjdGlvbilyZXR1cm4ge3N0YXJ0Omouc2Vs ZWN0aW9uU3RhcnQsZW5kOmouc2VsZWN0aW9uRW5kfTt2YXIgaz1kb2N1bWVudC5z ZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtpZihrLnBhcmVudEVsZW1lbnQoKSE9PWop cmV0dXJuIHtzdGFydDowLGVuZDowfTt2YXIgbD1qLnZhbHVlLmxlbmd0aDtpZihn LmlzTm9kZU9mVHlwZShqLCdpbnB1dCcpKXtyZXR1cm4ge3N0YXJ0Oi1rLm1vdmVT dGFydCgnY2hhcmFjdGVyJywtbCksZW5kOi1rLm1vdmVFbmQoJ2NoYXJhY3Rlcics LWwpfTt9ZWxzZXt2YXIgbT1rLmR1cGxpY2F0ZSgpO20ubW92ZVRvRWxlbWVudFRl eHQoaik7bS5zZXRFbmRQb2ludCgnU3RhcnRUb0VuZCcsayk7dmFyIG49bC1tLnRl eHQubGVuZ3RoO20uc2V0RW5kUG9pbnQoJ1N0YXJ0VG9TdGFydCcsayk7cmV0dXJu IHtzdGFydDpsLW0udGV4dC5sZW5ndGgsZW5kOm59O319LHNldDpmdW5jdGlvbihq LGssbCl7aWYodHlwZW9mIGw9PSd1bmRlZmluZWQnKWw9aztpZihkb2N1bWVudC5z ZWxlY3Rpb24pe2lmKGoudGFnTmFtZT09J1RFWFRBUkVBJyl7dmFyIG09KGoudmFs dWUuc2xpY2UoMCxrKS5tYXRjaCgvXHIvZyl8fFtdKS5sZW5ndGgsbj0oai52YWx1 ZS5zbGljZShrLGwpLm1hdGNoKC9cci9nKXx8W10pLmxlbmd0aDtrLT1tO2wtPW0r bjt9dmFyIG89ai5jcmVhdGVUZXh0UmFuZ2UoKTtvLmNvbGxhcHNlKHRydWUpO28u bW92ZVN0YXJ0KCdjaGFyYWN0ZXInLGspO28ubW92ZUVuZCgnY2hhcmFjdGVyJyxs LWspO28uc2VsZWN0KCk7fWVsc2V7ai5zZWxlY3Rpb25TdGFydD1rO2ouc2VsZWN0 aW9uRW5kPU1hdGgubWluKGwsai52YWx1ZS5sZW5ndGgpO2guZm9jdXMoaik7fX19 O2UuZXhwb3J0cz1pO30pOwpfX2QoIkNvbnRyb2xsZWRSZWZlcmVyIixbImV2ZW50 LWV4dGVuc2lvbnMiLCJVUkkiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZl bnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ1VSSScpLGg9e3VzZUZhY2Vib29rUmVm ZXJlcjpmdW5jdGlvbihpLGosayl7dmFyIGw9ZmFsc2U7ZnVuY3Rpb24gbSgpe2lm KGwpcmV0dXJuO2w9dHJ1ZTtpLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuYm9keS5z dHlsZS5tYXJnaW49MDtqKCk7fXZhciBuO2lmKGRvY3VtZW50LmRvbWFpbiE9PSdm YWNlYm9vay5jb20nKXtuPScvaW50ZXJuL2NvbW1vbi9yZWZlcmVyX2ZyYW1lLnBo cCc7fWVsc2UgaWYoZygpLmlzU2VjdXJlKCkpe249J2h0dHBzOi8vcy1zdGF0aWMu YWsuZmFjZWJvb2suY29tL2NvbW1vbi9yZWZlcmVyX2ZyYW1lLnBocCc7fWVsc2Ug bj0naHR0cDovL3N0YXRpYy5hay5mYWNlYm9vay5jb20vY29tbW9uL3JlZmVyZXJf ZnJhbWUucGhwJztpZihrKW4rPSc/ZmJfc291cmNlPScraztFdmVudC5saXN0ZW4o aSwnbG9hZCcsbSk7aS5zcmM9bjt9LHVzZUZhY2Vib29rUmVmZXJlckh0bWw6ZnVu Y3Rpb24oaSxqLGspe2gudXNlRmFjZWJvb2tSZWZlcmVyKGksZnVuY3Rpb24oKXtp LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuYm9keS5pbm5lckhUTUw9ajt9LGspO319 O2UuZXhwb3J0cz1oO30pOwpfX2QoInN3Zm9iamVjdCIsWyJBc3luY1JlcXVlc3Qi LCJCb290bG9hZGVyIiwiQ29udHJvbGxlZFJlZmVyZXIiLCJjb3B5UHJvcGVydGll cyIsIkNTUyIsIkRPTSIsImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJnZSIsImh0bWxT cGVjaWFsQ2hhcnMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXN5 bmNSZXF1ZXN0JyksaD1iKCdCb290bG9hZGVyJyksaT1iKCdDb250cm9sbGVkUmVm ZXJlcicpLGo9YignY29weVByb3BlcnRpZXMnKSxrPWIoJ0NTUycpLGw9YignRE9N Jyk7YignZnVuY3Rpb24tZXh0ZW5zaW9ucycpO3ZhciBtPWIoJ2dlJyksbj1iKCdo dG1sU3BlY2lhbENoYXJzJyk7aWYodHlwZW9mIG89PSJ1bmRlZmluZWQiKXZhciBv PXt9O2lmKHR5cGVvZiBvLnV0aWw9PSJ1bmRlZmluZWQiKW8udXRpbD17fTtpZih0 eXBlb2Ygby5TV0ZPYmplY3RVdGlsPT0idW5kZWZpbmVkIilvLlNXRk9iamVjdFV0 aWw9e307by5TV0ZPYmplY3Q9ZnVuY3Rpb24odSx2LHcseCx5LHosYWEsYmEsY2Es ZGEpe2lmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZClyZXR1cm47dGhpcy5ERVRF Q1RfS0VZPWRhP2RhOidkZXRlY3RmbGFzaCc7dGhpcy5za2lwRGV0ZWN0PW8udXRp bC5nZXRSZXF1ZXN0UGFyYW1ldGVyKHRoaXMuREVURUNUX0tFWSk7dGhpcy5wYXJh bXM9e307dGhpcy52YXJpYWJsZXM9e307dGhpcy5hdHRyaWJ1dGVzPVtdO3RoaXMu ZmFsbGJhY2tfaHRtbD0nJzt0aGlzLmZhbGxiYWNrX2pzX2Zjbj1mdW5jdGlvbigp e307aWYodSl0aGlzLnNldEF0dHJpYnV0ZSgnc3dmJyx1KTtpZih2KXRoaXMuc2V0

QXR0cmlidXRlKCdpZCcsdik7aWYodyl0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgn LHcpO2lmKHgpdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcseCk7dGhpcy5pbnN0 YWxsZWRWZXI9by5TV0ZPYmplY3RVdGlsLmdldFBsYXllclZlcnNpb24oKTtpZih5 KXtpZighKHkgaW5zdGFuY2VvZiBBcnJheSkpeT1beV07dmFyIGVhO3kuZm9yRWFj aChmdW5jdGlvbihoYSl7ZWE9bmV3IG8uUGxheWVyVmVyc2lvbihoYS50b1N0cmlu ZygpLnNwbGl0KCcuJykpO2lmKGVhLm1ham9yPT10aGlzLmluc3RhbGxlZFZlci5t YWpvcil7dGhpcy5zZXRBdHRyaWJ1dGUoJ3ZlcnNpb24nLGVhKTtyZXR1cm47fWVs c2UgaWYoIXRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJyl8fGVhLm1ham9yPHRo aXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykubWFqb3IpdGhpcy5zZXRBdHRyaWJ1 dGUoJ3ZlcnNpb24nLGVhKTt9LmJpbmQodGhpcykpO31pZighd2luZG93Lm9wZXJh JiZkb2N1bWVudC5hbGwmJnRoaXMuaW5zdGFsbGVkVmVyLm1ham9yPjcpaWYoIW8u dW5sb2FkU2V0KXtvLlNXRk9iamVjdFV0aWwucHJlcFVubG9hZD1mdW5jdGlvbigp e3ZhciBoYT1mdW5jdGlvbigpe30saWE9ZnVuY3Rpb24oKXt9O3dpbmRvdy5hdHRh Y2hFdmVudCgib251bmxvYWQiLG8uU1dGT2JqZWN0VXRpbC5jbGVhbnVwU1dGcyk7 fTt3aW5kb3cuYXR0YWNoRXZlbnQoIm9uYmVmb3JldW5sb2FkIixvLlNXRk9iamVj dFV0aWwucHJlcFVubG9hZCk7by51bmxvYWRTZXQ9dHJ1ZTt9aWYoeil0aGlzLmFk ZFBhcmFtKCdiZ2NvbG9yJyx6KTt2YXIgZmE9YWE/YWE6J2hpZ2gnO3RoaXMuYWRk UGFyYW0oJ3F1YWxpdHknLGZhKTt0aGlzLnNldEF0dHJpYnV0ZSgndXNlRXhwcmVz c0luc3RhbGwnLGZhbHNlKTt0aGlzLnNldEF0dHJpYnV0ZSgnZG9FeHByZXNzSW5z dGFsbCcsZmFsc2UpO3ZhciBnYT0oYmEpP2JhOndpbmRvdy5sb2NhdGlvbjt0aGlz LnNldEF0dHJpYnV0ZSgneGlSZWRpcmVjdFVybCcsZ2EpO3RoaXMuc2V0QXR0cmli dXRlKCdyZWRpcmVjdFVybCcsJycpO2lmKGNhKXRoaXMuc2V0QXR0cmlidXRlKCdy ZWRpcmVjdFVybCcsY2EpO3RoaXMuc2V0QXR0cmlidXRlKCd1c2VJZnJhbWUnLGZh bHNlKTt9O28uU1dGT2JqZWN0LmllV29ya2Fyb3VuZEFwcGxpZWQ9ZmFsc2U7by5T V0ZPYmplY3QuZW5zdXJlSUVXb3JrYXJvdW5kQXR0YWNoZWQ9ZnVuY3Rpb24oKXtp Zighby5TV0ZPYmplY3QuaWVXb3JrYXJvdW5kQXBwbGllZCYmZG9jdW1lbnQuYXR0 YWNoRXZlbnQpe28uU1dGT2JqZWN0LmllV29ya2Fyb3VuZEFwcGxpZWQ9dHJ1ZTtk b2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsby5TV0ZPYmpl Y3Qub25Eb2N1bWVudFByb3BlcnR5Q2hhbmdlKTt9fTtvLlNXRk9iamVjdC5vbkRv Y3VtZW50UHJvcGVydHlDaGFuZ2U9ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LnBy b3BlcnR5TmFtZT09InRpdGxlIil7dmFyIHU9ZG9jdW1lbnQudGl0bGU7aWYodSE9 bnVsbCYmdS5pbmRleE9mKCcjIScpIT0tMSl7dT11LnN1YnN0cmluZygwLHUuaW5k ZXhPZignIyEnKSk7ZG9jdW1lbnQudGl0bGU9dTt9fX07aihvLlNXRk9iamVjdC5w cm90b3R5cGUse3VzZUV4cHJlc3NJbnN0YWxsOmZ1bmN0aW9uKHUpe3RoaXMueGlT V0ZQYXRoPSF1PyIvc3dmL2V4cHJlc3NpbnN0YWxsLnN3ZiI6dTt0aGlzLnNldEF0 dHJpYnV0ZSgndXNlRXhwcmVzc0luc3RhbGwnLHRydWUpO30sc2V0QXR0cmlidXRl OmZ1bmN0aW9uKHUsdil7dGhpcy5hdHRyaWJ1dGVzW3VdPXY7fSxnZXRBdHRyaWJ1 dGU6ZnVuY3Rpb24odSl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t1XXx8IiI7fSxh ZGRQYXJhbTpmdW5jdGlvbih1LHYpe3RoaXMucGFyYW1zW3VdPXY7fSxnZXRQYXJh bXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJhbXM7fSxhZGRWYXJpYWJsZTpm dW5jdGlvbih1LHYpe3RoaXMudmFyaWFibGVzW3VdPXY7fSxnZXRWYXJpYWJsZTpm dW5jdGlvbih1KXtyZXR1cm4gdGhpcy52YXJpYWJsZXNbdV18fCIiO30sZ2V0VmFy aWFibGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFyaWFibGVzO30sZ2V0VmFy aWFibGVQYWlyczpmdW5jdGlvbigpe3ZhciB1PVtdLHYsdz10aGlzLmdldFZhcmlh YmxlcygpO2Zvcih2IGluIHcpdVt1Lmxlbmd0aF09disiPSIrd1t2XTtyZXR1cm4g dS5qb2luKCcmJyk7fSxnZXRTV0ZIVE1MOmZ1bmN0aW9uKCl7dmFyIHUsdix3O2lm KG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZpZ2F0 b3IubWltZVR5cGVzLmxlbmd0aCl7aWYodGhpcy5nZXRBdHRyaWJ1dGUoImRvRXhw cmVzc0luc3RhbGwiKSl7dGhpcy5hZGRWYXJpYWJsZSgiTU1wbGF5ZXJUeXBlIiwi UGx1Z0luIik7dGhpcy5zZXRBdHRyaWJ1dGUoJ3N3ZicsdGhpcy54aVNXRlBhdGgp O312PXt0eXBlOidhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsc3JjOnRo aXMuZ2V0QXR0cmlidXRlKCdzd2YnKSx3aWR0aDp0aGlzLmdldEF0dHJpYnV0ZSgn d2lkdGgnKSxoZWlnaHQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpLHN0eWxl OnRoaXMuZ2V0QXR0cmlidXRlKCdzdHlsZScpfHwnZGlzcGxheTogYmxvY2s7Jyxp ZDp0aGlzLmdldEF0dHJpYnV0ZSgnaWQnKSxuYW1lOnRoaXMuZ2V0QXR0cmlidXRl KCdpZCcpfTt2YXIgeD10aGlzLmdldFBhcmFtcygpO2Zvcih2YXIgeSBpbiB4KXZb eV09eFt5XTt3PXRoaXMuZ2V0VmFyaWFibGVQYWlycygpO2lmKHcpdi5mbGFzaHZh cnM9dzt1PXQoJ2VtYmVkJyx2LG51bGwpO31lbHNle2lmKHRoaXMuZ2V0QXR0cmli dXRlKCJkb0V4cHJlc3NJbnN0YWxsIikpe3RoaXMuYWRkVmFyaWFibGUoIk1NcGxh eWVyVHlwZSIsIkFjdGl2ZVgiKTt0aGlzLnNldEF0dHJpYnV0ZSgnc3dmJyx0aGlz

LnhpU1dGUGF0aCk7fXY9e2lkOnRoaXMuZ2V0QXR0cmlidXRlKCdpZCcpLGNsYXNz aWQ6J2Nsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCcs d2lkdGg6dGhpcy5nZXRBdHRyaWJ1dGUoJ3dpZHRoJyksaGVpZ2h0OnRoaXMuZ2V0 QXR0cmlidXRlKCdoZWlnaHQnKSxzdHlsZTp0aGlzLmdldEF0dHJpYnV0ZSgnc3R5 bGUnKXx8J2Rpc3BsYXk6IGJsb2NrOyd9O3ZhciB6PXQoJ3BhcmFtJyx7bmFtZTon bW92aWUnLHZhbHVlOnRoaXMuZ2V0QXR0cmlidXRlKCdzd2YnKX0sbnVsbCkseD10 aGlzLmdldFBhcmFtcygpO2Zvcih2YXIgeSBpbiB4KXorPXQoJ3BhcmFtJyx7bmFt ZTp5LHZhbHVlOnhbeV19LG51bGwpO3c9dGhpcy5nZXRWYXJpYWJsZVBhaXJzKCk7 aWYodyl6Kz10KCdwYXJhbScse25hbWU6J2ZsYXNodmFycycsdmFsdWU6d30sbnVs bCk7dT10KCdvYmplY3QnLHYseik7fXJldHVybiB1O30sd3JpdGU6ZnVuY3Rpb24o dSl7aWYodGhpcy5nZXRBdHRyaWJ1dGUoJ3VzZUV4cHJlc3NJbnN0YWxsJykpe3Zh ciB2PW5ldyBvLlBsYXllclZlcnNpb24oWzYsMCw2NV0pO2lmKHRoaXMuaW5zdGFs bGVkVmVyLnZlcnNpb25Jc1ZhbGlkKHYpJiYhdGhpcy5pbnN0YWxsZWRWZXIudmVy c2lvbklzVmFsaWQodGhpcy5nZXRBdHRyaWJ1dGUoJ3ZlcnNpb24nKSkpe3RoaXMu c2V0QXR0cmlidXRlKCdkb0V4cHJlc3NJbnN0YWxsJyx0cnVlKTt0aGlzLmFkZFZh cmlhYmxlKCJNTXJlZGlyZWN0VVJMIixlc2NhcGUodGhpcy5nZXRBdHRyaWJ1dGUo J3hpUmVkaXJlY3RVcmwnKSkpO2RvY3VtZW50LnRpdGxlPWRvY3VtZW50LnRpdGxl LnNsaWNlKDAsNDcpKyIgLSBGbGFzaCBQbGF5ZXIgSW5zdGFsbGF0aW9uIjt0aGlz LmFkZFZhcmlhYmxlKCJNTWRvY3RpdGxlIixkb2N1bWVudC50aXRsZSk7fX12YXIg dz0odHlwZW9mIHU9PSdzdHJpbmcnKT9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh1 KTp1O2lmKCF3KXJldHVybiBmYWxzZTtrLmFkZENsYXNzKHcsJ3N3Zk9iamVjdCcp O3cuc2V0QXR0cmlidXRlKCdkYXRhLXN3ZmlkJyx0aGlzLmdldEF0dHJpYnV0ZSgn aWQnKSk7aWYodGhpcy5za2lwRGV0ZWN0fHx0aGlzLmdldEF0dHJpYnV0ZSgnZG9F eHByZXNzSW5zdGFsbCcpfHx0aGlzLmluc3RhbGxlZFZlci52ZXJzaW9uSXNWYWxp ZCh0aGlzLmdldEF0dHJpYnV0ZSgndmVyc2lvbicpKSl7aWYoIXRoaXMuZ2V0QXR0 cmlidXRlKCd1c2VJZnJhbWUnKSl7by5TV0ZPYmplY3QuZW5zdXJlSUVXb3JrYXJv dW5kQXR0YWNoZWQoKTt3LmlubmVySFRNTD10aGlzLmdldFNXRkhUTUwoKTt9ZWxz ZSB0aGlzLl9jcmVhdGVJZnJhbWUodyk7cmV0dXJuIHRydWU7fWVsc2V7aWYodGhp cy5nZXRBdHRyaWJ1dGUoJ3JlZGlyZWN0VXJsJykhPSIiKWRvY3VtZW50LmxvY2F0 aW9uLnJlcGxhY2UodGhpcy5nZXRBdHRyaWJ1dGUoJ3JlZGlyZWN0VXJsJykpO3Zh ciB4PXRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykubWFqb3IrJy4nK3RoaXMu Z2V0QXR0cmlidXRlKCd2ZXJzaW9uJykubWlub3IrJy4nK3RoaXMuZ2V0QXR0cmli dXRlKCd2ZXJzaW9uJykucmVsZWFzZSsnLicrdGhpcy5nZXRBdHRyaWJ1dGUoJ3Zl cnNpb24nKS5idWlsZCx5PXRoaXMuaW5zdGFsbGVkVmVyLm1ham9yKycuJyt0aGlz Lmluc3RhbGxlZFZlci5taW5vcisnLicrdGhpcy5pbnN0YWxsZWRWZXIucmVsZWFz ZSsnLicrdGhpcy5pbnN0YWxsZWRWZXIuYnVpbGQ7dGhpcy5mYWxsYmFja19qc19m Y24oeSx4KTt3LmlubmVySFRNTD10aGlzLmZhbGxiYWNrX2h0bWw7fXJldHVybiBm YWxzZTt9LF9jcmVhdGVJZnJhbWU6ZnVuY3Rpb24odSl7dmFyIHY9bC5jcmVhdGUo J2lmcmFtZScse3dpZHRoOnRoaXMuZ2V0QXR0cmlidXRlKCd3aWR0aCcpLGhlaWdo dDp0aGlzLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JyksZnJhbWVCb3JkZXI6MH0pO2wu ZW1wdHkodSk7dS5hcHBlbmRDaGlsZCh2KTtpLnVzZUZhY2Vib29rUmVmZXJlckh0 bWwuYmluZChudWxsLHYsdGhpcy5nZXRTV0ZIVE1MKCksdGhpcy5nZXRBdHRyaWJ1 dGUoJ2lmcmFtZVNvdXJjZScpKS5kZWZlcigpO319KTtvLlNXRk9iamVjdFV0aWwu Z2V0UGxheWVyVmVyc2lvbj1mdW5jdGlvbigpe3ZhciB1PW5ldyBvLlBsYXllclZl cnNpb24oWzAsMCwwLDBdKSx2O2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0 b3IubWltZVR5cGVzLmxlbmd0aCl7Zm9yKHZhciB3PTA7dzxuYXZpZ2F0b3IucGx1 Z2lucy5sZW5ndGg7dysrKXRyeXt2YXIgeT1uYXZpZ2F0b3IucGx1Z2luc1t3XTtp Zih5Lm5hbWU9PSdTaG9ja3dhdmUgRmxhc2gnKXt2PW5ldyBvLlBsYXllclZlcnNp b24oeS5kZXNjcmlwdGlvbi5yZXBsYWNlKC8oW2EtekEtWl18XHMpKy8sIiIpLnJl cGxhY2UoLyhccysocnxkKXxccytiWzAtOV0rKS8sIi4iKS5zcGxpdCgiLiIpKTtp Zih0eXBlb2YgdT09J3VuZGVmaW5lZCd8fHYubWFqb3I+dS5tYWpvcnx8KHYubWFq b3I9PXUubWFqb3ImJih2Lm1pbm9yPnUubWlub3J8fCh2Lm1pbm9yPT11Lm1pbm9y JiYodi5yZWxlYXNlPnUucmVsZWFzZXx8KHYucmVsZWFzZT09dS5yZWxlYXNlJiZ2 LmJ1aWxkPnUuYnVpbGQpKSkpKSl1PXY7fX1jYXRjaCh4KXt9fWVsc2UgaWYobmF2 aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJX aW5kb3dzIENFIik+PTApe3ZhciB6PTEsYWE9Mzt3aGlsZSh6KXRyeXthYSsrO3o9 bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNo LiIrYWEpO3U9bmV3IG8uUGxheWVyVmVyc2lvbihbYWEsMCwwXSk7fWNhdGNoKGJh KXt6PW51bGw7fX1lbHNle3RyeXt2YXIgej1uZXcgQWN0aXZlWE9iamVjdCgiU2hv Y2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNyIpO31jYXRjaChjYSl7dHJ5e3Zh

ciB6PW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVG bGFzaC42Iik7dT1uZXcgby5QbGF5ZXJWZXJzaW9uKFs2LDAsMjFdKTt6LkFsbG93 U2NyaXB0QWNjZXNzPSJhbHdheXMiO31jYXRjaChkYSl7aWYodS5tYWpvcj09Nily ZXR1cm4gdTt9dHJ5e3o9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNo LlNob2Nrd2F2ZUZsYXNoIik7fWNhdGNoKGVhKXt9fWlmKHohPW51bGwpdT1uZXcg by5QbGF5ZXJWZXJzaW9uKHouR2V0VmFyaWFibGUoIiR2ZXJzaW9uIikuc3BsaXQo IiAiKVsxXS5zcGxpdCgiLCIpKTt9cmV0dXJuIHU7fTtvLlBsYXllclZlcnNpb249 ZnVuY3Rpb24odSl7dGhpcy5tYWpvcj11WzBdIT1udWxsP3BhcnNlSW50KHVbMF0s MTApOjA7dGhpcy5taW5vcj11WzFdIT1udWxsP3BhcnNlSW50KHVbMV0sMTApOjA7 dGhpcy5yZWxlYXNlPXVbMl0hPW51bGw/cGFyc2VJbnQodVsyXSwxMCk6MDt0aGlz LmJ1aWxkPXVbM10hPW51bGw/cGFyc2VJbnQodVszXSwxMCk6MDt9O28uUGxheWVy VmVyc2lvbi5wcm90b3R5cGUudmVyc2lvbklzVmFsaWQ9ZnVuY3Rpb24odSl7aWYo dGhpcy5tYWpvcjx1Lm1ham9yKXJldHVybiBmYWxzZTtpZih0aGlzLm1ham9yPnUu bWFqb3IpcmV0dXJuIHRydWU7aWYodGhpcy5taW5vcjx1Lm1pbm9yKXJldHVybiBm YWxzZTtpZih0aGlzLm1pbm9yPnUubWlub3IpcmV0dXJuIHRydWU7aWYodGhpcy5y ZWxlYXNlPHUucmVsZWFzZSlyZXR1cm4gZmFsc2U7aWYodGhpcy5yZWxlYXNlPnUu cmVsZWFzZSlyZXR1cm4gdHJ1ZTtpZih0aGlzLmJ1aWxkPHUuYnVpbGQpcmV0dXJu IGZhbHNlO3JldHVybiB0cnVlO307by51dGlsPXtnZXRSZXF1ZXN0UGFyYW1ldGVy OmZ1bmN0aW9uKHUpe3ZhciB2PWRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaHx8ZG9j dW1lbnQubG9jYXRpb24uaGFzaDtpZih1PT1udWxsKXJldHVybiB2O2lmKHYpe3Zh ciB3PXYuc3Vic3RyaW5nKDEpLnNwbGl0KCImIik7Zm9yKHZhciB4PTA7eDx3Lmxl bmd0aDt4KyspaWYod1t4XS5zdWJzdHJpbmcoMCx3W3hdLmluZGV4T2YoIj0iKSk9 PXUpcmV0dXJuIHdbeF0uc3Vic3RyaW5nKCh3W3hdLmluZGV4T2YoIj0iKSsxKSk7 fXJldHVybiAiIjt9fTtvLlNXRk9iamVjdFV0aWwuY2xlYW51cFNXRnM9ZnVuY3Rp b24oKXt2YXIgdT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiT0JKRUNU Iik7Zm9yKHZhciB2PXUubGVuZ3RoLTE7dj49MDt2LS0pe3Vbdl0uc3R5bGUuZGlz cGxheT0nbm9uZSc7Zm9yKHZhciB3IGluIHVbdl0paWYodHlwZW9mIHVbdl1bd109 PSdmdW5jdGlvbicpdVt2XVt3XT1mdW5jdGlvbigpe307fX07aWYoIWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkJiZkb2N1bWVudC5hbGwpZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQ9ZnVuY3Rpb24odSl7cmV0dXJuIGRvY3VtZW50LmFsbFt1XTt9O3ZhciBw PW8udXRpbC5nZXRSZXF1ZXN0UGFyYW1ldGVyLHE9by5TV0ZPYmplY3Qscj1vLlNX Rk9iamVjdDtvLnNwYXduX2ZsYXNoX3VwZGF0ZV9kaWFsb2c9ZnVuY3Rpb24oKXtu ZXcgZygpLnNldFVSSSgnL2FqYXgvZmxhc2hfdXBkYXRlX2RpYWxvZy5waHAnKS5z ZXRNZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUpLnNlbmQoKTt9O2Z1bmN0 aW9uIHModSx2KXt2YXIgdz1tKHUpLHg9by5TV0ZPYmplY3RVdGlsLmdldFBsYXll clZlcnNpb24oKSx5O3YuZm9yRWFjaChmdW5jdGlvbihiYSl7YmE9bmV3IG8uUGxh eWVyVmVyc2lvbihiYS50b1N0cmluZygpLnNwbGl0KCcuJykpO2lmKGJhLm1ham9y PT14Lm1ham9yKXt5PWJhO3JldHVybjt9ZWxzZSBpZih0eXBlb2YgeT09J3VuZGVm aW5lZCd8fGJhLm1ham9yPHkubWFqb3IpeT1iYTt9LmJpbmQodGhpcykpO2lmKHcm JngubWFqb3I+MCl7dmFyIHo9eC5tYWpvcisnLicreC5taW5vcisnLicreC5yZWxl YXNlKycuJyt4LmJ1aWxkLGFhPXkubWFqb3IrJy4nK3kubWlub3IrJy4nK3kucmVs ZWFzZSsnLicreS5idWlsZDtsLnNldENvbnRlbnQodyxsLnR4Ll8oIkZsYXNoIHty ZXF1aXJlZC12ZXJzaW9ufSBkaWJ1dHVoa2FuIHVudHVrIG1lbGloYXQgaXNpIGlu aS4gVmVyc2kgQW5kYSBzYWF0IGluaSBhZGFsYWgge2N1cnJlbnQtdmVyc2lvbn0u IEhhcmFwIG1lbmd1bmR1aCBQZW11dGFyIEZsYXNoIHRlcmJhcnUuIix7J3JlcXVp cmVkLXZlcnNpb24nOmFhLCdjdXJyZW50LXZlcnNpb24nOnp9KSk7fX1vLnNob3dG bGFzaEVycm9yRGlhbG9nPWZ1bmN0aW9uKHUsdil7aC5sb2FkTW9kdWxlcyhbJ0Vy cm9yRGlhbG9nJ10sZnVuY3Rpb24odyl7dy5zaG93KHUsdik7fSk7fTtmdW5jdGlv biB0KHUsdix3KXt2YXIgeD0vXltBLVphLXowLTlcLV0rJC87aWYoIXUubWF0Y2go eCkpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhZyAnK3UpO3ZhciB5PSc8Jyt1 O2Zvcih2YXIgeiBpbiB2KXtpZighei5tYXRjaCh4KSl0aHJvdyBuZXcgRXJyb3Io J0ludmFsaWQgYXR0ciAnK3opO3krPScgJyt6Kyc9Iicrbih2W3pdKSsnIic7fWlm KHc9PT1udWxsKXtyZXR1cm4geSsnLz4nO31lbHNlIHJldHVybiB5Kyc+Jyt3Kyc8 LycrdSsnPic7fWUuZXhwb3J0cz1hLmRlY29uY2VwdHx8bzt9KTsKX19kKCJzd2Zv YmplY3QyIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9ZnVuY3Rpb24o KXt2YXIgaD0idW5kZWZpbmVkIixpPSJvYmplY3QiLGo9IlNob2Nrd2F2ZSBGbGFz aCIsaz0iU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giLGw9ImFwcGxpY2F0 aW9uL3gtc2hvY2t3YXZlLWZsYXNoIixtPSJTV0ZPYmplY3RFeHBySW5zdCIsbj0i b25yZWFkeXN0YXRlY2hhbmdlIixvPXdpbmRvdyxwPWRvY3VtZW50LHE9bmF2aWdh dG9yLHI9ZmFsc2Uscz1ba2FdLHQ9W10sdT1bXSx2PVtdLHcseCx5LHosYWE9ZmFs

c2UsYmE9ZmFsc2UsY2EsZGEsZWE9dHJ1ZSxmYT1mdW5jdGlvbigpe3ZhciBlYj10 eXBlb2YgcC5nZXRFbGVtZW50QnlJZCE9aCYmdHlwZW9mIHAuZ2V0RWxlbWVudHNC eVRhZ05hbWUhPWgmJnR5cGVvZiBwLmNyZWF0ZUVsZW1lbnQhPWgsZmI9cS51c2Vy QWdlbnQudG9Mb3dlckNhc2UoKSxnYj1xLnBsYXRmb3JtLnRvTG93ZXJDYXNlKCks aGI9Z2I/L3dpbi8udGVzdChnYik6L3dpbi8udGVzdChmYiksaWI9Z2I/L21hYy8u dGVzdChnYik6L21hYy8udGVzdChmYiksamI9L3dlYmtpdC8udGVzdChmYik/cGFy c2VGbG9hdChmYi5yZXBsYWNlKC9eLip3ZWJraXRcLyhcZCsoXC5cZCspPykuKiQv LCIkMSIpKTpmYWxzZSxrYj0hKyJcdjEiLGxiPVswLDAsMF0sbWI9bnVsbDtpZih0 eXBlb2YgcS5wbHVnaW5zIT1oJiZ0eXBlb2YgcS5wbHVnaW5zW2pdPT1pKXttYj1x LnBsdWdpbnNbal0uZGVzY3JpcHRpb247aWYobWImJiEodHlwZW9mIHEubWltZVR5 cGVzIT1oJiZxLm1pbWVUeXBlc1tsXSYmIXEubWltZVR5cGVzW2xdLmVuYWJsZWRQ bHVnaW4pKXtyPXRydWU7a2I9ZmFsc2U7bWI9bWIucmVwbGFjZSgvXi4qXHMrKFxT K1xzK1xTKyQpLywiJDEiKTtsYlswXT1wYXJzZUludChtYi5yZXBsYWNlKC9eKC4q KVwuLiokLywiJDEiKSwxMCk7bGJbMV09cGFyc2VJbnQobWIucmVwbGFjZSgvXi4q XC4oLiopXHMuKiQvLCIkMSIpLDEwKTtsYlsyXT0vW2EtekEtWl0vLnRlc3QobWIp P3BhcnNlSW50KG1iLnJlcGxhY2UoL14uKlthLXpBLVpdKyguKikkLywiJDEiKSwx MCk6MDt9fWVsc2UgaWYodHlwZW9mIG8uQWN0aXZlWE9iamVjdCE9aCl0cnl7dmFy IG9iPW5ldyBBY3RpdmVYT2JqZWN0KGspO2lmKG9iKXttYj1vYi5HZXRWYXJpYWJs ZSgiJHZlcnNpb24iKTtpZihtYil7a2I9dHJ1ZTttYj1tYi5zcGxpdCgiICIpWzFd LnNwbGl0KCIsIik7bGI9W3BhcnNlSW50KG1iWzBdLDEwKSxwYXJzZUludChtYlsx XSwxMCkscGFyc2VJbnQobWJbMl0sMTApXTt9fX1jYXRjaChuYil7fXJldHVybiB7 dzM6ZWIscHY6bGIsd2s6amIsaWU6a2Isd2luOmhiLG1hYzppYn07fSgpLGdhPWZ1 bmN0aW9uKCl7aWYoIWZhLnczKXJldHVybjtpZigodHlwZW9mIHAucmVhZHlTdGF0 ZSE9aCYmcC5yZWFkeVN0YXRlPT0iY29tcGxldGUiKXx8KHR5cGVvZiBwLnJlYWR5 U3RhdGU9PWgmJihwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF18fHAu Ym9keSkpKWhhKCk7aWYoIWFhKXtpZih0eXBlb2YgcC5hZGRFdmVudExpc3RlbmVy IT1oKXAuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsaGEsZmFs c2UpO2lmKGZhLmllJiZmYS53aW4pe3AuYXR0YWNoRXZlbnQobixmdW5jdGlvbigp e2lmKHAucmVhZHlTdGF0ZT09ImNvbXBsZXRlIil7cC5kZXRhY2hFdmVudChuLGFy Z3VtZW50cy5jYWxsZWUpO2hhKCk7fX0pO2lmKG89PXRvcCkoZnVuY3Rpb24oKXtp ZihhYSlyZXR1cm47dHJ5e3AuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0 Iik7fWNhdGNoKGViKXtzZXRUaW1lb3V0KGFyZ3VtZW50cy5jYWxsZWUsMCk7cmV0 dXJuO31oYSgpO30pKCk7fWlmKGZhLndrKShmdW5jdGlvbigpe2lmKGFhKXJldHVy bjtpZighL2xvYWRlZHxjb21wbGV0ZS8udGVzdChwLnJlYWR5U3RhdGUpKXtzZXRU aW1lb3V0KGFyZ3VtZW50cy5jYWxsZWUsMCk7cmV0dXJuO31oYSgpO30pKCk7amEo aGEpO319KCk7ZnVuY3Rpb24gaGEoKXtpZihhYSlyZXR1cm47dHJ5e3ZhciBmYj1w LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uYXBwZW5kQ2hpbGQoeGEo InNwYW4iKSk7ZmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmYik7fWNhdGNoKGVi KXtyZXR1cm47fWFhPXRydWU7dmFyIGdiPXMubGVuZ3RoO2Zvcih2YXIgaGI9MDto YjxnYjtoYisrKXNbaGJdKCk7fWZ1bmN0aW9uIGlhKGViKXtpZihhYSl7ZWIoKTt9 ZWxzZSBzW3MubGVuZ3RoXT1lYjt9ZnVuY3Rpb24gamEoZWIpe2lmKHR5cGVvZiBv LmFkZEV2ZW50TGlzdGVuZXIhPWgpe28uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs ZWIsZmFsc2UpO31lbHNlIGlmKHR5cGVvZiBwLmFkZEV2ZW50TGlzdGVuZXIhPWgp e3AuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZWIsZmFsc2UpO31lbHNlIGlmKHR5 cGVvZiBvLmF0dGFjaEV2ZW50IT1oKXt5YShvLCJvbmxvYWQiLGViKTt9ZWxzZSBp Zih0eXBlb2Ygby5vbmxvYWQ9PSJmdW5jdGlvbiIpe3ZhciBmYj1vLm9ubG9hZDtv Lm9ubG9hZD1mdW5jdGlvbigpe2ZiKCk7ZWIoKTt9O31lbHNlIG8ub25sb2FkPWVi O31mdW5jdGlvbiBrYSgpe2lmKHIpe2xhKCk7fWVsc2UgbWEoKTt9ZnVuY3Rpb24g bGEoKXt2YXIgZWI9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGZi PXhhKGkpO2ZiLnNldEF0dHJpYnV0ZSgidHlwZSIsbCk7dmFyIGdiPWViLmFwcGVu ZENoaWxkKGZiKTtpZihnYil7dmFyIGhiPTA7KGZ1bmN0aW9uKCl7aWYodHlwZW9m IGdiLkdldFZhcmlhYmxlIT1oKXt2YXIgaWI9Z2IuR2V0VmFyaWFibGUoIiR2ZXJz aW9uIik7aWYoaWIpe2liPWliLnNwbGl0KCIgIilbMV0uc3BsaXQoIiwiKTtmYS5w dj1bcGFyc2VJbnQoaWJbMF0sMTApLHBhcnNlSW50KGliWzFdLDEwKSxwYXJzZUlu dChpYlsyXSwxMCldO319ZWxzZSBpZihoYjwxMCl7aGIrKztzZXRUaW1lb3V0KGFy Z3VtZW50cy5jYWxsZWUsMTApO3JldHVybjt9ZWIucmVtb3ZlQ2hpbGQoZmIpO2di PW51bGw7bWEoKTt9KSgpO31lbHNlIG1hKCk7fWZ1bmN0aW9uIG1hKCl7dmFyIGVi PXQubGVuZ3RoO2lmKGViPjApZm9yKHZhciBmYj0wO2ZiPGViO2ZiKyspe3ZhciBn Yj10W2ZiXS5pZCxoYj10W2ZiXS5jYWxsYmFja0ZuLGliPXtzdWNjZXNzOmZhbHNl LGlkOmdifTtpZihmYS5wdlswXT4wKXt2YXIgamI9d2EoZ2IpO2lmKGpiKWlmKHph

KHRbZmJdLnN3ZlZlcnNpb24pJiYhKGZhLndrJiZmYS53azwzMTIpKXtiYihnYix0 cnVlKTtpZihoYil7aWIuc3VjY2Vzcz10cnVlO2liLnJlZj1uYShnYik7aGIoaWIp O319ZWxzZSBpZih0W2ZiXS5leHByZXNzSW5zdGFsbCYmb2EoKSl7dmFyIGtiPXt9 O2tiLmRhdGE9dFtmYl0uZXhwcmVzc0luc3RhbGw7a2Iud2lkdGg9amIuZ2V0QXR0 cmlidXRlKCJ3aWR0aCIpfHwiMCI7a2IuaGVpZ2h0PWpiLmdldEF0dHJpYnV0ZSgi aGVpZ2h0Iil8fCIwIjtpZihqYi5nZXRBdHRyaWJ1dGUoImNsYXNzIikpa2Iuc3R5 bGVjbGFzcz1qYi5nZXRBdHRyaWJ1dGUoImNsYXNzIik7aWYoamIuZ2V0QXR0cmli dXRlKCJhbGlnbiIpKWtiLmFsaWduPWpiLmdldEF0dHJpYnV0ZSgiYWxpZ24iKTt2 YXIgbGI9e30sbWI9amIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcmFtIiksbmI9 bWIubGVuZ3RoO2Zvcih2YXIgb2I9MDtvYjxuYjtvYisrKWlmKG1iW29iXS5nZXRB dHRyaWJ1dGUoIm5hbWUiKS50b0xvd2VyQ2FzZSgpIT0ibW92aWUiKWxiW21iW29i XS5nZXRBdHRyaWJ1dGUoIm5hbWUiKV09bWJbb2JdLmdldEF0dHJpYnV0ZSgidmFs dWUiKTtwYShrYixsYixnYixoYik7fWVsc2V7cWEoamIpO2lmKGhiKWhiKGliKTt9 fWVsc2V7YmIoZ2IsdHJ1ZSk7aWYoaGIpe3ZhciBwYj1uYShnYik7aWYocGImJnR5 cGVvZiBwYi5TZXRWYXJpYWJsZSE9aCl7aWIuc3VjY2Vzcz10cnVlO2liLnJlZj1w Yjt9aGIoaWIpO319fX1mdW5jdGlvbiBuYShlYil7dmFyIGZiPW51bGwsZ2I9d2Eo ZWIpO2lmKGdiJiZnYi5ub2RlTmFtZT09Ik9CSkVDVCIpaWYodHlwZW9mIGdiLlNl dFZhcmlhYmxlIT1oKXtmYj1nYjt9ZWxzZXt2YXIgaGI9Z2IuZ2V0RWxlbWVudHNC eVRhZ05hbWUoaSlbMF07aWYoaGIpZmI9aGI7fXJldHVybiBmYjt9ZnVuY3Rpb24g b2EoKXtyZXR1cm4gIWJhJiZ6YSgiNi4wLjY1IikmJihmYS53aW58fGZhLm1hYykm JiEoZmEud2smJmZhLndrPDMxMik7fWZ1bmN0aW9uIHBhKGViLGZiLGdiLGhiKXti YT10cnVlO3k9aGJ8fG51bGw7ej17c3VjY2VzczpmYWxzZSxpZDpnYn07dmFyIGli PXdhKGdiKTtpZihpYil7aWYoaWIubm9kZU5hbWU9PSJPQkpFQ1QiKXt3PXJhKGli KTt4PW51bGw7fWVsc2V7dz1pYjt4PWdiO31lYi5pZD1tO2lmKHR5cGVvZiBlYi53 aWR0aD09aHx8KCEvJSQvLnRlc3QoZWIud2lkdGgpJiZwYXJzZUludChlYi53aWR0 aCwxMCk8MzEwKSllYi53aWR0aD0iMzEwIjtpZih0eXBlb2YgZWIuaGVpZ2h0PT1o fHwoIS8lJC8udGVzdChlYi5oZWlnaHQpJiZwYXJzZUludChlYi5oZWlnaHQsMTAp PDEzNykpZWIuaGVpZ2h0PSIxMzciO3AudGl0bGU9cC50aXRsZS5zbGljZSgwLDQ3 KSsiIC0gRmxhc2ggUGxheWVyIEluc3RhbGxhdGlvbiI7dmFyIGpiPWZhLmllJiZm YS53aW4/IkFjdGl2ZVgiOiJQbHVnSW4iLGtiPSJNTXJlZGlyZWN0VVJMPSIrby5s b2NhdGlvbi50b1N0cmluZygpLnJlcGxhY2UoLyYvZywiJTI2IikrIiZNTXBsYXll clR5cGU9IitqYisiJk1NZG9jdGl0bGU9IitwLnRpdGxlO2lmKHR5cGVvZiBmYi5m bGFzaHZhcnMhPWgpe2ZiLmZsYXNodmFycys9IiYiK2tiO31lbHNlIGZiLmZsYXNo dmFycz1rYjtpZihmYS5pZSYmZmEud2luJiZpYi5yZWFkeVN0YXRlIT00KXt2YXIg bGI9eGEoImRpdiIpO2diKz0iU1dGT2JqZWN0TmV3IjtsYi5zZXRBdHRyaWJ1dGUo ImlkIixnYik7aWIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobGIsaWIpO2liLnN0 eWxlLmRpc3BsYXk9Im5vbmUiOyhmdW5jdGlvbigpe2lmKGliLnJlYWR5U3RhdGU9 PTQpe2liLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaWIpO31lbHNlIHNldFRpbWVv dXQoYXJndW1lbnRzLmNhbGxlZSwxMCk7fSkoKTt9c2EoZWIsZmIsZ2IpO319ZnVu Y3Rpb24gcWEoZWIpe2lmKGZhLmllJiZmYS53aW4mJmViLnJlYWR5U3RhdGUhPTQp e3ZhciBmYj14YSgiZGl2Iik7ZWIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZmIs ZWIpO2ZiLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHJhKGViKSxmYik7ZWIuc3R5 bGUuZGlzcGxheT0ibm9uZSI7KGZ1bmN0aW9uKCl7aWYoZWIucmVhZHlTdGF0ZT09 NCl7ZWIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlYik7fWVsc2Ugc2V0VGltZW91 dChhcmd1bWVudHMuY2FsbGVlLDEwKTt9KSgpO31lbHNlIGViLnBhcmVudE5vZGUu cmVwbGFjZUNoaWxkKHJhKGViKSxlYik7fWZ1bmN0aW9uIHJhKGViKXt2YXIgZmI9 eGEoImRpdiIpO2lmKGZhLndpbiYmZmEuaWUpe2ZiLmlubmVySFRNTD1lYi5pbm5l ckhUTUw7fWVsc2V7dmFyIGdiPWViLmdldEVsZW1lbnRzQnlUYWdOYW1lKGkpWzBd O2lmKGdiKXt2YXIgaGI9Z2IuY2hpbGROb2RlcztpZihoYil7dmFyIGliPWhiLmxl bmd0aDtmb3IodmFyIGpiPTA7amI8aWI7amIrKylpZighKGhiW2piXS5ub2RlVHlw ZT09MSYmaGJbamJdLm5vZGVOYW1lPT0iUEFSQU0iKSYmIShoYltqYl0ubm9kZVR5 cGU9PTgpKWZiLmFwcGVuZENoaWxkKGhiW2piXS5jbG9uZU5vZGUodHJ1ZSkpO319 fXJldHVybiBmYjt9ZnVuY3Rpb24gc2EoZWIsZmIsZ2Ipe3ZhciBoYixpYj13YShn Yik7aWYoZmEud2smJmZhLndrPDMxMilyZXR1cm4gaGI7aWYoaWIpe2lmKHR5cGVv ZiBlYi5pZD09aCllYi5pZD1nYjtpZihmYS5pZSYmZmEud2luKXt2YXIgamI9IiI7 Zm9yKHZhciBrYiBpbiBlYilpZihlYltrYl0hPU9iamVjdC5wcm90b3R5cGVba2Jd KWlmKGtiLnRvTG93ZXJDYXNlKCk9PSJkYXRhIil7ZmIubW92aWU9ZWJba2JdO31l bHNlIGlmKGtiLnRvTG93ZXJDYXNlKCk9PSJzdHlsZWNsYXNzIil7amIrPScgY2xh c3M9IicrZWJba2JdKyciJzt9ZWxzZSBpZihrYi50b0xvd2VyQ2FzZSgpIT0iY2xh c3NpZCIpamIrPScgJytrYisnPSInK2ViW2tiXSsnIic7dmFyIGxiPSIiO2Zvcih2

YXIgbWIgaW4gZmIpaWYoZmJbbWJdIT1PYmplY3QucHJvdG90eXBlW21iXSlsYis9 JzxwYXJhbSBuYW1lPSInK21iKyciIHZhbHVlPSInK2ZiW21iXSsnIiAvPic7aWIu b3V0ZXJIVE1MPSc8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQt MTFjZi05NkI4LTQ0NDU1MzU0MDAwMCInK2piKyc+JytsYisnPC9vYmplY3Q+Jzt1 W3UubGVuZ3RoXT1lYi5pZDtoYj13YShlYi5pZCk7fWVsc2V7dmFyIG5iPXhhKGkp O25iLnNldEF0dHJpYnV0ZSgidHlwZSIsbCk7Zm9yKHZhciBvYiBpbiBlYilpZihl YltvYl0hPU9iamVjdC5wcm90b3R5cGVbb2JdKWlmKG9iLnRvTG93ZXJDYXNlKCk9 PSJzdHlsZWNsYXNzIil7bmIuc2V0QXR0cmlidXRlKCJjbGFzcyIsZWJbb2JdKTt9 ZWxzZSBpZihvYi50b0xvd2VyQ2FzZSgpIT0iY2xhc3NpZCIpbmIuc2V0QXR0cmli dXRlKG9iLGViW29iXSk7Zm9yKHZhciBwYiBpbiBmYilpZihmYltwYl0hPU9iamVj dC5wcm90b3R5cGVbcGJdJiZwYi50b0xvd2VyQ2FzZSgpIT0ibW92aWUiKXRhKG5i LHBiLGZiW3BiXSk7aWIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmIsaWIpO2hi PW5iO319cmV0dXJuIGhiO31mdW5jdGlvbiB0YShlYixmYixnYil7dmFyIGhiPXhh KCJwYXJhbSIpO2hiLnNldEF0dHJpYnV0ZSgibmFtZSIsZmIpO2hiLnNldEF0dHJp YnV0ZSgidmFsdWUiLGdiKTtlYi5hcHBlbmRDaGlsZChoYik7fWZ1bmN0aW9uIHVh KGViKXt2YXIgZmI9d2EoZWIpO2lmKGZiJiZmYi5ub2RlTmFtZT09Ik9CSkVDVCIp aWYoZmEuaWUmJmZhLndpbil7ZmIuc3R5bGUuZGlzcGxheT0ibm9uZSI7KGZ1bmN0 aW9uKCl7aWYoZmIucmVhZHlTdGF0ZT09NCl7dmEoZWIpO31lbHNlIHNldFRpbWVv dXQoYXJndW1lbnRzLmNhbGxlZSwxMCk7fSkoKTt9ZWxzZSBmYi5wYXJlbnROb2Rl LnJlbW92ZUNoaWxkKGZiKTt9ZnVuY3Rpb24gdmEoZWIpe3ZhciBmYj13YShlYik7 aWYoZmIpe2Zvcih2YXIgZ2IgaW4gZmIpaWYodHlwZW9mIGZiW2diXT09ImZ1bmN0 aW9uIilmYltnYl09bnVsbDtmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZiKTt9 fWZ1bmN0aW9uIHdhKGViKXt2YXIgZmI9bnVsbDt0cnl7ZmI9cC5nZXRFbGVtZW50 QnlJZChlYik7fWNhdGNoKGdiKXt9cmV0dXJuIGZiO31mdW5jdGlvbiB4YShlYil7 cmV0dXJuIHAuY3JlYXRlRWxlbWVudChlYik7fWZ1bmN0aW9uIHlhKGViLGZiLGdi KXtlYi5hdHRhY2hFdmVudChmYixnYik7dlt2Lmxlbmd0aF09W2ViLGZiLGdiXTt9 ZnVuY3Rpb24gemEoZWIpe3ZhciBmYj1mYS5wdixnYj1lYi5zcGxpdCgiLiIpO2di WzBdPXBhcnNlSW50KGdiWzBdLDEwKTtnYlsxXT1wYXJzZUludChnYlsxXSwxMCl8 fDA7Z2JbMl09cGFyc2VJbnQoZ2JbMl0sMTApfHwwO3JldHVybiAoZmJbMF0+Z2Jb MF18fChmYlswXT09Z2JbMF0mJmZiWzFdPmdiWzFdKXx8KGZiWzBdPT1nYlswXSYm ZmJbMV09PWdiWzFdJiZmYlsyXT49Z2JbMl0pKT90cnVlOmZhbHNlO31mdW5jdGlv biBhYihlYixmYixnYixoYil7aWYoZmEuaWUmJmZhLm1hYylyZXR1cm47dmFyIGli PXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtpZighaWIpcmV0dXJu O3ZhciBqYj0oZ2ImJnR5cGVvZiBnYj09InN0cmluZyIpP2diOiJzY3JlZW4iO2lm KGhiKXtjYT1udWxsO2RhPW51bGw7fWlmKCFjYXx8ZGEhPWpiKXt2YXIga2I9eGEo InN0eWxlIik7a2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9jc3MiKTtrYi5z ZXRBdHRyaWJ1dGUoIm1lZGlhIixqYik7Y2E9aWIuYXBwZW5kQ2hpbGQoa2IpO2lm KGZhLmllJiZmYS53aW4mJnR5cGVvZiBwLnN0eWxlU2hlZXRzIT1oJiZwLnN0eWxl U2hlZXRzLmxlbmd0aD4wKWNhPXAuc3R5bGVTaGVldHNbcC5zdHlsZVNoZWV0cy5s ZW5ndGgtMV07ZGE9amI7fWlmKGZhLmllJiZmYS53aW4pe2lmKGNhJiZ0eXBlb2Yg Y2EuYWRkUnVsZT09aSljYS5hZGRSdWxlKGViLGZiKTt9ZWxzZSBpZihjYSYmdHlw ZW9mIHAuY3JlYXRlVGV4dE5vZGUhPWgpY2EuYXBwZW5kQ2hpbGQocC5jcmVhdGVU ZXh0Tm9kZShlYisiIHsiK2ZiKyJ9IikpO31mdW5jdGlvbiBiYihlYixmYil7aWYo IWVhKXJldHVybjt2YXIgZ2I9ZmI/InZpc2libGUiOiJoaWRkZW4iO2lmKGFhJiZ3 YShlYikpe3dhKGViKS5zdHlsZS52aXNpYmlsaXR5PWdiO31lbHNlIGFiKCIjIitl YiwidmlzaWJpbGl0eToiK2diKTt9ZnVuY3Rpb24gY2IoZWIpe3ZhciBmYj0vW1xc XCI8PlwuO10vLGdiPWZiLmV4ZWMoZWIpIT1udWxsO3JldHVybiBnYiYmdHlwZW9m IGVuY29kZVVSSUNvbXBvbmVudCE9aD9lbmNvZGVVUklDb21wb25lbnQoZWIpOmVi O312YXIgZGI9ZnVuY3Rpb24oKXtpZihmYS5pZSYmZmEud2luKXdpbmRvdy5hdHRh Y2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7dmFyIGViPXYubGVuZ3RoO2Zv cih2YXIgZmI9MDtmYjxlYjtmYisrKXZbZmJdWzBdLmRldGFjaEV2ZW50KHZbZmJd WzFdLHZbZmJdWzJdKTt2YXIgZ2I9dS5sZW5ndGg7Zm9yKHZhciBoYj0wO2hiPGdi O2hiKyspdWEodVtoYl0pO2Zvcih2YXIgaWIgaW4gZmEpZmFbaWJdPW51bGw7ZmE9 bnVsbDtmb3IodmFyIGpiIGluIGcpZ1tqYl09bnVsbDtnPW51bGw7fSk7fSgpO3Jl dHVybiB7cmVnaXN0ZXJPYmplY3Q6ZnVuY3Rpb24oZWIsZmIsZ2IsaGIpe2lmKGZh LnczJiZlYiYmZmIpe3ZhciBpYj17fTtpYi5pZD1lYjtpYi5zd2ZWZXJzaW9uPWZi O2liLmV4cHJlc3NJbnN0YWxsPWdiO2liLmNhbGxiYWNrRm49aGI7dFt0Lmxlbmd0 aF09aWI7YmIoZWIsZmFsc2UpO31lbHNlIGlmKGhiKWhiKHtzdWNjZXNzOmZhbHNl LGlkOmVifSk7fSxnZXRPYmplY3RCeUlkOmZ1bmN0aW9uKGViKXtpZihmYS53Myly ZXR1cm4gbmEoZWIpO30sZW1iZWRTV0Y6ZnVuY3Rpb24oZWIsZmIsZ2IsaGIsaWIs

amIsa2IsbGIsbWIsbmIpe3ZhciBvYj17c3VjY2VzczpmYWxzZSxpZDpmYn07aWYo ZmEudzMmJiEoZmEud2smJmZhLndrPDMxMikmJmViJiZmYiYmZ2ImJmhiJiZpYil7 YmIoZmIsZmFsc2UpO2lhKGZ1bmN0aW9uKCl7Z2IrPSIiO2hiKz0iIjt2YXIgcGI9 e307aWYobWImJnR5cGVvZiBtYj09PWkpZm9yKHZhciBxYiBpbiBtYilwYltxYl09 bWJbcWJdO3BiLmRhdGE9ZWI7cGIud2lkdGg9Z2I7cGIuaGVpZ2h0PWhiO3ZhciBy Yj17fTtpZihsYiYmdHlwZW9mIGxiPT09aSlmb3IodmFyIHNiIGluIGxiKXJiW3Ni XT1sYltzYl07aWYoa2ImJnR5cGVvZiBrYj09PWkpZm9yKHZhciB0YiBpbiBrYilp Zih0eXBlb2YgcmIuZmxhc2h2YXJzIT1oKXtyYi5mbGFzaHZhcnMrPSImIit0Yisi PSIra2JbdGJdO31lbHNlIHJiLmZsYXNodmFycz10YisiPSIra2JbdGJdO2lmKHph KGliKSl7dmFyIHViPXNhKHBiLHJiLGZiKTtpZihwYi5pZD09ZmIpYmIoZmIsdHJ1 ZSk7b2Iuc3VjY2Vzcz10cnVlO29iLnJlZj11Yjt9ZWxzZSBpZihqYiYmb2EoKSl7 cGIuZGF0YT1qYjtwYShwYixyYixmYixuYik7cmV0dXJuO31lbHNlIGJiKGZiLHRy dWUpO2lmKG5iKW5iKG9iKTt9KTt9ZWxzZSBpZihuYiluYihvYik7fSxzd2l0Y2hP ZmZBdXRvSGlkZVNob3c6ZnVuY3Rpb24oKXtlYT1mYWxzZTt9LHVhOmZhLGdldEZs YXNoUGxheWVyVmVyc2lvbjpmdW5jdGlvbigpe3JldHVybiB7bWFqb3I6ZmEucHZb MF0sbWlub3I6ZmEucHZbMV0scmVsZWFzZTpmYS5wdlsyXX07fSxoYXNGbGFzaFBs YXllclZlcnNpb246emEsY3JlYXRlU1dGOmZ1bmN0aW9uKGViLGZiLGdiKXtpZihm YS53Myl7cmV0dXJuIHNhKGViLGZiLGdiKTt9ZWxzZSByZXR1cm4gdW5kZWZpbmVk O30sc2hvd0V4cHJlc3NJbnN0YWxsOmZ1bmN0aW9uKGViLGZiLGdiLGhiKXtpZihm YS53MyYmb2EoKSlwYShlYixmYixnYixoYik7fSxyZW1vdmVTV0Y6ZnVuY3Rpb24o ZWIpe2lmKGZhLnczKXVhKGViKTt9LGNyZWF0ZUNTUzpmdW5jdGlvbihlYixmYixn YixoYil7aWYoZmEudzMpYWIoZWIsZmIsZ2IsaGIpO30sYWRkRG9tTG9hZEV2ZW50 OmlhLGFkZExvYWRFdmVudDpqYSxnZXRRdWVyeVBhcmFtVmFsdWU6ZnVuY3Rpb24o ZWIpe3ZhciBmYj1wLmxvY2F0aW9uLnNlYXJjaHx8cC5sb2NhdGlvbi5oYXNoO2lm KGZiKXtpZigvXD8vLnRlc3QoZmIpKWZiPWZiLnNwbGl0KCI/IilbMV07aWYoZWI9 PW51bGwpcmV0dXJuIGNiKGZiKTt2YXIgZ2I9ZmIuc3BsaXQoIiYiKTtmb3IodmFy IGhiPTA7aGI8Z2IubGVuZ3RoO2hiKyspaWYoZ2JbaGJdLnN1YnN0cmluZygwLGdi W2hiXS5pbmRleE9mKCI9IikpPT1lYilyZXR1cm4gY2IoZ2JbaGJdLnN1YnN0cmlu ZygoZ2JbaGJdLmluZGV4T2YoIj0iKSsxKSkpO31yZXR1cm4gIiI7fSxleHByZXNz SW5zdGFsbENhbGxiYWNrOmZ1bmN0aW9uKCl7aWYoYmEpe3ZhciBlYj13YShtKTtp ZihlYiYmdyl7ZWIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodyxlYik7aWYoeCl7 YmIoeCx0cnVlKTtpZihmYS5pZSYmZmEud2luKXcuc3R5bGUuZGlzcGxheT0iYmxv Y2siO31pZih5KXkoeik7fWJhPWZhbHNlO319fTt9KCk7ZS5leHBvcnRzPWc7fSk7 Cl9fZCgiU291bmRQbGF5ZXIiLFsiQXJiaXRlciIsIkNoYXRDb25maWciLCJFbnYi LCJzd2ZvYmplY3QiLCJzd2ZvYmplY3QyIiwiVVJJIiwiY3JlYXRlQXJyYXlGcm9t Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIo J0NoYXRDb25maWcnKSxpPWIoJ0VudicpLGo9Yignc3dmb2JqZWN0JykuU1dGT2Jq ZWN0LGs9Yignc3dmb2JqZWN0MicpLGw9YignVVJJJyksbT1iKCdjcmVhdGVBcnJh eUZyb20nKSxuPXt9LG89bnVsbCxwPWZhbHNlLHE9J3NvX3NvdW5kX3BsYXllcics cj0nL3N3Zi9Tb3VuZFBsYXllckhhdGVyLnN3Zicscz0nMTAuMC4yMi44NycsdD1u dWxsLHU9aC5nZXQoJ3NvdW5kLnVzZXN3Zm9iamVjdF8yJyxmYWxzZSksdj1oLmdl dCgnc291bmQuZm9yY2VfZmxhc2gnLGZhbHNlKTtmdW5jdGlvbiB3KGVhKXt2YXIg ZmE9bChlYSk7aWYoIWZhLmdldERvbWFpbigpKXJldHVybiBsKGkuc3RhdGljX2Jh c2UpLnNldFBhdGgoZmEuZ2V0UGF0aCgpKS50b1N0cmluZygpO3JldHVybiBlYTt9 ZnVuY3Rpb24geChlYSl7aWYoL1wubXAzJC8udGVzdChlYSkpcmV0dXJuICdhdWRp by9tcGVnJztpZigvXC5vZ1tnYV0kLy50ZXN0KGVhKSlyZXR1cm4gJ2F1ZGlvL29n Zyc7cmV0dXJuICcnO31mdW5jdGlvbiB5KCl7aWYoIXQmJiF2KXt2YXIgZWE9ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKTtpZighZWF8fCFlYS5jYW5QbGF5 VHlwZSlyZXR1cm4gbnVsbDtlYS5zZXRBdHRyaWJ1dGUoJ3ByZWxvYWQnLCdhdXRv Jyk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlYSk7dD1lYTt9cmV0dXJuIHQ7 fWZ1bmN0aW9uIHooKXt2YXIgZWE9ZG9jdW1lbnRbcV18fHdpbmRvd1txXTtpZihl YSlpZighZWEucGxheVNvdW5kJiZlYS5sZW5ndGgpZWE9ZWFbMF07cmV0dXJuIChl YSYmZWEucGxheVNvdW5kJiZlYS5sb29wU291bmQpP2VhOm51bGw7fWZ1bmN0aW9u IGFhKCl7cmV0dXJuIHA7fWZ1bmN0aW9uIGJhKGVhLGZhLGdhKXtvPXtwYXRoOmVh LHN5bmM6ZmEsbG9vcDpnYX07fWZ1bmN0aW9uIGNhKCl7cD10cnVlO2lmKG8pe3Zh ciBlYT16KCk7aWYoby5sb29wKXtlYS5sb29wU291bmQoby5wYXRoLG8uc3luYyk7 fWVsc2UgZWEucGxheVNvdW5kKG8ucGF0aCxvLnN5bmMpO319dmFyIGRhPXtpbml0 OmZ1bmN0aW9uKGVhKXtlYT1tKGVhKTt2YXIgZmE7Zm9yKHZhciBnYT0wO2dhPGVh Lmxlbmd0aDsrK2dhKXtmYT1lYVtnYV07aWYobltmYV0pcmV0dXJuO312YXIgaGE9 eSgpO2ZvcihnYT0wO2hhJiZnYTxlYS5sZW5ndGg7KytnYSl7ZmE9ZWFbZ2FdO2lm

KGhhLmNhblBsYXlUeXBlKGZhKSl7bltmYV09dHJ1ZTtyZXR1cm47fX1uWydhdWRp by9tcGVnJ109dHJ1ZTtpZih6KCkpcmV0dXJuO3RyeXtnLnJlZ2lzdGVyQ2FsbGJh Y2soY2EsWydzb3VuZC9wbGF5ZXJfcmVhZHknLCdzb3VuZC9yZWFkeSddKTt2YXIg amE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7amEuaWQ9J3NvdW5kX3Bs YXllcl9ob2xkZXInO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoamEpO2lmKHUp e2suZW1iZWRTV0YocixqYS5pZCwnMXB4JywnMXB4JyxzLG51bGwse3N3Zl9pZDpx fSx7YWxsb3dzY3JpcHRhY2Nlc3M6J2Fsd2F5cycsd21vZGU6J3RyYW5zcGFyZW50 J30sbnVsbCxmdW5jdGlvbihsYSl7d2luZG93W3FdPWxhLnJlZjtnLmluZm9ybSgn c291bmQvcGxheWVyX3JlYWR5Jyk7fSk7fWVsc2V7dmFyIGthPW5ldyBqKHIscSwn MXB4JywnMXB4Jyxbc10sJyNmZmZmZmYnKTtrYS5hZGRQYXJhbSgnYWxsb3dzY3Jp cHRhY2Nlc3MnLCdhbHdheXMnKTtrYS5hZGRQYXJhbSgnd21vZGUnLCd0cmFuc3Bh cmVudCcpO2thLmFkZFZhcmlhYmxlKCdzd2ZfaWQnLHEpO2thLmZhbGxiYWNrX2h0 bWw9JyAnO2thLndyaXRlKGphLmlkKTt3aW5kb3dbcV09a2E7Zy5pbmZvcm0oJ3Nv dW5kL3BsYXllcl9yZWFkeScpO319Y2F0Y2goaWEpe319LHBsYXk6ZnVuY3Rpb24o ZWEsZmEpe2VhPW0oZWEpO3ZhciBnYT15KCksaGEsaWE7Zm9yKHZhciBqYT0wO2dh JiZqYTxlYS5sZW5ndGg7KytqYSl7aGE9ZWFbamFdO2lhPXgoaGEpO2lmKCFnYS5j YW5QbGF5VHlwZShpYSkpY29udGludWU7ZGEuaW5pdChbaWFdKTtnYS5zcmM9dyho YSk7aWYoZmEpe2dhLnNldEF0dHJpYnV0ZSgnbG9vcCcsJycpO31lbHNlIGdhLnJl bW92ZUF0dHJpYnV0ZSgnbG9vcCcpO2dhLnBsYXkoKTtyZXR1cm47fWZvcihqYT0w O2phPGVhLmxlbmd0aDsrK2phKXtoYT13KGVhW2phXSk7aWE9eChoYSk7aWYoaWEh PSdhdWRpby9tcGVnJyljb250aW51ZTtkYS5pbml0KFtpYV0pO3ZhciBrYT16KCk7 aWYoIWFhKCkpe2JhKGhhLHRydWUsZmEpO3JldHVybjt9ZWxzZSBpZihrYSl7aWYo ZmEpe2thLmxvb3BTb3VuZChoYSx0cnVlKTt9ZWxzZSBrYS5wbGF5U291bmQoaGEs dHJ1ZSk7cmV0dXJuO319fSxzdG9wOmZ1bmN0aW9uKGVhKXtlYT1tKGVhKTtmb3Io dmFyIGZhPTA7ZmE8ZWEubGVuZ3RoOysrZmEpe3ZhciBnYT13KGVhW2ZhXSksaGE9 eSgpLGlhPXooKTtpZihoYSYmaGEuc3JjPT1nYSl7aGEucGF1c2UoKTtoYS5zcmM9 dW5kZWZpbmVkO31lbHNlIGlhJiZpYS5zdG9wU291bmQoZ2EpO319fTtlLmV4cG9y dHM9ZGE7fSk7Cl9fZCgiU291bmRTeW5jaHJvbml6ZXIiLFsiZXZlbnQtZXh0ZW5z aW9ucyIsImhhc0FycmF5TmF0dXJlIiwiU291bmRQbGF5ZXIiLCJjcmVhdGVBcnJh eUZyb20iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9u cycpO3ZhciBnPWIoJ2hhc0FycmF5TmF0dXJlJyksaD1iKCdTb3VuZFBsYXllcicp LGk9YignY3JlYXRlQXJyYXlGcm9tJyksaj0nZmJfc291bmRzX3BsYXlpbmczJztm dW5jdGlvbiBrKCl7aWYod2luZG93LmxvY2FsU3RvcmFnZSl0cnl7dmFyIHA9d2lu ZG93LmxvY2FsU3RvcmFnZVtqXTtpZihwKXtwPUpTT04ucGFyc2UocCk7aWYoZyhw KSlyZXR1cm4gcDt9fWNhdGNoKG8pe31yZXR1cm4gW107fWZ1bmN0aW9uIGwobyl7 aWYod2luZG93LmxvY2FsU3RvcmFnZSl7dmFyIHA9aygpO3AucHVzaChvKTt3aGls ZShwLmxlbmd0aD41KXAuc2hpZnQoKTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZVtq XT1KU09OLnN0cmluZ2lmeShwKTt9Y2F0Y2gocSl7fX19ZnVuY3Rpb24gbShvKXty ZXR1cm4gaygpLnNvbWUoZnVuY3Rpb24ocCl7cmV0dXJuIHA9PT1vO30pO312YXIg bj17cGxheTpmdW5jdGlvbihvLHAscSl7bz1pKG8pO3A9cHx8KG9bMF0rTWF0aC5m bG9vcihEYXRlLm5vdygpLzEwMDApKTtpZihtKHApKXJldHVybjtoLnBsYXkobyxx KTtsKHApO30saXNTdXBwb3J0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gISF3aW5kb3cu bG9jYWxTdG9yYWdlO319O2UuZXhwb3J0cz1uO30pOwpfX2QoIlNvdW5kUlBDIixb ImV2ZW50LWV4dGVuc2lvbnMiLCJTb3VuZFN5bmNocm9uaXplciJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignU291 bmRTeW5jaHJvbml6ZXInKTtmdW5jdGlvbiBoKGosayxsKXtnLnBsYXkoaixrLGwp O312YXIgaT17cGxheUxvY2FsOmgscGxheVJlbW90ZTpmdW5jdGlvbihqLGssbCxt KXt2YXIgbj17cGF0aHM6ayxzeW5jOmwsbG9vcDptfTtqLnBvc3RNZXNzYWdlKEpT T04uc3RyaW5naWZ5KG4pLCcqJyk7fSxzdXBwb3J0c1JQQzpmdW5jdGlvbigpe3Jl dHVybiAhIXdpbmRvdy5wb3N0TWVzc2FnZTt9LF9saXN0ZW46ZnVuY3Rpb24oKXtF dmVudC5saXN0ZW4od2luZG93LCdtZXNzYWdlJyxmdW5jdGlvbihqKXtpZighL1wu ZmFjZWJvb2suY29tJC8udGVzdChqLm9yaWdpbikpcmV0dXJuO3ZhciBrPUpTT04u cGFyc2Uoai5kYXRhKTtoKGsucGF0aHMsay5zeW5jLGsubG9vcCk7fSk7fX07ZS5l eHBvcnRzPWk7fSk7Cl9fZCgiU291bmQiLFsiU291bmRQbGF5ZXIiLCJTb3VuZFJQ QyIsIlNvdW5kU3luY2hyb25pemVyIiwiVXNlckFnZW50Il0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ1NvdW5kUGxheWVyJyksaD1iKCdTb3VuZFJQQycp LGk9YignU291bmRTeW5jaHJvbml6ZXInKSxqPWIoJ1VzZXJBZ2VudCcpLGs9bnVs bCxsPXtpbml0OmZ1bmN0aW9uKG8pe2lmKCFrKWcuaW5pdChvKTt9LHBsYXk6ZnVu Y3Rpb24obyxwLHEpe2lmKGspe2gucGxheVJlbW90ZShrLmNvbnRlbnRXaW5kb3cs byxwLGZhbHNlKTt9ZWxzZSBoLnBsYXlMb2NhbChvLHAscSk7fSxzdG9wOmZ1bmN0

aW9uKG8pe2lmKCFrKWcuc3RvcChvKTt9fSxtPWxvY2F0aW9uLmhvc3QucmVwbGFj ZSgvXlteLl0rLywnd3d3Jyk7ZnVuY3Rpb24gbigpe2lmKGouaWUoKTw5KXJldHVy biBmYWxzZTtyZXR1cm4gaS5pc1N1cHBvcnRlZCgpJiZoLnN1cHBvcnRzUlBDKCk7 fWlmKGxvY2F0aW9uLmhvc3QhPT1tJiZuKCkpe2s9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnaWZyYW1lJyk7ay5zZXRBdHRyaWJ1dGUoJ3NyYycsJy8vJyttKycvc291 bmRfaWZyYW1lLnBocCcpO2suc3R5bGUuZGlzcGxheT0nbm9uZSc7ZG9jdW1lbnQu Ym9keS5hcHBlbmRDaGlsZChrKTt9ZS5leHBvcnRzPWw7fSk7Cl9fZCgiVG9rZW4i LFsiQ1NTIiwiRGF0YVN0b3JlIiwiRE9NIiwiY29weVByb3BlcnRpZXMiLCJ0eCJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDU1MnKSxoPWIoJ0RhdGFT dG9yZScpLGk9YignRE9NJyksaj1iKCdjb3B5UHJvcGVydGllcycpLGs9YigndHgn KTtmdW5jdGlvbiBsKG0sbil7dGhpcy5pbmZvPW07dGhpcy5wYXJhbU5hbWU9bjt9 aihsLnByb3RvdHlwZSx7Z2V0SW5mbzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlu Zm87fSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mby50ZXh0O30s Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmZvLnVpZDt9LGlzRnJl ZWZvcm06ZnVuY3Rpb24oKXtyZXR1cm4gISF0aGlzLmluZm8uZnJlZWZvcm07fSxn ZXRFbGVtZW50OmZ1bmN0aW9uKCl7aWYoIXRoaXMuZWxlbWVudCl0aGlzLnNldEVs ZW1lbnQodGhpcy5jcmVhdGVFbGVtZW50KCkpO3JldHVybiB0aGlzLmVsZW1lbnQ7 fSxzZXRFbGVtZW50OmZ1bmN0aW9uKG0pe2guc2V0KG0sJ1Rva2VuJyx0aGlzKTt0 aGlzLmVsZW1lbnQ9bTtyZXR1cm4gdGhpczt9LGlzUmVtb3ZhYmxlOmZ1bmN0aW9u KCl7cmV0dXJuIGcuaGFzQ2xhc3ModGhpcy5lbGVtZW50LCdyZW1vdmFibGUnKTt9 LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgbT10aGlzLnBhcmFtTmFtZSxu PXRoaXMuZ2V0VGV4dCgpLG89dGhpcy5nZXRWYWx1ZSgpLHA9aS5jcmVhdGUoJ2En LHtocmVmOicjJywnYXJpYS1sYWJlbCc6ay5fKCJIYXB1cyB7aXRlbX0iLHtpdGVt Om59KSxjbGFzc05hbWU6J3JlbW92ZSB1aUNsb3NlQnV0dG9uIHVpQ2xvc2VCdXR0 b25TbWFsbCd9KSxxPWkuY3JlYXRlKCdpbnB1dCcse3R5cGU6J2hpZGRlbicsdmFs dWU6byxuYW1lOm0rJ1tdJyxhdXRvY29tcGxldGU6J29mZid9KSxyPWkuY3JlYXRl KCdpbnB1dCcse3R5cGU6J2hpZGRlbicsdmFsdWU6bixuYW1lOid0ZXh0XycrbSsn W10nLGF1dG9jb21wbGV0ZTonb2ZmJ30pLHM9aS5jcmVhdGUoJ3NwYW4nLHtjbGFz c05hbWU6J3JlbW92YWJsZSB1aVRva2VuJ30sW24scSxyLHBdKTtyZXR1cm4gczt9 fSk7ZS5leHBvcnRzPWw7fSk7Cl9fZCgiU3RpY2t5UGxhY2Vob2xkZXJJbnB1dCIs WyJldmVudC1leHRlbnNpb25zIiwiQ1NTIiwiRE9NIiwiSW5wdXQiLCJQYXJlbnQi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3Zh ciBnPWIoJ0NTUycpLGg9YignRE9NJyksaT1iKCdJbnB1dCcpLGo9YignUGFyZW50 Jyk7ZnVuY3Rpb24gayhvKXtyZXR1cm4gai5ieUNsYXNzKG8sJ3VpU3RpY2t5UGxh Y2Vob2xkZXJJbnB1dCcpO31mdW5jdGlvbiBsKG8pe3JldHVybiBoLnNjcnkobywn LnBsYWNlaG9sZGVyJylbMF07fWZ1bmN0aW9uIG0obyl7bz1vfHx3aW5kb3cuZXZl bnQ7dmFyIHA9by50YXJnZXR8fG8uc3JjRWxlbWVudDtpZihoLmlzTm9kZU9mVHlw ZShwLFsnaW5wdXQnLCd0ZXh0YXJlYSddKSl7dmFyIHE9ayhwKTtpZihxKXt2YXIg cj1vLnR5cGU7KGZ1bmN0aW9uKCl7aWYoKHI9PT0na2V5ZG93bid8fHI9PT0ncGFz dGUnKSYmcC52YWx1ZS5sZW5ndGgpZy5yZW1vdmVDbGFzcyhxLCd1aVN0aWNreVBs YWNlaG9sZGVyRW1wdHlJbnB1dCcpO2lmKChyPT09J2JsdXInfHxyPT09J2ZvY3Vz b3V0JykmJiFwLnZhbHVlLmxlbmd0aClnLmFkZENsYXNzKHEsJ3VpU3RpY2t5UGxh Y2Vob2xkZXJFbXB0eUlucHV0Jyk7fSkuZGVmZXIoKTt9fX12YXIgbj17aW5pdDpm dW5jdGlvbigpe24uaW5pdD1iYWdvZmhvbGRpbmc7RXZlbnQubGlzdGVuKGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCx7a2V5ZG93bjptLHBhc3RlOm19KTtpZihkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcil7ZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLG0sdHJ1ZSk7 fWVsc2UgRXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnZm9j dXNvdXQnLG0pO30scmVnaXN0ZXJJbnB1dDpmdW5jdGlvbihvKXtuLmluaXQoKTt2 YXIgcD1vLmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKXx8Jyc7aWYocC5sZW5n dGgpaWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW8pe3ZhciBxPUV2ZW50Lmxp c3RlbihvLCdibHVyJyxmdW5jdGlvbigpe24ubWFuaXB1bGF0ZUlucHV0KG8scCk7 cS5yZW1vdmUoKTt9KTt9ZWxzZSBuLm1hbmlwdWxhdGVJbnB1dChvLHApO30sbWFu aXB1bGF0ZUlucHV0OmZ1bmN0aW9uKG8scCl7dmFyIHE9aC5jcmVhdGUoJ2Rpdics e2NsYXNzTmFtZToncGxhY2Vob2xkZXInLCdhcmlhLWhpZGRlbic6J3RydWUnfSxw KSxyPWguY3JlYXRlKCdkaXYnLHtjbGFzc05hbWU6J3VpU3RpY2t5UGxhY2Vob2xk ZXJJbnB1dCd9LHEpO2lmKGguaXNOb2RlT2ZUeXBlKG8sJ3RleHRhcmVhJykpZy5h ZGRDbGFzcyhyLCd1aVN0aWNreVBsYWNlaG9sZGVyVGV4dGFyZWEnKTtFdmVudC5s aXN0ZW4ocSwnY2xpY2snLGZ1bmN0aW9uKCl7by5mb2N1cygpO30pO2lmKG8udmFs dWU9PT1wKW8udmFsdWU9Jyc7Zy5yZW1vdmVDbGFzcyhvLCdET01Db250cm9sX3Bs

YWNlaG9sZGVyJyk7by5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywnJyk7aC5y ZXBsYWNlKG8scik7aC5hcHBlbmRDb250ZW50KHIsbyk7Zy5jb25kaXRpb25DbGFz cyhyLCd1aVN0aWNreVBsYWNlaG9sZGVyRW1wdHlJbnB1dCcsIW8udmFsdWUubGVu Z3RoKTt9LHNldFBsYWNlaG9sZGVyVGV4dDpmdW5jdGlvbihvLHApe3ZhciBxPWso byk7aWYoIXEpe2kuc2V0UGxhY2Vob2xkZXIobyxwKTt9ZWxzZXt2YXIgcj1sKHEp O3ImJmguc2V0Q29udGVudChyLHApO319LGdldFBsYWNlaG9sZGVyVGV4dDpmdW5j dGlvbihvKXt2YXIgcD1rKG8pLHE9bChwKTtyZXR1cm4gcSYmaC5nZXRUZXh0KHEp O30sdXBkYXRlOmZ1bmN0aW9uKG8pe3ZhciBwPWsobyk7aWYocClnLmNvbmRpdGlv bkNsYXNzKHAsJ3VpU3RpY2t5UGxhY2Vob2xkZXJFbXB0eUlucHV0Jywhby52YWx1 ZS5sZW5ndGgpO30sZ2V0VmlzaWJsZVRleHQ6ZnVuY3Rpb24obyl7dmFyIHA9ayhv KTtpZihnLmhhc0NsYXNzKHAsJ3VpU3RpY2t5UGxhY2Vob2xkZXJFbXB0eUlucHV0 Jykpe3ZhciBxPWwocCk7cmV0dXJuIHEmJmguZ2V0VGV4dChxKTt9ZWxzZSByZXR1 cm4gby52YWx1ZTt9fTtlLmV4cG9ydHM9bjt9KTsKX19kKCJUb2tlbml6ZXIiLFsi YXJyYXktZXh0ZW5zaW9ucyIsImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwi QXJiaXRlck1peGluIiwiQ2xhc3MiLCJDU1MiLCJEYXRhU3RvcmUiLCJET00iLCJE T01RdWVyeSIsIklucHV0IiwiS2V5cyIsIlBhcmVudCIsIlN0aWNreVBsYWNlaG9s ZGVySW5wdXQiLCJTdHlsZSIsIlRleHRNZXRyaWNzIiwiVG9rZW4iLCJVc2VyQWdl bnQiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0ZU9iamVjdEZyb20iXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7YignYXJyYXktZXh0ZW5zaW9ucycpO2IoJ2V2ZW50LWV4 dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBcmJpdGVyTWl4aW4n KSxpPWIoJ0NsYXNzJyksaj1iKCdDU1MnKSxrPWIoJ0RhdGFTdG9yZScpLGw9Yign RE9NJyksbT1iKCdET01RdWVyeScpLG49YignSW5wdXQnKSxvPWIoJ0tleXMnKSxw PWIoJ1BhcmVudCcpLHE9YignU3RpY2t5UGxhY2Vob2xkZXJJbnB1dCcpLHI9Yign U3R5bGUnKSxzPWIoJ1RleHRNZXRyaWNzJyksdD1iKCdUb2tlbicpLHU9YignVXNl ckFnZW50Jyksdj1iKCdjb3B5UHJvcGVydGllcycpLHc9YignY3JlYXRlT2JqZWN0 RnJvbScpO2Z1bmN0aW9uIHgoeSx6KXt0aGlzLmVsZW1lbnQ9eTt0aGlzLnR5cGVh aGVhZD16O3RoaXMuaW5wdXQ9ei5nZXRDb3JlKCkuZ2V0RWxlbWVudCgpO2suc2V0 KHRoaXMuZWxlbWVudCwnVG9rZW5pemVyJyx0aGlzKTt9eC5nZXRJbnN0YW5jZT1m dW5jdGlvbih5KXt2YXIgej1wLmJ5Q2xhc3MoeSwndWlUb2tlbml6ZXInKTtyZXR1 cm4gej9rLmdldCh6LCdUb2tlbml6ZXInKTpudWxsO307dih4LnByb3RvdHlwZSxo LHtpbmxpbmU6ZmFsc2UsbWF4VG9rZW5zOm51bGwsZXhjbHVkZUR1cGxpY2F0ZXM6 dHJ1ZSxwbGFjZWhvbGRlcjonJyxpbml0OmZ1bmN0aW9uKHkseixhYSxiYSl7dGhp cy5pbml0PWJhZ29maG9sZGluZzt0aGlzLnRva2VuYXJlYT15O3RoaXMucGFyYW1O YW1lPXo7aWYoIXRoaXMucGxhY2Vob2xkZXIpdGhpcy5wbGFjZWhvbGRlcj10aGlz LmlucHV0LmdldEF0dHJpYnV0ZSgnZGF0YS1wbGFjZWhvbGRlcicpfHwnJzt2KHRo aXMsYmF8fHt9KTt0aGlzLmluaXRFdmVudHMoKTt0aGlzLmluaXRUeXBlYWhlYWQo KTt0aGlzLnJlc2V0KGFhKTt0aGlzLmluaXRCZWhhdmlvcnMoKTtnLmluZm9ybSgn VG9rZW5pemVyL2luaXQnLHRoaXMsZy5CRUhBVklPUl9QRVJTSVNURU5UKTt9LHJl c2V0OmZ1bmN0aW9uKHkpe3RoaXMudG9rZW5zPVtdO3RoaXMudW5pcXVlPXt9O2lm KHkpe3RoaXMucG9wdWxhdGUoeSk7fWVsc2UgbC5lbXB0eSh0aGlzLnRva2VuYXJl YSk7dGhpcy51cGRhdGVUb2tlbmFyZWEoKTt9LHBvcHVsYXRlOmZ1bmN0aW9uKHkp e3ZhciB6PVtdO3RoaXMudG9rZW5zPXRoaXMuZ2V0VG9rZW5FbGVtZW50cygpLm1h cChmdW5jdGlvbihhYSxiYSl7dmFyIGNhPXlbYmFdO3oucHVzaCh0aGlzLl90b2tl bktleShjYSkpO3JldHVybiB0aGlzLmNyZWF0ZVRva2VuKGNhLGFhKTt9LHRoaXMp O3RoaXMudW5pcXVlPXcoeix0aGlzLnRva2Vucyk7fSxnZXRFbGVtZW50OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudDt9LGdldFR5cGVhaGVhZDpmdW5jdGlv bigpe3JldHVybiB0aGlzLnR5cGVhaGVhZDt9LGdldElucHV0OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuaW5wdXQ7fSxpbml0QmVoYXZpb3JzOmZ1bmN0aW9uKCl7dGhp cy5iZWhhdmlvcnM9dGhpcy5iZWhhdmlvcnN8fFtdO2lmKHRoaXMuYmVoYXZpb3Jz IGluc3RhbmNlb2YgQXJyYXkpe3RoaXMuYmVoYXZpb3JzLmZvckVhY2goZnVuY3Rp b24oYWEpe2FhLmJlaGF2aW9yKHRoaXMsYWEuY29uZmlnKTt9LmJpbmQodGhpcykp O31lbHNlIGZvcih2YXIgeSBpbiAodGhpcy5iZWhhdmlvcnN8fHt9KSl7dmFyIHo9 d2luZG93LlRva2VuaXplckJlaGF2aW9ycyYmd2luZG93LlRva2VuaXplckJlaGF2 aW9yc1t5XTt6LmNhbGwobnVsbCx0aGlzLHRoaXMuYmVoYXZpb3JzW3ldKTt9fSxp bml0VHlwZWFoZWFkOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy50eXBlYWhlYWQuZ2V0 Q29yZSgpO3kucmVzZXRPblNlbGVjdD10cnVlO3kuc2V0VmFsdWVPblNlbGVjdD1m YWxzZTt5LnByZXZlbnRGb2N1c0NoYW5nZU9uVGFiPXRydWU7aWYodGhpcy5pbmxp bmUpe3ZhciB6PXRoaXMudHlwZWFoZWFkLmdldFZpZXcoKTtqLmFkZENsYXNzKHou Z2V0RWxlbWVudCgpLCd1aUlubGluZVRva2VuaXplclZpZXcnKTt9dGhpcy50eXBl YWhlYWQuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9uKGFhLGJhKXt2YXIgY2E9

YmEuc2VsZWN0ZWQ7aWYoJ3VpZCcgaW4gY2Epe3RoaXMudXBkYXRlSW5wdXQoKTt0 aGlzLmFkZFRva2VuKHRoaXMuY3JlYXRlVG9rZW4oY2EpKTt9fS5iaW5kKHRoaXMp KTt0aGlzLnR5cGVhaGVhZC5zdWJzY3JpYmUoJ2JsdXInLHRoaXMuaGFuZGxlQmx1 ci5iaW5kKHRoaXMpKTt9LGhhbmRsZUJsdXI6ZnVuY3Rpb24oZXZlbnQpe3RoaXMu aW5mb3JtKCdibHVyJyx7ZXZlbnQ6ZXZlbnR9KTt0aGlzLnVwZGF0ZVBsYWNlaG9s ZGVyKCk7fSxpbml0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5oYW5kbGVF dmVudHMuYmluZCh0aGlzKSx6PXUuZmlyZWZveCgpPDQ/J2tleXByZXNzJzona2V5 ZG93bic7RXZlbnQubGlzdGVuKHRoaXMudG9rZW5hcmVhLHtjbGljazp5LGtleWRv d246eX0pO0V2ZW50Lmxpc3Rlbih0aGlzLmlucHV0LCdwYXN0ZScsdGhpcy5wYXN0 ZS5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy5pbnB1dCx6LHRoaXMua2V5 ZG93bi5iaW5kKHRoaXMpKTt9LGhhbmRsZUV2ZW50czpmdW5jdGlvbihldmVudCl7 dmFyIHk9ZXZlbnQuZ2V0VGFyZ2V0KCksej15JiZ0aGlzLmdldFRva2VuRWxlbWVu dEZyb21UYXJnZXQoeSk7aWYoIXopcmV0dXJuO2lmKGV2ZW50LnR5cGUhPSdrZXlk b3duJ3x8RXZlbnQuZ2V0S2V5Q29kZShldmVudCk9PW8uUkVUVVJOKXRoaXMucHJv Y2Vzc0V2ZW50cyhldmVudCx5LHopO30scHJvY2Vzc0V2ZW50czpmdW5jdGlvbihl dmVudCx5LHope2lmKHAuYnlDbGFzcyh5LCdyZW1vdmUnKSl7dmFyIGFhPXoubmV4 dFNpYmxpbmc7YWE9YWEmJm0uc2NyeSh6Lm5leHRTaWJsaW5nLCcucmVtb3ZlJylb MF07dmFyIGJhPXRoaXMuZ2V0VG9rZW5Gcm9tRWxlbWVudCh6KTtiYT10aGlzLmFk ZFRva2VuRGF0YShiYSx5KTt0aGlzLnJlbW92ZVRva2VuKGJhKTt0aGlzLmZvY3Vz T25Ub2tlblJlbW92YWwoZXZlbnQsYWEpO2V2ZW50LmtpbGwoKTt9fSxmb2N1c09u VG9rZW5SZW1vdmFsOmZ1bmN0aW9uKGV2ZW50LHkpe24uZm9jdXMoZXZlbnQudHlw ZT09J2tleWRvd24nJiZ5fHx0aGlzLmlucHV0KTt9LGFkZFRva2VuRGF0YTpmdW5j dGlvbih5LHope3JldHVybiB5O30sa2V5ZG93bjpmdW5jdGlvbihldmVudCl7dGhp cy5pbmZvcm0oJ2tleWRvd24nLHtldmVudDpldmVudH0pO3ZhciB5PUV2ZW50Lmdl dEtleUNvZGUoZXZlbnQpLHo9dGhpcy5pbnB1dDtpZih0aGlzLmlubGluZSYmeT09 by5CQUNLU1BBQ0UmJm4uaXNFbXB0eSh6KSl7dmFyIGFhPXRoaXMuZ2V0TGFzdFRv a2VuKCk7aWYoYWEmJmFhLmlzUmVtb3ZhYmxlKCkpdGhpcy5yZW1vdmVUb2tlbihh YSk7fXRoaXMudXBkYXRlSW5wdXQoKTt9LHBhc3RlOmZ1bmN0aW9uKGV2ZW50KXt0 aGlzLmluZm9ybSgncGFzdGUnLHtldmVudDpldmVudH0pO3RoaXMudXBkYXRlSW5w dXQodHJ1ZSk7fSxmb2N1c0lucHV0OmZ1bmN0aW9uKCl7bi5mb2N1cyh0aGlzLmlu cHV0KTt9LHVwZGF0ZUlucHV0OmZ1bmN0aW9uKHkpe2lmKCF0aGlzLmlubGluZSly ZXR1cm47c2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuYWRqdXN0V2lkdGgodGhp cy5pbnB1dC52YWx1ZSk7aWYoeSl0aGlzLmlucHV0LnZhbHVlPXRoaXMuaW5wdXQu dmFsdWU7fS5iaW5kKHRoaXMpLDIwKTtxLnNldFBsYWNlaG9sZGVyVGV4dCh0aGlz LmlucHV0LCcnKTt9LHNldFBsYWNlaG9sZGVyOmZ1bmN0aW9uKHkpe3RoaXMucGxh Y2Vob2xkZXI9eTtpZih0aGlzLnN0aWNreVBsYWNlaG9sZGVyKXEuc2V0UGxhY2Vo b2xkZXJUZXh0KHRoaXMuaW5wdXQseSk7dGhpcy51cGRhdGVQbGFjZWhvbGRlcigp O30sdXBkYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5pbmxpbmV8 fHRoaXMuaW5wdXQudmFsdWUpcmV0dXJuO3ZhciB5PSF0aGlzLnRva2Vucy5sZW5n dGgsej0nJztpZih5fHx0aGlzLnN0aWNreVBsYWNlaG9sZGVyKXt0aGlzLmFkanVz dFdpZHRoKHRoaXMucGxhY2Vob2xkZXIpO3o9dGhpcy5wbGFjZWhvbGRlcjt9cS5z ZXRQbGFjZWhvbGRlclRleHQodGhpcy5pbnB1dCx6KTt9LGFkanVzdFdpZHRoOmZ1 bmN0aW9uKHkpe2lmKCF0aGlzLmlubGluZXx8IXRoaXMuX2dldElzSW5ET00oKSly ZXR1cm47aWYoIXkmJnRoaXMuc3RpY2t5UGxhY2Vob2xkZXImJnRoaXMuaW5wdXQu dmFsdWU9PT0nJyl5PXRoaXMucGxhY2Vob2xkZXI7dmFyIHo9dGhpcy5fZ2V0TWV0 cmljcygpLm1lYXN1cmUoeSksYWE9ei53aWR0aCt0aGlzLl9nZXRXaWR0aE9mZnNl dCgpKzEwO3Iuc2V0KHRoaXMuaW5wdXQsJ3dpZHRoJyxhYSsncHgnKTt9LGdldFRv a2VuOmZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLnVuaXF1ZVt5XXx8bnVsbDt9LGdl dFRva2VuczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vuc3x8W107fSxnZXRU b2tlbkVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIG0uc2NyeSh0aGlzLnRva2Vu YXJlYSwnc3Bhbi51aVRva2VuJyk7fSxnZXRUb2tlbkVsZW1lbnRGcm9tVGFyZ2V0 OmZ1bmN0aW9uKHkpe3JldHVybiBwLmJ5Q2xhc3MoeSwndWlUb2tlbicpO30sZ2V0 VG9rZW5Gcm9tRWxlbWVudDpmdW5jdGlvbih5KXtyZXR1cm4gay5nZXQoeSwnVG9r ZW4nKTt9LGdldFRva2VuVmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9r ZW5zLm1hcChmdW5jdGlvbih5KXtyZXR1cm4geS5nZXRWYWx1ZSgpO30pO30sZ2V0 Rmlyc3RUb2tlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vuc1swXXx8bnVs bDt9LGdldExhc3RUb2tlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vuc1t0 aGlzLnRva2Vucy5sZW5ndGgtMV18fG51bGw7fSxoYXNNYXhUb2tlbnM6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5tYXhUb2tlbnMmJnRoaXMubWF4VG9rZW5zPD10aGlz LnRva2Vucy5sZW5ndGg7fSxjcmVhdGVUb2tlbjpmdW5jdGlvbih5LHope3ZhciBh

YT10aGlzLmdldFRva2VuKHRoaXMuX3Rva2VuS2V5KHkpKTthYT1hYXx8bmV3IHQo eSx0aGlzLnBhcmFtTmFtZSk7eiYmYWEuc2V0RWxlbWVudCh6KTtyZXR1cm4gYWE7 fSxhZGRUb2tlbjpmdW5jdGlvbih5KXtpZih0aGlzLmhhc01heFRva2VucygpKXJl dHVybjt2YXIgej10aGlzLl90b2tlbktleSh5LmdldEluZm8oKSk7aWYoeiBpbiB0 aGlzLnVuaXF1ZSlyZXR1cm47dGhpcy51bmlxdWVbel09eTt0aGlzLnRva2Vucy5w dXNoKHkpO3RoaXMuaW5zZXJ0VG9rZW4oeSk7dGhpcy51cGRhdGVUb2tlbmFyZWEo KTt0aGlzLmluZm9ybSgnYWRkVG9rZW4nLHkpO2cuaW5mb3JtKCdGb3JtL2NoYW5n ZScse25vZGU6dGhpcy5lbGVtZW50fSk7fSxpbnNlcnRUb2tlbjpmdW5jdGlvbih5 KXtsLmFwcGVuZENvbnRlbnQodGhpcy50b2tlbmFyZWEseS5nZXRFbGVtZW50KCkp O30scmVtb3ZlVG9rZW46ZnVuY3Rpb24oeSl7aWYoIXkpcmV0dXJuO3ZhciB6PXRo aXMudG9rZW5zLmluZGV4T2YoeSk7aWYoejwwKXJldHVybjt0aGlzLnRva2Vucy5z cGxpY2UodGhpcy50b2tlbnMuaW5kZXhPZih5KSwxKTtkZWxldGUgdGhpcy51bmlx dWVbdGhpcy5fdG9rZW5LZXkoeS5nZXRJbmZvKCkpXTtsLnJlbW92ZSh5LmdldEVs ZW1lbnQoKSk7dGhpcy51cGRhdGVUb2tlbmFyZWEoKTt0aGlzLmluZm9ybSgncmVt b3ZlVG9rZW4nLHkpO2cuaW5mb3JtKCdGb3JtL2NoYW5nZScse25vZGU6dGhpcy5l bGVtZW50fSk7fSxyZW1vdmVBbGxUb2tlbnM6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0 KCk7dGhpcy5pbmZvcm0oJ3JlbW92ZUFsbFRva2VucycpO30sdXBkYXRlVG9rZW5h cmVhOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy50eXBlYWhlYWQuZ2V0Q29yZSgpLHo9 dGhpcy5nZXRUb2tlblZhbHVlcygpO2lmKHRoaXMuZXhjbHVkZUR1cGxpY2F0ZXMp e3RoaXMuX2V4Y2x1c2lvbnN8fCh0aGlzLl9leGNsdXNpb25zPXkuZ2V0RXhjbHVz aW9ucygpKTt5LnNldEV4Y2x1c2lvbnMoei5jb25jYXQodGhpcy5fZXhjbHVzaW9u cykpO315LnNldEVuYWJsZWQoIXRoaXMuaGFzTWF4VG9rZW5zKCkpO3RoaXMudXBk YXRlVG9rZW5hcmVhVmlzaWJpbGl0eSgpO3RoaXMudXBkYXRlUGxhY2Vob2xkZXIo KTt0aGlzLmFkanVzdFdpZHRoKHRoaXMucGxhY2Vob2xkZXIpO30sdXBkYXRlVG9r ZW5hcmVhVmlzaWJpbGl0eTpmdW5jdGlvbigpe2ouY29uZGl0aW9uU2hvdyh0aGlz LnRva2VuYXJlYSx0aGlzLnRva2Vucy5sZW5ndGghPT0wKTt9LF90b2tlbktleTpm dW5jdGlvbih5KXtyZXR1cm4geS51aWQrKHkuZnJlZWZvcm0/JzonOicnKTt9LF93 aWR0aE9mZnNldDpudWxsLF9nZXRXaWR0aE9mZnNldDpmdW5jdGlvbigpe2lmKHRo aXMuX3dpZHRoT2Zmc2V0PT09bnVsbCl7dmFyIHk9dGhpcy5pbnB1dC5jbGllbnRX aWR0aCx6PXIuZ2V0RmxvYXQodGhpcy5pbnB1dCwnd2lkdGgnKTtpZih5PT16KXt0 aGlzLl93aWR0aE9mZnNldD1yLmdldEZsb2F0KHRoaXMuaW5wdXQsJ3BhZGRpbmdM ZWZ0Jykrci5nZXRGbG9hdCh0aGlzLmlucHV0LCdwYWRkaW5nUmlnaHQnKTt9ZWxz ZSB0aGlzLl93aWR0aE9mZnNldD0wO31yZXR1cm4gdGhpcy5fd2lkdGhPZmZzZXQ7 fSxfbWV0cmljczpudWxsLF9nZXRNZXRyaWNzOmZ1bmN0aW9uKCl7aWYoIXRoaXMu X21ldHJpY3MpdGhpcy5fbWV0cmljcz1uZXcgcyh0aGlzLmlucHV0LHRoaXMuaW5s aW5lKTtyZXR1cm4gdGhpcy5fbWV0cmljczt9LF9nZXRJc0luRE9NOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX2lzSW5ET018fCh0aGlzLl9pc0luRE9NPW0uY29udGFp bnMoZG9jdW1lbnQuYm9keSx0aGlzLmlucHV0KSk7fX0pO2UuZXhwb3J0cz14O30p OwpfX2QoIlR5cGVhaGVhZCIsWyJhcnJheS1leHRlbnNpb25zIiwiZXZlbnQtZXh0 ZW5zaW9ucyIsIkFyYml0ZXJNaXhpbiIsIkJlaGF2aW9yc01peGluIiwiQ2xhc3Mi LCJEYXRhU3RvcmUiLCJET00iLCJQYXJlbnQiLCJSdW4iLCJjb3B5UHJvcGVydGll cyIsImdlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2FycmF5LWV4dGVuc2lv bnMnKTtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlck1peGlu JyksaD1iKCdCZWhhdmlvcnNNaXhpbicpLGk9YignQ2xhc3MnKSxqPWIoJ0RhdGFT dG9yZScpLGs9YignRE9NJyksbD1iKCdQYXJlbnQnKSxtPWIoJ1J1bicpLG49Yign Y29weVByb3BlcnRpZXMnKSxvPWIoJ2dlJyk7ZnVuY3Rpb24gcChxLHIscyx0KXt0 aGlzLmFyZ3M9e2RhdGE6cSx2aWV3OnIsY29yZTpzfTtqLnNldCh0LCdUeXBlYWhl YWQnLHRoaXMpO3RoaXMuZWxlbWVudD10O31wLmdldEluc3RhbmNlPWZ1bmN0aW9u KHEpe3ZhciByPWwuYnlDbGFzcyhxLCd1aVR5cGVhaGVhZCcpO3JldHVybiByP2ou Z2V0KHIsJ1R5cGVhaGVhZCcpOm51bGw7fTtuKHAucHJvdG90eXBlLGcsaCx7aW5p dDpmdW5jdGlvbihxKXt0aGlzLmluaXQ9YmFnb2Zob2xkaW5nO3RoaXMuZ2V0Q29y ZSgpO3RoaXMucHJveHlFdmVudHMoKTt0aGlzLmluaXRCZWhhdmlvcnMocXx8W10p O3RoaXMuaW5mb3JtKCdpbml0Jyx0aGlzKTt0aGlzLmRhdGEuYm9vdHN0cmFwKCk7 dGhpcy5jb3JlLmZvY3VzKCk7fSxnZXREYXRhOmZ1bmN0aW9uKCl7aWYoIXRoaXMu ZGF0YSl7dmFyIHE9dGhpcy5hcmdzLmRhdGE7dGhpcy5kYXRhPXE7dGhpcy5kYXRh LmluaXQoKTt9cmV0dXJuIHRoaXMuZGF0YTt9LGdldFZpZXc6ZnVuY3Rpb24oKXtp ZighdGhpcy52aWV3KXt2YXIgcT10aGlzLmFyZ3MudmlldyxyPW8ocS5ub2RlX2lk KTtpZighcil7cj1rLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOid1aVR5cGVhaGVh ZFZpZXcnfSk7ay5hcHBlbmRDb250ZW50KHRoaXMuZWxlbWVudCxyKTt9aWYodHlw ZW9mIHEuY3Rvcj09PSdzdHJpbmcnKXt0aGlzLnZpZXc9bmV3IHdpbmRvd1txLmN0

b3JdKHIscS5vcHRpb25zfHx7fSk7fWVsc2UgdGhpcy52aWV3PW5ldyBxLmN0b3Io cixxLm9wdGlvbnN8fHt9KTt0aGlzLnZpZXcuaW5pdCgpO3RoaXMudmlldy5zZXRU eXBlYWhlYWQodGhpcy5lbGVtZW50KTt9cmV0dXJuIHRoaXMudmlldzt9LGdldENv cmU6ZnVuY3Rpb24oKXtpZighdGhpcy5jb3JlKXt2YXIgcT10aGlzLmFyZ3MuY29y ZTtpZih0eXBlb2YgcS5jdG9yPT09J3N0cmluZycpe3RoaXMuY29yZT1uZXcgd2lu ZG93W3EuY3Rvcl0ocS5vcHRpb25zfHx7fSk7fWVsc2UgdGhpcy5jb3JlPW5ldyBx LmN0b3IocS5vcHRpb25zfHx7fSk7dGhpcy5jb3JlLmluaXQodGhpcy5nZXREYXRh KCksdGhpcy5nZXRWaWV3KCksdGhpcy5nZXRFbGVtZW50KCkpO31yZXR1cm4gdGhp cy5jb3JlO30sZ2V0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1l bnQ7fSxzd2FwRGF0YTpmdW5jdGlvbihxKXt2YXIgcj10aGlzLmNvcmU7dGhpcy5k YXRhPXRoaXMuYXJncy5kYXRhPXE7cS5pbml0KCk7aWYocil7ci5kYXRhPXE7ci5p bml0RGF0YSgpO3IucmVzZXQoKTt9cS5ib290c3RyYXAoKTtyZXR1cm4gcTt9LHBy b3h5RXZlbnRzOmZ1bmN0aW9uKCl7W3RoaXMuZGF0YSx0aGlzLnZpZXcsdGhpcy5j b3JlXS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3Euc3Vic2NyaWJlKHEuZXZlbnRzLHRo aXMuaW5mb3JtLmJpbmQodGhpcykpO30sdGhpcyk7fSxpbml0QmVoYXZpb3JzOmZ1 bmN0aW9uKHEpe3EuZm9yRWFjaChmdW5jdGlvbihyKXtpZih0eXBlb2Ygcj09PSdz dHJpbmcnKXtpZihhLlR5cGVhaGVhZEJlaGF2aW9ycyYmYS5UeXBlYWhlYWRCZWhh dmlvcnNbcl0pe2EuVHlwZWFoZWFkQmVoYXZpb3JzW3JdKHRoaXMpO31lbHNlIG0u b25Mb2FkKGZ1bmN0aW9uKCl7aWYoYS5UeXBlYWhlYWRCZWhhdmlvcnMpKGEuVHlw ZWFoZWFkQmVoYXZpb3JzW3JdfHxiYWdvZmhvbGRpbmcpKHRoaXMpO30uYmluZCh0 aGlzKSk7fWVsc2UgdGhpcy5lbmFibGVCZWhhdmlvcihyKTt9LHRoaXMpO319KTtw LmluaXROb3c9ZnVuY3Rpb24ocSxyLHMpe2lmKHMpcy5pbml0KHEpO3EuaW5pdChy KTt9O3AuaW5pdD1mdW5jdGlvbihxLHIscyx0KXtpZighay5pc05vZGVPZlR5cGUo cSxbJ2lucHV0JywndGV4dGFyZWEnXSkpcT1rLnNjcnkocSwnaW5wdXQnKVswXXx8 ay5zY3J5KHEsJ3RleHRhcmVhJylbMF07dmFyIHU9ZmFsc2U7dHJ5e3U9ZG9jdW1l bnQuYWN0aXZlRWxlbWVudD09PXE7fWNhdGNoKHYpe31pZih1KXtwLmluaXROb3co cixzLHQpO31lbHNlIHZhciB3PUV2ZW50Lmxpc3RlbihxLCdmb2N1cycsZnVuY3Rp b24oKXtwLmluaXROb3cocixzLHQpO3cucmVtb3ZlKCk7fSk7fTtlLmV4cG9ydHM9 cDt9KTsKX19kKCJUeXBlYWhlYWRDb3JlIixbImV2ZW50LWV4dGVuc2lvbnMiLCJB cmJpdGVyIiwiQXJiaXRlck1peGluIiwiQ2xhc3MiLCJDU1MiLCJET00iLCJJbnB1 dCIsIklucHV0U2VsZWN0aW9uIiwiS2V5cyIsIlVzZXJBZ2VudCIsImJpbmQiLCJj b3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1l eHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlcicpLGg9YignQXJiaXRlck1peGlu JyksaT1iKCdDbGFzcycpLGo9YignQ1NTJyksaz1iKCdET00nKSxsPWIoJ0lucHV0 JyksbT1iKCdJbnB1dFNlbGVjdGlvbicpLG49YignS2V5cycpLG89YignVXNlckFn ZW50JykscD1iKCdiaW5kJykscT1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9u IHIocyl7cSh0aGlzLHMpO31xKHIucHJvdG90eXBlLGgse2V2ZW50czpbJ2JsdXIn LCdmb2N1cycsJ2NsaWNrJywndW5zZWxlY3QnLCdsb2FkaW5nJ10sa2VlcEZvY3Vz ZWQ6dHJ1ZSxyZXNldE9uU2VsZWN0OmZhbHNlLHJlc2V0T25LZXl1cDp0cnVlLHNl dFZhbHVlT25TZWxlY3Q6ZmFsc2UscXVlcnlUaW1lb3V0OjI1MCxwcmV2ZW50Rm9j dXNDaGFuZ2VPblRhYjpmYWxzZSxpbml0OmZ1bmN0aW9uKHMsdCx1KXt0aGlzLmlu aXQ9YmFnb2Zob2xkaW5nO3RoaXMuZGF0YT1zO3RoaXMudmlldz10O3RoaXMucm9v dD11O3RoaXMuaW5pdElucHV0KCk7dGhpcy5pbnB1dFdyYXA9ay5maW5kKHUsJ2Rp di53cmFwJyk7dGhpcy5oaWRkZW5JbnB1dD1rLmZpbmQodSwnaW5wdXQuaGlkZGVu SW5wdXQnKTt0aGlzLnZhbHVlPScnO3RoaXMubmV4dFF1ZXJ5PW51bGw7dGhpcy5z ZWxlY3RlZFRleHQ9bnVsbDtpZih0aGlzLnNldFZhbHVlT25TZWxlY3QmJmouaGFz Q2xhc3ModGhpcy5pbnB1dFdyYXAsJ3NlbGVjdGVkJykpdGhpcy5zZWxlY3RlZFRl eHQ9dGhpcy5nZXRWYWx1ZSgpO3RoaXMuaW5pdFZpZXcoKTt0aGlzLmluaXREYXRh KCk7dGhpcy5pbml0RXZlbnRzKCk7dGhpcy5pbml0VG9nZ2xlKCk7dGhpcy5fZXhj bHVzaW9ucz1bXTt9LGluaXRJbnB1dDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudD1r LmZpbmQodGhpcy5yb290LCcudGV4dElucHV0Jyk7dmFyIHM9ay5zY3J5KHRoaXMu ZWxlbWVudCwnaW5wdXQnKVswXTtpZihzKXRoaXMuZWxlbWVudD1zO30saW5pdFZp ZXc6ZnVuY3Rpb24oKXt0aGlzLnZpZXcuc3Vic2NyaWJlKCdoaWdobGlnaHQnLGZ1 bmN0aW9uKHMsdCl7dGhpcy5lbGVtZW50LmZvY3VzKCk7dGhpcy5lbGVtZW50LnNl dEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywodC5pbmRleCE9PS0x KT9rLmdldElEKHQuZWxlbWVudCk6JycpO30uYmluZCh0aGlzKSk7dGhpcy52aWV3 LnN1YnNjcmliZSgnc2VsZWN0JyxmdW5jdGlvbihzLHQpe3RoaXMuc2VsZWN0KHQu c2VsZWN0ZWQpO30uYmluZCh0aGlzKSk7dGhpcy52aWV3LnN1YnNjcmliZSgnYWZ0 ZXJTZWxlY3QnLGZ1bmN0aW9uKCl7dGhpcy5hZnRlclNlbGVjdCgpO30uYmluZCh0 aGlzKSk7fSxpbml0RGF0YTpmdW5jdGlvbigpe3RoaXMuZGF0YS5zdWJzY3JpYmUo

J3Jlc3BvbmQnLGZ1bmN0aW9uKHMsdCl7aWYodC5mb3JjZURpc3BsYXl8fHQudmFs dWU9PXRoaXMuZ2V0VmFsdWUoKSYmIXRoaXMuZWxlbWVudC5kaXNhYmxlZCl0aGlz LnZpZXcucmVuZGVyKHQudmFsdWUsdC5yZXN1bHRzLHQuaXNBc3luYyk7fS5iaW5k KHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdhY3Rpdml0eScsZnVuY3Rpb24o cyx0KXt0aGlzLmZldGNoaW5nPXQuYWN0aXZpdHk7aWYoIXRoaXMuZmV0Y2hpbmcp dGhpcy5uZXh0UXVlcnkmJnRoaXMucGVyZm9ybVF1ZXJ5KCk7aWYodGhpcy5sb2Fk aW5nIT10aGlzLmZldGNoaW5nKXt0aGlzLmxvYWRpbmc9dGhpcy5mZXRjaGluZzt0 aGlzLmluZm9ybSgnbG9hZGluZycse2xvYWRpbmc6dGhpcy5sb2FkaW5nfSk7fX0u YmluZCh0aGlzKSk7fSxpbml0RXZlbnRzOmZ1bmN0aW9uKCl7RXZlbnQubGlzdGVu KHRoaXMudmlldy5nZXRFbGVtZW50KCkse21vdXNldXA6dGhpcy52aWV3TW91c2V1 cC5iaW5kKHRoaXMpLG1vdXNlZG93bjp0aGlzLnZpZXdNb3VzZWRvd24uYmluZCh0 aGlzKX0pO3ZhciBzPXtibHVyOnAodGhpcywnYmx1cicpLGZvY3VzOnAodGhpcywn Zm9jdXMnKSxjbGljazpwKHRoaXMsJ2NsaWNrJyksa2V5dXA6cCh0aGlzLCdrZXl1 cCcpLGtleWRvd246cCh0aGlzLCdrZXlkb3duJyl9O2lmKG8uZmlyZWZveCgpKXMu dGV4dD1zLmtleXVwO2lmKG8uZmlyZWZveCgpPDQpe3Mua2V5cHJlc3M9cy5rZXlk b3duO2RlbGV0ZSBzLmtleWRvd247fUV2ZW50Lmxpc3Rlbih0aGlzLmVsZW1lbnQs cyk7RXZlbnQubGlzdGVuKHRoaXMuZWxlbWVudCwna2V5cHJlc3MnLHAodGhpcywn a2V5cHJlc3MnKSk7fSxpbml0VG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5zdWJzY3Jp YmUoJ2JsdXInLHRoaXMudmlldy5oaWRlLmJpbmQodGhpcy52aWV3KSk7dGhpcy5z dWJzY3JpYmUoJ2ZvY3VzJyx0aGlzLnZpZXcuc2hvdy5iaW5kKHRoaXMudmlldykp O30sdmlld01vdXNlZG93bjpmdW5jdGlvbigpe3RoaXMuc2VsZWN0aW5nPXRydWU7 fSx2aWV3TW91c2V1cDpmdW5jdGlvbigpe3RoaXMuc2VsZWN0aW5nPWZhbHNlO30s Ymx1cjpmdW5jdGlvbigpe2lmKHRoaXMuc2VsZWN0aW5nKXt0aGlzLnNlbGVjdGlu Zz1mYWxzZTtyZXR1cm47fXRoaXMuaW5mb3JtKCdibHVyJyk7fSxjbGljazpmdW5j dGlvbigpe3ZhciBzPW0uZ2V0KHRoaXMuZWxlbWVudCk7aWYocy5zdGFydD09cy5l bmQpdGhpcy5lbGVtZW50LnNlbGVjdCgpO3RoaXMuaW5mb3JtKCdjbGljaycpO30s Zm9jdXM6ZnVuY3Rpb24oKXt0aGlzLmNoZWNrVmFsdWUoKTt0aGlzLmluZm9ybSgn Zm9jdXMnKTt9LGtleXVwOmZ1bmN0aW9uKCl7aWYodGhpcy5yZXNldE9uS2V5dXAm JiF0aGlzLmdldFZhbHVlKCkpdGhpcy52aWV3LnJlc2V0KCk7dGhpcy5jaGVja1Zh bHVlKCk7fSxrZXlkb3duOmZ1bmN0aW9uKGV2ZW50KXtpZighdGhpcy52aWV3Lmlz VmlzaWJsZSgpfHx0aGlzLnZpZXcuaXNFbXB0eSgpKXt0aGlzLmNoZWNrVmFsdWUu YmluZCh0aGlzKS5kZWZlcigpO3JldHVybjt9c3dpdGNoKEV2ZW50LmdldEtleUNv ZGUoZXZlbnQpKXtjYXNlIG4uVEFCOnRoaXMuaGFuZGxlVGFiKGV2ZW50KTtyZXR1 cm47Y2FzZSBuLlVQOnRoaXMudmlldy5wcmV2KCk7YnJlYWs7Y2FzZSBuLkRPV046 dGhpcy52aWV3Lm5leHQoKTticmVhaztjYXNlIG4uRVNDOnRoaXMudmlldy5yZXNl dCgpO2JyZWFrO2RlZmF1bHQ6dGhpcy5jaGVja1ZhbHVlLmJpbmQodGhpcykuZGVm ZXIoKTtyZXR1cm47fWV2ZW50LmtpbGwoKTt9LGtleXByZXNzOmZ1bmN0aW9uKGV2 ZW50KXtpZih0aGlzLnZpZXcuZ2V0U2VsZWN0aW9uKCkmJkV2ZW50LmdldEtleUNv ZGUoZXZlbnQpPT1uLlJFVFVSTil7dGhpcy52aWV3LnNlbGVjdCgpO2V2ZW50Lmtp bGwoKTt9fSxoYW5kbGVUYWI6ZnVuY3Rpb24oZXZlbnQpe2lmKHRoaXMucHJldmVu dEZvY3VzQ2hhbmdlT25UYWIpaWYodGhpcy52aWV3LmdldFNlbGVjdGlvbigpKXtl dmVudC5raWxsKCk7fWVsc2UgZXZlbnQucHJldmVudERlZmF1bHQoKTt0aGlzLnZp ZXcuc2VsZWN0KCk7fSxzZWxlY3Q6ZnVuY3Rpb24ocyl7aWYocyYmdGhpcy5zZXRW YWx1ZU9uU2VsZWN0KXt0aGlzLnNldFZhbHVlKHMudGV4dCk7dGhpcy5zZXRIaWRk ZW5WYWx1ZShzLnVpZCk7dGhpcy5zZWxlY3RlZFRleHQ9cy50ZXh0O2ouYWRkQ2xh c3ModGhpcy5pbnB1dFdyYXAsJ3NlbGVjdGVkJyk7fX0sYWZ0ZXJTZWxlY3Q6ZnVu Y3Rpb24oKXt0aGlzLmtlZXBGb2N1c2VkP3RoaXMuZWxlbWVudC5mb2N1cygpOnRo aXMuZWxlbWVudC5ibHVyKCk7dGhpcy5yZXNldE9uU2VsZWN0P3RoaXMucmVzZXQo KTp0aGlzLnZpZXcucmVzZXQoKTt9LHVuc2VsZWN0OmZ1bmN0aW9uKCl7aWYodGhp cy5zZXRWYWx1ZU9uU2VsZWN0KXt0aGlzLnNlbGVjdGVkVGV4dD1udWxsO2oucmVt b3ZlQ2xhc3ModGhpcy5pbnB1dFdyYXAsJ3NlbGVjdGVkJyk7fXRoaXMuc2V0SGlk ZGVuVmFsdWUoKTt0aGlzLmluZm9ybSgndW5zZWxlY3QnLHRoaXMpO30sc2V0RW5h YmxlZDpmdW5jdGlvbihzKXt2YXIgdD1zPT09ZmFsc2U7dGhpcy5lbGVtZW50LmRp c2FibGVkPXQ7ai5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3QsJ3VpVHlwZWFoZWFk RGlzYWJsZWQnLHQpO30scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnVuc2VsZWN0KCk7 dGhpcy5zZXRWYWx1ZSgpOyF0aGlzLmtlZXBGb2N1c2VkJiZsLnJlc2V0KHRoaXMu ZWxlbWVudCk7dGhpcy52aWV3LnJlc2V0KCk7dGhpcy5pbmZvcm0oJ3Jlc2V0Jyk7 fSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudDt9LHNl dEV4Y2x1c2lvbnM6ZnVuY3Rpb24ocyl7dGhpcy5fZXhjbHVzaW9ucz1zO30sZ2V0 RXhjbHVzaW9uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9leGNsdXNpb25zO30s

c2V0VmFsdWU6ZnVuY3Rpb24ocyl7dGhpcy52YWx1ZT10aGlzLm5leHRRdWVyeT1z fHwnJztsLnNldFZhbHVlKHRoaXMuZWxlbWVudCx0aGlzLnZhbHVlKTt9LHNldEhp ZGRlblZhbHVlOmZ1bmN0aW9uKHMpe3RoaXMuaGlkZGVuSW5wdXQudmFsdWU9KHN8 fHM9PT0wKT9zOicnO2cuaW5mb3JtKCdGb3JtL2NoYW5nZScse25vZGU6dGhpcy5o aWRkZW5JbnB1dH0pO30sZ2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbC5nZXRW YWx1ZSh0aGlzLmVsZW1lbnQpO30sZ2V0SGlkZGVuVmFsdWU6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5oaWRkZW5JbnB1dC52YWx1ZXx8Jyc7fSxjaGVja1ZhbHVlOmZ1 bmN0aW9uKCl7dmFyIHM9dGhpcy5nZXRWYWx1ZSgpO2lmKHM9PXRoaXMudmFsdWUp cmV0dXJuO2lmKHRoaXMuc2VsZWN0ZWRUZXh0JiZ0aGlzLnNlbGVjdGVkVGV4dCE9 cyl0aGlzLnVuc2VsZWN0KCk7dmFyIHQ9RGF0ZS5ub3coKSx1PXQtdGhpcy50aW1l O3RoaXMudGltZT10O3RoaXMudmFsdWU9dGhpcy5uZXh0UXVlcnk9czt0aGlzLnBl cmZvcm1RdWVyeSh1KTt9LHBlcmZvcm1RdWVyeTpmdW5jdGlvbihzKXtpZih0aGlz LnNlbGVjdGVkVGV4dClyZXR1cm47cz1zfHwwO2lmKHRoaXMuZmV0Y2hpbmcmJnM8 dGhpcy5xdWVyeVRpbWVvdXQpe3RoaXMuZGF0YS5xdWVyeSh0aGlzLm5leHRRdWVy eSx0cnVlLHRoaXMuX2V4Y2x1c2lvbnMpO31lbHNle3RoaXMuZGF0YS5xdWVyeSh0 aGlzLm5leHRRdWVyeSxmYWxzZSx0aGlzLl9leGNsdXNpb25zKTt0aGlzLm5leHRR dWVyeT1udWxsO319fSk7ZS5leHBvcnRzPXI7fSk7Cl9fZCgiVW50cnVzdGVkTGlu ayIsWyJET00iLCJldmVudC1leHRlbnNpb25zIiwiVVJJIiwiVXNlckFnZW50Iiwi Y29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign RE9NJyksaD1iKCdldmVudC1leHRlbnNpb25zJyksaT1iKCdVUkknKSxqPWIoJ1Vz ZXJBZ2VudCcpLGs9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBsKG0sbixv LHApe3RoaXMuZG9tPW07dGhpcy51cmw9bS5ocmVmO3RoaXMuaGFzaD1uO3RoaXMu ZnVuY19nZXRfcGFyYW1zPXB8fGZ1bmN0aW9uKCl7cmV0dXJuIHt9O307RXZlbnQu bGlzdGVuKHRoaXMuZG9tLCdjbGljaycsdGhpcy5vbmNsaWNrLmJpbmQodGhpcykp O0V2ZW50Lmxpc3Rlbih0aGlzLmRvbSwnbW91c2Vkb3duJyx0aGlzLm9ubW91c2Vk b3duLmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLmRvbSwnbW91c2V1cCcs dGhpcy5vbm1vdXNldXAuYmluZCh0aGlzKSk7RXZlbnQubGlzdGVuKHRoaXMuZG9t LCdtb3VzZW91dCcsdGhpcy5vbm1vdXNlb3V0LmJpbmQodGhpcykpO3RoaXMub25t b3VzZWRvd24oaC4kRShvKSk7fWwuYm9vdHN0cmFwPWZ1bmN0aW9uKG0sbixvLHAp e2lmKG0uX191bnRydXN0ZWQpcmV0dXJuO20uX191bnRydXN0ZWQ9dHJ1ZTtuZXcg bChtLG4sbyxwKTt9O2wucHJvdG90eXBlLmdldFJld3JpdHRlblVSST1mdW5jdGlv bigpe3ZhciBtPWsoe3U6dGhpcy51cmwsaDp0aGlzLmhhc2h9LHRoaXMuZnVuY19n ZXRfcGFyYW1zKHRoaXMuZG9tKSksbj1uZXcgaSgnL2wucGhwJyk7cmV0dXJuIG4u c2V0UXVlcnlEYXRhKG0pLnNldFN1YmRvbWFpbignd3d3Jykuc2V0UHJvdG9jb2wo J2h0dHAnKTt9O2wucHJvdG90eXBlLm9uY2xpY2s9ZnVuY3Rpb24oKXsoZnVuY3Rp b24oKXt0aGlzLnNldEhyZWYodGhpcy51cmwpO30pLmJpbmQodGhpcykuZGVmZXIo MTAwKTt0aGlzLnNldEhyZWYodGhpcy5nZXRSZXdyaXR0ZW5VUkkoKSk7fTtsLnBy b3RvdHlwZS5vbm1vdXNlZG93bj1mdW5jdGlvbihtKXtpZihtLmJ1dHRvbj09Mil0 aGlzLnNldEhyZWYodGhpcy5nZXRSZXdyaXR0ZW5VUkkoKSk7fTtsLnByb3RvdHlw ZS5vbm1vdXNldXA9ZnVuY3Rpb24oKXt0aGlzLnNldEhyZWYodGhpcy5nZXRSZXdy aXR0ZW5VUkkoKSk7fTtsLnByb3RvdHlwZS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCl7 dGhpcy5zZXRIcmVmKHRoaXMudXJsKTt9O2wucHJvdG90eXBlLnNldEhyZWY9ZnVu Y3Rpb24obSl7aWYoai5pZSgpPDkpe3ZhciBuPWcuY3JlYXRlKCdzcGFuJyk7Zy5h cHBlbmRDb250ZW50KHRoaXMuZG9tLG4pO3RoaXMuZG9tLmhyZWY9bTtnLnJlbW92 ZShuKTt9ZWxzZSB0aGlzLmRvbS5ocmVmPW07fTtlLmV4cG9ydHM9bDt9KTsKX19k KCJVc2VyQWN0aXZpdHkiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJD bGlja1JlZlV0aWxzIiwiY29sbGVjdERhdGFBdHRyaWJ1dGVzIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJp dGVyJyksaD1iKCdDbGlja1JlZlV0aWxzJyksaT1iKCdjb2xsZWN0RGF0YUF0dHJp YnV0ZXMnKSxqPTUwMDAsaz01MDAsbD1EYXRlLm5vdygpLG09bCxuPXtzdWJzY3Jp YmVPbmNlOmZ1bmN0aW9uKHApe3ZhciBxPW4uc3Vic2NyaWJlKGZ1bmN0aW9uKCl7 bi51bnN1YnNjcmliZShxKTtwKCk7fSk7fSxzdWJzY3JpYmU6ZnVuY3Rpb24ocCl7 cmV0dXJuIGcuc3Vic2NyaWJlKCd1c2VyYWN0aXZpdHkvYWN0aXZpdHknLHApO30s dW5zdWJzY3JpYmU6ZnVuY3Rpb24ocCl7cC51bnN1YnNjcmliZSgpO30saXNBY3Rp dmU6ZnVuY3Rpb24ocCl7cmV0dXJuIChuZXcgRGF0ZSgpLWw8KHB8fG4uREVGQVVM VF9JRExFX01TKSk7fSxnZXRMYXN0SW5mb3JtVGltZTpmdW5jdGlvbigpe3JldHVy biBtO319O2Z1bmN0aW9uIG8oZXZlbnQpe2w9RGF0ZS5ub3coKTt2YXIgcD1sLW07 aWYocD5rKXttPWw7Zy5pbmZvcm0oJ3VzZXJhY3Rpdml0eS9hY3Rpdml0eScse2V2 ZW50OmV2ZW50LGlkbGVuZXNzOnB9KTt9fUV2ZW50Lmxpc3Rlbih3aW5kb3csJ3Nj cm9sbCcsbyk7RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7

RE9NTW91c2VTY3JvbGw6byxtb3VzZXdoZWVsOm8sa2V5ZG93bjpvLG1vdXNlb3Zl cjpvLGNsaWNrOm99KTtlLmV4cG9ydHM9bjt9KTsKX19kKCJVSUludGVudGlvbmFs U3RyZWFtTWVzc2FnZSIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXtT RVRfQVVUT19JTlNFUlQ6J1VJSW50ZW50aW9uYWxTdHJlYW0vc2V0QXV0b0luc2Vy dCcsVVBEQVRFX1NUUkVBTTonVUlJbnRlbnRpb25hbFN0cmVhbVJlZnJlc2gvdXBk YXRlU3RyZWFtJyxSRUZSRVNIX1NUUkVBTTonVUlJbnRlbnRpb25hbFN0cmVhbVJl ZnJlc2gvcmVmcmVzaFN0cmVhbScsVVBEQVRFX0FVVE9SRUZSRVNIX0NPTkZJRzon VUlJbnRlbnRpb25hbFN0cmVhbS91cGRhdGVBdXRvUmVmcmVzaENvbmZpZycsVVBE QVRFX0hUTUxfQ09OVEVOVDonVUlJbnRlbnRpb25hbFN0cmVhbS91cGRhdGVIdG1s Q29udGVudCcsVVBEQVRFX0xBU1RfUkVGUkVTSF9USU1FOidVSUludGVudGlvbmFs U3RyZWFtL3VwZGF0ZUxhc3RSZWZyZXNoVGltZScsSU5TRVJUX1NUT1JJRVM6J1VJ SW50ZW50aW9uYWxTdHJlYW0vdXBkYXRlTGFzdFJlZnJlc2hUaW1lJyxVTkxPQUQ6 J1VJSW50ZW50aW9uYWxTdHJlYW0vdW5sb2FkJ307ZS5leHBvcnRzPWc7fSk7Cl9f ZCgiY29sbGVjdFN1YnRyZWVEYXRhIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 ZnVuY3Rpb24gZyhpLGosayxsLG0pe2lmKGkub2Zmc2V0V2lkdGg9PT0wJiZpLm9m ZnNldEhlaWdodD09PTApcmV0dXJuIG07dmFyIG49e307aWYoaS5nZXRBdHRyaWJ1 dGUpZm9yKHI9MDtyPGoubGVuZ3RoO3IrKyl7dD1qW3JdO3ZhciBvPWkuZ2V0QXR0 cmlidXRlKGtbdF0pO2lmKG8pe25bdF09e307dmFyIHA9SlNPTi5wYXJzZShvKTtm b3IodmFyIHEgaW4gbClpZihwW3FdIT09dW5kZWZpbmVkKXtuW3RdW3FdPXRydWU7 aWYobVt0XT09PXVuZGVmaW5lZCltW3RdPXt9O2lmKG1bdF1bcV09PT11bmRlZmlu ZWQpbVt0XVtxXT1bXTtpZihsW3FdLmxlbmd0aD4wKW1bdF1bcV0ucHVzaChsW3Fd KTttW3RdW3FdLnB1c2goJygnK3BbcV0pO319fWZvcih2YXIgcj0wO3I8aS5jaGls ZE5vZGVzLmxlbmd0aDtyKyspe3ZhciBzPWkuY2hpbGROb2Rlc1tyXTtnKHMsaixr LGwsbSk7fWZvcih2YXIgdCBpbiBuKWZvcih2YXIgdSBpbiBuW3RdKXt2YXIgdj1t W3RdW3VdW21bdF1bdV0ubGVuZ3RoLTFdO2lmKHYubGVuZ3RoPjAmJnYuY2hhckF0 KDApPT0nKCcpe21bdF1bdV1bbVt0XVt1XS5sZW5ndGgtMV09di5zdWJzdHIoMSk7 fWVsc2UgbVt0XVt1XS5wdXNoKCcpJyk7fXJldHVybiBtO31mdW5jdGlvbiBoKGks ail7dmFyIGs9e307Zm9yKHZhciBsPTA7bDxqLmxlbmd0aDsrK2wpa1tqW2xdXT0n ZGF0YS0nK2pbbF07dmFyIG09e3RuOiIiLCJ0bi1kZWJ1ZyI6IiwifSxuPXt9O2co aSxqLGssbSxuKTtmb3IodmFyIG8gaW4gbilmb3IodmFyIHAgaW4gbltvXSluW29d W3BdPW5bb11bcF0uam9pbignJyk7cmV0dXJuIG47fWUuZXhwb3J0cz1oO30pOwpf X2QoIlZpZXdwb3J0VHJhY2tpbmciLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0 ZXIiLCJET00iLCJOYXZpZ2F0aW9uTWVzc2FnZSIsIlJ1biIsIlN0eWxlIiwiVUlJ bnRlbnRpb25hbFN0cmVhbU1lc3NhZ2UiLCJWZWN0b3IiLCIkIiwiY2xpY2tSZWZB Y3Rpb24iLCJjb2xsZWN0U3VidHJlZURhdGEiLCJjb3B5UHJvcGVydGllcyIsImRl Ym91bmNlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lv bnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdET00nKSxpPWIoJ05hdmlnYXRp b25NZXNzYWdlJyksaj1iKCdSdW4nKSxrPWIoJ1N0eWxlJyksbD1iKCdVSUludGVu dGlvbmFsU3RyZWFtTWVzc2FnZScpLG09YignVmVjdG9yJyksbj1iKCckJyksbz1i KCdjbGlja1JlZkFjdGlvbicpLHA9YignY29sbGVjdFN1YnRyZWVEYXRhJykscT1i KCdjb3B5UHJvcGVydGllcycpLHI9YignZGVib3VuY2UnKSxzPSd2cHYnO2Z1bmN0 aW9uIHQoKXt9cSh0LnByb3RvdHlwZSx7aW5pdDpmdW5jdGlvbih1KXtxKHRoaXMs e3JlYWRTdG9yeUlEczp7fSxtaW5TaXplVG9CZVZpc2libGU6MjAwLGxpc3RlbmVy czpbXSxhcmJpdGVyU3Vic2NyaXB0aW9uczpbXX0pO3RoaXMuZ2V0RGF0YUZyb21D b25maWcodSk7dGhpcy5maXJlVGltZXIoKTt2YXIgdj1yKHRoaXMuZmlyZVRpbWVy LHRoaXMuZ2V0VGltZW91dCgpLHRoaXMpO3RoaXMubGlzdGVuZXJzLnB1c2goRXZl bnQubGlzdGVuKHdpbmRvdywnc2Nyb2xsJyx2KSk7dGhpcy5saXN0ZW5lcnMucHVz aChFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLHYpKTt0aGlzLmFyYml0ZXJT dWJzY3JpcHRpb25zLnB1c2goZy5zdWJzY3JpYmUobC5VUERBVEVfSFRNTF9DT05U RU5ULHYpKTtqLm9uTGVhdmUodGhpcy5jbGVhbnVwLmJpbmQodGhpcykpO3RoaXMu YXJiaXRlclN1YnNjcmlwdGlvbnMucHVzaChnLnN1YnNjcmliZShpLk5BVklHQVRJ T05fQkVHSU4sdGhpcy5jbGVhbnVwLmJpbmQodGhpcykpKTt9LGNsZWFudXA6ZnVu Y3Rpb24oKXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKHUpe3UucmVt b3ZlKCk7fSk7dGhpcy5saXN0ZW5lcnM9W107dGhpcy5hcmJpdGVyU3Vic2NyaXB0 aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHUpe3UudW5zdWJzY3JpYmUoKTt9KTt0aGlz LmFyYml0ZXJTdWJzY3JpcHRpb25zPVtdO30sZmlyZVRpbWVyOmZ1bmN0aW9uKCl7 dGhpcy5nZXRTdG9yaWVzSW5WaWV3KCkuZm9yRWFjaCh0aGlzLm1hcmtTdG9yeVJl YWQuYmluZCh0aGlzKSk7fSxnZXRTdG9yaWVzSW5WaWV3OmZ1bmN0aW9uKCl7dmFy IHU9dGhpcy5nZXRBbGxTdG9yaWVzKCksdj1bXSx3PWZhbHNlO2Zvcih2YXIgeD0w O3g8dS5sZW5ndGg7eCsrKXt2YXIgeT11W3hdLHo9dGhpcy5nZXRTdG9yeUlEKHkp

O2lmKHRoaXMuaGFzQmVlblZpc2libGUoeikpY29udGludWU7aWYodGhpcy5pc1Zp c2libGUoeSkpe3YucHVzaCh5KTt3PXRydWU7fWVsc2UgaWYodylicmVhazt9cmV0 dXJuIHY7fSxoYXNCZWVuVmlzaWJsZTpmdW5jdGlvbih1KXtyZXR1cm4gdSBpbiB0 aGlzLnJlYWRTdG9yeUlEczt9LGlzVmlzaWJsZTpmdW5jdGlvbih1KXt2YXIgdj1t LmdldFZpZXdwb3J0RGltZW5zaW9ucygpLHc9bS5nZXRFbGVtZW50UG9zaXRpb24o dSwndmlld3BvcnQnKSx4PW0uZ2V0RWxlbWVudERpbWVuc2lvbnModSkseT1NYXRo Lm1heCh3LnksMCksej1NYXRoLm1pbih3LnkreC55LHYueSksYWE9TWF0aC5taW4o eC55LHRoaXMubWluU2l6ZVRvQmVWaXNpYmxlKTtyZXR1cm4gKHoteSk+PWFhO30s bWFya1N0b3J5UmVhZDpmdW5jdGlvbih1KXt2YXIgdj10aGlzLmdldFN0b3J5SUQo dSk7aWYoIXYpcmV0dXJuO2lmKCF0aGlzLmhhc0JlZW5WaXNpYmxlKHYpKXt0aGlz LnJlYWRTdG9yeUlEc1t2XT10cnVlO3ZhciB3PXRoaXMuZ2V0RGF0YVRvTG9nKHUp O28ocyx1LG51bGwsJ0ZPUkNFJyx3KTt9fX0pO2UuZXhwb3J0cz10O30pOwpfX2Qo IlhIUFRlbXBsYXRlIixbImV2ZW50LWV4dGVuc2lvbnMiLCJEYXRhU3RvcmUiLCJE T00iLCJIVE1MIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0RhdGFTdG9yZScpLGg9 YignRE9NJyksaT1iKCdIVE1MJyksaj1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0 aW9uIGsobSl7dGhpcy5fbW9kZWw9bTt9aihrLnByb3RvdHlwZSx7cmVuZGVyOmZ1 bmN0aW9uKCl7aWYoaS5pc0hUTUwodGhpcy5fbW9kZWwpKXRoaXMuX21vZGVsPWgu c2V0Q29udGVudChkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdGhp cy5fbW9kZWwpWzBdO3JldHVybiB0aGlzLl9tb2RlbC5jbG9uZU5vZGUodHJ1ZSk7 fSxidWlsZDpmdW5jdGlvbigpe3JldHVybiBuZXcgbCh0aGlzLnJlbmRlcigpKTt9 fSk7aihrLHtnZXROb2RlOmZ1bmN0aW9uKG0sbil7cmV0dXJuIGsuZ2V0Tm9kZXMo bSlbbl07fSxnZXROb2RlczpmdW5jdGlvbihtKXt2YXIgbj1nLmdldChtLCdYSFBU ZW1wbGF0ZTpub2RlcycpO2lmKCFuKXtuPXt9O3ZhciBvPWguc2NyeShtLCdbZGF0 YS1qc2lkXScpO28ucHVzaChtKTt2YXIgcD1vLmxlbmd0aDt3aGlsZShwLS0pe3Zh ciBxPW9bcF07bltxLmdldEF0dHJpYnV0ZSgnZGF0YS1qc2lkJyldPXE7cS5yZW1v dmVBdHRyaWJ1dGUoJ2RhdGEtanNpZCcpO31nLnNldChtLCdYSFBUZW1wbGF0ZTpu b2Rlcycsbik7fXJldHVybiBuO319KTtmdW5jdGlvbiBsKG0pe3RoaXMuX3Jvb3Q9 bTt0aGlzLl9wb3B1bGF0ZU5vZGVzKCk7fWoobC5wcm90b3R5cGUse19wb3B1bGF0 ZU5vZGVzOmZ1bmN0aW9uKCl7dGhpcy5fbm9kZXM9e307dGhpcy5fbGVhdmVzPXt9 O3ZhciBtPXRoaXMuX3Jvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKTtmb3Io dmFyIG49MCxvPW0ubGVuZ3RoO248bztuKyspe3ZhciBwPW1bbl0scT1wLmdldEF0 dHJpYnV0ZSgnZGF0YS1qc2lkJyk7aWYocSl7cC5yZW1vdmVBdHRyaWJ1dGUoJ2Rh dGEtanNpZCcpO3RoaXMuX25vZGVzW3FdPXA7dGhpcy5fbGVhdmVzW3FdPSFwLmNo aWxkTm9kZXMubGVuZ3RoO319fSxnZXRSb290OmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3Jvb3Q7fSxnZXROb2RlOmZ1bmN0aW9uKG0pe3JldHVybiB0aGlzLl9ub2Rl c1ttXTt9LHNldE5vZGVQcm9wZXJ0eTpmdW5jdGlvbihtLG4sbyl7dGhpcy5nZXRO b2RlKG0pW25dPW87cmV0dXJuIHRoaXM7fSxzZXROb2RlQ29udGVudDpmdW5jdGlv bihtLG4pe2lmKCF0aGlzLl9sZWF2ZXNbbV0pdGhyb3cgbmV3IEVycm9yKCJDYW4n dCBzZXRDb250ZW50IG9uIG5vbi1sZWFmIG5vZGU6ICIrbSk7aC5zZXRDb250ZW50 KHRoaXMuZ2V0Tm9kZShtKSxuKTtyZXR1cm4gdGhpczt9fSk7ZS5leHBvcnRzPWs7 fSk7Cl9fZCgiZW5kc1dpdGgiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5j dGlvbiBnKGgsaSl7cmV0dXJuIGguaW5kZXhPZihpLGgubGVuZ3RoLWkubGVuZ3Ro KT4tMTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiZW5mb3JjZU1heExlbmd0aCIsWyJl dmVudC1leHRlbnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkRPTSIsIklu cHV0IiwiSW5wdXRTZWxlY3Rpb24iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7Yign ZXZlbnQtZXh0ZW5zaW9ucycpO2IoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIg Zz1iKCdET00nKSxoPWIoJ0lucHV0JyksaT1iKCdJbnB1dFNlbGVjdGlvbicpLGo9 ZnVuY3Rpb24obSxuKXt2YXIgbz1oLmdldFZhbHVlKG0pLHA9by5sZW5ndGgscT1w LW47aWYocT4wKXt2YXIgcixzO3RyeXtyPWkuZ2V0KG0pO3M9ci5lbmQ7fWNhdGNo KHQpe3I9bnVsbDtzPTA7fWlmKHM+PXEpcD1zO3ZhciB1PXAtcTtpZih1JiYoby5j aGFyQ29kZUF0KHUtMSkmNjQ1MTIpPT09NTUyOTYpdS0tO3M9TWF0aC5taW4ocyx1 KTtoLnNldFZhbHVlKG0sby5zbGljZSgwLHUpK28uc2xpY2UocCkpO2lmKHIpaS5z ZXQobSxNYXRoLm1pbihyLnN0YXJ0LHMpLHMpO319LGs9ZnVuY3Rpb24oZXZlbnQp e3ZhciBtPWV2ZW50LmdldFRhcmdldCgpLG49bS5nZXRBdHRyaWJ1dGUmJnBhcnNl SW50KG0uZ2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnKSwxMCk7aWYobj4wJiZnLmlz Tm9kZU9mVHlwZShtLFsnaW5wdXQnLCd0ZXh0YXJlYSddKSlqLmJpbmQobnVsbCxt LG4pLmRlZmVyKCk7fSxsPSdtYXhMZW5ndGgnIGluIGcuY3JlYXRlKCdpbnB1dCcp JiYnbWF4TGVuZ3RoJyBpbiBnLmNyZWF0ZSgndGV4dGFyZWEnKTtpZighbClFdmVu dC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHtrZXlkb3duOmsscGFz

dGU6a30pO2UuZXhwb3J0cz1qO30pOwpfX2QoImh0bWxIeXBlcmxpbmsiLFsiRW52 IiwiaHRtbGl6ZSIsIlVudHJ1c3RlZExpbmsiLCJVUkkiLCJVUkxTY3JhcGVyIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0VudicpLGg9YignaHRtbGl6 ZScpLGk9YignVW50cnVzdGVkTGluaycpLGo9YignVVJJJyksaz1iKCdVUkxTY3Jh cGVyJyk7ZnVuY3Rpb24gbChtLG4sbyxwKXtpZih0eXBlb2YgbT09PSd1bmRlZmlu ZWQnfHwhbS50b1N0cmluZylyZXR1cm4gJyc7aWYodHlwZW9mIG4hPT0nZnVuY3Rp b24nKW49aDtpZih0eXBlb2YgbyE9PSdmdW5jdGlvbicpbz1oO3ZhciBtPW0udG9T dHJpbmcoKSxxPVtdLHI7d2hpbGUoKHI9ay5tYXRjaChtKSkpe3ZhciBzPW0uaW5k ZXhPZihyKTtpZihzPj0wKXEucHVzaChuKG0uc3Vic3RyaW5nKDAscykpKTt2YXIg dD1vKHIpLHU9ci5yZXBsYWNlKC8iL2csJyUyMicpO2lmKCEoL15bYS16XVthLXow LTlcLSsuXSs6XC9cLy9pLnRlc3QocikpKXU9J2h0dHA6Ly8nK3U7cS5wdXNoKCc8 YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iJyt1KyciJyk7 aWYocCYmIWoodSkuaXNGYWNlYm9va1VSSSgpKXthLlVudHJ1c3RlZExpbms9aTtx LnB1c2goJyBvbm1vdXNlZG93bj0iVW50cnVzdGVkTGluay5ib290c3RyYXAodGhp cywgXCcnK2cubGhzaCsnXCcsIGV2ZW50KSInKTt9cS5wdXNoKCc+Jyt0Kyc8L2E+ Jyk7bT1tLnN1YnN0cmluZyhzK3IubGVuZ3RoKTt9bSYmcS5wdXNoKG4obSkpO3Jl dHVybiBxLmpvaW4oJycpO31lLmV4cG9ydHM9bDt9KTsKX19kKCJyYW5kb21JbnQi LFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgsaSl7aWYoYXJn dW1lbnRzLmxlbmd0aD09PTEpe2k9aDtoPTA7fXZhciBqPXRoaXMucmFuZG9tfHxN YXRoLnJhbmRvbTtyZXR1cm4gTWF0aC5mbG9vcihoK2ooKSooaS1oKSk7fWUuZXhw b3J0cz1nO30pOwpfX2QoInJlcG9ydERhdGEiLFsiRWFnbGVFeWUiLCJ1c2VyQWN0 aW9uIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0VhZ2xlRXllJyks aD1iKCd1c2VyQWN0aW9uJyk7ZnVuY3Rpb24gaShqLGspe2s9a3x8e307dmFyIGw9 e2Z0OihrLmZ0fHx7fSksZ3Q6KGsuZ3R8fHt9KX0sbT0nLScsbj1hLkFyYml0ZXJN b25pdG9yLG89KCEhbik/bi5nZXRBY3RGaWVsZHMoKTpbXSxwPSghbik/J3InOidh JyxxPVtEYXRlLm5vdygpLGguZ2V0Q3VycmVudFVFQ291bnQoKSxtLGosbSxtLHAs YS5VUkk/YS5VUkkuZ2V0UmVxdWVzdFVSSSh0cnVlLHRydWUpLmdldFVucXVhbGlm aWVkVVJJKCkudG9TdHJpbmcoKTpsb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5z ZWFyY2grbG9jYXRpb24uaGFzaCxsLDAsMCwwLDBdLmNvbmNhdChvKTtnLmxvZygn YWN0JyxxKTt9ZS5leHBvcnRzPWk7fSk7Cl9fZCgic2V0SW50ZXJ2YWxBY3Jvc3NU cmFuc2l0aW9ucyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGco aCxpKXtyZXR1cm4gc2V0SW50ZXJ2YWwoaCxpLGZhbHNlKTt9ZS5leHBvcnRzPWc7 fSk7Cl9fZCgic2V0VGltZW91dEFjcm9zc1RyYW5zaXRpb25zIixbXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoLGkpe3JldHVybiBzZXRUaW1lb3V0 KGgsaSxmYWxzZSk7fWUuZXhwb3J0cz1nO30pOwpfX2QoInN1Ym1pdEZvcm0iLFsi RE9NIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTScpLGg9ZnVu Y3Rpb24oaSl7dmFyIGo9Zy5zY3J5KGksJ2lucHV0W3R5cGU9InN1Ym1pdCJdJylb MF07aWYoail7ai5jbGljaygpO31lbHNle2o9Zy5jcmVhdGUoJ2lucHV0Jyx7dHlw ZTonc3VibWl0JyxjbGFzc05hbWU6J2hpZGRlbl9lbGVtJ30pO2cuYXBwZW5kQ29u dGVudChpLGopO2ouY2xpY2soKTtnLnJlbW92ZShqKTt9fTtlLmV4cG9ydHM9aDt9 KTsKX19kKCJkZWJvdW5jZUFjcm9zc1RyYW5zaXRpb25zIixbImRlYm91bmNlIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2RlYm91bmNlJyk7ZnVuY3Rp b24gaChpLGosayl7cmV0dXJuIGcoaSxqLGssdHJ1ZSk7fWUuZXhwb3J0cz1oO30p OwpfX2QoIk11c2ljQnV0dG9uU3RvcmUiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz17fSxoPXthZGRCdXR0b246ZnVuY3Rpb24oaSxqKXtnW2ldPWo7cmV0 dXJuIGo7fSxnZXRCdXR0b246ZnVuY3Rpb24oaSl7cmV0dXJuIGdbaV07fSxnZXRC dXR0b25zOmZ1bmN0aW9uKCl7cmV0dXJuIGc7fSxyZW1vdmVCdXR0b246ZnVuY3Rp b24oaSl7Z1tpXSYmZ1tpXS5yZXNldExvYWRpbmdUaW1lcnMoKTtkZWxldGUgZ1tp XTt9fTtlLmV4cG9ydHM9aDt9KTsKX19kKCJNdXNpY0V2ZW50cyIsWyJBcmJpdGVy Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKTtlLmV4 cG9ydHM9YS5NdXNpY0V2ZW50cz1uZXcgZygpO30pOwpfX2QoIk11c2ljUHJvdmlk ZXJzIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZS5leHBvcnRzPWEuTXVzaWNQ cm92aWRlcnM9e1NQT1RJRlk6J29wZW4uc3BvdGlmeS5jb20nfTt9KTsKX19kKCJN dXNpY0NvbnN0YW50cyIsWyJBcmJpdGVyIiwiTXVzaWNFdmVudHMiLCJNdXNpY1By b3ZpZGVycyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVy JyksaD1iKCdNdXNpY0V2ZW50cycpLGk9YignTXVzaWNQcm92aWRlcnMnKSxqPXtE RUJVRzpmYWxzZSxMSVZFX0xJU1RFTl9NSU5fU1BPVElGWV9WRVJTSU9OOidzcG90 aWZ5LTAuNi42LjAuZzVhOWVhY2E1JyxlbmFibGVEZWJ1ZzpmdW5jdGlvbigpe3Ro aXMuREVCVUc9dHJ1ZTt9LHNhbWVVUkxzOmZ1bmN0aW9uKGssbCl7dmFyIG09L1wv JC87aWYoayYmbCl7az1VUkkoayk7bD1VUkkobCk7cmV0dXJuIGsuZ2V0RG9tYWlu

KCk9PWwuZ2V0RG9tYWluKCkmJmsuZ2V0UGF0aCgpPT1sLmdldFBhdGgoKTt9cmV0 dXJuIGZhbHNlO30sZ3JlYXRlck9yRXF1YWxUb01pbmltdW1WZXJzaW9uOmZ1bmN0 aW9uKGssbCl7dmFyIG09Lyg/OlxkK1wuKSsvLG49ay5tYXRjaChtKVswXS5zcGxp dCgnLicpLnNsaWNlKDAsLTEpLG89bC5tYXRjaChtKVswXS5zcGxpdCgnLicpLnNs aWNlKDAsLTEpO2lmKG4ubGVuZ3RoIT09by5sZW5ndGgpcmV0dXJuIGZhbHNlO2Zv cih2YXIgcD0wO3A8by5sZW5ndGg7cCsrKWlmKCtuW3BdPCtvW3BdKXtyZXR1cm4g ZmFsc2U7fWVsc2UgaWYoK25bcF0+K29bcF0pcmV0dXJuIHRydWU7cmV0dXJuIHRy dWU7fSxzYW5pdGl6ZUZvclByb3ZpZGVyczpmdW5jdGlvbihrKXt2YXIgbD17fTtm b3IodmFyIG0gaW4gaylpZih0aGlzLkFMTE9XRURfRVhURVJOQUxfQ09OVEVYVF9Q QVJBTVNbbV0pbFttXT1rW21dO3JldHVybiBsO30sT1A6e1JFU1VNRTonUkVTVU1F JyxQQVVTRTonUEFVU0UnLFBMQVk6J1BMQVknLFZFUlNJT046J1ZFUlNJT04nfSxT VEFUVVNfQ0hBTkdFX09QOntTVEFUVVM6J1NUQVRVUycsTE9HSU46J0xPR0lOJyxS RUlORk9STTonUkVJTkZPUk0nfSxTVEFUVVNfQ0hBTkdFX0VWRU5UOntwbGF5aW5n OidQTEFZX1NUQVRFX0NIQU5HRUQnLHRyYWNrOidUUkFDS19DSEFOR0VEJ30sRElB R05PU1RJQ19FVkVOVDp7QUxMX1BBVVNFRDonQUxMX1BBVVNFRCcsQUxMX09GRkxJ TkU6J0FMTF9PRkZMSU5FJyxPRkZMSU5FOidPRkZMSU5FJyxPTkxJTkU6J09OTElO RScsU0VBUkNISU5HOidTRUFSQ0hJTkcnLEhJVDonSElUJyxNSVNTOidNSVNTJyxS RVNJR046J1JFU0lHTicsSUZSQU1FX1BPTExJTkc6J0lGUkFNRV9QT0xMSU5HJyxS RUxBVU5DSDonUkVMQVVOQ0gnLFNUQVRFX0NIQU5HRTonU1RBVEVfQ0hBTkdFJyxX Uk9OR19WRVJTSU9OOidXUk9OR19WRVJTSU9OJyxTRVJWSUNFX0VSUk9SOidTRVJW SUNFX0VSUk9SJyxJTkNPUlJFQ1RfT05MSU5FX1NUQVRFOidJTkNPUlJFQ1RfT05M SU5FX1NUQVRFJyxMT0dfU0VORF9PUDonTE9HX1NFTkRfT1AnLFJFUVVFVUVfT1A6 J1JFUVVFVUVfT1AnfSxBTExPV0VEX1NUQVRVU19QQVJBTVM6e3BsYXlpbmc6J3Bs YXlpbmcnLHRyYWNrOid0cmFjaycsY29udGV4dDonY29udGV4dCcsY2xpZW50X3Zl cnNpb246J2NsaWVudF92ZXJzaW9uJyxzdGFydF90aW1lOidzdGFydF90aW1lJyxl eHBpcmVzX2luOidleHBpcmVzX2luJyxvcGVuX2dyYXBoX3N0YXRlOidvcGVuX2dy YXBoX3N0YXRlJ30sQUxMT1dFRF9FWFRFUk5BTF9DT05URVhUX1BBUkFNUzp7dXJp OnRydWUsc29uZzp0cnVlLHJhZGlvX3N0YXRpb246dHJ1ZSxhbGJ1bTp0cnVlLHBs YXlsaXN0OnRydWUsbXVzaWNpYW46dHJ1ZSxzb25nX2xpc3Q6dHJ1ZSxvZmZzZXQ6 dHJ1ZSx0aXRsZTp0cnVlLHJlcXVlc3RfaWQ6dHJ1ZSxsaXN0ZW5fd2l0aF9mcmll bmRzOnRydWUsbmVlZHNfdG9zOnRydWV9LExJVkVfTElTVEVOX09QOntOT1dfTEVB RElORzonTk9XX0xFQURJTkcnLE5PV19MSVNURU5JTkc6J05PV19MSVNURU5JTkcn LEVORF9TRVNTSU9OOidFTkRfU0VTU0lPTicsU09OR19QTEFZSU5HOidTT05HX1BM QVlJTkcnLExJU1RFTkVSX1VQREFURTonTElTVEVORVJfVVBEQVRFJyxRVUVVRV9T RVNTSU9OOidRVUVVRV9TRVNTSU9OJyxQTEFZX0VSUk9SOidQTEFZX0VSUk9SJyxT RVNTSU9OX1VQREFURUQ6J1NFU1NJT05fVVBEQVRFRCcsUVVFVUlOR19TRVNTSU9O OidRVUVVSU5HX1NFU1NJT04nfSxNVVNJQ19CVVRUT046e0FDVElWQVRFOidBQ1RJ VkFURSd9LEVSUk9SOnsxOidTRVJWSUNFX1VOQVZBSUxBQkxFX1dJVEhPVVRfUFJF TUlVTScsMjonU0VSVklDRV9VTkFWQUlMQUJMRV9XSVRIT1VUX1BSRU1JVU1fT1Jf V0FJVCcsMzonU0VSVklDRV9VTkFWQUlMQUJMRV9CSUxMSU5HX0lTU1VFJyw0OidT RVJWSUNFX1VOQVZBSUxBQkxFX1RFQ0hOSUNBTF9JU1NVRScsNTonQVVESU9fQURf UExBWUlORycsOTk6J1NFUlZJQ0VfVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUnLDEw MTonU09OR19VTkFWQUlMQUJMRV9XSVRIT1VUX1BVUkNIQVNFJywxMDI6J1NPTkdf VU5BVkFJTEFCTEVfV0lUSE9VVF9QUkVNSVVNJywxMDM6J1NPTkdfVU5BVkFJTEFC TEVfSU5ERUZJTklURUxZJ319O2UuZXhwb3J0cz1hLk11c2ljQ29uc3RhbnRzfHxq O30pOwpfX2QoIk11c2ljV2F0ZXJmYWxsTG9nZ2VyIixbIkpTTG9nZ2VyIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0pTTG9nZ2VyJyksaD1nLmNyZWF0 ZSgnbXVzaWNfd2F0ZXJmYWxsJyksaT17Y2xpY2s6ZnVuY3Rpb24obCl7aignY2xp Y2snLGwpO30sbXVzaWNMb2FkZWRGcm9tQ2xpY2s6ZnVuY3Rpb24obCl7aignbXVz aWNfbG9hZGVkX2Zyb21fY2xpY2snLGwpO30scGxheVBhdXNlOmZ1bmN0aW9uKGwp e2ooJ3BsYXlfcGF1c2UnLGwpO319O2Z1bmN0aW9uIGoobCxtKXtoLmRlYnVnKGwr J19kZWJ1ZycsbSk7aC5idW1wKGwpO2guYnVtcChsKydfJytrKG0pKTt9ZnVuY3Rp b24gayhsKXtyZXR1cm4gbD9sLnJlcGxhY2UoL1wufC0vZywnXycpOicnO31lLmV4 cG9ydHM9aTt9KTsKX19kKCJNdXNpY0J1dHRvbiIsWyJCb290bG9hZGVyIiwiY29w eVByb3BlcnRpZXMiLCJDU1MiLCJET00iLCJNdXNpY0J1dHRvblN0b3JlIiwiTXVz aWNDb25zdGFudHMiLCJNdXNpY0V2ZW50cyIsIk11c2ljV2F0ZXJmYWxsTG9nZ2Vy IiwiUGFyZW50IiwiVG9vbHRpcCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdCb290bG9hZGVyJyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YignQ1NT Jyksaj1iKCdET00nKSxrPWIoJ011c2ljQnV0dG9uU3RvcmUnKSxsPWIoJ011c2lj Q29uc3RhbnRzJyksbT1iKCdNdXNpY0V2ZW50cycpLG49YignTXVzaWNXYXRlcmZh

bGxMb2dnZXInKSxvPWIoJ1BhcmVudCcpLHA9YignVG9vbHRpcCcpLHE9ZnVuY3Rp b24ocixzLHQsdSx2LHcpe3RoaXMucHJvdmlkZXI9cjt0aGlzLmJ1dHRvbkVsZW09 czt0aGlzLnVybD10O3RoaXMuY29udGV4dD11fHx7fTt0aGlzLm1lZGlhVHlwZT12 O3RoaXMuc2V0U3RhdGUodGhpcy5TVEFURVMuT0ZGTElORSk7dGhpcy50b29sdGlw PXd8fCcnO20uc3Vic2NyaWJlKGwuTVVTSUNfQlVUVE9OLkFDVElWQVRFLHRoaXMu cHJvY2Vzc0NsaWNrLmJpbmQodGhpcykpO307aChxLHt0cmFja3NldGFibGVUeXBl czpbXX0pO2gocS5wcm90b3R5cGUse1NIT1dfTE9BRElOR19USU1FT1VUOjUwMCxI SURFX0xPQURJTkdfVElNRU9VVDo0MDAwLFJFQ0VOVExZX09OTElORV9USU1FT1VU OjYwMDAsU1RBVEVTOntQTEFZSU5HOidtdXNpY19wbGF5aW5nJyxQQVVTRUQ6J211 c2ljX3BhdXNlZCcsTE9BRElORzonbXVzaWNfbG9hZGluZycsRElTQUJMRUQ6J211 c2ljX2Rpc2FibGVkJyxPRkZMSU5FOidtdXNpY19vZmZsaW5lJ30sc2V0U3RhdGU6 ZnVuY3Rpb24ocil7aWYociE9PXRoaXMuU1RBVEVTLkxPQURJTkcpe3RoaXMucmVz ZXRMb2FkaW5nVGltZXJzKCk7dGhpcy5wcmV2aW91c1N0YXRlPXRoaXMuc3RhdGV8 fHI7fWlmKHI9PT10aGlzLlNUQVRFUy5QTEFZSU5HKXtwLnNldCh0aGlzLmJ1dHRv bkVsZW0sdGhpcy50b29sdGlwKTt9ZWxzZSBwLnNldCh0aGlzLmJ1dHRvbkVsZW0s JycpO3ZhciBzPXRoaXMuYnV0dG9uRWxlbS5wYXJlbnROb2RlO3RoaXMuc3RhdGUm JmkucmVtb3ZlQ2xhc3Mocyx0aGlzLnN0YXRlKTt0aGlzLnN0YXRlPXI7aS5hZGRD bGFzcyhzLHRoaXMuc3RhdGUpO30saXNUcmFja3NldGFibGU6ZnVuY3Rpb24ocil7 cmV0dXJuIHEudHJhY2tzZXRhYmxlVHlwZXMuaW5kZXhPZih0aGlzLm1lZGlhVHlw ZSkhPT0tMTt9LGhhbmRsZUluY29taW5nRXZlbnQ6ZnVuY3Rpb24ocixzKXtjbGVh clRpbWVvdXQodGhpcy5fc2hvd0xvYWRpbmdUaW1lcik7aWYocyYmcy5wcm92aWRl ciYmcy5wcm92aWRlciE9dGhpcy5wcm92aWRlcilyZXR1cm47c3dpdGNoKHIpe2Nh c2UgbC5ESUFHTk9TVElDX0VWRU5ULk9OTElORTpjYXNlIGwuU1RBVFVTX0NIQU5H RV9FVkVOVC50cmFjazpjYXNlIGwuU1RBVFVTX0NIQU5HRV9FVkVOVC5wbGF5aW5n OnZhciB0PXMmJnMudHJhY2smJnMudHJhY2sudXJpLHU9cyYmcy5jb250ZXh0JiZz LmNvbnRleHQudXJpO2lmKHMmJnMucGxheWluZyYmKGwuc2FtZVVSTHModCx0aGlz LnVybCl8fGwuc2FtZVVSTHModSx0aGlzLnVybCkpKXt0aGlzLnNldFN0YXRlKHRo aXMuU1RBVEVTLlBMQVlJTkcpO31lbHNlIGlmKHRoaXMuc3RhdGU9PT10aGlzLlNU QVRFUy5MT0FESU5HJiYodGhpcy5wcmV2aW91c1N0YXRlPT09dGhpcy5TVEFURVMu UEFVU0VEfHx0aGlzLnByZXZpb3VzU3RhdGU9PT10aGlzLlNUQVRFUy5PRkZMSU5F KSl7Y2xlYXJUaW1lb3V0KHRoaXMuX2F0dGVtcHRpbmdQbGF5VGltZXIpO3RoaXMu X2F0dGVtcHRpbmdQbGF5VGltZXI9dGhpcy5zZXRTdGF0ZS5iaW5kKHRoaXMsdGhp cy5TVEFURVMuUEFVU0VEKS5kZWZlcih0aGlzLlJFQ0VOVExZX09OTElORV9USU1F T1VULGZhbHNlKTt9ZWxzZSBpZighdGhpcy5fYXR0ZW1wdGluZ1BsYXlUaW1lcil0 aGlzLnNldFN0YXRlKHRoaXMuU1RBVEVTLlBBVVNFRCk7YnJlYWs7Y2FzZSBsLkRJ QUdOT1NUSUNfRVZFTlQuT0ZGTElORTp0aGlzLnNldFN0YXRlKHRoaXMuU1RBVEVT Lk9GRkxJTkUpO2JyZWFrO2Nhc2UgbC5ESUFHTk9TVElDX0VWRU5ULkFMTF9PRkZM SU5FOnRoaXMuc2V0U3RhdGUodGhpcy5TVEFURVMuT0ZGTElORSk7YnJlYWs7fX0s cHJvY2Vzc0NsaWNrOmZ1bmN0aW9uKHIscyl7aWYocyE9dGhpcy5idXR0b25FbGVt KXtpZih0aGlzLnN0YXRlPT09dGhpcy5TVEFURVMuTE9BRElORyl0aGlzLnByZXZp b3VzU3RhdGUmJnRoaXMuc2V0U3RhdGUodGhpcy5wcmV2aW91c1N0YXRlKTtyZXR1 cm47fW4uY2xpY2sodGhpcy5wcm92aWRlcik7dmFyIHQ9dGhpcy5pc1RyYWNrc2V0 YWJsZSgpJiZvLmJ5Q2xhc3ModGhpcy5idXR0b25FbGVtLCdtdXNpY190cmFja3Nl dF9jb250YWluZXInKSx1PVtdO2lmKHQpe3ZhciB2PXQuZ2V0QXR0cmlidXRlKCdk YXRhLXRyYWNrc2V0LXRpdGxlJyksdz10aGlzLnByb3ZpZGVyLHg9ai5zY3J5KHQs Jy5tdXNpY19idXR0b24nKTtmb3IodmFyIHk9MDt5PHgubGVuZ3RoO3krKyl7dmFy IHo9ay5nZXRCdXR0b24oW3hbeV0uaWRdKTtpZih6JiZ6LnByb3ZpZGVyPT13JiZ6 LmlzVHJhY2tzZXRhYmxlKCkpdS5wdXNoKHoudXJsKTt9fWlmKCFhLk11c2ljKXRo aXMuc2hvd0xvYWRpbmcodHJ1ZSk7Zy5sb2FkTW9kdWxlcyhbJ011c2ljJ10sZnVu Y3Rpb24oYWEpe24ubXVzaWNMb2FkZWRGcm9tQ2xpY2sodGhpcy5wcm92aWRlcik7 dmFyIGJhPSh0JiZ1Lmxlbmd0aD4xKT9hYS5wbGF5UGF1c2VTb25nTGlzdCh0aGlz LnByb3ZpZGVyLHRoaXMudXJsLHUsdix0aGlzLmNvbnRleHQpOmFhLnBsYXlQYXVz ZVNvbmcodGhpcy5wcm92aWRlcix0aGlzLnVybCx0aGlzLmNvbnRleHQpO3RoaXMu c2hvd0xvYWRpbmcoIWJhKTt9LmJpbmQodGhpcykpO30sc2hvd0xvYWRpbmc6ZnVu Y3Rpb24ocil7dGhpcy5yZXNldExvYWRpbmdUaW1lcnMoKTt0aGlzLl9oaWRlTG9h ZGluZ1RpbWVyPXRoaXMuX3RpbWVvdXQuYmluZCh0aGlzLHIpLmRlZmVyKHRoaXMu SElERV9MT0FESU5HX1RJTUVPVVQsZmFsc2UpO3RoaXMuX3Nob3dMb2FkaW5nVGlt ZXI9dGhpcy5zZXRTdGF0ZS5iaW5kKHRoaXMsdGhpcy5TVEFURVMuTE9BRElORyku ZGVmZXIodGhpcy5TSE9XX0xPQURJTkdfVElNRU9VVCxmYWxzZSk7fSxyZXNldExv YWRpbmdUaW1lcnM6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5faGlkZUxv

YWRpbmdUaW1lcik7Y2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dMb2FkaW5nVGltZXIp O2NsZWFyVGltZW91dCh0aGlzLl9hdHRlbXB0aW5nUGxheVRpbWVyKTt0aGlzLl9h dHRlbXB0aW5nUGxheVRpbWVyPW51bGw7fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhp cy5yZXNldExvYWRpbmdUaW1lcnMoKTt0aGlzLmJ1dHRvbkVsZW09bnVsbDt9LF90 aW1lb3V0OmZ1bmN0aW9uKHIpe2EuTXVzaWMmJmEuTXVzaWMucmVJbmZvcm0oW3Ro aXMucHJvdmlkZXJdKTtpZighciYmdGhpcy5zdGF0ZT09PXRoaXMuU1RBVEVTLkxP QURJTkcpdGhpcy5zZXRTdGF0ZSh0aGlzLlNUQVRFUy5QQVVTRUQpO319KTtlLmV4 cG9ydHM9cTt9KTsKX19kKCJNdXNpY0J1dHRvbk1hbmFnZXIiLFsiRE9NIiwiS2V5 ZWRDYWxsYmFja01hbmFnZXIiLCJMYXllciIsIk11c2ljQnV0dG9uIiwiTXVzaWNC dXR0b25TdG9yZSIsIk11c2ljQ29uc3RhbnRzIiwiTXVzaWNFdmVudHMiLCJQYXJl bnQiLCJldmVudC1leHRlbnNpb25zIiwiJCIsImNvcHlQcm9wZXJ0aWVzIiwiZ2Ui XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignRE9NJyksaD1iKCdLZXll ZENhbGxiYWNrTWFuYWdlcicpLGk9YignTGF5ZXInKSxqPWIoJ011c2ljQnV0dG9u Jyksaz1iKCdNdXNpY0J1dHRvblN0b3JlJyksbD1iKCdNdXNpY0NvbnN0YW50cycp LG09YignTXVzaWNFdmVudHMnKSxuPWIoJ1BhcmVudCcpO2IoJ2V2ZW50LWV4dGVu c2lvbnMnKTt2YXIgbz1iKCckJykscD1iKCdldmVudC1leHRlbnNpb25zJykuJEUs cT1iKCdjb3B5UHJvcGVydGllcycpLHI9YignZ2UnKSxzPW5ldyBoKCksdD1udWxs LHU9e30sdj0wO2Z1bmN0aW9uIHcoZXZlbnQpe3ZhciBkYT1wKGV2ZW50KS5nZXRU YXJnZXQoKSxlYT1uLmJ5Q2xhc3MoZGEsJ211c2ljX2J1dHRvbicpO2VhPWVhfHwo IWV2ZW50LmdldE1vZGlmaWVycygpLmFueSYmeChkYSkpO2lmKCFlYSlyZXR1cm47 cmV0dXJuIHkoZWEsZXZlbnQpO31mdW5jdGlvbiB4KGRhKXt2YXIgZWE9bi5ieUNs YXNzKGRhLCdtdXNpY19idXR0b25fdHJpZ2dlcicpJiZuLmJ5Q2xhc3MoZGEsJ211 c2ljX2J1dHRvbl90cmlnZ2VyX2dyb3VwJyk7aWYoZWEpe3ZhciBmYT1nLnNjcnko ZWEsJy5tdXNpY19idXR0b24nKTtpZihmYS5sZW5ndGgpcmV0dXJuIGZhWzBdO31y ZXR1cm4gbnVsbDt9ZnVuY3Rpb24geShkYSxldmVudCl7ZXZlbnQmJnAoZXZlbnQp LnN0b3AoKTttLmluZm9ybShsLk1VU0lDX0JVVFRPTi5BQ1RJVkFURSxkYSk7cmV0 dXJuIGZhbHNlO31mdW5jdGlvbiB6KGRhKXthLk11c2ljJiZhLk11c2ljLnJlSW5m b3JtKGRhKTt9ZnVuY3Rpb24gYWEoZGEsZWEpe3ZhciBmYT1rLmdldEJ1dHRvbnMo KTtmb3IodmFyIGdhIGluIGZhKWlmKGZhW2dhXS5ub0dDfHxyKGdhKSl7ZmFbZ2Fd LmhhbmRsZUluY29taW5nRXZlbnQoZGEsZWEpO31lbHNlIGsucmVtb3ZlQnV0dG9u KGdhKTt9dmFyIGJhPXtpbml0OmZ1bmN0aW9uKGRhKXtpZih0KXJldHVybjt0PXRy dWU7ai50cmFja3NldGFibGVUeXBlcz1kYXx8W107RXZlbnQubGlzdGVuKGRvY3Vt ZW50LmJvZHksJ2NsaWNrJyx3KTttLnN1YnNjcmliZShbbC5TVEFUVVNfQ0hBTkdF X0VWRU5ULnBsYXlpbmcsbC5TVEFUVVNfQ0hBTkdFX0VWRU5ULnRyYWNrLGwuRElB R05PU1RJQ19FVkVOVC5PRkZMSU5FLGwuRElBR05PU1RJQ19FVkVOVC5BTExfT0ZG TElORSxsLkRJQUdOT1NUSUNfRVZFTlQuT05MSU5FXSxhYSk7fSxhZGQ6ZnVuY3Rp b24oZGEsZWEsZmEsZ2EsaGEsaWEpe3R8fGJhLmluaXQoKTt2YXIgamE9ZWEuaWQs a2E9ay5nZXRCdXR0b24oamEpO2lmKGthKXJldHVybiBrYTtrYT1rLmFkZEJ1dHRv bihqYSxuZXcgaihkYSxlYSxmYSxxKHtidXR0b25faWQ6amF9LGdhKSxoYSxpYSkp O3ZhciBsYT1uLmJ5Q2xhc3MoZWEsJ3VpT3ZlcmxheScpO2lmKGxhKXtrYS5ub0dD PXRydWU7dmFyIG1hPWkuc3Vic2NyaWJlKCdkZXN0cm95JyxmdW5jdGlvbihuYSxv YSl7aWYoZy5jb250YWlucyhvYS5nZXRSb290KCksZWEpKXtrLnJlbW92ZUJ1dHRv bihqYSk7aS51bnN1YnNjcmliZShtYSk7fX0pO31pZihkYSYmIXVbZGFdKXVbZGFd PWZ1bmN0aW9uKCl7dmFyIG5hPU9iamVjdC5rZXlzKHUpO25hLmxlbmd0aCYmeihu YSk7dT17fTt9LmRlZmVyKCk7cmV0dXJuIGthO30sYWRkQnV0dG9uOmZ1bmN0aW9u KGRhLGVhLGZhLGdhLGhhLGlhKXtpZighcihlYSkpcmV0dXJuO3ZhciBqYT1vKGVh KTtyZXR1cm4gYmEuYWRkKGRhLGphLGZhLGdhLGhhLGlhKTt9LGFzeW5jQWRkTXVz aWNCdXR0b246ZnVuY3Rpb24oZGEsZWEpe2RhLnNldEF0dHJpYnV0ZSgnaWQnLCdt dXNpY19idXR0b25fJyt2KyspO2NhKGRhLGVhKTt9LHRyeUFkZEJ1dHRvbkluRE9N OmZ1bmN0aW9uKGRhLGVhKXt2YXIgZmE9cihkYSk7ZmEmJmNhKGZhLGVhKTt9LGFk ZE11c2ljRGF0YTpmdW5jdGlvbihkYSxlYSxmYSxnYSxoYSxpYSl7cy5zZXRSZXNv dXJjZShkYSx7cHJvdmlkZXI6ZWEsdXJpOmZhLGNvbnRleHQ6Z2EsbWVkaWFfdHlw ZTpoYSx0b29sdGlwOmlhfSk7fX07ZnVuY3Rpb24gY2EoZGEsZWEpe3ZhciBmYT1n LmZpbmQoZGEsJ2EuYnV0dG9uX2FuY2hvcicpLmdldEF0dHJpYnV0ZSgnaHJlZicp O3MuZXhlY3V0ZU9yRW5xdWV1ZShmYSxmdW5jdGlvbihnYSl7cmV0dXJuIGJhLmFk ZChnYS5wcm92aWRlcixkYSxnYS51cmksZ2EuY29udGV4dCxnYS5tZWRpYV90eXBl LGVhP2dhLnRvb2x0aXA6JycpO30pO31lLmV4cG9ydHM9YS5NdXNpY0J1dHRvbk1h bmFnZXJ8fGJhO30pOwpfX2QoImxlZ2FjeTpvbnZpc2libGUiLFsiT25WaXNpYmxl Il0sZnVuY3Rpb24oYSxiLGMsZCl7YS5PblZpc2libGU9YignT25WaXNpYmxlJyk7 fSwzKTsKX19kKCJQaG90b0V2ZXJzdG9yZUxvZ2dlciIsWyJldmVudC1leHRlbnNp

b25zIiwiQXN5bmNSZXF1ZXN0IiwiY29weVByb3BlcnRpZXMiLCJJbWFnZVV0aWxz Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2 YXIgZz1iKCdBc3luY1JlcXVlc3QnKSxoPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaT1i KCdJbWFnZVV0aWxzJyksaj17QkFUQ0hfV0lORE9XX01TOjUwMCxzdG9yZWRMb2c6 W119O2Z1bmN0aW9uIGsoKXt9aChrLHtfbG9nOmZ1bmN0aW9uKG0pe2ouc3RvcmVk TG9nLnB1c2gobSk7aWYoai5zdG9yZWRMb2cubGVuZ3RoPT0xKXNldFRpbWVvdXQo bCxqLkJBVENIX1dJTkRPV19NUyxmYWxzZSk7fSxsb2dJbW1lZGlhdGVseTpmdW5j dGlvbihtKXtrLl9sb2cobSk7fSxyZWdpc3RlckZvckxvZ2dpbmc6ZnVuY3Rpb24o bSl7aWYoaS5oYXNMb2FkZWQobSkpe2suX2xvZyhtLnNyYyk7fWVsc2UgRXZlbnQu bGlzdGVuKG0sJ2xvYWQnLGZ1bmN0aW9uKGV2ZW50KXtrLl9sb2cobS5zcmMpO30p O319KTtmdW5jdGlvbiBsKCl7dmFyIG09ai5zdG9yZWRMb2c7ai5zdG9yZWRMb2c9 W107dmFyIG49SlNPTi5zdHJpbmdpZnkobSk7bmV3IGcoKS5zZXRVUkkoJy9hamF4 L3Bob3Rvcy9sb2dnaW5nL2V2ZXJzdG9yZV9sb2dnaW5nLnBocCcpLnNldERhdGEo e2xvZ2dlZFVybHM6bn0pLnNldE1ldGhvZCgnUE9TVCcpLnNldE9wdGlvbignc3Vw cHJlc3NFcnJvckhhbmRsZXJXYXJuaW5nJyx0cnVlKS5zZXRPcHRpb24oJ3N1cHBy ZXNzRXJyb3JBbGVydHMnLHRydWUpLnNlbmQoKTt9ZS5leHBvcnRzPWs7fSk7Cl9f ZCgiUGhvdG9TZXNzaW9uTG9nIixbIkFzeW5jUmVxdWVzdCIsIlJ1biIsIlZlY3Rv ciIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ0FzeW5jUmVxdWVzdCcpLGg9YignUnVuJyksaT1iKCdWZWN0b3InKSxqPWIo J2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gaygpe31qKGsse1VOS05PV046MCxF U0M6MSxYOjIsT1VUU0lERTozLFVOTE9BRDo0LE5BVklHQVRFOjUsQUdHUkVHQVRF OjYsTEVBVkU6NyxQRVJNQUxJTks6MCxTTk9XTElGVDo2LEFHR1JFR0FUSU9OX0NP VU5UOjIwLHNldDpudWxsLHRpbWU6bnVsbCx2aWV3czowLGZiaWRMaXN0OltdLGRl dGFpbHM6e30sd2lkdGg6MCxoZWlnaHQ6MCxmaXJzdDpmYWxzZSxsYXN0OmZhbHNl LGxvZ0lkczpmYWxzZSx2ZXJzaW9uOm51bGwsYnV0dG9uTGlrZXM6MCxwYWdpbmdB Y3Rpb246JycsZmFjZVRhZ0ltcHJlc3Npb25zOjAsY3ljbGU6ZmFsc2UsZW5kT2ZS ZWxldmFudDpmYWxzZSxyZWxldmFudENvdW50OjAsaW5pdExvZ2dpbmc6ZnVuY3Rp b24obCl7dGhpcy5zZXQ9bnVsbDt0aGlzLnRpbWU9bmV3IERhdGUoKTt0aGlzLnZp ZXdzPTA7dGhpcy5oaVJlc0xvYWRzPTA7dGhpcy5mdWxsU2NyZWVuVmlld3M9e307 dGhpcy5maXJzdD10cnVlO3RoaXMubGFzdD1mYWxzZTt0aGlzLmxvZ0lkcz1mYWxz ZTt0aGlzLnZlcnNpb249bDt0aGlzLmJ1dHRvbkxpa2VzPTA7dGhpcy5wYWdpbmdB Y3Rpb249Jyc7dGhpcy5mYWNlVGFnSW1wcmVzc2lvbnM9MDt0aGlzLmN5Y2xlPWZh bHNlO3RoaXMuZW5kT2ZSZWxldmFudD1mYWxzZTt0aGlzLnJlbGV2YW50Q291bnQ9 MDtpZihsPT09ay5TTk9XTElGVCl7dmFyIG09aS5nZXRWaWV3cG9ydERpbWVuc2lv bnMoKTt0aGlzLndpZHRoPW0ueDt0aGlzLmhlaWdodD1tLnk7fX0sc2V0TG9nRmJp ZHM6ZnVuY3Rpb24obCl7dGhpcy5sb2dJZHM9bDt9LHNldFBob3RvU2V0OmZ1bmN0 aW9uKGwpe3RoaXMuc2V0PWw7fSxhZGRCdXR0b25MaWtlOmZ1bmN0aW9uKCl7dGhp cy5idXR0b25MaWtlcysrO30sc2V0UGFnaW5nQWN0aW9uOmZ1bmN0aW9uKGwpe3Ro aXMucGFnaW5nQWN0aW9uPWw7fSxhZGRGYWNlVGFnSW1wcmVzc2lvbjpmdW5jdGlv bigpe3RoaXMuZmFjZVRhZ0ltcHJlc3Npb25zKys7fSxzZXRDeWNsZTpmdW5jdGlv bihsKXt0aGlzLmN5Y2xlPWw7fSxzZXRFbmRPZlJlbGV2YW50OmZ1bmN0aW9uKGwp e3RoaXMuZW5kT2ZSZWxldmFudD1sO30sc2V0UmVsZXZhbnRDb3VudDpmdW5jdGlv bihsKXt0aGlzLnJlbGV2YW50Q291bnQ9bDt9LHNldEVuZE1ldHJpY3M6ZnVuY3Rp b24obCl7dGhpcy5lbmRNZXRyaWNzPWw7fSxhZGRQaG90b1ZpZXc6ZnVuY3Rpb24o bCxtLG4pe2lmKHRoaXMubG9nSWRzJiZ0aGlzLnZpZXdzPj10aGlzLkFHR1JFR0FU SU9OX0NPVU5UKXRoaXMubG9nUGhvdG9WaWV3cyh0aGlzLkFHR1JFR0FURSk7dGhp cy52aWV3cysrO2lmKGwpdGhpcy5mYmlkTGlzdC5wdXNoKFtsLmZiaWQsbC5vd25l cixEYXRlLm5vdygpXSk7aWYobSl0aGlzLmhpUmVzTG9hZHMrKztpZihuKXRoaXMu ZnVsbFNjcmVlblZpZXdzW2wuZmJpZF09dHJ1ZTt9LGxvZ0VudGVyRnVsbFNjcmVl bjpmdW5jdGlvbihsKXt0aGlzLmZ1bGxTY3JlZW5WaWV3c1tsXT10cnVlO30sYWRk RGV0YWlsRGF0YTpmdW5jdGlvbihsLG0pe2lmKCF0aGlzLmRldGFpbHNbbF0pdGhp cy5kZXRhaWxzW2xdPXt0Om0ubnVtX3RhZ3MsbDptLmhhc19sb2NhdGlvbixjOm0u aGFzX2NhcHRpb24sY206bS5jb21tZW50X2NvdW50LGxrOm0ubGlrZV9jb3VudCx3 Om0ud2lkdGgsaDptLmhlaWdodCxhZDone30nLHA6dGhpcy5wYWdpbmdBY3Rpb259 O30sdXBkYXRlQWREYXRhOmZ1bmN0aW9uKGwsbSl7aWYodGhpcy5kZXRhaWxzW2xd KXRoaXMuZGV0YWlsc1tsXS5hZD1KU09OLnN0cmluZ2lmeShtKTt9LGxvZ1Bob3Rv Vmlld3M6ZnVuY3Rpb24obCl7aWYoKCF0aGlzLnZpZXdzKXx8KHRoaXMudmVyc2lv bj09PWsuU05PV0xJRlQmJmw9PWsuTEVBVkUpKXJldHVybjtpZihsIT10aGlzLkFH R1JFR0FURSl0aGlzLmxhc3Q9dHJ1ZTt2YXIgbT17c2V0OnRoaXMuc2V0LHRpbWU6 bmV3IERhdGUoKS10aGlzLnRpbWUsZmJpZHM6dGhpcy5sb2dJZHM/dGhpcy5mYmlk

TGlzdDpbXSxkZXRhaWxzOnRoaXMubG9nSWRzP3RoaXMuZGV0YWlsczp7fSxmaXJz dDp0aGlzLmZpcnN0LGxhc3Q6dGhpcy5sYXN0LGNsb3NlOmw/bDp0aGlzLlVOS05P V04sYnV0dG9uX2xpa2VzOnRoaXMuYnV0dG9uTGlrZXMsdmVyc2lvbjp0aGlzLnZl cnNpb24sZmFjZV9pbXA6dGhpcy5mYWNlVGFnSW1wcmVzc2lvbnMsZW5kbWV0cmlj OnRoaXMuZW5kTWV0cmljcyxjeWNsZTp0aGlzLmN5Y2xlLGVuZF9yZWxldjp0aGlz LmVuZE9mUmVsZXZhbnQscmVsZXZfY291bnQ6dGhpcy5yZWxldmFudENvdW50fTtp Zih0aGlzLnZlcnNpb249PT1rLlNOT1dMSUZUKXt2YXIgbj1pLmdldFZpZXdwb3J0 RGltZW5zaW9ucygpO20ud2lkdGg9bi54fHx0aGlzLndpZHRoO20uaGVpZ2h0PW4u eXx8dGhpcy5oZWlnaHQ7aWYodGhpcy5oaVJlc0xvYWRzPjApbS5oaXJlc19sb2Fk cz10aGlzLmhpUmVzTG9hZHM7aWYodGhpcy5sYXN0KXt2YXIgbz1PYmplY3Qua2V5 cyh0aGlzLmZ1bGxTY3JlZW5WaWV3cykubGVuZ3RoO2lmKG8+MCltLmZ1bGxzY3Jl ZW49bzt9fW5ldyBnKCkuc2V0VVJJKCcvYWpheC9waG90b3MvbG9nZ2luZy9zZXNz aW9uX2xvZ2dpbmcucGhwJykuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uKHRy dWUpLnNldE9wdGlvbignYXN5bmNocm9ub3VzJywobCE9ay5VTkxPQUQpKS5zZXRP cHRpb24oJ3N1cHByZXNzRXJyb3JIYW5kbGVyV2FybmluZycsdHJ1ZSkuc2V0RGF0 YShtKS5zZW5kKCk7dGhpcy52aWV3cz0wO3RoaXMuaGlSZXNMb2Fkcz0wO3RoaXMu ZmJpZExpc3Q9W107dGhpcy5kZXRhaWxzPXt9O3RoaXMuZmlyc3Q9ZmFsc2U7dGhp cy5idXR0b25MaWtlcz0wO2lmKHRoaXMubGFzdCl7dGhpcy5zZXQ9bnVsbDt0aGlz LmxvZ0lkcz1mYWxzZTt0aGlzLmZ1bGxTY3JlZW5WaWV3cz17fTt9fX0pO2gub25V bmxvYWQoZnVuY3Rpb24oKXtrLmxvZ1Bob3RvVmlld3Moay5VTkxPQUQpO30pO2gu b25MZWF2ZShmdW5jdGlvbigpe2subG9nUGhvdG9WaWV3cyhrLkxFQVZFKTt9KTtl LmV4cG9ydHM9azt9KTsKX19kKCJQaG90b3NDb25zdCIsW10sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPXtWSUVXRVJfUEVSTUFMSU5LOjAsVklFV0VSX1NOT1dM SUZUOjYsVklFV0VSX1ZBVUxUQk9YOjgsQlVMS19FRElUT1I6MyxGTEFTSF9VUExP QURFUjo0LEhUTUw1X1VQTE9BREVSOjEwLFNJWkVfTk9STUFMOiduJ307ZS5leHBv cnRzPWc7fSk7Cl9fZCgiUGhvdG9zVXRpbHMiLFsiY29weVByb3BlcnRpZXMiLCJS ZWN0IiwiVmVjdG9yIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2Nv cHlQcm9wZXJ0aWVzJyksaD1iKCdSZWN0JyksaT1iKCdWZWN0b3InKTtmdW5jdGlv biBqKCl7fWcoaix7Z2V0TmVhcmVzdEJveDpmdW5jdGlvbihrLGwpe3ZhciBtPUlu ZmluaXR5LG49bnVsbDtmb3IodmFyIG8gaW4gayl7dmFyIHA9a1tvXTtpZihwLmNv bnRhaW5zKGwpKXt2YXIgcT1sLmRpc3RhbmNlVG8ocC5nZXRDZW50ZXIoKSk7aWYo cTxtKXttPXE7bj1vO319fXJldHVybiBuO30sYWJzb2x1dGVUb05vcm1hbGl6ZWRQ b3NpdGlvbjpmdW5jdGlvbihrLGwpe3ZhciBtPWkuZ2V0RWxlbWVudFBvc2l0aW9u KGspLG49aS5nZXRFbGVtZW50RGltZW5zaW9ucyhrKSxvPWwuc3ViKG0pLm11bCgx MDAvbi54LDEwMC9uLnkpO28uZG9tYWluPSdwdXJlJztyZXR1cm4gbzt9LG5vcm1h bGl6ZWRUb0Fic29sdXRlUG9zaXRpb246ZnVuY3Rpb24oayxsKXt2YXIgbT1pLmdl dEVsZW1lbnRQb3NpdGlvbihrKSxuPWkuZ2V0RWxlbWVudERpbWVuc2lvbnMoayks bz1sLm11bChuLngvMTAwLG4ueS8xMDApLmFkZChtKTtvLmRvbWFpbj0nZG9jdW1l bnQnO3JldHVybiBvO30saXNGYWNlYm94OmZ1bmN0aW9uKGspe3JldHVybiBrLm1h dGNoKC9eZmFjZTovKTt9fSk7ZS5leHBvcnRzPWo7fSk7Cl9fZCgiVUlQYWdlbGV0 IixbIkFqYXhQaXBlUmVxdWVzdCIsIkFzeW5jUmVxdWVzdCIsIkRPTSIsIkhUTUwi LCJTY3JpcHRQYXRoU3RhdGUiLCJVUkkiLCJjb3B5UHJvcGVydGllcyIsImdlIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FqYXhQaXBlUmVxdWVzdCcp LGg9YignQXN5bmNSZXF1ZXN0JyksaT1iKCdET00nKSxqPWIoJ0hUTUwnKSxrPWIo J1NjcmlwdFBhdGhTdGF0ZScpLGw9YignVVJJJyksbT1iKCdjb3B5UHJvcGVydGll cycpLG49YignZ2UnKTtmdW5jdGlvbiBvKHAscSxyLHMpe3RoaXMuX2lkPXB8fG51 bGw7dGhpcy5fZWxlbWVudD1uKHB8fGkuY3JlYXRlKCdkaXYnKSk7dGhpcy5fc3Jj PXF8fG51bGw7dGhpcy5fY29udGV4dF9kYXRhPXJ8fHt9O3RoaXMuX2RhdGE9c3x8 e307dGhpcy5faGFuZGxlcj1iYWdvZmhvbGRpbmc7dGhpcy5fcmVxdWVzdD1udWxs O3RoaXMuX3VzZV9hamF4cGlwZT1mYWxzZTt0aGlzLl9pc19idW5kbGU9dHJ1ZTt0 aGlzLl9hbGxvd19jcm9zc19wYWdlX3RyYW5zaXRpb249ZmFsc2U7dGhpcy5fYXBw ZW5kPWZhbHNlO3JldHVybiB0aGlzO31vLmxvYWRGcm9tRW5kcG9pbnQ9ZnVuY3Rp b24ocCxxLHIscyl7cz1zfHx7fTt2YXIgdD0nL2FqYXgvcGFnZWxldC9nZW5lcmlj LnBocC8nO2lmKHMuaW50ZXJuKXQ9Jy9pbnRlcm4nK3Q7dmFyIHU9KHQrcCkucmVw bGFjZSgvXC8rL2csJy8nKTtpZihzLnN1YmRvbWFpbil1PWwodSkuc2V0U3ViZG9t YWluKHMuc3ViZG9tYWluKTt2YXIgdj1uZXcgbyhxLHUscikuc2V0VXNlQWpheFBp cGUocy51c2VQaXBlKS5zZXRQYWdlbGV0Q2FjaGVNaXNzKHMucGFnZWxldENhY2hl TWlzcykuc2V0QnVuZGxlT3B0aW9uKHAuc3Vic3RyaW5nKDAsOCkhPScvaW50ZXJu LycmJnMuYnVuZGxlIT09ZmFsc2UpLnNldEFwcGVuZChzLmFwcGVuZCkuc2V0SlNO b25CbG9jayhzLmpzTm9uYmxvY2spLnNldEZvcmNlRmluaXNoKHMuZm9yY2VGaW5p

c2gpLnNldEF1dG9tYXRpYyhzLmF1dG9tYXRpYykuc2V0RGlzcGxheUNhbGxiYWNr KHMuZGlzcGxheUNhbGxiYWNrKS5zZXRDb25zdEhlaWdodChzLmNvbnN0SGVpZ2h0 KS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24ocy5jcm9zc1BhZ2UpO3MuaGFu ZGxlciYmdi5zZXRIYW5kbGVyKHMuaGFuZGxlcik7di5nbygpO3JldHVybiB2O307 bShvLnByb3RvdHlwZSx7Z2V0RWxlbWVudDpmdW5jdGlvbihwKXtwPXB8fGZhbHNl O2lmKHApdGhpcy5fZWxlbWVudD1uKHRoaXMuX2lkKTtyZXR1cm4gdGhpcy5fZWxl bWVudDt9LHNldEhhbmRsZXI6ZnVuY3Rpb24ocCl7dGhpcy5faGFuZGxlcj1wO3Jl dHVybiB0aGlzO30sZ286ZnVuY3Rpb24ocCxxKXtpZihhcmd1bWVudHMubGVuZ3Ro Pj0yfHx0eXBlb2YgcD09J3N0cmluZycpe3RoaXMuX3NyYz1wO3RoaXMuX2RhdGE9 cXx8e307fWVsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD09MSl0aGlzLl9kYXRhPXA7 dGhpcy5yZWZyZXNoKCk7cmV0dXJuIHRoaXM7fSxzZXRBbGxvd0Nyb3NzUGFnZVRy YW5zaXRpb246ZnVuY3Rpb24ocCl7dGhpcy5fYWxsb3dfY3Jvc3NfcGFnZV90cmFu c2l0aW9uPXA7cmV0dXJuIHRoaXM7fSxzZXRCdW5kbGVPcHRpb246ZnVuY3Rpb24o cCl7dGhpcy5faXNfYnVuZGxlPXA7cmV0dXJuIHRoaXM7fSxyZWZyZXNoOmZ1bmN0 aW9uKHApe3ZhciBxPWZ1bmN0aW9uKHQpe3RoaXMuX3JlcXVlc3Q9bnVsbDtpZihw JiZ0aGlzLl9pZCl0aGlzLl9lbGVtZW50PW4odGhpcy5faWQpO3ZhciB1PWoodC5n ZXRQYXlsb2FkKCkpO2lmKHRoaXMuX2FwcGVuZCl7aS5hcHBlbmRDb250ZW50KHRo aXMuX2VsZW1lbnQsdSk7fWVsc2UgaS5zZXRDb250ZW50KHRoaXMuX2VsZW1lbnQs dSk7dGhpcy5faGFuZGxlcigpO30uYmluZCh0aGlzKTtpZih0aGlzLl91c2VfYWph eHBpcGUpe2suc2V0SXNVSVBhZ2VsZXRSZXF1ZXN0KHRydWUpO3RoaXMuX3JlcXVl c3Q9bmV3IGcoKTt0aGlzLl9yZXF1ZXN0LnNldENhbnZhc0lkKHRoaXMuX2lkKS5z ZXRBcHBlbmQodGhpcy5fYXBwZW5kKS5zZXRDb25zdEhlaWdodCh0aGlzLl9jb25z dEhlaWdodCkuc2V0SlNOb25CbG9jayh0aGlzLl9qc05vbmJsb2NrKS5zZXRGb3Jj ZUZpbmlzaCh0aGlzLl9mb3JjZUZpbmlzaCkuc2V0QXV0b21hdGljKHRoaXMuX2F1 dG9tYXRpYykuc2V0UGFnZWxldENhY2hlTWlzcyh0aGlzLl9wYWdlbGV0Q2FjaGVN aXNzKS5zZXREaXNwbGF5Q2FsbGJhY2sodGhpcy5fZGlzcGxheUNhbGxiYWNrKTt9 ZWxzZXt2YXIgcj10aGlzLl9kaXNwbGF5Q2FsbGJhY2s7dGhpcy5fcmVxdWVzdD1u ZXcgaCgpLnNldE1ldGhvZCgnR0VUJykuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0T3B0 aW9uKCdidW5kbGUnLHRoaXMuX2lzX2J1bmRsZSkuc2V0SGFuZGxlcihmdW5jdGlv bih0KXtpZihyKXtyKHEuY3VycnkodCkpO31lbHNlIHEodCk7fSk7fXZhciBzPXt9 O20ocyx0aGlzLl9jb250ZXh0X2RhdGEpO20ocyx0aGlzLl9kYXRhKTt0aGlzLl9y ZXF1ZXN0LnNldFVSSSh0aGlzLl9zcmMpLnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNp dGlvbih0aGlzLl9hbGxvd19jcm9zc19wYWdlX3RyYW5zaXRpb24pLnNldERhdGEo e2RhdGE6SlNPTi5zdHJpbmdpZnkocyl9KS5zZW5kKCk7cmV0dXJuIHRoaXM7fSxj YW5jZWw6ZnVuY3Rpb24oKXtpZih0aGlzLl9yZXF1ZXN0KXRoaXMuX3JlcXVlc3Qu YWJvcnQoKTt9LHNldFVzZUFqYXhQaXBlOmZ1bmN0aW9uKHApe3RoaXMuX3VzZV9h amF4cGlwZT0hIXA7cmV0dXJuIHRoaXM7fSxzZXRQYWdlbGV0Q2FjaGVNaXNzOmZ1 bmN0aW9uKHApe3RoaXMuX3BhZ2VsZXRDYWNoZU1pc3M9cDtyZXR1cm4gdGhpczt9 LHNldEFwcGVuZDpmdW5jdGlvbihwKXt0aGlzLl9hcHBlbmQ9ISFwO3JldHVybiB0 aGlzO30sc2V0SlNOb25CbG9jazpmdW5jdGlvbihwKXt0aGlzLl9qc05vbmJsb2Nr PSEhcDtyZXR1cm4gdGhpczt9LHNldEZvcmNlRmluaXNoOmZ1bmN0aW9uKHApe3Ro aXMuX2ZvcmNlRmluaXNoPSEhcDtyZXR1cm4gdGhpczt9LHNldEF1dG9tYXRpYzpm dW5jdGlvbihwKXt0aGlzLl9hdXRvbWF0aWM9ISFwO3JldHVybiB0aGlzO30sc2V0 RGlzcGxheUNhbGxiYWNrOmZ1bmN0aW9uKHApe3RoaXMuX2Rpc3BsYXlDYWxsYmFj az1wO3JldHVybiB0aGlzO30sc2V0Q29uc3RIZWlnaHQ6ZnVuY3Rpb24ocCl7dGhp cy5fY29uc3RIZWlnaHQ9ISFwO3JldHVybiB0aGlzO319KTtlLmV4cG9ydHM9bzt9 KTsKX19kKCJQaG90b1N0cmVhbUNhY2hlIixbImFycmF5LWV4dGVuc2lvbnMiLCJI VE1MIiwiUGhvdG9zQ29uc3QiLCJQaG90b0V2ZXJzdG9yZUxvZ2dlciIsIlJlY3Qi LCJVSVBhZ2VsZXQiLCJVUkkiLCJWZWN0b3IiLCJjb3B5UHJvcGVydGllcyIsImNy ZWF0ZUFycmF5RnJvbSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdhcnJheS1l eHRlbnNpb25zJyk7dmFyIGc9YignSFRNTCcpLGg9YignUGhvdG9zQ29uc3QnKSxp PWIoJ1Bob3RvRXZlcnN0b3JlTG9nZ2VyJyksaj1iKCdSZWN0Jyksaz1iKCdVSVBh Z2VsZXQnKSxsPWIoJ1VSSScpLG09YignVmVjdG9yJyksbj1iKCdjb3B5UHJvcGVy dGllcycpLG89YignY3JlYXRlQXJyYXlGcm9tJyk7ZnVuY3Rpb24gcCgpe31uKHAs e0VSUk9SOidlcnJvcicsSFRNTDonaHRtbCcsSU1BR0VfREFUQTonaW1hZ2UnLEVY VFJBOidleHRyYScsQlVGRkVSX1NJWkU6MyxJTklUX0JVQ0tFVF9TSVpFOjQsRlVM TF9CVUNLRVRfU0laRToxMixFUlJPUl9JRDotMSxJTklUX1BMQUNFSE9MREVSOjF9 KTtuKHAucHJvdG90eXBlLHtpbml0OmZ1bmN0aW9uKHEscil7dGhpcy52ZXJzaW9u PXE7dGhpcy5wYWdlbGV0TmFtZT1yO3RoaXMuYnVmZmVyU2l6ZT1wLkJVRkZFUl9T SVpFO3RoaXMuZnVsbEJ1Y2tldFNpemU9cC5GVUxMX0JVQ0tFVF9TSVpFO3RoaXMu

aW5pdEVycm9yPWZhbHNlO3RoaXMuaXNBY3RpdmU9dHJ1ZTt0aGlzLmxlZnRMb2Nr PWZhbHNlO3RoaXMucmlnaHRMb2NrPWZhbHNlO3RoaXMucmVzZXQoKTt9LHJlc2V0 OmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT17aW1hZ2U6e30sZXh0cmE6e30saHRtbDp7 fX07dGhpcy5mYmlkTGlzdD1bXTt0aGlzLmxvYWRlZD1mYWxzZTt0aGlzLmFsbExv YWRlZD1mYWxzZTt0aGlzLnBlcm1hbGlua01hcD17fTt0aGlzLnBvc2l0aW9uPTA7 dGhpcy50b3RhbENvdW50PW51bGw7dGhpcy5maXJzdEN1cnNvcj1udWxsO3RoaXMu Zmlyc3RDdXJzb3JJbmRleD1udWxsO30sd2FpdEZvckluaXREYXRhOmZ1bmN0aW9u KCl7dGhpcy5mYmlkTGlzdC5wdXNoKHAuSU5JVF9QTEFDRUhPTERFUik7fSxkZXN0 cm95OmZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpO3RoaXMuaXNBY3RpdmU9ZmFsc2U7 fSxpc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvYWRlZDt9LGNhblBh Z2U6ZnVuY3Rpb24oKXtpZighdGhpcy5pc0xvYWRlZCgpKXJldHVybiBmYWxzZTtp Zih0aGlzLnRvdGFsQ291bnQhPT1udWxsKXJldHVybiB0aGlzLnRvdGFsQ291bnQ+ MTtyZXR1cm4gdGhpcy5nZXRMZW5ndGgoKT4xO30sZXJyb3JJbkN1cnJlbnQ6ZnVu Y3Rpb24oKXtpZih0aGlzLmluaXRFcnJvcil7cmV0dXJuIHRydWU7fWVsc2UgaWYo IXRoaXMuaXNMb2FkZWQoKSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRoaXMuY2hlY2tF cnJvckF0KHRoaXMuZ2V0Q3Vyc29yKCkpO30sZ2V0TGVuZ3RoOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuZmJpZExpc3QubGVuZ3RoO30sZ2V0UGhvdG9TZXQ6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5waG90b1NldFF1ZXJ5LnNldDt9LGdldFBob3RvU2V0 UXVlcnk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5waG90b1NldFF1ZXJ5O30sZ2V0 Q3VycmVudEltYWdlRGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEltYWdl RGF0YSh0aGlzLmdldEN1cnNvcigpKTt9LGdldEltYWdlRGF0YTpmdW5jdGlvbihx KXtyZXR1cm4gdGhpcy5nZXRDYWNoZUNvbnRlbnQocSxwLklNQUdFX0RBVEEpO30s Z2V0Q3VycmVudEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRDYWNoZUNv bnRlbnQodGhpcy5nZXRDdXJzb3IoKSxwLkhUTUwpO30sZ2V0Q3VycmVudEV4dHJh RGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldENhY2hlQ29udGVudCh0aGlz LmdldEN1cnNvcigpLHAuRVhUUkEpO30sZ2V0Q2FjaGVDb250ZW50OmZ1bmN0aW9u KHEscil7aWYoIXF8fHE9PT1wLkVSUk9SX0lEfHxxPT09cC5JTklUX1BMQUNFSE9M REVSKXJldHVybiBudWxsO3JldHVybiB0aGlzLmNhY2hlW3JdW3FdO30sZ2V0Q3Vy c29yUG9zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb247fSxnZXRDdXJz b3I6ZnVuY3Rpb24oKXtpZih0aGlzLnBvc2l0aW9uPj0wJiZ0aGlzLnBvc2l0aW9u PHRoaXMuZ2V0TGVuZ3RoKCkpcmV0dXJuIHRoaXMuZmJpZExpc3RbdGhpcy5wb3Np dGlvbl07cmV0dXJuIG51bGw7fSxnZXRDdXJzb3JGb3JVUkk6ZnVuY3Rpb24ocSl7 cmV0dXJuIHRoaXMucGVybWFsaW5rTWFwW3FdO30sY2FsY3VsYXRlUG9zaXRpb25G b3JNb3ZlbWVudDpmdW5jdGlvbihxKXt2YXIgcj10aGlzLnBvc2l0aW9uK3E7aWYo dGhpcy5hbGxMb2FkZWQpe3ZhciBzPXRoaXMuZ2V0TGVuZ3RoKCk7cj0ocytyJXMp JXM7fXJldHVybiByO30saXNWYWxpZE1vdmVtZW50OmZ1bmN0aW9uKHEpe2lmKCF0 aGlzLmlzTG9hZGVkKCl8fCF0aGlzLmNhblBhZ2UoKSlyZXR1cm4gZmFsc2U7dmFy IHI9dGhpcy5jYWxjdWxhdGVQb3NpdGlvbkZvck1vdmVtZW50KHEpO3JldHVybiB0 aGlzLmdldEN1cnNvcigpPjB8fChyPj0wJiZyPHRoaXMuZ2V0TGVuZ3RoKCkpO30s bW92ZUN1cnNvcjpmdW5jdGlvbihxKXtpZighdGhpcy5pc1ZhbGlkTW92ZW1lbnQo cSkpcmV0dXJuO3RoaXMucG9zaXRpb249dGhpcy5jYWxjdWxhdGVQb3NpdGlvbkZv ck1vdmVtZW50KHEpO2lmKHEhPT0wKXRoaXMubG9hZE1vcmVJZk5lY2Nlc3Nhcnko cT4wKTt9LGNoZWNrRXJyb3JBdDpmdW5jdGlvbihxKXtpZighdGhpcy5pc0xvYWRl ZCgpKXJldHVybiBmYWxzZTtpZihxPT09cC5FUlJPUl9JRClyZXR1cm4gdHJ1ZTty ZXR1cm4gZmFsc2U7fSxnZXRSZWxhdGl2ZU1vdmVtZW50OmZ1bmN0aW9uKHEpe2Zv cih2YXIgcj0wO3I8dGhpcy5nZXRMZW5ndGgoKTtyKyspaWYodGhpcy5mYmlkTGlz dFtyXT09cSlyZXR1cm4gci10aGlzLnBvc2l0aW9uO3JldHVybiBudWxsO30scHJl bG9hZEltYWdlczpmdW5jdGlvbihxKXt2YXIgcixzLHQ9dGhpcy5nZXRMZW5ndGgo KSx1PXRoaXMuY2FjaGUuaW1hZ2Usdj1wLkJVRkZFUl9TSVpFO2lmKHQ+dioyKXty PSh0aGlzLnBvc2l0aW9uK3QtdiV0KSV0O3M9KHRoaXMucG9zaXRpb24rdikldDt9 ZWxzZXtyPTA7cz10LTE7fXdoaWxlKHIhPXMpe3ZhciB3PXRoaXMuZmJpZExpc3Rb cl07aWYodVt3XSYmdVt3XS51cmwpaWYocSYmIXVbd10ucmVzb3VyY2Upe3Vbd10u cmVzb3VyY2U9bmV3IEltYWdlKCk7dVt3XS5yZXNvdXJjZS5zcmM9dVt3XS51cmw7 aWYodVt3XS5ldmVyc3RvcmVMb2dUaGlzPT09dHJ1ZSlpLmxvZ0ltbWVkaWF0ZWx5 KHVbd10ucmVzb3VyY2Uuc3JjKTt9ZWxzZSBpZighcSYmIXVbd10uc21hbGwpe3Vb d10uc21hbGw9bmV3IEltYWdlKCk7dVt3XS5zbWFsbC5zcmM9dVt3XS5zbWFsbHVy bHx8dVt3XS51cmw7aWYodVt3XS5ldmVyc3RvcmVMb2dUaGlzPT09dHJ1ZSlpLmxv Z0ltbWVkaWF0ZWx5KHVbd10uc21hbGwuc3JjKTt9cj0ocisxKSV0O319LGxvYWRN b3JlSWZOZWNjZXNzYXJ5OmZ1bmN0aW9uKHEpe2lmKHRoaXMuYWxsTG9hZGVkfHwo cSYmdGhpcy5yaWdodExvY2spfHwoIXEmJnRoaXMubGVmdExvY2spKXJldHVybjt2

YXIgcj1xPzE6LTEscz10aGlzLnBvc2l0aW9uK3RoaXMuYnVmZmVyU2l6ZSpyO2lm KHM8MCYmIXRoaXMuY2hlY2tFcnJvckF0KHRoaXMuZ2V0RW5kQ3Vyc29yKGZhbHNl KSkpe3RoaXMubGVmdExvY2s9dHJ1ZTt0aGlzLmZldGNoKHRoaXMuZnVsbEJ1Y2tl dFNpemUsZmFsc2UpO31lbHNlIGlmKHM+dGhpcy5nZXRMZW5ndGgoKSYmIXRoaXMu Y2hlY2tFcnJvckF0KHRoaXMuZ2V0RW5kQ3Vyc29yKHRydWUpKSl7dGhpcy5yaWdo dExvY2s9dHJ1ZTt0aGlzLmZldGNoKHRoaXMuZnVsbEJ1Y2tldFNpemUsdHJ1ZSk7 fX0sZ2V0RW5kQ3Vyc29yOmZ1bmN0aW9uKHEpe3JldHVybiBxP3RoaXMuZmJpZExp c3RbdGhpcy5nZXRMZW5ndGgoKS0xXTp0aGlzLmZiaWRMaXN0WzBdO30sY2FsY3Vs YXRlUmVsYXRpdmVJbmRleDpmdW5jdGlvbihxLHIscyl7aWYoIXRoaXMudG90YWxD b3VudClyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmZiaWRMaXN0LmluZGV4T2Yociks dT10aGlzLmZiaWRMaXN0LmluZGV4T2Yocyk7aWYodD09PS0xfHx1PT09LTEpcmV0 dXJuIG51bGw7dmFyIHY9dS10O3JldHVybiAocSt2K3RoaXMudG90YWxDb3VudCkl dGhpcy50b3RhbENvdW50O30sY2FsY3VsYXRlRGlzdGFuY2U6ZnVuY3Rpb24ocSxy KXt2YXIgcz10aGlzLmZiaWRMaXN0LmluZGV4T2YocSksdD10aGlzLmZiaWRMaXN0 LmluZGV4T2Yocik7aWYocz09PS0xfHx0PT09LTEpcmV0dXJuIG51bGw7cmV0dXJu ICh0LXMrdGhpcy5nZXRMZW5ndGgoKSkldGhpcy5nZXRMZW5ndGgoKTt9LGZldGNo OmZ1bmN0aW9uKHEscil7dmFyIHM9dGhpcy5nZXRFbmRDdXJzb3IociksdD1uKHtj dXJzb3I6cyx2ZXJzaW9uOnRoaXMudmVyc2lvbixlbmQ6dGhpcy5nZXRFbmRDdXJz b3IoIXIpLGZldGNoU2l6ZTpyP3E6LTEqcSxyZWxldmFudF9jb3VudDp0aGlzLnJl bGV2YW50Q291bnR9LHRoaXMucGhvdG9TZXRRdWVyeSk7aWYodGhpcy50b3RhbENv dW50JiZ0aGlzLmZpcnN0Q3Vyc29ySW5kZXghPT1udWxsKXt0LnRvdGFsPXRoaXMu dG90YWxDb3VudDt0LmN1cnNvckluZGV4PXRoaXMuY2FsY3VsYXRlUmVsYXRpdmVJ bmRleCh0aGlzLmZpcnN0Q3Vyc29ySW5kZXgsdGhpcy5maXJzdEN1cnNvcixzKTt9 ay5sb2FkRnJvbUVuZHBvaW50KHRoaXMucGFnZWxldE5hbWUsbnVsbCx0LHt1c2VQ aXBlOnRydWUsanNOb25ibG9jazp0cnVlLGNyb3NzUGFnZTp0cnVlfSk7fSxzdG9y ZVRvQ2FjaGU6ZnVuY3Rpb24ocSl7dmFyIHI9e307aWYoIXRoaXMuaXNBY3RpdmUp cmV0dXJuIHI7aWYoJ2Vycm9yJyBpbiBxKXt0aGlzLnByb2Nlc3NFcnJvclJlc3Vs dChxLmVycm9yKTtyLmVycm9yPXRydWU7cmV0dXJuIHI7fWlmKCdpbml0JyBpbiBx KXt0aGlzLnByb2Nlc3NJbml0UmVzdWx0KHEuaW5pdCk7ci5pbml0PXtsb2dpZHM6 cS5pbml0LmxvZ2lkcyxmYmlkOnEuaW5pdC5mYmlkLGxvZ2dlZGluOnEuaW5pdC5s b2dnZWRpbixmcm9tYWQ6cS5pbml0LmZyb21hZH07fWlmKCdpbWFnZScgaW4gcSl7 dGhpcy5wcm9jZXNzSW1hZ2VSZXN1bHQocS5pbWFnZSk7ci5pbWFnZT10cnVlO31p ZignZGF0YScgaW4gcSl7dGhpcy5wcm9jZXNzRGF0YVJlc3VsdChxLmRhdGEpO3Iu ZGF0YT10cnVlO31yZXR1cm4gcjt9LHByb2Nlc3NJbml0UmVzdWx0OmZ1bmN0aW9u KHEpe2lmKHRoaXMubG9hZGVkKXJldHVybjt0aGlzLmxvYWRlZD10cnVlO3RoaXMu cGhvdG9TZXRRdWVyeT1xLnF1ZXJ5O2lmKHEuYnVmZmVyU2l6ZSl0aGlzLmJ1ZmZl clNpemU9cS5idWZmZXJTaXplO2lmKHEuZnVsbEJ1Y2tldFNpemUpdGhpcy5mdWxs QnVja2V0U2l6ZT1xLmZ1bGxCdWNrZXRTaXplO2lmKHRoaXMuZmJpZExpc3QubGVu Z3RoPT09MCl7dGhpcy5mYmlkTGlzdC5wdXNoKHEuZmJpZCk7dGhpcy5yaWdodExv Y2s9dHJ1ZTt9ZWxzZXt2YXIgcj10aGlzLmZiaWRMaXN0LmluZGV4T2YocC5JTklU X1BMQUNFSE9MREVSKTtpZihyIT0tMSl0aGlzLmZiaWRMaXN0W3JdPXEuZmJpZDt9 dGhpcy5maXJzdEN1cnNvcj1xLmZiaWQ7aWYoJ2luaXRJbmRleCcgaW4gcSYmJ3Rv dGFsQ291bnQnIGluIHEpe3RoaXMuZmlyc3RDdXJzb3JJbmRleD1xLmluaXRJbmRl eDt0aGlzLnRvdGFsQ291bnQ9cS50b3RhbENvdW50O31pZih0aGlzLnZlcnNpb249 PWguVklFV0VSX1BFUk1BTElOSyl0aGlzLmZldGNoKHAuSU5JVF9CVUNLRVRfU0la RSx0cnVlKTt9LHByb2Nlc3NJbWFnZVJlc3VsdDpmdW5jdGlvbihxKXtmb3IodmFy IHIgaW4gcSl7aWYocj09PXRoaXMuZmlyc3RDdXJzb3ImJnFbcl0uZXZlcnN0b3Jl TG9nVGhpcylpLmxvZ0ltbWVkaWF0ZWx5KHFbcl0udXJsKTt0aGlzLmNhY2hlLmlt YWdlW3JdPXFbcl07aWYocVtyXS5kaW1lbnNpb25zKXRoaXMuY2FjaGUuaW1hZ2Vb cl0uZGltZW5zaW9ucz1tLmRlc2VyaWFsaXplKHFbcl0uZGltZW5zaW9ucyk7aWYo cVtyXS5zbWFsbGRpbXMpdGhpcy5jYWNoZS5pbWFnZVtyXS5zbWFsbGRpbXM9bS5k ZXNlcmlhbGl6ZShxW3JdLnNtYWxsZGltcyk7dGhpcy5wZXJtYWxpbmtNYXBbbChx W3JdLmluZm8ucGVybWFsaW5rKS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5n KCldPXI7fX0sYXR0YWNoVG9GYmlkc0xpc3Q6ZnVuY3Rpb24ocSxyLHMpe2lmKHRo aXMuYWxsTG9hZGVkKXJldHVybjtpZihyPT09LTEpe2Zvcih2YXIgdD1xLmxlbmd0 aC0xO3Q+PTA7dC0tKXt0aGlzLmZiaWRMaXN0LnVuc2hpZnQocVt0XSk7dGhpcy5w b3NpdGlvbisrO310aGlzLmxlZnRMb2NrPWZhbHNlO31lbHNle2Zvcih2YXIgdT0w O3U8cS5sZW5ndGg7dSsrKXRoaXMuZmJpZExpc3QucHVzaChxW3VdKTt0aGlzLnJp Z2h0TG9jaz1mYWxzZTt9aWYocyl0aGlzLnNldEFsbExvYWRlZCgpO30sc2V0QWxs TG9hZGVkOmZ1bmN0aW9uKCl7dGhpcy5hbGxMb2FkZWQ9dHJ1ZTtpZih0aGlzLmdl

dEN1cnNvcigpPT09bnVsbCl0aGlzLnBvc2l0aW9uPXRoaXMuY2FsY3VsYXRlUG9z aXRpb25Gb3JNb3ZlbWVudCgwKTt9LHByb2Nlc3NEYXRhUmVzdWx0OmZ1bmN0aW9u KHEpe2Zvcih2YXIgciBpbiBxKXtpZighdGhpcy5jYWNoZS5odG1sW3JdKXRoaXMu Y2FjaGUuaHRtbFtyXT17fTtmb3IodmFyIHMgaW4gcVtyXS5odG1sKXt2YXIgdD1x W3JdLmh0bWxbc107aWYodHlwZW9mIHQ9PT0nc3RyaW5nJyl0PWcodCkuZ2V0Um9v dE5vZGUoKTt0aGlzLmNhY2hlLmh0bWxbcl1bc109byh0LmNoaWxkTm9kZXMpO31p ZighKCdleHRyYScgaW4gcVtyXSkpe3RoaXMuY2FjaGUuZXh0cmFbcl09bnVsbDtj b250aW51ZTt9dGhpcy5jYWNoZS5leHRyYVtyXT17dGFnUmVjdHM6e319O2lmKCFB cnJheS5pc0FycmF5KHFbcl0uZXh0cmEudGFnUmVjdHMpKWZvcih2YXIgdSBpbiBx W3JdLmV4dHJhLnRhZ1JlY3RzKWlmKHFbcl0uZXh0cmEudGFnUmVjdHNbdV0pdGhp cy5jYWNoZS5leHRyYVtyXS50YWdSZWN0c1t1XT1qLmRlc2VyaWFsaXplKHFbcl0u ZXh0cmEudGFnUmVjdHNbdV0pO319LHByb2Nlc3NFcnJvclJlc3VsdDpmdW5jdGlv bihxKXtpZighdGhpcy5pc0xvYWRlZCgpKXt0aGlzLmluaXRFcnJvcj10cnVlO3Jl dHVybjt9dmFyIHI9cS5zaWRlLHM9W3AuRVJST1JfSURdO3RoaXMuYXR0YWNoVG9G Ymlkc0xpc3QocyxyKTt9LHNldFRvdGFsQ291bnQ6ZnVuY3Rpb24ocSl7dGhpcy50 b3RhbENvdW50PXE7fSxzZXRGaXJzdEN1cnNvckluZGV4OmZ1bmN0aW9uKHEpe3Ro aXMuZmlyc3RDdXJzb3JJbmRleD1xO319KTtlLmV4cG9ydHM9cDt9KTsKX19kKCJQ aG90b1Nub3dsaWZ0QWRzIixbImFycmF5LWV4dGVuc2lvbnMiLCJldmVudC1leHRl bnNpb25zIiwiY29weVByb3BlcnRpZXMiLCJDU1MiLCJjc3giLCJEYXRhU3RvcmUi LCJET00iLCJQaG90b1Nlc3Npb25Mb2ciLCJVSVBhZ2VsZXQiLCJVUkkiLCJWZWN0 b3IiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignYXJyYXktZXh0ZW5zaW9ucycp O2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdjb3B5UHJvcGVydGllcycp LGg9YignQ1NTJyksaT1iKCdjc3gnKSxqPWIoJ0RhdGFTdG9yZScpLGs9YignRE9N JyksbD1iKCdQaG90b1Nlc3Npb25Mb2cnKSxtPWIoJ1VJUGFnZWxldCcpLG49Yign VVJJJyksbz1iKCdWZWN0b3InKSxwPXtERUZBVUxUX1VOSVRTX1JFRlJFU0hfUkFU RTozMDAwMCxVTklUU19SRUdJU1RFUl9ERUxBWToxMDAwLHJvb3Q6bnVsbCxhdmFp bGFibGVEaW1lbnNpb25zOm51bGwsbG9hZFF1ZXJ5Om51bGwsbGFzdExvYWRUaW1l OjAsbWluQWRzOjEwMCx1bml0czpudWxsLGlzTG9nQWREYXRhOm51bGwscmVmcmVz aFVuaXRzUmF0ZTpudWxsLGFkc1N0YXR1czonbnVsbCcsYWRzRXZlbnRzOnt9LHJl c2V0RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5hZHNTdGF0dXM9J3Jlc2V0Jzt0aGlz LmFkc0V2ZW50cz17fTt9LGFkZEV2ZW50OmZ1bmN0aW9uKHEscil7aWYocil0aGlz LmFkc1N0YXR1cz1xO3ZhciBzPURhdGUubm93KCk7dGhpcy5hZHNFdmVudHNbcSsn Xycrc109czt9LGluaXQ6ZnVuY3Rpb24ocSxyLHMpe3RoaXMucmVzZXQoKTt0aGlz LnJvb3Q9cTt0aGlzLnNub3dsaWZ0PXI7dGhpcy5taW5BZHM9cy5taW5fYWRzO3Ro aXMuYWRkRXZlbnQoJ2luaXQnLHRydWUpO3RoaXMucmVmcmVzaFVuaXRzUmF0ZT1w LkRFRkFVTFRfVU5JVFNfUkVGUkVTSF9SQVRFO2lmKHMucmVmcmVzaF9mYXN0KXRo aXMucmVmcmVzaFVuaXRzUmF0ZT1zLnJlZnJlc2hfcmF0ZTt9LHJlc2V0OmZ1bmN0 aW9uKCl7dGhpcy5sYXN0TG9hZFRpbWU9MDt0aGlzLnVuaXRzPVtdO3RoaXMucmVz ZXRFdmVudHMoKTt0aGlzLmFkZEV2ZW50KCdyZXNldCcsdHJ1ZSk7fSxyZXNpemU6 ZnVuY3Rpb24ocSl7dGhpcy5hdmFpbGFibGVEaW1lbnNpb25zPXE7dGhpcy5sb2Fk UXVlcnk9dGhpcy5zbm93bGlmdC5nZXRMb2FkUXVlcnkoKTt0aGlzLnByb2Nlc3NS ZXNpemUoKTt9LGNhbGN1bGF0ZVVuaXRTaXplczpmdW5jdGlvbihxLHIpe3ZhciBz PXt9O3EuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgdT10LnJvb3QuZmlyc3RDaGls ZC5vZmZzZXRIZWlnaHQ7dC51bml0cy5mb3JFYWNoKGZ1bmN0aW9uKHcpe2lmKCFo Lmhhc0NsYXNzKHcsJ2hpZGRlbicpKXt2YXIgeD10aGlzLmdldEhlaWdodCh3LmZp cnN0Q2hpbGQscik7dS09eDt9fS5iaW5kKHRoaXMpKTt2YXIgdj17aGVpZ2h0OnUs dmlzaWJsZTpmYWxzZX07dC51bml0cy5mb3JFYWNoKGZ1bmN0aW9uKHcpe3ZhciB4 PXRoaXMuZ2V0SXNBZHModykseT10aGlzLmdldEhlaWdodCh3LmZpcnN0Q2hpbGQs ciksej10aGlzLmdldFVuaXRJZCh3KTtzW3pdPXtoZWlnaHQ6eSx2aXNpYmxlOmZh bHNlLHByaW9yaXR5OjAsaXNfYWRzOngsc2VjdGlvbl9yZWY6dn07fS5iaW5kKHRo aXMpKTt9LmJpbmQodGhpcykpO3JldHVybiBzO30sY2FsY3VsYXRlVmlzaWJsZVVu aXRzOmZ1bmN0aW9uKHEscixzKXt2YXIgdD0wLHU9dGhpcy5nZXRVbml0UHJpb3Jp dHkocik7dS5mb3JFYWNoKGZ1bmN0aW9uKHYpe2lmKHIuaGFzT3duUHJvcGVydHko dikpe3ZhciB3PXJbdl0seD13LmhlaWdodDtpZighdy5zZWN0aW9uX3JlZi52aXNp YmxlKXgrPXcuc2VjdGlvbl9yZWYuaGVpZ2h0O3cuaGVpZ2h0X2JlbG93PXMteDt3 LnZpc2libGU9dy5oZWlnaHRfYmVsb3c+PTAmJng+MDtpZih3LnZpc2libGUpe3cu c2VjdGlvbl9yZWYudmlzaWJsZT10cnVlO3MtPXg7dCsrO319fS5iaW5kKHRoaXMp KTtyZXR1cm4gcjt9LGRpc3BsYXlVbml0czpmdW5jdGlvbihxLHIpe3EuZm9yRWFj aChmdW5jdGlvbihzKXt2YXIgdD1mYWxzZTtzLnVuaXRzLmZvckVhY2goZnVuY3Rp b24odSl7dmFyIHY9dGhpcy5nZXRVbml0SWQodSksdz1yW3ZdLHg9dy52aXNpYmxl

LHk9dy5oZWlnaHRfYmVsb3csej13LmlzX2FkcztoLmNvbmRpdGlvbkNsYXNzKHUs J2hpZGRlbicsIXgpO3Q9dHx8eDt0aGlzLmNhbGNVbml0U3RhdHModGhpcy51bml0 c1t6XVt2XSx4LHkpO30uYmluZCh0aGlzKSk7aC5jb25kaXRpb25DbGFzcyhzLnJv b3QsJ2hpZGRlbicsIXQpO30uYmluZCh0aGlzKSk7fSxnZXRVbml0UHJpb3JpdHk6 ZnVuY3Rpb24ocSl7dmFyIHI9W10scz0wLHQ9MDtmb3IodmFyIHUgaW4gcSl7dmFy IHY9cVt1XTtyLnB1c2godSk7dmFyIHc9dGhpcy5taW5BZHMrcyt0O2lmKHYuaXNf YWRzKXtpZih0PHRoaXMubWluQWRzKXc9dDt0Kys7fWVsc2UgcysrO3YucHJpb3Jp dHk9dzt9cj1yLnNvcnQoZnVuY3Rpb24oeCx5KXt2YXIgej1xW3hdLGFhPXFbeV07 cmV0dXJuIHoucHJpb3JpdHktYWEucHJpb3JpdHk7fS5iaW5kKHRoaXMpKTtyZXR1 cm4gcjt9LHVwZGF0ZVVuaXRzU3RhdHVzOmZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5h dmFpbGFibGVEaW1lbnNpb25zLngscj10aGlzLmF2YWlsYWJsZURpbWVuc2lvbnMu eSxzPXRoaXMuY2FsY3VsYXRlVW5pdFNpemVzKHRoaXMuc2VjdGlvbnMscSk7cz10 aGlzLmNhbGN1bGF0ZVZpc2libGVVbml0cyh0aGlzLnNlY3Rpb25zLHMscik7dGhp cy5kaXNwbGF5VW5pdHModGhpcy5zZWN0aW9ucyxzKTt9LGNhbGNVbml0U3RhdHM6 ZnVuY3Rpb24ocSxyLHMpe3ZhciB0PURhdGUubm93KCk7aWYocS52aXNpYmxlKXEu dG90YWxUaW1lKz10LXEubGFzdFNob3dUaW1lO2lmKHEudHJhY2tpbmdDb2RlIT09 bnVsbCYmcS50b3RhbFRpbWU+PXRoaXMuVU5JVFNfUkVHSVNURVJfREVMQVkpe3Zh ciB1PXEudHJhY2tpbmdDb2RlO3EudHJhY2tpbmdDb2RlPW51bGw7dGhpcy5yZWdp c3RlckltcHJlc3Npb24odSxxLnJlZ2lzdGVyVXJsKTt9cS52aXNpYmxlPXI7cS5o ZWlnaHRCZWxvdz1zO3EubGFzdFNob3dUaW1lPXQ7fSxwcmVwYXJlUmVzaXplOmZ1 bmN0aW9uKCl7dmFyIHE9ZnVuY3Rpb24ocil7dmFyIHM9ay5jcmVhdGUoJ2Rpdics e2NsYXNzTmFtZTonaW5uZXInfSksdD1rLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1l Oid3cmFwcGVyJ30scyk7ay5yZXBsYWNlKHIsdCk7ay5zZXRDb250ZW50KHMscik7 cmV0dXJuIHQ7fTt0aGlzLnNlY3Rpb25zPWsuc2NyeSh0aGlzLnJvb3QsJ2Rpdi5l Z29fc2VjdGlvbicpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4ge3Jvb3Q6cShyKSx1 bml0czprLnNjcnkociwnZGl2LmVnb191bml0JykubWFwKHEpfTt9KTt9LHByb2Nl c3NSZXNpemU6ZnVuY3Rpb24oKXtpZih0aGlzLmlzTG9hZGluZ3x8dGhpcy5sYXN0 TG9hZFRpbWU9PT0wfHx0aGlzLmF2YWlsYWJsZURpbWVuc2lvbnM9PT1udWxsKXt0 aGlzLnNldExvZ0RhdGEoKTtyZXR1cm47fXRoaXMudXBkYXRlVW5pdHNTdGF0dXMo KTt0aGlzLnNldExvZ0RhdGEoKTt2YXIgcT10aGlzLm5leHRSZWdpc3RlclRpbWUo KTtpZihxIT09SW5maW5pdHkpdGhpcy5wcm9jZXNzUmVzaXplLmJpbmQodGhpcyku ZGVmZXIocSx0cnVlKTt9LHNldElzTG9nQWREYXRhOmZ1bmN0aW9uKHEpe3RoaXMu aXNMb2dBZERhdGE9cTt0aGlzLmFkZEV2ZW50KCdzZXRJc0xvZ0FkRGF0YScsZmFs c2UpO3RoaXMuc2V0TG9nRGF0YSgpO30sc2V0TG9nRGF0YTpmdW5jdGlvbigpe3Zh ciBxPXRoaXMuc25vd2xpZnQuZ2V0SW1hZ2VJZCgpO2lmKHRoaXMuaXNMb2dBZERh dGEmJnEpe3ZhciByPW8uZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5zbm93bGlm dC5nZXRJbWFnZSgpKSxzPW8uZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5zbm93 bGlmdC5nZXRSSENIZWFkZXIoKSksdD1vLmdldEVsZW1lbnREaW1lbnNpb25zKHRo aXMuc25vd2xpZnQuZ2V0UkhDQm9keSgpKSx1PW8uZ2V0RWxlbWVudERpbWVuc2lv bnModGhpcy5zbm93bGlmdC5nZXRSSENGb290ZXIoKSksdj17cXVlcnlfc2V0OnRo aXMuc25vd2xpZnQuZ2V0TG9hZFF1ZXJ5KCkuc2V0LHdpbmRvd194OndpbmRvdy5p bm5lcldpZHRoLHdpbmRvd195OndpbmRvdy5pbm5lckhlaWdodCxpbWFnZV94OnIu eCxpbWFnZV95OnIueSxoZWFkZXJfeDpzLngsaGVhZGVyX3k6cy55LGJvZHlfeDp0 LngsYm9keV95OnQueSxmb290ZXJfeDp1LngsZm9vdGVyX3k6dS55LGFkc19iZWxv d19zcGFjZTp0aGlzLmdldEFkc0JlbG93U3BhY2UoKSx0aW1lOkRhdGUubm93KCks YWRzU3RhdHVzOnRoaXMuYWRzU3RhdHVzLGFkc0V2ZW50czp0aGlzLmFkc0V2ZW50 c307bC51cGRhdGVBZERhdGEocSx2KTt9fSxnZXRBZHNCZWxvd1NwYWNlOmZ1bmN0 aW9uKCl7dmFyIHE9W10scj10aGlzLnVuaXRzWzFdO2Zvcih2YXIgcyBpbiByKWlm KHIuaGFzT3duUHJvcGVydHkocykpcS5wdXNoKHJbc10uaGVpZ2h0QmVsb3cpO3Jl dHVybiBxO30sZ2V0SXNBZHM6ZnVuY3Rpb24ocSl7dmFyIHI9ay5zY3J5KHEsImRp di4tY3gtUFJJVkFURS1mYkFkVW5pdF9fcm9vdCIpO3JldHVybiByLmxlbmd0aDt9 LGdldFVuaXRJZDpmdW5jdGlvbihxKXtpZih0aGlzLmdldElzQWRzKHEpKXtyZXR1 cm4gdGhpcy5nZXRBZElkKHEpO31lbHNlIHJldHVybiB0aGlzLmdldEVnb0lkKHEp O30sZ2V0RWdvSWQ6ZnVuY3Rpb24ocSl7dmFyIHI9ay5maW5kKHEsJ2Rpdi5lZ29f dW5pdCcpO3JldHVybiByLmdldEF0dHJpYnV0ZSgnZGF0YS1lZ28tZmJpZCcpO30s Z2V0QWRJZDpmdW5jdGlvbihxKXt2YXIgcj1rLmZpbmQocSwiZGl2Li1jeC1QUklW QVRFLWZiQWRVbml0X19yb290Iikscz1yLmdldEF0dHJpYnV0ZSgnZGF0YS1hZCcp LHQ9SlNPTi5wYXJzZShzKS5hZGlkO3JldHVybiB0O30sbmV4dFJlZ2lzdGVyVGlt ZTpmdW5jdGlvbigpe3ZhciBxPUluZmluaXR5LHI9ZyhnKHt9LHRoaXMudW5pdHNb MF0pLHRoaXMudW5pdHNbMV0pO2Zvcih2YXIgcyBpbiByKWlmKHIuaGFzT3duUHJv

cGVydHkocykpe3ZhciB0PXJbc107aWYodC50cmFja2luZ0NvZGUhPT1udWxsJiZ0 LnZpc2libGUpcT1NYXRoLm1pbihxLHRoaXMuVU5JVFNfUkVHSVNURVJfREVMQVkt dC50b3RhbFRpbWUpO31yZXR1cm4gcTt9LGdldEhlaWdodDpmdW5jdGlvbihxLHIp e3ZhciBzPWouZ2V0KHEsJ2hlaWdodCcpO2lmKHMmJnMueD09PXIpcmV0dXJuIHMu eTtyZXR1cm4gdGhpcy5jYWNoZUhlaWdodChxLHIpO30sY2FjaGVIZWlnaHQ6ZnVu Y3Rpb24ocSxyKXt2YXIgcz17eDpyLHk6cS5vZmZzZXRIZWlnaHR9O2ouc2V0KHEs J2hlaWdodCcscyk7cmV0dXJuIHMueTt9LGxvYWRBZHNBbmRFZ286ZnVuY3Rpb24o KXt0aGlzLnJlc2V0RXZlbnRzKCk7dGhpcy5hZGRFdmVudCgnYWRzUmVxdWVzdGVk Jyx0cnVlKTttLmxvYWRGcm9tRW5kcG9pbnQoJ1dlYkVnb1BhbmUnLHRoaXMucm9v dCx7cGlkOjM0LGRhdGE6W3RoaXMubG9hZFF1ZXJ5LnNldCx0cnVlXX0se2Nyb3Nz UGFnZTp0cnVlLGJ1bmRsZTpmYWxzZX0pO30sdW5pdHNMb2FkZWQ6ZnVuY3Rpb24o cSxyKXt2YXIgcztpZihyKXtzPScvYWkucGhwJzt0aGlzLmFkZEV2ZW50KCdhZHNM b2FkZWQnLHRydWUpO31lbHNle3M9Jy9hamF4L2VpLnBocCc7dGhpcy5hZGRFdmVu dCgnZWdvTG9hZGVkJyx0cnVlKTt9dmFyIHQ9e307Zm9yKHZhciB1IGluIHEpaWYo cS5oYXNPd25Qcm9wZXJ0eSh1KSl0W3VdPXt0cmFja2luZ0NvZGU6cVt1XSx0b3Rh bFRpbWU6MCxsYXN0U2hvd1RpbWU6MCxoZWlnaHRCZWxvdzotMTAwMDAsdmlzaWJs ZTpmYWxzZSxyZWdpc3RlclVybDpzfTt0aGlzLnVuaXRzW3JdPXQ7aWYocil0aGlz LndhaXRGb3JJbWFnZXModGhpcy5pbWFnZXNMb2FkZWQuYmluZCh0aGlzKSk7fSxp bWFnZXNMb2FkZWQ6ZnVuY3Rpb24oKXt0aGlzLnByZXBhcmVSZXNpemUoKTt0aGlz LmFkZEV2ZW50KCdpbWFnZXNMb2FkZWQnLHRydWUpO3RoaXMubGFzdExvYWRUaW1l PURhdGUubm93KCk7dGhpcy5pc0xvYWRpbmc9ZmFsc2U7dGhpcy5wcm9jZXNzUmVz aXplKCk7aC5yZW1vdmVDbGFzcyh0aGlzLnJvb3QsJ2xvYWRpbmcnKTt9LGxvYWRB ZHNGcm9tVXNlckFjdGl2aXR5OmZ1bmN0aW9uKCl7dmFyIHE9RGF0ZS5ub3coKSxy PXRoaXMucmVmcmVzaFVuaXRzUmF0ZTtpZighdGhpcy5pc0xvYWRpbmcmJnEtdGhp cy5sYXN0TG9hZFRpbWU+cil7aC5hZGRDbGFzcyh0aGlzLnJvb3QsJ2xvYWRpbmcn KTt0aGlzLmlzTG9hZGluZz10cnVlO3RoaXMubG9hZEFkc0FuZEVnbygpO319LHJl Z2lzdGVySW1wcmVzc2lvbjpmdW5jdGlvbihxLHIpe3ZhciBzPWsuY3JlYXRlKCdp ZnJhbWUnLHtzcmM6bihyKS5hZGRRdWVyeURhdGEoe2FlZDpxfSksd2lkdGg6MCxo ZWlnaHQ6MCxmcmFtZWJvcmRlcjowLHNjcm9sbGluZzonbm8nLGNsYXNzTmFtZTon ZmJFbXVUcmFja2luZyd9KTtzLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCd0 cnVlJyk7ay5hcHBlbmRDb250ZW50KHRoaXMucm9vdCxzKTt9LHdhaXRGb3JJbWFn ZXM6ZnVuY3Rpb24ocSl7dmFyIHI9ay5zY3J5KHRoaXMucm9vdCwnaW1nLmltZycp LHM9ci5sZW5ndGgsdD1zO2lmKHQ9PT0wKXEoKTt2YXIgdT1mdW5jdGlvbigpe3Qt LTtpZih0PT09MClxLmRlZmVyKCk7fTtmb3IodmFyIHY9MDt2PHM7disrKXt2YXIg dz1yW3ZdO2lmKHcuY29tcGxldGUpe3UoKTt9ZWxzZSBFdmVudC5saXN0ZW4odyx7 bG9hZDp1LGVycm9yOnUsYWJvcnQ6dX0pO319fTtlLmV4cG9ydHM9cDt9KTsKX19k KCJQaG90b1ZpZXdlciIsWyJCb290bG9hZGVyIiwiY29weVByb3BlcnRpZXMiXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQm9vdGxvYWRlcicpLGg9Yign Y29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBpKCl7dGhpcy5pbWFnZT1udWxsO3Ro aXMucm9vdD1udWxsO3RoaXMuc3RyZWFtPW51bGw7fWgoaSx7Ym9vdHN0cmFwOmZ1 bmN0aW9uKGosayl7Zy5sb2FkTW9kdWxlcyhbJ1Bob3RvU25vd2xpZnQnXSxmdW5j dGlvbihsKXtsLmJvb3RzdHJhcChqLGspO30pO319KTtoKGkucHJvdG90eXBlLHtn ZXRFdmVudFByZWZpeDpiYWdvZihudWxsKSxnZXRFdmVudFN0cmluZzpmdW5jdGlv bihqKXt2YXIgaz10aGlzLmdldEV2ZW50UHJlZml4KCk7aWYoaylyZXR1cm4gaysn LicrajtyZXR1cm4gbnVsbDt9LGdldEltYWdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuaW1hZ2U7fSxnZXRQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0 cmVhbT90aGlzLnN0cmVhbS5nZXRDdXJzb3IoKTpudWxsO30sZ2V0Um9vdDpmdW5j dGlvbigpe3JldHVybiB0aGlzLnJvb3Q7fSxnZXRTb3VyY2VTdHJpbmc6YmFnb2Yo bnVsbCksZ2V0VmVyc2lvbkNvbnN0OmJhZ29mKG51bGwpfSk7ZS5leHBvcnRzPWk7 fSk7Cl9fZCgiUGhvdG9Tbm93bGlmdCIsWyJhcnJheS1leHRlbnNpb25zIiwiZXZl bnQtZXh0ZW5zaW9ucyIsImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJBbW9lYmEiLCJB cmJpdGVyIiwiQXN5bmNEaWFsb2ciLCJBc3luY1JlcXVlc3QiLCJCb290bG9hZGVy IiwiQ2xhc3MiLCJDU1MiLCJEaWFsb2ciLCJET00iLCJET01Db250cm9sIiwiRE9N U2Nyb2xsIiwiRnVsbFNjcmVlbiIsIkltYWdlVXRpbHMiLCJLZXlFdmVudENvbnRy b2xsZXIiLCJLZXlzIiwiTGlua0NvbnRyb2xsZXIiLCJMb2NhbGUiLCJQYWdlVHJh bnNpdGlvbnMiLCJQYXJlbnQiLCJQaG90b3NDb25zdCIsIlBob3RvU2Vzc2lvbkxv ZyIsIlBob3RvU25vd2xpZnRBZHMiLCJQaG90b1N0cmVhbUNhY2hlIiwiUGhvdG9z VXRpbHMiLCJQaG90b1ZpZXdlciIsIlJlY3QiLCJTY3JvbGxhYmxlQXJlYSIsIlN0 eWxlIiwiVG9nZ2xlciIsIlVJUGFnZWxldCIsIlVSSSIsIlVzZXJBZ2VudCIsIlZl Y3RvciIsIiQiLCJjb21wdXRlUmVsYXRpdmVVUkkiLCJjb3B5UHJvcGVydGllcyIs

ImNyZWF0ZUFycmF5RnJvbSIsImdlIiwiZ29VUkkiLCJ0eCIsImNzeCIsInVzZXJB Y3Rpb24iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignYXJyYXktZXh0ZW5zaW9u cycpO2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25z Jyk7dmFyIGc9YignQW1vZWJhJyksaD1iKCdBcmJpdGVyJyksaT1iKCdBc3luY0Rp YWxvZycpLGo9YignQXN5bmNSZXF1ZXN0Jyksaz1iKCdCb290bG9hZGVyJyksbD1i KCdDbGFzcycpLG09YignQ1NTJyksbj1iKCdEaWFsb2cnKSxvPWIoJ0RPTScpLHA9 YignRE9NQ29udHJvbCcpLHE9YignRE9NU2Nyb2xsJykscj1iKCdGdWxsU2NyZWVu Jykscz1iKCdJbWFnZVV0aWxzJyksdD1iKCdLZXlFdmVudENvbnRyb2xsZXInKSx1 PWIoJ0tleXMnKSx2PWIoJ0xpbmtDb250cm9sbGVyJyksdz1iKCdMb2NhbGUnKSx4 PWIoJ1BhZ2VUcmFuc2l0aW9ucycpLHk9YignUGFyZW50Jyksej1iKCdQaG90b3ND b25zdCcpLGFhPWIoJ1Bob3RvU2Vzc2lvbkxvZycpLGJhPWIoJ1Bob3RvU25vd2xp ZnRBZHMnKSxjYT1iKCdQaG90b1N0cmVhbUNhY2hlJyksZGE9YignUGhvdG9zVXRp bHMnKSxlYT1iKCdQaG90b1ZpZXdlcicpLGZhPWIoJ1JlY3QnKSxnYT1iKCdTY3Jv bGxhYmxlQXJlYScpLGhhPWIoJ1N0eWxlJyksaWE9YignVG9nZ2xlcicpLGphPWIo J1VJUGFnZWxldCcpLGthPWIoJ1VSSScpLGxhPWIoJ1VzZXJBZ2VudCcpLG1hPWIo J1ZlY3RvcicpLG5hPWIoJyQnKSxvYT1iKCdjb21wdXRlUmVsYXRpdmVVUkknKSxw YT1iKCdjb3B5UHJvcGVydGllcycpLHFhPWIoJ2NyZWF0ZUFycmF5RnJvbScpLHJh PWIoJ2dlJyksc2E9YignZ29VUkknKSx0YT1iKCd0eCcpLHVhPWIoJ2NzeCcpLHZh PWIoJ3VzZXJBY3Rpb24nKSx3YT1iKCdldmVudC1leHRlbnNpb25zJykuJEU7ZnVu Y3Rpb24geGEoKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyk7fXBhKHhhLHtT VEFURV9FUlJPUjonZXJyb3InLFNUQVRFX0hUTUw6J2h0bWwnLFNUQVRFX0lNQUdF X1BJWEVMUzonaW1hZ2VfcGl4ZWxzJyxTVEFURV9JTUFHRV9EQVRBOidpbWFnZScs TE9BRElOR19USU1FT1VUOjIwMDAsUEFHRVJfRkFERTozMDAwLEZVTExfU0NSRUVO X1BBRERJTkc6MTAsU1RBR0VfSElSRVNfTUFYOnt4OjIwNDgseToyMDQ4fSxTVEFH RV9OT1JNQUxfTUFYOnt4Ojk2MCx5Ojk2MH0sU1RBR0VfTUlOOnt4OjUyMCx5OjUy MH0sU0lERUJBUl9TSVpFX01BWDozNDAsU0lERUJBUl9TSVpFX01JTjoyODUsU1RB R0VfQ0hST01FOnt4OjEwMix5OjQyfSxWSURFT19CT1RUT01fQkFSX1NQQUNFOjQw LEdPUFJFVl9BUkVBOjEyMCxUSU1FTElORV9TVFJFVENIX1dJRFRIOjg0MyxUSU1F TElORV9TVFJFVENIX01JTjo0ODAsTUlOX1RBR19ESVNUQU5DRTo4MyxQQURESU5H X01JTjo0MCxfaW5zdGFuY2U6bnVsbCxnZXRJbnN0YW5jZTpmdW5jdGlvbigpe2lm KCF4YS5faW5zdGFuY2UpeGEuX2luc3RhbmNlPW5ldyB4YSgpO3JldHVybiB4YS5f aW5zdGFuY2U7fSxpbml0SW5zdGFuY2U6ZnVuY3Rpb24oeWEsemEpe3hhLmdldElu c3RhbmNlKCkuaW5pdCh5YSx6YSk7fSxhZGRQaG90b0ZiaWRzOmZ1bmN0aW9uKHlh LHphLGFiLGJiKXt4YS5nZXRJbnN0YW5jZSgpLmFkZFBob3RvRmJpZHMoeWEsemEs YWIsYmIpO30sYXR0YWNoRm9sbG93Rmx5b3V0OmZ1bmN0aW9uKHlhKXtvLmluc2Vy dEFmdGVyKG5hKCdmYlBob3RvU25vd2xpZnRTdWJzY3JpYmUnKSx5YSk7fSxhdHRh Y2hTdWJzY3JpYmVGbHlvdXQ6ZnVuY3Rpb24oeWEpe28uaW5zZXJ0QWZ0ZXIobmEo J2ZiUGhvdG9Tbm93bGlmdFN1YnNjcmliZScpLHlhKTt9LGF0dGFjaFRhZ2dlcjpm dW5jdGlvbih5YSl7eGEuZ2V0SW5zdGFuY2UoKS5hdHRhY2hUYWdnZXIoeWEpO30s cHJlbG9hZDpmdW5jdGlvbih5YSx6YSl7eGEuZ2V0SW5zdGFuY2UoKS5wcmVsb2Fk KHlhLHphKTt9LGJvb3RzdHJhcDpmdW5jdGlvbih5YSx6YSl7aWYoemEuZ2V0QXR0 cmlidXRlKCdkYXRhLXZhdWx0Ym94Jykpe2subG9hZE1vZHVsZXMoWydWYXVsdEJv eCddLGZ1bmN0aW9uKGFiKXthYi5ib290c3RyYXAoeWEsemEpO30pO3JldHVybjt9 aWYoeWEmJmthKHlhKS5nZXRRdWVyeURhdGEoKS5oYXNPd25Qcm9wZXJ0eSgnc2hh cmVfaWQnKSl7ay5sb2FkTW9kdWxlcyhbJ1Nwb3RsaWdodFNoYXJlVmlld2VyJ10s ZnVuY3Rpb24oYWIpe2FiLmJvb3RzdHJhcCh5YSx6YSk7fSk7cmV0dXJuO314YS5n ZXRJbnN0YW5jZSgpLmJvb3RzdHJhcCh5YSx6YSk7fSxjbG9zZVJlZnJlc2g6ZnVu Y3Rpb24oKXt4YS5nZXRJbnN0YW5jZSgpLmNsb3NlUmVmcmVzaCgpO30sZGVsZXRl UGhvdG86ZnVuY3Rpb24oeWEpe3hhLmdldEluc3RhbmNlKCkuZGVsZXRlUGhvdG8o eWEpO30sZ2V0SW1hZ2U6ZnVuY3Rpb24oKXtyZXR1cm4geGEuZ2V0SW5zdGFuY2Uo KS5nZXRJbWFnZSgpO30sZ2V0SW1hZ2VJZDpmdW5jdGlvbigpe3JldHVybiB4YS5n ZXRJbnN0YW5jZSgpLmdldEltYWdlSWQoKTt9LGdldExvYWRRdWVyeTpmdW5jdGlv bigpe3JldHVybiB4YS5nZXRJbnN0YW5jZSgpLmdldExvYWRRdWVyeSgpO30sZ2V0 UkhDQm9keTpmdW5jdGlvbigpe3JldHVybiB4YS5nZXRJbnN0YW5jZSgpLmdldFJI Q0JvZHkoKTt9LGdldFJIQ0Zvb3RlcjpmdW5jdGlvbigpe3JldHVybiB4YS5nZXRJ bnN0YW5jZSgpLmdldFJIQ0Zvb3RlcigpO30sZ2V0UkhDSGVhZGVyOmZ1bmN0aW9u KCl7cmV0dXJuIHhhLmdldEluc3RhbmNlKCkuZ2V0UkhDSGVhZGVyKCk7fSxnZXRS b290OmZ1bmN0aW9uKCl7cmV0dXJuIHhhLmdldEluc3RhbmNlKCkuZ2V0Um9vdCgp O30sbGlrZVBob3RvU2tpcENvbmZpcm1hdGlvbjpmdW5jdGlvbih5YSl7eGEuZ2V0 SW5zdGFuY2UoKS5saWtlUGhvdG9Ta2lwQ29uZmlybWF0aW9uKHlhKTt9LHNhdmVU

YWdzRnJvbVBheWxvYWQ6ZnVuY3Rpb24oeWEpe3hhLmdldEluc3RhbmNlKCkuc2F2 ZVRhZ3NGcm9tUGF5bG9hZCh5YSk7fSxzYXZlVGFnc0Zyb21QYXlsb2FkRGVsYXll ZDpmdW5jdGlvbih5YSl7eGEuc2F2ZVRhZ3NGcm9tUGF5bG9hZC5jdXJyeSh5YSku ZGVmZXIoMjAwMCk7fSxoYW5kbGVTZXJ2ZXJFcnJvcjpmdW5jdGlvbih5YSx6YSl7 eGEuZ2V0SW5zdGFuY2UoKS5oYW5kbGVTZXJ2ZXJFcnJvcih5YSx6YSk7fSxzdG9y ZUZyb21EYXRhOmZ1bmN0aW9uKHlhKXt4YS5nZXRJbnN0YW5jZSgpLnN0b3JlRnJv bURhdGEoeWEpO30sc3dhcERhdGE6ZnVuY3Rpb24oKXt4YS5nZXRJbnN0YW5jZSgp LnN3YXBEYXRhKCk7fSx0b3VjaE1hcmt1cDpiYWdvZmhvbGRpbmcsdXBkYXRlVG90 YWxDb3VudDpmdW5jdGlvbih5YSx6YSxhYil7eGEuZ2V0SW5zdGFuY2UoKS51cGRh dGVUb3RhbENvdW50KHlhLHphLGFiKTt9fSk7bC5leHRlbmQoeGEsZWEpO3BhKHhh LnByb3RvdHlwZSx7c3dpdGNoVGltZXI6bnVsbCxpbWFnZVJlZnJlc2hUaW1lcjpu dWxsLGltYWdlTG9hZGluZ1RpbWVyOm51bGwsbGFzdFBhZ2U6MCxjdXJyZW50TWlu U2l6ZTpudWxsLGV4dHJhQ2xhc3M6bnVsbCxjdXJyZW50SW1hZ2VTaXplOm51bGws cmVzZXRVcmlTdGFjazp0cnVlLHRodW1iU3JjOm51bGwsc2hvdWxkU3RyZXRjaDpm YWxzZSxzdGFnZU1heDp4YS5TVEFHRV9OT1JNQUxfTUFYLHN0YWdlQ2hyb21lOnhh LlNUQUdFX0NIUk9NRSxzdGFnZVBhZ2VyUHJldjpudWxsLHVhOm51bGwsUGhvdG9U YWdnZXI6bnVsbCxzaG93SG92ZXI6ZmFsc2Usc2tpcExpa2VQaG90b0NvbmZpcm1h dGlvbjpmYWxzZSxpc1Nob3dpbmdMaWtlUGhvdG9Db25maXJtYXRpb246ZmFsc2Us cHJlbG9hZDpmdW5jdGlvbih5YSx6YSl7ay5sb2FkTW9kdWxlcyhbJ1Bob3RvVGFn Z2VyJywnZmItcGhvdG9zLXNub3dsaWZ0LWNzcycsJ0xpdmUnLCdQaG90b1RhZ0Fw cHJvdmFsJywnUGhvdG9UYWdzJywnVGFnVG9rZW5pemVyJywnZmItcGhvdG9zLXNu b3dsaWZ0LWZ1bGxzY3JlZW4tY3NzJ10sZnVuY3Rpb24oYmIpe3RoaXMuUGhvdG9U YWdnZXI9YmI7fS5iaW5kKHRoaXMpKTt2YXIgYWI9dGhpcy5nZXRJbWFnZVNyYyhr YSh5YSkuZ2V0UXVlcnlEYXRhKCkpO2lmKGFiKShuZXcgSW1hZ2UoKSkuc3JjPWFi O30sYm9vdHN0cmFwOmZ1bmN0aW9uKHlhLHphKXt0aGlzLnByZWxvYWQoeWEsemEp O2JhLnJlc2V0KCk7dGhpcy5yZXNldFVyaVN0YWNrPXRydWU7aWYodGhpcy5pc09w ZW4paWYodGhpcy5vcGVuRXhwbGljaXRseSl7dGhpcy5jbG9zZUNsZWFudXAoKTt0 aGlzLnJlc2V0VXJpU3RhY2s9ZmFsc2U7fWVsc2UgcmV0dXJuO3RoaXMudWE9dmEo J3Nub3dsaWZ0Jyx6YSkudWFpKCdvcGVuJyk7dGhpcy5yZXR1cm5pbmdUb1N0YXJ0 PWZhbHNlO3RoaXMubG9hZGluZyYmbS5yZW1vdmVDbGFzcyh0aGlzLmxvYWRpbmcs J2xvYWRpbmcnKTtpZih6YSl7bS5hZGRDbGFzcygodGhpcy5sb2FkaW5nPXphKSwn bG9hZGluZycpO3RoaXMuZ2V0VGh1bWJBbmRTaXplKHphKTt9ZWxzZSB0aGlzLmxv YWRpbmc9bnVsbDtoLmluZm9ybSgnUGhvdG9Tbm93bGlmdC5HTycseWEsaC5CRUhB VklPUl9TVEFURSk7dGhpcy5sb2FkRnJhbWVJZlVuaW5pdGlhbGl6ZWQoKTt9LGdl dEV2ZW50UHJlZml4OmZ1bmN0aW9uKCl7cmV0dXJuICdQaG90b1Nub3dsaWZ0Jzt9 LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290O30sZ2V0U291cmNl U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdzbm93bGlmdCc7fSxnZXRWZXJzaW9u Q29uc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gei5WSUVXRVJfU05PV0xJRlQ7fSxnZXRJ bWFnZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmltYWdlO30sZ2V0SW1hZ2VJZDpm dW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmVhbS5nZXRDdXJzb3IoKTt9LGdldFJI Q0hlYWRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJoY0hlYWRlcjt9LGdldFJI Q0JvZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51ZmlGb3JtO30sZ2V0UkhDRm9v dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmhjRm9vdGVyO30sZ2V0TG9hZFF1 ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9hZFF1ZXJ5O30sZ2V0T3duZXJJ ZDpmdW5jdGlvbigpe3ZhciB5YT10aGlzLnN0cmVhbS5nZXRDdXJyZW50SW1hZ2VE YXRhKCk7aWYoeWEpcmV0dXJuIHlhLmluZm8ub3duZXI7cmV0dXJuIG51bGw7fSxn ZXRUaHVtYkFuZFNpemU6ZnVuY3Rpb24oeWEpe3RoaXMuY3VycmVudEltYWdlU2l6 ZT1udWxsO3RoaXMudGh1bWJTcmM9bnVsbDt2YXIgemE9a2EoeWEuZ2V0QXR0cmli dXRlKCdhamF4aWZ5JykpLmdldFF1ZXJ5RGF0YSgpO2lmKCF6YS5zaXplKXJldHVy bjt2YXIgYWI9bWEuZGVzZXJpYWxpemUoemEuc2l6ZSk7aWYoIWFiLnh8fCFhYi55 KXJldHVybjt0aGlzLmN1cnJlbnRJbWFnZVNpemU9YWI7aWYoIW0uaGFzQ2xhc3Mo eWEsJ3VpTWVkaWFUaHVtYicpJiYhbS5oYXNDbGFzcyh5YSwndWlQaG90b1RodW1i JykmJiFtLmhhc0NsYXNzKHlhLCd1aVNjYWxlZFRodW1iJykpcmV0dXJuO2lmKHlh LmdldEF0dHJpYnV0ZSgnZGF0YS1jcm9wcGVkJykpcmV0dXJuO3ZhciBiYj1vLnNj cnkoeWEsJ2ltZycpWzBdLGNiPW8uc2NyeSh5YSwnaScpWzBdLGRiPXkuYnlBdHRy aWJ1dGUoeWEsJ2RhdGEtc2l6ZScpO3RoaXMuc2hvdWxkU3RyZXRjaD1kYiYmdGhp cy5jdXJyZW50SW1hZ2VTaXplJiZiYiYmZGIuZ2V0QXR0cmlidXRlKCdkYXRhLXNp emUnKT09PSIyIiYmdGhpcy5jdXJyZW50SW1hZ2VTaXplLng+dGhpcy5jdXJyZW50 SW1hZ2VTaXplLnkmJnRoaXMuY3VycmVudEltYWdlU2l6ZS54PD14YS5USU1FTElO RV9TVFJFVENIX1dJRFRIJiZiYi5vZmZzZXRXaWR0aD09PXhhLlRJTUVMSU5FX1NU

UkVUQ0hfV0lEVEg7dmFyIGViO2lmKGJiKXtlYj1iYi5zcmM7fWVsc2UgaWYoY2Ip e2ViPWhhLmdldChjYiwnYmFja2dyb3VuZEltYWdlJykucmVwbGFjZSgvLip1cmxc KCI/KFteIl0qKSI/XCkuKi8sJyQxJyk7fWVsc2UgcmV0dXJuO3RoaXMudGh1bWJT cmM9ZWI7fSxsb2FkRnJhbWVJZlVuaW5pdGlhbGl6ZWQ6ZnVuY3Rpb24oKXtpZih0 aGlzLnJvb3QpcmV0dXJuO25ldyBqKCcvYWpheC9waG90b3Mvc25vd2xpZnQvaW5p dC5waHAnKS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1ZSkuc2V0TWV0 aG9kKCdHRVQnKS5zZXRSZWFkT25seSh0cnVlKS5zZW5kKCk7fSxpbml0OmZ1bmN0 aW9uKHlhLHphKXt0aGlzLnNob3dIb3Zlcj16YS5waXZvdF9ob3ZlcjthYS5zZXRF bmRNZXRyaWNzKHphLnBpdm90X2VuZF9tZXRyaWMpO3RoaXMuc2hvd0VuZFBpdm90 PXphLnBpdm90X2VuZDt0aGlzLmZ1bGxzY3JlZW49ci5pc1N1cHBvcnRlZCgpO3Ro aXMuc2hvd09HVmlkZW9zPXphLm9nX3ZpZGVvczt0aGlzLnN0YWdlTWF4PXhhLlNU QUdFX0hJUkVTX01BWDt2YXIgYWI9cmEoJ2ZiUGhvdG9Tbm93bGlmdCcpO2lmKCFh Yil7YWI9by5hcHBlbmRDb250ZW50KGRvY3VtZW50LmJvZHkseWEpWzBdO3RoaXMu aW5pdGlhbExvYWQ9ZmFsc2U7fWlmKHRoaXMucm9vdD09YWIpcmV0dXJuO3RoaXMu aW5pdGlhbGl6ZU5vZGVzKGFiKTtiYS5pbml0KHRoaXMuc2lkZUFkVW5pdCx0aGlz LHphKTtpZighdGhpcy5zdWJzY3JpcHRpb24pe3YucmVnaXN0ZXJIYW5kbGVyKHRo aXMuaGFuZGxlTmF2aWdhdGVBd2F5LmJpbmQodGhpcykpO3RoaXMuc3Vic2NyaXB0 aW9uPWguc3Vic2NyaWJlKCdQaG90b1Nub3dsaWZ0LkdPJyxmdW5jdGlvbihiYixj Yil7dGhpcy5vcGVuRXhwbGljaXRseT10cnVlO3RoaXMubG9hZGluZyYmbS5yZW1v dmVDbGFzcyh0aGlzLmxvYWRpbmcsJ2xvYWRpbmcnKTt0aGlzLm9wZW4oY2IpO30u YmluZCh0aGlzKSk7fXRoaXMudHJhbnNpdGlvbkhhbmRsZXJSZWdpc3RlcmVkPWZh bHNlO3RoaXMucmV0dXJuaW5nVG9TdGFydD1mYWxzZTt4LnJlZ2lzdGVySGFuZGxl cih0aGlzLm9wZW5IYW5kbGVyLmJpbmQodGhpcykpO3RoaXMub3BlbkhhbmRsZXJS ZWdpc3RlcmVkPXRydWU7aC5zdWJzY3JpYmUoJ1Bob3RvVGFnQXBwcm92YWwuSElM SVRFX1RBRycsdGhpcy5vbkhpbGl0ZVRhZy5iaW5kKHRoaXMpKTtoLnN1YnNjcmli ZSgnUGhvdG9UYWdBcHByb3ZhbC5VUERBVEVfVEFHX0JPWCcsdGhpcy5vblVwZGF0 ZVRhZ0JveC5iaW5kKHRoaXMpKTtpZih0aGlzLmZ1bGxzY3JlZW4pci5zdWJzY3Jp YmUoJ2NoYW5nZWQnLHRoaXMub25GdWxsU2NyZWVuQ2hhbmdlLmJpbmQodGhpcykp O30sb25GdWxsU2NyZWVuQ2hhbmdlOmZ1bmN0aW9uKCl7aWYoci5pc0Z1bGxTY3Jl ZW4oKSl7aWYoIW0uaGFzQ2xhc3ModGhpcy5yb290LCdmYlBob3RvU25vd2xpZnRF ZGl0TW9kZScpKXRoaXMuY29sbGFwc2VSSEMoKTt2YXIgeWE9dGhpcy5zdHJlYW0u Z2V0Q3VycmVudEltYWdlRGF0YSgpO2lmKHlhJiZ5YS51cmwmJnRoaXMuaW1hZ2Uu c3JjIT09eWEudXJsJiZ0aGlzLnNob3VsZFNob3dIaVJlcyh5YSkpdGhpcy5zd2l0 Y2hJbWFnZSh5YS51cmwpO3RoaXMuYWRqdXN0Rm9yUmVzaXplKCk7fWVsc2V7dGhp cy51bmNvbGxhcHNlUkhDKCk7aWYobGEuY2hyb21lKCkmJiFtLmhhc0NsYXNzKHRo aXMucm9vdCwnZmJQaG90b1Nub3dsaWZ0RWRpdE1vZGUnKSl0aGlzLnBhZ2UoMCxm YWxzZSk7fWlhLmhpZGUoKTt9LGluaXRpYWxpemVOb2RlczpmdW5jdGlvbih5YSl7 dGhpcy5yb290PXlhO3RoaXMuY29udGFpbmVyPW8uZmluZCh5YSwnZGl2LmZiUGhv dG9Tbm93bGlmdENvbnRhaW5lcicpO2cuaW5zdHJ1bWVudCh0aGlzLmNvbnRhaW5l ciwnc25vd2xpZnQnKTt0aGlzLnNub3dsaWZ0UG9wdXA9by5maW5kKHRoaXMuY29u dGFpbmVyLCdkaXYuZmJQaG90b1Nub3dsaWZ0UG9wdXAnKTt0aGlzLnJoYz1vLmZp bmQodGhpcy5zbm93bGlmdFBvcHVwLCdkaXYucmhjJyk7dGhpcy5yaGNIZWFkZXI9 by5maW5kKHRoaXMucmhjLCdkaXYucmhjSGVhZGVyJyk7dGhpcy5yaGNGb290ZXI9 by5maW5kKHRoaXMucmhjLCdkaXYucmhjRm9vdGVyJyk7dGhpcy51ZmlGb3JtPW8u ZmluZCh0aGlzLnJoYywnZm9ybS5mYlBob3Rvc1Nub3dsaWZ0RmVlZGJhY2tGb3Jt Jyk7dGhpcy51ZmlJbnB1dENvbnRhaW5lcj1uYSgnZmJQaG90b1Nub3dsaWZ0RmVl ZGJhY2tJbnB1dCcpO3RoaXMuc2Nyb2xsZXI9by5maW5kKHRoaXMudWZpRm9ybSwn ZGl2LnJoY1Njcm9sbGVyJyk7dGhpcy5zY3JvbGxlckJvZHk9by5maW5kKHRoaXMu c2Nyb2xsZXIsJ2Rpdi51aVNjcm9sbGFibGVBcmVhQm9keScpO3RoaXMuc3RhZ2VX cmFwcGVyPW8uZmluZCh0aGlzLnNub3dsaWZ0UG9wdXAsJ2Rpdi5zdGFnZVdyYXBw ZXInKTt0aGlzLm92ZXJsYXk9by5maW5kKHRoaXMuc25vd2xpZnRQb3B1cCwnZGl2 LnNub3dsaWZ0T3ZlcmxheScpO3RoaXMuZXJyb3JCb3g9by5maW5kKHRoaXMuc3Rh Z2VXcmFwcGVyLCdkaXYuc3RhZ2VFcnJvcicpO3RoaXMuaW1hZ2U9by5maW5kKHRo aXMuc3RhZ2VXcmFwcGVyLCdpbWcuc3BvdGxpZ2h0Jyk7dGhpcy5zdGFnZT1vLmZp bmQodGhpcy5zdGFnZVdyYXBwZXIsJ2Rpdi5zdGFnZScpO3RoaXMudmlkZW9TdGFn ZT1vLmZpbmQodGhpcy5zdGFnZVdyYXBwZXIsJ2Rpdi52aWRlb1N0YWdlJyk7dGhp cy5wcmV2UGFnZXI9by5maW5kKHRoaXMuc25vd2xpZnRQb3B1cCwnYS5zbm93bGlm dFBhZ2VyLnByZXYnKTtnLmluc3RydW1lbnQodGhpcy5wcmV2UGFnZXIsInByZXZf cGFnZXIiKTt0aGlzLm5leHRQYWdlcj1vLmZpbmQodGhpcy5zbm93bGlmdFBvcHVw LCdhLnNub3dsaWZ0UGFnZXIubmV4dCcpO2cuaW5zdHJ1bWVudCh0aGlzLm5leHRQ

YWdlciwibmV4dF9wYWdlciIpO3RoaXMuc3RhZ2VBY3Rpb25zPW8uZmluZCh5YSwn ZGl2LnN0YWdlQWN0aW9ucycpO3RoaXMuYnV0dG9uQWN0aW9ucz1vLmZpbmQodGhp cy5zdGFnZUFjdGlvbnMsJ2Rpdi5mYlBob3Rvc1Bob3RvQnV0dG9ucycpO3RoaXMu c2lkZUFkVW5pdD1vLmZpbmQoeWEsIi4tY3gtUFJJVkFURS1zbm93bGlmdEFkc19f cm9vdCIpO20uY29uZGl0aW9uQ2xhc3ModGhpcy5yb290LCdmdWxsU2NyZWVuQXZh aWxhYmxlJyx0aGlzLmZ1bGxzY3JlZW4pO30saW5pdGlhbGl6ZVNjcm9sbGVyOmZ1 bmN0aW9uKCl7dGhpcy5pbml0aWFsaXplU2Nyb2xsZXI9YmFnb2Zob2xkaW5nO3Ro aXMuc2Nyb2xsYWJsZUFyZWE9Z2EuZnJvbU5hdGl2ZSh0aGlzLnNjcm9sbGVyLHtm YWRlOnRydWUscGVyc2lzdGVudDp0cnVlfSk7dmFyIHlhPWZ1bmN0aW9uKGV2ZW50 KXt2YXIgemE9d2EoZXZlbnQpLmdldFRhcmdldCgpO2lmKG8uY29udGFpbnModGhp cy51ZmlJbnB1dENvbnRhaW5lcix6YSkpe3ZhciBhYj1wLmdldEluc3RhbmNlKHph KTtpZihhYil7dGhpcy5zY3JvbGxhYmxlQXJlYS5zY3JvbGxUb0JvdHRvbSgpO3Zh ciBiYj1hYi5zdWJzY3JpYmUoJ3Jlc2l6ZScsZnVuY3Rpb24oKXt2YXIgZGI9dGhp cy5zY3JvbGxhYmxlQXJlYS5pc1Njcm9sbGVkVG9Cb3R0b20oKTt0aGlzLmFkanVz dFNjcm9sbGVyKCk7ZGImJnRoaXMuc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsVG9Cb3R0 b20oKTt9LmJpbmQodGhpcykpLGNiPUV2ZW50Lmxpc3Rlbih6YSwnYmx1cicsZnVu Y3Rpb24oKXthYi51bnN1YnNjcmliZShiYik7Y2IucmVtb3ZlKCk7fSk7fX19LmJp bmQodGhpcyk7aC5zdWJzY3JpYmUoJ3VmaS9jb21tZW50JyxmdW5jdGlvbih6YSxh Yil7aWYodGhpcy51ZmlGb3JtPT09YWIuZm9ybSl7dGhpcy5hZGp1c3RTY3JvbGxl cklmTmVjZXNzYXJ5KCk7dGhpcy5zY3JvbGxhYmxlQXJlYS5zY3JvbGxUb0JvdHRv bSgpO319LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLnJoYywnY2xpY2sn LGZ1bmN0aW9uKGV2ZW50KXt2YXIgemE9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYoeS5i eVRhZyh6YSwnYScpfHx5LmJ5VGFnKHphLCdidXR0b24nKXx8by5pc05vZGVPZlR5 cGUoemEsJ2lucHV0JykpdGhpcy5hZGp1c3RTY3JvbGxlcklmTmVjZXNzYXJ5KCk7 fS5iaW5kKHRoaXMpKTtoLnN1YnNjcmliZSgncmVmbG93JyxmdW5jdGlvbigpe2lm KHRoaXMuaXNPcGVuKXRoaXMuYWRqdXN0U2Nyb2xsZXIoKTt9LmJpbmQodGhpcykp O2guc3Vic2NyaWJlKFsncmVmbG93JywnQ29tbWVudFVGSS5QYWdlciddLGZ1bmN0 aW9uKCl7aWYodGhpcy5pc09wZW4pdGhpcy5hZGp1c3RTY3JvbGxlcigpO30uYmlu ZCh0aGlzKSk7aWYodGhpcy51ZmlGb3JtLmF0dGFjaEV2ZW50KXt0aGlzLnVmaUZv cm0uYXR0YWNoRXZlbnQoJ29uZm9jdXNpbicseWEpO31lbHNlIHRoaXMudWZpRm9y bS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycseWEsdHJ1ZSk7fSxvcGVuSGFuZGxl cjpmdW5jdGlvbih5YSl7aWYodGhpcy5pc09wZW58fHlhLmdldFBhdGgoKSE9Jy9w aG90by5waHAnfHx0aGlzLnJldHVybmluZ1RvU3RhcnR8fHlhLmdldFF1ZXJ5RGF0 YSgpLmNsb3NlVGhlYXRlcnx8eWEuZ2V0UXVlcnlEYXRhKCkucGVybVBhZ2V8fHlh LmdldFF1ZXJ5RGF0YSgpLm1ha2Vwcm9maWxlKXt0aGlzLm9wZW5IYW5kbGVyUmVn aXN0ZXJlZD1mYWxzZTtyZXR1cm4gZmFsc2U7fXRoaXMub3Blbih5YSk7dGhpcy5f dXJpU3RhY2sucHVzaChrYSh5YSkuZ2V0UXVhbGlmaWVkVVJJKCkudG9TdHJpbmco KSk7eC50cmFuc2l0aW9uQ29tcGxldGUoKTtyZXR1cm4gdHJ1ZTt9LGdldEltYWdl U3JjOmZ1bmN0aW9uKHlhKXtpZih5YS5zbWFsbHNyYyl7aWYoIXlhLnNpemUpcmV0 dXJuIHlhLnNtYWxsc3JjO3ZhciB6YT1tYS5kZXNlcmlhbGl6ZSh5YS5zaXplKSxh Yj10aGlzLmdldFN0YWdlU2l6ZSh6YSk7aWYoYWIueDw9eGEuU1RBR0VfTk9STUFM X01BWC54JiZhYi55PD14YS5TVEFHRV9OT1JNQUxfTUFYLnkpcmV0dXJuIHlhLnNt YWxsc3JjO31yZXR1cm4geWEuc3JjO30sb3BlbjpmdW5jdGlvbih5YSl7dmFyIHph PWthKHlhKS5nZXRRdWVyeURhdGEoKSxhYj10aGlzLmdldEltYWdlU3JjKHphKTtp ZihhYil7ZGVsZXRlIHphLnNyYztkZWxldGUgemEuc21hbGxzcmM7fWlmKHRoaXMu cmVzZXRVcmlTdGFjayl0aGlzLl91cmlTdGFjaz1bXTtpZighdGhpcy5pbml0aWFs TG9hZCl7emEuZmlyc3RMb2FkPXRydWU7dGhpcy5pbml0aWFsTG9hZD10cnVlO310 aGlzLnNlc3Npb25JRD1EYXRlLm5vdygpO3RoaXMubG9hZFF1ZXJ5PXBhKHphLHtz c2lkOnRoaXMuc2Vzc2lvbklEfSk7dGhpcy5pc09wZW49dHJ1ZTt0aGlzLnBhZ2Vy c1Nob3duPWZhbHNlO3RoaXMucmVmcmVzaE9uQ2xvc2U9ZmFsc2U7dGhpcy5oaWxp dGVkVGFnPW51bGw7dGhpcy5sb2FkaW5nU3RhdGVzPXtpbWFnZTpmYWxzZSxodG1s OmZhbHNlfTt0aGlzLnJlcGxhY2VVcmw9ZmFsc2U7dGhpcy5zdHJlYW09bmV3IGNh KCk7dGhpcy5zdHJlYW0uaW5pdCh6LlZJRVdFUl9TTk9XTElGVCwnUGhvdG9WaWV3 ZXJQYWdlbGV0Jyk7dGhpcy5mZXRjaEluaXRpYWxEYXRhKCk7dGhpcy5zZXRMb2Fk aW5nU3RhdGUoeGEuU1RBVEVfSFRNTCx0cnVlKTt0aGlzLnJoY0NvbGxhcHNlZD1m YWxzZTt0aGlzLmtleUhhbmRsZXJzPVt0LnJlZ2lzdGVyS2V5KCdFU0NBUEUnLHRo aXMuY2xvc2VMaXN0ZW5lci5iaW5kKHRoaXMpKV07ay5sb2FkTW9kdWxlcyhbJ2Zi LXBob3Rvcy1zbm93bGlmdC1jc3MnXSx0aGlzLl9vcGVuLmJpbmQodGhpcyx5YSxh YikpO2lmKHRoaXMuc2hvd0VuZFBpdm90KWsubG9hZE1vZHVsZXMoWydQaG90b1Bp dm90J10sZnVuY3Rpb24oYmIpe3RoaXMucGl2b3RzPWJiLmdldEluc3RhbmNlKCk7

aWYoemEucmVsZXZhbnRfY291bnQpdGhpcy5waXZvdHMuc2V0UmVsZXZhbnRDb3Vu dCh6YS5yZWxldmFudF9jb3VudCk7fS5iaW5kKHRoaXMpKTtrLmxvYWRNb2R1bGVz KFsnUGhvdG9zQnV0dG9uVG9vbHRpcHMnXSxmdW5jdGlvbihiYil7YmIuaW5pdCgp O30pO30sX29wZW46ZnVuY3Rpb24oeWEsemEpe3RoaXMuY3JlYXRlTG9hZGVyKHph KTttLnNob3codGhpcy5yb290KTsoZnVuY3Rpb24oKXt2YXIgY2I9bWEuZ2V0U2Ny b2xsUG9zaXRpb24oKTttLmFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dCwndGhlYXRlck1vZGUnKTt2YXIgZGI9cS5nZXRTY3JvbGxiYXJTaXplKCk7aWYo ZGI9PT0wKXt0aGlzLmV4dHJhQ2xhc3M9J3plcm9TY3JvbGxiYXInO31lbHNlIGlm KGRiPT09MjApe3RoaXMuZXh0cmFDbGFzcz0nc2Nyb2xsYmFyMjAnO31lbHNlIHRo aXMuZXh0cmFDbGFzcz0nZGVmYXVsdFNjcm9sbGJhcic7bS5hZGRDbGFzcyhkb2N1 bWVudC5ib2R5LHRoaXMuZXh0cmFDbGFzcyk7cS5zY3JvbGxUbyhjYiwwKTt9KS5k ZWZlcigpO3RoaXMudWEmJnRoaXMudWEuYWRkX2V2ZW50KCdmcmFtZScpO2guaW5m b3JtKCdsYXllcl9zaG93bicse3R5cGU6J1Bob3RvU25vd2xpZnQnfSk7aC5pbmZv cm0oJ1Bob3RvU25vd2xpZnQuT1BFTicpO3RoaXMuc3RhZ2VIYW5kbGVycz1bRXZl bnQubGlzdGVuKHdpbmRvdywncmVzaXplJyx0aGlzLmFkanVzdEZvclJlc2l6ZS5i aW5kKHRoaXMpKSxFdmVudC5saXN0ZW4odGhpcy5yb290LCdjbGljaycsdGhpcy5j bG9zZUxpc3RlbmVyLmJpbmQodGhpcykpLEV2ZW50Lmxpc3Rlbih0aGlzLnN0YWdl V3JhcHBlciwnY2xpY2snLHRoaXMuYnV0dG9uTGlzdGVuZXIuYmluZCh0aGlzKSks RXZlbnQubGlzdGVuKHRoaXMuc3RhZ2VXcmFwcGVyLCdtb3VzZWxlYXZlJyxmdW5j dGlvbihldmVudCl7dGhpcy51bmhpbGl0ZUFsbFRhZ3MoKTt0aGlzLmhpZGVQYWdl cnMoKTt9LmJpbmQodGhpcykpLEV2ZW50Lmxpc3Rlbih0aGlzLnN0YWdlV3JhcHBl ciwnbW91c2Vtb3ZlJyx0aGlzLmhpbGl0ZVBhZ2VyT25Nb3VzZU1vdmUuYmluZCh0 aGlzKSksRXZlbnQubGlzdGVuKHRoaXMuc3RhZ2VXcmFwcGVyLCdtb3VzZW1vdmUn LHRoaXMuaGlsaXRlVGFnc09uTW91c2VNb3ZlLmJpbmQodGhpcykpLEV2ZW50Lmxp c3Rlbih0aGlzLm92ZXJsYXksJ21vdXNlZW50ZXInLHRoaXMudW5oaWxpdGVBbGxU YWdzLmJpbmQodGhpcykpXTt0aGlzLnN0YWdlSGFuZGxlcnMucHVzaChFdmVudC5s aXN0ZW4odGhpcy5jb250YWluZXIsJ2NsaWNrJywoZnVuY3Rpb24oZXZlbnQpe3Zh ciBjYj1ldmVudC5nZXRUYXJnZXQoKTtpZih5LmJ5Q2xhc3MoY2IsJ3JvdGF0ZVJp Z2h0Jykpe3RoaXMucm90YXRlKCdyaWdodCcpO31lbHNlIGlmKHkuYnlDbGFzcyhj Yiwncm90YXRlTGVmdCcpKXt0aGlzLnJvdGF0ZSgnbGVmdCcpO31lbHNlIGlmKHRo aXMuZnVsbHNjcmVlbilpZih5LmJ5Q2xhc3MoY2IsJ2ZiUGhvdG9Tbm93bGlmdEZ1 bGxTY3JlZW4nKSl7dGhpcy50b2dnbGVGdWxsU2NyZWVuKCk7fWVsc2UgaWYoeS5i eUNsYXNzKGNiLCdmYlBob3RvU25vd2xpZnRDb2xsYXBzZScpKXRoaXMudG9nZ2xl Q29sbGFwc2UoKTt9KS5iaW5kKHRoaXMpKSk7dmFyIGFiPXJhKCdmYlBob3RvU25v d2xpZnRGZWVkYmFjaycpO2lmKGFiKXRoaXMuc3RhZ2VIYW5kbGVycy5wdXNoKEV2 ZW50Lmxpc3RlbihhYiwnY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXtpZih5LmJ5Q2xh c3MoZXZlbnQuZ2V0VGFyZ2V0KCksJ2xpa2VfbGluaycpfHx5LmJ5Q2xhc3MoZXZl bnQuZ2V0VGFyZ2V0KCksJ1VGSUxpa2VMaW5rJykpdGhpcy50b2dnbGVMaWtlQnV0 dG9uKCk7dmFyIGNiPXkuYnlDbGFzcyhldmVudC5nZXRUYXJnZXQoKSwndWlVZmlD b2xsYXBzZWRDb21tZW50Jyk7aWYoY2IpbS5hZGRDbGFzcyhjYiwndWlVZmlDb2xs YXBzZWRDb21tZW50VG9nZ2xlJyk7fS5iaW5kKHRoaXMpKSk7dmFyIGJiPXJhKCdm YlBob3RvU25vd2xpZnRPblByb2ZpbGUnKTtpZihiYil0aGlzLnN0YWdlSGFuZGxl cnMucHVzaChFdmVudC5saXN0ZW4oYmIsJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7 aWYoeS5ieUNsYXNzKGV2ZW50LmdldFRhcmdldCgpLCdmYlBob3RvUmVtb3ZlRnJv bVByb2ZpbGVMaW5rJykpdGhpcy5yZWZyZXNoT25DbG9zZT10cnVlO30uYmluZCh0 aGlzKSkpO2lmKHRoaXMucmVzZXRVcmlTdGFjayl0aGlzLnN0YXJ0aW5nVVJJPWth LmdldE1vc3RSZWNlbnRVUkkoKS5hZGRRdWVyeURhdGEoe2Nsb3NlVGhlYXRlcjox fSkuZ2V0VW5xdWFsaWZpZWRVUkkoKTtpZighemEpdGhpcy5zZXRMb2FkaW5nU3Rh dGUoeGEuU1RBVEVfSU1BR0VfREFUQSx0cnVlKTtpZighdGhpcy50cmFuc2l0aW9u SGFuZGxlclJlZ2lzdGVyZWQpe3gucmVnaXN0ZXJIYW5kbGVyKHRoaXMudHJhbnNp dGlvbkhhbmRsZXIuYmluZCh0aGlzKSk7dGhpcy50cmFuc2l0aW9uSGFuZGxlclJl Z2lzdGVyZWQ9dHJ1ZTt9YWEuaW5pdExvZ2dpbmcoYWEuU05PV0xJRlQpO2lmKHRo aXMucGl2b3RzKWFhLnNldFJlbGV2YW50Q291bnQodGhpcy5waXZvdHMucmVsZXZh bnRDb3VudCk7aWYobGEuZmlyZWZveCgpPDEzKXRoaXMudHVybkZsYXNoQXV0b3Bs YXlPZmYuZGVmZXIoKTsoZnVuY3Rpb24oKXt0aGlzLnJvb3QuZm9jdXMoKTt9KS5i aW5kKHRoaXMpLmRlZmVyKCk7fSx0b2dnbGVGdWxsU2NyZWVuOmZ1bmN0aW9uKCl7 dmFyIHlhPXIudG9nZ2xlRnVsbFNjcmVlbihkb2N1bWVudC5kb2N1bWVudEVsZW1l bnQpO2lmKHlhKXt2YXIgemE9dGhpcy5zdHJlYW0uZ2V0Q3VycmVudEltYWdlRGF0 YSgpO2lmKHphJiZ6YS51cmwmJnRoaXMuaW1hZ2Uuc3JjIT09emEudXJsJiZ0aGlz LnNob3VsZFNob3dIaVJlcyh6YSkpKG5ldyBJbWFnZSgpKS5zcmM9emEudXJsO2Fh

LmxvZ0VudGVyRnVsbFNjcmVlbih0aGlzLnN0cmVhbS5nZXRDdXJzb3IoKSk7fX0s Z2V0U3RyZWFtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyZWFtO30sZmV0Y2hJ bml0aWFsRGF0YTpmdW5jdGlvbigpe3RoaXMudWEmJnRoaXMudWEuYWRkX2V2ZW50 KCdpbml0X2RhdGEnKTt0aGlzLnN0cmVhbS53YWl0Rm9ySW5pdERhdGEoKTtqYS5s b2FkRnJvbUVuZHBvaW50KCdQaG90b1ZpZXdlckluaXRQYWdlbGV0JyxudWxsLHRo aXMubG9hZFF1ZXJ5LHt1c2VQaXBlOnRydWUsanNOb25ibG9jazp0cnVlLGNyb3Nz UGFnZTp0cnVlfSk7fSx0dXJuRmxhc2hBdXRvcGxheU9mZjpmdW5jdGlvbigpe28u c2NyeShkb2N1bWVudCwnZGl2LnN3Zk9iamVjdCcpLmZvckVhY2goZnVuY3Rpb24o eWEpe3ZhciB6YT15YS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dmaWQnKTtpZih6YSYm d2luZG93W3phXSl7dmFyIGFiPXdpbmRvd1t6YV07YWIuYWRkUGFyYW0oJ2F1dG9z dGFydCcsJ2ZhbHNlJyk7YWIuYWRkUGFyYW0oJ2F1dG9wbGF5JywnZmFsc2UnKTth Yi5hZGRQYXJhbSgncGxheScsJ2ZhbHNlJyk7YWIuYWRkVmFyaWFibGUoJ3ZpZGVv X2F1dG9wbGF5JywnMCcpO2FiLmFkZFZhcmlhYmxlKCdhdXRvcGxheScsJzAnKTth Yi5hZGRWYXJpYWJsZSgncGxheScsJzAnKTt2YXIgYmI9a2EoYWIuZ2V0QXR0cmli dXRlKCdzd2YnKSk7YmIuYWRkUXVlcnlEYXRhKHthdXRvcGxheTonMCd9KTtiYi5z ZXRQYXRoKGJiLmdldFBhdGgoKS5yZXBsYWNlKCdhdXRvcGxheT0xJywnYXV0b3Bs YXk9MCcpKTthYi5zZXRBdHRyaWJ1dGUoJ3N3ZicsYmIudG9TdHJpbmcoKSk7YWIu d3JpdGUoeWEpO319KTt9LHRvZ2dsZUNvbGxhcHNlOmZ1bmN0aW9uKCl7aWYodGhp cy5yaGNDb2xsYXBzZWQpe3RoaXMudW5jb2xsYXBzZVJIQygpO31lbHNlIHRoaXMu Y29sbGFwc2VSSEMoKTt9LGNvbGxhcHNlUkhDOmZ1bmN0aW9uKCl7dGhpcy5yaGND b2xsYXBzZWQ9dHJ1ZTttLmFkZENsYXNzKHRoaXMucm9vdCwnY29sbGFwc2VSSEMn KTt0aGlzLmFkanVzdEZvclJlc2l6ZSgpO30sdW5jb2xsYXBzZVJIQzpmdW5jdGlv bigpe3RoaXMucmhjQ29sbGFwc2VkPWZhbHNlO20ucmVtb3ZlQ2xhc3ModGhpcy5y b290LCdjb2xsYXBzZVJIQycpO3RoaXMuYWRqdXN0Rm9yUmVzaXplKCk7fSxjbG9z ZUhhbmRsZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5pc09wZW4pcmV0dXJuO2lmKGth LmdldE1vc3RSZWNlbnRVUkkoKS5hZGRRdWVyeURhdGEoe2Nsb3NlVGhlYXRlcjox fSkuZ2V0VW5xdWFsaWZpZWRVUkkoKS50b1N0cmluZygpPT10aGlzLnN0YXJ0aW5n VVJJLnRvU3RyaW5nKCkpe3RoaXMuY2xvc2UoKTtyZXR1cm47fXRoaXMuY2xvc2Uo KTt0aGlzLnJldHVyblRvU3RhcnRpbmdVUkkodGhpcy5yZWZyZXNoT25DbG9zZSk7 fSxyZXR1cm5Ub1N0YXJ0aW5nVVJJOmZ1bmN0aW9uKHlhLHphKXtpZigheWEpaWYo emEpe3RoaXMuc3F1YXNoTmV4dFRyYW5zaXRpb24oc2EuY3VycnkoemEpKTt9ZWxz ZSB0aGlzLnNxdWFzaE5leHRUcmFuc2l0aW9uKCk7dGhpcy5yZXR1cm5pbmdUb1N0 YXJ0PXRydWU7dmFyIGFiPWguc3Vic2NyaWJlKCdwYWdlX3RyYW5zaXRpb24nLGZ1 bmN0aW9uKCl7dGhpcy5yZXR1cm5pbmdUb1N0YXJ0PWZhbHNlO2FiLnVuc3Vic2Ny aWJlKCk7fSksYmI9eWF8fGlzTmFOKGxhLm9wZXJhKCkpLGNiPXRoaXMuX3VyaVN0 YWNrLmxlbmd0aDtpZihiYiYmY2I8d2luZG93Lmhpc3RvcnkubGVuZ3RoKXt3aW5k b3cuaGlzdG9yeS5nbygtY2IpO31lbHNle3ZhciBkYj10aGlzLnN0YXJ0aW5nVVJJ LGViPW5ldyBrYShkYikucmVtb3ZlUXVlcnlEYXRhKCdjbG9zZVRoZWF0ZXInKTtp ZihkYi5nZXRRdWVyeURhdGEoKS5zaz09J2FwcHJvdmUnJiZkYi5nZXRQYXRoKCk9 PScvcHJvZmlsZS5waHAnKXtlYi5yZW1vdmVRdWVyeURhdGEoJ2hpZ2hsaWdodCcp O2ViLnJlbW92ZVF1ZXJ5RGF0YSgnbm90aWZfdCcpO31zYShlYik7fX0sc3F1YXNo TmV4dFRyYW5zaXRpb246ZnVuY3Rpb24oeWEpe3RoaXMuc3F1YXNoTmV4dD10cnVl O3gucmVnaXN0ZXJIYW5kbGVyKGZ1bmN0aW9uIHphKCl7aWYodGhpcy5zcXVhc2hO ZXh0KXt0aGlzLnNxdWFzaE5leHQ9ZmFsc2U7aWYoeWEpeWEuZGVmZXIoKTt4LnRy YW5zaXRpb25Db21wbGV0ZSgpO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fS5i aW5kKHRoaXMpLDcpO30saGFuZGxlTmF2aWdhdGVBd2F5OmZ1bmN0aW9uKHlhKXt2 YXIgemE9b2EoeC5fbW9zdF9yZWNlbnRfdXJpLmdldFF1YWxpZmllZFVSSSgpLHlh LmdldEF0dHJpYnV0ZSgnaHJlZicpKTtpZih0aGlzLmlzT3BlbiYmKHphIGluc3Rh bmNlb2Yga2EpJiZ6YS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkhPXRo aXMuc3RhcnRpbmdVUkkudG9TdHJpbmcoKSYmemEuZ2V0UGF0aCgpIT0nL3Bob3Rv LnBocCcpe2lmKCF0aGlzLmNsb3NpbmdBY3Rpb24pdGhpcy5jbG9zaW5nQWN0aW9u PWFhLk5BVklHQVRFO3RoaXMuY2xvc2UoKTt0aGlzLnJldHVyblRvU3RhcnRpbmdV UkkoZmFsc2UsemEpO3JldHVybiBmYWxzZTt9cmV0dXJuIHRydWU7fSxjbG9zZUxp c3RlbmVyOmZ1bmN0aW9uKGV2ZW50KXtpZih0aGlzLmlzT3BlbiYmIW4uZ2V0Q3Vy cmVudCgpKXtpZihFdmVudC5nZXRLZXlDb2RlKGV2ZW50KT09dS5FU0Mpe2lmKCFt Lmhhc0NsYXNzKHRoaXMucm9vdCwndGFnZ2luZ01vZGUnKSYmIW0uaGFzQ2xhc3Mo dGhpcy5yb290LCdmYlBob3RvU25vd2xpZnRFZGl0TW9kZScpKXt0aGlzLmNsb3Np bmdBY3Rpb249YWEuRVNDO0V2ZW50LmtpbGwoZXZlbnQpO3RoaXMuY2xvc2VIYW5k bGVyKCk7fXJldHVybjt9dmFyIHlhPWV2ZW50LmdldFRhcmdldCgpLHphPXkuYnlD bGFzcyh5YSwnY2xvc2VUaGVhdGVyJyksYWI9emF8fHlhPT10aGlzLnJvb3R8fHlh

PT1vLmZpbmQodGhpcy5yb290LCdkaXYuZmJQaG90b1Nub3dsaWZ0T3V0ZXInKXx8 eWE9PW8uZmluZCh0aGlzLnJvb3QsJ2Rpdi5mYlBob3RvU25vd2xpZnRJbm5lcicp O2lmKGFiKXtpZihyLmlzRnVsbFNjcmVlbigpKXtpZih6YSlyLnRvZ2dsZUZ1bGxT Y3JlZW4oKTtyZXR1cm47fWlmKHphKXt0aGlzLmNsb3NpbmdBY3Rpb249YWEuWDt9 ZWxzZSB0aGlzLmNsb3NpbmdBY3Rpb249YWEuT1VUU0lERTtFdmVudC5raWxsKGV2 ZW50KTt0aGlzLmNsb3NlSGFuZGxlcigpO319fSxjbG9zZTpmdW5jdGlvbigpe2lm KCF0aGlzLmlzT3BlbilyZXR1cm47aWYodGhpcy5mdWxsc2NyZWVuKXIuZGlzYWJs ZUZ1bGxTY3JlZW4oKTt2YSgnc25vd2xpZnQnKS51YWkoJ2Nsb3NlJyk7bS5oaWRl KHRoaXMucm9vdCk7dGhpcy5vcGVuRXhwbGljaXRseT1mYWxzZTt0aGlzLmNsb3Nl Q2xlYW51cC5iaW5kKHRoaXMpLmRlZmVyKCk7fSxjbG9zZUNsZWFudXA6ZnVuY3Rp b24oKXt2YXIgeWE9bWEuZ2V0U2Nyb2xsUG9zaXRpb24oKTttLnJlbW92ZUNsYXNz KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwndGhlYXRlck1vZGUnKTttLnJlbW92 ZUNsYXNzKGRvY3VtZW50LmJvZHksdGhpcy5leHRyYUNsYXNzKTtxLnNjcm9sbFRv KHlhLDApO20ucmVtb3ZlQ2xhc3ModGhpcy5yb290LCdkYXRhTG9hZGVkJyk7dGhp cy5rZXlIYW5kbGVycy5mb3JFYWNoKGZ1bmN0aW9uKGFiKXthYi5yZW1vdmUoKTt9 KTt0aGlzLmtleUhhbmRsZXJzPW51bGw7YWEubG9nUGhvdG9WaWV3cyh0aGlzLmNs b3NpbmdBY3Rpb24pO3RoaXMuZGVzdHJveSgpO20uaGlkZSh0aGlzLmVycm9yQm94 KTttLmhpZGUodGhpcy5pbWFnZSk7dGhpcy5jdXJyZW50SW1hZ2VTaXplPW51bGw7 dGhpcy50aHVtYlNyYz1udWxsO3RoaXMuc2hvdWxkU3RyZXRjaD1mYWxzZTt0aGlz LnJlc2V0VXJpU3RhY2s9dHJ1ZTttLnJlbW92ZUNsYXNzKHRoaXMuc3RhZ2VXcmFw cGVyLCdzaG93VmlkZW8nKTtvLmVtcHR5KHRoaXMudmlkZW9TdGFnZSk7dGhpcy51 bmNvbGxhcHNlUkhDKCk7dGhpcy5jdXJyZW50TWluU2l6ZT1udWxsO3RoaXMuc2V0 U3RhZ2VQYWdlcnNTdGF0ZSgncmVzZXQnKTt0aGlzLnJlY2FjaGVEYXRhKCk7by5l bXB0eSh0aGlzLnNpZGVBZFVuaXQpO3RoaXMuc3RyZWFtLmRlc3Ryb3koKTt2YXIg emE9dGhpcy5jbG9zaW5nQWN0aW9uPT09YWEuTkFWSUdBVEU7dGhpcy5jbG9zaW5n QWN0aW9uPW51bGw7aWYoIXRoaXMub3BlbkhhbmRsZXJSZWdpc3RlcmVkKXt4LnJl Z2lzdGVySGFuZGxlcih0aGlzLm9wZW5IYW5kbGVyLmJpbmQodGhpcykpO3RoaXMu b3BlbkhhbmRsZXJSZWdpc3RlcmVkPXRydWU7fWguaW5mb3JtKCdsYXllcl9oaWRk ZW4nLHt0eXBlOidQaG90b1Nub3dsaWZ0J30pO2guaW5mb3JtKCdQaG90b1Nub3ds aWZ0LkNMT1NFJyx6YSk7dGhpcy5yb290LnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5 JywndHJ1ZScpO3RoaXMuaXNPcGVuPWZhbHNlO30sY3JlYXRlTG9hZGVyOmZ1bmN0 aW9uKHlhKXtpZih0aGlzLmN1cnJlbnRJbWFnZVNpemU9PT1udWxsKXt0aGlzLmFk anVzdFN0YWdlU2l6ZSh4YS5TVEFHRV9NSU4pO31lbHNle3ZhciB6YT10aGlzLmdl dFN0YWdlU2l6ZSh0aGlzLmN1cnJlbnRJbWFnZVNpemUpO3phPW5ldyBtYShNYXRo Lm1heCh6YS54LHhhLlNUQUdFX01JTi54KSxNYXRoLm1heCh6YS55LHhhLlNUQUdF X01JTi55KSk7dmFyIGFiPXRoaXMuZ2V0SW1hZ2VTaXplSW5TdGFnZSh0aGlzLmN1 cnJlbnRJbWFnZVNpemUsemEpO2lmKHRoaXMudGh1bWJTcmM9PT1udWxsKXt0aGlz LmFkanVzdFN0YWdlU2l6ZShhYik7fWVsc2UgdGhpcy51c2VJbWFnZShvLmNyZWF0 ZSgnaW1nJyx7Y2xhc3NOYW1lOidzcG90bGlnaHQnLGFsdDonJyxzcmM6dGhpcy50 aHVtYlNyYyxzdHlsZTp7d2lkdGg6YWIueCsncHgnLGhlaWdodDphYi55KydweCd9 fSksYWIsZmFsc2UpO310aGlzLnNldExvYWRpbmdTdGF0ZSh0aGlzLlNUQVRFX0lN QUdFX1BJWEVMUyx0cnVlKTtpZih5YSkoZnVuY3Rpb24oKXt2YXIgYmI9bmV3IElt YWdlKCk7YmIub25sb2FkPWEuYXN5bmNfY2FsbGJhY2soZnVuY3Rpb24oKXtpZigh dGhpcy5pc09wZW58fHRoaXMucGVuZGluZ0ltYWdlVXJsIT15YSlyZXR1cm47aWYo IXRoaXMuc3RyZWFtfHwhdGhpcy5zdHJlYW0uZXJyb3JJbkN1cnJlbnQoKSl7dGhp cy5zd2l0Y2hJbWFnZSh5YSx0aGlzLmN1cnJlbnRJbWFnZVNpemUpO3RoaXMudWEm JnRoaXMudWEuYWRkX2V2ZW50KCdpbWFnZScpO3RoaXMuc2V0TG9hZGluZ1N0YXRl KHhhLlNUQVRFX0lNQUdFX0RBVEEsZmFsc2UpO319LmJpbmQodGhpcyksJ3Bob3Rv X3RoZWF0ZXInKTtiYi5zcmM9dGhpcy5wZW5kaW5nSW1hZ2VVcmw9eWE7fSkuYmlu ZCh0aGlzKS5kZWZlcigpO20uaGlkZSh0aGlzLnN0YWdlQWN0aW9ucyk7dGhpcy5z ZXRTdGFnZVBhZ2Vyc1N0YXRlKCdkaXNhYmxlZCcpO30saW5pdERhdGFGZXRjaGVk OmZ1bmN0aW9uKHlhKXthYS5zZXRQaG90b1NldCh0aGlzLnN0cmVhbS5nZXRQaG90 b1NldCgpKTthYS5zZXRMb2dGYmlkcyh5YS5sb2dpZHMpO3ZhciB6YT10aGlzLnN0 cmVhbS5nZXRDdXJyZW50SW1hZ2VEYXRhKCk7YWEuYWRkUGhvdG9WaWV3KHphLmlu Zm8sdGhpcy5zaG91bGRTaG93SGlSZXMoemEpLHRoaXMuZnVsbHNjcmVlbiYmci5p c0Z1bGxTY3JlZW4oKSk7aWYoIXRoaXMucGFnZUhhbmRsZXJzKXt0aGlzLnBhZ2VI YW5kbGVycz1bRXZlbnQubGlzdGVuKHRoaXMucm9vdCwnY2xpY2snLHRoaXMucGFn ZUxpc3RlbmVyLmJpbmQodGhpcykpLEV2ZW50Lmxpc3Rlbih0aGlzLnJvb3QsJ21v dXNlbGVhdmUnLHRoaXMubW91c2VMZWF2ZUxpc3RlbmVyLmJpbmQodGhpcykpXTt0 aGlzLmtleUhhbmRsZXJzPXRoaXMua2V5SGFuZGxlcnMuY29uY2F0KFt0LnJlZ2lz

dGVyS2V5KCdMRUZUJyx0aGlzLnBhZ2VMaXN0ZW5lci5iaW5kKHRoaXMpKSx0LnJl Z2lzdGVyS2V5KCdSSUdIVCcsdGhpcy5wYWdlTGlzdGVuZXIuYmluZCh0aGlzKSks dC5yZWdpc3RlcktleSgnTCcsdGhpcy5saWtlUGhvdG9XaXRoS2V5LmJpbmQodGhp cyksZnVuY3Rpb24oZXZlbnQsYWIpe2V2ZW50PXdhKGV2ZW50KTtyZXR1cm4gKGFi PT0nb25rZXl1cCcmJnQuZmlsdGVyRXZlbnRUYXJnZXRzKGV2ZW50LGFiKSYmdC5m aWx0ZXJFdmVudE1vZGlmaWVycyhldmVudCxhYikpO30pXSk7fW0uc2hvdyh0aGlz LnN0YWdlQWN0aW9ucyk7dGhpcy5yb290LnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5 JywnZmFsc2UnKTt0aGlzLmlzTG9nZ2VkSW5WaWV3ZXI9eWEubG9nZ2VkaW47dGhp cy5kaXNhYmxlQWRzPSF0aGlzLmlzTG9nZ2VkSW5WaWV3ZXJ8fHlhLmZyb21hZDt0 aGlzLmxvYWRBZHMoKTt9LGFkanVzdFNjcm9sbGVySWZOZWNlc3Nhcnk6ZnVuY3Rp b24oKXtjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxlclRpbWVvdXQpO3RoaXMuc2Ny b2xsZXJUaW1lb3V0PXRoaXMuYWRqdXN0U2Nyb2xsZXIuYmluZCh0aGlzKS5kZWZl cigpO30sYWRqdXN0U2Nyb2xsZXI6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhp cy5zY3JvbGxlclRpbWVvdXQpO3RoaXMuaW5pdGlhbGl6ZVNjcm9sbGVyKCk7dGhp cy5zY3JvbGxhYmxlQXJlYS5yZXNpemUoKTt2YXIgeWE9bWEuZ2V0RWxlbWVudERp bWVuc2lvbnModGhpcy5yaGMpLHphPXlhLnk7emEtPW1hLmdldEVsZW1lbnREaW1l bnNpb25zKHRoaXMucmhjSGVhZGVyKS55O3phLT1tYS5nZXRFbGVtZW50RGltZW5z aW9ucyh0aGlzLnVmaUlucHV0Q29udGFpbmVyKS55O3ZhciBhYj1tYS5nZXRFbGVt ZW50RGltZW5zaW9ucyh0aGlzLnNjcm9sbGVyQm9keSkueTtpZihhYj49emEpe2hh LnNldCh0aGlzLnNjcm9sbGVyLCdoZWlnaHQnLHphKydweCcpO20uYWRkQ2xhc3Mo dGhpcy5yaGMsJ3Bpbm5lZFVmaScpO3phPTA7fWVsc2V7aGEuc2V0KHRoaXMuc2Ny b2xsZXIsJ2hlaWdodCcsJ2F1dG8nKTttLnJlbW92ZUNsYXNzKHRoaXMucmhjLCdw aW5uZWRVZmknKTt6YS09YWI7fXZhciBiYj1tYS5nZXRFbGVtZW50RGltZW5zaW9u cyh0aGlzLnVmaUlucHV0Q29udGFpbmVyKS55O2hhLnNldCh0aGlzLnVmaUZvcm0s J3BhZGRpbmctYm90dG9tJyxiYisncHgnKTtiYS5yZXNpemUobmV3IG1hKHlhLngs emEpKTt0aGlzLnNjcm9sbGFibGVBcmVhLmFkanVzdEdyaXBwZXIoKTt9LGFkanVz dEZvclJlc2l6ZTpmdW5jdGlvbigpe3RoaXMuY3VycmVudE1pblNpemU9bnVsbDt0 aGlzLmFkanVzdFN0YWdlU2l6ZSgpO3RoaXMuYWRqdXN0Rm9yTmV3RGF0YSgpO30s c2hvdWxkU2hvd0hpUmVzOmZ1bmN0aW9uKHlhKXtpZigheWF8fCF5YS5zbWFsbHVy bClyZXR1cm4gZmFsc2U7dmFyIHphPXRoaXMuZ2V0U3RhZ2VTaXplKHlhLmRpbWVu c2lvbnMpLGFiPXRoaXMuZ2V0SW1hZ2VTaXplSW5TdGFnZSh5YS5kaW1lbnNpb25z LHphKTtyZXR1cm4gKGFiLng+eGEuU1RBR0VfTk9STUFMX01BWC54fHxhYi55Pnhh LlNUQUdFX05PUk1BTF9NQVgueSk7fSxnZXRJbWFnZVVSTDpmdW5jdGlvbih5YSl7 aWYoeWEudmlkZW8pe3JldHVybiBudWxsO31lbHNlIGlmKHlhLnNtYWxsdXJsJiYh dGhpcy5zaG91bGRTaG93SGlSZXMoeWEpKXJldHVybiB5YS5zbWFsbHVybDtyZXR1 cm4geWEudXJsO30sZ2V0SW1hZ2VEaW1lbnNpb25zOmZ1bmN0aW9uKHlhKXtpZih5 YS5zbWFsbGRpbXMmJighdGhpcy5zaG91bGRTaG93SGlSZXMoeWEpfHx0aGlzLmlt YWdlLnNyYz09PXlhLnNtYWxsdXJsKSlyZXR1cm4geWEuc21hbGxkaW1zO3JldHVy biB5YS5kaW1lbnNpb25zO30sZ2V0U3RhZ2VTaXplOmZ1bmN0aW9uKHlhLHphKXt2 YXIgYWI9bWEuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCksYmI9bmV3IG1hKHlhLngs eWEueSk7aWYoemEpYmI9bmV3IG1hKE1hdGgubWF4KHlhLngsemEueCksTWF0aC5t YXgoeWEueSx6YS55KSk7dmFyIGNiLGRiO2lmKHRoaXMuZnVsbHNjcmVlbiYmci5p c0Z1bGxTY3JlZW4oKSl7cmV0dXJuIG5ldyBtYSgodGhpcy5yaGNDb2xsYXBzZWQ/ c2NyZWVuLndpZHRoOnNjcmVlbi53aWR0aC14YS5TSURFQkFSX1NJWkVfTUFYKSxz Y3JlZW4uaGVpZ2h0LXhhLkZVTExfU0NSRUVOX1BBRERJTkcqMik7fWVsc2V7Y2I9 TWF0aC5taW4oYmIueCx0aGlzLnN0YWdlTWF4LngsKGFiLngteGEuU0lERUJBUl9T SVpFX01BWC14YS5TVEFHRV9DSFJPTUUueCkpO2RiPU1hdGgubWluKGJiLnksdGhp cy5zdGFnZU1heC55LGFiLnkteGEuU1RBR0VfQ0hST01FLnkpO31pZihjYj09PTAm JmRiPT09MClyZXR1cm4gbmV3IG1hKDAsMCk7dmFyIGViPWNiL2RiLGZiPWJiLngv YmIueTtpZihlYjxmYilyZXR1cm4gbmV3IG1hKGNiLE1hdGguY2VpbChjYi9mYikp O3JldHVybiBuZXcgbWEoTWF0aC5jZWlsKGRiKmZiKSxkYik7fSxnZXRJbWFnZVNp emVJblN0YWdlOmZ1bmN0aW9uKHlhLHphKXt2YXIgYWI9eWEueCxiYj15YS55O2lm KGFiPj16YS54fHxiYj49emEueSl7dmFyIGNiPXphLngvemEueSxkYj1hYi9iYjtp ZihjYjxkYil7YWI9emEueDtiYj1NYXRoLmNlaWwoYWIvZGIpO31lbHNlIGlmKGNi PmRiKXtiYj16YS55O2FiPU1hdGguY2VpbChiYipkYik7fWVsc2V7YWI9emEueDti Yj16YS55O319cmV0dXJuIG5ldyBtYShhYixiYik7fSxhZGp1c3RTdGFnZVNpemU6 ZnVuY3Rpb24oeWEpe3ZhciB6YT10aGlzLmN1cnJlbnRJbWFnZVNpemU7aWYoeWEp e3phPXlhO31lbHNle3ZhciBhYj10aGlzLnN0cmVhbSYmdGhpcy5zdHJlYW0uZ2V0 Q3VycmVudEltYWdlRGF0YSgpO2lmKGFiKXphPXRoaXMuZ2V0SW1hZ2VEaW1lbnNp b25zKGFiKTt9aWYoIXphKXJldHVybjt0aGlzLmN1cnJlbnRJbWFnZVNpemU9emE7

dmFyIGJiPTA7aWYodGhpcy5zaG91bGRTdHJldGNoJiYhdGhpcy5nZXRWaWRlb09u U3RhZ2UoKSYmemEueD56YS55JiZ6YS54PD14YS5USU1FTElORV9TVFJFVENIX1dJ RFRIJiZ6YS54Pj14YS5USU1FTElORV9TVFJFVENIX01JTil7emEueT1NYXRoLnJv dW5kKHphLnkqeGEuVElNRUxJTkVfU1RSRVRDSF9XSURUSC96YS54KTt6YS54PXhh LlRJTUVMSU5FX1NUUkVUQ0hfV0lEVEg7fWVsc2UgaWYodGhpcy5nZXRWaWRlb09u U3RhZ2UoKSl7YmI9eGEuVklERU9fQk9UVE9NX0JBUl9TUEFDRSoyO3phLnkrPWJi O312YXIgY2I9dGhpcy5nZXRTdGFnZVNpemUoemEsdGhpcy5jdXJyZW50TWluU2l6 ZSk7aWYoIXRoaXMuY3VycmVudE1pblNpemUpdGhpcy5jdXJyZW50TWluU2l6ZT1u ZXcgbWEoMCwwKTt0aGlzLmN1cnJlbnRNaW5TaXplPW5ldyBtYShNYXRoLm1heChj Yi54LHhhLlNUQUdFX01JTi54LHRoaXMuY3VycmVudE1pblNpemUueCksTWF0aC5t YXgoY2IueSx4YS5TVEFHRV9NSU4ueSx0aGlzLmN1cnJlbnRNaW5TaXplLnkpKTt2 YXIgZGI9dGhpcy5nZXRJbWFnZVNpemVJblN0YWdlKHphLHRoaXMuY3VycmVudE1p blNpemUpLGViPXRoaXMuY3VycmVudE1pblNpemUueC1kYi54LGZiPXRoaXMuY3Vy cmVudE1pblNpemUueS1kYi55O2lmKGViPjAmJmViPHhhLlBBRERJTkdfTUlOKXt0 aGlzLmN1cnJlbnRNaW5TaXplLngtPWViO31lbHNlIGlmKGZiPjAmJmZiPHhhLlBB RERJTkdfTUlOKXRoaXMuY3VycmVudE1pblNpemUueS09ZmI7dmFyIGdiPXRoaXMu Y3VycmVudE1pblNpemUueCt4YS5TSURFQkFSX1NJWkVfTUFYO2lmKHRoaXMucmhj Q29sbGFwc2VkKWdiPXRoaXMuY3VycmVudE1pblNpemUueDt0aGlzLnNub3dsaWZ0 UG9wdXAuc3R5bGUuY3NzVGV4dD0nd2lkdGg6JytnYisncHg7JysnaGVpZ2h0Oicr dGhpcy5jdXJyZW50TWluU2l6ZS55KydweDsnO3ZhciBoYj10aGlzLmN1cnJlbnRN aW5TaXplLnktYmIrJ3B4JztpZihsYS5maXJlZm94KCl8fGxhLmllKCk8OCl7dmFy IGliPWhhLmdldCh0aGlzLnN0YWdlV3JhcHBlciwnZm9udC1zaXplJyk7aWYobGEu aWUoKSYmaWIuaW5kZXhPZigncHgnKTwwKXt2YXIgamI9by5jcmVhdGUoJ2Rpdicp O2piLnN0eWxlLmZvbnRTaXplPWliO2piLnN0eWxlLmhlaWdodD0nMWVtJztpYj1q Yi5zdHlsZS5waXhlbEhlaWdodDt9aGI9KCh0aGlzLmN1cnJlbnRNaW5TaXplLnkt YmIpL3BhcnNlRmxvYXQoaWIpKSsnZW0nO310aGlzLnN0YWdlV3JhcHBlci5zdHls ZS5jc3NUZXh0PSd3aWR0aDonK3RoaXMuY3VycmVudE1pblNpemUueCsncHg7Jysn bGluZS1oZWlnaHQ6JytoYisnOyc7aWYobGEuaWUoKTw4KXtoYS5zZXQodGhpcy5y b290LCdoZWlnaHQnLG1hLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnkrJ3B4Jyk7 aGEuc2V0KHRoaXMuY29udGFpbmVyLCdtaW4taGVpZ2h0JywodGhpcy5jdXJyZW50 TWluU2l6ZS55K3hhLlNUQUdFX0NIUk9NRS55KSsncHgnKTt9dGhpcy5pbWFnZS5z dHlsZS5jc3NUZXh0PSd3aWR0aDonK2RiLngrJ3B4OycrJ2hlaWdodDonK2RiLnkr J3B4Oyc7dGhpcy5hZGp1c3RTY3JvbGxlcklmTmVjZXNzYXJ5KCk7fSxhZGp1c3RG b3JOZXdEYXRhOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaW1hZ2UpcmV0dXJuO3ZhciB5 YT1vLnNjcnkodGhpcy5zdGFnZSwnZGl2LnRhZ3NXcmFwcGVyJylbMF0semE9bWEu Z2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5pbWFnZSk7aWYoeWEpe2hhLnNldCh5 YSwnd2lkdGgnLHphLngrJ3B4Jyk7aGEuc2V0KHlhLCdoZWlnaHQnLHphLnkrJ3B4 Jyk7aWYobGEuaWUoKTw9Nyl7dmFyIGFiPW8uc2NyeSh0aGlzLnJvb3QsJ2Rpdi50 YWdDb250YWluZXInKVswXTtpZihhYiltLmNvbmRpdGlvbkNsYXNzKHlhLCdpZTdW ZXJ0aWNhbEZpeCcsbWEuZ2V0RWxlbWVudERpbWVuc2lvbnMoYWIpLnk+emEueSk7 fX19LHNldExvYWRpbmdTdGF0ZTpmdW5jdGlvbih5YSx6YSl7c3dpdGNoKHlhKXtj YXNlIHhhLlNUQVRFX0lNQUdFX1BJWEVMUzptLmNvbmRpdGlvbkNsYXNzKHRoaXMu cm9vdCwnaW1hZ2VQaXhlbHNMb2FkaW5nJyx6YSk7YnJlYWs7Y2FzZSB4YS5TVEFU RV9JTUFHRV9EQVRBOnRoaXMubG9hZGluZ1N0YXRlc1t5YV09emE7bS5jb25kaXRp b25DbGFzcyh0aGlzLnJvb3QsJ2ltYWdlTG9hZGluZycsemEpO2JyZWFrO2Nhc2Ug eGEuU1RBVEVfSFRNTDp0aGlzLmxvYWRpbmdTdGF0ZXNbeWFdPXphO20uY29uZGl0 aW9uQ2xhc3ModGhpcy5yb290LCdkYXRhTG9hZGluZycsemEpO3RoaXMucmhjLnNl dEF0dHJpYnV0ZSgnYXJpYS1idXN5Jyx6YT8ndHJ1ZSc6J2ZhbHNlJyk7YnJlYWs7 fX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc3RhZ2VIYW5kbGVycy5mb3JFYWNo KGZ1bmN0aW9uKHlhKXt5YS5yZW1vdmUoKTt9KTtpZih0aGlzLnBhZ2VIYW5kbGVy cyl7dGhpcy5wYWdlSGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbih5YSl7eWEucmVt b3ZlKCk7fSk7dGhpcy5wYWdlSGFuZGxlcnM9bnVsbDt9fSxjaGVja1N0YXRlOmZ1 bmN0aW9uKHlhKXtpZih5YSE9eGEuU1RBVEVfRVJST1ImJiF0aGlzLmxvYWRpbmdT dGF0ZXNbeWFdKXJldHVybjtzd2l0Y2goeWEpe2Nhc2UgeGEuU1RBVEVfSU1BR0Vf REFUQTp2YXIgemE9dGhpcy5zdHJlYW0uZ2V0Q3VycmVudEltYWdlRGF0YSgpO2lm KHphKXt2YXIgYWI9dGhpcy5nZXRJbWFnZVVSTCh6YSk7aWYoYWIpe3RoaXMuc3dp dGNoSW1hZ2UoYWIsbnVsbCx0cnVlKTt9ZWxzZSBpZih6YS52aWRlbyl0aGlzLnN3 aXRjaFZpZGVvKHphLnZpZGVvLHRydWUpO3RoaXMuc2V0TG9hZGluZ1N0YXRlKHlh LGZhbHNlKTt9YnJlYWs7Y2FzZSB4YS5TVEFURV9IVE1MOmlmKHRoaXMuc3RyZWFt LmdldEN1cnJlbnRIdG1sKCkpe3RoaXMuc3dhcERhdGEoKTt0aGlzLnNldExvYWRp

bmdTdGF0ZSh5YSxmYWxzZSk7fWJyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdHJlYW0u ZXJyb3JJbkN1cnJlbnQoKSl7bS5oaWRlKHRoaXMuaW1hZ2UpO20uc2hvdyh0aGlz LmVycm9yQm94KTt9YnJlYWs7fX0sYnV0dG9uTGlzdGVuZXI6ZnVuY3Rpb24oZXZl bnQpe3ZhciB5YT1ldmVudC5nZXRUYXJnZXQoKSx6YT1EYXRlLm5vdygpO2lmKHku YnlDbGFzcyh5YSwnZmJQaG90b1RhZ0FwcHJvdmFsQm94JykpcmV0dXJuO2lmKHph LXRoaXMubGFzdFBhZ2U8MzUwKXJldHVybjtpZih5LmJ5Q2xhc3MoeWEsJ2ZiUGhv dG9zUGhvdG9MaWtlJykpe3RoaXMubGlrZVBob3RvKCk7fWVsc2UgaWYoeS5ieUNs YXNzKHlhLCd0YWdBcHByb3ZlSWdub3JlJykpdGhpcy51cGRhdGVUYWdCb3goZXZl bnQseWEpO30sbGlrZVBob3RvOmZ1bmN0aW9uKCl7YWEuYWRkQnV0dG9uTGlrZSgp O3ZhciB5YT1uYSgnZmJQaG90b1Nub3dsaWZ0RmVlZGJhY2snKSx6YT1vLnNjcnko eWEsJ2J1dHRvbi5saWtlX2xpbmsnKVswXTtpZighemEpemE9by5zY3J5KHlhLCdh LlVGSUxpa2VMaW5rJylbMF07emEuY2xpY2soKTt9LHRvZ2dsZUxpa2VCdXR0b246 ZnVuY3Rpb24oKXt2YXIgeWE9by5zY3J5KHRoaXMuYnV0dG9uQWN0aW9ucywnYS5m YlBob3Rvc1Bob3RvTGlrZScpWzBdO2lmKHlhKXttLnRvZ2dsZUNsYXNzKHlhLCd2 aWV3ZXJMaWtlc1RoaXMnKTttLnJlbW92ZUNsYXNzKHlhLCd2aWV3ZXJBbHJlYWR5 TGlrZWRUaGlzJyk7fX0sbGlrZVBob3RvV2l0aEtleTpmdW5jdGlvbigpe2lmKHRo aXMuaXNTaG93aW5nTGlrZVBob3RvQ29uZmlybWF0aW9uKXJldHVybjtpZih0aGlz LnNraXBMaWtlUGhvdG9Db25maXJtYXRpb24pe3RoaXMubGlrZVBob3RvKCk7fWVs c2UgaS5zZW5kKG5ldyBqKCcvcGhvdG9zL2NvbmZpcm1fbGlrZS5waHAnKSxmdW5j dGlvbih5YSl7dGhpcy5pc1Nob3dpbmdMaWtlUGhvdG9Db25maXJtYXRpb249dHJ1 ZTt5YS5zdWJzY3JpYmUoJ2NvbmZpcm0nLHRoaXMub25DbG9zZUxpa2VQaG90b0Nv bmZpcm1EaWFsb2cuYmluZCh0aGlzKSk7eWEuc3Vic2NyaWJlKCdjYW5jZWwnLHRo aXMub25DbG9zZUxpa2VQaG90b0NvbmZpcm1EaWFsb2cuYmluZCh0aGlzKSk7fS5i aW5kKHRoaXMpKTtyZXR1cm4gZmFsc2U7fSxsaWtlUGhvdG9Ta2lwQ29uZmlybWF0 aW9uOmZ1bmN0aW9uKHlhKXt0aGlzLnNraXBMaWtlUGhvdG9Db25maXJtYXRpb249 eWE7dGhpcy5saWtlUGhvdG8oKTt9LG9uQ2xvc2VMaWtlUGhvdG9Db25maXJtRGlh bG9nOmZ1bmN0aW9uKCl7dGhpcy5pc1Nob3dpbmdMaWtlUGhvdG9Db25maXJtYXRp b249ZmFsc2U7fSx1cGRhdGVUYWdCb3g6ZnVuY3Rpb24oeWEsemEpe3RoaXMudW5o aWxpdGVBbGxUYWdzKCk7dmFyIGFiPXJhKHlhKTtpZighYWIpcmV0dXJuO20uYWRk Q2xhc3MoYWIsJ3RhZ0JveCcpO20uYWRkQ2xhc3MoYWIsJ3RhZ0JveFBlbmRpbmdS ZXNwb25zZScpO20ucmVtb3ZlQ2xhc3MoYWIsJ3RhZ0JveFBlbmRpbmcnKTttLmhp ZGUoby5maW5kKGFiLCdzcGFuLnRhZ0Zvcm0nKSk7aWYoemEpe20uc2hvdyhvLmZp bmQoYWIsJ3NwYW4udGFnQXBwcm92ZWQnKSk7fWVsc2UgbS5zaG93KG8uZmluZChh Yiwnc3Bhbi50YWdJZ25vcmVkJykpO30scm90YXRlOmZ1bmN0aW9uKHlhKXt2YXIg emE9dGhpcy5zdHJlYW0uZ2V0Q3Vyc29yKCk7aWYodGhpcy5nZXRWaWRlb09uU3Rh Z2UoKSl7dmFyIGFiPSh5YT09J2xlZnQnKT8yNzA6OTA7ay5sb2FkTW9kdWxlcyhb J1ZpZGVvUm90YXRlJ10sZnVuY3Rpb24oY2Ipe25ldyBjYih6YSkubW90aW9uUm90 YXRlKGFiKTt9KTtyZXR1cm47fXZhciBiYj1wYSh7ZmJpZDp6YSxjc192ZXI6ei5W SUVXRVJfU05PV0xJRlR9LHRoaXMuc3RyZWFtLmdldFBob3RvU2V0UXVlcnkoKSk7 YmJbeWFdPTE7dGhpcy5zZXRMb2FkaW5nU3RhdGUoeGEuU1RBVEVfSU1BR0VfREFU QSx0cnVlKTt0aGlzLnNldExvYWRpbmdTdGF0ZSh0aGlzLlNUQVRFX0lNQUdFX1BJ WEVMUyx0cnVlKTttLmhpZGUodGhpcy5pbWFnZSk7bmV3IGooJy9hamF4L3Bob3Rv cy9waG90by9yb3RhdGUvJykuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uKHRy dWUpLnNldERhdGEoYmIpLnNldEVycm9ySGFuZGxlcih0aGlzLnJvdGF0aW9uRXJy b3IuYmluZCh0aGlzLHphKSkuc2V0RmluYWxseUhhbmRsZXIodGhpcy5yb3RhdGlv bkNvbXBsZXRlLmJpbmQodGhpcyx6YSkpLnNldE1ldGhvZCgnUE9TVCcpLnNldFJl YWRPbmx5KGZhbHNlKS5zZW5kKCk7fSxyb3RhdGlvbkNvbXBsZXRlOmZ1bmN0aW9u KHlhLHphKXtpZih5YT09dGhpcy5zdHJlYW0uZ2V0Q3Vyc29yKCkpe3RoaXMuc2V0 TG9hZGluZ1N0YXRlKHhhLlNUQVRFX0lNQUdFX0RBVEEsZmFsc2UpO3RoaXMuc3dp dGNoSW1hZ2UodGhpcy5nZXRJbWFnZVVSTCh0aGlzLnN0cmVhbS5nZXRDdXJyZW50 SW1hZ2VEYXRhKCkpKTt0aGlzLnN3YXBEYXRhKCk7fX0scm90YXRpb25FcnJvcjpm dW5jdGlvbih5YSx6YSl7aWYoeWE9PXRoaXMuc3RyZWFtLmdldEN1cnNvcigpKXt0 aGlzLnNldExvYWRpbmdTdGF0ZSh4YS5TVEFURV9JTUFHRV9EQVRBLGZhbHNlKTt0 aGlzLnN3aXRjaEltYWdlKHRoaXMuZ2V0SW1hZ2VVUkwodGhpcy5zdHJlYW0uZ2V0 Q3VycmVudEltYWdlRGF0YSgpKSk7ay5sb2FkTW9kdWxlcyhbJ0FzeW5jUmVzcG9u c2UnXSxmdW5jdGlvbihhYil7YWIuZGVmYXVsdEVycm9ySGFuZGxlcih6YSk7fSk7 fX0sc2F2ZVRhZ3NGcm9tUGF5bG9hZDpmdW5jdGlvbih5YSl7dGhpcy5zdG9yZUZy b21EYXRhKHlhKTtpZignZGF0YScgaW4geWEmJnRoaXMuc3RyZWFtLmdldEN1cnNv cigpIGluIHlhLmRhdGEpdGhpcy5zd2FwRGF0YSgpO30sc2F2ZUVkaXQ6ZnVuY3Rp b24oKXtpZighbS5oYXNDbGFzcyh0aGlzLnJvb3QsJ2ZiUGhvdG9Tbm93bGlmdEVk

aXRNb2RlJykpcmV0dXJuO2subG9hZE1vZHVsZXMoWydQaG90b0lubGluZUVkaXRv cicsJ0Zvcm0nXSxmdW5jdGlvbih5YSx6YSl7dmFyIGFiPXlhLmdldEluc3RhbmNl KHRoaXMuZ2V0Vmlld2VyQ29uc3QoKSk7YWImJnphLmJvb3RzdHJhcChhYi5nZXRG b3JtKCkuY29udHJvbGxlcik7fS5iaW5kKHRoaXMpKTt9LG1vdXNlTGVhdmVMaXN0 ZW5lcjpmdW5jdGlvbihldmVudCl7dGhpcy51bmhpbGl0ZUFsbFRhZ3MoKTt0aGlz LnJlSGlsaXRlUGVuZGluZ1RhZygpO30saGlsaXRlUGFnZXJPbk1vdXNlTW92ZTpm dW5jdGlvbihldmVudCl7dmFyIHlhPW1hLmdldEV2ZW50UG9zaXRpb24oZXZlbnQp LHphPW1hLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLnN0YWdlKTtpZih3LmlzUlRM KCkpe3ZhciBhYj1tYS5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLnN0YWdlKTt0 aGlzLnN0YWdlUGFnZXJQcmV2PWFiLngtKHlhLngtemEueCk8eGEuR09QUkVWX0FS RUE7fWVsc2UgdGhpcy5zdGFnZVBhZ2VyUHJldj15YS54LXphLng8eGEuR09QUkVW X0FSRUE7bS5jb25kaXRpb25DbGFzcyh0aGlzLnByZXZQYWdlciwnaGlsaWdodFBh Z2VyJyx0aGlzLnN0YWdlUGFnZXJQcmV2KTttLmNvbmRpdGlvbkNsYXNzKHRoaXMu bmV4dFBhZ2VyLCdoaWxpZ2h0UGFnZXInLCF0aGlzLnN0YWdlUGFnZXJQcmV2KTt2 YXIgYmIsY2I9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYoIXkuYnlDbGFzcyhjYiwnc25v d2xpZnRPdmVybGF5JykmJiF5LmJ5Q2xhc3MoY2IsJ2JvdHRvbUJhckFjdGlvbnMn KSYmIXkuYnlDbGFzcyhjYiwnc25vd2xpZnRQYWdlcicpKWJiPXhhLlBBR0VSX0ZB REU7dGhpcy5zaG93UGFnZXJzKGJiKTt9LHNob3dQYWdlcnM6ZnVuY3Rpb24oeWEp e2NsZWFyVGltZW91dCh0aGlzLmZhZGVQYWdlclRpbWVyKTt0aGlzLnNldFN0YWdl UGFnZXJzU3RhdGUoJ2FjdGl2ZScpO2lmKHR5cGVvZiB5YSE9PSd1bmRlZmluZWQn KXRoaXMuZmFkZVBhZ2VyVGltZXI9dGhpcy5oaWRlUGFnZXJzLmJpbmQodGhpcyku ZGVmZXIoeWEpO30saGlkZVBhZ2VyczpmdW5jdGlvbigpe3ZhciB5YT1vLnNjcnko dGhpcy5nZXRSb290KCksJy5mYlBob3Rvc1Bob3RvQWN0aW9uc01lbnUnKVswXTtp Zih5YSlyZXR1cm47Y2xlYXJUaW1lb3V0KHRoaXMuZmFkZVBhZ2VyVGltZXIpO3Ro aXMuc2V0U3RhZ2VQYWdlcnNTdGF0ZSgnaW5hY3RpdmUnKTt9LGdldFRhZ2dlcjpm dW5jdGlvbigpe2lmKCF0aGlzLlBob3RvVGFnZ2VyKXJldHVybiBudWxsO3ZhciB5 YT10aGlzLlBob3RvVGFnZ2VyLmdldEluc3RhbmNlKHouVklFV0VSX1NOT1dMSUZU KTtpZigheWF8fCF5YS50YWdIb3ZlckZhY2Vib3gpcmV0dXJuIG51bGw7cmV0dXJu IHlhO30sdW5oaWxpdGVBbGxUYWdzOmZ1bmN0aW9uKCl7by5zY3J5KHRoaXMuc3Rh Z2UsJ2Rpdi50YWdzV3JhcHBlciBkaXYuaG92ZXInKS5mb3JFYWNoKGZ1bmN0aW9u KHphKXttLnJlbW92ZUNsYXNzKHphLCdob3ZlcicpO30pO3RoaXMuaGlsaXRlZFRh Zz1udWxsO2lmKCFtLmhhc0NsYXNzKHRoaXMucm9vdCwndGFnZ2luZ01vZGUnKSl7 dmFyIHlhPXRoaXMuZ2V0VGFnZ2VyKCk7aWYoeWEpe3lhLmhpZGVUYWdnZXIoKTt5 YS5zZXRDdXJyZW50RmFjZWJveChudWxsKTt9fX0sc3dpdGNoSGlsaXRlZFRhZ3M6 ZnVuY3Rpb24oeWEsemEpe2lmKHRoaXMuc3dpdGNoVGltZXIhPT1udWxsKXtjbGVh clRpbWVvdXQodGhpcy5zd2l0Y2hUaW1lcik7dGhpcy5zd2l0Y2hUaW1lcj1udWxs O310aGlzLnVuaGlsaXRlQWxsVGFncygpO3ZhciBhYj1yYSh5YSk7aWYoYWIpe3Ro aXMuaGlsaXRlZFRhZz15YTtpZighbS5oYXNDbGFzcyh0aGlzLnJvb3QsJ3RhZ2dp bmdNb2RlJykmJmRhLmlzRmFjZWJveCh0aGlzLmhpbGl0ZWRUYWcpKXt2YXIgYmI9 dGhpcy5nZXRUYWdnZXIoKTtpZihiYil7bS5hZGRDbGFzcyhhYiwnaG92ZXInKTt2 YXIgY2I9YmIuZ2V0RmFjZWJveCh5YSk7YmIuc2V0Q3VycmVudEZhY2Vib3goY2Ip O2lmKGNiKWJiLmFkZFRhZ0Zyb21GYWNlYm94KGNiKTt9fWVsc2UgbS5hZGRDbGFz cyhhYiwnaG92ZXInKTtpZihtLmhhc0NsYXNzKGFiLCd0YWdCb3hQZW5kaW5nJykm JiFtLmhhc0NsYXNzKGFiLCdzaG93UGVuZGluZ1RhZ05hbWUnKSYmemE9PT10cnVl KXtvLnNjcnkodGhpcy5zdGFnZSwnZGl2LnRhZ3NXcmFwcGVyIGRpdi5zaG93UGVu ZGluZ1RhZ05hbWUnKS5mb3JFYWNoKGZ1bmN0aW9uKGRiKXttLnJlbW92ZUNsYXNz KGRiLCdzaG93UGVuZGluZ1RhZ05hbWUnKTt9KTttLmFkZENsYXNzKGFiLCdzaG93 UGVuZGluZ1RhZ05hbWUnKTt9fX0scmVIaWxpdGVQZW5kaW5nVGFnOmZ1bmN0aW9u KCl7dmFyIHlhPXJhKHRoaXMuaGlsaXRlZFRhZyk7aWYoeWEmJm0uaGFzQ2xhc3Mo eWEsJ3Nob3dQZW5kaW5nVGFnTmFtZScpKXJldHVybjt2YXIgemE9by5zY3J5KHRo aXMuc3RhZ2UsJ2Rpdi50YWdzV3JhcHBlciBkaXYuc2hvd1BlbmRpbmdUYWdOYW1l JylbMF07aWYoemEpdGhpcy5zd2l0Y2hIaWxpdGVkVGFncyh6YS5pZCk7fSxoaWxp dGVUYWdzT25Nb3VzZU1vdmU6ZnVuY3Rpb24oZXZlbnQpe2lmKCF0aGlzLnN0cmVh bS5nZXRDdXJyZW50RXh0cmFEYXRhKCl8fHRoaXMuZ2V0VmlkZW9PblN0YWdlKCkp cmV0dXJuO2lmKHRoaXMuc3dpdGNoVGltZXIhPT1udWxsKXJldHVybjt2YXIgeWE9 ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYoeS5ieUNsYXNzKHlhLCdzbm93bGlmdE92ZXJs YXknKXx8eS5ieUNsYXNzKHlhLCdmYlBob3RvU25vd2xpZnRUYWdBcHByb3ZhbCcp fHx5LmJ5Q2xhc3MoeWEsJ3RhZ1BvaW50ZXInKXx8eS5ieUNsYXNzKHlhLCdwaG90 b1RhZ1R5cGVhaGVhZCcpKXJldHVybjt2YXIgemE9eS5ieUNsYXNzKHlhLCd0YWdC b3hQZW5kaW5nJyksYWI9ZmFsc2U7aWYodGhpcy5oaWxpdGVkVGFnKXt2YXIgYmI9

cmEodGhpcy5oaWxpdGVkVGFnKTthYj1iYiYmbS5oYXNDbGFzcyhiYiwndGFnQm94 UGVuZGluZycpO312YXIgY2I9KCghdGhpcy5oaWxpdGVkVGFnJiZ6YSl8fCghYWIm JnphKSk7aWYoY2Ipe3RoaXMuc3dpdGNoSGlsaXRlZFRhZ3MoemEuaWQpO3JldHVy bjt9aWYoemEmJih6YS5pZD09dGhpcy5oaWxpdGVkVGFnKSlyZXR1cm47dmFyIGRi PTI1MCxlYj1kYS5hYnNvbHV0ZVRvTm9ybWFsaXplZFBvc2l0aW9uKHRoaXMuaW1h Z2UsbWEuZ2V0RXZlbnRQb3NpdGlvbihldmVudCkpO2lmKHRoaXMuY3VycmVudFRh Z0hhc1ByZWNlZGVuY2UoZWIpKXJldHVybjt2YXIgZmI9ZGEuZ2V0TmVhcmVzdEJv eCh0aGlzLnN0cmVhbS5nZXRDdXJyZW50RXh0cmFEYXRhKCkudGFnUmVjdHMsZWIp O2lmKCFmYil7aWYoIWFiKXt0aGlzLnVuaGlsaXRlQWxsVGFncygpO3RoaXMucmVI aWxpdGVQZW5kaW5nVGFnKCk7fXJldHVybjt9dmFyIGdiPW51bGw7aWYoYWIpe3Zh ciBoYj17fTtoYlt0aGlzLmhpbGl0ZWRUYWddPXRoaXMuc3RyZWFtLmdldEN1cnJl bnRFeHRyYURhdGEoKS50YWdSZWN0c1t0aGlzLmhpbGl0ZWRUYWddO2diPWRhLmdl dE5lYXJlc3RCb3goaGIsZWIpO31pZihnYiE9PW51bGwmJmFiKXJldHVybjtpZih0 aGlzLmhpbGl0ZWRUYWchPWZiKWlmKGFiKXt0aGlzLnN3aXRjaFRpbWVyPXRoaXMu c3dpdGNoSGlsaXRlZFRhZ3MuYmluZCh0aGlzLGZiKS5kZWZlcihkYik7fWVsc2V7 aWYodGhpcy5zaG93SG92ZXIpe2lmKCF0aGlzLnNlZW5UYWdzKXRoaXMuc2VlblRh Z3M9W107aWYoIXRoaXMuc2VlblRhZ3NbZmJdKXthYS5hZGRGYWNlVGFnSW1wcmVz c2lvbigpO3RoaXMuc2VlblRhZ3NbZmJdPXRydWU7fX10aGlzLnN3aXRjaEhpbGl0 ZWRUYWdzKGZiKTt9fSxjdXJyZW50VGFnSGFzUHJlY2VkZW5jZTpmdW5jdGlvbih5 YSl7aWYoIXRoaXMuaGlsaXRlZFRhZylyZXR1cm4gZmFsc2U7dmFyIHphPXRoaXMu c3RyZWFtLmdldEN1cnJlbnRFeHRyYURhdGEoKS50YWdSZWN0c1t0aGlzLmhpbGl0 ZWRUYWddLGFiPW5ldyBmYSh6YS50Kyh6YS5oKCkvMiksemEucix6YS5iKyhkYS5p c0ZhY2Vib3godGhpcy5oaWxpdGVkVGFnKT8xMDowKSx6YS5sLHphLmRvbWFpbik7 cmV0dXJuIGFiLmNvbnRhaW5zKHlhKTt9LGdldFZpZGVvT25TdGFnZTpmdW5jdGlv bigpe3ZhciB5YT10aGlzLnN0cmVhbSYmdGhpcy5zdHJlYW0uZ2V0Q3VycmVudElt YWdlRGF0YSgpO3JldHVybiB5YSYmeWEudmlkZW87fSxzaG91bGRQYWdlT25BY3Rp b246ZnVuY3Rpb24oeWEsemEpe2lmKCF0aGlzLmlzT3Blbnx8dGhpcy5pc1Nob3dp bmdMaWtlUGhvdG9Db25maXJtYXRpb24pcmV0dXJuIGZhbHNlO3ZhciBhYj1vLmlz Tm9kZSh6YSkmJih5LmJ5Q2xhc3MoemEsJ3Nub3dsaWZ0UGFnZXInKXx8eS5ieUNs YXNzKHphLCdzdGFnZVBhZ2VycycpfHx5LmJ5Q2xhc3MoemEsJ3Bpdm90UGFnZUNv bHVtbicpKSxiYj1vLmlzTm9kZSh6YSkmJnkuYnlDbGFzcyh6YSwnc3RhZ2UnKSxj Yj1tLmhhc0NsYXNzKHphLCdmYWNlQm94JyksZGI9KChiYiYmbS5oYXNDbGFzcyh0 aGlzLnJvb3QsJ3RhZ2dpbmdNb2RlJykpfHx5LmJ5Q2xhc3MoemEsJ3RhZ0JveFBl bmRpbmcnKXx8eS5ieUNsYXNzKHphLCd0YWdCb3hQZW5kaW5nUmVzcG9uc2UnKXx8 eS5ieUNsYXNzKHphLCdmYlBob3RvVGFnQXBwcm92YWxCb3gnKXx8eS5ieUNsYXNz KHphLCd0YWcnKSk7aWYoZGIpcmV0dXJuIGZhbHNlO3JldHVybiB5YT09dS5MRUZU fHx5YT09dS5SSUdIVHx8KCFtLmhhc0NsYXNzKHRoaXMucm9vdCwndGFnZ2luZ01v ZGUnKSYmY2IpfHxhYnx8YmI7fSxwYWdlTGlzdGVuZXI6ZnVuY3Rpb24oZXZlbnQp e3ZhciB5YT1FdmVudC5nZXRLZXlDb2RlKGV2ZW50KSx6YT1ldmVudC5nZXRUYXJn ZXQoKTtpZighdGhpcy5zaG91bGRQYWdlT25BY3Rpb24oeWEsemEpKXJldHVybjt2 YXIgYWI9MDtpZih5YT09dS5SSUdIVCl7YWI9MTthYS5zZXRQYWdpbmdBY3Rpb24o J2tleV9yaWdodCcpO31lbHNlIGlmKHlhPT11LkxFRlQpe2FiPS0xO2FhLnNldFBh Z2luZ0FjdGlvbigna2V5X2xlZnQnKTt9ZWxzZSBpZih5LmJ5Q2xhc3MoemEsJ25l eHQnKSl7YWI9MTthYS5zZXRQYWdpbmdBY3Rpb24oJ2NsaWNrX25leHQnKTt9ZWxz ZSBpZih5LmJ5Q2xhc3MoemEsJ3ByZXYnKSl7YWI9LTE7YWEuc2V0UGFnaW5nQWN0 aW9uKCdjbGlja19wcmV2Jyk7fWVsc2UgaWYoIXRoaXMuc3RhZ2VQYWdlclByZXYp e2FiPTE7YWEuc2V0UGFnaW5nQWN0aW9uKCdjbGlja19zdGFnZScpO31lbHNle2Fi PS0xO2FhLnNldFBhZ2luZ0FjdGlvbignY2xpY2tfc3RhZ2VfYmFjaycpO31pZiht Lmhhc0NsYXNzKHRoaXMucm9vdCwnZmJQaG90b1Nub3dsaWZ0RWRpdE1vZGUnKSl7 dGhpcy53YXJuTGVhdmVQYWdlKGFiKTt9ZWxzZXt0aGlzLnBhZ2UoYWIsbGEuY2hy b21lKCkmJnIuaXNGdWxsU2NyZWVuKCkpO3ZhKCdzbm93bGlmdCcsemEsZXZlbnQp LnVhaShhYS5wYWdpbmdBY3Rpb24pO319LHdhcm5MZWF2ZVBhZ2U6ZnVuY3Rpb24o eWEpe25ldyBuKCkuc2V0VGl0bGUoIkFuZGEgeWFraW4gaW5naW4gbWVuaW5nZ2Fs a2FuIGhhbGFtYW4gaW5pPyIpLnNldEJvZHkoIkFkYSBwZXJ1YmFoYW4gYmVsdW0g dGVyc2ltcGFuIHlhbmcgYWthbiBoaWxhbmcgamlrYSBBbmRhIG1lbmluZ2dhbGth biBoYWxhbWFuIGluaS4iKS5zZXRCdXR0b25zKFt7bmFtZTonbGVhdmVfcGFnZScs bGFiZWw6IlRpbmdnYWxrYW4gSGFsYW1hbiBJbmkiLGhhbmRsZXI6dGhpcy5wYWdl LmJpbmQodGhpcyx5YSl9LHtuYW1lOidjb250aW51ZV9lZGl0aW5nJyxsYWJlbDoi VGV0YXAgZGkgSGFsYW1hbiBpbmkiLGNsYXNzTmFtZTonaW5wdXRhdXgnfV0pLnNl dE1vZGFsKHRydWUpLnNob3coKTt9LHBhZ2U6ZnVuY3Rpb24oeWEsemEpe2lmKCF0

aGlzLnN0cmVhbS5pc1ZhbGlkTW92ZW1lbnQoeWEpKXt0aGlzLnNob3dQYWdlcnMo eGEuUEFHRVJfRkFERSk7cmV0dXJuO310aGlzLmxhc3RQYWdlPURhdGUubm93KCk7 dGhpcy51bmhpbGl0ZUFsbFRhZ3MoKTt0aGlzLnNlZW5UYWdzPVtdO3ZhciBhYj10 aGlzLmdldFZpZGVvT25TdGFnZSgpO2lmKGFiKXRoaXMuc3dpdGNoVmlkZW8oYWIs ZmFsc2UpO2lmKHRoaXMucGl2b3RzJiZ0aGlzLnBpdm90cy5wYWdlKHlhKSlyZXR1 cm47aC5pbmZvcm0oJ1Bob3RvU25vd2xpZnQuUEFHRScpO2lhLmhpZGUoKTt0aGlz LnJlY2FjaGVEYXRhKCk7dGhpcy5zdHJlYW0ubW92ZUN1cnNvcih5YSk7bS5oaWRl KHRoaXMuaW1hZ2UpO2lmKHRoaXMuc3RyZWFtLmVycm9ySW5DdXJyZW50KCkpe3Ro aXMuc2V0TG9hZGluZ1N0YXRlKHhhLlNUQVRFX0hUTUwsdHJ1ZSk7bS5zaG93KHRo aXMuZXJyb3JCb3gpO3JldHVybjt9dmFyIGJiPXRoaXMuc3RyZWFtLmdldEN1cnJl bnRJbWFnZURhdGEoKTtpZihiYil7dmFyIGNiPXRoaXMuZ2V0SW1hZ2VVUkwoYmIp O2lmKGNiKXt0aGlzLnN3aXRjaEltYWdlKGNiLG51bGwsdHJ1ZSk7fWVsc2UgaWYo YmIudmlkZW8pdGhpcy5zd2l0Y2hWaWRlbyhiYi52aWRlbyx0cnVlKTtpZighemEp e3RoaXMucmVwbGFjZVVybD10cnVlO3NhKGJiLmluZm8ucGVybWFsaW5rKTt9dGhp cy5zZXRMb2FkaW5nU3RhdGUoeGEuU1RBVEVfSU1BR0VfREFUQSxmYWxzZSk7fWVs c2V7dGhpcy5zZXRMb2FkaW5nU3RhdGUoeGEuU1RBVEVfSU1BR0VfUElYRUxTLHRy dWUpO3RoaXMuc2V0TG9hZGluZ1N0YXRlKHhhLlNUQVRFX0lNQUdFX0RBVEEsdHJ1 ZSk7fWlmKHRoaXMuc3RyZWFtLmdldEN1cnJlbnRIdG1sKCkpe3RoaXMuc3dhcERh dGEoKTt9ZWxzZSB0aGlzLnNldExvYWRpbmdTdGF0ZSh4YS5TVEFURV9IVE1MLHRy dWUpO3RoaXMuZGlzYWJsZUFkcz0hdGhpcy5pc0xvZ2dlZEluVmlld2VyO3RoaXMu bG9hZEFkcygpO30sbG9nSW1wcmVzc2lvbkRldGFpbHNGb3JQaG90bzpmdW5jdGlv bigpe3ZhciB5YT1bXS5jb25jYXQoby5zY3J5KG5hKCdmYlBob3RvU25vd2xpZnRU YWdMaXN0JyksJ2lucHV0LnBob3RvSW1wcmVzc2lvbkRldGFpbHMnKSxvLnNjcnko bmEoJ2ZiUGhvdG9Tbm93bGlmdEZlZWRiYWNrJyksJ2lucHV0LnBob3RvSW1wcmVz c2lvbkRldGFpbHMnKSk7aWYoeWEubGVuZ3RoPT09MClyZXR1cm47dmFyIHphPXt9 O2Zvcih2YXIgYWI9MDthYjx5YS5sZW5ndGg7YWIrKyl6YVt5YVthYl0ubmFtZV09 eWFbYWJdLnZhbHVlO2lmKHRoaXMuZ2V0VmlkZW9PblN0YWdlKCkpe3phLndpZHRo PTA7emEuaGVpZ2h0PTA7fWVsc2V7dmFyIGJiPXRoaXMuZ2V0SW1hZ2VEaW1lbnNp b25zKHRoaXMuc3RyZWFtLmdldEN1cnJlbnRJbWFnZURhdGEoKSk7emEud2lkdGg9 YmIueDt6YS5oZWlnaHQ9YmIueTt9YWEuYWRkRGV0YWlsRGF0YSh0aGlzLnN0cmVh bS5nZXRDdXJzb3IoKSx6YSk7YmEuc2V0SXNMb2dBZERhdGEodHJ1ZSk7fSxsb2Fk QWRzOmZ1bmN0aW9uKCl7aWYodGhpcy5kaXNhYmxlQWRzKXJldHVybjtiYS5sb2Fk QWRzRnJvbVVzZXJBY3Rpdml0eSgpO30sdHJhbnNpdGlvbkhhbmRsZXI6ZnVuY3Rp b24oeWEpe2lmKHlhLmdldFF1ZXJ5RGF0YSgpLmNsb3NlVGhlYXRlcnx8eWEuZ2V0 UXVlcnlEYXRhKCkucGVybVBhZ2V8fHlhLmdldFF1ZXJ5RGF0YSgpLm1ha2Vwcm9m aWxlfHx0aGlzLnJldHVybmluZ1RvU3RhcnQpe2lmKHRoaXMuaXNPcGVuKXRoaXMu Y2xvc2UoKTt0aGlzLnRyYW5zaXRpb25IYW5kbGVyUmVnaXN0ZXJlZD1mYWxzZTty ZXR1cm4gZmFsc2U7fWlmKHRoaXMucmVwbGFjZVVybCl7dGhpcy5yZXBsYWNlVXJs PWZhbHNlO3RoaXMuX3VyaVN0YWNrLnB1c2goeWEuZ2V0UXVhbGlmaWVkVVJJKCku dG9TdHJpbmcoKSk7eC50cmFuc2l0aW9uQ29tcGxldGUoKTtyZXR1cm4gdHJ1ZTt9 dmFyIHphPXRoaXMuX3VyaVN0YWNrLmxlbmd0aDtpZih6YT49MiYmdGhpcy5fdXJp U3RhY2tbemEtMl09PXlhLmdldFF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkpdGhp cy5fdXJpU3RhY2sucG9wKCk7dmFyIGFiPXRoaXMuc3RyZWFtLmdldEN1cnNvckZv clVSSSh5YS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkpO2lmKGFiKXt2 YXIgYmI9dGhpcy5zdHJlYW0uZ2V0UmVsYXRpdmVNb3ZlbWVudChhYik7dGhpcy5w YWdlKGJiLHRydWUpO3gudHJhbnNpdGlvbkNvbXBsZXRlKCk7cmV0dXJuIHRydWU7 fWlmKHRoaXMuaXNPcGVuKXt0aGlzLmNsb3NlKCk7eC50cmFuc2l0aW9uQ29tcGxl dGUoKTtyZXR1cm4gdHJ1ZTt9dGhpcy50cmFuc2l0aW9uSGFuZGxlclJlZ2lzdGVy ZWQ9ZmFsc2U7cmV0dXJuIGZhbHNlO30scmVjYWNoZURhdGE6ZnVuY3Rpb24oKXtp ZighdGhpcy5sb2FkaW5nU3RhdGVzLmh0bWwpe3ZhciB5YT10aGlzLnN0cmVhbS5n ZXRDdXJyZW50SHRtbCgpO2Zvcih2YXIgemEgaW4geWEpe3lhW3phXT1xYShuYSh6 YSkuY2hpbGROb2Rlcyk7by5lbXB0eShuYSh6YSkpO319fSxyZWxvYWRJZlRpbWVv dXQ6ZnVuY3Rpb24oKXtpZighcy5oYXNMb2FkZWQodGhpcy5pbWFnZSkpe3ZhciB5 YT10aGlzLm1ha2VOZXdJbWFnZSh0aGlzLmltYWdlLnNyYyx0cnVlKTtFdmVudC5s aXN0ZW4oeWEsJ2xvYWQnLHRoaXMudXNlSW1hZ2UuYmluZCh0aGlzLHlhLG51bGws dHJ1ZSkpO319LHVzZUltYWdlOmZ1bmN0aW9uKHlhLHphLGFiKXtpZihhYiYmcy5o YXNMb2FkZWQodGhpcy5pbWFnZSkpcmV0dXJuO28ucmVwbGFjZSh0aGlzLmltYWdl LHlhKTt0aGlzLmltYWdlPXlhO3RoaXMuYWRqdXN0U3RhZ2VTaXplKHphKTt9LG1h a2VOZXdJbWFnZTpmdW5jdGlvbih5YSx6YSl7aWYodGhpcy5pbWFnZUxvYWRpbmdU aW1lcil7Y2xlYXJUaW1lb3V0KHRoaXMuaW1hZ2VMb2FkaW5nVGltZXIpO3RoaXMu

aW1hZ2VMb2FkaW5nVGltZXI9bnVsbDt9ZWxzZSBpZighemEpdGhpcy5pbWFnZVJl ZnJlc2hUaW1lcj1zZXRUaW1lb3V0KHRoaXMucmVsb2FkSWZUaW1lb3V0LmJpbmQo dGhpcykseGEuTE9BRElOR19USU1FT1VUKTt2YXIgYWI9by5jcmVhdGUoJ2ltZycs e2NsYXNzTmFtZTonc3BvdGxpZ2h0JyxhbHQ6Jyd9KTthYi5zZXRBdHRyaWJ1dGUo J2FyaWEtZGVzY3JpYmVkYnknLCdmYlBob3Rvc1Nub3dsaWZ0Q2FwdGlvbicpO2Fi LnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5JywndHJ1ZScpO0V2ZW50Lmxpc3Rlbihh YiwnbG9hZCcsYS5hc3luY19jYWxsYmFjayhmdW5jdGlvbigpe2NsZWFyVGltZW91 dCh0aGlzLmltYWdlUmVmcmVzaFRpbWVyKTt0aGlzLmltYWdlLnNldEF0dHJpYnV0 ZSgnYXJpYS1idXN5JywnZmFsc2UnKTt0aGlzLnNldExvYWRpbmdTdGF0ZSh0aGlz LlNUQVRFX0lNQUdFX1BJWEVMUyxmYWxzZSk7KGZ1bmN0aW9uKCl7aWYodGhpcy5p c09wZW4pe3RoaXMuYWRqdXN0U3RhZ2VTaXplKCk7dGhpcy5hZGp1c3RGb3JOZXdE YXRhKCk7fX0pLmJpbmQodGhpcykuZGVmZXIoKTt9LmJpbmQodGhpcyksJ3Bob3Rv X3RoZWF0ZXInKSk7YWIuc3JjPXlhO3JldHVybiBhYjt9LHN3aXRjaEltYWdlOmZ1 bmN0aW9uKHlhLHphLGFiKXttLmhpZGUodGhpcy5pbWFnZSk7bS5oaWRlKHRoaXMu ZXJyb3JCb3gpO3RoaXMuc2V0TG9hZGluZ1N0YXRlKHRoaXMuU1RBVEVfSU1BR0Vf UElYRUxTLHRydWUpO3ZhciBiYj10aGlzLnN0cmVhbSYmdGhpcy5zdHJlYW0uZ2V0 Q3VycmVudEltYWdlRGF0YSgpO2lmKGJiKWFhLmFkZFBob3RvVmlldyhiYi5pbmZv LHRoaXMuc2hvdWxkU2hvd0hpUmVzKGJiKSx0aGlzLmZ1bGxzY3JlZW4mJnIuaXNG dWxsU2NyZWVuKCkpO3RoaXMudXNlSW1hZ2UodGhpcy5tYWtlTmV3SW1hZ2UoeWEs ZmFsc2UpLHphLGZhbHNlKTtpZihhYil0aGlzLnN0cmVhbS5wcmVsb2FkSW1hZ2Vz KHRoaXMuc2hvdWxkU2hvd0hpUmVzKGJiKSk7fSxzd2l0Y2hWaWRlbzpmdW5jdGlv bih5YSx6YSl7dmFyIGFiPSdzd2ZfJyt5YTtpZih6YSl7bS5hZGRDbGFzcyh0aGlz LnN0YWdlV3JhcHBlciwnc2hvd1ZpZGVvJyk7dmFyIGJiPW8uY3JlYXRlKCdkaXYn LHtjbGFzc05hbWU6J3ZpZGVvU3RhZ2VDb250YWluZXInfSk7by5hcHBlbmRDb250 ZW50KHRoaXMudmlkZW9TdGFnZSxiYik7YmIuaWQ9eWE7aWYod2luZG93W2FiXSYm IXJhKGFiKSl3aW5kb3dbYWJdLndyaXRlKHlhKTt0aGlzLmFkanVzdFN0YWdlU2l6 ZUZvclZpZGVvLmJpbmQodGhpcyxhYikuZGVmZXIoKTt9ZWxzZXt3aW5kb3dbYWJd JiZ3aW5kb3dbYWJdLmFkZFZhcmlhYmxlKCd2aWRlb19hdXRvcGxheScsMCk7dGhp cy52aWRlb0xvYWRUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMudmlkZW9Mb2FkVGlt ZXIpO28uZW1wdHkodGhpcy52aWRlb1N0YWdlKTttLnJlbW92ZUNsYXNzKHRoaXMu c3RhZ2VXcmFwcGVyLCdzaG93VmlkZW8nKTt9fSxjaGVja1ZpZGVvU3RhdHVzOmZ1 bmN0aW9uKHlhKXtpZih0aGlzLnZpZGVvTG9hZFRpbWVyKWNsZWFyVGltZW91dCh0 aGlzLnZpZGVvTG9hZFRpbWVyKTt2YXIgemE9dGhpcy5nZXRWaWRlb09uU3RhZ2Uo KTtpZighemEpe3JldHVybjt9ZWxzZXt2YXIgYWI9J3N3Zl8nK3phO2lmKHlhIT09 YWIpcmV0dXJuO3RoaXMuYWRqdXN0U3RhZ2VTaXplRm9yVmlkZW8oeWEpO319LGFk anVzdFN0YWdlU2l6ZUZvclZpZGVvOmZ1bmN0aW9uKHlhKXt2YXIgemE9cmEoeWEp O2lmKCF6YSl7dGhpcy52aWRlb0xvYWRUaW1lcj1zZXRUaW1lb3V0KHRoaXMuY2hl Y2tWaWRlb1N0YXR1cy5iaW5kKHRoaXMseWEpLDIwMCk7fWVsc2UgdGhpcy5hZGp1 c3RTdGFnZVNpemUobmV3IG1hKHphLndpZHRoLHphLmhlaWdodCkpO30saGFuZGxl U2VydmVyRXJyb3I6ZnVuY3Rpb24oeWEsemEpe28uc2V0Q29udGVudCh0aGlzLmVy cm9yQm94LHlhKTt0aGlzLnN0b3JlRnJvbURhdGEoemEpO30sc3dhcERhdGE6ZnVu Y3Rpb24oKXt2YXIgeWEsemE9dGhpcy5zdHJlYW0uZ2V0Q3VycmVudEh0bWwoKTtp Zih6YSl7dGhpcy5zZXRMb2FkaW5nU3RhdGUoeGEuU1RBVEVfSFRNTCxmYWxzZSk7 Zm9yKHZhciBhYiBpbiB6YSl7eWE9cmEoYWIpO3lhJiZvLnNldENvbnRlbnQoeWEs emFbYWJdKTt9aC5pbmZvcm0oJ1Bob3RvU25vd2xpZnQuREFUQV9DSEFOR0UnLHRo aXMuc3RyZWFtLmdldEN1cnJlbnRJbWFnZURhdGEoKS5pbmZvLGguQkVIQVZJT1Jf U1RBVEUpO2lmKHRoaXMuc3RyZWFtLmdldEN1cnJlbnRFeHRyYURhdGEoKSloLmlu Zm9ybSgnUGhvdG9Tbm93bGlmdC5FWFRSQV9EQVRBX0NIQU5HRScsdGhpcy5zdHJl YW0uZ2V0Q3VycmVudEV4dHJhRGF0YSgpLGguQkVIQVZJT1JfU1RBVEUpO310aGlz LnNob3dQYWdlcnMoeGEuUEFHRVJfRkFERSk7dGhpcy5hZGp1c3RTY3JvbGxlcigp O3RoaXMuc2Nyb2xsYWJsZUFyZWEuc2hvd1Njcm9sbGJhcihmYWxzZSk7dGhpcy5h ZGp1c3RGb3JOZXdEYXRhKCk7dGhpcy5sb2dJbXByZXNzaW9uRGV0YWlsc0ZvclBo b3RvKCk7fSx1cGRhdGVUb3RhbENvdW50OmZ1bmN0aW9uKHlhLHphLGFiKXt2YXIg YmI9dGhpcy5zdHJlYW0uZ2V0Q3VycmVudEh0bWwoKTtpZihiYil7dmFyIGNiPW5h KCdmYlBob3RvU25vd2xpZnRQb3NpdGlvbkFuZENvdW50Jyk7by5yZXBsYWNlKGNi LGFiKTtjYj1hYjttLnNob3coY2IpO3ZhciBkYj0nZmJQaG90b1Nub3dsaWZ0UG9z aXRpb25BbmRDb3VudCc7YmJbZGJdPXFhKGNiLmNoaWxkTm9kZXMpO310aGlzLnN0 cmVhbS5zZXRUb3RhbENvdW50KHlhKTt0aGlzLnN0cmVhbS5zZXRGaXJzdEN1cnNv ckluZGV4KHphKTt9LGFkZFBob3RvRmJpZHM6ZnVuY3Rpb24oeWEsemEsYWIsYmIp e2lmKGJiJiZ0aGlzLnNlc3Npb25JRCYmYmIhPXRoaXMuc2Vzc2lvbklEKXJldHVy

bjt2YXIgY2I9dGhpcy5zdHJlYW0uZ2V0Q3Vyc29yKCk9PT1udWxsO3RoaXMuc3Ry ZWFtLmF0dGFjaFRvRmJpZHNMaXN0KHlhLHphLGFiKTtpZihhYiYmY2IpdGhpcy5w YWdlKDAsdHJ1ZSk7aWYodGhpcy5waXZvdHMmJmFiKXRoaXMucGl2b3RzLnNldEN5 Y2xlQ291bnQodGhpcy5zdHJlYW0uY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5zdHJl YW0uZ2V0Q3Vyc29yKCksdGhpcy5zdHJlYW0uZmlyc3RDdXJzb3IpKTtpZighdGhp cy5wYWdlcnNTaG93biYmdGhpcy5zdHJlYW0uY2FuUGFnZSgpKXRoaXMuc2V0U3Rh Z2VQYWdlcnNTdGF0ZSgncmVhZHknKTt9LGF0dGFjaFRhZ2dlcjpmdW5jdGlvbih5 YSl7by5hcHBlbmRDb250ZW50KHRoaXMuc3RhZ2VBY3Rpb25zLHlhKTt9LHN0b3Jl RnJvbURhdGE6ZnVuY3Rpb24oeWEpe2lmKCF0aGlzLmlzT3BlbilyZXR1cm47aWYo eWEuc3NpZCYmdGhpcy5zZXNzaW9uSUQmJnRoaXMuc2Vzc2lvbklEIT15YS5zc2lk KXJldHVybjt2YXIgemE9dGhpcy5zdHJlYW0uc3RvcmVUb0NhY2hlKHlhKTtpZign ZXJyb3InIGluIHphKXt0aGlzLmNoZWNrU3RhdGUoeGEuU1RBVEVfRVJST1IpO3Jl dHVybjt9aWYoJ2luaXQnIGluIHphKXt0aGlzLmluaXREYXRhRmV0Y2hlZCh6YS5p bml0KTtpZih0aGlzLm9wZW5FeHBsaWNpdGx5KXt0aGlzLnJlcGxhY2VVcmw9dHJ1 ZTtzYSh0aGlzLnN0cmVhbS5nZXRDdXJyZW50SW1hZ2VEYXRhKCkuaW5mby5wZXJt YWxpbmspO31pZih0aGlzLnN0cmVhbS5jYW5QYWdlKCkpdGhpcy5zZXRTdGFnZVBh Z2Vyc1N0YXRlKCdyZWFkeScpO3RoaXMudWEmJnRoaXMudWEuYWRkX2V2ZW50KCd1 ZmknKTt9aWYoJ2ltYWdlJyBpbiB6YSl0aGlzLmNoZWNrU3RhdGUoeGEuU1RBVEVf SU1BR0VfREFUQSk7aWYoJ2RhdGEnIGluIHphKXRoaXMuY2hlY2tTdGF0ZSh4YS5T VEFURV9IVE1MKTt9LHNldFN0YWdlUGFnZXJzU3RhdGU6ZnVuY3Rpb24oeWEpe3N3 aXRjaCh5YSl7Y2FzZSAncmVhZHknOm0uYWRkQ2xhc3ModGhpcy5yb290LCdwYWdp bmdSZWFkeScpO3RoaXMucGFnZXJzU2hvd249dHJ1ZTt0aGlzLnVhJiZ0aGlzLnVh LmFkZF9ldmVudCgnYXJyb3dzJyk7cmV0dXJuO2Nhc2UgJ2FjdGl2ZSc6bS5hZGRD bGFzcyh0aGlzLnJvb3QsJ3BhZ2luZ0FjdGl2YXRlZCcpO3JldHVybjtjYXNlICdp bmFjdGl2ZSc6bS5yZW1vdmVDbGFzcyh0aGlzLnJvb3QsJ3BhZ2luZ0FjdGl2YXRl ZCcpO3JldHVybjtjYXNlICdkaXNhYmxlZCc6Y2FzZSAncmVzZXQnOm0ucmVtb3Zl Q2xhc3ModGhpcy5yb290LCdwYWdpbmdSZWFkeScpO3JldHVybjt9fSxkZWxldGVQ aG90bzpmdW5jdGlvbih5YSl7dGhpcy5jbG9zZVJlZnJlc2goKTt9LGNsb3NlUmVm cmVzaDpmdW5jdGlvbigpe3RoaXMucmVmcmVzaE9uQ2xvc2U9dHJ1ZTt0aGlzLmNs b3NlSGFuZGxlcigpO30sb25IaWxpdGVUYWc6ZnVuY3Rpb24oeWEsemEpe2lmKHph LnZlcnNpb24hPXouVklFV0VSX1NOT1dMSUZUKXJldHVybjt2YXIgYWI9emEudGFn O2lmKGFiKXRoaXMuc3dpdGNoSGlsaXRlZFRhZ3MoYWIsdHJ1ZSk7fSxvblVwZGF0 ZVRhZ0JveDpmdW5jdGlvbih5YSx6YSl7aWYoemEudmVyc2lvbj09ei5WSUVXRVJf U05PV0xJRlQpdGhpcy51cGRhdGVUYWdCb3goemEuaWQsemEuYXBwcm92ZSk7fX0p O2UuZXhwb3J0cz14YTt9KTsKX19kKCJsZWdhY3k6QXVkaWVuY2VTZWxlY3RvciIs WyJBdWRpZW5jZVNlbGVjdG9yIl0sZnVuY3Rpb24oYSxiLGMsZCl7YignQXVkaWVu Y2VTZWxlY3RvcicpO30sMyk7Cl9fZCgibGVnYWN5OkN1c3RvbVByaXZhY3lPcHRp b24iLFsiQ3VzdG9tUHJpdmFjeU9wdGlvbiJdLGZ1bmN0aW9uKGEsYixjLGQpe2Eu Q3VzdG9tUHJpdmFjeU9wdGlvbj1iKCdDdXN0b21Qcml2YWN5T3B0aW9uJyk7fSwz KTsKX19kKCJsZWdhY3k6U2VsZWN0b3IiLFsiU2VsZWN0b3IiXSxmdW5jdGlvbihh LGIsYyxkKXthLlNlbGVjdG9yPWIoJ1NlbGVjdG9yJyk7fSwzKTsKdmFyIEZyaWVu ZExpc3RQcml2YWN5T3B0aW9ucz0oZnVuY3Rpb24oKXt2YXIgYT1mYWxzZSxiPWZh bHNlLGM9bnVsbCxkPXt9LGU9ZnVuY3Rpb24oZil7aWYoaXNfZW1wdHkoZCkpUGFn ZVRyYW5zaXRpb25zLnJlZ2lzdGVySGFuZGxlcihmdW5jdGlvbigpe2Q9e307YT1m YWxzZTtiPWZhbHNlO30pO3ZhciBnPWYuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUn KTtkW2ddPWY7U2VsZWN0b3IubGlzdGVuKGYsJ3NlbGVjdCcsZnVuY3Rpb24oaCl7 dmFyIGk9aC5vcHRpb24saj1ET00uZmluZChpLCdhLml0ZW1BbmNob3InKSxrPWou Z2V0QXR0cmlidXRlKCdkYXRhLWZsaWQnKTtpZighaylyZXR1cm47dmFyIGw9ai5n ZXRBdHRyaWJ1dGUoJ2RhdGEtZHluYW1pYycpO2lmKGwmJmEpe0ZyaWVuZExpc3RQ cml2YWN5T3B0aW9ucy5zaG93U21hcnRMaXN0TnV4KGksayk7fWVsc2UgaWYoIWwm JmIpRnJpZW5kTGlzdFByaXZhY3lPcHRpb25zLnNob3dEdW1iTGlzdE51eChba10p O30pO307cmV0dXJuIHtsaXN0ZW46ZnVuY3Rpb24oZixnLGgpe3ZhciBpPWdlKGYp O2lmKCFpKXJldHVybjt2YXIgaj1QYXJlbnQuYnlDbGFzcyhpLCdhdWRpZW5jZVNl bGVjdG9yJyk7aWYoail7ZShqKTthPWc7Yj1oO319LHNob3dTbWFydExpc3ROdXg6 ZnVuY3Rpb24oZixnKXtuZXcgQXN5bmNSZXF1ZXN0KCcvYWpheC9mcmllbmRzL2xp c3RzL3NtYXJ0X2xpc3RfcHVibGlzaF9udXgucGhwJykuc2V0RGF0YSh7b3B0aW9u X2lkOmYuaWQsZmxpZDpnfSkuc2VuZCgpO2E9ZmFsc2U7fSxzZXRDb250ZXh0dWFs RGlhbG9nOmZ1bmN0aW9uKGYsZyl7dmFyIGg9UGFyZW50LmJ5Q2xhc3MoZywnYXVk aWVuY2VTZWxlY3RvcicpO2lmKGgpe2Yuc2V0Q29udGV4dChoKTtmLnNob3coKTt2 YXIgaT1BcmJpdGVyLnN1YnNjcmliZSgnY29tcG9zZXIvcHVibGlzaCcsZnVuY3Rp

b24oKXtmLmhpZGUoKTt9KTtmLnN1YnNjcmliZSgnaGlkZScsZnVuY3Rpb24oKXtp LnVuc3Vic2NyaWJlKCk7fSk7fX0sc2hvd0R1bWJMaXN0TnV4OmZ1bmN0aW9uKGYp e25ldyBBc3luY1JlcXVlc3QoJy9hamF4L2ZyaWVuZHMvbGlzdHMvZHVtYl9saXN0 X3B1Ymxpc2hfbnV4LnBocCcpLnNldERhdGEoe2ZsaWRzOmZ9KS5zZW5kKCk7Yj1m YWxzZTt9LHNob3dCb3RoTGlzdHNOdXg6ZnVuY3Rpb24oZixnKXtjPWY7RnJpZW5k TGlzdFByaXZhY3lPcHRpb25zLnNob3dEdW1iTGlzdE51eChnKTt9LHNldERpYWxv ZzpmdW5jdGlvbigpe2lmKCFjKXJldHVybjt2YXIgZj1EaWFsb2cuZ2V0Q3VycmVu dCgpO2lmKGYpZi5zZXRDbG9zZUhhbmRsZXIoZnVuY3Rpb24oKXtGcmllbmRMaXN0 UHJpdmFjeU9wdGlvbnMuc2hvd1NtYXJ0TGlzdE51eChjKTtjPW51bGw7fSk7fX07 fSkoKTsKX19kKCJsZWdhY3k6cHJpdmFjeS1jb21tb24iLFsiUHJpdmFjeUNvbnN0 IiwiUHJpdmFjeU1vZGVsIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignUHJp dmFjeUNvbnN0Jyk7YS5Qcml2YWN5TW9kZWw9YignUHJpdmFjeU1vZGVsJyk7YS5Q cml2YWN5QmFzZVZhbHVlPWUuQmFzZVZhbHVlO2EuUHJpdmFjeUZyaWVuZHNWYWx1 ZT1lLkZyaWVuZHNWYWx1ZTt9LDMpOwpmdW5jdGlvbiBPbmx5TWVQcml2YWN5T3B0 aW9uKCl7fWNvcHlQcm9wZXJ0aWVzKE9ubHlNZVByaXZhY3lPcHRpb24ucHJvdG90 eXBlLHtpbml0OmZ1bmN0aW9uKGEpe3RoaXMuX3NlbGVjdG9yPVBhcmVudC5ieUNs YXNzKGEsJ2NvbXBvc2VyQXVkaWVuY2VTZWxlY3RvcicpO3RoaXMuX3BsdXNMYWJl bD1ET00uZmluZChhLCcucGx1c0xhYmVsJyk7aWYoIXRoaXMuX3NlbGVjdG9yKXJl dHVybjt0aGlzLl9lbGVtPWE7dGhpcy5fdGFnZ2VkSURzPVtdO3RoaXMuX3RhZ3M9 W107dGhpcy5faGFzRXZlbnQ9ZmFsc2U7dGhpcy5fcmVjYWxjdWxhdGVUb29sdGlw QW5kTGFiZWwoKTt0aGlzLl91cGRhdGVTZWxlY3RvcigpO0FyYml0ZXIuc3Vic2Ny aWJlKCdDb21wb3Nlci9jaGFuZ2VkdGFncycsZnVuY3Rpb24oYixjKXt2YXIgZD10 aGlzLl9oYXNFdmVudDt0aGlzLl9oYXNFdmVudD1jLmV2ZW50VGFnO3RoaXMuX3Rh Z3M9Yy53aXRoVGFncy5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuZ2V0VGV4dCgp O30pO3RoaXMuX3RhZ2dlZElEcz1jLndpdGhUYWdzLm1hcChmdW5jdGlvbihmKXty ZXR1cm4gZi5nZXRWYWx1ZSgpO30pO2Zvcih2YXIgZSBpbiBjLm1lbnRpb24paWYo Yy5tZW50aW9uW2VdLnR5cGU9PSd1c2VyJyYmYy5tZW50aW9uW2VdLnVpZCE9RW52 LnVzZXIpe3RoaXMuX3RhZ3MucHVzaChjLm1lbnRpb25bZV0udGV4dCk7dGhpcy5f dGFnZ2VkSURzLnB1c2goYy5tZW50aW9uW2VdLnVpZCk7fWVsc2UgaWYoYy5tZW50 aW9uW2VdLnR5cGU9PSdldmVudCcpdGhpcy5faGFzRXZlbnQ9dHJ1ZTtpZih0aGlz Ll9oYXNFdmVudCYmZCE9dGhpcy5faGFzRXZlbnQmJlNlbGVjdG9yLmlzT3B0aW9u U2VsZWN0ZWQodGhpcy5fZWxlbSkpQXJiaXRlci5pbmZvcm0oJ0V2ZW50VGFnZ2Vk L2NoYW5nZWQnLHRoaXMuX2dldENoYW5nZWREYXRhKCkpO2lmKHRoaXMuX3JlY2Fs Y3VsYXRlVG9vbHRpcEFuZExhYmVsKCkmJlNlbGVjdG9yLmlzT3B0aW9uU2VsZWN0 ZWQodGhpcy5fZWxlbSkpe3RoaXMuX3VwZGF0ZVNlbGVjdG9yKCk7QXJiaXRlci5p bmZvcm0oJ1NlbGVjdGVkUHJpdmFjeU9wdGlvbi9jaGFuZ2VkJyx0aGlzLl9nZXRD aGFuZ2VkRGF0YSgpKTt9fS5iaW5kKHRoaXMpKTtTZWxlY3Rvci5saXN0ZW4odGhp cy5fc2VsZWN0b3IsJ2NoYW5nZScsdGhpcy5fdXBkYXRlU2VsZWN0b3IuYmluZCh0 aGlzKSk7fSxfZ2V0Q2hhbmdlZERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4ge2hhc0V2 ZW50OnRoaXMuX2hhc0V2ZW50LHRhZ3M6dGhpcy5fdGFnZ2VkSURzLHByaXZhY3k6 UHJpdmFjeUZyaWVuZHNWYWx1ZS5TRUxGfTt9LF9yZWNhbGN1bGF0ZVRvb2x0aXBB bmRMYWJlbDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rvb2x0aXAsYj10aGlzLl9s YWJlbDtpZih0aGlzLl90YWdnZWRJRHMubGVuZ3RoKXt0aGlzLl90b29sdGlwPSJP cmFuZyB5YW5nIGRpdGFuZGFpIjt0aGlzLl9sYWJlbD0iSGFueWEgU2F5YSIrJyAo KyknO31lbHNle3RoaXMuX3Rvb2x0aXA9IkhhbnlhIEFuZGEiO3RoaXMuX2xhYmVs PSJIYW55YSBTYXlhIjt9Q1NTLmNvbmRpdGlvblNob3codGhpcy5fcGx1c0xhYmVs LHRoaXMuX3RhZ2dlZElEcy5sZW5ndGgpO3JldHVybiAoYSE9dGhpcy5fdG9vbHRp cCl8fChiIT10aGlzLl9sYWJlbCk7fSxfdXBkYXRlU2VsZWN0b3I6ZnVuY3Rpb24o KXtpZihTZWxlY3Rvci5pc09wdGlvblNlbGVjdGVkKHRoaXMuX2VsZW0pKXtTZWxl Y3Rvci5zZXRCdXR0b25MYWJlbCh0aGlzLl9zZWxlY3Rvcix0aGlzLl9sYWJlbCk7 U2VsZWN0b3Iuc2V0QnV0dG9uVG9vbHRpcCh0aGlzLl9zZWxlY3Rvcix0aGlzLl90 b29sdGlwKTtyZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlO319KTsKX19kKCJUeXBl YWhlYWRCZXN0TmFtZSIsWyJUeXBlYWhlYWRVdGlsIiwiY29weVByb3BlcnRpZXMi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignVHlwZWFoZWFkVXRpbCcp LGg9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBpKGope3RoaXMuX3R5cGVh aGVhZD1qO31oKGkucHJvdG90eXBlLHtfc3Vic2NyaXB0aW9uOm51bGwsZW5hYmxl OmZ1bmN0aW9uKCl7dmFyIGo9dGhpcy5fdHlwZWFoZWFkLmdldFZpZXcoKTt0aGlz Ll9zdWJzY3JpcHRpb249ai5zdWJzY3JpYmUoJ2JlZm9yZVJlbmRlcicsZnVuY3Rp b24oayxsKXt2YXIgbT1sLnZhbHVlO2Zvcih2YXIgbj0wO248bC5yZXN1bHRzLmxl bmd0aDsrK24pe3ZhciBvPWwucmVzdWx0c1tuXTtpZihvLmFsdGVybmF0ZV9uYW1l

cz09bnVsbCljb250aW51ZTtpZihnLmlzUXVlcnlNYXRjaChtLG8uZGVmYXVsdF9u YW1lKSl7by50ZXh0PW8uZGVmYXVsdF9uYW1lO3JldHVybjt9Zm9yKHZhciBwPTA7 cDxvLmFsdGVybmF0ZV9uYW1lcy5sZW5ndGg7cCsrKWlmKGcuaXNRdWVyeU1hdGNo KG0sby5hbHRlcm5hdGVfbmFtZXNbcF0pKXtvLnRleHQ9by5hbHRlcm5hdGVfbmFt ZXNbcF07cmV0dXJuO31vLnRleHQ9by5kZWZhdWx0X25hbWU7fX0pO30sZGlzYWJs ZTpmdW5jdGlvbigpe3RoaXMuX3R5cGVhaGVhZC5nZXRWaWV3KCkudW5zdWJzY3Jp YmUodGhpcy5fc3Vic2NyaXB0aW9uKTt0aGlzLl9zdWJzY3JpcHRpb249bnVsbDt9 fSk7ZS5leHBvcnRzPWk7fSk7Cl9fZCgibGVnYWN5OkJlc3ROYW1lVHlwZWFoZWFk QmVoYXZpb3IiLFsiVHlwZWFoZWFkQmVzdE5hbWUiXSxmdW5jdGlvbihhLGIsYyxk KXt2YXIgZT1iKCdUeXBlYWhlYWRCZXN0TmFtZScpO2lmKCFhLlR5cGVhaGVhZEJl aGF2aW9ycylhLlR5cGVhaGVhZEJlaGF2aW9ycz17fTthLlR5cGVhaGVhZEJlaGF2 aW9ycy5idWlsZEJlc3RBdmFpbGFibGVOYW1lcz1mdW5jdGlvbihmKXtmLmVuYWJs ZUJlaGF2aW9yKGUpO307fSwzKTsKdmFyIFN0cmVhbVNoYXJlVmlkZW89e19lbmRw b2ludHM6W10sX3RodW1iczpbXSxyZWdpc3RlclRodW1iOmZ1bmN0aW9uKGEsYixj LGQpe1N0cmVhbVNoYXJlVmlkZW8uX2VuZHBvaW50c1thKycgJytjXT1kO1N0cmVh bVNoYXJlVmlkZW8uX3RodW1ic1thKycgJytjXT1iO30sY2xpY2tUaXRsZTpmdW5j dGlvbihhLGIsZXZlbnQpe3RoaXMuZXhwYW5kSW5saW5lT3JSZWRpcmVjdChhLGIs ZXZlbnQpO30sZXhwYW5kSW5saW5lT3JSZWRpcmVjdDpmdW5jdGlvbihhLGIsZXZl bnQpe2lmKFN0cmVhbVNoYXJlVmlkZW8uX3Nob3VsZEZvbGxvd0hyZWYoZXZlbnQp KXJldHVybiB0cnVlO3ZhciBjPVN0cmVhbVNoYXJlVmlkZW8uX3RodW1ic1thKycg JytiXSxkPWdlKGMpO2lmKGQpe0NTUy5hZGRDbGFzcyhkLCJ1aVZpZGVvVGh1bWJM b2FkaW5nIik7QXN5bmNSZXF1ZXN0LmJvb3RzdHJhcChTdHJlYW1TaGFyZVZpZGVv Ll9lbmRwb2ludHNbYSsnICcrYl0sZC5wYXJlbnRFbGVtZW50KTtyZXR1cm4gZmFs c2U7fXJldHVybiB0cnVlO30sY2xpY2tUaW1lbGluZTpmdW5jdGlvbihhLGIsZXZl bnQpe2lmKFN0cmVhbVNoYXJlVmlkZW8uX3Nob3VsZEZvbGxvd0hyZWYoZXZlbnQp KXJldHVybiB0cnVlO0NTUy5hZGRDbGFzcyhhLCItY3gtUFJJVkFURS1mYlRpbWVs aW5lRXh0ZXJuYWxTaGFyZVVuaXRfX2xvYWRpbmciKTtDU1MucmVtb3ZlQ2xhc3Mo YSwiLWN4LVBSSVZBVEUtZmJUaW1lbGluZUV4dGVybmFsU2hhcmVVbml0X192aWRl byIpO0FzeW5jUmVxdWVzdC5ib290c3RyYXAoYixhKTtyZXR1cm4gZmFsc2U7fSxf c2hvdWxkRm9sbG93SHJlZjpmdW5jdGlvbihldmVudCl7ZXZlbnQ9JEUoZXZlbnQp O2lmKCFldmVudClyZXR1cm4gZmFsc2U7aWYoZXZlbnQuZ2V0TW9kaWZpZXJzKCku YW55fHxldmVudC5pc01pZGRsZUNsaWNrKCkpcmV0dXJuIHRydWU7cmV0dXJuIGZh bHNlO319OwpmdW5jdGlvbiB0el9jYWxjdWxhdGUoYSl7dmFyIGI9bmV3IERhdGUo KSxjPWIuZ2V0VGltZXpvbmVPZmZzZXQoKS8zMCxkPWIuZ2V0VGltZSgpLzEwMDAs ZT1NYXRoLnJvdW5kKChhLWQpLzE4MDApLGY9TWF0aC5yb3VuZChjK2UpJTQ4O2lm KGY9PTApe3JldHVybiAwO31lbHNlIGlmKGY+MjQpe2YtPU1hdGguY2VpbChmLzQ4 KSo0ODt9ZWxzZSBpZihmPC0yOClmKz1NYXRoLmNlaWwoZi8tNDgpKjQ4O3JldHVy biBmKjMwO31mdW5jdGlvbiB0el9hdXRvc2V0KGEsYil7aWYoIWF8fHVuZGVmaW5l ZD09YilyZXR1cm47aWYod2luZG93LnR6X2F1dG9zZXQuY2FsY3VsYXRlZClyZXR1 cm47d2luZG93LnR6X2F1dG9zZXQuY2FsY3VsYXRlZD10cnVlO3ZhciBjPS10el9j YWxjdWxhdGUoYSk7aWYoYyE9Yil7dmFyIGQ9Jy9hamF4L2F1dG9zZXRfdGltZXpv bmVfYWpheC5waHAnO25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoZCkuc2V0RGF0 YSh7Z210X29mZjpjfSkuc2V0RXJyb3JIYW5kbGVyKGJhZ29maG9sZGluZykuc2V0 VHJhbnNwb3J0RXJyb3JIYW5kbGVyKGJhZ29maG9sZGluZykuc2V0T3B0aW9uKCdz dXBwcmVzc0Vycm9yQWxlcnRzJyx0cnVlKS5zZW5kKCk7fX0KX19kKCJUeXBpbmdE ZXRlY3RvciIsWyJldmVudC1leHRlbnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9u cyIsIkFyYml0ZXJNaXhpbiIsIkNsYXNzIiwiSW5wdXQiLCJSdW4iLCJjb3B5UHJv cGVydGllcyIsImNyZWF0ZU9iamVjdEZyb20iXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7YignZXZlbnQtZXh0ZW5zaW9ucycpO2IoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMn KTt2YXIgZz1iKCdBcmJpdGVyTWl4aW4nKSxoPWIoJ0NsYXNzJyksaT1iKCdJbnB1 dCcpLGo9YignUnVuJyksaz1iKCdjb3B5UHJvcGVydGllcycpLGw9YignY3JlYXRl T2JqZWN0RnJvbScpO2Z1bmN0aW9uIG0obil7dGhpcy5faW5wdXQ9bjt0aGlzLl9p Z25vcmVLZXlzPXt9O31tLklOQUNUSVZFPTA7bS5UWVBJTkc9MTttLlFVSVRUSU5H PTI7ayhtLnByb3RvdHlwZSxnLHtfdGltZW91dDo3MDAwLF9jdXJyZW50U3RhdGU6 bS5JTkFDVElWRSxpbml0OmZ1bmN0aW9uKCl7dGhpcy5pbml0PWJhZ29maG9sZGlu Zzt0aGlzLnJlc2V0KCk7RXZlbnQubGlzdGVuKHRoaXMuX2lucHV0LCdrZXl1cCcs dGhpcy5fdXBkYXRlLmJpbmQodGhpcykpO2oub25VbmxvYWQodGhpcy5fb251bmxv YWQuYmluZCh0aGlzKSk7fSxyZXNldDpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0 aGlzLl9jaGVja1RpbWVyKTt0aGlzLl9jaGVja1RpbWVyPW51bGw7dGhpcy5fbGFz dEtleXN0cm9rZUF0PW51bGw7dGhpcy5fY3VycmVudFN0YXRlPW0uSU5BQ1RJVkU7

fSxzZXRJZ25vcmVLZXlzOmZ1bmN0aW9uKG4pe3RoaXMuX2lnbm9yZUtleXM9bChu KTt9LF9vbnVubG9hZDpmdW5jdGlvbigpe2lmKHRoaXMuX2N1cnJlbnRTdGF0ZT09 bS5UWVBJTkcpdGhpcy5fdHJhbnNpdGlvbihtLlFVSVRUSU5HKTt9LF91cGRhdGU6 ZnVuY3Rpb24oZXZlbnQpe3ZhciBuPUV2ZW50LmdldEtleUNvZGUoZXZlbnQpLG89 dGhpcy5fY3VycmVudFN0YXRlO2lmKCF0aGlzLl9pZ25vcmVLZXlzW25dKWlmKGku Z2V0VmFsdWUodGhpcy5faW5wdXQpLnRyaW0oKS5sZW5ndGg9PT0wKXtpZihvPT1t LlRZUElORyl0aGlzLl90cmFuc2l0aW9uKG0uSU5BQ1RJVkUpO31lbHNlIGlmKG89 PW0uVFlQSU5HKXt0aGlzLl9yZWNvcmRLZXlzdHJva2UoKTt9ZWxzZSBpZihvPT1t LklOQUNUSVZFKXt0aGlzLl90cmFuc2l0aW9uKG0uVFlQSU5HKTt0aGlzLl9yZWNv cmRLZXlzdHJva2UoKTt9fSxfdHJhbnNpdGlvbjpmdW5jdGlvbihuKXt0aGlzLnJl c2V0KCk7dGhpcy5fY3VycmVudFN0YXRlPW47dGhpcy5pbmZvcm0oJ2NoYW5nZScs bik7fSxfcmVjb3JkS2V5c3Ryb2tlOmZ1bmN0aW9uKCl7dGhpcy5fbGFzdEtleXN0 cm9rZVRpbWU9RGF0ZS5ub3coKTtpZighdGhpcy5fY2hlY2tUaW1lcil0aGlzLl9j aGVja1RpbWVyPXRoaXMuX2NoZWNrVHlwaW5nLmJpbmQodGhpcykuZGVmZXIodGhp cy5fdGltZW91dCk7fSxfY2hlY2tUeXBpbmc6ZnVuY3Rpb24oKXt2YXIgbj10aGlz Ll9sYXN0S2V5c3Ryb2tlVGltZSt0aGlzLl90aW1lb3V0LG89RGF0ZS5ub3coKTtp ZihvPm4pe3RoaXMuX3RyYW5zaXRpb24obS5JTkFDVElWRSk7fWVsc2V7Y2xlYXJU aW1lb3V0KHRoaXMuX2NoZWNrVGltZXIpO3RoaXMuX2NoZWNrVGltZXI9dGhpcy5f Y2hlY2tUeXBpbmcuYmluZCh0aGlzKS5kZWZlcihuLW8rMTApO319fSk7ZS5leHBv cnRzPW07fSk7Cl9fZCgiTWVudGlvbnNJbnB1dE1hdGNoZXJzIixbXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7dmFyIGc9WydAJywnXFx1ZmYyMCcsJysnLCdcXHVmZjBi J10uam9pbignJyksaD0nLiwqPyR8I3t9KClcXF5cXC1cXFtcXF1cXFxcXC8hJSZc JyJ+PTw+Xzo7JyxpPSdcXGJbQS1aXVteIEEtWicraCsnXScsaj0nKFteJytnK2gr J118WycraCsnXVteICcraCsnXSknLGs9Jyg/Ol58XFxzKSg/OlsnK2crJ10oJytq Kyd7MCwyMH0pKScsbD0nKD86KD86JytpKycrKXwnK2srJyknLG09Jyg/OicraSsn ezQsfSknLG49e3RyaWdnZXI6bmV3IFJlZ0V4cCgnWycrZysnXSQnKSxtYWluTWF0 Y2hlcjpuZXcgUmVnRXhwKGsrJyQnKSxhdXRvTWF0Y2hlcjpuZXcgUmVnRXhwKGwr JyQnKSx1c2VyTWF0Y2hlcjpuZXcgUmVnRXhwKG0rJyQnKX07ZS5leHBvcnRzPW47 fSk7Cl9fZCgiTWVudGlvbnNJbnB1dCIsWyJldmVudC1leHRlbnNpb25zIiwiZnVu Y3Rpb24tZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJBcmJpdGVyTWl4aW4iLCJDbGFz cyIsIkNTUyIsIkRhdGFTdG9yZSIsIkRPTSIsIkhUTUwiLCJJbnB1dCIsIklucHV0 U2VsZWN0aW9uIiwiUGFyZW50IiwiaHRtbGl6ZSIsIlN0eWxlIiwiVHlwZWFoZWFk IiwiVHlwZWFoZWFkVXRpbCIsIlVzZXJBZ2VudCIsImNvcHlQcm9wZXJ0aWVzIiwi TWVudGlvbnNJbnB1dE1hdGNoZXJzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Io J2V2ZW50LWV4dGVuc2lvbnMnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFy IGc9YignQXJiaXRlcicpLGg9YignQXJiaXRlck1peGluJyksaT1iKCdDbGFzcycp LGo9YignQ1NTJyksaz1iKCdEYXRhU3RvcmUnKSxsPWIoJ0RPTScpLG09YignSFRN TCcpLG49YignSW5wdXQnKSxvPWIoJ0lucHV0U2VsZWN0aW9uJykscD1iKCdQYXJl bnQnKSxxPWIoJ2h0bWxpemUnKSxyPWIoJ1N0eWxlJykscz1iKCdUeXBlYWhlYWQn KSx0PWIoJ1R5cGVhaGVhZFV0aWwnKSx1PWIoJ1VzZXJBZ2VudCcpLHY9YignY29w eVByb3BlcnRpZXMnKSx3PWIoJ01lbnRpb25zSW5wdXRNYXRjaGVycycpO2Z1bmN0 aW9uIHgoeSx6LGFhLGJhLGNhLGRhKXtrLnNldCh5LCdNZW50aW9uc0lucHV0Jyx0 aGlzKTt0aGlzLl9yb290PXk7dGhpcy5fdHlwZWFoZWFkPXo7dGhpcy5faW5wdXQ9 YWE7dmFyIGVhPWZhbHNlO3RyeXtlYT1kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09 dGhpcy5faW5wdXQ7fWNhdGNoKGZhKXt9aWYoZWEpe3RoaXMuaW5pdC5iaW5kKHRo aXMsYmEsY2EsZGEpLmRlZmVyKCk7fWVsc2UgdmFyIGdhPUV2ZW50Lmxpc3Rlbih0 aGlzLl9pbnB1dCwnZm9jdXMnLGZ1bmN0aW9uKCl7dGhpcy5pbml0LmJpbmQodGhp cyxiYSxjYSxkYSkuZGVmZXIoKTtnYS5yZW1vdmUoKTt9LmJpbmQodGhpcykpO314 LmdldEluc3RhbmNlPWZ1bmN0aW9uKHkpe3ZhciB6PXAuYnlDbGFzcyh5LCd1aU1l bnRpb25zSW5wdXQnKTtyZXR1cm4gej9rLmdldCh6LCdNZW50aW9uc0lucHV0Jyk6 bnVsbDt9O3YoeC5wcm90b3R5cGUsaCx7aW5pdDpmdW5jdGlvbih5LHosYWEpe3Ro aXMuaW5pdD1GdW5jdGlvbi5wcm90b3R5cGU7dGhpcy5faW5pdGlhbGl6ZWQ9dHJ1 ZTt0aGlzLl9oaWdobGlnaHRlcj1sLmZpbmQodGhpcy5fcm9vdCwnLmhpZ2hsaWdo dGVyJyk7dGhpcy5faGlnaGxpZ2h0ZXJJbm5lcj10aGlzLl9oaWdobGlnaHRlci5m aXJzdENoaWxkO3RoaXMuX2hpZ2hsaWdodGVyQ29udGVudD1sLmZpbmQodGhpcy5f cm9vdCwnLmhpZ2hsaWdodGVyQ29udGVudCcpO3RoaXMuX2hpZGRlbklucHV0PWwu ZmluZCh0aGlzLl9yb290LCcubWVudGlvbnNIaWRkZW4nKTt0aGlzLl9wbGFjZWhv bGRlcj10aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJyl8fCcn O3RoaXMuX21heE1lbnRpb25zPXkubWF4fHw2O3RoaXMuX21ldHJpY3M9YWE7aWYo dS5maXJlZm94KCk8NCl7dGhpcy5faW5wdXQuYmx1cigpO3NldFRpbWVvdXQoZnVu

Y3Rpb24oKXt0aGlzLl9pbnB1dC5mb2N1cygpO30uYmluZCh0aGlzKSk7fWlmKCF0 aGlzLl9oaWRkZW5JbnB1dC5uYW1lKXt2YXIgYmE9dGhpcy5faW5wdXQubmFtZTt0 aGlzLl9pbnB1dC5uYW1lPWJhKydfdGV4dCc7dGhpcy5faGlkZGVuSW5wdXQubmFt ZT1iYTt9dGhpcy5faW5pdEV2ZW50cygpO3RoaXMuX2luaXRUeXBlYWhlYWQoKTt0 aGlzLnJlc2V0KHopO3RoaXMuaW5mb3JtKCdpbml0JyxudWxsLGcuQkVIQVZJT1Jf U1RBVEUpO30scmVzZXQ6ZnVuY3Rpb24oeSl7aWYoIXRoaXMuX2luaXRpYWxpemVk KXJldHVybjt0aGlzLl9tZW50aW9uZWQ9e307dGhpcy5fb3JkZXJlZFVJRHM9W107 dGhpcy5fbnVtTWVudGlvbmVkPTA7dGhpcy5fZmlsdGVyRGF0YT1udWxsO3RoaXMu X2hpZGRlbklucHV0JiYodGhpcy5faGlkZGVuSW5wdXQudmFsdWU9JycpO3RoaXMu X2hpZ2hsaWdodGVyQ29udGVudCYmbC5lbXB0eSh0aGlzLl9oaWdobGlnaHRlckNv bnRlbnQpO3RoaXMuX2hpZ2hsaWdodGVyQXV4Q29udGVudCYmbC5yZW1vdmUodGhp cy5faGlnaGxpZ2h0ZXJBdXhDb250ZW50KTt0aGlzLl9oaWdobGlnaHRlckF1eENv bnRlbnQ9bnVsbDtuLnNldFBsYWNlaG9sZGVyKHRoaXMuX2lucHV0LHRoaXMuX3Bs YWNlaG9sZGVyKTtyLnNldCh0aGlzLl90eXBlYWhlYWQuZ2V0RWxlbWVudCgpLCdo ZWlnaHQnLCdhdXRvJyk7aWYoeSl7bi5zZXRWYWx1ZSh0aGlzLl9pbnB1dCx5LmZs YXR0ZW5lZCk7Zm9yKHZhciB6IGluIHkubWVudGlvbl9kYXRhKXRoaXMuX2FkZFRv a2VuKHt1aWQ6eix0ZXh0OnkubWVudGlvbl9kYXRhW3pdLHR5cGU6J3Vua25vd24n fSk7fXRoaXMuX3VwZGF0ZVR5cGVhaGVhZCgpO3RoaXMuX3VwZGF0ZVdpZHRoKCk7 dGhpcy5fdXBkYXRlKCk7fSxnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBuLmdl dFZhbHVlKHRoaXMuX2lucHV0KTt9LGdldFJhd1ZhbHVlOmZ1bmN0aW9uKCl7dGhp cy5fdXBkYXRlKCk7cmV0dXJuIG4uZ2V0VmFsdWUodGhpcy5faGlkZGVuSW5wdXQp O30sY2hlY2tWYWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuX3R5cGVhaGVhZC5n ZXRDb3JlKCkuZ2V0VmFsdWUoKTtpZih3LnRyaWdnZXIuZXhlYyh5KXx8eT09PScn KXRoaXMuaW5mb3JtKCdzZXNzaW9uRW5kJyx7fSk7fSxnZXRUeXBlYWhlYWQ6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fdHlwZWFoZWFkO30sX2luaXRFdmVudHM6ZnVu Y3Rpb24oKXt2YXIgeT10aGlzLl91cGRhdGUuYmluZCh0aGlzKTtFdmVudC5saXN0 ZW4odGhpcy5faW5wdXQse2lucHV0Onksa2V5dXA6eSxjaGFuZ2U6eSxibHVyOnRo aXMuX2hhbmRsZUJsdXIuYmluZCh0aGlzKSxmb2N1czp0aGlzLl9oYW5kbGVGb2N1 cy5iaW5kKHRoaXMpfSk7aWYodGhpcy5fbWV0cmljcyl7dGhpcy5fbWV0cmljcy5f cmVzZXQoKTt0aGlzLl9tZXRyaWNzLmJpbmRTZXNzaW9uU3RhcnQodGhpcy5fdHlw ZWFoZWFkLCdyZW5kZXInLHRydWUpO3RoaXMuX21ldHJpY3MuYmluZFNlc3Npb25F bmQodGhpcy5fdHlwZWFoZWFkLmdldFZpZXcoKSwnc2VsZWN0Jyx0cnVlKTt0aGlz Ll9tZXRyaWNzLmJpbmRTZXNzaW9uRW5kKHRoaXMsJ3Nlc3Npb25FbmQnLGZhbHNl KTtFdmVudC5saXN0ZW4odGhpcy5faW5wdXQsJ2tleXVwJyxmdW5jdGlvbihldmVu dCl7dGhpcy5jaGVja1ZhbHVlLmJpbmQodGhpcykuZGVmZXIoKTt9LmJpbmQodGhp cykpO319LF9pbml0VHlwZWFoZWFkOmZ1bmN0aW9uKCl7dGhpcy5fdHlwZWFoZWFk LnN1YnNjcmliZSgnc2VsZWN0JyxmdW5jdGlvbihjYSxkYSl7dmFyIGVhPWRhLnNl bGVjdGVkO3RoaXMuX2FkZFRva2VuKHt1aWQ6ZWEudWlkLHRleHQ6ZWEudGV4dCx0 eXBlOmVhLnR5cGV9KTt0aGlzLnVwZGF0ZVZhbHVlKCk7fS5iaW5kKHRoaXMpKTt2 YXIgeT10aGlzLl9pbnB1dCx6PW51bGwsYWE9ZnVuY3Rpb24oKXtpZih6PT09bnVs bCl7ej1uLmdldFN1Ym1pdE9uRW50ZXIoeSk7bi5zZXRTdWJtaXRPbkVudGVyKHks ZmFsc2UpO319LGJhPWZ1bmN0aW9uKCl7aWYoeiE9PW51bGwpe24uc2V0U3VibWl0 T25FbnRlcih5LHopO3o9bnVsbDt9fTt0aGlzLl90eXBlYWhlYWQuc3Vic2NyaWJl KCdyZW5kZXInLGFhKTt0aGlzLl90eXBlYWhlYWQuc3Vic2NyaWJlKCdyZXNldCcs YmEpO3RoaXMuX3R5cGVhaGVhZC5zdWJzY3JpYmUoJ2hpZ2hsaWdodCcsZnVuY3Rp b24oY2EsZGEpe2RhLmluZGV4Pj0wP2FhKCk6YmEoKTt9KTt0aGlzLl90eXBlYWhl YWQuc3Vic2NyaWJlKCdxdWVyeScsZnVuY3Rpb24oKXt0aGlzLl9maWx0ZXJEYXRh PW51bGw7fS5iaW5kKHRoaXMpKTt0aGlzLl90eXBlYWhlYWQuZ2V0Q29yZSgpLnN1 ZmZpeD0nJzt0aGlzLl9oYW5kbGVGb2N1cygpO30sX2hhbmRsZUJsdXI6ZnVuY3Rp b24oKXtpZih0aGlzLl9maWx0ZXJUb2tlbil7dGhpcy5fZmlsdGVyVG9rZW4ucmVt b3ZlKCk7dGhpcy5fZmlsdGVyVG9rZW49bnVsbDt9fSxfaGFuZGxlRm9jdXM6ZnVu Y3Rpb24oKXtpZighdGhpcy5fZmlsdGVyVG9rZW4pdGhpcy5fZmlsdGVyVG9rZW49 dGhpcy5fdHlwZWFoZWFkLmdldERhdGEoKS5hZGRGaWx0ZXIodGhpcy5fZmlsdGVy UmVzdWx0cy5iaW5kKHRoaXMpKTt0aGlzLl91cGRhdGVXaWR0aCgpO30sX2ZpbHRl clJlc3VsdHM6ZnVuY3Rpb24oeSl7aWYodGhpcy5fZmlsdGVyRGF0YT09PW51bGwp e3ZhciB6PW8uZ2V0KHRoaXMuX2lucHV0KS5zdGFydHx8MDtmb3IodmFyIGFhPTA7 YWE8dGhpcy5fb2Zmc2V0cy5sZW5ndGg7YWErKyl7dmFyIGJhPXRoaXMuX29mZnNl dHNbYWFdO2lmKHo+YmFbMF0mJno8PWJhWzFdKXt0aGlzLl9maWx0ZXJEYXRhPXtj YXJldElzSW5zaWRlTWVudGlvbjp0cnVlfTtyZXR1cm4gZmFsc2U7fX12YXIgY2E9 dGhpcy5fdHlwZWFoZWFkLmdldENvcmUoKTt0aGlzLl9maWx0ZXJEYXRhPXt2YWx1

ZTpjYS5nZXRWYWx1ZSgpLHJhd1ZhbHVlOmNhLmdldFJhd1ZhbHVlKCl9O31pZih0 aGlzLl9maWx0ZXJEYXRhLmNhcmV0SXNJbnNpZGVNZW50aW9uKXJldHVybiBmYWxz ZTtpZih3Lm1haW5NYXRjaGVyLnRlc3QodGhpcy5fZmlsdGVyRGF0YS5yYXdWYWx1 ZSkpcmV0dXJuIHRydWU7aWYoeS50eXBlIT0ndXNlcicpcmV0dXJuIGZhbHNlO2lm KHcudXNlck1hdGNoZXIudGVzdCh0aGlzLl9maWx0ZXJEYXRhLnZhbHVlKSlyZXR1 cm4gdHJ1ZTtyZXR1cm4gdC5pc0V4YWN0TWF0Y2godGhpcy5fZmlsdGVyRGF0YS52 YWx1ZSx0aGlzLl90eXBlYWhlYWQuZ2V0RGF0YSgpLmdldFRleHRUb0luZGV4KHkp KTt9LF9hZGRUb2tlbjpmdW5jdGlvbih5KXt2YXIgej15LnVpZDtpZighdGhpcy5f bWVudGlvbmVkLmhhc093blByb3BlcnR5KHopKXt0aGlzLl9tZW50aW9uZWRbel09 eTt0aGlzLl9vcmRlcmVkVUlEcy5wdXNoKHopO3RoaXMuX251bU1lbnRpb25lZCsr O3RoaXMuX3VwZGF0ZVR5cGVhaGVhZCgpO319LF9yZW1vdmVUb2tlbjpmdW5jdGlv bih5KXtpZih0aGlzLl9tZW50aW9uZWQuaGFzT3duUHJvcGVydHkoeSkpe2RlbGV0 ZSB0aGlzLl9tZW50aW9uZWRbeV07dGhpcy5fb3JkZXJlZFVJRHMucmVtb3ZlKHkp O3RoaXMuX251bU1lbnRpb25lZC0tO3RoaXMuX3VwZGF0ZVR5cGVhaGVhZCgpO319 LF9yZWR1Y2VUb2tlbjpmdW5jdGlvbih5LHope3ZhciBhYT16LnNwbGl0KCcgJyks YmE9W107Zm9yKHZhciBjYT0wO2NhPGFhLmxlbmd0aDtjYSsrKWlmKHkuaW5kZXhP ZihhYVtjYV0pIT0tMSliYS5wdXNoKGFhW2NhXSk7YWE9YmE7Zm9yKGNhPTE7Y2E8 YWEubGVuZ3RoO2NhKyspZm9yKHZhciBkYT0xO2RhPGFhW2NhLTFdLmxlbmd0aCsx O2RhKyspaWYoeS5pbmRleE9mKGFhW2NhLTFdLnN1YnN0cigwLGRhKSthYVtjYV0p IT0tMSlhYS5zcGxpY2UoY2EtMSwxKTt3aGlsZSh5LmluZGV4T2YoYWEuam9pbign ICcpKT09LTEpYWEuc3BsaWNlKDAsMSk7cmV0dXJuIGFhLmpvaW4oJyAnKTt9LF91 cGRhdGU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmdldFZhbHVlKCk7aWYoeT09dGhp cy5fdmFsdWUpcmV0dXJuO3RoaXMuX3VwZGF0ZVRva2VucygpO3RoaXMudXBkYXRl VmFsdWUoKTt0aGlzLl91cGRhdGVEaXJlY3Rpb24oKTt9LF91cGRhdGVUb2tlbnM6 ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmdldFZhbHVlKCksej1mYWxzZTtmb3IodmFy IGFhPTA7YWE8dGhpcy5fb3JkZXJlZFVJRHMubGVuZ3RoOysrYWEpe3ZhciBiYT10 aGlzLl9vcmRlcmVkVUlEc1thYV0sY2E9dGhpcy5fbWVudGlvbmVkW2JhXSxkYT1j YS50ZXh0LGVhO2lmKGNhLnR5cGU9PSd1c2VyJyYmKGVhPXRoaXMuX3JlZHVjZVRv a2VuKHksZGEpKSE9PScnKXtpZihlYT09ZGEuc3Vic3RyaW5nKDAsZGEubGFzdElu ZGV4T2YoJyAnKSkmJnk9PXRoaXMuX3ZhbHVlLnN1YnN0cmluZygwLHRoaXMuX3Zh bHVlLmxlbmd0aC0xKSl7eT15LnN1YnN0cmluZygwLHkubGFzdEluZGV4T2YoJyAn KSk7ej10cnVlO31jYS50ZXh0PWVhO31lbHNlIGlmKCFkYXx8eS5pbmRleE9mKGRh KT09LTF8fHR5cGVvZiBkYSE9PSdzdHJpbmcnKXRoaXMuX3JlbW92ZVRva2VuKGJh KTt9dGhpcy5fdmFsdWU9eTtpZih6KW4uc2V0VmFsdWUodGhpcy5faW5wdXQseSk7 fSx1cGRhdGVWYWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZ2V0VmFsdWUoKSx6 PXRoaXMuX29yZGVyZWRVSURzLGFhPVtdLGJhLGNhLGRhLGVhO2ZvcihlYT0wO2Vh PHoubGVuZ3RoOysrZWEpe2NhPXRoaXMuX21lbnRpb25lZFt6W2VhXV0udGV4dDt5 PXkucmVwbGFjZShjYSxmdW5jdGlvbihmYSxnYSl7YWEucHVzaChbZ2EsZ2ErY2Eu bGVuZ3RoXSk7cmV0dXJuIGNhO30pO31mb3IoZWE9MDtlYTx6Lmxlbmd0aDsrK2Vh KXtkYT16W2VhXTtjYT10aGlzLl9tZW50aW9uZWRbZGFdLnRleHQ7eT15LnJlcGxh Y2UoY2EsJ0BbJytkYSsnOl0nKTt9YmE9cSh5KTtmb3IoZWE9MDtlYTx6Lmxlbmd0 aDsrK2VhKXtkYT16W2VhXTtjYT10aGlzLl9tZW50aW9uZWRbZGFdLnRleHQ7YmE9 YmEucmVwbGFjZSgnQFsnK2RhKyc6XScsJzxiPicrcShjYSkrJzwvYj4nKTtjYT1j YS5yZXBsYWNlKC9bXFxcXTpdL2csZnVuY3Rpb24oZmEpe3JldHVybiAnXFwnK2Zh O30pO3k9eS5yZXBsYWNlKCdAWycrZGErJzpdJywnQFsnK2RhKyc6JytjYSsnXScp O31pZih1LmllKCkpe2JhPWJhLnJlcGxhY2UoLyB7Mn0vZywnJm5ic3A7PHdiciAv PiZuYnNwOzx3YnIgLz4nKTtiYT1iYS5yZXBsYWNlKC8gKD89W15cL118XC9bXj5d KS9nLCcmbmJzcDs8d2JyIC8+Jyk7fXRoaXMuX29mZnNldHM9YWE7dGhpcy5faGlk ZGVuSW5wdXQudmFsdWU9eTtsLnNldENvbnRlbnQodGhpcy5faGlnaGxpZ2h0ZXJD b250ZW50LG0oYmEpKTt0aGlzLl91cGRhdGVIaWdobGlnaHRlcigpO3RoaXMuX3Vw ZGF0ZUhlaWdodCgpO30sX3VwZGF0ZURpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciB5 PXIuZ2V0KHRoaXMuX2lucHV0LCdkaXJlY3Rpb24nKTtpZih5PT10aGlzLl9kaXIp cmV0dXJuO3RoaXMuX2Rpcj15O3Iuc2V0KHRoaXMuX2hpZ2hsaWdodGVyLCdkaXJl Y3Rpb24nLHkpO2lmKHk9PSdydGwnKXtyLnNldCh0aGlzLl9oaWdobGlnaHRlciwn dGV4dC1hbGlnbicsJ3JpZ2h0Jyk7fWVsc2Ugci5zZXQodGhpcy5faGlnaGxpZ2h0 ZXIsJ3RleHQtYWxpZ24nLCdsZWZ0Jyk7fSxfdXBkYXRlV2lkdGg6ZnVuY3Rpb24o KXt2YXIgeT1yLmdldEZsb2F0LmN1cnJ5KHRoaXMuX2lucHV0KSx6PXRoaXMuX2lu cHV0Lm9mZnNldFdpZHRoLXkoJ3BhZGRpbmdMZWZ0JykteSgncGFkZGluZ1JpZ2h0 JykteSgnYm9yZGVyTGVmdFdpZHRoJykteSgnYm9yZGVyUmlnaHRXaWR0aCcpO2lm KHUuZmlyZWZveCgpKXotPTI7aWYodS5pZSgpPD03KXt6LT1yLmdldEZsb2F0KHRo

aXMuX2hpZ2hsaWdodGVySW5uZXIsJ3BhZGRpbmdMZWZ0Jyk7dGhpcy5faGlnaGxp Z2h0ZXIuc3R5bGUuem9vbT0xO310aGlzLl9oaWdobGlnaHRlcklubmVyLnN0eWxl LndpZHRoPU1hdGgubWF4KHosMCkrJ3B4Jzt9LF91cGRhdGVIZWlnaHQ6ZnVuY3Rp b24oKXtpZih0aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQpe3ZhciB5PXRoaXMu X2hpZ2hsaWdodGVyLm9mZnNldEhlaWdodCx6PXRoaXMuX3R5cGVhaGVhZC5nZXRF bGVtZW50KCk7aWYoeT56Lm9mZnNldEhlaWdodCl7ci5zZXQoeiwnaGVpZ2h0Jyx5 KydweCcpO2cuaW5mb3JtKCdyZWZsb3cnKTt9fX0sX3VwZGF0ZVR5cGVhaGVhZDpm dW5jdGlvbigpe3ZhciB5PXRoaXMuX3R5cGVhaGVhZC5nZXRDb3JlKCksej1udWxs O2lmKCF0aGlzLl9tYXhNZW50aW9uc3x8dGhpcy5fbnVtTWVudGlvbmVkPHRoaXMu X21heE1lbnRpb25zKXo9dy5hdXRvTWF0Y2hlcjt5Lm1hdGNoZXI9ejt5LnNldEV4 Y2x1c2lvbnModGhpcy5fb3JkZXJlZFVJRHMpO3RoaXMuaW5mb3JtKCd1cGRhdGUn LHttZW50aW9uZWQ6dGhpcy5fbWVudGlvbmVkfSk7fSxzZXRQbGFjZWhvbGRlcjpm dW5jdGlvbih5KXt0aGlzLl9wbGFjZWhvbGRlcj15O2lmKCF0aGlzLmhhc0F1eENv bnRlbnQoKSluLnNldFBsYWNlaG9sZGVyKHRoaXMuX2lucHV0LHkpO30sX3VwZGF0 ZUhpZ2hsaWdodGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5faGlnaGxpZ2h0ZXJDb250 ZW50KWouY29uZGl0aW9uU2hvdyh0aGlzLl9oaWdobGlnaHRlckNvbnRlbnQsdGhp cy5fbnVtTWVudGlvbmVkPjB8fHRoaXMuaGFzQXV4Q29udGVudCgpKTt9LHNldEF1 eENvbnRlbnQ6ZnVuY3Rpb24oeSl7aWYodGhpcy5faGlnaGxpZ2h0ZXJDb250ZW50 KXtpZighdGhpcy5faGlnaGxpZ2h0ZXJBdXhDb250ZW50KXt0aGlzLl9oaWdobGln aHRlckF1eENvbnRlbnQ9bC5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J2hpZ2hs aWdodGVyQXV4Q29udGVudCd9KTtsLmluc2VydEFmdGVyKHRoaXMuX2hpZ2hsaWdo dGVyQ29udGVudCx0aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQpO31sLnNldENv bnRlbnQodGhpcy5faGlnaGxpZ2h0ZXJBdXhDb250ZW50LHkpO2lmKHkpe24uc2V0 UGxhY2Vob2xkZXIodGhpcy5faW5wdXQsJycpO31lbHNlIG4uc2V0UGxhY2Vob2xk ZXIodGhpcy5faW5wdXQsdGhpcy5fcGxhY2Vob2xkZXIpO3RoaXMuX3VwZGF0ZUhp Z2hsaWdodGVyKCk7dGhpcy5fdXBkYXRlSGVpZ2h0KCk7fX0saGFzQXV4Q29udGVu dDpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZ2V0QXV4Q29udGVudFJvb3QoKTtyZXR1 cm4geSYmeS5pbm5lckhUTUwubGVuZ3RoPjA7fSxnZXRBdXhDb250ZW50Um9vdDpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQ7fSxh ZGRNZW50aW9uOmZ1bmN0aW9uKHkpe3ZhciB6PXRoaXMuZ2V0VmFsdWUoKTtuLnNl dFZhbHVlKHRoaXMuX2lucHV0LHorIiAiK3kudGV4dCk7dGhpcy5fYWRkVG9rZW4o eSk7dGhpcy5fdXBkYXRlKCk7fSxnZXRNZW50aW9uczpmdW5jdGlvbigpe3JldHVy biB0aGlzLl9tZW50aW9uZWQ7fX0pO2UuZXhwb3J0cz14O30pOwpfX2QoIk9wdGlt aXN0aWNVRkkiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJBc3luY1Jl cXVlc3QiLCJBc3luY1Jlc3BvbnNlIiwiQ29tbWVudFByZWx1ZGUiLCJDU1MiLCJE T00iLCJGb3JtIiwiSFRNTCIsIklucHV0IiwiTWVudGlvbnNJbnB1dCIsIlBhcmVu dCIsImh0bWxpemUiLCJYSFBUZW1wbGF0ZSIsInJhbmRvbUludCJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJi aXRlcicpLGg9YignQXN5bmNSZXF1ZXN0JyksaT1iKCdBc3luY1Jlc3BvbnNlJyks aj1iKCdDb21tZW50UHJlbHVkZScpLGs9YignQ1NTJyksbD1iKCdET00nKSxtPWIo J0Zvcm0nKSxuPWIoJ0hUTUwnKSxvPWIoJ0lucHV0JykscD1iKCdNZW50aW9uc0lu cHV0JykscT1iKCdQYXJlbnQnKSxyPWIoJ2h0bWxpemUnKSxzPWIoJ1hIUFRlbXBs YXRlJyksdD1iKCdyYW5kb21JbnQnKSx1PXtfY29tbWVudFNlcU5vOjAsaW5pdDpm dW5jdGlvbih2KXt0aGlzLl9jb21tZW50VGVtcGxhdGU9djtpZighdGhpcy5fbG9h ZGVkKXtFdmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdjbGlj aycsdGhpcy5fY2xpY2tIYW5kbGVyLmJpbmQodGhpcyksRXZlbnQuUHJpb3JpdHku VVJHRU5UKTt0aGlzLl9sb2FkZWQ9dHJ1ZTt9fSxfY2xpY2tIYW5kbGVyOmZ1bmN0 aW9uKGV2ZW50KXt2YXIgdj1ldmVudC5nZXRUYXJnZXQoKSx3PXYubmFtZT09J2Nv bW1lbnQnJiZ2LnBhcmVudE5vZGUmJnEuYnlDbGFzcyh2LCdvcHRpbWlzdGljX3N1 Ym1pdCcpO2lmKCF3KXJldHVybiB0cnVlO3ZhciB4PXYuZm9ybSx5PWwuc2NyeSh4 LCd0ZXh0YXJlYScpWzBdO2lmKG8uaXNFbXB0eSh5KSlyZXR1cm4gdHJ1ZTtqLnVu Y29sbGFwc2UoeCk7dmFyIHosYWEsYmE9bC5zY3J5KHYsJ14uY29tbWVudExpc3Qg bGkudWlVZmlBZGRDb21tZW50JylbMF07aWYoIWJhKXt6PXRoaXMuX2NvbW1lbnRU ZW1wbGF0ZS5yZW5kZXIoKTthYT1zLmdldE5vZGUoeiwndGV4dCcpO2wuc2V0Q29u dGVudChhYSxuKHIoeS52YWx1ZS50cmltKCkpKSk7fXZhciBjYT1sLnNjcnkoeCwn dWwuY29tbWVudExpc3QnKVswXTtpZighY2EpcmV0dXJuIHRydWU7dmFyIGRhO2lm KGJhKXtkYT1iYS5wcmV2aW91c1NpYmxpbmc7ay5zaG93KGRhKTtrLmhpZGUoYmEp O31lbHNle2suc2hvdyhjYS5wYXJlbnROb2RlKTtjYS5hcHBlbmRDaGlsZCh6KTtk YT1jYS5sYXN0Q2hpbGQ7fXZhciBlYT10KDAsNDI5NDk2NzI5NSk7ZGEuaWQ9J29w dGltaXN0aWNfY29tbWVudF8nK2VhKydfJyt0aGlzLl9jb21tZW50U2VxTm8rKzt2

YXIgZmE9bS5zZXJpYWxpemUoeCk7ZmEuY29tbWVudF9yZXBsYWNlPWRhLmlkO2Zh LmNvbW1lbnQ9MTtmdW5jdGlvbiBnYSgpe25ldyBoKG0uZ2V0QXR0cmlidXRlKHgs J2FjdGlvbicpKS5zZXREYXRhKGZhKS5zZXRSZWxhdGl2ZVRvKHgpLnNldEVycm9y SGFuZGxlcihmdW5jdGlvbihpYSl7ay5hZGRDbGFzcyhkYSwndWlVZmlDb21tZW50 RmFpbGVkJyk7aS5kZWZhdWx0RXJyb3JIYW5kbGVyKGlhKTt9KS5zZXRTZXJ2ZXJE aWFsb2dDYW5jZWxIYW5kbGVyKGZ1bmN0aW9uKCl7bC5yZW1vdmUoZGEpO30pLnNl bmQoKTt9aWYoIWJhKUV2ZW50Lmxpc3RlbihzLmdldE5vZGUoeiwncmV0cnlfbGlu aycpLCdjbGljaycsZ2EpO2dhKCk7eS52YWx1ZT15LnN0eWxlLmhlaWdodD0nJzt5 LmZvY3VzKCk7dmFyIGhhPXAuZ2V0SW5zdGFuY2UoeSk7aGEmJmhhLnJlc2V0KCk7 aWYoYmEpe2wucmVtb3ZlKGJhKTt9ZWxzZSBnLmluZm9ybSgndWZpL2NvbW1lbnQn LHtmb3JtOnh9KTtyZXR1cm4gZmFsc2U7fX07ZS5leHBvcnRzPXU7fSk7Cl9fZCgi VUZJU2Nyb2xsSGlnaGxpZ2h0IixbIkNTUyIsIlNjcm9sbEhpZ2hsaWdodCJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDU1MnKSxoPWIoJ1Njcm9sbEhp Z2hsaWdodCcpLGk9e2FjdE9uOmZ1bmN0aW9uKGope2guYWN0T24oaiwnI2VkZWZm NCcpO2cucmVtb3ZlQ2xhc3MoaiwnaGlnaGxpZ2h0Q29tbWVudCcpO319O2UuZXhw b3J0cz1pO30pOwpfX2QoIlVGSVVwZGF0ZSIsWyJDb21tZW50UHJlbHVkZSIsIkNT UyIsIkRPTSIsIkRPTVF1ZXJ5IiwiSFRNTCIsIk1lbnRpb25zSW5wdXQiLCJQYXJl bnQiLCJTY3JvbGxhYmxlQXJlYSIsIlNjcm9sbEF3YXJlRE9NIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0NvbW1lbnRQcmVsdWRlJyksaD1iKCdDU1Mn KSxpPWIoJ0RPTScpLGo9YignRE9NUXVlcnknKSxrPWIoJ0hUTUwnKSxsPWIoJ01l bnRpb25zSW5wdXQnKSxtPWIoJ1BhcmVudCcpLG49YignU2Nyb2xsYWJsZUFyZWEn KSxvPWIoJ1Njcm9sbEF3YXJlRE9NJykscD17ZXhwYW5kRmVlZGJhY2s6ZnVuY3Rp b24ocSxyLHMpe2kuc2NyeShxLHIpLmZvckVhY2goZnVuY3Rpb24odCl7Zy5leHBh bmQodCxzKTt9KTt9LHVuY29sbGFwc2VGZWVkYmFjazpmdW5jdGlvbihxKXtnLnVu Y29sbGFwc2UobS5ieVRhZyhpLmZpbmQocSwnLmZiVWZpJyksJ2Zvcm0nKSk7fSxt dWx0aUNvbnRlbnRSZXBsYWNlR2xvYmFsOmZ1bmN0aW9uKHEscil7dGhpcy5tdWx0 aUNvbnRlbnRSZXBsYWNlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxxLHIpO30s bXVsdGlDb250ZW50UmVwbGFjZTpmdW5jdGlvbihxLHIscyl7cz1zIGluc3RhbmNl b2Ygaz9zLmdldFJvb3ROb2RlKCk6cztpLnNjcnkocSxyKS5mb3JFYWNoKGZ1bmN0 aW9uKHQpe28ucmVwbGFjZSh0LHMuY2xvbmVOb2RlKHRydWUpKTt9KTt9LHJlZm9j dXNDb21tZW50Qm94OmZ1bmN0aW9uKHEscil7dmFyIHM9aS5maW5kKHEsJ3RleHRh cmVhJyk7cy52YWx1ZT1zLnN0eWxlLmhlaWdodD0iIjtpZihyKXtzLmJsdXIoKTtz LmZvY3VzLmRlZmVyKCk7fWVsc2UgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9u Zm9jdXNpbih7dGFyZ2V0OnN9KTt9LHJlc2V0TWVudGlvbnNJbnB1dDpmdW5jdGlv bihxKXt2YXIgcj1sLmdldEluc3RhbmNlKGkuZmluZChxLCdkaXYudWlNZW50aW9u c0lucHV0JykpO3ImJnIucmVzZXQoKTt9LGluc2VydEF0Qm90dG9tOmZ1bmN0aW9u KHEscixzLHQpe3ZhciB1PWkuc2NyeShxLCcuY29tbWVudF8nK3MpLmxlbmd0aDtp ZihyKXUrPWkuc2NyeShxLCcjJytyKS5sZW5ndGg7aWYoIXUpe3ZhciB2PWkuZmlu ZChxLCcuY29tbWVudExpc3QnKSx3PW4uZ2V0SW5zdGFuY2UodikseD13JiZ3Lmlz U2Nyb2xsZWRUb0JvdHRvbSgpO28uYXBwZW5kQ29udGVudCh2LHQpO3gmJncuc2Ny b2xsVG9Cb3R0b20oZmFsc2UpO319LHVwZGF0ZVVuc3Vic2NyaWJlTGluazpmdW5j dGlvbihxLHIpe3ZhciBzPWkuc2NyeShxLCcudW5zdWJfbGluaycpWzBdO2lmKHMp e2kucmVwbGFjZShzLHIpO31lbHNlIGlmKHIpaS5pbnNlcnRBZnRlcihpLmZpbmQo cSwnLmNvbW1lbnRfbGluaycpLFsiIFx4QjcgIixyXSk7fSx1cGRhdGVTZWVuQ291 bnQ6ZnVuY3Rpb24ocSl7ai5zY3J5KHEsJy51aVVmaVNlZW5CYXInKS5mb3JFYWNo KGZ1bmN0aW9uKHQpe2guaGlkZSh0KTt9KTtqLnNjcnkocSwnLnVpVWZpVmlld1Nl ZW5Db3VudCcpLmZvckVhY2goZnVuY3Rpb24odCl7aC5oaWRlKHQpO30pO3ZhciBy PWouc2NyeShxLCcudWlVZmlMaWtlJylbMF07aWYociYmci5jaGlsZE5vZGVzLmxl bmd0aD09PTApcj1udWxsO3I9cnx8ai5zY3J5KHEsJy51aVVmaVNlZW5CYXInKVsw XTtpZighcilyZXR1cm47dmFyIHM9ai5zY3J5KHIsJy51aVVmaVZpZXdTZWVuQ291 bnQnKVswXTtpZighcylyZXR1cm47aC5zaG93KHMpO2guc2hvdyhyKTt9fTtlLmV4 cG9ydHM9cDt9KTsKZnVuY3Rpb24gdWZpX2FkZF9mdF9oaWRkZW5fbm9kZShhKXtp ZihhLmxpbmtfZGF0YSlyZXR1cm47dmFyIGI9Y29sbGVjdF9kYXRhX2F0dHJpYnMo YSxbJ2Z0J10pLmZ0O2lmKE9iamVjdC5rZXlzKGIpLmxlbmd0aCl7dmFyIGM9RE9N LmNyZWF0ZSgnaW5wdXQnLHt0eXBlOidoaWRkZW4nLG5hbWU6J2xpbmtfZGF0YScs dmFsdWU6SlNPTi5zdHJpbmdpZnkoYil9KTthLmFwcGVuZENoaWxkKGMpO319ZnVu Y3Rpb24gdWZpX2FkZF9hbGxfbGlua19kYXRhKCl7Qm9vdGxvYWRlci5sb2FkQ29t cG9uZW50cygnZG9tLWNvbGxlY3QnLGZ1bmN0aW9uKCl7RE9NLnNjcnkoZG9jdW1l bnQuYm9keSwnZm9ybS5jb21tZW50YWJsZV9pdGVtJykuZm9yRWFjaCh1ZmlfYWRk X2Z0X2hpZGRlbl9ub2RlKTt9KTt9ZnVuY3Rpb24gcXVlc3Rpb25fYWRkX2FsbF9s

aW5rX2RhdGEoKXtCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKCdkb20tY29sbGVj dCcsZnVuY3Rpb24oKXtET00uc2NyeShkb2N1bWVudC5ib2R5LCdmb3JtLmZiRWln ZW5wb2xsRm9ybScpLmZvckVhY2godWZpX2FkZF9mdF9oaWRkZW5fbm9kZSk7RE9N LnNjcnkoZG9jdW1lbnQuYm9keSwnZm9ybS5mYlF1ZXN0aW9uUG9sbEZvcm0nKS5m b3JFYWNoKHVmaV9hZGRfZnRfaGlkZGVuX25vZGUpO30pO30KX19kKCJsZWdhY3k6 VUlQYWdlbGV0IixbIlVJUGFnZWxldCJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuVUlQ YWdlbGV0PWIoJ1VJUGFnZWxldCcpO30sMyk7Cl9fZCgiU2Nyb2xsYWJsZSIsWyJl dmVudC1leHRlbnNpb25zIiwiUGFyZW50IiwiVXNlckFnZW50Il0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdQYXJl bnQnKSxoPWIoJ1VzZXJBZ2VudCcpLGk9ZnVuY3Rpb24oZXZlbnQpe3ZhciBrPWcu YnlDbGFzcyhldmVudC5nZXRUYXJnZXQoKSwnc2Nyb2xsYWJsZScpO2lmKCFrKXJl dHVybjtpZigodHlwZW9mIGV2ZW50LmF4aXMhPT0ndW5kZWZpbmVkJyYmZXZlbnQu YXhpcz09PWV2ZW50LkhPUklaT05UQUxfQVhJUyl8fChldmVudC53aGVlbERlbHRh WCYmIWV2ZW50LndoZWVsRGVsdGFZKSlyZXR1cm47dmFyIGw9ZXZlbnQud2hlZWxE ZWx0YT9ldmVudC53aGVlbERlbHRhOi1ldmVudC5kZXRhaWwsbT1rLnNjcm9sbEhl aWdodCxuPWsuY2xpZW50SGVpZ2h0O2lmKG0+bil7dmFyIG89ay5zY3JvbGxUb3A7 aWYoKGw+MCYmbz09PTApfHwobDwwJiZvPj1tLW4pKXtldmVudC5wcmV2ZW50KCk7 fWVsc2UgaWYoaC5pZSgpPDkpaWYoay5jdXJyZW50U3R5bGUpe3ZhciBwPWsuY3Vy cmVudFN0eWxlLmZvbnRTaXplO2lmKHAuaW5kZXhPZigncHgnKTwwKXt2YXIgcT1k b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtxLnN0eWxlLmZvbnRTaXplPXA7 cS5zdHlsZS5oZWlnaHQ9JzFlbSc7cD1xLnN0eWxlLnBpeGVsSGVpZ2h0O31lbHNl IHA9cGFyc2VJbnQocCwxMCk7ay5zY3JvbGxUb3A9by1NYXRoLnJvdW5kKGwvMTIw KnApO2V2ZW50LnByZXZlbnQoKTt9fX0saj1kb2N1bWVudC5kb2N1bWVudEVsZW1l bnQ7aWYoaC5maXJlZm94KCkpe2ouYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VT Y3JvbGwnLGksZmFsc2UpO31lbHNlIEV2ZW50Lmxpc3RlbihqLCdtb3VzZXdoZWVs JyxpKTt9KTsKX19kKCJUaW55Vmlld3BvcnQiLFsiZXZlbnQtZXh0ZW5zaW9ucyIs IkNTUyIsIkRPTSIsImRlYm91bmNlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Io J2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdDU1MnKSxoPWIoJ0RPTScpLGk9 YignZGVib3VuY2UnKSxqPWkoZnVuY3Rpb24oKXt2YXIgaz1kb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQsbD1oLmdldERvY3VtZW50U2Nyb2xsRWxlbWVudCgpLG09ay5j bGllbnRIZWlnaHQ8NDAwfHxsLmNsaWVudFdpZHRoPGwuc2Nyb2xsV2lkdGg7Zy5j b25kaXRpb25DbGFzcyhrLCd0aW55Vmlld3BvcnQnLG0pO2cuY29uZGl0aW9uQ2xh c3MoaywnY2FuSGF2ZUZpeGVkRWxlbWVudHMnLCFtKTt9KTtqKCk7RXZlbnQubGlz dGVuKHdpbmRvdywncmVzaXplJyxqKTt9KTsKX19kKCJsZWdhY3k6VG9nZ2xlciIs WyJUb2dnbGVyIl0sZnVuY3Rpb24oYSxiLGMsZCl7YS5Ub2dnbGVyPWIoJ1RvZ2ds ZXInKTt9LDMpOwpfX2QoImxlZ2FjeTpCdXR0b24iLFsiQnV0dG9uIl0sZnVuY3Rp b24oYSxiLGMsZCl7YS5CdXR0b249YignQnV0dG9uJyk7fSwzKTsKX19kKCJsZWdh Y3k6TWVudGlvbnNJbnB1dCIsWyJNZW50aW9uc0lucHV0Il0sZnVuY3Rpb24oYSxi LGMsZCl7YS5NZW50aW9uc0lucHV0PWIoJ01lbnRpb25zSW5wdXQnKTt9LDMpOwpf X2QoIkZvcm1EaXNhYmxlT25TdWJtaXQiLFsiY29weVByb3BlcnRpZXMiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMnKTtmdW5j dGlvbiBoKGkpe3RoaXMuX2Zvcm09aTt9ZyhoLnByb3RvdHlwZSx7X3N1YnNjcmlw dGlvbjpudWxsLF9kaXNhYmxlZDpmYWxzZSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlz Ll9zdWJzY3JpcHRpb249dGhpcy5fZm9ybS5zdWJzY3JpYmUoWydzdWJtaXQnLCdy ZXNldCddLHRoaXMuX2hhbmRsZS5iaW5kKHRoaXMpKTt9LGRpc2FibGU6ZnVuY3Rp b24oKXt0aGlzLl9mb3JtLnVuc3Vic2NyaWJlKHRoaXMuX3N1YnNjcmlwdGlvbik7 dGhpcy5fc3Vic2NyaXB0aW9uPW51bGw7fSxfaGFuZGxlOmZ1bmN0aW9uKGksail7 aWYoaT09J3N1Ym1pdCcpe2lmKHRoaXMuX2Rpc2FibGVkKXJldHVybiBmYWxzZTt0 aGlzLl9kaXNhYmxlZD10cnVlO3JldHVybiB0cnVlO310aGlzLl9kaXNhYmxlZD1m YWxzZTt9fSk7ZS5leHBvcnRzPWg7fSk7Cl9fZCgiRm9ybVN1Ym1pdE9uQ2hhbmdl IixbImV2ZW50LWV4dGVuc2lvbnMiLCJjb3B5UHJvcGVydGllcyIsInN1Ym1pdEZv cm0iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycp O3ZhciBnPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaD1iKCdzdWJtaXRGb3JtJyk7ZnVu Y3Rpb24gaShqKXt0aGlzLl9mb3JtPWo7fWcoaS5wcm90b3R5cGUse19saXN0ZW5l cjpudWxsLGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuX2xpc3RlbmVyPUV2ZW50Lmxp c3Rlbih0aGlzLl9mb3JtLmdldFJvb3QoKSwnY2hhbmdlJyx0aGlzLl9zdWJtaXQu YmluZCh0aGlzKSk7fSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fbGlzdGVuZXIu cmVtb3ZlKCk7dGhpcy5fbGlzdGVuZXI9bnVsbDt9LF9zdWJtaXQ6ZnVuY3Rpb24o KXtoKHRoaXMuX2Zvcm0uZ2V0Um9vdCgpKTt9fSk7ZS5leHBvcnRzPWk7fSk7Cl9f ZCgiVUlGb3JtIixbImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyTWl4aW4iLCJC

ZWhhdmlvcnNNaXhpbiIsIkNsYXNzIiwiRE9NIiwiRm9ybSIsIkZvcm1EaXNhYmxl T25TdWJtaXQiLCJGb3JtU3VibWl0T25DaGFuZ2UiLCJSdW4iLCJhcmVPYmplY3Rz RXF1YWwiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXti KCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlck1peGluJyksaD1i KCdCZWhhdmlvcnNNaXhpbicpLGk9YignQ2xhc3MnKSxqPWIoJ0RPTScpLGs9Yign Rm9ybScpLGw9YignRm9ybURpc2FibGVPblN1Ym1pdCcpLG09YignRm9ybVN1Ym1p dE9uQ2hhbmdlJyksbj1iKCdSdW4nKSxvPWIoJ2FyZU9iamVjdHNFcXVhbCcpLHA9 YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBxKHIscyx0LHUpe3RoaXMuX3Jv b3Q9cjt0aGlzLmNvbnRyb2xsZXI9cjt0aGlzLl9tZXNzYWdlPXM7bi5vbkFmdGVy TG9hZChmdW5jdGlvbigpe3RoaXMuX29yaWdpbmFsU3RhdGU9ay5zZXJpYWxpemUo dGhpcy5fcm9vdCk7fS5iaW5kKHRoaXMpKTt0aGlzLl9mb3JjZURpcnR5PXQ7dGhp cy5fc3VibWl0dGVkPWZhbHNlO0V2ZW50Lmxpc3Rlbih0aGlzLl9yb290LCdzdWJt aXQnLHRoaXMuX2hhbmRsZVN1Ym1pdC5iaW5kKHRoaXMpKTtpZih1JiZ1Lmxlbmd0 aCl0aGlzLmVuYWJsZUJlaGF2aW9ycyh1KTt2YXIgdj10cnVlO24ub25CZWZvcmVV bmxvYWQodGhpcy5jaGVja1Vuc2F2ZWQuYmluZCh0aGlzKSx2KTt9cChxLnByb3Rv dHlwZSxnLGgse2dldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdDt9 LF9oYW5kbGVTdWJtaXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmluZm9ybSgnc3VibWl0 Jyk9PT1mYWxzZSlyZXR1cm4gZmFsc2U7dGhpcy5fc3VibWl0dGVkPXRydWU7cmV0 dXJuIHRydWU7fSxyZXNldDpmdW5jdGlvbigpe3RoaXMuaW5mb3JtKCdyZXNldCcp O3RoaXMuX3N1Ym1pdHRlZD1mYWxzZTt9LGlzRGlydHk6ZnVuY3Rpb24oKXtpZih0 aGlzLl9zdWJtaXR0ZWR8fCFqLmNvbnRhaW5zKGRvY3VtZW50LmJvZHksdGhpcy5f cm9vdCkpcmV0dXJuIGZhbHNlO2lmKHRoaXMuX2ZvcmNlRGlydHkpcmV0dXJuIHRy dWU7dmFyIHI9ay5zZXJpYWxpemUodGhpcy5fcm9vdCk7cmV0dXJuICFvKHIsdGhp cy5fb3JpZ2luYWxTdGF0ZSk7fSxjaGVja1Vuc2F2ZWQ6ZnVuY3Rpb24oKXtpZih0 aGlzLmlzRGlydHkoKSlyZXR1cm4gdGhpcy5fbWVzc2FnZTtyZXR1cm4gbnVsbDt9 fSk7ZS5leHBvcnRzPWEuVUlGb3JtfHxxO30pOwpfX2QoImxlZ2FjeTpTY3JvbGxh YmxlQXJlYSIsWyJTY3JvbGxhYmxlQXJlYSJdLGZ1bmN0aW9uKGEsYixjLGQpe2Eu U2Nyb2xsYWJsZUFyZWE9YignU2Nyb2xsYWJsZUFyZWEnKTt9LDMpOwpfX2QoIlRv b2x0aXBMaW5rIixbIlBhcmVudCIsIlRvb2x0aXAiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9YignUGFyZW50JyksaD1iKCdUb29sdGlwJyksaT17c2V0VG9v bHRpcFRleHQ6ZnVuY3Rpb24oaixrKXtqPWcuYnlUYWcoaiwnYScpO2omJmguc2V0 KGosayk7fX07ZS5leHBvcnRzPWk7fSk7Cl9fZCgiU3ViTWVudSIsWyJldmVudC1l eHRlbnNpb25zIiwiQXJiaXRlciIsImNvcHlQcm9wZXJ0aWVzIiwiQ1NTIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1i KCdBcmJpdGVyJyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YignQ1NTJyk7ZnVu Y3Rpb24gaigpe31oKGoucHJvdG90eXBlLHtfc3ViTWVudTpudWxsLF9tYWluTWVu dTpudWxsLF9mb3J3YXJkOm51bGwsX2JhY2t3YXJkOm51bGwsaW5pdDpmdW5jdGlv bihrLGwsbSxuKXt0aGlzLl9zdWJNZW51PWs7dGhpcy5fbWFpbk1lbnU9bDt0aGlz Ll9mb3J3YXJkPW07dGhpcy5fYmFja3dhcmQ9bjtnLnN1YnNjcmliZSgnU3ViTWVu dS9SZXNldCcsdGhpcy5fZ29Ub01haW5NZW51LmJpbmQodGhpcykpO0V2ZW50Lmxp c3RlbihtLCdjbGljaycsdGhpcy5fZ29Ub1N1Yk1lbnUuYmluZCh0aGlzKSk7RXZl bnQubGlzdGVuKG4sJ2NsaWNrJyx0aGlzLl9nb1RvTWFpbk1lbnUuYmluZCh0aGlz KSk7fSxpbml0QXN5bmNDaGlsZE1lbnU6ZnVuY3Rpb24oayl7RXZlbnQubGlzdGVu KHRoaXMuX2ZvcndhcmQsJ2NsaWNrJyxmdW5jdGlvbigpe3RoaXMuX2dvVG9TdWJN ZW51KCk7ay5sb2FkKCk7fS5iaW5kKHRoaXMpKTt9LF9nb1RvTWFpbk1lbnU6ZnVu Y3Rpb24oKXtpLmhpZGUodGhpcy5fc3ViTWVudSk7aS5zaG93KHRoaXMuX21haW5N ZW51KTt9LF9nb1RvU3ViTWVudTpmdW5jdGlvbigpe2kuaGlkZSh0aGlzLl9tYWlu TWVudSk7aS5zaG93KHRoaXMuX3N1Yk1lbnUpO319KTtlLmV4cG9ydHM9ajt9KTsK X19kKCJsZWdhY3k6dWktc3VibWVudSIsWyJTdWJNZW51Il0sZnVuY3Rpb24oYSxi LGMsZCl7YS5TdWJNZW51PWIoJ1N1Yk1lbnUnKTt9LDMpOwpfX2QoIkFzeW5jTWVu dSIsWyJBc3luY1JlcXVlc3QiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdBc3luY1JlcXVlc3QnKSxoPWIoJ2NvcHlQcm9w ZXJ0aWVzJyk7ZnVuY3Rpb24gaSgpe31oKGkucHJvdG90eXBlLHtfdXJpOm51bGws X2VsZW06bnVsbCxpbml0OmZ1bmN0aW9uKGosayl7dGhpcy5fdXJpPWo7dGhpcy5f ZWxlbT1rO30sbG9hZDpmdW5jdGlvbigpe3RoaXMubG9hZD1iYWdvZmhvbGRpbmc7 Zy5ib290c3RyYXAodGhpcy5fdXJpLHRoaXMuX2VsZW0pO319KTtlLmV4cG9ydHM9 aTt9KTsKX19kKCJsZWdhY3k6dWktYXN5bmNtZW51IixbIkFzeW5jTWVudSJdLGZ1 bmN0aW9uKGEsYixjLGQpe2EuQXN5bmNNZW51PWIoJ0FzeW5jTWVudScpO30sMyk7 CmZ1bmN0aW9uIEZ1dHVyZVNpZGVOYXYoKXtGdXR1cmVTaWRlTmF2Lmluc3RhbmNl JiZGdXR1cmVTaWRlTmF2Lmluc3RhbmNlLnVuaW5zdGFsbCgpO0Z1dHVyZVNpZGVO

YXYuaW5zdGFuY2U9dGhpczt9RnV0dXJlU2lkZU5hdi5pbnN0YW5jZT1udWxsO0Z1 dHVyZVNpZGVOYXYuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gRnV0dXJl U2lkZU5hdi5pbnN0YW5jZXx8bmV3IEZ1dHVyZVNpZGVOYXYoKTt9O2NvcHlQcm9w ZXJ0aWVzKEZ1dHVyZVNpZGVOYXYucHJvdG90eXBlLHtpbml0OmZ1bmN0aW9uKGEs YixjKXt0aGlzLnJvb3Q9YTt0aGlzLml0ZW1zPXt9O3RoaXMuc2VjdGlvbnM9e307 dGhpcy5lZGl0b3I9bnVsbDt0aGlzLmVkaXRpbmc9ZmFsc2U7dGhpcy5zZWxlY3Rl ZD1udWxsO3RoaXMubG9hZGluZz1udWxsO3RoaXMua2V5UGFyYW09J3NrJzt0aGlz LmRlZmF1bHRLZXk9Yjt0aGlzLnVyaT1VUkkuZ2V0UmVxdWVzdFVSSSgpO3RoaXMu YWpheFBpcGU9Yzt0aGlzLmFqYXhQaXBlRW5kcG9pbnRzPXt9O3RoaXMuc2lkZWNv bD10cnVlO3RoaXMuX2luc3RhbGxlZD10cnVlO3RoaXMuX2hhbmRsZVBhZ2VUcmFu c2l0aW9ucz10cnVlO1BhZ2VUcmFuc2l0aW9ucy5yZWdpc3RlckhhbmRsZXIoZnVu Y3Rpb24oZCl7cmV0dXJuIHRoaXMuX2hhbmRsZVBhZ2VUcmFuc2l0aW9ucyYmdGhp cy5oYW5kbGVQYWdlVHJhbnNpdGlvbihkKTt9LmJpbmQodGhpcykpO3RoaXMuX2V2 ZW50SGFuZGxlcnM9W107dGhpcy5fYXJiaXRlclN1YnNjcmlwdGlvbnM9W0FyYml0 ZXIuc3Vic2NyaWJlKE5hdmlnYXRpb25NZXNzYWdlLk5BVklHQVRJT05fQ09NUExF VEVELHRoaXMubmF2aWdhdGlvbkNvbXBsZXRlLmJpbmQodGhpcykpLEFyYml0ZXIu c3Vic2NyaWJlKE5hdmlnYXRpb25NZXNzYWdlLk5BVklHQVRJT05fRkFJTEVELHRo aXMubmF2aWdhdGlvbkZhaWxlZC5iaW5kKHRoaXMpKSxBcmJpdGVyLnN1YnNjcmli ZShOYXZpZ2F0aW9uTWVzc2FnZS5OQVZJR0FUSU9OX0NPVU5UX1VQREFURSx0aGlz Lm5hdmlnYXRpb25Db3VudFVwZGF0ZS5iaW5kKHRoaXMpKSxBcmJpdGVyLnN1YnNj cmliZShOYXZpZ2F0aW9uTWVzc2FnZS5OQVZJR0FUSU9OX1NFTEVDVCx0aGlzLm5h dmlnYXRpb25TZWxlY3QuYmluZCh0aGlzKSksQXJiaXRlci5zdWJzY3JpYmUoQ2hh bm5lbENvbnN0YW50cy5nZXRBcmJpdGVyVHlwZSgnbmF2X3VwZGF0ZV9jb3VudHMn KSx0aGlzLm5hdmlnYXRpb25Db3VudFVwZGF0ZUZyb21QcmVzZW5jZS5iaW5kKHRo aXMpKV07dGhpcy5fZXhwbGljaXRIb3Zlcj1bXTt0aGlzLl9lbnN1cmVIb3Zlcign c2lkZU5hdkl0ZW0nKTt0aGlzLl9ldmVudEhhbmRsZXJzLnB1c2goRXZlbnQubGlz dGVuKHdpbmRvdywncmVzaXplJyx0aGlzLl9oYW5kbGVSZXNpemUuYmluZCh0aGlz KSkpO3RoaXMuX2NoZWNrTmFycm93KCk7dGhpcy5fc2VsZWN0b3JTdWJzY3JpcHRp b25zPVtdO3dpbmRvdy5TZWxlY3RvciYmdGhpcy5fc2VsZWN0b3JTdWJzY3JpcHRp b25zLnB1c2goU2VsZWN0b3Iuc3Vic2NyaWJlKFsnb3BlbicsJ2Nsb3NlJ10sZnVu Y3Rpb24oZCxlKXt2YXIgZj1QYXJlbnQuYnlDbGFzcyhlLnNlbGVjdG9yLCdzaWRl TmF2SXRlbScpO2YmJkNTUy5jb25kaXRpb25DbGFzcyhmLCdlZGl0TWVudU9wZW5l ZCcsZD09PSdvcGVuJyk7fSkpO29ubGVhdmVSZWdpc3Rlcih0aGlzLnVuaW5zdGFs bC5iaW5kKHRoaXMpKTtpZih0aGlzLl9wZW5kaW5nU2VjdGlvbnMpdGhpcy5fcGVu ZGluZ1NlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oZCl7dGhpcy5pbml0U2VjdGlv bi5hcHBseSh0aGlzLGQpO30uYmluZCh0aGlzKSk7fSxfaGFuZGxlUmVzaXplOihm dW5jdGlvbigpe3ZhciBhO3JldHVybiBmdW5jdGlvbigpe2EmJmNsZWFyVGltZW91 dChhKTthPXRoaXMuX2NoZWNrTmFycm93LmJpbmQodGhpcykuZGVmZXIoMjAwKTt9 O30pKCksX2NoZWNrTmFycm93OmZ1bmN0aW9uKCl7Q1NTLmNvbmRpdGlvbkNsYXNz KHRoaXMucm9vdCwndWlOYXJyb3dTaWRlTmF2JyxWZWN0b3IyLmdldEVsZW1lbnRQ b3NpdGlvbih0aGlzLnJvb3QpLng8MjApO30sX2Vuc3VyZUhvdmVyOmZ1bmN0aW9u KGEpe2lmKHVhLmllKCk8OClCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKCdleHBs aWNpdC1ob3ZlcicsZnVuY3Rpb24oKXt0aGlzLl9leHBsaWNpdEhvdmVyLnB1c2go bmV3IEV4cGxpY2l0SG92ZXIodGhpcy5yb290LGEpKTt9LmJpbmQodGhpcykpO30s dW5pbnN0YWxsOmZ1bmN0aW9uKCl7aWYodGhpcy5faW5zdGFsbGVkKXt0aGlzLl9p bnN0YWxsZWQ9ZmFsc2U7dGhpcy5faGFuZGxlUGFnZVRyYW5zaXRpb25zPWZhbHNl O3RoaXMuX2FyYml0ZXJTdWJzY3JpcHRpb25zLmZvckVhY2goQXJiaXRlci51bnN1 YnNjcmliZSk7dGhpcy5fc2VsZWN0b3JTdWJzY3JpcHRpb25zLmZvckVhY2goZnVu Y3Rpb24oYSl7U2VsZWN0b3IudW5zdWJzY3JpYmUoYSk7fSk7dGhpcy5fZXZlbnRI YW5kbGVycy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EucmVtb3ZlKCk7fSk7dGhpcy5f ZXhwbGljaXRIb3Zlci5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudW5pbnN0YWxsKCk7 fSk7fX0saW5pdFNlY3Rpb246ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5faW5zdGFs bGVkKXt0aGlzLl9wZW5kaW5nU2VjdGlvbnM9dGhpcy5fcGVuZGluZ1NlY3Rpb25z fHxbXTt0aGlzLl9wZW5kaW5nU2VjdGlvbnMucHVzaChhcmd1bWVudHMpO3JldHVy bjt9dGhpcy5faW5pdEl0ZW1zKGIpO3RoaXMuX2luaXRTZWN0aW9uKGEpO30sYWRk SXRlbTpmdW5jdGlvbihhLGIpe3RoaXMuX2luaXRJdGVtKGEsYik7fSxfaW5pdEl0 ZW1zOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGMsZCl7dmFyIGU9dGhpcy5f aW5pdEl0ZW0oYyxkKTtpZihjLmNoaWxkcmVuKWMuY2hpbGRyZW4uZm9yRWFjaChm dW5jdGlvbihmKXtiKGYsZSk7fSk7fS5iaW5kKHRoaXMpOyRBKGEpLmZvckVhY2go ZnVuY3Rpb24oYyl7YihjLG51bGwpO30pO30sX2luaXRJdGVtOmZ1bmN0aW9uKGEs

Yil7dmFyIGM9dGhpcy5pdGVtc1thLmlkXT10aGlzLl9jb25zdHJ1Y3RJdGVtKGEs Yik7aWYoYy5lcXVhbHModGhpcy5zZWxlY3RlZCl8fGEuc2VsZWN0ZWQpdGhpcy5z ZXRTZWxlY3RlZChjKTt2YXIgZD1jLmdldExpbmtOb2RlKCk7ZCYmdGhpcy5fZXZl bnRIYW5kbGVycy5wdXNoKEV2ZW50Lmxpc3RlbihkLCdjbGljaycsZnVuY3Rpb24o ZXZlbnQpe3JldHVybiAhdGhpcy5lZGl0aW5nO30uYmluZCh0aGlzKSkpO3JldHVy biBjO30sX2luaXRTZWN0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc2VjdGlv bnNbYS5pZF09dGhpcy5fY29uc3RydWN0U2VjdGlvbihhKTt0aGlzLl9ldmVudEhh bmRsZXJzLnB1c2goRXZlbnQubGlzdGVuKGIubm9kZSwnY2xpY2snLHRoaXMuaGFu ZGxlU2VjdGlvbkNsaWNrLmJpbmQodGhpcyxiKSkpO0RPTS5zY3J5KGIubm9kZSwn ZGl2LmJvb2ttYXJrc01lbnVCdXR0b24nKS5mb3JFYWNoKENTUy5zaG93KTtyZXR1 cm4gYjt9LF9jb25zdHJ1Y3RJdGVtOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBG dXR1cmVTaWRlTmF2SXRlbShhLGIpO30sX2NvbnN0cnVjdFNlY3Rpb246ZnVuY3Rp b24oYSl7cmV0dXJuIG5ldyBGdXR1cmVTaWRlTmF2U2VjdGlvbihhKTt9LGhhbmRs ZVNlY3Rpb25DbGljazpmdW5jdGlvbihhLGV2ZW50KXt2YXIgYj10aGlzLl9nZXRF dmVudFRhcmdldChldmVudCwnYScpLGM9dGhpcy5fZ2V0SXRlbUZvck5vZGUoYik7 aWYoIWIpe3JldHVybjt9ZWxzZSBpZihDU1MuaGFzQ2xhc3MoYi5wYXJlbnROb2Rl LCd1aU1lbnVJdGVtJykpe3RoaXMuX2hhbmRsZU1lbnVDbGljayhhLGMsYi5wYXJl bnROb2RlLGV2ZW50KTt9ZWxzZSB0aGlzLl9oYW5kbGVMaW5rQ2xpY2soYSxiLGV2 ZW50KTt9LF9nZXRFdmVudFRhcmdldDpmdW5jdGlvbihldmVudCxhKXt2YXIgYj1l dmVudC5nZXRUYXJnZXQoKTtpZihiLnRhZ05hbWUhPT1hLnRvVXBwZXJDYXNlKCkp e3JldHVybiBQYXJlbnQuYnlUYWcoYixhKTt9ZWxzZSByZXR1cm4gYjt9LF9oYW5k bGVNZW51Q2xpY2s6ZnVuY3Rpb24oYSxiLGMsZXZlbnQpe2lmKENTUy5oYXNDbGFz cyhjLCdyZWFycmFuZ2UnKSl0aGlzLmJlZ2luRWRpdChhKTt9LF9oYW5kbGVMaW5r Q2xpY2s6ZnVuY3Rpb24oYSxiLGV2ZW50KXtpZihDU1MuaGFzQ2xhc3MoYiwnbmF2 RWRpdERvbmUnKSl7dGhpcy5lZGl0aW5nP3RoaXMuZW5kRWRpdCgpOnRoaXMuYmVn aW5FZGl0KGEpO2V2ZW50LmtpbGwoKTt9fSxnZXRJdGVtOmZ1bmN0aW9uKGEpe2lm KHRoaXMuX2lzQ3VycmVudFBhdGgoYSkpe3JldHVybiB0aGlzLl9nZXRJdGVtRm9y S2V5KHRoaXMuX2dldEtleShhLmdldFF1ZXJ5RGF0YSgpKXx8dGhpcy5kZWZhdWx0 S2V5KTt9ZWxzZSByZXR1cm4gdGhpcy5fZ2V0SXRlbUZvclBhdGgoYS5nZXRQYXRo KCkpO30sZ2V0Tm9kZUZvcktleTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJ dGVtRm9yS2V5KGEpO2lmKGIpcmV0dXJuIGIubm9kZTt9LF9pc0N1cnJlbnRQYXRo OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldERvbWFpbigpPT09dGhpcy51cmkuZ2V0 RG9tYWluKCkmJmEuZ2V0UGF0aCgpPT09dGhpcy51cmkuZ2V0UGF0aCgpO30sX2dl dEtleTpmdW5jdGlvbihhKXtyZXR1cm4gYVt0aGlzLmtleVBhcmFtXTt9LF9nZXRJ dGVtRm9yTm9kZTpmdW5jdGlvbihhKXthPVBhcmVudC5ieUNsYXNzKGEsJ3NpZGVO YXZJdGVtJyk7cmV0dXJuIGEmJnRoaXMuaXRlbXNbYS5pZF07fSxfZ2V0SXRlbUZv cktleTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fZmluZEl0ZW0oZnVuY3Rpb24o Yil7cmV0dXJuIGIubWF0Y2hLZXkoYSk7fSk7fSxfZ2V0SXRlbUZvclBhdGg6ZnVu Y3Rpb24oYSl7cmV0dXJuIHRoaXMuX2ZpbmRJdGVtKGZ1bmN0aW9uKGIpe3JldHVy biBiLm1hdGNoUGF0aChhKTt9KTt9LF9maW5kSXRlbTpmdW5jdGlvbihhKXtmb3Io dmFyIGIgaW4gdGhpcy5pdGVtcylpZihhKHRoaXMuaXRlbXNbYl0pKXJldHVybiB0 aGlzLml0ZW1zW2JdO30scmVtb3ZlSXRlbTpmdW5jdGlvbihhKXtpZihhJiZ0aGlz Lml0ZW1zW2EuaWRdKXtET00ucmVtb3ZlKGEubm9kZSk7ZGVsZXRlIHRoaXMuaXRl bXNbYS5pZF07fX0scmVtb3ZlSXRlbUJ5S2V5OmZ1bmN0aW9uKGEpe3RoaXMucmVt b3ZlSXRlbSh0aGlzLl9nZXRJdGVtRm9yS2V5KGEpKTt9LG1vdmVJdGVtOmZ1bmN0 aW9uKGEsYixjKXt2YXIgZD1ET00uZmluZChhLm5vZGUsJ3VsLnVpU2lkZU5hdicp OyhjP0RPTS5wcmVwZW5kQ29udGVudDpET00uYXBwZW5kQ29udGVudCkoZCxiLm5v ZGUpO30sc2V0TG9hZGluZzpmdW5jdGlvbihhKXt0aGlzLmxvYWRpbmcmJnRoaXMu bG9hZGluZy5oaWRlTG9hZGluZygpO3RoaXMubG9hZGluZz1hO3RoaXMubG9hZGlu ZyYmdGhpcy5sb2FkaW5nLnNob3dMb2FkaW5nKCk7fSxzZXRTZWxlY3RlZDpmdW5j dGlvbihhKXt0aGlzLnNldExvYWRpbmcobnVsbCk7aWYodGhpcy5zZWxlY3RlZCl7 dGhpcy5zZWxlY3RlZC5oaWRlU2VsZWN0ZWQoKTt0aGlzLnNlbGVjdGVkLmdldFRv cCgpLmhpZGVDaGlsZHJlbigpO310aGlzLnNlbGVjdGVkPWE7aWYodGhpcy5zZWxl Y3RlZCl7dGhpcy5zZWxlY3RlZC5zaG93U2VsZWN0ZWQoKTt0aGlzLnNlbGVjdGVk LmdldFRvcCgpLnNob3dDaGlsZHJlbigpO319LGhhbmRsZVBhZ2VUcmFuc2l0aW9u OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0SXRlbShhKSxjPWImJmIuZW5kcG9p bnQmJnRoaXMuX2RvUGFnZVRyYW5zaXRpb24oYixhKTtyZXR1cm4gYzt9LF9kb1Bh Z2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGEsYil7dGhpcy5zZXRMb2FkaW5nKGEpO3Ro aXMuX3NlbmRQYWdlVHJhbnNpdGlvbihhLmVuZHBvaW50LGNvcHlQcm9wZXJ0aWVz KHRoaXMuX2dldFRyYW5zaXRpb25EYXRhKGEsYiksYi5nZXRRdWVyeURhdGEoKSkp

O3JldHVybiB0cnVlO30sX3NlbmRQYWdlVHJhbnNpdGlvbjpmdW5jdGlvbihhLGIp e2IuZW5kcG9pbnQ9YTtBcmJpdGVyLmluZm9ybShOYXZpZ2F0aW9uTWVzc2FnZS5O QVZJR0FUSU9OX0JFR0lOLHt1c2VBamF4UGlwZTp0aGlzLl91c2VBamF4UGlwZShh KSxwYXJhbXM6Yn0pO30sX2dldFRyYW5zaXRpb25EYXRhOmZ1bmN0aW9uKGEsYil7 dmFyIGM9e307Yy5zaWRlY29sPXRoaXMuc2lkZWNvbDtjLnBhdGg9Yi5nZXRQYXRo KCk7Y1t0aGlzLmtleVBhcmFtXT1hLnRleHRLZXk7Yy5rZXk9YS50ZXh0S2V5O3Jl dHVybiBjO30sX3VzZUFqYXhQaXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFq YXhQaXBlfHx0aGlzLmFqYXhQaXBlRW5kcG9pbnRzW2FdO30sbmF2aWdhdGlvbkNv bXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5sb2FkaW5nJiZ0aGlzLnNldFNlbGVjdGVk KHRoaXMubG9hZGluZyk7fSxuYXZpZ2F0aW9uRmFpbGVkOmZ1bmN0aW9uKCl7dGhp cy5zZXRMb2FkaW5nKG51bGwpO30sbmF2aWdhdGlvblNlbGVjdDpmdW5jdGlvbihh LGIpe3ZhciBjPXRoaXMuX2dldEl0ZW1Gb3JLZXkodGhpcy5fZ2V0S2V5KGIpKTtp ZihiLmFzTG9hZGluZyl7dGhpcy5zZXRMb2FkaW5nKGMpO31lbHNlIHRoaXMuc2V0 U2VsZWN0ZWQoYyk7fSxuYXZpZ2F0aW9uQ291bnRVcGRhdGU6ZnVuY3Rpb24oYSxi KXt2YXIgYz10aGlzLl9nZXRJdGVtRm9yS2V5KGImJmIua2V5KTtpZihjKWlmKHR5 cGVvZiBiLmNvdW50IT09InVuZGVmaW5lZCIpe2Muc2V0Q291bnQoYi5jb3VudCxi LmhpZGUpO31lbHNlIGlmKHR5cGVvZiBiLmluY3JlbWVudCE9PSJ1bmRlZmluZWQi KWMuaW5jcmVtZW50Q291bnQoYi5pbmNyZW1lbnQsYi5oaWRlKTt9LG5hdmlnYXRp b25Db3VudFVwZGF0ZUZyb21QcmVzZW5jZTpmdW5jdGlvbihhLGIpe2I9Yi5vYmo7 aWYoYilpZighYi5jbGFzc19uYW1lfHxiLmNsYXNzX25hbWUmJkNTUy5oYXNDbGFz cyh0aGlzLnJvb3QsYi5jbGFzc19uYW1lKSlpZihiLml0ZW1zKWZvcih2YXIgYz0w O2M8Yi5pdGVtcy5sZW5ndGg7YysrKXRoaXMubmF2aWdhdGlvbkNvdW50VXBkYXRl KGEsYi5pdGVtc1tjXSk7fSxiZWdpbkVkaXQ6ZnVuY3Rpb24oYSl7aWYoIXRoaXMu ZWRpdGluZyl7dGhpcy5lZGl0aW5nPXRydWU7Q1NTLmFkZENsYXNzKHRoaXMucm9v dCwnZWRpdE1vZGUnKTt0aGlzLl91cGRhdGVUcmFja2luZ0RhdGEoKTtCb290bG9h ZGVyLmxvYWRDb21wb25lbnRzKCdzb3J0YWJsZS1zaWRlLW5hdi1qcycsdGhpcy5f aW5pdEVkaXRvci5iaW5kKHRoaXMsYSkpO319LGVuZEVkaXQ6ZnVuY3Rpb24oKXtp Zih0aGlzLmVkaXRpbmcpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLnJvb3QsJ2VkaXRN b2RlJyk7dGhpcy5lZGl0b3IuZW5kRWRpdCgpO3RoaXMuZWRpdG9yPW51bGw7dGhp cy5lZGl0aW5nPWZhbHNlO3RoaXMuX3VwZGF0ZVRyYWNraW5nRGF0YSgpO319LF91 cGRhdGVUcmFja2luZ0RhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5yb290Lmdl dEF0dHJpYnV0ZSgnZGF0YS1ndCcpfHwie30iO3RyeXtiPUpTT04ucGFyc2UoYik7 aWYodGhpcy5lZGl0aW5nKXtiLmVkaXRpbmc9dHJ1ZTt9ZWxzZSBkZWxldGUgYi5l ZGl0aW5nO3RoaXMucm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QnLEpTT04uc3Ry aW5naWZ5KGIpKTt9Y2F0Y2goYyl7fX0sX2luaXRFZGl0b3I6ZnVuY3Rpb24oYSl7 dGhpcy5lZGl0b3I9YS5nZXRFZGl0b3IoKTt0aGlzLmVkaXRvci5iZWdpbkVkaXQo KTt9fSk7ZnVuY3Rpb24gRnV0dXJlU2lkZU5hdlNlY3Rpb24oYSl7dGhpcy5pZD1h LmlkO3RoaXMubm9kZT10aGlzLm5vZGV8fCQoYS5pZCk7dGhpcy5lZGl0RW5kcG9p bnQ9YS5lZGl0RW5kcG9pbnQ7fWNvcHlQcm9wZXJ0aWVzKEZ1dHVyZVNpZGVOYXZT ZWN0aW9uLnByb3RvdHlwZSx7ZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZh LmlkPT09dGhpcy5pZDt9LGdldEVkaXRvcjpmdW5jdGlvbigpe3JldHVybiBuZXcg U29ydGFibGVTaWRlTmF2KERPTS5maW5kKHRoaXMubm9kZSwndWwudWlTaWRlTmF2 JyksdGhpcy5lZGl0RW5kcG9pbnQpO319KTtmdW5jdGlvbiBGdXR1cmVTaWRlTmF2 SXRlbShhLGIpe3RoaXMuaWQ9YS5pZDt0aGlzLnVwPWI7dGhpcy5lbmRwb2ludD1h LmVuZHBvaW50O3RoaXMudHlwZT1hLnR5cGU7dGhpcy5ub2RlPWEubm9kZXx8JChh LmlkKTt0aGlzLnBhdGhzPWEucGF0aD8kQShhLnBhdGgpOltdO3RoaXMua2V5cz1h LmtleT8kQShhLmtleSk6W107dmFyIGM9dGhpcy5fZmluZEtleXModGhpcy5rZXlz KTt0aGlzLm51bWVyaWNLZXk9Yy5udW1lcmljfHx0aGlzLmtleXNbMF07dGhpcy50 ZXh0S2V5PWMudGV4dHx8dGhpcy5rZXlzWzBdO3RoaXMuX3BhdGhQYXR0ZXJuPXRo aXMuX2J1aWxkUmVnZXgodGhpcy5wYXRocyk7dGhpcy5fa2V5UGF0dGVybj10aGlz Ll9idWlsZFJlZ2V4KHRoaXMua2V5cyk7dGhpcy5oaWRlTG9hZGluZygpO3RoaXMu aGlkZVNlbGVjdGVkKCk7fWNvcHlQcm9wZXJ0aWVzKEZ1dHVyZVNpZGVOYXZJdGVt LnByb3RvdHlwZSx7ZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLmlkPT09 dGhpcy5pZDt9LGdldExpbmtOb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIChET00uc2Ny eSh0aGlzLm5vZGUsJ2EuaXRlbScpWzBdfHxET00uc2NyeSh0aGlzLm5vZGUsJ2Eu c3ViaXRlbScpWzBdKTt9LG1hdGNoUGF0aDpmdW5jdGlvbihhKXtyZXR1cm4gdGhp cy5fbWF0Y2hJbnB1dCh0aGlzLl9wYXRoUGF0dGVybixhKTt9LG1hdGNoS2V5OmZ1 bmN0aW9uKGEpe3JldHVybiB0aGlzLl9tYXRjaElucHV0KHRoaXMuX2tleVBhdHRl cm4sYSk7fSxfbWF0Y2hJbnB1dDpmdW5jdGlvbihhLGIpe3ZhciBjPWEmJmEuZXhl YyhiKTtyZXR1cm4gYyYmYy5zbGljZSgxKTt9LGdldFRvcDpmdW5jdGlvbigpe3Jl

dHVybiB0aGlzLmlzVG9wKCk/dGhpczp0aGlzLnVwLmdldFRvcCgpO30saXNUb3A6 ZnVuY3Rpb24oYSl7cmV0dXJuICF0aGlzLnVwO30sc2V0Q291bnQ6ZnVuY3Rpb24o YSxiKXtyZXR1cm4gdGhpcy5fdXBkYXRlQ291bnQoYSx0cnVlKTt9LGluY3JlbWVu dENvdW50OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuX3VwZGF0ZUNvdW50KGEs ZmFsc2UpO30sX3VwZGF0ZUNvdW50OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1ET00u c2NyeSh0aGlzLm5vZGUsJ3NwYW4uY291bnQnKVswXSxlPWQmJkRPTS5zY3J5KGQs J3NwYW4uY291bnRWYWx1ZScpWzBdO2lmKGUpe3ZhciBmPWI/MDpwYXJzZUludChE T00uZ2V0VGV4dChlKSwxMCksZz1NYXRoLm1heCgwLGYrYSksaD10aGlzLmlzVG9w KCk/J2hpZGRlbic6J2hpZGRlblN1Yml0ZW0nO0RPTS5zZXRDb250ZW50KGUsZyk7 YyYmQ1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMubm9kZSxoLCFnKTtDU1MuY29uZGl0 aW9uQ2xhc3MoZCwnaGlkZGVuX2VsZW0nLCFnKTtpZih0aGlzLmlzVG9wKCkpe3Zh ciBpPURPTS5zY3J5KHRoaXMubm9kZSwnZGl2LmxpbmtXcmFwJylbMF07aWYoaSl7 Q1NTLmNvbmRpdGlvbkNsYXNzKGksJ25vQ291bnQnLCFnKTtDU1MuY29uZGl0aW9u Q2xhc3MoaSwnaGFzQ291bnQnLGcpO319fUFyYml0ZXIuaW5mb3JtKCdOYXZpZ2F0 aW9uTWVzc2FnZS5DT1VOVF9VUERBVEVfRE9ORScpO30sc2hvd0xvYWRpbmc6ZnVu Y3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5ub2RlLCdsb2FkaW5nJyk7fSxoaWRl TG9hZGluZzpmdW5jdGlvbigpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLm5vZGUsJ2xv YWRpbmcnKTt9LHNob3dTZWxlY3RlZDpmdW5jdGlvbigpe0NTUy5hZGRDbGFzcyh0 aGlzLm5vZGUsJ3NlbGVjdGVkSXRlbScpO0NTUy5oYXNDbGFzcyh0aGlzLm5vZGUs J2hpZGVyJykmJkNTUy5hZGRDbGFzcyh0aGlzLl9nZXRFeHBhbmRlclBhcmVudCgp LCdleHBhbmRlZE1vZGUnKTt9LGhpZGVTZWxlY3RlZDpmdW5jdGlvbigpe0NTUy5y ZW1vdmVDbGFzcyh0aGlzLm5vZGUsJ3NlbGVjdGVkSXRlbScpO30sc2hvd0NoaWxk cmVuOmZ1bmN0aW9uKCl7Q1NTLmFkZENsYXNzKHRoaXMubm9kZSwnb3BlbicpO30s aGlkZUNoaWxkcmVuOmZ1bmN0aW9uKCl7Q1NTLnJlbW92ZUNsYXNzKHRoaXMubm9k ZSwnb3BlbicpO30sX2dldEV4cGFuZGVyUGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJu IFBhcmVudC5ieUNsYXNzKHRoaXMubm9kZSwnZXhwYW5kYWJsZVNpZGVOYXYnKTt9 LF9idWlsZFJlZ2V4OmZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoKXt2YXIgYj1hLm1h cChmdW5jdGlvbihjKXtpZih0eXBlb2YgYz09PSJzdHJpbmciKXtyZXR1cm4gYy5y ZXBsYWNlKC8oW15hLXowLTlfXSkvaWcsJ1xcJDEnKTt9ZWxzZSBpZihjJiZjLnJl Z2V4KXJldHVybiBjLnJlZ2V4O30pO3JldHVybiBuZXcgUmVnRXhwKCdeKD86Jyti LmpvaW4oJ3wnKSsnKSQnKTt9fSxfZmluZEtleXM6ZnVuY3Rpb24oYSl7dmFyIGI9 L14oYXBwfGdyb3VwfGZsKV8vLGM9e307Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtk Kyspe3ZhciBlPWIudGVzdChhW2RdKTtpZihlJiYhYy5udW1lcmljKXtjLm51bWVy aWM9YVtkXTt9ZWxzZSBpZighZSYmIWMudGV4dCljLnRleHQ9YVtkXTtpZihjLm51 bWVyaWMmJmMudGV4dClicmVhazt9cmV0dXJuIGM7fX0pOwpfX2QoImxlZ2FjeTpM YXllckRlc3Ryb3lPbkhpZGUiLFsiTGF5ZXJEZXN0cm95T25IaWRlIl0sZnVuY3Rp b24oYSxiLGMsZCl7YS5MYXllckRlc3Ryb3lPbkhpZGU9YignTGF5ZXJEZXN0cm95 T25IaWRlJyk7fSwzKTsKX19kKCJsZWdhY3k6Q29udGV4dHVhbERpYWxvZ1giLFsi Q29udGV4dHVhbERpYWxvZ1giXSxmdW5jdGlvbihhLGIsYyxkKXthLkNvbnRleHR1 YWxEaWFsb2dYPWIoJ0NvbnRleHR1YWxEaWFsb2dYJyk7fSwzKTsKX19kKCJUeXBl YWhlYWRBcmVhQ29yZSIsWyJDbGFzcyIsIklucHV0U2VsZWN0aW9uIiwiVHlwZWFo ZWFkQ29yZSIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ0NsYXNzJyksaD1iKCdJbnB1dFNlbGVjdGlvbicpLGk9YignVHlw ZWFoZWFkQ29yZScpLGo9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBrKGwp e3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlzLGwpO3RoaXMubWF0Y2hlcj1uZXcg UmVnRXhwKHRoaXMubWF0Y2hlcisnJCcpO3RoaXMucHJldmVudEZvY3VzQ2hhbmdl T25UYWI9dHJ1ZTt9Zy5leHRlbmQoayxpKTtqKGsucHJvdG90eXBlLHtwcmVmaXg6 Jycsc3VmZml4OicsICcsbWF0Y2hlcjoiXFxiW14sXSoiLGNsaWNrOmJhZ29maG9s ZGluZyxzZWxlY3Q6ZnVuY3Rpb24obCl7dGhpcy5wYXJlbnQuc2VsZWN0KGwpO3Zh ciBtPXRoaXMuZWxlbWVudC52YWx1ZSxuPXRoaXMucHJlZml4K2wudGV4dCt0aGlz LnN1ZmZpeDt0aGlzLmV4cGFuZEJvdW5kcyhtLG4pO3ZhciBvPW0uc3Vic3RyaW5n KDAsdGhpcy5zdGFydCkscD1tLnN1YnN0cmluZyh0aGlzLmVuZCk7dGhpcy5lbGVt ZW50LnZhbHVlPW8rbitwO2guc2V0KHRoaXMuZWxlbWVudCxvLmxlbmd0aCtuLmxl bmd0aCk7fSxleHBhbmRCb3VuZHM6ZnVuY3Rpb24obCxtKXtsPWwudG9Mb3dlckNh c2UoKS50cmltKCk7bT1tLnRvTG93ZXJDYXNlKCk7dmFyIG4sbyxwLHEscj0vXHMv O289bC5zdWJzdHJpbmcodGhpcy5zdGFydCx0aGlzLmVuZCk7cD1tLmluZGV4T2Yo byk7bj10aGlzLnN0YXJ0O3doaWxlKG4+PTAmJnA+PTApe3E9bC5jaGFyQXQobi0x KTtpZighcXx8ci50ZXN0KHEpKXRoaXMuc3RhcnQ9bjtvPXErbztwPW0uaW5kZXhP ZihvKTtuLS07fW89bC5zdWJzdHJpbmcodGhpcy5zdGFydCx0aGlzLmVuZCk7cD1t LmluZGV4T2Yobyk7bj10aGlzLmVuZDt3aGlsZShuPD1sLmxlbmd0aCYmcD49MCl7

cT1sLmNoYXJBdChuKTtpZighcXx8ci50ZXN0KHEpKXRoaXMuZW5kPW47bz1vK3E7 cD1tLmluZGV4T2Yobyk7bisrO319LGdldFJhd1ZhbHVlOmZ1bmN0aW9uKCl7dmFy IGw9aC5nZXQodGhpcy5lbGVtZW50KS5zdGFydHx8MDtyZXR1cm4gdGhpcy5wYXJl bnQuZ2V0VmFsdWUoKS5zdWJzdHJpbmcoMCxsKTt9LGdldFZhbHVlOmZ1bmN0aW9u KCl7dmFyIGw9dGhpcy5tYXRjaGVyJiZ0aGlzLm1hdGNoZXIuZXhlYyh0aGlzLmdl dFJhd1ZhbHVlKCkpO2lmKCFsKXJldHVybiAnJzt2YXIgbT1sWzBdLG49bC5pbmRl eCttLmxlbmd0aDttPW0ucmVwbGFjZSgvXlxzLywnJyk7dmFyIG89bS5sZW5ndGg7 bT1tLnJlcGxhY2UoL1xzJC8sJycpO3ZhciBwPW8tbS5sZW5ndGg7dGhpcy5zdGFy dD1uLW87dGhpcy5lbmQ9bitwO3JldHVybiBsWzFdfHxsWzBdO319KTtlLmV4cG9y dHM9azt9KTsKX19kKCJUeXBlYWhlYWRNZXRyaWNzIixbImV2ZW50LWV4dGVuc2lv bnMiLCJBc3luY1JlcXVlc3QiLCJjb3B5UHJvcGVydGllcyIsIlR5cGVhaGVhZCJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFy IGc9YignQXN5bmNSZXF1ZXN0JyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9Yign VHlwZWFoZWFkJyk7ZnVuY3Rpb24gaihrKXt0aGlzLmV4dHJhRGF0YT17fTtoKHRo aXMsayk7fWgoai5wcm90b3R5cGUse2VuZFBvaW50OicvYWpheC90eXBlYWhlYWQv cmVjb3JkX2Jhc2ljX21ldHJpY3MucGhwJyxpbml0OmZ1bmN0aW9uKGspe3RoaXMu aW5pdD1iYWdvZmhvbGRpbmc7dGhpcy5jb3JlPWsuZ2V0Q29yZSgpO3RoaXMudmll dz1rLmdldFZpZXcoKTt0aGlzLmRhdGE9ay5nZXREYXRhKCk7dGhpcy5zdGF0cz17 fTt0aGlzLnNlc3Npb25BY3RpdmU9ZmFsc2U7dGhpcy5fc2Vzc2lvblN0YXJ0RXZl bnRzPVtdO3RoaXMuX3Nlc3Npb25FbmRFdmVudHM9W107dGhpcy5fcmVzZXQoKTt0 aGlzLmluaXRFdmVudHMoKTt9LF9yZXNldDpmdW5jdGlvbigpe3RoaXMuc3RhdHM9 e307dGhpcy5hdmdTdGF0cz17fTt0aGlzLnNlc3Npb25BY3RpdmU9ZmFsc2U7dGhp cy5zaWQ9TWF0aC5mbG9vcihEYXRlLm5vdygpKk1hdGgucmFuZG9tKCkpO3RoaXMu ZGF0YS5zZXRRdWVyeURhdGEoe3NpZDp0aGlzLnNpZH0pO30scmVjb3JkU2VsZWN0 OmZ1bmN0aW9uKGspe3ZhciBsPWsuc2VsZWN0ZWQ7aWYobC51aWQ9PW51bGwpe3Ro aXMucmVjb3JkU3RhdCgnc2VsZWN0ZWRfaWQnLCdTRUxFQ1RfTlVMTCcpO31lbHNl IHRoaXMucmVjb3JkU3RhdCgnc2VsZWN0ZWRfaWQnLGwudWlkKTt0aGlzLnJlY29y ZFN0YXQoJ3NlbGVjdGVkX3R5cGUnLGwudHlwZSk7dGhpcy5yZWNvcmRTdGF0KCdz ZWxlY3RlZF9wb3NpdGlvbicsay5pbmRleCk7dGhpcy5yZWNvcmRTdGF0KCdzZWxl Y3RlZF93aXRoX21vdXNlJyxrLmNsaWNrZWQ/MTowKTt0aGlzLl9zZXNzaW9uRW5k KCk7fSxiaW5kU2Vzc2lvblN0YXJ0OmZ1bmN0aW9uKGssZXZlbnQsbCl7aWYobClm b3IodmFyIG09MDttPHRoaXMuX3Nlc3Npb25TdGFydEV2ZW50cy5sZW5ndGg7Kytt KXt2YXIgbj10aGlzLl9zZXNzaW9uU3RhcnRFdmVudHNbbV07bi5vYmoudW5zdWJz Y3JpYmUobi50b2tlbik7fXRoaXMuX3Nlc3Npb25TdGFydEV2ZW50cy5wdXNoKHtv Ymo6ayx0b2tlbjprLnN1YnNjcmliZShldmVudCxmdW5jdGlvbihvLHApe3RoaXMu X3Nlc3Npb25TdGFydCgpO30uYmluZCh0aGlzKSl9KTt9LGJpbmRTZXNzaW9uRW5k OmZ1bmN0aW9uKGssZXZlbnQsbCl7aWYobClmb3IodmFyIG09MDttPHRoaXMuX3Nl c3Npb25FbmRFdmVudHMubGVuZ3RoOysrbSl7dmFyIG49dGhpcy5fc2Vzc2lvbkVu ZEV2ZW50c1ttXTtuLm9iai51bnN1YnNjcmliZShuLnRva2VuKTt9dGhpcy5fc2Vz c2lvbkVuZEV2ZW50cy5wdXNoKHtvYmo6ayx0b2tlbjprLnN1YnNjcmliZShldmVu dCxmdW5jdGlvbihvLHApe3RoaXMuX3Nlc3Npb25FbmQoKTt9LmJpbmQodGhpcykp fSk7fSxpbml0RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5iaW5kU2Vzc2lvblN0YXJ0 KHRoaXMuY29yZSwnZm9jdXMnLGZhbHNlKTt0aGlzLmJpbmRTZXNzaW9uRW5kKHRo aXMuY29yZSwnYmx1cicsZmFsc2UpO3RoaXMudmlldy5zdWJzY3JpYmUoJ3NlbGVj dCcsZnVuY3Rpb24oayxsKXt0aGlzLnJlY29yZFNlbGVjdChsKTt9LmJpbmQodGhp cykpO3RoaXMuYmluZFNlc3Npb25FbmQodGhpcy52aWV3LCdzZWxlY3QnLGZhbHNl KTt0aGlzLnZpZXcuc3Vic2NyaWJlKCdyZW5kZXInLGZ1bmN0aW9uKGssbCl7dGhp cy5yZXN1bHRzPWw7fS5iaW5kKHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdi ZWZvcmVRdWVyeScsZnVuY3Rpb24oayxsKXtpZighbC52YWx1ZSlyZXR1cm47dGhp cy5xdWVyeT1sLnZhbHVlO3RoaXMucmVjb3JkQ291bnRTdGF0KCdudW1fcXVlcmll cycpO30uYmluZCh0aGlzKSk7dGhpcy5kYXRhLnN1YnNjcmliZSgnYmVmb3JlRmV0 Y2gnLGZ1bmN0aW9uKGssbCl7aWYobC5mZXRjaF9jb250ZXh0LmJvb3RzdHJhcCl7 dGhpcy5ib290c3RyYXBCZWdpbj1EYXRlLm5vdygpO31lbHNlIGwuZmV0Y2hfY29u dGV4dC5xdWVyeUJlZ2luPURhdGUubm93KCk7fS5iaW5kKHRoaXMpKTt0aGlzLmRh dGEuc3Vic2NyaWJlKCdmZXRjaENvbXBsZXRlJyxmdW5jdGlvbihrLGwpe2lmKGwu ZmV0Y2hfY29udGV4dC5ib290c3RyYXApe3RoaXMucmVjb3JkQXZnU3RhdCgnYm9v dHN0cmFwX2xhdGVuY3knLERhdGUubm93KCktdGhpcy5ib290c3RyYXBCZWdpbik7 dmFyIG09e307bC5yZXNwb25zZS5wYXlsb2FkLmVudHJpZXMuZm9yRWFjaChmdW5j dGlvbihuKXtpZighbVtuLnR5cGVdKXttW24udHlwZV09MTt9ZWxzZSBtW24udHlw ZV0rKzt9KTt0aGlzLnJlY29yZFN0YXQoJ2Jvb3RzdHJhcF9yZXNwb25zZV90eXBl

cycsbSk7dGhpcy5ib290c3RyYXBwZWQ9dHJ1ZTt9ZWxzZSB0aGlzLnJlY29yZEF2 Z1N0YXQoJ2F2Z19xdWVyeV9sYXRlbmN5JyxEYXRlLm5vdygpLWwuZmV0Y2hfY29u dGV4dC5xdWVyeUJlZ2luKTt9LmJpbmQodGhpcykpO3RoaXMuZGF0YS5zdWJzY3Jp YmUoJ2RpcnR5JyxmdW5jdGlvbihrLGwpe3RoaXMuYm9vdHN0cmFwcGVkPWZhbHNl O30pO30sX3Nlc3Npb25TdGFydDpmdW5jdGlvbigpe2lmKHRoaXMuc2Vzc2lvbkFj dGl2ZSlyZXR1cm47dGhpcy5zZXNzaW9uQWN0aXZlPXRydWU7fSxfc2Vzc2lvbkVu ZDpmdW5jdGlvbigpe2lmKCF0aGlzLnNlc3Npb25BY3RpdmUpcmV0dXJuO3RoaXMu c2Vzc2lvbkFjdGl2ZT1mYWxzZTt0aGlzLnN1Ym1pdCgpO3RoaXMuX3Jlc2V0KCk7 fSxyZWNvcmRTdGF0OmZ1bmN0aW9uKGssbCl7dGhpcy5zdGF0c1trXT1sO30scmVj b3JkQ291bnRTdGF0OmZ1bmN0aW9uKGspe3ZhciBsPXRoaXMuc3RhdHNba107dGhp cy5zdGF0c1trXT1sP2wrMToxO30scmVjb3JkQXZnU3RhdDpmdW5jdGlvbihrLGwp e2lmKHRoaXMuYXZnU3RhdHNba10pe3RoaXMuYXZnU3RhdHNba11bMF0rPWw7Kyt0 aGlzLmF2Z1N0YXRzW2tdWzFdO31lbHNlIHRoaXMuYXZnU3RhdHNba109W2wsMV07 fSxzdWJtaXQ6ZnVuY3Rpb24oKXtpZihPYmplY3Qua2V5cyh0aGlzLnN0YXRzKS5s ZW5ndGgpe2godGhpcy5zdGF0cyx0aGlzLmV4dHJhRGF0YSk7aWYodGhpcy5yZXN1 bHRzKXt2YXIgaz0odGhpcy5yZXN1bHRzKS5tYXAoZnVuY3Rpb24obixvKXtyZXR1 cm4gbi51aWQ7fSk7dGhpcy5yZWNvcmRTdGF0KCdjYW5kaWRhdGVfcmVzdWx0cycs SlNPTi5zdHJpbmdpZnkoaykpO31pZih0aGlzLnF1ZXJ5KXRoaXMucmVjb3JkU3Rh dCgncXVlcnknLHRoaXMucXVlcnkpO2lmKHRoaXMuc2lkKXRoaXMucmVjb3JkU3Rh dCgnc2lkJyx0aGlzLnNpZCk7aWYodGhpcy5ib290c3RyYXBwZWQpdGhpcy5yZWNv cmRTdGF0KCdib290c3RyYXBwZWQnLDEpO2Zvcih2YXIgbCBpbiB0aGlzLmF2Z1N0 YXRzKXt2YXIgbT10aGlzLmF2Z1N0YXRzW2xdO3RoaXMuc3RhdHNbbF09bVswXS9t WzFdO31uZXcgZygpLnNldFVSSSh0aGlzLmVuZFBvaW50KS5zZXRNZXRob2QoJ1BP U1QnKS5zZXREYXRhKHtzdGF0czp0aGlzLnN0YXRzfSkuc2VuZCgpO3RoaXMuX3Jl c2V0KCk7fX19KTtqLnJlZ2lzdGVyPWZ1bmN0aW9uKGssbCxtKXtpZihkb2N1bWVu dC5hY3RpdmVFbGVtZW50PT09ayl7bC5pbml0KG0pO31lbHNlIHZhciBuPUV2ZW50 Lmxpc3RlbihrLCdmb2N1cycsZnVuY3Rpb24oKXtsLmluaXQobSk7bi5yZW1vdmUo KTt9KTt9O2UuZXhwb3J0cz1qO30pOwpfX2QoIlR5cGVhaGVhZEhvaXN0RnJpZW5k cyIsWyJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGgoaSl7dGhpcy5fdHlwZWFo ZWFkPWk7fWcoaC5wcm90b3R5cGUse19zdWJzY3JpcHRpb246bnVsbCxlbmFibGU6 ZnVuY3Rpb24oKXt2YXIgaT10aGlzLl90eXBlYWhlYWQuZ2V0VmlldygpO3RoaXMu X3N1YnNjcmlwdGlvbj1pLnN1YnNjcmliZSgnYmVmb3JlUmVuZGVyJyxmdW5jdGlv bihqLGspe3ZhciBsPVtdLG09W107Zm9yKHZhciBuPTA7bjxrLnJlc3VsdHMubGVu Z3RoOysrbil7dmFyIG89ay5yZXN1bHRzW25dO2lmKG8udHlwZT09J3VzZXInJiZv LmJvb3RzdHJhcHBlZCl7bS5wdXNoKG8pO31lbHNlIGwucHVzaChvKTt9ay5yZXN1 bHRzPW0uY29uY2F0KGwpO30pO30sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuX3R5 cGVhaGVhZC5nZXRWaWV3KCkudW5zdWJzY3JpYmUodGhpcy5fc3Vic2NyaXB0aW9u KTt0aGlzLl9zdWJzY3JpcHRpb249bnVsbDt9fSk7ZS5leHBvcnRzPWg7fSk7Cl9f ZCgibGVnYWN5OkhvaXN0RnJpZW5kc1R5cGVhaGVhZEJlaGF2aW9yIixbIlR5cGVh aGVhZEhvaXN0RnJpZW5kcyJdLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIoJ1R5 cGVhaGVhZEhvaXN0RnJpZW5kcycpO2lmKCFhLlR5cGVhaGVhZEJlaGF2aW9ycylh LlR5cGVhaGVhZEJlaGF2aW9ycz17fTthLlR5cGVhaGVhZEJlaGF2aW9ycy5ob2lz dEZyaWVuZHM9ZnVuY3Rpb24oZil7Zi5lbmFibGVCZWhhdmlvcihlKTt9O30sMyk7 Cl9fZCgiVHlwZWFoZWFkU2hvd0xvYWRpbmdJbmRpY2F0b3IiLFsiQ1NTIiwiY29w eVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ1NT JyksaD1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGkoail7dGhpcy5fdHlw ZWFoZWFkPWo7fWgoaS5wcm90b3R5cGUse19zdWJzY3JpcHRpb246bnVsbCxlbmFi bGU6ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fdHlwZWFoZWFk LnN1YnNjcmliZSgnbG9hZGluZycsZnVuY3Rpb24oaixrKXtnLmNvbmRpdGlvbkNs YXNzKHRoaXMuX3R5cGVhaGVhZC5nZXRFbGVtZW50KCksJ3R5cGVhaGVhZExvYWRp bmcnLGsubG9hZGluZyk7Zy5jb25kaXRpb25DbGFzcyh0aGlzLl90eXBlYWhlYWQu Z2V0VmlldygpLmdldEVsZW1lbnQoKSwndHlwZWFoZWFkVmlld0xvYWRpbmcnLGsu bG9hZGluZyk7fS5iaW5kKHRoaXMpKTt9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlz Ll90eXBlYWhlYWQudW5zdWJzY3JpYmUodGhpcy5fc3Vic2NyaXB0aW9uKTt0aGlz Ll9zdWJzY3JpcHRpb249bnVsbDt9fSk7ZS5leHBvcnRzPWk7fSk7Cl9fZCgibGVn YWN5OlNob3dMb2FkaW5nSW5kaWNhdG9yVHlwZWFoZWFkQmVoYXZpb3IiLFsiVHlw ZWFoZWFkU2hvd0xvYWRpbmdJbmRpY2F0b3IiXSxmdW5jdGlvbihhLGIsYyxkKXt2 YXIgZT1iKCdUeXBlYWhlYWRTaG93TG9hZGluZ0luZGljYXRvcicpO2lmKCFhLlR5 cGVhaGVhZEJlaGF2aW9ycylhLlR5cGVhaGVhZEJlaGF2aW9ycz17fTthLlR5cGVh

aGVhZEJlaGF2aW9ycy5zaG93TG9hZGluZ0luZGljYXRvcj1mdW5jdGlvbihmKXtm LmVuYWJsZUJlaGF2aW9yKGUpO307fSwzKTsKX19kKCJDb21wYWN0VHlwZWFoZWFk UmVuZGVyZXIiLFsiRE9NIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J0RPTScpO2Z1bmN0aW9uIGgoaSxqKXt2YXIgaz1bXSxsPWkucGhvdG87aWYobCl7 aWYobCBpbnN0YW5jZW9mIEFycmF5KXt2YXIgbT1bZy5jcmVhdGUoJ3NwYW4nLHtj bGFzc05hbWU6J3NwbGl0cGljIGxlZnRwaWMnfSxbZy5jcmVhdGUoJ2ltZycse2Fs dDonJyxzcmM6bFswXX0pXSksZy5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J3Nw bGl0cGljJysobFsyXT8nIHRvcHBpYyc6JycpfSxbZy5jcmVhdGUoJ2ltZycse2Fs dDonJyxzcmM6bFsxXX0pXSldO2lmKGxbMl0pbS5wdXNoKGcuY3JlYXRlKCdzcGFu Jyx7Y2xhc3NOYW1lOidzcGxpdHBpYyBib3R0b21waWMnfSxbZy5jcmVhdGUoJ2lt Zycse2FsdDonJyxzcmM6bFsyXX0pXSkpO2w9Zy5jcmVhdGUoJ3NwYW4nLHtjbGFz c05hbWU6J3NwbGl0cGljcyBjbGVhcmZpeCd9LG0pO31lbHNlIGw9Zy5jcmVhdGUo J2ltZycse2FsdDonJyxzcmM6bH0pO2sucHVzaChsKTt9aWYoaS50ZXh0KWsucHVz aChnLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTondGV4dCd9LFtpLnRleHRdKSk7 dmFyIG49aS5zdWJ0ZXh0LG89aS5jYXRlZ29yeTtpZihufHxvKXt2YXIgcD1bXTtu JiZwLnB1c2gobik7biYmbyYmcC5wdXNoKCIgXHUwMGI3ICIpO28mJnAucHVzaChv KTtrLnB1c2goZy5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J3N1YnRleHQnfSxw KSk7fXZhciBxPWcuY3JlYXRlKCdsaScse2NsYXNzTmFtZTppLnR5cGV8fCcnfSxr KTtpZihpLnRleHQpcS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLGkudGV4dCk7 cmV0dXJuIHE7fWguY2xhc3NOYW1lPSdjb21wYWN0JztlLmV4cG9ydHM9aDt9KTsK X19kKCJXZWJTdG9yYWdlTW9uc3RlciIsWyJldmVudC1leHRlbnNpb25zIiwiQXN5 bmNSZXF1ZXN0IiwiVXNlckFjdGl2aXR5Iiwic2V0VGltZW91dEFjcm9zc1RyYW5z aXRpb25zIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lv bnMnKTt2YXIgZz1iKCdBc3luY1JlcXVlc3QnKSxoPWIoJ1VzZXJBY3Rpdml0eScp LGk9Yignc2V0VGltZW91dEFjcm9zc1RyYW5zaXRpb25zJyksaj0zMDAwMDAsaz1m YWxzZTtmdW5jdGlvbiBsKHEpe3ZhciByPXt9O2Zvcih2YXIgcyBpbiBxKXt2YXIg dD1xLmdldEl0ZW0ocyk7aWYodHlwZW9mIHQ9PT0nc3RyaW5nJylyW3NdPXQubGVu Z3RoO31yZXR1cm4gcjt9ZnVuY3Rpb24gbShxKXtpZihhLmxvY2FsU3RvcmFnZSlw Ll9nZXRMb2NhbFN0b3JhZ2VLZXlzKCkuZm9yRWFjaChmdW5jdGlvbihyKXtpZigh cS5jb250YWlucyhyKSlhLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHIpO30pO31m dW5jdGlvbiBuKHEpe2lmKGEubG9jYWxTdG9yYWdlKXAuX2dldExvY2FsU3RvcmFn ZUtleXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKCFxLnNvbWUoZnVuY3Rpb24o cyl7cmV0dXJuIG5ldyBSZWdFeHAocykudGVzdChyKTt9KSlhLmxvY2FsU3RvcmFn ZS5yZW1vdmVJdGVtKHIpO30pO2lmKGEuc2Vzc2lvblN0b3JhZ2UpYS5zZXNzaW9u U3RvcmFnZS5jbGVhcigpO31mdW5jdGlvbiBvKHEpe2lmKGguaXNBY3RpdmUoaikp e2koby5jdXJyeShxKSxqKTt9ZWxzZSBwLmNsZWFuTm93KHEpO312YXIgcD17cmVn aXN0ZXJMb2dvdXRGb3JtOmZ1bmN0aW9uKHEscil7RXZlbnQubGlzdGVuKHEsJ3N1 Ym1pdCcsZnVuY3Rpb24ocyl7cC5jbGVhbk9uTG9nb3V0KHIpO30pO30sc2NoZWR1 bGU6ZnVuY3Rpb24ocSl7aWYoaylyZXR1cm47az10cnVlO28ocSk7fSxjbGVhbk5v dzpmdW5jdGlvbihxKXt2YXIgcj1EYXRlLm5vdygpLHM9e30sdD1mYWxzZTtbJ2xv Y2FsU3RvcmFnZScsJ3Nlc3Npb25TdG9yYWdlJ10uZm9yRWFjaChmdW5jdGlvbih2 KXtpZihhW3ZdKXtzW3ZdPWwoYVt2XSk7dD10cnVlO319KTt2YXIgdT1EYXRlLm5v dygpO3MubG9ndGltZT11LXI7aWYodCluZXcgZygnL2FqYXgvd2Vic3RvcmFnZS9w cm9jZXNzX2tleXMucGhwJykuc2V0RGF0YShzKS5zZXRIYW5kbGVyKGZ1bmN0aW9u KHYpe2lmKCFxKW0odi5nZXRQYXlsb2FkKCkpO30uYmluZCh0aGlzKSkuc2VuZCgp O30sY2xlYW5PbkxvZ291dDpmdW5jdGlvbihxKXtpZihxKW4ocSk7aWYoYS5zZXNz aW9uU3RvcmFnZSlhLnNlc3Npb25TdG9yYWdlLmNsZWFyKCk7fSxfZ2V0TG9jYWxT dG9yYWdlS2V5czpPYmplY3Qua2V5cy5jdXJyeShhLmxvY2FsU3RvcmFnZSl9O2Uu ZXhwb3J0cz1wO30pOw== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=rycNb45tUk1.js Content-Type: application/x-javascript; charset=utf-8; name=rycNb45tUk1.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yF/r/rycNb45tUk1.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDMxNjEyLDE3MzIxNzYyOSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbImREWXF0Il0pOyB9CgpmdW5j dGlvbiBBcHBVc2VUcmFja2VyKCl7aWYoIUFwcFVzZVRyYWNrZXIuaW5zdGFuY2Up QXBwVXNlVHJhY2tlci5pbnN0YW5jZT10aGlzO3JldHVybiBBcHBVc2VUcmFja2Vy

Lmluc3RhbmNlO31jb3B5UHJvcGVydGllcyhBcHBVc2VUcmFja2VyLnByb3RvdHlw ZSx7aW5zdGFuY2U6bnVsbCxlbmRwb2ludDonL2FqYXgvYXBwcy91c2FnZV91cGRh dGUucGhwJyxJTklUSUFMX1BJTkc6MCxPTkdPSU5HX1BJTkc6MSxESVNDT1ZFUllf UElORzoyLEVORElOR19QSU5HOjMsX2FwcGxpY2F0aW9uX2lkOjAsX2lzX2dhbWU6 MCxfZG9fbG9nX29uX3Nlc3Npb25fZW5kOjAsX2NyZWF0ZVJlcXVlc3Q6ZnVuY3Rp b24oYSl7cmV0dXJuIG5ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkodGhpcy5lbmRw b2ludCkuc2V0TWV0aG9kKCdQT1NUJykuc2V0RGF0YSh7YXBwOnRoaXMuX2FwcGxp Y2F0aW9uX2lkLGlzX2dhbWU6dGhpcy5faXNfZ2FtZSx0eXBlOmEsY29uZGl0aW9u OnRoaXMuX3NpZ25hbF9vbl9wYWdlX3RyYW5zaXRpb259KTt9LGluaXQ6ZnVuY3Rp b24oYSxiLGMsZCxlLGYpe2lmKHdpbmRvdyE9d2luZG93LnRvcClyZXR1cm47dGhp cy5jbGVhbnVwKCk7UGFnZVRyYW5zaXRpb25zLnJlZ2lzdGVySGFuZGxlcih0aGlz LmNhdGNoUGFnZVRyYW5zaXRpb24uYmluZCh0aGlzKSk7dGhpcy5fYXBwbGljYXRp b25faWQ9YTt0aGlzLl9pc19nYW1lPWI7dGhpcy5fZG9fbG9nX29uX3Nlc3Npb25f ZW5kPWY7dGhpcy5fdGltZXJzLnB1c2goc2V0VGltZW91dChmdW5jdGlvbigpe3Ro aXMuX2NyZWF0ZVJlcXVlc3QodGhpcy5JTklUSUFMX1BJTkcpLnNlbmQoKTt2YXIg Zz10aGlzLl9jcmVhdGVSZXF1ZXN0KHRoaXMuT05HT0lOR19QSU5HKTt0aGlzLl90 aW1lcnMucHVzaChzZXRJbnRlcnZhbChnLnNlbmQuYmluZChnKSxkKSk7fS5iaW5k KHRoaXMpLGMpKTtpZihlKXRoaXMuX3RpbWVycy5wdXNoKHNldFRpbWVvdXQoZnVu Y3Rpb24oKXt0aGlzLl9jcmVhdGVSZXF1ZXN0KHRoaXMuRElTQ09WRVJZX1BJTkcp LnNlbmQoKTt9LmJpbmQodGhpcyksZSkpO2lmKHRoaXMuX2RvX2xvZ19vbl9zZXNz aW9uX2VuZClvbmJlZm9yZXVubG9hZFJlZ2lzdGVyKHRoaXMub25CZWZvcmVVbmxv YWQuYmluZCh0aGlzKSk7fSxjYXRjaFBhZ2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGEp e2lmKHRoaXMuX2RvX2xvZ19vbl9zZXNzaW9uX2VuZCl0aGlzLl9jcmVhdGVSZXF1 ZXN0KHRoaXMuRU5ESU5HX1BJTkcpLnNlbmQoKTt0aGlzLmNsZWFudXAoKTt9LG9u QmVmb3JlVW5sb2FkOmZ1bmN0aW9uKCl7aWYodGhpcy5fZG9fbG9nX29uX3Nlc3Np b25fZW5kKXRoaXMuX2NyZWF0ZVJlcXVlc3QodGhpcy5FTkRJTkdfUElORykuc2V0 T3B0aW9uKCdhc3luY2hyb25vdXMnLGZhbHNlKS5zZW5kKCk7dGhpcy5jbGVhbnVw KCk7fSxjbGVhbnVwOmZ1bmN0aW9uKCl7aWYodGhpcy5fdGltZXJzKWZvcihpPTA7 aTx0aGlzLl90aW1lcnMubGVuZ3RoO2krKyljbGVhckludGVydmFsKHRoaXMuX3Rp bWVyc1tpXSk7dGhpcy5fdGltZXJzPVtdO3RoaXMuX2RvX2xvZ19vbl9zZXNzaW9u X2VuZD0wO319KTsKX19kKCJDYW52YXNBcHBSZXF1ZXN0VXBkYXRlciIsWyJBcmJp dGVyIiwiQ1NTIiwiQ2hhbm5lbENvbnN0YW50cyIsIkRPTSIsImNvcHlQcm9wZXJ0 aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxo PWIoJ0NTUycpLGk9YignQ2hhbm5lbENvbnN0YW50cycpLGo9YignRE9NJyksaz1i KCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIGwobSl7dGhpcy5fcm9vdD1tO2cu c3Vic2NyaWJlKGkuZ2V0QXJiaXRlclR5cGUoJ2FwcF9yZXF1ZXN0X2NyZWF0ZScp LGZ1bmN0aW9uKG4sbyl7dmFyIHA9ai5zY3J5KHRoaXMuX3Jvb3QsIi5pdGVtXyIr by5vYmouYXBwaWQpWzBdLHE9cCYmai5zY3J5KHAsIi5yZXF1ZXN0c0xpc3QiKVsw XTtxJiZqLmFwcGVuZENvbnRlbnQocSxvLm9iai5yZXF1ZXN0KTtwJiZ0aGlzLl91 cGRhdGVCb29rbWFyayhwLDEpO30uYmluZCh0aGlzKSk7Zy5zdWJzY3JpYmUoaS5n ZXRBcmJpdGVyVHlwZSgnYXBwX3JlcXVlc3RfZGVsZXRlJyksZnVuY3Rpb24obixv KXt2YXIgcD1qLnNjcnkodGhpcy5fcm9vdCwiLml0ZW1fIitvLm9iai5hcHBpZClb MF0scT1wJiZqLnNjcnkocCwiW2RhdGEtcmVxdWVzdGlkPSciK28ub2JqLnJlcXVl c3RpZCsiJ10iKVswXTtxJiZqLnJlbW92ZShxLnBhcmVudEVsZW1lbnQpO3AmJnRo aXMuX3VwZGF0ZUJvb2ttYXJrKHAsLTEpO30uYmluZCh0aGlzKSk7fWsobC5wcm90 b3R5cGUse191cGRhdGVCb29rbWFyazpmdW5jdGlvbihtLG4pe3ZhciBvPWouZmlu ZChtLCIuZmx5b3V0IikscD1qLmZpbmQobSwiLmNvdW50VmFsdWUiKSxxPXBhcnNl SW50KGouZ2V0VGV4dChwKSwxMCkscj1NYXRoLm1heCgwLHErbik7ai5zZXRDb250 ZW50KHAscik7aWYocjwxKXtoLmhpZGUocC5wYXJlbnRFbGVtZW50KTtoLmhpZGUo byk7fWVsc2V7aC5zaG93KHAucGFyZW50RWxlbWVudCk7aC5zaG93KG8pO319fSk7 ZS5leHBvcnRzPWw7fSk7Cl9fZCgiWGRBcmJpdGVyQnVmZmVyIixbXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7aWYoIWEuWGRBcmJpdGVyKWEuWGRBcmJpdGVyPXtfbTpb XSxyZWdpc3RlcjpmdW5jdGlvbihnKXt0aGlzLl9wPWc7cmV0dXJuICgvXmFwcHNc Li8pLnRlc3QobG9jYXRpb24uaG9zdG5hbWUpPydjYW52YXMnOid0YWInO30saGFu ZGxlTWVzc2FnZTpmdW5jdGlvbihnKXt0aGlzLl9tLnB1c2goZyk7fX07fSk7Cl9f ZCgiQ2FudmFzSUZyYW1lTG9hZGVyIixbIlhkQXJiaXRlckJ1ZmZlciIsIiQiXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7YignWGRBcmJpdGVyQnVmZmVyJyk7dmFyIGc9 YignJCcpLGg9e2xvYWRGcm9tRm9ybTpmdW5jdGlvbihpKXtpLnN1Ym1pdCgpO319 O2UuZXhwb3J0cz1oO30pOwpfX2QoIkNhbnZhc0ZseW91dExvYWRlciIsWyJldmVu dC1leHRlbnNpb25zIiwiQXN5bmNSZXF1ZXN0Il0sZnVuY3Rpb24oYSxiLGMsZCxl

LGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBc3luY1JlcXVlc3Qn KSxoPXtlbmRwb2ludDonL2FqYXgvY2FudmFzL2ZseW91dHMnLGluaXQ6ZnVuY3Rp b24oaSxqLGspe3RoaXMucm9vdD1pO3RoaXMubGFyZ2VBcHBzPWo7dGhpcy5zZWVB bGxBcHBzPWs7dGhpcy5oYW5kbGVyPUV2ZW50Lmxpc3RlbihpLCdtb3VzZWVudGVy Jyx0aGlzLmxvYWRGbHlvdXRzLnNoaWVsZCh0aGlzKSk7fSxsb2FkRmx5b3V0czpm dW5jdGlvbigpe3RoaXMuaGFuZGxlci5yZW1vdmUoKTt0aGlzLmhhbmRsZXI9bnVs bDt2YXIgaT17aXRlbXM6dGhpcy5sYXJnZUFwcHMsYWxsX2FwcHM6dGhpcy5zZWVB bGxBcHBzfTtuZXcgZygpLnNldFVSSSh0aGlzLmVuZHBvaW50KS5zZXRSZWxhdGl2 ZVRvKHRoaXMucm9vdCkuc2V0TWV0aG9kKCdwb3N0Jykuc2V0UmVhZE9ubHkodHJ1 ZSkuc2V0RGF0YShpKS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1ZSku c2VuZCgpO319O2UuZXhwb3J0cz1oO30pOwpfX2QoInNwcmludGYiLFtdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgsaSl7aT1BcnJheS5wcm90b3R5 cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7dmFyIGo9MDtyZXR1cm4gaC5yZXBs YWNlKC8lcy9nLGZ1bmN0aW9uKGspe3JldHVybiBpW2orK107fSk7fWUuZXhwb3J0 cz1nO30pOwpfX2QoIkxvZyIsWyJzcHJpbnRmIl0sZnVuY3Rpb24oYSxiLGMsZCxl LGYpe3ZhciBnPWIoJ3NwcmludGYnKSxoPXtERUJVRzozLElORk86MixXQVJOSU5H OjEsRVJST1I6MH07ZnVuY3Rpb24gaShrLGwpe3ZhciBtPUFycmF5LnByb3RvdHlw ZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSxuPWcuYXBwbHkobnVsbCxtKTtpZihq LmxldmVsPj1rJiZ3aW5kb3cuY29uc29sZSljb25zb2xlW2wgaW4gY29uc29sZT9s Oidsb2cnXShuKTt9dmFyIGo9e2xldmVsOi0xLExldmVsOmgsZGVidWc6aS5iaW5k KG51bGwsaC5ERUJVRywnZGVidWcnKSxpbmZvOmkuYmluZChudWxsLGguSU5GTywn ZGVidWcnKSx3YXJuOmkuYmluZChudWxsLGguV0FSTklORywnZGVidWcnKSxlcnJv cjppLmJpbmQobnVsbCxoLkVSUk9SLCdkZWJ1ZycpfTtlLmV4cG9ydHM9ajt9KTsK X19kKCJyZXNvbHZlV2luZG93IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVu Y3Rpb24gZyhoKXt2YXIgaT13aW5kb3csaj1oLnNwbGl0KCcuJyk7dHJ5e2Zvcih2 YXIgbD0wO2w8ai5sZW5ndGg7bCsrKXt2YXIgbT1qW2xdLG49L15mcmFtZXNcW1sn Il0/KFthLXpBLVowLTlcLV9dKylbJyJdP1xdJC8uZXhlYyhtKTtpZihuKXtpPWku ZnJhbWVzW25bMV1dO31lbHNlIGlmKG09PT0nb3BlbmVyJ3x8bT09PSdwYXJlbnQn fHxtPT09J3RvcCcpe2k9aVttXTt9ZWxzZSByZXR1cm4gbnVsbDt9fWNhdGNoKGsp e3JldHVybiBudWxsO31yZXR1cm4gaTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiWEQi LFsiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJET00iLCJET01EaW1l bnNpb25zIiwiTG9nIiwiVVJJIiwiVXNlckFnZW50IiwiY29weVByb3BlcnRpZXMi LCJpc0luSWZyYW1lIiwicmVzb2x2ZVdpbmRvdyJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlcicp LGg9YignRE9NJyksaT1iKCdET01EaW1lbnNpb25zJyksaj1iKCdMb2cnKSxrPWIo J1VSSScpLGw9YignVXNlckFnZW50JyksbT1iKCdjb3B5UHJvcGVydGllcycpLG49 YignaXNJbklmcmFtZScpLG89YigncmVzb2x2ZVdpbmRvdycpLHA9J2ZiX3hkbV9m cmFtZV8nK2xvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoJzonLCcnKSxxPXtfY2Fs bGJhY2tzOltdLF9vcHRzOnthdXRvUmVzaXplOmZhbHNlLGFsbG93U2hyaW5rOnRy dWUsY2hhbm5lbFVybDpudWxsLGhpZGVPdmVyZmxvdzpmYWxzZSxyZXNpemVUaW1l b3V0OjEwMCxyZXNpemVXaWR0aDpmYWxzZSxleHBlY3RSZXNpemVBY2s6ZmFsc2Us cmVzaXplQWNrVGltZW91dDo2MDAwfSxfbGFzdFJlc2l6ZUFja0lkOjAsX3Jlc2l6 ZUNvdW50OjAsX3Jlc2l6ZVRpbWVzdGFtcDowLF9zaHJpbmtlcjpudWxsLGluaXQ6 ZnVuY3Rpb24ocyl7dGhpcy5fb3B0cz1tKG0oe30sdGhpcy5fb3B0cykscyk7aWYo dGhpcy5fb3B0cy5hdXRvUmVzaXplKXRoaXMuX3N0YXJ0UmVzaXplTW9uaXRvcigp O2cuc3Vic2NyaWJlKCdDb25uZWN0LlVuc2FmZS5yZXNpemUuYWNrJyxmdW5jdGlv bih0LHUpe2lmKCF1LmlkKXUuaWQ9dGhpcy5fcmVzaXplQ291bnQ7aWYodS5pZD50 aGlzLl9sYXN0UmVzaXplQWNrSWQpdGhpcy5fbGFzdFJlc2l6ZUFja0lkPXUuaWQ7 fS5iaW5kKHRoaXMpKTt9LHNlbmQ6ZnVuY3Rpb24ocyx0KXt0PXR8fHRoaXMuX29w dHMuY2hhbm5lbFVybDtpZighdClyZXR1cm47dmFyIHU9e30sdj1uZXcgayh0KTtt KHUscyk7bSh1LGsuZXhwbG9kZVF1ZXJ5KHYuZ2V0RnJhZ21lbnQoKSkpO3ZhciB3 PW5ldyBrKHUub3JpZ2luKSx4PXcuZ2V0RG9tYWluKCkrKHcuZ2V0UG9ydCgpPyc6 Jyt3LmdldFBvcnQoKTonJykseT1vKHUucmVsYXRpb24ucmVwbGFjZSgvXnBhcmVu dFwuLywnJykpLHo9eS5mcmFtZXNbcF07ej96LnByb3h5TWVzc2FnZShrLmltcGxv ZGVRdWVyeSh1KSxbeF0pOmoud2FybignTm8gc3VjaCBmcmFtZSAiJytwKyciIHRv IHByb3h5TWVzc2FnZSB0bycpO30sX2NvbXB1dGVTaXplOmZ1bmN0aW9uKCl7dmFy IHM9aS5nZXREb2N1bWVudERpbWVuc2lvbnMoKSx0PTA7aWYodGhpcy5fb3B0cy5y ZXNpemVXaWR0aCl7dmFyIHU9ZG9jdW1lbnQuYm9keTtpZih1LmNsaWVudFdpZHRo PHUuc2Nyb2xsV2lkdGgpe3Q9cy53aWR0aDt9ZWxzZXt2YXIgdj11LmNoaWxkTm9k ZXM7Zm9yKHZhciB3PTA7dzx2Lmxlbmd0aDt3Kyspe3ZhciB4PXZbd10seT14Lm9m

ZnNldExlZnQreC5vZmZzZXRXaWR0aDtpZih5PnQpdD15O319dD1NYXRoLm1heCh0 LHEuZm9yY2VkX21pbl93aWR0aCk7fXMud2lkdGg9dDtpZih0aGlzLl9vcHRzLmFs bG93U2hyaW5rKXtpZighdGhpcy5fc2hyaW5rZXIpdGhpcy5fc2hyaW5rZXI9aC5j cmVhdGUoJ2RpdicpO2guYXBwZW5kQ29udGVudChkb2N1bWVudC5ib2R5LHRoaXMu X3Nocmlua2VyKTtzLmhlaWdodD1NYXRoLm1heCh0aGlzLl9zaHJpbmtlci5vZmZz ZXRUb3AsMCk7fXJldHVybiBzO30sX3N0YXJ0UmVzaXplTW9uaXRvcjpmdW5jdGlv bigpe3ZhciBzLHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2lmKHRoaXMuX29w dHMuaGlkZU92ZXJmbG93KXt0LnN0eWxlLm92ZXJmbG93PSdoaWRkZW4nO2RvY3Vt ZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9J2hpZGRlbic7fXNldEludGVydmFsKChm dW5jdGlvbigpe3ZhciB1PXRoaXMuX2NvbXB1dGVTaXplKCksdj1EYXRlLm5vdygp LHc9dGhpcy5fbGFzdFJlc2l6ZUFja0lkPHRoaXMuX3Jlc2l6ZUNvdW50JiYodi10 aGlzLl9yZXNpemVUaW1lc3RhbXApPnRoaXMuX29wdHMucmVzaXplQWNrVGltZW91 dDtpZighc3x8KHRoaXMuX29wdHMuZXhwZWN0UmVzaXplQWNrJiZ3KXx8KHRoaXMu X29wdHMuYWxsb3dTaHJpbmsmJnMud2lkdGghPXUud2lkdGgpfHwoIXRoaXMuX29w dHMuYWxsb3dTaHJpbmsmJnMud2lkdGg8dS53aWR0aCl8fCh0aGlzLl9vcHRzLmFs bG93U2hyaW5rJiZzLmhlaWdodCE9dS5oZWlnaHQpfHwoIXRoaXMuX29wdHMuYWxs b3dTaHJpbmsmJnMuaGVpZ2h0PHUuaGVpZ2h0KSl7cz11O3RoaXMuX3Jlc2l6ZUNv dW50Kys7dGhpcy5fcmVzaXplVGltZXN0YW1wPXY7dmFyIHg9e3R5cGU6J3Jlc2l6 ZScsaGVpZ2h0OnUuaGVpZ2h0LGFja0RhdGE6e2lkOnRoaXMuX3Jlc2l6ZUNvdW50 fX07aWYodS53aWR0aCYmdS53aWR0aCE9MCl4LndpZHRoPXUud2lkdGg7dHJ5e2lm KGsoZG9jdW1lbnQucmVmZXJyZXIpLmlzRmFjZWJvb2tVUkkoKSYmbigpJiZ3aW5k b3cubmFtZSYmd2luZG93LnBhcmVudC5sb2NhdGlvbiYmd2luZG93LnBhcmVudC5s b2NhdGlvbi50b1N0cmluZyYmayh3aW5kb3cucGFyZW50LmxvY2F0aW9uKS5pc0Zh Y2Vib29rVVJJKCkpe3ZhciB6PXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpO2Zvcih2YXIgYWE9MDthYTx6Lmxlbmd0 aDthYT1hYSsxKWlmKHpbYWFdLm5hbWU9PXdpbmRvdy5uYW1lKXtpZih0aGlzLl9v cHRzLnJlc2l6ZVdpZHRoKXpbYWFdLnN0eWxlLndpZHRoPXgud2lkdGgrJ3B4Jzt6 W2FhXS5zdHlsZS5oZWlnaHQ9eC5oZWlnaHQrJ3B4Jzt9fXRoaXMuc2VuZCh4KTt9 Y2F0Y2goeSl7dGhpcy5zZW5kKHgpO319fSkuYmluZCh0aGlzKSx0aGlzLl9vcHRz LnJlc2l6ZVRpbWVvdXQpO319LHI9bSh7fSxxKTtlLmV4cG9ydHMuVW52ZXJpZmll ZFhEPXI7ZS5leHBvcnRzLlhEPXE7YS5VbnZlcmlmaWVkWEQ9cjthLlhEPXE7fSk7 Cl9fZCgibGVnYWN5OmNvbm5lY3QteGQiLFsiWEQiXSxmdW5jdGlvbihhLGIsYyxk KXthLlVudmVyaWZpZWRYRD1iKCdYRCcpLlVudmVyaWZpZWRYRDthLlhEPWIoJ1hE JykuWEQ7fSwzKTsKX19kKCJsZWdhY3k6cHJpbWVyIixbIlByaW1lciJdLGZ1bmN0 aW9uKGEsYixjLGQpe2IoJ1ByaW1lcicpO30sMyk7Cl9fZCgibGVnYWN5OnN0YXJ0 c1dpdGgiLFsic3RhcnRzV2l0aCJdLGZ1bmN0aW9uKGEsYixjLGQpe2Euc3RhcnRz V2l0aD1iKCdzdGFydHNXaXRoJyk7fSwzKTsKaWYoIXdpbmRvdy5Db21tZW50QWRt aW5QYW5lbENvbnRyb2xsZXIpe3dpbmRvdy5Db21tZW50QWRtaW5QYW5lbENvbnRy b2xsZXI9ZnVuY3Rpb24oYSl7Y29weVByb3BlcnRpZXModGhpcyx7bG9jYWxlOmEu bG9jYWxlLGNoYW5uZWw6YS5jaGFubmVsLGNvbnRyb2xsZXJJRDphLmNvbnRyb2xs ZXJJRCxjb21tZW50SURzOmEuY29tbWVudElEcyxkb21JRHM6YS5kb21JRHMsZHVw bGljYXRlQ29tbWVudHM6W10sZmV0Y2hNb3JlQ29tbWVudHNJc1BlbmRpbmc6e30s YmxhY2tsaXN0ZWRBY3RvcnM6YS5ibGFja2xpc3RlZEFjdG9ycyxhY3RvclRvQ29t bWVudEluZm9NYXA6YS5hY3RvclRvQ29tbWVudElETWFwLGNvbW1lbnRJbmZvTWFw OmEuY29tbWVudEluZm9NYXAsaW5BZ2dyZWdhdGVkVmlldzphLmluQWdncmVnYXRl ZFZpZXcsaW5Nb2RlcmF0aW9uUXVldWU6YS5pbk1vZGVyYXRpb25RdWV1ZSxpbkNv bnRleHR1YWxEaWFsb2c6YS5pbkNvbnRleHR1YWxEaWFsb2csaXNUb3BMZXZlbENv bW1lbnRQb2xsaW5nRW5hYmxlZDpmYWxzZSxsb2dnZWRJbjphLmxvZ2dlZEluLG5l d2VzdENvbW1lbnRUaW1lc3RhbXA6YS5uZXdlc3RDb21tZW50VGltZXN0YW1wLHJl YWxUaW1lUG9sbGluZ1BhcmFtczp7fSx1c2VyT3duc1BhZ2VzOmEudXNlck93bnNQ YWdlcyxyZWNlbnRseUJsYWNrbGlzdGVkQWN0b3JzOmEuYmxhY2tsaXN0ZWRBY3Rv cnN9KTtBcmJpdGVyLnN1YnNjcmliZShDaGFubmVsQ29uc3RhbnRzLmdldEFyYml0 ZXJUeXBlKCdjb21tZW50c19wbHVnaW5fbmV3X3Bvc3QnKSxmdW5jdGlvbihiLGMp e2lmKGMub2JqLnRhcmdldD09PXRoaXMucmVhbFRpbWVQb2xsaW5nUGFyYW1zLnRh cmdldCl7aWYoZ2UoYy5vYmouY29tbWVudF9lbGVtZW50X2lkKSlyZXR1cm47dmFy IGQ9Y29weVByb3BlcnRpZXMoe30sdGhpcy5yZWFsVGltZVBvbGxpbmdQYXJhbXMp O2QucG9zdF9mYmlkPWMub2JqLnBvc3RfZmJpZDt2YXIgZT1jLm9iai5wYXJlbnRf Y29tbWVudF9pZDtpZihlKXt2YXIgZj1nZShlKTtpZighZilyZXR1cm47dmFyIGc9 RE9NLnNjcnkoZiwnLmZiRmVlZGJhY2tQYWdlci51aU1vcmVQYWdlcicpO2lmKGcu bGVuZ3RoPjApcmV0dXJuO2QucGFyZW50X2NvbW1lbnRfaWQ9ZTtkLmlzX3JlcGx5

X3RocmVhZD10cnVlO31lbHNle2lmKCF0aGlzLmlzVG9wTGV2ZWxDb21tZW50UG9s bGluZ0VuYWJsZWQpcmV0dXJuO2QuaXNfcmVwbHlfdGhyZWFkPWZhbHNlO310aGlz LnBvbGxGb3JDb21tZW50cyhkKTt9fS5iaW5kKHRoaXMpKTt0aGlzLmNvbnRyb2xs ZWRSZWdpb249JCh0aGlzLmNvbnRyb2xsZXJJRCk7dGhpcy5hdHRhY2hDbGlja0hh bmRsZXJzKCk7aWYodGhpcy5pbk1vZGVyYXRpb25RdWV1ZSl0aGlzLnJlZ2lzdGVy TW9kZXJhdG9yUXVldWVIYW5kbGVycyh0cnVlKTtpZih0aGlzLmluQ29udGV4dHVh bERpYWxvZyl0aGlzLmF0dGFjaENvbnRleHR1YWxEaWFsb2dIYW5kbGVycygpO2lm KCF0aGlzLmluQWdncmVnYXRlZFZpZXcpVW52ZXJpZmllZFhELmluaXQoe2F1dG9S ZXNpemU6dHJ1ZSxjaGFubmVsVXJsOmEuY2hhbm5lbCxoaWRlT3ZlcmZsb3c6dHJ1 ZSxyZXNpemVXaWR0aDpmYWxzZX0pO307Y29weVByb3BlcnRpZXMoQ29tbWVudEFk bWluUGFuZWxDb250cm9sbGVyLHthbGxDb250cm9sbGVyczp7fSxtYWluQ29udHJv bGxlcjpudWxsLGNvbnRleHR1YWxDb250cm9sbGVyczp7fSxpbml0Q29udHJvbGxl cjpmdW5jdGlvbihhKXt2YXIgYj1uZXcgQ29tbWVudEFkbWluUGFuZWxDb250cm9s bGVyKGEpLGM9YS5jb250cm9sbGVySUQ7Q29tbWVudEFkbWluUGFuZWxDb250cm9s bGVyLmFsbENvbnRyb2xsZXJzW2NdPWI7aWYoYi5pbkNvbnRleHR1YWxEaWFsb2cp e0NvbW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5jb250ZXh0dWFsQ29udHJvbGxl cnNbY109Yjt9ZWxzZSBDb21tZW50QWRtaW5QYW5lbENvbnRyb2xsZXIubWFpbkNv bnRyb2xsZXI9Yjt9LHN5bmNDb250cm9sbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9 Q29tbWVudEFkbWluUGFuZWxDb250cm9sbGVyLmFsbENvbnRyb2xsZXJzW2FdO2Mu YXR0YWNoQ2xpY2tIYW5kbGVycygpO2lmKCFjLmlzQ29udHJvbGxpbmdNb2RlcmF0 aW9uUXVldWUoKSlyZXR1cm47Yy5kZXNlbGVjdENvbW1lbnRzKGIpO2MucmVnaXN0 ZXJNb2RlcmF0b3JRdWV1ZUhhbmRsZXJzKGZhbHNlKTtjLnN5bmNocm9uaXplTW9k ZXJhdG9yUXVldWVVSSgpO30scmVzZXRDb250cm9sbGVyOmZ1bmN0aW9uKGEpe3Zh ciBiPUNvbW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5hbGxDb250cm9sbGVyc1th XTtiLnJlc2V0Q29udHJvbGxlcigpO30sYXBwZW5kQ29tbWVudHM6ZnVuY3Rpb24o YSxiLGMpe3ZhciBkPUNvbW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5hbGxDb250 cm9sbGVyc1thXTtkLmFwcGVuZENvbW1lbnRzKGIsYyk7fSxwcmVwZW5kQ29tbWVu dHM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUNvbW1lbnRBZG1pblBhbmVsQ29udHJv bGxlci5hbGxDb250cm9sbGVyc1thXTtkLnByZXBlbmRDb21tZW50cyhiLGMpO30s dXBkYXRlQ29udHJvbGxlcjpmdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD1D b21tZW50QWRtaW5QYW5lbENvbnRyb2xsZXIuYWxsQ29udHJvbGxlcnNbYV07aC51 cGRhdGVDb250cm9sbGVyKGIsYyxkLGUsZixnKTtpZighQ29tbWVudEFkbWluUGFu ZWxDb250cm9sbGVyLm1haW5Db250cm9sbGVyLmxvZ2dlZEluKU11bHRpTG9naW5Q b3B1cC5yZWF0dGFjaExvZ2luSW50ZXJjZXB0b3JzKCk7aWYoIWguaXNDb250cm9s bGluZ01vZGVyYXRpb25RdWV1ZSgpKXJldHVybjtoLnJlZ2lzdGVyTW9kZXJhdG9y UXVldWVIYW5kbGVycyhmYWxzZSk7aC5zeW5jaHJvbml6ZU1vZGVyYXRvclF1ZXVl VUkoKTt9LHVwZGF0ZVBvbGxpbmdQYXJhbXNDb21tZW50YXM6ZnVuY3Rpb24oYSxi KXt2YXIgYz1Db21tZW50QWRtaW5QYW5lbENvbnRyb2xsZXIuYWxsQ29udHJvbGxl cnNbYV07Yy51cGRhdGVQb2xsaW5nUGFyYW1zQ29tbWVudGFzKGIpO30scmVnaXN0 ZXJNb3JlQ29tbWVudHNMaW5rSGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPUNv bW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5hbGxDb250cm9sbGVyc1thXTtjLnJl Z2lzdGVyTW9yZUNvbW1lbnRzTGlua0hhbmRsZXIoYik7fSxzZXRSZWFsVGltZVBv bGxpbmdQYXJhbXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1Db21tZW50QWRtaW5QYW5l bENvbnRyb2xsZXIuYWxsQ29udHJvbGxlcnNbYV07Yy5zZXRSZWFsVGltZVBvbGxp bmdQYXJhbXMoYik7fSxlbmFibGVUb3BMZXZlbENvbW1lbnRQb2xsaW5nOmZ1bmN0 aW9uKGEpe3ZhciBiPUNvbW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5hbGxDb250 cm9sbGVyc1thXTtiLmVuYWJsZVRvcExldmVsQ29tbWVudFBvbGxpbmcoKTt9LGRp c2FibGVUb3BMZXZlbENvbW1lbnRQb2xsaW5nOmZ1bmN0aW9uKGEpe3ZhciBiPUNv bW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5hbGxDb250cm9sbGVyc1thXTtiLmRp c2FibGVUb3BMZXZlbENvbW1lbnRQb2xsaW5nKCk7fSxyZXBsYWNlQ29udGVudE1h eWJlOmZ1bmN0aW9uKGEsYil7dmFyIGM9RE9NLnNjcnkoZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LGEpWzBdO2lmKGMpRE9NLnJlcGxhY2UoYyxiKTt9LG5vdGlmeUNv bW1lbnRDcmVhdGVkOmZ1bmN0aW9uKGEpe2lmKCFDb21tZW50QWRtaW5QYW5lbENv bnRyb2xsZXIubWFpbkNvbnRyb2xsZXIuY2hhbm5lbClyZXR1cm47VW52ZXJpZmll ZFhELnNlbmQoe3R5cGU6J2NvbW1lbnRDcmVhdGVkJyxocmVmOmEuaHJlZixwYXJl bnRDb21tZW50SUQ6YS5wYXJlbnRDb21tZW50SUQsY29tbWVudElEOmEuY29tbWVu dElEfSk7fSxub3RpZnlDb21tZW50UmVtb3ZlZDpmdW5jdGlvbihhKXtpZighQ29t bWVudEFkbWluUGFuZWxDb250cm9sbGVyLm1haW5Db250cm9sbGVyLmNoYW5uZWwp cmV0dXJuO1VudmVyaWZpZWRYRC5zZW5kKHt0eXBlOidjb21tZW50UmVtb3ZlZCcs aHJlZjphLmhyZWYsY29tbWVudElEOmEuY29tbWVudElEfSk7fSxtYXJrQXNTaG93

aW5nQWxsUmVwbGllczpmdW5jdGlvbihhKXt2YXIgYj1hKycgYS5mYlVwRG93blZv dGVPcHRpb24nLGM9RE9NLnNjcnkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGIp LGQ9YSsnIGxpLmZiVXBEb3duVm90ZU9wdGlvbiBhLml0ZW1BbmNob3InLGU9RE9N LnNjcnkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGQpLGY9Yy5jb25jYXQoZSk7 Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ10saT1uZXcgVVJJ KGguZ2V0QXR0cmlidXRlKCdhamF4aWZ5JykpO2kuYWRkUXVlcnlEYXRhKHtzaG93 X2FsbF9yZXBsaWVzOjF9KTtoLnNldEF0dHJpYnV0ZSgnYWpheGlmeScsaS50b1N0 cmluZygpKTt9fSxzZXRMb2dnZWRJbjpmdW5jdGlvbihhKXtDb21tZW50QWRtaW5Q YW5lbENvbnRyb2xsZXIubWFpbkNvbnRyb2xsZXIubG9nZ2VkSW49YTt9fSk7Y29w eVByb3BlcnRpZXMoQ29tbWVudEFkbWluUGFuZWxDb250cm9sbGVyLnByb3RvdHlw ZSx7aXNDb250cm9sbGluZ01vZGVyYXRpb25RdWV1ZTpmdW5jdGlvbigpe3ZhciBh PXRoaXM9PUNvbW1lbnRBZG1pblBhbmVsQ29udHJvbGxlci5tYWluQ29udHJvbGxl ciYmdGhpcy5pbk1vZGVyYXRpb25RdWV1ZTtyZXR1cm4gYTt9LHJlc2V0Q29udHJv bGxlcjpmdW5jdGlvbigpe3RoaXMuY29tbWVudElEcz1bXTt0aGlzLmRvbUlEcz1b XTt9LHVwZGF0ZUNvbnRyb2xsZXI6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2EuZm9y RWFjaChmdW5jdGlvbihoKXt0aGlzLmNvbW1lbnRJRHMucHVzaChoKTt9LHRoaXMp O2IuZm9yRWFjaChmdW5jdGlvbihoKXt0aGlzLmRvbUlEcy5wdXNoKGgpO30sdGhp cyk7Y29weVByb3BlcnRpZXModGhpcy5ibGFja2xpc3RlZEFjdG9ycyxkKTtmb3Io dmFyIGcgaW4gZSl7aWYoIXRoaXMuYWN0b3JUb0NvbW1lbnRJbmZvTWFwW2ddKXRo aXMuYWN0b3JUb0NvbW1lbnRJbmZvTWFwW2ddPVtdO2VbZ10uZm9yRWFjaChmdW5j dGlvbihoKXt0aGlzLmFjdG9yVG9Db21tZW50SW5mb01hcFtnXS5wdXNoKGgpO30s dGhpcyk7fXRoaXMubmV3ZXN0Q29tbWVudFRpbWVzdGFtcD1NYXRoLm1heCh0aGlz Lm5ld2VzdENvbW1lbnRUaW1lc3RhbXAsYyk7Y29weVByb3BlcnRpZXModGhpcy5j b21tZW50SW5mb01hcCxmKTt0aGlzLmF0dGFjaENsaWNrSGFuZGxlcnMoKTt9LHVw ZGF0ZVBvbGxpbmdQYXJhbXNDb21tZW50YXM6ZnVuY3Rpb24oYSl7dGhpcy5yZWFs VGltZVBvbGxpbmdQYXJhbXMuY29tbWVudGFzPWE7fSxhdHRhY2hDbGlja0hhbmRs ZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTA7YTx0aGlzLmRvbUlEcy5sZW5ndGg7 YSsrKXt2YXIgYj0nbGlbaWQ9IicrdGhpcy5kb21JRHNbYV0rJyJdJyxjPURPTS5z Y3J5KHRoaXMuY29udHJvbGxlZFJlZ2lvbixiKTtpZihjLmxlbmd0aD09PTApY29u dGludWU7dmFyIGQ9Y1swXSxlPURPTS5zY3J5KGQsJ2EudWlDbG9zZUJ1dHRvbicp O0V2ZW50Lmxpc3RlbihkLCdtb3VzZWxlYXZlJyx0aGlzLmNsb3NlU3RpY2t5TWVu dUZseW91dHMuYmluZCh0aGlzLGUpKTt2YXIgZj1ET00uc2NyeShkLCcuZmJNb2Rl cmF0ZURyb3Bkb3duQ29udGFpbmVyJyk7aWYoZi5sZW5ndGg+MCl7dmFyIGc9Zlsw XSxoPURPTS5maW5kKGcsJy5mYk1vZGVyYXRlRHJvcGRvd25MaW5rJyk7RXZlbnQu bGlzdGVuKGgsJ21vdXNlb3ZlcicsZnVuY3Rpb24ocSxldmVudCl7Q1NTLmFkZENs YXNzKHEsJ2ZiVW5kZXJsaW5lVGV4dCcpO30uY3VycnkoaCkpO0V2ZW50Lmxpc3Rl bihoLCdtb3VzZW91dCcsZnVuY3Rpb24ocSxldmVudCl7Q1NTLnJlbW92ZUNsYXNz KHEsJ2ZiVW5kZXJsaW5lVGV4dCcpO30uY3VycnkoaCkpO3ZhciBpPURPTS5maW5k KGcsJy5mYk1vZGVyYXRpb25Ecm9wZG93bkxpc3QnKTtFdmVudC5saXN0ZW4oaCwn Y2xpY2snLHRoaXMuZXhwb3NlRHJvcERvd25NZW51LmJpbmQodGhpcyxoLGkpKTtF dmVudC5saXN0ZW4oaS5wYXJlbnROb2RlLCdtb3VzZWxlYXZlJyx0aGlzLmNvbmNl YWxEcm9wRG93bk1lbnUuYmluZCh0aGlzLGgsaSkpO3RoaXMuYXR0YWNoRHJvcERv d25IYW5kbGVycyhkLHRoaXMuY29tbWVudElEc1thXSxpKTt9dmFyIGo9dGhpcy5j b21tZW50SW5mb01hcFt0aGlzLmNvbW1lbnRJRHNbYV1dLmFjdG9yLGs9ISF0aGlz LnJlY2VudGx5QmxhY2tsaXN0ZWRBY3RvcnNbal07aWYoayl7dmFyIGw9RE9NLnNj cnkoZCwnLmZiVW5kb0JsYWNrbGlzdExpbmsnKTtpZihsLmxlbmd0aD4wKXt2YXIg bT1sWzBdO0V2ZW50Lmxpc3RlbihtLCdjbGljaycsdGhpcy50b2dnbGVCbGFja0xp c3RBbmRTeW5jLmJpbmQodGhpcyx0aGlzLmNvbW1lbnRJRHNbYV0pKTt9fX12YXIg bj1ET00uc2NyeSh0aGlzLmNvbnRyb2xsZWRSZWdpb24sJy5mYlJlcGx5QnV0dG9u Jyksbz1ET00uc2NyeSh0aGlzLmNvbnRyb2xsZWRSZWdpb24sJy5mYlJlcGx5QWZ0 ZXJMb2dpbkJ1dHRvbicpO2Zvcih2YXIgcD0wO3A8bi5sZW5ndGg7cCsrKWlmKHRo aXMubG9nZ2VkSW4pe0NTUy5zaG93KG5bcF0pO0NTUy5oaWRlKG9bcF0pO31lbHNl e0NTUy5oaWRlKG5bcF0pO0NTUy5zaG93KG9bcF0pO319LGNsb3NlU3RpY2t5TWVu dUZseW91dHM6ZnVuY3Rpb24oYSxldmVudCl7VG9nZ2xlci5oaWRlKCk7Zm9yKHZh ciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXS5ibHVyKCk7fSxhdHRhY2hEcm9wRG93 bkhhbmRsZXJzOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1ET00uc2NyeShjLCcuZmJC YW5Vc2VyJyk7aWYoZC5sZW5ndGg+MCl7dmFyIGU9ZFswXSxmPURPTS5maW5kKGUs J14uZmJGZWVkYmFja1Bvc3QnKTtpZihzdGFydHNXaXRoKGYuaWQsYikpRXZlbnQu bGlzdGVuKGUsJ2NsaWNrJyx0aGlzLnRvZ2dsZUJsYWNrTGlzdEFuZFN5bmMuYmlu ZCh0aGlzLGIpKTt9fSxleHBvc2VEcm9wRG93bk1lbnU6ZnVuY3Rpb24oYSxiLGV2

ZW50KXtpZihDU1Muc2hvd24oYikpcmV0dXJuIHRoaXMuY29uY2VhbERyb3BEb3du TWVudShhLGIsZXZlbnQpO0V2ZW50LnN0b3AoZXZlbnQpO0NTUy5zaG93KGIpO2Iu Zm9jdXMoKTthLmJsdXIoKTtyZXR1cm4gZmFsc2U7fSxjb25jZWFsRHJvcERvd25N ZW51OmZ1bmN0aW9uKGEsYixldmVudCl7RXZlbnQuc3RvcChldmVudCk7Q1NTLnJl bW92ZUNsYXNzKGEsJ2ZiVW5kZXJsaW5lVGV4dCcpO0NTUy5oaWRlKGIpO2EuYmx1 cigpO3JldHVybiBmYWxzZTt9LHJlZ2lzdGVyTW9yZUNvbW1lbnRzTGlua0hhbmRs ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYWdlcl9pZDtpZighZ2UoYikpcmV0dXJu O3ZhciBjPSQoYik7RXZlbnQubGlzdGVuKGMsJ2NsaWNrJyx0aGlzLmZldGNoTW9y ZUNvbW1lbnRzLmJpbmQodGhpcyxhLGMpKTt9LGRlc2VsZWN0Q29tbWVudHM6ZnVu Y3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspZGVsZXRlIHRoaXMu c2VsZWN0ZWRDb21tZW50c01hcFthW2JdXTt9LHJlZ2lzdGVyTW9kZXJhdG9yUXVl dWVIYW5kbGVyczpmdW5jdGlvbihhKXtpZihhKXRoaXMuc2VsZWN0ZWRDb21tZW50 c01hcD17fTt0aGlzLnNlbGVjdGFibGVDb21tZW50cz10aGlzLmZpbmRTZWxlY3Rh YmxlQ29tbWVudHMoKTt0aGlzLnNlbGVjdGFibGVDaGVja2JveGVzPVtdO3RoaXMu c2VsZWN0QWxsQ2hlY2tCb3hlcz1ET00uc2NyeSh0aGlzLmNvbnRyb2xsZWRSZWdp b24sJy5mYlNlbGVjdEFsbENoZWNrYm94Jyk7dGhpcy5hcHByb3ZlQnV0dG9ucz1E T00uc2NyeSh0aGlzLmNvbnRyb2xsZWRSZWdpb24sJy5mYkFwcHJvdmVCdXR0b24n KTt0aGlzLnJlbW92ZUJ1dHRvbnM9RE9NLnNjcnkodGhpcy5jb250cm9sbGVkUmVn aW9uLCcuZmJSZW1vdmVCdXR0b24nKTtmb3IodmFyIGI9MDtiPHRoaXMuc2VsZWN0 YWJsZUNvbW1lbnRzLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuc2VsZWN0YWJsZUNv bW1lbnRzW2JdLmlkLGQ9ISF0aGlzLnNlbGVjdGVkQ29tbWVudHNNYXBbY107dGhp cy5zZXRDb21tZW50U2VsZWN0aW9uKHRoaXMuc2VsZWN0YWJsZUNvbW1lbnRzW2Jd LGQpO3ZhciBlPURPTS5maW5kKHRoaXMuc2VsZWN0YWJsZUNvbW1lbnRzW2JdLCcu ZmJDb21tZW50Q2hlY2tib3gnKTtFdmVudC5saXN0ZW4oZSwnY2xpY2snLHRoaXMu dG9nZ2xlQ29tbWVudFNlbGVjdGlvbi5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4o dGhpcy5zZWxlY3RhYmxlQ29tbWVudHNbYl0sJ2NsaWNrJyx0aGlzLnRvZ2dsZUNv bW1lbnRTZWxlY3Rpb24uYmluZCh0aGlzKSk7ZS5jaGVja2VkPWQ7dGhpcy5zZWxl Y3RhYmxlQ2hlY2tib3hlcy5wdXNoKGUpO31mb3IodmFyIGY9MDtmPHRoaXMuc2Vs ZWN0QWxsQ2hlY2tCb3hlcy5sZW5ndGg7ZisrKXt0aGlzLnNlbGVjdEFsbENoZWNr Qm94ZXNbZl0uY2hlY2tlZD1mYWxzZTt0aGlzLnNlbGVjdEFsbENoZWNrQm94ZXNb Zl0uZGlzYWJsZWQ9dGhpcy5zZWxlY3RhYmxlQ29tbWVudHMubGVuZ3RoPT09MDtF dmVudC5saXN0ZW4odGhpcy5zZWxlY3RBbGxDaGVja0JveGVzW2ZdLCdjbGljaycs dGhpcy50b2dnbGVTZWxlY3RBbGxDaGVja2JveC5iaW5kKHRoaXMsdGhpcy5zZWxl Y3RBbGxDaGVja0JveGVzW2ZdKSk7fWZvcih2YXIgZz0wO2c8dGhpcy5hcHByb3Zl QnV0dG9ucy5sZW5ndGg7ZysrKUV2ZW50Lmxpc3Rlbih0aGlzLmFwcHJvdmVCdXR0 b25zW2ddLCdjbGljaycsdGhpcy5zZXRCdWxrUHJpdmFjeS5iaW5kKHRoaXMsZmFs c2UpKTtmb3IodmFyIGg9MDtoPHRoaXMucmVtb3ZlQnV0dG9ucy5sZW5ndGg7aCsr KUV2ZW50Lmxpc3Rlbih0aGlzLnJlbW92ZUJ1dHRvbnNbaF0sJ2NsaWNrJyx0aGlz LnNldEJ1bGtQcml2YWN5LmJpbmQodGhpcyx0cnVlKSk7fSxmaW5kU2VsZWN0YWJs ZUNvbW1lbnRzOmZ1bmN0aW9uKCl7dmFyIGE9RE9NLnNjcnkodGhpcy5jb250cm9s bGVkUmVnaW9uLCcuZmJUb3BMZXZlbENvbW1lbnQnKSxiPVtdO2Zvcih2YXIgYz0w O2M8YS5sZW5ndGg7YysrKWlmKChET00uc2NyeShhW2NdLCcuZmJDb21tZW50Q2hl Y2tib3gnKS5sZW5ndGg9PT0xKSYmKERPTS5zY3J5KGFbY10sJy5mYkNvbW1lbnRP dmVybGF5JykubGVuZ3RoPT09MCkpYi5wdXNoKGFbY10pO3JldHVybiBiO30sdG9n Z2xlQ29tbWVudFNlbGVjdGlvbjpmdW5jdGlvbihldmVudCl7dmFyIGE9e2E6dHJ1 ZX0sYj1ldmVudC5nZXRUYXJnZXQoKSxjPWIudGFnTmFtZS50b0xvd2VyQ2FzZSgp LGQ9Yi5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihhW2NdfHxh W2RdKXJldHVybjt2YXIgZT1DU1MuaGFzQ2xhc3MoYiwnZmJGZWVkYmFja1Bvc3Qn KT9iOkRPTS5maW5kKGIsJ14uZmJGZWVkYmFja1Bvc3QnKSxmPXRoaXMuY29tbWVu dElzU2VsZWN0ZWQoZSksZz0hZjt0aGlzLnNldENvbW1lbnRTZWxlY3Rpb24oZSxn KTt0aGlzLnN5bmNocm9uaXplTW9kZXJhdG9yUXVldWVVSSgpO2lmKENTUy5oYXND bGFzcyhiLCdmYkNvbW1lbnRDaGVja2JveCcpKUV2ZW50LnN0b3AoZXZlbnQpO30s Y29tbWVudElzU2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIENTUy5oYXNDbGFz cyhhLCdmYkNvbW1lbnRTZWxlY3RlZCcpO30sc2V0Q29tbWVudFNlbGVjdGlvbjpm dW5jdGlvbihhLGIpe2lmKGIpe3RoaXMuc2VsZWN0Q29tbWVudChhKTt9ZWxzZSB0 aGlzLmRlc2VsZWN0Q29tbWVudChhKTt9LHNlbGVjdENvbW1lbnQ6ZnVuY3Rpb24o YSl7Q1NTLmFkZENsYXNzKGEsJ2ZiQ29tbWVudFNlbGVjdGVkJyk7dGhpcy5zZWxl Y3RlZENvbW1lbnRzTWFwW2EuaWRdPXRydWU7RE9NLmZpbmQoYSwnLmZiQ29tbWVu dENoZWNrYm94JykuY2hlY2tlZD10cnVlO30sZGVzZWxlY3RDb21tZW50OmZ1bmN0 aW9uKGEpe0NTUy5yZW1vdmVDbGFzcyhhLCdmYkNvbW1lbnRTZWxlY3RlZCcpO2Rl

bGV0ZSB0aGlzLnNlbGVjdGVkQ29tbWVudHNNYXBbYS5pZF07RE9NLmZpbmQoYSwn LmZiQ29tbWVudENoZWNrYm94JykuY2hlY2tlZD1mYWxzZTt9LHRvZ2dsZVNlbGVj dEFsbENoZWNrYm94OmZ1bmN0aW9uKGEsZXZlbnQpe0V2ZW50LnN0b3AoZXZlbnQp O3ZhciBiPWEuY2hlY2tlZDtmb3IodmFyIGM9MDtjPHRoaXMuc2VsZWN0YWJsZUNv bW1lbnRzLmxlbmd0aDtjKyspe3RoaXMuc2V0Q29tbWVudFNlbGVjdGlvbih0aGlz LnNlbGVjdGFibGVDb21tZW50c1tjXSxhLmNoZWNrZWQpO3RoaXMuc2VsZWN0YWJs ZUNoZWNrYm94ZXNbY10uY2hlY2tlZD1iO310aGlzLnN5bmNocm9uaXplQnVsa01v ZGVyYXRpb25DaGVja2JveGVzKGIpO3RoaXMuc3luY2hyb25pemVCdWxrTW9kZXJh dGlvbkJ1dHRvbnMoYik7fSxzeW5jaHJvbml6ZU1vZGVyYXRvclF1ZXVlVUk6ZnVu Y3Rpb24oKXt2YXIgYT0wO2Zvcih2YXIgYj0wO2I8dGhpcy5zZWxlY3RhYmxlQ2hl Y2tib3hlcy5sZW5ndGg7YisrKWlmKHRoaXMuc2VsZWN0YWJsZUNoZWNrYm94ZXNb Yl0uY2hlY2tlZClhKys7dmFyIGM9dGhpcy5zZWxlY3RhYmxlQ2hlY2tib3hlcy5s ZW5ndGg+MCYmYT09dGhpcy5zZWxlY3RhYmxlQ2hlY2tib3hlcy5sZW5ndGg7dGhp cy5zeW5jaHJvbml6ZUJ1bGtNb2RlcmF0aW9uQ2hlY2tib3hlcyhjKTt0aGlzLnN5 bmNocm9uaXplQnVsa01vZGVyYXRpb25CdXR0b25zKGE+MCk7fSxzeW5jaHJvbml6 ZUJ1bGtNb2RlcmF0aW9uQ2hlY2tib3hlczpmdW5jdGlvbihhKXtmb3IodmFyIGI9 MDtiPHRoaXMuc2VsZWN0QWxsQ2hlY2tCb3hlcy5sZW5ndGg7YisrKXRoaXMuc2Vs ZWN0QWxsQ2hlY2tCb3hlc1tiXS5jaGVja2VkPWE7fSxzeW5jaHJvbml6ZUJ1bGtN b2RlcmF0aW9uQnV0dG9uczpmdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMu YXBwcm92ZUJ1dHRvbnMubGVuZ3RoO2IrKylCdXR0b24uc2V0RW5hYmxlZCh0aGlz LmFwcHJvdmVCdXR0b25zW2JdLGEpO2Zvcih2YXIgYz0wO2M8dGhpcy5yZW1vdmVC dXR0b25zLmxlbmd0aDtjKyspQnV0dG9uLnNldEVuYWJsZWQodGhpcy5yZW1vdmVC dXR0b25zW2NdLGEpO30sc2V0QnVsa1ByaXZhY3k6ZnVuY3Rpb24oYSxldmVudCl7 RXZlbnQuc3RvcChldmVudCk7dGhpcy5zeW5jaHJvbml6ZUJ1bGtNb2RlcmF0aW9u QnV0dG9ucyhmYWxzZSk7c2VsZWN0ZWRDb21tZW50SURzPVtdO2Zvcih2YXIgYiBp biB0aGlzLnNlbGVjdGVkQ29tbWVudHNNYXApc2VsZWN0ZWRDb21tZW50SURzLnB1 c2goYik7dmFyIGM9e2lzX3ByaXZhdGU6YSxpbl9tb2RlcmF0aW9uX3F1ZXVlOnRy dWUsY29tbWVudF9pZHM6c2VsZWN0ZWRDb21tZW50SURzLHVuaXFpZHM6c2VsZWN0 ZWRDb21tZW50SURzLGNvbnRyb2xsZXJfaWQ6dGhpcy5jb250cm9sbGVySUQsbG9j YWxlOnRoaXMubG9jYWxlLG93bnNfcGFnZXM6dGhpcy51c2VyT3duc1BhZ2VzLGlu X2FnZ3JlZ2F0ZWRfdmlldzp0aGlzLmluQWdncmVnYXRlZFZpZXcsaW5fY29udGV4 dHVhbF9kaWFsb2c6dGhpcy5pbkNvbnRleHR1YWxEaWFsb2d9O25ldyBBc3luY1Jl cXVlc3QoKS5zZXRVUkkoJy9hamF4L2Nvbm5lY3QvY29tbWVudHMvc2V0X2J1bGtf cHJpdmF0ZS5waHAnKS5zZXREYXRhKGMpLnNlbmQoKTtyZXR1cm4gZmFsc2U7fSx0 b2dnbGVCbGFja0xpc3RBbmRTeW5jOmZ1bmN0aW9uKGEsZXZlbnQpe0V2ZW50LnN0 b3AoZXZlbnQpO3ZhciBiPXRoaXMuY29tbWVudEluZm9NYXBbYV0uYWN0b3IsYz17 YmxhY2tsaXN0OiF0aGlzLmJsYWNrbGlzdGVkQWN0b3JzW2JdLGluX21vZGVyYXRp b25fcXVldWU6dGhpcy5pbk1vZGVyYXRpb25RdWV1ZSxjb21tZW50X2lkOmEsb3Ro ZXJfY29tbWVudF9pZHM6dGhpcy5nZXRPdGhlckNvbW1lbnRzQnlBY3RvcihiLGEp LHVuaXFpZDphLGNvbnRyb2xsZXJfaWQ6dGhpcy5jb250cm9sbGVySUQsbG9jYWxl OnRoaXMubG9jYWxlLG93bnNfcGFnZXM6dGhpcy51c2VyT3duc1BhZ2VzLGluX2Fn Z3JlZ2F0ZWRfdmlldzp0aGlzLmluQWdncmVnYXRlZFZpZXcsaW5fY29udGV4dHVh bF9kaWFsb2c6dGhpcy5pbkNvbnRleHR1YWxEaWFsb2d9O25ldyBBc3luY1JlcXVl c3QoKS5zZXRVUkkoJy9hamF4L2Nvbm5lY3QvY29tbWVudHMvc2V0X2JsYWNrbGlz dC5waHAnKS5zZXREYXRhKGMpLnNldEhhbmRsZXIoZnVuY3Rpb24oZCl7dGhpcy5i bGFja2xpc3RlZEFjdG9yc1tiXT0hdGhpcy5ibGFja2xpc3RlZEFjdG9yc1tiXTtp Zih0aGlzLmJsYWNrbGlzdGVkQWN0b3JzW2JdKXt0aGlzLnJlY2VudGx5QmxhY2ts aXN0ZWRBY3RvcnNbYl09dHJ1ZTt9ZWxzZSBkZWxldGUgdGhpcy5yZWNlbnRseUJs YWNrbGlzdGVkQWN0b3JzW2JdO30uYmluZCh0aGlzKSkuc2VuZCgpO3JldHVybiBm YWxzZTt9LGdldE90aGVyQ29tbWVudHNCeUFjdG9yOmZ1bmN0aW9uKGEsYil7cmV0 dXJuIHRoaXMuYWN0b3JUb0NvbW1lbnRJbmZvTWFwW2FdLmZpbHRlcihmdW5jdGlv bihjKXtyZXR1cm4gYyE9Yjt9KTt9LGZldGNoTW9yZUNvbW1lbnRzOmZ1bmN0aW9u KGEsYixldmVudCl7RXZlbnQua2lsbChldmVudCk7Q1NTLmFkZENsYXNzKGIsJ2Fz eW5jX3NhdmluZycpO2lmKHRoaXMuZmV0Y2hNb3JlQ29tbWVudHNJc1BlbmRpbmdb YS5wYWdlcl9pZF09PT10cnVlKXJldHVybjt0aGlzLmZldGNoTW9yZUNvbW1lbnRz SXNQZW5kaW5nW2EucGFnZXJfaWRdPXRydWU7dmFyIGM9e2lzX3JlcGx5X3RocmVh ZDpmYWxzZSxpbl9tb2RlcmF0aW9uX3F1ZXVlOmZhbHNlLHZpZXdfYXNfbW9kZXJh dG9yOmZhbHNlfTtjb3B5UHJvcGVydGllcyhjLGEpO2MucmVjZW50bHlfYmxhY2ts aXN0ZWQ9dGhpcy5nZXRSZWNlbnRseUJsYWNrbGlzdGVkQWN0b3JzKCk7Yy5vZmZz ZXQ9dGhpcy5nZXRWaXNpYmxlQ29tbWVudENvdW50KGMpO2lmKCFjLmFnZ3JlZ2F0

ZV92aWV3KWRlbGV0ZSBjLmFnZ3JlZ2F0ZV92aWV3O2lmKCFjLmNvbW1lbnRfaWQp ZGVsZXRlIGMuY29tbWVudF9pZDtpZighYy5pc19yZXBseV90aHJlYWQpYy5jb21t ZW50X2lkcz10aGlzLmNvbW1lbnRJRHM7bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVS SSgnL2FqYXgvY29ubmVjdC9mZWVkYmFjay5waHAnKS5zZXRSZWFkT25seSh0cnVl KS5zZXREYXRhKGMpLnNldEhhbmRsZXIoZnVuY3Rpb24oZCl7dGhpcy5mZXRjaE1v cmVDb21tZW50c0lzUGVuZGluZ1thLnBhZ2VyX2lkXT1mYWxzZTt9LmJpbmQodGhp cykpLnNlbmQoKTt9LGdldFZpc2libGVDb21tZW50Q291bnQ6ZnVuY3Rpb24oYSl7 dmFyIGI9dGhpcy5nZXRDb21tZW50c1NlbGVjdG9yKGEpLGM9dGhpcy5nZXRDb2xs YXBzZWRDb21tZW50c1NlbGVjdG9yKGEpLGQ9RE9NLnNjcnkoJChhLmNvbnRyb2xs ZXJfaWQpLGIpO2Q9ZC5jb25jYXQoRE9NLnNjcnkoJChhLmNvbnRyb2xsZXJfaWQp LGMpKTt2YXIgZT0wO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKWlmKCFDU1Mu aGFzQ2xhc3MoZFtmXSwnZmJDb21tZW50SWdub3JlZCcpKWUrKztyZXR1cm4gZTt9 LGdldENvbW1lbnRzU2VsZWN0b3I6ZnVuY3Rpb24oYSl7dmFyIGI9YS5pc19yZXBs eV90aHJlYWQ/J2xpLmZiQ29tbWVudFJlcGx5JzonbGkuZmJUb3BMZXZlbENvbW1l bnQnO2lmKGEuY29udHJvbGxlcl9pZCE9YS51bmlxaWQpYj0nZGl2W2lkPSInK2Eu dW5pcWlkKyciXSAnK2I7cmV0dXJuIGI7fSxnZXRDb2xsYXBzZWRDb21tZW50c1Nl bGVjdG9yOmZ1bmN0aW9uKGEpe3ZhciBiPWEuaXNfcmVwbHlfdGhyZWFkPydkaXYu ZmJDb21tZW50UmVwbHknOidkaXYuZmJUb3BMZXZlbENvbW1lbnQnO2lmKGEuY29u dHJvbGxlcl9pZCE9YS51bmlxaWQpYj0nZGl2W2lkPSInK2EudW5pcWlkKyciXSAn K2I7cmV0dXJuIGI7fSxnZXRSZWNlbnRseUJsYWNrbGlzdGVkQWN0b3JzOmZ1bmN0 aW9uKCl7dmFyIGE9W107Zm9yKHZhciBiIGluIHRoaXMucmVjZW50bHlCbGFja2xp c3RlZEFjdG9ycylhLnB1c2goYik7cmV0dXJuIGE7fSxhdHRhY2hDb250ZXh0dWFs RGlhbG9nSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLmRvY3VtZW50Q2xpY2tMaXN0 ZW5lcj1FdmVudC5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdjbGlj aycsdGhpcy5jbG9zZUNvbnRleHR1YWxEaWFsb2cuYmluZCh0aGlzKSk7fSxjbG9z ZUNvbnRleHR1YWxEaWFsb2c6ZnVuY3Rpb24oZXZlbnQpe3ZhciBhPWV2ZW50Lmdl dFRhcmdldCgpLGI9UGFyZW50LmJ5Q2xhc3MoYSwnZmJDb21tZW50Q29udGV4dCcp O2lmKCFiKXRoaXMuZGVzdHJveUNvbnRleHR1YWxEaWFsb2coKTt9LGRlc3Ryb3lD b250ZXh0dWFsRGlhbG9nOmZ1bmN0aW9uKCl7dGhpcy5kb2N1bWVudENsaWNrTGlz dGVuZXIucmVtb3ZlKCk7ZGVsZXRlIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVy O3ZhciBhPXRoaXMuY29udHJvbGxlcklEO0ZlZWRiYWNrLmNsb3NlQ29udGV4dHVh bERpYWxvZyhhKTt9LHNldFJlYWxUaW1lUG9sbGluZ1BhcmFtczpmdW5jdGlvbihh KXt0aGlzLnJlYWxUaW1lUG9sbGluZ1BhcmFtcz1hO30sZW5hYmxlVG9wTGV2ZWxD b21tZW50UG9sbGluZzpmdW5jdGlvbigpe3RoaXMuaXNUb3BMZXZlbENvbW1lbnRQ b2xsaW5nRW5hYmxlZD10cnVlO30sZGlzYWJsZVRvcExldmVsQ29tbWVudFBvbGxp bmc6ZnVuY3Rpb24oKXt0aGlzLmlzVG9wTGV2ZWxDb21tZW50UG9sbGluZ0VuYWJs ZWQ9ZmFsc2U7fSxhcHBlbmRDb21tZW50czpmdW5jdGlvbihhLGIpe3ZhciBjPWdl KGEpO2lmKCFjKXJldHVybjt2YXIgZD1ET00uc2NyeShjLCcuZmJGZWVkYmFja1Jl cGxpZXMnKVswXTtpZighZClyZXR1cm47RE9NLmFwcGVuZENvbnRlbnQoZCxiKTt9 LHByZXBlbmRDb21tZW50czpmdW5jdGlvbihhLGIpe3ZhciBjPURPTS5zY3J5KGRv Y3VtZW50LmRvY3VtZW50RWxlbWVudCxhKVswXTtpZighYylyZXR1cm47dmFyIGQ9 Yi5nZXROb2RlcygpLGU9W107Zm9yKHZhciBmPWQubGVuZ3RoO2YtLT4wOyl7dmFy IGc9e2lkOkRPTS5nZXRJRChkW2ZdKSxlbGVtZW50OmRbZl19O2UucHVzaChnKTt2 YXIgaD1nZShnLmlkKTtpZihoKXtDU1MuaGlkZShnLmVsZW1lbnQpO3RoaXMuZHVw bGljYXRlQ29tbWVudHMucHVzaChnLmVsZW1lbnQpO2Zvcih2YXIgaT0wO2k8ZS5s ZW5ndGg7KytpKURPTS5pbnNlcnRBZnRlcihoLGVbaV0uZWxlbWVudCk7ZT1bXTt9 fWZvcihmPTA7ZjxlLmxlbmd0aDsrK2YpRE9NLnByZXBlbmRDb250ZW50KGMsZVtm XS5lbGVtZW50KTtzZXRUaW1lb3V0KHRoaXMucmVtb3ZlRHVwbGljYXRlQ29tbWVu dHMuYmluZCh0aGlzKSwwKTt9LHJlbW92ZUR1cGxpY2F0ZUNvbW1lbnRzOmZ1bmN0 aW9uKCl7Zm9yKHZhciBhPTA7YTx0aGlzLmR1cGxpY2F0ZUNvbW1lbnRzLmxlbmd0 aDsrK2EpRE9NLnJlbW92ZSh0aGlzLmR1cGxpY2F0ZUNvbW1lbnRzW2FdKTt0aGlz LmR1cGxpY2F0ZUNvbW1lbnRzPVtdO30scG9sbEZvckNvbW1lbnRzOmZ1bmN0aW9u KGEpe2RhdGE9e2xvY2FsZTp0aGlzLmxvY2FsZX07Y29weVByb3BlcnRpZXMoZGF0 YSxhKTtpZighZGF0YS5pc19yZXBseV90aHJlYWQpZGF0YS5jb21tZW50X2lkcz10 aGlzLmNvbW1lbnRJRHM7ZGF0YS5uZXdlc3RfY29tbWVudF90aW1lc3RhbXA9dGhp cy5uZXdlc3RDb21tZW50VGltZXN0YW1wO2hhbmRsZXI9dGhpcy5oYW5kbGVQb2xs UmVzcG9uc2UuYmluZCh0aGlzKTtlcnJvckhhbmRsZXI9dGhpcy5oYW5kbGVQb2xs RXJyb3IuYmluZCh0aGlzKTtmaW5hbGx5SGFuZGxlcj10aGlzLmhhbmRsZVBvbGxG aW5hbGx5LmJpbmQodGhpcyk7bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSSgnL3Bs dWdpbnMvY29tbWVudHMvcG9sbCcpLnNldFJlYWRPbmx5KHRydWUpLnNldERhdGEo

ZGF0YSkuc2V0TWV0aG9kKCdHRVQnKS5zZXRIYW5kbGVyKGhhbmRsZXIpLnNldEVy cm9ySGFuZGxlcihlcnJvckhhbmRsZXIpLnNldEZpbmFsbHlIYW5kbGVyKGZpbmFs bHlIYW5kbGVyKS5zZW5kKCk7fSxoYW5kbGVQb2xsUmVzcG9uc2U6ZnVuY3Rpb24o YSl7fSxoYW5kbGVQb2xsRXJyb3I6ZnVuY3Rpb24oYSl7fSxoYW5kbGVQb2xsRmlu YWxseTpmdW5jdGlvbihhKXt9fSk7fQpXaW5kb3dDb21tPXtfY2FsbGJhY2tzOnt9 LG1ha2VIYW5kbGVyOmZ1bmN0aW9uKGEsYil7Yj1ifHwnb3BlbmVyJzt2YXIgYz0n ZicrKE1hdGgucmFuZG9tKCkqKDE8PDMwKSkudG9TdHJpbmcoMTYpLnJlcGxhY2Uo Jy4nLCcnKTtXaW5kb3dDb21tLl9jYWxsYmFja3NbY109YTtyZXR1cm4gbmV3IFVS SSgnL2Nvbm5lY3Qvd2luZG93X2NvbW0ucGhwJykuc2V0UXVlcnlEYXRhKHtfaWQ6 YyxfcmVsYXRpb246Yn0pLmdldFF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCk7fSxf cmVjdjpmdW5jdGlvbihhKXt2YXIgYj1uZXcgVVJJKGEpLmdldFF1ZXJ5RGF0YSgp O1dpbmRvd0NvbW0uX2NhbGxiYWNrc1tiLl9pZF0oYik7fX07Cl9fZCgiUG9wdXBX aW5kb3ciLFsiRE9NRGltZW5zaW9ucyIsIkRPTVF1ZXJ5IiwiVXNlckFnZW50Iiwi Y29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign RE9NRGltZW5zaW9ucycpLGg9YignRE9NUXVlcnknKSxpPWIoJ1VzZXJBZ2VudCcp LGo9YignY29weVByb3BlcnRpZXMnKSxrPXtfb3B0czp7YWxsb3dTaHJpbms6dHJ1 ZSxzdHJhdGVneTondmVjdG9yJyx0aW1lb3V0OjEwMCx3aWR0aEVsZW1lbnQ6bnVs bH0saW5pdDpmdW5jdGlvbihsKXtqKGsuX29wdHMsbCk7c2V0SW50ZXJ2YWwoay5f cmVzaXplQ2hlY2ssay5fb3B0cy50aW1lb3V0KTt9LF9yZXNpemVDaGVjazpmdW5j dGlvbigpe3ZhciBsPWcuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCksbT1rLl9nZXRE b2N1bWVudFNpemUoKSxuPW0uaGVpZ2h0LWwuaGVpZ2h0LG89bS53aWR0aC1sLndp ZHRoO2lmKG88MCYmIWsuX29wdHMud2lkdGhFbGVtZW50KW89MDtvPW8+MT9vOjA7 aWYoIWsuX29wdHMuYWxsb3dTaHJpbmsmJm48MCluPTA7aWYobnx8byl0cnl7d2lu ZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmZpcmVidWc7d2luZG93LnJlc2l6 ZUJ5KG8sbik7aWYobyl3aW5kb3cubW92ZUJ5KG8vLTIsMCk7fWNhdGNoKHApe319 LF9nZXREb2N1bWVudFNpemU6ZnVuY3Rpb24oKXt2YXIgbD1nLmdldERvY3VtZW50 RGltZW5zaW9ucygpO2lmKGsuX29wdHMuc3RyYXRlZ3k9PT0nb2Zmc2V0SGVpZ2h0 JylsLmhlaWdodD1kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDtpZihrLl9vcHRz LndpZHRoRWxlbWVudCl7dmFyIG09aC5zY3J5KGRvY3VtZW50LmJvZHksay5fb3B0 cy53aWR0aEVsZW1lbnQpWzBdO2lmKG0pbC53aWR0aD1nLmdldEVsZW1lbnREaW1l bnNpb25zKG0pLndpZHRoO31pZih3aW5kb3cuRGlhbG9nJiZEaWFsb2cubWF4X2Jv dHRvbSYmRGlhbG9nLm1heF9ib3R0b20+bC5oZWlnaHQpbC5oZWlnaHQ9RGlhbG9n Lm1heF9ib3R0b207cmV0dXJuIGw7fSxvcGVuOmZ1bmN0aW9uKGwsbSxuKXt2YXIg bz10eXBlb2Ygd2luZG93LnNjcmVlblghPSd1bmRlZmluZWQnP3dpbmRvdy5zY3Jl ZW5YOndpbmRvdy5zY3JlZW5MZWZ0LHA9dHlwZW9mIHdpbmRvdy5zY3JlZW5ZIT0n dW5kZWZpbmVkJz93aW5kb3cuc2NyZWVuWTp3aW5kb3cuc2NyZWVuVG9wLHE9dHlw ZW9mIHdpbmRvdy5vdXRlcldpZHRoIT0ndW5kZWZpbmVkJz93aW5kb3cub3V0ZXJX aWR0aDpkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLHI9dHlwZW9mIHdpbmRvdy5v dXRlckhlaWdodCE9J3VuZGVmaW5lZCc/d2luZG93Lm91dGVySGVpZ2h0Oihkb2N1 bWVudC5ib2R5LmNsaWVudEhlaWdodC0yMikscz1wYXJzZUludChvKygocS1uKS8y KSwxMCksdD1wYXJzZUludChwKygoci1tKS8yLjUpLDEwKSx1PSgnd2lkdGg9Jytu KycsaGVpZ2h0PScrbSsnLGxlZnQ9JytzKycsdG9wPScrdCk7cmV0dXJuIHdpbmRv dy5vcGVuKGwsJ19ibGFuaycsdSk7fX07ZS5leHBvcnRzPWs7fSk7Cl9fZCgibGVn YWN5OnBvcHVwLXJlc2l6ZXIiLFsiUG9wdXBXaW5kb3ciXSxmdW5jdGlvbihhLGIs YyxkKXthLlBvcHVwUmVzaXplcj1iKCdQb3B1cFdpbmRvdycpO30sMyk7CkNvbm5l Y3RMb2dpbj17aW5pdDpmdW5jdGlvbihhKXt0aGlzLmFwcElEPWEuYXBwSUQ7dGhp cy5hZGRUb1Byb2ZpbGU9YS5hZGRUb1Byb2ZpbGU7dGhpcy5vbmVDbGljaz1hLm9u ZUNsaWNrO3RoaXMuY2hhbm5lbFVybD1hLmNoYW5uZWxVcmw7WEQuaW5pdChhKTt9 LGxvZ2luOmZ1bmN0aW9uKGEsYixjKXtpZih0aGlzLm9uZUNsaWNrJiYhYil7dGhp cy5fb25lQ2xpY2soYSk7fWVsc2UgdGhpcy5fb3BlblBvcHVwKGEsYixjKTt9LGxv Z291dDpmdW5jdGlvbigpe1hELnNlbmQoe3R5cGU6J2xvZ291dCd9KTt9LF9vbmVD bGljazpmdW5jdGlvbihhKXtuZXcgQXN5bmNSZXF1ZXN0KCkuc2V0VVJJKCcvYWph eC9hcGkvdG9zLnBocCcpLnNldERhdGEoe2FwcF9pZDp0aGlzLmFwcElELGdyYW50 X3Blcm06MX0pLnNldEhhbmRsZXIoZnVuY3Rpb24oYil7Q29ubmVjdExvZ2luLl9y ZWZyZXNoTG9naW5TdGF0dXMoKTthJiZhKCk7fSkuc2VuZCgpO30sX29wZW5Qb3B1 cDpmdW5jdGlvbihhLGIsYyl7Yz1jfHx7fTt2YXIgZD1XaW5kb3dDb21tLm1ha2VI YW5kbGVyKGZ1bmN0aW9uKGgpe0Nvbm5lY3RMb2dpbi5fY2xvc2VQb3B1cCgpO2lm KENvbm5lY3RMb2dpbi5hcHBJRClDb25uZWN0TG9naW4uX3JlZnJlc2hMb2dpblN0 YXR1cygpO2EmJmEoKTt9KSxlPVdpbmRvd0NvbW0ubWFrZUhhbmRsZXIoZnVuY3Rp b24oaCl7Q29ubmVjdExvZ2luLl9jbG9zZVBvcHVwKCk7fSksZj1uZXcgVVJJKCcv

bG9naW4ucGhwJyk7Zi5zZXRRdWVyeURhdGEoe2FwaV9rZXk6dGhpcy5hcHBJRCxu ZXh0OmQsY2hhbm5lbF91cmw6ZSxjYW5jZWxfdXJsOmUscmVxX3Blcm1zOmIsdjon MS4wJyxmYmNvbm5lY3Q6MSxhZGRfdG9fcHJvZmlsZTp0aGlzLmFkZFRvUHJvZmls ZSxkaXNwbGF5Oidwb3B1cCd9KTtmLmFkZFF1ZXJ5RGF0YShjKTt2YXIgZz10aGlz Ll9nZXRTaXplKGMpO3RoaXMuX3BvcHVwPVBvcHVwUmVzaXplci5vcGVuKGYudG9T dHJpbmcoKSxnLmhlaWdodCxnLndpZHRoKTt9LF9jbG9zZVBvcHVwOmZ1bmN0aW9u KCl7aWYodGhpcy5fcG9wdXApe3RoaXMuX3BvcHVwLmNsb3NlKCk7dGhpcy5fcG9w dXA9bnVsbDt9fSxfcmVmcmVzaExvZ2luU3RhdHVzOmZ1bmN0aW9uKCl7aWYodGhp cy5jaGFubmVsVXJsKXtYRC5zZW5kKHt0eXBlOidyZWZyZXNoTG9naW5TdGF0dXMn fSk7fWVsc2Ugd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO30sX2dldFNpemU6ZnVu Y3Rpb24oYSl7aWYoYS5zb2NpYWxfcGx1Z2luPT0ncmVnaXN0cmF0aW9uJyl7cmV0 dXJuIHt3aWR0aDo2NDAsaGVpZ2h0OjM3MH07fWVsc2UgcmV0dXJuIHt3aWR0aDo2 MTAsaGVpZ2h0OjI4MH07fX07CmFkZF9wcm9wZXJ0aWVzKCdGZWVkYmFjaycse3Jl Z2lzdGVyQ29tbWVudDpmdW5jdGlvbihhLGIpe0ZlZWRiYWNrLmNvbW1lbnRzW2Fd PWI7cmV0dXJuIEZlZWRiYWNrO30sZ2V0UmVnaXN0ZXJlZENvbW1lbnQ6ZnVuY3Rp b24oYSl7cmV0dXJuIEZlZWRiYWNrLmNvbW1lbnRzW2FdO30sZGVsZXRlQ2xpY2tI YW5kbGVyOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1uZXcgRGlhbG9nKCku c2V0VGl0bGUoIkhhcHVzIGtpcmltYW4/Iikuc2V0Qm9keSgiWWFraW4gaW5naW4g bWVuZ2hhcHVzIGtpcmltYW4gaW5pPyIpLnNldEJ1dHRvbnMoW0RpYWxvZy5uZXdC dXR0b24oJ2RlbGV0ZScsIkhhcHVzIiksRGlhbG9nLkNBTkNFTF0pLnNldEhhbmRs ZXIoZnVuY3Rpb24oZXZlbnQpe25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoJy9h amF4L2Nvbm5lY3QvZmVlZGJhY2sucGhwJykuc2V0RGF0YSh7Y29tbWFuZDonZGVs ZXRlJyx1cmw6YSx1bmlxaWQ6ZCxvd25zX3BhZ2VzOmUsY29udHJvbGxlcl9pZDpj LGxvY2FsZTpmLGNvbW1lbnRfaWQ6Yn0pLnNlbmQoKTt9LmJpbmQodGhpcykpLnNo b3coKTt9LHJlc2l6ZUNvbW1lbnRhczpmdW5jdGlvbihhKXt2YXIgYj1ET00uc2Ny eShhLCdkaXYucG9zdCcpWzBdO2lmKGIpe3ZhciBjPVZlY3RvcjIuZ2V0RWxlbWVu dERpbWVuc2lvbnMoYikueDtpZihjKXt2YXIgZD1ET00uZmluZChiLCcuY29tbWVu dGFzJyksZT1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKGQpLng7aWYoKGMt ZSk8MTkwJiYoYy0xOTApPjYwKXtTdHlsZS5zZXQoZCwnd2lkdGgnLGMtMTkwKydw eCcpO3ZhciBmPURPTS5zY3J5KGQsJ3NwYW4uY29tbWVudGFzX2lubmVyJylbMF07 aWYoZil7dmFyIGc9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyhmKS54O1N0 eWxlLnNldChkLCd3aWR0aCcsZysncHgnKTt9fX19fSxleHBvc2VDb250ZXh0dWFs RGlhbG9nUmVwbHk6ZnVuY3Rpb24oYSl7dmFyIGI9JChhKSxjPWIucGFyZW50Tm9k ZS5wYXJlbnROb2RlO0NTUy5zaG93KERPTS5maW5kKGMsImZvcm0iKSk7RE9NLmZp bmQoYywidGV4dGFyZWEiKS5mb2N1cygpO3JldHVybiBmYWxzZTt9LGNvbmNlYWxD b250ZXh0dWFsRGlhbG9nUmVwbHk6ZnVuY3Rpb24oYSl7dmFyIGI9JChhKSxjPWIu cGFyZW50Tm9kZS5wYXJlbnROb2RlLGQ9RE9NLmZpbmQoYywiZm9ybSIpLGU9RE9N LmZpbmQoYywidGV4dGFyZWEiKSxmPWUudmFsdWUubGVuZ3RoO2lmKCFJbnB1dC5n ZXRWYWx1ZShlKSlDU1MuaGlkZShkKTtyZXR1cm4gZmFsc2U7fSxjbG9zZUNvbnRl eHR1YWxEaWFsb2c6ZnVuY3Rpb24oYSl7dmFyIGI9Q29udGV4dHVhbERpYWxvZ1gu Z2V0SW5zdGFuY2UoJChhKSk7Yi5oaWRlKCk7cmV0dXJuIGZhbHNlO30sX2NsaWNr TG9ja2VkOmZhbHNlLGF0dGFjaE9wdEluQ2xpY2tMaXN0ZW5lcjpmdW5jdGlvbihh KXtFdmVudC5saXN0ZW4oYSwnY2xpY2snLGZ1bmN0aW9uKGIpe0V2ZW50LmtpbGwo Yik7aWYoIXRoaXMuX2NsaWNrTG9ja2VkKXt0aGlzLl9jbGlja0xvY2tlZD10cnVl O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl9jbGlja0xvY2tlZD1mYWxzZTt9 LmJpbmQodGhpcyksMTAwMCk7UGxhdGZvcm1PcHRJblBvcHVwLm9wZW4oJ2ZlZWRi YWNrJywnb3B0LmluJyk7fX0pO30sYXR0YWNoUmVwbHlMaXN0ZW5lcjpmdW5jdGlv bihhKXtpZighYSlyZXR1cm47dmFyIGI9RE9NLmZpbmQoYSwndGV4dGFyZWEnKTth LnN1cHByZXNzQmx1cj1mYWxzZTtFdmVudC5saXN0ZW4oYSwnY2xpY2snLGZ1bmN0 aW9uKGMpe3ZhciBkPWMuZ2V0VGFyZ2V0KCksZT1QYXJlbnQuYnlDbGFzcyhkLCdj b21tZW50YXMnKSE9PW51bGwsZj1QYXJlbnQuYnlDbGFzcyhkLCd1aUJ1dHRvbicp IT09bnVsbCxnPVBhcmVudC5ieUNsYXNzKGQsJ3VpU2VsZWN0b3InKSE9PW51bGw7 YS5zdXBwcmVzc0JsdXI9ZXx8Znx8Zzt9KTtFdmVudC5saXN0ZW4oYiwnYmx1cics ZnVuY3Rpb24oYyxkKXtpZihhLmludGVydmFsKXJldHVybjthLmludGVydmFsPXNl dEludGVydmFsKChmdW5jdGlvbihlLGYpe2lmKGUuc3VwcHJlc3NCbHVyfHxJbnB1 dC5nZXRWYWx1ZShmKXx8Zj09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudClyZXR1cm47 Q1NTLmhpZGUoZSk7ZS5zdXBwcmVzc0JsdXI9ZmFsc2U7Y2xlYXJJbnRlcnZhbChl LmludGVydmFsKTtkZWxldGUgZS5pbnRlcnZhbDt9KS5jdXJyeShhLGMpLDEwMCk7 fS5jdXJyeShiKSk7fSxhdHRhY2hSZXBseUNsaWNrTGlzdGVuZXI6ZnVuY3Rpb24o YSxiLGMpe2lmKCFhKXJldHVybjt2YXIgZD1ET00uZmluZChhLCd0ZXh0YXJlYScp

O0V2ZW50Lmxpc3RlbihiLCdjbGljaycsZnVuY3Rpb24oZSl7Q1NTLnNob3coYSk7 ZC5mb2N1cygpO2lmKCFjLmlzVmlld2VyJiZjLmlzUmVwbHkpe3ZhciBmPU1lbnRp b25zSW5wdXQuZ2V0SW5zdGFuY2UoZCk7aWYoZil7dmFyIGc9Zi5nZXRNZW50aW9u cygpO2lmKCFnW2MudWlkXSYmSW5wdXQuZ2V0VmFsdWUoZCk9PT0nJyl7Zi5hZGRN ZW50aW9uKGMpO0lucHV0LnNldFZhbHVlKGQsSW5wdXQuZ2V0VmFsdWUoZCkrJyAn KTt9fWVsc2UgSW5wdXQuc2V0VmFsdWUoZCxjLnRleHQrJyAnKTt9ZS5wcmV2ZW50 RGVmYXVsdCgpO30pO30scmVzZXRJbnB1dDpmdW5jdGlvbihhKXt2YXIgYj1NZW50 aW9uc0lucHV0LmdldEluc3RhbmNlKGEpO2lmKGIpe2IucmVzZXQoe2ZsYXR0ZW5l ZDonJyxtZW50aW9uX2RhdGE6e319KTt9ZWxzZSBJbnB1dC5zZXRWYWx1ZShhLCcn KTt9fSk7aWYoIXdpbmRvdy5GZWVkYmFjay5jb21tZW50cyl3aW5kb3cuRmVlZGJh Y2suY29tbWVudHM9e307CmZ1bmN0aW9uIFBheW1lbnRzRmxvd3NCYXNlKGEpe3Ro aXMuY29udGV4dF9pZD1hO31jb3B5UHJvcGVydGllcyhQYXltZW50c0Zsb3dzQmFz ZS5wcm90b3R5cGUse0RJQUxPR19FTkRQT0lOVDonL2ZibWwvYWpheC9kaWFsb2cv JyxBU1lOQ19FTkRQT0lOVDonL2FqYXgvZmxvd3MvJyxvc2NpZlByaWNlczp7fSxt ZXRob2RDb25maWdzOnt9LGl0ZW1VcGRhdGVOZWVkZWQ6ZmFsc2UsY29udGV4dF9p ZDpudWxsLGFueVNlbGVjdGVkTWV0aG9kOnt9LG9uUHVyY2hhc2VTdWJtaXQ6ZnVu Y3Rpb24oYSxiKXt0aGlzLmRpc2FibGVCdXR0b24odGhpcy5BRERfQ1JFRElUU19C VVRUT04pO2lmKCFhKWE9dGhpcy5nZXRQYXltZW50TWV0aG9kKCk7dmFyIGM9dGhp cy5tZXRob2RDb25maWdzW2FdO2lmKGMmJmMub3Blbl9wb3B1cCl7aWYoIWIuYWRk X251bV9jcmVkaXRzKWIuYWRkX251bV9jcmVkaXRzPXRoaXMuZ2V0QWRkTnVtQ3Jl ZGl0cygpO3RoaXMub3BlblBvcHVwKGMsYik7cmV0dXJuIGZhbHNlO312YXIgZD10 aGlzLmdldFByaWNlcG9pbnREcm9wZG93bihhKSxlPXt9O2lmKGQpZS5wcm92aWRl cl9hZGRfbnVtX2NyZWRpdHM9ZC52YWx1ZTt0aGlzLnN1Ym1pdERpYWxvZ1JlcXVl c3QoZSk7cmV0dXJuIGZhbHNlO30sZm9yY2VGbG93U3RlcDpmdW5jdGlvbihhLGIp e2I9Yj9iOnt9O2IuZm9yY2VfZmxvd19zdGVwPWE7dGhpcy5zdWJtaXREaWFsb2dS ZXF1ZXN0KGIpO3JldHVybiBmYWxzZTt9LHVwZGF0ZVByaWNlcG9pbnRzOmZ1bmN0 aW9uKCl7dmFyIGE9dGhpcy5nZXRGb3JtRGF0YSgpLGI9ZnVuY3Rpb24oYyl7RE9N LnNldENvbnRlbnQoZ2UoUGF5bWVudHNGbG93cy5CQU5LX1BSSUNFUE9JTlRTKSxI VE1MKGMuZ2V0UGF5bG9hZCgpKSk7fTtpZighYS5jdXJyZW5jeSlyZXR1cm47dGhp cy5zdWJtaXRBc3luY1JlcXVlc3Qoe2N1cnJlbmN5OmEuY3VycmVuY3ksdXBkYXRl X3ByaWNlcG9pbnRzOjF9LGIpO30sdXBkYXRlSXRlbTpmdW5jdGlvbigpe3ZhciBh PWZ1bmN0aW9uKGMpe0RPTS5zZXRDb250ZW50KGdlKFBheW1lbnRzRmxvd3MuSVRF TV9JRCksSFRNTChjLmdldFBheWxvYWQoKSkpO30sYj10aGlzLmdldFBheW1lbnRN ZXRob2QoKTt0aGlzLnN1Ym1pdEFzeW5jUmVxdWVzdCh7cGF5bWVudF9tZXRob2Q6 YixhbW91bnQ6dGhpcy5nZXRBZGROdW1DcmVkaXRzKCksY291bnRyeV91cGRhdGU6 dGhpcy5nZXRDb3VudHJ5VXBkYXRlKGIpLHVwZGF0ZV9pdGVtOjF9LGEpO30sb3Nj aWZVcGRhdGVNb2JpbGVDb3VudHJ5OmZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24o ZCl7dmFyIGU9ZC5nZXRQYXlsb2FkKCk7aWYoZSl7dmFyIGY9ZS5pdGVtX3VwZGF0 ZSxnPWUuZHJvcGRvd25zX3VwZGF0ZSxoPWUuaXNfcHJpY2Vfb25seT9nZShQYXlt ZW50c0Zsb3dzLklURU1fUFJJQ0VfSUQpOmdlKFBheW1lbnRzRmxvd3MuSVRFTV9J RCk7aCYmRE9NLnNldENvbnRlbnQoaCxIVE1MKGYpKTt2YXIgaT1nZShQYXltZW50 c0Zsb3dzLk1PQklMRV9EUk9QRE9XTl9DT05UQUlORVIpO2kmJkRPTS5yZXBsYWNl KGksSFRNTChnKSk7fX0sYj10aGlzLmdldFBheW1lbnRNZXRob2QoKSxjPXRoaXMu Z2V0Q291bnRyeVVwZGF0ZShiKTt0aGlzLnN1Ym1pdEFzeW5jUmVxdWVzdCh7cGF5 bWVudF9tZXRob2Q6YixhbW91bnQ6dGhpcy5nZXRBZGROdW1DcmVkaXRzKCksY291 bnRyeV91cGRhdGU6Yyx1cGRhdGVfaXRlbV9hbmRfZHJvcGRvd25zOjF9LGEpO30s b25VcGRhdGVQYXltZW50TWV0aG9kOmZ1bmN0aW9uKGEsYil7dGhpcy5hbnlTZWxl Y3RlZE1ldGhvZFthXT0xO2Zvcih2YXIgYyBpbiB0aGlzLmFueVNlbGVjdGVkTWV0 aG9kKXt2YXIgZD10aGlzLmdldERyb3Bkb3duQ29udGFpbmVyKGMpO2QmJkNTUy5j b25kaXRpb25TaG93KGQsYT09Yyk7fWlmKGIpe3RoaXMuaXRlbVVwZGF0ZU5lZWRl ZCYmdGhpcy51cGRhdGVJdGVtKGEpO31lbHNle3ZhciBlPSQoJ3BheW1lbnRfYm9k eV9hbmRfYnV0dG9ucycpLGY9RE9NLnNjcnkoZSwnLmRlZmF1bHRfcHJpY2Vwb2lu dCcpLGc9ZmFsc2U7Zm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspZz1nfHxmW2hd LmlkLmxhc3RJbmRleE9mKGEpIT0tMTtmPURPTS5zY3J5KGUsJy5sb2NhbF9jdXJf YW10Jyk7Zm9yKHZhciBpPTA7aTxmLmxlbmd0aDtpKyspQ1NTLmNvbmRpdGlvblNo b3coZltpXSxnKTt9fSxzZXRQYXltZW50TWV0aG9kQ29uZmlnOmZ1bmN0aW9uKGEp e3RoaXMubWV0aG9kQ29uZmlncz1hO30sc2V0T3NjaWZQcmljZUNvbmZpZzpmdW5j dGlvbihhKXt0aGlzLm9zY2lmUHJpY2VzPWE7fSxzZXRJdGVtVXBkYXRlTmVlZGVk OmZ1bmN0aW9uKGEpe3RoaXMuaXRlbVVwZGF0ZU5lZWRlZD1hO30sZ2V0UGF5bWVu dE1ldGhvZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0Rm9ybURhdGEoKTtyZXR1

cm4gYS5wYXltZW50X21ldGhvZDt9LGdldEFkZE51bUNyZWRpdHM6ZnVuY3Rpb24o KXt2YXIgYT10aGlzLmdldEZvcm1EYXRhKCk7aWYoYS5hZGRfbnVtX2NyZWRpdHMp cmV0dXJuIGEuYWRkX251bV9jcmVkaXRzO3JldHVybiB0aGlzLmdldE9zY2lmQWRk TnVtQ3JlZGl0cygpO30sZ2V0T3NjaWZBZGROdW1DcmVkaXRzOmZ1bmN0aW9uKCl7 dmFyIGE9dGhpcy5nZXRQYXltZW50TWV0aG9kKCksYj10aGlzLmdldFByaWNlcG9p bnREcm9wZG93bihhKTtpZighYil7cmV0dXJuIHRoaXMub3NjaWZQcmljZXMucHJp Y2U7fWVsc2UgcmV0dXJuIHBhcnNlSW50KGIudmFsdWUsMTApO30sZ2V0Q291bnRy eVVwZGF0ZTpmdW5jdGlvbihhKXtjb3VudHJ5X3VwZGF0ZT1nZShhKydfY291bnRy eV9kcm9wZG93bicpO2lmKGNvdW50cnlfdXBkYXRlKWNvdW50cnlfdXBkYXRlPWNv dW50cnlfdXBkYXRlLnZhbHVlO3JldHVybiBjb3VudHJ5X3VwZGF0ZTt9LGdldFBy aWNlcG9pbnREcm9wZG93bjpmdW5jdGlvbihhKXtyZXR1cm4gZ2UoYSsnX2Ryb3Bk b3duJyk7fSxnZXREcm9wZG93bkNvbnRhaW5lcjpmdW5jdGlvbihhKXtyZXR1cm4g Z2UoYSsnX2Ryb3Bkb3duX2NvbnRhaW5lcicpO30sc3VibWl0QXN5bmNSZXF1ZXN0 OmZ1bmN0aW9uKGEsYil7YS5jb250ZXh0PXRoaXMuZ2V0Rm9ybURhdGEoKS5jb250 ZXh0O3ZhciBjPW5ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkodGhpcy5BU1lOQ19F TkRQT0lOVCkuc2V0SGFuZGxlcihiKS5zZXREYXRhKGEpLnNlbmQoKTt9LEFERF9D UkVESVRTX0JVVFRPTjonYWRkX2NyZWRpdHMnLE9TQ0lGX0JBTEFOQ0VfQ0hFQ0tC T1g6J3N3ZWVwX2JhbGFuY2UnLE9TQ0lGX0NIRUNLQk9YX1RPT0xUSVA6J2NoZWNr Ym94LXRvb2x0aXAnLE9TQ0lGX1BSSUNFX1RPT0xUSVA6J3ByaWNlLXRvb2x0aXAn LE9TQ0lGX1BSSUNFOidwcmljZScsQkFOS19QT1BVUF9CTE9DS19NRVNTQUdFOidw b3B1cF9tZXNzYWdlJyxTRUNVUklUWV9WRVJJX1RFWFQ6J3Bhc3N3b3JkX3BvcHVw JyxTRUNVUklUWV9WRVJJX0ZBSUxFRF9URVhUOidwYXNzd29yZF9mYWlsZWQnLEJB TktfUFJJQ0VQT0lOVFM6J3BheW1lbnRfcHJpY2Vwb2ludHMnLElURU1fSUQ6J2Zi cGF5bWVudHNfaXRlbScsSVRFTV9QUklDRV9JRDonZmJwYXltZW50c19pdGVtX3By aWNlJyxNT0JJTEVfRFJPUERPV05fQ09OVEFJTkVSOidtb2JpbGVfZHJvcGRvd25f Y29udGFpbmVyJyxCT09TVF9QUklDRTonYm9vc3RfcHJpY2UnLEJPT1NUX0JVVFRP TjonYm9vc3QnLFNZTkNfQlVUVE9OOidzeW5jX2NhcmQnLG9wZW5Qb3B1cDpmdW5j dGlvbihhLGIpe30scHJvY2Vzc1BvcHVwOmZ1bmN0aW9uKGEpe30scHJvY2Vzc0lG cmFtZTpmdW5jdGlvbihhKXt9LGdldEZvcm1EYXRhOmZ1bmN0aW9uKCl7fSxzdWJt aXREaWFsb2dSZXF1ZXN0OmZ1bmN0aW9uKGEpe30sZW5hYmxlQnV0dG9uOmZ1bmN0 aW9uKGEpe30sZGlzYWJsZUJ1dHRvbjpmdW5jdGlvbihhKXt9LGNoYW5nZUJ1dHRv blRleHQ6ZnVuY3Rpb24oYSxiKXt9LHNob3dTZWN1cml0eVZlcmlGYWlsZWQ6ZnVu Y3Rpb24oKXtnZSh0aGlzLlNFQ1VSSVRZX1ZFUklfVEVYVCkmJkNTUy5oaWRlKHRo aXMuU0VDVVJJVFlfVkVSSV9URVhUKTtnZSh0aGlzLlNFQ1VSSVRZX1ZFUklfRkFJ TEVEX1RFWFQpJiZDU1Muc2hvdyh0aGlzLlNFQ1VSSVRZX1ZFUklfRkFJTEVEX1RF WFQpO30saUZyYW1lVGltZXJJZDowLGlGcmFtZVRpbWVvdXQ6NTAwMCxjaGVja1Bh eVRocmVzaG9sZDoxMCxjaGVja1BheUludGVydmFsOjIwMDAsY2hlY2tQYXlDb3Vu dDowLGNoZWNrUGF5bWVudFN0YXR1czpmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9u KCl7Z2UoJ2NoZWNraW5nX3BheW1lbnRfc3RhdHVzJykmJkNTUy5zaG93KCdjaGVj a2luZ19wYXltZW50X3N0YXR1cycpO3ZhciBjPVBheW1lbnRzRmxvd3MuY2hlY2tQ YXlDb3VudD49UGF5bWVudHNGbG93cy5jaGVja1BheVRocmVzaG9sZCxkPXtmb3Jj ZV9hc3luY19ub3RpZnk6K2MscGF5bWVudF9wcm92aWRlcl9jb21wbGV0ZWQ6MSxj aGVja19wYXlfY291bnQ6UGF5bWVudHNGbG93cy5jaGVja1BheUNvdW50fTtpZihj KXtQYXltZW50c0Zsb3dzLmNoZWNrUGF5Q291bnQ9MDtQYXltZW50c0Zsb3dzLnN1 Ym1pdERpYWxvZ1JlcXVlc3QoZCwnY2hlY2tQYXltZW50Jyk7fWVsc2UgUGF5bWVu dHNGbG93cy5zdWJtaXRBc3luY1JlcXVlc3QoZCxiKTt9LGI9ZnVuY3Rpb24oYyl7 dmFyIGQ9Yy5nZXRQYXlsb2FkKCk7Z2UoJ2NoZWNraW5nX3BheW1lbnRfc3RhdHVz JykmJkNTUy5oaWRlKCdjaGVja2luZ19wYXltZW50X3N0YXR1cycpO1BheW1lbnRz Rmxvd3MuY2hlY2tQYXlDb3VudCsrO2lmKGQuYXdhaXRpbmdfcGF5bWVudCl7Z2Uo J3BheW1lbnRfcHJvZ3Jlc3NfYmFyJykmJkRPTS5zZXRDb250ZW50KCQoJ3BheW1l bnRfcHJvZ3Jlc3NfYmFyJyksSFRNTChkLnByb2dyZXNzX2JhcikpO3NldFRpbWVv dXQoYSxQYXltZW50c0Zsb3dzLmNoZWNrUGF5SW50ZXJ2YWwpO31lbHNle1BheW1l bnRzRmxvd3MuY2hlY2tQYXlDb3VudD0wO25ldyBEaWFsb2coKS5zZXRUaXRsZShk LnRpdGxlKS5zZXRCb2R5KGQuYm9keSkuc2V0QnV0dG9ucyhkLmJ1dHRvbnMpLnNl dFdpZGVEaWFsb2codHJ1ZSkuc2hvdygpO319O3NldFRpbWVvdXQoYSx0aGlzLmNo ZWNrUGF5SW50ZXJ2YWwpO30saUZyYW1lSW5pdDpmdW5jdGlvbihhKXtpZihhKXt2 YXIgYj1mdW5jdGlvbigpe2MudW5zdWJzY3JpYmUoKTtjbGVhclRpbWVvdXQoUGF5 bWVudHNGbG93cy5pRnJhbWVUaW1lcklkKTt9LGM9QXJiaXRlci5zdWJzY3JpYmUo J0Nvbm5lY3QuVW5zYWZlLlBBWU1FTlRfUFJPVklERVJfSU5JVCcsYi5iaW5kKHRo aXMpKSxkPWZ1bmN0aW9uKCl7YigpO3ZhciBlPXtwYXltZW50X3Byb3ZpZGVyX2Vy

cm9yOjEscGF5bWVudF9wcm92aWRlcl9lYzoxLHBheW1lbnRfcHJvdmlkZXJfbXNn OidQcm92aWRlciB0aW1lZCBvdXQnfTtQYXltZW50c0Zsb3dzLmZvcmNlRmxvd1N0 ZXAoJ1dhbGxldEZsb3cnLGUpO307ZC5kZWZlcih0aGlzLmlGcmFtZVRpbWVvdXQp O319fSk7CmZ1bmN0aW9uIFBheW1lbnRzRmxvd3NBc3luYyhhKXt0aGlzLnBhcmVu dC5jb25zdHJ1Y3QodGhpcyxhKTt9Q2xhc3MuZXh0ZW5kKFBheW1lbnRzRmxvd3NB c3luYywnUGF5bWVudHNGbG93c0Jhc2UnKTtjb3B5UHJvcGVydGllcyhQYXltZW50 c0Zsb3dzQXN5bmMucHJvdG90eXBlLHtmb3JjZUZsb3dTdGVwOmZ1bmN0aW9uKGEs Yil7dGhpcy5jbG9zZVBvcHVwKCk7cmV0dXJuIHRoaXMucGFyZW50LmZvcmNlRmxv d1N0ZXAoYSxiKTt9LHBvcHVwOm51bGwscG9sbGluZ0ludGVydmFsOjEwMCxwb3B1 cFRpbWVySWQ6MCxfc2V0dXBQb3B1cE9wZW5DaGVja3M6ZnVuY3Rpb24oYSxiKXt0 aGlzLnBvcHVwVGltZXJJZD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKCFhKCkp dGhpcy5vblBvcHVwQ2xvc2UoYik7fS5iaW5kKHRoaXMpLHRoaXMucG9sbGluZ0lu dGVydmFsKTtpZighYSgpKXt0aGlzLnNob3dCbG9ja2VkUG9wdXBNZXNzYWdlKCk7 dGhpcy5lbmFibGVCdXR0b24oYik7fWVsc2UgdGhpcy5oaWRlQmxvY2tlZFBvcHVw TWVzc2FnZSgpO30sX3Nob3dQb3B1cDpmdW5jdGlvbihhLGIpe3ZhciBjPTgwMCxk PTU1MCxlPTEsZj0xLGc9MTtpZihiIT1udWxsKWlmKGIuaXNfcGF5cGFsX2RpZ2l0 YWxfZ29vZHNfZmxvdyl7Yz00MjA7ZD01NTA7ZT0wO2Y9MDtnPTA7fWVsc2UgaWYo Yi5pc19wYXlwYWwpe2M9OTU1O2Q9NzUwO31lbHNlIGlmKGIuaXNfcHJvbW90aW9u KXtjPTU1MDtkPTgwMDt9dmFyIGg9MCxpPTA7aWYod2luZG93LnNjcmVlbkxlZnQp e2g9d2luZG93LnNjcmVlbkxlZnQ7aT13aW5kb3cuc2NyZWVuVG9wO31lbHNlIGlm KHdpbmRvdy5zY3JlZW5YKXtoPXdpbmRvdy5zY3JlZW5YO2k9d2luZG93LnNjcmVl blk7fXZhciBqPVZlY3RvcjIuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkueCxrPVZl Y3RvcjIuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkueTtoPWgrKGotYykvMjtpPWkr KGstZCkvMjt0aGlzLnBvcHVwPXdpbmRvdy5vcGVuKGEudG9TdHJpbmcoKSwnQ3Jl ZGl0c0Zsb3dQb3B1cFdpbmRvdycsJ2xvY2F0aW9uPXllcywnKyd0b3A9JytpKycs JysnbGVmdD0nK2grJywnKyd3aWR0aD0nK2MrJywnKydoZWlnaHQ9JytkKycsJysn cmVzaXphYmxlPScrZSsnLCcrJ3Rvb2xiYXI9JytmKycsJysnbWVudWJhcj0nK2cr JywnKydzY3JvbGxiYXJzPXllcycsdHJ1ZSk7fSxvcGVuUG9wdXA6ZnVuY3Rpb24o YSxiKXt2YXIgYztpZihiLmlzX3N5bmNfZmxvdyl7dXJpPVVSSSgiL2dpZnRjcmVk aXRzL2luZGV4LnBocCIpO3VyaS5zZXREb21haW4oVVJJLmdldFJlcXVlc3RVUkko KS5nZXREb21haW4oKSk7dXJpLnNldFByb3RvY29sKCdodHRwcycpO3VyaS5hZGRR dWVyeURhdGEodXJpLmFkZFF1ZXJ5RGF0YSh7Y29udGV4dF9pZDpiLmNvbnRleHRf aWR9KSk7dXJpLmFkZFF1ZXJ5RGF0YSh7aXNfcmVkaXJlY3Rfc2VjdXJlOlVSSS5n ZXRSZXF1ZXN0VVJJKCkuaXNTZWN1cmUoKX0pO2M9dGhpcy5TWU5DX0JVVFRPTjt0 aGlzLmRpc2FibGVCdXR0b24oYyk7fWVsc2V7dmFyIGQ9YS5wb3B1cF91cmw7dXJp PVVSSShkKTt1cmkuYWRkUXVlcnlEYXRhKGIpO3VyaS5hZGRRdWVyeURhdGEoe3Vz ZV9wYXltZW50X2VuZ2luZTphLnVzZV9wYXltZW50X2VuZ2luZX0pO2M9dGhpcy5B RERfQ1JFRElUU19CVVRUT047fXRoaXMuX3Nob3dQb3B1cCh1cmksYSk7dGhpcy5f c2V0dXBQb3B1cE9wZW5DaGVja3MoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3B1 cCYmKCF0aGlzLnBvcHVwLmNsb3NlZCk7fS5iaW5kKHRoaXMpLGMpO3JldHVybiBm YWxzZTt9LG9uUG9wdXBDbG9zZTpmdW5jdGlvbihhKXtpZih0aGlzLnBvcHVwVGlt ZXJJZCE9PTApe2NsZWFySW50ZXJ2YWwodGhpcy5wb3B1cFRpbWVySWQpO3RoaXMu cG9wdXBUaW1lcklkPTA7fXRoaXMuZW5hYmxlQnV0dG9uKGEpO30sY2xvc2VQb3B1 cDpmdW5jdGlvbihhKXt0aGlzLm9uUG9wdXBDbG9zZSh0aGlzLkFERF9DUkVESVRT X0JVVFRPTik7aWYodGhpcy5wb3B1cCl7dGhpcy5wb3B1cC5jbG9zZSgpO2lmKCF0 aGlzLnBvcHVwLmNsb3NlZCl7dmFyIGI9bmV3IFVSSSgnL3BheW1lbnRzL21lc3Nh Z2UucGhwJyk7aWYoIWEpYi5hZGRRdWVyeURhdGEoJ2NhbmNlbCcsMSk7dGhpcy5w b3B1cC5sb2NhdGlvbj1iLnRvU3RyaW5nKCk7fXRoaXMucG9wdXA9bnVsbDt9fSxw cm9jZXNzR2lmdGNhcmRJRnJhbWU6ZnVuY3Rpb24oYSl7aWYoYS5nY19yZXN1bHRf Y29kZT09PSIwIiYmYS5nY19md2RfdXJsKXt3aW5kb3cuZ29VUkkoYS5nY19md2Rf dXJsKTtyZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlO30scHJvY2Vzc0lGcmFtZTpm dW5jdGlvbihhKXtpZighdGhpcy5wcm9jZXNzR2lmdGNhcmRJRnJhbWUoYSkpcmV0 dXJuO3RoaXMuY2xvc2VQb3B1cCghYS5jYW5jZWwpO3RoaXMuZW5hYmxlQnV0dG9u KHRoaXMuQUREX0NSRURJVFNfQlVUVE9OKTtpZighYS5jYW5jZWwpe2lmKGEuY2hh bmdlX21ldGhvZCl7dGhpcy5mb3JjZUZsb3dTdGVwKCdXYWxsZXRGbG93Jyk7fWVs c2UgdGhpcy5zdWJtaXREaWFsb2dSZXF1ZXN0KGEpO31lbHNle2lmKGEuY2FuY2Vs X2RpYWxvZyl7dGhpcy5zdWJtaXREaWFsb2dSZXF1ZXN0KHtjYW5jZWw6J2NhbmNl bCd9KTtyZXR1cm4gZmFsc2U7fXRoaXMuc2hvd1NlY3VyaXR5VmVyaUZhaWxlZCgp O319LHByb2Nlc3NQb3B1cDpmdW5jdGlvbihhKXtpZighYS5jYW5jZWwmJmEuY29u dGV4dF9pZCE9dGhpcy5jb250ZXh0X2lkKXJldHVybjt0aGlzLnByb2Nlc3NJRnJh

bWUoYSk7fSxnZXRGb3JtRGF0YTpmdW5jdGlvbigpe3ZhciBhPURpYWxvZy5nZXRD dXJyZW50KCk7cmV0dXJuIGEuZ2V0Rm9ybURhdGEoKTt9LHN1Ym1pdERpYWxvZ1Jl cXVlc3Q6ZnVuY3Rpb24oYSl7dmFyIGI9RGlhbG9nLmdldEN1cnJlbnQoKSxjPWIu Z2V0Qm9keSgpO0Zvcm0uY3JlYXRlSGlkZGVuSW5wdXRzKGEsYyk7Yi5fc3VibWl0 Rm9ybSgnUE9TVCcsdGhpcy5ESUFMT0dfRU5EUE9JTlQpO30sZW5hYmxlQnV0dG9u OmZ1bmN0aW9uKGEpe3ZhciBiPURpYWxvZy5nZXRDdXJyZW50KCksYz1iLmdldEJ1 dHRvbkVsZW1lbnQoYSk7YyYmQnV0dG9uLnNldEVuYWJsZWQoYyx0cnVlKTt9LGRp c2FibGVCdXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9RGlhbG9nLmdldEN1cnJlbnQo KSxjPWIuZ2V0QnV0dG9uRWxlbWVudChhKTtjJiZCdXR0b24uc2V0RW5hYmxlZChj LGZhbHNlKTt9LGNoYW5nZUJ1dHRvblRleHQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1E aWFsb2cuZ2V0Q3VycmVudCgpLGQ9Yy5nZXRCdXR0b25FbGVtZW50KGEpO2QmJkJ1 dHRvbi5zZXRMYWJlbChkLGIpO30sc2hvd0Jsb2NrZWRQb3B1cE1lc3NhZ2U6ZnVu Y3Rpb24oKXt2YXIgYT1nZSh0aGlzLkJBTktfUE9QVVBfQkxPQ0tfTUVTU0FHRSk7 aWYoYSlDU1Muc2hvdyhhKTt9LGhpZGVCbG9ja2VkUG9wdXBNZXNzYWdlOmZ1bmN0 aW9uKCl7dmFyIGE9Z2UodGhpcy5CQU5LX1BPUFVQX0JMT0NLX01FU1NBR0UpO2lm KGEpQ1NTLmhpZGUoYSk7fX0pOwpHaWZ0Q3JlZGl0cz17ZGlhbG9nOm51bGwsY2Fs bGJhY2s6bnVsbCxwdXJjaGFzZUxvY2s6ZmFsc2UscHVyY2hhc2VMb2NrRXhwaXJ5 VGhyZXNob2xkOjUwMDAscHVyY2hhc2VMb2NrVGltZW91dElkOm51bGwsY2FuY2Vs U3VydmV5SWQ6bnVsbCxwcm9tb0FwcElkOm51bGwsZ2V0UHVyY2hhc2VDcmVkaXRQ cm9tcHQ6ZnVuY3Rpb24oYSxiLGMsZCl7R2lmdENyZWRpdHMubWFpbihhLG51bGws bnVsbCxudWxsLGMsbnVsbCxudWxsLG51bGwsJ0J1eUNyZWRpdHMnLHt9LGQpO30s Z2V0UHVyY2hhc2VDcmVkaXRQcm9tcHRQb3B1cDpmdW5jdGlvbihhLGIsYyl7dmFy IGQ9NTUwLGU9MTUwLGY9dHlwZW9mIHdpbmRvdy5zY3JlZW5YIT0ndW5kZWZpbmVk Jz93aW5kb3cuc2NyZWVuWDp3aW5kb3cuc2NyZWVuTGVmdCxnPXR5cGVvZiB3aW5k b3cuc2NyZWVuWSE9J3VuZGVmaW5lZCc/d2luZG93LnNjcmVlblk6d2luZG93LnNj cmVlblRvcCxoPXR5cGVvZiB3aW5kb3cub3V0ZXJXaWR0aCE9J3VuZGVmaW5lZCc/ d2luZG93Lm91dGVyV2lkdGg6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVu dFdpZHRoLGk9dHlwZW9mIHdpbmRvdy5vdXRlckhlaWdodCE9J3VuZGVmaW5lZCc/ d2luZG93Lm91dGVySGVpZ2h0Oihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xp ZW50SGVpZ2h0LTIyKSxqPShmPDApP3dpbmRvdy5zY3JlZW4ud2lkdGgrZjpmLGs9 cGFyc2VJbnQoaisoKGgtZCkvMiksMTApLGw9cGFyc2VJbnQoZysoKGktZSkvMi41 KSwxMCksbT0oJ3dpZHRoPScrZCsnLGhlaWdodD0nK2UrJyxsZWZ0PScraysnLHRv cD0nK2wrJyxzY3JvbGxiYXJzPTEnKSxuPVVSSSgpLnNldFN1YmRvbWFpbignd3d3 Jykuc2V0UGF0aCgnL2RpYWxvZy9wYXknKS5hZGRRdWVyeURhdGEoe2FwcF9pZDph LGFjdGlvbjonQnV5Q3JlZGl0cycsbmV4dDonaHR0cDovL3d3dy5mYWNlYm9vay5j b20vJyxkaXNwbGF5Oidwb3B1cCcsaW50ZXJuYWxfcG9wdXA6J3RydWUnLGRldl9w dXJjaGFzZV9wYXJhbXM6SlNPTi5zdHJpbmdpZnkoYiksYWRkaXRpb25hbF9wYXJh bXM6SlNPTi5zdHJpbmdpZnkoYyl9KS50b1N0cmluZygpO3dpbmRvdy5vcGVuKG4s J3BheScsbSk7fSxyZWRlZW1HaWZ0Y2FyZDpmdW5jdGlvbihhLGIpe0dpZnRDcmVk aXRzLm1haW4oYSxudWxsLG51bGwsZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmco KSxudWxsLG51bGwsbnVsbCxudWxsLCdSZWRlZW1HaWZ0Y2FyZCcse30sYik7fSxn ZXRQcm9tcHQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuKXtH aWZ0Q3JlZGl0cy5tYWluKGEsYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbik7fSxt YWluOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbil7aWYoR2lm dENyZWRpdHMuaXNQdXJjaGFzZUxvY2tlZCgpKXJldHVybiBmYWxzZTtHaWZ0Q3Jl ZGl0cy5zZXRQdXJjaGFzZUxvY2sodHJ1ZSk7dmFyIG89e19wYXRoOidwYXknLG1l dGhvZDoncGF5JyxkaXNwbGF5Oidhc3luYycsYXBwX2lkOmEscmVjZWl2ZXI6Yixh cGlfa2V5OmcsY3JlZGl0c19wdXJjaGFzZTpuLGFjdGlvbjppLG5leHQ6ZCxkZXZf cHVyY2hhc2VfcGFyYW1zOkpTT04uc3RyaW5naWZ5KGopLGFkZGl0aW9uYWxfcGFy YW1zOkpTT04uc3RyaW5naWZ5KGspLG9yZGVyX2luZm86SlNPTi5zdHJpbmdpZnko YykscHJvZHVjdDpsLHBhY2thZ2VfaWQ6bSxjYW52YXNfdXJsX3BhdGg6ZG9jdW1l bnQubG9jYXRpb24ucGF0aG5hbWV9LHA9bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVS SSgnL2ZibWwvYWpheC9kaWFsb2cvJykuc2V0RGF0YShvKS5zZXRNZXRob2QoJ0dF VCcpLnNldFJlYWRPbmx5KHRydWUpLnNldFN0YXR1c0VsZW1lbnQoJ2NvbW1lcmNl X2dldF9tb3JlX2xvYWRpbmcnKTtHaWZ0Q3JlZGl0cy5jYWxsYmFjaz1lO0dpZnRD cmVkaXRzLmRpYWxvZz1uZXcgRGlhbG9nKCkuc2V0QXN5bmMocCkuc2V0TW9kYWwo dHJ1ZSkuc2V0Q2FuY2VsSGFuZGxlcihHaWZ0Q3JlZGl0cy5vbkNhbmNlbCkuc2V0 Q2xvc2VIYW5kbGVyKGUpLnNob3coKTt9LG9uQ2FuY2VsOmZ1bmN0aW9uKGEpe3Zh ciBiPURpYWxvZy5nZXRDdXJyZW50KCk7aWYoYiYmIShiLmdldEJ1dHRvbkVsZW1l bnQoRGlhbG9nLkNBTkNFTCl8fGEpKXJldHVybiBmYWxzZTtpZihHaWZ0Q3JlZGl0

cy5jYWxsYmFjayl7dmFyIGM9e2Vycm9yX2NvZGU6MTM4MzAxMCxlcnJvcl9tZXNz YWdlOidVc2VyIGNhbmNlbGVkIHRoZSBvcmRlci4nfTtHaWZ0Q3JlZGl0cy5jYWxs YmFjayhjKTt9R2lmdENyZWRpdHMuc2V0UHVyY2hhc2VMb2NrKGZhbHNlKTtpZihh KUdpZnRDcmVkaXRzLmRpYWxvZy5oaWRlKCk7aWYoR2lmdENyZWRpdHMuY2FuY2Vs U3VydmV5SWQpe3ZhciBkPW5ldyBBc3luY1JlcXVlc3QoIi9zdXJ2ZXkvc3VydmV5 RGlhbG9nIikuc2V0RGF0YSh7c3VydmV5X2lkOkdpZnRDcmVkaXRzLmNhbmNlbFN1 cnZleUlkfSk7bmV3IERpYWxvZygpLnNldEFzeW5jKGQpLnNob3coKTt9ZWxzZSBp ZihHaWZ0Q3JlZGl0cy5wcm9tb0FwcElkKXt2YXIgZT1VUkkoJy9wYXltZW50cy9w cm9tb3Rpb24vJykuc2V0U3ViZG9tYWluKCd3d3cnKS5zZXRRdWVyeURhdGEoe2Fw cF9pZDpHaWZ0Q3JlZGl0cy5wcm9tb0FwcElkLHBsYWNlbWVudDonY2FuY2VsX2J1 dHRvbicscGFja2FnZV9uYW1lOid6ZXJvX3Byb21vJ30pO25ldyBQYXltZW50c0Zs b3dzQXN5bmMoMCkuX3Nob3dQb3B1cChlLHtpc19wcm9tb3Rpb246dHJ1ZX0pO319 LGlzUHVyY2hhc2VMb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gR2lmdENyZWRpdHMu cHVyY2hhc2VMb2NrO30sc2V0UHVyY2hhc2VMb2NrOmZ1bmN0aW9uKGEpe0dpZnRD cmVkaXRzLnB1cmNoYXNlTG9jaz1hO2lmKGEpe0dpZnRDcmVkaXRzLnB1cmNoYXNl TG9ja1RpbWVvdXRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7R2lmdENyZWRpdHMu c2V0UHVyY2hhc2VMb2NrKGZhbHNlKTt9LEdpZnRDcmVkaXRzLnB1cmNoYXNlTG9j a0V4cGlyeVRocmVzaG9sZCk7fWVsc2UgY2xlYXJUaW1lb3V0KEdpZnRDcmVkaXRz LnB1cmNoYXNlTG9ja1RpbWVvdXRJZCk7cmV0dXJuIHRydWU7fX07ZnVuY3Rpb24g dHJpZ2dlckNyZWRpdHNQcm9tcHRGcm9tWGQoYSxiKXtjYWxsYmFjaz1mdW5jdGlv bihjKXtYRC5zZW5kKHtyZXNwb25zZTpKU09OLnN0cmluZ2lmeShjKX0sYi5jaGFu bmVsKTt9O0dpZnRDcmVkaXRzLmdldFByb21wdChiLmFwcF9pZCxiLnJlY2VpdmVy LGIub3JkZXJfaW5mbyxiLmJhY2tfdXJsLGNhbGxiYWNrLG51bGwsbnVsbCxudWxs LGIuYWN0aW9uLGIuZGV2X3B1cmNoYXNlX3BhcmFtcyxiLmFkZGl0aW9uYWxfcGFy YW1zLGIucHJvZHVjdCxiLnN1YnNjcmlwdGlvbl9pZCxiLmNyZWRpdHNfcHVyY2hh c2UpO31vbmxvYWRSZWdpc3Rlcl9ERVBSRUNBVEVEKGZ1bmN0aW9uKCl7QXJiaXRl ci5zdWJzY3JpYmUoJ0Nvbm5lY3QuVW5zYWZlLlBheS5Qcm9tcHQnLHRyaWdnZXJD cmVkaXRzUHJvbXB0RnJvbVhkKTt9KTsKX19kKCJET01FdmVudExpc3RlbmVyIixb XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGcsaDtpZih3aW5kb3cuYWRkRXZl bnRMaXN0ZW5lcil7Zz1mdW5jdGlvbihqLGssbCl7ai5hZGRFdmVudExpc3RlbmVy KGssbCxmYWxzZSk7fTtoPWZ1bmN0aW9uKGosayxsKXtqLnJlbW92ZUV2ZW50TGlz dGVuZXIoayxsLGZhbHNlKTt9O31lbHNlIGlmKHdpbmRvdy5hdHRhY2hFdmVudCl7 Zz1mdW5jdGlvbihqLGssbCl7ai5hdHRhY2hFdmVudCgnb24nK2ssbCk7fTtoPWZ1 bmN0aW9uKGosayxsKXtqLmRldGFjaEV2ZW50KCdvbicrayxsKTt9O312YXIgaT17 YWRkOmZ1bmN0aW9uKGosayxsKXtnKGosayxsKTtyZXR1cm4ge3JlbW92ZTpmdW5j dGlvbigpe2goaixrLGwpO2o9bnVsbDt9fTt9LHJlbW92ZTpofTtlLmV4cG9ydHM9 aTt9KTsKX19kKCJDYW52YXNSZXNpemVyIixbImNyZWF0ZUFycmF5RnJvbSIsIkNT UyIsIkRPTUV2ZW50TGlzdGVuZXIiLCJET01Qb3NpdGlvbiJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdjcmVhdGVBcnJheUZyb20nKSxoPWIoJ0NTUycp LGk9YignRE9NRXZlbnRMaXN0ZW5lcicpLGo9YignRE9NUG9zaXRpb24nKSxrO2Z1 bmN0aW9uIGwoKXt2YXIgbixvPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZih3 aW5kb3cuaW5uZXJIZWlnaHQpe249d2luZG93LmlubmVySGVpZ2h0O31lbHNlIGlm KG8mJm8uY2xpZW50SGVpZ2h0KXtuPW8uY2xpZW50SGVpZ2h0O31lbHNlIG49ZG9j dW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7Zm9yKHZhciBwPTA7cDxrLmxlbmd0aDtw Kyspe3ZhciBxPWtbcF07aWYoIWguaGFzQ2xhc3MocSwnbm9yZXNpemUnKSl7dmFy IHI9ai5nZXRFbGVtZW50UG9zaXRpb24ocSwnZG9jdW1lbnQnKS55LHM9bi1yO3Eu c3R5bGUuaGVpZ2h0PXMvKGsubGVuZ3RoLXApKydweCc7fX19aS5hZGQod2luZG93 LCdyZXNpemUnLGwpO3ZhciBtPXtzbWFydFNpemluZ0ZyYW1lQWRkZWQ6ZnVuY3Rp b24oKXtrPVtdO3ZhciBuPWcoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo J2lmcmFtZScpKTtuLmZvckVhY2goZnVuY3Rpb24obyl7aWYoaC5oYXNDbGFzcyhv LCdzbWFydF9zaXppbmdfaWZyYW1lJykmJiFoLmhhc0NsYXNzKG8sJ25vcmVzaXpl Jykpe2gucmVtb3ZlQ2xhc3MobywnY2FudmFzX2lmcmFtZV91dGlsJyk7ay5wdXNo KG8pO319KTtsKCk7fX07ZS5leHBvcnRzPW07fSk7Cl9fZCgiSlNPTlJQQyIsWyJj b3B5UHJvcGVydGllcyIsIkxvZyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdjb3B5UHJvcGVydGllcycpLGg9YignTG9nJyk7ZnVuY3Rpb24gaShqKXt0 aGlzLl9jb3VudGVyPTA7dGhpcy5fY2FsbGJhY2tzPXt9O3RoaXMucmVtb3RlPXt9 O3RoaXMubG9jYWw9e307dGhpcy5fd3JpdGU9ajt9ZyhpLnByb3RvdHlwZSx7c3R1 YjpmdW5jdGlvbihqKXt0aGlzLnJlbW90ZVtqXT1mdW5jdGlvbigpe3ZhciBrPUFy cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksbD17anNvbnJwYzon Mi4wJyxtZXRob2Q6an07aWYodHlwZW9mIGtbay5sZW5ndGgtMV09PSdmdW5jdGlv

bicpe2wuaWQ9Kyt0aGlzLl9jb3VudGVyO3RoaXMuX2NhbGxiYWNrc1tsLmlkXT1r LnBvcCgpO31sLnBhcmFtcz1rO3RoaXMuX3dyaXRlKEpTT04uc3RyaW5naWZ5KGwp LHttZXRob2Q6an0pO30uYmluZCh0aGlzKTt9LHJlYWQ6ZnVuY3Rpb24oaixrKXt2 YXIgbD1KU09OLnBhcnNlKGopLG09bC5pZDtpZighbC5tZXRob2Qpe2lmKCF0aGlz Ll9jYWxsYmFja3NbbV0pe2gud2FybignQ291bGQgbm90IGZpbmQgY2FsbGJhY2sg JXMnLG0pO3JldHVybjt9dmFyIG49dGhpcy5fY2FsbGJhY2tzW21dO2RlbGV0ZSB0 aGlzLl9jYWxsYmFja3NbbV07ZGVsZXRlIGwuaWQ7ZGVsZXRlIGwuanNvbnJwYztu KGwpO3JldHVybjt9dmFyIG89dGhpcyxwPXRoaXMubG9jYWxbbC5tZXRob2RdLHE7 aWYobSl7cT1mdW5jdGlvbih0LHUpe3ZhciB2PXtqc29ucnBjOicyLjAnLGlkOm19 O3ZbdF09dTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5fd3JpdGUoSlNPTi5zdHJp bmdpZnkodiksayk7fSwwKTt9O31lbHNlIHE9ZnVuY3Rpb24oKXt9O2lmKCFwKXto LmVycm9yKCdNZXRob2QgIiVzIiBoYXMgbm90IGJlZW4gZGVmaW5lZCcsbC5tZXRo b2QpO3EoJ2Vycm9yJyx7Y29kZTotMzI2MDEsbWVzc2FnZTonTWV0aG9kIG5vdCBm b3VuZCcsZGF0YTpsLm1ldGhvZH0pO3JldHVybjt9bC5wYXJhbXMucHVzaChxLmJp bmQobnVsbCwncmVzdWx0JykpO2wucGFyYW1zLnB1c2gocS5iaW5kKG51bGwsJ2Vy cm9yJykpO3RyeXt2YXIgcz1wLmFwcGx5KGt8fG51bGwsbC5wYXJhbXMpO2lmKHR5 cGVvZiBzIT09J3VuZGVmaW5lZCcpcSgncmVzdWx0JyxzKTt9Y2F0Y2gocil7aC5l cnJvcignSW52b2thdGlvbiBvZiBSUEMgbWV0aG9kICVzIHJlc3VsdGVkIGluIHRo ZSBlcnJvcjogJXMnLGwubWV0aG9kLHIubWVzc2FnZSk7cSgnZXJyb3InLHtjb2Rl Oi0zMjYwMyxtZXNzYWdlOidJbnRlcm5hbCBlcnJvcicsZGF0YTpyLm1lc3NhZ2V9 KTt9fX0pO2UuZXhwb3J0cz1pO30pOwpfX2QoIlF1ZXVlIixbImNvcHlQcm9wZXJ0 aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2NvcHlQcm9wZXJ0 aWVzJyksaD17fTtmdW5jdGlvbiBpKGwsbSl7cmV0dXJuIGZ1bmN0aW9uKCl7bS5h cHBseShsLGFyZ3VtZW50cyk7fTt9ZnVuY3Rpb24gaigpe3ZhciBsPUFycmF5LnBy b3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7Zm9yKHZhciBtPTA7bTxsLmxl bmd0aDttKyspaWYodHlwZW9mIGxbbV0hPSd1bmRlZmluZWQnKXJldHVybiBsW21d O31mdW5jdGlvbiBrKGwpe3RoaXMuX29wdHM9Zyh7aW50ZXJ2YWw6MCxwcm9jZXNz b3I6bnVsbH0sbCk7dGhpcy5fcXVldWU9W107dGhpcy5fc3RvcHBlZD10cnVlO31n KGsucHJvdG90eXBlLHtfZGlzcGF0Y2g6ZnVuY3Rpb24obCl7aWYodGhpcy5fc3Rv cHBlZHx8dGhpcy5fcXVldWUubGVuZ3RoPT09MClyZXR1cm47aWYoIXRoaXMuX29w dHMucHJvY2Vzc29yKXt0aGlzLl9zdG9wcGVkPXRydWU7dGhyb3cgbmV3IEVycm9y KCdObyBwcm9jZXNzb3IgYXZhaWxhYmxlJyk7fWlmKHRoaXMuX29wdHMuaW50ZXJ2 YWwpe3RoaXMuX29wdHMucHJvY2Vzc29yLmNhbGwodGhpcyx0aGlzLl9xdWV1ZS5z aGlmdCgpKTt0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQoaSh0aGlzLHRoaXMuX2Rp c3BhdGNoKSx0aGlzLl9vcHRzLmludGVydmFsKTt9ZWxzZSB3aGlsZSh0aGlzLl9x dWV1ZS5sZW5ndGgpdGhpcy5fb3B0cy5wcm9jZXNzb3IuY2FsbCh0aGlzLHRoaXMu X3F1ZXVlLnNoaWZ0KCkpO30sZW5xdWV1ZTpmdW5jdGlvbihsKXtpZih0aGlzLl9v cHRzLnByb2Nlc3NvciYmIXRoaXMuX3N0b3BwZWQpe3RoaXMuX29wdHMucHJvY2Vz c29yLmNhbGwodGhpcyxsKTt9ZWxzZSB0aGlzLl9xdWV1ZS5wdXNoKGwpO3JldHVy biB0aGlzO30sc3RhcnQ6ZnVuY3Rpb24obCl7aWYobCl0aGlzLl9vcHRzLnByb2Nl c3Nvcj1sO3RoaXMuX3N0b3BwZWQ9ZmFsc2U7dGhpcy5fZGlzcGF0Y2goKTtyZXR1 cm4gdGhpczt9LGRpc3BhdGNoOmZ1bmN0aW9uKCl7dGhpcy5fZGlzcGF0Y2godHJ1 ZSk7fSxzdG9wOmZ1bmN0aW9uKGwpe3RoaXMuX3N0b3BwZWQ9dHJ1ZTtpZihqKGws ZmFsc2UpKWNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtyZXR1cm4gdGhpczt9 LG1lcmdlOmZ1bmN0aW9uKGwsbSl7dGhpcy5fcXVldWVbbT8ndW5zaGlmdCc6J3B1 c2gnXS5hcHBseSh0aGlzLl9xdWV1ZSxsLl9xdWV1ZSk7bC5fcXVldWU9W107dGhp cy5fZGlzcGF0Y2goKTtyZXR1cm4gdGhpczt9LGdldExlbmd0aDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9xdWV1ZS5sZW5ndGg7fX0pO2coayx7Z2V0OmZ1bmN0aW9u KGwsbSl7dmFyIG47aWYobCBpbiBoKXtuPWhbbF07fWVsc2Ugbj1oW2xdPW5ldyBr KG0pO3JldHVybiBuO30sZXhpc3RzOmZ1bmN0aW9uKGwpe3JldHVybiBsIGluIGg7 fSxyZW1vdmU6ZnVuY3Rpb24obCl7cmV0dXJuIGRlbGV0ZSBoW2xdO319KTtlLmV4 cG9ydHM9azt9KTsKX19kKCJYZEFyYml0ZXIiLFsiQXJiaXRlciIsIlF1ZXJ5U3Ry aW5nIiwiUXVldWUiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJi aXRlcicpLGg9YignUXVlcnlTdHJpbmcnKSxpPWIoJ1F1ZXVlJyksaj0vXmFwcHNc Li8udGVzdChsb2NhdGlvbi5ob3N0bmFtZSk/J2NhbnZhcyc6J3RhYicsaz17fSxs PVtdLG09bmV3IGkoKSxuPXtzZXRScGNIYW5kbGVyOmZ1bmN0aW9uKHApe20uc3Rh cnQocCk7fSxoYW5kbGVNZXNzYWdlOmZ1bmN0aW9uKHAscSl7dHJ5e2lmKHR5cGVv ZiBwPT0nc3RyaW5nJyl7aWYoL15GQl9SUEM6Ly50ZXN0KHApKXttLmVucXVldWUo W3Auc3Vic3RyaW5nKDcpLHtvcmlnaW46cX1dKTtyZXR1cm47fXA9SlNPTi5wYXJz ZShwKTt9aWYoIXAubWV0aG9kKXJldHVybjtpZih0eXBlb2YgcC5wYXJhbXM9PSdz

dHJpbmcnKXAucGFyYW1zPUpTT04ucGFyc2UocC5wYXJhbXMpO2cuaW5mb3JtKCdD b25uZWN0LlVuc2FmZS4nK3AubWV0aG9kLHAucGFyYW1zLGcuQkVIQVZJT1JfUEVS U0lTVEVOVCk7fWNhdGNoKHIpe319LHJlZ2lzdGVyOmZ1bmN0aW9uKHAscSl7dmFy IHI9cXx8ajtrW3JdPXA7Zy5pbmZvcm0oJ1hkQXJiaXRlci5yZWdpc3Rlcicscixn LkJFSEFWSU9SX1BFUlNJU1RFTlQpO3RoaXMuc2NoZWR1bGVEaXNwYXRjaCgpO3Jl dHVybiByO30sc2NoZWR1bGVEaXNwYXRjaDpmdW5jdGlvbigpe3ZhciBwPXRoaXMs cT00MjtmdW5jdGlvbiByKCl7dmFyIHM9bC5zaGlmdCgpO2lmKHMpcC5zZW5kLmFw cGx5KHAscyk7aWYobC5sZW5ndGgpc2V0VGltZW91dChyLHEpO31zZXRUaW1lb3V0 KHIscSk7fSxoYXNQcm94eTpmdW5jdGlvbihwKXt2YXIgcT1wfHxqO3JldHVybiAh IWtbcV07fSxzZW5kOmZ1bmN0aW9uKHAscSxyKXt2YXIgcz1xfHxqO2lmKCFrW3Nd KXtsLnB1c2goW3MscCxyXSk7cmV0dXJuIGZhbHNlO31pZih0eXBlb2YgcCE9PSdz dHJpbmcnKXA9aC5lbmNvZGUocCk7a1tzXS5wcm94eU1lc3NhZ2UocCxyKTtyZXR1 cm4gdHJ1ZTt9fSxvPWEuWGRBcmJpdGVyO2EuWGRBcmJpdGVyPW47aWYobyYmby5f bS5sZW5ndGgpe24ucmVnaXN0ZXIoby5fcCk7d2hpbGUoby5fbS5sZW5ndGgpbi5o YW5kbGVNZXNzYWdlKG8uX20uc2hpZnQoKSk7fWUuZXhwb3J0cz1uO30pOwpfX2Qo IlBsYXRmb3JtQXBwQ29udHJvbGxlciIsWyJBcmJpdGVyIiwiQXN5bmNSZXF1ZXN0 IiwiQm9vdGxvYWRlciIsIkNTUyIsIkRpYWxvZyIsIkpTT05SUEMiLCJVUkkiLCJW ZWN0b3IiLCJYZEFyYml0ZXIiLCJTdHlsZSIsImdlIiwiY29weVByb3BlcnRpZXMi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9Yign QXN5bmNSZXF1ZXN0JyksaT1iKCdCb290bG9hZGVyJyksaj1iKCdDU1MnKSxrPWIo J0RpYWxvZycpLGw9YignSlNPTlJQQycpLG09YignVVJJJyksbj1iKCdWZWN0b3In KSxvPWIoJ1hkQXJiaXRlcicpLHA9YignU3R5bGUnKSxxPWIoJ2dlJykscj1iKCdj b3B5UHJvcGVydGllcycpLHMsdD10cnVlLHU9MCx2PWZhbHNlLHcseD1mYWxzZSx5 PXdpbmRvdy5fY3N0YXJ0LHo9MCxhYT17fSxiYT1uZXcgbChmdW5jdGlvbihvYSl7 by5zZW5kKCdGQl9SUEM6JytvYSk7fSk7ZnVuY3Rpb24gY2Eob2Epe3ZhciBwYT1w YXJzZUludChvYS54LDEwKSxxYT1wYXJzZUludChvYS55LDEwKTtpZihwYT49MCYm cWE+PTApd2luZG93LnNjcm9sbFRvKHBhLHFhKTt9ZnVuY3Rpb24gZGEob2Epe3Zh ciBwYT1xKG9hLmZyYW1lLnJlcGxhY2UoL19mYl9odHRwcyQvLCcnKSk7aWYocGEp e2ouYWRkQ2xhc3MocGEsJ25vcmVzaXplJyk7cGEuc3R5bGUuaGVpZ2h0PW9hLmhl aWdodCsncHgnO319ZnVuY3Rpb24gZWEoKXt2YXIgb2E9cyxwYT0wLHFhPTA7d2hp bGUob2Epe3BhKz1wYXJzZUludChvYS5vZmZzZXRMZWZ0LDEwKTtxYSs9cGFyc2VJ bnQob2Eub2Zmc2V0VG9wLDEwKTtvYT1vYS5vZmZzZXRQYXJlbnQ7fXZhciByYT1u LmdldFZpZXdwb3J0RGltZW5zaW9ucygpLHNhPW4uZ2V0U2Nyb2xsUG9zaXRpb24o KTtyZXR1cm4ge2NsaWVudFdpZHRoOnJhLngsY2xpZW50SGVpZ2h0OnJhLnksc2Ny b2xsTGVmdDpzYS54LHNjcm9sbFRvcDpzYS55LG9mZnNldExlZnQ6cGEsb2Zmc2V0 VG9wOnFhfTt9ZnVuY3Rpb24gZmEoKXt2YXIgb2E9KGxvY2F0aW9uLmhyZWYuc3Bs aXQoJyMnKVsxXXx8JycpO3JldHVybiBkZWNvZGVVUklDb21wb25lbnQob2EpO31m dW5jdGlvbiBnYShvYSl7bG9jYXRpb24uaGFzaD1vYTt9ZnVuY3Rpb24gaGEob2Es cGEscWEpe3ZhciByYTtpZihvYS5tZXRob2Q9PSdwZXJtaXNzaW9ucy5vYXV0aCcp e3JhPScvY29ubmVjdC91aXNlcnZlci5waHAnO29hLm1ldGhvZD0ncGVybWlzc2lv bnMucmVxdWVzdCc7b2EucGVybXM9b2Euc2NvcGU7ZGVsZXRlIG9hLnNjb3BlO31l bHNle3JhPScvZmJtbC9hamF4L2RpYWxvZy8nK29hLm1ldGhvZC5yZXBsYWNlKC9c Li9nLCdfJyk7ZGVsZXRlIG9hLm1ldGhvZDt9ZGVsZXRlIG9hLmFjY2Vzc190b2tl bjtkZWxldGUgb2EubmV4dDtvYS5yZWRpcmVjdF91cmk9dGhpcy5vcmlnaW47dmFy IHNhPW5ldyBoKCkuc2V0TWV0aG9kKCdHRVQnKS5zZXRSZWFkT25seSh0cnVlKS5z ZXRVUkkobShyYSkuc2V0UXVlcnlEYXRhKG9hKSk7bmV3IGsoKS5zZXRBc3luYyhz YSkuc2V0TW9kYWwodHJ1ZSkuc2V0V2lkZURpYWxvZyh0cnVlKS5zaG93KCkuc2V0 Q2xvc2VIYW5kbGVyKGZ1bmN0aW9uKHRhKXtwYSh0YSk7fSk7fWZ1bmN0aW9uIGlh KG9hKXt2PW9hO31mdW5jdGlvbiBqYShvYSxwYSl7eD1vYTt3PXBhO31iYS5zdHVi KCduYXZpZ2F0ZScpO2Z1bmN0aW9uIGthKG9hKXtpZih2KXtiYS5yZW1vdGUubmF2 aWdhdGUob2EpO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fWZ1bmN0aW9uIGxh KG9hKXt2YXIgcGE9b2EudGltZS15K3o7c3dpdGNoKG9hLm5hbWUpe2Nhc2UgJ1N0 b3BJZnJhbWVBcHBUdGlUaW1lcic6ej1wYTtyZXR1cm4ge3RpbWVfZGVsdGFfbXM6 cGEsdHlwZToidHRpIn07Y2FzZSAnU3RhcnRJZnJhbWVBcHBUdGlUaW1lcic6eT1v YS50aW1lO2JyZWFrO2Nhc2UgJ1JlY29yZElmcmFtZUFwcFR0aSc6aWYoeClpLmxv YWRNb2R1bGVzKFsnQ2FudmFzSUZyYW1lTG9nZ2VyJ10sZnVuY3Rpb24ocWEpe3Fh LmxvZyhwYSxvYS5hcHBJZCx3KTt9KTtyZXR1cm4ge3RpbWVfZGVsdGFfbXM6cGEs dHlwZToidHRpIn07fX1iYS5sb2NhbC5zZXRTaXplPWRhO2JhLmxvY2FsLmdldFBh Z2VJbmZvPWVhO2JhLmxvY2FsLmdldEhhc2g9ZmE7YmEubG9jYWwuc2V0SGFzaD1n YTtiYS5sb2NhbC5zY3JvbGxUbz1jYTtiYS5sb2NhbC5zaG93RGlhbG9nPWhhO2Jh

LmxvY2FsLnNldE5hdmlnYXRpb25FbmFibGVkPWlhO2JhLmxvY2FsLmxvZ1R0aU1l c3NhZ2U9bGE7by5zZXRScGNIYW5kbGVyKGZ1bmN0aW9uKG9hKXtiYS5yZWFkLmFw cGx5KGJhLG9hKTt9KTtiYS5zdHViKCdoaWRlRmxhc2hPYmplY3RzJyk7Zy5zdWJz Y3JpYmUoJ2xheWVyX3Nob3duJyxmdW5jdGlvbigpe2lmKCsrdT09PTEpaWYodCl7 YmEucmVtb3RlLmhpZGVGbGFzaE9iamVjdHMoKTt9ZWxzZSBwLnNldChxKCdwYWdl bGV0X2NhbnZhc19jb250ZW50JyksJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTt9KTti YS5zdHViKCdzaG93Rmxhc2hPYmplY3RzJyk7Zy5zdWJzY3JpYmUoJ2xheWVyX2hp ZGRlbicsZnVuY3Rpb24oKXtpZigtLXU9PT0wKXtpZih0KXtiYS5yZW1vdGUuc2hv d0ZsYXNoT2JqZWN0cygpO31lbHNlIHAuc2V0KHEoJ3BhZ2VsZXRfY2FudmFzX2Nv bnRlbnQnKSwndmlzaWJpbGl0eScsJycpO31lbHNlIGlmKHU8MCl1PTA7fSk7ZnVu Y3Rpb24gbWEob2Epe2FhW29hLm5hbWVdPW9hO3ZhciBwYT1xKG9hLm5hbWUpO2lm KHBhKXM9cGE7fXZhciBuYT17c2V0QWN0aXZlSWZyYW1lOmZ1bmN0aW9uKG9hKXtz PW9hO30sc2V0SW5mb3JtQXBwT25MYXllckNoYW5nZTpmdW5jdGlvbihvYSl7dD1v YTt9LHNldE5hdmlnYXRpb25FbmFibGVkOmlhLHNldFR0aUVuYWJsZWQ6amEsaGFu ZGxlTmF2aWdhdGlvbjprYSxpbml0Om1hLGdldEZyYW1lUGFyYW1zOmZ1bmN0aW9u KG9hKXtyZXR1cm4gYWFbb2FdO319O2EuUGxhdGZvcm1BcHBDb250cm9sbGVyPW5h O2UuZXhwb3J0cz1uYTt9KTsKX19kKCJGYXZJY29uIixbIkRPTSJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET00nKSxoLGk9e3NldDpmdW5jdGlvbihq KXtpZihoKWcucmVtb3ZlKGgpO2g9Zy5jcmVhdGUoJ2xpbmsnLHt0eXBlOidpbWFn ZS94LWljb24nLHJlbDonaWNvbicsaHJlZjpqfSk7Zy5hcHBlbmRDb250ZW50KGcu ZmluZChkb2N1bWVudCwnaGVhZCcpLGgpO319O2UuZXhwb3J0cz1pO30pOwpfX2Qo IlBsYXRmb3JtQ2FudmFzQ29udHJvbGxlciIsWyJQbGF0Zm9ybUFwcENvbnRyb2xs ZXIiLCJET01FdmVudExpc3RlbmVyIiwiVVJJIiwiQ1NTIiwiRE9NIiwiRG9jdW1l bnRUaXRsZSIsIkZhdkljb24iLCJIVE1MIiwiZ2UiLCJ0eCIsInN0YXJ0c1dpdGgi LCJBc3luY1JlcXVlc3QiLCJVc2VyQWN0aXZpdHkiLCJVSVBhZ2VsZXQiLCJQYWdl VHJhbnNpdGlvbnMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignUGxh dGZvcm1BcHBDb250cm9sbGVyJyksaD1iKCdET01FdmVudExpc3RlbmVyJyksaT1i KCdVUkknKSxqPWIoJ0NTUycpLGs9YignRE9NJyksbD1iKCdEb2N1bWVudFRpdGxl JyksbT1iKCdGYXZJY29uJyksbj1iKCdIVE1MJyksbz1iKCdnZScpLHA9YigndHgn KSxxPWIoJ3N0YXJ0c1dpdGgnKSxyPWIoJ0FzeW5jUmVxdWVzdCcpLHM9YignVXNl ckFjdGl2aXR5JyksdD1iKCdVSVBhZ2VsZXQnKSx1PWIoJ1BhZ2VUcmFuc2l0aW9u cycpLHY9J2lmcmFtZV9jYW52YXMnLHc9MjQwMDAwLHg9NTAwMCx5LHosYWEsYmEs Y2E7ZnVuY3Rpb24gZGEobGEpe3ZhciBtYT1vKCdwYWdlbGV0X2NhbnZhc19jb250 ZW50Jyk7ai5oaWRlKG1hKTtrLnNjcnkobWEsJ2lmcmFtZScpLmZvckVhY2goZnVu Y3Rpb24obmEpe25hLnNyYz0nJzt9KTtrLnNldENvbnRlbnQobygnY2FudmFzX3Ro cm9iYmVyX3RleHQnKSxwLl8oIk1lbXVhdCB7YXBwLW5hbWV9Iix7J2FwcC1uYW1l JzpsYX0pKTt9ZnVuY3Rpb24gZWEobGEsbWEsbmEsb2EscGEpe3ZhciBxYT1vKCdw YWdlbGV0X2NhbnZhc19mb290ZXJfY29udGVudCcpLHJhPW8oJ3BhZ2VsZXRfY2Fu dmFzX2NvbnRlbnQnKSxzYT1vKCdwYWdlbGV0X2NhbnZhc19pcF9iYW5uZXJfY29u dGVudCcpO2suc2V0Q29udGVudChyYSxuKGxhKSk7ay5zZXRDb250ZW50KHFhLG4o bWEpKTtrLnNldENvbnRlbnQoc2EscGEpO2ouc2hvdyhyYSk7bC5zZXQobmEpO20u c2V0KG9hKTt9ZnVuY3Rpb24gZmEobGEpe2lmKGxhLmdldFN1YmRvbWFpbigpIT0n YXBwcycpcmV0dXJuIGZhbHNlO3ZhciBtYSxuYT1rLnNjcnkoZG9jdW1lbnQsJ2Fb ZGF0YS1hcHBuYW1lXScpO2Zvcih2YXIgb2E9MDtvYTxuYS5sZW5ndGg7b2ErKylp ZihuYVtvYV0uaHJlZj09bGEpe21hPW5hW29hXS5nZXRBdHRyaWJ1dGUoJ2RhdGEt YXBwbmFtZScpO2JyZWFrO31pZighbWEpcmV0dXJuIGZhbHNlO2RhKG1hKTt2YXIg cGE9bGEuZ2V0UGF0aCgpLnNwbGl0KCcvJylbMV07aWYobygncGFnZWxldF9jYW52 YXNfc3Rvcnlib3gnKSluZXcgcigpLnNldFVSSShuZXcgaSgnL2FqYXgvY2FudmFz L3N0b3J5Ym94JykpLnNldERhdGEoe2ZiX2FwcF9uYW1lOnBhfSkuc2V0TWV0aG9k KCdHRVQnKS5zZXRSZWFkT25seSh0cnVlKS5zZW5kKCk7dmFyIHFhPWxhLmdldFVu cXVhbGlmaWVkVVJJKCk7bmV3IHIoKS5zZXRVUkkobmV3IGkoJy9hamF4L2NhbnZh cy5waHAnKSkuc2V0RGF0YSh7ZmJfYXBwX25hbWU6cGEsdXJpOnFhLnRvU3RyaW5n KCl9KS5zZXRNZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUpLnNldFN0YXR1 c0VsZW1lbnQoJ2NhbnZhc190aHJvYmJlcicpLnNldEhhbmRsZXIoZnVuY3Rpb24o cmEpe3ZhciBzYT1yYS5nZXRQYXlsb2FkKCk7ai5jb25kaXRpb25DbGFzcyhkb2N1 bWVudC5ib2R5LCdjZW50ZXJfZml4ZWRfd2lkdGhfYXBwJywhc2EuaXNfbGlxdWlk KTtlYShzYS5tYWluX2h0bWwsc2EuZm9vdGVyX2h0bWwsc2EucGFnZV90aXRsZSxz YS5mYXZpY29uLHNhLnN0YXJ0X25vd19iYW5uZXJfbWFya3VwKTt1LnRyYW5zaXRp b25Db21wbGV0ZSgpO30pLnNlbmQoKTtyZXR1cm4gdHJ1ZTt9ZnVuY3Rpb24gZ2Eo bGEpe2lmKCFxKGxhLmdldFBhdGgoKSwnLycrYWErJy8nKSYmIXEobGEuZ2V0UGF0

aCgpLCcvJyt6KycvJykpcmV0dXJuIGZhbHNlO2xhPWxhLmdldFVucXVhbGlmaWVk VVJJKCk7bGEuc2V0UGF0aCgnLycrbGEuZ2V0UGF0aCgpLnNwbGl0KCcvJykuc2xp Y2UoMikuam9pbignLycpKTtyZXR1cm4gZy5oYW5kbGVOYXZpZ2F0aW9uKGxhLnRv U3RyaW5nKCkpO31mdW5jdGlvbiBoYShsYSl7cmV0dXJuIGdhKGxhKXx8ZmEobGEp O31mdW5jdGlvbiBpYSgpe3ZhciBsYT1EYXRlLm5vdygpO2lmKCh5PjApJiYobGEt YmE+PXcpKXtiYT1sYTt0LmxvYWRGcm9tRW5kcG9pbnQoJ1dlYkVnb1BhbmUnLCdw YWdlbGV0X2Vnb19wYW5lJyx7cGlkOjksZGF0YTpbeiwrK2NhXX0se2J1bmRsZTpm YWxzZX0pO319cy5zdWJzY3JpYmUoZnVuY3Rpb24oKXt2YXIgbGE9RGF0ZS5ub3co KTtpZihsYS1iYT49dy14KXNldFRpbWVvdXQoaWEseCk7fSk7ZnVuY3Rpb24gamEo bGEsbWEsbmEsb2Epe3k9bmE7YmE9RGF0ZS5ub3coKTtjYT0wO2lmKHomJnohPT1s YSlpYSgpO3o9bGE7YWE9bWE7dmFyIHBhPW8odik7aWYocGEpe2cuc2V0QWN0aXZl SWZyYW1lKG8odikpO2guYWRkKHBhLCdsb2FkJyxmdW5jdGlvbigpe2cuc2V0TmF2 aWdhdGlvbkVuYWJsZWQoZmFsc2UpO30pO31nLnNldEluZm9ybUFwcE9uTGF5ZXJD aGFuZ2UoIW9hKTtnLnNldE5hdmlnYXRpb25FbmFibGVkKGZhbHNlKTt1LnJlZ2lz dGVySGFuZGxlcihoYSk7fXZhciBrYT17c2V0dXA6amF9O2UuZXhwb3J0cz1rYTt9 KTsKX19kKCJQbHVnaW5QZXJtcyIsWyJET01FdmVudCIsIkRPTUV2ZW50TGlzdGVu ZXIiLCJQb3B1cFdpbmRvdyIsIlVSSSIsImJpbmQiLCJjb3B5UHJvcGVydGllcyJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET01FdmVudCcpLGg9Yign RE9NRXZlbnRMaXN0ZW5lcicpLGk9YignUG9wdXBXaW5kb3cnKSxqPWIoJ1VSSScp LGs9YignYmluZCcpLGw9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBtKG4s byl7bCh0aGlzLHtyZXR1cm5fcGFyYW1zOmouZ2V0UmVxdWVzdFVSSSgpLmdldFF1 ZXJ5RGF0YSgpLGxvZ2luX3BhcmFtczp7fSxwZXJtc19wYXJhbXM6e30scGVybXM6 W10scGx1Z2luOm4sYXBwOm99KTt0aGlzLmFkZFJldHVyblBhcmFtcyh7cmV0Oidw ZXJtcyd9KTtkZWxldGUgdGhpcy5yZXR1cm5fcGFyYW1zLmhhc2g7fWwobS5wcm90 b3R5cGUse2FkZFJldHVyblBhcmFtczpmdW5jdGlvbihuKXtsKHRoaXMucmV0dXJu X3BhcmFtcyxuKTt9LGFkZExvZ2luUGFyYW1zOmZ1bmN0aW9uKG4pe2wodGhpcy5s b2dpbl9wYXJhbXMsbik7fSxhZGRQZXJtc1BhcmFtczpmdW5jdGlvbihuKXtsKHRo aXMucGVybXNfcGFyYW1zLG4pO30sYWRkUGVybXM6ZnVuY3Rpb24obil7dGhpcy5w ZXJtcy5wdXNoLmFwcGx5KHRoaXMucGVybXMsbik7fSxzdGFydDpmdW5jdGlvbigp e3ZhciBuPWooJy9kaWFsb2cvcGx1Z2luLnBlcm1zJykuYWRkUXVlcnlEYXRhKHRo aXMucGVybXNfcGFyYW1zKS5hZGRRdWVyeURhdGEoe2Rpc3BsYXk6J3BvcHVwJyxh cHBfaWQ6dGhpcy5hcHAscGVybXM6dGhpcy5wZXJtcy5qb2luKCcsJyksc2VjdXJl OmouZ2V0UmVxdWVzdFVSSSgpLmlzU2VjdXJlKCksc29jaWFsX3BsdWdpbjp0aGlz LnBsdWdpbixyZXR1cm5fcGFyYW1zOkpTT04uc3RyaW5naWZ5KHRoaXMucmV0dXJu X3BhcmFtcyksbG9naW5fcGFyYW1zOkpTT04uc3RyaW5naWZ5KHRoaXMubG9naW5f cGFyYW1zKX0pO3RoaXMucG9wdXA9aS5vcGVuKG4udG9TdHJpbmcoKSwyMTAsNDUw KTtoLmFkZCh3aW5kb3csJ21lc3NhZ2UnLGZ1bmN0aW9uKGV2ZW50KXtpZigoL1wu ZmFjZWJvb2tcLmNvbSQvKS50ZXN0KGV2ZW50Lm9yaWdpbikpaWYoL15GQl9QT1BV UDovLnRlc3QoZXZlbnQuZGF0YSkpe3ZhciBvPUpTT04ucGFyc2UoZXZlbnQuZGF0 YS5zdWJzdHJpbmcoOSkpO2lmKCdyZWxvYWQnIGluIG8pZG9jdW1lbnQubG9jYXRp b24ucmVwbGFjZShvLnJlbG9hZCk7fX0pO319KTttLnN0YXJ0ZXI9ZnVuY3Rpb24o bixvLHAscSxyLHMpe3ZhciB0PW5ldyBtKG4sbyk7dC5hZGRSZXR1cm5QYXJhbXMo cXx8e30pO3QuYWRkTG9naW5QYXJhbXMocnx8e30pO3QuYWRkUGVybXNQYXJhbXMo c3x8e30pO3QuYWRkUGVybXMocHx8W10pO3JldHVybiBrKHQsdC5zdGFydCk7fTtt Lmxpc3Rlbj1mdW5jdGlvbihuLG8scCxxLHIscyx0KXtoLmFkZChuLCdjbGljaycs ZnVuY3Rpb24odSl7bmV3IGcodSkua2lsbCgpO20uc3RhcnRlcihvLHAscSxyLHMs dCkoKTt9KTt9O2UuZXhwb3J0cz1tO30pOwpfX2QoIlVudmVyaWZpZWRYRCIsWyJY RCIsIlhEVW52ZXJpZmllZENoYW5uZWwiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9YignWEQnKS5VbnZlcmlmaWVkWEQsaD1jKCdYRFVudmVyaWZpZWRDaGFu bmVsJykuY2hhbm5lbDtnLmluaXQoe2NoYW5uZWxVcmw6aH0pO2UuZXhwb3J0cz1n O30pOwpfX2QoIlBsdWdpblJlc2l6ZSIsWyJMb2ciLCJVbnZlcmlmaWVkWEQiLCJi aW5kIiwiY29weVByb3BlcnRpZXMiLCJjdXJyeSJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCdMb2cnKSxoPWIoJ1VudmVyaWZpZWRYRCcpLGk9YignYmlu ZCcpLGo9YignY29weVByb3BlcnRpZXMnKSxrPWIoJ2N1cnJ5Jyk7ZnVuY3Rpb24g bChvKXtvPW98fGRvY3VtZW50LmJvZHk7cmV0dXJuIG8ub2Zmc2V0V2lkdGgrby5v ZmZzZXRMZWZ0O31mdW5jdGlvbiBtKG8pe289b3x8ZG9jdW1lbnQuYm9keTtyZXR1 cm4gby5vZmZzZXRIZWlnaHQrby5vZmZzZXRUb3A7fWZ1bmN0aW9uIG4obyxwLGV2 ZW50KXt0aGlzLmNhbGNXaWR0aD1vfHxsO3RoaXMuY2FsY0hlaWdodD1wfHxtO3Ro aXMud2lkdGg9dW5kZWZpbmVkO3RoaXMuaGVpZ2h0PXVuZGVmaW5lZDt0aGlzLmV2 ZW50PWV2ZW50fHwncmVzaXplJzt9aihuLnByb3RvdHlwZSx7cmVzaXplOmZ1bmN0

aW9uKCl7dmFyIG89dGhpcy5jYWxjV2lkdGgoKSxwPXRoaXMuY2FsY0hlaWdodCgp O2lmKG8hPT10aGlzLndpZHRofHxwIT09dGhpcy5oZWlnaHQpe2cuZGVidWcoJ1Jl c2l6aW5nIFBsdWdpbjogKCVzLCAlcywgJXMpJyxvLHAsdGhpcy5ldmVudCk7dGhp cy53aWR0aD1vO3RoaXMuaGVpZ2h0PXA7aC5zZW5kKHt0eXBlOnRoaXMuZXZlbnQs d2lkdGg6byxoZWlnaHQ6cH0pO31yZXR1cm4gdGhpczt9LGF1dG86ZnVuY3Rpb24o byl7c2V0SW50ZXJ2YWwoaSh0aGlzLHRoaXMucmVzaXplKSxvfHwyNTApO3JldHVy biB0aGlzO319KTtuLmF1dG89ZnVuY3Rpb24obyxldmVudCxwKXtyZXR1cm4gbmV3 IG4oayhsLG8pLGsobSxvKSxldmVudCkucmVzaXplKCkuYXV0byhwKTt9O24uYXV0 b0hlaWdodD1mdW5jdGlvbihvLHAsZXZlbnQscSl7cmV0dXJuIG5ldyBuKGZ1bmN0 aW9uKCl7cmV0dXJuIG87fSxrKG0scCksZXZlbnQpLnJlc2l6ZSgpLmF1dG8ocSk7 fTtlLmV4cG9ydHM9bjt9KTsKX19kKCJQbHVnaW5TaGFyZUJ1dHRvbiIsWyJET01F dmVudCIsIkRPTUV2ZW50TGlzdGVuZXIiLCJQbHVnaW5SZXNpemUiLCJQb3B1cFdp bmRvdyIsIlVzZXJBZ2VudCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCdET01FdmVudCcpLGg9YignRE9NRXZlbnRMaXN0ZW5lcicpLGk9YignUGx1Z2lu UmVzaXplJyksaj1iKCdQb3B1cFdpbmRvdycpLGs9YignVXNlckFnZW50JyksbD17 bGlzdGVuOmZ1bmN0aW9uKG0sbil7dmFyIG89bS5ocmVmO2guYWRkKG0sJ2NsaWNr JyxmdW5jdGlvbihwKXtuZXcgZyhwKS5raWxsKCk7ai5vcGVuKG8sMzQwLDY3MCk7 fSk7fSxyZXNpemU6ZnVuY3Rpb24obSl7dmFyIG49ay5maXJlZm94KCl8fGsuaWUo KT49OT8xOjA7bmV3IGkoZnVuY3Rpb24oKXtyZXR1cm4gbS5vZmZzZXRXaWR0aCtt Lm9mZnNldExlZnQrbjt9LGZ1bmN0aW9uKCl7cmV0dXJuIG0ub2Zmc2V0SGVpZ2h0 K20ub2Zmc2V0VG9wO30pLnJlc2l6ZSgpLmF1dG8oKTt9fTtlLmV4cG9ydHM9bDt9 KTsKX19kKCJQbHVnaW5YRFJlYWR5IixbIkFyYml0ZXIiLCJVbnZlcmlmaWVkWEQi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9Yign VW52ZXJpZmllZFhEJyksaT17aGFuZGxlTWVzc2FnZTpmdW5jdGlvbihqKXtpZigh ai5tZXRob2QpcmV0dXJuO3RyeXtnLmluZm9ybSgnQ29ubmVjdC5VbnNhZmUuJytq Lm1ldGhvZCxKU09OLnBhcnNlKGoucGFyYW1zKSxnLkJFSEFWSU9SX1BFUlNJU1RF TlQpO31jYXRjaChrKXt9fX07YS5YZEFyYml0ZXI9aTtoLnNlbmQoe3hkX2FjdGlv bjoncGx1Z2luX3JlYWR5JyxuYW1lOndpbmRvdy5uYW1lfSk7ZS5leHBvcnRzPW51 bGw7fSk7CldpZGdldEFyYml0ZXI9e19maW5kU2libGluZ3M6ZnVuY3Rpb24oKXtp ZihXaWRnZXRBcmJpdGVyLl9zaWJsaW5ncylyZXR1cm47V2lkZ2V0QXJiaXRlci5f c2libGluZ3M9W107Zm9yKHZhciBhPXBhcmVudC5mcmFtZXMubGVuZ3RoLTE7YT49 MDthLS0pdHJ5e2lmKHBhcmVudC5mcmFtZXNbYV0mJnBhcmVudC5mcmFtZXNbYV0u QXJiaXRlciYmcGFyZW50LmZyYW1lc1thXS5BcmJpdGVyLmluZm9ybSlXaWRnZXRB cmJpdGVyLl9zaWJsaW5ncy5wdXNoKHBhcmVudC5mcmFtZXNbYV0uQXJiaXRlcik7 fWNhdGNoKGIpe319LGluZm9ybTpmdW5jdGlvbigpe1dpZGdldEFyYml0ZXIuX2Zp bmRTaWJsaW5ncygpO3ZhciBhPSRBKGFyZ3VtZW50cyk7V2lkZ2V0QXJiaXRlci5f c2libGluZ3MuZm9yRWFjaChmdW5jdGlvbihiKXtiLmluZm9ybS5hcHBseShiLGEp O30pO319OwpfX2QoImxlZ2FjeTp4ZC1hcmJpdGVyIixbIlhkQXJiaXRlciJdLGZ1 bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIoJ1hkQXJiaXRlcicpO30sMyk7 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=FAMlMiglKAL.js Content-Type: application/x-javascript; charset=utf-8; name=FAMlMiglKAL.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yn/r/FAMlMiglKAL.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDMwNTMyLDE3ODE0MjU0NyovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIm1DMEFsIl0pOyB9CgpfX2Qo IkFqYXhSZXF1ZXN0IixbIkVycm9yVXRpbHMiLCJLZXlzIiwiVVJJIiwiVXNlckFn ZW50IiwiWEhSIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7dmFyIGc9YignRXJyb3JVdGlscycpLGg9YignS2V5cycpLGk9YignVVJJJyks aj1iKCdVc2VyQWdlbnQnKSxrPWIoJ1hIUicpLGw9YignY29weVByb3BlcnRpZXMn KTtmdW5jdGlvbiBtKHEscixzKXt0aGlzLnhocj1rLmNyZWF0ZSgpO2lmKCEociBp bnN0YW5jZW9mIGkpKXI9bmV3IGkocik7aWYocyYmcT09J0dFVCcpe3Iuc2V0UXVl cnlEYXRhKHMpO31lbHNlIHRoaXMuX3BhcmFtcz1zO3RoaXMubWV0aG9kPXE7dGhp cy51cmk9cjt0aGlzLnhoci5vcGVuKHEscik7fXZhciBuPXdpbmRvdy5YTUxIdHRw UmVxdWVzdCYmKCd3aXRoQ3JlZGVudGlhbHMnIGluIG5ldyBYTUxIdHRwUmVxdWVz dCgpKTttLnN1cHBvcnRzQ09SUz1mdW5jdGlvbigpe3JldHVybiBuO307bS5FUlJP Uj0nYXI6ZXJyb3InO20uVElNRU9VVD0nYXI6dGltZW91dCc7bS5QUk9YWV9FUlJP Uj0nYXI6cHJveHkgZXJyb3InO20uVFJBTlNQT1JUX0VSUk9SPSdhcjp0cmFuc3Bv

cnQgZXJyb3InO20uU0VSVkVSX0VSUk9SPSdhcjpodHRwIGVycm9yJzttLlBBUlNF X0VSUk9SPSdhcjpwYXJzZSBlcnJvcic7bS5faW5mbGlnaHQ9W107ZnVuY3Rpb24g bygpe3ZhciBxPW0uX2luZmxpZ2h0O20uX2luZmxpZ2h0PVtdO3EuZm9yRWFjaChm dW5jdGlvbihyKXtyLmFib3J0KCk7fSk7fWZ1bmN0aW9uIHAocSl7cS5vbkpTT049 cS5vbkVycm9yPXEub25TdWNjZXNzPW51bGw7Y2xlYXJUaW1lb3V0KHEuX3RpbWVy KTtpZihxLnhociYmcS54aHIucmVhZHlTdGF0ZTw0KXtxLnhoci5hYm9ydCgpO3Eu eGhyPW51bGw7fW0uX2luZmxpZ2h0PW0uX2luZmxpZ2h0LmZpbHRlcihmdW5jdGlv bihyKXtyZXR1cm4gciYmciE9cSYmci54aHImJnIueGhyLnJlYWR5U3RhdGU8NDt9 KTt9bChtLnByb3RvdHlwZSx7dGltZW91dDo2MDAwMCxwcmVsdWRlOi9eZm9yIFwo OztcKTsvLHN0YXR1czpudWxsLF9lb2w6LTEsX2NhbGw6ZnVuY3Rpb24ocSl7aWYo dGhpc1txXSl0aGlzW3FdKHRoaXMpO30sX3BhcnNlU3RhdHVzOmZ1bmN0aW9uKCl7 dmFyIHE7dHJ5e3RoaXMuc3RhdHVzPXRoaXMueGhyLnN0YXR1cztxPXRoaXMueGhy LnN0YXR1c1RleHQ7fWNhdGNoKHIpe2lmKHRoaXMueGhyLnJlYWR5U3RhdGU+PTQp e3RoaXMuZXJyb3JUeXBlPW0uVFJBTlNQT1JUX0VSUk9SO3RoaXMuZXJyb3JUZXh0 PXIubWVzc2FnZTt9cmV0dXJuO31pZih0aGlzLnN0YXR1cz09PTAmJiEoL14oZmls ZXxmdHApLy50ZXN0KHRoaXMudXJpKSkpe3RoaXMuZXJyb3JUeXBlPW0uVFJBTlNQ T1JUX0VSUk9SO31lbHNlIGlmKHRoaXMuc3RhdHVzPj0xMDAmJnRoaXMuc3RhdHVz PDIwMCl7dGhpcy5lcnJvclR5cGU9bS5QUk9YWV9FUlJPUjt9ZWxzZSBpZih0aGlz LnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDApe3JldHVybjt9ZWxzZSBpZih0 aGlzLnN0YXR1cz49MzAwJiZ0aGlzLnN0YXR1czw0MDApe3RoaXMuZXJyb3JUeXBl PW0uUFJPWFlfRVJST1I7fWVsc2UgaWYodGhpcy5zdGF0dXM+PTQwMCYmdGhpcy5z dGF0dXM8NTAwKXt0aGlzLmVycm9yVHlwZT1tLlNFUlZFUl9FUlJPUjt9ZWxzZSBp Zih0aGlzLnN0YXR1cz49NTAwJiZ0aGlzLnN0YXR1czw2MDApe3RoaXMuZXJyb3JU eXBlPW0uUFJPWFlfRVJST1I7fWVsc2UgaWYodGhpcy5zdGF0dXM9PTEyMjMpe3Jl dHVybjt9ZWxzZSBpZih0aGlzLnN0YXR1cz49MTIwMDEmJnRoaXMuc3RhdHVzPD0x MjE1Nil7dGhpcy5lcnJvclR5cGU9bS5UUkFOU1BPUlRfRVJST1I7fWVsc2V7cT0n dW5yZWNvZ25pemVkIHN0YXR1cyBjb2RlOiAnK3RoaXMuc3RhdHVzO3RoaXMuZXJy b3JUeXBlPW0uRVJST1I7fWlmKCF0aGlzLmVycm9yVGV4dCl0aGlzLmVycm9yVGV4 dD1xO30sX3BhcnNlUmVzcG9uc2U6ZnVuY3Rpb24oKXt2YXIgcSxyPXRoaXMueGhy LnJlYWR5U3RhdGU7dHJ5e3E9dGhpcy54aHIucmVzcG9uc2VUZXh0fHwnJzt9Y2F0 Y2gocyl7aWYocj49NCl7dGhpcy5lcnJvclR5cGU9bS5FUlJPUjt0aGlzLmVycm9y VGV4dD0ncmVzcG9uc2VUZXh0IG5vdCBhdmFpbGFibGUgLSAnK3MubWVzc2FnZTt9 cmV0dXJuO313aGlsZSh0aGlzLnhocil7dmFyIHQ9dGhpcy5fZW9sKzEsdT1xLmlu ZGV4T2YoJ1xuJyx0KTtpZih1PDAmJnI9PTQpdT1xLmxlbmd0aDtpZih1PD10aGlz Ll9lb2wpYnJlYWs7dmFyIHY9cS5zdWJzdHIodCx1LXQpLnJlcGxhY2UoL15ccyp8 XHMqJC9nLCcnKTtpZih0PT09MCYmdGhpcy5wcmVsdWRlKWlmKHRoaXMucHJlbHVk ZS50ZXN0KHYpKXY9di5yZXBsYWNlKHRoaXMucHJlbHVkZSwnJyk7dGhpcy5fZW9s PXU7aWYodil7dHJ5e3RoaXMuanNvbj1KU09OLnBhcnNlKHYpO31jYXRjaChzKXt2 YXIgdz0oLyg8Ym9keVtcU1xzXSs/PFwvYm9keT4pL2kpLnRlc3QocSkmJlJlZ0V4 cC4kMSx4PXttZXNzYWdlOnMubWVzc2FnZSwnY2hhcic6dCxleGNlcnB0OigodD09 PTAmJncpfHx2KS5zdWJzdHIoNTEyKX07dGhpcy5lcnJvclR5cGU9bS5QQVJTRV9F UlJPUjt0aGlzLmVycm9yVGV4dD0ncGFyc2UgZXJyb3IgLSAnK0pTT04uc3RyaW5n aWZ5KHgpO3JldHVybjt9Zy5hcHBseVdpdGhHdWFyZCh0aGlzLl9jYWxsLHRoaXMs WydvbkpTT04nXSk7fX19LF9vblJlYWR5U3RhdGU6ZnVuY3Rpb24oKXt2YXIgcT10 aGlzLnhociYmdGhpcy54aHIucmVhZHlTdGF0ZXx8MDtpZih0aGlzLnN0YXR1cz09 bnVsbCYmcT49Mil0aGlzLl9wYXJzZVN0YXR1cygpO2lmKHRoaXMuc3RhdHVzIT1u dWxsJiZxPj0zJiYhdGhpcy5lcnJvclR5cGUpdGhpcy5fcGFyc2VSZXNwb25zZSgp O2lmKHRoaXMuZXJyb3JUeXBlfHxxPT00KXt0aGlzLl90aW1lPURhdGUubm93KCkt dGhpcy5fc2VudEF0O3RoaXMuX2NhbGwoIXRoaXMuZXJyb3JUeXBlPydvblN1Y2Nl c3MnOidvbkVycm9yJyk7cCh0aGlzKTt9fSxzZW5kOmZ1bmN0aW9uKHEpe3RoaXMu eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2cuYXBwbHlXaXRoR3Vh cmQodGhpcy5fb25SZWFkeVN0YXRlLHRoaXMsYXJndW1lbnRzKTt9LmJpbmQodGhp cyk7dmFyIHI9dGhpcy50aW1lb3V0O2lmKHIpdGhpcy5fdGltZXI9c2V0VGltZW91 dCgoZnVuY3Rpb24oKXt0aGlzLmVycm9yVHlwZT1tLlRJTUVPVVQ7dGhpcy5lcnJv clRleHQ9J3RpbWVvdXQnO3RoaXMuX3RpbWU9RGF0ZS5ub3coKS10aGlzLl9zZW50 QXQ7dGhpcy5fY2FsbCgnb25FcnJvcicpO3AodGhpcyk7fSkuYmluZCh0aGlzKSxy LGZhbHNlKTttLl9pbmZsaWdodC5wdXNoKHRoaXMpO2lmKHRoaXMubWV0aG9kPT0n UE9TVCcpdGhpcy54aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywn YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7dGhpcy5fc2VudEF0 PURhdGUubm93KCk7dGhpcy54aHIuc2VuZChxP2kuaW1wbG9kZVF1ZXJ5KHEpOicn

KTt9LGFib3J0OmZ1bmN0aW9uKCl7cCh0aGlzKTt9LHRvU3RyaW5nOmZ1bmN0aW9u KCl7dmFyIHE9J1tBamF4UmVxdWVzdCByZWFkeVN0YXRlPScrdGhpcy54aHIucmVh ZHlTdGF0ZTtpZih0aGlzLmVycm9yVHlwZSlxKz0nIGVycm9yVHlwZT0nK3RoaXMu ZXJyb3JUeXBlKycgKCcrdGhpcy5lcnJvclRleHQrJyknO3JldHVybiBxKyddJzt9 LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBxPXtqc29uOnRoaXMuanNvbixzdGF0dXM6 dGhpcy5zdGF0dXMsZXJyb3JUeXBlOnRoaXMuZXJyb3JUeXBlLGVycm9yVGV4dDp0 aGlzLmVycm9yVGV4dCx0aW1lOnRoaXMuX3RpbWV9O2Zvcih2YXIgciBpbiBxKWlm KHFbcl09PW51bGwpZGVsZXRlIHFbcl07cmV0dXJuIHE7fX0pO2lmKHdpbmRvdy5h ZGRFdmVudExpc3RlbmVyJiZqLmZpcmVmb3goKSl3aW5kb3cuYWRkRXZlbnRMaXN0 ZW5lcigna2V5ZG93bicsZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LmtleUNvZGU9 PT1oLkVTQylldmVudC5wcmV2ZW50KCk7fSxmYWxzZSk7aWYod2luZG93LmF0dGFj aEV2ZW50KXdpbmRvdy5hdHRhY2hFdmVudCgnb251bmxvYWQnLG8pO2UuZXhwb3J0 cz1tO30pOwpfX2QoIkNoYXRDb25maWciLFsiY29weVByb3BlcnRpZXMiLCJDaGF0 Q29uZmlnSW5pdGlhbERhdGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YygnQ2hhdENvbmZpZ0luaXRpYWxEYXRhJyksaD1iKCdjb3B5UHJvcGVydGllcycp LGk9e30saj17Z2V0OmZ1bmN0aW9uKGssbCl7cmV0dXJuIGsgaW4gaT9pW2tdOmw7 fSxzZXQ6ZnVuY3Rpb24oayl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXt2YXIgbD17 fTtsW2tdPWFyZ3VtZW50c1sxXTtrPWw7fWgoaSxrKTt9LGdldERlYnVnSW5mbzpm dW5jdGlvbigpe3JldHVybiBpO319O2ouc2V0KGcpO2UuZXhwb3J0cz1qO30pOwpf X2QoIkNoYW5uZWxDb25zdGFudHMiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2 YXIgZz0nY2hhbm5lbC8nLGg9e09OX1NIVVRET1dOOmcrJ3NodXRkb3duJyxPTl9J TlZBTElEX0hJU1RPUlk6ZysnaW52YWxpZF9oaXN0b3J5JyxPTl9DT05GSUc6Zysn Y29uZmlnJyxPTl9FTlRFUl9TVEFURTpnKydlbnRlcl9zdGF0ZScsT05fRVhJVF9T VEFURTpnKydleGl0X3N0YXRlJyxPSzonb2snLEVSUk9SOidlcnJvcicsRVJST1Jf TUFYOidlcnJvcl9tYXgnLEVSUk9SX01JU1NJTkc6J2Vycm9yX21pc3NpbmcnLEVS Uk9SX01TR19UWVBFOidlcnJvcl9tc2dfdHlwZScsRVJST1JfU0hVVERPV046J2Vy cm9yX3NodXRkb3duJyxFUlJPUl9TVEFMRTonZXJyb3Jfc3RhbGUnLFNZU19PV05F Ujonc3lzX293bmVyJyxTWVNfTk9OT1dORVI6J3N5c19ub25vd25lcicsU1lTX09O TElORTonc3lzX29ubGluZScsU1lTX09GRkxJTkU6J3N5c19vZmZsaW5lJyxTWVNf VElNRVRSQVZFTDonc3lzX3RpbWV0cmF2ZWwnLEhJTlRfQVVUSDonc2h1dGRvd24g YXV0aCcsSElOVF9DT05OOidzaHV0ZG93biBjb25uJyxISU5UX0RJU0FCTEVEOidz aHV0ZG93biBkaXNhYmxlZCcsSElOVF9JTlZBTElEX1NUQVRFOidzaHV0ZG93biBp bnZhbGlkIHN0YXRlJyxISU5UX01BSU5UOidzaHV0ZG93biBtYWludCcsSElOVF9V TlNVUFBPUlRFRDonc2h1dGRvd24gdW5zdXBwb3J0ZWQnLHJlYXNvbl9Vbmtub3du OjAscmVhc29uX0FzeW5jRXJyb3I6MSxyZWFzb25fVG9vTG9uZzoyLHJlYXNvbl9S ZWZyZXNoOjMscmVhc29uX1JlZnJlc2hEZWxheTo0LHJlYXNvbl9VSVJlc3RhcnQ6 NSxyZWFzb25fTmVlZFNlcTo2LHJlYXNvbl9QcmV2RmFpbGVkOjcscmVhc29uX0lG cmFtZUxvYWRHaXZlVXA6OCxyZWFzb25fSUZyYW1lTG9hZFJldHJ5OjkscmVhc29u X0lGcmFtZUxvYWRSZXRyeVdvcmtlZDoxMCxyZWFzb25fUGFnZVRyYW5zaXRpb25S ZXRyeToxMSxyZWFzb25fSUZyYW1lTG9hZE1heFN1YmRvbWFpbjoxMixyZWFzb25f Tm9DaGFubmVsSW5mbzoxMyxyZWFzb25fTm9DaGFubmVsSG9zdDoxNCxnZXRBcmJp dGVyVHlwZTpmdW5jdGlvbihpKXtyZXR1cm4gZysnbWVzc2FnZTonK2k7fX07ZS5l eHBvcnRzPWg7fSk7Cl9fZCgiQ2hhbm5lbFN1YmRvbWFpbiIsWyJDb29raWUiLCJK U0xvZ2dlciIsIlVzZXJBZ2VudCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdDb29raWUnKSxoPWIoJ0pTTG9nZ2VyJyksaT1iKCdVc2VyQWdlbnQnKSxq PWguY3JlYXRlKCdjaGFubmVsJyksaz03LGw9bnVsbDtmdW5jdGlvbiBtKHApe3Zh ciBxPW51bGwscj1uKCkscyx0PWkuZmlyZWZveCgpP01hdGguZmxvb3IoTWF0aC5y YW5kb20oKSozMik6MDtmb3IodmFyIHU9MDt1PDMyO3UrKyl7cz0odSt0KSUzMjtp ZighKHImKDE8PHMpKSlicmVhazt9cC0tO2lmKHM8TWF0aC5taW4oMzIsaypwKSl7 bD1zO3E9bCVrO2cuc2V0KCdzdWInLHJ8KDE8PGwpKTt9ZWxzZXtsPS0xO3E9bnVs bDtqLmVycm9yKCdzdWJkb21haW5fb3ZlcmZsb3cnLHtzbG90OmwsbWF4OnB9KTt9 cmV0dXJuIHE7fWZ1bmN0aW9uIG4oKXt2YXIgcD1nLmdldCgnc3ViJyl8fDA7cD1w YXJzZUludChwLDEwKTtyZXR1cm4gaXNOYU4ocCk/MDpwO31mdW5jdGlvbiBvKCl7 aWYobCE9PW51bGwmJmw+PTApe3ZhciBwPW4oKSZ+KDE8PGwpO2lmKHApe2cuc2V0 KCdzdWInLHApO31lbHNlIGcuY2xlYXIoJ3N1YicpO319ZS5leHBvcnRzPXthbGxv Y2F0ZTptLGNsZWFyOm99O30pOwpfX2QoIkNoYW5uZWxUcmFuc3BvcnQiLFsiY29w eVByb3BlcnRpZXMiLCJiaW5kIiwiQWpheFJlcXVlc3QiLCJVUkkiLCJKU0xvZ2dl ciIsIkRvY1JQQyIsIkNoYW5uZWxDb25zdGFudHMiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxoPWIoJ2JpbmQnKSxpPWIo J0FqYXhSZXF1ZXN0Jyksaj1iKCdVUkknKSxrPWIoJ0pTTG9nZ2VyJyksbD1iKCdE

b2NSUEMnKSxtPWIoJ0NoYW5uZWxDb25zdGFudHMnKSxuPWsuY3JlYXRlKCdjaGFu bmVsJyk7ZnVuY3Rpb24gbygpe3JldHVybiAoMTA0ODU3NipNYXRoLnJhbmRvbSgp fDApLnRvU3RyaW5nKDM2KTt9ZnVuY3Rpb24gcCh4LHkpe3ZhciB6PXguc3ViZG9t YWluO3o9ej09PW51bGw/Jyc6KHorJy0nKTt2YXIgYWE9bmV3IGooeSkuc2V0RG9t YWluKHoreC5ob3N0KycuZmFjZWJvb2suY29tJykuc2V0UG9ydCh4LnBvcnQpLnNl dFNlY3VyZShqKCkuaXNTZWN1cmUoKSk7cmV0dXJuIGFhO31mdW5jdGlvbiBxKHgp e3ZhciB5PXtwYXJ0aXRpb246eC5wYXJ0aXRpb24sY2I6bygpfSx6PXAoeCwnL3An KS5zZXRRdWVyeURhdGEoeSk7bi5sb2coJ3N0YXJ0X3AnLHt1cmk6ei50b1N0cmlu ZygpfSk7dmFyIGFhPW5ldyBpKCdHRVQnLHopO2lmKGkuc3VwcG9ydHNDT1JTKCkp YWEueGhyLndpdGhDcmVkZW50aWFscz10cnVlO3ZhciBiYT1mdW5jdGlvbihjYSl7 bi5sb2coJ2ZpbmlzaF9wJyx7eGhyOmNhLnRvSlNPTj9jYS50b0pTT04oKTpjYX0p O307YWEudGltZW91dD14LlBfVElNRU9VVDthYS5vbkVycm9yPWFhLm9uU3VjY2Vz cz1iYTthYS5zZW5kKCk7fWZ1bmN0aW9uIHIoeCx5LHope3ZhciBhYT1uZXcgSW1h Z2UoKSxiYT0wLGNhPWZ1bmN0aW9uKGZhKXthYS5hYm9ydCgpO3JldHVybiBmYT95 KCk6eigpO307YWEub25sb2FkPWZ1bmN0aW9uKCl7bi5sb2coJ3Bpbmdfb2snLHtk dXJhdGlvbjpEYXRlLm5vdygpLWJhfSk7Y2EodHJ1ZSk7fTthYS5vbmVycm9yPWZ1 bmN0aW9uKCl7cSh4KTtjYShmYWxzZSk7fTt2YXIgZGE9c2V0VGltZW91dChhYS5v bmVycm9yLDEwMDAwLGZhbHNlKTthYS5hYm9ydD1mdW5jdGlvbigpe2lmKGRhKXtj bGVhclRpbWVvdXQoZGEpO2RhPW51bGw7fWFhLm9ubG9hZD1hYS5vbmVycm9yPW51 bGw7fTt2YXIgZWE9e3BhcnRpdGlvbjp4LnBhcnRpdGlvbixjYjpvKCl9O2JhPURh dGUubm93KCk7YWEuc3JjPXAoeCwnL3BpbmcnKS5zZXRRdWVyeURhdGEoZWEpO3Jl dHVybiBhYTt9ZnVuY3Rpb24gcyh4LHkseixhYSl7dmFyIGJhPW5ldyBEYXRlKCks Y2E9KGJhLXgudXNlckFjdGl2ZSkvMTAwMHwwO2lmKGNhPDApbi53YXJuKCdpZGxl X3JlZ3Jlc3Npb24nLHtpZGxlVGltZTpjYSxub3c6YmEuZ2V0VGltZSgpLHVzZXJB Y3RpdmU6eC51c2VyQWN0aXZlfSk7dmFyIGRhPXtjaGFubmVsOngudXNlcl9jaGFu bmVsLHNlcTp4LnNlcSxwYXJ0aXRpb246eC5wYXJ0aXRpb24sY2xpZW50aWQ6eC5z ZXNzaW9uSUQsY2I6bygpLGlkbGU6Y2F9O2lmKGNhPDYwKWRhLnN0YXRlPSdhY3Rp dmUnO2lmKHguc3RyZWFtaW5nQ2FwYWJsZSl7ZGEubW9kZT0nc3RyZWFtJztkYS5m b3JtYXQ9J2pzb24nO31pZih4LnByb2ZpbGUpZGEucHJvZmlsZT14LnByb2ZpbGU7 dmFyIGVhPXAoeCwnL3B1bGwnKS5zZXRRdWVyeURhdGEoZGEpLGZhPW5ldyBpKCdH RVQnLGVhKTtpZihpLnN1cHBvcnRzQ09SUygpKWZhLnhoci53aXRoQ3JlZGVudGlh bHM9dHJ1ZTtmYS50aW1lb3V0PXguc3RyZWFtaW5nQ2FwYWJsZT94LlNUUkVBTUlO R19USU1FT1VUOnguTE9OR1BPTExfVElNRU9VVDtmYS5vbkpTT049eTtmYS5vblN1 Y2Nlc3M9ejtmYS5vbkVycm9yPWZ1bmN0aW9uKCl7dmFyIGdhPSh0aGlzLnN0YXR1 cz09MTIwMDImJnRoaXMuX3RpbWU+PXguTUlOXzEyMDAyX1RJTUVPVVQpfHwodGhp cy5zdGF0dXM9PTUwNCYmdGhpcy5fdGltZT49eC5NSU5fNTA0X1RJTUVPVVQpLGhh PWdhP3o6YWE7cmV0dXJuIGhhJiZoYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fTtm YS5zZW5kKCk7eC5pblN0cmVhbWluZz14LnN0cmVhbWluZ0NhcGFibGU7cmV0dXJu IGZhO31mdW5jdGlvbiB0KHgpe3RoaXMubWFuYWdlcj14Oyh0aGlzLmluaXQmJnRo aXMuaW5pdCgpKTt9ZnVuY3Rpb24gdSh4KXt0LmFwcGx5KHRoaXMsYXJndW1lbnRz KTt9Zyh1LnByb3RvdHlwZSx7bG9nTmFtZTonQ09SUycsZW50ZXJTdGF0ZTpmdW5j dGlvbih4LHkpe2lmKHRoaXMuX3JlcXVlc3Qpe3RoaXMuX3JlcXVlc3QuYWJvcnQo KTt0aGlzLl9yZXF1ZXN0PW51bGw7fWlmKHg9PSdpbml0JylzZXRUaW1lb3V0KGgo dGhpcy5tYW5hZ2VyLCdleGl0U3RhdGUnLHtzdGF0dXM6bS5PSyxzdGF0ZUlkOnku c3RhdGVJZH0pLDMwMDAsZmFsc2UpO2lmKCEvcHVsbHxwaW5nLy50ZXN0KHgpKXJl dHVybjt2YXIgej10aGlzLm1hbmFnZXI7aWYoeD09J3BpbmcnKXt0aGlzLl9yZXF1 ZXN0PXIoeSxoKHosJ2V4aXRTdGF0ZScse3N0YXR1czptLk9LLHN0YXRlSWQ6eS5z dGF0ZUlkfSksaCh6LCdleGl0U3RhdGUnLHtzdGF0dXM6bS5FUlJPUixzdGF0ZUlk Onkuc3RhdGVJZH0pKTt9ZWxzZSBpZih4PT0ncHVsbCcpdGhpcy5fcmVxdWVzdD1z KHksaCh6LCdfcHJvY2Vzc1RyYW5zcG9ydERhdGEnLHkuc3RhdGVJZCksaCh6LCdl eGl0U3RhdGUnLHtzdGF0dXM6bS5PSyxzdGF0ZUlkOnkuc3RhdGVJZH0pLGgoeiwn ZXhpdFN0YXRlJyx7c3RhdHVzOm0uRVJST1Isc3RhdGVJZDp5LnN0YXRlSWR9KSk7 fX0pO2Z1bmN0aW9uIHYoeCl7bi5sb2coJ2lmcmFtZV9pbml0X2NvbnN0cnVjdG9y Jyk7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5faWZyYW1lPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO3RoaXMuX2lmcmFtZS5zdHlsZS5kaXNw bGF5PSdub25lJztkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2lmcmFt ZSk7bC5wdWJsaXNoKHRoaXMsJ291dGVyVHJhbnNwb3J0Jyk7fWcodi5wcm90b3R5 cGUse2xvZ05hbWU6J2lmcmFtZScsX2luaXRJZnJhbWU6ZnVuY3Rpb24oeCl7bi5s b2coJ2lmcmFtZV9pbml0X3N0YXJ0Jyk7d2luZG93Lm9uY2hhbm5lbGlmcmFtZXJl YWR5PWZ1bmN0aW9uKCl7bi5sb2coJ2lmcmFtZV9yZXNvdXJjZXMnKTtyZXR1cm4g

eC5yZXNvdXJjZXM7fTt3aW5kb3cub25jaGFubmVsaWZyYW1lbG9hZGVkPWZ1bmN0 aW9uKCl7bi5sb2coJ2lmcmFtZV9sb2FkZWQnKTt9O2lmKHgpe3RoaXMuX2lmcmFt ZVVSST1wKHgseC5wYXRoKTtpZih4LmJ1c3RJZnJhbWUpe3ZhciB5PXtwYXJ0aXRp b246eC5wYXJ0aXRpb24sY2I6bygpfTt0aGlzLl9pZnJhbWVVUkkuc2V0UXVlcnlE YXRhKHkpO319ZWxzZSB0aGlzLl9pZnJhbWVVUkk9J2Fib3V0OmJsYW5rJzt0aGlz Ll9pZnJhbWVQcm94eT1udWxsO3RyeXt0aGlzLl9pZnJhbWUuY29udGVudFdpbmRv dy5sb2NhdGlvbi5yZXBsYWNlKHRoaXMuX2lmcmFtZVVSSSk7bi5sb2coJ2lmcmFt ZV91cmlfc2V0Jyk7fWNhdGNoKHope24uZXJyb3IoJ2lmcmFtZV91cmlfc2V0X2Vy cm9yJyx6KTt0aGlzLmV4aXRTdGF0ZSh7c3RhdHVzOm0uRVJST1Isc3RhdGVJZDp4 LnN0YXRlSWR9LHorJycpO319LGVudGVyU3RhdGU6ZnVuY3Rpb24oeCx5KXtpZih4 PT0naW5pdCcpe3RoaXMuX2luaXRJZnJhbWUoeSk7fWVsc2UgaWYoL2lkbGV8cGlu Z3xwdWxsLy50ZXN0KHgpKXtpZih0aGlzLl9pZnJhbWVQcm94eSl7dGhpcy5faWZy YW1lUHJveHkuZW50ZXJTdGF0ZS5hcHBseSh0aGlzLl9pZnJhbWVQcm94eSxhcmd1 bWVudHMpO31lbHNlIGlmKHghPSdpZGxlJyl0aGlzLmV4aXRTdGF0ZSh7c3RhdHVz Om0uRVJST1Isc3RhdGVJZDp5LnN0YXRlSWR9LCdpZnJhbWUgbm90IHlldCBsb2Fk ZWQnKTt9ZWxzZSBpZih4PT0nc2h1dGRvd24nKXRoaXMuX2luaXRJZnJhbWUoKTt9 LF9wcm9jZXNzVHJhbnNwb3J0RGF0YTpmdW5jdGlvbigpe3RoaXMubWFuYWdlci5f cHJvY2Vzc1RyYW5zcG9ydERhdGEuYXBwbHkodGhpcy5tYW5hZ2VyLGFyZ3VtZW50 cyk7fSxleGl0U3RhdGU6ZnVuY3Rpb24oeCl7aWYodGhpcy5tYW5hZ2VyLnN0YXRl PT0naW5pdCcmJnguc3RhdHVzPT1tLk9LKXRoaXMuX2lmcmFtZVByb3h5PWwucHJv eHkodGhpcy5faWZyYW1lLmNvbnRlbnRXaW5kb3csJ2lubmVyVHJhbnNwb3J0Jyxb J2VudGVyU3RhdGUnXSwodGhpcy5faWZyYW1lVVJJKycnKS5yZXBsYWNlKC9pZnJh bWUuKi8sJycpKTtpZigvcGluZ3xwdWxsLy50ZXN0KHRoaXMubWFuYWdlci5zdGF0 ZSkmJiF0aGlzLl9pZnJhbWVQcm94eSlyZXR1cm47dGhpcy5tYW5hZ2VyLmV4aXRT dGF0ZS5hcHBseSh0aGlzLm1hbmFnZXIsYXJndW1lbnRzKTt9fSk7ZnVuY3Rpb24g dygpe3RoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKTt0LmFwcGx5KHRoaXMs YXJndW1lbnRzKTt9Zyh3LnByb3RvdHlwZSx7bG9nTmFtZTonaWZyYW1lKGlubmVy KScsaW5pdDpmdW5jdGlvbigpe2wucHVibGlzaCh0aGlzLCdpbm5lclRyYW5zcG9y dCcpO3RyeXt2YXIgeT1sLnByb3h5KHdpbmRvdy5wYXJlbnQsJ291dGVyVHJhbnNw b3J0JyxbJ19wcm9jZXNzVHJhbnNwb3J0RGF0YScsJ2V4aXRTdGF0ZSddLHRvcC5E b2NSUEMub3JpZ2luKTtnKHRoaXMseSk7dGhpcy5leGl0U3RhdGUoe3N0YXR1czpt Lk9LLHN0YXRlSWQ6MWUrMDZ9KTt9Y2F0Y2goeCl7bi5lcnJvcignaWZyYW1lX2lu bmVyX2luaXRfZXJyb3InLHgpO319LGVudGVyU3RhdGU6ZnVuY3Rpb24oeCx5KXtp Zih0aGlzLl9yZXF1ZXN0KXt0aGlzLl9yZXF1ZXN0LmFib3J0KCk7dGhpcy5fcmVx dWVzdD1udWxsO31pZih4PT0ncGluZycpe3RoaXMuX3JlcXVlc3Q9cih5LGgodGhp cywnZXhpdFN0YXRlJyx7c3RhdHVzOm0uT0ssc3RhdGVJZDp5LnN0YXRlSWR9KSxo KHRoaXMsJ2V4aXRTdGF0ZScse3N0YXR1czptLkVSUk9SLHN0YXRlSWQ6eS5zdGF0 ZUlkfSkpO31lbHNlIGlmKHg9PSdwdWxsJyl0aGlzLl9yZXF1ZXN0PXMoeSxoKHRo aXMsJ19wcm9jZXNzVHJhbnNwb3J0RGF0YScseS5zdGF0ZUlkKSxoKHRoaXMsJ2V4 aXRTdGF0ZScse3N0YXR1czptLk9LLHN0YXRlSWQ6eS5zdGF0ZUlkfSksaCh0aGlz LCdleGl0U3RhdGUnLHtzdGF0dXM6bS5FUlJPUixzdGF0ZUlkOnkuc3RhdGVJZH0p KTt9fSk7ZS5leHBvcnRzPXtnZXRVUkk6cCxUcmFuc3BvcnQ6dCxDT1JTVHJhbnNw b3J0OnUsSWZyYW1lVHJhbnNwb3J0OnYsSWZyYW1lSW5uZXJUcmFuc3BvcnQ6d307 fSk7Cl9fZCgiRkJBamF4UmVxdWVzdCIsWyIkIiwiQWpheFJlcXVlc3QiLCJjb3B5 UHJvcGVydGllcyIsIlhIUiJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCckJyksaD1iKCdBamF4UmVxdWVzdCcpLGk9YignY29weVByb3BlcnRpZXMnKSxq PWIoJ1hIUicpO2Z1bmN0aW9uIGsobCxtLG4pe249aShqLmdldEFzeW5jUGFyYW1z KGwpLG4pO3ZhciBvPW5ldyBoKGwsbSxuKSxwPW8uX2NhbGw7by5fY2FsbD1mdW5j dGlvbihxKXtpZihxPT0nb25KU09OJyYmdGhpcy5qc29uKXtpZih0aGlzLmpzb24u ZXJyb3Ipe3RoaXMuZXJyb3JUeXBlPWguU0VSVkVSX0VSUk9SO3RoaXMuZXJyb3JU ZXh0PSdBc3luY1Jlc3BvbnNlIGVycm9yOiAnK3RoaXMuanNvbi5lcnJvcjt9dGhp cy5qc29uPXRoaXMuanNvbi5wYXlsb2FkO31wLmFwcGx5KHRoaXMsYXJndW1lbnRz KTt9O3JldHVybiBvO31lLmV4cG9ydHM9azt9KTsKX19kKCJNb3ZpbmdTdGF0Iixb XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoKXtoPWh8fDYwMDAw O3ZhciBpPXt0Om5ldyBEYXRlKCksY291bnQ6MCx2OjB9LGo9aSxrPTAsbD0wO2Z1 bmN0aW9uIG0oKXt2YXIgbj1uZXcgRGF0ZSgpLWg7d2hpbGUoaiYmai5uZXh0JiZq LnQ8bil7ay09ai52O2wtPWouY291bnQ7aj1qLm5leHQ7fX10aGlzLmFkZD1mdW5j dGlvbihuKXtrKz1uO2wrKzt2YXIgbz1uZXcgRGF0ZSgpO2lmKG8taS50PDEwMDAp e2kudis9bjtpLmNvdW50Kys7fWVsc2V7aS5uZXh0PXt0Om8sdjpuLGNvdW50OjF9 O2k9aS5uZXh0O20oKTt9fTt0aGlzLnRhbGx5PWZ1bmN0aW9uKG4pe249bnx8MTAw

MDttKCk7cmV0dXJuIHtzdW06ayxjb3VudDpsLHRpbWVBdmVyYWdlOmsqbi9ofTt9 O31lLmV4cG9ydHM9Zzt9KTsKX19kKCJQcmVzZW5jZVV0aWwiLFsiQ29va2llIiwi RW52IiwicmFuZG9tSW50IiwidHgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignQ29va2llJyksaD1iKCdFbnYnKSxpPWIoJ3JhbmRvbUludCcpLGo9Yign dHgnKSxrPWkoMCw0Mjk0OTY3Mjk1KSsxLGw9e2NoZWNrTWFpbnRlbmFuY2VFcnJv cjpmdW5jdGlvbihtKXtpZihtLmdldEVycm9yKCk9PTEzNTYwMDcpcmV0dXJuIHRy dWU7cmV0dXJuIGZhbHNlO30sZ2V0RXJyb3JEZXNjcmlwdGlvbjpmdW5jdGlvbiht KXt2YXIgbj1tLmdldEVycm9yKCksbz1tLmdldEVycm9yRGVzY3JpcHRpb24oKTtp ZighbylvPSJUZXJqYWRpIGtlc2FsYWhhbi4iO2lmKG49PTEzNTcwMDEpbz0iV2Fr dHUgc2VzaSBBbmRhIHRlbGFoIGhhYmlzLiBTaWxha2FuIG1hc3VrIGtlIHNpdHVz LiI7cmV0dXJuIG87fSxnZXRTZXNzaW9uSUQ6ZnVuY3Rpb24oKXtyZXR1cm4gazt9 LGhhc1VzZXJDb29raWU6ZnVuY3Rpb24oKXtyZXR1cm4gaC51c2VyPT09Zy5nZXQo J2NfdXNlcicpO319O2UuZXhwb3J0cz1sO30pOwpfX2QoIlByZXNlbmNlQ29va2ll TWFuYWdlciIsWyJDb29raWUiLCJEY29kZSIsIkVycm9yVXRpbHMiLCJFbnYiLCJK U0xvZ2dlciIsIlByZXNlbmNlVXRpbCIsIlVSSSIsIlByZXNlbmNlSW5pdGlhbERh dGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ29va2llJyksaD1i KCdEY29kZScpLGk9YignRXJyb3JVdGlscycpLGo9YignRW52Jyksaz1iKCdKU0xv Z2dlcicpLGw9YignUHJlc2VuY2VVdGlsJyksbT1iKCdVUkknKSxuPWMoJ1ByZXNl bmNlSW5pdGlhbERhdGEnKSxvPW4uY29va2llVmVyc2lvbixwPW4uZGljdEVuY29k ZSxxPSdwcmVzZW5jZScscj17fSxzPW51bGwsdD1udWxsLHU9ay5jcmVhdGUoJ3By ZXNlbmNlX2Nvb2tpZScpO2Z1bmN0aW9uIHYoKXt0cnl7dmFyIHo9Zy5nZXQocSk7 aWYocyE9PXope3M9ejt0PW51bGw7aWYoeiYmei5jaGFyQXQoMCk9PSdFJyl6PWgu ZGVjb2RlKHouc3Vic3RyaW5nKDEpKTtpZih6KXQ9SlNPTi5wYXJzZSh6KTt9aWYo dCYmKCF0LnVzZXJ8fHQudXNlcj09PWoudXNlcikpcmV0dXJuIHQ7fWNhdGNoKHkp e3Uud2FybignZ2V0Y29va2llX2Vycm9yJyk7fXJldHVybiBudWxsO31mdW5jdGlv biB3KCl7cmV0dXJuIHBhcnNlSW50KG5ldyBEYXRlKCkuZ2V0VGltZSgpLzEwMDAs MTApO312YXIgeD17cmVnaXN0ZXI6ZnVuY3Rpb24oeSx6KXtyW3ldPXo7fSxzdG9y ZTpmdW5jdGlvbigpe3ZhciB5PXYoKTtpZih5JiZ5LnYmJm88eS52KXJldHVybjt2 YXIgej17djpvLHRpbWU6dygpLHVzZXI6ai51c2VyfTtmb3IodmFyIGFhIGluIHIp elthYV09aS5hcHBseVdpdGhHdWFyZChyW2FhXSxyLFt5JiZ5W2FhXV0sZnVuY3Rp b24oZWEpe2VhLnByZXNlbmNlX3N1YmNvb2tpZT1hYTt9KTt2YXIgYmE9SlNPTi5z dHJpbmdpZnkoeik7aWYocCliYT0nRScraC5lbmNvZGUoYmEpO2lmKGwuaGFzVXNl ckNvb2tpZSgpKXt2YXIgY2E9YmEubGVuZ3RoO2lmKGNhPjEwMjQpdS53YXJuKCdi aWdfY29va2llJyxjYSk7dmFyIGRhPW0uZ2V0UmVxdWVzdFVSSShmYWxzZSkuaXNT ZWN1cmUoKSYmISFnLmdldCgnY3NtJyk7Zy5zZXQocSxiYSxudWxsLG51bGwsZGEp O319LGNsZWFyOmZ1bmN0aW9uKCl7Zy5jbGVhcihxKTt9LGdldFN1YkNvb2tpZTpm dW5jdGlvbih5KXt2YXIgej12KCk7aWYoIXopcmV0dXJuIG51bGw7cmV0dXJuIHpb eV07fX07ZS5leHBvcnRzPXg7fSk7Cl9fZCgiUHJlc2VuY2VTdGF0ZSIsWyJBcmJp dGVyIiwiRXJyb3JVdGlscyIsIkpTTG9nZ2VyIiwiUHJlc2VuY2VDb29raWVNYW5h Z2VyIiwiY29weVByb3BlcnRpZXMiLCJkZWJvdW5jZUFjcm9zc1RyYW5zaXRpb25z Iiwic2V0SW50ZXJ2YWxBY3Jvc3NUcmFuc2l0aW9ucyIsIlByZXNlbmNlSW5pdGlh bERhdGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicp LGg9YignRXJyb3JVdGlscycpLGk9YignSlNMb2dnZXInKSxqPWIoJ1ByZXNlbmNl Q29va2llTWFuYWdlcicpLGs9YignY29weVByb3BlcnRpZXMnKSxsPWIoJ2RlYm91 bmNlQWNyb3NzVHJhbnNpdGlvbnMnKSxtPWIoJ3NldEludGVydmFsQWNyb3NzVHJh bnNpdGlvbnMnKSxuPWMoJ1ByZXNlbmNlSW5pdGlhbERhdGEnKSxvPW4uY29va2ll UG9sbEludGVydmFsfHwyMDAwLHA9W10scT1bXSxyPW51bGwscz1udWxsLHQ9MCx1 PW51bGwsdj0wLHc9WydzYjInLCd0MicsJ2xtMicsJ3VjdDInLCd0cicsJ3R3Jywn YXQnLCd3bWwnXSx4PWkuY3JlYXRlKCdwcmVzZW5jZV9zdGF0ZScpO2Z1bmN0aW9u IHkoKXtyZXR1cm4gai5nZXRTdWJDb29raWUoJ3N0YXRlJyk7fWZ1bmN0aW9uIHoo KXt0PURhdGUubm93KCk7ai5zdG9yZSgpO2RhKHMpO312YXIgYWE9bCh6LDApO2Z1 bmN0aW9uIGJhKGlhKXtpZih0eXBlb2YgaWE9PSd1bmRlZmluZWQnfHxpc05hTihp YSl8fGlhPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFl8fGlhPT1OdW1iZXIuTkVH QVRJVkVfSU5GSU5JVFkpaWE9MDtyZXR1cm4gaWE7fWZ1bmN0aW9uIGNhKGlhKXt2 YXIgamE9e307aWYoaWEpe3cuZm9yRWFjaChmdW5jdGlvbihtYSl7amFbbWFdPWlh W21hXTt9KTtpZih0PGlhLnV0KXguZXJyb3IoJ25ld19jb29raWUnLHtjb29raWVf dGltZTppYS51dCxsb2NhbF90aW1lOnR9KTt9amEudXQ9dDtmb3IodmFyIGthPTAs bGE9cC5sZW5ndGg7a2E8bGE7a2ErKyloLmFwcGx5V2l0aEd1YXJkKHBba2FdLG51 bGwsW2phXSk7cz1qYTtyZXR1cm4gczt9ZnVuY3Rpb24gZGEoaWEpe3YrKzt0PWJh KGlhLnV0KTtpZighcilyPW0oZ2Esbyk7cz1pYTtpZih1PT09bnVsbCl1PWlhO2Zv

cih2YXIgamE9MCxrYT1xLmxlbmd0aDtqYTxrYTtqYSsrKWguYXBwbHlXaXRoR3Vh cmQocVtqYV0sbnVsbCxbaWFdKTt2LS07fWZ1bmN0aW9uIGVhKGlhKXtpZihpYSYm aWEudXQpaWYodDxpYS51dCl7cmV0dXJuIHRydWU7fWVsc2UgaWYoaWEudXQ8dCl4 LmVycm9yKCdvbGRfY29va2llJyx7Y29va2llX3RpbWU6aWEudXQsbG9jYWxfdGlt ZTp0fSk7cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBmYSgpe3ZhciBpYT15KCk7aWYo ZWEoaWEpKXM9aWE7cmV0dXJuIHM7fWZ1bmN0aW9uIGdhKCl7dmFyIGlhPXkoKTtp ZihlYShpYSkpZGEoaWEpO31qLnJlZ2lzdGVyKCdzdGF0ZScsY2EpO2cuc3Vic2Ny aWJlKGkuRFVNUF9FVkVOVCxmdW5jdGlvbihpYSxqYSl7amEucHJlc2VuY2Vfc3Rh dGU9e2luaXRpYWw6ayh7fSx1KSxzdGF0ZTprKHt9LHMpLHVwZGF0ZV90aW1lOnQs c3luY19wYXVzZWQ6dixwb2xsX3RpbWU6b307fSk7KGZ1bmN0aW9uKCl7dmFyIGlh PWZhKCk7aWYoaWEpe2RhKGlhKTt9ZWxzZXt4LmRlYnVnKCdub19jb29raWVfaW5p dGlhbCcpO2RhKGNhKCkpO3JldHVybjt9fSkoKTt2YXIgaGE9e2RvU3luYzpmdW5j dGlvbihpYSl7aWYodilyZXR1cm47aWYoaWEpe3ooKTt9ZWxzZSBhYSgpO30scmVn aXN0ZXJTdGF0ZVN0b3JlcjpmdW5jdGlvbihpYSl7cC5wdXNoKGlhKTt9LHJlZ2lz dGVyU3RhdGVMb2FkZXI6ZnVuY3Rpb24oaWEpe3EucHVzaChpYSk7fSxnZXQ6ZnVu Y3Rpb24oKXtyZXR1cm4gZmEoKTt9LGdldEluaXRpYWw6ZnVuY3Rpb24oKXtyZXR1 cm4gdTt9LHZlcmlmeU51bWJlcjpiYX07ZS5leHBvcnRzPWhhO30sMyk7Cl9fZCgi Q2hhbm5lbE1hbmFnZXIiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsImZ1bmN0aW9uLWV4 dGVuc2lvbnMiLCJBamF4UmVxdWVzdCIsIkFyYml0ZXIiLCJBc3luY1JlcXVlc3Qi LCJDaGFubmVsQ29uc3RhbnRzIiwiQ2hhbm5lbFN1YmRvbWFpbiIsIkNoYW5uZWxU cmFuc3BvcnQiLCJDb29raWUiLCJFbnYiLCJGQkFqYXhSZXF1ZXN0IiwiSlNMb2dn ZXIiLCJNb3ZpbmdTdGF0IiwiUHJlc2VuY2VDb29raWVNYW5hZ2VyIiwiUHJlc2Vu Y2VTdGF0ZSIsIlByZXNlbmNlVXRpbCIsIlJ1biIsIlN5c3RlbUV2ZW50cyIsIlVS SSIsIlVzZXJBY3Rpdml0eSIsIlVzZXJBZ2VudCIsImNvcHlQcm9wZXJ0aWVzIiwi Y3JlYXRlQXJyYXlGcm9tIiwiaGFzQXJyYXlOYXR1cmUiLCJDaGFubmVsSW5pdGlh bERhdGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9u cycpO2IoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBamF4UmVxdWVz dCcpLGg9YignQXJiaXRlcicpLGk9YignQXN5bmNSZXF1ZXN0Jyksaj1iKCdDaGFu bmVsQ29uc3RhbnRzJyksaz1iKCdDaGFubmVsU3ViZG9tYWluJyksbD1iKCdDaGFu bmVsVHJhbnNwb3J0JyksbT1iKCdDb29raWUnKSxuPWIoJ0VudicpLG89YignRkJB amF4UmVxdWVzdCcpLHA9YignSlNMb2dnZXInKSxxPWIoJ01vdmluZ1N0YXQnKSxy PWIoJ1ByZXNlbmNlQ29va2llTWFuYWdlcicpLHM9YignUHJlc2VuY2VTdGF0ZScp LHQ9YignUHJlc2VuY2VVdGlsJyksdT1iKCdSdW4nKSx2PWIoJ1N5c3RlbUV2ZW50 cycpLHc9YignVVJJJykseD1iKCdVc2VyQWN0aXZpdHknKSx5PWIoJ1VzZXJBZ2Vu dCcpLHo9YignY29weVByb3BlcnRpZXMnKSxhYT1iKCdjcmVhdGVBcnJheUZyb20n KSxiYT1iKCdoYXNBcnJheU5hdHVyZScpLGNhPWMoJ0NoYW5uZWxJbml0aWFsRGF0 YScpLGRhLGVhPXAuY3JlYXRlKCdjaGFubmVsJyksZmE9bnVsbDtmdW5jdGlvbiBn YShzYSl7ZmE9c2E7fXZhciBoYT17aWRsZTp7b2s6J2luaXQhJ30saW5pdDp7b2s6 J3B1bGwhJyxlcnJvcjoncmVjb25uZWN0JyxzeXNfb25saW5lOidpbml0JyxzeXNf dGltZXRyYXZlbDonaW5pdCd9LHB1bGw6e29rOidwdWxsIScsZXJyb3I6J3Bpbmcn LGVycm9yX21pc3Npbmc6J3B1bGwnLGVycm9yX21zZ190eXBlOidwdWxsJyxyZWZy ZXNoXzA6J3JlY29ubmVjdCcscmVmcmVzaF8xMTA6J3JlY29ubmVjdCcscmVmcmVz aF8xMTE6J3B1bGwnLHJlZnJlc2hfMTEyOidwdWxsJyxyZWZyZXNoXzExMzoncHVs bCcscmVmcmVzaF8xMTc6J3JlY29ubmVjdCd9LHBpbmc6e29rOidwdWxsIScsZXJy b3I6J3BpbmcnLGVycm9yX3N0YWxlOidyZWNvbm5lY3QhJ30scmVjb25uZWN0Ontv azonaW5pdCEnLGVycm9yOidyZWNvbm5lY3QnLHN5c19vbmxpbmU6J3JlY29ubmVj dCcsc3lzX3RpbWV0cmF2ZWw6J3JlY29ubmVjdCd9LHNodXRkb3duOnt9LF9hbGw6 e2Vycm9yX21heDonc2h1dGRvd24hJyxlcnJvcl9zaHV0ZG93bjonc2h1dGRvd24h JyxzeXNfb3duZXI6J3JlY29ubmVjdCcsc3lzX25vbm93bmVyOidpZGxlIScsc3lz X29ubGluZToncGluZycsc3lzX29mZmxpbmU6J2lkbGUhJyxzeXNfdGltZXRyYXZl bDoncGluZyd9fSxpYT17dXNlckFjdGl2ZTpEYXRlLm5vdygpLHNlc3Npb25JRDoo TWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ4fDApLnRvU3RyaW5nKDE2KSxzdHJlYW1p bmdDYXBhYmxlOmZhbHNlLGluU3RyZWFtaW5nOmZhbHNlLExPTkdQT0xMX1RJTUVP VVQ6NjAwMDAsU1RSRUFNSU5HX1RJTUVPVVQ6NjAwMDAsUF9USU1FT1VUOjMwMDAw LElGUkFNRV9MT0FEX1RJTUVPVVQ6MzAwMDAsTUlOX1JFVFJZX0lOVEVSVkFMOjUw MDAsTUFYX1JFVFJZX0lOVEVSVkFMOjMwMDAwLE1JTl8xMjAwMl9USU1FT1VUOjkw MDAsTUlOXzUwNF9USU1FT1VUOjIwMDAwLFNUQUxMX1RIUkVTSE9MRDoxODAwMDAs SlVNUFNUQVJUX1RIUkVTSE9MRDo5MDAwMCxNSU5fSU5JVF9QUk9CRV9ERUxBWToz MDAwLElOSVRfUFJPQkVfREVMQVlfUkFORE9NSVpFX1JBTkdFOjEyMDAwLFBST0JF X0RFTEFZOjYwMDAwLFBST0JFX0hFQVJUQkVBVFNfSU5URVJWQUxfTE9XOjEwMDAs

UFJPQkVfSEVBUlRCRUFUU19JTlRFUlZBTF9ISUdIOjMwMDAsU1RSRUFNSU5HX0VY SVRfU1RBVEVfT05fQ09OVElOVUU6ZmFsc2V9LGphPTEsa2E9e30sbGE9MDtmdW5j dGlvbiBtYShzYSl7cmV0dXJuIHNhLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW14w LTlhLXpdKy9nLCdfJyk7fWZ1bmN0aW9uIG5hKCl7cmV0dXJuIGkubGFzdFN1Y2Nl c3NUaW1lP01hdGgucm91bmQoKERhdGUubm93KCktaS5sYXN0U3VjY2Vzc1RpbWUp LzEwMDApOi0xO31mdW5jdGlvbiBvYSgpe3ZhciBzYT17fTtpZihkYS5nZXRDb25m aWcoJ2hvc3QnKSlzYVtkYS5nZXRDb25maWcoJ3VzZXJfY2hhbm5lbCcpXT1kYS5n ZXRDb25maWcoJ3NlcScsMCk7cmV0dXJuIHNhO31mdW5jdGlvbiBwYSgpe3ZhciBz YT1EYXRlLm5vdygpLHRhPURhdGUubm93KCksdWE9e3RvdGFsOjB9LHZhPSdpZGxl Jyx3YT1mYWxzZTt2LnN1YnNjcmliZShbdi5VU0VSLHYuT05MSU5FLHYuVElNRV9U UkFWRUxdLGZ1bmN0aW9uKHphLGFiKXtyYSh0cnVlKTt0YT1udWxsO2RhLmxhc3RQ dWxsVGltZT1EYXRlLm5vdygpO3ZhciBiYjtzd2l0Y2goemEpe2Nhc2Ugdi5VU0VS OmJiPXYuaXNQYWdlT3duZXIoKT9qLlNZU19PV05FUjpqLlNZU19OT05PV05FUjti cmVhaztjYXNlIHYuT05MSU5FOmJiPWFiP2ouU1lTX09OTElORTpqLlNZU19PRkZM SU5FO2JyZWFrO2Nhc2Ugdi5USU1FX1RSQVZFTDpiYj1qLlNZU19USU1FVFJBVkVM O2JyZWFrO31kYS5leGl0U3RhdGUoe3N0YXR1czpiYixzdGF0ZUlkOmphfSk7fSk7 dmFyIHhhPWZ1bmN0aW9uKHphLGFiKXt2YXIgYmI9RGF0ZS5ub3coKSxjYjtpZihh Yil7c2E9YmI7Y2I9YWIubmV4dFN0YXRlfHxhYi5zdGF0ZTt9ZWxzZSBjYj12YTt2 LmNoZWNrVGltZVRyYXZlbCgpO2lmKHRhKXt2YXIgZGI9TWF0aC5yb3VuZCgoYmIt dGEpLzEwMDApO2lmKGRiPjApe3VhW3ZhXT0odWFbdmFdfHwwKStkYjt1YS50b3Rh bCs9ZGI7fX12YT1jYjt0YT1iYjtpZighemEpe3VhLmxhc3RTdWNjZXNzVGltZT1u YSgpO3VhLm9ubGluZT12LmlzT25saW5lKCk7ZWEubG9nKCdyb2xsdXAnLHVhKTt9 fTtoLnN1YnNjcmliZShqLk9OX0VOVEVSX1NUQVRFLHhhKTtzZXRJbnRlcnZhbCh4 YSw2MDAwMCxmYWxzZSk7aC5zdWJzY3JpYmUocC5EVU1QX0VWRU5ULGZ1bmN0aW9u KHphLGFiKXthYi5jaGFubmVsUm9sbHVwPXVhO30pO3ZhciB5YT1mdW5jdGlvbigp e2lmKGRhLmlzU2h1dGRvd24oKXx8ZGEuc2hvdWxkSWRsZSgpKXJldHVybjt2LmNo ZWNrVGltZVRyYXZlbCgpO3ZhciB6YT1EYXRlLm5vdygpLShkYS5sYXN0UHVsbFRp bWV8fG4uc3RhcnQpO2lmKCF3YSYmemE+aWEuU1RBTExfVEhSRVNIT0xEKXt2YXIg YWI9bmEoKTtlYS5lcnJvcignc3RhbGwnLHtsYXN0U3VjY2Vzc1RpbWU6YWIscm9s bHVwU3RhdGU6dmF9KTt3YT10cnVlO312YXIgYmI9RGF0ZS5ub3coKS1zYTtpZihk YS5zdGF0ZT09J3B1bGwnJiZiYj5pYS5KVU1QU1RBUlRfVEhSRVNIT0xEKXtzYT1u dWxsO2VhLndhcm4oJ2p1bXBzdGFydCcse3N0YXRlOmRhLnN0YXRlLGRvcm1hbnQ6 YmJ9KTtkYS5lbnRlclN0YXRlKCdpbml0Jyk7fX07c2V0SW50ZXJ2YWwoeWEsMTAw MDAsZmFsc2UpO31mdW5jdGlvbiBxYSgpe3ZhciBzYT1EYXRlLm5vdygpLHRhPTE7 ZnVuY3Rpb24gdWEoKXtzZXRUaW1lb3V0KHVhLHRhKjEwMDAsZmFsc2UpO3ZhciB6 YT1kYS5zdGF0ZTtpZih6YT09J2lkbGUnJiZkYS5zaG91bGRJZGxlKCkpcmV0dXJu O2VhLmJ1bXAoJ2Nvbm5fdCcsdGEpO2lmKHphPT0ncHVsbCcpZWEuYnVtcCgnY29u bl90X3B1bGwnLHRhKTt9dWEoKTt2YXIgdmE9WzE1LDMwLDYwLDEyMCwyNDBdLHdh PWZhbHNlLHhhPWZhbHNlO2Z1bmN0aW9uIHlhKHphKXtzZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7ZWEucmF0ZSgncHVsbGVudGVyXycremEsd2EpO2VhLnJhdGUoJ3B1bGxl eGl0XycremEseGEpO30semEqMTAwMCxmYWxzZSk7fXdoaWxlKHZhLmxlbmd0aCl5 YSh2YS5zaGlmdCgpKTtoLnN1YnNjcmliZShqLk9OX0VOVEVSX1NUQVRFLGZ1bmN0 aW9uKHphLGFiKXtpZihhYi5zdGF0ZT09J3B1bGwnKXdhPXRydWU7c2E9RGF0ZS5u b3coKTt9KTtoLnN1YnNjcmliZShqLk9OX0VYSVRfU1RBVEUsZnVuY3Rpb24oemEs YWIpe2lmKGFiLnN0YXRlIT0ncHVsbCd8fCFzYSlyZXR1cm47dmFyIGJiPSdvdGhl cic7aWYoYWIuc3RhdHVzPT1qLk9LKXt4YT10cnVlO2JiPSdvayc7fWVsc2UgaWYo YWIueGhyJiZhYi54aHIuZXJyb3JUeXBlKXtiYj0vYXI6KFx3KykvLnRlc3QoYWIu eGhyLmVycm9yVHlwZSkmJlJlZ0V4cC4kMTt9ZWxzZSBpZigvXnN5c18vLnRlc3Qo YWIuc3RhdHVzKSlyZXR1cm47dmFyIGNiPShEYXRlLm5vdygpLXNhKS8xMDAwO2lm KGNiPDApe3JldHVybjt9ZWxzZSBpZihjYj4zNjAwKWNiPTM2MDA7ZWEuYnVtcCgn Y29ubl9udW0nKTtlYS5idW1wKCdjb25uX2V4aXQnLGNiKTtlYS5idW1wKCdjb25u X251bV8nK2JiKTtlYS5idW1wKCdjb25uX2V4aXRfJytiYixjYik7fSk7fWZ1bmN0 aW9uIHJhKHNhKXtpZihzYSl7bGE9MDtrYT17fTt9ZWxzZSBsYSsrO31kYT17c3Rh dGU6J2lkbGUnLG5leHRTdGF0ZTpudWxsLGxhc3RQdWxsVGltZTpEYXRlLm5vdygp LGhlYXJ0YmVhdHM6W10sc2V0VGVzdENhbGxiYWNrOmdhLGluaXQ6ZnVuY3Rpb24o c2Epe3RoaXMuaW5pdD1mdW5jdGlvbigpe307aWYodHlwZW9mKHgpIT0ndW5kZWZp bmVkJyl7eC5zdWJzY3JpYmUoZnVuY3Rpb24oKXtpYS51c2VyQWN0aXZlPURhdGUu bm93KCk7fS5iaW5kKHRoaXMpKTt9ZWxzZSBlYS5lcnJvcigndXNlcl9hY3Rpdml0 eV91bmRlZmluZWQnKTtyLnJlZ2lzdGVyKCdjaCcsb2EpO3ZhciB0YT10aGlzLmdl dENvbmZpZygnbWF4X2Nvbm4nLDIpO2lhLnN1YmRvbWFpbj1rLmFsbG9jYXRlKHRh

KTtpZih0eXBlb2Ygd2luZG93Lm9ucGFnZXNob3chPSd1bmRlZmluZWQnKXtFdmVu dC5saXN0ZW4od2luZG93LCdwYWdlaGlkZScsay5jbGVhcik7fWVsc2UgdS5vblVu bG9hZChrLmNsZWFyKTt0aGlzLl90cmFuc3BvcnRSYXRlPW5ldyBxKDMwMDAwKTt2 YXIgdWE9KGcuc3VwcG9ydHNDT1JTKCkmJiFpYS5mb3JjZUlmcmFtZSk/J0NPUlNU cmFuc3BvcnQnOidJZnJhbWVUcmFuc3BvcnQnO3RoaXMudHJhbnNwb3J0PW5ldyBs W3VhXSh0aGlzKTtpZihzYSl0aGlzLmVudGVyU3RhdGUuYXBwbHkodGhpcyxhcmd1 bWVudHMpO2guc3Vic2NyaWJlKHAuRFVNUF9FVkVOVCxmdW5jdGlvbihldmVudCx3 YSl7d2EudHJhbnNwb3J0UmF0ZT10aGlzLl90cmFuc3BvcnRSYXRlLnRhbGx5KCk7 d2EudHJhbnNwb3J0VHlwZT11YTt3YS50cmFuc3BvcnRWZXJzaW9uPTI7fS5iaW5k KHRoaXMpKTtwYSgpO3FhKCk7aWYoZGEuZ2V0Q29uZmlnKCd0cnlTdHJlYW1pbmcn KSYmZGEuZ2V0Q29uZmlnKCdob3N0JykmJmcuc3VwcG9ydHNDT1JTKCkmJiFpYS5m b3JjZUlmcmFtZSl7dmFyIHZhPWlhLk1JTl9JTklUX1BST0JFX0RFTEFZK01hdGgu cmFuZG9tKCkqaWEuSU5JVF9QUk9CRV9ERUxBWV9SQU5ET01JWkVfUkFOR0U7c2V0 VGltZW91dCh0aGlzLl9wcm9iZVRlc3QsdmEsZmFsc2UpO319LGNvbmZpZ3VyZTpm dW5jdGlvbigpe3ZhciBzYT1hYShhcmd1bWVudHMpO2VhLmxvZygnY29uZmlndXJl JyxzYSk7c2EuZm9yRWFjaCh6LmJpbmQobnVsbCxpYSkpO2guaW5mb3JtKGouT05f Q09ORklHLHRoaXMpO30sZ2V0Q29uZmlnOmZ1bmN0aW9uKHNhLHRhKXtyZXR1cm4g c2EgaW4gaWE/aWFbc2FdOnRhO30saXNTaHV0ZG93bjpmdW5jdGlvbigpe3JldHVy biB0aGlzLnN0YXRlPT0nc2h1dGRvd24nO30sc2hvdWxkSWRsZTpmdW5jdGlvbigp e3JldHVybiAhKHYuaXNQYWdlT3duZXIoKSYmdi5pc09ubGluZSgpKTt9LF9zZW5k SWZyYW1lRXJyb3I6ZnVuY3Rpb24oc2Epe3ZhciB0YT1uZXcgaSgpLnNldFVSSSgn L2FqYXgvcHJlc2VuY2UvcmVjb25uZWN0LnBocCcpLnNldERhdGEoe3JlYXNvbjpz YSxmYl9kdHNnOm4uZmJfZHRzZ30pLnNldE9wdGlvbignc3VwcHJlc3NFcnJvckhh bmRsZXJXYXJuaW5nJyx0cnVlKS5zZXRPcHRpb24oJ3JldHJpZXMnLDEpLnNldE1l dGhvZCgnR0VUJykuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0QWxsb3dDcm9zc1BhZ2VU cmFuc2l0aW9uKHRydWUpO3RhLnNwZWNpZmllc1dyaXRlUmVxdWlyZWRQYXJhbXMo KSYmdGEuc2VuZCgpO30sX2dldERlbGF5OmZ1bmN0aW9uKCl7dmFyIHNhPU1hdGgu bWluKGlhLk1JTl9SRVRSWV9JTlRFUlZBTCpNYXRoLnBvdygyLE1hdGgubWF4KDAs bGEtMSkpLGlhLk1BWF9SRVRSWV9JTlRFUlZBTCk7cmV0dXJuIHNhKiguNzUrTWF0 aC5yYW5kb20oKS8yKXwwO30sZW50ZXJTdGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMu X2luRW50ZXJTdGF0ZSllYS53YXJuKCdlbnRlcnN0YXRlX3JlY3Vyc2lvbicpO3Ro aXMuX2luRW50ZXJTdGF0ZT10cnVlO3RyeXt0aGlzLl9lbnRlclN0YXRlLmFwcGx5 KHRoaXMsYXJndW1lbnRzKTt0aGlzLl9pbkVudGVyU3RhdGU9ZmFsc2U7fWNhdGNo KHNhKXt0aGlzLl9pbkVudGVyU3RhdGU9ZmFsc2U7dGhyb3cgc2E7fX0sX2VudGVy U3RhdGU6ZnVuY3Rpb24oc2Epe3ZhciB0YT0wLHVhPW51bGwsdmE9YWEoYXJndW1l bnRzKTtpZih0aGlzLmlzU2h1dGRvd24oKSlyZXR1cm47aWYoc2EhPSdpZGxlIScm JnRoaXMuc2hvdWxkSWRsZSgpKXJldHVybjtqYSsrO2lhLnN0YXRlSWQ9amE7Y2xl YXJUaW1lb3V0KHRoaXMuX2RlZmVycmVkVHJhbnNpdGlvbik7dGhpcy5fZGVmZXJy ZWRUcmFuc2l0aW9uPW51bGw7dGhpcy50cmFuc3BvcnQuZW50ZXJTdGF0ZSgnaWRs ZScpO3RoaXMuc3RhdGU9J2lkbGUnO3RoaXMubmV4dFN0YXRlPW51bGw7aWYoLyEk Ly50ZXN0KHNhKSl7dmFyIHdhPXRoaXMuX3RyYW5zcG9ydFJhdGUudGFsbHkoKS50 aW1lQXZlcmFnZSx4YT1kYS5nZXRDb25maWcoJ01BWF9DSEFOTkVMX1NUQVRFU19Q RVJfU0VDJywxKTtpZih3YT49eGEpe2lmKCF0aGlzLl90aHJvdHRsZWQpe3RoaXMu X3Rocm90dGxlZD10cnVlO2VhLndhcm4oJ3Rocm90dGxlZCcpO31lYS5idW1wKCd0 aHJvdHRsZScpO3RhPTEwMDAveGE7fX1lbHNlIGlmKCEoLyMkLy50ZXN0KHNhKSkp dGE9dGhpcy5fZ2V0RGVsYXkoKTtzYT1zYS5yZXBsYWNlKC9cVyokLywnJyk7aWYo IWhhW3NhXSl0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdGU6JytzYSk7dmFy IHlhO2lmKHRhPD0wKXt5YT17c3RhdGU6c2F9O3RoaXMuX3RyYW5zcG9ydFJhdGUu YWRkKDEpO3RoaXMuc3RhdGU9c2E7dmFyIHphPXRoaXNbJ19lbnRlcl8nK3RoaXMu c3RhdGVdO2lmKHphKXt2YS5zaGlmdCgpO3phLmFwcGx5KHRoaXMsdmEpO31pZigv aW5pdHxpZGxlfHB1bGx8cGluZy8udGVzdCh0aGlzLnN0YXRlKSl7aWYoaWEuc3Ry ZWFtaW5nQ2FwYWJsZSYmL3B1bGwvLnRlc3QodGhpcy5zdGF0ZSkpdGhpcy5oZWFy dGJlYXRzPVtdO3RoaXMudHJhbnNwb3J0LmVudGVyU3RhdGUodGhpcy5zdGF0ZSxp YSk7aWYodGhpcy5zdGF0ZT09J3BpbmcnKXt5YS51cmw9bC5nZXRVUkkoaWEpLnRv U3RyaW5nKCk7eWEucG9ydD1pYS5wb3J0fHwndW5kZWZpbmVkJzt9fX1lbHNle3Ro aXMuc3RhdGU9J2lkbGUnO3RoaXMubmV4dFN0YXRlPXNhO3lhPXtzdGF0ZTp0aGlz LnN0YXRlLGRlbGF5OnRhLG5leHRTdGF0ZTpzYX07dmFbMF09c2ErJyMnO3RoaXMu X2RlZmVycmVkVHJhbnNpdGlvbj0oZnVuY3Rpb24oKXt0aGlzLl9kZWZlcnJlZFRy YW5zaXRpb249bnVsbDt0aGlzLmVudGVyU3RhdGUuYXBwbHkodGhpcyx2YSk7fSku YmluZCh0aGlzKS5kZWZlcih0YSxmYWxzZSk7fWlmKC9wdWxsLy50ZXN0KHNhKSl7

eWEuY2xpZW50X2lkPWlhLnNlc3Npb25JRDt5YS5zdHJlYW1pbmc9aWEuaW5TdHJl YW1pbmc7fWVhLmxvZygnZW50ZXJfJyt0aGlzLnN0YXRlLHlhKTtoLmluZm9ybShq Lk9OX0VOVEVSX1NUQVRFLHlhKTt9LGV4aXRTdGF0ZTpmdW5jdGlvbihzYSx0YSl7 dmFyIHVhPXNhLnN0YXRlSWQsdmE9c2Euc3RhdHVzO2lmKHRoaXMuaXNTaHV0ZG93 bigpfHx1YTxqYSlyZXR1cm47dmFyIHdhPWFhKGFyZ3VtZW50cykseGE9dGhpcy5z dGF0ZTt3YVswXT1zYS5zdGF0dXM7dmFyIHlhPXtzdGF0ZTp4YSxzdGF0dXM6dmF9 O2lmKC9wdWxsLy50ZXN0KHhhKSl7eWEuY2xpZW50X2lkPWlhLnNlc3Npb25JRDt5 YS5zdHJlYW1pbmc9aWEuaW5TdHJlYW1pbmc7fWlmKHRoaXMubmV4dFN0YXRlKXlh Lm5leHRTdGF0ZT10aGlzLm5leHRTdGF0ZTtpZih0YSYmdGEuZXJyb3JUeXBlKXt5 YS54aHI9dGEudG9KU09OP3RhLnRvSlNPTigpOnRhO2RlbGV0ZSB5YS54aHIuanNv bjt9aWYodGEmJnRhLmpzb24pe2lmKHRhLmpzb24udCl5YS50PXRhLmpzb24udDtp Zih0YS5qc29uLnJlYXNvbil5YS5yZWFzb249dGEuanNvbi5yZWFzb247aWYodGEu anNvbi5zZXEpeWEuc2VxPXRhLmpzb24uc2VxO31lYS5sb2coJ2V4aXRfJyt4YSx5 YSk7aC5pbmZvcm0oai5PTl9FWElUX1NUQVRFLHlhKTt2YXIgemE9dGhpc1snX2V4 aXRfJyt4YV07aWYoemEpdmE9emEuYXBwbHkodGhpcyx3YSl8fHZhO2lmKHZhIT1q Lk9LKXtyYSgpO2thW3hhXT0oa2FbeGFdfHwwKSsxO312YXIgYWI9aGFbdGhpcy5u ZXh0U3RhdGV8fHhhXVt2YV18fGhhLl9hbGxbdmFdLGJiPWFiJiZhYi5yZXBsYWNl KC8hKiQvLCcnKTtpZighYmIpe2VhLmVycm9yKCd0ZXJtaW5hbF90cmFuc2l0aW9u Jyx5YSk7dGhpcy5fc2h1dGRvd25IaW50PWouSElOVF9JTlZBTElEX1NUQVRFO2Fi PSdzaHV0ZG93biEnO310aGlzLl9sYXN0U3RhdGU9eGE7dGhpcy5fbGFzdFN0YXR1 cz12YTt0aGlzLmVudGVyU3RhdGUoYWIpO30sX3Byb2Nlc3NUcmFuc3BvcnREYXRh OmZ1bmN0aW9uKHNhLHRhKXt2YXIgdWE9dGEuanNvbix2YT11YS50O2lmKCdzJyBp biB1YSl7dWEuc2VxPXVhLnM7ZGVsZXRlIHVhLnM7fXZhciB3YT1pYS5zZXE7aWYo J3NlcScgaW4gdWEpe2lhLnNlcT11YS5zZXE7cy5kb1N5bmMoKTt9c3dpdGNoKHZh KXtjYXNlICdjb250aW51ZSc6aWYoaWEuaW5TdHJlYW1pbmcmJnRoaXMuaGVhcnRi ZWF0cy5sZW5ndGg8MSl7aWEuc3RyZWFtaW5nQ2FwYWJsZT1mYWxzZTtlYS5sb2co J3N3aXRjaF90b19sb25ncG9sbCcpO3NldFRpbWVvdXQodGhpcy5fcHJvYmVUZXN0 LGlhLlBST0JFX0RFTEFZLGZhbHNlKTt9cmEodHJ1ZSk7aWYoIWlhLmluU3RyZWFt aW5nfHxpYS5TVFJFQU1JTkdfRVhJVF9TVEFURV9PTl9DT05USU5VRSl0aGlzLmV4 aXRTdGF0ZSh7c3RhdHVzOmouT0ssc3RhdGVJZDpzYX0pO2JyZWFrO2Nhc2UgJ3Jl ZnJlc2gnOmNhc2UgJ3JlZnJlc2hEZWxheSc6dGhpcy5leGl0U3RhdGUoe3N0YXR1 czoncmVmcmVzaF8nKyh1YS5yZWFzb258fDApLHN0YXRlSWQ6c2F9LHRhKTticmVh aztjYXNlICdmdWxsUmVsb2FkJzpyLmNsZWFyKCk7ZWEubG9nKCdpbnZhbGlkX2hp c3RvcnknKTtoLmluZm9ybShqLk9OX0lOVkFMSURfSElTVE9SWSk7dGhpcy5leGl0 U3RhdGUoe3N0YXR1czpqLkVSUk9SX01JU1NJTkcsc3RhdGVJZDpzYX0sdGEpO2Jy ZWFrO2Nhc2UgJ21zZyc6dmFyIHhhLHlhLHphLGFiO3JhKHRydWUpO3lhPXVhLm1z O3phPWlhLnNlcS15YS5sZW5ndGg7Zm9yKHhhPTA7eGE8eWEubGVuZ3RoO3hhKyss emErKylpZih6YT49d2Epe2FiPXlhW3hhXTtpZihhYi50eXBlKXtlYS5kZWJ1Zygn bWVzc2FnZScse3R5cGU6YWIudHlwZX0pO2guaW5mb3JtKGouZ2V0QXJiaXRlclR5 cGUoYWIudHlwZSkse29iajphYn0pO319ZWxzZSBlYS53YXJuKCdzZXFfcmVncmVz c2lvbicse3NlcTp6YSxsYXN0X3NlcTp3YSxtZXNzYWdlczp5YS5sZW5ndGh9KTti cmVhaztjYXNlICdoZWFydGJlYXQnOmlmKGlhLmluU3RyZWFtaW5nKXt2YXIgYmI9 RGF0ZS5ub3coKTtpZih0aGlzLmhlYXJ0YmVhdHMubGVuZ3RoPjApe3ZhciBjYj1i Yi10aGlzLmhlYXJ0YmVhdHNbdGhpcy5oZWFydGJlYXRzLmxlbmd0aC0xXTtlYS5s b2coJ2hlYXJ0YmVhdF9pbnRlcnZhbCcse2NsaWVudF9pZDppYS5zZXNzaW9uSUQs aW50ZXJ2YWw6Y2J9KTt9dGhpcy5oZWFydGJlYXRzLnB1c2goYmIpO31icmVhaztk ZWZhdWx0OmVhLmVycm9yKCd1bmtub3duX21zZ190eXBlJyx7dHlwZTp2YX0pO2Jy ZWFrO319LF9lbnRlcl9pbml0OmZ1bmN0aW9uKCl7aWYoa2EuaW5pdD49ZGEuZ2V0 Q29uZmlnKCdNQVhfSU5JVF9GQUlMUycsMikpcmV0dXJuIHRoaXMuZXhpdFN0YXRl LmJpbmQodGhpcyx7c3RhdHVzOmouRVJST1JfTUFYLHN0YXRlSWQ6amF9KS5kZWZl cigpO3RoaXMuX2luaXRUaW1lcj10aGlzLmV4aXRTdGF0ZS5iaW5kKHRoaXMse3N0 YXR1czpqLkVSUk9SLHN0YXRlSWQ6amF9LCd0aW1lb3V0JykuZGVmZXIoaWEuSUZS QU1FX0xPQURfVElNRU9VVCxmYWxzZSk7fSxfZW50ZXJfcmVjb25uZWN0OmZ1bmN0 aW9uKHNhKXt2YXIgdGE9amE7aWYoIXQuaGFzVXNlckNvb2tpZSgpKXtlYS53YXJu KCdub191c2VyX2Nvb2tpZScpOyhmdW5jdGlvbigpe2RhLl9zaHV0ZG93bkhpbnQ9 ai5ISU5UX0FVVEg7ZGEuZXhpdFN0YXRlKHtzdGF0dXM6ai5FUlJPUl9TSFVURE9X TixzdGF0ZUlkOnRhfSk7fSkuZGVmZXIoKTtyZXR1cm47fXZhciB1YT17cmVhc29u OnNhLGZiX2R0c2c6bi5mYl9kdHNnfTtpZihuLmZiX2lzYil1YS5mYl9pc2I9bi5m Yl9pc2I7aWYoZmEpZmEodWEpO3ZhciB2YT1uZXcgbygnR0VUJywnL2FqYXgvcHJl c2VuY2UvcmVjb25uZWN0LnBocCcsdWEpO3ZhLm9uU3VjY2Vzcz0oZnVuY3Rpb24o

KXtkYS5jb25maWd1cmUodmEuanNvbik7ci5zdG9yZSgpO3RoaXMuZXhpdFN0YXRl KHtzdGF0dXM6ai5PSyxzdGF0ZUlkOnRhfSk7fSkuYmluZCh0aGlzKTt2YS5vbkVy cm9yPShmdW5jdGlvbigpe3ZhciB3YT12YS5qc29uJiZ2YS5qc29uLmVycm9yO2lm KHZhLmVycm9yVHlwZT09Zy5UUkFOU1BPUlRfRVJST1J8fHZhLmVycm9yVHlwZT09 Zy5QUk9YWV9FUlJPUil0aGlzLl9zaHV0ZG93bkhpbnQ9ai5ISU5UX0NPTk47aWYo d2EmJndhPT0xMzU2MDA3KXt0aGlzLl9zaHV0ZG93bkhpbnQ9ai5ISU5UX01BSU5U O31lbHNlIGlmKHdhPT0xMzU3MDAxfHx3YT09MTM1NzAwNHx8d2E9PTEzNDgwMDkp e3RoaXMuX3NodXRkb3duSGludD1qLkhJTlRfQVVUSDt9ZWxzZSB0aGlzLl9zaHV0 ZG93bkhpbnQ9bnVsbDt0aGlzLmV4aXRTdGF0ZSh7c3RhdHVzOnRoaXMuX3NodXRk b3duSGludD9qLkVSUk9SX1NIVVRET1dOOmouRVJST1Isc3RhdGVJZDp0YX0sdmEp O30pLmJpbmQodGhpcyk7dmEuc2VuZCgpO30sX2VudGVyX3NodXRkb3duOmZ1bmN0 aW9uKCl7aC5pbmZvcm0oai5PTl9TSFVURE9XTix7cmVhc29uOnRoaXMuX3NodXRk b3duSGludH0pO30sX2V4aXRfaW5pdDpmdW5jdGlvbihzYSl7aWYodGhpcy5faW5p dFRpbWVyKXRoaXMuX2luaXRUaW1lcj1jbGVhclRpbWVvdXQodGhpcy5faW5pdFRp bWVyKTtpZihzYT09ai5FUlJPUl9NQVgpdGhpcy5fc2VuZElmcmFtZUVycm9yKGou cmVhc29uX0lGcmFtZUxvYWRHaXZlVXApO30sX2V4aXRfcHVsbDpmdW5jdGlvbihz YSl7aWYoc2E9PWouT0spdGhpcy5sYXN0UHVsbFRpbWU9RGF0ZS5ub3coKTt9LF9l eGl0X3Bpbmc6ZnVuY3Rpb24oc2Epe2lmKHNhPT1qLk9LKXt2YXIgdGE9RGF0ZS5u b3coKS0odGhpcy5sYXN0UHVsbFRpbWV8fG4uc3RhcnQpO2lmKHRhPmlhLlNUQUxM X1RIUkVTSE9MRClyZXR1cm4gai5FUlJPUl9TVEFMRTt9fSxfcHJvYmVUZXN0OmZ1 bmN0aW9uKCl7aWEuc3RyZWFtaW5nQ2FwYWJsZT1mYWxzZTt2YXIgc2E9W10sdGE9 e21vZGU6J3N0cmVhbScsZm9ybWF0Oidqc29uJ30sdWE9bmV3IHcoJy9wcm9iZScp LnNldERvbWFpbihpYS5ob3N0KycuZmFjZWJvb2suY29tJykuc2V0UG9ydChpYS5w b3J0KS5zZXRTZWN1cmUodygpLmlzU2VjdXJlKCkpLnNldFF1ZXJ5RGF0YSh0YSks dmE9bmV3IGcoJ0dFVCcsdWEpO3ZhLm9uSlNPTj1mdW5jdGlvbih3YSx4YSl7aWYo d2EmJndhLmpzb24mJndhLmpzb24udD09PSdoZWFydGJlYXQnKXtzYS5wdXNoKERh dGUubm93KCkpO2lmKHNhLmxlbmd0aD49Mil7dmFyIHlhPXNhWzFdLXNhWzBdO2lm KHlhPj1pYS5QUk9CRV9IRUFSVEJFQVRTX0lOVEVSVkFMX0xPVyYmeWE8PWlhLlBS T0JFX0hFQVJUQkVBVFNfSU5URVJWQUxfSElHSCl7aWEuc3RyZWFtaW5nQ2FwYWJs ZT10cnVlO2VhLmxvZygnc3dpdGNoX3RvX3N0cmVhbWluZycpO31lYS5sb2coJ3By b2JlX29rJyx7dGltZTp5YX0pO319fTt2YS5vblN1Y2Nlc3M9ZnVuY3Rpb24od2Ep e2lmKHNhLmxlbmd0aCE9Mil7aWEuc3RyZWFtaW5nQ2FwYWJsZT1mYWxzZTtlYS5l cnJvcigncHJvYmVfZXJyb3InLHtlcnJvcjonYmVhdHMubGVuZ3RoID0gJytzYS5s ZW5ndGh9KTt9fTt2YS5vbkVycm9yPWZ1bmN0aW9uKHdhKXtpYS5zdHJlYW1pbmdD YXBhYmxlPWZhbHNlO2VhLmVycm9yKCdwcm9iZV9lcnJvcicsd2EpO307ZWEubG9n KCdwcm9iZV9yZXF1ZXN0Jyk7dmEuc2VuZCgpO319O2UuZXhwb3J0cz1kYTtpZihj YS5zZXJ2ZXJJbml0aWFsaXplZD09bnVsbCl7ZGEuY29uZmlndXJlKGNhLmNoYW5u ZWxDb25maWcpO2lmKC9zaHV0ZG93bi8udGVzdChjYS5zdGF0ZSkpZGEuX3NodXRk b3duSGludD1qW2NhLnJlYXNvbl07ZGEuaW5pdChjYS5zdGF0ZSxjYS5yZWFzb24p O319KTsKX19kKCJDaGFubmVsQ29ubmVjdGlvbiIsWyJBcmJpdGVyIiwiY29weVBy b3BlcnRpZXMiLCJDaGF0Q29uZmlnIiwiUnVuIiwiU3lzdGVtRXZlbnRzIiwiQ2hh bm5lbENvbnN0YW50cyIsIkNoYW5uZWxNYW5hZ2VyIiwiSlNMb2dnZXIiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9YignY29weVBy b3BlcnRpZXMnKSxpPWIoJ0NoYXRDb25maWcnKSxqPWIoJ1J1bicpLGs9YignU3lz dGVtRXZlbnRzJyksbD1iKCdDaGFubmVsQ29uc3RhbnRzJyksbT1iKCdDaGFubmVs TWFuYWdlcicpLG49YignSlNMb2dnZXInKSxvPW4uY3JlYXRlKCdjaGFubmVsX2Nv bm5lY3Rpb24nKSxwPW51bGwscT1udWxsLHI9bnVsbCxzPW51bGwsdD0wLHU9aChu ZXcgZygpLHtDT05ORUNURUQ6J2NoYXQtY29ubmVjdGlvbi9jb25uZWN0ZWQnLFJF Q09OTkVDVElORzonY2hhdC1jb25uZWN0aW9uL3JlY29ubmVjdGluZycsU0hVVERP V046J2NoYXQtY29ubmVjdGlvbi9zaHV0ZG93bicsTVVURV9XQVJOSU5HOidjaGF0 LWNvbm5lY3Rpb24vbXV0ZScsVU5NVVRFX1dBUk5JTkc6J2NoYXQtY29ubmVjdGlv bi91bm11dGUnfSk7ZnVuY3Rpb24gdigpe2lmKHEpe2NsZWFyVGltZW91dChxKTtx PW51bGw7fX1mdW5jdGlvbiB3KCl7digpO28ubG9nKCd1bm11dGVfd2FybmluZycp O3UuaW5mb3JtKHUuVU5NVVRFX1dBUk5JTkcpO31mdW5jdGlvbiB4KGJhKXt2KCk7 cT13LmRlZmVyKGJhLGZhbHNlKTtvLmxvZygnbXV0ZV93YXJuaW5nJyx7dGltZTpi YX0pO3UuaW5mb3JtKHUuTVVURV9XQVJOSU5HKTt9ZnVuY3Rpb24geSgpe2lmKHIp e2NsZWFyVGltZW91dChyKTtyPW51bGw7fX1mdW5jdGlvbiB6KGJhLGNhKXt5KCk7 aWYoYmE9PT1sLk9OX0VOVEVSX1NUQVRFJiYoY2EubmV4dFN0YXRlfHxjYS5zdGF0 ZSk9PT0ncHVsbCcpe2lmKHMhPT11LkNPTk5FQ1RFRCl7by5sb2coJ2Nvbm5lY3Rl ZCcpO3ZhciBkYT0hcztzPXUuQ09OTkVDVEVEO3Q9MDt1LmluZm9ybSh1LkNPTk5F

Q1RFRCx7aW5pdDpkYX0pO319ZWxzZSBpZihiYT09PWwuT05fRU5URVJfU1RBVEUm JigoY2EubmV4dFN0YXRlfHxjYS5zdGF0ZSk9PT0ncGluZyd8fCghY2EubmV4dFN0 YXRlJiZjYS5zdGF0ZT09PSdpZGxlJykpKXtyPShmdW5jdGlvbigpe3ZhciBlYT1u dWxsO2lmKCEoY2Euc3RhdGU9PT0naWRsZScmJiFjYS5uZXh0U3RhdGUpKWVhPShj YS5kZWxheXx8MCk7by5sb2coJ3JlY29ubmVjdGluZycse2RlbGF5OmVhfSk7aWYo dS5kaXNjb25uZWN0ZWQoKSlvLmxvZygncmVjb25uZWN0aW5nX3VpJyx7ZGVsYXk6 ZWF9KTtzPXUuUkVDT05ORUNUSU5HOyhjYS5zdGF0ZT09PSdpZGxlJykmJnQrKztp Zih0PjEpe3UuaW5mb3JtKHUuUkVDT05ORUNUSU5HLGVhKTt9ZWxzZSBpZighY2Eu bmV4dFN0YXRlJiZjYS5zdGF0ZT09PSdpZGxlJyl6KGJhLGNhKTt9KS5kZWZlcig1 MDAsZmFsc2UpO31lbHNlIGlmKGJhPT09bC5PTl9TSFVURE9XTil7by5sb2coJ3No dXRkb3duJyx7cmVhc29uOmNhLnJlYXNvbn0pO3M9dS5TSFVURE9XTjt0PTA7dS5p bmZvcm0odS5TSFVURE9XTixjYS5yZWFzb24pO319ZnVuY3Rpb24gYWEoYmEpe2lm KG0uc3RhdGU9PT0ncGluZyd8fG0uaXNTaHV0ZG93bigpKXJldHVybjtvLmxvZygn cmVjb25uZWN0Jyx7bm93OmJhfSk7dS5pbmZvcm0odS5SRUNPTk5FQ1RJTkcsMCk7 aWYoISFiYSl7aWYocCE9PW51bGwpe2NsZWFyVGltZW91dChwKTtwPW51bGw7fW0u ZW50ZXJTdGF0ZSgncGluZyEnKTt9ZWxzZSBpZighcClwPXNldFRpbWVvdXQoZnVu Y3Rpb24oKXttLmVudGVyU3RhdGUoJ3BpbmchJyk7cD1udWxsO30saS5nZXQoJ2No YW5uZWxfbWFudWFsX3JlY29ubmVjdF9kZWZlcl9tc2VjJyksZmFsc2UpO31pZiht LmlzU2h1dGRvd24oKSl7eihsLk9OX1NIVVRET1dOLG0uX3NodXRkb3duSGludCk7 fWVsc2UgeihsLk9OX0VOVEVSX1NUQVRFLHtzdGF0ZTptLnN0YXRlLG5leHRTdGF0 ZTptLm5leHRTdGF0ZSxkZWxheTowfSk7Zy5zdWJzY3JpYmUoW2wuT05fRU5URVJf U1RBVEUsbC5PTl9TSFVURE9XTl0seik7ay5zdWJzY3JpYmUoay5USU1FX1RSQVZF TCxmdW5jdGlvbigpe2FhKCk7eChpLmdldCgnbXV0ZV93YXJuaW5nX3RpbWVfbXNl YycpKTt9KTtqLm9uQmVmb3JlVW5sb2FkKHksZmFsc2UpO2godSx7ZGlzY29ubmVj dGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHM9PT11LlNIVVRET1dOfHwocz09PXUuUkVD T05ORUNUSU5HJiYhcSYmdD4xKTt9LGlzU2h1dGRvd246ZnVuY3Rpb24oKXtyZXR1 cm4gcz09PXUuU0hVVERPV047fSxyZWNvbm5lY3Q6YWEsdW5tdXRlV2FybmluZzp3 fSk7ZS5leHBvcnRzPXU7fSk7Cl9fZCgibGVnYWN5OkNoYW5uZWxDb25zdGFudHMi LFsiQ2hhbm5lbENvbnN0YW50cyJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuQ2hhbm5l bENvbnN0YW50cz1iKCdDaGFubmVsQ29uc3RhbnRzJyk7fSwzKTsKX19kKCJBdmFp bGFibGVMaXN0Q29uc3RhbnRzIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9e09OX0FWQUlMQUJJTElUWV9DSEFOR0VEOididWRkeWxpc3QvYXZhaWxhYmls aXR5LWNoYW5nZWQnLE9OX1VQREFURV9FUlJPUjonYnVkZHlsaXN0L3VwZGF0ZS1l cnJvcicsT05fVVBEQVRFRDonYnVkZHlsaXN0L3VwZGF0ZWQnLE9OX0NIQVRfTk9U SUZJQ0FUSU9OX0NIQU5HRUQ6J2NoYXQtbm90aWZpY2F0aW9uLWNoYW5nZWQnLE9G RkxJTkU6MCxJRExFOjEsQUNUSVZFOjIsTU9CSUxFOjMsTEVHQUNZX09WRVJMQVlf T0ZGTElORTotMSxMRUdBQ1lfT1ZFUkxBWV9PTkxJTkU6MCxMRUdBQ1lfT1ZFUkxB WV9JRExFOjEsbGVnYWN5U3RhdHVzTWFwOnsnMCc6MiwnMSc6MSwnLTEnOjAsJzIn OjN9LHJldmVyc2VMZWdhY3lTdGF0dXNNYXA6ezA6LTEsMToxLDI6MCwzOjJ9fTt3 aW5kb3cuQXZhaWxhYmxlTGlzdENvbnN0YW50cz1lLmV4cG9ydHM9Zzt9LDMpOwpf X2QoIlByZXNlbmNlUHJpdmFjeSIsWyJoYXNBcnJheU5hdHVyZSIsIkFyYml0ZXIi LCJBc3luY1JlcXVlc3QiLCJDaGFubmVsQ29uc3RhbnRzIiwiY29weVByb3BlcnRp ZXMiLCJFbnYiLCJKU0xvZ2dlciIsIlByZXNlbmNlVXRpbCIsIlByZXNlbmNlUHJp dmFjeUluaXRpYWxEYXRhIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J2hhc0FycmF5TmF0dXJlJyksaD1iKCdBcmJpdGVyJyksaT1iKCdBc3luY1JlcXVl c3QnKSxqPWIoJ0NoYW5uZWxDb25zdGFudHMnKSxrPWIoJ2NvcHlQcm9wZXJ0aWVz JyksbD1iKCdFbnYnKSxtPWIoJ0pTTG9nZ2VyJyksbj1iKCdQcmVzZW5jZVV0aWwn KSxvPWMoJ1ByZXNlbmNlUHJpdmFjeUluaXRpYWxEYXRhJykscD0nL2FqYXgvY2hh dC9wcml2YWN5L3NldHRpbmdzLnBocCcscT0nL2FqYXgvY2hhdC9wcml2YWN5L29u bGluZV9wb2xpY3kucGhwJyxyPScvYWpheC9jaGF0L3ByaXZhY3kvdmlzaWJpbGl0 eS5waHAnLHM9J2ZyaWVuZF92aXNpYmlsaXR5Jyx0PSd2aXNpYmlsaXR5Jyx1PSdv bmxpbmVfcG9saWN5Jyx2PWsoe30sby5wcml2YWN5RGF0YSksdz1vLnZpc2liaWxp dHkseD1rKHt9LG8ucHJpdmFjeURhdGEpLHk9dyx6PW8ub25saW5lUG9saWN5LGFh PXosYmE9W10sY2E9ZmFsc2U7ZnVuY3Rpb24gZGEoKXtyZXR1cm4gbS5jcmVhdGUo J2JsYWNrYmlyZCcpO312YXIgZWE9ayhuZXcgaCgpLHtXSElURUxJU1RFRDoxLEJM QUNLTElTVEVEOi0xLFVOTElTVEVEOjAsT05MSU5FOjEsT0ZGTElORTowLE9OTElO RV9UT19XSElURUxJU1Q6MCxPTkxJTkVfVE9fQkxBQ0tMSVNUOjF9KTtmdW5jdGlv biBmYShyYSl7dmFyIHNhO2ZvcihzYSBpbiByYSl7dmFyIHRhPXJhW3NhXTtpZihz YT09bC51c2VyKXtkYSgpLmVycm9yKCdzZXRfdmlld2VyX3Zpc2liaWxpdHknKTt0 aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdG8gc2V0IGN1cnJlbnQgdXNlcidzIHZp

c2liaWxpdHkiKTt9c3dpdGNoKHRhKXtjYXNlIGVhLldISVRFTElTVEVEOmNhc2Ug ZWEuQkxBQ0tMSVNURUQ6Y2FzZSBlYS5VTkxJU1RFRDpicmVhaztkZWZhdWx0OmRh KCkuZXJyb3IoJ3NldF9pbnZhbGlkX2ZyaWVuZF92aXNpYmlsaXR5Jyx7aWQ6c2Es dmFsdWU6dGF9KTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RhdGU6ICIrdGEp O319Zm9yKHNhIGluIHJhKXZbc2FdPXJhW3NhXTtlYS5pbmZvcm0oJ3ByaXZhY3kt Y2hhbmdlZCcpO31mdW5jdGlvbiBnYShyYSxzYSl7dmFyIHRhPXt9O3RhW3JhXT1z YTtmYSh0YSk7fWZ1bmN0aW9uIGhhKHJhKXtzd2l0Y2gocmEpe2Nhc2UgZWEuT05M SU5FOmNhc2UgZWEuT0ZGTElORTpicmVhaztkZWZhdWx0OmRhKCkuZXJyb3IoJ3Nl dF9pbnZhbGlkX3Zpc2liaWxpdHknLHt2YWx1ZTpyYX0pO3Rocm93IG5ldyBFcnJv cigiSW52YWxpZCB2aXNpYmlsaXR5OiAiK3JhKTt9dz1yYTtlYS5pbmZvcm0oJ3By aXZhY3ktY2hhbmdlZCcpO2VhLmluZm9ybSgncHJpdmFjeS11c2VyLXByZXNlbmNl LWNoYW5nZWQnKTtoLmluZm9ybSgnY2hhdC92aXNpYmlsaXR5LWNoYW5nZWQnLHtz ZW5kZXI6dGhpc30pO31mdW5jdGlvbiBpYShyYSl7c3dpdGNoKHJhKXtjYXNlIGVh Lk9OTElORV9UT19XSElURUxJU1Q6Y2FzZSBlYS5PTkxJTkVfVE9fQkxBQ0tMSVNU OmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRlZmF1bHQg b25saW5lIHBvbGljeTogIityYSk7fXo9cmE7ZWEuaW5mb3JtKCdwcml2YWN5LXVz ZXItcHJlc2VuY2UtY2hhbmdlZCcpO2VhLmluZm9ybSgncHJpdmFjeS1jaGFuZ2Vk Jyk7fWZ1bmN0aW9uIGphKHJhLHNhKXtjYT10cnVlO3JhLnNlbmQoKTt9ZnVuY3Rp b24ga2EocmEsc2Epe2JhLnB1c2goe3JlcXVlc3Q6cmEsZGF0YTpzYX0pO2lmKCFj YSl7dmFyIHRhPWJhLnNoaWZ0KCk7amEodGEucmVxdWVzdCx0YS5kYXRhKTt9fWZ1 bmN0aW9uIGxhKHJhLHNhKXt2YXIgdGE9cmEudHlwZTtpZih0YT09PXMpe3ZhciB1 YT1zYS5wYXlsb2FkLnVzZXJfYXZhaWxhYmlsaXRpZXM7aWYoIWcodWEpKXtlYS5p bmZvcm0oJ3ByaXZhY3ktYXZhaWxhYmlsaXR5LWNoYW5nZWQnLHt1c2VyX2F2YWls YWJpbGl0aWVzOnVhfSk7Zm9yKHZhciB2YSBpbiByYS5zZXR0aW5ncyl4W3ZhXT1y YS5zZXR0aW5nc1t2YV07fX1lbHNle2lmKHRhPT09dCl7eT1yYS52aXNpYmlsaXR5 O31lbHNlIGlmKHRhPT09dSlhYT1yYS5vbmxpbmVfcG9saWN5O2VhLmluZm9ybSgn cHJpdmFjeS11c2VyLXByZXNlbmNlLXJlc3BvbnNlJyk7fWRhKCkubG9nKCdzZXRf dXBkYXRlX3Jlc3BvbnNlJyx7ZGF0YTpyYSxyZXNwb25zZTpzYX0pO31mdW5jdGlv biBtYShyYSxzYSl7aWYodyE9PXkpaGEoeSk7aWYoeiE9PWFhKWlhKGFhKTtrKHYs eCk7ZWEuaW5mb3JtKCdwcml2YWN5LWNoYW5nZWQnKTtiYT1bXTtkYSgpLmxvZygn c2V0X2Vycm9yX3Jlc3BvbnNlJyx7ZGF0YTpyYSxyZXNwb25zZTpzYX0pO31mdW5j dGlvbiBuYShyYSl7Y2E9ZmFsc2U7aWYoYmEubGVuZ3RoPjApe3ZhciBzYT1iYS5z aGlmdCgpO2phKHNhLnJlcXVlc3Qsc2EuZGF0YSk7fX1mdW5jdGlvbiBvYShyYSxz YSl7aWYobiE9bnVsbCl7dmFyIHRhPXJhLmdldERhdGEoKTt0YS53aW5kb3dfaWQ9 bi5nZXRTZXNzaW9uSUQoKTtyYS5zZXREYXRhKHRhKTt9cmEuc2V0SGFuZGxlcihs YS5iaW5kKHRoaXMsc2EpKS5zZXRFcnJvckhhbmRsZXIobWEuYmluZCh0aGlzLHNh KSkuc2V0VHJhbnNwb3J0RXJyb3JIYW5kbGVyKG1hLmJpbmQodGhpcyxzYSkpLnNl dEZpbmFsbHlIYW5kbGVyKG5hLmJpbmQodGhpcykpLnNldEFsbG93Q3Jvc3NQYWdl VHJhbnNpdGlvbih0cnVlKTtyZXR1cm4gcmE7fWZ1bmN0aW9uIHBhKHJhLHNhLHRh KXtyZXR1cm4gb2EobmV3IGkocmEpLnNldERhdGEoc2EpLHRhKTt9ZnVuY3Rpb24g cWEocmEsc2Epe3ZhciB0YT1zYS5vYmo7aWYodGEudmlld2VyX2lkIT1sLnVzZXIp e2RhKCkuZXJyb3IoJ2ludmFsaWRfdmlld2VyX2Zvcl9jaGFubmVsX21lc3NhZ2Un LHt0eXBlOnJhLGRhdGE6c2F9KTt0aHJvdyBuZXcgRXJyb3IoIlZpZXdlciBnb3Qg ZnJvbSB0aGUgY2hhbm5lbCBpcyBub3QgdGhlIHJlYWwgdmlld2VyIik7fWlmKHRh LndpbmRvd19pZD09PW4uZ2V0U2Vzc2lvbklEKCkpcmV0dXJuO3ZhciB1YT10YS5k YXRhO2lmKHRhLmV2ZW50PT0nYWNjZXNzX2NvbnRyb2xfZW50cnknKXt1YS50YXJn ZXRfaWRzLmZvckVhY2goZnVuY3Rpb24od2Epe2dhKHdhLHVhLnNldHRpbmcpO3hb d2FdPXVhLnNldHRpbmc7fSk7fWVsc2V7aWYodGEuZXZlbnQ9PSd2aXNpYmlsaXR5 X3VwZGF0ZScpe3ZhciB2YT0hIXVhLnZpc2liaWxpdHk/ZWEuT05MSU5FOmVhLk9G RkxJTkU7aGEodmEpO3k9dmE7fWVsc2UgaWYodGEuZXZlbnQ9PSdvbmxpbmVfcG9s aWN5X3VwZGF0ZScpe2lhKHVhLm9ubGluZV9wb2xpY3kpO2FhPXVhLm9ubGluZV9w b2xpY3k7fWVhLmluZm9ybSgncHJpdmFjeS11c2VyLXByZXNlbmNlLXJlc3BvbnNl Jyk7fWRhKCkubG9nKCdjaGFubmVsX21lc3NhZ2VfcmVjZWl2ZWQnLHtkYXRhOnNh Lm9ian0pO31rKGVhLHtXSElURUxJU1RFRDoxLEJMQUNLTElTVEVEOi0xLFVOTElT VEVEOjAsT05MSU5FOjEsT0ZGTElORTowLE9OTElORV9UT19XSElURUxJU1Q6MCxP TkxJTkVfVE9fQkxBQ0tMSVNUOjEsaW5pdDpmdW5jdGlvbihyYSxzYSx0YSl7fSxz ZXRWaXNpYmlsaXR5OmZ1bmN0aW9uKHJhKXt5PXc7aGEocmEpO3ZhciBzYT17dmlz aWJpbGl0eTpyYX0sdGE9e3R5cGU6dCx2aXNpYmlsaXR5OnJhfSx1YT1wYShyLHNh LHRhKTtrYSh1YSx0YSk7ZGEoKS5sb2coJ3NldF92aXNpYmlsaXR5Jyx7ZGF0YTpz YX0pO3JldHVybiByYTt9LGdldFZpc2liaWxpdHk6ZnVuY3Rpb24oKXtyZXR1cm4g

dzt9LHNldE9ubGluZVBvbGljeTpmdW5jdGlvbihyYSl7YWE9ejtpYShyYSk7dmFy IHNhPXtvbmxpbmVfcG9saWN5OnJhfSx0YT17dHlwZTp1LG9ubGluZV9wb2xpY3k6 cmF9LHVhPXBhKHEsc2EsdGEpO2thKHVhLHRhKTtkYSgpLmxvZygnc2V0X29ubGlu ZV9wb2xpY3knLHtkYXRhOnNhfSk7cmV0dXJuIHJhO30sZ2V0T25saW5lUG9saWN5 OmZ1bmN0aW9uKCl7cmV0dXJuIHo7fSxnZXRGcmllbmRWaXNpYmlsaXR5OmZ1bmN0 aW9uKHJhKXtyZXR1cm4gdltyYV18fGVhLlVOTElTVEVEO30sYWxsb3dzOmZ1bmN0 aW9uKHJhKXtpZih0aGlzLmdldFZpc2liaWxpdHkoKT09PWVhLk9GRkxJTkUpcmV0 dXJuIGZhbHNlO3ZhciBzYT10aGlzLmdldE9ubGluZVBvbGljeSgpO3JldHVybiBz YT09PWVhLk9OTElORV9UT19XSElURUxJU1Q/dltyYV09PWVhLldISVRFTElTVEVE OnZbcmFdIT1lYS5CTEFDS0xJU1RFRDt9LHNldEZyaWVuZHNWaXNpYmlsaXR5OmZ1 bmN0aW9uKHJhLHNhKXtpZihyYS5sZW5ndGg+MCl7dmFyIHRhPXt9O2Zvcih2YXIg dWE9MDt1YTxyYS5sZW5ndGg7dWErKyl7dmFyIHZhPXJhW3VhXTt4W3ZhXT12W3Zh XTt0YVt2YV09c2E7fWZhKHRhKTt2YXIgd2E9c2E7aWYod2E9PWVhLlVOTElTVEVE KXdhPXhbcmFbMF1dO3ZhciB4YT17dXNlcnM6cmEsc2V0dGluZzpzYSxzZXR0aW5n X3R5cGU6d2F9LHlhPXt0eXBlOnMsc2V0dGluZ3M6dGF9LHphPXBhKHAseGEseWEp O2thKHphLHlhKTtkYSgpLmxvZygnc2V0X2ZyaWVuZF92aXNpYmlsaXR5Jyx7ZGF0 YTp4YX0pO31yZXR1cm4gc2E7fSxzZXRGcmllbmRWaXNpYmlsaXR5TWFwOmZ1bmN0 aW9uKHJhLHNhKXtmb3IodmFyIHRhIGluIHJhKXhbdGFdPXZbdGFdO2ZhKHJhKTt2 YXIgdWE9e3R5cGU6cyxzZXR0aW5nczpyYX07a2Eob2Eoc2EsdWEpLHVhKTtkYSgp LmxvZygnc2V0X2ZyaWVuZF92aXNpYmlsaXR5X2Zyb21fbWFwJyx7ZGF0YTpyYX0p O30sYWxsb3c6ZnVuY3Rpb24ocmEpe2lmKHRoaXMuYWxsb3dzKHJhKSl7ZGEoKS5l cnJvcignYWxsb3dfYWxyZWFkeV9hbGxvd2VkJyk7dGhyb3cgbmV3IEVycm9yKCJh bGxvdygpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgdXNlcnMgdGhhdCAiKyJh cmUgbm90IGFscmVhZHkgYWxsb3dlZCIpO31pZih0aGlzLmdldFZpc2liaWxpdHko KT09PWVhLk9GRkxJTkUpe2RhKCkuZXJyb3IoJ2FsbG93X2NhbGxlZF93aGlsZV9v ZmZsaW5lJyk7dGhyb3cgbmV3IEVycm9yKCJhbGxvdygpIHNob3VsZCBvbmx5IGJl IGNhbGxlZCB3aGVuIHRoZSB1c2VyIGlzIGFscmVhZHkgb25saW5lIik7fXZhciBz YT10aGlzLmdldE9ubGluZVBvbGljeSgpPT09ZWEuT05MSU5FX1RPX1dISVRFTElT VD9lYS5XSElURUxJU1RFRDplYS5VTkxJU1RFRDtyZXR1cm4gdGhpcy5zZXRGcmll bmRzVmlzaWJpbGl0eShbcmFdLHNhKTt9LGRpc2FsbG93OmZ1bmN0aW9uKHJhKXtp ZighdGhpcy5hbGxvd3MocmEpKXtkYSgpLmVycm9yKCdkaXNhbGxvd19hbHJlYWR5 X2Rpc2FsbG93ZWQnKTt0aHJvdyBuZXcgRXJyb3IoImRpc2FsbG93KCkgc2hvdWxk IG9ubHkgYmUgY2FsbGVkIGZvciB1c2VycyB0aGF0ICIrImFyZSBub3QgYWxyZWFk eSBkaXNhbGxvd2VkIik7fWlmKHRoaXMuZ2V0VmlzaWJpbGl0eSgpPT09ZWEuT0ZG TElORSl7ZGEoKS5lcnJvcignZGlzYWxsb3dfY2FsbGVkX3doaWxlX29mZmxpbmUn KTt0aHJvdyBuZXcgRXJyb3IoImRpc2FsbG93KCkgc2hvdWxkIG9ubHkgYmUgY2Fs bGVkIHdoZW4gdGhlIHVzZXIgaXMgYWxyZWFkeSBvbmxpbmUiKTt9dmFyIHNhPXRo aXMuZ2V0T25saW5lUG9saWN5KCk9PT1lYS5PTkxJTkVfVE9fQkxBQ0tMSVNUP2Vh LkJMQUNLTElTVEVEOmVhLlVOTElTVEVEO3JldHVybiB0aGlzLnNldEZyaWVuZHNW aXNpYmlsaXR5KFtyYV0sc2EpO30sZ2V0QmxhY2tsaXN0OmZ1bmN0aW9uKCl7dmFy IHJhPVtdO2Zvcih2YXIgc2EgaW4gdilpZih2W3NhXT09PWVhLkJMQUNLTElTVEVE KXJhLnB1c2goc2EpO3JldHVybiByYTt9LGdldFdoaXRlbGlzdDpmdW5jdGlvbigp e3ZhciByYT1bXTtmb3IodmFyIHNhIGluIHYpaWYodltzYV09PT1lYS5XSElURUxJ U1RFRClyYS5wdXNoKHNhKTtyZXR1cm4gcmE7fSxnZXRNYXBGb3JUZXN0OmZ1bmN0 aW9uKCl7cmV0dXJuIHY7fSxzZXRNYXBGb3JUZXN0OmZ1bmN0aW9uKHJhKXt2PXJh O319KTtlYS5pbmZvcm0oJ3ByaXZhY3ktY2hhbmdlZCcpO2VhLmluZm9ybSgncHJp dmFjeS11c2VyLXByZXNlbmNlLWNoYW5nZWQnKTtkYSgpLmxvZygnaW5pdGlhbGl6 ZWQnLHt2aXNpYmlsaXR5OncscG9saWN5Onp9KTtoLnN1YnNjcmliZShqLmdldEFy Yml0ZXJUeXBlKCdwcml2YWN5X2NoYW5nZWQnKSxxYS5iaW5kKHRoaXMpKTtoLnN1 YnNjcmliZShqLk9OX0NPTkZJRyxmdW5jdGlvbihyYSxzYSl7dmFyIHRhPXNhLmdl dENvbmZpZygndmlzaWJpbGl0eScsbnVsbCk7aWYodGEhPT1udWxsJiZ0eXBlb2Yo dGEpIT09J3VuZGVmaW5lZCcpe3ZhciB1YT10YT9lYS5PTkxJTkU6ZWEuT0ZGTElO RTtoYSh1YSk7ZGEoKS5sb2coJ2NvbmZpZ192aXNpYmlsaXR5Jyx7dmlzOnVhfSk7 fX0uYmluZCh0aGlzKSk7YS5QcmVzZW5jZVByaXZhY3k9ZS5leHBvcnRzPWVhO30s Myk7Cl9fZCgiQ2hhdCIsWyJBcmJpdGVyIiwiQXN5bmNTaWduYWwiLCJKU0xvZ2dl ciIsIlByZXNlbmNlUHJpdmFjeSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdBcmJpdGVyJyksaD1iKCdBc3luY1NpZ25hbCcpLGk9YignSlNMb2dnZXIn KSxqPWIoJ1ByZXNlbmNlUHJpdmFjeScpO2Z1bmN0aW9uIGsobyxwLHEpe2lmKHAm JnA9PSdvcmRlcmVkX2xpc3QnfHxwPT0nbW9yZV9vbmxpbmVfZnJpZW5kcyd8fHA9 PSdvbmxpbmVfZnJpZW5kcyd8fHA9PSd0eXBlYWhlYWQnKXt2YXIgcj17dGFyZ2V0

Om8sc291cmNlOnAsc29ydGVkX2xpc3Q6cX07bmV3IGgoJy9hamF4L2NoYXQvY3Qu cGhwJyxyKS5zZW5kKCk7fX12YXIgbD17YnVkZHlMaXN0TnViOididWRkeWxpc3Qt bnViL2luaXRpYWxpemVkJyxzaWRlYmFyOidzaWRlYmFyL2luaXRpYWxpemVkJ307 ZnVuY3Rpb24gbShvLHApe2cuc3Vic2NyaWJlKGxbb10sZnVuY3Rpb24oZXZlbnQs cSl7cChxKTt9KTt9dmFyIG49e29wZW5UYWI6ZnVuY3Rpb24obyxwLHEscixzKXtp Zih3aW5kb3cuRXh0ZXJuYWwmJndpbmRvdy5FeHRlcm5hbC5DaGF0JiZ3aW5kb3cu RXh0ZXJuYWwuQ2hhdC5vcGVuV2luZG93KXdpbmRvdy5FeHRlcm5hbC5DaGF0Lm9w ZW5XaW5kb3cobyk7ayhvLHIscyk7ZChbJ01lcmN1cnlUaHJlYWRzJ10sZnVuY3Rp b24odCl7aWYoIXF8fHE9PSdmcmllbmQnKXt2YXIgdT10LmdldENhbm9uaWNhbFRo cmVhZFRvVXNlcihvKTtnLmluZm9ybSgnY2hhdC9vcGVuLXRhYicse3RocmVhZF9p ZDp1LnRocmVhZF9pZH0pO319KTt9LG9wZW5CdWRkeUxpc3Q6ZnVuY3Rpb24oKXtt KCdidWRkeUxpc3ROdWInLGZ1bmN0aW9uKG8pe28uc2hvdygpO20oJ3NpZGViYXIn LGZ1bmN0aW9uKHApe3AuZW5hYmxlKCk7fSk7fSk7fSxjbG9zZUJ1ZGR5TGlzdDpm dW5jdGlvbigpe20oJ2J1ZGR5TGlzdE51YicsZnVuY3Rpb24obyl7by5oaWRlKCk7 fSk7fSx0b2dnbGVTaWRlYmFyOmZ1bmN0aW9uKCl7bSgnc2lkZWJhcicsZnVuY3Rp b24obyl7by50b2dnbGUoKTt9KTt9LGdvT25saW5lOmZ1bmN0aW9uKG8pe2QoWydD aGF0VmlzaWJpbGl0eSddLGZ1bmN0aW9uKHApe3AuZ29PbmxpbmUobyk7fSk7fSxp c09ubGluZTpmdW5jdGlvbigpe3ZhciBvPW51bGw7ZChbJ0NoYXRWaXNpYmlsaXR5 J10sZnVuY3Rpb24ocCl7bz1wO30pO3JldHVybiBvJiZvLmlzT25saW5lKCk7fX07 YS5DaGF0PWUuZXhwb3J0cz1uO30sMyk7Cl9fZCgiQmxhY2tiaXJkVXBzZWxsIixb ImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwiQXN5bmNSZXF1ZXN0IiwiQ29u dGV4dHVhbERpYWxvZ1giLCJET00iLCJMYXllckRlc3Ryb3lPbkhpZGUiLCJMYXll ckhpZGVPblRyYW5zaXRpb24iLCJQcmVzZW5jZVByaXZhY3kiLCJjb3B5UHJvcGVy dGllcyIsIkJsYWNrYmlyZFVwc2VsbENvbmZpZyIsIkJsYWNrYmlyZFVwc2VsbENv bnN0YW50cyIsIkJsYWNrYmlyZFVwc2VsbFRlbXBsYXRlcyJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRl cicpLGg9YignQXN5bmNSZXF1ZXN0JyksaT1iKCdDb250ZXh0dWFsRGlhbG9nWCcp LGo9YignRE9NJyksaz1iKCdMYXllckRlc3Ryb3lPbkhpZGUnKSxsPWIoJ0xheWVy SGlkZU9uVHJhbnNpdGlvbicpLG09YignUHJlc2VuY2VQcml2YWN5Jyksbj1iKCdj b3B5UHJvcGVydGllcycpLG89YygnQmxhY2tiaXJkVXBzZWxsQ29uZmlnJykscD1j KCdCbGFja2JpcmRVcHNlbGxDb25zdGFudHMnKSxxPWMoJ0JsYWNrYmlyZFVwc2Vs bFRlbXBsYXRlcycpLHI9MixzPTUxODQwMDAsdD0nL2FqYXgvY2hhdC9ibGFja2Jp cmQvdXBkYXRlX2ltcHJlc3Npb25zLnBocCcsdT1udWxsLHY9bnVsbCx3PWZhbHNl LHg9ZmFsc2U7ZnVuY3Rpb24geSgpe31uKHkse3Nob3VsZEVkdWNhdGU6ZnVuY3Rp b24oKXtyZXR1cm4gby5FZHVjYXRpb25JbXByZXNzaW9uczxyJiZvLlRpbWVPZmZs aW5lPD1zJiZvLkdLJiYhdzt9LGdldE9mZmxpbmVDb250ZW50OmZ1bmN0aW9uKCl7 YWEoKTt2YXIgYmE9cVsnOmZiOmNoYXQ6YmxhY2tiaXJkOm9mZmxpbmUtZWR1Y2F0 ZSddLmJ1aWxkKCksY2E9YmEuZ2V0Tm9kZSgnY2hhdFNldHRpbmdzQnV0dG9uJyk7 RXZlbnQubGlzdGVuKGNhLCdjbGljaycsZnVuY3Rpb24oKXtnLmluZm9ybSgnY2hh dC9hZHZhbmNlZC1zZXR0aW5ncy1kaWFsb2ctb3BlbmVkJyk7fSk7cmV0dXJuIGJh LmdldFJvb3QoKTt9LGdldEJsYWNrYmlyZENvbnRlbnQ6ZnVuY3Rpb24oYmEpe2Fh KCk7c3dpdGNoKGJhKXtjYXNlIG0uT05MSU5FOnJldHVybiBxWyc6ZmI6Y2hhdDpi bGFja2JpcmQ6bW9zdC1mcmllbmRzLWVkdWNhdGUnXS5idWlsZCgpLmdldFJvb3Qo KTtjYXNlIG0uT0ZGTElORTpyZXR1cm4gcVsnOmZiOmNoYXQ6YmxhY2tiaXJkOnNv bWUtZnJpZW5kcy1lZHVjYXRlJ10uYnVpbGQoKS5nZXRSb290KCk7fX0sc2hvd09m ZmxpbmVEaWFsb2c6ZnVuY3Rpb24oYmEpe3RoaXMuc2hvd0RpYWxvZyhiYSx0aGlz LmdldE9mZmxpbmVDb250ZW50KTt9LHNob3dCbGFja2JpcmREaWFsb2c6ZnVuY3Rp b24oYmEsY2Epe3RoaXMuc2hvd0RpYWxvZyhiYSx0aGlzLmdldEJsYWNrYmlyZENv bnRlbnQuY3VycnkoY2EpKTt9LHNob3dEaWFsb2c6ZnVuY3Rpb24oYmEsY2EpeyF1 JiZ0aGlzLl9jb25zdHJ1Y3REaWFsb2coKTtqLnNldENvbnRlbnQodixjYSgpKTt1 LnNldENvbnRleHQoYmEpO3Uuc2hvdygpO30saGlkZTpmdW5jdGlvbigpe2lmKHUm JnUuaXNTaG93bigpKXUuaGlkZSgpO30sZGlzbWlzczpmdW5jdGlvbigpe3RoaXMu aGlkZSgpO3ooKTt9LGlzVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB4JiYhdzt9 LF9jb25zdHJ1Y3REaWFsb2c6ZnVuY3Rpb24oKXt2YXIgYmE9cVsnOmZiOmNoYXQ6 YmxhY2tiaXJkOmRpYWxvZy1mcmFtZSddLmJ1aWxkKCk7dj1iYS5nZXROb2RlKCdk aWFsb2dDb250ZW50Jyk7dT1uZXcgaSgpO3UuaW5pdChiYS5nZXRSb290KCkpO3Uu c2V0UG9zaXRpb24oJ2Fib3ZlJykuc2V0V2lkdGgoMjAxKS5zZXRGaXhlZCh0cnVl KS5kaXNhYmxlQmVoYXZpb3IoaykuZGlzYWJsZUJlaGF2aW9yKGwpO0V2ZW50Lmxp c3RlbihiYS5nZXROb2RlKCdkaWFsb2dDbG9zZUJ1dHRvbicpLCdjbGljaycsdGhp cy5kaXNtaXNzLmJpbmQodGhpcykpO319KTtmdW5jdGlvbiB6KCl7aWYoIXcmJngp

e3c9dHJ1ZTttLmluZm9ybSgncHJpdmFjeS11c2VyLXByZXNlbmNlLWNoYW5nZWQn KTt2YXIgYmE9bmV3IGgodCk7YmEuc2V0RGF0YSh7YWN0aW9uOnAuQUNUSU9OX0VE VUNBVEUsaW1wcmVzc2lvbnM6by5FZHVjYXRpb25JbXByZXNzaW9ucyxmb3JjZTp0 cnVlfSk7YmEuc2V0RXJyb3JIYW5kbGVyKGZ1bmN0aW9uKCl7dz1mYWxzZTt9KTti YS5zZW5kKCk7fX1mdW5jdGlvbiBhYSgpe2lmKCF4KXt4PXRydWU7dmFyIGJhPW5l dyBoKHQpO2JhLnNldERhdGEoe2FjdGlvbjpwLkFDVElPTl9FRFVDQVRFLGltcHJl c3Npb25zOm8uRWR1Y2F0aW9uSW1wcmVzc2lvbnN9KTtiYS5zZXRFcnJvckhhbmRs ZXIoZnVuY3Rpb24oKXt4PWZhbHNlO30pO2JhLnNlbmQoKTt9fWcuc3Vic2NyaWJl KCdjaGF0L2FkdmFuY2VkLXNldHRpbmdzLWRpYWxvZy1vcGVuZWQnLHkuZGlzbWlz cy5iaW5kKHkpKTtlLmV4cG9ydHM9eTt9KTsKX19kKCJDaGF0VmlzaWJpbGl0eSIs WyJCbGFja2JpcmRVcHNlbGwiLCJKU0xvZ2dlciIsIlByZXNlbmNlUHJpdmFjeSJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdCbGFja2JpcmRVcHNlbGwn KSxoPWIoJ0pTTG9nZ2VyJyksaT1iKCdQcmVzZW5jZVByaXZhY3knKSxqPXtpc09u bGluZTpmdW5jdGlvbigpe3JldHVybiBpLmdldFZpc2liaWxpdHkoKT09PWkuT05M SU5FO30saGFzQmxhY2tiaXJkRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmlzVmlzaWJsZVRvTW9zdEZyaWVuZHMoKXx8dGhpcy5pc1Zpc2libGVUb1NvbWVG cmllbmRzKCk7fSxpc1Zpc2libGVUb01vc3RGcmllbmRzOmZ1bmN0aW9uKCl7cmV0 dXJuIGkuZ2V0T25saW5lUG9saWN5KCk9PT1pLk9OTElORV9UT19CTEFDS0xJU1Qm JmkuZ2V0QmxhY2tsaXN0KCkubGVuZ3RoPjA7fSxpc1Zpc2libGVUb1NvbWVGcmll bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0T25saW5lUG9saWN5KCk9PT1pLk9O TElORV9UT19XSElURUxJU1QmJmkuZ2V0V2hpdGVsaXN0KCkubGVuZ3RoPjA7fSxn b09ubGluZTpmdW5jdGlvbihrKXtpZihpLmdldFZpc2liaWxpdHkoKT09PWkuT0ZG TElORSl7aC5jcmVhdGUoJ2JsYWNrYmlyZCcpLmxvZygnY2hhdF9nb19vbmxpbmUn KTtpLnNldFZpc2liaWxpdHkoaS5PTkxJTkUpO2cuZGlzbWlzcygpO31rJiZrKCk7 fSxnb09mZmxpbmU6ZnVuY3Rpb24oayl7aWYoaS5nZXRWaXNpYmlsaXR5KCk9PT1p Lk9OTElORSl7Zy5kaXNtaXNzKCk7aC5jcmVhdGUoJ2JsYWNrYmlyZCcpLmxvZygn Y2hhdF9nb19vZmZsaW5lJyk7aS5zZXRWaXNpYmlsaXR5KGkuT0ZGTElORSk7fWsm JmsoKTt9LHRvZ2dsZVZpc2liaWxpdHk6ZnVuY3Rpb24oKXtpZihqLmlzT25saW5l KCkpe2ouZ29PZmZsaW5lKCk7fWVsc2Ugai5nb09ubGluZSgpO319O2EuQ2hhdFZp c2liaWxpdHk9ZS5leHBvcnRzPWo7fSwzKTsKX19kKCJTZXJ2ZXJUaW1lIixbIlBy ZXNlbmNlSW5pdGlhbERhdGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YygnUHJlc2VuY2VJbml0aWFsRGF0YScpLGg7ZnVuY3Rpb24gaShrKXtoPURhdGUu bm93KCktazt9aShnLnNlcnZlclRpbWUpO3ZhciBqPXtnZXQ6ZnVuY3Rpb24oKXty ZXR1cm4gRGF0ZS5ub3coKS1oO30sZ2V0U2tldzpmdW5jdGlvbigpe3JldHVybiBo O30sdXBkYXRlOmZ1bmN0aW9uKGspe2koayk7fX07ZS5leHBvcnRzPWo7fSk7Cl9f ZCgiQ2FsbGJhY2tNYW5hZ2VyQ29udHJvbGxlciIsWyJFcnJvclV0aWxzIiwiY29w eVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignRXJy b3JVdGlscycpLGg9YignY29weVByb3BlcnRpZXMnKSxpPWZ1bmN0aW9uKGope3Ro aXMuX3BlbmRpbmdJRHM9W107dGhpcy5fYWxsUmVxdWVzdHM9W3VuZGVmaW5lZF07 dGhpcy5fY2FsbGJhY2tBcmdIYW5kbGVyPWo7fTtoKGkucHJvdG90eXBlLHtleGVj dXRlT3JFbnF1ZXVlOmZ1bmN0aW9uKGosayxsKXtsPWx8fHt9O3ZhciBtPXRoaXMu X2F0dGVtcHRDYWxsYmFjayhrLGosbCk7aWYobSlyZXR1cm4gMDt0aGlzLl9hbGxS ZXF1ZXN0cy5wdXNoKHtmbjprLHJlcXVlc3Q6aixvcHRpb25zOmx9KTt2YXIgbj10 aGlzLl9hbGxSZXF1ZXN0cy5sZW5ndGgtMTt0aGlzLl9wZW5kaW5nSURzLnB1c2go bik7cmV0dXJuIG47fSx1bnN1YnNjcmliZTpmdW5jdGlvbihqKXtkZWxldGUgdGhp cy5fYWxsUmVxdWVzdHNbal07fSxnZXRSZXF1ZXN0OmZ1bmN0aW9uKGope3JldHVy biB0aGlzLl9hbGxSZXF1ZXN0c1tqXTt9LHJ1blBvc3NpYmxlQ2FsbGJhY2tzOmZ1 bmN0aW9uKCl7dmFyIGo9dGhpcy5fcGVuZGluZ0lEczt0aGlzLl9wZW5kaW5nSURz PVtdO3ZhciBrPVtdO2ouZm9yRWFjaChmdW5jdGlvbihsKXt2YXIgbT10aGlzLl9h bGxSZXF1ZXN0c1tsXTtpZighbSlyZXR1cm47aWYodGhpcy5fY2FsbGJhY2tBcmdI YW5kbGVyKG0ucmVxdWVzdCxtLm9wdGlvbnMpKXtrLnB1c2gobCk7fWVsc2UgdGhp cy5fcGVuZGluZ0lEcy5wdXNoKGwpO30uYmluZCh0aGlzKSk7ay5mb3JFYWNoKGZ1 bmN0aW9uKGwpe3ZhciBtPXRoaXMuX2FsbFJlcXVlc3RzW2xdO2RlbGV0ZSB0aGlz Ll9hbGxSZXF1ZXN0c1tsXTt0aGlzLl9hdHRlbXB0Q2FsbGJhY2sobS5mbixtLnJl cXVlc3QsbS5vcHRpb25zKTt9LmJpbmQodGhpcykpO30sX2F0dGVtcHRDYWxsYmFj azpmdW5jdGlvbihqLGssbCl7dmFyIG09dGhpcy5fY2FsbGJhY2tBcmdIYW5kbGVy KGssbCk7aWYobSl7dmFyIG49e2lkczprfTtnLmFwcGx5V2l0aEd1YXJkKGosbixb bV0pO31yZXR1cm4gISFtO319KTtlLmV4cG9ydHM9aTt9KTsKX19kKCJLZXllZENh bGxiYWNrTWFuYWdlciIsWyJDYWxsYmFja01hbmFnZXJDb250cm9sbGVyIiwiY29w eVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ2Fs

bGJhY2tNYW5hZ2VyQ29udHJvbGxlcicpLGg9YignY29weVByb3BlcnRpZXMnKSxp PWZ1bmN0aW9uKCl7dGhpcy5fcmVzb3VyY2VzPXt9O3RoaXMuX2NvbnRyb2xsZXI9 bmV3IGcodGhpcy5fY29uc3RydWN0Q2FsbGJhY2tBcmcuYmluZCh0aGlzKSk7fTto KGkucHJvdG90eXBlLHtleGVjdXRlT3JFbnF1ZXVlOmZ1bmN0aW9uKGosayl7aWYo IShqIGluc3RhbmNlb2YgQXJyYXkpKXt2YXIgbD1qLG09aztqPVtqXTtrPWZ1bmN0 aW9uKG4pe20obltsXSk7fTt9cmV0dXJuIHRoaXMuX2NvbnRyb2xsZXIuZXhlY3V0 ZU9yRW5xdWV1ZShqLGspO30sdW5zdWJzY3JpYmU6ZnVuY3Rpb24oail7dGhpcy5f Y29udHJvbGxlci51bnN1YnNjcmliZShqKTt9LGdldFVuYXZhaWxhYmxlUmVzb3Vy Y2VzOmZ1bmN0aW9uKGope3ZhciBrPXRoaXMuX2NvbnRyb2xsZXIuZ2V0UmVxdWVz dChqKSxsPVtdO2lmKGspbD1rLnJlcXVlc3QuZmlsdGVyKGZ1bmN0aW9uKG0pe3Jl dHVybiAhdGhpcy5fcmVzb3VyY2VzW21dO30uYmluZCh0aGlzKSk7cmV0dXJuIGw7 fSxhZGRSZXNvdXJjZXNBbmRFeGVjdXRlOmZ1bmN0aW9uKGope2godGhpcy5fcmVz b3VyY2VzLGopO3RoaXMuX2NvbnRyb2xsZXIucnVuUG9zc2libGVDYWxsYmFja3Mo KTt9LHNldFJlc291cmNlOmZ1bmN0aW9uKGosayl7dGhpcy5fcmVzb3VyY2VzW2pd PWs7dGhpcy5fY29udHJvbGxlci5ydW5Qb3NzaWJsZUNhbGxiYWNrcygpO30sZ2V0 UmVzb3VyY2U6ZnVuY3Rpb24oail7cmV0dXJuIHRoaXMuX3Jlc291cmNlc1tqXTt9 LGdldEFsbFJlc291cmNlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNvdXJj ZXM7fSxkdW1wUmVzb3VyY2VzOmZ1bmN0aW9uKCl7dmFyIGo9e307Zm9yKHZhciBr IGluIHRoaXMuX3Jlc291cmNlcyl7dmFyIGw9dGhpcy5fcmVzb3VyY2VzW2tdO2lm KHR5cGVvZiBsPT09J29iamVjdCcpbD1oKHt9LGwpO2pba109bDt9cmV0dXJuIGo7 fSxfY29uc3RydWN0Q2FsbGJhY2tBcmc6ZnVuY3Rpb24oail7dmFyIGs9e307Zm9y KHZhciBsPTA7bDxqLmxlbmd0aDtsKyspe3ZhciBtPWpbbF0sbj10aGlzLl9yZXNv dXJjZXNbbV07aWYodHlwZW9mIG49PSd1bmRlZmluZWQnKXJldHVybiBmYWxzZTtr W21dPW47fXJldHVybiBrO319KTtlLmV4cG9ydHM9aTt9KTsKX19kKCJBc3luY0xv YWRlciIsWyJBc3luY1JlcXVlc3QiLCJLZXllZENhbGxiYWNrTWFuYWdlciIsImNv cHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Fz eW5jUmVxdWVzdCcpLGg9YignS2V5ZWRDYWxsYmFja01hbmFnZXInKSxpPWIoJ2Nv cHlQcm9wZXJ0aWVzJyksaj17fTtmdW5jdGlvbiBrKG0sbil7dmFyIG89bmV3IGgo KSxwPWZhbHNlLHE9W107ZnVuY3Rpb24gcigpe2lmKCFxLmxlbmd0aHx8cClyZXR1 cm47cD10cnVlO3QuZGVmZXIoKTt9ZnVuY3Rpb24gcyh3KXtwPWZhbHNlO3cuZm9y RWFjaChvLnVuc3Vic2NyaWJlLmJpbmQobykpO3IoKTt9ZnVuY3Rpb24gdCgpe3Zh ciB3PXt9LHg9W107cT1xLmZpbHRlcihmdW5jdGlvbih6KXt2YXIgYWE9by5nZXRV bmF2YWlsYWJsZVJlc291cmNlcyh6KTtpZihhYS5sZW5ndGgpe2FhLmZvckVhY2go ZnVuY3Rpb24oYmEpe3dbYmFdPXRydWU7fSk7eC5wdXNoKHopO3JldHVybiB0cnVl O31yZXR1cm4gZmFsc2U7fSk7dmFyIHk9T2JqZWN0LmtleXModyk7aWYoeS5sZW5n dGgpe25ldyBnKG0pLnNldERhdGEoe2lkczp5fSkuc2V0SGFuZGxlcih1LmN1cnJ5 KHgpKS5zZXRFcnJvckhhbmRsZXIodi5jdXJyeSh4KSkuc2V0QWxsb3dDcm9zc1Bh Z2VUcmFuc2l0aW9uKHRydWUpLnNldE1ldGhvZCgnR0VUJykuc2V0UmVhZE9ubHko dHJ1ZSkuc2VuZCgpO31lbHNlIHA9ZmFsc2U7fWZ1bmN0aW9uIHUodyx4KXt2YXIg eT14LnBheWxvYWRbbl18fHgucGF5bG9hZDtvLmFkZFJlc291cmNlc0FuZEV4ZWN1 dGUoeSk7cyh3KTt9ZnVuY3Rpb24gdih3KXtzKHcpO31yZXR1cm4ge2dldDpmdW5j dGlvbih3LHgpe3ZhciB5PW8uZXhlY3V0ZU9yRW5xdWV1ZSh3LHgpLHo9by5nZXRV bmF2YWlsYWJsZVJlc291cmNlcyh5KTtpZih6Lmxlbmd0aCl7cS5wdXNoKHkpO3Io KTt9fSxnZXRDYWNoZWRLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlz KG8uZ2V0QWxsUmVzb3VyY2VzKCkpO30sZ2V0Tm93OmZ1bmN0aW9uKHcpe3JldHVy biBvLmdldFJlc291cmNlKHcpfHxudWxsO30sc2V0OmZ1bmN0aW9uKHcpe28uYWRk UmVzb3VyY2VzQW5kRXhlY3V0ZSh3KTt9fTt9ZnVuY3Rpb24gbChtLG4pe3RoaXMu X2VuZHBvaW50PW07dGhpcy5fdHlwZT1uO31pKGwucHJvdG90eXBlLHtfZ2V0TG9h ZGVyOmZ1bmN0aW9uKCl7aWYoIWpbdGhpcy5fZW5kcG9pbnRdKWpbdGhpcy5fZW5k cG9pbnRdPWsodGhpcy5fZW5kcG9pbnQsdGhpcy5fdHlwZSk7cmV0dXJuIGpbdGhp cy5fZW5kcG9pbnRdO30sZ2V0OmZ1bmN0aW9uKG0sbil7cmV0dXJuIHRoaXMuX2dl dExvYWRlcigpLmdldChtLG4pO30sZ2V0Q2FjaGVkS2V5czpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9nZXRMb2FkZXIoKS5nZXRDYWNoZWRLZXlzKCk7fSxnZXROb3c6 ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuX2dldExvYWRlcigpLmdldE5vdyhtKTt9 LHJlc2V0OmZ1bmN0aW9uKCl7alt0aGlzLl9lbmRwb2ludF09bnVsbDt9LHNldDpm dW5jdGlvbihtKXt0aGlzLl9nZXRMb2FkZXIoKS5zZXQobSk7fX0pO2UuZXhwb3J0 cz1sO30pOwpfX2QoIlNob3J0UHJvZmlsZXMiLFsiQXJiaXRlck1peGluIiwiQXN5 bmNMb2FkZXIiLCJBc3luY1JlcXVlc3QiLCJFbnYiLCJKU0xvZ2dlciIsImNvcHlQ cm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0 ZXJNaXhpbicpLGg9YignQXN5bmNMb2FkZXInKSxpPWIoJ0FzeW5jUmVxdWVzdCcp

LGo9YignRW52Jyksaz1iKCdKU0xvZ2dlcicpLGw9YignY29weVByb3BlcnRpZXMn KSxtPScvYWpheC9jaGF0L3VzZXJfaW5mby5waHAnLG49Jy9hamF4L2NoYXQvdXNl cl9pbmZvX2FsbC5waHAnLG89bmV3IGgobSwncHJvZmlsZXMnKSxwPWZhbHNlLHE9 ay5jcmVhdGUoJ3Nob3J0X3Byb2ZpbGVzJyk7ZnVuY3Rpb24gcigpe2lmKCFwKXtx LmxvZygnZmV0Y2hfYWxsJyk7cD10cnVlO25ldyBpKG4pLnNldERhdGEoe3ZpZXdl cjpqLnVzZXJ9KS5zZXRIYW5kbGVyKGZ1bmN0aW9uKHUpe28uc2V0KHUucGF5bG9h ZCk7dC5pbmZvcm0oJ3VwZGF0ZWQnKTt9KS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5z aXRpb24odHJ1ZSkuc2V0TWV0aG9kKCdHRVQnKS5zZXRSZWFkT25seSh0cnVlKS5z ZW5kKCk7fX1mdW5jdGlvbiBzKHUpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3Ry aW5naWZ5KHUpKTt9dmFyIHQ9e307bCh0LGcse2dldDpmdW5jdGlvbih1LHYpe3Ro aXMuZ2V0TXVsdGkoW3VdLGZ1bmN0aW9uKHcpe3Yod1t1XSx1KTt9KTt9LGdldE11 bHRpOmZ1bmN0aW9uKHUsdil7ZnVuY3Rpb24gdyh4KXt2KHMoeCkpO31vLmdldCh1 LHcpO30sZ2V0Tm93OmZ1bmN0aW9uKHUpe3JldHVybiBzKG8uZ2V0Tm93KHUpfHxu dWxsKTt9LGdldENhY2hlZFByb2ZpbGVJRHM6ZnVuY3Rpb24oKXtyZXR1cm4gby5n ZXRDYWNoZWRLZXlzKCk7fSxoYXNBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gcDt9LGZl dGNoQWxsOmZ1bmN0aW9uKCl7cigpO30sc2V0OmZ1bmN0aW9uKHUsdil7dmFyIHc9 e307d1t1XT12O3RoaXMuc2V0TXVsdGkodyk7fSxzZXRNdWx0aTpmdW5jdGlvbih1 KXtvLnNldChzKHUpKTt9fSk7ZS5leHBvcnRzPXQ7fSk7Cl9fZCgiQXZhaWxhYmxl TGlzdCIsWyJmdW5jdGlvbi1leHRlbnNpb25zIiwiQXJiaXRlciIsIkFyYml0ZXJN aXhpbiIsIkFzeW5jUmVxdWVzdCIsIkF2YWlsYWJsZUxpc3RDb25zdGFudHMiLCJD aGFubmVsQ29uc3RhbnRzIiwiQ2hhdCIsIkNoYXRDb25maWciLCJDaGF0VmlzaWJp bGl0eSIsIkNsYXNzIiwiRW52IiwiSlNMb2dnZXIiLCJQb2xsZXIiLCJQcmVzZW5j ZVByaXZhY3kiLCJQcmVzZW5jZVV0aWwiLCJTZXJ2ZXJUaW1lIiwiU2hvcnRQcm9m aWxlcyIsIlVzZXJBY3Rpdml0eSIsImNvcHlQcm9wZXJ0aWVzIiwiY3JlYXRlT2Jq ZWN0RnJvbSIsImRlYm91bmNlQWNyb3NzVHJhbnNpdGlvbnMiLCJDaGFubmVsSW1w bGVtZW50YXRpb24iLCJBdmFpbGFibGVMaXN0SW5pdGlhbERhdGEiXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7YignZnVuY3Rpb24tZXh0ZW5zaW9ucycpO3ZhciBnPWIo J0FyYml0ZXInKSxoPWIoJ0FyYml0ZXJNaXhpbicpLGk9YignQXN5bmNSZXF1ZXN0 Jyksaj1iKCdBdmFpbGFibGVMaXN0Q29uc3RhbnRzJyksaz1iKCdDaGFubmVsQ29u c3RhbnRzJyksbD1iKCdDaGF0JyksbT1iKCdDaGF0Q29uZmlnJyksbj1iKCdDaGF0 VmlzaWJpbGl0eScpLG89YignQ2xhc3MnKSxwPWIoJ0VudicpLHE9YignSlNMb2dn ZXInKSxyPWIoJ1BvbGxlcicpLHM9YignUHJlc2VuY2VQcml2YWN5JyksdD1iKCdQ cmVzZW5jZVV0aWwnKSx1PWIoJ1NlcnZlclRpbWUnKSx2PWIoJ1Nob3J0UHJvZmls ZXMnKSx3PWIoJ1VzZXJBY3Rpdml0eScpLHg9YignY29weVByb3BlcnRpZXMnKSx5 PWIoJ2NyZWF0ZU9iamVjdEZyb20nKSx6PWIoJ2RlYm91bmNlQWNyb3NzVHJhbnNp dGlvbnMnKSxhYT1jKCdDaGFubmVsSW1wbGVtZW50YXRpb24nKS5pbnN0YW5jZSxi YT1jKCdBdmFpbGFibGVMaXN0SW5pdGlhbERhdGEnKSxjYT01LGRhPTYwMDAwLGVh PScvYWpheC9jaGF0L2J1ZGR5X2xpc3QucGhwJyxmYT01MDAwLGdhPTE4MDAwMDAs aGE9LjAwNSxpYT0wLGphPTAsa2E9ZmFsc2UsbGE9YmEucG9sbEludGVydmFsLG1h PWJhLmxhenlQb2xsSW50ZXJ2YWwsbmE9YmEubGF6eVRocmVzaG9sZCxvYT0wLHBh PURhdGUubm93KCkscWE9MCxyYT1mYWxzZSxzYT17fSx0YT1mYWxzZSx1YT17fSx2 YT1udWxsLHdhPXt9LHhhPXt9LHlhPXEuY3JlYXRlKCdhdmFpbGFibGVfbGlzdCcp LHphPXgoe30saixoKTt6YS5zdWJzY3JpYmUoW2ouT05fQVZBSUxBQklMSVRZX0NI QU5HRUQsai5PTl9VUERBVEVfRVJST1Isai5PTl9VUERBVEVEXSxmdW5jdGlvbihz Yix0Yil7Zy5pbmZvcm0oc2IsdGIpO30pO2Z1bmN0aW9uIGFiKHNiKXt2YXIgdGI9 c2J8fHcuaXNBY3RpdmUobmEpO3JldHVybiBuLmlzT25saW5lKCk/KHRiP2xhOm1h KTpudWxsO31mdW5jdGlvbiBiYigpe3phLmluZm9ybShqLk9OX0FWQUlMQUJJTElU WV9DSEFOR0VEKTt9dmFyIGNiPXooYmIsMCk7ZnVuY3Rpb24gZGIoc2IsdGIsdWIs dmIpe2lmKHNiPT1wLnVzZXIpcmV0dXJuO3N3aXRjaCh0Yil7Y2FzZSBqLk9GRkxJ TkU6Y2FzZSBqLklETEU6Y2FzZSBqLkFDVElWRTpjYXNlIGouTU9CSUxFOmJyZWFr O2RlZmF1bHQ6cmV0dXJuO312YXIgd2I9emEuZ2V0KHNiKSE9dGI7aWYodWIpe3dh W3NiXT11LmdldCgpO3hhW3NiXT12Yjt9c2Fbc2JdPXRiO2lmKHdiKXtpYSsrO2Ni KCk7fX1mdW5jdGlvbiBlYihzYil7cWE9RGF0ZS5ub3coKTt1YT15KHNiKTtpYSsr O2NiKCk7fWZ1bmN0aW9uIGZiKCl7aWYocmEpemEuaW5mb3JtKGouT05fVVBEQVRF RCx6YSk7fWZ1bmN0aW9uIGdiKHNiKXtpZih0LmNoZWNrTWFpbnRlbmFuY2VFcnJv cihzYikpcmV0dXJuO2phKys7a2E9ZmFsc2U7aWYoamE+PWNhKXphLmluZm9ybShq Lk9OX1VQREFURV9FUlJPUik7fWZ1bmN0aW9uIGhiKHNiKXt2YXIgdGI9c2IuZ2V0 UGF5bG9hZCgpLHViPXRiLmJ1ZGR5X2xpc3Q7aWYoIXViKXtnYihzYik7cmV0dXJu O311LnVwZGF0ZSh0Yi50aW1lKTtvYT11LmdldCgpO2phPTA7a2E9ZmFsc2U7aWYo dWIubW9iaWxlX2ZyaWVuZHMhPW51bGwpZWIodWIubW9iaWxlX2ZyaWVuZHMpO3Zh

ciB2Yj11Yi51c2VySW5mb3M7aWYodmIpdi5zZXRNdWx0aSh2Yik7bmIoKTt0YT11 Yi51c2VySXNJZGxlO3ZhciB3Yj11Yi5ub3dBdmFpbGFibGVMaXN0O3diJiZsYih3 Yik7aWYodWIuY2hhdE5vdGlmIT09dW5kZWZpbmVkKXt2YT11Yi5jaGF0Tm90aWY7 emEuaW5mb3JtKGouT05fQ0hBVF9OT1RJRklDQVRJT05fQ0hBTkdFRCx2YSk7fW1i KCk7ZmIoKTtjYigpO31mdW5jdGlvbiBpYihzYil7aWYoYWEuaXNTaHV0ZG93bigp fHwhbi5pc09ubGluZSgpKXt6YS5fcG9sbGVyLnN0b3AoKTtyZXR1cm47fXBhPURh dGUubm93KCk7dmFyIHRiPWZhbHNlO2lmKERhdGUubm93KCktcWE+Z2EpdGI9dHJ1 ZTtrYT10cnVlO3ZhciB1Yj12LmdldENhY2hlZFByb2ZpbGVJRHMoKTtzYi5zZXRI YW5kbGVyKGhiKS5zZXRFcnJvckhhbmRsZXIoZ2IpLnNldE9wdGlvbignc3VwcHJl c3NFcnJvckFsZXJ0cycsdHJ1ZSkuc2V0T3B0aW9uKCdyZXRyaWVzJywxKS5zZXRE YXRhKHt1c2VyOnAudXNlcixhdmFpbGFibGVfdXNlcl9pbmZvX2lkczp1YixmZXRj aF9tb2JpbGU6dGJ9KS5zZXRVUkkoZWEpLnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNp dGlvbih0cnVlKTt9ZnVuY3Rpb24gamIoc2Ipe3ZhciB0Yj1zYi5wYXlsb2FkLmF2 YWlsYWJpbGl0eXx8e307Zm9yKHZhciB1YiBpbiB0YilkYih1Yix0Ylt1Yl0sdHJ1 ZSwnbWVyY3VyeV90YWJzJyk7fWZ1bmN0aW9uIGtiKHNiKXt2YXIgdGI9emEuZ2V0 RGVidWdJbmZvKHNiKSx1Yj0odGIucHJlc2VuY2U9PWouQUNUSVZFKSx2Yj1uZXcg aSgnL2FqYXgvbWVyY3VyeS90YWJzX3ByZXNlbmNlLnBocCcpLnNldERhdGEoe3Rh cmdldF9pZDpzYix0b19vbmxpbmU6dWIscHJlc2VuY2Vfc291cmNlOnRiLm92ZXJs YXlTb3VyY2UscHJlc2VuY2VfdGltZTp0Yi5vdmVybGF5VGltZX0pLnNldEhhbmRs ZXIoamIpLnNldEVycm9ySGFuZGxlcihiYWdvZmhvbGRpbmcpLnNldEFsbG93Q3Jv c3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZW5kKCk7fWZ1bmN0aW9uIGxiKHNiKXtm b3IodmFyIHRiIGluIHNiKWRiKHRiLHNiW3RiXS5hLGZhbHNlLG51bGwpO3JhPXRy dWU7fWZ1bmN0aW9uIG1iKHNiKXt2YXIgdGI9YWIoc2IpO3lhLmRlYnVnKCd1cGRh dGVfcG9sbGVyJyx0Yik7emEuX3BvbGxlciYmemEuX3BvbGxlci5zZXRUaW1lUGVy aW9kKHRiKTt9ZnVuY3Rpb24gbmIoKXtyYT1mYWxzZTtzYT17fTt4YT17fTt3YT17 fTtpYSsrO31mdW5jdGlvbiBvYigpe25iKCk7cGE9MDtxYT0wO3RhPWZhbHNlO3Zh PW51bGw7dWE9e307YmIoKTt9ZnVuY3Rpb24gcGIoKXttYigpO2lmKG4uaXNPbmxp bmUoKSl7emEudXBkYXRlKCk7fWVsc2Ugb2IoKTt9ZnVuY3Rpb24gcWIoKXttYigp O2lmKGFhLmRpc2Nvbm5lY3RlZCgpKXtvYigpO31lbHNlIGlmKCFyYSl6YS51cGRh dGUoKTt9ZnVuY3Rpb24gcmIoc2IsdGIpe3RiLmNoYXRfY29uZmlnPW0uZ2V0RGVi dWdJbmZvKCk7dGIuYXZhaWxhYmxlX2xpc3RfZGVidWdfaW5mbz17fTt6YS5nZXRB dmFpbGFibGVJRHMoKS5mb3JFYWNoKGZ1bmN0aW9uKHViKXt0Yi5hdmFpbGFibGVf bGlzdF9kZWJ1Z19pbmZvW3ViXT16YS5nZXREZWJ1Z0luZm8odWIpO30pO3RiLmF2 YWlsYWJsZV9saXN0X3BvbGxfaW50ZXJ2YWw9emEuX3BvbGxlciYmemEuX3BvbGxl ci5nZXRUaW1lUGVyaW9kKCk7fXgoemEse2dldDpmdW5jdGlvbihzYil7aWYoc2I9 PXAudXNlcilyZXR1cm4gbi5pc09ubGluZSgpP2ouQUNUSVZFOmouT0ZGTElORTt2 YXIgdGI9ai5PRkZMSU5FO2lmKHNiIGluIHNhKXRiPXNhW3NiXTtpZighcy5hbGxv d3Moc2IpKXRiPWouT0ZGTElORTtpZih0Yj09ai5PRkZMSU5FKWlmKHVhW3NiXSl0 Yj1qLk1PQklMRTtyZXR1cm4gdGI7fSx1cGRhdGVGb3JJRDpmdW5jdGlvbihzYil7 a2Ioc2IpO30sZ2V0V2ViQ2hhdE5vdGlmaWNhdGlvbjpmdW5jdGlvbigpe3JldHVy biB2YTt9LGlzVXNlcklkbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGE7fSxpc1JlYWR5 OmZ1bmN0aW9uKCl7cmV0dXJuIHJhO30sc2V0OmZ1bmN0aW9uKHNiLHRiLHViKXtk YihzYix0Yix0cnVlLG51bGwsdWIpO30sdXBkYXRlOmZ1bmN0aW9uKCl7aWYoRGF0 ZS5ub3coKS1wYTxmYSl7IWthJiZmYi5kZWZlcigpO3JldHVybjt9emEuX3BvbGxl ciYmemEuX3BvbGxlci5yZXF1ZXN0Tm93KCk7fSxnZXRSZXY6ZnVuY3Rpb24oKXty ZXR1cm4gaWE7fSxpc0lkbGU6ZnVuY3Rpb24oc2Ipe3JldHVybiB6YS5nZXQoc2Ip PT1qLklETEU7fSxnZXRPbmxpbmVJRHM6ZnVuY3Rpb24oKXt2YXIgc2IsdGI9W107 Zm9yKHNiIGluIHNhKWlmKHphLmdldChzYik9PT1qLkFDVElWRSl0Yi5wdXNoKHNi KTtyZXR1cm4gdGI7fSxnZXRBdmFpbGFibGVJRHM6ZnVuY3Rpb24oKXt2YXIgc2I9 emEuZ2V0T25saW5lSURzKCksdGI7Zm9yKHRiIGluIHVhKXtpZihzYVt0Yl0pY29u dGludWU7c2IucHVzaCh0Yik7fXJldHVybiBzYjt9LGdldE9ubGluZUNvdW50OmZ1 bmN0aW9uKCl7cmV0dXJuIHphLmdldE9ubGluZUlEcygpLmxlbmd0aDt9LGdldERl YnVnSW5mbzpmdW5jdGlvbihzYil7dmFyIHRiO2lmKHdpbmRvdy5TaG9ydFByb2Zp bGVzKXt2YXIgdWI9di5nZXROb3coc2IpO2lmKHViKXRiPXViLm5hbWU7fXJldHVy biB7aWQ6c2IscHJlc2VuY2U6c2Fbc2JdLG92ZXJsYXlTb3VyY2U6eGFbc2JdLG92 ZXJsYXlUaW1lOndhW3NiXSxvdmVybGF5U291cmNlOnhhW3NiXSxtb2JpbGU6dWFb c2JdLG5hbWU6dGJ9O319KTtvYT1iYS51cGRhdGVUaW1lO2xiKGJhLmF2YWlsYWJs ZUxpc3QpO2lmKGJhLm1vYmlsZUZyaWVuZHMpZWIoYmEubW9iaWxlRnJpZW5kcyk7 dmE9YmEuY2hhdE5vdGlmO3phLl9wb2xsZXI9bmV3IHIoYWIoKSxpYix0cnVlKTtt Yih0cnVlKTtnLnN1YnNjcmliZShxLkRVTVBfRVZFTlQscmIpO3cuc3Vic2NyaWJl

KGZ1bmN0aW9uKHNiLHRiKXtpZih0Yi5pZGxlbmVzcz5sYSl7eWEuZGVidWcoJ3Vw ZGF0ZV9hY3Rpdml0eScpO3phLnVwZGF0ZSgpO319KTtzLnN1YnNjcmliZSgncHJp dmFjeS1jaGFuZ2VkJyxiYik7cy5zdWJzY3JpYmUoJ3ByaXZhY3ktYXZhaWxhYmls aXR5LWNoYW5nZWQnLGZ1bmN0aW9uKHNiLHRiKXtmb3IodmFyIHViIGluIHRiLnVz ZXJfYXZhaWxhYmlsaXRpZXMpdGhpcy5zZXQodWIsdGIudXNlcl9hdmFpbGFiaWxp dGllc1t1Yl0pO30uYmluZCh6YSkpO3Muc3Vic2NyaWJlKCdwcml2YWN5LXVzZXIt cHJlc2VuY2UtcmVzcG9uc2UnLHphLnVwZGF0ZSk7YWEuc3Vic2NyaWJlKFthYS5D T05ORUNURUQsYWEuUkVDT05ORUNUSU5HLGFhLlNIVVRET1dOLGFhLk1VVEVfV0FS TklORyxhYS5VTk1VVEVfV0FSTklOR10scWIpO2cuc3Vic2NyaWJlKGsuZ2V0QXJi aXRlclR5cGUoJ2J1ZGR5bGlzdF9vdmVybGF5JyksZnVuY3Rpb24oc2IsdGIpe3Zh ciB1Yj10Yi5vYmoub3ZlcmxheTtmb3IodmFyIHZiIGluIHViKXphLnNldCh2Yix1 Ylt2Yl0uYSx1Ylt2Yl0uc3x8J2NoYW5uZWwnKTt9KTthLkF2YWlsYWJsZUxpc3Q9 ZS5leHBvcnRzPXphO30pOwpfX2QoIkNoYXRIb3ZlcmNhcmQiLFsiQXJiaXRlciIs IkFzeW5jTG9hZGVyIiwiSG92ZXJjYXJkIiwiSlNMb2dnZXIiLCJkZWJvdW5jZSJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdB c3luY0xvYWRlcicpLGk9YignSG92ZXJjYXJkJyksaj1iKCdKU0xvZ2dlcicpLGs9 YignZGVib3VuY2UnKSxsPTUsbT1uZXcgaCgnL2FqYXgvY2hhdC9ob3ZlcmNhcmQv c2lkZWJhci5waHAnLCdob3ZlcicpLG49ai5jcmVhdGUoJ2NoYXRfaG92ZXJjYXJk Jyk7Zy5zdWJzY3JpYmUoJ0hvdmVyY2FyZC9kaXJ0eScsbS5yZXNldC5iaW5kKG0p KTtmdW5jdGlvbiBvKHMsdCl7bS5nZXQocyxmdW5jdGlvbih1KXsoZnVuY3Rpb24o KXtpZighdSl7bi5lcnJvcignZmV0Y2hfZmFpbHVyZScse2lkOnN9KTtyZXR1cm47 fXZhciB2PWkuZ2V0RGlhbG9nKHUpO2lmKCF2KXtuLmVycm9yKCdub19ob3ZlcmNh cmQnLHtpZDpzLGVuZHBvaW50OnV9KTtyZXR1cm47fWlmKHM9PXQuZ2V0QWN0aXZl SUQoKSl0LnNob3dIb3ZlcmNhcmQocyx2KTt9KS5kZWZlcigpO30pO31mdW5jdGlv biBwKHMsdCl7dmFyIHU9W107ZnVuY3Rpb24gdih5KXtpZih5Pj0wJiZ5PHMubGVu Z3RoKXUucHVzaChzW3ldKTt9dmFyIHc9cy5pbmRleE9mKHQpO2lmKHc+LTEpe3Yo dyk7Zm9yKHZhciB4PTE7eDxsO3grKyl7dih3K3gpO3Yody14KTt9fXJldHVybiB1 O31mdW5jdGlvbiBxKHMsdCl7dmFyIHU9dC5nZXRBY3RpdmVJRCgpO2lmKHUpe3Zh ciB2PXMuZ2V0U2hvd2luZ1VzZXJzKCksdz1wKHYsdSk7bS5nZXQodyxmdW5jdGlv bigpe30pO319ZnVuY3Rpb24gcihzKXt2YXIgdD1zLmdldEhvdmVyQ29udHJvbGxl cigpO3QucmVnaXN0ZXJEZWZhdWx0KG8pO3Quc3Vic2NyaWJlKCdob3Zlcicsayhx LmN1cnJ5KHMsdCksMTAwKSk7fWUuZXhwb3J0cz1yO30pOwpfX2QoIkNoYXRPcHRp b25zIixbIkFyYml0ZXIiLCJDaGFubmVsQ29uc3RhbnRzIiwiSlNMb2dnZXIiLCJQ cmVzZW5jZVV0aWwiLCJjb3B5UHJvcGVydGllcyIsIkNoYXRPcHRpb25zSW5pdGlh bERhdGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicp LGg9YignQ2hhbm5lbENvbnN0YW50cycpLGk9YignSlNMb2dnZXInKSxqPWIoJ1By ZXNlbmNlVXRpbCcpLGs9YignY29weVByb3BlcnRpZXMnKSxsPWkuY3JlYXRlKCdj aGF0X29wdGlvbnMnKSxtPXt9OyhmdW5jdGlvbigpe3ZhciBvPWMoJ0NoYXRPcHRp b25zSW5pdGlhbERhdGEnKTtmb3IodmFyIHAgaW4gbyl7dmFyIHE9b1twXTttW3Bd PSEhcTt9fSkoKTt2YXIgbj1rKG5ldyBnKCkse2dldFNldHRpbmc6ZnVuY3Rpb24o byl7cmV0dXJuIG1bb107fSxzZXRTZXR0aW5nOmZ1bmN0aW9uKG8scCxxKXtpZih0 aGlzLmdldFNldHRpbmcobyk9PXApcmV0dXJuO2lmKHEpe3E9J2Zyb21fJytxO2wu bG9nKHEse25hbWU6byxuZXdfdmFsdWU6cCxvbGRfdmFsdWU6dGhpcy5nZXRTZXR0 aW5nKG8pfSk7fW1bb109ISFwO2cuaW5mb3JtKCdjaGF0L29wdGlvbi1jaGFuZ2Vk Jyx7bmFtZTpvLHZhbHVlOnB9KTt9fSk7Zy5zdWJzY3JpYmUoaC5nZXRBcmJpdGVy VHlwZSgnc2V0dGluZycpLGZ1bmN0aW9uKG8scCl7dmFyIHE9cC5vYmo7aWYocS53 aW5kb3dfaWQ9PT1qLmdldFNlc3Npb25JRCgpKXJldHVybjtuLnNldFNldHRpbmco cS5zZXR0aW5nLCEhcS52YWx1ZSwnY2hhbm5lbCcpO30pO2cuc3Vic2NyaWJlKGku RFVNUF9FVkVOVCxmdW5jdGlvbihvLHApe3AuY2hhdF9vcHRpb25zPW07fSk7ZS5l eHBvcnRzPW47fSk7Cl9fZCgiQ2hhdE9yZGVyZWRMaXN0SG92ZXIiLFsiZXZlbnQt ZXh0ZW5zaW9ucyIsImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJBcmJpdGVyTWl4aW4i LCJDbGFzcyIsIkNTUyIsIkRPTSIsIkVycm9yVXRpbHMiLCJMYXllckZhZGVPbkhp ZGUiLCJQYXJlbnQiLCJjb3B5UHJvcGVydGllcyIsInNldFRpbWVvdXRBY3Jvc3NU cmFuc2l0aW9ucyIsInR4Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50 LWV4dGVuc2lvbnMnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25zJyk7dmFyIGc9Yign QXJiaXRlck1peGluJyksaD1iKCdDbGFzcycpLGk9YignQ1NTJyksaj1iKCdET00n KSxrPWIoJ0Vycm9yVXRpbHMnKSxsPWIoJ0xheWVyRmFkZU9uSGlkZScpLG09Yign UGFyZW50Jyksbj1iKCdjb3B5UHJvcGVydGllcycpLG89Yignc2V0VGltZW91dEFj cm9zc1RyYW5zaXRpb25zJykscD1iKCd0eCcpO2Z1bmN0aW9uIHEodCl7aS5hZGRD bGFzcyh0LCdmZXRjaGluZycpO31mdW5jdGlvbiByKHQpe2kucmVtb3ZlQ2xhc3Mo

dCwnZmV0Y2hpbmcnKTt9ZnVuY3Rpb24gcyh0KXt0aGlzLl9vcmRlcmVkTGlzdD10 O3RoaXMuX3Jvb3Q9dC5nZXRSb290KCk7RXZlbnQubGlzdGVuKHRoaXMuX3Jvb3Qs J21vdXNlb3ZlcicsdGhpcy5fbW91c2VPdmVyLmJpbmQodGhpcykpO0V2ZW50Lmxp c3Rlbih0aGlzLl9yb290LCdtb3VzZWxlYXZlJyx0aGlzLl9tb3VzZUxlYXZlLmJp bmQodGhpcykpO3Quc3Vic2NyaWJlKCdjbGljaycsdGhpcy5faGlkZS5zaGllbGQo dGhpcykpO31uKHMucHJvdG90eXBlLGcse19yb290Om51bGwsX2FjdGl2ZUl0ZW06 bnVsbCxfaGlkZVRpbWVvdXQ6bnVsbCxfc2hvd1RpbWVvdXQ6bnVsbCxfc2hvd2lu Z0RpYWxvZzpudWxsLF9zaG93aW5nSUQ6bnVsbCxfYWxyZWFkeVNob3dpbmc6ZmFs c2UsX2hhbmRsZXJzOnt9LF9kZWZhdWx0SGFuZGxlcjpudWxsLF9tb3VzZU92ZXI6 ZnVuY3Rpb24odCl7dmFyIHU9dC5nZXRUYXJnZXQoKSx2PW0uYnlDbGFzcyh1LCdp dGVtJyk7diYmdGhpcy5fc2V0QWN0aXZlSXRlbSh2KTt9LF9tb3VzZUxlYXZlOmZ1 bmN0aW9uKHQpe3RoaXMuX3NldEFjdGl2ZUl0ZW0obnVsbCk7fSxfY2xlYXJUaW1l b3V0czpmdW5jdGlvbigpe3RoaXMuX3Nob3dUaW1lb3V0JiZjbGVhclRpbWVvdXQo dGhpcy5fc2hvd1RpbWVvdXQpO3RoaXMuX3Nob3dUaW1lb3V0PW51bGw7dGhpcy5f aGlkZVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7dGhp cy5faGlkZVRpbWVvdXQ9bnVsbDt9LF9jaGVja0FscmVhZHlTaG93aW5nOmZ1bmN0 aW9uKCl7dmFyIHQ9dGhpcy5nZXRBY3RpdmVJRCgpO2lmKCF0JiYhdGhpcy5fc2hv d2luZ0lEKXRoaXMuX2FscmVhZHlTaG93aW5nPWZhbHNlO30sX2hpZGU6ZnVuY3Rp b24oKXtpZih0aGlzLl9zaG93aW5nRGlhbG9nKXt0aGlzLl9zaG93aW5nRGlhbG9n LmVuYWJsZUJlaGF2aW9yKGwpO3RoaXMuX3Nob3dpbmdEaWFsb2cuaGlkZSgpO3Ro aXMuX3Nob3dpbmdEaWFsb2c9bnVsbDt0aGlzLl9zaG93aW5nSUQ9bnVsbDt9dGhp cy5fY2hlY2tBbHJlYWR5U2hvd2luZygpO30sX3Nob3c6ZnVuY3Rpb24oKXt0aGlz Ll9hbHJlYWR5U2hvd2luZz10cnVlO3ZhciB0PXRoaXMuZ2V0QWN0aXZlSUQoKSx1 PWZhbHNlO2lmKHRoaXMuX2hhbmRsZXJzW3RdKXt1PXRydWU7ay5hcHBseVdpdGhH dWFyZCh0aGlzLl9oYW5kbGVyc1t0XSx7fSxbdCx0aGlzXSk7fWVsc2UgaWYodGhp cy5fZGVmYXVsdEhhbmRsZXIpe3U9dHJ1ZTtrLmFwcGx5V2l0aEd1YXJkKHRoaXMu X2RlZmF1bHRIYW5kbGVyLHt9LFt0LHRoaXNdKTt9aWYodSYmdGhpcy5fc2hvd2lu Z0lEIT10aGlzLmdldEFjdGl2ZUlEKCkpcSh0aGlzLl9hY3RpdmVJdGVtKTt9LF9z ZXRBY3RpdmVJdGVtOmZ1bmN0aW9uKHQpe2lmKHQhPXRoaXMuX2FjdGl2ZUl0ZW0p e3RoaXMuX2NsZWFyVGltZW91dHMoKTt0aGlzLl9hY3RpdmVJdGVtJiZyKHRoaXMu X2FjdGl2ZUl0ZW0pO3RoaXMuX2FjdGl2ZUl0ZW09bnVsbDt2YXIgdT10PzA6MTAw O3RoaXMuX2hpZGVUaW1lb3V0PW8oZnVuY3Rpb24oKXtpZih0aGlzLmdldEFjdGl2 ZUlEKCkhPXRoaXMuX3Nob3dpbmdJRCl0aGlzLl9oaWRlKCk7fS5iaW5kKHRoaXMp LHUpO2lmKHQpe3ZhciB2PXRoaXMuX29yZGVyZWRMaXN0LmdldFVzZXJGb3JOb2Rl KHQpO3RoaXMuX2FjdGl2ZUl0ZW09dDt2YXIgdz11Kyh0aGlzLl9hbHJlYWR5U2hv d2luZz83NTo1MDApO3RoaXMuX3Nob3dUaW1lb3V0PW8oZnVuY3Rpb24oKXt0aGlz Ll9zaG93KCk7fS5iaW5kKHRoaXMpLHcpO3RoaXMuaW5mb3JtKCdob3Zlcicsdik7 fWVsc2UgdGhpcy5pbmZvcm0oJ2xlYXZlJyk7dGhpcy5fY2hlY2tBbHJlYWR5U2hv d2luZygpO319LHJlZ2lzdGVyOmZ1bmN0aW9uKHQsdSl7aWYoIXRoaXMuX2hhbmRs ZXJzW3RdKXt0aGlzLl9oYW5kbGVyc1t0XT11O3JldHVybiB7dW5yZWdpc3Rlcjpm dW5jdGlvbigpe2lmKHQ9PXRoaXMuX3Nob3dpbmdJRCl0aGlzLl9oaWRlKCk7ZGVs ZXRlIHRoaXMuX2hhbmRsZXJzW3RdO3ZhciB2PXRoaXMuX29yZGVyZWRMaXN0Lmdl dEFsbE5vZGVzKCksdz12W3RdO3cmJnIodyk7fS5iaW5kKHRoaXMpfTt9fSxyZWdp c3RlckRlZmF1bHQ6ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdEhhbmRsZXI9dDt9 LGdldEFjdGl2ZUlEOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYWN0aXZlSXRlbSYm dGhpcy5fb3JkZXJlZExpc3QuZ2V0VXNlckZvck5vZGUodGhpcy5fYWN0aXZlSXRl bSk7cmV0dXJuIHR8fG51bGw7fSxzaG93SG92ZXJjYXJkOmZ1bmN0aW9uKHQsdSl7 aWYodD09dGhpcy5nZXRBY3RpdmVJRCgpJiZ0IT10aGlzLl9zaG93aW5nSUQpe3Ro aXMuX2NsZWFyVGltZW91dHMoKTtyKHRoaXMuX2FjdGl2ZUl0ZW0pO3RoaXMuX2hp ZGUoKTt0aGlzLl9zaG93aW5nRGlhbG9nPXU7dGhpcy5fc2hvd2luZ0lEPXQ7dmFy IHY9dS5zdWJzY3JpYmUoJ21vdXNlZW50ZXInLHRoaXMuX3NldEFjdGl2ZUl0ZW0u YmluZCh0aGlzLHRoaXMuX2FjdGl2ZUl0ZW0pKSx3PXUuc3Vic2NyaWJlKCdtb3Vz ZWxlYXZlJyxmdW5jdGlvbigpe3YudW5zdWJzY3JpYmUoKTt0aGlzLl9zZXRBY3Rp dmVJdGVtKG51bGwpO30uYmluZCh0aGlzKSkseD11LnN1YnNjcmliZSgnaGlkZScs ZnVuY3Rpb24oKXt2LnVuc3Vic2NyaWJlKCk7dy51bnN1YnNjcmliZSgpO3gudW5z dWJzY3JpYmUoKTt9KTt1LnNldENvbnRleHQodGhpcy5fYWN0aXZlSXRlbSk7dS5z ZXRGaXhlZCh0cnVlKTt1LnNldFBvc2l0aW9uKCdsZWZ0Jyk7dS5zaG93KCk7dS51 cGRhdGVQb3NpdGlvbigpO319fSk7ZS5leHBvcnRzPXM7fSk7Cl9fZCgiQ2hhdFF1 aWV0TGlua3MiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkRPTSIsIkRPTVF1ZXJ5Iiwi VXNlckFnZW50IiwiRGF0YVN0b3JlIiwiUGFyZW50Il0sZnVuY3Rpb24oYSxiLGMs

ZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdET00nKSxoPWIo J0RPTVF1ZXJ5JyksaT1iKCdVc2VyQWdlbnQnKSxqPWIoJ0RhdGFTdG9yZScpLGs9 YignUGFyZW50JyksbD17fSxtPXtzaWxlbmNlTGlua3M6ZnVuY3Rpb24ocSl7bihx LHRoaXMucmVtb3ZlRW1wdHlIcmVmcy5iaW5kKHRoaXMpKTt9LG51a2VMaW5rczpm dW5jdGlvbihxKXtuKHEsdGhpcy5yZW1vdmVBbGxIcmVmcy5iaW5kKHRoaXMpKTt9 LHJlbW92ZUVtcHR5SHJlZnM6ZnVuY3Rpb24ocSl7byhxLGZ1bmN0aW9uKHIpe3Jl dHVybiAhcnx8cj09PScjJzt9KTt9LHJlbW92ZUFsbEhyZWZzOmZ1bmN0aW9uKHEp e28ocSk7fX07ZnVuY3Rpb24gbihxLHIpe3ZhciBzPSEhaS5jaHJvbWUoKSx0PSEh aS5jaHJvbWUoKXx8aS5pZSgpPj05fHxpLmZpcmVmb3goKT49NDtpZihsW2cuZ2V0 SUQocSldKXJldHVybjtsW2cuZ2V0SUQocSldPXRydWU7aWYoIXQpcmV0dXJuO2lm KCFzKXtyJiZyKHEpO3JldHVybjt9RXZlbnQubGlzdGVuKHEsJ21vdXNlb3Zlcics ZnVuY3Rpb24gdSh2KXt2YXIgdz1rLmJ5VGFnKHYuZ2V0VGFyZ2V0KCksJ2EnKTtp Zih3KXt2YXIgeD13LmdldEF0dHJpYnV0ZSgnaHJlZicpO2lmKHAoeCkpe2ouc2V0 KHcsJ3N0YXNoZWRIcmVmJyx3LmdldEF0dHJpYnV0ZSgnaHJlZicpKTt3LnJlbW92 ZUF0dHJpYnV0ZSgnaHJlZicpO319fSk7RXZlbnQubGlzdGVuKHEsJ21vdXNlb3V0 JyxmdW5jdGlvbiB1KHYpe3ZhciB3PWsuYnlUYWcodi5nZXRUYXJnZXQoKSwnYScp LHg9dyYmai5yZW1vdmUodywnc3Rhc2hlZEhyZWYnKTtpZihwKHgpKXcuc2V0QXR0 cmlidXRlKCdocmVmJyx4KTt9KTtFdmVudC5saXN0ZW4ocSwnbW91c2Vkb3duJyxm dW5jdGlvbih1KXtpZighdS5pc0RlZmF1bHRSZXF1ZXN0ZWQoKSlyZXR1cm4gdHJ1 ZTt2YXIgdj1rLmJ5VGFnKHUuZ2V0VGFyZ2V0KCksJ2EnKSx3PXYmJmouZ2V0KHYs J3N0YXNoZWRIcmVmJyk7aWYocCh3KSl2LnNldEF0dHJpYnV0ZSgnaHJlZicsdyk7 fSk7fWZ1bmN0aW9uIG8ocSxyKXt2YXIgcz1nLnNjcnkocSwnYScpO2lmKHIpcz1z LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gcih0LmdldEF0dHJpYnV0ZSgnaHJl ZicpKTt9KTtzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZW1vdmVBdHRyaWJ1dGUo J2hyZWYnKTt0LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLDApO30pO31mdW5jdGlv biBwKHEpe3JldHVybiBxJiZxIT09JyMnO31lLmV4cG9ydHM9bTt9KTsKX19kKCJP cmRlcmVkRnJpZW5kc0xpc3QiLFsiYXJyYXktZXh0ZW5zaW9ucyIsIkFyYml0ZXIi LCJjcmVhdGVBcnJheUZyb20iLCJTaG9ydFByb2ZpbGVzIiwiY29weVByb3BlcnRp ZXMiLCJPcmRlcmVkRnJpZW5kc0xpc3RJbml0aWFsRGF0YSJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRl cicpLGg9YignY3JlYXRlQXJyYXlGcm9tJyksaT1iKCdTaG9ydFByb2ZpbGVzJyks aj1iKCdjb3B5UHJvcGVydGllcycpLGs9W10sbD17fSxtPWoobmV3IGcoKSx7Y29u dGFpbnM6ZnVuY3Rpb24obil7cmV0dXJuIG4gaW4gbDt9LGNvbXBhcmU6ZnVuY3Rp b24obixvKXt2YXIgcD1tLmdldFJhbmsobikscT1tLmdldFJhbmsobyk7aWYocCE9 PXEpcmV0dXJuIHAtcTt2YXIgcj1pLmdldE5vdyhuKSxzPWkuZ2V0Tm93KG8pLHQ9 KChyfHx7fSkubmFtZXx8J34nKS50b0xvd2VyQ2FzZSgpLHU9KChzfHx7fSkubmFt ZXx8J34nKS50b0xvd2VyQ2FzZSgpO2lmKHQhPT11KXJldHVybiB0PHU/LTE6MTty ZXR1cm4gMDt9LGdldExpc3Q6ZnVuY3Rpb24oKXt2YXIgbj1oKGspO249bi5maWx0 ZXIoZnVuY3Rpb24obyl7dmFyIHA9d2luZG93LlNob3J0UHJvZmlsZXMmJmkuZ2V0 Tm93KG8pO3JldHVybiAhcHx8cC50eXBlPT0iZnJpZW5kIjt9KTtyZXR1cm4gbjt9 LGdldFJhbms6ZnVuY3Rpb24obil7cmV0dXJuIG4gaW4gbD9sW25dOmsubGVuZ3Ro O30saXNSZWFkeTpmdW5jdGlvbigpe3JldHVybiB0cnVlO319KTsoZnVuY3Rpb24o KXt2YXIgbj1jKCdPcmRlcmVkRnJpZW5kc0xpc3RJbml0aWFsRGF0YScpO2s9bi5s aXN0Lmxlbmd0aD9uLmxpc3Q6W107ay5mb3JFYWNoKGZ1bmN0aW9uKG8scCl7bFtv XT1wO30pO20uaW5mb3JtKCdpbml0aWFsaXplZCcse30sZy5CRUhBVklPUl9QRVJT SVNURU5UKTt9KSgpO2UuZXhwb3J0cz1hLk9yZGVyZWRGcmllbmRzTGlzdHx8bTt9 KTsKX19kKCJDaGF0T3JkZXJlZExpc3QiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFu aW1hdGlvbiIsIkFyYml0ZXIiLCJBcmJpdGVyTWl4aW4iLCJBdmFpbGFibGVMaXN0 IiwiQXZhaWxhYmxlTGlzdENvbnN0YW50cyIsIkNoYXQiLCJDaGF0Q29uZmlnIiwi Q2hhdE9yZGVyZWRMaXN0SG92ZXIiLCJDaGF0UXVpZXRMaW5rcyIsIkNoYXRWaXNp YmlsaXR5IiwiQ2xhc3MiLCJDU1MiLCJEYXRhU3RvcmUiLCJEaWFsb2ciLCJET00i LCJIVE1MIiwiSlNMb2dnZXIiLCJPcmRlcmVkRnJpZW5kc0xpc3QiLCJQYXJlbnQi LCJQcmVzZW5jZVByaXZhY3kiLCJTaG9ydFByb2ZpbGVzIiwiVG9vbHRpcCIsIlVS SSIsIlZlY3RvciIsIlhIUFRlbXBsYXRlIiwiY29weVByb3BlcnRpZXMiLCJjcmVh dGVPYmplY3RGcm9tIiwiZGVib3VuY2VBY3Jvc3NUcmFuc2l0aW9ucyIsImdvVVJJ IiwidHgiLCJNZXJjdXJ5Q29uZmlnIiwiQ2hhbm5lbEltcGxlbWVudGF0aW9uIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIg Zz1iKCdBbmltYXRpb24nKSxoPWIoJ0FyYml0ZXInKSxpPWIoJ0FyYml0ZXJNaXhp bicpLGo9YignQXZhaWxhYmxlTGlzdCcpLGs9YignQXZhaWxhYmxlTGlzdENvbnN0 YW50cycpLGw9YignQ2hhdCcpLG09YignQ2hhdENvbmZpZycpLG49YignQ2hhdE9y

ZGVyZWRMaXN0SG92ZXInKSxvPWIoJ0NoYXRRdWlldExpbmtzJykscD1iKCdDaGF0 VmlzaWJpbGl0eScpLHE9YignQ2xhc3MnKSxyPWIoJ0NTUycpLHM9YignRGF0YVN0 b3JlJyksdD1iKCdEaWFsb2cnKSx1PWIoJ0RPTScpLHY9YignSFRNTCcpLHc9Yign SlNMb2dnZXInKSx4PWIoJ09yZGVyZWRGcmllbmRzTGlzdCcpLHk9YignUGFyZW50 Jyksej1iKCdQcmVzZW5jZVByaXZhY3knKSxhYT1iKCdTaG9ydFByb2ZpbGVzJyks YmE9YignVG9vbHRpcCcpLGNhPWIoJ1VSSScpLGRhPWIoJ1ZlY3RvcicpLGVhPWIo J1hIUFRlbXBsYXRlJyksZmE9YignY29weVByb3BlcnRpZXMnKSxnYT1iKCdjcmVh dGVPYmplY3RGcm9tJyksaGE9YignZGVib3VuY2VBY3Jvc3NUcmFuc2l0aW9ucycp LGlhPWIoJ2dvVVJJJyksamE9YigndHgnKSxrYT1jKCdNZXJjdXJ5Q29uZmlnJyks bGE9YygnQ2hhbm5lbEltcGxlbWVudGF0aW9uJykuaW5zdGFuY2U7ZnVuY3Rpb24g bWEocmEsc2EsdGEsdWEpe3RoaXMuX3Jvb3Q9cmE7dGhpcy5faXRlbXM9e307dGhp cy5faXNWaXNpYmxlPWZhbHNlO3RoaXMuX2V4Y2x1ZGVkSWRzPXt9O3RoaXMuX251 bVRvcEZyaWVuZHM9NTt0aGlzLl9oYXNSZW5kZXJlZD1mYWxzZTt0aGlzLl9wcmV2 ZW50UmVuZGVyaW5nPWZhbHNlO3RoaXMuX2hvdmVyQ29udHJvbGxlcj1udWxsO3Ro aXMuX3RlbXBsYXRlPXNhO3RoaXMuX21lc3NhZ2VUZW1wbGF0ZT10YTt0aGlzLl9j b250ZXh0dWFsRGlhbG9nPXVhO0V2ZW50Lmxpc3Rlbih0aGlzLl9yb290LCdjbGlj aycsdGhpcy5fb25DbGljay5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy5f cm9vdCwnbW91c2VlbnRlcicsdGhpcy5fbW91c2VFbnRlci5iaW5kKHRoaXMpKTtF dmVudC5saXN0ZW4odGhpcy5fcm9vdCwnbW91c2VsZWF2ZScsdGhpcy5fbW91c2VM ZWF2ZS5iaW5kKHRoaXMpKTtqLnN1YnNjcmliZShrLk9OX0FWQUlMQUJJTElUWV9D SEFOR0VELHRoaXMudXBkYXRlLnNoaWVsZCh0aGlzKSk7ei5zdWJzY3JpYmUoJ3By aXZhY3ktY2hhbmdlZCcsdGhpcy51cGRhdGUuc2hpZWxkKHRoaXMpKTtsYS5zdWJz Y3JpYmUoW2xhLkNPTk5FQ1RFRCxsYS5SRUNPTk5FQ1RJTkcsbGEuU0hVVERPV04s bGEuTVVURV9XQVJOSU5HLGxhLlVOTVVURV9XQVJOSU5HXSx0aGlzLnVwZGF0ZS5z aGllbGQodGhpcykpO3RoaXMuaW5mb3JtKCdpbml0aWFsaXplZCcsdGhpcyxoLkJF SEFWSU9SX1BFUlNJU1RFTlQpO3RoaXMucmVuZGVyKCk7aC5zdWJzY3JpYmUody5E VU1QX0VWRU5ULGZ1bmN0aW9uKHZhLHdhKXt3YS5jaGF0X2xpc3RzPXdhLmNoYXRf bGlzdHN8fHtzb3J0ZWRfbGlzdDp0aGlzLmdldFNvcnRlZExpc3QoKSxvcmRlcmVk X2xpc3Q6eC5nZXRMaXN0KCksYXZhaWxhYmxlX2xpc3Q6bWEuZ2V0QXZhaWxhYmxl TGlzdCh0aGlzLl9leGNsdWRlZElkcyksZXhjbHVkZWRfbGlzdDp0aGlzLl9leGNs dWRlZElkc307fS5iaW5kKHRoaXMpKTt9ZnVuY3Rpb24gbmEocmEsc2Epe3ZhciB0 YT1vYShyYSxzYSk7aWYodGEhPT0wKXJldHVybiB0YTt2YXIgdWE9cGEocmEsc2Ep O2lmKHVhIT09MClyZXR1cm4gdWE7cmV0dXJuIHguY29tcGFyZShyYSxzYSk7fWZ1 bmN0aW9uIG9hKHJhLHNhKXt2YXIgdGE9ei5hbGxvd3MocmEpLHVhPXouYWxsb3dz KHNhKTtpZih0YSE9PXVhKXJldHVybiB0YT8tMToxO3JldHVybiAwO31mdW5jdGlv biBwYShyYSxzYSl7dmFyIHRhPWFhLmdldE5vdyhyYSksdWE9YWEuZ2V0Tm93KHNh KSx2YT0oKHRhfHx7fSkubmFtZXx8J34nKS50b0xvd2VyQ2FzZSgpLHdhPSgodWF8 fHt9KS5uYW1lfHwnficpLnRvTG93ZXJDYXNlKCk7aWYodmEhPT13YSlyZXR1cm4g dmE8d2E/LTE6MTtyZXR1cm4gMDt9ZnVuY3Rpb24gcWEocmEsc2Epe3ZhciB0YT1q LmdldChyYSk9PT1rLk1PQklMRSx1YT1qLmdldChzYSk9PT1rLk1PQklMRTtpZih0 YSE9PXVhKXJldHVybiB1YT8tMToxO3JldHVybiBwYShyYSxzYSk7fWZhKG1hLHtn ZXRTb3J0ZWRMaXN0OmZ1bmN0aW9uKHJhLHNhKXt2YXIgdGE9eC5nZXRMaXN0KCku ZmlsdGVyKGZ1bmN0aW9uKGpiKXtyZXR1cm4gIShqYiBpbiByYSk7fSk7dGE9dGEu ZmlsdGVyKGZ1bmN0aW9uKGpiKXtyZXR1cm4gei5nZXRGcmllbmRWaXNpYmlsaXR5 KGpiKSE9PXouQkxBQ0tMSVNURUQ7fSk7dmFyIHVhPVtdLHZhPXAuaXNPbmxpbmUo KTtpZih2YSl7aWYoei5nZXRPbmxpbmVQb2xpY3koKT09PXouT05MSU5FX1RPX1dI SVRFTElTVCl7dmFyIHdhPXRhLHhhPXt9LHlhLHphO3RhPVtdO2Zvcih5YT0wO3lh PHdhLmxlbmd0aDsrK3lhKXt6YT13YVt5YV07aWYoei5hbGxvd3MoemEpKXt4YVt6 YV09dHJ1ZTt0YS5wdXNoKHphKTt9fXZhciBhYj16LmdldFdoaXRlbGlzdCgpO2Zv cih5YT0wO3lhPGFiLmxlbmd0aDsrK3lhKXt6YT1hYlt5YV07aWYoISh6YSBpbiB4 YSkpdGEucHVzaCh6YSk7fWZvcih5YT0wO3lhPHdhLmxlbmd0aDsrK3lhKXt6YT13 YVt5YV07aWYoIXouYWxsb3dzKHphKSl0YS5wdXNoKHphKTt9fXZhciBiYj1tLmdl dCgnb3JkZXJlZF9saXN0LnRvcF9mcmllbmRzJywwKSxjYj1tLmdldCgnb3JkZXJl ZF9saXN0LmF2YWlsYWJsZV90YXJnZXQnLDApLGRiPU1hdGguZmxvb3Ioc2EqY2Ip LGViPVtdO2Zvcih2YXIgeWE9MCxmYj10YS5sZW5ndGg7eWE8ZmImJmRiPjA7eWEr Kyl7dmFyIHphPXRhW3lhXSxnYj1qLmdldCh6YSksaGI9Z2I9PT1rLkFDVElWRTtp ZihtLmdldCgnY2hhdF9zaWRlYmFyX21vYmlsZV9hdmFpbGFibGUnKSloYj1oYnx8 KGdiPT09ay5NT0JJTEUpO2lmKGhifHx5YTxiYil7dWEucHVzaCh6YSk7aGImJmRi LS07fWVsc2UgZWIucHVzaCh6YSk7fWlmKHlhPGZiKUFycmF5LnByb3RvdHlwZS5w dXNoLmFwcGx5KGViLHRhLnNsaWNlKHlhKSk7aWYodWEubGVuZ3RoPHNhKUFycmF5

LnByb3RvdHlwZS5wdXNoLmFwcGx5KHVhLGViKTt9ZWxzZSBBcnJheS5wcm90b3R5 cGUucHVzaC5hcHBseSh1YSx0YSk7dWE9dWEuc2xpY2UoMCxzYSk7aWYodWEubGVu Z3RoPT09c2Epe3ZhciBpYj1tYS5nZXRBdmFpbGFibGVMaXN0KHVhLmNvbmNhdChy YSkpLmxlbmd0aDtpYiYmdWEuc3BsaWNlKC0xKTt9dWEuc29ydChuYSk7cmV0dXJu IHVhO30sZ2V0QXZhaWxhYmxlTGlzdDpmdW5jdGlvbihyYSl7cmV0dXJuIGouZ2V0 T25saW5lSURzKCkuZmlsdGVyKGZ1bmN0aW9uKHNhKXtyZXR1cm4gIShzYSBpbiBy YSk7fSk7fX0pO2ZhKG1hLnByb3RvdHlwZSxpLHtnZXRBbGxOb2RlczpmdW5jdGlv bigpe3ZhciByYT17fSxzYT11LnNjcnkodGhpcy5fcm9vdCwnbGkuaXRlbScpO2Zv cih2YXIgdGE9MDt0YTxzYS5sZW5ndGg7dGErKyl7dmFyIHVhPXMuZ2V0KHNhW3Rh XSwnaWQnKTtpZih1YSlyYVt1YV09c2FbdGFdO31yZXR1cm4gcmE7fSxnZXRTaG93 aW5nVXNlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdS5zY3J5KHRoaXMuX3Jvb3QsJ2xp Lml0ZW0nKS5tYXAoZnVuY3Rpb24ocmEpe3JldHVybiBzLmdldChyYSwnaWQnKTt9 KTt9LGdldFVzZXJGb3JOb2RlOmZ1bmN0aW9uKHJhKXtyZXR1cm4gcy5nZXQocmEs J2lkJyk7fSxnZXRIb3ZlckNvbnRyb2xsZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5f aG92ZXJDb250cm9sbGVyKXRoaXMuX2hvdmVyQ29udHJvbGxlcj1uZXcgbih0aGlz LHRoaXMuX2NvbnRleHR1YWxEaWFsb2cpO3JldHVybiB0aGlzLl9ob3ZlckNvbnRy b2xsZXI7fSxfZ2V0TGlzdEl0ZW06ZnVuY3Rpb24ocmEpe3ZhciBzYT10aGlzLl9p dGVtc1tyYV07aWYoc2Epe3ZhciB0YT1qLmdldChyYSksdWE9ei5hbGxvd3MocmEp JiYhbGEuZGlzY29ubmVjdGVkKCksdmE9e2FjdGl2ZTpmYWxzZSxtb2JpbGU6ZmFs c2UsZ3JlZW5waG9uZTpmYWxzZX07dmEuYWN0aXZlPXRhPT09ay5BQ1RJVkU7aWYo bS5nZXQoJ3NpZGViYXJfbW9iaWxlX2ljb25fZ3JlZW4nKSl7dmEuZ3JlZW5waG9u ZT10YT09PWsuTU9CSUxFO31lbHNlIHZhLm1vYmlsZT10YT09PWsuTU9CSUxFO2Zv cih2YXIgd2EgaW4gdmEpci5jb25kaXRpb25DbGFzcyhzYSx3YSx2YVt3YV0mJnVh KTtyLmNvbmRpdGlvbkNsYXNzKHNhLCdpbnZpcycsIXVhKTt9cmV0dXJuIHNhO30s Z2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290O30sZ2V0U29ydGVk TGlzdDpmdW5jdGlvbigpe3JldHVybiBtYS5nZXRTb3J0ZWRMaXN0KHRoaXMuX2V4 Y2x1ZGVkSWRzLHRoaXMuX251bVRvcEZyaWVuZHMpO30saGlkZTpmdW5jdGlvbigp e2lmKCF0aGlzLl9pc1Zpc2libGUpcmV0dXJuO3RoaXMuX2lzVmlzaWJsZT1mYWxz ZTtyLmhpZGUodGhpcy5fcm9vdCk7dGhpcy5pbmZvcm0oJ2hpZGUnKTt9LF9vbkNs aWNrOmZ1bmN0aW9uKGV2ZW50KXt2YXIgcmE9ZXZlbnQuZ2V0VGFyZ2V0KCksc2E9 eS5ieVRhZyhyYSwnbGknKTtpZihzYSl7aWYoci5oYXNDbGFzcyhzYSwnYmxhY2ti aXJkV2hpdGVsaXN0Jykpe3ZhciB0YT1uZXcgY2EoJy9hamF4L2NoYXQvcHJpdmFj eS9zZXR0aW5nc19kaWFsb2cucGhwJykuYWRkUXVlcnlEYXRhKHtyZWY6J3doaXRl bGlzdF9zZXBhcmF0b3InfSk7bmV3IHQoKS5zZXRBc3luY1VSTCh0YS50b1N0cmlu ZygpKS5zaG93KCk7ZXZlbnQucHJldmVudCgpO3JldHVybiBmYWxzZTt9dmFyIHVh PXMuZ2V0KHNhLCdpZCcpO2lmKHVhKXt2YXIgdmE9J29yZGVyZWRfbGlzdCcsd2E9 c2E7d2hpbGUoc2EucHJldmlvdXNTaWJsaW5nKXtzYT1zYS5wcmV2aW91c1NpYmxp bmc7aWYoci5oYXNDbGFzcyhzYSwnc2VwYXJhdG9yJykpe2lmKHIuaGFzQ2xhc3Mo c2EsJ21vcmVPbmxpbmVGcmllbmRzJykpe3ZhPSdtb3JlX29ubGluZV9mcmllbmRz JzticmVhazt9aWYoci5oYXNDbGFzcyhzYSwnYmxhY2tiaXJkV2hpdGVsaXN0Jykp e3ZhPSdibGFja2JpcmRfb2ZmbGluZV9zZWN0aW9uJzticmVhazt9fX12YXIgeGE9 W107aWYobS5nZXQoJ2NoYXRfcmVhbHRpbWVfY29lZmZpY2llbnRfaW1wcmVzc2lv bnMnKSl4YT10aGlzLmdldFNvcnRlZExpc3QoKTthYS5nZXQodWEsZnVuY3Rpb24o eWEpe2wub3BlblRhYih1YSx5YS5uYW1lLCdmcmllbmQnLHZhLHhhKTt9KTt0aGlz LmluZm9ybSgnY2xpY2snLHtpZDp1YX0pO31lbHNlIGlmKHIuaGFzQ2xhc3Moc2Es J3NlcGFyYXRvcicpJiZ5LmJ5Q2xhc3MocmEsJ2lubmVyJykpdGhpcy5zY3JvbGxU byhzYSk7cmV0dXJuIGZhbHNlO319LF9tb3VzZUVudGVyOmZ1bmN0aW9uKCl7dGhp cy5fcHJldmVudFJlbmRlcmluZz10cnVlO30sX21vdXNlTGVhdmU6ZnVuY3Rpb24o KXt0aGlzLl9wcmV2ZW50UmVuZGVyaW5nPWZhbHNlO30sc2V0RXhjbHVkZWRJZHM6 ZnVuY3Rpb24ocmEpe3RoaXMuX2V4Y2x1ZGVkSWRzPWdhKHJhfHxbXSk7fSxzZXRO dW1Ub3BGcmllbmRzOmZ1bmN0aW9uKHJhKXtpZihyYSE9PXRoaXMuX251bVRvcEZy aWVuZHMpe3RoaXMuX251bVRvcEZyaWVuZHM9cmE7dGhpcy5yZW5kZXIoKTt9fSxf Z2V0T2ZmbGluZVRvU2VjdGlvbkl0ZW1zOmZ1bmN0aW9uKCl7dmFyIHJhPXUuY3Jl YXRlKCdhJyx7aHJlZjonIyd9LHUudHguXygiU3VudGluZyIpKSxzYT1bXSx0YT1r YS5DaGF0Q29udHJvbExhbmd1YWdlQ2hhbmdlR0s/dS50eC5fKCJMRUJJSCBCQU5Z QUsgVEVNQU4iKTp1LnR4Ll8oIlRFTUFOIE9GRkxJTkUiKTtzYS5wdXNoKHYoJzxs aSBjbGFzcz0ic2VwYXJhdG9yIj4nKyc8ZGl2IGNsYXNzPSJvdXRlciI+JysnPGRp diBjbGFzcz0iaW5uZXIiPicrJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nK3RhKyc8L3Nw YW4+JysnPGRpdiBjbGFzcz0iZGl2ZSI+PHNwYW4gY2xhc3M9ImJhciI+PC9zcGFu PjwvZGl2PicrJzwvZGl2PicrJzwvZGl2PicrJzwvbGk+JykpO3NhLnB1c2godign

PGxpIGNsYXNzPSJzZXBhcmF0b3IgYmxhY2tiaXJkV2hpdGVsaXN0Ij4nKyc8ZGl2 IGNsYXNzPSJvdXRlciI+JysnPGRpdiBjbGFzcz0iaW5uZXIiPicrJzxkaXYgY2xh c3M9InN1YmhlYWRlciI+JysnPHNwYW4gY2xhc3M9InN1YmhlYWRlclRleHQiPicr dS50eC5fKCJUZW1hbi10ZW1hbiBpbmkgdGFrIGJpc2EgbWVsaWhhdCBBbmRhIGRp IG9icm9sYW4uIHs9bGlua30iLHsnPWxpbmsnOnJhfSkrJzwvc3Bhbj4nKyc8L2Rp dj4nKyc8L2Rpdj4nKyc8L2xpPicpKTtyZXR1cm4gc2E7fSxyZW5kZXI6ZnVuY3Rp b24oKXt0aGlzLnJlbmRlcj1oYShmdW5jdGlvbigpe2lmKCF0aGlzLl9pc1Zpc2li bGV8fCh0aGlzLl9wcmV2ZW50UmVuZGVyaW5nJiZ0aGlzLl9oYXNSZW5kZXJlZCkp cmV0dXJuO3RoaXMuX2hhc1JlbmRlcmVkPXRydWU7dmFyIHJhPXRoaXMuZ2V0U29y dGVkTGlzdCgpLHNhPVtdLHRhLHVhLHZhPXouZ2V0VmlzaWJpbGl0eSgpJiZ6Lmdl dE9ubGluZVBvbGljeSgpPT16Lk9OTElORV9UT19XSElURUxJU1Q7Zm9yKHZhciB3 YT0wLHhhPXJhLmxlbmd0aDt3YTx4YTt3YSsrKXt0YT1yYVt3YV07aWYodmEpaWYo IXouYWxsb3dzKHRhKSl7aWYod2ErMj49cmEubGVuZ3RoKWJyZWFrO3ZhPWZhbHNl O3ZhciB5YT10aGlzLl9nZXRPZmZsaW5lVG9TZWN0aW9uSXRlbXMoKTtzYS5wdXNo KHlhWzBdKTtzYS5wdXNoKHlhWzFdKTt4YS09Mjt9dWE9dGhpcy5fZ2V0TGlzdEl0 ZW0odGEpO2lmKHVhKXtzYS5wdXNoKHVhKTt9ZWxzZSB0aGlzLl9yZW5kZXJMaXN0 SXRlbSh0YSx0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTt9dmFyIHphPW1hLmdldEF2 YWlsYWJsZUxpc3QodGhpcy5fZXhjbHVkZWRJZHMpLGFiPWdhKHJhKTt6YT16YS5m aWx0ZXIoZnVuY3Rpb24oZ2Ipe3JldHVybiAhKGdiIGluIGFiKTt9KTt6YS5zb3J0 KHFhKTt2YXIgYmI9a2EuQ2hhdENvbnRyb2xMYW5ndWFnZUNoYW5nZUdLPyJMRUJJ SCBCQU5ZQUsgVEVNQU4iOiJURU1BTiBPTkxJTkUgWUFORyBMQUlOIjtpZih6YS5s ZW5ndGgmJnNhLmxlbmd0aClzYS5wdXNoKHYoJzxsaSBjbGFzcz0ic2VwYXJhdG9y IG1vcmVPbmxpbmVGcmllbmRzIj4nKyc8ZGl2IGNsYXNzPSJvdXRlciI+JysnPGRp diBjbGFzcz0iaW5uZXIiPicrJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nK2phLl8oIntN T1JFIE9OTElORSBGUklFTkRTfSAoez1jb3VudH0pIix7J01PUkUgT05MSU5FIEZS SUVORFMnOmJiLCc9Y291bnQnOnphLmxlbmd0aH0pKyc8L3NwYW4+JysnPGRpdiBj bGFzcz0iZGl2ZSI+PHNwYW4gY2xhc3M9ImJhciI+PC9zcGFuPjwvZGl2PicrJzwv ZGl2PicrJzwvZGl2PicrJzwvbGk+JykpO2Zvcih2YXIgY2I9MCxkYj16YS5sZW5n dGg7Y2I8ZGI7Y2IrKyl7dGE9emFbY2JdO3VhPXRoaXMuX2dldExpc3RJdGVtKHRh KTtpZih1YSl7c2EucHVzaCh1YSk7fWVsc2UgdGhpcy5fcmVuZGVyTGlzdEl0ZW0o dGEsdGhpcy5yZW5kZXIuYmluZCh0aGlzKSk7fWlmKCFyYS5sZW5ndGgmJiF6YS5s ZW5ndGgpe3ZhciBlYj10aGlzLl9tZXNzYWdlVGVtcGxhdGUucmVuZGVyKCksZmI9 ZWEuZ2V0Tm9kZShlYiwnbWVzc2FnZScpO3Uuc2V0Q29udGVudChmYiwiVGlkYWsg YWRhIHlhbmcgdGVyc2VkaWEgdW50dWsgbWVuZ29icm9sLiIpO3NhLnB1c2goZWIp O31pZihzYS5sZW5ndGgpe3Uuc2V0Q29udGVudCh0aGlzLl9yb290LHNhKTtvLm51 a2VMaW5rcyh0aGlzLmdldFJvb3QoKSk7dGhpcy5pbmZvcm0oJ3JlbmRlcicpO319 LDMwMCx0aGlzKTt0aGlzLnJlbmRlcigpO30sX3JlbmRlckxpc3RJdGVtOmZ1bmN0 aW9uKHJhLHNhKXthYS5nZXQocmEsZnVuY3Rpb24odGEpe2lmKHRhLnR5cGU9PT0n ZnJpZW5kJyl7dmFyIHVhPXRoaXMuX3RlbXBsYXRlLnJlbmRlcigpLHZhPWVhLmdl dE5vZGUodWEsJ3Byb2ZpbGUtcGhvdG8nKTt2YS5zZXRBdHRyaWJ1dGUoJ3NyYycs dGEudGh1bWJTcmMpO3ZhciB3YT1lYS5nZXROb2RlKHVhLCduYW1lJyk7dS5zZXRD b250ZW50KHdhLHRhLm5hbWUpO3ZhciB4YT1lYS5nZXROb2RlKHVhLCdhbmNob3In KTt4YS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcvbWVzc2FnZXMvJytyYSk7dmFyIHlh PWVhLmdldE5vZGUodWEsJ3RpbWVsaW5lX2ljb24nKTtpZih5YSl7dmFyIHphPWph Ll8oIlBlcmdpIGtlIGtyb25vbG9naSB7bmFtZX0iLHtuYW1lOnRhLmZpcnN0TmFt ZX0pO2JhLnNldCh5YSx6YSwnYWJvdmUnLCdjZW50ZXInKTtFdmVudC5saXN0ZW4o eWEsJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7ZXZlbnQua2lsbCgpO2lhKHRhLnVy aSk7fSk7fXMuc2V0KHVhLCdpZCcscmEpO3RoaXMuX2l0ZW1zW3JhXT11YTtzYSYm c2EodWEpO319LmJpbmQodGhpcykpO30sc2hvdzpmdW5jdGlvbigpe2lmKHRoaXMu X2lzVmlzaWJsZSlyZXR1cm47dGhpcy5faXNWaXNpYmxlPXRydWU7ci5zaG93KHRo aXMuX3Jvb3QpO3RoaXMucmVuZGVyKCk7dGhpcy5pbmZvcm0oJ3Nob3cnKTt9LGlz VmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1Zpc2libGU7fSx1cGRh dGU6ZnVuY3Rpb24oKXt0aGlzLl9oYXNSZW5kZXJlZD1mYWxzZTt0aGlzLnJlbmRl cigpO30sc2V0U2Nyb2xsQ29udGFpbmVyOmZ1bmN0aW9uKHJhKXtpZih1LmNvbnRh aW5zKHJhLHRoaXMuX3Jvb3QpKXRoaXMuX3Njcm9sbENvbnRhaW5lcj1yYTt9LHNj cm9sbFRvOmZ1bmN0aW9uKHJhKXtpZighdGhpcy5fc2Nyb2xsQ29udGFpbmVyKXJl dHVybjt2YXIgc2E9dGhpcy5fc2Nyb2xsQ29udGFpbmVyLnNjcm9sbEhlaWdodCx0 YT10aGlzLl9zY3JvbGxDb250YWluZXIuY2xpZW50SGVpZ2h0LHVhPXRoaXMuX3Nj cm9sbENvbnRhaW5lci5zY3JvbGxUb3AsdmE9TWF0aC5taW4ocmEub2Zmc2V0VG9w LHNhLXRhKTtpZih1YSE9PXZhKXt2YXIgd2E9TWF0aC5hYnModmEtdWEpL3RoaXMu

X3Njcm9sbENvbnRhaW5lci5jbGllbnRIZWlnaHQqNTAwO2codGhpcy5fc2Nyb2xs Q29udGFpbmVyKS50bygnc2Nyb2xsVG9wJyx2YSkuZWFzZShnLmVhc2UuZW5kKS5k dXJhdGlvbih3YSkuZ28oKTt9fX0pO2UuZXhwb3J0cz1tYTt9KTsKX19kKCJUeXBp bmdJbmRpY2F0b3IiLFsiQXJiaXRlciIsIkFzeW5jUmVxdWVzdCIsIkF2YWlsYWJs ZUxpc3QiLCJBdmFpbGFibGVMaXN0Q29uc3RhbnRzIiwiQ2hhbm5lbE1hbmFnZXIi LCJDaGFubmVsQ29ubmVjdGlvbiIsIkNoYXRDb25maWciLCJDaGF0VmlzaWJpbGl0 eSIsImNvcHlQcm9wZXJ0aWVzIiwiS2V5cyIsIlNob3J0UHJvZmlsZXMiLCJUeXBp bmdEZXRlY3RvciIsIlByZXNlbmNlUHJpdmFjeSJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBc3luY1JlcXVlc3QnKSxpPWIo J0F2YWlsYWJsZUxpc3QnKSxqPWIoJ0F2YWlsYWJsZUxpc3RDb25zdGFudHMnKSxr PWIoJ0NoYW5uZWxNYW5hZ2VyJyksbD1iKCdDaGFubmVsQ29ubmVjdGlvbicpLG09 YignQ2hhdENvbmZpZycpLG49YignQ2hhdFZpc2liaWxpdHknKSxvPWIoJ2NvcHlQ cm9wZXJ0aWVzJykscD1iKCdLZXlzJykscT1iKCdTaG9ydFByb2ZpbGVzJykscj1i KCdUeXBpbmdEZXRlY3RvcicpLHM9YignUHJlc2VuY2VQcml2YWN5Jyk7ZnVuY3Rp b24gdCh2KXtpZighbi5pc09ubGluZSgpKXJldHVybiBmYWxzZTtpZih2KXt2YXIg dz1xLmdldE5vdyh2KTtyZXR1cm4gdyYmdy50eXBlPT0iZnJpZW5kIiYmcy5hbGxv d3Modik7fXJldHVybiB0cnVlO31mdW5jdGlvbiB1KHYsdyx4LHkseil7dGhpcy51 c2VySUQ9djt0aGlzLmlucHV0PXc7dGhpcy5zb3VyY2U9eDt0aGlzLnRocmVhZElE PXo7dGhpcy5yZW1vdGVTdGF0ZT1yLklOQUNUSVZFO3RoaXMubm90aWZ5VGltZXI9 bnVsbDt5PXl8fHt9O3RoaXMubm90aWZ5RGVsYXk9eS5ub3RpZnlEZWxheXx8dGhp cy5ub3RpZnlEZWxheTt0aGlzLl90eXBpbmdEZXRlY3Rvcj1uZXcgcih3KTt0aGlz Ll90eXBpbmdEZXRlY3Rvci5pbml0KHkpO3RoaXMuX3R5cGluZ0RldGVjdG9yLnN1 YnNjcmliZSgnY2hhbmdlJyx0aGlzLl9zdGF0ZUNoYW5nZS5iaW5kKHRoaXMpKTt9 byh1LnByb3RvdHlwZSx7bm90aWZ5RGVsYXk6MTAwMCxzZXRJZ25vcmVFbnRlcjpm dW5jdGlvbih2KXt2YXIgdz12P1twLlJFVFVSTl06W107dGhpcy5fdHlwaW5nRGV0 ZWN0b3Iuc2V0SWdub3JlS2V5cyh3KTt9LHJlc2V0U3RhdGU6ZnVuY3Rpb24oKXt0 aGlzLnJlbW90ZVN0YXRlPXUuSU5BQ1RJVkU7dGhpcy5fdHlwaW5nRGV0ZWN0b3Iu cmVzZXQoKTtjbGVhclRpbWVvdXQodGhpcy5ub3RpZnlUaW1lcik7dGhpcy5ub3Rp ZnlUaW1lcj1udWxsO30sX3N0YXRlQ2hhbmdlOmZ1bmN0aW9uKHYsdyl7aWYodyE9 ci5RVUlUVElORyl7Y2xlYXJUaW1lb3V0KHRoaXMubm90aWZ5VGltZXIpO3RoaXMu bm90aWZ5VGltZXI9dGhpcy5fbm90aWZ5U3RhdGUuc2hpZWxkKHRoaXMsdykuZGVm ZXIodGhpcy5ub3RpZnlEZWxheSxmYWxzZSk7fWVsc2UgdGhpcy5fbm90aWZ5U3Rh dGUodyx0cnVlKTt9LF9ub3RpZnlTdGF0ZTpmdW5jdGlvbih2LHcpe3ZhciB4PXRo aXMudXNlcklELHk9dCh4KTtpZih5JiZ2IT10aGlzLnJlbW90ZVN0YXRlKXt0aGlz LnJlbW90ZVN0YXRlPXY7aWYobC5kaXNjb25uZWN0ZWQoKSlyZXR1cm47dmFyIHo9 e3R5cDp2LHRvOngsc291cmNlOnRoaXMuc291cmNlLHRocmVhZDp0aGlzLnRocmVh ZElEfTtuZXcgaCgpLnNldEhhbmRsZXIodGhpcy5fb25UeXBSZXNwb25zZS5iaW5k KHRoaXMseCkpLnNldEVycm9ySGFuZGxlcihiYWdvZmhvbGRpbmcpLnNldERhdGEo eikuc2V0VVJJKCcvYWpheC9tZXNzYWdpbmcvdHlwLnBocCcpLnNldEFsbG93Q3Jv c3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZXRPcHRpb24oJ2FzeW5jaHJvbm91cycs IXcpLnNlbmQoKTt9fSxfb25UeXBSZXNwb25zZTpmdW5jdGlvbih2LHcpe3ZhciB4 PXcuZ2V0UGF5bG9hZCgpfHx7fTtpZih4Lm9mZmxpbmUpaS5zZXQodixqLk9GRkxJ TkUsJ3R5cGluZ19yZXNwb25zZScpO319KTtlLmV4cG9ydHM9dTt9KTsKX19kKCJD aGF0QmVoYXZpb3IiLFsiQXJiaXRlciIsIkF2YWlsYWJsZUxpc3QiLCJBdmFpbGFi bGVMaXN0Q29uc3RhbnRzIiwiY29weVByb3BlcnRpZXMiLCJNZXJjdXJ5Q29uc3Rh bnRzIiwiQ2hhdFNpZGViYXJDYWxsb3V0RGF0YSJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBdmFpbGFibGVMaXN0JyksaT1i KCdBdmFpbGFibGVMaXN0Q29uc3RhbnRzJyksaj1iKCdjb3B5UHJvcGVydGllcycp LGs9YygnTWVyY3VyeUNvbnN0YW50cycpLkNoYXROb3RpZmljYXRpb25Db25zdGFu dHMsbD1jKCdDaGF0U2lkZWJhckNhbGxvdXREYXRhJykuaXNTaG93bixtPWguZ2V0 V2ViQ2hhdE5vdGlmaWNhdGlvbigpLG49bCxvPWoobmV3IGcoKSx7T05fQ0hBTkdF RDonY2hhbmdlZCcsbm90aWZpZXNVc2VyTWVzc2FnZXM6ZnVuY3Rpb24oKXtyZXR1 cm4gbSE9PWsuTk9fVVNFUl9NRVNTQUdFX05PVElGSUNBVElPTjt9LGlnbm9yZXNS ZW1vdGVUYWJSYWlzZTpmdW5jdGlvbigpe3JldHVybiBuO319KTtmdW5jdGlvbiBw KCl7by5pbmZvcm0oby5PTl9DSEFOR0VEKTt9aC5zdWJzY3JpYmUoaS5PTl9DSEFU X05PVElGSUNBVElPTl9DSEFOR0VELGZ1bmN0aW9uKCl7dmFyIHE9bSxyPWguZ2V0 V2ViQ2hhdE5vdGlmaWNhdGlvbigpO209cjtpZihxIT1yKXAoKTt9KTtnLnN1YnNj cmliZSgnY2hhdC9zZXRfZG9lc19wYWdlX29jY2x1ZGVfdGFicycsZnVuY3Rpb24o cSxyKXtuPSEhcjtwKCk7fSk7ZS5leHBvcnRzPW87fSk7Cl9fZCgiQ2hhdFNpZGVi YXJTaGVldCIsWyJldmVudC1leHRlbnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9u

cyIsIkFyYml0ZXJNaXhpbiIsIkJsYWNrYmlyZFVwc2VsbCIsIkNoYW5uZWxDb25u ZWN0aW9uIiwiQ2hhbm5lbENvbnN0YW50cyIsIkNoYXRCZWhhdmlvciIsIkNoYXRD b25maWciLCJDaGF0VmlzaWJpbGl0eSIsIkNTUyIsIkRPTSIsIkpTTG9nZ2VyIiwi UHJlc2VuY2VQcml2YWN5IiwiY29weVByb3BlcnRpZXMiLCJ0eCIsIk1lcmN1cnlD b25maWciXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9u cycpO2IoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyTWl4 aW4nKSxoPWIoJ0JsYWNrYmlyZFVwc2VsbCcpLGk9YignQ2hhbm5lbENvbm5lY3Rp b24nKSxqPWIoJ0NoYW5uZWxDb25zdGFudHMnKSxrPWIoJ0NoYXRCZWhhdmlvcicp LGw9YignQ2hhdENvbmZpZycpLG09YignQ2hhdFZpc2liaWxpdHknKSxuPWIoJ0NT UycpLG89YignRE9NJykscD1iKCdKU0xvZ2dlcicpLHE9YignUHJlc2VuY2VQcml2 YWN5Jykscj1iKCdjb3B5UHJvcGVydGllcycpLHM9YigndHgnKSx0PWMoJ01lcmN1 cnlDb25maWcnKSx1PXAuY3JlYXRlKCdzaWRlYmFyX3NoZWV0Jyk7ZnVuY3Rpb24g dih5KXtzd2l0Y2goeSl7Y2FzZSBqLkhJTlRfQVVUSDpyZXR1cm4gIldha3R1IHNl c2kgQW5kYSB0ZWxhaCBoYWJpcy4gU2lsYWthbiBtYXN1ayBrZSBzaXR1cy4iO2Nh c2Ugai5ISU5UX0NPTk46cmV0dXJuIHMuXygie0NoYXR9IEZhY2Vib29rIHNlZGFu ZyB0aWRhayB0ZXJzZWRpYS4iLHtDaGF0OiJPYnJvbGFuIn0pO2Nhc2Ugai5ISU5U X01BSU5UOnJldHVybiBzLl8oIntDaGF0fSBGYWNlYm9vayBzZWRhbmcgdGlkYWsg YmlzYSBkaWd1bmFrYW4ga2FyZW5hIHBlcmF3YXRhbi4iLHtDaGF0OiJPYnJvbGFu In0pO2RlZmF1bHQ6cmV0dXJuIHMuXygie0NoYXR9IEZhY2Vib29rIHNlZGFuZyB0 aWRhayB0ZXJzZWRpYS4iLHtDaGF0OiJPYnJvbGFuIn0pO319ZnVuY3Rpb24gdyh5 KXt2YXIgejtpZih5PT09bnVsbCl7ej0iVGlkYWsgZGFwYXQgdGVyaHVidW5nIGtl IG9icm9sYW4uIFBlcmlrc2Egc2FtYnVuZ2FuIGludGVybmV0IEFuZGEuIjt9ZWxz ZSBpZih5PmwuZ2V0KCd3YXJuaW5nX2NvdW50ZG93bl90aHJlc2hvbGRfbXNlYycp KXt2YXIgYWE9by5jcmVhdGUoJ2EnLHtocmVmOicjJyxjbGFzc05hbWU6J2ZiQ2hh dFJlY29ubmVjdExpbmsnfSwiQ29iYSBsYWdpIik7ej1vLnR4Ll8oIlRpZGFrIGJp c2EgdGVyaHVidW5nIGtlIG9icm9sYW4uIHt0cnktYWdhaW4tbGlua30iLHsndHJ5 LWFnYWluLWxpbmsnOmFhfSk7fWVsc2UgaWYoeT4xMDAwKXt6PXMuXygiVGlkYWsg ZGFwYXQgdGVyaHVidW5nIGtlIG9icm9sYW4uIE1lbmNvYmEgdGVyaHVidW5nIGtl bWJhbGkgZGFsYW0ge3NlY29uZHN9Li4uIix7c2Vjb25kczpNYXRoLmZsb29yKHkv MTAwMCl9KTt9ZWxzZSB6PSJUaWRhayBkYXBhdCB0ZXJodWJ1bmcga2Ugb2Jyb2xh bi4gTWVuY29iYSB0ZXJodWJ1bmcga2VtYmFsaS4uLiI7cmV0dXJuIHo7fWZ1bmN0 aW9uIHgoeSl7dGhpcy5fcm9vdD15O3RoaXMuX21lc3NhZ2U9by5maW5kKHksJ2Rp di5mYkNoYXRTaWRlYmFyTWVzc2FnZSBkaXYubWVzc2FnZScpO2kuc3Vic2NyaWJl KFtpLkNPTk5FQ1RFRCxpLlNIVVRET1dOLGkuUkVDT05ORUNUSU5HXSx0aGlzLl9o YW5kbGVDb25uZWN0aW9uQ2hhbmdlLmJpbmQodGhpcykpO2kuc3Vic2NyaWJlKFtp Lk1VVEVfV0FSTklORyxpLlVOTVVURV9XQVJOSU5HXSx0aGlzLl9yZW5kZXIuYmlu ZCh0aGlzKSk7cS5zdWJzY3JpYmUoJ3ByaXZhY3ktdXNlci1wcmVzZW5jZS1jaGFu Z2VkJyx0aGlzLl9yZW5kZXIuYmluZCh0aGlzKSk7ay5zdWJzY3JpYmUoay5PTl9D SEFOR0VELHRoaXMuX3JlbmRlci5iaW5kKHRoaXMpKTt0aGlzLl9yZW5kZXIoKTt9 cih4LnByb3RvdHlwZSxnLHtfY2hhbm5lbFN0YXR1czpudWxsLF9jaGFubmVsRGF0 YTpudWxsLF9oYW5kbGVDb25uZWN0aW9uQ2hhbmdlOmZ1bmN0aW9uKHkseil7dGhp cy5fY2hhbm5lbFN0YXR1cz15O3RoaXMuX2NoYW5uZWxEYXRhPXo7dGhpcy5fcmVu ZGVyKCk7fSxfc2hvd1dhcm5pbmdUaW1lb3V0Om51bGwsX3dhcm5pbmdNc2dFdmVu dExpc3RlbmVyOm51bGwsX3JlbmRlckNoYW5uZWxEaXNjb25uZWN0OmZ1bmN0aW9u KCl7aWYodGhpcy5fY2hhbm5lbFN0YXR1cz09PWkuU0hVVERPV04pe3JldHVybiBv LnNldENvbnRlbnQodGhpcy5fbWVzc2FnZSx2KHRoaXMuX2NoYW5uZWxEYXRhKSk7 fWVsc2UgaWYodGhpcy5fY2hhbm5lbFN0YXR1cz09PWkuUkVDT05ORUNUSU5HKXt2 YXIgeT10aGlzLl9jaGFubmVsRGF0YTtvLnNldENvbnRlbnQodGhpcy5fbWVzc2Fn ZSx3KHkpKTtpZih5PjEwMDApe2lmKHk+bC5nZXQoJ3dhcm5pbmdfY291bnRkb3du X3RocmVzaG9sZF9tc2VjJykpdGhpcy5fd2FybmluZ01zZ0V2ZW50TGlzdGVuZXI9 RXZlbnQubGlzdGVuKHRoaXMuX21lc3NhZ2UsJ2NsaWNrJyxmdW5jdGlvbihldmVu dCl7aWYobi5oYXNDbGFzcyhldmVudC5nZXRUYXJnZXQoKSwnZmJDaGF0UmVjb25u ZWN0TGluaycpKXtpLnJlY29ubmVjdCgpO3JldHVybiBmYWxzZTt9fSk7dGhpcy5f c2hvd1dhcm5pbmdUaW1lb3V0PXNldFRpbWVvdXQodGhpcy5faGFuZGxlQ29ubmVj dGlvbkNoYW5nZS5iaW5kKHRoaXMsaS5SRUNPTk5FQ1RJTkcseS0xMDAwKSwxMDAw LGZhbHNlKTt9fX0sX2dvT25saW5lRXZlbnRMaXN0ZW5lcjpudWxsLF9yZW5kZXJP ZmZsaW5lOmZ1bmN0aW9uKCl7dmFyIHk9J2ZiQ2hhdEdvT25saW5lTGluaycsej10 LkNoYXRDb250cm9sTGFuZ3VhZ2VDaGFuZ2VHSz8iTnlhbGFrYW4gb2Jyb2xhbiI6 IkphZGlrYW4gb25saW5lIixhYT1vLmNyZWF0ZSgnYScse2hyZWY6JyMnLGNsYXNz TmFtZTp5fSx6KSxiYTtpZih0LkNoYXRDb250cm9sTGFuZ3VhZ2VDaGFuZ2VHSyl7

YmE9by50eC5fKCJ7PUdvIG9ubGluZX0gdG8gc2VlIHdobydzIGF2YWlsYWJsZS4i LHsnPUdvIG9ubGluZSc6YWF9KTt9ZWxzZSBiYT1vLnR4Ll8oIns9R28gb25saW5l fSB1bnR1ayBtZW5nZXRhaHVpIHNpYXBhIHlhbmcgb25saW5lIHVudHVrIG1lbmdv YnJvbC4iLHsnPUdvIG9ubGluZSc6YWF9KTtvLnNldENvbnRlbnQodGhpcy5fbWVz c2FnZSxiYSk7dGhpcy5fZ29PbmxpbmVFdmVudExpc3RlbmVyPUV2ZW50Lmxpc3Rl bih0aGlzLl9tZXNzYWdlLCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2lmKG4uaGFz Q2xhc3MoZXZlbnQuZ2V0VGFyZ2V0KCkseSkpe3UubG9nKCdzaWRlYmFyX2dvX29u bGluZScpO20uZ29PbmxpbmUoKTtyZXR1cm4gZmFsc2U7fX0pO30sX3JlbmRlckJs YWNrYmlyZFVwc2VsbDpmdW5jdGlvbigpe28uc2V0Q29udGVudCh0aGlzLl9tZXNz YWdlLGguZ2V0T2ZmbGluZUNvbnRlbnQoKSk7fSxfcmVuZGVyQmxhY2tiaXJkOmZ1 bmN0aW9uKHkpe28uc2V0Q29udGVudCh0aGlzLl9tZXNzYWdlLGguZ2V0QmxhY2ti aXJkQ29udGVudCh5KSk7fSxfY2xlYXI6ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG93 V2FybmluZ1RpbWVvdXQpe2NsZWFyVGltZW91dCh0aGlzLl9zaG93V2FybmluZ1Rp bWVvdXQpO3RoaXMuX3Nob3dXYXJuaW5nVGltZW91dD1udWxsO31pZih0aGlzLl93 YXJuaW5nTXNnRXZlbnRMaXN0ZW5lcil7dGhpcy5fd2FybmluZ01zZ0V2ZW50TGlz dGVuZXIucmVtb3ZlKCk7dGhpcy5fd2FybmluZ01zZ0V2ZW50TGlzdGVuZXI9bnVs bDt9aWYodGhpcy5fZ29PbmxpbmVFdmVudExpc3RlbmVyKXt0aGlzLl9nb09ubGlu ZUV2ZW50TGlzdGVuZXIucmVtb3ZlKCk7dGhpcy5fZ29PbmxpbmVFdmVudExpc3Rl bmVyPW51bGw7fW4ucmVtb3ZlQ2xhc3ModGhpcy5fcm9vdCwndXBzZWxsJyk7bi5y ZW1vdmVDbGFzcyh0aGlzLl9yb290LCdvZmZsaW5lJyk7bi5yZW1vdmVDbGFzcyh0 aGlzLl9yb290LCdibGFja2JpcmQnKTtuLnJlbW92ZUNsYXNzKHRoaXMuX3Jvb3Qs J2Vycm9yJyk7bi5yZW1vdmVDbGFzcyh0aGlzLl9yb290LCdub3RpY2UnKTtvLmVt cHR5KHRoaXMuX21lc3NhZ2UpO30sX3JlbmRlcjpmdW5jdGlvbigpe3RoaXMuX2Ns ZWFyKCk7aWYoaC5zaG91bGRFZHVjYXRlKCkpe2lmKG0uaGFzQmxhY2tiaXJkRW5h YmxlZCgpKXt2YXIgeT1tLmlzT25saW5lKCk/J2JsYWNrYmlyZCc6J3Vwc2VsbCc7 bi5hZGRDbGFzcyh0aGlzLl9yb290LHkpO3RoaXMuX3JlbmRlckJsYWNrYmlyZChx LmdldFZpc2liaWxpdHkoKSk7fWVsc2UgaWYoIW0uaXNPbmxpbmUoKSl7bi5hZGRD bGFzcyh0aGlzLl9yb290LCd1cHNlbGwnKTt0aGlzLl9yZW5kZXJCbGFja2JpcmRV cHNlbGwoKTt9fWVsc2UgaWYoIW0uaXNPbmxpbmUoKSl7bi5hZGRDbGFzcyh0aGlz Ll9yb290LCdvZmZsaW5lJyk7dGhpcy5fcmVuZGVyT2ZmbGluZSgpO31lbHNlIGlm KGkuZGlzY29ubmVjdGVkKCkpe24uYWRkQ2xhc3ModGhpcy5fcm9vdCwnZXJyb3In KTt0aGlzLl9yZW5kZXJDaGFubmVsRGlzY29ubmVjdCgpO31lbHNlIGlmKCFrLm5v dGlmaWVzVXNlck1lc3NhZ2VzKCkpe24uYWRkQ2xhc3ModGhpcy5fcm9vdCwnbm90 aWNlJyk7by5zZXRDb250ZW50KHRoaXMuX21lc3NhZ2UsIlBlbWJlcml0YWh1YW4g dGlkYWsgYWt0aWYgc2VsYW1hIEFuZGEgbWVuZ2d1bmFrYW4ga2xpZW4gbGFpbiB1 bnR1ayBtZW5nb2Jyb2wuIik7fXRoaXMuaW5mb3JtKCd1cGRhdGVkJyk7fX0pO2Uu ZXhwb3J0cz14O30pOwpfX2QoIkNoYXRUeXBlYWhlYWRCZWhhdmlvciIsWyJDaGF0 IiwiQ1NTIiwiRE9NIiwiUmVjdCIsImNvcHlQcm9wZXJ0aWVzIiwidHgiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ2hhdCcpLGg9YignQ1NTJyksaT1i KCdET00nKSxqPWIoJ1JlY3QnKSxrPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbD1iKCd0 eCcpO2Z1bmN0aW9uIG0obil7dGhpcy5fdHlwZWFoZWFkPW47fWsobS5wcm90b3R5 cGUse19zdWJzY3JpcHRpb25zOm51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dmFyIG49 dGhpcy5fdHlwZWFoZWFkO3RoaXMuX3N1YnNjcmlwdGlvbnM9W24uc3Vic2NyaWJl KCdmb2N1cycsZnVuY3Rpb24oKXtuLmdldERhdGEoKS5yZWZyZXNoRGF0YSgpO30p LG4uc3Vic2NyaWJlKCdibHVyJyxmdW5jdGlvbihvKXtuLmdldENvcmUoKS5yZXNl dCgpO30pLG4uc3Vic2NyaWJlKCdyZXNwb25kJyxmdW5jdGlvbihvLHApe2lmKHAu dmFsdWUmJnAudmFsdWU9PT1uLmdldENvcmUoKS5nZXRWYWx1ZSgpKXtpZighcC5y ZXN1bHRzLmxlbmd0aCl7dmFyIHE9aS5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTon bm9SZXN1bHRzJ30sIlRlbWFuIHRpZGFrIGRpdGVtdWthbi4iKTtpLnNldENvbnRl bnQobi5nZXRWaWV3KCkuZ2V0RWxlbWVudCgpLHEpO31oLmFkZENsYXNzKG4uZ2V0 RWxlbWVudCgpLCdoYXNWYWx1ZScpO319KSxuLnN1YnNjcmliZSgncmVzZXQnLGZ1 bmN0aW9uKCl7aC5yZW1vdmVDbGFzcyhuLmdldEVsZW1lbnQoKSwnaGFzVmFsdWUn KTt9KSxuLnN1YnNjcmliZSgnc2VsZWN0JyxmdW5jdGlvbihvLHApe2cub3BlblRh YihwLnNlbGVjdGVkLnVpZCxwLnNlbGVjdGVkLnRleHQscC5zZWxlY3RlZC50eXBl LCd0eXBlYWhlYWQnKTt9KSxuLnN1YnNjcmliZSgnaGlnaGxpZ2h0JyxmdW5jdGlv bihvLHApe2lmKHAuaW5kZXg+PTApe3ZhciBxPW4uZ2V0VmlldygpLmdldEl0ZW1z KClbcC5pbmRleF07aWYocSl7dmFyIHI9bmV3IGoocSkscz1xLm9mZnNldFBhcmVu dCx0PXIuYm91bmRXaXRoaW4obmV3IGoocykpLmdldFBvc2l0aW9uVmVjdG9yKCk7 ci5nZXRQb3NpdGlvblZlY3RvcigpLnN1Yih0KS5zY3JvbGxFbGVtZW50Qnkocyk7 fX19KV07fSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9ucy5m

b3JFYWNoKGZ1bmN0aW9uKG4pe3RoaXMuX3R5cGVhaGVhZC51bnN1YnNjcmliZShu KTt9LmJpbmQodGhpcykpO3RoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbDt9fSk7ZS5l eHBvcnRzPW07fSk7Cl9fZCgiQ2hhdFR5cGVhaGVhZENvcmUiLFsiZXZlbnQtZXh0 ZW5zaW9ucyIsImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJDbGFzcyIsIktleXMiLCJU eXBlYWhlYWRDb3JlIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO2IoJ2Z1bmN0aW9uLWV4dGVuc2lv bnMnKTt2YXIgZz1iKCdDbGFzcycpLGg9YignS2V5cycpLGk9YignVHlwZWFoZWFk Q29yZScpLGo9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBrKGwpe3RoaXMu cGFyZW50LmNvbnN0cnVjdCh0aGlzLGwpO31nLmV4dGVuZChrLGkpO2ooay5wcm90 b3R5cGUse2hhbmRsZVRhYjpiYWdvZmhvbGRpbmcsa2V5ZG93bjpmdW5jdGlvbihl dmVudCl7dmFyIGw9RXZlbnQuZ2V0S2V5Q29kZShldmVudCk7aWYobD09PWguRVND KXt0aGlzLnJlc2V0LnNoaWVsZCh0aGlzKS5kZWZlcigpO3JldHVybiBldmVudC5r aWxsKCk7fXJldHVybiB0aGlzLnBhcmVudC5rZXlkb3duKGV2ZW50KTt9fSk7ZS5l eHBvcnRzPWs7fSk7Cl9fZCgiQ2hhdFR5cGVhaGVhZERhdGFTb3VyY2UiLFsiQXJi aXRlciIsIkF2YWlsYWJsZUxpc3RDb25zdGFudHMiLCJDbGFzcyIsIkRhdGFTb3Vy Y2UiLCJFbnYiLCJKU0xvZ2dlciIsIk9yZGVyZWRGcmllbmRzTGlzdCIsIlJ1biIs IlNob3J0UHJvZmlsZXMiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBdmFpbGFibGVMaXN0Q29u c3RhbnRzJyksaT1iKCdDbGFzcycpLGo9YignRGF0YVNvdXJjZScpLGs9YignRW52 JyksbD1iKCdKU0xvZ2dlcicpLG09YignT3JkZXJlZEZyaWVuZHNMaXN0Jyksbj1i KCdSdW4nKSxvPWIoJ1Nob3J0UHJvZmlsZXMnKSxwPWIoJ2NvcHlQcm9wZXJ0aWVz Jyk7ZnVuY3Rpb24gcShyKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxyKTt0 aGlzLnBlcnNpc3RPblJlZnJlc2g9ci5wZXJzaXN0T25SZWZyZXNoIT09ZmFsc2U7 dGhpcy5zaG93T2ZmbGluZVVzZXJzPSEhci5zaG93T2ZmbGluZVVzZXJzO3RoaXMu X2pzbG9nPWwuY3JlYXRlKCdjaGF0X3R5cGVhaGVhZCcpO3RoaXMuX2pzbG9nLmxv ZygnY3JlYXRlZCcpO31pLmV4dGVuZChxLGopO3AocS5wcm90b3R5cGUse2luaXQ6 ZnVuY3Rpb24oKXt0aGlzLl9qc2xvZy5sb2coJ2luaXQnKTt0aGlzLnBhcmVudC5p bml0KCk7dmFyIHI9Zy5zdWJzY3JpYmUoaC5PTl9BVkFJTEFCSUxJVFlfQ0hBTkdF RCx0aGlzLl91cGRhdGUuc2hpZWxkKHRoaXMpKTt0aGlzLl91cGRhdGUoKTtpZigh dGhpcy5wZXJzaXN0T25SZWZyZXNoKW4ub25MZWF2ZShmdW5jdGlvbigpe3IudW5z dWJzY3JpYmUoKTt9KTt9LGJvb3RzdHJhcDpmdW5jdGlvbigpe3RoaXMuX2pzbG9n LmxvZygnYm9vdHN0cmFwJyk7dGhpcy5wYXJlbnQuYm9vdHN0cmFwKCk7aWYodGhp cy5zaG93T2ZmbGluZVVzZXJzKXt0aGlzLl9qc2xvZy5sb2coJ3Nob3dfb2ZmbGlu ZV91c2VycycpO3RoaXMuX2pzbG9nLmxvZygnZW5zdXJlZF9zaG9ydF9wcm9maWxl cycpO2lmKG8uaGFzQWxsKCkpe3RoaXMuX3VwZGF0ZSgpO31lbHNle3RoaXMuX2pz bG9nLmxvZygnZmV0Y2hfYWxsX3Nob3J0X3Byb2ZpbGVzJyk7by5mZXRjaEFsbCgp O3RoaXMuaW5mb3JtKCdhY3Rpdml0eScse2FjdGl2aXR5OnRydWV9KTt2YXIgcj1v LnN1YnNjcmliZSgndXBkYXRlZCcsZnVuY3Rpb24oKXt0aGlzLmluZm9ybSgnYWN0 aXZpdHknLHthY3Rpdml0eTpmYWxzZX0pO3RoaXMuX3VwZGF0ZSgpO30uYmluZCh0 aGlzKSk7aWYoIXRoaXMucGVyc2lzdE9uUmVmcmVzaCluLm9uTGVhdmUoZnVuY3Rp b24oKXtvLnVuc3Vic2NyaWJlKHIpO30pO319fSxfdXBkYXRlOmZ1bmN0aW9uKCl7 ZChbJ0F2YWlsYWJsZUxpc3QnXSxmdW5jdGlvbihyKXt2YXIgcz10aGlzLnZhbHVl O3RoaXMuZGlydHkoKTt2YXIgdD1vLmdldENhY2hlZFByb2ZpbGVJRHMoKSx1PXQu ZmlsdGVyKGZ1bmN0aW9uKHcpe3ZhciB4PW8uZ2V0Tm93KHcpO3JldHVybiB4LnR5 cGU9PT0nZnJpZW5kJzt9KTt1LnNvcnQobS5jb21wYXJlKTt2YXIgdj1bXTt1LmZv ckVhY2goZnVuY3Rpb24odyl7aWYodz09ay51c2VyKXJldHVybjt2YXIgeD1yLmdl dCh3KTtpZighdGhpcy5zaG93T2ZmbGluZVVzZXJzJiZ4IT09ci5BQ1RJVkUpcmV0 dXJuO3ZhciB5PW8uZ2V0Tm93KHcpO3YucHVzaCh7dWlkOncsdGV4dDp5Lm5hbWUs dG9rZW5zOnkuYWRkaXRpb25hbE5hbWUsbG9jYWxpemVkX3RleHQ6eS5uYW1lLGFk ZGl0aW9uYWxfdGV4dDp5LmFkZGl0aW9uYWxOYW1lLHBob3RvOnkudGh1bWJTcmMs YXZhaWxhYmlsaXR5OngsdHlwZTp5LnR5cGV9KTt9LmJpbmQodGhpcykpO2lmKHYu bGVuZ3RoKXRoaXMuYWRkRW50cmllcyh2KTt0aGlzLnZhbHVlPXM7aWYocyl0aGlz LnJlc3BvbmQocyx0aGlzLmJ1aWxkVWlkcyhzLFtdLHRoaXMuX2V4Y2x1c2lvbnMp LHRydWUpO30uYmluZCh0aGlzKSk7fSxyZWZyZXNoRGF0YTpmdW5jdGlvbigpe2Qo WydBdmFpbGFibGVMaXN0J10sZnVuY3Rpb24ocil7ci51cGRhdGUoKTt9LmJpbmQo dGhpcykpO319KTtlLmV4cG9ydHM9cTt9KTsKX19kKCJDaGF0VHlwZWFoZWFkUmVu ZGVyZXIiLFsiQXZhaWxhYmxlTGlzdENvbnN0YW50cyIsIkRPTSIsIlByZXNlbmNl UHJpdmFjeSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBdmFpbGFi bGVMaXN0Q29uc3RhbnRzJyksaD1iKCdET00nKSxpPWIoJ1ByZXNlbmNlUHJpdmFj eScpO2Z1bmN0aW9uIGooayxsKXt2YXIgbT0nb2ZmbGluZSc7c3dpdGNoKGsuYXZh

aWxhYmlsaXR5KXtjYXNlIGcuQUNUSVZFOm09J2FjdGl2ZSc7YnJlYWs7Y2FzZSBn LklETEU6bT0naWRsZSc7YnJlYWs7Y2FzZSBnLk1PQklMRTptPSdtb2JpbGUnO2Jy ZWFrO31pZighaS5hbGxvd3Moay51aWQpKW09J2ludmlzJzt2YXIgbj1bXTtpZihr LnBob3RvKW4ucHVzaChoLmNyZWF0ZSgnaW1nJyx7YWx0OicnLHNyYzprLnBob3Rv fSkpO2lmKGsudGV4dCluLnB1c2goaC5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6 J3RleHQnfSxbay50ZXh0XSkpO24ucHVzaChoLmNyZWF0ZSgnaScse2NsYXNzTmFt ZTptfSkpO3JldHVybiBoLmNyZWF0ZSgnbGknLHtjbGFzc05hbWU6J2NsZWFyZml4 ICcrbX0sbik7fWUuZXhwb3J0cz1qO30pOwpfX2QoIkNoYXRTaWRlYmFyIixbIkpT WERPTSIsImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwiQXJiaXRlck1peGlu IiwiQXN5bmNSZXF1ZXN0IiwiQ2hhdENvbmZpZyIsIkNoYXRIb3ZlcmNhcmQiLCJD aGF0T3B0aW9ucyIsIkNoYXRTaWRlYmFyU2hlZXQiLCJDU1MiLCJET00iLCJET01E aW1lbnNpb25zIiwiRkJEZXNrdG9wUGx1Z2luIiwiSlNMb2dnZXIiLCJPcmRlcmVk RnJpZW5kc0xpc3QiLCJQcmVzZW5jZVByaXZhY3kiLCJTY3JvbGxhYmxlQXJlYSIs IlN0eWxlIiwiVmlld3BvcnRCb3VuZHMiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0 ZUFycmF5RnJvbSIsImRlYm91bmNlIiwiQ2hhdE9yZGVyZWRMaXN0IiwiQ2hhdFR5 cGVhaGVhZEJlaGF2aW9yIiwiQ2hhdFR5cGVhaGVhZENvcmUiLCJDaGF0VHlwZWFo ZWFkRGF0YVNvdXJjZSIsIkNoYXRUeXBlYWhlYWRSZW5kZXJlciIsIlR5cGVhaGVh ZCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdKU1hET00nKSxnPWIo J0pTWERPTScpO2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgaD1iKCdBcmJpdGVy JyksaT1iKCdBcmJpdGVyTWl4aW4nKSxqPWIoJ0FzeW5jUmVxdWVzdCcpLGs9Yign Q2hhdENvbmZpZycpLGw9YignQ2hhdEhvdmVyY2FyZCcpLG09YignQ2hhdE9wdGlv bnMnKSxuPWIoJ0NoYXRTaWRlYmFyU2hlZXQnKSxvPWIoJ0NTUycpLHA9YignRE9N JykscT1iKCdET01EaW1lbnNpb25zJykscj1iKCdGQkRlc2t0b3BQbHVnaW4nKSxz PWIoJ0pTTG9nZ2VyJyksdD1iKCdPcmRlcmVkRnJpZW5kc0xpc3QnKSx1PWIoJ1By ZXNlbmNlUHJpdmFjeScpLHY9YignU2Nyb2xsYWJsZUFyZWEnKSx3PWIoJ1N0eWxl JykseD1iKCdWaWV3cG9ydEJvdW5kcycpLHk9YignY29weVByb3BlcnRpZXMnKSx6 PWIoJ2NyZWF0ZUFycmF5RnJvbScpLGFhPWIoJ2RlYm91bmNlJyk7YignQ2hhdE9y ZGVyZWRMaXN0Jyk7YignQ2hhdFR5cGVhaGVhZEJlaGF2aW9yJyk7YignQ2hhdFR5 cGVhaGVhZENvcmUnKTtiKCdDaGF0VHlwZWFoZWFkRGF0YVNvdXJjZScpO2IoJ0No YXRUeXBlYWhlYWRSZW5kZXJlcicpO2IoJ1R5cGVhaGVhZCcpO3ZhciBiYSxjYT1m YWxzZSxkYT1mYWxzZSxlYT1mYWxzZSxmYT1mYWxzZSxnYT1mYWxzZSxoYT1mYWxz ZSxpYSxqYSxrYSxsYSxtYT1udWxsLG5hPXMuY3JlYXRlKCdjaGF0X3NpZGViYXIn KSxvYT0zMjtmdW5jdGlvbiBwYSgpe28ucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LCdzaWRlYmFyTW9kZScpO2lmKCFnYXx8IXZhLmlzVmlzaWJs ZSgpKXJldHVybjtmYT1mYWxzZTttYT1udWxsO28uaGlkZShqYSk7aWEuaGlkZSgp O2thLmdldENvcmUoKS5yZXNldCgpO25hLnJhdGUoJ3NpZGViYXJfaGlkZScsZ2Ep O3ZhLmluZm9ybSgnc2lkZWJhci9oaWRlJyx2YSk7aC5pbmZvcm0oJ3NpZGViYXIv aGlkZScsdmEpO2guaW5mb3JtKCdyZWZsb3cnKTt9ZnVuY3Rpb24gcWEoKXt2YXIg d2E9dmEuc2hvdWxkU2hvd1NpZGViYXIoKTtvLmNvbmRpdGlvbkNsYXNzKGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCwnc2lkZWJhckNhcGFibGUnLHdhKTtpZih2YS5p c0VuYWJsZWQoKSYmd2Epe3JhKCk7dmFyIHhhPWxhLmhlaWdodDt6KGphLmNoaWxk Tm9kZXMpLmZvckVhY2goZnVuY3Rpb24oeWEpe2lmKHlhIT09YmEpeGEtPXEuZ2V0 RWxlbWVudERpbWVuc2lvbnMoeWEpLmhlaWdodDt9KTt4YT1NYXRoLm1heCgwLHhh KTt3LnNldChiYSwnaGVpZ2h0Jyx4YSsncHgnKTt0aGlzLl9tYXhJdGVtcz1NYXRo LmZsb29yKCh4YS04KS9vYSk7aWEuc2V0TnVtVG9wRnJpZW5kcyh0aGlzLl9tYXhJ dGVtcyk7a2EuZ2V0RGF0YSgpLnNldE1heFJlc3VsdHModGhpcy5fbWF4SXRlbXMp O3ZhLmluZm9ybSgnc2lkZWJhci9yZXNpemVkJyx2YSk7aC5pbmZvcm0oJ3NpZGVi YXIvcmVzaXplZCcsdmEpO2guaW5mb3JtKCdyZWZsb3cnKTt9ZWxzZSBwYSgpO2lm KCFnYSl7dWEoKTtnYT10cnVlO31tYT1udWxsO31mdW5jdGlvbiByYSgpe2lmKHZh LmlzVmlzaWJsZSgpKXJldHVybjtmYT10cnVlO21hPW51bGw7by5zaG93KGphKTtv LmFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnc2lkZWJhck1vZGUn KTtpYS5zaG93KCk7bmEucmF0ZSgnc2lkZWJhcl9zaG93JyxnYSk7dmEuaW5mb3Jt KCdzaWRlYmFyL3Nob3cnLHZhKTtoLmluZm9ybSgnc2lkZWJhci9zaG93Jyx2YSk7 fWZ1bmN0aW9uIHNhKCl7bS5zZXRTZXR0aW5nKCdzaWRlYmFyX21vZGUnLHZhLmlz RW5hYmxlZCgpLCdzaWRlYmFyJyk7bmV3IGooJy9hamF4L2NoYXQvc2V0dGluZ3Mu cGhwJykuc2V0SGFuZGxlcihiYWdvZmhvbGRpbmcpLnNldEVycm9ySGFuZGxlcihi YWdvZmhvbGRpbmcpLnNldERhdGEoe3NpZGViYXJfbW9kZTp2YS5pc0VuYWJsZWQo KX0pLnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZW5kKCk7fWZ1 bmN0aW9uIHRhKCl7cmV0dXJuIHQuZ2V0TGlzdCgpLmxlbmd0aDw9ay5nZXQoJ3Np ZGViYXIubWluX2ZyaWVuZHMnKTt9ZnVuY3Rpb24gdWEoKXt2YXIgd2E9dHJ1ZTtp

ZighdmEuaXNFbmFibGVkKCkpe25hLmxvZygnc3RhdGVfbm90X2VuYWJsZWQnKTt3 YT1mYWxzZTt9aWYoIXZhLmlzVmlld3BvcnRDYXBhYmxlKCkpe25hLmxvZygnc3Rh dGVfbm90X3Nob3duX3ZpZXdwb3J0Jyk7d2E9ZmFsc2U7fWlmKGVhKXtuYS5sb2co J3N0YXRlX25vdF9zaG93bl9oaWRkZW4nKTt3YT1mYWxzZTt9aWYodGEoKSl7bmEu bG9nKCdzdGF0ZV9ub3Rfc2hvd25fbnVtX2ZyaWVuZHMnKTt3YT1mYWxzZTt9aWYo ci5zaG91bGRTdXBwcmVzc1NpZGViYXIoKSl7bmEubG9nKCdzdGF0ZV9ub3Rfc2hv d25fZmJkZXNrdG9wJyk7d2E9ZmFsc2U7fW5hLmxvZyh3YT8nc3RhdGVfc2hvd24n OidzdGF0ZV9ub3Rfc2hvd24nKTt9dmFyIHZhPXtpbml0OmZ1bmN0aW9uKHdhLHhh LHlhKXt2YS5pbml0PWJhZ29maG9sZGluZztoYT10cnVlO2phPXdhO2lhPXhhO2th PXlhO2JhPXAuZmluZCh3YSwnZGl2LmZiQ2hhdFNpZGViYXJCb2R5Jyk7aWYoay5n ZXQoJ2NoYXRfc2lkZWJhcl9ob3ZlcmNhcmRzJykpbmV3IGwoeGEpO3ZhciB6YT1u ZXcgbih3YSk7emEuc3Vic2NyaWJlKCd1cGRhdGVkJyxxYSk7aC5zdWJzY3JpYmUo J3NpZGViYXIvaW52YWxpZGF0ZScscWEpO3hhLnNldFNjcm9sbENvbnRhaW5lcihw LmZpbmQoYmEsJ2Rpdi51aVNjcm9sbGFibGVBcmVhV3JhcCcpKTt4YS5zdWJzY3Jp YmUoWydyZW5kZXInLCdzaG93JywnaGlkZSddLGFhKGZ1bmN0aW9uKCl7dmFyIGFi PXhhLmdldFJvb3QoKSxiYj12LmdldEluc3RhbmNlKGFiKTtiYiYmYmIuYWRqdXN0 R3JpcHBlcigpO30pKTtFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLHFhKTto LnN1YnNjcmliZSgnY2hhdC9vcHRpb24tY2hhbmdlZCcsZnVuY3Rpb24oYWIsYmIp e2lmKGJiLm5hbWU9PSJzaWRlYmFyX21vZGUiKXtkYT0hIW0uZ2V0U2V0dGluZygn c2lkZWJhcl9tb2RlJyk7cWEoKTt9fSk7eWEuc3Vic2NyaWJlKFsncmVzcG9uZCcs J3Jlc2V0J10sZnVuY3Rpb24oYWIsYmIpe2lmKGZhKWlmKGJiJiZiYi52YWx1ZSYm YmIudmFsdWU9PT15YS5nZXRDb3JlKCkuZ2V0VmFsdWUoKSYmeWEuZ2V0Vmlldygp LmlzVmlzaWJsZSgpKXtpYS5oaWRlKCk7fWVsc2UgaWEuc2hvdygpO30pO3lhLmdl dERhdGEoKS5zdWJzY3JpYmUoJ2JlZm9yZVF1ZXJ5JyxxYSk7aC5zdWJzY3JpYmUo J2J1ZGR5bGlzdC1udWIvaW5pdGlhbGl6ZWQnLGZ1bmN0aW9uKGFiLGJiKXtFdmVu dC5saXN0ZW4oYmIuZ2V0QnV0dG9uKCksJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7 dmEuZW5hYmxlKCk7cmV0dXJuICF2YS5zaG91bGRTaG93U2lkZWJhcigpO30pO30p O2RhPSEhbS5nZXRTZXR0aW5nKCdzaWRlYmFyX21vZGUnKTt1LnN1YnNjcmliZSgn cHJpdmFjeS11c2VyLXByZXNlbmNlLWNoYW5nZWQnLHFhKTtxYSgpO3guYWRkUmln aHQodmEuZ2V0VmlzaWJsZVdpZHRoKTt2YS5pbmZvcm0oJ3NpZGViYXIvaW5pdGlh bGl6ZWQnLHZhLGguQkVIQVZJT1JfUEVSU0lTVEVOVCk7aC5pbmZvcm0oJ3NpZGVi YXIvaW5pdGlhbGl6ZWQnLHZhLGguQkVIQVZJT1JfUEVSU0lTVEVOVCk7fSxpc0lu aXRpYWxpemVkOmZ1bmN0aW9uKCl7cmV0dXJuIGdhO30sZGlzYWJsZTpmdW5jdGlv bigpe2lmKCF2YS5pc0VuYWJsZWQoKSlyZXR1cm47ZGE9ZmFsc2U7c2EoKTtwYSgp O30sZW5hYmxlOmZ1bmN0aW9uKCl7aWYodmEuaXNFbmFibGVkKCkpcmV0dXJuO2Rh PXRydWU7c2EoKTtxYSgpOyFmdW5jdGlvbigpe2lmKHZhLmlzVmlzaWJsZSgpKWth LmdldENvcmUoKS5nZXRFbGVtZW50KCkuZm9jdXMoKTt9LmRlZmVyKCk7fSxlbnN1 cmVMb2FkZWQ6ZnVuY3Rpb24oKXtpZihoYSlyZXR1cm47ZChbJ1VJUGFnZWxldCdd LGZ1bmN0aW9uKHdhKXt2YXIgeGE9Zy5kaXYoe2lkOiJwYWdlbGV0X3NpZGViYXIi fSk7cC5hcHBlbmRDb250ZW50KGRvY3VtZW50LmJvZHkseGEpO3dhLmxvYWRGcm9t RW5kcG9pbnQoJ1NpZGViYXJQYWdlbGV0JywncGFnZWxldF9zaWRlYmFyJyk7fSk7 aGE9dHJ1ZTt9LGhpZGU6ZnVuY3Rpb24oKXtpZihlYSlyZXR1cm47ZWE9dHJ1ZTtw YSgpO30sdW5oaWRlOmZ1bmN0aW9uKCl7aWYoIWVhKXJldHVybjtlYT1mYWxzZTtx YSgpO30sZ2V0Qm9keTpmdW5jdGlvbigpe3JldHVybiBiYTt9LGdldFJvb3Q6ZnVu Y3Rpb24oKXtyZXR1cm4gamE7fSxnZXRWaXNpYmxlV2lkdGg6ZnVuY3Rpb24oKXtp ZighZmF8fCFqYSlyZXR1cm4gMDtpZihtYT09PW51bGwpbWE9amEub2Zmc2V0V2lk dGg7cmV0dXJuIG1hO30saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGRhO30s aXNWaWV3cG9ydENhcGFibGU6ZnVuY3Rpb24oKXtsYT1xLmdldFZpZXdwb3J0V2l0 aG91dFNjcm9sbGJhckRpbWVuc2lvbnMoKTt2YXIgd2E9ay5nZXQoJ3NpZGViYXIu bWluaW11bV93aWR0aCcpO2lmKGNhKXdhPWsuZ2V0KCdzaWRlYmFyLm1pbmltdW1f d2lkdGhfd2lkZV9jb250ZW50Jyk7cmV0dXJuIGxhLndpZHRoPndhO30sc2hvdWxk U2hvd1NpZGViYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdmEuaXNWaWV3cG9ydENhcGFi bGUoKSYmIWVhJiYhdGEoKSYmIXIuc2hvdWxkU3VwcHJlc3NTaWRlYmFyKCk7fSxp c1Zpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gZmE7fSxyZXNpemU6cWEsdG9nZ2xl OmZ1bmN0aW9uKCl7dmEuaXNFbmFibGVkKCk/dmEuZGlzYWJsZSgpOnZhLmVuYWJs ZSgpO30sc2V0SGFzV2lkZUNvbnRlbnQ6ZnVuY3Rpb24od2Epe2lmKGNhIT13YSl7 Y2E9d2E7cWEoKTt9fX07eSh2YSxpKTtlLmV4cG9ydHM9dmE7fSk7Cl9fZCgiVmlk ZW9DYWxsaW5nVG91ciIsWyJldmVudC1leHRlbnNpb25zIiwiQXJiaXRlciIsIkFy Yml0ZXJNaXhpbiIsIkNoYXQiLCJDaGF0U2lkZWJhciIsIkNoYXRWaXNpYmlsaXR5 IiwiQ1NTIiwiRE9NIiwiUHJlc2VuY2VQcml2YWN5IiwiUnVuIiwiVG9nZ2xlciIs

IlZlY3RvciIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdB cmJpdGVyTWl4aW4nKSxpPWIoJ0NoYXQnKSxqPWIoJ0NoYXRTaWRlYmFyJyksaz1i KCdDaGF0VmlzaWJpbGl0eScpLGw9YignQ1NTJyksbT1iKCdET00nKSxuPWIoJ1By ZXNlbmNlUHJpdmFjeScpLG89YignUnVuJykscD1iKCdUb2dnbGVyJykscT1iKCdW ZWN0b3InKSxyPWIoJ2NvcHlQcm9wZXJ0aWVzJykscyx0LHUsdix3PVtdLHg9ZnVu Y3Rpb24oKXt9O2Z1bmN0aW9uIHkoKXtpZihqLmlzVmlzaWJsZSgpKXt6KCk7fWVs c2UgaWYodSlhYSgpO31mdW5jdGlvbiB6KCl7cy5zZXRDb250ZXh0KHQuZ2V0Qm9k eSgpKTtiYSgpO3Muc2hvdygpO2NhKCk7fWZ1bmN0aW9uIGFhKCl7aWYoIXYpdj1w LmNyZWF0ZUluc3RhbmNlKHUuZ2V0Um9vdCgpKTt2YXIgZmE9bS5zY3J5KHUuZ2V0 Um9vdCgpLCdkaXYuZmJOdWJGbHlvdXQnKVswXTtpZihmYSl7cy5zZXRDb250ZXh0 KGZhKTtiYSgpO3Muc2hvdygpO2NhKCk7fX1mdW5jdGlvbiBiYSgpe3ZhciBmYT1x LmdldEVsZW1lbnREaW1lbnNpb25zKHMuZ2V0Q29udGV4dCgpKS55O3Muc2V0T2Zm c2V0WShmYSouNik7cy51cGRhdGVQb3NpdGlvbigpO31mdW5jdGlvbiBjYSgpe2lm KHUpdy5wdXNoKHUuc3Vic2NyaWJlKCdoaWRlJyxmdW5jdGlvbigpe2RhKCk7aWYo IWouaXNWaXNpYmxlKCkpcy5oaWRlKCk7fSksdS5zdWJzY3JpYmUoJ3Nob3cnLGZ1 bmN0aW9uKCl7cy5zaG93KCk7fSksdS5zdWJzY3JpYmUoJ3Jlc2l6ZScsZnVuY3Rp b24oKXtiYSgpO3MudXBkYXRlUG9zaXRpb24oKTt9KSk7dy5wdXNoKGcuc3Vic2Ny aWJlKCdzaWRlYmFyL3Nob3cnLHopLGcuc3Vic2NyaWJlKCdzaWRlYmFyL2hpZGUn LGFhKSxnLnN1YnNjcmliZSgnc2lkZWJhci9yZXNpemVkJyxiYSkpO31mdW5jdGlv biBkYSgpe2lmKHYpe3Yuc2V0U3RpY2t5KGZhbHNlKTt2PW51bGw7fX1mdW5jdGlv biBlYSgpe3doaWxlKHcubGVuZ3RoKXcucG9wKCkudW5zdWJzY3JpYmUoKTtpZih1 KWRhKCk7cy5oaWRlKCk7bC5zaG93KCdmYlZpZGVvQ2FsbGluZ0dldFN0YXJ0ZWQn KTt9cih4LGgse3N0YXJ0OmZ1bmN0aW9uKGZhKXtzPWZhO2wuaGlkZSgnZmJWaWRl b0NhbGxpbmdHZXRTdGFydGVkJyk7ay5nb09ubGluZShmdW5jdGlvbigpe3cucHVz aChuLnN1YnNjcmliZSgncHJpdmFjeS11c2VyLXByZXNlbmNlLWNoYW5nZWQnLGVh KSk7by5vbkxlYXZlKGVhKTtpLm9wZW5CdWRkeUxpc3QoKTt2YXIgZ2E9bnVsbDt3 LnB1c2goai5zdWJzY3JpYmUoJ3NpZGViYXIvaW5pdGlhbGl6ZWQnLGZ1bmN0aW9u KGhhLGlhKXt0PWlhO2NsZWFyVGltZW91dChnYSk7Z2E9eS5kZWZlcigpO30pLHgu c3Vic2NyaWJlKCd2aWRlb2NhbGxpbmd0b3VyL2VuZCcsZWEpKTt3LnB1c2goZy5z dWJzY3JpYmUoJ2J1ZGR5bGlzdC1udWIvaW5pdGlhbGl6ZWQnLGZ1bmN0aW9uKGhh LGlhKXt1PWlhO2NsZWFyVGltZW91dChnYSk7Z2E9eS5kZWZlcigpO30pKTt9KTt4 LmluZm9ybSgndmlkZW9jYWxsaW5ndG91ci9zdGFydCcpO319KTtlLmV4cG9ydHM9 eDt9KTsKX19kKCJsZWdhY3k6Q2hhdFR5cGVhaGVhZEJlaGF2aW9yIixbIkNoYXRU eXBlYWhlYWRCZWhhdmlvciJdLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIoJ0No YXRUeXBlYWhlYWRCZWhhdmlvcicpO2lmKCFhLlR5cGVhaGVhZEJlaGF2aW9ycylh LlR5cGVhaGVhZEJlaGF2aW9ycz17fTthLlR5cGVhaGVhZEJlaGF2aW9ycy5jaGF0 VHlwZWFoZWFkPWZ1bmN0aW9uKGYpe2YuZW5hYmxlQmVoYXZpb3IoZSk7fTt9LDMp OwpfX2QoIlJhbmdlZENhbGxiYWNrTWFuYWdlciIsWyJDYWxsYmFja01hbmFnZXJD b250cm9sbGVyIiwiY29weVByb3BlcnRpZXMiLCJjcmVhdGVPYmplY3RGcm9tIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0NhbGxiYWNrTWFuYWdlckNv bnRyb2xsZXInKSxoPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaT1iKCdjcmVhdGVPYmpl Y3RGcm9tJyksaj1mdW5jdGlvbihrLGwsbSl7dGhpcy5fcmVzb3VyY2VzPVtdO3Ro aXMuX3JlYWNoZWRFbmRPZkFycmF5PWZhbHNlO3RoaXMuX2V4aXN0aW5nSURzPXt9 O3RoaXMuX2NvbnRyb2xsZXI9bmV3IGcodGhpcy5fY29uc3RydWN0Q2FsbGJhY2tB cmcuYmluZCh0aGlzKSk7dGhpcy5fZ2V0VmFsdWVIYW5kbGVyPWs7dGhpcy5fY29t cGFyZVZhbHVlc0hhbmRsZXI9bDt0aGlzLl9za2lwT25TdHJpY3RIYW5kbGVyPW07 fTtoKGoucHJvdG90eXBlLHtleGVjdXRlT3JFbnF1ZXVlOmZ1bmN0aW9uKGssbCxt LG4pe3JldHVybiB0aGlzLl9jb250cm9sbGVyLmV4ZWN1dGVPckVucXVldWUoe3N0 YXJ0OmssbGltaXQ6bH0sbSx7c3RyaWN0OiEhbn0pO30sdW5zdWJzY3JpYmU6ZnVu Y3Rpb24oayl7dGhpcy5fY29udHJvbGxlci51bnN1YnNjcmliZShrKTt9LGdldFVu YXZhaWxhYmxlUmVzb3VyY2VzOmZ1bmN0aW9uKGspe3ZhciBsPXRoaXMuX2NvbnRy b2xsZXIuZ2V0UmVxdWVzdChrKSxtPVtdO2lmKGwmJiF0aGlzLl9yZWFjaGVkRW5k T2ZBcnJheSl7dmFyIG49bC5yZXF1ZXN0LG89dGhpcy5fZmlsdGVyRm9yU3RyaWN0 UmVzdWx0cyhsLm9wdGlvbnMpLHA9bi5zdGFydCtuLmxpbWl0O2Zvcih2YXIgcT1v Lmxlbmd0aDtxPHA7cSsrKW0ucHVzaChxKTt9cmV0dXJuIG07fSxhZGRSZXNvdXJj ZXM6ZnVuY3Rpb24oayl7ay5mb3JFYWNoKGZ1bmN0aW9uKGwpe2lmKCF0aGlzLl9l eGlzdGluZ0lEc1tsXSl7dGhpcy5fZXhpc3RpbmdJRHNbbF09dHJ1ZTt0aGlzLl9y ZXNvdXJjZXMucHVzaChsKTt9fS5iaW5kKHRoaXMpKTt0aGlzLnJlc29ydFJlc291 cmNlcygpO3RoaXMuX2NvbnRyb2xsZXIucnVuUG9zc2libGVDYWxsYmFja3MoKTt9

LGFkZFJlc291cmNlc1dpdGhvdXRTb3J0aW5nOmZ1bmN0aW9uKGssbCl7dmFyIG09 dGhpcy5fcmVzb3VyY2VzLnNsaWNlKDAsbCk7bT1tLmNvbmNhdChrKTttPW0uY29u Y2F0KHRoaXMuX3Jlc291cmNlcy5zbGljZShsKSk7dGhpcy5fcmVzb3VyY2VzPW07 aCh0aGlzLl9leGlzdGluZ0lEcyxpKGssdHJ1ZSkpO3RoaXMuX2NvbnRyb2xsZXIu cnVuUG9zc2libGVDYWxsYmFja3MoKTt9LHJlbW92ZVJlc291cmNlczpmdW5jdGlv bihrKXtrLmZvckVhY2goZnVuY3Rpb24obCl7aWYodGhpcy5fZXhpc3RpbmdJRHNb bF0pe3RoaXMuX2V4aXN0aW5nSURzW2xdPWZhbHNlO3RoaXMuX3Jlc291cmNlcy5y ZW1vdmUobCk7fX0uYmluZCh0aGlzKSk7fSxyZW1vdmVBbGxSZXNvdXJjZXM6ZnVu Y3Rpb24oKXt0aGlzLl9yZXNvdXJjZXM9W107dGhpcy5fZXhpc3RpbmdJRHM9e307 fSxyZXNvcnRSZXNvdXJjZXM6ZnVuY3Rpb24oKXt0aGlzLl9yZXNvdXJjZXM9dGhp cy5fcmVzb3VyY2VzLnNvcnQoZnVuY3Rpb24oayxsKXtyZXR1cm4gdGhpcy5fY29t cGFyZVZhbHVlc0hhbmRsZXIodGhpcy5fZ2V0VmFsdWVIYW5kbGVyKGspLHRoaXMu X2dldFZhbHVlSGFuZGxlcihsKSk7fS5iaW5kKHRoaXMpKTt9LHNldFJlYWNoZWRF bmRPZkFycmF5OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3JlYWNoZWRFbmRPZkFycmF5 KXt0aGlzLl9yZWFjaGVkRW5kT2ZBcnJheT10cnVlO3RoaXMuX2NvbnRyb2xsZXIu cnVuUG9zc2libGVDYWxsYmFja3MoKTt9fSxoYXNSZWFjaGVkRW5kT2ZBcnJheTpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFjaGVkRW5kT2ZBcnJheTt9LGhhc1Jl c291cmNlOmZ1bmN0aW9uKGspe3JldHVybiB0aGlzLl9leGlzdGluZ0lEc1trXTt9 LGdldFJlc291cmNlQXRJbmRleDpmdW5jdGlvbihrKXtyZXR1cm4gdGhpcy5fcmVz b3VyY2VzW2tdO30sZ2V0QWxsUmVzb3VyY2VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3Jlc291cmNlcy5jb25jYXQoKTt9LGdldEN1cnJlbnRBcnJheVNpemU6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzb3VyY2VzLmxlbmd0aDt9LF9maWx0ZXJG b3JTdHJpY3RSZXN1bHRzOmZ1bmN0aW9uKGspe3ZhciBsPXRoaXMuX3Jlc291cmNl cztpZihrJiZrLnN0cmljdCYmdGhpcy5fc2tpcE9uU3RyaWN0SGFuZGxlcilsPWwu ZmlsdGVyKHRoaXMuX3NraXBPblN0cmljdEhhbmRsZXIpO3JldHVybiBsO30sX2Nv bnN0cnVjdENhbGxiYWNrQXJnOmZ1bmN0aW9uKGssbCl7dmFyIG09dGhpcy5fZmls dGVyRm9yU3RyaWN0UmVzdWx0cyhsKTtpZighdGhpcy5fcmVhY2hlZEVuZE9mQXJy YXkmJmsuc3RhcnQray5saW1pdD5tLmxlbmd0aCl7cmV0dXJuIGZhbHNlO31lbHNl IHJldHVybiBtLnNsaWNlKGsuc3RhcnQsay5zdGFydCtrLmxpbWl0KTt9LGdldEVs ZW1lbnRzVW50aWw6ZnVuY3Rpb24oayl7dmFyIGw9W107Zm9yKHZhciBtPTA7bTx0 aGlzLl9yZXNvdXJjZXMubGVuZ3RoO20rKyl7dmFyIG49dGhpcy5fZ2V0VmFsdWVI YW5kbGVyKHRoaXMuX3Jlc291cmNlc1ttXSk7aWYodGhpcy5fY29tcGFyZVZhbHVl c0hhbmRsZXIobixrKT4wKWJyZWFrO2wucHVzaCh0aGlzLl9yZXNvdXJjZXNbbV0p O31yZXR1cm4gbDt9fSk7ZS5leHBvcnRzPWo7fSk7Cl9fZCgiVGltZXN0YW1wQ29u dmVydGVyIixbIkpTTG9nZ2VyIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ0pTTG9nZ2VyJyksaD1nLmNyZWF0ZSgndGltZXN0YW1wX2NvbnZlcnRlcicp O2Z1bmN0aW9uIGkoayl7cmV0dXJuICh0eXBlb2Yoayk9PSdzdHJpbmcnKSYmay5s ZW5ndGg+Njt9dmFyIGo9e2NvbnZlcnRBY3Rpb25JRFRvVGltZXN0YW1wOmZ1bmN0 aW9uKGspe2lmKGkoaykpe3ZhciBsPWsuc2xpY2UoMCwtNik7cmV0dXJuIHBhcnNl SW50KGwsMTApO319LG1heFZhbGlkQWN0aW9uSUQ6ZnVuY3Rpb24oayxsKXtpZigh aShrKSlyZXR1cm4gbDtpZighaShsKSlyZXR1cm4gaztyZXR1cm4gdGhpcy5pc0dy ZWF0ZXJUaGFuKGssbCk/azpsO30saXNHcmVhdGVyVGhhbjpmdW5jdGlvbihrLGwp e2lmKCFpKGspfHwhaShsKSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRoaXMuY29udmVy dEFjdGlvbklEVG9UaW1lc3RhbXAoayk+dGhpcy5jb252ZXJ0QWN0aW9uSURUb1Rp bWVzdGFtcChsKTt9fTtlLmV4cG9ydHM9ajt9KTsKX19kKCJNZXJjdXJ5Rm9sZGVy cyIsWyJhcnJheS1leHRlbnNpb25zIiwiTWVyY3VyeUNvbnN0YW50cyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7dmFyIGc9Yygn TWVyY3VyeUNvbnN0YW50cycpLGg9W2cuTWVzc2FnaW5nVGFnLklOQk9YLGcuTWVz c2FnaW5nVGFnLk9USEVSLGcuTWVzc2FnaW5nVGFnLkFDVElPTl9BUkNISVZFRCxn Lk1lc3NhZ2luZ1RhZy5TUEFNXSxpPXtnZXRTdXBwb3J0ZWRGb2xkZXJzOmZ1bmN0 aW9uKCl7cmV0dXJuIGguY29uY2F0KCk7fSxpc1N1cHBvcnRlZEZvbGRlcjpmdW5j dGlvbihqKXtyZXR1cm4gaC5jb250YWlucyhqKTt9LGdldEZyb21NZXRhOmZ1bmN0 aW9uKGope3ZhciBrPWouZm9sZGVyO2lmKGouaXNfYXJjaGl2ZWQpaz1nLk1lc3Nh Z2luZ1RhZy5BQ1RJT05fQVJDSElWRUQ7cmV0dXJuIGs7fX07ZS5leHBvcnRzPWk7 fSk7Cl9fZCgiTWVyY3VyeUlEcyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Z1 bmN0aW9uIGcoaCl7cmV0dXJuIHR5cGVvZiBoPT09J3N0cmluZycmJmguaW5kZXhP ZignOicpIT09LTE7fWUuZXhwb3J0cz17aXNWYWxpZDpmdW5jdGlvbihoKXtpZigh aClyZXR1cm4gZmFsc2U7cmV0dXJuIGcoaCk7fSx0b2tlbml6ZTpmdW5jdGlvbiho KXtpZighdGhpcy5pc1ZhbGlkKGgpKXRocm93ICdiYWRfaWRfZm9ybWF0Jzt2YXIg aT1oLmluZGV4T2YoJzonKTtyZXR1cm4ge3R5cGU6aC5zdWJzdHIoMCxpKSx2YWx1

ZTpoLnN1YnN0cihpKzEpfTt9fTt9KTsKX19kKCJNZXJjdXJ5QXNzZXJ0IixbIk1l cmN1cnlJRHMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignTWVyY3Vy eUlEcycpO2UuZXhwb3J0cz17aXNQYXJ0aWNpcGFudElEOmZ1bmN0aW9uKGgpe2lm KCFnLmlzVmFsaWQoaCkpdGhyb3cgJ2JhZF9wYXJ0aWNpcGFudF9pZCc7fSxhbGxQ YXJ0aWNpcGFudElEczpmdW5jdGlvbihoKXtoLmZvckVhY2godGhpcy5pc1BhcnRp Y2lwYW50SUQpO30saXNVc2VyUGFydGljaXBhbnRJRDpmdW5jdGlvbihoKXt2YXIg aT1nLnRva2VuaXplKGgpO2lmKGkudHlwZSE9J2ZiaWQnKXRocm93ICdiYWRfdXNl cl9pZCc7fSxpc0VtYWlsUGFydGljaXBhbnRJRDpmdW5jdGlvbihoKXt2YXIgaT1n LnRva2VuaXplKGgpO2lmKGkudHlwZSE9J2VtYWlsJyl0aHJvdyAnYmFkX2VtYWls X2lkJzt9LGFsbFRocmVhZElEOmZ1bmN0aW9uKGgpe2guZm9yRWFjaCh0aGlzLmlz VGhyZWFkSUQpO30saXNUaHJlYWRJRDpmdW5jdGlvbihoKXtpZighZy5pc1ZhbGlk KGgpKXRocm93ICdiYWRfdGhyZWFkX2lkJzt9fTt9KTsKX19kKCJNZXJjdXJ5QXR0 YWNobWVudCIsWyJzdGFydHNXaXRoIiwiTWVyY3VyeUNvbnN0YW50cyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdzdGFydHNXaXRoJyksaD1jKCdNZXJj dXJ5Q29uc3RhbnRzJyksaT17Z2V0QXR0YWNoSWNvbkNsYXNzOmZ1bmN0aW9uKGop e3N3aXRjaChqKXtjYXNlIGguTWVyY3VyeUF0dGFjaG1lbnRDb250ZW50VHlwZS5Q SE9UTzpyZXR1cm4gJ01lcmN1cnlQaG90b0ljb24nO2Nhc2UgaC5NZXJjdXJ5QXR0 YWNobWVudENvbnRlbnRUeXBlLlZJREVPOnJldHVybiAnTWVyY3VyeVZpZGVvSWNv bic7Y2FzZSBoLk1lcmN1cnlBdHRhY2htZW50Q29udGVudFR5cGUuTVVTSUM6cmV0 dXJuICdNZXJjdXJ5TXVzaWNJY29uJztjYXNlIGguTWVyY3VyeUF0dGFjaG1lbnRD b250ZW50VHlwZS5URVhUOnJldHVybiAnTWVyY3VyeVRleHRJY29uJztjYXNlIGgu TWVyY3VyeUF0dGFjaG1lbnRDb250ZW50VHlwZS5NU1dPUkQ6cmV0dXJuICdNZXJj dXJ5TVNXb3JkSWNvbic7Y2FzZSBoLk1lcmN1cnlBdHRhY2htZW50Q29udGVudFR5 cGUuTVNYTFM6cmV0dXJuICdNZXJjdXJ5TVNYTFNJY29uJztjYXNlIGguTWVyY3Vy eUF0dGFjaG1lbnRDb250ZW50VHlwZS5NU1BQVDpyZXR1cm4gJ01lcmN1cnlNU1BQ VEljb24nO31yZXR1cm4gJ01lcmN1cnlEZWZhdWx0SWNvbic7fSxnZXRBdHRhY2hJ Y29uQ2xhc3NCeU1pbWU6ZnVuY3Rpb24oail7aWYoZyhqLCdpbWFnZScpKXtyZXR1 cm4gJ01lcmN1cnlQaG90b0ljb24nO31lbHNlIGlmKGcoaiwndmlkZW8nKSl7cmV0 dXJuICdNZXJjdXJ5VmlkZW9JY29uJzt9ZWxzZSBpZihnKGosJ2F1ZGlvJykpe3Jl dHVybiAnTWVyY3VyeU11c2ljSWNvbic7fWVsc2UgaWYoZyhqLCd0ZXh0L3BsYWlu Jykpe3JldHVybiAnTWVyY3VyeVRleHRJY29uJzt9ZWxzZSByZXR1cm4gJ01lcmN1 cnlEZWZhdWx0SWNvbic7fSxnZXRBdHRhY2hUeXBlQnlNaW1lOmZ1bmN0aW9uKGop e2lmKGcoaiwnaW1hZ2UnKSl7cmV0dXJuIGguTWVyY3VyeUF0dGFjaG1lbnRDb250 ZW50VHlwZS5QSE9UTzt9ZWxzZSBpZihnKGosJ3ZpZGVvJykpe3JldHVybiBoLk1l cmN1cnlBdHRhY2htZW50Q29udGVudFR5cGUuVklERU87fWVsc2UgaWYoZyhqLCdh dWRpbycpKXtyZXR1cm4gaC5NZXJjdXJ5QXR0YWNobWVudENvbnRlbnRUeXBlLk1V U0lDO31lbHNlIGlmKGcoaiwndGV4dC9wbGFpbicpKXtyZXR1cm4gaC5NZXJjdXJ5 QXR0YWNobWVudENvbnRlbnRUeXBlLlRFWFQ7fWVsc2UgcmV0dXJuIGguTWVyY3Vy eUF0dGFjaG1lbnRDb250ZW50VHlwZS5VTktOT1dOO30sY29udmVydFJhdzpmdW5j dGlvbihqKXt2YXIgaz1bXTtmb3IodmFyIGw9MDtsPGoubGVuZ3RoO2wrKyl7dmFy IG09altsXTtpZihtLmZpbGVuYW1lKXt2YXIgbj17fTtuLmF0dGFjaF90eXBlPWgu TWVyY3VyeUF0dGFjaG1lbnRUeXBlLkZJTEU7bi5uYW1lPW0uZmlsZW5hbWU7bi5p Y29uX3R5cGU9aS5nZXRBdHRhY2hUeXBlQnlNaW1lKG0uZmlsZXR5cGUpO24udXJs PScjJztrLnB1c2gobik7fX1yZXR1cm4gazt9fTtlLmV4cG9ydHM9aTt9KTsKX19k KCJNZXJjdXJ5TWVzc2FnZUlEcyIsWyJLZXllZENhbGxiYWNrTWFuYWdlciJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdLZXllZENhbGxiYWNrTWFuYWdl cicpLGg9bmV3IGcoKSxpPXtnZXRTZXJ2ZXJJRHM6ZnVuY3Rpb24oaixrKXt2YXIg bD1qLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbi5pbmRleE9mKCdtYWlsLnBy b2pla3RpdGFuLmNvbScpIT09LTE7fSksbT1mdW5jdGlvbihuKXt2YXIgbz1qLm1h cChmdW5jdGlvbihwKXtyZXR1cm4gbltwXT9uW3BdOnA7fSk7ayhvKTt9O3JldHVy biBoLmV4ZWN1dGVPckVucXVldWUobCxtKTt9LGFkZFNlcnZlcklEOmZ1bmN0aW9u KGosayl7aC5zZXRSZXNvdXJjZShqLGspO319O2UuZXhwb3J0cz1pO30pOwpfX2Qo Ik1lcmN1cnlTZXJ2ZXJEaXNwYXRjaGVyIixbIkFzeW5jUmVxdWVzdCIsIkpTTG9n Z2VyIiwiVVJJIiwiYXJlT2JqZWN0c0VxdWFsIiwiY29weVByb3BlcnRpZXMiLCJk ZWJvdW5jZUFjcm9zc1RyYW5zaXRpb25zIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ0FzeW5jUmVxdWVzdCcpLGg9YignSlNMb2dnZXInKSxpPWIoJ1VS SScpLGo9YignYXJlT2JqZWN0c0VxdWFsJyksaz1iKCdjb3B5UHJvcGVydGllcycp LGw9YignZGVib3VuY2VBY3Jvc3NUcmFuc2l0aW9ucycpLG09e30sbj1oLmNyZWF0 ZSgnbWVyY3VyeV9kaXNwYXRjaGVyJyksbz1mYWxzZSxwPXtJTU1FRElBVEU6J2lt bWVkaWF0ZScsSURFTVBPVEVOVDonaWRlbXBvdGVudCcsQkFUQ0hfU1VDQ0VTU0lW

RTonYmF0Y2gtc3VjY2Vzc2l2ZScsQkFUQ0hfU1VDQ0VTU0lWRV9VTklRVUU6J2Jh dGNoLXN1Y2Nlc3NpdmUtdW5pcXVlJyxCQVRDSF9TVUNDRVNTSVZFX1BJR0dZQkFD S19PTl9FUlJPUjonYmF0Y2gtc3VjY2Vzc2l2ZS1waWdneWJhY2stcmV0cnknLEJB VENIX0RFRkVSUkVEX01VTFRJOidiYXRjaC1kZWZlcnJlZC1tdWx0aScsQkFUQ0hf Q09ORElUSU9OQUw6J2JhdGNoLWNvbmRpdGlvbmFsJyxyZWdpc3RlckVuZHBvaW50 czpmdW5jdGlvbihyKXtmb3IodmFyIHMgaW4gcil7dmFyIHQ9cltzXTttW3NdPW5l dyBxKHMsdCk7fX0sdHJ5U2VuZDpmdW5jdGlvbihyLHMsdCl7bVtyXS50cnlTZW5k KHMsdCk7fX07ZnVuY3Rpb24gcShyLHMpe3ZhciB0PXMubW9kZXx8cC5JTU1FRElB VEU7c3dpdGNoKHQpe2Nhc2UgcC5JTU1FRElBVEU6Y2FzZSBwLklERU1QT1RFTlQ6 Y2FzZSBwLkJBVENIX1NVQ0NFU1NJVkU6Y2FzZSBwLkJBVENIX1NVQ0NFU1NJVkVf VU5JUVVFOmNhc2UgcC5CQVRDSF9TVUNDRVNTSVZFX1BJR0dZQkFDS19PTl9FUlJP UjpjYXNlIHAuQkFUQ0hfREVGRVJSRURfTVVMVEk6Y2FzZSBwLkJBVENIX0NPTkRJ VElPTkFMOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIE1l cmN1cnlTZXJ2ZXJEaXNwYXRjaGVyIG1vZGUgJyt0KTt9dGhpcy5fZW5kcG9pbnQ9 cjt0aGlzLl9tb2RlPXQ7dGhpcy5fY29tYmluZURhdGE9cy5iYXRjaF9mdW5jdGlv bjt0aGlzLl9jb21iaW5lRGF0YUlmPXMuYmF0Y2hfaWY7dGhpcy5faGFuZGxlcj1z LmhhbmRsZXI7dGhpcy5fZXJyb3JIYW5kbGVyPXMuZXJyb3JfaGFuZGxlcjt0aGlz Ll90cmFuc3BvcnRFcnJvckhhbmRsZXI9cy50cmFuc3BvcnRfZXJyb3JfaGFuZGxl cnx8cy5lcnJvcl9oYW5kbGVyO3RoaXMuX3NlcnZlckRpYWxvZ0NhbmNlbEhhbmRs ZXI9cy5zZXJ2ZXJfZGlhbG9nX2NhbmNlbF9oYW5kbGVyfHxzLmVycm9yX2hhbmRs ZXI7dGhpcy5fZGVmZXJyZWRTZW5kPWwodGhpcy5fYmF0Y2hTZW5kLDAsdGhpcyk7 fWsocS5wcm90b3R5cGUse19pbkZsaWdodDowLF9oYW5kbGVyOm51bGwsX2Vycm9y SGFuZGxlcjpudWxsLF90cmFuc3BvcnRFcnJvckhhbmRsZXI6bnVsbCxfc2VydmVy RGlhbG9nQ2FuY2VsSGFuZGxlcjpudWxsLF9jb21iaW5lRGF0YTpudWxsLHRyeVNl bmQ6ZnVuY3Rpb24ocixzKXtpZihvKXJldHVybjtpZih0eXBlb2Ygcj09J3VuZGVm aW5lZCcpcj1udWxsO3ZhciB0PXN8fHRoaXMuX21vZGU7aWYodD09cC5JTU1FRElB VEUpe3RoaXMuX3NlbmQocik7fWVsc2UgaWYodD09cC5JREVNUE9URU5UKXtpZigh dGhpcy5faW5GbGlnaHQpdGhpcy5fc2VuZChyKTt9ZWxzZSBpZih0PT1wLkJBVENI X1NVQ0NFU1NJVkV8fHQ9PXAuQkFUQ0hfU1VDQ0VTU0lWRV9VTklRVUUpe2lmKCF0 aGlzLl9pbkZsaWdodCl7dGhpcy5fc2VuZChyKTt9ZWxzZSB0aGlzLl9iYXRjaERh dGEocik7fWVsc2UgaWYodD09cC5CQVRDSF9DT05ESVRJT05BTCl7aWYodGhpcy5f aW5GbGlnaHQmJih0aGlzLl9jb21iaW5lRGF0YUlmKHRoaXMuX3BlbmRpbmdSZXF1 ZXN0RGF0YSxyKXx8dGhpcy5fY29tYmluZURhdGFJZih0aGlzLl9iYXRjaGVkRGF0 YSxyKSkpe3RoaXMuX2JhdGNoRGF0YShyKTt9ZWxzZSB0aGlzLl9zZW5kKHIpO31l bHNlIGlmKHQ9PXAuQkFUQ0hfREVGRVJSRURfTVVMVEkpe3RoaXMuX2JhdGNoRGF0 YShyKTt0aGlzLl9kZWZlcnJlZFNlbmQoKTt9ZWxzZSBpZih0PT1wLkJBVENIX1NV Q0NFU1NJVkVfUElHR1lCQUNLX09OX0VSUk9SKXt0aGlzLl9iYXRjaERhdGEocik7 aWYoIXRoaXMuX2luRmxpZ2h0KXRoaXMuX2JhdGNoU2VuZCgpO319LF9zZW5kOmZ1 bmN0aW9uKHIpe3RoaXMuX2luRmxpZ2h0Kys7dGhpcy5fcGVuZGluZ1JlcXVlc3RE YXRhPWsoe30scik7bi5sb2coJ3NlbmQnLHtlbmRwb2ludDp0aGlzLl9lbmRwb2lu dCxkYXRhOnIsaW5mbGlnaHRfY291bnQ6dGhpcy5faW5GbGlnaHR9KTtuZXcgZyh0 aGlzLl9lbmRwb2ludCkuc2V0RGF0YShyKS5zZXRIYW5kbGVyKHRoaXMuX2hhbmRs ZVJlc3BvbnNlLmJpbmQodGhpcykpLnNldEVycm9ySGFuZGxlcih0aGlzLl9oYW5k bGVFcnJvci5iaW5kKHRoaXMpKS5zZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIodGhp cy5faGFuZGxlVHJhbnNwb3J0RXJyb3IuYmluZCh0aGlzKSkuc2V0U2VydmVyRGlh bG9nQ2FuY2VsSGFuZGxlcih0aGlzLl9oYW5kbGVTZXJ2ZXJEaWFsb2dDYW5jZWwu YmluZCh0aGlzKSkuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uKHRydWUpLnNl bmQoKTt9LF9iYXRjaERhdGE6ZnVuY3Rpb24ocil7aWYodGhpcy5fbW9kZT09cC5C QVRDSF9TVUNDRVNTSVZFX1VOSVFVRSYmdHlwZW9mIHRoaXMuX3BlbmRpbmdSZXF1 ZXN0RGF0YSE9J3VuZGVmaW5lZCcmJmoocix0aGlzLl9wZW5kaW5nUmVxdWVzdERh dGEpKXtyZXR1cm47fWVsc2UgaWYodHlwZW9mIHRoaXMuX2JhdGNoZWREYXRhPT0n dW5kZWZpbmVkJyl7dGhpcy5fYmF0Y2hlZERhdGE9cjt9ZWxzZSB0aGlzLl9iYXRj aGVkRGF0YT10aGlzLl9jb21iaW5lRGF0YSh0aGlzLl9iYXRjaGVkRGF0YSxyKTt9 LF9iYXRjaFNlbmQ6ZnVuY3Rpb24oKXtpZih0eXBlb2YgdGhpcy5fYmF0Y2hlZERh dGEhPSd1bmRlZmluZWQnKXt0aGlzLl9zZW5kKHRoaXMuX2JhdGNoZWREYXRhKTtk ZWxldGUgdGhpcy5fYmF0Y2hlZERhdGE7fX0sX2hhbmRsZVJlc3BvbnNlOmZ1bmN0 aW9uKHIpe3RoaXMuX2luRmxpZ2h0LS07bi5sb2coJ3Jlc3BvbnNlJyx7ZW5kcG9p bnQ6dGhpcy5fZW5kcG9pbnQsaW5mbGlnaHRfY291bnQ6dGhpcy5faW5GbGlnaHR9 KTt2YXIgcz1yLmdldFBheWxvYWQoKTtvPXMmJnMua2lsbF9jaGF0O2lmKG8pbi5s b2coJ2tpbGxzd2l0Y2hfZW5hYmxlZCcse2VuZHBvaW50OnRoaXMuX2VuZHBvaW50

LGluZmxpZ2h0X2NvdW50OnRoaXMuX2luRmxpZ2h0fSk7aWYocyYmcy5lcnJvcl9w YXlsb2FkKXtpZih0aGlzLl9lcnJvckhhbmRsZXIpdGhpcy5fZXJyb3JIYW5kbGVy KHIpO31lbHNlIHRoaXMuX2hhbmRsZXImJnRoaXMuX2hhbmRsZXIocyk7aWYodGhp cy5fbW9kZT09cC5CQVRDSF9TVUNDRVNTSVZFfHx0aGlzLl9tb2RlPT1wLkJBVENI X1NVQ0NFU1NJVkVfVU5JUVVFfHx0aGlzLl9tb2RlPT1wLkJBVENIX1NVQ0NFU1NJ VkVfUElHR1lCQUNLX09OX0VSUk9SfHx0aGlzLl9tb2RlPT1wLkJBVENIX0NPTkRJ VElPTkFMKXRoaXMuX2JhdGNoU2VuZCgpO2RlbGV0ZSB0aGlzLl9wZW5kaW5nUmVx dWVzdERhdGE7fSxfaGFuZGxlRXJyb3JDb21tb246ZnVuY3Rpb24ocixzKXtuLmVy cm9yKCdlcnJvcicse2VuZHBvaW50OnRoaXMuX2VuZHBvaW50LGluZmxpZ2h0X2Nv dW50OnRoaXMuX2luRmxpZ2h0LTF9KTtzJiZzKHIpO3RoaXMuX2luRmxpZ2h0LS07 dmFyIHQ9dGhpcy5fbW9kZTtpZih0PT1wLkJBVENIX1NVQ0NFU1NJVkV8fHQ9PXAu QkFUQ0hfU1VDQ0VTU0lWRV9VTklRVUV8fHQ9PXAuQkFUQ0hfQ09ORElUSU9OQUwp e3RoaXMuX2JhdGNoU2VuZCgpO31lbHNlIGlmKHQ9PXAuQkFUQ0hfU1VDQ0VTU0lW RV9QSUdHWUJBQ0tfT05fRVJST1IpaWYodHlwZW9mIHRoaXMuX2JhdGNoZWREYXRh PT0ndW5kZWZpbmVkJyl7dGhpcy5fYmF0Y2hlZERhdGE9dGhpcy5fcGVuZGluZ1Jl cXVlc3REYXRhO31lbHNle3RoaXMuX2JhdGNoZWREYXRhPXRoaXMuX2NvbWJpbmVE YXRhKHRoaXMuX3BlbmRpbmdSZXF1ZXN0RGF0YSx0aGlzLl9iYXRjaGVkRGF0YSk7 dGhpcy5fYmF0Y2hTZW5kKCk7fWRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVxdWVzdERh dGE7fSxfaGFuZGxlRXJyb3I6ZnVuY3Rpb24ocil7dGhpcy5faGFuZGxlRXJyb3JD b21tb24ocix0aGlzLl9lcnJvckhhbmRsZXIpO30sX2hhbmRsZVRyYW5zcG9ydEVy cm9yOmZ1bmN0aW9uKHIpe3RoaXMuX2hhbmRsZUVycm9yQ29tbW9uKHIsdGhpcy5f dHJhbnNwb3J0RXJyb3JIYW5kbGVyKTt9LF9oYW5kbGVTZXJ2ZXJEaWFsb2dDYW5j ZWw6ZnVuY3Rpb24ocil7dGhpcy5faGFuZGxlRXJyb3JDb21tb24ocix0aGlzLl9z ZXJ2ZXJEaWFsb2dDYW5jZWxIYW5kbGVyKTt9fSk7ZS5leHBvcnRzPXA7fSk7Cl9f ZCgiTWVyY3VyeVRocmVhZEluZm9ybWVyIixbIkFyYml0ZXIiLCJjb3B5UHJvcGVy dGllcyIsIk1lcmN1cnlBc3NlcnQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignQXJiaXRlcicpLGg9YignY29weVByb3BlcnRpZXMnKSxpPWIoJ01lcmN1 cnlBc3NlcnQnKSxqPXt9LGs9e30sbD17fSxtPWZhbHNlLG49ZmFsc2Usbz1mYWxz ZSxwPXt9LHE9e30scj17fSxzPTA7ZnVuY3Rpb24gdCgpe2lmKCFzKXt2YXIgdj1q LHc9ayx4PWwseT1tLHo9bixhYT1vLGJhPXAsY2E9cSxkYT1yO2o9e307az17fTts PXt9O209ZmFsc2U7bj1mYWxzZTtvPWZhbHNlO3A9e307cT17fTtyPXt9O3ZhciBl YT1PYmplY3Qua2V5cyh3KTtpZihlYS5sZW5ndGh8fHkpdS5pbmZvcm0oJ3RocmVh ZGxpc3QtdXBkYXRlZCcsZWEpO2lmKGVhLmxlbmd0aCl1LmluZm9ybSgndGhyZWFk cy11cGRhdGVkJyx3KTtmb3IodmFyIGZhIGluIHgpe3UuaW5mb3JtKCd0aHJlYWQt cmVhZC1jaGFuZ2VkJyx4KTticmVhazt9Zm9yKHZhciBmYSBpbiB2KXt1LmluZm9y bSgndGhyZWFkcy1kZWxldGVkJyx2KTticmVhazt9aWYoeil1LmluZm9ybSgndW5z ZWVuLXVwZGF0ZWQnLG51bGwpO2lmKGFhKXUuaW5mb3JtKCd1bnJlYWQtdXBkYXRl ZCcsbnVsbCk7Zm9yKGZhIGluIGJhKXt1LmluZm9ybSgnbWVzc2FnZXMtcmVjZWl2 ZWQnLGJhKTticmVhazt9Zm9yKGZhIGluIGNhKXt1LmluZm9ybSgnbWVzc2FnZXMt cmVvcmRlcmVkJyxjYSk7YnJlYWs7fWZvcihmYSBpbiBkYSl7dS5pbmZvcm0oJ21l c3NhZ2VzLXVwZGF0ZWQnLGRhKTticmVhazt9fX12YXIgdT1oKG5ldyBnKCkse3Vw ZGF0ZWRUaHJlYWQ6ZnVuY3Rpb24odil7a1t2XT10cnVlO3QoKTt9LGRlbGV0ZWRU aHJlYWQ6ZnVuY3Rpb24odil7alt2XT10cnVlO3QoKTt9LHVwZGF0ZWRUaHJlYWRs aXN0OmZ1bmN0aW9uKCl7bT10cnVlO3QoKTt9LHVwZGF0ZWRVbnNlZW5TdGF0ZTpm dW5jdGlvbigpe249dHJ1ZTt0KCk7fSx1cGRhdGVkVW5yZWFkU3RhdGU6ZnVuY3Rp b24oKXtvPXRydWU7dCgpO30sY2hhbmdlZFRocmVhZFJlYWRTdGF0ZTpmdW5jdGlv bih2LHcseCl7aWYoIWxbdl18fGxbdl0udGltZXN0YW1wPHgpbFt2XT17bWFya19h c19yZWFkOncsdGltZXN0YW1wOnh9O3QoKTt9LHJlY2VpdmVkTWVzc2FnZTpmdW5j dGlvbih2KXtpLmlzVGhyZWFkSUQodi50aHJlYWRfaWQpO3ZhciB3PXYudGhyZWFk X2lkO2lmKCFwW3ddKXBbd109W107cFt3XS5wdXNoKHYpO3UudXBkYXRlZFRocmVh ZCh3KTt9LHJlb3JkZXJlZE1lc3NhZ2VzOmZ1bmN0aW9uKHYsdyl7cVt2XT17c291 cmNlOnd9O3QoKTt9LHVwZGF0ZWRNZXNzYWdlOmZ1bmN0aW9uKHYsdyx4KXtpZigh clt2XSlyW3ZdPXt9O3Jbdl1bd109e3NvdXJjZTp4fTt0KCk7fSxzeW5jaHJvbml6 ZUluZm9ybXM6ZnVuY3Rpb24odil7cysrO3RyeXt2KCk7fWNhdGNoKHcpe3Rocm93 IHc7fWZpbmFsbHl7cy0tO3QoKTt9fSxsaXN0ZW46ZnVuY3Rpb24odix3KXtyZXR1 cm4gdS5zdWJzY3JpYmUoJ3RocmVhZHMtdXBkYXRlZCcsZnVuY3Rpb24oeCx5KXtp Zih5W3ZdKXcodik7fSk7fX0pO2UuZXhwb3J0cz11O30pOwpfX2QoIk1lc3NhZ2lu Z1JlbGlhYmlsaXR5TG9nZ2VyIixbImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJBc3lu Y1JlcXVlc3QiLCJjb3B5UHJvcGVydGllcyIsImlzRW1wdHkiLCJQcmVzZW5jZVV0 aWwiLCJSdW4iLCJNZXJjdXJ5U2VydmVyRGlzcGF0Y2hlciIsInNldFRpbWVvdXRB

Y3Jvc3NUcmFuc2l0aW9ucyIsIk1lc3NhZ2luZ1JlbGlhYmlsaXR5TG9nZ2VySW5p dGlhbERhdGEiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZnVuY3Rpb24tZXh0 ZW5zaW9ucycpO3ZhciBnPWIoJ0FzeW5jUmVxdWVzdCcpLGg9YignY29weVByb3Bl cnRpZXMnKSxpPWIoJ2lzRW1wdHknKSxqPWIoJ1ByZXNlbmNlVXRpbCcpLGs9Yign UnVuJyksbD1iKCdNZXJjdXJ5U2VydmVyRGlzcGF0Y2hlcicpLG09Yignc2V0VGlt ZW91dEFjcm9zc1RyYW5zaXRpb25zJyksbj1jKCdNZXNzYWdpbmdSZWxpYWJpbGl0 eUxvZ2dlckluaXRpYWxEYXRhJyksbz0nL2FqYXgvbWVyY3VyeS9jbGllbnRfcmVs aWFiaWxpdHkucGhwJyxwPTYwMDAwO2Z1bmN0aW9uIHEodyx4KXt2YXIgeT17YXBw Om4uYXBwLGNhdGVnb3JpZXM6SlNPTi5zdHJpbmdpZnkodyl9O2lmKCFpKHgpKXku ZXh0cmE9SlNPTi5zdHJpbmdpZnkoeCk7cmV0dXJuIHk7fWZ1bmN0aW9uIHIodyx4 LHkseil7aWYod1t4XT09PXVuZGVmaW5lZCl3W3hdPXt9O2lmKHdbeF1beV09PT11 bmRlZmluZWQpd1t4XVt5XT0wO3dbeF1beV0rPXo7fWZ1bmN0aW9uIHModyx4LHks eil7aWYod1t4XT09PXVuZGVmaW5lZCl3W3hdPXt9O2lmKHdbeF1beV09PT11bmRl ZmluZWQpd1t4XVt5XT1bXTtmb3IodmFyIGFhPTA7YWE8ei5sZW5ndGg7KythYSl3 W3hdW3ldLnB1c2goelthYV0pO31mdW5jdGlvbiB0KHcseCl7aWYoIXcuY2F0ZWdv cmllc3x8IXguY2F0ZWdvcmllcylyZXR1cm47dmFyIHk9SlNPTi5wYXJzZSh3LmNh dGVnb3JpZXMpLHo9dy5leHRyYT9KU09OLnBhcnNlKHcuZXh0cmEpOnt9LGFhPUpT T04ucGFyc2UoeC5jYXRlZ29yaWVzKSxiYT14LmV4dHJhP0pTT04ucGFyc2UoeC5l eHRyYSk6e307Zm9yKHZhciBjYSBpbiBhYSl7dmFyIGRhPWFhW2NhXSxlYT1iYVtj YV07Zm9yKHZhciBmYSBpbiBkYSl7cih5LGNhLGZhLGRhW2ZhXSk7aWYoZWEhPT11 bmRlZmluZWQpe3ZhciBnYT1lYVtmYV07aWYoZ2EhPT11bmRlZmluZWQpcyh6LGNh LGZhLGdhKTt9fX1yZXR1cm4gcSh5LHopO312YXIgdT17fTt1W29dPXttb2RlOmwu QkFUQ0hfU1VDQ0VTU0lWRV9QSUdHWUJBQ0tfT05fRVJST1IsYmF0Y2hfZnVuY3Rp b246dH07bC5yZWdpc3RlckVuZHBvaW50cyh1KTt2YXIgdj17YWRkRW50cnk6ZnVu Y3Rpb24odyx4LHkpe2lmKCFuLmVuYWJsZWQpcmV0dXJuO3ZhciB6PXt9O3Ioeix3 LHgsMSk7dmFyIGFhPXt9O2lmKHkhPT11bmRlZmluZWQpcyhhYSx3LHgsW3ldKTts LnRyeVNlbmQobyxxKHosYWEpKTt9fTsoZnVuY3Rpb24gdygpe3YuYWRkRW50cnko J3BhZ2VfZXZlbnQnLCdhY3RpdmUnLGouZ2V0U2Vzc2lvbklEKCkpO20odyxwKTt9 KSgpO2UuZXhwb3J0cz12O30pOwpfX2QoIk1lcmN1cnlTZXJ2ZXJSZXF1ZXN0cyIs WyJBcmJpdGVyIiwiQXN5bmNSZXNwb25zZSIsIktleWVkQ2FsbGJhY2tNYW5hZ2Vy IiwiVGltZXN0YW1wQ29udmVydGVyIiwiY29weVByb3BlcnRpZXMiLCJFbnYiLCJK U0xvZ2dlciIsIk1lcmN1cnlBc3NlcnQiLCJNZXJjdXJ5TWVzc2FnZUlEcyIsIk1l cmN1cnlTZXJ2ZXJEaXNwYXRjaGVyIiwiTWVyY3VyeVRocmVhZEluZm9ybWVyIiwi TWVyY3VyeUlEcyIsIk1lc3NhZ2luZ1JlbGlhYmlsaXR5TG9nZ2VyIiwiY3JlYXRl T2JqZWN0RnJvbSIsImhhc0FycmF5TmF0dXJlIiwiTWVyY3VyeUNvbnN0YW50cyJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdB c3luY1Jlc3BvbnNlJyksaT1iKCdLZXllZENhbGxiYWNrTWFuYWdlcicpLGo9Yign VGltZXN0YW1wQ29udmVydGVyJyksaz1iKCdjb3B5UHJvcGVydGllcycpLGw9Yign RW52JyksbT1iKCdKU0xvZ2dlcicpLG49YignTWVyY3VyeUFzc2VydCcpLG89Yign TWVyY3VyeU1lc3NhZ2VJRHMnKSxwPWIoJ01lcmN1cnlTZXJ2ZXJEaXNwYXRjaGVy JykscT1iKCdNZXJjdXJ5VGhyZWFkSW5mb3JtZXInKSxyPWIoJ01lcmN1cnlJRHMn KSxzPWIoJ01lc3NhZ2luZ1JlbGlhYmlsaXR5TG9nZ2VyJyksdD1iKCdjcmVhdGVP YmplY3RGcm9tJyksdT1iKCdoYXNBcnJheU5hdHVyZScpLHY9YygnTWVyY3VyeUNv bnN0YW50cycpLHc9di5NZXJjdXJ5R2VuZXJpY0NvbnN0YW50cyx4PTAseT1tLmNy ZWF0ZSgnbWVyY3VyeV9zZXJ2ZXInKSx6PW5ldyBpKCksYWE9bmV3IGkoKSxiYT1b XSxjYT17fSxkYT17fTtmdW5jdGlvbiBlYShhYil7aWYoYWIpeD1qLm1heFZhbGlk QWN0aW9uSUQoeCxhYik7fWZ1bmN0aW9uIGZhKGFiKXt2YXIgYmI9YWIudGhyZWFk X2lkLGNiPXouZ2V0UmVzb3VyY2UoYmIpO2lmKCFjYil7aWYoYWIuaXNfY2Fub25p Y2FsKXtpZihhYi5jYW5vbmljYWxfZmJpZD09PXVuZGVmaW5lZCl7dmFyIGRiPWFi LnBhcnRpY2lwYW50cy5maWx0ZXIoZnVuY3Rpb24oZmIpe3JldHVybiBmYiE9J2Zi aWQ6JytsLnVzZXI7fSk7aWYoZGIubGVuZ3RoKXt2YXIgZWI9ci50b2tlbml6ZShk YlswXSk7aWYoZWIudHlwZT09J2VtYWlsJyl7YWIuY2Fub25pY2FsX2VtYWlsPWVi LnZhbHVlO31lbHNlIGFiLmNhbm9uaWNhbF9mYmlkPWViLnZhbHVlO31lbHNlIGFi LmNhbm9uaWNhbF9mYmlkPWwudXNlcjt9Y2I9YWIuY2Fub25pY2FsX2ZiaWQ/J3Vz ZXI6JythYi5jYW5vbmljYWxfZmJpZDonZW1haWw6JythYi5jYW5vbmljYWxfZW1h aWw7fWVsc2UgaWYoYWIucm9vdF9tZXNzYWdlX3RocmVhZGluZ19pZCljYj0ncm9v dDonK2FiLnJvb3RfbWVzc2FnZV90aHJlYWRpbmdfaWQ7Y2I9Y2J8fCd0aHJlYWQ6 JytiYjtnYShiYixjYik7fWFiLnRocmVhZF9pZD1jYjt9ZnVuY3Rpb24gZ2EoYWIs YmIpe3ouc2V0UmVzb3VyY2UoYWIsYmIpO2FhLnNldFJlc291cmNlKGJiLGFiKTtk YVthYl09YmI7fWZ1bmN0aW9uIGhhKGFiLGJiKXt2YXIgY2I9YWEuZXhlY3V0ZU9y

RW5xdWV1ZShhYixiYiksZGI9YWEuZ2V0VW5hdmFpbGFibGVSZXNvdXJjZXMoY2Ip LGViPXhhLnRva2VuaXplVGhyZWFkSUQoYWIpO2lmKGRiLmxlbmd0aCYmZWIudHlw ZSE9J3Jvb3QnKXhhLmZldGNoVGhyZWFkRGF0YShkYik7fWZ1bmN0aW9uIGlhKGFi KXtyZXR1cm4gYWEuZ2V0UmVzb3VyY2UoYWIpO31mdW5jdGlvbiBqYShhYil7cmV0 dXJuICEhei5nZXRSZXNvdXJjZShhYik7fWZ1bmN0aW9uIGthKGFiKXt2YXIgYmI9 ei5nZXRSZXNvdXJjZShhYik7aWYodHlwZW9mIGJiPT0ndW5kZWZpbmVkJyl5Lndh cm4oJ25vX2NsaWVudF90aHJlYWRfaWQnLHtzZXJ2ZXJfaWQ6YWJ9KTtyZXR1cm4g YmI7fWZ1bmN0aW9uIGxhKGFiLGJiKXt6LmV4ZWN1dGVPckVucXVldWUoYWIsYmIp O3hhLmVuc3VyZVRocmVhZElzRmV0Y2hlZChhYik7fWZ1bmN0aW9uIG1hKGFiLGJi KXtpZihhYi5hY3Rpb25fdHlwZSE9di5NZXJjdXJ5QWN0aW9uVHlwZS5TRU5EX01F U1NBR0UpcmV0dXJuO3ZhciBjYj1hYi5jbGllbnRfdGhyZWFkX2lkO2lmKCFjYilj Yj1rYShhYi50aHJlYWRfaWQpO3ZhciBkYj1udWxsO2lmKGNiKWRiPXIudG9rZW5p emUoY2IpLnR5cGU7cy5hZGRFbnRyeSgnc2VuZF8nK2RiLGJiLGFiLnRocmVhZF9p ZCsnLCcrYWIubWVzc2FnZV9pZCk7fWZ1bmN0aW9uIG5hKGFiKXt2YXIgYmI9bnVs bDtzd2l0Y2goYWIuc3RhdHVzKXtjYXNlIHYuTWVyY3VyeUFjdGlvblN0YXR1cy5T VUNDRVNTOmJiPSdzdWNjZXNzJzticmVhaztjYXNlIHYuTWVyY3VyeUFjdGlvblN0 YXR1cy5GQUlMRURfVU5LTk9XTl9SRUFTT046YmI9J2NvbmZpcm1lZF9lcnJvcic7 YnJlYWs7Y2FzZSB2Lk1lcmN1cnlBY3Rpb25TdGF0dXMuVU5BQkxFX1RPX0NPTkZJ Uk06YmI9J2NvbmZpcm1fZXJyb3InO2JyZWFrO2RlZmF1bHQ6cmV0dXJuO31tYShh YixiYik7fWZ1bmN0aW9uIG9hKGFiKXsoYWIubWVzc2FnZV9jb3VudHN8fFtdKS5m b3JFYWNoKGZ1bmN0aW9uKGpiKXtlYShqYi5sYXN0X2FjdGlvbl9pZCk7fSk7KGFi LnRocmVhZHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGpiKXtmYShqYik7ZGVsZXRl IGNhW2piLnRocmVhZF9pZF07ZGVsZXRlIGNhW2lhKGpiLnRocmVhZF9pZCldO2Vh KGpiLmxhc3RfYWN0aW9uX2lkKTt9KTsoYWIub3JkZXJlZF90aHJlYWRsaXN0c3x8 W10pLmZvckVhY2goZnVuY3Rpb24oamIpe2piLnRocmVhZF9pZHM9amIudGhyZWFk X2lkcy5tYXAoa2EpO30pO2FiLmFjdGlvbnM9YWIuYWN0aW9uc3x8W107YWIuYWN0 aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGpiKXtuYShqYik7aWYoamIuc3RhdHVzJiZq Yi5zdGF0dXMhPXYuTWVyY3VyeUFjdGlvblN0YXR1cy5TVUNDRVNTJiYhamIudGhy ZWFkX2lkKXtqYi50aHJlYWRfaWQ9amIuY2xpZW50X3RocmVhZF9pZDtyZXR1cm47 fWlmKGpiLmFjdGlvbl90eXBlPT12Lk1lcmN1cnlBY3Rpb25UeXBlLlNFTkRfTUVT U0FHRSYmamIuY2xpZW50X3RocmVhZF9pZCYmamIuY2xpZW50X3RocmVhZF9pZCE9 dy5QRU5ESU5HX1RIUkVBRF9JRClnYShqYi50aHJlYWRfaWQsamIuY2xpZW50X3Ro cmVhZF9pZCk7amIuc2VydmVyX3RocmVhZF9pZD1qYi50aHJlYWRfaWQ7amIudGhy ZWFkX2lkPWphKGpiLnRocmVhZF9pZCk/a2EoamIudGhyZWFkX2lkKTpudWxsO2Vh KGpiLmFjdGlvbl9pZCk7fSk7aWYoYWIuZW5kX29mX2hpc3Rvcnkpe3ZhciBiYj1b XTtmb3IodmFyIGNiPTA7Y2I8YWIuZW5kX29mX2hpc3RvcnkubGVuZ3RoO2NiKysp e3ZhciBkYj1hYi5lbmRfb2ZfaGlzdG9yeVtjYl07aWYoZGIudHlwZT09J3VzZXIn KXtiYi5wdXNoKCd1c2VyOicrZGIuaWQpO31lbHNlIGlmKGRiLnR5cGU9PSd0aHJl YWQnJiZqYShkYi5pZCkpYmIucHVzaChrYShkYi5pZCkpO31hYi5lbmRfb2ZfaGlz dG9yeT1iYjt9aWYoYWIucm9nZXIpe3ZhciBlYj17fTtmb3IodmFyIGZiIGluIGFi LnJvZ2VyKXt2YXIgZ2I9ei5nZXRSZXNvdXJjZShmYik7aWYoZ2Ipe3ZhciBoYj1h Yi5yb2dlcltmYl07ZWJbZ2JdPXt9O2Zvcih2YXIgaWIgaW4gaGIpZWJbZ2JdWydm YmlkOicraWJdPWhiW2liXTt9fWFiLnJvZ2VyPWViO319ZnVuY3Rpb24gcGEoKXtp ZihiYSYmYmEubGVuZ3RoKXt2YXIgYWI9YmFbMF07YmE9YmEuc2xpY2UoMSk7eGEu aGFuZGxlVXBkYXRlKGFiKTt9fWZ1bmN0aW9uIHFhKGFiLGJiKXt2YXIgY2I9ayh7 fSxhYiksZGI7aWYoYmIudGhyZWFkcyl7aWYoIWNiLnRocmVhZHMpY2IudGhyZWFk cz17fTtmb3IoZGIgaW4gYmIudGhyZWFkcyljYi50aHJlYWRzW2RiXT1PYmplY3Qu a2V5cyh0KChjYi50aHJlYWRzW2RiXXx8W10pLmNvbmNhdChiYi50aHJlYWRzW2Ri XSkpKTt9aWYoYmIubWVzc2FnZXMpe2lmKCFjYi5tZXNzYWdlcyljYi5tZXNzYWdl cz17fTtmb3IoZGIgaW4gYmIubWVzc2FnZXMpe2lmKCFjYi5tZXNzYWdlc1tkYl0p Y2IubWVzc2FnZXNbZGJdPXt9O2Zvcih2YXIgZWIgaW4gYmIubWVzc2FnZXNbZGJd KWlmKGNiLm1lc3NhZ2VzW2RiXVtlYl0pe2NiLm1lc3NhZ2VzW2RiXVtlYl09dGEo Y2IubWVzc2FnZXNbZGJdW2ViXSxiYi5tZXNzYWdlc1tkYl1bZWJdKTt9ZWxzZSBj Yi5tZXNzYWdlc1tkYl1bZWJdPWJiLm1lc3NhZ2VzW2RiXVtlYl07fX1yZXR1cm4g Y2I7fWZ1bmN0aW9uIHJhKGFiLGJiKXt2YXIgY2I9ayh0KGFiLmZvbGRlcnMsdHJ1 ZSksdChiYi5mb2xkZXJzLHRydWUpKTtyZXR1cm4ge2ZvbGRlcnM6T2JqZWN0Lmtl eXMoY2IpfTt9ZnVuY3Rpb24gc2EoYWIsYmIpe2Zvcih2YXIgY2IgaW4gYmIpaWYo YWJbY2JdKXthYltjYl09dGEoYWJbY2JdLGJiW2NiXSk7fWVsc2V7dmFyIGRiPXt9 O2soZGIsYmJbY2JdKTthYltjYl09ZGI7fXJldHVybiBhYjt9ZnVuY3Rpb24gdGEo YWIsYmIpe3ZhciBjYj1hYi5vZmZzZXQ8YmIub2Zmc2V0P2FiLm9mZnNldDpiYi5v

ZmZzZXQsZGI9YWIub2Zmc2V0K2FiLmxpbWl0LGViPWJiLm9mZnNldCtiYi5saW1p dCxmYj0oZGI+ZWIpP2RiOmViLGdiPWZiLWNiO3JldHVybiB7b2Zmc2V0OmNiLGxp bWl0OmdifTt9ZnVuY3Rpb24gdWEoYWIsYmIpe3ZhciBjYj17aWRzOnt9fTtrKGNi LmlkcyxhYi5pZHMpO2soY2IuaWRzLGJiLmlkcyk7cmV0dXJuIGNiO31mdW5jdGlv biB2YShhYixiYil7dmFyIGNiPXt9LGRiO2ZvcihkYiBpbiBhYilrKGNiLHQoYWJb ZGJdLGRiKSk7Zm9yKGRiIGluIGJiKWsoY2IsdChiYltkYl0sZGIpKTt2YXIgZWI9 e307Zm9yKHZhciBmYiBpbiBjYil7ZGI9Y2JbZmJdO2lmKCFlYltkYl0pZWJbZGJd PVtdO2ViW2RiXS5wdXNoKGZiKTt9cmV0dXJuIGViO31mdW5jdGlvbiB3YShhYixi Yil7dmFyIGNiPXQoYWIuaWRzLHRydWUpLGRiPXQoYmIuaWRzLHRydWUpLGViPWso Y2IsZGIpO3JldHVybiB7aWRzOk9iamVjdC5rZXlzKGViKX07fXZhciB4YT1rKG5l dyBnKCkse3Rva2VuaXplVGhyZWFkSUQ6ZnVuY3Rpb24oYWIpe24uaXNUaHJlYWRJ RChhYik7cmV0dXJuIHIudG9rZW5pemUoYWIpO30sZ2V0U2VydmVyVGhyZWFkSUQ6 ZnVuY3Rpb24oYWIsYmIpe24uaXNUaHJlYWRJRChhYik7aGEoYWIsYmIpO30sZ2V0 Q2xpZW50VGhyZWFkSUQ6ZnVuY3Rpb24oYWIsYmIpe2xhKGFiLGJiKTt9LGdldENs aWVudFRocmVhZElETm93OmZ1bmN0aW9uKGFiKXtyZXR1cm4ga2EoYWIpO30sZ2V0 U2VydmVyVGhyZWFkSUROb3c6ZnVuY3Rpb24oYWIpe3JldHVybiBpYShhYik7fSxj b252ZXJ0VGhyZWFkSURJZkF2YWlsYWJsZTpmdW5jdGlvbihhYil7dmFyIGJiPXou Z2V0UmVzb3VyY2UoYWIpO2lmKGJiPT09dW5kZWZpbmVkKXtyZXR1cm4gYWI7fWVs c2UgcmV0dXJuIGJiO30sY2FuTGlua0V4dGVybmFsbHk6ZnVuY3Rpb24oYWIpe24u aXNUaHJlYWRJRChhYik7dmFyIGJiPXhhLnRva2VuaXplVGhyZWFkSUQoYWIpO3Jl dHVybiAoYmIudHlwZT09J3VzZXInKXx8ISFpYShhYik7fSxmZXRjaFRocmVhZGxp c3RJbmZvOmZ1bmN0aW9uKGFiLGJiLGNiLGRiKXtjYj1jYnx8di5NZXNzYWdpbmdU YWcuSU5CT1g7dmFyIGViPWRiP3AuSU1NRURJQVRFOm51bGwsZmI9e307ZmJbY2Jd PXtvZmZzZXQ6YWIsbGltaXQ6YmIsZmlsdGVyOmRifTtwLnRyeVNlbmQoJy9hamF4 L21lcmN1cnkvdGhyZWFkbGlzdF9pbmZvLnBocCcsZmIsZWIpO30sZmV0Y2hVbnNl ZW5UaHJlYWRJRHM6ZnVuY3Rpb24oYWIpe3hhLmZldGNoVGhyZWFkbGlzdEluZm8o di5NZXJjdXJ5VGhyZWFkbGlzdENvbnN0YW50cy5SRUNFTlRfVEhSRUFEX09GRlNF VCx2Lk1lcmN1cnlUaHJlYWRsaXN0Q29uc3RhbnRzLkpFV0VMX1RIUkVBRF9DT1VO VCxhYik7fSxmZXRjaFVucmVhZFRocmVhZElEczpmdW5jdGlvbihhYil7cC50cnlT ZW5kKCcvYWpheC9tZXJjdXJ5L3VucmVhZF90aHJlYWRzLnBocCcse2ZvbGRlcnM6 W2FiXX0pO30sZmV0Y2hNaXNzZWRNZXNzYWdlczpmdW5jdGlvbihhYil7cC50cnlT ZW5kKCcvYWpheC9tZXJjdXJ5L3RocmVhZF9zeW5jLnBocCcse2xhc3RfYWN0aW9u X2lkOngsZm9sZGVyczphYn0pO30sZmV0Y2hUaHJlYWREYXRhOmZ1bmN0aW9uKGFi KXtuLmFsbFRocmVhZElEKGFiKTt2YXIgYmI9e3RocmVhZHM6e319LGNiPVtdLGRi PVtdLGViPVtdLGZiPVtdO2FiLmZvckVhY2goZnVuY3Rpb24oaGIpe2lmKGNhW2hi XSlyZXR1cm47Y2FbaGJdPXRydWU7dmFyIGliPWlhKGhiKTtpZihpYil7ZGIucHVz aChpYik7YmIudGhyZWFkcy50aHJlYWRfaWRzPWRiO31lbHNle3ZhciBqYj14YS50 b2tlbml6ZVRocmVhZElEKGhiKTtpZihqYi50eXBlPT0ndXNlcicpe2NiLnB1c2go amIudmFsdWUpO2JiLnRocmVhZHMudXNlcl9pZHM9Y2I7fWVsc2UgaWYoamIudHlw ZT09J2dyb3VwJyl7ZWIucHVzaChqYi52YWx1ZSk7YmIudGhyZWFkcy5ncm91cF9p ZHM9ZWI7fWVsc2UgaWYoamIudHlwZT09J3RocmVhZCcpe2RiLnB1c2goamIudmFs dWUpO2JiLnRocmVhZHMudGhyZWFkX2lkcz1kYjt9ZWxzZSBpZihqYi50eXBlIT0n cm9vdCcmJmpiLnR5cGUhPSdlbWFpbCcmJmpiLnR5cGUhPSdwZW5kaW5nJyl0aHJv dyBuZXcgRXJyb3IoJ1Vua25vd24gdGhyZWFkIHR5cGUnLGpiKTt9fSk7eGEuaW5m b3JtKCJmZXRjaC10aHJlYWQtZGF0YSIsYmIpO2Zvcih2YXIgZ2IgaW4gYmIudGhy ZWFkcyl7cC50cnlTZW5kKCcvYWpheC9tZXJjdXJ5L3RocmVhZF9pbmZvLnBocCcs YmIpO2JyZWFrO319LGVuc3VyZVRocmVhZElzRmV0Y2hlZDpmdW5jdGlvbihhYil7 aWYoIXouZ2V0UmVzb3VyY2UoYWIpJiYhY2FbYWJdKXtjYVthYl09dHJ1ZTtwLnRy eVNlbmQoJy9hamF4L21lcmN1cnkvdGhyZWFkX2luZm8ucGhwJyx7dGhyZWFkczp7 dGhyZWFkX2lkczpbYWJdfX0pO319LGZldGNoVGhyZWFkTWVzc2FnZXM6ZnVuY3Rp b24oYWIsYmIsY2IsZGIpe24uaXNUaHJlYWRJRChhYik7dmFyIGViLGZiLGdiPXhh LnRva2VuaXplVGhyZWFkSUQoYWIpLGhiPWlhKGFiKSxpYj1mYWxzZTtpZihoYiYm Z2IudHlwZSE9J2dyb3VwJyl7ZmI9J3RocmVhZF9pZHMnO2ViPWhiO31lbHNle2Vi PWdiLnZhbHVlO3N3aXRjaChnYi50eXBlKXtjYXNlICd1c2VyJzpmYj0ndXNlcl9p ZHMnO2liPXRydWU7YnJlYWs7Y2FzZSAnZ3JvdXAnOmZiPSdncm91cF9pZHMnO2Jy ZWFrO2Nhc2UgJ3RocmVhZCc6ZmI9J3RocmVhZF9pZHMnO2JyZWFrO319dmFyIGpi PXttZXNzYWdlczp7fSx0aHJlYWRzOnt9fTtpZihmYil7amIubWVzc2FnZXNbZmJd PXt9O2piLm1lc3NhZ2VzW2ZiXVtlYl09e29mZnNldDpiYixsaW1pdDpjYn07aWYo aWIpamIudGhyZWFkc1tmYl09W2ViXTtwLnRyeVNlbmQoJy9hamF4L21lcmN1cnkv dGhyZWFkX2luZm8ucGhwJyxqYixkYik7fWVsc2UgaGEoYWIsZnVuY3Rpb24oa2Ip

e2piLm1lc3NhZ2VzLnRocmVhZF9pZHM9e307amIubWVzc2FnZXMudGhyZWFkX2lk c1trYl09e29mZnNldDpiYixsaW1pdDpjYn07cC50cnlTZW5kKCcvYWpheC9tZXJj dXJ5L3RocmVhZF9pbmZvLnBocCcsamIsZGIpO30pO30saGFuZGxlVGhyZWFkSW5m b0Vycm9yOmZ1bmN0aW9uKGFiKXt2YXIgYmI9YWIuZ2V0UmVxdWVzdCgpLmdldERh dGEoKSxjYj1bXTtpZihiYi5tZXNzYWdlcyl7Zm9yKHZhciBkYiBpbiBiYi5tZXNz YWdlcy50aHJlYWRfaWRzKWNiLnB1c2goeWEoa2EoZGIpKSk7Zm9yKHZhciBlYiBp biBiYi5tZXNzYWdlcy51c2VyX2lkcyljYi5wdXNoKHlhKCd1c2VyOicrZWIpKTtm b3IodmFyIGZiIGluIGJiLm1lc3NhZ2VzLmdyb3VwX2lkcyljYi5wdXNoKHlhKCdn cm91cDonK2ZiKSk7fWlmKGNiLmxlbmd0aCl4YS5oYW5kbGVVcGRhdGUoe2FjdGlv bnM6Y2IsZnJvbV9jbGllbnQ6dHJ1ZSxwYXlsb2FkX3NvdXJjZTp2Lk1lcmN1cnlQ YXlsb2FkU291cmNlLkNMSUVOVF9DSEFOTkVMX01FU1NBR0V9KTtpZihiYi50aHJl YWRzJiYoYmIudGhyZWFkcy51c2VyX2lkc3x8YmIudGhyZWFkcy5ncm91cF9pZHN8 fGJiLnRocmVhZHMudGhyZWFkX2lkcykmJiFiYi5pc19yZXRyeSl7aWYoYmIubWVz c2FnZXMpZGVsZXRlIGJiLm1lc3NhZ2VzO3kubG9nKCdyZXRyeV90aHJlYWQnLGJi KTtiYi5pc19yZXRyeT10cnVlO3AudHJ5U2VuZCgnL2FqYXgvbWVyY3VyeS90aHJl YWRfaW5mby5waHAnLGJiKTt9fSxtYXJrRm9sZGVyQXNSZWFkOmZ1bmN0aW9uKGFi KXtwLnRyeVNlbmQoJy9hamF4L21lcmN1cnkvbWFya19mb2xkZXJfYXNfcmVhZC5w aHAnLHtmb2xkZXI6YWJ9KTt2YXIgYmI9W3thY3Rpb25fdHlwZTp2Lk1lcmN1cnlH bG9iYWxBY3Rpb25UeXBlLk1BUktfQUxMX1JFQUQsYWN0aW9uX2lkOm51bGwsZm9s ZGVyOmFifV07eGEuaGFuZGxlVXBkYXRlKHtnbG9iYWxfYWN0aW9uczpiYixmcm9t X2NsaWVudDp0cnVlLHBheWxvYWRfc291cmNlOnYuTWVyY3VyeVBheWxvYWRTb3Vy Y2UuQ0xJRU5UX0NIQU5HRV9SRUFEX1NUQVRVU30pO30sY2hhbmdlVGhyZWFkUmVh ZFN0YXR1czpmdW5jdGlvbihhYixiYixjYil7bi5pc1RocmVhZElEKGFiKTtoYShh YixmdW5jdGlvbihlYil7dmFyIGZiPXtpZHM6e319O2ZiLmlkc1tlYl09YmI7cC50 cnlTZW5kKCcvYWpheC9tZXJjdXJ5L2NoYW5nZV9yZWFkX3N0YXR1cy5waHAnLGZi KTt9KTt2YXIgZGI9W3thY3Rpb25fdHlwZTp2Lk1lcmN1cnlBY3Rpb25UeXBlLkNI QU5HRV9SRUFEX1NUQVRVUyxhY3Rpb25faWQ6bnVsbCx0aHJlYWRfaWQ6YWIsbWFy a19hc19yZWFkOmJiLGZvbGRlcjpjYn1dO3hhLmhhbmRsZVVwZGF0ZSh7YWN0aW9u czpkYixmcm9tX2NsaWVudDp0cnVlLHBheWxvYWRfc291cmNlOnYuTWVyY3VyeVBh eWxvYWRTb3VyY2UuQ0xJRU5UX0NIQU5HRV9SRUFEX1NUQVRVU30pO30sY2hhbmdl VGhyZWFkQXJjaGl2ZWRTdGF0dXM6ZnVuY3Rpb24oYWIsYmIpe24uaXNUaHJlYWRJ RChhYik7aGEoYWIsZnVuY3Rpb24oZWIpe3ZhciBmYj17aWRzOnt9fTtmYi5pZHNb ZWJdPWJiO3AudHJ5U2VuZCgnL2FqYXgvbWVyY3VyeS9jaGFuZ2VfYXJjaGl2ZWRf c3RhdHVzLnBocCcsZmIpO30pO3ZhciBjYj17YWN0aW9uX3R5cGU6di5NZXJjdXJ5 QWN0aW9uVHlwZS5DSEFOR0VfQVJDSElWRURfU1RBVFVTLGFjdGlvbl9pZDpudWxs LHRocmVhZF9pZDphYixhcmNoaXZlZDpiYn0sZGI9e2FjdGlvbnM6W2NiXSxmcm9t X2NsaWVudDp0cnVlLHBheWxvYWRfc291cmNlOnYuTWVyY3VyeVBheWxvYWRTb3Vy Y2UuQ0xJRU5UX0NIQU5HRV9BUkNISVZFRF9TVEFUVVN9O3hhLmhhbmRsZVVwZGF0 ZShkYik7fSxjaGFuZ2VUaHJlYWRGb2xkZXI6ZnVuY3Rpb24oYWIsYmIpe24uaXNU aHJlYWRJRChhYik7aGEoYWIsZnVuY3Rpb24oZWIpe3ZhciBmYj17fTtmYltiYl09 W2ViXTtwLnRyeVNlbmQoJy9hamF4L21lcmN1cnkvbW92ZV90aHJlYWQucGhwJyxm Yik7fSk7dmFyIGNiPXthY3Rpb25fdHlwZTp2Lk1lcmN1cnlBY3Rpb25UeXBlLkNI QU5HRV9GT0xERVIsYWN0aW9uX2lkOm51bGwsdGhyZWFkX2lkOmFiLG5ld19mb2xk ZXI6YmJ9LGRiPXthY3Rpb25zOltjYl0sZnJvbV9jbGllbnQ6dHJ1ZSxwYXlsb2Fk X3NvdXJjZTp2Lk1lcmN1cnlQYXlsb2FkU291cmNlLkNMSUVOVF9DSEFOR0VfRk9M REVSfTt4YS5oYW5kbGVVcGRhdGUoZGIpO30sbWFya1RocmVhZFNwYW06ZnVuY3Rp b24oYWIpe24uaXNUaHJlYWRJRChhYik7aGEoYWIsZnVuY3Rpb24oZGIpe3AudHJ5 U2VuZCgnL2FqYXgvbWVyY3VyeS9tYXJrX3NwYW0ucGhwJyx7aWQ6ZGJ9KTt9KTt2 YXIgYmI9e2FjdGlvbl90eXBlOnYuTWVyY3VyeUFjdGlvblR5cGUuQ0hBTkdFX0ZP TERFUixhY3Rpb25faWQ6bnVsbCx0aHJlYWRfaWQ6YWIsbmV3X2ZvbGRlcjp2Lk1l c3NhZ2luZ1RhZy5TUEFNfSxjYj17YWN0aW9uczpbYmJdLGZyb21fY2xpZW50OnRy dWUscGF5bG9hZF9zb3VyY2U6di5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5DTElFTlRf Q0hBTkdFX0ZPTERFUn07eGEuaGFuZGxlVXBkYXRlKGNiKTt9LHVubWFya1RocmVh ZFNwYW06ZnVuY3Rpb24oYWIpe24uaXNUaHJlYWRJRChhYik7aGEoYWIsZnVuY3Rp b24oZGIpe3AudHJ5U2VuZCgnL2FqYXgvbWVyY3VyeS91bm1hcmtfc3BhbS5waHAn LHtpZDpkYn0pO30pO3ZhciBiYj17YWN0aW9uX3R5cGU6di5NZXJjdXJ5QWN0aW9u VHlwZS5DSEFOR0VfRk9MREVSLGFjdGlvbl9pZDpudWxsLHRocmVhZF9pZDphYixu ZXdfZm9sZGVyOnYuTWVzc2FnaW5nVGFnLklOQk9YfSxjYj17YWN0aW9uczpbYmJd LGZyb21fY2xpZW50OnRydWUscGF5bG9hZF9zb3VyY2U6di5NZXJjdXJ5UGF5bG9h ZFNvdXJjZS5DTElFTlRfQ0hBTkdFX0ZPTERFUn07eGEuaGFuZGxlVXBkYXRlKGNi

KTt9LGRlbGV0ZVRocmVhZDpmdW5jdGlvbihhYil7bi5pc1RocmVhZElEKGFiKTto YShhYixmdW5jdGlvbihkYil7dmFyIGViPXtpZHM6W2RiXX07cC50cnlTZW5kKCcv YWpheC9tZXJjdXJ5L2RlbGV0ZV90aHJlYWQucGhwJyxlYik7fSk7dmFyIGJiPXth Y3Rpb25fdHlwZTp2Lk1lcmN1cnlBY3Rpb25UeXBlLkRFTEVURV9USFJFQUQsYWN0 aW9uX2lkOm51bGwsdGhyZWFkX2lkOmFifSxjYj17YWN0aW9uczpbYmJdLGZyb21f Y2xpZW50OnRydWUscGF5bG9hZF9zb3VyY2U6di5NZXJjdXJ5UGF5bG9hZFNvdXJj ZS5DTElFTlRfREVMRVRFX1RIUkVBRH07eGEuaGFuZGxlVXBkYXRlKGNiKTt9LGRl bGV0ZU1lc3NhZ2VzOmZ1bmN0aW9uKGFiLGJiLGNiKXtvLmdldFNlcnZlcklEcyhi Ynx8W10sZnVuY3Rpb24oZWIpe3AudHJ5U2VuZCgnL2FqYXgvbWVyY3VyeS9kZWxl dGVfbWVzc2FnZXMucGhwJyx7bWVzc2FnZV9pZHM6ZWJ9KTt9KTt2YXIgZGI7aWYo Y2Ipe2RiPXthY3Rpb25fdHlwZTp2Lk1lcmN1cnlBY3Rpb25UeXBlLkRFTEVURV9U SFJFQUQsYWN0aW9uX2lkOm51bGwsdGhyZWFkX2lkOmFifTt9ZWxzZSBkYj17YWN0 aW9uX3R5cGU6di5NZXJjdXJ5QWN0aW9uVHlwZS5ERUxFVEVfTUVTU0FHRVMsYWN0 aW9uX2lkOm51bGwsdGhyZWFkX2lkOmFiLG1lc3NhZ2VfaWRzOmJifTt4YS5oYW5k bGVVcGRhdGUoe2FjdGlvbnM6W2RiXSxmcm9tX2NsaWVudDp0cnVlLHBheWxvYWRf c291cmNlOnYuTWVyY3VyeVBheWxvYWRTb3VyY2UuQ0xJRU5UX0RFTEVURV9NRVNT QUdFU30pO30sY2xlYXJDaGF0OmZ1bmN0aW9uKGFiLGJiLGNiKXtuLmlzVGhyZWFk SUQoYWIpO3AudHJ5U2VuZCgnL2FqYXgvY2hhdC9zZXR0aW5ncy5waHAnLHtjbGVh cl9oaXN0b3J5X2lkOmJifSk7dmFyIGRiPVt7YWN0aW9uX3R5cGU6di5NZXJjdXJ5 QWN0aW9uVHlwZS5DTEVBUl9DSEFULGFjdGlvbl9pZDpudWxsLHRocmVhZF9pZDph YixjbGVhcl90aW1lOmNifV07eGEuaGFuZGxlVXBkYXRlKHthY3Rpb25zOmRiLGZy b21fY2xpZW50OnRydWUscGF5bG9hZF9zb3VyY2U6di5NZXJjdXJ5UGF5bG9hZFNv dXJjZS5DTElFTlRfQ0xFQVJfQ0hBVH0pO30sX2JhdGNoVGhyZWFkUmVhZDpmdW5j dGlvbihhYixiYil7dmFyIGNiPXt9O2soY2IsYWIuaWRzKTtrKGNiLGJiLmlkcyk7 cmV0dXJuIHtpZHM6Y2J9O30sc2VuZE5ld01lc3NhZ2U6ZnVuY3Rpb24oYWIpe28u Z2V0U2VydmVySURzKGFiLmZvcndhcmRfbWVzc2FnZV9pZHN8fFtdLGZ1bmN0aW9u KGNiKXt2YXIgZGI9eGEudG9rZW5pemVUaHJlYWRJRChhYi50aHJlYWRfaWQpLGVi PWRiLnR5cGUsZmI9ayh7fSxhYik7ZmIuZm9yd2FyZF9tZXNzYWdlX2lkcz1jYjt2 YXIgZ2I9aWEoYWIudGhyZWFkX2lkKTtpZigoZWI9PSdyb290JyYmZGIudmFsdWU9 PWZiLm1lc3NhZ2VfaWQpfHwoZWI9PSd1c2VyJyl8fChhYi50aHJlYWRfaWQ9PXcu UEVORElOR19USFJFQURfSUQpKXtmYi5jbGllbnRfdGhyZWFkX2lkPWZiLnRocmVh ZF9pZDtmYi50aHJlYWRfaWQ9bnVsbDt4YS5fc2VuZE5ld01lc3NhZ2VUb1NlcnZl cihmYik7fWVsc2UgaGEoZmIudGhyZWFkX2lkLGZ1bmN0aW9uKGhiKXtmYi50aHJl YWRfaWQ9aGI7eGEuX3NlbmROZXdNZXNzYWdlVG9TZXJ2ZXIoZmIpO30pO30pO2lm KGFiLnRocmVhZF9pZCE9dy5QRU5ESU5HX1RIUkVBRF9JRCl7dmFyIGJiPXthY3Rp b25zOltrKHt9LGFiKV0sZnJvbV9jbGllbnQ6dHJ1ZSxwYXlsb2FkX3NvdXJjZTp2 Lk1lcmN1cnlQYXlsb2FkU291cmNlLkNMSUVOVF9TRU5EX01FU1NBR0V9O3hhLmhh bmRsZVVwZGF0ZShiYik7fX0sX3NlbmROZXdNZXNzYWdlVG9TZXJ2ZXI6ZnVuY3Rp b24oYWIpe3AudHJ5U2VuZCgnL2FqYXgvbWVyY3VyeS9zZW5kX21lc3NhZ2VzLnBo cCcse21lc3NhZ2VfYmF0Y2g6W2FiXX0pO30sX2JhdGNoTWVzc2FnZVNlbmQ6ZnVu Y3Rpb24oYWIsYmIpe3JldHVybiB7bWVzc2FnZV9iYXRjaDphYi5tZXNzYWdlX2Jh dGNoLmNvbmNhdChiYi5tZXNzYWdlX2JhdGNoKX07fSxyZXF1ZXN0TWVzc2FnZUNv bmZpcm1hdGlvbjpmdW5jdGlvbihhYil7dmFyIGJiPXt9LGNiPXt9O2Zvcih2YXIg ZGIgaW4gYWIpe3ZhciBlYj1pYShkYik7aWYoZWIpe2JiW2ViXT1hYltkYl07fWVs c2V7dmFyIGZiPWFiW2RiXTtmb3IodmFyIGdiPTA7Z2I8ZmIubGVuZ3RoO2diKysp Y2JbZmJbZ2JdXT1kYjt9fXZhciBoYj1PYmplY3Qua2V5cyhiYiksaWI9T2JqZWN0 LmtleXMoY2IpO2lmKGhiLmxlbmd0aHx8aWIubGVuZ3RoKXAudHJ5U2VuZCgnL2Fq YXgvbWVyY3VyeS9jb25maXJtX21lc3NhZ2VzLnBocCcse3RocmVhZF9tZXNzYWdl X21hcDpiYixsb2NhbF9tZXNzYWdlczpjYn0pO30saGFuZGxlTWVzc2FnZUNvbmZp cm1FcnJvcjpmdW5jdGlvbihhYil7dmFyIGJiPWFiLmdldFJlcXVlc3QoKS5nZXRE YXRhKCkudGhyZWFkX21lc3NhZ2VfbWFwLGNiPWFiLmdldFJlcXVlc3QoKS5nZXRE YXRhKCkubG9jYWxfbWVzc2FnZXM7aWYoIWJiJiYhY2IpcmV0dXJuO3ZhciBkYj1b XTtmb3IodmFyIGViIGluIGJiKXt2YXIgZmI9YmJbZWJdO2ZiLmZvckVhY2goZnVu Y3Rpb24oaWIpe2RiLnB1c2goe2FjdGlvbl90eXBlOnYuTWVyY3VyeUFjdGlvblR5 cGUuU0VORF9NRVNTQUdFLGNsaWVudF9tZXNzYWdlX2lkOmliLG1lc3NhZ2VfaWQ6 aWIsY2xpZW50X3RocmVhZF9pZDpudWxsLHRocmVhZF9pZDplYixzdGF0dXM6di5N ZXJjdXJ5QWN0aW9uU3RhdHVzLlVOQUJMRV9UT19DT05GSVJNfSk7fSk7fWZvcih2 YXIgZ2IgaW4gY2Ipe3ZhciBoYj1jYltnYl07ZGIucHVzaCh7YWN0aW9uX3R5cGU6 di5NZXJjdXJ5QWN0aW9uVHlwZS5TRU5EX01FU1NBR0UsY2xpZW50X21lc3NhZ2Vf aWQ6Z2IsbWVzc2FnZV9pZDpnYixjbGllbnRfdGhyZWFkX2lkOmhiLHRocmVhZF9p

ZDpudWxsLHN0YXR1czp2Lk1lcmN1cnlBY3Rpb25TdGF0dXMuVU5BQkxFX1RPX0NP TkZJUk19KTt9aWYoZGIubGVuZ3RoKXhhLmhhbmRsZVVwZGF0ZSh7YWN0aW9uczpk YixwYXlsb2FkX3NvdXJjZTp2Lk1lcmN1cnlQYXlsb2FkU291cmNlLkNMSUVOVF9I QU5ETEVfRVJST1J9KTt9LG1hcmtTZWVuOmZ1bmN0aW9uKCl7dmFyIGFiPWouY29u dmVydEFjdGlvbklEVG9UaW1lc3RhbXAoeCk7cC50cnlTZW5kKCcvYWpheC9tZXJj dXJ5L21hcmtfc2Vlbi5waHAnLHtzZWVuX3RpbWVzdGFtcDphYn0pO30sX2JhdGNo TWFya1NlZW46ZnVuY3Rpb24oYWIsYmIpe3JldHVybiBiYjt9LGhhbmRsZVJvZ2Vy OmZ1bmN0aW9uKGFiKXt2YXIgYmI9YWIudGlkP3ouZ2V0UmVzb3VyY2UoYWIudGlk KTooJ3VzZXI6JythYi5yZWFkZXIpO2lmKGJiKXt2YXIgY2I9e307Y2JbYmJdPXt9 O2NiW2JiXVsnZmJpZDonK2FiLnJlYWRlcl09YWIudGltZTt4YS5pbmZvcm0oJ3Vw ZGF0ZS1yb2dlcicsY2IpO319LGhhbmRsZVVwZGF0ZVdhaXRGb3JUaHJlYWQ6ZnVu Y3Rpb24oYWIsYmIpe3ZhciBjYj16LmdldFJlc291cmNlKGJiKTtpZihjYil7eGEu aGFuZGxlVXBkYXRlKGFiKTtyZXR1cm47fXouZXhlY3V0ZU9yRW5xdWV1ZShiYixm dW5jdGlvbigpe2JhLnB1c2goYWIpO30pO2lmKCFjYVtiYl0pe2NhW2JiXT10cnVl O3AudHJ5U2VuZCgnL2FqYXgvbWVyY3VyeS90aHJlYWRfaW5mby5waHAnLHt0aHJl YWRzOnt0aHJlYWRfaWRzOltiYl19fSk7fX0saGFuZGxlVXBkYXRlOmZ1bmN0aW9u KGFiKXt5LmRlYnVnKCdoYW5kbGVfdXBkYXRlJyx7cGF5bG9hZDphYixmcm9tX2Ns aWVudDphYi5mcm9tX2NsaWVudH0pO2Zvcih2YXIgYmIgaW4gYWIpe3Euc3luY2hy b25pemVJbmZvcm1zKGZ1bmN0aW9uKCl7aWYoIWFiLmZyb21fY2xpZW50KXtvYShh Yik7eGEuaW5mb3JtKCdwYXlsb2FkLXByZXByb2Nlc3NlZCcsYWIpO314YS5pbmZv cm0oJ3VwZGF0ZS10aHJlYWQtaWRzJyxkYSk7ZGE9e307eGEuaW5mb3JtKCd1cGRh dGUtcGFydGljaXBhbnRzJyxhYik7eGEuaW5mb3JtKCd1cGRhdGUtdGhyZWFkcycs YWIpO3hhLmluZm9ybSgndXBkYXRlLXVucmVhZCcsYWIpO3hhLmluZm9ybSgndXBk YXRlLXRocmVhZGxpc3QnLGFiKTt4YS5pbmZvcm0oJ3VwZGF0ZS1tZXNzYWdlcycs YWIpO3hhLmluZm9ybSgndXBkYXRlLXVuc2VlbicsYWIpO3hhLmluZm9ybSgndXBk YXRlLXR5cGluZy1zdGF0ZScsYWIpO3hhLmluZm9ybSgndXBkYXRlLXJvZ2VyJyxh Yi5yb2dlcik7eGEuaW5mb3JtKCdtb2RlbC11cGRhdGUtY29tcGxldGVkJyxudWxs KTtwYSgpO30pO2JyZWFrO319LF9oYW5kbGVTZW5kTWVzc2FnZUVycm9yQ29tbW9u OmZ1bmN0aW9uKGFiLGJiKXt5LmRlYnVnKCdoYW5kbGVfc2VuZF9tZXNzYWdlX2Vy cm9yX2NvbW1vbicse3Jlc3BvbnNlOmFiLHJlcXVlc3RfZXJyb3Jfc3RhdHVzOmJi fSk7dmFyIGNiPWFiLmdldFBheWxvYWQoKSxkYj1hYi5nZXRSZXF1ZXN0KCkuZ2V0 RGF0YSgpLGViPWRiLm1lc3NhZ2VfYmF0Y2g7aWYoIWViKXttYSh7YWN0aW9uX3R5 cGU6di5NZXJjdXJ5QWN0aW9uVHlwZS5TRU5EX01FU1NBR0Usc3RhdHVzOnYuTWVy Y3VyeUFjdGlvblN0YXR1cy5SRVFVRVNUX0VNUFRZX01FU1NBR0VfTElTVH0pO3Jl dHVybjt9dmFyIGZiLGdiPW51bGw7aWYoY2ImJmNiLmVycm9yX3BheWxvYWQpe2Zi PXYuTWVyY3VyeUFjdGlvblN0YXR1cy5VTkNPTkZJUk1FRDtnYj0nc2VuZF9lcnJv cic7fWVsc2V7Z2I9YmI9PXYuTWVyY3VyeUFjdGlvblN0YXR1cy5SRVFVRVNUX0VS Uk9SPydyZXF1ZXN0X2Vycm9yJzondHJhbnNwb3J0X2Vycm9yJztpZihhYi5nZXRF cnJvcigpKWdiKz0nXycrYWIuZ2V0RXJyb3IoKTtmYj1iYjt9dmFyIGhiPWViLm1h cChmdW5jdGlvbihqYil7cmV0dXJuIHthY3Rpb25fdHlwZTp2Lk1lcmN1cnlBY3Rp b25UeXBlLlNFTkRfTUVTU0FHRSxjbGllbnRfbWVzc2FnZV9pZDpqYi5tZXNzYWdl X2lkLG1lc3NhZ2VfaWQ6amIubWVzc2FnZV9pZCxjbGllbnRfdGhyZWFkX2lkOmpi LmNsaWVudF90aHJlYWRfaWQsdGhyZWFkX2lkOmpiLnRocmVhZF9pZCxzdGF0dXM6 ZmJ9O30pO2hiLmZvckVhY2goZnVuY3Rpb24oamIpe21hKGpiLGdiKTt9KTt2YXIg aWI9e2FjdGlvbnM6aGIscGF5bG9hZF9zb3VyY2U6di5NZXJjdXJ5UGF5bG9hZFNv dXJjZS5DTElFTlRfSEFORExFX0VSUk9SfTt4YS5oYW5kbGVVcGRhdGUoaWIpO30s aGFuZGxlU2VuZE1lc3NhZ2VFcnJvcjpmdW5jdGlvbihhYil7aWYoYWIuZXJyb3I9 PT0xNDA0MDc0KWgudmVyYm9zZUVycm9ySGFuZGxlcihhYik7eGEuX2hhbmRsZVNl bmRNZXNzYWdlRXJyb3JDb21tb24oYWIsdi5NZXJjdXJ5QWN0aW9uU3RhdHVzLlJF UVVFU1RfRVJST1IpO30saGFuZGxlU2VuZE1lc3NhZ2VUcmFuc3BvcnRFcnJvcjpm dW5jdGlvbihhYil7eGEuX2hhbmRsZVNlbmRNZXNzYWdlRXJyb3JDb21tb24oYWIs di5NZXJjdXJ5QWN0aW9uU3RhdHVzLlRSQU5TUE9SVF9FUlJPUik7fSxnZXRMYXN0 QWN0aW9uSUQ6ZnVuY3Rpb24oKXtyZXR1cm4geDt9fSk7ZnVuY3Rpb24geWEoYWIp e3JldHVybiB7YWN0aW9uX3R5cGU6di5NZXJjdXJ5QWN0aW9uVHlwZS5MT0dfTUVT U0FHRSx0aHJlYWRfaWQ6YWIsbWVzc2FnZV9pZDphYix0aW1lc3RhbXA6KG5ldyBE YXRlKCkpLmdldFRpbWUoKSx0aW1lc3RhbXBfYWJzb2x1dGU6JycsdGltZXN0YW1w X3JlbGF0aXZlOicnLGlzX3VucmVhZDpmYWxzZSxzb3VyY2U6di5NZXJjdXJ5U291 cmNlVHlwZS5VTktOT1dOLGxvZ19tZXNzYWdlX3R5cGU6di5NZXJjdXJ5TG9nTWVz c2FnZVR5cGUuU0VSVkVSX0VSUk9SLGxvZ19tZXNzYWdlX2RhdGE6e319O312YXIg emE9eGEuaGFuZGxlVXBkYXRlO3AucmVnaXN0ZXJFbmRwb2ludHMoeycvYWpheC9t

ZXJjdXJ5L3RocmVhZF9zeW5jLnBocCc6e21vZGU6cC5JREVNUE9URU5ULGhhbmRs ZXI6emF9LCcvYWpheC9tZXJjdXJ5L3RocmVhZF9pbmZvLnBocCc6e21vZGU6cC5C QVRDSF9ERUZFUlJFRF9NVUxUSSxiYXRjaF9mdW5jdGlvbjpxYSxoYW5kbGVyOnph LGVycm9yX2hhbmRsZXI6eGEuaGFuZGxlVGhyZWFkSW5mb0Vycm9yfSwnL2FqYXgv bWVyY3VyeS9tYXJrX2ZvbGRlcl9hc19yZWFkLnBocCc6e21vZGU6cC5JTU1FRElB VEUsaGFuZGxlcjp6YX0sJy9hamF4L21lcmN1cnkvY2hhbmdlX3JlYWRfc3RhdHVz LnBocCc6e21vZGU6cC5CQVRDSF9TVUNDRVNTSVZFLGJhdGNoX2Z1bmN0aW9uOnhh Ll9iYXRjaFRocmVhZFJlYWQsaGFuZGxlcjp6YX0sJy9hamF4L21lcmN1cnkvc2Vu ZF9tZXNzYWdlcy5waHAnOnttb2RlOnAuQkFUQ0hfU1VDQ0VTU0lWRSxiYXRjaF9m dW5jdGlvbjp4YS5fYmF0Y2hNZXNzYWdlU2VuZCxoYW5kbGVyOnphLGVycm9yX2hh bmRsZXI6eGEuaGFuZGxlU2VuZE1lc3NhZ2VFcnJvcix0cmFuc3BvcnRfZXJyb3Jf aGFuZGxlcjp4YS5oYW5kbGVTZW5kTWVzc2FnZVRyYW5zcG9ydEVycm9yfSwnL2Fq YXgvbWVyY3VyeS9tYXJrX3NlZW4ucGhwJzp7bW9kZTpwLkJBVENIX1NVQ0NFU1NJ VkUsYmF0Y2hfZnVuY3Rpb246eGEuX2JhdGNoTWFya1NlZW4saGFuZGxlcjp6YX0s Jy9hamF4L21lcmN1cnkvY29uZmlybV9tZXNzYWdlcy5waHAnOnttb2RlOnAuSU1N RURJQVRFLGhhbmRsZXI6emEsZXJyb3JfaGFuZGxlcjp4YS5oYW5kbGVNZXNzYWdl Q29uZmlybUVycm9yfSwnL2FqYXgvbWVyY3VyeS90aHJlYWRsaXN0X2luZm8ucGhw Jzp7bW9kZTpwLkJBVENIX1NVQ0NFU1NJVkVfVU5JUVVFLGJhdGNoX2Z1bmN0aW9u OnNhLGhhbmRsZXI6emF9LCcvYWpheC9tZXJjdXJ5L21hcmtfc3BhbS5waHAnOntt b2RlOnAuSU1NRURJQVRFLGhhbmRsZXI6emF9LCcvYWpheC9tZXJjdXJ5L3VubWFy a19zcGFtLnBocCc6e21vZGU6cC5JTU1FRElBVEUsaGFuZGxlcjp6YX0sJy9hamF4 L21lcmN1cnkvdW5yZWFkX3RocmVhZHMucGhwJzp7bW9kZTpwLkJBVENIX1NVQ0NF U1NJVkVfVU5JUVVFLGJhdGNoX2Z1bmN0aW9uOnJhLGhhbmRsZXI6emF9LCcvYWph eC9jaGF0L3NldHRpbmdzLnBocCc6e21vZGU6cC5JTU1FRElBVEV9LCcvYWpheC9t ZXJjdXJ5L2NoYW5nZV9hcmNoaXZlZF9zdGF0dXMucGhwJzp7bW9kZTpwLkJBVENI X1NVQ0NFU1NJVkUsYmF0Y2hfZnVuY3Rpb246dWEsaGFuZGxlcjp6YX0sJy9hamF4 L21lcmN1cnkvZGVsZXRlX3RocmVhZC5waHAnOnttb2RlOnAuQkFUQ0hfU1VDQ0VT U0lWRSxiYXRjaF9mdW5jdGlvbjp3YSxoYW5kbGVyOnphfSwnL2FqYXgvbWVyY3Vy eS9kZWxldGVfbWVzc2FnZXMucGhwJzp7bW9kZTpwLklNTUVESUFURSxoYW5kbGVy OnphfSwnL2FqYXgvbWVyY3VyeS9tb3ZlX3RocmVhZC5waHAnOnttb2RlOnAuQkFU Q0hfU1VDQ0VTU0lWRSxiYXRjaF9mdW5jdGlvbjp2YSxoYW5kbGVyOnphfX0pO2Uu ZXhwb3J0cz14YTt9KTsKX19kKCJNZXJjdXJ5VGltZXN0YW1wVHJhY2tlciIsWyJN ZXJjdXJ5U2VydmVyUmVxdWVzdHMiLCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ01lcmN1cnlTZXJ2ZXJSZXF1ZXN0cycp LGg9YygnTWVyY3VyeUNvbnN0YW50cycpLGk9MDtlLmV4cG9ydHM9e2dldExhc3RV c2VyTWVzc2FnZVRpbWVzdGFtcDpmdW5jdGlvbigpe3JldHVybiBpO319O2cuc3Vi c2NyaWJlKCd1cGRhdGUtbWVzc2FnZXMnLGZ1bmN0aW9uKGosayl7aWYoIWsuYWN0 aW9uc3x8IWsuYWN0aW9ucy5sZW5ndGgpcmV0dXJuO3ZhciBsPWguTWVyY3VyeVBh eWxvYWRTb3VyY2U7aWYoay5wYXlsb2FkX3NvdXJjZT09bC5DTElFTlRfU0VORF9N RVNTQUdFfHxrLnBheWxvYWRfc291cmNlPT1sLlVOS05PV04pcmV0dXJuO2Zvcih2 YXIgbT0wO208ay5hY3Rpb25zLmxlbmd0aDttKyspe3ZhciBuPWsuYWN0aW9uc1tt XSxvPW4uYWN0aW9uX3R5cGU7aWYobz09aC5NZXJjdXJ5QWN0aW9uVHlwZS5VU0VS X0dFTkVSQVRFRF9NRVNTQUdFJiZuLnRocmVhZF9pZCYmbi50aW1lc3RhbXA+aSlp PW4udGltZXN0YW1wO319KTt9KTsKX19kKCJNZXJjdXJ5UGFydGljaXBhbnRzIixb IkVudiIsIkpTTG9nZ2VyIiwiTWVyY3VyeUFzc2VydCIsIk1lcmN1cnlJRHMiLCJT aG9ydFByb2ZpbGVzIiwiTWVyY3VyeVNlcnZlclJlcXVlc3RzIiwiY29weVByb3Bl cnRpZXMiLCJnZXRPYmplY3RWYWx1ZXMiLCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0VudicpLGg9YignSlNMb2dnZXIn KSxpPWIoJ01lcmN1cnlBc3NlcnQnKSxqPWIoJ01lcmN1cnlJRHMnKSxrPWIoJ1No b3J0UHJvZmlsZXMnKSxsPWIoJ01lcmN1cnlTZXJ2ZXJSZXF1ZXN0cycpLG09Yign Y29weVByb3BlcnRpZXMnKSxuPWIoJ2dldE9iamVjdFZhbHVlcycpLG89YygnTWVy Y3VyeUNvbnN0YW50cycpLHA9J2ZiaWQ6JytnLnVzZXIscT17fSxyPXt9LHM9aC5j cmVhdGUoJ21lcmN1cnlfcGFydGljaXBhbnRzJyksdD1mdW5jdGlvbih3KXtpZigh cVt3LmlkXSl7cVt3LmlkXT1tKHt9LHcpO2lmKHcudmFuaXR5KXJbdy52YW5pdHld PXcuaWQ7fX07ZnVuY3Rpb24gdSh3KXtpLmlzRW1haWxQYXJ0aWNpcGFudElEKHcp O3ZhciB4PWoudG9rZW5pemUodykseT14LnZhbHVlO3JldHVybiB7Z2VuZGVyOm8u TWVyY3VyeVBhcnRpY2lwYW50c0NvbnN0YW50cy5VTktOT1dOX0dFTkRFUixocmVm Om51bGwsaWQ6dyxpbWFnZV9zcmM6by5NZXJjdXJ5UGFydGljaXBhbnRzQ29uc3Rh bnRzLkVNQUlMX0lNQUdFLG5hbWU6eSxzaG9ydF9uYW1lOnksZW1wbG95ZWU6ZmFs c2UsY2FsbF9wcm9tbzpmYWxzZX07fXZhciB2PXt1c2VyOnAsZ2V0SURGcm9tVmFu

aXR5T3JGQklEOmZ1bmN0aW9uKHcpe2lmKCF3KXJldHVybjtpZihyW3ddKXJldHVy biByW3ddO2lmKHcubWF0Y2goJ15cXGQrJCcpKXJldHVybiB2LmdldElERm9yVXNl cih3KTt9LGdldE5vdzpmdW5jdGlvbih3KXtyZXR1cm4gcVt3XTt9LGdldDpmdW5j dGlvbih3LHgpe2kuaXNQYXJ0aWNpcGFudElEKHcpO3YuZ2V0TXVsdGkoW3ddLGZ1 bmN0aW9uKHkpe3goeVt3XSk7fSk7fSxnZXRNdWx0aTpmdW5jdGlvbih3LHgpe2ku YWxsUGFydGljaXBhbnRJRHModyk7dmFyIHk9e30sej17fTt3LmZvckVhY2goZnVu Y3Rpb24oYmEpe2lmKHFbYmFdKXt5W2JhXT1tKHt9LHFbYmFdKTt9ZWxzZXt2YXIg Y2E9ai50b2tlbml6ZShiYSk7aWYoY2EudHlwZT09J2ZiaWQnKXt2YXIgZGE9Y2Eu dmFsdWU7eltiYV09ZGE7fWVsc2UgaWYoY2EudHlwZT09J2VtYWlsJyl5W2JhXT11 KGJhKTt9fSk7dmFyIGFhPW4oeik7aWYoYWEubGVuZ3RoKXtrLmdldE11bHRpKGFh LGZ1bmN0aW9uKGJhKXtmb3IodmFyIGNhIGluIHope3ZhciBkYT16W2NhXSxlYT1i YVtkYV07eVtjYV09e2dlbmRlcjplYS5nZW5kZXIsaHJlZjplYS51cmksaWQ6Y2Es aW1hZ2Vfc3JjOmVhLnRodW1iU3JjLG5hbWU6ZWEubmFtZSxzaG9ydF9uYW1lOmVh LmZpcnN0TmFtZSxlbXBsb3llZTplYS5lbXBsb3llZSxjYWxsX3Byb21vOmVhLnNo b3dWaWRlb1Byb21vLHR5cGU6ZWEudHlwZSx2YW5pdHk6ZWEudmFuaXR5fTt0KHlb Y2FdKTt9eCh5KTt9KTt9ZWxzZSB4KHkpO30sZ2V0VXNlcklEOmZ1bmN0aW9uKHcp e2lmKCFqLmlzVmFsaWQodykpcmV0dXJuIG51bGw7dmFyIHg9ai50b2tlbml6ZSh3 KTtpZih4LnR5cGUhPSdmYmlkJylyZXR1cm4gbnVsbDtyZXR1cm4geC52YWx1ZTt9 LGdldElERm9yVXNlcjpmdW5jdGlvbih3KXtyZXR1cm4gJ2ZiaWQ6Jyt3O30sYWRk UGFydGljaXBhbnRzOmZ1bmN0aW9uKHcpe3cuZm9yRWFjaCh0KTt9fTtsLnN1YnNj cmliZSgndXBkYXRlLXBhcnRpY2lwYW50cycsZnVuY3Rpb24odyx4KXt2LmFkZFBh cnRpY2lwYW50cyh4LnBhcnRpY2lwYW50c3x8W10pO30pO2UuZXhwb3J0cz12O30p OwpfX2QoIk1lcmN1cnlUaHJlYWRzIixbIkFyYml0ZXIiLCJjb3B5UHJvcGVydGll cyIsIkpTTG9nZ2VyIiwiY3JlYXRlT2JqZWN0RnJvbSIsIktleWVkQ2FsbGJhY2tN YW5hZ2VyIiwiVGltZXN0YW1wQ29udmVydGVyIiwiTWVyY3VyeUZvbGRlcnMiLCJN ZXJjdXJ5QXNzZXJ0IiwiTWVyY3VyeUF0dGFjaG1lbnQiLCJNZXJjdXJ5SURzIiwi TWVyY3VyeVNlcnZlclJlcXVlc3RzIiwiTWVyY3VyeVRocmVhZEluZm9ybWVyIiwi TWVyY3VyeVRpbWVzdGFtcFRyYWNrZXIiLCJNZXJjdXJ5UGFydGljaXBhbnRzIiwi TWVyY3VyeUNvbnN0YW50cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCdBcmJpdGVyJyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YignSlNMb2dnZXIn KSxqPWIoJ2NyZWF0ZU9iamVjdEZyb20nKSxrPWIoJ0tleWVkQ2FsbGJhY2tNYW5h Z2VyJyksbD1iKCdUaW1lc3RhbXBDb252ZXJ0ZXInKSxtPWIoJ01lcmN1cnlGb2xk ZXJzJyksbj1iKCdNZXJjdXJ5QXNzZXJ0Jyksbz1iKCdNZXJjdXJ5QXR0YWNobWVu dCcpLHA9YignTWVyY3VyeUlEcycpLHE9YignTWVyY3VyeVNlcnZlclJlcXVlc3Rz Jykscj1iKCdNZXJjdXJ5VGhyZWFkSW5mb3JtZXInKSxzPWIoJ01lcmN1cnlUaW1l c3RhbXBUcmFja2VyJyksdD1iKCdNZXJjdXJ5UGFydGljaXBhbnRzJyksdT1jKCdN ZXJjdXJ5Q29uc3RhbnRzJyksdj1pLmNyZWF0ZSgnbWVyY3VyeV90aHJlYWRzJyks dz1uZXcgaygpO2Z1bmN0aW9uIHgoaGEsaWEpe3ZhciBqYT1qKGhhLnBhcnRpY2lw YW50cyx0cnVlKSxrYT10LnVzZXI7aWEuZm9yRWFjaChmdW5jdGlvbihsYSl7aWYo amFbbGFdIT09dHJ1ZSl7aGEucGFydGljaXBhbnRzLnB1c2gobGEpO2lmKGxhPT09 a2EpaGEuaXNfc3Vic2NyaWJlZD10cnVlO319KTt9ZnVuY3Rpb24geShoYSxpYSl7 aGEucGFydGljaXBhbnRzLnJlbW92ZShpYSk7aWYoaWE9PT10LnVzZXIpaGEuaXNf c3Vic2NyaWJlZD1mYWxzZTt9ZnVuY3Rpb24geihoYSxpYSl7aWYoaGEucGFydGlj aXBhbnRzWzBdIT1pYSl7aGEucGFydGljaXBhbnRzLnJlbW92ZShpYSk7aGEucGFy dGljaXBhbnRzLnVuc2hpZnQoaWEpO319ZnVuY3Rpb24gYWEoaGEsaWEpe3ZhciBq YT1pYS5ib2R5LGthPWlhLnN1YmplY3QsbGE9Jyc7aWYoa2Epe2thPWthLnRvTG93 ZXJDYXNlKCk7aWYoamEuc2xpY2UoMCxrYS5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9 PWthKXtsYT1qYTt9ZWxzZSBpZihqYSl7bGE9a2ErJyBcdTAwQjcgJytqYTt9ZWxz ZSBsYT1rYTt9ZWxzZSBsYT1qYTtoYS5zbmlwcGV0PWxhO2hhLnNuaXBwZXRfaGFz X2F0dGFjaG1lbnQ9aWEuaGFzX2F0dGFjaG1lbnQ7aWYoaWEucmF3X2F0dGFjaG1l bnRzJiZpYS5yYXdfYXR0YWNobWVudHMubGVuZ3RoPjApe3ZhciBtYT1vLmNvbnZl cnRSYXcoaWEucmF3X2F0dGFjaG1lbnRzKTtoYS5zbmlwcGV0X2F0dGFjaG1lbnRz PW1hO31lbHNlIGhhLnNuaXBwZXRfYXR0YWNobWVudHM9aWEuYXR0YWNobWVudHM7 aGEuaXNfZm9yd2FyZGVkX3NuaXBwZXQ9ISFpYS5mb3J3YXJkX2NvdW50O31mdW5j dGlvbiBiYShoYSxpYSl7aWYoIWhhKXJldHVybiBmYWxzZTt2YXIgamE9IWhhLnVu cmVhZF9jb3VudDtpZihpYT09amEpcmV0dXJuIGZhbHNlO2hhLnVucmVhZF9jb3Vu dD1pYT8wOjE7dy5zZXRSZXNvdXJjZShoYS50aHJlYWRfaWQsaGEpO3IudXBkYXRl ZFRocmVhZChoYS50aHJlYWRfaWQpO3JldHVybiB0cnVlO31mdW5jdGlvbiBjYSho YSl7dmFyIGlhPXcuZ2V0QWxsUmVzb3VyY2VzKCk7Zm9yKHZhciBqYSBpbiBpYSl7 dmFyIGthPWlhW2phXTtpZihrYS5mb2xkZXI9PWhhKXtrYS51bnJlYWRfY291bnQ9

MDt3LnNldFJlc291cmNlKGphLGthKTtyLnVwZGF0ZWRUaHJlYWQoamEpO319fWZ1 bmN0aW9uIGRhKGhhLGlhKXtpZighaGF8fGhhLmNoYXRfY2xlYXJfdGltZT09PWlh KXJldHVybiBmYWxzZTtoYS5jaGF0X2NsZWFyX3RpbWU9aWE7dy5zZXRSZXNvdXJj ZShoYS50aHJlYWRfaWQsaGEpO3IucmVvcmRlcmVkTWVzc2FnZXMoaGEudGhyZWFk X2lkKTtyZXR1cm4gdHJ1ZTt9ZnVuY3Rpb24gZWEoaGEsaWEsamEpe3ZhciBrYT1p YS5hY3Rpb25fdHlwZTtpZihrYT09dS5NZXJjdXJ5QWN0aW9uVHlwZS5VU0VSX0dF TkVSQVRFRF9NRVNTQUdFfHxrYT09dS5NZXJjdXJ5QWN0aW9uVHlwZS5MT0dfTUVT U0FHRSl7aWEuaXNfdW5yZWFkJiZoYS51bnJlYWRfY291bnQrKztoYS5pc19hcmNo aXZlZD1mYWxzZTt9c3dpdGNoKGthKXtjYXNlIHUuTWVyY3VyeUFjdGlvblR5cGUu VVNFUl9HRU5FUkFURURfTUVTU0FHRTp6KGhhLGlhLmF1dGhvcik7YnJlYWs7Y2Fz ZSB1Lk1lcmN1cnlBY3Rpb25UeXBlLkxPR19NRVNTQUdFOnZhciBsYT1pYS5sb2df bWVzc2FnZV90eXBlO2lmKGxhPT11Lk1lcmN1cnlMb2dNZXNzYWdlVHlwZS5TVUJT Q1JJQkUpe3goaGEsaWEubG9nX21lc3NhZ2VfZGF0YS5hZGRlZF9wYXJ0aWNpcGFu dHMpO31lbHNlIGlmKGxhPT11Lk1lcmN1cnlMb2dNZXNzYWdlVHlwZS5VTlNVQlND UklCRSl7eShoYSxpYS5hdXRob3IpO31lbHNlIGlmKGxhPT11Lk1lcmN1cnlMb2dN ZXNzYWdlVHlwZS5USFJFQURfSU1BR0Upe2hhLmltYWdlX3NyYz1pYS5sb2dfbWVz c2FnZV9kYXRhLmltYWdlP2lhLmxvZ19tZXNzYWdlX2RhdGEuaW1hZ2UucHJldmll d191cmw6bnVsbDt9ZWxzZSBpZihsYT09dS5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUu VEhSRUFEX05BTUUpaGEubmFtZT1pYS5sb2dfbWVzc2FnZV9kYXRhLm5hbWU7YnJl YWs7Y2FzZSB1Lk1lcmN1cnlBY3Rpb25UeXBlLkNIQU5HRV9SRUFEX1NUQVRVUzpp ZihpYS50aW1lc3RhbXApci5jaGFuZ2VkVGhyZWFkUmVhZFN0YXRlKGhhLnRocmVh ZF9pZCxpYS5tYXJrX2FzX3JlYWQsaWEudGltZXN0YW1wKTtiYShoYSxpYS5tYXJr X2FzX3JlYWQpO2JyZWFrO2Nhc2UgdS5NZXJjdXJ5QWN0aW9uVHlwZS5DTEVBUl9D SEFUOmRhKGhhLGlhLmNsZWFyX3RpbWUpO2JyZWFrO2Nhc2UgdS5NZXJjdXJ5QWN0 aW9uVHlwZS5DSEFOR0VfQVJDSElWRURfU1RBVFVTOmhhLmlzX2FyY2hpdmVkPWlh LmFyY2hpdmVkO2JyZWFrO2Nhc2UgdS5NZXJjdXJ5QWN0aW9uVHlwZS5DSEFOR0Vf Rk9MREVSOmhhLmZvbGRlcj1pYS5uZXdfZm9sZGVyO2JyZWFrO2Nhc2UgdS5NZXJj dXJ5QWN0aW9uVHlwZS5ERUxFVEVfTUVTU0FHRVM6aWYoamEpe2hhLnNuaXBwZXQ9 Jy4uLic7aGEuc25pcHBldF9oYXNfYXR0YWNobWVudD1mYWxzZTtoYS5zbmlwcGV0 X2F0dGFjaG1lbnRzPW51bGw7aGEuaXNfZm9yd2FyZGVkX3NuaXBwZXQ9ZmFsc2U7 ci51cGRhdGVkVGhyZWFkKGlhLnRocmVhZF9pZCk7fWJyZWFrO31pZihpYS5hY3Rp b25faWQpaGEubGFzdF9hY3Rpb25faWQ9bC5tYXhWYWxpZEFjdGlvbklEKGlhLmFj dGlvbl9pZCxoYS5sYXN0X2FjdGlvbl9pZCk7fWZ1bmN0aW9uIGZhKGhhKXt2YXIg aWE9cS50b2tlbml6ZVRocmVhZElEKGhhLnRocmVhZF9pZCk7aWYoaWEudHlwZT09 J2dyb3VwJyl7di5lcnJvcignaW52YWxpZF9uZXdfdGhyZWFkX21lc3NhZ2UnLGhh KTtyZXR1cm4gdW5kZWZpbmVkO312YXIgamE9e3RocmVhZF9pZDpoYS50aHJlYWRf aWQsbGFzdF9hY3Rpb25faWQ6aGEuYWN0aW9uX2lkLHBhcnRpY2lwYW50czpoYS5z cGVjaWZpY190b19saXN0LG5hbWU6bnVsbCxzbmlwcGV0OmhhLmJvZHksc25pcHBl dF9oYXNfYXR0YWNobWVudDpmYWxzZSxzbmlwcGV0X2F0dGFjaG1lbnRzOltdLHVu cmVhZF9jb3VudDowLGltYWdlX3NyYzpudWxsLHRpbWVzdGFtcF9hYnNvbHV0ZTpo YS50aW1lc3RhbXBfYWJzb2x1dGUsdGltZXN0YW1wX3JlbGF0aXZlOmhhLnRpbWVz dGFtcF9yZWxhdGl2ZSx0aW1lc3RhbXA6aGEudGltZXN0YW1wLGlzX2Nhbm9uaWNh bF91c2VyOmlhLnR5cGU9PSd1c2VyJyxpc19jYW5vbmljYWw6aWEudHlwZT09J3Vz ZXInfHxpYS50eXBlPT0nZW1haWwnLGlzX3N1YnNjcmliZWQ6dHJ1ZSxyb290X21l c3NhZ2VfdGhyZWFkaW5nX2lkOmhhLm1lc3NhZ2VfaWQsZm9sZGVyOnUuTWVzc2Fn aW5nVGFnLklOQk9YLGlzX2FyY2hpdmVkOmZhbHNlLG1vZGU6dS5NZXJjdXJ5VGhy ZWFkTW9kZS5USVRBTl9PUklHSU5BVEVEfTt3LnNldFJlc291cmNlKGphLnRocmVh ZF9pZCxqYSk7cmV0dXJuIGphO31nLnN1YnNjcmliZShpLkRVTVBfRVZFTlQsZnVu Y3Rpb24oaGEsaWEpe2lhLm1lc3NhZ2luZz1pYS5tZXNzYWdpbmd8fHt9O2lhLm1l c3NhZ2luZy50aHJlYWRzPXcuZHVtcFJlc291cmNlcygpO30pO3ZhciBnYT17Z2V0 VGhyZWFkTWV0YU5vdzpmdW5jdGlvbihoYSl7bi5pc1RocmVhZElEKGhhKTtyZXR1 cm4gdy5nZXRSZXNvdXJjZShoYSk7fSxnZXRUaHJlYWRNZXRhOmZ1bmN0aW9uKGhh LGlhKXtuLmlzVGhyZWFkSUQoaGEpO3ZhciBqYT13LmV4ZWN1dGVPckVucXVldWUo aGEsaWEpLGthPXcuZ2V0VW5hdmFpbGFibGVSZXNvdXJjZXMoamEpO2lmKGthLmxl bmd0aCl7dmFyIGxhPXEudG9rZW5pemVUaHJlYWRJRChoYSk7aWYobGEudHlwZT09 J3VzZXInKXtnYS5nZXRDYW5vbmljYWxUaHJlYWRUb1VzZXIobGEudmFsdWUpO31l bHNlIHEuZmV0Y2hUaHJlYWREYXRhKGthKTt9cmV0dXJuIGphO30sdW5zdWJzY3Jp YmU6ZnVuY3Rpb24oaGEpe3cudW5zdWJzY3JpYmUoaGEpO30sY2hhbmdlVGhyZWFk UmVhZFN0YXR1czpmdW5jdGlvbihoYSxpYSl7bi5pc1RocmVhZElEKGhhKTt2YXIg amE9dy5nZXRSZXNvdXJjZShoYSk7aWYoYmEoamEsaWEpKXEuY2hhbmdlVGhyZWFk

UmVhZFN0YXR1cyhoYSxpYSxtLmdldEZyb21NZXRhKGphKSk7fSxjaGFuZ2VUaHJl YWRBcmNoaXZlZFN0YXR1czpmdW5jdGlvbihoYSxpYSl7bi5pc1RocmVhZElEKGhh KTt2YXIgamE9dy5nZXRSZXNvdXJjZShoYSk7aWYoamEuaXNfYXJjaGl2ZWQhPWlh KXtqYS5pc19hcmNoaXZlZD1pYTtyLnVwZGF0ZWRUaHJlYWQoamEudGhyZWFkX2lk KTtxLmNoYW5nZVRocmVhZEFyY2hpdmVkU3RhdHVzKGhhLGlhKTt9fSxtYXJrVGhy ZWFkU3BhbTpmdW5jdGlvbihoYSl7cS5tYXJrVGhyZWFkU3BhbShoYSk7fSx1bm1h cmtUaHJlYWRTcGFtOmZ1bmN0aW9uKGhhKXtxLnVubWFya1RocmVhZFNwYW0oaGEp O30sY2hhbmdlRm9sZGVyOmZ1bmN0aW9uKGhhLGlhKXtuLmlzVGhyZWFkSUQoaGEp O3ZhciBqYT13LmdldFJlc291cmNlKGhhKTtpZihqYSYmamEuZm9sZGVyIT1pYSl7 amEuZm9sZGVyPWlhO3IudXBkYXRlZFRocmVhZChqYS50aHJlYWRfaWQpO3EuY2hh bmdlVGhyZWFkRm9sZGVyKGhhLGlhKTt9fSxkZWxldGVUaHJlYWQ6ZnVuY3Rpb24o aGEpe24uaXNUaHJlYWRJRChoYSk7cS5kZWxldGVUaHJlYWQoaGEpO30sdXBkYXRl VGhyZWFkczpmdW5jdGlvbihoYSl7aWYoIWhhfHwhaGEubGVuZ3RoKXJldHVybjt2 YXIgaWE9e307aGEuZm9yRWFjaChmdW5jdGlvbihqYSl7aWFbamEudGhyZWFkX2lk XT1qYTt9KTt3LmFkZFJlc291cmNlc0FuZEV4ZWN1dGUoaWEpO30sdXBkYXRlTWV0 YWRhdGFCeUFjdGlvbnM6ZnVuY3Rpb24oaGEsaWEpe2lmKCFoYXx8IWhhLmxlbmd0 aClyZXR1cm47dmFyIGphPXt9LGthPXt9LGxhPXt9O2Zvcih2YXIgbWE9MDttYTxo YS5sZW5ndGg7bWErKyl7dmFyIG5hPWhhW21hXTtpZihuYS5pc19mb3J3YXJkKWNv bnRpbnVlO3ZhciBvYT1uYS5hY3Rpb25fdHlwZSxwYT1uYS50aHJlYWRfaWQ7bi5p c1RocmVhZElEKHBhKTt2YXIgcWE9Z2EuZ2V0VGhyZWFkTWV0YU5vdyhwYSk7aWYo b2E9PXUuTWVyY3VyeUFjdGlvblR5cGUuTE9HX01FU1NBR0UmJm5hLmxvZ19tZXNz YWdlX3R5cGU9PXUuTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlNFUlZFUl9FUlJPUilj b250aW51ZTtpZighcWEmJiFuYS5hY3Rpb25faWQmJm9hPT11Lk1lcmN1cnlBY3Rp b25UeXBlLlVTRVJfR0VORVJBVEVEX01FU1NBR0UpcWE9ZmEobmEpO2lmKHFhKXtp ZihvYT09dS5NZXJjdXJ5QWN0aW9uVHlwZS5ERUxFVEVfVEhSRUFEKXtyLmRlbGV0 ZWRUaHJlYWQocGEpO2NvbnRpbnVlO312YXIgcmE9ISFuYS5hY3Rpb25faWQ7aWYo b2E9PXUuTWVyY3VyeUFjdGlvblR5cGUuTE9HX01FU1NBR0V8fG9hPT11Lk1lcmN1 cnlBY3Rpb25UeXBlLlVTRVJfR0VORVJBVEVEX01FU1NBR0UpcmE9IWlhO2lmKG5h LnRpbWVzdGFtcDw9cWEudGltZXN0YW1wJiZyYSl7di5sb2coJ2lnbm9yZV9vbGRf dGltZXN0YW1wJyx7YWN0aW9uOm5hLGZyb21fY2xpZW50OmlhLHRocmVhZF90aW1l c3RhbXA6cWEudGltZXN0YW1wfSk7Y29udGludWU7fWlmKCFsYVtwYV0pbGFbcGFd PWgoe30scWEpO2VhKGxhW3BhXSxuYSxpYSk7aWYob2E9PXUuTWVyY3VyeUFjdGlv blR5cGUuVVNFUl9HRU5FUkFURURfTUVTU0FHRSlqYVtwYV09bmE7aWYob2E9PXUu TWVyY3VyeUFjdGlvblR5cGUuVVNFUl9HRU5FUkFURURfTUVTU0FHRXx8b2E9PXUu TWVyY3VyeUFjdGlvblR5cGUuTE9HX01FU1NBR0V8fG9hPT11Lk1lcmN1cnlBY3Rp b25UeXBlLlNFTkRfTUVTU0FHRSlpZihuYSYmbmEudGltZXN0YW1wJiYoIWthW3Bh XXx8bmEudGltZXN0YW1wPmthW3BhXS50aW1lc3RhbXApKWthW3BhXT1uYTt9fWZv cih2YXIgc2EgaW4gbGEpe3ZhciB0YT1sYVtzYV0sdWE9amFbc2FdO2lmKHVhKWFh KHRhLHVhKTt2YXIgdmE9a2Fbc2FdLHdhPXRhLnRpbWVzdGFtcDtpZih2YSYmdmEu dGltZXN0YW1wPndhKXRhPWgodGEse3RpbWVzdGFtcF9hYnNvbHV0ZTp2YS50aW1l c3RhbXBfYWJzb2x1dGUsdGltZXN0YW1wX3JlbGF0aXZlOnZhLnRpbWVzdGFtcF9y ZWxhdGl2ZSx0aW1lc3RhbXA6dmEudGltZXN0YW1wfSk7dy5zZXRSZXNvdXJjZShz YSx0YSk7fX0sZ2V0Q2Fub25pY2FsVGhyZWFkVG9Vc2VyOmZ1bmN0aW9uKGhhLGlh KXtyZXR1cm4gZ2EuZ2V0Q2Fub25pY2FsVGhyZWFkVG9QYXJ0aWNpcGFudCgnZmJp ZDonK2hhLGlhKTt9LGdldENhbm9uaWNhbFRocmVhZFRvUGFydGljaXBhbnQ6ZnVu Y3Rpb24oaGEsaWEpe3ZhciBqYT1nYS5nZXRUaHJlYWRJREZvclBhcnRpY2lwYW50 KGhhKSxrYT13LmdldFJlc291cmNlKGphKTtpZih0eXBlb2Yga2E9PSd1bmRlZmlu ZWQnKXtrYT1nYS5jcmVhdGVOZXdMb2NhbFRocmVhZChqYSxbdC51c2VyLGhhXSxp YSk7cS5mZXRjaFRocmVhZERhdGEoW2phXSk7fXJldHVybiBrYTt9LGdldFRocmVh ZElkRm9yVXNlcjpmdW5jdGlvbihoYSl7cmV0dXJuICd1c2VyOicraGE7fSxnZXRU aHJlYWRJZEZvckVtYWlsOmZ1bmN0aW9uKGhhKXtyZXR1cm4gJ2VtYWlsOicraGE7 fSxnZXRUaHJlYWRJREZvclBhcnRpY2lwYW50OmZ1bmN0aW9uKGhhKXt2YXIgaWE9 cC50b2tlbml6ZShoYSk7cmV0dXJuIGlhLnR5cGU9PSdmYmlkJz9nYS5nZXRUaHJl YWRJZEZvclVzZXIoaWEudmFsdWUpOmdhLmdldFRocmVhZElkRm9yRW1haWwoaWEu dmFsdWUpO30sY3JlYXRlTmV3TG9jYWxUaHJlYWQ6ZnVuY3Rpb24oaGEsaWEsamEp e3ZhciBrYT13LmdldFJlc291cmNlKGhhKTtpZigha2Epe3ZhciBsYT1xLnRva2Vu aXplVGhyZWFkSUQoaGEpO2thPXt0aHJlYWRfaWQ6aGEsbGFzdF9hY3Rpb25faWQ6 bnVsbCxwYXJ0aWNpcGFudHM6aWEsbmFtZTpudWxsLHNuaXBwZXQ6Jycsc25pcHBl dF9oYXNfYXR0YWNobWVudDpmYWxzZSx1bnJlYWRfY291bnQ6amE/amE6MCxpbWFn ZV9zcmM6bnVsbCx0aW1lc3RhbXBfYWJzb2x1dGU6bnVsbCx0aW1lc3RhbXBfcmVs

YXRpdmU6bnVsbCx0aW1lc3RhbXA6bnVsbCxpc19jYW5vbmljYWxfdXNlcjpsYS50 eXBlPT0ndXNlcicsaXNfY2Fub25pY2FsOmxhLnR5cGU9PSd1c2VyJ3x8bGEudHlw ZT09J2VtYWlsJyxpc19zdWJzY3JpYmVkOnRydWUscm9vdF9tZXNzYWdlX3RocmVh ZGluZ19pZDpudWxsLGZvbGRlcjp1Lk1lc3NhZ2luZ1RhZy5JTkJPWCxpc19hcmNo aXZlZDpmYWxzZSxtb2RlOnUuTWVyY3VyeVRocmVhZE1vZGUuVElUQU5fT1JJR0lO QVRFRH07dy5zZXRSZXNvdXJjZShoYSxrYSk7fXJldHVybiBrYTt9LGFkZFBhcnRp Y2lwYW50c1RvVGhyZWFkTG9jYWxseTpmdW5jdGlvbihoYSxpYSl7dmFyIGphPXcu Z2V0UmVzb3VyY2UoaGEpO2lmKGphKXt4KGphLGlhKTtyLnVwZGF0ZWRUaHJlYWQo amEudGhyZWFkX2lkKTt9fSxnZXRDYW5vbmljYWxVc2VySW5UaHJlYWQ6ZnVuY3Rp b24oaGEpe3ZhciBpYT1xLnRva2VuaXplVGhyZWFkSUQoaGEpO3JldHVybiBpYS50 eXBlPT0ndXNlcic/aWEudmFsdWU6bnVsbDt9LGdldENhbm9uaWNhbEdyb3VwSW5U aHJlYWQ6ZnVuY3Rpb24oaGEpe3ZhciBpYT1xLnRva2VuaXplVGhyZWFkSUQoaGEp O3JldHVybiBpYS50eXBlPT0nZ3JvdXAnP2lhLnZhbHVlOm51bGw7fSxpc0VtcHR5 TG9jYWxUaHJlYWQ6ZnVuY3Rpb24oaGEpe3ZhciBpYT13LmdldFJlc291cmNlKGhh KTtpZighaWEpcmV0dXJuIGZhbHNlO3ZhciBqYT1xLnRva2VuaXplVGhyZWFkSUQo aGEpO3JldHVybiBqYS50eXBlPT0ncm9vdCcmJiFpYS50aW1lc3RhbXA7fSxpc011 bHRpY2hhdFRocmVhZDpmdW5jdGlvbihoYSl7dmFyIGlhPXEudG9rZW5pemVUaHJl YWRJRChoYSkudHlwZTtyZXR1cm4gaWEhPSd1c2VyJyYmaWEhPSdncm91cCcmJmlh IT0nZW1haWwnO319O3Euc3Vic2NyaWJlKCd1cGRhdGUtdGhyZWFkcycsZnVuY3Rp b24oaGEsaWEpe3ZhciBqYT0oaWEuYWN0aW9uc3x8W10pLmZpbHRlcihmdW5jdGlv bihuYSl7cmV0dXJuIG5hLnRocmVhZF9pZDt9KTtnYS51cGRhdGVUaHJlYWRzKGlh LnRocmVhZHMpO2dhLnVwZGF0ZU1ldGFkYXRhQnlBY3Rpb25zKGphLGlhLmZyb21f Y2xpZW50KTsoaWEudGhyZWFkc3x8W10pLmZvckVhY2goZnVuY3Rpb24obmEpe3Iu dXBkYXRlZFRocmVhZChuYS50aHJlYWRfaWQpO30pO3ZhciBrYT1pYS5nbG9iYWxf YWN0aW9uc3x8W107Zm9yKHZhciBsYT0wO2xhPGthLmxlbmd0aDtsYSsrKXt2YXIg bWE9a2FbbGFdO2lmKG1hLmFjdGlvbl90eXBlPT11Lk1lcmN1cnlHbG9iYWxBY3Rp b25UeXBlLk1BUktfQUxMX1JFQUQpY2EobWEuZm9sZGVyKTt9fSk7ZS5leHBvcnRz PWdhO30pOwpfX2QoIkNoYXRBY3Rpdml0eSIsWyJBcmJpdGVyIiwiQXZhaWxhYmxl TGlzdCIsIkF2YWlsYWJsZUxpc3RDb25zdGFudHMiLCJjb3B5UHJvcGVydGllcyIs ImV2ZW50LWV4dGVuc2lvbnMiLCJKU0xvZ2dlciIsIk1lcmN1cnlUaHJlYWRzIiwi UHJlc2VuY2VTdGF0ZSIsIlVzZXJBY3Rpdml0eSIsIk1lcmN1cnlDb25maWciXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9YignQXZh aWxhYmxlTGlzdCcpLGk9YignQXZhaWxhYmxlTGlzdENvbnN0YW50cycpLGo9Yign Y29weVByb3BlcnRpZXMnKTtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGs9Yign SlNMb2dnZXInKSxsPWIoJ01lcmN1cnlUaHJlYWRzJyksbT1iKCdQcmVzZW5jZVN0 YXRlJyksbj1iKCdVc2VyQWN0aXZpdHknKSxvPWMoJ01lcmN1cnlDb25maWcnKSxw PW8uYWN0aXZpdHlfbGltaXR8fDYwMDAwLHE9by5pZGxlX2xpbWl0fHwxODAwMDAw LHI9by5pZGxlX3BvbGxfaW50ZXJ2YWx8fDMwMDAwMCxzPWsuY3JlYXRlKCdjaGF0 X2FjdGl2aXR5JyksdD1EYXRlLm5vdygpLHU9dCx2PXRydWU7ZnVuY3Rpb24gdygp e3ZhciBhYT1EYXRlLm5vdygpO3JldHVybiAhISh2JiYoYWEtdDxwKSk7fXZhciB4 PWoobmV3IGcoKSx7aXNBY3RpdmU6d30pO2Z1bmN0aW9uIHkoKXt2YXIgYWE9dDt0 PURhdGUubm93KCk7aWYodC1hYT5xKXtzLmRlYnVnKCdpZGxlX3RvX2FjdGl2ZScs YWEpO20uZG9TeW5jKCk7fXguaW5mb3JtKCdhY3Rpdml0eScpO31oLnN1YnNjcmli ZShpLk9OX0FWQUlMQUJJTElUWV9DSEFOR0VELGZ1bmN0aW9uKCl7aWYoIWguaXNV c2VySWRsZSgpKXU9RGF0ZS5ub3coKTt9KTtFdmVudC5saXN0ZW4od2luZG93LCdm b2N1cycsZnVuY3Rpb24oKXt2PXRydWU7eSgpO30pO0V2ZW50Lmxpc3Rlbih3aW5k b3csJ2JsdXInLGZ1bmN0aW9uKCl7dj1mYWxzZTt9KTtuLnN1YnNjcmliZShmdW5j dGlvbigpe3koKTt9KTtmdW5jdGlvbiB6KGFhKXt2YXIgYmE9YWEmJmFhLmF0JiZt LnZlcmlmeU51bWJlcihhYS5hdCk7aWYodHlwZW9mIGJhIT09J251bWJlcicpYmE9 bnVsbDtyZXR1cm4gYmF8fDA7fXNldEludGVydmFsKGZ1bmN0aW9uKCl7dmFyIGFh PURhdGUubm93KCksYmE9eihtLmdldCgpKSxjYT1NYXRoLm1heCh0LGJhLHUpO2lm KGFhLWNhPnEpe3MuZGVidWcoJ2lkbGUnLHtjb29raWU6YmEsbG9jYWw6dCxwcmVz ZW5jZTp1fSk7eC5pbmZvcm0oJ2lkbGUnLGFhLWNhKTt9fSxyKTttLnJlZ2lzdGVy U3RhdGVTdG9yZXIoZnVuY3Rpb24oYWEpe3ZhciBiYT16KGFhKTtpZihiYTx0KWFh LmF0PXQ7cmV0dXJuIGFhO30pO2cuc3Vic2NyaWJlKGsuRFVNUF9FVkVOVCxmdW5j dGlvbihhYSxiYSl7YmEuY2hhdF9hY3Rpdml0eT17YWN0aXZpdHlfbGltaXQ6cCxp ZGxlX2xpbWl0OnEsaWRsZV9wb2xsX2ludGVydmFsOnIsbGFzdF9hY3RpdmVfdGlt ZTp0LGxhc3RfZ2xvYmFsX2FjdGl2ZV90aW1lOnV9O30pO2UuZXhwb3J0cz14O30p OwpfX2QoIk1lcmN1cnlNZXNzYWdlcyIsWyJBcmJpdGVyIiwiY29weVByb3BlcnRp ZXMiLCJFbnYiLCJKU0xvZ2dlciIsInJhbmRvbUludCIsInR4IiwiS2V5ZWRDYWxs

YmFja01hbmFnZXIiLCJNZXJjdXJ5QXNzZXJ0IiwiTWVyY3VyeUlEcyIsIk1lcmN1 cnlNZXNzYWdlSURzIiwiTWVyY3VyeVBhcnRpY2lwYW50cyIsIlByZXNlbmNlVXRp bCIsIlJhbmdlZENhbGxiYWNrTWFuYWdlciIsIk1lcmN1cnlTZXJ2ZXJSZXF1ZXN0 cyIsIk1lcmN1cnlTZXJ2ZXJEaXNwYXRjaGVyIiwiTWVyY3VyeVRocmVhZEluZm9y bWVyIiwiTWVyY3VyeVRocmVhZHMiLCJNZXJjdXJ5Q29uc3RhbnRzIiwiTWVyY3Vy eUNvbmZpZyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVy JyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YignRW52Jyksaj1iKCdKU0xvZ2dl cicpLGs9YigncmFuZG9tSW50JyksbD1iKCd0eCcpLG09YignS2V5ZWRDYWxsYmFj a01hbmFnZXInKSxuPWIoJ01lcmN1cnlBc3NlcnQnKSxvPWIoJ01lcmN1cnlJRHMn KSxwPWIoJ01lcmN1cnlNZXNzYWdlSURzJykscT1iKCdNZXJjdXJ5UGFydGljaXBh bnRzJykscj1iKCdQcmVzZW5jZVV0aWwnKSxzPWIoJ1JhbmdlZENhbGxiYWNrTWFu YWdlcicpLHQ9YignTWVyY3VyeVNlcnZlclJlcXVlc3RzJyksdT1iKCdNZXJjdXJ5 U2VydmVyRGlzcGF0Y2hlcicpLHY9YignTWVyY3VyeVRocmVhZEluZm9ybWVyJyks dz1iKCdNZXJjdXJ5VGhyZWFkcycpLHg9YygnTWVyY3VyeUNvbnN0YW50cycpLHk9 YygnTWVyY3VyeUNvbmZpZycpLHo9eC5NZXJjdXJ5R2VuZXJpY0NvbnN0YW50cyxh YT17fSxiYT17fSxjYT17fSxkYT1mdW5jdGlvbihzYSl7dmFyIHRhPXNhO2lmKGJh W3NhXSl0YT1iYVtzYV07cmV0dXJuIGFhW3RhXTt9LGVhPXt9LGZhPXt9LGdhPW5l dyBtKCk7ZnVuY3Rpb24gaGEoc2Epe2lmKHNhLnN0YXR1cz09PXVuZGVmaW5lZClz YS5zdGF0dXM9eC5NZXJjdXJ5QWN0aW9uU3RhdHVzLlVOU0VOVDtzYS50aW1lc3Rh bXBfYWJzb2x1dGU9IkhhcmkgSW5pIjtzYS5tZXNzYWdlX2lkPXNhLm1lc3NhZ2Vf aWR8fG5hLmdlbmVyYXRlTmV3Q2xpZW50TWVzc2FnZUlEKHNhLnRpbWVzdGFtcCk7 dmFyIHRhPXEudXNlcjtzYS5zcGVjaWZpY190b19saXN0PXNhLnNwZWNpZmljX3Rv X2xpc3R8fFtdO2lmKHNhLnNwZWNpZmljX3RvX2xpc3QubGVuZ3RoJiZzYS5zcGVj aWZpY190b19saXN0LmluZGV4T2YodGEpPT09LTEpc2Euc3BlY2lmaWNfdG9fbGlz dC5wdXNoKHRhKTtpZighc2EudGhyZWFkX2lkKXtpZihzYS5zcGVjaWZpY190b19s aXN0Lmxlbmd0aD09MSl7c2EudGhyZWFkX2lkPSd1c2VyOicraS51c2VyO31lbHNl IGlmKHNhLnNwZWNpZmljX3RvX2xpc3QubGVuZ3RoPT0yKXt2YXIgdWE9c2Euc3Bl Y2lmaWNfdG9fbGlzdFswXT09dGE/c2Euc3BlY2lmaWNfdG9fbGlzdFsxXTpzYS5z cGVjaWZpY190b19saXN0WzBdO2lmKG8udG9rZW5pemUodWEpLnR5cGU9PSdlbWFp bCcpe3NhLnRocmVhZF9pZD16LlBFTkRJTkdfVEhSRUFEX0lEO31lbHNlIHNhLnRo cmVhZF9pZD13LmdldFRocmVhZElERm9yUGFydGljaXBhbnQodWEpO31zYS50aHJl YWRfaWQ9c2EudGhyZWFkX2lkfHwncm9vdDonK3NhLm1lc3NhZ2VfaWQ7fWlmKCFz YS5zcGVjaWZpY190b19saXN0Lmxlbmd0aCl7dmFyIHZhPXQudG9rZW5pemVUaHJl YWRJRChzYS50aHJlYWRfaWQpO2lmKHZhLnR5cGU9PSd1c2VyJylzYS5zcGVjaWZp Y190b19saXN0PVsnZmJpZDonK3ZhLnZhbHVlLHRhXTt9fWZ1bmN0aW9uIGlhKHNh LHRhLHVhKXt2YXIgdmE9cmEodGEpP1t4Lk1lcmN1cnlNZXNzYWdlU291cmNlVGFn cy5DSEFUXTpbXSx3YT1EYXRlLm5vdygpLHhhPURhdGUuZm9ybWF0KHlbJzI0aF90 aW1lcyddPydIOmknOidnOmlhJyxNYXRoLmZsb29yKHdhLzEwMDApKSx5YT17YWN0 aW9uX3R5cGU6c2EsdGhyZWFkX2lkOnVhLGF1dGhvcjpxLnVzZXIsYXV0aG9yX2Vt YWlsOm51bGwsY29vcmRpbmF0ZXM6bnVsbCx0aW1lc3RhbXA6d2EsdGltZXN0YW1w X2Fic29sdXRlOihuZXcgRGF0ZSh3YSkpLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRp bWVzdGFtcF9yZWxhdGl2ZTp4YSxpc191bnJlYWQ6ZmFsc2UsaXNfY2xlYXJlZDpm YWxzZSxpc19mb3J3YXJkOmZhbHNlLHNwb29mX3dhcm5pbmc6ZmFsc2Usc291cmNl OnRhLHNvdXJjZV90YWdzOnZhfTtyZXR1cm4geWE7fWZ1bmN0aW9uIGphKHNhKXtz d2l0Y2goc2Epe2Nhc2UgeC5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5VTktOT1dOOmNh c2UgeC5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5TRVJWRVJfSU5JVElBTF9EQVRBOmNh c2UgeC5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5TRVJWRVJfRkVUQ0hfVEhSRUFEX0lO Rk86Y2FzZSB4Lk1lcmN1cnlQYXlsb2FkU291cmNlLlNFUlZFUl9USFJFQURfU1lO QzpyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBrYShzYSl7cmV0 dXJuIHNhJiZzYS5zdWJzdHIoMCw2KT09PSdzZXJ2ZXInO31mdW5jdGlvbiBsYShz YSl7aWYoIWVhW3NhXSllYVtzYV09bmV3IHMoZnVuY3Rpb24odGEpe3JldHVybiBk YSh0YSkudGltZXN0YW1wO30sZnVuY3Rpb24odGEsdWEpe3JldHVybiB1YS10YTt9 KTtyZXR1cm4gZWFbc2FdO31nLnN1YnNjcmliZShqLkRVTVBfRVZFTlQsZnVuY3Rp b24oc2EsdGEpe3ZhciB1YT17fTtmb3IodmFyIHZhIGluIGFhKXt2YXIgd2E9YWFb dmFdLHhhPXdhLnRocmVhZF9pZDt1YVt4YV09dWFbeGFdfHx7fTt1YVt4YV1bd2Eu bWVzc2FnZV9pZF09aCh7fSx3YSk7fXRhLm1lc3NhZ2luZz10YS5tZXNzYWdpbmd8 fHt9O3RhLm1lc3NhZ2luZy5sb2NhbF9tZXNzYWdlX2lkcz1oKHt9LGJhKTt0YS5t ZXNzYWdpbmcubWVzc2FnZXM9dWE7fSk7ZnVuY3Rpb24gbWEoc2EsdGEpe3NhLmZv ckVhY2goZnVuY3Rpb24odWEpe3ZhciB2YT1sYSh1YSk7dmEuc2V0UmVhY2hlZEVu ZE9mQXJyYXkoKTt2LnJlb3JkZXJlZE1lc3NhZ2VzKHVhLHRhKTt9KTt9dmFyIG5h

PXtnZXRNZXNzYWdlc0Zyb21JRHM6ZnVuY3Rpb24oc2Epe3JldHVybiAoc2F8fFtd KS5tYXAoZGEpLmZpbHRlcihmdW5jdGlvbih0YSl7cmV0dXJuIHRhO30pO30saGFz TG9hZGVkTk1lc3NhZ2VzOmZ1bmN0aW9uKHNhLHRhKXt2YXIgdWE9bGEoc2EpO3Jl dHVybiB1YS5oYXNSZWFjaGVkRW5kT2ZBcnJheSgpfHx1YS5nZXRDdXJyZW50QXJy YXlTaXplKCk+PXRhO30sZ2V0VGhyZWFkTWVzc2FnZXNSYW5nZUltbWVkaWF0ZWx5 OmZ1bmN0aW9uKHNhLHRhLHVhLHZhKXtyZXR1cm4gbmEuZ2V0VGhyZWFkTWVzc2Fn ZXNSYW5nZShzYSx0YSx1YSx2YSx1LklNTUVESUFURSk7fSxnZXRUaHJlYWRNZXNz YWdlc1JhbmdlOmZ1bmN0aW9uKHNhLHRhLHVhLHZhLHdhKXt2YXIgeGE9bGEoc2Ep LHlhPWZ1bmN0aW9uKGRiKXt2YShvYShkYikpO30semE9eGEuZXhlY3V0ZU9yRW5x dWV1ZSh0YSx1YSx5YSksYWI9eGEuZ2V0VW5hdmFpbGFibGVSZXNvdXJjZXMoemEp LGJiPWNhW3NhXTtpZihhYi5sZW5ndGgmJiFiYil7dmFyIGNiPWZhW3NhXXx8MDt0 LmZldGNoVGhyZWFkTWVzc2FnZXMoc2EsY2IsYWIubGVuZ3RoLHdhKTt9ZWxzZSBj YVtzYV09ZmFsc2U7cmV0dXJuIHphO30sZ2V0VGhyZWFkTWVzc2FnZXNTaW5jZVRp bWVzdGFtcDpmdW5jdGlvbihzYSx0YSl7dmFyIHVhPWxhKHNhKSx2YT11YS5nZXRF bGVtZW50c1VudGlsKHRhKTtyZXR1cm4gb2EodmEpO30saGFzTG9hZGVkQWxsTWVz c2FnZXM6ZnVuY3Rpb24oc2Epe3JldHVybiBsYShzYSkuaGFzUmVhY2hlZEVuZE9m QXJyYXkoKTt9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKHNhLHRhKXtuLmlzVGhyZWFk SUQodGEpO3ZhciB1YT1sYSh0YSk7dWEudW5zdWJzY3JpYmUoc2EpO30saGFuZGxl VXBkYXRlczpmdW5jdGlvbihzYSx0YSx1YSl7dmFyIHZhPXt9LHdhPXt9LHhhPXgu TWVyY3VyeUFjdGlvblN0YXR1cztmb3IodmFyIHlhPTA7eWE8c2EubGVuZ3RoO3lh Kyspe3ZhciB6YT1zYVt5YV07aWYoemEuaXNfZm9yd2FyZHx8dWE9PXguTWVyY3Vy eVBheWxvYWRTb3VyY2UuU0VSVkVSX1NFQVJDSCl7aWYoIWFhW3phLm1lc3NhZ2Vf aWRdKWFhW3phLm1lc3NhZ2VfaWRdPXphO2NvbnRpbnVlO312YXIgYWI9emEuYWN0 aW9uX3R5cGU7aWYoYWI9PXguTWVyY3VyeUFjdGlvblR5cGUuU0VORF9NRVNTQUdF KXt2YXIgYmI9emEuY2xpZW50X21lc3NhZ2VfaWQ7aWYoYmImJmJhW2JiXSYmemEu c3RhdHVzKXtpZih6YS5zdGF0dXM9PXhhLlVOQ09ORklSTUVEKXtpZighd2FbemEu dGhyZWFkX2lkXSl3YVt6YS50aHJlYWRfaWRdPVtdO3dhW3phLnRocmVhZF9pZF0u cHVzaCh6YS5jbGllbnRfbWVzc2FnZV9pZCk7fWVsc2UgaWYoIXZhW3phLnRocmVh ZF9pZF0pdmFbemEudGhyZWFkX2lkXT1bXTt2YXIgY2I9ZGEoemEuY2xpZW50X21l c3NhZ2VfaWQpLGRiPWNiLnN0YXR1cztjYi5zdGF0dXM9emEuc3RhdHVzO2lmKHph LnN0YXR1cz09eGEuU1VDQ0VTUyl7bmEudXBkYXRlTG9jYWxNZXNzYWdlKHphLHVh KTtpZih6YS5jbGllbnRfdGhyZWFkX2lkPT16LlBFTkRJTkdfVEhSRUFEX0lEKXtj Yi50aHJlYWRfaWQ9emEudGhyZWFkX2lkO3ZhW3phLnRocmVhZF9pZF0ucHVzaChj Yi5tZXNzYWdlX2lkKTtnYS5zZXRSZXNvdXJjZShjYi5tZXNzYWdlX2lkLGNiLnRo cmVhZF9pZCk7fX1pZih0eXBlb2YgZGIhPSd1bmRlZmluZWQnfHx6YS5zdGF0dXM9 PXhhLlJFUVVFU1RfRVJST1J8fHphLnN0YXR1cz09eGEuVFJBTlNQT1JUX0VSUk9S fHx6YS5zdGF0dXM9PXhhLkZBSUxFRF9VTktOT1dOX1JFQVNPTnx8emEuc3RhdHVz PT14YS5VTkFCTEVfVE9fQ09ORklSTXx8emEuc3RhdHVzPT14YS5TVUNDRVNTKXYu dXBkYXRlZE1lc3NhZ2UoemEudGhyZWFkX2lkLGRhKHphLmNsaWVudF9tZXNzYWdl X2lkKS5tZXNzYWdlX2lkLHVhKTt9Y29udGludWU7fWVsc2UgaWYoYWI9PXguTWVy Y3VyeUFjdGlvblR5cGUuREVMRVRFX1RIUkVBRCl7bGEoemEudGhyZWFkX2lkKS5y ZW1vdmVBbGxSZXNvdXJjZXMoKTtjb250aW51ZTt9ZWxzZSBpZihhYj09eC5NZXJj dXJ5QWN0aW9uVHlwZS5ERUxFVEVfTUVTU0FHRVMpe3ZhciBlYj16YS5tZXNzYWdl X2lkcy5tYXAoZnVuY3Rpb24obWIpe3JldHVybiBkYShtYikubWVzc2FnZV9pZDt9 KSxmYj1sYSh6YS50aHJlYWRfaWQpO2ZiLnJlbW92ZVJlc291cmNlcyhlYik7di5y ZW9yZGVyZWRNZXNzYWdlcyh6YS50aHJlYWRfaWQsdWEpO2NvbnRpbnVlO31lbHNl IGlmKGFiPT14Lk1lcmN1cnlBY3Rpb25UeXBlLkxPR19NRVNTQUdFKXtpZih6YS5s b2dfbWVzc2FnZV90eXBlPT14Lk1lcmN1cnlMb2dNZXNzYWdlVHlwZS5TRVJWRVJf RVJST1IpY2FbemEudGhyZWFkX2lkXT10cnVlO31lbHNlIGlmKGFiPT14Lk1lcmN1 cnlBY3Rpb25UeXBlLkNMRUFSX0NIQVQpe3ZhciBnYj1sYSh6YS50aHJlYWRfaWQp LmdldEFsbFJlc291cmNlcygpO2diLm1hcChkYSkuZm9yRWFjaChmdW5jdGlvbiht Yil7bWIuaXNfY2xlYXJlZD10cnVlO30pO2NvbnRpbnVlO312YXIgaGI9ZGEoemEu bWVzc2FnZV9pZCk7aWYoKHphLnRocmVhZGluZ19pZCYmYmFbemEudGhyZWFkaW5n X2lkXSl8fChoYiYmIWhiLmlzX2ZvcndhcmQpKWNvbnRpbnVlO2lmKCF2YVt6YS50 aHJlYWRfaWRdKXZhW3phLnRocmVhZF9pZF09W107dmFbemEudGhyZWFkX2lkXS5w dXNoKHphLm1lc3NhZ2VfaWQpO2FhW3phLm1lc3NhZ2VfaWRdPXphO2lmKHphLnRo cmVhZGluZ19pZCYmemEudGhyZWFkaW5nX2lkIT16YS5tZXNzYWdlX2lkKXAuYWRk U2VydmVySUQoemEudGhyZWFkaW5nX2lkLHphLm1lc3NhZ2VfaWQpO2lmKCF0YSl2 LnJlY2VpdmVkTWVzc2FnZSh6YSk7fWZvcih2YXIgaWIgaW4gdmEpe3ZhciBmYj1s YShpYiksamI9ZmIuZ2V0QWxsUmVzb3VyY2VzKCksa2I9amIuZmlsdGVyKGZ1bmN0

aW9uKG1iKXt2YXIgbmI9YWFbbWJdO3JldHVybiBuYi5hY3Rpb25fdHlwZT09eC5N ZXJjdXJ5QWN0aW9uVHlwZS5MT0dfTUVTU0FHRSYmbmIubG9nX21lc3NhZ2VfdHlw ZT09eC5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUuU0VSVkVSX0VSUk9SO30pO2ZiLnJl bW92ZVJlc291cmNlcyhrYik7cGEoaWIsdmFbaWJdKTtpZih0YSl7ZmIuYWRkUmVz b3VyY2VzKHZhW2liXSk7di5yZW9yZGVyZWRNZXNzYWdlcyhpYix1YSk7fWVsc2Ug ZmIuYWRkUmVzb3VyY2VzV2l0aG91dFNvcnRpbmcodmFbaWJdLnJldmVyc2UoKSww KTt2LnVwZGF0ZWRUaHJlYWQoaWIpO312YXIgbGI9T2JqZWN0LmtleXMod2EpO2lm KGxiLmxlbmd0aCl0LnJlcXVlc3RNZXNzYWdlQ29uZmlybWF0aW9uKHdhKTt9LHNl bmRNZXNzYWdlOmZ1bmN0aW9uKHNhLHRhKXt0YT10YXx8RnVuY3Rpb24ucHJvdG90 eXBlO2hhKHNhKTtiYVtzYS5tZXNzYWdlX2lkXT1zYS5tZXNzYWdlX2lkO2lmKHNh LnRocmVhZF9pZD09J3Jvb3Q6JytzYS5tZXNzYWdlX2lkKWxhKHNhLnRocmVhZF9p ZCkuc2V0UmVhY2hlZEVuZE9mQXJyYXkoKTt0LnNlbmROZXdNZXNzYWdlKHNhKTtp ZihzYS50aHJlYWRfaWQ9PXouUEVORElOR19USFJFQURfSUQpe2FhW3NhLm1lc3Nh Z2VfaWRdPXNhO3JldHVybiBnYS5leGVjdXRlT3JFbnF1ZXVlKHNhLm1lc3NhZ2Vf aWQsdGEpO31lbHNlIHRhKHNhLnRocmVhZF9pZCk7fSx1bnN1YnNjcmliZVNlbmQ6 ZnVuY3Rpb24oc2Epe2dhLnVuc3Vic2NyaWJlKHNhKTt9LHJlc2VuZE1lc3NhZ2U6 ZnVuY3Rpb24oc2Epe3ZhciB0YT1oKHt9LHNhKTt0YS5zdGF0dXM9eC5NZXJjdXJ5 QWN0aW9uU3RhdHVzLlJFU0VORElORzt0YS50aW1lc3RhbXA9KG5ldyBEYXRlKCkp LmdldFRpbWUoKTt0YS5tZXNzYWdlX2lkPW5hLmdlbmVyYXRlTmV3Q2xpZW50TWVz c2FnZUlEKHRhLnRpbWVzdGFtcCk7dmFyIHVhPWxhKHNhLnRocmVhZF9pZCk7dWEu cmVtb3ZlUmVzb3VyY2VzKFtzYS5tZXNzYWdlX2lkXSk7bmEuc2VuZE1lc3NhZ2Uo dGEpO3YucmVvcmRlcmVkTWVzc2FnZXMoc2EudGhyZWFkX2lkLHguTWVyY3VyeVBh eWxvYWRTb3VyY2UuQ0xJRU5UX1NFTkRfTUVTU0FHRSk7fSxkZWxldGVNZXNzYWdl czpmdW5jdGlvbihzYSx0YSl7aWYodGEubGVuZ3RoKXt2YXIgdWE9bGEoc2EpLHZh PXVhLmdldEN1cnJlbnRBcnJheVNpemUoKT09dGEubGVuZ3RoJiZ1YS5oYXNSZWFj aGVkRW5kT2ZBcnJheSgpO3QuZGVsZXRlTWVzc2FnZXMoc2EsdGEsdmEpO319LHVw ZGF0ZUxvY2FsTWVzc2FnZTpmdW5jdGlvbihzYSx0YSl7dmFyIHVhPXNhLm1lc3Nh Z2VfaWQsdmE9c2EuY2xpZW50X21lc3NhZ2VfaWQ7YmFbdmFdPXVhO2FhW3VhXT1h YVt2YV07cC5hZGRTZXJ2ZXJJRCh2YSx1YSk7YWFbdmFdPXt9O2lmKHNhLnRpbWVz dGFtcClkYSh2YSkudGltZXN0YW1wPXNhLnRpbWVzdGFtcDtpZihzYS5hdHRhY2ht ZW50cyYmc2EuYXR0YWNobWVudHMubGVuZ3RoKXtkYSh2YSkucmF3X2F0dGFjaG1l bnRzPW51bGw7ZGEodmEpLmF0dGFjaG1lbnRzPXNhLmF0dGFjaG1lbnRzO319LGNv bnN0cnVjdFVzZXJHZW5lcmF0ZWRNZXNzYWdlT2JqZWN0OmZ1bmN0aW9uKHNhLHRh LHVhLHZhKXt2YXIgd2E9aWEoeC5NZXJjdXJ5QWN0aW9uVHlwZS5VU0VSX0dFTkVS QVRFRF9NRVNTQUdFLHRhLHVhKTt3YS5ib2R5PXNhO3dhLmhhc19hdHRhY2htZW50 PWZhbHNlO3dhLmh0bWxfYm9keT1mYWxzZTt3YS5hdHRhY2htZW50cz1bXTt3YS5z cGVjaWZpY190b19saXN0PXZhfHxbXTtyZXR1cm4gd2E7fSxjb25zdHJ1Y3RMb2dN ZXNzYWdlT2JqZWN0OmZ1bmN0aW9uKHNhLHRhLHVhLHZhKXt2YXIgd2E9aWEoeC5N ZXJjdXJ5QWN0aW9uVHlwZS5MT0dfTUVTU0FHRSxzYSx0YSk7d2EubG9nX21lc3Nh Z2VfdHlwZT11YTt3YS5sb2dfbWVzc2FnZV9kYXRhPXZhO3JldHVybiB3YTt9LGdl bmVyYXRlTmV3Q2xpZW50TWVzc2FnZUlEOmZ1bmN0aW9uKHNhKXt2YXIgdGE9c2Er JzonKyhrKDAsNDI5NDk2NzI5NSkrMSkrJy0nK3IuZ2V0U2Vzc2lvbklEKCk7cmV0 dXJuICc8Jyt0YSsnQG1haWwucHJvamVrdGl0YW4uY29tPic7fX07dC5zdWJzY3Jp YmUoJ3VwZGF0ZS1tZXNzYWdlcycsZnVuY3Rpb24oc2EsdGEpe3ZhciB1YT0odGEu YWN0aW9uc3x8W10pLmZpbHRlcihmdW5jdGlvbih3YSl7dmFyIHhhPXdhLmFjdGlv bl90eXBlO3JldHVybiAod2EuaXNfZm9yd2FyZHx8d2EudGhyZWFkX2lkKSYmKHhh PT14Lk1lcmN1cnlBY3Rpb25UeXBlLkxPR19NRVNTQUdFfHx4YT09eC5NZXJjdXJ5 QWN0aW9uVHlwZS5VU0VSX0dFTkVSQVRFRF9NRVNTQUdFfHx4YT09eC5NZXJjdXJ5 QWN0aW9uVHlwZS5TRU5EX01FU1NBR0V8fHhhPT14Lk1lcmN1cnlBY3Rpb25UeXBl LkNMRUFSX0NIQVR8fHhhPT14Lk1lcmN1cnlBY3Rpb25UeXBlLkRFTEVURV9USFJF QUR8fHhhPT14Lk1lcmN1cnlBY3Rpb25UeXBlLkRFTEVURV9NRVNTQUdFUyk7fSks dmE9amEodGEucGF5bG9hZF9zb3VyY2UpO2lmKGthKHRhLnBheWxvYWRfc291cmNl KSl1YS5mb3JFYWNoKGZ1bmN0aW9uKHdhKXtpZighd2EuaXNfZm9yd2FyZCl7dmFy IHhhPXcuZ2V0VGhyZWFkTWV0YU5vdyh3YS50aHJlYWRfaWQpO2lmKHhhKXdhLmlz X2NsZWFyZWQ9d2EudGltZXN0YW1wPHhhLmNoYXRfY2xlYXJfdGltZTt9fSk7bmEu aGFuZGxlVXBkYXRlcyh1YSx2YSx0YS5wYXlsb2FkX3NvdXJjZSk7aWYodGEuZW5k X29mX2hpc3RvcnkpbWEodGEuZW5kX29mX2hpc3RvcnksdGEucGF5bG9hZF9zb3Vy Y2UpO30pO2Z1bmN0aW9uIG9hKHNhKXt2YXIgdGE9c2EubWFwKGRhKTtyZXR1cm4g dGEucmV2ZXJzZSgpO31mdW5jdGlvbiBwYShzYSx0YSl7dmFyIHVhPXRhLmZpbHRl cihmdW5jdGlvbih2YSl7cmV0dXJuIHFhKGRhKHZhKSk7fSk7aWYoIWZhW3NhXSlm

YVtzYV09MDtmYVtzYV0rPXVhLmxlbmd0aDt9ZnVuY3Rpb24gcWEoc2Epe3ZhciB0 YT1zYS5hY3Rpb25fdHlwZTtpZih0YT09eC5NZXJjdXJ5QWN0aW9uVHlwZS5VU0VS X0dFTkVSQVRFRF9NRVNTQUdFKXJldHVybiB0cnVlO3N3aXRjaChzYS5sb2dfbWVz c2FnZV90eXBlKXtjYXNlIHguTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlNVQlNDUklC RTpjYXNlIHguTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlVOU1VCU0NSSUJFOmNhc2Ug eC5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUuU0VSVkVSX0VSUk9SOmNhc2UgeC5NZXJj dXJ5TG9nTWVzc2FnZVR5cGUuTElWRV9MSVNURU46cmV0dXJuIGZhbHNlO2RlZmF1 bHQ6cmV0dXJuIHRydWU7fX1mdW5jdGlvbiByYShzYSl7c3dpdGNoKHNhKXtjYXNl IHguTWVyY3VyeVNvdXJjZVR5cGUuQ0hBVF9XRUI6Y2FzZSB4Lk1lcmN1cnlTb3Vy Y2VUeXBlLkNIQVRfSkFCQkVSOmNhc2UgeC5NZXJjdXJ5U291cmNlVHlwZS5DSEFU X0lQSE9ORTpjYXNlIHguTWVyY3VyeVNvdXJjZVR5cGUuQ0hBVF9NRUVCTzpjYXNl IHguTWVyY3VyeVNvdXJjZVR5cGUuQ0hBVF9PUkNBOmNhc2UgeC5NZXJjdXJ5U291 cmNlVHlwZS5DSEFUX1RFU1Q6Y2FzZSB4Lk1lcmN1cnlTb3VyY2VUeXBlLkNIQVQ6 Y2FzZSB4Lk1lcmN1cnlTb3VyY2VUeXBlLkRFU0tUT1A6cmV0dXJuIHRydWU7ZGVm YXVsdDpyZXR1cm4gZmFsc2U7fX1lLmV4cG9ydHM9bmE7fSk7Cl9fZCgiTWVyY3Vy eU5vdGlmaWNhdGlvblJlbmRlcmVyIixbIk1lcmN1cnlBc3NlcnQiLCJNZXJjdXJ5 TWVzc2FnZXMiLCJNZXJjdXJ5UGFydGljaXBhbnRzIiwiTWVyY3VyeVRocmVhZHMi LCJ0eCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdNZXJjdXJ5QXNz ZXJ0JyksaD1iKCdNZXJjdXJ5TWVzc2FnZXMnKSxpPWIoJ01lcmN1cnlQYXJ0aWNp cGFudHMnKSxqPWIoJ01lcmN1cnlUaHJlYWRzJyksaz1iKCd0eCcpO2Z1bmN0aW9u IGwobSxuKXtnLmlzVGhyZWFkSUQobSk7ai5nZXRUaHJlYWRNZXRhKG0sZnVuY3Rp b24obyl7aC5nZXRUaHJlYWRNZXNzYWdlc1JhbmdlKG0sMCwxLGZ1bmN0aW9uKHAp e3ZhciBxPXAubGVuZ3RoJiZwW3AubGVuZ3RoLTFdO2lmKHEmJnEuYXV0aG9yIT1p LnVzZXIpe2kuZ2V0KHEuYXV0aG9yLGZ1bmN0aW9uKHIpe2lmKG8ubmFtZSl7bihr Ll8oIntzZW5kZXJOYW1lfSBtZW5naXJpbSBwZXNhbiBrZSB7Z3JvdXBOYW1lfSIs e3NlbmRlck5hbWU6ci5zaG9ydF9uYW1lLGdyb3VwTmFtZTpvLm5hbWV9KSk7fWVs c2UgbihrLl8oIntuYW1lfSBtZW5naXJpbWkgYW5kYSBwZXNhbiIse25hbWU6ci5z aG9ydF9uYW1lfSkpO30pO31lbHNlIG4oIlBlc2FuIGJhcnUhIik7fSk7fSk7fWUu ZXhwb3J0cz17cmVuZGVyRG9jdW1lbnRUaXRsZTpsfTt9KTsKX19kKCJNZXJjdXJ5 VW5zZWVuU3RhdGUiLFsiQXJiaXRlciIsImNvcHlQcm9wZXJ0aWVzIiwiVGltZXN0 YW1wQ29udmVydGVyIiwiS2V5ZWRDYWxsYmFja01hbmFnZXIiLCJKU0xvZ2dlciIs ImNyZWF0ZU9iamVjdEZyb20iLCJNZXJjdXJ5U2VydmVyUmVxdWVzdHMiLCJNZXJj dXJ5VGhyZWFkSW5mb3JtZXIiLCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ2NvcHlQcm9wZXJ0 aWVzJyksaT1iKCdUaW1lc3RhbXBDb252ZXJ0ZXInKSxqPWIoJ0tleWVkQ2FsbGJh Y2tNYW5hZ2VyJyksaz1iKCdKU0xvZ2dlcicpLGw9YignY3JlYXRlT2JqZWN0RnJv bScpLG09YignTWVyY3VyeVNlcnZlclJlcXVlc3RzJyksbj1iKCdNZXJjdXJ5VGhy ZWFkSW5mb3JtZXInKSxvPWMoJ01lcmN1cnlDb25zdGFudHMnKSxwPW8uTWVyY3Vy eVRocmVhZGxpc3RDb25zdGFudHMuTUFYX1VOU0VFTl9DT1VOVCxxPTAscj0wLHM9 ZmFsc2UsdD1uZXcgaigpLHU9J3Vuc2Vlbl90aHJlYWRfaGFzaCcsdj0ndW5zZWVu X3RocmVhZF9saXN0Jyx3PWsuY3JlYXRlKCdtZXJjdXJ5X3Vuc2Vlbl9zdGF0ZScp LHg9e2dldFVuc2VlbkNvdW50OmZ1bmN0aW9uKCl7aWYoeC5leGNlZWRzTWF4Q291 bnQoKSl7dy5lcnJvcigndW5ndWFyZGVkX3Vuc2Vlbl9jb3VudF9mZXRjaCcse30p O3JldHVybiAwO31yZXR1cm4gYmEoKTt9LGV4Y2VlZHNNYXhDb3VudDpmdW5jdGlv bigpe3JldHVybiBzfHwoYmEoKT5wKTt9LG1hcmtBc1NlZW46ZnVuY3Rpb24oKXtp ZihiYSgpPjB8fHMpe20ubWFya1NlZW4oKTtkYShpLmNvbnZlcnRBY3Rpb25JRFRv VGltZXN0YW1wKG0uZ2V0TGFzdEFjdGlvbklEKCkpLFtdKTt9fSxtYXJrVGhyZWFk U2VlbjpmdW5jdGlvbihrYSxsYSl7dmFyIG1hPXt9O21hW2thXT1udWxsO2ZhKG1h LGxhKTt9fTtmdW5jdGlvbiB5KGthKXt0LnNldFJlc291cmNlKHUsa2EpO3Quc2V0 UmVzb3VyY2UodixPYmplY3Qua2V5cyhrYSkpO31mdW5jdGlvbiB6KGthKXt2YXIg bGE9dC5leGVjdXRlT3JFbnF1ZXVlKHUsa2EpLG1hPXQuZ2V0VW5hdmFpbGFibGVS ZXNvdXJjZXMobGEpO2lmKG1hLmxlbmd0aCltLmZldGNoVW5zZWVuVGhyZWFkSURz KCk7fWZ1bmN0aW9uIGFhKCl7cmV0dXJuIHQuZ2V0UmVzb3VyY2UodSk7fWZ1bmN0 aW9uIGJhKCl7dmFyIGthPXQuZ2V0UmVzb3VyY2Uodik7aWYoa2Epe3JldHVybiBr YS5sZW5ndGg7fWVsc2UgcmV0dXJuIHE7fWZ1bmN0aW9uIGNhKGthKXt2YXIgbGE9 amEoa2EpO2lmKGthLnVuc2Vlbl90aHJlYWRfaWRzKXtrYS51bnNlZW5fdGhyZWFk X2lkcy5mb3JFYWNoKGZ1bmN0aW9uKHdhKXtpZih3YS5mb2xkZXIhPW8uTWVzc2Fn aW5nVGFnLklOQk9YKXJldHVybjt2YXIgeGE9aGEod2EudGhyZWFkX2lkcykseWE9 cjtpZihsYSYmbGEuc2Vlbl90aW1lc3RhbXApeWE9bGEuc2Vlbl90aW1lc3RhbXA7 ZGEoeWEseGEpO2lmKGxhJiZsYS51bnNlZW5fY291bnQ+cClzPXRydWU7fSk7fWVs

c2UgaWYobGEmJmxhLnNlZW5fdGltZXN0YW1wKXtyPWxhLnNlZW5fdGltZXN0YW1w O2lmKGxhLnVuc2Vlbl9jb3VudD5wKXtzPXRydWU7eSh7fSk7fWVsc2V7cT1sYS51 bnNlZW5fY291bnQ7aWYocT09PTApeSh7fSk7fX1lbHNle2lmKHMpcmV0dXJuO3Zh ciBtYT1rYS5hY3Rpb25zO2lmKCFtYXx8IShtYS5sZW5ndGgpKXJldHVybjt2YXIg bmE9e30sb2E9e307Zm9yKHZhciBwYT0wO3BhPG1hLmxlbmd0aDtwYSsrKXt2YXIg cWE9bWFbcGFdO2lmKHFhLmlzX2ZvcndhcmQpY29udGludWU7dmFyIHJhPXFhLmFj dGlvbl90eXBlLHNhPXFhLmFjdGlvbl9pZCx0YT1xYS50aHJlYWRfaWQ/cWEudGhy ZWFkX2lkOnFhLnNlcnZlcl90aHJlYWRfaWQsdWE9cWEuZm9sZGVyPT09dW5kZWZp bmVkfHxxYS5mb2xkZXI9PW8uTWVzc2FnaW5nVGFnLklOQk9YO2lmKCF1YSljb250 aW51ZTtpZihyYT09by5NZXJjdXJ5QWN0aW9uVHlwZS5VU0VSX0dFTkVSQVRFRF9N RVNTQUdFfHxyYT09by5NZXJjdXJ5QWN0aW9uVHlwZS5MT0dfTUVTU0FHRSl7dmFy IHZhPWkuaXNHcmVhdGVyVGhhbihzYSxuYVt0YV0pO2lmKHFhLmlzX3VucmVhZCYm KCFuYVt0YV18fHZhKSluYVt0YV09c2E7fWVsc2UgaWYocmE9PW8uTWVyY3VyeUFj dGlvblR5cGUuQ0hBTkdFX1JFQURfU1RBVFVTJiZxYS5tYXJrX2FzX3JlYWQpb2Fb dGFdPXNhO31lYShuYSk7ZmEob2EpO319ZnVuY3Rpb24gZGEoa2EsbGEpe3ZhciBt YT1hYSgpO2lmKG1hPT09dW5kZWZpbmVkfHxrYT5yfHxzKXtyPWthO2xhPWxhfHxb XTtpZihsYS5sZW5ndGg8PXApcz1mYWxzZTt2YXIgbmE9e30sb2E9YWEoKXx8e307 Zm9yKHZhciBwYSBpbiBvYSlpZihvYVtwYV0hPT10cnVlKXt2YXIgcWE9b2FbcGFd O2lmKGdhKHFhKSluYVtwYV09cWE7fXZhciByYT1oKGwobGEsdHJ1ZSksbmEpO3ko cmEpO24udXBkYXRlZFVuc2VlblN0YXRlKCk7fX1mdW5jdGlvbiBlYShrYSl7aWYo cylyZXR1cm47dmFyIGxhPXt9LG1hPWZhbHNlO2Zvcih2YXIgbmEgaW4ga2Epe3Zh ciBvYT1rYVtuYV07aWYoZ2Eob2EpKXtsYVtuYV09b2E7bWE9dHJ1ZTt9fWlmKCFt YSlyZXR1cm47eihmdW5jdGlvbihwYSl7Zm9yKHZhciBxYSBpbiBsYSl7dmFyIHJh PWxhW3FhXTtpZighcGFbcWFdJiZnYShyYSkpcGFbcWFdPWxhW3FhXTt9eShwYSk7 bi51cGRhdGVkVW5zZWVuU3RhdGUoKTt9KTt9ZnVuY3Rpb24gZmEoa2EsbGEpe3Zh ciBtYT1mYWxzZTtmb3IodmFyIG5hIGluIGthKXttYT10cnVlO2JyZWFrO31pZiht YSl6KGZ1bmN0aW9uKG9hKXt2YXIgcGE9ZmFsc2U7Zm9yKHZhciBxYSBpbiBrYSl7 dmFyIHJhPWthW3FhXSxzYT1pLmlzR3JlYXRlclRoYW4ocmEsb2FbcWFdKTtpZihv YVtxYV0mJighcmF8fHNhKSl7ZGVsZXRlIG9hW3FhXTtwYT10cnVlO319aWYocGEp e3kob2EpO24udXBkYXRlZFVuc2VlblN0YXRlKCk7aWYobGEmJmJhKCk9PT0wKW0u bWFya1NlZW4oKTt9fSk7fWZ1bmN0aW9uIGdhKGthKXtyZXR1cm4gaS5jb252ZXJ0 QWN0aW9uSURUb1RpbWVzdGFtcChrYSk+cjt9ZnVuY3Rpb24gaGEoa2Epe3JldHVy biBrYS5tYXAobS5jb252ZXJ0VGhyZWFkSURJZkF2YWlsYWJsZSk7fWZ1bmN0aW9u IGlhKGthKXt2YXIgbGE9YWEoKTtpZighbGEpcmV0dXJuO2Zvcih2YXIgbWEgaW4g a2Epe3ZhciBuYT1rYVttYV07aWYobGFbbWFdKXtsYVtuYV09bGFbbWFdO2RlbGV0 ZSBsYVttYV07fX15KGxhKTt9ZnVuY3Rpb24gamEoa2Epe3ZhciBsYT0oa2EubWVz c2FnZV9jb3VudHN8fFtdKTtmb3IodmFyIG1hPTA7bWE8bGEubGVuZ3RoO21hKysp aWYobGFbbWFdLmZvbGRlcj09by5NZXNzYWdpbmdUYWcuSU5CT1gpcmV0dXJuIGxh W21hXTtyZXR1cm4gbnVsbDt9bS5zdWJzY3JpYmUoJ3VwZGF0ZS11bnNlZW4nLGZ1 bmN0aW9uKGthLGxhKXtjYShsYSk7fSk7bS5zdWJzY3JpYmUoJ3VwZGF0ZS10aHJl YWQtaWRzJyxmdW5jdGlvbihrYSxsYSl7aWEobGEpO30pO2cuc3Vic2NyaWJlKGsu RFVNUF9FVkVOVCxmdW5jdGlvbihrYSxsYSl7bGEubWVzc2FnaW5nPWxhLm1lc3Nh Z2luZ3x8e307bGEubWVzc2FnaW5nLnVuc2Vlbj1oKHt9LGFhKCkpO2xhLm1lc3Nh Z2luZy51bnNlZW5fbWF4X2NvdW50PXM7bGEubWVzc2FnaW5nLnVuc2Vlbl90aW1l PXI7fSk7ZS5leHBvcnRzPXg7fSk7Cl9fZCgiQ2hhdFRpdGxlQmFyQmxpbmtlciIs WyJDaGF0QWN0aXZpdHkiLCJEb2N1bWVudFRpdGxlIiwiSlNMb2dnZXIiLCJNZXJj dXJ5VGhyZWFkSW5mb3JtZXIiLCJNZXJjdXJ5Tm90aWZpY2F0aW9uUmVuZGVyZXIi LCJQcmVzZW5jZVN0YXRlIiwiTWVyY3VyeVRpbWVzdGFtcFRyYWNrZXIiLCJNZXJj dXJ5VW5zZWVuU3RhdGUiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign Q2hhdEFjdGl2aXR5JyksaD1iKCdEb2N1bWVudFRpdGxlJyksaT1iKCdKU0xvZ2dl cicpLGo9YignTWVyY3VyeVRocmVhZEluZm9ybWVyJyksaz1iKCdNZXJjdXJ5Tm90 aWZpY2F0aW9uUmVuZGVyZXInKSxsPWIoJ1ByZXNlbmNlU3RhdGUnKSxtPWIoJ01l cmN1cnlUaW1lc3RhbXBUcmFja2VyJyksbj1iKCdNZXJjdXJ5VW5zZWVuU3RhdGUn KSxvPWkuY3JlYXRlKCdjaGF0X3RpdGxlJykscD1udWxsLHE9MCxyPWZhbHNlO2Z1 bmN0aW9uIHMoKXtpZihwKXtwLnN0b3AoKTtwPW51bGw7cmV0dXJuIHRydWU7fXJl dHVybiBmYWxzZTt9ZnVuY3Rpb24gdCh5KXt2YXIgej15fHxtLmdldExhc3RVc2Vy TWVzc2FnZVRpbWVzdGFtcCgpO2lmKHE8PXope3E9ejtpZihzKCl8fHIpbC5kb1N5 bmMoKTt9fXZhciB1PXtibGluazpmdW5jdGlvbih5LHope2lmKCFwJiZxPHopay5y ZW5kZXJEb2N1bWVudFRpdGxlKHksZnVuY3Rpb24oYWEpe2lmKCFwKXA9aC5ibGlu ayhhYSk7fSk7fSxzdG9wQmxpbmtpbmc6ZnVuY3Rpb24oKXt0KCk7fSxibGlua2lu

Z0Vsc2V3aGVyZTpmdW5jdGlvbigpe3I9dHJ1ZTt9fTtmdW5jdGlvbiB2KHkpe3Zh ciB6PWwudmVyaWZ5TnVtYmVyKHkuc2IyKTtpZighenx8ejw9cSlyZXR1cm4gbnVs bDtyZXR1cm4gejt9ZnVuY3Rpb24gdyh5KXt2YXIgej15JiZ2KHkpO2lmKHope3E9 ejtvLmRlYnVnKCdsb2FkJyxxKTtzKCk7cj1mYWxzZTt9fWZ1bmN0aW9uIHgoeSl7 dmFyIHo9dih5KTtpZigheil7by5kZWJ1Zygnc3RvcmUnLHEpO3kuc2IyPXE7cj1m YWxzZTt9cmV0dXJuIHk7fWwucmVnaXN0ZXJTdGF0ZVN0b3Jlcih4KTtsLnJlZ2lz dGVyU3RhdGVMb2FkZXIodyk7ai5zdWJzY3JpYmUoJ3RocmVhZC1yZWFkLWNoYW5n ZWQnLGZ1bmN0aW9uKHkseil7dmFyIGFhPW0uZ2V0TGFzdFVzZXJNZXNzYWdlVGlt ZXN0YW1wKCksYmE9MDtmb3IodmFyIGNhIGluIHopaWYoeltjYV0ubWFya19hc19y ZWFkJiZ6W2NhXS50aW1lc3RhbXA+PWFhJiZ6W2NhXS50aW1lc3RhbXA+YmEpYmE9 eltjYV0udGltZXN0YW1wO2JhJiZ0KGJhKTt9KTtnLnN1YnNjcmliZSgnYWN0aXZp dHknLGZ1bmN0aW9uKCl7dCgpO30pOyhmdW5jdGlvbigpe3ZhciB5PWwuZ2V0SW5p dGlhbCgpO2lmKHkpcT12KHkpfHwwO30pKCk7ZS5leHBvcnRzPXU7fSk7Cl9fZCgi TWVyY3VyeUJyb3dzZXJBbGVydHMiLFsiQXJiaXRlck1peGluIiwiQ2hhdEFjdGl2 aXR5IiwiQ2hhdENvbmZpZyIsIkNoYXRPcHRpb25zIiwiQ2hhdFRpdGxlQmFyQmxp bmtlciIsImNvcHlQcm9wZXJ0aWVzIiwiTWVyY3VyeVBhcnRpY2lwYW50cyIsIlNv dW5kIiwiTWVyY3VyeUNvbnN0YW50cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2 YXIgZz1iKCdBcmJpdGVyTWl4aW4nKSxoPWIoJ0NoYXRBY3Rpdml0eScpLGk9Yign Q2hhdENvbmZpZycpLGo9YignQ2hhdE9wdGlvbnMnKSxrPWIoJ0NoYXRUaXRsZUJh ckJsaW5rZXInKSxsPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbT1iKCdNZXJjdXJ5UGFy dGljaXBhbnRzJyksbj1iKCdTb3VuZCcpLG89YygnTWVyY3VyeUNvbnN0YW50cycp O24uaW5pdChbJ2F1ZGlvL29nZycsJ2F1ZGlvL21wZWcnXSk7ZnVuY3Rpb24gcChy KXtpZihqLmdldFNldHRpbmcoJ3NvdW5kJykpbi5wbGF5KFtpLmdldCgnc291bmQu bm90aWZfb2dnX3VybCcpLGkuZ2V0KCdzb3VuZC5ub3RpZl9tcDNfdXJsJyldLHIs ZmFsc2UpO312YXIgcT17bWVzc2FnZVJlY2VpdmVkOmZ1bmN0aW9uKHIpe3ZhciBz PW8uTWVzc2FnaW5nVGFnO2lmKHIuYXV0aG9yPT1tLnVzZXJ8fCFyLmlzX3VucmVh ZHx8KHIuZm9sZGVyIT1zLklOQk9YJiZyLmZvbGRlciE9cy5BUkNISVZFRCkpcmV0 dXJuO3ZhciB0PWguaXNBY3RpdmUoKSx1PXIudGhyZWFkX2lkLHY9ci50aW1lc3Rh bXA7aWYodCl7dmFyIHc9ZmFsc2U7cS5pbmZvcm0oJ2JlZm9yZS1hbGVydCcse3Ro cmVhZElEOnUsY2FuY2VsQWxlcnQ6ZnVuY3Rpb24oKXt3PXRydWU7fX0pOyF3JiZw KHYpO31lbHNle2suYmxpbmsodSx2KTtwKHYpO31rLmJsaW5raW5nRWxzZXdoZXJl KCk7fX07ZS5leHBvcnRzPWwocSxnKTt9KTsKX19kKCJWaWRlb0NhbGxSZWNvcmRN ZXNzYWdlRGlhbG9nIixbIkFzeW5jRGlhbG9nIiwiQXN5bmNSZXF1ZXN0IiwiRGlh bG9nIiwidHgiLCJVUkkiLCJNZXJjdXJ5Q29uZmlnIl0sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe3ZhciBnPWIoJ0FzeW5jRGlhbG9nJyksaD1iKCdBc3luY1JlcXVlc3Qn KSxpPWIoJ0RpYWxvZycpLGo9YigndHgnKSxrPWIoJ1VSSScpLGw9YygnTWVyY3Vy eUNvbmZpZycpLG09e2dldDpmdW5jdGlvbihuLG8pe3ZhciBwPWwuTWVzc2FnZXNN ZXJjdXJ5SW50ZWdyYXRpb25HSz8iV291bGQgeW91IGxpa2UgdG8gbGVhdmUgYSBt ZXNzYWdlPyI6IkFwYWthaCBBbmRhIGluZ2luIG1lbmluZ2dhbGthbiBwZXNhbiB2 aWRlbz8iLHE9bC5NZXNzYWdlc01lcmN1cnlJbnRlZ3JhdGlvbkdLPyJQZXNhbiBC YXJ1IjoiUmVrYW0gUGVzYW4iO3JldHVybiBuZXcgaSgpLnNldFRpdGxlKGouXygi e2ZpcnN0bmFtZX0gU2VkYW5nIFRpZGFrIFRlcnNlZGlhIix7Zmlyc3RuYW1lOm99 KSkuc2V0Qm9keShwKS5zZXRCdXR0b25zKFt7bmFtZToncmVjb3JkLW1lc3NhZ2Un LGxhYmVsOnF9LGkuQ0FOQ0VMXSkuc2V0SGFuZGxlcihmdW5jdGlvbigpe3ZhciBy PWsoJy9hamF4L21lc3NhZ2luZy9jb21wb3Nlci5waHAnKS5zZXRRdWVyeURhdGEo e2lkczpbbl0sYXV0b2xvYWR2aWRlbzp0cnVlfSkudG9TdHJpbmcoKTtnLnNlbmQo bmV3IGgocikpO30pO319O2UuZXhwb3J0cz1tO30pOwpfX2QoIlZpZGVvQ2FsbENv cmUiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJBc3luY1JlcXVlc3Qi LCJBdmFpbGFibGVMaXN0IiwiQXZhaWxhYmxlTGlzdENvbnN0YW50cyIsIkJvb3Rs b2FkZXIiLCJDaGFubmVsQ29uc3RhbnRzIiwiQ29va2llIiwiRGlhbG9nIiwiVXNl ckFnZW50IiwiZ2UiLCJTaG9ydFByb2ZpbGVzIiwiVmlkZW9DYWxsUmVjb3JkTWVz c2FnZURpYWxvZyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRl bnNpb25zJyk7dmFyIGc9YignQXJiaXRlcicpLGg9YignQXN5bmNSZXF1ZXN0Jyks aT1iKCdBdmFpbGFibGVMaXN0Jyksaj1iKCdBdmFpbGFibGVMaXN0Q29uc3RhbnRz Jyksaz1iKCdCb290bG9hZGVyJyksbD1iKCdDaGFubmVsQ29uc3RhbnRzJyksbT1i KCdDb29raWUnKSxuPWIoJ0RpYWxvZycpLG89YignVXNlckFnZW50JykscD1iKCdn ZScpLHE9W10scj17aXNTdXBwb3J0ZWQ6ZnVuY3Rpb24oKXtpZihvLndpbmRvd3Mo KSl7cmV0dXJuIChvLmllKCk+PTcmJiFvLmllNjQoKSl8fG8uZmlyZWZveCgpPj0z LjZ8fG8uY2hyb21lKCk+PTV8fG8ub3BlcmEoKT49MTI7fWVsc2UgaWYoby5vc3go KT4xMC40KXJldHVybiAoby5maXJlZm94KCk+PTMuNnx8by5jaHJvbWUoKT49NXx8

by5zYWZhcmkoKT49NTAwfHxvLm9wZXJhKCk+PTEyKTtyZXR1cm4gZmFsc2U7fSxp c0luc3RhbGxlZDpmdW5jdGlvbigpe3ZhciB2PWZhbHNlO2lmKHRoaXMuaXNTdXBw b3J0ZWQoKSlpZihzKCkpe3ZhciB3PW51bGw7dHJ5e3c9bmV3IEFjdGl2ZVhPYmpl Y3QoJ1NreXBlTGltaXRlZC5Ta3lwZVdlYlBsdWdpbicpO3Y9ISF3O31jYXRjaCh4 KXt9dz1udWxsO31lbHNlIHY9dCgpO3JldHVybiB2O30sbWlnaHRSZWxvYWRQb3N0 SW5zdGFsbDpmdW5jdGlvbigpe3JldHVybiBvLndpbmRvd3MoKTt9LG9uVmlkZW9N ZXNzYWdlOmZ1bmN0aW9uKHYpe3EucHVzaCh2KTtrLmxvYWRNb2R1bGVzKFsnVmlk ZW9DYWxsQ29udHJvbGxlciddLGJhZ29maG9sZGluZyk7fSxzZXRNZXNzYWdlSGFu ZGxlcjpmdW5jdGlvbih2KXt0aGlzLm9uVmlkZW9NZXNzYWdlPXY7aWYodil3aGls ZShxLmxlbmd0aCl2KHEuc2hpZnQoKSk7fSxhdmFpbGFibGVGb3JDYWxsOmZ1bmN0 aW9uKHYpe3ZhciB3PWkuZ2V0KHYpO3JldHVybiB3PT1qLkFDVElWRXx8dz09ai5J RExFO30sb25Qcm9maWxlQnV0dG9uQ2xpY2s6ZnVuY3Rpb24odil7ci5zdGFydENh bGxPckxlYXZlTWVzc2FnZSh2LCdwcm9maWxlX2J1dHRvbl9jbGljaycpO30sYXR0 YWNoTGlzdGVuZXJUb1Byb2ZpbGVCdXR0b246ZnVuY3Rpb24odil7dmFyIHc9cCgn dmlkZW9DYWxsUHJvZmlsZUJ1dHRvbicpO2lmKHcpRXZlbnQubGlzdGVuKHcsJ2Ns aWNrJyxmdW5jdGlvbihldmVudCl7ci5zdGFydENhbGxPckxlYXZlTWVzc2FnZSh2 LCdwcm9maWxlX2J1dHRvbl9jbGlja190aW1lbGluZScpO30pO30sc3RhcnRDYWxs T3JMZWF2ZU1lc3NhZ2U6ZnVuY3Rpb24odix3KXtpZih0aGlzLmF2YWlsYWJsZUZv ckNhbGwodikpe3Iuc2hvd091dGdvaW5nQ2FsbERpYWxvZyh2LHcpO31lbHNlIGIo J1Nob3J0UHJvZmlsZXMnKS5nZXQodixmdW5jdGlvbih4KXtiKCdWaWRlb0NhbGxS ZWNvcmRNZXNzYWdlRGlhbG9nJykuZ2V0KHYseC5maXJzdE5hbWUpLnNob3coKTt9 KTt9LHNob3dPdXRnb2luZ0NhbGxEaWFsb2c6ZnVuY3Rpb24odix3KXt2YXIgeD13 fHwndW5rbm93bic7ci5sb2dDbGljayh2LHgpO3ZhciB5PXIuaXNJbnN0YWxsZWQo KT8nb3V0Z29pbmdfZGlhbG9nLnBocCc6J2ludHJvLnBocCcsej0nL2FqYXgvY2hh dC92aWRlby8nK3krJz9pZFRhcmdldD0nK3Y7bmV3IG4oKS5zZXRBbGxvd0Nyb3Nz UGFnZVRyYW5zaXRpb24odHJ1ZSkuc2V0QXN5bmMobmV3IGgoeikpLnNob3coKTt9 LGxvZ0NsaWNrOmZ1bmN0aW9uKHYsdyl7bmV3IGgoKS5zZXRVUkkoJy9hamF4L2No YXQvdmlkZW8vbG9nX2NsaWNrLnBocCcpLnNldERhdGEoe3RhcmdldFVzZXJJRDp2 LGNsaWNrU291cmNlOnd9KS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1 ZSkuc2V0RXJyb3JIYW5kbGVyKGJhZ29maG9sZGluZykuc2VuZCgpO319O2Z1bmN0 aW9uIHMoKXtyZXR1cm4gby5pZSgpJiZvLndpbmRvd3MoKSYmIW8ub3BlcmEoKTt9 ZnVuY3Rpb24gdCgpe2lmKCFuYXZpZ2F0b3IpcmV0dXJuIG51bGw7bmF2aWdhdG9y LnBsdWdpbnMucmVmcmVzaChmYWxzZSk7dmFyIHY9bmF2aWdhdG9yLm1pbWVUeXBl c1snYXBwbGljYXRpb24vc2t5cGVzZGstcGx1Z2luJ107cmV0dXJuIHYmJnYuZW5h YmxlZFBsdWdpbjt9ZnVuY3Rpb24gdSgpe2lmKCFyLm1pZ2h0UmVsb2FkUG9zdElu c3RhbGwoKSlyZXR1cm47dmFyIHY9bS5nZXQoJ3ZjcHduJyk7aWYodil7bS5jbGVh cigndmNwd24nKTt2YXIgdz1tLmdldCgndmN0aWQnKTtpZih3KXttLmNsZWFyKCd2 Y3RpZCcpO2lmKG0uZ2V0KCd2Y3RpZCcpKXJldHVybjtpZih3JiZyLmlzSW5zdGFs bGVkKCkpe3ZhciB4PScvYWpheC9jaGF0L3ZpZGVvL291dGdvaW5nX2RpYWxvZy5w aHA/aWRUYXJnZXQ9Jyt3O25ldyBuKCkuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0 aW9uKHRydWUpLnNldEFzeW5jKG5ldyBoKHgpKS5zaG93KCk7fX19fWcuc3Vic2Ny aWJlKGwuZ2V0QXJiaXRlclR5cGUoJ3ZpZGVvJyksZnVuY3Rpb24odix3KXtyLm9u VmlkZW9NZXNzYWdlKHcub2JqKTt9KTtnLnN1YnNjcmliZShsLmdldEFyYml0ZXJU eXBlKCdjaGF0X2V2ZW50JyksZnVuY3Rpb24odix3KXtpZih3Lm9iai5ldmVudF9u YW1lPT0ibWlzc2VkLWNhbGwiKWsubG9hZE1vZHVsZXMoWydWaWRlb0NhbGxDb250 cm9sbGVyJ10sZnVuY3Rpb24oeCl7eC5vbk1pc3NlZENhbGxFdmVudCh3Lm9iaik7 fSk7fSk7dSgpO2UuZXhwb3J0cz1yO30pOwpfX2QoIkNoYXRBcHAiLFsiQ1NTIiwi SlNMb2dnZXIiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ1NTJyks aD1iKCdKU0xvZ2dlcicpLGk9ZmFsc2Usaj1mYWxzZSxrPWZhbHNlLGw9bnVsbCxt PXtpbml0OmZ1bmN0aW9uKG4sbyxwKXtpZihsKXtoLmNyZWF0ZSgnY2hhdF9hcHAn KS5lcnJvcigncmVwZWF0ZWRfaW5pdCcpO3JldHVybjt9bD1uO2QoWydUYWJzVmll d3BvcnQnLCdDaGF0VGFiQ29udHJvbGxlcicsJ0NoYXRUYWJWaWV3Q29vcmRpbmF0 b3InLCdNZXJjdXJ5U2VydmVyUmVxdWVzdHMnLCdNZXJjdXJ5Q2hhbm5lbEhhbmRs ZXInLCdNZXJjdXJ5U3RhdGVDaGVjayddLGZ1bmN0aW9uKHEscixzLHQsdSx2KXt0 LmhhbmRsZVVwZGF0ZShwKTt0aGlzLnRhYnNWaWV3cG9ydD1uZXcgcShvKTt0aGlz LnRhYkNvbnRyb2xsZXI9bmV3IHIodGhpcy50YWJzVmlld3BvcnQpO3RoaXMudGFi Vmlld0Nvb3JkaW5hdG9yPW5ldyBzKG8sdGhpcy50YWJzVmlld3BvcnQpO2k9aj10 cnVlO30uYmluZCh0aGlzKSk7fSxoaWRlOmZ1bmN0aW9uKCl7aWYoIWl8fGspcmV0 dXJuO2cuaGlkZShsKTtrPXRydWU7fSx1bmhpZGU6ZnVuY3Rpb24oKXtpZihpKXtp ZihrKXtnLnNob3cobCk7dGhpcy50YWJzVmlld3BvcnQuY2hlY2tXaWR0aCgpO2Qo

WydEb2NrJ10sZnVuY3Rpb24obil7bi5yZXNpemVBbGxGbHlvdXRzKCk7fSk7az1m YWxzZTt9fWVsc2UgaWYoIWope2QoWydVSVBhZ2VsZXQnXSxmdW5jdGlvbihuKXtu LmxvYWRGcm9tRW5kcG9pbnQoJ0RvY2tDaGF0UGFnZWxldCcsJ3BhZ2VsZXRfY2hh dCcpO30pO2o9dHJ1ZTt9fX07ZS5leHBvcnRzPW07fSk7Cl9fZCgiQ2hhdFRhYk1v ZGVsIixbImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJBcmJpdGVyIiwiQXJiaXRlck1p eGluIiwiQ2hhdEJlaGF2aW9yIiwiQ2hhdENvbmZpZyIsImNvcHlQcm9wZXJ0aWVz IiwiSlNMb2dnZXIiLCJNZXJjdXJ5QXNzZXJ0IiwiTWVyY3VyeVNlcnZlclJlcXVl c3RzIiwiTWVyY3VyeVRocmVhZHMiLCJNZXJjdXJ5VGltZXN0YW1wVHJhY2tlciIs IlByZXNlbmNlU3RhdGUiLCJQcmVzZW5jZVV0aWwiLCJhcmVPYmplY3RzRXF1YWwi LCJQcmVzZW5jZUluaXRpYWxEYXRhIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Io J2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdB cmJpdGVyTWl4aW4nKSxpPWIoJ0NoYXRCZWhhdmlvcicpLGo9YignQ2hhdENvbmZp ZycpLGs9YignY29weVByb3BlcnRpZXMnKSxsPWIoJ0pTTG9nZ2VyJyksbT1iKCdN ZXJjdXJ5QXNzZXJ0Jyksbj1iKCdNZXJjdXJ5U2VydmVyUmVxdWVzdHMnKSxvPWIo J01lcmN1cnlUaHJlYWRzJykscD1iKCdNZXJjdXJ5VGltZXN0YW1wVHJhY2tlcicp LHE9YygnUHJlc2VuY2VJbml0aWFsRGF0YScpLHI9YignUHJlc2VuY2VTdGF0ZScp LHM9YignUHJlc2VuY2VVdGlsJyksdD1iKCdhcmVPYmplY3RzRXF1YWwnKSx1PVtd LHY9bnVsbCx3PW51bGwseD1udWxsLHk9bnVsbDtmdW5jdGlvbiB6KCl7cmV0dXJu IHBhcnNlSW50KHEuc2VydmVyVGltZSwxMCk7fXZhciBhYT1qLmdldCgndGFiX21h eF9sb2FkX2FnZScpfHwzNjAwMDAwLGJhPXooKS1hYSxjYT0wLGRhPTIwLGVhPWwu Y3JlYXRlKCdjaGF0X3RhYl9tb2RlbCcpLGZhPWZhbHNlO2Z1bmN0aW9uIGdhKHhh KXt2YXIgeWE9ci52ZXJpZnlOdW1iZXIoeGEudWN0Mik7aWYoIXlhfHx0eXBlb2Yg eWEhPT0nbnVtYmVyJyl7ZWEud2FybignYmFkX2Nvb2tpZV92ZXJzaW9uJyx4YS51 Y3QyKTtyZXR1cm4gbnVsbDt9aWYoeWE8PWNhfHx5YTxiYSlyZXR1cm4gbnVsbDty ZXR1cm4geWE7fWZ1bmN0aW9uIGhhKHhhKXt2YXIgeWE9Z2EoeGEpO2lmKCF5YSl7 dmFyIHphPXt9O3phLm9sZF90YWJzPXhhJiZ4YS50MiYmSlNPTi5zdHJpbmdpZnko eGEudDIpO3phLm9sZF9wcm9tb3RlZD14YSYmeGEubG0yO3phLm9sZF90aW1lPXhh JiZ4YS51Y3QyO3phLm9sZF9yZWFzb249eGEmJnhhLnRyO3phLm9sZF93aW5kb3c9 eGEmJnhhLnR3O3ZhciBhYjtpZih3JiZ4YS50Milmb3IodmFyIGJiPTA7YmI8eGEu dDIubGVuZ3RoO2JiKyspe3ZhciBjYj14YS50MltiYl07aWYoY2IuaT09PXcpYWI9 Y2Iucjt9dmFyIGRiPVtdO3UuZm9yRWFjaChmdW5jdGlvbihlYil7aWYoIWViLmZy YWdpbGUpe3ZhciBmYj17aTplYi5pZCxzaTplYi5zZXJ2ZXJfaWR9O2lmKGViLnJh aXNlZHx8KGViLmlkPT09dyYmYWIpKWZiLnI9MTtkYi5wdXNoKGZiKTt9fSk7eGEu dDI9ZGI7eGEudWN0Mj1jYTt4YS5sbTI9djt4YS50cj15O3hhLnR3PXMuZ2V0U2Vz c2lvbklEKCk7emEubmV3X3RhYnM9SlNPTi5zdHJpbmdpZnkoeGEudDIpO3phLm5l d19wcm9tb3RlZD14YS5sbTI7emEubmV3X3RpbWU9eGEudWN0Mjt6YS5uZXdfcmVh c29uPXhhLnRyO3phLm5ld193aW5kb3c9eGEudHc7ZWEuZGVidWcoJ3N0b3JlJyx6 YSk7fXJldHVybiB4YTt9ZnVuY3Rpb24gaWEoeGEpe2lmKHhhKXt2YXIgeWE9Z2Eo eGEpO2lmKHlhKXt2YXIgemE9e307emEub2xkX3RhYnM9SlNPTi5zdHJpbmdpZnko dSk7emEub2xkX3Byb21vdGVkPXY7emEub2xkX3RpbWU9Y2E7emEub2xkX3JlYXNv bj15O3phLndpbmRvd19pZD1zLmdldFNlc3Npb25JRCgpO3phLmNvb2tpZV90YWJz PXhhJiZ4YS50MiYmSlNPTi5zdHJpbmdpZnkoeGEudDIpO3phLmNvb2tpZV9wcm9t b3RlZD14YSYmeGEubG0yO3phLmNvb2tpZV90aW1lPXhhJiZ4YS51Y3QyO3phLmNv b2tpZV9yZWFzb249eGEmJnhhLnRyO3phLmNvb2tpZV93aW5kb3c9eGEmJnhhLnR3 O2NhPXlhO3k9J2xvYWQnO3ZhciBhYj1qYSh4YS50Mix4YS5sbTJ8fG51bGwpO3ph LmxvYWRfcmVzdWx0PWFiO3phLm5ld190YWJzPUpTT04uc3RyaW5naWZ5KHUpO3ph Lm5ld19wcm9tb3RlZD12O3phLm5ld190aW1lPWNhO3phLm5ld19yZWFzb249eTt2 YXIgZXZlbnQ9J2xvYWQnO2lmKCFmYSlldmVudCs9J19pbml0JztlYS5sb2coZXZl bnQsemEpO3JldHVybiBhYjt9fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gamEoeGEs eWEpe2lmKGthKHhhLHlhKSl7dmFyIHphPXUuZmlsdGVyKGZ1bmN0aW9uKGNiKXty ZXR1cm4gY2IuZnJhZ2lsZTt9KSxhYj17fTt2PW51bGw7dT14YS5tYXAoZnVuY3Rp b24oY2Ipe3ZhciBkYj17aWQ6Y2IuaSxzZXJ2ZXJfaWQ6Y2Iuc2l9O2lmKGRiLmlk PT15YSl2PWRiLmlkO2lmKHc9PWNiLmkpe3ZhciBlYj1wYSh3KTtpZihlYiE9LTEp e2RiLnJhaXNlZD11W2ViXS5yYWlzZWQ7cmV0dXJuIGRiO31lbHNlIHJldHVybiBu dWxsO31pZihjYi5yKWRiLnJhaXNlZD10cnVlO2FiW2RiLmlkXT1kYjtyZXR1cm4g ZGI7fSk7dT11LmZpbHRlcihmdW5jdGlvbihjYil7cmV0dXJuIGNiIT1udWxsO30p O2lmKHgpZm9yKHZhciBiYiBpbiB4KWlmKCFhYltiYl18fCFhYltiYl0ucmFpc2Vk KWRlbGV0ZSB4W2JiXTt6YT16YS5maWx0ZXIoZnVuY3Rpb24oY2Ipe3JldHVybiAh YWJbY2IuaWRdO30pO3U9dS5jb25jYXQoemEpO29hKCk7cmV0dXJuIHRydWU7fXJl dHVybiBmYWxzZTt9ZnVuY3Rpb24ga2EoeGEseWEpe2lmKHlhIT12KXJldHVybiB0

cnVlO3ZhciB6YT11LmZpbHRlcihmdW5jdGlvbihjYil7cmV0dXJuICFjYi5mcmFn aWxlO30pO2lmKHhhLmxlbmd0aCE9emEubGVuZ3RoKXJldHVybiB0cnVlO2Zvcih2 YXIgYWI9MCxiYj14YS5sZW5ndGg7YWI8YmI7YWIrKyl7aWYoeGFbYWJdLmlkPT09 dyljb250aW51ZTtpZighdCh4YVthYl0semFbYWJdKSlyZXR1cm4gdHJ1ZTt9cmV0 dXJuIGZhbHNlO31mdW5jdGlvbiBsYSh4YSx5YSx6YSl7dmFyIGFiPWlhKHIuZ2V0 KCkpO2lmKHlhPT09dW5kZWZpbmVkfHx5YT5jYSl7aWYoeGEoKSl7YWI9dHJ1ZTt5 PXphfHxudWxsO25hKHlhKTt9fWVsc2UgZWEuZXJyb3IoJ3JlamVjdGVkJyx7Y2hh bmdlX3RpbWU6eWEsc3RhdGVfdGltZTpjYX0pO2FiJiZtYSgpO31mdW5jdGlvbiBt YSgpe2lmKGZhKXZhLmluZm9ybSgnY2hhdC90YWJzLWNoYW5nZWQnLHZhLmdldCgp KTt9ZnVuY3Rpb24gbmEoeGEpe2lmKHhhPT09dW5kZWZpbmVkKXhhPU1hdGgubWF4 KHAuZ2V0TGFzdFVzZXJNZXNzYWdlVGltZXN0YW1wKCl8fDEsY2ErMSk7Y2E9eGE7 ci5kb1N5bmMoKTt9ZnVuY3Rpb24gb2EoKXt2YXIgeGE9dS5sZW5ndGgtZGE7aWYo eGE+MCl1PXUuZmlsdGVyKGZ1bmN0aW9uKHlhKXtyZXR1cm4geWEucmFpc2VkfHx4 YS0tPD0wO30pO31mdW5jdGlvbiBwYSh4YSl7Zm9yKHZhciB5YT0wO3lhPHUubGVu Z3RoO3lhKyspaWYodVt5YV0uaWQ9PXhhKXJldHVybiB5YTtyZXR1cm4gLTE7fWZ1 bmN0aW9uIHFhKHhhKXt2YXIgeWE9by5nZXRUaHJlYWRNZXRhTm93KHhhKTtpZigh eWEpcmV0dXJuIGZhbHNlO2lmKHlhLmlzX2Nhbm9uaWNhbF91c2VyKXtyZXR1cm4g c2EoeGEpO31lbHNle3ZhciB6YT1yYSh4YSk7aWYoemEpbi5nZXRTZXJ2ZXJUaHJl YWRJRCh4YSxmdW5jdGlvbihhYil7aWYodGEoeGEsYWIpKXtuYSgpO21hKCk7fX0p O3JldHVybiB6YTt9fWZ1bmN0aW9uIHJhKHhhKXtpZihwYSh4YSk9PT0tMSl7dS5w dXNoKHtpZDp4YSxmcmFnaWxlOnRydWV9KTtlYS5sb2coJ29wZW5fZnJhZ2lsZV90 YWInLHt0YWJzOkpTT04uc3RyaW5naWZ5KHUpLG9wZW5lZDp4YSx3aW5kb3dfaWQ6 cy5nZXRTZXNzaW9uSUQoKX0pO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fWZ1 bmN0aW9uIHNhKHhhKXt2YXIgeWE9cGEoeGEpO2lmKHlhIT0tMSlpZih1W3lhXS5m cmFnaWxlKXt1LnNwbGljZSh5YSwxKTt9ZWxzZSByZXR1cm4gZmFsc2U7Zm9yKHZh ciB6YT0wO3phPD11Lmxlbmd0aDt6YSsrKWlmKHphPT11Lmxlbmd0aHx8dVt6YV0u ZnJhZ2lsZSl7dS5zcGxpY2UoemEsMCx7aWQ6eGF9KTtvYSgpO2VhLmxvZygnb3Bl bl90YWInLHt0YWJzOkpTT04uc3RyaW5naWZ5KHUpLG9wZW5lZDp4YSx3aW5kb3df aWQ6cy5nZXRTZXNzaW9uSUQoKX0pO3JldHVybiB0cnVlO319ZnVuY3Rpb24gdGEo eGEseWEpe3ZhciB6YT1wYSh4YSk7aWYoemEhPS0xJiZ1W3phXS5mcmFnaWxlKXt2 YXIgYWI9dVt6YV07YWIuZnJhZ2lsZT1mYWxzZTthYi5zZXJ2ZXJfaWQ9eWE7dmFy IGJiPVtdO3UuZm9yRWFjaChmdW5jdGlvbihjYil7aWYoY2IuaWQhPXhhKXtpZihh YiYmY2IuZnJhZ2lsZSl7YmIucHVzaChhYik7YWI9bnVsbDt9YmIucHVzaChjYik7 fX0pO2lmKGFiKWJiLnB1c2goYWIpO3U9YmI7ZWEubG9nKCdtYWtlX3Blcm1hbmVu dCcse3RhYnM6SlNPTi5zdHJpbmdpZnkodSksdGFiX2lkOnhhLHdpbmRvd19pZDpz LmdldFNlc3Npb25JRCgpfSk7cmV0dXJuIHRydWU7fXJldHVybiBmYWxzZTt9ZnVu Y3Rpb24gdWEoeGEpe3ZhciB5YT1wYSh4YSk7aWYoeGE9PXYpdj1udWxsO2lmKHlh IT0tMSl7dS5zcGxpY2UoeWEsMSk7ZWEubG9nKCdjbG9zZV90YWInLHt0YWJzOkpT T04uc3RyaW5naWZ5KHUpLGNsb3NlZDp4YSx3aW5kb3dfaWQ6cy5nZXRTZXNzaW9u SUQoKX0pO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fXIucmVnaXN0ZXJTdGF0 ZVN0b3JlcihoYSk7ci5yZWdpc3RlclN0YXRlTG9hZGVyKGZ1bmN0aW9uKHhhKXtp ZihpYSh4YSkpbWEoKTt9KTtmdW5jdGlvbiB2YSgpe31rKHZhLGgse2luZGV4T2Y6 ZnVuY3Rpb24oeGEpe3JldHVybiBwYSh4YSk7fSxnZXRUYWI6ZnVuY3Rpb24oeGEp e20uaXNUaHJlYWRJRCh4YSk7dmFyIHlhPXRoaXMuaW5kZXhPZih4YSk7aWYoeWE+ LTEpe3ZhciB6YT11W3lhXTtyZXR1cm4gayh7fSx6YSk7fXJldHVybiBudWxsO30s Y2xvc2VBbGxUYWJzOmZ1bmN0aW9uKCl7aWYodS5sZW5ndGgpe2VhLmxvZygnY2xv c2VfYWxsX3RhYnMnLHtjbG9zZWRfdGFiczpKU09OLnN0cmluZ2lmeSh1KSx3aW5k b3dfaWQ6cy5nZXRTZXNzaW9uSUQoKX0pO3U9W107dj1udWxsO2lmKHgpeD17fTtu YSgpO21hKCk7fX0sY2xvc2VGcmFnaWxlVGFiczpmdW5jdGlvbigpe3ZhciB4YT1b XTtmb3IodmFyIHlhPTA7eWE8dS5sZW5ndGg7eWErKylpZih1W3lhXS5mcmFnaWxl KXt4YS5wdXNoKHVbeWFdKTt1LnNwbGljZSh5YSk7bWEoKTticmVhazt9ZWEubG9n KCdjbG9zZV9mcmFnaWxlX3RhYnMnLHt0YWJzOkpTT04uc3RyaW5naWZ5KHUpLGZy YWdpbGVfY2xvc2VkOnhhLHdpbmRvd19pZDpzLmdldFNlc3Npb25JRCgpfSk7fSxj bG9zZVRhYjpmdW5jdGlvbih4YSx5YSl7bS5pc1RocmVhZElEKHhhKTt2YXIgemE9 ZmFsc2U7aWYoeCl7ZGVsZXRlIHhbeGFdO3phPXRydWU7fWxhKGZ1bmN0aW9uKCl7 aWYodWEoeGEpKXphPXRydWU7cmV0dXJuIHphO30sdW5kZWZpbmVkLHlhKTt9LGNs b3NlVGFiQW5kRGVtb3RlOmZ1bmN0aW9uKHhhLHlhLHphKXttLmlzVGhyZWFkSUQo eGEpO3ZhciBhYj1mYWxzZTtpZih4KXtkZWxldGUgeFt4YV07YWI9dHJ1ZTt9bGEo ZnVuY3Rpb24oKXtpZih1YSh4YSkpe2lmKHYpe3ZhciBiYj1wYSh2KTtpZihiYj55 YSl7dmFyIGNiPXUuc3BsaWNlKGJiLDEpWzBdO3Uuc3BsaWNlKHlhLDAsY2IpO3Y9

bnVsbDt9fWFiPXRydWU7fXJldHVybiBhYjt9LHVuZGVmaW5lZCx6YSk7fSxyYWlz ZVRhYjpmdW5jdGlvbih4YSx5YSl7bS5pc1RocmVhZElEKHhhKTt2YXIgemE9ZmFs c2U7aWYoeCYmeWEpe3hbeGFdPXRydWU7emE9dHJ1ZTt9aWYoIXlhJiZ4YT09PXcp e3phJiZtYSgpO3JldHVybjt9bGEoZnVuY3Rpb24oKXtpZihxYSh4YSkpemE9dHJ1 ZTt2YXIgYWI9cGEoeGEpO2lmKGFiIT0tMSYmIXVbYWJdLnJhaXNlZCl7dVthYl0u cmFpc2VkPXRydWU7emE9dHJ1ZTtlYS5sb2coJ3JhaXNlX3RhYicse3RhYnM6SlNP Ti5zdHJpbmdpZnkodSkscmFpc2VkOnhhLHdpbmRvd19pZDpzLmdldFNlc3Npb25J RCgpfSk7fXJldHVybiB6YTt9KTt9LGdldDpmdW5jdGlvbigpe3ZhciB4YT11Lm1h cChmdW5jdGlvbih5YSl7dmFyIHphPWsoe30seWEpO2RlbGV0ZSB6YS5mcmFnaWxl O2lmKHgpemEucmFpc2VkPXhbemEuaWRdO3JldHVybiB6YTt9KTtyZXR1cm4ge3Rh YnM6eGEscHJvbW90ZWQ6dn07fSxvcGVuRnJhZ2lsZVRhYjpmdW5jdGlvbih4YSl7 bS5pc1RocmVhZElEKHhhKTtpZihyYSh4YSkpbWEoKTt9LG9wZW5UYWI6ZnVuY3Rp b24oeGEpe20uaXNUaHJlYWRJRCh4YSk7bGEocWEuY3VycnkoeGEpKTt9LGxvd2Vy VGFiOmZ1bmN0aW9uKHhhKXttLmlzVGhyZWFkSUQoeGEpO3ZhciB5YT1mYWxzZTtp Zih4KXtkZWxldGUgeFt4YV07eWE9dHJ1ZTt9bGEoZnVuY3Rpb24oKXt2YXIgemE9 cGEoeGEpO2lmKHphIT0tMSYmdVt6YV0ucmFpc2VkKXtkZWxldGUgdVt6YV0ucmFp c2VkO2VhLmxvZygnbG93ZXJfdGFiJyx7dGFiczpKU09OLnN0cmluZ2lmeSh1KSxs b3dlcmVkOnhhLHdpbmRvd19pZDpzLmdldFNlc3Npb25JRCgpfSk7eWE9dHJ1ZTt9 cmV0dXJuIHlhO30pO30scmFpc2VBbmRQcm9tb3RlVGFiOmZ1bmN0aW9uKHhhLHlh LHphLGFiKXttLmlzVGhyZWFkSUQoeGEpO3ZhciBiYj1mYWxzZTtpZih4JiZ5YSl7 eFt4YV09dHJ1ZTtiYj10cnVlO31pZigheWEmJnhhPT09dyl7YmImJm1hKCk7cmV0 dXJuO31sYShmdW5jdGlvbigpe2lmKHFhKHhhKSliYj10cnVlO3ZhciBjYj1wYSh4 YSk7aWYoY2IhPS0xJiYoIXVbY2JdLnJhaXNlZHx8diE9eGEpKXt1W2NiXS5yYWlz ZWQ9dHJ1ZTt2PXhhO2JiPXRydWU7ZWEubG9nKCdyYWlzZV9hbmRfcHJvbW90ZV90 YWInLHt0YWJzOkpTT04uc3RyaW5naWZ5KHUpLHByb21vdGVkOnhhLHdpbmRvd19p ZDpzLmdldFNlc3Npb25JRCgpfSk7fXJldHVybiBiYjt9LHphLGFiKTt9LHNxdWVs Y2hUYWI6ZnVuY3Rpb24oeGEpe20uaXNUaHJlYWRJRCh4YSk7dz14YTt0aGlzLmxv d2VyVGFiKHhhKTtlYS5sb2coJ3NxdWVsY2hfdGFiJyx7c3F1ZWxjaGVkOnhhLHRh YnM6SlNPTi5zdHJpbmdpZnkodSksd2luZG93X2lkOnMuZ2V0U2Vzc2lvbklEKCl9 KTt9LGNsZWFyU3F1ZWxjaGVkVGFiOmZ1bmN0aW9uKCl7aWYodyllYS5sb2coJ3Vu c3F1ZWxjaF90YWInLHtzcXVlbGNoZWQ6dyx0YWJzOkpTT04uc3RyaW5naWZ5KHUp LHdpbmRvd19pZDpzLmdldFNlc3Npb25JRCgpfSk7dz1udWxsO30scGVyc2lzdExv Y2FsUmFpc2VkOmZ1bmN0aW9uKCl7aWYoeCl7bGEoZnVuY3Rpb24oKXt2YXIgeGE9 ZmFsc2U7dS5mb3JFYWNoKGZ1bmN0aW9uKHlhKXtpZih5YS5yYWlzZWQhPXhbeWEu aWRdKXt4YT10cnVlO2lmKHhbeWEuaWRdKXt5YS5yYWlzZWQ9dHJ1ZTt9ZWxzZSBk ZWxldGUgeWEucmFpc2VkO319KTtyZXR1cm4geGE7fSk7ZWEubG9nKCdwZXJzaXN0 X2xvY2FsX3JhaXNlJyx7dGFiczpKU09OLnN0cmluZ2lmeSh1KSx3aW5kb3dfaWQ6 cy5nZXRTZXNzaW9uSUQoKX0pO319fSk7Zy5zdWJzY3JpYmUobC5EVU1QX0VWRU5U LGZ1bmN0aW9uKHhhLHlhKXt5YS5jaGF0X3RhYnM9e3Byb21vdGVkOnYsdGFiczp1 Lm1hcChmdW5jdGlvbih6YSl7cmV0dXJuIGsoe30semEpO30pLHRpbWU6Y2EsbWF4 X2xvYWRfYWdlOmFhfTt9KTtmdW5jdGlvbiB3YSgpe3ZhciB4YT1pLmlnbm9yZXNS ZW1vdGVUYWJSYWlzZSgpO2lmKHhhJiYheCl7ZWEubG9nKCdzdGFydF9pZ25vcmVf cmVtb3RlX3JhaXNlJyk7eD17fTttYSgpO31lbHNlIGlmKCF4YSYmeCl7ZWEubG9n KCdzdG9wX2lnbm9yZV9yZW1vdGVfcmFpc2UnKTt4PW51bGw7bWEoKTt9fWkuc3Vi c2NyaWJlKGkuT05fQ0hBTkdFRCx3YSk7d2EoKTtpYShyLmdldEluaXRpYWwoKSx0 cnVlKTtpZihjYT09PTApY2E9eigpLTYwMDAwMDtmYT10cnVlO2UuZXhwb3J0cz12 YTt9KTsKX19kKCJWaWRlb0NhbGxQcm9tbyIsWyJBcmJpdGVyTWl4aW4iLCJBc3lu Y1JlcXVlc3QiLCJBdmFpbGFibGVMaXN0IiwiQXZhaWxhYmxlTGlzdENvbnN0YW50 cyIsIkNoYXRDb25maWciLCJDaGF0VmlzaWJpbGl0eSIsIkNvbnRleHR1YWxEaWFs b2dYIiwiY29weVByb3BlcnRpZXMiLCJDU1MiLCJNZXJjdXJ5VGhyZWFkcyIsIk1l cmN1cnlQYXJ0aWNpcGFudHMiLCJWaWRlb0NhbGxDb3JlIiwiQ2hhdFRhYlRlbXBs YXRlcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyTWl4 aW4nKSxoPWIoJ0FzeW5jUmVxdWVzdCcpLGk9YignQXZhaWxhYmxlTGlzdCcpLGo9 YignQXZhaWxhYmxlTGlzdENvbnN0YW50cycpLGs9YignQ2hhdENvbmZpZycpLGw9 YignQ2hhdFZpc2liaWxpdHknKSxtPWIoJ0NvbnRleHR1YWxEaWFsb2dYJyksbj1i KCdjb3B5UHJvcGVydGllcycpLG89YignQ1NTJykscD1iKCdNZXJjdXJ5VGhyZWFk cycpLHE9YignTWVyY3VyeVBhcnRpY2lwYW50cycpLHI9YygnQ2hhdFRhYlRlbXBs YXRlcycpLHM9YignVmlkZW9DYWxsQ29yZScpO2Z1bmN0aW9uIHQoKXt0aGlzLl9k aWFsb2c9bnVsbDt9ZnVuY3Rpb24gdSh3KXtpZighKHMuaXNTdXBwb3J0ZWQoKSYm ay5nZXQoJ3ZpZGVvLnNob3dfcHJvbW8nKSkpcmV0dXJuIGZhbHNlO3ZhciB4PXAu

Z2V0Q2Fub25pY2FsVXNlckluVGhyZWFkKHcpO2lmKCF4KXJldHVybiBmYWxzZTty ZXR1cm4gbC5pc09ubGluZSgpJiZzLmF2YWlsYWJsZUZvckNhbGwoeCk7fWZ1bmN0 aW9uIHYodyl7bmV3IGgoKS5zZXRVUkkoJy9hamF4L2NoYXQvdmlkZW8vbG9nX3By b21vLnBocCcpLnNldERhdGEoe3ZpZXdlZFVzZXJJRDp3fSkuc2V0QWxsb3dDcm9z c1BhZ2VUcmFuc2l0aW9uKHRydWUpLnNldEVycm9ySGFuZGxlcihiYWdvZmhvbGRp bmcpLnNlbmQoKTt9bih0LnByb3RvdHlwZSxnKTtuKHQucHJvdG90eXBlLHtyZW5k ZXI6ZnVuY3Rpb24odyx4KXt2YXIgeT11KHgpO2lmKCF5KXJldHVybjt2YXIgej1w LmdldENhbm9uaWNhbFVzZXJJblRocmVhZCh4KTtxLmdldCgnZmJpZDonK3osZnVu Y3Rpb24oYWEpe2lmKCFhYS5jYWxsX3Byb21vKXJldHVybjt2YXIgYmE9clsnOmZi Om1lcmN1cnk6Y2FsbDpwcm9tbyddLmJ1aWxkKCk7dGhpcy5fZGlhbG9nPW5ldyBt KCk7dGhpcy5fZGlhbG9nLmluaXQoYmEuZ2V0Um9vdCgpKS5zZXRXaWR0aCgyNTAp LnNldEFsaWduSCgnY2VudGVyJykuc2V0Q29udGV4dCh3KS5zaG93KCk7by5hZGRD bGFzcyh0aGlzLl9kaWFsb2cuZ2V0Um9vdCgpLCd1aUNvbnRleHR1YWxEaWFsb2dX aXRoRm9vdGVyQXJyb3dCb3R0b20nKTtvLmFkZENsYXNzKHcsJ3ZpZGVvX2NhbGxf cHJvbW8nKTt2KHAuZ2V0Q2Fub25pY2FsVXNlckluVGhyZWFkKHgpKTt0aGlzLmlu Zm9ybSgnY2hhdC9kaWFsb2ctcmVuZGVyZWQnLHtkaWFsb2c6dGhpcyx0aHJlYWRf aWQ6eH0pO30uYmluZCh0aGlzKSk7fSx1cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigp e2lmKHRoaXMuX2RpYWxvZyYmdGhpcy5fZGlhbG9nLmlzU2hvd24oKSl0aGlzLl9k aWFsb2cudXBkYXRlUG9zaXRpb24oKTt9LGhpZGU6ZnVuY3Rpb24oKXtpZih0aGlz Ll9kaWFsb2cmJnRoaXMuX2RpYWxvZy5pc1Nob3duKCkpe3RoaXMuX2RpYWxvZy5o aWRlKCk7dGhpcy5fZGlhbG9nPW51bGw7fX19KTtlLmV4cG9ydHM9dDt9KTsKX19k KCJWaWRlb0NhbGxUb3VyRGlhbG9nIixbIkFyYml0ZXJNaXhpbiIsIkNvbnRleHR1 YWxEaWFsb2dYIiwiY29weVByb3BlcnRpZXMiLCJDU1MiLCJNZXJjdXJ5VGhyZWFk cyIsIlZpZGVvQ2FsbENvcmUiLCJWaWRlb0NhbGxpbmdUb3VyIiwiQ2hhdFRhYlRl bXBsYXRlcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVy TWl4aW4nKSxoPWIoJ0NvbnRleHR1YWxEaWFsb2dYJyksaT1iKCdjb3B5UHJvcGVy dGllcycpLGo9YignQ1NTJyksaz1iKCdNZXJjdXJ5VGhyZWFkcycpLGw9YygnQ2hh dFRhYlRlbXBsYXRlcycpLG09YignVmlkZW9DYWxsQ29yZScpLG49YignVmlkZW9D YWxsaW5nVG91cicpO2Z1bmN0aW9uIG8oKXt0aGlzLl9kaWFsb2c9bnVsbDt9aShv LnByb3RvdHlwZSxnKTtpKG8ucHJvdG90eXBlLHtyZW5kZXI6ZnVuY3Rpb24ocCxx KXt2YXIgcj1rLmdldENhbm9uaWNhbFVzZXJJblRocmVhZChxKTtpZighcnx8IW0u YXZhaWxhYmxlRm9yQ2FsbChyKSlyZXR1cm47dmFyIHM9bFsnOmZiOm1lcmN1cnk6 Y2FsbDp0b3VyJ10uYnVpbGQoKTt0aGlzLl9kaWFsb2c9bmV3IGgoKTt0aGlzLl9k aWFsb2cuaW5pdChzLmdldFJvb3QoKSkuc2V0V2lkdGgoMjUwKS5zZXRBbGlnbkgo J2NlbnRlcicpLnNldENvbnRleHQocCkuc2hvdygpO2ouYWRkQ2xhc3ModGhpcy5f ZGlhbG9nLmdldFJvb3QoKSwndWlDb250ZXh0dWFsRGlhbG9nV2l0aEZvb3RlckFy cm93Qm90dG9tJyk7ai5hZGRDbGFzcyhwLCd2aWRlb19jYWxsX3RvdXInKTt0aGlz LmluZm9ybSgnY2hhdC9kaWFsb2ctcmVuZGVyZWQnLHtkaWFsb2c6dGhpcyx0aHJl YWRfaWQ6cX0pO24uaW5mb3JtKCd2aWRlb2NhbGxpbmd0b3VyL2VuZCcpO30sdXBk YXRlUG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzLl9kaWFsb2cmJnRoaXMuX2Rp YWxvZy5pc1Nob3duKCkpdGhpcy5fZGlhbG9nLnVwZGF0ZVBvc2l0aW9uKCk7fSxo aWRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fZGlhbG9nJiZ0aGlzLl9kaWFsb2cuaXNT aG93bigpKXt0aGlzLl9kaWFsb2cuaGlkZSgpO3RoaXMuX2RpYWxvZz1udWxsO319 fSk7ZS5leHBvcnRzPW87fSk7Cl9fZCgiQ2hhdENvbnRleHR1YWxEaWFsb2dDb250 cm9sbGVyIixbImV2ZW50LWV4dGVuc2lvbnMiLCJBcmJpdGVyTWl4aW4iLCJDaGF0 VGFiTW9kZWwiLCJWaWRlb0NhbGxpbmdUb3VyIiwiVmlkZW9DYWxsUHJvbW8iLCJW aWRlb0NhbGxUb3VyRGlhbG9nIiwiY29weVByb3BlcnRpZXMiLCJzZXRUaW1lb3V0 QWNyb3NzVHJhbnNpdGlvbnMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZl bnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FyYml0ZXJNaXhpbicpLGg9YignQ2hh dFRhYk1vZGVsJyksaT1iKCdWaWRlb0NhbGxpbmdUb3VyJyksaj1iKCdWaWRlb0Nh bGxQcm9tbycpLGs9YignVmlkZW9DYWxsVG91ckRpYWxvZycpLGw9YignY29weVBy b3BlcnRpZXMnKSxtPWIoJ3NldFRpbWVvdXRBY3Jvc3NUcmFuc2l0aW9ucycpLG49 NjAwMDAsbz1mYWxzZSxwPWZhbHNlLHE9ZnVuY3Rpb24oeCx5KXt0aGlzLl92aWRl b0NhbGxQcm9tbz1uZXcgaigpO3RoaXMuX3ZpZGVvQ2FsbFRvdXI9bmV3IGsoKTt0 aGlzLl90aHJlYWRJRD14O3RoaXMuX3RhYk1haW5FbGVtZW50PXk7dGhpcy5fb3Bl bkRpYWxvZz1udWxsO3RoaXMuX3N1YnNjcmlwdGlvblRva2Vucz1bXTt0aGlzLl9z Y3JvbGxMaXN0ZW5lcj1udWxsO3RoaXMuX3RpbWVvdXQ9bnVsbDt9O2Z1bmN0aW9u IHIoeCxldmVudCx5KXtpZih4Ll9vcGVuRGlhbG9nKXguX29wZW5EaWFsb2cudXBk YXRlUG9zaXRpb24oKTt9ZnVuY3Rpb24gcyh4KXtpZih4Ll9vcGVuRGlhbG9nKXgu X29wZW5EaWFsb2cudXBkYXRlUG9zaXRpb24oKTt9ZnVuY3Rpb24gdCh4KXtpZih4

Ll9vcGVuRGlhbG9nKXt4Ll9vcGVuRGlhbG9nLmhpZGUoKTt4Ll9vcGVuRGlhbG9n PW51bGw7fWlmKHguX3RpbWVvdXQpe2NsZWFyVGltZW91dCh4Ll90aW1lb3V0KTt4 Ll90aW1lb3V0PW51bGw7fXdoaWxlKHguX3N1YnNjcmlwdGlvblRva2Vucy5sZW5n dGgpeC5fc3Vic2NyaXB0aW9uVG9rZW5zLnBvcCgpLnVuc3Vic2NyaWJlKCk7aWYo eC5fc2Nyb2xsTGlzdGVuZXIpe3guX3Njcm9sbExpc3RlbmVyLnJlbW92ZSgpO3gu X3Njcm9sbExpc3RlbmVyPW51bGw7fX1mdW5jdGlvbiB1KHgsZXZlbnQseSl7aWYo eS50aHJlYWRfaWQ9PT14Ll90aHJlYWRJRCl7eC5fb3BlbkRpYWxvZz15LmRpYWxv ZztvPXRydWU7dyh4KTt4Ll90aW1lb3V0PW0oeC5kZXN0cm95LmJpbmQoeCx4Ll90 aHJlYWRJRCksbik7eC5fc2Nyb2xsTGlzdGVuZXI9RXZlbnQubGlzdGVuKHdpbmRv dywnc2Nyb2xsJyxzLmN1cnJ5KHgpKTt9fWZ1bmN0aW9uIHYoeCx5KXtpZigheC5f b3BlbkRpYWxvZyl7eC5fc3Vic2NyaXB0aW9uVG9rZW5zLnB1c2goeS5zdWJzY3Jp YmUoJ2NoYXQvZGlhbG9nLXJlbmRlcmVkJyx1LmN1cnJ5KHgpKSk7eS5yZW5kZXIo eC5fdGFiTWFpbkVsZW1lbnQseC5fdGhyZWFkSUQpO319ZnVuY3Rpb24gdyh4KXt4 Ll9zdWJzY3JpcHRpb25Ub2tlbnMucHVzaChoLnN1YnNjcmliZSgnY2hhdC90YWJz LWNoYW5nZWQnLHIuY3VycnkoeCkpLHEuc3Vic2NyaWJlKCdkaWFsb2cvY2xvc2Ut YWxsJyx0LmN1cnJ5KHgpKSk7fWwocSxnKTtsKHEucHJvdG90eXBlLHtkZXN0cm95 OmZ1bmN0aW9uKCl7dCh0aGlzKTt9LHRhYkZvY3VzZWQ6ZnVuY3Rpb24oKXtpZihw KXt2KHRoaXMsdGhpcy5fdmlkZW9DYWxsVG91cik7cmV0dXJuO31pZighbyl2KHRo aXMsdGhpcy5fdmlkZW9DYWxsUHJvbW8pO30sdGFiTm90QWN0aXZlOmZ1bmN0aW9u KCl7dCh0aGlzKTt9LGhpZGVWaWRlb0NhbGxvdXRzOmZ1bmN0aW9uKCl7dCh0aGlz KTt9fSk7aS5zdWJzY3JpYmUoJ3ZpZGVvY2FsbGluZ3RvdXIvc3RhcnQnLGZ1bmN0 aW9uKCl7cD10cnVlO3EuaW5mb3JtKCdkaWFsb2cvY2xvc2UtYWxsJyk7fSk7aS5z dWJzY3JpYmUoJ3ZpZGVvY2FsbGluZ3RvdXIvZW5kJyxmdW5jdGlvbigpe3A9ZmFs c2U7fSk7ZS5leHBvcnRzPXE7fSk7Cl9fZCgiQ2hhdFByaXZhY3lBY3Rpb25Db250 cm9sbGVyIixbIkFyYml0ZXIiLCJDaGF0VmlzaWJpbGl0eSIsIkpTTG9nZ2VyIiwi UHJlc2VuY2VQcml2YWN5IiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9YignQ2hhdFZpc2liaWxpdHkn KSxpPWIoJ0pTTG9nZ2VyJyksaj1iKCdQcmVzZW5jZVByaXZhY3knKSxrPWIoJ2Nv cHlQcm9wZXJ0aWVzJyksbD1mdW5jdGlvbihtLG4pe3RoaXMuX3VzZXJJRD1tO3Ro aXMuX2xvZ2dlcj1pLmNyZWF0ZSgnYmxhY2tiaXJkJyk7dGhpcy5fZ2V0U3RhdGU9 ZnVuY3Rpb24oKXtpZihoLmlzT25saW5lKCkpcmV0dXJuIGouYWxsb3dzKHRoaXMu X3VzZXJJRCk/bC5OT1JNQUw6bC5CTE9DS0VEO3JldHVybiBsLk9GRkxJTkU7fTt0 aGlzLl90b2dnbGVQcml2YWN5PWZ1bmN0aW9uKCl7dmFyIG89dGhpcy5fZ2V0U3Rh dGUoKTtzd2l0Y2godGhpcy5fZ2V0U3RhdGUoKSl7Y2FzZSBsLk9GRkxJTkU6aWYo aC5pc09ubGluZSgpKXt0aGlzLl9sb2dnZXIuZXJyb3IoJ3RhYnNfYWxyZWFkeV9v bmxpbmUnKTticmVhazt9dGhpcy5fbG9nZ2VyLmxvZygndGFic19nb19vbmxpbmUn LHt0YWJfaWQ6dGhpcy5fdXNlcklEfSk7aC5nb09ubGluZShmdW5jdGlvbigpe2lm KCFqLmFsbG93cyh0aGlzLl91c2VySUQpKXtpZih0aGlzLl9nZXRTdGF0ZSgpIT09 bC5CTE9DS0VEKXRoaXMuX2xvZ2dlci5lcnJvcigncHJpdmFjeV9hY3Rpb25fY29u dHJvbGxlcl9ibG9ja2VkX2luY29uc2lzdGVuY3knKTt0aGlzLl90b2dnbGVQcml2 YWN5KCk7fX0uYmluZCh0aGlzKSk7YnJlYWs7Y2FzZSBsLkJMT0NLRUQ6ai5hbGxv dyh0aGlzLl91c2VySUQpO3RoaXMuX2xvZ2dlci5sb2coJ3RhYnNfdW5ibG9jaycs e3RhYl9pZDp0aGlzLl91c2VySUR9KTticmVhaztjYXNlIGwuTk9STUFMOmouZGlz YWxsb3codGhpcy5fdXNlcklEKTt0aGlzLl9sb2dnZXIubG9nKCd0YWJzX2Jsb2Nr Jyx7dGFiX2lkOnRoaXMuX3VzZXJJRH0pO2JyZWFrO319OyhmdW5jdGlvbigpe3Zh ciBvPWZ1bmN0aW9uKCl7biYmbih0aGlzLl9nZXRTdGF0ZSgpKTt9LmJpbmQodGhp cyk7bygpO3RoaXMuX3N1YnNjcmliZVRva2VuPWouc3Vic2NyaWJlKCdwcml2YWN5 LWNoYW5nZWQnLG8pO30uYmluZCh0aGlzKSkuZGVmZXIoKTt9O2wuT0ZGTElORT0n b2ZmbGluZSc7bC5CTE9DS0VEPSdibG9ja2VkJztsLk5PUk1BTD0nbm9ybWFsJztr KGwucHJvdG90eXBlLHt0b2dnbGVQcml2YWN5OmZ1bmN0aW9uKCl7dGhpcy5fbG9n Z2VyLmxvZygnZ2Vhcl9tZW51X3RvZ2dsZV9wcml2YWN5Jyx7dGFiX2lkOnRoaXMu X3VzZXJJRH0pO3RoaXMuX3RvZ2dsZVByaXZhY3koKTt9LGRlc3Ryb3k6ZnVuY3Rp b24oKXtqLnVuc3Vic2NyaWJlKHRoaXMuX3N1YnNjcmliZVRva2VuKTt9fSk7ZS5l eHBvcnRzPWw7fSk7Cl9fZCgiTWVzc2FnZXNFbW90aWNvblZpZXciLFsiZXZlbnQt ZXh0ZW5zaW9ucyIsImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJET00iLCJJbnB1dFNl bGVjdGlvbiIsIlBhcmVudCIsIlRleHRBcmVhQ29udHJvbCIsIlRvZ2dsZXIiLCJj b3B5UHJvcGVydGllcyIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7YignZnVuY3Rpb24t ZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0RPTScpLGg9YignSW5wdXRTZWxlY3Rpb24n KSxpPWIoJ1BhcmVudCcpLGo9YignVGV4dEFyZWFDb250cm9sJyksaz1iKCdUb2dn

bGVyJyksbD1iKCdjb3B5UHJvcGVydGllcycpLG09YignZW5kc1dpdGgnKSxuPWIo J3N0YXJ0c1dpdGgnKSxvPXtzbWlsZTonOiknLGZyb3duOic6KCcsdG9uZ3VlOic6 UCcsZ3JpbjonPUQnLGdhc3A6JzpvJyx3aW5rOic7KScsZ2xhc3NlczonOCknLHN1 bmdsYXNzZXM6J0J8JyxncnVtcHk6Jz46KCcsdW5zdXJlOic6LycsY3J5OiI6Jygi LGRldmlsOiczOiknLGFuZ2VsOidPOiknLGtpc3M6JzoqJyxoZWFydDonPDMnLGtp a2k6J15fXicsc3F1aW50OictXy0nLGNvbmZ1c2VkOidvLk8nLHVwc2V0Oic+Om8n LHBhY21hbjonOnYnLHJvYm90Oic6fF0nLGNvbG9udGhyZWU6JzozJyxwZW5ndWlu Oic8KCIpJyxwdXRuYW06JzpwdXRuYW06JyxzaGFyazonKF5eXiknLCc0Mic6Jzo0 MjonLGxpa2U6Jyh5KSd9O2Z1bmN0aW9uIHAocixzLHQpe3ZhciB1PWkuYnlDbGFz cyhyLCdlbW90ZUljb24nKTtpZighdSlyZXR1cm47dmFyIHY9J25hbWVfJyx3PW51 bGw7dS5jbGFzc05hbWUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uKGRhKXtp ZihuKGRhLHYpKXc9ZGEuc3Vic3RyaW5nKHYubGVuZ3RoKTt9KTtpZighb1t3XSly ZXR1cm47dmFyIHg9ai5nZXRJbnN0YW5jZShzKSx5PXguZ2V0VmFsdWUoKSx6PW9b d10sYWE9eS5zdWJzdHJpbmcoMCx0LnN0YXJ0KSxiYT15LnN1YnN0cmluZyh0LmVu ZCk7aWYodC5zdGFydD4wJiYhbShhYSwnICcpKXo9JyAnK3o7aWYoIW4oYmEsJyAn KSl6Kz0nICc7dmFyIGNhPWFhK3orYmE7dC5zdGFydCs9ei5sZW5ndGg7dC5lbmQ9 dC5zdGFydDt4LnNldFZhbHVlKGNhKTtoLnNldChzLHQuc3RhcnQsdC5lbmQpO31m dW5jdGlvbiBxKHIscyl7dmFyIHQ9e3N0YXJ0OjAsZW5kOjB9O2Z1bmN0aW9uIHUo KXt0PWguZ2V0KHMpO312YXIgdj1nLmZpbmQociwnLnVpVG9nZ2xlRmx5b3V0Jyk7 dGhpcy5fc3Vic2NyaXB0aW9uPWsuc3Vic2NyaWJlKCdzaG93JyxmdW5jdGlvbih3 LHgpe2lmKHguYWN0aXZlJiZnLmNvbnRhaW5zKHIseC5hY3RpdmUpKWguc2V0KHMs dC5zdGFydCx0LmVuZCk7fSk7dGhpcy5fZXZlbnRMaXN0ZW5lcnM9W0V2ZW50Lmxp c3Rlbih2LCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2suaGlkZShyKTtwKGV2ZW50 LmdldFRhcmdldCgpLHMsdCk7fSksRXZlbnQubGlzdGVuKHMsJ2tleXVwJyx1KSxF dmVudC5saXN0ZW4ocywnY2xpY2snLHUpXTt9bChxLnByb3RvdHlwZSx7ZGVzdHJv eTpmdW5jdGlvbigpe3RoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO3do aWxlKHRoaXMuX2V2ZW50TGlzdGVuZXJzLmxlbmd0aCl0aGlzLl9ldmVudExpc3Rl bmVycy5wb3AoKS5yZW1vdmUoKTt9fSk7ZS5leHBvcnRzPXE7fSk7Cl9fZCgiTWVy Y3VyeUF0dGFjaG1lbnRSZW5kZXJlciIsWyJDU1MiLCJET00iLCJNZXJjdXJ5QXR0 YWNobWVudCIsIlN0eWxlIiwidHgiLCJVUkkiLCJNZXJjdXJ5TWVzc2FnZXMiLCJN ZXJjdXJ5UGFydGljaXBhbnRzIiwiTWVyY3VyeUF0dGFjaG1lbnRUZW1wbGF0ZXMi LCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ0NTUycpLGg9YignRE9NJyksaT1iKCdNZXJjdXJ5QXR0YWNobWVudCcpLGo9 YignU3R5bGUnKSxrPWIoJ3R4JyksbD1iKCdVUkknKSxtPWMoJ01lcmN1cnlBdHRh Y2htZW50VGVtcGxhdGVzJyksbj1jKCdNZXJjdXJ5Q29uc3RhbnRzJyksbz1iKCdN ZXJjdXJ5TWVzc2FnZXMnKSxwPWIoJ01lcmN1cnlQYXJ0aWNpcGFudHMnKTtmdW5j dGlvbiBxKHMsdCl7dmFyIHU9bVt0XS5idWlsZCgpLnNldE5vZGVDb250ZW50KCdm aWxlbmFtZScscy5uYW1lKSx2PXUuZ2V0Tm9kZSgnbGluaycpO3Yuc2V0QXR0cmli dXRlKCdocmVmJyxzLnVybCk7cy5yZWwmJnYuc2V0QXR0cmlidXRlKCdyZWwnLHMu cmVsKTtnLmFkZENsYXNzKHUuZ2V0Um9vdCgpLGkuZ2V0QXR0YWNoSWNvbkNsYXNz KHMuaWNvbl90eXBlKSk7cmV0dXJuIHU7fXZhciByPXtyZW5kZXJFcnJvcjpmdW5j dGlvbihzKXt2YXIgdD1tWyc6ZmI6bWVyY3VyeTphdHRhY2htZW50OmVycm9yJ10u YnVpbGQoKTtoLmFwcGVuZENvbnRlbnQodC5nZXROb2RlKCdlcnJvcicpLHMuZXJy b3JfbXNnKTtyZXR1cm4gdC5nZXRSb290KCk7fSxyZW5kZXJFeHRlcm5hbExpbms6 ZnVuY3Rpb24ocyl7dmFyIHQ9bVsnOmZiOm1lcmN1cnk6YXR0YWNobWVudDpleHRl cm5hbC1saW5rJ10uYnVpbGQoKS5zZXROb2RlQ29udGVudCgnbmFtZScscy5uYW1l KS5zZXROb2RlQ29udGVudCgnc2hvcnRMaW5rJyxzLmJhc2VfdXJsKSx1PXQuZ2V0 Tm9kZSgncHJldmlldycpO3Uuc2V0QXR0cmlidXRlKCdocmVmJyxzLnVybCk7cy5y ZWwmJnUuc2V0QXR0cmlidXRlKCdyZWwnLHMucmVsKTtpZihzLnByZXZpZXdfdXJs KXt2YXIgdj10LmdldE5vZGUoJ3ByZXZpZXctaW1hZ2UnKTt2LnNldEF0dHJpYnV0 ZSgnc3JjJyxzLnByZXZpZXdfdXJsKTtnLmFkZENsYXNzKHUscy5wcmV2aWV3X2Ns YXNzKTtnLnNob3codik7fWVsc2V7Zy5hZGRDbGFzcyh0LmdldFJvb3QoKSwnbm9N ZWRpYScpO2cuaGlkZSh1KTt9dC5nZXROb2RlKCduYW1lJykuc2V0QXR0cmlidXRl KCdocmVmJyxzLnVybCk7cmV0dXJuIHQuZ2V0Um9vdCgpO30scmVuZGVyRmlsZUxp bms6ZnVuY3Rpb24ocyl7dmFyIHQ9JzpmYjptZXJjdXJ5OmF0dGFjaG1lbnQ6Zmls ZS1saW5rJyx1PXEocyx0KTtyZXR1cm4gdS5nZXRSb290KCk7fSxyZW5kZXJFeHRl bmRlZEZpbGVMaW5rOmZ1bmN0aW9uKHMpe3ZhciB0PSc6ZmI6bWVyY3VyeTphdHRh Y2htZW50OmV4dGVuZGVkLWZpbGUtbGluaycsdT1xKHMsdCk7aWYocy5vcGVuX3Vy bCl7dmFyIHY9dS5nZXROb2RlKCdvcGVuTGlua0NvbnRhaW5lcicpO2cuc2hvdyh2 KTt2YXIgdz11LmdldE5vZGUoJ29wZW5GaWxlJyk7dy5zZXRBdHRyaWJ1dGUoJ2hy

ZWYnLHMub3Blbl91cmwpO312YXIgeD11LmdldE5vZGUoJ2Rvd25sb2FkRmlsZScp O3guc2V0QXR0cmlidXRlKCdocmVmJyxzLnVybCk7cy5yZWwmJnguc2V0QXR0cmli dXRlKCdyZWwnLHMucmVsKTtyZXR1cm4gdS5nZXRSb290KCk7fSxyZW5kZXJNdXNp YzpmdW5jdGlvbihzKXt2YXIgdD1tWyc6ZmI6bWVyY3VyeTphdHRhY2htZW50Om11 c2ljJ10uYnVpbGQoKS5zZXROb2RlQ29udGVudCgnZmlsZW5hbWUnLHMubmFtZSks dT10LmdldE5vZGUoJ2xpbmsnKTt1LnNldEF0dHJpYnV0ZSgnaHJlZicscy51cmwp O3Uuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCdfYmxhbmsnKTtzLnJlbCYmdS5zZXRB dHRyaWJ1dGUoJ3JlbCcscy5yZWwpO3ZhciB2PXQuZ2V0Tm9kZSgncHJldmlldycp O3Yuc2V0QXR0cmlidXRlKCdocmVmJyxzLnVybCk7cy5yZWwmJnYuc2V0QXR0cmli dXRlKCdyZWwnLHMucmVsKTt2YXIgdz10LmdldE5vZGUoJ3ByZXZpZXctaW1hZ2Un KTt3LnNldEF0dHJpYnV0ZSgnc3JjJyxzLnByZXZpZXdfdXJsKTtnLnNob3codyk7 Zy5hZGRDbGFzcyh0LmdldE5vZGUoJ2ljb25fbGluaycpLCdNZXJjdXJ5TXVzaWNJ Y29uJyk7cmV0dXJuIHQuZ2V0Um9vdCgpO30scmVuZGVyUHJldmlldzpmdW5jdGlv bihzLHQsdSx2LHcseCl7dmFyIHk9bVsnOmZiOm1lcmN1cnk6YXR0YWNobWVudDpw cmV2aWV3J10uYnVpbGQoKSx6PXkuZ2V0Tm9kZSgnaW1hZ2UtbGluaycpLGFhPScn O2lmKHMpe3ouc2V0QXR0cmlidXRlKCdocmVmJyxzLnVybCk7cy5yZWwmJnouc2V0 QXR0cmlidXRlKCdyZWwnLHMucmVsKTthYT1zLnByZXZpZXdfdXJsO2lmKHUmJmwo YWEpLmdldFBhdGgoKT09Jy9hamF4L21lc3NhZ2luZy9hdHRhY2htZW50LnBocCcp YWErPXU7aWYodil0aGlzLnJlbmRlclJlcG9ydFJlc3BvbmRMaW5rKHkuZ2V0Um9v dCgpLHMsdi5tZXNzYWdlX2lkKTtnLmFkZENsYXNzKHoscy5wcmV2aWV3X2NsYXNz KTt9ZWxzZXthYT0nL2ltYWdlcy9ibGFuay5naWYnO2cuYWRkQ2xhc3MoeiwnaW1h Z2VQcmV2aWV3Jyk7Zy5hZGRDbGFzcyh6LCd0aHVtYm5haWwnKTt9dmFyIGJhPXku Z2V0Tm9kZSgncHJldmlldy1pbWFnZScpO2lmKCF0KXtpZighcyl7ai5zZXQoYmEs J2hlaWdodCcsJzE5NHB4Jyk7ai5zZXQoYmEsJ3dpZHRoJywnMTk0cHgnKTt9fWVs c2V7Zy5hZGRDbGFzcyhiYSwnaW52aXNpYmxlX2VsZW0nKTtiYS5vbmxvYWQ9ZnVu Y3Rpb24oKXt2YXIgY2E9YmEub2Zmc2V0V2lkdGgsZGE9YmEub2Zmc2V0SGVpZ2h0 LGVhLGZhO2lmKGNhPmRhKXtqLnNldChiYSwnbWF4SGVpZ2h0Jyx0KydweCcpO2Zh PU1hdGgubWluKGRhLHQpO2VhPU1hdGguY2VpbChjYSpmYS9kYSk7fWVsc2V7ai5z ZXQoYmEsJ21heFdpZHRoJyx0KydweCcpO2VhPU1hdGgubWluKGNhLHQpO2ZhPU1h dGguY2VpbChkYSplYS9jYSk7fWouc2V0KGJhLCdtYXJnaW5Ub3AnLCctJysoZmE+ Pj4xKSsncHgnKTtqLnNldChiYSwnbWFyZ2luTGVmdCcsJy0nKyhlYT4+PjEpKydw eCcpO2cucmVtb3ZlQ2xhc3MoYmEsJ2ludmlzaWJsZV9lbGVtJyk7fTt9YmEuc2V0 QXR0cmlidXRlKCdzcmMnLGFhKTtyZXR1cm4geS5nZXRSb290KCk7fSxyZW5kZXJN dWx0aXBsZVByZXZpZXdzOmZ1bmN0aW9uKHMpe3JldHVybiB0aGlzLl9yZW5kZXJN dWx0aXBsZVByZXZpZXdzKHMscy5sZW5ndGgpO30scmVuZGVyTXVsdGlwbGVUaHVt Ym5haWxzOmZ1bmN0aW9uKHMpe3JldHVybiB0aGlzLl9yZW5kZXJNdWx0aXBsZVBy ZXZpZXdzKG51bGwscyk7fSxyZW5kZXJTaGFyZUxpbms6ZnVuY3Rpb24ocyl7dmFy IHQ9bVsnOmZiOm1lcmN1cnk6YXR0YWNobWVudDpzaGFyZS1saW5rJ10uYnVpbGQo KS5zZXROb2RlQ29udGVudCgnbmFtZScscy5uYW1lKSx1PXQuZ2V0Tm9kZSgnbGlu aycpO3Uuc2V0QXR0cmlidXRlKCdocmVmJyxzLnVybCk7cy5yZWwmJnUuc2V0QXR0 cmlidXRlKCdyZWwnLHMucmVsKTtyZXR1cm4gdC5nZXRSb290KCk7fSxyZW5kZXJW aWRlb1RodW1iOmZ1bmN0aW9uKHMpe3ZhciB0PW1bJzpmYjptZXJjdXJ5OmF0dGFj aG1lbnQ6dmlkZW8tdGh1bWInXS5idWlsZCgpLHU9dC5nZXROb2RlKCd0aHVtYicp O3Uuc2V0QXR0cmlidXRlKCdocmVmJyxzLnVybCk7dS5zZXRBdHRyaWJ1dGUoJ3Jl bCcscy5yZWwpO3ZhciB2PWguZmluZCh0LmdldFJvb3QoKSwnaW1nJyk7di5zcmM9 cy5wcmV2aWV3X3VybDtyZXR1cm4gdC5nZXRSb290KCk7fSxfcmVuZGVyTXVsdGlw bGVQcmV2aWV3czpmdW5jdGlvbihzLHQpe3ZhciB1PSdzaW5nbGVJbWFnZVByZXZp ZXcnLHY9MDtpZih0PT0yfHx0PT00KXt1PSdkb3VibGVJbWFnZVByZXZpZXcnO3Y9 MTk0O31lbHNlIGlmKHQ+MSl7dT0nbXVsdGlwbGVJbWFnZVByZXZpZXcnO3Y9MTI5 O312YXIgdz1oLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOidpbWFnZVByZXZpZXdz J30pO2cuYWRkQ2xhc3Modyx1KTtnLmFkZENsYXNzKHcsJ2NsZWFyZml4Jyk7aWYo cyl7dmFyIHg9JyZudW1QcmV2aWV3cz0nK3Q7Zm9yKHZhciB5PTA7eTx0OysreSl7 dmFyIHo9dGhpcy5yZW5kZXJQcmV2aWV3KHNbeV0sdix4KTtoLmFwcGVuZENvbnRl bnQodyx6KTt9fWVsc2UgZm9yKHk9MDt5PHQ7Kyt5KXt6PXRoaXMucmVuZGVyUHJl dmlldyhudWxsLHYpO2guYXBwZW5kQ29udGVudCh3LHopO31yZXR1cm4gdzt9LHJl bmRlclNoYXJlWEhQOmZ1bmN0aW9uKHMsdCl7dmFyIHU9aC5jcmVhdGUoJ2Rpdicp O2lmKHMpe3ZhciB2PXMuc2hhcmVfeGhwO2guYXBwZW5kQ29udGVudCh1LHYpO3Ro aXMucmVuZGVyUmVwb3J0UmVzcG9uZExpbmsodSxzLHQpO3ZhciB3PWguc2NyeSh1 LCcubXVzaWNfYnV0dG9uJylbMF07aWYodylkKFsnTXVzaWNCdXR0b25NYW5hZ2Vy J10sZnVuY3Rpb24oeCl7eC5hc3luY0FkZE11c2ljQnV0dG9uKHcsdHJ1ZSk7fSk7

fXJldHVybiB1O30scmVuZGVyUmVwb3J0UmVzcG9uZExpbms6ZnVuY3Rpb24ocyx0 LHUpe2lmKCF0LmlzX3NvY2lhbF9yZXBvcnRfYXR0YWNobWVudClyZXR1cm4gbnVs bDtzd2l0Y2godC5zaGFyZV9kYXRhX3R5cGUpe2Nhc2Ugbi5NZXJjdXJ5U3VwcG9y dGVkU2hhcmVUeXBlLkZCX1BIT1RPOmJyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGw7 fXZhciB2PW51bGw7aWYodSl2PW8uZ2V0TWVzc2FnZXNGcm9tSURzKFt1XSlbMF07 aWYodiYmdi5hdXRob3IhPT1wLnVzZXIpe3ZhciB3PW51bGw7cC5nZXQodi5hdXRo b3IsZnVuY3Rpb24oeCl7dz1oLmNyZWF0ZSgnYScse3JlbDonZGlhbG9nLXBvc3Qn LGNsYXNzTmFtZTonU29jaWFsUmVwb3J0TGluaycsaWQ6J3Jlc3BvbmQtbGluaycs YWpheGlmeTpsKCcvYWpheC9yZXBvcnQvc29jaWFsX3Jlc29sdXRpb24vcGhvdG8v Jykuc2V0UXVlcnlEYXRhKHthdHRhY2htZW50X2ZiaWQ6dC5hdHRhY2hfaWQscGhv dG9fZmJpZDp0LnNoYXJlZF9vYmplY3RfaWQsc2VuZGVyX2lkOnAuZ2V0VXNlcklE KHguaWQpfSkudG9TdHJpbmcoKX0pO2guc2V0Q29udGVudCh3LGsuXygiUmVzcG9u ZCB0byB7bmFtZX0ncyByZXF1ZXN0Iix7bmFtZTp4Lm5hbWV9KSk7aC5hcHBlbmRD b250ZW50KHMsdyk7fSk7fX19O2UuZXhwb3J0cz1yO30pOwpfX2QoIk1lcmN1cnlS b2dlciIsWyJBcmJpdGVyTWl4aW4iLCJNZXJjdXJ5U2VydmVyUmVxdWVzdHMiLCJM aXZlVGltZXIiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdBcmJpdGVyTWl4aW4nKSxoPWIoJ01lcmN1cnlTZXJ2ZXJSZXF1 ZXN0cycpLGk9YignTGl2ZVRpbWVyJyksaj1iKCdjb3B5UHJvcGVydGllcycpLGs9 e30sbD17Z2V0U2VlbkJ5OmZ1bmN0aW9uKG0pe2lmKCFtKXJldHVybiBbXTt2YXIg bj1bXSxvPWtbbS50aHJlYWRfaWRdO2Zvcih2YXIgcCBpbiBvKWlmKG9bcF0+bS50 aW1lc3RhbXAmJnAhPW0uYXV0aG9yKW4ucHVzaChwKTtyZXR1cm4gbjt9LGdldFNl ZW5UaW1lc3RhbXA6ZnVuY3Rpb24obSxuKXt2YXIgbz1rW21dO3JldHVybiBvP29b bl06bnVsbDt9fTtqKGwsZyk7aC5zdWJzY3JpYmUoJ3VwZGF0ZS1yb2dlcicsZnVu Y3Rpb24obSxuKXtmb3IodmFyIG8gaW4gbil7aWYoIWtbb10pa1tvXT17fTtmb3Io dmFyIHAgaW4gbltvXSl7dmFyIHE9a1tvXVtwXSxyPW5bb11bcF07aWYoIXF8fHI+ cSlrW29dW3BdPXI7fX1pZihuKWwuaW5mb3JtKCdzdGF0ZS1jaGFuZ2VkJyxuKTt9 KTtlLmV4cG9ydHM9bDt9KTsKX19kKCJNZXJjdXJ5VHlwaW5nUmVjZWl2ZXIiLFsi QXJiaXRlciIsIkNoYW5uZWxDb25zdGFudHMiLCJNZXJjdXJ5UGFydGljaXBhbnRz IiwiTWVyY3VyeVNlcnZlclJlcXVlc3RzIiwiTWVyY3VyeVRocmVhZHMiLCJUeXBp bmdEZXRlY3RvciIsInNldFRpbWVvdXRBY3Jvc3NUcmFuc2l0aW9ucyIsIk1lcmN1 cnlDb25zdGFudHMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQXJi aXRlcicpLGg9YignQ2hhbm5lbENvbnN0YW50cycpLGk9YignTWVyY3VyeVBhcnRp Y2lwYW50cycpLGo9YignTWVyY3VyeVNlcnZlclJlcXVlc3RzJyksaz1iKCdNZXJj dXJ5VGhyZWFkcycpLGw9YignVHlwaW5nRGV0ZWN0b3InKSxtPWIoJ3NldFRpbWVv dXRBY3Jvc3NUcmFuc2l0aW9ucycpLG49YygnTWVyY3VyeUNvbnN0YW50cycpLG8s cD17fSxxPTMwMDAwLHI9bmV3IGcoKTtmdW5jdGlvbiBzKHgpe3ZhciB5PXBbeF18 fHt9LHo9T2JqZWN0LmtleXMoeSk7ei5zb3J0KGZ1bmN0aW9uKGFhLGJhKXtyZXR1 cm4geVthYV0teVtiYV07fSk7cmV0dXJuIHo7fWZ1bmN0aW9uIHQoKXtvPW51bGw7 dmFyIHg9RGF0ZS5ub3coKSx5PXt9LHo9ZmFsc2U7Zm9yKHZhciBhYSBpbiBwKXt2 YXIgYmE9ZmFsc2U7Zm9yKHZhciBjYSBpbiBwW2FhXXx8e30paWYocFthYV1bY2Fd PHgtcSl7ZGVsZXRlIHBbYWFdW2NhXTtiYT10cnVlO31lbHNlIHo9dHJ1ZTtpZihi YSl5W2FhXT1zKGFhKTt9Zm9yKHZhciBkYSBpbiB5KXtyLmluZm9ybSgnc3RhdGUt Y2hhbmdlZCcseSk7YnJlYWs7fWlmKHopbz1tKHQsMzAwMCk7fWZ1bmN0aW9uIHUo eCx5KXtpZih4IGluIHApaWYoeSBpbiBwW3hdKXtkZWxldGUgcFt4XVt5XTt2KHgp O319ZnVuY3Rpb24gdih4KXt2YXIgeT17fTt5W3hdPXMoeCk7ci5pbmZvcm0oJ3N0 YXRlLWNoYW5nZWQnLHkpO31mdW5jdGlvbiB3KHgpe2lmKHgudGhyZWFkKXJldHVy biBqLmdldENsaWVudFRocmVhZElETm93KHgudGhyZWFkKTtpZih4LnR5cGU9PT0n dHlwJylyZXR1cm4gay5nZXRUaHJlYWRJZEZvclVzZXIoeC5mcm9tKTtyZXR1cm4g bnVsbDt9Zy5zdWJzY3JpYmUoW2guZ2V0QXJiaXRlclR5cGUoJ3R5cCcpLGguZ2V0 QXJiaXRlclR5cGUoJ3R0eXAnKV0sZnVuY3Rpb24oeCx5KXt2YXIgej15Lm9iaixh YT13KHopO2lmKGFhKXt2YXIgYmE9aS5nZXRJREZvclVzZXIoei5mcm9tKTtpZih6 LnN0PT1sLlRZUElORyl7cFthYV09cFthYV18fHt9O3ZhciBjYT1wW2FhXVtiYV07 cFthYV1bYmFdPURhdGUubm93KCk7aWYoIW8pbz1tKHQsMzAwMCk7IWNhJiZ2KGFh KTt9ZWxzZSBpZih6LnN0PT1sLklOQUNUSVZFKXUoYWEsYmEpO319KTtqLnN1YnNj cmliZSgndXBkYXRlLXR5cGluZy1zdGF0ZScsZnVuY3Rpb24oeCx5KXt2YXIgej15 LnBheWxvYWRfc291cmNlO2lmKHohPW4uTWVyY3VyeVBheWxvYWRTb3VyY2UuQ0xJ RU5UX0NIQU5ORUxfTUVTU0FHRSlyZXR1cm47dmFyIGFhPXkuYWN0aW9ucztpZigh YWF8fCFhYS5sZW5ndGgpcmV0dXJuO3ZhciBiYT1uLk1lcmN1cnlBY3Rpb25UeXBl LlVTRVJfR0VORVJBVEVEX01FU1NBR0U7YWEuZm9yRWFjaChmdW5jdGlvbihjYSl7 aWYoY2EuYWN0aW9uX3R5cGU9PWJhJiZjYS5hdXRob3IhPWkudXNlcil1KGNhLnRo

cmVhZF9pZCxjYS5hdXRob3IpO30pO30pO2UuZXhwb3J0cz1yO30pOwpfX2QoIkNo YXRUYWJJbmRpY2F0b3JDb250cm9sbGVyIixbIkFyYml0ZXJNaXhpbiIsIkRPTSIs IkxpdmVUaW1lciIsIk1lcmN1cnlQYXJ0aWNpcGFudHMiLCJNZXJjdXJ5Um9nZXIi LCJNZXJjdXJ5VGhyZWFkcyIsIk1lcmN1cnlUeXBpbmdSZWNlaXZlciIsImNvcHlQ cm9wZXJ0aWVzIiwic2V0VGltZW91dEFjcm9zc1RyYW5zaXRpb25zIiwidHgiLCJk YXRlLWV4dGVuc2lvbnMiLCJNZXJjdXJ5Q29uZmlnIiwiTWVyY3VyeUNvbnN0YW50 cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyTWl4aW4n KSxoPWIoJ0RPTScpLGk9YignTGl2ZVRpbWVyJyksaj1iKCdNZXJjdXJ5UGFydGlj aXBhbnRzJyksaz1iKCdNZXJjdXJ5Um9nZXInKSxsPWIoJ01lcmN1cnlUaHJlYWRz JyksbT1iKCdNZXJjdXJ5VHlwaW5nUmVjZWl2ZXInKSxuPWIoJ2NvcHlQcm9wZXJ0 aWVzJyksbz1iKCdzZXRUaW1lb3V0QWNyb3NzVHJhbnNpdGlvbnMnKSxwPWIoJ3R4 Jyk7YignZGF0ZS1leHRlbnNpb25zJyk7dmFyIHE9YygnTWVyY3VyeUNvbmZpZycp LHI9YygnTWVyY3VyeUNvbnN0YW50cycpLHM9cVsncm9nZXIuc2Vlbl9kZWxheSdd LHQ9W107ZnVuY3Rpb24gdSh2KXt0aGlzLl90aHJlYWRJRD12O3RoaXMuX2Nhbm9u aWNhbFVzZXI9bC5nZXRDYW5vbmljYWxVc2VySW5UaHJlYWQodik7dC5wdXNoKHRo aXMpO31uKHUucHJvdG90eXBlLGcse2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0LnJlbW92 ZSh0aGlzKTt9LHNldExhc3RNZXNzYWdlOmZ1bmN0aW9uKHYpe3RoaXMuX2xhc3RN c2c9djtpZih0aGlzLl9zdGF0ZUNoYW5nZVRpbWVvdXQpe2NsZWFyVGltZW91dCh0 aGlzLl9zdGF0ZUNoYW5nZVRpbWVvdXQpO3RoaXMuX3N0YXRlQ2hhbmdlVGltZW91 dD1udWxsO31pZih2KXt2YXIgdz1zLHg9ci5NZXJjdXJ5QWN0aW9uU3RhdHVzLlNV Q0NFU1M7aWYodi5hY3Rpb25faWR8fHYuc3RhdHVzPT14KXt2YXIgeT1pLmdldEFw cHJveGltYXRlU2VydmVyVGltZSgpO3c9di50aW1lc3RhbXArcy15O31pZih3PjAp dGhpcy5fc3RhdGVDaGFuZ2VUaW1lb3V0PW8oZnVuY3Rpb24oKXt0aGlzLl9zdGF0 ZUNoYW5nZVRpbWVvdXQ9bnVsbDt0aGlzLl9oYW5kbGVTdGF0ZUNoYW5nZSgpO30u YmluZCh0aGlzKSx3KTt9dGhpcy5faGFuZGxlU3RhdGVDaGFuZ2UoKTt9LF9pbmZv cm1TdGF0ZUNoYW5nZWQ6ZnVuY3Rpb24odil7aWYodi5hY3Rpdml0eT09J25vbmUn JiZ0aGlzLl9jdXJyZW50QWN0aXZpdHk9PSdub25lJylyZXR1cm47dGhpcy5fY3Vy cmVudEFjdGl2aXR5PXYuYWN0aXZpdHk7dGhpcy5pbmZvcm0oJ3N0YXRlLWNoYW5n ZWQnLHYpO30sX25vdGlmeVNlbnRGcm9tOmZ1bmN0aW9uKCl7dmFyIHY9ci5NZXJj dXJ5U291cmNlVHlwZSx3LHgseT10aGlzLl9sYXN0TXNnLmxvY2F0aW9uX3RleHQ7 aWYoeSl7dz1wLl8oIkRpa2lyaW0gZGFyaSB7bG9jYXRpb259Iix7bG9jYXRpb246 eX0pO3g9J3NlbnRGcm9tTW9iaWxlJzt9ZWxzZSBzd2l0Y2godGhpcy5fbGFzdE1z Zy5zb3VyY2Upe2Nhc2Ugdi5DSEFUX09SQ0E6Y2FzZSB2LlRJVEFOX09SQ0E6dz1o LmNyZWF0ZSgnYScse2hyZWY6Jy9tb2JpbGUvbWVzc2VuZ2VyJywnY2xhc3MnOidm Y2cnLHRhcmdldDonX2JsYW5rJ30sIkRpa2lyaW0gZGFyaSBNZXNzZW5nZXIiKTt4 PSdzZW50RnJvbU1vYmlsZSc7YnJlYWs7Y2FzZSB2Lk1PQklMRTpjYXNlIHYuQ0hB VF9JUEhPTkU6Y2FzZSB2LlRJVEFOX0FQSV9NT0JJTEU6Y2FzZSB2LlRJVEFOX1dB UDp3PWguY3JlYXRlKCdhJyx7aHJlZjonL21vYmlsZScsJ2NsYXNzJzonZmNnJyx0 YXJnZXQ6J19ibGFuayd9LCJEaWtpcmltIGRhcmkgUG9uc2VsIik7eD0nc2VudEZy b21Nb2JpbGUnO2JyZWFrO2Nhc2Ugdi5FTUFJTDpjYXNlIHYuVElUQU5fRU1BSUxf UkVQTFk6dz0iRGlraXJpbSBkYXJpIEVtYWlsIjt4PSdzZW50RnJvbUVtYWlsJzti cmVhaztkZWZhdWx0OnRoaXMuX2luZm9ybVN0YXRlQ2hhbmdlZCh7YWN0aXZpdHk6 J25vbmUnfSk7cmV0dXJuO310aGlzLl9pbmZvcm1TdGF0ZUNoYW5nZWQoe2FjdGl2 aXR5OngsdGV4dDp3fSk7fSxfbm90aWZ5U2VlblRpbWVzdGFtcDpmdW5jdGlvbih2 KXt2YXIgdz1rLmdldFNlZW5UaW1lc3RhbXAodGhpcy5fdGhyZWFkSUQsdlswXSkq LjAwMSx4PURhdGUubm93KCkqLjAwMSx5PXFbJzI0aF90aW1lcyddPydIOmknOidn OmkgQSc7aWYodzx4LTUxODQwMCl7eT0nTSBqJzt9ZWxzZSBpZih3PHgtODY0MDAp eT0nRCAnK3k7dmFyIHo9RGF0ZS5mb3JtYXQoeSx3KTt0aGlzLl9pbmZvcm1TdGF0 ZUNoYW5nZWQoe2FjdGl2aXR5OidzZWVuLXRpbWVzdGFtcCcsdGV4dDpwLl8oIkRp bGloYXQge3RpbWVzdGFtcH0iLHt0aW1lc3RhbXA6en0pfSk7fSxfbm90aWZ5U2Vl bkJ5OmZ1bmN0aW9uKHYpe3ZhciB3PXRoaXMuX2xhc3RNc2cseD10cnVlO2ouZ2V0 TXVsdGkodixmdW5jdGlvbih5KXt4PWZhbHNlO2lmKHRoaXMuX2xhc3RNc2chPXcp cmV0dXJuO3ZhciB6PWwuZ2V0VGhyZWFkTWV0YU5vdyh0aGlzLl90aHJlYWRJRCks YWE9ej96LnBhcnRpY2lwYW50cy5sZW5ndGg6MCxiYT12Lmxlbmd0aCsody5hdXRo b3IhPWoudXNlciksY2EsZGE9ZmFsc2U7aWYoYWE+MiYmYmE+PWFhLTEpe2NhPSJE aWxpaGF0IG9sZWggc2VtdWEgb3JhbmciO31lbHNlIGlmKHYubGVuZ3RoPT0xKXtj YT1wLl8oIkRpbGloYXQgb2xlaCB7dXNlcn0iLHt1c2VyOnlbdlswXV0uc2hvcnRf bmFtZX0pO31lbHNlIGlmKHYubGVuZ3RoPT0yKXtjYT1wLl8oIkRpbGloYXQgb2xl aCB7dXNlcjF9LCB7dXNlcjJ9Iix7dXNlcjE6eVt2WzBdXS5zaG9ydF9uYW1lLHVz ZXIyOnlbdlsxXV0uc2hvcnRfbmFtZX0pO31lbHNlIGlmKHYubGVuZ3RoPT0zKXtj

YT1wLl8oIkRpbGloYXQgb2xlaCB7dXNlcjF9LCB7dXNlcjJ9LCB7dXNlcjN9Iix7 dXNlcjE6eVt2WzBdXS5zaG9ydF9uYW1lLHVzZXIyOnlbdlsxXV0uc2hvcnRfbmFt ZSx1c2VyMzp5W3ZbMl1dLnNob3J0X25hbWV9KTt9ZWxzZSBpZih2Lmxlbmd0aD4z KXt2YXIgZWE9T2JqZWN0LmtleXMoeSkubGVuZ3RoLTIsZmE9cC5fKCJ7bnVtfSBs YWdpIix7bnVtOmVhfSksZ2E9aC5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J21v cmUnfSxmYSk7Y2E9aC50eC5fKCJEaWxpaGF0IG9sZWgge3VzZXIxfSwge3VzZXIy fSwgez1udW0gbW9yZSBsaW5rfSIse3VzZXIxOnlbdlswXV0uc2hvcnRfbmFtZSx1 c2VyMjp5W3ZbMV1dLnNob3J0X25hbWUsJz1udW0gbW9yZSBsaW5rJzpnYX0pO2Rh PXRydWU7fXRoaXMuX2luZm9ybVN0YXRlQ2hhbmdlZCh7YWN0aXZpdHk6J3NlZW4t YnknLHRleHQ6Y2Esc2VlbkJ5OnYsdG9vbHRpcDpkYX0pO30uYmluZCh0aGlzKSk7 eCYmdGhpcy5faW5mb3JtU3RhdGVDaGFuZ2VkKHthY3Rpdml0eTonbm9uZSd9KTt9 LF9ub3RpZnlUeXBpbmc6ZnVuY3Rpb24odil7dmFyIHc9dGhpcy5fbGFzdE1zZyx4 PXRydWU7ai5nZXRNdWx0aSh2LGZ1bmN0aW9uKHkpe3g9ZmFsc2U7aWYodGhpcy5f bGFzdE1zZyE9dylyZXR1cm47aWYodGhpcy5fY2Fub25pY2FsVXNlcnx8cS5DaGF0 TXVsdGlUeXBHSyl7dmFyIHo9bC5nZXRUaHJlYWRNZXRhTm93KHRoaXMuX3RocmVh ZElEKSxhYT16P3oucGFydGljaXBhbnRzLmxlbmd0aDowLGJhLGNhPWZhbHNlO2lm KGFhPjImJnYubGVuZ3RoPj1hYS0xKXtiYT0iRXZlcnlvbmUgaXMgdHlwaW5nLi4u Ijt9ZWxzZSBpZih2Lmxlbmd0aD09MSl7YmE9cC5fKCJ7bmFtZX0gc2VkYW5nIG1l bmdldGlrIC4uLiIse25hbWU6eVt2WzBdXS5zaG9ydF9uYW1lfSk7fWVsc2UgaWYo di5sZW5ndGg9PTIpe2JhPXAuXygie3VzZXIxfSBhbmQge3VzZXIyfSBhcmUgdHlw aW5nLi4uIix7dXNlcjE6eVt2WzBdXS5zaG9ydF9uYW1lLHVzZXIyOnlbdlsxXV0u c2hvcnRfbmFtZX0pO31lbHNlIGlmKHYubGVuZ3RoPT0zKXtiYT1wLl8oInt1c2Vy MX0sIHt1c2VyMn0sIGFuZCB7dXNlcjN9IGFyZSB0eXBpbmcuLi4iLHt1c2VyMTp5 W3ZbMF1dLnNob3J0X25hbWUsdXNlcjI6eVt2WzFdXS5zaG9ydF9uYW1lLHVzZXIz OnlbdlsyXV0uc2hvcnRfbmFtZX0pO31lbHNlIGlmKHYubGVuZ3RoPjMpe3ZhciBk YT1PYmplY3Qua2V5cyh5KS5sZW5ndGgtMixlYT1wLl8oIntudW19IG1vcmUiLHtu dW06ZGF9KSxmYT1oLmNyZWF0ZSgnYScse2hyZWY6JyMnfSxlYSk7YmE9aC50eC5f KCJ7dXNlcjF9LCB7dXNlcjJ9LCBhbmQgez1udW0gbW9yZSBsaW5rfSBhcmUgdHlw aW5nLi4uIix7dXNlcjE6eVt2WzBdXS5zaG9ydF9uYW1lLHVzZXIyOnlbdlsxXV0u c2hvcnRfbmFtZSwnPW51bSBtb3JlIGxpbmsnOmZhfSk7Y2E9dHJ1ZTt9dGhpcy5f aW5mb3JtU3RhdGVDaGFuZ2VkKHthY3Rpdml0eTondHlwaW5nJyx0ZXh0OmJhLHR5 cGluZzp2LHRvb2x0aXA6Y2F9KTt9fS5iaW5kKHRoaXMpKTt4JiZ0aGlzLl9pbmZv cm1TdGF0ZUNoYW5nZWQoe2FjdGl2aXR5Oidub25lJ30pO30sX2hhbmRsZVN0YXRl Q2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHY9ci5NZXJjdXJ5QWN0aW9uVHlwZS5MT0df TUVTU0FHRTtpZighdGhpcy5fbGFzdE1zZ3x8dGhpcy5fbGFzdE1zZy5hY3Rpb25f dHlwZT09dil7dGhpcy5faW5mb3JtU3RhdGVDaGFuZ2VkKHthY3Rpdml0eTonbm9u ZSd9KTtyZXR1cm47fWlmKHRoaXMuX3R5cGluZyYmdGhpcy5fdHlwaW5nLmxlbmd0 aCl7dGhpcy5fbm90aWZ5VHlwaW5nKHRoaXMuX3R5cGluZyk7cmV0dXJuO31pZih0 aGlzLl9jYW5vbmljYWxVc2VyJiZ0aGlzLl9sYXN0TXNnLmF1dGhvciE9ai51c2Vy KXt0aGlzLl9ub3RpZnlTZW50RnJvbSgpO3JldHVybjt9aWYoIXRoaXMuX3N0YXRl Q2hhbmdlVGltZW91dCl7dmFyIHc9ay5nZXRTZWVuQnkodGhpcy5fbGFzdE1zZyk7 aWYody5sZW5ndGgpaWYodGhpcy5fY2Fub25pY2FsVXNlcil7dGhpcy5fbm90aWZ5 U2VlblRpbWVzdGFtcCh3KTtyZXR1cm47fWVsc2V7dGhpcy5fbm90aWZ5U2VlbkJ5 KHcpO3JldHVybjt9fXRoaXMuX2luZm9ybVN0YXRlQ2hhbmdlZCh7YWN0aXZpdHk6 J25vbmUnfSk7fX0pO20uc3Vic2NyaWJlKCdzdGF0ZS1jaGFuZ2VkJyxmdW5jdGlv bih2LHcpe3QuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgeT13W3guX3RocmVhZElE XTtpZih5IT09dW5kZWZpbmVkKXt4Ll90eXBpbmc9eTt4Ll9oYW5kbGVTdGF0ZUNo YW5nZSgpO319KTt9KTtrLnN1YnNjcmliZSgnc3RhdGUtY2hhbmdlZCcsZnVuY3Rp b24odix3KXt0LmZvckVhY2goZnVuY3Rpb24oeCl7aWYod1t4Ll90aHJlYWRJRF0m JiF4Ll9zdGF0ZUNoYW5nZVRpbWVvdXQpeC5faGFuZGxlU3RhdGVDaGFuZ2UoKTt9 KTt9KTtlLmV4cG9ydHM9dTt9KTsKX19kKCJDaGF0VGFiSW5kaWNhdG9yTGluZSIs WyJDaGF0VGFiSW5kaWNhdG9yQ29udHJvbGxlciIsIkNTUyIsIkRPTSIsIkRPTVF1 ZXJ5IiwiTWVyY3VyeVBhcnRpY2lwYW50cyIsIlRvb2x0aXAiLCJjb3B5UHJvcGVy dGllcyIsImNzeCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDaGF0 VGFiSW5kaWNhdG9yQ29udHJvbGxlcicpLGg9YignQ1NTJyksaT1iKCdET00nKSxq PWIoJ0RPTVF1ZXJ5Jyksaz1iKCdNZXJjdXJ5UGFydGljaXBhbnRzJyksbD1iKCdU b29sdGlwJyksbT1iKCdjb3B5UHJvcGVydGllcycpLG49YignY3N4Jyk7ZnVuY3Rp b24gbyhwLHEscil7dGhpcy5fdHlwaW5nSW5kaWNhdG9yPXE7dGhpcy5fbWVzc2Fn ZXNWaWV3PXI7dGhpcy5fY29udHJvbGxlcj1uZXcgZyhwKTt0aGlzLl9zdWJzY3Jp cHRpb249dGhpcy5fY29udHJvbGxlci5zdWJzY3JpYmUoJ3N0YXRlLWNoYW5nZWQn

LHRoaXMuX2hhbmRsZVN0YXRlQ2hhbmdlZC5iaW5kKHRoaXMpKTt9bShvLnByb3Rv dHlwZSx7ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3NldENsYXNzKG51bGwpO3Ro aXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO3RoaXMuX2NvbnRyb2xsZXIu ZGVzdHJveSgpO30sc2V0TGFzdE1lc3NhZ2U6ZnVuY3Rpb24ocCl7dGhpcy5fY29u dHJvbGxlci5zZXRMYXN0TWVzc2FnZShwKTt9LF9oYW5kbGVTdGF0ZUNoYW5nZWQ6 ZnVuY3Rpb24ocCxxKXt2YXIgcj10aGlzLl9tZXNzYWdlc1ZpZXcuaXNTY3JvbGxl ZFRvQm90dG9tKCk7dGhpcy5fcmVyZW5kZXIocSk7ciYmdGhpcy5fbWVzc2FnZXNW aWV3LnNjcm9sbFRvQm90dG9tKCk7fSxfcmVyZW5kZXI6ZnVuY3Rpb24ocCl7aWYo cC5hY3Rpdml0eT09J25vbmUnKXt0aGlzLl9zZXRDbGFzcyhudWxsKTtyZXR1cm47 fXZhciBxPWkuZmluZCh0aGlzLl90eXBpbmdJbmRpY2F0b3IsIi4tY3gtUFJJVkFU RS1tZXJjdXJ5VHlwaW5nSW5kaWNhdG9yX190ZXh0Iik7aWYocC50ZXh0KXtpLnNl dENvbnRlbnQocSxwLnRleHQpO31lbHNlIGkuZW1wdHkocSk7aWYocC5hY3Rpdml0 eS5zdWJzdHJpbmcoMCw0KT09J3NlZW4nKXt0aGlzLl9zZXRDbGFzcygnc2Vlbicp O2lmKHAuYWN0aXZpdHk9PSdzZWVuLWJ5JyYmcC50b29sdGlwKWsuZ2V0TXVsdGko cC5zZWVuQnksZnVuY3Rpb24ocil7dmFyIHM9aS5jcmVhdGUoJ2RpdicpLHQ9MDtm b3IodmFyIHUgaW4gcilpZih0Kys+PTIpe3ZhciB2PWkuY3JlYXRlKCdkaXYnKTtp LnNldENvbnRlbnQodixyW3VdLm5hbWUpO2kuYXBwZW5kQ29udGVudChzLHYpO312 YXIgdz1qLmZpbmQodGhpcy5fdHlwaW5nSW5kaWNhdG9yLCdzcGFuLm1vcmUnKTts LnNldCh3LHMsJ2Fib3ZlJywnY2VudGVyJyk7fS5iaW5kKHRoaXMpKTt9ZWxzZSB0 aGlzLl9zZXRDbGFzcyhwLmFjdGl2aXR5KTt9LF9zZXRDbGFzczpmdW5jdGlvbihw KXtpZih0aGlzLl9sYXN0Q2xhc3M9PT1wKXJldHVybjt0aGlzLl9sYXN0Q2xhc3Mm JmgucmVtb3ZlQ2xhc3ModGhpcy5fdHlwaW5nSW5kaWNhdG9yLHRoaXMuX2xhc3RD bGFzcyk7cCYmaC5hZGRDbGFzcyh0aGlzLl90eXBpbmdJbmRpY2F0b3IscCk7dGhp cy5fbGFzdENsYXNzPXA7fX0pO2UuZXhwb3J0cz1vO30pOwpfX2QoIk1lcmN1cnlF bW9qaSIsWyJFbW9qaSIsIkVtb3RlIiwiTWVyY3VyeUNvbmZpZyJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXt2YXIgZz1iKCdFbW9qaScpLGg9YignRW1vdGUnKSxpPWMo J01lcmN1cnlDb25maWcnKSxqPXtodG1sRW1vamlBbmRFbW90ZTpmdW5jdGlvbihr LGwpe2lmKGkuTWVzc2FnaW5nRGlzcGxheUVtb2ppR0spe3JldHVybiBnLmh0bWxF bW9qaUFuZEVtb3RlKGssbCk7fWVsc2UgcmV0dXJuIGguaHRtbEVtb3RlKGssbCk7 fX07ZS5leHBvcnRzPWo7fSk7Cl9fZCgiV2ViTWVzc2VuZ2VyUGVybWFsaW5rQ29u c3RhbnRzIixbIlVSSSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdV UkknKSxoPXtBUkNISVZFRF9QQVRIOicvbWVzc2FnZXMvYXJjaGl2ZWQnLEJBU0Vf UEFUSDonL21lc3NhZ2VzJyxPVEhFUl9QQVRIOicvbWVzc2FnZXMvb3RoZXInLFNQ QU1fUEFUSDonL21lc3NhZ2VzL3NwYW0nLENPTVBPU0VfUE9TVEZJWF9QQVRIOicv bmV3JyxTRUFSQ0hfUE9TVEZJWF9QQVRIOicvc2VhcmNoJyxUSURfUE9TVEZJWF9Q QVJUSUFMX1BBVEg6Jy9jb252ZXJzYXRpb24tJyxvdmVycmlkZGVuVmFuaXRpZXM6 JyhhcmNoaXZlZHxvdGhlcnxzcGFtfG5ld3xzZWFyY2h8Y29udmVyc2F0aW9uLS4q KScsZ2V0VVJJUGF0aEZvclRocmVhZElEOmZ1bmN0aW9uKGksail7cmV0dXJuIChq fHxoLkJBU0VfUEFUSCkraC5USURfUE9TVEZJWF9QQVJUSUFMX1BBVEgrZy5lbmNv ZGVDb21wb25lbnQoZy5lbmNvZGVDb21wb25lbnQoaSkpO30sZ2V0VGhyZWFkSURG cm9tVVJJOmZ1bmN0aW9uKGkpe3ZhciBqPWkuZ2V0UGF0aCgpLm1hdGNoKGguQkFT RV9QQVRIKycoL1teL10rKSonK2guVElEX1BPU1RGSVhfUEFSVElBTF9QQVRIKyco W14vXSspJyk7aWYoail7dmFyIGs9Zy5kZWNvZGVDb21wb25lbnQoZy5kZWNvZGVD b21wb25lbnQoalsyXSkpO3JldHVybiBrO319LGdldFVSSVBhdGhGb3JJRE9yVmFu aXR5OmZ1bmN0aW9uKGksail7aWYoaS5tYXRjaCgnXicraC5vdmVycmlkZGVuVmFu aXRpZXMrJyQnKSlpPScuJytpO3JldHVybiAoanx8aC5CQVNFX1BBVEgpKycvJytp O30sZ2V0VXNlcklET3JWYW5pdHk6ZnVuY3Rpb24oaSl7dmFyIGo9aS5tYXRjaCho LkJBU0VfUEFUSCsnLiovKFteL10rKS8/JCcpLGs9aiYmalsxXSxsPWgub3ZlcnJp ZGRlblZhbml0aWVzO2lmKCFrfHxrLm1hdGNoKCdeJytsKyckJykpe3JldHVybiBm YWxzZTt9ZWxzZSBpZihrLm1hdGNoKCdeXFwuJytsKyckJykpe3JldHVybiBrLnN1 YnN0cigxKTt9ZWxzZSByZXR1cm4gazt9fTtlLmV4cG9ydHM9aDt9KTsKX19kKCJN ZXJjdXJ5VGhyZWFkTWV0YWRhdGFSYXdSZW5kZXJlciIsWyJldmVudC1leHRlbnNp b25zIiwiRE9NIiwiVVJJIiwiV2ViTWVzc2VuZ2VyUGVybWFsaW5rQ29uc3RhbnRz IiwidHgiLCJNZXJjdXJ5Q29uZmlnIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Io J2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdET00nKSxoPWIoJ1VSSScpLGk9 YignV2ViTWVzc2VuZ2VyUGVybWFsaW5rQ29uc3RhbnRzJyksaj1iKCd0eCcpLGs9 YygnTWVyY3VyeUNvbmZpZycpO2UuZXhwb3J0cz17cmVuZGVyUmF3UGFydGljaXBh bnRMaXN0OmZ1bmN0aW9uKGwsbSxuLG8pe3ZhciBwPXthYmJyX21vZGU6dHJ1ZSxs YXN0X3NlcGFyYXRvcl91c2VzX2FuZDp0cnVlLGxpbmtfbW9kZTp0cnVlLG5hbWVz X3JlbmRlcmVyOnRydWV9O289b3x8e307dmFyIHE9bnVsbDtpZihvLm5hbWVzX3Jl

bmRlcmVyKXtxPW8ubmFtZXNfcmVuZGVyZXIobSk7fWVsc2UgcT1tLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gdC5uYW1lO30pO3ZhciByPW51bGw7aWYocS5sZW5ndGg9 PTEpe3I9cVswXTt9ZWxzZSBpZihxLmxlbmd0aD09Mil7dmFyIHM9e3BhcnRpY2lw YW50MTpxWzBdLHBhcnRpY2lwYW50MjpxWzFdfTtpZihvLmxhc3Rfc2VwYXJhdG9y X3VzZXNfYW5kKXtyPWouXygie3BhcnRpY2lwYW50MX0gZGFuIHtwYXJ0aWNpcGFu dDJ9IixzKTt9ZWxzZSByPWouXygie3BhcnRpY2lwYW50MX0sIHtwYXJ0aWNpcGFu dDJ9IixzKTt9ZWxzZSBpZihvLmxhc3Rfc2VwYXJhdG9yX3VzZXNfYW5kKXtpZihv LmFiYnJfbW9kZSl7cj1qLl8oIntwYXJ0aWNpcGFudDF9IGRhbiB7b3RoZXJzX2xp bmt9Iix7cGFydGljaXBhbnQxOnFbMF0sb3RoZXJzX2xpbms6dGhpcy5yZW5kZXJS YXdQYXJ0aWNpcGFudENvdW50KGwse3JlbmRlcl9zdWJzZXQ6dHJ1ZSxjb3VudDpu LTEsYXNfbGluazpvLmxpbmtfbW9kZX0pfSk7fWVsc2UgaWYocS5sZW5ndGg9PTMp e3I9ai5fKCJ7cGFydGljaXBhbnQxfSwge3BhcnRpY2lwYW50Mn0sIGRhbiB7cGFy dGljaXBhbnQzfSIse3BhcnRpY2lwYW50MTpxWzBdLHBhcnRpY2lwYW50MjpxWzFd LHBhcnRpY2lwYW50MzpxWzJdfSk7fWVsc2Ugcj1qLl8oIntwYXJ0aWNpcGFudDF9 LCB7cGFydGljaXBhbnQyfSwgZGFuIHtvdGhlcnNfbGlua30iLHtwYXJ0aWNpcGFu dDE6cVswXSxwYXJ0aWNpcGFudDI6cVsxXSxvdGhlcnNfbGluazp0aGlzLnJlbmRl clJhd1BhcnRpY2lwYW50Q291bnQobCx7cmVuZGVyX3N1YnNldDp0cnVlLGNvdW50 Om4tMixhc19saW5rOm8ubGlua19tb2RlfSl9KTt9ZWxzZSBpZihxLmxlbmd0aD09 Myl7cj1qLl8oIntwYXJ0aWNpcGFudDF9LCB7cGFydGljaXBhbnQyfSwge3BhcnRp Y2lwYW50M30iLHtwYXJ0aWNpcGFudDE6cVswXSxwYXJ0aWNpcGFudDI6cVsxXSxw YXJ0aWNpcGFudDM6cVsyXX0pO31lbHNlIHI9ai5fKCJ7cGFydGljaXBhbnQxfSwg e3BhcnRpY2lwYW50Mn0sIHtwYXJ0aWNpcGFudDN9LCB7b3RoZXJzX2xpbmt9Iix7 cGFydGljaXBhbnQxOnFbMF0scGFydGljaXBhbnQyOnFbMV0scGFydGljaXBhbnQz OnFbMl0sb3RoZXJzX2xpbms6dGhpcy5yZW5kZXJSYXdQYXJ0aWNpcGFudENvdW50 KGwse3JlbmRlcl9zdWJzZXQ6dHJ1ZSxjb3VudDpuLTMsYXNfbGluazpvLmxpbmtf bW9kZX0pfSk7aWYoQXJyYXkuaXNBcnJheShyKSlyPWcuY3JlYXRlKCdzcGFuJyx7 fSxyKTtyZXR1cm4gcjt9LHJlbmRlclJhd1BhcnRpY2lwYW50Q291bnQ6ZnVuY3Rp b24obCxtKXtmdW5jdGlvbiBuKHEscil7cmV0dXJuIGcuY3JlYXRlKCdhJyx7Y2xh c3NOYW1lOidob3Zlcmxpc3RMaW5rJyxocmVmOmgoJy9hamF4L21lc3NhZ2luZy9w cm9maWxlX2Jyb3dzZXIvcHJvZmlsZV9icm93c2VyLnBocCcpLnNldFF1ZXJ5RGF0 YShxKSxyZWw6J2RpYWxvZyd9LHIpO312YXIgbz1tLnJlbmRlcl9zdWJzZXQscDtp Zighbyl7cD1tLmNvdW50PjE/ai5fKCJ7bnVtfSBvcmFuZyIse251bTptLmNvdW50 fSk6IjEgb3JhbmciO31lbHNlIHA9bS5jb3VudD4xP2ouXygie290aGVyc19jb3Vu dH0gbGFpbm55YSIse290aGVyc19jb3VudDptLmNvdW50fSk6IjEgb3JhbmcgbGFp biI7aWYobS5hc19saW5rJiZsKXtyZXR1cm4gbih7dGlkOmx9LHApO31lbHNlIHJl dHVybiBwO30scmVuZGVyU2hvcnROYW1lczpmdW5jdGlvbihsKXtpZihsLmxlbmd0 aD09MSlyZXR1cm4gW2xbMF0ubmFtZV07cmV0dXJuIGwubWFwKGZ1bmN0aW9uKG0p e3JldHVybiBtLnNob3J0X25hbWU7fSk7fSxyZW5kZXJVc2VyQ2Fub25pY2FsVGl0 YW5MaW5rOmZ1bmN0aW9uKGwsbSxuKXt2YXIgbz1uZXcgaCgpLnNldFN1YmRvbWFp bignd3d3Jyk7by5zZXRQYXRoKCcvbWVzc2FnZXMvJytsLnN1YnN0cihsLmluZGV4 T2YoJzonKSsxKSk7bS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLG8udG9TdHJpbmcoKSk7 biYmbigpO30scmVuZGVyVGl0YW5MaW5rV2l0aFNlcnZlcklEOmZ1bmN0aW9uKGws bSxuKXt2YXIgbz1uZXcgaCgpLnNldFN1YmRvbWFpbignd3d3Jyk7aWYoay5NZXNz YWdlc01lcmN1cnlJbnRlZ3JhdGlvbkdLKXtvLnNldFBhdGgoaS5nZXRVUklQYXRo Rm9yVGhyZWFkSUQobCkpO31lbHNle28uc2V0UGF0aCgnL21lc3NhZ2VzLycpO28u c2V0UXVlcnlEYXRhKHthY3Rpb246J3JlYWQnLHRpZDpsfSk7fW0uc2V0QXR0cmli dXRlKCdocmVmJyxvLnRvU3RyaW5nKCkpO24mJm4oKTt9fTt9KTsKX19kKCJNZXJj dXJ5U2VlbkJ5QWxsIixbIkNTUyIsIkRhdGFTdG9yZSIsIkRPTSIsIk1lcmN1cnlN ZXNzYWdlcyIsIk1lcmN1cnlQYXJ0aWNpcGFudHMiLCJNZXJjdXJ5Um9nZXIiLCJN ZXJjdXJ5VGhyZWFkcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdD U1MnKSxoPWIoJ0RhdGFTdG9yZScpLGk9YignRE9NJyksaj1iKCdNZXJjdXJ5TWVz c2FnZXMnKSxrPWIoJ01lcmN1cnlQYXJ0aWNpcGFudHMnKSxsPWIoJ01lcmN1cnlS b2dlcicpLG09YignTWVyY3VyeVRocmVhZHMnKSxuPXt9LG89e3VwZGF0ZU9uU2Vl bkNoYW5nZTpmdW5jdGlvbihyLHMpe25bci50YWdOYW1lXT10cnVlO2guc2V0KHIs J3RocmVhZC1pZCcscy50aHJlYWRfaWQpO2cuYWRkQ2xhc3Mociwnc2VlbkJ5TGlz dGVuZXInKTtwKHIscyk7fX07ZnVuY3Rpb24gcChyLHMpe3ZhciB0PXMucGFydGlj aXBhbnRzLmZpbHRlcihmdW5jdGlvbih3KXtyZXR1cm4gdyE9PWsudXNlcjt9KSx1 PXEocyksdj1zLnBhcnRpY2lwYW50cy5sZW5ndGg+MCYmcy5wYXJ0aWNpcGFudHNb MF09PT1rLnVzZXI7Zy5jb25kaXRpb25DbGFzcyhyLCdyZXBsaWVkTGFzdCcsdik7 Zy5jb25kaXRpb25DbGFzcyhyLCdzZWVuQnlBbGwnLHYmJmwuZ2V0U2VlbkJ5KHUp

Lmxlbmd0aD09PXQubGVuZ3RoKTt9ZnVuY3Rpb24gcShyKXtyZXR1cm4ge2F1dGhv cjprLnVzZXIsdGhyZWFkX2lkOnIudGhyZWFkX2lkLHRpbWVzdGFtcDpyLnRpbWVz dGFtcH07fWwuc3Vic2NyaWJlKCdzdGF0ZS1jaGFuZ2VkJyxmdW5jdGlvbihyLHMp e2Zvcih2YXIgdCBpbiBuKXt2YXIgdT1pLnNjcnkoZG9jdW1lbnQuYm9keSx0Kycu c2VlbkJ5TGlzdGVuZXInKTtmb3IodmFyIHY9MDt2PHUubGVuZ3RoO3YrKyl7dmFy IHc9dVt2XSx4PWguZ2V0KHcsJ3RocmVhZC1pZCcpO2lmKHNbeF0pbS5nZXRUaHJl YWRNZXRhKHgsZnVuY3Rpb24oeSl7cCh3LHkpO30pO319fSk7ZS5leHBvcnRzPW87 fSk7Cl9fZCgiTWVyY3VyeVRocmVhZE1ldGFkYXRhUmVuZGVyZXIiLFsiZXZlbnQt ZXh0ZW5zaW9ucyIsIkNTUyIsIkRPTSIsIkhUTUwiLCJKU0xvZ2dlciIsIk1lcmN1 cnlBdHRhY2htZW50IiwiTWVyY3VyeUVtb2ppIiwiTWVyY3VyeVRocmVhZE1ldGFk YXRhUmF3UmVuZGVyZXIiLCJNZXJjdXJ5UGFydGljaXBhbnRzIiwiTWVyY3VyeVNl ZW5CeUFsbCIsIk1lcmN1cnlTZXJ2ZXJSZXF1ZXN0cyIsIk1lcmN1cnlUaHJlYWRz IiwiVG9vbHRpcCIsIlVSSSIsImN4IiwiY3JlYXRlQXJyYXlGcm9tIiwidHgiLCJN ZXJjdXJ5SW1hZ2VUZW1wbGF0ZXMiLCJNZXJjdXJ5VGhyZWFkbGlzdEljb25UZW1w bGF0ZXMiLCJNZXJjdXJ5U3RhdHVzVGVtcGxhdGVzIiwiTWVyY3VyeUNvbnN0YW50 cyIsIk1lcmN1cnlDb25maWciXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZl bnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0NTUycpLGg9YignRE9NJyksaT1iKCdI VE1MJyksaj1iKCdKU0xvZ2dlcicpLGs9YignTWVyY3VyeUF0dGFjaG1lbnQnKSxs PWIoJ01lcmN1cnlFbW9qaScpLG09YignTWVyY3VyeVRocmVhZE1ldGFkYXRhUmF3 UmVuZGVyZXInKSxuPWIoJ01lcmN1cnlQYXJ0aWNpcGFudHMnKSxvPWIoJ01lcmN1 cnlTZWVuQnlBbGwnKSxwPWIoJ01lcmN1cnlTZXJ2ZXJSZXF1ZXN0cycpLHE9Yign TWVyY3VyeVRocmVhZHMnKSxyPWIoJ1Rvb2x0aXAnKSxzPWIoJ1VSSScpLHQ9Yign Y3gnKSx1PWMoJ01lcmN1cnlJbWFnZVRlbXBsYXRlcycpLHY9YygnTWVyY3VyeVRo cmVhZGxpc3RJY29uVGVtcGxhdGVzJyksdz1jKCdNZXJjdXJ5U3RhdHVzVGVtcGxh dGVzJykseD1jKCdNZXJjdXJ5Q29uc3RhbnRzJykseT1jKCdNZXJjdXJ5Q29uZmln Jyksej1iKCdjcmVhdGVBcnJheUZyb20nKSxhYT1iKCd0eCcpLGJhPWouY3JlYXRl KCd3bV90aW1lc3RhbXAnKTtlLmV4cG9ydHM9e3JlbmRlclRpbWVzdGFtcDpmdW5j dGlvbihmYSxnYSxoYSxpYSl7aWYoaWEpe2lmKCFnYSl7YmEud2Fybignbm9fdGl0 bGUnKTtnYT0obmV3IERhdGUoaWEpKS50b0xvY2FsZURhdGVTdHJpbmcoKTt9ZmEu c2V0QXR0cmlidXRlKCd0aXRsZScsZ2EpO2lmKCFoYSl7YmEud2Fybignbm9fZGlz cGxheScpO2hhPURhdGUuZm9ybWF0KHlbJzI0aF90aW1lcyddPydIOmknOidnOmlh JyxNYXRoLmZsb29yKGlhLzEwMDApKTt9aC5zZXRDb250ZW50KGZhLGhhKTtnLnNo b3coZmEpO319LHJlbmRlck1lc3NhZ2VTb3VyY2VUYWdzOmZ1bmN0aW9uKGZhLGdh LGhhLGlhKXt2YXIgamE9eC5NZXJjdXJ5TWVzc2FnZVNvdXJjZVRhZ3Msa2E9Jycs bGE9JycsbWE9Jyc7aWYoaGEuY29udGFpbnMoamEuTUVTU0VOR0VSKSl7a2E9IkRp a2lyaW0gZGFyaSBNZXNzZW5nZXIiO2xhPW5ldyBzKCcvbW9iaWxlL21lc3Nlbmdl cicpO21hPSItY3gtUFJJVkFURS13ZWJNZXNzZW5nZXJNZXNzYWdlR3JvdXBfX3Nv dXJjZU1lc3NlbmdlciI7fWVsc2UgaWYoaGEuY29udGFpbnMoamEuQ0hBVCkpe2th PSJEaWtpcmltIGRhcmkgT2Jyb2xhbiI7bWE9Ii1jeC1QUklWQVRFLXdlYk1lc3Nl bmdlck1lc3NhZ2VHcm91cF9fc291cmNlQ2hhdCI7fWVsc2UgaWYoaGEuY29udGFp bnMoamEuRU1BSUwpKXtpZihpYSl7a2E9YWEuXygiRGlraXJpbSBkYXJpIHtlbWFp bH0iLHtlbWFpbDppYX0pO31lbHNlIGthPSJEaWtpcmltIGRhcmkgRW1haWwiO21h PSItY3gtUFJJVkFURS13ZWJNZXNzZW5nZXJNZXNzYWdlR3JvdXBfX3NvdXJjZUVt YWlsIjt9ZWxzZSBpZihoYS5jb250YWlucyhqYS5NT0JJTEUpKXtrYT0iRGlraXJp bSBkYXJpIFBvbnNlbCI7bGE9bmV3IHMoJy9tb2JpbGUvJyk7bWE9Ii1jeC1QUklW QVRFLXdlYk1lc3Nlbmdlck1lc3NhZ2VHcm91cF9fc291cmNlTW9iaWxlIjt9aWYo bWEpe3Iuc2V0KGZhLGthKTtnLmFkZENsYXNzKGdhLG1hKTtpZihsYSl7ZmEuc2V0 QXR0cmlidXRlKCdocmVmJyxsYSk7fWVsc2UgZmEucmVtb3ZlQXR0cmlidXRlKCdo cmVmJyk7fWVsc2UgZy5oaWRlKGZhKTt9LHJlbmRlck1lc3NhZ2VMb2NhdGlvbjpm dW5jdGlvbihmYSxnYSxoYSl7dmFyIGlhPXMoJy9hamF4L21lc3NhZ2luZy9ob3Zl cmNhcmQvbWFwLnBocCcpLnNldFF1ZXJ5RGF0YShoYSk7ZmEuc2V0QXR0cmlidXRl KCdkYXRhLWhvdmVyY2FyZCcsaWEpO2cucmVtb3ZlQ2xhc3MoZmEsIi1jeC1QUklW QVRFLXdlYk1lc3Nlbmdlck1lc3NhZ2VHcm91cF9fbm9Mb2NhdGlvbiIpO2cuc2hv dyhnYSk7fSxyZW5kZXJTcG9vZldhcm5pbmc6ZnVuY3Rpb24oZmEsZ2EsaGEpe2lm KGdhKXtnLmFkZENsYXNzKGZhLCItY3gtUFJJVkFURS13ZWJNZXNzZW5nZXJNZXNz YWdlR3JvdXBfX3Nwb29mV2FybmluZyIpO3Iuc2V0KGZhLGFhLl8oIlRpZGFrIGJp c2EgbWVuZ29uZmlybWFzaSB7bmFtZV9vcl9lbWFpbH0gc2ViYWdhaSBwZW5naXJp bSIse25hbWVfb3JfZW1haWw6aGEubmFtZX0pKTt9fSxyZW5kZXJDb3JlVGhyZWFk bGlzdDpmdW5jdGlvbihmYSxnYSxoYSxpYSxqYSl7aWE9aWF8fHt9O3RoaXMucmVu ZGVyVGhyZWFkSW1hZ2UoZmEsZ2EuZ2V0Tm9kZSgnaW1hZ2UnKSk7ZWEoZmEsZ2Eu

Z2V0Tm9kZSgnbmFtZScpLGlhKTtpZihmYS5mb2xkZXImJmphKWRhKGdhLmdldE5v ZGUoJ2ZvbGRlckJhZGdlJyksZmEuZm9sZGVyKTt2YXIga2E9Z2EuZ2V0Tm9kZSgn dGltZXN0YW1wJyk7dGhpcy5yZW5kZXJUaW1lc3RhbXAoa2EsZmEudGltZXN0YW1w X2Fic29sdXRlLGZhLnRpbWVzdGFtcF9yZWxhdGl2ZSxmYS50aW1lc3RhbXApO3Ro aXMucmVuZGVyU25pcHBldChmYSxnYS5nZXROb2RlKCdzbmlwcGV0JykpO2hhKGdh LGZhKTt9LHJlbmRlckFuZFNlcGFyYXRlZFBhcnRpY2lwYW50TGlzdDpmdW5jdGlv bihmYSxnYSxoYSl7aGE9aGF8fHt9O2hhLmxhc3Rfc2VwYXJhdG9yX3VzZXNfYW5k PXRydWU7cS5nZXRUaHJlYWRNZXRhKGZhLGZ1bmN0aW9uKGlhKXtlYShpYSxnYSxo YSk7fS5iaW5kKHRoaXMpKTt9LHJlbmRlclNuaXBwZXQ6ZnVuY3Rpb24oZmEsZ2Ep e3ZhciBoYT1oLmNyZWF0ZSgnc3BhbicpO2cuYWRkQ2xhc3MoaGEsJ01lcmN1cnlS ZXBsaWVkSW5kaWNhdG9yJyk7aC5hcHBlbmRDb250ZW50KGdhLGhhKTtvLnVwZGF0 ZU9uU2VlbkNoYW5nZShoYSxmYSk7aWYoZmEuc25pcHBldF9oYXNfYXR0YWNobWVu dClpZighZmEuc25pcHBldCYmZmEuc25pcHBldF9hdHRhY2htZW50cyl7ZmEuc25p cHBldF9hdHRhY2htZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGthKXtpZihrYS5hdHRh Y2hfdHlwZSE9eC5NZXJjdXJ5QXR0YWNobWVudFR5cGUuRklMRSlyZXR1cm47dmFy IGxhPWsuZ2V0QXR0YWNoSWNvbkNsYXNzKGthLmljb25fdHlwZSksbWE9dlsnOmZi Om1lcmN1cnk6YXR0YWNobWVudC1pY29uLXRleHQnXS5idWlsZCgpLmdldFJvb3Qo KTtoLmFwcGVuZENvbnRlbnQobWEsa2EubmFtZSk7Zy5hZGRDbGFzcyhtYSxsYSk7 aC5hcHBlbmRDb250ZW50KGdhLG1hKTt9LmJpbmQodGhpcykpO31lbHNlIGguYXBw ZW5kQ29udGVudChnYSxoLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTonTWVyY3Vy eUF0dGFjaG1lbnRJbmRpY2F0b3InfSkpO2lmKGZhLmlzX2ZvcndhcmRlZF9zbmlw cGV0KXt2YXIgaWE7aWYoZmEuc25pcHBldCl7aWE9IlBlc2FuIHlhbmcgRGl0ZXJ1 c2thbjoiO31lbHNlIGlhPSJQZXNhbiB5YW5nIERpdGVydXNrYW4iO2guYXBwZW5k Q29udGVudChnYSxoLmNyZWF0ZSgnc3Ryb25nJyx7Y2xhc3NOYW1lOidtZXJjdXJ5 Rm9yd2FyZGVkSW5kaWNhdG9yJ30saWEpKTt9dmFyIGphPWZhLnNuaXBwZXQ7aWYo amEpaWYoamEuc3Vic3RyKDAsNCk9PSc/T1RSJyl7amE9IltwZXNhbiBkaXNhbmRp a2FuXSI7fWVsc2UgamE9amEucmVwbGFjZSgvXHJcbnxbXHJcbl0vZywiICIpO2gu YXBwZW5kQ29udGVudChnYSxpKGwuaHRtbEVtb2ppQW5kRW1vdGUoamEpKSk7fSxy ZW5kZXJUaXRhbkxpbms6ZnVuY3Rpb24oZmEsZ2EsaGEpe2lmKGZhLnN1YnN0cigw LGZhLmluZGV4T2YoJzonKSk9PSd1c2VyJyl7bS5yZW5kZXJVc2VyQ2Fub25pY2Fs VGl0YW5MaW5rKGZhLGdhLGhhKTt9ZWxzZSBwLmdldFNlcnZlclRocmVhZElEKGZh LGZ1bmN0aW9uKGlhKXttLnJlbmRlclRpdGFuTGlua1dpdGhTZXJ2ZXJJRChpYSxn YSxoYSk7fSk7fSxyZW5kZXJUaHJlYWRJbWFnZTpmdW5jdGlvbihmYSxnYSl7aWYo ZmEuaW1hZ2Vfc3JjKXt0aGlzLl9yZW5kZXJUaHJlYWRJbWFnZVNpbmdsZShmYS5p bWFnZV9zcmMsZ2EpO3JldHVybjt9dmFyIGhhPVtdLGlhPWZhLnBhcnRpY2lwYW50 cy5maWx0ZXIoZnVuY3Rpb24oamEpe3JldHVybiBqYSE9bi51c2VyO30pO2lmKCFp YS5sZW5ndGgpe2hhPVtuLnVzZXJdO31lbHNlIGlmKGlhLmxlbmd0aD09MSl7aGE9 W2lhWzBdXTt9ZWxzZXtoYT1pYS5zbGljZSgwLDMpO2lmKGhhLmxlbmd0aD09Milo YS5wdXNoKG4udXNlcik7fW4uZ2V0TXVsdGkoaGEsZnVuY3Rpb24oamEpe3ZhciBr YT1oYS5tYXAoZnVuY3Rpb24obGEpe3JldHVybiBqYVtsYV07fSk7dGhpcy5yZW5k ZXJQYXJ0aWNpcGFudEltYWdlcyhrYSxnYSk7fS5iaW5kKHRoaXMpKTt9LHJlbmRl clBhcnRpY2lwYW50SW1hZ2VzOmZ1bmN0aW9uKGZhLGdhKXtpZihmYS5sZW5ndGg+ Mil7dGhpcy5fcmVuZGVyVGhyZWFkSW1hZ2VTcGxpdChmYSxnYSk7fWVsc2UgdGhp cy5fcmVuZGVyVGhyZWFkSW1hZ2VTaW5nbGUoZmFbMF0uaW1hZ2Vfc3JjLGdhKTt9 LHJlbmRlckVycm9ySW5kaWNhdG9yOmZ1bmN0aW9uKGZhLGdhKXt2YXIgaGE9d1sn OmZiOm1lcmN1cnk6ZXJyb3ItaW5kaWNhdG9yJ10ucmVuZGVyKCksaWE7c3dpdGNo KGZhKXtjYXNlIHguTWVyY3VyeUFjdGlvblN0YXR1cy5SRVFVRVNUX0VSUk9SOmNh c2UgeC5NZXJjdXJ5QWN0aW9uU3RhdHVzLlRSQU5TUE9SVF9FUlJPUjpjYXNlIHgu TWVyY3VyeUFjdGlvblN0YXR1cy5GQUlMRURfVU5LTk9XTl9SRUFTT046Y2FzZSB4 Lk1lcmN1cnlBY3Rpb25TdGF0dXMuVU5BQkxFX1RPX0NPTkZJUk06aWE9IlBlc2Fu IGluaSBnYWdhbCBkaWtpcmltLiBLbGlrIHVudHVrIG1lbmdpcmltIGxhZ2kuIjti cmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcignSW52YWxpZCBlcnJvciBjb2Rl ICcrZmEpO31yLnNldChoYSxpYSwnYWJvdmUnLCdjZW50ZXInKTtpZihnYSl7RXZl bnQubGlzdGVuKGhhLCdjbGljaycsZ2EpO2cuYWRkQ2xhc3MoaGEsJ21lcmN1cnlD bGlja2FibGVFcnJvckluZGljYXRvcicpO31yZXR1cm4gaGE7fSxyZW5kZXJSZXNl bmRJbmRpY2F0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gd1snOmZiOm1lcmN1cnk6cmVz ZW5kLWluZGljYXRvciddLnJlbmRlcigpO30scmVuZGVyU3RhdHVzSW5kaWNhdG9y OmZ1bmN0aW9uKGZhLGdhKXt2YXIgaGE9eC5NZXJjdXJ5QWN0aW9uU3RhdHVzLGlh O2lmKGZhPT1oYS5SRVNFTkRJTkcpe2lhPXRoaXMucmVuZGVyUmVzZW5kSW5kaWNh dG9yKCk7fWVsc2UgaWYoZmEhPT11bmRlZmluZWQmJmZhIT1oYS5VTlNFTlQmJmZh

IT1oYS5VTkNPTkZJUk1FRCYmZmEhPWhhLlNVQ0NFU1MpaWE9dGhpcy5yZW5kZXJF cnJvckluZGljYXRvcihmYSxnYSk7cmV0dXJuIGlhO30scmVuZGVyUGFydGljaXBh bnRMaXN0OmZ1bmN0aW9uKGZhLGdhLGhhLGlhKXtyZXR1cm4gbS5yZW5kZXJSYXdQ YXJ0aWNpcGFudExpc3QocC5nZXRTZXJ2ZXJUaHJlYWRJRE5vdyhmYSksZ2EsaGEs aWEpO30scmVuZGVyUGFydGljaXBhbnRDb3VudDpmdW5jdGlvbihmYSxnYSl7cmV0 dXJuIG0ucmVuZGVyUmF3UGFydGljaXBhbnRDb3VudChwLmdldFNlcnZlclRocmVh ZElETm93KGZhKSxnYSk7fSxfcmVuZGVyVGhyZWFkSW1hZ2VTaW5nbGU6ZnVuY3Rp b24oZmEsZ2Epe3ZhciBoYT11Wyc6ZmI6bWVyY3VyeTp0aHJlYWQtaW1hZ2U6c2lu Z2xlJ10uYnVpbGQoKS5nZXRSb290KCk7aGEuc3JjPWZhO2guc2V0Q29udGVudChn YSxoYSk7fSxfcmVuZGVyVGhyZWFkSW1hZ2VTcGxpdDpmdW5jdGlvbihmYSxnYSl7 dmFyIGhhPXVbJzpmYjptZXJjdXJ5OnRocmVhZC1pbWFnZTpzcGxpdCddLmJ1aWxk KCkuc2V0Tm9kZVByb3BlcnR5KCdsZWZ0Jywnc3JjJyxmYVswXS5pbWFnZV9zcmMp LnNldE5vZGVQcm9wZXJ0eSgndG9wUmlnaHQnLCdzcmMnLGZhWzFdLmltYWdlX3Ny Yykuc2V0Tm9kZVByb3BlcnR5KCdib3R0b21SaWdodCcsJ3NyYycsZmFbMl0uaW1h Z2Vfc3JjKTtoLnNldENvbnRlbnQoZ2EsaGEuZ2V0Um9vdCgpKTt9LF9jbG9uZUlm RE9NRWxlbWVudDpmdW5jdGlvbihmYSl7aWYoZmEuY2xvbmVOb2RlKXtyZXR1cm4g ZmEuY2xvbmVOb2RlKCk7fWVsc2UgcmV0dXJuIGZhO319O2Z1bmN0aW9uIGNhKGZh LGdhKXt2YXIgaGE9ZmE7aWYoZ2EmJmdhPjEpaGE9aC5jcmVhdGUoJ3NwYW4nLHt9 LGFhLl8oIntjb252ZXJzYXRpb25fdGl0bGV9ICh7dW5yZWFkX2NvdW50fSkiLHtj b252ZXJzYXRpb25fdGl0bGU6ZmEsdW5yZWFkX2NvdW50OmdhfSkpO3JldHVybiBo YTt9ZnVuY3Rpb24gZGEoZmEsZ2Epe3ooZmEpLmZvckVhY2goZnVuY3Rpb24oaGEp e2guc2V0Q29udGVudChoYSxnYSk7fSk7fWZ1bmN0aW9uIGVhKGZhLGdhLGhhKXtn YT16KGdhKTt2YXIgaWE9e2NhbGxiYWNrOnRydWUsY2hlY2tfbGVuZ3RoOnRydWUs c2hvd191bnJlYWRfY291bnQ6dHJ1ZX07aGE9aGF8fHt9O3ZhciBqYT17fTtmb3Io dmFyIGthIGluIGhhKWlmKGlhW2thXSl7amFba2FdPWhhW2thXTtkZWxldGUgaGFb a2FdO31pZihmYS5uYW1lKXt2YXIgbGE9Y2EoZmEubmFtZSxqYS5zaG93X3VucmVh ZF9jb3VudD9mYS51bnJlYWRfY291bnQ6MCk7Z2EuZm9yRWFjaChmdW5jdGlvbihu YSl7aC5zZXRDb250ZW50KG5hLGxhKTt9KTtqYS5jYWxsYmFjayYmamEuY2FsbGJh Y2sobGEpO3JldHVybjt9dmFyIG1hPWZhLnBhcnRpY2lwYW50cztpZihmYS5wYXJ0 aWNpcGFudHMubGVuZ3RoPjEpbWE9ZmEucGFydGljaXBhbnRzLmZpbHRlcihmdW5j dGlvbihuYSl7cmV0dXJuIG5hIT1uLnVzZXI7fSk7bi5nZXRNdWx0aShtYSxmdW5j dGlvbihuYSl7dmFyIG9hPW1hLm1hcChmdW5jdGlvbih0YSl7cmV0dXJuIG5hW3Rh XTt9KSxwYT1lLmV4cG9ydHMucmVuZGVyUGFydGljaXBhbnRMaXN0KGZhLnRocmVh ZF9pZCxvYSxtYS5sZW5ndGgsaGEpO3BhPWNhKHBhLGphLnNob3dfdW5yZWFkX2Nv dW50P2ZhLnVucmVhZF9jb3VudDowKTt2YXIgcWE9aGEuYWJicl9tb2RlLHJhPXt9 O2Zvcih2YXIgc2EgaW4gaGEpcmFbc2FdPWhhW3NhXTtyYS5hYmJyX21vZGU9dHJ1 ZTtnYS5mb3JFYWNoKGZ1bmN0aW9uKHRhKXt2YXIgdWE9Z2EubGVuZ3RoPjE/ZS5l eHBvcnRzLl9jbG9uZUlmRE9NRWxlbWVudChwYSk6cGE7aC5zZXRDb250ZW50KHRh LHVhKTtpZihqYS5jaGVja19sZW5ndGgmJiFxYSYmdGEuc2Nyb2xsV2lkdGg+dGEu Y2xpZW50V2lkdGgpe3ZhciB2YT1lLmV4cG9ydHMucmVuZGVyUGFydGljaXBhbnRM aXN0KGZhLnRocmVhZF9pZCxvYSxtYS5sZW5ndGgscmEpO3ZhPWNhKHZhLGphLnNo b3dfdW5yZWFkX2NvdW50P2ZhLnVucmVhZF9jb3VudDowKTtoLnNldENvbnRlbnQo dGEsdmEpO319LmJpbmQodGhpcykpO2phLmNhbGxiYWNrJiZqYS5jYWxsYmFjayhw YSk7fS5iaW5kKHRoaXMpKTt9fSk7Cl9fZCgiTWVyY3VyeU1lc3NhZ2VSZW5kZXJl ciIsWyJNZXJjdXJ5QXR0YWNobWVudFJlbmRlcmVyIiwiQ1NTIiwiRE9NIiwiRE9N UXVlcnkiLCJIVE1MIiwiaHRtbGl6ZSIsImh0bWxIeXBlcmxpbmsiLCJNZXJjdXJ5 RW1vamkiLCJNZXJjdXJ5UGFydGljaXBhbnRzIiwiVG9vbHRpcCIsInR4IiwiTWVy Y3VyeUNvbnN0YW50cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdN ZXJjdXJ5QXR0YWNobWVudFJlbmRlcmVyJyksaD1iKCdDU1MnKSxpPWIoJ0RPTScp LGo9YignRE9NUXVlcnknKSxrPWIoJ0hUTUwnKSxsPWIoJ2h0bWxpemUnKSxtPWIo J2h0bWxIeXBlcmxpbmsnKSxuPWIoJ01lcmN1cnlFbW9qaScpLG89YignTWVyY3Vy eVBhcnRpY2lwYW50cycpLHA9YignVG9vbHRpcCcpLHE9YygnTWVyY3VyeUNvbnN0 YW50cycpLHI9YigndHgnKSxzPXtyZW5kZXJUb29sdGlwRmx5b3V0OmZ1bmN0aW9u KGphLGthKXtrYS5mb3JFYWNoKGZ1bmN0aW9uKGxhKXt2YXIgbWE9aS5jcmVhdGUo J2RpdicpO2kuc2V0Q29udGVudChtYSxsYS5uYW1lKTtpLmFwcGVuZENvbnRlbnQo amEsbWEpO30pO30scmVuZGVyTG9nTWVzc2FnZTpmdW5jdGlvbihqYSxrYSxsYSxt YSl7dihqYSxtYSk7dyhrYSxtYSk7eChsYSxtYSk7fSxmb3JtYXRNZXNzYWdlQm9k eTpmdW5jdGlvbihqYSxrYSxsYSl7dmFyIG1hPShqYXx8JycpLnJlcGxhY2UoL1xu KyQvLCcnKTtpZigha2EpcmV0dXJuIHUobWEsZmFsc2UsbGEpO3ZhciBuYT1PYmpl Y3Qua2V5cyhrYSkubWFwKGZ1bmN0aW9uKHFhKXtyZXR1cm4gd2luZG93LnBhcnNl

SW50KHFhKTt9KS5zb3J0KGZ1bmN0aW9uKHFhLHJhKXtyZXR1cm4gcWEtcmE7fSks b2E9W10scGE9MDtuYS5mb3JFYWNoKGZ1bmN0aW9uKHFhKXt2YXIgcmE9bWEuc2xp Y2UocGEscWEpO2lmKHJhKW9hLnB1c2godShyYSxmYWxzZSxsYSkpO3BhPXFhK2th W3FhXS5sZW5ndGg7dmFyIHNhPW1hLnNsaWNlKHFhLHBhKTtpZihzYSlvYS5wdXNo KHUoc2EsdHJ1ZSxsYSkpO30pO2lmKHBhPG1hLmxlbmd0aClvYS5wdXNoKHUobWEu c2xpY2UocGEpLGZhbHNlLGxhKSk7cmV0dXJuIG9hLmxlbmd0aD09PTA/bnVsbDpv YS5sZW5ndGg9PT0xP29hWzBdOmkuY3JlYXRlKCdzcGFuJyx7fSxvYSk7fX07ZnVu Y3Rpb24gdChqYSxrYSl7dmFyIGxhPWphLnJlcGxhY2UoL1xyXG4/L2csJ1xuJyku c3BsaXQoL1xuezIsfS8pLG1hPVtdO2Zvcih2YXIgbmE9MDtuYTxsYS5sZW5ndGg7 bmErKyl7dmFyIG9hPWxhW25hXTtpZihvYS5sZW5ndGgpe21hLnB1c2goJzxwPicp O21hLnB1c2goa2Eob2EpKTttYS5wdXNoKCc8L3A+Jyk7fX1yZXR1cm4gbWEuam9p bignJyk7fWZ1bmN0aW9uIHUoamEsa2EsbGEpe3ZhciBtYT1udWxsO2lmKGphLmxl bmd0aD09PTAmJiFrYSlyZXR1cm4gbWE7ZnVuY3Rpb24gbmEob2Epe3JldHVybiBt KG9hLG4uaHRtbEVtb2ppQW5kRW1vdGUsbnVsbCx0cnVlKTt9bWE9bGE/dChqYSxu YSk6bmEoamEpO2lmKGthKXJldHVybiBpLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFt ZTonaGlnaGxpZ2h0J30sayhtYSkpO3JldHVybiBrKG1hKTt9ZnVuY3Rpb24gdihq YSxrYSl7dmFyIGxhPScnO3N3aXRjaChrYS5sb2dfbWVzc2FnZV90eXBlKXtjYXNl IHEuTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlNVQlNDUklCRTpsYT0nbWVyY3VyeVN1 YnNjcmliZUljb24nO2JyZWFrO2Nhc2UgcS5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUu VU5TVUJTQ1JJQkU6bGE9J21lcmN1cnlVbnN1YnNjcmliZUljb24nO2JyZWFrO2Nh c2UgcS5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUuVEhSRUFEX05BTUU6bGE9J21lcmN1 cnlUaHJlYWROYW1lSWNvbic7YnJlYWs7Y2FzZSBxLk1lcmN1cnlMb2dNZXNzYWdl VHlwZS5USFJFQURfSU1BR0U6bGE9J21lcmN1cnlUaHJlYWRJbWFnZUljb24nO2Jy ZWFrO2Nhc2UgcS5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUuVklERU9fQ0FMTDp2YXIg bWE9a2EubG9nX21lc3NhZ2VfZGF0YS5hbnN3ZXJlZDtpZihtYXx8aWEoa2EpKXts YT0nbWVyY3VyeVZpZGVvQ2FsbEljb24nO31lbHNlIGxhPSdtZXJjdXJ5TWlzc2Vk VmlkZW9DYWxsSWNvbic7YnJlYWs7Y2FzZSBxLk1lcmN1cnlMb2dNZXNzYWdlVHlw ZS5TRVJWRVJfRVJST1I6bGE9J21lcmN1cnlFcnJvckljb24nO2JyZWFrO31oLmFk ZENsYXNzKGphLGxhKTt9ZnVuY3Rpb24gdyhqYSxrYSl7c3dpdGNoKGthLmxvZ19t ZXNzYWdlX3R5cGUpe2Nhc2UgcS5NZXJjdXJ5TG9nTWVzc2FnZVR5cGUuU1VCU0NS SUJFOmZhKGphLGthKTticmVhaztjYXNlIHEuTWVyY3VyeUxvZ01lc3NhZ2VUeXBl LlVOU1VCU0NSSUJFOmdhKGphLGthKTticmVhaztjYXNlIHEuTWVyY3VyeUxvZ01l c3NhZ2VUeXBlLlZJREVPX0NBTEw6aWYoaWEoa2EpKXt5KGphLGthKTt9ZWxzZSB6 KGphLGthKTticmVhaztjYXNlIHEuTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlRIUkVB RF9OQU1FOmFhKGphLGthKTticmVhaztjYXNlIHEuTWVyY3VyeUxvZ01lc3NhZ2VU eXBlLlRIUkVBRF9JTUFHRTpiYShqYSxrYSk7YnJlYWs7Y2FzZSBxLk1lcmN1cnlM b2dNZXNzYWdlVHlwZS5TRVJWRVJfRVJST1I6aGEoamEsa2EpO2JyZWFrO319ZnVu Y3Rpb24geChqYSxrYSl7dmFyIGxhPWthLmxvZ19tZXNzYWdlX3R5cGU7aWYobGE9 PXEuTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlRIUkVBRF9JTUFHRSl7dmFyIG1hPWth LmxvZ19tZXNzYWdlX2RhdGEuaW1hZ2U7bWEmJmkuc2V0Q29udGVudChqYSxnLnJl bmRlclByZXZpZXcobWEpKTtoLnNob3coamEpO319dmFyIHk9ZnVuY3Rpb24oamEs a2Epe28uZ2V0KGthLmF1dGhvcixmdW5jdGlvbihsYSl7dmFyIG1hPWxhLnNob3J0 X25hbWUsbmE7c3dpdGNoKGthLmxvZ19tZXNzYWdlX2RhdGEuZXZlbnRfbmFtZSl7 Y2FzZSAnaW5zdGFsbGluZyc6bmE9aS50eC5fKCJ7Zmlyc3RuYW1lfSBzZWRhbmcg bWVtcGVyc2lhcGthbiB0ZWxlcG9uIHZpZGVvLi4uIix7Zmlyc3RuYW1lOm1hfSk7 YnJlYWs7Y2FzZSAnaW5zdGFsbGVkJzpuYT1pLnR4Ll8oIntmaXJzdG5hbWV9IHNl bGVzYWkgbWVtcGVyc2lhcGthbiB0ZWxlcG9uIHZpZGVvLiIse2ZpcnN0bmFtZTpt YX0pO2JyZWFrO2Nhc2UgJ2luc3RhbGxfY2FuY2VsZWQnOm5hPWkudHguXygiQW5k YSBtZW1iYXRhbGthbiBwZW1hc2FuZ2FuIHRlbGVwb24gdmlkZW8uIix7Zmlyc3Ru YW1lOm1hfSk7YnJlYWs7fWlmKG5hKWkuc2V0Q29udGVudChqYSxuYSk7fSk7fSx6 PWZ1bmN0aW9uKGphLGthKXt2YXIgbGE9a2EubG9nX21lc3NhZ2VfZGF0YS5jYWxs ZXIsbWE9a2EubG9nX21lc3NhZ2VfZGF0YS5jYWxsZWUsbmE9W2xhLG1hXTtvLmdl dE11bHRpKG5hLGZ1bmN0aW9uKG9hKXtpZihsYT09by51c2VyKXt2YXIgcGE9b2Fb bWFdLnNob3J0X25hbWUscWE7aWYoa2EubG9nX21lc3NhZ2VfZGF0YS5hbnN3ZXJl ZCl7cWE9aS50eC5fKCJBbmRhIG1lbmVsZXBvbiB7Zmlyc3RuYW1lfS4iLHtmaXJz dG5hbWU6cGF9KTt9ZWxzZSBxYT1pLnR4Ll8oIntmaXJzdG5hbWV9IHRhayBtZW5q YXdhYiB0ZWxlcG9uIGRhcmkgQW5kYS4iLHtmaXJzdG5hbWU6cGF9KTt9ZWxzZXt2 YXIgcmE9b2FbbGFdLnNob3J0X25hbWU7aWYoa2EubG9nX21lc3NhZ2VfZGF0YS5h bnN3ZXJlZCl7cWE9aS50eC5fKCJ7Zmlyc3RuYW1lfSBtZW5lbGVwb24gQW5kYS4i LHtmaXJzdG5hbWU6cmF9KTt9ZWxzZSBxYT1pLnR4Ll8oIkFuZGEgdGlkYWsgbWVu

amF3YWIgdGVsZXBvbiBkYXJpIHtmaXJzdG5hbWV9LiIse2ZpcnN0bmFtZTpyYX0p O31pLnNldENvbnRlbnQoamEscWEpO30pO30sYWE9ZnVuY3Rpb24oamEsa2Epe3Zh ciBsYT1rYS5sb2dfbWVzc2FnZV9kYXRhLm5hbWUsbWE9aS5jcmVhdGUoJ2InLHt9 LGxhKTtpZihrYS5hdXRob3I9PW8udXNlcil7aWYobGEpe2kuc2V0Q29udGVudChq YSxpLnR4Ll8oIkFuZGEgbWVuYW1haSBwZXJjYWthcGFuOiB7bmFtZX0uIix7bmFt ZTptYX0pKTt9ZWxzZSBpLnNldENvbnRlbnQoamEsaS50eC5fKCJBbmRhIG1lbmdo YXB1cyBuYW1hIHBlcmNha2FwYW4uIikpO31lbHNlIG8uZ2V0KGthLmF1dGhvcixm dW5jdGlvbihuYSl7dmFyIG9hLHBhPWNhKG5hKTtpZihsYSl7b2E9aS50eC5fKCJ7 YWN0b3J9IG1lbmFtYWkgcGVyY2FrYXBhbjoge25hbWV9LiIse2FjdG9yOnBhLG5h bWU6bWF9KTt9ZWxzZSBvYT1pLnR4Ll8oInthY3Rvcn0gbWVuZ2hhcHVzIG5hbWEg cGVyY2FrYXBhbi4iLHthY3RvcjpwYX0pO2kuc2V0Q29udGVudChqYSxvYSk7fSk7 fSxiYT1mdW5jdGlvbihqYSxrYSl7aWYoa2EuYXV0aG9yPT1vLnVzZXIpe2lmKGth LmxvZ19tZXNzYWdlX2RhdGEuaW1hZ2Upe2kuc2V0Q29udGVudChqYSxpLnR4Ll8o IkFuZGEgbWVuZ3ViYWggZ2FtYmFyIHBlcmNha2FwYW4uIikpO31lbHNlIGkuc2V0 Q29udGVudChqYSxpLnR4Ll8oIkFuZGEgbWVuZ2hhcHVzIGdhbWJhciBwZXJjYWth cGFuLiIpKTt9ZWxzZSBvLmdldChrYS5hdXRob3IsZnVuY3Rpb24obGEpe3ZhciBt YT1jYShsYSksbmE7aWYoa2EubG9nX21lc3NhZ2VfZGF0YS5pbWFnZSl7bmE9aS50 eC5fKCJ7YWN0b3J9IG1lbmd1YmFoIGdhbWJhciBwZXJjYWthcGFuLiIse2FjdG9y Om1hfSk7fWVsc2UgbmE9aS50eC5fKCJ7YWN0b3J9IG1lbmdoYXB1cyBnYW1iYXIg cGVyY2FrYXBhbi4iLHthY3RvcjptYX0pO2kuc2V0Q29udGVudChqYSxuYSk7fSk7 fSxjYT1mdW5jdGlvbihqYSl7aWYoamEuaHJlZilyZXR1cm4gaS5jcmVhdGUoJ2En LHtocmVmOmphLmhyZWZ9LGphLm5hbWUpO3JldHVybiBqYS5uYW1lO30sZGE9ZnVu Y3Rpb24oamEpe2lmKGphLmhyZWYpcmV0dXJuIGkuY3JlYXRlKCdhJyx7aHJlZjpq YS5ocmVmfSxqYS5zaG9ydF9uYW1lKTtyZXR1cm4gamEuc2hvcnRfbmFtZTt9LGVh PWZ1bmN0aW9uKGphKXt2YXIga2E9amEuaW5kZXhPZihvLnVzZXIpO2lmKGthPjAp cmV0dXJuIGphLnNwbGljZShrYSwxKS5jb25jYXQoamEpO3JldHVybiBqYTt9LGZh PWZ1bmN0aW9uKGphLGthKXt2YXIgbGE9ZWEoa2EubG9nX21lc3NhZ2VfZGF0YS5h ZGRlZF9wYXJ0aWNpcGFudHMpLG1hPW51bGwsbmE7aWYobGEubGVuZ3RoPT0xKXtt YT1ba2EuYXV0aG9yLGxhWzBdXTtvLmdldE11bHRpKG1hLGZ1bmN0aW9uKG9hKXtp ZihrYS5hdXRob3I9PW8udXNlcil7bmE9aS50eC5fKCJBbmRhIG1lbmFtYmFoa2Fu IHtzdWJzY3JpYmVyMX0uIix7c3Vic2NyaWJlcjE6Y2Eob2FbbGFbMF1dKX0pO31l bHNlIGlmKGxhWzBdPT1vLnVzZXIpe25hPWkudHguXygie2FjdG9yfSBtZW5hbWJh aGthbiBBbmRhLiIse2FjdG9yOmNhKG9hW2thLmF1dGhvcl0pfSk7fWVsc2UgbmE9 aS50eC5fKCJ7YWN0b3J9IG1lbmFtYmFoa2FuIHtzdWJzY3JpYmVyMX0uIix7YWN0 b3I6Y2Eob2Fba2EuYXV0aG9yXSksc3Vic2NyaWJlcjE6Y2Eob2FbbGFbMF1dKX0p O2kuc2V0Q29udGVudChqYSxuYSk7fSk7fWVsc2UgaWYobGEubGVuZ3RoPT0yKXtt YT1ba2EuYXV0aG9yXS5jb25jYXQobGEpO28uZ2V0TXVsdGkobWEsZnVuY3Rpb24o b2Epe2lmKGthLmF1dGhvcj09by51c2VyKXtuYT1pLnR4Ll8oIkFuZGEgbWVuYW1i YWhrYW4ge3N1YnNjcmliZXIxfSBkYW4ge3N1YnNjcmliZXIyfS4iLHtzdWJzY3Jp YmVyMTpjYShvYVtsYVswXV0pLHN1YnNjcmliZXIyOmNhKG9hW2xhWzFdXSl9KTt9 ZWxzZSBpZihsYVswXT09by51c2VyKXtuYT1pLnR4Ll8oInthY3Rvcn0gbWVuYW1i YWhrYW4gQW5kYSBkYW4ge3N1YnNjcmliZXIyfS4iLHthY3RvcjpjYShvYVtrYS5h dXRob3JdKSxzdWJzY3JpYmVyMjpjYShvYVtsYVsxXV0pfSk7fWVsc2UgbmE9aS50 eC5fKCJ7YWN0b3J9IG1lbmFtYmFoa2FuIHtzdWJzY3JpYmVyMX0gZGFuIHtzdWJz Y3JpYmVyMn0uIix7YWN0b3I6Y2Eob2Fba2EuYXV0aG9yXSksc3Vic2NyaWJlcjE6 Y2Eob2FbbGFbMF1dKSxzdWJzY3JpYmVyMjpjYShvYVtsYVsxXV0pfSk7aS5zZXRD b250ZW50KGphLG5hKTt9KTt9ZWxzZSBpZihsYS5sZW5ndGg9PTMpe21hPVtrYS5h dXRob3JdLmNvbmNhdChsYSk7by5nZXRNdWx0aShtYSxmdW5jdGlvbihvYSl7aWYo a2EuYXV0aG9yPT1vLnVzZXIpe25hPWkudHguXygiQW5kYSBtZW5hbWJhaGthbiB7 c3Vic2NyaWJlcjF9LCB7c3Vic2NyaWJlcjJ9LCBkYW4ge3N1YnNjcmliZXIzfS4i LHtzdWJzY3JpYmVyMTpjYShvYVtsYVswXV0pLHN1YnNjcmliZXIyOmNhKG9hW2xh WzFdXSksc3Vic2NyaWJlcjM6Y2Eob2FbbGFbMl1dKX0pO31lbHNlIGlmKGxhWzBd PT1vLnVzZXIpe25hPWkudHguXygie2FjdG9yfSBtZW5hbWJhaGthbiBBbmRhLCB7 c3Vic2NyaWJlcjJ9LCBkYW4ge3N1YnNjcmliZXIzfS4iLHthY3RvcjpjYShvYVtr YS5hdXRob3JdKSxzdWJzY3JpYmVyMjpjYShvYVtsYVsxXV0pLHN1YnNjcmliZXIz OmNhKG9hW2xhWzJdXSl9KTt9ZWxzZSBuYT1pLnR4Ll8oInthY3Rvcn0gbWVuYW1i YWhrYW4ge3N1YnNjcmliZXIxfSwge3N1YnNjcmliZXIyfSwgZGFuIHtzdWJzY3Jp YmVyM30uIix7YWN0b3I6Y2Eob2Fba2EuYXV0aG9yXSksc3Vic2NyaWJlcjE6Y2Eo b2FbbGFbMF1dKSxzdWJzY3JpYmVyMjpjYShvYVtsYVsxXV0pLHN1YnNjcmliZXIz OmNhKG9hW2xhWzJdXSl9KTtpLnNldENvbnRlbnQoamEsbmEpO30pO31lbHNle21h

PVtrYS5hdXRob3JdLmNvbmNhdChsYSk7by5nZXRNdWx0aShtYSxmdW5jdGlvbihv YSl7dmFyIHBhPWkudHguXygie251bX0gbGFpbm55YSIse251bTpsYS5sZW5ndGgt Mn0pLHFhPWkuY3JlYXRlKCdzcGFuJyx7Y2xhc3NOYW1lOidtb3JlJ30scGEpLHJh PWkuY3JlYXRlKCdkaXYnKTtzLnJlbmRlclRvb2x0aXBGbHlvdXQocmEsbGEuc2xp Y2UoMikubWFwKGZ1bmN0aW9uKHRhKXtyZXR1cm4gb2FbdGFdO30pKTtpZihrYS5h dXRob3I9PW8udXNlcil7bmE9aS50eC5fKCJBbmRhIG1lbmFtYmFoa2FuIHtzdWJz Y3JpYmVyMX0sIHtzdWJzY3JpYmVyMn0sIGRhbiB7bW9yZV9wZW9wbGV9LiIse3N1 YnNjcmliZXIxOmNhKG9hW2xhWzBdXSksc3Vic2NyaWJlcjI6Y2Eob2FbbGFbMV1d KSxtb3JlX3Blb3BsZTpxYX0pO31lbHNlIGlmKGxhWzBdPT1vLnVzZXIpe25hPWku dHguXygie2FjdG9yfSBtZW5hbWJhaGthbiBBbmRhLCB7c3Vic2NyaWJlcjJ9LCBk YW4ge21vcmVfcGVvcGxlfS4iLHthY3RvcjpjYShvYVtrYS5hdXRob3JdKSxzdWJz Y3JpYmVyMjpjYShvYVtsYVsxXV0pLG1vcmVfcGVvcGxlOnFhfSk7fWVsc2UgbmE9 aS50eC5fKCJ7YWN0b3J9IG1lbmFtYmFoa2FuIHtzdWJzY3JpYmVyMX0sIHtzdWJz Y3JpYmVyMn0sIGRhbiB7bW9yZV9wZW9wbGV9LiIse2FjdG9yOmNhKG9hW2thLmF1 dGhvcl0pLHN1YnNjcmliZXIxOmNhKG9hW2xhWzBdXSksc3Vic2NyaWJlcjI6Y2Eo b2FbbGFbMV1dKSxtb3JlX3Blb3BsZTpxYX0pO2kuc2V0Q29udGVudChqYSxuYSk7 dmFyIHNhPWouZmluZChqYSwnc3Bhbi5tb3JlJyk7cC5zZXQoc2EscmEsJ2Fib3Zl JywnY2VudGVyJyk7fSk7fX0sZ2E9ZnVuY3Rpb24oamEsa2Epe28uZ2V0KGthLmF1 dGhvcixmdW5jdGlvbihsYSl7dmFyIG1hO2lmKGthLmF1dGhvcj09by51c2VyKXtt YT1pLnR4Ll8oIkFuZGEgbWVuaW5nZ2Fsa2FuIHBlcmNha2FwYW4uIik7fWVsc2Ug bWE9aS50eC5fKCJ7YWN0b3J9IG1lbmluZ2dhbGthbiBwZXJjYWthcGFuLiIse2Fj dG9yOmNhKGxhKX0pO2kuc2V0Q29udGVudChqYSxtYSk7fSk7fSxoYT1mdW5jdGlv bihqYSxrYSl7dmFyIGxhPSJLYW1pIHRpZGFrIGJpc2EgbWVuZ2FtYmlsIHBlc2Fu IHNlYmVsdW1ueWEgZGFsYW0gcGVyY2FrYXBhbiBpbmkuIjtpLnNldENvbnRlbnQo amEsbGEpO30saWE9ZnVuY3Rpb24oamEpe3JldHVybiBqYS5sb2dfbWVzc2FnZV9k YXRhLmV2ZW50X25hbWU9PT0naW5zdGFsbGluZyd8fGphLmxvZ19tZXNzYWdlX2Rh dGEuZXZlbnRfbmFtZT09PSdpbnN0YWxsX2NhbmNlbGVkJzt9O2UuZXhwb3J0cz1z O30pOwpfX2QoIkNoYXRUYWJNZXNzYWdlc1ZpZXciLFsiZXZlbnQtZXh0ZW5zaW9u cyIsIkFyYml0ZXIiLCJBcmJpdGVyTWl4aW4iLCJNZXJjdXJ5QXR0YWNobWVudFJl bmRlcmVyIiwiQ2hhbm5lbENvbnN0YW50cyIsIkNoYXRDb25maWciLCJDaGF0VGFi SW5kaWNhdG9yTGluZSIsIkNoYXRWaXNpYmlsaXR5IiwiQ1NTIiwiRE9NIiwiRW1v dGUiLCJFbnYiLCJNZXJjdXJ5TWVzc2FnZXMiLCJNZXJjdXJ5VGhyZWFkTWV0YWRh dGFSZW5kZXJlciIsIk1lcmN1cnlUaHJlYWRzIiwiTWVyY3VyeU1lc3NhZ2VSZW5k ZXJlciIsIk1lcmN1cnlQYXJ0aWNpcGFudHMiLCJNZXJjdXJ5VGhyZWFkSW5mb3Jt ZXIiLCJUb29sdGlwIiwiVmlkZW9DYWxsQ29yZSIsImNvcHlQcm9wZXJ0aWVzIiwi aXNSVEwiLCJ0eCIsImRhdGUtZXh0ZW5zaW9ucyIsIkNoYXRUYWJUZW1wbGF0ZXMi LCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2 ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBcmJpdGVy TWl4aW4nKSxpPWIoJ01lcmN1cnlBdHRhY2htZW50UmVuZGVyZXInKSxqPWIoJ0No YW5uZWxDb25zdGFudHMnKSxrPWIoJ0NoYXRDb25maWcnKSxsPWIoJ0NoYXRUYWJJ bmRpY2F0b3JMaW5lJyksbT1iKCdDaGF0VmlzaWJpbGl0eScpLG49YignQ1NTJyks bz1iKCdET00nKSxwPWIoJ0Vtb3RlJykscT1iKCdFbnYnKSxyPWIoJ01lcmN1cnlN ZXNzYWdlcycpLHM9YignTWVyY3VyeVRocmVhZE1ldGFkYXRhUmVuZGVyZXInKSx0 PWIoJ01lcmN1cnlUaHJlYWRzJyksdT1iKCdNZXJjdXJ5TWVzc2FnZVJlbmRlcmVy Jyksdj1iKCdNZXJjdXJ5UGFydGljaXBhbnRzJyksdz1iKCdNZXJjdXJ5VGhyZWFk SW5mb3JtZXInKSx4PWIoJ1Rvb2x0aXAnKSx5PWIoJ1ZpZGVvQ2FsbENvcmUnKSx6 PWMoJ0NoYXRUYWJUZW1wbGF0ZXMnKSxhYT1jKCdNZXJjdXJ5Q29uc3RhbnRzJyks YmE9YignY29weVByb3BlcnRpZXMnKSxjYT1iKCdpc1JUTCcpLGRhPWIoJ3R4Jyk7 YignZGF0ZS1leHRlbnNpb25zJyk7ZnVuY3Rpb24gZWEocGEpe3JldHVybiBEYXRl LmZvcm1hdChrLmdldCgnMjRoX3RpbWVzJyk/J0g6aSc6J2c6aWEnLHBhLzEwMDAp O31mdW5jdGlvbiBmYShwYSl7dmFyIHFhPXpbJzpmYjpjaGF0OmNvbnZlcnNhdGlv bjptZXNzYWdlLWdyb3VwJ10uYnVpbGQoKTtxYS5zZXROb2RlQ29udGVudCgndGlt ZXN0YW1wJyxlYShwYS50aW1lc3RhbXApKTt2LmdldChwYS5hdXRob3IsZnVuY3Rp b24ocmEpe3ZhciBzYT1xYS5nZXROb2RlKCdwcm9maWxlTGluaycpO3NhLmhyZWY9 cmEuaHJlZjt2YXIgdGE9cmEuZmJpZD09cS51c2VyPyJBbmRhIjpyYS5uYW1lO3gu c2V0KHNhLHRhLCdsZWZ0Jyk7cWEuc2V0Tm9kZVByb3BlcnR5KCdwcm9maWxlUGhv dG8nLCdzcmMnLHJhLmltYWdlX3NyYyk7fSk7cmV0dXJuIHFhO31mdW5jdGlvbiBn YShwYSl7dmFyIHFhPXpbJzpmYjpjaGF0OmNvbnZlcnNhdGlvbjptZXNzYWdlOmV2 ZW50J10uYnVpbGQoKTtxYS5zZXROb2RlQ29udGVudCgndGltZXN0YW1wJyxlYShw YS50aW1lc3RhbXApKTt1LnJlbmRlckxvZ01lc3NhZ2UocWEuZ2V0Tm9kZSgnaWNv

bicpLHFhLmdldE5vZGUoJ21lc3NhZ2UnKSxxYS5nZXROb2RlKCdhdHRhY2htZW50 JykscGEpO3ZhciByYT1oYShwYSk7aWYocmEpby5hcHBlbmRDb250ZW50KHFhLmdl dE5vZGUoJ21lc3NhZ2UnKSxyYSk7cmV0dXJuIHFhLmdldFJvb3QoKTt9ZnVuY3Rp b24gaGEocGEpe3ZhciBxYSxyYTtpZihwYS5sb2dfbWVzc2FnZV90eXBlPT1hYS5N ZXJjdXJ5TG9nTWVzc2FnZVR5cGUuVklERU9fQ0FMTClpZihwYS5sb2dfbWVzc2Fn ZV9kYXRhLmV2ZW50X25hbWU9PSdpbnN0YWxsX2NhbmNlbGVkJyl7cWE9by50eC5f KCJDb2JhIGxhZ2kgcGVuZ2F0dXJhbiBkYW4gaHVidW5naSBrZW1iYWxpLiIpO3Jh PSdjYWxsYmFja19jYW5jZWxpbnN0YWxsX2xpbmsnO3JldHVybiBpYShxYSxwYS50 aHJlYWRfaWQscGEubG9nX21lc3NhZ2VfZGF0YS50byxyYSk7fWVsc2UgaWYoIXBh LmxvZ19tZXNzYWdlX2RhdGEuZXZlbnRfbmFtZSYmcGEubG9nX21lc3NhZ2VfZGF0 YS5jYWxsZWU9PXYudXNlciYmIXBhLmxvZ19tZXNzYWdlX2RhdGEuYW5zd2VyZWQp e3FhPW8udHguXygiVGVsZXBvbiBCYWxpayIpO3JhPSdjYWxsYmFja19saW5rJzty ZXR1cm4gaWEocWEscGEudGhyZWFkX2lkLHBhLmxvZ19tZXNzYWdlX2RhdGEuY2Fs bGVyLnNwbGl0KCc6JylbMV0scmEpO31yZXR1cm4gbnVsbDt9ZnVuY3Rpb24gaWEo cGEscWEscmEsc2Epe2lmKHkuaXNTdXBwb3J0ZWQoKSl7dmFyIHRhPSFtLmlzT25s aW5lKCl8fCF5LmF2YWlsYWJsZUZvckNhbGwocmEpLHVhPW8uY3JlYXRlKCdhJyx7 aHJlZjonIycsY2xhc3NOYW1lOidjYWxsQmFja0xpbmsnfSxwYSk7aWYodGEpbi5o aWRlKHVhKTt1YS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QnLEpTT04uc3RyaW5naWZ5 KHt2aWRlb2NoYXQ6J2NsaWNrZWRfY2FsbGJhY2tfbGluayd9KSk7RXZlbnQubGlz dGVuKHVhLCdjbGljaycsZnVuY3Rpb24oKXtuYS5pbmZvcm0oJ3ZpZGVvLWNhbGwt Y2xpY2tlZCcse3VzZXJJRDpyYSx0aHJlYWRJRDpxYSxjbGlja1NvdXJjZTpzYX0p O30pO3JldHVybiB1YTt9cmV0dXJuIG51bGw7fWZ1bmN0aW9uIGphKHBhKXt2YXIg cWE9elsnOmZiOm1lcmN1cnk6Y2hhdDptZXNzYWdlOmZvcndhcmQnXS5idWlsZCgp LHJhPXFhLmdldE5vZGUoJ2ZvcndhcmRUZXh0Jyk7aWYocmEpe24uaGlkZShxYS5n ZXRSb290KCkpO3MucmVuZGVyVGl0YW5MaW5rKHBhLnRocmVhZF9pZCxxYS5nZXRO b2RlKCdmb3J3YXJkTGluaycpLG4uc2hvdy5iaW5kKG4scWEuZ2V0Um9vdCgpKSk7 aWYocGEuZm9yd2FyZF9jb3VudD4xKXtvLmFwcGVuZENvbnRlbnQocmEsZGEuXygi e2NvdW50fSBwZXNhbiBkaXRlcnVza2FuIix7Y291bnQ6cGEuZm9yd2FyZF9jb3Vu dH0pKTt9ZWxzZSBvLmFwcGVuZENvbnRlbnQocmEsIjEgcGVzYW4geWFuZyBkaXRl cnVza2FuIik7fXJldHVybiBxYS5nZXRSb290KCk7fXZhciBrYT1bIkphbnVhcmki LCJGZWJydWFyaSIsIk1hcmV0IiwiQXByaWwiLCJNZWkiLCJKdW5pIiwiSnVsaSIs IkFndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXNl bWJlciJdO2Z1bmN0aW9uIGxhKHBhKXt2YXIgcWE9bmV3IERhdGUoKTtxYS5zZXRI b3VycygwKTtxYS5zZXRNaW51dGVzKDApO3FhLnNldFNlY29uZHMoMCk7cWEuc2V0 TWlsbGlzZWNvbmRzKDApO3ZhciByYT0yNCo2MCo2MCoxMDAwLHNhPXFhLmdldFRp bWUoKS1wYS5nZXRUaW1lKCk7aWYoc2E8PTApe3JldHVybiAiSGFyaSBJbmkiO31l bHNlIGlmKHNhPHJhKXJldHVybiAiS2VtYXJpbiI7cmV0dXJuIGRhLl8oIntkYXRl fSB7bW9udGh9Iix7bW9udGg6a2FbcGEuZ2V0TW9udGgoKV0sZGF0ZTpwYS5nZXRE YXRlKCl9KTt9dmFyIG1hPVtdO2Z1bmN0aW9uIG5hKHBhLHFhLHJhLHNhKXt0aGlz LnRocmVhZElEPXBhO3RoaXMuc2Nyb2xsQ29udGFpbmVyPXFhO3RoaXMuY29udmVy c2F0aW9uRWxlbT1yYTt0aGlzLm1lc3NhZ2VFbGVtZW50cz17fTt0aGlzLm1lc3Nh Z2VHcm91cD1udWxsO3RoaXMucHJldk1lc3NhZ2U9bnVsbDt2YXIgdGE9YWEuTWVy Y3VyeVRocmVhZGxpc3RDb25zdGFudHMuTUVTU0FHRV9USU1FU1RBTVBfVEhSRVNI T0xEO3RoaXMuX29sZGVyVGltZXN0YW1wPShuZXcgRGF0ZSgpKS5nZXRUaW1lKCkt dGE7bWEucHVzaCh0aGlzKTt0aGlzLl9zdWJzY3JpcHRpb249Zy5zdWJzY3JpYmUo J292ZXJmbG93LWFwcGxpZWQtdG8tYm9keScsdGhpcy5zY3JvbGxUb0JvdHRvbS5i aW5kKHRoaXMpKTtpZihzYSl0aGlzLmluZGljYXRvckxpbmU9bmV3IGwodGhpcy50 aHJlYWRJRCxzYSx0aGlzKTtyLmdldFRocmVhZE1lc3NhZ2VzUmFuZ2UodGhpcy50 aHJlYWRJRCwwLGFhLk1lcmN1cnlUaHJlYWRsaXN0Q29uc3RhbnRzLlJFQ0VOVF9N RVNTQUdFU19MSU1JVCxGdW5jdGlvbi5wcm90b3R5cGUpO3RoaXMucmVyZW5kZXIo KTt9YmEobmEsaCk7YmEobmEucHJvdG90eXBlLHtkZXN0cm95OmZ1bmN0aW9uKCl7 by5lbXB0eSh0aGlzLmNvbnZlcnNhdGlvbkVsZW0pO3RoaXMuX3N1YnNjcmlwdGlv bi51bnN1YnNjcmliZSgpO21hLnJlbW92ZSh0aGlzKTt0aGlzLmluZGljYXRvckxp bmUmJnRoaXMuaW5kaWNhdG9yTGluZS5kZXN0cm95KCk7dGhpcy5kZXN0cm95ZWQ9 dHJ1ZTt9LF9hcHBlbmRNZXNzYWdlOmZ1bmN0aW9uKHBhKXtpZihwYT09dGhpcy5w cmV2TWVzc2FnZSlyZXR1cm47dmFyIHFhPWFhLk1lcmN1cnlUaHJlYWRsaXN0Q29u c3RhbnRzLHJhPXFhLkdST1VQSU5HX1RIUkVTSE9MRCxzYT1wYS5hY3Rpb25fdHlw ZT09YWEuTWVyY3VyeUFjdGlvblR5cGUuTE9HX01FU1NBR0UmJnBhLmxvZ19tZXNz YWdlX3R5cGU9PWFhLk1lcmN1cnlMb2dNZXNzYWdlVHlwZS5TRVJWRVJfRVJST1I7 aWYocGEuaXNfY2xlYXJlZClyZXR1cm47dmFyIHRhPW51bGw7aWYodGhpcy5wcmV2

TWVzc2FnZSl0YT1uZXcgRGF0ZSh0aGlzLnByZXZNZXNzYWdlLnRpbWVzdGFtcCk7 dmFyIHVhPW5ldyBEYXRlKHBhLnRpbWVzdGFtcCk7aWYoIXNhJiYoIXRhfHx0YS5n ZXREYXRlKCkhPXVhLmdldERhdGUoKXx8dGEuZ2V0TW9udGgoKSE9dWEuZ2V0TW9u dGgoKXx8dGEuZ2V0RnVsbFllYXIoKSE9dWEuZ2V0RnVsbFllYXIoKSkpe3ZhciB2 YT16Wyc6ZmI6Y2hhdDpjb252ZXJzYXRpb246ZGF0ZS1icmVhayddLmJ1aWxkKCk7 by5zZXRDb250ZW50KHZhLmdldFJvb3QoKSxsYSh1YSkpO28uYXBwZW5kQ29udGVu dCh0aGlzLmNvbnZlcnNhdGlvbkVsZW0sdmEuZ2V0Um9vdCgpKTt0aGlzLm1lc3Nh Z2VHcm91cD1udWxsO31pZihwYS5hY3Rpb25fdHlwZT09YWEuTWVyY3VyeUFjdGlv blR5cGUuTE9HX01FU1NBR0Upe28uYXBwZW5kQ29udGVudCh0aGlzLmNvbnZlcnNh dGlvbkVsZW0sZ2EocGEpKTt0aGlzLm1lc3NhZ2VHcm91cD1udWxsO3RoaXMucHJl dk1lc3NhZ2U9cGE7cmV0dXJuO31pZighdGhpcy5tZXNzYWdlR3JvdXB8fHRoaXMu cHJldk1lc3NhZ2UuYXV0aG9yIT1wYS5hdXRob3J8fHRoaXMucHJldk1lc3NhZ2Uu dGltZXN0YW1wPHBhLnRpbWVzdGFtcC1yYSl7dGhpcy5tZXNzYWdlR3JvdXA9ZmEo cGEpO28uYXBwZW5kQ29udGVudCh0aGlzLmNvbnZlcnNhdGlvbkVsZW0sdGhpcy5t ZXNzYWdlR3JvdXAuZ2V0Um9vdCgpKTt9dmFyIHdhPXRoaXMuX3JlbmRlclNpbmds ZU1lc3NhZ2UocGEpO3RoaXMubWVzc2FnZUVsZW1lbnRzW3BhLm1lc3NhZ2VfaWRd PXdhO28uYXBwZW5kQ29udGVudCh0aGlzLm1lc3NhZ2VHcm91cC5nZXROb2RlKCdt ZXNzYWdlcycpLHdhKTt0aGlzLnByZXZNZXNzYWdlPXBhO30scmVyZW5kZXI6ZnVu Y3Rpb24oKXtvLmVtcHR5KHRoaXMuY29udmVyc2F0aW9uRWxlbSk7dGhpcy5tZXNz YWdlRWxlbWVudHM9e307dGhpcy5tZXNzYWdlR3JvdXA9bnVsbDt0aGlzLnByZXZN ZXNzYWdlPW51bGw7dmFyIHBhPXIuZ2V0VGhyZWFkTWVzc2FnZXNTaW5jZVRpbWVz dGFtcCh0aGlzLnRocmVhZElELHRoaXMuX29sZGVyVGltZXN0YW1wKTt0aGlzLl9h cHBlbmRNZXNzYWdlcyhwYSk7fSx1cGRhdGU6ZnVuY3Rpb24ocGEpe2Zvcih2YXIg cWEgaW4gcGEpe3ZhciByYT10aGlzLm1lc3NhZ2VFbGVtZW50c1txYV07aWYocmEp e3ZhciBzYT10aGlzLl9yZW5kZXJTaW5nbGVNZXNzYWdlKHIuZ2V0TWVzc2FnZXNG cm9tSURzKFtxYV0pWzBdKTt0aGlzLm1lc3NhZ2VFbGVtZW50c1txYV09c2E7by5y ZXBsYWNlKHJhLHNhKTt9fX0sX2FwcGVuZE1lc3NhZ2VzOmZ1bmN0aW9uKHBhKXtw YS5mb3JFYWNoKHRoaXMuX2FwcGVuZE1lc3NhZ2UuYmluZCh0aGlzKSk7dGhpcy5p bmRpY2F0b3JMaW5lJiZ0aGlzLmluZGljYXRvckxpbmUuc2V0TGFzdE1lc3NhZ2Uo dGhpcy5wcmV2TWVzc2FnZSk7dGhpcy5zY3JvbGxUb0JvdHRvbSgpO30saXNTY3Jv bGxlZFRvQm90dG9tOmZ1bmN0aW9uKCl7dmFyIHBhPXRoaXMuc2Nyb2xsQ29udGFp bmVyO3JldHVybiBwYS5zY3JvbGxUb3ArcGEuY2xpZW50SGVpZ2h0Pj1wYS5zY3Jv bGxIZWlnaHQ7fSxzY3JvbGxUb0JvdHRvbTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xs Q29udGFpbmVyLnNjcm9sbFRvcD10aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxI ZWlnaHQ7fSxfcmVuZGVyU2luZ2xlTWVzc2FnZTpmdW5jdGlvbihwYSl7dmFyIHFh PXpbJzpmYjpjaGF0OmNvbnZlcnNhdGlvbjptZXNzYWdlJ10ucmVuZGVyKCk7aWYo cGEuc3ViamVjdCl7dmFyIHJhPXpbJzpmYjpjaGF0OmNvbnZlcnNhdGlvbjptZXNz YWdlOnN1YmplY3QnXS5yZW5kZXIoKTtvLnNldENvbnRlbnQocmEscGEuc3ViamVj dCk7by5hcHBlbmRDb250ZW50KHFhLHJhKTt9aWYocGEuYm9keS5zdWJzdHIoMCw0 KT09Jz9PVFInKXtvLnNldENvbnRlbnQocWEsIltwZXNhbiBkaXNhbmRpa2FuXSIp O24uYWRkQ2xhc3MocWEsJ2N5cGhlcnRleHQnKTt9ZWxzZXtuLmFkZENsYXNzKHFh LGNhKHBhLmJvZHkpPydkaXJlY3Rpb25fcnRsJzonZGlyZWN0aW9uX2x0cicpO28u YXBwZW5kQ29udGVudChxYSx1LmZvcm1hdE1lc3NhZ2VCb2R5KHBhLmJvZHkpKTt9 aWYocGEuaGFzX2F0dGFjaG1lbnQpdGhpcy5fYXBwZW5kTWVzc2FnZUF0dGFjaG1l bnRzKHFhLHBhKTtpZihwYS5mb3J3YXJkX2NvdW50KW8uYXBwZW5kQ29udGVudChx YSxqYShwYSkpO3ZhciBzYT1zLnJlbmRlclN0YXR1c0luZGljYXRvcihwYS5zdGF0 dXMsci5yZXNlbmRNZXNzYWdlLmJpbmQocixwYSkpO2lmKHNhKXtuLmFkZENsYXNz KHFhLCdlcnJvclN0YXR1cycpO3ZhciB0YT16Wyc6ZmI6Y2hhdDpjb252ZXJzYXRp b246bWVzc2FnZTpzdGF0dXMnXS5idWlsZCgpO28uYXBwZW5kQ29udGVudCh0YS5n ZXROb2RlKCdtZXNzYWdlJykscWEpO28uYXBwZW5kQ29udGVudCh0YS5nZXROb2Rl KCdzdGF0dXMnKSxzYSk7cmV0dXJuIHRhLmdldFJvb3QoKTt9cmV0dXJuIHFhO30s X2FwcGVuZE1lc3NhZ2VBdHRhY2htZW50czpmdW5jdGlvbihwYSxxYSl7dmFyIHJh PWFhLk1lcmN1cnlBdHRhY2htZW50VHlwZSxzYT1xYS5hdHRhY2htZW50cztmb3Io dmFyIHRhPTAsdWE9c2EubGVuZ3RoO3RhPHVhOysrdGEpe3ZhciB2YT1zYVt0YV0s d2E9dmEuYXR0YWNoX3R5cGUseGE9dmEuc2hhcmVfZGF0YV90eXBlO2lmKHdhPT1y YS5FUlJPUilvLmFwcGVuZENvbnRlbnQocGEsaS5yZW5kZXJFcnJvcih2YSkpO2lm KHdhPT1yYS5GSUxFKW8uYXBwZW5kQ29udGVudChwYSxpLnJlbmRlckZpbGVMaW5r KHZhKSk7dmFyIHlhPW51bGwsemE7aWYod2E9PXJhLlNIQVJFJiZ4YT09YWEuTWVy Y3VyeVN1cHBvcnRlZFNoYXJlVHlwZS5GQl9WSURFTyl7eWE9aS5yZW5kZXJWaWRl b1RodW1iKHZhKTt6YT1vLmZpbmQoeWEsJ2ltZycpO0V2ZW50Lmxpc3Rlbih6YSwn

bG9hZCcsdGhpcy5fdGh1bWJMb2FkZWQuc2hpZWxkKHRoaXMsemEpKTt9ZWxzZSBp Zih3YT09cmEuU0hBUkUmJih4YT09YWEuTWVyY3VyeVN1cHBvcnRlZFNoYXJlVHlw ZS5GQl9NVVNJQ19BTEJVTXx8eGE9PWFhLk1lcmN1cnlTdXBwb3J0ZWRTaGFyZVR5 cGUuRkJfU09ORykpe3lhPWkucmVuZGVyTXVzaWModmEpO3phPW8uZmluZCh5YSwn aW1nJyk7RXZlbnQubGlzdGVuKHphLCdsb2FkJyx0aGlzLl90aHVtYkxvYWRlZC5z aGllbGQodGhpcyx6YSkpO31lbHNlIGlmKHdhPT1yYS5TSEFSRSYmKHhhPT1hYS5N ZXJjdXJ5U3VwcG9ydGVkU2hhcmVUeXBlLkVYVEVSTkFMfHx4YT09YWEuTWVyY3Vy eVN1cHBvcnRlZFNoYXJlVHlwZS5GQl9URU1QTEFURSkpe3lhPWkucmVuZGVyRXh0 ZXJuYWxMaW5rKHZhKTt6YT1vLmZpbmQoeWEsJ2ltZycpO0V2ZW50Lmxpc3Rlbih6 YSwnbG9hZCcsdGhpcy5fdGh1bWJMb2FkZWQuc2hpZWxkKHRoaXMsemEpKTt9ZWxz ZSBpZih2YS5wcmV2aWV3X3VybCl7di5nZXQocWEuYXV0aG9yLGZ1bmN0aW9uKGFi KXt2YXIgYmI9di5nZXRVc2VySUQoYWIuaWQpO3lhPWkucmVuZGVyUHJldmlldyh2 YSwwLG51bGwscWEsYWIsYmIpO3phPW8uZmluZCh5YSwnaW1nJyk7RXZlbnQubGlz dGVuKHphLCdsb2FkJyx0aGlzLl90aHVtYkxvYWRlZC5zaGllbGQodGhpcyx6YSkp O30uYmluZCh0aGlzKSk7fWVsc2UgaWYod2E9PXJhLlNIQVJFKXlhPWkucmVuZGVy U2hhcmVMaW5rKHZhKTtpZih5YSlvLmFwcGVuZENvbnRlbnQocGEseWEpO319LF90 aHVtYkxvYWRlZDpmdW5jdGlvbihwYSl7dmFyIHFhPXRoaXMuc2Nyb2xsQ29udGFp bmVyLnNjcm9sbFRvcCt0aGlzLnNjcm9sbENvbnRhaW5lci5jbGllbnRIZWlnaHQ7 aWYocWErcGEub2Zmc2V0SGVpZ2h0Pj10aGlzLnNjcm9sbENvbnRhaW5lci5zY3Jv bGxIZWlnaHQpdGhpcy5zY3JvbGxUb0JvdHRvbSgpO319KTt3LnN1YnNjcmliZSgn bWVzc2FnZXMtcmVvcmRlcmVkJyxmdW5jdGlvbihwYSxxYSl7bWEuZm9yRWFjaChm dW5jdGlvbihyYSl7cWFbcmEudGhyZWFkSURdJiZyYS5yZXJlbmRlcigpO30pO30p O3cuc3Vic2NyaWJlKCdtZXNzYWdlcy11cGRhdGVkJyxmdW5jdGlvbihwYSxxYSl7 bWEuZm9yRWFjaChmdW5jdGlvbihyYSl7cWFbcmEudGhyZWFkSURdJiZyYS51cGRh dGUocWFbcmEudGhyZWFkSURdKTt9KTt9KTt3LnN1YnNjcmliZSgnbWVzc2FnZXMt cmVjZWl2ZWQnLGZ1bmN0aW9uKHBhLHFhKXttYS5mb3JFYWNoKGZ1bmN0aW9uKHJh KXt2YXIgc2E9cWFbcmEudGhyZWFkSURdO3NhJiZyYS5fYXBwZW5kTWVzc2FnZXMo c2EpO30pO30pO2cuc3Vic2NyaWJlKGouZ2V0QXJiaXRlclR5cGUoJ2NoYXRfZXZl bnQnKSxmdW5jdGlvbihwYSxxYSl7aWYob2EocWEub2JqKSl7dmFyIHJhPShxLnVz ZXI9PXFhLm9iai5mcm9tKT9xYS5vYmoudG86cWEub2JqLmZyb20sc2E9dC5nZXRU aHJlYWRJZEZvclVzZXIocmEpLHRhPW1hLmZpbHRlcihmdW5jdGlvbih3YSl7cmV0 dXJuIHdhLnRocmVhZElEPT09c2E7fSk7aWYodGEubGVuZ3RoPjApe3ZhciB1YT10 YVswXSx2YT1yLmNvbnN0cnVjdExvZ01lc3NhZ2VPYmplY3QoYWEuTWVyY3VyeVNv dXJjZVR5cGUuQ0hBVF9XRUIsc2EsYWEuTWVyY3VyeUxvZ01lc3NhZ2VUeXBlLlZJ REVPX0NBTEwscWEub2JqKTt2YS5hdXRob3I9J2ZiaWQ6JytxYS5vYmouZnJvbTt1 YS5fYXBwZW5kTWVzc2FnZXMoW3ZhXSk7fX19KTtmdW5jdGlvbiBvYShwYSl7cmV0 dXJuIChwYS5ldmVudF9uYW1lPT09J2luc3RhbGxpbmcnfHxwYS5ldmVudF9uYW1l PT09J2luc3RhbGxfY2FuY2VsZWQnKTt9ZS5leHBvcnRzPW5hO30pOwpfX2QoIkNo YXRUYWJTaGVldFBvbGljeSIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PXtjYW5SZXBsYWNlT3BlblNoZWV0OmZ1bmN0aW9uKGgsaSl7aWYoaC5nZXRUeXBl KCk9PWkuZ2V0VHlwZSgpKXJldHVybiBmYWxzZTtpZihoLmlzUGVybWFuZW50KCkm JiFpLmlzUGVybWFuZW50KCkpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlO319O2Uu ZXhwb3J0cz1nO30pOwpfX2QoIkNoYXRUYWJTaGVldFZpZXciLFsiZXZlbnQtZXh0 ZW5zaW9ucyIsIkFuaW1hdGlvbiIsIkNoYXRUYWJTaGVldFBvbGljeSIsIkNTUyIs IkRPTSIsIlN0eWxlIiwiVmVjdG9yIiwiY29weVByb3BlcnRpZXMiLCJDaGF0VGFi VGVtcGxhdGVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVu c2lvbnMnKTt2YXIgZz1iKCdBbmltYXRpb24nKSxoPWIoJ0NoYXRUYWJTaGVldFBv bGljeScpLGk9YignQ1NTJyksaj1iKCdET00nKSxrPWIoJ1N0eWxlJyksbD1iKCdW ZWN0b3InKSxtPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbj1jKCdDaGF0VGFiVGVtcGxh dGVzJyksbz01MDAwLHA9ZnVuY3Rpb24ocSxyLHMpe3RoaXMuX3RocmVhZElEPXE7 dGhpcy5fcm9vdEVsZW1lbnQ9cjt0aGlzLl90YWJNYWluRWxlbWVudD1zO3RoaXMu X29wZW5TaGVldD1udWxsO307bShwLnByb3RvdHlwZSx7ZGVzdHJveTpmdW5jdGlv bigpe2ouZW1wdHkodGhpcy5fcm9vdEVsZW1lbnQpO30sX29wZW5Db21tb246ZnVu Y3Rpb24ocSxyKXtpZih0aGlzLl9vcGVuU2hlZXQmJiFoLmNhblJlcGxhY2VPcGVu U2hlZXQodGhpcy5fb3BlblNoZWV0LHEpKXJldHVybjt0aGlzLmNsZWFyKGZ1bmN0 aW9uKCl7dGhpcy5fb3BlblNoZWV0PXE7dmFyIHM9blsnOmZiOm1lcmN1cnk6Y2hh dDp0YWItc2hlZXQ6bG9hZGluZyddLmJ1aWxkKCkuZ2V0Um9vdCgpO2ouc2V0Q29u dGVudCh0aGlzLl9yb290RWxlbWVudCxzKTtpLnNob3cocyk7aS5zaG93KHRoaXMu X3Jvb3RFbGVtZW50KTtxLnJlbmRlcigpO2lmKHIpe2kuYWRkQ2xhc3ModGhpcy5f dGFiTWFpbkVsZW1lbnQsJ3NoZWV0U2xpZGUnKTt2YXIgdD1sLmdldEVsZW1lbnRE

aW1lbnNpb25zKHRoaXMuX3Jvb3RFbGVtZW50KS55O2suc2V0KHRoaXMuX3Jvb3RF bGVtZW50LCdib3R0b20nLHQrJ3B4Jyk7dGhpcy5fYW5pbWF0aW9uPW5ldyBnKHRo aXMuX3Jvb3RFbGVtZW50KS50bygnYm90dG9tJywwKS5kdXJhdGlvbigxNTApLmVh c2UoZy5lYXNlLmJvdGgpLm9uZG9uZShmdW5jdGlvbigpe2kucmVtb3ZlQ2xhc3Mo dGhpcy5fdGFiTWFpbkVsZW1lbnQsJ3NoZWV0U2xpZGUnKTt9LmJpbmQodGhpcykp LmdvKCk7fWlmKCFxLmlzUGVybWFuZW50KCkpe3ZhciB1PW87aWYocS5nZXRDbG9z ZVRpbWVvdXQpdT1xLmdldENsb3NlVGltZW91dCgpO3RoaXMuX3NoZWV0Q2xvc2VI YW5kbGVyPXRoaXMuY2xvc2UuYmluZCh0aGlzLHEpLmRlZmVyKHUsZmFsc2UpO319 LmJpbmQodGhpcykpO30sc2V0OmZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLl9vcGVu Q29tbW9uKHEsZmFsc2UpO30sb3BlbjpmdW5jdGlvbihxKXtyZXR1cm4gdGhpcy5f b3BlbkNvbW1vbihxLHRydWUpO30sY2xvc2U6ZnVuY3Rpb24ocSxyKXtpZih0aGlz Ll9vcGVuU2hlZXQhPXEpcmV0dXJuO2lmKCF0aGlzLl9vcGVuU2hlZXQpe3ImJnIo KTtyZXR1cm47fWlmKHRoaXMuX2FuaW1hdGlvbil0aGlzLl9hbmltYXRpb24uc3Rv cCgpO2lmKHRoaXMuX3NoZWV0Q2xvc2VIYW5kbGVyKXtjbGVhclRpbWVvdXQodGhp cy5fc2hlZXRDbG9zZUhhbmRsZXIpO3RoaXMuX3NoZWV0Q2xvc2VIYW5kbGVyPW51 bGw7fWkuYWRkQ2xhc3ModGhpcy5fdGFiTWFpbkVsZW1lbnQsJ3NoZWV0U2xpZGUn KTt2YXIgcz1sLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuX3Jvb3RFbGVtZW50 KS55O3RoaXMuX2FuaW1hdGlvbj1uZXcgZyh0aGlzLl9yb290RWxlbWVudCkudG8o J2JvdHRvbScscysncHgnKS5kdXJhdGlvbigxMDApLmVhc2UoZy5lYXNlLmJlZ2lu KS5vbmRvbmUoZnVuY3Rpb24oKXtqLmVtcHR5KHRoaXMuX3Jvb3RFbGVtZW50KTtp LmhpZGUodGhpcy5fcm9vdEVsZW1lbnQpO2kucmVtb3ZlQ2xhc3ModGhpcy5fdGFi TWFpbkVsZW1lbnQsJ3NoZWV0U2xpZGUnKTt0aGlzLl9vcGVuU2hlZXQ9bnVsbDty JiZyKCk7fS5iaW5kKHRoaXMpKS5nbygpO30sY2xlYXI6ZnVuY3Rpb24ocSl7dGhp cy5jbG9zZSh0aGlzLl9vcGVuU2hlZXQscSk7fX0pO2UuZXhwb3J0cz1wO30pOwpf X2QoIk1lcmN1cnlUeXBlYWhlYWQiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0 ZXJNaXhpbiIsIkRPTSIsIkVudiIsIklucHV0IiwiVG9rZW5pemVyIiwiVHlwZWFo ZWFkIiwiVHlwZWFoZWFkQ29yZSIsImNvcHlQcm9wZXJ0aWVzIiwiTWVyY3VyeVR5 cGVhaGVhZFRlbXBsYXRlcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVu dC1leHRlbnNpb25zJyk7dmFyIGc9YignQXJiaXRlck1peGluJyksaD1iKCdET00n KSxpPWIoJ0VudicpLGo9YignSW5wdXQnKSxrPWIoJ1Rva2VuaXplcicpLGw9Yign VHlwZWFoZWFkJyksbT1iKCdUeXBlYWhlYWRDb3JlJyksbj1iKCdjb3B5UHJvcGVy dGllcycpLG89YygnTWVyY3VyeVR5cGVhaGVhZFRlbXBsYXRlcycpLHA9ZnVuY3Rp b24ocSxyKXt0aGlzLl9kb21FbGVtZW50PW51bGw7dGhpcy5fdHlwZWFoZWFkPW51 bGw7dGhpcy5fdG9rZW5pemVyPW51bGw7dGhpcy5fcGxhY2Vob2xkZXI9Jyc7dGhp cy5fZXhjbHVzaW9ucz1bXTt0aGlzLl92aWV3Tm9kZUlEPW51bGw7dGhpcy5fdmll d09wdGlvbnM9e3JlbmRlcmVyOidjb21wYWN0JyxhdXRvU2VsZWN0OnRydWV9O3Ro aXMuX3Rva2VuaXplckJlaGF2aW9ycz1bXTt0aGlzLl9kYXRhU291cmNlPXE7dGhp cy5fdmlldz1yO307bihwLnByb3RvdHlwZSxnKTtuKHAucHJvdG90eXBlLHtzZXRQ bGFjZWhvbGRlcjpmdW5jdGlvbihxKXt0aGlzLl9wbGFjZWhvbGRlcj1xO3JldHVy biB0aGlzO30sc2V0RXhjbHVkZWRQYXJ0aWNpcGFudHM6ZnVuY3Rpb24ocSl7dGhp cy5fZXhjbHVzaW9ucz1bXTtxLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIHM9ci5p bmRleE9mKCc6Jyk7aWYoci5zdWJzdHIoMCxzKT09J2ZiaWQnKXRoaXMuX2V4Y2x1 c2lvbnMucHVzaChyLnN1YnN0cihzKzEpKTt9LmJpbmQodGhpcykpO3JldHVybiB0 aGlzO30sc2V0Vmlld05vZGVJRDpmdW5jdGlvbihxKXt0aGlzLl92aWV3Tm9kZUlE PXE7fSxzZXRWaWV3T3B0aW9uOmZ1bmN0aW9uKHEscil7dGhpcy5fdmlld09wdGlv bnNbcV09cjt9LGFkZFRva2VuaXplckJlaGF2aW9yOmZ1bmN0aW9uKHEpe3RoaXMu X3Rva2VuaXplckJlaGF2aW9ycy5wdXNoKHEpO30sYnVpbGQ6ZnVuY3Rpb24ocSl7 aWYodGhpcy5fZG9tRWxlbWVudClyZXR1cm47dmFyIHI9b1snOmZiOm1lcmN1cnk6 dG9rZW5pemVyJ10uYnVpbGQoKSxzPW9bJzpmYjptZXJjdXJ5OnR5cGVhaGVhZCdd LmJ1aWxkKCk7dGhpcy5fZG9tRWxlbWVudD1yLmdldFJvb3QoKTtoLmFwcGVuZENv bnRlbnQodGhpcy5fZG9tRWxlbWVudCxzLmdldFJvb3QoKSk7dmFyIHQ9cy5nZXRO b2RlKCd0ZXh0ZmllbGQnKTtqLnNldFBsYWNlaG9sZGVyKHQsdGhpcy5fcGxhY2Vo b2xkZXIpO3Quc2V0QXR0cmlidXRlKCdkYXRhLXBsYWNlaG9sZGVyJyx0aGlzLl9w bGFjZWhvbGRlcik7dmFyIHU9e25vZGVfaWQ6dGhpcy5fdmlld05vZGVJRCxjdG9y OnRoaXMuX3ZpZXcsb3B0aW9uczp0aGlzLl92aWV3T3B0aW9uc30sdj17Y3Rvcjpt LG9wdGlvbnM6e3NldFZhbHVlT25TZWxlY3Q6dHJ1ZX19O3RoaXMuX3R5cGVhaGVh ZD1uZXcgbCh0aGlzLl9kYXRhU291cmNlLHUsdixzLmdldFJvb3QoKSk7dGhpcy5f dHlwZWFoZWFkLmluaXQoKTt2YXIgdz17aW5saW5lOnRydWUsYmVoYXZpb3JzOnRo aXMuX3Rva2VuaXplckJlaGF2aW9yc307dGhpcy5fdG9rZW5pemVyPW5ldyBrKHRo aXMuX2RvbUVsZW1lbnQsdGhpcy5fdHlwZWFoZWFkKTt0aGlzLl90b2tlbml6ZXIu

aW5pdChyLmdldE5vZGUoJ3Rva2VuYXJlYScpLCdwYXJ0aWNpcGFudHMnLFtdLHcp O3RoaXMuX3Rva2VuaXplci5zdWJzY3JpYmUoWydhZGRUb2tlbicsJ3JlbW92ZVRv a2VuJywncmVtb3ZlQWxsVG9rZW5zJ10sZnVuY3Rpb24oKXt0aGlzLmluZm9ybSgn dG9rZW5zLWNoYW5nZWQnKTt9LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0LCdm b2N1cycsZnVuY3Rpb24oKXt0aGlzLl9yZXNldERhdGFTb3VyY2UoKTt0aGlzLl90 eXBlYWhlYWQuaW5pdCgpO30uYmluZCh0aGlzKSk7RXZlbnQubGlzdGVuKHRoaXMu X2RvbUVsZW1lbnQsJ2NsaWNrJyx0aGlzLmZvY3VzLmJpbmQodGhpcykpO30sZ2V0 RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb21FbGVtZW50O30sZ2V0 U2VsZWN0ZWRQYXJ0aWNpcGFudElEczpmdW5jdGlvbigpe3ZhciBxPVtdO2lmKHRo aXMuX3Rva2VuaXplcikodGhpcy5fdG9rZW5pemVyLmdldFRva2VuVmFsdWVzKCl8 fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3EucHVzaCgnZmJpZDonK3IpO30pO3Jl dHVybiBxO30sZ2V0VG9rZW5zOmZ1bmN0aW9uKCl7dmFyIHE9W107aWYodGhpcy5f dG9rZW5pemVyKXE9dGhpcy5fdG9rZW5pemVyLmdldFRva2VucygpO3JldHVybiBx O30sZ2V0VG9rZW5pemVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rva2VuaXpl cjt9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fdG9rZW5pemVyJiZ0aGlzLl90b2tl bml6ZXIucmVtb3ZlQWxsVG9rZW5zKCk7dGhpcy5fdHlwZWFoZWFkJiZ0aGlzLl90 eXBlYWhlYWQuZ2V0Q29yZSgpLnJlc2V0KCk7fSxmb2N1czpmdW5jdGlvbigpe3Ro aXMuX3Rva2VuaXplciYmdGhpcy5fdG9rZW5pemVyLmZvY3VzSW5wdXQoKTt9LGdl dFR5cGVhaGVhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90eXBlYWhlYWQ7fSxf cmVzZXREYXRhU291cmNlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YVNvdXJjZS5zZXRF eGNsdXNpb25zKHRoaXMuX2V4Y2x1c2lvbnMpO319KTtlLmV4cG9ydHM9cDt9KTsK X19kKCJDaGF0QWRkRnJpZW5kc1RhYlNoZWV0UmF3UmVuZGVyZXIiLFsiZXZlbnQt ZXh0ZW5zaW9ucyIsIkRPTSIsIkNvbnRleHR1YWxUeXBlYWhlYWRWaWV3IiwiTWVy Y3VyeVR5cGVhaGVhZCIsInR4IiwiTWVyY3VyeURhdGFTb3VyY2VXcmFwcGVyIiwi Q2hhdFRhYlRlbXBsYXRlcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVu dC1leHRlbnNpb25zJyk7dmFyIGc9YignRE9NJyksaD1iKCdDb250ZXh0dWFsVHlw ZWFoZWFkVmlldycpLGk9YignTWVyY3VyeVR5cGVhaGVhZCcpLGo9YygnTWVyY3Vy eURhdGFTb3VyY2VXcmFwcGVyJykuc291cmNlLGs9YygnQ2hhdFRhYlRlbXBsYXRl cycpLGw9YigndHgnKSxtPXtyZW5kZXI6ZnVuY3Rpb24obixvLHAscSxyKXt2YXIg cz1rWyc6ZmI6bWVyY3VyeTpjaGF0OnRhYi1zaGVldDphZGQtZnJpZW5kcyddLmJ1 aWxkKCksdD1uZXcgaShqLGgpO3Quc2V0RXhjbHVkZWRQYXJ0aWNpcGFudHMocS5w YXJ0aWNpcGFudHMpO3Quc2V0UGxhY2Vob2xkZXIoIk1hc3Vra2FuIG5hbWEgdGVt YW4iKTt0LmJ1aWxkKCk7Zy5yZXBsYWNlKHMuZ2V0Tm9kZSgncGFydGljaXBhbnRz VHlwZWFoZWFkJyksdC5nZXRFbGVtZW50KCkpO2cuc2V0Q29udGVudChwLHMuZ2V0 Um9vdCgpKTt0LmZvY3VzKCk7dmFyIHU9ZnVuY3Rpb24oKXt2YXIgdj10LmdldFNl bGVjdGVkUGFydGljaXBhbnRJRHMoKTtpZih2Lmxlbmd0aClyKHYpO28uY2xvc2Uo bik7fTtFdmVudC5saXN0ZW4ocy5nZXROb2RlKCdkb25lQnV0dG9uJyksJ2NsaWNr Jyx1KTt9fTtlLmV4cG9ydHM9bTt9KTsKX19kKCJNdWx0aUNoYXRDb250cm9sbGVy IixbIkFyYml0ZXIiLCJBc3luY1NpZ25hbCIsImNvcHlQcm9wZXJ0aWVzIiwiRm9y bSIsIk1lcmN1cnlNZXNzYWdlcyIsIk1lcmN1cnlTZXJ2ZXJSZXF1ZXN0cyIsIk1l cmN1cnlUaHJlYWRzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Fy Yml0ZXInKSxoPWIoJ0FzeW5jU2lnbmFsJyksaT1iKCdjb3B5UHJvcGVydGllcycp LGo9YignRm9ybScpLGs9YignTWVyY3VyeU1lc3NhZ2VzJyksbD1iKCdNZXJjdXJ5 U2VydmVyUmVxdWVzdHMnKSxtPWIoJ01lcmN1cnlUaHJlYWRzJyk7ZnVuY3Rpb24g bigpe31pKG4se3N1YnNjcmliZTpmdW5jdGlvbihvLHApe28uc3Vic2NyaWJlKCdj b25maXJtJyxmdW5jdGlvbigpe3RoaXMuY3JlYXRlR3JvdXBUaHJlYWRGcm9tQ2hv b3NlckRpYWxvZyhvLHApO30uYmluZCh0aGlzKSk7fSxjcmVhdGVHcm91cFRocmVh ZEZyb21DaG9vc2VyRGlhbG9nOmZ1bmN0aW9uKG8scCl7dmFyIHE9ai5zZXJpYWxp emUoby5nZXRSb290KCkpLHI9SlNPTi5wYXJzZShxLnByb2ZpbGVDaG9vc2VySXRl bXMpLHM9W107Zm9yKHZhciB0IGluIHIpaWYoclt0XSlzLnB1c2godCk7dmFyIHU9 bi5jcmVhdGVUaHJlYWRGb3JGQklEcyhzKTtsLnN1YnNjcmliZSgndXBkYXRlLXRo cmVhZC1pZHMnLGZ1bmN0aW9uKHYsdyl7Zm9yKHZhciB4IGluIHcpaWYod1t4XT09 dSluZXcgaCgnL2FqYXgvZ3JvdXBzL2NoYXQvbG9nJyx7Z3JvdXBfaWQ6cCxtZXNz YWdlX2lkOnh9KS5zZW5kKCk7fSk7by5oaWRlKCk7fSxjcmVhdGVUaHJlYWRGb3JU b2tlbnM6ZnVuY3Rpb24obyl7aWYoIW8ubGVuZ3RoKXJldHVybjt2YXIgcDtpZihv Lmxlbmd0aD09MSl7cD0ndXNlcjonK29bMF0uc3BsaXQoJzonKVsxXTt9ZWxzZSBw PSdyb290Oicray5nZW5lcmF0ZU5ld0NsaWVudE1lc3NhZ2VJRCgobmV3IERhdGUo KSkuZ2V0VGltZSgpKTttLmNyZWF0ZU5ld0xvY2FsVGhyZWFkKHAsbyk7Zy5pbmZv cm0oJ2NoYXQvb3Blbi10YWInLHt0aHJlYWRfaWQ6cH0pO3JldHVybiBwO30sY3Jl YXRlVGhyZWFkRm9yRkJJRHM6ZnVuY3Rpb24obyl7dmFyIHA9W107Zm9yKHZhciBx

PTA7cTxvLmxlbmd0aDtxKyspcC5wdXNoKCJmYmlkOiIrb1txXSk7cmV0dXJuIG4u Y3JlYXRlVGhyZWFkRm9yVG9rZW5zKHApO319KTtlLmV4cG9ydHM9bjt9KTsKX19k KCJDaGF0QWRkRnJpZW5kc1RhYlNoZWV0IixbIkNoYXRUYWJTaGVldFZpZXciLCJD aGF0QWRkRnJpZW5kc1RhYlNoZWV0UmF3UmVuZGVyZXIiLCJNZXJjdXJ5TWVzc2Fn ZXMiLCJNdWx0aUNoYXRDb250cm9sbGVyIiwiTWVyY3VyeVNlcnZlclJlcXVlc3Rz IiwiTWVyY3VyeVRocmVhZHMiLCJjb3B5UHJvcGVydGllcyIsIk1lcmN1cnlDb25z dGFudHMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ2hhdFRhYlNo ZWV0VmlldycpLGg9YignQ2hhdEFkZEZyaWVuZHNUYWJTaGVldFJhd1JlbmRlcmVy JyksaT1iKCdNZXJjdXJ5TWVzc2FnZXMnKSxqPWIoJ011bHRpQ2hhdENvbnRyb2xs ZXInKSxrPWIoJ01lcmN1cnlTZXJ2ZXJSZXF1ZXN0cycpLGw9YignTWVyY3VyeVRo cmVhZHMnKSxtPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbj1jKCdNZXJjdXJ5Q29uc3Rh bnRzJyk7ZnVuY3Rpb24gbyhyLHMsdCl7dGhpcy5fdGhyZWFkSUQ9cjt0aGlzLl9y b290RWxlbWVudD1zO3RoaXMuX3NoZWV0Vmlldz10O31tKG8ucHJvdG90eXBlLHty ZW5kZXI6ZnVuY3Rpb24oKXtsLmdldFRocmVhZE1ldGEodGhpcy5fdGhyZWFkSUQs ZnVuY3Rpb24ocil7dmFyIHM9ci5pc19jYW5vbmljYWxfdXNlcj9wOnE7aC5yZW5k ZXIodGhpcyx0aGlzLl9zaGVldFZpZXcsdGhpcy5fcm9vdEVsZW1lbnQscixzLmN1 cnJ5KHIpKTt9LmJpbmQodGhpcykpO30saXNQZXJtYW5lbnQ6ZnVuY3Rpb24oKXty ZXR1cm4gdHJ1ZTt9LGdldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gJ2FkZF9mcmll bmRzX3R5cGUnO30sb3BlbjpmdW5jdGlvbigpe3RoaXMuX3NoZWV0Vmlldy5vcGVu KHRoaXMpO319KTtmdW5jdGlvbiBwKHIscyl7dmFyIHQ9ci5wYXJ0aWNpcGFudHM7 ai5jcmVhdGVUaHJlYWRGb3JUb2tlbnModC5jb25jYXQocykpO31mdW5jdGlvbiBx KHIscyl7dmFyIHQ9ci50aHJlYWRfaWQ7aWYobC5pc0VtcHR5TG9jYWxUaHJlYWQo dCkpe2wuYWRkUGFydGljaXBhbnRzVG9UaHJlYWRMb2NhbGx5KHQscyk7fWVsc2Ug aS5zZW5kTWVzc2FnZShpLmNvbnN0cnVjdExvZ01lc3NhZ2VPYmplY3Qobi5NZXJj dXJ5U291cmNlVHlwZS5DSEFUX1dFQix0LG4uTWVyY3VyeUxvZ01lc3NhZ2VUeXBl LlNVQlNDUklCRSx7YWRkZWRfcGFydGljaXBhbnRzOnN9KSk7fWUuZXhwb3J0cz1v O30pOwpfX2QoIkNoYXRBdmFpbGFiaWxpdHlUYWJTaGVldFJhd1JlbmRlcmVyIixb IkF2YWlsYWJsZUxpc3RDb25zdGFudHMiLCJHZW5kZXJDb25zdCIsIkNTUyIsIkRP TSIsIkNoYXRUYWJUZW1wbGF0ZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignQXZhaWxhYmxlTGlzdENvbnN0YW50cycpLGg9YignR2VuZGVyQ29uc3Qn KSxpPWMoJ0NoYXRUYWJUZW1wbGF0ZXMnKSxqPWIoJ0NTUycpLGs9YignRE9NJyks bD17cmVuZGVyOmZ1bmN0aW9uKHAscSxyKXt2YXIgcz1pWyc6ZmI6bWVyY3VyeTpj aGF0OnRhYi1zaGVldDptZXNzYWdlLWljb24tc2hlZXQnXS5idWlsZCgpLHQ9bnVs bDtzd2l0Y2gocCl7Y2FzZSBnLkFDVElWRTpqLmFkZENsYXNzKHMuZ2V0Um9vdCgp LCdhY3RpdmUnKTt0PW0ocik7YnJlYWs7Y2FzZSBnLk1PQklMRTpqLmFkZENsYXNz KHMuZ2V0Um9vdCgpLCdtb2JpbGUnKTt0PW4ocik7YnJlYWs7Y2FzZSBnLk9GRkxJ TkU6dD1vKHIpO2JyZWFrO31rLnNldENvbnRlbnQocy5nZXROb2RlKCd0ZXh0Jyks dCk7ay5zZXRDb250ZW50KHEscy5nZXRSb290KCkpO319O2Z1bmN0aW9uIG0ocCl7 cmV0dXJuIGsudHguXygie25hbWV9IHNla2FyYW5nIHRlcnNlZGlhLiIse25hbWU6 cC5maXJzdE5hbWV9KTt9ZnVuY3Rpb24gbihwKXtyZXR1cm4gay50eC5fKCJQZXNh biBBbmRhIGFrYW4gZGlraXJpbSBrZSBwb25zZWwge25hbWV9LiIse25hbWU6cC5m aXJzdE5hbWV9KTt9ZnVuY3Rpb24gbyhwKXtzd2l0Y2gocC5nZW5kZXIpe2Nhc2Ug aC5GRU1BTEVfU0lOR1VMQVI6Y2FzZSBoLkZFTUFMRV9TSU5HVUxBUl9HVUVTUzpy ZXR1cm4gay50eC5fKCJ7bmFtZX0gc2VkYW5nIG9mZmxpbmUsIHRldGFwaSBBbmRh IHRldGFwIGRhcGF0IG1lbmdpcmltaW55YSBwZXNhbi4iLHtuYW1lOnAuZmlyc3RO YW1lfSk7Y2FzZSBoLk1BTEVfU0lOR1VMQVI6Y2FzZSBoLk1BTEVfU0lOR1VMQVJf R1VFU1M6cmV0dXJuIGsudHguXygie25hbWV9IHNlZGFuZyBvZmZsaW5lLCB0ZXRh cGkgQW5kYSB0ZXRhcCBkYXBhdCBtZW5naXJpbWlueWEgcGVzYW4uIix7bmFtZTpw LmZpcnN0TmFtZX0pO2RlZmF1bHQ6cmV0dXJuIGsudHguXygie25hbWV9IHNlZGFu ZyBvZmZsaW5lLCB0ZXRhcGkgQW5kYSB0ZXRhcCBkYXBhdCBtZW5naXJpbWlueWEg cGVzYW4uIix7bmFtZTpwLmZpcnN0TmFtZX0pO319ZS5leHBvcnRzPWw7fSk7Cl9f ZCgiQ2hhdEF2YWlsYWJpbGl0eVRhYlNoZWV0IixbIkFyYml0ZXIiLCJBdmFpbGFi bGVMaXN0IiwiQXZhaWxhYmxlTGlzdENvbnN0YW50cyIsIkNoYXRBdmFpbGFiaWxp dHlUYWJTaGVldFJhd1JlbmRlcmVyIiwiQ2hhdENvbmZpZyIsIk1lcmN1cnlUaHJl YWRzIiwiU2hvcnRQcm9maWxlcyIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0F2YWlsYWJsZUxp c3QnKSxpPWIoJ0F2YWlsYWJsZUxpc3RDb25zdGFudHMnKSxqPWIoJ0NoYXRBdmFp bGFiaWxpdHlUYWJTaGVldFJhd1JlbmRlcmVyJyksaz1iKCdDaGF0Q29uZmlnJyks bD1iKCdNZXJjdXJ5VGhyZWFkcycpLG09YignU2hvcnRQcm9maWxlcycpLG49Yign Y29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBvKHAscSxyLHMpe3RoaXMuX2hhbmRs

ZWRBdmFpbGFiaWxpdHk9cTt0aGlzLl9zaGVldFZpZXc9czt0aGlzLl9yb290RWxl bWVudD1yO3RoaXMuX2Nhbm9uaWNhbFVzZXI9bC5nZXRDYW5vbmljYWxVc2VySW5U aHJlYWQocCk7aWYodGhpcy5fY2Fub25pY2FsVXNlcil7dGhpcy5fY3VycmVudEF2 YWlsYWJpbGl0eT1pLkFDVElWRTt0aGlzLl9oYW5kbGVBdmFpbGFiaWxpdHlDaGFu Z2UoKTtnLnN1YnNjcmliZShpLk9OX0FWQUlMQUJJTElUWV9DSEFOR0VELHRoaXMu X2hhbmRsZUF2YWlsYWJpbGl0eUNoYW5nZS5iaW5kKHRoaXMpKTt9fW8uY3JlYXRl U2hlZXRzPWZ1bmN0aW9uKHAscSxyKXt2YXIgcz17fTtpZihrLmdldCgncm9nZXIu dWknKSl7c1tpLk9GRkxJTkVdPW5ldyBvKHAsaS5PRkZMSU5FLHEscik7cmV0dXJu IHM7fVtpLkFDVElWRSxpLk9GRkxJTkUsaS5NT0JJTEVdLmZvckVhY2goZnVuY3Rp b24odCl7c1t0XT1uZXcgbyhwLHQscSxyKTt9KTtyZXR1cm4gczt9O24oby5wcm90 b3R5cGUse3JlbmRlcjpmdW5jdGlvbigpeyF0aGlzLl9jYW5vbmljYWxVc2VyO20u Z2V0KHRoaXMuX2Nhbm9uaWNhbFVzZXIsai5yZW5kZXIuY3VycnkodGhpcy5fY3Vy cmVudEF2YWlsYWJpbGl0eSx0aGlzLl9yb290RWxlbWVudCkpO30saXNQZXJtYW5l bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2U7fSxnZXRUeXBlOmZ1bmN0aW9uKCl7 c3dpdGNoKHRoaXMuX2hhbmRsZWRBdmFpbGFiaWxpdHkpe2Nhc2UgaS5BQ1RJVkU6 cmV0dXJuICdhdmFpbGFiaWxpdHlfYWN0aXZlX3R5cGUnO2Nhc2UgaS5NT0JJTEU6 cmV0dXJuICdhdmFpbGFiaWxpdHlfbW9iaWxlX3R5cGUnO2Nhc2UgaS5PRkZMSU5F OnJldHVybiAnYXZhaWxhYmlsaXR5X29mZmxpbmVfdHlwZSc7ZGVmYXVsdDp0aHJv dyBuZXcgRXJyb3IoIkludmFsaWQgaGFuZGxlZCBhdmFpbGFiaWxpdHkiKTt9fSxn ZXRDbG9zZVRpbWVvdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTAwMDt9LF9oYW5kbGVB dmFpbGFiaWxpdHlDaGFuZ2U6ZnVuY3Rpb24oKXt2YXIgcD1oLmdldCh0aGlzLl9j YW5vbmljYWxVc2VyKTtpZihwPT10aGlzLl9jdXJyZW50QXZhaWxhYmlsaXR5KXJl dHVybjt0aGlzLl9jdXJyZW50QXZhaWxhYmlsaXR5PXA7aWYocD09dGhpcy5faGFu ZGxlZEF2YWlsYWJpbGl0eSl0aGlzLl9zaGVldFZpZXcub3Blbih0aGlzKTt9fSk7 ZS5leHBvcnRzPW87fSk7Cl9fZCgiQ2hhdE5vUmVjaXBpZW50c1RhYlNoZWV0Iixb IkRPTSIsIk1lcmN1cnlQYXJ0aWNpcGFudHMiLCJNZXJjdXJ5VGhyZWFkSW5mb3Jt ZXIiLCJNZXJjdXJ5VGhyZWFkcyIsImNvcHlQcm9wZXJ0aWVzIiwiQ2hhdFRhYlRl bXBsYXRlcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET00nKSxo PWIoJ01lcmN1cnlQYXJ0aWNpcGFudHMnKSxpPWIoJ01lcmN1cnlUaHJlYWRJbmZv cm1lcicpLGo9YignTWVyY3VyeVRocmVhZHMnKSxrPWIoJ2NvcHlQcm9wZXJ0aWVz JyksbD1jKCdDaGF0VGFiVGVtcGxhdGVzJyk7ZnVuY3Rpb24gbShuLG8scCl7dGhp cy5fdGhyZWFkSUQ9bjt0aGlzLl9yb290RWxlbWVudD1vO3RoaXMuX3NoZWV0Vmll dz1wO2kuc3Vic2NyaWJlKCd0aHJlYWRzLXVwZGF0ZWQnLHRoaXMuX2hhbmRsZVRo cmVhZHNVcGRhdGVkLmJpbmQodGhpcykpO31rKG0ucHJvdG90eXBlLHtyZW5kZXI6 ZnVuY3Rpb24oKXt2YXIgbj1sWyc6ZmI6bWVyY3VyeTpjaGF0OnRhYi1zaGVldDpt ZXNzYWdlLWljb24tc2hlZXQnXS5idWlsZCgpO2cuc2V0Q29udGVudChuLmdldE5v ZGUoJ3RleHQnKSxnLnR4Ll8oIlNlbXVhIHBlbmVyaW1hIHRlbGFoIG1lbmluZ2dh bGthbiBwZXJjYWthcGFuLiBTaWxha2FuIHR1dHVwIHRhYiBsYW1hLiIpKTtnLnNl dENvbnRlbnQodGhpcy5fcm9vdEVsZW1lbnQsbi5nZXRSb290KCkpO30saXNQZXJt YW5lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZTt9LGdldFR5cGU6ZnVuY3Rpb24o KXtyZXR1cm4gJ25vX3JlY2lwaWVudHNfdHlwZSc7fSxfaGFuZGxlVGhyZWFkc1Vw ZGF0ZWQ6ZnVuY3Rpb24oKXtqLmdldFRocmVhZE1ldGEodGhpcy5fdGhyZWFkSUQs ZnVuY3Rpb24obil7dmFyIG89aC51c2VyLHA9bi5wYXJ0aWNpcGFudHMuZmlsdGVy KGZ1bmN0aW9uKHEpe3JldHVybiBxIT1vO30pO2lmKHAubGVuZ3RoPDEpe3RoaXMu X3NoZWV0Vmlldy5vcGVuKHRoaXMpO31lbHNlIHRoaXMuX3NoZWV0Vmlldy5jbG9z ZSh0aGlzKTt9LmJpbmQodGhpcykpO319KTtlLmV4cG9ydHM9bTt9KTsKX19kKCJD aGF0T2ZmbGluZVRhYlNoZWV0IixbImV2ZW50LWV4dGVuc2lvbnMiLCJDaGF0UHJp dmFjeUFjdGlvbkNvbnRyb2xsZXIiLCJDaGF0VGFiU2hlZXRWaWV3IiwiQ2hhdFZp c2liaWxpdHkiLCJDU1MiLCJET00iLCJKU0xvZ2dlciIsIk1lcmN1cnlQYXJ0aWNp cGFudHMiLCJNZXJjdXJ5VGhyZWFkcyIsImNvcHlQcm9wZXJ0aWVzIiwiTWVyY3Vy eUNvbmZpZyIsIkNoYXRUYWJUZW1wbGF0ZXMiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0NoYXRQcml2YWN5QWN0 aW9uQ29udHJvbGxlcicpLGg9YignQ2hhdFRhYlNoZWV0VmlldycpLGk9YignQ2hh dFZpc2liaWxpdHknKSxqPWIoJ0NTUycpLGs9YignRE9NJyksbD1iKCdKU0xvZ2dl cicpLG09YignTWVyY3VyeVBhcnRpY2lwYW50cycpLG49YignTWVyY3VyeVRocmVh ZHMnKSxvPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbz1iKCdjb3B5UHJvcGVydGllcycp LHA9YygnTWVyY3VyeUNvbmZpZycpLHE9YygnQ2hhdFRhYlRlbXBsYXRlcycpO2Z1 bmN0aW9uIHIocyx0LHUpe3RoaXMuX3Jvb3RFbGVtZW50PXQ7dGhpcy5fc2hlZXRW aWV3PXU7dGhpcy5fbG9nZ2VyPWwuY3JlYXRlKCdibGFja2JpcmQnKTt0aGlzLl9j YW5vbmljYWxVc2VyPW4uZ2V0Q2Fub25pY2FsVXNlckluVGhyZWFkKHMpO2lmKHRo

aXMuX2Nhbm9uaWNhbFVzZXIpdGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xsZXI9 bmV3IGcodGhpcy5fY2Fub25pY2FsVXNlcix0aGlzLl9oYW5kbGVQcml2YWN5Q2hh bmdlLmJpbmQodGhpcykpO31vKHIucHJvdG90eXBlLHtyZW5kZXI6ZnVuY3Rpb24o KXtpZighdGhpcy5fY2Fub25pY2FsVXNlcil7dGhpcy5fbG9nZ2VyLmVycm9yKCdv ZmZsaW5lX3NoZWV0X29wZW5fd2l0aF9ub25fZnJpZW5kJyk7cmV0dXJuO312YXIg cz1xWyc6ZmI6bWVyY3VyeTpjaGF0OnRhYi1zaGVldDptZXNzYWdlLWljb24tc2hl ZXQnXS5idWlsZCgpLHQ9J2ZiaWQ6Jyt0aGlzLl9jYW5vbmljYWxVc2VyO20uZ2V0 KHQsZnVuY3Rpb24odSl7dmFyIHY9J2ZiQ2hhdEdvT25saW5lTGluaycsdz1wLkNo YXRDb250cm9sTGFuZ3VhZ2VDaGFuZ2VHSz9rLnR4Ll8oIm55YWxha2FuIG9icm9s YW4iKTprLnR4Ll8oImphZGlrYW4gb25saW5lIikseD1rLmNyZWF0ZSgnYScse2hy ZWY6JyMnLGNsYXNzTmFtZTp2fSx3KSx5O2lmKHAuQ2hhdENvbnRyb2xMYW5ndWFn ZUNoYW5nZUdLKXt5PWsudHguXygiVW50dWsgbWVuZ29icm9sIGRlbmdhbiB7bmFt ZX0gZGFuIHRlbWFuIGxhaW5ueWEsIHtsaW5rfS4iLHtuYW1lOnUuc2hvcnRfbmFt ZSxsaW5rOnh9KTt9ZWxzZSB5PWsudHguXygiQW5kYSBzZWRhbmcgb2ZmbGluZS4g VW50dWsgbWVuZ29icm9sIGRlbmdhbiB7bmFtZX0gZGFuIHRlbWFuIGxhaW5ueWEs IHtsaW5rfS4iLHtuYW1lOnUuc2hvcnRfbmFtZSxsaW5rOnh9KTtrLnNldENvbnRl bnQocy5nZXROb2RlKCd0ZXh0JykseSk7ai5hZGRDbGFzcyhzLmdldFJvb3QoKSwn Y2hhdE9mZmxpbmUnKTtrLnNldENvbnRlbnQodGhpcy5fcm9vdEVsZW1lbnQscy5n ZXRSb290KCkpO0V2ZW50Lmxpc3Rlbih0aGlzLl9yb290RWxlbWVudCwnY2xpY2sn LGZ1bmN0aW9uKGV2ZW50KXtpZihqLmhhc0NsYXNzKGV2ZW50LmdldFRhcmdldCgp LHYpKXtpZihpLmlzT25saW5lKCkpdGhpcy5fbG9nZ2VyLmVycm9yKCd0YWJfc2hl ZXRfYWxyZWFkeV9vbmxpbmUnKTt0aGlzLl9wcml2YWN5QWN0aW9uQ29udHJvbGxl ci50b2dnbGVQcml2YWN5KCk7dGhpcy5fbG9nZ2VyLmxvZygndGFiX3NoZWV0X2dv X29ubGluZScse3RhYl9pZDp0aGlzLl9jYW5vbmljYWxVc2VyfSk7cmV0dXJuIGZh bHNlO319LmJpbmQodGhpcykpO30uYmluZCh0aGlzKSk7fSxfaGFuZGxlUHJpdmFj eUNoYW5nZTpmdW5jdGlvbihzKXtpZighdGhpcy5fY2Fub25pY2FsVXNlcil0aGlz Ll9sb2dnZXIuZXJyb3IoJ3VzZXJfYmxvY2tlZF9zaGVldF9wcml2YWN5X2NoYW5n ZWRfbm9uX2ZyaWVuZCcpO3N3aXRjaChzKXtjYXNlIGcuT0ZGTElORTp0aGlzLl9z aGVldFZpZXcub3Blbih0aGlzKTticmVhaztjYXNlIGcuTk9STUFMOmNhc2UgZy5C TE9DS0VEOnRoaXMuX3NoZWV0Vmlldy5jbG9zZSh0aGlzKTticmVhazt9fSxpc1Bl cm1hbmVudDpmdW5jdGlvbigpe3JldHVybiB0cnVlO30sZ2V0VHlwZTpmdW5jdGlv bigpe3JldHVybiAnb2ZmbGluZV90eXBlJzt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0 aGlzLl9wcml2YWN5QWN0aW9uQ29udHJvbGxlciYmdGhpcy5fcHJpdmFjeUFjdGlv bkNvbnRyb2xsZXIuZGVzdHJveSgpO319KTtlLmV4cG9ydHM9cjt9KTsKX19kKCJD aGF0VXNlckJsb2NrZWRUYWJTaGVldCIsWyJldmVudC1leHRlbnNpb25zIiwiQ2hh dFByaXZhY3lBY3Rpb25Db250cm9sbGVyIiwiQ2hhdFRhYlNoZWV0VmlldyIsIkNT UyIsIkRPTSIsIkdlbmRlckNvbnN0IiwiSlNMb2dnZXIiLCJNZXJjdXJ5UGFydGlj aXBhbnRzIiwiTWVyY3VyeVRocmVhZHMiLCJjb3B5UHJvcGVydGllcyIsInR4Iiwi TWVyY3VyeUNvbmZpZyIsIkNoYXRUYWJUZW1wbGF0ZXMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0NoYXRQcml2 YWN5QWN0aW9uQ29udHJvbGxlcicpLGg9YignQ2hhdFRhYlNoZWV0VmlldycpLGk9 YignQ1NTJyksaj1iKCdET00nKSxrPWIoJ0dlbmRlckNvbnN0JyksbD1iKCdKU0xv Z2dlcicpLG09YignTWVyY3VyeVBhcnRpY2lwYW50cycpLG49YignTWVyY3VyeVRo cmVhZHMnKSxvPWIoJ2NvcHlQcm9wZXJ0aWVzJykscD1jKCdNZXJjdXJ5Q29uZmln JykscT1jKCdDaGF0VGFiVGVtcGxhdGVzJykscj1iKCd0eCcpO2Z1bmN0aW9uIHMo dCx1LHYpe3RoaXMuX3Jvb3RFbGVtZW50PXU7dGhpcy5fc2hlZXRWaWV3PXY7dGhp cy5fbG9nZ2VyPWwuY3JlYXRlKCdibGFja2JpcmQnKTt0aGlzLl9jYW5vbmljYWxV c2VyPW4uZ2V0Q2Fub25pY2FsVXNlckluVGhyZWFkKHQpO2lmKHRoaXMuX2Nhbm9u aWNhbFVzZXIpdGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xsZXI9bmV3IGcodGhp cy5fY2Fub25pY2FsVXNlcix0aGlzLl9oYW5kbGVQcml2YWN5Q2hhbmdlLmJpbmQo dGhpcykpO31vKHMucHJvdG90eXBlLHtyZW5kZXI6ZnVuY3Rpb24oKXtpZighdGhp cy5fY2Fub25pY2FsVXNlcil7dGhpcy5fbG9nZ2VyLmVycm9yKCd1c2VyX2Jsb2Nr ZWRfc2hlZXRfb3Blbl93aXRoX25vbl9mcmllbmQnKTtyZXR1cm47fXZhciB0PXFb JzpmYjptZXJjdXJ5OmNoYXQ6dGFiLXNoZWV0OnVzZXItYmxvY2tlZCddLmJ1aWxk KCksdT0nZmJpZDonK3RoaXMuX2Nhbm9uaWNhbFVzZXI7bS5nZXQodSxmdW5jdGlv bih2KXt2YXIgdz1udWxsO3N3aXRjaCh2LmdlbmRlcil7Y2FzZSBrLkZFTUFMRV9T SU5HVUxBUjpjYXNlIGsuRkVNQUxFX1NJTkdVTEFSX0dVRVNTOnc9cC5DaGF0Q29u dHJvbExhbmd1YWdlQ2hhbmdlR0s/ci5fKCJZb3UgdHVybmVkIG9mZiBjaGF0IGZv ciB7bmFtZX0gYnV0IHlvdSBjYW4gc3RpbGwgc2VuZCBoZXIgYSBtZXNzYWdlLiAi LHtuYW1lOnYuc2hvcnRfbmFtZX0pOnIuXygiQW5kYSB0ZXJsaWhhdCBvZmZsaW5l

IGRpIG9icm9sYW4gYmFnaSB7bmFtZX0sIHRhcGkgQW5kYSB0ZXRhcCBkYXBhdCBt ZW5naXJpbSBwZXNhbiBrZXBhZGFueWEuIix7bmFtZTp2LnNob3J0X25hbWV9KTti cmVhaztjYXNlIGsuTUFMRV9TSU5HVUxBUjpjYXNlIGsuTUFMRV9TSU5HVUxBUl9H VUVTUzp3PXAuQ2hhdENvbnRyb2xMYW5ndWFnZUNoYW5nZUdLP3IuXygiWW91IHR1 cm5lZCBvZmYgY2hhdCBmb3Ige25hbWV9IGJ1dCB5b3UgY2FuIHN0aWxsIHNlbmQg aGltIGEgbWVzc2FnZS4gIix7bmFtZTp2LnNob3J0X25hbWV9KTpyLl8oIkFuZGEg dGVybGloYXQgb2ZmbGluZSBkaSBvYnJvbGFuIGJhZ2kge25hbWV9LCB0YXBpIEFu ZGEgdGV0YXAgZGFwYXQgbWVuZ2lyaW0gcGVzYW4ga2VwYWRhbnlhLiIse25hbWU6 di5zaG9ydF9uYW1lfSk7YnJlYWs7ZGVmYXVsdDp3PXAuQ2hhdENvbnRyb2xMYW5n dWFnZUNoYW5nZUdLP3IuXygiWW91IHR1cm5lZCBvZmYgY2hhdCBmb3Ige25hbWV9 IGJ1dCB5b3UgY2FuIHN0aWxsIHNlbmQgdGhlbSBhIG1lc3NhZ2UuICIse25hbWU6 di5zaG9ydF9uYW1lfSk6ci5fKCJBbmRhIHRlcmxpaGF0IG9mZmxpbmUgZGkgb2Jy b2xhbiBiYWdpIHtuYW1lfSwgdGFwaSBBbmRhIHRldGFwIGRhcGF0IG1lbmdpcmlt IHBlc2FuIGtlcGFkYW55YS4iLHtuYW1lOnYuc2hvcnRfbmFtZX0pO31qLnNldENv bnRlbnQodC5nZXROb2RlKCd0ZXh0Jyksdyk7dmFyIHg9cC5DaGF0Q29udHJvbExh bmd1YWdlQ2hhbmdlR0s/ci5fKCJIaWR1cGthbiBvYnJvbGFuIHVudHVrIHtuYW1l fT8iLHtuYW1lOnYuc2hvcnRfbmFtZX0pOnIuXygiSmFkaWthbiBPbmxpbmUgdW50 dWsge25hbWV9Iix7bmFtZTp2LnNob3J0X25hbWV9KTtqLnNldENvbnRlbnQodC5n ZXROb2RlKCdhY3Rpb25MaW5rJykseCk7aS5hZGRDbGFzcyh0LmdldFJvb3QoKSwn YmxvY2tlZCcpO2ouc2V0Q29udGVudCh0aGlzLl9yb290RWxlbWVudCx0LmdldFJv b3QoKSk7RXZlbnQubGlzdGVuKHQuZ2V0Tm9kZSgnYWN0aW9uTGluaycpLCdjbGlj aycsdGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xsZXIudG9nZ2xlUHJpdmFjeS5i aW5kKHRoaXMuX3ByaXZhY3lBY3Rpb25Db250cm9sbGVyKSk7fS5iaW5kKHRoaXMp KTt9LF9oYW5kbGVQcml2YWN5Q2hhbmdlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9j YW5vbmljYWxVc2VyKXRoaXMuX2xvZ2dlci5lcnJvcigndXNlcl9ibG9ja2VkX3No ZWV0X3ByaXZhY3lfY2hhbmdlZF9ub25fZnJpZW5kJyk7c3dpdGNoKHQpe2Nhc2Ug Zy5CTE9DS0VEOnRoaXMuX3NoZWV0Vmlldy5vcGVuKHRoaXMpO2JyZWFrO2Nhc2Ug Zy5OT1JNQUw6Y2FzZSBnLk9GRkxJTkU6dGhpcy5fc2hlZXRWaWV3LmNsb3NlKHRo aXMpO2JyZWFrO319LGlzUGVybWFuZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRydWU7 fSxnZXRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuICd1c2VyX2Jsb2NrZWRfdHlwZSc7 fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xs ZXImJnRoaXMuX3ByaXZhY3lBY3Rpb25Db250cm9sbGVyLmRlc3Ryb3koKTt9fSk7 ZS5leHBvcnRzPXM7fSk7Cl9fZCgiQ2hhdFRhYlNoZWV0Q29udHJvbGxlciIsWyJD aGF0QWRkRnJpZW5kc1RhYlNoZWV0IiwiQ2hhdEF2YWlsYWJpbGl0eVRhYlNoZWV0 IiwiQ2hhdE5vUmVjaXBpZW50c1RhYlNoZWV0IiwiQ2hhdE9mZmxpbmVUYWJTaGVl dCIsIkNoYXRUYWJTaGVldFZpZXciLCJDaGF0VXNlckJsb2NrZWRUYWJTaGVldCIs ImNvcHlQcm9wZXJ0aWVzIiwiTWVyY3VyeVNlcnZlclJlcXVlc3RzIiwiTWVyY3Vy eVRocmVhZHMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQ2hhdEFk ZEZyaWVuZHNUYWJTaGVldCcpLGg9YignQ2hhdEF2YWlsYWJpbGl0eVRhYlNoZWV0 JyksaT1iKCdDaGF0Tm9SZWNpcGllbnRzVGFiU2hlZXQnKSxqPWIoJ0NoYXRPZmZs aW5lVGFiU2hlZXQnKSxrPWIoJ0NoYXRUYWJTaGVldFZpZXcnKSxsPWIoJ0NoYXRV c2VyQmxvY2tlZFRhYlNoZWV0JyksbT1iKCdjb3B5UHJvcGVydGllcycpLG49Yign TWVyY3VyeVNlcnZlclJlcXVlc3RzJyksbz1iKCdNZXJjdXJ5VGhyZWFkcycpLHA9 ZnVuY3Rpb24ocSxyLHMpe3RoaXMuX3NoZWV0Vmlldz1uZXcgayhxLHIscyk7dGhp cy5fYWRkRnJpZW5kc1RhYlNoZWV0PW5ldyBnKHEscix0aGlzLl9zaGVldFZpZXcp O3RoaXMuX3VzZXJCbG9ja2VkVGFiU2hlZXQ9bmV3IGwocSxyLHRoaXMuX3NoZWV0 Vmlldyk7dGhpcy5fb2ZmbGluZVRhYlNoZWV0PW5ldyBqKHEscix0aGlzLl9zaGVl dFZpZXcpO3RoaXMuX2F2YWlsYWJpbGl0eVRhYlNoZWV0cz1oLmNyZWF0ZVNoZWV0 cyhxLHIsdGhpcy5fc2hlZXRWaWV3KTtpZihvLmlzTXVsdGljaGF0VGhyZWFkKHEp KXRoaXMuX25vUmVjaXBpZW50c1RhYlNoZWV0PW5ldyBpKHEscix0aGlzLl9zaGVl dFZpZXcpO307bShwLnByb3RvdHlwZSx7b3BlbkFkZEZyaWVuZHNTaGVldDpmdW5j dGlvbigpe3RoaXMuX2FkZEZyaWVuZHNUYWJTaGVldC5vcGVuKCk7fSxkZXN0cm95 OmZ1bmN0aW9uKCl7dGhpcy5fc2hlZXRWaWV3LmRlc3Ryb3koKTt0aGlzLl9vZmZs aW5lVGFiU2hlZXQuZGVzdHJveSgpO3RoaXMuX3VzZXJCbG9ja2VkVGFiU2hlZXQu ZGVzdHJveSgpO319KTtlLmV4cG9ydHM9cDt9KTsKX19kKCJDaGF0VGFiVmlldyIs WyJldmVudC1leHRlbnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9ucyIsIkFyYml0 ZXIiLCJBcmJpdGVyTWl4aW4iLCJBc3luY0RpYWxvZyIsIkFzeW5jUmVxdWVzdCIs IkF2YWlsYWJsZUxpc3QiLCJBdmFpbGFibGVMaXN0Q29uc3RhbnRzIiwiQ2hhdENv bmZpZyIsIkNoYXRDb250ZXh0dWFsRGlhbG9nQ29udHJvbGxlciIsIkNoYXRRdWll dExpbmtzIiwiQ2hhdFByaXZhY3lBY3Rpb25Db250cm9sbGVyIiwiTWVzc2FnZXNF

bW90aWNvblZpZXciLCJDaGF0VGFiTWVzc2FnZXNWaWV3IiwiQ2hhdFRhYlNoZWV0 Q29udHJvbGxlciIsIkNoYXRWaXNpYmlsaXR5IiwiQ1NTIiwiRGlhbG9nIiwiRG9j ayIsIkRPTSIsIkpTTG9nZ2VyIiwiS2V5cyIsIk1lcmN1cnlNZXNzYWdlcyIsIk1l cmN1cnlQYXJ0aWNpcGFudHMiLCJNZXJjdXJ5U2VydmVyUmVxdWVzdHMiLCJNZXJj dXJ5VGhyZWFkSW5mb3JtZXIiLCJNZXJjdXJ5VGhyZWFkTWV0YWRhdGFSZW5kZXJl ciIsIk1lcmN1cnlUaHJlYWRNZXRhZGF0YVJhd1JlbmRlcmVyIiwiTWVyY3VyeVRo cmVhZHMiLCJNZXJjdXJ5VHlwaW5nUmVjZWl2ZXIiLCJOdWJDb250cm9sbGVyIiwi UGFyZW50IiwiUHJlc2VuY2VQcml2YWN5IiwiU3R5bGUiLCJUZXh0QXJlYUNvbnRy b2wiLCJUb29sdGlwIiwiVHlwaW5nSW5kaWNhdG9yIiwiVVJJIiwiVXNlckFnZW50 IiwiVmlkZW9DYWxsQ29yZSIsImNvcHlQcm9wZXJ0aWVzIiwic2V0SW50ZXJ2YWxB Y3Jvc3NUcmFuc2l0aW9ucyIsInR4IiwiTWVyY3VyeUNvbmZpZyIsIk1lcmN1cnlD b25zdGFudHMiLCJDaGF0VGFiVGVtcGxhdGVzIl0sZnVuY3Rpb24oYSxiLGMsZCxl LGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTtiKCdmdW5jdGlvbi1leHRlbnNpb25z Jyk7dmFyIGc9YignQXJiaXRlcicpLGg9YignQXJiaXRlck1peGluJyksaT1iKCdB c3luY0RpYWxvZycpLGo9YignQXN5bmNSZXF1ZXN0Jyksaz1iKCdBdmFpbGFibGVM aXN0JyksbD1iKCdBdmFpbGFibGVMaXN0Q29uc3RhbnRzJyksbT1iKCdDaGF0Q29u ZmlnJyksbj1iKCdDaGF0Q29udGV4dHVhbERpYWxvZ0NvbnRyb2xsZXInKSxvPWIo J0NoYXRRdWlldExpbmtzJykscD1iKCdDaGF0UHJpdmFjeUFjdGlvbkNvbnRyb2xs ZXInKSxxPWIoJ01lc3NhZ2VzRW1vdGljb25WaWV3Jykscj1iKCdDaGF0VGFiTWVz c2FnZXNWaWV3Jykscz1iKCdDaGF0VGFiU2hlZXRDb250cm9sbGVyJyksdD1iKCdD aGF0VmlzaWJpbGl0eScpLHU9YignQ1NTJyksdj1iKCdEaWFsb2cnKSx3PWIoJ0Rv Y2snKSx4PWIoJ0RPTScpLHk9YignSlNMb2dnZXInKSx6PWIoJ0tleXMnKSxhYT1i KCdNZXJjdXJ5TWVzc2FnZXMnKSxiYT1iKCdNZXJjdXJ5UGFydGljaXBhbnRzJyks Y2E9YignTWVyY3VyeVNlcnZlclJlcXVlc3RzJyksZGE9YignTWVyY3VyeVRocmVh ZEluZm9ybWVyJyksZWE9YignTWVyY3VyeVRocmVhZE1ldGFkYXRhUmVuZGVyZXIn KSxmYT1iKCdNZXJjdXJ5VGhyZWFkTWV0YWRhdGFSYXdSZW5kZXJlcicpLGdhPWIo J01lcmN1cnlUaHJlYWRzJyksaGE9YignTWVyY3VyeVR5cGluZ1JlY2VpdmVyJyks aWE9YignTnViQ29udHJvbGxlcicpLGphPWIoJ1BhcmVudCcpLGthPWIoJ1ByZXNl bmNlUHJpdmFjeScpLGxhPWIoJ1N0eWxlJyksbWE9YignVGV4dEFyZWFDb250cm9s JyksbmE9YignVG9vbHRpcCcpLG9hPWIoJ1R5cGluZ0luZGljYXRvcicpLHBhPWIo J1VSSScpLHFhPWIoJ1VzZXJBZ2VudCcpLHJhPWIoJ1ZpZGVvQ2FsbENvcmUnKSxz YT1jKCdNZXJjdXJ5Q29uZmlnJyksdGE9YygnTWVyY3VyeUNvbnN0YW50cycpLHVh PWMoJ0NoYXRUYWJUZW1wbGF0ZXMnKSx2YT1iKCdjb3B5UHJvcGVydGllcycpLHdh PWIoJ3NldEludGVydmFsQWNyb3NzVHJhbnNpdGlvbnMnKSx4YT1iKCd0eCcpLHlh PXkuY3JlYXRlKCd0YWJfdmlldycpLHphPXt9O2Z1bmN0aW9uIGFiKGpiLGtiKXt2 YXIgbGI9eC5jcmVhdGUoJ2RpdicpO2tiPWtiLmZpbHRlcihmdW5jdGlvbihtYil7 cmV0dXJuIG1iIT1iYS51c2VyO30pO2JhLmdldE11bHRpKGtiLGZ1bmN0aW9uKG1i KXtmb3IodmFyIG5iIGluIG1iKXt2YXIgb2I9bWJbbmJdLHBiPXVhWyc6ZmI6bWVy Y3VyeTpjaGF0Om11bHRpY2hhdC10b29sdGlwLWl0ZW0nXS5idWlsZCgpO3guc2V0 Q29udGVudChwYi5nZXROb2RlKCduYW1lJyksb2IubmFtZSk7dmFyIHFiPWJhLmdl dFVzZXJJRChuYikscmI9cWImJmsuZ2V0KHFiKT09bC5BQ1RJVkU7dS5jb25kaXRp b25TaG93KHBiLmdldE5vZGUoJ2ljb24nKSxyYik7dS5jb25kaXRpb25DbGFzcyhw Yi5nZXROb2RlKCduYW1lJyksJ3Rvb2x0aXBJdGVtV2l0aEljb24nLHJiKTt4LmFw cGVuZENvbnRlbnQobGIscGIuZ2V0Um9vdCgpKTt9bmEuc2V0KGpiLGxiLCdhYm92 ZScsJ2NlbnRlcicpO30pO312YXIgYmI9e30sY2I9bnVsbCxkYj1mYWxzZTtmdW5j dGlvbiBlYihqYixrYixsYil7aWYobGIpe2JiW2piXT1rYjtpZighY2IpY2I9d2Eo ZmIsNjAwKTt9ZWxzZXt1LnJlbW92ZUNsYXNzKGtiLCdoaWdobGlnaHRUaXRsZScp O2RlbGV0ZSBiYltqYl07fX1mdW5jdGlvbiBmYigpe2Zvcih2YXIgamIgaW4gYmIp e3ZhciBrYj1iYltqYl07aWYoa2IucGFyZW50Tm9kZSl7dS5jb25kaXRpb25DbGFz cyhrYiwnaGlnaGxpZ2h0VGl0bGUnLGRiKTt9ZWxzZSBkZWxldGUgYmJbamJdO31k Yj0hZGI7aWYoIU9iamVjdC5rZXlzKGJiKS5sZW5ndGgpe2NsZWFySW50ZXJ2YWwo Y2IpO2NiPW51bGw7fX1mdW5jdGlvbiBnYihqYil7dmFyIGtiPWNhLnRva2VuaXpl VGhyZWFkSUQoamIpO3N3aXRjaChrYi50eXBlKXtjYXNlICd1c2VyJzpyZXR1cm4g dWFbJzpmYjptZXJjdXJ5OmNoYXQ6dXNlci10YWInXS5idWlsZCgpO2Nhc2UgJ2dy b3VwJzpyZXR1cm4gdWFbJzpmYjptZXJjdXJ5OmNoYXQ6Z3JvdXAtdGFiJ10uYnVp bGQoKTt9cmV0dXJuIHVhWyc6ZmI6bWVyY3VyeTpjaGF0Om11bHRpY2hhdC10YWIn XS5idWlsZCgpO31mdW5jdGlvbiBoYihqYixrYil7aWYoa2IpY2EuZW5zdXJlVGhy ZWFkSXNGZXRjaGVkKGtiKTt0aGlzLl90aHJlYWRJRD1qYjt0aGlzLl9ldmVudExp c3RlbmVycz1bXTt0aGlzLl90YWJUZW1wbGF0ZT1nYihqYik7dGhpcy5fdGFiRWxl bT10aGlzLl90YWJUZW1wbGF0ZS5nZXRSb290KCk7aWYoISh0aGlzLl9nZXROb2Rl

IGluc3RhbmNlb2YgRnVuY3Rpb24pKXlhLmxvZygnZ2V0bm9kZV91bmRlZmluZWQn LHtpc19nZXRub2RlX3NldDohIXRoaXMuX2dldE5vZGUsaXNfcHJvdG90eXBlX3Nl dDohIWhiLnByb3RvdHlwZSxpc193aW5kb3c6d2luZG93PT10aGlzLGlzX2NoYXRf dGFiX3ZpZXc6dGhpcyBpbnN0YW5jZW9mIGhiLGN0b3JfbmFtZTp0aGlzLmNvbnN0 cnVjdG9yJiZ0aGlzLmNvbnN0cnVjdG9yLm5hbWV9KTt0aGlzLl9zaGVldENvbnRy b2xsZXI9bmV3IHModGhpcy5fdGhyZWFkSUQsdGhpcy5fZ2V0Tm9kZSgnc2hlZXQn KSx0aGlzLl90YWJFbGVtKTt0aGlzLl9jb250ZXh0dWFsRGlhbG9nQ29udHJvbGxl cj1uZXcgbih0aGlzLl90aHJlYWRJRCx0aGlzLl9nZXROb2RlKCd2aWRlb0NhbGxM aW5rJykpO3RoaXMuX21lc3NhZ2VzVmlldz1udWxsO3ZhciBsYj10aGlzLl9nZXRO b2RlKCdjb252ZXJzYXRpb25MaW5rJyk7aWYobGIpe3UuaGlkZShsYik7ZWEucmVu ZGVyVGl0YW5MaW5rKGpiLGxiLHUuc2hvdy5iaW5kKHUsbGIpKTt9aWYoZ2EuaXNN dWx0aWNoYXRUaHJlYWQodGhpcy5fdGhyZWFkSUQpKXRoaXMuX3RpdGxlYmFyVG9v bHRpcEFuY2hvcj10aGlzLl9nZXROb2RlKCd0aXRsZWJhclRleHQnKTt2YXIgbWI9 dGhpcy5fZ2V0Q2Fub25pY2FsVXNlcklEKCk7aWYodGhpcy5faXNUaXRsZVRleHRM aW5rZWQoKSliYS5nZXQoJ2ZiaWQ6JyttYixmdW5jdGlvbihxYil7dmFyIHJiPXRo aXMuX2dldE5vZGUoJ3RpdGxlYmFyVGV4dCcpO3JiLnNldEF0dHJpYnV0ZSgnaHJl ZicscWIuaHJlZik7cmIucmVtb3ZlQXR0cmlidXRlKCdyZWwnKTt1LnJlbW92ZUNs YXNzKHJiLCdub0xpbmsnKTt9LmJpbmQodGhpcykpO3RoaXMuX251YkNvbnRyb2xs ZXI9bmV3IGlhKCkuaW5pdCh0aGlzLl90YWJFbGVtKTttYS5nZXRJbnN0YW5jZSh0 aGlzLl9nZXROb2RlKCdpbnB1dCcpKS5zdWJzY3JpYmUoJ3Jlc2l6ZScsZnVuY3Rp b24oKXt0aGlzLl9udWJDb250cm9sbGVyLmZseW91dENvbnRlbnRDaGFuZ2VkKCk7 fS5iaW5kKHRoaXMpKTt0aGlzLl9udWJDb250cm9sbGVyLnN1YnNjcmliZSgncmVz aXplJyxmdW5jdGlvbigpe3RoaXMuX2Vtb3RpY29uc05vZGUuc3R5bGUubGVmdD0o dGhpcy5fZ2V0Tm9kZSgnaW5wdXQnKS5jbGllbnRXaWR0aCszKSsncHgnO21hLmdl dEluc3RhbmNlKHRoaXMuX2dldE5vZGUoJ2lucHV0JykpLnVwZGF0ZSgpO30uYmlu ZCh0aGlzKSk7dGhpcy5fbGlzdGVuKCdjbG9zZUJ1dHRvbicsJ2NsaWNrJyx0aGlz Ll9jbG9zZUNsaWNrZWQpO3RoaXMuX2xpc3RlbigndGl0bGViYXJDbG9zZUJ1dHRv bicsJ2NsaWNrJyx0aGlzLl9jbG9zZUNsaWNrZWQpO3RoaXMuX2xpc3RlbignZG9j a0J1dHRvbicsJ2NsaWNrJyx0aGlzLl9udWJDbGlja2VkKTt0aGlzLl9saXN0ZW4o J2RvY2tCdXR0b24nLCdrZXlkb3duJyx0aGlzLl9kb2NrS2V5RG93bik7dGhpcy5f bGlzdGVuKCdudWJGbHlvdXRUaXRsZWJhcicsJ2NsaWNrJyx0aGlzLl90aXRsZUNs aWNrZWQpO3RoaXMuX2xpc3RlbignY2hhdENvbnYnLCdjbGljaycsdGhpcy5fY2hh dENvbnZDbGlja2VkKTt0aGlzLl9saXN0ZW4oJ2FkZEZyaWVuZExpbmsnLCdjbGlj aycsdGhpcy5fYWRkRnJpZW5kTGlua0NsaWNrZWQsdHJ1ZSk7dGhpcy5fbGlzdGVu KCdhZGRUb1RocmVhZExpbmsnLCdjbGljaycsdGhpcy5fYWRkRnJpZW5kTGlua0Ns aWNrZWQsdHJ1ZSk7dGhpcy5fbGlzdGVuKCdjbGVhcldpbmRvd0xpbmsnLCdjbGlj aycsdGhpcy5fY2xlYXJIaXN0b3J5LHRydWUpO3RoaXMuX2xpc3RlbigndW5zdWJz Y3JpYmVMaW5rJywnY2xpY2snLHRoaXMuX3Vuc3Vic2NyaWJlTGlua0NsaWNrZWQs dHJ1ZSk7dGhpcy5fbGlzdGVuKCd2aWRlb0NhbGxMaW5rJywnY2xpY2snLHRoaXMu X2NhbGxDbGlja2VkLHRydWUpO3RoaXMuX2xpc3RlbigncmVwb3J0U3BhbUxpbmsn LCdjbGljaycsdGhpcy5fcmVwb3J0U3BhbUNsaWNrZWQsdHJ1ZSk7dGhpcy5fbGlz dGVuKCdpbnB1dCcsJ2ZvY3VzJyx0aGlzLl9mb2N1c1RhYik7dGhpcy5fbGlzdGVu KCdpbnB1dCcsJ2JsdXInLHRoaXMuX2JsdXJUYWIpO3RoaXMuX2Vtb3RpY29uc05v ZGU9dGhpcy5fZ2V0Tm9kZSgnZW1vdGljb25zJyk7dGhpcy5fZW1vdGljb25WaWV3 PW5ldyBxKHRoaXMuX2Vtb3RpY29uc05vZGUsdGhpcy5fZ2V0Tm9kZSgnaW5wdXQn KSk7aWYocWEuZmlyZWZveCgpKXt0aGlzLl9saXN0ZW4oJ2lucHV0Jywna2V5cHJl c3MnLHRoaXMuX2lucHV0S2V5RG93bik7fWVsc2UgdGhpcy5fbGlzdGVuKCdpbnB1 dCcsJ2tleWRvd24nLHRoaXMuX2lucHV0S2V5RG93bik7dGhpcy5fcHJpdmFjeUxp bms9dGhpcy5fZ2V0Tm9kZSgncHJpdmFjeUxpbmsnKTtpZih0aGlzLl9wcml2YWN5 TGluayl7dGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xsZXI9bmV3IHAobWIsdGhp cy5fdXBkYXRlUHJpdmFjeUxpbmsuYmluZCh0aGlzKSk7dGhpcy5fZXZlbnRMaXN0 ZW5lcnMucHVzaChFdmVudC5saXN0ZW4odGhpcy5fcHJpdmFjeUxpbmssJ2NsaWNr Jyx0aGlzLl9wcml2YWN5QWN0aW9uQ29udHJvbGxlci50b2dnbGVQcml2YWN5LmJp bmQodGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xsZXIpKSk7fXZhciBuYj1tYnx8 KG0uZ2V0KCdjaGF0X211bHRpX3R5cF9zZW5kJykmJmdhLmlzTXVsdGljaGF0VGhy ZWFkKHRoaXMuX3RocmVhZElEKSk7aWYobmIpY2EuZ2V0U2VydmVyVGhyZWFkSUQo dGhpcy5fdGhyZWFkSUQsZnVuY3Rpb24ocWIpe3RoaXMuX3R5cGluZ0luZGljYXRv cj1uZXcgb2EobWIsdGhpcy5fZ2V0Tm9kZSgnaW5wdXQnKSwnbWVyY3VyeS1jaGF0 JyxudWxsLHFiKTt9LmJpbmQodGhpcykpO3ZhciBvYj10aGlzLl9nZXROb2RlKCdt dXRlR3JvdXBMaW5rJyk7aWYob2Ipe3ZhciBwYj1nYS5nZXRDYW5vbmljYWxHcm91

cEluVGhyZWFkKHRoaXMuX3RocmVhZElEKTtpZihwYilvYi5zZXRBdHRyaWJ1dGUo J2FqYXhpZnknLHBhKG9iLmdldEF0dHJpYnV0ZSgnYWpheGlmeScpKS5hZGRRdWVy eURhdGEoe2lkOnBifSkpO31vLnJlbW92ZUVtcHR5SHJlZnModGhpcy5fdGFiRWxl bSk7emFbamJdPXRoaXM7dGhpcy51cGRhdGVBdmFpbGFibGVTdGF0dXMoKTt0aGlz LnVwZGF0ZVRhYigpO31mdW5jdGlvbiBpYigpe2Zvcih2YXIgamIgaW4gemEpe3ph W2piXS51cGRhdGVBdmFpbGFibGVTdGF0dXMoKTt6YVtqYl0udXBkYXRlTXVsdGlj aGF0VG9vbHRpcCgpO319Zy5zdWJzY3JpYmUoWydidWRkeWxpc3QvYXZhaWxhYmls aXR5LWNoYW5nZWQnXSxpYik7a2Euc3Vic2NyaWJlKFsncHJpdmFjeS1jaGFuZ2Vk JywncHJpdmFjeS1hdmFpbGFiaWxpdHktY2hhbmdlZCddLGliKTtoYS5zdWJzY3Jp YmUoJ3N0YXRlLWNoYW5nZWQnLGZ1bmN0aW9uKGpiLGtiKXtmb3IodmFyIGxiIGlu IGtiKXt2YXIgbWI9a2JbbGJdJiZrYltsYl0ubGVuZ3RoLG5iPXphW2xiXTtuYiYm bmIuc2hvd1R5cGluZ0luZGljYXRvcihtYik7fX0pO2RhLnN1YnNjcmliZSgndGhy ZWFkcy11cGRhdGVkJyxmdW5jdGlvbihqYixrYil7Zm9yKHZhciBsYiBpbiB6YSlr YltsYl0mJnphW2xiXS51cGRhdGVUYWIoKTt9KTtkYS5zdWJzY3JpYmUoJ3RocmVh ZHMtZGVsZXRlZCcsZnVuY3Rpb24oamIsa2Ipe2Zvcih2YXIgbGIgaW4gemEpaGIu aW5mb3JtKCd0aHJlYWQtZGVsZXRlZCcsbGIpO30pO3ZhKGhiLGgse2dldDpmdW5j dGlvbihqYil7cmV0dXJuIHphW2piXTt9fSk7dmEoaGIucHJvdG90eXBlLHtnZXRU aHJlYWRJRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90aHJlYWRJRDt9LGlzVmlz aWJsZTpmdW5jdGlvbigpe3JldHVybiB1LnNob3duKHRoaXMuX3RhYkVsZW0pO30s c2V0VmlzaWJsZVN0YXRlOmZ1bmN0aW9uKGpiLGtiKXt2YXIgbGI9dS5zaG93bih0 aGlzLl90YWJFbGVtKSxtYj11Lmhhc0NsYXNzKHRoaXMuX3RhYkVsZW0sJ29wZW5l ZCcpO3UuY29uZGl0aW9uU2hvdyh0aGlzLl90YWJFbGVtLGpiKTt1LmNvbmRpdGlv bkNsYXNzKHRoaXMuX3RhYkVsZW0sJ29wZW5lZCcsa2IpO2lmKCEobGImJm1iKSYm amImJmtiKXtpZighdGhpcy5fbWVzc2FnZXNWaWV3KXRoaXMuX21lc3NhZ2VzVmll dz1uZXcgcih0aGlzLl90aHJlYWRJRCx0aGlzLl9nZXROb2RlKCdjaGF0Q29udicp LHRoaXMuX2dldE5vZGUoJ2NvbnZlcnNhdGlvbicpLHRoaXMuX2dldE5vZGUoJ3R5 cGluZ0luZGljYXRvcicpKTt0aGlzLl9udWJDb250cm9sbGVyLmZseW91dENvbnRl bnRDaGFuZ2VkKCk7dGhpcy5fbWVzc2FnZXNWaWV3LnNjcm9sbFRvQm90dG9tKCk7 fWlmKGxiJiZtYiYmIShqYiYma2IpKXRoaXMuX2NvbnRleHR1YWxEaWFsb2dDb250 cm9sbGVyLnRhYk5vdEFjdGl2ZSgpO30sZm9jdXM6ZnVuY3Rpb24oKXt2YXIgamI9 dS5oYXNDbGFzcyh0aGlzLl90YWJFbGVtLCdvcGVuZWQnKT8naW5wdXQnOidkb2Nr QnV0dG9uJzt0aGlzLl9nZXROb2RlKGpiKS5mb2N1cygpO30saXNGb2N1c2VkOmZ1 bmN0aW9uKCl7dmFyIGpiPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGph LmJ5Q2xhc3MoamIsJ2ZiTWVyY3VyeUNoYXRUYWInKT09PXRoaXMuX3RhYkVsZW07 fSxzZXRJbnB1dDpmdW5jdGlvbihqYil7dGhpcy5fZ2V0Tm9kZSgnaW5wdXQnKS52 YWx1ZT1qYjt9LGluc2VydEJlZm9yZTpmdW5jdGlvbihqYil7eC5pbnNlcnRCZWZv cmUoamIuX3RhYkVsZW0sdGhpcy5fdGFiRWxlbSk7fSxhcHBlbmRUbzpmdW5jdGlv bihqYil7eC5hcHBlbmRDb250ZW50KGpiLHRoaXMuX3RhYkVsZW0pO30sbmV4dFRh YklzOmZ1bmN0aW9uKGpiKXt2YXIga2I9amImJmpiLl90YWJFbGVtO3JldHVybiB0 aGlzLl90YWJFbGVtLm5leHRTaWJsaW5nPT1rYjt9LGRlc3Ryb3k6ZnVuY3Rpb24o KXt4LnJlbW92ZSh0aGlzLl90YWJFbGVtKTt0aGlzLl9lbW90aWNvblZpZXcmJnRo aXMuX2Vtb3RpY29uVmlldy5kZXN0cm95KCk7d2hpbGUodGhpcy5fZXZlbnRMaXN0 ZW5lcnMubGVuZ3RoKXRoaXMuX2V2ZW50TGlzdGVuZXJzLnBvcCgpLnJlbW92ZSgp O3RoaXMuX21lc3NhZ2VzVmlldyYmdGhpcy5fbWVzc2FnZXNWaWV3LmRlc3Ryb3ko KTt0aGlzLl9zaGVldENvbnRyb2xsZXIuZGVzdHJveSgpO3RoaXMuX2NvbnRleHR1 YWxEaWFsb2dDb250cm9sbGVyLmRlc3Ryb3koKTt0aGlzLl9wcml2YWN5QWN0aW9u Q29udHJvbGxlciYmdGhpcy5fcHJpdmFjeUFjdGlvbkNvbnRyb2xsZXIuZGVzdHJv eSgpO2RlbGV0ZSB6YVt0aGlzLl90aHJlYWRJRF07dy51bnJlZ2lzdGVyTnViQ29u dHJvbGxlcih0aGlzLl9udWJDb250cm9sbGVyKTt9LHVwZGF0ZUF2YWlsYWJsZVN0 YXR1czpmdW5jdGlvbigpe3ZhciBqYj17YWN0aXZlOmZhbHNlLG1vYmlsZTpmYWxz ZSxncmVlbnBob25lOmZhbHNlfSxrYj10aGlzLl9nZXRDYW5vbmljYWxVc2VySUQo KSxsYj10cnVlLG1iPWZhbHNlO2lmKGtiKXt2YXIgbmI9ay5nZXQoa2IpO2xiPSF0 LmlzT25saW5lKCk7bWI9IWthLmFsbG93cyhrYik7amIuYWN0aXZlPShuYj09PWwu QUNUSVZFKTtpZihtLmdldCgnc2lkZWJhcl9tb2JpbGVfaWNvbl9ncmVlbicpKXtq Yi5ncmVlbnBob25lPW5iPT09bC5NT0JJTEU7fWVsc2UgamIubW9iaWxlPW5iPT09 bC5NT0JJTEU7dGhpcy5fdXBkYXRlQ2FsbExpbmsobmIpO311LmNvbmRpdGlvbkNs YXNzKHRoaXMuX3RhYkVsZW0sJ2NoYXRPZmZsaW5lJyxsYik7dS5jb25kaXRpb25D bGFzcyh0aGlzLl90YWJFbGVtLCdibG9ja2VkJywhbGImJm1iKTtmb3IodmFyIG9i IGluIGpiKXUuY29uZGl0aW9uQ2xhc3ModGhpcy5fdGFiRWxlbSxvYiwhbGImJiFt YiYmamJbb2JdKTt9LHVwZGF0ZVRhYjpmdW5jdGlvbigpe2dhLmdldFRocmVhZE1l

dGEodGhpcy5fdGhyZWFkSUQsZnVuY3Rpb24oamIpe2lmKCFqYi5pc19zdWJzY3Jp YmVkKXtoYi5pbmZvcm0oJ3Vuc3Vic2NyaWJlZCcsdGhpcy5fdGhyZWFkSUQpO3Jl dHVybjt9ZWEucmVuZGVyQW5kU2VwYXJhdGVkUGFydGljaXBhbnRMaXN0KHRoaXMu X3RocmVhZElELFt0aGlzLl9nZXROb2RlKCduYW1lJyksdGhpcy5fZ2V0Tm9kZSgn dGl0bGViYXJUZXh0JyldLHtuYW1lc19yZW5kZXJlcjpmYS5yZW5kZXJTaG9ydE5h bWVzLGNoZWNrX2xlbmd0aDp0cnVlfSk7dGhpcy5fdXBkYXRlVW5yZWFkQ291bnQo amIpO3RoaXMudXBkYXRlTXVsdGljaGF0VG9vbHRpcCgpO3RoaXMuX3VwZGF0ZUFy Y2hpdmVXYXJuaW5nKGpiKTt9LmJpbmQodGhpcykpO30sX3VwZGF0ZUFyY2hpdmVX YXJuaW5nOmZ1bmN0aW9uKGpiKXt2YXIga2I9ZmFsc2U7YmEuZ2V0KGJhLnVzZXIs ZnVuY3Rpb24obGIpe2tiPWxiLmVtcGxveWVlO2lmKGtiKWJhLmdldE11bHRpKGpi LnBhcnRpY2lwYW50cyx0aGlzLl9zaG93QXJjaGl2ZVdhcm5pbmdJZkFsbFBhcnRp Y2lwYW50c0FyZUVtcGxveWVlcy5iaW5kKHRoaXMpKTt9LmJpbmQodGhpcykpO30s X3Nob3dBcmNoaXZlV2FybmluZ0lmQWxsUGFydGljaXBhbnRzQXJlRW1wbG95ZWVz OmZ1bmN0aW9uKGpiKXt2YXIga2I9dHJ1ZTtmb3IodmFyIGxiIGluIGpiKWtiPWti JiZqYltsYl0uZW1wbG95ZWU7dmFyIG1iPXRoaXMuX2dldE5vZGUoJ3RpdGFuQXJj aGl2ZVdhcm5pbmcnKTtpZihtYil7aWYodGhpcy5fdGl0bGViYXJUb29sdGlwQW5j aG9yKXUuY29uZGl0aW9uQ2xhc3ModGhpcy5fdGl0bGViYXJUb29sdGlwQW5jaG9y LCduYXJyb3dUaXRsZUJhcicsa2IpO3UuY29uZGl0aW9uU2hvdyhtYixrYik7fX0s dXBkYXRlTXVsdGljaGF0VG9vbHRpcDpmdW5jdGlvbigpe2lmKGdhLmlzTXVsdGlj aGF0VGhyZWFkKHRoaXMuX3RocmVhZElEKSlnYS5nZXRUaHJlYWRNZXRhKHRoaXMu X3RocmVhZElELGZ1bmN0aW9uKGpiKXthYih0aGlzLl90aXRsZWJhclRvb2x0aXBB bmNob3IsamIucGFydGljaXBhbnRzKTt9LmJpbmQodGhpcykpO30sX2dldE5vZGU6 ZnVuY3Rpb24oamIpe3JldHVybiB0aGlzLl90YWJUZW1wbGF0ZS5nZXROb2RlKGpi KTt9LF9nZXRDYW5vbmljYWxVc2VySUQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ2EuZ2V0 Q2Fub25pY2FsVXNlckluVGhyZWFkKHRoaXMuX3RocmVhZElEKTt9LF9saXN0ZW46 ZnVuY3Rpb24oamIsZXZlbnQsa2IsbGIpe3ZhciBtYj10aGlzLl9nZXROb2RlKGpi KTtpZihtYil7dGhpcy5fZXZlbnRMaXN0ZW5lcnMucHVzaChFdmVudC5saXN0ZW4o bWIsZXZlbnQsa2IuYmluZCh0aGlzKSkpO31lbHNlIGlmKCFsYil0aHJvdyBuZXcg RXJyb3IoJ0NvdWxkIG5vdCBmaW5kIG5vZGUgIicramIrJyInKTt9LF9jbG9zZUNs aWNrZWQ6ZnVuY3Rpb24oamIpe2hiLmluZm9ybSgnY2xvc2VkLXRhYicsdGhpcy5f dGhyZWFkSUQpO2piLnByZXZlbnQoKTt9LF9udWJDbGlja2VkOmZ1bmN0aW9uKCl7 cmV0dXJuIGhiLmluZm9ybSgnbnViLWFjdGl2YXRlZCcsdGhpcy5fdGhyZWFkSUQp O30sX2RvY2tLZXlEb3duOmZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC5rZXlDb2Rl PT09ei5SRVRVUk58fGV2ZW50LmtleUNvZGU9PT16LlNQQUNFKXtoYi5pbmZvcm0o J251Yi1hY3RpdmF0ZWQnLHRoaXMuX3RocmVhZElEKTtldmVudC5raWxsKCk7fWVs c2UgdGhpcy5faGFuZGxlSG90a2V5UHJlc3NlZChldmVudCk7fSxfaGFuZGxlSG90 a2V5UHJlc3NlZDpmdW5jdGlvbihldmVudCl7aWYoZXZlbnQua2V5Q29kZT09PXou RVNDKXtoYi5pbmZvcm0oJ2VzYy1wcmVzc2VkJyx0aGlzLl90aHJlYWRJRCk7ZXZl bnQua2lsbCgpO31lbHNlIGlmKGV2ZW50LmtleUNvZGU9PT16LlRBQil7dmFyIGpi PWhiLmluZm9ybSgndGFiLXByZXNzZWQnLHtpZDp0aGlzLl90aHJlYWRJRCxzaGlm dFByZXNzZWQ6ZXZlbnQuc2hpZnRLZXl9KTshamImJmV2ZW50LmtpbGwoKTt9fSxf aXNUaXRsZVRleHRMaW5rZWQ6ZnVuY3Rpb24oKXt2YXIgamI9dGhpcy5fZ2V0Q2Fu b25pY2FsVXNlcklEKCk7cmV0dXJuIGpiJiZtLmdldCgnY2hhdF90YWJfdGl0bGVf bGlua190aW1lbGluZScpO30sX3RpdGxlQ2xpY2tlZDpmdW5jdGlvbihldmVudCl7 dmFyIGpiPWV2ZW50LmdldFRhcmdldCgpLGtiPWphLmJ5Q2xhc3MoamIsJ3RpdGxl YmFyVGV4dCcpLGxiPWtiJiZ0aGlzLl9pc1RpdGxlVGV4dExpbmtlZCgpO2lmKCFs YiYmIWphLmJ5Q2xhc3MoamIsJ3VpU2VsZWN0b3InKSYmIWphLmJ5Q2xhc3MoamIs J2FkZFRvVGhyZWFkJykpaGIuaW5mb3JtKCdsb3dlci1hY3RpdmF0ZWQnLHRoaXMu X3RocmVhZElEKTt9LF9jYWxsQ2xpY2tlZDpmdW5jdGlvbihqYil7dmFyIGtiPXRo aXMuX2dldENhbm9uaWNhbFVzZXJJRCgpO2lmKHJhLmF2YWlsYWJsZUZvckNhbGwo a2IpKXt2YXIgbGI9J2NoYXRfdGFiX2ljb24nO2lmKGpiLnRhcmdldCYmdS5oYXND bGFzcyhqYi50YXJnZXQsJ3ZpZGVvX2NhbGxfcHJvbW8nKSl7bGI9J2NoYXRfdGFi X2ljb25fcHJvbW8nO31lbHNlIGlmKGpiLnRhcmdldCYmdS5oYXNDbGFzcyhqYi50 YXJnZXQsJ3ZpZGVvX2NhbGxfdG91cicpKWxiPSdjaGF0X3RhYl9pY29uX3RvdXIn O2hiLmluZm9ybSgndmlkZW8tY2FsbC1jbGlja2VkJyx7dGhyZWFkSUQ6dGhpcy5f dGhyZWFkSUQsdXNlcklEOmtiLGNsaWNrU291cmNlOmxifSk7fXJldHVybiBmYWxz ZTt9LF9hZGRGcmllbmRMaW5rQ2xpY2tlZDpmdW5jdGlvbigpe3RoaXMuX3NoZWV0 Q29udHJvbGxlci5vcGVuQWRkRnJpZW5kc1NoZWV0KCk7fSxfY2xlYXJIaXN0b3J5 OmZ1bmN0aW9uKCl7dmFyIGpiPWdhLmdldFRocmVhZE1ldGFOb3codGhpcy5fdGhy ZWFkSUQpO2lmKGpiKXt2YXIga2I9dGhpcy5fZ2V0Q2Fub25pY2FsVXNlcklEKCk7

Y2EuY2xlYXJDaGF0KHRoaXMuX3RocmVhZElELGtiLGpiLnRpbWVzdGFtcCk7fX0s X3Vuc3Vic2NyaWJlTGlua0NsaWNrZWQ6ZnVuY3Rpb24oKXt2YXIgamI9W107amIu cHVzaCh7bmFtZTondW5zdWJzY3JpYmUnLGxhYmVsOiJUaW5nZ2Fsa2FuIFBlcmNh a2FwYW4iLGhhbmRsZXI6dGhpcy5fdW5zdWJzY3JpYmVUb1RocmVhZC5iaW5kKHRo aXMpfSk7amIucHVzaCh2LkNBTkNFTCk7bmV3IHYoKS5zZXRUaXRsZSgiVGluZ2dh bGthbiBQZXJjYWthcGFuPyIpLnNldEJvZHkoIkFuZGEgYWthbiBiZXJoZW50aSBt ZW5lcmltYSBwZXNhbiBkYXJpIHBlcmNha2FwYW4gaW5pIGRhbiBvcmFuZyBha2Fu IG1lbGloYXQgYmFod2EgQW5kYSBrZWx1YXIuIikuc2V0QnV0dG9ucyhqYikuc2hv dygpO30sX3JlcG9ydFNwYW1DbGlja2VkOmZ1bmN0aW9uKCl7dmFyIGpiPXRoaXMu X2dldENhbm9uaWNhbFVzZXJJRCgpLGtiPXBhKCcvYWpheC9jaGF0L3JlcG9ydC5w aHAnKS5hZGRRdWVyeURhdGEoe2lkOmpifSkuYWRkUXVlcnlEYXRhKHtzcmM6J3Rv cF9yZXBvcnRfbGluayd9KTtpLnNlbmQobmV3IGooa2IpKTt9LF9mb2N1c1RhYjpm dW5jdGlvbigpe3UuYWRkQ2xhc3ModGhpcy5fdGFiRWxlbSwnZm9jdXNlZFRhYicp O2hiLmluZm9ybSgnZm9jdXNlZCcsdGhpcy5fdGhyZWFkSUQpO3RoaXMuX2NvbnRl eHR1YWxEaWFsb2dDb250cm9sbGVyLnRhYkZvY3VzZWQoKTt9LF9ibHVyVGFiOmZ1 bmN0aW9uKCl7dS5yZW1vdmVDbGFzcyh0aGlzLl90YWJFbGVtLCdmb2N1c2VkVGFi Jyk7fSxfaW5wdXRLZXlEb3duOmZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC5rZXlD b2RlPT09ei5SRVRVUk4mJiFldmVudC5zaGlmdEtleSl7dmFyIGpiPXRoaXMuX2dl dE5vZGUoJ2lucHV0Jyksa2I9amIudmFsdWV8fCcnO2lmKCEvXlxzKiQvLnRlc3Qo a2IpKWdhLmdldFRocmVhZE1ldGEodGhpcy5fdGhyZWFkSUQsZnVuY3Rpb24obGIp e3ZhciBtYj1hYS5jb25zdHJ1Y3RVc2VyR2VuZXJhdGVkTWVzc2FnZU9iamVjdChr Yix0YS5NZXJjdXJ5U291cmNlVHlwZS5DSEFUX1dFQix0aGlzLl90aHJlYWRJRCk7 aWYoZ2EuaXNFbXB0eUxvY2FsVGhyZWFkKHRoaXMuX3RocmVhZElEKSl7dmFyIG5i PWNhLnRva2VuaXplVGhyZWFkSUQodGhpcy5fdGhyZWFkSUQpO21iLm1lc3NhZ2Vf aWQ9bmIudmFsdWU7bWIuc3BlY2lmaWNfdG9fbGlzdD1sYi5wYXJ0aWNpcGFudHM7 fWFhLnNlbmRNZXNzYWdlKG1iKTt0aGlzLl9nZXROb2RlKCdpbnB1dCcpLnZhbHVl PScnO3RoaXMuX3R5cGluZ0luZGljYXRvciYmdGhpcy5fdHlwaW5nSW5kaWNhdG9y LnJlc2V0U3RhdGUoKTt9LmJpbmQodGhpcykpO2V2ZW50LmtpbGwoKTt9aWYoZXZl bnQua2V5Q29kZT09PXouRE9XTiYmZXZlbnQuc2hpZnRLZXkmJnRoaXMuX2dldE5v ZGUoJ2lucHV0JykudmFsdWU9PT0nJyl7aGIuaW5mb3JtKCdsb3dlci1hY3RpdmF0 ZWQnLHRoaXMuX3RocmVhZElEKTtldmVudC5raWxsKCk7cmV0dXJuO310aGlzLl9o YW5kbGVIb3RrZXlQcmVzc2VkKGV2ZW50KTt9LF9jaGF0Q29udkNsaWNrZWQ6ZnVu Y3Rpb24oKXsheC5nZXRTZWxlY3Rpb24oKSYmdGhpcy5mb2N1cygpO30sc2hvd1R5 cGluZ0luZGljYXRvcjpmdW5jdGlvbihqYil7dmFyIGtiPXRoaXMuX2dldENhbm9u aWNhbFVzZXJJRCgpfHwobS5nZXQoJ2NoYXRfbXVsdGlfdHlwJykmJmdhLmlzTXVs dGljaGF0VGhyZWFkKHRoaXMuX3RocmVhZElEKSk7aWYoa2IpdS5jb25kaXRpb25D bGFzcyh0aGlzLl90YWJFbGVtLCd0eXBpbmcnLGpiKTt9LF91cGRhdGVVbnJlYWRD b3VudDpmdW5jdGlvbihqYil7dmFyIGtiPWpiLnVucmVhZF9jb3VudDtpZih0eXBl b2Yga2IhPSd1bmRlZmluZWQnKXt2YXIgbGI9dGhpcy5fZ2V0Tm9kZSgnbnVtTWVz c2FnZXMnKTt1LmNvbmRpdGlvblNob3cobGIsa2IpO3UuY29uZGl0aW9uQ2xhc3Mo dGhpcy5fdGFiRWxlbSwnaGlnaGxpZ2h0VGFiJyxrYik7ZWIodGhpcy5fdGhyZWFk SUQsdGhpcy5fdGFiRWxlbSwhIWtiKTt4LnNldENvbnRlbnQobGIsa2IpO319LF91 cGRhdGVDYWxsTGluazpmdW5jdGlvbihqYil7dmFyIGtiPXRoaXMuX2dldE5vZGUo J3ZpZGVvQ2FsbExpbmsnKTtpZih0LmlzT25saW5lKCkpe3ZhciBsYj10aGlzLl9n ZXRDYW5vbmljYWxVc2VySUQoKSxtYj0nZmJpZDonK2xiO2JhLmdldChtYixmdW5j dGlvbihuYil7aWYocmEuYXZhaWxhYmxlRm9yQ2FsbChsYikpe25hLnNldChrYix4 YS5fKCJNdWxhaSB0ZWxlcG9uIHZpZGVvIGRlbmdhbiB7Zmlyc3RuYW1lfSIse2Zp cnN0bmFtZTpuYi5zaG9ydF9uYW1lfSkpO3RoaXMuX3VwZGF0ZUNhbGxCYWNrTGlu a3ModGhpcy5fdGFiRWxlbSx0cnVlKTt9ZWxzZXtuYS5zZXQoa2IseGEuXygiU2Fh dCBpbmkge2ZpcnN0bmFtZX0gdGlkYWsgdGVyc2VkaWEgdW50dWsgdGVsZXBvbiB2 aWRlbyIse2ZpcnN0bmFtZTpuYi5zaG9ydF9uYW1lfSkpO3RoaXMuX2hpZGVWaWRl b0NhbGxvdXRzKCk7dGhpcy5fdXBkYXRlQ2FsbEJhY2tMaW5rcyh0aGlzLl90YWJF bGVtLGZhbHNlKTt9fS5iaW5kKHRoaXMpKTt9ZWxzZXtuYS5zZXQoa2IsIkFuZGEg aGFydXMgb25saW5lIHVudHVrIG1lbGFrdWthbiBwYW5nZ2lsYW4uIik7dGhpcy5f aGlkZVZpZGVvQ2FsbG91dHMoKTt0aGlzLl91cGRhdGVDYWxsQmFja0xpbmtzKGRv Y3VtZW50LmJvZHksZmFsc2UpO319LF91cGRhdGVDYWxsQmFja0xpbmtzOmZ1bmN0 aW9uKGpiLGtiKXt2YXIgbGI9eC5zY3J5KGpiLCdhLmNhbGxCYWNrTGluaycpO2lm KGtiKXtsYi5mb3JFYWNoKHUuc2hvdyk7fWVsc2UgbGIuZm9yRWFjaCh1LmhpZGUp O30sX2hpZGVWaWRlb0NhbGxvdXRzOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dHVh bERpYWxvZ0NvbnRyb2xsZXIuaGlkZVZpZGVvQ2FsbG91dHMoKTt9LF91cGRhdGVQ

cml2YWN5TGluazpmdW5jdGlvbihqYil7aWYoamI9PXAuT0ZGTElORSl7eC5zZXRD b250ZW50KHRoaXMuX3ByaXZhY3lMaW5rLCJKYWRpa2FuIG9ubGluZSIpO31lbHNl e3ZhciBrYj10aGlzLl9nZXRDYW5vbmljYWxVc2VySUQoKSxsYj0nZmJpZDonK2ti O2JhLmdldChsYixmdW5jdGlvbihtYil7dmFyIG5iPW51bGw7aWYoamI9PXAuQkxP Q0tFRCl7aWYoc2EuQ2hhdENvbnRyb2xMYW5ndWFnZUNoYW5nZUdLKXtuYj14YS5f KCJIaWR1cGthbiBPYnJvbGFuIGRhcmkge25hbWV9Iix7bmFtZTptYi5zaG9ydF9u YW1lfSk7fWVsc2UgbmI9eGEuXygiSmFkaWthbiBPbmxpbmUgdW50dWsge25hbWV9 Iix7bmFtZTptYi5zaG9ydF9uYW1lfSk7fWVsc2UgaWYoc2EuQ2hhdENvbnRyb2xM YW5ndWFnZUNoYW5nZUdLKXtuYj14YS5fKCJNYXRpa2FuIG9icm9sYW4gZGFyaSB7 bmFtZX0iLHtuYW1lOm1iLnNob3J0X25hbWV9KTt9ZWxzZSBuYj14YS5fKCJKYWRp a2FuIG9mZmxpbmUgYmFnaSB7bmFtZX0iLHtuYW1lOm1iLnNob3J0X25hbWV9KTt4 LnNldENvbnRlbnQodGhpcy5fcHJpdmFjeUxpbmssbmIpO30uYmluZCh0aGlzKSk7 fX0sX3Vuc3Vic2NyaWJlVG9UaHJlYWQ6ZnVuY3Rpb24oKXtpZihnYS5pc0VtcHR5 TG9jYWxUaHJlYWQodGhpcy5fdGhyZWFkSUQpKXtoYi5pbmZvcm0oJ3Vuc3Vic2Ny aWJlZCcsdGhpcy5fdGhyZWFkSUQpO31lbHNle3ZhciBqYj1hYS5jb25zdHJ1Y3RM b2dNZXNzYWdlT2JqZWN0KHRhLk1lcmN1cnlTb3VyY2VUeXBlLkNIQVRfV0VCLHRo aXMuX3RocmVhZElELHRhLk1lcmN1cnlMb2dNZXNzYWdlVHlwZS5VTlNVQlNDUklC RSx7fSk7YWEuc2VuZE1lc3NhZ2UoamIpO31yZXR1cm4gdHJ1ZTt9LF9lbW90aWNv blZpZXc6bnVsbH0pO2UuZXhwb3J0cz1oYjt9KTsKX19kKCJDaGF0TmV3TWVzc2Fn ZUhhbmRsZXIiLFsiQ2hhdEFjdGl2aXR5IiwiQ2hhdFRhYk1vZGVsIiwiQ2hhdFRh YlZpZXciLCJKU0xvZ2dlciIsIk1lcmN1cnlBc3NlcnQiLCJNZXJjdXJ5QnJvd3Nl ckFsZXJ0cyIsIk1lcmN1cnlUaHJlYWRzIiwiTWVyY3VyeVVuc2VlblN0YXRlIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0NoYXRBY3Rpdml0eScpLGg9 YignQ2hhdFRhYk1vZGVsJyksaT1iKCdDaGF0VGFiVmlldycpLGo9YignSlNMb2dn ZXInKSxrPWIoJ01lcmN1cnlBc3NlcnQnKSxsPWIoJ01lcmN1cnlCcm93c2VyQWxl cnRzJyksbT1iKCdNZXJjdXJ5VGhyZWFkcycpLG49YignTWVyY3VyeVVuc2VlblN0 YXRlJyksbz1qLmNyZWF0ZSgnY2hhdF9uZXdfbWVzc2FnZScpLHA9e19yYWlzZVRh YjpmdW5jdGlvbihxLHIpe3ZhciBzPWguZ2V0VGFiKHEpLHQ9ZmFsc2U7aWYocyl7 dD1zLnJhaXNlZDt9ZWxzZXtoLnJhaXNlVGFiKHEsZmFsc2UpO3Q9dHJ1ZTt9ci50 b19uZXdfdGFiPSFzO3IudG9fcmFpc2VkX3RhYj0hIXQ7fSxfbm90aWZ5OmZ1bmN0 aW9uKHEscixzKXt2YXIgdD1pLmdldChxKTtzLnZpZXdfaXNfdmlzaWJsZT10JiZ0 LmlzVmlzaWJsZSgpO3Mudmlld19pc19mb2N1c2VkPXQmJnQuaXNGb2N1c2VkKCk7 aWYoIXMudmlld19pc192aXNpYmxlKW8ubG9nKCdtZXNzYWdlX3RvX2hpZGRlbicp O3MuaXNfYWN0aXZlPWcuaXNBY3RpdmUoKTtsLm1lc3NhZ2VSZWNlaXZlZChyKTt9 LG5ld01lc3NhZ2U6ZnVuY3Rpb24ocSxyKXtrLmlzVGhyZWFkSUQocSk7dmFyIHM9 e3RocmVhZF9pZDpxLG1lc3NhZ2VfaWQ6ci5tZXNzYWdlX2lkfTt0aGlzLl9yYWlz ZVRhYihxLHMpO3RoaXMuX25vdGlmeShxLHIscyk7by5sb2coJ21lc3NhZ2UnLHMp O319O2wuc3Vic2NyaWJlKCdiZWZvcmUtYWxlcnQnLGZ1bmN0aW9uKHEsZXZlbnQp e3ZhciByPWV2ZW50LnRocmVhZElELHM9aS5nZXQociksdD1oLmdldFRhYihyKTtp Zih0JiZ0LnJhaXNlZCYmcyYmcy5pc1Zpc2libGUoKSYmcy5pc0ZvY3VzZWQoKSl7 bS5jaGFuZ2VUaHJlYWRSZWFkU3RhdHVzKHIsdHJ1ZSk7bi5tYXJrVGhyZWFkU2Vl bihyKTtldmVudC5jYW5jZWxBbGVydCgpO319KTtlLmV4cG9ydHM9cDt9KTsKX19k KCJDaGF0VGFiUHJlc2VuY2UiLFsiQXJiaXRlciIsIkF2YWlsYWJsZUxpc3QiLCJD aGF0VGFiTW9kZWwiLCJNZXJjdXJ5VGhyZWFkcyJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBdmFpbGFibGVMaXN0JyksaT1i KCdDaGF0VGFiTW9kZWwnKSxqPWIoJ01lcmN1cnlUaHJlYWRzJyksaz17fTtmdW5j dGlvbiBsKG0pe3ZhciBuPWouZ2V0Q2Fub25pY2FsVXNlckluVGhyZWFkKG0pO2lm KG4paC51cGRhdGVGb3JJRChuKTt9aS5zdWJzY3JpYmUoJ2NoYXQvdGFicy1jaGFu Z2VkJyxmdW5jdGlvbihldmVudCxtKXttLnRhYnMuZm9yRWFjaChmdW5jdGlvbihu KXtpZihuLnJhaXNlZCYmIWtbbi5pZF0pbChuLmlkKTt9KTtrPXt9O20udGFicy5m b3JFYWNoKGZ1bmN0aW9uKG4pe2lmKG4ucmFpc2VkKWtbbi5pZF09dHJ1ZTt9KTt9 KTtlLmV4cG9ydHM9e307fSk7Cl9fZCgiQ2hhdFRhYlBvbGljeSIsWyJDaGF0QmVo YXZpb3IiLCJDaGF0Q29uZmlnIiwiRkJEZXNrdG9wUGx1Z2luIiwiSlNMb2dnZXIi LCJNZXJjdXJ5QXNzZXJ0IiwiTWVyY3VyeVBhcnRpY2lwYW50cyIsIk1lcmN1cnlU aHJlYWRzIiwiTWVyY3VyeVVuc2VlblN0YXRlIiwiUHJlc2VuY2VQcml2YWN5Iiwi U2hvcnRQcm9maWxlcyIsIk1lcmN1cnlDb25zdGFudHMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignQ2hhdEJlaGF2aW9yJyksaD1iKCdDaGF0Q29uZmln JyksaT1iKCdGQkRlc2t0b3BQbHVnaW4nKSxqPWIoJ0pTTG9nZ2VyJyksaz1iKCdN ZXJjdXJ5QXNzZXJ0JyksbD1iKCdNZXJjdXJ5UGFydGljaXBhbnRzJyksbT1iKCdN ZXJjdXJ5VGhyZWFkcycpLG49YignTWVyY3VyeVVuc2VlblN0YXRlJyksbz1iKCdQ

cmVzZW5jZVByaXZhY3knKSxwPWIoJ1Nob3J0UHJvZmlsZXMnKSxxPWMoJ01lcmN1 cnlDb25zdGFudHMnKSxyPWouY3JlYXRlKCd0YWJfcG9saWN5Jyk7ZnVuY3Rpb24g cyh0LHUpe24ubWFya1RocmVhZFNlZW4odCx1KTt9ZS5leHBvcnRzPXttZXNzYWdl SXNBbGxvd2VkOmZ1bmN0aW9uKHQsdSx2KXt2YXIgdz10LnRocmVhZF9pZCx4PXUu bWVzc2FnZV9pZDtrLmlzVGhyZWFkSUQodyk7ay5pc1BhcnRpY2lwYW50SUQodS5h dXRob3IpO3ZhciB5O2lmKHQubW9kZT09cS5NZXJjdXJ5VGhyZWFkTW9kZS5PQkpF Q1RfT1JJR0lOQVRFRCl7eT17dGhyZWFkX2lkOncsbWVzc2FnZV9pZDp4LG1vZGU6 dC5tb2RlfTtyLmxvZygnbWVzc2FnZV9vYmplY3Rfb3JpZ2luYXRlZCcseSk7cmV0 dXJuO312YXIgej1xLk1lcmN1cnlTb3VyY2VUeXBlO2lmKHUuc291cmNlPT16LkVN QUlMfHx1LnNvdXJjZT09ei5USVRBTl9FTUFJTF9SRVBMWSl7eT17dGhyZWFkX2lk OncsbWVzc2FnZV9pZDp4LHNvdXJjZTp1LnNvdXJjZX07ci5sb2coJ21lc3NhZ2Vf c291cmNlX25vdF9hbGxvd2VkJyx5KTtyZXR1cm47fXZhciBhYT1sLmdldFVzZXJJ RCh1LmF1dGhvcik7aWYoIWFhKXtyLmxvZygnbWVzc2FnZV9iYWRfYXV0aG9yJyx7 dGhyZWFkX2lkOncsbWVzc2FnZV9pZDp4LHVzZXI6YWF9KTtyZXR1cm47fWlmKHUu YWN0aW9uX3R5cGUhPXEuTWVyY3VyeUFjdGlvblR5cGUuVVNFUl9HRU5FUkFURURf TUVTU0FHRSl7eT17dGhyZWFkX2lkOncsbWVzc2FnZV9pZDp4LHR5cGU6dS5hY3Rp b25fdHlwZX07ci5sb2coJ21lc3NhZ2Vfbm9uX3VzZXJfZ2VuZXJhdGVkJyx5KTty ZXR1cm47fWlmKHQuaXNfY2Fub25pY2FsX3VzZXImJiFnLm5vdGlmaWVzVXNlck1l c3NhZ2VzKCkpe3IubG9nKCdtZXNzYWdlX2phYmJlcicse3RocmVhZF9pZDp3LG1l c3NhZ2VfaWQ6eH0pO3Modyx0cnVlKTtyZXR1cm47fWlmKGkuc2hvdWxkU3VwcHJl c3NNZXNzYWdlcygpKXtyLmxvZygnbWVzc2FnZV9kZXNrdG9wJyx7dGhyZWFkX2lk OncsbWVzc2FnZV9pZDp4fSk7cmV0dXJuO31pZih0LmZvbGRlciE9cS5NZXNzYWdp bmdUYWcuSU5CT1gpe3IubG9nKCdtZXNzYWdlX2ZvbGRlcicse3RocmVhZF9pZDp3 LG1lc3NhZ2VfaWQ6eCxmb2xkZXI6dC5mb2xkZXJ9KTtyZXR1cm47fXAuZ2V0KGFh LGZ1bmN0aW9uKGJhKXtpZighby5hbGxvd3MoYWEpKXtyLmxvZygnbWVzc2FnZV9w cml2YWN5Jyx7dGhyZWFkX2lkOncsbWVzc2FnZV9pZDp4LHVzZXI6YWF9KTtyZXR1 cm47fWlmKGJhLnR5cGUhPSdmcmllbmQnKXtyLmxvZygnbWVzc2FnZV9ub25fZnJp ZW5kJyx7dGhyZWFkX2lkOncsbWVzc2FnZV9pZDp4LHVzZXI6YWF9KTtyZXR1cm47 fXYoKTt9KTt9fTt9KTsKX19kKCJDaGF0VGFiVmlld1NlbGVjdG9yIixbIkFyYml0 ZXIiLCJjb3B5UHJvcGVydGllcyIsIkNTUyIsIkRhdGFTdG9yZSIsIkRPTSIsIk1l bnUiLCJNZXJjdXJ5VGhyZWFkSW5mb3JtZXIiLCJNZXJjdXJ5VGhyZWFkcyIsIk51 YkNvbnRyb2xsZXIiLCJNZXJjdXJ5VGhyZWFkTWV0YWRhdGFSZW5kZXJlciIsIlRv Z2dsZXIiLCJDaGF0VGFiVGVtcGxhdGVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaT1iKCdD U1MnKSxqPWIoJ0RhdGFTdG9yZScpLGs9YignRE9NJyksbD1iKCdNZW51JyksbT1i KCdNZXJjdXJ5VGhyZWFkSW5mb3JtZXInKSxuPWIoJ01lcmN1cnlUaHJlYWRzJyks bz1iKCdOdWJDb250cm9sbGVyJykscD1iKCdNZXJjdXJ5VGhyZWFkTWV0YWRhdGFS ZW5kZXJlcicpLHE9YignVG9nZ2xlcicpLHI9YygnQ2hhdFRhYlRlbXBsYXRlcycp O2Z1bmN0aW9uIHModCl7dmFyIHU9clsnOmZiOmNoYXQ6dGFiOnNlbGVjdG9yJ10u YnVpbGQoKSx2PXUuZ2V0Um9vdCgpLHc9dS5nZXROb2RlKCdtZW51JykseD1rLmZp bmQodywnLnVpTWVudUlubmVyJykseT17fSx6PW5ldyBvKCkuaW5pdCh2KTtpLmhp ZGUodik7ay5pbnNlcnRCZWZvcmUodCx2KTtmdW5jdGlvbiBhYShkYSl7dmFyIGVh PTA7Zm9yKHZhciBmYSBpbiB5KXt2YXIgZ2E9eVtmYV0saGE9bi5nZXRUaHJlYWRN ZXRhTm93KGZhKSxpYT1nYS5nZXROb2RlKCd1bnJlYWRDb3VudCcpLGphPShoYSYm aGEudW5yZWFkX2NvdW50KXx8MDtlYSs9amE7aWYoamE+OSlqYT0nKyc7aS5jb25k aXRpb25DbGFzcyhpYSwnaW52aXNpYmxlX2VsZW0nLCFqYSk7ay5zZXRDb250ZW50 KGlhLGphKTt9dmFyIGthPXUuZ2V0Tm9kZSgnbnVtTWVzc2FnZXMnKTtpLmNvbmRp dGlvblNob3coa2EsZWEpO2suc2V0Q29udGVudChrYSxlYSk7fXRoaXMuc2V0VGFi RGF0YT1mdW5jdGlvbihkYSl7eT17fTtpZihkYS5sZW5ndGg8MSl7aS5oaWRlKHYp O3JldHVybjt9aS5zaG93KHYpO2suZW1wdHkoeCk7ZGEuZm9yRWFjaChmdW5jdGlv bihlYSl7dmFyIGZhPXJbJzpmYjpjaGF0OnRhYjpzZWxlY3RvcjppdGVtJ10uYnVp bGQoKTt5W2VhLmlkXT1mYTt2YXIgZ2E9ZmEuZ2V0Tm9kZSgnY29udGVudCcpO3Au cmVuZGVyQW5kU2VwYXJhdGVkUGFydGljaXBhbnRMaXN0KGVhLmlkLGdhKTtrLnBy ZXBlbmRDb250ZW50KHgsZmEuZ2V0Um9vdCgpKTtqLnNldChmYS5nZXRSb290KCks J3RocmVhZElEJyxlYS5pZCk7fSk7ei5mbHlvdXRDb250ZW50Q2hhbmdlZCgpO2su c2V0Q29udGVudCh1LmdldE5vZGUoJ251bVRhYnMnKSxkYS5sZW5ndGgpO2FhKCk7 fTtmdW5jdGlvbiBiYShldmVudCxkYSl7aWYoZGEubWVudSE9dylyZXR1cm47dmFy IGVhPWouZ2V0KGRhLml0ZW0sJ3RocmVhZElEJyk7cy5pbmZvcm0oJ3NlbGVjdGVk JyxlYSk7cS5oaWRlKHYpO31mdW5jdGlvbiBjYShldmVudCxkYSl7bC5yZWdpc3Rl cih3KTt9bC5zdWJzY3JpYmUoJ3NlbGVjdCcsYmEuYmluZCh0aGlzKSk7cS5saXN0

ZW4oJ3Nob3cnLHYsZnVuY3Rpb24oKXtnLmluZm9ybSgnbGF5ZXJfc2hvd24nLHt0 eXBlOidDaGF0VGFiU2VsZWN0b3InfSk7Y2EoKTt9KTtxLmxpc3RlbignaGlkZScs dixmdW5jdGlvbigpe2cuaW5mb3JtKCdsYXllcl9oaWRkZW4nLHt0eXBlOidDaGF0 VGFiU2VsZWN0b3InfSk7fSk7bS5zdWJzY3JpYmUoJ3RocmVhZHMtdXBkYXRlZCcs YWEpO31oKHMsbmV3IGcoKSk7ZS5leHBvcnRzPXM7fSk7Cl9fZCgiQ2hhdFRhYkNv bnRyb2xsZXIiLFsiQ2hhdFRhYlByZXNlbmNlIiwiQXJiaXRlciIsIkFzeW5jUmVx dWVzdCIsIkNoYXRBY3Rpdml0eSIsIkNoYXRDb25maWciLCJDaGF0TmV3TWVzc2Fn ZUhhbmRsZXIiLCJDaGF0VGFiTWVzc2FnZXNWaWV3IiwiQ2hhdFRhYk1vZGVsIiwi Q2hhdFRhYlBvbGljeSIsIkNoYXRUYWJWaWV3IiwiQ2hhdFRhYlZpZXdTZWxlY3Rv ciIsIkNoYXRUaXRsZUJhckJsaW5rZXIiLCJEaWFsb2ciLCJKU0xvZ2dlciIsIk1l cmN1cnlNZXNzYWdlcyIsIk1lcmN1cnlQYXJ0aWNpcGFudHMiLCJNZXJjdXJ5U2Vy dmVyUmVxdWVzdHMiLCJNZXJjdXJ5VGhyZWFkSW5mb3JtZXIiLCJNZXJjdXJ5VGhy ZWFkcyIsIk1lcmN1cnlVbnNlZW5TdGF0ZSIsIlN0eWxlIiwiVXNlckFnZW50Iiwi VmlkZW9DYWxsQ29yZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdDaGF0VGFi UHJlc2VuY2UnKTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdBc3luY1JlcXVlc3Qn KSxpPWIoJ0NoYXRBY3Rpdml0eScpLGo9YignQ2hhdENvbmZpZycpLGs9YignQ2hh dE5ld01lc3NhZ2VIYW5kbGVyJyksbD1iKCdDaGF0VGFiTWVzc2FnZXNWaWV3Jyks bT1iKCdDaGF0VGFiTW9kZWwnKSxuPWIoJ0NoYXRUYWJQb2xpY3knKSxvPWIoJ0No YXRUYWJWaWV3JykscD1iKCdDaGF0VGFiVmlld1NlbGVjdG9yJykscT1iKCdDaGF0 VGl0bGVCYXJCbGlua2VyJykscj1iKCdEaWFsb2cnKSxzPWIoJ0pTTG9nZ2VyJyks dD1iKCdNZXJjdXJ5TWVzc2FnZXMnKSx1PWIoJ01lcmN1cnlQYXJ0aWNpcGFudHMn KSx2PWIoJ01lcmN1cnlTZXJ2ZXJSZXF1ZXN0cycpLHc9YignTWVyY3VyeVRocmVh ZEluZm9ybWVyJykseD1iKCdNZXJjdXJ5VGhyZWFkcycpLHk9YignTWVyY3VyeVVu c2VlblN0YXRlJyksej1iKCdTdHlsZScpLGFhPWIoJ1VzZXJBZ2VudCcpLGJhPWIo J1ZpZGVvQ2FsbENvcmUnKSxjYT1qLmdldCgndGFiX2F1dG9fY2xvc2VfdGltZW91 dCcpfHw3MjAwMDAwLGRhPXMuY3JlYXRlKCd0YWJfY29udHJvbGxlcicpO2Z1bmN0 aW9uIGVhKHBhKXt4LmNoYW5nZVRocmVhZFJlYWRTdGF0dXMocGEsdHJ1ZSk7ZmEo cGEpO31mdW5jdGlvbiBmYShwYSl7eS5tYXJrVGhyZWFkU2VlbihwYSk7fWZ1bmN0 aW9uIGdhKCl7dmFyIHBhPW0uZ2V0KCk7cGEudGFicy5mb3JFYWNoKGZ1bmN0aW9u KHFhKXt2YXIgcmE9by5nZXQocWEuaWQpO2lmKHFhLnJhaXNlZCYmcmEmJnJhLmlz VmlzaWJsZSgpKWVhKHFhLmlkKTt9KTt9ZnVuY3Rpb24gaGEoKXt2YXIgcGE9bS5n ZXQoKTtwYS50YWJzLmZvckVhY2goZnVuY3Rpb24ocWEpe2ZhKHFhLmlkKTt9KTt9 ZnVuY3Rpb24gaWEocGEscWEscmEpe3ZhciBzYT1tLmdldCgpLnRhYnM7cGErPXFh PzE6LTE7d2hpbGUocGE+PTAmJnBhPHNhLmxlbmd0aCl7dmFyIHRhPXNhW3BhXSx1 YT1vLmdldCh0YS5pZCk7aWYodWEmJnVhLmlzVmlzaWJsZSgpJiYoIXJhfHx0YS5y YWlzZWQpKXt1YS5mb2N1cygpO3JldHVybiB0cnVlO31wYSs9cWE/MTotMTt9cmV0 dXJuIGZhbHNlO31mdW5jdGlvbiBqYShwYSl7ZnVuY3Rpb24gcWEodGEpe3ZhciB1 YT1wYS5zaG91bGRQcm9tb3RlT25SYWlzZSh0YSk7Zy5pbmZvcm0oImNoYXQvcHJv bW90ZS10YWIiLHRhKTtpZih1YSl7bS5yYWlzZUFuZFByb21vdGVUYWIodGEsdHJ1 ZSk7fWVsc2UgbS5yYWlzZVRhYih0YSx0cnVlKTt2YXIgdmE9by5nZXQodGEpO3Zh JiZ2YS5mb2N1cygpO31mdW5jdGlvbiByYSh0YSx1YSl7dmFyIHZhPW0uZ2V0KCks d2E9cGEuZ2V0TWF4VGFic1RvU2hvdygpLHhhPW0uaW5kZXhPZih0YSk7bS5jbG9z ZVRhYkFuZERlbW90ZSh0YSx3YS0yLHVhKTtyZXR1cm4geGE7fXAuc3Vic2NyaWJl KCdzZWxlY3RlZCcsZnVuY3Rpb24odGEsdWEpe3FhKHVhKTt9KTtnLnN1YnNjcmli ZSgnY2hhdC9vcGVuLXRhYicsZnVuY3Rpb24odGEsdWEpe3FhKHVhLnRocmVhZF9p ZCk7fSk7Zy5zdWJzY3JpYmUoJ3BhZ2VfdHJhbnNpdGlvbicsZnVuY3Rpb24odGEs dWEpe20uY2xvc2VGcmFnaWxlVGFicygpO30pO3Yuc3Vic2NyaWJlKCdtb2RlbC11 cGRhdGUtY29tcGxldGVkJyxoYSk7by5zdWJzY3JpYmUoJ2ZvY3VzZWQnLGZ1bmN0 aW9uKGV2ZW50LHRhKXtlYSh0YSk7fSk7aS5zdWJzY3JpYmUoJ2lkbGUnLGZ1bmN0 aW9uKHRhLHVhKXtpZih1YT5jYSl7dmFyIHZhPW0uZ2V0KCkudGFiczt2YS5mb3JF YWNoKGZ1bmN0aW9uKHdhKXt2YXIgeGE9d2EuaWQ7eC5nZXRUaHJlYWRNZXRhKHhh LGZ1bmN0aW9uKHlhKXtpZigheWEudW5yZWFkX2NvdW50KXtkYS5sb2coJ2F1dG9j bG9zZV9pZGxlX3NlZW4nLHt0aHJlYWRfaWQ6eGEsaWRsZW5lc3M6dWF9KTttLmNs b3NlVGFiKHhhLCdhdXRvY2xvc2VfaWRsZV9zZWVuJyk7fX0pO30pO319KTtvLnN1 YnNjcmliZSgnbnViLWFjdGl2YXRlZCcsZnVuY3Rpb24odGEsdWEpe3FhKHVhKTt9 KTtvLnN1YnNjcmliZSgnbG93ZXItYWN0aXZhdGVkJyxmdW5jdGlvbih0YSx1YSl7 bS5sb3dlclRhYih1YSk7dmFyIHZhPW8uZ2V0KHVhKTt2YSYmdmEuZm9jdXMoKTtl YSh1YSk7fSk7ZnVuY3Rpb24gc2EodGEsdWEpe2JhLnNob3dPdXRnb2luZ0NhbGxE aWFsb2codWEudXNlcklELHVhLmNsaWNrU291cmNlKTttLmxvd2VyVGFiKHVhLnRo cmVhZElEKTt9by5zdWJzY3JpYmUoJ3ZpZGVvLWNhbGwtY2xpY2tlZCcsc2EpO2wu

c3Vic2NyaWJlKCd2aWRlby1jYWxsLWNsaWNrZWQnLHNhKTtvLnN1YnNjcmliZSgn Y2xvc2VkLXRhYicsZnVuY3Rpb24odGEsdWEpe2RhLmxvZygnY2xvc2Vfdmlldycs e3RocmVhZF9pZDp1YX0pO3JhKHVhLCdjbG9zZV92aWV3Jyk7ZWEodWEpO3JldHVy biBmYWxzZTt9KTtvLnN1YnNjcmliZSgndGhyZWFkLWRlbGV0ZWQnLGZ1bmN0aW9u KHRhLHVhKXtkYS5sb2coJ2Nsb3NlX3RocmVhZF9kZWxldGVkJyx7dGhyZWFkX2lk OnVhfSk7cmEodWEsJ2Nsb3NlX3RocmVhZF9kZWxldGVkJyk7cmV0dXJuIGZhbHNl O30pO28uc3Vic2NyaWJlKCd1bnN1YnNjcmliZWQnLGZ1bmN0aW9uKHRhLHVhKXtk YS5sb2coJ2Nsb3NlX3ZpZXdfdW5zdWJzY3JpYmVkJyx7dGhyZWFkX2lkOnVhfSk7 cmEodWEsJ2Nsb3NlX3ZpZXdfdW5zdWJzY3JpYmVkJyk7cmV0dXJuIGZhbHNlO30p O28uc3Vic2NyaWJlKCdlc2MtcHJlc3NlZCcsZnVuY3Rpb24odGEsdWEpe2RhLmxv ZygnY2xvc2VfZXNjJyx7dGhyZWFkX2lkOnVhfSk7dmFyIHZhPXJhKHVhLCdjbG9z ZV9lc2MnKTtpYSh2YS0xLHRydWUsdHJ1ZSl8fGlhKHZhLGZhbHNlLHRydWUpO30p O3cuc3Vic2NyaWJlKCdtZXNzYWdlcy1yZWNlaXZlZCcsZnVuY3Rpb24odGEsdWEp e2Zvcih2YXIgdmEgaW4gdWEpe3ZhciB3YT11YVt2YV07Zm9yKHZhciB4YT0wO3hh PHdhLmxlbmd0aDt4YSsrKXt2YXIgeWE9d2FbeGFdO2lmKHlhLmF1dGhvciE9dS51 c2VyKXtpZigheWEuaXNfdW5yZWFkKXtkYS5sb2coJ21lc3NhZ2VfYWxyZWFkeV9y ZWFkJyx7YWN0aW9uX2lkOnlhLmFjdGlvbl9pZCx0aHJlYWRfaWQ6eWEudGhyZWFk X2lkfSk7Y29udGludWU7fXguZ2V0VGhyZWFkTWV0YSh2YSxmdW5jdGlvbih6YSl7 bi5tZXNzYWdlSXNBbGxvd2VkKHphLHlhLGZ1bmN0aW9uKCl7ay5uZXdNZXNzYWdl KHZhLHlhKTt9KTt9KTt9fX19KTt3LnN1YnNjcmliZSgndGhyZWFkLXJlYWQtY2hh bmdlZCcsZnVuY3Rpb24odGEsdWEpe2Zvcih2YXIgdmEgaW4gdWEpaWYoIXVhW3Zh XS5tYXJrX2FzX3JlYWQpe2RhLmxvZygnYXV0b2Nsb3NlX21hcmtlZF91bnJlYWQn LHt0aHJlYWRfaWQ6dmF9KTttLmNsb3NlVGFiKHZhLCdhdXRvY2xvc2VfbWFya2Vk X3VucmVhZCcpO319KTtvLnN1YnNjcmliZSgndGFiLXByZXNzZWQnLGZ1bmN0aW9u KHRhLHVhKXtyZXR1cm4gIWlhKG0uaW5kZXhPZih1YS5pZCksdWEuc2hpZnRQcmVz c2VkKTt9KTtnLnN1YnNjcmliZShzLkRVTVBfRVZFTlQsZnVuY3Rpb24odGEsdWEp e3VhLmNoYXRfY29udHJvbGxlcj17YXV0b19jbG9zZV90aW1lb3V0OmNhfTt9KTt9 aWYoYWEuZmlyZWZveCgpKXt2YXIga2E9ZnVuY3Rpb24oKXtyZXR1cm4gei5nZXQo ZG9jdW1lbnQuYm9keSwnb3ZlcmZsb3dYJykrJyAnK3ouZ2V0KGRvY3VtZW50LmJv ZHksJ292ZXJmbG93WScpO30sbGE9a2EoKSxtYT1mdW5jdGlvbigpe3ZhciBwYT1r YSgpO2lmKHBhIT09bGEpe2xhPXBhO2cuaW5mb3JtKCdvdmVyZmxvdy1hcHBsaWVk LXRvLWJvZHknKTt9fTtpZignTXV0YXRpb25PYnNlcnZlcicgaW4gd2luZG93KXt2 YXIgbmE9bmV3IE11dGF0aW9uT2JzZXJ2ZXIobWEpLG9hPXthdHRyaWJ1dGVzOnRy dWUsYXR0cmlidXRlRmlsdGVyOlsnY2xhc3MnLCdzdHlsZSddfTtuYS5vYnNlcnZl KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxvYSk7fWVsc2UgZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUF0dHJNb2RpZmllZCcs ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LmdldFRhcmdldCgpPT09ZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50JiYoZXZlbnQuYXR0ck5hbWU9PT0nY2xhc3MnfHxldmVu dC5hdHRyTmFtZT09PSdzdHlsZScpKW1hKCk7fSxmYWxzZSk7fWUuZXhwb3J0cz1q YTt9KTsKX19kKCJDaGF0VGFiVmlld0Nvb3JkaW5hdG9yIixbIkFyYml0ZXIiLCJD aGF0Q29uZmlnIiwiQ2hhdFRhYk1vZGVsIiwiQ2hhdFRhYlZpZXciLCJDaGF0VGFi Vmlld1NlbGVjdG9yIiwiQ1NTIiwiVmlkZW9DYWxsQ29yZSJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdDaGF0Q29uZmlnJyks aT1iKCdDaGF0VGFiTW9kZWwnKSxqPWIoJ0NoYXRUYWJWaWV3Jyksaz1iKCdDaGF0 VGFiVmlld1NlbGVjdG9yJyksbD1iKCdDU1MnKSxtPWIoJ1ZpZGVvQ2FsbENvcmUn KTtmdW5jdGlvbiBuKG8scCl7dmFyIHE9bmV3IGsobykscj17fSxzPWZhbHNlO2Z1 bmN0aW9uIHQoKXt2YXIgeT1pLmdldCgpLHo9e307eS50YWJzLmZvckVhY2goZnVu Y3Rpb24oYmEpe3pbYmEuaWRdPTE7fSk7Zm9yKHZhciBhYSBpbiByKWlmKCF6W2Fh XSl7clthYV0uZGVzdHJveSgpO2RlbGV0ZShyW2FhXSk7fXUoeSk7dih5KTt9ZnVu Y3Rpb24gdSh5KXt2YXIgej1udWxsO3kudGFicy5mb3JFYWNoKGZ1bmN0aW9uKGFh KXt2YXIgYmE9YWEuaWQsY2E9ZmFsc2U7aWYoIXJbYmFdKXtyW2JhXT1uZXcgaihi YSxhYS5zZXJ2ZXJfaWQpO2NhPXRydWU7fWlmKGNhfHwhcltiYV0ubmV4dFRhYklz KHopKWlmKHope3JbYmFdLmluc2VydEJlZm9yZSh6KTt9ZWxzZSByW2JhXS5hcHBl bmRUbyhvKTt6PXJbYmFdO30pO31mdW5jdGlvbiB2KHkpe3ZhciB6PXAuZ2V0VGFi c1RvU2hvdyh5KSxhYT1bXSxiYT1mYWxzZTt5LnRhYnMuZm9yRWFjaChmdW5jdGlv bihjYSl7aWYoIXpbY2EuaWRdKXtyW2NhLmlkXS5zZXRWaXNpYmxlU3RhdGUoZmFs c2UsY2EucmFpc2VkKTthYS5wdXNoKGNhKTt9fSk7eS50YWJzLmZvckVhY2goZnVu Y3Rpb24oY2Epe2lmKHpbY2EuaWRdKXtyW2NhLmlkXS5zZXRWaXNpYmxlU3RhdGUo dHJ1ZSxjYS5yYWlzZWQpO2JhfD1jYS5yYWlzZWQ7fX0pO3Euc2V0VGFiRGF0YShh YSk7eChiYSk7fWZ1bmN0aW9uIHcoeSl7Zm9yKHZhciB6PTAsYWE9eS50YWJzLmxl

bmd0aDt6PGFhO3orKyl7dmFyIGJhPXkudGFic1t6XTtpZihiYS5yYWlzZWQpaWYo YmEuaWQ9PT15LnByb21vdGVkfHx6PHAuZ2V0TWF4VGFic1RvU2hvdygpLTEpcmV0 dXJuIHRydWU7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24geCh5KXtpZigheSYmcyl7 Zy5pbmZvcm0oJ2xheWVyX2hpZGRlbicse3R5cGU6J0NoYXRUYWInfSk7cz1mYWxz ZTt9ZWxzZSBpZih5JiYhcyl7Zy5pbmZvcm0oJ2xheWVyX3Nob3duJyx7dHlwZTon Q2hhdFRhYid9KTtzPXRydWU7fX1pZihtLmlzU3VwcG9ydGVkKCkpbC5hZGRDbGFz cyhvLCd2aWRlb0NhbGxFbmFibGVkJyk7cC5zdWJzY3JpYmUoJ3RhYnMtY2hhbmdl ZCcsdCk7dCgpO31lLmV4cG9ydHM9bjt9KTsKX19kKCJUYWJzVmlld3BvcnQiLFsi ZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXJNaXhpbiIsIkNoYXRDb25maWciLCJD aGF0VGFiTW9kZWwiLCJDbGFzcyIsIkNTUyIsIkRvY2siLCJET00iLCJQYXJlbnQi LCJWZWN0b3IiLCJhcmVPYmplY3RzRXF1YWwiLCJjb3B5UHJvcGVydGllcyJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9 YignQXJiaXRlck1peGluJyksaD1iKCdDaGF0Q29uZmlnJyksaT1iKCdDaGF0VGFi TW9kZWwnKSxqPWIoJ0NsYXNzJyksaz1iKCdDU1MnKSxsPWIoJ0RvY2snKSxtPWIo J0RPTScpLG49YignUGFyZW50Jyksbz1iKCdWZWN0b3InKSxwPWIoJ2FyZU9iamVj dHNFcXVhbCcpLHE9YignY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiByKHMpe3Ro aXMuX3Jvb3Q9cztFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLHRoaXMuX3Jl Y2FsY3VsYXRlV2lkdGguYmluZCh0aGlzKSk7bC5zdWJzY3JpYmUoJ3Jlc2l6ZScs dGhpcy5fcmVjYWxjdWxhdGVXaWR0aC5iaW5kKHRoaXMpKTtpLnN1YnNjcmliZSgn Y2hhdC90YWJzLWNoYW5nZWQnLHRoaXMuX3JlY2FsY3VsYXRlVGFicy5zaGllbGQo dGhpcyx0cnVlKSk7dGhpcy5fcmVjYWxjdWxhdGVXaWR0aCgpO3RoaXMuX2luaXRp YWxpemVkPXRydWU7fXEoci5wcm90b3R5cGUsZyx7X3Jvb3Q6bnVsbCxfaW5pdGlh bGl6ZWQ6ZmFsc2UsX2F2YWlsYWJsZVdpZHRoOjAsX21heFNob3duOjEsX3ZpZXdT dGF0ZTpudWxsLF9yZWNhbGN1bGF0ZVdpZHRoOmZ1bmN0aW9uKCl7dmFyIHM9ci5f Z2V0QXZhaWxhYmxlRG9ja1dpZHRoKHRoaXMuX3Jvb3QpLHQ9TWF0aC5tYXgoMSxN YXRoLmZsb29yKHMvMjY0KSksdT10IT10aGlzLl9tYXhTaG93bjtpZighdGhpcy5f dmlld1N0YXRlfHx1fHxzPD10aGlzLl92aWV3U3RhdGUudXNlZFdpZHRofHxzPnRo aXMuX3ZpZXdTdGF0ZS53aWR0aFRvU2hvd05leHQpe3RoaXMuX2F2YWlsYWJsZVdp ZHRoPXM7dGhpcy5fbWF4U2hvd249dDt0aGlzLl92aWV3U3RhdGU9bnVsbDt0aGlz Ll9yZWNhbGN1bGF0ZVRhYnModSk7fX0sX29uVGFic0NoYW5nZWQ6ZnVuY3Rpb24o KXtpZih0aGlzLl9pbml0aWFsaXplZCl7dGhpcy5pbmZvcm0oJ3RhYnMtY2hhbmdl ZCcpO3RoaXMuaW5mb3JtKCdtYXgtdG8tc2hvdy1jaGFuZ2VkJyx0aGlzLl9tYXhT aG93bik7dGhpcy5pbmZvcm0oJ21heC10by1zaG93LWNoYW5nZS1jb21wbGV0ZWQn KTt9fSxfcmVjYWxjdWxhdGVUYWJzOmZ1bmN0aW9uKHMpe3ZhciB0PXIuX2dldFRh YnNUb1Nob3coaS5nZXQoKSx0aGlzLl9hdmFpbGFibGVXaWR0aCk7aWYoc3x8IXAo dGhpcy5fdmlld1N0YXRlLHQpKXt0aGlzLl92aWV3U3RhdGU9dDt0aGlzLl9vblRh YnNDaGFuZ2VkKCk7fX0sZ2V0TWF4VGFic1RvU2hvdzpmdW5jdGlvbigpe3JldHVy biB0aGlzLl9tYXhTaG93bjt9LGNoZWNrV2lkdGg6ZnVuY3Rpb24oKXt0aGlzLl9y ZWNhbGN1bGF0ZVdpZHRoKCk7fSxnZXRUYWJzVG9TaG93OmZ1bmN0aW9uKCl7cmV0 dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5fdmlld1N0YXRlLnRh YnNUb1Nob3cpKTt9LHNob3VsZFByb21vdGVPblJhaXNlOmZ1bmN0aW9uKHMpe2lm KCF0aGlzLl92aWV3U3RhdGUudGFic1RvU2hvd1tzXSlyZXR1cm4gdHJ1ZTtpZih0 aGlzLl92aWV3U3RhdGUubmV4dFRvSGlkZSE9cylyZXR1cm4gZmFsc2U7dmFyIHQ9 aS5nZXRUYWIocyksdT10JiZ0LnJhaXNlZDtyZXR1cm4gIXUmJih0aGlzLl9hdmFp bGFibGVXaWR0aC10aGlzLl92aWV3U3RhdGUudXNlZFdpZHRoPDEwMCk7fX0pO3Eo cix7X2dldEF2YWlsYWJsZURvY2tXaWR0aDpmdW5jdGlvbihzKXt2YXIgdD1vLmdl dFZpZXdwb3J0RGltZW5zaW9ucygpLng7dC09MjMwO3QtPTUwO3ZhciB1PW4uYnlD bGFzcyhzLCdmYkRvY2snKSx2PW8uZ2V0RWxlbWVudERpbWVuc2lvbnModSksdz1u LmJ5Q2xhc3MocywnZmJEb2NrQ2hhdCcpLHg9by5nZXRFbGVtZW50RGltZW5zaW9u cyh3KSx5PXYueC14Lng7dC09eTt0LT0yMDtyZXR1cm4gTWF0aC5tYXgodCwwKTt9 LF9nZXRUYWJzVG9TaG93OmZ1bmN0aW9uKHMsdCl7dmFyIHU9MTY0LHY9MjY0O3Q9 TWF0aC5tYXgodCx2KzEpO2Z1bmN0aW9uIHcobGEpe3JldHVybiBsYS5yYWlzZWQ/ djp1O312YXIgeD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMudGFicykpLHk9 LTEsej1udWxsO2lmKHMucHJvbW90ZWQpeC5mb3JFYWNoKGZ1bmN0aW9uKGxhLG1h KXtpZihsYS5pZD09PXMucHJvbW90ZWQpe3k9bWE7ej1sYTt9fSk7dmFyIGFhPTAs YmE9MCxjYT0hejt4LmZvckVhY2goZnVuY3Rpb24obGEsbWEpe3ZhciBuYT13KGxh KTtsYS5sZWZ0bW9zdE9mZnNldD1hYSt2O2FhKz1uYTtpZihsYS5sZWZ0bW9zdE9m ZnNldDx0KWJhKys7Y2F8PW1hPT15O2xhLmFscmVhZHlQbGFjZWRQcm9tb3RlZD1j YTt9KTtmdW5jdGlvbiBkYShsYSxtYSxuYSl7dmFyIG9hPXt9O2Zvcih2YXIgcGE9 MDtwYTxtYTtwYSsrKXt2YXIgcWE9bGFbcGFdO2lmKCFxYS5hbHJlYWR5UGxhY2Vk

UHJvbW90ZWQmJnBhPT1tYS0xKXtvYVtuYV09dHJ1ZTt9ZWxzZSBvYVtxYS5pZF09 dHJ1ZTt9cmV0dXJuIG9hO312YXIgZWE9ZGEoeCxiYSxzLnByb21vdGVkKSxmYT1k YSh4LGJhLTEscy5wcm9tb3RlZCksZ2E9bnVsbDtmb3IodmFyIGhhIGluIGVhKWlm KCFmYVtoYV0pZ2E9aGE7dmFyIGlhPXhbYmEtMV0samE9aWE/aWEubGVmdG1vc3RP ZmZzZXQ6MCxrYT1JbmZpbml0eTtpZihiYTx4Lmxlbmd0aClrYT14W2JhXS5sZWZ0 bW9zdE9mZnNldDtyZXR1cm4ge25leHRUb0hpZGU6Z2EsdGFic1RvU2hvdzplYSx1 c2VkV2lkdGg6amEsd2lkdGhUb1Nob3dOZXh0OmthfTt9fSk7ZS5leHBvcnRzPXI7 fSk7Cl9fZCgiTWVyY3VyeUNoYW5uZWxIYW5kbGVyIixbIkFyYml0ZXIiLCJDaGFu bmVsQ29uc3RhbnRzIiwiY29weVByb3BlcnRpZXMiLCJFbnYiLCJNZXNzYWdpbmdS ZWxpYWJpbGl0eUxvZ2dlciIsIk1lcmN1cnlQYXJ0aWNpcGFudHMiLCJQcmVzZW5j ZVV0aWwiLCJNZXJjdXJ5U2VydmVyUmVxdWVzdHMiLCJNZXJjdXJ5VGhyZWFkSW5m b3JtZXIiLCJNZXJjdXJ5VGhyZWFkcyIsIk1lcmN1cnlDb25zdGFudHMiLCJNZXJj dXJ5Q29uZmlnIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0 ZXInKSxoPWIoJ0NoYW5uZWxDb25zdGFudHMnKSxpPWIoJ2NvcHlQcm9wZXJ0aWVz Jyksaj1iKCdFbnYnKSxrPWIoJ01lc3NhZ2luZ1JlbGlhYmlsaXR5TG9nZ2VyJyks bD1iKCdNZXJjdXJ5UGFydGljaXBhbnRzJyksbT1iKCdQcmVzZW5jZVV0aWwnKSxu PWIoJ01lcmN1cnlTZXJ2ZXJSZXF1ZXN0cycpLG89YignTWVyY3VyeVRocmVhZElu Zm9ybWVyJykscD1iKCdNZXJjdXJ5VGhyZWFkcycpLHE9YygnTWVyY3VyeUNvbnN0 YW50cycpLHI9YygnTWVyY3VyeUNvbmZpZycpO2Z1bmN0aW9uIHMoaGEsaWEpe2lm KGhhIT1oLmdldEFyYml0ZXJUeXBlKCdtZXNzYWdpbmcnKXx8IWlhLm9ianx8IWlh Lm9iai5tZXNzYWdlKXtrLmFkZEVudHJ5KCdjaGFubmVsX3JlY2VpdmUnLCdpbnZh bGlkX2RhdGEnKTtyZXR1cm47fXZhciBqYT1pYS5vYmoubWVzc2FnZSxrYT17YXV0 aG9yOmphLm1lcmN1cnlfYXV0aG9yX2lkLGF1dGhvcl9lbWFpbDpqYS5tZXJjdXJ5 X2F1dGhvcl9lbWFpbCxib2R5OmphLmJvZHksc3ViamVjdDpqYS5zdWJqZWN0LGhh c19hdHRhY2htZW50OmphLmhhc19hdHRhY2htZW50LGF0dGFjaG1lbnRzOmphLmF0 dGFjaG1lbnRzLGh0bWxfYm9keTpqYS5odG1sX2JvZHksdGhyZWFkX2lkOmphLnRp ZCxtZXNzYWdlX2lkOmphLm1pZCxjb29yZGluYXRlczpqYS5tZXJjdXJ5X2Nvb3Jk aW5hdGVzLHNwb29mX3dhcm5pbmc6amEubWVyY3VyeV9zcG9vZl93YXJuaW5nLHNv dXJjZTpqYS5tZXJjdXJ5X3NvdXJjZSxzb3VyY2VfdGFnczpqYS5tZXJjdXJ5X3Nv dXJjZV90YWdzLHRocmVhZGluZ19pZDpqYS50aHJlYWRpbmdfaWQsdGltZXN0YW1w OmphLnRpbWVzdGFtcCx0aW1lc3RhbXBfYWJzb2x1dGU6amEudGltZXN0YW1wX2Fi c29sdXRlLHRpbWVzdGFtcF9yZWxhdGl2ZTpqYS50aW1lc3RhbXBfcmVsYXRpdmUs YWN0aW9uX3R5cGU6cS5NZXJjdXJ5QWN0aW9uVHlwZS5VU0VSX0dFTkVSQVRFRF9N RVNTQUdFLGlzX3VucmVhZDpqYS5pc191bnJlYWQsYWN0aW9uX2lkOmphLmFjdGlv bl9pZCxpc19mb3J3YXJkOmZhbHNlLGZvcndhcmRfY291bnQ6amEuZm9yd2FyZF9j b3VudHx8amEuZm9yd2FyZCxmb3J3YXJkX21lc3NhZ2VfaWRzOmphLmZvcndhcmRf bXNnX2lkcyxsb2NhdGlvbl90ZXh0OmphLmxvY2F0aW9uX3RleHQsZm9sZGVyOmlh Lm9iai5mb2xkZXJ9LGxhPVtpKHt9LGthKV07bGE9bGEuY29uY2F0KGphLmZvcndh cmRfYWN0aW9uc3x8W10pO3ZhciBtYT1xLk1lcmN1cnlQYXlsb2FkU291cmNlLkNM SUVOVF9DSEFOTkVMX01FU1NBR0U7bi5oYW5kbGVVcGRhdGVXYWl0Rm9yVGhyZWFk KHthY3Rpb25zOmxhLHBheWxvYWRfc291cmNlOm1hfSxqYS50aWQpO2lmKCFqYS5p c191bnJlYWQmJmphLm1lcmN1cnlfYXV0aG9yX2lkPT09bC51c2VyKXt2YXIgbmE9 e307bmFbamEudGlkXT1pYS5vYmouZm9sZGVyO3QoaC5nZXRBcmJpdGVyVHlwZSgn bWVzc2FnaW5nJykse29iajp7ZXZlbnQ6cS5NZXNzYWdpbmdFdmVudFR5cGVzLlJF QUQsdGlkczpbamEudGlkXSxmb2xkZXJfaW5mbzpuYX19KTt9ay5hZGRFbnRyeSgn Y2hhbm5lbF9yZWNlaXZlJywnc3VjY2VzcycsW2thLnRocmVhZF9pZCxrYS5tZXNz YWdlX2lkLG0uZ2V0U2Vzc2lvbklEKCldKTt9ZnVuY3Rpb24gdChoYSxpYSl7aWYo aGEhPWguZ2V0QXJiaXRlclR5cGUoJ21lc3NhZ2luZycpfHwhaWEub2JqfHwhaWEu b2JqLnRpZHMpcmV0dXJuO3ZhciBqYT1bXSxrYT1pYS5vYmouZXZlbnQ9PXEuTWVz c2FnaW5nRXZlbnRUeXBlcy5SRUFEO2lhLm9iai50aWRzLmZvckVhY2goZnVuY3Rp b24obGEpe2phLnB1c2goe2FjdGlvbl90eXBlOnEuTWVyY3VyeUFjdGlvblR5cGUu Q0hBTkdFX1JFQURfU1RBVFVTLGFjdGlvbl9pZDpudWxsLHRocmVhZF9pZDpsYSxt YXJrX2FzX3JlYWQ6a2EsdGltZXN0YW1wOmlhLm9iai50aW1lc3RhbXB8fDAsZm9s ZGVyOmlhLm9iai5mb2xkZXJfaW5mb1tsYV19KTt9KTtuLmhhbmRsZVVwZGF0ZSh7 YWN0aW9uczpqYSxwYXlsb2FkX3NvdXJjZTpxLk1lcmN1cnlQYXlsb2FkU291cmNl LkNMSUVOVF9DSEFOTkVMX01FU1NBR0V9KTt9ZnVuY3Rpb24gdShoYSxpYSl7aWYo aGEhPWguZ2V0QXJiaXRlclR5cGUoJ21lc3NhZ2luZycpfHwhaWEub2JqfHwhaWEu b2JqLnRpZHMpcmV0dXJuO3ZhciBqYT1bXTtpYS5vYmoudGlkcy5mb3JFYWNoKGZ1 bmN0aW9uKGthKXtqYS5wdXNoKHthY3Rpb25fdHlwZTpxLk1lcmN1cnlBY3Rpb25U eXBlLkRFTEVURV9USFJFQUQsYWN0aW9uX2lkOm51bGwsdGhyZWFkX2lkOmthfSk7

fSk7bi5oYW5kbGVVcGRhdGUoe2FjdGlvbnM6amEscGF5bG9hZF9zb3VyY2U6cS5N ZXJjdXJ5UGF5bG9hZFNvdXJjZS5DTElFTlRfQ0hBTk5FTF9NRVNTQUdFfSk7fWZ1 bmN0aW9uIHYoaGEsaWEpe2lmKGhhIT1oLmdldEFyYml0ZXJUeXBlKCdtZXNzYWdp bmcnKXx8IWlhLm9ianx8IWlhLm9iai50aWRzfHwhaWEub2JqLm1pZHMpcmV0dXJu O3ZhciBqYT1pYS5vYmoudGlkc1swXSxrYT17YWN0aW9uX3R5cGU6cS5NZXJjdXJ5 QWN0aW9uVHlwZS5ERUxFVEVfTUVTU0FHRVMsYWN0aW9uX2lkOm51bGwsdGhyZWFk X2lkOmphLG1lc3NhZ2VfaWRzOmlhLm9iai5taWRzfTtuLmhhbmRsZVVwZGF0ZSh7 YWN0aW9uczpba2FdLHRocmVhZHM6W2lhLm9iai51cGRhdGVkX3RocmVhZF0scGF5 bG9hZF9zb3VyY2U6cS5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5DTElFTlRfQ0hBTk5F TF9NRVNTQUdFfSk7fWZ1bmN0aW9uIHcoaGEsaWEpe2lmKGhhIT1oLmdldEFyYml0 ZXJUeXBlKCdtZXNzYWdpbmcnKXx8IWlhLm9ianx8IWlhLm9iai5mb2xkZXIpcmV0 dXJuO3ZhciBqYT17YWN0aW9uX3R5cGU6cS5NZXJjdXJ5R2xvYmFsQWN0aW9uVHlw ZS5NQVJLX0FMTF9SRUFELGFjdGlvbl9pZDppYS5vYmouYWN0aW9uX2lkLGZvbGRl cjppYS5vYmouZm9sZGVyfTtuLmhhbmRsZVVwZGF0ZSh7Z2xvYmFsX2FjdGlvbnM6 W2phXX0pO31mdW5jdGlvbiB4KGhhLGlhKXtpZihoYSE9aC5nZXRBcmJpdGVyVHlw ZSgnbWVzc2FnaW5nJyl8fCFpYS5vYmoudGlkcylyZXR1cm47dmFyIGphPXEuTWVy Y3VyeVBheWxvYWRTb3VyY2UuQ0xJRU5UX0NIQU5ORUxfTUVTU0FHRTtpYS5vYmou dGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGthKXt2YXIgbGE9e2FjdGlvbl90eXBlOnEu TWVyY3VyeUFjdGlvblR5cGUuQ0hBTkdFX0FSQ0hJVkVEX1NUQVRVUyxhY3Rpb25f aWQ6bnVsbCx0aHJlYWRfaWQ6a2EsYXJjaGl2ZWQ6aWEub2JqLnN0YXRlfTtuLmhh bmRsZVVwZGF0ZVdhaXRGb3JUaHJlYWQoe2FjdGlvbnM6W2koe30sbGEpXSxwYXls b2FkX3NvdXJjZTpqYX0sa2EpO30pO31mdW5jdGlvbiB5KGhhLGlhKXtpZihoYSE9 aC5nZXRBcmJpdGVyVHlwZSgnbWVzc2FnaW5nJyl8fCFpYS5vYmoudGlkcylyZXR1 cm47dmFyIGphPXEuTWVyY3VyeVBheWxvYWRTb3VyY2UuQ0xJRU5UX0NIQU5ORUxf TUVTU0FHRSxrYTtpYS5vYmoudGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGxhKXtpZihp YS5vYmouZXZlbnQ9PXEuTWVzc2FnaW5nRXZlbnRUeXBlcy5UQUcpe2thPWlhLm9i ai50YWc7fWVsc2Uga2E9aWEub2JqLm1hcmtlZF9hc19zcGFtP3EuTWVzc2FnaW5n VGFnLlNQQU06cS5NZXNzYWdpbmdUYWcuSU5CT1g7dmFyIG1hPXthY3Rpb25fdHlw ZTpxLk1lcmN1cnlBY3Rpb25UeXBlLkNIQU5HRV9GT0xERVIsYWN0aW9uX2lkOm51 bGwsdGhyZWFkX2lkOmxhLG5ld19mb2xkZXI6a2F9O24uaGFuZGxlVXBkYXRlV2Fp dEZvclRocmVhZCh7YWN0aW9uczpbaSh7fSxtYSldLHBheWxvYWRfc291cmNlOmph fSxsYSk7fSk7fWZ1bmN0aW9uIHooaGEsaWEpe2lmKGhhIT1oLmdldEFyYml0ZXJU eXBlKCdtZXNzYWdpbmcnKXx8IWlhLm9iai50YWcpcmV0dXJuO3N3aXRjaChpYS5v YmoudGFnKXtjYXNlIHEuTWVzc2FnaW5nVGFnLkFDVElPTl9BUkNISVZFRDp4KGhh LGlhKTticmVhaztjYXNlIHEuTWVzc2FnaW5nVGFnLklOQk9YOmNhc2UgcS5NZXNz YWdpbmdUYWcuT1RIRVI6eShoYSxpYSk7YnJlYWs7fX1mdW5jdGlvbiBhYShoYSxp YSxqYSl7cmV0dXJuIGhhKyc6JytpYSsnOicramE7fWZ1bmN0aW9uIGJhKGhhLGlh KXtpZihoYSE9aC5nZXRBcmJpdGVyVHlwZSgnaW5ib3gnKXx8IWlhLm9ianx8IWlh Lm9iai5zZWVuX3RpbWVzdGFtcClyZXR1cm47bi5oYW5kbGVVcGRhdGUoe21lc3Nh Z2VfY291bnRzOlt7c2Vlbl90aW1lc3RhbXA6aWEub2JqLnNlZW5fdGltZXN0YW1w LGZvbGRlcjpxLk1lc3NhZ2luZ1RhZy5JTkJPWH1dLHVuc2Vlbl90aHJlYWRfaWRz Olt7dGhyZWFkX2lkczpbXSxmb2xkZXI6cS5NZXNzYWdpbmdUYWcuSU5CT1h9XSxw YXlsb2FkX3NvdXJjZTpxLk1lcmN1cnlQYXlsb2FkU291cmNlLkNMSUVOVF9DSEFO TkVMX01FU1NBR0V9KTt9ZnVuY3Rpb24gY2EoaGEsaWEpe2lmKGhhIT1oLmdldEFy Yml0ZXJUeXBlKCdtZXJjdXJ5Jyl8fCFpYS5vYmopcmV0dXJuO28uc3luY2hyb25p emVJbmZvcm1zKGZ1bmN0aW9uKCl7dmFyIGphPWlhLm9iaixrYT1bXTsoamEuYWN0 aW9uc3x8W10pLmZvckVhY2goZnVuY3Rpb24obGEpe3ZhciBtYT1xLk1lcmN1cnlB Y3Rpb25UeXBlLlVTRVJfR0VORVJBVEVEX01FU1NBR0U7aWYobGEuYWN0aW9uX3R5 cGU9PXEuTWVyY3VyeUFjdGlvblR5cGUuTE9HX01FU1NBR0Upe3ZhciBuYT1xLk1l cmN1cnlQYXlsb2FkU291cmNlLkNMSUVOVF9DSEFOTkVMX01FU1NBR0U7bi5oYW5k bGVVcGRhdGVXYWl0Rm9yVGhyZWFkKHthY3Rpb25zOltpKHt9LGxhKV0scGF5bG9h ZF9zb3VyY2U6bmF9LGxhLnRocmVhZF9pZCk7fWVsc2UgaWYobGEuYWN0aW9uX3R5 cGUhPW1hKWthLnB1c2gobGEpO30pO2phLmFjdGlvbnM9a2E7amEucGF5bG9hZF9z b3VyY2U9cS5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5DTElFTlRfQ0hBTk5FTF9NRVNT QUdFO24uaGFuZGxlVXBkYXRlKGphKTt9KTt9ZnVuY3Rpb24gZGEoaGEsaWEpe24u aGFuZGxlUm9nZXIoaWEub2JqKTt9ZnVuY3Rpb24gZWEoaGEsaWEpe3N3aXRjaChp YS5vYmouZXZlbnQpe2Nhc2UgcS5NZXNzYWdpbmdFdmVudFR5cGVzLkRFTElWRVI6 cyhoYSxpYSk7YnJlYWs7Y2FzZSBxLk1lc3NhZ2luZ0V2ZW50VHlwZXMuUkVBRDpj YXNlIHEuTWVzc2FnaW5nRXZlbnRUeXBlcy5VTlJFQUQ6dChoYSxpYSk7YnJlYWs7 Y2FzZSBxLk1lc3NhZ2luZ0V2ZW50VHlwZXMuUkVBRF9BTEw6dyhoYSxpYSk7YnJl

YWs7Y2FzZSBxLk1lc3NhZ2luZ0V2ZW50VHlwZXMuREVMRVRFOnUoaGEsaWEpO2Jy ZWFrO2Nhc2UgcS5NZXNzYWdpbmdFdmVudFR5cGVzLkRFTEVURV9NRVNTQUdFUzp2 KGhhLGlhKTticmVhaztjYXNlIHEuTWVzc2FnaW5nRXZlbnRUeXBlcy5UQUc6eiho YSxpYSk7YnJlYWs7Y2FzZSBxLk1lc3NhZ2luZ0V2ZW50VHlwZXMuUkVQT1JUX1NQ QU06eShoYSxpYSk7YnJlYWs7Y2FzZSBxLk1lc3NhZ2luZ0V2ZW50VHlwZXMuUkVB RF9SRUNFSVBUOmRhKGhhLGlhKTticmVhazt9fXZhciBmYT1bXSxnYT17dHVybk9u OmZ1bmN0aW9uKCl7aWYoIWZhLmxlbmd0aCl7dmFyIGhhPXttZXJjdXJ5OmNhLG1l c3NhZ2luZzplYSxpbmJveDpiYX07Zm9yKHZhciBpYSBpbiBoYSlmYS5wdXNoKGcu c3Vic2NyaWJlKGguZ2V0QXJiaXRlclR5cGUoaWEpLGhhW2lhXSkpO319LHR1cm5P ZmY6ZnVuY3Rpb24oKXtpZihmYS5sZW5ndGgpe2ZhLmZvckVhY2goZy51bnN1YnNj cmliZSk7ZmE9W107fX19O2dhLnR1cm5PbigpO2UuZXhwb3J0cz1nYTt9KTsKX19k KCJNZXJjdXJ5SmV3ZWxDb3VudENvbnRyb2wiLFsiQXJiaXRlciIsIkRPTSIsIkpl d2VsWCIsIk1lcmN1cnlVbnNlZW5TdGF0ZSIsIk1lcmN1cnlTZXJ2ZXJSZXF1ZXN0 cyIsIk1lcmN1cnlUaHJlYWRJbmZvcm1lciIsImNvcHlQcm9wZXJ0aWVzIiwidHgi LCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ0FyYml0ZXInKSxoPWMoJ01lcmN1cnlDb25zdGFudHMnKSxpPWIoJ0RPTScp LGo9YignSmV3ZWxYJyksaz1iKCdNZXJjdXJ5VW5zZWVuU3RhdGUnKSxsPWIoJ01l cmN1cnlTZXJ2ZXJSZXF1ZXN0cycpLG09YignTWVyY3VyeVRocmVhZEluZm9ybWVy Jyksbj1iKCdjb3B5UHJvcGVydGllcycpLG89YigndHgnKSxwLHEscixzPWZ1bmN0 aW9uKHUpe2lmKHV8fHIuaXNPcGVuKCkpay5tYXJrQXNTZWVuKCk7fSx0PWZ1bmN0 aW9uKHUsdil7cD11O3E9aS5maW5kKHAsJyNtZXJjdXJ5bWVzc2FnZXNDb3VudFZh bHVlJyk7cj12O3RoaXMucmVuZGVyKCk7bC5zdWJzY3JpYmUoJ21vZGVsLXVwZGF0 ZS1jb21wbGV0ZWQnLGZ1bmN0aW9uKHcseCl7cyhmYWxzZSk7fSk7bS5zdWJzY3Jp YmUoJ3Vuc2Vlbi11cGRhdGVkJyx0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTtyLnN1 YnNjcmliZSgnbWFya2VkLXNlZW4nLHMuc2hpZWxkKHRoaXMsdHJ1ZSkpO307bih0 LnByb3RvdHlwZSx7cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIHU9Jyc7aWYoay5leGNl ZWRzTWF4Q291bnQoKSl7dT1vLl8oIntjb3VudH0rIix7Y291bnQ6aC5NZXJjdXJ5 VGhyZWFkbGlzdENvbnN0YW50cy5NQVhfVU5TRUVOX0NPVU5UfSk7fWVsc2UgdT1r LmdldFVuc2VlbkNvdW50KCkudG9TdHJpbmcoKTtnLmluZm9ybSgnamV3ZWwvY291 bnQtdXBkYXRlZCcse2pld2VsOidtZXJjdXJ5bWVzc2FnZXMnLGNvdW50OnV9LGcu QkVIQVZJT1JfU1RBVEUpO319KTtlLmV4cG9ydHM9dDt9KTsKX19kKCJNZXJjdXJ5 RmlsdGVycyIsWyJhcnJheS1leHRlbnNpb25zIiwiTWVyY3VyeUNvbnN0YW50cyJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7dmFy IGc9YygnTWVyY3VyeUNvbnN0YW50cycpLGg9W2cuTWVzc2FnaW5nVGFnLlVOUkVB RF0saT17QUxMOidhbGwnLGdldFN1cHBvcnRlZEZpbHRlcnM6ZnVuY3Rpb24oKXty ZXR1cm4gaC5jb25jYXQoKTt9LGlzU3VwcG9ydGVkRmlsdGVyOmZ1bmN0aW9uKGop e3JldHVybiBoLmNvbnRhaW5zKGopO319O2UuZXhwb3J0cz1pO30pOwpfX2QoIk1l cmN1cnlPcmRlcmVkVGhyZWFkbGlzdCIsWyJKU0xvZ2dlciIsIk1lcmN1cnlGb2xk ZXJzIiwiTWVyY3VyeUZpbHRlcnMiLCJNZXJjdXJ5U2VydmVyUmVxdWVzdHMiLCJS YW5nZWRDYWxsYmFja01hbmFnZXIiLCJNZXJjdXJ5VGhyZWFkSW5mb3JtZXIiLCJN ZXJjdXJ5VGhyZWFkcyIsIk1lcmN1cnlDb25zdGFudHMiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9YignSlNMb2dnZXInKSxoPWIoJ01lcmN1cnlGb2xkZXJz JyksaT1iKCdNZXJjdXJ5RmlsdGVycycpLGo9YignTWVyY3VyeVNlcnZlclJlcXVl c3RzJyksaz1iKCdSYW5nZWRDYWxsYmFja01hbmFnZXInKSxsPWIoJ01lcmN1cnlU aHJlYWRJbmZvcm1lcicpLG09YignTWVyY3VyeVRocmVhZHMnKSxuPWMoJ01lcmN1 cnlDb25zdGFudHMnKSxvPWcuY3JlYXRlKCdvcmRlcmVkX3RocmVhZGxpc3RfbW9k ZWwnKSxwPWkuZ2V0U3VwcG9ydGVkRmlsdGVycygpLmNvbmNhdChbaS5BTExdKSxx PWguZ2V0U3VwcG9ydGVkRm9sZGVycygpLHI9e307cS5mb3JFYWNoKGZ1bmN0aW9u KGNhKXtyW2NhXT17fTtwLmZvckVhY2goZnVuY3Rpb24oZGEpe3JbY2FdW2RhXT1u ZXcgayhmdW5jdGlvbihlYSl7cmV0dXJuIG0uZ2V0VGhyZWFkTWV0YU5vdyhlYSku dGltZXN0YW1wO30sZnVuY3Rpb24oZWEsZmEpe3JldHVybiBmYS1lYTt9LGouY2Fu TGlua0V4dGVybmFsbHkuYmluZChqKSk7fSk7fSk7ZnVuY3Rpb24gcyhjYSxkYSxl YSl7dmFyIGZhPVtdLGdhPWZhbHNlLGhhPShjYXx8W10pLmZpbHRlcihmdW5jdGlv bihvYSl7dmFyIHBhPW9hLmZpbHRlcnx8aS5BTEw7cmV0dXJuIChvYS5mb2xkZXI9 PWRhfHwoIW9hLmZvbGRlciYmZGE9PW4uTWVzc2FnaW5nVGFnLklOQk9YKSkmJnBh PT1lYTt9KSxpYT1yW2RhXVtlYV0uZ2V0QWxsUmVzb3VyY2VzKCksamE7aGEuZm9y RWFjaChmdW5jdGlvbihvYSl7ZmE9ZmEuY29uY2F0KG9hLnRocmVhZF9pZHMpO3Zh ciBwYT1vYS5lbmQtb2Euc3RhcnQ7aWYob2EudGhyZWFkX2lkcy5sZW5ndGg8cGEp Z2E9dHJ1ZTtpZighamF8fG9hLmVuZD5qYSlqYT1vYS5lbmQ7fSk7dyhmYSxkYSxl YSk7aWYoZ2Epe3JbZGFdW2VhXS5zZXRSZWFjaGVkRW5kT2ZBcnJheSgpO31lbHNl

e3ZhciBrYT1yW2RhXVtlYV0uZ2V0Q3VycmVudEFycmF5U2l6ZSgpO2lmKGphJiZr YTxqYSl7dmFyIGxhPXt9LG1hPWlhLmNvbmNhdChmYSksbmE9bWEuZmlsdGVyKGZ1 bmN0aW9uKG9hKXt2YXIgcGE9bGFbb2FdO2xhW29hXT10cnVlO3JldHVybiBwYTt9 KTtpZihuYS5sZW5ndGgpe28ud2FybignZHVwbGljYXRlX3RocmVhZHMnLHtmb2xk ZXI6ZGEsZXhwZWN0ZWRfZmluYWxfc2l6ZTpqYSxhY3R1YWxfZmluYWxfc2l6ZTpr YSxkdXBsaWNhdGVfdGhyZWFkX2lkczpuYX0pO2ouZmV0Y2hUaHJlYWRsaXN0SW5m byhqYSxuYS5sZW5ndGgsZGEsZWE9PWkuQUxMP251bGw6ZWEpO319fX1mdW5jdGlv biB0KGNhKXtxLmZvckVhY2goZnVuY3Rpb24oZGEpe3AuZm9yRWFjaChmdW5jdGlv bihlYSl7cyhjYSxkYSxlYSk7fSk7fSk7fWZ1bmN0aW9uIHUoY2Epe3ZhciBkYT17 fTtxLmZvckVhY2goZnVuY3Rpb24oZWEpe2RhW2VhXT17fTtwLmZvckVhY2goZnVu Y3Rpb24oZmEpe2RhW2VhXVtmYV09e3RvX2FkZDpbXSx0b19yZW1vdmU6W10sdG9f cmVtb3ZlX2lmX2xhc3RfYWZ0ZXJfYWRkOnt9fTt9KTt9KTtjYS5mb3JFYWNoKGZ1 bmN0aW9uKGVhKXtpZihlYS5pc19mb3J3YXJkKXJldHVybjt2YXIgZmE9ZWEudGhy ZWFkX2lkLGdhPXgoZmEpLGhhPXkoZmEpO2Z1bmN0aW9uIGlhKCl7aGEuZm9yRWFj aChmdW5jdGlvbihrYSl7ZGFbZ2FdW2thXS50b19hZGQucHVzaChmYSk7aWYoIXJb Z2FdW2thXS5oYXNSZWFjaGVkRW5kT2ZBcnJheSgpJiYhcltnYV1ba2FdLmhhc1Jl c291cmNlKGZhKSlkYVtnYV1ba2FdLnRvX3JlbW92ZV9pZl9sYXN0X2FmdGVyX2Fk ZFtmYV09dHJ1ZTt9KTt9ZnVuY3Rpb24gamEoa2Epe2lmKHAuY29udGFpbnMoa2Ep KWlmKGhhLmNvbnRhaW5zKGthKSl7ZGFbZ2FdW2thXS50b19hZGQucHVzaChmYSk7 fWVsc2UgZGFbZ2FdW2thXS50b19yZW1vdmUucHVzaChmYSk7fWlmKCFnYSl7aWYo ZWEuYWN0aW9uX3R5cGU9PT1uLk1lcmN1cnlBY3Rpb25UeXBlLkNIQU5HRV9GT0xE RVJ8fGVhLmFjdGlvbl90eXBlPT09bi5NZXJjdXJ5QWN0aW9uVHlwZS5DSEFOR0Vf QVJDSElWRURfU1RBVFVTKXEuZm9yRWFjaChmdW5jdGlvbihrYSl7aWYoa2EhPT1n YSlwLmZvckVhY2goZnVuY3Rpb24obGEpe3Jba2FdW2xhXS5yZW1vdmVSZXNvdXJj ZXMoW2ZhXSk7fSk7fSk7cmV0dXJuO31zd2l0Y2goZWEuYWN0aW9uX3R5cGUpe2Nh c2Ugbi5NZXJjdXJ5QWN0aW9uVHlwZS5ERUxFVEVfVEhSRUFEOmhhLmZvckVhY2go ZnVuY3Rpb24oa2Epe2RhW2dhXVtrYV0udG9fcmVtb3ZlLnB1c2goZmEpO30pO2Jy ZWFrO2Nhc2Ugbi5NZXJjdXJ5QWN0aW9uVHlwZS5DSEFOR0VfQVJDSElWRURfU1RB VFVTOmNhc2Ugbi5NZXJjdXJ5QWN0aW9uVHlwZS5DSEFOR0VfRk9MREVSOmlhKCk7 YnJlYWs7Y2FzZSBuLk1lcmN1cnlBY3Rpb25UeXBlLkNIQU5HRV9SRUFEX1NUQVRV UzpqYShuLk1lc3NhZ2luZ1RhZy5VTlJFQUQpO2JyZWFrO2Nhc2Ugbi5NZXJjdXJ5 QWN0aW9uVHlwZS5VU0VSX0dFTkVSQVRFRF9NRVNTQUdFOmNhc2Ugbi5NZXJjdXJ5 QWN0aW9uVHlwZS5MT0dfTUVTU0FHRTpoYS5mb3JFYWNoKGZ1bmN0aW9uKGthKXtp Zih6KGZhLGdhLGthKSlkYVtnYV1ba2FdLnRvX2FkZC5wdXNoKGZhKTt9KTticmVh azt9fSk7cS5mb3JFYWNoKGZ1bmN0aW9uKGVhKXtwLmZvckVhY2goZnVuY3Rpb24o ZmEpe3ZhciBnYT1yW2VhXVtmYV07dyhkYVtlYV1bZmFdLnRvX2FkZCxlYSxmYSk7 Zm9yKHZhciBoYT1nYS5nZXRDdXJyZW50QXJyYXlTaXplKCktMTtoYT49MDtoYS0t KXt2YXIgaWE9Z2EuZ2V0UmVzb3VyY2VBdEluZGV4KGhhKTtpZighZGFbZWFdW2Zh XS50b19yZW1vdmVfaWZfbGFzdF9hZnRlcl9hZGRbaWFdKWJyZWFrO2RhW2VhXVtm YV0udG9fcmVtb3ZlLnB1c2goaWEpO31nYS5yZW1vdmVSZXNvdXJjZXMoZGFbZWFd W2ZhXS50b19yZW1vdmUpO30pO30pO31mdW5jdGlvbiB2KGNhKXt2YXIgZGE9e307 cS5mb3JFYWNoKGZ1bmN0aW9uKGVhKXtkYVtlYV09e307cC5mb3JFYWNoKGZ1bmN0 aW9uKGZhKXtkYVtlYV1bZmFdPVtdO30pO30pO2NhLmZvckVhY2goZnVuY3Rpb24o ZWEpe3ZhciBmYT14KGVhLnRocmVhZF9pZCksZ2E9eShlYS50aHJlYWRfaWQpO2dh LmZvckVhY2goZnVuY3Rpb24oaGEpe2lmKGZhJiZ6KGVhLnRocmVhZF9pZCxmYSxo YSkpZGFbZmFdW2hhXS5wdXNoKGVhLnRocmVhZF9pZCk7fSk7fSk7cS5mb3JFYWNo KGZ1bmN0aW9uKGVhKXtwLmZvckVhY2goZnVuY3Rpb24oZmEpe2lmKGRhW2VhXVtm YV0ubGVuZ3RoPjApdyhkYVtlYV1bZmFdLGVhLGZhKTt9KTt9KTt9ZnVuY3Rpb24g dyhjYSxkYSxlYSl7ZWE9ZWF8fGkuQUxMO3JbZGFdW2VhXS5hZGRSZXNvdXJjZXMo Y2EpO3EuZm9yRWFjaChmdW5jdGlvbihmYSl7aWYoZmEhPWRhKXJbZmFdW2VhXS5y ZW1vdmVSZXNvdXJjZXMoY2EpO30pO31mdW5jdGlvbiB4KGNhKXt2YXIgZGE9bS5n ZXRUaHJlYWRNZXRhTm93KGNhKSxlYT1udWxsO2lmKCFkYSl7ZWE9J05vIHRocmVh ZCBtZXRhZGF0YSc7fWVsc2UgaWYoIWRhLmZvbGRlcillYT0nTm8gdGhyZWFkIGZv bGRlcic7aWYoZWEpe3ZhciBmYT17ZXJyb3I6ZWEsdGlkOmNhfTtvLndhcm4oJ25v X3RocmVhZF9mb2xkZXInLGZhKTtyZXR1cm4gbnVsbDt9dmFyIGdhPWRhLmZvbGRl cjtpZihkYS5pc19hcmNoaXZlZClnYT1uLk1lc3NhZ2luZ1RhZy5BQ1RJT05fQVJD SElWRUQ7aWYocltnYV0pe3JldHVybiBnYTt9ZWxzZSByZXR1cm4gbnVsbDt9ZnVu Y3Rpb24geShjYSl7dmFyIGRhPW0uZ2V0VGhyZWFkTWV0YU5vdyhjYSksZWE9W2ku QUxMXTtpZighZGEpe3ZhciBmYT17ZXJyb3I6J25vX3RocmVhZF9tZXRhZGF0YScs dGlkOmNhfTtvLndhcm4oJ25vX3RocmVhZF9tZXRhZGF0YScsZmEpO3JldHVybiBb

XTt9aWYoZGEudW5yZWFkX2NvdW50KWVhLnB1c2gobi5NZXNzYWdpbmdUYWcuVU5S RUFEKTtyZXR1cm4gZWE7fWZ1bmN0aW9uIHooY2EsZGEsZWEpe3ZhciBmYT1tLmdl dFRocmVhZE1ldGFOb3coY2EpO3JldHVybiBmYSYmZmEudGltZXN0YW1wJiZ4KGNh KT09ZGEmJnkoY2EpLmNvbnRhaW5zKGVhKTt9dmFyIGFhPXtnZXRUaHJlYWRsaXN0 OmZ1bmN0aW9uKGNhLGRhLGVhLGZhLGdhKXtyZXR1cm4gYWEuZ2V0RmlsdGVyZWRU aHJlYWRsaXN0KGNhLGRhLGVhLGkuQUxMLGZhLGdhKTt9LGdldEZpbHRlcmVkVGhy ZWFkbGlzdDpmdW5jdGlvbihjYSxkYSxlYSxmYSxnYSxoYSl7dmFyIGlhPXJbZWFd W2ZhXSxqYT1pYS5leGVjdXRlT3JFbnF1ZXVlKGNhLGRhLGdhLGhhKSxrYT1pYS5n ZXRVbmF2YWlsYWJsZVJlc291cmNlcyhqYSk7aWYoa2EubGVuZ3RoKXtpZihpYS5n ZXRDdXJyZW50QXJyYXlTaXplKCk8Y2Epe3ZhciBsYT17c3RhcnQ6Y2EsbGltaXQ6 ZGEsZmlsdGVyOmZhLHJlc291cmNlc19zaXplOmlhLmdldEN1cnJlbnRBcnJheVNp emUoKX07by53YXJuKCdyYW5nZV93aXRoX2dhcCcsbGEpO31qLmZldGNoVGhyZWFk bGlzdEluZm8oaWEuZ2V0Q3VycmVudEFycmF5U2l6ZSgpLGthLmxlbmd0aCxlYSxm YT09aS5BTEw/bnVsbDpmYSk7fXJldHVybiBqYTt9LGdldFRocmVhZGxpc3RVbnRp bFRpbWVzdGFtcDpmdW5jdGlvbihjYSxkYSxlYSl7ZWE9ZWF8fGkuQUxMO3JldHVy biByW2RhXVtlYV0uZ2V0RWxlbWVudHNVbnRpbChjYSk7fSx1bnN1YnNjcmliZTpm dW5jdGlvbihjYSxkYSxlYSl7ZWE9ZWF8fGkuQUxMO3JbZGFdW2VhXS51bnN1YnNj cmliZShjYSk7fX07ZnVuY3Rpb24gYmEoY2Epe3N3aXRjaChjYS5wYXlsb2FkX3Nv dXJjZSl7Y2FzZSBuLk1lcmN1cnlQYXlsb2FkU291cmNlLkNMSUVOVF9DSEFOR0Vf QVJDSElWRURfU1RBVFVTOmNhc2Ugbi5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5DTElF TlRfQ0hBTkdFX1JFQURfU1RBVFVTOmNhc2Ugbi5NZXJjdXJ5UGF5bG9hZFNvdXJj ZS5DTElFTlRfQ0hBTkdFX0ZPTERFUjpjYXNlIG4uTWVyY3VyeVBheWxvYWRTb3Vy Y2UuQ0xJRU5UX0NIQU5ORUxfTUVTU0FHRTpjYXNlIG4uTWVyY3VyeVBheWxvYWRT b3VyY2UuQ0xJRU5UX0RFTEVURV9NRVNTQUdFUzpjYXNlIG4uTWVyY3VyeVBheWxv YWRTb3VyY2UuQ0xJRU5UX0RFTEVURV9USFJFQUQ6Y2FzZSBuLk1lcmN1cnlQYXls b2FkU291cmNlLkNMSUVOVF9TRU5EX01FU1NBR0U6Y2FzZSBuLk1lcmN1cnlQYXls b2FkU291cmNlLlNFUlZFUl9TRU5EX01FU1NBR0U6Y2FzZSBuLk1lcmN1cnlQYXls b2FkU291cmNlLlNFUlZFUl9DT05GSVJNX01FU1NBR0VTOmNhc2Ugbi5NZXJjdXJ5 UGF5bG9hZFNvdXJjZS5TRVJWRVJfRkVUQ0hfVEhSRUFETElTVF9JTkZPOmNhc2Ug bi5NZXJjdXJ5UGF5bG9hZFNvdXJjZS5TRVJWRVJfVEhSRUFEX1NZTkM6cmV0dXJu IHRydWU7Y2FzZSBuLk1lcmN1cnlQYXlsb2FkU291cmNlLlNFUlZFUl9JTklUSUFM X0RBVEE6cmV0dXJuIGNhLm9yZGVyZWRfdGhyZWFkbGlzdHM7ZGVmYXVsdDpyZXR1 cm4gZmFsc2U7fX1qLnN1YnNjcmliZSgndXBkYXRlLXRocmVhZGxpc3QnLGZ1bmN0 aW9uKGNhLGRhKXtpZighYmEoZGEpKXJldHVybjt2YXIgZWE9ZGEub3JkZXJlZF90 aHJlYWRsaXN0cztpZihlYSYmZWEubGVuZ3RoKXt0KGVhKTt9ZWxzZXt2YXIgZmE9 KGRhLmFjdGlvbnN8fFtdKS5maWx0ZXIoZnVuY3Rpb24oZ2Epe3JldHVybiBnYS50 aHJlYWRfaWQ7fSk7dihkYS50aHJlYWRzfHxbXSk7dShmYSk7fWwudXBkYXRlZFRo cmVhZGxpc3QoKTt9KTtlLmV4cG9ydHM9YWE7fSk7Cl9fZCgiV2ViTWVzc2VuZ2Vy U3RhdGVDb25zdGFudHMiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz17 U1RBVEVfQ0hBTkdFX0VWRU5UOidzdGF0ZS1jaGFuZ2VkJyxERVRBSUw6e0NPTVBP U0VfTUFJTjonY29tcG9zZS1tYWluJyxDT01QT1NFX1RZUEVBSEVBRF9SRVNVTFRT Oidjb21wb3NlLXR5cGVhaGVhZC1yZXN1bHRzJyxDT01QT1NFX0FMTF9QRU9QTEVf UkVTVUxUUzonY29tcG9zZS1hbGwtcGVvcGxlLXJlc3VsdHMnLFJFQ0VOVF9NRVNT QUdFUzoncmVjZW50LW1lc3NhZ2VzJyxTRUFSQ0hfQ09OVEVYVDonc2VhcmNoLWNv bnRleHQnLFNFQVJDSF9TTklQUEVUOidzZWFyY2gtc25pcHBldCd9LE1BU1RFUjp7 UkVDRU5UX1RIUkVBRFM6J3JlY2VudC10aHJlYWRzJyxTRUFSQ0g6J3NlYXJjaCd9 LE1FU1NBR0VfQUNUSU9OOntERUxFVEU6J2RlbGV0ZScsRk9SV0FSRDonZm9yd2Fy ZCd9fTtlLmV4cG9ydHM9Zzt9KTsKX19kKCJXZWJNZXNzZW5nZXJPbGRUb05ld1Bl cm1hbGluayIsWyJXZWJNZXNzZW5nZXJQZXJtYWxpbmtDb25zdGFudHMiLCJXZWJN ZXNzZW5nZXJTdGF0ZUNvbnN0YW50cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2 YXIgZz1iKCdXZWJNZXNzZW5nZXJQZXJtYWxpbmtDb25zdGFudHMnKSxoPWIoJ1dl Yk1lc3NlbmdlclN0YXRlQ29uc3RhbnRzJyk7ZnVuY3Rpb24gaShuKXtpZighaihu KSlyZXR1cm4gbjtrKG4pO20obik7bChuKTtyZXR1cm4gbjt9ZnVuY3Rpb24gaihu KXt2YXIgbz1uLmdldFF1ZXJ5RGF0YSgpO2lmKG8uc2spc3dpdGNoKG8uc2spe2Nh c2UgJ2luYm94JzpuLnNldFBhdGgoZy5CQVNFX1BBVEgpO24ucmVtb3ZlUXVlcnlE YXRhKCdzaycpO2JyZWFrO2Nhc2UgJ290aGVyJzpuLnNldFBhdGgoZy5PVEhFUl9Q QVRIKTtuLnJlbW92ZVF1ZXJ5RGF0YSgnc2snKTticmVhaztkZWZhdWx0OnJldHVy biBmYWxzZTt9cmV0dXJuIHRydWU7fWZ1bmN0aW9uIGsobil7dmFyIG89bi5nZXRR dWVyeURhdGEoKTtzd2l0Y2goby5hY3Rpb24pe2Nhc2UgJ3JlYWQnOmlmKCFvLnRp ZCl7bi5hZGRRdWVyeURhdGEoe2FjdGlvbjpoLkRFVEFJTC5SRUNFTlRfTUVTU0FH

RVN9KTt9ZWxzZSBuLnJlbW92ZVF1ZXJ5RGF0YSgnYWN0aW9uJyk7YnJlYWs7fX1m dW5jdGlvbiBsKG4pe3ZhciBvPW4uZ2V0UXVlcnlEYXRhKCk7aWYoby50aWQpe24u c2V0UGF0aChnLmdldFVSSVBhdGhGb3JUaHJlYWRJRChvLnRpZCxuLmdldFBhdGgo KSkpO24ucmVtb3ZlUXVlcnlEYXRhKCd0aWQnKTt9fWZ1bmN0aW9uIG0obil7dmFy IG89bi5nZXRRdWVyeURhdGEoKTtpZighbi5nZXRQYXRoKCkubWF0Y2goZy5TRUFS Q0hfUE9TVEZJWF9QQVRIKSYmby5hY3Rpb24hPWguREVUQUlMLlNFQVJDSF9TTklQ UEVUJiYhby5taWQpe3ZhciBwPW8ucXVlcnk7aWYoby5xdWVyeSl7dmFyIHE9L1xi aXM6KGFyY2hpdmVkfHNwYW0pXGIoLiopLyxyPXEuZXhlYyhvLnF1ZXJ5KTtpZihy KXtzd2l0Y2goclsxXSl7Y2FzZSAnYXJjaGl2ZWQnOm4uc2V0UGF0aChnLkFSQ0hJ VkVEX1BBVEgpO2JyZWFrO2Nhc2UgJ3NwYW0nOm4uc2V0UGF0aChnLlNQQU1fUEFU SCk7YnJlYWs7fXZhciBzPW8ucXVlcnkuc3Vic3RyKDAsby5xdWVyeS5sZW5ndGgt clswXS5sZW5ndGgpLHQ9clsyXTtwPShzLnRyaW0oKSsnICcrdC50cmltKCkpLnRy aW0oKTt9fWlmKG8udGhyZWFkX3F1ZXJ5KXtuLnNldFBhdGgobi5nZXRQYXRoKCkr Zy5TRUFSQ0hfUE9TVEZJWF9QQVRIKTtuLnNldFF1ZXJ5RGF0YSh7cXVlcnk6by50 aHJlYWRfcXVlcnl9KTt9ZWxzZSBpZihwKXtuLnNldFBhdGgobi5nZXRQYXRoKCkr Zy5TRUFSQ0hfUE9TVEZJWF9QQVRIKTtuLmFkZFF1ZXJ5RGF0YSh7cXVlcnk6cH0p O31lbHNlIG4ucmVtb3ZlUXVlcnlEYXRhKCdxdWVyeScpO319ZS5leHBvcnRzPWk7 fSk7Cl9fZCgiV2ViTWVzc2VuZ2VyU3RhdGVTdG9yZSIsWyJNZXJjdXJ5QXNzZXJ0 IiwiUHJlc2VuY2VTdGF0ZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCdNZXJjdXJ5QXNzZXJ0JyksaD1iKCdQcmVzZW5jZVN0YXRlJyksaT1udWxsO2Z1 bmN0aW9uIGooKXt2YXIgbD1oLmdldCgpO2lmKGwmJmwud21sKXJldHVybiBsLndt bDtyZXR1cm4ge307fWgucmVnaXN0ZXJTdGF0ZVN0b3JlcihmdW5jdGlvbihsKXtp ZihpKWwud21sPWk7aT1udWxsO30pO3ZhciBrPXtnZXRMYXN0U2VlblRocmVhZElE OmZ1bmN0aW9uKCl7dmFyIGw9aigpO3JldHVybiBsLnRocmVhZF9pZHx8bnVsbDt9 LGdldExhc3RTZWVuRm9sZGVyOmZ1bmN0aW9uKCl7dmFyIGw9aigpO3JldHVybiBs LmZvbGRlcnx8bnVsbDt9LHNldExhc3RTZWVuOmZ1bmN0aW9uKGwsbSl7bSYmZy5p c1RocmVhZElEKG0pO2k9e2ZvbGRlcjpsLHRocmVhZF9pZDptfHxudWxsfTtoLmRv U3luYygpO319O2UuZXhwb3J0cz1rO30pOwpfX2QoIldlYk1lc3NlbmdlclBlcm1h bGlua3MiLFsiZ29VUkkiLCJNZXJjdXJ5SURzIiwiTWVyY3VyeVBhcnRpY2lwYW50 cyIsIk1lcmN1cnlGaWx0ZXJzIiwiV2ViTWVzc2VuZ2VyT2xkVG9OZXdQZXJtYWxp bmsiLCJXZWJNZXNzZW5nZXJQZXJtYWxpbmtDb25zdGFudHMiLCJNZXJjdXJ5U2Vy dmVyUmVxdWVzdHMiLCJXZWJNZXNzZW5nZXJTdGF0ZUNvbnN0YW50cyIsIldlYk1l c3NlbmdlclN0YXRlU3RvcmUiLCJNZXJjdXJ5VGhyZWFkcyIsIlRva2VuIiwiVVJJ IiwiTWVyY3VyeUNvbnN0YW50cyIsIldlYk1lc3NlbmdlckNvbnN0YW50cyJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdnb1VSSScpLGg9YignTWVyY3Vy eUlEcycpLGk9YignTWVyY3VyeVBhcnRpY2lwYW50cycpLGo9YignTWVyY3VyeUZp bHRlcnMnKSxrPWIoJ1dlYk1lc3Nlbmdlck9sZFRvTmV3UGVybWFsaW5rJyksbD1i KCdXZWJNZXNzZW5nZXJQZXJtYWxpbmtDb25zdGFudHMnKSxtPWIoJ01lcmN1cnlT ZXJ2ZXJSZXF1ZXN0cycpLG49YignV2ViTWVzc2VuZ2VyU3RhdGVDb25zdGFudHMn KSxvPWIoJ1dlYk1lc3NlbmdlclN0YXRlU3RvcmUnKSxwPWIoJ01lcmN1cnlUaHJl YWRzJykscT1iKCdUb2tlbicpLHI9YignVVJJJykscz1jKCdNZXJjdXJ5Q29uc3Rh bnRzJyksdD1jKCdXZWJNZXNzZW5nZXJDb25zdGFudHMnKSx1PXtnZXREZWZhdWx0 VVJJOmZ1bmN0aW9uKCl7dmFyIGZhPW5ldyByKCkuc2V0U3ViZG9tYWluKCd3d3cn KTtmYS5zZXRQYXRoKGwuQkFTRV9QQVRIKTtyZXR1cm4gZmE7fSxnb05leHRVUkk6 ZnVuY3Rpb24oZmEsZ2EsaGEpe2lmKGNhKGZhLGdhLGhhKSl7dmFyIGlhPXUuZ2V0 VVJJKGZhLGdhLGhhKTtnKGlhKTtyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO30s Z2V0VVJJOmZ1bmN0aW9uKGZhLGdhLGhhKXt2YXIgaWE9dS5nZXREZWZhdWx0VVJJ KCk7aWYoIWZhfHwhZ2F8fCFoYSlyZXR1cm4gaWE7c3dpdGNoKGhhLmZvbGRlcil7 Y2FzZSBzLk1lc3NhZ2luZ1RhZy5PVEhFUjppYS5zZXRQYXRoKGwuT1RIRVJfUEFU SCk7YnJlYWs7Y2FzZSBzLk1lc3NhZ2luZ1RhZy5BQ1RJT05fQVJDSElWRUQ6aWEu c2V0UGF0aChsLkFSQ0hJVkVEX1BBVEgpO2JyZWFrO2Nhc2Ugcy5NZXNzYWdpbmdU YWcuU1BBTTppYS5zZXRQYXRoKGwuU1BBTV9QQVRIKTticmVhazt9aWYoaGEuZmls dGVyJiYoaGEuZmlsdGVyIT1qLkFMTCkpaWEuYWRkUXVlcnlEYXRhKHtmaWx0ZXI6 aGEuZmlsdGVyfSk7dmFyIGphO3N3aXRjaChmYSl7Y2FzZSBuLk1BU1RFUi5TRUFS Q0g6amE9ZmFsc2U7aWEuc2V0UGF0aChpYS5nZXRQYXRoKCkrbC5TRUFSQ0hfUE9T VEZJWF9QQVRIKTticmVhazt9c3dpdGNoKGdhKXtjYXNlIG4uREVUQUlMLkNPTVBP U0VfTUFJTjpjYXNlIG4uREVUQUlMLkNPTVBPU0VfVFlQRUFIRUFEX1JFU1VMVFM6 Y2FzZSBuLkRFVEFJTC5DT01QT1NFX0FMTF9QRU9QTEVfUkVTVUxUUzppYS5zZXRQ YXRoKGlhLmdldFBhdGgoKStsLkNPTVBPU0VfUE9TVEZJWF9QQVRIKTtqYT1mYWxz ZTticmVhaztjYXNlIG4uREVUQUlMLlJFQ0VOVF9NRVNTQUdFUzpqYT0haGEudGhy

ZWFkX2lkO2JyZWFrO2Nhc2Ugbi5ERVRBSUwuU0VBUkNIX0NPTlRFWFQ6amE9ZmFs c2U7YnJlYWs7ZGVmYXVsdDpqYT10cnVlO2JyZWFrO31pZihqYSlpYS5hZGRRdWVy eURhdGEoe2FjdGlvbjpnYX0pO2lmKGhhLnRocmVhZF9pZCl7dmFyIGthPXAuZ2V0 Q2Fub25pY2FsVXNlckluVGhyZWFkKGhhLnRocmVhZF9pZCk7aWYoa2Epe3ZhciBs YT1pLmdldE5vdyhpLmdldElERm9yVXNlcihrYSkpLG1hPShsYSYmbGEudmFuaXR5 KXx8a2E7aWEuc2V0UGF0aChsLmdldFVSSVBhdGhGb3JJRE9yVmFuaXR5KG1hLGlh LmdldFBhdGgoKSkpO31lbHNle3ZhciBuYT1tLmdldFNlcnZlclRocmVhZElETm93 KGhhLnRocmVhZF9pZCksb2E9bmE/bmE6aGEudGhyZWFkX2lkO2lhLnNldFBhdGgo bC5nZXRVUklQYXRoRm9yVGhyZWFkSUQob2EsaWEuZ2V0UGF0aCgpKSk7fX1pZiho YS5xdWVyeSlpYS5hZGRRdWVyeURhdGEoe3F1ZXJ5OmhhLnF1ZXJ5fSk7aWYoaGEu bWVzc2FnZV9pZClpYS5hZGRRdWVyeURhdGEoe21pZDpoYS5tZXNzYWdlX2lkfSk7 aWYoaGEucmV1c2VfY29tcG9zZXIpaWEuYWRkUXVlcnlEYXRhKHtyYzp0cnVlfSk7 cmV0dXJuIGlhO30scHJvY2Vzc1VSSTpmdW5jdGlvbihmYSl7ZmE9ayhmYSk7aWYo IXUuaXNXZWJNZXNzZW5nZXJVUkkoZmEpKXJldHVybiBmYWxzZTt2YXIgZ2E9ZGEo ZmEpO2lmKCFnYS5tYXN0ZXJfc3RhdGV8fCFnYS5kZXRhaWxfc3RhdGUpcmV0dXJu IGVhKGZhKTt2YXIgaGE9e2RhdGE6e2ZvbGRlcjphYShmYSksZmlsdGVyOmJhKGZh KX0scmVkaXJlY3Q6ZmFsc2UsbWFzdGVyX3N0YXRlOmdhLm1hc3Rlcl9zdGF0ZSxk ZXRhaWxfc3RhdGU6Z2EuZGV0YWlsX3N0YXRlfTtpZihmYS5nZXRRdWVyeURhdGEo KS5yYyloYS5kYXRhLnJldXNlX2NvbXBvc2VyPXRydWU7aGE9eShmYSxoYSk7c3dp dGNoKGdhLmRldGFpbF9zdGF0ZSl7Y2FzZSBuLkRFVEFJTC5SRUNFTlRfTUVTU0FH RVM6cmV0dXJuIHooZmEsaGEpO2Nhc2Ugbi5ERVRBSUwuQ09NUE9TRV9NQUlOOnJl dHVybiB2KGZhLGhhKTtjYXNlIG4uREVUQUlMLlNFQVJDSF9TTklQUEVUOnJldHVy biBoYTtjYXNlIG4uREVUQUlMLlNFQVJDSF9DT05URVhUOmhhPXooZmEsaGEpO3Jl dHVybiB4KGZhLGhhKTt9aGEucmVkaXJlY3Q9dHJ1ZTtyZXR1cm4gaGE7fSxpc1dl Yk1lc3NlbmdlclVSSTpmdW5jdGlvbihmYSl7cmV0dXJuICgvXihcL21lc3NhZ2Vz fFwvd2VibWVzc2VuZ2VyKS8pLnRlc3QoZmEuZ2V0UGF0aCgpKTt9fTtmdW5jdGlv biB2KGZhLGdhKXt2YXIgaGE9ZmEuZ2V0UXVlcnlEYXRhKCkudG87cmV0dXJuIHco aGEsZ2EpO31mdW5jdGlvbiB3KGZhLGdhKXtpZihmYSl7dmFyIGhhPWkuZ2V0Tm93 KGkuZ2V0SURGb3JVc2VyKGZhKSk7aWYoaGEpe3ZhciBpYT17dWlkOmZhLHRleHQ6 aGEubmFtZSx0eXBlOnQuVVNFUl9UWVBFfTtnYS5kYXRhLm5ld190b2tlbnM9W25l dyBxKGlhKV07fX1nYS5kYXRhLnN0YXJ0PXRydWU7cmV0dXJuIGdhO31mdW5jdGlv biB4KGZhLGdhKXt2YXIgaGE9ZmEuZ2V0UXVlcnlEYXRhKCkubWlkO2lmKGhhKXtn YS5kYXRhLm1lc3NhZ2VfaWQ9aGE7fWVsc2UgZ2EucmVkaXJlY3Q9dHJ1ZTtyZXR1 cm4gZ2E7fWZ1bmN0aW9uIHkoZmEsZ2Epe3ZhciBoYT1mYS5nZXRRdWVyeURhdGEo KS5xdWVyeTtnYS5kYXRhLnF1ZXJ5PWhhO3JldHVybiBnYTt9ZnVuY3Rpb24geihm YSxnYSl7dmFyIGhhPWwuZ2V0VGhyZWFkSURGcm9tVVJJKGZhKTtpZihoYSl7dmFy IGlhPWguaXNWYWxpZChoYSk/aGE6bS5nZXRDbGllbnRUaHJlYWRJRE5vdyhoYSk7 aWYoaWEpe2dhLmRhdGEudGhyZWFkX2lkPWlhO31lbHNlIGdhLnJlZGlyZWN0PXRy dWU7fWVsc2V7dmFyIGphPWwuZ2V0VXNlcklET3JWYW5pdHkoZmEuZ2V0UGF0aCgp KTtpZihqYSl7dmFyIGthPWkuZ2V0SURGcm9tVmFuaXR5T3JGQklEKGphKSxsYT1r YSYmcC5nZXRDYW5vbmljYWxUaHJlYWRUb1BhcnRpY2lwYW50KGthKTtpZihsYSl7 aWYobGEudGltZXN0YW1wKXtnYS5kYXRhLnRocmVhZF9pZD1sYS50aHJlYWRfaWQ7 fWVsc2V7Z2EuZGV0YWlsX3N0YXRlPW4uREVUQUlMLkNPTVBPU0VfTUFJTjtnYT13 KGkuZ2V0VXNlcklEKGthKSxnYSk7fX1lbHNlIGdhLnJlZGlyZWN0PXRydWU7fX1y ZXR1cm4gZ2E7fWZ1bmN0aW9uIGFhKGZhLGdhKXt2YXIgaGE9ZmEuZ2V0UGF0aCgp O2lmKGhhLm1hdGNoKCdeJytsLkFSQ0hJVkVEX1BBVEgpKXJldHVybiBzLk1lc3Nh Z2luZ1RhZy5BQ1RJT05fQVJDSElWRUQ7aWYoaGEubWF0Y2goJ14nK2wuT1RIRVJf UEFUSCkpcmV0dXJuIHMuTWVzc2FnaW5nVGFnLk9USEVSO2lmKGhhLm1hdGNoKCde JytsLlNQQU1fUEFUSCkpcmV0dXJuIHMuTWVzc2FnaW5nVGFnLlNQQU07aWYoZ2Eh PT11bmRlZmluZWQpcmV0dXJuIGdhO3JldHVybiBzLk1lc3NhZ2luZ1RhZy5JTkJP WDt9ZnVuY3Rpb24gYmEoZmEpe3JldHVybiBmYS5nZXRRdWVyeURhdGEoKS5maWx0 ZXJ8fGouQUxMO31mdW5jdGlvbiBjYShmYSxnYSxoYSl7aWYoZ2E9PT1uLkRFVEFJ TC5TRUFSQ0hfQ09OVEVYVClyZXR1cm4gZmFsc2U7aWYoaGEmJmhhLm5vX3VyaT09 PXRydWUpe2RlbGV0ZSBoYS5ub191cmk7cmV0dXJuIGZhbHNlO312YXIgaWE9Z2E9 PW4uREVUQUlMLkNPTVBPU0VfTUFJTnx8Z2E9PW4uREVUQUlMLkNPTVBPU0VfVFlQ RUFIRUFEX1JFU1VMVFN8fGdhPT1uLkRFVEFJTC5DT01QT1NFX0FMTF9QRU9QTEVf UkVTVUxUUztpZihpYSYmKCFoYS5zdGFydHx8aGEubmV3X3Rva2VucykpcmV0dXJu IGZhbHNlO2lmKCFmYXx8IWdhfHwhaGEpcmV0dXJuIHRydWU7aWYoaGEuYnVnX3Jl cG9ydGluZ19lbmFibGVkKXJldHVybiBmYWxzZTtyZXR1cm4gIWhhLm1lc3NhZ2Vf YWN0aW9uO31mdW5jdGlvbiBkYShmYSl7dmFyIGdhPXt9LGhhPWZhLmdldFBhdGgo

KSxpYT1mYS5nZXRRdWVyeURhdGEoKSxqYT1oYS5tYXRjaChsLkJBU0VfUEFUSCsn KC9bXi9dKyk/JytsLlNFQVJDSF9QT1NURklYX1BBVEgrJygvW14vXSspPycpO2dh Lm1hc3Rlcl9zdGF0ZT1qYSYmaWEucXVlcnk/bi5NQVNURVIuU0VBUkNIOm4uTUFT VEVSLlJFQ0VOVF9USFJFQURTO2lmKGlhLmFjdGlvbil7Z2EuZGV0YWlsX3N0YXRl PWlhLmFjdGlvbjtyZXR1cm4gZ2E7fWlmKGhhLm1hdGNoKGwuQkFTRV9QQVRIKyco L1teL10rKT8nK2wuQ09NUE9TRV9QT1NURklYX1BBVEgpKXtnYS5kZXRhaWxfc3Rh dGU9bi5ERVRBSUwuQ09NUE9TRV9NQUlOO3JldHVybiBnYTt9aWYoaGEubWF0Y2go bC5USURfUE9TVEZJWF9QQVJUSUFMX1BBVEgpfHxsLmdldFVzZXJJRE9yVmFuaXR5 KGhhKSl7aWYoaWEubWlkKXtnYS5kZXRhaWxfc3RhdGU9bi5ERVRBSUwuU0VBUkNI X0NPTlRFWFQ7fWVsc2UgZ2EuZGV0YWlsX3N0YXRlPW4uREVUQUlMLlJFQ0VOVF9N RVNTQUdFUzt9ZWxzZSBpZihpYS5xdWVyeSlnYS5kZXRhaWxfc3RhdGU9bi5ERVRB SUwuU0VBUkNIX1NOSVBQRVQ7cmV0dXJuIGdhO31mdW5jdGlvbiBlYShmYSl7dmFy IGdhPWFhKGZhLG51bGwpfHxvLmdldExhc3RTZWVuRm9sZGVyKCksaGE9by5nZXRM YXN0U2VlblRocmVhZElEKCksaWE9e3JlZGlyZWN0OiEhaGF8fCEhZ2EsbWFzdGVy X3N0YXRlOm4uTUFTVEVSLlJFQ0VOVF9USFJFQURTLGRldGFpbF9zdGF0ZTpuLkRF VEFJTC5SRUNFTlRfTUVTU0FHRVMsZGF0YTp7Zm9sZGVyOmdhfHxzLk1lc3NhZ2lu Z1RhZy5JTkJPWCxmaWx0ZXI6ai5BTEwsdGhyZWFkX2lkOmhhfX07cmV0dXJuIGlh O31lLmV4cG9ydHM9dTt9KTsKX19kKCJNZXJjdXJ5SmV3ZWxUaHJlYWRsaXN0Q29u dHJvbCIsWyJldmVudC1leHRlbnNpb25zIiwiQXJiaXRlck1peGluIiwiQ1NTIiwi RE9NIiwiTWVyY3VyeU9yZGVyZWRUaHJlYWRsaXN0IiwiUGFyZW50IiwiTWVyY3Vy eVRocmVhZEluZm9ybWVyIiwiTWVyY3VyeVRocmVhZE1ldGFkYXRhUmVuZGVyZXIi LCJNZXJjdXJ5VGhyZWFkcyIsIldlYk1lc3NlbmdlclBlcm1hbGlua3MiLCJXZWJN ZXNzZW5nZXJTdGF0ZUNvbnN0YW50cyIsImNvcHlQcm9wZXJ0aWVzIiwidHgiLCJN ZXJjdXJ5Q29uZmlnIiwiTWVyY3VyeUNvbnN0YW50cyIsIk1lcmN1cnlKZXdlbFRl bXBsYXRlcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNp b25zJyk7dmFyIGc9YignQXJiaXRlck1peGluJyksaD1iKCdDU1MnKSxpPWIoJ0RP TScpLGo9YignTWVyY3VyeU9yZGVyZWRUaHJlYWRsaXN0Jyksaz1iKCdQYXJlbnQn KSxsPWIoJ01lcmN1cnlUaHJlYWRJbmZvcm1lcicpLG09YignTWVyY3VyeVRocmVh ZE1ldGFkYXRhUmVuZGVyZXInKSxuPWIoJ01lcmN1cnlUaHJlYWRzJyksbz1iKCdX ZWJNZXNzZW5nZXJQZXJtYWxpbmtzJykscD1iKCdXZWJNZXNzZW5nZXJTdGF0ZUNv bnN0YW50cycpLHE9YignY29weVByb3BlcnRpZXMnKSxyPWIoJ3R4Jykscz1jKCdN ZXJjdXJ5Q29uZmlnJyksdD1jKCdNZXJjdXJ5Q29uc3RhbnRzJyksdT1jKCdNZXJj dXJ5SmV3ZWxUZW1wbGF0ZXMnKTtmdW5jdGlvbiB2KHcpe3RoaXMuX3Jvb3RFbGVt ZW50PXc7dGhpcy5fY29udGVudEVsZW1lbnQ9aS5maW5kKHRoaXMuX3Jvb3RFbGVt ZW50LCcuamV3ZWxDb250ZW50Jyk7dGhpcy5fbG9hZGluZ0VsZW1lbnQ9aS5maW5k KHRoaXMuX3Jvb3RFbGVtZW50LCcuamV3ZWxMb2FkaW5nJyk7bC5zdWJzY3JpYmUo J3RocmVhZGxpc3QtdXBkYXRlZCcsdGhpcy5yZW5kZXIuYmluZCh0aGlzKSk7dGhp cy5yZW5kZXIoKTt9cSh2LHtFVkVOVF9USFJFQURTX0xPQURFRDondGhyZWFkcy1s b2FkZWQnLEVWRU5UX1RIUkVBRFNfUkVOREVSRUQ6J3RocmVhZHMtcmVuZGVyZWQn fSk7cSh2LnByb3RvdHlwZSxnKTtxKHYucHJvdG90eXBlLHtyZW5kZXI6ZnVuY3Rp b24oKXtpLmVtcHR5KHRoaXMuX2NvbnRlbnRFbGVtZW50KTtoLnNob3codGhpcy5f bG9hZGluZ0VsZW1lbnQpO3ZhciB3PWkuY3JlYXRlKCdkaXYnKTtpLmFwcGVuZENv bnRlbnQodGhpcy5fY29udGVudEVsZW1lbnQsdyk7ai5nZXRUaHJlYWRsaXN0KHQu TWVyY3VyeVRocmVhZGxpc3RDb25zdGFudHMuUkVDRU5UX1RIUkVBRF9PRkZTRVQs dC5NZXJjdXJ5VGhyZWFkbGlzdENvbnN0YW50cy5KRVdFTF9USFJFQURfQ09VTlQs dC5NZXNzYWdpbmdUYWcuSU5CT1gsdGhpcy5yZW5kZXJUaHJlYWRzLmJpbmQodGhp cyx3KSx0cnVlKTt9LHJlbmRlclRocmVhZHM6ZnVuY3Rpb24odyx4KXt0aGlzLmlu Zm9ybSh2LkVWRU5UX1RIUkVBRFNfTE9BREVEKTtpZih4Lmxlbmd0aCl7eC5mb3JF YWNoKGZ1bmN0aW9uKHkpe3ZhciB6PXVbJzpmYjptZXJjdXJ5Ompld2VsOnRocmVh ZGxpc3Qtcm93J10uYnVpbGQoKTtuLmdldFRocmVhZE1ldGEoeSxmdW5jdGlvbihh YSl7bS5yZW5kZXJDb3JlVGhyZWFkbGlzdChhYSx6LHRoaXMucmVuZGVyU2luZ2xl VGhyZWFkLmJpbmQodGhpcykse3Nob3dfdW5yZWFkX2NvdW50OnRydWV9KTt9LmJp bmQodGhpcykpO2kuYXBwZW5kQ29udGVudCh3LHouZ2V0Um9vdCgpKTt9LmJpbmQo dGhpcykpO31lbHNlIGkuc2V0Q29udGVudCh0aGlzLl9yb290RWxlbWVudCx0aGlz LnJlbmRlckVtcHR5VGhyZWFkbGlzdCgpKTtoLmhpZGUodGhpcy5fbG9hZGluZ0Vs ZW1lbnQpO3RoaXMuaW5mb3JtKHYuRVZFTlRfVEhSRUFEU19SRU5ERVJFRCk7fSxy ZW5kZXJTaW5nbGVUaHJlYWQ6ZnVuY3Rpb24odyx4KXtpZih4LnVucmVhZF9jb3Vu dD4wKWguYWRkQ2xhc3Mody5nZXRSb290KCksJ2pld2VsSXRlbU5ldycpO2lmKHMu TWVzc2FnZXNNZXJjdXJ5SW50ZWdyYXRpb25HSyl7dy5nZXROb2RlKCdsaW5rJyku c2V0QXR0cmlidXRlKCdocmVmJyxvLmdldFVSSShwLk1BU1RFUi5SRUNFTlRfVEhS

RUFEUyxwLkRFVEFJTC5SRUNFTlRfTUVTU0FHRVMse3RocmVhZF9pZDp4LnRocmVh ZF9pZH0pLnRvU3RyaW5nKCkpO31lbHNlIG0ucmVuZGVyVGl0YW5MaW5rKHgudGhy ZWFkX2lkLHcuZ2V0Tm9kZSgnbGluaycpKTtFdmVudC5saXN0ZW4ody5nZXRSb290 KCksJ21vdXNlb3ZlcicsZnVuY3Rpb24oZXZlbnQpe3ZhciB5PXcuZ2V0Um9vdCgp O2lmKCFrLmJ5Q2xhc3MoeSwnbm90aWZOZWdhdGl2ZUJhc2UnKSloLmFkZENsYXNz KHksJ3NlbGVjdGVkJyk7fSk7RXZlbnQubGlzdGVuKHcuZ2V0Um9vdCgpLCdtb3Vz ZW91dCcsZnVuY3Rpb24oZXZlbnQpe2gucmVtb3ZlQ2xhc3Mody5nZXRSb290KCks J3NlbGVjdGVkJyk7fSk7fSxyZW5kZXJFbXB0eVRocmVhZGxpc3Q6ZnVuY3Rpb24o KXtyZXR1cm4gaS5jcmVhdGUoJ2xpJyx7Y2xhc3NOYW1lOidlbXB0eSd9LCJUaWRh ayBhZGEgcGVzYW4iKTt9fSk7ZS5leHBvcnRzPXY7fSk7Cl9fZCgiTWVyY3VyeUpl d2VsIixbIk1lcmN1cnlDaGFubmVsSGFuZGxlciIsIk1lcmN1cnlKZXdlbENvdW50 Q29udHJvbCIsIkRPTSIsIk1lcmN1cnlKZXdlbFRocmVhZGxpc3RDb250cm9sIiwi TWVyY3VyeVNlcnZlclJlcXVlc3RzIiwidXNlckFjdGlvbiJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXtiKCdNZXJjdXJ5Q2hhbm5lbEhhbmRsZXInKTt2YXIgZz1iKCdN ZXJjdXJ5SmV3ZWxDb3VudENvbnRyb2wnKSxoPWIoJ0RPTScpLGk9YignTWVyY3Vy eUpld2VsVGhyZWFkbGlzdENvbnRyb2wnKSxqPWIoJ01lcmN1cnlTZXJ2ZXJSZXF1 ZXN0cycpLGs9YigndXNlckFjdGlvbicpLGw9ZmFsc2U7ZnVuY3Rpb24gbShxLHIs cyx0KXtqLmhhbmRsZVVwZGF0ZSh0KTt2YXIgdT1uZXcgZyhyLHMpLHY9aC5maW5k KHEsJyNNZXJjdXJ5SmV3ZWxUaHJlYWRMaXN0Jyk7aWYocy5nZXRSb290KCkmJnMu aXNPcGVuKCkpe24uY2FsbCh0aGlzLHYpO31lbHNlIHMuc3Vic2NyaWJlKCdvcGVu ZWQnLG4uYmluZCh0aGlzLHYpKTt9ZS5leHBvcnRzPW07ZnVuY3Rpb24gbihxKXt0 aGlzLl91YT1rKCdtZXNzYWdlcycpLnVhaSgnY2xpY2snLCdqZXdlbCcpO3RoaXMu X2xpc3RlbkZvckxvYWQ9dGhpcy5fbGlzdGVuRm9yUmVuZGVyPXRydWU7aWYoIWwp e3ZhciByPW5ldyBpKHEpO3Iuc3Vic2NyaWJlKGkuRVZFTlRfVEhSRUFEU19MT0FE RUQsby5iaW5kKHRoaXMpKTtyLnN1YnNjcmliZShpLkVWRU5UX1RIUkVBRFNfUkVO REVSRUQscC5iaW5kKHRoaXMpKTtsPXRydWU7fX1mdW5jdGlvbiBvKCl7aWYodGhp cy5fbGlzdGVuRm9yTG9hZCl7dGhpcy5fdWEuYWRkX2V2ZW50KCdsb2FkZWQnKTt0 aGlzLl9saXN0ZW5Gb3JMb2FkPWZhbHNlO319ZnVuY3Rpb24gcCgpe2lmKHRoaXMu X2xpc3RlbkZvclJlbmRlcil7dGhpcy5fdWEuYWRkX2V2ZW50KCdyZW5kZXJlZCcp O3RoaXMuX2xpc3RlbkZvclJlbmRlcj1mYWxzZTt9fX0pOwpfX2QoIlRpdGFuTGVm dE5hdiIsWyJDb3VudGVyRGlzcGxheSIsIk1lc3NhZ2luZ0V2ZW50cyJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdDb3VudGVyRGlzcGxheScpLGg9Yign TWVzc2FnaW5nRXZlbnRzJyksaT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe2guc3Vi c2NyaWJlKCdjb3VudC9vdGhlcl91bnNlZW4nLGZ1bmN0aW9uKGosayl7Zy5zZXRD b3VudCgnb3RoZXJfdW5zZWVuJyxrKTt9KTt9fTtlLmV4cG9ydHM9aTt9KTsKX19k KCJNZXJjdXJ5U3RhdGVDaGVjayIsWyJBcmJpdGVyIiwiY29weVByb3BlcnRpZXMi LCJDaGFubmVsQ29uc3RhbnRzIiwiTWVyY3VyeUZvbGRlcnMiLCJNZXJjdXJ5U2Vy dmVyUmVxdWVzdHMiLCJVUkkiLCJNZXJjdXJ5Q29uc3RhbnRzIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ2NvcHlQcm9wZXJ0 aWVzJyksaT1iKCdDaGFubmVsQ29uc3RhbnRzJyksaj1iKCdNZXJjdXJ5Rm9sZGVy cycpLGs9YignTWVyY3VyeVNlcnZlclJlcXVlc3RzJyksbD1iKCdVUkknKSxtPWMo J01lcmN1cnlDb25zdGFudHMnKSxuPWgobmV3IGcoKSx7aW5pdGlhbGl6ZTpmdW5j dGlvbigpe2cuc3Vic2NyaWJlKGkuT05fSU5WQUxJRF9ISVNUT1JZLG8pO2QoWydD aGFubmVsQ29ubmVjdGlvbiddLGZ1bmN0aW9uKHApe3Auc3Vic2NyaWJlKHAuQ09O TkVDVEVELGZ1bmN0aW9uKHEscil7aWYoIXIuaW5pdClvKCk7fSk7fSk7fX0pO2Z1 bmN0aW9uIG8oKXt2YXIgcDtpZihsLmdldFJlcXVlc3RVUkkoKS5nZXRQYXRoKCku c2VhcmNoKC9tZXNzYWdlcy8pIT09LTEpe3A9ai5nZXRTdXBwb3J0ZWRGb2xkZXJz KCk7fWVsc2UgcD1bbS5NZXNzYWdpbmdUYWcuSU5CT1hdO2suZmV0Y2hNaXNzZWRN ZXNzYWdlcyhwKTt9bi5pbml0aWFsaXplKCk7ZS5leHBvcnRzPW47fSk7Cl9fZCgi TGl2ZU1lc3NhZ2VSZWNlaXZlciIsWyJBcmJpdGVyIiwiQXN5bmNSZXF1ZXN0Iiwi Q2hhbm5lbENvbnN0YW50cyIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0FzeW5jUmVxdWVzdCcp LGk9YignQ2hhbm5lbENvbnN0YW50cycpLGo9YignY29weVByb3BlcnRpZXMnKTtm dW5jdGlvbiBrKGwpe3RoaXMuZXZlbnROYW1lPWw7dGhpcy5zdWJzPW51bGw7dGhp cy5oYW5kbGVyPWJhZ29maG9sZGluZzt0aGlzLnNodXRkb3duSGFuZGxlcj1udWxs O3RoaXMucmVnaXN0ZXJlZD1mYWxzZTt0aGlzLmFwcElkPTE7fWooayx7Z2V0QXBw TWVzc2FnZVR5cGU6ZnVuY3Rpb24obCxtKXtyZXR1cm4gJ2xpdmVfbWVzc2FnZS8n K2wrJzonK207fSxyb3V0ZTpmdW5jdGlvbihsKXt2YXIgbT1mdW5jdGlvbihuKXt2 YXIgbz1rLmdldEFwcE1lc3NhZ2VUeXBlKGwuYXBwX2lkLGwuZXZlbnRfbmFtZSk7 Zy5pbmZvcm0obyxuLGcuQkVIQVZJT1JfUEVSU0lTVEVOVCk7fTtpZihsLmhhc0Nh

cHR1cmUpe25ldyBoKCkuc2V0SGFuZGxlcihmdW5jdGlvbihuKXttKG4uZ2V0UGF5 bG9hZCgpKTt9KS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1ZSkuaGFu ZGxlUmVzcG9uc2UobC5yZXNwb25zZSk7fWVsc2UgbShsLnJlc3BvbnNlKTt9fSk7 aihrLnByb3RvdHlwZSx7c2V0QXBwSWQ6ZnVuY3Rpb24obCl7dGhpcy5hcHBJZD1s O3JldHVybiB0aGlzO30sc2V0SGFuZGxlcjpmdW5jdGlvbihsKXt0aGlzLmhhbmRs ZXI9bDt0aGlzLl9kaXJ0eSgpO3JldHVybiB0aGlzO30sc2V0UmVzdGFydEhhbmRs ZXI6YmFnb2Zob2xkaW5nLHNldFNodXRkb3duSGFuZGxlcjpmdW5jdGlvbihsKXt0 aGlzLnNodXRkb3duSGFuZGxlcj1sLnNoaWVsZCgpO3RoaXMuX2RpcnR5KCk7cmV0 dXJuIHRoaXM7fSxfZGlydHk6ZnVuY3Rpb24oKXtpZih0aGlzLnJlZ2lzdGVyZWQp e3RoaXMudW5yZWdpc3RlcigpO3RoaXMucmVnaXN0ZXIoKTt9fSxyZWdpc3Rlcjpm dW5jdGlvbigpe3ZhciBsPWZ1bmN0aW9uKG4sbyl7cmV0dXJuIHRoaXMuaGFuZGxl cihvKTt9LmJpbmQodGhpcyksbT1rLmdldEFwcE1lc3NhZ2VUeXBlKHRoaXMuYXBw SWQsdGhpcy5ldmVudE5hbWUpO3RoaXMuc3Vicz17fTt0aGlzLnN1YnMubWFpbj1n LnN1YnNjcmliZShtLGwpO2lmKHRoaXMuc2h1dGRvd25IYW5kbGVyKXRoaXMuc3Vi cy5zaHV0PWcuc3Vic2NyaWJlKGkuT05fU0hVVERPV04sdGhpcy5zaHV0ZG93bkhh bmRsZXIpO3RoaXMucmVnaXN0ZXJlZD10cnVlO3JldHVybiB0aGlzO30sdW5yZWdp c3RlcjpmdW5jdGlvbigpe2lmKCF0aGlzLnN1YnMpcmV0dXJuIHRoaXM7Zm9yKHZh ciBsIGluIHRoaXMuc3VicylpZih0aGlzLnN1YnNbbF0pdGhpcy5zdWJzW2xdLnVu c3Vic2NyaWJlKCk7dGhpcy5zdWJzPW51bGw7dGhpcy5yZWdpc3RlcmVkPWZhbHNl O3JldHVybiB0aGlzO319KTtlLmV4cG9ydHM9azt9KTsKZnVuY3Rpb24gUHJlc2Vu Y2VJbmRpY2F0b3IoKXt9Y29weVByb3BlcnRpZXMoUHJlc2VuY2VJbmRpY2F0b3Iu cHJvdG90eXBlLHtpbml0OmZ1bmN0aW9uKGEsYixjKXt0aGlzLl9pZD1hO3RoaXMu X2ZpcnN0bmFtZT1iO3RoaXMuX3Rvb2x0aXA9Yzt0aGlzLl9pbWFnZT1ET00uc2Ny eSh0aGlzLl90b29sdGlwLCdpJylbMF07dGhpcy5fcHJldmlvdXNBdmFpbD1udWxs O3RoaXMuX2pzbG9nPUpTTG9nZ2VyLmNyZWF0ZSgncHJlc2VuY2VfaW5kaWNhdG9y Jyk7cmVxdWlyZUxhenkoWydDaGF0VmlzaWJpbGl0eSddLGZ1bmN0aW9uKGUpe3Ro aXMuX2pzbG9nLmxvZygndmlzX2luaXQnLGUuaXNPbmxpbmUoKSk7dGhpcy5fY2hh dFZpc2liaWxpdHk9ZTt0aGlzLl91cGRhdGVWaXNpYmlsaXR5KCk7fS5iaW5kKHRo aXMpKTt0aGlzLl9zdWJzY3JpcHRpb25zPVtBcmJpdGVyLnN1YnNjcmliZShbQXZh aWxhYmxlTGlzdENvbnN0YW50cy5PTl9BVkFJTEFCSUxJVFlfQ0hBTkdFRF0sdGhp cy5fdXBkYXRlQXZhaWxhYmlsaXR5LmJpbmQodGhpcykpLEFyYml0ZXIuc3Vic2Ny aWJlKFsnY2hhdC92aXNpYmlsaXR5LWNoYW5nZWQnXSx0aGlzLl91cGRhdGVWaXNp YmlsaXR5LmJpbmQodGhpcykpXTt0aGlzLl91cGRhdGVBdmFpbGFiaWxpdHkuYmlu ZCh0aGlzKS5kZWZlcigpO3ZhciBkPUV2ZW50Lmxpc3Rlbih0aGlzLl90b29sdGlw LCdjbGljaycsZnVuY3Rpb24oKXtyZXF1aXJlTGF6eShbJ0F2YWlsYWJsZUxpc3Qn XSxmdW5jdGlvbihlKXtpZih0aGlzLl9wcmV2aW91c0F2YWlsIT1BdmFpbGFibGVM aXN0Q29uc3RhbnRzLk9GRkxJTkUpQ2hhdC5vcGVuVGFiKHRoaXMuX2lkKTt9LmJp bmQodGhpcykpO30uYmluZCh0aGlzKSk7b25sZWF2ZVJlZ2lzdGVyKGZ1bmN0aW9u KCl7ZC5yZW1vdmUoKTt3aGlsZSh0aGlzLl9zdWJzY3JpcHRpb25zLmxlbmd0aClB cmJpdGVyLnVuc3Vic2NyaWJlKHRoaXMuX3N1YnNjcmlwdGlvbnMucG9wKCkpO30u YmluZCh0aGlzKSk7fSxfdXBkYXRlQXZhaWxhYmlsaXR5OmZ1bmN0aW9uKCl7cmVx dWlyZUxhenkoWydBdmFpbGFibGVMaXN0JywnQ2hhdENvbmZpZyddLGZ1bmN0aW9u KGEsYil7aWYoIWEuaXNSZWFkeSgpKXJldHVybjt2YXIgYyxkLGU9YS5nZXQodGhp cy5faWQpO2lmKGU9PT10aGlzLl9wcmV2aW91c0F2YWlsKXJldHVybjt0aGlzLl9w cmV2aW91c0F2YWlsPWU7c3dpdGNoKGUpe2Nhc2UgQXZhaWxhYmxlTGlzdENvbnN0 YW50cy5PRkZMSU5FOmM9dHguXygie25hbWV9IHNlZGFuZyBvZmZsaW5lLiIse25h bWU6dGhpcy5fZmlyc3RuYW1lfSk7ZD0nb2ZmbGluZSc7YnJlYWs7Y2FzZSBBdmFp bGFibGVMaXN0Q29uc3RhbnRzLklETEU6Yz10eC5fKCJ7bmFtZX0gc2VkYW5nIHRh ayBhZGEgYWt0aXZpdGFzIix7bmFtZTp0aGlzLl9maXJzdG5hbWV9KTtkPSdpZGxl JzticmVhaztjYXNlIEF2YWlsYWJsZUxpc3RDb25zdGFudHMuQUNUSVZFOmM9dHgu Xygie25hbWV9IHNlZGFuZyBvbmxpbmUiLHtuYW1lOnRoaXMuX2ZpcnN0bmFtZX0p O2Q9J29ubGluZSc7YnJlYWs7Y2FzZSBBdmFpbGFibGVMaXN0Q29uc3RhbnRzLk1P QklMRTpjPXR4Ll8oIntuYW1lfSB0ZXJzZWRpYSBsZXdhdCBwb25zZWwiLHtuYW1l OnRoaXMuX2ZpcnN0bmFtZX0pO2Q9J21vYmlsZSc7YnJlYWs7ZGVmYXVsdDp0aHJv dyBuZXcgRXJyb3IoJ0ludmFsaWQgYXZhaWxhYmlsaXR5Jyk7fVRvb2x0aXBMaW5r LnNldFRvb2x0aXBUZXh0KHRoaXMuX3Rvb2x0aXAsYyk7Q1NTLnNldENsYXNzKHRo aXMuX2ltYWdlLGQpO30uYmluZCh0aGlzKSk7fSxfdXBkYXRlVmlzaWJpbGl0eTpm dW5jdGlvbigpe2lmKHRoaXMuX2NoYXRWaXNpYmlsaXR5LmlzT25saW5lKCkpe0NT Uy5zaG93KHRoaXMuX3Rvb2x0aXApO31lbHNlIENTUy5oaWRlKHRoaXMuX3Rvb2x0 aXApO319KTsKX19kKCJsZWdhY3k6bGl2ZW1lc3NhZ2UiLFsiTGl2ZU1lc3NhZ2VS

ZWNlaXZlciJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuTGl2ZU1lc3NhZ2VSZWNlaXZl cj1iKCdMaXZlTWVzc2FnZVJlY2VpdmVyJyk7fSwzKTsKd2luZG93LmluaXRfbGl2 ZV9tZXNzYWdlX3JlY2VpdmU9d2luZG93LmluaXRfbGl2ZV9tZXNzYWdlX3JlY2Vp dmV8fGZ1bmN0aW9uKGEpe3dpbmRvdy5pbml0X2xpdmVfbWVzc2FnZV9yZWNlaXZl PWJhZ29maG9sZGluZztBcmJpdGVyLnN1YnNjcmliZShDaGFubmVsQ29uc3RhbnRz LmdldEFyYml0ZXJUeXBlKCdhcHBfbXNnJyksZnVuY3Rpb24oYixjKXtpZihjLm9i ai5ldmVudF9uYW1lPT0nYmVlcF9ldmVudCcpe0Jvb3Rsb2FkZXIubG9hZENvbXBv bmVudHMoJ2JlZXBlcicsZnVuY3Rpb24oKXtCZWVwZXIuZW5zdXJlSW5pdGlhbGl6 ZWQoKTtCZWVwZXIuc2V0UGFyYW1zKGEpO0xpdmVNZXNzYWdlUmVjZWl2ZXIucm91 dGUoYy5vYmopO30pO31lbHNlIExpdmVNZXNzYWdlUmVjZWl2ZXIucm91dGUoYy5v YmopO30pO307 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=XhtFMcXPdd_.js Content-Type: application/x-javascript; charset=utf-8; name=XhtFMcXPdd_.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/ys/r/XhtFMcXPdd_.js Content-Transfer-Encoding: Base64 LyoxMzQ1NTg0NjM2LDE3ODE0MjUxNyovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIkFXalNQIl0pOyB9CgpfX2Qo IlByb21vdGVkUG9zdENvbnN0YW50cyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPXtTQVZFOidib29zdGVkX3Bvc3Qvc2F2ZScsQ0FOQ0VMOidib29zdGVk X3Bvc3QvY2FuY2VsJyxGTFlPVVRfU0hPVzoncHJvbW90ZWRfcG9zdC9mbHlvdXRf c2hvdycsRkxZT1VUX0hJREU6J3Byb21vdGVkX3Bvc3QvZmx5b3V0X2hpZGUnLENM T1NFOidib29zdGVkX3Bvc3QvY2xvc2UnLFNFVF9CVURHRVQ6J2Jvb3N0ZWRfcG9z dC9zZXRfYnVkZ2V0JyxTVE9QOidib29zdGVkX3Bvc3Qvc3RvcCcsUkVTVU1FOidi b29zdGVkX3Bvc3QvcmVzdW1lJyxBQ0NPVU5UX0NIQU5HRTonYm9vc3RlZF9wb3N0 L2FjY291bnRfY2hhbmdlJyxQQVlfRk9SX1BST01PVElPTjonYm9vc3RlZF9wb3N0 L3BheV9mb3JfcHJvbW90aW9uJyxBVVRPUFJPTU9URV9DSEFOR0U6J2Jvb3N0ZWRf cG9zdC9hdXRvcHJvbW90ZV9jaGFuZ2UnLEZPQ19DSEFOR0U6J2Jvb3N0ZWRfcG9z dC9mb2NfY2hhbmdlJ307ZS5leHBvcnRzPWc7fSk7Cl9fZCgiQm9vc3RlZFBvc3RM b2dnaW5nIixbIkVhZ2xlRXllIiwiQXN5bmNSZXF1ZXN0Il0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ0VhZ2xlRXllJyksaD1iKCdBc3luY1JlcXVlc3Qn KSxpPXtsb2c6ZnVuY3Rpb24oaixrKXtrLmV2ZW50PWo7Zy5sb2coJ3JvZScsayk7 fSxsb2dDbGlja0NvbnZlcnNpb25UcmFja2luZzpmdW5jdGlvbihqLGssbCxtKXt2 YXIgbj17cGFnZV9pZDpqfTtpZihrKW4ucG9zdF9pZD1rO2lmKGwpbi5jYW1wYWln bl9pZD1sO2lmKG0pbi5jYW1wYWlnbl9wbGFjZW1lbnQ9bTtuZXcgaCgnL2Fkcy9h amF4L2Jvb3N0ZWQvY29udnRyYWNrLnBocCcpLnNldERhdGEobikuc2VuZCgpO319 O2UuZXhwb3J0cz1pO30pOwpfX2QoIkJvb3N0ZWRQb3N0UG9zdFdpZGdldCIsWyJl dmVudC1leHRlbnNpb25zIiwiQXJiaXRlciIsIkFyYml0ZXJNaXhpbiIsIkFzeW5j UmVxdWVzdCIsIkNsYXNzIiwiQ1NTIiwiRE9NIiwiQm9vc3RlZFBvc3RMb2dnaW5n IiwiUHJvbW90ZWRQb3N0Q29uc3RhbnRzIiwiY29weVByb3BlcnRpZXMiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIo J0FyYml0ZXInKSxoPWIoJ0FyYml0ZXJNaXhpbicpLGk9YignQXN5bmNSZXF1ZXN0 Jyksaj1iKCdDbGFzcycpLGs9YignQ1NTJyksbD1iKCdET00nKSxtPWIoJ0Jvb3N0 ZWRQb3N0TG9nZ2luZycpLG49YignUHJvbW90ZWRQb3N0Q29uc3RhbnRzJyksbz1i KCdjb3B5UHJvcGVydGllcycpLHA9e30scT0wO2Z1bmN0aW9uIHIocyx0LHUsdix3 LHgseSx6LGFhLGJhKXt0aGlzLl9wb3BvdmVyPXM7dGhpcy5fcG9wb3ZlckJ1dHRv bj10O3RoaXMuX2xvYWRpbmdNZW51PXU7dGhpcy5fcGFnZUlkPXY7dGhpcy5fcG9z dElkPXc7dGhpcy5faXNCb29zdGVkPXg7dGhpcy5fY2FtcGFpZ25JZD15O3RoaXMu X2NhbXBhaWduUGxhY2VtZW50PXo7dGhpcy5fY3JlYXRlTG9nV2FpdGluZ0ZvckZs eW91dD1mYWxzZTt0aGlzLl9pbnN0YW5jZUlkPXErKztwW3RoaXMuX2luc3RhbmNl SWRdPXRoaXM7dGhpcy5fZmx5b3V0PW51bGw7dGhpcy5fc3RhdHVzVGhyb2JiZXI9 bnVsbDt0aGlzLl9hdXRvT3BlblBvcG92ZXI9YWE7dGhpcy5fYWRkaXRpb25hbExv Z2dpbmdEYXRhPWJhO3RoaXMuX2luaXRpYWxpemUoKTt9ci5zZXRGbHlvdXQ9ZnVu Y3Rpb24ocyx0LHUpe3Bbc10uc2V0Rmx5b3V0KHQsdSk7fTtvKHIucHJvdG90eXBl LGgse19mZXRjaGVkOmZhbHNlLF9tb3VzZW92ZXJMaXN0ZW5lcjpudWxsLF9maXJz dENsaWNrTGlzdGVuZXI6bnVsbCxfaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMu bG9nZ2luZ0RhdGE9e3BhZ2VfaWQ6dGhpcy5fcGFnZUlkLHBvc3RfaWQ6dGhpcy5f cG9zdElkfTt0aGlzLl9tb3VzZW92ZXJMaXN0ZW5lcj1FdmVudC5saXN0ZW4odGhp

cy5fcG9wb3ZlckJ1dHRvbiwnbW91c2VvdmVyJyx0aGlzLl9mZXRjaEZseW91dC5i aW5kKHRoaXMpKTt0aGlzLl9maXJzdENsaWNrTGlzdGVuZXI9RXZlbnQubGlzdGVu KHRoaXMuX3BvcG92ZXJCdXR0b24sJ2NsaWNrJyx0aGlzLl9vbkZpcnN0Q2xpY2su YmluZCh0aGlzKSk7dGhpcy5fcG9wb3Zlci5zdWJzY3JpYmUoJ3Nob3cnLGZ1bmN0 aW9uKCl7Zy5pbmZvcm0obi5GTFlPVVRfU0hPVyk7aWYodGhpcy5fYXV0b09wZW5Q b3BvdmVyKXJldHVybjtpZighdGhpcy5fZmx5b3V0JiYhdGhpcy5faXNCb29zdGVk KXt0aGlzLl9jcmVhdGVMb2dXYWl0aW5nRm9yRmx5b3V0PXRydWU7cmV0dXJuO310 aGlzLl9sb2dPbkZseW91dE9wZW4oKTt9LmJpbmQodGhpcykpO3RoaXMuX3BvcG92 ZXIuc3Vic2NyaWJlKCdoaWRlJyxmdW5jdGlvbigpe2cuaW5mb3JtKG4uRkxZT1VU X0hJREUpO30uYmluZCh0aGlzKSk7aWYodGhpcy5fYXV0b09wZW5Qb3BvdmVyKXt0 aGlzLl9wb3BvdmVyQnV0dG9uLmNsaWNrKCk7dGhpcy5sb2dnaW5nRGF0YS5jYW1w YWlnbl9pZD10aGlzLl9jYW1wYWlnbklkO3RoaXMubG9nZ2luZ0RhdGEuYnVkZ2V0 X3JlbWFpbmluZz10aGlzLl9hZGRpdGlvbmFsTG9nZ2luZ0RhdGEuYnVkZ2V0X3Jl bWFpbmluZzttLmxvZygnY2xpY2tlZF9hZnRlcl9idWRnZXRfbm90aWZpY2F0aW9u Jyx0aGlzLmxvZ2dpbmdEYXRhKTt9fSxfY3JlYXRlTGlzdGVuZXI6ZnVuY3Rpb24o cyx0KXt0aGlzLl9zaG93VGhyb2JiZXJBbmREaXNhYmxlRmx5b3V0QnV0dG9ucygp O3RoaXMubG9nZ2luZ0RhdGEuYnVkZ2V0PXQuZm9ybURhdGEuYm9vc3RlZF9wb3N0 X2J1ZGdldDttLmxvZygndGltZWxpbmVfY3JlYXRlX3NhdmUnLHRoaXMubG9nZ2lu Z0RhdGEpO25ldyBpKCcvYWRzL2FqYXgvYm9vc3RlZC9lZGl0LnBocCcpLnNldERh dGEoe3N0YXR1czp0cnVlLGFjY291bnRfaWQ6dC5mb3JtRGF0YS5ib29zdGVkX3Bv c3RfYWNjb3VudF9pZCxidWRnZXQ6dC5mb3JtRGF0YS5ib29zdGVkX3Bvc3RfYnVk Z2V0LGN1cnJlbmN5OnQuZm9ybURhdGEuYm9vc3RlZF9wb3N0X2N1cnJlbmN5LGZv Y19lbmFibGVkOnQuZm9ybURhdGEuYm9vc3RlZF9wb3N0X2VuYWJsZV9mb2MscGFn ZV9pZDp0aGlzLl9wYWdlSWQscG9zdF9pZDp0aGlzLl9wb3N0SWR9KS5zZXRNZXRo b2QoJ1BPU1QnKS5zZXRIYW5kbGVyKHRoaXMuX2NoYW5nZVN0YXR1c0hhbmRsZXIu YmluZCh0aGlzKSkuc2VuZCgpO30sX3N0b3BMaW5rTGlzdGVuZXI6ZnVuY3Rpb24o cyx0KXtpZih0PT09dGhpcy5fZmx5b3V0Ll9mbHlvdXQuaWQpe20ubG9nKCd0aW1l bGluZV9zdG9wX2Jvb3N0aW5nJyx0aGlzLmxvZ2dpbmdEYXRhKTt0aGlzLl9jaGFu Z2VTdGF0dXMoZmFsc2UpO319LF9yZXN1bWVMaW5rTGlzdGVuZXI6ZnVuY3Rpb24o cyx0KXtpZih0PT09dGhpcy5fZmx5b3V0Ll9mbHlvdXQuaWQpe20ubG9nKCd0aW1l bGluZV9yZXN1bWVfYm9vc3RpbmcnLHRoaXMubG9nZ2luZ0RhdGEpO3RoaXMuX2No YW5nZVN0YXR1cyh0cnVlKTt9fSxfY2FuY2VsQnV0dG9uTGlzdGVuZXI6ZnVuY3Rp b24ocyx0KXt0aGlzLl9wb3BvdmVyLmhpZGVMYXllcigpO30sX3NldEJ1ZGdldExp c3RlbmVyOmZ1bmN0aW9uKHMsdCl7dGhpcy5fY2hhbmdlU3RhdHVzSGFuZGxlcih0 KTt9LF9wYXlGb3JQcm9tb3Rpb25MaXN0ZW5lcjpmdW5jdGlvbihzLHQpe3RoaXMu X3Nob3dUaHJvYmJlckFuZERpc2FibGVGbHlvdXRCdXR0b25zKCk7bmV3IGkoJy9h ZHMvYWpheC9ib29zdGVkL2VkaXQucGhwJykuc2V0RGF0YSh7cGFnZV9pZDp0aGlz Ll9wYWdlSWQscG9zdF9pZDp0aGlzLl9wb3N0SWQsYWNjb3VudF9pZDp0aGlzLl9m bHlvdXQuZ2V0QWNjb3VudElEKCksY3JlYXRlX2Fkczp0cnVlfSkuc2V0TWV0aG9k KCdQT1NUJykuc2V0SGFuZGxlcih0aGlzLl9jaGFuZ2VTdGF0dXNIYW5kbGVyLmJp bmQodGhpcykpLnNlbmQoKTt9LF9zaG93VGhyb2JiZXJBbmREaXNhYmxlRmx5b3V0 QnV0dG9uczpmdW5jdGlvbigpe3RoaXMuX3N0YXR1c1Rocm9iYmVyJiZrLnNob3co dGhpcy5fc3RhdHVzVGhyb2JiZXIpO3RoaXMuX2ZseW91dC5zZXRCdXR0b25zRW5h YmxlZChmYWxzZSk7fSxfY2hhbmdlU3RhdHVzOmZ1bmN0aW9uKHMpe3RoaXMuX3N0 YXR1c1Rocm9iYmVyJiZrLnNob3codGhpcy5fc3RhdHVzVGhyb2JiZXIpO25ldyBp KCcvYWRzL2FqYXgvYm9vc3RlZC9lZGl0LnBocCcpLnNldERhdGEoe3N0YXR1czpz LHBhZ2VfaWQ6dGhpcy5fcGFnZUlkLHBvc3RfaWQ6dGhpcy5fcG9zdElkfSkuc2V0 TWV0aG9kKCdQT1NUJykuc2V0SGFuZGxlcih0aGlzLl9jaGFuZ2VTdGF0dXNIYW5k bGVyLmJpbmQodGhpcykpLnNlbmQoKTt9LF9pbml0aWFsaXplRmx5b3V0TGlzdGVu ZXJzOmZ1bmN0aW9uKCl7dGhpcy5fZmx5b3V0LnN1YnNjcmliZShuLlNBVkUsdGhp cy5fY3JlYXRlTGlzdGVuZXIuYmluZCh0aGlzKSk7dGhpcy5fZmx5b3V0LnN1YnNj cmliZShuLkNBTkNFTCx0aGlzLl9jYW5jZWxCdXR0b25MaXN0ZW5lci5iaW5kKHRo aXMpKTtnLnN1YnNjcmliZShuLlNUT1AsdGhpcy5fc3RvcExpbmtMaXN0ZW5lci5i aW5kKHRoaXMpKTtnLnN1YnNjcmliZShuLlJFU1VNRSx0aGlzLl9yZXN1bWVMaW5r TGlzdGVuZXIuYmluZCh0aGlzKSk7dGhpcy5fZmx5b3V0LnN1YnNjcmliZShuLkNM T1NFLHRoaXMuX2NhbmNlbEJ1dHRvbkxpc3RlbmVyLmJpbmQodGhpcykpO3RoaXMu X2ZseW91dC5zdWJzY3JpYmUobi5TRVRfQlVER0VULHRoaXMuX3NldEJ1ZGdldExp c3RlbmVyLmJpbmQodGhpcykpO3RoaXMuX2ZseW91dC5zdWJzY3JpYmUobi5QQVlf Rk9SX1BST01PVElPTix0aGlzLl9wYXlGb3JQcm9tb3Rpb25MaXN0ZW5lci5iaW5k KHRoaXMpKTt9LF9vbkZpcnN0Q2xpY2s6ZnVuY3Rpb24oKXtpZighdGhpcy5fZmx5

b3V0KXRoaXMuX3BvcG92ZXIuc2V0TGF5ZXJDb250ZW50KHRoaXMuX2xvYWRpbmdN ZW51LmdldFJvb3QoKSk7aWYodGhpcy5fZmlyc3RDbGlja0xpc3RlbmVyKXt0aGlz Ll9maXJzdENsaWNrTGlzdGVuZXIucmVtb3ZlKCk7dGhpcy5fZmlyc3RDbGlja0xp c3RlbmVyPW51bGw7fXRoaXMuX2ZldGNoRmx5b3V0KCk7aWYoIXRoaXMuX2lzQm9v c3RlZCltLmxvZ0NsaWNrQ29udmVyc2lvblRyYWNraW5nKHRoaXMuX3BhZ2VJZCx0 aGlzLl9wb3N0SWQsdGhpcy5fY2FtcGFpZ25JZCx0aGlzLl9jYW1wYWlnblBsYWNl bWVudCk7fSxfZmV0Y2hGbHlvdXQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9mZXRjaGVk KXJldHVybjtuZXcgaSgnL2Fkcy9hamF4L2Jvb3N0ZWQvcG9zdF93aWRnZXQucGhw Jykuc2V0RGF0YSh7cG1pZDp0aGlzLl9pbnN0YW5jZUlkLHBhZ2VfaWQ6dGhpcy5f cGFnZUlkLHBvc3RfaWQ6dGhpcy5fcG9zdElkLGF1dG9fb3Blbl9wb3BvdmVyOnRo aXMuX2F1dG9PcGVuUG9wb3Zlcn0pLnNlbmQoKTt0aGlzLl9mZXRjaGVkPXRydWU7 aWYodGhpcy5fbW91c2VvdmVyTGlzdGVuZXIpe3RoaXMuX21vdXNlb3Zlckxpc3Rl bmVyLnJlbW92ZSgpO3RoaXMuX21vdXNlb3Zlckxpc3RlbmVyPW51bGw7fX0sX2No YW5nZVN0YXR1c0hhbmRsZXI6ZnVuY3Rpb24ocyl7dGhpcy5fcG9wb3Zlci5oaWRl TGF5ZXIoKTtsLmVtcHR5KHRoaXMuX2ZseW91dCk7bC5yZXBsYWNlKHRoaXMuX3Bv cG92ZXJCdXR0b24scy5wYXlsb2FkKTt0aGlzLl9wb3BvdmVyQnV0dG9uPXMucGF5 bG9hZDt9LHNldEZseW91dDpmdW5jdGlvbihzLHQpe3RoaXMuX3BvcG92ZXIuc2V0 TGF5ZXJDb250ZW50KHMpO3RoaXMuX2ZseW91dD10O3RoaXMuX2luaXRpYWxpemVG bHlvdXRMaXN0ZW5lcnMoKTt0aGlzLl9zdGF0dXNUaHJvYmJlcj1sLnNjcnkocywn LnN0YXR1c1Rocm9iYmVyJylbMF07aWYodGhpcy5fY3JlYXRlTG9nV2FpdGluZ0Zv ckZseW91dCl7dGhpcy5fbG9nT25GbHlvdXRPcGVuKCk7dGhpcy5fY3JlYXRlTG9n V2FpdGluZ0ZvckZseW91dD1mYWxzZTt9fSxfbG9nT25GbHlvdXRPcGVuOmZ1bmN0 aW9uKCl7dmFyIHM9IXRoaXMuX2lzQm9vc3RlZD8ndGltZWxpbmVfY3JlYXRlX2Zs eW91dF9vcGVuJzondGltZWxpbmVfZWRpdF9mbHlvdXRfb3Blbic7aWYoIXRoaXMu X2lzQm9vc3RlZCl0aGlzLmxvZ2dpbmdEYXRhLmhhc19jcmVkaXRfY2FyZD10aGlz Ll9mbHlvdXQudXNlckhhc1BheW1lbnRJbmZvKCk7bS5sb2cocyx0aGlzLmxvZ2dp bmdEYXRhKTt9fSk7ZS5leHBvcnRzPXI7fSk7Cl9fZCgiaW5zaWdodHMtY29uc3Rh bnRzIixbInR4IiwidWtpLXV0aWxzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPWIoJ3R4JyksaD1iKCd1a2ktdXRpbHMnKSxpPXtibHVlOicjM2I1OTk4Jyxn cmVlbjonI2E5YmM2MCcsbWFnZW50YTonI2E4NTZhMScsdGVhbDonIzVkOWQ5MCcs YnJvd246JyM4ODZkNGYnfSxqPXtBUElfRVJST1JfTlVNX1JFVFJJRVM6MixTRUNf UEVSX0RBWToyNCo2MCo2MCxNU19QRVJfREFZOjI0KjYwKjYwKjEwMDAsTVNfUEVS X01JTlVURTo2MCoxMDAwLERBWVNfVE9fTE9PS19CQUNLOjcsSU5TSUdIVFNfQ1VU T0ZGX1RJTUU6MTMxMTA1ODgwMCxERU1PR1JBUEhJQ1NfTUlOX0RBVEVfUkVBQ0g6 MTMxNTExOTYwMCxERU1PR1JBUEhJQ1NfTUlOX1BFT1BMRV9DT1VOVDozMCxDSEVD S0lOU19UWVBFX01JTl9EQVRFX1RJTUVTVEFNUDoxMzIwMjE3MjAwKjEwMDAsTWlz c2luZ1ZhbHVlU3RyaW5nOictLScsUGVyaW9kczpbJ2RheScsJ3dlZWsnLCdkYXlz XzI4J10sRGF5c0luUGVyaW9kOntkYXk6MSx3ZWVrOjcsZGF5c18yODoyOH0sUmVh Y2hUeXBlTGFiZWw6e3RvdGFsOiJUb3RhbCIsb3JnYW5pYzoiT3JnYW5payIscGFp ZDoiQmVyYmF5YXIiLHZpcmFsOiJWaXJhbCJ9LFJlYWNoU291cmNlVHlwZXM6Wydh bGwnLCdwYWdlX3Bvc3RzJywnc3RvcmllcyddLFJlYWNoU291cmNlVHlwZVNlbGVj dG9yVGV4dDp7YWxsOiJTZW11YSBLb250ZW4gSGFsYW1hbiIscGFnZV9wb3N0czoi S2lyaW1hbiBBbmRhIixzdG9yaWVzOiJCZXJpdGEgb2xlaCBPcmFuZyBMYWluIn0s QlJFQUtET1dOX0xJU1RfTEVOR1RIX0lOSVRJQUw6NyxCUkVBS0RPV05fTElTVF9M RU5HVEhfTUFYOjIwLEJyZWFrZG93blN0b3J5VHlwZXM6WydhbGwnLCdmYW4nLCdw YWdlIHBvc3QnLCdtZW50aW9uJywndXNlciBwb3N0J10sQnJlYWtkb3duU3RvcnlU eXBlc09wdGlvbmFsOlsncXVlc3Rpb24nLCdjb3Vwb24nLCdjaGVja2luJ10sQnJl YWtkb3duU3RvcnlUeXBlU2VsZWN0b3JUZXh0OnthbGw6IlNlbXVhIEJlcml0YSIs ZmFuOiJTdWthIEhhbGFtYW4iLCdwYWdlIHBvc3QnOiJCZXJpdGEgZGFyaSBLaXJp bWFuIEFuZGEiLG1lbnRpb246IlBlbnllYnV0YW4gZGFuIFRhbmRhIEZvdG8iLCd1 c2VyIHBvc3QnOiJLaXJpbWFuIGRhcmkgT3JhbmcgTGFpbiIsY2hlY2tpbjoiRGFm dGFyLW1hc3VrIixxdWVzdGlvbjoiUGVydGFueWFhbiIsY291cG9uOiJUYXdhcmFu In0sUG9zdFN0b3J5VHlwZXM6e2xpa2U6Iktlc3VrYWFuIixjb21tZW50OiJLb21l bnRhciIsYW5zd2VyOiJKYXdhYmFuIixyc3ZwOiJLb25maXJtYXNpIEtlaGFkaXJh biIsc2hhcmU6IkJlcmJhZ2kiLHBvc3Q6IktpcmltYW4iLGNsYWltOiJLbGFpbSBU YXdhcmFuIixvdGhlcjoiTGFpbm55YSJ9LEVuZ2FnZW1lbnRCcmVha2Rvd25CdWNr ZXRzOntzdG9yaWVzOidzdG9yaWVzJyxsaW5rX2NsaWNrczonbGluayBjbGlja3Mn LHBob3RvX3ZpZXdzOidwaG90byB2aWV3Jyx2aWRlb19wbGF5czondmlkZW8gcGxh eScsb3RoZXI6J290aGVyIGNsaWNrcyd9LEVuZ2FnZW1lbnRCcmVha2Rvd25MZWdl bmQ6e3N0b3JpZXM6IkJlcml0YSB5YW5nIERpY2lwdGFrYW4iLCdsaW5rIGNsaWNr

cyc6IktsaWsgVGF1dGFuIiwnb3RoZXIgY2xpY2tzJzoiS2xpayBMYWluIiwncGhv dG8gdmlldyc6IlRheWFuZ2FuIEZvdG8iLCd2aWRlbyBwbGF5JzoiUGVtdXRhcmFu IFZpZGVvIn0sTGlrZUFuZFN1YnNjcmliZVNvdXJjZXM6e3BhZ2Vfc3VnZ2VzdGlv bjoiVW5kYW5nYW4gQWRtaW4iLHRpbWVsaW5lOiJLcm9ub2xvZ2kiLGFkczoiSWts YW4gZGFuIEJlcml0YSBCZXJwb25zb3IiLHJlZ2lzdHJhdGlvbjoiUGVuZGFmdGFy YW4gQWRtaW4iLG1vYmlsZToiU2VsdWxlciIsd2l6YXJkX3N1Z2dlc3Rpb246Ildp emFyZCBQZW5nZ3VuYSBCYXJ1Iixzb2NpYWxfZ3JhcGg6IlBlbmdlbG9sYSBTdWth Iixwcm9maWxlX2Nvbm5lY3Q6IlRlbnRhbmcgSGFsYW1hbiwgS2FiYXIgQmVyaXRh LCBhdGF1IFBlbmFuZGEiLGV4dGVybmFsX2Nvbm5lY3Q6IktvdGFrIFN1a2EgYXRh dSBUb21ib2wgU3VrYSIscmVjb21tZW5kZWRfcGFnZXM6IlNhcmFuIEZhY2Vib29r IixleHRlcm5hbF9wYWdlX2xpa2U6IlN1a2EgRWtzdGVybmFsIixmYXZvcml0ZXM6 IkhhbGFtYW4gTWVueXVrYWkgSGFsYW1hbiBMYWluIixhcGk6IkFwbGlrYXNpIFBp aGFrIEtldGlnYSIscGFnZV9icm93c2VyOiJQZW5qZWxhamFoIEhhbGFtYW4iLGhv dmVyY2FyZDoiU2FhdCBEaXR1bmp1ayBNb3VzZSIsc2VhcmNoOiJIYXNpbCBQZW5j YXJpYW4iLHBhZ2VfcHJvZmlsZToiRGkgSGFsYW1hbiIsdGlja2VyOiJQZW5hbmRh IixsaWtlX3N0b3J5OiJSdWp1a2FuIFRlbWFuIixuZWFyYnlfZGFzaDoiVGVtcGF0 IHlhbmcgRGVrYXQiLGZyb21fY291cG9uOiJUYXdhcmFuIix2aWRlb19mbHlvdXQ6 IlBhZGEgVmlkZW8iLHBob3RvX3Nub3dsaWZ0OiJPbiBQaG90byIscG9zdF9jaGVj a2luOiJDYWxsb3V0IEZvbGxvd2luZyBVc2VyIENoZWNraW4iLHBhZ2VfZ3JvdXBf am9pbjoiRnJvbSBHcm91cCIsb3RoZXI6IkxhaW5ueWEiLGZlZWRfeF91bmRvOiJG cm9tIE5ld3MgRmVlZCIsZm9sbG93ZWVfbGlzdDoiRnJvbSBTdWJzY3JpYmVyIixm cmllbmRfbGlzdF9mbHlvdXQ6IkZyb20gUGFnZSBMaWtlIEJ1dHRvbiJ9LExpa2VT b3VyY2VzRGVwcmVjYXRlZEFnZ3JlZ2F0aW9uczp7cHJvZmlsZV9jb25uZWN0Olsn aG92ZXJjYXJkJywnc2VhcmNoJywncGFnZV9wcm9maWxlJywndGlja2VyJywnbGlr ZV9zdG9yeSddfSxUYWJzOnt3YWxsOiJEaW5kaW5nIixpbmZvOiJJbmZvcm1hc2ki LHBob3RvczoiRm90byIsZnJpZW5kYWN0aXZpdHk6IkFrdGl2aXRhcyBUZW1hbiIs dmlkZW9zOiJWaWRlbyIsZXZlbnRzOiJBY2FyYSIscGU6IkFjYXJhIExhbXBhdSJ9 LEZyZXF1ZW5jeUJ1Y2tldHM6WycxJywnMicsJzMnLCc0JywnNScsJzYtMTAnLCcx MS0yMCcsJzIxKyddLEFnZUJ1Y2tldHM6WycxMy0xNycsJzE4LTI0JywnMjUtMzQn LCczNS00NCcsJzQ1LTU0JywnNTUtNjQnLCc2NSsnXSxQb3N0SWNvbnM6e3Bob3Rv OicvaW1hZ2VzL2ljb25zL3Bob3RvLmdpZicsbGluazonL2ltYWdlcy9pY29ucy9w b3N0LmdpZicsY291cG9uOicvaW1hZ2VzL2ljb25zL29mZmVycy5wbmcnLHBvc3Q6 Jy9pbWFnZXMvaWNvbnMvd2FsbF9wb3N0LmdpZid9LExPQURJTkdfSU1BR0U6Jy9p bWFnZXMvbG9hZGVycy9pbmRpY2F0b3JfYmx1ZV9zbWFsbC5naWYnLENvbG9yc01h cDppLENvbG9yczpoLnZhbHVlcyhpKSxUSUNLX1NJWkVfVEhSRVNIT0xEOjQyLFRJ Q0tfU0laRV9TSE9SVDo3LFRJQ0tfU0laRV9MT05HOjE0LEdyYXBoTWF4UG9pbnRz OntMaWtlczo2MCxSZWFjaDozMCxWaXNpdHM6MTIwLFRhbGtpbmc6NjAsVmlyYWxS ZWFjaDo2MCxDaGVja2luc1R5cGU6MTIwfSxHcmFwaFR5cGU6e0JBUjowLEFSRUE6 MSxMSU5FOjJ9LFJlYWNoQnJlYWtkb3duQ29sb3JzOltpLmJsdWUsaS5ncmVlbixp Lm1hZ2VudGFdLEVuZ2FnZW1lbnRHcmFwaENvbG9yczpbaS5ibHVlLCcjNzU4YWI3 JywnI2IxYmRkNicsJyNlMmU2ZjAnXSxUYWxraW5nQnJlYWtkb3duQ29sb3JzOltp LmdyZWVuLCcjYzNkMDhmJywnI2RkZTRiZicsJyNmMmY1ZTcnXSxQcml2YWN5SWNv bnM6e0NVU1RPTTonL2ltYWdlcy9wcml2YWN5L2xvY2tfZ3JleS5naWYnLEVWRVJZ T05FOicvaW1hZ2VzL2ljb25zL2F1ZGllbmNlL2ZlZWQvZXZlcnlvbmUucG5nJ30s RGF0ZUZvcm1hdDp7J24vai95Jzonbi9qL3knLCdNIGonOidNIGonLCdNIGosIFkn OidNIGosIFknLCdtL2QvWSBnOmlhJzonbS9kL1kgZzppYSd9LE1vbnRoQWJicmV2 OnsxOidKYW4nLDI6J0ZlYicsMzonTWFyJyw0OidBcHInLDU6J01heScsNjonSnVu Jyw3OidKdWwnLDg6J0F1ZycsOTonU2VwJywxMDonT2N0JywxMTonTm92JywxMjon RGVjJ30sQWJicmV2TnVtYmVyRm9ybWF0OnswOid7eDB9JywxOid7eDB9JywyOid7 eDB9JywzOid7eDN9SycsNDone3gzfUsnLDU6J3t4M31LJyw2Oid7eDZ9TScsNzon e3g2fU0nLDg6J3t4Nn1NJyw5Oid7eDl9QicsMTA6J3t4OX1CJywxMTone3g5fUIn fSxEZWNpbWFsU2VwYXJhdG9yOicuJyxOdW1iZXJEZWxpbWl0ZXI6JywnLExvY2Fs ZTonZW5fVVMnLFRpbWVBTTonYW0nLFRpbWVQTToncG0nLHNldEludGxGb3JtYXRE YXRhOmZ1bmN0aW9uKGspe2lmKGspe3RoaXMuTG9jYWxlPWsubG9jYWxlfHx0aGlz LkxvY2FsZTt0aGlzLkRhdGVGb3JtYXQ9ay5kYXRlX2Zvcm1hdHx8dGhpcy5EYXRl Rm9ybWF0O3RoaXMuTW9udGhBYmJyZXY9ay5tb250aF9hYmJyZXZ8fHRoaXMuTW9u dGhBYmJyZXY7dGhpcy5BYmJyZXZOdW1iZXJGb3JtYXQ9ay5hYmJyZXZfbnVtYmVy X2Zvcm1hdHx8dGhpcy5BYmJyZXZOdW1iZXJGb3JtYXQ7dGhpcy5EZWNpbWFsU2Vw YXJhdG9yPWsuZGVjaW1hbF9zZXBhcmF0b3J8fHRoaXMuRGVjaW1hbFNlcGFyYXRv cjt0aGlzLk51bWJlckRlbGltaXRlcj1rLm51bWJlcl9kZWxpbWl0ZXJ8fHRoaXMu

TnVtYmVyRGVsaW1pdGVyO3RoaXMuVGltZUFNPWsudGltZV9hbXx8dGhpcy5UaW1l QU07dGhpcy5UaW1lUE09ay50aW1lX3BtfHx0aGlzLlRpbWVQTTt9fSxQU1RfT0ZG U0VUX01TOjgqNjAqNjAqMTAwMCxQRFRfT0ZGU0VUX01TOjcqNjAqNjAqMTAwMCxn ZXRQVE9mZnNldDpmdW5jdGlvbihrKXtpZihrPD0xLjMyMDU3ZSsxMil7cmV0dXJu IGouUERUX09GRlNFVF9NUzt9ZWxzZSBpZihrPD0xLjMzMTQ2ZSsxMil7cmV0dXJu IGouUFNUX09GRlNFVF9NUzt9ZWxzZSBpZihrPD0xMzUyMDE5NjAwMDAwKXtyZXR1 cm4gai5QRFRfT0ZGU0VUX01TO31lbHNlIGlmKGs8PTEzNjI5MDk2MDAwMDApe3Jl dHVybiBqLlBTVF9PRkZTRVRfTVM7fWVsc2UgaWYoazw9MTM4MzQ2OTIwMDAwMCl7 cmV0dXJuIGouUERUX09GRlNFVF9NUzt9ZWxzZSBpZihrPD0xMzk0MzU5MjAwMDAw KXtyZXR1cm4gai5QU1RfT0ZGU0VUX01TO31lbHNlIGlmKGs8PTE0MTQ5MTg4MDAw MDApe3JldHVybiBqLlBEVF9PRkZTRVRfTVM7fWVsc2UgaWYoazw9MTQyNTgwODgw MDAwMCl7cmV0dXJuIGouUFNUX09GRlNFVF9NUzt9ZWxzZSBpZihrPD0xNDQ2MzY4 NDAwMDAwKXtyZXR1cm4gai5QRFRfT0ZGU0VUX01TO31lbHNlIHJldHVybiBqLlBT VF9PRkZTRVRfTVM7fSxFdmVudHM6e1JlYWR5OidyZWFkeScsUGxvdHRlZDoncGxv dHRlZCcsU2hvd01vcmVQb3N0czonc2hvd01vcmVQb3N0cycsRXJyb3I6J2Vycm9y J30sSW50ZXJuYWxGQkFwcHM6e1Bob3RvczonMjMwNTI3MjczMicsVmlkZW86JzIz OTI5NTAxMzcnLE1vYmlsZTonMjkxNTEyMDM3NCd9LE1BWF9JTlQ6OTAwNzE5OTI1 NDc0MDk5Mn07ai5JbnRlcm5hbEZCQXBwc0lEcz0oZnVuY3Rpb24oKXt2YXIgaz17 fTtoLmZvckVhY2goai5JbnRlcm5hbEZCQXBwcyxmdW5jdGlvbihsLG0pe2tbbF09 bTt9KTtyZXR1cm4gazt9KSgpO2YuSW5zaWdodHNDb25zdGFudHM9ajt9KTsKX19k KCJpbnNpZ2h0cy1kYXRlLXV0aWxzIixbImluc2lnaHRzLWNvbnN0YW50cyJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdpbnNpZ2h0cy1jb25zdGFudHMn KS5JbnNpZ2h0c0NvbnN0YW50cyxoPXtzaG9ydERhdGU6ZnVuY3Rpb24ocCl7cmV0 dXJuIGguX2FwcGx5Rm9ybWF0KGcuRGF0ZUZvcm1hdFsnbi9qL3knXSxwKTt9LGRh dGVBbmRUaW1lOmZ1bmN0aW9uKHAscSl7cmV0dXJuIGguX2FwcGx5Rm9ybWF0KGcu RGF0ZUZvcm1hdFsnbS9kL1kgZzppYSddLHAscSk7fSxhYmJyZXZNb250aERhdGVG cm9tVGltZXN0YW1wOmZ1bmN0aW9uKHApe3JldHVybiBoLl9hcHBseUZvcm1hdChn LkRhdGVGb3JtYXRbJ00gaiddLG5ldyBEYXRlKHApKTt9LGFiYnJldk1vbnRoQW5k WWVhcjpmdW5jdGlvbihwKXtyZXR1cm4gaC5fYXBwbHlGb3JtYXQoZy5EYXRlRm9y bWF0WydNIGosIFknXSxuZXcgRGF0ZShwKSk7fSxfYXBwbHlGb3JtYXQ6ZnVuY3Rp b24ocCxxLHIpe3ZhciBzPW51bGw7aWYocil7dmFyIHQ9cS5nZXRUaW1lem9uZU9m ZnNldCgpKmcuTVNfUEVSX01JTlVURTtzPW5ldyBEYXRlKHEuZ2V0VGltZSgpLXQp O31lbHNle3ZhciB1PXEuZ2V0VGltZSgpLWcuZ2V0UFRPZmZzZXQocS5nZXRUaW1l KCkpO3M9bmV3IERhdGUoZy5NU19QRVJfREFZKk1hdGgucm91bmQodS9nLk1TX1BF Ul9EQVkpKTt9cmV0dXJuIHAucmVwbGFjZSgvKFxcKT95L2csZnVuY3Rpb24odix3 KXtyZXR1cm4gdz92OignJytzLmdldFVUQ0Z1bGxZZWFyKCkpLnN1YnN0cigyKTt9 KS5yZXBsYWNlKC8oXFwpP1kvZyxmdW5jdGlvbih2LHcpe3JldHVybiB3P3Y6cy5n ZXRVVENGdWxsWWVhcigpO30pLnJlcGxhY2UoLyhcXCk/KGp8ZCkvZyxmdW5jdGlv bih2LHcpe3JldHVybiB3P3Y6cy5nZXRVVENEYXRlKCk7fSkucmVwbGFjZSgvKFxc KT8obXxuKS9nLGZ1bmN0aW9uKHYsdyl7cmV0dXJuIHc/djpzLmdldFVUQ01vbnRo KCkrMTt9KS5yZXBsYWNlKC8oXFwpPyhGfE0pL2csZnVuY3Rpb24odix3KXtyZXR1 cm4gdz92OmguX2VzY2FwZUxldHRlcnMoZy5Nb250aEFiYnJldltzLmdldFVUQ01v bnRoKCkrMV0pO30pLnJlcGxhY2UoLyhcXCk/KEd8SCkvZyxmdW5jdGlvbih2LHcp e3JldHVybiB3P3Y6cy5nZXRVVENIb3VycygpO30pLnJlcGxhY2UoLyhcXCk/KGd8 aCkvZyxmdW5jdGlvbih2LHcpe3JldHVybiB3P3Y6KHMuZ2V0VVRDSG91cnMoKSUx Mj09PTA/MTI6cy5nZXRVVENIb3VycygpJTEyKTt9KS5yZXBsYWNlKC8oXFwpPyht fGkpL2csZnVuY3Rpb24odix3KXt2YXIgeD1zLmdldFVUQ01pbnV0ZXMoKTtyZXR1 cm4gdz92Ong8MTA/JzAnK3g6eDt9KS5yZXBsYWNlKC8oXFwpP2EvZyxmdW5jdGlv bih2LHcpe3JldHVybiB3P3Y6aC5fZXNjYXBlTGV0dGVycyhzLmdldFVUQ0hvdXJz KCk8MTI/Zy5UaW1lQU06Zy5UaW1lUE0pO30pLnJlcGxhY2UoL1xcL2csJycpO30s X2VzY2FwZUxldHRlcnM6ZnVuY3Rpb24ocCl7cmV0dXJuIHAucmVwbGFjZSgvW2Et ekEtWl0vZyxmdW5jdGlvbihxKXtyZXR1cm4gJ1xcJytxO30pO30sZnVsbFJhbmdl OmZ1bmN0aW9uKHApe3ZhciBxPXtzaW5jZTp0aGlzLnNob3J0RGF0ZShuZXcgRGF0 ZShwLnNpbmNlKjEwMDApKSx1bnRpbDp0aGlzLnNob3J0RGF0ZShuZXcgRGF0ZShw LnVudGlsKjEwMDApKX07cS5kYXRlPXEudW50aWw7cmV0dXJuIHE7fSxwZXJpb2RS YW5nZTpmdW5jdGlvbihwKXt2YXIgcT1rKG5ldyBEYXRlKHAudW50aWwqMTAwMCks cC5wZXJpb2QpLHI9e3NpbmNlOmguc2hvcnREYXRlKHEpLHVudGlsOmguc2hvcnRE YXRlKG5ldyBEYXRlKHAudW50aWwqMTAwMCkpfTtyLmRhdGU9ci51bnRpbDtyZXR1 cm4gcjt9LHdlZWtSYW5nZVN0cmluZzpmdW5jdGlvbihwKXt2YXIgcT1oLnBlcmlv ZFJhbmdlKHt1bnRpbDpwLzEwMDAscGVyaW9kOid3ZWVrJ30pO3JldHVybiBxLnNp

bmNlKycgLSAnK3EudW50aWw7fX0saT1mdW5jdGlvbihwKXt2YXIgcT1uZXcgRGF0 ZShwLmdldFRpbWUoKS1nLmdldFBUT2Zmc2V0KHAuZ2V0VGltZSgpKSk7cmV0dXJu IG5ldyBEYXRlKHEuZ2V0VVRDRnVsbFllYXIoKSxxLmdldFVUQ01vbnRoKCkscS5n ZXRVVENEYXRlKCkpO30saj1mdW5jdGlvbihwLHEpe2lmKCFxKXA9byhwKTtyZXR1 cm4gbmV3IERhdGUocCk7fSxrPWZ1bmN0aW9uKHAscSl7dmFyIHI9bmV3IERhdGUo cCk7ci5zZXREYXRlKHIuZ2V0RGF0ZSgpLShnLkRheXNJblBlcmlvZFtxXS0xKSk7 cmV0dXJuIHI7fSxsPWZ1bmN0aW9uKHApe3ZhciBxPXtzaW5jZToobihwLnNpbmNl KjEwMDApLzEwMDApLTEsdW50aWw6bihwLnVudGlsKjEwMDApLzEwMDB9O2lmKHAu ZGF0ZV90aHJlc2hvbGQmJnAuZGF0ZV90aHJlc2hvbGQ8PXEudW50aWwpcS51bnRp bD1wLmRhdGVfdGhyZXNob2xkO3JldHVybiBxO30sbT1mdW5jdGlvbihwLHEpe3Zh ciByPVtdLHM9cDt3aGlsZShzPD1xKXtyLnB1c2gocyk7cz1uKHMpO31yZXR1cm4g cjt9LG49ZnVuY3Rpb24ocCl7dmFyIHE9Zy5nZXRQVE9mZnNldChwKSxyPWcuZ2V0 UFRPZmZzZXQocCtnLk1TX1BFUl9EQVkpO3JldHVybiBwK2cuTVNfUEVSX0RBWSty LXE7fSxvPWZ1bmN0aW9uKHApe3ZhciBxPWcuZ2V0UFRPZmZzZXQocCkscj1nLmdl dFBUT2Zmc2V0KHAtZy5NU19QRVJfREFZKTtyZXR1cm4gcC1nLk1TX1BFUl9EQVkr ci1xO307Zi5tb3N0UmVjZW50TWlkbmlnaHRQVD1pO2YuZW5kVGltZVRvRGF0ZT1q O2YucmFuZ2VGb3JBUElRdWVyeT1sO2YubWlkbmlnaHRzSW5SYW5nZT1tO2YubmV4 dE1pZG5pZ2h0PW47Zi5wcmV2aW91c01pZG5pZ2h0PW87Zi5EYXRlRm9ybWF0dGVy PWg7fSk7Cl9fZCgiaW5zaWdodHMtbnVtYmVyLXV0aWxzIixbImluc2lnaHRzLWNv bnN0YW50cyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdpbnNpZ2h0 cy1jb25zdGFudHMnKS5JbnNpZ2h0c0NvbnN0YW50cyxoPXttYWduaXR1ZGU6ZnVu Y3Rpb24oaSl7cmV0dXJuIGk+PTEwP01hdGguZmxvb3IoTWF0aC5sb2coaSkvTWF0 aC5sb2coMTApKTowO30sYWJicmV2SW50OmZ1bmN0aW9uKGkpe3ZhciBqPWgubWFn bml0dWRlKGkpLGs9TWF0aC5yb3VuZChpL01hdGgucG93KDEwLGopKTtpZihrPT0x MCl7az0xO2orKzt9dmFyIGw9Zy5BYmJyZXZOdW1iZXJGb3JtYXRbal18fCd7eDB9 JyxtPWwucmVwbGFjZSgvKC4qKShce3goXGQrKVx9KSguKikvLGZ1bmN0aW9uKG8s cCxxLHIscyl7cmV0dXJuIHAraC5kZWNpbWFsKGkvTWF0aC5wb3coMTAscikpK3M7 fSksbj1oLmludGVnZXIoaSk7cmV0dXJuIG0ubGVuZ3RoPj1uLmxlbmd0aHx8bT09 aT9uOm07fSxkZWNPckludDpmdW5jdGlvbihpKXtyZXR1cm4gaT09PU1hdGguZmxv b3IoaSk/aC5pbnRlZ2VyKGkpOmguZGVjaW1hbChpKTt9LGludGVnZXI6ZnVuY3Rp b24oaSl7aWYoaT09bnVsbHx8aT09PScnKXJldHVybiBnLk1pc3NpbmdWYWx1ZVN0 cmluZzt2YXIgaj0nJytpO2lmKGk8MTAwMDAmJihnLkxvY2FsZT09J25iX05PJ3x8 Zy5Mb2NhbGU9PSdubl9OTycpKXJldHVybiBqO3ZhciBrPS8oXGQrKShcZHszfSkv O3doaWxlKGsudGVzdChqKSlqPWoucmVwbGFjZShrLCckMScrZy5OdW1iZXJEZWxp bWl0ZXIrJyQyJyk7cmV0dXJuIGo7fSxwZXJjZW50OmZ1bmN0aW9uKGkpe3JldHVy biBoLnJvdW5kKGkqMTAwLDIpKyclJzt9LGRlY2ltYWw6ZnVuY3Rpb24oaSl7cmV0 dXJuIGgucm91bmQoaSwxKTt9LHJvdW5kOmZ1bmN0aW9uKGksaixrKXt2YXIgbD1N YXRoLnBvdygxMCxqKSxtPShNYXRoLnJvdW5kKGkqbCkvbCsnJykucmVwbGFjZSgn LicsZy5EZWNpbWFsU2VwYXJhdG9yKTtpZighanx8IWspcmV0dXJuIG07dmFyIG49 bS5pbmRleE9mKGcuRGVjaW1hbFNlcGFyYXRvciksbz0wO2lmKG49PS0xKXttKz1n LkRlY2ltYWxTZXBhcmF0b3I7bz1qO31lbHNlIG89ai0obS5sZW5ndGgtbi0xKTtm b3IodmFyIHA9MDtwPG87cCsrKW0rPScwJztyZXR1cm4gbTt9fTtmLk51bWJlckZv cm1hdHRlcj1oO30pOwpfX2QoInJlcXVpcmVUZXh0IixbXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7ZnVuY3Rpb24gZyhoKXt0aHJvdyBuZXcgRXJyb3IoJ3JlcXVpcmVU ZXh0OiBVbmV4cGVjdGVkIGNsYXNzIHRyYW5zZm9ybWF0aW9uLicpO31lLmV4cG9y dHM9Zzt9KTsKLyoqCiAqIEBwcm92aWRlc01vZHVsZSBFeENhbnZhcwogKiBAb3B0 aW9uIHByZXNlcnZlLWhlYWRlcgogKgogKiBDb3B5cmlnaHQgMjAwNiBHb29nbGUg SW5jLgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRo aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICog ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoK ICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0 byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0 aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0 aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAog KiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICovX19kKCJFeENhbnZh cyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXt9O2lmKCFkb2N1bWVu

dC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KXt2YXIgaT1NYXRo LGo9aS5yb3VuZCxrPWkuc2luLG09aS5jb3Msbj1pLmFicyxvPWkuc3FydCxwPTEw LHE9cC8yO2Z1bmN0aW9uIHIoKXtyZXR1cm4gdGhpcy5jb250ZXh0X3x8KHRoaXMu Y29udGV4dF89bmV3IHNhKHRoaXMpKTt9dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNs aWNlO2Z1bmN0aW9uIHUoaCxsLHMpe3ZhciBmYj10LmNhbGwoYXJndW1lbnRzLDIp O3JldHVybiBmdW5jdGlvbigpe3JldHVybiBoLmFwcGx5KGwsZmIuY29uY2F0KHQu Y2FsbChhcmd1bWVudHMpKSk7fTt9ZnVuY3Rpb24gdihoKXtyZXR1cm4gU3RyaW5n KGgpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC8iL2csIiZxdW90OyIp O31mdW5jdGlvbiB3KGgpe2lmKCFoLm5hbWVzcGFjZXMuZ192bWxfKWgubmFtZXNw YWNlcy5hZGQoImdfdm1sXyIsInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1s IiwiI2RlZmF1bHQjVk1MIik7aWYoIWgubmFtZXNwYWNlcy5nX29fKWgubmFtZXNw YWNlcy5hZGQoImdfb18iLCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmlj ZTpvZmZpY2UiLCIjZGVmYXVsdCNWTUwiKTtpZighaC5zdHlsZVNoZWV0cy5leF9j YW52YXNfKXt2YXIgbD1oLmNyZWF0ZVN0eWxlU2hlZXQoKTtsLm93bmluZ0VsZW1l bnQuaWQ9ImV4X2NhbnZhc18iO2wuY3NzVGV4dD0iY2FudmFze2Rpc3BsYXk6aW5s aW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6 MzAwcHg7aGVpZ2h0OjE1MHB4fSI7fX13KGRvY3VtZW50KTt2YXIgeD17aW5pdDpm dW5jdGlvbihoKXtpZigvTVNJRS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYm IXdpbmRvdy5vcGVyYSl7dmFyIGw9aHx8ZG9jdW1lbnQ7bC5jcmVhdGVFbGVtZW50 KCJjYW52YXMiKTtsLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHUo dGhpcy5pbml0Xyx0aGlzLGwpKTt9fSxpbml0XzpmdW5jdGlvbihoKXt2YXIgbD1o LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJjYW52YXMiKTtmb3IodmFyIHM9MDtzPGwu bGVuZ3RoO3MrKyl0aGlzLmluaXRFbGVtZW50KGxbc10pO30saW5pdEVsZW1lbnQ6 ZnVuY3Rpb24oaCl7aWYoIWguZ2V0Q29udGV4dCl7aC5nZXRDb250ZXh0PXI7dyho Lm93bmVyRG9jdW1lbnQpO2guaW5uZXJIVE1MPSIiO2guYXR0YWNoRXZlbnQoIm9u cHJvcGVydHljaGFuZ2UiLHkpO2guYXR0YWNoRXZlbnQoIm9ucmVzaXplIix6KTt2 YXIgbD1oLmF0dHJpYnV0ZXM7aWYobC53aWR0aCYmbC53aWR0aC5zcGVjaWZpZWQp e2guc3R5bGUud2lkdGg9bC53aWR0aC5ub2RlVmFsdWUrInB4Ijt9ZWxzZSBoLndp ZHRoPWguY2xpZW50V2lkdGg7aWYobC5oZWlnaHQmJmwuaGVpZ2h0LnNwZWNpZmll ZCl7aC5zdHlsZS5oZWlnaHQ9bC5oZWlnaHQubm9kZVZhbHVlKyJweCI7fWVsc2Ug aC5oZWlnaHQ9aC5jbGllbnRIZWlnaHQ7fXJldHVybiBoO319O2Z1bmN0aW9uIHko aCl7dmFyIGw9aC5zcmNFbGVtZW50O3N3aXRjaChoLnByb3BlcnR5TmFtZSl7Y2Fz ZSAid2lkdGgiOmwuZ2V0Q29udGV4dCgpLmNsZWFyUmVjdCgpO2wuc3R5bGUud2lk dGg9bC5hdHRyaWJ1dGVzLndpZHRoLm5vZGVWYWx1ZSsicHgiO2wuZmlyc3RDaGls ZC5zdHlsZS53aWR0aD1sLmNsaWVudFdpZHRoKyJweCI7YnJlYWs7Y2FzZSAiaGVp Z2h0IjpsLmdldENvbnRleHQoKS5jbGVhclJlY3QoKTtsLnN0eWxlLmhlaWdodD1s LmF0dHJpYnV0ZXMuaGVpZ2h0Lm5vZGVWYWx1ZSsicHgiO2wuZmlyc3RDaGlsZC5z dHlsZS5oZWlnaHQ9bC5jbGllbnRIZWlnaHQrInB4IjticmVhazt9fWZ1bmN0aW9u IHooaCl7dmFyIGw9aC5zcmNFbGVtZW50O2lmKGwuZmlyc3RDaGlsZCl7bC5maXJz dENoaWxkLnN0eWxlLndpZHRoPWwuY2xpZW50V2lkdGgrInB4IjtsLmZpcnN0Q2hp bGQuc3R5bGUuaGVpZ2h0PWwuY2xpZW50SGVpZ2h0KyJweCI7fX14LmluaXQoKTt2 YXIgYWE9W107Zm9yKHZhciBiYT0wO2JhPDE2O2JhKyspZm9yKHZhciBjYT0wO2Nh PDE2O2NhKyspYWFbYmEqMTYrY2FdPWJhLnRvU3RyaW5nKDE2KStjYS50b1N0cmlu ZygxNik7ZnVuY3Rpb24gZGEoKXtyZXR1cm4gW1sxLDAsMF0sWzAsMSwwXSxbMCww LDFdXTt9ZnVuY3Rpb24gZWEoaCxsKXt2YXIgcz1kYSgpO2Zvcih2YXIgZmI9MDtm YjwzO2ZiKyspZm9yKHZhciBnYj0wO2diPDM7Z2IrKyl7dmFyIGhiPTA7Zm9yKHZh ciBpYj0wO2liPDM7aWIrKyloYis9aFtmYl1baWJdKmxbaWJdW2diXTtzW2ZiXVtn Yl09aGI7fXJldHVybiBzO31mdW5jdGlvbiBmYShoLGwpe2wuZmlsbFN0eWxlPWgu ZmlsbFN0eWxlO2wubGluZUNhcD1oLmxpbmVDYXA7bC5saW5lSm9pbj1oLmxpbmVK b2luO2wubGluZVdpZHRoPWgubGluZVdpZHRoO2wubWl0ZXJMaW1pdD1oLm1pdGVy TGltaXQ7bC5zaGFkb3dCbHVyPWguc2hhZG93Qmx1cjtsLnNoYWRvd0NvbG9yPWgu c2hhZG93Q29sb3I7bC5zaGFkb3dPZmZzZXRYPWguc2hhZG93T2Zmc2V0WDtsLnNo YWRvd09mZnNldFk9aC5zaGFkb3dPZmZzZXRZO2wuc3Ryb2tlU3R5bGU9aC5zdHJv a2VTdHlsZTtsLmdsb2JhbEFscGhhPWguZ2xvYmFsQWxwaGE7bC5mb250PWguZm9u dDtsLnRleHRBbGlnbj1oLnRleHRBbGlnbjtsLnRleHRCYXNlbGluZT1oLnRleHRC YXNlbGluZTtsLmFyY1NjYWxlWF89aC5hcmNTY2FsZVhfO2wuYXJjU2NhbGVZXz1o LmFyY1NjYWxlWV87bC5saW5lU2NhbGVfPWgubGluZVNjYWxlXzt9ZnVuY3Rpb24g Z2EoaCl7dmFyIGw9aC5pbmRleE9mKCIoIiwzKSxzPWguaW5kZXhPZigiKSIsbCsx KSxmYj1oLnN1YnN0cmluZyhsKzEscykuc3BsaXQoIiwiKTtpZihmYi5sZW5ndGg9 PTQmJmguc3Vic3RyKDMsMSk9PSJhIil7YWxwaGE9TnVtYmVyKGZiWzNdKTt9ZWxz

ZSBmYlszXT0xO3JldHVybiBmYjt9ZnVuY3Rpb24gaGEoaCl7cmV0dXJuIHBhcnNl RmxvYXQoaCkvMTAwO31mdW5jdGlvbiBpYShoLGwscyl7cmV0dXJuIE1hdGgubWlu KHMsTWF0aC5tYXgobCxoKSk7fWZ1bmN0aW9uIGphKGZiKXt2YXIgZ2IsaGIsaWI7 aD1wYXJzZUZsb2F0KGZiWzBdKS8zNjAlMzYwO2lmKGg8MCloKys7cz1pYShoYShm YlsxXSksMCwxKTtsPWlhKGhhKGZiWzJdKSwwLDEpO2lmKHM9PTApe2diPWhiPWli PWw7fWVsc2V7dmFyIGpiPWw8LjU/bCooMStzKTpsK3MtbCpzLGtiPTIqbC1qYjtn Yj1rYShrYixqYixoKzEvMyk7aGI9a2Eoa2IsamIsaCk7aWI9a2Eoa2IsamIsaC0x LzMpO31yZXR1cm4gIiMiK2FhW01hdGguZmxvb3IoZ2IqMjU1KV0rYWFbTWF0aC5m bG9vcihoYioyNTUpXSthYVtNYXRoLmZsb29yKGliKjI1NSldO31mdW5jdGlvbiBr YShoLGwscyl7aWYoczwwKXMrKztpZihzPjEpcy0tO2lmKDYqczwxKXtyZXR1cm4g aCsobC1oKSo2KnM7fWVsc2UgaWYoMipzPDEpe3JldHVybiBsO31lbHNlIGlmKDMq czwyKXtyZXR1cm4gaCsobC1oKSooMi8zLXMpKjY7fWVsc2UgcmV0dXJuIGg7fWZ1 bmN0aW9uIGxhKGgpe3ZhciBsLHM9MTtoPVN0cmluZyhoKTtpZihoLmNoYXJBdCgw KT09IiMiKXtsPWg7fWVsc2UgaWYoL15yZ2IvLnRlc3QoaCkpe3ZhciBmYj1nYSho KSxsPSIjIixnYjtmb3IodmFyIGhiPTA7aGI8MztoYisrKXtpZihmYltoYl0uaW5k ZXhPZigiJSIpIT0tMSl7Z2I9TWF0aC5mbG9vcihoYShmYltoYl0pKjI1NSk7fWVs c2UgZ2I9TnVtYmVyKGZiW2hiXSk7bCs9YWFbaWEoZ2IsMCwyNTUpXTt9cz1mYlsz XTt9ZWxzZSBpZigvXmhzbC8udGVzdChoKSl7dmFyIGZiPWdhKGgpO2w9amEoZmIp O3M9ZmJbM107fWVsc2UgbD1oO3JldHVybiB7Y29sb3I6bCxhbHBoYTpzfTt9dmFy IG1hPXtzdHlsZToibm9ybWFsIix2YXJpYW50OiJub3JtYWwiLHdlaWdodDoibm9y bWFsIixzaXplOjEwLGZhbWlseToic2Fucy1zZXJpZiJ9LG5hPXt9O2Z1bmN0aW9u IG9hKGgpe2lmKG5hW2hdKXJldHVybiBuYVtoXTt2YXIgbD1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJkaXYiKSxzPWwuc3R5bGU7dHJ5e3MuZm9udD1oO31jYXRjaChm Yil7fXJldHVybiBuYVtoXT17c3R5bGU6cy5mb250U3R5bGV8fG1hLnN0eWxlLHZh cmlhbnQ6cy5mb250VmFyaWFudHx8bWEudmFyaWFudCx3ZWlnaHQ6cy5mb250V2Vp Z2h0fHxtYS53ZWlnaHQsc2l6ZTpzLmZvbnRTaXplfHxtYS5zaXplLGZhbWlseTpz LmZvbnRGYW1pbHl8fG1hLmZhbWlseX07fWZ1bmN0aW9uIHBhKGgsbCl7dmFyIHM9 e307Zm9yKHZhciBmYiBpbiBoKXNbZmJdPWhbZmJdO3ZhciBnYj1wYXJzZUZsb2F0 KGwuY3VycmVudFN0eWxlLmZvbnRTaXplKSxoYj1wYXJzZUZsb2F0KGguc2l6ZSk7 aWYodHlwZW9mIGguc2l6ZT09Im51bWJlciIpe3Muc2l6ZT1oLnNpemU7fWVsc2Ug aWYoaC5zaXplLmluZGV4T2YoInB4IikhPS0xKXtzLnNpemU9aGI7fWVsc2UgaWYo aC5zaXplLmluZGV4T2YoImVtIikhPS0xKXtzLnNpemU9Z2IqaGI7fWVsc2UgaWYo aC5zaXplLmluZGV4T2YoIiUiKSE9LTEpe3Muc2l6ZT0oZ2IvMTAwKSpoYjt9ZWxz ZSBpZihoLnNpemUuaW5kZXhPZigicHQiKSE9LTEpe3Muc2l6ZT1oYi8uNzU7fWVs c2Ugcy5zaXplPWdiO3Muc2l6ZSo9Ljk4MTtyZXR1cm4gczt9ZnVuY3Rpb24gcWEo aCl7cmV0dXJuIGguc3R5bGUrIiAiK2gudmFyaWFudCsiICIraC53ZWlnaHQrIiAi K2guc2l6ZSsicHggIitoLmZhbWlseTt9ZnVuY3Rpb24gcmEoaCl7c3dpdGNoKGgp e2Nhc2UgImJ1dHQiOnJldHVybiAiZmxhdCI7Y2FzZSAicm91bmQiOnJldHVybiAi cm91bmQiO2Nhc2UgInNxdWFyZSI6ZGVmYXVsdDpyZXR1cm4gInNxdWFyZSI7fX1m dW5jdGlvbiBzYShoKXt0aGlzLm1fPWRhKCk7dGhpcy5tU3RhY2tfPVtdO3RoaXMu YVN0YWNrXz1bXTt0aGlzLmN1cnJlbnRQYXRoXz1bXTt0aGlzLnN0cm9rZVN0eWxl PSIjMDAwIjt0aGlzLmZpbGxTdHlsZT0iIzAwMCI7dGhpcy5saW5lV2lkdGg9MTt0 aGlzLmxpbmVKb2luPSJtaXRlciI7dGhpcy5saW5lQ2FwPSJidXR0Ijt0aGlzLm1p dGVyTGltaXQ9cCoxO3RoaXMuZ2xvYmFsQWxwaGE9MTt0aGlzLmZvbnQ9IjEwcHgg c2Fucy1zZXJpZiI7dGhpcy50ZXh0QWxpZ249ImxlZnQiO3RoaXMudGV4dEJhc2Vs aW5lPSJhbHBoYWJldGljIjt0aGlzLmNhbnZhcz1oO3ZhciBsPWgub3duZXJEb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnN0eWxlLndpZHRoPWguY2xpZW50 V2lkdGgrInB4IjtsLnN0eWxlLmhlaWdodD1oLmNsaWVudEhlaWdodCsicHgiO2wu c3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7bC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1 dGUiO2guYXBwZW5kQ2hpbGQobCk7dGhpcy5lbGVtZW50Xz1sO3RoaXMuYXJjU2Nh bGVYXz0xO3RoaXMuYXJjU2NhbGVZXz0xO3RoaXMubGluZVNjYWxlXz0xO312YXIg dGE9c2EucHJvdG90eXBlO3RhLmNsZWFyUmVjdD1mdW5jdGlvbigpe2lmKHRoaXMu dGV4dE1lYXN1cmVFbF8pe3RoaXMudGV4dE1lYXN1cmVFbF8ucmVtb3ZlTm9kZSh0 cnVlKTt0aGlzLnRleHRNZWFzdXJlRWxfPW51bGw7fXRoaXMuZWxlbWVudF8uaW5u ZXJIVE1MPSIiO307dGEuYmVnaW5QYXRoPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50 UGF0aF89W107fTt0YS5tb3ZlVG89ZnVuY3Rpb24oaCxsKXt2YXIgcz10aGlzLmdl dENvb3Jkc18oaCxsKTt0aGlzLmN1cnJlbnRQYXRoXy5wdXNoKHt0eXBlOiJtb3Zl VG8iLHg6cy54LHk6cy55fSk7dGhpcy5jdXJyZW50WF89cy54O3RoaXMuY3VycmVu dFlfPXMueTt9O3RhLmxpbmVUbz1mdW5jdGlvbihoLGwpe3ZhciBzPXRoaXMuZ2V0 Q29vcmRzXyhoLGwpO3RoaXMuY3VycmVudFBhdGhfLnB1c2goe3R5cGU6ImxpbmVU

byIseDpzLngseTpzLnl9KTt0aGlzLmN1cnJlbnRYXz1zLng7dGhpcy5jdXJyZW50 WV89cy55O307dGEuYmV6aWVyQ3VydmVUbz1mdW5jdGlvbihoLGwscyxmYixnYixo Yil7dmFyIGliPXRoaXMuZ2V0Q29vcmRzXyhnYixoYiksamI9dGhpcy5nZXRDb29y ZHNfKGgsbCksa2I9dGhpcy5nZXRDb29yZHNfKHMsZmIpO3VhKHRoaXMsamIsa2Is aWIpO307ZnVuY3Rpb24gdWEoaCxsLHMsZmIpe2guY3VycmVudFBhdGhfLnB1c2go e3R5cGU6ImJlemllckN1cnZlVG8iLGNwMXg6bC54LGNwMXk6bC55LGNwMng6cy54 LGNwMnk6cy55LHg6ZmIueCx5OmZiLnl9KTtoLmN1cnJlbnRYXz1mYi54O2guY3Vy cmVudFlfPWZiLnk7fXRhLnF1YWRyYXRpY0N1cnZlVG89ZnVuY3Rpb24oaCxsLHMs ZmIpe3ZhciBnYj10aGlzLmdldENvb3Jkc18oaCxsKSxoYj10aGlzLmdldENvb3Jk c18ocyxmYiksaWI9e3g6dGhpcy5jdXJyZW50WF8rMi8zKihnYi54LXRoaXMuY3Vy cmVudFhfKSx5OnRoaXMuY3VycmVudFlfKzIvMyooZ2IueS10aGlzLmN1cnJlbnRZ Xyl9LGpiPXt4OmliLngrKGhiLngtdGhpcy5jdXJyZW50WF8pLzMseTppYi55Kyho Yi55LXRoaXMuY3VycmVudFlfKS8zfTt1YSh0aGlzLGliLGpiLGhiKTt9O3RhLmFy Yz1mdW5jdGlvbihoLGwscyxmYixnYixoYil7cyo9cDt2YXIgaWI9aGI/ImF0Ijoi d2EiLGpiPWgrbShmYikqcy1xLGtiPWwrayhmYikqcy1xLGxiPWgrbShnYikqcy1x LG1iPWwrayhnYikqcy1xO2lmKGpiPT1sYiYmIWhiKWpiKz0uMTI1O3ZhciBuYj10 aGlzLmdldENvb3Jkc18oaCxsKSxvYj10aGlzLmdldENvb3Jkc18oamIsa2IpLHBi PXRoaXMuZ2V0Q29vcmRzXyhsYixtYik7dGhpcy5jdXJyZW50UGF0aF8ucHVzaCh7 dHlwZTppYix4Om5iLngseTpuYi55LHJhZGl1czpzLHhTdGFydDpvYi54LHlTdGFy dDpvYi55LHhFbmQ6cGIueCx5RW5kOnBiLnl9KTt9O3RhLnJlY3Q9ZnVuY3Rpb24o aCxsLHMsZmIpe3RoaXMubW92ZVRvKGgsbCk7dGhpcy5saW5lVG8oaCtzLGwpO3Ro aXMubGluZVRvKGgrcyxsK2ZiKTt0aGlzLmxpbmVUbyhoLGwrZmIpO3RoaXMuY2xv c2VQYXRoKCk7fTt0YS5zdHJva2VSZWN0PWZ1bmN0aW9uKGgsbCxzLGZiKXt2YXIg Z2I9dGhpcy5jdXJyZW50UGF0aF87dGhpcy5iZWdpblBhdGgoKTt0aGlzLm1vdmVU byhoLGwpO3RoaXMubGluZVRvKGgrcyxsKTt0aGlzLmxpbmVUbyhoK3MsbCtmYik7 dGhpcy5saW5lVG8oaCxsK2ZiKTt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuc3Ryb2tl KCk7dGhpcy5jdXJyZW50UGF0aF89Z2I7fTt0YS5maWxsUmVjdD1mdW5jdGlvbiho LGwscyxmYil7dmFyIGdiPXRoaXMuY3VycmVudFBhdGhfO3RoaXMuYmVnaW5QYXRo KCk7dGhpcy5tb3ZlVG8oaCxsKTt0aGlzLmxpbmVUbyhoK3MsbCk7dGhpcy5saW5l VG8oaCtzLGwrZmIpO3RoaXMubGluZVRvKGgsbCtmYik7dGhpcy5jbG9zZVBhdGgo KTt0aGlzLmZpbGwoKTt0aGlzLmN1cnJlbnRQYXRoXz1nYjt9O3RhLmNyZWF0ZUxp bmVhckdyYWRpZW50PWZ1bmN0aW9uKGgsbCxzLGZiKXt2YXIgZ2I9bmV3IHphKCJn cmFkaWVudCIpO2diLngwXz1oO2diLnkwXz1sO2diLngxXz1zO2diLnkxXz1mYjty ZXR1cm4gZ2I7fTt0YS5jcmVhdGVSYWRpYWxHcmFkaWVudD1mdW5jdGlvbihoLGws cyxmYixnYixoYil7dmFyIGliPW5ldyB6YSgiZ3JhZGllbnRyYWRpYWwiKTtpYi54 MF89aDtpYi55MF89bDtpYi5yMF89cztpYi54MV89ZmI7aWIueTFfPWdiO2liLnIx Xz1oYjtyZXR1cm4gaWI7fTt0YS5kcmF3SW1hZ2U9ZnVuY3Rpb24oaCxsKXt2YXIg cyxmYixnYixoYixpYixqYixrYixsYixtYj1oLnJ1bnRpbWVTdHlsZS53aWR0aCxu Yj1oLnJ1bnRpbWVTdHlsZS5oZWlnaHQ7aC5ydW50aW1lU3R5bGUud2lkdGg9ImF1 dG8iO2gucnVudGltZVN0eWxlLmhlaWdodD0iYXV0byI7dmFyIG9iPWgud2lkdGgs cGI9aC5oZWlnaHQ7aC5ydW50aW1lU3R5bGUud2lkdGg9bWI7aC5ydW50aW1lU3R5 bGUuaGVpZ2h0PW5iO2lmKGFyZ3VtZW50cy5sZW5ndGg9PTMpe3M9YXJndW1lbnRz WzFdO2ZiPWFyZ3VtZW50c1syXTtpYj1qYj0wO2tiPWdiPW9iO2xiPWhiPXBiO31l bHNlIGlmKGFyZ3VtZW50cy5sZW5ndGg9PTUpe3M9YXJndW1lbnRzWzFdO2ZiPWFy Z3VtZW50c1syXTtnYj1hcmd1bWVudHNbM107aGI9YXJndW1lbnRzWzRdO2liPWpi PTA7a2I9b2I7bGI9cGI7fWVsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD09OSl7aWI9 YXJndW1lbnRzWzFdO2piPWFyZ3VtZW50c1syXTtrYj1hcmd1bWVudHNbM107bGI9 YXJndW1lbnRzWzRdO3M9YXJndW1lbnRzWzVdO2ZiPWFyZ3VtZW50c1s2XTtnYj1h cmd1bWVudHNbN107aGI9YXJndW1lbnRzWzhdO31lbHNlIHRocm93IEVycm9yKCJJ bnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiKTt2YXIgcWI9dGhpcy5nZXRDb29y ZHNfKHMsZmIpLHJiPWtiLzIsc2I9bGIvMix0Yj1bXSx1Yj0xMCx2Yj0xMDt0Yi5w dXNoKCIgPGdfdm1sXzpncm91cCIsJyBjb29yZHNpemU9IicscCp1YiwiLCIscCp2 YiwnIicsJyBjb29yZG9yaWdpbj0iMCwwIicsJyBzdHlsZT0id2lkdGg6Jyx1Yiwi cHg7aGVpZ2h0OiIsdmIsInB4O3Bvc2l0aW9uOmFic29sdXRlOyIpO2lmKHRoaXMu bV9bMF1bMF0hPTF8fHRoaXMubV9bMF1bMV18fHRoaXMubV9bMV1bMV0hPTF8fHRo aXMubV9bMV1bMF0pe3ZhciB3Yj1bXTt3Yi5wdXNoKCJNMTE9Iix0aGlzLm1fWzBd WzBdLCIsIiwiTTEyPSIsdGhpcy5tX1sxXVswXSwiLCIsIk0yMT0iLHRoaXMubV9b MF1bMV0sIiwiLCJNMjI9Iix0aGlzLm1fWzFdWzFdLCIsIiwiRHg9IixqKHFiLngv cCksIiwiLCJEeT0iLGoocWIueS9wKSwiIik7dmFyIHhiPXFiLHliPXRoaXMuZ2V0 Q29vcmRzXyhzK2diLGZiKSx6Yj10aGlzLmdldENvb3Jkc18ocyxmYitoYiksYWM9

dGhpcy5nZXRDb29yZHNfKHMrZ2IsZmIraGIpO3hiLng9aS5tYXgoeGIueCx5Yi54 LHpiLngsYWMueCk7eGIueT1pLm1heCh4Yi55LHliLnksemIueSxhYy55KTt0Yi5w dXNoKCJwYWRkaW5nOjAgIixqKHhiLngvcCksInB4ICIsaih4Yi55L3ApLCJweCAw O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4 KCIsd2Iuam9pbigiIiksIiwgc2l6aW5nbWV0aG9kPSdjbGlwJyk7Iik7fWVsc2Ug dGIucHVzaCgidG9wOiIsaihxYi55L3ApLCJweDtsZWZ0OiIsaihxYi54L3ApLCJw eDsiKTt0Yi5wdXNoKCcgIj4nLCc8Z192bWxfOmltYWdlIHNyYz0iJyxoLnNyYywn IicsJyBzdHlsZT0id2lkdGg6JyxwKmdiLCJweDsiLCIgaGVpZ2h0OiIscCpoYiwn cHgiJywnIGNyb3BsZWZ0PSInLGliL29iLCciJywnIGNyb3B0b3A9IicsamIvcGIs JyInLCcgY3JvcHJpZ2h0PSInLChvYi1pYi1rYikvb2IsJyInLCcgY3JvcGJvdHRv bT0iJywocGItamItbGIpL3BiLCciJywiIC8+IiwiPC9nX3ZtbF86Z3JvdXA+Iik7 dGhpcy5lbGVtZW50Xy5pbnNlcnRBZGphY2VudEhUTUwoIkJlZm9yZUVuZCIsdGIu am9pbigiIikpO307dGEuc3Ryb2tlPWZ1bmN0aW9uKGgpe3ZhciBsPTEwLHM9MTAs ZmI9NTAwMCxnYj17eDpudWxsLHk6bnVsbH0saGI9e3g6bnVsbCx5Om51bGx9O2Zv cih2YXIgaWI9MDtpYjx0aGlzLmN1cnJlbnRQYXRoXy5sZW5ndGg7aWIrPWZiKXt2 YXIgamI9W10sa2I9ZmFsc2U7amIucHVzaCgiPGdfdm1sXzpzaGFwZSIsJyBmaWxs ZWQ9IicsISFoLCciJywnIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDon LGwsInB4O2hlaWdodDoiLHMsJ3B4OyInLCcgY29vcmRvcmlnaW49IjAsMCInLCcg Y29vcmRzaXplPSInLHAqbCwiLCIscCpzLCciJywnIHN0cm9rZWQ9IicsIWgsJyIn LCcgcGF0aD0iJyk7dmFyIGxiPWZhbHNlO2Zvcih2YXIgbWI9aWI7bWI8TWF0aC5t aW4oaWIrZmIsdGhpcy5jdXJyZW50UGF0aF8ubGVuZ3RoKTttYisrKXtpZihtYiVm Yj09MCYmbWI+MClqYi5wdXNoKCIgbSAiLGoodGhpcy5jdXJyZW50UGF0aF9bbWIt MV0ueCksIiwiLGoodGhpcy5jdXJyZW50UGF0aF9bbWItMV0ueSkpO3ZhciBuYj10 aGlzLmN1cnJlbnRQYXRoX1ttYl0sb2I7c3dpdGNoKG5iLnR5cGUpe2Nhc2UgIm1v dmVUbyI6b2I9bmI7amIucHVzaCgiIG0gIixqKG5iLngpLCIsIixqKG5iLnkpKTti cmVhaztjYXNlICJsaW5lVG8iOmpiLnB1c2goIiBsICIsaihuYi54KSwiLCIsaihu Yi55KSk7YnJlYWs7Y2FzZSAiY2xvc2UiOmpiLnB1c2goIiB4ICIpO25iPW51bGw7 YnJlYWs7Y2FzZSAiYmV6aWVyQ3VydmVUbyI6amIucHVzaCgiIGMgIixqKG5iLmNw MXgpLCIsIixqKG5iLmNwMXkpLCIsIixqKG5iLmNwMngpLCIsIixqKG5iLmNwMnkp LCIsIixqKG5iLngpLCIsIixqKG5iLnkpKTticmVhaztjYXNlICJhdCI6Y2FzZSAi d2EiOmpiLnB1c2goIiAiLG5iLnR5cGUsIiAiLGoobmIueC10aGlzLmFyY1NjYWxl WF8qbmIucmFkaXVzKSwiLCIsaihuYi55LXRoaXMuYXJjU2NhbGVZXypuYi5yYWRp dXMpLCIgIixqKG5iLngrdGhpcy5hcmNTY2FsZVhfKm5iLnJhZGl1cyksIiwiLGoo bmIueSt0aGlzLmFyY1NjYWxlWV8qbmIucmFkaXVzKSwiICIsaihuYi54U3RhcnQp LCIsIixqKG5iLnlTdGFydCksIiAiLGoobmIueEVuZCksIiwiLGoobmIueUVuZCkp O2JyZWFrO31pZihuYil7aWYoZ2IueD09bnVsbHx8bmIueDxnYi54KWdiLng9bmIu eDtpZihoYi54PT1udWxsfHxuYi54PmhiLngpaGIueD1uYi54O2lmKGdiLnk9PW51 bGx8fG5iLnk8Z2IueSlnYi55PW5iLnk7aWYoaGIueT09bnVsbHx8bmIueT5oYi55 KWhiLnk9bmIueTt9fWpiLnB1c2goJyAiPicpO2lmKCFoKXt2YSh0aGlzLGpiKTt9 ZWxzZSB3YSh0aGlzLGpiLGdiLGhiKTtqYi5wdXNoKCI8L2dfdm1sXzpzaGFwZT4i KTt0aGlzLmVsZW1lbnRfLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlRW5kIixq Yi5qb2luKCIiKSk7fX07ZnVuY3Rpb24gdmEoaCxsKXt2YXIgcz1sYShoLnN0cm9r ZVN0eWxlKSxmYj1zLmNvbG9yLGdiPXMuYWxwaGEqaC5nbG9iYWxBbHBoYSxoYj1o LmxpbmVTY2FsZV8qaC5saW5lV2lkdGg7aWYoaGI8MSlnYio9aGI7bC5wdXNoKCI8 Z192bWxfOnN0cm9rZSIsJyBvcGFjaXR5PSInLGdiLCciJywnIGpvaW5zdHlsZT0i JyxoLmxpbmVKb2luLCciJywnIG1pdGVybGltaXQ9IicsaC5taXRlckxpbWl0LCci JywnIGVuZGNhcD0iJyxyYShoLmxpbmVDYXApLCciJywnIHdlaWdodD0iJyxoYiwn cHgiJywnIGNvbG9yPSInLGZiLCciIC8+Jyk7fWZ1bmN0aW9uIHdhKGgsbCxzLGZi KXt2YXIgZ2I9aC5maWxsU3R5bGUsaGI9aC5hcmNTY2FsZVhfLGliPWguYXJjU2Nh bGVZXyxqYj1mYi54LXMueCxrYj1mYi55LXMueTtpZihnYiBpbnN0YW5jZW9mIHph KXt2YXIgbGI9MCxtYj17eDowLHk6MH0sbmI9MCxvYj0xO2lmKGdiLnR5cGVfPT0i Z3JhZGllbnQiKXt2YXIgcGI9Z2IueDBfL2hiLHFiPWdiLnkwXy9pYixyYj1nYi54 MV8vaGIsc2I9Z2IueTFfL2liLHRiPWguZ2V0Q29vcmRzXyhwYixxYiksdWI9aC5n ZXRDb29yZHNfKHJiLHNiKSx2Yj11Yi54LXRiLngsd2I9dWIueS10Yi55O2xiPU1h dGguYXRhbjIodmIsd2IpKjE4MC9NYXRoLlBJO2lmKGxiPDApbGIrPTM2MDtpZihs YjwxZS0wNilsYj0wO31lbHNle3ZhciB0Yj1oLmdldENvb3Jkc18oZ2IueDBfLGdi LnkwXyk7bWI9e3g6KHRiLngtcy54KS9qYix5Oih0Yi55LXMueSkva2J9O2piLz1o YipwO2tiLz1pYipwO3ZhciB4Yj1pLm1heChqYixrYik7bmI9MipnYi5yMF8veGI7 b2I9MipnYi5yMV8veGItbmI7fXZhciB5Yj1nYi5jb2xvcnNfO3liLnNvcnQoZnVu Y3Rpb24obWMsbmMpe3JldHVybiBtYy5vZmZzZXQtbmMub2Zmc2V0O30pO3ZhciB6

Yj15Yi5sZW5ndGgsYWM9eWJbMF0uY29sb3IsYmM9eWJbemItMV0uY29sb3IsY2M9 eWJbMF0uYWxwaGEqaC5nbG9iYWxBbHBoYSxkYz15Ylt6Yi0xXS5hbHBoYSpoLmds b2JhbEFscGhhLGVjPVtdO2Zvcih2YXIgZmM9MDtmYzx6YjtmYysrKXt2YXIgZ2M9 eWJbZmNdO2VjLnB1c2goZ2Mub2Zmc2V0Km9iK25iKyIgIitnYy5jb2xvcik7fWwu cHVzaCgnPGdfdm1sXzpmaWxsIHR5cGU9IicsZ2IudHlwZV8sJyInLCcgbWV0aG9k PSJub25lIiBmb2N1cz0iMTAwJSInLCcgY29sb3I9IicsYWMsJyInLCcgY29sb3Iy PSInLGJjLCciJywnIGNvbG9ycz0iJyxlYy5qb2luKCIsIiksJyInLCcgb3BhY2l0 eT0iJyxkYywnIicsJyBnX29fOm9wYWNpdHkyPSInLGNjLCciJywnIGFuZ2xlPSIn LGxiLCciJywnIGZvY3VzcG9zaXRpb249IicsbWIueCwiLCIsbWIueSwnIiAvPicp O31lbHNlIGlmKGdiIGluc3RhbmNlb2YgYWIpe2lmKGpiJiZrYil7dmFyIGhjPS1z LngsaWM9LXMueTtsLnB1c2goIjxnX3ZtbF86ZmlsbCIsJyBwb3NpdGlvbj0iJyxo Yy9qYipoYipoYiwiLCIsaWMva2IqaWIqaWIsJyInLCcgdHlwZT0idGlsZSInLCcg c3JjPSInLGdiLnNyY18sJyIgLz4nKTt9fWVsc2V7dmFyIGpjPWxhKGguZmlsbFN0 eWxlKSxrYz1qYy5jb2xvcixsYz1qYy5hbHBoYSpoLmdsb2JhbEFscGhhO2wucHVz aCgnPGdfdm1sXzpmaWxsIGNvbG9yPSInLGtjLCciIG9wYWNpdHk9IicsbGMsJyIg Lz4nKTt9fXRhLmZpbGw9ZnVuY3Rpb24oKXt0aGlzLnN0cm9rZSh0cnVlKTt9O3Rh LmNsb3NlUGF0aD1mdW5jdGlvbigpe3RoaXMuY3VycmVudFBhdGhfLnB1c2goe3R5 cGU6ImNsb3NlIn0pO307dGEuZ2V0Q29vcmRzXz1mdW5jdGlvbihoLGwpe3ZhciBz PXRoaXMubV87cmV0dXJuIHt4OnAqKGgqc1swXVswXStsKnNbMV1bMF0rc1syXVsw XSktcSx5OnAqKGgqc1swXVsxXStsKnNbMV1bMV0rc1syXVsxXSktcX07fTt0YS5z YXZlPWZ1bmN0aW9uKCl7dmFyIGg9e307ZmEodGhpcyxoKTt0aGlzLmFTdGFja18u cHVzaChoKTt0aGlzLm1TdGFja18ucHVzaCh0aGlzLm1fKTt0aGlzLm1fPWVhKGRh KCksdGhpcy5tXyk7fTt0YS5yZXN0b3JlPWZ1bmN0aW9uKCl7aWYodGhpcy5hU3Rh Y2tfLmxlbmd0aCl7ZmEodGhpcy5hU3RhY2tfLnBvcCgpLHRoaXMpO3RoaXMubV89 dGhpcy5tU3RhY2tfLnBvcCgpO319O2Z1bmN0aW9uIHhhKGgpe3JldHVybiBpc0Zp bml0ZShoWzBdWzBdKSYmaXNGaW5pdGUoaFswXVsxXSkmJmlzRmluaXRlKGhbMV1b MF0pJiZpc0Zpbml0ZShoWzFdWzFdKSYmaXNGaW5pdGUoaFsyXVswXSkmJmlzRmlu aXRlKGhbMl1bMV0pO31mdW5jdGlvbiB5YShoLGwscyl7aWYoIXhhKGwpKXJldHVy bjtoLm1fPWw7aWYocyl7dmFyIGZiPWxbMF1bMF0qbFsxXVsxXS1sWzBdWzFdKmxb MV1bMF07aC5saW5lU2NhbGVfPW8obihmYikpO319dGEudHJhbnNsYXRlPWZ1bmN0 aW9uKGgsbCl7dmFyIHM9W1sxLDAsMF0sWzAsMSwwXSxbaCxsLDFdXTt5YSh0aGlz LGVhKHMsdGhpcy5tXyksZmFsc2UpO307dGEucm90YXRlPWZ1bmN0aW9uKGgpe3Zh ciBsPW0oaCkscz1rKGgpLGZiPVtbbCxzLDBdLFstcyxsLDBdLFswLDAsMV1dO3lh KHRoaXMsZWEoZmIsdGhpcy5tXyksZmFsc2UpO307dGEuc2NhbGU9ZnVuY3Rpb24o aCxsKXt0aGlzLmFyY1NjYWxlWF8qPWg7dGhpcy5hcmNTY2FsZVlfKj1sO3ZhciBz PVtbaCwwLDBdLFswLGwsMF0sWzAsMCwxXV07eWEodGhpcyxlYShzLHRoaXMubV8p LHRydWUpO307dGEudHJhbnNmb3JtPWZ1bmN0aW9uKGgsbCxzLGZiLGdiLGhiKXt2 YXIgaWI9W1toLGwsMF0sW3MsZmIsMF0sW2diLGhiLDFdXTt5YSh0aGlzLGVhKGli LHRoaXMubV8pLHRydWUpO307dGEuc2V0VHJhbnNmb3JtPWZ1bmN0aW9uKGgsbCxz LGZiLGdiLGhiKXt2YXIgaWI9W1toLGwsMF0sW3MsZmIsMF0sW2diLGhiLDFdXTt5 YSh0aGlzLGliLHRydWUpO307dGEuZHJhd1RleHRfPWZ1bmN0aW9uKGgsbCxzLGZi LGdiKXt2YXIgaGI9dGhpcy5tXyxpYj0xMDAwLGpiPTAsa2I9aWIsbGI9e3g6MCx5 OjB9LG1iPVtdLG5iPXBhKG9hKHRoaXMuZm9udCksdGhpcy5lbGVtZW50Xyksb2I9 cWEobmIpLHBiPXRoaXMuZWxlbWVudF8uY3VycmVudFN0eWxlLHFiPXRoaXMudGV4 dEFsaWduLnRvTG93ZXJDYXNlKCk7c3dpdGNoKHFiKXtjYXNlICJsZWZ0IjpjYXNl ICJjZW50ZXIiOmNhc2UgInJpZ2h0IjpicmVhaztjYXNlICJlbmQiOnFiPXBiLmRp cmVjdGlvbj09Imx0ciI/InJpZ2h0IjoibGVmdCI7YnJlYWs7Y2FzZSAic3RhcnQi OnFiPXBiLmRpcmVjdGlvbj09InJ0bCI/InJpZ2h0IjoibGVmdCI7YnJlYWs7ZGVm YXVsdDpxYj0ibGVmdCI7fXN3aXRjaCh0aGlzLnRleHRCYXNlbGluZSl7Y2FzZSAi aGFuZ2luZyI6Y2FzZSAidG9wIjpsYi55PW5iLnNpemUvMS43NTticmVhaztjYXNl ICJtaWRkbGUiOmJyZWFrO2RlZmF1bHQ6Y2FzZSBudWxsOmNhc2UgImFscGhhYmV0 aWMiOmNhc2UgImlkZW9ncmFwaGljIjpjYXNlICJib3R0b20iOmxiLnk9LW5iLnNp emUvMi4yNTticmVhazt9c3dpdGNoKHFiKXtjYXNlICJyaWdodCI6amI9aWI7a2I9 LjA1O2JyZWFrO2Nhc2UgImNlbnRlciI6amI9a2I9aWIvMjticmVhazt9dmFyIHJi PXRoaXMuZ2V0Q29vcmRzXyhsK2xiLngscytsYi55KTttYi5wdXNoKCc8Z192bWxf OmxpbmUgZnJvbT0iJywtamIsJyAwIiB0bz0iJyxrYiwnIDAuMDUiICcsJyBjb29y ZHNpemU9IjEwMCAxMDAiIGNvb3Jkb3JpZ2luPSIwIDAiJywnIGZpbGxlZD0iJywh Z2IsJyIgc3Ryb2tlZD0iJywhIWdiLCciIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0 ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPicpO2lmKGdiKXt2YSh0aGlzLG1iKTt9 ZWxzZSB3YSh0aGlzLG1iLHt4Oi1qYix5OjB9LHt4OmtiLHk6bmIuc2l6ZX0pO3Zh

ciBzYj1oYlswXVswXS50b0ZpeGVkKDMpKyIsIitoYlsxXVswXS50b0ZpeGVkKDMp KyIsIitoYlswXVsxXS50b0ZpeGVkKDMpKyIsIitoYlsxXVsxXS50b0ZpeGVkKDMp KyIsMCwwIix0Yj1qKHJiLngvcCkrIiwiK2oocmIueS9wKTttYi5wdXNoKCc8Z192 bWxfOnNrZXcgb249InQiIG1hdHJpeD0iJyxzYiwnIiAnLCcgb2Zmc2V0PSInLHRi LCciIG9yaWdpbj0iJyxqYiwnIDAiIC8+JywnPGdfdm1sXzpwYXRoIHRleHRwYXRo b2s9InRydWUiIC8+JywnPGdfdm1sXzp0ZXh0cGF0aCBvbj0idHJ1ZSIgc3RyaW5n PSInLHYoaCksJyIgc3R5bGU9InYtdGV4dC1hbGlnbjonLHFiLCI7Zm9udDoiLHYo b2IpLCciIC8+PC9nX3ZtbF86bGluZT4nKTt0aGlzLmVsZW1lbnRfLmluc2VydEFk amFjZW50SFRNTCgiYmVmb3JlRW5kIixtYi5qb2luKCIiKSk7fTt0YS5maWxsVGV4 dD1mdW5jdGlvbihoLGwscyxmYil7dGhpcy5kcmF3VGV4dF8oaCxsLHMsZmIsZmFs c2UpO307dGEuc3Ryb2tlVGV4dD1mdW5jdGlvbihoLGwscyxmYil7dGhpcy5kcmF3 VGV4dF8oaCxsLHMsZmIsdHJ1ZSk7fTt0YS5tZWFzdXJlVGV4dD1mdW5jdGlvbiho KXtpZighdGhpcy50ZXh0TWVhc3VyZUVsXyl7dmFyIGw9JzxzcGFuIHN0eWxlPSJw b3NpdGlvbjphYnNvbHV0ZTt0b3A6LTIwMDAwcHg7bGVmdDowO3BhZGRpbmc6MDtt YXJnaW46MDtib3JkZXI6bm9uZTt3aGl0ZS1zcGFjZTpwcmU7Ij48L3NwYW4+Jzt0 aGlzLmVsZW1lbnRfLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlRW5kIixsKTt0 aGlzLnRleHRNZWFzdXJlRWxfPXRoaXMuZWxlbWVudF8ubGFzdENoaWxkO312YXIg cz10aGlzLmVsZW1lbnRfLm93bmVyRG9jdW1lbnQ7dGhpcy50ZXh0TWVhc3VyZUVs Xy5pbm5lckhUTUw9IiI7dGhpcy50ZXh0TWVhc3VyZUVsXy5zdHlsZS5mb250PXRo aXMuZm9udDt0aGlzLnRleHRNZWFzdXJlRWxfLmFwcGVuZENoaWxkKHMuY3JlYXRl VGV4dE5vZGUoaCkpO3JldHVybiB7d2lkdGg6dGhpcy50ZXh0TWVhc3VyZUVsXy5v ZmZzZXRXaWR0aH07fTt0YS5jbGlwPWZ1bmN0aW9uKCl7fTt0YS5hcmNUbz1mdW5j dGlvbigpe307dGEuY3JlYXRlUGF0dGVybj1mdW5jdGlvbihoLGwpe3JldHVybiBu ZXcgYWIoaCxsKTt9O2Z1bmN0aW9uIHphKGgpe3RoaXMudHlwZV89aDt0aGlzLngw Xz0wO3RoaXMueTBfPTA7dGhpcy5yMF89MDt0aGlzLngxXz0wO3RoaXMueTFfPTA7 dGhpcy5yMV89MDt0aGlzLmNvbG9yc189W107fXphLnByb3RvdHlwZS5hZGRDb2xv clN0b3A9ZnVuY3Rpb24oaCxsKXtsPWxhKGwpO3RoaXMuY29sb3JzXy5wdXNoKHtv ZmZzZXQ6aCxjb2xvcjpsLmNvbG9yLGFscGhhOmwuYWxwaGF9KTt9O2Z1bmN0aW9u IGFiKGgsbCl7Y2IoaCk7c3dpdGNoKGwpe2Nhc2UgInJlcGVhdCI6Y2FzZSBudWxs OmNhc2UgIiI6dGhpcy5yZXBldGl0aW9uXz0icmVwZWF0IjticmVhaztjYXNlICJy ZXBlYXQteCI6Y2FzZSAicmVwZWF0LXkiOmNhc2UgIm5vLXJlcGVhdCI6dGhpcy5y ZXBldGl0aW9uXz1sO2JyZWFrO2RlZmF1bHQ6YmIoIlNZTlRBWF9FUlIiKTt9dGhp cy5zcmNfPWguc3JjO3RoaXMud2lkdGhfPWgud2lkdGg7dGhpcy5oZWlnaHRfPWgu aGVpZ2h0O31mdW5jdGlvbiBiYihoKXt0aHJvdyBuZXcgZGIoaCk7fWZ1bmN0aW9u IGNiKGgpe2lmKCFofHxoLm5vZGVUeXBlIT0xfHxoLnRhZ05hbWUhPSJJTUciKWJi KCJUWVBFX01JU01BVENIX0VSUiIpO2lmKGgucmVhZHlTdGF0ZSE9ImNvbXBsZXRl IiliYigiSU5WQUxJRF9TVEFURV9FUlIiKTt9ZnVuY3Rpb24gZGIoaCl7dGhpcy5j b2RlPXRoaXNbaF07dGhpcy5tZXNzYWdlPWgrIjogRE9NIEV4Y2VwdGlvbiAiK3Ro aXMuY29kZTt9dmFyIGViPWRiLnByb3RvdHlwZT1uZXcgRXJyb3IoKTtlYi5JTkRF WF9TSVpFX0VSUj0xO2ViLkRPTVNUUklOR19TSVpFX0VSUj0yO2ViLkhJRVJBUkNI WV9SRVFVRVNUX0VSUj0zO2ViLldST05HX0RPQ1VNRU5UX0VSUj00O2ViLklOVkFM SURfQ0hBUkFDVEVSX0VSUj01O2ViLk5PX0RBVEFfQUxMT1dFRF9FUlI9NjtlYi5O T19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI9NztlYi5OT1RfRk9VTkRfRVJSPTg7 ZWIuTk9UX1NVUFBPUlRFRF9FUlI9OTtlYi5JTlVTRV9BVFRSSUJVVEVfRVJSPTEw O2ViLklOVkFMSURfU1RBVEVfRVJSPTExO2ViLlNZTlRBWF9FUlI9MTI7ZWIuSU5W QUxJRF9NT0RJRklDQVRJT05fRVJSPTEzO2ViLk5BTUVTUEFDRV9FUlI9MTQ7ZWIu SU5WQUxJRF9BQ0NFU1NfRVJSPTE1O2ViLlZBTElEQVRJT05fRVJSPTE2O2ViLlRZ UEVfTUlTTUFUQ0hfRVJSPTE3O2c9e0NhbnZhc0dyYWRpZW50OnphLENhbnZhc1Bh dHRlcm46YWIsQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOnNhLERPTUV4Y2VwdGlv bjpkYixHX3ZtbENhbnZhc01hbmFnZXI6eH07fWUuZXhwb3J0cz1nO30pOwpfX2Qo Imluc2lnaHRzLXZpZXctYmFzZS1ncmFwaCIsWyJ1a2ktZnVuY3Rpb24iLCJ1a2kt ZG9tIiwidWtpLXZpZXciLCJ1a2ktYnVpbGQiLCJ1a2ktdXRpbHMiLCJmbG90Iiwi RG9Ob3RVc2VKUXVlcnkxNyIsImluc2lnaHRzLWNvbnN0YW50cyIsInVraS1mYi12 aWV3LWltYWdlIiwidWtpLXZpZXctY29udGFpbmVyIl0sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe3ZhciBnPWIoJ3VraS1mdW5jdGlvbicpLGg9YigndWtpLWRvbScpLGk9 YigndWtpLXZpZXcnKSxqPWIoJ3VraS1idWlsZCcpLGs9YigndWtpLXV0aWxzJyks bD1iKCdmbG90JyksbT1iKCdEb05vdFVzZUpRdWVyeTE3Jyksbj1iKCdpbnNpZ2h0 cy1jb25zdGFudHMnKS5JbnNpZ2h0c0NvbnN0YW50cyxvPWIoJ3VraS1mYi12aWV3 LWltYWdlJykuSW1hZ2UscD1iKCd1a2ktdmlldy1jb250YWluZXInKS5Db250YWlu ZXIscT1pLm5ld0NsYXNzKCdpbnNpZ2h0cy5CYXNlR3JhcGgnLHAse19jcmVhdGVE

b206ZnVuY3Rpb24ocil7dGhpcy5fZG9tPWguY3JlYXRlRWxlbWVudCgnZGl2Jyk7 dmFyIHM9aih7dmlldzpwLGNoaWxkVmlld3M6W3t2aWV3Om8sYXM6J2xvYWRpbmcn LHNyYzpuLkxPQURJTkdfSU1BR0V9LHt2aWV3OnAsY2xhc3NOYW1lOidncmFwaC1j YW52YXMnLGFzOidjYW52YXMnfV19KTtzLmFwcGVuZFRvKHRoaXMpO3RoaXMuX2xv YWRpbmc9cy52aWV3KCdsb2FkaW5nJyk7dGhpcy5fY2FudmFzPXMudmlldygnY2Fu dmFzJyk7dGhpcy5sb2FkaW5nKHRydWUpO3RoaXMub3B0aW9ucyh7fSk7dGhpcy5s ZWdlbmQoW10pO30sbG9hZGluZzpnLm5ld0RlbGVnYXRlUHJvcCgnX2xvYWRpbmcn LCd2aXNpYmxlJyksbGVnZW5kQ29udGFpbmVyOmcubmV3UHJvcCgnbGVnZW5kQ29u dGFpbmVyJyksbm9Db2x1bW5zTGVnZW5kOmcubmV3UHJvcCgnbm9Db2x1bW5zTGVn ZW5kJyksbGVnZW5kU3R5bGU6Zy5uZXdQcm9wKCdsZWdlbmRTdHlsZScpLG1heFBv aW50czpnLm5ld1Byb3AoJ21heFBvaW50cycpLHhNaW46Zy5uZXdQcm9wKCd4TWlu JyksY29sb3JzOmcubmV3UHJvcCgnY29sb3JzJyksbGVnZW5kOmcubmV3UHJvcCgn bGVnZW5kJyksc2VyaWVzOmcubmV3UHJvcCgnc2VyaWVzJyksbWl4aW5zOmcubmV3 UHJvcCgnbWl4aW4nLGZ1bmN0aW9uKHIpe2suZm9yRWFjaChyLGcuYmluZChmdW5j dGlvbihzKXtrLmV4dGVuZCh0aGlzLm9wdGlvbnMoKSxzLm9wdGlvbnMoKSk7fSx0 aGlzKSk7fSksb3B0aW9uczpnLm5ld1Byb3AoJ29wdGlvbnMnKSxfZmxvdERhdGE6 ZnVuY3Rpb24oKXt2YXIgcj1bXTtmb3IodmFyIHM9MDtzPHRoaXMuc2VyaWVzKCku bGVuZ3RoO3MrKylyLnB1c2goe2RhdGE6dGhpcy5zZXJpZXMoKVtzXSxsYWJlbDp0 aGlzLl9jaG9vc2VMYWJlbChzKSxjb2xvcjp0aGlzLl9jaG9vc2VDb2xvcihzKX0p O3JldHVybiByO30sX2xlZ2VuZE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4ge2xl Z2VuZDp7Y29udGFpbmVyOnRoaXMubGVnZW5kQ29udGFpbmVyKCk/dGhpcy5sZWdl bmRDb250YWluZXIoKS5kb20oKTpudWxsLHN0eWxlOnRoaXMubGVnZW5kU3R5bGUo KSxub0NvbHVtbnM6dGhpcy5ub0NvbHVtbnNMZWdlbmQoKT90aGlzLm5vQ29sdW1u c0xlZ2VuZCgpOih0aGlzLmxlZ2VuZCgpP3RoaXMubGVnZW5kKCkubGVuZ3RoOm51 bGwpfX07fSxfZXh0ZW5kT3B0aW9uczpmdW5jdGlvbihyKXt2YXIgcz10aGlzLm9w dGlvbnMoKXx8e307ay5mb3JFYWNoKHIsZnVuY3Rpb24odCx1KXtzW3VdPXNbdV18 fHt9O2suZXh0ZW5kKHNbdV0sdCk7fSk7cmV0dXJuIHRoaXMub3B0aW9ucyhzKTt9 LF9mbG90T3B0aW9uczpmdW5jdGlvbigpe3RoaXMuX2V4dGVuZE9wdGlvbnModGhp cy5fbGVnZW5kT3B0aW9ucygpKTt2YXIgcj10aGlzLm9wdGlvbnMoKTtpZihyLnBv aW50cyYmci5wb2ludHMuc2hvdyYmdGhpcy5zZXJpZXMoKSYmdGhpcy5tYXhQb2lu dHMoKSYmdGhpcy5zZXJpZXMoKVswXS5sZW5ndGg+dGhpcy5tYXhQb2ludHMoKSly LnBvaW50cy5zaG93PWZhbHNlO2lmKHRoaXMueE1pbigpIT1udWxsKXtyLnhheGlz PXIueGF4aXN8fHt9O3IueGF4aXMubWluPXRoaXMueE1pbigpO31yZXR1cm4gcjt9 LF9jaG9vc2VMYWJlbDpmdW5jdGlvbihyKXt2YXIgcz10aGlzLmxlZ2VuZCgpO3Jl dHVybiBzJiZzLmxlbmd0aD5yP3Nbcl06bnVsbDt9LF9jaG9vc2VDb2xvcjpmdW5j dGlvbihyKXt2YXIgcz10aGlzLmNvbG9ycygpO3JldHVybiBzJiZzLmxlbmd0aD5y P3Nbcl06bnVsbDt9LHBsb3Q6ZnVuY3Rpb24ocil7aWYociE9bnVsbCl0aGlzLnNl cmllcyhyKTtsLnBsb3QodGhpcy5fY2FudmFzLmRvbSgpLHRoaXMuX2Zsb3REYXRh KCksdGhpcy5fZmxvdE9wdGlvbnMoKSk7dGhpcy50cmlnZ2VyKHt0eXBlOm4uRXZl bnRzLlBsb3R0ZWR9KTt9fSk7Zi5CYXNlR3JhcGg9cTt9KTsKLyoqCiAqIEBwcm92 aWRlc01vZHVsZSBmbG90LXBpZQogKiBAb3B0aW9uIHByZXNlcnZlLWhlYWRlcgog KgogKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOSBJT0xBIGFuZCBPbGUgTGF1cnNl bgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbgogKiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgogKiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 CiAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLAogKiBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcKICogY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUKICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAogKiBF WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMKICogT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKICogTk9OSU5GUklOR0VNRU5ULiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKICogSE9M

REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM SUFCSUxJVFksCiAqIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwogKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9U SEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICoKICogRmxvdCBwbHVnaW4g Zm9yIHJlbmRlcmluZyBwaWUgY2hhcnRzLiBUaGUgcGx1Z2luIGFzc3VtZXMgdGhl IGRhdGEgaXMKICogY29taW5nIGlzIGFzIGEgc2luZ2xlIGRhdGEgdmFsdWUgZm9y IGVhY2ggc2VyaWVzLCBhbmQgZWFjaCBvZiB0aG9zZQogKiB2YWx1ZXMgaXMgYSBw b3NpdGl2ZSB2YWx1ZSBvciB6ZXJvIChuZWdhdGl2ZSBudW1iZXJzIGRvbid0IG1h a2UKICogYW55IHNlbnNlIGFuZCB3aWxsIGNhdXNlIHN0cmFuZ2UgZWZmZWN0cyku IFRoZSBkYXRhIHZhbHVlcyBkbwogKiBOT1QgbmVlZCB0byBiZSBwYXNzZWQgaW4g YXMgcGVyY2VudGFnZSB2YWx1ZXMgYmVjYXVzZSBpdAogKiBpbnRlcm5hbGx5IGNh bGN1bGF0ZXMgdGhlIHRvdGFsIGFuZCBwZXJjZW50YWdlcy4KICoKICogKiBDcmVh dGVkIGJ5IEJyaWFuIE1lZGVuZG9ycCwgSnVuZSAyMDA5CiAqICogVXBkYXRlZCBO b3ZlbWJlciAyMDA5IHdpdGggY29udHJpYnV0aW9ucyBmcm9tOiBidGJ1cm5ldHQz LCBBbnRob255IEFyYWd1ZXMgYW5kIFhhdmkgSXZhcnMKICoKICogKiBDaGFuZ2Vz OgogKiAJMjAwOS0xMC0yMjogbGluZUpvaW4gc2V0IHRvIHJvdW5kCiAqIAkyMDA5 LTEwLTIzOiBJRSBmdWxsIGNpcmNsZSBmaXgsIGRvbnV0CiAqIAkyMDA5LTExLTEx OiBBZGRlZCBiYXNpYyBob3ZlciBmcm9tIGJ0YnVybmV0dDMgLSBkb2VzIG5vdCB3 b3JrIGluIElFLCBhbmQgY2VudGVyIGlzIG9mZiBpbiBDaHJvbWUgYW5kIE9wZXJh CiAqIAkyMDA5LTExLTE3OiBBZGRlZCBJRSBob3ZlciBjYXBhYmlsaXR5IHN1Ym1p dHRlZCBieSBBbnRob255IEFyYWd1ZXMKICogCTIwMDktMTEtMTg6IEFkZGVkIGJ1 ZyBmaXggc3VibWl0dGVkIGJ5IFhhdmkgSXZhcnMgKGlzc3VlcyB3aXRoIGFycmF5 cyB3aGVuIG90aGVyIEpTIGxpYnJhcmllcyBhcmUgaW5jbHVkZWQgYXMgd2VsbCkK ICoKICoKICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOgogKiBzZXJpZXM6IHsKICog CXBpZTogewogKiAJCXNob3c6IHRydWUvZmFsc2UKICogCQlyYWRpdXM6IDAtMSBm b3IgcGVyY2VudGFnZSBvZiBmdWxsc2l6ZSwgb3IgYSBzcGVjaWZpZWQgcGl4ZWwg bGVuZ3RoLCBvciAnYXV0bycKICogCQlpbm5lclJhZGl1czogMC0xIGZvciBwZXJj ZW50YWdlIG9mIGZ1bGxzaXplIG9yIGEgc3BlY2lmaWVkIHBpeGVsIGxlbmd0aCwg Zm9yIGNyZWF0aW5nIGEgZG9udXQgZWZmZWN0CiAqIAkJc3RhcnRBbmdsZTogMC0y IGZhY3RvciBvZiBQSSB1c2VkIGZvciBzdGFydGluZyBhbmdsZSAoaW4gcmFkaWFu cykgaS5lIDMvMiBzdGFydHMgYXQgdGhlIHRvcCwgMCBhbmQgMiBoYXZlIHRoZSBz YW1lIHJlc3VsdAogKiAJCXRpbHQ6IDAtMSBmb3IgcGVyY2VudGFnZSB0byB0aWx0 IHRoZSBwaWUsIHdoZXJlIDEgaXMgbm8gdGlsdCwgYW5kIDAgaXMgY29tcGxldGVs eSBmbGF0IChub3RoaW5nIHdpbGwgc2hvdykKICogCQlvZmZzZXQ6IHsKICogCQkJ dG9wOiBpbnRlZ2VyIHZhbHVlIHRvIG1vdmUgdGhlIHBpZSB1cCBvciBkb3duCiAq IAkJCWxlZnQ6IGludGVnZXIgdmFsdWUgdG8gbW92ZSB0aGUgcGllIGxlZnQgb3Ig cmlnaHQsIG9yICdhdXRvJwogKiAJCX0sCiAqIAkJc3Ryb2tlOiB7CiAqIAkJCWNv bG9yOiBhbnkgaGV4aWRlY2ltYWwgY29sb3IgdmFsdWUgKG90aGVyIGZvcm1hdHMg bWF5IG9yIG1heSBub3Qgd29yaywgc28gYmVzdCB0byBzdGljayB3aXRoIHNvbWV0 aGluZyBsaWtlICcjRkZGJykKICogCQkJd2lkdGg6IGludGVnZXIgcGl4ZWwgd2lk dGggb2YgdGhlIHN0cm9rZQogKiAJCX0sCiAqIAkJbGFiZWw6IHsKICogCQkJc2hv dzogdHJ1ZS9mYWxzZSwgb3IgJ2F1dG8nCiAqIAkJCWZvcm1hdHRlcjogIGEgdXNl ci1kZWZpbmVkIGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMgdGhlIHRleHQvc3R5bGUg b2YgdGhlIGxhYmVsIHRleHQKICogCQkJcmFkaXVzOiAwLTEgZm9yIHBlcmNlbnRh Z2Ugb2YgZnVsbHNpemUsIG9yIGEgc3BlY2lmaWVkIHBpeGVsIGxlbmd0aAogKiAJ CQliYWNrZ3JvdW5kOiB7CiAqIAkJCQljb2xvcjogYW55IGhleGlkZWNpbWFsIGNv bG9yIHZhbHVlIChvdGhlciBmb3JtYXRzIG1heSBvciBtYXkgbm90IHdvcmssIHNv IGJlc3QgdG8gc3RpY2sgd2l0aCBzb21ldGhpbmcgbGlrZSAnIzAwMCcpCiAqIAkJ CQlvcGFjaXR5OiAwLTEKICogCQkJfSwKICogCQkJdGhyZXNob2xkOiAwLTEgZm9y IHRoZSBwZXJjZW50YWdlIHZhbHVlIGF0IHdoaWNoIHRvIGhpZGUgbGFiZWxzIChp ZiB0aGV5J3JlIHRvbyBzbWFsbCkKICogCQl9LAogKiAJCWNvbWJpbmU6IHsKICog CQkJdGhyZXNob2xkOiAwLTEgZm9yIHRoZSBwZXJjZW50YWdlIHZhbHVlIGF0IHdo aWNoIHRvIGNvbWJpbmUgc2xpY2VzIChpZiB0aGV5J3JlIHRvbyBzbWFsbCkKICog CQkJY29sb3I6IGFueSBoZXhpZGVjaW1hbCBjb2xvciB2YWx1ZSAob3RoZXIgZm9y bWF0cyBtYXkgb3IgbWF5IG5vdCB3b3JrLCBzbyBiZXN0IHRvIHN0aWNrIHdpdGgg c29tZXRoaW5nIGxpa2UgJyNDQ0MnKSwgaWYgbnVsbCwgdGhlIHBsdWdpbiB3aWxs IGF1dG9tYXRpY2FsbHkgdXNlIHRoZSBjb2xvciBvZiB0aGUgZmlyc3Qgc2xpY2Ug dG8gYmUgY29tYmluZWQKICogCQkJbGFiZWw6IGFueSB0ZXh0IHZhbHVlIG9mIHdo YXQgdGhlIGNvbWJpbmVkIHNsaWNlIHNob3VsZCBiZSBsYWJlbGVkCiAqIAkJfQog

KiAJCWhpZ2hsaWdodDogewogKiAJCQlvcGFjaXR5OiAwLTEKICogCQl9CiAqIAl9 CiAqIH0KICoKICogTW9yZSBkZXRhaWwgYW5kIHNwZWNpZmljIGV4YW1wbGVzIGNh biBiZSBmb3VuZCBpbiB0aGUgaW5jbHVkZWQgSFRNTCBmaWxlLgogKgogKi9fX2Qo ImZsb3QtcGllIixbIkRvTm90VXNlSlF1ZXJ5MTciLCJmbG90Il0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RvTm90VXNlSlF1ZXJ5MTcnKSxoPWIoJ2Zs b3QnKTsoZnVuY3Rpb24oail7ZnVuY3Rpb24gayhtKXt2YXIgbj1udWxsLG89bnVs bCxwPW51bGwscT1udWxsLHI9bnVsbCxzPTAsdD10cnVlLHU9MTAsdj0uOTUsdz0w LHo9ZmFsc2UsYWE9ZmFsc2UsYmE9W107bS5ob29rcy5wcm9jZXNzT3B0aW9ucy5w dXNoKGNhKTttLmhvb2tzLmJpbmRFdmVudHMucHVzaChkYSk7ZnVuY3Rpb24gY2Eo aSx4KXtpZih4LnNlcmllcy5waWUuc2hvdyl7eC5ncmlkLnNob3c9ZmFsc2U7aWYo eC5zZXJpZXMucGllLmxhYmVsLnNob3c9PSdhdXRvJylpZih4LmxlZ2VuZC5zaG93 KXt4LnNlcmllcy5waWUubGFiZWwuc2hvdz1mYWxzZTt9ZWxzZSB4LnNlcmllcy5w aWUubGFiZWwuc2hvdz10cnVlO2lmKHguc2VyaWVzLnBpZS5yYWRpdXM9PSdhdXRv JylpZih4LnNlcmllcy5waWUubGFiZWwuc2hvdyl7eC5zZXJpZXMucGllLnJhZGl1 cz0zLzQ7fWVsc2UgeC5zZXJpZXMucGllLnJhZGl1cz0xO2lmKHguc2VyaWVzLnBp ZS50aWx0PjEpeC5zZXJpZXMucGllLnRpbHQ9MTtpZih4LnNlcmllcy5waWUudGls dDwwKXguc2VyaWVzLnBpZS50aWx0PTA7aS5ob29rcy5wcm9jZXNzRGF0YXBvaW50 cy5wdXNoKGdhKTtpLmhvb2tzLmRyYXdPdmVybGF5LnB1c2godWEpO2kuaG9va3Mu ZHJhdy5wdXNoKGthKTt9fWZ1bmN0aW9uIGRhKGkseCl7dmFyIHk9aS5nZXRPcHRp b25zKCk7aWYoeS5zZXJpZXMucGllLnNob3cmJnkuZ3JpZC5ob3ZlcmFibGUpeC51 bmJpbmQoJ21vdXNlbW92ZScpLm1vdXNlbW92ZShvYSk7aWYoeS5zZXJpZXMucGll LnNob3cmJnkuZ3JpZC5jbGlja2FibGUpeC51bmJpbmQoJ2NsaWNrJykuY2xpY2so cGEpO31mdW5jdGlvbiBlYShpKXt2YXIgeD0nJztmdW5jdGlvbiB5KHZhLHdhKXtp Zighd2Epd2E9MDtmb3IodmFyIHhhPTA7eGE8dmEubGVuZ3RoOysreGEpe2Zvcih2 YXIgeWE9MDt5YTx3YTt5YSsrKXgrPSdcdCc7aWYodHlwZW9mIHZhW3hhXT09Im9i amVjdCIpe3grPScnK3hhKyc6XG4nO3kodmFbeGFdLHdhKzEpO31lbHNlIHgrPScn K3hhKyc6ICcrdmFbeGFdKydcbic7fX15KGkpO2FsZXJ0KHgpO31mdW5jdGlvbiBm YShpKXtmb3IodmFyIHg9MDt4PGkubGVuZ3RoOysreCl7dmFyIHk9cGFyc2VGbG9h dChpW3hdLmRhdGFbMF1bMV0pO2lmKHkpcys9eTt9fWZ1bmN0aW9uIGdhKGkseCx5 LHZhKXtpZigheil7ej10cnVlO249aS5nZXRDYW52YXMoKTtvPWoobikucGFyZW50 KCk7bD1pLmdldE9wdGlvbnMoKTtpLnNldERhdGEoamEoaS5nZXREYXRhKCkpKTt9 fWZ1bmN0aW9uIGhhKCl7dz1vLmNoaWxkcmVuKCkuZmlsdGVyKCcubGVnZW5kJyku Y2hpbGRyZW4oKS53aWR0aCgpO3A9TWF0aC5taW4obi53aWR0aCwobi5oZWlnaHQv bC5zZXJpZXMucGllLnRpbHQpKS8yO3I9KG4uaGVpZ2h0LzIpK2wuc2VyaWVzLnBp ZS5vZmZzZXQudG9wO3E9KG4ud2lkdGgvMik7aWYobC5zZXJpZXMucGllLm9mZnNl dC5sZWZ0PT0nYXV0bycpe2lmKGwubGVnZW5kLnBvc2l0aW9uLm1hdGNoKCd3Jykp e3ErPXcvMjt9ZWxzZSBxLT13LzI7fWVsc2UgcSs9bC5zZXJpZXMucGllLm9mZnNl dC5sZWZ0O2lmKHE8cCl7cT1wO31lbHNlIGlmKHE+bi53aWR0aC1wKXE9bi53aWR0 aC1wO31mdW5jdGlvbiBpYShpKXtmb3IodmFyIHg9MDt4PGkubGVuZ3RoOysreClp Zih0eXBlb2YoaVt4XS5kYXRhKT09J251bWJlcicpe2lbeF0uZGF0YT1bWzEsaVt4 XS5kYXRhXV07fWVsc2UgaWYodHlwZW9mKGlbeF0uZGF0YSk9PSd1bmRlZmluZWQn fHx0eXBlb2YoaVt4XS5kYXRhWzBdKT09J3VuZGVmaW5lZCcpe2lmKHR5cGVvZihp W3hdLmRhdGEpIT0ndW5kZWZpbmVkJyYmdHlwZW9mKGlbeF0uZGF0YS5sYWJlbCkh PSd1bmRlZmluZWQnKWlbeF0ubGFiZWw9aVt4XS5kYXRhLmxhYmVsO2lbeF0uZGF0 YT1bWzEsMF1dO31yZXR1cm4gaTt9ZnVuY3Rpb24gamEoaSl7aT1pYShpKTtmYShp KTt2YXIgeD0wLHk9MCx2YT1sLnNlcmllcy5waWUuY29tYmluZS5jb2xvcix3YT1b XTtmb3IodmFyIHhhPTA7eGE8aS5sZW5ndGg7Kyt4YSl7aVt4YV0uZGF0YVswXVsx XT1wYXJzZUZsb2F0KGlbeGFdLmRhdGFbMF1bMV0pO2lmKCFpW3hhXS5kYXRhWzBd WzFdKWlbeGFdLmRhdGFbMF1bMV09MDtpZihpW3hhXS5kYXRhWzBdWzFdL3M8PWwu c2VyaWVzLnBpZS5jb21iaW5lLnRocmVzaG9sZCl7eCs9aVt4YV0uZGF0YVswXVsx XTt5Kys7aWYoIXZhKXZhPWlbeGFdLmNvbG9yO31lbHNlIHdhLnB1c2goe2RhdGE6 W1sxLGlbeGFdLmRhdGFbMF1bMV1dXSxjb2xvcjppW3hhXS5jb2xvcixsYWJlbDpp W3hhXS5sYWJlbCxhbmdsZTooaVt4YV0uZGF0YVswXVsxXSooTWF0aC5QSSoyKSkv cyxwZXJjZW50OihpW3hhXS5kYXRhWzBdWzFdL3MqMTAwKX0pO31pZih5PjApd2Eu cHVzaCh7ZGF0YTpbWzEseF1dLGNvbG9yOnZhLGxhYmVsOmwuc2VyaWVzLnBpZS5j b21iaW5lLmxhYmVsLGFuZ2xlOih4KihNYXRoLlBJKjIpKS9zLHBlcmNlbnQ6KHgv cyoxMDApfSk7cmV0dXJuIHdhO31mdW5jdGlvbiBrYShpLHgpe2lmKCFvKXJldHVy bjtjdHg9eDtoYSgpO3ZhciB5PWkuZ2V0RGF0YSgpLHZhPTA7d2hpbGUodCYmdmE8 dSl7dD1mYWxzZTtpZih2YT4wKXAqPXY7dmErPTE7d2EoKTtpZihsLnNlcmllcy5w aWUudGlsdDw9LjgpeGEoKTt5YSgpO31pZih2YT49dSl7d2EoKTtvLnByZXBlbmQo

JzxkaXYgY2xhc3M9ImVycm9yIj5Db3VsZCBub3QgZHJhdyBwaWUgd2l0aCBsYWJl bHMgY29udGFpbmVkIGluc2lkZSBjYW52YXM8L2Rpdj4nKTt9aWYoaS5zZXRTZXJp ZXMmJmkuaW5zZXJ0TGVnZW5kKXtpLnNldFNlcmllcyh5KTtpLmluc2VydExlZ2Vu ZCgpO31mdW5jdGlvbiB3YSgpe2N0eC5jbGVhclJlY3QoMCwwLG4ud2lkdGgsbi5o ZWlnaHQpO28uY2hpbGRyZW4oKS5maWx0ZXIoJy5waWVMYWJlbCwgLnBpZUxhYmVs QmFja2dyb3VuZCcpLnJlbW92ZSgpO31mdW5jdGlvbiB4YSgpe3ZhciB6YT01LGFi PTE1LGJiPTEwLGNiPS4wMjtpZihsLnNlcmllcy5waWUucmFkaXVzPjEpe3ZhciBk Yj1sLnNlcmllcy5waWUucmFkaXVzO31lbHNlIHZhciBkYj1wKmwuc2VyaWVzLnBp ZS5yYWRpdXM7aWYoZGI+PShuLndpZHRoLzIpLXphfHxkYipsLnNlcmllcy5waWUu dGlsdD49KG4uaGVpZ2h0LzIpLWFifHxkYjw9YmIpcmV0dXJuO2N0eC5zYXZlKCk7 Y3R4LnRyYW5zbGF0ZSh6YSxhYik7Y3R4Lmdsb2JhbEFscGhhPWNiO2N0eC5maWxs U3R5bGU9JyMwMDAnO2N0eC50cmFuc2xhdGUocSxyKTtjdHguc2NhbGUoMSxsLnNl cmllcy5waWUudGlsdCk7Zm9yKHZhciBlYj0xO2ViPD1iYjtlYisrKXtjdHguYmVn aW5QYXRoKCk7Y3R4LmFyYygwLDAsZGIsMCxNYXRoLlBJKjIsZmFsc2UpO2N0eC5m aWxsKCk7ZGItPWViO31jdHgucmVzdG9yZSgpO31mdW5jdGlvbiB5YSgpe3N0YXJ0 QW5nbGU9TWF0aC5QSSpsLnNlcmllcy5waWUuc3RhcnRBbmdsZTtpZihsLnNlcmll cy5waWUucmFkaXVzPjEpe3ZhciB6YT1sLnNlcmllcy5waWUucmFkaXVzO31lbHNl IHZhciB6YT1wKmwuc2VyaWVzLnBpZS5yYWRpdXM7Y3R4LnNhdmUoKTtjdHgudHJh bnNsYXRlKHEscik7Y3R4LnNjYWxlKDEsbC5zZXJpZXMucGllLnRpbHQpO2N0eC5z YXZlKCk7dmFyIGFiPXN0YXJ0QW5nbGU7Zm9yKHZhciBiYj0wO2JiPHkubGVuZ3Ro OysrYmIpe3lbYmJdLnN0YXJ0QW5nbGU9YWI7Y2IoeVtiYl0uYW5nbGUseVtiYl0u Y29sb3IsdHJ1ZSk7fWN0eC5yZXN0b3JlKCk7Y3R4LnNhdmUoKTtjdHgubGluZVdp ZHRoPWwuc2VyaWVzLnBpZS5zdHJva2Uud2lkdGg7YWI9c3RhcnRBbmdsZTtmb3Io dmFyIGJiPTA7YmI8eS5sZW5ndGg7KytiYiljYih5W2JiXS5hbmdsZSxsLnNlcmll cy5waWUuc3Ryb2tlLmNvbG9yLGZhbHNlKTtjdHgucmVzdG9yZSgpO2xhKGN0eCk7 aWYobC5zZXJpZXMucGllLmxhYmVsLnNob3cpZGIoKTtjdHgucmVzdG9yZSgpO2Z1 bmN0aW9uIGNiKGViLGZiLGdiKXtpZihlYjw9MClyZXR1cm47aWYoZ2Ipe2N0eC5m aWxsU3R5bGU9ZmI7fWVsc2V7Y3R4LnN0cm9rZVN0eWxlPWZiO2N0eC5saW5lSm9p bj0ncm91bmQnO31jdHguYmVnaW5QYXRoKCk7aWYoTWF0aC5hYnMoZWItTWF0aC5Q SSoyKT4xZS0wOSl7Y3R4Lm1vdmVUbygwLDApO31lbHNlIGlmKGouYnJvd3Nlci5t c2llKWViLT0uMDAwMTtjdHguYXJjKDAsMCx6YSxhYixhYitlYixmYWxzZSk7Y3R4 LmNsb3NlUGF0aCgpO2FiKz1lYjtpZihnYil7Y3R4LmZpbGwoKTt9ZWxzZSBjdHgu c3Ryb2tlKCk7fWZ1bmN0aW9uIGRiKCl7dmFyIGViPXN0YXJ0QW5nbGU7aWYobC5z ZXJpZXMucGllLmxhYmVsLnJhZGl1cz4xKXt2YXIgZmI9bC5zZXJpZXMucGllLmxh YmVsLnJhZGl1czt9ZWxzZSB2YXIgZmI9cCpsLnNlcmllcy5waWUubGFiZWwucmFk aXVzO2Zvcih2YXIgZ2I9MDtnYjx5Lmxlbmd0aDsrK2diKXtpZih5W2diXS5wZXJj ZW50Pj1sLnNlcmllcy5waWUubGFiZWwudGhyZXNob2xkKjEwMCloYih5W2diXSxl YixnYik7ZWIrPXlbZ2JdLmFuZ2xlO31mdW5jdGlvbiBoYihpYixqYixrYil7aWYo aWIuZGF0YVswXVsxXT09MClyZXR1cm47dmFyIGxiPWwubGVnZW5kLmxhYmVsRm9y bWF0dGVyLG1iLG5iPWwuc2VyaWVzLnBpZS5sYWJlbC5mb3JtYXR0ZXI7aWYobGIp e21iPWxiKGliLmxhYmVsLGliKTt9ZWxzZSBtYj1pYi5sYWJlbDtpZihuYiltYj1u YihtYixpYik7dmFyIG9iPSgoamIraWIuYW5nbGUpK2piKS8yLHBiPXErTWF0aC5y b3VuZChNYXRoLmNvcyhvYikqZmIpLHFiPXIrTWF0aC5yb3VuZChNYXRoLnNpbihv YikqZmIpKmwuc2VyaWVzLnBpZS50aWx0LHJiPSc8c3BhbiBjbGFzcz0icGllTGFi ZWwiIGlkPSJwaWVMYWJlbCcra2IrJyIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRl O3RvcDonK3FiKydweDtsZWZ0OicrcGIrJ3B4OyI+JyttYisiPC9zcGFuPiI7by5h cHBlbmQocmIpO3ZhciBzYj1vLmNoaWxkcmVuKCcjcGllTGFiZWwnK2tiKSx0Yj0o cWItc2IuaGVpZ2h0KCkvMiksdWI9KHBiLXNiLndpZHRoKCkvMik7c2IuY3NzKCd0 b3AnLHRiKTtzYi5jc3MoJ2xlZnQnLHViKTtpZigwLXRiPjB8fDAtdWI+MHx8bi5o ZWlnaHQtKHRiK3NiLmhlaWdodCgpKTwwfHxuLndpZHRoLSh1YitzYi53aWR0aCgp KTwwKXQ9dHJ1ZTtpZihsLnNlcmllcy5waWUubGFiZWwuYmFja2dyb3VuZC5vcGFj aXR5IT0wKXt2YXIgdmI9bC5zZXJpZXMucGllLmxhYmVsLmJhY2tncm91bmQuY29s b3I7aWYodmI9PW51bGwpdmI9aWIuY29sb3I7dmFyIHdiPSd0b3A6Jyt0YisncHg7 bGVmdDonK3ViKydweDsnO2ooJzxkaXYgY2xhc3M9InBpZUxhYmVsQmFja2dyb3Vu ZCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3dpZHRoOicrc2Iud2lkdGgoKSsn cHg7aGVpZ2h0Oicrc2IuaGVpZ2h0KCkrJ3B4Oycrd2IrJ2JhY2tncm91bmQtY29s b3I6Jyt2YisnOyI+IDwvZGl2PicpLmluc2VydEJlZm9yZShzYikuY3NzKCdvcGFj aXR5JyxsLnNlcmllcy5waWUubGFiZWwuYmFja2dyb3VuZC5vcGFjaXR5KTt9fX19 fWZ1bmN0aW9uIGxhKGkpe2lmKGwuc2VyaWVzLnBpZS5pbm5lclJhZGl1cz4wKXtp LnNhdmUoKTtpbm5lclJhZGl1cz1sLnNlcmllcy5waWUuaW5uZXJSYWRpdXM+MT9s

LnNlcmllcy5waWUuaW5uZXJSYWRpdXM6cCpsLnNlcmllcy5waWUuaW5uZXJSYWRp dXM7aS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249J2Rlc3RpbmF0aW9uLW91dCc7 aS5iZWdpblBhdGgoKTtpLmZpbGxTdHlsZT1sLnNlcmllcy5waWUuc3Ryb2tlLmNv bG9yO2kuYXJjKDAsMCxpbm5lclJhZGl1cywwLE1hdGguUEkqMixmYWxzZSk7aS5m aWxsKCk7aS5jbG9zZVBhdGgoKTtpLnJlc3RvcmUoKTtpLnNhdmUoKTtpLmJlZ2lu UGF0aCgpO2kuc3Ryb2tlU3R5bGU9bC5zZXJpZXMucGllLnN0cm9rZS5jb2xvcjtp LmFyYygwLDAsaW5uZXJSYWRpdXMsMCxNYXRoLlBJKjIsZmFsc2UpO2kuc3Ryb2tl KCk7aS5jbG9zZVBhdGgoKTtpLnJlc3RvcmUoKTt9fWZ1bmN0aW9uIG1hKGkseCl7 Zm9yKHZhciB5PWZhbHNlLHZhPS0xLHdhPWkubGVuZ3RoLHhhPXdhLTE7Kyt2YTx3 YTt4YT12YSkoKGlbdmFdWzFdPD14WzFdJiZ4WzFdPGlbeGFdWzFdKXx8KGlbeGFd WzFdPD14WzFdJiZ4WzFdPGlbdmFdWzFdKSkmJih4WzBdPChpW3hhXVswXS1pW3Zh XVswXSkqKHhbMV0taVt2YV1bMV0pLyhpW3hhXVsxXS1pW3ZhXVsxXSkraVt2YV1b MF0pJiYoeT0heSk7cmV0dXJuIHk7fWZ1bmN0aW9uIG5hKGksdmEpe3ZhciB3YT1t LmdldERhdGEoKSx4YT1tLmdldE9wdGlvbnMoKSx5YT14YS5zZXJpZXMucGllLnJh ZGl1cz4xP3hhLnNlcmllcy5waWUucmFkaXVzOnAqeGEuc2VyaWVzLnBpZS5yYWRp dXM7Zm9yKHZhciB6YT0wO3phPHdhLmxlbmd0aDsrK3phKXt2YXIgYWI9d2FbemFd O2lmKGFiLnBpZS5zaG93KXtjdHguc2F2ZSgpO2N0eC5iZWdpblBhdGgoKTtjdHgu bW92ZVRvKDAsMCk7Y3R4LmFyYygwLDAseWEsYWIuc3RhcnRBbmdsZSxhYi5zdGFy dEFuZ2xlK2FiLmFuZ2xlLGZhbHNlKTtjdHguY2xvc2VQYXRoKCk7eD1pLXE7eT12 YS1yO2lmKGN0eC5pc1BvaW50SW5QYXRoKXtpZihjdHguaXNQb2ludEluUGF0aChp LXEsdmEtcikpe2N0eC5yZXN0b3JlKCk7cmV0dXJuIHtkYXRhcG9pbnQ6W2FiLnBl cmNlbnQsYWIuZGF0YV0sZGF0YUluZGV4OjAsc2VyaWVzOmFiLHNlcmllc0luZGV4 OnphfTt9fWVsc2V7cDFYPSh5YSpNYXRoLmNvcyhhYi5zdGFydEFuZ2xlKSk7cDFZ PSh5YSpNYXRoLnNpbihhYi5zdGFydEFuZ2xlKSk7cDJYPSh5YSpNYXRoLmNvcyhh Yi5zdGFydEFuZ2xlKyhhYi5hbmdsZS80KSkpO3AyWT0oeWEqTWF0aC5zaW4oYWIu c3RhcnRBbmdsZSsoYWIuYW5nbGUvNCkpKTtwM1g9KHlhKk1hdGguY29zKGFiLnN0 YXJ0QW5nbGUrKGFiLmFuZ2xlLzIpKSk7cDNZPSh5YSpNYXRoLnNpbihhYi5zdGFy dEFuZ2xlKyhhYi5hbmdsZS8yKSkpO3A0WD0oeWEqTWF0aC5jb3MoYWIuc3RhcnRB bmdsZSsoYWIuYW5nbGUvMS41KSkpO3A0WT0oeWEqTWF0aC5zaW4oYWIuc3RhcnRB bmdsZSsoYWIuYW5nbGUvMS41KSkpO3A1WD0oeWEqTWF0aC5jb3MoYWIuc3RhcnRB bmdsZSthYi5hbmdsZSkpO3A1WT0oeWEqTWF0aC5zaW4oYWIuc3RhcnRBbmdsZSth Yi5hbmdsZSkpO2FyclBvbHk9W1swLDBdLFtwMVgscDFZXSxbcDJYLHAyWV0sW3Az WCxwM1ldLFtwNFgscDRZXSxbcDVYLHA1WV1dO2FyclBvaW50PVt4LHldO2lmKG1h KGFyclBvbHksYXJyUG9pbnQpKXtjdHgucmVzdG9yZSgpO3JldHVybiB7ZGF0YXBv aW50OlthYi5wZXJjZW50LGFiLmRhdGFdLGRhdGFJbmRleDowLHNlcmllczphYixz ZXJpZXNJbmRleDp6YX07fX1jdHgucmVzdG9yZSgpO319cmV0dXJuIG51bGw7fWZ1 bmN0aW9uIG9hKGkpe3FhKCdwbG90aG92ZXInLGkpO31mdW5jdGlvbiBwYShpKXtx YSgncGxvdGNsaWNrJyxpKTt9ZnVuY3Rpb24gcWEoaSx4KXt2YXIgeT1tLm9mZnNl dCgpLHZhPXBhcnNlSW50KHgucGFnZVgteS5sZWZ0KSx3YT1wYXJzZUludCh4LnBh Z2VZLXkudG9wKSx4YT1uYSh2YSx3YSk7aWYobC5ncmlkLmF1dG9IaWdobGlnaHQp e2Zvcih2YXIgeWE9MDt5YTxiYS5sZW5ndGg7Kyt5YSl7dmFyIHphPWJhW3lhXTtp Zih6YS5hdXRvPT1pJiYhKHhhJiZ6YS5zZXJpZXM9PXhhLnNlcmllcykpc2EoemEu c2VyaWVzKTt9aWYoeGEpcmEoeGEuc2VyaWVzLGkpO312YXIgYWI9e3BhZ2VYOngu cGFnZVgscGFnZVk6eC5wYWdlWX07by50cmlnZ2VyKGksW2FiLHhhXSk7fWZ1bmN0 aW9uIHJhKGkseCl7aWYodHlwZW9mIGk9PSJudW1iZXIiKWk9c2VyaWVzW2ldO3Zh ciB5PXRhKGkpO2lmKHk9PS0xKXtiYS5wdXNoKHtzZXJpZXM6aSxhdXRvOnh9KTtt LnRyaWdnZXJSZWRyYXdPdmVybGF5KCk7fWVsc2UgaWYoIXgpYmFbeV0uYXV0bz1m YWxzZTt9ZnVuY3Rpb24gc2EoaSl7aWYoaT09bnVsbCl7YmE9W107bS50cmlnZ2Vy UmVkcmF3T3ZlcmxheSgpO31pZih0eXBlb2YgaT09Im51bWJlciIpaT1zZXJpZXNb aV07dmFyIHg9dGEoaSk7aWYoeCE9LTEpe2JhLnNwbGljZSh4LDEpO20udHJpZ2dl clJlZHJhd092ZXJsYXkoKTt9fWZ1bmN0aW9uIHRhKGkpe2Zvcih2YXIgeD0wO3g8 YmEubGVuZ3RoOysreCl7dmFyIHk9YmFbeF07aWYoeS5zZXJpZXM9PWkpcmV0dXJu IHg7fXJldHVybiAtMTt9ZnVuY3Rpb24gdWEoeCx5KXt2YXIgdmE9eC5nZXRPcHRp b25zKCksd2E9dmEuc2VyaWVzLnBpZS5yYWRpdXM+MT92YS5zZXJpZXMucGllLnJh ZGl1czpwKnZhLnNlcmllcy5waWUucmFkaXVzO3kuc2F2ZSgpO3kudHJhbnNsYXRl KHEscik7eS5zY2FsZSgxLHZhLnNlcmllcy5waWUudGlsdCk7Zm9yKGk9MDtpPGJh Lmxlbmd0aDsrK2kpeGEoYmFbaV0uc2VyaWVzKTtsYSh5KTt5LnJlc3RvcmUoKTtm dW5jdGlvbiB4YShpKXtpZihpLmFuZ2xlPDApcmV0dXJuO3kuZmlsbFN0eWxlPSJy Z2JhKDI1NSwgMjU1LCAyNTUsICIrdmEuc2VyaWVzLnBpZS5oaWdobGlnaHQub3Bh Y2l0eSsiKSI7eS5iZWdpblBhdGgoKTtpZihNYXRoLmFicyhpLmFuZ2xlLU1hdGgu

UEkqMik+MWUtMDkpeS5tb3ZlVG8oMCwwKTt5LmFyYygwLDAsd2EsaS5zdGFydEFu Z2xlLGkuc3RhcnRBbmdsZStpLmFuZ2xlLGZhbHNlKTt5LmNsb3NlUGF0aCgpO3ku ZmlsbCgpO319fXZhciBsPXtzZXJpZXM6e3BpZTp7c2hvdzpmYWxzZSxyYWRpdXM6 J2F1dG8nLGlubmVyUmFkaXVzOjAsc3RhcnRBbmdsZTozLzIsdGlsdDoxLG9mZnNl dDp7dG9wOjAsbGVmdDonYXV0byd9LHN0cm9rZTp7Y29sb3I6JyNGRkYnLHdpZHRo OjF9LGxhYmVsOntzaG93OidhdXRvJyxmb3JtYXR0ZXI6ZnVuY3Rpb24oaSxtKXty ZXR1cm4gJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZTp4LXNtYWxsO3RleHQtYWxpZ246 Y2VudGVyO3BhZGRpbmc6MnB4O2NvbG9yOicrbS5jb2xvcisnOyI+JytpKyc8YnIv PicrTWF0aC5yb3VuZChtLnBlcmNlbnQpKyclPC9kaXY+Jzt9LHJhZGl1czoxLGJh Y2tncm91bmQ6e2NvbG9yOm51bGwsb3BhY2l0eTowfSx0aHJlc2hvbGQ6MH0sY29t YmluZTp7dGhyZXNob2xkOi0xLGNvbG9yOm51bGwsbGFiZWw6J090aGVyJ30saGln aGxpZ2h0OntvcGFjaXR5Oi41fX19fTtoLnBsb3QucGx1Z2lucy5wdXNoKHtpbml0 Omssb3B0aW9uczpsLG5hbWU6InBpZSIsdmVyc2lvbjoiMS4wIn0pO30pKGcpO30p OwpfX2QoImluc2lnaHRzLXZpZXctZ3JhcGgtc3R5bGVzIixbImluc2lnaHRzLWRh dGUtdXRpbHMiLCJpbnNpZ2h0cy1jb25zdGFudHMiLCJpbnNpZ2h0cy1udW1iZXIt dXRpbHMiLCJmbG90LXBpZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCdpbnNpZ2h0cy1kYXRlLXV0aWxzJykuRGF0ZUZvcm1hdHRlcixoPWIoJ2luc2ln aHRzLWRhdGUtdXRpbHMnKS5taWRuaWdodHNJblJhbmdlLGk9YignaW5zaWdodHMt Y29uc3RhbnRzJykuSW5zaWdodHNDb25zdGFudHMsaj1iKCdpbnNpZ2h0cy1udW1i ZXItdXRpbHMnKS5OdW1iZXJGb3JtYXR0ZXIsaz17eUF4aXNUaWNrc0dlbmVyYXRv cjpmdW5jdGlvbih0KXt2YXIgdT0yO2lmKHQubWF4PnUpe3ZhciB2PWoubWFnbml0 dWRlKHQubWF4KTt1PU1hdGguY2VpbCh0Lm1heC9NYXRoLnBvdygxMCx2KSkqTWF0 aC5wb3coMTAsdik7fWlmKHUlMj09MSl1Kys7cmV0dXJuIFtbMCwnJ10sW3UvMixq LmFiYnJldkludCh1LzIpXSxbdSxqLmFiYnJldkludCh1KV1dO30sb3B0aW9uczpm dW5jdGlvbigpe3JldHVybiB7Z3JpZDp7Ym9yZGVyV2lkdGg6MSxob3ZlcmFibGU6 dHJ1ZSxhdXRvSGlnaGxpZ2h0OnRydWUsbW91c2VBY3RpdmVSYWRpdXM6NX0seWF4 aXM6e21pbjowLHRpY2tzOmsueUF4aXNUaWNrc0dlbmVyYXRvcn0sc2hhZG93U2l6 ZTowfTt9fSxsPXtvcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHtsaW5lczp7c2hv dzp0cnVlLGZpbGw6LjF9fTt9fSxtPXtvcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJu IHtsaW5lczp7c2hvdzp0cnVlfX07fX0sbj17b3B0aW9uczpmdW5jdGlvbigpe3Jl dHVybiB7cG9pbnRzOntzaG93OnRydWUscmFkaXVzOjIsZmlsbDp0cnVlLGZpbGxD b2xvcjpmYWxzZX19O319LG89e29wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4ge2Jh cnM6e3Nob3c6dHJ1ZSxhbGlnbjonY2VudGVyJyxsaW5lV2lkdGg6MCxmaWxsOnRy dWUsZmlsbENvbG9yOntjb2xvcnM6W3tvcGFjaXR5OjF9XX0sYmFyV2lkdGg6Ljc1 fX07fX0scD17b3B0aW9uczpmdW5jdGlvbigpe2IoJ2Zsb3QtcGllJyk7cmV0dXJu IHtzZXJpZXM6e3BpZTp7c2hvdzp0cnVlfX19O319LHE9e29wdGlvbnM6ZnVuY3Rp b24oKXt2YXIgdD1vLm9wdGlvbnMoKS5iYXJzO3QuYmFyV2lkdGg9Ljc1KmkuTVNf UEVSX0RBWTtyZXR1cm4ge2JhcnM6dH07fX0scj17dGlja1NpemU6ZnVuY3Rpb24o dCl7cmV0dXJuIHQ+aS5USUNLX1NJWkVfVEhSRVNIT0xEP2kuVElDS19TSVpFX0xP Tkc6aS5USUNLX1NJWkVfU0hPUlQ7fSx4QXhpc1RpY2tzR2VuZXJhdG9yOmZ1bmN0 aW9uKHQpe3ZhciB1PVtdLHY9TWF0aC5yb3VuZCgodC5tYXgtdC5taW4pL2kuTVNf UEVSX0RBWSkrMSx3PXIudGlja1NpemUodikseD1udWxsLHk9aCh0Lm1pbix0Lm1h eCk7Zm9yKHZhciB6PTA7ejx5Lmxlbmd0aDt6Kyspe3ZhciBhYT1uZXcgRGF0ZSh5 W3pdK2kuZ2V0UFRPZmZzZXQoeVt6XSkpLmdldFVUQ0RhdGUoKTtpZih4PT1udWxs JiZhYSV3PT09MCl4PXo7aWYoeCE9bnVsbCYmKHoteCkldz09PTApdS5wdXNoKHlb el0pO31yZXR1cm4gdTt9LG9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4ge3hheGlz Onttb2RlOid0aW1lJyx0aWNrRm9ybWF0dGVyOmcuYWJicmV2TW9udGhEYXRlRnJv bVRpbWVzdGFtcCx0aWNrczpyLnhBeGlzVGlja3NHZW5lcmF0b3IsdGlja0xlbmd0 aDo1fX07fX0scz17ZnJlcXVlbmN5VGlja3NHZW5lcmF0b3I6ZnVuY3Rpb24odCl7 dmFyIHU9W107Zm9yKHZhciB2PTA7djxpLkZyZXF1ZW5jeUJ1Y2tldHMubGVuZ3Ro O3YrKyl1LnB1c2goW3YsaS5GcmVxdWVuY3lCdWNrZXRzW3ZdXSk7cmV0dXJuIHU7 fSxvcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHt4YXhpczp7dGlja3M6cy5mcmVx dWVuY3lUaWNrc0dlbmVyYXRvcixtaW46LS41LHRpY2tMZW5ndGg6MCxtYXg6aS5G cmVxdWVuY3lCdWNrZXRzLmxlbmd0aH19O319O2YuQmFzZUdyYXBoPWs7Zi5BcmVh R3JhcGg9bDtmLkxpbmVHcmFwaD1tO2YuQmFyR3JhcGg9bztmLlBvaW50R3JhcGg9 bjtmLlBpZUNoYXJ0PXA7Zi5UaW1lU2VyaWVzPXI7Zi5UaW1lU2VyaWVzQmFyR3Jh cGg9cTtmLlJlYWNoRnJlcXVlbmN5R3JhcGg9czt9KTsKX19kKCJpbnNpZ2h0cy12 aWV3LWdyYXBoLXV0aWxzIixbInVraS11dGlscyIsImluc2lnaHRzLW51bWJlci11 dGlscyIsImluc2lnaHRzLWRhdGUtdXRpbHMiLCJpbnNpZ2h0cy1jb25zdGFudHMi LCJ0eCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCd1a2ktdXRpbHMn

KSxoPWIoJ2luc2lnaHRzLW51bWJlci11dGlscycpLk51bWJlckZvcm1hdHRlcixp PWIoJ2luc2lnaHRzLWRhdGUtdXRpbHMnKS5EYXRlRm9ybWF0dGVyLGo9YignaW5z aWdodHMtY29uc3RhbnRzJykuSW5zaWdodHNDb25zdGFudHMsaz1iKCd0eCcpLGw9 e21haW46ZnVuY3Rpb24obSl7dmFyIG49dGhpcy5fZ2V0SXRlbVNlcmllc0luZGV4 KG0pLG89bS5kYXRhcG9pbnRbMF0scD1uPT09MD9tLmRhdGFwb2ludFsxXTp0aGlz LnNlcmllcygpW25dW20uZGF0YUluZGV4XVsxXSxxPWguaW50ZWdlcihwKTtpZihu PT09MCl7cmV0dXJuIChxPT0xPyIxIEtpcmltYW4iOmsuXygie251bX0gS2lyaW1h biIse251bTpxfSkpKyc8YnIvPicraS5zaG9ydERhdGUobmV3IERhdGUobykpO31l bHNlIGlmKG49PTEpe3JldHVybiBsLmZvcm1hdFBUQVQobyxxKTt9ZWxzZSBpZihu PT0yKXtyZXR1cm4gbC5mb3JtYXRSZWFjaChvLHEpO31lbHNlIHJldHVybiBudWxs O30scmVhY2hBbmRQVEFUOmZ1bmN0aW9uKG0pe3ZhciBuPXRoaXMuX2dldEl0ZW1T ZXJpZXNJbmRleChtKSxvPW0uZGF0YXBvaW50WzBdLHA9dGhpcy5zZXJpZXMoKVtu XVttLmRhdGFJbmRleF1bMV0scT1oLmludGVnZXIocCk7aWYobj09PTApe3JldHVy biBsLmZvcm1hdFBUQVQobyxxKTt9ZWxzZSBpZihuPT09MSlyZXR1cm4gbC5mb3Jt YXRSZWFjaChvLHEpO3JldHVybiBudWxsO30sZm9ybWF0UFRBVDpmdW5jdGlvbiht LG4pe3JldHVybiAobj09MT8iMSBPcmFuZyB5YW5nIE1lbWJpY2FyYWthbiBJbmki OmsuXygie251bX0gT3JhbmcgeWFuZyBNZW1iaWNhcmFrYW4gSW5pIix7bnVtOm59 KSkrJzxici8+JytpLndlZWtSYW5nZVN0cmluZyhtKTt9LGZvcm1hdFJlYWNoOmZ1 bmN0aW9uKG0sbil7cmV0dXJuIChuPT0xPyIxIE9yYW5nIHlhbmcgRGlqYW5na2F1 IjprLl8oIntudW19IE9yYW5nIHlhbmcgRGlqYW5na2F1Iix7bnVtOm59KSkrJzxi ci8+JytpLndlZWtSYW5nZVN0cmluZyhtKTt9LGxpa2VzOmZ1bmN0aW9uKG0pe3Zh ciBuPXRoaXMuZ2V0T3JpZ2luYWxTZXJpZXNJbmRleChtLnNlcmllc0luZGV4KSxv PWkuc2hvcnREYXRlKG5ldyBEYXRlKG0uZGF0YXBvaW50WzBdKSkscD1oLmludGVn ZXIobS5kYXRhcG9pbnRbMV0pO2lmKG49PT0wKXtyZXR1cm4gKHA9PTE/IjEgU3Vr YSBCYXJ1IjprLl8oIntudW19IFN1a2EgQmFydSIse251bTpwfSkpKyc8YnIvPicr bzt9ZWxzZSBpZihuPT0xKXtyZXR1cm4gKHA9PTE/IjEgVGlkYWsgU3VrYSI6ay5f KCJ7bnVtfSBUaWRhayBTdWthIix7bnVtOnB9KSkrJzxici8+JytvO31lbHNlIHJl dHVybiBudWxsO30sc3Vic2NyaWJlczpmdW5jdGlvbihtKXt2YXIgbj10aGlzLmdl dE9yaWdpbmFsU2VyaWVzSW5kZXgobS5zZXJpZXNJbmRleCksbz1pLnNob3J0RGF0 ZShuZXcgRGF0ZShtLmRhdGFwb2ludFswXSkpLHA9aC5pbnRlZ2VyKG0uZGF0YXBv aW50WzFdKTtpZihuPT09MCl7cmV0dXJuIChwPT0xPyIxIFBlbGFuZ2dhbiBCYXJ1 IjprLl8oIntudW19IFBlbGFuZ2dhbiBCYXJ1Iix7bnVtOnB9KSkrJzxici8+Jytv O31lbHNlIGlmKG49PTEpe3JldHVybiAocD09MT8iMSBCZXJoZW50aSBCZXJsYW5n Z2FuYW4iOmsuXygie251bX0gQmVyaGVudGkgYmVybGFuZ2dhbmFuIix7bnVtOnB9 KSkrJzxici8+JytvO31lbHNlIHJldHVybiBudWxsO30scmVhY2g6ZnVuY3Rpb24o bSl7dmFyIG49dGhpcy5fcmVhY2hHcmFwaC5nZXRPcmlnaW5hbFNlcmllc0luZGV4 KG0uc2VyaWVzSW5kZXgpLG89dGhpcy5fcmVhY2hHcmFwaC5fbWV0cmljc1tuXS5s YWJlbDtyZXR1cm4gbC5wZW9wbGVUaXAobSwnICgnK28rJyknKTt9LHJlYWNoRnJl cXVlbmN5OmZ1bmN0aW9uKG0pe3ZhciBuPWouRnJlcXVlbmN5QnVja2V0c1ttLmRh dGFwb2ludFswXV0sbz1oLmludGVnZXIobS5kYXRhcG9pbnRbMV0pLHA7aWYobz09 MSl7aWYobj09MSl7cD0iMSBPcmFuZyBEaWphbmdrYXUgMSBLYWxpIjt9ZWxzZSBw PWsuXygiMSBPcmFuZyBEaWphbmdrYXUge2ZyZXF9IEthbGkiLHtmcmVxOm59KTt9 ZWxzZSBpZihuPT0xKXtwPWsuXygie251bX0gT3JhbmcgeWFuZyBEaWphbmdrYXUg MSBLYWxpIix7bnVtOm99KTt9ZWxzZSBwPWsuXygie251bX0gT3JhbmcgeWFuZyBE aWphbmdrYXUge2ZyZXF9IEthbGkiLHtudW06byxmcmVxOm59KTtyZXR1cm4gcCsn PGJyLz4nK2kud2Vla1JhbmdlU3RyaW5nKHRoaXMuZnJlcXVlbmN5QnJlYWtkb3du RGF0ZSgpKTt9LHBhZ2VWaWV3czpmdW5jdGlvbihtKXt2YXIgbj10aGlzLmdldE9y aWdpbmFsU2VyaWVzSW5kZXgobS5zZXJpZXNJbmRleCksbz1pLnNob3J0RGF0ZShu ZXcgRGF0ZShtLmRhdGFwb2ludFswXSkpLHA9aC5pbnRlZ2VyKG0uZGF0YXBvaW50 WzFdKTtpZihuPT09MCl7cmV0dXJuIChwPT0xPyIxIFRheWFuZ2FuIEhhbGFtYW4i OmsuXygie251bX0gVGF5YW5nYW4gSGFsYW1hbiIse251bTpwfSkpKyc8YnIvPicr bzt9ZWxzZSBpZihuPT0xKXtyZXR1cm4gKHA9PTE/IjEgVGF5YW5nYW4gSGFsYW1h biBVbmlrIjprLl8oIntudW19IFRhbXBpbGFuIEhhbGFtYW4gVW5payIse251bTpw fSkpKyc8YnIvPicrbzt9ZWxzZSByZXR1cm4gbnVsbDt9LHRhbGtpbmc6ZnVuY3Rp b24obSl7cmV0dXJuIGwucGVvcGxlVGlwKG0pO30sdmlyYWxSZWFjaDpmdW5jdGlv bihtKXtyZXR1cm4gbC5wZW9wbGVUaXAobSk7fSxwZW9wbGVUaXA6ZnVuY3Rpb24o bSxuKXt2YXIgbz1oLmludGVnZXIobS5kYXRhcG9pbnRbMV0pLHA9bz09MT8iMSBP cmFuZyI6ay5fKCJ7bnVtfSBPcmFuZyIse251bTpvfSk7cmV0dXJuIHArKG58fCcn KSsnPGJyLz4nK2kud2Vla1JhbmdlU3RyaW5nKG0uZGF0YXBvaW50WzBdKTt9LGNo ZWNraW5zVHlwZTpmdW5jdGlvbihtKXt2YXIgbj1oLmludGVnZXIobS5kYXRhcG9p

bnRbMV0pO3JldHVybiAobj09MT8iMSBkYWZ0YXItbWFzdWsiOmsuXygie251bX0g ZGFmdGFyLW1hc3VrIix7bnVtOm59KSkrJzxici8+JytpLndlZWtSYW5nZVN0cmlu ZyhtLmRhdGFwb2ludFswXSk7fX07Zi5Ub29sdGlwRm9ybWF0dGVycz1sO30pOwpf X2QoImluc2lnaHRzLXZpZXctaG92ZXJhYmxlLWdyYXBoIixbInVraS1mdW5jdGlv biIsInVraS12aWV3IiwidWtpLWJ1aWxkIiwidWtpLWVudiIsInVraS12aWV3LWNv bnRhaW5lciIsIkRvTm90VXNlSlF1ZXJ5MTciLCJpbnNpZ2h0cy12aWV3LWJhc2Ut Z3JhcGgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YigndWtpLWZ1bmN0 aW9uJyksaD1iKCd1a2ktdmlldycpLGk9YigndWtpLWJ1aWxkJyksaj1iKCd1a2kt ZW52JykuZG9jLGs9YigndWtpLXZpZXctY29udGFpbmVyJykuQ29udGFpbmVyLGw9 YignRG9Ob3RVc2VKUXVlcnkxNycpLG09YignaW5zaWdodHMtdmlldy1iYXNlLWdy YXBoJykuQmFzZUdyYXBoLG49aC5uZXdDbGFzcygnaW5zaWdodHMuSG92ZXJhYmxl R3JhcGgnLG0se3Rvb2x0aXBGb3JtYXR0ZXI6Zy5uZXdQcm9wKCd0b29sdGlwRm9y bWF0dGVyJyxmdW5jdGlvbihvKXt0aGlzLl90b29sdGlwRm9ybWF0dGVyPW8uYmlu ZCh0aGlzKTt0aGlzLl9saXN0ZW5Ub1Bsb3RIb3ZlcigpO30pLF9saXN0ZW5Ub1Bs b3RIb3ZlcjpmdW5jdGlvbigpe2wodGhpcy5kb20oKSkuYmluZCgncGxvdGhvdmVy Jyx0aGlzLl9vbkhvdmVyLmJpbmQodGhpcykpO30sX29uSG92ZXI6ZnVuY3Rpb24o byxwLHEpe3ZhciByPWwoJy5ncmFwaFRvb2x0aXAnKTtpZihxKXtpZighcnx8dGhp cy5fcHJldmlvdXNTZXJpZXNJbmRleCE9dGhpcy5fZ2V0SXRlbVNlcmllc0luZGV4 KHEpfHx0aGlzLl9wcmV2aW91c0RhdGFJbmRleCE9cS5kYXRhSW5kZXgpe3RoaXMu X3ByZXZpb3VzU2VyaWVzSW5kZXg9dGhpcy5fZ2V0SXRlbVNlcmllc0luZGV4KHEp O3RoaXMuX3ByZXZpb3VzRGF0YUluZGV4PXEuZGF0YUluZGV4O3IucmVtb3ZlKCk7 dGhpcy5fc2hvd1Rvb2x0aXAocSxwKTt9fWVsc2V7ci5yZW1vdmUoKTt0aGlzLl9w cmV2aW91c1Nlcmllc0luZGV4PW51bGw7dGhpcy5fcHJldmlvdXNEYXRhSW5kZXg9 bnVsbDt9fSxfc2hvd1Rvb2x0aXA6ZnVuY3Rpb24obyxwKXt2YXIgcT10aGlzLnRv b2x0aXBGb3JtYXR0ZXIoKShvKSxyPXRoaXMuX3Rvb2x0aXBDb29yZHMobyxwKSxz PWkoW3t2aWV3OmssY2xhc3NOYW1lOidncmFwaFRvb2x0aXAnLGNoaWxkVmlld3M6 W3t2aWV3OmssaW5pdDp7dGFnTmFtZTonc3Bhbid9LGFzOid0ZXh0JyxhZGRDbGFz czonZ3JhcGhUb29sdGlwVGV4dCcsaHRtbDpxfV0sc3R5bGU6e3RvcDpyLnkrJ3B4 JyxsZWZ0OnIueCsncHgnfX1dKTtqLmJvZHkuYXBwZW5kQ2hpbGQocy5kb20oKSk7 fSxfdG9vbHRpcENvb3JkczpmdW5jdGlvbihvLHApe3JldHVybiB7eDpvLnBhZ2VY P28ucGFnZVgrMTA6cC5wYWdlWCsxLHk6by5wYWdlWT9vLnBhZ2VZLTIwOnAucGFn ZVkrMX07fSxfZ2V0SXRlbVNlcmllc0luZGV4OmZ1bmN0aW9uKG8pe3JldHVybiBv LnNlcmllcy5zZXJpZXNJbmRleHx8by5zZXJpZXNJbmRleDt9fSk7Zi5Ib3ZlcmFi bGVHcmFwaD1uO30pOwpfX2QoImluc2lnaHRzLXZpZXctZ3JhcGgtd2l0aC1sZWdl bmQiLFsidWtpLWZ1bmN0aW9uIiwidWtpLWRvbSIsInVraS12aWV3IiwidWtpLWJ1 aWxkIiwidWtpLXV0aWxzIiwidWtpLXZpZXctY29udGFpbmVyIiwiaW5zaWdodHMt dmlldy1ob3ZlcmFibGUtZ3JhcGgiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YigndWtpLWZ1bmN0aW9uJyksaD1iKCd1a2ktZG9tJyksaT1iKCd1a2ktdmll dycpLGo9YigndWtpLWJ1aWxkJyksaz1iKCd1a2ktdXRpbHMnKSxsPWIoJ3VraS12 aWV3LWNvbnRhaW5lcicpLkNvbnRhaW5lcixtPWIoJ2luc2lnaHRzLXZpZXctaG92 ZXJhYmxlLWdyYXBoJykuSG92ZXJhYmxlR3JhcGgsbj1pLm5ld0NsYXNzKCdpbnNp Z2h0cy5HcmFwaFdpdGhMZWdlbmQnLGwse19jcmVhdGVEb206ZnVuY3Rpb24obyl7 dGhpcy5fZG9tPWguY3JlYXRlRWxlbWVudCgnZGl2Jyk7dmFyIHA9aihbe3ZpZXc6 bCxhZGRDbGFzczonZ3JhcGgtbGVnZW5kJyxhczonbGVnZW5kJ30se3ZpZXc6by5i YXNlR3JhcGh8fG0sYXM6J2dyYXBoJ31dKTtwLmFwcGVuZFRvKHRoaXMpO3RoaXMu X2xlZ2VuZFZpZXc9cC52aWV3KCdsZWdlbmQnKTt0aGlzLl9ncmFwaFZpZXc9cC52 aWV3KCdncmFwaCcpO3RoaXMuX2dyYXBoVmlldy5sZWdlbmRDb250YWluZXIodGhp cy5fbGVnZW5kVmlldyk7fSxwbG90OmcubmV3RGVsZWdhdGVDYWxsKCdfZ3JhcGhW aWV3JywncGxvdCcpLGdyYXBoVmlldzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9n cmFwaFZpZXc7fX0pO2cuZGVsZWdhdGVQcm9wKG4ucHJvdG90eXBlLFsnY29sb3Jz JywnbGVnZW5kJywnc2VyaWVzJywnbWl4aW5zJywnb3B0aW9ucycsJ2FkZE9wdGlv bnMnLCdsb2FkaW5nJywnbm9Db2x1bW5zTGVnZW5kJywnbGVnZW5kU3R5bGUnLCd0 b29sdGlwRm9ybWF0dGVyJywnbWF4UG9pbnRzJ10sJ19ncmFwaFZpZXcnKTtmLkdy YXBoV2l0aExlZ2VuZD1uO30pOwovKioKICogQHByb3ZpZGVzTW9kdWxlIGZsb3Qt c3RhY2sKICogQG9wdGlvbiBwcmVzZXJ2ZS1oZWFkZXIKICoKICogQ29weXJpZ2h0 IChjKSAyMDA3LTIwMDkgSU9MQSBhbmQgT2xlIExhdXJzZW4KICoKICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24KICogb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24KICogZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAogKiByZXN0cmljdGlv

biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVz ZSwKICogY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n CiAqIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCiAqIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICogRVhQUkVTUyBPUiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT CiAqIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5ECiAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCiAqIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAogKiBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCiAqCiAqIEZsb3QgcGx1Z2luIGZvciBzdGFja2luZyBk YXRhIHNldHMsIGkuZS4gcHV0dGluZyB0aGVtIG9uIHRvcCBvZiBlYWNoCiAqIG90 aGVyLCBmb3IgYWNjdW11bGF0aXZlIGdyYXBocy4KICoKICogVGhlIHBsdWdpbiBh c3N1bWVzIHRoZSBkYXRhIGlzIHNvcnRlZCBvbiB4IChvciB5IGlmIHN0YWNraW5n CiAqIGhvcml6b250YWxseSkuIEZvciBsaW5lIGNoYXJ0cywgaXQgaXMgYXNzdW1l ZCB0aGF0IGlmIGEgbGluZSBoYXMgYW4KICogdW5kZWZpbmVkIGdhcCAoZnJvbSBh IG51bGwgcG9pbnQpLCB0aGVuIHRoZSBsaW5lIGFib3ZlIGl0IHNob3VsZCBoYXZl CiAqIHRoZSBzYW1lIGdhcCAtIGluc2VydCB6ZXJvcyBpbnN0ZWFkIG9mICJudWxs IiBpZiB5b3Ugd2FudCBhbm90aGVyCiAqIGJlaGF2aW91ci4gVGhpcyBhbHNvIGhv bGRzIGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgY2hhcnQuIE5vdGUKICog dGhhdCBzdGFja2luZyBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFs dWVzIGluIG1vc3QgaW5zdGFuY2VzCiAqIGRvZXNuJ3QgbWFrZSBzZW5zZSAoc28g aXQgbG9va3Mgd2VpcmQpLgogKgogKiBUd28gb3IgbW9yZSBzZXJpZXMgYXJlIHN0 YWNrZWQgd2hlbiB0aGVpciAic3RhY2siIGF0dHJpYnV0ZSBpcyBzZXQgdG8KICog dGhlIHNhbWUga2V5ICh3aGljaCBjYW4gYmUgYW55IG51bWJlciBvciBzdHJpbmcg b3IganVzdCAidHJ1ZSIpLiBUbwogKiBzcGVjaWZ5IHRoZSBkZWZhdWx0IHN0YWNr LCB5b3UgY2FuIHNldAogKgogKiAgIHNlcmllczogewogKiAgICAgc3RhY2s6IG51 bGwgb3IgdHJ1ZSBvciBrZXkgKG51bWJlci9zdHJpbmcpCiAqICAgfQogKgogKiBv ciBzcGVjaWZ5IGl0IGZvciBhIHNwZWNpZmljIHNlcmllcwogKgogKiAgICQucGxv dCgkKCIjcGxhY2Vob2xkZXIiKSwgW3sgZGF0YTogWyAuLi4gXSwgc3RhY2s6IHRy dWUgfV0pCiAqCiAqIFRoZSBzdGFja2luZyBvcmRlciBpcyBkZXRlcm1pbmVkIGJ5 IHRoZSBvcmRlciBvZiB0aGUgZGF0YSBzZXJpZXMgaW4KICogdGhlIGFycmF5IChs YXRlciBzZXJpZXMgZW5kIHVwIG9uIHRvcCBvZiB0aGUgcHJldmlvdXMpLgogKgog KiBJbnRlcm5hbGx5LCB0aGUgcGx1Z2luIG1vZGlmaWVzIHRoZSBkYXRhcG9pbnRz IGluIGVhY2ggc2VyaWVzLCBhZGRpbmcKICogYW4gb2Zmc2V0IHRvIHRoZSB5IHZh bHVlLiBGb3IgbGluZSBzZXJpZXMsIGV4dHJhIGRhdGEgcG9pbnRzIGFyZQogKiBp bnNlcnRlZCB0aHJvdWdoIGludGVycG9sYXRpb24uIElmIHRoZXJlJ3MgYSBzZWNv bmQgeSB2YWx1ZSwgaXQncyBhbHNvCiAqIGFkanVzdGVkIChlLmcgZm9yIGJhciBj aGFydHMgb3IgZmlsbGVkIGFyZWFzKS4KICovX19kKCJmbG90LXN0YWNrIixbImZs b3QiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignZmxvdCcpOyhmdW5j dGlvbigpe3ZhciBoPXtzZXJpZXM6e3N0YWNrOm51bGx9fTtmdW5jdGlvbiBpKGop e2Z1bmN0aW9uIGsobSxuKXt2YXIgbz1udWxsO2Zvcih2YXIgcD0wO3A8bi5sZW5n dGg7KytwKXtpZihtPT1uW3BdKWJyZWFrO2lmKG5bcF0uc3RhY2s9PW0uc3RhY2sp bz1uW3BdO31yZXR1cm4gbzt9ZnVuY3Rpb24gbChuLG8scCl7aWYoby5zdGFjaz09 bnVsbClyZXR1cm47dmFyIHE9ayhvLG4uZ2V0RGF0YSgpKTtpZighcSlyZXR1cm47 dmFyIHI9cC5wb2ludHNpemUscz1wLnBvaW50cyx0PXEuZGF0YXBvaW50cy5wb2lu dHNpemUsdT1xLmRhdGFwb2ludHMucG9pbnRzLHY9W10sdyx4LHkseixhYSxiYSxj YT1vLmxpbmVzLnNob3csZGE9by5iYXJzLmhvcml6b250YWwsZWE9cj4yJiYoZGE/ cC5mb3JtYXRbMl0ueDpwLmZvcm1hdFsyXS55KSxmYT1jYSYmby5saW5lcy5zdGVw cyxnYT10cnVlLGhhPWRhPzE6MCxpYT1kYT8wOjEsamE9MCxrYT0wLGxhO3doaWxl KHRydWUpe2lmKGphPj1zLmxlbmd0aClicmVhaztsYT12Lmxlbmd0aDtpZihzW2ph XT09bnVsbCl7Zm9yKG09MDttPHI7KyttKXYucHVzaChzW2phK21dKTtqYSs9cjt9

ZWxzZSBpZihrYT49dS5sZW5ndGgpe2lmKCFjYSlmb3IobT0wO208cjsrK20pdi5w dXNoKHNbamErbV0pO2phKz1yO31lbHNlIGlmKHVba2FdPT1udWxsKXtmb3IobT0w O208cjsrK20pdi5wdXNoKG51bGwpO2dhPXRydWU7a2ErPXQ7fWVsc2V7dz1zW2ph K2hhXTt4PXNbamEraWFdO3o9dVtrYStoYV07YWE9dVtrYStpYV07YmE9MDtpZih3 PT16KXtmb3IobT0wO208cjsrK20pdi5wdXNoKHNbamErbV0pO3ZbbGEraWFdKz1h YTtiYT1hYTtqYSs9cjtrYSs9dDt9ZWxzZSBpZih3Pnope2lmKGNhJiZqYT4wJiZz W2phLXJdIT1udWxsKXt5PXgrKHNbamEtcitpYV0teCkqKHotdykvKHNbamEtcito YV0tdyk7di5wdXNoKHopO3YucHVzaCh5K2FhKTtmb3IobT0yO208cjsrK20pdi5w dXNoKHNbamErbV0pO2JhPWFhO31rYSs9dDt9ZWxzZXtpZihnYSYmY2Epe2phKz1y O2NvbnRpbnVlO31mb3IobT0wO208cjsrK20pdi5wdXNoKHNbamErbV0pO2lmKGNh JiZrYT4wJiZ1W2thLXRdIT1udWxsKWJhPWFhKyh1W2thLXQraWFdLWFhKSoody16 KS8odVtrYS10K2hhXS16KTt2W2xhK2lhXSs9YmE7amErPXI7fWdhPWZhbHNlO2lm KGxhIT12Lmxlbmd0aCYmZWEpdltsYSsyXSs9YmE7fWlmKGZhJiZsYSE9di5sZW5n dGgmJmxhPjAmJnZbbGFdIT1udWxsJiZ2W2xhXSE9dltsYS1yXSYmdltsYSsxXSE9 dltsYS1yKzFdKXtmb3IobT0wO208cjsrK20pdltsYStyK21dPXZbbGErbV07dlts YSsxXT12W2xhLXIrMV07fX1wLnBvaW50cz12O31qLmhvb2tzLnByb2Nlc3NEYXRh cG9pbnRzLnB1c2gobCk7fWcucGxvdC5wbHVnaW5zLnB1c2goe2luaXQ6aSxvcHRp b25zOmgsbmFtZTonc3RhY2snLHZlcnNpb246JzEuMid9KTt9KSgpO30pOwovKioK ICogQHByb3ZpZGVzTW9kdWxlIGZsb3QtYnViYmxlCiAqIEBvcHRpb24gcHJlc2Vy dmUtaGVhZGVyCiAqCiAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5IElPTEEgYW5k IE9sZSBMYXVyc2VuCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCiAqIG9idGFpbmluZyBhIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u CiAqIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQKICogcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsCiAqIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs CiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwogKiBjb25kaXRpb25zOgogKgogKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZQogKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsCiAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUwogKiBPRiBNRVJDSEFOVEFCSUxJVFks IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAogKiBOT05JTkZS SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVAogKiBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSIExJQUJJTElUWSwKICogV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCiAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IKICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKgogKiBG bG90IHBsdWdpbiBmb3IgYnViYmxlIGNoYXJ0aW5nCiAqCiAqIFRvIGFjdGl2YXRl IGJ1YmJsZXM6CiAqCiAqIHBsb3QgPSAkLnBsb3QoJCgiI3BsYWNlaG9sZGVyIiks IFsKICogLy8gZGF0YSBuZWVkcyB0byBiZSBpbiB0aGUgZm9ybSBbeCx5LHpdIHdo ZXJlIHogaXMgdGhlIHJhZGl1cyBvZiB0aGUgcG9pbnQKICogeyBkYXRhOiBbWzEs MiwxMF0sWzQsNiw4XSxbMywxLDRdXSwgY29sb3I6ICcjQTFGREZGJywgbGFiZWw6 ICdib29tJyB9CiAqIF0sCiAqIHsKICogICBzZXJpZXM6IHsKICogICAgIGJ1YmJs ZTogdHJ1ZSwgLy8gc2V0IHRoaXMgdG8gdHJ1ZSB0byBhY3RpdmF0ZSBidWJibGVz LCBvdGhlcndpc2UgeW91ciBkYXRhIHdpbGwgYmUgcGxvdHRlZCBhcyBwb2ludHMK ICogICAgIHBvaW50czogeyBzaG93OiB0cnVlIH0sIC8vIGJ1YmJsZXMgd2lsbCBv bmx5IHdvcmsgd2l0aCBwb2ludCBjaGFydHMsIHRoZSBwbHVnaW4gd2lsbCBOT1Qg YXR0ZW1wdCB0byBidWJibGUgYSBiYXIgY2hhcnQKICogICAgIGxpbmVzOiAgeyBz aG93OiB0cnVlIH0gLy8gdGhlIGJ1YmJsZSBwbHVnaW4gc3VwcG9ydHMgY29ubmVj dGluZyBidWJibGVzIGluIGEgc2VyaWVzIHdpdGggbGluZXMKICogICB9LAogKiB9 CiAqICk7CiAqL19fZCgiZmxvdC1idWJibGUiLFsiRG9Ob3RVc2VKUXVlcnkxNyIs ImZsb3QiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignRG9Ob3RVc2VK UXVlcnkxNycpLGg9YignZmxvdCcpOyhmdW5jdGlvbihpKXt2YXIgaj17c2VyaWVz OntidWJibGU6bnVsbH19O2Z1bmN0aW9uIGsobCl7ZnVuY3Rpb24gbSgpe2lmKHdp

bmRvdy5jb25zb2xlKWJhZ29maG9sZGluZy5hcHBseShjb25zb2xlLGFyZ3VtZW50 cyk7fWZ1bmN0aW9uIG4oZmEsZ2Epe2Z1bmN0aW9uIGhhKG5hLG9hLHBhLHFhLHJh LHNhLHRhLHVhKXt2YXIgdmE9bmEucG9pbnRzLHdhPW5hLnBvaW50c2l6ZTtmb3Io dmFyIHhhPTA7eGE8dmEubGVuZ3RoO3hhKz13YSl7dmFyIHlhPXZhW3hhXSx6YT12 YVt4YSsxXTtpZih5YT09bnVsbHx8eWE8c2EubWlufHx5YT5zYS5tYXh8fHphPHRh Lm1pbnx8emE+dGEubWF4KWNvbnRpbnVlO3ZhciBhYj14YS8yLG9hPXVhW2FiXVsy XTtnYS5iZWdpblBhdGgoKTt2YXIgYmI9bC5nZXRPcHRpb25zKCk7aWYoYmIuc2Vy aWVzLmJ1YmJsZV9vcHRpb25zJiZiYi5zZXJpZXMuYnViYmxlX29wdGlvbnMub2Nj dXBhbmN5KXtnYS5hcmMoc2EucDJjKHlhKSx0YS5wMmMoemEpKyhiYi5zZXJpZXMu YnViYmxlX29wdGlvbnMucmFkaXVzX29mZnNldC1vYSksb2EsMCxyYSxmYWxzZSk7 fWVsc2UgZ2EuYXJjKHNhLnAyYyh5YSksdGEucDJjKHphKStxYSxvYSwwLHJhLGZh bHNlKTtpZihwYSl7Z2EuZmlsbFN0eWxlPXBhO2dhLmZpbGwoKTt9Z2Euc3Ryb2tl KCk7fX1nYS5zYXZlKCk7dmFyIGlhPWwuZ2V0UGxvdE9mZnNldCgpO2dhLnRyYW5z bGF0ZShpYS5sZWZ0LGlhLnRvcCk7dmFyIGphPWZhLmxpbmVzLmxpbmVXaWR0aCxr YT1mYS5zaGFkb3dTaXplLGxhPWZhLnBvaW50cy5yYWRpdXM7aWYoamE+MCYma2E+ MCl7dmFyIG1hPWthLzI7Z2EubGluZVdpZHRoPW1hO2dhLnN0cm9rZVN0eWxlPSJy Z2JhKDAsMCwwLDAuMSkiO2hhKGZhLmRhdGFwb2ludHMsbGEsbnVsbCxtYSttYS8y LE1hdGguUEksZmEueGF4aXMsZmEueWF4aXMsZmEuZGF0YSk7Z2Euc3Ryb2tlU3R5 bGU9InJnYmEoMCwwLDAsMC4yKSI7aGEoZmEuZGF0YXBvaW50cyxsYSxudWxsLG1h LzIsTWF0aC5QSSxmYS54YXhpcyxmYS55YXhpcyxmYS5kYXRhKTt9Z2EubGluZVdp ZHRoPWphO2dhLnN0cm9rZVN0eWxlPWZhLmNvbG9yO2hhKGZhLmRhdGFwb2ludHMs bGEsbyhmYS5wb2ludHMsZmEuY29sb3IpLDAsMipNYXRoLlBJLGZhLnhheGlzLGZh LnlheGlzLGZhLmRhdGEpO2dhLnJlc3RvcmUoKTt9ZnVuY3Rpb24gbyhmYSxnYSxo YSxpYSl7dmFyIGphPWZhLmZpbGw7aWYoIWphKXJldHVybiBudWxsO2lmKGZhLmZp bGxDb2xvcilyZXR1cm4gcChnYSxoYSxpYSxnYSk7dmFyIGthPWkuY29sb3IucGFy c2UoZ2EpO2thLmE9dHlwZW9mIGphPT0ibnVtYmVyIj9qYTouNDtrYS5ub3JtYWxp emUoKTtyZXR1cm4ga2EudG9TdHJpbmcoKTt9ZnVuY3Rpb24gcChmYSxnYSxoYSxp YSl7aWYodHlwZW9mIGZhPT0ic3RyaW5nIil7cmV0dXJuIGZhO31lbHNle3ZhciBq YT1jdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCxoYSwwLGdhKTtmb3IodmFyIGth PTAsbGE9ZmEuY29sb3JzLmxlbmd0aDtrYTxsYTsrK2thKXt2YXIgbWE9ZmEuY29s b3JzW2thXTtpZih0eXBlb2YgbWEhPSJzdHJpbmciKXt2YXIgbmE9aS5jb2xvci5w YXJzZShpYSk7aWYobWEuYnJpZ2h0bmVzcyE9bnVsbCluYT1uYS5zY2FsZSgncmdi JyxtYS5icmlnaHRuZXNzKTtpZihtYS5vcGFjaXR5IT1udWxsKW5hLmEqPW1hLm9w YWNpdHk7bWE9bmEudG9TdHJpbmcoKTt9amEuYWRkQ29sb3JTdG9wKGthLyhsYS0x KSxtYSk7fXJldHVybiBqYTt9fXZhciBxPVtdO2Z1bmN0aW9uIHIoZmEpe3QoInBs b3Rob3ZlciIsZmEsZnVuY3Rpb24oZ2Epe3JldHVybiBnYS5ob3ZlcmFibGUhPWZh bHNlO30pO31mdW5jdGlvbiBzKGZhKXt0KCJwbG90Y2xpY2siLGZhLGZ1bmN0aW9u KGdhKXtyZXR1cm4gZ2EuY2xpY2thYmxlIT1mYWxzZTt9KTt9ZnVuY3Rpb24gdChm YSxldmVudCxnYSl7dmFyIGhhPWwuYnViYmxlLmV2ZW50SG9sZGVyLm9mZnNldCgp LGlhPWV2ZW50LnBhZ2VYLWhhLmxlZnQtbC5nZXRQbG90T2Zmc2V0KCkubGVmdCxq YT1ldmVudC5wYWdlWS1oYS50b3AtbC5nZXRQbG90T2Zmc2V0KCkudG9wLGthPWwu YzJwKHtsZWZ0OmlhLHRvcDpqYX0pO2thLnBhZ2VYPWV2ZW50LnBhZ2VYO2thLnBh Z2VZPWV2ZW50LnBhZ2VZO3ZhciBsYT11KGlhLGphLGdhKTtpZihsYSl7bGEucGFn ZVg9cGFyc2VJbnQobGEuc2VyaWVzLnhheGlzLnAyYyhsYS5kYXRhcG9pbnRbMF0p K2hhLmxlZnQrbC5nZXRQbG90T2Zmc2V0KCkubGVmdCk7bGEucGFnZVk9cGFyc2VJ bnQobGEuc2VyaWVzLnlheGlzLnAyYyhsYS5kYXRhcG9pbnRbMV0pK2hhLnRvcCts LmdldFBsb3RPZmZzZXQoKS50b3ApO31pZihsLmdldE9wdGlvbnMoKS5ncmlkLmF1 dG9IaWdobGlnaHQpe2Zvcih2YXIgbWE9MDttYTxxLmxlbmd0aDsrK21hKXt2YXIg bmE9cVttYV07aWYobmEuYXV0bz09ZmEmJiEobGEmJm5hLnNlcmllcz09bGEuc2Vy aWVzJiZuYS5wb2ludD09bGEuZGF0YXBvaW50KSl3KG5hLnNlcmllcyxuYS5wb2lu dCk7fWlmKGxhKXYobGEuc2VyaWVzLGxhLmRhdGFwb2ludCxmYSk7fWwuZ2V0UGxh Y2Vob2xkZXIoKS50cmlnZ2VyKGZhLFtrYSxsYV0pO31mdW5jdGlvbiB1KGZhLGdh LGhhKXt2YXIgaWE9bC5nZXRPcHRpb25zKCkuZ3JpZC5tb3VzZUFjdGl2ZVJhZGl1 cyxqYT1pYSppYSsxLGthPW51bGwsbGE9ZmFsc2UsbWEsbmEsb2E9bC5nZXREYXRh KCk7Zm9yKG1hPW9hLmxlbmd0aC0xO21hPj0wOy0tbWEpe2lmKCFoYShvYVttYV0p KWNvbnRpbnVlO3ZhciBwYT1vYVttYV0scWE9cGEueGF4aXMscmE9cGEueWF4aXMs c2E9cGEuZGF0YXBvaW50cy5wb2ludHMsdGE9cGEuZGF0YXBvaW50cy5wb2ludHNp emUsdWE9cWEuYzJwKGZhKSx2YT1yYS5jMnAoZ2EpO2lmKHBhLmxpbmVzLnNob3d8 fHBhLnBvaW50cy5zaG93KWZvcihuYT0wO25hPHNhLmxlbmd0aDtuYSs9dGEpe3Zh ciB3YT1zYVtuYV0seGE9c2FbbmErMV07aWYod2E9PW51bGwpY29udGludWU7dmFy

IHlhPWFhKHBhLFt3YSx4YV0pLHphPXlhKnlhKzEsYWI9eWEvcWEuc2NhbGUsYmI9 eWEvcmEuc2NhbGU7aWYod2EtdWE+YWJ8fHdhLXVhPC1hYnx8eGEtdmE+YmJ8fHhh LXZhPC1iYiljb250aW51ZTt2YXIgY2I9TWF0aC5hYnMocWEucDJjKHdhKS1mYSks ZGI9TWF0aC5hYnMocmEucDJjKHhhKS1nYSksZWI9Y2IqY2IrZGIqZGI7aWYoZWI8 emEpe3phPWViO2thPVttYSxuYS90YV07fX1pZihwYS5iYXJzLnNob3cmJiFrYSl7 dmFyIGZiPXBhLmJhcnMuYWxpZ249PSJsZWZ0Ij8wOi1wYS5iYXJzLmJhcldpZHRo LzIsZ2I9ZmIrcGEuYmFycy5iYXJXaWR0aDtmb3IobmE9MDtuYTxzYS5sZW5ndGg7 bmErPXRhKXt2YXIgd2E9c2FbbmFdLHhhPXNhW25hKzFdLGhiPXNhW25hKzJdO2lm KHdhPT1udWxsKWNvbnRpbnVlO2lmKG9hW21hXS5iYXJzLmhvcml6b250YWw/KHVh PD1NYXRoLm1heChoYix3YSkmJnVhPj1NYXRoLm1pbihoYix3YSkmJnZhPj14YStm YiYmdmE8PXhhK2diKToodWE+PXdhK2ZiJiZ1YTw9d2ErZ2ImJnZhPj1NYXRoLm1p bihoYix4YSkmJnZhPD1NYXRoLm1heChoYix4YSkpKWthPVttYSxuYS90YV07fX19 aWYoa2Epe21hPWthWzBdO25hPWthWzFdO3ZhciB0YT1vYVttYV0uZGF0YXBvaW50 cy5wb2ludHNpemU7cmV0dXJuIHtkYXRhcG9pbnQ6b2FbbWFdLmRhdGFwb2ludHMu cG9pbnRzLnNsaWNlKG5hKnRhLChuYSsxKSp0YSksZGF0YUluZGV4Om5hLHNlcmll czpvYVttYV0sc2VyaWVzSW5kZXg6bWF9O31yZXR1cm4gbnVsbDt9ZnVuY3Rpb24g dihmYSxnYSxoYSl7aWYodHlwZW9mIGZhPT0ibnVtYmVyIilmYT1zZXJpZXNbZmFd O2lmKHR5cGVvZiBnYT09Im51bWJlciIpZ2E9ZmEuZGF0YVtnYV07dmFyIGlhPXgo ZmEsZ2EpO2lmKGlhPT0tMSl7cS5wdXNoKHtzZXJpZXM6ZmEscG9pbnQ6Z2EsYXV0 bzpoYX0pO2wudHJpZ2dlclJlZHJhd092ZXJsYXkoKTt9ZWxzZSBpZighaGEpcVtp YV0uYXV0bz1mYWxzZTt9ZnVuY3Rpb24gdyhmYSxnYSl7aWYoZmE9PW51bGwmJmdh PT1udWxsKXtxPVtdO3RyaWdnZXJSZWRyYXdPdmVybGF5KCk7fWlmKHR5cGVvZiBm YT09Im51bWJlciIpZmE9c2VyaWVzW2ZhXTtpZih0eXBlb2YgZ2E9PSJudW1iZXIi KWdhPWZhLmRhdGFbZ2FdO3ZhciBoYT14KGZhLGdhKTtpZihoYSE9LTEpe3Euc3Bs aWNlKGhhLDEpO2wudHJpZ2dlclJlZHJhd092ZXJsYXkoKTt9fWZ1bmN0aW9uIHgo ZmEsZ2Epe2Zvcih2YXIgaGE9MDtoYTxxLmxlbmd0aDsrK2hhKXt2YXIgaWE9cVto YV07aWYoaWEuc2VyaWVzPT1mYSYmaWEucG9pbnRbMF09PWdhWzBdJiZpYS5wb2lu dFsxXT09Z2FbMV0pcmV0dXJuIGhhO31yZXR1cm4gLTE7fWZ1bmN0aW9uIHkoZmEs Z2Epe3ZhciBoYT1nYVswXSxpYT1nYVsxXSxqYT1mYS54YXhpcyxrYT1mYS55YXhp cztpZihoYTxqYS5taW58fGhhPmphLm1heHx8aWE8a2EubWlufHxpYT5rYS5tYXgp cmV0dXJuO3ZhciBsYT1sLmJ1YmJsZS5vY3R4LG1hPWFhKGZhLGdhKSxuYT1tYStm YS5wb2ludHMubGluZVdpZHRoLzIsb2E9bC5nZXRQbG90T2Zmc2V0KCk7bGEubGlu ZVdpZHRoPWZhLnBvaW50cy5saW5lV2lkdGgqNS41O2xhLnN0cm9rZVN0eWxlPWku Y29sb3IucGFyc2UoZmEuY29sb3IpLnNjYWxlKCdhJywuNCkudG9TdHJpbmcoKTts YS5iZWdpblBhdGgoKTtsYS5hcmMoamEucDJjKGhhKStvYS5sZWZ0LGthLnAyYyhp YSkrb2EudG9wLG5hLDAsMipNYXRoLlBJLGZhbHNlKTtsYS5zdHJva2UoKTt9ZnVu Y3Rpb24geihmYSxnYSl7dmFyIGhhPWZhW2dhXTtpZighaGF8fGhhPT0xKXJldHVy biBheGVzW2dhXTtpZih0eXBlb2YgaGE9PSJudW1iZXIiKXJldHVybiBheGVzW2dh LmNoYXJBdCgwKStoYStnYS5zbGljZSgxKV07cmV0dXJuIGhhO31mdW5jdGlvbiBh YShmYSxnYSl7dmFyIGhhPWZhLmRhdGFwb2ludHMucG9pbnRzLGlhPWZhLmRhdGFw b2ludHMucG9pbnRzaXplO2Zvcih2YXIgamE9aGEubGVuZ3RoO2phPjE7amEtPWlh KXt2YXIga2E9aGFbamEtMl0sbGE9aGFbamEtMV07aWYoZ2FbMF09PWthJiZnYVsx XT09bGEpe3ZhciBtYT0oamEtMikvMjtyZXR1cm4gZmEuZGF0YVttYV1bMl07fX1y ZXR1cm4gMDt9ZnVuY3Rpb24gYmEoZmEsZ2Epe2ZhLmJ1YmJsZS5ldmVudEhvbGRl cj1nYTt2YXIgaGE9ZmEuZ2V0T3B0aW9ucygpO2lmKGNhKCkmJmhhLmdyaWQuaG92 ZXJhYmxlKWdhLnVuYmluZCgnbW91c2Vtb3ZlJykubW91c2Vtb3ZlKHIpO2lmKGhh LnNlcmllcy5idWJibGUmJmhhLmdyaWQuY2xpY2thYmxlKWdhLnVuYmluZCgnY2xp Y2snKS5jbGljayhzKTt9ZnVuY3Rpb24gY2EoKXtyZXR1cm4gISFsLmdldE9wdGlv bnMoKS5zZXJpZXMuYnViYmxlJiYhIWwuZ2V0T3B0aW9ucygpLnNlcmllcy5wb2lu dHMuc2hvdzt9ZnVuY3Rpb24gZGEoZmEsZ2Epe3ZhciBoYT1mYS5nZXREYXRhKCk7 aS5lYWNoKGhhLGZ1bmN0aW9uKGlhLGphKXtpZihqYS5idWJibGUpbihqYSxnYSk7 fSk7fWZ1bmN0aW9uIGVhKGZhLGdhKXtmYS5idWJibGUub2N0eD1nYTtpLmVhY2go cSxmdW5jdGlvbihoYSxpYSl7eShpYS5zZXJpZXMsaWEucG9pbnQpO30pO31sLmJ1 YmJsZT17ZXZlbnRIb2xkZXI6bnVsbCxvY3R4Om51bGx9O2wuaG9va3MuYmluZEV2 ZW50cy5wdXNoKGJhKTtsLmhvb2tzLmRyYXcucHVzaChkYSk7bC5ob29rcy5kcmF3 T3ZlcmxheS5wdXNoKGVhKTt9aC5wbG90LnBsdWdpbnMucHVzaCh7aW5pdDprLG9w dGlvbnM6aixuYW1lOididWJibGUnLHZlcnNpb246JzAuMSd9KTt9KShnKTt9KTsK X19kKCJpbnNpZ2h0cy1tYWluLWdyYXBoIixbInVraS1mdW5jdGlvbiIsInVraS1k b20iLCJ1a2ktdmlldyIsInVraS1idWlsZCIsInVraS11dGlscyIsImZsb3Qtc3Rh Y2siLCJmbG90LWJ1YmJsZSIsImluc2lnaHRzLWNvbnN0YW50cyIsImluc2lnaHRz

LXZpZXctZ3JhcGgtc3R5bGVzIiwiaW5zaWdodHMtdmlldy1ncmFwaC11dGlscyIs Imluc2lnaHRzLXZpZXctZ3JhcGgtd2l0aC1sZWdlbmQiLCJpbnNpZ2h0cy12aWV3 LWhvdmVyYWJsZS1ncmFwaCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCd1a2ktZnVuY3Rpb24nKSxoPWIoJ3VraS1kb20nKSxpPWIoJ3VraS12aWV3Jyks aj1iKCd1a2ktYnVpbGQnKSxrPWIoJ3VraS11dGlscycpLGw9YignZmxvdC1zdGFj aycpLG09YignZmxvdC1idWJibGUnKSxuPWIoJ2luc2lnaHRzLWNvbnN0YW50cycp Lkluc2lnaHRzQ29uc3RhbnRzLkV2ZW50cyxvPWIoJ2luc2lnaHRzLXZpZXctZ3Jh cGgtc3R5bGVzJykscD1iKCdpbnNpZ2h0cy12aWV3LWdyYXBoLXV0aWxzJykscT1i KCdpbnNpZ2h0cy12aWV3LWdyYXBoLXdpdGgtbGVnZW5kJykuR3JhcGhXaXRoTGVn ZW5kLHI9YignaW5zaWdodHMtdmlldy1ob3ZlcmFibGUtZ3JhcGgnKS5Ib3ZlcmFi bGVHcmFwaCxzPWIoJ2luc2lnaHRzLWNvbnN0YW50cycpLkluc2lnaHRzQ29uc3Rh bnRzLHQ9LjUsdT0uNzUsdj01LHc9Mix4PTEwLHk9MS4yLHo9aS5uZXdDbGFzcygn aW5zaWdodHMuR3JhcGgnLHIse3Nob3dQb2ludHM6Zy5uZXdQcm9wKCdzaG93UG9p bnRzJyksX3Nob3dQb2ludHM6dHJ1ZSxzaG93QnViYmxlczpnLm5ld1Byb3AoJ3No b3dCdWJibGVzJyksX3Nob3dCdWJibGVzOnRydWUsYnViYmxlTWF4U2l6ZTpnLm5l d1Byb3AoJ2J1YmJsZU1heFNpemUnKSxfYnViYmxlTWF4U2l6ZTp4LGJ1YmJsZU1p blNpemU6Zy5uZXdQcm9wKCdidWJibGVNaW5TaXplJyksX2J1YmJsZU1pblNpemU6 dixidWJibGVJbmNyZW1lbnQ6Zy5uZXdQcm9wKCdidWJibGVJbmNyZW1lbnQnKSxf YnViYmxlSW5jcmVtZW50OncsX2xheW91dDpmdW5jdGlvbigpe3RoaXMub24obi5Q bG90dGVkLGcuYmluZChmdW5jdGlvbigpe3ZhciBhYT10aGlzLnNlcmllcyYmdGhp cy5zZXJpZXMoKVswXTthYS5sZW5ndGgmJnRoaXMudHJpZ2dlcih7dHlwZTpuLlJl YWR5fSk7fSx0aGlzKSk7fSxfc3RhY2tJbnNpZ2h0czpmdW5jdGlvbihhYSxiYSl7 dGhpcy5fbWF4U2NhbGVkUmVhY2g9MDt2YXIgY2E9MDtmb3IodmFyIGRhPTA7ZGE8 YmEubGVuZ3RoO2RhKyspe3ZhciBlYT1NYXRoLnBvdyhiYVtkYV1bMV0sdSksZmE9 TWF0aC5wb3coYWFbZGFdWzFdLHUpO3RoaXMuX21heFNjYWxlZFJlYWNoPU1hdGgu bWF4KHRoaXMuX21heFNjYWxlZFJlYWNoLGVhKTtpZihlYT4wKWNhPU1hdGgubWF4 KGNhLGZhL2VhKTt9dmFyIGdhPWNhPT09MD8xOnQvY2EsaGE9W10saWE9W10samE9 TWF0aC5taW4oYWEubGVuZ3RoLGJhLmxlbmd0aCk7Zm9yKGRhPTA7ZGE8amE7ZGEr Kyl7dmFyIGthPWJhW2RhXVsxXT09PTA/MDpNYXRoLnBvdyhhYVtkYV1bMV0sdSkq Z2E7aGEucHVzaChbYWFbZGFdWzBdLGthXSk7aWEucHVzaChbYmFbZGFdWzBdLE1h dGgucG93KGJhW2RhXVsxXSx1KS1oYVtkYV1bMV1dKTt9dmFyIGxhPXRoaXMuc2hv d1BvaW50cygpP28uUG9pbnRHcmFwaC5vcHRpb25zKCkucG9pbnRzOnt9O3JldHVy biBbe2RhdGE6aGEsc3RhY2s6dHJ1ZSx5YXhpczoxLHBvaW50czpsYX0se2RhdGE6 aWEsc3RhY2s6dHJ1ZSx5YXhpczoyLHBvaW50czpsYX1dO30sX2J1YmJsZVNpemU6 ZnVuY3Rpb24oYWEpe3JldHVybiBNYXRoLm1pbih0aGlzLmJ1YmJsZU1pblNpemUo KSt0aGlzLmJ1YmJsZUluY3JlbWVudCgpKihhYS0xKSx0aGlzLmJ1YmJsZU1heFNp emUoKSk7fSxfbWFrZUJ1YmJsZVNlcmllczpmdW5jdGlvbihhYSxiYSl7dmFyIGNh PVtdLGRhPU1hdGgubWluKGJhLGFhLmxlbmd0aCk7Zm9yKHZhciBlYT0wO2VhPGRh O2VhKyspaWYoYWFbZWFdWzFdPjApe2NhLnB1c2goW2FhW2VhXVswXSxhYVtlYV1b MV0sdGhpcy5fYnViYmxlU2l6ZShhYVtlYV1bMV0pXSk7Y29udGludWU7fXJldHVy biB7ZGF0YTpjYSxidWJibGU6dHJ1ZSxwb2ludHM6e3Nob3c6dHJ1ZX0sbGluZXM6 e3Nob3c6ZmFsc2V9LHlheGlzOjN9O30sX3lheGVzOmZ1bmN0aW9uKCl7dmFyIGFh PXt0aWNrTGVuZ3RoOjAsdGlja3M6W10sbWluOjAsbWF4OnRoaXMuX21heFNjYWxl ZFJlYWNoKnksbGFiZWxXaWR0aDp0aGlzLmJ1YmJsZU1heFNpemUoKS8yfSxiYT1r LmV4dGVuZCh7fSxhYSx7cG9zaXRpb246J3JpZ2h0J30pLGNhPXtzaG93OmZhbHNl LG1pbjowLG1heDpzLk1BWF9JTlR9O3JldHVybiBbYWEsYmEsY2FdO30sX2Zsb3RE YXRhOmZ1bmN0aW9uKCl7dmFyIGFhPWsudG9BcnJheSh0aGlzLnNlcmllcygpKSxi YT10aGlzLnNob3dCdWJibGVzKCk/MzoyO2lmKCFhYXx8YWEubGVuZ3RoIT1iYSly ZXR1cm4gbnVsbDt2YXIgY2E9W107aWYodGhpcy5zaG93QnViYmxlcygpKXt2YXIg ZGE9YWEuc2hpZnQoKSxlYT1NYXRoLm1pbi5hcHBseShudWxsLGsubWFwKGFhLGZ1 bmN0aW9uKGlhKXtyZXR1cm4gaWEubGVuZ3RoO30pKTtjYT1bdGhpcy5fbWFrZUJ1 YmJsZVNlcmllcyhkYSxlYSldO312YXIgZmE9YWEuc2hpZnQoKSxnYT1hYS5zaGlm dCgpO2NhPWNhLmNvbmNhdCh0aGlzLl9zdGFja0luc2lnaHRzKGZhLGdhKSk7Zm9y KHZhciBoYT0wO2hhPGNhLmxlbmd0aDtoYSsrKXtjYVtoYV0ubGFiZWw9dGhpcy5f Y2hvb3NlTGFiZWwoaGEpO2NhW2hhXS5jb2xvcj10aGlzLl9jaG9vc2VDb2xvciho YSk7fXJldHVybiBjYTt9LF9mbG90T3B0aW9uczpmdW5jdGlvbigpe3ZhciBhYT1y LnByb3RvdHlwZS5fZmxvdE9wdGlvbnMuY2FsbCh0aGlzKTtyZXR1cm4gay5leHRl bmQoYWEse3lheGVzOnRoaXMuX3lheGVzKCl9KTt9fSk7Zi5JbnNpZ2h0c01haW5H cmFwaD16O30pOwpfX2QoIlBvc3RJbnNpZ2h0c0ZseW91dCIsWyJldmVudC1leHRl bnNpb25zIiwiQXN5bmNSZXF1ZXN0IiwiY29weVByb3BlcnRpZXMiLCJIb3ZlckZs

eW91dCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25z Jyk7dmFyIGc9YignQXN5bmNSZXF1ZXN0JyksaD1iKCdjb3B5UHJvcGVydGllcycp LGk9YignSG92ZXJGbHlvdXQnKSxqPXt9LGs9MjAwO2Z1bmN0aW9uIGwobSxuLG8p e3RoaXMuX3BhZ2VJRD1tO3RoaXMuX3Bvc3RJRD1uO3RoaXMuX25vZGU9bzt0aGlz Ll9wZW5kaW5nPWZhbHNlO3RoaXMuX21vdXNlT249ZmFsc2U7dGhpcy5fZmx5b3V0 PW51bGw7dGhpcy5fbW91c2VFbnRlckxpc3RlbmVyPUV2ZW50Lmxpc3Rlbih0aGlz Ll9ub2RlLCdtb3VzZWVudGVyJyx0aGlzLl9mZXRjaEZseW91dC5iaW5kKHRoaXMp KTt0aGlzLl9tb3VzZUxlYXZlTGlzdGVuZXI9RXZlbnQubGlzdGVuKHRoaXMuX25v ZGUsJ21vdXNlbGVhdmUnLHRoaXMuX29uTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTtq W3RoaXMuX3Bvc3RJRF09dGhpczt9aChsLHtzZXRGbHlvdXQ6ZnVuY3Rpb24obSxu KXt0aGlzLl9wZW5kaW5nPWZhbHNlO3ZhciBvPWpbbV07byYmby5vbkZseW91dFNl dChuKTt9fSk7aChsLnByb3RvdHlwZSx7X2ZldGNoRmx5b3V0OmZ1bmN0aW9uKCl7 dGhpcy5fbW91c2VPbj10cnVlO2lmKHRoaXMuX3BlbmRpbmd8fHRoaXMuX2ZseW91 dClyZXR1cm47dGhpcy5fcGVuZGluZz10cnVlO3ZhciBtPXtjb250ZXh0X2lkOnRo aXMuX25vZGUuaWQscGFnZV9pZDp0aGlzLl9wYWdlSUQscG9zdF9pZDp0aGlzLl9w b3N0SUR9O25ldyBnKCkuc2V0VVJJKCcvaW5zaWdodHMvYWpheC9wb3N0X2luc2ln aHRzX3dpZGdldC5waHAnKS5zZXREYXRhKG0pLnNlbmQoKTt9LF9vbk1vdXNlTGVh dmU6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZU9uPWZhbHNlO30sb25GbHlvdXRTZXQ6 ZnVuY3Rpb24obSl7aWYoIXRoaXMuX2ZseW91dCl7dGhpcy5fbW91c2VFbnRlckxp c3RlbmVyJiZ0aGlzLl9tb3VzZUVudGVyTGlzdGVuZXIucmVtb3ZlKCk7dGhpcy5f bW91c2VMZWF2ZUxpc3RlbmVyJiZ0aGlzLl9tb3VzZUxlYXZlTGlzdGVuZXIucmVt b3ZlKCk7dGhpcy5fZmx5b3V0PW5ldyBpKG0sdGhpcy5fbm9kZSxrLGspO2lmKHRo aXMuX21vdXNlT24pdGhpcy5fZmx5b3V0LnNob3dGbHlvdXQodGhpcy5fbm9kZSx0 cnVlKTt9fX0pO2UuZXhwb3J0cz1sO30pOwpmdW5jdGlvbiBGYW5zSmV3ZWwoKXt9 Y29weVByb3BlcnRpZXMoRmFuc0pld2VsLnByb3RvdHlwZSx7aW5pdDpmdW5jdGlv bihhKXt0aGlzLmpld2VsPWE7dGhpcy5qZXdlbC5zdWJzY3JpYmUoJ21hcmtlZC1z ZWVuJyx0aGlzLl9tYXJrU2VlbkNhbGxiYWNrLnNoaWVsZCh0aGlzKSk7fSxfbWFy a1NlZW5DYWxsYmFjazpmdW5jdGlvbihhLGIpe25ldyBBc3luY1JlcXVlc3QoJy9h amF4L3BhZ2VzL2ZhbnNfc2Vlbi5waHAnKS5zZXRNZXRob2QoJ1BPU1QnKS5zZW5k KCk7fX0pOwpfX2QoIk1lc3NhZ2luZyIsWyJBc3luY1JlcXVlc3QiLCJET00iLCJF bnYiLCJIVE1MIiwiTWVyY3VyeUVtb2ppIiwiTWVzc2FnaW5nRXZlbnRzIiwiVVJJ IiwiY3JlYXRlQXJyYXlGcm9tIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ0FzeW5jUmVxdWVzdCcpLGg9YignRE9NJyksaT1iKCdFbnYnKSxqPWIoJ0hU TUwnKSxrPWIoJ01lcmN1cnlFbW9qaScpLGw9YignTWVzc2FnaW5nRXZlbnRzJyks bT1iKCdVUkknKSxuPWIoJ2NyZWF0ZUFycmF5RnJvbScpO2Z1bmN0aW9uIG8ocSxy KXtpZighaC5pc1RleHROb2RlKHEpKXt2YXIgcz1uKHEuY2hpbGROb2Rlcyk7Zm9y KHZhciB0PTA7dDxzLmxlbmd0aDt0KyspbyhzW3RdLHIpO3JldHVybjt9dmFyIHU9 cS5ub2RlVmFsdWU7aWYocil1PXEubm9kZVZhbHVlLnJlcGxhY2UoL1xuL2csJyAn KTt2YXIgdj1rLmh0bWxFbW9qaUFuZEVtb3RlKHUpO2lmKCF2fHx2PT1xLm5vZGVW YWx1ZSlyZXR1cm47dmFyIHc9aih2KS5nZXROb2RlcygpO2lmKCF3fHwhdy5sZW5n dGgpcmV0dXJuO2Zvcih2YXIgeD13Lmxlbmd0aDt4LS07KWguaW5zZXJ0QWZ0ZXIo cSx3W3hdKTtoLnJlbW92ZShxKTt9dmFyIHA9e2dldFVzZXJUaHJlYWRVUkk6ZnVu Y3Rpb24ocSl7cmV0dXJuIG0oaS53d3dfYmFzZSkuc2V0UGF0aCgnL21lc3NhZ2Vz LycrcSk7fSxnZXRJbmJveFRocmVhZFVSSTpmdW5jdGlvbihxKXtyZXR1cm4gbShp Lnd3d19iYXNlKS5zZXRQYXRoKCcvbWVzc2FnZXMvP2FjdGlvbj1yZWFkJnRpZD0n K3EpO30sbWFya0FzUmVhZDpmdW5jdGlvbihxKXtxPW4ocSk7bmV3IGcoKS5zZXRV UkkoJy9hamF4L21lc3NhZ2luZy9hc3luYy5waHAnKS5zZXREYXRhKHthY3Rpb246 J21hcmtSZWFkJyx0aWRzOnF9KS5zZXRNZXRob2QoJ1BPU1QnKS5zZXRIYW5kbGVy KGJhZ29maG9sZGluZykuc2V0RXJyb3JIYW5kbGVyKGJhZ29maG9sZGluZykuc2Vu ZCgpO2wuaW5mb3JtKCdtYXJrLWFzLXJlYWQnLHt0aWRzOnF9KTt9LG1hcmtVc2Vy VGhyZWFkQXNSZWFkOmZ1bmN0aW9uKHEpe25ldyBnKCkuc2V0VVJJKCcvYWpheC9t ZXNzYWdpbmcvYXN5bmMucGhwJykuc2V0RGF0YSh7YWN0aW9uOidjaGF0TWFya1Jl YWQnLG90aGVyX3VzZXI6cX0pLnNldE1ldGhvZCgnUE9TVCcpLnNldEhhbmRsZXIo YmFnb2Zob2xkaW5nKS5zZXRFcnJvckhhbmRsZXIoYmFnb2Zob2xkaW5nKS5zZW5k KCk7bC5pbmZvcm0oJ21hcmstYXMtcmVhZCcse2NoYXRfaWRzOltxXX0pO30sdW5z dWJzY3JpYmVGcm9tVGhyZWFkOmZ1bmN0aW9uKHEpe25ldyBnKCkuc2V0VVJJKCcv YWpheC9tZXNzYWdpbmcvYXN5bmMucGhwJykuc2V0RGF0YSh7YWN0aW9uOid1bnN1 YnNjcmliZScsdGlkczpxfSkuc2V0TWV0aG9kKCdQT1NUJykuc2V0SGFuZGxlcihi YWdvZmhvbGRpbmcpLnNldEVycm9ySGFuZGxlcihiYWdvZmhvbGRpbmcpLnNlbmQo KTt9LGVtb2ppQW5kRW1vdGVDb250ZW50OmZ1bmN0aW9uKHEscil7Zm9yKHZhciBz

PTA7czxxLmxlbmd0aDtzKyspbyhxW3NdLHIpO319O2UuZXhwb3J0cz1wO30pOwpf X2QoImxlZ2FjeTpNZXNzYWdpbmciLFsiTWVzc2FnaW5nIl0sZnVuY3Rpb24oYSxi LGMsZCl7YS5NZXNzYWdpbmc9YignTWVzc2FnaW5nJyk7fSwzKTsKZnVuY3Rpb24g ZmJwYWdlX3NldF9mYW5fc3RhdHVzKGEsYixjLGQsZSxmLGcpe2U9ZT9lOmZ1bmN0 aW9uKGope19mYnBhZ2Vfc2hvd19jaGFuZ2Vfc3RhdHVzX2ZlZWRiYWNrKGEsai5n ZXRQYXlsb2FkKCkpO307dmFyIGg9e2ZicGFnZV9pZDpiLGFkZDpjLHJlbG9hZDpk fTtpZihnIT1udWxsKWNvcHlQcm9wZXJ0aWVzKGgsZyk7dmFyIGk9bmV3IEFzeW5j UmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvcGFnZXMvZmFuX3N0YXR1cy5waHAnKS5z ZXREYXRhKGgpLnNldE5lY3Rhck1vZHVsZURhdGFTYWZlKGEpLnNldEhhbmRsZXIo ZSk7aWYoZilpLnNldEVycm9ySGFuZGxlcihmKTtpLnNlbmQoKTtyZXR1cm4gZmFs c2U7fWZ1bmN0aW9uIGZicGFnZV9zZXRfZmF2b3JpdGVfc3RhdHVzKGEsYixjKXt2 YXIgZD1mdW5jdGlvbigpe19mYnBhZ2Vfc2hvd19jaGFuZ2Vfc3RhdHVzX2ZlZWRi YWNrKGEsdGhpcy5nZXRVc2VyRGF0YSgpKTt9LGU9e2ZicGFnZV9pZDpiLGFkZDpj fSxmPW5ldyBBc3luY1JlcXVlc3QoKS5zZXRNZXRob2QoJ1BPU1QnKS5zZXRVUkko Jy9hamF4L3BhZ2VzL2Zhdm9yaXRlX3N0YXR1cy5waHAnKS5zZXREYXRhKGUpO25l dyBEaWFsb2coKS5zZXRBc3luYyhmKS5zZXRDbG9zZUhhbmRsZXIoZCkuc2hvdygp O3JldHVybiBmYWxzZTt9ZnVuY3Rpb24gX2ZicGFnZV9zaG93X2NoYW5nZV9zdGF0 dXNfZmVlZGJhY2soYSxiKXtpZighYnx8IWEpcmV0dXJuO2lmKGIucmVsb2FkKXtm YnBhZ2VfcmVsb2FkX29uX2Zhbl9zdGF0dXNfY2hhbmdlZChiLnByZXNlcnZlX3Rh Yik7fWVsc2UgZmJwYWdlX3JlZHJhd19vbl9mYW5fc3RhdHVzX2NoYW5nZWQoYSxi LmZlZWRiYWNrKTt9ZnVuY3Rpb24gZmJwYWdlX3JlbG9hZF9vbl9mYW5fc3RhdHVz X2NoYW5nZWQoYSl7dmFyIGI9VVJJLmdldFJlcXVlc3RVUkkoKTtpZihhKXt2YXIg Yz1GdXR1cmVTaWRlTmF2LmdldEluc3RhbmNlKCkuc2VsZWN0ZWQudGV4dEtleTtp ZighYi5nZXRRdWVyeURhdGEoKS5zayYmYyliLmFkZFF1ZXJ5RGF0YSh7c2s6Y30p O313aW5kb3cubG9jYXRpb24uaHJlZj1iO31mdW5jdGlvbiBmYnBhZ2VfcmVkcmF3 X29uX2Zhbl9zdGF0dXNfY2hhbmdlZChhLGIpe2lmKCFiKXJldHVybjtpZihQYXJl bnQuYnlDbGFzcyhhLCdmYlRpbWVsaW5lRXNjYXBlU2VjdGlvbkl0ZW0nKSlhPVBh cmVudC5ieUNsYXNzKGEsJ2Zhbl9zdGF0dXNfaW5hY3RpdmUnKXx8YTt2YXIgYz1E T00uY3JlYXRlKCdzcGFuJyx7Y2xhc3NOYW1lOidmYW5fc3RhdHVzX2luYWN0aXZl J30sYik7YS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjLGEpO3ZhciBkPWZ1bmN0 aW9uKCl7aWYoZGF0YS5jYW5fcmVwZWF0X2FjdGlvbiljLnBhcmVudE5vZGUucmVw bGFjZUNoaWxkKGEsYyk7fTthbmltYXRpb24oYykuZHVyYXRpb24oMzAwMCkuY2hl Y2twb2ludCgpLnRvKCdiYWNrZ3JvdW5kQ29sb3InLCcjRkZGRkZGJykuZHVyYXRp b24oMTAwMCkub25kb25lKGQpLmdvKCk7fWZ1bmN0aW9uIGZicGFnZV90b2dnbGVf bGlrZV9vbl9mYW5fc3RhdHVzX2NoYW5nZWQoYSxiKXt2YXIgYz0kKCdsaWtlZF9w YWdlc19saWtlX2FjdGlvbl8nK2EpLGQ9JCgnbGlrZWRfcGFnZXNfdW5kb19hY3Rp b25fJythKTtDU1MuY29uZGl0aW9uQ2xhc3MoYywnaGlkZGVuX2VsZW0nLGIpO0NT Uy5jb25kaXRpb25DbGFzcyhkLCdoaWRkZW5fZWxlbScsIWIpO31mdW5jdGlvbiBm YnBhZ2VfaW5mb3JtX2FyYml0ZXJfb25fY2hhbmdlKGEsYil7aWYod2luZG93LlBh Z2VMaWtlQnV0dG9uKWlmKGIpe1BhZ2VMaWtlQnV0dG9uLmluZm9ybUxpa2UoYSk7 UGFnZUxpa2VCdXR0b24uaW5mb3JtTGlrZVN1Y2Nlc3MoYSk7fWVsc2UgUGFnZUxp a2VCdXR0b24uaW5mb3JtVW5saWtlKGEpO30KX19kKCJsZWdhY3k6TGF5ZXJIaWRl T25Fc2NhcGUiLFsiTGF5ZXJIaWRlT25Fc2NhcGUiXSxmdW5jdGlvbihhLGIsYyxk KXthLkxheWVySGlkZU9uRXNjYXBlPWIoJ0xheWVySGlkZU9uRXNjYXBlJyk7fSwz KTsKZnVuY3Rpb24gVG91cigpe2lmKFRvdXIuX2luc3RhbmNlKVRvdXIuX2luc3Rh bmNlLnNldFRvdXJDb21wbGV0ZSgpO1RvdXIuX2luc3RhbmNlPXRoaXM7fWNvcHlQ cm9wZXJ0aWVzKFRvdXIucHJvdG90eXBlLHt0b3VyU3RhcnRlZDpmYWxzZSx0b3Vy Q29tcGxldGU6ZmFsc2UsX25hdmlnYXRpb25CZWdpblRva2VuOm51bGwsX3BhZ2VM ZWF2ZVRva2VuOm51bGwsc3RlcHM6e30sb3BlbkRpYWxvZzpudWxsLGluaXQ6ZnVu Y3Rpb24oKXt0aGlzLl9wYWdlTGVhdmVUb2tlbj1BcmJpdGVyLnN1YnNjcmliZSgn b25sb2FkL2V4aXQnLHRoaXMuaGFuZGxlTGVhdmVQYWdlLmJpbmQodGhpcykpO3Ro aXMuX25hdmlnYXRpb25CZWdpblRva2VuPUFyYml0ZXIuc3Vic2NyaWJlKE5hdmln YXRpb25NZXNzYWdlLk5BVklHQVRJT05fQkVHSU4sdGhpcy5oYW5kbGVUcmFuc2l0 aW9uLmJpbmQodGhpcykpO3RoaXMuc3RlcHM9e307cmV0dXJuIHRoaXM7fSxyZWdp c3RlclN0ZXA6ZnVuY3Rpb24oYSxiKXthLmRpc2FibGVCZWhhdmlvcihMYXllckRl c3Ryb3lPbkhpZGUpO2EuZGlzYWJsZUJlaGF2aW9yKExheWVySGlkZU9uRXNjYXBl KTt0aGlzLnN0ZXBzW2JdPWE7YS5zdWJzY3JpYmUoJ3Nob3cnLGZ1bmN0aW9uKCl7 YS5pbmZvcm0oJ3RvdXItZGlhbG9nLXNob3cnLGEpO30pO2lmKCF0aGlzLmdldFRv dXJTdGFydGVkKCkpdGhpcy5zZXRUb3VyU3RhcnQoKTt9LF91bnN1YnNjcmliZVN1 YnNjcmlwdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLl9uYXZpZ2F0aW9uQmVnaW5Ub2tl

bi51bnN1YnNjcmliZSgpO3RoaXMuX3BhZ2VMZWF2ZVRva2VuLnVuc3Vic2NyaWJl KCk7fSxoYW5kbGVMZWF2ZVBhZ2U6ZnVuY3Rpb24oKXt0aGlzLl91bnN1YnNjcmli ZVN1YnNjcmlwdGlvbnMoKTt9LGhhbmRsZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt0 aGlzLl91bnN1YnNjcmliZVN1YnNjcmlwdGlvbnMoKTt9LGhhbmRsZVRvdXJTdGFy dDpmdW5jdGlvbigpe30saGFuZGxlVG91clN0b3A6ZnVuY3Rpb24oKXt9LGhhbmRs ZVRvdXJDb21wbGV0ZTpmdW5jdGlvbigpe30sc2hvd1N0ZXA6ZnVuY3Rpb24oYSl7 dmFyIGI9dGhpcy5zdGVwc1thXTtpZighKHRoaXMub3BlbkRpYWxvZz09YikpdGhp cy5oaWRlT3BlbkRpYWxvZygpO2lmKCFiKXJldHVybjt0aGlzLm9wZW5EaWFsb2c9 YjtiLnNob3coKTt9LGhpZGVPcGVuRGlhbG9nOmZ1bmN0aW9uKCl7aWYodGhpcy5v cGVuRGlhbG9nKXt0aGlzLm9wZW5EaWFsb2cuaGlkZSgpO3RoaXMub3BlbkRpYWxv Zz1udWxsO319LGdldFRvdXJTdGFydGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu dG91clN0YXJ0ZWQ7fSxzZXRUb3VyU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnRvdXJT dGFydGVkPXRydWU7dGhpcy5oYW5kbGVUb3VyU3RhcnQoKTt9LHNldFRvdXJTdG9w OmZ1bmN0aW9uKCl7dGhpcy50b3VyU3RhcnRlZD1mYWxzZTt0aGlzLmhpZGVPcGVu RGlhbG9nKCk7dGhpcy5oYW5kbGVUb3VyU3RvcCgpO30sc2V0VG91ckNvbXBsZXRl OmZ1bmN0aW9uKCl7aWYodGhpcy50b3VyQ29tcGxldGUpcmV0dXJuO3RoaXMuc2V0 VG91clN0b3AoKTt0aGlzLnRvdXJDb21wbGV0ZT10cnVlO3RoaXMuaGFuZGxlVG91 ckNvbXBsZXRlKCk7fSxoaWRlU3RlcDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnN0 ZXBzW2FdO2ImJmIuaGlkZSgpO319KTtjb3B5UHJvcGVydGllcyhUb3VyLHtnZXRJ bnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBUb3VyLl9pbnN0YW5jZXx8KFRvdXIu X2luc3RhbmNlPW5ldyBUb3VyKCkpO319KTsKdmFyIFBhZ2VMaWtlQnV0dG9uPXdp bmRvdy5QYWdlTGlrZUJ1dHRvbnx8KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjLGQs ZSxmLGcpe1RvdXIuZ2V0SW5zdGFuY2UoKS5oaWRlU3RlcCgnbG93X3BhZ2VfbGlr ZXMnKTtmYnBhZ2Vfc2V0X2Zhbl9zdGF0dXMoYyxkLGUsZmFsc2UsZnVuY3Rpb24o KXtQYWdlTGlrZUJ1dHRvbi5pbmZvcm1MaWtlU3VjY2VzcyhkKTt9LGYse2Zhbl9v cmlnaW46Z30pO31mdW5jdGlvbiBiKGMsZCxldmVudCl7YShldmVudC5nZXRUYXJn ZXQoKSxjLHRydWUsZnVuY3Rpb24oZSl7QXJiaXRlci5pbmZvcm0oUGFnZUxpa2VC dXR0b24uVU5MSUtFRCx7cHJvZmlsZV9pZDpjfSk7QXN5bmNSZXNwb25zZS5kZWZh dWx0RXJyb3JIYW5kbGVyKGUpO30sZCk7UGFnZUxpa2VCdXR0b24uaW5mb3JtTGlr ZShjKTt9cmV0dXJuIHtMSUtFRDonbGlrZWQnLFVOTElLRUQ6J3VubGlrZWQnLExJ S0VEX1NVQ0NFU1M6J2xpa2VkX3N1Y2Nlc3MnLGluaXQ6ZnVuY3Rpb24oYyxkLGUs ZixnLGgpe0FyYml0ZXIuc3Vic2NyaWJlKFBhZ2VMaWtlQnV0dG9uLkxJS0VELGZ1 bmN0aW9uKGksail7aWYoZj09PWoucHJvZmlsZV9pZCljLnN3YXAoKTt9KTtBcmJp dGVyLnN1YnNjcmliZShQYWdlTGlrZUJ1dHRvbi5VTkxJS0VELGZ1bmN0aW9uKGks ail7aWYoZj09PWoucHJvZmlsZV9pZCl7Yy51bnN3YXAoKTtlLmhpZGVGbHlvdXQo KTt9fSk7aWYoaClBcmJpdGVyLnN1YnNjcmliZShQYWdlTGlrZUJ1dHRvbi5MSUtF RF9TVUNDRVNTLGZ1bmN0aW9uKGksail7YXBwX2RhdGE9VVJJLmdldFJlcXVlc3RV UkkoKS5nZXRRdWVyeURhdGEoKS5hcHBfZGF0YTtpZihqLnByb2ZpbGVfaWQ9PWYp bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvcGFnZXMvZmV0Y2hfYXBw X2NvbHVtbi5waHAnKS5zZXREYXRhKHtwcm9maWxlX2lkOmYsdGFiX2tleTpoLGFw cF9kYXRhOmFwcF9kYXRhfSkuc2VuZCgpO30pO0V2ZW50Lmxpc3RlbihkLCdjbGlj aycsYmluZCh0aGlzLGIsZixnKSk7fSxpbml0Q2FsbG91dDpmdW5jdGlvbihjLGQp e2NhbGxvdXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2VBY3Rpb25MaWtl Q2FsbG91dEJ1dHRvbicpO0V2ZW50Lmxpc3RlbihjYWxsb3V0LCdjbGljaycsYmlu ZCh0aGlzLGIsYyxkKSk7fSxpbml0VW5saWtlOmZ1bmN0aW9uKGMsZCxlKXtFdmVu dC5saXN0ZW4oYywnY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXthKGV2ZW50LmdldFRh cmdldCgpLGQsZmFsc2UsZnVuY3Rpb24oZil7QXJiaXRlci5pbmZvcm0oUGFnZUxp a2VCdXR0b24uTElLRUQse3Byb2ZpbGVfaWQ6ZH0pO0FzeW5jUmVzcG9uc2UuZGVm YXVsdEVycm9ySGFuZGxlcihmKTt9LGUpO1BhZ2VMaWtlQnV0dG9uLmluZm9ybVVu bGlrZShkKTt9KTt9LGluZm9ybUxpa2U6ZnVuY3Rpb24oYyl7dmFyIGQ9e3Byb2Zp bGVfaWQ6Y307QXJiaXRlci5pbmZvcm0oUGFnZUxpa2VCdXR0b24uTElLRUQsZCk7 QXJiaXRlci5pbmZvcm0oU3Vic2NyaWJlQnV0dG9uLlNVQlNDUklCRUQsZCk7fSxp bmZvcm1MaWtlU3VjY2VzczpmdW5jdGlvbihjKXt2YXIgZD17cHJvZmlsZV9pZDpj fTtBcmJpdGVyLmluZm9ybShQYWdlTGlrZUJ1dHRvbi5MSUtFRF9TVUNDRVNTLGQp O30saW5mb3JtVW5saWtlOmZ1bmN0aW9uKGMpe3ZhciBkPXtwcm9maWxlX2lkOmN9 O0FyYml0ZXIuaW5mb3JtLmJpbmQoQXJiaXRlcixQYWdlTGlrZUJ1dHRvbi5VTkxJ S0VELGQpLmRlZmVyKCk7QXJiaXRlci5pbmZvcm0uYmluZChBcmJpdGVyLFN1YnNj cmliZUJ1dHRvbi5VTlNVQlNDUklCRUQsZCkuZGVmZXIoKTt9fTt9KSgpOwpfX2Qo IkFkbWluUGFuZWxJbnNpZ2h0cyIsWyJ1a2ktYnVpbGQiLCJ1a2ktdXRpbHMiLCJn ZSIsImluc2lnaHRzLWNvbnN0YW50cyIsImluc2lnaHRzLXZpZXctZ3JhcGgtc3R5

bGVzIiwiaW5zaWdodHMtdmlldy1ncmFwaC11dGlscyIsImluc2lnaHRzLXZpZXct Z3JhcGgtd2l0aC1sZWdlbmQiLCJpbnNpZ2h0cy1tYWluLWdyYXBoIiwiaW5zaWdo dHMtZGF0ZS11dGlscyIsIkFzeW5jUmVxdWVzdCJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCd1a2ktYnVpbGQnKSxoPWIoJ3VraS11dGlscycpLGk9Yign Z2UnKSxqPWIoJ2luc2lnaHRzLWNvbnN0YW50cycpLkluc2lnaHRzQ29uc3RhbnRz LGs9YignaW5zaWdodHMtdmlldy1ncmFwaC1zdHlsZXMnKSxsPWIoJ2luc2lnaHRz LXZpZXctZ3JhcGgtdXRpbHMnKS5Ub29sdGlwRm9ybWF0dGVycyxtPWIoJ2luc2ln aHRzLXZpZXctZ3JhcGgtd2l0aC1sZWdlbmQnKS5HcmFwaFdpdGhMZWdlbmQsbj1i KCdpbnNpZ2h0cy1tYWluLWdyYXBoJykuSW5zaWdodHNNYWluR3JhcGgsbz1iKCdp bnNpZ2h0cy1kYXRlLXV0aWxzJykubWlkbmlnaHRzSW5SYW5nZSxwPWIoJ0FzeW5j UmVxdWVzdCcpLHE9W2ouQ29sb3JzTWFwLm1hZ2VudGEsai5Db2xvcnNNYXAuZ3Jl ZW4sai5Db2xvcnNNYXAuYmx1ZV0scj17b3B0aW9uczpmdW5jdGlvbigpe3JldHVy biB7Z3JpZDpoLmV4dGVuZChrLkJhc2VHcmFwaC5vcHRpb25zKCkuZ3JpZCx7bWlu Qm9yZGVyTWFyZ2luOjh9KSx4YXhpczp7dGlja3M6W119fTt9fSxzPXtmZXRjaERh dGE6ZnVuY3Rpb24odCl7bmV3IHAoKS5zZXRVUkkoJy9hamF4L3RpbWVsaW5lL3Bh Z2VzL2FkbWluX3BhbmVsX2luc2lnaHRzLnBocCcpLnNldERhdGEoe3Byb2ZpbGVf aWQ6dH0pLnNldEhhbmRsZXIodGhpcy5wbG90R3JhcGgpLnNlbmQoKTt9LHBsb3RH cmFwaDpmdW5jdGlvbih0KXt2YXIgdT10LmdldFBheWxvYWQoKSx2PXUucG9zdF9j b3VudHMsdz11LnRhbGtpbmcseD11LnJlYWNoLHk9dS5zaG93X2J1YmJsZXMsej11 LmxlZ2VuZCxhYT11LmNvbnRhaW5lcl9pZCxiYT1bdix3LHhdLGNhPWwubWFpbjtp ZigheSl7cS5zaGlmdCgpO3ouc2hpZnQoKTtiYS5zaGlmdCgpO2NhPWwucmVhY2hB bmRQVEFUO312YXIgZGE9Zyh7dmlldzptLGluaXQ6e2Jhc2VHcmFwaDpufSxhczon Z3JhcGgnLG1peGluczpbay5CYXNlR3JhcGgsay5UaW1lU2VyaWVzLGsuQXJlYUdy YXBoLHJdLGNvbG9yczpxLGxlZ2VuZDp6LHRvb2x0aXBGb3JtYXR0ZXI6Y2F9KSxl YT1pKGFhKTtkYS5hdHRhY2goZWEpO3ZhciBmYT1kYS52aWV3KCdncmFwaCcpO2lm KHUucGFnZV9pbnNpZ2h0c191cmwpZmEub24oJ2NsaWNrJyxmdW5jdGlvbigpe3dp bmRvdy5vcGVuKHUucGFnZV9pbnNpZ2h0c191cmwsJ19ibGFuaycpO30pO3ZhciBn YT1mYS5ncmFwaFZpZXcoKTtnYS5zaG93QnViYmxlcyh5KTtnYS5zaG93UG9pbnRz KGZhbHNlKTtnYS5idWJibGVNaW5TaXplKDIpO2dhLmJ1YmJsZU1heFNpemUoNSk7 Z2EuYnViYmxlSW5jcmVtZW50KDEpO2dhLnBsb3QoYmEpO2dhLmxvYWRpbmcoZmFs c2UpO319O2UuZXhwb3J0cz1zO30pOwpfX2QoIlBhZ2VzQW5jaG9yRGlhbG9nRW5m b3JjZXIiLFsiYXJyYXktZXh0ZW5zaW9ucyIsImV2ZW50LWV4dGVuc2lvbnMiLCJB c3luY1JlcXVlc3QiLCJjb3B5UHJvcGVydGllcyIsIkRPTSIsIlVSSSJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtiKCdhcnJheS1leHRlbnNpb25zJyk7YignZXZlbnQt ZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0FzeW5jUmVxdWVzdCcpLGg9YignY29weVBy b3BlcnRpZXMnKSxpPWIoJ0RPTScpLGo9YignVVJJJyksaz17TE9DQVRJT05fQ09N UE9TRVI6MSxMT0NBVElPTl9NSUxFU1RPTkU6MixMT0NBVElPTl9TUElORTozLExP Q0FUSU9OX0VESVRfTUVOVTo0LExPQ0FUSU9OX0hJREVfSk9JTkVEOjV9LGw9W107 ZnVuY3Rpb24gbShyLHMsdCl7dmFyIHU9aS5maW5kKGRvY3VtZW50LHIpO24odSxz LHQpO31mdW5jdGlvbiBuKHIscyx0KXtsLnB1c2goRXZlbnQubGlzdGVuKHIsJ2Ns aWNrJyxmdW5jdGlvbih1KXtuZXcgZygpLnNldFVSSSgnL2FqYXgvdGltZWxpbmUv cGFnZXMvYW5jaG9yX2RpYWxvZy5waHAnKS5zZXREYXRhKHtwcm9maWxlX2lkOnMs bG9jYXRpb246dH0pLnNlbmQoKTtyZXR1cm4gZmFsc2U7fSxFdmVudC5Qcmlvcml0 eS5VUkdFTlQpKTt9ZnVuY3Rpb24gbyhyLHMpe3AoKTtzd2l0Y2gocyl7Y2FzZSBr LkxPQ0FUSU9OX0NPTVBPU0VSOmNhc2Ugay5MT0NBVElPTl9NSUxFU1RPTkU6Y2Fz ZSBrLkxPQ0FUSU9OX1NQSU5FOmNhc2Ugay5MT0NBVElPTl9FRElUX01FTlU6Y2Fz ZSBrLkxPQ0FUSU9OX0hJREVfSk9JTkVEOmouZ2V0UmVxdWVzdFVSSSgpLmdvKCk7 YnJlYWs7ZGVmYXVsdDp9fWZ1bmN0aW9uIHAoKXtsLmZvckVhY2goZnVuY3Rpb24o cil7ci5yZW1vdmUoKTt9KTtsPVtdO312YXIgcT17ZW5mb3JjZURpYWxvZ09uTm9k ZTpuLGVuZm9yY2VEaWFsb2dPblNlbGVjdG9yOm0sb25TdWNjZXNzRm9yTG9jYXRp b246b307ZS5leHBvcnRzPXE7fSk7CnZhciBQbGFjZUFjdGlvbkxpbms9e3N0YXJ0 X2NsYWltX2xpbms6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEFzeW5jUmVxdWVzdCgp LnNldE1ldGhvZCgnUE9TVCcpLnNldFVSSSgnL2FqYXgvcGxhY2VzL2NsYWltL3N0 YXJ0X2NsYWltLnBocCcpLnNldERhdGEoe2lkOmF9KTtuZXcgRGlhbG9nKCkuc2V0 QXN5bmMoYikuc2hvdygpO3JldHVybiBmYWxzZTt9LHJlZmVyX2NsYWltX2xpbms6 ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEFzeW5jUmVxdWVzdCgpLnNldE1ldGhvZCgn UE9TVCcpLnNldFVSSSgnL2FqYXgvcGxhY2VzL2NsYWltL3JlZmVyX2NsYWltLnBo cCcpLnNldERhdGEoe2lkOmF9KTtuZXcgRGlhbG9nKCkuc2V0QXN5bmMoYikuc2hv dygpO3JldHVybiBmYWxzZTt9fTsKdmFyIEZCWExvYWRNb3JlRXhwZXJpZW5jZXM9 e3JldmVhbDpmdW5jdGlvbihhLGIpe3ZhciBjPWEub2Zmc2V0SGVpZ2h0O2I9RE9N

LnJlcGxhY2UoYSxiKVswXTthbmltYXRpb24oYikuZnJvbSgnaGVpZ2h0JyxjKS50 bygnaGVpZ2h0JywnYXV0bycpLmR1cmF0aW9uKDQwMCkuYmxpbmQoKS5lYXNlKGFu aW1hdGlvbi5lYXNlLmJvdGgpLmdvKCk7fX07CnZhciBUaW1lbGluZUFnZ3JlZ2F0 ZVBvc3Q9e2luaXQ6ZnVuY3Rpb24oYSl7RXZlbnQubGlzdGVuKGEsJ2NsaWNrJyxm dW5jdGlvbihiKXt2YXIgYz1iLmdldE1vZGlmaWVycygpO2lmKGIuaXNNaWRkbGVD bGljaygpfHxjLmFjY2Vzc3x8Yy5tZXRhKXJldHVybiB0cnVlO3ZhciBkPVBhcmVu dC5ieVRhZyhiLmdldFRhcmdldCgpLCdsaScpO2lmKCFDU1MuaGFzQ2xhc3MoZCwi LWN4LVBSSVZBVEUtZmJUaW1lbGluZVdhbGxQb3N0VW5pdF9fcGFnZXIiKSluZXcg QXN5bmNSZXF1ZXN0KCkuc2V0VVJJKERhdGFTdG9yZS5nZXQoZCwndXJsJykpLnNl bmQoKTt9KTt9LGluaXRQYWdlOmZ1bmN0aW9uKGEpe0V2ZW50Lmxpc3RlbihhLCdj bGljaycsZnVuY3Rpb24oYil7dmFyIGM9UGFyZW50LmJ5Q2xhc3MoYi5nZXRUYXJn ZXQoKSwndWlDbG9zZUJ1dHRvbicpO2lmKGMpcmV0dXJuO3ZhciBkPVBhcmVudC5i eVRhZyhiLmdldFRhcmdldCgpLCdsaScpO25ldyBBc3luY1JlcXVlc3QoKS5zZXRV UkkoRGF0YVN0b3JlLmdldChkLCd1cmwnKSkuc2VuZCgpO30pO30scG9rZTpmdW5j dGlvbihhKXtTY3JvbGxhYmxlQXJlYS5wb2tlKGEpO30sc2V0U2Nyb2xsSGVpZ2h0 OmZ1bmN0aW9uKGEpe3ZhciBiPURPTS5maW5kKGEsJy5zQXJlYScpO1N0eWxlLnNl dChiLCdoZWlnaHQnLGEub2Zmc2V0SGVpZ2h0KydweCcpO319OwpfX2QoIlRpbWVs aW5lUGFnZU1vc3RSZWNlbnQiLFsiQ1NTIiwiRE9NUXVlcnkiLCJQYXJlbnQiLCJT dHlsZSIsIlRpbWVsaW5lQ2Fwc3VsZSIsIiQiXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7dmFyIGc9YignQ1NTJyksaD1iKCdET01RdWVyeScpLGk9YignUGFyZW50Jyks aj1iKCdTdHlsZScpLGs9YignVGltZWxpbmVDYXBzdWxlJyksbD1iKCckJyksbT17 aW5pdDpmdW5jdGlvbihuLG8pe2lmKCFnLnNob3duKG4pKXtnLnNob3cobik7dmFy IHA9bChvKTtqLnNldChoLmZpbmQocCwnZGl2LnNBcmVhJyksJ2hlaWdodCcsKHAu b2Zmc2V0SGVpZ2h0fHwwKSsncHgnKTtrLmJhbGFuY2VDYXBzdWxlKGkuYnlDbGFz cyhsKG4pLCdmYlRpbWVsaW5lQ2Fwc3VsZScpKTt9fX07ZS5leHBvcnRzPW07fSk7 Cl9fZCgiUGFnZXNUaW1lbGluZVNjcnViYmVyIixbIkFuaW1hdGlvbiIsIkFzeW5j UmVxdWVzdCIsIkNsYXNzIiwiQ1NTIiwiRE9NU2Nyb2xsIiwiVGltZWxpbmVNYWlu U2NydWJiZXIiLCIkIiwiY29weVByb3BlcnRpZXMiLCJnZSJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdBbmltYXRpb24nKSxoPWIoJ0FzeW5jUmVxdWVz dCcpLGk9YignQ2xhc3MnKSxqPWIoJ0NTUycpLGs9YignRE9NU2Nyb2xsJyksbD1i KCdUaW1lbGluZU1haW5TY3J1YmJlcicpLG09YignJCcpLG49YignY29weVByb3Bl cnRpZXMnKSxvPWIoJ2dlJyk7ZnVuY3Rpb24gcChxKXt0aGlzLnBhcmVudC5jb25z dHJ1Y3QodGhpcyxxKTt9aS5leHRlbmQocCxsKTtuKHAse1BBTkVMX0JPRFlfSEVJ R0hUOjQzMCxBTklNQVRJT05fVElNRV9NUzoyNTB9KTtwLnNob3c9ZnVuY3Rpb24o cSxyKXtpZihvKCdhZG1pbl9wYW5lbCcpJiZqLnNob3duKCdhZG1pbl9wYW5lbF9i b2R5Jykpe2suc2Nyb2xsVG8obSgnYWRtaW5fcGFuZWwnKSx0cnVlKTtyZXR1cm47 fXZhciBzPW0oJ2FkbWluX3BhbmVsJyksdD1tKCdhZG1pbl9wYW5lbF9ib2R5Jyk7 ai5zaG93KHQpO2ouaGlkZSgnYWRtaW5QYW5lbFNob3dCdXR0b24nKTtqLnNob3co J2FkbWluUGFuZWxIaWRlQnV0dG9uJyk7aWYocil7dC5zdHlsZS5oZWlnaHQ9cC5Q QU5FTF9CT0RZX0hFSUdIVCsncHgnO31lbHNle3Quc3R5bGUuaGVpZ2h0PTA7bmV3 IGcodCkudG8oJ2hlaWdodCcscC5QQU5FTF9CT0RZX0hFSUdIVCkuZHVyYXRpb24o cC5BTklNQVRJT05fVElNRV9NUykuZ28oKTtrLnNjcm9sbFRvKHMsdHJ1ZSk7fW5l dyBoKCcvYWpheC9wYWdlcy9hZG1pbl9wYW5lbC9jb2xsYXBzZS5waHAnKS5zZXRE YXRhKHtwaWQ6cSxjb2xsYXBzZWQ6ZmFsc2UsaW5fdG91cjpyfSkuc2V0TWV0aG9k KCdQT1NUJykuc2VuZCgpO307cC5oaWRlPWZ1bmN0aW9uKHEscil7aWYobygnYWRt aW5fcGFuZWwnKSYmIWouc2hvd24oJ2FkbWluX3BhbmVsX2JvZHknKSlyZXR1cm47 dmFyIHM9bSgnYWRtaW5fcGFuZWxfYm9keScpO2ouc2hvdygnYWRtaW5QYW5lbFNo b3dCdXR0b24nKTtqLmhpZGUoJ2FkbWluUGFuZWxIaWRlQnV0dG9uJyk7aWYocil7 cy5zdHlsZS5oZWlnaHQ9MDtqLmhpZGUocyk7fWVsc2UgbmV3IGcocykudG8oJ2hl aWdodCcsMCkuaGlkZSgpLmR1cmF0aW9uKHAuQU5JTUFUSU9OX1RJTUVfTVMpLmdv KCk7bmV3IGgoJy9hamF4L3BhZ2VzL2FkbWluX3BhbmVsL2NvbGxhcHNlLnBocCcp LnNldERhdGEoe3BpZDpxLGNvbGxhcHNlZDp0cnVlLGluX3RvdXI6cn0pLnNldE1l dGhvZCgnUE9TVCcpLnNlbmQoKTt9O2UuZXhwb3J0cz1wO30pOwpfX2QoImxlZ2Fj eTpQYWdlc1RpbWVsaW5lU2NydWJiZXIiLFsiUGFnZXNUaW1lbGluZVNjcnViYmVy Il0sZnVuY3Rpb24oYSxiLGMsZCl7YS5QYWdlc1RpbWVsaW5lU2NydWJiZXI9Yign UGFnZXNUaW1lbGluZVNjcnViYmVyJyk7fSwzKTsKX19kKCJVRklDb2xsYXBzZWRD b21tZW50IixbImV2ZW50LWV4dGVuc2lvbnMiLCJDU1MiXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7YignZXZlbnQtZXh0ZW5zaW9ucycpO3ZhciBnPWIoJ0NTUycpLGg9 e2xpc3RlbjpmdW5jdGlvbihpKXtpZihpKUV2ZW50Lmxpc3RlbihpLCdjbGljaycs ZnVuY3Rpb24oKXtnLmFkZENsYXNzKGksJ3VpVWZpQ29sbGFwc2VkQ29tbWVudFRv

Z2dsZScpO30pO319O2UuZXhwb3J0cz1oO30pOw== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=A36IgZVbzBG.js Content-Type: application/x-javascript; charset=utf-8; name=A36IgZVbzBG.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yh/r/A36IgZVbzBG.js Content-Transfer-Encoding: Base64 LyoxMzQzMTQxMzMwLDE2OTc3NjA2OSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjVZakpTIl0pOyB9CgpmdW5j dGlvbiBDb25uZWN0V2lkZ2V0KGEsYixjLGQsZSl7Y29weVByb3BlcnRpZXModGhp cyx7Y2hhbm5lbF91cmw6ZSxsaWtlX21vZGU6ZCxwcm9maWxlX2lkOmIsdmlld2Vy X2lkOmEsc3RhdHVzOm51bGwscG9wdXA6bnVsbCxidXN5OmZhbHNlLG5ld19mYW46 bnVsbCx1c2VyX3Byb2ZpbGU6bnVsbH0pO3RoaXMuZmFuX2hpZGRlbj1bXTt0aGlz LmZhbl9zaG93bj1bXTt2YXIgZj1ET00uc2NyeShkb2N1bWVudCwnZGl2LmNvbm5l Y3Rpb25zJyk7aWYoZi5sZW5ndGg+MCl7Zj1mWzBdO3RoaXMudXNlcl9wcm9maWxl PURPTS5maW5kKGYsJ2Rpdi51c2VyX3Byb2ZpbGUnKTt0aGlzLm5ld19mYW49RE9N LmZpbmQoZiwnZGl2LmdyaWRfaXRlbV9wbHVzJyk7dGhpcy5mYW5fc2hvd24ucHVz aCh0aGlzLm5ld19mYW4pO3RoaXMuZmFuX3Nob3duLnB1c2goRE9NLmZpbmQoZiwn c3Bhbi50b3RhbF9wbHVzJykpO3ZhciBnPURPTS5zY3J5KGYsJ3NwYW4udG90YWwn KSxoPURPTS5zY3J5KGYsJ2Rpdi5ncmlkX2l0ZW0nKTtpZihoLmxlbmd0aD4xKXRo aXMuZmFuX2hpZGRlbi5wdXNoKGhbMV0pO3RoaXMuZmFuX2hpZGRlbi5wdXNoKGdb Zy5sZW5ndGgtMV0pO31pZighdGhpcy5saWtlX21vZGUpe3RoaXMuYnV0dG9uPSQo Yyk7dGhpcy5wb3B1cF91cmk9bmV3IFVSSSgnL2xvZ2luLnBocCcpO3RoaXMucG9w dXBfdXJpLmFkZFF1ZXJ5RGF0YSh7Y29ubmVjdF9pZDp0aGlzLnByb2ZpbGVfaWQs cG9wdXA6dHJ1ZX0pO0V2ZW50Lmxpc3Rlbih0aGlzLmJ1dHRvbiwnY2xpY2snLHRo aXMuY29ubmVjdENsaWNrSGFuZGxlci5iaW5kKHRoaXMpKTt9ZWxzZSBBcmJpdGVy LnN1YnNjcmliZSgncGxhdGZvcm0vbGlrZS9jb25uZWN0aW9uJyx0aGlzLnVwZGF0 ZVdpZGdldEZyb21MaWtlLmJpbmQodGhpcykpO0Nvbm5lY3RXaWRnZXQuaW5zdGFu Y2VzW2NdPXRoaXM7aWYodGhpcy5jaGFubmVsX3VybClYRC5pbml0KHtjaGFubmVs VXJsOnRoaXMuY2hhbm5lbF91cmx9KTt9Q29ubmVjdFdpZGdldC5pbnN0YW5jZXM9 e307Q29ubmVjdFdpZGdldC5pc19jb25uZWN0PXRydWU7Q29ubmVjdFdpZGdldC5w cm90b3R5cGUuc2V0TG9nZ2VkSW49ZnVuY3Rpb24oYSl7dGhpcy52aWV3ZXJfaWQ9 YTtyZXR1cm4gdGhpczt9O0Nvbm5lY3RXaWRnZXQucHJvdG90eXBlLmNvbm5lY3RD bGlja0hhbmRsZXI9ZnVuY3Rpb24oYSl7YS5raWxsKCk7aWYodGhpcy52aWV3ZXJf aWQhPTApe3RoaXMuY29ubmVjdCgpO31lbHNlIHRoaXMucG9wVXBMb2dpbigpO307 Q29ubmVjdFdpZGdldC5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbigpe2lmKCF0 aGlzLmJ1c3kpe3RoaXMuYnVzeT10cnVlO2ZicGFnZV9zZXRfZmFuX3N0YXR1cyh0 aGlzLmJ1dHRvbix0aGlzLnByb2ZpbGVfaWQsdHJ1ZSxmYWxzZSx0aGlzLmNvbm5l Y3REb25lSGFuZGxlci5iaW5kKHRoaXMpLHRoaXMuY29ubmVjdEVycm9ySGFuZGxl ci5iaW5kKHRoaXMpLHRoaXMuZ2V0QXN5bmNEYXRhKCkpO319O0Nvbm5lY3RXaWRn ZXQucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXtpZighdGhpcy5idXN5 KXt0aGlzLmJ1c3k9dHJ1ZTtmYnBhZ2Vfc2V0X2Zhbl9zdGF0dXModGhpcy5idXR0 b24sdGhpcy5wcm9maWxlX2lkLGZhbHNlLGZhbHNlLHRoaXMuY29ubmVjdFVuZG9u ZUhhbmRsZXIuYmluZCh0aGlzKSxmdW5jdGlvbigpe30sdGhpcy5nZXRBc3luY0Rh dGEoKSk7fX07Q29ubmVjdFdpZGdldC5wcm90b3R5cGUuZ2V0QXN5bmNEYXRhPWZ1 bmN0aW9uKCl7dmFyIGE9e3NvdXJjZTonY29ubmVjdCcsaXNfY29ubmVjdDpDb25u ZWN0V2lkZ2V0LmlzX2Nvbm5lY3QsZmFuX29yaWdpbjonZXh0ZXJuYWxfY29ubmVj dCd9O2lmKEVudi5mYl9kdHNnKWEuZmJfZHRzZz1FbnYuZmJfZHRzZztyZXR1cm4g YTt9O0Nvbm5lY3RXaWRnZXQucHJvdG90eXBlLnBvcFVwTG9naW49ZnVuY3Rpb24o KXt3aW5kb3cub3Blbih0aGlzLnBvcHVwX3VyaS50b1N0cmluZygpLCdfYmxhbmsn LCd0b29sYmFyPTAsc3RhdHVzPTAsd2lkdGg9NjI2LGhlaWdodD00MDAnKTt9O0Nv bm5lY3RXaWRnZXQucHJvdG90eXBlLnVwZGF0ZVdpZGdldEZyb21MaWtlPWZ1bmN0 aW9uKGEsYil7aWYoIWIudXNlclByb2ZpbGUpcmV0dXJuO2lmKHRoaXMudXNlcl9w cm9maWxlKXt2YXIgYz1ET00uZmluZCh0aGlzLnVzZXJfcHJvZmlsZSwnaW1nJyks ZD1ET00uZmluZCh0aGlzLnVzZXJfcHJvZmlsZSwnYScpLGU9RE9NLmZpbmQodGhp cy51c2VyX3Byb2ZpbGUsJ2Rpdi5uYW1lJyk7Yy5zcmM9Yi51c2VyUHJvZmlsZS5w aWNfc3F1YXJlO2QuaHJlZj1iLnVzZXJQcm9maWxlLnByb2ZpbGVfdXJsO0RPTS5z ZXRDb250ZW50KGUsYi51c2VyUHJvZmlsZS5uYW1lKTt9dmFyIGY7aWYoYi5ub3dD b25uZWN0ZWQpe2Y9J2xpa2Vib3hMaWtlZCc7dGhpcy5zaG93TmV3RmFuKCk7fWVs

c2V7Zj0nbGlrZWJveFVubGlrZWQnO3RoaXMuaGlkZU5ld0ZhbigpO31pZih0aGlz LmNoYW5uZWxfdXJsKVhELnNlbmQoe3R5cGU6Zn0pO307Q29ubmVjdFdpZGdldC5w cm90b3R5cGUuY29ubmVjdEVycm9ySGFuZGxlcj1mdW5jdGlvbihhKXtpZihhLmVy cm9yPT0xMzU3MDAxKXt0aGlzLnZpZXdlcl9pZD0wO3RoaXMucG9wVXBMb2dpbigp O31lbHNlIGlmKGEuZXJyb3I9PTEzNTcwMTMpe0NTUy5oaWRlKHRoaXMuYnV0dG9u KTt2YXIgYj1ET00uY3JlYXRlKCdhJyx7aHJlZjpET00uZmluZChkb2N1bWVudCwn ZGl2Lm5hbWVfYmxvY2sgYScpLmhyZWYsdGFyZ2V0OidfYmxhbmsnfSwiVmVyaWZp a2FzaSBkaXBlcmx1a2FuIHVudHVrIHRlcmtvbmVrc2kuIik7dGhpcy5zdGF0dXM9 RE9NLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTonY29ubmVjdF9zcGFuJ30sYik7 RE9NLmluc2VydEFmdGVyKHRoaXMuYnV0dG9uLHRoaXMuc3RhdHVzKTt9ZWxzZXtD U1MuaGlkZSh0aGlzLmJ1dHRvbik7aWYoYS5lcnJvcj09MTQzMTAwMSl7dGhpcy5z dGF0dXM9RE9NLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTonY29ubmVjdF9zcGFu J30sIkFuZGEgbWVueXVrYWkgaW5pLiIpO31lbHNlIHRoaXMuc3RhdHVzPURPTS5j cmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J2Nvbm5lY3Rfc3Bhbid9LGEuZ2V0RXJy b3JTdW1tYXJ5KCkrJzogJythLmdldEVycm9yRGVzY3JpcHRpb24oKSk7YW5pbWF0 aW9uKHRoaXMuc3RhdHVzKS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3BhY2l0eScs MSkuZ28oKTtET00uaW5zZXJ0QWZ0ZXIodGhpcy5idXR0b24sdGhpcy5zdGF0dXMp O310aGlzLmJ1c3k9ZmFsc2U7fTtDb25uZWN0V2lkZ2V0LnByb3RvdHlwZS5jb25u ZWN0RG9uZUhhbmRsZXI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRQYXlsb2FkKCk7 aWYoIWJ8fCFiLmZlZWRiYWNrKXJldHVybjt0aGlzLnN0YXR1cz1ET00uY3JlYXRl KCdzcGFuJyx7Y2xhc3NOYW1lOidjb25uZWN0X3NwYW4nfSxIVE1MKGIuZmVlZGJh Y2spKTt2YXIgYz1ET00uY3JlYXRlKCdhJyx7Y2xhc3NOYW1lOid1bmRvJ30sIkJh dGFsa2FuIik7RXZlbnQubGlzdGVuKGMsJ2NsaWNrJyxmdW5jdGlvbihlKXtlLmtp bGwoKTt0aGlzLmRpc2Nvbm5lY3QoKTt9LmJpbmQodGhpcykpO0RPTS5hcHBlbmRD b250ZW50KHRoaXMuc3RhdHVzLGMpO2FuaW1hdGlvbih0aGlzLnN0YXR1cykuZnJv bSgnb3BhY2l0eScsMCkudG8oJ29wYWNpdHknLDEpLmdvKCk7RE9NLmluc2VydEFm dGVyKHRoaXMuYnV0dG9uLHRoaXMuc3RhdHVzKTtDU1MuaGlkZSh0aGlzLmJ1dHRv bik7aWYodGhpcy5uZXdfZmFuIT1udWxsJiZiLmNvbm5lY3RfZmFuX2Rpdil7dmFy IGQ9RE9NLmNyZWF0ZSgnZGl2JyxudWxsLEhUTUwoYi5jb25uZWN0X2Zhbl9kaXYp KTtET00uc2V0Q29udGVudCh0aGlzLm5ld19mYW4sRE9NLmZpbmQoZCwnYScpKTt9 dGhpcy5zaG93TmV3RmFuKCk7dGhpcy5idXN5PWZhbHNlO307Q29ubmVjdFdpZGdl dC5wcm90b3R5cGUuc2hvd05ld0Zhbj1mdW5jdGlvbigpe3RoaXMuZmFuX3Nob3du LmZvckVhY2goZnVuY3Rpb24oYSl7aWYoIUNTUy5oYXNDbGFzcyhhLCdoaWRkZW5f ZWxlbScpKXJldHVybjt2YXIgYj1TdHlsZS5nZXQoYSwnd2lkdGgnKTtTdHlsZS5z ZXQoYSwnd2lkdGgnLDApO1N0eWxlLnNldChhLCdvcGFjaXR5JywwKTtDU1Muc2hv dyhhKTthbmltYXRpb24oYSkudG8oJ3dpZHRoJyxiKS5kdXJhdGlvbigxMDApLmNo ZWNrcG9pbnQoKS50bygnb3BhY2l0eScsMSkuZHVyYXRpb24oNDAwKS5nbygpO30p O3RoaXMuZmFuX2hpZGRlbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NTUy5oaWRlKGEp O30pO307Q29ubmVjdFdpZGdldC5wcm90b3R5cGUuY29ubmVjdFVuZG9uZUhhbmRs ZXI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRQYXlsb2FkKCk7RE9NLnJlbW92ZSh0 aGlzLnN0YXR1cyk7YW5pbWF0aW9uKHRoaXMuYnV0dG9uKS5mcm9tKCdvcGFjaXR5 JywwKS50bygnb3BhY2l0eScsMSkuZ28oKTtDU1Muc2hvdyh0aGlzLmJ1dHRvbik7 dGhpcy5oaWRlTmV3RmFuKCk7dGhpcy5idXN5PWZhbHNlO307Q29ubmVjdFdpZGdl dC5wcm90b3R5cGUuaGlkZU5ld0Zhbj1mdW5jdGlvbigpe3RoaXMuZmFuX3Nob3du LmZvckVhY2goZnVuY3Rpb24oYSl7aWYoQ1NTLmhhc0NsYXNzKGEsJ2hpZGRlbl9l bGVtJykpcmV0dXJuO2FuaW1hdGlvbihhKS50bygnb3BhY2l0eScsMCkuZHVyYXRp b24oMTAwKS5jaGVja3BvaW50KC4yNSkudG8oJ3dpZHRoJywwKS5kdXJhdGlvbigx MDApLm9uZG9uZShmdW5jdGlvbigpe1N0eWxlLnNldChhLCd3aWR0aCcsbnVsbCk7 Q1NTLmhpZGUoYSk7dGhpcy5mYW5faGlkZGVuLmZvckVhY2goZnVuY3Rpb24oYil7 Q1NTLnNob3coYik7fSk7fS5iaW5kKHRoaXMpKS5nbygpO30uYmluZCh0aGlzKSk7 fTtDb25uZWN0V2lkZ2V0LmxvYWRTdHJlYW09ZnVuY3Rpb24oYSxiLGMpe25ldyBB c3luY1JlcXVlc3QoKS5zZXRNZXRob2QoJ0dFVCcpLnNldFVSSSgnL2FqYXgvY29u bmVjdC9jb25uZWN0X3dpZGdldC5waHAnKS5zZXREYXRhKHtpZDphLHVuaXFpZDpi LGZvcmNlX3dhbGw6Y30pLnNldFJlYWRPbmx5KHRydWUpLnNldEVycm9ySGFuZGxl cihiYWdvZmhvbGRpbmcpLnNlbmQoKTt9O0Nvbm5lY3RXaWRnZXQubG9nZ2VkSW49 ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIENvbm5lY3RXaWRnZXQuaW5zdGFuY2Vz KXtDb25uZWN0V2lkZ2V0Lmluc3RhbmNlc1tiXS5zZXRMb2dnZWRJbihhKTtDb25u ZWN0V2lkZ2V0Lmluc3RhbmNlc1tiXS5jb25uZWN0KCk7fX07Q29ubmVjdFdpZGdl dC5zZXRJc0Nvbm5lY3Q9ZnVuY3Rpb24oYSl7Q29ubmVjdFdpZGdldC5pc19jb25u ZWN0PWE7fTs=

------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=Pgp-k-6uuyj.js Content-Type: application/x-javascript; charset=utf-8; name=Pgp-k-6uuyj.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yF/r/Pgp-k-6uuyj.js Content-Transfer-Encoding: Base64 LyoxMzQ0MjIwNTIxLDE2OTc3NjMxOSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIk5ndFlGIl0pOyB9CgpfX2Qo ImxlZ2FjeTpkb20tdW50cnVzdGVkIixbIlVudHJ1c3RlZExpbmsiXSxmdW5jdGlv bihhLGIsYyxkKXthLlVudHJ1c3RlZExpbms9YignVW50cnVzdGVkTGluaycpO30s Myk7CnZhciBQbGF0Zm9ybU9wdEluUG9wdXA9ZnVuY3Rpb24oKXt9O2NvcHlQcm9w ZXJ0aWVzKFBsYXRmb3JtT3B0SW5Qb3B1cCx7RElBTE9HX1VSTDonL2Nvbm5lY3Qv dWlzZXJ2ZXIucGhwJyxESUFMT0dfV0lEVEg6NDIwLERJQUxPR19IRUlHSFQ6NDUw LEFQUF9JRDoxMjc3NjAwODcyMzc2MTAsb3BlbjpmdW5jdGlvbihhLGIsYyl7aWYo IWEpYT0nZ2VuZXJpYyc7aWYoIWIpYj0nb3B0LmluJzt2YXIgZD1uZXcgVVJJKFBs YXRmb3JtT3B0SW5Qb3B1cC5ESUFMT0dfVVJMKTtkLmFkZFF1ZXJ5RGF0YSh7c29j aWFsX3BsdWdpbjphLG1ldGhvZDpiLGRpc3BsYXk6J3BvcHVwJyxzZWN1cmU6VVJJ LmdldFJlcXVlc3RVUkkoKS5pc1NlY3VyZSgpLGFwcF9pZDpQbGF0Zm9ybU9wdElu UG9wdXAuQVBQX0lEfSk7aWYoYylkLmFkZFF1ZXJ5RGF0YShjKTtyZXR1cm4gUG9w dXBSZXNpemVyLm9wZW4oZC50b1N0cmluZygpLFBsYXRmb3JtT3B0SW5Qb3B1cC5E SUFMT0dfV0lEVEgsUGxhdGZvcm1PcHRJblBvcHVwLkRJQUxPR19IRUlHSFQpO319 KTsKZnVuY3Rpb24gQ29ubmVjdFNvY2lhbFdpZGdldChhLGIpe0Nvbm5lY3RTb2Np YWxXaWRnZXQuc2V0SW5zdGFuY2UoYix0aGlzKTtDb25uZWN0U29jaWFsV2lkZ2V0 LmRlbGF5VW50aWxEaXNwbGF5ZWQoZnVuY3Rpb24oKXt0aGlzLmluaXRpYWxpemVP YmplY3QuY2FsbCh0aGlzLGEsYik7fS5iaW5kKHRoaXMpKTt9Y29weVByb3BlcnRp ZXMoQ29ubmVjdFNvY2lhbFdpZGdldCx7T1BUX0lOX0ZBQ0VCT09LX0FQUF9JRDon MTI3NzYwMDg3MjM3NjEwJyxUWVBFX0FDVElWSVRZOidBJyxUWVBFX1JFQ09NTUVO REFUSU9OUzonUicsVFlQRV9MSUtFQk9YOidMJyxpbnN0YW5jZXM6e30sc2V0SW5z dGFuY2U6ZnVuY3Rpb24oYSxiKXtDb25uZWN0U29jaWFsV2lkZ2V0Lmluc3RhbmNl c1thXT1iO30sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oYSl7cmV0dXJuIENvbm5lY3RT b2NpYWxXaWRnZXQuaW5zdGFuY2VzW2FdO30scG9wdXBzOnt9LGxvZ2luOmZ1bmN0 aW9uKGEsYil7Q29ubmVjdFNvY2lhbFdpZGdldC5wb3B1cHNbYl09e3BvcHVwOlBs YXRmb3JtT3B0SW5Qb3B1cC5vcGVuKCdsb2dpbicsJ29wdC5pbicpfTt9LGFEZWxh eWVkRnVuY3Rpb25zOltdLGRlbGF5VW50aWxEaXNwbGF5ZWQ6ZnVuY3Rpb24oYSl7 Q29ubmVjdFNvY2lhbFdpZGdldC5hRGVsYXllZEZ1bmN0aW9ucy5wdXNoKGEpO2lm KENvbm5lY3RTb2NpYWxXaWRnZXQuYURlbGF5ZWRGdW5jdGlvbnMubGVuZ3RoPT09 MSl7aWYoIUNvbm5lY3RTb2NpYWxXaWRnZXQubmRUZXN0RGltKXt2YXIgYj1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxjPXtwb3NpdGlvbjonYWJzb2x1dGUn LHdpZHRoOicxcHgnLGhlaWdodDonMXB4JyxvdmVyZmxvdzonaGlkZGVuJyx0b3A6 JzBweCd9O2Zvcih2YXIgZCBpbiBjKWlmKHR5cGVvZiBjW2RdPT09J3N0cmluZycp U3R5bGUuc2V0KGIsZCxjW2RdKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIp O0Nvbm5lY3RTb2NpYWxXaWRnZXQubmRUZXN0RGltPWI7fUNvbm5lY3RTb2NpYWxX aWRnZXQudGVzdEZvckRpc3BsYXkoKTt9fSx0ZXN0Rm9yRGlzcGxheTpmdW5jdGlv bigpe3ZhciBhPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoQ29ubmVjdFNv Y2lhbFdpZGdldC5uZFRlc3REaW0pLnk7aWYoYSE9PTApe0Nvbm5lY3RTb2NpYWxX aWRnZXQuYURlbGF5ZWRGdW5jdGlvbnMuZm9yRWFjaChmdW5jdGlvbihiKXtiKCk7 fSk7Q29ubmVjdFNvY2lhbFdpZGdldC5hRGVsYXllZEZ1bmN0aW9ucz1bXTt9ZWxz ZSBDb25uZWN0U29jaWFsV2lkZ2V0LnRlc3RGb3JEaXNwbGF5LmRlZmVyKDEwMCk7 fSxsaXN0ZW5Gb3JMb2dpbjpmdW5jdGlvbigpe2lmKCFDb25uZWN0U29jaWFsV2lk Z2V0Lmxpc3RlbmVyQXR0YWNoZWQpe0FyYml0ZXIuc3Vic2NyaWJlKCdwbGF0Zm9y bS9zb2NpYWxwbHVnaW5zL2xvZ2luJyxmdW5jdGlvbihhKXtpZihhLnVzZXIhPT1F bnYudXNlcilkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTt9KTtDb25uZWN0U29j aWFsV2lkZ2V0Lmxpc3RlbmVyQXR0YWNoZWQ9dHJ1ZTt9fX0pO2NvcHlQcm9wZXJ0 aWVzKENvbm5lY3RTb2NpYWxXaWRnZXQucHJvdG90eXBlLHtpbml0aWFsaXplT2Jq ZWN0OmZ1bmN0aW9uKGEsYil7dmFyIGM9RE9NLnNjcnkoZG9jdW1lbnQuYm9keSxh LnNPdmVyZmxvd0NvbnRhaW5lclNlbGVjdG9yKVswXSxkPURPTS5zY3J5KGMsJy5m YkNvbm5lY3RXaWRnZXRGb290ZXInKVswXSxlPWQ/VmVjdG9yMi5nZXRFbGVtZW50 RGltZW5zaW9ucyhkKS55OjAsZj1hLnNPdmVyZmxvd0l0ZW1zU2VsZWN0b3IsZz1E T00uc2NyeShkb2N1bWVudC5ib2R5LGEuc1N0cmVhbUNvbnRhaW5lclNlbGVjdG9y

KVswXTt0aGlzLmZSZW1vdmVPdmVyZmxvd0VsZW1lbnRzPXRoaXMucmVtb3ZlT3Zl cmZsb3dFbGVtZW50cy5iaW5kKHRoaXMsYyxnLGYsLWUpO2NvcHlQcm9wZXJ0aWVz KHRoaXMse2JJbml0aWFsaXplZDp0cnVlLHNXaWRnZXRJZDpiLGlGb290ZXJIZWln aHQ6ZSxuZFRvcDpjLG5kRm9vdGVyOmQsbmRDb250ZW50Q29udGFpbmVyOmcsb1F1 ZXJ5UGFyYW1zOm5ldyBVUkkod2luZG93LmxvY2F0aW9uLmhyZWYpLmdldFF1ZXJ5 RGF0YSgpLGJDb21ib01vZGU6YS5iQ29tYm9Nb2RlLHNPdmVyZmxvd0l0ZW1zU2Vs ZWN0b3I6Zn0pO3RoaXMub1F1ZXJ5UGFyYW1zLnVzZXI9RW52LnVzZXI7dGhpcy5m UmVtb3ZlT3ZlcmZsb3dFbGVtZW50cygpO1N0eWxlLnNldChnLCd2aXNpYmlsaXR5 JywndmlzaWJsZScpO2FuaW1hdGlvbihnKS5mcm9tKCdvcGFjaXR5JywwKS50bygn b3BhY2l0eScsMSkuZHVyYXRpb24oMjAwKS5nbygpO0Nvbm5lY3RTb2NpYWxXaWRn ZXQubGlzdGVuRm9yTG9naW4oKTt9LGdldEVsZW1lbnRUb3A6ZnVuY3Rpb24oYSl7 dmFyIGI9RE9NLnNjcnkoYSwnXicrdGhpcy5zT3ZlcmZsb3dJdGVtc1NlbGVjdG9y KTtyZXR1cm4gYlswXTt9LGdldEl0ZW1Qb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIg Yj1ET00uc2NyeSh0aGlzLm5kQ29udGVudENvbnRhaW5lcix0aGlzLnNPdmVyZmxv d0l0ZW1zU2VsZWN0b3IpLGM9Yi5sZW5ndGgsZD1iLmluZGV4T2YoYSkrMTtyZXR1 cm4gZCsnLycrYzt9LHJlbW92ZU92ZXJmbG93RWxlbWVudHM6ZnVuY3Rpb24oYSxi LGMsZCxlKXt2YXIgZixnPWM/RE9NLnNjcnkoYixjKTokQShiLmNoaWxkTm9kZXMp O2lmKCFlKXt2YXIgZD1kfHwwLGg9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9u cyhhKS55K2QsaT1WZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlvbihhKS55O2U9aCtp O313aGlsZShnLmxlbmd0aD4wJiYoZj0kKGcucG9wKCkpKSYmKFZlY3RvcjIuZ2V0 RWxlbWVudERpbWVuc2lvbnMoZikueStWZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlv bihmKS55KT5lKURPTS5yZW1vdmUoZik7fSxsb2dpbjpmdW5jdGlvbigpe0Nvbm5l Y3RTb2NpYWxXaWRnZXQubG9naW4odGhpcy5hcHBJRCx0aGlzLnNXaWRnZXRJZCk7 fSx0b2dnbGVMb2dpbjpmdW5jdGlvbigpe0RPTS5zY3J5KHRoaXMubmRUb3AsJy5m YlRvZ2dsZUxvZ2luJykuZm9yRWFjaChmdW5jdGlvbihhKXtDU1MudG9nZ2xlKGEp O30pO3RoaXMuZlJlbW92ZU92ZXJmbG93RWxlbWVudHMoKTt9fSk7ZnVuY3Rpb24g QWN0aXZpdHlXaWRnZXQoYSxiKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxh LGIpO31DbGFzcy5leHRlbmQoQWN0aXZpdHlXaWRnZXQsJ0Nvbm5lY3RTb2NpYWxX aWRnZXQnKTtBY3Rpdml0eVdpZGdldC5SRVFVRVNUX0lOVEVSVkFMPTE1KjEwMDA7 QWN0aXZpdHlXaWRnZXQuQUNUSVZJVFlfSEVJR0hUPTQ1O0FjdGl2aXR5V2lkZ2V0 Lk1BWF9JTlRFUlZBTD0zMDtBY3Rpdml0eVdpZGdldC5NQVhfSVRFTVM9MjQ7Y29w eVByb3BlcnRpZXMoQWN0aXZpdHlXaWRnZXQucHJvdG90eXBlLHtpbml0aWFsaXpl T2JqZWN0OmZ1bmN0aW9uKGEsYil7dGhpcy5wYXJlbnQuaW5pdGlhbGl6ZU9iamVj dC5jYWxsKHRoaXMsYSxiKTt0aGlzLm9RdWVyeVBhcmFtcy5uYl9hY3Rpdml0aWVz PU1hdGgubWluKEFjdGl2aXR5V2lkZ2V0Lk1BWF9JVEVNUyxNYXRoLnJvdW5kKCh0 aGlzLm9RdWVyeVBhcmFtcy5oZWlnaHR8fDMwMCkvQWN0aXZpdHlXaWRnZXQuQUNU SVZJVFlfSEVJR0hUKSk7dGhpcy5vUXVlcnlQYXJhbXMubmV3ZXN0PWEuaU5ld2Vz dFN0b3J5VGltZXx8MDt9LHJlbW92ZU92ZXJmbG93RWxlbWVudHM6ZnVuY3Rpb24o KXtpZih0aGlzLmJDb21ib01vZGUmJiF0aGlzLmJGaXJzdFJvdW5kKXt0aGlzLmJG aXJzdFJvdW5kPXRydWU7dmFyIGE9VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24o dGhpcy5uZFRvcCkueSxiPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoZG9j dW1lbnQuYm9keSkueS0oYSt0aGlzLmlGb290ZXJIZWlnaHQpLGM9TWF0aC5yb3Vu ZChiLzIpLGQ9JEEoYXJndW1lbnRzKTtkW2QubGVuZ3RoXT1jO0Nvbm5lY3RTb2Np YWxXaWRnZXQucHJvdG90eXBlLnJlbW92ZU92ZXJmbG93RWxlbWVudHMuYXBwbHko dGhpcyxkKTt9ZWxzZSBDb25uZWN0U29jaWFsV2lkZ2V0LnByb3RvdHlwZS5yZW1v dmVPdmVyZmxvd0VsZW1lbnRzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9LGhhc0Zy aWVuZHNBY3Rpdml0eTpmdW5jdGlvbigpe3JldHVybiBET00uc2NyeSh0aGlzLm5k Q29udGVudENvbnRhaW5lciwnZGl2LmZiRnJpZW5kc0FjdGl2aXR5JylbMF0uY2hp bGROb2Rlcy5sZW5ndGg+MDt9LGhhc0NvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4g RE9NLnNjcnkodGhpcy5uZFRvcCx0aGlzLnNPdmVyZmxvd0l0ZW1zU2VsZWN0b3Ip Lmxlbmd0aD4wO30sZ2V0RW1wdHlNZXNzYWdlOmZ1bmN0aW9uKCl7cmV0dXJuIERP TS5maW5kKHRoaXMubmRDb250ZW50Q29udGFpbmVyLCdkaXYuZmJFbXB0eVdpZGdl dCcpO30sc2hvd0VtcHR5TWVzc2FnZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0 RW1wdHlNZXNzYWdlKCk7aWYoYSlDU1Muc2hvdyhhKTt9fSk7ZnVuY3Rpb24gUmVj b21tZW5kYXRpb25zV2lkZ2V0KGEsYil7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRo aXMsYSxiKTt9Q2xhc3MuZXh0ZW5kKFJlY29tbWVuZGF0aW9uc1dpZGdldCwnQ29u bmVjdFNvY2lhbFdpZGdldCcpO2NvcHlQcm9wZXJ0aWVzKFJlY29tbWVuZGF0aW9u c1dpZGdldC5wcm90b3R5cGUse2luaXRpYWxpemVPYmplY3Q6ZnVuY3Rpb24oYSxi KXt0aGlzLnBhcmVudC5pbml0aWFsaXplT2JqZWN0LmNhbGwodGhpcyxhLGIpO3Ro aXMuc0FjdGl2aXR5UGFyZW50PWEuc0FjdGl2aXR5UGFyZW50O3RoaXMuY3JvcElt

YWdlcyhET00uc2NyeSh0aGlzLm5kQ29udGVudENvbnRhaW5lciwiLmZiSW1hZ2VD b250YWluZXIgaW1nIiksUmVjb21tZW5kYXRpb25zV2lkZ2V0LklNQUdFX0hFSUdI VCx0cnVlKTt0aGlzLmNyb3BJbWFnZXMoRE9NLnNjcnkodGhpcy5uZENvbnRlbnRD b250YWluZXIsImltZy5mYkdhbGxlcnlJbWFnZSIpLFJlY29tbWVuZGF0aW9uc1dp ZGdldC5HQUxMRVJZX0lNQUdFX0hFSUdIVCxmYWxzZSk7fSxjcm9wSW1hZ2VzOmZ1 bmN0aW9uKGEsYixjKXtpZihhLmxlbmd0aD4wKXt2YXIgZD1mdW5jdGlvbihldmVu dCl7UmVjb21tZW5kYXRpb25zV2lkZ2V0LmltYWdlX3Jlc2l6ZSh7aW1hZ2U6ZXZl bnQuZ2V0VGFyZ2V0KCksZGltZW5zaW9uOmIsY2VudGVyaW1hZ2U6Y30pO307YS5m b3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuY29tcGxldGUpe1JlY29tbWVuZGF0aW9u c1dpZGdldC5pbWFnZV9yZXNpemUoe2ltYWdlOmUsZGltZW5zaW9uOmIsY2VudGVy aW1hZ2U6Y30pO31lbHNlIEV2ZW50Lmxpc3RlbihlLCdsb2FkJyxkKTt9KTt9fSxo YXNDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmRDb250ZW50Q29udGFp bmVyLmNoaWxkTm9kZXMubGVuZ3RoPjA7fSxnZXRQYXJlbnQ6ZnVuY3Rpb24oKXtp Zih0aGlzLnNBY3Rpdml0eVBhcmVudClyZXR1cm4gQ29ubmVjdFNvY2lhbFdpZGdl dC5nZXRJbnN0YW5jZSh0aGlzLnNBY3Rpdml0eVBhcmVudCk7fSxzaG93UmVjb21t ZW5kYXRpb25zU2VwYXJhdG9yOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRQYXJl bnQoKTtpZihhJiZhLmhhc0NvbnRlbnQoKSl7dmFyIGI9RE9NLnNjcnkodGhpcy5u ZFRvcCwnZGl2LmZiUmVjb21tZW5kYXRpb25zU2VwYXJhdG9yJylbMF07Q1NTLnNo b3coYik7U3R5bGUuc2V0KGIsJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7fXJldHVy biB0aGlzO30scmVtb3ZlT3ZlcmZsb3dFbGVtZW50czpmdW5jdGlvbigpe0Nvbm5l Y3RTb2NpYWxXaWRnZXQucHJvdG90eXBlLnJlbW92ZU92ZXJmbG93RWxlbWVudHMu YXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKHRoaXMuc0FjdGl2aXR5UGFyZW50JiYh dGhpcy5oYXNDb250ZW50KCkpe3ZhciBhPURPTS5zY3J5KHRoaXMubmRUb3AsJ2Rp di5mYlJlY29tbWVuZGF0aW9uc1NlcGFyYXRvcicpWzBdO0NTUy5oaWRlKGEpO319 fSk7UmVjb21tZW5kYXRpb25zV2lkZ2V0LklNQUdFX0hFSUdIVD0zNTtSZWNvbW1l bmRhdGlvbnNXaWRnZXQuR0FMTEVSWV9JTUFHRV9IRUlHSFQ9MTA1O2Z1bmN0aW9u IExpa2VCb3hXaWRnZXQoYSxiKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxh LGIpO31DbGFzcy5leHRlbmQoTGlrZUJveFdpZGdldCwnQ29ubmVjdFNvY2lhbFdp ZGdldCcpO2NvcHlQcm9wZXJ0aWVzKExpa2VCb3hXaWRnZXQucHJvdG90eXBlLHt9 KTtSZWNvbW1lbmRhdGlvbnNXaWRnZXQuaW1hZ2VfcmVzaXplPWZ1bmN0aW9uKGEp e3ZhciBiPWEuaW1hZ2UsYz1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKGIp LGQ9Yy55LGU9Yy54LGY9YS5kaW1lbnNpb24sZz1mKydweCcsaD1hLmNlbnRlcmlt YWdlO2lmKGQ8PTV8fGU8PTUpcmV0dXJuO3ZhciBpPWQvZTtpZihpPC41fHxpPjIp cmV0dXJuO2lmKGQ9PT1lKXtTdHlsZS5zZXQoYiwnd2lkdGgnLGcpO31lbHNlIGlm KGQ8ZSl7dmFyIGo9Zi9kLGs9LU1hdGgucm91bmQoKGUtZCkqai8yKTtTdHlsZS5z ZXQoYiwnaGVpZ2h0JyxnKTtoJiZTdHlsZS5zZXQoYiwnbWFyZ2luTGVmdCcsaysn cHgnKTt9ZWxzZXt2YXIgaj1mL2UsbD0tTWF0aC5yb3VuZCgoZC1lKSpqLzIpO1N0 eWxlLnNldChiLCd3aWR0aCcsZyk7aCYmU3R5bGUuc2V0KGIsJ21hcmdpblRvcCcs bCsncHgnKTt9U3R5bGUuc2V0KGIsJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7U3R5 bGUuc2V0KGIucGFyZW50Tm9kZSwnYmFja2dyb3VuZCcsJ3RyYW5zcGFyZW50Jyk7 dmFyIG09UGFyZW50LmJ5Q2xhc3MoYiwnZmJSZWNvbW1lbmRhdGlvbicpO2lmKG0p Q1NTLnJlbW92ZUNsYXNzKG0sJ2ludmlzaWJsZV9lbGVtJyk7fTs= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=qdLZMQ3_YOj.js Content-Type: application/x-javascript; charset=utf-8; name=qdLZMQ3_YOj.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yn/r/qdLZMQ3_YOj.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDI5NzU0LDE3MzIxNzU5OSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbInlCQ2hoIl0pOyB9CgpfX2Qo ImxlZ2FjeTppbnRsLWxvY2FsZSIsWyJMb2NhbGUiXSxmdW5jdGlvbihhLGIsYyxk KXthLmludGxfbG9jYWxlX2lzX3J0bD1iKCdMb2NhbGUnKS5pc1JUTDt9LDMpOwpf X2QoImxlZ2FjeTpjb250cm9sLXRleHRhcmVhIixbIlRleHRBcmVhQ29udHJvbCJd LGZ1bmN0aW9uKGEsYixjLGQpe2EuVGV4dEFyZWFDb250cm9sPWIoJ1RleHRBcmVh Q29udHJvbCcpO30sMyk7Cl9fZCgibWVyZ2VPYmplY3RzIixbImNvcHlQcm9wZXJ0 aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2NvcHlQcm9wZXJ0 aWVzJyk7ZnVuY3Rpb24gaCgpe3ZhciBpPXt9O2Zvcih2YXIgaj0wO2o8YXJndW1l bnRzLmxlbmd0aDtqKyspZyhpLGFyZ3VtZW50c1tqXSk7cmV0dXJuIGk7fWUuZXhw b3J0cz1oO30pOwpfX2QoImxlZ2FjeTpvYmplY3QtZXh0ZW5zaW9ucyIsWyJhcmVP

YmplY3RzRXF1YWwiLCJjb2FsZXNjZSIsImlzU2NhbGFyIiwibWVyZ2VPYmplY3Rz IiwiZ2V0T2JqZWN0VmFsdWVzIiwiY3JlYXRlT2JqZWN0RnJvbSJdLGZ1bmN0aW9u KGEsYixjLGQpe2EuYXJlX2VxdWFsPWIoJ2FyZU9iamVjdHNFcXVhbCcpO2EuY29h bGVzY2U9YignY29hbGVzY2UnKTthLmNvdW50PWZ1bmN0aW9uKGYpe3JldHVybiBP YmplY3Qua2V5cyhmKS5sZW5ndGg7fTthLmlzX3NjYWxhcj1iKCdpc1NjYWxhcicp O2Eua2V5cz1PYmplY3Qua2V5czthLm1lcmdlPWIoJ21lcmdlT2JqZWN0cycpO2Eu dmFsdWVzPWIoJ2dldE9iamVjdFZhbHVlcycpO3ZhciBlPWIoJ2NyZWF0ZU9iamVj dEZyb20nKTtPYmplY3QuZnJvbT1mdW5jdGlvbihmLGcpe3JldHVybiBlKGYsZyk7 fTt9LDMpOwpmdW5jdGlvbiBPcGVuSURSZXF1ZXN0KCl7dmFyIGE9bmV3IEFzeW5j UmVxdWVzdCgpLnNldFJlYWRPbmx5KHRydWUpLnNldEhhbmRsZXIodGhpcy5hc3lu Y1Jlc3BvbnNlSGFuZGxlci5iaW5kKHRoaXMpKS5zZXRFcnJvckhhbmRsZXIodGhp cy5hc3luY0Vycm9ySGFuZGxlci5iaW5kKHRoaXMpKTtjb3B5UHJvcGVydGllcyh0 aGlzLHtvcGVuaWRVcmw6bnVsbCxyZXF1ZXN0SWQ6T3BlbklEUmVxdWVzdC5tYXhS ZXF1ZXN0SWQrKyxzdWNjZXNzUmVzcG9uc2VIYW5kbGVyOm51bGwsY2FuY2VsSGFu ZGxlcjpudWxsLGludGVybWVkaWF0ZUhhbmRsZXI6bnVsbCxpbW1lZGlhdGVNb2Rl OmZhbHNlLHVzZUV4dGVuc2lvbnM6dHJ1ZSx0aGlyZFBhcnR5TG9naW46ZmFsc2Us cG9wdXBXaW5kb3c6bnVsbCxhc3luY1JlcXVlc3Q6YSxyZXRyeUNvdW50OjB9KTtP cGVuSURSZXF1ZXN0LnJlcXVlc3RzW3RoaXMucmVxdWVzdElkXT10aGlzO31PcGVu SURSZXF1ZXN0LmdldFJlcXVlc3RCeUlkPWZ1bmN0aW9uKGEpe3JldHVybiBPcGVu SURSZXF1ZXN0LnJlcXVlc3RzW2FdO307T3BlbklEUmVxdWVzdC5wcm90b3R5cGUu c2V0T3BlbklEVXJsPWZ1bmN0aW9uKGEpe3RoaXMub3BlbmlkVXJsPWE7cmV0dXJu IHRoaXM7fTtPcGVuSURSZXF1ZXN0LnByb3RvdHlwZS5zZXRTdWNjZXNzSGFuZGxl cj1mdW5jdGlvbihhKXt0aGlzLnN1Y2Nlc3NSZXNwb25zZUhhbmRsZXI9YTtyZXR1 cm4gdGhpczt9O09wZW5JRFJlcXVlc3QucHJvdG90eXBlLnNldEVycm9ySGFuZGxl cj1mdW5jdGlvbihhKXt0aGlzLmVycm9ySGFuZGxlcj1hO3JldHVybiB0aGlzO307 T3BlbklEUmVxdWVzdC5wcm90b3R5cGUuc2V0Q2FuY2VsSGFuZGxlcj1mdW5jdGlv bihhKXt0aGlzLmNhbmNlbEhhbmRsZXI9YTtyZXR1cm4gdGhpczt9O09wZW5JRFJl cXVlc3QucHJvdG90eXBlLnNldEltbWVkaWF0ZU1vZGU9ZnVuY3Rpb24oYSl7dGhp cy5pbW1lZGlhdGVNb2RlPWE7cmV0dXJuIHRoaXM7fTtPcGVuSURSZXF1ZXN0LnBy b3RvdHlwZS5zZXRVc2VFeHRlbnNpb25zPWZ1bmN0aW9uKGEpe3RoaXMudXNlRXh0 ZW5zaW9ucz1hO3JldHVybiB0aGlzO307T3BlbklEUmVxdWVzdC5wcm90b3R5cGUu c2V0SW50ZXJtZWRpYXRlSGFuZGxlcj1mdW5jdGlvbihhKXt0aGlzLmludGVybWVk aWF0ZUhhbmRsZXI9YTtyZXR1cm4gdGhpczt9O09wZW5JRFJlcXVlc3QucHJvdG90 eXBlLnNldFRoaXJkUGFydHlMb2dpbj1mdW5jdGlvbihhKXt0aGlzLnRoaXJkUGFy dHlMb2dpbj1hO3JldHVybiB0aGlzO307T3BlbklEUmVxdWVzdC5wcm90b3R5cGUu c2VuZD1mdW5jdGlvbigpe2lmKCF0aGlzLm9wZW5pZFVybCl0aHJvdyAib3Blbmlk VXJsIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyLiBDYWxsIHNldE9wZW5JRFVybCgp Ijt1cmk9dGhpcy5jYWxjdWxhdGVSZWRpcmVjdFVybCgpO2lmKCF1cmkpe3RoaXMu bG9nTWV0cmljcygncmVkaXJlY3RVcmxOb3RGb3VuZCcpO3JldHVybjt9aWYodGhp cy5pbW1lZGlhdGVNb2RlKXt0aGlzLmNyZWF0ZUhpZGRlbklmcmFtZSh1cmkpO31l bHNle2lmKHRoaXMucG9wdXBXaW5kb3cpdGhyb3cgIk9wZW5JRCBwb3B1cCBpcyBh bHJlYWR5IGluIHByb2dyZXNzIjt0aGlzLnNob3dQb3B1cCh1cmkpO310aGlzLmxv Z01ldHJpY3MoJ3JlcXVlc3RTZW50Jyk7fTtPcGVuSURSZXF1ZXN0LnByb3RvdHlw ZS5jYWxjdWxhdGVSZWRpcmVjdFVybD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmlt bWVkaWF0ZU1vZGU/J2NoZWNraWRfaW1tZWRpYXRlJzonY2hlY2tpZF9zZXR1cCcs Yz17J29wZW5pZC5tb2RlJzpifSxkO2lmKCFPcGVuSURSZXF1ZXN0LmNhY2hlW3Ro aXMub3BlbmlkVXJsXSlyZXR1cm4gbnVsbDtkPU9wZW5JRFJlcXVlc3QuY2FjaGVb dGhpcy5vcGVuaWRVcmxdLnVybDt2YXIgZT1VUkkoVVJJKGQpLmdldFF1ZXJ5RGF0 YSgpWydvcGVuaWQucmV0dXJuX3RvJ10pO2UuYWRkUXVlcnlEYXRhKHtjb250ZXh0 Ok9wZW5JRFJlcXVlc3QuY29udGV4dCxyZXF1ZXN0X2lkOnRoaXMucmVxdWVzdElk fSk7Y1snb3BlbmlkLnJldHVybl90byddPWUudG9TdHJpbmcoKTtjLnRoaXJkX3Bh cnR5X2xvZ2luPXRoaXMudGhpcmRQYXJ0eUxvZ2luO3JldHVybiBVUkkoZCkuYWRk UXVlcnlEYXRhKGMpLmdldFF1YWxpZmllZFVSSSgpO307T3BlbklEUmVxdWVzdC5w cm90b3R5cGUuY3JlYXRlSGlkZGVuSWZyYW1lPWZ1bmN0aW9uKGEpe3ZhciBiPSdv cGVuaWRfcmVxdWVzdF8nK3RoaXMucmVxdWVzdElkLGM9ZG9jdW1lbnQuYm9keS5h cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSksZD1mdW5j dGlvbigpe2MuaW5uZXJIVE1MPSgnPGlmcmFtZSBuYW1lPSInK2IrJyInKycgc3Jj PSInK2EudG9TdHJpbmcoKSsnIicrJyBzY3JvbGxpbmc9Im5vIiAnKycgZnJhbWVi b3JkZXI9IjAiIGNsYXNzPSJoaWRkZW5fZWxlbSI+PC9pZnJhbWU+Jyk7fTtpZih1 YS5pZSgpKXtjLmlubmVySFRNTD0nPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6ZmFs

c2UiPjwvaWZyYW1lPic7ZC5kZWZlcigpO31lbHNlIGQoKTt9O09wZW5JRFJlcXVl c3QucHJvdG90eXBlLnNob3dQb3B1cD1mdW5jdGlvbihhKXtpZihPcGVuSURSZXF1 ZXN0LmNhY2hlW3RoaXMub3BlbmlkVXJsXSlwb3B1cERpbWVuc2lvbnM9T3BlbklE UmVxdWVzdC5jYWNoZVt0aGlzLm9wZW5pZFVybF0ucG9wdXBfZGltZW5zaW9ucztp Zih0eXBlb2YocG9wdXBEaW1lbnNpb25zKT09InVuZGVmaW5lZCJ8fCFwb3B1cERp bWVuc2lvbnN8fCFwb3B1cERpbWVuc2lvbnMuaGVpZ2h0fHwhcG9wdXBEaW1lbnNp b25zLndpZHRoKXBvcHVwRGltZW5zaW9ucz17aGVpZ2h0Oic1ODAnLHdpZHRoOic3 OTAnfTt2YXIgYj17eDpjb2FsZXNjZSh3aW5kb3cuc2NyZWVuWCx3aW5kb3cuc2Ny ZWVuTGVmdCkseTpjb2FsZXNjZSh3aW5kb3cuc2NyZWVuWSx3aW5kb3cuc2NyZWVu VG9wKSx3aWR0aDpjb2FsZXNjZSh3aW5kb3cub3V0ZXJXaWR0aCxkb2N1bWVudC5i b2R5LmNsaWVudFdpZHRoKSxoZWlnaHQ6Y29hbGVzY2Uod2luZG93Lm91dGVySGVp Z2h0LGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KX0sYz1iLngrKChiLndpZHRo LXBvcHVwRGltZW5zaW9ucy53aWR0aCkvMiksZD1iLnkrKChiLmhlaWdodC1wb3B1 cERpbWVuc2lvbnMuaGVpZ2h0KS8yKSxlPVsibG9jYXRpb249eWVzIiwic2Nyb2xs YmFycz0xIiwibGVmdD0iK2MsInRvcD0iK2QsInJlc2l6YWJsZT15ZXMiLCJoZWln aHQ9Iitwb3B1cERpbWVuc2lvbnMuaGVpZ2h0LCJ3aWR0aD0iK3BvcHVwRGltZW5z aW9ucy53aWR0aF0uam9pbigiLCIpO3RoaXMucG9wdXBXaW5kb3c9d2luZG93Lm9w ZW4oYS50b1N0cmluZygpLCdfYmxhbmsnLGUpO3RoaXMucG9wdXBQb2xsSW50ZXJ2 YWw9c2V0SW50ZXJ2YWwodGhpcy5wb2xsUG9wdXBXaW5kb3cuYmluZCh0aGlzKSwx MDApO3RoaXMucG9wdXBXaW5kb3cuZm9jdXMoKTt9O09wZW5JRFJlcXVlc3QucHJv dG90eXBlLnBvbGxQb3B1cFdpbmRvdz1mdW5jdGlvbigpe2lmKCEodGhpcy5wb3B1 cFBvbGxJbnRlcnZhbCYmdGhpcy5wb3B1cFdpbmRvdykpcmV0dXJuO2lmKHRoaXMu cG9wdXBXaW5kb3cuY2xvc2VkKXtjbGVhckludGVydmFsKHRoaXMucG9wdXBQb2xs SW50ZXJ2YWwpO3RoaXMuY2FuY2VsKCk7fX07T3BlbklEUmVxdWVzdC5wcm90b3R5 cGUuY2xvc2VQb3B1cElmT3Blbj1mdW5jdGlvbigpe2lmKHRoaXMucG9wdXBXaW5k b3cpe2lmKHRoaXMucG9wdXBQb2xsSW50ZXJ2YWwpY2xlYXJJbnRlcnZhbCh0aGlz LnBvcHVwUG9sbEludGVydmFsKTt0aGlzLnBvcHVwV2luZG93LmNsb3NlKCk7fXRo aXMucG9wdXBXaW5kb3c9bnVsbDt9O09wZW5JRFJlcXVlc3QucHJvdG90eXBlLmNh bmNlbD1mdW5jdGlvbigpe3RoaXMuY2xvc2VQb3B1cElmT3BlbigpO2lmKHRoaXMu Y2FuY2VsSGFuZGxlcil0aGlzLmNhbmNlbEhhbmRsZXIoKTt0aGlzLmxvZ01ldHJp Y3MoJ3JlcXVlc3RDYW5jZWxlZCcpO307T3BlbklEUmVxdWVzdC5wcm90b3R5cGUu bG9nTWV0cmljcz1mdW5jdGlvbihhKXtuZXcgQXN5bmNTaWduYWwoJy9hamF4L29w ZW5pZC9tZXRyaWNzLnBocCcse21ldHJpYzphLGltbWVkaWF0ZTp0aGlzLmltbWVk aWF0ZU1vZGUsY29udGV4dDpPcGVuSURSZXF1ZXN0LmNvbnRleHQsb3BlbmlkX3Vy bDp0aGlzLm9wZW5pZFVybH0pLnNlbmQoKTt9O09wZW5JRFJlcXVlc3QucHJvdG90 eXBlLnRyaWdnZXJDb21wbGV0ZUF1dGhBc3luYz1mdW5jdGlvbihhKXtpZihhLmNo YXJBdCgwKT09Jz8nfHxhLmNoYXJBdCgwKT09JyYnKWE9YS5zdWJzdHIoMSk7dmFy IGI9VVJJLmV4cGxvZGVRdWVyeShhKTt0aGlzLmNsb3NlUG9wdXBJZk9wZW4oKTtp ZihiWydvcGVuaWQubW9kZSddPT0nY2FuY2VsJyl7dGhpcy5jYW5jZWwoKTtyZXR1 cm47fWlmKHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcil0aGlzLmludGVybWVkaWF0 ZUhhbmRsZXIoKTt0aGlzLmFzeW5jUmVxdWVzdC5zZXREYXRhKHtvcGVuaWRfcGFy YW1zOmJ9KS5zZW5kKCk7fTtPcGVuSURSZXF1ZXN0LnByb3RvdHlwZS5hc3luY1Jl c3BvbnNlSGFuZGxlcj1mdW5jdGlvbihhKXt2YXIgYj1hLmdldFBheWxvYWQoKTtp Zih0aGlzLnN1Y2Nlc3NSZXNwb25zZUhhbmRsZXIpdGhpcy5zdWNjZXNzUmVzcG9u c2VIYW5kbGVyKGIpO3RoaXMuY2xvc2VQb3B1cElmT3BlbigpO307T3BlbklEUmVx dWVzdC5wcm90b3R5cGUuY2xlYW5IYW5kbGVSZXNwb25zZT1mdW5jdGlvbihhKXtp ZihhLmNzcylhLmNzcz0kQShhLmNzcyk7dGhpcy5hc3luY1JlcXVlc3QuaGFuZGxl UmVzcG9uc2UoYSk7fTtPcGVuSURSZXF1ZXN0LnByb3RvdHlwZS5hc3luY0Vycm9y SGFuZGxlcj1mdW5jdGlvbihhKXt0aGlzLmNsb3NlUG9wdXBJZk9wZW4oKTtpZihh LmVycm9yPT0xNDI4MDEwfHxhLmVycm9yPT0xNDI4MDExKXt0aGlzLmNhbmNlbCgp O3JldHVybjt9aWYodGhpcy5lcnJvckhhbmRsZXIpdGhpcy5lcnJvckhhbmRsZXIo YSk7fTtPcGVuSURSZXF1ZXN0LnByb3RvdHlwZS5yZXRyeT1mdW5jdGlvbigpeysr dGhpcy5yZXRyeUNvdW50O3RoaXMucmVxdWVzdElkPU9wZW5JRFJlcXVlc3QubWF4 UmVxdWVzdElkKys7dGhpcy5zZW5kKCk7fTtPcGVuSURSZXF1ZXN0LnByb3RvdHlw ZS5zZXRQcm92aWRlckNhY2hlPWZ1bmN0aW9uKGEpe09wZW5JRFJlcXVlc3QuY2Fj aGU9YTtyZXR1cm4gdGhpczt9O09wZW5JRFJlcXVlc3QuY2FjaGU9e307T3BlbklE UmVxdWVzdC5yZXF1ZXN0cz1bXTtPcGVuSURSZXF1ZXN0Lm1heFJlcXVlc3RJZD0w O09wZW5JRFJlcXVlc3QuY29udGV4dD0nZGVmYXVsdCc7Cl9fZCgibGVnYWN5OlRp bWVsaW5lQ29udHJvbGxlciIsWyJUaW1lbGluZUNvbnRyb2xsZXIiXSxmdW5jdGlv bihhLGIsYyxkKXthLlRpbWVsaW5lQ29udHJvbGxlcj1iKCdUaW1lbGluZUNvbnRy

b2xsZXInKTt9LDMpOw== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=hIBLG2xuv5r.js Content-Type: application/x-javascript; charset=utf-8; name=hIBLG2xuv5r.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y5/r/hIBLG2xuv5r.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDM0MzczLDE3ODE0MjQ5MSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjJxeFkxIl0pOyB9CgpfX2Qo ImxlZ2FjeTpwbGFjZWhvbGRlci1mb3JtLWxpc3RlbmVyIixbIlBsYWNlaG9sZGVy TGlzdGVuZXIiXSxmdW5jdGlvbihhLGIsYyxkKXtiKCdQbGFjZWhvbGRlckxpc3Rl bmVyJyk7fSwzKTs= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=CFGZ7MX8jji.js Content-Type: application/x-javascript; charset=utf-8; name=CFGZ7MX8jji.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yc/r/CFGZ7MX8jji.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDM0Mzc0LDE3ODE0MjQ5MSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjlabFdBIl0pOyB9CgpfX2Qo ImxlZ2FjeTpwbGFjZWhvbGRlci1vbnN1Ym1pdC1mb3JtLWxpc3RlbmVyIixbIlBs YWNlaG9sZGVyT25zdWJtaXRGb3JtTGlzdGVuZXIiXSxmdW5jdGlvbihhLGIsYyxk KXtiKCdQbGFjZWhvbGRlck9uc3VibWl0Rm9ybUxpc3RlbmVyJyk7fSwzKTs= ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=lhckqK-ynOk.js Content-Type: application/x-javascript; charset=utf-8; name=lhckqK-ynOk.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/y0/r/lhckqK-ynOk.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDM0Mzc0LDE3ODE0MjU1OSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjZTNzRGIl0pOyB9Cgp2YXIg RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldD1mdW5jdGlvbihhKXtjb3B5UHJvcGVy dGllcyh0aGlzLHt3aWRnZXRJRDphLndpZGdldElELHdpZGdldDokKGEud2lkZ2V0 SUQpLHZpZXdlcklEOmEudmlld2VyLG5vZGVUeXBlOmEubm9kZVR5cGUsdmlld2Vy SXNBZG1pbjphLnZpZXdlcklzQWRtaW4mJiFhLnVzZXJPcHRlZE91dCxhZG1pblVy bDphLmFkbWluVXJsLHBvcHVwT3B0SW5QYXJhbXM6e30sbm9kZVVyaTpuZXcgVVJJ KGEubm9kZVVSTCksZXh0ZXJuYWxVcmw6YS5leHRlcm5hbFVSTCxwYWdlSWQ6YS5w YWdlSWQsZG9tYWluSWQ6YS5kb21haW5JZCxsYXlvdXQ6YS5sYXlvdXQsZWRnZVR5 cGU6YS5lZGdlVHlwZSxlcnJvcjphLmVycm9yLGVycm9yVVJJOm5ldyBVUkkoJy8n KSxhbHJlYWR5Q29ubmVjdGVkOmEuYWxyZWFkeUNvbm5lY3RlZCx1c2luZ0Nvbm5l Y3RMaWJyYXJ5OiEhYS5jaGFubmVsVVJMLGNvbW1lbnRXaWRnZXRNYXJrdXA6YS5j b21tZW50V2lkZ2V0TWFya3VwLGNvbW1lbnRXaWRnZXRPcGVuOmZhbHNlLGNvbW1l bnRXaWRnZXRWaXNpYmxlOmZhbHNlLHVzZXJQcm9maWxlOm51bGwsY29ubmVjdFN0 b3J5RmJpZDowLGlzQW1iaWd1b3VzVGV4dDphLmlzQW1iaWd1b3VzVGV4dCxzb2Np YWxCYXI6YS5zb2NpYWxiYXIsdXNlRGlzY29ubmVjdExpbms6YS51c2VEaXNjb25u ZWN0TGluayxzaG93RXJyb3I6YS5zaG93RXJyb3Isc2hvd0NvbmZpcm06YS5zaG93 Q29uZmlybSxzaG93RmFjZXM6YS5zaG93RmFjZXMsY29ubmVjdFRleHQ6YS5jb25u ZWN0VGV4dCxyZWY6YS5yZWYsdXNlck9wdGVkT3V0OmEudXNlck9wdGVkT3V0LHVz aW5nSW5saW5lQ29tbWVudGluZzphLnVzaW5nSW5saW5lQ29tbWVudGluZyxtb2Jp bGU6YS5tb2JpbGUsc3VwcG9ydENvbW1lbnRpbmc6IWEubW9iaWxlJiYoISFhLmNo YW5uZWxVUkx8fGEudXNpbmdJbmxpbmVDb21tZW50aW5nKSxpbmxpbmVDb21tZW50 TGlzdGVuZXJzSW5pdGlhbGl6ZWQ6ZmFsc2UsaW5saW5lQ29tbWVudEZvY3VzZWQ6 ZmFsc2UsZm9yY2VDb21tZW50SG9va3M6YS5mb3JjZUNvbW1lbnRIb29rcyxudXg6 YS5udXgsaWZyYW1lUmVmZXJlcjphLmlmcmFtZVJlZmVyZXIsaXNCbG9ja2VkOmEu aXNCbG9ja2VkLGlzUGVyc29uYWxpemVkOmEuaXNQZXJzb25hbGl6ZWQsY29uZmly bWVkQ29ubmVjdDphLmNvbmZpcm1lZENvbm5lY3QsaGFzU2VuZDphLnNlbmQsY29s b3JTY2hlbWU6YS5jb2xvclNjaGVtZSxncmF5T3V0OmEuZ3JheU91dH0pO2lmKHRo

aXMudXNpbmdDb25uZWN0TGlicmFyeSlVbnZlcmlmaWVkWEQuaW5pdCh7YXV0b1Jl c2l6ZTphLmF1dG9SZXNpemUsY2hhbm5lbFVybDphLmNoYW5uZWxVUkwscmVzaXpl V2lkdGg6YS5hdXRvUmVzaXplJiZhLmxheW91dCE9PUV4dGVybmFsTm9kZUNvbm5l Y3RXaWRnZXQuU1RBTkRBUkRfTEFZT1VUfSk7dGhpcy5jb25uZWN0QnV0dG9uU2xp ZGVyPURPTS5zY3J5KHRoaXMud2lkZ2V0LCdkaXYuY29ubmVjdF9idXR0b25fc2xp ZGVyJyk7dGhpcy5jb25uZWN0QnV0dG9uQ29udGFpbmVyPW51bGw7aWYodGhpcy5j b25uZWN0QnV0dG9uU2xpZGVyLmxlbmd0aCl7dGhpcy5jb25uZWN0QnV0dG9uU2xp ZGVyPXRoaXMuY29ubmVjdEJ1dHRvblNsaWRlclswXTt0aGlzLmNvbm5lY3RCdXR0 b25Db250YWluZXI9RE9NLmZpbmQodGhpcy5jb25uZWN0QnV0dG9uU2xpZGVyLCdk aXYuY29ubmVjdF9idXR0b25fY29udGFpbmVyJyk7fWVsc2UgdGhpcy5jb25uZWN0 QnV0dG9uU2xpZGVyPW51bGw7dGhpcy5jb25uZWN0QnV0dG9uPURPTS5maW5kKHRo aXMud2lkZ2V0LCdhLmNvbm5lY3Rfd2lkZ2V0X2xpa2VfYnV0dG9uJyk7aWYodGhp cy5ncmF5T3V0KXRoaXMudG9tYnN0b25lQ3Jvc3M9RE9NLmZpbmQodGhpcy53aWRn ZXQsJ2Rpdi50b21ic3RvbmVfY3Jvc3MnKTt0aGlzLmNvbm5lY3RlZE1lc3NhZ2U9 RE9NLnNjcnkodGhpcy53aWRnZXQsJ3NwYW4uY29ubmVjdF93aWRnZXRfY29ubmVj dGVkX3RleHQnKTt0aGlzLmNvbm5lY3RlZE1lc3NhZ2U9dGhpcy5jb25uZWN0ZWRN ZXNzYWdlLmxlbmd0aD90aGlzLmNvbm5lY3RlZE1lc3NhZ2VbMF06bnVsbDt0aGlz Lm5vdENvbm5lY3RlZE1lc3NhZ2U9RE9NLnNjcnkodGhpcy53aWRnZXQsJ3NwYW4u Y29ubmVjdF93aWRnZXRfbm90X2Nvbm5lY3RlZF90ZXh0Jyk7dGhpcy5ub3RDb25u ZWN0ZWRNZXNzYWdlPXRoaXMubm90Q29ubmVjdGVkTWVzc2FnZS5sZW5ndGg/dGhp cy5ub3RDb25uZWN0ZWRNZXNzYWdlWzBdOm51bGw7dGhpcy5hZG1pblNwYW5zPURP TS5zY3J5KHRoaXMud2lkZ2V0LCdzcGFuLmNvbm5lY3Rfd2lkZ2V0X2FkbWluX3Nw YW4nKTtpZih0aGlzLmFkbWluU3BhbnMubGVuZ3RoPjApe3RoaXMuYWRtaW5MaW5r cz1bXTtmb3IodmFyIGI9MDtiPHRoaXMuYWRtaW5TcGFucy5sZW5ndGg7YisrKXRo aXMuYWRtaW5MaW5rc1tiXT1ET00uZmluZCh0aGlzLmFkbWluU3BhbnNbYl0sJ2Eu Y29ubmVjdF93aWRnZXRfYWRtaW5fb3B0aW9uJyk7fWlmKHRoaXMubGF5b3V0PT1F eHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LlNUQU5EQVJEX0xBWU9VVCl7dGhpcy5j b25maXJtYXRpb25DZWxsPURPTS5maW5kKHRoaXMud2lkZ2V0LCdkaXYuY29ubmVj dF9jb25maXJtYXRpb25fY2VsbCcpO3RoaXMudXNlckFjdGlvblRleHRTcGFuPURP TS5maW5kKHRoaXMuY29uZmlybWF0aW9uQ2VsbCwnc3Bhbi5jb25uZWN0X3dpZGdl dF91c2VyX2FjdGlvbicpO3RoaXMuc3VtbWFyeVRleHRTcGFuPURPTS5maW5kKHRo aXMuY29uZmlybWF0aW9uQ2VsbCwnc3Bhbi5jb25uZWN0X3dpZGdldF9zdW1tYXJ5 Jyk7dGhpcy5zdW1tYXJ5VGV4dD1ET00uZmluZCh0aGlzLmNvbmZpcm1hdGlvbkNl bGwsJ2Rpdi5jb25uZWN0X3dpZGdldF90ZXh0X3N1bW1hcnknKTt2YXIgYz1ET00u c2NyeSh0aGlzLndpZGdldCwnZGl2LmNvbm5lY3Rfd2lkZ2V0X3NhbXBsZV9jb25u ZWN0aW9ucycpO3RoaXMuc2FtcGxlQ29ubmVjdGlvbnM9Yy5sZW5ndGg+MD9jWzBd Om51bGw7aWYoYS5zaG93RmFjZXMmJmEudmlld2VyPjApe3ZhciBkPURPTS5zY3J5 KHRoaXMud2lkZ2V0LCdkaXYuY29ubmVjdF93aWRnZXRfbG9nZ2VkX2luX3VzZXIn KTt0aGlzLmxvZ2dlZEluVXNlclBob3RvRGl2PWQubGVuZ3RoPjA/ZFswXTpudWxs O319aWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LlNJ TVBMRV9MQVlPVVQpe3RoaXMub3JpZ2luYWxCdXR0b25XaWR0aD10aGlzLmNvbXB1 dGVCdXR0b25EaW1lbnNpb25zKCkud2lkdGg7dGhpcy5zdW1tYXJ5SW5jbHVkaW5n PURPTS5maW5kKHRoaXMud2lkZ2V0LCd0ZC5jb25uZWN0X3dpZGdldF9zaW1wbGVf aW5jbHVkaW5nJyk7dGhpcy5zdXBwb3J0Q29tbWVudGluZz1mYWxzZTt0aGlzLnVz aW5nSW5saW5lQ29tbWVudGluZz1mYWxzZTt9dGhpcy5zZXRRdWVyeURhdGEoKTtp Zih0aGlzLnBhZ2VJZCljb3B5UHJvcGVydGllcyh0aGlzLnBvcHVwT3B0SW5QYXJh bXMse2Nvbm5lY3RfaWQ6dGhpcy5wYWdlSWR9KTt0aGlzLmVycm9yU3BhbnM9RE9N LnNjcnkodGhpcy53aWRnZXQsJ3NwYW4uY29ubmVjdF93aWRnZXRfZXJyb3Jfc3Bh bicpO2lmKHRoaXMuZXJyb3JTcGFucy5sZW5ndGg+MCl7dGhpcy5lcnJvckxpbmtz PVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5lcnJvclNwYW5zLmxlbmd0aDtlKyspdGhp cy5lcnJvckxpbmtzW2VdPURPTS5maW5kKHRoaXMuZXJyb3JTcGFuc1tlXSwnYS5j b25uZWN0X3dpZGdldF9lcnJvcl90ZXh0Jyk7fXRoaXMuY29uZmlybVNwYW5zPURP TS5zY3J5KHRoaXMud2lkZ2V0LCdzcGFuLmNvbm5lY3Rfd2lkZ2V0X2NvbmZpcm1f c3BhbicpO2lmKHRoaXMuY29uZmlybVNwYW5zLmxlbmd0aD4wKXt0aGlzLmNvbmZp cm1MaW5rcz1bXTtmb3IodmFyIGY9MDtmPHRoaXMuY29uZmlybVNwYW5zLmxlbmd0 aDtmKyspdGhpcy5jb25maXJtTGlua3NbZl09RE9NLmZpbmQodGhpcy5jb25maXJt U3BhbnNbZl0sJ2EuY29ubmVjdF93aWRnZXRfY29uZmlybV9saW5rJyk7fXRoaXMu dW5saWtlU3BhbnM9RE9NLnNjcnkodGhpcy53aWRnZXQsJ3NwYW4udW5saWtlX3Nw YW4nKTt0aGlzLnVubGlrZUxpbmtzPVtdO2Zvcih2YXIgZz0wO2c8dGhpcy51bmxp a2VTcGFucy5sZW5ndGg7ZysrKXt0aGlzLnVubGlrZUxpbmtzW2ddPURPTS5maW5k

KHRoaXMudW5saWtlU3BhbnNbZ10sJ2EuY29ubmVjdF93aWRnZXRfdW5saWtlX2xp bmsnKTtFdmVudC5saXN0ZW4odGhpcy51bmxpa2VMaW5rc1tnXSwnY2xpY2snLHRo aXMuY29ubmVjdFRvTm9kZU9uQ2xpY2suYmluZCh0aGlzKSk7fXZhciBoPURPTS5z Y3J5KHRoaXMud2lkZ2V0LCdkaXYuY29ubmVjdF93aWRnZXRfbnVtYmVyX2Nsb3Vk Jyk7aWYoaC5sZW5ndGg9PTEpe3RoaXMubnVtYmVyQ2xvdWQ9aFswXTt0aGlzLm51 bWJlckNsb3VkTnViPURPTS5maW5kKHRoaXMud2lkZ2V0LCdkaXYuY29ubmVjdF93 aWRnZXRfbnVtYmVyX2Nsb3VkX251YicpO3RoaXMubnVtYmVyQ2xvdWRFeHRlbnNp b249RE9NLmZpbmQodGhpcy5udW1iZXJDbG91ZCwnZGl2LmNvbm5lY3Rfd2lkZ2V0 X251bWJlcl9jbG91ZF9leHRlbnNpb24nKTt0aGlzLnNpemVOdW1iZXJDbG91ZCgp O3RoaXMubnVtYmVyQ2xvdWRVbmxpa2VTcGFuPURPTS5maW5kKHRoaXMubnVtYmVy Q2xvdWRFeHRlbnNpb24sJ3NwYW4udW5saWtlX3NwYW4nKTt0aGlzLm51bWJlckNs b3VkUmVtaW5kZXJTcGFuPURPTS5maW5kKHRoaXMubnVtYmVyQ2xvdWRFeHRlbnNp b24sJ3NwYW4ubGlrZV9yZW1pbmRlcicpO3RoaXMuaW5BbmltYXRpb249ZmFsc2U7 dGhpcy5yZW1pbmRlcklzVmlzaWJsZT1DU1MuaGFzQ2xhc3ModGhpcy5udW1iZXJD bG91ZFVubGlrZVNwYW4sJ2hpZGRlbl9lbGVtJyk7RXZlbnQubGlzdGVuKHRoaXMu bnVtYmVyQ2xvdWQsJ21vdXNlbGVhdmUnLHRoaXMucmVzdG9yZVJlbWluZGVyU3Bh bi5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy5udW1iZXJDbG91ZEV4dGVu c2lvbiwnbW91c2VsZWF2ZScsdGhpcy5yZXN0b3JlUmVtaW5kZXJTcGFuLmJpbmQo dGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uLCdt b3VzZWVudGVyJyx0aGlzLmV4cG9zZVVubGlrZVNwYW4uYmluZCh0aGlzKSk7RXZl bnQubGlzdGVuKHRoaXMubnVtYmVyQ2xvdWQsJ21vdXNlZW50ZXInLHRoaXMuZXhw b3NlVW5saWtlU3Bhbi5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy5udW1i ZXJDbG91ZEV4dGVuc2lvbiwnbW91c2VsZWF2ZScsZnVuY3Rpb24oZXZlbnQpe3Ro aXMucmVxdWlyZXNNb3VzZUxlYXZlRXZlbnQ9ZmFsc2U7fS5iaW5kKHRoaXMpKTt9 aWYodGhpcy51c2luZ0lubGluZUNvbW1lbnRpbmcmJiF0aGlzLnNob3dGYWNlcyl7 dGhpcy5zaGFyZUNvbW1lbnRTcGFucz1ET00uc2NyeSh0aGlzLndpZGdldCwnc3Bh bi5jb25uZWN0X3dpZGdldF9zaGFyZV9jb21tZW50X3NwYW4nKTtmb3IodmFyIGk9 MDtpPHRoaXMuc2hhcmVDb21tZW50U3BhbnMubGVuZ3RoO2krKyl7dmFyIGo9RE9N LmZpbmQodGhpcy5zaGFyZUNvbW1lbnRTcGFuc1tpXSwnYS5jb25uZWN0X3dpZGdl dF9zaGFyZV9jb21tZW50X29wdGlvbicpO0V2ZW50Lmxpc3RlbihqLCdjbGljaycs ZnVuY3Rpb24oZXZlbnQpe0V2ZW50LmtpbGwoZXZlbnQpO2Zvcih2YXIgbD0wO2w8 dGhpcy5zaGFyZUNvbW1lbnRTcGFucy5sZW5ndGg7bCsrKUNTUy5hZGRDbGFzcyh0 aGlzLnNoYXJlQ29tbWVudFNwYW5zW2xdLCdoaWRkZW5fZWxlbScpO3RoaXMucHJl c2VudENvbW1lbnRpbmdPcHRpb24oKTt9LmJpbmQodGhpcykpO319aWYodGhpcy5s YXlvdXQ9PT1FeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LkJVVFRPTl9DT1VOVF9M QVlPVVQpe1hELmZvcmNlZF9taW5fd2lkdGg9dGhpcy5nZXRCdXR0b25Db3VudFdp ZGdldFdpZHRoKCk7dGhpcy5udW1iZXJFeGNsdWRpbmc9RE9NLmZpbmQodGhpcy53 aWRnZXQsJ3RkLmNvbm5lY3Rfd2lkZ2V0X2J1dHRvbl9jb3VudF9leGNsdWRpbmcn KTt0aGlzLnN1bW1hcnlJbmNsdWRpbmc9RE9NLmZpbmQodGhpcy53aWRnZXQsJ3Rk LmNvbm5lY3Rfd2lkZ2V0X2J1dHRvbl9jb3VudF9pbmNsdWRpbmcnKTt0aGlzLnRo dW1ic1VwSWNvbj1ET00uZmluZCh0aGlzLnN1bW1hcnlJbmNsdWRpbmcsJ2Rpdi50 aHVtYnNfdXAnKTt0aGlzLnVuZG9SZWdpb249RE9NLmZpbmQodGhpcy5zdW1tYXJ5 SW5jbHVkaW5nLCdkaXYudW5kbycpO3RoaXMub3JpZ2luYWxCdXR0b25XaWR0aD10 aGlzLmNvbXB1dGVCdXR0b25EaW1lbnNpb25zKCkud2lkdGg7RXZlbnQubGlzdGVu KHRoaXMudGh1bWJzVXBJY29uLCdtb3VzZWVudGVyJyxmdW5jdGlvbihldmVudCl7 dGhpcy51bmRvQnV0dG9uPURPTS5maW5kKHRoaXMudW5kb1JlZ2lvbiwnbGFiZWwu dW5kb19idXR0b24gaW5wdXQnKTtFdmVudC5saXN0ZW4odGhpcy51bmRvQnV0dG9u LCdjbGljaycsdGhpcy5jb25uZWN0VG9Ob2RlT25DbGljay5iaW5kKHRoaXMpKTtD U1MuYWRkQ2xhc3ModGhpcy50aHVtYnNVcEljb24sJ2hpZGRlbl9lbGVtJyk7Q1NT LnJlbW92ZUNsYXNzKHRoaXMudW5kb1JlZ2lvbiwnaGlkZGVuX2VsZW0nKTt9LmJp bmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLnVuZG9SZWdpb24sJ21vdXNlbGVh dmUnLGZ1bmN0aW9uKGV2ZW50KXtDU1MucmVtb3ZlQ2xhc3ModGhpcy50aHVtYnNV cEljb24sJ2hpZGRlbl9lbGVtJyk7Q1NTLmFkZENsYXNzKHRoaXMudW5kb1JlZ2lv biwnaGlkZGVuX2VsZW0nKTt9LmJpbmQodGhpcykpO31pZighdGhpcy5pc0Jsb2Nr ZWQpe0V2ZW50Lmxpc3Rlbih0aGlzLmNvbm5lY3RCdXR0b24sJ2NsaWNrJyx0aGlz LnByaW1hcnlMaWtlQnV0dG9uT25DbGljay5iaW5kKHRoaXMpKTtpZih0aGlzLmdy YXlPdXQpRXZlbnQubGlzdGVuKHRoaXMudG9tYnN0b25lQ3Jvc3MsJ2NsaWNrJyx0 aGlzLmNvbm5lY3RUb05vZGVPbkNsaWNrLmJpbmQodGhpcykpO31pZih0aGlzLmFk bWluTGlua3MpZm9yKHZhciBiPTA7Yjx0aGlzLmFkbWluTGlua3MubGVuZ3RoO2Ir KylFdmVudC5saXN0ZW4odGhpcy5hZG1pbkxpbmtzW2JdLCdjbGljaycsdGhpcy5w

cmVzZW50QWRtaW5QYWdlLmJpbmQodGhpcykpO2lmKHRoaXMuZXJyb3JMaW5rcylm b3IodmFyIGI9MDtiPHRoaXMuZXJyb3JMaW5rcy5sZW5ndGg7YisrKUV2ZW50Lmxp c3Rlbih0aGlzLmVycm9yTGlua3NbYl0sJ2NsaWNrJyx0aGlzLnByZXNlbnRFcnJv ckRpYWxvZy5iaW5kKHRoaXMpKTtpZih0aGlzLmNvbmZpcm1MaW5rcylmb3IodmFy IGs9MDtrPHRoaXMuY29uZmlybUxpbmtzLmxlbmd0aDtrKyspRXZlbnQubGlzdGVu KHRoaXMuY29uZmlybUxpbmtzW2tdLCdjbGljaycsdGhpcy5wcmVzZW50Q29uZmly bURpYWxvZy5iaW5kKHRoaXMpKTtpZihhLnNob3dDYXB0Y2hhKXt0aGlzLnNob3dD YXB0Y2hhPXRydWU7dGhpcy5jb25uZWN0VG9Ob2RlKHRydWUpO31pZih0aGlzLmZv cmNlQ29tbWVudEhvb2tzKXRoaXMuc2V0dXBDb21tZW50SG9va3MoJCh0aGlzLmZv cmNlQ29tbWVudEhvb2tzKSk7dGhpcy50ZXh0SW5wdXRNYXJnaW5XaXRoQnV0dG9u PTU7dGhpcy53aWR0aFN5bmNBcmJpdGVyPUFyYml0ZXIuc3Vic2NyaWJlKCdwbGF0 Zm9ybS9zb2NpYWxwbHVnaW5zL3NlbmQvcmVzaXplJyx0aGlzLnN5bmNTZW5kV2lk Z2V0V2lkdGguYmluZCh0aGlzKSk7QXJiaXRlci5pbmZvcm0oJ3BsYXRmb3JtL3Nv Y2lhbHBsdWdpbnMvbGlrZS9yZXNpemUnLHtidXR0b25fd2lkdGg6dGhpcy5jb21w dXRlQnV0dG9uRGltZW5zaW9uc1dpdGhQYWRkaW5nKCkud2lkdGgsd2lkZ2V0X3dp ZHRoOlZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy53aWRnZXQpLngs bGF5b3V0OnRoaXMubGF5b3V0fSxBcmJpdGVyLkJFSEFWSU9SX1NUQVRFKTtBcmJp dGVyLnN1YnNjcmliZSgncGxhdGZvcm0vc29jaWFscGx1Z2lucy9kaWFsb2cnLGZ1 bmN0aW9uKGwsbSl7aWYobS5jb250cm9sbGVySUQhPT10aGlzLndpZGdldElEKXRo aXMub3RoZXJDb21tZW50V2lkZ2V0T3Blbj0obS5ldmVudD09J29wZW4nKTt9LmJp bmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKCdwbGF0Zm9ybS9zb2NpYWxwbHVn aW5zL2RpYWxvZycsZnVuY3Rpb24obCxtKXtpZihtLmNvbnRyb2xsZXJJRCE9PXRo aXMuZGl2SUQmJm0uZXZlbnQ9PSdvcGVuJyl0aGlzLmNsb3NlQ29tbWVudFdpZGdl dCgpO30uYmluZCh0aGlzKSk7dGhpcy5zdWJzY3JpYmVUb1N5bmMoYSk7fTtjb3B5 UHJvcGVydGllcyhFeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LHtTVEFOREFSRF9M QVlPVVQ6J3N0YW5kYXJkJyxCT1hfQ09VTlRfTEFZT1VUOidib3hfY291bnQnLEJV VFRPTl9DT1VOVF9MQVlPVVQ6J2J1dHRvbl9jb3VudCcsU0lNUExFX0xBWU9VVDon c2ltcGxlJyxDT0xPUl9EQVJLOjAsQ09MT1JfTElHSFQ6MSxPUFRfSU5fRkFDRUJP T0tfQVBQX0lEOicxMjc3NjAwODcyMzc2MTAnLHVwZGF0ZUxvZ2dlZEluVXNlcjpm dW5jdGlvbihhKXt2YXIgYj1FeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LmNvbnRy b2xsZXJNYW5hZ2luZ0xvZ2luO2Iuc2V0TG9nZ2VkSW4oYSk7Yi5jb25uZWN0VG9O b2RlKHRydWUpO2IudXNlck9wdGVkT3V0PWZhbHNlO2RlbGV0ZSBFeHRlcm5hbE5v ZGVDb25uZWN0V2lkZ2V0LmNvbnRyb2xsZXJNYW5hZ2luZ0xvZ2luO0FyYml0ZXIu aW5mb3JtKCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5zL2xvZ2luJyx7dXNlcjphLnVz ZXJ9LEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUpO1dpZGdldEFyYml0ZXIuaW5mb3Jt KCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5zL2xvZ2luJyx7dXNlcjphLnVzZXJ9LEFy Yml0ZXIuQkVIQVZJT1JfU1RBVEUpO30sb25Db21tZW50V2lkZ2V0TG9hZGVkOmZ1 bmN0aW9uKGEsYil7dmFyIGM9RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5zZWxm O2RlbGV0ZSBFeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LnNlbGY7Yy5pbmplY3RD b21tZW50V2lkZ2V0TWFya3VwKGEpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnBv c2l0aW9uTnViKGIpO30sMTAwMCk7fX0pO2NvcHlQcm9wZXJ0aWVzKEV4dGVybmFs Tm9kZUNvbm5lY3RXaWRnZXQucHJvdG90eXBlLHtnZXRTeW5jRW5kcG9pbnROYW1l OmZ1bmN0aW9uKCl7fSxnZXRDb25uZWN0aW9uRW5kcG9pbnROYW1lOmZ1bmN0aW9u KCl7fSxnZXRQbHVnaW5OYW1lOmZ1bmN0aW9uKCl7fSxzdWJzY3JpYmVUb1N5bmM6 ZnVuY3Rpb24oYSl7QXJiaXRlci5zdWJzY3JpYmUoJ3BsYXRmb3JtL3NvY2lhbHBs dWdpbnMvbG9naW4nLGZ1bmN0aW9uKGIsYyl7aWYodGhpcy52aWV3ZXJJRCYmYy51 c2VyIT09dGhpcy52aWV3ZXJJRClkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTt9 LmJpbmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKHRoaXMuZ2V0U3luY0VuZHBv aW50TmFtZSgpLGZ1bmN0aW9uKGIsYyl7aWYoYy5leHRlcm5hbFVybD09YS5leHRl cm5hbFVSTCl7dGhpcy51c2VyT3B0ZWRPdXQ9ZmFsc2U7dGhpcy51cGRhdGVXaWRn ZXQoYy5vcHRzLHRydWUpO319LmJpbmQodGhpcykpO30sc2V0UXVlcnlEYXRhOmZ1 bmN0aW9uKCl7Y29weVByb3BlcnRpZXModGhpcy5wb3B1cE9wdEluUGFyYW1zLHtw cm90b2NvbDp3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsZXh0ZXJuYWxfcGFnZV91 cmw6dGhpcy5leHRlcm5hbFVybH0pO2lmKHRoaXMubnV4KWNvcHlQcm9wZXJ0aWVz KHRoaXMucG9wdXBPcHRJblBhcmFtcyx7bnV4OnRoaXMubnV4LHJlZmVyZXI6dGhp cy5pZnJhbWVSZWZlcmVyfSk7fSx1cGRhdGVXaWRnZXQ6ZnVuY3Rpb24oYSxiLGMp e3ZhciBkPSh0aGlzLmFscmVhZHlDb25uZWN0ZWQhPWEubm93Q29ubmVjdGVkKXx8 KHRoaXMuc2hvd0NvbmZpcm0hPWEuc2hvd0NvbmZpcm0pO2lmKCFiKUFyYml0ZXIu aW5mb3JtKHRoaXMuZ2V0Q29ubmVjdGlvbkVuZHBvaW50TmFtZSgpLGEsQXJiaXRl ci5CRUhBVklPUl9TVEFURSk7dGhpcy5hbHJlYWR5Q29ubmVjdGVkPWEubm93Q29u

bmVjdGVkO3RoaXMudmlld2VySXNBZG1pbj1hLmlzQWRtaW47dGhpcy5zaG93RXJy b3I9YS5zaG93RXJyb3I7dGhpcy5zaG93Q29uZmlybT1hLnNob3dDb25maXJtO3Ro aXMuYWRtaW5Vcmw9YS5hZG1pblVybDt0aGlzLnVzZXJQcm9maWxlPWEudXNlclBy b2ZpbGU7dGhpcy5jb25uZWN0U3RvcnlGYmlkPWEuY29ubmVjdFN0b3J5RmJpZDt0 aGlzLmVycm9yPWEuZXJyb3I7aWYoIWEubm93Q29ubmVjdGVkKXRoaXMuY2xvc2VD b21tZW50V2lkZ2V0KCk7aWYoZCYmIWJ8fGMpe3ZhciBlPWEubm93Q29ubmVjdGVk PydlZGdlQ3JlYXRlZCc6J2VkZ2VSZW1vdmVkJztVbnZlcmlmaWVkWEQuc2VuZCh7 dHlwZTplfSk7fWlmKGR8fHRoaXMuZXJyb3IpdGhpcy5zeW5jV2lkZ2V0RGlzcGxh eSgpO2lmKCFifHxjKVdpZGdldEFyYml0ZXIuaW5mb3JtKHRoaXMuZ2V0U3luY0Vu ZHBvaW50TmFtZSgpLHtleHRlcm5hbFVybDp0aGlzLmV4dGVybmFsVXJsLG9wdHM6 YX0sQXJiaXRlci5CRUhBVklPUl9TVEFURSk7fSxwcmVzZW50T3B0SW46ZnVuY3Rp b24oKXtFeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LmNvbnRyb2xsZXJNYW5hZ2lu Z0xvZ2luPXRoaXM7UGxhdGZvcm1PcHRJblBvcHVwLm9wZW4odGhpcy5nZXRQbHVn aW5OYW1lKCksJ29wdC5pbmxpa2UnLHRoaXMucG9wdXBPcHRJblBhcmFtcyk7VW52 ZXJpZmllZFhELnNlbmQoe3R5cGU6J2F1dGhQcm9tcHRlZCd9KTt9LHNldExvZ2dl ZEluOmZ1bmN0aW9uKGEpe3RoaXMudmlld2VySUQ9YS51c2VyO3RoaXMubmV3UHJv ZmlsZVBpYz1hLnByb2ZpbGVQaWM7dGhpcy5wbGFjZUR0c2coYS5mYkR0c2cpO30s cGxhY2VEdHNnOmZ1bmN0aW9uKGEpe0Vudi5mYl9kdHNnPWE7fSxzeW5jV2lkZ2V0 V2l0aFNlcnZlcjpmdW5jdGlvbihhKXt2YXIgYj1hLmdldFBheWxvYWQoKTtpZihi LnJlcXVpcmVzX2xvZ2luKXt0aGlzLnVwZGF0ZVdpZGdldCh7bm93Q29ubmVjdGVk OmZhbHNlLGlzQWRtaW46ZmFsc2V9LGZhbHNlKTt0aGlzLnByZXNlbnRPcHRJbigp O3JldHVybjt9dmFyIGM9e25vd0Nvbm5lY3RlZDpiLnN1Y2Nlc3MmJmIuYWxyZWFk eV9jb25uZWN0ZWQsaXNBZG1pbjpiLmlzX2FkbWluLHNob3dFcnJvcjpiLnNob3df ZXJyb3Isc2hvd0NvbmZpcm06Yi5zaG93X2NvbmZpcm0sYWRtaW5Vcmw6Yi5hZG1p bl91cmwsdXNlclByb2ZpbGU6Yi51c2VyX3Byb2ZpbGUsY29ubmVjdFN0b3J5RmJp ZDpiLnN0b3J5X2ZiaWQsZXJyb3I6Yi5lcnJvcl9pbmZvfTt0aGlzLnVwZGF0ZVdp ZGdldChjLCFiLnN1Y2Nlc3MsYi5zdWNjZXNzKTtpZihiLnN1Y2Nlc3MmJnRoaXMu c2hvd0NhcHRjaGEpe3dpbmRvdy5vcGVuZXIubG9jYXRpb24ucmVsb2FkKCk7d2lu ZG93LmNsb3NlKCk7fX0sZ2V0QnV0dG9uQ291bnRXaWRnZXRXaWR0aDpmdW5jdGlv bigpe3ZhciBhPURPTS5maW5kKHRoaXMud2lkZ2V0LCd0YWJsZS5jb25uZWN0X3dp ZGdldF9pbnRlcmFjdGl2ZV9hcmVhJyksYj1TdHlsZS5nZXQoYSwnd2lkdGgnKTty ZXR1cm4gcGFyc2VJbnQoYiwxMCk7fSxzaXplTnVtYmVyQ2xvdWQ6ZnVuY3Rpb24o KXt0aGlzLmNvbGxhcHNlZE51bWJlckNsb3VkSGVpZ2h0PXRoaXMuZ2V0Q29sbGFw c2VkTnVtYmVyQ2xvdWRIZWlnaHQoKTt0aGlzLmV4cGFuZGVkTnVtYmVyQ2xvdWRI ZWlnaHQ9dGhpcy5jb2xsYXBzZWROdW1iZXJDbG91ZEhlaWdodCt0aGlzLmdldE51 bWJlckNsb3VkRXh0ZW5zaW9uSGVpZ2h0KCk7aWYodGhpcy5hbHJlYWR5Q29ubmVj dGVkKVN0eWxlLnNldCh0aGlzLm51bWJlckNsb3VkLCdoZWlnaHQnLHRoaXMuZXhw YW5kZWROdW1iZXJDbG91ZEhlaWdodCsncHgnKTt2YXIgYT10aGlzLmNvbXB1dGVC dXR0b25EaW1lbnNpb25zV2l0aFBhZGRpbmcoKS53aWR0aDtYRC5mb3JjZWRfbWlu X3dpZHRoPWE7dmFyIGI9aW50bF9sb2NhbGVfaXNfcnRsKCk7YS09MjtTdHlsZS5z ZXQodGhpcy5udW1iZXJDbG91ZCwnd2lkdGgnLGErJ3B4Jyk7U3R5bGUuc2V0KHRo aXMubnVtYmVyQ2xvdWQsJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7YW5pbWF0aW9u KHRoaXMubnVtYmVyQ2xvdWQpLmZyb20oJ29wYWNpdHknLDApLnRvKCdvcGFjaXR5 JywxKS5kdXJhdGlvbigxMDApLmdvKCk7fSxnZXRDb2xsYXBzZWROdW1iZXJDbG91 ZEhlaWdodDpmdW5jdGlvbigpe3ZhciBhPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVu c2lvbnModGhpcy5udW1iZXJDbG91ZCkueSxiPXBhcnNlSW50KFN0eWxlLmdldCh0 aGlzLm51bWJlckNsb3VkLCdwYWRkaW5nVG9wJyksMTApLGM9cGFyc2VJbnQoU3R5 bGUuZ2V0KHRoaXMubnVtYmVyQ2xvdWQsJ3BhZGRpbmdCb3R0b20nKSwxMCksZD1w YXJzZUludChTdHlsZS5nZXQodGhpcy5udW1iZXJDbG91ZCwnYm9yZGVyJyksMTAp O3JldHVybiBhLWItYy0yO30sZ2V0TnVtYmVyQ2xvdWRFeHRlbnNpb25IZWlnaHQ6 ZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5udW1iZXJDbG91ZEV4dGVuc2lv biwnY29ubmVjdF93aWRnZXRfb2Zmc2NyZWVuJyk7aWYoIXRoaXMuYWxyZWFkeUNv bm5lY3RlZClDU1MucmVtb3ZlQ2xhc3ModGhpcy5udW1iZXJDbG91ZEV4dGVuc2lv biwnaGlkZGVuX2VsZW0nKTt2YXIgYT1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNp b25zKHRoaXMubnVtYmVyQ2xvdWRFeHRlbnNpb24pLnk7aWYoIXRoaXMuYWxyZWFk eUNvbm5lY3RlZClDU1MuYWRkQ2xhc3ModGhpcy5udW1iZXJDbG91ZEV4dGVuc2lv biwnaGlkZGVuX2VsZW0nKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5udW1iZXJDbG91 ZEV4dGVuc2lvbiwnY29ubmVjdF93aWRnZXRfb2Zmc2NyZWVuJyk7cmV0dXJuIGE7 fSxyZXN0b3JlUmVtaW5kZXJTcGFuOmZ1bmN0aW9uKGV2ZW50KXtpZih0aGlzLnJl bWluZGVySXNWaXNpYmxlfHx0aGlzLmluQW5pbWF0aW9uKXJldHVybjt0aGlzLmFu

aW1hdGVSZW1pbmRlclNwYW5SZWFwcGVhcmFuY2UoKTt9LGFuaW1hdGVSZW1pbmRl clNwYW5SZWFwcGVhcmFuY2U6ZnVuY3Rpb24oKXtpZih0aGlzLnJlbWluZGVySXNW aXNpYmxlfHx0aGlzLmluQW5pbWF0aW9uKXJldHVybjt0aGlzLmluQW5pbWF0aW9u PXRydWU7Q1NTLmFkZENsYXNzKHRoaXMubnVtYmVyQ2xvdWRVbmxpa2VTcGFuLCdo aWRkZW5fZWxlbScpO1N0eWxlLnNldCh0aGlzLm51bWJlckNsb3VkUmVtaW5kZXJT cGFuLCdvcGFjaXR5JywwKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5udW1iZXJDbG91 ZFJlbWluZGVyU3BhbiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhpcy5udW1i ZXJDbG91ZFJlbWluZGVyU3BhbikudG8oJ29wYWNpdHknLDEpLmR1cmF0aW9uKDEw MCkub25kb25lKGZ1bmN0aW9uKCl7dGhpcy5pbkFuaW1hdGlvbj1mYWxzZTt0aGlz LnJlbWluZGVySXNWaXNpYmxlPXRydWU7fS5iaW5kKHRoaXMpKS5nbygpO30sZXhw b3NlVW5saWtlU3BhbjpmdW5jdGlvbihldmVudCl7aWYoIXRoaXMuYWxyZWFkeUNv bm5lY3RlZHx8dGhpcy5yZXF1aXJlc01vdXNlTGVhdmVFdmVudHx8IXRoaXMucmVt aW5kZXJJc1Zpc2libGV8fHRoaXMuaW5BbmltYXRpb24pcmV0dXJuO3RoaXMuaW5B bmltYXRpb249dHJ1ZTtDU1MuYWRkQ2xhc3ModGhpcy5udW1iZXJDbG91ZFJlbWlu ZGVyU3BhbiwnaGlkZGVuX2VsZW0nKTtTdHlsZS5zZXQodGhpcy5udW1iZXJDbG91 ZFVubGlrZVNwYW4sJ29wYWNpdHknLDApO0NTUy5yZW1vdmVDbGFzcyh0aGlzLm51 bWJlckNsb3VkVW5saWtlU3BhbiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhp cy5udW1iZXJDbG91ZFVubGlrZVNwYW4pLnRvKCdvcGFjaXR5JywxKS5kdXJhdGlv bigxMDApLm9uZG9uZShmdW5jdGlvbigpe3RoaXMuaW5BbmltYXRpb249ZmFsc2U7 dGhpcy5yZW1pbmRlcklzVmlzaWJsZT1mYWxzZTt9LmJpbmQodGhpcykpLmdvKCk7 fSxjb25kaXRpb25hbGx5QWN0aXZhdGVCdXR0b246ZnVuY3Rpb24oZXZlbnQpe3Ro aXMuY29tbWVudEJ1dHRvbklzQWN0aXZlPXRoaXMuaW5saW5lQ29tbWVudElucHV0 LnZhbHVlLnRyaW0oKS5sZW5ndGg+MDt9LHVwZGF0ZUNvbm5lY3Rpb25XaXRoQ29t bWVudDpmdW5jdGlvbihldmVudCl7RXZlbnQua2lsbChldmVudCk7aWYodGhpcy5j b21tZW50QnV0dG9uSXNBY3RpdmUpe3RoaXMucG9zdElubGluZUNvbW1lbnQoKTt0 aGlzLnJlc2V0SW5saW5lQ29tbWVudCgpO3RoaXMuY2xvc2VJbmxpbmVDb21tZW50 KCk7fX0scG9zdElubGluZUNvbW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLnBvc3RVc2Vy Q29tbWVudCh0aGlzLmlubGluZUNvbW1lbnRJbnB1dC52YWx1ZS50cmltKCksZmFs c2UsJ2lmcmFtZScpO30scmVzZXRJbmxpbmVDb21tZW50OmZ1bmN0aW9uKCl7dGhp cy5jb25jZWFsQ29tbWVudEJ1dHRvbigpO3RoaXMuaW5saW5lQ29tbWVudElucHV0 LnZhbHVlPScnO30sc2hvd0lubGluZUNvbW1lbnQ6ZnVuY3Rpb24oZXZlbnQpe0V2 ZW50LmtpbGwoZXZlbnQpO2lmKCF0aGlzLmlubGluZUNvbW1lbnRGbHlvdXRPcGVu fHx0aGlzLmlubGluZUNvbW1lbnRGbHlvdXRWaXNpYmxlfHx0aGlzLnNob3dDb25m aXJtfHx0aGlzLmVycm9yKXJldHVybjt0aGlzLmlubGluZUNvbW1lbnRGbHlvdXRW aXNpYmxlPXRydWU7Q1NTLnNob3codGhpcy5pbmxpbmVDb21tZW50Rmx5b3V0KTt9 LGhpZGVJbmxpbmVDb21tZW50OmZ1bmN0aW9uKGV2ZW50KXtpZihldmVudClFdmVu dC5raWxsKGV2ZW50KTtpZih0aGlzLmlubGluZUNvbW1lbnRGb2N1c2VkfHwhdGhp cy5pbmxpbmVDb21tZW50Rmx5b3V0T3Blbnx8IXRoaXMuaW5saW5lQ29tbWVudEZs eW91dFZpc2libGUpcmV0dXJuO2lmKGV2ZW50JiZET00uY29udGFpbnModGhpcy5p bmxpbmVDb21tZW50Rmx5b3V0LGV2ZW50LmdldFJlbGF0ZWRUYXJnZXQoKSkpcmV0 dXJuO3ZhciBhPXRoaXMuaW5saW5lQ29tbWVudElucHV0LnZhbHVlLnRyaW0oKSxi PXRoaXMuaW5saW5lQ29tbWVudElucHV0LmdldEF0dHJpYnV0ZSgncGxhY2Vob2xk ZXInKTtpZihhLmxlbmd0aD4wJiZhIT1iKXJldHVybjt0aGlzLmlubGluZUNvbW1l bnRGbHlvdXRWaXNpYmxlPWZhbHNlO0NTUy5oaWRlKHRoaXMuaW5saW5lQ29tbWVu dEZseW91dCk7fSxjbG9zZUlubGluZUNvbW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmlu bGluZUNvbW1lbnRGbHlvdXRWaXNpYmxlPWZhbHNlO3RoaXMuaW5saW5lQ29tbWVu dEZseW91dE9wZW49ZmFsc2U7Q1NTLmhpZGUodGhpcy5pbmxpbmVDb21tZW50Rmx5 b3V0KTt0aGlzLnJlc2V0SW5saW5lQ29tbWVudCgpO30sY29uY2VhbENvbW1lbnRC dXR0b246ZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5pbmxpbmVDb21tZW50 QnV0dG9uLCdoaWRkZW5fZWxlbScpO1N0eWxlLnNldCh0aGlzLmlubGluZUNvbW1l bnRJbnB1dCwnd2lkdGgnLHRoaXMudGV4dElucHV0V2lkdGhXaXRob3V0QnV0dG9u KydweCcpO1N0eWxlLnNldCh0aGlzLmlubGluZUNvbW1lbnRJbnB1dCwnbWFyZ2lu LXJpZ2h0JywwKTt9LHBvc2l0aW9uSW5saW5lQ29tbWVudEZseW91dDpmdW5jdGlv bigpe0NTUy5hZGRDbGFzcyh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQsJ2NvbW1l bnRfd2lkZ2V0X29mZnNjcmVlbicpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmlubGlu ZUNvbW1lbnRGbHlvdXQsJ2hpZGRlbl9lbGVtJyk7dmFyIGE9MCxiPXRoaXMuY29t cHV0ZUJ1dHRvbkRpbWVuc2lvbnMoKSxjPWIuaGVpZ2h0LGQ9dGhpcy5ncmF5T3V0 P2E6YSsyMCxlPWludGxfbG9jYWxlX2lzX3J0bCgpPydyaWdodCc6J2xlZnQnO2lm KHRoaXMuc2hvd0ZhY2VzKXt2YXIgZj1ET00uc2NyeSh0aGlzLndpZGdldCwnc3Bh bi5jb25uZWN0X3dpZGdldF90ZXh0JylbMF0sZz1pbnRsX2xvY2FsZV9pc19ydGwo

KT8ncGFkZGluZ1JpZ2h0JzoncGFkZGluZ0xlZnQnLGg9U3R5bGUuZ2V0KGYsZyk7 ZD10aGlzLmdyYXlPdXQ/YTphK3BhcnNlSW50KGgsMTApO3ZhciBpPVZlY3RvcjIu Z2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5zYW1wbGVDb25uZWN0aW9ucykueTtj PWktMzt9dmFyIGo9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLnN1 bW1hcnlUZXh0KS55O2lmKGo+MTUpYys9MjtTdHlsZS5zZXQodGhpcy5pbmxpbmVD b21tZW50Rmx5b3V0LGUsZCsncHgnKTtTdHlsZS5zZXQodGhpcy5pbmxpbmVDb21t ZW50Rmx5b3V0LCd0b3AnLCgtYykrJ3B4Jyk7dmFyIGs9VmVjdG9yMi5nZXRFbGVt ZW50UG9zaXRpb24odGhpcy53aWRnZXQsJ2RvY3VtZW50JykueCxsPVZlY3RvcjIu Z2V0RWxlbWVudERpbWVuc2lvbnModGhpcy53aWRnZXQpLngsbT1rK2wtZC01O1N0 eWxlLnNldCh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQsJ3dpZHRoJyxtKydweCcp O0NTUy5yZW1vdmVDbGFzcyh0aGlzLmlubGluZUNvbW1lbnRCdXR0b24sJ2hpZGRl bl9lbGVtJyk7dmFyIG49VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlz LmlubGluZUNvbW1lbnRCdXR0b24pLng7Q1NTLmFkZENsYXNzKHRoaXMuaW5saW5l Q29tbWVudEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTt2YXIgbz0odGhpcy5pbmxpbmVD b21tZW50Q2xvc2UpPzE1OjA7dGhpcy50ZXh0SW5wdXRXaWR0aFdpdGhvdXRCdXR0 b249bS0yNC1vO3RoaXMudGV4dElucHV0V2lkdGhXaXRoQnV0dG9uPXRoaXMudGV4 dElucHV0V2lkdGhXaXRob3V0QnV0dG9uLW4tdGhpcy50ZXh0SW5wdXRNYXJnaW5X aXRoQnV0dG9uLTE7U3R5bGUuc2V0KHRoaXMuaW5saW5lQ29tbWVudElucHV0LCd3 aWR0aCcsdGhpcy50ZXh0SW5wdXRXaWR0aFdpdGhvdXRCdXR0b24rJ3B4Jyk7U3R5 bGUuc2V0KHRoaXMuaW5saW5lQ29tbWVudElucHV0LCdtYXJnaW4tcmlnaHQnLDAp O0NTUy5yZW1vdmVDbGFzcyh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQsJ2NvbW1l bnRfd2lkZ2V0X29mZnNjcmVlbicpO0NTUy5hZGRDbGFzcyh0aGlzLmlubGluZUNv bW1lbnRGbHlvdXQsJ2hpZGRlbl9lbGVtJyk7fSxwb3N0VXNlckNvbW1lbnQ6ZnVu Y3Rpb24oYSxiLGMpe3ZhciBkPXtocmVmOnRoaXMuZXh0ZXJuYWxVcmwsbm9kZV90 eXBlOnRoaXMubm9kZVR5cGUsZWRnZV90eXBlOnRoaXMuZWRnZVR5cGUscGFnZV9p ZDp0aGlzLnBhZ2VJZCxjb25uZWN0X3RleHQ6dGhpcy5jb25uZWN0VGV4dCxzdG9y eV9mYmlkOnRoaXMuY29ubmVjdFN0b3J5RmJpZCxjb21tZW50OmEsd2lkZ2V0X3R5 cGU6Y3x8J3hmYm1sJyxvd25fcHJvZHVjdDpifTtuZXcgQXN5bmNSZXF1ZXN0KCku c2V0VVJJKHRoaXMuZ2V0Q29tbWVudEFqYXhFbmRwb2ludCgpKS5zZXREYXRhKGQp LnNldE5lY3Rhck1vZHVsZURhdGFTYWZlKCkuc2V0TmVjdGFySW1wcmVzc2lvbklk U2FmZSgpLnNlbmQoKTt0aGlzLmNsb3NlQ29tbWVudFdpZGdldCgpO30sY2xvc2VD b21tZW50V2lkZ2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5jb21tZW50V2lkZ2V0T3Bl bil7ZGVsZXRlIHRoaXMuaW5HcmFjZVBlcmlvZDtkZWxldGUgdGhpcy5jb21tZW50 V2lkZ2V0SXNFeHBhbmRlZDt0aGlzLmNvbW1lbnRXaWRnZXRWaXNpYmxlPWZhbHNl O3RoaXMuY29tbWVudFdpZGdldE9wZW49ZmFsc2U7VW52ZXJpZmllZFhELnNlbmQo e3R5cGU6J2Rpc21pc3NFZGdlQ29tbWVudERpYWxvZyd9KTt9fSxwcmVzZW50QWRt aW5QYWdlOmZ1bmN0aW9uKGV2ZW50KXtFdmVudC5raWxsKGV2ZW50KTt2YXIgYT0n X2JsYW5rJzt3aW5kb3cub3Blbih0aGlzLmFkbWluVXJsLnRvU3RyaW5nKCksYSk7 fSxwcmVzZW50RXJyb3JEaWFsb2c6ZnVuY3Rpb24oZXZlbnQpe0V2ZW50LmtpbGwo ZXZlbnQpO2lmKCF0aGlzLmVycm9yLmVycm9yVXJpKXJldHVybjt2YXIgYT0nX2Js YW5rJyxiPSd0b29sYmFyPTAsIHN0YXR1cz0wLCB3aWR0aD05NjAsIGhlaWdodD0z MDAnO3dpbmRvdy5vcGVuKHRoaXMuZXJyb3IuZXJyb3JVcmkudG9TdHJpbmcoKSxh LGIpO30scHJlc2VudENvbmZpcm1EaWFsb2c6ZnVuY3Rpb24oZXZlbnQpe0V2ZW50 LmtpbGwoZXZlbnQpO3ZhciBhPSdfYmxhbmsnLGI9J3Rvb2xiYXI9MCxzdGF0dXM9 MCx3aWR0aD00NTAsaGVpZ2h0PTIwMCxzY3JvbGxiYXJzPTAsbG9jYXRpb249MCxt ZW51YmFyPTAnO2lmKCF3aW5kb3cuY29uZmlybURpYWxvZ1JldHVybil3aW5kb3cu Y29uZmlybURpYWxvZ1JldHVybj17fTt3aW5kb3cuY29uZmlybURpYWxvZ1JldHVy blt0aGlzLndpZGdldElEXT10aGlzO3ZhciBjPXRoaXMuZ2V0Q29uZmlybVVSTCgp O3dpbmRvdy5vcGVuKGMsYSxiKTt9LHJldHVybkZyb21Db25maXJtRGlhbG9nOmZ1 bmN0aW9uKGEpe2lmKGEpe3RoaXMuc2hvd0NvbmZpcm09bnVsbDt0aGlzLmNvbmZp cm1lZENvbm5lY3Q9YTt0aGlzLmNvbm5lY3RUb05vZGUoIXRoaXMuYWxyZWFkeUNv bm5lY3RlZCk7fWVsc2UgdGhpcy51cGRhdGVXaWRnZXQoe25vd0Nvbm5lY3RlZDp0 aGlzLmFscmVhZHlDb25uZWN0ZWQsc2hvd0NvbmZpcm06bnVsbCxpc0FkbWluOnRo aXMudmlld2VySXNBZG1pbn0sZmFsc2UpO30sc3luY1dpZGdldERpc3BsYXk6ZnVu Y3Rpb24oKXt2YXIgYT10aGlzLmFscmVhZHlDb25uZWN0ZWQ7dGhpcy5zZXRCdXR0 b25TdGF0ZShhKTt0aGlzLnNob3dFbGVtZW50SWYodGhpcy5jb25uZWN0ZWRNZXNz YWdlLGEpO3RoaXMuc2hvd0VsZW1lbnRJZih0aGlzLm5vdENvbm5lY3RlZE1lc3Nh Z2UsIWEpO2lmKHRoaXMuYWRtaW5TcGFucylmb3IodmFyIGI9MDtiPHRoaXMuYWRt aW5TcGFucy5sZW5ndGg7YisrKXRoaXMuc2hvd0VsZW1lbnRJZih0aGlzLmFkbWlu U3BhbnNbYl0sdGhpcy52aWV3ZXJJc0FkbWluKTtpZih0aGlzLmVycm9yU3BhbnMp

Zm9yKHZhciBjPTA7Yzx0aGlzLmVycm9yU3BhbnMubGVuZ3RoO2MrKyl0aGlzLnNo b3dFbGVtZW50SWYodGhpcy5lcnJvclNwYW5zW2NdLHRoaXMuZXJyb3ImJih0aGlz LnZpZXdlcklzQWRtaW58fHRoaXMuc2hvd0Vycm9yKSk7Zm9yKHZhciBkPTA7ZDx0 aGlzLmNvbmZpcm1TcGFucy5sZW5ndGg7ZCsrKXRoaXMuc2hvd0VsZW1lbnRJZih0 aGlzLmNvbmZpcm1TcGFuc1tkXSwhdGhpcy5hbHJlYWR5Q29ubmVjdGVkJiZ0aGlz LnNob3dDb25maXJtKTtmb3IodmFyIGU9MDtlPHRoaXMudW5saWtlU3BhbnMubGVu Z3RoO2UrKyl0aGlzLnNob3dFbGVtZW50SWYodGhpcy51bmxpa2VTcGFuc1tlXSx0 aGlzLmFscmVhZHlDb25uZWN0ZWQpO2lmKHRoaXMuc2hhcmVDb21tZW50U3BhbnMp Zm9yKHZhciBmPTA7Zjx0aGlzLnNoYXJlQ29tbWVudFNwYW5zLmxlbmd0aDtmKysp dGhpcy5zaG93RWxlbWVudElmKHRoaXMuc2hhcmVDb21tZW50U3BhbnNbZl0sYSk7 dGhpcy5zaG93RWxlbWVudElmKHRoaXMuY29ubmVjdEJ1dHRvbiwoIXRoaXMudXNl RGlzY29ubmVjdExpbmt8fCFhKSYmIXRoaXMuc2hvd0NvbmZpcm0pO2lmKHRoaXMu bGF5b3V0PT09RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5CT1hfQ09VTlRfTEFZ T1VUKXt0aGlzLm1hbmFnZUJveENvdW50QnV0dG9uQW5pbWF0aW9uKGEpO31lbHNl IGlmKHRoaXMubGF5b3V0PT09RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5CVVRU T05fQ09VTlRfTEFZT1VUKXt0aGlzLm1hbmFnZUJ1dHRvbkNvdW50QnV0dG9uQW5p bWF0aW9uKGEpO31lbHNlIGlmKHRoaXMubGF5b3V0PT09RXh0ZXJuYWxOb2RlQ29u bmVjdFdpZGdldC5TSU1QTEVfTEFZT1VUKXt0aGlzLm1hbmFnZVNpbXBsZUJ1dHRv bkFuaW1hdGlvbihhKTt9ZWxzZSB0aGlzLm1hbmFnZVN0YW5kYXJkQnV0dG9uQW5p bWF0aW9uKGEpO2lmKCF0aGlzLmxvZ2dlZEluVXNlclBob3RvRGl2KXJldHVybjtp ZihhKXt0aGlzLnNsaWRlVXNlclBob3RvSW4odGhpcy5sb2dnZWRJblVzZXJQaG90 b0Rpdik7fWVsc2UgdGhpcy5zbGlkZVVzZXJQaG90b091dCh0aGlzLmxvZ2dlZElu VXNlclBob3RvRGl2KTt9LG1hbmFnZVN0YW5kYXJkQnV0dG9uQW5pbWF0aW9uOmZ1 bmN0aW9uKGEpe2lmKHRoaXMuZ3JheU91dClyZXR1cm47aWYodGhpcy5hbHJlYWR5 Q29ubmVjdGVkfHx0aGlzLnNob3dDb25maXJtKXt0aGlzLmhpZGVCdXR0b24odHJ1 ZSk7fWVsc2UgdGhpcy5oaWRlQnV0dG9uKGZhbHNlKTt9LHNldEJ1dHRvblN0YXRl OmZ1bmN0aW9uKGEpe2lmKGEpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbm5lY3RC dXR0b24sJ2xpa2VfYnV0dG9uX25vX2xpa2UnKTtDU1MuYWRkQ2xhc3ModGhpcy5j b25uZWN0QnV0dG9uLCdsaWtlX2J1dHRvbl9saWtlJyk7dGhpcy5maXhJRUJ1dHRv bkRvdWJsZUxpbmVCdWcoKTt9ZWxzZXtDU1MuYWRkQ2xhc3ModGhpcy5jb25uZWN0 QnV0dG9uLCdsaWtlX2J1dHRvbl9ub19saWtlJyk7Q1NTLnJlbW92ZUNsYXNzKHRo aXMuY29ubmVjdEJ1dHRvbiwnbGlrZV9idXR0b25fbGlrZScpO319LGZpeElFQnV0 dG9uRG91YmxlTGluZUJ1ZzpmdW5jdGlvbigpe2lmKHRoaXMubGF5b3V0PT09RXh0 ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5TVEFOREFSRF9MQVlPVVQmJnVhLmllKCk8 PTcmJiF0aGlzLmhhc0JlZW5GaXhlZCl7dmFyIGE9dGhpcy5jb21wdXRlQnV0dG9u RGltZW5zaW9uc1dpdGhQYWRkaW5nKCk7U3R5bGUuc2V0KHRoaXMuY29ubmVjdEJ1 dHRvbiwnd2lkdGgnLGEud2lkdGgrMSk7dGhpcy5oYXNCZWVuRml4ZWQ9dHJ1ZTt9 fSxoaWRlQnV0dG9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMubGF5b3V0IT09J3N0YW5k YXJkJylyZXR1cm47aWYodGhpcy5vQW5pbWF0ZUJsaW5kKXRoaXMub0FuaW1hdGVC bGluZC5zdG9wKCk7dGhpcy5vQW5pbWF0ZUJsaW5kPWFuaW1hdGlvbih0aGlzLmNv bm5lY3RCdXR0b25TbGlkZXIpLmR1cmF0aW9uKDE1MCk7dmFyIGI9MSxjPWludGxf bG9jYWxlX2lzX3J0bCgpLGQ9Yz8nbWFyZ2luUmlnaHQnOidtYXJnaW5MZWZ0Jyxl PWM/J21hcmdpbkxlZnQnOidtYXJnaW5SaWdodCc7aWYoYSl7Q1NTLmFkZENsYXNz KHRoaXMuY29ubmVjdEJ1dHRvbkNvbnRhaW5lciwnaGlkZGVuJyk7dGhpcy5vQW5p bWF0ZUJsaW5kLm9uZG9uZShmdW5jdGlvbigpe1N0eWxlLnNldCh0aGlzLmNvbm5l Y3RCdXR0b25Db250YWluZXIsZCwnMnB4Jyk7U3R5bGUuc2V0KHRoaXMuY29ubmVj dEJ1dHRvbkNvbnRhaW5lciwndmlzaWJpbGl0eScsJ2hpZGRlbicpO0NTUy5hZGRD bGFzcyh0aGlzLmNvbmZpcm1hdGlvbkNlbGwsJ2Nvbm5lY3RfY29uZmlybWF0aW9u X2NlbGxfbGlrZScpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbmZpcm1hdGlvbkNl bGwsJ2Nvbm5lY3RfY29uZmlybWF0aW9uX2NlbGxfbm9fbGlrZScpO3RoaXMub0Fu aW1hdGVCbGluZD1udWxsO30uYmluZCh0aGlzKSk7fWVsc2V7U3R5bGUuc2V0KHRo aXMuY29ubmVjdEJ1dHRvbkNvbnRhaW5lcixkLCcwcHgnKTtiPVZlY3RvcjIuZ2V0 RWxlbWVudERpbWVuc2lvbnModGhpcy5jb25uZWN0QnV0dG9uKS54O3RoaXMub0Fu aW1hdGVCbGluZC5vbmRvbmUoZnVuY3Rpb24oKXtTdHlsZS5zZXQodGhpcy5jb25u ZWN0QnV0dG9uU2xpZGVyLCdvdmVyZmxvdycsJ3Zpc2libGUnKTtTdHlsZS5zZXQo dGhpcy5jb25uZWN0QnV0dG9uU2xpZGVyLCd3aWR0aCcsJ2F1dG8nKTtDU1MucmVt b3ZlQ2xhc3ModGhpcy5jb25maXJtYXRpb25DZWxsLCdjb25uZWN0X2NvbmZpcm1h dGlvbl9jZWxsX2xpa2UnKTtDU1MuYWRkQ2xhc3ModGhpcy5jb25maXJtYXRpb25D ZWxsLCdjb25uZWN0X2NvbmZpcm1hdGlvbl9jZWxsX25vX2xpa2UnKTtTdHlsZS5z ZXQodGhpcy5jb25uZWN0QnV0dG9uQ29udGFpbmVyLCd2aXNpYmlsaXR5Jywndmlz

aWJsZScpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b25Db250YWlu ZXIsJ2hpZGRlbicpO3RoaXMub0FuaW1hdGVCbGluZD1udWxsO30uYmluZCh0aGlz KSk7fXRoaXMub0FuaW1hdGVCbGluZC50bygnd2lkdGgnLGIpLmJsaW5kKCkuZ28o KTt9LHNob3dFbGVtZW50SWY6ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm47aWYo Yil7Q1NTLnNob3coYSk7fWVsc2UgQ1NTLmhpZGUoYSk7fSxzbGlkZVVzZXJQaG90 b0luOmZ1bmN0aW9uKGEpe2lmKCFDU1MuaGFzQ2xhc3MoYSwnY29ubmVjdF93aWRn ZXRfdXNlcl9ub3RfY29ubmVjdGVkJykpcmV0dXJuO3ZhciBiPVN0eWxlLmdldChh LCd3aWR0aCcpO1N0eWxlLnNldChhLCd3aWR0aCcsMCk7U3R5bGUuc2V0KGEsJ29w YWNpdHknLDApO0NTUy5yZW1vdmVDbGFzcyhhLCdjb25uZWN0X3dpZGdldF91c2Vy X25vdF9jb25uZWN0ZWQnKTthbmltYXRpb24oYSkudG8oJ3dpZHRoJyxiKS5kdXJh dGlvbigxMDApLmNoZWNrcG9pbnQoKS50bygnb3BhY2l0eScsMSkuZHVyYXRpb24o NDAwKS5nbygpO30sc2xpZGVVc2VyUGhvdG9PdXQ6ZnVuY3Rpb24oYSl7aWYoQ1NT Lmhhc0NsYXNzKGEsJ2Nvbm5lY3Rfd2lkZ2V0X3VzZXJfbm90X2Nvbm5lY3RlZCcp KXJldHVybjthbmltYXRpb24oYSkudG8oJ29wYWNpdHknLDApLmR1cmF0aW9uKDEw MCkuY2hlY2twb2ludCguMjUpLnRvKCd3aWR0aCcsMCkuZHVyYXRpb24oMTAwKS5v bmRvbmUoZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3MoYSwnY29ubmVjdF93aWRnZXRf dXNlcl9ub3RfY29ubmVjdGVkJyk7U3R5bGUuc2V0KGEsJ3dpZHRoJyxudWxsKTt9 KS5nbygpO30scHJpbWFyeUxpa2VCdXR0b25PbkNsaWNrOmZ1bmN0aW9uKGV2ZW50 KXtpZih0aGlzLmdyYXlPdXQmJnRoaXMuYWxyZWFkeUNvbm5lY3RlZCYmIXRoaXMu bW9iaWxlKXJldHVybjt0aGlzLmNvbm5lY3RUb05vZGVPbkNsaWNrKGV2ZW50KTtp Zih0aGlzLnRvbWJzdG9uZUNyb3NzJiZ0aGlzLmFscmVhZHlDb25uZWN0ZWQpRE9N LnJlcGxhY2UodGhpcy50b21ic3RvbmVDcm9zcyxIVE1MKCc8ZGl2IGNsYXNzPSJ0 b21ic3RvbmVfY3Jvc3MgdG9tYnN0b25lX2Nyb3NzX3N0YXRpYyIgLz4nKSk7c2V0 VGltZW91dChmdW5jdGlvbigpe3RoaXMudG9tYnN0b25lQ3Jvc3M9RE9NLmZpbmQo dGhpcy53aWRnZXQsJ2Rpdi50b21ic3RvbmVfY3Jvc3MnKTtDU1MucmVtb3ZlQ2xh c3ModGhpcy50b21ic3RvbmVDcm9zcywndG9tYnN0b25lX2Nyb3NzX3N0YXRpYycp O0V2ZW50Lmxpc3Rlbih0aGlzLnRvbWJzdG9uZUNyb3NzLCdjbGljaycsdGhpcy5j b25uZWN0VG9Ob2RlT25DbGljay5iaW5kKHRoaXMpKTt9LmJpbmQodGhpcyksMTAw MCk7fSxfY2xpY2tMb2NrZWQ6ZmFsc2UsY29ubmVjdFRvTm9kZU9uQ2xpY2s6ZnVu Y3Rpb24oZXZlbnQpe0V2ZW50LmtpbGwoZXZlbnQpO2lmKCF0aGlzLl9jbGlja0xv Y2tlZCl7dGhpcy5fY2xpY2tMb2NrZWQ9dHJ1ZTtzZXRUaW1lb3V0KGZ1bmN0aW9u KCl7dGhpcy5fY2xpY2tMb2NrZWQ9ZmFsc2U7fS5iaW5kKHRoaXMpLDEwMDApO2lm KHRoaXMudmlld2VySUQ9PTB8fHRoaXMudXNlck9wdGVkT3V0KXt0aGlzLnByZXNl bnRPcHRJbigpO31lbHNlIHRoaXMuY29ubmVjdFRvTm9kZSghdGhpcy5hbHJlYWR5 Q29ubmVjdGVkKTt9fSxjb25uZWN0VG9Ob2RlOmZ1bmN0aW9uKGEpe2lmKCFhKXtp Zih0aGlzLmxheW91dD09PUV4dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQuU0lNUExF X0xBWU9VVClyZXR1cm47aWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5hbE5vZGVDb25u ZWN0V2lkZ2V0LlNUQU5EQVJEX0xBWU9VVCYmIXRoaXMudXNpbmdDb25uZWN0TGli cmFyeSl7Q1NTLmFkZENsYXNzKHRoaXMudXNlckFjdGlvblRleHRTcGFuLCdoaWRk ZW5fZWxlbScpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLnN1bW1hcnlUZXh0U3Bhbiwn aGlkZGVuX2VsZW0nKTtTdHlsZS5zZXQodGhpcy5zdW1tYXJ5VGV4dFNwYW4sJ29w YWNpdHknLDEpO31pZih0aGlzLnNoYXJlQ29tbWVudFNwYW5zKWZvcih2YXIgYj0w O2I8dGhpcy5zaGFyZUNvbW1lbnRTcGFucy5sZW5ndGg7YisrKUNTUy5hZGRDbGFz cyh0aGlzLnNoYXJlQ29tbWVudFNwYW5zW2JdLCdoaWRkZW5fZWxlbScpO2lmKHRo aXMuY29tbWVudFdpZGdldE9wZW4pe3RoaXMuY2xvc2VDb21tZW50V2lkZ2V0KCk7 fWVsc2UgaWYodGhpcy5pbmxpbmVDb21tZW50Rmx5b3V0T3Blbil0aGlzLmNsb3Nl SW5saW5lQ29tbWVudCgpO310aGlzLnVwZGF0ZVdpZGdldCh7bm93Q29ubmVjdGVk OiF0aGlzLmFscmVhZHlDb25uZWN0ZWQsaXNBZG1pbjp0aGlzLnZpZXdlcklzQWRt aW59LHRydWUpO3ZhciBjPXtocmVmOnRoaXMuZXh0ZXJuYWxVcmwsbm9kZV90eXBl OnRoaXMubm9kZVR5cGUsZWRnZV90eXBlOnRoaXMuZWRnZVR5cGUscGFnZV9pZDp0 aGlzLnBhZ2VJZCxsYXlvdXQ6dGhpcy5sYXlvdXQsaXNfcGVyc29uYWxpemVkOnRo aXMuaXNQZXJzb25hbGl6ZWQsc2hvd19jYXB0Y2hhOnRoaXMuc2hvd0NhcHRjaGEs Y29ubmVjdF90ZXh0OnRoaXMuY29ubmVjdFRleHQscmVmOnRoaXMucmVmLG5vd19j b25uZWN0ZWQ6YSxpZnJhbWVfcmVmZXJlcjp0aGlzLmlmcmFtZVJlZmVyZXJ9O2lm KHRoaXMuY29uZmlybWVkQ29ubmVjdCljLmNvbmZpcm09MTtuZXcgQXN5bmNSZXF1 ZXN0KCkuc2V0VVJJKHRoaXMuZ2V0QWpheEVuZHBvaW50KCkpLnNldEhhbmRsZXIo dGhpcy5zeW5jV2lkZ2V0V2l0aFNlcnZlci5iaW5kKHRoaXMpKS5zZXREYXRhKGMp LnNldE5lY3Rhck1vZHVsZURhdGFTYWZlKCkuc2V0TmVjdGFySW1wcmVzc2lvbklk U2FmZSgpLnNlbmQoKTtpZihhKXtpZih0aGlzLmxheW91dD09PUV4dGVybmFsTm9k ZUNvbm5lY3RXaWRnZXQuQk9YX0NPVU5UX0xBWU9VVCl0aGlzLnJlcXVpcmVzTW91

c2VMZWF2ZUV2ZW50PXRydWU7aWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5hbE5vZGVD b25uZWN0V2lkZ2V0LlNUQU5EQVJEX0xBWU9VVCYmIXRoaXMudXNpbmdDb25uZWN0 TGlicmFyeSl7U3R5bGUuc2V0KHRoaXMudXNlckFjdGlvblRleHRTcGFuLCdvcGFj aXR5JywxKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy51c2VyQWN0aW9uVGV4dFNwYW4s J2hpZGRlbl9lbGVtJyk7Q1NTLmFkZENsYXNzKHRoaXMuc3VtbWFyeVRleHRTcGFu LCdoaWRkZW5fZWxlbScpO0V2ZW50Lmxpc3Rlbih0aGlzLndpZGdldCwnbW91c2Vs ZWF2ZScsdGhpcy50cmFuc2l0aW9uQmV0d2Vlbk1lc3NhZ2VzLmJpbmQodGhpcykp O31pZih0aGlzLnNoYXJlQ29tbWVudFNwYW5zKXtmb3IodmFyIGQ9MDtkPHRoaXMu c2hhcmVDb21tZW50U3BhbnM7ZCsrKUNTUy5yZW1vdmVDbGFzcyh0aGlzLnNoYXJl Q29tbWVudFNwYW5zW2RdLCdoaWRkZW5fZWxlbScpO31lbHNlIGlmKHRoaXMuc3Vw cG9ydENvbW1lbnRpbmcpdGhpcy5wcmVzZW50Q29tbWVudGluZ09wdGlvbigpO3Ro aXMucmVwb3NpdGlvbkZhY2VwaWxlVmVydGljYWxseSgpO319LHRyYW5zaXRpb25C ZXR3ZWVuTWVzc2FnZXM6ZnVuY3Rpb24oZXZlbnQpe2lmKCF0aGlzLmFscmVhZHlD b25uZWN0ZWR8fENTUy5oYXNDbGFzcyh0aGlzLnVzZXJBY3Rpb25UZXh0U3Bhbiwn aGlkZGVuX2VsZW0nKSlyZXR1cm47YW5pbWF0aW9uKHRoaXMudXNlckFjdGlvblRl eHRTcGFuKS50bygnb3BhY2l0eScsMCkuZHVyYXRpb24oNTAwKS5vbmRvbmUoZnVu Y3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy51c2VyQWN0aW9uVGV4dFNwYW4sJ2hp ZGRlbl9lbGVtJyk7U3R5bGUuc2V0KHRoaXMuc3VtbWFyeVRleHRTcGFuLCdvcGFj aXR5JywwKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5zdW1tYXJ5VGV4dFNwYW4sJ2hp ZGRlbl9lbGVtJyk7YW5pbWF0aW9uKHRoaXMuc3VtbWFyeVRleHRTcGFuKS50bygn b3BhY2l0eScsMSkuZHVyYXRpb24oNTAwKS5vbmRvbmUoZnVuY3Rpb24oKXt0aGlz LnJlcG9zaXRpb25GYWNlcGlsZVZlcnRpY2FsbHkoKTt9LmJpbmQodGhpcykpLmdv KCk7dGhpcy5wb3NpdGlvbklubGluZUNvbW1lbnRGbHlvdXQoKTt9LmJpbmQodGhp cykpLmdvKCk7fSxwcmVzZW50Q29tbWVudGluZ09wdGlvbjpmdW5jdGlvbigpe0Fy Yml0ZXIuaW5mb3JtKCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5zL2RpYWxvZycse2Nv bnRyb2xsZXJJRDp0aGlzLndpZGdldElELGV2ZW50OidvcGVuJ30pO2lmKHRoaXMu dXNpbmdDb25uZWN0TGlicmFyeSl7RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5z ZWxmPXRoaXM7dmFyIGE9e3R5cGU6J3ByZXNlbnRFZGdlQ29tbWVudERpYWxvZycs bWFzdGVyRnJhbWVOYW1lOndpbmRvdy5uYW1lLHZlcnNpb246Mn0sYj1WZWN0b3Iy LmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuY29ubmVjdEJ1dHRvbiksYz1WZWN0 b3IyLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLmNvbm5lY3RCdXR0b24pO2EuYW5j aG9yR2VvbWV0cnk9e3g6Yi54LHk6Yi55fTthLmFuY2hvclBvc2l0aW9uPXt4OmMu eCx5OmMueX07YS53aWR0aD00MDA7YS5oZWlnaHQ9MjI1O1VudmVyaWZpZWRYRC5z ZW5kKGEpO3RoaXMuY29tbWVudFdpZGdldE9wZW49dHJ1ZTt0aGlzLmNvbW1lbnRX aWRnZXRWaXNpYmxlPXRydWU7dGhpcy5jb21tZW50V2lkZ2V0RXhwYW5kZWQ9dHJ1 ZTt9ZWxzZSBpZih0aGlzLnVzaW5nSW5saW5lQ29tbWVudGluZylpZighdGhpcy5p bmxpbmVDb21tZW50TGlzdGVuZXJzSW5pdGlhbGl6ZWQpe3RoaXMudW53cmFwQ29t bWVudCgpO3RoaXMuaW5pdGlhbGl6ZUlubGluZUNvbW1lbnRMaXN0ZW5lcnMoKTt0 aGlzLm9wZW5JbmxpbmVDb21tZW50Rmx5b3V0KCk7dGhpcy5wb3NpdGlvbklubGlu ZUNvbW1lbnRGbHlvdXQoKTt0aGlzLmlubGluZUNvbW1lbnRMaXN0ZW5lcnNJbml0 aWFsaXplZD10cnVlO31lbHNle3RoaXMucG9zaXRpb25JbmxpbmVDb21tZW50Rmx5 b3V0KCk7dGhpcy5vcGVuSW5saW5lQ29tbWVudEZseW91dCgpO319LHVud3JhcENv bW1lbnQ6ZnVuY3Rpb24oKXtpZih0aGlzLnVud3JhcENvbW1lbnQuZG9uZSlyZXR1 cm47dmFyIGE9JCgnY29ubmVjdC13aWRnZXQtY29tbWVudC1ib3gtbWFya3VwJyks Yj1FeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LmNvbW1lbnRNYXJrdXA7YS5pbm5l ckhUTUw9Yjt0aGlzLnVud3JhcENvbW1lbnQuZG9uZT10cnVlO30saW5pdGlhbGl6 ZUlubGluZUNvbW1lbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlzLmlubGluZUNv bW1lbnRGbHlvdXQ9RE9NLmZpbmQodGhpcy53aWRnZXQsJy5jb25uZWN0X3dpZGdl dF9jb21tZW50X2JveCcpO3RoaXMuaW5saW5lQ29tbWVudElucHV0PURPTS5maW5k KHRoaXMuaW5saW5lQ29tbWVudEZseW91dCwnLmNvbm5lY3Rfd2lkZ2V0X2NvbW1l bnRfdGV4dGlucHV0Jyk7dGhpcy5pbmxpbmVDb21tZW50QnV0dG9uPURPTS5maW5k KHRoaXMuaW5saW5lQ29tbWVudEZseW91dCwnLmNvbm5lY3Rfd2lkZ2V0X2NvbW1l bnRfYnV0dG9uJyk7dGhpcy5pbmxpbmVDb21tZW50Q2xvc2U9RE9NLnNjcnkodGhp cy5pbmxpbmVDb21tZW50Rmx5b3V0LCcuY29ubmVjdF93aWRnZXRfY29tbWVudF9j bG9zZV9idXR0b24nKTtpZih0aGlzLmlubGluZUNvbW1lbnRDbG9zZS5sZW5ndGg+ MCl0aGlzLmlubGluZUNvbW1lbnRDbG9zZT10aGlzLmlubGluZUNvbW1lbnRDbG9z ZVswXTt0aGlzLmNvbW1lbnRCdXR0b25Jc0FjdGl2ZT1mYWxzZTtFdmVudC5saXN0 ZW4odGhpcy5pbmxpbmVDb21tZW50SW5wdXQsJ2tleXVwJyx0aGlzLmNvbmRpdGlv bmFsbHlBY3RpdmF0ZUJ1dHRvbi5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhp cy5pbmxpbmVDb21tZW50SW5wdXQsJ2ZvY3VzJyxmdW5jdGlvbigpe3RoaXMuaW5s

aW5lQ29tbWVudEZvY3VzZWQ9dHJ1ZTt0aGlzLmV4cG9zZUNvbW1lbnRCdXR0b24o KTt9LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLmlubGluZUNvbW1lbnRC dXR0b24sJ2NsaWNrJyx0aGlzLnVwZGF0ZUNvbm5lY3Rpb25XaXRoQ29tbWVudC5i aW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy5pbmxpbmVDb21tZW50SW5wdXQs J2JsdXInLGZ1bmN0aW9uKCl7dGhpcy5pbmxpbmVDb21tZW50Rm9jdXNlZD1mYWxz ZTt0aGlzLmhpZGVJbmxpbmVDb21tZW50KCk7fS5iaW5kKHRoaXMpKTtFdmVudC5s aXN0ZW4odGhpcy53aWRnZXQsJ21vdXNlb3V0Jyx0aGlzLmhpZGVJbmxpbmVDb21t ZW50LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLndpZGdldCwnbW91c2Vv dmVyJyx0aGlzLnNob3dJbmxpbmVDb21tZW50LmJpbmQodGhpcykpO2lmKHRoaXMu aW5saW5lQ29tbWVudENsb3NlKUV2ZW50Lmxpc3Rlbih0aGlzLmlubGluZUNvbW1l bnRDbG9zZSwnY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXtmb3IodmFyIGE9MDthPHRo aXMuc2hhcmVDb21tZW50U3BhbnMubGVuZ3RoO2ErKylDU1MucmVtb3ZlQ2xhc3Mo dGhpcy5zaGFyZUNvbW1lbnRTcGFuc1thXSwnaGlkZGVuX2VsZW0nKTt0aGlzLmNs b3NlSW5saW5lQ29tbWVudCgpO30uYmluZCh0aGlzKSk7fSxleHBvc2VDb21tZW50 QnV0dG9uOmZ1bmN0aW9uKGV2ZW50KXtpZighQ1NTLmhhc0NsYXNzKHRoaXMuaW5s aW5lQ29tbWVudEJ1dHRvbiwnaGlkZGVuX2VsZW0nKSlyZXR1cm47Q1NTLnJlbW92 ZUNsYXNzKHRoaXMuaW5saW5lQ29tbWVudEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTtT dHlsZS5zZXQodGhpcy5pbmxpbmVDb21tZW50SW5wdXQsJ3dpZHRoJyx0aGlzLnRl eHRJbnB1dFdpZHRoV2l0aEJ1dHRvbisncHgnKTtTdHlsZS5zZXQodGhpcy5pbmxp bmVDb21tZW50SW5wdXQsJ21hcmdpbi1yaWdodCcsdGhpcy50ZXh0SW5wdXRNYXJn aW5XaXRoQnV0dG9uKydweCcpO30sb3BlbklubGluZUNvbW1lbnRGbHlvdXQ6ZnVu Y3Rpb24oKXtDU1Muc2hvdyh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQpO3RoaXMu aW5saW5lQ29tbWVudEZseW91dE9wZW49dHJ1ZTt0aGlzLmlubGluZUNvbW1lbnRG bHlvdXRWaXNpYmxlPXRydWU7fSxtYW5hZ2VCb3hDb3VudEJ1dHRvbkFuaW1hdGlv bjpmdW5jdGlvbihhKXtpZihhJiYhdGhpcy5zaG93Q29uZmlybSl7dGhpcy5hbmlt YXRlQm94Q291bnRCdXR0b25EaXNhcHBlYXJhbmNlKCk7fWVsc2UgdGhpcy5hbmlt YXRlQm94Q291bnRCdXR0b25SZWFwcGVhcmFuY2UoKTt9LGFuaW1hdGVCb3hDb3Vu dEJ1dHRvbkRpc2FwcGVhcmFuY2U6ZnVuY3Rpb24oKXtpZih0aGlzLmdyYXlPdXQp cmV0dXJuO0NTUy5hZGRDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24sJ2hpZGRlbl9l bGVtJyk7U3R5bGUuc2V0KHRoaXMubnVtYmVyQ2xvdWRFeHRlbnNpb24sJ29wYWNp dHknLDApO0NTUy5yZW1vdmVDbGFzcyh0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9u LCdoaWRkZW5fZWxlbScpO0NTUy5hZGRDbGFzcyh0aGlzLm51bWJlckNsb3VkTnVi LCdoaWRkZW5fZWxlbScpO0NTUy5hZGRDbGFzcyh0aGlzLm51bWJlckNsb3VkVW5s aWtlU3BhbiwnaGlkZGVuX2VsZW0nKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5udW1i ZXJDbG91ZFJlbWluZGVyU3BhbiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhp cy5udW1iZXJDbG91ZCkudG8oJ2hlaWdodCcsdGhpcy5leHBhbmRlZE51bWJlckNs b3VkSGVpZ2h0KS5kdXJhdGlvbigxMDApLm9uZG9uZShmdW5jdGlvbigpe2FuaW1h dGlvbih0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uKS5mcm9tKCdvcGFjaXR5Jyww KS50bygnb3BhY2l0eScsMSkuZHVyYXRpb24oMTAwKS5nbygpO30uYmluZCh0aGlz KSkuZ28oKTt9LGFuaW1hdGVCb3hDb3VudEJ1dHRvblJlYXBwZWFyYW5jZTpmdW5j dGlvbigpe0NTUy5hZGRDbGFzcyh0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uLCdo aWRkZW5fZWxlbScpO2FuaW1hdGlvbih0aGlzLm51bWJlckNsb3VkKS50bygnaGVp Z2h0Jyx0aGlzLmNvbGxhcHNlZE51bWJlckNsb3VkSGVpZ2h0KS5kdXJhdGlvbig3 NSkub25kb25lKGZ1bmN0aW9uKCl7aWYodGhpcy5zaG93Q29uZmlybSl7Zm9yKHZh ciBhPTA7YTx0aGlzLmNvbmZpcm1TcGFucy5sZW5ndGg7YSsrKUNTUy5yZW1vdmVD bGFzcyh0aGlzLmNvbmZpcm1TcGFuc1thXSwnaGlkZGVuX2VsZW0nKTt9ZWxzZXtT dHlsZS5zZXQodGhpcy5jb25uZWN0QnV0dG9uLCdvcGFjaXR5JywwKTtDU1MucmVt b3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO2FuaW1h dGlvbih0aGlzLmNvbm5lY3RCdXR0b24pLmZyb20oJ29wYWNpdHknLDApLnRvKCdv cGFjaXR5JywxKS5kdXJhdGlvbig3NSkub25kb25lKGZ1bmN0aW9uKCl7U3R5bGUu c2V0KHRoaXMubnVtYmVyQ2xvdWROdWIsJ29wYWNpdHknLDApO0NTUy5yZW1vdmVD bGFzcyh0aGlzLm51bWJlckNsb3VkTnViLCdoaWRkZW5fZWxlbScpO2FuaW1hdGlv bih0aGlzLm51bWJlckNsb3VkTnViKS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3Bh Y2l0eScsMSkuZHVyYXRpb24oNTApLmdvKCk7fS5iaW5kKHRoaXMpKS5nbygpO319 LmJpbmQodGhpcykpLmdvKCk7fSxtYW5hZ2VCdXR0b25Db3VudEJ1dHRvbkFuaW1h dGlvbjpmdW5jdGlvbihhKXtpZihhJiYhdGhpcy5zaG93Q29uZmlybSl7dGhpcy5h bmltYXRlQnV0dG9uQ291bnRCdXR0b25EaXNhcHBlYXJhbmNlKCk7fWVsc2UgdGhp cy5hbmltYXRlQnV0dG9uQ291bnRCdXR0b25SZWFwcGVhcmFuY2UoKTtpZighdGhp cy5ncmF5T3V0KXtDU1MucmVtb3ZlQ2xhc3ModGhpcy50aHVtYnNVcEljb24sJ2hp ZGRlbl9lbGVtJyk7Q1NTLmFkZENsYXNzKHRoaXMudW5kb1JlZ2lvbiwnaGlkZGVu

X2VsZW0nKTt9fSxtYW5hZ2VTaW1wbGVCdXR0b25BbmltYXRpb246ZnVuY3Rpb24o YSl7aWYodGhpcy5ncmF5T3V0KXJldHVybjtpZihhJiYhdGhpcy5zaG93Q29uZmly bSl7dGhpcy5hbmltYXRlU2ltcGxlQnV0dG9uRGlzYXBwZWFyYW5jZSgpO31lbHNl IHRoaXMuYW5pbWF0ZVNpbXBsZUJ1dHRvblJlYXBwZWFyYW5jZSgpO30sYW5pbWF0 ZUJ1dHRvbkNvdW50QnV0dG9uRGlzYXBwZWFyYW5jZTpmdW5jdGlvbigpe2lmKCF0 aGlzLmdyYXlPdXQpYW5pbWF0aW9uKHRoaXMuY29ubmVjdEJ1dHRvbikuZnJvbSgn b3BhY2l0eScsMSkudG8oJ29wYWNpdHknLDApLmZyb20oJ3dpZHRoJyx0aGlzLm9y aWdpbmFsQnV0dG9uV2lkdGgpLnRvKCd3aWR0aCcsJzBweCcpLm9uZG9uZShmdW5j dGlvbigpe0NTUy5hZGRDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24sJ2hpZGRlbl9l bGVtJyk7fS5iaW5kKHRoaXMpKS5kdXJhdGlvbigxMDApLmdvKCk7YW5pbWF0aW9u KHRoaXMubnVtYmVyRXhjbHVkaW5nKS5mcm9tKCdvcGFjaXR5JywxKS50bygnb3Bh Y2l0eScsMCkuZHVyYXRpb24oMTAwKS5vbmRvbmUoZnVuY3Rpb24oKXtDU1MuYWRk Q2xhc3ModGhpcy5udW1iZXJFeGNsdWRpbmcsJ2hpZGRlbl9lbGVtJyk7U3R5bGUu c2V0KHRoaXMuc3VtbWFyeUluY2x1ZGluZywnb3BhY2l0eScsMCk7Q1NTLnJlbW92 ZUNsYXNzKHRoaXMuc3VtbWFyeUluY2x1ZGluZywnaGlkZGVuX2VsZW0nKTthbmlt YXRpb24odGhpcy5zdW1tYXJ5SW5jbHVkaW5nKS5mcm9tKCdvcGFjaXR5JywwKS50 bygnb3BhY2l0eScsMSkuZHVyYXRpb24oMTAwKS5nbygpO30uYmluZCh0aGlzKSku Z28oKTtmb3IodmFyIGE9MDthPHRoaXMuY29uZmlybVNwYW5zLmxlbmd0aDthKysp Q1NTLmFkZENsYXNzKHRoaXMuY29uZmlybVNwYW5zW2FdLCdoaWRkZW5fZWxlbScp O2lmKHRoaXMuZ3JheU91dClDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0 dG9uLCdoaWRkZW5fZWxlbScpO30sYW5pbWF0ZVNpbXBsZUJ1dHRvbkRpc2FwcGVh cmFuY2U6ZnVuY3Rpb24oKXthbmltYXRpb24odGhpcy5jb25uZWN0QnV0dG9uKS5m cm9tKCdvcGFjaXR5JywxKS50bygnb3BhY2l0eScsMCkuZnJvbSgnd2lkdGgnLHRo aXMub3JpZ2luYWxCdXR0b25XaWR0aCkudG8oJ3dpZHRoJywnMHB4Jykub25kb25l KGZ1bmN0aW9uKCl7Q1NTLmFkZENsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwnaGlk ZGVuX2VsZW0nKTtTdHlsZS5zZXQodGhpcy5zdW1tYXJ5SW5jbHVkaW5nLCdvcGFj aXR5JywwKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5zdW1tYXJ5SW5jbHVkaW5nLCdo aWRkZW5fZWxlbScpO2FuaW1hdGlvbih0aGlzLnN1bW1hcnlJbmNsdWRpbmcpLmZy b20oJ29wYWNpdHknLDApLnRvKCdvcGFjaXR5JywxKS5kdXJhdGlvbigxMDApLmdv KCk7fS5iaW5kKHRoaXMpKS5kdXJhdGlvbig1MCkuZ28oKTtmb3IodmFyIGE9MDth PHRoaXMuY29uZmlybVNwYW5zLmxlbmd0aDthKyspQ1NTLmFkZENsYXNzKHRoaXMu Y29uZmlybVNwYW5zW2FdLCdoaWRkZW5fZWxlbScpO2lmKHRoaXMuZ3JheU91dClD U1MucmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScp O30sY29tcHV0ZUJ1dHRvbkRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgYT1DU1Mu aGFzQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO2lmKGEp e0NTUy5hZGRDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24sJ2Nvbm5lY3Rfd2lkZ2V0 X29mZnNjcmVlbicpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24s J2hpZGRlbl9lbGVtJyk7fXZhciBiPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lv bnModGhpcy5jb25uZWN0QnV0dG9uKSxjPWIueCxkPWIueSxlPXBhcnNlSW50KFN0 eWxlLmdldCh0aGlzLmNvbm5lY3RCdXR0b24sJ3BhZGRpbmdMZWZ0JyksMTApLGY9 cGFyc2VJbnQoU3R5bGUuZ2V0KHRoaXMuY29ubmVjdEJ1dHRvbiwncGFkZGluZ1Jp Z2h0JyksMTApLGc9cGFyc2VJbnQoU3R5bGUuZ2V0KHRoaXMuY29ubmVjdEJ1dHRv biwncGFkZGluZ1RvcCcpLDEwKSxoPXBhcnNlSW50KFN0eWxlLmdldCh0aGlzLmNv bm5lY3RCdXR0b24sJ3BhZGRpbmdCb3R0b20nKSwxMCk7aWYoYSl7Q1NTLmFkZENs YXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTtDU1MucmVtb3Zl Q2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdjb25uZWN0X3dpZGdldF9vZmZzY3Jl ZW4nKTt9cmV0dXJuIHt3aWR0aDpjLWUtZi0yLGhlaWdodDpkfTt9LGNvbXB1dGVC dXR0b25EaW1lbnNpb25zV2l0aFBhZGRpbmc6ZnVuY3Rpb24oKXt2YXIgYT1DU1Mu aGFzQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO2lmKGEp e0NTUy5hZGRDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24sJ2Nvbm5lY3Rfd2lkZ2V0 X29mZnNjcmVlbicpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24s J2hpZGRlbl9lbGVtJyk7fXZhciBiPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lv bnModGhpcy5jb25uZWN0QnV0dG9uKSxjPWIueCxkPWIueTtpZih1YS5pZSgpKWMr PTM7aWYoYSl7Q1NTLmFkZENsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwnaGlkZGVu X2VsZW0nKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdjb25u ZWN0X3dpZGdldF9vZmZzY3JlZW4nKTt9cmV0dXJuIHt3aWR0aDpjLGhlaWdodDpk fTt9LGFuaW1hdGVCdXR0b25Db3VudEJ1dHRvblJlYXBwZWFyYW5jZTpmdW5jdGlv bigpe2lmKHRoaXMuc2hvd0NvbmZpcm0pe2Zvcih2YXIgYT0wO2E8dGhpcy5jb25m aXJtU3BhbnMubGVuZ3RoO2ErKylDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25maXJt U3BhbnNbYV0sJ2hpZGRlbl9lbGVtJyk7fWVsc2UgaWYoIXRoaXMuZ3JheU91dCl7

Q1NTLnJlbW92ZUNsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0n KTthbmltYXRpb24odGhpcy5jb25uZWN0QnV0dG9uKS5mcm9tKCd3aWR0aCcsJzBw eCcpLnRvKCd3aWR0aCcsdGhpcy5vcmlnaW5hbEJ1dHRvbldpZHRoKS5mcm9tKCdv cGFjaXR5JywwKS50bygnb3BhY2l0eScsMSkuZHVyYXRpb24oMTAwKS5nbygpO31T dHlsZS5zZXQodGhpcy5zdW1tYXJ5SW5jbHVkaW5nLCdvcGFjaXR5JywxKTthbmlt YXRpb24odGhpcy5zdW1tYXJ5SW5jbHVkaW5nKS5mcm9tKCdvcGFjaXR5JywxKS50 bygnb3BhY2l0eScsMCkuZHVyYXRpb24oMTAwKS5vbmRvbmUoZnVuY3Rpb24oKXtD U1MuYWRkQ2xhc3ModGhpcy5zdW1tYXJ5SW5jbHVkaW5nLCdoaWRkZW5fZWxlbScp O1N0eWxlLnNldCh0aGlzLm51bWJlckV4Y2x1ZGluZywnb3BhY2l0eScsMCk7Q1NT LnJlbW92ZUNsYXNzKHRoaXMubnVtYmVyRXhjbHVkaW5nLCdoaWRkZW5fZWxlbScp O2FuaW1hdGlvbih0aGlzLm51bWJlckV4Y2x1ZGluZykuZnJvbSgnb3BhY2l0eScs MCkudG8oJ29wYWNpdHknLDEpLmR1cmF0aW9uKDEwMCkuZ28oKTt9LmJpbmQodGhp cykpLmdvKCk7fSxhbmltYXRlU2ltcGxlQnV0dG9uUmVhcHBlYXJhbmNlOmZ1bmN0 aW9uKCl7aWYodGhpcy5zaG93Q29uZmlybSl7Zm9yKHZhciBhPTA7YTx0aGlzLmNv bmZpcm1TcGFucy5sZW5ndGg7YSsrKUNTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbmZp cm1TcGFuc1thXSwnaGlkZGVuX2VsZW0nKTt9ZWxzZXtDU1MucmVtb3ZlQ2xhc3Mo dGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO2FuaW1hdGlvbih0aGlz LmNvbm5lY3RCdXR0b24pLmZyb20oJ3dpZHRoJywnMHB4JykudG8oJ3dpZHRoJyx0 aGlzLm9yaWdpbmFsQnV0dG9uV2lkdGgpLmZyb20oJ29wYWNpdHknLDApLnRvKCdv cGFjaXR5JywxKS5kdXJhdGlvbigxMDApLmdvKCk7fVN0eWxlLnNldCh0aGlzLnN1 bW1hcnlJbmNsdWRpbmcsJ29wYWNpdHknLDEpO2FuaW1hdGlvbih0aGlzLnN1bW1h cnlJbmNsdWRpbmcpLmZyb20oJ29wYWNpdHknLDEpLnRvKCdvcGFjaXR5JywwKS5k dXJhdGlvbigxMDApLm9uZG9uZShmdW5jdGlvbigpe0NTUy5hZGRDbGFzcyh0aGlz LnN1bW1hcnlJbmNsdWRpbmcsJ2hpZGRlbl9lbGVtJyk7fS5iaW5kKHRoaXMpKS5n bygpO30saW5qZWN0Q29tbWVudFdpZGdldE1hcmt1cDpmdW5jdGlvbihhKXt0aGlz LmNvbW1lbnREb2N1bWVudD1hO3RoaXMuY29tbWVudERvY3VtZW50LmJvZHkuaW5u ZXJIVE1MPXRoaXMuY29tbWVudFdpZGdldE1hcmt1cDt0aGlzLnRyYW5zZmVyQ1NT U3R5bGVzKCk7aWYodGhpcy5uZXdQcm9maWxlUGljKXt2YXIgYj1ET00uZmluZCh0 aGlzLmNvbW1lbnREb2N1bWVudCwnaW1nLmNvbm5lY3RfY29tbWVudF93aWRnZXRf dXNlcl9waWMnKTtiLnNyYz10aGlzLm5ld1Byb2ZpbGVQaWM7ZGVsZXRlIHRoaXMu bmV3UHJvZmlsZVBpYzt9aWYodWEuaWUoKSl7dmFyIGM9RE9NLnNjcnkodGhpcy5j b21tZW50RG9jdW1lbnQsJ2ltZy5jb25uZWN0X2NvbW1lbnRfc2hhcmVfcHJldmll d19waWMnKTtpZihjLmxlbmd0aD4wKXtjPWNbMF07dmFyIGQ9NTAsZT1WZWN0b3Iy LmdldEVsZW1lbnREaW1lbnNpb25zKGMpLGY9ZC9lLng7aWYoZjwxKXtTdHlsZS5z ZXQoYywnd2lkdGgnLGQpO1N0eWxlLnNldChjLCdoZWlnaHQnLGUueSpmKTt9fX10 aGlzLnNldHVwQ29tbWVudEhvb2tzKHRoaXMuY29tbWVudERvY3VtZW50KTt0aGlz LmNvbW1lbnRXaWRnZXRJc0V4cGFuZGVkPSF0aGlzLmlubGluZVVubGlrZUxpbms7 dmFyIGc9dGhpcy5nZXRDb21tZW50QWN0aXZhdGluZ0NvbXBvbmVudCgpO2cub25t b3VzZW91dD10aGlzLmNvbW1lbnREb2N1bWVudC5ib2R5Lm9ubW91c2VvdXQ9dGhp cy5vbkNvbW1lbnRNb3VzZU91dC5iaW5kKHRoaXMpO2cub25tb3VzZW92ZXI9dGhp cy5jb21tZW50RG9jdW1lbnQuYm9keS5vbm1vdXNlb3Zlcj10aGlzLm9uQ29tbWVu dE1vdXNlT3Zlci5iaW5kKHRoaXMpO3RoaXMuaW5HcmFjZVBlcmlvZD1mYWxzZTt9 LHBvc2l0aW9uTnViOmZ1bmN0aW9uKGEpe3ZhciBiPURPTS5maW5kKHRoaXMuY29u bmVjdEJ1dHRvbiwnLmxpa2V0ZXh0JyksYz1WZWN0b3IyLmdldEVsZW1lbnRQb3Np dGlvbihiKS54KzcsZD1ET00uZmluZCh0aGlzLmNvbW1lbnREb2N1bWVudC5ib2R5 LCcubnViJyk7aWYoaW50bF9sb2NhbGVfaXNfcnRsKCkpe2MrPWIub2Zmc2V0V2lk dGgtMTQtNztsZWZ0PWMtcGFyc2VGbG9hdChhKStkLm9mZnNldFdpZHRoLzI7fWVs c2UgbGVmdD1jLXBhcnNlRmxvYXQoYSktZC5vZmZzZXRXaWR0aC8yO2Quc3R5bGUu bGVmdD1sZWZ0KydweCc7ZC5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJzt9LG9u Q29tbWVudE1vdXNlT3V0OmZ1bmN0aW9uKGEpe3RoaXMubW91c2VPdXRzaWRlPXRy dWU7cmV0dXJuIHRydWU7fSxvbkNvbW1lbnRNb3VzZU92ZXI6ZnVuY3Rpb24oYSl7 dGhpcy5tb3VzZU91dHNpZGU9ZmFsc2U7cmV0dXJuIHRydWU7fSxzZXR1cENvbW1l bnRIb29rczpmdW5jdGlvbihhKXt0aGlzLnBsYWNlaG9sZGVySW5wdXRSZWdpb249 RE9NLmZpbmQoYSwnZGl2LmNvbm5lY3RfY29tbWVudF93aWRnZXRfcGxhY2Vob2xk ZXJfaW5wdXRfcmVnaW9uJyk7dGhpcy5wbGFjZWhvbGRlcklucHV0PURPTS5maW5k KHRoaXMucGxhY2Vob2xkZXJJbnB1dFJlZ2lvbiwnaW5wdXQuY29ubmVjdF9jb21t ZW50X3dpZGdldF9wbGFjZWhvbGRlcl9pbnB1dCcpO3RoaXMuZnVsbElucHV0UmVn aW9uPURPTS5maW5kKGEsJ2Rpdi5jb25uZWN0X2NvbW1lbnRfd2lkZ2V0X2Z1bGxf aW5wdXRfcmVnaW9uJyk7dGhpcy5mdWxsSW5wdXRUZXh0YXJlYT1ET00uZmluZCh0 aGlzLmZ1bGxJbnB1dFJlZ2lvbiwndGV4dGFyZWEuY29ubmVjdF9jb21tZW50X3dp

ZGdldF9mdWxsX2lucHV0X3RleHRhcmVhJyk7dGhpcy5vd25Qcm9kdWN0Q2hlY2ti b3g9RE9NLnNjcnkoYSwnaW5wdXQuY29ubmVjdF9jb21tZW50X3dpZGdldF9vd25f cHJvZHVjdF9jaGVja2JveCcpO2lmKHRoaXMub3duUHJvZHVjdENoZWNrYm94Lmxl bmd0aD4wKXRoaXMub3duUHJvZHVjdENoZWNrYm94PXRoaXMub3duUHJvZHVjdENo ZWNrYm94WzBdO3RoaXMud2lkZ2V0QnV0dG9uUmVnaW9uPURPTS5maW5kKGEsJ2Rp di5jb25uZWN0X2NvbW1lbnRfd2lkZ2V0X2J1dHRvbl9yZWdpb24nKTt0aGlzLnBv c3RUb0ZhY2Vib29rQnV0dG9uPURPTS5zY3J5KHRoaXMud2lkZ2V0QnV0dG9uUmVn aW9uLCcuY29ubmVjdF9jb21tZW50X3dpZGdldF9wb3N0X2J1dHRvbiBpbnB1dCcp O2lmKHRoaXMucG9zdFRvRmFjZWJvb2tCdXR0b24ubGVuZ3RoPjApe3RoaXMucG9z dFRvRmFjZWJvb2tCdXR0b249dGhpcy5wb3N0VG9GYWNlYm9va0J1dHRvblswXTt0 aGlzLnBvc3RUb0ZhY2Vib29rQnV0dG9uLm9uY2xpY2s9dGhpcy51cGRhdGVVc2Vy Q29tbWVudC5iaW5kKHRoaXMpO310aGlzLmNsb3NlQnV0dG9uPURPTS5zY3J5KHRo aXMud2lkZ2V0QnV0dG9uUmVnaW9uLCcuY29ubmVjdF9jb21tZW50X3dpZGdldF9j bG9zZV9idXR0b24gaW5wdXQnKTtpZih0aGlzLmNsb3NlQnV0dG9uLmxlbmd0aD4w KXt0aGlzLmNsb3NlQnV0dG9uPXRoaXMuY2xvc2VCdXR0b25bMF07dGhpcy5jbG9z ZUJ1dHRvbi5vbmNsaWNrPXRoaXMuY2xvc2VDb21tZW50V2lkZ2V0LmJpbmQodGhp cyk7fXRoaXMuaW5saW5lVW5saWtlTGluaz1ET00uc2NyeShhLCdhLmNvbm5lY3Rf Y29tbWVudF93aWRnZXRfdW5saWtlX2xpbmsnKTtpZih0aGlzLmlubGluZVVubGlr ZUxpbmsubGVuZ3RoPjApe3RoaXMuaW5saW5lVW5saWtlTGluaz10aGlzLmlubGlu ZVVubGlrZUxpbmtbMF07RXZlbnQubGlzdGVuKHRoaXMuaW5saW5lVW5saWtlTGlu aywnY2xpY2snLHRoaXMuY29ubmVjdFRvTm9kZU9uQ2xpY2suYmluZCh0aGlzKSk7 fXRoaXMuZGVmYXVsdElucHV0VGV4dD10aGlzLnBsYWNlaG9sZGVySW5wdXQudmFs dWU7dGhpcy5wbGFjZWhvbGRlcklucHV0Lm9uZm9jdXM9dGhpcy50cmFuc2l0aW9u VG9GdWxsSW5wdXRNb2RlLmJpbmQodGhpcyk7dGhpcy5mdWxsSW5wdXRUZXh0YXJl YS5vbmZvY3VzPXRoaXMucmVtb3ZlUGxhY2Vob2xkZXJUZXh0LmJpbmQodGhpcyk7 dGhpcy5mdWxsSW5wdXRUZXh0YXJlYS5vbmJsdXI9KGZ1bmN0aW9uKGIpe3RoaXMu cmVzdG9yZVBsYWNlaG9sZGVyVGV4dCgpO2lmKHRoaXMubW91c2VPdXRzaWRlKXJl dHVybiB0aGlzLmhpZGVDb21tZW50V2lkZ2V0KCk7fSkuYmluZCh0aGlzKTtpZih0 aGlzLmNsb3NlQnV0dG9uKXt0aGlzLmNsb3NlQnV0dG9uLm9uY2xpY2s9dGhpcy5j bG9zZUNvbW1lbnRXaWRnZXQuYmluZCh0aGlzKTt0aGlzLmZ1bGxJbnB1dFRleHRh cmVhLm9ua2V5ZG93bj0oZnVuY3Rpb24oYil7Yj1ifHx3aW5kb3cuZXZlbnQ7aWYo IWIpcmV0dXJuIHRydWU7aWYoYi5rZXlDb2RlPT0xMyYmIShiLmN0cmxLZXl8fGIu c2hpZnRLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpKXt0aGlzLnVwZGF0ZVVzZXJD b21tZW50KCk7cmV0dXJuIGZhbHNlO31pZih0aGlzLmRpZFJlc2V0T25LZXlkb3du KXJldHVybiB0cnVlO3RoaXMucmVtb3ZlUGxhY2Vob2xkZXJUZXh0KCk7dGhpcy5k aWRSZXNldE9uS2V5ZG93bj10cnVlO3JldHVybiB0cnVlO30pLmJpbmQodGhpcyk7 dGhpcy50cmFuc2l0aW9uVG9GdWxsSW5wdXRNb2RlKCk7fX0sZ2V0Q29tbWVudEFj dGl2YXRpbmdDb21wb25lbnQ6ZnVuY3Rpb24oKXtpZih0aGlzLmxheW91dD09PUV4 dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQuQk9YX0NPVU5UX0xBWU9VVHx8dGhpcy5s YXlvdXQ9PT1FeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LkJVVFRPTl9DT1VOVF9M QVlPVVQpe3JldHVybiB0aGlzLndpZGdldDt9ZWxzZSBpZih0aGlzLmxheW91dD09 PUV4dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQuU0lNUExFX0xBWU9VVCl7cmV0dXJu IHRoaXMud2lkZ2V0O31lbHNlIGlmKHRoaXMuZ3JheU91dCl7cmV0dXJuIERPTS5m aW5kKHRoaXMud2lkZ2V0LCd0YWJsZS5jb25uZWN0X3dpZGdldF9pbnRlcmFjdGl2 ZV9hcmVhJyk7fWVsc2UgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uQ2VsbDt9LHNo b3dDb21tZW50V2lkZ2V0OmZ1bmN0aW9uKGV2ZW50KXtpZih0aGlzLm90aGVyQ29t bWVudFdpZGdldE9wZW4pcmV0dXJuIGZhbHNlO3RoaXMuaW5HcmFjZVBlcmlvZD10 cnVlO3RoaXMua2lsbENsb3NlVGhyZWFkKCk7aWYodGhpcy5jb21tZW50V2lkZ2V0 T3BlbiYmIXRoaXMuY29tbWVudFdpZGdldFZpc2libGUpe3RoaXMuY29tbWVudFdp ZGdldFZpc2libGU9dHJ1ZTtDU1Muc2hvdyh0aGlzLmNvbW1lbnREb2N1bWVudC5i b2R5KTtVbnZlcmlmaWVkWEQuc2VuZCh7dHlwZTonc2hvd0VkZ2VDb21tZW50RGlh bG9nJ30pO31yZXR1cm4gZmFsc2U7fSxoaWRlQ29tbWVudFdpZGdldDpmdW5jdGlv bihldmVudCl7aWYodGhpcy5vdGhlckNvbW1lbnRXaWRnZXRPcGVuKXJldHVybiBm YWxzZTt0aGlzLmluR3JhY2VQZXJpb2Q9ZmFsc2U7aWYodGhpcy5jb21tZW50V2lk Z2V0T3BlbiYmdGhpcy5jb21tZW50V2lkZ2V0VmlzaWJsZSl7dmFyIGE9ZnVuY3Rp b24oKXtpZighdGhpcy5pbkdyYWNlUGVyaW9kJiZ0aGlzLnNob3VsZEhpZGVFeHBh bmRlZFdpZGdldCgpKXt0aGlzLmZ1bGxJbnB1dFRleHRhcmVhLmJsdXIoKTt0aGlz LmNvbW1lbnRXaWRnZXRWaXNpYmxlPWZhbHNlO2lmKCF0aGlzLnNvY2lhbEJhcilD U1MuaGlkZSh0aGlzLmNvbW1lbnREb2N1bWVudC5ib2R5KTtVbnZlcmlmaWVkWEQu c2VuZCh7dHlwZTonaGlkZUVkZ2VDb21tZW50RGlhbG9nJ30pO310aGlzLmluR3Jh

Y2VQZXJpb2Q9ZmFsc2U7dGhpcy5raWxsQ2xvc2VUaHJlYWQoKTt9LmJpbmQodGhp cyk7dGhpcy5jbG9zZVRocmVhZElEPXNldFRpbWVvdXQoYSwxMDApO31yZXR1cm4g ZmFsc2U7fSxzaG91bGRIaWRlRXhwYW5kZWRXaWRnZXQ6ZnVuY3Rpb24oKXtyZXR1 cm4gIXRoaXMuY29tbWVudFdpZGdldElzRXhwYW5kZWR8fHRoaXMuZnVsbElucHV0 VGV4dGFyZWEudmFsdWU9PT0nJ3x8dGhpcy5mdWxsSW5wdXRUZXh0YXJlYS52YWx1 ZT09PXRoaXMuZGVmYXVsdElucHV0VGV4dDt9LGtpbGxDbG9zZVRocmVhZDpmdW5j dGlvbigpe2lmKHRoaXMuY2xvc2VUaHJlYWRJRCl7Y2xlYXJUaW1lb3V0KHRoaXMu Y2xvc2VUaHJlYWRJRCk7ZGVsZXRlIHRoaXMuY2xvc2VUaHJlYWRJRDt9fSx0cmFu c2ZlckNTU1N0eWxlczpmdW5jdGlvbigpe3ZhciBhPURPTS5zY3J5KHdpbmRvdy5k b2N1bWVudCwnbGluaycpLGI9RE9NLnNjcnkod2luZG93LmRvY3VtZW50LCdzdHls ZScpLGM9RE9NLmZpbmQod2luZG93LmRvY3VtZW50LCdodG1sJyksZD1ET00uZmlu ZCh0aGlzLmNvbW1lbnREb2N1bWVudCwnaHRtbCcpLGU9RE9NLmZpbmQodGhpcy5j b21tZW50RG9jdW1lbnQsJ2hlYWQnKTtmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2Yr KylpZihhW2ZdLnJlbD09J3N0eWxlc2hlZXQnKXt2YXIgZz10aGlzLmNvbW1lbnRE b2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7Zy5yZWw9YVtmXS5yZWw7Zy5o cmVmPWFbZl0uaHJlZjtnLnR5cGU9YVtmXS50eXBlO2UuYXBwZW5kQ2hpbGQoZyk7 fWZvcihmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBoPXRoaXMuY29tbWVudERvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyksaT1iW2ZdLmlubmVyVGV4dHx8Yltm XS50ZXh0Q29udGVudHx8YltmXS5pbm5lckhUTUw7aC5zZXRBdHRyaWJ1dGUoInR5 cGUiLCJ0ZXh0L2NzcyIpO2UuYXBwZW5kQ2hpbGQoaCk7aWYoaC5zdHlsZVNoZWV0 KXtoLnN0eWxlU2hlZXQuY3NzVGV4dD1pO31lbHNle3ZhciBqPXRoaXMuY29tbWVu dERvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkpO2guYXBwZW5kQ2hpbGQoaik7fX1k LmlkPWMuaWQ7ZC5jbGFzc05hbWU9Yy5jbGFzc05hbWU7dGhpcy5jb21tZW50RG9j dW1lbnQuYm9keS5jbGFzc05hbWU9d2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NO YW1lO30sdHJhbnNpdGlvblRvRnVsbElucHV0TW9kZTpmdW5jdGlvbihldmVudCl7 dGhpcy5jb21tZW50V2lkZ2V0SXNFeHBhbmRlZD10cnVlO0NTUy5oaWRlKHRoaXMu cGxhY2Vob2xkZXJJbnB1dFJlZ2lvbik7Q1NTLnNob3codGhpcy5mdWxsSW5wdXRS ZWdpb24pO0NTUy5zaG93KHRoaXMud2lkZ2V0QnV0dG9uUmVnaW9uKTtpZih0aGlz LmNsb3NlQnV0dG9uKXt0aGlzLnJlc3RvcmVQbGFjZWhvbGRlclRleHQoKTt2YXIg YT10aGlzLmZ1bGxJbnB1dFRleHRhcmVhO2lmKGRvY3VtZW50LnNlbGVjdGlvbil7 dmFyIGI9YS5jcmVhdGVUZXh0UmFuZ2UoKTtiLmNvbGxhcHNlKHRydWUpO2IubW92 ZUVuZCgnY2hhcmFjdGVyJywwKTtiLm1vdmVTdGFydCgnY2hhcmFjdGVyJywwKTti LnNlbGVjdCgpO31lbHNlIGlmKGEuc2V0U2VsZWN0aW9uUmFuZ2Upe2EuZm9jdXMo KTthLnNldFNlbGVjdGlvblJhbmdlKDAsMCk7fX1yZXR1cm4gZmFsc2U7fSxyZW1v dmVQbGFjZWhvbGRlclRleHQ6ZnVuY3Rpb24oZXZlbnQpe2lmKENTUy5oYXNDbGFz cyh0aGlzLmZ1bGxJbnB1dFRleHRhcmVhLCdjb25uZWN0X2NvbW1lbnRfd2lkZ2V0 X2Rpc2FibGVkJykpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLmZ1bGxJbnB1dFRleHRh cmVhLCdjb25uZWN0X2NvbW1lbnRfd2lkZ2V0X2Rpc2FibGVkJyk7dGhpcy5mdWxs SW5wdXRUZXh0YXJlYS52YWx1ZT0nJzt9cmV0dXJuIGZhbHNlO30scmVzdG9yZVBs YWNlaG9sZGVyVGV4dDpmdW5jdGlvbihldmVudCl7aWYodGhpcy5mdWxsSW5wdXRU ZXh0YXJlYS52YWx1ZS50cmltKCk9PScnKXt0aGlzLmZ1bGxJbnB1dFRleHRhcmVh LnZhbHVlPXRoaXMuZGVmYXVsdElucHV0VGV4dDtDU1MuYWRkQ2xhc3ModGhpcy5m dWxsSW5wdXRUZXh0YXJlYSwnY29ubmVjdF9jb21tZW50X3dpZGdldF9kaXNhYmxl ZCcpO31yZXR1cm4gZmFsc2U7fSx1cGRhdGVVc2VyQ29tbWVudDpmdW5jdGlvbihl dmVudCl7dmFyIGE9dGhpcy5mdWxsSW5wdXRUZXh0YXJlYS52YWx1ZS50cmltKCks Yj10aGlzLm93blByb2R1Y3RDaGVja2JveC5jaGVja2VkO2lmKGE9PT0nJ3x8YT09 dGhpcy5kZWZhdWx0SW5wdXRUZXh0KXtpZihiPT09ZmFsc2UpcmV0dXJuIGZhbHNl O2E9Jyc7fXRoaXMucG9zdFVzZXJDb21tZW50KGEsYik7cmV0dXJuIGZhbHNlO30s Z2V0QWpheEVuZHBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuICcvYWpheC9jb25uZWN0 L2V4dGVybmFsX25vZGVfY29ubmVjdC5waHAnO30sZ2V0Q29tbWVudEFqYXhFbmRw b2ludDpmdW5jdGlvbigpe3JldHVybiAnL2FqYXgvY29ubmVjdC9leHRlcm5hbF9l ZGdlX2NvbW1lbnQucGhwJzt9LGdldENvbmZpcm1VUkw6ZnVuY3Rpb24oKXt2YXIg YT17aHJlZjp0aGlzLmV4dGVybmFsVXJsLHBhZ2VfaWQ6dGhpcy5wYWdlSWQsbm9k ZV90eXBlOnRoaXMubm9kZVR5cGUsZWRnZV90eXBlOnRoaXMuZWRnZVR5cGUsd2lk Z2V0X2lkOnRoaXMud2lkZ2V0SUR9O2lmKHRoaXMucmVmKWEucmVmPXRoaXMucmVm O3JldHVybiBVUkkoJy9wbHVnaW5zL2xpa2VfY29uZmlybS5waHAnKS5hZGRRdWVy eURhdGEoYSkudG9TdHJpbmcoKTt9LHVwZGF0ZUxvZ2dlZEluVXNlcjpmdW5jdGlv bihhLGIpe0V4dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQudXBkYXRlTG9nZ2VkSW5V c2VyKGEsYik7fSxzeW5jU2VuZFdpZGdldFdpZHRoOmZ1bmN0aW9uKGEsYil7dmFy IGM9dGhpcy5jb21wdXRlQnV0dG9uRGltZW5zaW9uc1dpdGhQYWRkaW5nKCkud2lk

dGgsZD1iLmJ1dHRvbl93aWR0aC1jO2lmKHRoaXMubGF5b3V0PT09RXh0ZXJuYWxO b2RlQ29ubmVjdFdpZGdldC5CT1hfQ09VTlRfTEFZT1VUJiZkPjAmJmQ8PTUpe1N0 eWxlLnNldCh0aGlzLmNvbm5lY3RCdXR0b24sJ3dpZHRoJywoYi5idXR0b25fd2lk dGgtcGFyc2VJbnQoU3R5bGUuZ2V0KHRoaXMuY29ubmVjdEJ1dHRvbiwncGFkZGlu Z0xlZnQnKSktcGFyc2VJbnQoU3R5bGUuZ2V0KHRoaXMuY29ubmVjdEJ1dHRvbiwn cGFkZGluZ1JpZ2h0JykpLXBhcnNlSW50KFN0eWxlLmdldCh0aGlzLmNvbm5lY3RC dXR0b24sJ2JvcmRlckxlZnRXaWR0aCcpKS1wYXJzZUludChTdHlsZS5nZXQodGhp cy5jb25uZWN0QnV0dG9uLCdib3JkZXJSaWdodFdpZHRoJykpKSsncHgnKTt0aGlz LnNpemVOdW1iZXJDbG91ZCgpO31pZih0aGlzLmxheW91dD09PUV4dGVybmFsTm9k ZUNvbm5lY3RXaWRnZXQuU1RBTkRBUkRfTEFZT1VUKXt2YXIgZT1WZWN0b3IyLmdl dEVsZW1lbnREaW1lbnNpb25zKHRoaXMud2lkZ2V0KS55O1N0eWxlLnNldCh0aGlz LndpZGdldCwnaGVpZ2h0JywoZSs1KSsncHgnKTt2YXIgZj11YS5pZSgpLGc9aW50 bF9sb2NhbGVfaXNfcnRsKCksaD1nPydyaWdodCc6J2xlZnQnO2lmKGYmJmY8OSl7 U3R5bGUuc2V0KHRoaXMuY29ubmVjdEJ1dHRvbiwncG9zaXRpb24nLCdhYnNvbHV0 ZScpO1N0eWxlLnNldCh0aGlzLmNvbm5lY3RCdXR0b24saCwtKGIuYnV0dG9uX3dp ZHRoKzEwKSsncHgnKTt9ZWxzZXtTdHlsZS5zZXQodGhpcy5jb25uZWN0QnV0dG9u LCdwb3NpdGlvbicsJ2ZpeGVkJyk7U3R5bGUuc2V0KHRoaXMuY29ubmVjdEJ1dHRv bixoLCcwcHgnKTt9aWYoZiYmdGhpcy5jb25uZWN0QnV0dG9uU2xpZGVyKXtTdHls ZS5zZXQodGhpcy5jb25uZWN0QnV0dG9uU2xpZGVyLGgsYi5idXR0b25fd2lkdGgr J3B4Jyk7aWYoZjw9Nyl0aGlzLmZpeElFQnV0dG9uRG91YmxlTGluZUJ1ZygpO31T dHlsZS5zZXQodGhpcy5jb25maXJtYXRpb25DZWxsLCdwb3NpdGlvbicsJ2Fic29s dXRlJyk7U3R5bGUuc2V0KHRoaXMuY29uZmlybWF0aW9uQ2VsbCxoLChiLmJ1dHRv bl93aWR0aCtjKzUpKydweCcpO1N0eWxlLnNldCh0aGlzLmNvbmZpcm1hdGlvbkNl bGwsJ3RvcCcsJzVweCcpO2lmKHRoaXMuc2FtcGxlQ29ubmVjdGlvbnMpe1N0eWxl LnNldCh0aGlzLnNhbXBsZUNvbm5lY3Rpb25zLCdwb3NpdGlvbicsJ2ZpeGVkJyk7 U3R5bGUuc2V0KHRoaXMuc2FtcGxlQ29ubmVjdGlvbnMsaCwnMCcpO310aGlzLmlu dmVydGVkQnV0dG9ucz10cnVlO3RoaXMucmVwb3NpdGlvbkZhY2VwaWxlVmVydGlj YWxseSgpO319LHJlcG9zaXRpb25GYWNlcGlsZVZlcnRpY2FsbHk6ZnVuY3Rpb24o KXtpZih0aGlzLmludmVydGVkQnV0dG9ucyYmdGhpcy5zYW1wbGVDb25uZWN0aW9u cyl7dmFyIGE9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLnN1bW1h cnlUZXh0KS55O1N0eWxlLnNldCh0aGlzLnNhbXBsZUNvbm5lY3Rpb25zLCdtYXJn aW4tdG9wJywoNSthKzUpKydweCcpO319fSk7CnZhciBFeHRlcm5hbFBhZ2VMaWtl V2lkZ2V0PWZ1bmN0aW9uKGEpe2EuZWRnZVR5cGU9J2xpa2UnO3RoaXMucGFyZW50 LmNvbnN0cnVjdCh0aGlzLGEpO3RoaXMudW5hY3Rpb25MaW5rPURPTS5zY3J5KHRo aXMud2lkZ2V0LCdzcGFuLnVubGlrZV9saW5rJylbMF07aWYodGhpcy51bmFjdGlv bkxpbmspRXZlbnQubGlzdGVuKHRoaXMudW5hY3Rpb25MaW5rLCdjbGljaycsdGhp cy5jb25uZWN0VG9Ob2RlT25DbGljay5iaW5kKHRoaXMpKTt0aGlzLmhhc1Nob3dl ZEluc2lnaHRzPWZhbHNlO3RoaXMuc2hvd0luc2lnaHRzKCk7fTtDbGFzcy5leHRl bmQoRXh0ZXJuYWxQYWdlTGlrZVdpZGdldCwnRXh0ZXJuYWxOb2RlQ29ubmVjdFdp ZGdldCcpO0V4dGVybmFsUGFnZUxpa2VXaWRnZXQuTElLRV9FREdFX1RZUEU9MDtF eHRlcm5hbFBhZ2VMaWtlV2lkZ2V0LlJFQ09NTUVORF9FREdFX1RZUEU9MTtjb3B5 UHJvcGVydGllcyhFeHRlcm5hbFBhZ2VMaWtlV2lkZ2V0LnByb3RvdHlwZSx7Z2V0 U3luY0VuZHBvaW50TmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29ubmVjdFRl eHQ/dGhpcy5jb25uZWN0VGV4dDonbGlrZSc7aWYoYT09RXh0ZXJuYWxQYWdlTGlr ZVdpZGdldC5SRUNPTU1FTkRfRURHRV9UWVBFKWE9J2xpa2UnO3JldHVybiAncGxh dGZvcm0vJythKycvc3luYyc7fSxnZXRDb25uZWN0aW9uRW5kcG9pbnROYW1lOmZ1 bmN0aW9uKCl7cmV0dXJuICdwbGF0Zm9ybS9saWtlL2Nvbm5lY3Rpb24nO30sZ2V0 UGx1Z2luTmFtZTpmdW5jdGlvbigpe3JldHVybiAnbGlrZSc7fSxwcmVzZW50SW5z aWdodHNQYWdlOmZ1bmN0aW9uKGV2ZW50KXtFdmVudC5raWxsKGV2ZW50KTt2YXIg YTthPScvaW5zaWdodHMvP2lubGluZV9saW5rPXRydWUmc2s9JztpZih0aGlzLnBh Z2VJZCl7YSs9J3BvXycrdGhpcy5wYWdlSWQ7fWVsc2UgYSs9J2xvXycrdGhpcy5k b21haW5JZDt3aW5kb3cub3BlbihhLCdfYmxhbmsnKTt9LHNob3dJbnNpZ2h0czpm dW5jdGlvbigpe2lmKHRoaXMuaGFzU2hvd2VkSW5zaWdodHN8fCghdGhpcy5wYWdl SWQmJiF0aGlzLmRvbWFpbklkKSlyZXR1cm47dmFyIGE9RE9NLnNjcnkodGhpcy53 aWRnZXQsJ2EuY29ubmVjdF93aWRnZXRfaW5zaWdodHNfbGluaycpO2lmKGEpZm9y KHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe0NTUy5zaG93KGFbYl0ucGFyZW50Tm9k ZSk7RXZlbnQubGlzdGVuKGFbYl0sJ2NsaWNrJyx0aGlzLnByZXNlbnRJbnNpZ2h0 c1BhZ2UuYmluZCh0aGlzKSk7fXRoaXMuaGFzU2hvd2VkSW5zaWdodHM9dHJ1ZTt9 LHJlcG9zaXRpb25GYWNlcGlsZVZlcnRpY2FsbHk6ZnVuY3Rpb24oKXt0aGlzLnNo b3dJbnNpZ2h0cygpO3RoaXMucGFyZW50LnJlcG9zaXRpb25GYWNlcGlsZVZlcnRp

Y2FsbHkoKTt9fSk7CmZ1bmN0aW9uIFNlbmRCdXR0b24oYSl7dmFyIGI9JChhLmRp dklEKTtjb3B5UHJvcGVydGllcyh0aGlzLHtidXR0b246RE9NLmZpbmQoYiwnYS5i dG5MaW5rJyksY2hhbm5lbDphLmNoYW5uZWwsZGl2OmIsZGl2SUQ6YS5kaXZJRCxs b2dnZWRJbjohIWEudXNlcklELG5vZGVJbWFnZVVSTDphLm5vZGVJbWFnZVVSTCxu b2RlVGl0bGU6YS5ub2RlVGl0bGUsbm9kZVVSTDphLm5vZGVVUkwsbm9kZVN1bW1h cnk6YS5ub2RlU3VtbWFyeSxlcnJvcjphLmVycm9yLGluaXRGb3JtT3BlbjphLmlu aXRGb3JtT3BlbixleHRlbmRlZF9zb2NpYWxfY29udGV4dDphLmV4dGVuZGVkX3Nv Y2lhbF9jb250ZXh0LGxpa2VCdXR0b25MYXlvdXQ6YS5saWtlQnV0dG9uTGF5b3V0 fSk7dGhpcy5pbml0KCk7fWNvcHlQcm9wZXJ0aWVzKFNlbmRCdXR0b24ucHJvdG90 eXBlLHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5mb3JtSXNPcGVuPWZhbHNlO3RoaXMu Zm9ybUlzU2hvd249ZmFsc2U7dGhpcy5wZW5kaW5nRm9ybVNob3c9ZmFsc2U7QXJi aXRlci5zdWJzY3JpYmUoJ3BsYXRmb3JtL3NvY2lhbHBsdWdpbnMvc2VuZC9zZW50 JyxmdW5jdGlvbihhLGIpe2lmKGIuY29udHJvbGxlcklEPT09dGhpcy5kaXZJRCl0 aGlzLmNsb3NlRm9ybSgpO30uYmluZCh0aGlzKSxBcmJpdGVyLlNVQlNDUklCRV9O RVcpO0FyYml0ZXIuc3Vic2NyaWJlKCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5zL3Nl bmQvY2FuY2VsJyxmdW5jdGlvbihhLGIpe2lmKGIuY29udHJvbGxlcklEPT09dGhp cy5kaXZJRCl0aGlzLmhpZGVGb3JtKCk7fS5iaW5kKHRoaXMpLEFyYml0ZXIuU1VC U0NSSUJFX05FVyk7dGhpcy5idXR0b25XaWR0aD1WZWN0b3IyLmdldEVsZW1lbnRE aW1lbnNpb25zKHRoaXMuYnV0dG9uKS54O3RoaXMud2lkdGhTeW5jQXJiaXRlcj1B cmJpdGVyLnN1YnNjcmliZSgncGxhdGZvcm0vc29jaWFscGx1Z2lucy9saWtlL3Jl c2l6ZScsdGhpcy5zeW5jTGlrZVdpZGdldFdpZHRoLmJpbmQodGhpcykpO0FyYml0 ZXIuaW5mb3JtKCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5zL3NlbmQvcmVzaXplJyx7 YnV0dG9uX3dpZHRoOnRoaXMuYnV0dG9uV2lkdGh9LEFyYml0ZXIuQkVIQVZJT1Jf U1RBVEUpO0FyYml0ZXIuc3Vic2NyaWJlKCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5z L2RpYWxvZycsZnVuY3Rpb24oYSxiKXtpZihiLmNvbnRyb2xsZXJJRCE9PXRoaXMu ZGl2SUQmJmIuZXZlbnQ9PSdvcGVuJyl0aGlzLmNsb3NlRm9ybSgpO30uYmluZCh0 aGlzKSk7VW52ZXJpZmllZFhELmluaXQoe2NoYW5uZWxVcmw6dGhpcy5jaGFubmVs LGF1dG9SZXNpemU6dHJ1ZSxyZXNpemVXaWR0aDp0cnVlfSk7RXZlbnQubGlzdGVu KHRoaXMuYnV0dG9uLCdjbGljaycsdGhpcy50b2dnbGVGb3JtVmlzaWJpbGl0eS5i aW5kKHRoaXMpKTtpZih0aGlzLmluaXRGb3JtT3BlbilvbmFmdGVybG9hZFJlZ2lz dGVyX0RFUFJFQ0FURUQodGhpcy50b2dnbGVGb3JtVmlzaWJpbGl0eS5iaW5kKHRo aXMpKTt9LHN5bmNMaWtlV2lkZ2V0V2lkdGg6ZnVuY3Rpb24oYSxiKXt2YXIgYz1i LmJ1dHRvbl93aWR0aC10aGlzLmJ1dHRvbldpZHRoO2lmKGIubGF5b3V0PT09J2Jv eF9jb3VudCcmJmM+MCYmYzw9NSlTdHlsZS5zZXQodGhpcy5kaXYsJ3dpZHRoJywo Yi5idXR0b25fd2lkdGgtcGFyc2VJbnQoU3R5bGUuZ2V0KHRoaXMuYnV0dG9uLCdw YWRkaW5nTGVmdCcpKS1wYXJzZUludChTdHlsZS5nZXQodGhpcy5idXR0b24sJ3Bh ZGRpbmdSaWdodCcpKS1wYXJzZUludChTdHlsZS5nZXQodGhpcy5idXR0b24sJ2Jv cmRlckxlZnRXaWR0aCcpKS1wYXJzZUludChTdHlsZS5nZXQodGhpcy5idXR0b24s J2JvcmRlclJpZ2h0V2lkdGgnKSkpKydweCcpO2lmKGIubGF5b3V0PT09J3N0YW5k YXJkJyl7dmFyIGQ9aW50bF9sb2NhbGVfaXNfcnRsKCk/J3JpZ2h0JzonbGVmdCc7 U3R5bGUuc2V0KHRoaXMuZGl2LCdwb3NpdGlvbicsJ2Fic29sdXRlJyk7U3R5bGUu c2V0KHRoaXMuZGl2LGQsKGIuYnV0dG9uX3dpZHRoKzUpKydweCcpO3RoaXMuaW52 ZXJ0ZWRCdXR0b25zPXRydWU7fXRoaXMubGlrZVdpZGdldFdpZHRoPWIud2lkZ2V0 X3dpZHRoO3RoaXMubGlrZUJ1dHRvbldpZHRoPWIuYnV0dG9uX3dpZHRoO30sdG9n Z2xlRm9ybVZpc2liaWxpdHk6ZnVuY3Rpb24oYSl7aWYoIXRoaXMubG9nZ2VkSW4p e2Eua2lsbCgpO1BsYXRmb3JtT3B0SW5Qb3B1cC5vcGVuKCdzZW5kJyk7cmV0dXJu O31pZighdGhpcy5mb3JtSXNPcGVuKXt0aGlzLm9wZW5Gb3JtKCk7fWVsc2UgaWYo dGhpcy5mb3JtSXNTaG93bil7dGhpcy5oaWRlRm9ybSgpO31lbHNlIHRoaXMuc2hv d0Zvcm0oKTthLnByZXZlbnQoKTt9LGhpZGVGb3JtOmZ1bmN0aW9uKCl7aWYodGhp cy5mb3JtSXNTaG93bil7dGhpcy5mb3JtSXNTaG93bj1mYWxzZTtVbnZlcmlmaWVk WEQuc2VuZCh7dHlwZTonaGlkZUVkZ2VDb21tZW50RGlhbG9nJ30pO0NTUy5yZW1v dmVDbGFzcyh0aGlzLmRpdiwnZmJTZW5kQnV0dG9uU2VsZWN0ZWQnKTt9fSxzaG93 Rm9ybTpmdW5jdGlvbigpe2lmKCF0aGlzLmZvcm1Jc1Nob3duKXtDU1MuYWRkQ2xh c3ModGhpcy5kaXYsJ2ZiU2VuZEJ1dHRvblNlbGVjdGVkJyk7dGhpcy5mb3JtSXNT aG93bj10cnVlO1VudmVyaWZpZWRYRC5zZW5kKHt0eXBlOidzaG93RWRnZUNvbW1l bnREaWFsb2cnfSk7fX0sY2xvc2VGb3JtOmZ1bmN0aW9uKCl7QXJiaXRlci5pbmZv cm0oJ3BsYXRmb3JtL3NvY2lhbHBsdWdpbnMvZGlhbG9nJyx7Y29udHJvbGxlcklE OnRoaXMuZGl2SUQsZXZlbnQ6J2Nsb3NlJ30pO2lmKHRoaXMuZm9ybUlzT3Blbil7 dGhpcy5mb3JtSXNPcGVuPXRoaXMuZm9ybUlzU2hvd249ZmFsc2U7VW52ZXJpZmll ZFhELnNlbmQoe3R5cGU6J2Rpc21pc3NFZGdlQ29tbWVudERpYWxvZyd9KTtDU1Mu

cmVtb3ZlQ2xhc3ModGhpcy5kaXYsJ2ZiU2VuZEJ1dHRvblNlbGVjdGVkJyk7fXJl dHVybiB0aGlzO30sb3BlbkZvcm06ZnVuY3Rpb24oKXtBcmJpdGVyLmluZm9ybSgn cGxhdGZvcm0vc29jaWFscGx1Z2lucy9kaWFsb2cnLHtjb250cm9sbGVySUQ6dGhp cy5kaXZJRCxldmVudDonb3Blbid9KTtpZighdGhpcy5mb3JtSXNPcGVuKXtDU1Mu YWRkQ2xhc3ModGhpcy5kaXYsJ2ZiU2VuZEJ1dHRvblNlbGVjdGVkJyk7dGhpcy5m b3JtSXNPcGVuPXRoaXMuZm9ybUlzU2hvd249dHJ1ZTt2YXIgYT17dHlwZToncHJl c2VudEVkZ2VDb21tZW50RGlhbG9nJyxub2RlSW1hZ2VVUkw6dGhpcy5ub2RlSW1h Z2VVUkwsbm9kZVRpdGxlOnRoaXMubm9kZVRpdGxlLG5vZGVVUkw6dGhpcy5ub2Rl VVJMLG5vZGVTdW1tYXJ5OnRoaXMubm9kZVN1bW1hcnksY29udHJvbGxlcklEOnRo aXMuZGl2SUQsZXJyb3I6dGhpcy5lcnJvcix3aWRnZXRfdHlwZTonc2VuZCcsZXh0 ZW5kZWRfc29jaWFsX2NvbnRleHQ6dGhpcy5leHRlbmRlZF9zb2NpYWxfY29udGV4 dCx3aWR0aDo0MDAsaGVpZ2h0OjMwMH0sYj1WZWN0b3IyLmdldEVsZW1lbnREaW1l bnNpb25zKHRoaXMuYnV0dG9uKSxjPVZlY3RvcjIuZ2V0RWxlbWVudFBvc2l0aW9u KHRoaXMuYnV0dG9uKTthLmFuY2hvckdlb21ldHJ5PXt4OmIueCx5OmIueX07YS5h bmNob3JQb3NpdGlvbj17eDpjLngseTpjLnl9O3ZhciBkPURPTS5maW5kKHRoaXMu YnV0dG9uLCcubXNnSWNvbicpLGU9VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24o ZCksZj1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKGQpO2EucXVlcnk9e2Fu Y2hvclRhcmdldFg6ZS54K2YueC8yLGFuY2hvclRhcmdldFk6ZS55K2YueS8yfTtV bnZlcmlmaWVkWEQuc2VuZChhKTt9cmV0dXJuIHRoaXM7fX0pOw== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=9aRD4FQekRU.js Content-Type: application/x-javascript; charset=utf-8; name=9aRD4FQekRU.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v2/yH/r/9aRD4FQekRU.js Content-Transfer-Encoding: Base64 LyoxMzQ1NDMwNTMyLDE3ODE0MjUzMSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIm9iWDBVIl0pOyB9CgpfX2Qo ImxlZ2FjeTpmYmRlc2t0b3AtcGx1Z2luIixbIkZCRGVza3RvcFBsdWdpbiJdLGZ1 bmN0aW9uKGEsYixjLGQpe2EuRmJEZXNrdG9wUGx1Z2luPWIoJ0ZCRGVza3RvcFBs dWdpbicpO30sMyk7CmZ1bmN0aW9uIEZyaWVuZEJyb3dzZXJDaGVja2JveENvbnRy b2xsZXIoKXt9Y29weVByb3BlcnRpZXMoRnJpZW5kQnJvd3NlckNoZWNrYm94Q29u dHJvbGxlcix7aW5zdGFuY2VzOnt9LGdldEluc3RhbmNlOmZ1bmN0aW9uKGEpe3Jl dHVybiB0aGlzLmluc3RhbmNlc1thXTt9fSk7Y29weVByb3BlcnRpZXMoRnJpZW5k QnJvd3NlckNoZWNrYm94Q29udHJvbGxlci5wcm90b3R5cGUse2luaXQ6ZnVuY3Rp b24oYSxiKXtGcmllbmRCcm93c2VyQ2hlY2tib3hDb250cm9sbGVyLmluc3RhbmNl c1thXT10aGlzO3RoaXMuX2lkPWE7dGhpcy5fZm9ybT1iO3RoaXMuX2NvbnRlbnRH cmlkPURPTS5maW5kKGIsJy5mcmllbmRCcm93c2VyQ2hlY2tib3hDb250ZW50R3Jp ZCcpO3RoaXMuX2xvYWRpbmdJbmRpY2F0b3I9RE9NLmZpbmQoYiwnLmZyaWVuZEJy b3dzaW5nQ2hlY2tib3hDb250ZW50TG9hZGluZ0luZGljYXRvcicpO3RoaXMuX2No ZWNrYm94UmVzdWx0cz1ET00uZmluZChiLCcuZnJpZW5kQnJvd3NlckNoZWNrYm94 UmVzdWx0cycpO3RoaXMuX2NvbnRlbnRQYWdlcj1ET00uZmluZChiLCcuZnJpZW5k QnJvd3NlckNoZWNrYm94Q29udGVudFBhZ2VyJyk7dGhpcy5udW1HZXROZXdSZXF1 ZXN0cz0wO3RoaXMucXVldWVkUmVxdWVzdHM9e307fSxhZGRUeXBlYWhlYWQ6ZnVu Y3Rpb24oYSxiKXthLnN1YnNjcmliZSgnc2VsZWN0Jyx0aGlzLm9uSHViU2VsZWN0 LmJpbmQodGhpcyxhLGIpKTt9LG9uSHViU2VsZWN0OmZ1bmN0aW9uKGEsYixldmVu dCxjKXtpZighKChldmVudD09J3NlbGVjdCcpJiZjLnNlbGVjdGVkKSlyZXR1cm47 dmFyIGQ9dGhpcy5idWlsZE5ld0NoZWNrYm94KGIsYy5zZWxlY3RlZC50ZXh0LGMu c2VsZWN0ZWQudWlkKSxlPURPTS5maW5kKHRoaXMuX2Zvcm0sJy5jaGVja2JveGVz XycrYik7RE9NLmFwcGVuZENvbnRlbnQoZS5maXJzdENoaWxkLGQpO3ZhciBmPURP TS5zY3J5KGEuZ2V0RWxlbWVudCgpLCdpbnB1dFt0eXBlPSJidXR0b24iXScpO2lm KGYmJmZbMF0pZlswXS5jbGljaygpO3RoaXMuZ2V0TmV3KHRydWUpO30sYnVpbGRO ZXdDaGVja2JveDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSsnX2lkc18nK2MsZT1h KydfaWRzW10nLGY9RE9NLmNyZWF0ZSgnaW5wdXQnLHtpZDpkLHR5cGU6J2NoZWNr Ym94Jyx2YWx1ZTpjLG5hbWU6ZSxjaGVja2VkOnRydWV9KTtFdmVudC5saXN0ZW4o ZiwnY2xpY2snLGJpbmQodGhpcywnZ2V0TmV3JyxmYWxzZSkpO3ZhciBnPURPTS5j cmVhdGUoJ3RkJyxudWxsLGYpO0NTUy5hZGRDbGFzcyhnLCd2VG9wJyk7Q1NTLmFk ZENsYXNzKGcsJ2hMZWZ0Jyk7dmFyIGg9RE9NLmNyZWF0ZSgnbGFiZWwnLG51bGws YiksaT1ET00uY3JlYXRlKCd0ZCcsbnVsbCxoKTtDU1MuYWRkQ2xhc3MoaSwndk1p ZCcpO0NTUy5hZGRDbGFzcyhpLCdoTGVmdCcpO3ZhciBqPURPTS5jcmVhdGUoJ3Ry

Jyk7ai5hcHBlbmRDaGlsZChnKTtqLmFwcGVuZENoaWxkKGkpO3JldHVybiBqO30s c2hvd01vcmU6ZnVuY3Rpb24oKXt2YXIgYT1ET00uc2NyeSh0aGlzLl9jb250ZW50 UGFnZXIsJy5mcmllbmRCcm93c2VyTW9yZVBhZ2VyJylbMF07aWYoIWEpcmV0dXJu IGZhbHNlO2lmKENTUy5oYXNDbGFzcyhhLCdhc3luY19zYXZpbmcnKSlyZXR1cm4g ZmFsc2U7dmFyIGI9dGhpcy5udW1HZXROZXdSZXF1ZXN0cyxjPUZvcm0uc2VyaWFs aXplKHRoaXMuX2Zvcm0pO2Muc2hvd19tb3JlPXRydWU7dmFyIGQ9bmV3IEFzeW5j UmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvZ3Jvd3RoL2ZyaWVuZF9icm93c2VyL2No ZWNrYm94LnBocCcpLnNldERhdGEoYykuc2V0SGFuZGxlcihiaW5kKHRoaXMsZnVu Y3Rpb24oZSl7dGhpcy5zaG93TW9yZUhhbmRsZXIoZSxiKTt9KSkuc2V0U3RhdHVz RWxlbWVudChhKS5zZW5kKCk7fSxzaG93TW9yZUhhbmRsZXI6ZnVuY3Rpb24oYSxi KXtpZihiPT10aGlzLm51bUdldE5ld1JlcXVlc3RzKXt2YXIgYz1hLnBheWxvYWQ7 RE9NLmFwcGVuZENvbnRlbnQodGhpcy5fY29udGVudEdyaWQsYy5yZXN1bHRzKTt0 aGlzLnVwZGF0ZVBhZ2VyQW5kRXh0cmFEYXRhKGMucGFnZXIsYy5leHRyYV9kYXRh KTt9fSxnZXROZXc6ZnVuY3Rpb24oYSl7dGhpcy5udW1HZXROZXdSZXF1ZXN0cysr O3ZhciBiPXRoaXMubnVtR2V0TmV3UmVxdWVzdHM7Q1NTLmFkZENsYXNzKHRoaXMu X2NoZWNrYm94UmVzdWx0cywnZnJpZW5kQnJvd3NlckNoZWNrYm94Q29udGVudE9u bG9hZCcpO2lmKGdlKCdmcmllbmRCcm93c2VyQ0knKSlDU1MuYWRkQ2xhc3MoJCgn ZnJpZW5kQnJvd3NlckNJJyksJ2ZyaWVuZEJyb3dzZXJDaGVja2JveENvbnRlbnRP bmxvYWQnKTtDU1Muc2hvdyh0aGlzLl9sb2FkaW5nSW5kaWNhdG9yKTt2YXIgYz1G b3JtLnNlcmlhbGl6ZSh0aGlzLl9mb3JtKTtjLnVzZWRfdHlwZWFoZWFkPWE7bmV3 IEFzeW5jUmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvZ3Jvd3RoL2ZyaWVuZF9icm93 c2VyL2NoZWNrYm94LnBocCcpLnNldERhdGEoYykuc2V0SGFuZGxlcihiaW5kKHRo aXMsZnVuY3Rpb24oZCl7dGhpcy5nZXROZXdIYW5kbGVyKGQsYik7fSkpLnNlbmQo KTt9LGdldE5ld0hhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZihiPT10aGlzLm51bUdl dE5ld1JlcXVlc3RzKXt2YXIgYz1hLnBheWxvYWQ7RE9NLnNldENvbnRlbnQodGhp cy5fY29udGVudEdyaWQsYy5yZXN1bHRzKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5f Y2hlY2tib3hSZXN1bHRzLCdmcmllbmRCcm93c2VyQ2hlY2tib3hDb250ZW50T25s b2FkJyk7aWYoZ2UoJ2ZyaWVuZEJyb3dzZXJDSScpKUNTUy5oaWRlKCQoJ2ZyaWVu ZEJyb3dzZXJDSScpKTtDU1MuaGlkZSh0aGlzLl9sb2FkaW5nSW5kaWNhdG9yKTt0 aGlzLnVwZGF0ZVBhZ2VyQW5kRXh0cmFEYXRhKGMucGFnZXIsYy5leHRyYV9kYXRh KTt9fSx1cGRhdGVQYWdlckFuZEV4dHJhRGF0YTpmdW5jdGlvbihhLGIpe0RPTS5z ZXRDb250ZW50KHRoaXMuX2NvbnRlbnRQYWdlcixhKTt0aGlzLnNldHVwT25WaXNp YmxlKCk7RE9NLnJlcGxhY2UodGhpcy5fZm9ybS5lbGVtZW50cy5leHRyYV9kYXRh LGIpO30sc2V0dXBPblZpc2libGU6ZnVuY3Rpb24oKXt2YXIgYT1ET00uc2NyeSh0 aGlzLl9jb250ZW50UGFnZXIsJy5mcmllbmRCcm93c2VyTW9yZVBhZ2VyJylbMF07 aWYoYSYmdGhpcy5faWQhPSdqZXdlbCcpe3RoaXMuX29uVmlzaWJsZSYmdGhpcy5f b25WaXNpYmxlLnJlbW92ZSgpO3RoaXMuX29uVmlzaWJsZT1uZXcgT25WaXNpYmxl KGEsYmluZCh0aGlzLCdzaG93TW9yZScpLGZhbHNlLDEwMDApO319fSk7CmZ1bmN0 aW9uIFJlcXVlc3RzSmV3ZWwoKXt9Y29weVByb3BlcnRpZXMoUmVxdWVzdHNKZXdl bC5wcm90b3R5cGUse2luaXQ6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuY291bnROZXc9 MDt0aGlzLmpld2VsPWE7dGhpcy5qZXdlbEZseW91dENhc2U9YS5nZXRSb290KCk7 dGhpcy5qZXdlbEZseW91dD1nZSgnZmJSZXF1ZXN0c0ZseW91dCcpO3RoaXMubmV3 Q291bnRTcGFuPWdlKCduZXdSZXF1ZXN0Q291bnQnKTt0aGlzLmZvbGRlcj1iO3Ro aXMuZG9OZXdNYXJrUmVhZD1jO3RoaXMuX3JlcXVlc3RMaXN0PXt9O3RoaXMuX3Jl cXVlc3RDb3VudD0wO3ZhciBkPWdlKCdyZXF1ZXN0c01hcmtSZWFkQnV0dG9uJyk7 aWYoZClFdmVudC5saXN0ZW4oZCwnY2xpY2snLHRoaXMuX21hcmtSZWFkLnNoaWVs ZCh0aGlzKSk7dGhpcy5qZXdlbC5zdWJzY3JpYmUoJ21hcmtlZC1zZWVuJyx0aGlz Ll9tYXJrU2VlbkNhbGxiYWNrLnNoaWVsZCh0aGlzKSk7dGhpcy5qZXdlbC5zdWJz Y3JpYmUoJ2Nsb3NlZCcsdGhpcy5fY2xlYXJOZXdJdGVtcy5zaGllbGQodGhpcykp O3RoaXMuamV3ZWwuc3Vic2NyaWJlKCd1cGRhdGVkJyx0aGlzLl91cGRhdGVDb3Vu dC5iaW5kKHRoaXMpKTt0aGlzLmpld2VsLnN1YnNjcmliZSgnb3BlbmVkJyx0aGlz Ll9vcGVuSGFuZGxlci5iaW5kKHRoaXMpKTtMaW5rQ29udHJvbGxlci5yZWdpc3Rl ckhhbmRsZXIodGhpcy5faGFuZGxlTGluay5iaW5kKHRoaXMpKTtBcmJpdGVyLnN1 YnNjcmliZShDaGFubmVsQ29uc3RhbnRzLmdldEFyYml0ZXJUeXBlKCdqZXdlbF9y ZXF1ZXN0c19hZGQnKSx0aGlzLl9hZGRSZXF1ZXN0LmJpbmQodGhpcykpO0FyYml0 ZXIuc3Vic2NyaWJlKENoYW5uZWxDb25zdGFudHMuZ2V0QXJiaXRlclR5cGUoJ2pl d2VsX3JlcXVlc3RzX3JlbW92ZV9vbGQnKSx0aGlzLl9yZW1vdmVPbGRSZXF1ZXN0 LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLmpld2VsRmx5b3V0LCdzdWJt aXQnLGZ1bmN0aW9uKGYpe3ZhciBnPVBhcmVudC5ieUNsYXNzKGYuZ2V0VGFyZ2V0 KCksJ29iamVjdExpc3RJdGVtJyk7aWYoZyl7Q1NTLnJlbW92ZUNsYXNzKGcsJ2pl

d2VsSXRlbU5ldycpO0NTUy5hZGRDbGFzcyhnLCdqZXdlbEl0ZW1SZXNwb25kZWQn KTt9fS5iaW5kKHRoaXMpKTt2YXIgZT1ET00uc2NyeSh0aGlzLmpld2VsRmx5b3V0 LCcudWlTY3JvbGxhYmxlQXJlYVdyYXAnKVswXTtpZihlKXt0aGlzLl9zY3JvbGxh YmxlV3JhcD1lO3RoaXMuX2xhc3RMaW5rUG9zaXRpb249MDt0aGlzLl9zY3JvbGxM aXN0ZW5lcj1FdmVudC5saXN0ZW4oZSwnc2Nyb2xsJyx0aGlzLl9oYW5kbGVTY3Jv bGwuYmluZCh0aGlzKSxFdmVudC5Qcmlvcml0eS5fQlVCQkxFKTt9cmV0dXJuIHRo aXM7fSxmcm9tRG9tOmZ1bmN0aW9uKCl7RE9NLnNjcnkodGhpcy5qZXdlbEZseW91 dCwnLmpld2VsSXRlbUxpc3QgbGkub2JqZWN0TGlzdEl0ZW0nKS5mb3JFYWNoKGZ1 bmN0aW9uKGEpe3ZhciBiPWEuZ2V0QXR0cmlidXRlKCdpZCcpLGM9YiYmcGFyc2VJ bnQodGhpcy5fcGFyc2VJRChiKS5yZXF1ZXN0ZXIsMTApO2lmKGMmJiFpc05hTihj KSl7dGhpcy5fcmVxdWVzdExpc3RbY109YjsrK3RoaXMuX3JlcXVlc3RDb3VudDt9 fS5iaW5kKHRoaXMpKTt0aGlzLl9jb25kaXRpb25TaG93RW1wdHlNZXNzYWdlKCk7 fSxfcGFyc2VJRDpmdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxkKylfKFxk KykvKTtyZXR1cm4gKGIpP3tyZXF1ZXN0ZXI6YlsxXSx0eXBlOmJbMl19OnVuZGVm aW5lZDt9LF9oYW5kbGVMaW5rOmZ1bmN0aW9uKGEsZXZlbnQpe3ZhciBiPVBhcmVu dC5ieUNsYXNzKGEsJ2pld2VsSXRlbU5ldycpO2lmKGImJlBhcmVudC5ieUNsYXNz KGIsJ2ZiUmVxdWVzdExpc3QnKSYmUGFyZW50LmJ5Q2xhc3MoYiwnYmVlcGVyRW5h YmxlZCcpKXt2YXIgYz10aGlzLl9wYXJzZUlEKGIuaWQpO2MmJnRoaXMuX21hcmtT ZWVuQ2FsbGJhY2soYy5yZXF1ZXN0ZXIsYy50eXBlKTtBcmJpdGVyLmluZm9ybSgn amV3ZWwvY291bnQtdXBkYXRlZCcse2pld2VsOidyZXF1ZXN0cycsY291bnQ6LS10 aGlzLmNvdW50TmV3fSk7Q1NTLnJlbW92ZUNsYXNzKGIsJ2pld2VsSXRlbU5ldycp O31yZXR1cm4gdHJ1ZTt9LF9oYW5kbGVTY3JvbGw6ZnVuY3Rpb24oKXt2YXIgYT1E T00uc2NyeSh0aGlzLl9zY3JvbGxhYmxlV3JhcCwnLnVpTW9yZVBhZ2VyJylbMF07 aWYoYSl7dmFyIGI9VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24oYSwndmlld3Bv cnQnKS55O2lmKGI+MClDU1MuYWRkQ2xhc3MoUGFyZW50LmJ5Q2xhc3ModGhpcy5f c2Nyb2xsYWJsZVdyYXAsJ3VpU2Nyb2xsYWJsZUFyZWEnKSwnY29udGVudEFmdGVy Jyk7dmFyIGM9RE9NLmZpbmQoYSwnYScpO2lmKCFjKXJldHVybjt2YXIgZD1WZWN0 b3IyLmdldEVsZW1lbnRQb3NpdGlvbihjLCd2aWV3cG9ydCcpLnk7aWYoZD09dGhp cy5fbGFzdExpbmtQb3NpdGlvbilyZXR1cm47dmFyIGU9VmVjdG9yMi5nZXRFbGVt ZW50UG9zaXRpb24odGhpcy5fc2Nyb2xsYWJsZVdyYXAsJ3ZpZXdwb3J0JykueStW ZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuX3Njcm9sbGFibGVXcmFw KS55O2lmKGQtMzAwPGUmJmQ+MCl7dGhpcy5fbGFzdExpbmtQb3NpdGlvbj1kO3Zh ciBmPWMuZ2V0QXR0cmlidXRlKCdhamF4aWZ5Jyk7aWYoZil7bmV3IEFzeW5jUmVx dWVzdChmKS5zZXRSZWxhdGl2ZVRvKGMpLnNldFN0YXR1c0VsZW1lbnQoUGFyZW50 LmJ5Q2xhc3MoYywnc3RhdF9lbGVtJykpLnNlbmQoKTt9ZWxzZSBGcmllbmRCcm93 c2VyQ2hlY2tib3hDb250cm9sbGVyLmdldEluc3RhbmNlKCdqZXdlbCcpLnNob3dN b3JlKCk7fX19LF9hZGRSZXF1ZXN0OmZ1bmN0aW9uKGEsYil7aWYoIWJ8fHRoaXMu X3JlcXVlc3RMaXN0W2Iub2JqLmZyb21dKXJldHVybjt2YXIgYz1iLm9iai5mcm9t LGQ9dGhpcy5fb25NYXJrdXBDYWxsYmFjay5iaW5kKHRoaXMsYyk7bmV3IEFzeW5j UmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvZnJpZW5kcy9qZXdlbC9yZXF1ZXN0X21h cmt1cCcpLnNldERhdGEoe2Zyb206Y30pLnNldEhhbmRsZXIoZCkuc2VuZCgpO30s X29uTWFya3VwQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldFBheWxv YWQoKTtpZighYylyZXR1cm47dmFyIGQ9RE9NLnNjcnkodGhpcy5qZXdlbEZseW91 dCwnLmZiUmVxdWVzdExpc3QgLnVpTGlzdCcpWzBdO2lmKCFkKXJldHVybjtET00u cHJlcGVuZENvbnRlbnQoZCxjLm1hcmt1cCk7dmFyIGU9RE9NLnNjcnkodGhpcy5q ZXdlbEZseW91dCwnI2ZiUmVxdWVzdHNQWU1LQ29udGFpbmVyJylbMF07aWYoIWUp e3ZhciBmPURPTS5maW5kKGdlKGMuaXRlbV9pZCksJ2Zvcm0nKSxnPURPTS5jcmVh dGUoJ2lucHV0Jyx7dHlwZTonaGlkZGVuJyxuYW1lOidudW1fdmlzaWJsZV9yZXF1 ZXN0cycsdmFsdWU6dGhpcy5fcmVxdWVzdENvdW50KzF9KTtET00uYXBwZW5kQ29u dGVudChmLGcpO312YXIgaD17amV3ZWw6J3JlcXVlc3RzJyxjb3VudDorK3RoaXMu Y291bnROZXd9O0FyYml0ZXIuaW5mb3JtKCdqZXdlbC9jb3VudC11cGRhdGVkJyxo KTt0aGlzLl9yZXF1ZXN0TGlzdFthXT1jLml0ZW1faWQ7Kyt0aGlzLl9yZXF1ZXN0 Q291bnQ7dGhpcy5fY29uZGl0aW9uU2hvd0VtcHR5TWVzc2FnZSgpO30sX3JlbW92 ZU9sZFJlcXVlc3Q6ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm47dmFyIGM9dGhp cy5fcmVxdWVzdExpc3RbYi5vYmouZnJvbV0sZD1jJiZnZShjKTtpZihkKXtDU1Mu aGFzQ2xhc3MoZCwnamV3ZWxJdGVtTmV3JykmJkFyYml0ZXIuaW5mb3JtKCdqZXdl bC9jb3VudC11cGRhdGVkJyx7amV3ZWw6J3JlcXVlc3RzJyxjb3VudDotLXRoaXMu Y291bnROZXd9KTtpZighQ1NTLmhhc0NsYXNzKGQsJ2pld2VsSXRlbVJlc3BvbmRl ZCcpKXtET00ucmVtb3ZlKGQpO2RlbGV0ZSB0aGlzLl9yZXF1ZXN0TGlzdFtjXTst LXRoaXMuX3JlcXVlc3RDb3VudDt0aGlzLl9jb25kaXRpb25TaG93RW1wdHlNZXNz

YWdlKCk7fX19LF9tYXJrUmVhZDpmdW5jdGlvbigpe3RoaXMuamV3ZWwubWFya1Nl ZW4oKTt0aGlzLl9jbGVhck5ld0l0ZW1zKCk7fSxfbWFya1NlZW5DYWxsYmFjazpm dW5jdGlvbihhLGIpe25ldyBBc3luY1NpZ25hbCgnL2FqYXgvZ2lnYWJveHgvZW5k cG9pbnQvVXBkYXRlTGFzdFNlZW5UaW1lLnBocCcse2ZvbGRlcjp0aGlzLmZvbGRl cn0pLnNlbmQoKTt2YXIgYz10eXBlb2YgYSE9J3VuZGVmaW5lZCcmJnR5cGVvZiBi IT0ndW5kZWZpbmVkJz97cmVxdWVzdGVyOmEsdHlwZTpifTp7fTt0aGlzLmRvTmV3 TWFya1JlYWQmJm5ldyBBc3luY1NpZ25hbCgnL2FqYXgvcmVxdWVzdHMvbWFya19y ZWFkLycsYykuc2VuZCgpO30sX3JlbW92ZVJlcXVlc3Q6ZnVuY3Rpb24oYSxiKXt2 YXIgYz1iLm9iai5pdGVtX2lkO2lmKGMpe3ZhciBkPWdlKGMpLGU9ZCYmQ1NTLmhh c0NsYXNzKGQsJ2pld2VsSXRlbU5ldycpO2Q/RE9NLnJlbW92ZShkKTpmYWxzZTtl JiZBcmJpdGVyLmluZm9ybSgnamV3ZWwvY291bnQtdXBkYXRlZCcse2pld2VsOidy ZXF1ZXN0cycsY291bnQ6LS10aGlzLmNvdW50TmV3fSk7fX0sX2NsZWFyTmV3SXRl bXM6ZnVuY3Rpb24oYSxiKXtET00uc2NyeSh0aGlzLmpld2VsLnJvb3QsJ2xpLmpl d2VsSXRlbU5ldycpLmZvckVhY2goZnVuY3Rpb24oYyl7Q1NTLnJlbW92ZUNsYXNz KGMsJ2pld2VsSXRlbU5ldycpO30pO30sX3VwZGF0ZUNvdW50OmZ1bmN0aW9uKGEs Yil7dGhpcy5jb3VudE5ldz1iLmNvdW50O0NTUy5jb25kaXRpb25DbGFzcyh0aGlz Lmpld2VsRmx5b3V0LCdiZWVwZXJVbnJlYWQnLHRoaXMuY291bnROZXc+MCk7Q1NT LmNvbmRpdGlvbkNsYXNzKHRoaXMuamV3ZWxGbHlvdXRDYXNlLCdzaG93UmVxdWVz dHMnLHRoaXMuY291bnROZXc+MCk7aWYodGhpcy5uZXdDb3VudFNwYW4pe3ZhciBj PXRoaXMuY291bnROZXc9PTE/dHguXygie251bX0gUEVSTUlOVEFBTiBCQVJVIix7 bnVtOnRoaXMuY291bnROZXd9KTp0eC5fKCJ7bnVtfSBwZXJtaW50YWFuIGJhcnUi LHtudW06dGhpcy5jb3VudE5ld30pO0RPTS5zZXRDb250ZW50KHRoaXMubmV3Q291 bnRTcGFuLGMpO319LF9jb25kaXRpb25TaG93RW1wdHlNZXNzYWdlOmZ1bmN0aW9u KCl7RE9NLnNjcnkodGhpcy5qZXdlbEZseW91dCwnbGkuZW1wdHknKS5mb3JFYWNo KGZ1bmN0aW9uKGEpe0NTUy5jb25kaXRpb25TaG93KGEsdGhpcy5fcmVxdWVzdENv dW50PD0wKTt9LmJpbmQodGhpcykpO30sX29wZW5IYW5kbGVyOmZ1bmN0aW9uKCl7 dmFyIGE9RE9NLnNjcnkodGhpcy5qZXdlbEZseW91dCwnLnVpU2Nyb2xsYWJsZUFy ZWEnKVswXTthJiZTY3JvbGxhYmxlQXJlYS5wb2tlKGEpO319KTsKX19kKCJDb250 ZXh0dWFsQmxpbmQiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFuaW1hdGlvbiIsIkRP TSIsIlJlY3QiLCJWZWN0b3IiLCIkIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Io J2V2ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBbmltYXRpb24nKSxoPWIoJ0RP TScpLGk9YignUmVjdCcpLGo9YignVmVjdG9yJyksaz1iKCckJyksbD1bXSxtPW51 bGwsbj1udWxsLG89ZmFsc2UscD0uOCxxPTUwMDtmdW5jdGlvbiByKHUsdil7di5n ZXRQb3NpdGlvblZlY3RvcigpLnNldEVsZW1lbnRQb3NpdGlvbih1KTt2LmdldERp bWVuc2lvblZlY3RvcigpLnNldEVsZW1lbnREaW1lbnNpb25zKHUpO31mdW5jdGlv biBzKCl7bD1bXTttJiZtLnJlbW92ZSgpO24mJmgucmVtb3ZlKG4pO289ZmFsc2U7 fXZhciB0PXtzaG93OmZ1bmN0aW9uKHUsdix3KXt0LmhpZGUoKTtmb3IodmFyIHg9 MDt4PDQ7eCsrKWwucHVzaChoLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOidjb250 ZXh0dWFsQmxpbmQnfSkpO2guYXBwZW5kQ29udGVudChkb2N1bWVudC5ib2R5LGwp O2lmKHchPT1mYWxzZSl7bj1oLmNyZWF0ZSgnZGl2Jyx7Y2xhc3NOYW1lOidjb250 ZXh0dWFsQmxpbmRDb250ZXh0J30pO2guYXBwZW5kQ29udGVudChkb2N1bWVudC5i b2R5LG4pO310LnVwZGF0ZVBvc2l0aW9uKHUsdik7bT1FdmVudC5saXN0ZW4od2lu ZG93LCdyZXNpemUnLHQudXBkYXRlUG9zaXRpb24uYmluZCh0LHUsdikpO289dHJ1 ZTt9LGZhZGVJbjpmdW5jdGlvbih1LHYsdyx4LHkpe3ZhciB6PW87dC5zaG93KHUs dix3KTtpZih6KXJldHVybjtwPXghPT11bmRlZmluZWQ/eDpwO3E9eSE9PXVuZGVm aW5lZD95OnE7Zm9yKHZhciBhYT0wO2FhPGwubGVuZ3RoO2FhKyspe3ZhciBiYT1s W2FhXTtuZXcgZyhiYSkuZHVyYXRpb24ocSkuZnJvbSgnb3BhY2l0eScsMCkudG8o J29wYWNpdHknLHApLmdvKCk7fX0saGlkZTpmdW5jdGlvbigpe2wuZm9yRWFjaCho LnJlbW92ZSk7cygpO30sZmFkZU91dDpmdW5jdGlvbigpe2Zvcih2YXIgdT0wO3U8 bC5sZW5ndGg7dSsrKXt2YXIgdj1sW3VdO25ldyBnKHYpLmR1cmF0aW9uKHEpLmZy b20oJ29wYWNpdHknLHApLnRvKCdvcGFjaXR5JywwKS5vbmRvbmUoaC5yZW1vdmUu Y3VycnkodikpLmdvKCk7fXMoKTt9LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKHUs dil7dmFyIHc9ai5nZXREb2N1bWVudERpbWVuc2lvbnMoKS55LHg9aS5nZXRFbGVt ZW50Qm91bmRzKGsodSkpO2lmKHYpeD1uZXcgaSh4LnQtdix4LnIrdix4LmIrdix4 Lmwtdix4LmRvbWFpbik7dmFyIHk9ZG9jdW1lbnQsej0oeSYmeS5kb2N1bWVudEVs ZW1lbnQmJnkuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKXx8KHkmJnkuYm9k eSYmeS5ib2R5LmNsaWVudFdpZHRoKXx8MDtyKGxbMF0sbmV3IGkoMCx6LHgudCww LCdkb2N1bWVudCcpKTtyKGxbMV0sbmV3IGkoeC50LHoseC5iLHguciwnZG9jdW1l bnQnKSk7cihsWzJdLG5ldyBpKHguYix6LHcsMCwnZG9jdW1lbnQnKSk7cihsWzNd LG5ldyBpKHgudCx4LmwseC5iLDAsJ2RvY3VtZW50JykpO2lmKG4pcihuLHgpO319

O2UuZXhwb3J0cz1hLkNvbnRleHR1YWxCbGluZHx8dDt9KTsKX19kKCJKZXdlbFgi LFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJBcmJpdGVyTWl4aW4iLCJD bGFzcyIsIkNvbnRleHR1YWxCbGluZCIsIkNTUyIsIkRPTSIsIkhUTUwiLCJLZXlz IiwiVG9nZ2xlciIsImNvcHlQcm9wZXJ0aWVzIiwicmVwb3J0RGF0YSJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXtiKCdldmVudC1leHRlbnNpb25zJyk7dmFyIGc9Yign QXJiaXRlcicpLGg9YignQXJiaXRlck1peGluJyksaT1iKCdDbGFzcycpLGo9Yign Q29udGV4dHVhbEJsaW5kJyksaz1iKCdDU1MnKSxsPWIoJ0RPTScpLG09YignSFRN TCcpLG49YignS2V5cycpLG89YignVG9nZ2xlcicpLHA9YignY29weVByb3BlcnRp ZXMnKSxxPWIoJ3JlcG9ydERhdGEnKSxyPWZ1bmN0aW9uKHMsdCl7cyYmdCYmdGhp cy5pbml0KHMsdCk7fTtwKHIse19pbnN0YW5jZXNCeU5hbWU6e30sX3Jlc2l6ZUxp c3RlbmVyOm51bGx9KTtwKHIucHJvdG90eXBlLGgse2luaXQ6ZnVuY3Rpb24ocyx0 KXt0aGlzLm5hbWU9dC5uYW1lO3RoaXMucm9vdD1zO3RoaXMuY291bnROZXc9MDt0 aGlzLmluaXRpYWxDb3VudD0wO3RoaXMuZXNjSGFuZGxlcj1udWxsO3RoaXMuZmFk ZU9uT3Blbj10LmZhZGVfb25fb3BlbjtyLl9pbnN0YW5jZXNCeU5hbWVbdGhpcy5u YW1lXT10aGlzO28ubGlzdGVuKCdzaG93Jyx0aGlzLnJvb3QsZnVuY3Rpb24odSl7 dGhpcy5fbG9nRmlyc3RDbGljaygpO3RoaXMuaGFzTmV3KCkmJnRoaXMubWFya1Nl ZW4oKTt0aGlzLnJlc2V0KCk7dGhpcy5pbmZvcm0oJ29wZW5lZCcpO2cuaW5mb3Jt KCdsYXllcl9zaG93bicse3R5cGU6J0pld2VsJ30pO3RoaXMuc2V0dXBFdmVudHMo KTt0aGlzLmZhZGVPbk9wZW4mJmouZmFkZUluKHRoaXMucm9vdCwwLHRydWUsLjcs MTAwKTt9LmJpbmQodGhpcykpO28ubGlzdGVuKCdoaWRlJyx0aGlzLnJvb3QsZnVu Y3Rpb24odSx2KXt0aGlzLmhhc05ldygpJiZ0aGlzLm1hcmtTZWVuKCk7dGhpcy5y ZXNldCgpO3RoaXMuaW5mb3JtKCdjbG9zZWQnKTtnLmluZm9ybSgnbGF5ZXJfaGlk ZGVuJyx7dHlwZTonSmV3ZWwnfSk7dGhpcy5yZW1vdmVFdmVudHMoKTtpZih0aGlz LmZhZGVPbk9wZW4mJighdnx8IXYuY2xpY2tlZFRhcmdldHx8IWsuaGFzQ2xhc3Mo di5jbGlja2VkVGFyZ2V0LCdqZXdlbEJ1dHRvbicpfHxsLmNvbnRhaW5zKHRoaXMu cm9vdCx2LmNsaWNrZWRUYXJnZXQpKSlqLmZhZGVPdXQoKTt9LmJpbmQodGhpcykp O2cuc3Vic2NyaWJlKCdqZXdlbC9jb3VudC11cGRhdGVkJyxmdW5jdGlvbih1LHYp e3YuamV3ZWw9PXRoaXMubmFtZSYmdGhpcy51cGRhdGUodik7fS5iaW5kKHRoaXMp KTtnLnN1YnNjcmliZSgnamV3ZWwvY291bnQtaW5pdGlhbCcsZnVuY3Rpb24odSx2 KXt2Lmpld2VsPT10aGlzLm5hbWUmJnRoaXMuc2V0SW5pdGlhbCh2KTt9LmJpbmQo dGhpcykpO2cuc3Vic2NyaWJlKCdqZXdlbC9yZXNldCcsZnVuY3Rpb24odSx2KXt2 Lmpld2VsPT10aGlzLm5hbWUmJnRoaXMucmVzZXQoKTt9LmJpbmQodGhpcykpO3Iu X3Jlc2l6ZUxpc3RlbmVyPXIuX3Jlc2l6ZUxpc3RlbmVyfHwoZnVuY3Rpb24oKXt2 YXIgdT1udWxsO3JldHVybiBFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLGZ1 bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHUpO3U9Zy5pbmZvcm0uYmluZChnLCdqZXdl bC9yZXNpemUnKS5kZWZlcigxMDAsZmFsc2UpO30pO30pKCk7fSxnZXRSb290OmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdDt9LGhhc05ldzpmdW5jdGlvbigpe3Jl dHVybiBrLmhhc0NsYXNzKHRoaXMucm9vdCwnaGFzTmV3Jyk7fSxpc09wZW46ZnVu Y3Rpb24oKXtyZXR1cm4gay5oYXNDbGFzcyh0aGlzLnJvb3QsJ29wZW5Ub2dnbGVy Jyk7fSxyZXNldDpmdW5jdGlvbigpe2sucmVtb3ZlQ2xhc3ModGhpcy5yb290LCdo YXNOZXcnKTt9LHNldENvbnRlbnQ6ZnVuY3Rpb24ocyl7dmFyIHQ9bC5maW5kKHRo aXMucm9vdCwndWwuamV3ZWxJdGVtTGlzdCcpO2wuc2V0Q29udGVudCh0LG0ocykp O30sdXBkYXRlOmZ1bmN0aW9uKHMpe3RoaXMuY291bnROZXc9cy5jb3VudDt2YXIg dD1sLmZpbmQodGhpcy5yb290LCdzcGFuLmpld2VsQ291bnQgc3BhbicpO2wuc2V0 Q29udGVudCh0LHRoaXMuY291bnROZXcpO3ZhciB1PWlzTmFOKHRoaXMuY291bnRO ZXcpfHx0aGlzLmNvdW50TmV3PjA7ay5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3Qs J2hhc05ldycsdSk7dGhpcy5pbmZvcm0oJ3VwZGF0ZWQnLHMpO30sc2V0SW5pdGlh bDpmdW5jdGlvbihzKXt0aGlzLmluaXRpYWxDb3VudD1zO30sc2V0dXBFdmVudHM6 ZnVuY3Rpb24oKXt0aGlzLmVzY0hhbmRsZXI9RXZlbnQubGlzdGVuKGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudCwna2V5ZG93bicsZnVuY3Rpb24ocyl7aWYocy5rZXlD b2RlPT09bi5FU0MmJnRoaXMuaXNPcGVuKCkpby5oaWRlKHRoaXMucm9vdCk7fS5i aW5kKHRoaXMpKTt9LHJlbW92ZUV2ZW50czpmdW5jdGlvbigpe2lmKHRoaXMuZXNj SGFuZGxlcil0aGlzLmVzY0hhbmRsZXIucmVtb3ZlKCk7fSxtYXJrU2VlbjpmdW5j dGlvbigpe2cuaW5mb3JtKCdqZXdlbC9jb3VudC11cGRhdGVkJyx7amV3ZWw6dGhp cy5uYW1lLGNvdW50OjB9LGcuQkVIQVZJT1JfU1RBVEUpO3RoaXMuaW5mb3JtKCdt YXJrZWQtc2VlbicpO30sX2xvZ0ZpcnN0Q2xpY2s6ZnVuY3Rpb24oKXt0aGlzLl9s b2dGaXJzdENsaWNrPWJhZ29maG9sZGluZztxKCdqZXdlbF9jbGljaycse2d0Ontj b3VudDp0aGlzLmNvdW50TmV3LGluaXRpYWw6dGhpcy5pbml0aWFsQ291bnQsamV3 ZWw6dGhpcy5uYW1lfX0pO319KTtlLmV4cG9ydHM9cjt9KTsKX19kKCJVc2VyTm9P cCIsWyJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg

Zz1iKCdjb3B5UHJvcGVydGllcycpLGg9ZnVuY3Rpb24oKXt9LGk9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpczt9O2coaC5wcm90b3R5cGUse2FkZF9ldmVudDppLGFkZF9k YXRhOmksdWFpOmksdWFpX2ZhbGxiYWNrOml9KTtlLmV4cG9ydHM9aDt9KTsKX19k KCJsZWdhY3k6VXNlckFjdGlvbiIsWyJVc2VyTm9PcCIsInVzZXJBY3Rpb24iLCJy ZXBvcnREYXRhIiwiY2xpY2tSZWZBY3Rpb24iXSxmdW5jdGlvbihhLGIsYyxkKXth LlVzZXJOb09wPWIoJ1VzZXJOb09wJyk7YS51c2VyX2FjdGlvbj1iKCd1c2VyQWN0 aW9uJyk7YS5yZXBvcnRfZGF0YT1iKCdyZXBvcnREYXRhJyk7YS5jbGlja19yZWZf YWN0aW9uPWIoJ2NsaWNrUmVmQWN0aW9uJyk7fSwzKTsKX19kKCJsZWdhY3k6UG9s bGVyIixbIlBvbGxlciJdLGZ1bmN0aW9uKGEsYixjLGQpe2EuUG9sbGVyPWIoJ1Bv bGxlcicpO30sMyk7Cl9fZCgiZGVmZXJVbnRpbCIsW10sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe2Z1bmN0aW9uIGcoaCxpLGosayxsKXt2YXIgbT1pKCk7aWYobSl7aCht KTtyZXR1cm4gbnVsbDt9dmFyIG49RGF0ZS5ub3coKSxvPXNldEludGVydmFsKGZ1 bmN0aW9uKCl7bT1pKCk7aWYoIW0pe2lmKCFqfHwoajxuZXcgRGF0ZSgpLW4pKXJl dHVybjtsJiZsKCk7fWNsZWFySW50ZXJ2YWwobyk7aChtKTt9LDIwLGspO3JldHVy biBvO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJsZWdhY3k6ZnVuY3Rpb24tdXRpbHMi LFsiZGVib3VuY2UiLCJ0aHJvdHRsZSIsImRlZmVyVW50aWwiXSxmdW5jdGlvbihh LGIsYyxkKXthLmRlYm91bmNlPWIoJ2RlYm91bmNlJyk7YS50aHJvdHRsZT1iKCd0 aHJvdHRsZScpO2EuZGVmZXJfdW50aWw9YignZGVmZXJVbnRpbCcpO30sMyk7Cl9f ZCgibGVnYWN5OnVzZXItYWN0aXZpdHkiLFsiVXNlckFjdGl2aXR5Il0sZnVuY3Rp b24oYSxiLGMsZCl7YS5Vc2VyQWN0aXZpdHk9YS5Vc2VyQWN0aXZpdHl8fGIoJ1Vz ZXJBY3Rpdml0eScpO30sMyk7Cl9fZCgiQmFuemFpT0RTIixbIkJhbnphaURlc2t0 b3AiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQmFuemFpRGVza3Rv cCcpLGg9e307ZnVuY3Rpb24gaShrLGwsbSxuKXt2YXIgbz1oW2tdfHwoaFtrXT17 fSk7bz1vW2xdfHwob1tsXT17fSk7bz1vW21dfHwob1ttXT1bXSk7Zm9yKHZhciBw PTA7cDxuLmxlbmd0aDtwKyspe3ZhciBxPW5bcF09PW51bGw/MTpOdW1iZXIobltw XSk7aWYoaXNGaW5pdGUocSkpb1twXT0ob1twXXx8MCkrcTt9fWcuc3Vic2NyaWJl KGcuU0VORCxmdW5jdGlvbigpe2Zvcih2YXIgayBpbiBoKXtnLnBvc3QoJ29kcycs aCk7YnJlYWs7fWg9e307fSk7dmFyIGo9e2J1bXBFbnRpdHlLZXk6ZnVuY3Rpb24o ayxsLG0pe2koJ2JFSycsayxsLFttXSk7fSxidW1wRnJhY3Rpb246ZnVuY3Rpb24o ayxsLG0sbil7aSgnYkYnLGssbCxbbSxuXSk7fX07ZS5leHBvcnRzPWo7fSk7Cl9f ZCgiT3B0aW9uU3RvcmFnZSIsWyJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVydGllcycpLGg9d2luZG93Lmxv Y2FsU3RvcmFnZXx8bnVsbDtmdW5jdGlvbiBpKGosayxsKXt0aGlzLm5hbWU9ajt0 aGlzLnJldml2ZXI9a3x8dGhpcy5fcmV2aXZlcjt0aGlzLnJlcGxhY2VyPWx8fHRo aXMuX3JlcGxhY2VyO3RoaXMuX3JlYWQoKTt9ZyhpLnByb3RvdHlwZSx7X3JlYWQ6 ZnVuY3Rpb24oaixrKXtpZihoJiZoW3RoaXMubmFtZV0pe3RoaXMub3B0aW9ucz1K U09OLnBhcnNlKGhbdGhpcy5uYW1lXSx0aGlzLnJldml2ZXIpO31lbHNlIHRoaXMu b3B0aW9ucz17fTt9LF93cml0ZTpmdW5jdGlvbigpe2lmKGgpe3ZhciBqPWcoe30s dGhpcy5vcHRpb25zKTtoW3RoaXMubmFtZV09SlNPTi5zdHJpbmdpZnkoaix0aGlz LnJlcGxhY2VyKTt9fSxfcmV2aXZlcjpmdW5jdGlvbihqLGspe2lmKGspe3ZhciBs PS9eXFtSZWdFeHAgKC4qKVxdJC8udGVzdChrKSYmUmVnRXhwLiQxO2lmKGwpaz1u ZXcgUmVnRXhwKGwucmVwbGFjZSgvXlwvfFwvJC9nLCcnKSk7cmV0dXJuIGs7fX0s X3JlcGxhY2VyOmZ1bmN0aW9uKGosayl7aWYoayBpbnN0YW5jZW9mIFJlZ0V4cCl7 az0nW1JlZ0V4cCAnK2srJ10nO3RoaXNbal09azt9cmV0dXJuIGs7fSxnZXQ6ZnVu Y3Rpb24oaixrKXtyZXR1cm4gaiBpbiB0aGlzLm9wdGlvbnM/dGhpcy5vcHRpb25z W2pdOms7fSxzZXQ6ZnVuY3Rpb24oaixrKXtpZihrPT1udWxsKXtkZWxldGUgdGhp cy5vcHRpb25zW2pdO31lbHNlIHRoaXMub3B0aW9uc1tqXT1rO3RoaXMuX3dyaXRl KCk7fX0pO2UuZXhwb3J0cz1pO30pOwpfX2QoIk1lZ2FwaG9uZUhlbHBlciIsWyJB bmltYXRpb24iLCJBc3luY1JlcXVlc3QiLCJEaWFsb2ciLCJnZSJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXt2YXIgZz1iKCdBbmltYXRpb24nKSxoPWIoJ0FzeW5jUmVx dWVzdCcpLGk9YignRGlhbG9nJyksaj1iKCdnZScpLGs9e2hpZGVTdG9yeTpmdW5j dGlvbihsLG0sbixvLHApe3ZhciBxPXttcF9pZDpsLGxvY2F0aW9uOm0sY29udGV4 dDpvfTtuZXcgaCgpLnNldFVSSSgnL2FqYXgvbWVnYXBob25lL21lZ2FwaG9uZV9o aWRlLnBocCcpLnNldE1ldGhvZCgnUE9TVCcpLnNldERhdGEocSkuc2V0SGFuZGxl cihmdW5jdGlvbihzKXtwJiZwKHMpO30pLnNlbmQoKTt2YXIgcj1qKG4pO2lmKHIp ZyhyKS50bygnaGVpZ2h0JywwKS5kdXJhdGlvbig1MDApLmhpZGUoKS5nbygpO30s Y3JlYXRlTW9kYWxTdG9yeTpmdW5jdGlvbihsLG0sbixvKXt2YXIgcDtpZighbC5i dXR0b25zfHwhbC5idXR0b25zLmxlbmd0aCl7bC5idXR0b25zPWkuQ0xPU0U7cD10 aGlzLmhpZGVTdG9yeS5iaW5kKHRoaXMsbSxuLG8sbnVsbCk7fXZhciBxPW5ldyBp KGwpO2lmKHApcS5zZXRIYW5kbGVyKHApO3Euc2hvdygpO30sYnV0dG9uT25DbGlj

azpmdW5jdGlvbihsLG0sbixvLHAscSl7dmFyIHI9ZnVuY3Rpb24oKXtpZihwKXtu ZXcgaCgpLnNldFVSSShvKS5zZW5kKCk7fWVsc2UgZG9jdW1lbnQubG9jYXRpb24u aHJlZj1vO307aWYocSl7dGhpcy5oaWRlU3RvcnkobCxtLCcnLG4sZnVuY3Rpb24o KXtyKCk7fSk7fWVsc2UgcigpO319O2UuZXhwb3J0cz1rO30pOwpfX2QoImxlZ2Fj eTptZWdhcGhvbmUiLFsiTWVnYXBob25lSGVscGVyIl0sZnVuY3Rpb24oYSxiLGMs ZCl7YS5NZWdhcGhvbmVIZWxwZXI9YignTWVnYXBob25lSGVscGVyJyk7fSwzKTsK X19kKCJNZXNzYWdpbmdFdmVudHMiLFsiYXJyYXktZXh0ZW5zaW9ucyIsIkFyYml0 ZXIiLCJDaGFubmVsQ29uc3RhbnRzIiwiY29weVByb3BlcnRpZXMiLCJpc0VtcHR5 Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2FycmF5LWV4dGVuc2lvbnMnKTt2 YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdDaGFubmVsQ29uc3RhbnRzJyksaT1iKCdj b3B5UHJvcGVydGllcycpLGo9YignaXNFbXB0eScpLGs9e30sbD1uZXcgZygpO2Z1 bmN0aW9uIG0obil7aWYoIWooaykpcmV0dXJuO2Zvcih2YXIgbyBpbiBuKWwuaW5m b3JtKCdjb3VudC8nK28sbltvXSk7fWwuc3Vic2NyaWJlKCdtYXJrLWFzLXJlYWQn LGZ1bmN0aW9uKG4sbyl7KG8udGlkc3x8by5jaGF0X2lkc3x8W10pLmZvckVhY2go ZnVuY3Rpb24ocCl7cD0nJytwO2lmKCEocCBpbiBrKSl7a1twXT10cnVlO3ZhciBx PWZ1bmN0aW9uKCl7bC51bnN1YnNjcmliZShyKTtjbGVhclRpbWVvdXQocyk7ZGVs ZXRlIGtbcF07fSxyPWwuc3Vic2NyaWJlKCdyZWFkJyxmdW5jdGlvbih0LHUpe2lm KCh1LnRpZHN8fFtdKS5jb250YWlucyhwKXx8KHUuY2hhdF9pZHN8fFtdKS5jb250 YWlucyhwKSlxKCk7fSkscz1xLmRlZmVyKDYwMDAwKTt9fSk7fSk7Zy5zdWJzY3Jp YmUoaC5nZXRBcmJpdGVyVHlwZSgnbWVzc2FnaW5nJyksZnVuY3Rpb24obixvKXt2 YXIgcD1pKHt9LG8ub2JqKSxldmVudD1wLmV2ZW50fHwnJztkZWxldGUgcC50eXBl O2RlbGV0ZSBwLmV2ZW50O2wuaW5mb3JtKGV2ZW50LHApO2lmKCd1bnJlYWRfY291 bnRzJyBpbiBwKXt2YXIgcT1wLnVucmVhZF9jb3VudHM7bSh7dW5yZWFkOnEuaW5i b3gsb3RoZXJfdW5zZWVuOnEub3RoZXJ9KTt9fSk7Zy5zdWJzY3JpYmUoaC5nZXRB cmJpdGVyVHlwZSgnaW5ib3gnKSxmdW5jdGlvbihuLG8pe3ZhciBwPWkoby5vYmop O2RlbGV0ZSBwLnR5cGU7bShwKTt9KTthLk1lc3NhZ2luZ0V2ZW50cz1lLmV4cG9y dHM9bDt9LDMpOwpfX2QoIlJlbmRlck1hbmFnZXIiLFsiZnVuY3Rpb24tZXh0ZW5z aW9ucyIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2Io J2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdjb3B5UHJvcGVydGllcycp O2Z1bmN0aW9uIGgoaSl7dGhpcy5faXNEaXJ0eT1mYWxzZTt0aGlzLl9vYmo9aTt9 ZyhoLnByb3RvdHlwZSx7ZGlydHk6ZnVuY3Rpb24oKXtpZighdGhpcy5faXNEaXJ0 eSl7dGhpcy5faXNEaXJ0eT10cnVlO3RoaXMuX2RvUGFpbnQuYmluZCh0aGlzKS5k ZWZlcigpO319LF9kb1BhaW50OmZ1bmN0aW9uKCl7dGhpcy5faXNEaXJ0eT1mYWxz ZTt0aGlzLl9vYmoucGFpbnQoKTt9fSk7ZS5leHBvcnRzPWg7fSk7Cl9fZCgiQ291 bnRlckRpc3BsYXkiLFsiQXJiaXRlciIsIkNTUyIsIkRPTSIsIlJlbmRlck1hbmFn ZXIiLCJSdW4iLCIkIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9YignQXJiaXRlcicpLGg9YignQ1NTJyksaT1iKCdET00nKSxq PWIoJ1JlbmRlck1hbmFnZXInKSxrPWIoJ1J1bicpLGw9YignJCcpLG09YignY29w eVByb3BlcnRpZXMnKTtmdW5jdGlvbiBuKG8scCxxLHIscyx0KXttKHRoaXMse19u YW1lOm8sX3ZhbHVlTm9kZTpsKHApLF93cmFwcGVyTm9kZTpsKHEpfHxudWxsLF9z dGF0dXNDbGFzczpzLF9ybTpuZXcgaih0aGlzKSxfYXJiaXRlclN1YnNjcmlwdGlv bjpudWxsLF9jb3VudDowfSk7dmFyIHU9dGhpcy5fdmFsdWVOb2RlLmZpcnN0Q2hp bGQ7aWYodSl7dmFyIHY9cGFyc2VJbnQodS5ub2RlVmFsdWUsMTApO2lmKCFpc05h Tih2KSl0aGlzLl9jb3VudD12O310aGlzLl9zdGF0dXNOb2RlPXI/bChyKTpudWxs O3RoaXMuX3N1YnNjcmliZUFsbCgpO24uaW5zdGFuY2VzLnB1c2godGhpcyk7aWYo IXQpay5vbkxlYXZlKHRoaXMuX2Rlc3Ryb3kuYmluZCh0aGlzKSx0cnVlKTt9bShu LHtFVkVOVF9UWVBFX0FESlVTVDonQ291bnRlckRpc3BsYXkvYWRqdXN0JyxFVkVO VF9UWVBFX1VQREFURTonQ291bnRlckRpc3BsYXkvdXBkYXRlJyxpbnN0YW5jZXM6 W10sYWRqdXN0Q291bnQ6ZnVuY3Rpb24obyxwKXtnLmluZm9ybShuLkVWRU5UX1RZ UEVfQURKVVNUKycvJytvLHApO30sc2V0Q291bnQ6ZnVuY3Rpb24obyxwKXtnLmlu Zm9ybShuLkVWRU5UX1RZUEVfVVBEQVRFKycvJytvLHApO319KTttKG4ucHJvdG90 eXBlLHtfZGVzdHJveTpmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl92YWx1ZU5vZGU7 ZGVsZXRlIHRoaXMuX3dyYXBwZXJOb2RlO2lmKHRoaXMuX2FyYml0ZXJTdWJzY3Jp cHRpb24pe3RoaXMuX2FyYml0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtk ZWxldGUgdGhpcy5fYXJiaXRlclN1YnNjcmlwdGlvbjt9bi5pbnN0YW5jZXMucmVt b3ZlKHRoaXMpO30sYWRqdXN0Q291bnQ6ZnVuY3Rpb24obyl7dGhpcy5fY291bnQ9 TWF0aC5tYXgoMCx0aGlzLl9jb3VudCtvKTt0aGlzLl9ybS5kaXJ0eSgpO3JldHVy biB0aGlzO30sc2V0Q291bnQ6ZnVuY3Rpb24obyl7dGhpcy5fY291bnQ9TWF0aC5t YXgoMCxvKTt0aGlzLl9ybS5kaXJ0eSgpO3JldHVybiB0aGlzO30scGFpbnQ6ZnVu Y3Rpb24oKXtpLnNldENvbnRlbnQodGhpcy5fdmFsdWVOb2RlLHRoaXMuX2NvdW50

KTt0aGlzLl90b2dnbGVOb2RlcygpO30sX3RvZ2dsZU5vZGVzOmZ1bmN0aW9uKCl7 aWYodGhpcy5fd3JhcHBlck5vZGUpaC5jb25kaXRpb25DbGFzcyh0aGlzLl93cmFw cGVyTm9kZSwnaGlkZGVuX2VsZW0nLHRoaXMuX2NvdW50PD0wKTtpZih0aGlzLl9z dGF0dXNDbGFzcyYmdGhpcy5fc3RhdHVzTm9kZSloLmNvbmRpdGlvbkNsYXNzKHRo aXMuX3N0YXR1c05vZGUsdGhpcy5fc3RhdHVzQ2xhc3MsdGhpcy5fY291bnQ+MCk7 fSxfc3Vic2NyaWJlQWxsOmZ1bmN0aW9uKCl7dmFyIG89W24uRVZFTlRfVFlQRV9B REpVU1QrJy8nK3RoaXMuX25hbWUsbi5FVkVOVF9UWVBFX1VQREFURSsnLycrdGhp cy5fbmFtZV07dGhpcy5fYXJiaXRlclN1YnNjcmlwdGlvbj1nLnN1YnNjcmliZShv LHRoaXMuX29uSW5mb3JtLmJpbmQodGhpcyksZy5TVUJTQ1JJQkVfTkVXKTt9LF9v bkluZm9ybTpmdW5jdGlvbihvLHApe3A9cGFyc2VJbnQocCk7aWYoaXNOYU4ocCkp cmV0dXJuO2lmKG8uaW5kZXhPZihuLkVWRU5UX1RZUEVfQURKVVNUKSE9LTEpe3Ro aXMuYWRqdXN0Q291bnQocCk7fWVsc2UgaWYoby5pbmRleE9mKG4uRVZFTlRfVFlQ RV9VUERBVEUpIT0tMSl7dGhpcy5zZXRDb3VudChwKTt9ZWxzZSByZXR1cm47cmV0 dXJuO319KTtlLmV4cG9ydHM9bjt9KTsKX19kKCJEb3VibHlMaW5rZWRMaXN0TWFw IixbImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gaCgpe3RoaXMuX2hlYWQ9bnVs bDt0aGlzLl90YWlsPW51bGw7dGhpcy5fbm9kZXM9e307dGhpcy5fbm9kZUNvdW50 PTA7fWcoaC5wcm90b3R5cGUse2dldDpmdW5jdGlvbihpKXtyZXR1cm4gdGhpcy5f bm9kZXNbaV0/dGhpcy5fbm9kZXNbaV0uZGF0YTpudWxsO30sX2luc2VydDpmdW5j dGlvbihpLGosayxsKXtrJiYhdGhpcy5fbm9kZXNba10mJihrPW51bGwpO3ZhciBt PShrJiZ0aGlzLl9ub2Rlc1trXSl8fChsP3RoaXMuX2hlYWQ6dGhpcy5fdGFpbCks bj17ZGF0YTpqLGtleTppLG5leHQ6bnVsbCxwcmV2Om51bGx9O2lmKG0pe3RoaXMu cmVtb3ZlKGkpO2lmKGwpe24ucHJldj1tLnByZXY7bS5wcmV2JiYobS5wcmV2Lm5l eHQ9bik7bS5wcmV2PW47bi5uZXh0PW07fWVsc2V7bi5uZXh0PW0ubmV4dDttLm5l eHQmJihtLm5leHQucHJldj1uKTttLm5leHQ9bjtuLnByZXY9bTt9fW4ucHJldj09 PW51bGwmJih0aGlzLl9oZWFkPW4pO24ubmV4dD09PW51bGwmJih0aGlzLl90YWls PW4pO3RoaXMuX25vZGVzW2ldPW47dGhpcy5fbm9kZUNvdW50Kys7cmV0dXJuIHRo aXM7fSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oaSxqLGspe3JldHVybiB0aGlzLl9p bnNlcnQoaSxqLGssdHJ1ZSk7fSxpbnNlcnRBZnRlcjpmdW5jdGlvbihpLGosayl7 cmV0dXJuIHRoaXMuX2luc2VydChpLGosayxmYWxzZSk7fSxwcmVwZW5kOmZ1bmN0 aW9uKGksail7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKGksaix0aGlzLl9oZWFk JiZ0aGlzLl9oZWFkLmtleSk7fSxhcHBlbmQ6ZnVuY3Rpb24oaSxqKXtyZXR1cm4g dGhpcy5pbnNlcnRBZnRlcihpLGosdGhpcy5fdGFpbCYmdGhpcy5fdGFpbC5rZXkp O30scmVtb3ZlOmZ1bmN0aW9uKGkpe3ZhciBqPXRoaXMuX25vZGVzW2ldO2lmKGop e3ZhciBrPWoubmV4dCxsPWoucHJldjtrJiYoay5wcmV2PWwpO2wmJihsLm5leHQ9 ayk7dGhpcy5faGVhZD09PWomJih0aGlzLl9oZWFkPWspO3RoaXMuX3RhaWw9PT1q JiYodGhpcy5fdGFpbD1sKTtkZWxldGUgdGhpcy5fbm9kZXNbaV07dGhpcy5fbm9k ZUNvdW50LS07fXJldHVybiB0aGlzO30sZmluZDpmdW5jdGlvbihpKXtmb3IodmFy IGo9dGhpcy5faGVhZDtqO2o9ai5uZXh0KWlmKGkoai5kYXRhKSlyZXR1cm4gai5r ZXk7cmV0dXJuIG51bGw7fSxyZWR1Y2U6ZnVuY3Rpb24oaSxqKXtmb3IodmFyIGs9 dGhpcy5faGVhZDtrO2s9ay5uZXh0KWo9aShrLmRhdGEsaik7cmV0dXJuIGo7fSxl eGlzdHM6ZnVuY3Rpb24oaSl7cmV0dXJuICEhdGhpcy5fbm9kZXNbaV07fSxpc0Vt cHR5OmZ1bmN0aW9uKCl7cmV0dXJuICF0aGlzLl9oZWFkO30scmVzZXQ6ZnVuY3Rp b24oKXt0aGlzLl9oZWFkPW51bGw7dGhpcy5fdGFpbD1udWxsO3RoaXMuX25vZGVz PXt9O3RoaXMuX25vZGVDb3VudD0wO30sbWFwOmZ1bmN0aW9uKGkpe2Zvcih2YXIg aj10aGlzLl9oZWFkO2o7aj1qLm5leHQpaShqLmRhdGEpO30sZ2V0Q291bnQ6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9kZUNvdW50O30sZ2V0SGVhZDpmdW5jdGlv bigpe3JldHVybiB0aGlzLl9oZWFkLmRhdGE7fSxnZXRUYWlsOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3RhaWwuZGF0YTt9LGdldE5leHQ6ZnVuY3Rpb24oaSl7dmFy IGo9dGhpcy5fbm9kZXNbaV07aWYoaiYmai5uZXh0KXJldHVybiBqLm5leHQuZGF0 YTtyZXR1cm4gbnVsbDt9LGdldFByZXY6ZnVuY3Rpb24oaSl7dmFyIGo9dGhpcy5f bm9kZXNbaV07aWYoaiYmai5wcmV2KXJldHVybiBqLnByZXYuZGF0YTtyZXR1cm4g bnVsbDt9fSk7ZS5leHBvcnRzPWg7fSk7Cl9fZCgiUXVpY2tsaW5nQXVnbWVudGVy IixbIlVSSSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdVUkknKSxo PVtdLGk9e2FkZEhhbmRsZXI6ZnVuY3Rpb24oail7aC5wdXNoKGopO30sYXVnbWVu dFVSSTpmdW5jdGlvbihqKXt2YXIgaz1bXSxsPWcoaik7aC5mb3JFYWNoKGZ1bmN0 aW9uKG0pe3ZhciBuPW0obCk7aWYoIW4pcmV0dXJuO2sucHVzaChtKTtsPWwuYWRk UXVlcnlEYXRhKG4pO30pO2g9aztyZXR1cm4gbDt9fTtlLmV4cG9ydHM9aTt9KTsK X19kKCJRdWlja2xpbmciLFsiQWpheFBpcGVSZXF1ZXN0IiwiQXJiaXRlciIsIkNs YXNzIiwiRG9jdW1lbnRUaXRsZSIsIkRPTSIsIkhUTUwiLCJPbmxvYWRIb29rcyIs

IlBhZ2VUcmFuc2l0aW9ucyIsIlF1aWNrbGluZ0F1Z21lbnRlciIsIlJ1biIsIlVS SSIsIlVzZXJBZ2VudCIsImNvcHlQcm9wZXJ0aWVzIiwiZ29PclJlcGxhY2UiLCJp c0VtcHR5IiwiUXVpY2tsaW5nQ29uZmlnIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ0FqYXhQaXBlUmVxdWVzdCcpLGg9YignQXJiaXRlcicpLGk9Yign Q2xhc3MnKSxqPWIoJ0RvY3VtZW50VGl0bGUnKSxrPWIoJ0RPTScpLGw9YignSFRN TCcpLG09YignT25sb2FkSG9va3MnKSxuPWIoJ1BhZ2VUcmFuc2l0aW9ucycpLG89 YignUXVpY2tsaW5nQXVnbWVudGVyJykscD1iKCdSdW4nKSxxPWIoJ1VSSScpLHI9 YignVXNlckFnZW50Jykscz1iKCdjb3B5UHJvcGVydGllcycpLHQ9YignZ29PclJl cGxhY2UnKSx1PWIoJ2lzRW1wdHknKSx2PWMoJ1F1aWNrbGluZ0NvbmZpZycpLHc9 di52ZXJzaW9uLHg9di5zZXNzaW9uTGVuZ3RoLHk9bmV3IFJlZ0V4cCh2LmluYWN0 aXZlUGFnZVJlZ2V4KSx6PTAsYWEsYmE9JycsY2E9e2lzQWN0aXZlOmZ1bmN0aW9u KCl7cmV0dXJuIHRydWU7fSxpc1BhZ2VBY3RpdmU6ZnVuY3Rpb24oamEpe2lmKGph PT0nIycpcmV0dXJuIGZhbHNlO2phPW5ldyBxKGphKTtpZihqYS5nZXREb21haW4o KSYmamEuZ2V0RG9tYWluKCkhPXEoKS5nZXREb21haW4oKSlyZXR1cm4gZmFsc2U7 aWYoamEuZ2V0UGF0aCgpPT0nL2wucGhwJyl7dmFyIGthPWphLmdldFF1ZXJ5RGF0 YSgpLnU7aWYoa2Epe2thPXEodW5lc2NhcGUoa2EpKS5nZXREb21haW4oKTtpZihr YSYma2EhPXEoKS5nZXREb21haW4oKSlyZXR1cm4gZmFsc2U7fX12YXIgbGE9amEu Z2V0UGF0aCgpLG1hPWphLmdldFF1ZXJ5RGF0YSgpO2lmKCF1KG1hKSlsYSs9Jz8n K3EuaW1wbG9kZVF1ZXJ5KG1hKTtyZXR1cm4gIXkudGVzdChsYSk7fX07ZnVuY3Rp b24gZGEoamEpe2phPWphfHwnRmFjZWJvb2snO2ouc2V0KGphKTtpZihyLmllKCkp e2JhPWphO2lmKCFhYSlhYT13aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt2 YXIga2E9YmEsbGE9ai5nZXQoKTtpZihrYSE9bGEpai5zZXQoa2EpO30sNTAwMCxm YWxzZSk7fX1mdW5jdGlvbiBlYShqYSl7dmFyIGthPWRvY3VtZW50LmdldEVsZW1l bnRzQnlUYWdOYW1lKCdsaW5rJyk7Zm9yKHZhciBsYT0wO2xhPGthLmxlbmd0aDsr K2xhKXtpZihrYVtsYV0ucmVsIT0nYWx0ZXJuYXRlJyljb250aW51ZTtrLnJlbW92 ZShrYVtsYV0pO31pZihqYS5sZW5ndGgpe3ZhciBtYT1rLmZpbmQoZG9jdW1lbnQs J2hlYWQnKTttYSYmay5hcHBlbmRDb250ZW50KG1hLGwoamFbMF0pKTt9fWZ1bmN0 aW9uIGZhKGphKXt2YXIga2E9e3ZlcnNpb246d307dGhpcy5wYXJlbnQuY29uc3Ry dWN0KHRoaXMsamEse3F1aWNrbGluZzprYX0pO31pLmV4dGVuZChmYSxnKTtzKGZh LnByb3RvdHlwZSx7X3ByZUJvb3Rsb2FkRmlyc3RSZXNwb25zZTpmdW5jdGlvbihq YSl7cmV0dXJuIHRydWU7fSxfZmlyZURvbUNvbnRlbnRDYWxsYmFjazpmdW5jdGlv bigpe3RoaXMuX3JlcXVlc3QuY2F2YWxyeSYmdGhpcy5fcmVxdWVzdC5jYXZhbHJ5 LnNldFRpbWVTdGFtcCgndF9kb21jb250ZW50Jyk7bi50cmFuc2l0aW9uQ29tcGxl dGUoKTt0aGlzLl9vblBhZ2VEaXNwbGF5ZWQmJnRoaXMuX29uUGFnZURpc3BsYXll ZCh0aGlzLnBpcGUpO3RoaXMucGFyZW50Ll9maXJlRG9tQ29udGVudENhbGxiYWNr KCk7fSxfZmlyZU9ubG9hZENhbGxiYWNrOmZ1bmN0aW9uKCl7aWYodGhpcy5fcmVx dWVzdC5jYXZhbHJ5KXt0aGlzLl9yZXF1ZXN0LmNhdmFscnkuc2V0VGltZVN0YW1w KCd0X2hvb2tzJyk7dGhpcy5fcmVxdWVzdC5jYXZhbHJ5LnNldFRpbWVTdGFtcCgn dF9sYXlvdXQnKTt0aGlzLl9yZXF1ZXN0LmNhdmFscnkuc2V0VGltZVN0YW1wKCd0 X29ubG9hZCcpO310aGlzLnBhcmVudC5fZmlyZU9ubG9hZENhbGxiYWNrKCk7fSxp c1BhZ2VBY3RpdmU6ZnVuY3Rpb24oamEpe3JldHVybiBjYS5pc1BhZ2VBY3RpdmUo amEpO30sX3ZlcnNpb25DaGVjazpmdW5jdGlvbihqYSl7aWYoamEudmVyc2lvbj09 dylyZXR1cm4gdHJ1ZTt2YXIga2E9WydxdWlja2xpbmcnLCdhamF4cGlwZScsJ2Fq YXhwaXBlX3Rva2VuJ107dCh3aW5kb3cubG9jYXRpb24scShqYS51cmkpLnJlbW92 ZVF1ZXJ5RGF0YShrYSksdHJ1ZSk7cmV0dXJuIGZhbHNlO30sX3Byb2Nlc3NGaXJz dFJlc3BvbnNlOmZ1bmN0aW9uKGphKXt2YXIga2E9amEuZ2V0UGF5bG9hZCgpO2Rh KGthLnRpdGxlKTtlYShrYS5zeW5kaWNhdGlvbnx8W10pO3dpbmRvdy5zY3JvbGxU bygwLDApO3ZhciBsYT1rYS5ib2R5X2NsYXNzfHwnJztkb2N1bWVudC5ib2R5LmNs YXNzTmFtZT1sYTt9LGdldFNhbml0aXplZFBhcmFtZXRlcnM6ZnVuY3Rpb24oKXty ZXR1cm4gWydxdWlja2xpbmcnXTt9fSk7ZnVuY3Rpb24gZ2EoKXt6Kys7cmV0dXJu IHo+PXg7fWZ1bmN0aW9uIGhhKGphKXtnLnNldEN1cnJlbnRSZXF1ZXN0KG51bGwp O2lmKGdhKCkpcmV0dXJuIGZhbHNlO2phPW8uYXVnbWVudFVSSShqYSk7aWYoIWNh LmlzUGFnZUFjdGl2ZShqYSkpcmV0dXJuIGZhbHNlO3dpbmRvdy5FeGl0VGltZT1E YXRlLm5vdygpO3AuX19yZW1vdmVIb29rKCdvbmFmdGVybG9hZGhvb2tzJyk7cC5f X3JlbW92ZUhvb2soJ29ubG9hZGhvb2tzJyk7bS5ydW5Ib29rcygnb25sZWF2ZWhv b2tzJyk7aC5pbmZvcm0oJ29ubG9hZC9leGl0Jyx0cnVlKTtuZXcgZmEoamEpLnNl dENhbnZhc0lkKCdjb250ZW50Jykuc2VuZCgpO3JldHVybiB0cnVlO31mdW5jdGlv biBpYShqYSl7d2luZG93W2phKydfbmF0aXZlJ109KGZ1bmN0aW9uKGthKXtyZXR1 cm4gZnVuY3Rpb24gbGEobWEsbmEpe3JldHVybiBrYShtYSxuYSk7fTt9KSh3aW5k b3dbamFdKTt3aW5kb3dbamFdPWZ1bmN0aW9uIGthKGxhLG1hLG5hKXt2YXIgb2E9

d2luZG93W2phKydfbmF0aXZlJ10obGEsbWEpO2lmKG1hPjApaWYobmEhPT1mYWxz ZSlwLm9uTGVhdmUoZnVuY3Rpb24oKXtjbGVhckludGVydmFsKG9hKTt9KTtyZXR1 cm4gb2E7fTt9aWEoJ3NldEludGVydmFsJyk7aWEoJ3NldFRpbWVvdXQnKTtuLnJl Z2lzdGVySGFuZGxlcihoYSwxKTtlLmV4cG9ydHM9YS5RdWlja2xpbmc9Y2E7fSk7 Cl9fZCgiTm90aWZpY2F0aW9uQ291bnRlciIsWyJBcmJpdGVyIiwiRG9jdW1lbnRU aXRsZSIsIkpTTG9nZ2VyIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J0FyYml0ZXInKSxoPWIoJ0RvY3VtZW50VGl0bGUnKSxpPWIoJ0pTTG9nZ2VyJyks aj17bWVzc2FnZXM6MCxub3RpZmljYXRpb25zOjAscmVxdWVzdHM6MH0saz17aW5p dDpmdW5jdGlvbigpe2cuc3Vic2NyaWJlKCd1cGRhdGVfdGl0bGUnLHRoaXMuX2hh bmRsZVVwZGF0ZS5iaW5kKHRoaXMpKTtnLnN1YnNjcmliZSgnamV3ZWwvY291bnQt dXBkYXRlZCcsdGhpcy5faGFuZGxlQ291bnRVcGRhdGUuYmluZCh0aGlzKSk7fSxn ZXRDb3VudDpmdW5jdGlvbigpe3ZhciBsPTA7Zm9yKHZhciBtIGluIGope3ZhciBu PU51bWJlcihqW21dKTtpZih0eXBlb2YgalttXT09J3N0cmluZycmJmlzTmFOKG4p KXJldHVybiBqW21dO2lmKGlzTmFOKG4pfHxuPDApe2kuY3JlYXRlKCdqZXdlbHMn KS5lcnJvcignYmFkX2NvdW50Jyx7amV3ZWw6bSxjb3VudDpqW21dfSk7Y29udGlu dWU7fWwrPW47fXJldHVybiBsO30sdXBkYXRlVGl0bGU6ZnVuY3Rpb24oKXt2YXIg bD10aGlzLmdldENvdW50KCksbT1oLmdldCgpO209bD8nKCcrbCsnKSAnK206bTto LnNldChtLHRydWUpO30sX2hhbmRsZUNvdW50VXBkYXRlOmZ1bmN0aW9uKGwsbSl7 alttLmpld2VsXT1tLmNvdW50O3RoaXMudXBkYXRlVGl0bGUoKTt9LF9oYW5kbGVV cGRhdGU6ZnVuY3Rpb24obCxtKXt0aGlzLnVwZGF0ZVRpdGxlKCk7fX07ZS5leHBv cnRzPWs7fSk7Cl9fZCgibGVnYWN5Om5vdGlmaWNhdGlvbnMtY291bnRlciIsWyJO b3RpZmljYXRpb25Db3VudGVyIl0sZnVuY3Rpb24oYSxiLGMsZCl7YS5Ob3RpZmlj YXRpb25Db3VudGVyPWIoJ05vdGlmaWNhdGlvbkNvdW50ZXInKTt9LDMpOwpfX2Qo Ik5vdGlmaWNhdGlvblNvdW5kIixbIlNvdW5kIiwiQ2hhdE9wdGlvbnMiLCJjb3B5 UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdTb3Vu ZCcpLGg9YignQ2hhdE9wdGlvbnMnKSxpPWIoJ2NvcHlQcm9wZXJ0aWVzJyk7Zy5p bml0KFsnYXVkaW8vbXBlZyddKTtmdW5jdGlvbiBqKGspe3RoaXMuX3NvdW5kUGF0 aD1rO31pKGoucHJvdG90eXBlLHtwbGF5OmZ1bmN0aW9uKCl7aWYodGhpcy5fc291 bmRQYXRoIT09bnVsbCYmaC5nZXRTZXR0aW5nKCdzb3VuZCcpKWcucGxheSh0aGlz Ll9zb3VuZFBhdGgpO319KTtlLmV4cG9ydHM9ajt9KTsKX19kKCJsZWdhY3k6bm90 aWZpY2F0aW9ucy1zb3VuZCIsWyJOb3RpZmljYXRpb25Tb3VuZCJdLGZ1bmN0aW9u KGEsYixjLGQpe2EuTm90aWZpY2F0aW9uU291bmQ9YignTm90aWZpY2F0aW9uU291 bmQnKTt9LDMpOwpfX2QoImxlZ2FjeTpub3RpZi14bGlzdCIsWyJOb3RpZlhMaXN0 Il0sZnVuY3Rpb24oYSxiLGMsZCl7YS5Ob3RpZlhMaXN0PWIoJ05vdGlmWExpc3Qn KTt9LDMpOwpmdW5jdGlvbiBOZWdhdGl2ZU5vdGlmKGEsYil7Y29weVByb3BlcnRp ZXModGhpcyxiKTt0aGlzLm93bmVyPWE7dGhpcy54TGluaz1ET00uZmluZCh0aGlz Lm9iaiwnLm5vdGlmX3gnKTt0aGlzLmNvbmZpcm1pbmdNc2c9RE9NLmZpbmQodGhp cy5vYmosJy5jb25maXJtaW5nTXNnJyk7dGhpcy5tYWluTGluaz1ET00uZmluZCh0 aGlzLm9iaiwnLm5vdGlmTWFpbkxpbmsnKTt0aGlzLnVzZXJYQ2xpY2tlZD1mYWxz ZTt0aGlzLnVzZXJVbnN1YnNjcmliZWQ9ZmFsc2U7RXZlbnQubGlzdGVuKHRoaXMu eExpbmssJ2NsaWNrJyx0aGlzLnhDbGljay5iaW5kKHRoaXMpKTtpZihDU1MuaGFz Q2xhc3ModGhpcy5vYmosJ2ZpcnN0X3JlY2VpcHQnKSYmQ1NTLmhhc0NsYXNzKCQo J2pld2VsQ29udGFpbmVyJyksJ25vdGlmR2VudGxlQXBwUmVjZWlwdCcpKXt0aGlz LmdlbnRsZUZpcnN0UmVjZWlwdEhvdmVyRXZlbnRIYW5kbGVyPUV2ZW50Lmxpc3Rl bih0aGlzLm9iaiwnbW91c2VvdmVyJyx0aGlzLmdlbnRsZUZpcnN0UmVjZWlwdE5v dGlmSG92ZXIuYmluZCh0aGlzKSk7dGhpcy5jbG9uZV9ub3RpZj10aGlzLm9iai5j bG9uZU5vZGUodHJ1ZSk7Q1NTLmFkZENsYXNzKHRoaXMuY2xvbmVfbm90aWYsJ2Ns b25lX25vdGlmJyk7fX1jb3B5UHJvcGVydGllcyhOZWdhdGl2ZU5vdGlmLnByb3Rv dHlwZSx7RkFERV9BV0FZX0RVUkFUSU9OOjI1MDAsWF9PVVRfRFVSQVRJT046MTAw LFhfT1VUX0RVUkFUSU9OX1NIT1JUOjIsR0VOVExFX0ZSVUlfTUlOX0hPVkVSX0RV UkFUSU9OOjUwMCx4Q2xpY2s6ZnVuY3Rpb24oZXZlbnQpe3RoaXMuX2FjdGl2YXRl WCgpO3ZhciBhPXRoaXMueExpbmsuZ2V0QXR0cmlidXRlKCdkYXRhLWd0JyksYj1h P3tndDpKU09OLnBhcnNlKGEpfTp7fTt1c2VyX2FjdGlvbigneGJ1dHRvbicsdGhp cy54TGluayxldmVudCkudWFpKCdjbGljaycpO2NsaWNrX3JlZl9hY3Rpb24oJ2Ns aWNrJyx0aGlzLnhMaW5rLGV2ZW50LG51bGwsYik7cmV0dXJuIGZhbHNlO30sZ2Vu dGxlRmlyc3RSZWNlaXB0Tm90aWZIb3ZlcjpmdW5jdGlvbihldmVudCl7ZXZlbnQu c3RvcCgpO3ZhciBhPURPTS5maW5kKHRoaXMub2JqLCcuZmlyc3RfcmVjZWlwdF9u b19idXR0b24nKSxiPWEuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1Rvb2x0aXAuc2V0 KGEsYiwnYWJvdmUnLCdjZW50ZXInKTtUb29sdGlwLnNob3coYSk7aWYoIXRoaXMu Z2VudGxlRmlyc3RSZWNlaXB0VW5ob3ZlckV2ZW50SGFuZGxlcil7dGhpcy5ob3Zl

clRpbWU9bmV3IERhdGUoKTt0aGlzLmdlbnRsZUZpcnN0UmVjZWlwdFVuaG92ZXJF dmVudEhhbmRsZXI9RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dCwnbW91c2VvdmVyJyx0aGlzLmdlbnRsZUZpcnN0UmVjZWlwdE5vdGlmVW5ob3Zl ci5iaW5kKHRoaXMpKTt9aWYoIXRoaXMuZ2VudGxlRmlyc3RSZWNlaXB0Tm9DbGlj a0V2ZW50SGFuZGxlcil0aGlzLmdlbnRsZUZpcnN0UmVjZWlwdE5vQ2xpY2tFdmVu dEhhbmRsZXI9RXZlbnQubGlzdGVuKGEsJ2NsaWNrJyx0aGlzLmdlbnRsZUZpcnN0 UmVjZWlwdE5vQ2xpY2suYmluZCh0aGlzKSk7fSxnZW50bGVGaXJzdFJlY2VpcHRO b3RpZlVuaG92ZXI6ZnVuY3Rpb24oZXZlbnQpe2lmKFBhcmVudC5ieUNsYXNzKGV2 ZW50LmdldFRhcmdldCgpLCd1aUNvbnRleHR1YWxMYXllcicpfHxQYXJlbnQuYnlD bGFzcyhldmVudC5nZXRUYXJnZXQoKSwndWlTY3JvbGxhYmxlQXJlYVRyYWNrJykp cmV0dXJuIGZhbHNlO3ZhciBhPW5ldyBEYXRlKCk7aWYodGhpcy5ob3ZlclRpbWUm JmEtdGhpcy5ob3ZlclRpbWU8dGhpcy5HRU5UTEVfRlJVSV9NSU5fSE9WRVJfRFVS QVRJT04pe3RoaXMuZ2VudGxlRmlyc3RSZWNlaXB0VW5ob3ZlckV2ZW50SGFuZGxl ci5yZW1vdmUoKTt0aGlzLmdlbnRsZUZpcnN0UmVjZWlwdFVuaG92ZXJFdmVudEhh bmRsZXI9bnVsbDtyZXR1cm47fXRoaXMuX3JlbW92ZUdlbnRsZUZpcnN0UmVjZWlw dExpc3RlbmVycygpO2lmKCF0aGlzLmdlbnRsZUZpcnN0UmVjZWlwdFJlaG92ZXJF dmVudEhhbmRsZXIpdGhpcy5nZW50bGVGaXJzdFJlY2VpcHRSZWhvdmVyRXZlbnRI YW5kbGVyPUV2ZW50Lmxpc3Rlbih0aGlzLm9iaiwnbW91c2VvdmVyJyx0aGlzLmdl bnRsZUZpcnN0UmVjZWlwdE5vdGlmUmVob3Zlci5iaW5kKHRoaXMpKTt0aGlzLl9n ZW50bGVGaXJzdFJlY2VpcHRVSUZhZGVBd2F5KCk7dGhpcy5fc2VuZEZpcnN0UmVj ZWlwdFllc1RvU2VydmVyKCk7fSxnZW50bGVGaXJzdFJlY2VpcHROb3RpZlJlaG92 ZXI6ZnVuY3Rpb24oZXZlbnQpe2lmKHRoaXMuY2xvbmVfbm90aWYpQ1NTLmhpZGUo dGhpcy5jbG9uZV9ub3RpZik7dGhpcy5nZW50bGVGaXJzdFJlY2VpcHRSZWhvdmVy RXZlbnRIYW5kbGVyLnJlbW92ZSgpO30sZ2VudGxlRmlyc3RSZWNlaXB0Tm9DbGlj azpmdW5jdGlvbihldmVudCl7dGhpcy5fcmVtb3ZlR2VudGxlRmlyc3RSZWNlaXB0 TGlzdGVuZXJzKCk7fSxyZXN0b3JlOmZ1bmN0aW9uKCl7aWYodGhpcy5vd25lci5u b3RpZlhMaXN0Lm5ld05vdGlmRXhpc3QodGhpcy5pZCkpe3RoaXMub3duZXIubm90 aWZYTGlzdC5yZXN1bWVJbnNlcnQodGhpcy5pZCk7fWVsc2UgdGhpcy5vd25lci5u b3RpZlhMaXN0LnJlbW92ZU5vdGlmKHRoaXMuaWQpO3RoaXMuX2NvbmZpcm1pbmdN c2dGYWRlQXdheSh0aGlzLmNvbmZpcm1pbmdNc2cpO3RoaXMuX25vdGlmTWFpbkxp bmtTaG93VXAodGhpcy5tYWluTGluayk7dGhpcy5fYnV0dG9uU2hvd1VwKHRoaXMu eExpbmspO3RoaXMuX2FkanVzdENvbnRhaW5lcih0aGlzLm9iaik7fSxyZXNldDpm dW5jdGlvbigpe2lmKHRoaXMudXNlclhDbGlja2VkJiYhdGhpcy51c2VyVW5zdWJz Y3JpYmVkKXt0aGlzLnVzZXJYQ2xpY2tlZD1mYWxzZTt0aGlzLnJlc3RvcmUoKTt9 fSxvblR1cm5lZE9mZjpmdW5jdGlvbigpe3RoaXMudXNlclVuc3Vic2NyaWJlZD10 cnVlO0NTUy5oaWRlKHRoaXMuY29uZmlybWluZ01zZyk7dGhpcy5fbm90aWZNYWlu TGlua1Nob3dVcChET00uZmluZCh0aGlzLm9iaiwnLmNvbmZpcm1lZE1zZycpKTt0 aGlzLl9hZGp1c3RDb250YWluZXIodGhpcy5vYmopO30sb25VbmRpZDpmdW5jdGlv bigpe3RoaXMudXNlclhDbGlja2VkPWZhbHNlO3RoaXMudXNlclVuc3Vic2NyaWJl ZD1mYWxzZTt0aGlzLnJlc3RvcmUoKTtDU1Muc2hvdyh0aGlzLmNvbmZpcm1pbmdN c2cpO3RoaXMuX25vdGlmTWFpbkxpbmtGYWRlQXdheShET00uZmluZCh0aGlzLm9i aiwnLmNvbmZpcm1lZE1zZycpKTtET00ucmVtb3ZlKERPTS5maW5kKHRoaXMub2Jq LCcuY29uZmlybWVkTXNnJykpO30sb25NYXJrZWRTcGFtOmZ1bmN0aW9uKCl7RE9N LnJlbW92ZShET00uZmluZCh0aGlzLm9iaiwnLmNvbmZpcm1lZE1zZycpKTt0aGlz Ll9mYWRlQXdheShET00uZmluZCh0aGlzLm9iaiwnLnNwYW1Nc2cnKSk7fSxvbkZp cnN0UmVjZWlwdFllczpmdW5jdGlvbigpe3RoaXMuX2hpZGVGaXJzdFJlY2VpcHRE aXYoKTt0aGlzLl9mYWRlQXdheShET00uZmluZCh0aGlzLm9iaiwnLmZpcnN0Q29u ZmlybWVkTXNnJykpO30sb25GaXJzdFJlY2VpcHRObzpmdW5jdGlvbigpe3RoaXMu X2hpZGVGaXJzdFJlY2VpcHREaXYoKTtDU1MuaGlkZSh0aGlzLmNvbmZpcm1pbmdN c2cpO3RoaXMuX2FjdGl2YXRlWCgpO25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkko Jy9hamF4L25vdGlmaWNhdGlvbnMvbmVnYXRpdmVfcmVxLnBocCcpLnNldERhdGEo e3JlcXVlc3RfdHlwZTondHVybl9vZmYnLG5vdGlmaWNhdGlvbl9pZDp0aGlzLmlk fSkuc2VuZCgpO30sX3NlbmRGaXJzdFJlY2VpcHRZZXNUb1NlcnZlcjpmdW5jdGlv bigpe25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoJy9hamF4L25vdGlmaWNhdGlv bnMvbmVnYXRpdmVfcmVxLnBocCcpLnNldERhdGEoe3JlcXVlc3RfdHlwZTonZmly c3RfcmVjZWlwdF95ZXMnLG5vdGlmaWNhdGlvbl9pZDp0aGlzLmlkfSkuc2VuZCgp O30sX2dlbnRsZUZpcnN0UmVjZWlwdFVJRmFkZUF3YXk6ZnVuY3Rpb24oKXtET00u cHJlcGVuZENvbnRlbnQodGhpcy5vYmosdGhpcy5jbG9uZV9ub3RpZik7Q1NTLnJl bW92ZUNsYXNzKHRoaXMub2JqLCdmaXJzdF9yZWNlaXB0Jyk7dmFyIGE9dGhpczth bmltYXRpb24odGhpcy5jbG9uZV9ub3RpZikudG8oJ29wYWNpdHknLCcwJykuZHVy

YXRpb24odGhpcy5GQURFX0FXQVlfRFVSQVRJT04pLm9uZG9uZShmdW5jdGlvbigp e0RPTS5yZW1vdmUoYS5jbG9uZV9ub3RpZik7fSkuZ28oKTt9LF9yZW1vdmVHZW50 bGVGaXJzdFJlY2VpcHRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtpZih0aGlzLmdlbnRs ZUZpcnN0UmVjZWlwdEhvdmVyRXZlbnRIYW5kbGVyKXRoaXMuZ2VudGxlRmlyc3RS ZWNlaXB0SG92ZXJFdmVudEhhbmRsZXIucmVtb3ZlKCk7aWYodGhpcy5nZW50bGVG aXJzdFJlY2VpcHRVbmhvdmVyRXZlbnRIYW5kbGVyKXRoaXMuZ2VudGxlRmlyc3RS ZWNlaXB0VW5ob3ZlckV2ZW50SGFuZGxlci5yZW1vdmUoKTtpZih0aGlzLmdlbnRs ZUZpcnN0UmVjZWlwdE5vQ2xpY2tFdmVudEhhbmRsZXIpdGhpcy5nZW50bGVGaXJz dFJlY2VpcHROb0NsaWNrRXZlbnRIYW5kbGVyLnJlbW92ZSgpO30sX2FjdGl2YXRl WDpmdW5jdGlvbigpe0NTUy5hZGRDbGFzcyh0aGlzLm9iaiwnZm9yUHVzaFNhZmV0 eScpO3RoaXMudXNlclhDbGlja2VkPXRydWU7dGhpcy5vd25lci5ub3RpZlhMaXN0 LnVzZXJYQ2xpY2sodGhpcy5pZCk7dGhpcy5fbm90aWZNYWluTGlua0ZhZGVBd2F5 KHRoaXMubWFpbkxpbmspO3RoaXMuX2J1dHRvbkZhZGVBd2F5KHRoaXMueExpbmsp O2lmKENTUy5zaG93bih0aGlzLmNvbmZpcm1pbmdNc2cpKXRoaXMuX2NvbmZpcm1p bmdNc2dTaG93VXAodGhpcy5jb25maXJtaW5nTXNnKTt0aGlzLl9hZGp1c3RDb250 YWluZXIodGhpcy5vYmopO30sX2hpZGVGaXJzdFJlY2VpcHREaXY6ZnVuY3Rpb24o KXtDU1MucmVtb3ZlQ2xhc3ModGhpcy5vYmosJ2ZpcnN0X3JlY2VpcHQnKTtDU1Mu aGlkZShET00uZmluZCh0aGlzLm9iaiwnLmZpcnN0X3JlY2VpcHRfZGl2JykpO30s X2ZhZGVBd2F5OmZ1bmN0aW9uKGEpe2FuaW1hdGlvbihhKS5mcm9tKCdiYWNrZ3Jv dW5kQ29sb3InLCcjRkZGOUQ3JykudG8oJ2JhY2tncm91bmRDb2xvcicsJyNGRkZG RkYnKS5kdXJhdGlvbih0aGlzLkZBREVfQVdBWV9EVVJBVElPTikuY2hlY2twb2lu dCgpLnRvKCdvcGFjaXR5JywnMCcpLmJsaW5kKCkuZHVyYXRpb24odGhpcy5YX09V VF9EVVJBVElPTikuY2hlY2twb2ludCgpLnRvKCdoZWlnaHQnLCcwcHgnKS50bygn cGFkZGluZ1RvcCcsJzBweCcpLnRvKCdwYWRkaW5nQm90dG9tJywnMHB4JykuYmxp bmQoKS5oaWRlKCkuZHVyYXRpb24odGhpcy5YX09VVF9EVVJBVElPTikuZ28oKTt9 LF9hZGp1c3RDb250YWluZXI6ZnVuY3Rpb24oYSl7YW5pbWF0aW9uKGEpLmJ5KCdo ZWlnaHQnLCcwcHgnKS5kdXJhdGlvbih0aGlzLlhfT1VUX0RVUkFUSU9OKS5jaGVj a3BvaW50KCkuYnkoJ2hlaWdodCcsJzBweCcpLmR1cmF0aW9uKHRoaXMuWF9PVVRf RFVSQVRJT05fU0hPUlQpLmNoZWNrcG9pbnQoKS50bygnaGVpZ2h0JywnYXV0bycp LmR1cmF0aW9uKHRoaXMuWF9PVVRfRFVSQVRJT04pLmdvKCk7fSxfbm90aWZNYWlu TGlua1Nob3dVcDpmdW5jdGlvbihhKXthbmltYXRpb24oYSkuZHVyYXRpb24odGhp cy5YX09VVF9EVVJBVElPTikuY2hlY2twb2ludCgpLnRvKCdoZWlnaHQnLCdhdXRv JykudG8oJ3BhZGRpbmdUb3AnLCc0cHgnKS50bygncGFkZGluZ0JvdHRvbScsJzRw eCcpLmJsaW5kKCkuc2hvdygpLmR1cmF0aW9uKHRoaXMuWF9PVVRfRFVSQVRJT05f U0hPUlQpLmNoZWNrcG9pbnQoKS50bygnb3BhY2l0eScsJzEnKS5ibGluZCgpLmR1 cmF0aW9uKHRoaXMuWF9PVVRfRFVSQVRJT04pLmdvKCk7fSxfY29uZmlybWluZ01z Z1Nob3dVcDpmdW5jdGlvbihhKXthbmltYXRpb24oYSkuZHVyYXRpb24odGhpcy5Y X09VVF9EVVJBVElPTikuY2hlY2twb2ludCgpLnRvKCdoZWlnaHQnLCdhdXRvJyku dG8oJ3BhZGRpbmdUb3AnLCcxMHB4JykudG8oJ3BhZGRpbmdCb3R0b20nLCcxMHB4 JykuYmxpbmQoKS5zaG93KCkuZHVyYXRpb24odGhpcy5YX09VVF9EVVJBVElPTl9T SE9SVCkuY2hlY2twb2ludCgpLnRvKCdvcGFjaXR5JywnMScpLmJsaW5kKCkuZHVy YXRpb24odGhpcy5YX09VVF9EVVJBVElPTikuZ28oKTt9LF9ub3RpZk1haW5MaW5r RmFkZUF3YXk6ZnVuY3Rpb24oYSl7YW5pbWF0aW9uKGEpLnRvKCdvcGFjaXR5Jywn MCcpLmJsaW5kKCkuZHVyYXRpb24odGhpcy5YX09VVF9EVVJBVElPTikuY2hlY2tw b2ludCgpLnRvKCdoZWlnaHQnLCcwcHgnKS50bygncGFkZGluZ1RvcCcsJzBweCcp LnRvKCdwYWRkaW5nQm90dG9tJywnMHB4JykuYmxpbmQoKS5oaWRlKCkuZHVyYXRp b24odGhpcy5YX09VVF9EVVJBVElPTl9TSE9SVCkuZ28oKTt9LF9jb25maXJtaW5n TXNnRmFkZUF3YXk6ZnVuY3Rpb24oYSl7YW5pbWF0aW9uKGEpLnRvKCdvcGFjaXR5 JywnMCcpLmJsaW5kKCkuZHVyYXRpb24odGhpcy5YX09VVF9EVVJBVElPTikuY2hl Y2twb2ludCgpLnRvKCdoZWlnaHQnLCcwcHgnKS50bygncGFkZGluZ1RvcCcsJzBw eCcpLnRvKCdwYWRkaW5nQm90dG9tJywnMHB4JykuYmxpbmQoKS5kdXJhdGlvbih0 aGlzLlhfT1VUX0RVUkFUSU9OX1NIT1JUKS5nbygpO30sX2J1dHRvblNob3dVcDpm dW5jdGlvbihhKXthbmltYXRpb24oYSkuZHVyYXRpb24odGhpcy5YX09VVF9EVVJB VElPTikuY2hlY2twb2ludCgpLnNob3coKS5kdXJhdGlvbih0aGlzLlhfT1VUX0RV UkFUSU9OX1NIT1JUKS5jaGVja3BvaW50KCkudG8oJ29wYWNpdHknLCcxJykuYmxp bmQoKS5kdXJhdGlvbih0aGlzLlhfT1VUX0RVUkFUSU9OKS5nbygpO30sX2J1dHRv bkZhZGVBd2F5OmZ1bmN0aW9uKGEpe2FuaW1hdGlvbihhKS50bygnb3BhY2l0eScs JzAnKS5ibGluZCgpLmR1cmF0aW9uKHRoaXMuWF9PVVRfRFVSQVRJT04pLmNoZWNr cG9pbnQoKS5oaWRlKCkuZHVyYXRpb24odGhpcy5YX09VVF9EVVJBVElPTl9TSE9S VCkuZ28oKTt9fSk7Cl9fZCgiTm90aWZpY2F0aW9uTGlzdCIsWyJBbmltYXRpb24i

LCJBcmJpdGVyIiwiQXJiaXRlck1peGluIiwiQ2xhc3MiLCJDU1MiLCJET00iLCJE b3VibHlMaW5rZWRMaXN0TWFwIiwiSFRNTCIsIlVSSSIsIiQiLCJjb3B5UHJvcGVy dGllcyIsImdlIiwiaXNFbXB0eSIsInR4IiwiaGFzQXJyYXlOYXR1cmUiXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignQW5pbWF0aW9uJyksaD1iKCdBcmJp dGVyJyksaT1iKCdBcmJpdGVyTWl4aW4nKSxqPWIoJ0NsYXNzJyksaz1iKCdDU1Mn KSxsPWIoJ0RPTScpLG09YignRG91Ymx5TGlua2VkTGlzdE1hcCcpLG49YignSFRN TCcpLG89YignVVJJJykscD1iKCckJykscT1iKCdjb3B5UHJvcGVydGllcycpLHI9 YignZ2UnKSxzPWIoJ2lzRW1wdHknKSx0PWIoJ3R4JyksdT1iKCdoYXNBcnJheU5h dHVyZScpLHY9IjAiLHc9IjEiLHg9IjIiO2Z1bmN0aW9uIHkoYmEpe3JldHVybiBi YT09d3x8YmE9PXg7fWZ1bmN0aW9uIHooYmEpe3JldHVybiBiYT09dzt9ZnVuY3Rp b24gYWEoYmEsY2Epe3RoaXMuX2xpc3Q9bmV3IG0oKTt0aGlzLl9maWx0ZXJfZnVu Yz1udWxsO3RoaXMudW5zZWVuQ291bnQ9MDt0aGlzLmNvbnRlbnRSb290PWJhO3Ro aXMubm9JdGVtc0VsZW1lbnQ9bnVsbDt0aGlzLklURU1fVEFHPSdsaSc7dGhpcy5J VEVNX0NMQVNTPSdub3RpZmljYXRpb24nO3RoaXMuTk9fSVRFTVNfSUQ9J2pld2Vs Tm9Ob3RpZmljYXRpb25zJzt0aGlzLk5PX0lURU1TX0NMQVNTPSdlbXB0eSc7dGhp cy5jb21wYXJlPWNhLmNvbXBhcmV8fHRoaXMuY29tcGFyZTt0aGlzLnNob3VsZEJs b2NrQW5pbWF0aW9uPWNhLnNob3VsZEJsb2NrQW5pbWF0aW9ufHxudWxsO3RoaXMu dW5zZWVuVnNVbnJlYWQ9Y2EudW5zZWVuVnNVbnJlYWR8fGZhbHNlO3RoaXMuYW5p bWF0aW9ucz17fTt9cShhYSx7SVRFTV9VTlJFQURfQ0xBU1M6J2pld2VsSXRlbU5l dycsTUFSS19SRUFEX1RZUEU6J21hcmtfcmVhZCcsVU5SRUFEX0NPVU5UX0NIQU5H RV9UWVBFOid1bnJlYWRfY291bnRfY2hhbmdlJyxJTlNFUlRJT05fVFlQRTonaW5z ZXJ0JyxSRU1PVkFMX1RZUEU6J3JlbW92ZScsZ2V0SWRGcm9tRG9tOmZ1bmN0aW9u KGJhKXtyZXR1cm4gYmEuZ2V0QXR0cmlidXRlKCdpZCcpLnJlcGxhY2UoJ25vdGlm aWNhdGlvbl8nLCcnKTt9LGxvY2FsaXplVXJsczpmdW5jdGlvbihiYSl7bC5zY3J5 KGJhLCdhJykuZm9yRWFjaChmdW5jdGlvbihjYSl7byhjYS5ocmVmKS5pc0ZhY2Vi b29rVVJJKCkmJihjYS5ocmVmPW8oY2EuaHJlZikuZ2V0VW5xdWFsaWZpZWRVUkko KS5nZXRRdWFsaWZpZWRVUkkoKS5zZXRTdWJkb21haW4obyhjYS5ocmVmKS5nZXRT dWJkb21haW4oKSkudG9TdHJpbmcoKSk7fSk7fX0pO3EoYWEucHJvdG90eXBlLGks e0ZBREVfRFVSQVRJT046MjUwLFJFU0laRV9EVVJBVElPTjoyMDAsX2dldEZpZWxk OmZ1bmN0aW9uKGJhLGNhKXt2YXIgZGE9dGhpcy5fbGlzdC5nZXQoYmEpO3JldHVy biBkYSYmZGFbY2FdO30sZ2V0RG9tT2JqOmZ1bmN0aW9uKGJhKXtyZXR1cm4gdGhp cy5fZ2V0RmllbGQoYmEsJ29iaicpO30sZnJvbURvbTpmdW5jdGlvbigpe3ZhciBi YT10aGlzLklURU1fVEFHKycuJyt0aGlzLklURU1fQ0xBU1MsY2E9bC5zY3J5KHRo aXMuY29udGVudFJvb3QsYmEpO2Zvcih2YXIgZGE9MDtkYTxjYS5sZW5ndGg7Kytk YSl7dmFyIGVhPWNhW2RhXSxmYT1hYS5nZXRJZEZyb21Eb20oZWEpO3RoaXMuaW5z ZXJ0KGZhLGVhLmdldEF0dHJpYnV0ZSgnZGF0YS1ub3RpZnRpbWUnKSxudWxsKTt9 fSxjb21wYXJlOmZ1bmN0aW9uKGJhLGNhKXtyZXR1cm4gYmEudGltZTxjYS50aW1l fHwoYmEudGltZT09PWNhLnRpbWUmJmJhLmlkPGNhLmlkKTt9LGluc2VydDpmdW5j dGlvbihiYSxjYSxkYSxlYSxmYSxnYSl7dmFyIGhhPXcsaWE9MCxqYT10aGlzLl9s aXN0LmV4aXN0cyhiYSksa2E9Z2EmJnRoaXMuX2xpc3QuZXhpc3RzKGdhKSxsYT1u dWxsLG1hO2lmKGphfHxrYSlpZighKGVhJiZkYSkpe3JldHVybiBmYWxzZTt9ZWxz ZXtpZih0aGlzLl9maWx0ZXJfZnVuYyl7bWE9e25vdGlmX2lkOmJhLG5vdGlmX3Rp bWU6Y2Esbm90aWZfbWFya3VwOmRhLHJlcGxhY2U6ZWEsaWdub3JlVW5yZWFkOmZh LG5vdGlmX2FsdF9pZDpnYX07aWYodGhpcy5fZmlsdGVyX2Z1bmMobWEpKXJldHVy biBmYWxzZTt9aGE9dGhpcy5fZ2V0RmllbGQoYmEsJ3JlYWRuZXNzJyk7aWE9dGhp cy5fZ2V0RmllbGQoYmEsJ3RpbWUnKTtpZihpYT5jYSlyZXR1cm4gZmFsc2U7bGE9 amE/YmE6Z2E7dGhpcy5fcmVtb3ZlKGxhKTt9dmFyIG5hPShkYSYmbihkYSkuZ2V0 Um9vdE5vZGUoKSl8fHAoJ25vdGlmaWNhdGlvbl8nK2JhKSxvYT1NYXRoLm1heChj YSxpYSkscGE9bmEuZ2V0QXR0cmlidXRlKCdkYXRhLXJlYWRuZXNzJyk7aWYoIXRo aXMudW5zZWVuVnNVbnJlYWQmJng9PXBhKXBhPXY7bWE9e2lkOmJhLG9iajpuYSx0 aW1lOm9hLHJlYWRuZXNzOnBhLGFwcF9pZDpuYS5nZXRBdHRyaWJ1dGUoJ2RhdGEt YXBwaWQnKX07dGhpcy5faW5zZXJ0KG1hKTthYS5sb2NhbGl6ZVVybHMobmEpO3Ro aXMubm9JdGVtc0VsZW1lbnQmJmsuaGlkZSh0aGlzLm5vSXRlbXNFbGVtZW50KTtp Zih6KHBhKSl7ZmEmJiF5KGhhKSYmdGhpcy5tYXJrUmVhZChbYmFdKTt0aGlzLnVu c2VlbkNvdW50PXRoaXMuZ2V0VW5zZWVuSWRzKCkubGVuZ3RoO3RoaXMuaW5mb3Jt KGFhLlVOUkVBRF9DT1VOVF9DSEFOR0VfVFlQRSk7fXZhciBxYT0hbGF8fGlhPG9h fHwocGEmJiFoYSYmIWZhKTt0aGlzLmluZm9ybShhYS5JTlNFUlRJT05fVFlQRSx7 aWQ6YmEsaXNfbmV3OnFhLG9iajpuYSxyZXBsYWNlZF9pZDpsYSx0aW1lOm9hfSk7 cmV0dXJuIHRydWU7fSxzaG93Tm9Ob3RpZmljYXRpb25zOmZ1bmN0aW9uKCl7aWYo bnVsbD09dGhpcy5ub0l0ZW1zRWxlbWVudCl0aGlzLm5vSXRlbXNFbGVtZW50PXIo

dGhpcy5OT19JVEVNU19JRCk7aWYobnVsbD09dGhpcy5ub0l0ZW1zRWxlbWVudCl7 dGhpcy5ub0l0ZW1zRWxlbWVudD1sLmNyZWF0ZSh0aGlzLklURU1fVEFHLHtpZDp0 aGlzLk5PX0lURU1TX0lELGNsYXNzTmFtZTp0aGlzLk5PX0lURU1TX0NMQVNTfSwi VGlkYWsgYWRhIHBlbWJlcml0YWh1YW4gYmFydSIpO2wuYXBwZW5kQ29udGVudCh0 aGlzLmNvbnRlbnRSb290LHRoaXMubm9JdGVtc0VsZW1lbnQpO31rLnNob3codGhp cy5ub0l0ZW1zRWxlbWVudCk7fSxfaW5zZXJ0OmZ1bmN0aW9uKGJhKXt0aGlzLl9s aXN0LnJlbW92ZShiYS5pZCk7dmFyIGNhPW51bGw7dGhpcy5fbGlzdC5maW5kKGZ1 bmN0aW9uKGVhKXt2YXIgZmE9dGhpcy5jb21wYXJlKGVhLGJhKTshZmEmJihjYT1l YS5pZCk7cmV0dXJuIGZhO30uYmluZCh0aGlzKSk7dmFyIGRhPXRoaXMuZ2V0RG9t T2JqKGNhKTtpZihkYSl7dGhpcy5fbGlzdC5pbnNlcnRBZnRlcihiYS5pZCxiYSxj YSk7bC5pbnNlcnRBZnRlcihkYSxiYS5vYmopO31lbHNle3RoaXMuX2xpc3QucHJl cGVuZChiYS5pZCxiYSk7bC5wcmVwZW5kQ29udGVudCh0aGlzLmNvbnRlbnRSb290 LGJhLm9iaik7fX0sX3JlbW92ZTpmdW5jdGlvbihiYSl7dmFyIGNhPXRoaXMuX2dl dEZpZWxkKGJhLCdvYmonKTtpZighY2EpcmV0dXJuIGZhbHNlO3RoaXMuaW5mb3Jt KGFhLlJFTU9WQUxfVFlQRSx7aWQ6YmF9KTt0aGlzLl9saXN0LnJlbW92ZShiYSk7 bC5yZW1vdmUoY2EpO3RoaXMuaXNFbXB0eSgpJiZ0aGlzLnNob3dOb05vdGlmaWNh dGlvbnMoKTtyZXR1cm4gdHJ1ZTt9LGdldFVucmVhZElkczpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9saXN0LnJlZHVjZShmdW5jdGlvbihiYSxjYSl7eShiYS5yZWFk bmVzcykmJmNhLnB1c2goYmEuaWQpO3JldHVybiBjYTt9LFtdKTt9LGdldFVuc2Vl bklkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0LnJlZHVjZShmdW5jdGlv bihiYSxjYSl7eihiYS5yZWFkbmVzcykmJmNhLnB1c2goYmEuaWQpO3JldHVybiBj YTt9LFtdKTt9LGdldElkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0LnJl ZHVjZShmdW5jdGlvbihiYSxjYSl7Y2EucHVzaChiYS5pZCk7cmV0dXJuIGNhO30s W10pO30saXNVbnJlYWRJZDpmdW5jdGlvbihiYSl7dmFyIGNhPXRoaXMuZ2V0RG9t T2JqKGJhKTtyZXR1cm4geSh0aGlzLl9nZXRGaWVsZChiYSwncmVhZG5lc3MnKSl8 fChjYSYmay5oYXNDbGFzcyhjYSxhYS5JVEVNX1VOUkVBRF9DTEFTUykpO30saXNV bnNlZW5JZDpmdW5jdGlvbihiYSl7cmV0dXJuIHoodGhpcy5fZ2V0RmllbGQoYmEs J3JlYWRuZXNzJykpO30sbWFya1JlYWQ6ZnVuY3Rpb24oYmEsY2Epe2JhPWJhP2Jh LmZpbHRlcih0aGlzLmlzVW5yZWFkSWQuYmluZCh0aGlzKSk6dGhpcy5nZXRVbnJl YWRJZHMoKTt2YXIgZGE9ZmFsc2U7Zm9yKHZhciBlYT0wO2VhPGJhLmxlbmd0aDtl YSsrKXt2YXIgZmE9dGhpcy5fbGlzdC5nZXQoYmFbZWFdKTtpZihmYSl7aWYodGhp cy5fc2V0UmVhZG5lc3MoYmFbZWFdLHYpKWRhPXRydWU7aWYoY2Epe3RoaXMuX21h cmtSZWFkSW5Eb20oYmFbZWFdLGZhLm9iaik7fWVsc2UgdGhpcy5hbmltYXRlTWFy a1JlYWQoZmEub2JqKTt9fWlmKGRhKXt0aGlzLnVuc2VlbkNvdW50PXRoaXMuZ2V0 VW5zZWVuSWRzKCkubGVuZ3RoO3RoaXMuaW5mb3JtKGFhLlVOUkVBRF9DT1VOVF9D SEFOR0VfVFlQRSk7fX0sbWFya1NlZW46ZnVuY3Rpb24oYmEpe2lmKCF1KGJhKSly ZXR1cm47aWYoIXRoaXMudW5zZWVuVnNVbnJlYWQpe3RoaXMubWFya1JlYWQoYmEp O3JldHVybjt9YmE9YmEuZmlsdGVyKHRoaXMuaXNVbnNlZW5JZC5iaW5kKHRoaXMp KTt2YXIgY2E9ZmFsc2U7Zm9yKHZhciBkYT0wO2RhPGJhLmxlbmd0aDtkYSsrKWlm KHRoaXMuX3NldFJlYWRuZXNzKGJhW2RhXSx4KSljYT10cnVlO2lmKGNhKXt0aGlz LnVuc2VlbkNvdW50PXRoaXMuZ2V0VW5zZWVuSWRzKCkubGVuZ3RoO3RoaXMuaW5m b3JtKGFhLlVOUkVBRF9DT1VOVF9DSEFOR0VfVFlQRSk7fX0sX3NldFJlYWRuZXNz OmZ1bmN0aW9uKGJhLGNhKXt2YXIgZGE9dGhpcy5fbGlzdC5nZXQoYmEpO2lmKCFk YXx8ZGEucmVhZG5lc3M9PWNhKXJldHVybiBmYWxzZTtpZihkYS5yZWFkbmVzcz09 diYmY2E9PXgpcmV0dXJuIGZhbHNlO2RhLnJlYWRuZXNzPWNhO2RhLm9iai5zZXRB dHRyaWJ1dGUoJ2RhdGEtcmVhZG5lc3MnLGNhKTtyZXR1cm4gdHJ1ZTt9LF9tYXJr UmVhZEluRG9tOmZ1bmN0aW9uKGJhLGNhKXtpZighdGhpcy5pc1VucmVhZElkKGJh KSlyZXR1cm47dmFyIGRhPXAoY2EpO2lmKGRhKXt0aGlzLnN0b3BBbmltYXRpb24o YmEpO2sucmVtb3ZlQ2xhc3MoZGEsYWEuSVRFTV9VTlJFQURfQ0xBU1MpO319LGFu aW1hdGVNYXJrUmVhZDpmdW5jdGlvbihiYSl7aWYoIWsuaGFzQ2xhc3MoYmEsYWEu SVRFTV9VTlJFQURfQ0xBU1MpKXJldHVybjt2YXIgY2E9YWEuZ2V0SWRGcm9tRG9t KGJhKSxkYT10aGlzLl9tYXJrUmVhZEluRG9tLmJpbmQodGhpcyxjYSxiYSk7aWYo ay5oYXNDbGFzcyhiYSwnZmJKZXdlbEJlZXAnKSl7ZGEoKTtyZXR1cm47fWlmKHRo aXMuc2hvdWxkQmxvY2tBbmltYXRpb24mJnRoaXMuc2hvdWxkQmxvY2tBbmltYXRp b24oYmEpKXJldHVybjtkYS5kZWZlcigxMDAwMCk7fSxzdG9wQW5pbWF0aW9uOmZ1 bmN0aW9uKGJhKXtiYSBpbiB0aGlzLmFuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9u c1tiYV0uc3RvcCgpO2RlbGV0ZSB0aGlzLmFuaW1hdGlvbnNbYmFdO3JldHVybiB0 cnVlO30saW5zZXJ0TWFueTpmdW5jdGlvbihiYSxjYSl7aWYoJ29iamVjdCc9PXR5 cGVvZiBiYSYmIXMoYmEpKXtmb3IodmFyIGRhIGluIGJhKXt2YXIgZWE9YmFbZGFd O3RoaXMuaW5zZXJ0KGRhLGVhLnRpbWUsZWEubWFya3VwLHRydWUsY2EsZWEuYWx0

X2lkfHxudWxsKTt9dGhpcy5ub0l0ZW1zRWxlbWVudCYmay5oaWRlKHRoaXMubm9J dGVtc0VsZW1lbnQpO31lbHNlIHRoaXMuaXNFbXB0eSgpJiZ0aGlzLnNob3dOb05v dGlmaWNhdGlvbnMoKTt9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f bGlzdC5pc0VtcHR5KCk7fSxnZXRFYXJsaWVzdE5vdGlmVGltZTpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9saXN0LmlzRW1wdHkoKT8wOk1hdGgubWluLmFwcGx5KG51 bGwsdGhpcy5nZXRJZHMoKS5tYXAoZnVuY3Rpb24oYmEpe3JldHVybiB0aGlzLl9n ZXRGaWVsZChiYSwndGltZScpO30uYmluZCh0aGlzKSkpO30sc2V0RmlsdGVyRm46 ZnVuY3Rpb24oYmEpe3RoaXMuX2ZpbHRlcl9mdW5jPWJhO30sdG9nZ2xlTm90aWZz U2ltaWxhclRvOmZ1bmN0aW9uKGJhLGNhLGRhKXt2YXIgZWE9dGhpcy5fZ2V0Rmll bGQoYmEsJ2FwcF9pZCcpO2lmKGVhKXt2YXIgZmE9dGhpcy5nZXRJZHMoKTtmb3Io dmFyIGdhPTA7Z2E8ZmEubGVuZ3RoOysrZ2EpaWYoZWE9PXRoaXMuX2dldEZpZWxk KGZhW2dhXSwnYXBwX2lkJykpe3ZhciBoYT10aGlzLmdldERvbU9iaihmYVtnYV0p O2lmKGJhIT1mYVtnYV0pY2E/dGhpcy5faGlkZVdpdGhBbmltYXRpb24oaGEpOnRo aXMuX3Nob3dXaXRoQW5pbWF0aW9uKGhhKTt2YXIgaWE9bC5zY3J5KGhhLCcuZmly c3RfcmVjZWlwdF9kaXYnKTtpZihpYS5sZW5ndGg9PTEpaWYoZGEpe2suaGlkZShp YVswXSk7ay5yZW1vdmVDbGFzcyhoYSwnZmlyc3RfcmVjZWlwdCcpO31lbHNle2su c2hvdyhpYVswXSk7ay5hZGRDbGFzcyhoYSwnZmlyc3RfcmVjZWlwdCcpO319fX0s X2hpZGVXaXRoQW5pbWF0aW9uOmZ1bmN0aW9uKGJhKXtnKGJhKS50bygnb3BhY2l0 eScsJzAnKS5ibGluZCgpLmR1cmF0aW9uKHRoaXMuRkFERV9EVVJBVElPTikuY2hl Y2twb2ludCgpLnRvKCdoZWlnaHQnLCcwcHgnKS50bygncGFkZGluZ1RvcCcsJzBw eCcpLnRvKCdwYWRkaW5nQm90dG9tJywnMHB4JykuYmxpbmQoKS5oaWRlKCkuZHVy YXRpb24odGhpcy5SRVNJWkVfRFVSQVRJT04pLmdvKCk7fSxfc2hvd1dpdGhBbmlt YXRpb246ZnVuY3Rpb24oYmEpe2coYmEpLnRvKCdoZWlnaHQnLCdhdXRvJykudG8o J3BhZGRpbmdUb3AnLCdhdXRvJykudG8oJ3BhZGRpbmdCb3R0b20nLCdhdXRvJyku YmxpbmQoKS5zaG93KCkuZHVyYXRpb24odGhpcy5SRVNJWkVfRFVSQVRJT04pLmNo ZWNrcG9pbnQoKS50bygnb3BhY2l0eScsJzEnKS5ibGluZCgpLmR1cmF0aW9uKHRo aXMuRkFERV9EVVJBVElPTikuZ28oKTt9fSk7ZS5leHBvcnRzPWFhO30pOwpfX2Qo ImxlZ2FjeTpub3RpZmljYXRpb25zLWxpc3QiLFsiTm90aWZpY2F0aW9uTGlzdCJd LGZ1bmN0aW9uKGEsYixjLGQpe2EuTm90aWZpY2F0aW9uTGlzdD1iKCdOb3RpZmlj YXRpb25MaXN0Jyk7fSwzKTsKZnVuY3Rpb24gTm90aWZpY2F0aW9ucyhhKXt0aGlz LnVwZGF0ZVRpbWU9YS51cGRhdGVUaW1lfHxEYXRlLm5vdygpO3RoaXMudXBkYXRl X3BlcmlvZD1hLnVwZGF0ZVBlcmlvZHx8NjAwMDA7dGhpcy5sYXRlc3Rfbm90aWZf dGltZT1hLmxhdGVzdE5vdGlmfHwwO3RoaXMubGF0ZXN0X3JlYWRfbm90aWZfdGlt ZT1hLmxhdGVzdFJlYWROb3RpZnx8MDt0aGlzLmNhY2hlX3ZlcnNpb249YS5jYWNo ZVZlcnNpb258fDA7dGhpcy5ub3RpZlJlY2VpdmVkVHlwZT1hLm5vdGlmUmVjZWl2 ZWRUeXBlfHwnbm90aWZpY2F0aW9uJzt0aGlzLndyYXBwZXJJRD1hLndyYXBwZXJJ RHx8J25vdGlmaWNhdGlvbnNXcmFwcGVyJzt0aGlzLmNvbnRlbnRJRD1hLmNvbnRl bnRJRHx8J2pld2VsTm90aWZzJzt0aGlzLnNob3VsZExvZ0ltcHJlc3Npb25zPWEu c2hvdWxkTG9nSW1wcmVzc2lvbnN8fGZhbHNlO3RoaXMuYWxsb3dEZXNrdG9wTm90 aWZpY2F0aW9ucz1hLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbnN8fGZhbHNlO3Ro aXMudXNlSW5maW5pdGVTY3JvbGw9YS51c2VJbmZpbml0ZVNjcm9sbHx8ZmFsc2U7 dGhpcy51c2VVbmFnZ3JlZ2F0ZWRCZWVwZXI9YS51bmFnZ3JlZ2F0ZWRCZWVwZXJ8 fGZhbHNlO3RoaXMudW5zZWVuVnNVbnJlYWQ9YS51bnNlZW5Wc1VucmVhZHx8ZmFs c2U7dGhpcy5yZWNlaXZlU291bmRQYXRoPWEucmVjZWl2ZVNvdW5kUGF0aHx8bnVs bDt0aGlzLnVzZUFnZ3JlZ2F0ZWRCb3R0b21CZWVwZXI9YS51c2VBZ2dyZWdhdGVk Qm90dG9tQmVlcGVyfHxmYWxzZTt0aGlzLnNjcm9sbGFibGVBcmVhTm9kZT1udWxs O3RoaXMuZmlyc3RSZWNlaXB0TWFwPXt9O3RoaXMudXNlcj1FbnYudXNlcjt0aGlz LnF1ZXVlZE5vdGlmaWNhdGlvbnM9W107dGhpcy50aW1lRWxlbWVudD0nc21hbGwu dGltZSc7dGhpcy51YT1uZXcgVXNlck5vT3AoKTt0aGlzLl9pbml0KCk7fU5vdGlm aWNhdGlvbnMuQkVFUFNfRVhQSVJFRD0nYmVlcGVyL2JlZXBzX2V4cGlyZWQnO2Nv cHlQcm9wZXJ0aWVzKE5vdGlmaWNhdGlvbnMucHJvdG90eXBlLHtUSU1FX1RSQVZF TDondGltZV90cmF2ZWwnLE9OTElORTonb25saW5lJyxTQ1JPTExfT0ZGX1RJTlk6 J3Njcm9sbF9vZmZfdGlueScsSU5BQ1RJVkVfUkVGUkVTSDonaW5hY3RpdmVfcmVm cmVzaCcsX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLkJFRVBFUl9BUFBJRD0zMDcyOTQy NTU2Mjt0aGlzLmlnbm9yZUJlZXBzPWZhbHNlO3RoaXMuY29va2llTmFtZT0nbm90 aWZpY2F0aW9uc18nK3RoaXMudXNlcjt0aGlzLmJlZXBzRXhwaXJlZFRva2VuPW51 bGw7dGhpcy51cGRhdGVDaGVja0NvdW50PTA7dGhpcy5mZXRjaExpc3RlbmVycz1b XTt0aGlzLmN1cnJlbnRGZXRjaFJlcXVlc3Q9bnVsbDt0aGlzLndyYXBwZXI9Z2Uo dGhpcy53cmFwcGVySUQpO3RoaXMuY29udGVudD1nZSh0aGlzLmNvbnRlbnRJRCk7 dGhpcy5qZXdlbEZseW91dD1nZSgnZmJOb3RpZmljYXRpb25zRmx5b3V0Jyk7dGhp

cy5mb290ZXI9RE9NLmZpbmQodGhpcy5qZXdlbEZseW91dCwnLmpld2VsRm9vdGVy Jyk7dGhpcy5sb2FkaW5nSW5kaWNhdG9yPWdlKHRoaXMuY29udGVudElEKydfbG9h ZGluZ19pbmRpY2F0b3InKTt0aGlzLk5PVElGX0pFV0VMX1JFRj0nbm90aWZfamV3 ZWwnO3RoaXMuQkVFUEVSX1JFRj0nYmVlcGVyJzt0aGlzLm5vdGlmTG9nZ2VyPUpT TG9nZ2VyLmNyZWF0ZSgnbm90aWZpY2F0aW9ucycpO05vdGlmaWNhdGlvbkNvdW50 ZXIuaW5pdCgpO3RoaXMuYWxlcnRMaXN0PW5ldyBOb3RpZmljYXRpb25MaXN0KHRo aXMuY29udGVudCx0aGlzLl9nZXRMaXN0UGFyYW1zKCkpO3RoaXMuX3VwZGF0ZUNv dW50KCk7d2luZG93Lk1pbk5vdGlmaWNhdGlvbnMmJk1pbk5vdGlmaWNhdGlvbnMu ZmV0Y2hTZW50KCkmJih0aGlzLmZldGNoPWJhZ29maG9sZGluZyk7QXJiaXRlci5z dWJzY3JpYmUoQ2hhbm5lbENvbnN0YW50cy5nZXRBcmJpdGVyVHlwZSh0aGlzLm5v dGlmUmVjZWl2ZWRUeXBlKSx0aGlzLl9oYW5kbGVOb3RpZmljYXRpb25Nc2cuYmlu ZCh0aGlzKSk7QXJiaXRlci5zdWJzY3JpYmUoQ2hhbm5lbENvbnN0YW50cy5nZXRB cmJpdGVyVHlwZSgnbm90aWZpY2F0aW9uc19yZWFkJyksdGhpcy5faGFuZGxlTm90 aWZpY2F0aW9uc1JlYWRNc2cuYmluZCh0aGlzKSk7QXJiaXRlci5zdWJzY3JpYmUo Q2hhbm5lbENvbnN0YW50cy5nZXRBcmJpdGVyVHlwZSgnbm90aWZpY2F0aW9uc19z ZWVuJyksdGhpcy5faGFuZGxlTm90aWZpY2F0aW9uc1NlZW5Nc2cuYmluZCh0aGlz KSk7QXJiaXRlci5zdWJzY3JpYmUoJ2pld2VsL3Jlc2l6ZScsdGhpcy5faGlkZU92 ZXJmbG93LnNoaWVsZCh0aGlzKSk7dGhpcy5hbGVydExpc3Quc3Vic2NyaWJlKE5v dGlmaWNhdGlvbkxpc3QuVU5SRUFEX0NPVU5UX0NIQU5HRV9UWVBFLHRoaXMuX3Vw ZGF0ZUNvdW50LmJpbmQodGhpcykpO3RoaXMuX3BvbGxlcj1uZXcgUG9sbGVyKHRo aXMudXBkYXRlX3BlcmlvZCx0aGlzLl91cGRhdGUuYmluZCh0aGlzKSx0cnVlKTtp Zih0aGlzLndyYXBwZXIpdGhpcy5jb3VudFNwYW49RE9NLmZpbmQodGhpcy53cmFw cGVyLCdzcGFuLmpld2VsQ291bnQgc3BhbicpO3RoaXMuaW5pdGlhbGl6ZUV2ZW50 cygpO3RoaXMuZnJvbURvbSgpO2lmKHRoaXMudXNlSW5maW5pdGVTY3JvbGwpe3Ro aXMuX2F1dG9Mb2FkTm90aWZJbmRleD0xO3RoaXMuX3RydW5jYXRlPWZhbHNlO3Ro aXMuYWxlcnRMaXN0LnN1YnNjcmliZShOb3RpZmljYXRpb25MaXN0LklOU0VSVElP Tl9UWVBFLHRoaXMuX2hhbmRsZUluc2VydC5iaW5kKHRoaXMpKTt9dGhpcy5fbm90 aWZTb3VuZD1udWxsO30sX2dldExpc3RQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4g e3Nob3VsZEJsb2NrQW5pbWF0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlz Tm90aWZKZXdlbE9wZW4oKTt9LmJpbmQodGhpcyksdW5zZWVuVnNVbnJlYWQ6dGhp cy51bnNlZW5Wc1VucmVhZH07fSxmcm9tRG9tOmZ1bmN0aW9uKCl7dGhpcy5pZ25v cmVCZWVwcz10cnVlO3RoaXMuYWxlcnRMaXN0LmZyb21Eb20oKTt3aW5kb3cuTWlu Tm90aWZpY2F0aW9ucyYmTWluTm90aWZpY2F0aW9ucy5mZXRjaGVkKCkmJnRoaXMu YWxlcnRMaXN0LmlzRW1wdHkoKSYmdGhpcy5hbGVydExpc3Quc2hvd05vTm90aWZp Y2F0aW9ucygpO3RoaXMuaWdub3JlQmVlcHM9ZmFsc2U7fSxpbml0aWFsaXplRXZl bnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hbGVydExpc3QuSVRFTV9UQUcsYj1u dWxsO0V2ZW50Lmxpc3Rlbih0aGlzLmNvbnRlbnQse21vdXNlb3ZlcjpmdW5jdGlv bihldmVudCl7dmFyIGQ9ZXZlbnQuZ2V0VGFyZ2V0KCk7Yj1QYXJlbnQuYnlUYWco ZCxhKTtpZihiJiZkIT1iKWlmKFBhcmVudC5ieUNsYXNzKGIsJ25vdGlmTmVnYXRp dmVCYXNlJykpe0NTUy5hZGRDbGFzcyhiLCdub3RpZkhvdmVyJyk7fWVsc2UgQ1NT LmFkZENsYXNzKGIsJ3NlbGVjdGVkJyk7fSxtb3VzZW91dDpmdW5jdGlvbihldmVu dCl7YiYmQ1NTLnJlbW92ZUNsYXNzKGIsJ3NlbGVjdGVkJyk7YiYmQ1NTLnJlbW92 ZUNsYXNzKGIsJ25vdGlmSG92ZXInKTtiPW51bGw7fSxtb3VzZWRvd246dGhpcy5v bkNvbnRlbnRNb3VzZURvd24uYmluZCh0aGlzKX0pO0V2ZW50Lmxpc3Rlbih0aGlz LndyYXBwZXIsJ21vdXNlb3ZlcicsdGhpcy5vbk1vdXNlT3Zlci5iaW5kKHRoaXMp KTtUb2dnbGVyLmxpc3Rlbignc2hvdycsdGhpcy53cmFwcGVyLHRoaXMub25DbGlj ay5iaW5kKHRoaXMpKTtUb2dnbGVyLmxpc3RlbignaGlkZScsdGhpcy53cmFwcGVy LHRoaXMub25IaWRlLmJpbmQodGhpcykpO3RoaXMuc2hvdWxkTG9nSW1wcmVzc2lv bnMmJlRvZ2dsZXIubGlzdGVuKCdzaG93Jyx0aGlzLndyYXBwZXIsdGhpcy5fbG9n SW1wcmVzc2lvbi5iaW5kKHRoaXMpKTt2YXIgYz1mdW5jdGlvbihkKXt0aGlzLl9w b2xsZXIucmVxdWVzdE5vdygpO3RoaXMubm90aWZMb2dnZXIuYnVtcChkKTt9LmJp bmQodGhpcyk7U3lzdGVtRXZlbnRzLnN1YnNjcmliZShTeXN0ZW1FdmVudHMuVElN RV9UUkFWRUwsYy5jdXJyeSh0aGlzLlRJTUVfVFJBVkVMKSk7U3lzdGVtRXZlbnRz LnN1YnNjcmliZShTeXN0ZW1FdmVudHMuT05MSU5FLGZ1bmN0aW9uKGQsZSl7ZSYm Yyh0aGlzLk9OTElORSk7fSk7SU5BQ1RJVkVfUkVGUkVTSF9NUz0xMDAwKjYwKjYw O1VzZXJBY3Rpdml0eS5zdWJzY3JpYmUoZnVuY3Rpb24oZCxlKXsoZS5pZGxlbmVz cz5JTkFDVElWRV9SRUZSRVNIX01TKSYmYyh0aGlzLklOQUNUSVZFX1JFRlJFU0gp O30uYmluZCh0aGlzKSk7aWYoUGFyZW50LmJ5Q2xhc3ModGhpcy53cmFwcGVyLCdu b3RpZkpld2VsQmVlcGVyJykmJiFGYkRlc2t0b3BQbHVnaW4uc2hvdWxkU3VwcHJl c3NCZWVwZXIoKSYmKHRoaXMuYmVlcGVyPXdpbmRvdy5Ob3RpZkJlZXBlcikpdGhp

cy5faW5pdEJlZXBlcigpO3RoaXMubmVnYXRpdmVOb3RpZnM9e307dGhpcy5faW5p dE5vdGlmTmVnYXRpdmVGZWVkYmFjaygpO2lmKHRoaXMudXNlSW5maW5pdGVTY3Jv bGwpe3RoaXMuX3NldHVwU2Nyb2xsKCk7dGhpcy5faW5pdGlhbGl6ZVNjcm9sbEV2 ZW50cygpO3RoaXMuX3VwZGF0ZVNjcm9sbERhdGFTdHJ1Y3R1cmVzLmJpbmQodGhp cykuZGVmZXIoKTt0aGlzLl9oaWRlT3ZlcmZsb3coKTt9fSxfc2V0dXBTY3JvbGw6 ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxBcmVhPURPTS5zY3J5KHRoaXMuamV3ZWxG bHlvdXQsJ2Rpdi51aVNjcm9sbGFibGVBcmVhV3JhcCcpWzBdO3RoaXMuX21vcmVQ YWdlckxpbms9RE9NLmZpbmQodGhpcy5qZXdlbEZseW91dCwnLm5vdGlmTW9yZVBh Z2VyIGEnKTt0aGlzLl9tb3JlUGFnZXI9UGFyZW50LmJ5Q2xhc3ModGhpcy5fbW9y ZVBhZ2VyTGluaywnbm90aWZNb3JlUGFnZXInKXx8dGhpcy5fbW9yZVBhZ2VyTGlu azt0aGlzLl9pbmZpbml0ZVNjcm9sbE5vdGlmPW51bGw7dGhpcy5hZnRlckZpcnN0 RmV0Y2g9ZmFsc2U7dGhpcy5hbmltYXRlPWZhbHNlO2lmKHdpbmRvdy5NaW5Ob3Rp ZmljYXRpb25zJiZNaW5Ob3RpZmljYXRpb25zLmZldGNoZWQoKSl7dGhpcy5hZnRl ckZpcnN0RmV0Y2g9dHJ1ZTtDU1Muc2hvdyh0aGlzLl9tb3JlUGFnZXIpO319LF9p bml0aWFsaXplU2Nyb2xsRXZlbnRzOmZ1bmN0aW9uKCl7RXZlbnQubGlzdGVuKHRo aXMuX3Njcm9sbEFyZWEsJ3Njcm9sbCcsdGhyb3R0bGUodGhpcy5faGFuZGxlU2Ny b2xsLmJpbmQodGhpcykpKTtFdmVudC5saXN0ZW4odGhpcy5fbW9yZVBhZ2VyTGlu aywnc3VjY2VzcycsZnVuY3Rpb24oYSl7dGhpcy5mZXRjaEhhbmRsZXIoYS5nZXRE YXRhKCkucmVzcG9uc2UpO30uYmluZCh0aGlzKSk7fSxfdXBkYXRlU2Nyb2xsRGF0 YVN0cnVjdHVyZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmFsZXJ0TGlzdC5nZXRJ ZHMoKSxiPU1hdGgubWF4KDAsYS5sZW5ndGgtdGhpcy5fYXV0b0xvYWROb3RpZklu ZGV4KTt0aGlzLl9pbmZpbml0ZVNjcm9sbE5vdGlmPXRoaXMuYWxlcnRMaXN0Lmdl dERvbU9iaihhW2JdKTt0aGlzLl9hbm5vdGF0ZU1vcmVQYWdlclVSSSgpO30sX2Fu bm90YXRlTW9yZVBhZ2VyVVJJOmZ1bmN0aW9uKCl7dGhpcy5fbW9yZVBhZ2VyTGlu ay5zZXRBdHRyaWJ1dGUoJ2FqYXhpZnknLG5ldyBVUkkodGhpcy5fbW9yZVBhZ2Vy TGluay5nZXRBdHRyaWJ1dGUoJ2FqYXhpZnknKSkuYWRkUXVlcnlEYXRhKHtlYXJs aWVzdF90aW1lOnRoaXMuYWxlcnRMaXN0LmdldEVhcmxpZXN0Tm90aWZUaW1lKCl9 KSk7fSxvbkNvbnRlbnRNb3VzZURvd246ZnVuY3Rpb24oZXZlbnQpe3ZhciBhPVBh cmVudC5ieVRhZyhldmVudC5nZXRUYXJnZXQoKSx0aGlzLmFsZXJ0TGlzdC5JVEVN X1RBRyksYj1hJiZOb3RpZmljYXRpb25MaXN0LmdldElkRnJvbURvbShhKTtpZihi JiZ0aGlzLmFsZXJ0TGlzdC5pc1VucmVhZElkKGIpKXRoaXMubWFya1JlYWQodHJ1 ZSxbYl0pO30sb25Nb3VzZU92ZXI6ZnVuY3Rpb24oZXZlbnQpe2lmKENTUy5oYXND bGFzcyhldmVudC5nZXRUYXJnZXQoKSwiamV3ZWxCdXR0b24iKSl0aGlzLnVhPXVz ZXJfYWN0aW9uKCdub3RpZnMnLGV2ZW50LnRhcmdldCxldmVudCx7bW9kZTonREVE VVAnfSkudWFpKCdtb3VzZW92ZXInLCdqZXdlbCcpLmFkZF9ldmVudCgnaG92ZXIn KTt0aGlzLmZldGNoKCk7fSxvbkNsaWNrOmZ1bmN0aW9uKCl7dGhpcy5iZWVwZXIm JnRoaXMuYmVlcGVyLmNsZWFyQmVlcHMoKTt3aW5kb3cuQXJiaXRlck1vbml0b3Im JnRoaXMuZmV0Y2ghPWJhZ29maG9sZGluZyYmQXJiaXRlci5yZWdpc3RlckNhbGxi YWNrKGJhZ29maG9sZGluZyxbJ25vdGlmcy9mZXRjaGVkJ10pO3RoaXMudWEuYWRk X2V2ZW50KCdzaG93Jyk7dGhpcy5mZXRjaCgpO3RoaXMubWFya1JlYWQodHJ1ZSk7 dGhpcy5faGlkZU92ZXJmbG93KCk7aWYodGhpcy5zY3JvbGxhYmxlQXJlYU5vZGUp e3ZhciBhPVNjcm9sbGFibGVBcmVhLmdldEluc3RhbmNlKHRoaXMuc2Nyb2xsYWJs ZUFyZWFOb2RlKTthJiZhLnBva2UoKTt9fSxvbkhpZGU6ZnVuY3Rpb24oKXt0aGlz LmFuaW1hdGU9ZmFsc2U7dGhpcy5hbmltYXRpb24mJnRoaXMuYW5pbWF0aW9uLnN0 b3AoKTt0aGlzLnVhLmFkZF9ldmVudCgnaGlkZScpO3RoaXMubWFya1JlYWQodHJ1 ZSk7dGhpcy5fZGVxdWV1ZU5vdGlmaWNhdGlvbnMoKTt9LF9kZXF1ZXVlTm90aWZp Y2F0aW9uczpmdW5jdGlvbigpe3RoaXMucXVldWVkTm90aWZpY2F0aW9ucy5mb3JF YWNoKGZ1bmN0aW9uKGEpe3RoaXMuX2Rpc3BsYXlOb3RpZmljYXRpb24oYS50eXBl LGEuZGF0YSk7fSx0aGlzKTt0aGlzLnF1ZXVlZE5vdGlmaWNhdGlvbnMubGVuZ3Ro PTA7fSxfaGFuZGxlU2Nyb2xsOmZ1bmN0aW9uKCl7aWYodGhpcy5fY2hlY2tJbmZp bml0ZVNjcm9sbCgpKXt0aGlzLl9hdXRvTG9hZE5vdGlmSW5kZXg9NTt0aGlzLl9z ZW5kRmV0Y2hSZXF1ZXN0KHRoaXMuX21vcmVQYWdlcik7fX0sX2hhbmRsZUluc2Vy dDpmdW5jdGlvbihhLGIpe2lmKGIuaXNfbmV3KXRoaXMuX25ld0RhdGFGcm9tSW5z ZXJ0PXRydWU7dGhpcy5fdXBkYXRlU2Nyb2xsRGF0YVN0cnVjdHVyZXMoKTt9LF9j aGVja0luZmluaXRlU2Nyb2xsOmZ1bmN0aW9uKCl7aWYodGhpcy5faW5maW5pdGVT Y3JvbGxOb3RpZiYmdGhpcy5fc2Nyb2xsQXJlYSl7dmFyIGE9VmVjdG9yMi5nZXRF bGVtZW50UG9zaXRpb24odGhpcy5faW5maW5pdGVTY3JvbGxOb3RpZikueSxiPVZl Y3RvcjIuZ2V0RWxlbWVudFBvc2l0aW9uKHRoaXMuX3Njcm9sbEFyZWEpLnkrVmVj dG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLl9zY3JvbGxBcmVhKS55O3Jl dHVybiBhPGI7fXJldHVybiBmYWxzZTt9LF9pbml0QmVlcGVyOmZ1bmN0aW9uKCl7

dGhpcy5iZWVwZXIuaW5pdCh0aGlzLmpld2VsRmx5b3V0KTshdGhpcy51c2VVbmFn Z3JlZ2F0ZWRCZWVwZXImJnRoaXMuYWxlcnRMaXN0LnN1YnNjcmliZShOb3RpZmlj YXRpb25MaXN0LklOU0VSVElPTl9UWVBFLGZ1bmN0aW9uKGEsYil7aWYoIXRoaXMu aXNOb3RpZkpld2VsT3BlbigpJiYhdGhpcy5pZ25vcmVCZWVwcyYmdGhpcy5hbGVy dExpc3QuaXNVbnJlYWRJZChiLmlkKSl7Yi5pc19uZXc/dGhpcy5iZWVwZXIuYWRk QmVlcChiLmlkLGIub2JqKTp0aGlzLmJlZXBlci51cGRhdGVCZWVwKGIucmVwbGFj ZWRfaWQsYi5pZCxiLm9iaik7dGhpcy5sb2dJbXByZXNzaW9uSWRzKFtiLmlkXSx0 aGlzLkJFRVBFUl9SRUYpO319LmJpbmQodGhpcykpOyF0aGlzLnVzZVVuYWdncmVn YXRlZEJlZXBlciYmdGhpcy5hbGVydExpc3Quc3Vic2NyaWJlKE5vdGlmaWNhdGlv bkxpc3QuUkVNT1ZBTF9UWVBFLGZ1bmN0aW9uKGEsYil7dGhpcy5iZWVwZXIucmVt b3ZlQmVlcChiLmlkKTt9LmJpbmQodGhpcykpO3RoaXMudXNlVW5hZ2dyZWdhdGVk QmVlcGVyJiZuZXcgTGl2ZU1lc3NhZ2VSZWNlaXZlcigndW5hZ2dyZWdhdGVkX2Jl ZXAnKS5zZXRBcHBJZCh0aGlzLkJFRVBFUl9BUFBJRCkuc2V0SGFuZGxlcihmdW5j dGlvbihhKXshdGhpcy5pc05vdGlmSmV3ZWxPcGVuKCkmJnRoaXMuYmVlcGVyLmZy b21NZXNzYWdlKGEpO30uYmluZCh0aGlzKSkucmVnaXN0ZXIoKTt9LF9pbml0Tm90 aWZOZWdhdGl2ZUZlZWRiYWNrOmZ1bmN0aW9uKCl7dGhpcy5ub3RpZlhMaXN0PW51 bGw7dGhpcy5ub3RpZlhMaXN0PXdpbmRvdy5Ob3RpZlhMaXN0O3RoaXMubm90aWZY TGlzdC5pbml0KHRoaXMpO3RoaXMuYWxlcnRMaXN0LnNldEZpbHRlckZuKHRoaXMu bm90aWZYTGlzdC5maWx0ZXJTdG9yZUNsaWNrZWQpO1RvZ2dsZXIubGlzdGVuKCdo aWRlJywkKHRoaXMud3JhcHBlcklEKSxmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiB0 aGlzLm5lZ2F0aXZlTm90aWZzKWlmKGEpdGhpcy5uZWdhdGl2ZU5vdGlmc1thXSBp bnN0YW5jZW9mIE5lZ2F0aXZlTm90aWYmJnRoaXMubmVnYXRpdmVOb3RpZnNbYV0u cmVzZXQoKTt9LmJpbmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKCdub3RpZi9u ZWdhdGl2ZUNhbmNlbCcsZnVuY3Rpb24oYSxiKXt0aGlzLm5lZ2F0aXZlTm90aWZz W2IuaWRdJiZ0aGlzLm5lZ2F0aXZlTm90aWZzW2IuaWRdLnJlc3RvcmUoKTt9LmJp bmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKCdub3RpZi9uZWdhdGl2ZUNvbmZp cm1lZCcsZnVuY3Rpb24oYSxiKXt0aGlzLm5lZ2F0aXZlTm90aWZzW2IuaWRdJiZ0 aGlzLm5lZ2F0aXZlTm90aWZzW2IuaWRdLm9uVHVybmVkT2ZmKCk7dGhpcy5hbGVy dExpc3QudG9nZ2xlTm90aWZzU2ltaWxhclRvKGIuaWQsdHJ1ZSx0cnVlKTt0aGlz Ll9oaWRlT3ZlcmZsb3coKTt0aGlzLl9oYW5kbGVTY3JvbGwoKTt9LmJpbmQodGhp cykpO0FyYml0ZXIuc3Vic2NyaWJlKCdub3RpZi9uZWdhdGl2ZVVuZGlkJyxmdW5j dGlvbihhLGIpe3RoaXMubmVnYXRpdmVOb3RpZnNbYi5pZF0mJnRoaXMubmVnYXRp dmVOb3RpZnNbYi5pZF0ub25VbmRpZCgpO3RoaXMuYWxlcnRMaXN0LnRvZ2dsZU5v dGlmc1NpbWlsYXJUbyhiLmlkLGZhbHNlLHRydWUpO3RoaXMuX2hpZGVPdmVyZmxv dygpO30uYmluZCh0aGlzKSk7QXJiaXRlci5zdWJzY3JpYmUoJ25vdGlmL25lZ2F0 aXZlTWFya2VkU3BhbScsZnVuY3Rpb24oYSxiKXt0aGlzLm5lZ2F0aXZlTm90aWZz W2IuaWRdJiZ0aGlzLm5lZ2F0aXZlTm90aWZzW2IuaWRdLm9uTWFya2VkU3BhbSgp O30uYmluZCh0aGlzKSk7QXJiaXRlci5zdWJzY3JpYmUoJ25vdGlmL25lZ2F0aXZl Rmlyc3RSZWNlaXB0WWVzJyxmdW5jdGlvbihhLGIpe3RoaXMubmVnYXRpdmVOb3Rp ZnNbYi5pZF0mJnRoaXMubmVnYXRpdmVOb3RpZnNbYi5pZF0ub25GaXJzdFJlY2Vp cHRZZXMoKTt0aGlzLmFsZXJ0TGlzdC50b2dnbGVOb3RpZnNTaW1pbGFyVG8oYi5p ZCxmYWxzZSx0cnVlKTt9LmJpbmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKCdu b3RpZi9uZWdhdGl2ZUZpcnN0UmVjZWlwdE5vJyxmdW5jdGlvbihhLGIpe3RoaXMu bmVnYXRpdmVOb3RpZnNbYi5pZF0mJnRoaXMubmVnYXRpdmVOb3RpZnNbYi5pZF0u b25GaXJzdFJlY2VpcHRObygpO3RoaXMuYWxlcnRMaXN0LnRvZ2dsZU5vdGlmc1Np bWlsYXJUbyhiLmlkLGZhbHNlLHRydWUpO30uYmluZCh0aGlzKSk7dGhpcy5hbGVy dExpc3Quc3Vic2NyaWJlKE5vdGlmaWNhdGlvbkxpc3QuSU5TRVJUSU9OX1RZUEUs ZnVuY3Rpb24oYSxiKXt0aGlzLl91cGRhdGVGaXJzdFJlY2VpcHQoYik7dmFyIGM9 RE9NLnNjcnkoYi5vYmosJy5ub3RpZl94Jyk7aWYoYy5sZW5ndGg9PTEpdGhpcy5u ZWdhdGl2ZU5vdGlmc1tiLmlkXT1uZXcgTmVnYXRpdmVOb3RpZih0aGlzLGIpO30u YmluZCh0aGlzKSk7fSxfc2VuZElEczpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Y3x8 e307Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDsrK2UpZFsnYWxlcnRfaWRzWycrZSsn XSddPWFbZV07bmV3IEFzeW5jU2lnbmFsKFVSSShiKS5nZXRRdWFsaWZpZWRVUkko KS50b1N0cmluZygpLGQpLnNlbmQoKTt9LF93YWl0Rm9yRmV0Y2g6ZnVuY3Rpb24o YSl7cmV0dXJuIHRoaXMuY3VycmVudEZldGNoUmVxdWVzdCYmdGhpcy5mZXRjaExp c3RlbmVycy5wdXNoKGEuYmluZCh0aGlzKSk7fSxfbG9nSW1wcmVzc2lvbjpmdW5j dGlvbigpe3ZhciBhPXRoaXMuYWxlcnRMaXN0LmdldElkcygpO2lmKGEubGVuZ3Ro PT09MCYmdGhpcy5fd2FpdEZvckZldGNoKHRoaXMuX2xvZ0ltcHJlc3Npb24pKXJl dHVybjt0aGlzLmxvZ0ltcHJlc3Npb25JZHMoYSx0aGlzLk5PVElGX0pFV0VMX1JF Rik7fSxsb2dJbXByZXNzaW9uSWRzOmZ1bmN0aW9uKGEsYil7dGhpcy5zaG91bGRM

b2dJbXByZXNzaW9ucyYmdGhpcy5fc2VuZElEcyhhLCcvYWpheC9ub3RpZmljYXRp b25zL2ltcHJlc3Npb24ucGhwJyx7cmVmOmJ9KTt9LG1hcmtSZWFkOmZ1bmN0aW9u KGEsYil7dmFyIGM9IWhhc0FycmF5TmF0dXJlKGIpO2I9Yz90aGlzLmFsZXJ0TGlz dC5nZXRVbnNlZW5JZHMoKTpiLmZpbHRlcih0aGlzLmFsZXJ0TGlzdC5pc1VucmVh ZElkLmJpbmQodGhpcy5hbGVydExpc3QpKTtpZihiLmxlbmd0aCl7YSYmdGhpcy5f c2VuZElEcyhiLCcvYWpheC9ub3RpZmljYXRpb25zL21hcmtfcmVhZC5waHAnLHtz ZWVuOmM/MTowfSk7dmFyIGQ9YTtjP3RoaXMuYWxlcnRMaXN0Lm1hcmtTZWVuKGIp OnRoaXMuYWxlcnRMaXN0Lm1hcmtSZWFkKGIsZCk7fWMmJnRoaXMuX3dhaXRGb3JG ZXRjaCh0aGlzLm1hcmtSZWFkLmJpbmQodGhpcyxhKSk7fSxtYXJrQWxsUmVhZDpm dW5jdGlvbigpe3ZhciBhPXRoaXMuYWxlcnRMaXN0LmdldFVucmVhZElkcygpO3Ro aXMubWFya1JlYWQodHJ1ZSxhKTt9LF91cGRhdGVFcnJvckhhbmRsZXI6ZnVuY3Rp b24oYSl7fSxfdXBkYXRlVVJJOicvYWpheC9wcmVzZW5jZS91cGRhdGUucGhwJyxf dXBkYXRlOmZ1bmN0aW9uKGEpe2Euc2V0SGFuZGxlcih0aGlzLl9oYW5kbGVVcGRh dGUuYmluZCh0aGlzKSkuc2V0T3B0aW9uKCdzdXBwcmVzc0Vycm9yQWxlcnRzJyx0 cnVlKS5zZXRFcnJvckhhbmRsZXIodGhpcy5fdXBkYXRlRXJyb3JIYW5kbGVyLmJp bmQodGhpcykpLnNldERhdGEoe25vdGlmX2xhdGVzdDp0aGlzLmxhdGVzdF9ub3Rp Zl90aW1lLG5vdGlmX2xhdGVzdF9yZWFkOnRoaXMubGF0ZXN0X3JlYWRfbm90aWZf dGltZX0pLnNldFVSSSh0aGlzLl91cGRhdGVVUkkpLnNldEFsbG93Q3Jvc3NQYWdl VHJhbnNpdGlvbih0cnVlKTt9LF9oYW5kbGVVcGRhdGU6ZnVuY3Rpb24oYSl7dmFy IGI9YS5wYXlsb2FkLm5vdGlmaWNhdGlvbnM7aWYoIWIubm9fY2hhbmdlKXt0aGlz LnVwZGF0ZVRpbWU9YS5wYXlsb2FkLnRpbWU7dGhpcy5sYXRlc3Rfbm90aWZfdGlt ZT1iLmxhdGVzdF9ub3RpZjt0aGlzLmxhdGVzdF9yZWFkX25vdGlmX3RpbWU9Yi5s YXRlc3RfcmVhZF9ub3RpZjt0aGlzLl91cGRhdGVEaXNwbGF5RGVsYXllZCgpO3Ro aXMuYWxlcnRMaXN0Lmluc2VydE1hbnkoYi5ub3RpZmljYXRpb25zKTt9fSxfdXBk YXRlRGlzcGxheURlbGF5ZWQ6ZnVuY3Rpb24oKXtpZih0eXBlb2YgQmVlcGVyIT0n dW5kZWZpbmVkJyl7dGhpcy5iZWVwc0V4cGlyZWRUb2tlbj1BcmJpdGVyLnN1YnNj cmliZShOb3RpZmljYXRpb25zLkJFRVBTX0VYUElSRUQsdGhpcy5fdXBkYXRlRGlz cGxheS5iaW5kKHRoaXMpKTt9ZWxzZSB0aGlzLl91cGRhdGVEaXNwbGF5KCk7fSxf dXBkYXRlRGlzcGxheTpmdW5jdGlvbigpe2lmKCF0aGlzLmNvbnRlbnQpcmV0dXJu O3RoaXMuX3VwZGF0ZUNvdW50KCk7aWYodGhpcy5iZWVwc0V4cGlyZWRUb2tlbil0 aGlzLmJlZXBzRXhwaXJlZFRva2VuLnVuc3Vic2NyaWJlKCk7fSxfdXBkYXRlQ291 bnQ6ZnVuY3Rpb24oKXtBcmJpdGVyLmluZm9ybSgnamV3ZWwvY291bnQtdXBkYXRl ZCcse2pld2VsOidub3RpZmljYXRpb25zJyxjb3VudDp0aGlzLmFsZXJ0TGlzdC51 bnNlZW5Db3VudH0sQXJiaXRlci5CRUhBVklPUl9TVEFURSk7dGhpcy5faGlkZU92 ZXJmbG93KCk7fSxmZXRjaDpmdW5jdGlvbihhKXt0aGlzLl9zZW5kRmV0Y2hSZXF1 ZXN0KGEpO30sX2dldEZldGNoUXVlcnlEYXRhOmZ1bmN0aW9uKCl7dmFyIGE9e3Rp bWU6dGhpcy5sYXRlc3Rfbm90aWZfdGltZSx1c2VyOnRoaXMudXNlcix2ZXJzaW9u OnRoaXMuY2FjaGVfdmVyc2lvbixsb2NhbGU6RW52LmxvY2FsZX07aWYodGhpcy51 c2VJbmZpbml0ZVNjcm9sbClhLmVhcmxpZXN0X3RpbWU9dGhpcy5hbGVydExpc3Qu Z2V0RWFybGllc3ROb3RpZlRpbWUoKTtyZXR1cm4gYTt9LF9zZW5kRmV0Y2hSZXF1 ZXN0OmZ1bmN0aW9uKGEpe2lmKHRoaXMudXNlSW5maW5pdGVTY3JvbGwpe3RoaXMu X2luZmluaXRlU2Nyb2xsTm90aWY9bnVsbDt0aGlzLl9uZXdEYXRhRnJvbUluc2Vy dD1mYWxzZTt0aGlzLl90cnVuY2F0ZT10cnVlO312YXIgYj1VUkkoJy9hamF4L25v dGlmaWNhdGlvbnMvZ2V0LnBocCcpLGM9YXx8dGhpcy5sb2FkaW5nSW5kaWNhdG9y O2lmKHRoaXMuY3VycmVudEZldGNoUmVxdWVzdClyZXR1cm4gdHJ1ZTt0aGlzLnVh LmFkZF9ldmVudCgnZmV0Y2gnKTtiLnNldFF1ZXJ5RGF0YSh0aGlzLl9nZXRGZXRj aFF1ZXJ5RGF0YSgpKTt0aGlzLmN1cnJlbnRGZXRjaFJlcXVlc3Q9bmV3IEFzeW5j UmVxdWVzdCgpLnNldFVSSShiKS5zZXRTdGF0dXNFbGVtZW50KGMpLnNldE1ldGhv ZCgnR0VUJykuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0VGltZW91dEhhbmRsZXIoMzAw MDAsdGhpcy5mZXRjaEVycm9ySGFuZGxlci5iaW5kKHRoaXMpKS5zZXRIYW5kbGVy KHRoaXMuZmV0Y2hIYW5kbGVyLmJpbmQodGhpcykpLnNldEVycm9ySGFuZGxlcih0 aGlzLmZldGNoRXJyb3JIYW5kbGVyLmJpbmQodGhpcykpLnNldEFsbG93Q3Jvc3NQ YWdlVHJhbnNpdGlvbih0cnVlKTshdGhpcy5jdXJyZW50RmV0Y2hSZXF1ZXN0LnNl bmQoKSYmdGhpcy5mZXRjaEVycm9ySGFuZGxlcigpO3JldHVybiB0cnVlO30sZmV0 Y2hFcnJvckhhbmRsZXI6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50RmV0Y2hSZXF1 ZXN0PW51bGw7dGhpcy51YS5hZGRfZXZlbnQoJ2ZldGNoX2Vycm9yJyk7dGhpcy51 c2VJbmZpbml0ZVNjcm9sbCYmdGhpcy5fdXBkYXRlU2Nyb2xsRGF0YVN0cnVjdHVy ZXMoKTt9LGZldGNoSGFuZGxlcjpmdW5jdGlvbihhKXt0aGlzLnVhLmFkZF9ldmVu dCgnZmV0Y2hfc3VjY2VzcycpO3ZhciBiPWEuZ2V0UGF5bG9hZCgpO3RoaXMuYWxl cnRMaXN0Lmluc2VydE1hbnkoYi5ub3RpZmljYXRpb25zLHRydWUpO3RoaXMubG9h

ZGluZ0luZGljYXRvciYmQ1NTLmhpZGUodGhpcy5sb2FkaW5nSW5kaWNhdG9yKTt0 aGlzLmxvYWRpbmdJbmRpY2F0b3I9bnVsbDt0aGlzLmN1cnJlbnRGZXRjaFJlcXVl c3Q9bnVsbDt0aGlzLmZldGNoPWJhZ29maG9sZGluZztpZih0aGlzLmZldGNoTGlz dGVuZXJzKXtmb3IodmFyIGM9MDtjPHRoaXMuZmV0Y2hMaXN0ZW5lcnMubGVuZ3Ro O2MrKyl0aGlzLmZldGNoTGlzdGVuZXJzW2NdKCk7dGhpcy5mZXRjaExpc3RlbmVy cz1bXTt9d2luZG93LkFyYml0ZXJNb25pdG9yJiZBcmJpdGVyLmluZm9ybSgnbm90 aWZzL2ZldGNoZWQnLCcnLEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUpO3ZhciBkPWIu Z2VuZXJhdGVkLGU9TWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpLzEw MDApO2lmKGUtZD4xNSlkPWU7Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnbGl2 ZS10aW1lcicsZnVuY3Rpb24oKXtMaXZlVGltZXIucmVzdGFydChkKTtMaXZlVGlt ZXIuc3RhcnRMb29wKDApO30pO2lmKHRoaXMudXNlSW5maW5pdGVTY3JvbGwpe2lm KGlzX2VtcHR5KGIubm90aWZpY2F0aW9ucyl8fCF0aGlzLl9uZXdEYXRhRnJvbUlu c2VydCl7dGhpcy5fbm9Nb3JlTm90aWZpY2F0aW9ucygpO31lbHNlIENTUy5zaG93 KHRoaXMuX21vcmVQYWdlcik7dGhpcy5fdXBkYXRlU2Nyb2xsRGF0YVN0cnVjdHVy ZXMoKTtpZih0aGlzLmlzTm90aWZKZXdlbE9wZW4oKSYmdGhpcy5hZnRlckZpcnN0 RmV0Y2gpdGhpcy5hbmltYXRlPXRydWU7dGhpcy5hZnRlckZpcnN0RmV0Y2g9dHJ1 ZTt9dGhpcy5faGlkZU92ZXJmbG93KCk7fSxfbm9Nb3JlTm90aWZpY2F0aW9uczpm dW5jdGlvbigpe0NTUy5oaWRlKHRoaXMuX21vcmVQYWdlcik7dGhpcy51c2VJbmZp bml0ZVNjcm9sbD1mYWxzZTt9LF9tZXJnZU5vdGlmaWNhdGlvbjpmdW5jdGlvbihh LGIsYyxkKXt2YXIgZT0hdGhpcy5hbGVydExpc3QuaXNVbnJlYWRJZChhKTt0aGlz LmFsZXJ0TGlzdC5pbnNlcnQoYSxiLGMsdHJ1ZSxudWxsLGR8fG51bGwpO3RoaXMu bGF0ZXN0X25vdGlmX3RpbWU9MDtpZihlKXRoaXMuX3VwZGF0ZUNvdW50KCk7dmFy IGY9dGhpcy5hbGVydExpc3QuZ2V0RG9tT2JqKGEpO2lmKGYpQm9vdGxvYWRlci5s b2FkQ29tcG9uZW50cygnbGl2ZS10aW1lcicsZnVuY3Rpb24oKXtMaXZlVGltZXIu YWRkVGltZVN0YW1wcyhmKTt9KTt9LF9oYW5kbGVOb3RpZmljYXRpb25Nc2c6ZnVu Y3Rpb24oYSxiKXtpZih0aGlzLmlzTm90aWZKZXdlbE9wZW4oKSl7dmFyIGM9e3R5 cGU6YSxkYXRhOmJ9O3RoaXMucXVldWVkTm90aWZpY2F0aW9ucy5wdXNoKGMpO31l bHNlIHRoaXMuX2Rpc3BsYXlOb3RpZmljYXRpb24oYSxiKTt9LF9kaXNwbGF5Tm90 aWZpY2F0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5vYmo7aWYodHlwZW9mIHRo aXMudXNlRGVza3RvcE5vdGlmaWNhdGlvbnM9PSd1bmRlZmluZWQnKXRoaXMudXNl RGVza3RvcE5vdGlmaWNhdGlvbnM9dGhpcy5hbGxvd0Rlc2t0b3BOb3RpZmljYXRp b25zJiZ3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucyYmd2luZG93LndlYmtpdE5v dGlmaWNhdGlvbnMuY2hlY2tQZXJtaXNzaW9uKCk9PT0wO2lmKHRoaXMudXNlRGVz a3RvcE5vdGlmaWNhdGlvbnMpQm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnZGVz a3RvcC1ub3RpZmljYXRpb25zJyxmdW5jdGlvbigpe0Rlc2t0b3BOb3RpZmljYXRp b25zLmFkZE5vdGlmaWNhdGlvbihjLmFsZXJ0X2lkKTt9KTtpZihjLm1hcmt1cCl7 dGhpcy5fbWVyZ2VOb3RpZmljYXRpb24oYy5hbGVydF9pZCxjLnRpbWUsYy5tYXJr dXAsYy5hbHRfaWR8fG51bGwpO3JlcXVpcmVMYXp5KFsnTm90aWZpY2F0aW9uU291 bmQnXSxmdW5jdGlvbihkKXtpZih0aGlzLl9ub3RpZlNvdW5kPT09bnVsbCl0aGlz Ll9ub3RpZlNvdW5kPW5ldyBkKHRoaXMucmVjZWl2ZVNvdW5kUGF0aCk7dGhpcy5f bm90aWZTb3VuZC5wbGF5KCk7fS5iaW5kKHRoaXMpKTt9ZWxzZSB0aGlzLl9wb2xs ZXIucmVxdWVzdE5vdygpO30sX2hhbmRsZU5vdGlmaWNhdGlvbnNSZWFkTXNnOmZ1 bmN0aW9uKGEsYil7dmFyIGM9Yi5vYmo7aWYodHlwZW9mIEJlZXBlciE9J3VuZGVm aW5lZCcpQmVlcGVyLmdldEluc3RhbmNlKCkubWFya1JlYWQoZmFsc2UsYy5hbGVy dF9pZHMpO3RoaXMubWFya1JlYWQoZmFsc2UsYy5hbGVydF9pZHMpO3RoaXMuYmVl cGVyJiZ0aGlzLmJlZXBlci5mYWRlT3V0QmVlcHMoYi5vYmouYWxlcnRfaWRzKTt9 LF9oYW5kbGVOb3RpZmljYXRpb25zU2Vlbk1zZzpmdW5jdGlvbihhLGIpe2lmKCF0 aGlzLnVuc2VlblZzVW5yZWFkKXt0aGlzLl9oYW5kbGVOb3RpZmljYXRpb25zUmVh ZE1zZyhhLGIpO3JldHVybjt9dmFyIGM9Yi5vYmo7aWYodHlwZW9mIEJlZXBlciE9 J3VuZGVmaW5lZCcpQmVlcGVyLmdldEluc3RhbmNlKCkubWFya1JlYWQoZmFsc2Us Yy5hbGVydF9pZHMpO3RoaXMuYWxlcnRMaXN0Lm1hcmtTZWVuKGMuYWxlcnRfaWRz KTt0aGlzLmJlZXBlciYmdGhpcy5iZWVwZXIuZmFkZU91dEJlZXBzKGIub2JqLmFs ZXJ0X2lkcyk7fSxfaGlkZU92ZXJmbG93OmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNO b3RpZkpld2VsT3BlbigpKXJldHVybjt2YXIgYT1ET00uc2NyeSgkKCdmYk5vdGlm aWNhdGlvbnNMaXN0JyksJy5ub3RpZmljYXRpb24nKTt0aGlzLnNjcm9sbGFibGVB cmVhTm9kZT10aGlzLnNjcm9sbGFibGVBcmVhTm9kZXx8RE9NLnNjcnkodGhpcy5q ZXdlbEZseW91dCwnLnVpU2Nyb2xsYWJsZUFyZWEnKVswXTt2YXIgYj0yMCxjPUNT Uy5oYXNDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ3RpbnlWaWV3cG9y dCcpJiYhQ1NTLmhhc0NsYXNzKGRvY3VtZW50LmJvZHksJ2ZpeGVkQm9keScpO2lm KCFhLmxlbmd0aHx8Yyl7U3R5bGUuc2V0KHRoaXMuc2Nyb2xsYWJsZUFyZWFOb2Rl

LCdoZWlnaHQnLCcxMDAlJyk7dGhpcy5ub3RpZkxvZ2dlci5yYXRlKHRoaXMuU0NS T0xMX09GRl9USU5ZLGMpO3JldHVybjt9dmFyIGQ9dGhpcy5zY3JvbGxhYmxlQXJl YU5vZGV8fGFbMF0sZT1WZWN0b3IyLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnkt VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24oZCwndmlld3BvcnQnKS55LVZlY3Rv cjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5mb290ZXIpLnktNSxmPWUsZz0w O2Zvcig7ZzxhLmxlbmd0aCYmZj4wOysrZylpZihDU1Muc2hvd24oYVtnXSkpZi09 VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyhhW2ddKS55O3ZhciBoPTUzMCxp PU1hdGgubWluKGgsZS1NYXRoLm1heChmLDApKTtpZihmPj0wJiZpPGgpe2lmKCF0 aGlzLnVzZUluZmluaXRlU2Nyb2xsfHwodGhpcy5iZWVwZXImJnRoaXMuYmVlcGVy Lmhhc0JlZXBzKCkpKXtpPScxMDAlJzt9ZWxzZXtpZih0aGlzLl90cnVuY2F0ZSYm YS5sZW5ndGg+PTUpaS09YjtpKz0ncHgnO319ZWxzZSBpKz0ncHgnO2lmKHRoaXMu dXNlSW5maW5pdGVTY3JvbGwmJnRoaXMuYW5pbWF0ZSYmaSE9JzEwMCUnKXt0aGlz LmFuaW1hdGlvbiYmdGhpcy5hbmltYXRpb24uc3RvcCgpO3RoaXMuYW5pbWF0aW9u PWFuaW1hdGlvbih0aGlzLnNjcm9sbGFibGVBcmVhTm9kZSkudG8oJ2hlaWdodCcs aSkuZHVyYXRpb24oMjAwKS5nbygpO31lbHNle3ZhciBqPVNjcm9sbGFibGVBcmVh LmdldEluc3RhbmNlKHRoaXMuc2Nyb2xsYWJsZUFyZWFOb2RlKTtqJiZqLnNob3dT Y3JvbGxiYXIuYmluZChqKS5kZWZlcigpO1N0eWxlLnNldCh0aGlzLnNjcm9sbGFi bGVBcmVhTm9kZSwnaGVpZ2h0JyxpKTt9fSxfdXBkYXRlRmlyc3RSZWNlaXB0OmZ1 bmN0aW9uKGEpe3ZhciBiPWEub2JqLmdldEF0dHJpYnV0ZSgnZGF0YS1hcHBpZCcp LGM9RE9NLnNjcnkoYS5vYmosJy5maXJzdF9yZWNlaXB0X2RpdicpO2lmKGImJmMu bGVuZ3RoPT0xKXtpZih0aGlzLmZpcnN0UmVjZWlwdE1hcFtiXSl7aWYoYS5pZCE9 dGhpcy5maXJzdFJlY2VpcHRNYXBbYl0uaWQmJnRoaXMuZmlyc3RSZWNlaXB0TWFw W2JdLnRpbWU+YS50aW1lKXJldHVybjtDU1MucmVtb3ZlQ2xhc3ModGhpcy5maXJz dFJlY2VpcHRNYXBbYl0ub2JqLCdmaXJzdF9yZWNlaXB0Jyk7fXRoaXMuZmlyc3RS ZWNlaXB0TWFwW2JdPWE7Q1NTLmFkZENsYXNzKGEub2JqLCdmaXJzdF9yZWNlaXB0 Jyk7fX0saXNOb3RpZkpld2VsT3BlbjpmdW5jdGlvbigpe3ZhciBhPVRvZ2dsZXIu Z2V0SW5zdGFuY2UodGhpcy53cmFwcGVyKS5nZXRBY3RpdmUoKTtyZXR1cm4gKGE9 PT10aGlzLndyYXBwZXImJkNTUy5oYXNDbGFzcyhhLCdvcGVuVG9nZ2xlcicpKTt9 fSk7dmFyIE9yaWdpbmFsTm90aWZpY2F0aW9ucz1Ob3RpZmljYXRpb25zOwpfX2Qo ImxlZ2FjeTpub3RpZi1iZWVwZXIiLFsiTm90aWZCZWVwZXIiXSxmdW5jdGlvbihh LGIsYyxkKXthLk5vdGlmQmVlcGVyPWIoJ05vdGlmQmVlcGVyJyk7fSwzKTsKX19k KCJQYWdlc1ZvaWNlQmFyIixbIiQiLCJBcmJpdGVyIiwiQXN5bmNSZXF1ZXN0Iiwi Q1NTIiwiQ2hhbm5lbENvbnN0YW50cyIsIkRPTSIsIlBhZ2VUcmFuc2l0aW9ucyJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCckJyksaD1iKCdBcmJpdGVy JyksaT1iKCdBc3luY1JlcXVlc3QnKSxqPWIoJ0NTUycpLGs9YignQ2hhbm5lbENv bnN0YW50cycpLGw9YignRE9NJyksbT1iKCdQYWdlVHJhbnNpdGlvbnMnKSxuPSdQ YWdlc1ZvaWNlQmFyL3RvZ2dsZScsbz0nUGFnZXNWb2ljZUJhci9pbml0aWFsaXpl ZCcscD0nUGFnZXNWb2ljZUJhci9zd2l0Y2hWb2ljZScscT0ncGFnZV90cmFuc2l0 aW9uJyxyPSdwYWdlc192b2ljZV9iYXJfc3luYycscz1udWxsLHQ9bnVsbCx1PWZh bHNlLHY9ZmFsc2U7ZnVuY3Rpb24gdygpe3Y9IXY7ai5jb25kaXRpb25DbGFzcyhk b2N1bWVudC5ib2R5LCdoYXNWb2ljZUJhcicsdik7fWZ1bmN0aW9uIHgoZGEsZWEp e25ldyBpKCcvYWpheC9wYWdlcy9zd2l0Y2hfdm9pY2UucGhwJykuc2V0RGF0YShl YSkuc2V0SGFuZGxlcihmdW5jdGlvbihmYSl7YmEoKTt9KS5zZW5kKCk7fWZ1bmN0 aW9uIHkoKXtzPW51bGw7fWZ1bmN0aW9uIHooZGEsZWEpe2lmKGVhLm9iai5wcm9m aWxlX2lkJiZlYS5vYmoucHJvZmlsZV9pZD09cyliYSgpO31mdW5jdGlvbiBhYShk YSl7aC5zdWJzY3JpYmUobyxkYSk7fWZ1bmN0aW9uIGJhKCl7bS5nZXROZXh0VVJJ KCkuZ28oKTt9dmFyIGNhPXtpbml0Vm9pY2VCYXI6ZnVuY3Rpb24oKXtpZih1KXJl dHVybjt0PWcoJ3BhZ2VzVm9pY2VCYXJDb250ZW50Jyk7dj1qLmhhc0NsYXNzKGRv Y3VtZW50LmJvZHksJ2hhc1ZvaWNlQmFyJyk7aC5zdWJzY3JpYmUobix3KTtoLnN1 YnNjcmliZShwLHgpO2guc3Vic2NyaWJlKHEseSk7aC5zdWJzY3JpYmUoay5nZXRB cmJpdGVyVHlwZShyKSx6KTt1PXRydWU7aC5pbmZvcm0obyxudWxsLGguQkVIQVZJ T1JfU1RBVEUpO30sdXBkYXRlOmZ1bmN0aW9uKGRhLGVhKXthYShmdW5jdGlvbigp e3M9ZWE7bC5zZXRDb250ZW50KHQsZGEpO30pO319O2UuZXhwb3J0cz1jYTt9KTsK X19kKCJUeXBlYWhlYWRTZWFyY2hTcG9uc29yZWQiLFsiZXZlbnQtZXh0ZW5zaW9u cyIsIkFyYml0ZXIiLCJDU1MiLCJET00iLCJVUkkiLCJjb3B5UHJvcGVydGllcyIs InR4Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMn KTt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdDU1MnKSxpPWIoJ0RPTScpLGo9Yign VVJJJyksaz1iKCdjb3B5UHJvcGVydGllcycpLGw9YigndHgnKTtmdW5jdGlvbiBt KG4pe3RoaXMuX3R5cGVhaGVhZD1uO31tLmF1Y3Rpb25PcHRpb25zPXtyZXJhbmtp bmdTdHJhdGVneTo0LG5ldmVyUmVyYW5rVG9Ub3AxOnRydWUsbWluUXVlcnlMZW5n

dGhGb3JUb3BSZXN1bHQ6MixtaW5Cb290c3RyYXBTY29yZUZvclRvcFJlc3VsdDow LG1heE51bWJlckFkczozLG1heE51bWJlclJlbW92ZWRSZXN1bHRzOjIsbWF4TnVt YmVyUmVzdWx0c0FuZEFkczo4LHYxOjEwMDAwLHYyOjAsZGVidWc6ZmFsc2UsYm9v dHN0cmFwOnRydWV9O20ucXVlcnk9bnVsbDttLmhhc1RvcFJlc3VsdDU9ZnVuY3Rp b24obixvLHApe2lmKHAucmVyYW5raW5nU3RyYXRlZ3khPTUpcmV0dXJuIGZhbHNl O2lmKG49PW51bGwpcmV0dXJuIGZhbHNlO2lmKG4udHlwZT09J3VzZXInKXJldHVy biBmYWxzZTtpZigobi5ib290c3RyYXBwZWQ/cC52MTpwLnYyKTxvKXJldHVybiBm YWxzZTtyZXR1cm4gdHJ1ZTt9O20uaGFzVG9wUmVzdWx0ND1mdW5jdGlvbihuLG8s cCl7aWYocC5yZXJhbmtpbmdTdHJhdGVneSE9NClyZXR1cm4gZmFsc2U7aWYobz09 bnVsbClyZXR1cm4gZmFsc2U7aWYoby5sZW5ndGg8cC5taW5RdWVyeUxlbmd0aEZv clRvcFJlc3VsdClyZXR1cm4gZmFsc2U7aWYobj09bnVsbClyZXR1cm4gZmFsc2U7 aWYoIW4uYm9vdHN0cmFwcGVkKXJldHVybiBmYWxzZTtpZihuLmluZGV4PT1udWxs KXJldHVybiBmYWxzZTtpZihuLmluZGV4Pj1wLm1pbkJvb3RzdHJhcFNjb3JlRm9y VG9wUmVzdWx0KXJldHVybiBmYWxzZTtpZihuLnR5cGU9PSd1c2VyJylyZXR1cm4g ZmFsc2U7cmV0dXJuIHRydWU7fTttLmdldE9yaWdpbmFsT3JnYW5pY3M9ZnVuY3Rp b24obil7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG8pe3JldHVybiB7dWlkOm8udWlk LHRleHQ6by50ZXh0LHR5cGU6bS5nZXRSZWFsVHlwZShvKSxzb3VyY2U6by5ib290 c3RyYXBwZWQ/MTowLGluZGV4Om8uaW5kZXh9O30pO307bS5zZXREZWJ1Z1N0cmlu Zz1mdW5jdGlvbihuLG8pe2lmKCFtLmF1Y3Rpb25PcHRpb25zLmRlYnVnKXJldHVy bjtuLmRlYnVnX3N0cmluZz1vO307bS5zZXRUb3BSZXN1bHQ9ZnVuY3Rpb24obil7 blswXS5yZW5kZXJUeXBlT3ZlcnJpZGU9dHJ1ZTtuWzBdLm9yaWdfcmVuZGVyX3R5 cGU9blswXS5yZW5kZXJfdHlwZTtuWzBdLnJlbmRlcl90eXBlPSd0b3BoaXQnO307 bS5ydW5BdWN0aW9uPWZ1bmN0aW9uKG4sbyxwLHEpe249bi5zbGljZSgwLHEubWF4 TnVtYmVyUmVzdWx0c0FuZEFkcyk7aWYobi5sZW5ndGg9PT0wKXJldHVybiBuO249 bS5pbml0UmVzdWx0cyhuKTtpZihtLmhhc1RvcFJlc3VsdDQoblswXSxtLnF1ZXJ5 LHEpKW0uc2V0VG9wUmVzdWx0KG4pO3ZhciByO2lmKCFvKXtyPW0uYnVja2V0UmVz dWx0cyhuKTtyZXR1cm4gci5yZXN1bHRzO312YXIgcz1tLnByZXBhcmVBbmRTb3J0 QWRzKG4sbyxwKSx0PW0uc2VsZWN0QWRzKG4scyxxKTtpZih0Lmxlbmd0aD09PTAp e3I9bS5idWNrZXRSZXN1bHRzKG4pO3JldHVybiByLnJlc3VsdHM7fXZhciB1PXRb MF0uc192YWx1ZTtpZihtLmhhc1RvcFJlc3VsdDUoblswXSx1LHEpKW0uc2V0VG9w UmVzdWx0KG4pO3ZhciB2PTA7Zm9yKHZhciB3PTA7dzx0Lmxlbmd0aDsrK3cpaWYo dFt3XS5zX3RhcmdldCE9dFt3XS51aWQpdisrO249bi5zbGljZSgwLHEubWF4TnVt YmVyUmVzdWx0c0FuZEFkcy12KTt2YXIgeD1tLmJ1Y2tldFJlc3VsdHMobikseT1t LnJlcmFua0Fkcyh4LnJlc3VsdHMsdCx4LmJ1Y2tldHMscSk7cmV0dXJuIHk7fTtt LmJ1Y2tldFJlc3VsdHM9ZnVuY3Rpb24obil7dmFyIG8scCxxLHIscz1bXSx0PXt9 O3A9bi5sZW5ndGg7Zm9yKG89MDtvPHA7bysrKXtxPW5bb107cj1xLnJlbmRlcl90 eXBlfHxxLnR5cGU7aWYoIXQuaGFzT3duUHJvcGVydHkocikpe3Rbcl09cy5sZW5n dGg7cy5wdXNoKFtdKTt9c1t0W3JdXS5wdXNoKHEpO312YXIgdT1bXSx2PXt9O3A9 cy5sZW5ndGg7Zm9yKG89MDtvPHA7KytvKXtxPXNbb11bMF07cj1xLnJlbmRlcl90 eXBlfHxxLnR5cGU7dltyXT11Lmxlbmd0aDt1PXUuY29uY2F0KHNbb10pO31yZXR1 cm4ge3Jlc3VsdHM6dSxidWNrZXRzOnZ9O307bS5wcmVwYXJlQW5kU29ydEFkcz1m dW5jdGlvbihuLG8scCl7aWYoIW8pcmV0dXJuIFtdO3ZhciBxPVtdLHI9bi5sZW5n dGg7Zm9yKHZhciBzPTA7czxyO3MrKyl7dmFyIHQ9bltzXTtpZihvW3QudWlkXSlm b3IodmFyIHUgaW4gb1t0LnVpZF0pe3ZhciB2PW9bdC51aWRdW3VdO2lmKHAmJnAu aGFzT3duUHJvcGVydHkodi51aWQpKWNvbnRpbnVlO3EucHVzaCh2KTt9fXEuc29y dChmdW5jdGlvbih3LHgpe3JldHVybiB4LnNfdmFsdWUtdy5zX3ZhbHVlO30pO3Jl dHVybiBxO307bS5zZWxlY3RBZHM9ZnVuY3Rpb24obixvLHApe3ZhciBxPU1hdGgu bWluKHAubWF4TnVtYmVyQWRzLHAubWF4TnVtYmVyUmVtb3ZlZFJlc3VsdHMrcC5t YXhOdW1iZXJSZXN1bHRzQW5kQWRzLW4ubGVuZ3RoKSxyPVtdLHM9e30sdD1uLm1h cChmdW5jdGlvbihjYSl7cmV0dXJuIFN0cmluZyhjYS51aWQpO30pLHU9e30sdj17 fSx3PS0xLHg9ZmFsc2UseT0wO2Zvcih2YXIgej0wO3o8by5sZW5ndGg7eisrKXtp ZihyLmxlbmd0aD49cSl7Zm9yKHZhciBhYT16O2FhPG8ubGVuZ3RoO2FhKyspbS5z ZXREZWJ1Z1N0cmluZyhvW2FhXSwnZmlsdGVyZWQ6ICcrcSsnIGFkcyBhbHJlYWR5 IHNlbGVjdGVkJyk7YnJlYWs7fXdoaWxlKHkrdC5sZW5ndGg+PXAubWF4TnVtYmVy UmVzdWx0c0FuZEFkcyl3PXQucG9wKCk7aWYodS5oYXNPd25Qcm9wZXJ0eSh3KSl4 PXRydWU7dmFyIGJhPW9bel07aWYoeCYmYmEuc190YXJnZXQhPWJhLnVpZCl7bS5z ZXREZWJ1Z1N0cmluZyhiYSwnZmlsdGVyZWQ6IGxhc3Qgb3JnYW5pYyAnK3crJyBp cyB0YXJnZXRlZCcpO2NvbnRpbnVlO31pZihiYS5zX3RhcmdldCE9YmEudWlkJiZ0 LmluZGV4T2YoU3RyaW5nKGJhLnVpZCkpIT0tMSl7bS5zZXREZWJ1Z1N0cmluZyhi YSwnZmlsdGVyZWQ6IG9yZ2FuaWMgJytiYS51aWQrJyB0YXJnZXRzIGFub3RoZXIg

b3JnYW5pYyAnK2JhLnNfdGFyZ2V0KTtjb250aW51ZTt9aWYocy5oYXNPd25Qcm9w ZXJ0eShiYS5zX2FjY291bnQpKXttLnNldERlYnVnU3RyaW5nKGJhLCdmaWx0ZXJl ZDogYWQgYWNjb3VudCAnK2JhLnNfYWNjb3VudCsnIGFscmVhZHkgc2VsZWN0ZWQn KTtjb250aW51ZTt9aWYodi5oYXNPd25Qcm9wZXJ0eShiYS51aWQpKXttLnNldERl YnVnU3RyaW5nKGJhLCdmaWx0ZXJlZDogYWQgcHJvbW90ZWQgaWQgJytiYS51aWQr JyBhbHJlYWR5IHNlbGVjdGVkJyk7Y29udGludWU7fWlmKHQuaW5kZXhPZihTdHJp bmcoYmEuc190YXJnZXQpKT09LTEpaWYoYmEuc190YXJnZXQhPWJhLnVpZHx8YmEu c190YXJnZXQhPXcpe20uc2V0RGVidWdTdHJpbmcoYmEsJ2ZpbHRlcmVkOiB0YXJn ZXRlZCBvcmdhbmljICcrYmEuc190YXJnZXQrJyB3aWxsIGdvIGF3YXkgJysncHJv bW90ZWQgaWQgJytiYS51aWQrJyBsYXN0IG9yZ2FuaWMgJyt3KTtjb250aW51ZTt9 bS5zZXREZWJ1Z1N0cmluZyhiYSwnc2VsZWN0ZWQnKTtyLnB1c2goYmEpO3NbYmEu c19hY2NvdW50XT10cnVlO3VbYmEuc190YXJnZXRdPXRydWU7dltiYS51aWRdPXRy dWU7aWYoYmEuc190YXJnZXQhPWJhLnVpZCkrK3k7fXJldHVybiByO307bS5maW5h bGl6ZUFkPWZ1bmN0aW9uKG4sbyxwKXt2YXIgcT0iQmVyc3BvbnNvciI7bi5yYW5r VHlwZT1uLnJhbmtUeXBlfHxuLnJlbmRlcl90eXBlfHxuLnR5cGU7aWYobi5zX3Rh cmdldD09bi51aWQpe28uc190b2tlbj1uLnNfdG9rZW47by5tZXNzYWdlPW4uc19t ZXNzYWdlO2lmKHAucmVyYW5raW5nU3RyYXRlZ3k9PT0wKW8uc3VidGV4dE92ZXJy aWRlPW8uc3VidGV4dD9vLnN1YnRleHQrJyBceEI3ICcrcTpxO2lmKG4ucGF0aCl7 by5wYXRoT3ZlcnJpZGU9dHJ1ZTtvLm9yaWdfcGF0aD1vLnBhdGg7by5wYXRoPW4u cGF0aDt9by5pc19zZWxmPXRydWU7fWVsc2V7bi5tZXNzYWdlPW4uc19tZXNzYWdl O24uc3VidGV4dE92ZXJyaWRlPW51bGw7aWYocC5yZXJhbmtpbmdTdHJhdGVneT09 PTApbi5zdWJ0ZXh0T3ZlcnJpZGU9bi5zdWJ0ZXh0P24uc3VidGV4dCsnIFx4Qjcg JytxOnE7aWYocC5kZWJ1Zyl7aWYoIW4uc3VidGV4dE92ZXJyaWRlJiZuLnN1YnRl eHQpbi5zdWJ0ZXh0T3ZlcnJpZGU9bi5zdWJ0ZXh0O2lmKG4uc3VidGV4dE92ZXJy aWRlKXtuLnN1YnRleHRPdmVycmlkZSs9JyBceEI3IChEZWJ1ZzogJytvLnRleHQr JyknO31lbHNlIG4uc3VidGV4dE92ZXJyaWRlPScoRGVidWc6ICcrby50ZXh0Kycp Jzt9bi50eXBlPW8udHlwZTtuLnJlbmRlcl90eXBlPW8ucmVuZGVyX3R5cGU7bi5p c19zZWxmPWZhbHNlO319O20uYnVpbGRSZXN1bHRJbmRpY2VzPWZ1bmN0aW9uKG4p e3ZhciBvPXt9LHA9bi5sZW5ndGg7Zm9yKHZhciBxPTA7cTxwO3ErKylvW25bcV0u dWlkXT1xO3JldHVybiBvO307bS5yZXJhbmtNZXRob2QwPWZ1bmN0aW9uKG4sbyxw LHEpe3ZhciByPW0uYnVpbGRSZXN1bHRJbmRpY2VzKG4pO2Zvcih2YXIgcz1vLmxl bmd0aC0xO3M+PTA7cy0tKXt2YXIgdD1vW3NdLHU9clt0LnNfdGFyZ2V0XSx2PW5b dV07bS5maW5hbGl6ZUFkKHQsdixxKTt2YXIgdz1mYWxzZTtpZih0LnVpZD09dC5z X3RhcmdldCl7dz1tLnByb21vdGVTZWxmUHJvbW90ZWRSZXN1bHQobix1LHAscSk7 fWVsc2V7bS5pbnNlcnRBZFRvVG9wT2ZTZWN0aW9uKG4sdixwLHQscSk7dz10cnVl O31pZih3KXI9bS5idWlsZFJlc3VsdEluZGljZXMobik7fX07bS5wcm9tb3RlU2Vs ZlByb21vdGVkUmVzdWx0PWZ1bmN0aW9uKG4sbyxwLHEpe3ZhciByPW5bb10scz1y LnJlbmRlcl90eXBlfHxyLnR5cGUsdD1wW3NdO2lmKHEubmV2ZXJSZXJhbmtUb1Rv cDEmJnQ9PT0wKXQ9MTt2YXIgdT1mYWxzZTtpZihvPnQpe24uc3BsaWNlKHQsMCxu LnNwbGljZShvLDEpWzBdKTt1PXRydWU7fXJldHVybiB1O307bS5wcm9tb3RlU2Vs ZlByb21vdGVkUmVzdWx0VG9Ub3A9ZnVuY3Rpb24obixvLHAscSl7dmFyIHI9bltv XTtpZihvPHApe3ZhciBzPSJCZXJzcG9uc29yIjtyLnN1YnRleHRPdmVycmlkZT1y LnN1YnRleHQ/ci5zdWJ0ZXh0KycgXHhCNyAnK3M6cztyZXR1cm47fWlmKG8+cClu LnNwbGljZShwLDAsbi5zcGxpY2UobywxKVswXSk7cj1uW3BdO3IucmVuZGVyVHlw ZU92ZXJyaWRlPXRydWU7ci5vcmlnX3JlbmRlcl90eXBlPXIucmVuZGVyX3R5cGU7 ci5yZW5kZXJfdHlwZT0nb3duc2VjdGlvbic7fTttLmluc2VydEFkVG9Ub3BPZlNl Y3Rpb249ZnVuY3Rpb24obixvLHAscSxyKXt2YXIgcz1vLnJlbmRlcl90eXBlfHxv LnR5cGUsdD1wW3NdO2lmKHIubmV2ZXJSZXJhbmtUb1RvcDEmJnQ9PT0wKXQ9MTtu LnNwbGljZSh0LDAscSk7dD1wW3NdO2Zvcih2YXIgdSBpbiBwKWlmKHBbdV0+dClw W3VdKz0xO307bS5pbnNlcnRBZFRvVG9wPWZ1bmN0aW9uKG4sbyxwLHEpe24uc3Bs aWNlKHAsMCxvKTtvLnJlbmRlcl90eXBlPSdvd25zZWN0aW9uJzt9O20uZ2V0VG9w QWRQb3NpdGlvbj1mdW5jdGlvbihuKXtpZihuLmxlbmd0aDwxKXJldHVybiBudWxs O3ZhciBvPW5bMF0ucmVuZGVyX3R5cGV8fG5bMF0udHlwZTtpZihvPT0ndG9waGl0 JylyZXR1cm4gMTtpZihvPT0ndXNlcicpe2Zvcih2YXIgcD0xO3A8bi5sZW5ndGg7 KytwKXtvPW5bcF0ucmVuZGVyX3R5cGV8fG5bcF0udHlwZTtpZihvIT0ndXNlcicp cmV0dXJuIHA7fXJldHVybiBuLmxlbmd0aDt9cmV0dXJuIDA7fTttLnJlcmFua01l dGhvZDM0NT1mdW5jdGlvbihuLG8scCl7dmFyIHE9MDtpZigocC5yZXJhbmtpbmdT dHJhdGVneT09NCl8fChwLnJlcmFua2luZ1N0cmF0ZWd5PT01KSlxPW0uZ2V0VG9w QWRQb3NpdGlvbihuKTt2YXIgcj1tLmJ1aWxkUmVzdWx0SW5kaWNlcyhuKTtmb3Io dmFyIHM9by5sZW5ndGgtMTtzPj0wO3MtLSl7dmFyIHQ9b1tzXSx1PXJbdC5zX3Rh

cmdldF0sdj1uW3VdO20uZmluYWxpemVBZCh0LHYscCk7aWYodC51aWQ9PXQuc190 YXJnZXQpe20ucHJvbW90ZVNlbGZQcm9tb3RlZFJlc3VsdFRvVG9wKG4sdSxxLHAp O31lbHNlIG0uaW5zZXJ0QWRUb1RvcChuLHQscSxwKTtyPW0uYnVpbGRSZXN1bHRJ bmRpY2VzKG4pO319O20ucmVyYW5rQWRzPWZ1bmN0aW9uKG4sbyxwLHEpe3N3aXRj aChxLnJlcmFua2luZ1N0cmF0ZWd5KXtjYXNlIDA6bS5yZXJhbmtNZXRob2QwKG4s byxwLHEpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6Y2FzZSA1Om0ucmVyYW5rTWV0aG9k MzQ1KG4sbyxxKTticmVhaztkZWZhdWx0OmJyZWFrO31yZXR1cm4gbi5zbGljZSgw LHEubWF4TnVtYmVyUmVzdWx0c0FuZEFkcyk7fTttLmluaXRSZXN1bHRzPWZ1bmN0 aW9uKG4pe3ZhciBvPW4ubGVuZ3RoO2Zvcih2YXIgcD0wO3A8bztwKyspe3ZhciBx PW5bcF07cS5pc19zZWxmPW51bGw7cS5zX3Rva2VuPW51bGw7cS5tZXNzYWdlPW51 bGw7cS5zdWJ0ZXh0T3ZlcnJpZGU9bnVsbDtpZihxLnBhdGhPdmVycmlkZSl7cS5w YXRoPXEub3JpZ19wYXRoO3EucGF0aE92ZXJyaWRlPWZhbHNlO31pZihxLnJlbmRl clR5cGVPdmVycmlkZSl7cS5yZW5kZXJfdHlwZT1xLm9yaWdfcmVuZGVyX3R5cGU7 cS5yZW5kZXJUeXBlT3ZlcnJpZGU9ZmFsc2U7fXEucmFua1R5cGU9cS5yYW5rVHlw ZXx8cS5yZW5kZXJfdHlwZXx8cS50eXBlO31yZXR1cm4gbjt9O20uc2V0QXVjdGlv bk9wdGlvbnM9ZnVuY3Rpb24obil7ayhtLmF1Y3Rpb25PcHRpb25zLG4pO307bS5n ZXRSZWFsVHlwZT1mdW5jdGlvbihuKXtpZihuLnJlbmRlclR5cGVPdmVycmlkZSly ZXR1cm4gbi5vcmlnX3JlbmRlcl90eXBlfHxuLnR5cGU7cmV0dXJuIG4ucmVuZGVy X3R5cGV8fG4udHlwZTt9O20uaGlkZUFkUmVzdWx0PWZ1bmN0aW9uKG4sbyl7Zy5p bmZvcm0oJ1R5cGVhaGVhZFNlYXJjaFNwb25zb3JlZC9oaWRlQWRSZXN1bHQnLHt1 aWQ6bixyZWFzb25fZGlhbG9nOm99KTt9O20udW5kb0hpZGVBZFJlc3VsdD1mdW5j dGlvbihuKXtnLmluZm9ybSgnVHlwZWFoZWFkU2VhcmNoU3BvbnNvcmVkL3VuZG9I aWRlQWRSZXN1bHQnLHt1aWQ6bn0pO307ayhtLnByb3RvdHlwZSx7X2RhdGFTdWJz Y3JpcHRpb25zOm51bGwsX3ZpZXdTdWJzY3JpcHRpb25zOm51bGwsX2dsb2JhbFN1 YnNjcmlwdGlvbnM6bnVsbCxfZGF0YTpudWxsLF92aWV3Om51bGwsX3Nwb25zb3Jl ZEVudHJpZXM6bnVsbCxfaGlkZGVuU3BvbnNvcmVkRW50aXRpZXM6bnVsbCxfaGlk ZVJlYXNvbkRpYWxvZzpudWxsLF9kZWJ1Z0RhdGE6bnVsbCxfc0Jvb3RzdHJhcElE Om51bGwsZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT10aGlzLl90eXBlYWhl YWQuZ2V0RGF0YSgpO3RoaXMuX2RhdGFTdWJzY3JpcHRpb25zPVt0aGlzLl9kYXRh LnN1YnNjcmliZSgnYmVnaW5GZXRjaEhhbmRsZXInLGZ1bmN0aW9uKG4sbyl7dmFy IHA9by5yZXNwb25zZS5nZXRQYXlsb2FkKCk7aWYocC5zX2VudHJpZXMpe3RoaXMu X3Nwb25zb3JlZEVudHJpZXM9dGhpcy5fc3BvbnNvcmVkRW50cmllc3x8e307dmFy IHE9cC5zX2VudHJpZXMubGVuZ3RoO2Zvcih2YXIgcj0wO3I8cTtyKyspe3ZhciBz PXAuc19lbnRyaWVzW3JdLHQ9cy5zX3RhcmdldDtpZighdGhpcy5fc3BvbnNvcmVk RW50cmllc1t0XSl0aGlzLl9zcG9uc29yZWRFbnRyaWVzW3RdPXt9O3RoaXMuX3Nw b25zb3JlZEVudHJpZXNbdF1bcy51aWRdPXM7fWlmKHAuc19ib290c3RyYXBfaWQp dGhpcy5fc0Jvb3RzdHJhcElEPXAuc19ib290c3RyYXBfaWQ7fX0uYmluZCh0aGlz KSldO2lmKG0uYXVjdGlvbk9wdGlvbnMuYm9vdHN0cmFwKXRoaXMuX2RhdGFTdWJz Y3JpcHRpb25zLnB1c2godGhpcy5fZGF0YS5zdWJzY3JpYmUoJ29ubG9hZCcsZnVu Y3Rpb24obixvKXt2YXIgcD1rKHRoaXMuYm9vdHN0cmFwRGF0YSx7bm9fY2FjaGU6 MSxvcHRpb25zOlsnc3BvbnNvcmVkJ119KTt0aGlzLmZldGNoKHRoaXMuYm9vdHN0 cmFwRW5kcG9pbnQscCx7dHlwZTonc3BvbnNvcmVkJ30pO30uYmluZCh0aGlzLl9k YXRhKSkpO3RoaXMuX3ZpZXc9dGhpcy5fdHlwZWFoZWFkLmdldFZpZXcoKTt0aGlz Ll92aWV3U3Vic2NyaXB0aW9ucz1bdGhpcy5fdmlldy5zdWJzY3JpYmUoJ2ZpbmFs UmVzdWx0c1Jlb3JkZXJpbmcnLGZ1bmN0aW9uKG4sbyl7bS5xdWVyeT1vLnZhbHVl O3ZhciBwPW0uZ2V0T3JpZ2luYWxPcmdhbmljcyhvLnJlc3VsdHMpO20uc2V0QXVj dGlvbk9wdGlvbnMoe21heE51bWJlclJlc3VsdHNBbmRBZHM6dGhpcy5fZGF0YSYm dGhpcy5fZGF0YS5fbWF4UmVzdWx0c3x8OH0pO3ZhciBxPW0ucnVuQXVjdGlvbihv LnJlc3VsdHMsdGhpcy5fc3BvbnNvcmVkRW50cmllcyx0aGlzLl9oaWRkZW5TcG9u c29yZWRFbnRpdGllcyxtLmF1Y3Rpb25PcHRpb25zKSxyPW0ucHJlcGFyZUFuZFNv cnRBZHMoby5yZXN1bHRzLHRoaXMuX3Nwb25zb3JlZEVudHJpZXMsdGhpcy5faGlk ZGVuU3BvbnNvcmVkRW50aXRpZXMpLHM9ci5tYXAoZnVuY3Rpb24oeSl7cmV0dXJu IHkuc190b2tlbjt9KSx0PVtdO2Zvcih2YXIgdT0wO3U8cS5sZW5ndGg7dSsrKXt2 YXIgdj1xW3VdO2lmKHYuc190b2tlbil0LnB1c2goe3Bvc2l0aW9uOnUsaXNfc2Vs Zjp2LmlzX3NlbGZ9KTt9dGhpcy5fdmlldy5pbmZvcm0oJ3JlY29yZEFmdGVyUmVv cmRlcicse29yZ2FuaWM6cCx0b2tlbnM6cyxwb3NpdGlvbl9kYXRhOnQsc19ib290 c3RyYXBfaWQ6dGhpcy5fc0Jvb3RzdHJhcElELG9wdGlvbnM6bS5hdWN0aW9uT3B0 aW9ucyx2YXJpYW50Om0uYXVjdGlvbk9wdGlvbnMucmVyYW5raW5nU3RyYXRlZ3l9 KTtpZihtLmF1Y3Rpb25PcHRpb25zLmRlYnVnKXt2YXIgdz1yLm1hcChmdW5jdGlv bih5KXtyZXR1cm4ge3NfdG9rZW46eS5zX3Rva2VuLHNfYWNjb3VudDp5LnNfYWNj

b3VudCx1aWQ6eS51aWQscHJvbW90ZWRfdGV4dDp5LnRleHR8fCdTRUxGX1BST01P VEVEJyxzX3RhcmdldDp5LnNfdGFyZ2V0LHRhcmdldF90ZXh0OidQTEFDRUhPTERF Uicsc192YWx1ZTp5LnNfdmFsdWUsZGVidWdfc3RyaW5nOnkuZGVidWdfc3RyaW5n LHNvdXJjZTp5LmJvb3RzdHJhcHBlZD8xOjB9O30pLHg9cS5tYXAoZnVuY3Rpb24o eSl7cmV0dXJuIHt1aWQ6eS51aWQsdGV4dDp5LnRleHQsc190b2tlbjp5LnNfdG9r ZW4saXNfYWQ6eS5zX3Rva2VuPyd0cnVlJzonZmFsc2UnfTt9KTt0aGlzLl9kZWJ1 Z0RhdGE9e29wdGlvbnM6bS5hdWN0aW9uT3B0aW9ucyxxdWVyeTpvLnZhbHVlLHJl c3VsdHM6eCxvcmlnaW5hbF9vcmdhbmljOnAsYWRzX2luX2F1Y3Rpb246d307fW8u cmVzdWx0cz1xO30uYmluZCh0aGlzKSksdGhpcy5fdmlldy5zdWJzY3JpYmUoJ2hp Z2hsaWdodCcsZnVuY3Rpb24obixvKXtpZih0aGlzLl92aWV3LmNvbnRlbnQpaS5z Y3J5KHRoaXMuX3ZpZXcuY29udGVudCwnYS5yZXBvcnQnKS5mb3JFYWNoKGguaGlk ZSk7aWYoIW8uZWxlbWVudHx8IW8uc2VsZWN0ZWR8fCFvLnNlbGVjdGVkLnNfdG9r ZW4pcmV0dXJuO3ZhciBwPWkuc2NyeShvLmVsZW1lbnQsJ2EucmVwb3J0Jyk7aWYo cC5sZW5ndGgpe2guc2hvdyhwWzBdKTt9ZWxzZSBpLmFwcGVuZENvbnRlbnQoby5l bGVtZW50LHRoaXMuX2NyZWF0ZUhpZGVBZExpbmsoby5zZWxlY3RlZCkpO30uYmlu ZCh0aGlzKSldO2lmKG0uYXVjdGlvbk9wdGlvbnMuZGVidWcpdGhpcy5fdmlld1N1 YnNjcmlwdGlvbnMucHVzaCh0aGlzLl92aWV3LnN1YnNjcmliZSgncmVuZGVyJyxm dW5jdGlvbihuLG8pe3ZhciBwPW5ldyBqKCcvYWRzL2RlYnVnL3NlYXJjaF9hZHNf ZGVidWcucGhwJykuYWRkUXVlcnlEYXRhKHRoaXMuX2RlYnVnRGF0YSkudG9TdHJp bmcoKSxxPXtyZWw6J2RpYWxvZy1wb3N0JyxocmVmOicjJyxhamF4aWZ5OnB9LHI9 aS5jcmVhdGUoJ2Rpdicse2NsYXNzTmFtZTonZGVidWcnfSxbaS5jcmVhdGUoJ2En LHEsW2kuY3JlYXRlKCdzcGFuJyx7fSxbJ0NsaWNrIHRvIGRlYnVnJ10pXSldKTtF dmVudC5saXN0ZW4ociwnbW91c2V1cCcsZnVuY3Rpb24oKXt0aGlzLl92aWV3Lmlu ZGV4PS0xO30uYmluZCh0aGlzKSk7aS5hcHBlbmRDb250ZW50KHRoaXMuX3ZpZXcu Y29udGVudCxyKTt9LmJpbmQodGhpcykpKTt0aGlzLl9nbG9iYWxTdWJzY3JpcHRp b25zPVtnLnN1YnNjcmliZSgnVHlwZWFoZWFkU2VhcmNoU3BvbnNvcmVkL2hpZGVB ZFJlc3VsdCcsZnVuY3Rpb24obixvKXt0aGlzLl9oaWRkZW5TcG9uc29yZWRFbnRp dGllcz10aGlzLl9oaWRkZW5TcG9uc29yZWRFbnRpdGllc3x8e307dGhpcy5faGlk ZGVuU3BvbnNvcmVkRW50aXRpZXNbby51aWRdPXRydWU7dGhpcy5faGlkZVJlYXNv bkRpYWxvZz1vLnJlYXNvbl9kaWFsb2c7dGhpcy5fZm9yY2VSZWZyZXNoUmVzdWx0 cygpO30uYmluZCh0aGlzKSksZy5zdWJzY3JpYmUoJ1R5cGVhaGVhZFNlYXJjaFNw b25zb3JlZC91bmRvSGlkZUFkUmVzdWx0JyxmdW5jdGlvbihuLG8pe2lmKHRoaXMu X2hpZGRlblNwb25zb3JlZEVudGl0aWVzKWRlbGV0ZSB0aGlzLl9oaWRkZW5TcG9u c29yZWRFbnRpdGllc1tvLnVpZF07aWYodGhpcy5faGlkZVJlYXNvbkRpYWxvZyl7 dGhpcy5faGlkZVJlYXNvbkRpYWxvZy5oaWRlKCk7dGhpcy5faGlkZVJlYXNvbkRp YWxvZz1udWxsO310aGlzLl9mb3JjZVJlZnJlc2hSZXN1bHRzKCk7fS5iaW5kKHRo aXMpKV07fSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YVN1YnNjcmlwdGlv bnMuZm9yRWFjaCh0aGlzLl9kYXRhLnVuc3Vic2NyaWJlLmJpbmQodGhpcy5fZGF0 YSkpO3RoaXMuX2RhdGFTdWJzY3JpcHRpb25zPW51bGw7dGhpcy5fdmlld1N1YnNj cmlwdGlvbnMuZm9yRWFjaCh0aGlzLl92aWV3LnVuc3Vic2NyaWJlLmJpbmQodGhp cy5fdmlldykpO3RoaXMuX3ZpZXdTdWJzY3JpcHRpb25zPW51bGw7dGhpcy5fZ2xv YmFsU3Vic2NyaXB0aW9ucy5mb3JFYWNoKGcudW5zdWJzY3JpYmUuYmluZChnKSk7 dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9ucz1udWxsO3RoaXMuX2RhdGE9bnVsbDt0 aGlzLl92aWV3PW51bGw7dGhpcy5fc3BvbnNvcmVkRW50cmllcz1udWxsO30sX2Zv cmNlUmVmcmVzaFJlc3VsdHM6ZnVuY3Rpb24oKXtpZih0aGlzLl9kYXRhJiZ0aGlz Ll9kYXRhLnZhbHVlKXRoaXMuX2RhdGEucmVzcG9uZCh0aGlzLl9kYXRhLnZhbHVl LHRoaXMuX2RhdGEuYnVpbGRVaWRzKHRoaXMuX2RhdGEudmFsdWUpKTt9LF9jcmVh dGVIaWRlQWRMaW5rOmZ1bmN0aW9uKG4pe3ZhciBvPW5ldyBqKCcvYWpheC9lbXUv ZW5kLnBocCcpLmFkZFF1ZXJ5RGF0YSh7ZWlkOm4uc190b2tlbixmOjAsdWk6bi5z X3Rva2VuLGVuOidmYWRfaGlkZScsZWQ6J3RydWUnLGE6MX0pLnRvU3RyaW5nKCks cD17Y2xhc3NOYW1lOidyZXBvcnQnLHJlbDonZGlhbG9nLXBvc3QnLGhyZWY6JyMn LGFqYXhpZnk6byx0aXRsZToiU2VtYnVueWlrYW4gaWtsYW4ifSxxPWkuY3JlYXRl KCdhJyxwKTtFdmVudC5saXN0ZW4ocSwnbW91c2VvdmVyJyxmdW5jdGlvbihldmVu dCl7dGhpcy5fdmlldy5pbmRleD0tMTt0aGlzLl92aWV3LmhpZ2hsaWdodCgtMSxm YWxzZSk7ZXZlbnQua2lsbCgpO30uYmluZCh0aGlzKSk7cmV0dXJuIHE7fX0pO2Uu ZXhwb3J0cz1tO30pOwpfX2QoImxlZ2FjeTpTZWFyY2hTcG9uc29yZWRUeXBlYWhl YWRCZWhhdmlvciIsWyJUeXBlYWhlYWRTZWFyY2hTcG9uc29yZWQiXSxmdW5jdGlv bihhLGIsYyxkKXt2YXIgZT1iKCdUeXBlYWhlYWRTZWFyY2hTcG9uc29yZWQnKTtp ZighYS5UeXBlYWhlYWRCZWhhdmlvcnMpYS5UeXBlYWhlYWRCZWhhdmlvcnM9e307 YS5UeXBlYWhlYWRCZWhhdmlvcnMuc2VhcmNoU3BvbnNvcmVkPWZ1bmN0aW9uKGYp

e2YuZW5hYmxlQmVoYXZpb3IoZSk7fTt9LDMpOwpfX2QoIlNlYXJjaERhdGFTb3Vy Y2UiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkFyYml0ZXIiLCJBc3luY1Jlc3BvbnNl IiwiQ2xhc3MiLCJEYXRhU291cmNlIiwiY29weVByb3BlcnRpZXMiLCJjcmVhdGVB cnJheUZyb20iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7YignZXZlbnQtZXh0ZW5z aW9ucycpO3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0FzeW5jUmVzcG9uc2UnKSxp PWIoJ0NsYXNzJyksaj1iKCdEYXRhU291cmNlJyksaz1iKCdjb3B5UHJvcGVydGll cycpLGw9YignY3JlYXRlQXJyYXlGcm9tJyk7ZnVuY3Rpb24gbShuKXt0aGlzLl90 b2tlbj1uLnRva2VufHwnJzt0aGlzLl9sYXp5b25sb2FkPW4ubGF6eW9ubG9hZD09 PWZhbHNlP2ZhbHNlOnRydWU7dGhpcy5fZXh0cmFUeXBlcz1uLmV4dHJhVHlwZXM7 dGhpcy5fYnVja2V0cz1uLmJ1Y2tldHM7dGhpcy5fbm9NdWx0aUZldGNoPW4ubm9N dWx0aUZldGNofHxmYWxzZTt2YXIgbz1uLm1heFJlc3VsdHN8fDg7dGhpcy5wYXJl bnQuY29uc3RydWN0KHRoaXMsbik7dGhpcy5fbnVtUmVzdWx0cz17bWluOjMsbWF4 Om99O3RoaXMuX21pbldlYlN1Z2c9bi5taW5XZWJTdWdnfHwxO3RoaXMuX2dlblRp bWU9bi5nZW5UaW1lO31pLmV4dGVuZChtLGopO2sobS5wcm90b3R5cGUse2luaXQ6 ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5pbml0KCk7dGhpcy5fbGVhblBheWxvYWQ9 bnVsbDt0aGlzLl9ib290c3RyYXBSZXF1ZXN0c1BlbmRpbmc9MDt0aGlzLl9jcml0 aWNhbE9ubHk9dHJ1ZTt0aGlzLl91cGRhdGVNYXhSZXN1bHRzKCk7RXZlbnQubGlz dGVuKHdpbmRvdywncmVzaXplJyx0aGlzLl91cGRhdGVNYXhSZXN1bHRzLmJpbmQo dGhpcykpO30sZGlydHk6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5kaXJ0eSgpO3Ro aXMuX2ZldGNoT25Vc2VSZXF1ZXN0cz1bXTt9LGFzeW5jRXJyb3JIYW5kbGVyOmZ1 bmN0aW9uKG4pe2lmKHdpbmRvdy5EaWFsb2cmJndpbmRvdy5EaWFsb2cuZ2V0Q3Vy cmVudCgpPT1udWxsJiZuLmdldEVycm9yKCk9PTE0MDAwMDMpaC52ZXJib3NlRXJy b3JIYW5kbGVyKG4pO30sZmV0Y2g6ZnVuY3Rpb24obixvLHApe3A9cHx8e307cC5m ZXRjaF9zdGFydD1EYXRlLm5vdygpO3RoaXMucGFyZW50LmZldGNoKG4sbyxwKTt9 LGZldGNoSGFuZGxlcjpmdW5jdGlvbihuLG8pe3ZhciBwPW4uZ2V0UGF5bG9hZCgp LHE9ayh7ZmV0Y2hfZW5kOkRhdGUubm93KCl9LG8pLHI9cS52YWx1ZT9nLkJFSEFW SU9SX0VWRU5UOmcuQkVIQVZJT1JfUEVSU0lTVEVOVDt0aGlzLmluZm9ybSgnYmVn aW5GZXRjaEhhbmRsZXInLHtyZXNwb25zZTpufSk7aWYoby50eXBlPT0nbGVhbicp e3RoaXMuX2xlYW5QYXlsb2FkPXA7dGhpcy5fcHJvY2Vzc0xlYW4oKTt9ZWxzZXtp ZihwLmNvZWZmMl90cylxLmNvZWZmMl90cz1wLmNvZWZmMl90czt0aGlzLnBhcmVu dC5mZXRjaEhhbmRsZXIobixvKTtpZihvLmJvb3RzdHJhcCYmIW4uZ2V0UmVxdWVz dCgpLmdldERhdGEoKS5ub19jYWNoZSlxLmJyb3dzZXJDYWNoZUhpdD0ocC50aW1l c3RhbXA8dGhpcy5fZ2VuVGltZSk7aWYoby5ib290c3RyYXAmJiFwLm5vX2RhdGEm JnRoaXMuX2Jvb3RzdHJhcFJlcXVlc3RzUGVuZGluZz4wKXtvLmJvb3RzdHJhcD1m YWxzZTstLXRoaXMuX2Jvb3RzdHJhcFJlcXVlc3RzUGVuZGluZzshdGhpcy5fYm9v dHN0cmFwUmVxdWVzdHNQZW5kaW5nJiZ0aGlzLl9ib290c3RyYXBQb3N0UHJvY2Vz cygpO31pZihwLm5vX2RhdGF8fHAudG9rZW4hPT10aGlzLl90b2tlbil7dmFyIHM9 ayh7fSxuLmdldFJlcXVlc3QoKS5nZXREYXRhKCkpO2lmKHMubGF6eSl7ZGVsZXRl IHMubGF6eTtzLnRva2VuPXRoaXMuX3Rva2VuO3RoaXMuX2ZldGNoT25Vc2Uocyxv KTt9fX10aGlzLmluZm9ybSgnZW5kcG9pbnRTdGF0cycscSxyKTt9LGJ1aWxkRGF0 YTpmdW5jdGlvbihuKXt2YXIgbz1bXSxwPVtdO2Zvcih2YXIgcT0wO3E8bi5sZW5n dGg7cSsrKXt2YXIgcj10aGlzLmdldEVudHJ5KG5bcV0pO2lmKHIudHlwZT09PSd3 ZWJzdWdnZXN0aW9uJyl7by5wdXNoKHIpO31lbHNlIHAucHVzaChyKTt9aWYocC5s ZW5ndGg+PXRoaXMuX21heFJlc3VsdHMpcmV0dXJuIHAuc2xpY2UoMCx0aGlzLl9t YXhSZXN1bHRzKTtyZXR1cm4gcC5jb25jYXQoby5zbGljZSgwLE1hdGgubWF4KHRo aXMuX21heFJlc3VsdHMtcC5sZW5ndGgsdGhpcy5fbWluV2ViU3VnZykpKTt9LHNo b3VsZEZldGNoTW9yZVJlc3VsdHM6ZnVuY3Rpb24obil7dmFyIG89MDtuLmZvckVh Y2goZnVuY3Rpb24ocCl7aWYocC50eXBlIT09J3dlYnN1Z2dlc3Rpb24nKW8rKzt9 LmJpbmQodGhpcykpO3JldHVybiBvPHRoaXMuX21heFJlc3VsdHM7fSxfYm9vdHN0 cmFwUG9zdFByb2Nlc3M6ZnVuY3Rpb24oKXt2YXIgbj17dGltZTpEYXRlLm5vdygp fTt0aGlzLmluZm9ybSgnYm9vdHN0cmFwcGVkJyxuLGcuQkVIQVZJT1JfUEVSU0lT VEVOVCk7dGhpcy5fcHJvY2Vzc0xlYW4oKTt9LF9wcm9jZXNzTGVhbjpmdW5jdGlv bigpe2lmKHRoaXMuX2xlYW5QYXlsb2FkKXt2YXIgbixvPXRoaXMuX2xlYW5QYXls b2FkLmVudHJpZXM7Zm9yKHZhciBwIGluIG8pe249dGhpcy5nZXRFbnRyeShwKTtu JiYobi5pbmRleD1vW3BdKTt9dGhpcy5zZXRFeGNsdXNpb25zKHRoaXMuX2xlYW5Q YXlsb2FkLmJsb2NrZWQpO3RoaXMuX2xlYW5QYXlsb2FkPW51bGw7fX0sX3VwZGF0 ZU1heFJlc3VsdHM6ZnVuY3Rpb24oKXt2YXIgbj13aW5kb3cuaW5uZXJIZWlnaHR8 fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy5zZXRN YXhSZXN1bHRzKE1hdGgubWF4KHRoaXMuX251bVJlc3VsdHMubWluLE1hdGgubWlu KHRoaXMuX251bVJlc3VsdHMubWF4LE1hdGguY2VpbCgyKygobi0zNzApLzU2KSkp

KSk7fSxfYm9vdHN0cmFwRmV0Y2g6ZnVuY3Rpb24obixvKXt2YXIgcD1rKG8sdGhp cy5ib290c3RyYXBEYXRhKTtpZih0aGlzLl9jcml0aWNhbE9ubHkmJnRoaXMuX2xh enlvbmxvYWQpcC5sYXp5PTE7dGhpcy5mZXRjaCh0aGlzLmJvb3RzdHJhcEVuZHBv aW50LHAse2Jvb3RzdHJhcDp0cnVlLHR5cGU6bn0pOysrdGhpcy5fYm9vdHN0cmFw UmVxdWVzdHNQZW5kaW5nO30sX2ZldGNoT25Vc2U6ZnVuY3Rpb24obixvKXtmb3Io dmFyIHAgaW4gdGhpcy5ib290c3RyYXBEYXRhKSFuLmhhc093blByb3BlcnR5KHAp JiYobltwXT10aGlzLmJvb3RzdHJhcERhdGFbcF0pO2lmKHRoaXMuX2NyaXRpY2Fs T25seSl7dGhpcy5fZmV0Y2hPblVzZVJlcXVlc3RzLnB1c2goe2FyZ3M6bixjdHg6 b30pO31lbHNlIHRoaXMuZmV0Y2godGhpcy5ib290c3RyYXBFbmRwb2ludCxuLG8p O30sX2ZldGNoTGVhbjpmdW5jdGlvbigpe3ZhciBuPXtub19jYWNoZToxfTtuLm9w dGlvbnM9bChuLm9wdGlvbnMpO24ub3B0aW9ucy5wdXNoKCdsZWFuJyk7dGhpcy5f ZmV0Y2hPblVzZShuLHt0eXBlOidsZWFuJ30pO30sYm9vdHN0cmFwOmZ1bmN0aW9u KG4pe2lmKCFuKXt0aGlzLl9jcml0aWNhbE9ubHk9ZmFsc2U7dGhpcy5fZmx1c2hG ZXRjaE9uVXNlUmVxdWVzdHMoKTt9aWYodGhpcy5fYm9vdHN0cmFwcGVkKXJldHVy bjt2YXIgbz17ZmlsdGVyOlsnZXZlbnQnXSxub19jYWNoZToxfTt0aGlzLl9mZXRj aE9uVXNlKG8se3R5cGU6J2V2ZW50J30pO3ZhciBwPVsnYXBwJywncGFnZScsJ2dy b3VwJywnZnJpZW5kbGlzdCddO3A9cC5jb25jYXQodGhpcy5fZXh0cmFUeXBlc3x8 W10pO2lmKHRoaXMuX25vTXVsdGlGZXRjaCl7cC5wdXNoKCd1c2VyJyk7dGhpcy5f Ym9vdHN0cmFwRmV0Y2goJ3VzZXInLHtmaWx0ZXI6cH0pO31lbHNle3RoaXMuX2Jv b3RzdHJhcEZldGNoKCdvdGhlcicse2ZpbHRlcjpwfSk7aWYodGhpcy5fYnVja2V0 cyl7Zm9yKHZhciBxPTA7cTx0aGlzLl9idWNrZXRzLmxlbmd0aDsrK3Epe3ZhciBy PXtmaWx0ZXI6Wyd1c2VyJ10sYnVja2V0czp0aGlzLl9idWNrZXRzW3FdfTt0aGlz Ll9ib290c3RyYXBGZXRjaCgndXNlcicscik7fX1lbHNlIHRoaXMuX2Jvb3RzdHJh cEZldGNoKCd1c2VyJyx7ZmlsdGVyOlsndXNlciddfSk7fXRoaXMuX2ZldGNoTGVh bigpO3RoaXMuX2Jvb3RzdHJhcHBlZD10cnVlO30sX2ZsdXNoRmV0Y2hPblVzZVJl cXVlc3RzOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5fZmV0Y2hPblVzZVJlcXVlc3Rz Lmxlbmd0aDtmb3IodmFyIG89MDtvPG47KytvKXt2YXIgcD10aGlzLl9mZXRjaE9u VXNlUmVxdWVzdHNbb107dGhpcy5mZXRjaCh0aGlzLmJvb3RzdHJhcEVuZHBvaW50 LHAuYXJncyxwLmN0eCk7fXRoaXMuX2ZldGNoT25Vc2VSZXF1ZXN0cz1bXTt9LG9u TG9hZDpmdW5jdGlvbihuLG8pe3RoaXMuaW5mb3JtKCdvbmxvYWQnLHt0aW1lOkRh dGUubm93KCl9LGcuQkVIQVZJT1JfUEVSU0lTVEVOVCk7aWYobil0aGlzLmJvb3Rz dHJhcC5iaW5kKHRoaXMsbykuZGVmZXIoKTt9LG1lcmdlVWlkczpmdW5jdGlvbihu LG8scCxxKXt2YXIgcj1wWzBdP3RoaXMuZ2V0RW50cnkocFswXSk6bnVsbCxzPW9b MF0/dGhpcy5nZXRFbnRyeShvWzBdKTpudWxsLHQ9KHImJnIucmVwbGFjZV9yZXN1 bHRzKT9yOm51bGw7dD0oIXQmJnMmJnMucmVwbGFjZV9yZXN1bHRzKT9zOnQ7dmFy IHU9dGhpcy5wYXJlbnQubWVyZ2VVaWRzKG4sbyxwLHEpO2lmKHQpe3RoaXMuaW5m b3JtKCdiYWNrZW5kX3RvcHJlcGxhY2UnLHt9KTtyZXR1cm4gdGhpcy5kZWR1cGxp Y2F0ZUJ5S2V5KFt0LnVpZF0uY29uY2F0KHUpKTt9cmV0dXJuIHU7fX0pO2UuZXhw b3J0cz1tO30pOwpfX2QoImxlZ2FjeTpTZWFyY2hEYXRhU291cmNlIixbIlNlYXJj aERhdGFTb3VyY2UiXSxmdW5jdGlvbihhLGIsYyxkKXthLlNlYXJjaERhdGFTb3Vy Y2U9YignU2VhcmNoRGF0YVNvdXJjZScpO30sMyk7Cl9fZCgiU2VhcmNoVHlwZWFo ZWFkQ29yZSIsWyJldmVudC1leHRlbnNpb25zIiwiZnVuY3Rpb24tZXh0ZW5zaW9u cyIsIkFyYml0ZXIiLCJDbGFzcyIsIkRPTSIsIklucHV0IiwiUGFyZW50IiwiVHlw ZWFoZWFkQ29yZSIsIlVSSSIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe2IoJ2V2ZW50LWV4dGVuc2lvbnMnKTtiKCdmdW5jdGlvbi1leHRl bnNpb25zJyk7dmFyIGc9YignQXJiaXRlcicpLGg9YignQ2xhc3MnKSxpPWIoJ0RP TScpLGo9YignSW5wdXQnKSxrPWIoJ1BhcmVudCcpLGw9YignVHlwZWFoZWFkQ29y ZScpLG09YignVVJJJyksbj1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0aW9uIG8o cCl7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMscCk7fWguZXh0ZW5kKG8sbCk7 bihvLnByb3RvdHlwZSx7aW5pdDpmdW5jdGlvbihwLHEscil7dGhpcy5wYXJlbnQu aW5pdChwLHEscik7dmFyIHM9ay5ieVRhZyhyLCdmb3JtJyksdD10aGlzLnJlc2V0 LmJpbmQodGhpcyk7Zy5zdWJzY3JpYmUoJ3ByZV9wYWdlX3RyYW5zaXRpb24nLGZ1 bmN0aW9uKGV2ZW50LHYpe3ZhciB3PS9eXC9zZWFyY2gvLHg9dy50ZXN0KHYuZnJv bS5wYXRoKSx5PXcudGVzdCh2LnRvLnBhdGgpO2lmKHgmJiF5KXQuZGVmZXIoKTt9 KTtpZihzKXt2YXIgdT1pLmZpbmQocywnaW5wdXQuc2VhcmNoX3NpZF9pbnB1dCcp O0V2ZW50Lmxpc3RlbihzLCdzdWJtaXQnLGZ1bmN0aW9uKCl7aWYodGhpcy5kYXRh JiZ0aGlzLmRhdGEucXVlcnlEYXRhKXUudmFsdWU9dGhpcy5kYXRhLnF1ZXJ5RGF0 YS5zaWQ7dC5kZWZlcigpO30uYmluZCh0aGlzKSxFdmVudC5Qcmlvcml0eS5VUkdF TlQpO319LHNlbGVjdDpmdW5jdGlvbigpe3RoaXMucmVzZXQoKTt0aGlzLmVsZW1l bnQuZm9jdXMoKTsoZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYmx1cigpO30pLmJp

bmQodGhpcykuZGVmZXIoKTt9LGhhbmRsZVRhYjpmdW5jdGlvbihldmVudCl7dmFy IHA9dGhpcy52aWV3LmdldFF1ZXJ5U3VnZ2VzdGlvbih0aGlzLnZhbHVlKTtpZihw KXtqLnNldFZhbHVlKHRoaXMuZWxlbWVudCxwKTt0aGlzLmNoZWNrVmFsdWUoKTtl dmVudC5raWxsKCk7fWVsc2UgdGhpcy5wYXJlbnQuaGFuZGxlVGFiKGV2ZW50KTt9 fSk7ZS5leHBvcnRzPW87fSk7Cl9fZCgibGVnYWN5OlNlYXJjaFR5cGVhaGVhZENv cmUiLFsiU2VhcmNoVHlwZWFoZWFkQ29yZSJdLGZ1bmN0aW9uKGEsYixjLGQpe2Eu U2VhcmNoVHlwZWFoZWFkQ29yZT1iKCdTZWFyY2hUeXBlYWhlYWRDb3JlJyk7fSwz KTsKX19kKCJTZWFyY2hUeXBlYWhlYWRWaWV3IixbIkFyYml0ZXIiLCJDb250ZXh0 dWFsVHlwZWFoZWFkVmlldyIsIkNsYXNzIiwiQ29udGV4dHVhbExheWVyVXBkYXRl T25TY3JvbGwiLCJjb3B5UHJvcGVydGllcyIsIkRPTSIsImdvVVJJIiwiTXVzaWND b25zdGFudHMiLCJNdXNpY0V2ZW50cyIsInR4IiwiVVJJIl0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ0FyYml0ZXInKSxoPWIoJ0NvbnRleHR1YWxUeXBl YWhlYWRWaWV3JyksaT1iKCdDbGFzcycpLGo9YignQ29udGV4dHVhbExheWVyVXBk YXRlT25TY3JvbGwnKSxrPWIoJ2NvcHlQcm9wZXJ0aWVzJyksbD1iKCdET00nKSxt PWIoJ2dvVVJJJyksbj1iKCdNdXNpY0NvbnN0YW50cycpLG89YignTXVzaWNFdmVu dHMnKSxwPWIoJ3R4JykscT1iKCdVUkknKTtmdW5jdGlvbiByKHMsdCl7dGhpcy5w YXJlbnQuY29uc3RydWN0KHRoaXMscyx0KTt9aS5leHRlbmQocixoKTtrKHIucHJv dG90eXBlLHtpbml0aWFsaXplTGF5ZXI6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5p bml0aWFsaXplTGF5ZXIoKTt0aGlzLmxheWVyLnNldE9mZnNldFkoLTEpO3RoaXMu bGF5ZXIuZW5hYmxlQmVoYXZpb3Ioaik7fSxpZ25vcmVDbGljazpmdW5jdGlvbihl dmVudCl7ZXZlbnQucHJldmVudCgpO30sc2hvdWxkU2hvd1NlZU1vcmU6dHJ1ZSxx dWVyeURhdGE6e2luaXQ6J3F1aWNrJ30scmVuZGVyOmZ1bmN0aW9uKHMsdCx1KXt2 YXIgdj17cmVzdWx0czp0LHZhbHVlOnN9O3RoaXMuaW5mb3JtKCdmaW5hbFJlc3Vs dHNSZW9yZGVyaW5nJyx2KTtyZXR1cm4gdGhpcy5wYXJlbnQucmVuZGVyKHMsdi5y ZXN1bHRzLHUpO30sYnVpbGRCdWNrZXRzOmZ1bmN0aW9uKHMsdCl7dmFyIHU9dC5s ZW5ndGg7dGhpcy5zZXRXZWJTdWdnTG9nZ2luZ1BhcmFtcyhzLHQpO3Q9dGhpcy5w YXJlbnQuYnVpbGRCdWNrZXRzKHMsdCk7aWYocyYmdGhpcy5zaG91bGRTaG93U2Vl TW9yZSl0LnB1c2godGhpcy5idWlsZFNlZU1vcmUocyx1KSk7cmV0dXJuIHQ7fSxi dWlsZFNlZU1vcmU6ZnVuY3Rpb24ocyx0KXt2YXIgdT10PjA/cC5fKCJMaWhhdCBo YXNpbCBsYWlubnlhIHVudHVrIHtxdWVyeX0iLHtxdWVyeTpzfSk6cC5fKCJMaWhh dCBoYXNpbCB1bnR1ayB7cXVlcnl9Iix7cXVlcnk6c30pLHY9dD09MT8iTWVuYW1w aWxrYW4gaGFzaWwgdGVyYXRhcyI6cC5fKCJNZW5hbXBpbGthbiB7bnVtYmVyfSBo YXNpbCB0ZXJhdGFzIix7bnVtYmVyOnR9KSx3PWwuY3JlYXRlKCdsaScse2NsYXNz TmFtZTonY2FsbHRvYWN0aW9uJ30sW2wuY3JlYXRlKCdhJyx7aHJlZjp0aGlzLmdl dFNlZU1vcmVFbmRwb2ludChzKSxyZWw6J2lnbm9yZSd9LFtsLmNyZWF0ZSgnc3Bh bicse2NsYXNzTmFtZTondGV4dCd9LFtsLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFt ZTonc2VlTW9yZSd9LFt1LGwuY3JlYXRlKCdzcGFuJyx7Y2xhc3NOYW1lOidhcnJv dyd9KV0pLGwuY3JlYXRlKCdzcGFuJyx7Y2xhc3NOYW1lOidzdWJ0ZXh0J30sW3Zd KV0pXSldKTt3LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdSk7cmV0dXJuIHt1 aWQ6J3NlYXJjaCcsbm9kZTp3LHNlYXJjaDp0cnVlfTt9LHNlYXJjaFBhZ2VRdWVy eURhdGE6ZnVuY3Rpb24ocyl7cmV0dXJuIGsoe3E6c30sdGhpcy5xdWVyeURhdGF8 fHt9KTt9LHNlbGVjdDpmdW5jdGlvbihzKXt2YXIgdD10aGlzLmluZGV4LHU9dGhp cy5yZXN1bHRzW3RdO2lmKCF1fHx1LnR5cGU9PSdoZWFkZXInKXJldHVybjt2YXIg dj10aGlzLml0ZW1zW3RdLHc9bC5zY3J5KHYsJ2EnKVswXTtpZih1LnNvbmcpe2lm KHcpby5pbmZvcm0obi5NVVNJQ19CVVRUT04uQUNUSVZBVEUsdyk7cyYmdGhpcy5p bmZvcm0oJ2hpZ2hsaWdodCcse2luZGV4OnQsc2VsZWN0ZWQ6dX0pO31lbHNle3Ro aXMucGFyZW50LnNlbGVjdChzKTtpZih3JiZ3LmhyZWYpaWYody50YXJnZXQ9PSdf YmxhbmsnKXt3aW5kb3cub3Blbih3LmhyZWYpO31lbHNlIG0ody5ocmVmKTt9fSxz ZXRTaWQ6ZnVuY3Rpb24ocyl7dGhpcy5xdWVyeURhdGEudGFzPXM7fSxnZXRTZWVN b3JlRW5kcG9pbnQ6ZnVuY3Rpb24ocyl7cmV0dXJuIHEodGhpcy5zZWVNb3JlRW5k cG9pbnQpLmFkZFF1ZXJ5RGF0YSh0aGlzLnNlYXJjaFBhZ2VRdWVyeURhdGEocykp LnRvU3RyaW5nKCk7fSxzaG93OmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNWaXNpYmxl KCkpe2cuaW5mb3JtKCdsYXllcl9zaG93bicse3R5cGU6J1NlYXJjaFR5cGVhaGVh ZCd9KTt0aGlzLnBhcmVudC5zaG93KCk7fX0saGlkZTpmdW5jdGlvbigpe2lmKHRo aXMuaXNWaXNpYmxlKCkpe2cuaW5mb3JtKCdsYXllcl9oaWRkZW4nLHt0eXBlOidT ZWFyY2hUeXBlYWhlYWQnfSk7dGhpcy5wYXJlbnQuaGlkZSgpO319LGdldFF1ZXJ5 U3VnZ2VzdGlvbjpmdW5jdGlvbihzKXt2YXIgdD10aGlzLnJlc3VsdHNbdGhpcy5p bmRleF0sdT10JiZ0LnR5cGUhPSdoZWFkZXInP3QudGV4dC50b0xvd2VyQ2FzZSgp OicnO3JldHVybiB1PT1zLnRvTG93ZXJDYXNlKCk/Jyc6dTt9LHNldFdlYlN1Z2dM b2dnaW5nUGFyYW1zOmZ1bmN0aW9uKHMsdCl7dmFyIHU9MCx2PTA7Zm9yKHZhciB3

PTA7dzx0Lmxlbmd0aDt3KyspaWYodFt3XS50eXBlPT09J3dlYnN1Z2dlc3Rpb24n KXtpZih2PT09MCl2PXcrMTt2YXIgeD0nRlInKyh3LXUpKydBUycrdSx5PXcrMTt0 W3ddLnBhdGgrPScmd3Nzaz0nK3grJyZ3c3NwPScreSsnJndzcHE9JytlbmNvZGVV UklDb21wb25lbnQocyk7dSsrO312YXIgej0nJndzc2M9Jyt0Lmxlbmd0aCsnLScr cy5sZW5ndGgrJyZ3c2JwPScrdSsnLScrdjtmb3Iodz0wO3c8dC5sZW5ndGg7dysr KWlmKHRbd10udHlwZT09PSd3ZWJzdWdnZXN0aW9uJyl0W3ddLnBhdGgrPXo7fX0p O2UuZXhwb3J0cz1yO30pOwpfX2QoImxlZ2FjeTpTZWFyY2hUeXBlYWhlYWRWaWV3 IixbIlNlYXJjaFR5cGVhaGVhZFZpZXciXSxmdW5jdGlvbihhLGIsYyxkKXthLlNl YXJjaFR5cGVhaGVhZFZpZXc9YignU2VhcmNoVHlwZWFoZWFkVmlldycpO30sMyk7 Cl9fZCgibGVnYWN5OlR5cGVhaGVhZCIsWyJUeXBlYWhlYWQiXSxmdW5jdGlvbihh LGIsYyxkKXthLlR5cGVhaGVhZD1iKCdUeXBlYWhlYWQnKTt9LDMpOwpfX2QoIlNl YXJjaFR5cGVhaGVhZFJlY29yZGVyIixbImV2ZW50LWV4dGVuc2lvbnMiLCJBc3lu Y1JlcXVlc3QiLCJLZXlzIiwiJCIsImNsaWNrUmVmQWN0aW9uIiwiY29weVByb3Bl cnRpZXMiLCJ1c2VyQWN0aW9uIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2IoJ2V2 ZW50LWV4dGVuc2lvbnMnKTt2YXIgZz1iKCdBc3luY1JlcXVlc3QnKSxoPWIoJ0tl eXMnKSxpPWIoJyQnKSxqPWIoJ2NsaWNrUmVmQWN0aW9uJyksaz1iKCdjb3B5UHJv cGVydGllcycpLGw9YigndXNlckFjdGlvbicpO2Z1bmN0aW9uIG0obil7dGhpcy5p bml0KG4pO3RoaXMuaW5pdEV2ZW50cygpO31rKG0ucHJvdG90eXBlLHtfZW5kUG9p bnQ6Jy9hamF4L3R5cGVhaGVhZC9yZWNvcmRfbWV0cmljcy5waHAnLGluaXQ6ZnVu Y3Rpb24obil7dGhpcy5jb3JlPW4uZ2V0Q29yZSgpO3RoaXMuZGF0YT1uLmdldERh dGEoKTt0aGlzLnZpZXc9bi5nZXRWaWV3KCk7dGhpcy5lbGVtZW50PXRoaXMuY29y ZS5nZXRFbGVtZW50KCk7dGhpcy5pbml0VGltZT1EYXRlLm5vdygpO3RoaXMuX29u bG9hZFRpbWU9MDt0aGlzLmluaXRTdGFydFRpbWU9aSgnc2VhcmNoX2ZpcnN0X2Zv Y3VzJykudmFsdWU7dGhpcy5ib290c3RyYXBTdGF0cz17Ym9vdHN0cmFwcGVkOjB9 O3RoaXMuX3Jlc2V0KCk7fSxfcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnN0YXRzPXt9 O3RoaXMuYXZnU3RhdHM9e307dGhpcy5hcHBlbmRTdGF0cz17fTt0aGlzLl9iYWNr c3BhY2luZz1mYWxzZTt0aGlzLl90b3ByZXBsYWNlPWZhbHNlO3RoaXMuX2luZmxp Z2h0UmVxdWVzdHM9e307dmFyIG49TWF0aC5yYW5kb20oKTt0aGlzLmRhdGEuc2V0 UXVlcnlEYXRhKHtzaWQ6bn0pO3RoaXMudmlldy5zZXRTaWQobik7dGhpcy5yZWNv cmRTdGF0KCdzaWQnLG4pO30saW5pdEV2ZW50czpmdW5jdGlvbigpe3RoaXMuY29y ZS5zdWJzY3JpYmUoJ2ZvY3VzJyxmdW5jdGlvbihldmVudCl7aWYoIXRoaXMuc3Rh dHMuc2Vzc2lvbl9zdGFydF90aW1lKXRoaXMucmVjb3JkU3RhdCgnc2Vzc2lvbl9z dGFydF90aW1lJyxEYXRlLm5vdygpKTt9LmJpbmQodGhpcykpO3RoaXMuY29yZS5z dWJzY3JpYmUoJ2JsdXInLGZ1bmN0aW9uKGV2ZW50KXt2YXIgbj1EYXRlLm5vdygp O2Zvcih2YXIgbyBpbiB0aGlzLl9pbmZsaWdodFJlcXVlc3RzKXt2YXIgcD10aGlz Ll9pbmZsaWdodFJlcXVlc3RzW29dLHE9bi1wO3RoaXMucmVjb3JkQXZnU3RhdCgn c2VhcmNoX2VuZHBvaW50X21zX2Zyb21fanMnLHEpO310aGlzLnJlY29yZFN0YXQo J3Nlc3Npb25fZW5kX3RpbWUnLG4pO3RoaXMuc3VibWl0KCk7fS5iaW5kKHRoaXMp KTt0aGlzLnZpZXcuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9uKG4sbyl7dGhp cy5yZWNvcmRTZWxlY3RJbmZvKG8pO30uYmluZCh0aGlzKSk7dGhpcy52aWV3LnN1 YnNjcmliZSgncmVuZGVyJyxmdW5jdGlvbihuLG8pe3RoaXMucmVjb3JkUmVuZGVy KG8pO30uYmluZCh0aGlzKSk7dGhpcy52aWV3LnN1YnNjcmliZSgncmVjb3JkQWZ0 ZXJSZW9yZGVyJyxmdW5jdGlvbihuLG8pe3RoaXMuX3Jlb3JkZXJJbmZvPW87fS5i aW5kKHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdhY3Rpdml0eScsZnVuY3Rp b24obixvKXt0aGlzLnJlY29yZFN0YXQoJ3BlbmRpbmdfcmVxdWVzdCcsby5hY3Rp dml0eSk7fS5iaW5kKHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdiZWZvcmVR dWVyeScsZnVuY3Rpb24obixvKXtpZighby52YWx1ZSl7dGhpcy5xdWVyeT0nJzt0 aGlzLnJlc3VsdHM9W107cmV0dXJuO31pZighdGhpcy5zdGF0cy5maXJzdF9xdWVy eV90aW1lKXRoaXMucmVjb3JkU3RhdCgnZmlyc3RfcXVlcnlfdGltZScsRGF0ZS5u b3coKSk7dGhpcy5xdWVyeT1vLnZhbHVlO3RoaXMucmVjb3JkQ291bnRTdGF0KCdu dW1fcXVlcmllcycpO30uYmluZCh0aGlzKSk7dGhpcy5kYXRhLnN1YnNjcmliZSgn cXVlcnlFbmRwb2ludCcsZnVuY3Rpb24obixvKXt0aGlzLnJlY29yZENvdW50U3Rh dCgnbnVtX3NlYXJjaF9hamF4X3JlcXVlc3RzJyk7dGhpcy5yZWNvcmRBdmdTdGF0 KCdlbmRwb2ludF9xdWVyeV9sZW5ndGgnLG8udmFsdWUubGVuZ3RoKTt0aGlzLl9p bmZsaWdodFJlcXVlc3RzW28udmFsdWVdPURhdGUubm93KCk7fS5iaW5kKHRoaXMp KTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdvbmxvYWQnLGZ1bmN0aW9uKG4sbyl7dGhp cy5fb25sb2FkVGltZT1vLnRpbWU7fS5iaW5kKHRoaXMpKTt0aGlzLmRhdGEuc3Vi c2NyaWJlKCdib290c3RyYXBwZWQnLGZ1bmN0aW9uKG4sbyl7dGhpcy5ib290c3Ry YXBTdGF0cy5lbmRUaW1lPW8udGltZTt0aGlzLmJvb3RzdHJhcFN0YXRzLmJvb3Rz dHJhcHBlZD0xO30uYmluZCh0aGlzKSk7dGhpcy5kYXRhLnN1YnNjcmliZSgnZW5k

cG9pbnRTdGF0cycsZnVuY3Rpb24obixvKXt2YXIgcD1vLmZldGNoX2VuZC1vLmZl dGNoX3N0YXJ0O2lmKG8udmFsdWUpe3RoaXMucmVjb3JkQXZnU3RhdCgnc2VhcmNo X2VuZHBvaW50X21zX2Zyb21fanMnLHApO31lbHNlIHRoaXMuYm9vdHN0cmFwU3Rh dHNbby50eXBlXT1wO2lmKG8uY29lZmYyX3RzKXRoaXMuYm9vdHN0cmFwU3RhdHMu Y29lZmYyX3RzPW8uY29lZmYyX3RzO2lmKHR5cGVvZiBvLmJyb3dzZXJDYWNoZUhp dCE9J3VuZGVmaW5lZCcpdGhpcy5yZWNvcmRDb3VudFN0YXQoby5icm93c2VyQ2Fj aGVIaXQ/J2Jvb3RzdHJhcF9jYWNoZWhpdHMnOidib290c3RyYXBfY2FjaGVtaXNz ZXMnKTtpZih0aGlzLl9pbmZsaWdodFJlcXVlc3RzW28udmFsdWVdKWRlbGV0ZSB0 aGlzLl9pbmZsaWdodFJlcXVlc3RzW28udmFsdWVdO30uYmluZCh0aGlzKSk7dGhp cy5kYXRhLnN1YnNjcmliZSgncXVlcnknLGZ1bmN0aW9uKG4sbyl7dGhpcy5yZWNv cmRBdmdTdGF0KCdudW1fcmVzdWx0c19mcm9tX2NhY2hlJyxvLnJlc3VsdHMubGVu Z3RoKTt9LmJpbmQodGhpcykpO3RoaXMuZGF0YS5zdWJzY3JpYmUoJ2JhY2tlbmRf dG9wcmVwbGFjZScsZnVuY3Rpb24obixvKXtpZihmYWxzZT09PXRoaXMuX3RvcHJl cGxhY2Upe3RoaXMucmVjb3JkU3RhdCgiYmFja2VuZF90b3ByZXBsYWNlIiwxKTt0 aGlzLl90b3ByZXBsYWNlPXRydWU7fX0uYmluZCh0aGlzKSk7RXZlbnQubGlzdGVu KHRoaXMuZWxlbWVudCwna2V5ZG93bicsZnVuY3Rpb24oZXZlbnQpe2lmKEV2ZW50 LmdldEtleUNvZGUoZXZlbnQpPT1oLkJBQ0tTUEFDRSl7aWYoIXRoaXMuX2JhY2tz cGFjaW5nJiZ0aGlzLnF1ZXJ5KXt0aGlzLl9iYWNrc3BhY2luZz10cnVlO3RoaXMu cmVjb3JkQXBwZW5kU3RhdCgnYmVmb3JlX2JhY2tzcGFjZV9xdWVyaWVzJyx0aGlz LnF1ZXJ5KTt9fWVsc2UgdGhpcy5fYmFja3NwYWNpbmc9ZmFsc2U7fS5iaW5kKHRo aXMpKTt9LHJlY29yZFN0YXQ6ZnVuY3Rpb24obixvKXt0aGlzLnN0YXRzW25dPW87 fSxyZWNvcmRDb3VudFN0YXQ6ZnVuY3Rpb24obil7dmFyIG89dGhpcy5zdGF0c1tu XTt0aGlzLnN0YXRzW25dPW8/bysxOjE7fSxyZWNvcmRBdmdTdGF0OmZ1bmN0aW9u KG4sbyl7aWYodGhpcy5hdmdTdGF0c1tuXSl7dGhpcy5hdmdTdGF0c1tuXVswXSs9 bzsrK3RoaXMuYXZnU3RhdHNbbl1bMV07fWVsc2UgdGhpcy5hdmdTdGF0c1tuXT1b bywxXTt9LHJlY29yZEFwcGVuZFN0YXQ6ZnVuY3Rpb24obixvKXtpZighdGhpcy5h cHBlbmRTdGF0cy5oYXNPd25Qcm9wZXJ0eShuKSl0aGlzLmFwcGVuZFN0YXRzW25d PVtdO3RoaXMuYXBwZW5kU3RhdHNbbl0ucHVzaChvKTt9LHJlY29yZFJlbmRlcjpm dW5jdGlvbihuKXt0aGlzLnJlc3VsdHM9bi5maWx0ZXIoZnVuY3Rpb24obyl7cmV0 dXJuIG8udWlkIT0nc2VhcmNoJyYmby50eXBlIT0naGVhZGVyJzt9KTtpZih0aGlz LnJlc3VsdHMubGVuZ3RoPjAmJiF0aGlzLnN0YXRzLmZpcnN0X3Jlc3VsdF90aW1l KXRoaXMucmVjb3JkU3RhdCgnZmlyc3RfcmVzdWx0X3RpbWUnLERhdGUubm93KCkp O30scmVjb3JkU2VsZWN0SW5mbzpmdW5jdGlvbihuKXt2YXIgbz1uLnNlbGVjdGVk LHA9bi5pbmRleC1vLmdyb3VwSW5kZXgtMSxxPXtocmVmOm8ucGF0aH0scj1vLmRh dGFHVD97Z3Q6SlNPTi5wYXJzZShvLmRhdGFHVCl9Ont9O2ooJ2NsaWNrJyxxLG51 bGwsbnVsbCxyKTtsKCdzZWFyY2gnKS51YWkoJ2NsaWNrJyk7aWYoby51aWQ9PSdz ZWFyY2gnKXt0aGlzLnJlY29yZFN0YXQoJ3NlbGVjdGVkX3NlYXJjaCcsMSk7fWVs c2V7dmFyIHM9by5yYW5rVHlwZXx8by5yZW5kZXJfdHlwZXx8by50eXBlLHQ9KHM9 PSdmcmllbmQnPyd1c2VyJzpzKTt0aGlzLnJlY29yZFN0YXQoJ3NlbGVjdGVkXycr dCwxKTt0aGlzLnJlY29yZFN0YXQoJ3NlbGVjdGVkX3Bvc2l0aW9uJyxwKTt0aGlz LnJlY29yZFN0YXQoJ3NlbGVjdGVkX3R5cGUnLHMpO3RoaXMucmVjb3JkU3RhdCgn c2VsZWN0ZWRfbmFtZV9sZW5ndGgnLG8udGV4dC5sZW5ndGgpO3RoaXMucmVjb3Jk U3RhdCgnc2VsZWN0ZWRfaWQnLG8udWlkKTt0aGlzLnJlY29yZFN0YXQoJ3NlbGVj dGVkX2RlZ3JlZScsby5ib290c3RyYXBwZWQ/MToyKTt9dGhpcy5yZWNvcmRTdGF0 KCdzZWxlY3RlZF93aXRoX21vdXNlJyxuLmNsaWNrZWQ/MTowKTt9LF9kYXRhVG9T dWJtaXQ6ZnVuY3Rpb24oKXt0aGlzLnJlY29yZFN0YXQoJ2NhbmRpZGF0ZV9yZXN1 bHRzJyx0aGlzLmJ1aWxkUmVzdWx0cygpKTt0aGlzLnJlY29yZFN0YXQoJ3F1ZXJ5 Jyx0aGlzLnF1ZXJ5KTt0aGlzLnJlY29yZFN0YXQoJ2luaXRfdGltZScsdGhpcy5p bml0VGltZSk7aWYodGhpcy5pbml0U3RhcnRUaW1lKXt0aGlzLnJlY29yZFN0YXQo J2luaXRfc3RhcnRfdGltZScsdGhpcy5pbml0U3RhcnRUaW1lKTt0aGlzLnJlY29y ZFN0YXQoJ29ubG9hZF90aW1lJyx0aGlzLl9vbmxvYWRUaW1lKTt0aGlzLmluaXRT dGFydFRpbWU9MDt9dGhpcy5yZWNvcmRTdGF0KCdib290c3RyYXBwZWQnLHRoaXMu Ym9vdHN0cmFwU3RhdHMuYm9vdHN0cmFwcGVkKTtpZih0aGlzLmJvb3RzdHJhcFN0 YXRzLmVuZFRpbWUpe3RoaXMucmVjb3JkU3RhdCgnYm9vdHN0cmFwcGVkX3RpbWUn LHRoaXMuYm9vdHN0cmFwU3RhdHMuZW5kVGltZSk7dGhpcy5yZWNvcmRTdGF0KCd1 c2VyX2Jvb3RzdHJhcF9tcycsdGhpcy5ib290c3RyYXBTdGF0cy51c2VyKTt0aGlz LnJlY29yZFN0YXQoJ290aGVyX2Jvb3RzdHJhcF9tcycsdGhpcy5ib290c3RyYXBT dGF0cy5vdGhlcik7dGhpcy5ib290c3RyYXBTdGF0cy5lbmRUaW1lPTA7fXRoaXMu cmVjb3JkU3RhdCgnY29lZmYyX3RzJyx0aGlzLmJvb3RzdHJhcFN0YXRzLmNvZWZm Ml90cyk7dGhpcy5yZWNvcmRTdGF0KCdtYXhfcmVzdWx0cycsdGhpcy5kYXRhLl9t

YXhSZXN1bHRzKTtpZih0aGlzLl9yZW9yZGVySW5mbyl7dmFyIG49dGhpcy5fcmVv cmRlckluZm87bi5vcmdhbmljLmZvckVhY2goZnVuY3Rpb24ocil7ZGVsZXRlIHIu dGV4dDt9KTt0aGlzLnJlY29yZFN0YXQoJ3NfY291bnQnLG4ucG9zaXRpb25fZGF0 YS5sZW5ndGgpO3RoaXMucmVjb3JkU3RhdCgnc19ib290c3RyYXBfaWQnLG4uc19i b290c3RyYXBfaWQpO3RoaXMucmVjb3JkU3RhdCgnc19vcmdhbmljX3Jlc3VsdHMn LEpTT04uc3RyaW5naWZ5KG4ub3JnYW5pYykpO3RoaXMucmVjb3JkU3RhdCgnc19j YW5kaWRhdGVfdG9rZW5zJyxKU09OLnN0cmluZ2lmeShuLnRva2VucykpO3RoaXMu cmVjb3JkU3RhdCgnc19wb3NpdGlvbnMnLEpTT04uc3RyaW5naWZ5KG4ucG9zaXRp b25fZGF0YSkpO3RoaXMucmVjb3JkU3RhdCgnc19vcHRpb25zJyxKU09OLnN0cmlu Z2lmeShuLm9wdGlvbnMpKTt0aGlzLnJlY29yZFN0YXQoJ3NfdmFyaWFudCcsSlNP Ti5zdHJpbmdpZnkobi52YXJpYW50KSk7fXZhciBvPXRoaXMuc3RhdHM7Zm9yKHZh ciBwIGluIHRoaXMuYXZnU3RhdHMpe3ZhciBuPXRoaXMuYXZnU3RhdHNbcF07b1tw XT1uWzBdL25bMV07fWZvcih2YXIgcSBpbiB0aGlzLmFwcGVuZFN0YXRzKW9bcV09 SlNPTi5zdHJpbmdpZnkodGhpcy5hcHBlbmRTdGF0c1txXSk7cmV0dXJuIG87fSxi dWlsZFJlc3VsdHM6ZnVuY3Rpb24oKXt2YXIgbj0odGhpcy5yZXN1bHRzfHxbXSku bWFwKGZ1bmN0aW9uKG8scCl7dmFyIHE9by5yYW5rVHlwZXx8by5yZW5kZXJfdHlw ZXx8by50eXBlLHI9by5ib290c3RyYXBwZWQ/MTowLHM9by5zX3Rva2VufHwnJztp Zih0eXBlb2Ygby5ncm91cEluZGV4PT0nbnVtYmVyJylyZXR1cm4gW28uZ3JvdXBJ bmRleCxvLmluZGV4SW5Hcm91cCxvLnVpZCxxLHIsc107cmV0dXJuIFswLHAsby51 aWQscSxyLHNdO30pO3JldHVybiBKU09OLnN0cmluZ2lmeShuKTt9LHN1Ym1pdDpm dW5jdGlvbigpe3ZhciBuPXRoaXMuX2RhdGFUb1N1Ym1pdCgpO2lmKE9iamVjdC5r ZXlzKG4pLmxlbmd0aD4wKW5ldyBnKCkuc2V0VVJJKHRoaXMuX2VuZFBvaW50KS5z ZXRNZXRob2QoJ1BPU1QnKS5zZXREYXRhKHtzdGF0czpufSkuc2V0T3B0aW9uKCdo YW5kbGVFcnJvckFmdGVyVW5sb2FkJyx0cnVlKS5zZXRFcnJvckhhbmRsZXIoZnVu Y3Rpb24obyl7bi5yZXRyeT10cnVlO25ldyBnKCkuc2V0VVJJKHRoaXMuX2VuZFBv aW50KS5zZXRNZXRob2QoJ1BPU1QnKS5zZXREYXRhKHtzdGF0czpufSkuc2V0T3B0 aW9uKCdhc3luY2hyb25vdXMnLGZhbHNlKS5zZW5kKCk7fS5iaW5kKHRoaXMpKS5z ZW5kKCk7dGhpcy5fcmVzZXQoKTt9fSk7ZS5leHBvcnRzPW07fSk7Cl9fZCgiVHlw ZWFoZWFkU2VhcmNoUmVjb3JkZXJCYXNpYyIsWyJTZWFyY2hUeXBlYWhlYWRSZWNv cmRlciIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Zh ciBnPWIoJ1NlYXJjaFR5cGVhaGVhZFJlY29yZGVyJyksaD1iKCdjb3B5UHJvcGVy dGllcycpO2Z1bmN0aW9uIGkoail7dGhpcy5fdHlwZWFoZWFkPWo7fWgoaS5wcm90 b3R5cGUse2VuYWJsZTpmdW5jdGlvbigpe25ldyBnKHRoaXMuX3R5cGVhaGVhZCk7 fSxkaXNhYmxlOmJhZ29maG9sZGluZ30pO2UuZXhwb3J0cz1pO30pOwpfX2QoImxl Z2FjeTpTZWFyY2hSZWNvcmRlckJhc2ljVHlwZWFoZWFkQmVoYXZpb3IiLFsiVHlw ZWFoZWFkU2VhcmNoUmVjb3JkZXJCYXNpYyJdLGZ1bmN0aW9uKGEsYixjLGQpe3Zh ciBlPWIoJ1R5cGVhaGVhZFNlYXJjaFJlY29yZGVyQmFzaWMnKTtpZighYS5UeXBl YWhlYWRCZWhhdmlvcnMpYS5UeXBlYWhlYWRCZWhhdmlvcnM9e307YS5UeXBlYWhl YWRCZWhhdmlvcnMuc2VhcmNoUmVjb3JkZXJCYXNpYz1mdW5jdGlvbihmKXtmLmVu YWJsZUJlaGF2aW9yKGUpO307fSwzKTsKX19kKCJTZWFyY2hUeXBlYWhlYWRSZW5k ZXJlciIsWyJET00iLCJFbnYiLCJNdXNpY0J1dHRvbk1hbmFnZXIiLCJUeXBlYWhl YWRVdGlsIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTScpLGg9 YignRW52JyksaT1iKCdNdXNpY0J1dHRvbk1hbmFnZXInKSxqPWIoJ1R5cGVhaGVh ZFV0aWwnKTtmdW5jdGlvbiBrKGwsbSl7dmFyIG49W107aWYobC5waG90byl7bi5w dXNoKGcuY3JlYXRlKCdpbWcnLHtjbGFzc05hbWU6J3Bob3RvJyxhbHQ6Jycsc3Jj OmwucGhvdG99KSk7aWYobC5zb25nKXtuLnB1c2goZy5jcmVhdGUoJ3NwYW4nLHtj bGFzc05hbWU6J3BsYXlCdXR0b24nfSkpO24ucHVzaChnLmNyZWF0ZSgnc3Bhbics e2NsYXNzTmFtZToncGxheUxvYWRlcid9KSk7fX1pZihsLnRleHQpe3ZhciBvPWwu YWxpYXMscD10aGlzLnZhbHVlLHE9bC50ZXh0LHI9W3FdO2lmKG8mJmouaXNRdWVy eU1hdGNoKHAsbykmJiFqLmlzUXVlcnlNYXRjaChwLHEpKXIucHVzaChnLmNyZWF0 ZSgnc3Bhbicse2NsYXNzTmFtZTonYWxpYXMnfSxbJyBceEI3ICcrb10pKTtuLnB1 c2goZy5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J3RleHQnfSxyKSk7fWlmKGwu Y2F0ZWdvcnkpe3ZhciBzPVtsLmNhdGVnb3J5XTtpZihsLmlzX2V4dGVybmFsKXMu cHVzaChnLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTonYXJyb3cnfSkpO3ZhciB0 PWwubWVzc2FnZT8ncHJlQ2F0ZWdvcnknOidjYXRlZ29yeSc7bi5wdXNoKGcuY3Jl YXRlKCdzcGFuJyx7Y2xhc3NOYW1lOnR9LHMpKTt9aWYobC5tZXNzYWdlKW4ucHVz aChnLmNyZWF0ZSgnc3Bhbicse2NsYXNzTmFtZTonY2F0ZWdvcnknfSxbbC5tZXNz YWdlXSkpO3ZhciB1PWwuc3VidGV4dE92ZXJyaWRlfHxsLnN1YnRleHQ7aWYodSlu LnB1c2goZy5jcmVhdGUoJ3NwYW4nLHtjbGFzc05hbWU6J3N1YnRleHQnfSxbdV0p KTt2YXIgdj1sLmNsYXNzTmFtZXN8fGwudHlwZXx8Jycsdz1sLmlzX2V4dGVybmFs

PydfYmxhbmsnOicnLHg9IWwuc29uZyYmbC5wYXRofHwnJztpZih4KXtpZighKC9e aHR0cHM/XDpcL1wvLykudGVzdCh4KSl4PWgud3d3X2Jhc2UreC5zdWJzdHIoMSk7 eCs9KHguaW5kZXhPZignPycpPjA/JyYnOic/JykrJ3JlZj10cyc7fXZhciB5PWcu Y3JlYXRlKCdhJyx7aHJlZjp4LHJlbDonaWdub3JlJyx0YXJnZXQ6d30sbik7aWYo bC5zb25nKXt5LmlkPSdtYl8nKyhNYXRoLnJhbmRvbSgpKjFlKzA2fDApO2kuYWRk QnV0dG9uLmN1cnJ5KGwuc29uZy5wcm92aWRlcix5LmlkLGwuc29uZy51cmwsbC5z b25nLmNvbnRleHQsbC5zb25nLm1lZGlhX3R5cGUpLmRlZmVyKCk7eS5vbmNsaWNr PXRoaXMuaWdub3JlQ2xpY2s7fXZhciB6PWcuY3JlYXRlKCdsaScse2NsYXNzTmFt ZTp2fSxbeV0pO2lmKGwudGV4dCl6LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcs bC50ZXh0KTtyZXR1cm4gejt9ay5jbGFzc05hbWU9J3NlYXJjaCc7ZS5leHBvcnRz PWs7fSk7Cl9fZCgibGVnYWN5OlNlYXJjaFR5cGVhaGVhZFJlbmRlcmVyIixbIlNl YXJjaFR5cGVhaGVhZFJlbmRlcmVyIl0sZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWEu VHlwZWFoZWFkUmVuZGVyZXJzKWEuVHlwZWFoZWFkUmVuZGVyZXJzPXt9O2EuVHlw ZWFoZWFkUmVuZGVyZXJzLnNlYXJjaD1iKCdTZWFyY2hUeXBlYWhlYWRSZW5kZXJl cicpO30sMyk7CnZvaWQoMCk7Cl9fZCgiVHlwZWFoZWFkU2VhcmNoRmlsdGVyIixb IkFyYml0ZXIiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdBcmJpdGVyJyksaD1iKCdjb3B5UHJvcGVydGllcycpO2Z1bmN0 aW9uIGkoail7dGhpcy5fdHlwZWFoZWFkPWo7fWgoaS5wcm90b3R5cGUse19zdWJz Y3JpcHRpb246bnVsbCxlbmFibGU6ZnVuY3Rpb24oKXt2YXIgaj10aGlzLl90eXBl YWhlYWQ7dGhpcy5fc3Vic2NyaXB0aW9ucz1bZy5zdWJzY3JpYmUoJ3NlYXJjaC90 eXBlYWhlYWQvdXBkYXRlRmlsdGVyJyxmdW5jdGlvbihrLGwpe2lmKGwuZmlsdGVy X3R5cGU9PSd3ZWInKWouZ2V0VmlldygpLnF1ZXJ5RGF0YS5mb3JtPSdGQktCRlIn O2ouZ2V0VmlldygpLnF1ZXJ5RGF0YS50eXBlPWwuZmlsdGVyX3R5cGU7fSksZy5z dWJzY3JpYmUoJ3BhZ2VfdHJhbnNpdGlvbicsZnVuY3Rpb24oayxsKXtpZihqLmdl dFZpZXcoKS5xdWVyeURhdGEuZm9ybSlkZWxldGUgai5nZXRWaWV3KCkucXVlcnlE YXRhLmZvcm07ZGVsZXRlIGouZ2V0VmlldygpLnF1ZXJ5RGF0YS50eXBlO30sZy5T VUJTQ1JJQkVfTkVXKV07fSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2Ny aXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGope2oudW5zdWJzY3JpYmUoKTt9KTt0 aGlzLl9zdWJzY3JpcHRpb25zPW51bGw7fX0pO2UuZXhwb3J0cz1pO30pOwpfX2Qo ImxlZ2FjeTpTZWFyY2hGaWx0ZXJUeXBlYWhlYWRCZWhhdmlvciIsWyJUeXBlYWhl YWRTZWFyY2hGaWx0ZXIiXSxmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iKCdUeXBl YWhlYWRTZWFyY2hGaWx0ZXInKTtpZighYS5UeXBlYWhlYWRCZWhhdmlvcnMpYS5U eXBlYWhlYWRCZWhhdmlvcnM9e307YS5UeXBlYWhlYWRCZWhhdmlvcnMuaW5pdEZp bHRlcnM9ZnVuY3Rpb24oZil7Zi5lbmFibGVCZWhhdmlvcihlKTt9O30sMyk7Cl9f ZCgiVHlwZWFoZWFkUmVndWxhdGVNZW1vcmlhbGl6ZWRVc2VycyIsWyJjb3B5UHJv cGVydGllcyIsIlR5cGVhaGVhZFV0aWwiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxoPWIoJ1R5cGVhaGVhZFV0aWwnKTtm dW5jdGlvbiBpKGope3RoaXMuX3R5cGVhaGVhZD1qO31nKGkucHJvdG90eXBlLHtf ZmlsdGVyUmVnaXN0cnk6bnVsbCxfZmlsdGVyOmZ1bmN0aW9uKGosayl7aWYoai50 eXBlIT09J3VzZXInfHwhai5tZW1vcmlhbGl6ZWQpcmV0dXJuIHRydWU7dmFyIGw9 aC5wYXJzZShqLnRleHQpLnRva2VucztpZihsLmxlbmd0aD09PTEmJmguaXNFeGFj dE1hdGNoKGssai50ZXh0KSlyZXR1cm4gdHJ1ZTt2YXIgbT10aGlzLl90eXBlYWhl YWQuZ2V0RGF0YSgpLmdldFRleHRUb0luZGV4KGopLG49aC5wYXJzZShrKS50b2tl bnM7cmV0dXJuIChuLmxlbmd0aD4xJiZoLmlzUXVlcnlNYXRjaChrLG0pKTt9LGVu YWJsZTpmdW5jdGlvbigpe3RoaXMuX2ZpbHRlclJlZ2lzdHJ5PXRoaXMuX3R5cGVh aGVhZC5nZXREYXRhKCkuYWRkRmlsdGVyKHRoaXMuX2ZpbHRlci5iaW5kKHRoaXMp KTt9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLl9maWx0ZXJSZWdpc3RyeS5yZW1v dmUoKTt0aGlzLl9maWx0ZXJSZWdpc3RyeT1udWxsO319KTtlLmV4cG9ydHM9aTt9 KTsKX19kKCJsZWdhY3k6UmVndWxhdGVNZW1vcmlhbGl6ZWRVc2Vyc1R5cGVhaGVh ZEJlaGF2aW9yIixbIlR5cGVhaGVhZFJlZ3VsYXRlTWVtb3JpYWxpemVkVXNlcnMi XSxmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iKCdUeXBlYWhlYWRSZWd1bGF0ZU1l bW9yaWFsaXplZFVzZXJzJyk7aWYoIWEuVHlwZWFoZWFkQmVoYXZpb3JzKWEuVHlw ZWFoZWFkQmVoYXZpb3JzPXt9O2EuVHlwZWFoZWFkQmVoYXZpb3JzLnJlZ3VsYXRl TWVtb3JpYWxpemVkVXNlcnM9ZnVuY3Rpb24oZil7Zi5lbmFibGVCZWhhdmlvcihl KTt9O30sMyk7 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=174812_374392902581662_916734706_q.jpg Content-Type: image/jpeg; name=174812_374392902581662_916734706_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/174812_3743929025

81662_916734706_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/fPnrxRyT1/SkAychaMc9P0rxjQUk+v6Uc44NIfcfSgn2Pvx QAvPY0c5zmkz7H8qX/gP6UAHz+1FG4+n6UUAfl8P+DkrTtM/bzvv2PfFX7F+r2+g 2Pxnb4cSePrDxelz/p7Xb20Mv2L7KjbWKb2USEqucFiAD932n7bP7IN78RfEnwit v2l/BL+KPB9hPe+KdCHiO3+06XbwrunlmTflFjHLk/cH3sV+JGrf8Env+Cj97/wV q8S/G34cfsc6jpUl1+1C/i3RfjPc+LbeK2svDwv55Jo/sfnYmWVJEkPymUhDGFw7 VB8Pf+CQX7fPhj9q7xx4c179nrxdeXGmT/EDUdP+I1ne6PbabrcWqaZcw2q+f5H2 q8e5LrGbd5gIWk3YjBkNfrOY8LcJVqFKWHxMabVFSklOM25vk1ac9Em5JpPm/uJR blpGdKpUalZa2VtFa+t276226db9F+pXxM/4LLfsyeEPjX4f8F+BfGngjxj4Ku/D et6v4s8caF8TtNaTQRp+nG/WJbAt5t4ZoygDRsAm/LcA42/gT/wWO/YO+Kv7NPhD 9pjxx+0B4S8B6d40urm303TPFXie0iuYZ4ZNrwygPhJFRoXdc4QTJk8gn86fhR/w Rm+OWhWP7LXhu2/ZItdKjtvgn8QtP+L09xHabItf1PR7u1tmvcOTM7s1uiuN4VUU ZAXjwfxh/wAE2P2/fGX7I3wk+AfhD/glxLpN9pPgXxJpmu62dK0lNTm155ZP9Jnn uiyQ28kHkbJVUTSNFiOVSFYZf6qcLVoqlTxWqlZy5qS91SrJyac7XfJBrlfwtaNy u6jPDTS93l0vq3e/KrLZ9XrotuiTv+m37QH/AAXi8AfAD9tX4h/sia/8FGvLXwT8 J7vxpp3i628VKIdZaHSRqS2SxfZyIzJGJFWUSOPkB2EHjuv2PP8AgtN+y18d/wBj Pwp+15+0V4q8OfBeDxdreo6Zpmi+LPF8LmSS0uDC5SV44d44Vm+QBN4BPc/mf45/ 4I0ft2fGXxJod7rHwT1bT3j8LfCHQ9Rv7i/ttxsodEl0nxBEf3pJEKTnzB/EqHZu 4rD+LX/BMb/go9efswfDL4A2n7CI1WaO4+IAk1KO30ufUNHub+9na1DzXTvDbWsk TRSeYi+ZkYR45AhrapwzwhWw1KjTrpVLxUpKpHaKqc8kpNR973GlfRJpblReHkle y/D7Ksr69b30+4/oJ0nXdE8QaVa69oWq297Y3tulxZ3lpMskU8TqGSRHXIZWUggg 4IINFfn7+yD8CP2xvhn+yZ8L/hv4n8JeKNN1Pw/8O9E03UdO+3D/AEWeCwhiki+W Qr8rIV4JHHFFfEV8kwlKvOEcVBpNpO61SbSe/VJP5nCqsmr8v9fcfoYQAcYo2r0x 9Kdz2pMHH/66+cNgKoOQtG1eu0UuOeaPzoQCYXPC0bV67eaXHNJ+NAC/QH9aKPxP 5GigBCBu6UADI4oopABA2jjtSkDB4oopoAAGenrS4HpRRTAKKKKAP//Z ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=UlIqmHJn-SK.gif Content-Type: image/gif; name=UlIqmHJn-SK.gif Content-Location: http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/yo/r/UlIqmHJ n-SK.gif Content-Transfer-Encoding: Base64 R0lGODlhMgAyAMQAAPP1+dzh7eXp8tHY58jR4s3V5O7x9vn6/Oru9NTa6Pz9/uns 8/b4+vX2+v7+//b3+trg7MvT5MfQ4vj5+9fd6t7k7uPn8MbO4czT5PHz+NXc6dbc 6dLZ6MbP4f///8TN4CH5BAAAAAAALAAAAAAyADIAAAX/YCeOZGmeaKqubJt+cCzP dG3feK7vfF8PFcMk4ivaCIGMZ+kJGJ8xDYBJHUCNmAd164FcexWuGPHVLcToR/km QLvV61nETffGY206unGPKfViDn0wDIBogx8HhmIdg4qLWxeDE5BbjX1alUyIU5pL iH+aCohnnhODBY+eG32lnh5wcRCvSwt9A7RNfRK5HIO5RH2znraIrwSIH6GLgskB mgbJHxeaCdIfBpCj1x+QVtzLdNwwnYDjiYuX15AY3LyLGtcEmvHJGpoC0nmQfMkK nsHidLCQC0FAKBgQ5KKSwZeRDeUWUjngZIcEC/8k0lnQzsaAbBoXNaAwgwKlkKIq A3wIAQA7 ------------QfbhZNivKLE4FzH5QJnERC

Content-Disposition: inline; filename=275294_100001179982644_459486287_q.jpg Content-Type: image/jpeg; name=275294_100001179982644_459486287_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/275294_1000011799 82644_459486287_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+lvFWnMFCKnAlAGPcgV8DftTfsHftffE/wCMmt+P9S+CurTx Xl0I9JjSxdkMKqFjPAx90Ak56k1+p3hDwCNW+KHh2zuoA0Fx4gs0kGM/KZ0Br9BN X03T77TZYL21WVDGcrsyenavybw0yvCNYnEVY3l7sU77J3b06307bHp5jOrJUo30 1uu+1tT+UzU/+Cevx1hF4PFfguDTjE2PKuGXcGI5AAz0r5u+Nvwo8T/B/wAQppes QCKYIJraeHjHQgg+oNfv/wDtSfB/U9O8Val4j1DTXtLZ53cRzLgkE56fTmvx+/b+ 0k6r43k1M22II4xBFJj5eK+9rYN0ZPme3Q0xOEo08PzQWvci+E3x107W/hHZ+LPF GsCG4tYzFqMkshA3xnBfn1AB/Guin+OPge3t47qXXgokZBHhmO7f90gDsetfLep+ HvEmhfs/3d1qOi3FvZ3usK9lcyQsqzL8gOCRyMqfyNcd8NbnUrnxjBBbAzSHaUhL Y3+Xg4/IEVyuM5KUua1v+AeS6UYtcy/Q+61+Mfg8KA/iN1YDkY6GivnWa1xKwGjQ gbjgEDiivN9vV/r/AIcj2NPu/wAD+lfRpP8AhE/Etj4ijso5zp99FcCKTOG2uD25 zx+Y717bdftK/ECx0vxNf638CtQsY9B0KPU4rk6kjwXaNuJVZNvyuqgNtK569+K8 r1WGzhlkicABlycD3r1Xx/4ztPF/7JWvavFOhmi0N4LxSwH7xQAw/wCBDkD/AGhX BwHiaEKtbBxt71pLvfZ69dLafM9ypQ9pGnOS68r+fX8z43/bS+J37UPxn8C+H7/w r8FRbWniGaWD7RYGK9uVjUJiWbzShRHDELsQ/cYnbjJ/N39tf9l7XfDHhNtL8cWq x6hJcJL5MnDLtYZB9MjNftx+yX+0H4Q1X4Ta14fv4reLWfCA8u7hTZIDGV3RlXXK sAcg46EV+Tv/AAUd+Jd749+JOseK9euiU8+QrvIxgGv0bMYxq0lpqvRfP9D0sNQd OdSnUvy3tr6X07JHwj+3h4uutP8Aglpfgx7RI/tGoRrGBCqYgjDMMBegLYxnnA9q +R/CGrSaJ4pstVjODDcqT9M8/pmvTv2ifiX4m8f280HiTVTdm21mT7BLhc/ZvmCK MDooGAfQivLEtY0sIrkRkO80ilvUDbj+deK3e6l1/wAj57G11Xr3jstF8rnqupeO b2LUbiIbBtncdfQn3orzuXVrqeVp5JV3OxZssOporzFh5W2OQ/rL8RXiDeSW4DZI riLT9qHSPhTrEvhzxhoz6l4f1iVbfU9Ojt0nknYkhRHG6sCQDk8fdzyMZGz8WdYn ttIvv+EekiN29q/2RXcANJsJHJ968L8T6VIda/svSWNzdeXLHd3jc/Z7eNUZh/vS Fl9zuB6Ct/BzgrD47nzjML8kbxpq7V3b3ptrpG/Kls5X0dkjzuL+KqmVzhgMNbmd pS8l0Xz6+W2rLPxc8R2vwA8c6lrPgDV3TwvrehG4jaK+tPIlMh3KVWJBsRRxhmLZ zkDgV+Tv7bX7Q+rfFvxLc+E/DxaW3kuS13cQL8sgzwikdR6n8PWv0v8AHHwG0nTt Z1jxz4z1K91qK/0sWcdgF2QWNiAzNHFGpyzMxZmcnJ4AAAxXzxN+xV8KNX+MY+H+ laZf5hs3vL/VXQiAHCtHbRsf9YzB9xKkhVGOrZX9pnwrhqzdWNZWT/l6fLd99EeN PxAVelyKnbTW22i1/rdn5+fDP9m/VviPrsVvJpLyRSnB80YMgz8zewHQfSu1+Iv/ AATO1vUvDNxbeBNQittY092ePTboYS6BGSoYfdfjr904HTmv0E+GHwS8O+GPiXPZ w6XHFJHAsccewfdAGAo9xz/wE+uav+JvB8GoahF4k0/I8p3guFHGAOnf3BB6cjOA Vr1VwvkKoOjVhzt/a2eu1rbHyuK4txyxHNSlZLW26fqfjLcfAT466dO+nzfDbWVe BzG6iwYgFTgjIGD0or9Zr680u1vZra58caRHJHKyyJMHDqwOCG989aK8P/iH+U/9 BEv/ACX/ACO1ca4q38D/ANK/yPsf49TTCO2IlbhSR83Q/LzUPhmON77xA7oCx1XU FJI5IVwqj8BwPQcUUVz+HyS8LcBbtP8A9PM5+N/+Siq+q/8ASUT+J4o576ZJ41df 7JmGHGR0H+JrgfHQES+CbiIBZGNurOvBIMiggn0IJB+p9aKK+ppfHT9X/wCkyPks PvL0MiKNB8brLCD54X38fe4g6+vU/nWGWZbPUgpICalclQOxVI9pHpjc2PTcfU0U V3y+16L82cdT4l6I/NP4rTzyfFLxLJJM7M2v3hZmYkk+e/NFFFOEY8i06L8kfpUP gXof/9k= ------------QfbhZNivKLE4FzH5QJnERC

Content-Disposition: inline; filename=276119_100000905866170_776786025_q.jpg Content-Type: image/jpeg; name=276119_100000905866170_776786025_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/276119_1000009058 66170_776786025_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/RX46/8ABab/AIJz/C3X5vC4/aQstUv7STbPa+HrO4ulYjqo nSPyc/8AA8DuRXv/AMKP2of2cfj94Dh8dfD74q+HNa0i7ulWGZdatnVZVG7bteQF HA524BGOnFfzUeAv2UPE2sfDa9+Lmm+GdWfQbK8Frd+IbjDQvMcLtVQdzDcw5UHH IOCDje/Z41H48fsr/GbSPiN8F5ILm7E377SLtBNa36MceW8LcHr14KnkEGvBoZh7 Co+ZaM92eTVKtJWvf8z+nC017wvdxbrHXYDGCCXi1KJhj8JCKmNtqF2n2jRNUtrh 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 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=261021_100002050451769_487935436_q.jpg Content-Type: image/jpeg; name=261021_100002050451769_487935436_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/261021_1000020504 51769_487935436_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+Uv2c/22vHX7Fmka58I9Y+Pkuhve6hcLquiaJeJdDfHGyq5a AuGB5wV3ZBUjIxh/7Jv7Tf7MHxZ8Sa7rfxH8fN4Vu/trSGLVtsKXsAKgtFIPlWRg GYq5B3EYyMmnah+wf4/8d/GizS3+D1pqtwniQ3j3mj24kW6sNjBj5Iy6kkgcqTud SOFJrpNO/Yj+Ifw3+IPiHwp4x+CGhReGrVIHmsNd0hrm9SYhZHaKFW228GCCZmIJ B2gMOnkv6pVxMpKN7pvddPLqe/7TFQy6NSEtIvTTuu7Oi8feO/gX8UfFEHiPwb4o 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 2Q== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=371103_100002655861471_7407847_q.jpg Content-Type: image/jpeg; name=371103_100002655861471_7407847_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-ash2/371103_1000026558 61471_7407847_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/Crwf8ZvG3gJp/8AhFZrO2E9zDO+dNgc74ixTBZCQBuYEDgh iDmuntP2o/ijp+n6dNpF1aLPpqW8Vmf7EtBHbpbrOkOF8vEjBbiX5mBOSCclVIm+ Bv7HXxk+NurWsWn+GLuy025aPOrXNuwiVGkCFx/eCjcx9l9SAeP8UeCbzwpqd3pl vdrcwWty8K3KEYl2kjcACeDjI56YrF1KXNyp6nVGjXUeaSdmS2vxq+JGm3r31prC RSyaB/YrsLKLmx4/dH5fYDd97AxnHFbA/ar+OCmby/FNugn1C2vZEj0i1VfPtzbm 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 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=186894_100002300528446_1691502563_q.jpg Content-Type: image/jpeg; name=186894_100002300528446_1691502563_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/186894_1000023005 28446_1691502563_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/QiL486XoUYv0vIC5csVBwSOw5riv2Jv+C0/7Jf7XOqHwn4X +IkGj+Ko5JILnwdrcqx3Qmj3BxEwPl3K/KxzGzYHJAzX8+Pg79sD9q7wnqmp/E3w 58WLy1bxNfefq8N2BMl43+sEaearhGVHUAgKAsmNwxx5VN4Zi1TTL3xrZaprFp4h udbkvPOE5ZkBw+9ZIx98N5j/AHg/3QFJ5ryKWQYlUvaVHaLSs9bXa81b5XuSqcFV dNv3l9/3bn7rXP8AwdpfAnwZ+0H4y+GniL4OhvCWjar9i8OeJLPV2EmoCOXy5Zmj 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 ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=276287_100003012535113_1262998502_q.jpg Content-Type: image/jpeg; name=276287_100003012535113_1262998502_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/276287_1000030125 35113_1262998502_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A8s8ajWPDXxKtNN8UXlnp0NnqEqTXlxIXSzmhI3OwQHfjPyhc 7mA4PQ6VtqFr4jsBpkd5p6RRyyZmuHaa71RgRtcOY9yqnzn5yoYSjAJU1N+1DqXh S98UWep6Josd1ZTavb+VZTSrBbK4jljZSyP8hKpCxy4PPzAjGaumeLI9S8W2GnW6 +G9NtruW6vLOwsYArtD5cwaByiABkaLeueG3EgndivlsVmtTG4nD4qS10fRJWaur avq076W131XbRyShl2VV8FbpNeb0lZvS3SL9dFsj7i+EvjLR/iV4KsvEXhTTJ4YZ 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 oxjyrQ/nSc5871e/dn//2Q== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=203304_100001839117739_980045447_q.jpg Content-Type: image/jpeg; name=203304_100001839117739_980045447_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/203304_1000018391 17739_980045447_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+I/j98YYPg38OrnxTFbLNdn93YwOeGkPc+w6n8u9fEeqfF34 xfFHxEupa3401CRkJaMfaDHHEM9FUYAFe3ft6eLbBvENh4W1KdzbWVkLmaKMjLtI xAH6A14F4NsPFnjvUrfRvCGlxhTLtFsGPzgnBZu+Bnr2r1M5x9SNWUFK0Y+dvUVG hOtJQirt7I+hv2cv22tZ8E67beCfiF4gfVdLYhHnmfdLbc43Kx5YDup7dPSvsm0u LbVLWK902VJ4rgBoZIhuDqQMEY6g5r43+G3/AASz8f8Ai601LxBr3iO202OxtTIP

LvI3YS84GCQSOhGByM9K9g/YZ8ba1qejXHwo8VSrJqPhiYxvmUfPCpYde+Cpx7Yq OH8+w2MrvDxnzO1z08VlGOwEIyrw5U9F8j1kW8gkdmAOclR71mXlpG0hbbnI9e9b l1CsU3kIxY5496pXNqqYDkB+eK+xSZ5lSF1YwmgAJBB6+tFXWhGT8rdfSiqOPkfc /Pv9t3W7jU/2hNZs2bC26W8QUe0Kn+bGvYv+CaXxN+CPhy21Lw7450iI6xMG+zXD cNsIwCvIyRzwc143+1RpsPiD49a74h0a1vhp88kBgk1G0NvIx8lM5Q8j7rY9fxry /TILz7bjTLiRZ1kAh8okMxJwMY+or81z7BwzL2tGUrXe69fyPfyXM3luMhiVHmXZ ro/XZn6K6z8RtS1V7zSbfV5praC2+zyXcGmtBFb2yEtu3kb5pQo6gqgHrXkn7Ini /wAB6d8afFnjbxX8W9L8N2cum3Nzp7ajbXMwvpPMAit1WBGIdgScthQB16V5fo3x J/afHwn1HQY9V1g6XJZtDdsbUsRCRypkK7guO2elcX8K/AfiT4keN9H8A+H9bsdO vr658u1vNUvhawQso3AtI3C9OO+cY5rw8lwv9m1JzUkmtLry1u9PwPoeIMzlmaox hF3etn3eiSPufQv2qfCXin4p2Pw8sb60u572R0SW2hnhKFUL5KyoMggHv6cV6N4h k8nbKzFeoyK8x/Yk/ZD+K3w9/aOtP2lPix4s0HxNa+HreZzb6Zfx3hvJGgaLy2zt 2BVkLbsNymMc5r3W7+LHw28V/G62sPh1oWiatdX2qfZG8MXz7YYHKkO+drKyg4IA DDk44xj7HLOK8JiK6wqk6k3tZde2x4uKyfMcJhJYivDlirt3aWi3drnBf2wi/L57 ccfforM8Rr4kh8Q38Unh+GJlvJQ0UV2mxCHPC/uxwO3Aor6xVcRb+Ez5tY3BNfGj 4a/a/wDiJpPjn4uC88Hag09rDYRJ5iqRuk5zwfYrXJ/Bbw1FrnxL0TSb60eZLnVI EkjiJ3MrSKCoI5yQSOKs6/4b1LUruXxZJtaW6tjeyBZt2AV3kZ9QCMjtjFdH+yu8 I+MHhrVJ9hx4js40jJ5OJUyf61+f18RHEVJzj3Z3QUocvMfrcv8AwTx8a2f7Lesr 4C+KFpJaXfhia6ew1nw+jz5MDFofPEi84yoZo89OtfmV8KvDel/B79qm0sPG+jaD LYWmpT2d4/iqzF1Y25dTGZJYwrFwpORgcHB7V/Qz4N8P2cWiv4PvEjfTnt/PZ5Tx 5ZG5kPXuPYYbivwG/bgtI9M+KniTxBpURNvd6rN5G5AfMQStGXPpuwGx7kdq8ulR pRUuRJOV726vue7iMxrYmMJTd3Tat6dtvLzPUPFlp8DvALXPiHUfgudBuJt8eleK vh74r8zTLpmXALRFsIME8NGPzrT+EF74Tvfjt4O8UeFXGoy6fq0E2o6jPK0UmCGU IUU4cg4IJ7EcVwHifS/CHhD4BafoLTSCTfDcaZDcHLRLNGXdNxALJkFhwME45GK4 P4C+JpdL+NnhiwsLqVI31qIyBZcK3zqMEDrWvDOAjHP6KnJu0vl+Lf3XaFxDmntO H68qcUk09rJq68kl87J9z7F8XzQyeLNUkSJiG1Gcg56/vGop+uCKbWryXn5rqQ/m xor9rkpczPxOGJkoLXoj4C8T21vbW+s21vbpHHFqcqRRogCopDZAA6A4HHtXI/Ap mX4laHtYj/if23Q/9NFoor8WwrbhP1P1ivpKPoj+mi+dx8GdQIcjb4UuWXnoRCcE fSvxE/4KOW1vb+J7tIIERW1MBgigAj7PZN292Y/Un1oooofGEfgkcr+0oTHpfhBE O0PolszAcAn7P1Pqa88+DJI+NHhog/8AMft//Rgoor0Mk/5HtL1X5meZ/wDIjq+j /I+79QA+3z8f8tm/maKKK/V3uz8bWyP/2Q== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=370799_100002870181840_2092360952_q.jpg Content-Type: image/jpeg; name=370799_100002870181840_2092360952_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/370799_1000028701 81840_2092360952_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+1VtwVJRcZ7HtWXql4LVDkgEHFbflsO4+uK8N/bO+MN78I/h ndaro04XUL2dbOxcc7HYEl8eyhiPfFfwlgcNXzHGU8PS+KTSWp9nTjFRu0afxD/a V+FXwuPkeL/F1vDcBcm0iBll9vkQEj8a5zwx/wAFFP2fr7UI7C71TULVWbAnuNNc J6ZyMkflXyF8K9NPiXWrvVdeja8mk+cy3JLFnPUknqa9UtPgX4c1qzMj6TEGbBAX AP4V+rQ4NyPCwdHEznKfdNJa9lZ/mddDLcbjIqVO1n0sfengvX9C8Y6Hb+IPDOo2 97Z3Cbobi2kDKw+orpIdK3AO/wCQr5M/Ypt7v4TfElfCba3Kuj6wpjGnzHKpcfwO voT90+uR6CvtGGzAjGU5PfFfmmd4B5Vj3QjJyW6e10/nv3Mq2Dq0JONVWZiHS8kk

Mo9ttFbJ02LJzIfxFFeZ7Sp3OX2Hl+B59cKiwMSBk+9fHf8AwUVcX9lomlQsJTHq LzTohzsATAz6Z3Gvr3UrpolZz74r5l/aFsHvLu/sTB5sd1L5jS7QSBwNuT0wST+A r6Lg6EIZ1GrJ2cU2l3fY9LA4ani5ShzWaV1526Hk/gHwTbWOmQ7HS3Cxb7iYjdjH PT1r0f4Z6/perTw6VDGZ7OYsIr2eJonYg4OOoODjitP4G+DNM1mby9Vh3og+ZenF dD4+8O+HtHubaSKK1t33EyXDusaRxrjBZjgDqPqTX6rCvGUHGavJ9T7DDYSpCMJQ dl1MfTb7w5e/F7Q/DGiyTyXg1i3WSWEriM+cvI5ySOvA7V93WtirKABggdx0r49+ Gfwi0iw+Lmi67pYhlvv7btZTLDJvD/OMjI9AzfnX23BpyCPG0nPcDivzTjapB4yk odI9d731PAzvnhib1Hvt6dDK/su3/wCeBPvkUVsixfHG0fXNFfHe0l3/AK+48L28 O583+IbuURvErYOOvcV81/tC63cabdQwx3JEk9yABu+8oyT9e3516n8TPiXBZRza Zo915l2VK+ZGc+WfXJ4JHp+dfM/jTSPEMOqpq2qazearahyZjPI0kttk9Rk8r646 V+ocJcFZpXX15wajHVLq/NeRlhcXQjWjCUrPueo/CHxxaW8RCPslHDex6V0OuXd5 earG0lijQyEFZ5ZPlBxx9K4vw/4R03V/D0GuaRqSibYCk0JBDgdj6/zr1z9nLwR4 9+K+vN4O1G8sVsLeASTXPk75MZAC4JHJ5/I19ZinhMBSeIm9I7p/ofo6xX1WgpVl eK6rqj0T9iX4YX2o+Lb/AMZajABaWJxbgL8rTMMZHY4UnP1FfUkOnuE+ZAFzxVbw B4G0nwB4ZtvDWiwbIoY/mY43O5+8x9yf8K6KG1U4QHgD0r8WzbFvMcdKtsnt6I+M x+JjjcRKrsunkjLGnQ4/i/SitYWox0P/AH1RXncivueZ7N9z8s7wBLe4kQAMASGH XNYF4q7FO0ZKZPH0oor+0sm/hx9F+R8v/wAuznvBVzc2HxKl0+xuHhgdAzQROVQt xyQOM19qfsEf8jBqp7mO3B9+ZaKK/I+Pv4db1/8Abj9Iw3/JOfJfmj61AGBx2FXL UAnBHeiivw2p8Z4s9hGJDHB70UUVRgf/2Q== ------------QfbhZNivKLE4FzH5QJnERC Content-Disposition: inline; filename=274711_100004035717693_266085826_q.jpg Content-Type: image/jpeg; name=274711_100004035717693_266085826_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/274711_1000040357 17693_266085826_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/AOiirF7pGrabFDcajplxBHcIHt3mhZRIuM5UkcjkciqUJyT aTaW/l69vmUoSkm0tFv5epXoo74oGT0FSSFFFFABRRRQAV738cvF0PjL9j34aXZs cS2N1cWDSZyE8hRGB/wJQjfga8Er3r4X6La+Pf2adC8O3sZkWz+LNrDKAekFxEqk e2Wr7rgmWJxFPMstov8A3jDta9XCrQmvuu/xPs+D3iMRTzDL6T/j0GvVwq0Zr83+ Jy37IvhbS/G3xRuvCmq2EFwt94c1CKETxhtkpgba4z0IPIPavQfDPhjwxa/Ba31W bw/ZGdfhHrc8sz2yljOdQEcbk4zuAJAPUCvRn8L+AvDH7XnhHx74D063stOvl1fS dRt7aFY44ru0ilVztXgZGD74z3qz4J0Twl4du5ND8cQr/ZWleFDb3UbLlXD67cBY yO4ZoVUjuCa/ZOH+CI5Xh3gKs6cpwqV6Xtbe44yjCpCd2m1Gzk+65ZI/Wcj4Ojlu HeDqypynCpWp+0suVqUYVITu02o2cn3XLJHxBBBNcyCG1geRj0WNST+lNIZWKspB BwQRX1z8Kdc+F3wp/bB8VeG4fD6SXmq69Bp2iw28ahLKN0Z5mAxgAOEXA5wT2zXz V8Y7fTLX4teJrXRYglpHr92lsgxwgmYAce1fi/EHB9PIcnji/rUalT29ahOEU/cd K9m29+dJyt9lON3dn5FnvCtPJMqjivrMak/bVaMoRT91072bb35km7dE1fV6c3RR RXxJ8gFe6fs26kbX4CeOrpn2/wBj67oOoxN/dIu8MfyWvC69p+FWn6h4e/ZH+JXi PULWSG31a40u0sJHXAmdJyz7c9cBhX2vAUp0s8qVknaFDEyfklQk03295Q+dup9d wVKdPOKlVbRoYht9kqMmm+3vcvzsey6hp1zo/wASdVtZ42WO0+L9vNA+OPL1OydG wfqVJp3jS9h8U3egTW4Bi8Uav4VtpMN1Rnub+Y/99SivFvG/7Zvi3xbYeFbaDwzZ 203h69tr27nLl/7SuoECxvIAFIAAPGT168CsXw5+054l0aHw7a32hWtynh3WLG9t 2V2R5Et42jEROSPmRsZxxtHFfquJ8Q+E4YithqNWUqM5QlzODW8lKcbb+7CpOne3 vOF1o4n6ZiOO+GY16uHpVJSpTlCV+RreXNKNt/djUnC/XkutGj6V+BOheAIPiNc/

EbxD4dN/r/jDxrrC6PdmEOunw2rS5OT93O3GRzyo7V8WeKb1tS8T6jqLkkz380hJ 9Wcn+te+/Bv9urTPhxpF3pGt+AnvBJ4huL6wlSdS1pbzyb5YhkDLctg8Ak8ivni/ mjub6a4hBCSSsyBuuCcivkfEPiHIc34ey6hl1WMpRlVnUioOMlOe7m2vfcpc0ua7 tFxjolY+W47z3JM0yLAUcBUjKUZVZ1IqDi1KdruTt77lLmlzXdouMdErEVFFFfkZ +XAvUfWvpb49yyxfsK/DqCKRlje8XeitgNhZiMjvRRX6PwK2sh4gt/0B/wDueiff 8GNrJc8t/wBAv/uakfNNFFFfnB8AFFFFABRRRQB//9k= ------------QfbhZNivKLE4FzH5QJnERC--

Вам также может понравиться