Content-Type: multipart/related; start=; boundary=----------0Eh7nJu6vIho79VfC8Hvyx Content-Location: http://www.ogalik.ee/postfix-mysql-lookups-and-temporary-lookup-failure/ Subject: =?utf-8?Q?Postfix,=20MySQL=20lookups=20and=20Temporary=20lookup=20failure=20=C2=BB=20Ogalik?= MIME-Version: 1.0 ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=UTF-8; name=default.htm Content-ID: Content-Location: http://www.ogalik.ee/postfix-mysql-lookups-and-temporary-lookup-failure/ Content-Transfer-Encoding: Quoted-Printable = Postfix, MySQL lookups and Temporary lookup failure » Og= alik = =

After setting up postfix to use mysql as lookup backend for alias or = virtual or whatever table, everything seems ok. Mails are delivered.
But sometimes strange “Postfix SMTP server: errors from ” e-= mails are received. Usually more than one in the same second, then there= can be no errors for days or weeks. Then they appear again. There is a = “Temporary lookup failure” or “queue file write error&= #8221; cited in those error e-mails but everything seems to work ok agai= n. Even those e-mails that get error on first try get delivered on secon= d try some minutes later.

One thing to look out for is
“warning: mysql query failed: Illegal mix of collations (latin1_sw= edish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation ‘= =3D’”
or something similar in mail logs.

If something like that is also present, then the problem is, that som= e messages use non US-ASCII characters in FROM or TO fields and postfix = works under different locale than what is stored in mysql tables. In thi= s case, postfix works under utf8 and mysql tables were latin1.

To see, what mysql uses, log on to mysql console and use
SHOW CREATE TABLE tbl_name;
for the tables that are used in proxy:mysql: lookups.

If these tables are indeed in one of those character set, converting = them to the other might help.
As ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; changes also data types, if necessary, it might be wise to use
= ALTER TABLE tbl_name CHARACTER SET charset_name;
for example:
alter table alias_domain character set utf8 collate utf8_general_c= i;
Then also individual text fields must be converted like so:
alter table vacation modify email varchar(255) character set utf8;=

There should be no more errors like that ever again.
And to why postfix gives usually a lot of error messages at once –= if postfix gets one error, it remembers it for some time. In this situa= tion, at least cache time is not measured in hours 3D':)'

One Response to “Postfix, MySQL lookups and Temporary lookup fail= ure”

  1. 3D''
    Lari Temmes says:
    =

    You should also check that MySQL in configured to handle enough co= nnections. Same error will appear (queue error or resolve error).

     

    =

Leave a Reply Cancel reply

=

(required)

(required)

=

You may use these HTML tags and attributes: <a href=3D"" title=3D""> <abbr title=3D&qu= ot;"> <acronym title=3D""> <b> <blockqu= ote cite=3D""> <cite> <code> <del datetime=3D= ""> <em> <i> <q cite=3D""> <= strike> <strong>

Translate this Page

=
------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=nggallery.css Content-Type: text/css; charset=UTF-8; name=nggallery.css Content-Location: http://www.ogalik.ee/wp-content/plugins/nextgen-gallery/css/nggallery.css?ver=1.0.0 Content-Transfer-Encoding: 8bit /* CSS Name: Default Styles Description: NextGEN Default Gallery Stylesheet Author: Alex Rabe Version: 2.10 This is a template stylesheet that can be used with NextGEN Gallery. I tested the styles with a default theme Kubrick. Modify it when your theme struggle with it, it's only a template design */ /* ----------- Album Styles Extend -------------*/ .ngg-albumoverview { margin-top: 10px; width: 100%; clear:both; display:block !important; } .ngg-album { height: 100%; padding: 5px; margin-bottom: 5px; border: 1px solid #fff; } /* IE6 will ignore this , again I hate IE6 */ /* See also http://www.sitepoint.com/article/browser-specific-css-hacks */ html>body .ngg-album { overflow:hidden; padding: 5px; margin-bottom: 5px; border: 1px solid #cccccc; } .ngg-album { overflow: hidden; padding: 5px; margin-bottom: 5px; border: 1px solid #cccccc; } .ngg-albumtitle { text-align: left; font-weight: bold; margin:0px; padding:0px; font-size: 1.4em; margin-bottom: 10px; } .ngg-thumbnail { float: left; margin-right: 12px; } .ngg-thumbnail img { background-color:#FFFFFF; border:1px solid #A9A9A9; margin:4px 0px 4px 5px; padding:4px; position:relative; } .ngg-thumbnail img:hover { background-color: #A9A9A9; } .ngg-description { text-align: left; } /* ----------- Album Styles Compact -------------*/ .ngg-album-compact { float:left; height:180px; padding-right:6px !important; margin:0px !important; text-align:left; width:120px; } .ngg-album-compactbox { background:transparent url(albumset.gif) no-repeat scroll 0%; height:86px; margin:0pt 0pt 6px !important; padding:12px 0pt 0pt 7px !important; width:120px; } .ngg-album-compactbox .Thumb { border:1px solid #000000; margin:0px !important; padding:0px !important; width:91px; height:68px; } .ngg-album-compact h4 { font-size:15px; font-weight:bold; margin-bottom:0px; margin-top:0px; width:110px; } .ngg-album-compact p { font-size:11px; margin-top:2px; } /* ----------- Gallery style -------------*/ .ngg-galleryoverview { overflow: hidden; margin-top: 10px; width: 100%; clear:both; display:block !important; } .ngg-galleryoverview .desc { /* required for description */ margin:0px 10px 10px 0px; padding:5px; } .ngg-gallery-thumbnail-box { float: left; } .ngg-gallery-thumbnail { width:100px; padding-right:10px; /* float: left; margin-right: 5px; text-align: center; */ } .ngg-gallery-thumbnail img { background-color:#FFFFFF; border:1px solid #A9A9A9; display:block; margin:4px 0px 4px 5px; padding:4px; position:relative; } .ngg-gallery-thumbnail img:hover { background-color: #A9A9A9; } .ngg-gallery-thumbnail span { /* Images description */ font-size:90%; padding-left:5px; display:block; } .ngg-clear { clear: both; } /* ----------- Gallery navigation -------------*/ .ngg-navigation { font-size:0.9em !important; clear:both !important; display:block !important; padding-top:15px; text-align:center; } .ngg-navigation span { font-weight:bold; margin:0pt 6px; } .ngg-navigation a.page-numbers, .ngg-navigation a.next, .ngg-navigation a.prev, .ngg-navigation span.page-numbers, .ngg-navigation span.next, .ngg-navigation span.prev { border:1px solid #DDDDDD; margin-right:3px; padding:3px 7px; } .ngg-navigation a.page-numbers:hover, .ngg-navigation a.next:hover, .ngg-navigation a.prev:hover, .ngg-navigation span.page-numbers:hover, .ngg-navigation span.next:hover, .ngg-navigation span.prev:hover { background-color: #0066CC; color: #FFFFFF !important; text-decoration: none !important; } /* ----------- Image browser style -------------*/ .ngg-imagebrowser { } .ngg-imagebrowser h3 { text-align:center; } .ngg-imagebrowser img { border:1px solid #A9A9A9; margin-top: 10px; margin-bottom: 10px; width: 100%; display:block !important; padding:5px; } .ngg-imagebrowser-nav { padding:5px; margin-left:10px; } .ngg-imagebrowser-nav .back { float:left; border:1px solid #DDDDDD; margin-right:3px; padding:3px 7px; } .ngg-imagebrowser-nav .next { float:right; border:1px solid #DDDDDD; margin-right:3px; padding:3px 7px; } .ngg-imagebrowser-nav .counter { text-align:center; font-size:0.9em !important; } .exif-data { margin-left: auto !important; margin-right: auto !important; } /* ----------- Slideshow -------------*/ .slideshow { margin-left: auto; margin-right: auto; text-align:center; outline: none; } .slideshowlink { } /* ----------- JS Slideshow -------------*/ .ngg-slideshow { overflow:hidden; position: relative; } .ngg-slideshow * { vertical-align:middle; } /* See also : http://www.brunildo.org/test/img_center.html */ .ngg-slideshow-loader{ display: table-cell; text-align: center; vertical-align:middle; } .ngg-slideshow-loader img{ background: none !important; border: 0 none !important; margin:auto !important; } /* ----------- Single picture -------------*/ .ngg-singlepic { background-color:#FFFFFF; display:block; padding:4px; } .ngg-left { float: left; margin-right:10px; } .ngg-right { float: right; margin-left:10px; } .ngg-center { margin-left: auto !important; margin-right: auto !important; } /* ----------- Sidebar widget -------------*/ .ngg-widget, .ngg-widget-slideshow { overflow: hidden; margin:0pt; padding:5px 0px 0px 0pt; text-align:left; } .ngg-widget img { border:2px solid #A9A9A9; margin:0pt 2px 2px 0px; padding:1px; } /* ----------- Related images -------------*/ .ngg-related-gallery { background:#F9F9F9; border:1px solid #E0E0E0; overflow:hidden; margin-bottom:1em; margin-top:1em; padding:5px; } .ngg-related-gallery img { border: 1px solid #DDDDDD; float: left; margin: 0pt 3px; padding: 2px; height: 50px; width: 50px; } .ngg-related-gallery img:hover { border: 1px solid #000000; } /* ----------- Gallery list -------------*/ .ngg-galleryoverview ul li:before { content: '' !important; } .ngg-gallery-list { list-style-type:none; padding: 0px !important; text-indent:0px !important; } .ngg-galleryoverview div.pic img{ width: 100%; } .ngg-gallery-list li { float:left; margin:0 2px 0px 2px !important; overflow:hidden; } .ngg-gallery-list li a { border:1px solid #CCCCCC; display:block; padding:2px; } .ngg-gallery-list li.selected a{ -moz-background-clip:border; -moz-background-inline-policy:continuous; -moz-background-origin:padding; background:#000000 none repeat scroll 0 0; } .ngg-gallery-list li img { height:40px; width:40px; } li.ngg-next, li.ngg-prev { height:40px; width:40px; font-size:3.5em; } li.ngg-next a, li.ngg-prev a { padding-top: 10px; border: none; text-decoration: none; } ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=shutter-reloaded.css Content-Type: text/css; charset=UTF-8; name=shutter-reloaded.css Content-Location: http://www.ogalik.ee/wp-content/plugins/nextgen-gallery/shutter/shutter-reloaded.css?ver=1.3.2 Content-Transfer-Encoding: 8bit /* Shutter */ #shDisplay div#shTitle { font: normal 12px/17px 'Lucida Grande', Verdana, sans-serif; /* caption font */ color: #ffffff; /* caption colour */ text-align: center; margin: 0 auto; } #shDisplay div#shCount { color: #999999; font: normal 10px/12px 'Lucida Grande', Verdana, sans-serif; } #shDisplay div#shTitle a { text-decoration: none; font: bold 16pt 'Courier New', Courier, fixed; letter-spacing: -2px; margin: 0 10px; width: 26px; color: #999999; } #shDisplay div#shTitle a:hover { color: #ffffff; border: none; } #shDisplay div#shNext{ float:right; } #shDisplay div#shPrev { float:left; } body { height: 100%; } #shShutter *, #shDisplay * { padding: 0; margin: 0; } div#shShutter, div#shDisplay { top: 0; left: 0; width: 100%; position: absolute; } div#shShutter { height: 100%; z-index: 1000; background-color: #000000; opacity: 0.8; filter:alpha(opacity=80); } div#shDisplay { display: block; background-color: transparent; z-index: 1002; } div#shDisplay img#shTopImg { margin: 0 auto; border: 1px solid #555; background: transparent; display: block; max-width: none; max-height: none; float: none; padding:2px; cursor: pointer; } div#shDisplay div#shWrap { visibility: hidden; } div#shWaitBar { font: bold 32px 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; height: 36px; width: 100%; left: 0; cursor: default; opacity: 0.999; filter: alpha(opacity=100); z-index: 1001; margin-top: 160px; color: #ae0a0a; } ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/folder-gray-16x16.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJ0lEQVR42q2TO4gU QRCGax49PbPq7qqIid6D28f54FhQDhUMRAzcwEAMTkHYMzPURDQ6BDEQ2ZFLBHE3 E4wMZMFnYCKKgdzJeezpsQiGIqsg8+iZaau6d+9ADISz4KdhmPrqr+pqAzYYxn8B zN+9Nzp9+Ii/KecxEyNL096HxYWrZ8+c/vlPgBu379RrB6c7CICcy4HZFiRJ+tUy zW7Oc4Ex2wAJVhjF8CsIUGH46uXzmblrV/oKcLM5X0cHnc0IUMlpBmEUKb5tmZBJ CUIkEAmhvgdhDP3v305cPD/zQgGu32rW90zVOlgRthXzsKNYgGJ+C1iUnGUoqc4U laQpuSNYszZZvqwArYePZivlidbO7VvRga1EMMNYn3E2TEaJJCGX/t6JsUvqj8Xu 5/su5xccZoPDmGrjT4CqnujkmABJ6lfHRzSg2/vSZow1OCY7StoBEtSUJc5AAzB5 MAsE+eXR3RrwcbXX5sxpuNwB0tDF0AEBqDrZj2KBismFXxrZpQHvl1faHucNukLP dYE7fwcIBMQEEAQRfmVs4ODNwpIGeAjgfACw1/qXKLJP1UOqjie68aeqJQ149vod Ahx04CIAWyCAZa8vOu3BoHqAgCCMlIPjhw5owIPHT1qFfGHWoxYQQA5sBAwvgVoQ 2EKM1gPcxhAB/R99/9ypkxpQ3bf/6HipcgyfAbNMA5dPx9pjkyAzmWV4EyiZ4CE+ LS89XV3pvt3wa/wNaS4kINumvNMAAAAASUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/comments.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5Jf xUYAAALSSURBVHjabFJLi1RnED31+O6jH9Pd087YIjM+RjODDEyIuHEhhizc5Sf4 KxKSbcgihIARsstKXASykEBIsgoaCAQlMRAEHVHGsZ1nWjPTPd33dve93/dl0S09 ggcKioI6depU0c+3f8dheO+x3+k1nHNXq1OlK6VifEJFi8Msa3e6vfVON7kjIt9P FeN1FYYebiYidJP0/dl65ca50yfma5UpmMCAiAH4xjDLFvf2O1dW15qfbv376rN6 rXxdvffjZiDtD0/O1Cq33jt3tuZByJ2DG2ZvqCuXCriw/E710dqLr59tbh+wtQ5Z nsNaD+f8xTPzx2uiCmYGM0NFEBgDEQYRjdSwYOn0HMIg/EhVGMPMIUn7UX+YLT55 volwpwUiggdAAFQEjZk6Zus1OGfhnIeooBiHFSUidNP+5XIhvr6ytLAyXa0gjkII MzyA/mCI/c4Bmls7ePJ8A8tnT+FIrYr9TgeDLP9Bu0l6+fhs/Zd3lxZiFQWJgJkA EAhAHIUoRCGO1qvY2n2Jvx6sYnnxTLK+uX3LqH6igTFfriwuxCIK8GhP7wlEE+P8 2OW5Y0fBwrhz9/6vjSPTV5kJWi2XTkZRCOcB5xycc2OSN3/Dew9ij2MzdUxPlVZ6 SRob1ZT7Wf6bdR7GKEQEIgJVhRmH6qQ+uo6ARayqOhUGA/7jp82tR0Q8PtVEth9P f43QKFp7beTWfVspFwdxHIFDY5qtvfYH/zxe+y4d5DYMI0TRJOI4RqFQQBiG2Nh9 lT5ca35RKcVfMROYCXT7jz/BwrAOyHN7fq4xe21pYf7S5u7Lp9baXWud66b9VrvT vZcOBj+q8qrQxB8dmTR6lkIY3m93e9/0kvTSs43tz53zN4mAJB1AlBEYA+/dyFA6 RAAAcRTAqCK37qcXO62/A6OnnPeAB0RzMOGt4NeJ8Cg1yv2DXvJhntv/jGpgVFCM AhC9neH/AQANjDB/mjbdiQAAAABJRU5ErkJggg== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/larrow.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAA AAZiS0dEAHUAnwCHTeI9jgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI BwgZKPTkxGUAAAHUSURBVDhPZZNNT5NBFIWfea0rEtlJQgyxgsqGj7ipAVvqrvyL LvUXtcv+C9jZYEwkkX5AwC9MN8BCNpjggiDnuJj3o6/ezcyduffMvefcCfxj48Oj GoE2pklgGXMDTAj0A/RWV1b2p+PDtDMaH3YMb0J24+kwZ2t3fW317X8Aw9F4B2hF L8ss4edm2H2xvrYNkAAMhsOO7JZtbCMbG8p+ukogtQ4Gow5A+HQwqAEfyeo2EIoK Hs3Pc3ZxnncQCNgmxISXiXHbGCui23GPzeOFBebmHsY7g1WuRna7YrlZvBfJSpLA 0uIis7MPYs9OI4JBWbRxoFmRqYIJgID7lXs8f/aUmZkZMpMNGFwWJ5hqBQsDNgTM k+pSKRli6TGjoMipQInsiWWMkM330x9cX/8uA2BspVwIpZzJniSW+jEAbHF7e8vR 8QlXV78KACuXVUrlRVjuJ8K9iKac3bu7P5x8/sLPy8u0BRBCFthIjmdWL6lvbOzb 7sYDQ1qqJL5+O+Xs/CLKK+eDZQvZ3frmxn4+q3vvP+zYbhXTmzHGFHN5V7tbjVfF KAM06pvbwl05I0gpcelwOSPT3Sw5faZs7/p7NaBtaAZYJnCDmRj6IdB7vdUofee/ Y+NwA1SrSzgAAAAASUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/rarrow.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAA AAZiS0dEAHUAnwCHTeI9jgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI BwgWJpTE9a0AAAHVSURBVDhPZZNLT1NRFIW/c72OSCSRAQlx0pgoEx5xUgMCdVb+ RYf6i+iw/wJmNhgTmwi0KD5LiolgIhNMZECAtRycc/rQndzs7Pfa6+wb+Ed6h++r BBqYGoF5zBUwINAO0FpcWOiM54dxo9s73DK8CDni8TRn3VxeWnz5X4ODbm8bqEcr V070H4ph58ny0iZAAbB/cLAlu24b28jGhkk7aQmk+t5+dwsgvNvbrwJvybgNBPNg bo4fZz+Hdt4gELBNiAVPS+MGAErgCGAzOztLWd7l5PsJFkO/A1HHbRql5dpo40xW 9MzM3KcsS/rHx0iOSJSzjQO1QqbiuHDaVdhD+pmevsf840cUdwqkEReyQa4UpALJ II2CYzI1NcXDSmVYTGpkm0L2wDJGieXE9Jj8ubzkW78fYxYi5skeFJbaJj9bQjMG 4OLiNx+Ojri+vklI0/MiLLcL4VbslovjFIBf5+d8/PSZ2xshhKzIlYwFslrF2spK x3YzOgwWljk9PePL1z63EpYS/PwJ2c211ZXO8FZ3X7/Ztl0fXW8+KiaPKcrOxvqz 0SkDrK+tbgo3M5FxpTTdiSOM7WYuTmMm5VV7two0DLUA8wSuMANDOwRazzfWJ37n v9/Lhn/QxnglAAAAAElFTkSuQmCC ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/comments.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAAL EwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5Jf xUYAAAUiSURBVHjafFZLbF3VFV17n9+9fv69PMefxImdJiEB8UkBhSipWlVClSqE YNCOqkqBVuqoEmMGTCrIIGKAhBgxQAgGIKaFSFAqgQhCQW0sQsElthM7deLYiWP7 fe6795yzO3jPD7845khH9+henf1Ze629L/39089xzyVA4QvkPqJaa4xnef5kYs1j ztpHnNV7ANJ54ZezZnOunjUvGK2/Gewr/UNrVSilAAis0dDYYRERfIjp6vrGS7vL A3/eNzo5NDK0C32lHmilWjGITDSazcdXVtd+v7SyiquLS1N54d8Zrgy+ppgKAKB7 ZcBEyJr52J2N2gfHjh48eWB8FMZYEFFrM4MIEGmnKoBIxEa1hu9m5/HdzPwXlcG+ P/aV0jlN20IHfAg967X6+6eOPXByuFJGnheIAiilOk660IwRIQYwER4+PIlyf++p 8xf/82Hi7Emdew8CAQRABESEjVrjtwf3jf1iZKiMCIJLEmitu+DrGBcBmKGgEZSH 9x6Te0exulY9OrOw+BIrZkQRxNgyrliBWR2fGBuBMQY9aYrEWRitYI2GNRpGKzBR y/gWR8wMpTSiCA7tHwOIntFGMUKM8D4iRiCQwIewcHl+EbP/W0IUARG3ImeCNRo9 zmFs9y6UB/shMaLwoeOsFTDBGgNnTKplS2HrWfPQWrX2wkBv6akQI9LUoZQksNZA ADSbOWqNDDeWVzA9Ow9tFI78bAKHJ8YBERTet2okghAjBLipN42vrK//JXH2zC8f f6i8d3gIiXMgJoAIhDZ7aLOogkaW4fryLXx7eQ7/ujSNXx0/hpGhMkKIcNbg3ws3 kCburGYiLK+uvzhSKb984uGjsNYCAIIIFBhM3CmqtLEWAMZa7N8zivHR3fjhyjWc +/wr/ObUcUyMj+HS9AwWb946UxnsfUffWqs+uau/9+WTx+4HEaPwHkopMAQxRsQY 7y10EcQY4H3AfQf2IXEWH39xAYcm931aa2RnB/pK5wQA54X/64OHJsHMYGZoraG1 7hR2k5Zb9+Y7pTS0VvBRMLFnBJN7RzA9e/WSVXwuxICi8ODenvTngwO9ADFYKYgI Qgjw3iOE0HX23m87S2wxJ4jg6IFxKOana43M+dwjzz1YRC6HIFDMLWiYu8RERGDm rmeX2AhQikHEcNbBWZPGEF0UgYhAC9Gb11dWf33/wf0QEFS7kd0Nyd34b/K+JbDW HR8Dosgd50yd2/e40t/33vyNm+/eXq/CGvOj/FuHLrV2fdvynQBYYzB3bQmJc2/1 pIm31sBaA60Uh9S5P138fqZ45AhOj+2utNjTlv49e8+WLIgIWivMLSzi2o3lj4Yr A68xUScrFhEYrZqps89d/H7m+W/+Ozdbz5owWncg2mQYt+uklILWCsZoNPMC3/5w JZuann2jUh74nWLOuprzP89fgABgpRAFiCH25t6fHq6U//Dg4ckT1hjU6g1keQHd 7lvNvECzmWcb9cbU4tLKlwK8lSZ2igQAunWzbaIZo6us+PXlW6tTy5XBz8ZHhzE9 t/DZRq3xNyIqCcTX61ldKZ5nxTPO2jaEm5BhZwciLbr2JAkSa79er9anARypZ81p H8InpTSB1goSpdU4iNrTbLvhznTcMsiQWIOe1IGZkDjbuL228crK7TuwRichhE7b iHcx66dWVwaJs2AmbN4vpe7tmYXFR43Wzw729/UyURUAtOIde9SOGbRpve3Pgolf WN+oveq9f4KZQABKaYLEOfBOuGxZ/x8A18tsLSXmNLkAAAAASUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/comment_edit.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAAL EwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5Jf xUYAAAVeSURBVHjapJXdi9xXHcY/5+33m9+87c6+zWZfupsm0aaVbPp2EVHEYmgr DSqUgogUqjeCeFFQRBDa/gEi6EVBZKMXhvamglhpoaT0Ik0kNbTG2qSJTdfs7uzu TGZnZ2fm93qOF7M72SW1in7hXJ7n+3yf5znnK149+xbdMMZZkFIghCCKYrTWJElK nKYYo2m02oRRzFCxQKVcpNcLQYDveTjnSJKElQ8ucZdcp9kU1fGXXv51ouSi5t+U lAIpBQ7IMjuUpGkxSVPSNLPW2iYQSiGQQpA5B0DqILGyOnnyG6+Xhg8cW3/x5wv7 GghASUmW2ep6Y/NUnKTHjVEP54Pc3VNjI2VAZNZm7U53oxdG/0jS7J1cznu/XCi8 JqW8OSVb1Xunhl9j7tCxtbEZ4ksXfqr3Mk4zO77W2HzWGP3M/PTkxHR1lInRCjnf QyuFEBLnrEnSbHa725ut1ZtfWttosFRvbZlu43ePTXYfGJubWahdeYWrW8Vn8dRp 8erZt4jilFa798h2t7d4/9FDdx2ZmyYf5HAADhB9b/qnT8g5kAKE8miuL9M++yKT s9NEjRobK8s/qAWzv+h9tIoWQrLd7T2RZunLj3/hwWBsZBiHwDpQSqGU2gMuBnI6 Z3FSE7Ua6EtnqB6YgNYG17IDXBh+8NSRqZEz+h5T11EUz/fC+LcnTzwQDJeLhFGM c24ALqXouzMYZ8cvbUjDJum5RbzAkG5ukBy4n3uOP8HG+Ysnry+vnfnM3NRjutFq f/9zh+cqlXIR6yCXy6GUQmuNEAK3k5C97IXSJJ0W4dunMTmD27qFOvh5vPseJYu7 nFg4Sr3Z+kp9c+vbWkr1+NTEGNY5lNKAI8uyPrBzsAd4Fzzr3CI6dxrjK2jfwk4u oO97FJf0kEKQ8z0+e3CGd/527XvaM8bzPYMQEqkkxhikVHeyFgIhJVlvm9a502hP 4jbX0QdPUHroa7g0xckcSRKTZZaZ6jh/vXpjSjvn3mh3e4eLxQJSKaIoJoqiPuCO 6lJKoJ+g9N3fo2UG7U2S6gL28CPEjQbOWjxj8HM+zjm0Uigp0cV8sLhUq393ZnJC gSAIAvL5/L4JpJQIIWjXV8kKRYhuoWcfYvjhr2MzCwT0FXVYa9FKsdnexuKWdaVc vLDebL3w0fLa80cPzbPd6RCGIVKI2/kHPN/nD396nSEd88UvP0kajLDZbGKtBcBa i+d55PMBDsn1mzVGh8q/1A7HeKX8wocfLwuEeO7ooXny+fwgPX15+tM89c1vobUe APbfgxscIQRaK/5y+Qpb292XZqpjZ+SuiZVy6fnrS6tPXnj3/Q/bnS5aa5RS+xKk tR6A7f8YJcZorLVcvHyFqzeWfzU1Mfq01ioTb56/uBOTvpFpmg053FPFfPDD+enJ I+OjwwjEQLK95Vw/0tvdHjdu1uxqvfFHHD/zPfOmAIxR7Gvg3G2W3V7oZ9b++MTx e5+rDJWpbTTctaWV97RSWWatFkJkztnVOE4/COP4vHPusjH674HvEUUxUgiMUdyx D5y1CCkpFfJRnKS/aXd6P6kMlb3GZrvX7nS/GsXJSjeMKOR8SoU8UZLgG4OUktRm d8q3D3zHzJxnyPke+cC/cbO28TY4kjSNhkvFqDpWGQDubsBduT5xce1F10oRBLnB D+oZDfCjpZU1F/heECeJb5RiZKiE3PNPfVrJ2/gOz5idxbLLTFAIcn/+Z63+nW4Y 5nzPOyakYKhUYGJseODXp5X+TwwcEPje4nYnbGc2OxX4pTccLlHKYJTGaEU3jHD/ a4P+IwPfM69EMS6zVoqdiREC3xiSNCNJs0+++9/o+P/UvwYAQcF/b9fpfeUAAAAA SUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/calendar_date.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhk iAAAAAlwSFlzAAAKjAAACowBvcbP2AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8w OC8wOCH9Y64AAAAYdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3Jrc0+zH04AAALC SURBVDiNVdLPbhtVFMfx77n3znjueMjEsZ0Gp0WwKcu0EUIV0BfgTxGIFYIFBbHt A/AESLDoC1RdVkg8AF2WFhZ0wQZbhIZEQFwb8J+YxPZ4Zu5lkcpJHuB89Pudc8R7 D8A39+7dAv9znueNIAxj79x+XhQvhEEgHv4s8rwZhGHFufIPV7rtDz/6+DaAAdjv /h2sNeqreBqlK1OjdRWR+nw6q0XWiojMiqJItdYWkeMsm6VHs9wkNigMwNHRfzcW hf+iUqk4g5eiKIgq1ocoEa2xNvZZNhdXOqIo8kobdXg4/iWxzW8NQJ5lwaUXXwoE ECVYaxGgLB2VMCRbZMQ2Zp7NwYNWiun0OIDmSQVRynvnEKVQonj48BGPfviRz25+ wp27d9nb22d7+yqff3oT7z3OO5RSHkABiICIEMeW7+7f58uvvqbb7fLT48d0Oh0+ eP89dnd/ZzAcYoxGAEFYLlFEEBHm8znv3niHXr/P/t4egdFcaDboHhxw/bVr1Gs1 nHOICErBmQSCnIAEJqCWpsTWElUqNBt1Go01Hnz/gH8HA4wJ0EowWp0BkGeIwuPR RmOjyglQX+Ply5dZS1O88yiBMAhIqtVTQIksU4gIOE9ZlmxubmKjiF87bdYvrLO6 uoJSQpIkS+DcDpQIeZ6zdWWLi5cuElnL1pWrHE4OeeXVa6ymKbGNiGPLYrE4C5wi gTF0u0/p9Z4yHg6pxhEgTKfHpCsrGKPZ2dnhyW87vPnW2+cTCEKWZVx/4/VlJSUK rYR0ZYXxeESn3WY0GlGv189fQYmgtEKJoJVCa70crsYxcWzptNsMR0NarRYbGxun FZTSTCYT8nyBMYbZbEZsLc1GgzAMSJKE3d0nDIZDWq3naa6vkyTJKdDv95Fnn+EW OcYELPKCbq9HGAT0+v9wcPAXz6U1Sq8YjCdMjme+2WzyP971BjJPBtWsAAAAAElF TkSuQmCC ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=style.css Content-Type: text/css; charset=UTF-8; name=style.css Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/style.css?ver=3.8.2 Content-Transfer-Encoding: 8bit /** * Theme Name: Suffusion * Description: An elegant, versatile and browser-safe theme with a power-packed set of options. It has 19 widget areas, one-column, two-column and three-column fixed-width and flexible-width formats, 10 pre-defined templates, 17 pre-defined color schemes, two customizable multi-level drop-down menus, featured posts, a magazine layout, tabbed sidebars, widgets for Twitter, Social Networks and Google Translator, translations in many languages and RTL language support. WP 3.0 Menus, Custom Post Types and Custom Taxonomies are integrated. A BuddyPress support pack is available as a plugin for smooth BuddyPress integration. Support forum at http://www.aquoid.com/forum. * Theme URI: http://www.aquoid.com/news/themes/suffusion/ * Version: 3.8.2 * Author: Sayontan Sinha * Author URI: http://mynethome.net/blog * Announcements Feed: http://aquoid.com/news/category/theme-releases/feed/ * License: GNU General Public License (GPL), v3 (or newer) * License URI: http://www.gnu.org/licenses/gpl-3.0.html * Tags: theme-options, green, blue, silver, red, orange, purple, white, black, light, dark, one-column, two-columns, three-columns, left-sidebar, right-sidebar, fixed-width, flexible-width, custom-colors, custom-header, custom-background, custom-menu, threaded-comments, translation-ready, sticky-post, rtl-language-support, microformats * * Copyright (c) 2009 - 2010 Sayontan Sinha. All rights reserved. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* Standard Styles */ html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, font, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; } body {/* Default styling for everything that is un-styled and doesn't inherit*/ color:#000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-size-adjust:none; font-style:normal; font-variant:normal; font-weight:normal; line-height: 1.5; background-color: #444; } a { text-decoration: none; } a:hover { text-decoration: underline; } p,.p { margin-bottom: 1.5em; text-align: justify; } img { border: none; } ul li { margin: 0; } ul, ol { margin: 0.5em 0 1.5em 1.5em; padding-left: 20px; } ol { list-style-type: decimal; } ol ol { list-style:lower-latin; } ol ol ol { list-style:lower-roman; } ol ol ol ol { list-style:lower-latin; } ul ul, ol ol, ul ol, ol ul { margin-bottom:0; } dl { margin:0 1.5em; } dt { font-weight: bold; } dd { margin-bottom: 1.5em; } form { margin: 0; padding: 0; } small { font-size: 0.68em; } code, pre { font-family: "Courier New", Courier, Monaco, "Lucida Console", monospace; overflow: auto; background-color: #F7F7F7; } pre { padding: 1em; line-height: 1.5em; border-width: 1px; border-style: solid; border-color: #ddd; margin: 1.5em 0; } hr{ border-width: 1px; border-style: dotted; border-color: #666; margin-bottom: 1.5em; } blockquote{ background: url(images/blockquote-l.png) no-repeat left top; padding: 10px 15px; margin: 0 3em 1em; font-size: 1em; text-indent: 2em; } blockquote > div { background: url(images/blockquote-r.png) no-repeat right bottom; padding-bottom: 0.1em; } abbr, acronym { cursor: help; border-bottom: 1px dotted #888; } /* Headers */ h1, h2, h3, h4, h5, h6 { color: #333; margin: 0.5em 0; padding: 0; line-height: 1.1em; } h2.suf-mag-category-title { margin: 0; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { color: #333; } h1, h2 { font-weight: normal; } h3, h4, h5, h6 { font-weight: bold; } h1 { font-size: 200%; } h2 { font-size: 183%; } h3 { font-size: 166%; } h4 { font-size: 150%; font-weight: bold; } h5 { font-size: 133%; font-weight: bold; } h6 { font-size: 116%; font-weight: bold; } sup, sub { height: 0; line-height: 1; vertical-align: baseline; position: relative; font-size: 0.7em; } sup { bottom: 1ex; } sub { top: .5ex; } /* WordPress Standard Elements */ img#wpstats { width:0; height:0; overflow:hidden; } .border{ padding: 2.5px; border: 1px solid #ccc; } .hidden { display: none; visibility: hidden; } .aligncenter { display: block; margin-left: auto; margin-right: auto; } .alignleft { float: left; margin:0 10px 5px 0; } .alignright { float: right; margin:0 0 5px 10px; } .floatleft{ float:left; margin:3px 7px 0 0; } .floatright{ float:right; margin:3px 0 0 7px; } .right{ float:right; } .block{ display:block; } .left{ float:left; } .clear{ clear:both; } .center { text-align: center; } dl.gallery-item {margin:0} div.suf-widget{ background: #fff; border: 1px solid #c0c0c0; } #wrapper { width: 1000px; margin: 20px auto; position: relative; border: 1px solid #008000; background-color: #EDF3E6; padding: 10px; } #wrapper.shadow { /* Shadows - CSS3 for browsers that support it */ box-shadow: 10px 10px 5px #888; -moz-box-shadow: 10px 10px 5px #888; -khtml-box-shadow: 10px 10px 5px #888; -webkit-box-shadow: 10px 10px 5px #888; } #header { height: 55px; padding: 15px 0; } /* Blog title */ .blogtitle { font-size: 333%; float: left; line-height: 47px; position:relative; margin: 0; padding: 0; } .blogtitle-left { float: left; text-align: left; } .blogtitle-right { float: right; text-align: right; } .blogtitle-above { width: 100%; } .blogtitle-hidden { display: none; } /*div.blogtitle a {*/ .blogtitle a { color: #000; } .blogtitle a:hover { text-decoration: none; } /* Blog description on the right side of the title */ .description { float: right; margin-top: 21px; /* description distance from top of screen */ margin-right: 20px; margin-left: 20px; text-transform: uppercase; font-size: 116%; } .description-left { float: left; } .description-right { float: right; } .description-below { margin-top: 0; /* description distance from top of screen */ display: block; } .description-hidden { display: none; } /* search form */ .searchform { display: inline-block; font-size: 100%; padding: 0; margin: -1px 0 1px; } .searchform .searchfield { /* width: 158px;*/ padding: 4px 7px 2px 5px; color: #999; border: 1px solid #888; margin-top: 6px; } .searchform input[type="submit"].searchsubmit { background-repeat: no-repeat; background-position: 0 0; height: 24px; width: 24px; border: none; cursor: pointer; text-indent: -999%; margin: 0; padding: 0 3px 0 3px; } #right-header-widgets .searchform, #top-bar-right-widgets .searchform { float: right; } .dbx-content .searchform { float: left; text-align: center; width: 100%; } .dbx-content .searchform .searchfield { width: 70%; } /* * The layout has "page" as the base element. * Inside the "page" is a "wrapper". The "wrapper" has 4 rows: * 1. A "header" * 2. A navigation bar ("nav") * 3. A "container" with two columns: * a. A main column ("main-col") * b. A "sidebar" * 4. A section for credits ("cred") */ /* Main column */ #main-col { width: 725px; float: left; position: relative; margin-left: 0; margin-right: 0; } #single-col { width: 100%; float: left; } /* See Ruthsarian Menus: Ruthsarian Layouts at http://webhost.bridgew.edu/etribou/layouts/rMenu/rMenu.css * There are details for z-index settings to avoid overlaps on the second line for IE 7 */ /* main menu */ #nav { font-size: 108%; border-bottom-width: 1px; border-bottom-style: solid; } .float-ptr { font-size: 130%; float: right; background: url(images/arrows.gif) no-repeat scroll -16px 0 transparent; height: 8px; width: 8px; top: 45%; right: 3px; position: absolute; } .down-ptr { font-size: 130%; float: right; background: url(images/arrows.gif) no-repeat scroll 0 0 transparent; height: 8px; width: 8px; top: 45%; right: 5px; position: absolute; margin-left: 5px; } img.home-icon { height: 21px; } #nav ul li a.with-arrow, #nav-top ul li a.with-arrow { padding-right: 22px;} /* remove all the bullets, borders and padding from the default list styling */ #nav ul { list-style: none; list-style-type:none; display: block; margin: 0 0 -1px 0; padding: 0; float: left; vertical-align: bottom; } #nav ul li { margin: 0 4px 0 0; padding: 0; float: left; border-width: 1px; border-style: solid; } #nav.continuous ul, #nav-top.continuous ul { margin-left: 10px; } #nav.continuous ul ul, #nav-top.continuous ul ul { margin-left: 0; } #nav.continuous ul li { margin: 0; border: none; } #nav ul li a { padding: 8px 8px 5px 8px; text-decoration: none; color: #222; display: inline-block; } #nav ul ul li, #nav ul ul li a { z-index: 100; } #nav .current_page_item a, #nav .current_page_item a:hover, #nav li a:active { text-decoration: none; } /* float the list to make it horizontal and a relative positon so that you can control the dropdown menu positon */ #nav li { float:left; position:relative; z-index: 1; } #nav li a:hover, #nav li:hover, #nav li.sfHover { z-index: 100; } /* Styling for navigation menus */ #nav ul ul li a, #nav ul ul li a:visited { padding: 8px 8px 5px 8px; text-decoration: none; color: #222; display: block; line-height:22px; } #nav ul ul li a:hover { color: #fff; } /* style the links for the top level */ #nav a, #nav a:visited { color: #000000; } #nav a, #nav a:visited { display:block; font-size: 100%; text-decoration:none; height:22px; padding: 8px 8px 5px 8px; line-height:22px; font-weight:bold; } /* hide the sub levels and give them a positon absolute so that they take up no room */ #nav ul ul { visibility:hidden; position:absolute; height:0; top:35px; left:0; width:149px; } /* position the third level flyout menu */ #nav ul ul ul { left:145px; top:-1px; width:149px; } /* position the third level flyout menu for a left flyout */ #nav ul ul ul.left { left:-149px; } /* style the second level links */ #nav ul ul a, #nav ul ul a:visited { height:auto; line-height:1em; padding:8px 10px 5px 10px; width:128px; border-width:1px 1px 1px 1px; text-align: left; } /* make the second level visible when hover on first level list OR link */ #nav ul li:hover ul, #nav ul li.sfHover ul, #nav ul a:hover ul { visibility:visible; } /* keep the third level hidden when you hover on first level list OR link */ #nav ul li:hover ul ul, #nav ul li.sfHover ul ul, #nav ul a:hover ul ul { visibility:hidden; } /* make the third level visible when you hover over second level list OR link */ #nav ul :hover ul li:hover ul, #nav ul :hover ul li.sfHover ul, #nav ul :hover ul a:hover ul { visibility:visible; } /* make the fourth level hidden when you hover over second level list OR link */ #nav ul :hover ul li:hover ul ul, #nav ul :hover ul li.sfHover ul ul, #nav ul :hover ul a:hover ul ul { visibility:hidden; } #nav-top { font-size: 100%; border-bottom-width: 1px; border-bottom-style: solid; padding: 0 10px; } /* remove all the bullets, borders and padding from the default list styling */ #nav-top ul { list-style: none; list-style-type:none; display: block; margin: 0 0 -1px 0; padding: 0; vertical-align: bottom; } #nav-top ul li { margin: 0 0 0 0; padding: 0; float: left; border-width: 1px; border-style: solid; } #nav-top ul li a { line-height: 22px; padding: 8px 8px 5px 8px; text-decoration: none; color: #222; display: inline-block; } #nav-top ul ul li, #nav-top ul ul li a, #nav-top ul ul ul li, #nav-top ul ul ul li a, #nav-top ul ul ul ul li, #nav-top ul ul ul ul li a, #nav-top ul ul ul ul ul li, #nav-top ul ul ul ul ul li a, #nav-top ul ul ul ul ul ul li, #nav-top ul ul ul ul ul ul li a { z-index: 100; } #nav-top .current_page_item a, #nav-top .current_page_item a:hover, #nav-top li a:active { text-decoration: none; } /* float the list to make it horizontal and a relative positon so that you can control the dropdown menu positon */ #nav-top li { float:left; position:relative; z-index: 1; } #nav-top li a:hover, #nav-top li:hover, #nav-top li.sfHover { z-index: 100; } /* Styling for navigation menus */ #nav-top ul ul li a, #nav-top ul ul li a:visited { padding: 8px 8px 5px 8px; text-decoration: none; color: #222; display: block; line-height:22px; } #nav-top ul ul li a:hover { color: #fff; } /* style the links for the top level */ #nav-top a, #nav-top a:visited { color: #000000; } #nav-top a, #nav-top a:visited { display:block; font-size: 108%; text-decoration:none; height:22px; padding: 8px 8px 5px 8px; line-height:22px; font-weight:bold; } #nav-top.continuous ul { margin: 0; } #nav-top.continuous ul li { margin: 0; border: none; } #nav-top.continuous a, #nav-top.continuous a:visited { font-size: 100%; height:22px; padding: 8px 8px 5px 8px; line-height:22px; font-weight:bold; } /* hide the sub levels and give them a positon absolute so that they take up no room */ #nav-top ul ul { visibility:hidden; position:absolute; height:0; top:35px; left:0; width:149px; } /* position the third level flyout menu */ #nav-top ul ul ul { left:145px; top:-1px; width:149px; } /* position the third level flyout menu for a left flyout */ #nav-top ul ul ul.left { left:-149px; } /* style the second level links */ #nav-top ul ul a, #nav-top ul ul a:visited { height:auto; line-height:1em; padding:8px 10px 5px 10px; width:128px; border-width:1px 1px 1px 1px; text-align: left; } /* make the second level visible when hover on first level list OR link */ #nav-top ul li:hover ul, #nav-top ul li.sfHover ul, #nav-top ul a:hover ul { visibility:visible; } /* keep the third level hidden when you hover on first level list OR link */ #nav-top ul li:hover ul ul, #nav-top ul li.sfHover ul ul, #nav-top ul a:hover ul ul { visibility:hidden; } /* make the third level visible when you hover over second level list OR link */ #nav-top ul :hover ul li:hover ul, #nav-top ul :hover ul li.sfHover ul, #nav-top ul :hover ul a:hover ul { visibility:visible; } /* make the fourth level hidden when you hover over second level list OR link */ #nav-top ul :hover ul li:hover ul ul, #nav-top ul :hover ul li.sfHover ul ul, #nav-top ul :hover ul a:hover ul ul { visibility:hidden; } /* sub menu */ #subnav { background: #fff; margin-top: 15px; border: 1px solid #c0c0c0; } #subnav ul { margin: 0; padding: 0 0 0 5px; list-style: none; } #subnav li { border-right: 1px solid #D8D8D8; padding: 4px 7px; margin: 0; float: left; font-weight: bold; } #subnav li a, #subnav li a:visited, #subnav .page_item { text-decoration: none; color: #c0c0c0; } #subnav li a:hover { text-decoration: none; } #subnav ul li ul li{display: none;} /* Level 3 */ .hier-nav { background: #EDF3E6; margin-top: 3px; border: 1px solid #c0c0c0; } .hier-nav ul { margin: 0; padding: 0 0 0 5px; list-style: none; } .hier-nav li { border-right: 1px solid #D8D8D8; padding: 4px 7px; margin: 0; float: left; font-weight: normal; font-size: 91.67%; } .hier-nav li a, .hier-nav li a:visited, .hier-nav .page_item { text-decoration: none; color: #c0c0c0; } .hier-nav .current_page_item, .hier-nav .current_page_parent { background: #fff; border-left: 1px solid #D8D8D8; } .hier-nav li a:hover { text-decoration: none; } .hier-nav ul li ul li { display: none; } .breadcrumb { font-size: 108%; padding: 3px 5px 3px 8px; } /* content */ #content { clear: both; overflow: hidden; margin-top: 15px; } .post, div.page { border: 1px solid #c0c0c0; background: #FFF; padding: 25px 15px 15px 15px; clear: both; overflow: hidden; padding-bottom: 1em; margin-bottom: 10px; } .post .date { height: 48px; width: 48px; font: normal 150% Arial, Helvetica, sans-serif; color: #ffffff; text-align: center; padding: 0; line-height: 100%; float: left; } .post .date span.day { font: normal 100% Arial, Helvetica, sans-serif; color: #ffffff; text-align: center; padding: 0; line-height: 100%; } .post .date span.month { height: 12px; display: block; font: normal 50% Arial, Helvetica, sans-serif; color: #ffffff; text-align: center; padding-top: 2px; } .post .date span.year { height: 12px; display: block; font: normal 50% Arial, Helvetica, sans-serif; color: #ffffff; text-align: center; padding-top: 0; } .post .title { float: left; margin-left: 10px; width: 635px; } div.page-links { width: 100%; } div.page-links span { border: 1px solid; padding-left: 4px; padding-right: 4px; } div.page-links a:hover { text-decoration: none; } span.more-link { width: 100%; } a.more-link { font-size: 100%; font-weight: bold; float: right; } .postdata { font-size: 90%; color: #999999; } .postdata a, .postdata a:visited { color: #999999; text-decoration: none; } .postdata a:hover { text-decoration: none; } .post-footer .category, .postdata .category{ background: url(images/icons/folder-gray-16x16.png) no-repeat left top; padding-left: 20px; padding-right: 10px; float: left; } .post-footer .permalink, .postdata .permalink { background: url(images/link.png) no-repeat left top; padding-left: 20px; padding-right: 10px; float: left; } .post-footer .comments, .postdata .comments { background: url(images/comments.png) no-repeat left center; padding-left: 20px; padding-right: 10px; float: right; } .postdata .edit{ background: url(images/blog_post_edit.png) no-repeat left center; padding-left: 20px; padding-right: 10px; float: right; } .entry, .non-wp-entry { padding: 15px 0 5px; clear: both; /* font-size: 14px;*/ font-size: 116%; line-height: 1.6em; margin-bottom: 1em; overflow: hidden; } div.post-footer { font-size: 91.67%; margin: 5px 0; width: 100%; } /* post title */ h1.posttitle, h2.posttitle { color: #000; margin: 3px 0 2px; padding-bottom: 4px; font-size: 200%; border-bottom: dotted 1px #CCCCCC; } h1.posttitle a, h1.posttitle a:visited, h2.posttitle a, h2.posttitle a:visited { color: #000; text-decoration: none; } h1.posttitle a:hover, h2.posttitle a:hover { text-decoration: none; } span.author { float: left; display: inline-block; color: #aaa; max-width: 250px; } .post .meta-pullout span.author { float: none; padding-right: 0; } .tags { float: right; display: block; color: #aaa; text-align: right; } /* next & previous page navigation */ .page-nav { clear: both; padding: 5px 0 5px 0; margin-bottom: .6em; background-color: #ffffff; border: 1px solid #c0c0c0; } .page-nav a, .page-nav a:visited { color: #000; text-decoration: none; } .page-nav a:hover, .navigation .suf-page-nav a:hover { text-decoration: none; } .previous-entries a { float: left; padding-left: 20px; margin-left: 10px; background: url(images/older-pages.png) no-repeat left center; } .next-entries a { float: right; padding-right: 20px; margin-right: 10px; background: url(images/newer-pages.png) no-repeat right center; } .suf-page-nav { text-align: center; margin: 5px 0; } .suf-page-nav a, .suf-page-nav span { padding: 2px 5px; border: 1px solid; margin: 2px; } .suf-page-nav span.dots { border: none; } .suf-page-nav a.page-numbers:hover { color: #ffffff; } /* next & previous post navigation */ .post-nav { clear: both; padding: 5px; margin: 0 0 15px 0; font-size: 100%; background-color: #ffffff; border: 1px solid #c0c0c0; } .post-nav table { width: 100%; } .post-nav a, .post-nav a:visited { color: #999999; text-decoration: none; } .post-nav a:hover { text-decoration: none; } .post-nav .previous a { float: left; padding-left: 20px; background: url(images/larrow.png) no-repeat left center; } .post-nav .next a { float: right; padding-right: 20px; text-align: right; background: url(images/rarrow.png) no-repeat right center; } /* Comments */ h3#comments, h3.comments { background-image: url(images/icons/comments.png); background-repeat: no-repeat; background-position: 7px center; padding: 7px 7px 7px 35px; font-size: 116%; clear: both; } h3#respond, h3.respond, #reply-title { background-image: url(images/icons/comment_edit.png); background-repeat: no-repeat; background-position: 7px center; padding: 7px 7px 7px 35px; margin: 20px 0 0; clear: both; font-size: 116%; } /* Comment navigation */ div.navigation { padding: 5px; } /* commentform */ #commentform { margin-top: 10px; } #commentform label { font-weight: bold; color:#000000; font-size: 100%; padding: 5px; margin: 0; display: inline; float: left; text-align: right; height: 20px; width: 80px; border: solid 1px #999; } #commentform label.textarea { display: block; float: none; width: 140px; text-align: center; } #commentform small { color: #999999; font-size: 90%; } #commentform input[type="text"] { height: 20px; margin: 0 0 0 0; } #commentform textarea { font: 110% Arial, Helvetica, sans-serif; height: 140px; border: solid 1px #999999; padding: 5px 3px 3px 7px; margin-top: -1px; width: 90%; max-width: 90%; } #commentform textarea:focus, #commentform input[type="text"]:focus { border: solid 1px #999; } div.reply { text-align: right; width: 100%; } .comment-author { padding: 10px 0 5px 0; margin: 0 0 10px 0; border-bottom: 1px dotted #ccc; } .comment-author img.avatar { margin-top: -5px; } .comment-author-link { padding: 0 0 5px 0; } .comment-body p { line-height: 1.5em; } p.moderation { font-style: italic; color: #000; background-color: #f9f6a7; border: 1px solid #e7d605; padding: 5px; } a.comment-reply-link { border: solid 1px #999999; padding: 0 6px 0 6px; margin: 5px; } li.comment div.reply { margin: 0 0 10px 0; } div.comment-response-types { margin: 5px 0 5px 0; display: block; width: 100%; } a.comment-response-types, span.comment-response-types { float: left; border: solid 1px #999999; padding: 6px; margin: 5px; font-weight: bold; } a.comment-response-types:hover { text-decoration: none; } /* comment list */ .commentlist { margin: 10px 0; padding-left: 30px; line-height: 130%; } .commentlist li{ padding: 5px 10px; background-color: #fbfbfb; margin-bottom: 5px; } .commentlist li.comment { border: 1px solid #ccc; } .commentlist ul li { list-style-type: none; } .commentlist cite { font-weight: bold; font-style: normal; font-size: 110%; } .commentlist cite a, .commentlist cite a:visited { } img.avatar { float: right; margin: 5px; } .commentlist small { margin-bottom: 5px; display: block; font-size: 87%; } .commentlist small a, .commentlist small a:visited{ color: #999999; } /* Credits */ #cred { font-size: 91.67%; padding: 0; clear: both; height: 36px; } #page-footer { margin-top: 10px; } #page-footer #cred { border-top: none; } #cred .designer { padding: 8px 22px; float: left; } #cred a { color: #000; } #cred a:hover { text-decoration: underline; } #cred .valid { padding: 8px 22px; float: right; } #cred table { border: none; padding: 0; margin: 10px 0; width: 100%; } #cred td { width: 33%; } #cred td.cred-left { text-align: left; } #cred td.cred-center { text-align: center; } #cred td.cred-right { text-align: right; } /* Emphasis */ .download, .announcement, .warning, .note { padding: 10px 5px 10px 5px; margin: 10px 0 10px 0; width: 98%; color: #000000; } .download { background-color: #E3F5F9; border: 1px solid #0000ff; } .announcement { background-color: #b8f9d5; border: 1px solid #088c43; } .warning { background-color: #ffdbea; border: 1px solid #ff0000; } .note { background-color: #f9f6a7; border: 1px solid #e7d605; } /* Excerpts */ img.left-thumbnail, .left-thumbnail { float: left; margin: 10px; } img.right-thumbnail, .right-thumbnail { float: right; margin: 10px; } /* Forms */ legend { padding: 0.75em; } fieldset { border: 1px solid #ccc; padding: 0.75em; background: transparent; } /* commentform */ label { color:#333; font-size: 90%; display: block; } small { color: #555; font-size: 90%; } input{ padding: 5px 3px 3px 5px; border-top: 1px solid #ccc; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; border-left: 1px solid #ccc; line-height: 1.5em; } textarea { height: 140px; border-top: 1px solid #ccc; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; border-left: 1px solid #ccc; padding: 5px 3px 3px 7px; line-height: 1.5em; } textarea:focus, input[type="text"]:focus { border: solid 1px #666; } .button, input[type="submit"], .submit { font-weight: normal; margin:0; padding:3px 15px 3px 15px; } .button:hover, input[type="submit"]:hover, .button:active, input[type="submit"]:active { font-weight: bold; } /* sidebar */ #sidebar, #sidebar-b, #sidebar-2, #sidebar-2-b { margin-top: 15px; width: 260px; color: #666666; line-height: 160%; } #sidebar.left, #sidebar-b.left, #sidebar-2.left, #sidebar-2-b.left { float:left; } #sidebar.right, #sidebar-b.right, #sidebar-2.right, #sidebar-2-b.right { float:right; } #wsidebar-top { margin: 15px 0 0 0; padding: 0; } #wsidebar-top, #wsidebar-bottom { color: #666666; } #wsidebar-bottom { padding: 10px 0; } .suf-widget:last-child { margin-bottom: 0; } .flattened:last-child { margin-bottom: 15px; } .sidebar-shell {position:relative; display:block} #sidebar-wrap {position:relative;} .sidebar-wrap-left { float: left; } .sidebar-wrap-right { float: left; } .sidebar-shell-left { float: left; margin-right: 15px; } .sidebar-shell-right { float: left; margin-left: 15px; } .suf-widget, .warea p { margin: 0 0 15px; } .suf-widget h3 { font: bold 100%/100% Arial, Helvetica, sans-serif; color: #444; } .suf-widget h3:hover { color: #000; } .suf-widget h3 a, .suf-widget h3 a:visited { color: #333; } .suf-widget h3 img { vertical-align: middle; } div.sidebar-tab-content a, .suf-widget a, .suf-widget a:visited { color: #000000; text-decoration:none; } div.sidebar-tab-content a:hover, div.sidebar-tab-content a:focus, div.sidebar-tab-content a:active, .warea div.sidebar-tab-content a:hover, .warea div.sidebar-tab-content a:focus, .warea div.sidebar-tab-content a:active, .suf-widget a:hover, .suf-widget a:focus, .suf-widget a:active { text-decoration:underline; } .suf-widget a.openid_link, .recentcomments a.openid_link, a.openid_link { padding-left: 16px; } .suf-mag-category ul, .sidebar-tab-content ul, .suf-widget ul, .suf-flat-widget ul, .suf-panel-widget ul { list-style: none; margin: 0 ; padding: 0 ; } .suf-mag-category ul li, .sidebar-tab-content ul li, .suf-widget ul li, .suf-flat-widget ul li, .suf-panel-widget ul li { background-repeat: no-repeat; padding-left: 22px ; background-position: 0 1px; padding-bottom: 3px; } .sidebar-tab-content ul li ul li, .suf-widget ul li ul li { background-repeat: no-repeat; padding-left: 22px ; padding-bottom: 3px; } .tab-box div.sbtab-content-archives ul li, .tab-box div.sbtab-content-archives ul li ul li, .tabbed-sidebar div.sbtab-content-archives ul li, .tabbed-sidebar div.sbtab-content-archives ul li ul li, div.widget_archive ul li, div.widget_archive ul li ul li, .widget_archive ul li, .widget_archive ul li ul li { background-image: url(images/icons/calendar_date.png); background-repeat: no-repeat; padding-bottom: 3px; } .tab-box div.sbtab-content-categories ul li, .tab-box div.sbtab-content-categories ul li ul li, .tab-box div.sbtab-content-categories ul li ul li ul li, .tabbed-sidebar div.sbtab-content-categories ul li, .tabbed-sidebar div.sbtab-content-categories ul li ul li, .tabbed-sidebar div.sbtab-content-categories ul li ul li ul li, .widget_categories ul li, .widget_categories ul li ul li, .widget_categories ul li ul li ul li { background-repeat: no-repeat; background-position: 0 2px; padding-left: 20px; padding-bottom: 3px; } /* Other Widget Areas */ #right-header-widgets, #top-bar-right-widgets { float: right; display: inline-block; margin-left: 10px; } #left-header-widgets, #top-bar-left-widgets { float: left; display: inline-block; margin-right: 10px; } #horizontal-outer-widgets-1, #horizontal-outer-widgets-2 { width: 100%; padding: 10px 0 10px 0; display: inline-block; float: left; text-align: center; } .suf-horizontal-widget { margin: 5px; float: none; display: inline-block; text-align: left; vertical-align: top; } /* Settings for Twitter widget */ .widget-suf-twitter { text-align: center; margin: 0; } .widget-suf-follow-twitter ul li { background-image: url(images/icons/comment.png); background-repeat: no-repeat; } #right-header-widgets .widget-suf-twitter, #left-header-widgets .widget-suf-twitter, #top-bar-right-widgets .widget-suf-twitter, #top-bar-left-widgets .widget-suf-twitter { padding: 0; } .widget-suf-twitter-boxed { padding: 10px; } .twitter-icon-and-tag img { margin: 5px 10px 0 0; float: left; } .twitter-icon-and-tag { margin: 10px 5px 10px 0; display: inline-block; font-size: 125%; } #right-header-widgets a.twitter-icon-and-tag, #right-header-widgets a.twitter-icon-and-tag img, #left-header-widgets a.twitter-icon-and-tag, #left-header-widgets a.twitter-icon-and-tag img, #top-bar-right-widgets a.twitter-icon-and-tag, #top-bar-right-widgets a.twitter-icon-and-tag img, #top-bar-left-widgets a.twitter-icon-and-tag, #top-bar-left-widgets a.twitter-icon-and-tag img { margin: 0 0 0 0; padding: 0 0 0 0; } a.twitter-icon-and-tag, a.twitter-icon-and-tag:hover, a.twitter-icon-and-tag:active, .warea a.twitter-icon-and-tag, .warea a.twitter-icon-and-tag:hover, .warea a.twitter-icon-and-tag:active, #nav a.twitter-icon-and-tag:hover, #nav a.twitter-icon-and-tag:active, #nav a.twitter-icon-and-tag, #nav-top a.twitter-icon-and-tag:hover, #nav-top a.twitter-icon-and-tag:active, #nav-top a.twitter-icon-and-tag { text-decoration: none; background: none; } /* End Twitter widget settings */ #widgets-above-header { text-align: center; margin: 10px 0; display:block; } #widgets-above-header .col-control { text-align: center; } #widgets-above-header .suf-widget{ display: inline-block; text-align: left; float: none; vertical-align: top; } #header-widgets { display: inline; float: right; } /* Featured Posts */ #featured-posts { margin-top: 15px; padding: 0; border-color: #c0c0c0; background-color: #ffffff; } .featured-content .top, #featured-posts .top { top: 0; left: 0; } .featured-content .bottom, #featured-posts .bottom { bottom: 0; left: 0; } .featured-content .left, #featured-posts .left { top: 0; left: 0; } .featured-content .right, #featured-posts .right { right: 0; bottom: 0; } #featured-posts ul { list-style-type: none; } .featured-content ul, .featured-content ul li { padding-left: 0; } .featured-content ul.sliderContent li { background-image: none; } /* JQuery Cycle is used for the featured posts */ #slider { position: relative; /* important */ overflow: hidden; /* important */ margin: 5px; } .slider { position: relative; /* important */ overflow: hidden; /* important */ } #sliderContent { width: 100%; /* important to be same as image width or wider */ position: absolute; /* important */ top: 0; /* important */ margin-left: 0; /* important */ padding: 0; } .sliderImage { float: left; /* important */ position: relative; /* important */ display: none; /* important */ width: 100%; padding: 0; margin: 0; } .sliderImage div { position: absolute; /* important */ width: 100%; background-color: #222222; filter: alpha(opacity=70); /* here you can set the opacity of box with text */ -moz-opacity: 0.7; /* here you can set the opacity of box with text */ -khtml-opacity: 0.7; /* here you can set the opacity of box with text */ opacity: 0.7; /* here you can set the opacity of box with text */ color: #fff; text-align: left; } .sliderImage div p { margin: 10px; font-size: 108%; text-align: left; } .sliderImage div a { font-weight: bold; } .sliderImage div a:hover { text-decoration: none; } .sliderImage div ins { text-decoration: none; font-weight: bolder; } img.featured-excerpt-left { float: right; } img.featured-excerpt-right { float: left; } .sliderIndex a, #sliderIndex a { border-style: solid; border-width: 1px; margin: 1px; padding: 2px 5px; font-weight: bold; } .sliderIndex a:hover, #sliderIndex a:hover { cursor: pointer; text-decoration: none; } .sliderPager, #sliderPager { float: left; padding: 5px; height: 30px; } .sliderControl, #sliderControl { float: right; padding: 5px; height: 30px; } .sliderPager, .sliderControl { height: 28px; padding: 5px 0 0px 0; margin: 5px 0 0 0; } .sliderPager.below, #sliderPager.below { margin-top: auto; position: static; } .bottom-center, .top-center { text-align: center; } .sliderPager.bottom-center, #sliderPager.bottom-center, .sliderPager.top-center, #sliderPager.top-center { float: none; } .sliderPager.bottom-right, #sliderPager.bottom-right, .sliderPager.top-right, #sliderPager.top-right { float: right; } .sliderControl, #sliderControl { float: right; /* padding: 5px; height: 30px; */ } .sliderPager.below, #sliderPager.below, .sliderControl.below, #sliderControl.below { height: 30px; padding: 5px;} .sliderControl.over, #sliderControl.over { float: none; text-align: center; position: relative; z-index: 20; } .over .sliderPrev { float: left; } .over .sliderNext { float: right; } .over .sliderPause { float: none; } .sliderPager, .sliderControl { height: 28px; padding: 5px 0 0; margin: 5px 0 0; } .featured-content img.left-thumbnail, .featured-content img.right-thumbnail, #featured-posts img.left-thumbnail, #featured-posts img.right-thumbnail { margin: 0; } .featured-content .sliderIndex a, .featured-content .sliderIndex a:hover, .featured-content .sliderIndex a:visited, .featured-content .sliderIndex a:active, .featured-content .sliderIndex a:focus { text-decoration: none; } .tab-box div.sbtab-content-archives ul li, .tab-box div.sbtab-content-archives ul li ul li, .tabbed-sidebar div.sbtab-content-archives ul li, .tabbed-sidebar div.sbtab-content-archives ul li ul li, .widget_archive ul li, .widget_archive ul li ul li { background-image: url(images/icons/calendar_date.png); background-repeat: no-repeat; padding-bottom: 3px; } #recent-comments ul li { background-image: url(images/icons/comments.png); background-repeat: no-repeat; padding-bottom: 3px; } #recent-posts ul li { background-image: url(images/icons/page_copy.png); background-repeat: no-repeat; padding-bottom: 3px; } .widget_categories ul li, .widget_categories ul li ul li, .widget_categories ul li ul li ul li { background-repeat: no-repeat; background-position: 0 2px; padding-left: 20px; padding-bottom: 3px; } /* meta */ .tab-box div.sbtab-content-meta .rss, .tabbed-sidebar div.sbtab-content-meta .rss, .suf-widget .rss { background-repeat: no-repeat; background-position: left center; padding-bottom: 3px; } /* calendar */ .widget_calendar caption { font-weight: bold; padding: 0 0 0.5em; } .widget_calendar table { margin: 1em auto; width: 90%; max-width: 300px; } .widget_calendar td { text-align: center; margin: 1px; } .widget_calendar a { font-weight: bold; } /* alignments */ img.center, img[align="center"] { display: block; margin-left: auto; margin-right: auto; } img[align="left"] { float:left; margin: 2px 10px 5px 0; } img[align="right"] { float:right; margin: 2px 0 5px 10px; } .clear { clear:both; } hr.clear { clear:both; visibility: hidden; margin: 0; padding: 0; } .author-profile, .info-tag, .info-category { padding: 15px; margin-bottom: 15px; background-color: #ffffff; font-size: 116%; border: solid 1px #c0c0c0; } .author-profile h2, .info-tag h2, h2.category-title, .info-category h2.posttitle { margin: 0.5em 0 10px 0; padding-bottom: 5px; border-bottom: dotted 1px #CCCCCC; } .author-profile img.avatar { margin: 5px 10px; } .author-even img.avatar { float: right; margin: 5px 0 5px 15px; } .author-odd img.avatar { float: left; margin: 5px 15px 5px 0; } .info-category a img { float: right; margin: 5px 0 5px 10px; } .entry img { max-width: 99%; } .wp-caption { text-align: center; background: #fff; padding: 4px; margin-bottom: 1em; } .entry .wp-caption { max-width: 99%; } .wp-caption-text, .gallery-caption { font-size: 100%; font-style: italic; margin:0; padding:6px 3px 2px; line-height: 16px; text-align: center; } .wp-caption img { margin: 0; padding: 0; border: 0 none; margin-top: 5px; max-width: 100%; } .wp-caption-dd { font-size: 91.67%; line-height: 17px; padding: 0 4px 5px; margin: 0; } .sticky, .bypostauthor { } /* Clearfix: Courtesy http://www.positioniseverything.net/easyclearing.html */ .fix:after { content:"."; display:block; height:0; clear:both; visibility:hidden; } .fix { display: inline-block; } /* Hide from IE Mac \*/ .fix {display:block;} /* End hide from IE Mac */ #sidebar-container { display: inline-block; margin-top: 15px; position: relative; } .sidebar-container-left { float: left; } .sidebar-container-right { float: left; } /* Contains the entire.tab-box section */ .tab-box, .tabbed-sidebar { display: block; /* margin-top: 15px;*/ } .tab-box-left { margin-right: 15px; } .sidebar-shell .tab-box-left { margin-right: 0; } .tab-box-right { margin-left: 15px; } .sidebar-shell .tab-box-right { margin-left: 0; } /* List of tabs */ ul.sidebar-tabs { font: bold 100%/100% Arial, Helvetica, sans-serif; display: inline-block; width: 100%; margin: 0 0 -1px 0; padding: 0; } ul.sidebar-tabs li { list-style: none; float: left; margin: 0 2px 0 0; padding: 0; } ul.sidebar-tabs li a, .warea ul.sidebar-tabs li a { overflow: hidden; display: block; padding: 7px; text-decoration: none; border: 1px solid #c0c0c0; cursor: pointer; color: #444; background-color: #fff; } .warea .sidebar-tabs a, .warea .sidebar-tabs a:hover { text-decoration: none; } /* The content shown when a tab is selected */ div.sidebar-tab-content { display: block; padding: 10px; background: #fff; border: 1px solid #c0c0c0; } /* Magazine */ .suf-mag-headlines { margin-top: 3px; display: block; background: #fff; border-width: 1px; border-style: solid; border-color: #c0c0c0; } .suf-mag-headline-photo-box { padding: 5px; overflow: hidden; float:left; margin: 5px 3px 5px 5px; text-align: center; margin-left: -100%; position: relative; } .suf-mag-headline-photo { display: inline-block; padding: 5px; } .suf-mag-headline-block { float: left; margin: 5px 5px 5px 2px; position: relative; } .suf-mag-headline-block ul.mag-headlines { border-collapse: collapse; list-style: none; list-style-type:none; margin: 10px; padding-left: 10px; } .suf-mag-headline-block li.suf-mag-headline a { padding: 3px 8px; text-decoration: none; color: #000; } .suf-mag-headline-block li.suf-mag-headline a.tab-current { padding: 2px 7px; border: none; } .suf-mag-headline { display: block; line-height: 22px; font-size: 108%; } .suf-mag-excerpts { width: 100%; padding: 0; margin: 10px 0; } .suf-tiles { width: 100%; padding: 0; } .suf-mag-excerpts td, .suf-tiles td { margin: 10px; border-width: 1px; border-style: solid; border-color: #c0c0c0; vertical-align: top; background-color: #ffffff; } div.suf-mag-excerpt, div.suf-tile { padding: 8px; font-size: 108%; line-height: 20px; text-align: center; } div.suf-tile-image { float: none; display: inline-block; } h2.suf-mag-excerpt-title a, h2.suf-mag-excerpt-title a:hover, h2.suf-mag-excerpt-title a:visited, h2.suf-mag-excerpt-title a:active, h2.suf-tile-title a, h2.suf-tile-title a:hover, h2.suf-tile-title a:visited, h2.suf-tile-title a:active { font-weight: bold; font-size: 48%; text-decoration: none; color: #444; } h2.suf-mag-excerpt-title, h2.suf-tile-title { border-top: 1px dotted #c0c0c0; border-bottom: 1px dotted #c0c0c0; line-height: 18px; padding: 5px 0; } .suf-mag-excerpt-image, .suf-tile-image { overflow: hidden; height: 100px; width: 100%; margin-bottom: 12px; text-align: center; } .suf-tile-image img { margin: auto; } .suf-mag-excerpt-text, .suf-tile-text { margin: 12px 5px; } .suf-mag-categories { width: 100%; padding: 0; margin: 10px 0; } h2.suf-mag-headlines-title, .suf-mag-excerpts th, .suf-mag-categories th, .suf-tiles th { padding: 5px; border-width: 1px; border-style: solid; border-color: #c0c0c0; background-color: #ffffff; font-size: 108%; color: #444; font-weight: bold; line-height: 26px; } .suf-mag-categories td { margin: 10px; border-width: 1px; border-style: solid; border-color: #c0c0c0; vertical-align: top; background-color: #ffffff; } div.suf-mag-category { margin: 8px; } .suf-mag-category-image { overflow: hidden; height: 100px; width: 100%; margin-bottom: 10px; text-align: center; } h2.suf-mag-category-title { font-size: 100%; font-family: Arial, Verdana, sans-serif; font-weight: bold; padding: 5px; } .widget-suf-cat-posts ul.suf-cat-posts-list, .suf-mag-category ul.suf-mag-catblock-posts { border-collapse: collapse; list-style: none; list-style-type:none; padding-left: 0; } .widget-suf-cat-posts li.suf-cat-post, .suf-mag-category li.suf-mag-catblock-post { padding: 6px 1px 6px 20px; border-bottom: 1px dotted #c0c0c0; background-repeat: no-repeat; background-image: url(images/right_arrow.png); background-position: 0 10px; } .widget-suf-cat-posts li.suf-cat-post a, .suf-mag-category li.suf-mag-catblock-post a { text-decoration: none; color: #000; } .widget-suf-cat-posts li.suf-cat-post:hover, .suf-mag-category li.suf-mag-catblock-post:hover { padding: 5px 0 5px 19px; border: 1px solid #c0c0c0; } .suf-cat-post, .suf-mag-catblock-post { display: block; line-height: 22px; font-size: 108%; } .suf-mag-category-footer { vertical-align: bottom; } a.suf-mag-excerpt-full-story, a.suf-mag-excerpt-full-story:hover, a.suf-mag-excerpt-full-story:visited, a.suf-mag-category-all-posts, a.suf-mag-category-all-posts:hover, a.suf-mag-category-all-posts:visited { float: right; margin: 5px; padding: 4px 10px; text-decoration: none; } .suf-cat-posts-widget-image { overflow: hidden; height: 80px; width: 100%; margin-bottom: 10px; text-align: center; } .follow-icon-and-tag { margin: 10px 5px 10px 0; display: inline-block; font-size: 125%; vertical-align: middle; } div#right-header-widgets .follow-icon-and-tag, div#left-header-widgets .follow-icon-and-tag { display: inline-block; margin: 0; } div#top-bar-right-widgets .follow-icon-and-tag, div#top-bar-left-widgets .follow-icon-and-tag { display: inline-block; margin: 0; } div#right-header-widgets a.follow-icon-and-tag:hover, div#right-header-widgets a.follow-icon-and-tag:active, div#right-header-widgets a.follow-icon-and-tag, div#left-header-widgets a.follow-icon-and-tag:hover, div#left-header-widgets a.follow-icon-and-tag:active, div#left-header-widgets a.follow-icon-and-tag, div#top-bar-right-widgets a.follow-icon-and-tag:hover, div#top-bar-right-widgets a.follow-icon-and-tag:active, div#top-bar-right-widgets a.follow-icon-and-tag, div#top-bar-left-widgets a.follow-icon-and-tag:hover, div#top-bar-left-widgets a.follow-icon-and-tag:active, div#top-bar-left-widgets a.follow-icon-and-tag { padding: 3px 2px; } a.follow-icon-and-tag:hover, a.follow-icon-and-tag:active, a.follow-icon-and-tag, .warea a.follow-icon-and-tag:hover, .warea a.follow-icon-and-tag:active, .warea a.follow-icon-and-tag { text-decoration: none; background: none; } .widget-suf-subscription form p, .widget-suf-subscription p { text-align: center; } .widget-suf-subscription form { margin: 10px 0; } .widget-suf-subscription div { text-align: center; } .widget-suf-subscription input[type='text'].subscription-email { color: #999; border: 1px solid #888; margin: 10px 0; } .suf-flat-widget { margin: 15px 8px; } .suf-flat-widget h3 { font-size: 133%; border-top: 1px dotted #666; border-bottom: 1px dotted #666; margin-bottom: 10px; padding: 5px 0; } .flattened { background-color: #fff; border: 1px solid #c0c0c0; } #horizontal-outer-widgets-1.flattened { margin-top: 10px; } #horizontal-outer-widgets-2.flattened { margin: 10px 0; } .author-info { border: 1px solid #c0c0c0; margin-top: 15px; padding: 5px; } .author-info h4 { padding: 5px 0 5px 5px; font-family: Arial, sans-serif; } .attachment-thumbnail { } .title-container { padding-left: 48px; padding-right: 10px; /* padding-left: 0; padding-right: 0;*/ } .post .date { width: 48px; right: 58px; margin-left: -100%; float: left; position: relative; /* display: none;*/ } .post .title { float: left; width: 100%; position: relative; margin: 0; padding: 0 0 0 10px; } .widget_tag_cloud { font-family: Arial, Trebuchet, "Trebuchet MS", sans-serif; } .col-control { margin: 0 auto; padding: 0; } /* Sliding panel. */ #top-bar-right-spanel { text-align: center; display: none; padding: 10px; background-color: #040D0F; border: 1px solid #222; } /* The part of the panel that actually slides. */ .spanel { overflow: hidden; position: relative; z-index: 10; } /* Widget container. */ .spanel .spanel-content { display: block; overflow: hidden; margin: 0 auto; padding: 0; text-align: left; } /* Sliding panel widgets. */ .spanel .suf-panel-widget { overflow: hidden; float: left; color: #AAA; background: transparent; font-family: Arial, Helvetica, sans-serif; border: none; } .spanel .suf-panel-widget h3 { color: #999; font: bold 14px/100% Arial, Helvetica, sans-serif; } .spanel .suf-widget, .spanel .suf-flat-widget { float: left; } #top-bar-right-spanel-tab { float: right; display: inline-block; margin-left: 10px; } /* Wrapper for the open/close button. */ #top-bar-right-spanel-tab .toggle { } /* Open/close link. */ #top-bar-right-spanel-tab a { margin: 0; padding: 8px 8px 5px 8px; text-align: center; } /* Open link. */ #top-bar-right-spanel-tab a.open { } /* Close link. */ #top-bar-right-spanel-tab a.close { } /* Open/close link hover. */ #top-bar-right-spanel-tab a:hover { cursor: pointer; } /* Open/close link array (&urarr;). */ #top-bar-right-spanel-tab a .arrow { font-style: normal; } /* Now Reading Plugin */ .nr-post { } .nr-post h3 { border: 1px solid #c0c0c0; padding: 5px; font-size: 116%; margin: 5px 0; clear: both; } div.booklisting { list-style: none; } div.booklisting, div.bookentry { margin: 10px 0; } div.bookentry { display: inline-block; } div.booklisting img, div.bookentry img { border: 1px solid #c0c0c0; padding: 5px 5px 5px 5px; margin: 0 12px 12px 12px; width: 108px; height: 160px; } .nr_widget img { padding: 5px 5px 5px 5px; width: 65px; height: 100px; } .nr_widget h4 { border: 1px solid #c0c0c0; padding: 5px 5px 5px 5px; font: bold 100%/100% Arial, Helvetica, sans-serif; margin: 20px 0 5px 0; clear: both; } div.bookentry .stats { float: left; font-size: 100%; line-height: 20px; } div.bookentry .stats p { text-align: left; margin-bottom: 7px; } div.bookentry .review { float: right; padding: 0 0 0 10px; } .bookdata { margin-top: 5px; font-size: 90%; color: #999999; } .bookdata a, .bookdata a:visited { color: #999999; text-decoration: none; } .bookdata a:hover { text-decoration: none; } .bookdata .edit, .bookdata .manage { padding-left: 20px; padding-right: 10px; float: right; } .bookdata .rating { float: right; } .bookdata .edit { background: url(images/blog_post_edit.png) no-repeat left center; } .bookdata .manage { background: url(images/Archive-16.png) no-repeat left center; } .bookdata .author { padding-left: 0; padding-right: 10px; float: left; } .bookentry { padding: 15px 0 5px; clear: both; font-size: 116%; line-height: 1.6em; margin-bottom: 1em; } .post .libtitle { float: left; margin-left: 0; width: 745px; } .nr-shelf { width: 100%; padding: 0; } .nr-shelf-slot { margin: 8px; font-size: 108%; line-height: 20px; text-align: center; } .now-reading form input{ margin: 3px 2px; } /* WP PageNavi Plugin */ .wp-pagenavi { text-align: center; margin: 5px 0px; } .wp-pagenavi a, .wp-pagenavi span { padding: 2px 5px 2px 5px; border-width: 1px; border-style: solid; margin: 3px; } .wp-pagenavi span.pages { padding: 2px 8px; } .wp-pagenavi span.extend { border: none; } /* WP-Recaptcha Plugin */ #commentform label.recaptcha_input_area_text { border: none; } /* Subscribe to Comments Plugin */ #commentform .subscribe-to-comments label { border: none; width: auto; padding: 0; margin-right: 10px; } #commentform .subscribe-to-comments input[type="checkbox"] { padding: 0; margin: 0; } /* WPML Plugin */ #language-selector span { font-weight: normal; font-size: 12px; } #language-selector ul li, #language-selector ul ul li { height: 30px; border-width: 0; } #language-selector ul li, #language-selector ul ul li, #language-selector ul li a, #language-selector ul ul li a { line-height: 18px; margin: 0; } #language-selector ul li a.lang_sel_sel, #language-selector ul li a.lang_sel_sel:visited, #language-selector ul ul li a, #language-selector ul ul li a:visited { width: 147px; } #language-selector ul ul { width: auto; } #language-selector ul li a.lang_sel_sel, #language-selector ul li a.lang_sel_sel:visited, #language-selector ul ul li a, #language-selector ul ul li a:visited { padding: 5px 0 3px 0; } #language-selector img { margin: 0 0 0 10px; } #language-selector ul li a.lang_sel_sel, #language-selector ul li a.lang_sel_sel:visited, #language-selector ul li a.lang_sel_sel:hover, #language-selector ul li a.lang_sel_sel:active, #lang_sel ul li a:active, #language-selector ul ul li a, #language-selector ul ul li a:visited, #language-selector ul ul li a:hover, #language-selector ul ul li a:active, #lang_sel ul ul li a:active { background-image: none; } #language-selector ul ul { top: auto; } #lang_sel li:before{ content:''; } /* BuddyPress */ div.item-list-tabs { margin: 15px 0; border-bottom: 1px solid #ddd; overflow: hidden; clear: both; } div.item-list-tabs ul { list-style: none; margin: 0; padding: 0; line-height: 200%; } div.item-list-tabs ul li { float: left; margin-right: 5px; } div.item-list-tabs#subnav ul li a { border: none; padding: 0; } div.item-list-tabs ul li.last { float: right; } #item-nav { margin-bottom: 10px; } #item-nav div.item-list-tabs { padding: 0; margin-bottom: -1px; } #item-body div.item-list-tabs { padding: 0; } #item-nav div.item-list-tabs .filter, #item-nav div.item-list-tabs .last, #item-body div.item-list-tabs .filter, #item-body div.item-list-tabs .last { float: right; border: none; } div.item-list-tabs ul li a, div.item-list-tabs ul li a:visited, div.item-list-tabs ul li a:focus, div.item-list-tabs ul li a:hover { font-weight: bold; text-decoration: none; padding: 5px; } .post form#whats-new-form #whats-new-textarea, .post div.activity-comments form .ac-textarea { border: none; margin-bottom:10px; padding:0; } .post form#whats-new-form textarea, .post div.activity-comments form .ac-textarea textarea { border: 1px solid #999; padding: 5px; margin: 0; width: 95%; font-size: 1em; } .post #whats-new-options { padding-right: 20px; } .dir-form h3, .dir-form label { display: inline; } .dir-form h3 a.button, .dir-form h3 a.button:hover, .dir-form h3 a.button:visited { font-size: 66%; text-decoration: none; } .bp-header { border-bottom: dotted 1px #ccc; margin-bottom: 10px; padding-bottom: 10px; } .dir-search { text-align: right; } .post form.standard-form label { display: inline; width: 150px; float: left; margin: 4px 0 0 0; text-align: left; } .post form.standard-form label.textarea { display: block; } .post form.standard-form input[type="text"], .post form.standard-form textarea { margin-bottom: 10px; font-size: 1em; } #group-create-tabs li { padding: 0 20px 0 0; } .post form.standard-form div.checkbox, .post form.standard-form div.radio { display: block; } .post form.standard-form div.radio ul { float: left; } .post form.standard-form div.checkbox label, .post form.standard-form div.radio label { width: 200px; } .profile-fields td { padding: 6px 10px; } .profile-fields td p { margin: 0; text-align: left; } input.settings-input:after { content:"."; display: block; height:0; clear: right; visibility:hidden; } input.settings-input { display: inline-block; } /* Hide from IE Mac \*/ input.settings-input {display:block;} /* End hide from IE Mac */ ul.item-list li:after { content:"."; display: block; height:0; clear: right; visibility:hidden; } ul.item-list li { display: inline-block; } /* Hide from IE Mac \*/ ul.item-list li {display:block;} /* End hide from IE Mac */ .standard-form .register-section { border-bottom: dotted 1px #555; } .activity-meta { width: 100%; text-align: right; padding: 3px 0; } .activity-meta a { text-decoration: none; border-style: solid; border-width: 1px; padding: 0 6px 0 6px; margin-left: 5px; } ul.item-list li { margin: 8px 0; } ul.item-list img.avatar { float: left; } ul.item-list .activity-header p { margin-bottom: 5px; } ul.item-list .activity-header { border-bottom: dotted 1px #555; margin-bottom: 10px; } ul.item-list .activity-content, ul.item-list .activity-comments { padding-right: 10px; } ul.item-list .item-title, ul.item-list .action { margin: 5px 0; } .standard-form #l3nav { margin-bottom: 10px; } ul.item-list span.activity { padding: 2px 8px; } .item-meta { margin: 10px 0; } .standard-form { padding: 10px; } /*** * Object Lists (groups/members/forums/blogs) */ ul.item-list { margin: 20px 0; padding: 0; list-style: none; } ul.item-list li { position: relative; } ul.item-list div.item-avatar { float: left; } ul.item-list div.item { margin-left: 65px; } ul.item-list div.action { position: absolute; top: 0; right: 15px; text-align: right; } /*** * Content Object Headers */ #item-header { padding-bottom: 15px; overflow: hidden; padding-left: 175px; } .groups .group-single #item-header, .links .single-item #item-header { padding-right: 165px; } #item-header-avatar, .links .item-avatar { float: left; margin-right: 15px; margin-left: -175px; } #item-header-content { float: left; width: 100%; } #item-actions { float: right; width: 150px; margin-left: 15px; margin-right: -165px;} #item-actions ul { list-style: none; } #item-actions h5 { text-align: right; } .link-meta { float: left; width: 100%; display: block; margin: 0.5em 0; font-size: 90%; } #item-meta { float: left; } /*** * Activity Stream Post Form */ form#whats-new-form { overflow: hidden; padding-bottom: 20px; } form#whats-new-form #whats-new-avatar, form#whats-new-form #whats-new-avatar img.avatar { float: left; } form#whats-new-form h5 { clear: none; margin-left: 76px; } form#whats-new-form #whats-new-content { margin-left: 54px; padding-left: 22px; } form#whats-new-form #whats-new-textarea { padding: 8px; border: 1px inset #ccc; margin-bottom: 10px; } form#whats-new-form textarea { width: 100%; height: 60px; font-size: 14px; color: #555; border: none; margin: 0; padding: 0; } form#whats-new-form #whats-new-submit { float: right; margin: 0; } /*** * Activity Stream Post Form */ ul.activity-list { margin: 0; padding: 0; } ul.activity-list li { overflow: hidden; padding: 20px 0; } ul.activity-list li img.avatar { float: left; width: 60px; height: 60px; } ul.activity-list li div.activity-content { margin-left: 75px; } ul.activity-list li div.activity-comments { margin: 15px 0 0 38px; } ul.activity-list li div.activity-comments ul li { padding: 5px 0; } ul.activity-list li div.activity-comments img.avatar { width: 25px; height: 25px; } ul.activity-list li div.acomment-content, ul.activity-list li div.acomment-meta { margin-left: 35px; } ul.activity-list li div.activity-inreplyto { margin: 15px 0 0 75px; font-size: 11px; } /*** * Input Forms */ /* Activity comment forms */ form.ac-form { display: none; } /* JS will show this */ div.activity-comments form { display: none; margin: 10px 0 10px 33px; padding: 8px; } div.activity-comments div#message { margin-top: 15px; margin-bottom: 0; } div.activity-comments form.loading { background-image: url( images/ajax-loader.gif ); background-position: 2% 95%; background-repeat: no-repeat; } div.activity-comments form .ac-textarea { padding: 8px; border: 1px inset #ccc; margin-bottom: 10px; } div.activity-comments form textarea { width: 100%; height: 60px; border: none; padding: 0; } div.activity-comments form input { margin-top: 5px; } div.activity-comments form div.ac-reply-avatar { float: left; } div.activity-comments form div.ac-reply-content { margin-left: 25px; padding-left: 15px; } /* Standard Input Forms */ form.standard-form label, form.standard-form span.label { display: block; margin: 15px 0 5px 0; } form.standard-form div.checkbox label, form.standard-form div.radio label { font-weight: normal; margin: 5px 0 0 0; } form.standard-form textarea { width: 75%; height: 120px; } /* Send Invites Form */ form#send-invite-form { margin-top: 20px; } div#invite-list { height: 400px; overflow: scroll; padding: 5px; width: 160px; margin: 10px 0; } /* Directory search forms */ form.dir-form div.dir-search { float: right; width: 45%; margin: 0; } p.submit, div.submit { border: none; } .editfield p.description { color: #333; float: none; text-align: inherit; margin: -10px 0 10px 0; text-transform: none; font-style: italic; } .editfield { margin-top: 10px; } .generic-button { padding: 0.3em 0.7em; display: block; float: left; margin: 0.5em; border: 1px solid #ccc; } .generic-button a { text-decoration: none; } #item-buttons { float: right; margin: 1em; } .ajax-loader { background: url(images/ajax-loader.gif ) center left no-repeat !important; padding: 8px; display: none; } a.loading { background-image: url(images/ajax-loader.gif) !important; background-position: 95% 50% !important; background-repeat: no-repeat !important; padding-right: 25px !important; } #message-threads { border-collapse: collapse; margin: 10px 0; border-top: 1px solid #ccc; } #message-threads td { border-bottom: 1px solid #ccc; vertical-align: middle; padding: 1em 0.5em; } #message-threads p { margin-bottom: 0.5em; line-height: 1.4em; } #message-threads .odd { background: #eee; } #message-threads .unread { background: #FFF9DB; } #message-threads .thread-count, #message-threads .thread-options { text-align: center;} #message-threads .unread .unread-count { padding: 0.3em 0.6em; background: #dd0000; color: #eee; } div.create-blog form.standard-form label, #bp-album-upload-form label, #link-details-form label { display: block; float: none; font-size: 1.1em; font-weight: bold; font-family: Arial, Helvetica, sans-serif; margin: 0.5em 0; width: auto; } div.create-blog form.standard-form input[type='text'] { width: 60%; } #bp-album-edit-form label { float: none; width: auto; display: block; font-size: 1.1em; font-weight: bold;} #bp-album-edit-form input[type='text'], #bp-album-edit-form textarea { width: 80%; } p.picture-meta { text-align: center;} p.picture-meta a { padding: 0.5em 1em; } .standard-form div#link-url-embed div#link-url-embed-content, .standard-form div#link-url-embed div#link-url-embed-avatar, .links div.link-vote-panel div.vote-count { background-color: transparent; border: 1px solid #ccc; } #link-details-form.standard-form fieldset, #link-details-form.standard-form fieldset legend { background: none; border: 1px solid #ccc; } /* Docking Boxes */ .dbx-clone{position:absolute; visibility:hidden} .dbx-clone, .dbx-clone .dbx-handle-cursor{cursor:move !important} .dbx-dummy{display:block; width:0; height:0; overflow:hidden} .dbx-group, .dbx-box, .dbx-handle{position:relative; display:block} .dbx-box{margin:0 0 15px 0; padding:0; border:none; clear:both; background:#fff} .dbx-group{width:210px; padding:0 0 10px} * html .dbx-group{width:210px; padding-bottom:0} .dbx-handle{position:relative; margin:0; padding:8px 24px 7px 10px; border-bottom:1px dotted #c0c0c0} * html .dbx-handle{} .dbx-handle-cursor{cursor:move} a.dbx-toggle, a.dbx-toggle:visited{display:block; width:20px; height:20px; overflow:hidden; position:absolute; top:4px; right:3px; text-indent:-50px; text-decoration:none} a.dbx-toggle-open, a.dbx-toggle-open:visited{background-position:0 0} a.dbx-toggle-closed, a.dbx-toggle-closed:visited{background-position:0 -20px} a.dbx-toggle-hilite-open, a.dbx-toggle-hilite-open:visited{background-position:-20px 0} a.dbx-toggle-hilite-closed, a.dbx-toggle-hilite-closed:visited{background-position:-20px -20px} .dbx-tooltip{display:block; position:absolute; margin:36px 0 0 125px; width:185px; border:1px solid #000; background:#ffd; color:#000; font:normal normal normal 0.85em tahoma,arial,sans-serif; padding:2px 4px 3px 5px; text-align:left} * html .dbx-tooltip{width:210px} *[class="dbx-tooltip"]:lang(en){border-color:InfoText; background:InfoBackground; color:InfoText; font:small-caption; font-weight:normal} .dbx-content{margin:0; padding:5px 10px 9px 10px; overflow:hidden} .dbx-box-closed .dbx-content{display:block; height:4px; padding:0; overflow:hidden} .dbx-box-closed .dbx-content *{display:none} .dbx-clone{opacity:0.8; -moz-opacity:0.8; -khtml-opacity:0.8; filter:alpha(opacity=80)} /* Multi-column short code */ .suf-multic {display: block; width: 100%; float: left; margin: 10px 0;} .suf-mc-col {display: inline-block; float: left; margin: 0 3px; padding: 4px} .suf-mc-col-025 {width: 23%} .suf-mc-col-033 {width: 31%} .suf-mc-col-050 {width: 48%} .suf-mc-col-066 {width: 64%} .suf-mc-col-075 {width: 73%} .suf-mc-col-100 {width: 100%; margin: 0} .suf-multic .suf-mc-col:first-child {padding-left: 0; margin-left: 0} .suf-multic .suf-mc-col:last-child {padding-right: 0; margin-right: 0} form.search-info { padding: 1.5em 0} .search-hl { display: inline;} span.search-highlight {background:#ff0; color: #000} .post-pullout { width: 200px } .entry-container { padding: 0; position: relative; } .meta-pullout { position: relative; width: 150px; float: left; font-size: 95%; } .meta-left-pullout { text-align: right; margin-left: -100%; right: 150px; } .meta-right-pullout { text-align: left; margin-right: -150px; } .meta-pullout ul { list-style: none; } .meta-left-pullout ul { margin-left: 0; margin-right: 10px; padding-left: 0; padding-right: 10px; border-right: 1px dotted #ccc; } .meta-right-pullout ul { margin-left: 10px; margin-right: 0; padding-left: 10px; padding-right: 0; border-left: 1px dotted #ccc; } .meta-pullout li { border-bottom: 1px dotted #ccc; padding: 0.4em 0; } .meta-pullout .tags { float: none; max-width: none; text-align: inherit; } .meta-pullout .category { background: url(images/icons/folder-gray-16x16.png) no-repeat left top; float: none; padding-left: 20px; } .meta-pullout .comments { background: url(images/comments.png) no-repeat left top; padding-left: 20px; float: none; } .meta-pullout .edit { background: url(images/blog_post_edit.png) no-repeat left center; padding-left: 20px; float: none; } .page-template-card-php #wrapper { width: 600px; max-width: none; min-width: 0; } table.exif { margin: 10px 0; border-collapse: collapse; } table.exif td { padding: 0.25em 2em 0.2em 0; border-bottom: 1px dotted #ccc; } .format-standard, .format-gallery, .format-aside, .format-link, .format-chat, .format-video, .format-audio, .format-quote, .format-status { } ul.image-sizes { list-style-type: none; clear: both; margin: 0 0 10px 0; padding: 0; } ul.image-sizes li { float: left; padding: 5px 10px; margin: 0 10px 0 0; text-decoration: none; } /*#container { float: left; }*/ .suf-widget { overflow: hidden; } .suf-mosaic { padding: 0 30px; position: relative; } .suf-mosaic-thumbs { text-align: center; position: relative; float: left; width: 100%; } .suf-mosaic-thumb { position: relative; display: inline-block; } .page-nav-left { width: 30px; float: left; position: relative; margin-left: -100%; left: -30px; } .page-nav-right { width: 30px; float: left; position: relative; margin-right: -100%; } .page-nav-left a, .page-nav-right a { display: inline-block; position: relative; top: 50px; width: 30px; height: 30px; text-decoration: none; } .page-nav-left a {background: url(images/panel-lr.png) 0 0 no-repeat; } .page-nav-right a {background: url(images/panel-lr.png) -30px 0 no-repeat; } .suf-mosaic-img { float: left; margin: 3px; border: 1px solid #c0c0c0; padding: 4px; filter: alpha(opacity=75); opacity: 0.75; } a:hover .suf-mosaic-img { filter: alpha(opacity=100); opacity: 1; } .flickr_badge_image, .suf-flickr-image, .suf-picasa-image { display: inline-block; list-style: none; vertical-align: top; text-align: center; } .flickr_badge_image img, .suf-flickr-image img, .suf-picasa-image img, .suf-post-gallery-nav img { border: 1px solid #c0c0c0; padding: 5px; margin: 5px; filter: alpha(opacity=75); opacity: 0.75; } .flickr_badge_image a, .suf-flickr-image a, .suf-picasa-image a { display: inline-block; text-align: center; text-decoration: none; font-size: 0.9em; vertical-align: middle; } .flickr_badge_image a span, .suf-flickr-image a span, .suf-picasa-image a span { display: block; padding: 3px; width: 90%; } .flickr_badge_image a:hover img, .suf-flickr-image a:hover img, .suf-picasa-image a:hover img { filter: alpha(opacity=100); opacity: 1; } .suf-flickr-wrap { text-align: center; } .suf-flickr-panel ul { padding: 0; margin: 10px auto; } .suf-twitter-avatar { float: left; margin: 0 5px 5px 0; padding: 5px; border-width: 1px; border-style: solid; border-color: #c0c0c0; } .suf-twitter-rest ul li { background: none; padding: 10px 0; border-bottom-style: dotted; border-bottom-width: 1px; } .suf-twitter-rest ul li:last-child { border-bottom: none; } .suf-flickr-panel { display: none; border: 1px solid #333; text-align: center; width: 800px; /*position: absolute;*/ z-index: 5; /*margin:1em 0 3em;*/ -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; padding: 10px; } .suf-flickr-panel .suf-flickr-image img { border-color: #333; } .suf-flickr-panel-header { top: 0; left: 0; padding: 10px 0; text-align: right; font-weight: bold; border-bottom: 5px solid #787878; color: #787878; position: relative; display: table; width: 100%; } .suf-flickr-panel-header div { vertical-align: middle; display: table-cell; margin: 0 5px; } .suf-flickr-panel-header .title { float: left; text-align: left; width: auto; font-size: 2.2em; } .suf-flickr-panel-header .photo-count { float: left; text-align: left; width: auto; font-size: 2.2em; font-style: italic; font-weight: normal; } .suf-flickr-panel-header .flickr-view { width: 150px; } .suf-flickr-panel-header a { text-decoration: none; font-size: 100%; } .suf-flickr-panel-content { padding: 10px 40px; } .suf-flickr-set-thumb { display: inline; } .suf-gallery-1c { width: 98%; } .suf-gallery-2c { width: 49%; } .suf-gallery-3c { width: 32%; } .suf-gallery-4c { width: 24%; } .suf-gallery-5c { width: 19%; } .suf-gallery-6c { width: 16%; } .suf-gallery-7c { width: 14%; } .suf-gallery-8c { width: 12%; } .suf-gallery-9c { width: 10.5%; } .suf-gallery-10c { width: 9.5%; } .suf-gallery-11c { width: 8.6%; } .suf-gallery-12c { width: 8%; } .suf-gallery-13c { width: 7.2%; } .suf-gallery-14c { width: 6.8%; } .suf-gallery-15c { width: 6.5%; } .suf-tile-bylines { text-align: center;} .suf-tile-byline-icons { padding: 0; margin: 0; display: inline-block; } .suf-tile-byline-icons li { list-style: none; float: left; padding: 0 3px; } a.suf-tile-icon { width: 16px; height: 16px; overflow: hidden; text-decoration: none; display: inline-block; } .suf-tile-date-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 -48px; } .suf-tile-permalink-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 -32px; } .suf-tile-postedby-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 -80px; } .suf-tile-cats-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 -64px; } .suf-tile-tags-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 0; } .suf-tile-comments-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 -16px; } .suf-tile-edit-icon { background: transparent url(images/icons/byline-icons.png) no-repeat 0 -96px; } .suf-tile-icon-text { list-style: none; padding-left: 5px; display: none; } .suf-tile-icon-text span.author { float: none; } .suf-tile-date-icon-text .icon, .suf-tile-date-icon.clicked, .suf-tile-date-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px -48px; } .suf-tile-permalink-icon-text .icon, .suf-tile-permalink-icon.clicked, .suf-tile-permalink-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px -32px; } .suf-tile-postedby-icon-text .icon, .suf-tile-postedby-icon.clicked, .suf-tile-postedby-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px -80px; } .suf-tile-cats-icon-text .icon, .suf-tile-cats-icon.clicked, .suf-tile-cats-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px -64px; } .suf-tile-tags-icon-text .icon, .suf-tile-tags-icon.clicked, .suf-tile-tags-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px 0; } .suf-tile-comments-icon-text .icon, .suf-tile-comments-icon.clicked, .suf-tile-comments-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px -16px; } .suf-tile-edit-icon-text .icon, .suf-tile-edit-icon.clicked, .suf-tile-edit-icon:hover { background: transparent url(images/icons/byline-icons.png) no-repeat -16px -96px; } .suf-tile-byline-texts { text-align: left; margin: 10px 10px 0; padding: 0; font-size: 85%; } .suf-tile-byline-texts .icon { width: 16px; height: 16px; display: inline-block; padding: 0 5px; } .warea ul.suf-posts-thumbnail li, ul.suf-posts-thumbnail li { background: none; padding: 5px 0; border-bottom: 1px dotted #ccc; } ul.suf-posts-thumbnail li:last-child { border-bottom: none; } img.suf-widget-thumb { border: 1px solid #ccc; padding: 3px; } div.suf-widget-thumb { float: left; display: inline-block; margin: 0 5px 5px 0; } div.suf-post-gallery { width: 100%; } ul.suf-post-gallery { float: left; } .suf-post-gallery ul { margin: 0; padding: 0; position: relative;} .suf-post-gallery li { list-style: none; } .suf-post-gallery-nav li { float: left; text-align: center; } .suf-post-gallery-nav a { display: inline-block; } .panel-previous { position: absolute; left: 15px; top: 50%; background: url(images/panel-lr.png) no-repeat; width: 30px; height: 30px; } .panel-next { position: absolute; right: 15px; top: 50%; background: url(images/panel-lr.png) no-repeat; width: 30px; height: 30px; } ul.slideshow-grid-panel { float: left; width: 100% !important; position: relative; display: inline-block; } li.slideshow-grid { width: 100% !important; } li.slideshow-grid li { display: inline-block; } .suf-flickr-image { background: transparent !important; } ul.full-display-users { list-style: none; } .widget-suf-users ul.full-display-users li { list-style: none; background: none; padding: 5px 0; border-bottom: 1px dotted #ccc; } .widget-suf-users ul.full-display-users li:last-child { border-bottom: none; } .widget-suf-users ul.full-display-users h5 { margin-top: 0; } .full-display-users img.avatar { float: left; margin: 0 5px 5px 0; border: 1px solid #ccc; padding: 3px; } .full-display-users .user-details { padding-left: 10px; float: none; } .full-display-users .user-description { display: inline; } ul.gravatar-display-users { list-style: none; } ul.gravatar-display-users a { float: left; } .widget-suf-users ul.gravatar-display-users li { float: left; list-style: none; background: none; padding: 0; } .gravatar-display-users .user-details { font-size: 80%; border: 1px solid #e7d605; background: #f9f6a7; position: absolute; z-index:999; left:-9999px; padding: 5px; } .gravatar-display-users img.avatar { float: left; margin: 0 5px 5px 0; border: 1px solid #ccc; padding: 3px; } .widget-suf-users { overflow: visible; } .suf-thumbnail-anchor-left { float: left; } .suf-thumbnail-anchor-right { float: right; } ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/exp-coll-gray.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAA AAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI BQ8GKw/xRU8AAAHHSURBVFhH7Ze7Sl1BFIa/E21D8AGEiJBmyAOIhTYmjTGm+MGH yAt468TLC0jKdAksMAlJlUot8gKBXaSQnMZWsLNQU8w5YjEze/ZF08wHpxnW+lj7 zG0NFAqFh0HSXF1ME2K+ydBgCkkLwDYwA8zWhNdS58suUNIrvGgK2Ac+pTPS5PoG ocH7SFrGiwbAHvDVzG7TWXGa+oIFShoA74At4BLYNbOfodgcuvhiU/wbGALvzexX JKYJrX1PIuO3o19ftPZNhAadcx+AK+DAObfmnDuvquosFJtDF1/OJnmDXzsDYBf4 1nGTNPLVFjhG0mu8eAq/+z6b2XU6K06uL7vAMZIW8cfEczPr46BepEffHY911RUK hcL/oO8zqYsv1iycOOdWnHPDqqqGoZgmdPHF2q0XwEfgUNKppKVIXC6tfcm7eNQJ rwIbwDWwY2Y/Ujkp2viym4XRI2cTeArsAF86tl1ZvuwCx0iax4unzexlXXwddb7Y GkzRun2PkPQ1eRcv4b/0GX5KjtIZaXJ9OZvkLV50g1/U31M5Kdr4gv+gpAlgDVgH LoDN3HdsiC6+2BT/Af7i37HHkZgm9OvrcjWF6NtXKDwm/wAs68xYDVYSRQAAAABJ RU5ErkJggg== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/bg-gray-2.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAgAAAAwCAYAAAAsJjtLAAAAAXNSR0IArs4c6QAA AAZiS0dEAKUApwCqq7CqigAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI Bg8fJvj1PwQAAAGYSURBVDhPfZNBrtg4DEOfAN//FkWBHlKcBUk7vwM0mySWRVGk NL9+/xH/eI5WMCCJYWAEGoSYgbNa8B2EkAAMKsGRBE5C5KJgJhd2FxpIEAb5Iwg3 8NKLdnaXCYZGjIId4g+BcAnBvo60KCRH81im5aMVCsN2lILtIiLwgiZplL+EMjJN +h9JotZFG5O0MKkbD9Cg2XBARv5RwZhHUsRLKfn6hNRRvLhSl1GF2nAopLlWmGkX nyBcJwfV7rnQfPDEVElFrMzVPEIHLZJzNrnWACtpGRaNlaiu5XO0Pw8HuYvXpmhL LsNHlHohwpkMTt96SrrI3GQpXmwmanLYfag0mckKBVsVk3Us5KKPHyNb76FV3Xzq Db2lV6K75KY/Qq0E6rroA5ELyshB9SeKXoTqoBvk0+rZ1a3/HoVX7e4h3PSRfcnY pwTEkYwl6WJ+BP3f7fM8PPteMTntvJWXzSqP8f/dbuLotlhazoXM86dbeR85rKF+ TBIBdYm0uXfoMh/d7nhR9K5iyabNi/lR1Ydn2VL3oVQoxPAforGyXZAIWtEAAAAA SUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/search-button-gray-2.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAA AAZiS0dEAKUApwCqq7CqigAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI BhAdGvLWxUwAAAKCSURBVEhL7ZS9a1RBFMV/N2unBhSLgJVdGsHCkAhGExSJnW26 VCGCSszGD0SzroKim2wiKSKxSaPbWNiIlrsGRbERBEEQUojgHyCSaPYci7df0X1R S8EDjzcf58yZuXPnwr+OSJuYnZvvBUaAAaAbWANWgDKwdHb89Ks0bSvaGszM3lmA GAuMAQxEJA0HhIG4mz175mQ7fSt+MZguzj0BhhoD3vBrCpLG08mJ8eNsgo7Wzu3p 4oLlIUlIRnJJ1uBkdjywt9kalF2yG/NDheniQtri0LKhW7dnegleurnVyYvnsjPt RLcKxSz2tKO2gOm7cD7b9k4aJ5A9IhkssEppiwNcODcxI1SyjG2MR9K4DQNLA5aQ jcximqDJZzEJlZA8kMbbUm/I3hORHCDw6zRBHZYSToDtPWm8hoEtkvhHI2M2g2zA hGCT59QaIq/YrhmpJ1VR51s9lmsh1Uoar2lglyXh5BtNE9QheVTJZpBVTuM1s0ha kqnn9/BU/no2TZS7ej0radgSVQnLS2ncDcGbyl1bAMbAmCCgBCxey0+Vr+TyW4Po IRjFHiYCDDLPM1E9ls/nv/7WAODy1NUnOIZq9YZ6PQqDadQhOgKIwPIny4VMxvfa mWR+HnhWKd/vP3S4C9ifXDo0X3ezE8EKxA5Dp/HedXn1yODA20ql8r11vV8MAJaf VR4f7D/8NPA6sM2wy3jN9gfDQ9un3BEPEF3gbptO7L3f17V69MjgBpP0BP4DXLqU 20fGOZsTSfb5k6zC6tcvd+fn59fgp2r6t7hxI//mW3U9L1Uf1WrSbuO+TGb7zjqn bYj+Bi+Wlz8f6O1/H0GX4SNVCsXizXe/0/1HAz8AdXWHAbLdxAYAAAAASUVORK5C YII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/bulletgray.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAA AAZiS0dEAOAA4QDhrroU2QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI BgUXA3a/5J0AAAC4SURBVDhP7ZHRaQJREEXPCxawndjC4n+IBkHs5jUUFPO/pAU7 WSzgnnzsGsj6wAYcGGYY7jvM3AevKK3h6fy9BiqwBW7AANTd9v261D4Avk6XNYWf oh0URAoFYSzYf+4+/kHelgC1ErsIUfyrdpG61K8agI049dxXvC/qZqlvAIKW+Ymk TBWhNBxrnMCgIhLAOCWSODwFJKmaMQkmqMxGjGp9Cjge9le1V8+zebdMfX887B++ 8RXwCxoifh6Wewp5AAAAAElFTkSuQmCC ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/folder-gray16.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAA AAZiS0dEAOAA4QDhrroU2QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kI BgURHkPjL8IAAAJNSURBVDhPfZJLTBNRFIb/O9OhMFDaQQT77rTOTHlIjStidAEu gaUYZGVMXLl1xpoY3ZgCxoVLN8aFC9moGzVRAyKgwbjS0CZQwUB5NKFtBtNQOu2M G0ukdPiTk9yc85/v3HNzCUwkK1GGYZirLS1cKJvNbWiaNjUxHluu9llqNQOA3d58 bWhw4InNZoOu69ja2sbZSM/XxXjikaZprybGYzoA0LWaZSVaF4n0vPT7fc0URcFi sYDjOPA875UkcZgQMiQIUmJubnat5g2sVutoWBLdtWqcw4FL/X3nwpI04/G4H1PV BlmJUh1h6RbLsiCEmIbP5yUMw/QfARBCBiVJ7Ph3No319RRCwWD4CEASBYXjuGOb AUBVVaQ2Np4degNZiV4QRfG82fRyuYxCYQ/FogZVVbV4PDF2CODzeRWXywkzpdPb 2N8vYCeTw3Y6/XxiPLZ6sIKsRLskURwAzHd3Ol1oampGNpsrr6ysxoD/PhLHcXIg 4CfHAWiaxk4mA8MwJsdiD5YPAMrtO432ptLIl8+TYOpb0XZKQCgYBE3ThwClUgn1 VisoipyoDKYAwDCMQhmOhyEhstd3sQuB9k0k46/x88cC8vl8xYtk8hcE4TTqmLr2 So4GgPn5OePd2zdTrW2Bp5vp/SLTwHdKnb2sx2lFKhXH2loajY127P7ZBWOx4NPM 7M3p6akEABDUkKxEG1iWvXKmu/sGz/O9bg9HlpZ+w+8LYOHb90VD13uGhy/rpoAq WHeQ56/zfGDUZrOdfP/h48j9e3dfVOp/AV39vgMehREZAAAAAElFTkSuQmCC ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline Content-Type: image/png Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/images/icons/008.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNqkUztrokEUva5G4wMTX5UI 0c/OUpDINhYWkjIpxH+gYgorS/EHLCk2hX9BkGCVzkaIhWghC4qiSyKIGBXE+IyK O+euH+yG3SoDl2Fm7jn33McoDocDfWapPl5kMplrsV0J+ypMEtYV9iTsMZ1OP3z0 V8gKBNAltuTFxUXCbrfT+fk56XQ6Wi6XNJ1Oqd/v0/Pz873wuRNEP/8iANhgMHTd bjcDF4sFrVYrwptWqyW9Xs/7aDSiVqtF8/lckknkFJKSJLHT5eUlaTQa2m631Gg0 qNfr0XA4pJOTEzKbzQS/er2eFJhbAJUKheLa5XJ9s1gsNJlM8EiVSoXEPRmNRvL7 /RwVitbrNZ2dnYHMVygUfgQCgSYUXEHi6+sr7fd7joy9Wq1yCu12m25ubiiXy3Fq eIf/sdAPX1Dt3W5H7+/vXLBIJEKxWIxCoRDfdTodKpfLFA6HOTUogf+xSwQCCRHh jD2bzXI0kMXjcY5aKpWo2WyS0+nkM/yOLWaCLmSBAAb2brdL+Xyec49Goyx7MBiQ 1+tlYpyP88EEGBK+nM1mlEqlKBgMcv61Wo1MJhMTF4tFUqvVtNls5BF4kgkeUV30 H45YPp+PlaCAb29vvwdGdAXRrVYrdwO4Pwfpu5i+BFS8vLxw9NPTUwYiX6VSyQQA q1QqzMW9GKRbWQHW3Xg8Zokej4ccDgcTAISW2Ww2kgcNYw3///4FkUoCAwQgCJEW Ko/6CPC//8JnfuMvAQYADedG7QKlJlUAAAAASUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=skin.css Content-Type: text/css; charset=UTF-8; name=skin.css Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/skins/light-theme-gray-2/skin.css?ver=3.8.2 Content-Transfer-Encoding: 8bit /* Standard Styles */ a { color:#787878; } a:visited { color: #787878; } /* blockquote{ background: #f7f7f7; border: 1px solid #ddd; } */ a.dbx-toggle, a.dbx-toggle:visited { background-image:url(../../images/exp-coll-gray.png); background-repeat:no-repeat; } * html a.dbx-toggle, * html a.dbx-toggle:visited { background-image:url(../../images/exp-coll-gray.gif); background-repeat:no-repeat; } .scheme a.dbx-toggle, .scheme a.dbx-toggle:visited { background-image:url(../../images/exp-coll-eee.png); background-repeat:no-repeat; } * html .scheme a.dbx-toggle, * html .scheme a.dbx-toggle:visited { background-image:url(../../images/exp-coll-eee.gif); background-repeat:no-repeat; } .suf-widget h3.scheme { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #wrapper { border: 1px solid #c0c0c0; background-color: #f0f0f0; } /* Blog title */ .blogtitle a:hover { color: #787878; } /* search form */ .searchform input[type="submit"].searchsubmit { background: url(../../images/search-button-gray-2.png) no-repeat 0 0; } * html #right-header-widgets .searchsubmit, * html #left-header-widgets .searchsubmit, * html #top-bar-right-widgets .searchsubmit, * html #top-bar-left-widgets .searchsubmit, * html #sidebar .searchsubmit, * html #sidebar-2 .searchsubmit, * html #sidebar-b .searchsubmit, * html #sidebar-2-b .searchsubmit, * html #horizontal-outer-widgets-1 .searchsubmit, * html #horizontal-outer-widgets-2 .searchsubmit { bac\kground: url(../../images/search-button-gray-2.gif) no-repeat 0 0; } /* main menu */ #nav { border-bottom: 1px solid #c0c0c0; } #nav.continuous, #nav.continuous ul li, #nav.continuous ul li a, #nav.continuous ul li a:visited, #nav-top.continuous, #nav-top.continuous ul li, #nav-top.continuous ul li a, #nav-top.continuous ul li a:visited { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav.continuous, #nav-top.continuous { border-bottom: 1px solid #636466; } #nav.continuous .current_page_item a, #nav.continuous .current_page_item a:hover,#nav.continuous ul li a:hover, #nav.continuous li a:active, #nav.continuous ul ul li a, #nav.continuous ul ul li a:visited, #nav-top.continuous .current_page_item a, #nav-top.continuous .current_page_item a:hover,#nav-top.continuous ul li a:hover, #nav-top.continuous li a:active, #nav-top.continuous ul ul li a, #nav-top.continuous ul ul li a:visited { background: #f0f0f0; color: #222; } #nav.continuous ul ul li a:hover, #nav.continuous .current_page_item li a:hover, #nav.continuous .current-cat li a:hover, #nav.continuous .current-menu-item li a:hover, #nav-top.continuous ul ul li a:hover, #nav-top.continuous .current_page_item li a:hover, #nav-top.continuous .current-cat li a:hover, #nav-top.continuous .current-menu-item li a:hover { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav ul li, #nav.continuous ul ul li, #nav-top.continuous ul ul li{ border: 1px solid #c0c0c0; } #nav ul li a{ color: #222; background-color: #f0f0f0; } #nav .current_page_item a, #nav .current_page_item a:hover,#nav li a:active { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } #nav li a:hover{ color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav li a:active{ color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* Styling for navigation menus */ #nav ul ul li { border: 1px solid #c0c0c0; } #nav ul ul li a:hover{ color: #eee; } /* style the links for the top level */ #nav a, #nav a:visited { color: #222; } #nav li.current_page_item a, #nav li.current-cat a, #nav li.current-menu-item a, #nav a:active { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* style the second level background */ #nav ul ul a.drop, #nav ul ul a.drop:visited { background: #f0f0f0; } /* style the second level hover */ #nav ul ul a.drop:hover { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav ul ul :hover > a.drop { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* style the third level hover */ #nav ul ul ul a:hover { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* style the second level links */ #nav ul ul a, #nav ul ul a:visited, #nav li.current_page_item li a, #nav li.current-cat li a, #nav li.current-menu-item li a { background: #f0f0f0; color:#222; } /* style the top level hover */ #nav a:hover, #nav ul ul a:hover { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav :hover > a, #nav ul ul :hover > a { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* Top menu */ #nav-top { background-color: #f0f0f0; border: 1px solid #c0c0c0; border-top: none; } #nav-top ul li{ border: 1px solid #c0c0c0; } #nav-top ul li a{ color: #222; background-color: #f0f0f0; } #nav-top .current_page_item a, #nav-top .current_page_item a:hover,#nav-top li a:active { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } #nav-top li a:hover{ color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav-top li a:active{ color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* Styling for navigation menus */ #nav-top ul ul li { border: 1px solid #c0c0c0; } #nav-top ul ul li a:hover{ color: #eee; } /* style the links for the top level */ #nav-top a, #nav-top a:visited { color: #222; } #nav-top li.current_page_item a, #nav-top li.current-cat a, #nav-top li.current-menu-item a, #nav-top a:active { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* style the second level background */ #nav-top ul ul a.drop, #nav-top ul ul a.drop:visited { background: #f0f0f0; } /* style the second level hover */ #nav-top ul ul a.drop:hover { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav-top ul ul :hover > a.drop { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* style the third level hover */ #nav-top ul ul ul a:hover { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* style the second level links */ #nav-top ul ul a, #nav-top ul ul a:visited, #nav-top li.current_page_item li a, #nav-top li.current-cat li a, #nav-top li.current-menu-item li a { background: #f0f0f0; color:#222; } /* style the top level hover */ #nav-top a:hover, #nav-top ul ul a:hover { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #nav-top :hover > a, #nav-top ul ul :hover > a { color: #eee; background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } /* sub menu */ #subnav { background: #fff; margin-top: 15px; border: 1px solid #c0c0c0; } #subnav ul { margin: 0px; padding: 0px 0px 0px 5px; list-style: none; } #subnav .current_page_item a, #subnav .current_page_item a:visited, #subnav .current_page_parent a, #subnav .current_page_parent a:visited { color: #787878; } #subnav li a:hover { color: #787878; } /* Level 3 */ .hier-nav { background: #f0f0f0; } .hier-nav .current_page_item a, .hier-nav .current_page_item a:visited, .hier-nav .current_page_parent a, .hier-nav .current_page_parent a:visited { color: #787878; } .hier-nav li a:hover { color: #787878; } #top-bar-right-spanel-tab .toggle { border: 1px solid #c0c0c0; } #top-bar-right-spanel-tab .toggle a { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* content */ .post .date { background: url(../../images/calgray-2.png) no-repeat; color: #eee; } .post .date span.day, .post .date span.month { color: #eee; } .post .date span.year { color: #eee; } .bookdata a:hover, .postdata a:hover { color: #787878; } /* post title */ h1.posttitle a:hover, h2.posttitle a:hover { color: #787878; } .tags a:hover { color: #787878; } div.page-links span { border-color: #787878; } div.page-links > span { background-color: #787878; color: #fff; } div.page-links a:hover { background-color: #787878; color: #fff; } /* next & previous page navigation */ .page-nav a:hover { color: #787878; } .suf-page-nav a, .suf-page-nav a:visited, .suf-page-nav span { border-color: #787878; color: #787878; } .suf-page-nav a:hover { background-color: #787878; } .suf-page-nav span.current { background-color: #787878; color: #ffffff; } /* next & previous post navigation */ .post-nav a:hover { color: #787878; } /* Comments */ h3#comments, h3.comments { background-color: #f0f0f0; } h3#respond, h3.respond, #reply-title { background-color: #f0f0f0; } /* comment list */ .commentlist cite { color: #787878; } .commentlist cite a, .commentlist cite a:visited { color: #787878; } .commentlist .alt { background-color: #f0f0f0; } div.comment-response-types span { border-color: #787878; } div.comment-response-types > span { background-color: #787878; color: #fff; } div.comment-response-types a:hover { background-color: #787878; color: #fff; } /* Credits */ #page-footer, #cred { border-top: 1px solid #c0c0c0; } #cred a:hover { color: #787878; } .button, input[type="submit"], input[type="button"] { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* sidebar */ .suf-widget h3, .suf-widget h3:hover, .suf-widget h3 a, .suf-widget h3 a:visited { color: #444; } .suf-widget h3.scheme, .suf-widget h3.scheme:hover, .suf-widget h3.scheme a, .suf-widget h3.scheme a:visited { color: #eee; } div.sidebar-tab-content a:hover, div.sidebar-tab-content a:focus, div.sidebar-tab-content a:active, .suf-widget a:hover, .suf-widget a:focus, .suf-widget a:active, .warea a:hover, .warea a:focus, .warea a:active { color: #787878; } .suf-mag-category li, .sidebar-tab-content ul li, .suf-widget li, .suf-flat-widget li, .suf-panel-widget li { background-image: url(../../images/icons/bulletgray.png); } .sidebar-tab-content ul li ul li, .suf-widget ul li ul li { background-image: url(../../images/icons/bulletgray.png); } .tab-box div.sbtab-content-categories ul li, .tab-box div.sbtab-content-categories ul li ul li, .tab-box div.sbtab-content-categories ul li ul li ul li, .widget_categories ul li, .widget_categories ul li ul li, .widget_categories ul li ul li ul li { background-image: url(../../images/icons/folder-gray16.png); } /* meta */ div.sbtab-content-meta .rss, .suf-widget .rss, .suf-flat-widget .rss, .suf-panel-widget .rss, .widget_meta .rss { background-image: url(../../images/icons/008.png); } .widget_calendar td.with-posts { background: #636466; } .widget_calendar td.with-posts a { color: #eee; } #commentform label.fancy { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* These settings are required for Featured Posts */ .sliderIndex a, .sliderIndex a:visited, #sliderIndex a, #sliderIndex a:visited { border-color: #787878; color: #787878; } .sliderIndex a:hover, .sliderIndex a.activeSlide, #sliderIndex a:hover, #sliderIndex a.activeSlide { background-color: #787878; color: #fff; } /* These settings are for common plugins */ .wp-pagenavi a, .wp-pagenavi a:visited, .wp-pagenavi span { border-color: #787878; color: #787878; } .wp-pagenavi span.current { background-color: #787878; color: #fff; } .wp-pagenavi a:hover { background-color: #787878; color: #fff; } .warea ul.sidebar-tabs li a.tab-current, ul.sidebar-tabs li a.tab-current { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* Magazine */ .suf-mag-headline-block li.suf-mag-headline a.tab-current, h2.suf-mag-category-title, a.suf-mag-excerpt-full-story, a.suf-mag-excerpt-full-story:visited, .warea a.suf-mag-category-all-posts, .warea a.suf-mag-category-all-posts:visited, a.suf-mag-category-all-posts, a.suf-mag-category-all-posts:visited { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; color: #eee; } /* BuddyPress */ #item-nav div.item-list-tabs ul li.selected { background: #636466 url(../../images/bg-gray-2.png) repeat-x top left; } #item-body div.item-list-tabs ul li.current a, #item-body div.item-list-tabs ul li.current a:visited, #item-body div.item-list-tabs ul li.current a:hover { color: #787878; } div.item-list-tabs ul li.selected a, div.item-list-tabs ul li.selected a:visited, div.item-list-tabs ul li.selected a:focus, div.item-list-tabs ul li.selected a:hover, .dir-form h3 a.button, .dir-form h3 a.button:hover, .dir-form h3 a.button:visited { color: #eee; } #item-nav div.item-list-tabs ul li { border: 1px solid #ddd; border-bottom: none; } .post form#whats-new-form, ul.item-list .activity, ul.item-list .groups, ul.item-list .blog, ul.item-list li div.activity-comments ul li, .standard-form, ul.item-list .member { border: 1px solid #ccc; background-color: #f0f0f0; } #l3nav .current a, #l3nav .current a:visited, #l3nav .current a, #l3nav .current a:visited { color: #787878; } ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=rounded-corners.css Content-Type: text/css; charset=UTF-8; name=rounded-corners.css Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/rounded-corners.css?ver=3.8.2 Content-Transfer-Encoding: 8bit /** * This file enables CSS3-based rounded corners for capable browsers. * * Author: Sayontan Sinha */ /* All corners same */ #language-selector ul ul li, #language-selector ul ul li a, #language-selector ul ul li a:visited { border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; -khtml-border-radius: 0; } a.comment-reply-link, a.comment-response-types, span.comment-response-types, .wp-caption, .suf-mag-headline-block li.suf-mag-headline a.tab-current, .widget-suf-cat-posts li.suf-cat-post:hover, .suf-mag-category li.suf-mag-catblock-post:hover, .activity-meta a, ul.item-list span.activity { border-radius: 3px; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; } .suf-widget, .post, div.page, .non-wp-post, #subnav, .hier-nav, .page-nav, .post-nav, .flattened, .author-profile, .info-tag, .info-category, #featured-posts, h3#comments, h3.comments, h3#respond, h3.respond, #reply-title, textarea, .author-info, blockquote, pre, input[type="text"], input[type="password"], .commentlist li, .suf-mag-categories td, .suf-mag-excerpts td, .suf-tiles td, h2.suf-mag-headlines-title, .suf-mag-excerpts th, .suf-tiles th, .suf-mag-categories th, #recaptcha_response_field, #language-selector ul li, #language-selector ul li a, #language-selector ul li a:visited, .download, .announcement, .warning, .note, .suf-mag-headlines, .nr-post h3, .nr_widget h4, .post form#whats-new-form #whats-new-textarea, .post form#whats-new-form, ul.item-list li, .standard-form, fieldset { -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } #wrapper { -moz-border-radius: 7px; -khtml-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; } .searchform .searchfield, .dir-search input { -moz-border-radius: 10px; -khtml-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } legend, .button, input[type="button"], input[type="submit"], .submit, a.suf-mag-excerpt-full-story, a.suf-mag-excerpt-full-story:hover, a.suf-mag-excerpt-full-story:visited, a.suf-mag-category-all-posts, a.suf-mag-category-all-posts:hover, a.suf-mag-category-all-posts:visited, .generic-button { border-radius: 20px; -moz-border-radius: 20px; -webkit-border-radius: 20px; -khtml-border-radius: 20px; } #nav.continuous ul li, #nav.continuous ul li a { border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; -khtml-border-radius: 0; } /* Same top-left and top-right */ #nav ul ul li, #nav ul ul li a, #nav ul ul li a:visited { border-top-left-radius: 0; border-top-right-radius: 0; -moz-border-radius-topleft: 0; -moz-border-radius-topright: 0; -webkit-border-top-left-radius: 0; -webkit-border-top-right-radius: 0; -khtml-border-top-left-radius: 0; -khtml-border-top-right-radius: 0; } .dbx-handle { border-top-left-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; } #commentform label.textarea, h2.suf-mag-category-title, #language-selector ul ul li:first-child, #language-selector ul ul li:first-child a, #language-selector ul ul li:first-child a:visited, ul.sidebar-tabs li a, #nav ul li, #nav ul li a, #nav ul ul ul li:first-child, #nav ul ul ul li:first-child > a, #nav ul ul ul ul li:first-child > a:hover, #nav-top ul ul ul li:first-child, #nav-top ul ul ul li:first-child > a, #nav-top ul ul ul li:first-child > a:hover, #item-nav div.item-list-tabs ul li { border-top-left-radius: 5px; border-top-right-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-left-radius: 5px; -khtml-border-top-right-radius: 5px; } /* Same top-left and bottom-left */ #commentform label { border-top-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-top-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-top-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; } /* Same top-right and bottom-right */ #commentform input[type="text"] { border-top-right-radius: 5px; border-bottom-right-radius: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-top-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-top-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; } /* Same bottom-left and bottom-right */ #language-selector ul ul li:last-child, #language-selector ul ul li:last-child a, #language-selector ul ul li:last-child a:visited, div.sidebar-tab-content, #nav ul ul li:last-child, #nav ul ul li:last-child > a, #nav ul ul li:last-child > a:hover, #nav-top, #nav-top ul ul li:last-child, #nav-top ul ul li:last-child > a, #nav-top ul ul li:last-child > a:hover { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-left-radius: 5px; -khtml-border-bottom-right-radius: 5px; } /* Solo corners */ #commentform input[type="text"], #commentform label.textarea { border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-left-radius: 0; } #commentform input[type="text"], #commentform textarea { border-top-left-radius: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; -khtml-border-top-left-radius: 0; } ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=default.css Content-Type: text/css; charset=UTF-8; name=default.css Content-Location: http://www.ogalik.ee/?ver=3.8.2&suffusion-css=css Content-Transfer-Encoding: 8bit /* CSS retrieved from cache */ /* August 22, 2011 6:35 pm */ body { background-color: #EFF8FC; } #wrapper { margin: 20px auto; } .page-template-1l-sidebar-php #wrapper { width: 90%; max-width: 1200px; min-width: 600px; } .page-template-1l-sidebar-php #container { padding-left: 275px; padding-right: 0px; } .page-template-1l-sidebar-php #main-col { width: 100%; } * html .page-template-1l-sidebar-php #main-col { w\idth: 100% } .page-template-1l-sidebar-php #nav-top, .page-template-1l-sidebar-php #top-bar-right-spanel { width: 90%; max-width: 1200px; min-width: 600px; } .page-template-1l-sidebar-php #nav-top .col-control, .page-template-1l-sidebar-php #top-bar-right-spanel .col-control { width: 100% } .page-template-1l-sidebar-php #widgets-above-header { width: 90%; max-width: 1200px; min-width: 600px; } .page-template-1l-sidebar-php #widgets-above-header .col-control { width: 100% }.page-template-1l-sidebar-php #nav .col-control { width: 100% } .page-template-1l-sidebar-php .post-footer .category, .page-template-1l-sidebar-php .postdata .category { max-width: 60%; } .page-template-1l-sidebar-php .tags { max-width: 60%; } .page-template-1l-sidebar-php #sidebar, .page-template-1l-sidebar-php #sidebar-b, .page-template-1l-sidebar-php #sidebar-shell-1 { width: 260px; } .page-template-1l-sidebar-php #sidebar.flattened, .page-template-1l-sidebar-php #sidebar-b.flattened { width: 258px; } .page-template-1l-sidebar-php #sidebar-shell-1 { margin-left: -100%; margin-right: 15px; left: auto; right: 275px; } .page-template-1l-sidebar-php #sidebar-2, .page-template-1l-sidebar-php #sidebar-2-b, .page-template-1l-sidebar-php #sidebar-shell-2, .page-template-1l-sidebar-php #sidebar-2.flattened, .page-template-1l-sidebar-php #sidebar-2-b.flattened { width: 0; } .page-template-1l-sidebar-php #sidebar-shell-2 { margin-left: 0px; margin-right: 0px; left: auto; right: auto; } .page-template-1l-sidebar-php #sidebar-container { width: 275px; } .page-template-1l-sidebar-php .sidebar-container-left { right: 275px; } .page-template-1l-sidebar-php .sidebar-container-right { margin-right: -275px; } .page-template-1l-sidebar-php .sidebar-container-left #sidebar-wrap { right: auto; } .page-template-1l-sidebar-php #wsidebar-top, .page-template-1l-sidebar-php #wsidebar-bottom { width: 273px; } .page-template-1l-sidebar-php #sidebar-wrap { width: 290px; left: auto; right: auto; } * html .page-template-1l-sidebar-php #sidebar-wrap { lef\t: auto; righ\t: auto; } .page-template-1l-sidebar-php .sidebar-wrap-left { margin-left: -100%; } .page-template-1l-sidebar-php .sidebar-wrap-right { margin-right: -290px; } * html .page-template-1l-sidebar-php #sidebar, * html .page-template-1l-sidebar-php #sidebar-b, * html .page-template-1l-sidebar-php #sidebar-shell-1 { w\idth: 252px; } * html .page-template-1l-sidebar-php #sidebar-shell-1 { } * html .page-template-1l-sidebar-php #sidebar-shell-2 { } * html .page-template-1l-sidebar-php #sidebar-container { w\idth: 265px; } .page-template-1l-sidebar-php .tab-box { width: 260px; } .page-template-1r-sidebar-php #wrapper { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-1r-sidebar-php #container { padding-left: 0px; padding-right: 275px; } .page-template-1r-sidebar-php #main-col { width: 725px; } * html .page-template-1r-sidebar-php #main-col { w\idth: 695px } .page-template-1r-sidebar-php #nav-top, .page-template-1r-sidebar-php #top-bar-right-spanel { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-1r-sidebar-php #nav-top .col-control, .page-template-1r-sidebar-php #top-bar-right-spanel .col-control { width: 1000px } .page-template-1r-sidebar-php #widgets-above-header { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-1r-sidebar-php #widgets-above-header .col-control { width: 1000px }.page-template-1r-sidebar-php #nav .col-control { width: 1000px } .page-template-1r-sidebar-php .post-footer .category, .page-template-1r-sidebar-php .postdata .category { max-width: 450px; } .page-template-1r-sidebar-php .tags { max-width: 450px; } .page-template-1r-sidebar-php #sidebar, .page-template-1r-sidebar-php #sidebar-b, .page-template-1r-sidebar-php #sidebar-shell-1 { width: 260px; } .page-template-1r-sidebar-php #sidebar.flattened, .page-template-1r-sidebar-php #sidebar-b.flattened { width: 258px; } .page-template-1r-sidebar-php #sidebar-shell-1 { margin-left: 15px; margin-right: -275px; left: auto; right: auto; } .page-template-1r-sidebar-php #sidebar-2, .page-template-1r-sidebar-php #sidebar-2-b, .page-template-1r-sidebar-php #sidebar-shell-2, .page-template-1r-sidebar-php #sidebar-2.flattened, .page-template-1r-sidebar-php #sidebar-2-b.flattened { width: 0; } .page-template-1r-sidebar-php #sidebar-shell-2 { margin-left: 0px; margin-right: 0px; left: auto; right: auto; } .page-template-1r-sidebar-php #sidebar-container { width: 275px; } .page-template-1r-sidebar-php .sidebar-container-left { right: 275px; } .page-template-1r-sidebar-php .sidebar-container-right { margin-right: -275px; } .page-template-1r-sidebar-php .sidebar-container-left #sidebar-wrap { right: auto; } .page-template-1r-sidebar-php #wsidebar-top, .page-template-1r-sidebar-php #wsidebar-bottom { width: 273px; } .page-template-1r-sidebar-php #sidebar-wrap { width: 290px; left: auto; right: auto; } * html .page-template-1r-sidebar-php #sidebar-wrap { lef\t: auto; righ\t: auto; } .page-template-1r-sidebar-php .sidebar-wrap-left { margin-left: -100%; } .page-template-1r-sidebar-php .sidebar-wrap-right { margin-right: -290px; } * html .page-template-1r-sidebar-php #sidebar, * html .page-template-1r-sidebar-php #sidebar-b, * html .page-template-1r-sidebar-php #sidebar-shell-1 { w\idth: 252px; } * html .page-template-1r-sidebar-php #sidebar-shell-1 { } * html .page-template-1r-sidebar-php #sidebar-shell-2 { } * html .page-template-1r-sidebar-php #sidebar-container { w\idth: 265px; } .page-template-1r-sidebar-php .tab-box { width: 260px; } .page-template-1l1r-sidebar-php #wrapper { width: 95%; max-width: 1200px; min-width: 600px; } .page-template-1l1r-sidebar-php #container { padding-left: 165px; padding-right: 165px; } .page-template-1l1r-sidebar-php #main-col { width: 100%; } * html .page-template-1l1r-sidebar-php #main-col { w\idth: 100% } .page-template-1l1r-sidebar-php #nav-top, .page-template-1l1r-sidebar-php #top-bar-right-spanel { width: 95%; max-width: 1200px; min-width: 600px; } .page-template-1l1r-sidebar-php #nav-top .col-control, .page-template-1l1r-sidebar-php #top-bar-right-spanel .col-control { width: 100% } .page-template-1l1r-sidebar-php #widgets-above-header { width: 95%; max-width: 1200px; min-width: 600px; } .page-template-1l1r-sidebar-php #widgets-above-header .col-control { width: 100% }.page-template-1l1r-sidebar-php #nav .col-control { width: 100% } .page-template-1l1r-sidebar-php .post-footer .category, .page-template-1l1r-sidebar-php .postdata .category { max-width: 60%; } .page-template-1l1r-sidebar-php .tags { max-width: 60%; } .page-template-1l1r-sidebar-php #sidebar, .page-template-1l1r-sidebar-php #sidebar-b, .page-template-1l1r-sidebar-php #sidebar-shell-1 { width: 150px; } .page-template-1l1r-sidebar-php #sidebar.flattened, .page-template-1l1r-sidebar-php #sidebar-b.flattened { width: 148px; } .page-template-1l1r-sidebar-php #sidebar-shell-1 { margin-left: -100%; margin-right: 0px; left: auto; right: 165px; } .page-template-1l1r-sidebar-php #sidebar-2, .page-template-1l1r-sidebar-php #sidebar-2-b, .page-template-1l1r-sidebar-php #sidebar-shell-2 { width: 150px; } .page-template-1l1r-sidebar-php #sidebar-2.flattened, .page-template-1l1r-sidebar-php #sidebar-2-b.flattened { width: 148px; } .page-template-1l1r-sidebar-php #sidebar-shell-2 { margin-left: 15px; margin-right: -165px; left: auto; right: auto; } .page-template-1l1r-sidebar-php #sidebar-container { width: 165px; } .page-template-1l1r-sidebar-php .sidebar-container-left { right: 165px; } .page-template-1l1r-sidebar-php .sidebar-container-right { margin-right: -165px; } .page-template-1l1r-sidebar-php .sidebar-container-left #sidebar-wrap { right: auto; } .page-template-1l1r-sidebar-php #wsidebar-top, .page-template-1l1r-sidebar-php #wsidebar-bottom { width: 313px; } .page-template-1l1r-sidebar-php #sidebar-wrap { width: 330px; left: auto; right: auto; } * html .page-template-1l1r-sidebar-php #sidebar-wrap { lef\t: auto; righ\t: auto; } .page-template-1l1r-sidebar-php .sidebar-wrap-left { margin-left: -100%; } .page-template-1l1r-sidebar-php .sidebar-wrap-right { margin-right: -330px; } * html .page-template-1l1r-sidebar-php #sidebar, * html .page-template-1l1r-sidebar-php #sidebar-b, * html .page-template-1l1r-sidebar-php #sidebar-shell-1 { w\idth: 142px; } * html .page-template-1l1r-sidebar-php #sidebar-shell-1 { lef\t: 180px; r\ight: 165px; } * html .page-template-1l1r-sidebar-php #sidebar-2, * html .page-template-1l1r-sidebar-php #sidebar-2-b, * html .page-template-1l1r-sidebar-php #sidebar-shell-2 { w\idth: 142px; } * html .page-template-1l1r-sidebar-php #sidebar-shell-2 { } * html .page-template-1l1r-sidebar-php #sidebar-container { w\idth: 155px; } .page-template-1l1r-sidebar-php .tab-box { width: 150px; } .page-template-2l-sidebars-php #wrapper { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-2l-sidebars-php #container { padding-left: 370px; padding-right: 0px; } .page-template-2l-sidebars-php #main-col { width: 630px; } * html .page-template-2l-sidebars-php #main-col { w\idth: 600px } .page-template-2l-sidebars-php #nav-top, .page-template-2l-sidebars-php #top-bar-right-spanel { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-2l-sidebars-php #nav-top .col-control, .page-template-2l-sidebars-php #top-bar-right-spanel .col-control { width: 1000px } .page-template-2l-sidebars-php #widgets-above-header { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-2l-sidebars-php #widgets-above-header .col-control { width: 1000px }.page-template-2l-sidebars-php #nav .col-control { width: 1000px } .page-template-2l-sidebars-php .post-footer .category, .page-template-2l-sidebars-php .postdata .category { max-width: 355px; } .page-template-2l-sidebars-php .tags { max-width: 355px; } .page-template-2l-sidebars-php #sidebar, .page-template-2l-sidebars-php #sidebar-b, .page-template-2l-sidebars-php #sidebar-shell-1 { width: 170px; } .page-template-2l-sidebars-php #sidebar.flattened, .page-template-2l-sidebars-php #sidebar-b.flattened { width: 168px; } .page-template-2l-sidebars-php #sidebar-shell-1 { margin-left: 0px; margin-right: 0px; left: auto; right: auto; } .page-template-2l-sidebars-php #sidebar-2, .page-template-2l-sidebars-php #sidebar-2-b, .page-template-2l-sidebars-php #sidebar-shell-2 { width: 170px; } .page-template-2l-sidebars-php #sidebar-2.flattened, .page-template-2l-sidebars-php #sidebar-2-b.flattened { width: 168px; } .page-template-2l-sidebars-php #sidebar-shell-2 { margin-left: 15px; margin-right: -185px; left: auto; right: auto; } .page-template-2l-sidebars-php #sidebar-container { width: 370px; } .page-template-2l-sidebars-php .sidebar-container-left { right: 370px; } .page-template-2l-sidebars-php .sidebar-container-right { margin-right: -370px; } .page-template-2l-sidebars-php .sidebar-container-left #sidebar-wrap { right: auto; } .page-template-2l-sidebars-php #wsidebar-top, .page-template-2l-sidebars-php #wsidebar-bottom { width: 353px; } .page-template-2l-sidebars-php #sidebar-wrap { width: 370px; left: auto; right: 370px; } * html .page-template-2l-sidebars-php #sidebar-wrap { lef\t: auto; righ\t: 200px; } .page-template-2l-sidebars-php .sidebar-wrap-left { margin-left: -100%; } .page-template-2l-sidebars-php .sidebar-wrap-right { margin-right: -370px; } * html .page-template-2l-sidebars-php #sidebar, * html .page-template-2l-sidebars-php #sidebar-b, * html .page-template-2l-sidebars-php #sidebar-shell-1 { w\idth: 162px; } * html .page-template-2l-sidebars-php #sidebar-shell-1 { } * html .page-template-2l-sidebars-php #sidebar-2, * html .page-template-2l-sidebars-php #sidebar-2-b, * html .page-template-2l-sidebars-php #sidebar-shell-2 { w\idth: 162px; } * html .page-template-2l-sidebars-php #sidebar-shell-2 { } * html .page-template-2l-sidebars-php #sidebar-container { w\idth: 360px; } .page-template-2l-sidebars-php .tab-box { width: 353px; } .page-template-2r-sidebars-php #wrapper { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-2r-sidebars-php #container { padding-left: 0px; padding-right: 370px; } .page-template-2r-sidebars-php #main-col { width: 630px; } * html .page-template-2r-sidebars-php #main-col { w\idth: 600px } .page-template-2r-sidebars-php #nav-top, .page-template-2r-sidebars-php #top-bar-right-spanel { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-2r-sidebars-php #nav-top .col-control, .page-template-2r-sidebars-php #top-bar-right-spanel .col-control { width: 1000px } .page-template-2r-sidebars-php #widgets-above-header { width: 1000px; max-width: 1000px; min-width: 1000px; } .page-template-2r-sidebars-php #widgets-above-header .col-control { width: 1000px }.page-template-2r-sidebars-php #nav .col-control { width: 1000px } .page-template-2r-sidebars-php .post-footer .category, .page-template-2r-sidebars-php .postdata .category { max-width: 355px; } .page-template-2r-sidebars-php .tags { max-width: 355px; } .page-template-2r-sidebars-php #sidebar, .page-template-2r-sidebars-php #sidebar-b, .page-template-2r-sidebars-php #sidebar-shell-1 { width: 170px; } .page-template-2r-sidebars-php #sidebar.flattened, .page-template-2r-sidebars-php #sidebar-b.flattened { width: 168px; } .page-template-2r-sidebars-php #sidebar-shell-1 { margin-left: 0px; margin-right: 0px; left: auto; right: auto; } .page-template-2r-sidebars-php #sidebar-2, .page-template-2r-sidebars-php #sidebar-2-b, .page-template-2r-sidebars-php #sidebar-shell-2 { width: 170px; } .page-template-2r-sidebars-php #sidebar-2.flattened, .page-template-2r-sidebars-php #sidebar-2-b.flattened { width: 168px; } .page-template-2r-sidebars-php #sidebar-shell-2 { margin-left: -185px; margin-right: 15px; left: auto; right: auto; } .page-template-2r-sidebars-php #sidebar-container { width: 370px; } .page-template-2r-sidebars-php .sidebar-container-left { right: 370px; } .page-template-2r-sidebars-php .sidebar-container-right { margin-right: -370px; } .page-template-2r-sidebars-php .sidebar-container-left #sidebar-wrap { right: auto; } .page-template-2r-sidebars-php #wsidebar-top, .page-template-2r-sidebars-php #wsidebar-bottom { width: 353px; } .page-template-2r-sidebars-php #sidebar-wrap { width: 370px; left: auto; right: auto; } * html .page-template-2r-sidebars-php #sidebar-wrap { lef\t: auto; righ\t: auto; } .page-template-2r-sidebars-php .sidebar-wrap-left { margin-left: -100%; } .page-template-2r-sidebars-php .sidebar-wrap-right { margin-right: -370px; } * html .page-template-2r-sidebars-php #sidebar, * html .page-template-2r-sidebars-php #sidebar-b, * html .page-template-2r-sidebars-php #sidebar-shell-1 { w\idth: 162px; } * html .page-template-2r-sidebars-php #sidebar-shell-1 { } * html .page-template-2r-sidebars-php #sidebar-2, * html .page-template-2r-sidebars-php #sidebar-2-b, * html .page-template-2r-sidebars-php #sidebar-shell-2 { w\idth: 162px; } * html .page-template-2r-sidebars-php #sidebar-shell-2 { } * html .page-template-2r-sidebars-php #sidebar-container { w\idth: 360px; } .page-template-2r-sidebars-php .tab-box { width: 353px; } #wrapper { width: 95%; max-width: 1200px; min-width: 750px; } #container { padding-left: 185px; padding-right: 185px; } #main-col { width: 100%; } * html #main-col { w\idth: 100% } #nav-top, #top-bar-right-spanel { width: 95%; max-width: 1200px; min-width: 750px; } #nav-top .col-control, #top-bar-right-spanel .col-control { width: 100% } #widgets-above-header { width: 95%; max-width: 1200px; min-width: 750px; } #widgets-above-header .col-control { width: 100% } #nav .col-control { width: 100% } .post-footer .category, .postdata .category { max-width: 60%; } .tags { max-width: 60%; } #sidebar, #sidebar-b, #sidebar-shell-1 { width: 170px; } #sidebar.flattened, #sidebar-b.flattened { width: 168px; } #sidebar-shell-1 { margin-left: -100%; margin-right: 0px; left: auto; right: 185px; } #sidebar-2, #sidebar-2-b, #sidebar-shell-2 { width: 170px; } #sidebar-2.flattened, #sidebar-2-b.flattened { width: 168px; } #sidebar-shell-2 { margin-left: 15px; margin-right: -185px; left: auto; right: auto; } #sidebar-container { width: 185px; } .sidebar-container-left { right: 185px; } .sidebar-container-right { margin-right: -185px; } .sidebar-container-left #sidebar-wrap { right: auto; } #wsidebar-top, #wsidebar-bottom { width: 353px; } #sidebar-wrap { width: 370px; left: auto; right: auto; } * html #sidebar-wrap { lef\t: auto; righ\t: auto; } .sidebar-wrap-left { margin-left: -100%; } .sidebar-wrap-right { margin-right: -370px; } * html #sidebar, * html #sidebar-b, * html #sidebar-shell-1 { w\idth: 162px; } * html #sidebar-shell-1 { lef\t: 200px; r\ight: 185px; } * html #sidebar-2, * html #sidebar-2-b, * html #sidebar-shell-2 { w\idth: 162px; } * html #sidebar-shell-2 { } * html #sidebar-container { w\idth: 175px; } .tab-box { width: 170px; } .page-template-no-sidebars-php #container { padding-left: 0; padding-right: 0; } .page-template-no-sidebars-php .entry img { max-width: 99%; } .page-template-no-sidebars-php .wp-caption { max-width: 99%; } .page-template-no-sidebars-php .entry .wp-caption img { max-width: 100%; } .page-template-no-sidebars-php #main-col { width: 100%; } .suf-mag-headlines { padding-left: 225px; } .suf-mag-headline-photo-box { width: 225px; right: 225px; } .suf-mag-headline-block { width: 100%; } * html .suf-mag-headline-block { w\idth: 100%; } .suf-mag-headlines { height: 250px } col.suf-mag-excerpt { width: 33%; } .suf-mag-excerpt-image { width: 98%; height: 100px; } * html .suf-mag-excerpt-image { w\idth: 95%; } col.suf-mag-category { width: 33%; } .suf-mag-category-image { width: 98%; height: 100px; } * html .suf-mag-category-image { w\idth: 95%; } h2.suf-mag-category-title { text-align: left; } .suf-mag-categories th { text-align: left; } .suf-mag-excerpts th { text-align: left; } h2.suf-mag-excerpt-title { text-align: left; } h2.suf-mag-headlines-title { text-align: left; } .post .date { display: none; } .title-container { padding-left: 0; padding-right: 0; } .post .title { padding-left: 0; } .post-footer .category, .postdata .category{ float: left; } .post .post-footer .comments, .post .postdata .comments { float: right; } .tags { float: right; text-align: right; } .post span.author { float: left; padding-right: 10px; } div.page .post-footer .comments, div.page .postdata .comments { float: right; } div.page span.author { float: left; padding-right: 10px; } .format-aside h1.posttitle, .format-aside h2.posttitle, .post.format-aside .date { display: none; } .format-aside .title-container { padding-left: 0; } .format-aside .post-footer .category, .format-aside .postdata .category{ float: left; } .post.format-aside .post-footer .comments, .post.format-aside .postdata .comments { float: right; } .format-aside .tags { float: right; text-align: right; } .format-aside .permalink { float: left; text-align: left; } .post.format-aside span.author { float: left; padding-right: 10px; } .format-gallery .post-footer .category, .format-gallery .postdata .category{ float: left; } .post.format-gallery .post-footer .comments, .post.format-gallery .postdata .comments { float: right; } .format-gallery .tags { float: right; text-align: right; } .format-gallery .permalink { float: left; text-align: left; } .post.format-gallery span.author { float: left; padding-right: 10px; } .format-link .post-footer .category, .format-link .postdata .category{ float: left; } .post.format-link .post-footer .comments, .post.format-link .postdata .comments { float: right; } .format-link .tags { float: right; text-align: right; } .format-link .permalink { float: left; text-align: left; } .post.format-link span.author { float: left; padding-right: 10px; } .format-image .post-footer .category, .format-image .postdata .category{ float: left; } .post.format-image .post-footer .comments, .post.format-image .postdata .comments { float: right; } .format-image .tags { float: right; text-align: right; } .format-image .permalink { float: left; text-align: left; } .post.format-image span.author { float: left; padding-right: 10px; } .format-quote h1.posttitle, .format-quote h2.posttitle, .post.format-quote .date { display: none; } .format-quote .title-container { padding-left: 0; } .format-quote .post-footer .category, .format-quote .postdata .category{ float: left; } .post.format-quote .post-footer .comments, .post.format-quote .postdata .comments { float: right; } .format-quote .tags { float: right; text-align: right; } .format-quote .permalink { float: left; text-align: left; } .post.format-quote span.author { float: left; padding-right: 10px; } .format-status h1.posttitle, .format-status h2.posttitle, .post.format-status .date { display: none; } .format-status .title-container { padding-left: 0; } .format-status .post-footer .category, .format-status .postdata .category{ float: left; } .post.format-status .post-footer .comments, .post.format-status .postdata .comments { float: right; } .format-status .tags { float: right; text-align: right; } .format-status .permalink { float: left; text-align: left; } .post.format-status span.author { float: left; padding-right: 10px; } .format-video .post-footer .category, .format-video .postdata .category{ float: left; } .post.format-video .post-footer .comments, .post.format-video .postdata .comments { float: right; } .format-video .tags { float: right; text-align: right; } .format-video .permalink { float: left; text-align: left; } .post.format-video span.author { float: left; padding-right: 10px; } .format-audio .post-footer .category, .format-audio .postdata .category{ float: left; } .post.format-audio .post-footer .comments, .post.format-audio .postdata .comments { float: right; } .format-audio .tags { float: right; text-align: right; } .format-audio .permalink { float: left; text-align: left; } .post.format-audio span.author { float: left; padding-right: 10px; } .format-chat .post-footer .category, .format-chat .postdata .category{ float: left; } .post.format-chat .post-footer .comments, .post.format-chat .postdata .comments { float: right; } .format-chat .tags { float: right; text-align: right; } .format-chat .permalink { float: left; text-align: left; } .post.format-chat span.author { float: left; padding-right: 10px; } .blogtitle a { color: #000000; text-decoration: none; } .blogtitle a:hover { color: #528F6C; text-decoration: none; } .description { color: #000000; } .blogtitle { float: left; text-align: left; } .description { float: right; text-align: right; } #header { height: 55px; } #horizontal-outer-widgets-1 .suf-horizontal-widget { width: 100%; margin: 5px 0 5px 0; } * html #horizontal-outer-widgets-1 .suf-horizontal-widget { ma\rgin: 5px 0px 5px 0px; } #slider, #sliderContent { height: 250px; } #featured-posts .left, #featured-posts .right { height: 250px; } .sliderImage { height: 250px; } #featured-posts .left { width: 250px !important; } #featured-posts .right { width: 250px !important; } #sliderPager.top-left, #sliderPager.top-right, #sliderPager.top-center { bottom: 210px; position: absolute; } #sliderControl.over { bottom: 125px; } .sliderImage div { background-color: #222222; color: #FFFFFF; } .sliderImage div a { color: #FFFFFF; } #featured-posts { border-width: 1px; border-style: solid; } #ad-hoc-1 .suf-widget { width: 100%; display: inline-block; margin: 5px 0 5px 0; } * html #ad-hoc-1 .suf-widget { ma\rgin: 5px 0px 5px 0px; } #ad-hoc-2 .suf-widget { width: 100%; display: inline-block; margin: 5px 0 5px 0; } * html #ad-hoc-2 .suf-widget { ma\rgin: 5px 0px 5px 0px; } #ad-hoc-3 .suf-widget { width: 100%; display: inline-block; margin: 5px 0 5px 0; } * html #ad-hoc-3 .suf-widget { ma\rgin: 5px 0px 5px 0px; } #ad-hoc-4 .suf-widget { width: 100%; display: inline-block; margin: 5px 0 5px 0; } * html #ad-hoc-4 .suf-widget { ma\rgin: 5px 0px 5px 0px; } #ad-hoc-5 .suf-widget { width: 100%; display: inline-block; margin: 5px 0 5px 0; } * html #ad-hoc-5 .suf-widget { ma\rgin: 5px 0px 5px 0px; } * html table.suf-tiles { w\idth: 96% } col.suf-tile { width: 33%; } .suf-tile-image { width: 95%; height: 100px; } * html .suf-tile-image { w\idth: 95%; } h2.suf-tile-title { text-align: left; } #nav-top, #top-bar-right-spanel { margin: 0 auto; } #nav ul { text-transform: capitalize; } #nav-top ul { text-transform: capitalize; float: left; } #widgets-above-header { margin: 0 auto; } #widgets-above-header .suf-widget { width: 100%; margin: 5px 0 5px 0; } * html #widgets-above-header .suf-widget { ma\rgin: 5px 0px 5px 0px; } #nav { margin: 0 auto; width: 100%; } div.booklisting img, div.bookentry img { width: 108px; height: 160px; } div.bookentry .stats { width: 142px; } div.bookentry .review { width: -88px; } * html div.bookentry .review { w\idth: -108px; } col.nr-shelf-slot { width: 25%; } .attachment object.audio { width: 300px; height: 30px; } .attachment object.application { width: 300px; } .attachment object.text { width: 300px; } .attachment object.video { width: 300px; height: 225px; } .author-info img.avatar { float: left; padding: 5px; } .suf-mosaic-thumb { padding-left: 50px; padding-right: 50px; } .sidebar-container-left #sidebar-shell-1 { float: left; margin-left: 0; margin-right: 15px; right: auto; } .sidebar-container-left #sidebar-shell-2 { float: left; margin-left: 0; margin-right: 15px; right: auto;} .sidebar-container-right #sidebar-shell-1 { float: right; margin-right: 0; margin-left: 15px; right: auto; left: auto; } .sidebar-container-right #sidebar-shell-2 { float: right; margin-right: 0; margin-left: 15px; right: auto; left: auto;} .sidebar-wrap-right #sidebar-shell-1 { float: right; margin-left: 0; margin-right: 0;} .sidebar-wrap-right #sidebar-shell-2 { float: right; margin-right: 15px; margin-left: 0;} .sidebar-wrap-left #sidebar-shell-1 { float: left; margin-left: 0; margin-right: 0;} .sidebar-wrap-left #sidebar-shell-2 { float: left; margin-left: 15px; margin-right: 0;} .sidebar-container-left #sidebar-wrap { margin-left: 0; margin-right: 0; left: auto; right: auto; } .sidebar-container-right #sidebar-wrap { margin-left: 0; margin-right: 0; left: auto; right: auto; } #sidebar-container .tab-box { margin-left: 0; margin-right: 0; } #sidebar-container.sidebar-container-left { margin-left: -100%; } .sidebar-container-left .tab-box { float: left; } .sidebar-container-right .tab-box { float: right; } * html #sidebar-container #sidebar-shell-1, * html #sidebar-container #sidebar-shell-2 { lef\t: auto; r\ight: auto; } * html .sidebar-container-left #sidebar-wrap, * html .sidebar-container-right #sidebar-wrap { lef\t: auto; r\ight: auto; } ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=l10n.js Content-Type: application/x-javascript; charset=UTF-8; name=l10n.js Content-Location: http://www.ogalik.ee/wp-includes/js/l10n.js?ver=20101110 Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gY29udmVydEVudGl0aWVzKGIpe3ZhciBkLGE7ZD1mdW5jdGlvbihj KXtpZigvJlteO10rOy8udGVzdChjKSl7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiZGl2Iik7Zi5pbm5lckhUTUw9YztyZXR1cm4gIWYuZmlyc3RDaGlsZD9j OmYuZmlyc3RDaGlsZC5ub2RlVmFsdWV9cmV0dXJuIGN9O2lmKHR5cGVvZiBiPT09 InN0cmluZyIpe3JldHVybiBkKGIpfWVsc2V7aWYodHlwZW9mIGI9PT0ib2JqZWN0 Iil7Zm9yKGEgaW4gYil7aWYodHlwZW9mIGJbYV09PT0ic3RyaW5nIil7YlthXT1k KGJbYV0pfX19fXJldHVybiBifTs= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=shutter-reloaded.js Content-Type: application/x-javascript; charset=UTF-8; name=shutter-reloaded.js Content-Location: http://www.ogalik.ee/wp-content/plugins/nextgen-gallery/shutter/shutter-reloaded.js?ver=1.3.2 Content-Transfer-Encoding: Base64 LyoNClNodXR0ZXIgUmVsb2FkZWQgZm9yIE5leHRHRU4gR2FsbGVyeQ0KaHR0cDov L3d3dy5sYXB0b3B0aXBzLmNhL2phdmFzY3JpcHRzL3NodXR0ZXItcmVsb2FkZWQv DQpWZXJzaW9uOiAxLjMuMg0KQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggIEFuZHJl dyBPenogKE1vZGlmaWNhdGlvbiBieSBBbGV4IFJhYmUpDQpSZWxlYXNlZCB1bmRl ciB0aGUgR1BMLCBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvZ3BsLmh0bWwN Cg0KQWNrbm93bGVkZ2VtZW50OiBzb21lIGlkZWFzIGFyZSBmcm9tOiBTaHV0dGVy IGJ5IEFuZHJldyBTdXRoZXJsYW5kIC0gaHR0cDovL2NvZGUuamFsZW5hY2suY29t LCBXb3JkUHJlc3MgLSBodHRwOi8vd29yZHByZXNzLm9yZywgTGlnaHRib3ggYnkg TG9rZXNoIERoYWthciAtIGh0dHA6Ly93d3cuaHVkZGxldG9nZXRoZXIuY29tLCB0 aGUgaWNvbnMgYXJlIGZyb20gQ3J5c3RhbCBQcm9qZWN0IEljb25zLCBFdmVyYWxk byBDb2VsaG8sIGh0dHA6Ly93d3cuZXZlcmFsZG8uY29tDQoNCiovDQoNCnNodXR0 ZXJPbmxvYWQgPSBmdW5jdGlvbigpe3NodXR0ZXJSZWxvYWRlZC5pbml0KCdzaCcp O30NCg0KaWYgKHR5cGVvZiBzaHV0dGVyT25sb2FkID09ICdmdW5jdGlvbicpIHsN CglpZiAoJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIGpRdWVyeSkgalF1ZXJ5KGRvY3Vt ZW50KS5yZWFkeShmdW5jdGlvbigpe3NodXR0ZXJPbmxvYWQoKTt9KTsNCgllbHNl IGlmKCB0eXBlb2Ygd2luZG93Lm9ubG9hZCAhPSAnZnVuY3Rpb24nICkgd2luZG93 Lm9ubG9hZCA9IHNodXR0ZXJPbmxvYWQ7DQoJZWxzZSB7b2xkb25sZCA9IHdpbmRv dy5vbmxvYWQ7d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7aWYob2xkb25sZCl7 b2xkb25sZCgpO307c2h1dHRlck9ubG9hZCgpO319Ow0KfQ0KDQpzaHV0dGVyUmVs b2FkZWQgPSB7DQoNCglJIDogZnVuY3Rpb24gKGEpIHsNCgkJcmV0dXJuIGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGEpOw0KCX0sDQoNCglzZXR0aW5ncyA6IGZ1bmN0 aW9uKCkgew0KCQl2YXIgdCA9IHRoaXMsIHMgPSBzaHV0dGVyU2V0dGluZ3M7DQoN CgkJdC5pbWFnZUNvdW50ID0gcy5pbWFnZUNvdW50IHx8IDA7DQoJCXQubXNnTG9h ZGluZyA9IHMubXNnTG9hZGluZyB8fCAnTCBPIEEgRCBJIE4gRyc7DQoJCXQubXNn Q2xvc2UgPSBzLm1zZ0Nsb3NlIHx8ICdDbGljayB0byBDbG9zZSc7DQoJfSwNCg0K CWluaXQgOiBmdW5jdGlvbiAoYSkgew0KCQl2YXIgdCA9IHRoaXMsIEwsIFQsIGV4 dCwgaSwgbSwgc2V0aWQsIGluc2V0LCBzaGZpbGUsIHNoTWVudVByZSwgaywgaW1n Ow0KCQlzaHV0dGVyTGlua3MgPSB7fSwgc2h1dHRlclNldHMgPSB7fTsNCgkJaWYg KCAnb2JqZWN0JyAhPSB0eXBlb2Ygc2h1dHRlclNldHRpbmdzICkgc2h1dHRlclNl dHRpbmdzID0ge307DQoNCgkJZm9yICggaSA9IDA7IGkgPCBkb2N1bWVudC5saW5r cy5sZW5ndGg7IGkrKyApIHsNCgkJCUwgPSBkb2N1bWVudC5saW5rc1tpXTsNCgkJ CWV4dCA9ICggTC5ocmVmLmluZGV4T2YoJz8nKSA9PSAtMSApID8gTC5ocmVmLnNs aWNlKC00KS50b0xvd2VyQ2FzZSgpIDogTC5ocmVmLnN1YnN0cmluZyggMCwgTC5o cmVmLmluZGV4T2YoJz8nKSApLnNsaWNlKC00KS50b0xvd2VyQ2FzZSgpOw0KCQkJ aWYgKCBleHQgIT0gJy5qcGcnICYmIGV4dCAhPSAnLnBuZycgJiYgZXh0ICE9ICcu Z2lmJyAmJiBleHQgIT0gJ2pwZWcnICkgY29udGludWU7DQoJCQlpZiAoIGEgPT0g J3NoJyAmJiBMLmNsYXNzTmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NodXR0 ZXInKSA9PSAtMSApIGNvbnRpbnVlOw0KCQkJaWYgKCBhID09ICdsYicgJiYgTC5y ZWwudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdsaWdodGJveCcpID09IC0xICkgY29u dGludWU7DQoNCgkJCWlmICggTC5jbGFzc05hbWUudG9Mb3dlckNhc2UoKS5pbmRl eE9mKCdzaHV0dGVyc2V0JykgIT0gLTEgKQ0KCQkJc2V0aWQgPSBMLmNsYXNzTmFt ZS5yZXBsYWNlKC9ccy9nLCAnXycpOwkJCQ0KCQkJZWxzZSBpZiAoIEwucmVsLnRv TG93ZXJDYXNlKCkuaW5kZXhPZignbGlnaHRib3hbJykgIT0gLTEgKQ0KCQkJc2V0 aWQgPSBMLnJlbC5yZXBsYWNlKC9ccy9nLCAnXycpOw0KCQkJZWxzZSBzZXRpZCA9 IDAsIGluc2V0ID0gLTE7DQoJCQkNCgkJCWlmKCBzZXRpZCApIHsNCgkJCQlpZiAo ICEgc2h1dHRlclNldHNbc2V0aWRdICkgc2h1dHRlclNldHNbc2V0aWRdID0gW107 DQoJCQkJCWluc2V0ID0gc2h1dHRlclNldHNbc2V0aWRdLnB1c2goaSk7DQoJCQl9 DQoJCQkNCgkJCXNoZmlsZSA9IEwuaHJlZi5zbGljZShMLmhyZWYubGFzdEluZGV4 T2YoJy8nKSsxKTsNCgkJCVQgPSAoIEwudGl0bGUgJiYgTC50aXRsZSAhPSBzaGZp bGUgKSA/IEwudGl0bGUgOiAnJzsNCgkJCQ0KCQkJc2h1dHRlckxpbmtzW2ldID0g e2xpbms6TC5ocmVmLG51bTppbnNldCxzZXQ6c2V0aWQsdGl0bGU6VH0NCgkJCUwu b25jbGljayA9IG5ldyBGdW5jdGlvbignc2h1dHRlclJlbG9hZGVkLm1ha2UoIicg KyBpICsgJyIpO3JldHVybiBmYWxzZTsnKTsNCgkJfQ0KDQoJCXQuc2V0dGluZ3Mo KTsNCg0KCX0sDQoNCgltYWtlIDogZnVuY3Rpb24obG4sZnMpIHsNCgkJdmFyIHQg PSB0aGlzLCBwcmV2LCBuZXh0LCBwcmV2bGluayA9ICcnLCBuZXh0bGluayA9ICcn LCBwcmV2aW1nLCBuZXh0aW1nLCBELCBTLCBXLCBmc2FyZyA9IC0xLCBpbWdOdW0s IE5hdkJhcjsNCg0KCQlpZiAoICEgdC5Ub3AgKSB7DQoJCQlpZiAoIHR5cGVvZiB3 aW5kb3cucGFnZVlPZmZzZXQgIT0gJ3VuZGVmaW5lZCcgKSB0LlRvcCA9IHdpbmRv dy5wYWdlWU9mZnNldDsNCgkJCWVsc2UgdC5Ub3AgPSAoZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LnNjcm9sbFRvcCA+IDApID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LnNjcm9sbFRvcCA6IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOw0KCQl9DQoN CgkJaWYgKCB0eXBlb2YgdC5wZ0hlaWdodCA9PSAndW5kZWZpbmVkJyApDQoJCQl0 LnBnSGVpZ2h0ID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNj cm9sbEhlaWdodCxkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCk7DQoNCgkJaWYg KCBmcyApIHQuRlMgPSAoIGZzID4gMCApID8gMSA6IDA7DQoJCWVsc2UgdC5GUyA9 IHNodXR0ZXJTZXR0aW5ncy5GUyB8fCAwOw0KDQoJCWlmICggdC5yZXNpemluZyAp IHQucmVzaXppbmcgPSBudWxsOw0KCQl3aW5kb3cub25yZXNpemUgPSBuZXcgRnVu Y3Rpb24oJ3NodXR0ZXJSZWxvYWRlZC5yZXNpemUoIicrbG4rJyIpOycpOw0KDQoJ CWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1ggPSAnaGlk ZGVuJzsNCgkJaWYgKCAhIHQuVlAgKSB7DQoJCQl0Ll92aWV3UG9ydCgpOw0KCQkJ dC5WUCA9IHRydWU7DQoJCX0NCg0KCQlpZiAoICEgKFMgPSB0LkkoJ3NoU2h1dHRl cicpKSApIHsNCgkJCVMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsN CgkJCVMuc2V0QXR0cmlidXRlKCdpZCcsJ3NoU2h1dHRlcicpOw0KCQkJZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5hcHBlbmRDaGlsZChT KTsNCgkJCXQuaGlkZVRhZ3MoKTsNCgkJfQ0KDQoJCWlmICggISAoRCA9IHQuSSgn c2hEaXNwbGF5JykpICkgew0KCQkJRCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo J2RpdicpOw0KCQkJRC5zZXRBdHRyaWJ1dGUoJ2lkJywnc2hEaXNwbGF5Jyk7DQoJ CQlELnN0eWxlLnRvcCA9IHQuVG9wICsgJ3B4JzsNCgkJCWRvY3VtZW50LmdldEVs ZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uYXBwZW5kQ2hpbGQoRCk7DQoJCX0N Cg0KCQlTLnN0eWxlLmhlaWdodCA9IHQucGdIZWlnaHQgKyAncHgnOw0KDQoJCXZh ciBkdiA9IHQudGV4dEJ0bnMgPyAnIHwgJyA6ICcnOw0KCQlpZiAoIHNodXR0ZXJM aW5rc1tsbl0ubnVtID4gMSApIHsNCgkJCXByZXYgPSBzaHV0dGVyU2V0c1tzaHV0 dGVyTGlua3NbbG5dLnNldF1bc2h1dHRlckxpbmtzW2xuXS5udW0gLSAyXTsNCgkJ CXByZXZsaW5rID0gJzxhIGhyZWY9IiMiIGlkPSJwcmV2cGljIiBvbmNsaWNrPSJz aHV0dGVyUmVsb2FkZWQubWFrZSgnK3ByZXYrJyk7cmV0dXJuIGZhbHNlIj4mbHQ7 Jmx0OzwvYT4nK2R2Ow0KCQkJcHJldmltZyA9IG5ldyBJbWFnZSgpOw0KCQkJcHJl dmltZy5zcmMgPSBzaHV0dGVyTGlua3NbcHJldl0ubGluazsNCgkJfSBlbHNlIHsN CgkJCXByZXZsaW5rID0gJyc7DQoJCX0NCg0KCQlpZiAoIHNodXR0ZXJMaW5rc1ts bl0ubnVtICE9IC0xICYmIHNodXR0ZXJMaW5rc1tsbl0ubnVtIDwgKHNodXR0ZXJT ZXRzW3NodXR0ZXJMaW5rc1tsbl0uc2V0XS5sZW5ndGgpICkgew0KCQkJbmV4dCA9 IHNodXR0ZXJTZXRzW3NodXR0ZXJMaW5rc1tsbl0uc2V0XVtzaHV0dGVyTGlua3Nb bG5dLm51bV07DQoJCQluZXh0bGluayA9ICc8YSBocmVmPSIjIiBpZD0ibmV4dHBp YyIgb25jbGljaz0ic2h1dHRlclJlbG9hZGVkLm1ha2UoJytuZXh0KycpO3JldHVy biBmYWxzZSI+Jmd0OyZndDs8L2E+JytkdjsNCgkJCW5leHRpbWcgPSBuZXcgSW1h Z2UoKTsNCgkJCW5leHRpbWcuc3JjID0gc2h1dHRlckxpbmtzW25leHRdLmxpbms7 DQoJCX0gZWxzZSB7DQoJCQluZXh0bGluayA9ICcnOw0KCQl9DQoNCgkJaW1nTnVt ID0gKCAoc2h1dHRlckxpbmtzW2xuXS5udW0gPiAwKSAmJiB0LmltYWdlQ291bnQg KSA/ICc8ZGl2IGlkPSJzaENvdW50Ij4mbmJzcDsoJm5ic3A7JyArIHNodXR0ZXJM aW5rc1tsbl0ubnVtICsgJyZuYnNwOy8mbmJzcDsnICsgc2h1dHRlclNldHNbc2h1 dHRlckxpbmtzW2xuXS5zZXRdLmxlbmd0aCArICcmbmJzcDspJm5ic3A7PC9kaXY+ JyA6ICcnOw0KDQoJCU5hdkJhciA9ICc8ZGl2IGlkPSJzaFRpdGxlIj48ZGl2IGlk PSJzaFByZXYiPicgKyBwcmV2bGluayArICc8L2Rpdj48ZGl2IGlkPSJzaE5leHQi PicgKyBuZXh0bGluayArICc8L2Rpdj48ZGl2IGlkPSJzaE5hbWUiPicgKyBzaHV0 dGVyTGlua3NbbG5dLnRpdGxlICsgJzwvZGl2PicgKyBpbWdOdW0gKyAnPC9kaXY+ JzsNCg0KCQlELmlubmVySFRNTCA9ICc8ZGl2IGlkPSJzaFdyYXAiPjxpbWcgc3Jj PSInK3NodXR0ZXJMaW5rc1tsbl0ubGluaysnIiBpZD0ic2hUb3BJbWciIHRpdGxl PSInICsgdC5tc2dDbG9zZSArICciIG9ubG9hZD0ic2h1dHRlclJlbG9hZGVkLnNo b3dJbWcoKTsiIG9uY2xpY2s9InNodXR0ZXJSZWxvYWRlZC5oaWRlU2h1dHRlcigp OyIgLz4nICsgTmF2QmFyICsnPC9kaXY+JzsNCgkJDQoJCWRvY3VtZW50Lm9ua2V5 ZG93biA9IGZ1bmN0aW9uKGV2ZW50KXtzaHV0dGVyUmVsb2FkZWQuaGFuZGxlQXJy b3dLZXlzKGV2ZW50KTt9Ow0KCQkvL0dvb2dsZSBDaHJvbWUgNC4wLjI0OS43OCBi dWcgZm9yIG9ubG9hZCBhdHRyaWJ1dGUNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ3NoVG9wSW1nJykuc3JjID0gc2h1dHRlckxpbmtzW2xuXS5saW5rOw0KCQkN CgkJd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzaHV0dGVyUmVsb2FkZWQu bG9hZGluZygpO30sMjAwMCk7DQoJfSwNCg0KCWxvYWRpbmcgOiBmdW5jdGlvbigp IHsNCgkJdmFyIHQgPSB0aGlzLCBTLCBXQiwgVzsNCgkJaWYgKCAoVyA9IHQuSSgn c2hXcmFwJykpICYmIFcuc3R5bGUudmlzaWJpbGl0eSA9PSAndmlzaWJsZScgKSBy ZXR1cm47DQoJCWlmICggISAoUyA9IHQuSSgnc2hTaHV0dGVyJykpICkgcmV0dXJu Ow0KCQlpZiAoIHQuSSgnc2hXYWl0QmFyJykgKSByZXR1cm47DQoJCVdCID0gZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQoJCVdCLnNldEF0dHJpYnV0ZSgn aWQnLCdzaFdhaXRCYXInKTsNCgkJV0Iuc3R5bGUudG9wID0gdC5Ub3AgKyAncHgn Ow0KCQlXQi5pbm5lckhUTUwgPSB0Lm1zZ0xvYWRpbmc7DQoJCVMuYXBwZW5kQ2hp bGQoV0IpOw0KCX0sDQoNCgloaWRlU2h1dHRlciA6IGZ1bmN0aW9uKCkgew0KCQl2 YXIgdCA9IHRoaXMsIEQsIFM7DQoJCWlmICggRCA9IHQuSSgnc2hEaXNwbGF5Jykg KSBELnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoRCk7DQoJCWlmICggUyA9IHQuSSgn c2hTaHV0dGVyJykgKSBTLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoUyk7DQoJCXQu aGlkZVRhZ3ModHJ1ZSk7DQoJCXdpbmRvdy5zY3JvbGxUbygwLHQuVG9wKTsNCgkJ d2luZG93Lm9ucmVzaXplID0gdC5GUyA9IHQuVG9wID0gdC5WUCA9IG51bGw7DQoJ CWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1ggPSAnJzsN CgkJZG9jdW1lbnQub25rZXlkb3duID0gbnVsbDsNCgl9LA0KDQoJcmVzaXplIDog ZnVuY3Rpb24obG4pIHsNCgkJdmFyIHQgPSB0aGlzOw0KDQoJCWlmICggdC5yZXNp emluZyApIHJldHVybjsNCgkJaWYgKCAhIHQuSSgnc2hTaHV0dGVyJykgKSByZXR1 cm47DQoJCXZhciBXID0gdC5JKCdzaFdyYXAnKTsNCgkJaWYgKCBXICkgVy5zdHls ZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7DQoNCgkJd2luZG93LnNldFRpbWVvdXQo ZnVuY3Rpb24oKXtzaHV0dGVyUmVsb2FkZWQucmVzaXppbmcgPSBudWxsfSw1MDAp Ow0KCQl3aW5kb3cuc2V0VGltZW91dChuZXcgRnVuY3Rpb24oJ3NodXR0ZXJSZWxv YWRlZC5WUCA9IG51bGw7c2h1dHRlclJlbG9hZGVkLm1ha2UoIicrbG4rJyIpOycp LDEwMCk7DQoJCXQucmVzaXppbmcgPSB0cnVlOw0KCX0sDQoNCglfdmlld1BvcnQg OiBmdW5jdGlvbigpIHsNCgkJdmFyIHQgPSB0aGlzOw0KCQl2YXIgd2lIID0gd2lu ZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0IDogMDsNCgkJdmFy IGRiSCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0ID8gZG9jdW1lbnQuYm9k eS5jbGllbnRIZWlnaHQgOiAwOw0KCQl2YXIgZGVIID0gZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdo dCA6IDA7DQoNCgkJaWYoIHdpSCA+IDAgKSB7DQoJCQl0LndIZWlnaHQgPSAoICh3 aUggLSBkYkgpID4gMSAmJiAod2lIIC0gZGJIKSA8IDMwICkgPyBkYkggOiB3aUg7 DQoJCQl0LndIZWlnaHQgPSAoICh0LndIZWlnaHQgLSBkZUgpID4gMSAmJiAodC53 SGVpZ2h0IC0gZGVIKSA8IDMwICkgPyBkZUggOiB0LndIZWlnaHQ7DQoJCX0gZWxz ZSB0LndIZWlnaHQgPSAoIGRlSCA+IDAgKSA/IGRlSCA6IGRiSDsNCg0KCQl2YXIg ZGVXID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LmNsaWVudFdpZHRoIDogMDsNCgkJdmFyIGRiVyA9IHdpbmRvdy5p bm5lcldpZHRoID8gd2luZG93LmlubmVyV2lkdGggOiBkb2N1bWVudC5ib2R5LmNs aWVudFdpZHRoOw0KCQl0LndXaWR0aCA9ICggZGVXID4gMSApID8gZGVXIDogZGJX Ow0KCX0sDQoNCglzaG93SW1nIDogZnVuY3Rpb24oKSB7DQoJCXZhciB0ID0gdGhp cywgUyA9IHQuSSgnc2hTaHV0dGVyJyksIEQgPSB0LkkoJ3NoRGlzcGxheScpLCBU SSA9IHQuSSgnc2hUb3BJbWcnKSwgVCA9IHQuSSgnc2hUaXRsZScpLCBOQiA9IHQu SSgnc2hOYXZCYXInKSwgVywgV0IsIHdIZWlnaHQsIHdXaWR0aCwgc2hIZWlnaHQs IG1heEhlaWdodCwgaXRvcCwgbXRvcCwgcmVzaXplZCA9IDA7DQoNCgkJaWYgKCAh IFMgKSByZXR1cm47DQoJCWlmICggKFcgPSB0LkkoJ3NoV3JhcCcpKSAmJiBXLnN0 eWxlLnZpc2liaWxpdHkgPT0gJ3Zpc2libGUnICkgcmV0dXJuOw0KCQlpZiAoIFdC ID0gdC5JKCdzaFdhaXRCYXInKSApIFdCLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo V0IpOw0KDQoJCVMuc3R5bGUud2lkdGggPSBELnN0eWxlLndpZHRoID0gJyc7DQoJ CVQuc3R5bGUud2lkdGggPSAoVEkud2lkdGggLSA0KSArICdweCc7DQoNCgkJc2hI ZWlnaHQgPSB0LndIZWlnaHQgLSA1MDsNCg0KCQlpZiAoIHQuRlMgKSB7DQoJCQlp ZiAoIFRJLndpZHRoID4gKHQud1dpZHRoIC0gMTApICkNCgkJCVMuc3R5bGUud2lk dGggPSBELnN0eWxlLndpZHRoID0gVEkud2lkdGggKyAxMCArICdweCc7DQoJCQlk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3dYID0gJyc7DQoJ CX0gZWxzZSB7DQoJCQl3aW5kb3cuc2Nyb2xsVG8oMCx0LlRvcCk7DQoJCQlpZiAo IFRJLmhlaWdodCA+IHNoSGVpZ2h0ICkgew0KCQkJCVRJLndpZHRoID0gVEkud2lk dGggKiAoc2hIZWlnaHQgLyBUSS5oZWlnaHQpOw0KCQkJCVRJLmhlaWdodCA9IHNo SGVpZ2h0Ow0KCQkJCXJlc2l6ZWQgPSAxOw0KCQkJfQ0KCQkJaWYgKCBUSS53aWR0 aCA+ICh0LndXaWR0aCAtIDE2KSApIHsNCgkJCQlUSS5oZWlnaHQgPSBUSS5oZWln aHQgKiAoKHQud1dpZHRoIC0gMTYpIC8gVEkud2lkdGgpOw0KCQkJCVRJLndpZHRo ID0gdC53V2lkdGggLSAxNjsNCgkJCQlyZXNpemVkID0gMTsNCgkJCX0NCgkJCVQu c3R5bGUud2lkdGggPSAoVEkud2lkdGggLSA0KSArICdweCc7DQoJCX0NCg0KCQlt YXhIZWlnaHQgPSB0LlRvcCArIFRJLmhlaWdodCArIDEwOw0KCQlpZiAoIG1heEhl aWdodCA+IHQucGdIZWlnaHQgKSBTLnN0eWxlLmhlaWdodCA9IG1heEhlaWdodCAr ICdweCc7DQoJCXdpbmRvdy5zY3JvbGxUbygwLHQuVG9wKTsNCg0KCQlpdG9wID0g KHNoSGVpZ2h0IC0gVEkuaGVpZ2h0KSAqIDAuNDU7DQoJCW10b3AgPSAoaXRvcCA+ IDMpID8gTWF0aC5mbG9vcihpdG9wKSA6IDM7DQoJCUQuc3R5bGUudG9wID0gdC5U b3AgKyBtdG9wICsgJ3B4JzsNCgkJVy5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2li bGUnOw0KCX0sDQoNCgloaWRlVGFncyA6IGZ1bmN0aW9uKGFyZykgew0KCQl2YXIg c2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpOw0K CQl2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29iamVj dCcpOw0KCQl2YXIgZW1iID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo J2VtYmVkJyk7DQoJCXZhciBpZnIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn TmFtZSgnaWZyYW1lJyk7DQoNCgkJdmFyIHZpcyA9ICggYXJnICkgPyAndmlzaWJs ZScgOiAnaGlkZGVuJzsNCg0KCQlmb3IgKGkgPSAwOyBpIDwgc2VsLmxlbmd0aDsg aSsrKSBzZWxbaV0uc3R5bGUudmlzaWJpbGl0eSA9IHZpczsNCgkJZm9yIChpID0g MDsgaSA8IG9iai5sZW5ndGg7IGkrKykgb2JqW2ldLnN0eWxlLnZpc2liaWxpdHkg PSB2aXM7DQoJCWZvciAoaSA9IDA7IGkgPCBlbWIubGVuZ3RoOyBpKyspIGVtYltp XS5zdHlsZS52aXNpYmlsaXR5ID0gdmlzOw0KCQlmb3IgKGkgPSAwOyBpIDwgaWZy Lmxlbmd0aDsgaSsrKSBpZnJbaV0uc3R5bGUudmlzaWJpbGl0eSA9IHZpczsNCgl9 LA0KCQ0KCWhhbmRsZUFycm93S2V5cyA6IGZ1bmN0aW9uKGUpIHsNCgkgICAgdmFy IGNvZGUgPSAwOw0KCSAgICBpZiAoIWUpIHZhciBlID0gd2luZG93LmV2ZW50DQoJ ICAgIAlpZiAoZS5rZXlDb2RlKSBjb2RlID0gZS5rZXlDb2RlOw0KCSAgICAJZWxz ZSBpZiAoZS53aGljaCkgY29kZSA9IGUud2hpY2g7DQoJICAgIAkNCgkJdmFyIG5l eHRsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXZwaWMnKTsNCgkJ dmFyIHByZXZsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25leHRwaWMn KTsNCgkJdmFyIGNsb3NlbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz aFRvcEltZycpOw0KCQ0KCQlzd2l0Y2ggKGNvZGUpIHsNCgkJICAgIGNhc2UgMzk6 DQoJCQlpZiAocHJldmxpbmspIHByZXZsaW5rLm9uY2xpY2soKTsNCgkJCWJyZWFr OyAgICANCgkJICAgIGNhc2UgMzc6DQoJCQlpZiAobmV4dGxpbmspIG5leHRsaW5r Lm9uY2xpY2soKTsNCgkJCWJyZWFrOyAgICANCgkJICAgIGNhc2UgMjc6DQoJCQlp ZiAoY2xvc2VsaW5rKSBjbG9zZWxpbmsub25jbGljaygpOw0KCQkJYnJlYWs7ICAg IA0KCQkgfQ0KCX0NCn0NCg== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=jquery.js Content-Type: application/x-javascript; charset=UTF-8; name=jquery.js Content-Location: http://www.ogalik.ee/wp-includes/js/jquery/jquery.js?ver=1.6.1 Content-Transfer-Encoding: Base64 LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNi4xCiAqIGh0dHA6 Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMSwgSm9obiBSZXNpZwog KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs aWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNs dWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJp Z2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIg dGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBUaHUg TWF5IDEyIDE1OjA0OjM2IDIwMTEgLTA0MDAKICovCihmdW5jdGlvbihhLGIpe2Z1 bmN0aW9uIGN5KGEpe3JldHVybiBmLmlzV2luZG93KGEpP2E6YS5ub2RlVHlwZT09 PTk/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9ZnVuY3Rpb24gY3Yo YSl7aWYoIWNqW2FdKXt2YXIgYj1mKCI8IithKyI+IikuYXBwZW5kVG8oImJvZHki KSxkPWIuY3NzKCJkaXNwbGF5Iik7Yi5yZW1vdmUoKTtpZihkPT09Im5vbmUifHxk PT09IiIpe2NrfHwoY2s9Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjay5mcmFt ZUJvcmRlcj1jay53aWR0aD1jay5oZWlnaHQ9MCksYy5ib2R5LmFwcGVuZENoaWxk KGNrKTtpZighY2x8fCFjay5jcmVhdGVFbGVtZW50KWNsPShjay5jb250ZW50V2lu ZG93fHxjay5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNsLndyaXRlKCI8IWRv Y3R5cGU+PGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTtiPWNsLmNyZWF0ZUVs ZW1lbnQoYSksY2wuYm9keS5hcHBlbmRDaGlsZChiKSxkPWYuY3NzKGIsImRpc3Bs YXkiKSxjLmJvZHkucmVtb3ZlQ2hpbGQoY2spfWNqW2FdPWR9cmV0dXJuIGNqW2Fd fWZ1bmN0aW9uIGN1KGEsYil7dmFyIGM9e307Zi5lYWNoKGNwLmNvbmNhdC5hcHBs eShbXSxjcC5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVy biBjfWZ1bmN0aW9uIGN0KCl7Y3E9Yn1mdW5jdGlvbiBjcygpe3NldFRpbWVvdXQo Y3QsMCk7cmV0dXJuIGNxPWYubm93KCl9ZnVuY3Rpb24gY2koKXt0cnl7cmV0dXJu IG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2go Yil7fX1mdW5jdGlvbiBjaCgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVl c3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBjYihhLGMpe2EuZGF0YUZpbHRlciYmKGM9 YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9 e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7Zzxp O2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0i c3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9 ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7 bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4g ZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtq WzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8p O2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIr bS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykp KX19cmV0dXJuIGN9ZnVuY3Rpb24gY2EoYSxjLGQpe3ZhciBlPWEuY29udGVudHMs Zj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBp biBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNo aWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIo ImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50 ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vs c2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBd XSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51 bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBiXyhhLGIsYyxkKXtpZihm LmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiRi50ZXN0KGEp P2QoYSxlKTpiXyhhKyJbIisodHlwZW9mIGU9PSJvYmplY3QifHxmLmlzQXJyYXko ZSk/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoIWMmJmIhPW51bGwmJnR5cGVv ZiBiPT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiliXyhhKyJbIitlKyJdIixiW2Vd LGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYiQoYSxjLGQsZSxmLGcpe2Y9Znx8 Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9 aD9oLmxlbmd0aDowLGs9YT09PWJVLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9 aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihj LmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9YiQoYSxjLGQsZSxsLGcpKSk7KGt8fCFs KSYmIWdbIioiXSYmKGw9YiQoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0 aW9uIGJaKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5n IiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93 ZXJDYXNlKCkuc3BsaXQoYlEpLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxn O2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwi KiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1m dW5jdGlvbiBiRChhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/Yng6YnksZT1iPT09 IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0O2lmKGM9PT0iYm9y ZGVyIilyZXR1cm4gZTtmLmVhY2goZCxmdW5jdGlvbigpe2N8fChlLT1wYXJzZUZs b2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2Ur PXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luIit0aGlzKSl8fDA6ZS09cGFyc2VG bG9hdChmLmNzcyhhLCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwfSk7cmV0dXJu IGV9ZnVuY3Rpb24gYm4oYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3lu YzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxi LnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmYsIi8qJDAq LyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1m dW5jdGlvbiBibShhKXtmLm5vZGVOYW1lKGEsImlucHV0Iik/YmwoYSk6YS5nZXRF bGVtZW50c0J5VGFnTmFtZSYmZi5ncmVwKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUo ImlucHV0IiksYmwpfWZ1bmN0aW9uIGJsKGEpe2lmKGEudHlwZT09PSJjaGVja2Jv eCJ8fGEudHlwZT09PSJyYWRpbyIpYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWR9 ZnVuY3Rpb24gYmsoYSl7cmV0dXJuImdldEVsZW1lbnRzQnlUYWdOYW1lImluIGE/ YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOiJxdWVyeVNlbGVjdG9yQWxsImlu IGE/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gYmooYSxiKXt2 YXIgYztpZihiLm5vZGVUeXBlPT09MSl7Yi5jbGVhckF0dHJpYnV0ZXMmJmIuY2xl YXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1 dGVzKGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGM9PT0ib2JqZWN0 IiliLm91dGVySFRNTD1hLm91dGVySFRNTDtlbHNlIGlmKGMhPT0iaW5wdXQifHxh LnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iKXtpZihjPT09Im9w dGlvbiIpYi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDtlbHNlIGlmKGM9PT0i aW5wdXQifHxjPT09InRleHRhcmVhIiliLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRW YWx1ZX1lbHNlIGEuY2hlY2tlZCYmKGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2Vk PWEuY2hlY2tlZCksYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUp O2IucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyl9fWZ1bmN0aW9uIGJpKGEsYil7 aWYoYi5ub2RlVHlwZT09PTEmJiEhZi5oYXNEYXRhKGEpKXt2YXIgYz1mLmV4cGFu ZG8sZD1mLmRhdGEoYSksZT1mLmRhdGEoYixkKTtpZihkPWRbY10pe3ZhciBnPWQu ZXZlbnRzO2U9ZVtjXT1mLmV4dGVuZCh7fSxkKTtpZihnKXtkZWxldGUgZS5oYW5k bGUsZS5ldmVudHM9e307Zm9yKHZhciBoIGluIGcpZm9yKHZhciBpPTAsaj1nW2hd Lmxlbmd0aDtpPGo7aSsrKWYuZXZlbnQuYWRkKGIsaCsoZ1toXVtpXS5uYW1lc3Bh Y2U/Ii4iOiIiKStnW2hdW2ldLm5hbWVzcGFjZSxnW2hdW2ldLGdbaF1baV0uZGF0 YSl9fX19ZnVuY3Rpb24gYmgoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJs ZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5k Q2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9 ZnVuY3Rpb24gWChhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1 cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7 cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVu Y3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJp bmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlw ZT09PTF9KTtpZihTLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1m LmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVy biBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBXKGEpe3JldHVybiFh fHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5j dGlvbiBPKGEsYil7cmV0dXJuKGEmJmEhPT0iKiI/YSsiLiI6IiIpK2IucmVwbGFj ZShBLCJgIikucmVwbGFjZShCLCImIil9ZnVuY3Rpb24gTihhKXt2YXIgYixjLGQs ZSxnLGgsaSxqLGssbCxtLG4sbyxwPVtdLHE9W10scj1mLl9kYXRhKHRoaXMsImV2 ZW50cyIpO2lmKCEoYS5saXZlRmlyZWQ9PT10aGlzfHwhcnx8IXIubGl2ZXx8YS50 YXJnZXQuZGlzYWJsZWR8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2siKSl7YS5u YW1lc3BhY2UmJihuPW5ldyBSZWdFeHAoIihefFxcLikiK2EubmFtZXNwYWNlLnNw bGl0KCIuIikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGEubGl2 ZUZpcmVkPXRoaXM7dmFyIHM9ci5saXZlLnNsaWNlKDApO2ZvcihpPTA7aTxzLmxl bmd0aDtpKyspZz1zW2ldLGcub3JpZ1R5cGUucmVwbGFjZSh5LCIiKT09PWEudHlw ZT9xLnB1c2goZy5zZWxlY3Rvcik6cy5zcGxpY2UoaS0tLDEpO2U9ZihhLnRhcmdl dCkuY2xvc2VzdChxLGEuY3VycmVudFRhcmdldCk7Zm9yKGo9MCxrPWUubGVuZ3Ro O2o8aztqKyspe209ZVtqXTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXtnPXNbaV07 aWYobS5zZWxlY3Rvcj09PWcuc2VsZWN0b3ImJighbnx8bi50ZXN0KGcubmFtZXNw YWNlKSkmJiFtLmVsZW0uZGlzYWJsZWQpe2g9bS5lbGVtLGQ9bnVsbDtpZihnLnBy ZVR5cGU9PT0ibW91c2VlbnRlciJ8fGcucHJlVHlwZT09PSJtb3VzZWxlYXZlIilh LnR5cGU9Zy5wcmVUeXBlLGQ9ZihhLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3QoZy5z ZWxlY3RvcilbMF0sZCYmZi5jb250YWlucyhoLGQpJiYoZD1oKTsoIWR8fGQhPT1o KSYmcC5wdXNoKHtlbGVtOmgsaGFuZGxlT2JqOmcsbGV2ZWw6bS5sZXZlbH0pfX19 Zm9yKGo9MCxrPXAubGVuZ3RoO2o8aztqKyspe2U9cFtqXTtpZihjJiZlLmxldmVs PmMpYnJlYWs7YS5jdXJyZW50VGFyZ2V0PWUuZWxlbSxhLmRhdGE9ZS5oYW5kbGVP YmouZGF0YSxhLmhhbmRsZU9iaj1lLmhhbmRsZU9iaixvPWUuaGFuZGxlT2JqLm9y aWdIYW5kbGVyLmFwcGx5KGUuZWxlbSxhcmd1bWVudHMpO2lmKG89PT0hMXx8YS5p c1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXtjPWUubGV2ZWwsbz09PSExJiYoYj0hMSk7 aWYoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1 cm4gYn19ZnVuY3Rpb24gTChhLGMsZCl7dmFyIGU9Zi5leHRlbmQoe30sZFswXSk7 ZS50eXBlPWEsZS5vcmlnaW5hbEV2ZW50PXt9LGUubGl2ZUZpcmVkPWIsZi5ldmVu dC5oYW5kbGUuY2FsbChjLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmRbMF0u cHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBGKCl7cmV0dXJuITB9ZnVuY3Rpb24g RSgpe3JldHVybiExfWZ1bmN0aW9uIG0oYSxjLGQpe3ZhciBlPWMrImRlZmVyIixn PWMrInF1ZXVlIixoPWMrIm1hcmsiLGk9Zi5kYXRhKGEsZSxiLCEwKTtpJiYoZD09 PSJxdWV1ZSJ8fCFmLmRhdGEoYSxnLGIsITApKSYmKGQ9PT0ibWFyayJ8fCFmLmRh dGEoYSxoLGIsITApKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLmRhdGEoYSxn LGIsITApJiYhZi5kYXRhKGEsaCxiLCEwKSYmKGYucmVtb3ZlRGF0YShhLGUsITAp LGkucmVzb2x2ZSgpKX0sMCl9ZnVuY3Rpb24gbChhKXtmb3IodmFyIGIgaW4gYSlp ZihiIT09InRvSlNPTiIpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gayhhLGMs ZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVw bGFjZShqLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCk7ZD1hLmdldEF0dHJpYnV0ZShl KTtpZih0eXBlb2YgZD09InN0cmluZyIpe3RyeXtkPWQ9PT0idHJ1ZSI/ITA6ZD09 PSJmYWxzZSI/ITE6ZD09PSJudWxsIj9udWxsOmYuaXNOYU4oZCk/aS50ZXN0KGQp P2YucGFyc2VKU09OKGQpOmQ6cGFyc2VGbG9hdChkKX1jYXRjaChnKXt9Zi5kYXRh KGEsYyxkKX1lbHNlIGQ9Yn1yZXR1cm4gZH12YXIgYz1hLmRvY3VtZW50LGQ9YS5u YXZpZ2F0b3IsZT1hLmxvY2F0aW9uLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKCl7 aWYoIWUuaXNSZWFkeSl7dHJ5e2MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJs ZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChILDEpO3JldHVybn1lLnJlYWR5KCl9 fXZhciBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBlLmZuLmluaXQoYSxiLGgp fSxmPWEualF1ZXJ5LGc9YS4kLGgsaT0vXig/OltePF0qKDxbXHdcV10rPilbXj5d KiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXGQv LG49L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxvPS9eW1xdLDp7fVxzXSok LyxwPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscT0vIlte IlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VF XVsrXC1dP1xkKyk/L2cscj0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHM9Lyh3ZWJr aXQpWyBcL10oW1x3Ll0rKS8sdD0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10o W1x3Ll0rKS8sdT0vKG1zaWUpIChbXHcuXSspLyx2PS8obW96aWxsYSkoPzouKj8g cnY6KFtcdy5dKykpPy8sdz1kLnVzZXJBZ2VudCx4LHkseixBPU9iamVjdC5wcm90 b3R5cGUudG9TdHJpbmcsQj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5 LEM9QXJyYXkucHJvdG90eXBlLnB1c2gsRD1BcnJheS5wcm90b3R5cGUuc2xpY2Us RT1TdHJpbmcucHJvdG90eXBlLnRyaW0sRj1BcnJheS5wcm90b3R5cGUuaW5kZXhP ZixHPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5j dGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5u b2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3Jl dHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4 dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0x O3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkh PT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9 aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihn WzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50 fHxkOmMsaj1uLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3Jl YXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5j cmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtr XSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50 KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVt ZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJd KXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5j b250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxk LmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQo YSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0 b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1h LmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3Rvcjoi IixqcXVlcnk6IjEuNi4xIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIEQuY2FsbCh0 aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0Fy cmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNr OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnN0cnVjdG9yKCk7ZS5pc0Fy cmF5KGEpP0MuYXBwbHkoZCxhKTplLm1lcmdlKGQsYSksZC5wcmV2T2JqZWN0PXRo aXMsZC5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Quc2VsZWN0b3I9 dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGQuc2Vs ZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpO3JldHVybiBkfSxl YWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUuZWFjaCh0aGlzLGEsYil9LHJlYWR5 OmZ1bmN0aW9uKGEpe2UuYmluZFJlYWR5KCkseS5kb25lKGEpO3JldHVybiB0aGlz fSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhp cy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVx KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpm dW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhELmFwcGx5KHRoaXMsYXJn dW1lbnRzKSwic2xpY2UiLEQuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1h cDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxm dW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51 bGwpfSxwdXNoOkMsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4u aW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlv bigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJn dW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1h cmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1 bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztq KyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10s Zj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3Qo Zil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQp P2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVu ZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25v Q29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVy eT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdh aXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVh ZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlX YWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRp bWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVh ZHlXYWl0PjApcmV0dXJuO3kucmVzb2x2ZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dl ciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRS ZWFkeTpmdW5jdGlvbigpe2lmKCF5KXt5PWUuX0RlZmVycmVkKCk7aWYoYy5yZWFk eVN0YXRlPT09ImNvbXBsZXRlIilyZXR1cm4gc2V0VGltZW91dChlLnJlYWR5LDEp O2lmKGMuYWRkRXZlbnRMaXN0ZW5lciljLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv bnRlbnRMb2FkZWQiLHosITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZS5y ZWFkeSwhMSk7ZWxzZSBpZihjLmF0dGFjaEV2ZW50KXtjLmF0dGFjaEV2ZW50KCJv bnJlYWR5c3RhdGVjaGFuZ2UiLHopLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsZS5y ZWFkeSk7dmFyIGI9ITE7dHJ5e2I9YS5mcmFtZUVsZW1lbnQ9PW51bGx9Y2F0Y2go ZCl7fWMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiZiJiZIKCl9fX0saXNGdW5j dGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gZS50eXBlKGEpPT09ImZ1bmN0aW9uIn0s aXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gZS50eXBl KGEpPT09ImFycmF5In0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJnR5 cGVvZiBhPT0ib2JqZWN0IiYmInNldEludGVydmFsImluIGF9LGlzTmFOOmZ1bmN0 aW9uKGEpe3JldHVybiBhPT1udWxsfHwhbS50ZXN0KGEpfHxpc05hTihhKX0sdHlw ZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6R1tBLmNhbGwo YSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8 ZS50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGUuaXNXaW5kb3coYSkp cmV0dXJuITE7aWYoYS5jb25zdHJ1Y3RvciYmIUIuY2FsbChhLCJjb25zdHJ1Y3Rv ciIpJiYhQi5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlw ZU9mIikpcmV0dXJuITE7dmFyIGM7Zm9yKGMgaW4gYSk7cmV0dXJuIGM9PT1ifHxC LmNhbGwoYSxjKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIg aW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cg YX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8 IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFy c2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihvLnRlc3QoYi5yZXBsYWNlKHAs IkAiKS5yZXBsYWNlKHEsIl0iKS5yZXBsYWNlKHIsIiIpKSlyZXR1cm4obmV3IEZ1 bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIr Yil9LHBhcnNlWE1MOmZ1bmN0aW9uKGIsYyxkKXthLkRPTVBhcnNlcj8oZD1uZXcg RE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9 bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJm YWxzZSIsYy5sb2FkWE1MKGIpKSxkPWMuZG9jdW1lbnRFbGVtZW50LCghZHx8IWQu bm9kZU5hbWV8fGQubm9kZU5hbWU9PT0icGFyc2VyZXJyb3IiKSYmZS5lcnJvcigi SW52YWxpZCBYTUw6ICIrYik7cmV0dXJuIGN9LG5vb3A6ZnVuY3Rpb24oKXt9LGds b2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmai50ZXN0KGIpJiYoYS5leGVjU2NyaXB0 fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LG5vZGVOYW1lOmZ1 bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9VcHBl ckNhc2UoKT09PWIudG9VcHBlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGMsZCl7 dmFyIGYsZz0wLGg9YS5sZW5ndGgsaT1oPT09Ynx8ZS5pc0Z1bmN0aW9uKGEpO2lm KGQpe2lmKGkpe2ZvcihmIGluIGEpaWYoYy5hcHBseShhW2ZdLGQpPT09ITEpYnJl YWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5hcHBseShhW2crK10sZCk9PT0hMSlicmVh a31lbHNlIGlmKGkpe2ZvcihmIGluIGEpaWYoYy5jYWxsKGFbZl0sZixhW2ZdKT09 PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuY2FsbChhW2ddLGcsYVtnKytd KT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOkU/ZnVuY3Rpb24oYSl7cmV0dXJu IGE9PW51bGw/IiI6RS5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVs bD8iIjooYSsiIikucmVwbGFjZShrLCIiKS5yZXBsYWNlKGwsIiIpfSxtYWtlQXJy YXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtpZihhIT1udWxsKXt2YXIgZD1l LnR5cGUoYSk7YS5sZW5ndGg9PW51bGx8fGQ9PT0ic3RyaW5nInx8ZD09PSJmdW5j dGlvbiJ8fGQ9PT0icmVnZXhwInx8ZS5pc1dpbmRvdyhhKT9DLmNhbGwoYyxhKTpl Lm1lcmdlKGMsYSl9cmV0dXJuIGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiKXtpZihG KXJldHVybiBGLmNhbGwoYixhKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtj KyspaWYoYltjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9u KGEsYyl7dmFyIGQ9YS5sZW5ndGgsZT0wO2lmKHR5cGVvZiBjLmxlbmd0aD09Im51 bWJlciIpZm9yKHZhciBmPWMubGVuZ3RoO2U8ZjtlKyspYVtkKytdPWNbZV07ZWxz ZSB3aGlsZShjW2VdIT09YilhW2QrK109Y1tlKytdO2EubGVuZ3RoPWQ7cmV0dXJu IGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU7Yz0hIWM7Zm9yKHZh ciBmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWU9ISFiKGFbZl0sZiksYyE9PWUmJmQu cHVzaChhW2ZdKTtyZXR1cm4gZH0sbWFwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixn LGg9W10saT0wLGo9YS5sZW5ndGgsaz1hIGluc3RhbmNlb2YgZXx8aiE9PWImJnR5 cGVvZiBqPT0ibnVtYmVyIiYmKGo+MCYmYVswXSYmYVtqLTFdfHxqPT09MHx8ZS5p c0FycmF5KGEpKTtpZihrKWZvcig7aTxqO2krKylmPWMoYVtpXSxpLGQpLGYhPW51 bGwmJihoW2gubGVuZ3RoXT1mKTtlbHNlIGZvcihnIGluIGEpZj1jKGFbZ10sZyxk KSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7cmV0dXJuIGguY29uY2F0LmFwcGx5 KFtdLGgpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxjKXtpZih0eXBlb2YgYz09 InN0cmluZyIpe3ZhciBkPWFbY107Yz1hLGE9ZH1pZighZS5pc0Z1bmN0aW9uKGEp KXJldHVybiBiO3ZhciBmPUQuY2FsbChhcmd1bWVudHMsMiksZz1mdW5jdGlvbigp e3JldHVybiBhLmFwcGx5KGMsZi5jb25jYXQoRC5jYWxsKGFyZ3VtZW50cykpKX07 Zy5ndWlkPWEuZ3VpZD1hLmd1aWR8fGcuZ3VpZHx8ZS5ndWlkKys7cmV0dXJuIGd9 LGFjY2VzczpmdW5jdGlvbihhLGMsZCxmLGcsaCl7dmFyIGk9YS5sZW5ndGg7aWYo dHlwZW9mIGM9PSJvYmplY3QiKXtmb3IodmFyIGogaW4gYyllLmFjY2VzcyhhLGos Y1tqXSxmLGcsZCk7cmV0dXJuIGF9aWYoZCE9PWIpe2Y9IWgmJmYmJmUuaXNGdW5j dGlvbihkKTtmb3IodmFyIGs9MDtrPGk7aysrKWcoYVtrXSxjLGY/ZC5jYWxsKGFb a10sayxnKGFba10sYykpOmQsaCk7cmV0dXJuIGF9cmV0dXJuIGk/ZyhhWzBdLGMp OmJ9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSx1 YU1hdGNoOmZ1bmN0aW9uKGEpe2E9YS50b0xvd2VyQ2FzZSgpO3ZhciBiPXMuZXhl YyhhKXx8dC5leGVjKGEpfHx1LmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJs ZSIpPDAmJnYuZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVy c2lvbjpiWzJdfHwiMCJ9fSxzdWI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7 cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1lLmV4dGVuZCghMCxhLHRoaXMpLGEu c3VwZXJjbGFzcz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29u c3RydWN0b3I9YSxhLnN1Yj10aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24oZCxm KXtmJiZmIGluc3RhbmNlb2YgZSYmIShmIGluc3RhbmNlb2YgYSkmJihmPWEoZikp O3JldHVybiBlLmZuLmluaXQuY2FsbCh0aGlzLGQsZixiKX0sYS5mbi5pbml0LnBy b3RvdHlwZT1hLmZuO3ZhciBiPWEoYyk7cmV0dXJuIGF9LGJyb3dzZXI6e319KSxl LmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRl IFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtHWyJbb2Jq ZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLHg9ZS51YU1hdGNoKHcpLHgu YnJvd3NlciYmKGUuYnJvd3Nlclt4LmJyb3dzZXJdPSEwLGUuYnJvd3Nlci52ZXJz aW9uPXgudmVyc2lvbiksZS5icm93c2VyLndlYmtpdCYmKGUuYnJvd3Nlci5zYWZh cmk9ITApLGoudGVzdCgiwqAiKSYmKGs9L15bXHNceEEwXSsvLGw9L1tcc1x4QTBd KyQvKSxoPWUoYyksYy5hZGRFdmVudExpc3RlbmVyP3o9ZnVuY3Rpb24oKXtjLnJl bW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHosITEpLGUucmVh ZHkoKX06Yy5hdHRhY2hFdmVudCYmKHo9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU9 PT0iY29tcGxldGUiJiYoYy5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdl Iix6KSxlLnJlYWR5KCkpfSk7cmV0dXJuIGV9KCksZz0iZG9uZSBmYWlsIGlzUmVz b2x2ZWQgaXNSZWplY3RlZCBwcm9taXNlIHRoZW4gYWx3YXlzIHBpcGUiLnNwbGl0 KCIgIiksaD1bXS5zbGljZTtmLmV4dGVuZCh7X0RlZmVycmVkOmZ1bmN0aW9uKCl7 dmFyIGE9W10sYixjLGQsZT17ZG9uZTpmdW5jdGlvbigpe2lmKCFkKXt2YXIgYz1h cmd1bWVudHMsZyxoLGksaixrO2ImJihrPWIsYj0wKTtmb3IoZz0wLGg9Yy5sZW5n dGg7ZzxoO2crKylpPWNbZ10saj1mLnR5cGUoaSksaj09PSJhcnJheSI/ZS5kb25l LmFwcGx5KGUsaSk6aj09PSJmdW5jdGlvbiImJmEucHVzaChpKTtrJiZlLnJlc29s dmVXaXRoKGtbMF0sa1sxXSl9cmV0dXJuIHRoaXN9LHJlc29sdmVXaXRoOmZ1bmN0 aW9uKGUsZil7aWYoIWQmJiFiJiYhYyl7Zj1mfHxbXSxjPTE7dHJ5e3doaWxlKGFb MF0pYS5zaGlmdCgpLmFwcGx5KGUsZil9ZmluYWxseXtiPVtlLGZdLGM9MH19cmV0 dXJuIHRoaXN9LHJlc29sdmU6ZnVuY3Rpb24oKXtlLnJlc29sdmVXaXRoKHRoaXMs YXJndW1lbnRzKTtyZXR1cm4gdGhpc30saXNSZXNvbHZlZDpmdW5jdGlvbigpe3Jl dHVybiEhY3x8ISFifSxjYW5jZWw6ZnVuY3Rpb24oKXtkPTEsYT1bXTtyZXR1cm4g dGhpc319O3JldHVybiBlfSxEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1mLl9E ZWZlcnJlZCgpLGM9Zi5fRGVmZXJyZWQoKSxkO2YuZXh0ZW5kKGIse3RoZW46ZnVu Y3Rpb24oYSxjKXtiLmRvbmUoYSkuZmFpbChjKTtyZXR1cm4gdGhpc30sYWx3YXlz OmZ1bmN0aW9uKCl7cmV0dXJuIGIuZG9uZS5hcHBseShiLGFyZ3VtZW50cykuZmFp bC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGZhaWw6Yy5kb25lLHJlamVjdFdpdGg6 Yy5yZXNvbHZlV2l0aCxyZWplY3Q6Yy5yZXNvbHZlLGlzUmVqZWN0ZWQ6Yy5pc1Jl c29sdmVkLHBpcGU6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZi5EZWZlcnJlZChmdW5j dGlvbihkKXtmLmVhY2goe2RvbmU6W2EsInJlc29sdmUiXSxmYWlsOltjLCJyZWpl Y3QiXX0sZnVuY3Rpb24oYSxjKXt2YXIgZT1jWzBdLGc9Y1sxXSxoO2YuaXNGdW5j dGlvbihlKT9iW2FdKGZ1bmN0aW9uKCl7aD1lLmFwcGx5KHRoaXMsYXJndW1lbnRz KSxoJiZmLmlzRnVuY3Rpb24oaC5wcm9taXNlKT9oLnByb21pc2UoKS50aGVuKGQu cmVzb2x2ZSxkLnJlamVjdCk6ZFtnXShoKX0pOmJbYV0oZFtnXSl9KX0pLnByb21p c2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKXtpZihkKXJldHVy biBkO2Q9YT17fX12YXIgYz1nLmxlbmd0aDt3aGlsZShjLS0pYVtnW2NdXT1iW2db Y11dO3JldHVybiBhfX0pLGIuZG9uZShjLmNhbmNlbCkuZmFpbChiLmNhbmNlbCks ZGVsZXRlIGIuY2FuY2VsLGEmJmEuY2FsbChiLGIpO3JldHVybiBifSx3aGVuOmZ1 bmN0aW9uKGEpe2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2JbYV09 YXJndW1lbnRzLmxlbmd0aD4xP2guY2FsbChhcmd1bWVudHMsMCk6YywtLWV8fGcu cmVzb2x2ZVdpdGgoZyxoLmNhbGwoYiwwKSl9fXZhciBiPWFyZ3VtZW50cyxjPTAs ZD1iLmxlbmd0aCxlPWQsZz1kPD0xJiZhJiZmLmlzRnVuY3Rpb24oYS5wcm9taXNl KT9hOmYuRGVmZXJyZWQoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZmLmlz RnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGkoYyks Zy5yZWplY3QpOi0tZTtlfHxnLnJlc29sdmVXaXRoKGcsYil9ZWxzZSBnIT09YSYm Zy5yZXNvbHZlV2l0aChnLGQ/W2FdOltdKTtyZXR1cm4gZy5wcm9taXNlKCl9fSks Zi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYi KSxiPWMuZG9jdW1lbnRFbGVtZW50LGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAs cSxyO2Euc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0IiksYS5pbm5lckhUTUw9 IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J3Rv cDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0IHR5cGU9 J2NoZWNrYm94Jy8+IixkPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxlPWEu Z2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighZHx8IWQubGVuZ3RofHwh ZSlyZXR1cm57fTtmPWMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZz1mLmFwcGVu ZENoaWxkKGMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGg9YS5nZXRFbGVtZW50 c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxqPXtsZWFkaW5nV2hpdGVzcGFjZTphLmZp cnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFhLmdldEVsZW1lbnRzQnlUYWdO YW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhYS5nZXRFbGVtZW50 c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGUuZ2V0 QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDplLmdldEF0dHJpYnV0 ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NSQvLnRlc3QoZS5zdHlsZS5v cGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsY2hlY2tPbjpoLnZh bHVlPT09Im9uIixvcHRTZWxlY3RlZDpnLnNlbGVjdGVkLGdldFNldEF0dHJpYnV0 ZTphLmNsYXNzTmFtZSE9PSJ0IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJs ZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25l RXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxv Y2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITB9LGguY2hlY2tlZD0hMCxqLm5v Q2xvbmVDaGVja2VkPWguY2xvbmVOb2RlKCEwKS5jaGVja2VkLGYuZGlzYWJsZWQ9 ITAsai5vcHREaXNhYmxlZD0hZy5kaXNhYmxlZDt0cnl7ZGVsZXRlIGEudGVzdH1j YXRjaChzKXtqLmRlbGV0ZUV4cGFuZG89ITF9IWEuYWRkRXZlbnRMaXN0ZW5lciYm YS5hdHRhY2hFdmVudCYmYS5maXJlRXZlbnQmJihhLmF0dGFjaEV2ZW50KCJvbmNs aWNrIixmdW5jdGlvbiBiKCl7ai5ub0Nsb25lRXZlbnQ9ITEsYS5kZXRhY2hFdmVu dCgib25jbGljayIsYil9KSxhLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNs aWNrIikpLGg9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGgudmFsdWU9InQiLGgu c2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxqLnJhZGlvVmFsdWU9aC52YWx1 ZT09PSJ0IixoLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxhLmFw cGVuZENoaWxkKGgpLGs9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksay5hcHBl bmRDaGlsZChhLmZpcnN0Q2hpbGQpLGouY2hlY2tDbG9uZT1rLmNsb25lTm9kZSgh MCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxhLmlubmVySFRNTD0i IixhLnN0eWxlLndpZHRoPWEuc3R5bGUucGFkZGluZ0xlZnQ9IjFweCIsbD1jLmNy ZWF0ZUVsZW1lbnQoImJvZHkiKSxtPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRo OjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9 O2ZvcihxIGluIG0pbC5zdHlsZVtxXT1tW3FdO2wuYXBwZW5kQ2hpbGQoYSksYi5p bnNlcnRCZWZvcmUobCxiLmZpcnN0Q2hpbGQpLGouYXBwZW5kQ2hlY2tlZD1oLmNo ZWNrZWQsai5ib3hNb2RlbD1hLm9mZnNldFdpZHRoPT09Miwiem9vbSJpbiBhLnN0 eWxlJiYoYS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiLGEuc3R5bGUuem9vbT0xLGou aW5saW5lQmxvY2tOZWVkc0xheW91dD1hLm9mZnNldFdpZHRoPT09MixhLnN0eWxl LmRpc3BsYXk9IiIsYS5pbm5lckhUTUw9IjxkaXYgc3R5bGU9J3dpZHRoOjRweDsn PjwvZGl2PiIsai5zaHJpbmtXcmFwQmxvY2tzPWEub2Zmc2V0V2lkdGghPT0yKSxh LmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQgc3R5bGU9J3BhZGRpbmc6MDtib3Jk ZXI6MDtkaXNwbGF5Om5vbmUnPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4i LG49YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxyPW5bMF0ub2Zmc2V0SGVp Z2h0PT09MCxuWzBdLnN0eWxlLmRpc3BsYXk9IiIsblsxXS5zdHlsZS5kaXNwbGF5 PSJub25lIixqLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1yJiZuWzBdLm9mZnNldEhl aWdodD09PTAsYS5pbm5lckhUTUw9IiIsYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0 Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoaT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIp LGkuc3R5bGUud2lkdGg9IjAiLGkuc3R5bGUubWFyZ2luUmlnaHQ9IjAiLGEuYXBw ZW5kQ2hpbGQoaSksai5yZWxpYWJsZU1hcmdpblJpZ2h0PShwYXJzZUludCgoYy5k ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHttYXJnaW5SaWdo dDowfSkubWFyZ2luUmlnaHQsMTApfHwwKT09PTApLGwuaW5uZXJIVE1MPSIiLGIu cmVtb3ZlQ2hpbGQobCk7aWYoYS5hdHRhY2hFdmVudClmb3IocSBpbntzdWJtaXQ6 MSxjaGFuZ2U6MSxmb2N1c2luOjF9KXA9Im9uIitxLHI9cCBpbiBhLHJ8fChhLnNl dEF0dHJpYnV0ZShwLCJyZXR1cm47Iikscj10eXBlb2YgYVtwXT09ImZ1bmN0aW9u IiksaltxKyJCdWJibGVzIl09cjtyZXR1cm4gan0oKSxmLmJveE1vZGVsPWYuc3Vw cG9ydC5ib3hNb2RlbDt2YXIgaT0vXig/Olx7LipcfXxcWy4qXF0pJC8saj0vKFth LXpdKShbQS1aXSkvZztmLmV4dGVuZCh7Y2FjaGU6e30sdXVpZDowLGV4cGFuZG86 ImpRdWVyeSIrKGYuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xE L2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1B RTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpm dW5jdGlvbihhKXthPWEubm9kZVR5cGU/Zi5jYWNoZVthW2YuZXhwYW5kb11dOmFb Zi5leHBhbmRvXTtyZXR1cm4hIWEmJiFsKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYyxk LGUpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZz1mLmV4cGFuZG8saD10eXBl b2YgYz09InN0cmluZyIsaSxqPWEubm9kZVR5cGUsaz1qP2YuY2FjaGU6YSxsPWo/ YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvO2lmKCghbHx8ZSYm bCYmIWtbbF1bZ10pJiZoJiZkPT09YilyZXR1cm47bHx8KGo/YVtmLmV4cGFuZG9d PWw9KytmLnV1aWQ6bD1mLmV4cGFuZG8pLGtbbF18fChrW2xdPXt9LGp8fChrW2xd LnRvSlNPTj1mLm5vb3ApKTtpZih0eXBlb2YgYz09Im9iamVjdCJ8fHR5cGVvZiBj PT0iZnVuY3Rpb24iKWU/a1tsXVtnXT1mLmV4dGVuZChrW2xdW2ddLGMpOmtbbF09 Zi5leHRlbmQoa1tsXSxjKTtpPWtbbF0sZSYmKGlbZ118fChpW2ddPXt9KSxpPWlb Z10pLGQhPT1iJiYoaVtmLmNhbWVsQ2FzZShjKV09ZCk7aWYoYz09PSJldmVudHMi JiYhaVtjXSlyZXR1cm4gaVtnXSYmaVtnXS5ldmVudHM7cmV0dXJuIGg/aVtmLmNh bWVsQ2FzZShjKV06aX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYixjLGQpe2lmKCEh Zi5hY2NlcHREYXRhKGIpKXt2YXIgZT1mLmV4cGFuZG8sZz1iLm5vZGVUeXBlLGg9 Zz9mLmNhY2hlOmIsaT1nP2JbZi5leHBhbmRvXTpmLmV4cGFuZG87aWYoIWhbaV0p cmV0dXJuO2lmKGMpe3ZhciBqPWQ/aFtpXVtlXTpoW2ldO2lmKGope2RlbGV0ZSBq W2NdO2lmKCFsKGopKXJldHVybn19aWYoZCl7ZGVsZXRlIGhbaV1bZV07aWYoIWwo aFtpXSkpcmV0dXJufXZhciBrPWhbaV1bZV07Zi5zdXBwb3J0LmRlbGV0ZUV4cGFu ZG98fGghPWE/ZGVsZXRlIGhbaV06aFtpXT1udWxsLGs/KGhbaV09e30sZ3x8KGhb aV0udG9KU09OPWYubm9vcCksaFtpXVtlXT1rKTpnJiYoZi5zdXBwb3J0LmRlbGV0 ZUV4cGFuZG8/ZGVsZXRlIGJbZi5leHBhbmRvXTpiLnJlbW92ZUF0dHJpYnV0ZT9i LnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pOmJbZi5leHBhbmRvXT1udWxsKX19 LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kYXRhKGEsYixjLCEwKX0s YWNjZXB0RGF0YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2YXIgYj1mLm5v RGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGIpcmV0dXJuIGIhPT0h MCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9cmV0dXJuITB9fSksZi5m bi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgZD1udWxsO2lmKHR5cGVv ZiBhPT0idW5kZWZpbmVkIil7aWYodGhpcy5sZW5ndGgpe2Q9Zi5kYXRhKHRoaXNb MF0pO2lmKHRoaXNbMF0ubm9kZVR5cGU9PT0xKXt2YXIgZT10aGlzWzBdLmF0dHJp YnV0ZXMsZztmb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspZz1lW2hdLm5h bWUsZy5pbmRleE9mKCJkYXRhLSIpPT09MCYmKGc9Zi5jYW1lbENhc2UoZy5zdWJz dHJpbmcoNSkpLGsodGhpc1swXSxnLGRbZ10pKX19cmV0dXJuIGR9aWYodHlwZW9m IGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEo dGhpcyxhKX0pO3ZhciBqPWEuc3BsaXQoIi4iKTtqWzFdPWpbMV0/Ii4iK2pbMV06 IiI7aWYoYz09PWIpe2Q9dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIralsx XSsiISIsW2pbMF1dKSxkPT09YiYmdGhpcy5sZW5ndGgmJihkPWYuZGF0YSh0aGlz WzBdLGEpLGQ9ayh0aGlzWzBdLGEsZCkpO3JldHVybiBkPT09YiYmalsxXT90aGlz LmRhdGEoalswXSk6ZH1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9 Zih0aGlzKSxkPVtqWzBdLGNdO2IudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2pb MV0rIiEiLGQpLGYuZGF0YSh0aGlzLGEsYyksYi50cmlnZ2VySGFuZGxlcigiY2hh bmdlRGF0YSIralsxXSsiISIsZCl9KX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXty ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVEYXRhKHRoaXMsYSl9 KX19KSxmLmV4dGVuZCh7X21hcms6ZnVuY3Rpb24oYSxjKXthJiYoYz0oY3x8ImZ4 IikrIm1hcmsiLGYuZGF0YShhLGMsKGYuZGF0YShhLGMsYiwhMCl8fDApKzEsITAp KX0sX3VubWFyazpmdW5jdGlvbihhLGMsZCl7YSE9PSEwJiYoZD1jLGM9YSxhPSEx KTtpZihjKXtkPWR8fCJmeCI7dmFyIGU9ZCsibWFyayIsZz1hPzA6KGYuZGF0YShj LGUsYiwhMCl8fDEpLTE7Zz9mLmRhdGEoYyxlLGcsITApOihmLnJlbW92ZURhdGEo YyxlLCEwKSxtKGMsZCwibWFyayIpKX19LHF1ZXVlOmZ1bmN0aW9uKGEsYyxkKXtp ZihhKXtjPShjfHwiZngiKSsicXVldWUiO3ZhciBlPWYuZGF0YShhLGMsYiwhMCk7 ZCYmKCFlfHxmLmlzQXJyYXkoZCk/ZT1mLmRhdGEoYSxjLGYubWFrZUFycmF5KGQp LCEwKTplLnB1c2goZCkpO3JldHVybiBlfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24o YSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU7 ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMu dW5zaGlmdCgiaW5wcm9ncmVzcyIpLGQuY2FsbChhLGZ1bmN0aW9uKCl7Zi5kZXF1 ZXVlKGEsYil9KSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSIs ITApLG0oYSxiLCJxdWV1ZSIpKX19KSxmLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rp b24oYSxjKXt0eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT0iZngiKTtpZihjPT09 YilyZXR1cm4gZi5xdWV1ZSh0aGlzWzBdLGEpO3JldHVybiB0aGlzLmVhY2goZnVu Y3Rpb24oKXt2YXIgYj1mLnF1ZXVlKHRoaXMsYSxjKTthPT09ImZ4IiYmYlswXSE9 PSJpbnByb2dyZXNzIiYmZi5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5j dGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kZXF1ZXVlKHRo aXMsYSl9KX0sZGVsYXk6ZnVuY3Rpb24oYSxiKXthPWYuZng/Zi5meC5zcGVlZHNb YV18fGE6YSxiPWJ8fCJmeCI7cmV0dXJuIHRoaXMucXVldWUoYixmdW5jdGlvbigp e3ZhciBjPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2YuZGVxdWV1ZShjLGIp fSxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVl KGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgp ey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYo Yz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1l Lmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixs O3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtn XSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxm Ll9EZWZlcnJlZCgpLCEwKSloKyssbC5kb25lKG0pO20oKTtyZXR1cm4gZC5wcm9t aXNlKCl9fSk7dmFyIG49L1tcblx0XHJdL2csbz0vXHMrLyxwPS9cci9nLHE9L14o PzpidXR0b258aW5wdXQpJC9pLHI9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNl bGVjdHx0ZXh0YXJlYSkkL2kscz0vXmEoPzpyZWEpPyQvaSx0PS9eKD86YXV0b2Zv Y3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJs ZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxz Y29wZWR8c2VsZWN0ZWQpJC9pLHU9L1w6Lyx2LHc7Zi5mbi5leHRlbmQoe2F0dHI6 ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5hdHRy KX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIp e3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLnByb3ApfSxyZW1vdmVQcm9w OmZ1bmN0aW9uKGEpe2E9Zi5wcm9wRml4W2FdfHxhO3JldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24oKXt0cnl7dGhpc1thXT1iLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGMp e319KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmFkZENs YXNzKGEuY2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpfHwiIikpfSk7aWYoYSYm dHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYj0oYXx8IiIpLnNwbGl0KG8pO2Zvcih2 YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9dGhpc1tjXTtpZihl Lm5vZGVUeXBlPT09MSlpZighZS5jbGFzc05hbWUpZS5jbGFzc05hbWU9YTtlbHNl e3ZhciBnPSIgIitlLmNsYXNzTmFtZSsiICIsaD1lLmNsYXNzTmFtZTtmb3IodmFy IGk9MCxqPWIubGVuZ3RoO2k8ajtpKyspZy5pbmRleE9mKCIgIitiW2ldKyIgIik8 MCYmKGgrPSIgIitiW2ldKTtlLmNsYXNzTmFtZT1mLnRyaW0oaCl9fX1yZXR1cm4g dGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEp KXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLnJl bW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpKSl9KTtpZihh JiZ0eXBlb2YgYT09InN0cmluZyJ8fGE9PT1iKXt2YXIgYz0oYXx8IiIpLnNwbGl0 KG8pO2Zvcih2YXIgZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7dmFyIGc9dGhp c1tkXTtpZihnLm5vZGVUeXBlPT09MSYmZy5jbGFzc05hbWUpaWYoYSl7dmFyIGg9 KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobiwiICIpO2Zvcih2YXIgaT0w LGo9Yy5sZW5ndGg7aTxqO2krKyloPWgucmVwbGFjZSgiICIrY1tpXSsiICIsIiAi KTtnLmNsYXNzTmFtZT1mLnRyaW0oaCl9ZWxzZSBnLmNsYXNzTmFtZT0iIn19cmV0 dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9m IGEsZD10eXBlb2YgYj09ImJvb2xlYW4iO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1 cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPWYodGhpcyk7ZC50b2dnbGVD bGFzcyhhLmNhbGwodGhpcyxjLGQuYXR0cigiY2xhc3MiKSxiKSxiKX0pO3JldHVy biB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGc9 MCxoPWYodGhpcyksaT1iLGo9YS5zcGxpdChvKTt3aGlsZShlPWpbZysrXSlpPWQ/ aTohaC5oYXNDbGFzcyhlKSxoW2k/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShl KX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNs YXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNz TmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpm Ll9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVu Y3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiO2Zvcih2YXIgYz0wLGQ9dGhpcy5sZW5n dGg7YzxkO2MrKylpZigoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFj ZShuLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1 bmN0aW9uKGEpe3ZhciBjLGQsZT10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3Ro KXtpZihlKXtjPWYudmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXXx8 Zi52YWxIb29rc1tlLnR5cGVdO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZSwi dmFsdWUiKSkhPT1iKXJldHVybiBkO3JldHVybihlLnZhbHVlfHwiIikucmVwbGFj ZShwLCIiKX1yZXR1cm4gYn12YXIgZz1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZT1mKHRoaXMpLGg7aWYodGhpcy5ub2Rl VHlwZT09PTEpe2c/aD1hLmNhbGwodGhpcyxkLGUudmFsKCkpOmg9YSxoPT1udWxs P2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9 Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9 Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhv b2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxo LCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhv b2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMu dmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2Vs ZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnNlbGVjdGVkSW5kZXgsZD1b XSxlPWEub3B0aW9ucyxnPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihjPDApcmV0 dXJuIG51bGw7Zm9yKHZhciBoPWc/YzowLGk9Zz9jKzE6ZS5sZW5ndGg7aDxpO2gr Kyl7dmFyIGo9ZVtoXTtpZihqLnNlbGVjdGVkJiYoZi5zdXBwb3J0Lm9wdERpc2Fi bGVkPyFqLmRpc2FibGVkOmouZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpPT09bnVs bCkmJighai5wYXJlbnROb2RlLmRpc2FibGVkfHwhZi5ub2RlTmFtZShqLnBhcmVu dE5vZGUsIm9wdGdyb3VwIikpKXtiPWYoaikudmFsKCk7aWYoZylyZXR1cm4gYjtk LnB1c2goYil9fWlmKGcmJiFkLmxlbmd0aCYmZS5sZW5ndGgpcmV0dXJuIGYoZVtj XSkudmFsKCk7cmV0dXJuIGR9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWYubWFr ZUFycmF5KGIpO2YoYSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3Ro aXMuc2VsZWN0ZWQ9Zi5pbkFycmF5KGYodGhpcykudmFsKCksYyk+PTB9KSxjLmxl bmd0aHx8KGEuc2VsZWN0ZWRJbmRleD0tMSk7cmV0dXJuIGN9fX0sYXR0ckZuOnt2 YWw6ITAsY3NzOiEwLGh0bWw6ITAsdGV4dDohMCxkYXRhOiEwLHdpZHRoOiEwLGhl aWdodDohMCxvZmZzZXQ6ITB9LGF0dHJGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCJ9 LGF0dHI6ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGc9YS5ub2RlVHlwZTtpZighYXx8 Zz09PTN8fGc9PT04fHxnPT09MilyZXR1cm4gYjtpZihlJiZjIGluIGYuYXR0ckZu KXJldHVybiBmKGEpW2NdKGQpO2lmKCEoImdldEF0dHJpYnV0ZSJpbiBhKSlyZXR1 cm4gZi5wcm9wKGEsYyxkKTt2YXIgaCxpLGo9ZyE9PTF8fCFmLmlzWE1MRG9jKGEp O2M9aiYmZi5hdHRyRml4W2NdfHxjLGk9Zi5hdHRySG9va3NbY10saXx8KCF0LnRl c3QoYyl8fHR5cGVvZiBkIT0iYm9vbGVhbiImJmQhPT1iJiZkLnRvTG93ZXJDYXNl KCkhPT1jLnRvTG93ZXJDYXNlKCk/diYmKGYubm9kZU5hbWUoYSwiZm9ybSIpfHx1 LnRlc3QoYykpJiYoaT12KTppPXcpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5y ZW1vdmVBdHRyKGEsYyk7cmV0dXJuIGJ9aWYoaSYmInNldCJpbiBpJiZqJiYoaD1p LnNldChhLGQsYykpIT09YilyZXR1cm4gaDthLnNldEF0dHJpYnV0ZShjLCIiK2Qp O3JldHVybiBkfWlmKGkmJiJnZXQiaW4gaSYmailyZXR1cm4gaS5nZXQoYSxjKTto PWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBoPT09bnVsbD9iOmh9LHJlbW92ZUF0 dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYzthLm5vZGVUeXBlPT09MSYmKGI9Zi5hdHRy Rml4W2JdfHxiLGYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGU/YS5yZW1vdmVBdHRy aWJ1dGUoYik6KGYuYXR0cihhLGIsIiIpLGEucmVtb3ZlQXR0cmlidXRlTm9kZShh LmdldEF0dHJpYnV0ZU5vZGUoYikpKSx0LnRlc3QoYikmJihjPWYucHJvcEZpeFti XXx8YilpbiBhJiYoYVtjXT0hMSkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5j dGlvbihhLGIpe2lmKHEudGVzdChhLm5vZGVOYW1lKSYmYS5wYXJlbnROb2RlKWYu ZXJyb3IoInR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCIpO2Vsc2UgaWYo IWYuc3VwcG9ydC5yYWRpb1ZhbHVlJiZiPT09InJhZGlvIiYmZi5ub2RlTmFtZShh LCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVlO2Euc2V0QXR0cmlidXRlKCJ0eXBlIixi KSxjJiYoYS52YWx1ZT1jKTtyZXR1cm4gYn19fSx0YWJJbmRleDp7Z2V0OmZ1bmN0 aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiSW5kZXgiKTtyZXR1 cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6ci50ZXN0KGEu bm9kZU5hbWUpfHxzLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX0scHJv cEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJm b3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4 TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJj ZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIs dXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVu dGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxk KXt2YXIgZT1hLm5vZGVUeXBlO2lmKCFhfHxlPT09M3x8ZT09PTh8fGU9PT0yKXJl dHVybiBiO3ZhciBnLGgsaT1lIT09MXx8IWYuaXNYTUxEb2MoYSk7Yz1pJiZmLnBy b3BGaXhbY118fGMsaD1mLnByb3BIb29rc1tjXTtyZXR1cm4gZCE9PWI/aCYmInNl dCJpbiBoJiYoZz1oLnNldChhLGQsYykpIT09Yj9nOmFbY109ZDpoJiYiZ2V0Imlu IGgmJihnPWguZ2V0KGEsYykpIT09Yj9nOmFbY119LHByb3BIb29rczp7fX0pLHc9 e2dldDpmdW5jdGlvbihhLGMpe3JldHVybiBhW2YucHJvcEZpeFtjXXx8Y10/Yy50 b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSEx P2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihh W2RdPWIpLGEuc2V0QXR0cmlidXRlKGMsYy50b0xvd2VyQ2FzZSgpKSk7cmV0dXJu IGN9fSxmLmF0dHJIb29rcy52YWx1ZT17Z2V0OmZ1bmN0aW9uKGEsYil7aWYodiYm Zi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdi5nZXQoYSxiKTtyZXR1cm4g YS52YWx1ZX0sc2V0OmZ1bmN0aW9uKGEsYixjKXtpZih2JiZmLm5vZGVOYW1lKGEs ImJ1dHRvbiIpKXJldHVybiB2LnNldChhLGIsYyk7YS52YWx1ZT1ifX0sZi5zdXBw b3J0LmdldFNldEF0dHJpYnV0ZXx8KGYuYXR0ckZpeD1mLnByb3BGaXgsdj1mLmF0 dHJIb29rcy5uYW1lPWYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxj KXt2YXIgZDtkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZCYmZC5ub2Rl VmFsdWUhPT0iIj9kLm5vZGVWYWx1ZTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3Zh ciBkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtpZihkKXtkLm5vZGVWYWx1ZT1iO3Jl dHVybiBifX19LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxi KXtmLmF0dHJIb29rc1tiXT1mLmV4dGVuZChmLmF0dHJIb29rc1tiXSx7c2V0OmZ1 bmN0aW9uKGEsYyl7aWYoYz09PSIiKXthLnNldEF0dHJpYnV0ZShiLCJhdXRvIik7 cmV0dXJuIGN9fX0pfSkpLGYuc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8Zi5lYWNo KFsiaHJlZiIsInNyYyIsIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxjKXtm LmF0dHJIb29rc1tjXT1mLmV4dGVuZChmLmF0dHJIb29rc1tjXSx7Z2V0OmZ1bmN0 aW9uKGEpe3ZhciBkPWEuZ2V0QXR0cmlidXRlKGMsMik7cmV0dXJuIGQ9PT1udWxs P2I6ZH19KX0pLGYuc3VwcG9ydC5zdHlsZXx8KGYuYXR0ckhvb2tzLnN0eWxlPXtn ZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2Fz ZSgpfHxifSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0 PSIiK2J9fSksZi5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoZi5wcm9wSG9va3Muc2Vs ZWN0ZWQ9Zi5leHRlbmQoZi5wcm9wSG9va3Muc2VsZWN0ZWQse2dldDpmdW5jdGlv bihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBh cmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSksZi5zdXBw b3J0LmNoZWNrT258fGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlv bigpe2YudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5n ZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6YS52YWx1ZX19fSksZi5l YWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0 aGlzXT1mLmV4dGVuZChmLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxi KXtpZihmLmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1mLmluQXJyYXkoZihh KS52YWwoKSxiKT49MH19KX0pO3ZhciB4PU9iamVjdC5wcm90b3R5cGUuaGFzT3du UHJvcGVydHkseT0vXC4oLiopJC8sej0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVj dCkkL2ksQT0vXC4vZyxCPS8gL2csQz0vW15cd1xzLnxgXS9nLEQ9ZnVuY3Rpb24o YSl7cmV0dXJuIGEucmVwbGFjZShDLCJcXCQmIil9O2YuZXZlbnQ9e2FkZDpmdW5j dGlvbihhLGMsZCxlKXtpZihhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgp e2lmKGQ9PT0hMSlkPUU7ZWxzZSBpZighZClyZXR1cm47dmFyIGcsaDtkLmhhbmRs ZXImJihnPWQsZD1nLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyk7 dmFyIGk9Zi5fZGF0YShhKTtpZighaSlyZXR1cm47dmFyIGo9aS5ldmVudHMsaz1p LmhhbmRsZTtqfHwoaS5ldmVudHM9aj17fSksa3x8KGkuaGFuZGxlPWs9ZnVuY3Rp b24oYSl7cmV0dXJuIHR5cGVvZiBmIT0idW5kZWZpbmVkIiYmKCFhfHxmLmV2ZW50 LnRyaWdnZXJlZCE9PWEudHlwZSk/Zi5ldmVudC5oYW5kbGUuYXBwbHkoay5lbGVt LGFyZ3VtZW50cyk6Yn0pLGsuZWxlbT1hLGM9Yy5zcGxpdCgiICIpO3ZhciBsLG09 MCxuO3doaWxlKGw9Y1ttKytdKXtoPWc/Zi5leHRlbmQoe30sZyk6e2hhbmRsZXI6 ZCxkYXRhOmV9LGwuaW5kZXhPZigiLiIpPi0xPyhuPWwuc3BsaXQoIi4iKSxsPW4u c2hpZnQoKSxoLm5hbWVzcGFjZT1uLnNsaWNlKDApLnNvcnQoKS5qb2luKCIuIikp OihuPVtdLGgubmFtZXNwYWNlPSIiKSxoLnR5cGU9bCxoLmd1aWR8fChoLmd1aWQ9 ZC5ndWlkKTt2YXIgbz1qW2xdLHA9Zi5ldmVudC5zcGVjaWFsW2xdfHx7fTtpZigh byl7bz1qW2xdPVtdO2lmKCFwLnNldHVwfHxwLnNldHVwLmNhbGwoYSxlLG4sayk9 PT0hMSlhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKGwsaywh MSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK2wsayl9cC5hZGQm JihwLmFkZC5jYWxsKGEsaCksaC5oYW5kbGVyLmd1aWR8fChoLmhhbmRsZXIuZ3Vp ZD1kLmd1aWQpKSxvLnB1c2goaCksZi5ldmVudC5nbG9iYWxbbF09ITB9YT1udWxs fX0sZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihhLGMsZCxlKXtpZihhLm5vZGVU eXBlIT09MyYmYS5ub2RlVHlwZSE9PTgpe2Q9PT0hMSYmKGQ9RSk7dmFyIGcsaCxp LGosaz0wLGwsbSxuLG8scCxxLHIscz1mLmhhc0RhdGEoYSkmJmYuX2RhdGEoYSks dD1zJiZzLmV2ZW50cztpZighc3x8IXQpcmV0dXJuO2MmJmMudHlwZSYmKGQ9Yy5o YW5kbGVyLGM9Yy50eXBlKTtpZighY3x8dHlwZW9mIGM9PSJzdHJpbmciJiZjLmNo YXJBdCgwKT09PSIuIil7Yz1jfHwiIjtmb3IoaCBpbiB0KWYuZXZlbnQucmVtb3Zl KGEsaCtjKTtyZXR1cm59Yz1jLnNwbGl0KCIgIik7d2hpbGUoaD1jW2srK10pe3I9 aCxxPW51bGwsbD1oLmluZGV4T2YoIi4iKTwwLG09W10sbHx8KG09aC5zcGxpdCgi LiIpLGg9bS5zaGlmdCgpLG49bmV3IFJlZ0V4cCgiKF58XFwuKSIrZi5tYXAobS5z bGljZSgwKS5zb3J0KCksRCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQp IikpLHA9dFtoXTtpZighcCljb250aW51ZTtpZighZCl7Zm9yKGo9MDtqPHAubGVu Z3RoO2orKyl7cT1wW2pdO2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZi5ldmVu dC5yZW1vdmUoYSxyLHEuaGFuZGxlcixqKSxwLnNwbGljZShqLS0sMSl9Y29udGlu dWV9bz1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2ZvcihqPWV8fDA7ajxwLmxlbmd0 aDtqKyspe3E9cFtqXTtpZihkLmd1aWQ9PT1xLmd1aWQpe2lmKGx8fG4udGVzdChx Lm5hbWVzcGFjZSkpZT09bnVsbCYmcC5zcGxpY2Uoai0tLDEpLG8ucmVtb3ZlJiZv LnJlbW92ZS5jYWxsKGEscSk7aWYoZSE9bnVsbClicmVha319aWYocC5sZW5ndGg9 PT0wfHxlIT1udWxsJiZwLmxlbmd0aD09PTEpKCFvLnRlYXJkb3dufHxvLnRlYXJk b3duLmNhbGwoYSxtKT09PSExKSYmZi5yZW1vdmVFdmVudChhLGgscy5oYW5kbGUp LGc9bnVsbCxkZWxldGUgdFtoXX1pZihmLmlzRW1wdHlPYmplY3QodCkpe3ZhciB1 PXMuaGFuZGxlO3UmJih1LmVsZW09bnVsbCksZGVsZXRlIHMuZXZlbnRzLGRlbGV0 ZSBzLmhhbmRsZSxmLmlzRW1wdHlPYmplY3QocykmJmYucmVtb3ZlRGF0YShhLGIs ITApfX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdl RGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXt2YXIgaD1jLnR5cGV8 fGMsaT1bXSxqO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGo9 ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0 KCksaS5zb3J0KCkpO2lmKCEhZSYmIWYuZXZlbnQuY3VzdG9tRXZlbnRbaF18fCEh Zi5ldmVudC5nbG9iYWxbaF0pe2M9dHlwZW9mIGM9PSJvYmplY3QiP2NbZi5leHBh bmRvXT9jOm5ldyBmLkV2ZW50KGgsYyk6bmV3IGYuRXZlbnQoaCksYy50eXBlPWgs Yy5leGNsdXNpdmU9aixjLm5hbWVzcGFjZT1pLmpvaW4oIi4iKSxjLm5hbWVzcGFj ZV9yZT1uZXcgUmVnRXhwKCIoXnxcXC4pIitpLmpvaW4oIlxcLig/Oi4qXFwuKT8i KSsiKFxcLnwkKSIpO2lmKGd8fCFlKWMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQ cm9wYWdhdGlvbigpO2lmKCFlKXtmLmVhY2goZi5jYWNoZSxmdW5jdGlvbigpe3Zh ciBhPWYuZXhwYW5kbyxiPXRoaXNbYV07YiYmYi5ldmVudHMmJmIuZXZlbnRzW2hd JiZmLmV2ZW50LnRyaWdnZXIoYyxkLGIuaGFuZGxlLmVsZW0KKX0pO3JldHVybn1p ZihlLm5vZGVUeXBlPT09M3x8ZS5ub2RlVHlwZT09PTgpcmV0dXJuO2MucmVzdWx0 PWIsYy50YXJnZXQ9ZSxkPWQ/Zi5tYWtlQXJyYXkoZCk6W10sZC51bnNoaWZ0KGMp O3ZhciBrPWUsbD1oLmluZGV4T2YoIjoiKTwwPyJvbiIraDoiIjtkb3t2YXIgbT1m Ll9kYXRhKGssImhhbmRsZSIpO2MuY3VycmVudFRhcmdldD1rLG0mJm0uYXBwbHko ayxkKSxsJiZmLmFjY2VwdERhdGEoaykmJmtbbF0mJmtbbF0uYXBwbHkoayxkKT09 PSExJiYoYy5yZXN1bHQ9ITEsYy5wcmV2ZW50RGVmYXVsdCgpKSxrPWsucGFyZW50 Tm9kZXx8ay5vd25lckRvY3VtZW50fHxrPT09Yy50YXJnZXQub3duZXJEb2N1bWVu dCYmYX13aGlsZShrJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKTtpZighYy5p c0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIG4sbz1mLmV2ZW50LnNwZWNpYWxbaF18 fHt9O2lmKCghby5fZGVmYXVsdHx8by5fZGVmYXVsdC5jYWxsKGUub3duZXJEb2N1 bWVudCxjKT09PSExKSYmKGghPT0iY2xpY2sifHwhZi5ub2RlTmFtZShlLCJhIikp JiZmLmFjY2VwdERhdGEoZSkpe3RyeXtsJiZlW2hdJiYobj1lW2xdLG4mJihlW2xd PW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpKX1jYXRjaChwKXt9biYm KGVbbF09biksZi5ldmVudC50cmlnZ2VyZWQ9Yn19cmV0dXJuIGMucmVzdWx0fX0s aGFuZGxlOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFy IGQ9KChmLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYy50eXBlXXx8W10pLnNs aWNlKDApLGU9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsZz1BcnJheS5wcm90 b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7Z1swXT1jLGMuY3VycmVudFRh cmdldD10aGlzO2Zvcih2YXIgaD0wLGk9ZC5sZW5ndGg7aDxpO2grKyl7dmFyIGo9 ZFtoXTtpZihlfHxjLm5hbWVzcGFjZV9yZS50ZXN0KGoubmFtZXNwYWNlKSl7Yy5o YW5kbGVyPWouaGFuZGxlcixjLmRhdGE9ai5kYXRhLGMuaGFuZGxlT2JqPWo7dmFy IGs9ai5oYW5kbGVyLmFwcGx5KHRoaXMsZyk7ayE9PWImJihjLnJlc3VsdD1rLGs9 PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSk7 aWYoYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1 cm4gYy5yZXN1bHR9LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBi dWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50 WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBm cm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbGF5ZXJYIGxheWVyWSBtZXRhS2V5 IG5ld1ZhbHVlIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBwcmV2VmFsdWUg cmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRL ZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3 aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtmLmV4cGFuZG9d KXJldHVybiBhO3ZhciBkPWE7YT1mLkV2ZW50KGQpO2Zvcih2YXIgZT10aGlzLnBy b3BzLmxlbmd0aCxnO2U7KWc9dGhpcy5wcm9wc1stLWVdLGFbZ109ZFtnXTthLnRh cmdldHx8KGEudGFyZ2V0PWEuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5 cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksIWEucmVsYXRl ZFRhcmdldCYmYS5mcm9tRWxlbWVudCYmKGEucmVsYXRlZFRhcmdldD1hLmZyb21F bGVtZW50PT09YS50YXJnZXQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudCk7aWYo YS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXt2YXIgaD1hLnRhcmdldC5v d25lckRvY3VtZW50fHxjLGk9aC5kb2N1bWVudEVsZW1lbnQsaj1oLmJvZHk7YS5w YWdlWD1hLmNsaWVudFgrKGkmJmkuc2Nyb2xsTGVmdHx8aiYmai5zY3JvbGxMZWZ0 fHwwKS0oaSYmaS5jbGllbnRMZWZ0fHxqJiZqLmNsaWVudExlZnR8fDApLGEucGFn ZVk9YS5jbGllbnRZKyhpJiZpLnNjcm9sbFRvcHx8aiYmai5zY3JvbGxUb3B8fDAp LShpJiZpLmNsaWVudFRvcHx8aiYmai5jbGllbnRUb3B8fDApfWEud2hpY2g9PW51 bGwmJihhLmNoYXJDb2RlIT1udWxsfHxhLmtleUNvZGUhPW51bGwpJiYoYS53aGlj aD1hLmNoYXJDb2RlIT1udWxsP2EuY2hhckNvZGU6YS5rZXlDb2RlKSwhYS5tZXRh S2V5JiZhLmN0cmxLZXkmJihhLm1ldGFLZXk9YS5jdHJsS2V5KSwhYS53aGljaCYm YS5idXR0b24hPT1iJiYoYS53aGljaD1hLmJ1dHRvbiYxPzE6YS5idXR0b24mMj8z OmEuYnV0dG9uJjQ/MjowKTtyZXR1cm4gYX0sZ3VpZDoxZTgscHJveHk6Zi5wcm94 eSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHksdGVhcmRvd246Zi5u b29wfSxsaXZlOnthZGQ6ZnVuY3Rpb24oYSl7Zi5ldmVudC5hZGQodGhpcyxPKGEu b3JpZ1R5cGUsYS5zZWxlY3RvciksZi5leHRlbmQoe30sYSx7aGFuZGxlcjpOLGd1 aWQ6YS5oYW5kbGVyLmd1aWR9KSl9LHJlbW92ZTpmdW5jdGlvbihhKXtmLmV2ZW50 LnJlbW92ZSh0aGlzLE8oYS5vcmlnVHlwZSxhLnNlbGVjdG9yKSxhKX19LGJlZm9y ZXVubG9hZDp7c2V0dXA6ZnVuY3Rpb24oYSxiLGMpe2YuaXNXaW5kb3codGhpcykm Jih0aGlzLm9uYmVmb3JldW5sb2FkPWMpfSx0ZWFyZG93bjpmdW5jdGlvbihhLGIp e3RoaXMub25iZWZvcmV1bmxvYWQ9PT1iJiYodGhpcy5vbmJlZm9yZXVubG9hZD1u dWxsKX19fX0sZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVu Y3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVu dExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50 JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIp e2lmKCF0aGlzLnByZXZlbnREZWZhdWx0KXJldHVybiBuZXcgZi5FdmVudChhLGIp O2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlw ZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEu cmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2 ZW50RGVmYXVsdCgpP0Y6RSk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxi KSx0aGlzLnRpbWVTdGFtcD1mLm5vdygpLHRoaXNbZi5leHBhbmRvXT0hMH0sZi5F dmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5p c0RlZmF1bHRQcmV2ZW50ZWQ9Rjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8 fChhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZh bHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3Bh Z2F0aW9uU3RvcHBlZD1GO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDshYXx8KGEu c3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnVi YmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhp cy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1GLHRoaXMuc3RvcFByb3Bh Z2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRlZDpFLGlzUHJvcGFnYXRpb25TdG9w cGVkOkUsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6RX07dmFyIEc9ZnVu Y3Rpb24oYSl7dmFyIGI9YS5yZWxhdGVkVGFyZ2V0O2EudHlwZT1hLmRhdGE7dHJ5 e2lmKGImJmIhPT1jJiYhYi5wYXJlbnROb2RlKXJldHVybjt3aGlsZShiJiZiIT09 dGhpcyliPWIucGFyZW50Tm9kZTtiIT09dGhpcyYmZi5ldmVudC5oYW5kbGUuYXBw bHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGQpe319LEg9ZnVuY3Rpb24oYSl7YS50 eXBlPWEuZGF0YSxmLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 O2YuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3Vz ZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPXtzZXR1cDpm dW5jdGlvbihjKXtmLmV2ZW50LmFkZCh0aGlzLGIsYyYmYy5zZWxlY3Rvcj9IOkcs YSl9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe2YuZXZlbnQucmVtb3ZlKHRoaXMsYixh JiZhLnNlbGVjdG9yP0g6Ryl9fX0pLGYuc3VwcG9ydC5zdWJtaXRCdWJibGVzfHwo Zi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oYSxiKXtpZigh Zi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpZi5ldmVudC5hZGQodGhpcywiY2xpY2su c3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5 cGU7KGM9PT0ic3VibWl0Inx8Yz09PSJpbWFnZSIpJiZmKGIpLmNsb3Nlc3QoImZv cm0iKS5sZW5ndGgmJkwoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfSksZi5ldmVu dC5hZGQodGhpcywia2V5cHJlc3Muc3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7 dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7KGM9PT0idGV4dCJ8fGM9PT0icGFzc3dv cmQiKSYmZihiKS5jbG9zZXN0KCJmb3JtIikubGVuZ3RoJiZhLmtleUNvZGU9PT0x MyYmTCgic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KTtlbHNlIHJldHVybiExfSx0 ZWFyZG93bjpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lh bFN1Ym1pdCIpfX0pO2lmKCFmLnN1cHBvcnQuY2hhbmdlQnViYmxlcyl7dmFyIEks Sj1mdW5jdGlvbihhKXt2YXIgYj1hLnR5cGUsYz1hLnZhbHVlO2I9PT0icmFkaW8i fHxiPT09ImNoZWNrYm94Ij9jPWEuY2hlY2tlZDpiPT09InNlbGVjdC1tdWx0aXBs ZSI/Yz1hLnNlbGVjdGVkSW5kZXg+LTE/Zi5tYXAoYS5vcHRpb25zLGZ1bmN0aW9u KGEpe3JldHVybiBhLnNlbGVjdGVkfSkuam9pbigiLSIpOiIiOmYubm9kZU5hbWUo YSwic2VsZWN0IikmJihjPWEuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIGN9LEs9ZnVu Y3Rpb24oYyl7dmFyIGQ9Yy50YXJnZXQsZSxnO2lmKCEhei50ZXN0KGQubm9kZU5h bWUpJiYhZC5yZWFkT25seSl7ZT1mLl9kYXRhKGQsIl9jaGFuZ2VfZGF0YSIpLGc9 SihkKSwoYy50eXBlIT09ImZvY3Vzb3V0Inx8ZC50eXBlIT09InJhZGlvIikmJmYu X2RhdGEoZCwiX2NoYW5nZV9kYXRhIixnKTtpZihlPT09Ynx8Zz09PWUpcmV0dXJu O2lmKGUhPW51bGx8fGcpYy50eXBlPSJjaGFuZ2UiLGMubGl2ZUZpcmVkPWIsZi5l dmVudC50cmlnZ2VyKGMsYXJndW1lbnRzWzFdLGQpfX07Zi5ldmVudC5zcGVjaWFs LmNoYW5nZT17ZmlsdGVyczp7Zm9jdXNvdXQ6SyxiZWZvcmVkZWFjdGl2YXRlOkss Y2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1mLm5vZGVOYW1lKGIs ImlucHV0Iik/Yi50eXBlOiIiOyhjPT09InJhZGlvInx8Yz09PSJjaGVja2JveCJ8 fGYubm9kZU5hbWUoYiwic2VsZWN0IikpJiZLLmNhbGwodGhpcyxhKX0sa2V5ZG93 bjpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWYubm9kZU5hbWUoYiwiaW5w dXQiKT9iLnR5cGU6IiI7KGEua2V5Q29kZT09PTEzJiYhZi5ub2RlTmFtZShiLCJ0 ZXh0YXJlYSIpfHxhLmtleUNvZGU9PT0zMiYmKGM9PT0iY2hlY2tib3gifHxjPT09 InJhZGlvIil8fGM9PT0ic2VsZWN0LW11bHRpcGxlIikmJksuY2FsbCh0aGlzLGEp fSxiZWZvcmVhY3RpdmF0ZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtmLl9k YXRhKGIsIl9jaGFuZ2VfZGF0YSIsSihiKSl9fSxzZXR1cDpmdW5jdGlvbihhLGIp e2lmKHRoaXMudHlwZT09PSJmaWxlIilyZXR1cm4hMTtmb3IodmFyIGMgaW4gSSlm LmV2ZW50LmFkZCh0aGlzLGMrIi5zcGVjaWFsQ2hhbmdlIixJW2NdKTtyZXR1cm4g ei50ZXN0KHRoaXMubm9kZU5hbWUpfSx0ZWFyZG93bjpmdW5jdGlvbihhKXtmLmV2 ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbENoYW5nZSIpO3JldHVybiB6LnRlc3Qo dGhpcy5ub2RlTmFtZSl9fSxJPWYuZXZlbnQuc3BlY2lhbC5jaGFuZ2UuZmlsdGVy cyxJLmZvY3VzPUkuYmVmb3JlYWN0aXZhdGV9Zi5zdXBwb3J0LmZvY3VzaW5CdWJi bGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1 bmN0aW9uKGEsYil7ZnVuY3Rpb24gZShhKXt2YXIgYz1mLmV2ZW50LmZpeChhKTtj LnR5cGU9YixjLm9yaWdpbmFsRXZlbnQ9e30sZi5ldmVudC50cmlnZ2VyKGMsbnVs bCxjLnRhcmdldCksYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYS5wcmV2ZW50RGVm YXVsdCgpfXZhciBkPTA7Zi5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlv bigpe2QrKz09PTAmJmMuYWRkRXZlbnRMaXN0ZW5lcihhLGUsITApfSx0ZWFyZG93 bjpmdW5jdGlvbigpey0tZD09PTAmJmMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGUs ITApfX19KSxmLmVhY2goWyJiaW5kIiwib25lIl0sZnVuY3Rpb24oYSxjKXtmLmZu W2NdPWZ1bmN0aW9uKGEsZCxlKXt2YXIgZztpZih0eXBlb2YgYT09Im9iamVjdCIp e2Zvcih2YXIgaCBpbiBhKXRoaXNbY10oaCxkLGFbaF0sZSk7cmV0dXJuIHRoaXN9 aWYoYXJndW1lbnRzLmxlbmd0aD09PTJ8fGQ9PT0hMSllPWQsZD1iO2M9PT0ib25l Ij8oZz1mdW5jdGlvbihhKXtmKHRoaXMpLnVuYmluZChhLGcpO3JldHVybiBlLmFw cGx5KHRoaXMsYXJndW1lbnRzKX0sZy5ndWlkPWUuZ3VpZHx8Zi5ndWlkKyspOmc9 ZTtpZihhPT09InVubG9hZCImJmMhPT0ib25lIil0aGlzLm9uZShhLGQsZSk7ZWxz ZSBmb3IodmFyIGk9MCxqPXRoaXMubGVuZ3RoO2k8ajtpKyspZi5ldmVudC5hZGQo dGhpc1tpXSxhLGcsZCk7cmV0dXJuIHRoaXN9fSksZi5mbi5leHRlbmQoe3VuYmlu ZDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT0ib2JqZWN0IiYmIWEucHJldmVu dERlZmF1bHQpZm9yKHZhciBjIGluIGEpdGhpcy51bmJpbmQoYyxhW2NdKTtlbHNl IGZvcih2YXIgZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKylmLmV2ZW50LnJlbW92 ZSh0aGlzW2RdLGEsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEs YixjLGQpe3JldHVybiB0aGlzLmxpdmUoYixjLGQsYSl9LHVuZGVsZWdhdGU6ZnVu Y3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLnVu YmluZCgibGl2ZSIpOnRoaXMuZGllKGIsbnVsbCxjLGEpfSx0cmlnZ2VyOmZ1bmN0 aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQudHJp Z2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtp Zih0aGlzWzBdKXJldHVybiBmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXNbMF0sITAp fSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLGM9YS5ndWlkfHxm Lmd1aWQrKyxkPTAsZT1mdW5jdGlvbihjKXt2YXIgZT0oZi5kYXRhKHRoaXMsImxh c3RUb2dnbGUiK2EuZ3VpZCl8fDApJWQ7Zi5kYXRhKHRoaXMsImxhc3RUb2dnbGUi K2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBs eSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3Ro KWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0 aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8 fGEpfX0pO3ZhciBNPXtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQiLG1v dXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifTtmLmVh Y2goWyJsaXZlIiwiZGllIl0sZnVuY3Rpb24oYSxjKXtmLmZuW2NdPWZ1bmN0aW9u KGEsZCxlLGcpe3ZhciBoLGk9MCxqLGssbCxtPWd8fHRoaXMuc2VsZWN0b3Isbj1n P3RoaXM6Zih0aGlzLmNvbnRleHQpO2lmKHR5cGVvZiBhPT0ib2JqZWN0IiYmIWEu cHJldmVudERlZmF1bHQpe2Zvcih2YXIgbyBpbiBhKW5bY10obyxkLGFbb10sbSk7 cmV0dXJuIHRoaXN9aWYoYz09PSJkaWUiJiYhYSYmZyYmZy5jaGFyQXQoMCk9PT0i LiIpe24udW5iaW5kKGcpO3JldHVybiB0aGlzfWlmKGQ9PT0hMXx8Zi5pc0Z1bmN0 aW9uKGQpKWU9ZHx8RSxkPWI7YT0oYXx8IiIpLnNwbGl0KCIgIik7d2hpbGUoKGg9 YVtpKytdKSE9bnVsbCl7aj15LmV4ZWMoaCksaz0iIixqJiYoaz1qWzBdLGg9aC5y ZXBsYWNlKHksIiIpKTtpZihoPT09ImhvdmVyIil7YS5wdXNoKCJtb3VzZWVudGVy IitrLCJtb3VzZWxlYXZlIitrKTtjb250aW51ZX1sPWgsTVtoXT8oYS5wdXNoKE1b aF0rayksaD1oK2spOmg9KE1baF18fGgpK2s7aWYoYz09PSJsaXZlIilmb3IodmFy IHA9MCxxPW4ubGVuZ3RoO3A8cTtwKyspZi5ldmVudC5hZGQobltwXSwibGl2ZS4i K08oaCxtKSx7ZGF0YTpkLHNlbGVjdG9yOm0saGFuZGxlcjplLG9yaWdUeXBlOmgs b3JpZ0hhbmRsZXI6ZSxwcmVUeXBlOmx9KTtlbHNlIG4udW5iaW5kKCJsaXZlLiIr TyhoLG0pLGUpfXJldHVybiB0aGlzfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1 c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJs Y2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3Vz ZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQg a2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlv bihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVs bCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRo aXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCl9KSxmdW5j dGlvbigpe2Z1bmN0aW9uIHUoYSxiLGMsZCxlLGYpe2Zvcih2YXIgZz0wLGg9ZC5s ZW5ndGg7ZzxoO2crKyl7dmFyIGk9ZFtnXTtpZihpKXt2YXIgaj0hMTtpPWlbYV07 d2hpbGUoaSl7aWYoaS5zaXpjYWNoZT09PWMpe2o9ZFtpLnNpenNldF07YnJlYWt9 aWYoaS5ub2RlVHlwZT09PTEpe2Z8fChpLnNpemNhY2hlPWMsaS5zaXpzZXQ9Zyk7 aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihpPT09Yil7aj0hMDticmVha319ZWxz ZSBpZihrLmZpbHRlcihiLFtpXSkubGVuZ3RoPjApe2o9aTticmVha319aT1pW2Fd fWRbZ109an19fWZ1bmN0aW9uIHQoYSxiLGMsZCxlLGYpe2Zvcih2YXIgZz0wLGg9 ZC5sZW5ndGg7ZzxoO2crKyl7dmFyIGk9ZFtnXTtpZihpKXt2YXIgaj0hMTtpPWlb YV07d2hpbGUoaSl7aWYoaS5zaXpjYWNoZT09PWMpe2o9ZFtpLnNpenNldF07YnJl YWt9aS5ub2RlVHlwZT09PTEmJiFmJiYoaS5zaXpjYWNoZT1jLGkuc2l6c2V0PWcp O2lmKGkubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2o9aTticmVha31pPWlb YV19ZFtnXT1qfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStc KXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStc XXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8 XG4pKikvZyxkPTAsZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGc9ITEsaD0h MCxpPS9cXC9nLGo9L1xXLztbMCwwXS5zb3J0KGZ1bmN0aW9uKCl7aD0hMTtyZXR1 cm4gMH0pO3ZhciBrPWZ1bmN0aW9uKGIsZCxmLGcpe2Y9Znx8W10sZD1kfHxjO3Zh ciBoPWQ7aWYoZC5ub2RlVHlwZSE9PTEmJmQubm9kZVR5cGUhPT05KXJldHVybltd O2lmKCFifHx0eXBlb2YgYiE9InN0cmluZyIpcmV0dXJuIGY7dmFyIGksaixuLG8s cSxyLHMsdCx1PSEwLHc9ay5pc1hNTChkKSx4PVtdLHk9Yjtkb3thLmV4ZWMoIiIp LGk9YS5leGVjKHkpO2lmKGkpe3k9aVszXSx4LnB1c2goaVsxXSk7aWYoaVsyXSl7 bz1pWzNdO2JyZWFrfX19d2hpbGUoaSk7aWYoeC5sZW5ndGg+MSYmbS5leGVjKGIp KWlmKHgubGVuZ3RoPT09MiYmbC5yZWxhdGl2ZVt4WzBdXSlqPXYoeFswXSt4WzFd LGQpO2Vsc2V7aj1sLnJlbGF0aXZlW3hbMF1dP1tkXTprKHguc2hpZnQoKSxkKTt3 aGlsZSh4Lmxlbmd0aCliPXguc2hpZnQoKSxsLnJlbGF0aXZlW2JdJiYoYis9eC5z aGlmdCgpKSxqPXYoYixqKX1lbHNleyFnJiZ4Lmxlbmd0aD4xJiZkLm5vZGVUeXBl PT09OSYmIXcmJmwubWF0Y2guSUQudGVzdCh4WzBdKSYmIWwubWF0Y2guSUQudGVz dCh4W3gubGVuZ3RoLTFdKSYmKHE9ay5maW5kKHguc2hpZnQoKSxkLHcpLGQ9cS5l eHByP2suZmlsdGVyKHEuZXhwcixxLnNldClbMF06cS5zZXRbMF0pO2lmKGQpe3E9 Zz97ZXhwcjp4LnBvcCgpLHNldDpwKGcpfTprLmZpbmQoeC5wb3AoKSx4Lmxlbmd0 aD09PTEmJih4WzBdPT09In4ifHx4WzBdPT09IisiKSYmZC5wYXJlbnROb2RlP2Qu cGFyZW50Tm9kZTpkLHcpLGo9cS5leHByP2suZmlsdGVyKHEuZXhwcixxLnNldCk6 cS5zZXQseC5sZW5ndGg+MD9uPXAoaik6dT0hMTt3aGlsZSh4Lmxlbmd0aClyPXgu cG9wKCkscz1yLGwucmVsYXRpdmVbcl0/cz14LnBvcCgpOnI9IiIscz09bnVsbCYm KHM9ZCksbC5yZWxhdGl2ZVtyXShuLHMsdyl9ZWxzZSBuPXg9W119bnx8KG49aiks bnx8ay5lcnJvcihyfHxiKTtpZihlLmNhbGwobik9PT0iW29iamVjdCBBcnJheV0i KWlmKCF1KWYucHVzaC5hcHBseShmLG4pO2Vsc2UgaWYoZCYmZC5ub2RlVHlwZT09 PTEpZm9yKHQ9MDtuW3RdIT1udWxsO3QrKyluW3RdJiYoblt0XT09PSEwfHxuW3Rd Lm5vZGVUeXBlPT09MSYmay5jb250YWlucyhkLG5bdF0pKSYmZi5wdXNoKGpbdF0p O2Vsc2UgZm9yKHQ9MDtuW3RdIT1udWxsO3QrKyluW3RdJiZuW3RdLm5vZGVUeXBl PT09MSYmZi5wdXNoKGpbdF0pO2Vsc2UgcChuLGYpO28mJihrKG8saCxmLGcpLGsu dW5pcXVlU29ydChmKSk7cmV0dXJuIGZ9O2sudW5pcXVlU29ydD1mdW5jdGlvbihh KXtpZihyKXtnPWgsYS5zb3J0KHIpO2lmKGcpZm9yKHZhciBiPTE7YjxhLmxlbmd0 aDtiKyspYVtiXT09PWFbYi0xXSYmYS5zcGxpY2UoYi0tLDEpfXJldHVybiBhfSxr Lm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhLG51bGwsbnVsbCxiKX0s ay5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhiLG51bGws bnVsbCxbYV0pLmxlbmd0aD4wfSxrLmZpbmQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBk O2lmKCFhKXJldHVybltdO2Zvcih2YXIgZT0wLGY9bC5vcmRlci5sZW5ndGg7ZTxm O2UrKyl7dmFyIGcsaD1sLm9yZGVyW2VdO2lmKGc9bC5sZWZ0TWF0Y2hbaF0uZXhl YyhhKSl7dmFyIGo9Z1sxXTtnLnNwbGljZSgxLDEpO2lmKGouc3Vic3RyKGoubGVu Z3RoLTEpIT09IlxcIil7Z1sxXT0oZ1sxXXx8IiIpLnJlcGxhY2UoaSwiIiksZD1s LmZpbmRbaF0oZyxiLGMpO2lmKGQhPW51bGwpe2E9YS5yZXBsYWNlKGwubWF0Y2hb aF0sIiIpO2JyZWFrfX19fWR8fChkPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdO YW1lIT0idW5kZWZpbmVkIj9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6W10p O3JldHVybntzZXQ6ZCxleHByOmF9fSxrLmZpbHRlcj1mdW5jdGlvbihhLGMsZCxl KXt2YXIgZixnLGg9YSxpPVtdLGo9YyxtPWMmJmNbMF0mJmsuaXNYTUwoY1swXSk7 d2hpbGUoYSYmYy5sZW5ndGgpe2Zvcih2YXIgbiBpbiBsLmZpbHRlcilpZigoZj1s LmxlZnRNYXRjaFtuXS5leGVjKGEpKSE9bnVsbCYmZlsyXSl7dmFyIG8scCxxPWwu ZmlsdGVyW25dLHI9ZlsxXTtnPSExLGYuc3BsaWNlKDEsMSk7aWYoci5zdWJzdHIo ci5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO2o9PT1pJiYoaT1bXSk7aWYobC5w cmVGaWx0ZXJbbl0pe2Y9bC5wcmVGaWx0ZXJbbl0oZixqLGQsaSxlLG0pO2lmKCFm KWc9bz0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcih2YXIgcz0w OyhwPWpbc10pIT1udWxsO3MrKylpZihwKXtvPXEocCxmLHMsaik7dmFyIHQ9ZV4h IW87ZCYmbyE9bnVsbD90P2c9ITA6altzXT0hMTp0JiYoaS5wdXNoKHApLGc9ITAp fWlmKG8hPT1iKXtkfHwoaj1pKSxhPWEucmVwbGFjZShsLm1hdGNoW25dLCIiKTtp ZighZylyZXR1cm5bXTticmVha319aWYoYT09PWgpaWYoZz09bnVsbClrLmVycm9y KGEpO2Vsc2UgYnJlYWs7aD1hfXJldHVybiBqfSxrLmVycm9yPWZ1bmN0aW9uKGEp e3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr YX07dmFyIGw9ay5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0s bWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFT UzovXC4oKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLE5BTUU6L1xbbmFt ZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLEFU VFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxT Pz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1d fFxcLikqKXwpfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwt XXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86 XChccyooZXZlbnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/ OlsrXC1dXHMqXGQrKT8pKVxzKlwpKT8vLFBPUzovOihudGh8ZXF8Z3R8bHR8Zmly c3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLyxQU0VV RE86LzooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPyko KD86XChbXlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRjaDp7fSxh dHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sYXR0 ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUo ImhyZWYiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUo InR5cGUiKX19LHJlbGF0aXZlOnsiKyI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBl b2YgYj09InN0cmluZyIsZD1jJiYhai50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50 b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylp ZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlw ZSE9PTEpO2FbZl09ZXx8aCYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9o fHwhMTpoPT09Yn1lJiZrLmZpbHRlcihiLGEsITApfSwiPiI6ZnVuY3Rpb24oYSxi KXt2YXIgYyxkPXR5cGVvZiBiPT0ic3RyaW5nIixlPTAsZj1hLmxlbmd0aDtpZihk JiYhai50ZXN0KGIpKXtiPWIudG9Mb3dlckNhc2UoKTtmb3IoO2U8ZjtlKyspe2M9 YVtlXTtpZihjKXt2YXIgZz1jLnBhcmVudE5vZGU7YVtlXT1nLm5vZGVOYW1lLnRv TG93ZXJDYXNlKCk9PT1iP2c6ITF9fX1lbHNle2Zvcig7ZTxmO2UrKyljPWFbZV0s YyYmKGFbZV09ZD9jLnBhcmVudE5vZGU6Yy5wYXJlbnROb2RlPT09Yik7ZCYmay5m aWx0ZXIoYixhLCEwKX19LCIiOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmPWQrKyxn PXU7dHlwZW9mIGI9PSJzdHJpbmciJiYhai50ZXN0KGIpJiYoYj1iLnRvTG93ZXJD YXNlKCksZT1iLGc9dCksZygicGFyZW50Tm9kZSIsYixmLGEsZSxjKX0sIn4iOmZ1 bmN0aW9uKGEsYixjKXt2YXIgZSxmPWQrKyxnPXU7dHlwZW9mIGI9PSJzdHJpbmci JiYhai50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZT1iLGc9dCksZygicHJl dmlvdXNTaWJsaW5nIixiLGYsYSxlLGMpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oYSxi LGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWMp e3ZhciBkPWIuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGQmJmQucGFyZW50 Tm9kZT9bZF06W119fSxOQU1FOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0 RWxlbWVudHNCeU5hbWUhPSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxl bWVudHNCeU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsr KWRbZV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7 cmV0dXJuIGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtp Zih0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCIpcmV0 dXJuIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSl9fSxwcmVGaWx0ZXI6e0NM QVNTOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPSIgIithWzFdLnJlcGxhY2UoaSwi IikrIiAiO2lmKGYpcmV0dXJuIGE7Zm9yKHZhciBnPTAsaDsoaD1iW2ddKSE9bnVs bDtnKyspaCYmKGVeKGguY2xhc3NOYW1lJiYoIiAiK2guY2xhc3NOYW1lKyIgIiku cmVwbGFjZSgvW1x0XG5ccl0vZywiICIpLmluZGV4T2YoYSk+PTApP2N8fGQucHVz aChoKTpjJiYoYltnXT0hMSkpO3JldHVybiExfSxJRDpmdW5jdGlvbihhKXtyZXR1 cm4gYVsxXS5yZXBsYWNlKGksIiIpfSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g YVsxXS5yZXBsYWNlKGksIiIpLnRvTG93ZXJDYXNlKCl9LENISUxEOmZ1bmN0aW9u KGEpe2lmKGFbMV09PT0ibnRoIil7YVsyXXx8ay5lcnJvcihhWzBdKSxhWzJdPWFb Ml0ucmVwbGFjZSgvXlwrfFxzKi9nLCIiKTt2YXIgYj0vKC0/KShcZCopKD86bihb K1wtXT9cZCopKT8vLmV4ZWMoYVsyXT09PSJldmVuIiYmIjJuInx8YVsyXT09PSJv ZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoYVsyXSkmJiIwbisiK2FbMl18fGFbMl0p O2FbMl09YlsxXSsoYlsyXXx8MSktMCxhWzNdPWJbM10tMH1lbHNlIGFbMl0mJmsu ZXJyb3IoYVswXSk7YVswXT1kKys7cmV0dXJuIGF9LEFUVFI6ZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWFbMV09YVsxXS5yZXBsYWNlKGksIiIpOyFmJiZsLmF0 dHJNYXBbZ10mJihhWzFdPWwuYXR0ck1hcFtnXSksYVs0XT0oYVs0XXx8YVs1XXx8 IiIpLnJlcGxhY2UoaSwiIiksYVsyXT09PSJ+PSImJihhWzRdPSIgIithWzRdKyIg Iik7cmV0dXJuIGF9LFBTRVVETzpmdW5jdGlvbihiLGMsZCxlLGYpe2lmKGJbMV09 PT0ibm90IilpZigoYS5leGVjKGJbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRl c3QoYlszXSkpYlszXT1rKGJbM10sbnVsbCxudWxsLGMpO2Vsc2V7dmFyIGc9ay5m aWx0ZXIoYlszXSxjLGQsITBeZik7ZHx8ZS5wdXNoLmFwcGx5KGUsZyk7cmV0dXJu ITF9ZWxzZSBpZihsLm1hdGNoLlBPUy50ZXN0KGJbMF0pfHxsLm1hdGNoLkNISUxE LnRlc3QoYlswXSkpcmV0dXJuITA7cmV0dXJuIGJ9LFBPUzpmdW5jdGlvbihhKXth LnVuc2hpZnQoITApO3JldHVybiBhfX0sZmlsdGVyczp7ZW5hYmxlZDpmdW5jdGlv bihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExJiZhLnR5cGUhPT0iaGlkZGVuIn0s ZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hl Y2tlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5jaGVja2VkPT09ITB9LHNlbGVjdGVk OmZ1bmN0aW9uKGEpe2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVk SW5kZXg7cmV0dXJuIGEuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGEp e3JldHVybiEhYS5maXJzdENoaWxkfSxlbXB0eTpmdW5jdGlvbihhKXtyZXR1cm4h YS5maXJzdENoaWxkfSxoYXM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiEhayhjWzNd LGEpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybi9oXGQvaS50ZXN0 KGEubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0QXR0cmli dXRlKCJ0eXBlIiksYz1hLnR5cGU7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNh c2UoKT09PSJpbnB1dCImJiJ0ZXh0Ij09PWMmJihiPT09Y3x8Yj09PW51bGwpfSxy YWRpbzpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp PT09ImlucHV0IiYmInJhZGlvIj09PWEudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24o YSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJj aGVja2JveCI9PT1hLnR5cGV9LGZpbGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9k ZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJmaWxlIj09PWEudHlwZX0s cGFzc3dvcmQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNh c2UoKT09PSJpbnB1dCImJiJwYXNzd29yZCI9PT1hLnR5cGV9LHN1Ym1pdDpmdW5j dGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKGI9 PT0iaW5wdXQifHxiPT09ImJ1dHRvbiIpJiYic3VibWl0Ij09PWEudHlwZX0saW1h Z2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09 PSJpbnB1dCImJiJpbWFnZSI9PT1hLnR5cGV9LHJlc2V0OmZ1bmN0aW9uKGEpe3Zh ciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8 fGI9PT0iYnV0dG9uIikmJiJyZXNldCI9PT1hLnR5cGV9LGJ1dHRvbjpmdW5jdGlv bihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGI9PT0i aW5wdXQiJiYiYnV0dG9uIj09PWEudHlwZXx8Yj09PSJidXR0b24ifSxpbnB1dDpm dW5jdGlvbihhKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9p LnRlc3QoYS5ub2RlTmFtZSl9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09 YS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9fSxzZXRGaWx0ZXJzOntmaXJz dDpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09MH0sbGFzdDpmdW5jdGlvbihhLGIs YyxkKXtyZXR1cm4gYj09PWQubGVuZ3RoLTF9LGV2ZW46ZnVuY3Rpb24oYSxiKXty ZXR1cm4gYiUyPT09MH0sb2RkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTF9 LGx0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYjxjWzNdLTB9LGd0OmZ1bmN0aW9u KGEsYixjKXtyZXR1cm4gYj5jWzNdLTB9LG50aDpmdW5jdGlvbihhLGIsYyl7cmV0 dXJuIGNbM10tMD09PWJ9LGVxOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0w PT09Yn19LGZpbHRlcjp7UFNFVURPOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJb MV0sZj1sLmZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKTtpZihlPT09 ImNvbnRhaW5zIilyZXR1cm4oYS50ZXh0Q29udGVudHx8YS5pbm5lclRleHR8fGsu Z2V0VGV4dChbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIp e3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdb aF09PT1hKXJldHVybiExO3JldHVybiEwfWsuZXJyb3IoZSl9LENISUxEOmZ1bmN0 aW9uKGEsYil7dmFyIGM9YlsxXSxkPWE7c3dpdGNoKGMpe2Nhc2Uib25seSI6Y2Fz ZSJmaXJzdCI6d2hpbGUoZD1kLnByZXZpb3VzU2libGluZylpZihkLm5vZGVUeXBl PT09MSlyZXR1cm4hMTtpZihjPT09ImZpcnN0IilyZXR1cm4hMDtkPWE7Y2FzZSJs YXN0Ijp3aGlsZShkPWQubmV4dFNpYmxpbmcpaWYoZC5ub2RlVHlwZT09PTEpcmV0 dXJuITE7cmV0dXJuITA7Y2FzZSJudGgiOnZhciBlPWJbMl0sZj1iWzNdO2lmKGU9 PT0xJiZmPT09MClyZXR1cm4hMDt2YXIgZz1iWzBdLGg9YS5wYXJlbnROb2RlO2lm KGgmJihoLnNpemNhY2hlIT09Z3x8IWEubm9kZUluZGV4KSl7dmFyIGk9MDtmb3Io ZD1oLmZpcnN0Q2hpbGQ7ZDtkPWQubmV4dFNpYmxpbmcpZC5ub2RlVHlwZT09PTEm JihkLm5vZGVJbmRleD0rK2kpO2guc2l6Y2FjaGU9Z312YXIgaj1hLm5vZGVJbmRl eC1mO3JldHVybiBlPT09MD9qPT09MDpqJWU9PT0wJiZqL2U+PTB9fSxJRDpmdW5j dGlvbihhLGIpe3JldHVybiBhLm5vZGVUeXBlPT09MSYmYS5nZXRBdHRyaWJ1dGUo ImlkIik9PT1ifSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PSIqIiYmYS5u b2RlVHlwZT09PTF8fGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNT OmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0 cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rp b24oYSxiKXt2YXIgYz1iWzFdLGQ9bC5hdHRySGFuZGxlW2NdP2wuYXR0ckhhbmRs ZVtjXShhKTphW2NdIT1udWxsP2FbY106YS5nZXRBdHRyaWJ1dGUoYyksZT1kKyIi LGY9YlsyXSxnPWJbNF07cmV0dXJuIGQ9PW51bGw/Zj09PSIhPSI6Zj09PSI9Ij9l PT09ZzpmPT09Iio9Ij9lLmluZGV4T2YoZyk+PTA6Zj09PSJ+PSI/KCIgIitlKyIg IikuaW5kZXhPZihnKT49MDpnP2Y9PT0iIT0iP2UhPT1nOmY9PT0iXj0iP2UuaW5k ZXhPZihnKT09PTA6Zj09PSIkPSI/ZS5zdWJzdHIoZS5sZW5ndGgtZy5sZW5ndGgp PT09ZzpmPT09Inw9Ij9lPT09Z3x8ZS5zdWJzdHIoMCxnLmxlbmd0aCsxKT09PWcr Ii0iOiExOmUmJmQhPT0hMX0sUE9TOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJb Ml0sZj1sLnNldEZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKX19fSxt PWwubWF0Y2guUE9TLG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4iXFwiKyhiLTArMSl9 O2Zvcih2YXIgbyBpbiBsLm1hdGNoKWwubWF0Y2hbb109bmV3IFJlZ0V4cChsLm1h dGNoW29dLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2Up LGwubGVmdE1hdGNoW29dPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNv dXJjZStsLm1hdGNoW29dLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2csbikpO3Zh ciBwPWZ1bmN0aW9uKGEsYil7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh LDApO2lmKGIpe2IucHVzaC5hcHBseShiLGEpO3JldHVybiBifXJldHVybiBhfTt0 cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQu Y2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaChxKXtwPWZ1bmN0aW9uKGEs Yil7dmFyIGM9MCxkPWJ8fFtdO2lmKGUuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5 XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCxhKTtlbHNlIGlmKHR5cGVv ZiBhLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBmPWEubGVuZ3RoO2M8ZjtjKysp ZC5wdXNoKGFbY10pO2Vsc2UgZm9yKDthW2NdO2MrKylkLnB1c2goYVtjXSk7cmV0 dXJuIGR9fXZhciByLHM7Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50 UG9zaXRpb24/cj1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtnPSEwO3JldHVybiAw fWlmKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1l bnRQb3NpdGlvbilyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMTox O3JldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjQ/LTE6MX06KHI9 ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7Zz0hMDtyZXR1cm4gMH1pZihhLnNvdXJj ZUluZGV4JiZiLnNvdXJjZUluZGV4KXJldHVybiBhLnNvdXJjZUluZGV4LWIuc291 cmNlSW5kZXg7dmFyIGMsZCxlPVtdLGY9W10saD1hLnBhcmVudE5vZGUsaT1iLnBh cmVudE5vZGUsaj1oO2lmKGg9PT1pKXJldHVybiBzKGEsYik7aWYoIWgpcmV0dXJu LTE7aWYoIWkpcmV0dXJuIDE7d2hpbGUoaillLnVuc2hpZnQoaiksaj1qLnBhcmVu dE5vZGU7aj1pO3doaWxlKGopZi51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2M9 ZS5sZW5ndGgsZD1mLmxlbmd0aDtmb3IodmFyIGs9MDtrPGMmJms8ZDtrKyspaWYo ZVtrXSE9PWZba10pcmV0dXJuIHMoZVtrXSxmW2tdKTtyZXR1cm4gaz09PWM/cyhh LGZba10sLTEpOnMoZVtrXSxiLDEpfSxzPWZ1bmN0aW9uKGEsYixjKXtpZihhPT09 YilyZXR1cm4gYzt2YXIgZD1hLm5leHRTaWJsaW5nO3doaWxlKGQpe2lmKGQ9PT1i KXJldHVybi0xO2Q9ZC5uZXh0U2libGluZ31yZXR1cm4gMX0pLGsuZ2V0VGV4dD1m dW5jdGlvbihhKXt2YXIgYj0iIixjO2Zvcih2YXIgZD0wO2FbZF07ZCsrKWM9YVtk XSxjLm5vZGVUeXBlPT09M3x8Yy5ub2RlVHlwZT09PTQ/Yis9Yy5ub2RlVmFsdWU6 Yy5ub2RlVHlwZSE9PTgmJihiKz1rLmdldFRleHQoYy5jaGlsZE5vZGVzKSk7cmV0 dXJuIGJ9LGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxk PSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLGU9Yy5kb2N1bWVudEVsZW1l bnQ7YS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrZCsiJy8+IixlLmluc2VydEJlZm9y ZShhLGUuZmlyc3RDaGlsZCksYy5nZXRFbGVtZW50QnlJZChkKSYmKGwuZmluZC5J RD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPSJ1 bmRlZmluZWQiJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1 cm4gZT9lLmlkPT09YVsxXXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9InVu ZGVmaW5lZCImJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5ub2RlVmFsdWU9PT1h WzFdP1tlXTpiOltdfX0sbC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10 eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmYS5nZXRBdHRy aWJ1dGVOb2RlKCJpZCIpO3JldHVybiBhLm5vZGVUeXBlPT09MSYmYyYmYy5ub2Rl VmFsdWU9PT1ifSksZS5yZW1vdmVDaGlsZChhKSxlPWE9bnVsbH0oKSxmdW5jdGlv bigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5hcHBlbmRDaGlsZChj LmNyZWF0ZUNvbW1lbnQoIiIpKSxhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiku bGVuZ3RoPjAmJihsLmZpbmQuVEFHPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRF bGVtZW50c0J5VGFnTmFtZShhWzFdKTtpZihhWzFdPT09IioiKXt2YXIgZD1bXTtm b3IodmFyIGU9MDtjW2VdO2UrKyljW2VdLm5vZGVUeXBlPT09MSYmZC5wdXNoKGNb ZV0pO2M9ZH1yZXR1cm4gY30pLGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+ IixhLmZpcnN0Q2hpbGQmJnR5cGVvZiBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRl IT0idW5kZWZpbmVkIiYmYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIp IT09IiMiJiYobC5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEu Z2V0QXR0cmlidXRlKCJocmVmIiwyKX0pLGE9bnVsbH0oKSxjLnF1ZXJ5U2VsZWN0 b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGE9ayxiPWMuY3JlYXRlRWxlbWVudCgiZGl2 IiksZD0iX19zaXp6bGVfXyI7Yi5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48 L3A+IjtpZighYi5xdWVyeVNlbGVjdG9yQWxsfHxiLnF1ZXJ5U2VsZWN0b3JBbGwo Ii5URVNUIikubGVuZ3RoIT09MCl7az1mdW5jdGlvbihiLGUsZixnKXtlPWV8fGM7 aWYoIWcmJiFrLmlzWE1MKGUpKXt2YXIgaD0vXihcdyskKXxeXC4oW1x3XC1dKyQp fF4jKFtcd1wtXSskKS8uZXhlYyhiKTtpZihoJiYoZS5ub2RlVHlwZT09PTF8fGUu bm9kZVR5cGU9PT05KSl7aWYoaFsxXSlyZXR1cm4gcChlLmdldEVsZW1lbnRzQnlU YWdOYW1lKGIpLGYpO2lmKGhbMl0mJmwuZmluZC5DTEFTUyYmZS5nZXRFbGVtZW50 c0J5Q2xhc3NOYW1lKXJldHVybiBwKGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSho WzJdKSxmKX1pZihlLm5vZGVUeXBlPT09OSl7aWYoYj09PSJib2R5IiYmZS5ib2R5 KXJldHVybiBwKFtlLmJvZHldLGYpO2lmKGgmJmhbM10pe3ZhciBpPWUuZ2V0RWxl bWVudEJ5SWQoaFszXSk7aWYoIWl8fCFpLnBhcmVudE5vZGUpcmV0dXJuIHAoW10s Zik7aWYoaS5pZD09PWhbM10pcmV0dXJuIHAoW2ldLGYpfXRyeXtyZXR1cm4gcChl LnF1ZXJ5U2VsZWN0b3JBbGwoYiksZil9Y2F0Y2goail7fX1lbHNlIGlmKGUubm9k ZVR5cGU9PT0xJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ib2JqZWN0Iil7 dmFyIG09ZSxuPWUuZ2V0QXR0cmlidXRlKCJpZCIpLG89bnx8ZCxxPWUucGFyZW50 Tm9kZSxyPS9eXHMqWyt+XS8udGVzdChiKTtuP289by5yZXBsYWNlKC8nL2csIlxc JCYiKTplLnNldEF0dHJpYnV0ZSgiaWQiLG8pLHImJnEmJihlPWUucGFyZW50Tm9k ZSk7dHJ5e2lmKCFyfHxxKXJldHVybiBwKGUucXVlcnlTZWxlY3RvckFsbCgiW2lk PSciK28rIiddICIrYiksZil9Y2F0Y2gocyl7fWZpbmFsbHl7bnx8bS5yZW1vdmVB dHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gYShiLGUsZixnKX07Zm9yKHZhciBlIGlu IGEpa1tlXT1hW2VdO2I9bnVsbH19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmRvY3Vt ZW50RWxlbWVudCxiPWEubWF0Y2hlc1NlbGVjdG9yfHxhLm1vek1hdGNoZXNTZWxl Y3Rvcnx8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0 b3I7aWYoYil7dmFyIGQ9IWIuY2FsbChjLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCJk aXYiKSxlPSExO3RyeXtiLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQsIlt0ZXN0IT0n J106c2l6emxlIil9Y2F0Y2goZil7ZT0hMH1rLm1hdGNoZXNTZWxlY3Rvcj1mdW5j dGlvbihhLGMpe2M9Yy5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9nLCI9 JyQxJ10iKTtpZighay5pc1hNTChhKSl0cnl7aWYoZXx8IWwubWF0Y2guUFNFVURP LnRlc3QoYykmJiEvIT0vLnRlc3QoYykpe3ZhciBmPWIuY2FsbChhLGMpO2lmKGZ8 fCFkfHxhLmRvY3VtZW50JiZhLmRvY3VtZW50Lm5vZGVUeXBlIT09MTEpcmV0dXJu IGZ9fWNhdGNoKGcpe31yZXR1cm4gayhjLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4w fX19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Eu aW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9 J3Rlc3QnPjwvZGl2PiI7aWYoISFhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmEu Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCE9PTApe2EubGFzdENo aWxkLmNsYXNzTmFtZT0iZSI7aWYoYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJl IikubGVuZ3RoPT09MSlyZXR1cm47bC5vcmRlci5zcGxpY2UoMSwwLCJDTEFTUyIp LGwuZmluZC5DTEFTUz1mdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSE9InVuZGVmaW5lZCImJiFjKXJldHVybiBiLmdldEVs ZW1lbnRzQnlDbGFzc05hbWUoYVsxXSl9LGE9bnVsbH19KCksYy5kb2N1bWVudEVs ZW1lbnQuY29udGFpbnM/ay5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiBh IT09YiYmKGEuY29udGFpbnM/YS5jb250YWlucyhiKTohMCl9OmMuZG9jdW1lbnRF bGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2suY29udGFpbnM9ZnVuY3Rp b24oYSxiKXtyZXR1cm4hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2 KX06ay5jb250YWlucz1mdW5jdGlvbigpe3JldHVybiExfSxrLmlzWE1MPWZ1bmN0 aW9uKGEpe3ZhciBiPShhP2Eub3duZXJEb2N1bWVudHx8YTowKS5kb2N1bWVudEVs ZW1lbnQ7cmV0dXJuIGI/Yi5ub2RlTmFtZSE9PSJIVE1MIjohMX07dmFyIHY9ZnVu Y3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9IiIsZj1iLm5vZGVUeXBlP1tiXTpiO3do aWxlKGM9bC5tYXRjaC5QU0VVRE8uZXhlYyhhKSllKz1jWzBdLGE9YS5yZXBsYWNl KGwubWF0Y2guUFNFVURPLCIiKTthPWwucmVsYXRpdmVbYV0/YSsiKiI6YTtmb3Io dmFyIGc9MCxoPWYubGVuZ3RoO2c8aDtnKyspayhhLGZbZ10sZCk7cmV0dXJuIGsu ZmlsdGVyKGUsZCl9O2YuZmluZD1rLGYuZXhwcj1rLnNlbGVjdG9ycyxmLmV4cHJb IjoiXT1mLmV4cHIuZmlsdGVycyxmLnVuaXF1ZT1rLnVuaXF1ZVNvcnQsZi50ZXh0 PWsuZ2V0VGV4dCxmLmlzWE1MRG9jPWsuaXNYTUwsZi5jb250YWlucz1rLmNvbnRh aW5zfSgpO3ZhciBQPS9VbnRpbCQvLFE9L14oPzpwYXJlbnRzfHByZXZVbnRpbHxw cmV2QWxsKS8sUj0vLC8sUz0vXi5bXjojXFtcLixdKiQvLFQ9QXJyYXkucHJvdG90 eXBlLnNsaWNlLFU9Zi5leHByLm1hdGNoLlBPUyxWPXtjaGlsZHJlbjohMCxjb250 ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2YuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0 aW9uKGEpe3ZhciBiPXRoaXMsYyxkO2lmKHR5cGVvZiBhIT0ic3RyaW5nIilyZXR1 cm4gZihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYz0wLGQ9Yi5sZW5ndGg7Yzxk O2MrKylpZihmLmNvbnRhaW5zKGJbY10sdGhpcykpcmV0dXJuITB9KTt2YXIgZT10 aGlzLnB1c2hTdGFjaygiIiwiZmluZCIsYSksZyxoLGk7Zm9yKGM9MCxkPXRoaXMu bGVuZ3RoO2M8ZDtjKyspe2c9ZS5sZW5ndGgsZi5maW5kKGEsdGhpc1tjXSxlKTtp ZihjPjApZm9yKGg9ZztoPGUubGVuZ3RoO2grKylmb3IoaT0wO2k8ZztpKyspaWYo ZVtpXT09PWVbaF0pe2Uuc3BsaWNlKGgtLSwxKTticmVha319cmV0dXJuIGV9LGhh czpmdW5jdGlvbihhKXt2YXIgYj1mKGEpO3JldHVybiB0aGlzLmZpbHRlcihmdW5j dGlvbigpe2Zvcih2YXIgYT0wLGM9Yi5sZW5ndGg7YTxjO2ErKylpZihmLmNvbnRh aW5zKHRoaXMsYlthXSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGEpe3JldHVy biB0aGlzLnB1c2hTdGFjayhYKHRoaXMsYSwhMSksIm5vdCIsYSl9LGZpbHRlcjpm dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soWCh0aGlzLGEsITApLCJm aWx0ZXIiLGEpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWEmJih0eXBlb2YgYT09 InN0cmluZyI/Zi5maWx0ZXIoYSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihh KS5sZW5ndGg+MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGUs Zz10aGlzWzBdO2lmKGYuaXNBcnJheShhKSl7dmFyIGgsaSxqPXt9LGs9MTtpZihn JiZhLmxlbmd0aCl7Zm9yKGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspaT1hW2RdLGpb aV18fChqW2ldPVUudGVzdChpKT9mKGksYnx8dGhpcy5jb250ZXh0KTppKTt3aGls ZShnJiZnLm93bmVyRG9jdW1lbnQmJmchPT1iKXtmb3IoaSBpbiBqKWg9altpXSwo aC5qcXVlcnk/aC5pbmRleChnKT4tMTpmKGcpLmlzKGgpKSYmYy5wdXNoKHtzZWxl Y3RvcjppLGVsZW06ZyxsZXZlbDprfSk7Zz1nLnBhcmVudE5vZGUsaysrfX1yZXR1 cm4gY312YXIgbD1VLnRlc3QoYSl8fHR5cGVvZiBhIT0ic3RyaW5nIj9mKGEsYnx8 dGhpcy5jb250ZXh0KTowO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtn PXRoaXNbZF07d2hpbGUoZyl7aWYobD9sLmluZGV4KGcpPi0xOmYuZmluZC5tYXRj aGVzU2VsZWN0b3IoZyxhKSl7Yy5wdXNoKGcpO2JyZWFrfWc9Zy5wYXJlbnROb2Rl O2lmKCFnfHwhZy5vd25lckRvY3VtZW50fHxnPT09Ynx8Zy5ub2RlVHlwZT09PTEx KWJyZWFrfX1jPWMubGVuZ3RoPjE/Zi51bmlxdWUoYyk6YztyZXR1cm4gdGhpcy5w dXNoU3RhY2soYywiY2xvc2VzdCIsYSl9LGluZGV4OmZ1bmN0aW9uKGEpe2lmKCFh fHx0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGYuaW5BcnJheSh0aGlzWzBdLGE/ ZihhKTp0aGlzLnBhcmVudCgpLmNoaWxkcmVuKCkpO3JldHVybiBmLmluQXJyYXko YS5qcXVlcnk/YVswXTphLHRoaXMpfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10 eXBlb2YgYT09InN0cmluZyI/ZihhLGIpOmYubWFrZUFycmF5KGEmJmEubm9kZVR5 cGU/W2FdOmEpLGQ9Zi5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVybiB0aGlzLnB1 c2hTdGFjayhXKGNbMF0pfHxXKGRbMF0pP2Q6Zi51bmlxdWUoZCkpfSxhbmRTZWxm OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVjdCl9fSks Zi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3Jl dHVybiBiJiZiLm5vZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9u KGEpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpm dW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiLGMpfSxu ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsIm5leHRTaWJsaW5nIil9 LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubnRoKGEsMiwicHJldmlvdXNTaWJs aW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsIm5leHRT aWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInBy ZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVy biBmLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihh LGIsYyl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxp bmdzOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5wYXJlbnROb2RlLmZp cnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxp bmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYu bm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVu dFdpbmRvdy5kb2N1bWVudDpmLm1ha2VBcnJheShhLmNoaWxkTm9kZXMpfX0sZnVu Y3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9Zi5tYXAodGhp cyxiLGMpLGc9VC5jYWxsKGFyZ3VtZW50cyk7UC50ZXN0KGEpfHwoZD1jKSxkJiZ0 eXBlb2YgZD09InN0cmluZyImJihlPWYuZmlsdGVyKGQsZSkpLGU9dGhpcy5sZW5n dGg+MSYmIVZbYV0/Zi51bmlxdWUoZSk6ZSwodGhpcy5sZW5ndGg+MXx8Ui50ZXN0 KGQpKSYmUS50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSk7cmV0dXJuIHRoaXMucHVz aFN0YWNrKGUsYSxnLmpvaW4oIiwiKSl9fSksZi5leHRlbmQoe2ZpbHRlcjpmdW5j dGlvbihhLGIsYyl7YyYmKGE9Ijpub3QoIithKyIpIik7cmV0dXJuIGIubGVuZ3Ro PT09MT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOmYu ZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10s Zz1hW2NdO3doaWxlKGcmJmcubm9kZVR5cGUhPT05JiYoZD09PWJ8fGcubm9kZVR5 cGUhPT0xfHwhZihnKS5pcyhkKSkpZy5ub2RlVHlwZT09PTEmJmUucHVzaChnKSxn PWdbY107cmV0dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFy IGU9MDtmb3IoO2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJy ZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9y KDthO2E9YS5uZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVz aChhKTtyZXR1cm4gY319KTt2YXIgWT0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwp Ii9nLFo9L15ccysvLCQ9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5w dXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxfPS88KFtc dzpdKykvLGJhPS88dGJvZHkvaSxiYj0vPHwmIz9cdys7LyxiYz0vPCg/OnNjcmlw dHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLGJkPS9jaGVja2VkXHMqKD86 W149XXw9XHMqLmNoZWNrZWQuKS9pLGJlPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ks YmY9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmc9e29wdGlvbjpbMSwiPHNl bGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpb MSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4i LCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90 YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5 PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdy b3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwv bWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07Ymcub3B0Z3JvdXA9Ymcub3B0aW9u LGJnLnRib2R5PWJnLnRmb290PWJnLmNvbGdyb3VwPWJnLmNhcHRpb249YmcudGhl YWQsYmcudGg9YmcudGQsZi5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fChiZy5fZGVm YXVsdD1bMSwiZGl2PGRpdj4iLCI8L2Rpdj4iXSksZi5mbi5leHRlbmQoe3RleHQ6 ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLnRleHQoYS5jYWxsKHRoaXMsYixj LnRleHQoKSkpfSk7aWYodHlwZW9mIGEhPSJvYmplY3QiJiZhIT09YilyZXR1cm4g dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3Vt ZW50fHxjKS5jcmVhdGVUZXh0Tm9kZShhKSk7cmV0dXJuIGYudGV4dCh0aGlzKX0s d3JhcEFsbDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMs YikpfSk7aWYodGhpc1swXSl7dmFyIGI9ZihhLHRoaXNbMF0ub3duZXJEb2N1bWVu dCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRC ZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxl KGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09MSlhPWEuZmly c3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3Jh cElubmVyOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhp cy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlz LGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMp LGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChh KX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o KXtmKHRoaXMpLndyYXBBbGwoYSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Yubm9kZU5hbWUodGhpcywi Ym9keSIpfHxmKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5l bmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJn dW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFw cGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5k b21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09 PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZv cmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0 dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMu cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5s ZW5ndGgpe3ZhciBhPWYoYXJndW1lbnRzWzBdKTthLnB1c2guYXBwbHkoYSx0aGlz LnRvQXJyYXkoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsImJlZm9yZSIsYXJn dW1lbnRzKX19LGFmdGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5w YXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5j dGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0 U2libGluZyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT10aGlzLnB1c2hT dGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmKGFy Z3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlv bihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFh fHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYu Y2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRh dGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo ZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjso Yj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0 YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGls ZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25l OmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1 cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9 KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhp c1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShZLCIi KTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJjLnRlc3QoYSkmJihmLnN1 cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFaLnRlc3QoYSkpJiYhYmdbKF8uZXhl YyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKCQs IjwkMT48LyQyPiIpO3RyeXtmb3IodmFyIGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtj KyspdGhpc1tjXS5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YSh0aGlzW2NdLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLHRoaXNbY10uaW5uZXJIVE1MPWEpfWNh dGNoKGUpe3RoaXMuZW1wdHkoKS5hcHBlbmQoYSl9fWVsc2UgZi5pc0Z1bmN0aW9u KGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MuaHRtbChh LmNhbGwodGhpcyxiLGMuaHRtbCgpKSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKGEp O3JldHVybiB0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBd JiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4g dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyksZD1jLmh0bWwoKTtj LnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZCkpfSk7dHlwZW9mIGEhPSJzdHJp bmciJiYoYT1mKGEpLmRldGFjaCgpKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u KCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxjPXRoaXMucGFyZW50Tm9kZTtmKHRo aXMpLnJlbW92ZSgpLGI/ZihiKS5iZWZvcmUoYSk6ZihjKS5hcHBlbmQoYSl9KX1y ZXR1cm4gdGhpcy5sZW5ndGg/dGhpcy5wdXNoU3RhY2soZihmLmlzRnVuY3Rpb24o YSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIsYSk6dGhpc30sZGV0YWNoOmZ1bmN0aW9u KGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24o YSxjLGQpe3ZhciBlLGcsaCxpLGo9YVswXSxrPVtdO2lmKCFmLnN1cHBvcnQuY2hl Y2tDbG9uZSYmYXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBqPT0ic3RyaW5n IiYmYmQudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zih0aGlz KS5kb21NYW5pcChhLGMsZCwhMCl9KTtpZihmLmlzRnVuY3Rpb24oaikpcmV0dXJu IHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZz1mKHRoaXMpO2FbMF09ai5jYWxs KHRoaXMsZSxjP2cuaHRtbCgpOmIpLGcuZG9tTWFuaXAoYSxjLGQpfSk7aWYodGhp c1swXSl7aT1qJiZqLnBhcmVudE5vZGUsZi5zdXBwb3J0LnBhcmVudE5vZGUmJmkm Jmkubm9kZVR5cGU9PT0xMSYmaS5jaGlsZE5vZGVzLmxlbmd0aD09PXRoaXMubGVu Z3RoP2U9e2ZyYWdtZW50Oml9OmU9Zi5idWlsZEZyYWdtZW50KGEsdGhpcyxrKSxo PWUuZnJhZ21lbnQsaC5jaGlsZE5vZGVzLmxlbmd0aD09PTE/Zz1oPWguZmlyc3RD aGlsZDpnPWguZmlyc3RDaGlsZDtpZihnKXtjPWMmJmYubm9kZU5hbWUoZywidHIi KTtmb3IodmFyIGw9MCxtPXRoaXMubGVuZ3RoLG49bS0xO2w8bTtsKyspZC5jYWxs KGM/YmgodGhpc1tsXSxnKTp0aGlzW2xdLGUuY2FjaGVhYmxlfHxtPjEmJmw8bj9m LmNsb25lKGgsITAsITApOmgpfWsubGVuZ3RoJiZmLmVhY2goayxibil9cmV0dXJu IHRoaXN9fSksZi5idWlsZEZyYWdtZW50PWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxn LGgsaT1iJiZiWzBdP2JbMF0ub3duZXJEb2N1bWVudHx8YlswXTpjO2EubGVuZ3Ro PT09MSYmdHlwZW9mIGFbMF09PSJzdHJpbmciJiZhWzBdLmxlbmd0aDw1MTImJmk9 PT1jJiZhWzBdLmNoYXJBdCgwKT09PSI8IiYmIWJjLnRlc3QoYVswXSkmJihmLnN1 cHBvcnQuY2hlY2tDbG9uZXx8IWJkLnRlc3QoYVswXSkpJiYoZz0hMCxoPWYuZnJh Z21lbnRzW2FbMF1dLGgmJmghPT0xJiYoZT1oKSksZXx8KGU9aS5jcmVhdGVEb2N1 bWVudEZyYWdtZW50KCksZi5jbGVhbihhLGksZSxkKSksZyYmKGYuZnJhZ21lbnRz W2FbMF1dPWg/ZToxKTtyZXR1cm57ZnJhZ21lbnQ6ZSxjYWNoZWFibGU6Z319LGYu ZnJhZ21lbnRzPXt9LGYuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRv OiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFm dGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7Zi5m blthXT1mdW5jdGlvbihjKXt2YXIgZD1bXSxlPWYoYyksZz10aGlzLmxlbmd0aD09 PTEmJnRoaXNbMF0ucGFyZW50Tm9kZTtpZihnJiZnLm5vZGVUeXBlPT09MTEmJmcu Y2hpbGROb2Rlcy5sZW5ndGg9PT0xJiZlLmxlbmd0aD09PTEpe2VbYl0odGhpc1sw XSk7cmV0dXJuIHRoaXN9Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2 YXIgaj0oaD4wP3RoaXMuY2xvbmUoITApOnRoaXMpLmdldCgpO2YoZVtoXSlbYl0o aiksZD1kLmNvbmNhdChqKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soZCxhLGUuc2Vs ZWN0b3IpfX0pLGYuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9 YS5jbG9uZU5vZGUoITApLGUsZyxoO2lmKCghZi5zdXBwb3J0Lm5vQ2xvbmVFdmVu dHx8IWYuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCkmJihhLm5vZGVUeXBlPT09MXx8 YS5ub2RlVHlwZT09PTExKSYmIWYuaXNYTUxEb2MoYSkpe2JqKGEsZCksZT1iayhh KSxnPWJrKGQpO2ZvcihoPTA7ZVtoXTsrK2gpYmooZVtoXSxnW2hdKX1pZihiKXti aShhLGQpO2lmKGMpe2U9YmsoYSksZz1iayhkKTtmb3IoaD0wO2VbaF07KytoKWJp KGVbaF0sZ1toXSl9fXJldHVybiBkfSxjbGVhbjpmdW5jdGlvbihhLGIsZCxlKXt2 YXIgZztiPWJ8fGMsdHlwZW9mIGIuY3JlYXRlRWxlbWVudD09InVuZGVmaW5lZCIm JihiPWIub3duZXJEb2N1bWVudHx8CmJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8 Yyk7dmFyIGg9W10saTtmb3IodmFyIGo9MCxrOyhrPWFbal0pIT1udWxsO2orKyl7 dHlwZW9mIGs9PSJudW1iZXIiJiYoays9IiIpO2lmKCFrKWNvbnRpbnVlO2lmKHR5 cGVvZiBrPT0ic3RyaW5nIilpZighYmIudGVzdChrKSlrPWIuY3JlYXRlVGV4dE5v ZGUoayk7ZWxzZXtrPWsucmVwbGFjZSgkLCI8JDE+PC8kMj4iKTt2YXIgbD0oXy5l eGVjKGspfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLG09YmdbbF18fGJnLl9k ZWZhdWx0LG49bVswXSxvPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5pbm5lckhU TUw9bVsxXStrK21bMl07d2hpbGUobi0tKW89by5sYXN0Q2hpbGQ7aWYoIWYuc3Vw cG9ydC50Ym9keSl7dmFyIHA9YmEudGVzdChrKSxxPWw9PT0idGFibGUiJiYhcD9v LmZpcnN0Q2hpbGQmJm8uZmlyc3RDaGlsZC5jaGlsZE5vZGVzOm1bMV09PT0iPHRh YmxlPiImJiFwP28uY2hpbGROb2RlczpbXTtmb3IoaT1xLmxlbmd0aC0xO2k+PTA7 LS1pKWYubm9kZU5hbWUocVtpXSwidGJvZHkiKSYmIXFbaV0uY2hpbGROb2Rlcy5s ZW5ndGgmJnFbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChxW2ldKX0hZi5zdXBw b3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZaLnRlc3QoaykmJm8uaW5zZXJ0QmVmb3Jl KGIuY3JlYXRlVGV4dE5vZGUoWi5leGVjKGspWzBdKSxvLmZpcnN0Q2hpbGQpLGs9 by5jaGlsZE5vZGVzfXZhciByO2lmKCFmLnN1cHBvcnQuYXBwZW5kQ2hlY2tlZClp ZihrWzBdJiZ0eXBlb2YgKHI9ay5sZW5ndGgpPT0ibnVtYmVyIilmb3IoaT0wO2k8 cjtpKyspYm0oa1tpXSk7ZWxzZSBibShrKTtrLm5vZGVUeXBlP2gucHVzaChrKTpo PWYubWVyZ2UoaCxrKX1pZihkKXtnPWZ1bmN0aW9uKGEpe3JldHVybiFhLnR5cGV8 fGJlLnRlc3QoYS50eXBlKX07Zm9yKGo9MDtoW2pdO2orKylpZihlJiZmLm5vZGVO YW1lKGhbal0sInNjcmlwdCIpJiYoIWhbal0udHlwZXx8aFtqXS50eXBlLnRvTG93 ZXJDYXNlKCk9PT0idGV4dC9qYXZhc2NyaXB0IikpZS5wdXNoKGhbal0ucGFyZW50 Tm9kZT9oW2pdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaFtqXSk6aFtqXSk7ZWxz ZXtpZihoW2pdLm5vZGVUeXBlPT09MSl7dmFyIHM9Zi5ncmVwKGhbal0uZ2V0RWxl bWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGcpO2guc3BsaWNlLmFwcGx5KGgsW2or MSwwXS5jb25jYXQocykpfWQuYXBwZW5kQ2hpbGQoaFtqXSl9fXJldHVybiBofSxj bGVhbkRhdGE6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPWYuY2FjaGUsZT1mLmV4cGFu ZG8sZz1mLmV2ZW50LnNwZWNpYWwsaD1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kbztm b3IodmFyIGk9MCxqOyhqPWFbaV0pIT1udWxsO2krKyl7aWYoai5ub2RlTmFtZSYm Zi5ub0RhdGFbai5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSljb250aW51ZTtjPWpb Zi5leHBhbmRvXTtpZihjKXtiPWRbY10mJmRbY11bZV07aWYoYiYmYi5ldmVudHMp e2Zvcih2YXIgayBpbiBiLmV2ZW50cylnW2tdP2YuZXZlbnQucmVtb3ZlKGosayk6 Zi5yZW1vdmVFdmVudChqLGssYi5oYW5kbGUpO2IuaGFuZGxlJiYoYi5oYW5kbGUu ZWxlbT1udWxsKX1oP2RlbGV0ZSBqW2YuZXhwYW5kb106ai5yZW1vdmVBdHRyaWJ1 dGUmJmoucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyksZGVsZXRlIGRbY119fX19 KTt2YXIgYm89L2FscGhhXChbXildKlwpL2ksYnA9L29wYWNpdHk9KFteKV0qKS8s YnE9Ly0oW2Etel0pL2lnLGJyPS8oW0EtWl18Xm1zKS9nLGJzPS9eLT9cZCsoPzpw eCk/JC9pLGJ0PS9eLT9cZC8sYnU9L15bK1wtXT0vLGJ2PS9bXitcLVwuXGRlXSsv Zyxidz17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRp c3BsYXk6ImJsb2NrIn0sYng9WyJMZWZ0IiwiUmlnaHQiXSxieT1bIlRvcCIsIkJv dHRvbSJdLGJ6LGJBLGJCLGJDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBl ckNhc2UoKX07Zi5mbi5jc3M9ZnVuY3Rpb24oYSxjKXtpZihhcmd1bWVudHMubGVu Z3RoPT09MiYmYz09PWIpcmV0dXJuIHRoaXM7cmV0dXJuIGYuYWNjZXNzKHRoaXMs YSxjLCEwLGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZCE9PWI/Zi5zdHlsZShhLGMs ZCk6Zi5jc3MoYSxjKX0pfSxmLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dl dDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPWJ6KGEsIm9wYWNpdHkiLCJvcGFj aXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y31yZXR1cm4gYS5zdHlsZS5vcGFjaXR5 fX19LGNzc051bWJlcjp7ekluZGV4OiEwLGZvbnRXZWlnaHQ6ITAsb3BhY2l0eToh MCx6b29tOiEwLGxpbmVIZWlnaHQ6ITAsd2lkb3dzOiEwLG9ycGhhbnM6ITB9LGNz c1Byb3BzOnsiZmxvYXQiOmYuc3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJz dHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFhJiZhLm5v ZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgmJiEhYS5zdHlsZSl7dmFyIGcsaCxp PWYuY2FtZWxDYXNlKGMpLGo9YS5zdHlsZSxrPWYuY3NzSG9va3NbaV07Yz1mLmNz c1Byb3BzW2ldfHxpO2lmKGQ9PT1iKXtpZihrJiYiZ2V0ImluIGsmJihnPWsuZ2V0 KGEsITEsZSkpIT09YilyZXR1cm4gZztyZXR1cm4galtjXX1oPXR5cGVvZiBkO2lm KGg9PT0ibnVtYmVyIiYmaXNOYU4oZCl8fGQ9PW51bGwpcmV0dXJuO2g9PT0ic3Ry aW5nIiYmYnUudGVzdChkKSYmKGQ9K2QucmVwbGFjZShidiwiIikrcGFyc2VGbG9h dChmLmNzcyhhLGMpKSksaD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihk Kz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIp dHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIg ZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9w c1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJp biBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYnopcmV0dXJu IGJ6KGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIg ZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEp O2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfSxjYW1lbENhc2U6ZnVuY3Rpb24o YSl7cmV0dXJuIGEucmVwbGFjZShicSxiQyl9fSksZi5jdXJDU1M9Zi5jc3MsZi5l YWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe2YuY3NzSG9va3Nb Yl09e2dldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU7aWYoYyl7YS5vZmZzZXRXaWR0 aCE9PTA/ZT1iRChhLGIsZCk6Zi5zd2FwKGEsYncsZnVuY3Rpb24oKXtlPWJEKGEs YixkKX0pO2lmKGU8PTApe2U9YnooYSxiLGIpLGU9PT0iMHB4IiYmYkImJihlPWJC KGEsYixiKSk7aWYoZSE9bnVsbClyZXR1cm4gZT09PSIifHxlPT09ImF1dG8iPyIw cHgiOmV9aWYoZTwwfHxlPT1udWxsKXtlPWEuc3R5bGVbYl07cmV0dXJuIGU9PT0i Inx8ZT09PSJhdXRvIj8iMHB4IjplfXJldHVybiB0eXBlb2YgZT09InN0cmluZyI/ ZTplKyJweCJ9fSxzZXQ6ZnVuY3Rpb24oYSxiKXtpZighYnMudGVzdChiKSlyZXR1 cm4gYjtiPXBhcnNlRmxvYXQoYik7aWYoYj49MClyZXR1cm4gYisicHgifX19KSxm LnN1cHBvcnQub3BhY2l0eXx8KGYuY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0 aW9uKGEsYil7cmV0dXJuIGJwLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3Vy cmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT9wYXJzZUZsb2F0 KFJlZ0V4cC4kMSkvMTAwKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2 YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5bGU7Yy56b29tPTE7dmFyIGU9Zi5p c05hTihiKT8iIjoiYWxwaGEob3BhY2l0eT0iK2IqMTAwKyIpIixnPWQmJmQuZmls dGVyfHxjLmZpbHRlcnx8IiI7Yy5maWx0ZXI9Ym8udGVzdChnKT9nLnJlcGxhY2Uo Ym8sZSk6ZysiICIrZX19KSxmKGZ1bmN0aW9uKCl7Zi5zdXBwb3J0LnJlbGlhYmxl TWFyZ2luUmlnaHR8fChmLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rp b24oYSxiKXt2YXIgYztmLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0s ZnVuY3Rpb24oKXtiP2M9YnooYSwibWFyZ2luLXJpZ2h0IiwibWFyZ2luUmlnaHQi KTpjPWEuc3R5bGUubWFyZ2luUmlnaHR9KTtyZXR1cm4gY319KX0pLGMuZGVmYXVs dFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGJBPWZ1bmN0 aW9uKGEsYyl7dmFyIGQsZSxnO2M9Yy5yZXBsYWNlKGJyLCItJDEiKS50b0xvd2Vy Q2FzZSgpO2lmKCEoZT1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKXJldHVy biBiO2lmKGc9ZS5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpZD1nLmdldFByb3Bl cnR5VmFsdWUoYyksZD09PSIiJiYhZi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LGEpJiYoZD1mLnN0eWxlKGEsYykpO3JldHVybiBkfSks Yy5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoYkI9ZnVuY3Rpb24oYSxi KXt2YXIgYyxkPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxlPWEu cnVudGltZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZVtiXSxmPWEuc3R5bGU7IWJzLnRl c3QoZCkmJmJ0LnRlc3QoZCkmJihjPWYubGVmdCxlJiYoYS5ydW50aW1lU3R5bGUu bGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxmLmxlZnQ9Yj09PSJmb250U2l6ZSI/ IjFlbSI6ZHx8MCxkPWYucGl4ZWxMZWZ0KyJweCIsZi5sZWZ0PWMsZSYmKGEucnVu dGltZVN0eWxlLmxlZnQ9ZSkpO3JldHVybiBkPT09IiI/ImF1dG8iOmR9KSxiej1i QXx8YkIsZi5leHByJiZmLmV4cHIuZmlsdGVycyYmKGYuZXhwci5maWx0ZXJzLmhp ZGRlbj1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRI ZWlnaHQ7cmV0dXJuIGI9PT0wJiZjPT09MHx8IWYuc3VwcG9ydC5yZWxpYWJsZUhp ZGRlbk9mZnNldHMmJihhLnN0eWxlLmRpc3BsYXl8fGYuY3NzKGEsImRpc3BsYXki KSk9PT0ibm9uZSJ9LGYuZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7 cmV0dXJuIWYuZXhwci5maWx0ZXJzLmhpZGRlbihhKX0pO3ZhciBiRT0vJTIwL2cs YkY9L1xbXF0kLyxiRz0vXHI/XG4vZyxiSD0vIy4qJC8sYkk9L14oLio/KTpbIFx0 XSooW15cclxuXSopXHI/JC9tZyxiSj0vXig/OmNvbG9yfGRhdGV8ZGF0ZXRpbWV8 ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8 dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksYks9L14oPzphYm91dHxhcHB8YXBw XC1zdG9yYWdlfC4rXC1leHRlbnNpb258ZmlsZXx3aWRnZXQpOiQvLGJMPS9eKD86 R0VUfEhFQUQpJC8sYk09L15cL1wvLyxiTj0vXD8vLGJPPS88c2NyaXB0XGJbXjxd Kig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLGJQPS9eKD86 c2VsZWN0fHRleHRhcmVhKS9pLGJRPS9ccysvLGJSPS8oWz8mXSlfPVteJl0qLyxi Uz0vXihbXHdcK1wuXC1dKzopKD86XC9cLyhbXlwvPyM6XSopKD86OihcZCspKT8p Py8sYlQ9Zi5mbi5sb2FkLGJVPXt9LGJWPXt9LGJXLGJYO3RyeXtiVz1lLmhyZWZ9 Y2F0Y2goYlkpe2JXPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJXLmhyZWY9IiIsYlc9 YlcuaHJlZn1iWD1iUy5leGVjKGJXLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4 dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmci JiZiVClyZXR1cm4gYlQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxl bmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2 YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJH RVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2Jq ZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxo PSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5 cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJl c3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtj PWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYk8sIiIp KS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhp c30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJp YWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VB cnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJQ LnRlc3QodGhpcy5ub2RlTmFtZSl8fGJKLnRlc3QodGhpcy50eXBlKSl9KS5tYXAo ZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxs P251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57 bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJHLCJcclxuIil9fSk6e25hbWU6 Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiRywiXHJcbiIpfX0pLmdldCgpfX0pLGYu ZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3Ig YWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtm LmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVh Y2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEs ZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4g Zi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpn fSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBm LmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3Jl dHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxi KXtiP2YuZXh0ZW5kKCEwLGEsZi5hamF4U2V0dGluZ3MsYik6KGI9YSxhPWYuZXh0 ZW5kKCEwLGYuYWpheFNldHRpbmdzLGIpKTtmb3IodmFyIGMgaW57Y29udGV4dDox LHVybDoxfSljIGluIGI/YVtjXT1iW2NdOmMgaW4gZi5hamF4U2V0dGluZ3MmJihh W2NdPWYuYWpheFNldHRpbmdzW2NdKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1 cmw6YlcsaXNMb2NhbDpiSy50ZXN0KGJYWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VU Iixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk Iixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0 aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9w bGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iiwi KiI6IiovKiJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjov anNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJy ZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4 dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYu cGFyc2VYTUx9fSxhamF4UHJlZmlsdGVyOmJaKGJVKSxhamF4VHJhbnNwb3J0OmJa KGJWKSxhamF4OmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gdyhhLGMsbCxtKXtpZihz IT09Mil7cz0yLHEmJmNsZWFyVGltZW91dChxKSxwPWIsbj1tfHwiIix2LnJlYWR5 U3RhdGU9YT80OjA7dmFyIG8scix1LHc9bD9jYShkLHYsbCk6Yix4LHk7aWYoYT49 MjAwJiZhPDMwMHx8YT09PTMwNCl7aWYoZC5pZk1vZGlmaWVkKXtpZih4PXYuZ2V0 UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSlmLmxhc3RNb2RpZmllZFtr XT14O2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiRXRhZyIpKWYuZXRhZ1trXT15 fWlmKGE9PT0zMDQpYz0ibm90bW9kaWZpZWQiLG89ITA7ZWxzZSB0cnl7cj1jYihk LHcpLGM9InN1Y2Nlc3MiLG89ITB9Y2F0Y2goeil7Yz0icGFyc2VyZXJyb3IiLHU9 en19ZWxzZXt1PWM7aWYoIWN8fGEpYz0iZXJyb3IiLGE8MCYmKGE9MCl9di5zdGF0 dXM9YSx2LnN0YXR1c1RleHQ9YyxvP2gucmVzb2x2ZVdpdGgoZSxbcixjLHZdKTpo LnJlamVjdFdpdGgoZSxbdixjLHVdKSx2LnN0YXR1c0NvZGUoaiksaj1iLHQmJmcu dHJpZ2dlcigiYWpheCIrKG8/IlN1Y2Nlc3MiOiJFcnJvciIpLFt2LGQsbz9yOnVd KSxpLnJlc29sdmVXaXRoKGUsW3YsY10pLHQmJihnLnRyaWdnZXIoImFqYXhDb21w bGV0ZSIsW3YsZF0pLC0tZi5hY3RpdmV8fGYuZXZlbnQudHJpZ2dlcigiYWpheFN0 b3AiKSl9fXR5cGVvZiBhPT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFy IGQ9Zi5hamF4U2V0dXAoe30sYyksZT1kLmNvbnRleHR8fGQsZz1lIT09ZCYmKGUu bm9kZVR5cGV8fGUgaW5zdGFuY2VvZiBmKT9mKGUpOmYuZXZlbnQsaD1mLkRlZmVy cmVkKCksaT1mLl9EZWZlcnJlZCgpLGo9ZC5zdGF0dXNDb2RlfHx7fSxrLGw9e30s bT17fSxuLG8scCxxLHIscz0wLHQsdSx2PXtyZWFkeVN0YXRlOjAsc2V0UmVxdWVz dEhlYWRlcjpmdW5jdGlvbihhLGIpe2lmKCFzKXt2YXIgYz1hLnRvTG93ZXJDYXNl KCk7YT1tW2NdPW1bY118fGEsbFthXT1ifXJldHVybiB0aGlzfSxnZXRBbGxSZXNw b25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gcz09PTI/bjpudWxsfSxnZXRS ZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYztpZihzPT09Mil7aWYoIW8p e289e307d2hpbGUoYz1iSS5leGVjKG4pKW9bY1sxXS50b0xvd2VyQ2FzZSgpXT1j WzJdfWM9b1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBjPT09Yj9udWxsOmN9LG92 ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7c3x8KGQubWltZVR5cGU9YSk7cmV0 dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe2E9YXx8ImFib3J0IixwJiZwLmFi b3J0KGEpLHcoMCxhKTtyZXR1cm4gdGhpc319O2gucHJvbWlzZSh2KSx2LnN1Y2Nl c3M9di5kb25lLHYuZXJyb3I9di5mYWlsLHYuY29tcGxldGU9aS5kb25lLHYuc3Rh dHVzQ29kZT1mdW5jdGlvbihhKXtpZihhKXt2YXIgYjtpZihzPDIpZm9yKGIgaW4g YSlqW2JdPVtqW2JdLGFbYl1dO2Vsc2UgYj1hW3Yuc3RhdHVzXSx2LnRoZW4oYixi KX1yZXR1cm4gdGhpc30sZC51cmw9KChhfHxkLnVybCkrIiIpLnJlcGxhY2UoYkgs IiIpLnJlcGxhY2UoYk0sYlhbMV0rIi8vIiksZC5kYXRhVHlwZXM9Zi50cmltKGQu ZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5zcGxpdChiUSksZC5jcm9zc0Rv bWFpbj09bnVsbCYmKHI9YlMuZXhlYyhkLnVybC50b0xvd2VyQ2FzZSgpKSxkLmNy b3NzRG9tYWluPSEoIXJ8fHJbMV09PWJYWzFdJiZyWzJdPT1iWFsyXSYmKHJbM118 fChyWzFdPT09Imh0dHA6Ij84MDo0NDMpKT09KGJYWzNdfHwoYlhbMV09PT0iaHR0 cDoiPzgwOjQ0MykpKSksZC5kYXRhJiZkLnByb2Nlc3NEYXRhJiZ0eXBlb2YgZC5k YXRhIT0ic3RyaW5nIiYmKGQuZGF0YT1mLnBhcmFtKGQuZGF0YSxkLnRyYWRpdGlv bmFsKSksYiQoYlUsZCxjLHYpO2lmKHM9PT0yKXJldHVybiExO3Q9ZC5nbG9iYWws ZC50eXBlPWQudHlwZS50b1VwcGVyQ2FzZSgpLGQuaGFzQ29udGVudD0hYkwudGVz dChkLnR5cGUpLHQmJmYuYWN0aXZlKys9PT0wJiZmLmV2ZW50LnRyaWdnZXIoImFq YXhTdGFydCIpO2lmKCFkLmhhc0NvbnRlbnQpe2QuZGF0YSYmKGQudXJsKz0oYk4u dGVzdChkLnVybCk/IiYiOiI/IikrZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9 PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlIsIiQxXz0iK3gp O2QudXJsPXkrKHk9PT1kLnVybD8oYk4udGVzdChkLnVybCk/IiYiOiI/IikrIl89 Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09 ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQt VHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxm Lmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmll ZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1 ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVl c3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRh dGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlw ZXNbMF0hPT0iKiI/IiwgKi8qOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7 Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVy c1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQp PT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nl c3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1iJChiVixkLGMs dik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9 MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1l b3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0 Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7c3Rh dHVzPDI/dygtMSx6KTpmLmVycm9yKHopfX1yZXR1cm4gdn0scGFyYW06ZnVuY3Rp b24oYSxjKXt2YXIgZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1mLmlzRnVuY3Rpb24o Yik/YigpOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9Iitl bmNvZGVVUklDb21wb25lbnQoYil9O2M9PT1iJiYoYz1mLmFqYXhTZXR0aW5ncy50 cmFkaXRpb25hbCk7aWYoZi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWYuaXNQbGFp bk9iamVjdChhKSlmLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMu dmFsdWUpfSk7ZWxzZSBmb3IodmFyIGcgaW4gYSliXyhnLGFbZ10sYyxlKTtyZXR1 cm4gZC5qb2luKCImIikucmVwbGFjZShiRSwiKyIpfX0pLGYuZXh0ZW5kKHthY3Rp dmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fX0pO3ZhciBjYz1mLm5vdygpLGNk PS8oXD0pXD8oJnwkKXxcP1w/L2k7Zi5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFj ayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBmLmV4cGFuZG8rIl8i K2NjKyt9fSksZi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihi LGMsZCl7dmFyIGU9Yi5jb250ZW50VHlwZT09PSJhcHBsaWNhdGlvbi94LXd3dy1m b3JtLXVybGVuY29kZWQiJiZ0eXBlb2YgYi5kYXRhPT0ic3RyaW5nIjtpZihiLmRh dGFUeXBlc1swXT09PSJqc29ucCJ8fGIuanNvbnAhPT0hMSYmKGNkLnRlc3QoYi51 cmwpfHxlJiZjZC50ZXN0KGIuZGF0YSkpKXt2YXIgZyxoPWIuanNvbnBDYWxsYmFj az1mLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2so KTpiLmpzb25wQ2FsbGJhY2ssaT1hW2hdLGo9Yi51cmwsaz1iLmRhdGEsbD0iJDEi K2grIiQyIjtiLmpzb25wIT09ITEmJihqPWoucmVwbGFjZShjZCxsKSxiLnVybD09 PWomJihlJiYoaz1rLnJlcGxhY2UoY2QsbCkpLGIuZGF0YT09PWsmJihqKz0oL1w/ Ly50ZXN0KGopPyImIjoiPyIpK2IuanNvbnArIj0iK2gpKSksYi51cmw9aixiLmRh dGE9ayxhW2hdPWZ1bmN0aW9uKGEpe2c9W2FdfSxkLmFsd2F5cyhmdW5jdGlvbigp e2FbaF09aSxnJiZmLmlzRnVuY3Rpb24oaSkmJmFbaF0oZ1swXSl9KSxiLmNvbnZl cnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtnfHxmLmVycm9yKGgrIiB3 YXMgbm90IGNhbGxlZCIpO3JldHVybiBnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNv biI7cmV0dXJuInNjcmlwdCJ9fSksZi5hamF4U2V0dXAoe2FjY2VwdHM6e3Njcmlw dDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBs aWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxj b250ZW50czp7c2NyaXB0Oi9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0 ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe2YuZ2xvYmFsRXZhbChhKTty ZXR1cm4gYX19fSksZi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEp e2EuY2FjaGU9PT1iJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlw ZT0iR0VUIixhLmdsb2JhbD0hMSl9KSxmLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIs ZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGQsZT1jLmhlYWR8fGMu Z2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1l bnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixnKXtkPWMuY3JlYXRlRWxlbWVudCgi c2NyaXB0IiksZC5hc3luYz0iYXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGQuY2hh cnNldD1hLnNjcmlwdENoYXJzZXQpLGQuc3JjPWEudXJsLGQub25sb2FkPWQub25y ZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7aWYoY3x8IWQucmVhZHlTdGF0 ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkLnJlYWR5U3RhdGUpKWQub25sb2Fk PWQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZSYmZC5wYXJlbnROb2RlJiZlLnJl bW92ZUNoaWxkKGQpLGQ9YixjfHxnKDIwMCwic3VjY2VzcyIpfSxlLmluc2VydEJl Zm9yZShkLGUuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZCYmZC5vbmxv YWQoMCwxKX19fX0pO3ZhciBjZT1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtm b3IodmFyIGEgaW4gY2cpY2dbYV0oMCwxKX06ITEsY2Y9MCxjZztmLmFqYXhTZXR0 aW5ncy54aHI9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMu aXNMb2NhbCYmY2goKXx8Y2koKX06Y2gsZnVuY3Rpb24oYSl7Zi5leHRlbmQoZi5z dXBwb3J0LHthamF4OiEhYSxjb3JzOiEhYSYmIndpdGhDcmVkZW50aWFscyJpbiBh fSl9KGYuYWpheFNldHRpbmdzLnhocigpKSxmLnN1cHBvcnQuYWpheCYmZi5hamF4 VHJhbnNwb3J0KGZ1bmN0aW9uKGMpe2lmKCFjLmNyb3NzRG9tYWlufHxmLnN1cHBv cnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxnKXt2YXIgaD1j LnhocigpLGksajtjLnVzZXJuYW1lP2gub3BlbihjLnR5cGUsYy51cmwsYy5hc3lu YyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmgub3BlbihjLnR5cGUsYy51cmwsYy5h c3luYyk7aWYoYy54aHJGaWVsZHMpZm9yKGogaW4gYy54aHJGaWVsZHMpaFtqXT1j LnhockZpZWxkc1tqXTtjLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgu b3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBlKSwhYy5jcm9zc0RvbWFpbiYmIWVb IlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1M SHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGogaW4gZSloLnNldFJlcXVlc3RIZWFkZXIo aixlW2pdKX1jYXRjaChrKXt9aC5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxu dWxsKSxkPWZ1bmN0aW9uKGEsZSl7dmFyIGosayxsLG0sbjt0cnl7aWYoZCYmKGV8 fGgucmVhZHlTdGF0ZT09PTQpKXtkPWIsaSYmKGgub25yZWFkeXN0YXRlY2hhbmdl PWYubm9vcCxjZSYmZGVsZXRlIGNnW2ldKTtpZihlKWgucmVhZHlTdGF0ZSE9PTQm JmguYWJvcnQoKTtlbHNle2o9aC5zdGF0dXMsbD1oLmdldEFsbFJlc3BvbnNlSGVh ZGVycygpLG09e30sbj1oLnJlc3BvbnNlWE1MLG4mJm4uZG9jdW1lbnRFbGVtZW50 JiYobS54bWw9biksbS50ZXh0PWgucmVzcG9uc2VUZXh0O3RyeXtrPWguc3RhdHVz VGV4dH1jYXRjaChvKXtrPSIifSFqJiZjLmlzTG9jYWwmJiFjLmNyb3NzRG9tYWlu P2o9bS50ZXh0PzIwMDo0MDQ6aj09PTEyMjMmJihqPTIwNCl9fX1jYXRjaChwKXtl fHxnKC0xLHApfW0mJmcoaixrLG0sbCl9LCFjLmFzeW5jfHxoLnJlYWR5U3RhdGU9 PT00P2QoKTooaT0rK2NmLGNlJiYoY2d8fChjZz17fSxmKGEpLnVubG9hZChjZSkp LGNnW2ldPWQpLGgub25yZWFkeXN0YXRlY2hhbmdlPWQpfSxhYm9ydDpmdW5jdGlv bigpe2QmJmQoMCwxKX19fX0pO3ZhciBjaj17fSxjayxjbCxjbT0vXig/OnRvZ2ds ZXxzaG93fGhpZGUpJC8sY249L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0q KSQvaSxjbyxjcD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20i LCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5M ZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJd LFsib3BhY2l0eSJdXSxjcSxjcj1hLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFt ZXx8YS5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGEub1JlcXVlc3RBbmltYXRp b25GcmFtZTtmLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFyIGQs ZTtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJzaG93IiwzKSxh LGIsYyk7Zm9yKHZhciBnPTAsaD10aGlzLmxlbmd0aDtnPGg7ZysrKWQ9dGhpc1tn XSxkLnN0eWxlJiYoZT1kLnN0eWxlLmRpc3BsYXksIWYuX2RhdGEoZCwib2xkZGlz cGxheSIpJiZlPT09Im5vbmUiJiYoZT1kLnN0eWxlLmRpc3BsYXk9IiIpLGU9PT0i IiYmZi5jc3MoZCwiZGlzcGxheSIpPT09Im5vbmUiJiZmLl9kYXRhKGQsIm9sZGRp c3BsYXkiLGN2KGQubm9kZU5hbWUpKSk7Zm9yKGc9MDtnPGg7ZysrKXtkPXRoaXNb Z107aWYoZC5zdHlsZSl7ZT1kLnN0eWxlLmRpc3BsYXk7aWYoZT09PSIifHxlPT09 Im5vbmUiKWQuc3R5bGUuZGlzcGxheT1mLl9kYXRhKGQsIm9sZGRpc3BsYXkiKXx8 IiJ9fXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09 MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJoaWRlIiwzKSxhLGIsYyk7Zm9yKHZh ciBkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKWlmKHRoaXNbZF0uc3R5bGUpe3Zh ciBnPWYuY3NzKHRoaXNbZF0sImRpc3BsYXkiKTtnIT09Im5vbmUiJiYhZi5fZGF0 YSh0aGlzW2RdLCJvbGRkaXNwbGF5IikmJmYuX2RhdGEodGhpc1tkXSwib2xkZGlz cGxheSIsZyl9Zm9yKGQ9MDtkPGU7ZCsrKXRoaXNbZF0uc3R5bGUmJih0aGlzW2Rd LnN0eWxlLmRpc3BsYXk9Im5vbmUiKTtyZXR1cm4gdGhpc30sX3RvZ2dsZTpmLmZu LnRvZ2dsZSx0b2dnbGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXR5cGVvZiBhPT0i Ym9vbGVhbiI7Zi5pc0Z1bmN0aW9uKGEpJiZmLmlzRnVuY3Rpb24oYik/dGhpcy5f dG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphPT1udWxsfHxkP3RoaXMuZWFj aChmdW5jdGlvbigpe3ZhciBiPWQ/YTpmKHRoaXMpLmlzKCI6aGlkZGVuIik7Zih0 aGlzKVtiPyJzaG93IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1hdGUoY3UoInRvZ2ds ZSIsMyksYSxiLGMpO3JldHVybiB0aGlzfSxmYWRlVG86ZnVuY3Rpb24oYSxiLGMs ZCl7cmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5Iiww KS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1h dGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5p c0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFd KTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiB0aGlzW2UucXVldWU9PT0hMT8iZWFj aCI6InF1ZXVlIl0oZnVuY3Rpb24oKXtlLnF1ZXVlPT09ITEmJmYuX21hcmsodGhp cyk7dmFyIGI9Zi5leHRlbmQoe30sZSksYz10aGlzLm5vZGVUeXBlPT09MSxkPWMm JmYodGhpcykuaXMoIjpoaWRkZW4iKSxnLGgsaSxqLGssbCxtLG4sbztiLmFuaW1h dGVkUHJvcGVydGllcz17fTtmb3IoaSBpbiBhKXtnPWYuY2FtZWxDYXNlKGkpLGkh PT1nJiYoYVtnXT1hW2ldLGRlbGV0ZSBhW2ldKSxoPWFbZ10sZi5pc0FycmF5KGgp PyhiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1oWzFdLGg9YVtnXT1oWzBdKTpiLmFu aW1hdGVkUHJvcGVydGllc1tnXT1iLnNwZWNpYWxFYXNpbmcmJmIuc3BlY2lhbEVh c2luZ1tnXXx8Yi5lYXNpbmd8fCJzd2luZyI7aWYoaD09PSJoaWRlIiYmZHx8aD09 PSJzaG93IiYmIWQpcmV0dXJuIGIuY29tcGxldGUuY2FsbCh0aGlzKTtjJiYoZz09 PSJoZWlnaHQifHxnPT09IndpZHRoIikmJihiLm92ZXJmbG93PVt0aGlzLnN0eWxl Lm92ZXJmbG93LHRoaXMuc3R5bGUub3ZlcmZsb3dYLHRoaXMuc3R5bGUub3ZlcmZs b3dZXSxmLmNzcyh0aGlzLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmZi5jc3ModGhp cywiZmxvYXQiKT09PSJub25lIiYmKGYuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRz TGF5b3V0PyhqPWN2KHRoaXMubm9kZU5hbWUpLGo9PT0iaW5saW5lIj90aGlzLnN0 eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6KHRoaXMuc3R5bGUuZGlzcGxheT0i aW5saW5lIix0aGlzLnN0eWxlLnpvb209MSkpOnRoaXMuc3R5bGUuZGlzcGxheT0i aW5saW5lLWJsb2NrIikpfWIub3ZlcmZsb3chPW51bGwmJih0aGlzLnN0eWxlLm92 ZXJmbG93PSJoaWRkZW4iKTtmb3IoaSBpbiBhKWs9bmV3IGYuZngodGhpcyxiLGkp LGg9YVtpXSxjbS50ZXN0KGgpP2tbaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRl IjpoXSgpOihsPWNuLmV4ZWMoaCksbT1rLmN1cigpLGw/KG49cGFyc2VGbG9hdChs WzJdKSxvPWxbM118fChmLmNzc051bWJlcltpXT8iIjoicHgiKSxvIT09InB4IiYm KGYuc3R5bGUodGhpcyxpLChufHwxKStvKSxtPShufHwxKS9rLmN1cigpKm0sZi5z dHlsZSh0aGlzLGksbStvKSksbFsxXSYmKG49KGxbMV09PT0iLT0iPy0xOjEpKm4r bSksay5jdXN0b20obSxuLG8pKTprLmN1c3RvbShtLGgsIiIpKTtyZXR1cm4hMH0p fSxzdG9wOmZ1bmN0aW9uKGEsYil7YSYmdGhpcy5xdWV1ZShbXSksdGhpcy5lYWNo KGZ1bmN0aW9uKCl7dmFyIGE9Zi50aW1lcnMsYz1hLmxlbmd0aDtifHxmLl91bm1h cmsoITAsdGhpcyk7d2hpbGUoYy0tKWFbY10uZWxlbT09PXRoaXMmJihiJiZhW2Nd KCEwKSxhLnNwbGljZShjLDEpKX0pLGJ8fHRoaXMuZGVxdWV1ZSgpO3JldHVybiB0 aGlzfX0pLGYuZWFjaCh7c2xpZGVEb3duOmN1KCJzaG93IiwxKSxzbGlkZVVwOmN1 KCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpjdSgidG9nZ2xlIiwxKSxmYWRlSW46e29w YWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2ds ZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5j dGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxmLmV4 dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJnR5cGVvZiBhPT0i b2JqZWN0Ij9mLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fGYuaXNG dW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhZi5pc0Z1 bmN0aW9uKGIpJiZifTtkLmR1cmF0aW9uPWYuZngub2ZmPzA6dHlwZW9mIGQuZHVy YXRpb249PSJudW1iZXIiP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBmLmZ4LnNw ZWVkcz9mLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTpmLmZ4LnNwZWVkcy5fZGVmYXVs dCxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oYSl7ZC5xdWV1 ZSE9PSExP2YuZGVxdWV1ZSh0aGlzKTphIT09ITEmJmYuX3VubWFyayh0aGlzKSxm LmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpfTtyZXR1cm4gZH0s ZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGMrZCphfSxz d2luZzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4oLU1hdGguY29zKGEqTWF0aC5Q SSkvMisuNSkqZCtjfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKGEsYixjKXt0aGlz Lm9wdGlvbnM9Yix0aGlzLmVsZW09YSx0aGlzLnByb3A9YyxiLm9yaWc9Yi5vcmln fHx7fX19KSxmLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5v cHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRo aXMubm93LHRoaXMpLChmLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8Zi5meC5zdGVwLl9k ZWZhdWx0KSh0aGlzKX0sY3VyOmZ1bmN0aW9uKCl7aWYodGhpcy5lbGVtW3RoaXMu cHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVb dGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3BdO3Zh ciBhLGI9Zi5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCk7cmV0dXJuIGlzTmFOKGE9 cGFyc2VGbG9hdChiKSk/IWJ8fGI9PT0iYXV0byI/MDpiOmF9LGN1c3RvbTpmdW5j dGlvbihhLGIsYyl7ZnVuY3Rpb24gaChhKXtyZXR1cm4gZC5zdGVwKGEpfXZhciBk PXRoaXMsZT1mLmZ4LGc7dGhpcy5zdGFydFRpbWU9Y3F8fGNzKCksdGhpcy5zdGFy dD1hLHRoaXMuZW5kPWIsdGhpcy51bml0PWN8fHRoaXMudW5pdHx8KGYuY3NzTnVt YmVyW3RoaXMucHJvcF0/IiI6InB4IiksdGhpcy5ub3c9dGhpcy5zdGFydCx0aGlz LnBvcz10aGlzLnN0YXRlPTAsaC5lbGVtPXRoaXMuZWxlbSxoKCkmJmYudGltZXJz LnB1c2goaCkmJiFjbyYmKGNyPyhjbz0xLGc9ZnVuY3Rpb24oKXtjbyYmKGNyKGcp LGUudGljaygpKX0sY3IoZykpOmNvPXNldEludGVydmFsKGUudGljayxlLmludGVy dmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnBy b3BdPWYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLnNo b3c9ITAsdGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9w PT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpLGYodGhpcy5lbGVtKS5zaG93KCl9 LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWYu c3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLmhpZGU9ITAs dGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlvbihhKXt2YXIg Yj1jcXx8Y3MoKSxjPSEwLGQ9dGhpcy5lbGVtLGU9dGhpcy5vcHRpb25zLGcsaDtp ZihhfHxiPj1lLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlz LmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxlLmFuaW1h dGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihnIGluIGUuYW5pbWF0ZWRQ cm9wZXJ0aWVzKWUuYW5pbWF0ZWRQcm9wZXJ0aWVzW2ddIT09ITAmJihjPSExKTtp ZihjKXtlLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9j a3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtkLnN0eWxlWyJv dmVyZmxvdyIrYl09ZS5vdmVyZmxvd1thXX0pLGUuaGlkZSYmZihkKS5oaWRlKCk7 aWYoZS5oaWRlfHxlLnNob3cpZm9yKHZhciBpIGluIGUuYW5pbWF0ZWRQcm9wZXJ0 aWVzKWYuc3R5bGUoZCxpLGUub3JpZ1tpXSk7ZS5jb21wbGV0ZS5jYWxsKGQpfXJl dHVybiExfWUuZHVyYXRpb249PUluZmluaXR5P3RoaXMubm93PWI6KGg9Yi10aGlz LnN0YXJ0VGltZSx0aGlzLnN0YXRlPWgvZS5kdXJhdGlvbix0aGlzLnBvcz1mLmVh c2luZ1tlLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdXSh0aGlzLnN0YXRl LGgsMCwxLGUuZHVyYXRpb24pLHRoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5k LXRoaXMuc3RhcnQpKnRoaXMucG9zKSx0aGlzLnVwZGF0ZSgpO3JldHVybiEwfX0s Zi5leHRlbmQoZi5meCx7dGljazpmdW5jdGlvbigpe2Zvcih2YXIgYT1mLnRpbWVy cyxiPTA7YjxhLmxlbmd0aDsrK2IpYVtiXSgpfHxhLnNwbGljZShiLS0sMSk7YS5s ZW5ndGh8fGYuZnguc3RvcCgpfSxpbnRlcnZhbDoxMyxzdG9wOmZ1bmN0aW9uKCl7 Y2xlYXJJbnRlcnZhbChjbyksY289bnVsbH0sc3BlZWRzOntzbG93OjYwMCxmYXN0 OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rpb24oYSl7Zi5z dHlsZShhLmVsZW0sIm9wYWNpdHkiLGEubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24o YSl7YS5lbGVtLnN0eWxlJiZhLmVsZW0uc3R5bGVbYS5wcm9wXSE9bnVsbD9hLmVs ZW0uc3R5bGVbYS5wcm9wXT0oYS5wcm9wPT09IndpZHRoInx8YS5wcm9wPT09Imhl aWdodCI/TWF0aC5tYXgoMCxhLm5vdyk6YS5ub3cpK2EudW5pdDphLmVsZW1bYS5w cm9wXT1hLm5vd319fSksZi5leHByJiZmLmV4cHIuZmlsdGVycyYmKGYuZXhwci5m aWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBmLmdyZXAoZi50aW1l cnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9KTt2YXIg Y3c9L150KD86YWJsZXxkfGgpJC9pLGN4PS9eKD86Ym9keXxodG1sKSQvaTsiZ2V0 Qm91bmRpbmdDbGllbnRSZWN0ImluIGMuZG9jdW1lbnRFbGVtZW50P2YuZm4ub2Zm c2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF0sYztpZihhKXJldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oYil7Zi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0p O2lmKCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lmKGI9PT1iLm93 bmVyRG9jdW1lbnQuYm9keSlyZXR1cm4gZi5vZmZzZXQuYm9keU9mZnNldChiKTt0 cnl7Yz1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGQpe312YXIgZT1i Lm93bmVyRG9jdW1lbnQsZz1lLmRvY3VtZW50RWxlbWVudDtpZighY3x8IWYuY29u dGFpbnMoZyxiKSlyZXR1cm4gYz97dG9wOmMudG9wLGxlZnQ6Yy5sZWZ0fTp7dG9w OjAsbGVmdDowfTt2YXIgaD1lLmJvZHksaT1jeShlKSxqPWcuY2xpZW50VG9wfHxo LmNsaWVudFRvcHx8MCxrPWcuY2xpZW50TGVmdHx8aC5jbGllbnRMZWZ0fHwwLGw9 aS5wYWdlWU9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbFRvcHx8 aC5zY3JvbGxUb3AsbT1pLnBhZ2VYT2Zmc2V0fHxmLnN1cHBvcnQuYm94TW9kZWwm Jmcuc2Nyb2xsTGVmdHx8aC5zY3JvbGxMZWZ0LG49Yy50b3ArbC1qLG89Yy5sZWZ0 K20taztyZXR1cm57dG9wOm4sbGVmdDpvfX06Zi5mbi5vZmZzZXQ9ZnVuY3Rpb24o YSl7dmFyIGI9dGhpc1swXTtpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o Yil7Zi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO2lmKCFifHwhYi5vd25l ckRvY3VtZW50KXJldHVybiBudWxsO2lmKGI9PT1iLm93bmVyRG9jdW1lbnQuYm9k eSlyZXR1cm4gZi5vZmZzZXQuYm9keU9mZnNldChiKTtmLm9mZnNldC5pbml0aWFs aXplKCk7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1l bnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcs az1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9 Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2Rl KSYmYiE9PWkmJmIhPT1oKXtpZihmLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRp b24mJmsucG9zaXRpb249PT0iZml4ZWQiKWJyZWFrO2M9aj9qLmdldENvbXB1dGVk U3R5bGUoYixudWxsKTpiLmN1cnJlbnRTdHlsZSxsLT1iLnNjcm9sbFRvcCxtLT1i LnNjcm9sbExlZnQsYj09PWQmJihsKz1iLm9mZnNldFRvcCxtKz1iLm9mZnNldExl ZnQsZi5vZmZzZXQuZG9lc05vdEFkZEJvcmRlciYmKCFmLm9mZnNldC5kb2VzQWRk Qm9yZGVyRm9yVGFibGVBbmRDZWxsc3x8IWN3LnRlc3QoYi5ub2RlTmFtZSkpJiYo bCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0 KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksZT1kLGQ9Yi5vZmZzZXRQYXJlbnQpLGYu b2Zmc2V0LnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZSYmYy5v dmVyZmxvdyE9PSJ2aXNpYmxlIiYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BX aWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGs9 Y31pZihrLnBvc2l0aW9uPT09InJlbGF0aXZlInx8ay5wb3NpdGlvbj09PSJzdGF0 aWMiKWwrPWkub2Zmc2V0VG9wLG0rPWkub2Zmc2V0TGVmdDtmLm9mZnNldC5zdXBw b3J0c0ZpeGVkUG9zaXRpb24mJmsucG9zaXRpb249PT0iZml4ZWQiJiYobCs9TWF0 aC5tYXgoaC5zY3JvbGxUb3AsaS5zY3JvbGxUb3ApLG0rPU1hdGgubWF4KGguc2Ny b2xsTGVmdCxpLnNjcm9sbExlZnQpKTtyZXR1cm57dG9wOmwsbGVmdDptfX0sZi5v ZmZzZXQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgYT1jLmJvZHksYj1jLmNy ZWF0ZUVsZW1lbnQoImRpdiIpLGQsZSxnLGgsaT1wYXJzZUZsb2F0KGYuY3NzKGEs Im1hcmdpblRvcCIpKXx8MCxqPSI8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0 ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3Bh ZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnPjxkaXY+PC9kaXY+PC9kaXY+ PHRhYmxlIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFy Z2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7 aGVpZ2h0OjFweDsnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+PHRy Pjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iO2YuZXh0ZW5kKGIuc3R5bGUse3Bvc2l0 aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLG1hcmdpbjowLGJvcmRlcjowLHdp ZHRoOiIxcHgiLGhlaWdodDoiMXB4Iix2aXNpYmlsaXR5OiJoaWRkZW4ifSksYi5p bm5lckhUTUw9aixhLmluc2VydEJlZm9yZShiLGEuZmlyc3RDaGlsZCksZD1iLmZp cnN0Q2hpbGQsZT1kLmZpcnN0Q2hpbGQsaD1kLm5leHRTaWJsaW5nLmZpcnN0Q2hp bGQuZmlyc3RDaGlsZCx0aGlzLmRvZXNOb3RBZGRCb3JkZXI9ZS5vZmZzZXRUb3Ah PT01LHRoaXMuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM9aC5vZmZzZXRU b3A9PT01LGUuc3R5bGUucG9zaXRpb249ImZpeGVkIixlLnN0eWxlLnRvcD0iMjBw eCIsdGhpcy5zdXBwb3J0c0ZpeGVkUG9zaXRpb249ZS5vZmZzZXRUb3A9PT0yMHx8 ZS5vZmZzZXRUb3A9PT0xNSxlLnN0eWxlLnBvc2l0aW9uPWUuc3R5bGUudG9wPSIi LGQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZC5zdHlsZS5wb3NpdGlvbj0icmVs YXRpdmUiLHRoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxl PWUub2Zmc2V0VG9wPT09LTUsdGhpcy5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9k eU9mZnNldD1hLm9mZnNldFRvcCE9PWksYS5yZW1vdmVDaGlsZChiKSxmLm9mZnNl dC5pbml0aWFsaXplPWYubm9vcH0sYm9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIg Yj1hLm9mZnNldFRvcCxjPWEub2Zmc2V0TGVmdDtmLm9mZnNldC5pbml0aWFsaXpl KCksZi5vZmZzZXQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQmJihi Kz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjKz1wYXJzZUZs b2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDApO3JldHVybnt0b3A6YixsZWZ0 OmN9fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWYuY3NzKGEsInBv c2l0aW9uIik7ZD09PSJzdGF0aWMiJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRp dmUiKTt2YXIgZT1mKGEpLGc9ZS5vZmZzZXQoKSxoPWYuY3NzKGEsInRvcCIpLGk9 Zi5jc3MoYSwibGVmdCIpLGo9KGQ9PT0iYWJzb2x1dGUifHxkPT09ImZpeGVkIikm JmYuaW5BcnJheSgiYXV0byIsW2gsaV0pPi0xLGs9e30sbD17fSxtLG47aj8obD1l LnBvc2l0aW9uKCksbT1sLnRvcCxuPWwubGVmdCk6KG09cGFyc2VGbG9hdChoKXx8 MCxuPXBhcnNlRmxvYXQoaSl8fDApLGYuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxs KGEsYyxnKSksYi50b3AhPW51bGwmJihrLnRvcD1iLnRvcC1nLnRvcCttKSxiLmxl ZnQhPW51bGwmJihrLmxlZnQ9Yi5sZWZ0LWcubGVmdCtuKSwidXNpbmciaW4gYj9i LnVzaW5nLmNhbGwoYSxrKTplLmNzcyhrKX19LGYuZm4uZXh0ZW5kKHtwb3NpdGlv bjpmdW5jdGlvbigpe2lmKCF0aGlzWzBdKXJldHVybiBudWxsO3ZhciBhPXRoaXNb MF0sYj10aGlzLm9mZnNldFBhcmVudCgpLGM9dGhpcy5vZmZzZXQoKSxkPWN4LnRl c3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtjLnRv cC09cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsYy5sZWZ0LT1w YXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDAsZC50b3ArPXBhcnNl RmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyVG9wV2lkdGgiKSl8fDAsZC5sZWZ0Kz1w YXJzZUZsb2F0KGYuY3NzKGJbMF0sImJvcmRlckxlZnRXaWR0aCIpKXx8MDtyZXR1 cm57dG9wOmMudG9wLWQudG9wLGxlZnQ6Yy5sZWZ0LWQubGVmdH19LG9mZnNldFBh cmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBh PXRoaXMub2Zmc2V0UGFyZW50fHxjLmJvZHk7d2hpbGUoYSYmIWN4LnRlc3QoYS5u b2RlTmFtZSkmJmYuY3NzKGEsInBvc2l0aW9uIik9PT0ic3RhdGljIilhPWEub2Zm c2V0UGFyZW50O3JldHVybiBhfSl9fSksZi5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1 bmN0aW9uKGEsYyl7dmFyIGQ9InNjcm9sbCIrYztmLmZuW2RdPWZ1bmN0aW9uKGMp e3ZhciBlLGc7aWYoYz09PWIpe2U9dGhpc1swXTtpZighZSlyZXR1cm4gbnVsbDtn PWN5KGUpO3JldHVybiBnPyJwYWdlWE9mZnNldCJpbiBnP2dbYT8icGFnZVlPZmZz ZXQiOiJwYWdlWE9mZnNldCJdOmYuc3VwcG9ydC5ib3hNb2RlbCYmZy5kb2N1bWVu dC5kb2N1bWVudEVsZW1lbnRbZF18fGcuZG9jdW1lbnQuYm9keVtkXTplW2RdfXJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtnPWN5KHRoaXMpLGc/Zy5zY3JvbGxU byhhP2YoZykuc2Nyb2xsTGVmdCgpOmMsYT9jOmYoZykuc2Nyb2xsVG9wKCkpOnRo aXNbZF09Y30pfX0pLGYuZWFjaChbIkhlaWdodCIsIldpZHRoIl0sZnVuY3Rpb24o YSxjKXt2YXIgZD1jLnRvTG93ZXJDYXNlKCk7Zi5mblsiaW5uZXIiK2NdPWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXNbMF0/cGFyc2VGbG9hdChmLmNzcyh0aGlzWzBdLGQs InBhZGRpbmciKSk6bnVsbH0sZi5mblsib3V0ZXIiK2NdPWZ1bmN0aW9uKGEpe3Jl dHVybiB0aGlzWzBdP3BhcnNlRmxvYXQoZi5jc3ModGhpc1swXSxkLGE/Im1hcmdp biI6ImJvcmRlciIpKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRo aXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5j dGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhp cyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhl KSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY107 cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8 ZS5kb2N1bWVudC5ib2R5WyJjbGllbnQiK2NdfHxnfWlmKGUubm9kZVR5cGU9PT05 KXJldHVybiBNYXRoLm1heChlLmRvY3VtZW50RWxlbWVudFsiY2xpZW50IitjXSxl LmJvZHlbInNjcm9sbCIrY10sZS5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIrY10s ZS5ib2R5WyJvZmZzZXQiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK2Nd KTtpZihhPT09Yil7dmFyIGg9Zi5jc3MoZSxkKSxpPXBhcnNlRmxvYXQoaCk7cmV0 dXJuIGYuaXNOYU4oaSk/aDppfXJldHVybiB0aGlzLmNzcyhkLHR5cGVvZiBhPT0i c3RyaW5nIj9hOmErInB4Iil9fSksYS5qUXVlcnk9YS4kPWZ9KSh3aW5kb3cpO2pR dWVyeS5ub0NvbmZsaWN0KCk7Cg== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=jquery.cycle.all.min.js Content-Type: application/x-javascript; charset=UTF-8; name=jquery.cycle.all.min.js Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/scripts/jquery.cycle.all.min.js Content-Transfer-Encoding: Base64 LyoNCiAqIGpRdWVyeSBDeWNsZSBQbHVnaW4gKHdpdGggVHJhbnNpdGlvbiBEZWZp bml0aW9ucykNCiAqIEV4YW1wbGVzIGFuZCBkb2N1bWVudGF0aW9uIGF0OiBodHRw Oi8vanF1ZXJ5Lm1hbHN1cC5jb20vY3ljbGUvDQogKiBDb3B5cmlnaHQgKGMpIDIw MDctMjAwOSBNLiBBbHN1cA0KICogVmVyc2lvbjogMi43MiAoMDktU0VQLTIwMDkp DQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNl czoNCiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxp Y2Vuc2UucGhwDQogKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0 bWwNCiAqIFJlcXVpcmVzOiBqUXVlcnkgdjEuMi42IG9yIGxhdGVyDQogKg0KICog T3JpZ2luYWxseSBiYXNlZCBvbiB0aGUgd29yayBvZjoNCiAqCTEpIE1hdHQgT2Fr ZXMNCiAqCTIpIFRvcnN0ZW4gQmFsZGVzIChodHRwOi8vbWVkaWVuZnJldW5kZS5j b20vbGFiL2lubmVyZmFkZS8pDQogKgkzKSBCZW5qYW1pbiBTdGVybGluZyAoaHR0 cDovL3d3dy5iZW5qYW1pbnN0ZXJsaW5nLmNvbS9leHBlcmltZW50cy9qcVNodWZm bGUvKQ0KICovDQooZnVuY3Rpb24oJCl7dmFyIHZlcj0iMi43MiI7aWYoJC5zdXBw b3J0PT11bmRlZmluZWQpeyQuc3VwcG9ydD17b3BhY2l0eTohKCQuYnJvd3Nlci5t c2llKX07fWZ1bmN0aW9uIGRlYnVnKHMpe2lmKCQuZm4uY3ljbGUuZGVidWcpe2xv ZyhzKTt9fWZ1bmN0aW9uIGxvZygpe2lmKHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cu Y29uc29sZS5sb2cpe3dpbmRvdy5jb25zb2xlLmxvZygiW2N5Y2xlXSAiK0FycmF5 LnByb3RvdHlwZS5qb2luLmNhbGwoYXJndW1lbnRzLCIgIikpO319JC5mbi5jeWNs ZT1mdW5jdGlvbihvcHRpb25zLGFyZzIpe3ZhciBvPXtzOnRoaXMuc2VsZWN0b3Is Yzp0aGlzLmNvbnRleHR9O2lmKHRoaXMubGVuZ3RoPT09MCYmb3B0aW9ucyE9InN0 b3AiKXtpZighJC5pc1JlYWR5JiZvLnMpe2xvZygiRE9NIG5vdCByZWFkeSwgcXVl dWluZyBzbGlkZXNob3ciKTskKGZ1bmN0aW9uKCl7JChvLnMsby5jKS5jeWNsZShv cHRpb25zLGFyZzIpO30pO3JldHVybiB0aGlzO31sb2coInRlcm1pbmF0aW5nOyB6 ZXJvIGVsZW1lbnRzIGZvdW5kIGJ5IHNlbGVjdG9yIisoJC5pc1JlYWR5PyIiOiIg KERPTSBub3QgcmVhZHkpIikpO3JldHVybiB0aGlzO31yZXR1cm4gdGhpcy5lYWNo KGZ1bmN0aW9uKCl7dmFyIG9wdHM9aGFuZGxlQXJndW1lbnRzKHRoaXMsb3B0aW9u cyxhcmcyKTtpZihvcHRzPT09ZmFsc2Upe3JldHVybjt9aWYodGhpcy5jeWNsZVRp bWVvdXQpe2NsZWFyVGltZW91dCh0aGlzLmN5Y2xlVGltZW91dCk7fXRoaXMuY3lj bGVUaW1lb3V0PXRoaXMuY3ljbGVQYXVzZT0wO3ZhciAkY29udD0kKHRoaXMpO3Zh ciAkc2xpZGVzPW9wdHMuc2xpZGVFeHByPyQob3B0cy5zbGlkZUV4cHIsdGhpcyk6 JGNvbnQuY2hpbGRyZW4oKTt2YXIgZWxzPSRzbGlkZXMuZ2V0KCk7aWYoZWxzLmxl bmd0aDwyKXtsb2coInRlcm1pbmF0aW5nOyB0b28gZmV3IHNsaWRlczogIitlbHMu bGVuZ3RoKTtyZXR1cm47fXZhciBvcHRzMj1idWlsZE9wdGlvbnMoJGNvbnQsJHNs aWRlcyxlbHMsb3B0cyxvKTtpZihvcHRzMj09PWZhbHNlKXtyZXR1cm47fXZhciBz dGFydFRpbWU9b3B0czIuY29udGludW91cz8xMDpnZXRUaW1lb3V0KG9wdHMyLmN1 cnJTbGlkZSxvcHRzMi5uZXh0U2xpZGUsb3B0czIsIW9wdHMyLnJldik7aWYoc3Rh cnRUaW1lKXtzdGFydFRpbWUrPShvcHRzMi5kZWxheXx8MCk7aWYoc3RhcnRUaW1l PDEwKXtzdGFydFRpbWU9MTA7fWRlYnVnKCJmaXJzdCB0aW1lb3V0OiAiK3N0YXJ0 VGltZSk7dGhpcy5jeWNsZVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2dv KGVscyxvcHRzMiwwLCFvcHRzMi5yZXYpO30sc3RhcnRUaW1lKTt9fSk7fTtmdW5j dGlvbiBoYW5kbGVBcmd1bWVudHMoY29udCxvcHRpb25zLGFyZzIpe2lmKGNvbnQu Y3ljbGVTdG9wPT11bmRlZmluZWQpe2NvbnQuY3ljbGVTdG9wPTA7fWlmKG9wdGlv bnM9PT11bmRlZmluZWR8fG9wdGlvbnM9PT1udWxsKXtvcHRpb25zPXt9O31pZihv cHRpb25zLmNvbnN0cnVjdG9yPT1TdHJpbmcpe3N3aXRjaChvcHRpb25zKXtjYXNl InN0b3AiOmNvbnQuY3ljbGVTdG9wKys7aWYoY29udC5jeWNsZVRpbWVvdXQpe2Ns ZWFyVGltZW91dChjb250LmN5Y2xlVGltZW91dCk7fWNvbnQuY3ljbGVUaW1lb3V0 PTA7JChjb250KS5yZW1vdmVEYXRhKCJjeWNsZS5vcHRzIik7cmV0dXJuIGZhbHNl O2Nhc2UicGF1c2UiOmNvbnQuY3ljbGVQYXVzZT0xO3JldHVybiBmYWxzZTtjYXNl InJlc3VtZSI6Y29udC5jeWNsZVBhdXNlPTA7aWYoYXJnMj09PXRydWUpe29wdGlv bnM9JChjb250KS5kYXRhKCJjeWNsZS5vcHRzIik7aWYoIW9wdGlvbnMpe2xvZygi b3B0aW9ucyBub3QgZm91bmQsIGNhbiBub3QgcmVzdW1lIik7cmV0dXJuIGZhbHNl O31pZihjb250LmN5Y2xlVGltZW91dCl7Y2xlYXJUaW1lb3V0KGNvbnQuY3ljbGVU aW1lb3V0KTtjb250LmN5Y2xlVGltZW91dD0wO31nbyhvcHRpb25zLmVsZW1lbnRz LG9wdGlvbnMsMSwxKTt9cmV0dXJuIGZhbHNlO2Nhc2UicHJldiI6Y2FzZSJuZXh0 Ijp2YXIgb3B0cz0kKGNvbnQpLmRhdGEoImN5Y2xlLm9wdHMiKTtpZighb3B0cyl7 bG9nKCdvcHRpb25zIG5vdCBmb3VuZCwgInByZXYvbmV4dCIgaWdub3JlZCcpO3Jl dHVybiBmYWxzZTt9JC5mbi5jeWNsZVtvcHRpb25zXShvcHRzKTtyZXR1cm4gZmFs c2U7ZGVmYXVsdDpvcHRpb25zPXtmeDpvcHRpb25zfTt9cmV0dXJuIG9wdGlvbnM7 fWVsc2V7aWYob3B0aW9ucy5jb25zdHJ1Y3Rvcj09TnVtYmVyKXt2YXIgbnVtPW9w dGlvbnM7b3B0aW9ucz0kKGNvbnQpLmRhdGEoImN5Y2xlLm9wdHMiKTtpZighb3B0 aW9ucyl7bG9nKCJvcHRpb25zIG5vdCBmb3VuZCwgY2FuIG5vdCBhZHZhbmNlIHNs aWRlIik7cmV0dXJuIGZhbHNlO31pZihudW08MHx8bnVtPj1vcHRpb25zLmVsZW1l bnRzLmxlbmd0aCl7bG9nKCJpbnZhbGlkIHNsaWRlIGluZGV4OiAiK251bSk7cmV0 dXJuIGZhbHNlO31vcHRpb25zLm5leHRTbGlkZT1udW07aWYoY29udC5jeWNsZVRp bWVvdXQpe2NsZWFyVGltZW91dChjb250LmN5Y2xlVGltZW91dCk7Y29udC5jeWNs ZVRpbWVvdXQ9MDt9aWYodHlwZW9mIGFyZzI9PSJzdHJpbmciKXtvcHRpb25zLm9u ZVRpbWVGeD1hcmcyO31nbyhvcHRpb25zLmVsZW1lbnRzLG9wdGlvbnMsMSxudW0+ PW9wdGlvbnMuY3VyclNsaWRlKTtyZXR1cm4gZmFsc2U7fX1yZXR1cm4gb3B0aW9u czt9ZnVuY3Rpb24gcmVtb3ZlRmlsdGVyKGVsLG9wdHMpe2lmKCEkLnN1cHBvcnQu b3BhY2l0eSYmb3B0cy5jbGVhcnR5cGUmJmVsLnN0eWxlLmZpbHRlcil7dHJ5e2Vs LnN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7fWNhdGNoKHNtb3RoZXIp e319fWZ1bmN0aW9uIGJ1aWxkT3B0aW9ucygkY29udCwkc2xpZGVzLGVscyxvcHRp b25zLG8pe3ZhciBvcHRzPSQuZXh0ZW5kKHt9LCQuZm4uY3ljbGUuZGVmYXVsdHMs b3B0aW9uc3x8e30sJC5tZXRhZGF0YT8kY29udC5tZXRhZGF0YSgpOiQubWV0YT8k Y29udC5kYXRhKCk6e30pO2lmKG9wdHMuYXV0b3N0b3Ape29wdHMuY291bnRkb3du PW9wdHMuYXV0b3N0b3BDb3VudHx8ZWxzLmxlbmd0aDt9dmFyIGNvbnQ9JGNvbnRb MF07JGNvbnQuZGF0YSgiY3ljbGUub3B0cyIsb3B0cyk7b3B0cy4kY29udD0kY29u dDtvcHRzLnN0b3BDb3VudD1jb250LmN5Y2xlU3RvcDtvcHRzLmVsZW1lbnRzPWVs cztvcHRzLmJlZm9yZT1vcHRzLmJlZm9yZT9bb3B0cy5iZWZvcmVdOltdO29wdHMu YWZ0ZXI9b3B0cy5hZnRlcj9bb3B0cy5hZnRlcl06W107b3B0cy5hZnRlci51bnNo aWZ0KGZ1bmN0aW9uKCl7b3B0cy5idXN5PTA7fSk7aWYoISQuc3VwcG9ydC5vcGFj aXR5JiZvcHRzLmNsZWFydHlwZSl7b3B0cy5hZnRlci5wdXNoKGZ1bmN0aW9uKCl7 cmVtb3ZlRmlsdGVyKHRoaXMsb3B0cyk7fSk7fWlmKG9wdHMuY29udGludW91cyl7 b3B0cy5hZnRlci5wdXNoKGZ1bmN0aW9uKCl7Z28oZWxzLG9wdHMsMCwhb3B0cy5y ZXYpO30pO31zYXZlT3JpZ2luYWxPcHRzKG9wdHMpO2lmKCEkLnN1cHBvcnQub3Bh Y2l0eSYmb3B0cy5jbGVhcnR5cGUmJiFvcHRzLmNsZWFydHlwZU5vQmcpe2NsZWFy VHlwZUZpeCgkc2xpZGVzKTt9aWYoJGNvbnQuY3NzKCJwb3NpdGlvbiIpPT0ic3Rh dGljIil7JGNvbnQuY3NzKCJwb3NpdGlvbiIsInJlbGF0aXZlIik7fWlmKG9wdHMu d2lkdGgpeyRjb250LndpZHRoKG9wdHMud2lkdGgpO31pZihvcHRzLmhlaWdodCYm b3B0cy5oZWlnaHQhPSJhdXRvIil7JGNvbnQuaGVpZ2h0KG9wdHMuaGVpZ2h0KTt9 aWYob3B0cy5zdGFydGluZ1NsaWRlKXtvcHRzLnN0YXJ0aW5nU2xpZGU9cGFyc2VJ bnQob3B0cy5zdGFydGluZ1NsaWRlKTt9aWYob3B0cy5yYW5kb20pe29wdHMucmFu ZG9tTWFwPVtdO2Zvcih2YXIgaT0wO2k8ZWxzLmxlbmd0aDtpKyspe29wdHMucmFu ZG9tTWFwLnB1c2goaSk7fW9wdHMucmFuZG9tTWFwLnNvcnQoZnVuY3Rpb24oYSxi KXtyZXR1cm4gTWF0aC5yYW5kb20oKS0wLjU7fSk7b3B0cy5yYW5kb21JbmRleD0w O29wdHMuc3RhcnRpbmdTbGlkZT1vcHRzLnJhbmRvbU1hcFswXTt9ZWxzZXtpZihv cHRzLnN0YXJ0aW5nU2xpZGU+PWVscy5sZW5ndGgpe29wdHMuc3RhcnRpbmdTbGlk ZT0wO319b3B0cy5jdXJyU2xpZGU9b3B0cy5zdGFydGluZ1NsaWRlPW9wdHMuc3Rh cnRpbmdTbGlkZXx8MDt2YXIgZmlyc3Q9b3B0cy5zdGFydGluZ1NsaWRlOyRzbGlk ZXMuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MH0pLmhpZGUo KS5lYWNoKGZ1bmN0aW9uKGkpe3ZhciB6PWZpcnN0P2k+PWZpcnN0P2Vscy5sZW5n dGgtKGktZmlyc3QpOmZpcnN0LWk6ZWxzLmxlbmd0aC1pOyQodGhpcykuY3NzKCJ6 LWluZGV4Iix6KTt9KTskKGVsc1tmaXJzdF0pLmNzcygib3BhY2l0eSIsMSkuc2hv dygpO3JlbW92ZUZpbHRlcihlbHNbZmlyc3RdLG9wdHMpO2lmKG9wdHMuZml0JiZv cHRzLndpZHRoKXskc2xpZGVzLndpZHRoKG9wdHMud2lkdGgpO31pZihvcHRzLmZp dCYmb3B0cy5oZWlnaHQmJm9wdHMuaGVpZ2h0IT0iYXV0byIpeyRzbGlkZXMuaGVp Z2h0KG9wdHMuaGVpZ2h0KTt9dmFyIHJlc2hhcGU9b3B0cy5jb250YWluZXJSZXNp emUmJiEkY29udC5pbm5lckhlaWdodCgpO2lmKHJlc2hhcGUpe3ZhciBtYXh3PTAs bWF4aD0wO2Zvcih2YXIgaj0wO2o8ZWxzLmxlbmd0aDtqKyspe3ZhciAkZT0kKGVs c1tqXSksZT0kZVswXSx3PSRlLm91dGVyV2lkdGgoKSxoPSRlLm91dGVySGVpZ2h0 KCk7aWYoIXcpe3c9ZS5vZmZzZXRXaWR0aDt9aWYoIWgpe2g9ZS5vZmZzZXRIZWln aHQ7fW1heHc9dz5tYXh3P3c6bWF4dzttYXhoPWg+bWF4aD9oOm1heGg7fWlmKG1h eHc+MCYmbWF4aD4wKXskY29udC5jc3Moe3dpZHRoOm1heHcrInB4IixoZWlnaHQ6 bWF4aCsicHgifSk7fX1pZihvcHRzLnBhdXNlKXskY29udC5ob3ZlcihmdW5jdGlv bigpe3RoaXMuY3ljbGVQYXVzZSsrO30sZnVuY3Rpb24oKXt0aGlzLmN5Y2xlUGF1 c2UtLTt9KTt9aWYoc3VwcG9ydE11bHRpVHJhbnNpdGlvbnMob3B0cyk9PT1mYWxz ZSl7cmV0dXJuIGZhbHNlO312YXIgcmVxdWV1ZT1mYWxzZTtvcHRpb25zLnJlcXVl dWVBdHRlbXB0cz1vcHRpb25zLnJlcXVldWVBdHRlbXB0c3x8MDskc2xpZGVzLmVh Y2goZnVuY3Rpb24oKXt2YXIgJGVsPSQodGhpcyk7dGhpcy5jeWNsZUg9KG9wdHMu Zml0JiZvcHRzLmhlaWdodCk/b3B0cy5oZWlnaHQ6JGVsLmhlaWdodCgpO3RoaXMu Y3ljbGVXPShvcHRzLmZpdCYmb3B0cy53aWR0aCk/b3B0cy53aWR0aDokZWwud2lk dGgoKTtpZigkZWwuaXMoImltZyIpKXt2YXIgbG9hZGluZ0lFPSgkLmJyb3dzZXIu bXNpZSYmdGhpcy5jeWNsZVc9PTI4JiZ0aGlzLmN5Y2xlSD09MzAmJiF0aGlzLmNv bXBsZXRlKTt2YXIgbG9hZGluZ0ZGPSgkLmJyb3dzZXIubW96aWxsYSYmdGhpcy5j eWNsZVc9PTM0JiZ0aGlzLmN5Y2xlSD09MTkmJiF0aGlzLmNvbXBsZXRlKTt2YXIg bG9hZGluZ09wPSgkLmJyb3dzZXIub3BlcmEmJigodGhpcy5jeWNsZVc9PTQyJiZ0 aGlzLmN5Y2xlSD09MTkpfHwodGhpcy5jeWNsZVc9PTM3JiZ0aGlzLmN5Y2xlSD09 MTcpKSYmIXRoaXMuY29tcGxldGUpO3ZhciBsb2FkaW5nT3RoZXI9KHRoaXMuY3lj bGVIPT0wJiZ0aGlzLmN5Y2xlVz09MCYmIXRoaXMuY29tcGxldGUpO2lmKGxvYWRp bmdJRXx8bG9hZGluZ0ZGfHxsb2FkaW5nT3B8fGxvYWRpbmdPdGhlcil7aWYoby5z JiZvcHRzLnJlcXVldWVPbkltYWdlTm90TG9hZGVkJiYrK29wdGlvbnMucmVxdWV1 ZUF0dGVtcHRzPDEwMCl7bG9nKG9wdGlvbnMucmVxdWV1ZUF0dGVtcHRzLCIgLSBp bWcgc2xpZGUgbm90IGxvYWRlZCwgcmVxdWV1aW5nIHNsaWRlc2hvdzogIix0aGlz LnNyYyx0aGlzLmN5Y2xlVyx0aGlzLmN5Y2xlSCk7c2V0VGltZW91dChmdW5jdGlv bigpeyQoby5zLG8uYykuY3ljbGUob3B0aW9ucyk7fSxvcHRzLnJlcXVldWVUaW1l b3V0KTtyZXF1ZXVlPXRydWU7cmV0dXJuIGZhbHNlO31lbHNle2xvZygiY291bGQg bm90IGRldGVybWluZSBzaXplIG9mIGltYWdlOiAiK3RoaXMuc3JjLHRoaXMuY3lj bGVXLHRoaXMuY3ljbGVIKTt9fX1yZXR1cm4gdHJ1ZTt9KTtpZihyZXF1ZXVlKXty ZXR1cm4gZmFsc2U7fW9wdHMuY3NzQmVmb3JlPW9wdHMuY3NzQmVmb3JlfHx7fTtv cHRzLmFuaW1Jbj1vcHRzLmFuaW1Jbnx8e307b3B0cy5hbmltT3V0PW9wdHMuYW5p bU91dHx8e307JHNsaWRlcy5ub3QoIjplcSgiK2ZpcnN0KyIpIikuY3NzKG9wdHMu Y3NzQmVmb3JlKTtpZihvcHRzLmNzc0ZpcnN0KXskKCRzbGlkZXNbZmlyc3RdKS5j c3Mob3B0cy5jc3NGaXJzdCk7fWlmKG9wdHMudGltZW91dCl7b3B0cy50aW1lb3V0 PXBhcnNlSW50KG9wdHMudGltZW91dCk7aWYob3B0cy5zcGVlZC5jb25zdHJ1Y3Rv cj09U3RyaW5nKXtvcHRzLnNwZWVkPSQuZnguc3BlZWRzW29wdHMuc3BlZWRdfHxw YXJzZUludChvcHRzLnNwZWVkKTt9aWYoIW9wdHMuc3luYyl7b3B0cy5zcGVlZD1v cHRzLnNwZWVkLzI7fXdoaWxlKChvcHRzLnRpbWVvdXQtb3B0cy5zcGVlZCk8MjUw KXtvcHRzLnRpbWVvdXQrPW9wdHMuc3BlZWQ7fX1pZihvcHRzLmVhc2luZyl7b3B0 cy5lYXNlSW49b3B0cy5lYXNlT3V0PW9wdHMuZWFzaW5nO31pZighb3B0cy5zcGVl ZEluKXtvcHRzLnNwZWVkSW49b3B0cy5zcGVlZDt9aWYoIW9wdHMuc3BlZWRPdXQp e29wdHMuc3BlZWRPdXQ9b3B0cy5zcGVlZDt9b3B0cy5zbGlkZUNvdW50PWVscy5s ZW5ndGg7b3B0cy5jdXJyU2xpZGU9b3B0cy5sYXN0U2xpZGU9Zmlyc3Q7aWYob3B0 cy5yYW5kb20pe29wdHMubmV4dFNsaWRlPW9wdHMuY3VyclNsaWRlO2lmKCsrb3B0 cy5yYW5kb21JbmRleD09ZWxzLmxlbmd0aCl7b3B0cy5yYW5kb21JbmRleD0wO31v cHRzLm5leHRTbGlkZT1vcHRzLnJhbmRvbU1hcFtvcHRzLnJhbmRvbUluZGV4XTt9 ZWxzZXtvcHRzLm5leHRTbGlkZT1vcHRzLnN0YXJ0aW5nU2xpZGU+PShlbHMubGVu Z3RoLTEpPzA6b3B0cy5zdGFydGluZ1NsaWRlKzE7fWlmKCFvcHRzLm11bHRpRngp e3ZhciBpbml0PSQuZm4uY3ljbGUudHJhbnNpdGlvbnNbb3B0cy5meF07aWYoJC5p c0Z1bmN0aW9uKGluaXQpKXtpbml0KCRjb250LCRzbGlkZXMsb3B0cyk7fWVsc2V7 aWYob3B0cy5meCE9ImN1c3RvbSImJiFvcHRzLm11bHRpRngpe2xvZygidW5rbm93 biB0cmFuc2l0aW9uOiAiK29wdHMuZngsIjsgc2xpZGVzaG93IHRlcm1pbmF0aW5n Iik7cmV0dXJuIGZhbHNlO319fXZhciBlMD0kc2xpZGVzW2ZpcnN0XTtpZihvcHRz LmJlZm9yZS5sZW5ndGgpe29wdHMuYmVmb3JlWzBdLmFwcGx5KGUwLFtlMCxlMCxv cHRzLHRydWVdKTt9aWYob3B0cy5hZnRlci5sZW5ndGg+MSl7b3B0cy5hZnRlclsx XS5hcHBseShlMCxbZTAsZTAsb3B0cyx0cnVlXSk7fWlmKG9wdHMubmV4dCl7JChv cHRzLm5leHQpLmJpbmQob3B0cy5wcmV2TmV4dEV2ZW50LGZ1bmN0aW9uKCl7cmV0 dXJuIGFkdmFuY2Uob3B0cyxvcHRzLnJldj8tMToxKTt9KTt9aWYob3B0cy5wcmV2 KXskKG9wdHMucHJldikuYmluZChvcHRzLnByZXZOZXh0RXZlbnQsZnVuY3Rpb24o KXtyZXR1cm4gYWR2YW5jZShvcHRzLG9wdHMucmV2PzE6LTEpO30pO31pZihvcHRz LnBhZ2VyKXtidWlsZFBhZ2VyKGVscyxvcHRzKTt9ZXhwb3NlQWRkU2xpZGUob3B0 cyxlbHMpO3JldHVybiBvcHRzO31mdW5jdGlvbiBzYXZlT3JpZ2luYWxPcHRzKG9w dHMpe29wdHMub3JpZ2luYWw9e2JlZm9yZTpbXSxhZnRlcjpbXX07b3B0cy5vcmln aW5hbC5jc3NCZWZvcmU9JC5leHRlbmQoe30sb3B0cy5jc3NCZWZvcmUpO29wdHMu b3JpZ2luYWwuY3NzQWZ0ZXI9JC5leHRlbmQoe30sb3B0cy5jc3NBZnRlcik7b3B0 cy5vcmlnaW5hbC5hbmltSW49JC5leHRlbmQoe30sb3B0cy5hbmltSW4pO29wdHMu b3JpZ2luYWwuYW5pbU91dD0kLmV4dGVuZCh7fSxvcHRzLmFuaW1PdXQpOyQuZWFj aChvcHRzLmJlZm9yZSxmdW5jdGlvbigpe29wdHMub3JpZ2luYWwuYmVmb3JlLnB1 c2godGhpcyk7fSk7JC5lYWNoKG9wdHMuYWZ0ZXIsZnVuY3Rpb24oKXtvcHRzLm9y aWdpbmFsLmFmdGVyLnB1c2godGhpcyk7fSk7fWZ1bmN0aW9uIHN1cHBvcnRNdWx0 aVRyYW5zaXRpb25zKG9wdHMpe3ZhciBpLHR4LHR4cz0kLmZuLmN5Y2xlLnRyYW5z aXRpb25zO2lmKG9wdHMuZnguaW5kZXhPZigiLCIpPjApe29wdHMubXVsdGlGeD10 cnVlO29wdHMuZnhzPW9wdHMuZngucmVwbGFjZSgvXHMqL2csIiIpLnNwbGl0KCIs Iik7Zm9yKGk9MDtpPG9wdHMuZnhzLmxlbmd0aDtpKyspe3ZhciBmeD1vcHRzLmZ4 c1tpXTt0eD10eHNbZnhdO2lmKCF0eHx8IXR4cy5oYXNPd25Qcm9wZXJ0eShmeCl8 fCEkLmlzRnVuY3Rpb24odHgpKXtsb2coImRpc2NhcmRpbmcgdW5rbm93biB0cmFu c2l0aW9uOiAiLGZ4KTtvcHRzLmZ4cy5zcGxpY2UoaSwxKTtpLS07fX1pZighb3B0 cy5meHMubGVuZ3RoKXtsb2coIk5vIHZhbGlkIHRyYW5zaXRpb25zIG5hbWVkOyBz bGlkZXNob3cgdGVybWluYXRpbmcuIik7cmV0dXJuIGZhbHNlO319ZWxzZXtpZihv cHRzLmZ4PT0iYWxsIil7b3B0cy5tdWx0aUZ4PXRydWU7b3B0cy5meHM9W107Zm9y KHAgaW4gdHhzKXt0eD10eHNbcF07aWYodHhzLmhhc093blByb3BlcnR5KHApJiYk LmlzRnVuY3Rpb24odHgpKXtvcHRzLmZ4cy5wdXNoKHApO319fX1pZihvcHRzLm11 bHRpRngmJm9wdHMucmFuZG9taXplRWZmZWN0cyl7dmFyIHIxPU1hdGguZmxvb3Io TWF0aC5yYW5kb20oKSoyMCkrMzA7Zm9yKGk9MDtpPHIxO2krKyl7dmFyIHIyPU1h dGguZmxvb3IoTWF0aC5yYW5kb20oKSpvcHRzLmZ4cy5sZW5ndGgpO29wdHMuZnhz LnB1c2gob3B0cy5meHMuc3BsaWNlKHIyLDEpWzBdKTt9ZGVidWcoInJhbmRvbWl6 ZWQgZnggc2VxdWVuY2U6ICIsb3B0cy5meHMpO31yZXR1cm4gdHJ1ZTt9ZnVuY3Rp b24gZXhwb3NlQWRkU2xpZGUob3B0cyxlbHMpe29wdHMuYWRkU2xpZGU9ZnVuY3Rp b24obmV3U2xpZGUscHJlcGVuZCl7dmFyICRzPSQobmV3U2xpZGUpLHM9JHNbMF07 aWYoIW9wdHMuYXV0b3N0b3BDb3VudCl7b3B0cy5jb3VudGRvd24rKzt9ZWxzW3By ZXBlbmQ/InVuc2hpZnQiOiJwdXNoIl0ocyk7aWYob3B0cy5lbHMpe29wdHMuZWxz W3ByZXBlbmQ/InVuc2hpZnQiOiJwdXNoIl0ocyk7fW9wdHMuc2xpZGVDb3VudD1l bHMubGVuZ3RoOyRzLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpOyRzW3ByZXBl bmQ/InByZXBlbmRUbyI6ImFwcGVuZFRvIl0ob3B0cy4kY29udCk7aWYocHJlcGVu ZCl7b3B0cy5jdXJyU2xpZGUrKztvcHRzLm5leHRTbGlkZSsrO31pZighJC5zdXBw b3J0Lm9wYWNpdHkmJm9wdHMuY2xlYXJ0eXBlJiYhb3B0cy5jbGVhcnR5cGVOb0Jn KXtjbGVhclR5cGVGaXgoJHMpO31pZihvcHRzLmZpdCYmb3B0cy53aWR0aCl7JHMu d2lkdGgob3B0cy53aWR0aCk7fWlmKG9wdHMuZml0JiZvcHRzLmhlaWdodCYmb3B0 cy5oZWlnaHQhPSJhdXRvIil7JHNsaWRlcy5oZWlnaHQob3B0cy5oZWlnaHQpO31z LmN5Y2xlSD0ob3B0cy5maXQmJm9wdHMuaGVpZ2h0KT9vcHRzLmhlaWdodDokcy5o ZWlnaHQoKTtzLmN5Y2xlVz0ob3B0cy5maXQmJm9wdHMud2lkdGgpP29wdHMud2lk dGg6JHMud2lkdGgoKTskcy5jc3Mob3B0cy5jc3NCZWZvcmUpO2lmKG9wdHMucGFn ZXIpeyQuZm4uY3ljbGUuY3JlYXRlUGFnZXJBbmNob3IoZWxzLmxlbmd0aC0xLHMs JChvcHRzLnBhZ2VyKSxlbHMsb3B0cyk7fWlmKCQuaXNGdW5jdGlvbihvcHRzLm9u QWRkU2xpZGUpKXtvcHRzLm9uQWRkU2xpZGUoJHMpO31lbHNleyRzLmhpZGUoKTt9 fTt9JC5mbi5jeWNsZS5yZXNldFN0YXRlPWZ1bmN0aW9uKG9wdHMsZngpe2Z4PWZ4 fHxvcHRzLmZ4O29wdHMuYmVmb3JlPVtdO29wdHMuYWZ0ZXI9W107b3B0cy5jc3NC ZWZvcmU9JC5leHRlbmQoe30sb3B0cy5vcmlnaW5hbC5jc3NCZWZvcmUpO29wdHMu Y3NzQWZ0ZXI9JC5leHRlbmQoe30sb3B0cy5vcmlnaW5hbC5jc3NBZnRlcik7b3B0 cy5hbmltSW49JC5leHRlbmQoe30sb3B0cy5vcmlnaW5hbC5hbmltSW4pO29wdHMu YW5pbU91dD0kLmV4dGVuZCh7fSxvcHRzLm9yaWdpbmFsLmFuaW1PdXQpO29wdHMu ZnhGbj1udWxsOyQuZWFjaChvcHRzLm9yaWdpbmFsLmJlZm9yZSxmdW5jdGlvbigp e29wdHMuYmVmb3JlLnB1c2godGhpcyk7fSk7JC5lYWNoKG9wdHMub3JpZ2luYWwu YWZ0ZXIsZnVuY3Rpb24oKXtvcHRzLmFmdGVyLnB1c2godGhpcyk7fSk7dmFyIGlu aXQ9JC5mbi5jeWNsZS50cmFuc2l0aW9uc1tmeF07aWYoJC5pc0Z1bmN0aW9uKGlu aXQpKXtpbml0KG9wdHMuJGNvbnQsJChvcHRzLmVsZW1lbnRzKSxvcHRzKTt9fTtm dW5jdGlvbiBnbyhlbHMsb3B0cyxtYW51YWwsZndkKXtpZihtYW51YWwmJm9wdHMu YnVzeSYmb3B0cy5tYW51YWxUcnVtcCl7JChlbHMpLnN0b3AodHJ1ZSx0cnVlKTtv cHRzLmJ1c3k9ZmFsc2U7fWlmKG9wdHMuYnVzeSl7cmV0dXJuO312YXIgcD1vcHRz LiRjb250WzBdLGN1cnI9ZWxzW29wdHMuY3VyclNsaWRlXSxuZXh0PWVsc1tvcHRz Lm5leHRTbGlkZV07aWYocC5jeWNsZVN0b3AhPW9wdHMuc3RvcENvdW50fHxwLmN5 Y2xlVGltZW91dD09PTAmJiFtYW51YWwpe3JldHVybjt9aWYoIW1hbnVhbCYmIXAu Y3ljbGVQYXVzZSYmKChvcHRzLmF1dG9zdG9wJiYoLS1vcHRzLmNvdW50ZG93bjw9 MCkpfHwob3B0cy5ub3dyYXAmJiFvcHRzLnJhbmRvbSYmb3B0cy5uZXh0U2xpZGU8 b3B0cy5jdXJyU2xpZGUpKSl7aWYob3B0cy5lbmQpe29wdHMuZW5kKG9wdHMpO31y ZXR1cm47fWlmKG1hbnVhbHx8IXAuY3ljbGVQYXVzZSl7dmFyIGZ4PW9wdHMuZng7 Y3Vyci5jeWNsZUg9Y3Vyci5jeWNsZUh8fCQoY3VycikuaGVpZ2h0KCk7Y3Vyci5j eWNsZVc9Y3Vyci5jeWNsZVd8fCQoY3Vycikud2lkdGgoKTtuZXh0LmN5Y2xlSD1u ZXh0LmN5Y2xlSHx8JChuZXh0KS5oZWlnaHQoKTtuZXh0LmN5Y2xlVz1uZXh0LmN5 Y2xlV3x8JChuZXh0KS53aWR0aCgpO2lmKG9wdHMubXVsdGlGeCl7aWYob3B0cy5s YXN0Rng9PXVuZGVmaW5lZHx8KytvcHRzLmxhc3RGeD49b3B0cy5meHMubGVuZ3Ro KXtvcHRzLmxhc3RGeD0wO31meD1vcHRzLmZ4c1tvcHRzLmxhc3RGeF07b3B0cy5j dXJyRng9Zng7fWlmKG9wdHMub25lVGltZUZ4KXtmeD1vcHRzLm9uZVRpbWVGeDtv cHRzLm9uZVRpbWVGeD1udWxsO30kLmZuLmN5Y2xlLnJlc2V0U3RhdGUob3B0cyxm eCk7aWYob3B0cy5iZWZvcmUubGVuZ3RoKXskLmVhY2gob3B0cy5iZWZvcmUsZnVu Y3Rpb24oaSxvKXtpZihwLmN5Y2xlU3RvcCE9b3B0cy5zdG9wQ291bnQpe3JldHVy bjt9by5hcHBseShuZXh0LFtjdXJyLG5leHQsb3B0cyxmd2RdKTt9KTt9dmFyIGFm dGVyPWZ1bmN0aW9uKCl7JC5lYWNoKG9wdHMuYWZ0ZXIsZnVuY3Rpb24oaSxvKXtp ZihwLmN5Y2xlU3RvcCE9b3B0cy5zdG9wQ291bnQpe3JldHVybjt9by5hcHBseShu ZXh0LFtjdXJyLG5leHQsb3B0cyxmd2RdKTt9KTt9O2lmKG9wdHMubmV4dFNsaWRl IT1vcHRzLmN1cnJTbGlkZSl7b3B0cy5idXN5PTE7aWYob3B0cy5meEZuKXtvcHRz LmZ4Rm4oY3VycixuZXh0LG9wdHMsYWZ0ZXIsZndkKTt9ZWxzZXtpZigkLmlzRnVu Y3Rpb24oJC5mbi5jeWNsZVtvcHRzLmZ4XSkpeyQuZm4uY3ljbGVbb3B0cy5meF0o Y3VycixuZXh0LG9wdHMsYWZ0ZXIpO31lbHNleyQuZm4uY3ljbGUuY3VzdG9tKGN1 cnIsbmV4dCxvcHRzLGFmdGVyLG1hbnVhbCYmb3B0cy5mYXN0T25FdmVudCk7fX19 b3B0cy5sYXN0U2xpZGU9b3B0cy5jdXJyU2xpZGU7aWYob3B0cy5yYW5kb20pe29w dHMuY3VyclNsaWRlPW9wdHMubmV4dFNsaWRlO2lmKCsrb3B0cy5yYW5kb21JbmRl eD09ZWxzLmxlbmd0aCl7b3B0cy5yYW5kb21JbmRleD0wO31vcHRzLm5leHRTbGlk ZT1vcHRzLnJhbmRvbU1hcFtvcHRzLnJhbmRvbUluZGV4XTt9ZWxzZXt2YXIgcm9s bD0ob3B0cy5uZXh0U2xpZGUrMSk9PWVscy5sZW5ndGg7b3B0cy5uZXh0U2xpZGU9 cm9sbD8wOm9wdHMubmV4dFNsaWRlKzE7b3B0cy5jdXJyU2xpZGU9cm9sbD9lbHMu bGVuZ3RoLTE6b3B0cy5uZXh0U2xpZGUtMTt9aWYob3B0cy5wYWdlcil7JC5mbi5j eWNsZS51cGRhdGVBY3RpdmVQYWdlckxpbmsob3B0cy5wYWdlcixvcHRzLmN1cnJT bGlkZSk7fX12YXIgbXM9MDtpZihvcHRzLnRpbWVvdXQmJiFvcHRzLmNvbnRpbnVv dXMpe21zPWdldFRpbWVvdXQoY3VycixuZXh0LG9wdHMsZndkKTt9ZWxzZXtpZihv cHRzLmNvbnRpbnVvdXMmJnAuY3ljbGVQYXVzZSl7bXM9MTA7fX1pZihtcz4wKXtw LmN5Y2xlVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z28oZWxzLG9wdHMs MCwhb3B0cy5yZXYpO30sbXMpO319JC5mbi5jeWNsZS51cGRhdGVBY3RpdmVQYWdl ckxpbms9ZnVuY3Rpb24ocGFnZXIsY3VyclNsaWRlKXskKHBhZ2VyKS5maW5kKCJh IikucmVtb3ZlQ2xhc3MoImFjdGl2ZVNsaWRlIikuZmlsdGVyKCJhOmVxKCIrY3Vy clNsaWRlKyIpIikuYWRkQ2xhc3MoImFjdGl2ZVNsaWRlIik7fTtmdW5jdGlvbiBn ZXRUaW1lb3V0KGN1cnIsbmV4dCxvcHRzLGZ3ZCl7aWYob3B0cy50aW1lb3V0Rm4p e3ZhciB0PW9wdHMudGltZW91dEZuKGN1cnIsbmV4dCxvcHRzLGZ3ZCk7d2hpbGUo KHQtb3B0cy5zcGVlZCk8MjUwKXt0Kz1vcHRzLnNwZWVkO31kZWJ1ZygiY2FsY3Vs YXRlZCB0aW1lb3V0OiAiK3QrIjsgc3BlZWQ6ICIrb3B0cy5zcGVlZCk7aWYodCE9 PWZhbHNlKXtyZXR1cm4gdDt9fXJldHVybiBvcHRzLnRpbWVvdXQ7fSQuZm4uY3lj bGUubmV4dD1mdW5jdGlvbihvcHRzKXthZHZhbmNlKG9wdHMsb3B0cy5yZXY/LTE6 MSk7fTskLmZuLmN5Y2xlLnByZXY9ZnVuY3Rpb24ob3B0cyl7YWR2YW5jZShvcHRz LG9wdHMucmV2PzE6LTEpO307ZnVuY3Rpb24gYWR2YW5jZShvcHRzLHZhbCl7dmFy IGVscz1vcHRzLmVsZW1lbnRzO3ZhciBwPW9wdHMuJGNvbnRbMF0sdGltZW91dD1w LmN5Y2xlVGltZW91dDtpZih0aW1lb3V0KXtjbGVhclRpbWVvdXQodGltZW91dCk7 cC5jeWNsZVRpbWVvdXQ9MDt9aWYob3B0cy5yYW5kb20mJnZhbDwwKXtvcHRzLnJh bmRvbUluZGV4LS07aWYoLS1vcHRzLnJhbmRvbUluZGV4PT0tMil7b3B0cy5yYW5k b21JbmRleD1lbHMubGVuZ3RoLTI7fWVsc2V7aWYob3B0cy5yYW5kb21JbmRleD09 LTEpe29wdHMucmFuZG9tSW5kZXg9ZWxzLmxlbmd0aC0xO319b3B0cy5uZXh0U2xp ZGU9b3B0cy5yYW5kb21NYXBbb3B0cy5yYW5kb21JbmRleF07fWVsc2V7aWYob3B0 cy5yYW5kb20pe2lmKCsrb3B0cy5yYW5kb21JbmRleD09ZWxzLmxlbmd0aCl7b3B0 cy5yYW5kb21JbmRleD0wO31vcHRzLm5leHRTbGlkZT1vcHRzLnJhbmRvbU1hcFtv cHRzLnJhbmRvbUluZGV4XTt9ZWxzZXtvcHRzLm5leHRTbGlkZT1vcHRzLmN1cnJT bGlkZSt2YWw7aWYob3B0cy5uZXh0U2xpZGU8MCl7aWYob3B0cy5ub3dyYXApe3Jl dHVybiBmYWxzZTt9b3B0cy5uZXh0U2xpZGU9ZWxzLmxlbmd0aC0xO31lbHNle2lm KG9wdHMubmV4dFNsaWRlPj1lbHMubGVuZ3RoKXtpZihvcHRzLm5vd3JhcCl7cmV0 dXJuIGZhbHNlO31vcHRzLm5leHRTbGlkZT0wO319fX1pZigkLmlzRnVuY3Rpb24o b3B0cy5wcmV2TmV4dENsaWNrKSl7b3B0cy5wcmV2TmV4dENsaWNrKHZhbD4wLG9w dHMubmV4dFNsaWRlLGVsc1tvcHRzLm5leHRTbGlkZV0pO31nbyhlbHMsb3B0cywx LHZhbD49MCk7cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBidWlsZFBhZ2VyKGVscyxv cHRzKXt2YXIgJHA9JChvcHRzLnBhZ2VyKTskLmVhY2goZWxzLGZ1bmN0aW9uKGks byl7JC5mbi5jeWNsZS5jcmVhdGVQYWdlckFuY2hvcihpLG8sJHAsZWxzLG9wdHMp O30pOyQuZm4uY3ljbGUudXBkYXRlQWN0aXZlUGFnZXJMaW5rKG9wdHMucGFnZXIs b3B0cy5zdGFydGluZ1NsaWRlKTt9JC5mbi5jeWNsZS5jcmVhdGVQYWdlckFuY2hv cj1mdW5jdGlvbihpLGVsLCRwLGVscyxvcHRzKXt2YXIgYTtpZigkLmlzRnVuY3Rp b24ob3B0cy5wYWdlckFuY2hvckJ1aWxkZXIpKXthPW9wdHMucGFnZXJBbmNob3JC dWlsZGVyKGksZWwpO31lbHNle2E9JzxhIGhyZWY9IiMiPicrKGkrMSkrIjwvYT4i O31pZighYSl7cmV0dXJuO312YXIgJGE9JChhKTtpZigkYS5wYXJlbnRzKCJib2R5 IikubGVuZ3RoPT09MCl7dmFyIGFycj1bXTtpZigkcC5sZW5ndGg+MSl7JHAuZWFj aChmdW5jdGlvbigpe3ZhciAkY2xvbmU9JGEuY2xvbmUodHJ1ZSk7JCh0aGlzKS5h cHBlbmQoJGNsb25lKTthcnIucHVzaCgkY2xvbmUpO30pOyRhPSQoYXJyKTt9ZWxz ZXskYS5hcHBlbmRUbygkcCk7fX0kYS5iaW5kKG9wdHMucGFnZXJFdmVudCxmdW5j dGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7b3B0cy5uZXh0U2xpZGU9aTt2YXIg cD1vcHRzLiRjb250WzBdLHRpbWVvdXQ9cC5jeWNsZVRpbWVvdXQ7aWYodGltZW91 dCl7Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO3AuY3ljbGVUaW1lb3V0PTA7fWlmKCQu aXNGdW5jdGlvbihvcHRzLnBhZ2VyQ2xpY2spKXtvcHRzLnBhZ2VyQ2xpY2sob3B0 cy5uZXh0U2xpZGUsZWxzW29wdHMubmV4dFNsaWRlXSk7fWdvKGVscyxvcHRzLDEs b3B0cy5jdXJyU2xpZGU8aSk7cmV0dXJuIGZhbHNlO30pO2lmKG9wdHMucGFnZXJF dmVudCE9ImNsaWNrIil7JGEuY2xpY2soZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2U7 fSk7fWlmKG9wdHMucGF1c2VPblBhZ2VySG92ZXIpeyRhLmhvdmVyKGZ1bmN0aW9u KCl7b3B0cy4kY29udFswXS5jeWNsZVBhdXNlKys7fSxmdW5jdGlvbigpe29wdHMu JGNvbnRbMF0uY3ljbGVQYXVzZS0tO30pO319OyQuZm4uY3ljbGUuaG9wc0Zyb21M YXN0PWZ1bmN0aW9uKG9wdHMsZndkKXt2YXIgaG9wcyxsPW9wdHMubGFzdFNsaWRl LGM9b3B0cy5jdXJyU2xpZGU7aWYoZndkKXtob3BzPWM+bD9jLWw6b3B0cy5zbGlk ZUNvdW50LWw7fWVsc2V7aG9wcz1jPGw/bC1jOmwrb3B0cy5zbGlkZUNvdW50LWM7 fXJldHVybiBob3BzO307ZnVuY3Rpb24gY2xlYXJUeXBlRml4KCRzbGlkZXMpe2Z1 bmN0aW9uIGhleChzKXtzPXBhcnNlSW50KHMpLnRvU3RyaW5nKDE2KTtyZXR1cm4g cy5sZW5ndGg8Mj8iMCIrczpzO31mdW5jdGlvbiBnZXRCZyhlKXtmb3IoO2UmJmUu bm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9Imh0bWwiO2U9ZS5wYXJlbnROb2RlKXt2 YXIgdj0kLmNzcyhlLCJiYWNrZ3JvdW5kLWNvbG9yIik7aWYodi5pbmRleE9mKCJy Z2IiKT49MCl7dmFyIHJnYj12Lm1hdGNoKC9cZCsvZyk7cmV0dXJuIiMiK2hleChy Z2JbMF0pK2hleChyZ2JbMV0pK2hleChyZ2JbMl0pO31pZih2JiZ2IT0idHJhbnNw YXJlbnQiKXtyZXR1cm4gdjt9fXJldHVybiIjZmZmZmZmIjt9JHNsaWRlcy5lYWNo KGZ1bmN0aW9uKCl7JCh0aGlzKS5jc3MoImJhY2tncm91bmQtY29sb3IiLGdldEJn KHRoaXMpKTt9KTt9JC5mbi5jeWNsZS5jb21tb25SZXNldD1mdW5jdGlvbihjdXJy LG5leHQsb3B0cyx3LGgscmV2KXskKG9wdHMuZWxlbWVudHMpLm5vdChjdXJyKS5o aWRlKCk7b3B0cy5jc3NCZWZvcmUub3BhY2l0eT0xO29wdHMuY3NzQmVmb3JlLmRp c3BsYXk9ImJsb2NrIjtpZih3IT09ZmFsc2UmJm5leHQuY3ljbGVXPjApe29wdHMu Y3NzQmVmb3JlLndpZHRoPW5leHQuY3ljbGVXO31pZihoIT09ZmFsc2UmJm5leHQu Y3ljbGVIPjApe29wdHMuY3NzQmVmb3JlLmhlaWdodD1uZXh0LmN5Y2xlSDt9b3B0 cy5jc3NBZnRlcj1vcHRzLmNzc0FmdGVyfHx7fTtvcHRzLmNzc0FmdGVyLmRpc3Bs YXk9Im5vbmUiOyQoY3VycikuY3NzKCJ6SW5kZXgiLG9wdHMuc2xpZGVDb3VudCso cmV2PT09dHJ1ZT8xOjApKTskKG5leHQpLmNzcygiekluZGV4IixvcHRzLnNsaWRl Q291bnQrKHJldj09PXRydWU/MDoxKSk7fTskLmZuLmN5Y2xlLmN1c3RvbT1mdW5j dGlvbihjdXJyLG5leHQsb3B0cyxjYixzcGVlZE92ZXJyaWRlKXt2YXIgJGw9JChj dXJyKSwkbj0kKG5leHQpO3ZhciBzcGVlZEluPW9wdHMuc3BlZWRJbixzcGVlZE91 dD1vcHRzLnNwZWVkT3V0LGVhc2VJbj1vcHRzLmVhc2VJbixlYXNlT3V0PW9wdHMu ZWFzZU91dDskbi5jc3Mob3B0cy5jc3NCZWZvcmUpO2lmKHNwZWVkT3ZlcnJpZGUp e2lmKHR5cGVvZiBzcGVlZE92ZXJyaWRlPT0ibnVtYmVyIil7c3BlZWRJbj1zcGVl ZE91dD1zcGVlZE92ZXJyaWRlO31lbHNle3NwZWVkSW49c3BlZWRPdXQ9MTt9ZWFz ZUluPWVhc2VPdXQ9bnVsbDt9dmFyIGZuPWZ1bmN0aW9uKCl7JG4uYW5pbWF0ZShv cHRzLmFuaW1JbixzcGVlZEluLGVhc2VJbixjYik7fTskbC5hbmltYXRlKG9wdHMu YW5pbU91dCxzcGVlZE91dCxlYXNlT3V0LGZ1bmN0aW9uKCl7aWYob3B0cy5jc3NB ZnRlcil7JGwuY3NzKG9wdHMuY3NzQWZ0ZXIpO31pZighb3B0cy5zeW5jKXtmbigp O319KTtpZihvcHRzLnN5bmMpe2ZuKCk7fX07JC5mbi5jeWNsZS50cmFuc2l0aW9u cz17ZmFkZTpmdW5jdGlvbigkY29udCwkc2xpZGVzLG9wdHMpeyRzbGlkZXMubm90 KCI6ZXEoIitvcHRzLmN1cnJTbGlkZSsiKSIpLmNzcygib3BhY2l0eSIsMCk7b3B0 cy5iZWZvcmUucHVzaChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyl7JC5mbi5jeWNs ZS5jb21tb25SZXNldChjdXJyLG5leHQsb3B0cyk7b3B0cy5jc3NCZWZvcmUub3Bh Y2l0eT0wO30pO29wdHMuYW5pbUluPXtvcGFjaXR5OjF9O29wdHMuYW5pbU91dD17 b3BhY2l0eTowfTtvcHRzLmNzc0JlZm9yZT17dG9wOjAsbGVmdDowfTt9fTskLmZu LmN5Y2xlLnZlcj1mdW5jdGlvbigpe3JldHVybiB2ZXI7fTskLmZuLmN5Y2xlLmRl ZmF1bHRzPXtmeDoiZmFkZSIsdGltZW91dDo0MDAwLHRpbWVvdXRGbjpudWxsLGNv bnRpbnVvdXM6MCxzcGVlZDoxMDAwLHNwZWVkSW46bnVsbCxzcGVlZE91dDpudWxs LG5leHQ6bnVsbCxwcmV2Om51bGwscHJldk5leHRDbGljazpudWxsLHByZXZOZXh0 RXZlbnQ6ImNsaWNrIixwYWdlcjpudWxsLHBhZ2VyQ2xpY2s6bnVsbCxwYWdlckV2 ZW50OiJjbGljayIscGFnZXJBbmNob3JCdWlsZGVyOm51bGwsYmVmb3JlOm51bGws YWZ0ZXI6bnVsbCxlbmQ6bnVsbCxlYXNpbmc6bnVsbCxlYXNlSW46bnVsbCxlYXNl T3V0Om51bGwsc2h1ZmZsZTpudWxsLGFuaW1JbjpudWxsLGFuaW1PdXQ6bnVsbCxj c3NCZWZvcmU6bnVsbCxjc3NBZnRlcjpudWxsLGZ4Rm46bnVsbCxoZWlnaHQ6ImF1 dG8iLHN0YXJ0aW5nU2xpZGU6MCxzeW5jOjEscmFuZG9tOjAsZml0OjAsY29udGFp bmVyUmVzaXplOjEscGF1c2U6MCxwYXVzZU9uUGFnZXJIb3ZlcjowLGF1dG9zdG9w OjAsYXV0b3N0b3BDb3VudDowLGRlbGF5OjAsc2xpZGVFeHByOm51bGwsY2xlYXJ0 eXBlOiEkLnN1cHBvcnQub3BhY2l0eSxjbGVhcnR5cGVOb0JnOmZhbHNlLG5vd3Jh cDowLGZhc3RPbkV2ZW50OjAscmFuZG9taXplRWZmZWN0czoxLHJldjowLG1hbnVh bFRydW1wOnRydWUscmVxdWV1ZU9uSW1hZ2VOb3RMb2FkZWQ6dHJ1ZSxyZXF1ZXVl VGltZW91dDoyNTB9O30pKGpRdWVyeSk7DQovKg0KICogalF1ZXJ5IEN5Y2xlIFBs dWdpbiBUcmFuc2l0aW9uIERlZmluaXRpb25zDQogKiBUaGlzIHNjcmlwdCBpcyBh IHBsdWdpbiBmb3IgdGhlIGpRdWVyeSBDeWNsZSBQbHVnaW4NCiAqIEV4YW1wbGVz IGFuZCBkb2N1bWVudGF0aW9uIGF0OiBodHRwOi8vbWFsc3VwLmNvbS9qcXVlcnkv Y3ljbGUvDQogKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOCBNLiBBbHN1cA0KICog VmVyc2lvbjoJIDIuNzINCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBh bmQgR1BMIGxpY2Vuc2VzOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9taXQtbGljZW5zZS5waHANCiAqIGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy9ncGwuaHRtbA0KICovDQooZnVuY3Rpb24oJCl7JC5mbi5jeWNsZS50 cmFuc2l0aW9ucy5ub25lPWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0cyl7b3B0 cy5meEZuPWZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzLGFmdGVyKXskKG5leHQpLnNo b3coKTskKGN1cnIpLmhpZGUoKTthZnRlcigpO307fTskLmZuLmN5Y2xlLnRyYW5z aXRpb25zLnNjcm9sbFVwPWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0cyl7JGNv bnQuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpO29wdHMuYmVmb3JlLnB1c2goJC5m bi5jeWNsZS5jb21tb25SZXNldCk7dmFyIGg9JGNvbnQuaGVpZ2h0KCk7b3B0cy5j c3NCZWZvcmU9e3RvcDpoLGxlZnQ6MH07b3B0cy5jc3NGaXJzdD17dG9wOjB9O29w dHMuYW5pbUluPXt0b3A6MH07b3B0cy5hbmltT3V0PXt0b3A6LWh9O307JC5mbi5j eWNsZS50cmFuc2l0aW9ucy5zY3JvbGxEb3duPWZ1bmN0aW9uKCRjb250LCRzbGlk ZXMsb3B0cyl7JGNvbnQuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpO29wdHMuYmVm b3JlLnB1c2goJC5mbi5jeWNsZS5jb21tb25SZXNldCk7dmFyIGg9JGNvbnQuaGVp Z2h0KCk7b3B0cy5jc3NGaXJzdD17dG9wOjB9O29wdHMuY3NzQmVmb3JlPXt0b3A6 LWgsbGVmdDowfTtvcHRzLmFuaW1Jbj17dG9wOjB9O29wdHMuYW5pbU91dD17dG9w Omh9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy5zY3JvbGxMZWZ0PWZ1bmN0aW9u KCRjb250LCRzbGlkZXMsb3B0cyl7JGNvbnQuY3NzKCJvdmVyZmxvdyIsImhpZGRl biIpO29wdHMuYmVmb3JlLnB1c2goJC5mbi5jeWNsZS5jb21tb25SZXNldCk7dmFy IHc9JGNvbnQud2lkdGgoKTtvcHRzLmNzc0ZpcnN0PXtsZWZ0OjB9O29wdHMuY3Nz QmVmb3JlPXtsZWZ0OncsdG9wOjB9O29wdHMuYW5pbUluPXtsZWZ0OjB9O29wdHMu YW5pbU91dD17bGVmdDowLXd9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy5zY3Jv bGxSaWdodD1mdW5jdGlvbigkY29udCwkc2xpZGVzLG9wdHMpeyRjb250LmNzcygi b3ZlcmZsb3ciLCJoaWRkZW4iKTtvcHRzLmJlZm9yZS5wdXNoKCQuZm4uY3ljbGUu Y29tbW9uUmVzZXQpO3ZhciB3PSRjb250LndpZHRoKCk7b3B0cy5jc3NGaXJzdD17 bGVmdDowfTtvcHRzLmNzc0JlZm9yZT17bGVmdDotdyx0b3A6MH07b3B0cy5hbmlt SW49e2xlZnQ6MH07b3B0cy5hbmltT3V0PXtsZWZ0Ond9O307JC5mbi5jeWNsZS50 cmFuc2l0aW9ucy5zY3JvbGxIb3J6PWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0 cyl7JGNvbnQuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLndpZHRoKCk7b3B0cy5i ZWZvcmUucHVzaChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyxmd2QpeyQuZm4uY3lj bGUuY29tbW9uUmVzZXQoY3VycixuZXh0LG9wdHMpO29wdHMuY3NzQmVmb3JlLmxl ZnQ9ZndkPyhuZXh0LmN5Y2xlVy0xKTooMS1uZXh0LmN5Y2xlVyk7b3B0cy5hbmlt T3V0LmxlZnQ9ZndkPy1jdXJyLmN5Y2xlVzpjdXJyLmN5Y2xlVzt9KTtvcHRzLmNz c0ZpcnN0PXtsZWZ0OjB9O29wdHMuY3NzQmVmb3JlPXt0b3A6MH07b3B0cy5hbmlt SW49e2xlZnQ6MH07b3B0cy5hbmltT3V0PXt0b3A6MH07fTskLmZuLmN5Y2xlLnRy YW5zaXRpb25zLnNjcm9sbFZlcnQ9ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRz KXskY29udC5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIik7b3B0cy5iZWZvcmUucHVz aChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyxmd2QpeyQuZm4uY3ljbGUuY29tbW9u UmVzZXQoY3VycixuZXh0LG9wdHMpO29wdHMuY3NzQmVmb3JlLnRvcD1md2Q/KDEt bmV4dC5jeWNsZUgpOihuZXh0LmN5Y2xlSC0xKTtvcHRzLmFuaW1PdXQudG9wPWZ3 ZD9jdXJyLmN5Y2xlSDotY3Vyci5jeWNsZUg7fSk7b3B0cy5jc3NGaXJzdD17dG9w OjB9O29wdHMuY3NzQmVmb3JlPXtsZWZ0OjB9O29wdHMuYW5pbUluPXt0b3A6MH07 b3B0cy5hbmltT3V0PXtsZWZ0OjB9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy5z bGlkZVg9ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRzKXtvcHRzLmJlZm9yZS5w dXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXskKG9wdHMuZWxlbWVudHMpLm5v dChjdXJyKS5oaWRlKCk7JC5mbi5jeWNsZS5jb21tb25SZXNldChjdXJyLG5leHQs b3B0cyxmYWxzZSx0cnVlKTtvcHRzLmFuaW1Jbi53aWR0aD1uZXh0LmN5Y2xlVzt9 KTtvcHRzLmNzc0JlZm9yZT17bGVmdDowLHRvcDowLHdpZHRoOjB9O29wdHMuYW5p bUluPXt3aWR0aDoic2hvdyJ9O29wdHMuYW5pbU91dD17d2lkdGg6MH07fTskLmZu LmN5Y2xlLnRyYW5zaXRpb25zLnNsaWRlWT1mdW5jdGlvbigkY29udCwkc2xpZGVz LG9wdHMpe29wdHMuYmVmb3JlLnB1c2goZnVuY3Rpb24oY3VycixuZXh0LG9wdHMp eyQob3B0cy5lbGVtZW50cykubm90KGN1cnIpLmhpZGUoKTskLmZuLmN5Y2xlLmNv bW1vblJlc2V0KGN1cnIsbmV4dCxvcHRzLHRydWUsZmFsc2UpO29wdHMuYW5pbUlu LmhlaWdodD1uZXh0LmN5Y2xlSDt9KTtvcHRzLmNzc0JlZm9yZT17bGVmdDowLHRv cDowLGhlaWdodDowfTtvcHRzLmFuaW1Jbj17aGVpZ2h0OiJzaG93In07b3B0cy5h bmltT3V0PXtoZWlnaHQ6MH07fTskLmZuLmN5Y2xlLnRyYW5zaXRpb25zLnNodWZm bGU9ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRzKXt2YXIgaSx3PSRjb250LmNz cygib3ZlcmZsb3ciLCJ2aXNpYmxlIikud2lkdGgoKTskc2xpZGVzLmNzcyh7bGVm dDowLHRvcDowfSk7b3B0cy5iZWZvcmUucHVzaChmdW5jdGlvbihjdXJyLG5leHQs b3B0cyl7JC5mbi5jeWNsZS5jb21tb25SZXNldChjdXJyLG5leHQsb3B0cyx0cnVl LHRydWUsdHJ1ZSk7fSk7aWYoIW9wdHMuc3BlZWRBZGp1c3RlZCl7b3B0cy5zcGVl ZD1vcHRzLnNwZWVkLzI7b3B0cy5zcGVlZEFkanVzdGVkPXRydWU7fW9wdHMucmFu ZG9tPTA7b3B0cy5zaHVmZmxlPW9wdHMuc2h1ZmZsZXx8e2xlZnQ6LXcsdG9wOjE1 fTtvcHRzLmVscz1bXTtmb3IoaT0wO2k8JHNsaWRlcy5sZW5ndGg7aSsrKXtvcHRz LmVscy5wdXNoKCRzbGlkZXNbaV0pO31mb3IoaT0wO2k8b3B0cy5jdXJyU2xpZGU7 aSsrKXtvcHRzLmVscy5wdXNoKG9wdHMuZWxzLnNoaWZ0KCkpO31vcHRzLmZ4Rm49 ZnVuY3Rpb24oY3VycixuZXh0LG9wdHMsY2IsZndkKXt2YXIgJGVsPWZ3ZD8kKGN1 cnIpOiQobmV4dCk7JChuZXh0KS5jc3Mob3B0cy5jc3NCZWZvcmUpO3ZhciBjb3Vu dD1vcHRzLnNsaWRlQ291bnQ7JGVsLmFuaW1hdGUob3B0cy5zaHVmZmxlLG9wdHMu c3BlZWRJbixvcHRzLmVhc2VJbixmdW5jdGlvbigpe3ZhciBob3BzPSQuZm4uY3lj bGUuaG9wc0Zyb21MYXN0KG9wdHMsZndkKTtmb3IodmFyIGs9MDtrPGhvcHM7aysr KXtmd2Q/b3B0cy5lbHMucHVzaChvcHRzLmVscy5zaGlmdCgpKTpvcHRzLmVscy51 bnNoaWZ0KG9wdHMuZWxzLnBvcCgpKTt9aWYoZndkKXtmb3IodmFyIGk9MCxsZW49 b3B0cy5lbHMubGVuZ3RoO2k8bGVuO2krKyl7JChvcHRzLmVsc1tpXSkuY3NzKCJ6 LWluZGV4IixsZW4taStjb3VudCk7fX1lbHNle3ZhciB6PSQoY3VycikuY3NzKCJ6 LWluZGV4Iik7JGVsLmNzcygiei1pbmRleCIscGFyc2VJbnQoeikrMStjb3VudCk7 fSRlbC5hbmltYXRlKHtsZWZ0OjAsdG9wOjB9LG9wdHMuc3BlZWRPdXQsb3B0cy5l YXNlT3V0LGZ1bmN0aW9uKCl7JChmd2Q/dGhpczpjdXJyKS5oaWRlKCk7aWYoY2Ip e2NiKCk7fX0pO30pO307b3B0cy5jc3NCZWZvcmU9e2Rpc3BsYXk6ImJsb2NrIixv cGFjaXR5OjEsdG9wOjAsbGVmdDowfTt9OyQuZm4uY3ljbGUudHJhbnNpdGlvbnMu dHVyblVwPWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0cyl7b3B0cy5iZWZvcmUu cHVzaChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyl7JC5mbi5jeWNsZS5jb21tb25S ZXNldChjdXJyLG5leHQsb3B0cyx0cnVlLGZhbHNlKTtvcHRzLmNzc0JlZm9yZS50 b3A9bmV4dC5jeWNsZUg7b3B0cy5hbmltSW4uaGVpZ2h0PW5leHQuY3ljbGVIO30p O29wdHMuY3NzRmlyc3Q9e3RvcDowfTtvcHRzLmNzc0JlZm9yZT17bGVmdDowLGhl aWdodDowfTtvcHRzLmFuaW1Jbj17dG9wOjB9O29wdHMuYW5pbU91dD17aGVpZ2h0 OjB9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy50dXJuRG93bj1mdW5jdGlvbigk Y29udCwkc2xpZGVzLG9wdHMpe29wdHMuYmVmb3JlLnB1c2goZnVuY3Rpb24oY3Vy cixuZXh0LG9wdHMpeyQuZm4uY3ljbGUuY29tbW9uUmVzZXQoY3VycixuZXh0LG9w dHMsdHJ1ZSxmYWxzZSk7b3B0cy5hbmltSW4uaGVpZ2h0PW5leHQuY3ljbGVIO29w dHMuYW5pbU91dC50b3A9Y3Vyci5jeWNsZUg7fSk7b3B0cy5jc3NGaXJzdD17dG9w OjB9O29wdHMuY3NzQmVmb3JlPXtsZWZ0OjAsdG9wOjAsaGVpZ2h0OjB9O29wdHMu YW5pbU91dD17aGVpZ2h0OjB9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy50dXJu TGVmdD1mdW5jdGlvbigkY29udCwkc2xpZGVzLG9wdHMpe29wdHMuYmVmb3JlLnB1 c2goZnVuY3Rpb24oY3VycixuZXh0LG9wdHMpeyQuZm4uY3ljbGUuY29tbW9uUmVz ZXQoY3VycixuZXh0LG9wdHMsZmFsc2UsdHJ1ZSk7b3B0cy5jc3NCZWZvcmUubGVm dD1uZXh0LmN5Y2xlVztvcHRzLmFuaW1Jbi53aWR0aD1uZXh0LmN5Y2xlVzt9KTtv cHRzLmNzc0JlZm9yZT17dG9wOjAsd2lkdGg6MH07b3B0cy5hbmltSW49e2xlZnQ6 MH07b3B0cy5hbmltT3V0PXt3aWR0aDowfTt9OyQuZm4uY3ljbGUudHJhbnNpdGlv bnMudHVyblJpZ2h0PWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0cyl7b3B0cy5i ZWZvcmUucHVzaChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyl7JC5mbi5jeWNsZS5j b21tb25SZXNldChjdXJyLG5leHQsb3B0cyxmYWxzZSx0cnVlKTtvcHRzLmFuaW1J bi53aWR0aD1uZXh0LmN5Y2xlVztvcHRzLmFuaW1PdXQubGVmdD1jdXJyLmN5Y2xl Vzt9KTtvcHRzLmNzc0JlZm9yZT17dG9wOjAsbGVmdDowLHdpZHRoOjB9O29wdHMu YW5pbUluPXtsZWZ0OjB9O29wdHMuYW5pbU91dD17d2lkdGg6MH07fTskLmZuLmN5 Y2xlLnRyYW5zaXRpb25zLnpvb209ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRz KXtvcHRzLmJlZm9yZS5wdXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXskLmZu LmN5Y2xlLmNvbW1vblJlc2V0KGN1cnIsbmV4dCxvcHRzLGZhbHNlLGZhbHNlLHRy dWUpO29wdHMuY3NzQmVmb3JlLnRvcD1uZXh0LmN5Y2xlSC8yO29wdHMuY3NzQmVm b3JlLmxlZnQ9bmV4dC5jeWNsZVcvMjtvcHRzLmFuaW1Jbj17dG9wOjAsbGVmdDow LHdpZHRoOm5leHQuY3ljbGVXLGhlaWdodDpuZXh0LmN5Y2xlSH07b3B0cy5hbmlt T3V0PXt3aWR0aDowLGhlaWdodDowLHRvcDpjdXJyLmN5Y2xlSC8yLGxlZnQ6Y3Vy ci5jeWNsZVcvMn07fSk7b3B0cy5jc3NGaXJzdD17dG9wOjAsbGVmdDowfTtvcHRz LmNzc0JlZm9yZT17d2lkdGg6MCxoZWlnaHQ6MH07fTskLmZuLmN5Y2xlLnRyYW5z aXRpb25zLmZhZGVab29tPWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0cyl7b3B0 cy5iZWZvcmUucHVzaChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyl7JC5mbi5jeWNs ZS5jb21tb25SZXNldChjdXJyLG5leHQsb3B0cyxmYWxzZSxmYWxzZSk7b3B0cy5j c3NCZWZvcmUubGVmdD1uZXh0LmN5Y2xlVy8yO29wdHMuY3NzQmVmb3JlLnRvcD1u ZXh0LmN5Y2xlSC8yO29wdHMuYW5pbUluPXt0b3A6MCxsZWZ0OjAsd2lkdGg6bmV4 dC5jeWNsZVcsaGVpZ2h0Om5leHQuY3ljbGVIfTt9KTtvcHRzLmNzc0JlZm9yZT17 d2lkdGg6MCxoZWlnaHQ6MH07b3B0cy5hbmltT3V0PXtvcGFjaXR5OjB9O307JC5m bi5jeWNsZS50cmFuc2l0aW9ucy5ibGluZFg9ZnVuY3Rpb24oJGNvbnQsJHNsaWRl cyxvcHRzKXt2YXIgdz0kY29udC5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIikud2lk dGgoKTtvcHRzLmJlZm9yZS5wdXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXsk LmZuLmN5Y2xlLmNvbW1vblJlc2V0KGN1cnIsbmV4dCxvcHRzKTtvcHRzLmFuaW1J bi53aWR0aD1uZXh0LmN5Y2xlVztvcHRzLmFuaW1PdXQubGVmdD1jdXJyLmN5Y2xl Vzt9KTtvcHRzLmNzc0JlZm9yZT17bGVmdDp3LHRvcDowfTtvcHRzLmFuaW1Jbj17 bGVmdDowfTtvcHRzLmFuaW1PdXQ9e2xlZnQ6d307fTskLmZuLmN5Y2xlLnRyYW5z aXRpb25zLmJsaW5kWT1mdW5jdGlvbigkY29udCwkc2xpZGVzLG9wdHMpe3ZhciBo PSRjb250LmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKS5oZWlnaHQoKTtvcHRzLmJl Zm9yZS5wdXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXskLmZuLmN5Y2xlLmNv bW1vblJlc2V0KGN1cnIsbmV4dCxvcHRzKTtvcHRzLmFuaW1Jbi5oZWlnaHQ9bmV4 dC5jeWNsZUg7b3B0cy5hbmltT3V0LnRvcD1jdXJyLmN5Y2xlSDt9KTtvcHRzLmNz c0JlZm9yZT17dG9wOmgsbGVmdDowfTtvcHRzLmFuaW1Jbj17dG9wOjB9O29wdHMu YW5pbU91dD17dG9wOmh9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy5ibGluZFo9 ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRzKXt2YXIgaD0kY29udC5jc3MoIm92 ZXJmbG93IiwiaGlkZGVuIikuaGVpZ2h0KCk7dmFyIHc9JGNvbnQud2lkdGgoKTtv cHRzLmJlZm9yZS5wdXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXskLmZuLmN5 Y2xlLmNvbW1vblJlc2V0KGN1cnIsbmV4dCxvcHRzKTtvcHRzLmFuaW1Jbi5oZWln aHQ9bmV4dC5jeWNsZUg7b3B0cy5hbmltT3V0LnRvcD1jdXJyLmN5Y2xlSDt9KTtv cHRzLmNzc0JlZm9yZT17dG9wOmgsbGVmdDp3fTtvcHRzLmFuaW1Jbj17dG9wOjAs bGVmdDowfTtvcHRzLmFuaW1PdXQ9e3RvcDpoLGxlZnQ6d307fTskLmZuLmN5Y2xl LnRyYW5zaXRpb25zLmdyb3dYPWZ1bmN0aW9uKCRjb250LCRzbGlkZXMsb3B0cyl7 b3B0cy5iZWZvcmUucHVzaChmdW5jdGlvbihjdXJyLG5leHQsb3B0cyl7JC5mbi5j eWNsZS5jb21tb25SZXNldChjdXJyLG5leHQsb3B0cyxmYWxzZSx0cnVlKTtvcHRz LmNzc0JlZm9yZS5sZWZ0PXRoaXMuY3ljbGVXLzI7b3B0cy5hbmltSW49e2xlZnQ6 MCx3aWR0aDp0aGlzLmN5Y2xlV307b3B0cy5hbmltT3V0PXtsZWZ0OjB9O30pO29w dHMuY3NzQmVmb3JlPXt3aWR0aDowLHRvcDowfTt9OyQuZm4uY3ljbGUudHJhbnNp dGlvbnMuZ3Jvd1k9ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRzKXtvcHRzLmJl Zm9yZS5wdXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXskLmZuLmN5Y2xlLmNv bW1vblJlc2V0KGN1cnIsbmV4dCxvcHRzLHRydWUsZmFsc2UpO29wdHMuY3NzQmVm b3JlLnRvcD10aGlzLmN5Y2xlSC8yO29wdHMuYW5pbUluPXt0b3A6MCxoZWlnaHQ6 dGhpcy5jeWNsZUh9O29wdHMuYW5pbU91dD17dG9wOjB9O30pO29wdHMuY3NzQmVm b3JlPXtoZWlnaHQ6MCxsZWZ0OjB9O307JC5mbi5jeWNsZS50cmFuc2l0aW9ucy5j dXJ0YWluWD1mdW5jdGlvbigkY29udCwkc2xpZGVzLG9wdHMpe29wdHMuYmVmb3Jl LnB1c2goZnVuY3Rpb24oY3VycixuZXh0LG9wdHMpeyQuZm4uY3ljbGUuY29tbW9u UmVzZXQoY3VycixuZXh0LG9wdHMsZmFsc2UsdHJ1ZSx0cnVlKTtvcHRzLmNzc0Jl Zm9yZS5sZWZ0PW5leHQuY3ljbGVXLzI7b3B0cy5hbmltSW49e2xlZnQ6MCx3aWR0 aDp0aGlzLmN5Y2xlV307b3B0cy5hbmltT3V0PXtsZWZ0OmN1cnIuY3ljbGVXLzIs d2lkdGg6MH07fSk7b3B0cy5jc3NCZWZvcmU9e3RvcDowLHdpZHRoOjB9O307JC5m bi5jeWNsZS50cmFuc2l0aW9ucy5jdXJ0YWluWT1mdW5jdGlvbigkY29udCwkc2xp ZGVzLG9wdHMpe29wdHMuYmVmb3JlLnB1c2goZnVuY3Rpb24oY3VycixuZXh0LG9w dHMpeyQuZm4uY3ljbGUuY29tbW9uUmVzZXQoY3VycixuZXh0LG9wdHMsdHJ1ZSxm YWxzZSx0cnVlKTtvcHRzLmNzc0JlZm9yZS50b3A9bmV4dC5jeWNsZUgvMjtvcHRz LmFuaW1Jbj17dG9wOjAsaGVpZ2h0Om5leHQuY3ljbGVIfTtvcHRzLmFuaW1PdXQ9 e3RvcDpjdXJyLmN5Y2xlSC8yLGhlaWdodDowfTt9KTtvcHRzLmNzc0JlZm9yZT17 bGVmdDowLGhlaWdodDowfTt9OyQuZm4uY3ljbGUudHJhbnNpdGlvbnMuY292ZXI9 ZnVuY3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRzKXt2YXIgZD1vcHRzLmRpcmVjdGlv bnx8ImxlZnQiO3ZhciB3PSRjb250LmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKS53 aWR0aCgpO3ZhciBoPSRjb250LmhlaWdodCgpO29wdHMuYmVmb3JlLnB1c2goZnVu Y3Rpb24oY3VycixuZXh0LG9wdHMpeyQuZm4uY3ljbGUuY29tbW9uUmVzZXQoY3Vy cixuZXh0LG9wdHMpO2lmKGQ9PSJyaWdodCIpe29wdHMuY3NzQmVmb3JlLmxlZnQ9 LXc7fWVsc2V7aWYoZD09InVwIil7b3B0cy5jc3NCZWZvcmUudG9wPWg7fWVsc2V7 aWYoZD09ImRvd24iKXtvcHRzLmNzc0JlZm9yZS50b3A9LWg7fWVsc2V7b3B0cy5j c3NCZWZvcmUubGVmdD13O319fX0pO29wdHMuYW5pbUluPXtsZWZ0OjAsdG9wOjB9 O29wdHMuYW5pbU91dD17b3BhY2l0eToxfTtvcHRzLmNzc0JlZm9yZT17dG9wOjAs bGVmdDowfTt9OyQuZm4uY3ljbGUudHJhbnNpdGlvbnMudW5jb3Zlcj1mdW5jdGlv bigkY29udCwkc2xpZGVzLG9wdHMpe3ZhciBkPW9wdHMuZGlyZWN0aW9ufHwibGVm dCI7dmFyIHc9JGNvbnQuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLndpZHRoKCk7 dmFyIGg9JGNvbnQuaGVpZ2h0KCk7b3B0cy5iZWZvcmUucHVzaChmdW5jdGlvbihj dXJyLG5leHQsb3B0cyl7JC5mbi5jeWNsZS5jb21tb25SZXNldChjdXJyLG5leHQs b3B0cyx0cnVlLHRydWUsdHJ1ZSk7aWYoZD09InJpZ2h0Iil7b3B0cy5hbmltT3V0 LmxlZnQ9dzt9ZWxzZXtpZihkPT0idXAiKXtvcHRzLmFuaW1PdXQudG9wPS1oO31l bHNle2lmKGQ9PSJkb3duIil7b3B0cy5hbmltT3V0LnRvcD1oO31lbHNle29wdHMu YW5pbU91dC5sZWZ0PS13O319fX0pO29wdHMuYW5pbUluPXtsZWZ0OjAsdG9wOjB9 O29wdHMuYW5pbU91dD17b3BhY2l0eToxfTtvcHRzLmNzc0JlZm9yZT17dG9wOjAs bGVmdDowfTt9OyQuZm4uY3ljbGUudHJhbnNpdGlvbnMudG9zcz1mdW5jdGlvbigk Y29udCwkc2xpZGVzLG9wdHMpe3ZhciB3PSRjb250LmNzcygib3ZlcmZsb3ciLCJ2 aXNpYmxlIikud2lkdGgoKTt2YXIgaD0kY29udC5oZWlnaHQoKTtvcHRzLmJlZm9y ZS5wdXNoKGZ1bmN0aW9uKGN1cnIsbmV4dCxvcHRzKXskLmZuLmN5Y2xlLmNvbW1v blJlc2V0KGN1cnIsbmV4dCxvcHRzLHRydWUsdHJ1ZSx0cnVlKTtpZighb3B0cy5h bmltT3V0LmxlZnQmJiFvcHRzLmFuaW1PdXQudG9wKXtvcHRzLmFuaW1PdXQ9e2xl ZnQ6dyoyLHRvcDotaC8yLG9wYWNpdHk6MH07fWVsc2V7b3B0cy5hbmltT3V0Lm9w YWNpdHk9MDt9fSk7b3B0cy5jc3NCZWZvcmU9e2xlZnQ6MCx0b3A6MH07b3B0cy5h bmltSW49e2xlZnQ6MH07fTskLmZuLmN5Y2xlLnRyYW5zaXRpb25zLndpcGU9ZnVu Y3Rpb24oJGNvbnQsJHNsaWRlcyxvcHRzKXt2YXIgdz0kY29udC5jc3MoIm92ZXJm bG93IiwiaGlkZGVuIikud2lkdGgoKTt2YXIgaD0kY29udC5oZWlnaHQoKTtvcHRz LmNzc0JlZm9yZT1vcHRzLmNzc0JlZm9yZXx8e307dmFyIGNsaXA7aWYob3B0cy5j bGlwKXtpZigvbDJyLy50ZXN0KG9wdHMuY2xpcCkpe2NsaXA9InJlY3QoMHB4IDBw eCAiK2grInB4IDBweCkiO31lbHNle2lmKC9yMmwvLnRlc3Qob3B0cy5jbGlwKSl7 Y2xpcD0icmVjdCgwcHggIit3KyJweCAiK2grInB4ICIrdysicHgpIjt9ZWxzZXtp ZigvdDJiLy50ZXN0KG9wdHMuY2xpcCkpe2NsaXA9InJlY3QoMHB4ICIrdysicHgg MHB4IDBweCkiO31lbHNle2lmKC9iMnQvLnRlc3Qob3B0cy5jbGlwKSl7Y2xpcD0i cmVjdCgiK2grInB4ICIrdysicHggIitoKyJweCAwcHgpIjt9ZWxzZXtpZigvem9v bS8udGVzdChvcHRzLmNsaXApKXt2YXIgdG9wPXBhcnNlSW50KGgvMik7dmFyIGxl ZnQ9cGFyc2VJbnQody8yKTtjbGlwPSJyZWN0KCIrdG9wKyJweCAiK2xlZnQrInB4 ICIrdG9wKyJweCAiK2xlZnQrInB4KSI7fX19fX19b3B0cy5jc3NCZWZvcmUuY2xp cD1vcHRzLmNzc0JlZm9yZS5jbGlwfHxjbGlwfHwicmVjdCgwcHggMHB4IDBweCAw cHgpIjt2YXIgZD1vcHRzLmNzc0JlZm9yZS5jbGlwLm1hdGNoKC8oXGQrKS9nKTt2 YXIgdD1wYXJzZUludChkWzBdKSxyPXBhcnNlSW50KGRbMV0pLGI9cGFyc2VJbnQo ZFsyXSksbD1wYXJzZUludChkWzNdKTtvcHRzLmJlZm9yZS5wdXNoKGZ1bmN0aW9u KGN1cnIsbmV4dCxvcHRzKXtpZihjdXJyPT1uZXh0KXtyZXR1cm47fXZhciAkY3Vy cj0kKGN1cnIpLCRuZXh0PSQobmV4dCk7JC5mbi5jeWNsZS5jb21tb25SZXNldChj dXJyLG5leHQsb3B0cyx0cnVlLHRydWUsZmFsc2UpO29wdHMuY3NzQWZ0ZXIuZGlz cGxheT0iYmxvY2siO3ZhciBzdGVwPTEsY291bnQ9cGFyc2VJbnQoKG9wdHMuc3Bl ZWRJbi8xMykpLTE7KGZ1bmN0aW9uIGYoKXt2YXIgdHQ9dD90LXBhcnNlSW50KHN0 ZXAqKHQvY291bnQpKTowO3ZhciBsbD1sP2wtcGFyc2VJbnQoc3RlcCoobC9jb3Vu dCkpOjA7dmFyIGJiPWI8aD9iK3BhcnNlSW50KHN0ZXAqKChoLWIpL2NvdW50fHwx KSk6aDt2YXIgcnI9cjx3P3IrcGFyc2VJbnQoc3RlcCooKHctcikvY291bnR8fDEp KTp3OyRuZXh0LmNzcyh7Y2xpcDoicmVjdCgiK3R0KyJweCAiK3JyKyJweCAiK2Ji KyJweCAiK2xsKyJweCkifSk7KHN0ZXArKzw9Y291bnQpP3NldFRpbWVvdXQoZiwx Myk6JGN1cnIuY3NzKCJkaXNwbGF5Iiwibm9uZSIpO30pKCk7fSk7b3B0cy5jc3NC ZWZvcmU9e2Rpc3BsYXk6ImJsb2NrIixvcGFjaXR5OjEsdG9wOjAsbGVmdDowfTtv cHRzLmFuaW1Jbj17bGVmdDowfTtvcHRzLmFuaW1PdXQ9e2xlZnQ6MH07fTt9KShq UXVlcnkpOw== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=ngg.slideshow.min.js Content-Type: application/x-javascript; charset=UTF-8; name=ngg.slideshow.min.js Content-Location: http://www.ogalik.ee/wp-content/plugins/nextgen-gallery/js/ngg.slideshow.min.js?ver=1.05 Content-Transfer-Encoding: Base64 alF1ZXJ5LmZuLm5nZ1NsaWRlc2hvdz1mdW5jdGlvbihhcmdzKXt2YXIgZGVmYXVs dHM9e2lkOjEsd2lkdGg6MzIwLGhlaWdodDoyNDAsZng6J2ZhZGUnLGRvbWFpbjon Jyx0aW1lb3V0OjUwMDB9O3ZhciBzPWpRdWVyeS5leHRlbmQoe30sZGVmYXVsdHMs YXJncyk7dmFyIG9iaj10aGlzLnNlbGVjdG9yO3ZhciBzdGFjaz1bXTt2YXIgdXJs PXMuZG9tYWluKydpbmRleC5waHA/Y2FsbGJhY2s9anNvbiZhcGlfa2V5PXRydWUm Zm9ybWF0PWpzb24mbWV0aG9kPWdhbGxlcnkmaWQ9JytzLmlkO3ZhciBzdGFja0xl bmd0aD0wO2pRdWVyeS5nZXRKU09OKHVybCxmdW5jdGlvbihyKXtpZihyLnN0YXQ9 PSJvayIpe2ZvcihpbWcgaW4gci5pbWFnZXMpe3ZhciBwaG90bz1yLmltYWdlc1tp bWddO3N0YWNrLnB1c2goZGVjb2RlVVJJKHBob3RvWydpbWFnZVVSTCddKSk7fQpz dGFja0xlbmd0aD1zdGFjay5sZW5ndGg7bG9hZEltYWdlKDEpO319KTtmdW5jdGlv biBsb2FkSW1hZ2UobnVtKXtpZihzdGFja0xlbmd0aD4wJiZudW08PTMpe3ZhciBp bWc9bmV3IEltYWdlKCk7aW1nLnNyYz1zdGFjay5zaGlmdCgpO3N0YWNrTGVuZ3Ro LS07alF1ZXJ5KGltZykuYmluZCgnbG9hZCcsZnVuY3Rpb24oKXthcHBlbmRJbWFn ZShpbWcsbnVtKTt9KTt9fQpmdW5jdGlvbiBhcHBlbmRJbWFnZShpbWcsbnVtKXtq UXVlcnkoaW1nKS5oaWRlKCk7alF1ZXJ5KG9iaikuYXBwZW5kKGltYWdlUmVzaXpl KGltZyxzLndpZHRoLHMuaGVpZ2h0KSk7aWYobnVtPT0zfHxzdGFja0xlbmd0aD09 MCl7c3RhcnRTbGlkZXNob3coKTt9ZWxzZXtsb2FkSW1hZ2UoKytudW0pO319CmZ1 bmN0aW9uIHN0YXJ0U2xpZGVzaG93KCl7alF1ZXJ5KG9iaisnLWxvYWRlcicpLmVt cHR5KCkucmVtb3ZlKCk7alF1ZXJ5KG9iaisnIGltZzpmaXJzdCcpLmZhZGVJbigx MDAwLGZ1bmN0aW9uKCl7alF1ZXJ5KG9iaikuY3ljbGUoe2Z4OnMuZngsY29udGFp bmVyUmVzaXplOjEsZml0OjEsdGltZW91dDpzLnRpbWVvdXQsbmV4dDpvYmosYmVm b3JlOmpDeWNsZV9vbkJlZm9yZX0pO30pO30KZnVuY3Rpb24gaW1hZ2VSZXNpemUo aW1nLG1heFdpZHRoLG1heEhlaWdodCl7aWYoIWltZy5jb21wbGV0ZSkKalF1ZXJ5 KGltZykuYmluZCgnbG9hZCcsZnVuY3Rpb24oKXtpbWFnZVJlc2l6ZShpbWcsbWF4 V2lkdGgsbWF4SGVpZ2h0KX0pO2lmKGltZy5oZWlnaHQ9PTB8fGltZy53aWR0aD09 MCkKcmV0dXJuIGltZzt2YXIgd2lkdGgsaGVpZ2h0O2lmKGltZy53aWR0aCptYXhI ZWlnaHQ+aW1nLmhlaWdodCptYXhXaWR0aCl7aWYoaW1nLndpZHRoPm1heFdpZHRo KXt3aWR0aD1tYXhXaWR0aDtoZWlnaHQ9TWF0aC5yb3VuZChpbWcuaGVpZ2h0L2lt Zy53aWR0aCptYXhXaWR0aCk7fX1lbHNle2lmKGltZy5oZWlnaHQ+bWF4SGVpZ2h0 KXtoZWlnaHQ9bWF4SGVpZ2h0O3dpZHRoPU1hdGgucm91bmQoaW1nLndpZHRoL2lt Zy5oZWlnaHQqbWF4SGVpZ2h0KTt9fQpqUXVlcnkoaW1nKS5jc3MoeydoZWlnaHQn OmhlaWdodCwnd2lkdGgnOndpZHRofSk7cmV0dXJuIGltZzt9O2Z1bmN0aW9uIGpD eWNsZV9vbkJlZm9yZShjdXJyLG5leHQsb3B0cyl7aWYob3B0cy5hZGRTbGlkZSkK aWYoc3RhY2tMZW5ndGg+MCl7dmFyIGltZz1uZXcgSW1hZ2UoKTtpbWcuc3JjPXN0 YWNrLnNoaWZ0KCk7c3RhY2tMZW5ndGgtLTtqUXVlcnkoaW1nKS5iaW5kKCdsb2Fk JyxmdW5jdGlvbigpe29wdHMuYWRkU2xpZGUoaW1hZ2VSZXNpemUodGhpcyxzLndp ZHRoLHMuaGVpZ2h0KSk7fSk7fX07fQ== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=ngg.js Content-Type: application/x-javascript; charset=UTF-8; name=ngg.js Content-Location: http://www.ogalik.ee/wp-content/plugins/nextgen-gallery/js/ngg.js?ver=2.1 Content-Transfer-Encoding: Base64 alF1ZXJ5KCJkb2N1bWVudCIpLnJlYWR5KGZ1bmN0aW9uKCl7DQoJLy8gcmVnaXN0 ZXIgYWpheCBnYWxsZXJ5LW5hdmlnYXRpb24gbGlzdGVuZXJzDQoJalF1ZXJ5KCJh LnBhZ2UtbnVtYmVycyIpLmNsaWNrKGZ1bmN0aW9uKGUpIHsNCgkJcmV0dXJuIG5n Z19hamF4X25hdmlnYXRpb24oZSwgdGhpcyk7DQoJfSk7DQoJalF1ZXJ5KCJhLnBy ZXYiKS5jbGljayhmdW5jdGlvbihlKSB7DQoJCXJldHVybiBuZ2dfYWpheF9uYXZp Z2F0aW9uKGUsIHRoaXMpOw0KCX0pOw0KCWpRdWVyeSgiYS5uZXh0IikuY2xpY2so ZnVuY3Rpb24oZSkgew0KCQlyZXR1cm4gbmdnX2FqYXhfbmF2aWdhdGlvbihlLCB0 aGlzKTsNCgl9KTsNCgkNCgkvLyByZWdpc3RlciBhamF4IGJyb3dzZXItbmF2aWdh dGlvbiBsaXN0ZW5lcnMNCglqUXVlcnkoImEubmdnLWJyb3dzZXItbmV4dCIpLmNs aWNrKGZ1bmN0aW9uKGUpIHsNCgkJcmV0dXJuIG5nZ19hamF4X2Jyb3dzZXJfbmF2 aWdhdGlvbihlLCB0aGlzKTsNCgl9KTsNCglqUXVlcnkoImEubmdnLWJyb3dzZXIt cHJldiIpLmNsaWNrKGZ1bmN0aW9uKGUpIHsNCgkJcmV0dXJuIG5nZ19hamF4X2Jy b3dzZXJfbmF2aWdhdGlvbihlLCB0aGlzKTsNCgl9KTsNCn0pOw0KDQpmdW5jdGlv biBuZ2dfYWpheF9uYXZpZ2F0aW9uKGUsIG9iaikgew0KCS8vIHRyeSB0byBmaW5k IHBhZ2UgbnVtYmVyDQoJdmFyIHBhZ2VOdW1iZXIgPSAwOw0KCWlmIChqUXVlcnko b2JqKS5oYXNDbGFzcygicGFnZS1udW1iZXJzIikpIHsNCgkJcGFnZU51bWJlciA9 IGpRdWVyeShvYmopLmNvbnRlbnRzKClbMF0uZGF0YTsNCgl9IGVsc2UgaWYgKGpR dWVyeShvYmopLmhhc0NsYXNzKCJwcmV2IikpIHsNCgkJcGFnZU51bWJlciA9IGpR dWVyeShvYmopLmF0dHIoImlkIikuc3Vic3RyKDkpOw0KCX0gZWxzZSBpZiAoalF1 ZXJ5KG9iaikuaGFzQ2xhc3MoIm5leHQiKSkgew0KCQlwYWdlTnVtYmVyID0galF1 ZXJ5KG9iaikuYXR0cigiaWQiKS5zdWJzdHIoOSk7DQoJfQ0KCQ0KCS8vIHRyeSB0 byBmaW5kIGdhbGxlcnkgbnVtYmVyIGJ5IGNoZWNraW5nIHRoZSBwYXJlbnRzIElE IHVudGlsIHdlIGZpbmQgYSBtYXRjaGluZyBvbmUNCgl2YXIgY3VycmVudE5vZGUg PSBvYmoucGFyZW50Tm9kZTsNCgl3aGlsZSAobnVsbCAhPSBjdXJyZW50Tm9kZS5w YXJlbnROb2RlICYmICFqUXVlcnkubm9kZU5hbWUoY3VycmVudE5vZGUucGFyZW50 Tm9kZSwgImJvZHkiKSAmJiAibmdnLWdhbGxlcnktIiAhPSBqUXVlcnkoY3VycmVu dE5vZGUucGFyZW50Tm9kZSkuYXR0cigiaWQiKS5zdWJzdHJpbmcoMCwgMTIpKSB7 DQoJCWN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTsNCgl9DQoJ DQoJaWYgKGpRdWVyeShjdXJyZW50Tm9kZS5wYXJlbnROb2RlKS5hdHRyKCJpZCIp KSB7DQoJCXZhciBnYWxsZXJ5ID0galF1ZXJ5KGN1cnJlbnROb2RlLnBhcmVudE5v ZGUpOw0KDQoJCS8vIHdlIGZvdW5kIGEgZ2FsbGVyeSwgbGV0J3MgZXh0cmFjdCB0 aGUgcG9zdCBpZCAmIGdhbGxlcnkgaWQNCgkJdmFyIHBheWxvYWQgPSBnYWxsZXJ5 LmF0dHIoImlkIikuc3Vic3RyaW5nKDEyKTsNCgkJdmFyIHNlcGFyYXRvclBvc2l0 aW9uID0gcGFyc2VJbnQocGF5bG9hZC5pbmRleE9mKCItIikpOw0KCQkNCgkJdmFy IGdhbGxlcnlJZCA9IHBheWxvYWQuc3Vic3RyKDAsIHNlcGFyYXRvclBvc2l0aW9u KTsNCgkJdmFyIHBvc3RJZCA9IHBheWxvYWQuc3Vic3RyKHNlcGFyYXRvclBvc2l0 aW9uICsgMSk7DQoNCgkJaWYgKCAoZ2FsbGVyeUlkLmxlbmd0aCA9PSAwKSB8fCAo cG9zdElkLmxlbmd0aCA9PSAwKSApIHsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoJ CQkJDQoJCW5nZ19zaG93X2xvYWRpbmcoZSk7DQoJCQ0KCQkvLyBsb2FkIGdhbGxl cnkgY29udGVudA0KCQlqUXVlcnkuZ2V0KG5nZ19hamF4LmNhbGxiYWNrLCB7cDog cG9zdElkLCBnYWxsZXJ5aWQ6IGdhbGxlcnlJZCwgbmdncGFnZTogcGFnZU51bWJl ciwgdHlwZTogImdhbGxlcnkifSwgZnVuY3Rpb24gKGRhdGEsIHRleHRTdGF0dXMp IHsNCgkJCQ0KCQkJLy8gZGVsZXRlIG9sZCBjb250ZW50DQoJCQlnYWxsZXJ5LmNo aWxkcmVuKCkucmVtb3ZlKCk7DQoJCQkNCgkJCS8vIGFkZCBuZXcgY29udGVudA0K CQkJZ2FsbGVyeS5yZXBsYWNlV2l0aChkYXRhKTsNCgkJCQ0KCQkJLy8gYWRkIGFq YXgtbmF2aWdhdGlvbiwgYWdhaW4NCgkJCWpRdWVyeSgiZG9jdW1lbnQiKS5yZWFk eShmdW5jdGlvbigpew0KCQkJCS8vIHJlbW92ZSBvbGQgbGlzdGVuZXJzIHRvIGF2 b2lkIGRvdWJsZS1jbGlja3MNCgkJCQlqUXVlcnkoImEucGFnZS1udW1iZXJzIiku dW5iaW5kKCJjbGljayIpOw0KCQkJCWpRdWVyeSgiYS5wcmV2IikudW5iaW5kKCJj bGljayIpOw0KCQkJCWpRdWVyeSgiYS5uZXh0IikudW5iaW5kKCJjbGljayIpOw0K CQkJCQ0KCQkJCS8vIGFkZCBzaHV0dGVyLWxpc3RlbmVycyBhZ2Fpbg0KCQkJCXNo dXR0ZXJSZWxvYWRlZC5pbml0KCdzaCcpOw0KCQkJCQ0KCQkJCWpRdWVyeSgiYS5w YWdlLW51bWJlcnMiKS5jbGljayhmdW5jdGlvbihlKSB7DQoJCQkJCXJldHVybiBu Z2dfYWpheF9uYXZpZ2F0aW9uKGUsIHRoaXMpOw0KCQkJCX0pOw0KCQkJCWpRdWVy eSgiYS5wcmV2IikuY2xpY2soZnVuY3Rpb24oZSkgew0KCQkJCQlyZXR1cm4gbmdn X2FqYXhfbmF2aWdhdGlvbihlLCB0aGlzKTsNCgkJCQl9KTsNCgkJCQlqUXVlcnko ImEubmV4dCIpLmNsaWNrKGZ1bmN0aW9uKGUpIHsNCgkJCQkJcmV0dXJuIG5nZ19h amF4X25hdmlnYXRpb24oZSwgdGhpcyk7DQoJCQkJfSk7DQoJCQkJDQoJCQkJbmdn X3JlbW92ZV9sb2FkaW5nKCk7DQoJCQl9KTsNCgkJfSk7DQoJCQ0KCQkvLyBkZWFj dGl2YXRlIEhUTUwgbGluaw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCQ0KCS8vIGFu IGVycm9yIG9jY3VycmVkLCB1c2UgdHJhZGl0aW9uYWwgSFRNTCBsaW5rDQoJcmV0 dXJuIHRydWU7DQp9Ow0KDQpmdW5jdGlvbiBuZ2dfYWpheF9icm93c2VyX25hdmln YXRpb24oZSwgb2JqKSB7DQoJDQoNCgkvLyB0cnkgdG8gZmluZCBnYWxsZXJ5IG51 bWJlcg0KCWlmICgibmdnLXByZXYtIiA9PSBqUXVlcnkob2JqKS5hdHRyKCJpZCIp LnN1YnN0cigwLCA5KSB8fCAibmdnLW5leHQtIiA9PSBqUXVlcnkob2JqKS5hdHRy KCJpZCIpLnN1YnN0cigwLCA5KSkgew0KCQkNCgkJLy8gZXh0cmFjdCB0aGUgaW1h Z2UtaWQNCgkJdmFyIGltYWdlTnVtYmVyID0galF1ZXJ5KG9iaikuYXR0cigiaWQi KS5zdWJzdHIoOSk7DQoNCgkJLy8gZmluZCB0aGUgaW1hZ2UtYnJvd3Nlci1jb250 YWluZXINCgkJdmFyIGN1cnJlbnROb2RlID0gb2JqOw0KCQl3aGlsZSAobnVsbCAh PSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlICYmICFqUXVlcnkubm9kZU5hbWUoY3Vy cmVudE5vZGUucGFyZW50Tm9kZSwgImJvZHkiKSAmJiAhalF1ZXJ5KGN1cnJlbnRO b2RlLnBhcmVudE5vZGUpLmhhc0NsYXNzKCJuZ2ctaW1hZ2Vicm93c2VyIikpIHsN CgkJCWN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTsNCgkJfQ0K CQkNCgkJaWYgKGpRdWVyeShjdXJyZW50Tm9kZS5wYXJlbnROb2RlKS5oYXNDbGFz cygibmdnLWltYWdlYnJvd3NlciIpKSB7DQoJCQl2YXIgZ2FsbGVyeSA9IGpRdWVy eShjdXJyZW50Tm9kZS5wYXJlbnROb2RlKTsNCg0KCQkJLy8gbGV0J3MgZXh0cmFj dCB0aGUgcG9zdCBpZCAmIGdhbGxlcnkgaWQNCgkJCXZhciBwYXlsb2FkID0gZ2Fs bGVyeS5hdHRyKCJpZCIpLnN1YnN0cmluZygxNyk7DQoJCQl2YXIgc2VwYXJhdG9y UG9zaXRpb24gPSBwYXJzZUludChwYXlsb2FkLmluZGV4T2YoIi0iKSk7DQoJCQkN CgkJCXZhciBnYWxsZXJ5SWQgPSBwYXlsb2FkLnN1YnN0cigwLCBzZXBhcmF0b3JQ b3NpdGlvbik7DQoJCQl2YXIgcG9zdElkID0gcGF5bG9hZC5zdWJzdHIoc2VwYXJh dG9yUG9zaXRpb24gKyAxKTsNCgkJCQ0KCQkJaWYgKCAoZ2FsbGVyeUlkLmxlbmd0 aCA9PSAwKSB8fCAocG9zdElkLmxlbmd0aCA9PSAwKSApIHsNCgkJCQlyZXR1cm4g dHJ1ZTsNCgkJCX0NCgkJCQ0KCQkJbmdnX3Nob3dfbG9hZGluZyhlKTsNCgkJCQ0K CQkJLy8gZ2V0IGNvbnRlbnQNCgkJCWpRdWVyeS5nZXQobmdnX2FqYXguY2FsbGJh Y2ssIHtwOiBwb3N0SWQsIGdhbGxlcnlpZDogZ2FsbGVyeUlkLCBwaWQ6IGltYWdl TnVtYmVyLCB0eXBlOiAiYnJvd3NlciJ9LCBmdW5jdGlvbiAoZGF0YSwgdGV4dFN0 YXR1cykgew0KCQkJCS8vIGRlbGV0ZSBvbGQgY29udGVudA0KCQkJCWdhbGxlcnku Y2hpbGRyZW4oKS5yZW1vdmUoKTsNCgkJCQkNCgkJCQkvLyBhZGQgbmV3IGNvbnRl bnQNCgkJCQlnYWxsZXJ5LnJlcGxhY2VXaXRoKGRhdGEpOw0KCQkJCQ0KCQkJCS8v IGFkZCBhamF4LW5hdmlnYXRpb24sIGFnYWluDQoJCQkJalF1ZXJ5KCJkb2N1bWVu dCIpLnJlYWR5KGZ1bmN0aW9uKCl7DQoJCQkJCS8vIHJlbW92ZSBvbGQgbGlzdGVu ZXJzIHRvIGF2b2lkIGRvdWJsZS1jbGlja3MNCgkJCQkJalF1ZXJ5KCJhLm5nZy1i cm93c2VyLW5leHQiKS51bmJpbmQoImNsaWNrIik7DQoJCQkJCWpRdWVyeSgiYS5u Z2ctYnJvd3Nlci1wcmV2IikudW5iaW5kKCJjbGljayIpOw0KCQkJCQkNCgkJCQkJ Ly8gYWRkIHNodXR0ZXItbGlzdGVuZXJzIGFnYWluDQoJCQkJCXNodXR0ZXJSZWxv YWRlZC5pbml0KCdzaCcpOw0KCQkJCQkNCgkJCQkJLy8gcmVnaXN0ZXIgYWpheCBi cm93c2VyLW5hdmlnYXRpb24gbGlzdGVuZXJzDQoJCQkJCWpRdWVyeSgiYS5uZ2ct YnJvd3Nlci1uZXh0IikuY2xpY2soZnVuY3Rpb24oZSkgew0KCQkJCQkJcmV0dXJu IG5nZ19hamF4X2Jyb3dzZXJfbmF2aWdhdGlvbihlLCB0aGlzKTsNCgkJCQkJfSk7 DQoJCQkJCWpRdWVyeSgiYS5uZ2ctYnJvd3Nlci1wcmV2IikuY2xpY2soZnVuY3Rp b24oZSkgew0KCQkJCQkJcmV0dXJuIG5nZ19hamF4X2Jyb3dzZXJfbmF2aWdhdGlv bihlLCB0aGlzKTsNCgkJCQkJfSk7DQoJCQkJCQ0KCQkJCQluZ2dfcmVtb3ZlX2xv YWRpbmcoKTsNCgkJCQl9KTsNCgkJCX0pOw0KCQ0KCQkJLy8gZGVhY3RpdmF0ZSBI VE1MIGxpbmsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCgkNCglyZXR1cm4g dHJ1ZTsNCn0NCg0KdmFyIGxvYWRpbmdJbWFnZTsNCmZ1bmN0aW9uIG5nZ19zaG93 X2xvYWRpbmcob2JqKSB7DQoJbG9hZGluZ0ltYWdlID0galF1ZXJ5KGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImltZyIpKS5hdHRyKCJzcmMiLCBuZ2dfYWpheC5wYXRo ICsgImltYWdlcy9hamF4LWxvYWRlci5naWYiKS5hdHRyKCJhbHQiLCBuZ2dfYWph eC5sb2FkaW5nKTsNCg0KCWpRdWVyeSgiYm9keSIpLmFwcGVuZChsb2FkaW5nSW1h Z2UpOw0KCQ0KCWpRdWVyeShsb2FkaW5nSW1hZ2UpLmNzcyh7DQoJCXBvc2l0aW9u OiAiYWJzb2x1dGUiLA0KCQl0b3A6IChvYmoucGFnZVkgKyAxNSkgKyAicHgiLA0K CQlsZWZ0OiAob2JqLnBhZ2VYICsgMTUpICsgInB4Ig0KCX0pOw0KCQ0KCWpRdWVy eShkb2N1bWVudCkubW91c2Vtb3ZlKGZ1bmN0aW9uKGUpIHsNCgkJbG9hZGluZ0lt YWdlLmNzcyh7DQoJCQl0b3A6IChlLnBhZ2VZICsgMTUpICsgInB4IiwNCgkJCWxl ZnQ6IChlLnBhZ2VYICsgMTUpICsgInB4Ig0KCQl9KTsNCgl9KTsNCn0NCg0KZnVu Y3Rpb24gbmdnX3JlbW92ZV9sb2FkaW5nKCkgew0KCWpRdWVyeShkb2N1bWVudCku dW5iaW5kKCJtb3VzZW1vdmUiKTsNCgkNCglqUXVlcnkobG9hZGluZ0ltYWdlKS5y ZW1vdmUoKTsNCn0= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=comment-reply.js Content-Type: application/x-javascript; charset=UTF-8; name=comment-reply.js Content-Location: http://www.ogalik.ee/wp-includes/js/comment-reply.js?ver=20090102 Content-Transfer-Encoding: Base64 YWRkQ29tbWVudD17bW92ZUZvcm06ZnVuY3Rpb24oZCxmLGksYyl7dmFyIG09dGhp cyxhLGg9bS5JKGQpLGI9bS5JKGkpLGw9bS5JKCJjYW5jZWwtY29tbWVudC1yZXBs eS1saW5rIiksaj1tLkkoImNvbW1lbnRfcGFyZW50Iiksaz1tLkkoImNvbW1lbnRf cG9zdF9JRCIpO2lmKCFofHwhYnx8IWx8fCFqKXtyZXR1cm59bS5yZXNwb25kSWQ9 aTtjPWN8fGZhbHNlO2lmKCFtLkkoIndwLXRlbXAtZm9ybS1kaXYiKSl7YT1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmlkPSJ3cC10ZW1wLWZvcm0tZGl2 IjthLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2IucGFyZW50Tm9kZS5pbnNlcnRCZWZv cmUoYSxiKX1oLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsaC5uZXh0U2libGlu Zyk7aWYoayYmYyl7ay52YWx1ZT1jfWoudmFsdWU9ZjtsLnN0eWxlLmRpc3BsYXk9 IiI7bC5vbmNsaWNrPWZ1bmN0aW9uKCl7dmFyIG49YWRkQ29tbWVudCxlPW4uSSgi d3AtdGVtcC1mb3JtLWRpdiIpLG89bi5JKG4ucmVzcG9uZElkKTtpZighZXx8IW8p e3JldHVybn1uLkkoImNvbW1lbnRfcGFyZW50IikudmFsdWU9IjAiO2UucGFyZW50 Tm9kZS5pbnNlcnRCZWZvcmUobyxlKTtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo ZSk7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIjt0aGlzLm9uY2xpY2s9bnVsbDty ZXR1cm4gZmFsc2V9O3RyeXttLkkoImNvbW1lbnQiKS5mb2N1cygpfWNhdGNoKGcp e31yZXR1cm4gZmFsc2V9LEk6ZnVuY3Rpb24oYSl7cmV0dXJuIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGEpfX07 ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=suffusion.js Content-Type: application/x-javascript; charset=UTF-8; name=suffusion.js Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/scripts/suffusion.js?ver=3.8.2 Content-Transfer-Encoding: Base64 LyogQ29weXJpZ2h0IChjKSAyMDA2IEJyYW5kb24gQWFyb24gKGh0dHA6Ly9icmFu ZG9uYWFyb24ubmV0KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUICho dHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBo cCkNCiAqIGFuZCBHUEwgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvZ3BsLWxpY2Vuc2UucGhwKSBsaWNlbnNlcy4NCiAqDQogKiAkTGFzdENoYW5n ZWREYXRlOiAyMDA3LTA2LTE5IDIwOjI1OjI4IC0wNTAwIChUdWUsIDE5IEp1biAy MDA3KSAkDQogKiAkUmV2OiAyMTExICQNCiAqDQogKiBWZXJzaW9uIDIuMQ0KICov DQooZnVuY3Rpb24oJCl7JC5mbi5iZ0lmcmFtZT0kLmZuLmJnaWZyYW1lPWZ1bmN0 aW9uKHMpe2lmKCQuYnJvd3Nlci5tc2llJiZwYXJzZUludCgkLmJyb3dzZXIudmVy c2lvbik8PTYpe3M9JC5leHRlbmQoe3RvcDonYXV0bycsbGVmdDonYXV0bycsd2lk dGg6J2F1dG8nLGhlaWdodDonYXV0bycsb3BhY2l0eTp0cnVlLHNyYzonamF2YXNj cmlwdDpmYWxzZTsnfSxzfHx7fSk7dmFyIHByb3A9ZnVuY3Rpb24obil7cmV0dXJu IG4mJm4uY29uc3RydWN0b3I9PU51bWJlcj9uKydweCc6bjt9LGh0bWw9JzxpZnJh bWUgY2xhc3M9ImJnaWZyYW1lImZyYW1lYm9yZGVyPSIwInRhYmluZGV4PSItMSJz cmM9Iicrcy5zcmMrJyInKydzdHlsZT0iZGlzcGxheTpibG9jaztwb3NpdGlvbjph YnNvbHV0ZTt6LWluZGV4Oi0xOycrKHMub3BhY2l0eSE9PWZhbHNlPydmaWx0ZXI6 QWxwaGEoT3BhY2l0eT1cJzBcJyk7JzonJykrJ3RvcDonKyhzLnRvcD09J2F1dG8n PydleHByZXNzaW9uKCgocGFyc2VJbnQodGhpcy5wYXJlbnROb2RlLmN1cnJlbnRT dHlsZS5ib3JkZXJUb3BXaWR0aCl8fDApKi0xKStcJ3B4XCcpJzpwcm9wKHMudG9w KSkrJzsnKydsZWZ0OicrKHMubGVmdD09J2F1dG8nPydleHByZXNzaW9uKCgocGFy c2VJbnQodGhpcy5wYXJlbnROb2RlLmN1cnJlbnRTdHlsZS5ib3JkZXJMZWZ0V2lk dGgpfHwwKSotMSkrXCdweFwnKSc6cHJvcChzLmxlZnQpKSsnOycrJ3dpZHRoOicr KHMud2lkdGg9PSdhdXRvJz8nZXhwcmVzc2lvbih0aGlzLnBhcmVudE5vZGUub2Zm c2V0V2lkdGgrXCdweFwnKSc6cHJvcChzLndpZHRoKSkrJzsnKydoZWlnaHQ6Jyso cy5oZWlnaHQ9PSdhdXRvJz8nZXhwcmVzc2lvbih0aGlzLnBhcmVudE5vZGUub2Zm c2V0SGVpZ2h0K1wncHhcJyknOnByb3Aocy5oZWlnaHQpKSsnOycrJyIvPic7cmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCQoJz4gaWZyYW1lLmJnaWZyYW1l Jyx0aGlzKS5sZW5ndGg9PTApdGhpcy5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3Jl YXRlRWxlbWVudChodG1sKSx0aGlzLmZpcnN0Q2hpbGQpO30pO31yZXR1cm4gdGhp czt9O2lmKCEkLmJyb3dzZXIudmVyc2lvbikkLmJyb3dzZXIudmVyc2lvbj1uYXZp Z2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLy4rKD86cnZ8aXR8 cmF8aWUpW1wvOiBdKFtcZC5dKykvKVsxXTt9KShqUXVlcnkpOw0KDQovKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKiog IGpRdWVyeSBNYXNvbnJ5IHZlcnNpb24gMS4zLjINCioqICBDb3B5cmlnaHQgRGF2 aWQgRGVTYW5kcm8sIGxpY2Vuc2VkIE1JVA0KKiogIGh0dHA6Ly9kZXNhbmRyby5j b20vcmVzb3VyY2VzL2pxdWVyeS1tYXNvbnJ5DQoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCihmdW5jdGlvbihlKXt2 YXIgbj1lLmV2ZW50LG87bi5zcGVjaWFsLnNtYXJ0cmVzaXplPXtzZXR1cDpmdW5j dGlvbigpe2UodGhpcykuYmluZCgicmVzaXplIixuLnNwZWNpYWwuc21hcnRyZXNp emUuaGFuZGxlcil9LHRlYXJkb3duOmZ1bmN0aW9uKCl7ZSh0aGlzKS51bmJpbmQo InJlc2l6ZSIsbi5zcGVjaWFsLnNtYXJ0cmVzaXplLmhhbmRsZXIpfSxoYW5kbGVy OmZ1bmN0aW9uKGosbCl7dmFyIGc9dGhpcyxkPWFyZ3VtZW50cztqLnR5cGU9InNt YXJ0cmVzaXplIjtvJiZjbGVhclRpbWVvdXQobyk7bz1zZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7alF1ZXJ5LmV2ZW50LmhhbmRsZS5hcHBseShnLGQpfSxsPT09ImV4ZWNB c2FwIj8wOjEwMCl9fTtlLmZuLnNtYXJ0cmVzaXplPWZ1bmN0aW9uKGope3JldHVy biBqP3RoaXMuYmluZCgic21hcnRyZXNpemUiLGopOnRoaXMudHJpZ2dlcigic21h cnRyZXNpemUiLFsiZXhlY0FzYXAiXSl9O2UuZm4ubWFzb25yeT1mdW5jdGlvbihq LGwpe3ZhciBnPXtnZXRCcmlja3M6ZnVuY3Rpb24oZCxiLGEpe3ZhciBjPWEuaXRl bVNlbGVjdG9yPT09dW5kZWZpbmVkO2IuJGJyaWNrcz1hLmFwcGVuZGVkQ29udGVu dD09PXVuZGVmaW5lZD9jP2QuY2hpbGRyZW4oKTpkLmZpbmQoYS5pdGVtU2VsZWN0 b3IpOmM/YS5hcHBlbmRlZENvbnRlbnQ6YS5hcHBlbmRlZENvbnRlbnQuZmlsdGVy KGEuaXRlbVNlbGVjdG9yKX0scGxhY2VCcmljazpmdW5jdGlvbihkLGIsYSxjLGgp e2I9TWF0aC5taW4uYXBwbHkoTWF0aCxhKTtmb3IodmFyIGk9YitkLm91dGVySGVp Z2h0KHRydWUpLGY9YS5sZW5ndGgsaz1mLG09Yy5jb2xDb3VudCsxLWY7Zi0tOylp ZihhW2ZdPT1iKWs9ZjtkLmFwcGx5U3R5bGUoe2xlZnQ6Yy5jb2xXKmsrYy5wb3NM ZWZ0LHRvcDpifSxlLmV4dGVuZCh0cnVlLHt9LGguYW5pbWF0aW9uT3B0aW9ucykp O2ZvcihmPTA7ZjxtO2YrKyljLmNvbFlbaytmXT1pfSxzZXR1cDpmdW5jdGlvbihk LGIsYSl7Zy5nZXRCcmlja3MoZCxhLGIpO2lmKGEubWFzb25lZClhLnByZXZpb3Vz RGF0YT1kLmRhdGEoIm1hc29ucnkiKTthLmNvbFc9Yi5jb2x1bW5XaWR0aD09PXVu ZGVmaW5lZD9hLm1hc29uZWQ/YS5wcmV2aW91c0RhdGEuY29sVzphLiRicmlja3Mu b3V0ZXJXaWR0aCh0cnVlKTpiLmNvbHVtbldpZHRoO2EuY29sQ291bnQ9TWF0aC5m bG9vcihkLndpZHRoKCkvYS5jb2xXKTthLmNvbENvdW50PU1hdGgubWF4KGEuY29s Q291bnQsMSl9LGFycmFuZ2U6ZnVuY3Rpb24oZCxiLGEpe3ZhciBjO2lmKCFhLm1h c29uZWR8fGIuYXBwZW5kZWRDb250ZW50IT09dW5kZWZpbmVkKWEuJGJyaWNrcy5j c3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTtpZihhLm1hc29uZWQpe2EucG9zVG9w PWEucHJldmlvdXNEYXRhLnBvc1RvcDthLnBvc0xlZnQ9YS5wcmV2aW91c0RhdGEu cG9zTGVmdH1lbHNle2QuY3NzKCJwb3NpdGlvbiIsInJlbGF0aXZlIik7dmFyIGg9 ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7ZC5wcmVwZW5kKGgpO2Eu cG9zVG9wPU1hdGgucm91bmQoaC5wb3NpdGlvbigpLnRvcCk7YS5wb3NMZWZ0PU1h dGgucm91bmQoaC5wb3NpdGlvbigpLmxlZnQpO2gucmVtb3ZlKCl9aWYoYS5tYXNv bmVkJiZiLmFwcGVuZGVkQ29udGVudCE9PXVuZGVmaW5lZCl7YS5jb2xZPWEucHJl dmlvdXNEYXRhLmNvbFk7Zm9yKGM9YS5wcmV2aW91c0RhdGEuY29sQ291bnQ7Yzxh LmNvbENvdW50O2MrKylhLmNvbFlbY109YS5wb3NUb3B9ZWxzZXthLmNvbFk9W107 Zm9yKGM9YS5jb2xDb3VudDtjLS07KWEuY29sWS5wdXNoKGEucG9zVG9wKX1lLmZu LmFwcGx5U3R5bGU9YS5tYXNvbmVkJiZiLmFuaW1hdGU/ZS5mbi5hbmltYXRlOmUu Zm4uY3NzO2Iuc2luZ2xlTW9kZT9hLiRicmlja3MuZWFjaChmdW5jdGlvbigpe3Zh ciBpPWUodGhpcyk7Zy5wbGFjZUJyaWNrKGksYS5jb2xDb3VudCxhLmNvbFksYSxi KX0pOmEuJGJyaWNrcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxmPU1h dGguY2VpbChpLm91dGVyV2lkdGgodHJ1ZSkvYS5jb2xXKTtmPU1hdGgubWluKGYs YS5jb2xDb3VudCk7aWYoZj09PTEpZy5wbGFjZUJyaWNrKGksYS5jb2xDb3VudCxh LmNvbFksYSxiKTtlbHNle3ZhciBrPWEuY29sQ291bnQrMS1mLG09W107Zm9yKGM9 MDtjPGs7YysrKXt2YXIgcD1hLmNvbFkuc2xpY2UoYyxjK2YpO21bY109TWF0aC5t YXguYXBwbHkoTWF0aCxwKX1nLnBsYWNlQnJpY2soaSxrLG0sYSxiKX19KTthLndh bGxIPU1hdGgubWF4LmFwcGx5KE1hdGgsYS5jb2xZKTtkLmFwcGx5U3R5bGUoe2hl aWdodDphLndhbGxILWEucG9zVG9wfSxlLmV4dGVuZCh0cnVlLFtdLGIuYW5pbWF0 aW9uT3B0aW9ucykpO2EubWFzb25lZHx8c2V0VGltZW91dChmdW5jdGlvbigpe2Qu YWRkQ2xhc3MoIm1hc29uZWQiKX0sMSk7bC5jYWxsKGEuJGJyaWNrcyk7ZC5kYXRh KCJtYXNvbnJ5IixhKX0scmVzaXplOmZ1bmN0aW9uKGQsYixhKXthLm1hc29uZWQ9 ISFkLmRhdGEoIm1hc29ucnkiKTt2YXIgYz1kLmRhdGEoIm1hc29ucnkiKS5jb2xD b3VudDtnLnNldHVwKGQsYixhKTthLmNvbENvdW50IT1jJiZnLmFycmFuZ2UoZCxi LGEpfX07cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWUodGhpcyks Yj17fTtiLm1hc29uZWQ9ISFkLmRhdGEoIm1hc29ucnkiKTt2YXIgYT1iLm1hc29u ZWQ/ZC5kYXRhKCJtYXNvbnJ5Iikub3B0aW9uczp7fSxjPWUuZXh0ZW5kKHt9LGUu Zm4ubWFzb25yeS5kZWZhdWx0cyxhLGopLGg9YS5yZXNpemVhYmxlO2Iub3B0aW9u cz1jLnNhdmVPcHRpb25zP2M6YTtsPWx8fGZ1bmN0aW9uKCl7fTtnLmdldEJyaWNr cyhkLGIsYyk7aWYoIWIuJGJyaWNrcy5sZW5ndGgpcmV0dXJuIHRoaXM7Zy5zZXR1 cChkLGMsYik7Zy5hcnJhbmdlKGQsYyxiKTshaCYmYy5yZXNpemVhYmxlJiZlKHdp bmRvdykuYmluZCgic21hcnRyZXNpemUubWFzb25yeSIsZnVuY3Rpb24oKXtnLnJl c2l6ZShkLGMsYil9KTtoJiYhYy5yZXNpemVhYmxlJiZlKHdpbmRvdykudW5iaW5k KCJzbWFydHJlc2l6ZS5tYXNvbnJ5Iil9KX07ZS5mbi5tYXNvbnJ5LmRlZmF1bHRz PXtzaW5nbGVNb2RlOmZhbHNlLGNvbHVtbldpZHRoOnVuZGVmaW5lZCxpdGVtU2Vs ZWN0b3I6dW5kZWZpbmVkLGFwcGVuZGVkQ29udGVudDp1bmRlZmluZWQsc2F2ZU9w dGlvbnM6dHJ1ZSxyZXNpemVhYmxlOnRydWUsYW5pbWF0ZTpmYWxzZSxhbmltYXRp b25PcHRpb25zOnt9fX0pKGpRdWVyeSk7DQoNCi8qKg0KICogc3VmZnVzaW9uLmpz IC0gQ29udGFpbnMgYWxsIGN1c3RvbSBKYXZhU2NyaXB0IGZ1bmN0aW9ucyByZXF1 aXJlZCBieSBTdWZmdXNpb24NCiAqLw0KDQokaiA9IGpRdWVyeS5ub0NvbmZsaWN0 KCk7DQoNCiRqLmZuLmV4dGVuZCh7DQoJaGlnaGxpZ2h0OiBmdW5jdGlvbihzZWFy Y2gsIGluc2Vuc2l0aXZlLCBobHNfY2xhc3Mpew0KCQl2YXIgcmVnZXggPSBuZXcg UmVnRXhwKCIoPFtePl0qPil8KFxcYiIrIHNlYXJjaC5yZXBsYWNlKC8oWy0uKis/ XiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIikgKyIpIiwgaW5zZW5zaXRpdmUgPyAi aWciIDogImciKTsNCgkJcmV0dXJuIHRoaXMuaHRtbCh0aGlzLmh0bWwoKS5yZXBs YWNlKHJlZ2V4LCBmdW5jdGlvbihhLCBiLCBjKXsNCgkJCXJldHVybiAoYS5jaGFy QXQoMCkgPT0gIjwiKSA/IGEgOiAiPHNwYW4gY2xhc3M9XCIiKyBobHNfY2xhc3Mg KyJcIj4iICsgYyArICI8L3NwYW4+IjsNCgkJfSkpOw0KCX0NCn0pOw0KDQokai5m bi5yZW1vdmVIaWdobGlnaHQgPSBmdW5jdGlvbigpIHsNCglyZXR1cm4gdGhpcy5m aW5kKCJzcGFuLnNlYXJjaC1oaWdobGlnaHQiKS5lYWNoKGZ1bmN0aW9uKCkgew0K CQl3aXRoICh0aGlzLnBhcmVudE5vZGUpIHsNCgkJCXJlcGxhY2VDaGlsZCh0aGlz LmZpcnN0Q2hpbGQsIHRoaXMpOw0KCQkJbm9ybWFsaXplKCk7DQoJCX0NCgl9KS5l bmQoKTsNCn07DQoNCmZ1bmN0aW9uIHN1Zkh0bWxFbmNvZGUodmFsdWUpew0KCXJl dHVybiAkaignPGRpdi8+JykudGV4dCh2YWx1ZSkuaHRtbCgpOw0KfQ0KDQpmdW5j dGlvbiBzdWZIdG1sRGVjb2RlKHZhbHVlKXsNCglyZXR1cm4gJGooJzxkaXYvPicp Lmh0bWwodmFsdWUpLnRleHQoKTsNCn0NCg0KJGooZG9jdW1lbnQpLnJlYWR5KGZ1 bmN0aW9uKCkgew0KICAgIC8qIE1hZ2F6aW5lIEpTLCBmb3IgdGhlIGhlYWRsaW5l IHNlY3Rpb24gKi8NCgkkaignZGl2LnN1Zi1tYWctaGVhZGxpbmVzIGRpdi5zdWYt bWFnLWhlYWRsaW5lLXBob3RvJykuaGlkZSgpOw0KCSRqKCdkaXYuc3VmLW1hZy1o ZWFkbGluZS1waG90by1maXJzdCcpLnNob3coKTsNCgkkaignZGl2LnN1Zi1tYWct aGVhZGxpbmUtYmxvY2sgdWwubWFnLWhlYWRsaW5lcyBsaS5zdWYtbWFnLWhlYWRs aW5lLWZpcnN0IGEnKS5hZGRDbGFzcygndGFiLWN1cnJlbnQnKTsNCg0KCSRqKCdk aXYuc3VmLW1hZy1oZWFkbGluZS1ibG9jayB1bC5tYWctaGVhZGxpbmVzIGxpIGEn KS5ob3ZlcihmdW5jdGlvbigpew0KCQl2YXIgdGhpc0NsYXNzID0gdGhpcy5jbGFz c05hbWUuc3Vic3RyaW5nKDE3LCB0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCIgIikp Ow0KCQkkaignZGl2LnN1Zi1tYWctaGVhZGxpbmVzIGRpdi5zdWYtbWFnLWhlYWRs aW5lLXBob3RvJykuaGlkZSgpOw0KCQkkaignZGl2LnN1Zi1tYWctaGVhZGxpbmUt YmxvY2sgdWwubWFnLWhlYWRsaW5lcyBsaSBhJykucmVtb3ZlQ2xhc3MoJ3RhYi1j dXJyZW50Jyk7DQogICAgICAgICRqKCdkaXYuc3VmLW1hZy1oZWFkbGluZS1waG90 by0nICsgdGhpc0NsYXNzKS5zaG93KCk7DQoJCSRqKHRoaXMpLmFkZENsYXNzKCd0 YWItY3VycmVudCcpOw0KCX0gICApOw0KICAgIC8qIEVuZCBNYWdhemluZSBKUyAq Lw0KDQogICAgLyogVGFiYmVkIFdpZGdldHMgKi8NCiAgICAkaignZGl2LnRhYi1i b3ggZGl2LnNpZGViYXItdGFiLWNvbnRlbnQnKS5oaWRlKCk7DQogICAgJGooJ2Rp di5zYnRhYi1jb250ZW50LWZpcnN0Jykuc2hvdygpOw0KICAgICRqKCdkaXYudGFi LWJveCB1bC5zaWRlYmFyLXRhYnMgbGkuc2J0YWItZmlyc3QgYScpLmFkZENsYXNz KCd0YWItY3VycmVudCcpOw0KDQogICAgJGooJ2Rpdi50YWItYm94IHVsLnNpZGVi YXItdGFicyBsaSBhJykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgdmFyIHRo aXNDbGFzcyA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cmluZyg2LCB0aGlzLmNsYXNz TmFtZS5pbmRleE9mKCIgIikpOw0KICAgICAgICAkaignZGl2LnRhYi1ib3ggZGl2 LnNpZGViYXItdGFiLWNvbnRlbnQnKS5oaWRlKCk7DQogICAgICAgICRqKCdkaXYu dGFiLWJveCBkaXYuc2J0YWItY29udGVudC0nICsgdGhpc0NsYXNzKS5zaG93KCk7 DQogICAgICAgICRqKCdkaXYudGFiLWJveCB1bC5zaWRlYmFyLXRhYnMgbGkgYScp LnJlbW92ZUNsYXNzKCd0YWItY3VycmVudCcpOw0KICAgICAgICAkaih0aGlzKS5h ZGRDbGFzcygndGFiLWN1cnJlbnQnKTsNCiAgICB9KTsNCiAgICAvKiBFbmQgVGFi YmVkIFdpZGdldHMgKi8NCg0KICAgIC8qIEpRdWVyeS1iYXNlZCBmaXggZm9yIHdp ZGdldHMgdGhhdCBkbyBub3QgcHJpbnQgImFmdGVyX3RpdGxlIiAqLw0KICAgICRq KCcuZGJ4LWhhbmRsZScpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICRqKHRo aXMpLnByZXBlbmRUbyh0aGlzLnBhcmVudE5vZGUucGFyZW50Tm9kZSk7DQogICAg fSk7DQogICAgLyogRW5kIEpRdWVyeS1iYXNlZCBmaXggKi8NCg0KCS8qIEpRdWVy eSBmb3IgdGFiYmVkIHNpZGViYXJzICovDQoJJGooJy5zaWRlYmFyLXRhYiAuc2lk ZWJhci10YWItY29udGVudCcpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXZhciBwYXJl bnRJZCA9IHRoaXMucGFyZW50Tm9kZS5pZDsNCgkJdmFyIHBhcmVudENsYXNzID0g dGhpcy5wYXJlbnROb2RlLmNsYXNzTmFtZTsNCgkJcGFyZW50Q2xhc3MgPSBwYXJl bnRDbGFzcy5zdWJzdHJpbmcoMTIpOw0KCQkkaih0aGlzKS5hZGRDbGFzcygnc2J0 YWItY29udGVudC0nICsgcGFyZW50SWQpOw0KCQkkaih0aGlzKS5hZGRDbGFzcyhw YXJlbnRDbGFzcyk7DQoJICAgICRqKHRoaXMpLmFwcGVuZFRvKHRoaXMucGFyZW50 Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUpOw0KCX0pOw0KDQoJJGooJy50YWJi ZWQtc2lkZWJhciB1bC5zaWRlYmFyLXRhYnMgYScpLmVhY2goZnVuY3Rpb24oKSB7 DQoJCXZhciBwYXJlbnRJZCA9IHRoaXMucGFyZW50Tm9kZS5pZDsNCgkJJGoodGhp cykuYWRkQ2xhc3MocGFyZW50SWQpOw0KCX0pOw0KDQoJJGooJyN3c2lkZWJhci10 b3AudGFiYmVkLXNpZGViYXIgdWwuc2lkZWJhci10YWJzIGxpOmZpcnN0JykuYWRk Q2xhc3MoJ3NidGFiLWZpcnN0Jyk7DQoJJGooJyN3c2lkZWJhci10b3AudGFiYmVk LXNpZGViYXIgZGl2LnNpZGViYXItdGFiLWNvbnRlbnQ6Zmlyc3QnKS5hZGRDbGFz cygnc2J0YWItY29udGVudC1maXJzdCcpOw0KCSRqKCcjc2lkZWJhci50YWJiZWQt c2lkZWJhciB1bC5zaWRlYmFyLXRhYnMgbGk6Zmlyc3QnKS5hZGRDbGFzcygnc2J0 YWItZmlyc3QnKTsNCgkkaignI3NpZGViYXIudGFiYmVkLXNpZGViYXIgZGl2LnNp ZGViYXItdGFiLWNvbnRlbnQ6Zmlyc3QnKS5hZGRDbGFzcygnc2J0YWItY29udGVu dC1maXJzdCcpOw0KCSRqKCcjc2lkZWJhci1iLnRhYmJlZC1zaWRlYmFyIHVsLnNp ZGViYXItdGFicyBsaTpmaXJzdCcpLmFkZENsYXNzKCdzYnRhYi1maXJzdCcpOw0K CSRqKCcjc2lkZWJhci1iLnRhYmJlZC1zaWRlYmFyIGRpdi5zaWRlYmFyLXRhYi1j b250ZW50OmZpcnN0JykuYWRkQ2xhc3MoJ3NidGFiLWNvbnRlbnQtZmlyc3QnKTsN CgkkaignI3NpZGViYXItMi50YWJiZWQtc2lkZWJhciB1bC5zaWRlYmFyLXRhYnMg bGk6Zmlyc3QnKS5hZGRDbGFzcygnc2J0YWItZmlyc3QnKTsNCgkkaignI3NpZGVi YXItMi50YWJiZWQtc2lkZWJhciBkaXYuc2lkZWJhci10YWItY29udGVudDpmaXJz dCcpLmFkZENsYXNzKCdzYnRhYi1jb250ZW50LWZpcnN0Jyk7DQoJJGooJyNzaWRl YmFyLTItYi50YWJiZWQtc2lkZWJhciB1bC5zaWRlYmFyLXRhYnMgbGk6Zmlyc3Qn KS5hZGRDbGFzcygnc2J0YWItZmlyc3QnKTsNCgkkaignI3NpZGViYXItMi1iLnRh YmJlZC1zaWRlYmFyIGRpdi5zaWRlYmFyLXRhYi1jb250ZW50OmZpcnN0JykuYWRk Q2xhc3MoJ3NidGFiLWNvbnRlbnQtZmlyc3QnKTsNCgkkaignI3dzaWRlYmFyLWJv dHRvbS50YWJiZWQtc2lkZWJhciB1bC5zaWRlYmFyLXRhYnMgbGk6Zmlyc3QnKS5h ZGRDbGFzcygnc2J0YWItZmlyc3QnKTsNCgkkaignI3dzaWRlYmFyLWJvdHRvbS50 YWJiZWQtc2lkZWJhciBkaXYuc2lkZWJhci10YWItY29udGVudDpmaXJzdCcpLmFk ZENsYXNzKCdzYnRhYi1jb250ZW50LWZpcnN0Jyk7DQoNCgkkaignZGl2LnRhYmJl ZC1zaWRlYmFyIGRpdi5zaWRlYmFyLXRhYi1jb250ZW50JykuaGlkZSgpOw0KCSRq KCdkaXYuc2J0YWItY29udGVudC1maXJzdCcpLnNob3coKTsNCgkkaignZGl2LnRh YmJlZC1zaWRlYmFyIHVsLnNpZGViYXItdGFicyBsaS5zYnRhYi1maXJzdCBhJyku YWRkQ2xhc3MoJ3RhYi1jdXJyZW50Jyk7DQoNCgkkaignZGl2LnRhYmJlZC1zaWRl YmFyIHVsLnNpZGViYXItdGFicyBsaSBhJykuY2xpY2soZnVuY3Rpb24oKXsNCgkJ JGoodGhpcykucmVtb3ZlQ2xhc3MoJ3RhYi1jdXJyZW50Jyk7DQoJICAgIHZhciB0 aGlzQ2xhc3MgPSB0aGlzLmNsYXNzTmFtZS5zdWJzdHJpbmcoMTIsIHRoaXMuY2xh c3NOYW1lLmxlbmd0aCk7DQoJCXZhciBwYXJlbnRJZCA9IHRoaXMucGFyZW50Tm9k ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuaWQ7DQoJICAgICRqKCcjJyArIHBhcmVu dElkICsgJy50YWJiZWQtc2lkZWJhciBkaXYuc2lkZWJhci10YWItY29udGVudCcp LmhpZGUoKTsNCgkgICAgJGooJyMnICsgcGFyZW50SWQgKyAnLnRhYmJlZC1zaWRl YmFyIGRpdi5zYnRhYi1jb250ZW50LScgKyB0aGlzQ2xhc3MpLnNob3coKTsNCgkg ICAgJGooJyMnICsgcGFyZW50SWQgKyAnLnRhYmJlZC1zaWRlYmFyIHVsLnNpZGVi YXItdGFicyBsaSBhJykucmVtb3ZlQ2xhc3MoJ3RhYi1jdXJyZW50Jyk7DQoJICAg ICRqKHRoaXMpLmFkZENsYXNzKCd0YWItY3VycmVudCcpOw0KCX0pOw0KCS8qIEVu ZCB0YWJiZWQgc2lkZWJhcnMgKi8NCg0KCSRqKCJ1bC5zZi1tZW51ID4gbGkgPiB1 bCIpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXZhciBwYXJlbnRDbGFzcyA9IHRoaXMu cGFyZW50Tm9kZS5jbGFzc05hbWU7DQoJCXZhciBhX3RhZ19oID0gdGhpcy5wYXJl bnROb2RlLmNoaWxkTm9kZXNbMF07DQoJCXZhciBhX3RhZyA9ICRqKGFfdGFnX2gp Ow0KCQlhX3RhZy5wcmVwZW5kKCI8IS0tW2lmICFJRV0+LS0+PHNwYW4gY2xhc3M9 J2Rvd24tcHRyJz4mbmJzcDs8L3NwYW4+PCEtLTwhW2VuZGlmXS0tPiIpOw0KCQlh X3RhZy5hcHBlbmQoIjwhLS1baWYgbHQgSUUgN10+Jm5ic3A7Jm5ic3A7JmRhcnI7 PCFbZW5kaWZdLS0+IDwhLS1baWYgKCFJRSl8KGd0ZSBJRSA3KV0+PHNwYW4gY2xh c3M9J2Rvd24tcHRyJz4mbmJzcDs8L3NwYW4+PCFbZW5kaWZdLS0+Iik7DQoJCWFf dGFnLmFkZENsYXNzKCd3aXRoLWFycm93Jyk7DQoJfSk7DQoNCgkkaigidWwuc2Yt bWVudSB1bCB1bCIpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXZhciBwYXJlbnRDbGFz cyA9IHRoaXMucGFyZW50Tm9kZS5jbGFzc05hbWU7DQoJCXZhciBhX3RhZ19oID0g dGhpcy5wYXJlbnROb2RlLmNoaWxkTm9kZXNbMF07DQoJCXZhciBhX3RhZyA9ICRq KGFfdGFnX2gpOw0KCQlhX3RhZy5wcmVwZW5kKCI8IS0tW2lmICFJRV0+LS0+PHNw YW4gY2xhc3M9J2Zsb2F0LXB0cic+Jm5ic3A7PC9zcGFuPjwhLS08IVtlbmRpZl0t LT4iKTsNCgkJYV90YWcuYXBwZW5kKCI8IS0tW2lmIGx0IElFIDddPiZuYnNwOyZu YnNwOyZyYXJyOzwhW2VuZGlmXS0tPiA8IS0tW2lmICghSUUpfChndGUgSUUgNyld PjxzcGFuIGNsYXNzPSdmbG9hdC1wdHInPiZuYnNwOzwvc3Bhbj48IVtlbmRpZl0t LT4iKTsNCgkJYV90YWcuYWRkQ2xhc3MoJ2Ryb3AnKTsNCgl9KTsNCg0KCSRqKCIj bmF2IHVsLnNmLW1lbnUgbGkiKS5ob3ZlcigNCgkJCWZ1bmN0aW9uKCkgew0KCQkJ CWlmIChzdWZfbmF2X2VmZmVjdCA9PSAnZmFkZScpIHsNCgkJCQkJJGoodGhpcyku Y2hpbGRyZW4oJ3VsOmZpcnN0JykuZmFkZUluKHN1Zl9uYXZfZGVsYXkpLmNzcyh7 dmlzaWJpbGl0eTogInZpc2libGUifSk7DQoJCQkJfQ0KCQkJCWVsc2Ugew0KCQkJ CQkkaih0aGlzKS5jaGlsZHJlbigndWw6Zmlyc3QnKS5zaG93KHN1Zl9uYXZfZGVs YXkpLmNzcyh7dmlzaWJpbGl0eTogInZpc2libGUifSk7DQoJCQkJfQ0KCQkJfSwN CgkJCWZ1bmN0aW9uKCkgew0KCQkJCSRqKHRoaXMpLmNoaWxkcmVuKCd1bDpmaXJz dCcpLmhpZGUoKTsNCgkJCX0pLmJnSWZyYW1lKHtvcGFjaXR5OiAnc2hvdyd9KTsN Cg0KCSRqKCIjbmF2LXRvcCB1bC5zZi1tZW51IGxpIikuaG92ZXIoDQoJCQlmdW5j dGlvbigpIHsNCgkJCQlpZiAoc3VmX25hdnRfZWZmZWN0ID09ICdmYWRlJykgew0K CQkJCQkkaih0aGlzKS5maW5kKCd1bDpmaXJzdCcpLnNob3coc3VmX25hdnRfZGVs YXkpLmZhZGVJbigpLmNzcyh7dmlzaWJpbGl0eTogInZpc2libGUifSk7DQoJCQkJ fQ0KCQkJCWVsc2Ugew0KCQkJCQkkaih0aGlzKS5maW5kKCd1bDpmaXJzdCcpLnNo b3coc3VmX25hdnRfZGVsYXkpLmNzcyh7dmlzaWJpbGl0eTogInZpc2libGUifSk7 DQoJCQkJfQ0KCQkJfSwNCgkJCWZ1bmN0aW9uKCkgew0KCQkJCSRqKHRoaXMpLmZp bmQoJ3VsOmZpcnN0JykuY3NzKHt2aXNpYmlsaXR5OiAiaGlkZGVuIn0pOw0KCQkJ fSkuYmdJZnJhbWUoe29wYWNpdHk6ICdzaG93J30pOw0KDQoJLy8gRXhwYW5kIFBh bmVsDQoJJGooIiN0b3AtYmFyLXJpZ2h0LXNwYW5lbC10YWIgLm9wZW4iKS5jbGlj ayhmdW5jdGlvbigpew0KCQkkaigiI3RvcC1iYXItcmlnaHQtc3BhbmVsIikuc2xp ZGVEb3duKCJtZWRpdW0iKTsNCgl9KTsNCgkvLyBDb2xsYXBzZSBQYW5lbA0KCSRq KCIjdG9wLWJhci1yaWdodC1zcGFuZWwtdGFiIC5jbG9zZSIpLmNsaWNrKGZ1bmN0 aW9uKCl7DQoJCSRqKCIjdG9wLWJhci1yaWdodC1zcGFuZWwiKS5zbGlkZVVwKCJt ZWRpdW0iKTsNCgl9KTsNCgkvLyBTd2l0Y2ggYnV0dG9ucyBmcm9tICJMb2cgSW4g fCBSZWdpc3RlciIgdG8gIkNsb3NlIFBhbmVsIiBvbiBjbGljaw0KCSRqKCIjdG9w LWJhci1yaWdodC1zcGFuZWwtdGFiIC50b2dnbGUgYSIpLmNsaWNrKGZ1bmN0aW9u ICgpIHsNCgkJJGooIiN0b3AtYmFyLXJpZ2h0LXNwYW5lbC10YWIgLnRvZ2dsZSBh IikudG9nZ2xlKCk7DQoJfSk7DQoNCgkkaignI3NlYXJjaC1pbmZvIGlucHV0W3R5 cGU9ImNoZWNrYm94Il0uc2VhcmNoLWhsJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50 KSB7DQoJCXZhciBzZWFyY2ggPSAkaignI3NlYXJjaC10ZXJtJykudmFsKCk7DQoJ CXZhciBobHNfY2xhc3MgPSAnc2VhcmNoLWhpZ2hsaWdodCc7DQoJCWlmICgkaih0 aGlzKS5hdHRyKCdjaGVja2VkJykpIHsNCgkJCS8vIEhpZ2hsaWdodCBzZWFyY2gg cmVzdWx0cw0KCQkJJGooJyNjb250ZW50IC5lbnRyeScpLmVhY2goZnVuY3Rpb24o KSB7DQoJCQkJdmFyIHF1b3RlcyA9IHNlYXJjaC5tYXRjaCgvIihbXiJdKykiL2cp Ow0KCQkJCXZhciBsZW4gPSAwOw0KCQkJCXZhciBtYXRjaGVzID0gbmV3IEFycmF5 KCk7DQoJCQkJaWYgKHF1b3RlcyAhPSBudWxsKSB7DQoJCQkJCWxlbiA9IHF1b3Rl cy5sZW5ndGg7DQoJCQkJCWZvciAoaT0wOyBpPGxlbjsgaSsrKSB7DQoJCQkJCQlx dW90ZXNbaV0gPSBxdW90ZXNbaV0ucmVwbGFjZSgvIi9nLCAnJyk7DQoJCQkJCQlt YXRjaGVzW21hdGNoZXMubGVuZ3RoXSA9IHF1b3Rlc1tpXTsNCgkJCQkJCXNlYXJj aCA9IHNlYXJjaC5yZXBsYWNlKHF1b3Rlc1tpXSwgJyAnKTsNCgkJCQkJfQ0KCQkJ CX0NCg0KCQkJCXZhciBub19xdW90ZXMgPSBzZWFyY2gubWF0Y2goL1xiW1xTXStc Yi9nKTsNCgkJCQlpZiAobm9fcXVvdGVzICE9IG51bGwpIHsNCgkJCQkJbGVuID0g bm9fcXVvdGVzLmxlbmd0aDsNCgkJCQkJZm9yIChpPTA7IGk8bGVuOyBpKyspIHsN CgkJCQkJCW1hdGNoZXNbbWF0Y2hlcy5sZW5ndGhdID0gbm9fcXVvdGVzW2ldOw0K CQkJCQl9DQoJCQkJfQ0KDQoJCQkJbGVuID0gbWF0Y2hlcy5sZW5ndGg7DQoJCQkJ Zm9yIChpPTA7IGk8bGVuOyBpKyspIHsNCgkJCQkJdmFyIHNlYXJjaF9zdHJpbmcg PSBtYXRjaGVzW2ldOw0KCQkJCQkkaih0aGlzKS5oaWdobGlnaHQoc2VhcmNoX3N0 cmluZyk7DQoJCQkJCSRqKHRoaXMpLmhpZ2hsaWdodChzZWFyY2hfc3RyaW5nLCB0 cnVlLCBobHNfY2xhc3MpOw0KCQkJCX0NCgkJCX0pOw0KCQl9DQoJCWVsc2Ugew0K CQkJLy9Vbi1oaWdobGlnaHQgc2VhcmNoIHJlc3VsdHMNCgkJCSRqKCcjY29udGVu dCAuZW50cnknKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCSRqKHRoaXMpLnJlbW92 ZUhpZ2hsaWdodCgpOw0KCQkJfSk7DQoJCX0NCgl9KTsNCg0KCWlmICh0eXBlb2Yg c3VmX2pxX21hc29ucnlfZW5hYmxlZCAhPSAndW5kZWZpbmVkJyAmJiBzdWZfanFf bWFzb25yeV9lbmFibGVkID09ICdlbmFibGVkJykgew0KCQkvLyRqKCIjdG9wLWJh ci1yaWdodC1zcGFuZWwiKS5tYXNvbnJ5KCk7DQoJCS8vJGooIiN3aWRnZXRzLWFi b3ZlLWhlYWRlciIpLm1hc29ucnkoKTsNCgkJJGooIiNob3Jpem9udGFsLW91dGVy LXdpZGdldHMtMSIpLm1hc29ucnkoKTsNCgkJJGooIiNob3Jpem9udGFsLW91dGVy LXdpZGdldHMtMiIpLm1hc29ucnkoKTsNCgkJJGooIiNhZC1ob2MtMSIpLm1hc29u cnkoKTsNCgkJJGooIiNhZC1ob2MtMiIpLm1hc29ucnkoKTsNCgkJJGooIiNhZC1o b2MtMyIpLm1hc29ucnkoKTsNCgkJJGooIiNhZC1ob2MtNCIpLm1hc29ucnkoKTsN CgkJJGooIiNhZC1ob2MtNSIpLm1hc29ucnkoKTsNCgl9DQoNCgkvLyBJZiB0aGUg SFRNTCBoZWlnaHQgYXR0cmlidXRlIGlzIHByZXNlbnQgZm9yIGltYWdlcywgdGhl IG1heC13aWR0aCBzZXR0aW5nIHJlYWxseSBoYW1tZXJzIHRoZSBpbWFnZSBwcm9w b3J0aW9ucy4NCgkkaigiLmVudHJ5IGltZyIpLnJlbW92ZUF0dHIoJ2hlaWdodCcp Ow0KDQoJLy8gRml4ZXMgZm9yIE5HRyBvbiBJRTguIFRoaXMgc2hvdWxkIGlkZWFs bHkgYmUgb24gTkdHJ3MgcGx1Z2luIGl0c2VsZiwgYnV0IGdpdmVuIHRoZWlyIHN1 cHBvcnQgb3IgbGFjayB0aGVyZW9mIDotKCAuLi4NCgkkaigiLm5nZy1nYWxsZXJ5 LXRodW1ibmFpbCBpbWciKS5yZW1vdmVBdHRyKCdoZWlnaHQnKTsNCgkkaigiLm5n Zy1nYWxsZXJ5LXRodW1ibmFpbCBpbWciKS5yZW1vdmVBdHRyKCd3aWR0aCcpOw0K DQoJJGooIi53aWRnZXRfY2FsZW5kYXIgdGJvZHkgdGQgYSIpLmVhY2goZnVuY3Rp b24oKSB7DQoJCXZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7DQoJCS8vdmFy IGFfdGFnX2ggPSB0aGlzLnBhcmVudE5vZGUuY2hpbGROb2Rlc1swXTsNCgkJdmFy IHRkX3RhZyA9ICRqKHBhcmVudCk7DQoJCXRkX3RhZy5hZGRDbGFzcygnd2l0aC1w b3N0cycpOw0KCX0pOw0KDQoJJGooJ2Euc3VmLXRpbGUtaWNvbicpLmNsaWNrKGZ1 bmN0aW9uKCkgew0KCQl2YXIgY2xhc3NfbmFtZSA9IHRoaXMuY2xhc3NOYW1lOw0K CQl2YXIgdGhpc0lkID0gdGhpcy5pZDsNCgkJdmFyIGxhc3RTZXAgPSB0aGlzSWQu bGFzdEluZGV4T2YoJy0nKTsNCgkJdmFyIGVsZW1lbnRUeXBlID0gdGhpc0lkLnN1 YnN0cigwLCBsYXN0U2VwKTsNCgkJdmFyIGVsZW1lbnRJZCA9IHRoaXNJZC5zdWJz dHIobGFzdFNlcCk7DQoJCXZhciB0ZXh0RWxlbWVudElkID0gZWxlbWVudFR5cGUg KyAnLXRleHQnICsgZWxlbWVudElkOw0KCQkkaignIycgKyAgdGV4dEVsZW1lbnRJ ZCkudG9nZ2xlKCk7DQoJCWlmIChjbGFzc19uYW1lLmluZGV4T2YoJ2NsaWNrZWQn KSA+IC0xKSB7DQoJCQkkaih0aGlzKS5yZW1vdmVDbGFzcygnY2xpY2tlZCcpOw0K CQl9DQoJCWVsc2Ugew0KCQkJJGoodGhpcykuYWRkQ2xhc3MoJ2NsaWNrZWQnKTsN CgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfSk7DQoNCgkvLyBKUXVlcnkgQ3ljbGUg c3RvcHMgaWYgdGhlcmUgaXMgb25seSBvbmUgaW1hZ2UgaW4gaXQuIFRoZSBmb2xs b3dpbmcgc25pcHBldCBmaXhlcyB0aGUgaXNzdWUuDQoJJGooJyNzbGlkZXJDb250 ZW50LCAuc2xpZGVyQ29udGVudCcpLmVhY2goZnVuY3Rpb24oKSB7DQoJCWlmICgk aih0aGlzKS5jaGlsZHJlbigpLmxlbmd0aCA9PSAxKSB7DQoJCQl2YXIgc2luZ2xl ID0gdGhpcy5maXJzdENoaWxkOw0KCQkJJGooc2luZ2xlKS5zaG93KCk7DQoJCX0N Cgl9KTsNCg0KCSRqKCcucGFnZS1uYXYtcmlnaHQgYSwgLnBhZ2UtbmF2LWxlZnQg YScpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXZhciBwYXJlbnRDb250YWluZXIgPSAk aih0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKTsNCgkJdmFyIGhlaWdodCA9IDAuNDUg KiBwYXJlbnRDb250YWluZXIuaGVpZ2h0KCk7DQoJCSRqKHRoaXMpLmNzcyh7dG9w OiBoZWlnaHQgKyAncHgnfSk7DQoJfSk7DQp9KTsNCg== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=dbx.js Content-Type: application/x-javascript; charset=UTF-8; name=dbx.js Content-Location: http://www.ogalik.ee/wp-content/themes/suffusion/dbx.js Content-Transfer-Encoding: Base64 Ly8gREJYMy4wIDo6IERvY2tpbmcgQm94ZXMgKGRieCkNCi8vICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBE T00gc2NyaXB0aW5nIGJ5IGJyb3RoZXJjYWtlIC0tIGh0dHA6Ly93d3cuYnJvdGhl cmNha2UuY29tLw0KLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IC0tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLmh0bWwNCi8vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqDQp2YXIgZGJ4O2Z1bmN0aW9uIGRieE1hbmFnZXIoc2lkLCB1c2VpZCwgaGlk ZSwgYnV0dG9udHlwZSl7ZGJ4ID0gdGhpcztpZighL15bLV9hLXowLTldKyQvaS50 ZXN0KHNpZCkpIHsgdGhyb3coJ0Vycm9yIGZyb20gZGJ4TWFuYWdlcjpcbiInICsg c2lkICsgJyIgaXMgYW4gaW52YWxpZCBzZXNzaW9uIElEJyk7IHJldHVybjsgfXRo aXMua2RlID0gbmF2aWdhdG9yLnZlbmRvciA9PSAnS0RFJzt0aGlzLnNhZmFyaSA9 IG5hdmlnYXRvci52ZW5kb3IgPT0gJ0FwcGxlIENvbXB1dGVyLCBJbmMuJzt0aGlz LmNocm9tZSA9IG5hdmlnYXRvci52ZW5kb3IgPT0gJ0dvb2dsZSBJbmMuJzt0aGlz Lm9wZXJhID0gdHlwZW9mIHdpbmRvdy5vcGVyYSAhPSAndW5kZWZpbmVkJzt0aGlz Lm1zaWUgPSB0eXBlb2YgZG9jdW1lbnQudW5pcXVlSUQgIT0gJ3VuZGVmaW5lZCc7 dGhpcy5zdXBwb3J0ZWQgPSAoISh0eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudHNC eVRhZ05hbWUgPT0gJ3VuZGVmaW5lZCd8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5 VGFnTmFtZSgnKicpLmxlbmd0aCA9PSAwfHwgKHRoaXMua2RlICYmIHR5cGVvZiB3 aW5kb3cuc2lkZWJhciA9PSAndW5kZWZpbmVkJyl8fCAodGhpcy5vcGVyYSAmJiBw YXJzZUZsb2F0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5zcGxp dCgvb3BlcmFbXC8gXS8pWzFdLnNwbGl0KCcgJylbMF0sIDEwKSA8IDgpKSk7aWYo IXRoaXMuc3VwcG9ydGVkKSB7IHJldHVybjsgfXRoaXMuZXR5cGUgPSB0eXBlb2Yg ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciAhPSAndW5kZWZpbmVkJyA/ICdhZGRF dmVudExpc3RlbmVyJyA6IHR5cGVvZiBkb2N1bWVudC5hdHRhY2hFdmVudCAhPSAn dW5kZWZpbmVkJyA/ICdhdHRhY2hFdmVudCcgOiAnbm9uZSc7aWYodGhpcy5ldHlw ZSA9PSAnbm9uZScpIHsgdGhpcy5zdXBwb3J0ZWQgPSBmYWxzZTsgcmV0dXJuOyB9 dGhpcy5lcHJlZml4ID0gKHRoaXMuZXR5cGUgPT0gJ2F0dGFjaEV2ZW50JyA/ICdv bicgOiAnJyk7dGhpcy5zaWQgPSBzaWQ7dGhpcy5jb29raWVuYW1lID0gJ2RieC0n ICsgdGhpcy5zaWQgKyAnPSc7dGhpcy51c2VpZCA9IHR5cGVvZiB1c2VpZCAhPSAn dW5kZWZpbmVkJyAmJiB1c2VpZCA9PSAneWVzJyA/IHRydWUgOiBmYWxzZTt0aGlz LmhpZGUgPSB0eXBlb2YgaGlkZSAhPSAndW5kZWZpbmVkJyAmJiBoaWRlID09ICdu bycgPyBmYWxzZSA6IHRydWU7dGhpcy5idXR0b250eXBlID0gdHlwZW9mIGJ1dHRv bnR5cGUgIT0gJ3VuZGVmaW5lZCcgJiYgYnV0dG9udHlwZSA9PSAnYnV0dG9uJyA/ ICdidXR0b24nIDogJ2xpbmsnO3RoaXMucnVubmluZyA9IDA7dGhpcy5nbnVtYmVy cyA9IHt9O3RoaXMubWF4ID0gMDt0aGlzLnJvb3Rjb29raWUgPSAnJztpZihkb2N1 bWVudC5jb29raWUgJiYgZG9jdW1lbnQuY29va2llLmluZGV4T2YodGhpcy5jb29r aWVuYW1lKSAhPSAtMSl7dGhpcy5yb290Y29va2llID0gZG9jdW1lbnQuY29va2ll LnNwbGl0KHRoaXMuY29va2llbmFtZSlbMV0uc3BsaXQoJzsnKVswXTt0aGlzLnJv b3Rjb29raWUgPSB0aGlzLnJvb3Rjb29raWUucmVwbGFjZSgvXHwvZywgJywnKS5y ZXBsYWNlKC86L2csICc9Jyk7aWYodGhpcy5yb290Y29va2llLmluZGV4T2YoJysn KSA9PSAtMSl7dGhpcy5yb290Y29va2llID0gdGhpcy5yb290Y29va2llLnJlcGxh Y2UoLygsfCR8JikvaWcsICcrJDEnKS5yZXBsYWNlKC8oXC1cKykvZywgJy0nKTt9 fXRoaXMuc2F2ZWRhdGEgPSB7fTt0aGlzLmNvb2tpZXN0YXRlID0gdGhpcy5nZXRD b29raWVTdGF0ZSgpO307ZGJ4TWFuYWdlci5wcm90b3R5cGUuc2V0Q29va2llU3Rh dGUgPSBmdW5jdGlvbigpe3ZhciBub3cgPSBuZXcgRGF0ZSgpO25vdy5zZXRUaW1l KG5vdy5nZXRUaW1lKCkgKyAoMzY1KjI0KjYwKjYwKjEwMDApKTt0aGlzLmNvbXBp bGVTdGF0ZVN0cmluZygpO3RoaXMuY29va2llc3RyaW5nID0gdGhpcy5zdGF0ZS5y ZXBsYWNlKC8sL2csICd8JykucmVwbGFjZSgvPS9nLCAnOicpLnJlcGxhY2UoL1wr L2csICcnKTtpZih0eXBlb2YgdGhpcy5vbnN0YXRlY2hhbmdlID09ICd1bmRlZmlu ZWQnIHx8IHRoaXMub25zdGF0ZWNoYW5nZSgpKXtkb2N1bWVudC5jb29raWUgPSB0 aGlzLmNvb2tpZW5hbWUrIHRoaXMuY29va2llc3RyaW5nKyAnOyBleHBpcmVzPScg KyBub3cudG9HTVRTdHJpbmcoKSsgJzsgcGF0aD0vJzt9fTtkYnhNYW5hZ2VyLnBy b3RvdHlwZS5nZXRDb29raWVTdGF0ZSA9IGZ1bmN0aW9uKCl7dGhpcy5jb29raWVz dGF0ZSA9IG51bGw7aWYoZG9jdW1lbnQuY29va2llKXtpZihkb2N1bWVudC5jb29r aWUuaW5kZXhPZih0aGlzLmNvb2tpZW5hbWUpICE9IC0xKXt0aGlzLmNvb2tpZSA9 IGRvY3VtZW50LmNvb2tpZS5zcGxpdCh0aGlzLmNvb2tpZW5hbWUpWzFdLnNwbGl0 KCc7JylbMF0uc3BsaXQoJyYnKTtmb3IodmFyIGkgaW4gdGhpcy5jb29raWUpe2lm KHRoaXMudW53YW50ZWQodGhpcy5jb29raWUsIGkpKSB7IGNvbnRpbnVlOyB9dGhp cy5jb29raWVbaV0gPSB0aGlzLmNvb2tpZVtpXS5yZXBsYWNlKC9cfC9nLCAnLCcp O3RoaXMuY29va2llW2ldID0gdGhpcy5jb29raWVbaV0ucmVwbGFjZSgvOi9nLCAn PScpO2lmKHRoaXMuY29va2llW2ldLmluZGV4T2YoJysnKSA9PSAtMSl7dGhpcy5j b29raWVbaV0gPSB0aGlzLmNvb2tpZVtpXS5yZXBsYWNlKC8oLHwkfCYpL2lnLCAn KyQxJykucmVwbGFjZSgvKFwtXCspL2csICctJyk7fXRoaXMuY29va2llW2ldID0g dGhpcy5jb29raWVbaV0uc3BsaXQoJz0nKTt0aGlzLmNvb2tpZVtpXVsxXSA9IHRo aXMuY29va2llW2ldWzFdLnNwbGl0KCcsJyk7fXRoaXMuY29va2llc3RhdGUgPSB7 fTtmb3IoaSBpbiB0aGlzLmNvb2tpZSl7aWYodGhpcy51bndhbnRlZCh0aGlzLmNv b2tpZSwgaSkpIHsgY29udGludWU7IH10aGlzLmNvb2tpZXN0YXRlW3RoaXMuY29v a2llW2ldWzBdXSA9IHRoaXMuY29va2llW2ldWzFdO319fXJldHVybiB0aGlzLmNv b2tpZXN0YXRlO307ZGJ4TWFuYWdlci5wcm90b3R5cGUuY29tcGlsZVN0YXRlU3Ry aW5nID0gZnVuY3Rpb24oKXt2YXIgc3RyID0gJyc7Zm9yKHZhciBqIGluIHRoaXMu c2F2ZWRhdGEpe2lmKHRoaXMudW53YW50ZWQodGhpcy5zYXZlZGF0YSwgaikpIHsg Y29udGludWU7IH1zdHIgKz0gaiArICc9JyArIHRoaXMuc2F2ZWRhdGFbal0gKyAn Jid9dGhpcy5zdGF0ZSA9IHN0ci5yZXBsYWNlKC9eKC4rKSYkLywgJyQxJyk7fTtk YnhNYW5hZ2VyLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24odGFn KXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyAhPSAndW5k ZWZpbmVkJyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53 My5vcmcvMTk5OS94aHRtbCcsIHRhZykgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KHRhZyk7fTtkYnhNYW5hZ2VyLnByb3RvdHlwZS5nZXRUYXJnZXQgPSBmdW5jdGlv bihlLCBwYXR0ZXJuLCBub2RlKXtpZih0eXBlb2Ygbm9kZSAhPSAndW5kZWZpbmVk Jyl7dmFyIHRhcmdldCA9IG5vZGU7fWVsc2V7dGFyZ2V0ID0gdHlwZW9mIGUudGFy Z2V0ICE9ICd1bmRlZmluZWQnID8gZS50YXJnZXQgOiBlLnNyY0VsZW1lbnQ7fXdo aWxlKCF0aGlzLmhhc0NsYXNzKHRhcmdldCwgcGF0dGVybikpe3RhcmdldCA9IHRh cmdldC5wYXJlbnROb2RlO2lmKHRoaXMuaGFzQ2xhc3ModGFyZ2V0LCAnZGJ4XC1n cm91cCcpICYmICF0aGlzLmhhc0NsYXNzKHRhcmdldCwgcGF0dGVybikpe3JldHVy biBudWxsO319cmV0dXJuIHRhcmdldDt9O2RieE1hbmFnZXIucHJvdG90eXBlLmdl dElEID0gZnVuY3Rpb24oZWxlbWVudCl7aWYoIWVsZW1lbnQgfHwgIWVsZW1lbnQu Y2xhc3NOYW1lKSB7IHJldHVybiBudWxsOyB9ZWxzZSBpZih0aGlzLmhhc0NsYXNz KGVsZW1lbnQsICdkYnhcLXN1ZmZ1c2lvbi1kaXNjYXJkcycpKSB7IHJldHVybiAn c3VmZnVzaW9uLWRpc2NhcmRzJzsgfXZhciBjbmFtZSA9IGVsZW1lbnQuY2xhc3NO YW1lLnNwbGl0KCdkYnhpZC0nKTtpZihjbmFtZS5sZW5ndGggPT0gMSkgeyByZXR1 cm4gbnVsbDsgfXJldHVybiBjbmFtZVsxXS5yZXBsYWNlKC9eKFthLXpBLVowLTlf XSspLiokLywgJyQxJyk7fTtkYnhNYW5hZ2VyLnByb3RvdHlwZS5nZXRTaWJsaW5n Qm94ID0gZnVuY3Rpb24ocm9vdCwgc2libGluZyl7dmFyIG5vZGUgPSByb290W3Np YmxpbmddO3doaWxlKG5vZGUgJiYgIXRoaXMuaGFzQ2xhc3Mobm9kZSwgJ2RieFwt Ym94Jykpe25vZGUgPSBub2RlW3NpYmxpbmddO31pZighbm9kZSkgeyBub2RlID0g cm9vdDsgfXJldHVybiBub2RlO307ZGJ4TWFuYWdlci5wcm90b3R5cGUuZ2V0UG9z aXRpb24gPSBmdW5jdGlvbihvYmosIGNlbnRlcil7dmFyIHBvc2l0aW9uID0geyAn bGVmdCcgOiBvYmoub2Zmc2V0TGVmdCwgJ3RvcCcgOiBvYmoub2Zmc2V0VG9wIH07 dmFyIHRtcCA9IG9iai5vZmZzZXRQYXJlbnQ7d2hpbGUodG1wKXtwb3NpdGlvbi5s ZWZ0ICs9IHRtcC5vZmZzZXRMZWZ0O3Bvc2l0aW9uLnRvcCArPSB0bXAub2Zmc2V0 VG9wO3RtcCA9IHRtcC5vZmZzZXRQYXJlbnQ7fWlmKGNlbnRlcil7cG9zaXRpb24u bGVmdCArPSBvYmoub2Zmc2V0V2lkdGggLyAyO3Bvc2l0aW9uLnRvcCArPSBvYmou b2Zmc2V0SGVpZ2h0IC8gMjt9cmV0dXJuIHBvc2l0aW9uO307ZGJ4TWFuYWdlci5w cm90b3R5cGUuZ2V0Vmlld3BvcnRXaWR0aCA9IGZ1bmN0aW9uKCl7cmV0dXJuIHR5 cGVvZiB3aW5kb3cuaW5uZXJXaWR0aCAhPSAndW5kZWZpbmVkJz8gd2luZG93Lmlu bmVyV2lkdGg6ICh0eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICE9ICd1 bmRlZmluZWQnJiYgdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGll bnRXaWR0aCAhPSAndW5kZWZpbmVkJyYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dC5jbGllbnRXaWR0aCAhPSAwKT8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNs aWVudFdpZHRoOiB0aGlzLmdldCgnYm9keScpWzBdLmNsaWVudFdpZHRoO307ZGJ4 TWFuYWdlci5wcm90b3R5cGUuY29tcGlsZUFuZERpc3BhdGNoT25CZWZvcmVTdGF0 ZUNoYW5nZSA9IGZ1bmN0aW9uKCl7dmFyIGFjdGlvbnMgPSB7fTtmb3IodmFyIGk9 MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspe3ZhciBkYXRhID0gYXJndW1lbnRz W2ldO3RoaXMuZGJ4b2JqZWN0ID0gZGF0YVsxXTt0aGlzLmdyb3VwID0gZGF0YVsy XTt0aGlzLmdpZCA9IGRhdGFbM107dGhpcy5zb3VyY2Vib3ggPSBkYXRhWzRdO3Ro aXMudGFyZ2V0ID0gZGF0YVs1XTt0aGlzLmFjdGlvbiA9IGRhdGFbNl07YWN0aW9u c1tkYXRhWzBdXSA9IHRoaXMub25iZWZvcmVzdGF0ZWNoYW5nZSgpO31yZXR1cm4g YWN0aW9uczt9O2RieE1hbmFnZXIucHJvdG90eXBlLmNvbXBpbGVBbmREaXNwYXRj aE9uQW5pbWF0ZSA9IGZ1bmN0aW9uKGJveCwgY2xvbmUsIGNhbGxlciwgY291bnQs IHJlcyl7ZGJ4LnNvdXJjZWJveCA9IGJveDtkYnguY2xvbmVib3ggPSBjbG9uZTtk YnguZGJ4b2JqZWN0ID0gY2FsbGVyO2RieC5ncm91cCA9IGNhbGxlci5jb250YWlu ZXI7ZGJ4LmFuaWNvdW50ID0gY291bnQgLSAxO2RieC5hbmlsZW5ndGggPSByZXMg LSAxO2RieC5vbmFuaW1hdGUoKTt9O2RieE1hbmFnZXIucHJvdG90eXBlLmNvbXBp bGVBbmREaXNwYXRjaE9uQWZ0ZXJBbmltYXRlID0gZnVuY3Rpb24oYm94LCBjYWxs ZXIpe2RieC5zb3VyY2Vib3ggPSBib3g7ZGJ4LmRieG9iamVjdCA9IGNhbGxlcjtk YnguZ3JvdXAgPSBjYWxsZXIuY29udGFpbmVyO2RieC5vbmFmdGVyYW5pbWF0ZSgp O307ZGJ4TWFuYWdlci5wcm90b3R5cGUudW53YW50ZWQgPSBmdW5jdGlvbihvYmos IGkpe3JldHVybiAoIW9iai5oYXNPd25Qcm9wZXJ0eShpKSB8fCB0eXBlb2Ygb2Jq W2ldID09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBvYmpbaV0gPT0gJ2Z1bmN0aW9u JyB8fCBpID09ICdsZW5ndGgnKTt9O2RieE1hbmFnZXIucHJvdG90eXBlLmFkZEV2 ZW50ID0gZnVuY3Rpb24obm9kZSwgdHlwZSwgaGFuZGxlcil7bm9kZVt0aGlzLmV0 eXBlXSh0aGlzLmVwcmVmaXggKyB0eXBlLCBoYW5kbGVyLCBmYWxzZSk7fTtkYnhN YW5hZ2VyLnByb3RvdHlwZS50cmltID0gZnVuY3Rpb24oc3RyKXtyZXR1cm4gc3Ry LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKTt9O2RieE1hbmFnZXIucHJvdG90eXBl LmVtcHR5ID0gZnVuY3Rpb24oZGF0YSl7aWYodHlwZW9mIGRhdGEgPT0gJ3N0cmlu ZycgJiYgdGhpcy50cmltKGRhdGEpID09PSAnJykgeyByZXR1cm4gdHJ1ZTsgfWVs c2UgaWYodHlwZW9mIGRhdGEgPT0gJ29iamVjdCcpe2lmKGRhdGEgaW5zdGFuY2Vv ZiBBcnJheSAmJiBkYXRhLmxlbmd0aCA9PSAwKSB7IHJldHVybiB0cnVlOyB9ZWxz ZXt2YXIgbiA9IDA7Zm9yKHZhciBpIGluIGRhdGEpe2lmKCFkYXRhLmhhc093blBy b3BlcnR5KGkpKSB7IGNvbnRpbnVlOyB9bisrO31pZihuID09IDApIHsgcmV0dXJu IHRydWU7IH19fXJldHVybiBmYWxzZTt9O2RieE1hbmFnZXIucHJvdG90eXBlLmhh c0NsYXNzID0gZnVuY3Rpb24oZWxlbWVudCwgcGF0dGVybil7cmV0dXJuIChlbGVt ZW50LmNsYXNzTmFtZSAmJiBuZXcgUmVnRXhwKHBhdHRlcm4gKyAnKCR8WyBdKScp LnRlc3QoZWxlbWVudC5jbGFzc05hbWUpKTt9O2RieE1hbmFnZXIucHJvdG90eXBl LnJlbW92ZUNsYXNzID0gZnVuY3Rpb24oZWxlbWVudCwgcGF0dGVybil7aWYodHlw ZW9mIGZsYWdzID09ICd1bmRlZmluZWQnKXtmbGFncyA9ICcnO31lbGVtZW50LmNs YXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cChw YXR0ZXJuLCAnZycpLCAnJyk7aWYoIS9cUy8udGVzdChlbGVtZW50LmNsYXNzTmFt ZSkpe2VsZW1lbnQuY2xhc3NOYW1lID0gJyc7fXJldHVybiBlbGVtZW50O307ZGJ4 TWFuYWdlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZmluZCwgY29udGV4dCl7 dmFyIG5vZGVzID0gW107aWYoLyhwcmV2aW91c3xuZXh0fGZpcnN0fGxhc3QpKFNp Ymxpbmd8Q2hpbGQpLy50ZXN0KGZpbmQpKXtjb250ZXh0ID0gY29udGV4dFtmaW5k XTtzd2l0Y2goZmluZCl7Y2FzZSAnbmV4dFNpYmxpbmcnIDpjYXNlICdwcmV2aW91 c1NpYmxpbmcnIDp3aGlsZShjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgIT0g MSl7Y29udGV4dCA9IGNvbnRleHRbZmluZF07fWJyZWFrO31yZXR1cm4gY29udGV4 dDt9ZWxzZSBpZihmaW5kLmluZGV4T2YoJyMnKSAhPSAtMSl7cmV0dXJuIGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGZpbmQuc3BsaXQoJyMnKVsxXSk7fWVsc2Uge2lm KHR5cGVvZiBjb250ZXh0ID09ICd1bmRlZmluZWQnKSB7IGNvbnRleHQgPSBkb2N1 bWVudDsgfXJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGZpbmQp O319O2Z1bmN0aW9uIGRieEdyb3VwKCl7aWYoIWRieC5zdXBwb3J0ZWQpIHsgcmV0 dXJuOyB9dmFyIGFyZ3MgPSBhcmd1bWVudHM7aWYoIS9eWy1fYS16MC05XSskL2ku dGVzdChhcmdzWzBdKSB8fCBhcmdzWzBdID09ICdkZWxldGVkJykgeyB0aHJvdygn RXJyb3IgZnJvbSBkYnhHcm91cDpcbiInICsgYXJnc1swXSArICciIGlzIGFuIGlu dmFsaWQgY29udGFpbmVyIElEJyk7IHJldHVybjsgfXRoaXMuY29udGFpbmVyID0g ZGJ4LmdldCgnIycgKyBhcmdzWzBdKTtpZighZGJ4Lmhhc0NsYXNzKHRoaXMuY29u dGFpbmVyLCAnZGJ4XC1ncm91cCcpKSB7IHRocm93KCdFcnJvciBmcm9tIGRieEdy b3VwOlxuR3JvdXAgY29udGFpbmVyICh0aGUgZWxlbWVudCB3aXRoIGlkPSInICsg YXJnc1swXSArICciKSBtdXN0IGNvbnRhaW4gdGhlIGNsYXNzIG5hbWUgImRieC1n cm91cCInKTsgcmV0dXJuOyB9aWYoIXRoaXMuY29udGFpbmVyKSB7IHJldHVybjsg fXRoaXMuZ2lkID0gYXJnc1swXTt0aGlzLmNhY2hlRHluYW1pY0NsYXNzZXMoKTtp Zih0eXBlb2YgZGJ4Lm9uYmVmb3Jlc3RhdGVjaGFuZ2UgIT0gJ3VuZGVmaW5lZCcp e3ZhciBhY3Rpb25zID0gZGJ4LmNvbXBpbGVBbmREaXNwYXRjaE9uQmVmb3JlU3Rh dGVDaGFuZ2UoWydwcm9jZWVkJywgdGhpcywgdGhpcy5jb250YWluZXIsIHRoaXMu Z2lkLCBudWxsLCBudWxsLCAnbG9hZCddKTtpZighYWN0aW9ucy5wcm9jZWVkKXt0 aGlzLmNvbnRhaW5lciA9IG51bGw7cmV0dXJuO319dGhpcy5vcmllbnRhdGlvbiA9 IC9eKGZyZWVmb3JtfGNvbmZpcm18aG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbnNlcnQo XC1zd2FwfFwtaW5zZXJ0KT8pLy50ZXN0KGFyZ3NbMV0pID8gYXJnc1sxXSA6ICdm cmVlZm9ybSc7aWYodGhpcy5vcmllbnRhdGlvbiA9PSAnaW5zZXJ0JykgeyB0aGlz Lm9yaWVudGF0aW9uID0gJ2ZyZWVmb3JtLWluc2VydCc7IH10aGlzLmV4Y2hhbmdl ID0gJ3N3YXAnO2lmKC8oZnJlZWZvcm18Y29uZmlybSlcLWluc2VydC8udGVzdCh0 aGlzLm9yaWVudGF0aW9uKSl7dGhpcy5leGNoYW5nZSA9ICdpbnNlcnQnO310aGlz Lm9yaWVudGF0aW9uID0gdGhpcy5vcmllbnRhdGlvbi5zcGxpdCgnLScpWzBdO3Ro aXMuY29uZmlybSA9IGZhbHNlO2lmKHRoaXMub3JpZW50YXRpb24gPT0gJ2NvbmZp cm0nKXt0aGlzLmNvbmZpcm0gPSB0cnVlO3RoaXMub3JpZW50YXRpb24gPSAnZnJl ZWZvcm0nO310aGlzLnRocmVzaG9sZCA9IHBhcnNlSW50KGFyZ3NbMl0sIDEwKTtp Zihpc05hTih0aGlzLnRocmVzaG9sZCkpIHsgdGhpcy50aHJlc2hvbGQgPSAwOyB9 dGhpcy5yZXN0cmljdCA9IGFyZ3NbM10gPT0gJ3llcycgPyB0aGlzLm9yaWVudGF0 aW9uIDogJyc7dGhpcy5yZXNvbHV0aW9uID0gcGFyc2VJbnQoYXJnc1s0XSwgMTAp O2lmKGlzTmFOKHRoaXMucmVzb2x1dGlvbikpIHsgdGhpcy5yZXNvbHV0aW9uID0g MDsgfWlmKHRoaXMucmVzb2x1dGlvbiA9PSAwKSB7IHRoaXMucmVzb2x1dGlvbiA9 IDE7IH10aGlzLnRvZ2dsZXMgPSBhcmdzWzVdID09ICd5ZXMnO3RoaXMuZGVmb3Bl biA9IGFyZ3NbNl0gIT0gJ2Nsb3NlZCc7dGhpcy52b2NhYiA9IHsnb3BlbicgOiBh cmdzWzddLCdjbG9zZScgOiBhcmdzWzhdLCdtb3ZlJyA6IGFyZ3NbOV0sJ3RvZ2ds ZScgOiBhcmdzWzEwXSwna21vdmUnIDogYXJnc1sxMV0sJ2t0b2dnbGUnIDogYXJn c1sxMl0sJ3N5bnRheCcgOiBhcmdzWzEzXSwna3llcycgOiAodHlwZW9mIGFyZ3Nb MTRdICE9ICd1bmRlZmluZWQnID8gYXJnc1sxNF0gOiAnJyksJ2tubycgOiAodHlw ZW9mIGFyZ3NbMTVdICE9ICd1bmRlZmluZWQnID8gYXJnc1sxNV0gOiAnJyl9O3Zh ciBzZWxmID0gdGhpczt0aGlzLmRyYWdvayA9IGZhbHNlO3RoaXMuYm94ID0gbnVs bDt0aGlzLmRpYWxvZyA9IG51bGw7dGhpcy5idWZmZXIgPSBudWxsO3RoaXMubGFz dCA9IHsnYm94JyA6IG51bGwsJ2RpcmVjdGlvbicgOiBudWxsfTt0aGlzLmNoaWxk ID0geydmaXJzdCcgOiBudWxsLCAnbGFzdCcgOiBudWxsfTt0aGlzLmtleXRpbWVy ID0gbnVsbDt0aGlzLmN1cnJlbnRkaXIgPSBudWxsO3RoaXMucnVsZXMgPSB7ICdn bG9iYWwnIDogeyAncG9pbnRlcicgOiAwLCAncnVsZScgOiBbXSwgJ2FjdHVhbCcg OiBbXSB9IH07dGhpcy5ydWxla2V5ID0gJyc7dGhpcy5ydWxlZGlyID0gJyc7dGhp cy5jb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO3RoaXMuY29u dGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO3RoaXMuaW5pdEJveGVzKHRy dWUsIHRydWUpO3RoaXMua2V5ZG93biA9IGZhbHNlO3RoaXMubW91c2Vpc2Rvd24g PSBmYWxzZTtkYnguYWRkRXZlbnQoZG9jdW1lbnQsICdtb3VzZW91dCcsIGZ1bmN0 aW9uKGUpe2lmKHR5cGVvZiBlLnRhcmdldCA9PSAndW5kZWZpbmVkJykgeyBlLnJl bGF0ZWRUYXJnZXQgPSBlLnRvRWxlbWVudDsgfWlmKGUucmVsYXRlZFRhcmdldCA9 PSBudWxsKXtzZWxmLm1vdXNldXAoZSk7fX0pO2RieC5hZGRFdmVudChkb2N1bWVu dCwgJ21vdXNlbW92ZScsIGZ1bmN0aW9uKGUpe3NlbGYuaG92ZXIoZSk7c2VsZi5t b3VzZW1vdmUoZSk7cmV0dXJuICFzZWxmLmRyYWdvazt9KTtkYnguYWRkRXZlbnQo ZG9jdW1lbnQsICdtb3VzZWRvd24nLCBmdW5jdGlvbihlKXtzZWxmLm1vdXNlaXNk b3duID0gdHJ1ZTt9KTtkYnguYWRkRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJywg ZnVuY3Rpb24oZSl7c2VsZi5tb3VzZWlzZG93biA9IGZhbHNlO3NlbGYubW91c2V1 cChlKTt9KTtkYnguYWRkRXZlbnQoZG9jdW1lbnQsICdrZXlkb3duJywgZnVuY3Rp b24oZSl7c2VsZi5rZXlkb3duID0gdHJ1ZTtpZihzZWxmLmRpYWxvZyAmJiAhL14o KDNbNy05XSl8NDB8MTN8KDFbNi04XSkpJC8udGVzdChlLmtleUNvZGUpKXtzZWxm LmNsZWFyRGlhbG9nKCk7fX0pO2RieC5hZGRFdmVudChkb2N1bWVudCwgJ2tleXVw JywgZnVuY3Rpb24oKXtzZWxmLmtleWRvd24gPSBmYWxzZTtzZWxmLmN1cnJlbnRk aXIgPSBudWxsO3NlbGYucmVtb3ZlQWN0aXZlQ2xhc3NlcygnZGJ4XC1ib3hcLWFj dGl2ZScpO30pO307ZGJ4R3JvdXAucHJvdG90eXBlLmluaXRCb3hlcyA9IGZ1bmN0 aW9uKHJlY292ZXIsIGdldHNwYXJlKXt0aGlzLmJveGVzID0geyAnbGVuZ3RoJyA6 IDAgfTt0aGlzLmhhbmRsZXMgPSBbXTt0aGlzLmJ1dHRvbnMgPSB7fTt0aGlzLm9y ZGVyID0gW107dmFyIHNlbGYgPSB0aGlzO3RoaXMuZWxlcyA9IGRieC5nZXQoJyon LCB0aGlzLmNvbnRhaW5lcik7Zm9yKHZhciBpPTA7IGk8dGhpcy5lbGVzLmxlbmd0 aDsgaSsrKXt2YXIgZGJ4aWQgPSB0aGlzLmJveGVzLmxlbmd0aDtpZihkYnguaGFz Q2xhc3ModGhpcy5lbGVzW2ldLCAnZGJ4XC1ib3gnKSAmJiAhZGJ4Lmhhc0NsYXNz KHRoaXMuZWxlc1tpXSwgJ2RieFwtKHN1ZmZ1c2lvbi1kaXNjYXJkc3xjbG9uZSkn KSl7aWYoZGJ4LnVzZWlkKXtpZigvXlthLXpdW2EtejAtOV0qJC9pLnRlc3QodGhp cy5lbGVzW2ldLmlkKSAmJiAhL14obGVuZ3RofGR1bW15KSQvLnRlc3QodGhpcy5l bGVzW2ldLmlkKSl7ZGJ4aWQgPSB0aGlzLmVsZXNbaV0uaWQ7fWVsc2UgaWYodGhp cy5lbGVzW2ldLmlkICE9ICcnKXt0aHJvdygnRXJyb3IgZnJvbSBkYnhHcm91cDpc biInICsgdGhpcy5lbGVzW2ldLmlkICsgJyIgaXMgYW4gaW52YWxpZCBib3ggSUQn KTtyZXR1cm47fX10aGlzLmJveGVzW2RieGlkXSA9IHRoaXMuZWxlc1tpXTt0aGlz LmJveGVzLmxlbmd0aCsrO3RoaXMub3JkZXIucHVzaChkYnhpZCArICcrJyk7aWYo dHlwZW9mIHRoaXMuZWxlc1tpXS5oYXNoYW5kbGVycyA9PSAndW5kZWZpbmVkJyl7 ZGJ4LmFkZEV2ZW50KHRoaXMuZWxlc1tpXSwgJ21vdXNlZG93bicsIGZ1bmN0aW9u KGUpe2lmKCFlKSB7IGUgPSB3aW5kb3cuZXZlbnQ7IH1zZWxmLm1vdXNlZG93bihl LCBkYnguZ2V0VGFyZ2V0KGUsICdkYnhcLWJveCcpKTt9KTt0aGlzLmVsZXNbaV0u aGFzaGFuZGxlcnMgPSB0cnVlO31pZih0eXBlb2YgdGhpcy5lbGVzW2ldLnByb2Nl c3NlZCAhPSAndW5kZWZpbmVkJykgeyBjb250aW51ZTsgfXRoaXMuZWxlc1tpXS5z dHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7dGhpcy5lbGVzW2ldLnN0eWxlLmRp c3BsYXkgPSAnYmxvY2snO3RoaXMuZWxlc1tpXS5jbGFzc05hbWUgKz0gJyBkYngt Ym94LW9wZW4nO3RoaXMuZWxlc1tpXS5jbGFzc05hbWUgKz0gJyBkYnhpZC0nICsg ZGJ4aWQ7dGhpcy5lbGVzW2ldLnByb2Nlc3NlZCA9IHRydWU7fWlmKGRieC5oYXND bGFzcyh0aGlzLmVsZXNbaV0sICdkYnhcLWhhbmRsZScpKXt0aGlzLmhhbmRsZXMu cHVzaCh0aGlzLmVsZXNbaV0pO3ZhciBwYXJlbnRib3ggPSBkYnguZ2V0VGFyZ2V0 KG51bGwsICdkYnhcLWJveCcsIHRoaXMuZWxlc1tpXSk7aWYodGhpcy50b2dnbGVz KXtkYnhpZCA9IGRieC5nZXRJRChwYXJlbnRib3gpO3RoaXMuYnV0dG9uc1tkYnhp ZF0gPSB0aGlzLmFkZFRvZ2dsZUJlaGF2aW9yKHRoaXMuZWxlc1tpXSk7fWVsc2Ug aWYodHlwZW9mIHRoaXMuZWxlc1tpXS5oYXNoYW5kbGVycyA9PSAndW5kZWZpbmVk Jyl7dmFyIGhhbmRsZSA9IHRoaXMuZWxlc1tpXTtoYW5kbGUuaGFzZm9jdXMgPSBk Yngub3BlcmEgfHwgZGJ4LnNhZmFyaSA/IG51bGwgOiBmYWxzZTtpZighZGJ4Lmhh c0NsYXNzKHBhcmVudGJveCwgJ2RieFwtbm9ncmFiJykpe2RieC5hZGRFdmVudCho YW5kbGUsICdrZXknICsgKGRieC5tc2llIHx8IGRieC5zYWZhcmkgfHwgZGJ4LmNo cm9tZSA/ICdkb3duJyA6ICdwcmVzcycpLCBmdW5jdGlvbihlKXtpZighZSkgeyBl ID0gd2luZG93LmV2ZW50OyB9cmV0dXJuIHNlbGYua2V5cHJlc3MoZSwgZGJ4Lmdl dFRhcmdldChlLCAnZGJ4XC1oYW5kbGUnKSk7fSk7ZGJ4LmFkZEV2ZW50KGhhbmRs ZSwgJ2NsaWNrJywgZnVuY3Rpb24oZSl7aWYoc2VsZi5kaWFsb2cpe3NlbGYuY2xp Y2soZSwgZGJ4LmdldFRhcmdldChlLCAnZGJ4XC1oYW5kbGUnKSk7aWYodHlwZW9m IGUucHJldmVudERlZmF1bHQgIT0gJ3VuZGVmaW5lZCcpIHsgZS5wcmV2ZW50RGVm YXVsdCgpOyB9ZWxzZSB7IHJldHVybiBmYWxzZTsgfX19KTt9ZGJ4LmFkZEV2ZW50 KGhhbmRsZSwgJ2ZvY3VzJywgZnVuY3Rpb24oZSl7aWYoIWUpIHsgZSA9IHdpbmRv dy5ldmVudDsgfXZhciBwYXJlbnRib3ggPSBkYnguZ2V0VGFyZ2V0KGUsICdkYnhc LWJveCcpO2lmKHNlbGYua2V5ZG93biB8fCAoZGJ4LmtkZSAmJiAhc2VsZi5tb3Vz ZWlzZG93bikpe3BhcmVudGJveC5jbGFzc05hbWUgKz0gJyBkYngtYm94LWZvY3Vz Jzt9dmFyIGhhbmRsZSA9IGRieC5nZXRUYXJnZXQoZSwgJ2RieFwtaGFuZGxlJyk7 dmFyIHRvb2x0aXB0ZXh0ID0gc2VsZi52b2NhYi5rbW92ZTtpZihkYnguaGFzQ2xh c3MocGFyZW50Ym94LCAnZGJ4XC1ub2dyYWInKSl7dG9vbHRpcHRleHQgPSBoYW5k bGUuZ2V0QXR0cmlidXRlKCdvbGR0aXRsZScpO31lbHNlIGlmKCFkYnguZW1wdHko aGFuZGxlLmdldEF0dHJpYnV0ZSgnb2xkdGl0bGUnKSkpe3Rvb2x0aXB0ZXh0ID0g c2VsZi52b2NhYi5zeW50YXgucmVwbGFjZSgvJW15dGl0bGVbJV0/LywgaGFuZGxl LmdldEF0dHJpYnV0ZSgnb2xkdGl0bGUnKSkucmVwbGFjZSgvJWRieHRpdGxlWyVd Py8sIHRvb2x0aXB0ZXh0KX1pZighZGJ4LmVtcHR5KHRvb2x0aXB0ZXh0KSl7c2Vs Zi5jcmVhdGVUb29sdGlwKHRvb2x0aXB0ZXh0LGhhbmRsZSwoc2VsZi5rZXlkb3du IHx8IChkYngua2RlICYmICFzZWxmLm1vdXNlaXNkb3duKSkpO31pZihoYW5kbGUu aGFzZm9jdXMgIT09IG51bGwpIHsgaGFuZGxlLmhhc2ZvY3VzID0gdHJ1ZTsgfX0p O2RieC5hZGRFdmVudChoYW5kbGUsICdibHVyJywgZnVuY3Rpb24oZSl7aWYoIWUp IHsgZSA9IHdpbmRvdy5ldmVudDsgfWRieC5yZW1vdmVDbGFzcyhkYnguZ2V0VGFy Z2V0KGUsICdkYnhcLWJveCcpLCAnZGJ4XC1ib3hcLWZvY3VzJyk7c2VsZi5yZW1v dmVUb29sdGlwKCk7dmFyIGhhbmRsZSA9IGRieC5nZXRUYXJnZXQoZSwgJ2RieFwt aGFuZGxlJyk7aWYoaGFuZGxlLmhhc2ZvY3VzICE9PSBudWxsKSB7IGhhbmRsZS5o YXNmb2N1cyA9IGZhbHNlOyB9fSk7dGhpcy5lbGVzW2ldLmhhc2hhbmRsZXJzID0g dHJ1ZTt9aWYodHlwZW9mIHRoaXMuZWxlc1tpXS5wcm9jZXNzZWQgIT0gJ3VuZGVm aW5lZCcpIHsgY29udGludWU7IH12YXIgb2xkdGl0bGUgPSB0aGlzLmVsZXNbaV0u Z2V0QXR0cmlidXRlKCd0aXRsZScpO2lmKG9sZHRpdGxlKSB7IHRoaXMuZWxlc1tp XS5zZXRBdHRyaWJ1dGUoJ29sZHRpdGxlJywgb2xkdGl0bGUpOyB9dGhpcy5lbGVz W2ldLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzt0aGlzLmVsZXNbaV0uc3R5 bGUuZGlzcGxheSA9ICdibG9jayc7aWYoIWRieC5oYXNDbGFzcyhwYXJlbnRib3gs ICdkYnhcLW5vZ3JhYicpKXt0aGlzLmVsZXNbaV0uY2xhc3NOYW1lICs9ICcgZGJ4 LWhhbmRsZS1jdXJzb3InO3RoaXMuZWxlc1tpXS5zZXRBdHRyaWJ1dGUoJ3RpdGxl JywgZGJ4LmVtcHR5KHRoaXMuZWxlc1tpXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykp PyB0aGlzLnZvY2FiLm1vdmUgOiB0aGlzLnZvY2FiLnN5bnRheC5yZXBsYWNlKC8l bXl0aXRsZVslXT8vLCB0aGlzLmVsZXNbaV0udGl0bGUpLnJlcGxhY2UoLyVkYnh0 aXRsZVslXT8vLCB0aGlzLnZvY2FiLm1vdmUpKTt9dGhpcy5lbGVzW2ldLnByb2Nl c3NlZCA9IHRydWU7fWlmKGRieC5tc2llICYmIGRieC5oYXNDbGFzcyh0aGlzLmVs ZXNbaV0sICdkYnhcLShjb250ZW50fGJveCknKSl7dGhpcy5lbGVzW2ldLnJ1bnRp bWVTdHlsZS56b29tID0gJzEuMCc7fX10aGlzLnVwZGF0ZUNoaWxkQ2xhc3Nlcygp O2RieC5zYXZlZGF0YVt0aGlzLmdpZF0gPSB0aGlzLm9yZGVyLmpvaW4oJywnKTt2 YXIgZHVtbXkgPSB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkYnguY3JlYXRl RWxlbWVudCgnc3BhbicpKTtkdW1teS5jbGFzc05hbWUgPSAnZGJ4LWJveCBkYngt c3VmZnVzaW9uLWRpc2NhcmRzJztkdW1teS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2Nr JztkdW1teS5zdHlsZS53aWR0aCA9ICcwJztkdW1teS5zdHlsZS5oZWlnaHQgPSAn MCc7ZHVtbXkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztkdW1teS5jbGFzc05h bWUgKz0gJyBkYngtb2ZmZHVtbXknO2RieGlkID0gdGhpcy5ib3hlcy5sZW5ndGg7 aWYodHlwZW9mIGRieC5nbnVtYmVyc1t0aGlzLmdpZF0gIT0gJ3VuZGVmaW5lZCcp e2RieGlkICs9ICdfJyArIGRieC5nbnVtYmVyc1t0aGlzLmdpZF07fXRoaXMuYm94 ZXNbZGJ4aWRdID0gZHVtbXk7dGhpcy5ib3hlcy5sZW5ndGgrKztpZighcmVjb3Zl cikgeyByZXR1cm47IH1pZihkYnguY29va2llc3RhdGUgJiYgdHlwZW9mIGRieC5j b29raWVzdGF0ZVt0aGlzLmdpZF0gIT0gJ3VuZGVmaW5lZCcpe3ZhciBudW0gPSBk YnguY29va2llc3RhdGVbdGhpcy5naWRdLmxlbmd0aDtmb3IoaT0wOyBpPG51bTsg aSsrKXt2YXIgaW5kZXggPSBkYnguY29va2llc3RhdGVbdGhpcy5naWRdW2ldLnJl cGxhY2UoL1tcLVwrXS9nLCAnJyk7aWYodHlwZW9mIHRoaXMuYm94ZXNbaW5kZXhd ICE9ICd1bmRlZmluZWQnICYmIHRoaXMuYm94ZXNbaW5kZXhdICE9IGR1bW15KXt0 aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGhpcy5ib3hlc1tpbmRleF0sIGR1 bW15KTtpZih0aGlzLnRvZ2dsZXMgJiYgL1wtJC8udGVzdChkYnguY29va2llc3Rh dGVbdGhpcy5naWRdW2ldKSl7aWYodHlwZW9mIHRoaXMuYnV0dG9uc1tpbmRleF0g IT0gJ3VuZGVmaW5lZCcpe3RoaXMudG9nZ2xlQm94U3RhdGUodGhpcy5idXR0b25z W2luZGV4XSwgZmFsc2UsIGZhbHNlLCB0cnVlKTt9fX19dGhpcy5yZWdlbmVyYXRl Qm94T3JkZXIoKTt9ZWxzZSBpZighdGhpcy5kZWZvcGVuICYmIHRoaXMudG9nZ2xl cyl7Zm9yKGkgaW4gdGhpcy5idXR0b25zKXtpZihkYngudW53YW50ZWQodGhpcy5i dXR0b25zLCBpKSkgeyBjb250aW51ZTsgfXRoaXMudG9nZ2xlQm94U3RhdGUodGhp cy5idXR0b25zW2ldLCB0cnVlLCBmYWxzZSwgbnVsbCk7fX19O2RieEdyb3VwLnBy b3RvdHlwZS5jYWNoZUR5bmFtaWNDbGFzc2VzID0gZnVuY3Rpb24oKXt2YXIgZWxl cyA9IFtdLCBjbGFzc2VzID0gWydkYngtdG9vbHRpcCcsICdkYngtZHJhZ2Nsb25l JywgJ2RieC1kaWFsb2cnXTtmb3IodmFyIGk9MDsgaTxjbGFzc2VzLmxlbmd0aDsg aSsrKXtlbGVzW2ldID0gZGJ4LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2VsZXNbaV0u Y2xhc3NOYW1lID0gJ2RieC1jbG9uZSAnICsgY2xhc3Nlc1tpXTt0aGlzLmNvbnRh aW5lci5hcHBlbmRDaGlsZChlbGVzW2ldKTt9c2V0VGltZW91dChmdW5jdGlvbigp e2Zvcih2YXIgaT0wOyBpPGVsZXMubGVuZ3RoOyBpKyspe2lmKGVsZXNbaV0ucGFy ZW50Tm9kZSl7ZWxlc1tpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZXNbaV0p O319fSwgMTAwKTt9O2RieEdyb3VwLnByb3RvdHlwZS5hZGRUb2dnbGVCZWhhdmlv ciA9IGZ1bmN0aW9uKCl7dmFyIHNlbGYgPSB0aGlzO3ZhciBleGlzdGluZyA9IGRi eC5nZXQoKGRieC5idXR0b250eXBlID09ICdsaW5rJyA/ICdhJyA6ICdidXR0b24n KSwgYXJndW1lbnRzWzBdKTtmb3IodmFyIGk9MDsgaTxleGlzdGluZy5sZW5ndGg7 IGkrKyl7aWYoZGJ4Lmhhc0NsYXNzKGV4aXN0aW5nW2ldLCAnZGJ4XC10b2dnbGUn KSl7dmFyIGJ1dHRvbiA9IGV4aXN0aW5nW2ldO2JyZWFrO319aWYodHlwZW9mIGJ1 dHRvbiA9PSAndW5kZWZpbmVkJyl7aWYoZGJ4LmJ1dHRvbnR5cGUgPT0gJ2xpbmsn KXtidXR0b24gPSBhcmd1bWVudHNbMF0uYXBwZW5kQ2hpbGQoZGJ4LmNyZWF0ZUVs ZW1lbnQoJ2EnKSk7YnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl eHROb2RlKCdcdTAwYTAnKSk7YnV0dG9uLmhyZWYgPSAnamF2YXNjcmlwdDp2b2lk KG51bGwpJzt9ZWxzZXtidXR0b24gPSBhcmd1bWVudHNbMF0uYXBwZW5kQ2hpbGQo ZGJ4LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpKTt9YnV0dG9uLmNsYXNzTmFtZSA9 ICdkYngtdG9nZ2xlIGRieC10b2dnbGUtb3Blbic7YnV0dG9uLnNldEF0dHJpYnV0 ZSgndGl0bGUnLCB0aGlzLnZvY2FiLnRvZ2dsZS5yZXBsYWNlKC8ldG9nZ2xlWyVd Py8sIHRoaXMudm9jYWIuY2xvc2UpKTt9YnV0dG9uLnN0eWxlLmN1cnNvciA9ICdw b2ludGVyJztidXR0b24uaGFzZm9jdXMgPSBkYngub3BlcmEgfHwgZGJ4LnNhZmFy aSB8fCBkYnguY2hyb21lID8gbnVsbCA6IGZhbHNlO3RoaXMudG9vbHRpcCA9IG51 bGw7aWYodHlwZW9mIGJ1dHRvbi5oYXNoYW5kbGVycyA9PSAndW5kZWZpbmVkJyl7 YnV0dG9uLm9uY2xpY2sgPSBmdW5jdGlvbihlKXtzZWxmLmNsaWNrKGUsIHRoaXMp O3JldHVybiBmYWxzZTt9O2J1dHRvblsnb25rZXknICsgKGRieC5tc2llIHx8IGRi eC5zYWZhcmkgfHwgZGJ4LmNocm9tZSA/ICdkb3duJyA6ICdwcmVzcycpXSA9IGZ1 bmN0aW9uKGUpe2lmKCFlKSB7IGUgPSB3aW5kb3cuZXZlbnQ7IH1yZXR1cm4gc2Vs Zi5rZXlwcmVzcyhlLCB0aGlzKTt9O2J1dHRvbi5vbmZvY3VzID0gZnVuY3Rpb24o KXtmb3IodmFyIGkgaW4gc2VsZi5idXR0b25zKXtpZihkYngudW53YW50ZWQoc2Vs Zi5idXR0b25zLCBpKSkgeyBjb250aW51ZTsgfXNlbGYuYnV0dG9uc1tpXSA9IGRi eC5yZW1vdmVDbGFzcyhzZWxmLmJ1dHRvbnNbaV0sICcoZGJ4XC10b2dnbGVcLWhp bGl0ZVwtKShvcGVufGNsb3NlZCknKTt9dmFyIGlzb3BlbiA9IGRieC5oYXNDbGFz cyh0aGlzLCAnZGJ4XC10b2dnbGVcLW9wZW4nKTt0aGlzLmNsYXNzTmFtZSArPSAn IGRieC10b2dnbGUtaGlsaXRlLScgKyAoaXNvcGVuID8gJ29wZW4nIDogJ2Nsb3Nl ZCcpO2lmKHNlbGYua2V5ZG93biB8fCAoZGJ4LmtkZSAmJiAhc2VsZi5tb3VzZWlz ZG93bikpe2RieC5nZXRUYXJnZXQobnVsbCwgJ2RieFwtYm94JywgdGhpcykuY2xh c3NOYW1lICs9ICcgZGJ4LWJveC1mb2N1cyc7fXZhciB0b29sdGlwdGV4dCA9ICgh ZGJ4Lmhhc0NsYXNzKGRieC5nZXRUYXJnZXQobnVsbCwgJ2RieFwtYm94JywgdGhp cyksICdkYnhcLW5vZ3JhYicpPyBzZWxmLnZvY2FiLmttb3ZlIDogJycpKyBzZWxm LnZvY2FiLmt0b2dnbGUucmVwbGFjZSgvJXRvZ2dsZVslXT8vLCAoaXNvcGVuID8g c2VsZi52b2NhYi5jbG9zZSA6IHNlbGYudm9jYWIub3BlbikpO3ZhciBoYW5kbGUg PSBkYnguZ2V0VGFyZ2V0KG51bGwsICdkYnhcLWhhbmRsZScsIHRoaXMpO2lmKCFk YnguZW1wdHkoaGFuZGxlLmdldEF0dHJpYnV0ZSgnb2xkdGl0bGUnKSkpe3Rvb2x0 aXB0ZXh0ID0gc2VsZi52b2NhYi5zeW50YXgucmVwbGFjZSgvJW15dGl0bGVbJV0/ LywgaGFuZGxlLmdldEF0dHJpYnV0ZSgnb2xkdGl0bGUnKSkucmVwbGFjZSgvJWRi eHRpdGxlWyVdPy8sIHRvb2x0aXB0ZXh0KX1zZWxmLmNyZWF0ZVRvb2x0aXAodG9v bHRpcHRleHQsdGhpcywoc2VsZi5rZXlkb3duIHx8IChkYngua2RlICYmICFzZWxm Lm1vdXNlaXNkb3duKSkpO3RoaXMuaXNhY3RpdmUgPSB0cnVlO2lmKHRoaXMuaGFz Zm9jdXMgIT09IG51bGwpIHsgdGhpcy5oYXNmb2N1cyA9IHRydWU7IH19O2J1dHRv bi5vbmJsdXIgPSBmdW5jdGlvbigpe2J1dHRvbiA9IGRieC5yZW1vdmVDbGFzcyhi dXR0b24sICcoZGJ4XC10b2dnbGVcLWhpbGl0ZVwtKShvcGVufGNsb3NlZCknKTtk YngucmVtb3ZlQ2xhc3MoZGJ4LmdldFRhcmdldChudWxsLCAnZGJ4XC1ib3gnLCB0 aGlzKSwgJ2RieFwtYm94XC1mb2N1cycpO3NlbGYucmVtb3ZlVG9vbHRpcCgpO2lm KHRoaXMuaGFzZm9jdXMgIT09IG51bGwpIHsgdGhpcy5oYXNmb2N1cyA9IGZhbHNl OyB9fTtidXR0b24uaGFzaGFuZGxlcnMgPSB0cnVlO31yZXR1cm4gYnV0dG9uO307 ZGJ4R3JvdXAucHJvdG90eXBlLnRvZ2dsZUJveFN0YXRlID0gZnVuY3Rpb24oYnV0 dG9uLCByZWdlbiwgbWFudWFsLCBmb3JjZXN0YXRlKXt2YXIgaXNvcGVuID0gZGJ4 Lmhhc0NsYXNzKGJ1dHRvbiwgJ2RieFwtdG9nZ2xlXC1vcGVuJyk7aWYoZm9yY2Vz dGF0ZSAhPT0gbnVsbCkgeyBpc29wZW4gPSBmb3JjZXN0YXRlOyB9dmFyIHBhcmVu dCA9IGRieC5nZXRUYXJnZXQobnVsbCwgJ2RieFwtYm94JywgYnV0dG9uKTtkYngu c291cmNlYm94ID0gcGFyZW50O2RieC50b2dnbGUgPSBidXR0b247ZGJ4LmRieG9i amVjdCA9IHRoaXM7aWYodHlwZW9mIGRieC5jb250YWluZXIgPT0gJ3VuZGVmaW5l ZCcpe2RieC5ncm91cCA9IGRieC5nZXRUYXJnZXQobnVsbCwgJ2RieFwtZ3JvdXAn LCBwYXJlbnQpO31lbHNlIHsgZGJ4Lmdyb3VwID0gZGJ4LmNvbnRhaW5lcjsgfWlm KHR5cGVvZiBkYngub25iZWZvcmVzdGF0ZWNoYW5nZSAhPSAndW5kZWZpbmVkJyl7 dmFyIGFjdGlvbnMgPSBkYnguY29tcGlsZUFuZERpc3BhdGNoT25CZWZvcmVTdGF0 ZUNoYW5nZShbJ3Byb2NlZWQnLCB0aGlzLCB0aGlzLmNvbnRhaW5lciwgdGhpcy5n aWQsIHBhcmVudCwgYnV0dG9uLCAoaXNvcGVuID8gJ2Nsb3NlJyA6ICdvcGVuJyld KTtpZighYWN0aW9ucy5wcm9jZWVkKSB7IHJldHVybjsgfX1pZihtYW51YWwgPT0g ZmFsc2V8fCghaXNvcGVuICYmICh0eXBlb2YgZGJ4Lm9uYm94b3BlbiA9PSAndW5k ZWZpbmVkJyB8fCBkYngub25ib3hvcGVuKCkpKXx8KGlzb3BlbiAmJiAodHlwZW9m IGRieC5vbmJveGNsb3NlID09ICd1bmRlZmluZWQnIHx8IGRieC5vbmJveGNsb3Nl KCkpKSl7YnV0dG9uLmNsYXNzTmFtZSA9ICdkYngtdG9nZ2xlIGRieC10b2dnbGUt JyArIChpc29wZW4gPyAnY2xvc2VkJyA6ICdvcGVuJyk7YnV0dG9uLnRpdGxlID0g dGhpcy52b2NhYi50b2dnbGUucmVwbGFjZSgvJXRvZ2dsZVslXT8vLCBpc29wZW4g PyB0aGlzLnZvY2FiLm9wZW4gOiB0aGlzLnZvY2FiLmNsb3NlKTtpZihtYW51YWwg JiYgdHlwZW9mIGJ1dHRvbi5pc2FjdGl2ZSAhPSAndW5kZWZpbmVkJyl7YnV0dG9u LmNsYXNzTmFtZSArPSAnIGRieC10b2dnbGUtaGlsaXRlLScgKyAoaXNvcGVuID8g J2Nsb3NlZCcgOiAnb3BlbicpfXBhcmVudC5jbGFzc05hbWUgPSBwYXJlbnQuY2xh c3NOYW1lLnJlcGxhY2UoL1sgXShkYngtYm94LSkob3BlbnxjbG9zZWQpLywgJyAk MScgKyAoaXNvcGVuID8gJ2Nsb3NlZCcgOiAnb3BlbicpKTtpZihyZWdlbikgeyB0 aGlzLnJlZ2VuZXJhdGVCb3hPcmRlcigpOyB9fX07ZGJ4R3JvdXAucHJvdG90eXBl Lm1vdmVCb3hCeUtleWJvYXJkID0gZnVuY3Rpb24oZSwgYW5jaG9yLCBwYXJlbnQs IGRpcmVjdGlvbiwgY29uZmlybSwgbWFudWFsKXtkYnguZGJ4b2JqZWN0ID0gdGhp cztkYnguZ3JvdXAgPSB0aGlzLmNvbnRhaW5lcjtkYnguZ2lkID0gdGhpcy5naWQ7 ZGJ4LnNvdXJjZWJveCA9IHBhcmVudDtkYnguY2xvbmVib3ggPSBudWxsO2RieC5l dmVudCA9IGU7dmFyIGluZGV4ID0gJy0nO3RoaXMucG9zaXRpdmUgPSAvW3NlXS9p LnRlc3QoZGlyZWN0aW9uKTtpZigvXihTdykkLy50ZXN0KGRpcmVjdGlvbikpIHsg dGhpcy5wb3NpdGl2ZSA9IGZhbHNlOyB9dGhpcy5yZW1vdmVBY3RpdmVDbGFzc2Vz KCdkYnhcLWJveFwtKHRhcmdldHxhY3RpdmUpJyk7dmFyIGNsb25lcG9pbnQgPSB7 J3gnIDogcGFyZW50Lm9mZnNldExlZnQsJ3knIDogcGFyZW50Lm9mZnNldFRvcH07 dmFyIGRpZmZlcmVuY2VzID0gW107dmFyIGJveGVzID0gdGhpcy5ib3hlcztmb3Io dmFyIGkgaW4gYm94ZXMpe2lmKGRieC51bndhbnRlZChib3hlcywgaSkgfHwgZGJ4 Lmhhc0NsYXNzKGJveGVzW2ldLCAnZGJ4XC1zdWZmdXNpb24tZGlzY2FyZHMnKSkg eyBjb250aW51ZTsgfXZhciBib3hwb2ludCA9IHsneCcgOiBib3hlc1tpXS5vZmZz ZXRMZWZ0LCd5JyA6IGJveGVzW2ldLm9mZnNldFRvcH07ZGlmZmVyZW5jZXMucHVz aChbaSwgYm94cG9pbnQueCAtIGNsb25lcG9pbnQueCwgYm94cG9pbnQueSAtIGNs b25lcG9pbnQueV0pO2lmKHBhcmVudCA9PSBib3hlc1tpXSkgeyBpbmRleCA9IGk7 IH19dmFyIHNwbGl0ZGlmZnMgPSB7J3Bvc2l0aXZlJyA6IFtdLCduZWdhdGl2ZScg OiBbXX07dmFyIG4gPSAvW2V3XS9pLnRlc3QoZGlyZWN0aW9uKSA/IDEgOiAyO2Zv cihpPTA7IGk8ZGlmZmVyZW5jZXMubGVuZ3RoOyBpKyspe2lmKGRpZmZlcmVuY2Vz W2ldWzBdID09IGluZGV4KSB7IGNvbnRpbnVlOyB9aWYoZGlmZmVyZW5jZXNbaV1b bl0gPj0gMCl7c3BsaXRkaWZmcy5wb3NpdGl2ZS5wdXNoKGRpZmZlcmVuY2VzW2ld KTt9ZWxzZXtzcGxpdGRpZmZzLm5lZ2F0aXZlLnB1c2goZGlmZmVyZW5jZXNbaV0p O319dmFyIGFyeSA9IHRoaXMucG9zaXRpdmUgPyBzcGxpdGRpZmZzLnBvc2l0aXZl IDogc3BsaXRkaWZmcy5uZWdhdGl2ZTthcnkuc29ydChmdW5jdGlvbihhLCBiKXsg cmV0dXJuIE1hdGguYWJzKGFbbl0pIC0gTWF0aC5hYnMoYltuXSk7IH0pO2Zvcihp PTA7IGk8YXJ5Lmxlbmd0aDsgaSsrKXtpZihhcnlbaV1bbl0gPT0gMCl7YXJ5LnNw bGljZShpLS0sIDEpO319aWYoZGlyZWN0aW9uLmxlbmd0aCA+IDEpe2ZvcihpPTA7 IGk8YXJ5Lmxlbmd0aDsgaSsrKXtpZigoL1tld10vaS50ZXN0KGRpcmVjdGlvbikg JiYgYXJ5W2ldWzJdID09IDApfHwoL1tuc10vaS50ZXN0KGRpcmVjdGlvbikgJiYg YXJ5W2ldWzFdID09IDApfHwoLyhOW2V3XSkvLnRlc3QoZGlyZWN0aW9uKSAmJiBh cnlbaV1bMl0gPiAwKXx8KC8oU1tld10pLy50ZXN0KGRpcmVjdGlvbikgJiYgYXJ5 W2ldWzJdIDwgMCkpe2FyeS5zcGxpY2UoaS0tLCAxKTt9fX1mb3IoaT0wOyBpPGFy eS5sZW5ndGg7IGkrKyl7aWYodGhpcy5wb3NpdGl2ZSl7aWYoaSA+IDAgJiYgTWF0 aC5hYnMoYXJ5W2ldW25dKSAhPSBNYXRoLmFicyhhcnlbMF1bbl0pKXthcnkuc3Bs aWNlKGktLSwgMSk7fX1lbHNle2lmKGkgPiAwICYmIGFyeVtpXVtuXSAhPSBhcnlb MF1bbl0pe2FyeS5zcGxpY2UoaS0tLCAxKTt9fX1uID0gbiA9PSAxID8gMiA6IDE7 YXJ5LnNvcnQoZnVuY3Rpb24oYSwgYil7IHJldHVybiBNYXRoLmFicyhhW25dKSAt IE1hdGguYWJzKGJbbl0pOyB9KTtpZihhcnkubGVuZ3RoID09IDApe2luZGV4ID0g Jy0nO31lbHNle2luZGV4ID0gYXJ5WzBdWzBdO312YXIgYm94ID0gZGJ4LmdldFRh cmdldChudWxsLCAnZGJ4XC1ib3gnLCBhbmNob3IpO2lmKGluZGV4ID09ICctJyl7 cmV0dXJuIGZhbHNlO312YXIgdGFyZ2V0Ym94ID0gYm94ZXNbaW5kZXhdO2lmKHRo aXMuZXhjaGFuZ2UgPT0gJ2luc2VydCcgJiYgdGhpcy5jb25maXJtID09IGZhbHNl ICYmIHRoaXMucG9zaXRpdmUgPT0gdHJ1ZSl7dGFyZ2V0Ym94ID0gZGJ4LmdldCgn bmV4dFNpYmxpbmcnLCB0YXJnZXRib3gpO2lmKCF0YXJnZXRib3gpIHsgdGFyZ2V0 Ym94ID0gYm94ZXNbaW5kZXhdOyB9fWlmKHR5cGVvZiBkYngub25ib3hkcmFnID09 ICd1bmRlZmluZWQnIHx8IGRieC5vbmJveGRyYWcoKSl7aWYoYm94ICE9IHRhcmdl dGJveCAmJiBib3hlcyA9PSB0aGlzLmJveGVzKXt2YXIgb3JpZ3BvaW50ID0geyd4 JyA6IGJveC5vZmZzZXRMZWZ0ICsgKGJveC5vZmZzZXRXaWR0aCAvIDIpLCd5JyA6 IGJveC5vZmZzZXRUb3AgKyAoYm94Lm9mZnNldEhlaWdodCAvIDIpfTt2YXIgYm94 cG9pbnQgPSB7J3gnIDogdGFyZ2V0Ym94Lm9mZnNldExlZnQgKyAodGFyZ2V0Ym94 Lm9mZnNldFdpZHRoIC8gMiksJ3knIDogdGFyZ2V0Ym94Lm9mZnNldFRvcCArICh0 YXJnZXRib3gub2Zmc2V0SGVpZ2h0IC8gMil9O3ZhciB0ZXN0YmxvY2tzID0gdGhp cy5nZXRCbG9ja3NEaWZmZXJlbmNlKG9yaWdwb2ludCwgYm94cG9pbnQsIGJveCk7 dmFyIHRlc3Rjb21wYXNzID0gdGhpcy5nZXRDb21wYXNzRGlyZWN0aW9uKG9yaWdw b2ludCwgYm94cG9pbnQpO2lmKHRoaXMuZnVuY3Rpb25FeGlzdHMoJ190ZXN0UnVs ZXMnKSAmJiAhdGhpcy5fdGVzdFJ1bGVzKHRlc3Rjb21wYXNzLCB0ZXN0YmxvY2tz LCBib3gsIG51bGwpKXtpZihjb25maXJtIHx8IHRoaXMuZGlhbG9nKXt0aGlzLnVw ZGF0ZURpYWxvZyh0YXJnZXRib3gsICcgZGJ4LWRpYWxvZy1ubycsIG51bGwsIG51 bGwsICdrZXlib2FyZCcpO2lmKHRoaXMudm9jYWIua25vICE9ICcnKXt0aGlzLmNy ZWF0ZVRvb2x0aXAodGhpcy52b2NhYi5rbm8sYm94LHRydWUpO319aWYobWFudWFs KSB7IHRoaXMucmVmb2N1cyhhbmNob3IpOyB9cmV0dXJuIGZhbHNlO319aWYoYm94 ICE9IHRhcmdldGJveCAmJiAhZGJ4Lmhhc0NsYXNzKHRhcmdldGJveCwgJ2RieFwt KGRpYWxvZ3xzdWZmdXNpb24tZGlzY2FyZHMpJykpe3RhcmdldGJveC5jbGFzc05h bWUgKz0gJyBkYngtYm94LXRhcmdldCc7fWlmKGNvbmZpcm0gfHwgdGhpcy5kaWFs b2cpe3ZhciBkaWZmcyA9IG51bGwsIGdyb3VwID0gbnVsbDtpZihib3hlcyAhPSB0 aGlzLmJveGVzKXtncm91cCA9IHRoaXMuZGlhbG9nLmdyb3VwO3ZhciBncm91cGNv bnRhaW5lciA9IGRieC5nZXRQb3NpdGlvbihncm91cC5jb250YWluZXIsIGZhbHNl KTt2YXIgY2FsbGNvbnRhaW5lciA9IGRieC5nZXRQb3NpdGlvbih0aGlzLmNvbnRh aW5lciwgZmFsc2UpO3ZhciBkaWZmcyA9IHsneCcgOiBncm91cGNvbnRhaW5lci5s ZWZ0IC0gY2FsbGNvbnRhaW5lci5sZWZ0LCd5JyA6IGdyb3VwY29udGFpbmVyLnRv cCAtIGNhbGxjb250YWluZXIudG9wfTt9dGhpcy51cGRhdGVEaWFsb2codGFyZ2V0 Ym94LCAnIGRieC1kaWFsb2cteWVzJywgZGlmZnMsIGdyb3VwLCAna2V5Ym9hcmQn KTtpZih0aGlzLnZvY2FiLmt5ZXMgIT0gJycpe3RoaXMuY3JlYXRlVG9vbHRpcCh0 aGlzLnZvY2FiLmt5ZXMsYm94LHRydWUpO31pZihtYW51YWwpIHsgdGhpcy5yZWZv Y3VzKGFuY2hvcik7IH1yZXR1cm4gZmFsc2U7fWlmKHRoaXMuZXhjaGFuZ2UgPT0g J3N3YXAnKXtyZXR1cm4gdGhpcy5zd2FwVHdvQm94ZXMocGFyZW50LCB0YXJnZXRi b3gsIGFuY2hvciwgbWFudWFsLCB0aGlzLnBvc2l0aXZlKTt9ZWxzZXtyZXR1cm4g dGhpcy5pbnNlcnRUd29Cb3hlcyhwYXJlbnQsIHRhcmdldGJveCwgYW5jaG9yLCBt YW51YWwsIGRpcmVjdGlvbik7fX1yZXR1cm4gZmFsc2U7fTtkYnhHcm91cC5wcm90 b3R5cGUuaW5zZXJ0VHdvQm94ZXMgPSBmdW5jdGlvbihvcmlnaW5hbCwgc2VsZWN0 ZWQsIGFuY2hvciwgbWFudWFsLCBwb3NpdGl2ZSl7aWYodHlwZW9mIGRieC5vbmJl Zm9yZXN0YXRlY2hhbmdlICE9ICd1bmRlZmluZWQnKXt2YXIgYWN0aW9ucyA9IGRi eC5jb21waWxlQW5kRGlzcGF0Y2hPbkJlZm9yZVN0YXRlQ2hhbmdlKFsncHJvY2Vl ZCcsIHRoaXMsIHRoaXMuY29udGFpbmVyLCB0aGlzLmdpZCwgb3JpZ2luYWwsIHNl bGVjdGVkLCAnaW5zZXJ0J10pO2lmKCFhY3Rpb25zLnByb2NlZWQpIHsgcmV0dXJu IGZhbHNlOyB9fWlmKHRoaXMuZnVuY3Rpb25FeGlzdHMoJ191cGRhdGVSdWxlUG9p bnRlcicpKSB7IHRoaXMuX3VwZGF0ZVJ1bGVQb2ludGVyKCk7IH12YXIgYWRkID0g ZmFsc2UsIHBvaW50ZXIgPSAwLCB0aGVib3hlcyA9IFtdLCB2aXNpYm94ZXMgPSBb XTtmb3IodmFyIGkgaW4gdGhpcy5ib3hlcyl7aWYoZGJ4LnVud2FudGVkKHRoaXMu Ym94ZXMsIGkpKSB7IGNvbnRpbnVlOyB9dGhlYm94ZXMucHVzaCh0aGlzLmJveGVz W2ldKTt9Zm9yKGk9MDsgaTx0aGVib3hlcy5sZW5ndGg7IGkrKyl7aWYodGhlYm94 ZXNbaV0gPT0gb3JpZ2luYWwpIHsgY29udGludWU7IH12aXNpYm94ZXMucHVzaCh0 aGVib3hlc1tpXSk7IH12YXIgdmlzaXBvc2VzID0gW107Zm9yKGk9MDsgaTx2aXNp Ym94ZXMubGVuZ3RoOyBpKyspe3Zpc2lwb3Nlcy5wdXNoKHsneCcgOiB2aXNpYm94 ZXNbaV0ub2Zmc2V0TGVmdCwneScgOiB2aXNpYm94ZXNbaV0ub2Zmc2V0VG9wfSk7 fXZhciBvcmlnaW5hbHBvcyA9IHsgJ3gnIDogb3JpZ2luYWwub2Zmc2V0TGVmdCwg J3knIDogb3JpZ2luYWwub2Zmc2V0VG9wIH07b3JpZ2luYWwuc3R5bGUudmlzaWJp bGl0eSA9ICdoaWRkZW4nO3NlbGVjdGVkID0gZGJ4LnJlbW92ZUNsYXNzKHNlbGVj dGVkLCAnZGJ4XC1ib3hcLXRhcmdldCcpO3NlbGVjdGVkLnBhcmVudE5vZGUuaW5z ZXJ0QmVmb3JlKG9yaWdpbmFsLCBzZWxlY3RlZCk7aWYodHlwZW9mIHZpc2lib3hl cyAhPSAndW5kZWZpbmVkJyAmJiB2aXNpYm94ZXMubGVuZ3RoID4gMCl7Zm9yKGk9 MDsgaTx2aXNpYm94ZXMubGVuZ3RoOyBpKyspe25ldyBkYnhBbmltYXRvcih0aGlz LCB2aXNpYm94ZXNbaV0sIHZpc2lwb3Nlc1tpXSwgdGhpcy5yZXNvbHV0aW9uLCBm YWxzZSwgbnVsbCwgdHJ1ZSk7fX1uZXcgZGJ4QW5pbWF0b3IodGhpcywgb3JpZ2lu YWwsIG9yaWdpbmFscG9zLCB0aGlzLnJlc29sdXRpb24sIHRydWUsIGFuY2hvciwg bWFudWFsKTt0aGlzLnJlZ2VuZXJhdGVCb3hPcmRlcigpO3JldHVybiB0cnVlO307 ZGJ4R3JvdXAucHJvdG90eXBlLnN3YXBUd29Cb3hlcyA9IGZ1bmN0aW9uKG9yaWdp bmFsLCBzZWxlY3RlZCwgYW5jaG9yLCBtYW51YWwsIHBvc2l0aXZlKXtpZih0eXBl b2YgZGJ4Lm9uYmVmb3Jlc3RhdGVjaGFuZ2UgIT0gJ3VuZGVmaW5lZCcpe3ZhciBh Y3Rpb25zID0gZGJ4LmNvbXBpbGVBbmREaXNwYXRjaE9uQmVmb3JlU3RhdGVDaGFu Z2UoWydwcm9jZWVkJywgdGhpcywgdGhpcy5jb250YWluZXIsIHRoaXMuZ2lkLCBv cmlnaW5hbCwodGhpcy5vcmllbnRhdGlvbiAhPSAnZnJlZWZvcm0nICYmIHBvc2l0 aXZlID8gZGJ4LmdldFNpYmxpbmdCb3goc2VsZWN0ZWQsICduZXh0U2libGluZycp IDogc2VsZWN0ZWQpLCh0aGlzLm9yaWVudGF0aW9uID09ICdmcmVlZm9ybScgPyAn c3dhcCcgOiAnbW92ZScpXSk7aWYoIWFjdGlvbnMucHJvY2VlZCkgeyByZXR1cm4g ZmFsc2U7IH19aWYodGhpcy5mdW5jdGlvbkV4aXN0cygnX3VwZGF0ZVJ1bGVQb2lu dGVyJykpIHsgdGhpcy5fdXBkYXRlUnVsZVBvaW50ZXIoKTsgfXZhciBzZWxlY3Rl ZHBvcyA9IHsgJ3gnIDogc2VsZWN0ZWQub2Zmc2V0TGVmdCwgJ3knIDogc2VsZWN0 ZWQub2Zmc2V0VG9wIH07dmFyIG9yaWdpbmFscG9zID0geyAneCcgOiBvcmlnaW5h bC5vZmZzZXRMZWZ0LCAneScgOiBvcmlnaW5hbC5vZmZzZXRUb3AgfTtvcmlnaW5h bC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7c2VsZWN0ZWQuc3R5bGUudmlz aWJpbGl0eSA9ICdoaWRkZW4nO3NlbGVjdGVkID0gZGJ4LnJlbW92ZUNsYXNzKHNl bGVjdGVkLCAnZGJ4XC1ib3hcLXRhcmdldCcpO3ZhciBuZXh0ID0gc2VsZWN0ZWQu bmV4dFNpYmxpbmc7aWYobmV4dCA9PSBvcmlnaW5hbCl7c2VsZWN0ZWQucGFyZW50 Tm9kZS5pbnNlcnRCZWZvcmUob3JpZ2luYWwsIHNlbGVjdGVkKTt9ZWxzZXtvcmln aW5hbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWxlY3RlZCwgb3JpZ2luYWwp O25leHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUob3JpZ2luYWwsIG5leHQpO31u ZXcgZGJ4QW5pbWF0b3IodGhpcywgc2VsZWN0ZWQsIHNlbGVjdGVkcG9zLCB0aGlz LnJlc29sdXRpb24sIHRydWUsIG51bGwsIGZhbHNlKTtuZXcgZGJ4QW5pbWF0b3Io dGhpcywgb3JpZ2luYWwsIG9yaWdpbmFscG9zLCB0aGlzLnJlc29sdXRpb24sIHRy dWUsIGFuY2hvciwgbWFudWFsKTt0aGlzLnJlZ2VuZXJhdGVCb3hPcmRlcigpO3Jl dHVybiB0cnVlO307ZGJ4R3JvdXAucHJvdG90eXBlLmNyZWF0ZVRvb2x0aXAgPSBm dW5jdGlvbih0ZXh0LCBhbmNob3IsIG9rYXksIGNuYW1lKXtpZihva2F5KXt0aGlz LnRvb2x0aXAgPSB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkYnguY3JlYXRl RWxlbWVudCgnc3BhbicpKTt0aGlzLnRvb2x0aXAuc3R5bGUudmlzaWJpbGl0eSA9 ICdoaWRkZW4nO3RoaXMudG9vbHRpcC5jbGFzc05hbWUgPSAnZGJ4LXRvb2x0aXAn O3RoaXMudG9vbHRpcC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k ZSh0ZXh0KSk7dmFyIHBhcmVudCA9IGRieC5nZXRUYXJnZXQobnVsbCwgJ2RieFwt Ym94JywgYW5jaG9yKTt0aGlzLnRvb2x0aXAuc3R5bGUubGVmdCA9IHBhcnNlSW50 KHBhcmVudC5vZmZzZXRMZWZ0LCAxMCkgKyAncHgnO3RoaXMudG9vbHRpcC5zdHls ZS50b3AgPSBwYXJzZUludChwYXJlbnQub2Zmc2V0VG9wLCAxMCkgKyAncHgnO3Zh ciBwb3NpdGlvbiA9IGRieC5nZXRQb3NpdGlvbih0aGlzLnRvb2x0aXApO3ZhciB2 aWV3c2l6ZSA9IGRieC5nZXRWaWV3cG9ydFdpZHRoKCk7dmFyIHRpcHNpemUgPSB0 aGlzLnRvb2x0aXAub2Zmc2V0V2lkdGg7aWYocG9zaXRpb24ubGVmdCArIHRpcHNp emUgPiB2aWV3c2l6ZSl7dGhpcy50b29sdGlwLnN0eWxlLmxlZnQgPSBwYXJzZUlu dChwYXJlbnQub2Zmc2V0TGVmdCAtIChwb3NpdGlvbi5sZWZ0ICsgdGlwc2l6ZSAt IHZpZXdzaXplKSwgMTApICsgJ3B4Jzt9dmFyIHRvb2x0aXAgPSB0aGlzLnRvb2x0 aXA7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZih0b29sdGlwICE9IG51 bGwpIHsgdG9vbHRpcC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOyB9fSwg NDAwKTt9fTtkYnhHcm91cC5wcm90b3R5cGUucmVtb3ZlVG9vbHRpcCA9IGZ1bmN0 aW9uKCl7aWYodGhpcy50b29sdGlwKXt0aGlzLnRvb2x0aXAucGFyZW50Tm9kZS5y ZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXApO3RoaXMudG9vbHRpcCA9IG51bGw7fX07 ZGJ4R3JvdXAucHJvdG90eXBlLmhvdmVyID0gZnVuY3Rpb24oZSl7aWYoIXRoaXMu a2V5ZG93biB8fCAoZGJ4LmtkZSAmJiAhdGhpcy5tb3VzZWlzZG93bikpe3ZhciBm b3VuZCA9IGZhbHNlLCB0YXJnZXQgPSB0eXBlb2YgZS50YXJnZXQgIT0gJ3VuZGVm aW5lZCcgPyBlLnRhcmdldCA6IGUuc3JjRWxlbWVudDtmb3IodmFyIGk9MDsgaTx0 aGlzLmhhbmRsZXMubGVuZ3RoOyBpKyspe2lmKHRoaXMuY29udGFpbnModGhpcy5o YW5kbGVzW2ldLCB0YXJnZXQpKXtmb3VuZCA9IHRydWU7dmFyIHBhcmVudGJveCA9 IGRieC5nZXRUYXJnZXQobnVsbCwgJ2RieFwtYm94JywgdGhpcy5oYW5kbGVzW2ld KTtpZighZGJ4Lmhhc0NsYXNzKHBhcmVudGJveCwgJ2RieFwtYm94XC1ob3Zlcicp KXtpZih0eXBlb2YgdGhpcy5ob3ZlcmJveCAhPSAndW5kZWZpbmVkJyl7dGhpcy5o b3ZlcmJveCA9IGRieC5yZW1vdmVDbGFzcyh0aGlzLmhvdmVyYm94LCAnZGJ4XC1i b3hcLWhvdmVyJyk7fXRoaXMuaG92ZXJib3ggPSBwYXJlbnRib3g7cGFyZW50Ym94 LmNsYXNzTmFtZSArPSAnIGRieC1ib3gtaG92ZXInO31icmVhazt9fWlmKCFmb3Vu ZCl7aWYodHlwZW9mIHRoaXMuaG92ZXJib3ggIT0gJ3VuZGVmaW5lZCcpe3RoaXMu aG92ZXJib3ggPSBkYngucmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmJveCwgJ2RieFwt Ym94XC1ob3ZlcicpO2RlbGV0ZSB0aGlzLmhvdmVyYm94O319fX07ZGJ4R3JvdXAu cHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbihyZWNvdmVyKXtpZighZGJ4LnN1 cHBvcnRlZCkgeyByZXR1cm47IH1pZih0eXBlb2YgcmVjb3ZlciA9PSAndW5kZWZp bmVkJykgeyByZWNvdmVyID0gZmFsc2U7IH10aGlzLmVsZXMgPSBkYnguZ2V0KCcq JywgdGhpcy5jb250YWluZXIpO2Zvcih2YXIgaT0wOyBpPHRoaXMuZWxlcy5sZW5n dGg7IGkrKyl7aWYoZGJ4Lmhhc0NsYXNzKHRoaXMuZWxlc1tpXSwgJ2RieFwtc3Vm ZnVzaW9uLWRpc2NhcmRzJykpe3RoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRo aXMuZWxlc1tpXSk7fX10aGlzLmluaXRCb3hlcyhyZWNvdmVyLCB0cnVlKTt0aGlz LnJlZ2VuZXJhdGVCb3hPcmRlcigpO307ZGJ4R3JvdXAucHJvdG90eXBlLmZ1bmN0 aW9uRXhpc3RzID0gZnVuY3Rpb24oY25hbWUpe3JldHVybiB0eXBlb2YgdGhpc1tj bmFtZV0gPT0gJ2Z1bmN0aW9uJzt9O2RieEdyb3VwLnByb3RvdHlwZS5tb3VzZWRv d24gPSBmdW5jdGlvbihlLCBib3gsIGhhbmRsZSwgb3ZlcnJpZGUpe3ZhciBub2Rl ID0gdHlwZW9mIGhhbmRsZSAhPSAndW5kZWZpbmVkJyA/IGhhbmRsZSA6IHR5cGVv ZiBlLnRhcmdldCAhPSAndW5kZWZpbmVkJyA/IGUudGFyZ2V0IDogZS5zcmNFbGVt ZW50O2lmKG5vZGUubm9kZU5hbWUgPT0gJyN0ZXh0JykgeyBub2RlID0gbm9kZS5w YXJlbnROb2RlOyB9aWYoIWRieC5oYXNDbGFzcyhub2RlLCAnZGJ4XC0odG9nZ2xl fGJveHxncm91cCknKSl7d2hpbGUoIWRieC5oYXNDbGFzcyhub2RlLCAnZGJ4XC0o aGFuZGxlfGJveHxncm91cCknKSl7bm9kZSA9IG5vZGUucGFyZW50Tm9kZTt9fWlm KGRieC5oYXNDbGFzcyhub2RlLCAnZGJ4XC0odG9nZ2xlfGhhbmRsZSknKSl7Ym94 LmNsYXNzTmFtZSArPSAnIGRieC1ib3gtYWN0aXZlJzt9aWYoIWRieC5oYXNDbGFz cyhib3gsICdkYnhcLW5vZ3JhYicpICYmIGRieC5oYXNDbGFzcyhub2RlLCAnZGJ4 XC1oYW5kbGUnKSl7dGhpcy5jbGVhckRpYWxvZygpO2JveCA9IGRieC5yZW1vdmVD bGFzcyhib3gsICdkYnhcLWJveFwtZm9jdXMnKTt0aGlzLnJlbW92ZVRvb2x0aXAo KTt0aGlzLnJlbGVhc2VkID0gZmFsc2U7dGhpcy5pbml0aWFsID0geyAneCcgOiBl LmNsaWVudFgsICd5JyA6IGUuY2xpZW50WSB9O2lmKHR5cGVvZiBvdmVycmlkZSAh PSAndW5kZWZpbmVkJyl7dGhpcy5pbml0aWFsLnggKz0gKDAgLSBvdmVycmlkZS54 KTt0aGlzLmluaXRpYWwueSArPSAoMCAtIG92ZXJyaWRlLnkpO310aGlzLmN1cnJl bnQgPSB7ICd4JyA6IDAsICd5JyA6IDAgfTt0aGlzLmNyZWF0ZUNsb25lQm94KGJv eCwgJ21vdXNlJyk7aWYodHlwZW9mIGUucHJldmVudERlZmF1bHQgIT0gJ3VuZGVm aW5lZCcgKSB7IGUucHJldmVudERlZmF1bHQoKTsgfWlmKHR5cGVvZiBkb2N1bWVu dC5vbnNlbGVjdHN0YXJ0ICE9ICd1bmRlZmluZWQnKXtkb2N1bWVudC5vbnNlbGVj dHN0YXJ0ID0gZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfX19fTtkYnhHcm91 cC5wcm90b3R5cGUubW91c2Vtb3ZlID0gZnVuY3Rpb24oZSl7aWYoIXRoaXMuZHJh Z29rICYmICh0aGlzLmRpYWxvZyAmJiB0aGlzLmRpYWxvZy5zb3VyY2UgIT0gJ2tl eWJvYXJkJykpe3RoaXMuY2xlYXJEaWFsb2coKTt0aGlzLnJlbW92ZVRvb2x0aXAo KTt0aGlzLnJlbW92ZUFjdGl2ZUNsYXNzZXMoJ2RieFwtYm94XC0odGFyZ2V0fGFj dGl2ZSknKTt9aWYodGhpcy5kcmFnb2sgJiYgdGhpcy5ib3gpe3RoaXMuZGlyZWN0 aW9uID0gZS5jbGllbnRZID09IHRoaXMuY3VycmVudC55PyAoZS5jbGllbnRYID4g dGhpcy5jdXJyZW50LnggPyAncmlnaHQnIDogJ2xlZnQnKTogKGUuY2xpZW50WSA+ IHRoaXMuY3VycmVudC55ID8gJ2Rvd24nIDogJ3VwJyk7dGhpcy5jdXJyZW50ID0g eyAneCcgOiBlLmNsaWVudFgsICd5JyA6IGUuY2xpZW50WSB9O3ZhciBvdmVyYWxs ID0geyAneCcgOiB0aGlzLmN1cnJlbnQueCAtIHRoaXMuaW5pdGlhbC54LCAneScg OiB0aGlzLmN1cnJlbnQueSAtIHRoaXMuaW5pdGlhbC55IH07aWYoKChvdmVyYWxs LnggPj0gMCAmJiBvdmVyYWxsLnggPD0gdGhpcy50aHJlc2hvbGQpIHx8IChvdmVy YWxsLnggPD0gMCAmJiBvdmVyYWxsLnggPj0gMCAtIHRoaXMudGhyZXNob2xkKSkm Jigob3ZlcmFsbC55ID49IDAgJiYgb3ZlcmFsbC55IDw9IHRoaXMudGhyZXNob2xk KSB8fCAob3ZlcmFsbC55IDw9IDAgJiYgb3ZlcmFsbC55ID49IDAgLSB0aGlzLnRo cmVzaG9sZCkpKXt0aGlzLmN1cnJlbnQueCAtPSBvdmVyYWxsLng7dGhpcy5jdXJy ZW50LnkgLT0gb3ZlcmFsbC55O31pZih0aGlzLnJlbGVhc2VkIHx8IG92ZXJhbGwu eCA+IHRoaXMudGhyZXNob2xkIHx8IG92ZXJhbGwueCA8ICgwIC0gdGhpcy50aHJl c2hvbGQpIHx8IG92ZXJhbGwueSA+IHRoaXMudGhyZXNob2xkIHx8IG92ZXJhbGwu eSA8ICgwIC0gdGhpcy50aHJlc2hvbGQpKXtkYnguZGJ4b2JqZWN0ID0gdGhpcztk YnguZ3JvdXAgPSB0aGlzLmNvbnRhaW5lcjtkYnguc291cmNlYm94ID0gdGhpcy5i b3g7ZGJ4LmNsb25lYm94ID0gdGhpcy5ib3hjbG9uZTtkYnguZXZlbnQgPSBlO2lm KHR5cGVvZiBkYngub25ib3hkcmFnID09ICd1bmRlZmluZWQnIHx8IGRieC5vbmJv eGRyYWcoKSl7dGhpcy5yZWxlYXNlZCA9IHRydWU7aWYodGhpcy5yZXN0cmljdCAh PSAndmVydGljYWwnIHx8IHRoaXMub3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwn KXt0aGlzLmJveGNsb25lLnN0eWxlLmxlZnQgPSBwYXJzZUludCh0aGlzLmN1cnJl bnQueCAtIHRoaXMuZGlmZmVyZW5jZS54LCAxMCkgKyAncHgnO31pZih0aGlzLnJl c3RyaWN0ICE9ICdob3Jpem9udGFsJyB8fCB0aGlzLm9yaWVudGF0aW9uID09ICd2 ZXJ0aWNhbCcpe3RoaXMuYm94Y2xvbmUuc3R5bGUudG9wID0gcGFyc2VJbnQodGhp cy5jdXJyZW50LnkgLSB0aGlzLmRpZmZlcmVuY2UueSwgMTApICsgJ3B4Jzt9aWYo dGhpcy5yZXN0cmljdCA9PSAnZnJlZWZvcm0nKXt2YXIgY2xvbmVwb2ludCA9IHsn eCcgOiB0aGlzLmJveGNsb25lLm9mZnNldExlZnQgKyAodGhpcy5ib3hjbG9uZS5v ZmZzZXRXaWR0aCAvIDIpLCd5JyA6IHRoaXMuYm94Y2xvbmUub2Zmc2V0VG9wICsg KHRoaXMuYm94Y2xvbmUub2Zmc2V0SGVpZ2h0IC8gMil9O3ZhciBwcm9wb3J0aW9u ID0gMC4yO3ZhciBoeXBvdG9udXNlID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0 aC5wb3codGhpcy5ib3hjbG9uZS5vZmZzZXRXaWR0aCwgMikgKyBNYXRoLnBvdyh0 aGlzLmJveGNsb25lLm9mZnNldEhlaWdodCwgMikpKTtpZihjbG9uZXBvaW50Lngg PCAwIHx8IGNsb25lcG9pbnQueCA+ICh0aGlzLmNvbnRhaW5lci5vZmZzZXRXaWR0 aCAtIHByb3BvcnRpb24gKiBoeXBvdG9udXNlKXx8IGNsb25lcG9pbnQueSA8IDAg fHwgY2xvbmVwb2ludC55ID4gKHRoaXMuY29udGFpbmVyLm9mZnNldEhlaWdodCAt IHByb3BvcnRpb24gKiBoeXBvdG9udXNlKSl7dGhpcy5tb3VzZXVwKGUpO3JldHVy biB0cnVlO319dGhpcy5tb3ZlQm94QnlNb3VzZSh0aGlzLmN1cnJlbnQueCwgdGhp cy5jdXJyZW50LnksIHRoaXMuY29uZmlybSk7aWYodHlwZW9mIGUucHJldmVudERl ZmF1bHQgIT0gJ3VuZGVmaW5lZCcgKSB7IGUucHJldmVudERlZmF1bHQoKTsgfX19 fXJldHVybiB0cnVlO307ZGJ4R3JvdXAucHJvdG90eXBlLm1vdXNldXAgPSBmdW5j dGlvbihlKXt0aGlzLnJlbW92ZUFjdGl2ZUNsYXNzZXMoJ2RieFwtYm94XC0odGFy Z2V0fGFjdGl2ZSknKTtpZih0aGlzLmJveCl7aWYodGhpcy5kaWFsb2cpe2lmKHR5 cGVvZiB0aGlzLmRpYWxvZy5ncm91cCAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2Yg dGhpcy5ib3hlc1tkYnguZ2V0SUQodGhpcy5kaWFsb2cpXSA9PSAndW5kZWZpbmVk Jyl7dmFyIHhncm91cCA9IHRoaXMuZGlhbG9nLmdyb3VwO3ZhciB4aW5zZXJ0ID0g eGdyb3VwLmJveGVzW2RieC5nZXRJRCh0aGlzLmRpYWxvZyldO310aGlzLmNsZWFy RGlhbG9nKCk7aWYodHlwZW9mIHhncm91cCAhPSAndW5kZWZpbmVkJyl7ZGJ4Lm1v dXNlbW92ZShlLCB0aGlzLCB4Z3JvdXAsIHhpbnNlcnQpO3JldHVybjt9dGhpcy5t b3ZlQm94QnlNb3VzZShlLmNsaWVudFgsIGUuY2xpZW50WSwgZmFsc2UpO310aGlz LnJlbW92ZUNsb25lQm94KCk7dGhpcy5yZWdlbmVyYXRlQm94T3JkZXIoKTtpZih0 eXBlb2YgZG9jdW1lbnQub25zZWxlY3RzdGFydCAhPSAndW5kZWZpbmVkJyl7ZG9j dW1lbnQub25zZWxlY3RzdGFydCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsg fX19dGhpcy5jbGVhckRpYWxvZygpO3RoaXMuZHJhZ29rID0gZmFsc2U7fTtkYnhH cm91cC5wcm90b3R5cGUuY2xpY2sgPSBmdW5jdGlvbihlLCBhbmNob3Ipe2lmKGFu Y2hvci5oYXNmb2N1cyA9PT0gdHJ1ZSB8fCBhbmNob3IuaGFzZm9jdXMgPT09IG51 bGwpe2lmKHRoaXMuZGlhbG9nKXt2YXIgYm94ID0gZGJ4LmdldFRhcmdldChudWxs LCAnZGJ4XC1ib3gnLCBhbmNob3IpO3ZhciBkYnhpZCA9IGRieC5nZXRJRCh0aGlz LmRpYWxvZyk7e3ZhciB0YXJnZXRib3ggPSB0aGlzLmJveGVzW2RieGlkXTt9aWYo dGhpcy5leGNoYW5nZSA9PSAnaW5zZXJ0JyAmJiB0aGlzLmNvbmZpcm0gPT0gdHJ1 ZSAmJiB0aGlzLnBvc2l0aXZlID09IHRydWUpe3RhcmdldGJveCA9IGRieC5nZXQo J25leHRTaWJsaW5nJywgdGFyZ2V0Ym94KTtpZighdGFyZ2V0Ym94KSB7IHRhcmdl dGJveCA9IHRoaXMuYm94ZXNbZGJ4aWRdOyB9fXZhciBjb25maXJtZWQgPSBkYngu aGFzQ2xhc3ModGhpcy5kaWFsb2csICdkYnhcLWRpYWxvZ1wteWVzJyk7dGhpcy5j bGVhckRpYWxvZygpO3RoaXMucmVtb3ZlVG9vbHRpcCgpO2lmKHR5cGVvZiB0YXJn ZXRib3ggIT0gJ3VuZGVmaW5lZCcgJiYgdGFyZ2V0Ym94ICE9IGJveCAmJiBjb25m aXJtZWQgPT0gdHJ1ZSl7aWYodGhpcy5leGNoYW5nZSA9PSAnc3dhcCcpe3RoaXMu c3dhcFR3b0JveGVzKGJveCwgdGFyZ2V0Ym94LCBhbmNob3IsIHRydWUsIGZhbHNl KTt9ZWxzZXtyZXR1cm4gdGhpcy5pbnNlcnRUd29Cb3hlcyhib3gsIHRhcmdldGJv eCwgYW5jaG9yLCB0cnVlLCBmYWxzZSk7fX1yZXR1cm4gZmFsc2U7fXRoaXMucmVt b3ZlVG9vbHRpcCgpO3RoaXMudG9nZ2xlQm94U3RhdGUoYW5jaG9yLCB0cnVlLCB0 cnVlLCBudWxsKTt9cmV0dXJuIGZhbHNlO307ZGJ4R3JvdXAucHJvdG90eXBlLmtl eXByZXNzID0gZnVuY3Rpb24oZSwgYW5jaG9yKXt2YXIgcGFyZW50Ym94ID0gZGJ4 LmdldFRhcmdldChudWxsLCAnZGJ4XC1ib3gnLCBhbmNob3IpO2lmKC9eKDNbNy05 XSl8KDQwKSQvLnRlc3QoZS5rZXlDb2RlLnRvU3RyaW5nKCkpKXtpZihkYngub3Bl cmEgJiYgZS5zaGlmdEtleSkgeyByZXR1cm4gdHJ1ZTsgfWlmKCFkYnguaGFzQ2xh c3MoZGJ4LmdldFRhcmdldChudWxsLCAnZGJ4XC1ib3gnLCBhbmNob3IpLCAnZGJ4 XC1ub2dyYWInKSl7cGFyZW50Ym94LmNsYXNzTmFtZSArPSAnIGRieC1ib3gtYWN0 aXZlJzt0aGlzLnJlbW92ZVRvb2x0aXAoKTt2YXIgZGlyZWN0aW9uID0gJyc7c3dp dGNoKGUua2V5Q29kZSl7Y2FzZSAzNyA6ZGlyZWN0aW9uID0gJ1cnO2JyZWFrO2Nh c2UgMzggOmRpcmVjdGlvbiA9ICdOJzticmVhaztjYXNlIDM5IDpkaXJlY3Rpb24g PSAnRSc7YnJlYWs7Y2FzZSA0MCA6ZGlyZWN0aW9uID0gJ1MnO2JyZWFrO312YXIg d2FpdCA9IDc1O2lmKHRoaXMuY3VycmVudGRpciAmJiB0aGlzLmN1cnJlbnRkaXIg IT0gZGlyZWN0aW9uKXtkaXJlY3Rpb24gKz0gdGhpcy5jdXJyZW50ZGlyLnRvTG93 ZXJDYXNlKCk7c3dpdGNoKGRpcmVjdGlvbil7Y2FzZSAnRW4nIDogZGlyZWN0aW9u ID0gJ05lJzsgYnJlYWs7Y2FzZSAnRXMnIDogZGlyZWN0aW9uID0gJ1NlJzsgYnJl YWs7Y2FzZSAnV24nIDogZGlyZWN0aW9uID0gJ053JzsgYnJlYWs7Y2FzZSAnV3Mn IDogZGlyZWN0aW9uID0gJ1N3JzsgYnJlYWs7fWNsZWFyVGltZW91dCh0aGlzLmtl eXRpbWVyKTt3YWl0ID0gMDt9ZWxzZXt0aGlzLmN1cnJlbnRkaXIgPSBkaXJlY3Rp b247fXZhciBzZWxmID0gdGhpczt0aGlzLmtleXRpbWVyID0gc2V0VGltZW91dChm dW5jdGlvbigpe2lmKCEvXihOc3xTbnxFd3xXdykkLy50ZXN0KGRpcmVjdGlvbikp e2lmKHNlbGYuZGlhbG9nKXt2YXIgZGJ4aWQgPSBkYnguZ2V0SUQoc2VsZi5kaWFs b2cpO3t2YXIgYm94ID0gc2VsZi5ib3hlc1tkYnhpZF07fX1lbHNle2JveCA9IGRi eC5nZXRUYXJnZXQobnVsbCwgJ2RieFwtYm94JywgYW5jaG9yKTt9c2VsZi5tb3Zl Qm94QnlLZXlib2FyZChlLCBhbmNob3IsIGJveCwgZGlyZWN0aW9uLCBzZWxmLmNv bmZpcm0sIHRydWUpO319LCB3YWl0KTtpZih0eXBlb2YgZS5wcmV2ZW50RGVmYXVs dCAhPSAndW5kZWZpbmVkJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IH1lbHNlIHsg cmV0dXJuIGZhbHNlOyB9dHlwZW9mIGUuc3RvcFByb3BhZ2F0aW9uICE9ICd1bmRl ZmluZWQnID8gZS5zdG9wUHJvcGFnYXRpb24oKSA6IGUuY2FuY2VsQnViYmxlID0g dHJ1ZTt0aGlzLmtleWRvd24gPSBmYWxzZTt9fWVsc2UgaWYoZGJ4LmtkZSAmJiBl LnRhcmdldCA9PSBhbmNob3IgJiYgKGUua2V5Q29kZSA9PSAxMyB8fCBlLmtleUNv ZGUgPT0gMzIpKXt0aGlzLmNsaWNrKGUsIGFuY2hvcik7ZS5wcmV2ZW50RGVmYXVs dCgpO31lbHNle3RoaXMucmVtb3ZlQWN0aXZlQ2xhc3NlcygnZGJ4XC1ib3hcLSh0 YXJnZXR8YWN0aXZlKScpO31pZihlLmtleUNvZGUgPT0gMTMgfHwgZS5rZXlDb2Rl ID09IDMyKXtwYXJlbnRib3guY2xhc3NOYW1lICs9ICcgZGJ4LWJveC1hY3RpdmUn O31yZXR1cm4gdHJ1ZTt9O2RieEdyb3VwLnByb3RvdHlwZS5yZWdlbmVyYXRlQm94 T3JkZXIgPSBmdW5jdGlvbigpe3RoaXMub3JkZXIgPSBbXTt2YXIgbGVuID0gdGhp cy5lbGVzLmxlbmd0aDtmb3IodmFyIGo9MDsgajxsZW47IGorKyl7aWYoZGJ4Lmhh c0NsYXNzKHRoaXMuZWxlc1tqXSwgJ2RieFwtYm94JykgJiYgIWRieC5oYXNDbGFz cyh0aGlzLmVsZXNbal0sICdkYnhcLShjbG9uZXxzdWZmdXNpb24tZGlzY2FyZHMp Jykpe3RoaXMub3JkZXIucHVzaChkYnguZ2V0SUQodGhpcy5lbGVzW2pdKSArIChk YnguaGFzQ2xhc3ModGhpcy5lbGVzW2pdLCAnZGJ4XC1ib3hcLW9wZW4nKSA/ICcr JyA6ICctJykpO319ZGJ4LnNhdmVkYXRhW3RoaXMuZ2lkXSA9IHRoaXMub3JkZXIu am9pbignLCcpO2RieC5kYnhvYmplY3QgPSB0aGlzO2RieC5ncm91cCA9IHRoaXMu Y29udGFpbmVyO2RieC5naWQgPSB0aGlzLmdpZDt0aGlzLnVwZGF0ZUNoaWxkQ2xh c3NlcygpO2RieC5zZXRDb29raWVTdGF0ZSgpO307ZGJ4R3JvdXAucHJvdG90eXBl LnVwZGF0ZUNoaWxkQ2xhc3NlcyA9IGZ1bmN0aW9uKCl7dmFyIGJveGlkcyA9IFtd LCBlbGVzID0gZGJ4LmdldCgnKicsIHRoaXMuY29udGFpbmVyKTtmb3IodmFyIGk9 MDsgaTxlbGVzLmxlbmd0aDsgaSsrKXtpZihkYnguaGFzQ2xhc3MoZWxlc1tpXSwg J2RieFwtYm94JykgJiYgIWRieC5oYXNDbGFzcyhlbGVzW2ldLCAnZGJ4XC0oc3Vm ZnVzaW9uLWRpc2NhcmRzfGNsb25lKScpKXtib3hpZHMucHVzaChkYnguZ2V0SUQo ZWxlc1tpXSkpO319dmFyIGNoaWxkcmVuID0geydmaXJzdCcgOiBib3hpZHNbMF0s ICdsYXN0JyA6IGJveGlkc1tib3hpZHMubGVuZ3RoIC0gMV19O2Zvcih2YXIgaSBp biBjaGlsZHJlbil7aWYoZGJ4LnVud2FudGVkKGNoaWxkcmVuLCBpKSkgeyBjb250 aW51ZTsgfXZhciBib3ggPSB0aGlzLmJveGVzW2NoaWxkcmVuW2ldXTtpZih0aGlz LmNoaWxkW2ldICE9IG51bGwpe3RoaXMuY2hpbGRbaV0gPSBkYngucmVtb3ZlQ2xh c3ModGhpcy5jaGlsZFtpXSwgaSArICdcLWNoaWxkJyk7aWYodGhpcy5ib3hjbG9u ZSAmJiBkYnguZ2V0SUQodGhpcy5ib3hjbG9uZSkgPT0gZGJ4LmdldElEKHRoaXMu Y2hpbGRbaV0pKXt0aGlzLmJveGNsb25lID0gZGJ4LnJlbW92ZUNsYXNzKHRoaXMu Ym94Y2xvbmUsIGkgKyAnXC1jaGlsZCcpO310aGlzLmNoaWxkW2ldID0gbnVsbDt9 Ym94LmNsYXNzTmFtZSArPSAnICcgKyBpICsgJy1jaGlsZCc7dGhpcy5jaGlsZFtp XSA9IGJveDtpZih0aGlzLmJveGNsb25lICYmIGRieC5nZXRJRCh0aGlzLmJveGNs b25lKSA9PSBkYnguZ2V0SUQodGhpcy5jaGlsZFtpXSkpe3RoaXMuYm94Y2xvbmUu Y2xhc3NOYW1lICs9ICcgJyArIGkgKyAnLWNoaWxkJzt9fX07ZGJ4R3JvdXAucHJv dG90eXBlLmNyZWF0ZUNsb25lID0gZnVuY3Rpb24oYm94LCB6b3JkZXIsIHBvc2l0 aW9uLCBjbmFtZSwgY2hpbGRyZW4sIHNvdXJjZSl7dmFyIGNsb25lID0gdGhpcy5j b250YWluZXIuYXBwZW5kQ2hpbGQoYm94LmNsb25lTm9kZShjaGlsZHJlbikpO2Ns b25lLnNvdXJjZSA9IHNvdXJjZTtjbG9uZS5jbGFzc05hbWUgKz0gJyBkYngtY2xv bmUnO2lmKGNuYW1lICE9ICcnKXtjbG9uZS5jbGFzc05hbWUgKz0gJyAnICsgY25h bWU7fWNsb25lID0gZGJ4LnJlbW92ZUNsYXNzKGNsb25lLCAnZGJ4XC1ib3hcLWZv Y3VzJyk7Y2xvbmUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO2Nsb25lLnN0 eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztjbG9uZS5zdHlsZS56SW5kZXggPSB6 b3JkZXI7Y2xvbmUuc3R5bGUubGVmdCA9IHBhcnNlSW50KHBvc2l0aW9uLngsIDEw KSArICdweCc7Y2xvbmUuc3R5bGUudG9wID0gcGFyc2VJbnQocG9zaXRpb24ueSwg MTApICsgJ3B4JztjbG9uZS5zdHlsZS53aWR0aCA9IGJveC5vZmZzZXRXaWR0aCAr ICdweCc7Y2xvbmUuc3R5bGUuaGVpZ2h0ID0gYm94Lm9mZnNldEhlaWdodCArICdw eCc7cmV0dXJuIGNsb25lO307ZGJ4R3JvdXAucHJvdG90eXBlLmNyZWF0ZUNsb25l Qm94ID0gZnVuY3Rpb24oYm94LCBzb3VyY2Upe3RoaXMuYm94ID0gYm94O3RoaXMu cG9zaXRpb24gPSB7ICd4JyA6IHRoaXMuYm94Lm9mZnNldExlZnQsICd5JyA6IHRo aXMuYm94Lm9mZnNldFRvcCB9O3RoaXMuZGlmZmVyZW5jZSA9IHsgJ3gnIDogKHRo aXMuaW5pdGlhbC54IC0gdGhpcy5wb3NpdGlvbi54KSwgJ3knIDogKHRoaXMuaW5p dGlhbC55IC0gdGhpcy5wb3NpdGlvbi55KSB9O3RoaXMuYm94Y2xvbmUgPSB0aGlz LmNyZWF0ZUNsb25lKHRoaXMuYm94LCAzMDAwMCwgdGhpcy5wb3NpdGlvbiwgJ2Ri eC1kcmFnY2xvbmUnLCB0cnVlLCBzb3VyY2UpO3RoaXMuYm94Y2xvbmUuc3R5bGUu Y3Vyc29yID0gJ21vdmUnO3RoaXMuZHJhZ29rID0gdHJ1ZTt9O2RieEdyb3VwLnBy b3RvdHlwZS5yZW1vdmVDbG9uZUJveCA9IGZ1bmN0aW9uKCl7dGhpcy5jb250YWlu ZXIucmVtb3ZlQ2hpbGQodGhpcy5ib3hjbG9uZSk7dGhpcy5ib3guc3R5bGUudmlz aWJpbGl0eSA9ICd2aXNpYmxlJzt0aGlzLmJveCA9IG51bGw7fTtkYnhHcm91cC5w cm90b3R5cGUucmVtb3ZlQWN0aXZlQ2xhc3NlcyA9IGZ1bmN0aW9uKHBhdHRlcm4p e2Zvcih2YXIgaSBpbiB0aGlzLmJveGVzKXtpZihkYngudW53YW50ZWQodGhpcy5i b3hlcywgaSkpIHsgY29udGludWU7IH10aGlzLmJveGVzW2ldID0gZGJ4LnJlbW92 ZUNsYXNzKHRoaXMuYm94ZXNbaV0sIHBhdHRlcm4pO319O2RieEdyb3VwLnByb3Rv dHlwZS5tb3ZlQm94QnlNb3VzZSA9IGZ1bmN0aW9uKGNsaWVudFgsIGNsaWVudFks IGNvbmZpcm0pe2lmKHRoaXMub3JpZW50YXRpb24gPT0gJ2ZyZWVmb3JtJyl7dmFy IGNsb25lcG9pbnQgPSB7J3gnIDogY2xpZW50WCAtIHRoaXMuZGlmZmVyZW5jZS54 ICsgKHRoaXMuYm94Y2xvbmUub2Zmc2V0V2lkdGggLyAyKSwneScgOiBjbGllbnRZ IC0gdGhpcy5kaWZmZXJlbmNlLnkgKyAodGhpcy5ib3hjbG9uZS5vZmZzZXRIZWln aHQgLyAyKX07dmFyIGRpZmZlcmVuY2VzID0gW107fWVsc2V7dmFyIGNsb25lcHJv cHMgPSB7J3h5JyA6IHRoaXMub3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJyA/IGNs aWVudFkgLSB0aGlzLmRpZmZlcmVuY2UueSA6IGNsaWVudFggLSB0aGlzLmRpZmZl cmVuY2UueCwnd2gnIDogdGhpcy5vcmllbnRhdGlvbiA9PSAndmVydGljYWwnID8g dGhpcy5ib3hjbG9uZS5vZmZzZXRIZWlnaHQgOiB0aGlzLmJveGNsb25lLm9mZnNl dFdpZHRofTt9aWYoZGJ4LmhpZGUpIHsgdGhpcy5ib3guc3R5bGUudmlzaWJpbGl0 eSA9ICdoaWRkZW4nOyB9dGhpcy5yZW1vdmVBY3RpdmVDbGFzc2VzKCdkYnhcLWJv eFwtKHRhcmdldHxhY3RpdmUpJyk7dGhpcy5ib3hjbG9uZS5zdHlsZS52aXNpYmls aXR5ID0gJ3Zpc2libGUnO2Zvcih2YXIgaSBpbiB0aGlzLmJveGVzKXtpZihkYngu dW53YW50ZWQodGhpcy5ib3hlcywgaSkpIHsgY29udGludWU7IH1pZih0aGlzLm9y aWVudGF0aW9uID09ICdmcmVlZm9ybScpe2lmKGRieC5oYXNDbGFzcyh0aGlzLmJv eGVzW2ldLCAnZGJ4XC1zdWZmdXNpb24tZGlzY2FyZHMnKSAmJiB0aGlzLmV4aGFu Z2UgPT0gJ3N3YXAnKSB7IGNvbnRpbnVlOyB9dmFyIGJveHBvaW50ID0geyd4JyA6 IHRoaXMuYm94ZXNbaV0ub2Zmc2V0TGVmdCArICh0aGlzLmJveGVzW2ldLm9mZnNl dFdpZHRoIC8gMiksJ3knIDogdGhpcy5ib3hlc1tpXS5vZmZzZXRUb3AgKyAodGhp cy5ib3hlc1tpXS5vZmZzZXRIZWlnaHQgLyAyKX07ZGlmZmVyZW5jZXMucHVzaChb aSwgTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3coTWF0aC5hYnMoY2xvbmVw b2ludC54IC0gYm94cG9pbnQueCksIDIpICsgTWF0aC5wb3coTWF0aC5hYnMoY2xv bmVwb2ludC55IC0gYm94cG9pbnQueSksIDIpKSldKTtpZih0aGlzLmJveGVzW2ld ID09IHRoaXMuYm94KXtkaWZmZXJlbmNlc1tkaWZmZXJlbmNlcy5sZW5ndGggLSAx XVsxXSA9IE1hdGgucG93KDEwLCAyMCk7aWYoY29uZmlybSB8fCB0aGlzLmRpYWxv Zyl7dGhpcy51cGRhdGVEaWFsb2codGhpcy5ib3gsICcnLCBudWxsLCBudWxsLCAn bW91c2UnKTt9fX1lbHNle3ZhciBib3hwcm9wcyA9IHsneHknIDogdGhpcy5vcmll bnRhdGlvbiA9PSAndmVydGljYWwnID8gdGhpcy5ib3hlc1tpXS5vZmZzZXRUb3Ag OiB0aGlzLmJveGVzW2ldLm9mZnNldExlZnQsJ3doJyA6IHRoaXMub3JpZW50YXRp b24gPT0gJ3ZlcnRpY2FsJyA/IHRoaXMuYm94ZXNbaV0ub2Zmc2V0SGVpZ2h0IDog dGhpcy5ib3hlc1tpXS5vZmZzZXRXaWR0aH07dGhpcy5wb3NpdGl2ZSA9IHRoaXMu ZGlyZWN0aW9uID09ICdkb3duJyB8fCB0aGlzLmRpcmVjdGlvbiA9PSAncmlnaHQn O2lmKCh0aGlzLnBvc2l0aXZlICYmIGNsb25lcHJvcHMueHkgKyBjbG9uZXByb3Bz LndoID4gYm94cHJvcHMueHkgJiYgY2xvbmVwcm9wcy54eSA8IGJveHByb3BzLnh5 KXx8KCF0aGlzLnBvc2l0aXZlICYmIGNsb25lcHJvcHMueHkgPCBib3hwcm9wcy54 eSAmJiBjbG9uZXByb3BzLnh5ICsgY2xvbmVwcm9wcy53aCA+IGJveHByb3BzLnh5 KSl7aWYodGhpcy5ib3hlc1tpXSA9PSB0aGlzLmJveCkgeyByZXR1cm47IH12YXIg c2libGluZyA9IGRieC5nZXRTaWJsaW5nQm94KHRoaXMuYm94LCAnbmV4dFNpYmxp bmcnKTtpZih0aGlzLmJveCA9PSBzaWJsaW5nIHx8IHRoaXMuYm94ZXNbaV0gPT0g c2libGluZykgeyByZXR1cm47IH12YXIgaW5kZXggPSBpO2JyZWFrO319fWlmKHRo aXMub3JpZW50YXRpb24gPT0gJ2ZyZWVmb3JtJyl7ZGlmZmVyZW5jZXMuc29ydChm dW5jdGlvbihhLCBiKSB7IHJldHVybiBhWzFdIC0gYlsxXTsgfSk7aW5kZXggPSBk aWZmZXJlbmNlc1swXVswXTt2YXIgdGFyZ2V0Ym94ID0gdGhpcy5ib3hlc1tpbmRl eF07dmFyIG9yaWdpbmFsdGFyZ2V0Ym94ID0gdGFyZ2V0Ym94O2lmKHRoaXMuZXhj aGFuZ2UgPT0gJ2luc2VydCcgJiYgKHRoaXMuZGlyZWN0aW9uID09ICdkb3duJyB8 fCB0aGlzLmRpcmVjdGlvbiA9PSAncmlnaHQnKSl7dGFyZ2V0Ym94ID0gZGJ4Lmdl dCgnbmV4dFNpYmxpbmcnLCB0YXJnZXRib3gpO31pZih0YXJnZXRib3ggPT0gdGhp cy5ib3gpIHsgcmV0dXJuOyB9Ym94cHJvcHMgPSB7J2xlZnQnIDogb3JpZ2luYWx0 YXJnZXRib3gub2Zmc2V0TGVmdCwndG9wJyA6IG9yaWdpbmFsdGFyZ2V0Ym94Lm9m ZnNldFRvcH07Ym94cHJvcHMucmlnaHQgPSBib3hwcm9wcy5sZWZ0ICsgdGFyZ2V0 Ym94Lm9mZnNldFdpZHRoO2JveHByb3BzLmJvdHRvbSA9IGJveHByb3BzLnRvcCAr IHRhcmdldGJveC5vZmZzZXRIZWlnaHQ7dmFyIHByb3BvcnRpb24gPSBjb25maXJt IHx8IHRoaXMuZGlhbG9nID8gMCA6IDAuMTt2YXIgaHlwb3RvbnVzZSA9IE1hdGgu cm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KG9yaWdpbmFsdGFyZ2V0Ym94Lm9mZnNl dFdpZHRoLCAyKSArIE1hdGgucG93KG9yaWdpbmFsdGFyZ2V0Ym94Lm9mZnNldEhl aWdodCwgMikpKTtpZighKGNsb25lcG9pbnQueCA+IGJveHByb3BzLmxlZnQgKyAo aHlwb3RvbnVzZSAqIHByb3BvcnRpb24pICYmIGNsb25lcG9pbnQueCA8IGJveHBy b3BzLnJpZ2h0IC0gKGh5cG90b251c2UgKiBwcm9wb3J0aW9uKSYmIGNsb25lcG9p bnQueSA+IGJveHByb3BzLnRvcCArIChoeXBvdG9udXNlICogcHJvcG9ydGlvbikg JiYgY2xvbmVwb2ludC55IDwgYm94cHJvcHMuYm90dG9tIC0gKGh5cG90b251c2Ug KiBwcm9wb3J0aW9uKSkpe3JldHVybjt9aWYodGhpcy5sYXN0LmJveCA9PSB0YXJn ZXRib3ggJiYgdGhpcy5sYXN0LmRpcmVjdGlvbiA9PSB0aGlzLmRpcmVjdGlvbil7 cmV0dXJuO312YXIgb3JpZ3BvaW50ID0geyd4JyA6IHRoaXMuYm94Lm9mZnNldExl ZnQgKyAodGhpcy5ib3gub2Zmc2V0V2lkdGggLyAyKSwneScgOiB0aGlzLmJveC5v ZmZzZXRUb3AgKyAodGhpcy5ib3gub2Zmc2V0SGVpZ2h0IC8gMil9O2JveHBvaW50 ID0geyd4JyA6IG9yaWdpbmFsdGFyZ2V0Ym94Lm9mZnNldExlZnQgKyAob3JpZ2lu YWx0YXJnZXRib3gub2Zmc2V0V2lkdGggLyAyKSwneScgOiBvcmlnaW5hbHRhcmdl dGJveC5vZmZzZXRUb3AgKyAob3JpZ2luYWx0YXJnZXRib3gub2Zmc2V0SGVpZ2h0 IC8gMil9O3ZhciBibG9ja3MgPSB0aGlzLmdldEJsb2Nrc0RpZmZlcmVuY2Uob3Jp Z3BvaW50LCBib3hwb2ludCwgdGhpcy5ib3gpO3ZhciBjb21wYXNzID0gdGhpcy5n ZXRDb21wYXNzRGlyZWN0aW9uKG9yaWdwb2ludCwgYm94cG9pbnQpO2lmKHRoaXMu ZnVuY3Rpb25FeGlzdHMoJ190ZXN0UnVsZXMnKSAmJiAhdGhpcy5fdGVzdFJ1bGVz KGNvbXBhc3MsIGJsb2NrcywgdGhpcy5ib3gsIG51bGwpKXtpZihjb25maXJtIHx8 IHRoaXMuZGlhbG9nKXt0aGlzLnVwZGF0ZURpYWxvZyhvcmlnaW5hbHRhcmdldGJv eCwgJyBkYngtZGlhbG9nLW5vJywgbnVsbCwgbnVsbCwgJ21vdXNlJyk7fXJldHVy bjt9aWYoY29uZmlybSB8fCB0aGlzLmRpYWxvZyl7aWYoIWRieC5oYXNDbGFzcyh0 YXJnZXRib3gsICdkYnhcLShkaWFsb2d8c3VmZnVzaW9uLWRpc2NhcmRzKScpKXtv cmlnaW5hbHRhcmdldGJveC5jbGFzc05hbWUgKz0gJyBkYngtYm94LXRhcmdldCc7 fXRoaXMudXBkYXRlRGlhbG9nKG9yaWdpbmFsdGFyZ2V0Ym94LCAnIGRieC1kaWFs b2cteWVzJywgbnVsbCwgbnVsbCwgJ21vdXNlJyk7cmV0dXJuO31pZih0aGlzLmZ1 bmN0aW9uRXhpc3RzKCdfdXBkYXRlUnVsZVBvaW50ZXInKSkgeyB0aGlzLl91cGRh dGVSdWxlUG9pbnRlcigpOyB9dGhpcy5sYXN0ID0geydib3gnIDogb3JpZ2luYWx0 YXJnZXRib3gsJ2RpcmVjdGlvbicgOiB0aGlzLmRpcmVjdGlvbn07fWVsc2V7dmFy IHRhcmdldGJveCA9IHRoaXMuYm94ZXNbaW5kZXhdO3ZhciBvcmlnaW5hbHRhcmdl dGJveCA9IHRhcmdldGJveDt9aWYodHlwZW9mIGluZGV4ID09ICd1bmRlZmluZWQn KSB7IHJldHVybjsgfWlmKCFkYnguaGFzQ2xhc3Mob3JpZ2luYWx0YXJnZXRib3gs ICdkYnhcLShkaWFsb2d8c3VmZnVzaW9uLWRpc2NhcmRzKScpKXtvcmlnaW5hbHRh cmdldGJveC5jbGFzc05hbWUgKz0gJyBkYngtYm94LXRhcmdldCc7fWlmKHR5cGVv ZiBkYngub25iZWZvcmVzdGF0ZWNoYW5nZSAhPSAndW5kZWZpbmVkJyl7dmFyIGFj dGlvbnMgPSBkYnguY29tcGlsZUFuZERpc3BhdGNoT25CZWZvcmVTdGF0ZUNoYW5n ZShbJ3Byb2NlZWQnLCB0aGlzLCB0aGlzLmNvbnRhaW5lciwgdGhpcy5naWQsIHRo aXMuYm94LCBvcmlnaW5hbHRhcmdldGJveCwodGhpcy5vcmllbnRhdGlvbiA9PSAn ZnJlZWZvcm0nID8gdGhpcy5leGNoYW5nZSA6ICdtb3ZlJyldKTtpZighYWN0aW9u cy5wcm9jZWVkKSB7IHJldHVybjsgfX1pZih0aGlzLm9yaWVudGF0aW9uID09ICdm cmVlZm9ybScgKXtpZih0aGlzLmV4Y2hhbmdlID09ICdzd2FwJyl7dmFyIHZpc2li b3ggPSBvcmlnaW5hbHRhcmdldGJveDt9ZWxzZXt2YXIgYWRkID0gZmFsc2UsIHBv aW50ZXIgPSAwLCB0aGVib3hlcyA9IFtdLCB2aXNpYm94ZXMgPSBbXTtmb3IodmFy IGkgaW4gdGhpcy5ib3hlcyl7aWYoZGJ4LnVud2FudGVkKHRoaXMuYm94ZXMsIGkp KSB7IGNvbnRpbnVlOyB9dGhlYm94ZXMucHVzaCh0aGlzLmJveGVzW2ldKTt9Zm9y KGk9MDsgaTx0aGVib3hlcy5sZW5ndGg7IGkrKyl7aWYodGhlYm94ZXNbaV0gPT0g dGhpcy5ib3gpIHsgY29udGludWU7IH12aXNpYm94ZXMucHVzaCh0aGVib3hlc1tp XSk7IH19fWVsc2V7aWYodGhpcy5wb3NpdGl2ZSl7dmFyIHZpc2lib3ggPSBkYngu Z2V0U2libGluZ0JveCh0YXJnZXRib3gsICdwcmV2aW91c1NpYmxpbmcnKTt9ZWxz ZXt2aXNpYm94ID0gdGFyZ2V0Ym94O319aWYodHlwZW9mIHZpc2lib3hlcyAhPSAn dW5kZWZpbmVkJyl7dmFyIHZpc2lwb3NlcyA9IFtdO2ZvcihpPTA7IGk8dmlzaWJv eGVzLmxlbmd0aDsgaSsrKXt2aXNpcG9zZXMucHVzaCh7J3gnIDogdmlzaWJveGVz W2ldLm9mZnNldExlZnQsJ3knIDogdmlzaWJveGVzW2ldLm9mZnNldFRvcH0pO319 ZWxzZXt2YXIgdmlzaXBvcyA9IHsgJ3gnIDogdmlzaWJveC5vZmZzZXRMZWZ0LCAn eScgOiB2aXNpYm94Lm9mZnNldFRvcCB9O31vcmlnaW5hbHRhcmdldGJveCA9IGRi eC5yZW1vdmVDbGFzcyhvcmlnaW5hbHRhcmdldGJveCwgJ2RieFwtYm94XC10YXJn ZXQnKTt2YXIgcHJlcG9zID0geyAneCcgOiB0aGlzLmJveC5vZmZzZXRMZWZ0LCAn eScgOiB0aGlzLmJveC5vZmZzZXRUb3AgfTtpZih0aGlzLm9yaWVudGF0aW9uID09 ICdmcmVlZm9ybScgJiYgdGhpcy5leGNoYW5nZSA9PSAnc3dhcCcpe3ZhciBuZXh0 ID0gdGFyZ2V0Ym94Lm5leHRTaWJsaW5nO2lmKG5leHQgPT0gdGhpcy5ib3gpe3Rh cmdldGJveC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmJveCwgdGFyZ2V0 Ym94KTt9ZWxzZXt0aGlzLmJveC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0YXJn ZXRib3gsIHRoaXMuYm94KTtuZXh0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRo aXMuYm94LCBuZXh0KTt9fWVsc2V7dGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3Jl KHRoaXMuYm94LCB0YXJnZXRib3gpO310aGlzLnVwZGF0ZUNoaWxkQ2xhc3Nlcygp O3RoaXMuaW5pdGlhbC54ICs9ICh0aGlzLmJveC5vZmZzZXRMZWZ0IC0gcHJlcG9z LngpO3RoaXMuaW5pdGlhbC55ICs9ICh0aGlzLmJveC5vZmZzZXRUb3AgLSBwcmVw b3MueSk7aWYodHlwZW9mIHZpc2lib3hlcyAhPSAndW5kZWZpbmVkJyAmJiB2aXNp Ym94ZXMubGVuZ3RoID4gMCl7Zm9yKGk9MDsgaTx2aXNpYm94ZXMubGVuZ3RoOyBp Kyspe25ldyBkYnhBbmltYXRvcih0aGlzLCB2aXNpYm94ZXNbaV0sIHZpc2lwb3Nl c1tpXSwgdGhpcy5yZXNvbHV0aW9uLCBmYWxzZSwgbnVsbCwgdHJ1ZSk7fX1lbHNl IGlmKHZpc2lib3ggIT0gdGhpcy5ib3gpe25ldyBkYnhBbmltYXRvcih0aGlzLCB2 aXNpYm94LCB2aXNpcG9zLCB0aGlzLnJlc29sdXRpb24sIGZhbHNlLCBudWxsLCB0 cnVlKTt9aWYoIXRoaXMuY29uZmlybSAmJiAhZGJ4LmhpZGUpe25ldyBkYnhBbmlt YXRvcih0aGlzLCB0aGlzLmJveCwgcHJlcG9zLCB0aGlzLnJlc29sdXRpb24sIGZh bHNlLCBudWxsLCB0cnVlKTt9fTtkYnhHcm91cC5wcm90b3R5cGUuZ2V0Q29tcGFz c0RpcmVjdGlvbiA9IGZ1bmN0aW9uKGEsIGIpe3ZhciBjb21wYXNzID0gYS55IDwg Yi55ID8gJ1MnIDogJ04nO2lmKGEueSA9PSBiLnkpe2NvbXBhc3MgPSBhLnggPCBi LnggPyAnRScgOiAnVyc7fWVsc2UgaWYoYS54IDwgYi54KXtjb21wYXNzICs9ICdl Jzt9ZWxzZSBpZihhLnggPiBiLngpe2NvbXBhc3MgKz0gJ3cnO31yZXR1cm4gY29t cGFzczt9O2RieEdyb3VwLnByb3RvdHlwZS5nZXRCbG9ja3NEaWZmZXJlbmNlID0g ZnVuY3Rpb24oYSwgYiwgYm94KXt2YXIgYmxvY2tzID0gW3BhcnNlSW50KE1hdGgu YWJzKGEueCAtIGIueCkgLyBib3gub2Zmc2V0V2lkdGgsIDEwKSxwYXJzZUludChN YXRoLmFicyhhLnkgLSBiLnkpIC8gYm94Lm9mZnNldEhlaWdodCwgMTApXTtibG9j a3Muc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7cmV0dXJu IGJsb2Nrczt9O2RieEdyb3VwLnByb3RvdHlwZS51cGRhdGVEaWFsb2cgPSBmdW5j dGlvbihib3gsIHN0YXRlLCBwb3NpdGlvbiwgZ3JvdXAsIHNvdXJjZSl7aWYodGhp cy5idWZmZXIpe2NsZWFyVGltZW91dCh0aGlzLmJ1ZmZlcik7dGhpcy5idWZmZXIg PSBudWxsO312YXIgc2VsZiA9IHRoaXM7dGhpcy5idWZmZXIgPSBzZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7dmFyIGJveHBvcyA9IHsgJ3gnIDogYm94Lm9mZnNldExlZnQs ICd5JyA6IGJveC5vZmZzZXRUb3AgfTtpZihwb3NpdGlvbil7Ym94cG9zLnggKz0g cG9zaXRpb24ueDtib3hwb3MueSArPSBwb3NpdGlvbi55O31zZWxmLmNsZWFyRGlh bG9nKCk7c2VsZi5kaWFsb2cgPSBzZWxmLmNyZWF0ZUNsb25lKGJveCwgMjk5OTks IGJveHBvcywgJ2RieC1kaWFsb2cnICsgc3RhdGUsIGZhbHNlLCBzb3VyY2UpO3Nl bGYuZGlhbG9nID0gZGJ4LnJlbW92ZUNsYXNzKHNlbGYuZGlhbG9nLCAnZGJ4XC1i b3hcLSh0YXJnZXR8YWN0aXZlfGhvdmVyfGZvY3VzKScpO3NlbGYuZGlhbG9nLnN0 eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7Y2xlYXJUaW1lb3V0KHNlbGYuYnVm ZmVyKTtzZWxmLmJ1ZmZlciA9IG51bGw7fSwgMjApO307ZGJ4R3JvdXAucHJvdG90 eXBlLmNsZWFyRGlhbG9nID0gZnVuY3Rpb24oKXtpZih0aGlzLmRpYWxvZyl7dGhp cy5jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5kaWFsb2cpO3RoaXMuZGlhbG9n ID0gbnVsbDt9fTtkYnhHcm91cC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlv bihvdXRlciwgaW5uZXIpe2lmKGlubmVyID09IG91dGVyKSB7IHJldHVybiB0cnVl OyB9aWYoaW5uZXIgPT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1lbHNlIHsgcmV0 dXJuIHRoaXMuY29udGFpbnMob3V0ZXIsIGlubmVyLnBhcmVudE5vZGUpOyB9fTtk YnhHcm91cC5wcm90b3R5cGUucmVmb2N1cyA9IGZ1bmN0aW9uKHRhcmdldCl7dHJ5 IHsgdGFyZ2V0LmZvY3VzKCk7IH0gY2F0Y2goZXJyKXt9dmFyIGJveCA9IGRieC5n ZXRUYXJnZXQobnVsbCwgJ2RieFwtYm94JywgdGFyZ2V0KTtpZighZGJ4Lmhhc0Ns YXNzKGJveCwgJ2RieC1ib3gtZm9jdXMnKSl7Ym94LmNsYXNzTmFtZSArPSAnIGRi eC1ib3gtZm9jdXMnO319O2Z1bmN0aW9uIGRieEFuaW1hdG9yKGNhbGxlciwgYm94 LCBwb3MsIHJlcywga2JkLCBhbmNob3IsIG1hbnVhbCl7dGhpcy5jYWxsZXIgPSBj YWxsZXI7aWYodGhpcy5jYWxsZXIucmVzb2x1dGlvbiA9PSAwKSB7IHRoaXMuY2Fs bGVyLnJlc29sdXRpb24gPSAxOyB9dGhpcy5ib3ggPSBib3g7dGhpcy50aW1lciA9 IG51bGw7dmFyIGJlZm9yZSA9IHsneCcgOiBwb3MueCwneScgOiBwb3MueX07dmFy IGFmdGVyID0geyd4JyA6IHRoaXMuYm94Lm9mZnNldExlZnQsJ3knIDogdGhpcy5i b3gub2Zmc2V0VG9wfTtpZighKGJlZm9yZS54ID09IGFmdGVyLnggJiYgYmVmb3Jl LnkgPT0gYWZ0ZXIueSkpe2lmKGRieC5ydW5uaW5nID4gdGhpcy5jYWxsZXIuYm94 ZXMubGVuZ3RoIC0gMSkgeyByZXR1cm47IH12YXIgY2xvbmUgPSB0aGlzLmNhbGxl ci5jcmVhdGVDbG9uZSh0aGlzLmJveCwgMjk5OTksIGFyZ3VtZW50c1syXSwgJ2Ri eC1hbmljbG9uZScsIHRydWUsICdhbmltYXRvcicpO2Nsb25lLnN0eWxlLnZpc2li aWxpdHkgPSAndmlzaWJsZSc7dGhpcy5ib3guc3R5bGUudmlzaWJpbGl0eSA9ICdo aWRkZW4nO3ZhciBjaGFuZ2UgPSB7J3gnIDogYWZ0ZXIueCA+IGJlZm9yZS54ID8g YWZ0ZXIueCAtIGJlZm9yZS54IDogMCAtIChiZWZvcmUueCAtIGFmdGVyLngpLCd5 JyA6IGFmdGVyLnkgPiBiZWZvcmUueSA/IGFmdGVyLnkgLSBiZWZvcmUueSA6IDAg LSAoYmVmb3JlLnkgLSBhZnRlci55KX07dGhpcy5hbmltYXRlQ2xvbmUoY2xvbmUs YmVmb3JlLGNoYW5nZSxyZXMsa2JkLGFuY2hvcixtYW51YWwpO319O2RieEFuaW1h dG9yLnByb3RvdHlwZS5hbmltYXRlQ2xvbmUgPSBmdW5jdGlvbihjbG9uZSwgY3Vy cmVudCwgY2hhbmdlLCByZXMsIGtiZCwgYW5jaG9yLCBtYW51YWwpe3ZhciBzZWxm ID0gdGhpczt2YXIgY291bnQgPSAwO2RieC5ydW5uaW5nICsrO3RoaXMudGltZXIg PSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtjb3VudCArKztjdXJyZW50 LnggKz0gY2hhbmdlLnggLyByZXM7Y3VycmVudC55ICs9IGNoYW5nZS55IC8gcmVz O2Nsb25lLnN0eWxlLmxlZnQgPSBwYXJzZUludChjdXJyZW50LngsIDEwKSArICdw eCc7Y2xvbmUuc3R5bGUudG9wID0gcGFyc2VJbnQoY3VycmVudC55LCAxMCkgKyAn cHgnO2lmKGNvdW50ID09IHJlcyl7d2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi50 aW1lcik7c2VsZi50aW1lciA9IG51bGw7ZGJ4LnJ1bm5pbmcgLS07c2VsZi5jYWxs ZXIuY29udGFpbmVyLnJlbW92ZUNoaWxkKGNsb25lKTtzZWxmLmJveC5zdHlsZS52 aXNpYmlsaXR5ID0gJ3Zpc2libGUnO2lmKHNlbGYuYm94LmNsYXNzTmFtZS5pbmRl eE9mKCdkYnhpZCcpICE9IC0xKXtzZWxmLmJveCA9IGRieC5yZW1vdmVDbGFzcyhz ZWxmLmJveCwgJ2RieFwtc3VmZnVzaW9uLWRpc2NhcmRzJyk7fXNlbGYuY2FsbGVy LmJveGVzW2RieC5nZXRJRChzZWxmLmJveCldID0gc2VsZi5ib3g7aWYoa2JkICYm IG1hbnVhbCl7aWYoYW5jaG9yICYmIGFuY2hvci5wYXJlbnROb2RlLnN0eWxlLnZp c2liaWxpdHkgIT0gJ2hpZGRlbicpe3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNl bGYuY2FsbGVyLnJlZm9jdXMoYW5jaG9yKTsgfSwgMCk7fWVsc2UgaWYoc2VsZi5j YWxsZXIudG9nZ2xlcyl7dmFyIGJ1dHRvbiA9IHNlbGYuY2FsbGVyLmJ1dHRvbnNb ZGJ4LmdldElEKHNlbGYuYm94KV07aWYoYnV0dG9uICYmIHR5cGVvZiBidXR0b24u aXNhY3RpdmUgIT0gJ3VuZGVmaW5lZCcpe3NlbGYuY2FsbGVyLnJlZm9jdXMoYnV0 dG9uKTt9fWVsc2V7aWYodHlwZW9mIHNlbGYuYm94LmZvY3VzID09ICdmdW5jdGlv bicpe3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNlbGYuY2FsbGVyLnJlZm9jdXMo c2VsZi5ib3gpOyB9LCAwKTt9fX1pZih0eXBlb2YgZGJ4Lm9uYWZ0ZXJhbmltYXRl ID09ICdmdW5jdGlvbicpe3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRieC5jb21w aWxlQW5kRGlzcGF0Y2hPbkFmdGVyQW5pbWF0ZShzZWxmLmJveCwgc2VsZi5jYWxs ZXIpIH0sIDApO319aWYodHlwZW9mIGRieC5vbmFuaW1hdGUgPT0gJ2Z1bmN0aW9u JyAmJiBzZWxmLmNhbGxlci5yZXNvbHV0aW9uID4gMSl7ZGJ4LmNvbXBpbGVBbmRE aXNwYXRjaE9uQW5pbWF0ZShzZWxmLmJveCwgY2xvbmUsIHNlbGYuY2FsbGVyLCBj b3VudCwgcmVzKX19LCAyMCk7fTtpZih0eXBlb2Ygd2luZG93LmF0dGFjaEV2ZW50 ICE9ICd1bmRlZmluZWQnKXt3aW5kb3cuYXR0YWNoRXZlbnQoJ29udW5sb2FkJywg ZnVuY3Rpb24oKXt2YXIgZXYgPSBbJ21vdXNlZG93bicsICdtb3VzZW1vdmUnLCAn bW91c2V1cCcsICdtb3VzZW91dCcsICdjbGljaycsICdrZXlkb3duJywgJ2tleXVw JywgJ2ZvY3VzJywgJ2JsdXInLCAnc2VsZWN0c3RhcnQnLCAnc3RhdGVjaGFuZ2Un LCAnYm94ZHJhZycsICdib3hvcGVuJywgJ2JveGNsb3NlJywgJ3J1bGV0ZXN0Jywg J2FmdGVyYW5pbWF0ZScsICdiZWZvcmVzdGF0ZWNoYW5nZScsICdhbmltYXRlJ107 dmFyIGVsID0gZXYubGVuZ3RoO3ZhciBkbCA9IGRvY3VtZW50LmFsbC5sZW5ndGg7 Zm9yKHZhciBpPTA7IGk8ZGw7IGkrKyl7Zm9yKHZhciBqPTA7IGo8ZWw7IGorKyl7 ZG9jdW1lbnQuYWxsW2ldWydvbicgKyBldltqXV0gPSBudWxsO319fSk7fQ== ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=logo.png Content-Type: image/png; name=logo.png Content-Location: http://www.ogalik.ee/wp-content/uploads/2011/08/logo.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAFcAAAAgEAYAAAA3fzhWAAAABmJLR0T///////8J WPfcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAACXZwQWcAAABXAAAAIACR3aHkAAAr uklEQVR42u28d1hUybrv/9YKnQM5ZwElCyKKCVFU1MExKwaMo6JjlnFMI4o6xtkq Zseso6OYZkRRUAQBs6AISBDJqUnddO61Vt0/Zvbe93f2Pc8+e//Ove7z7Pn8U0/X WlVd7/v9rnpWr65aAP8kMZ4xnhgDdFvbbS0GACtkhbSXALo/6P7gfdT/91ycASDf Id/BNXoMEb8Qv2ASdvSwnG45XR2Vft9OaaesO/Uk3N7H3qchLitBYpQYK3WHHxB9 ib4fmwdkiWkxvT8elVPPqedBz//aZ7cx3cZgDEAmkomKnr/VPfX7razcCACrYfUr NQBJk/SRT/9slH/wrwrxjzbYvHfzXowBXu99vRcAnWQeM49hkfNy03em7+i08GWs B+vhuof/JSBAEALAW8hbCENlO5kXzAs49pWHk7WTdcekiAe2m20337dnR/Km8aYd kFZWCqcLp/+U1rHBbZTbKL2w/yr74fbD6V3fOBjqDHWBg/vNQDSiaytQo3SZdFnU dgCzDLMMAKIaaKAJW5+vyEay0Xru+MO8al61ucPQ+bAP9sEdiwfEPeJevBsAkECe 3AywNWFrwudO+h98BjDGGGMYGf4h/AN7wr/II8UjxaD88UT3zu6dn3afneB51fPq 1nGuU8EarAHQEN5B3kGuq29BQGtAq3ZU+q6w2rDam+dfM/IUeUqQ9kovJEIigCMk cYu4RV0+mOKv8FfsdnnUs4+hj6EkpNbDvqd9z4cHfipBI9HI2OWuWRZeFl6iCmgU 9hL2wnhIotlus93MnJ8D7R7aPWwvfnLIKtkquf5J9ktBqCC0dN/RNWgIGpL3bR/z 30aPwgAALvQGIOwJ+7ulnzubf/DP8l+ecf3T/dMxBuh1u9dtAJtU83fm73QrZma6 HHY5XODZVmrTbtP+7oR0dteRriMPTvXWAQtsUJ5lkzxPnsd9OehPtmAL7S+trNQL 1QtfmMgudYY640O4qSeKRtHobvERbiw3lom9PaFrZdfKitrboaKPoo/aOTo7i7MW Z9Hi8KciJEIu+6NBqVPqtqy032k21GwotzBG5jTeabzKwpMTXRddf3pYtgylobSj g7m1ogeiB9l9fG2lI6UjzW8nrEHb0faSgxNuAwDwdtnruEau0XcBpJjZmdl9bhH+ 4B/n7xrX57LPZYwB3g97PwyAeN4R0RFhGDUyojiuOO61xGjzovFF47zTHy61N7Y3 treZGfhivtgmwV8E7dDu3MfmpONpx9OmUT04cYG4oPOU5JqJMTGtE8GZk3Ny49VK MdqP9hPpjyzoaDoaIEeqvKa8ZvPz/TH8TfxN5Lga1uKyxWV6tcRdNlc2VxgzaKpg lmCWqKJPvl+wX7C+t5eRd5l3uYqSadTH1cfvrCAT23a27dx7qb2uy6rLalVZxZ+k jJS5vpLX3dHS0ZKcsu5H0U7RTmvDwrukP+m/pZ+8gm/kGwEgbmbUzKgv/7iJ+B/D f2rcse5j3TEGKIktiYVxAP0N/Q0AIQloCprS3hHiozujO3NQXWmtzdBmlHShKmof ta915Lu7To1OjTEpzqvQErSECxPwzDrNOtX98JfCKGGUYZ/An4gkIqmVnAf2xb7w srYbl8qlcscb09h8Nh/AoO462XUyJlh1RDlGOcbqmWEQnU/nEz9wPrxiXrHexYnH DeeGd80MusbkM/la0nY7l86ltxwTCgwCg+DjOe1YfBffNQR/XMI0MA1dc9OvaSu0 FT/V3llnudNyZ1m/jv3mh8wPqVcPfA6zYXZlXFCAdrN2MwDf4Xz6+fRbuz+3HH/w X+U/NW7m9sztgAHMz5mfg5se8y0/WX4y9p4sDw4IDigfrvjON9Y3NkYddjTYFGy6 cyE0TafWqSU9X06y/sH6B+enwm3mAeYBHvtd1Gwmm6lRE1vIHDKHWE0ViE1ik+0z ai8xihglXqeLxY/wI6w1pfZs7dmqfAcgdBW6Oh6CLQ4SBwl1UN/MG8kbadjNJXLx XHzDYXon4iN+VaokS/RQ9FCdSvqSU8gpxjHUO+4cd4493LUTRCDCNQVN1HxqPtHv 0bqOUx2nipNuT9aF6cKeTPtlvTBWGKuxM5eQI8gR1PFe/jpLnSWA1LObrpvOxRNG /Dl+s3Fm4zAGIL4lvi2rBoByKL+/FgAGwICvyz+3bH9A/ceKWfdm3cMYIBdyAcCs Z6d1p7U2Z/rJ8nXl615WtaTYXrK9xN3zWyIplBRa9Leh+L35vdF1xQZxhjgj6Hqw ivQmvbskXWJXk6sp6E2vM8QIYkRxXU2O2FXs6nLcVGwuNZf6WMkwnUanhceY3zbk GfLSd4HzG3gDvDhoknWTdbOJ9huri9JFdXrZnTR0Gjob3FhGO147vthZPQQIICRS 1W7eGt4a7WDtcb4b341miRayhqwRWuvWQBIkwdKmRuup1lPnv9M4MjVMzZqFvK0t Di0Oc44/OG3haeHpGBRcTFVT1RY+traGMYYxpK94DmEiTNi/bR8AAHzEwHvFewVA XMUqrKIi7L1hJ+xUvWkPBAUoNpzVEZAACZ/OAsBZOJs6+3PL+O/H38y4Z6PPRgNA /9a7rXeZrwYtF24Sbio5KnhXl1aXtnpFnaBya+VWhYtlxoe6D3U/vi4al7U5a/OE zrf+mp2anQUnbZ8q7ynvFSq7vvB44/HGrY9fR/VX1V+lmjXvUjurnWu2fPza4bnD c9fT0o9ePC9ewt1RU/n9+f1TLUJ3WC63XM7rDP/J9r7tfSI59p6AElB1C2U6RZAi KG+n8pqql6pXSVTzC3Ybu+3jgE+DBaMFo40zG7+VTJRMlH1CmwWNgka3QYIYLMAC agaTrnZVu06/L+mN7+A7VlWLNhhmG2YnVQ68W3+4/vCD8IzFTDaTnZVbmY8kSMLp heK2vLY8dRp6CQCAMUDHjo4dEGk1VtZX1ldesiZHuFa4Nvi71algDdal79x+hbNw lu0H59F8NP9zi/jvyF+MWzO9ZjrGALIGWQOA3SY6gA5omzJwHl6BVxy+UU536bp0 ZQrhLfoEfYIvaz9nxEbs8Z1kCmPFWPUqIk9+ID4Qlh7kjw3JDcnv9+vK+Yn8RLWa neQ4wnFE9MI+tk8jn0ZefZZ9SJOkSSo8V/cn3yDfIFjpBwO2Ddjm9nLbGA+9h76u T2Jmt5huMW9Ib2n9gvoFV6yUG6tOV53+RVdzn4lkIrV3a/YZvjN817SqOFqdpE5S zHhaKzKKjMJOfYpMKVP2xNbOPAeeQ8BS81uq1arVezSa4KDkoOTW0tqHoVGhUT32 TouTR8ojk5ImYFbBKlYstvie68X16uNGIYwwIsrQn58wNMnfyt9yvfs225fYl4je BdaZHTY7LHSe2CF0FjqzjvM306Pp0QIbixSkQzoA+Fb0leirzy3mvxN/Ma7zReeL ANDPa5vXNmbCgJvmtea1hcPU3VtxK77mavgS4iBObVf3UhIqCW00v69yL3Qv/LLB w8YzzTNtc37Pobgdt3NPa7rXsDVs9o6Pt4qoIupsexbllOqUKk5x6MeT8WT9Xlns ST+YfjAp9saDl8Evg7fOe7u1M6kzadckzTjOjXNL3NmkK+tf1v+bDaWvC5YVLDu2 sipBo9Vo66HyOgpEgSj35SMkRVKTzyf27bS305JLHkQjF+RSveztfOdW59YeN20m W/lZ+a1aEHkckiHZvLvZq4qsiqw9XYUvrA3WhpYIpspnhM8I+fSgT44SR8mQbyYO FS0QLZj5dd/dxi3GLXg0pYFIiGTCzFLMD5sfZgYM+YQ8keenM+LZfCFfWL1dOkyQ IEhQTo76EXzBlyTDDvMxH6OZfEtYA2sAgIZcyC0pB0AyJMuXAlArqZUNlp9b5n99 eIG8QIwB6Of0cxMDQI+lx6q6/+fnU/gVfoUxQFBsUCyAdGTInZA7Kq+wuPLM8sz7 3grfsk1lm9SlzJ/ITDKTMH5UlZ8oP5GQXULYD7Af0POMeJupzlSnrRdoFVcVV0v9 WmwNNw03tRsJ3tsnb59UfiifRngT3lQekdfTuqf1op9Hi3RlurINybj/p8JPhQkz Hrh/cv/knnPBMghEIAJ3fhXMhtkA0IzqUT0KVI8iDhAHCJd39YhDHFr26gs0Fo0l ByjFtcG1wb/mMEOka6RrUPXVae6D3QdPrLA57XXf677vLyP/xM3gZvS3pg61Jbcl 0xMUkapYVSy+II1AiSixdrgwlviV+PXewy5ALagl65HDIcMxw7GumU4nbXfZ7tIX 9ZgsuSm5qTH0EDclNiVeQa1C6dfSr53NJX7S19LXTjkuQ7UGrUG2u5+APcYeo4bl jxFwAs50oVkGw2CYNFTagFVYBSflQ5k/MX/KPVK3BQDg7h0YSlwmLn9cAsDFcrFL L3xuu3x+UDSKxhiAukJdASC+MWqMGoqUBUMv6CVJ6uqAW3ALJrOL/2M7AoWiUACA 2pW1K/He8HOvlr1aVnPf4XKlZ6Vn2k5tf7QSrYQtrQqIgAj0urm3ltEy6letNz4+ +/gsp+OForaztvONqOlrQ62hVneUyQMJSFBWxSc6jA6DJyXKT02fmgqKsxybVjat rPeu9/K/73/f4kqP24JmQbPv/tI1xCxiFoRcH0wMJYYSWTcTyD3kHlKcMpUgCZI4 +vMkspAsJEuzikRuIjeRS3MSmo/mw17uPDmdnI6GauYU7y3e+8vix71ex72O2z3j 0s7O2523z4V8inB67fT6+YOw117uXu61XlFfETeJm53FtMhUZCrSWKIYjZvGrTiV bVLnqfOeHBL9gvagPT4GN76NrY0t2A5W0M/oZx3zzeeqt6q35vfTZIp8RD71G5q7 S2ultbJvUCm9gl5hNc97NHeGOyP+YHOjS9YlA0Bcz3U91wl/dfjZ5bnLc7sLayxJ KSntdX2GLwAA62upIWKJ2CVTAEAAgmu+AHQIHfK5zfM5QK/QK4wBIBiCAaRRuo26 jYxu4WBWyAortq2cy8aysRcHWbr/fnrGf2xPCNcK1wLwveQF8oKug0H9iUQiMcOj Xtd6t/Vu6UlmGGFJWJJs61teG6+NV6T35GfwM4irejmxglgBUNoLq7EaINOFUBAK 7s7Dyf2s+ln5Tnrv7K/0V+pbnDMsr1tez3kyoqwMysDiQefxwr2Fe/eUPO00nTOd e7nYbDwIQEAMbK4ifiR+JG6+QVAHddBcgKl4Kp6Kr2SMdcY6Y11XvOq46rjqOPY1 0kba1BdAMlUylX+Wa6EUlILa2Eg2tTe1v797r0chKkSHnl2NKXlV8mp5aY6w0rfS d07++8j6ovqiw4ENv0oOSg5qookUSk/pRV8bHbEMy8RB1d+bx5jHJB2x8rCJtYk1 Ef7T9JP0k+pOCBZSPageM45076Ex15gHNmh3CH8Q/iAeqEniXeBdcLNxv4W/x9+7 jnfm8XbydkI5fd6zy7PrxYz6eKvJVpPrJTXxdlfsrggTFy8QxAnigjfsWMjKWNnL SZHzQA96iuX/RLaT7XwVgF2pXSm//+e20/99iLXEWowBcCgOBRCuwlvwFqZmdixh IAwfL44+T3lRXiff1riAEITzTFZ3iQgigogQF/7e3PsvHYk+iT5h7LsywDfAt+LE EX/H8Y7je5Ys6/fb0SlV4AROADZjAX77tQ0A8GkTwNQ7U+9gTPwwMHRgKMa2SUGi IBH3eISx+9DuQ7uo+fGOExwn1Oo2fe3k7+T/E3/sRwkhIbrJh51Fg9AggPmnieHE cCIghiFXkCvIdeaa39dA0FQIFUKFANA36Zv0TQDKn/Kn/AGiV0SviF7xt4l4o3qj yu8GUslxyXHJPdqcLCaLySGOg9B0NB1g8A5wB3eAWUoJISEceq+377m95/blDndM TiucVsSdTfeznGA54fy7Yw69LHpZqKou9RySPSQ73+NpnA1rw47Z+Kva9pztuXnj 0qu9Kr0qs0KeHg1cErikuK1yuZPQSfjz5Y8H+UP5Q0fvXnpaoBVoIdPs93Vx5LHA PYF7NsRHNYcEhAS8D36Z5RDsEFze92OcZK1kbU5DZhZVSBWe2j/Ki8/wGWojOeGb D998GLseeM7gDBgDyBfIF2AMIJFL5BgD+K3yW/Xn/P9PpNe4XuP+PH6MKWupUqpk 6mLf8eJ4caX6i6OpAqpg9oa1FLGGWEP3XWFF7CX2QuooHeFNeKPLZht/76bPn/uj +Ca+CSP/DzJ7mX1HK5leHV4dbvuQf908zDxs1nf6ELsUu5T1h636U8FUMIDPXVbG yuzn2VvmP8p/pCkElfl08+nGUqur7HH2eOtJs2U4ESe+M3XU65P1ySev5uzrnNQ5 6b6B158r58qBJ9mBnqFnRGDpOqKD6CAayj05Z86Za1Hd+308JuYN84Z5AwDjYByM +2vgae/T3qe9/9uEzLs279rc9dClXqheqB5pAkmjpFHS2FCqG6AboLvV6kHMIeYQ jm9ZjaXGsmGMbH1RW1HbyV7F+3i5vFzbktAKvx5+Pb6wcd5u9oPZD23WHgvazdvN mwZLs9SX1ZdbDjRU6kw60y9dhSR3kDv4YaPgshlrxiYwke8lhySH5DEO7Z1lnWVW z71m6AfpB9HzzWgAABMo73Xb1m1b9wuNk3WNukbeae0whVAhrI52Gk0eIA/cPsi3 IveSe3PPe+zkQrgQvM4256ThpOFxaWMBdZO6CYBXKccpx3FV/Dnid+J3hJvpblFg UeCHWO4cdZW6qi0AoL+gvyAuAohuim7y9wC0TW+bjtDntuffYhZtFo0xwKsbr24A AM2z59mDa+RoQ7ohva5k7FS0H+0/8PDZeLaFbTm7HefCUBhKZOi7qNnU7G57asdz 57hzeJKmCKIhuhKg5i/GFaQL0jvvcl+5XnS9KEnofkFgJbDa0OZ/gV5OL7cLrY9T TFBMEE/Wdko0Ek35cSqYTCKT6nu05umb9E2fer/biQBB4bbK3rWnak+dGqzN0X3Q fVDbWwOTxqRxTdbu8AyeEW7tZ9BZdBbOvPsF9UP9UEnTAlmaLE2Wpk1rP9V+qv0U /j7eL94v3u8fT0z+vPx5+fMAAjwDPAM8ASpjKmMqY3Azt4HbwG0wnGWj2Ch2jOEs hSlMn+/sYNPYNG2Yzl13SXfp05qGqtILpRfW9Lf+wn6I/ZBR60dZ897x3vX0iZon vyu/G9vTcZzxlvEW+03KdsUpxancmKYtnr09e4+rkD609rT27MeM+aGzorOiW7pn H0O+Id86zeYCiEDUEF7j1e15t+f9SjUuFaIKkfCStoWcS87VW4GX0dvoXSBlfjDZ m+zfOJo9QmEojHxv0dSZ3ZmtbG9223Jjyw0ATnsq/1Q+4xXTWX+0/mjXRQdXAADe 6KfN3AHuAKOo9Td9Y/pGuqdN3VbVVvVdvElHxBAxyqUA4Au+Ik8AiYXEgrgCQD+m HxNtABAJkXgnALGZ2IyiATCNaRAC4M14MwAA3oa3sUUAnISTqJMAOms7a81+/m9w bhVUsQIA+zD7MFLvYS11lDoqto5v0TpoHS6te8OZwkxhx5IMvdFcNBegayVdT9ef ktCDuVncrIGvhz+EJEh6sfvjMACAaWDa83uvjci6n3W/9Red6xxOOZzSLJ5jQa4h 13S89Yxn09g0w8Sac7qluqXKHxQXjciIFAY2pbW1tbVcYTLqnumeqeK1p9hsNhtU KgUxn5iPPhkHwBfwBdqm+5KgCIoIbxWhHWgH2l5vLTITmYnMlAnKfGW+Mp+Ty4wy o8wIoI5UR6ojAbhcLpfL/e+/4kVNoiZREwCzldnKbAXAL/FLXItWQQmUQC4v1NRq ajW1W6ahZtQMC8PEsmmyaV4Dhww1e272fOg2D2vlLeWt+rJL/p0WnRaE7OmAUO9Q 7xlc1M+2B20Pev2ymirNKs3KLzC510nqJCfNkyz0qfrUvFm/eq1ftH5R3SXbjoqr FVdJ16Mh+aZ80+uTPf3rl9Qv2VdWYKd/on/yuM85Fd1Jd9Jdj9roBrqBvtea2dXe 1a7wxa4Dpg+Y3pI4cHTFmYozPMPyxXqenieYZRFp/Nn4s0negrnZ3GyjS34qJjHJ jryfTOaQObZOjh6wClbxHignE4eIQ0R1s5iXzEuGu+wy4zbjNoD2viQmMYD5VHIi ORGATIN6qAeAUuyLfQFAyB3jjmndmzWqUlWpeGzXPGIOMYe4BcBVcVVc1X897wN6 D+iNMcDb5W+XA7ifR1bIShkTfxCuwbV7a9XnNTM1M+ftqV+Ns3G2XalksiBKELUv mhgiYARML4Vfks5CZ5HVVbxLf0F/Ib4ihY8eoAdaVdNULp/L5+qNdyjFacXpHTPa nil6KHoAZBWAAATgrn0I4RAOQFqCCEQQwZ1Bb9FbkBn3wWE4jObpPdBNdJNY1SQl CIKAr+rnIRfkgra3PkatqBW5dTXwn/Of828ZpYKdgp2Cnewp1SzVLNUskAu2CbYJ tgGoeCqeivffb9T/iNZOa6f93xYu8mk+zafxD8LTwtPCHw3QdabrTFdI0xnsg31w VPZM5S/KX8qPN4dqJ2on1mK/pbAO1oEV1+ht6W15vNnHnH+Uf3To7oi57HJ2eWcx KMWEmDAbJLsoCBQE2pz2XGTMNGYCSEjuGHfMqIEt9Ex6prAHTKQ2UBugHdrJBDKB rtPz4TpcR6sac/gKvoI3WRmoClAFqDHORwghUQPUwA7YARmFvfyO+B05sfjNJMaM MRvcOGuJMk4Z1+BjO1Gfp897VwxGOoVOEffolBKHicMT8mJuMUuYJbhY/CXzgnnB XNF9YYowRbRYdklcprpMNdaltGmztdneQ0flKAcrB+MIa5Z7yb1UhoOeLWPL6s9p jnMnuBOVxUdnwQgYAeOyh/9mWK7sL/Pn30HZoezAGMBrmdcyAJmNtEvapX0We6Qr vCs880pFhTZfmx//ob2cjCfjXbs7jaW8Ke/jzQFqLpALNB+LVho2GTYdnZD51DjJ OOnQUngNvaG3JrfHA9gLe6Gl8w0AAFBGoMQDxQNFjH6Xrl3Xri8t1CMP5IECWhSw ATbAL9QleA/voURfRhgIA3Ffn4rDcBi+pK/GFKYwpQki5ISccDH0EgeJg8SBbEvn os5FnYvgC0JNqAk1gEaikWgkfw3MtNG00bTx74X/fw+DyWAymAAMMw0zDbMAqIPU QeogN4cdzA5mm9uLkBtyQ0FvROxidrHBr/YDWofWwXjZVyRN0pmdxmn8On6dY21R i5an5dG7AoYKXYWuchfLVJGnyHOAa8j9rnVd69TODn1ZiqWUJapSejW9WiiCfF4g LxC04IQKUAFeglOBBhrSudeoHtXDY2w9ft74eePPA3R6dnp2nAPlo3WP1mUyWtpf 56+T96wfW3G34q5xHeGt2q3aXXBLINQO0Q7ZucPgCr7gq9dSz+0l9hKVzavjtAft MebJxOmGBENCYyilVjNq5ubA1ybNPc29l4+FhGOpY+nOY8pFaAKaID4Qaqux19g/ DukM057SnrpPFPqZRphGvNkgW0QUE8WEi220KFIUKYpsYtSZ6kx1Jvb6e/mVm8vN AQACagNquZKB9u2X2y9XLnPbr3PTuS07VLKIWEgstHlrO09+X37/6IdgzBEcQS3T ExpOw61U5iTrsA5ntJMlUAZlKBrPRrkoF7W2fEMH08F0uP6D4ZXhlQFARjgvc17m 8j33UuQochSFtg8Xx4pjxQs/PKY9aA/aq2gB7Uf70X4Ve4NkQbIgWW0D08K0MC2K E+g8Oo/Oa5eg3qg36s0mmZaalpqWQrSTl5OXkxeAKd4Ub4r/y46Jf1mYZcwyZtlf Pu4lKZIiNYY8Sb2kXjqs3k6O5Mj8TplLib5Ef9aqzpilzlKPKn+kK88oz9i6IDfJ lGfKe3+s44YtbUsHe/baYVVtVZ3YOjk6/VD6ISrN7Rj7ln0LWmIbraf18BhKyZHk SHQRtiMZksEuWMzL4+XxnkMUPZ2efmU5QOHLwpeHOGAAAH7ONX47/M7wO2G7mvvK nGROAlr3Hlkja1M84YBjcawpVl9tXGRc1PlV3UW7crvywqll162HWw/X9Cfc4Gf4 uS5Lfkh/S3/rzmBhdX1NfY2c6HVFIVPISH+/fXpCT9xcqj2qDFQG7hrVHqz9QvvF 3RiJM3eGO9PcYD0Ht+E27CWo1Y7SjlJnounDrg27hjFAv4n9JmIM0Leubx3GAH6O fo5YA2DH2DHYC8DH0ccRwIy2qLaoVpYNO83kMrk3u9eHsSlsSm2hOM420TZx02Lz 03yKT8knwWPtM+2zlYdzHI0/Gn/MGCufC/EQT7zW6FATaiKe5MSjaWgamvhhQsDF gIsBF4zX/kZAwQ7BDsEOAOFK4UrhSgBeNC+aFw3AO8k7yTv52x4vswwA6RTpFOmU z223/3fwM/gZ/BMAsByWw/foLDGNmAbt1kN/OzqcL+0u7e5yYIe593zv+YuodMY3 xjfm5oCcZL8kv6SG8XcCxhSOKWx8+PqLsAlhE369V//IirAihh++bkUSJAHQ/43c We4MQBVHz4qepR2MzISBwsDS8yIKAOBSEvx64f2F981zh+0c1jSsqTK1gHM84Hhg d78yE3mCPGEWuHn9b+NwN/2056c9v0Iv8xnhM8KrCp7z3fLc8n5NanghCBIETQq5 +9opzinumcXD7p5jPcfmBz+pEp8RnwmoP/YTmoFmABxcSZAEibSzwikexaOE3hz5 gfwAwHcD+O0xaNGCogUYo9FLTi45iTFxPkQcIsZYqvGs96zH2PqB47eO32Lsv3TA xAETObPZNV53ve6+eHo+hFfOK/eIWeYqmySbZL91+vZISaSkctoP82wW2CzYErqq EbGIBVjYRBAEARBzjjhLnCV+cnDiPec95z0nR/1ZB/l38u/k3/1Vl78sa9Sv16/X r/8/KJcGaZAGYAQjGD+3iz4DhihDlGEBAFqKlqKleLasSlYl/6p1lipMFabU5Nap pWppjbjx5/Jvyr85FvoxXPZQ9vAh7pHrLnWXzlvoaaOeqZ7Z547gHi+WF0vzKT/R GtGa7r1E01v7tPb5GMx/yhawBcs+8se092nvI8zskWU90Xqi1cXhh1tutNywTbk0 g35MP2bzwZ+/hb8F3qM9lDflzcOkGDkgB2kxcwMAoBO0riEhISE9hXxj5uDMwdR8 4wKRUCS0uo/2S3+S/hQ3w8Ngfdv6tvNS/VBuHbeueSn9JbqP7veON98PKZBStOna CZgCU3B1TjGQQMJERYRrtms2N9vHQrlPuc9oEVwyOHNwpq7Vagj7Nfs1vEYlbB6b Z3J3XAO7YJchjV0Ix+E48ULs3NbS1kJ+7bRE06JpeS1scjdmGbMqf2V68Nby1jr6 VEa2RbRFUBfd3xm2GLZEpEe5Et8T32/2eqdH69C66pXZ8+SsnD07reEsxVHcqKMw QzNHMydjDoByq3KrcutfdaH+WUH/3cDJOBknA7D72H3sPnyOW82txmLNObKWrCXV JY9QP9QPbrR+oyxXlpfHlVkUnSo6lRja46V1X+u+fRKVXvYqe9VIqz7FEkJCRCV4 ppmtNls9bfuMBpSAEhz6DpVqeVqezsKbZ9Np0/nRjg5S1ahqTr/Ma2kJaAlY2kMk 4l/jX7Ndiy/y2/htplFsNZFMJGvi2N+WtMeDO+yEncgRp/DUPDV4QITggOCAYSxx Qdpd2r3oF9N59hZ7q2O+qkDcQ9wjaJG3lXWgdeAotXe6IcAQ0GKjtOMsOcs7PgqO OEOcISTsE3QRXWxvFykMLYaW8sXi/oAAvTA032CXsksVzxiOekO96drRXMKd5E4W NhtCmd3M7qYB7A8Cb4H3/Ib+fTUFmgJ3r/4kzIAZ3tmvF6md1c5lgz5GqVVq1ZG+ 7EmzJLOk4JVBEdIb0hvjpw19pCnSFNmywj1aT63nyqfJWbpwXXhg3wpwfuL85N4t APUZ9ZlR/5sefxj3H6RrddfqrtUAZAAZQAYAUMVUMZXLDIEtsAWgsYw1skbs3j7d 5GHy0FtWqRp+bPgxCxpndjh1OBWy9RGW0ZbRA8/5Kh1+cfglxszxutxZ7izO7H6S 9qF9mlZJLJpCmkIuFZZzqjeqN/eKeoQXXyi+MElAS8EVXO0+EktQC2qhDcQ8NpVN FdRQXWAJlgBoLGfNWeNXIKQ30BvAGboR74h3Ci1X1fm88/nls23Z6gnqCRayNnOf Zz7Pku65rbffa7/XTmX/uiunK2d41ODrrfxWflb9SyELLHQ5djrXHqk9YpVaKGNj 2VhIZd9zh7hDsN1tI2RDNgBhDnfgDoCpCVIhFUCwCNOYhqfGAt193f30cbW1lqcs T220pOzb5rXN20KEnNbd0N0ozE4/WDmwcuCOQeXWvHZeu3jy1WlWX1l9NfHlcIH1 COsRcVf6P2nVteqkjGgXtYnadKNgTw/SjDSzOfYxjVpKLSVHselMMpPMlvxh3H8a tpAtZAsB2BHsCHYEAC+Ll8XLAm8swzLukwGoFdQK6ljdcOyJPfH5Tj99nj6vnazq XddY13gbArzo1/TrB+6uFRY6C10vrdt3Ukuppbet78fWDa0bnt4j7c0MZoYVEYNu Vc+tnhtuMlvFO8A7oEulV8gL5YWSIcQZcZI4SZqJLFWgAjjJ1VWiSgQaiGBlrAxs 4RgRToSzxXi9VqvV6oYoE5h5zLy8mJwS9jH7+GO9SWY+2Hxw4MihY50WOC3w6Tv6 ldpebb9M/GSHvlHfuB3uJ+GteCsAm8jt4nahs60HwRM8YYZxO6hBDQV6mhhHjCNc TRL4Gr6Gr9m+qA21AV/vWXG24mw2xT/jvcp7Vc73wkEuCS4JAwqnmLe7truG39v0 CGIgZondlRStm9Zt+vKiTU3Tmqad629aZJVplVmzUk0L9gn2jVsUnK95rXkt2LHw dN35uvNXS3dNg62wFQa36AEAoATc/+EXgvzB/xljhDHCGAFglWyVbJUMgGNwDPbC E5irzFUmt+sm1Y/qR88sGUEuI5eRwgfXmBqmRnfsXmPz6ObROXT660pBpeDc4oyH quuq6+VTPqS7eLt40zM/YqPcKK+q4tzVH9Qfyq+QT8TzxfPNToktrMZYjZn/JugJ FUFFbE100d1+cvuJ1YK+RzU3NTeRUOQhGSYZJo9Fr3l6nj5gtMGSece8s96bv8xk b7I3nsg+Ldoh2kEOU99yfuL8xPytwwD36+7XR32K3yJJlCRmfDXYjVAQijPruFxM YhLb18QR+4n9xP6iPTgUh+LQinAynAwnw6tW03vpvfTe2ttMBpPBnld8yTgxTprT jaPLncudv6tOHaihNNRe0f2d1hXWFY8nuIfKZ8pnqqn1a2RPZE9SVi3+WvRW9Dan U3pLs1Cz0DwxR608oDxwUPigN7bAFolMo4Kr5+p/Xuu8kRvFjcJuAtdRN0fdHHUT 4F/w3+1/CwaiFtSCOshwiIVYiBZLoAVa8Hy7uURPoifhJ7MkD5GH+JP0z4WThZPt YsOfChYJFtlNGX1X4Cfws21yciYXkgudahQLYCEsdIv8db/LSpeVEweE2UpsJDaf unX3NTQaGpvWuTXWFNUUddq3BDKPmcfMriOWDlYOVl9uDkuRb5RvrF7Rdz7zA/ND g6vVl8YKYwX5EyNVZCuy9Z45Z6pRNbr2bs36rvFd42/z6gKIV8Qrcgc+zE5np7PT Acg6so6sAyA2EhuJjQBQB3VQB8BEM9FMAvRD6SgdLxD/yn3gPgAEKUUzRTOtogY2 mS82Xxxm0y1EHiWP+qLIwVs9Rj3G/yGbZjxiPOLsZWL0PfQ9avK0Y/Vt+rZXecpK 8hn5rHDqQwvjU+PTn70ffDItNS3V1Wvlfxj3/xFUIpVIJQIw45nxzHgAIo/II/IA gq4GXQ26CpDvmO+Y70g4UzeoG1QpcYE7yh1lnQU1eAPegK/3mIQf48cAwSrkh/wA XB+hFtRCdCOWCmYLZsumfdgkdZe6u4aqXJmZzEzGrP95sj/Zny4PeYnlWI4aNWOJ dqIddPd+dHzn+G7QILVOUaIoeb83eLYhzhDX6h1UiqtxNb5JizCBCdajUqGMUEZ8 +tMVktvF7TKMydnCDmeHs03qsb+Hw/1ncaJclItyAVA5KkcKOI7TcTp+ID6Av8Xf 4iNu7rAAFgD49aSf08/pXLexwnPCc65jzD7JPeWe4WNE11AsivWr5lnBftjvk2Mn 0sfqY00/Fh9sW9K2ZM3tXS1sIVtY1dD14Q/j/qtQCIVQCEBH0pF0JICp1dRqaoXb 5GJyMbmYvxjWwTrYIH2OR+AR2N9Cg6/j63iPWRBKQAnwlB2B1+A1+BQ5GCuxEsCr B5yG0wCOqb/tKOHZAAYMUKOC8TAeoL71ty/t1v7bliOHvSACEQDpABZgAaAzEVeI K6jt3Uq0F+0lyp9sZQewA9i+ym6/j9b098JBzagZNQMsvLrw6sKrIDxndc7qnAP5 iFnALGBmyDTMfeY+wzq4YQfsgI2u6+EBPACwqUID0UAA2WhxmjjNNl80Bj/FT6XP de917jr3KlNWB+fGuTFEifsfxv1XRQACEACQ/qQ/6Q/AvmJfsa9AACtgBaxAw6gF 1AJqATENgiAIgohz+D1+j99TnZwFZ8FZCDIhG7IhWzQbDGAAAy8Ii7AIi0w3wBqs wdpwGiWjZJQsPA1xEAdx1BJ4CA/hIRoHPaEn9OR2QAZkQIb6JdZgDdZ05EMKpEAK c+cfDUM8XDxcPBxA80DzQPMAwLbKtsq2CkTNbs1uzW7Er+gIOoKOCBJQA2pATTIl NEADvLeIx47Ykbth+S3sh/0A5o1QDuXoRYMHGoPGoK+L9vxh3P8hoHgUj+IBUBkq Q2UAlIASUAIAvBavxWsB4DJchssApqOmo6ajALJUWaosFXxUo1WjVaNh8u/dtIEJ TGCCRqCBBhoCf693/b30+b189HuZS+4h95B74A6bwCaw/z9eUTWwaGDRwCKAvIN5 B/MOArAf2Y/sR4DfLhAAu3K7crtymNyxtGNpx1KinQ1ig9ggWsu+YF+wL4TLgAMO OPYpRVEURWmk/wt2817eNsoSFwAAACZ6VFh0Q29tbWVudAAAeNpzLkpNLElNUSjP LMlQCMlIVXD39A0AAFLnByOQy2VwAAAAAElFTkSuQmCC ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=icon_smile.gif Content-Type: image/gif; name=icon_smile.gif Content-Location: http://www.ogalik.ee/wp-includes/images/smilies/icon_smile.gif Content-Transfer-Encoding: Base64 R0lGODlhDwAPALMOAP/qAEVFRQAAAP/OAP/JAP+0AP6dAP/+k//9E///////xzMz M///6//lAAAAAAAAACH5BAEAAA4ALAAAAAAPAA8AAARb0EkZap3YVabOGRcWcAgC nIMRTEEnCCfwpqt2mHEOagoOnz+CKnADxoKFyiHHBBCSAdOiCVg8KwPZa7sVrgJZ QWI8FhB2msGgwTXTWGqCXP4WBQr4wjDDstQmEQA7 ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=ad516503a11cd5ca435acc9bb6523536.png Content-Type: text/html; name=ad516503a11cd5ca435acc9bb6523536.png Content-Location: http://1.gravatar.com/avatar/5edf8547416cc8436516dc16f08e64c2?s=48&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D48&r=G Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD5klEQVRoge1YzW7i PBQ9Tk34SU1JK5qCWAAbgpDa93+AvgCbli7aSl0gqlZRKZUQgeRbjJwvCbaTOMDM SHMkiwOJfe+1D9fXJvf39yH+YtAw/Kv9h0EIAQAQQpDmomf8e1GuslOGU5VhXWeP PVac/5PQ7+bRCoRhGP2YXpWyqxTvf2hO0zoF9rUrcoYQkosfG5Q7VdRY5sxQikql AkIIfN/HZrMBkD/wvDyXhPKi0WjAcRzYto1qtZp45vs+PM/DYrHAarVCGIZ/joQq lQr6/T7a7ba0r2macBwH19fX8DwPz8/P0aqUgRF3qgh4n3q9jtvb28j5+MyKOCEE tm3j7u4OjLHM97O4oXpJ1OLO12o1TCaTSC6Flp5SjMdjnJ+fF+4b50Y85xdphmFg NBrBNE2t/oQQUEoxGo1wdnamPcaehFR7QHwVHMeBZVnaS895tVpFr9fTmn0A2RJK P+PodrtaBkX85uYGhmFoTYIwC2WBMYZarVa4nwyUUti2jc/Pz8J9tSR0cXFROnuk ebPZFNrL4omNLE8QABKzfwgJAb/ScZYvuTeyLPCscUjojqkloSAIDi6h3W4ntJfF tSS0Xq8LGcnD1+v16SS0XC4PLiHdMbUktFwusdlsDiah3W4Hz/OE9rK4kRWh6BgX hiHm87mWQRF/f3+P/gNFIQ0gvhund2YAmM/nWK/X2jUMb77v4+3tTXsClCugOtjv djvMZjNst1ttCQVBgKenJ/i+r3JDCWkAqvsdjp+fHzw8PGC73UaOcWTxIAgwm82w XC4zbaq4toQ4vr+/MZ1O8fX1FQ2a1VarFabTKTzPK/0f0pZQHIwxGIaRCDyL81K8 LKjKeRGPw7Zt9Pt91Ov1vWeqWWOMgTGGXq+H19fXKIXq3ExIAxDJJR7QcDiE4zil NrRGo4HxeIzFYoGXlxcEQSC0r+LSALij/MXoKo9SuK4LxtjeoDozCPw63TUaDTw+ PhbOSIWyEKUUk8lE6HxZzhjDZDJBpVKR2hfx3FmIEALXdWFZVunNS9Ysy4LruolV ypqA3FloMBig2WwerP6RccYYBoOByq0EcknItm04jqNV7upwfj0p8qWwhHjGOZZs ZG04HCb2FlnQmRLqdDqJi9pjS4jzarWKTqejcg9AhoQIIYn7n1NJiPNut7tXAaS5 ciO7urqCaZqyV44O0zRxeXmJj4+PhF9xrpRQu90WduKfp+DcBxmkAVBK0Wq1pIOn AzoWb7VaoPR/oeSWULzC/J0ghIAxJj0zSz3MKhdOJaG0L2lIV8CyrJNKRcXjZ4fc 5XStVitVKh8SqrtYqYR4VSjqxD9PxeO+pPEfwZX73lUl/D0AAAAASUVORK5CYII= ------------0Eh7nJu6vIho79VfC8Hvyx Content-Disposition: inline; filename=element.js Content-Type: text/javascript; charset=UTF-8; name=element.js Content-Location: http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit Content-Transfer-Encoding: 8bit (function(){var d=window,e=document,f=".",g="UTF-8",h="complete",i="head",j="link",k="script",l="stylesheet",m="text/css",n="text/javascript";Math.floor(Math.random()*2147483648).toString(36);function o(b){var a=e.getElementsByTagName(i)[0];a||(a=e.body.parentNode.appendChild(e.createElement(i)));a.appendChild(b)}function _loadJs(b){var a=e.createElement(k);a.type=n;a.charset=g;a.src=b;o(a)}function _loadCss(b){var a=e.createElement(j);a.type=m;a.rel=l;a.charset=g;a.href=b;o(a)}function _isNS(b){for(var b=b.split(f),a=d,c=0;c